Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php eval(base64_decode('CiBnb3RvIHh4QWFQOyBjdGtRdTogJGxpY2Vuc2VkRG9tYWlucyA9IGZpbGVfZ2V0..
Decoded Output download
goto xxAaP; ctkQu: $licensedDomains = file_get_contents("https://licensee.abubakkarahmad.com/licensefiles/newpannellicense.php"); goto Uy61t; wVSLF: if (!in_array($currentDomain, $licensedDomainsArray)) { header("Location: https://licensee.abubakkarahmad.com/invalidlicense/newpannellicense.php"); die; } goto Fq2Kp; PFlAX: $currentDomain = $_SERVER["HTTP_HOST"]; goto wVSLF; Uy61t: $licensedDomainsArray = explode(",", $licensedDomains); goto PFlAX; xxAaP: include "access.php"; goto ctkQu; Fq2Kp: ?>
<!doctypehtml><html lang="en"><head><meta charset="UTF-8"><meta content="width=device-width,initial-scale=1"name="viewport"><title>Update Pannel</title><style>@import url(https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap);body{margin:0;padding:0;display:flex;height:100vh;font-family:Poppins,sans-serif;background-color:#f4f4f9}#left-panel{width:20%;background-color:#fff;color:#343a40;padding:20px;box-sizing:border-box;overflow-y:auto;height:100%;border-right:1px solid #e0e0e0}#tools-heading{color:#fff;font-size:18px;margin-bottom:10px;font-weight:700;background-color:#2d81f7;border-radius:8px}#tools-heading::before{content:'0';margin-right:10px;font-size:25px;color:#fff;padding-left:20px}#search-box{width:100%;margin-bottom:10px;padding:8px;box-sizing:border-box;border-radius:8px;background-color:#fff;border:1px solid #e0e0e0}#button-container{display:flex;flex-direction:column;box-sizing:border-box}.button{background-color:#f4f4f9;color:#343a40;border:1px solid #e0e0e0;padding:12px;margin-bottom:8px;cursor:pointer;border-radius:8px;transition:background-color .3s,color .3s;font-size:16px;font-weight:700;text-align:left;position:relative;padding-left:55px}.button::before{content:'FF';position:absolute;left:10px;top:48%;transform:translateY(-50%);font-size:25px}.button:hover{background-color:#dfe6f3}#right-panel{width:80%;background-color:#fff;overflow:auto;box-sizing:border-box;position:relative;padding:20px}#menu-bar{background-color:#fff;color:#343a40;padding:10px;display:flex;justify-content:flex-start;align-items:center;font-weight:700;font-size:18px;box-shadow:0 2px 4px rgba(0,0,0,.1)}.menu-button{background-color:#f4f4f9;color:#343a40;border:1px solid #e0e0e0;padding:10px 15px;cursor:pointer;border-radius:8px;font-weight:700;font-size:16px;transition:background-color .3s,color .3s;margin-right:20px}.menu-button:hover{background-color:#343a40;color:#fff}#content-container{padding:20px;box-sizing:border-box;min-height:calc(100vh - 50px);display:flex;flex-direction:column;gap:20px}#dashboard-container{display:flex;gap:20px}.dashboard-box{flex:1;padding:20px;border-radius:10px;text-align:center;font-weight:700;box-shadow:0 4px 8px rgba(0,0,0,.1)}#tools-box{background-color:#dce7f3;color:#2d81f7}#comments-box{background-color:#fff4d8;color:#f5b301}#shares-box{background-color:#f2e3fa;color:#a945f7}#delete-box{background-color:#fae3e3;color:#f74545}.recent-activity{background-color:#f9faff;padding:20px;border-radius:10px;box-shadow:0 4px 8px rgba(0,0,0,.1)}.recent-activity table{width:100%;border-collapse:collapse}.recent-activity table td,.recent-activity table th{padding:10px;text-align:left;border-bottom:1px solid #e0e0e0}.recent-activity table th{background-color:#f4f4f9;font-weight:700}a{color:#fff;text-decoration:none;font-weight:700}a:hover{text-decoration:underline}</style></head><body><div id="left-panel"><div id="tools-heading"><a href="/"target="">Update Pannel</a></div><input id="search-box"oninput="filterButtons()"placeholder="Search..."type="search"><div id="button-container"></div></div><div id="right-panel"><div id="menu-bar"><button class="menu-button"data-page-name="main">Dashboard</button> <button class="menu-button"data-page-name="addnewtool">Add New Tool</button> <button class="menu-button"data-page-name="deletetools">Delete Tools</button> <button class="menu-button"data-page-name="getbuttoncode">Get button code</button> <button class="menu-button"data-page-name="help">Help</button></div><div id="content-container">Loading content...</div></div><script>document.addEventListener("DOMContentLoaded", function () {
// 1) Fetch buttons from button.php and inject them into #button-container
fetch('/button/button.php')
.then(response => {
if (response.ok) {
return response.text();
} else {
throw new Error('Error fetching buttons');
}
})
.then(buttonsHtml => {
document.getElementById('button-container').innerHTML = buttonsHtml;
// Attach event listeners to each dynamic button
const buttons = document.querySelectorAll('.button');
buttons.forEach(button => {
button.addEventListener('click', () => {
const toolName = button.getAttribute('data-tool-name');
if (toolName) {
// Load an "update" or "pages" path
loadToolContent(`/update/${toolName}`);
history.pushState(null, '', `/update/${toolName}`);
}
});
});
// Enable search functionality on these buttons
addSearchFunctionality();
// 2) Determine current path to load the correct content
let path = location.pathname
.replace('/update/', '')
.replace('/pages/', '')
.replace('/', '');
if (path === '' || path === 'index.php') {
path = 'main'; // Default content set to 'main'
}
// 3) If path includes /update/, load an update page, otherwise load a /pages/ page
if (location.pathname.includes('/update/')) {
loadToolContent(`/update/${path}`);
} else {
loadToolContent(`/pages/${path}`);
}
})
.catch(error => {
console.error('Failed to load buttons:', error);
});
// 4) Add click event to menu buttons for pages
const menuButtons = document.querySelectorAll('.menu-button');
menuButtons.forEach(menuButton => {
menuButton.addEventListener('click', () => {
const pageName = menuButton.getAttribute('data-page-name');
if (pageName) {
loadToolContent(`/pages/${pageName}`);
history.pushState(null, '', `/pages/${pageName}`);
}
});
});
});
// 5) This function loads content into #content-container
function loadToolContent(contentPath) {
const contentContainer = document.getElementById('content-container');
fetch(`${contentPath}.php`)
.then(response => {
if (response.ok) {
return response.text();
} else {
throw new Error('Error fetching content');
}
})
.then(html => {
contentContainer.innerHTML = html;
window.scrollTo(0, 0); // Scroll to top
// If it's an "update" path, we call initUpdatePage() from updateBase.js
if (contentPath.includes('/update/')) {
if (typeof initUpdatePage === 'function') {
initUpdatePage();
}
}
})
.catch(error => {
contentContainer.innerHTML = `<p>Failed to load content: ${error.message}</p>`;
});
}
// 6) Handle back/forward browser navigation
window.onpopstate = function () {
let path = location.pathname
.replace('/pages/', '')
.replace('/update/', '')
.replace('/', '')
.replace('.php', '');
if (path === '' || path === 'index.php') {
path = 'main'; // Default content set to 'main'
}
if (location.pathname.includes('/update/')) {
loadToolContent(`/update/${path}`);
} else {
loadToolContent(`/pages/${path}`);
}
};
// 7) Search filter for buttons
function addSearchFunctionality() {
const searchBox = document.getElementById('search-box');
const buttons = document.querySelectorAll('.button');
searchBox.addEventListener('input', () => {
const searchValue = searchBox.value.toLowerCase();
buttons.forEach(button => {
const buttonText = button.textContent.toLowerCase();
button.style.display = buttonText.includes(searchValue) ? 'block' : 'none';
});
});
}</script><script src="/js/updateBase.js"></script></body></htm
Did this file decode correctly?
Original Code
<?php eval(base64_decode('CiBnb3RvIHh4QWFQOyBjdGtRdTogJGxpY2Vuc2VkRG9tYWlucyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCJcMTUwXDE2NFx4NzRceDcwXHg3M1w3Mlx4MmZcNTdcMTU0XHg2OVwxNDNceDY1XHg2ZVwxNjNceDY1XHg2NVw1Nlx4NjFcMTQyXHg3NVwxNDJcMTQxXDE1M1wxNTNcMTQxXDE2Mlx4NjFcMTUwXHg2ZFx4NjFceDY0XHgyZVwxNDNcMTU3XHg2ZFx4MmZcMTU0XHg2OVwxNDNceDY1XHg2ZVx4NzNcMTQ1XHg2Nlx4NjlceDZjXDE0NVwxNjNcNTdceDZlXDE0NVx4NzdceDcwXDE0MVwxNTZceDZlXDE0NVwxNTRceDZjXDE1MVwxNDNceDY1XDE1NlwxNjNceDY1XHgyZVx4NzBcMTUwXHg3MCIpOyBnb3RvIFV5NjF0OyB3VlNMRjogaWYgKCFpbl9hcnJheSgkY3VycmVudERvbWFpbiwgJGxpY2Vuc2VkRG9tYWluc0FycmF5KSkgeyBoZWFkZXIoIlx4NGNcMTU3XDE0M1x4NjFceDc0XDE1MVx4NmZceDZlXHgzYVw0MFx4NjhceDc0XDE2NFx4NzBcMTYzXDcyXHgyZlx4MmZceDZjXHg2OVwxNDNceDY1XDE1Nlx4NzNceDY1XDE0NVw1Nlx4NjFcMTQyXHg3NVx4NjJcMTQxXHg2YlwxNTNceDYxXDE2Mlx4NjFceDY4XDE1NVwxNDFceDY0XHgyZVwxNDNcMTU3XDE1NVw1N1x4NjlceDZlXHg3Nlx4NjFcMTU0XHg2OVwxNDRcMTU0XDE1MVwxNDNcMTQ1XHg2ZVx4NzNceDY1XHgyZlx4NmVceDY1XHg3N1wxNjBcMTQxXHg2ZVwxNTZcMTQ1XHg2Y1wxNTRceDY5XDE0M1x4NjVceDZlXHg3M1x4NjVcNTZcMTYwXDE1MFwxNjAiKTsgZGllOyB9IGdvdG8gRnEyS3A7IFBGbEFYOiAkY3VycmVudERvbWFpbiA9ICRfU0VSVkVSWyJceDQ4XDEyNFx4NTRcMTIwXHg1ZlwxMTBceDRmXDEyM1x4NTQiXTsgZ290byB3VlNMRjsgVXk2MXQ6ICRsaWNlbnNlZERvbWFpbnNBcnJheSA9IGV4cGxvZGUoIlw1NCIsICRsaWNlbnNlZERvbWFpbnMpOyBnb3RvIFBGbEFYOyB4eEFhUDogaW5jbHVkZSAiXHg2MVx4NjNceDYzXDE0NVx4NzNcMTYzXHgyZVx4NzBcMTUwXHg3MCI7IGdvdG8gY3RrUXU7IEZxMktwOiA/Pgo8IWRvY3R5cGVodG1sPjxodG1sIGxhbmc9ImVuIj48aGVhZD48bWV0YSBjaGFyc2V0PSJVVEYtOCI+PG1ldGEgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSJuYW1lPSJ2aWV3cG9ydCI+PHRpdGxlPlVwZGF0ZSBQYW5uZWw8L3RpdGxlPjxzdHlsZT5AaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVBvcHBpbnM6d2dodEA0MDA7NzAwJmRpc3BsYXk9c3dhcCk7Ym9keXttYXJnaW46MDtwYWRkaW5nOjA7ZGlzcGxheTpmbGV4O2hlaWdodDoxMDB2aDtmb250LWZhbWlseTpQb3BwaW5zLHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjojZjRmNGY5fSNsZWZ0LXBhbmVse3dpZHRoOjIwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzM0M2E0MDtwYWRkaW5nOjIwcHg7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93LXk6YXV0bztoZWlnaHQ6MTAwJTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNlMGUwZTB9I3Rvb2xzLWhlYWRpbmd7Y29sb3I6I2ZmZjtmb250LXNpemU6MThweDttYXJnaW4tYm90dG9tOjEwcHg7Zm9udC13ZWlnaHQ6NzAwO2JhY2tncm91bmQtY29sb3I6IzJkODFmNztib3JkZXItcmFkaXVzOjhweH0jdG9vbHMtaGVhZGluZzo6YmVmb3Jle2NvbnRlbnQ6J1wyNjMwJzttYXJnaW4tcmlnaHQ6MTBweDtmb250LXNpemU6MjVweDtjb2xvcjojZmZmO3BhZGRpbmctbGVmdDoyMHB4fSNzZWFyY2gtYm94e3dpZHRoOjEwMCU7bWFyZ2luLWJvdHRvbToxMHB4O3BhZGRpbmc6OHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZTBlMGUwfSNidXR0b24tY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym94LXNpemluZzpib3JkZXItYm94fS5idXR0b257YmFja2dyb3VuZC1jb2xvcjojZjRmNGY5O2NvbG9yOiMzNDNhNDA7Ym9yZGVyOjFweCBzb2xpZCAjZTBlMGUwO3BhZGRpbmc6MTJweDttYXJnaW4tYm90dG9tOjhweDtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOjhweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjNzLGNvbG9yIC4zcztmb250LXNpemU6MTZweDtmb250LXdlaWdodDo3MDA7dGV4dC1hbGlnbjpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctbGVmdDo1NXB4fS5idXR0b246OmJlZm9yZXtjb250ZW50OidcMjdGRic7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxMHB4O3RvcDo0OCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7Zm9udC1zaXplOjI1cHh9LmJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkZmU2ZjN9I3JpZ2h0LXBhbmVse3dpZHRoOjgwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7b3ZlcmZsb3c6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzoyMHB4fSNtZW51LWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzM0M2E0MDtwYWRkaW5nOjEwcHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE4cHg7Ym94LXNoYWRvdzowIDJweCA0cHggcmdiYSgwLDAsMCwuMSl9Lm1lbnUtYnV0dG9ue2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmOTtjb2xvcjojMzQzYTQwO2JvcmRlcjoxcHggc29saWQgI2UwZTBlMDtwYWRkaW5nOjEwcHggMTVweDtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOjhweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE2cHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4zcyxjb2xvciAuM3M7bWFyZ2luLXJpZ2h0OjIwcHh9Lm1lbnUtYnV0dG9uOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzM0M2E0MDtjb2xvcjojZmZmfSNjb250ZW50LWNvbnRhaW5lcntwYWRkaW5nOjIwcHg7Ym94LXNpemluZzpib3JkZXItYm94O21pbi1oZWlnaHQ6Y2FsYygxMDB2aCAtIDUwcHgpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjIwcHh9I2Rhc2hib2FyZC1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2dhcDoyMHB4fS5kYXNoYm9hcmQtYm94e2ZsZXg6MTtwYWRkaW5nOjIwcHg7Ym9yZGVyLXJhZGl1czoxMHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjcwMDtib3gtc2hhZG93OjAgNHB4IDhweCByZ2JhKDAsMCwwLC4xKX0jdG9vbHMtYm94e2JhY2tncm91bmQtY29sb3I6I2RjZTdmMztjb2xvcjojMmQ4MWY3fSNjb21tZW50cy1ib3h7YmFja2dyb3VuZC1jb2xvcjojZmZmNGQ4O2NvbG9yOiNmNWIzMDF9I3NoYXJlcy1ib3h7YmFja2dyb3VuZC1jb2xvcjojZjJlM2ZhO2NvbG9yOiNhOTQ1Zjd9I2RlbGV0ZS1ib3h7YmFja2dyb3VuZC1jb2xvcjojZmFlM2UzO2NvbG9yOiNmNzQ1NDV9LnJlY2VudC1hY3Rpdml0eXtiYWNrZ3JvdW5kLWNvbG9yOiNmOWZhZmY7cGFkZGluZzoyMHB4O2JvcmRlci1yYWRpdXM6MTBweDtib3gtc2hhZG93OjAgNHB4IDhweCByZ2JhKDAsMCwwLC4xKX0ucmVjZW50LWFjdGl2aXR5IHRhYmxle3dpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfS5yZWNlbnQtYWN0aXZpdHkgdGFibGUgdGQsLnJlY2VudC1hY3Rpdml0eSB0YWJsZSB0aHtwYWRkaW5nOjEwcHg7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlMGUwZTB9LnJlY2VudC1hY3Rpdml0eSB0YWJsZSB0aHtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0Zjk7Zm9udC13ZWlnaHQ6NzAwfWF7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo3MDB9YTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfTwvc3R5bGU+PC9oZWFkPjxib2R5PjxkaXYgaWQ9ImxlZnQtcGFuZWwiPjxkaXYgaWQ9InRvb2xzLWhlYWRpbmciPjxhIGhyZWY9Ii8idGFyZ2V0PSIiPlVwZGF0ZSBQYW5uZWw8L2E+PC9kaXY+PGlucHV0IGlkPSJzZWFyY2gtYm94Im9uaW5wdXQ9ImZpbHRlckJ1dHRvbnMoKSJwbGFjZWhvbGRlcj0iU2VhcmNoLi4uInR5cGU9InNlYXJjaCI+PGRpdiBpZD0iYnV0dG9uLWNvbnRhaW5lciI+PC9kaXY+PC9kaXY+PGRpdiBpZD0icmlnaHQtcGFuZWwiPjxkaXYgaWQ9Im1lbnUtYmFyIj48YnV0dG9uIGNsYXNzPSJtZW51LWJ1dHRvbiJkYXRhLXBhZ2UtbmFtZT0ibWFpbiI+RGFzaGJvYXJkPC9idXR0b24+IDxidXR0b24gY2xhc3M9Im1lbnUtYnV0dG9uImRhdGEtcGFnZS1uYW1lPSJhZGRuZXd0b29sIj5BZGQgTmV3IFRvb2w8L2J1dHRvbj4gPGJ1dHRvbiBjbGFzcz0ibWVudS1idXR0b24iZGF0YS1wYWdlLW5hbWU9ImRlbGV0ZXRvb2xzIj5EZWxldGUgVG9vbHM8L2J1dHRvbj4gPGJ1dHRvbiBjbGFzcz0ibWVudS1idXR0b24iZGF0YS1wYWdlLW5hbWU9ImdldGJ1dHRvbmNvZGUiPkdldCBidXR0b24gY29kZTwvYnV0dG9uPiA8YnV0dG9uIGNsYXNzPSJtZW51LWJ1dHRvbiJkYXRhLXBhZ2UtbmFtZT0iaGVscCI+SGVscDwvYnV0dG9uPjwvZGl2PjxkaXYgaWQ9ImNvbnRlbnQtY29udGFpbmVyIj5Mb2FkaW5nIGNvbnRlbnQuLi48L2Rpdj48L2Rpdj48c2NyaXB0PmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIDEpIEZldGNoIGJ1dHRvbnMgZnJvbSBidXR0b24ucGhwIGFuZCBpbmplY3QgdGhlbSBpbnRvICNidXR0b24tY29udGFpbmVyCiAgICAgIGZldGNoKCcvYnV0dG9uL2J1dHRvbi5waHAnKQogICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHsKICAgICAgICAgIGlmIChyZXNwb25zZS5vaykgewogICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBmZXRjaGluZyBidXR0b25zJyk7CiAgICAgICAgICB9CiAgICAgICAgfSkKICAgICAgICAudGhlbihidXR0b25zSHRtbCA9PiB7CiAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnV0dG9uLWNvbnRhaW5lcicpLmlubmVySFRNTCA9IGJ1dHRvbnNIdG1sOwoKICAgICAgICAgIC8vIEF0dGFjaCBldmVudCBsaXN0ZW5lcnMgdG8gZWFjaCBkeW5hbWljIGJ1dHRvbgogICAgICAgICAgY29uc3QgYnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5idXR0b24nKTsKICAgICAgICAgIGJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gewogICAgICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7CiAgICAgICAgICAgICAgY29uc3QgdG9vbE5hbWUgPSBidXR0b24uZ2V0QXR0cmlidXRlKCdkYXRhLXRvb2wtbmFtZScpOwogICAgICAgICAgICAgIGlmICh0b29sTmFtZSkgewogICAgICAgICAgICAgICAgLy8gTG9hZCBhbiAidXBkYXRlIiBvciAicGFnZXMiIHBhdGgKICAgICAgICAgICAgICAgIGxvYWRUb29sQ29udGVudChgL3VwZGF0ZS8ke3Rvb2xOYW1lfWApOwogICAgICAgICAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgJycsIGAvdXBkYXRlLyR7dG9vbE5hbWV9YCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0pOwoKICAgICAgICAgIC8vIEVuYWJsZSBzZWFyY2ggZnVuY3Rpb25hbGl0eSBvbiB0aGVzZSBidXR0b25zCiAgICAgICAgICBhZGRTZWFyY2hGdW5jdGlvbmFsaXR5KCk7CgogICAgICAgICAgLy8gMikgRGV0ZXJtaW5lIGN1cnJlbnQgcGF0aCB0byBsb2FkIHRoZSBjb3JyZWN0IGNvbnRlbnQKICAgICAgICAgIGxldCBwYXRoID0gbG9jYXRpb24ucGF0aG5hbWUKICAgICAgICAgICAgLnJlcGxhY2UoJy91cGRhdGUvJywgJycpCiAgICAgICAgICAgIC5yZXBsYWNlKCcvcGFnZXMvJywgJycpCiAgICAgICAgICAgIC5yZXBsYWNlKCcvJywgJycpOwoKICAgICAgICAgIGlmIChwYXRoID09PSAnJyB8fCBwYXRoID09PSAnaW5kZXgucGhwJykgewogICAgICAgICAgICBwYXRoID0gJ21haW4nOyAvLyBEZWZhdWx0IGNvbnRlbnQgc2V0IHRvICdtYWluJwogICAgICAgICAgfQoKICAgICAgICAgIC8vIDMpIElmIHBhdGggaW5jbHVkZXMgL3VwZGF0ZS8sIGxvYWQgYW4gdXBkYXRlIHBhZ2UsIG90aGVyd2lzZSBsb2FkIGEgL3BhZ2VzLyBwYWdlCiAgICAgICAgICBpZiAobG9jYXRpb24ucGF0aG5hbWUuaW5jbHVkZXMoJy91cGRhdGUvJykpIHsKICAgICAgICAgICAgbG9hZFRvb2xDb250ZW50KGAvdXBkYXRlLyR7cGF0aH1gKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxvYWRUb29sQ29udGVudChgL3BhZ2VzLyR7cGF0aH1gKTsKICAgICAgICAgIH0KICAgICAgICB9KQogICAgICAgIC5jYXRjaChlcnJvciA9PiB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBidXR0b25zOicsIGVycm9yKTsKICAgICAgICB9KTsKCiAgICAgIC8vIDQpIEFkZCBjbGljayBldmVudCB0byBtZW51IGJ1dHRvbnMgZm9yIHBhZ2VzCiAgICAgIGNvbnN0IG1lbnVCdXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1lbnUtYnV0dG9uJyk7CiAgICAgIG1lbnVCdXR0b25zLmZvckVhY2gobWVudUJ1dHRvbiA9PiB7CiAgICAgICAgbWVudUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHsKICAgICAgICAgIGNvbnN0IHBhZ2VOYW1lID0gbWVudUJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2RhdGEtcGFnZS1uYW1lJyk7CiAgICAgICAgICBpZiAocGFnZU5hbWUpIHsKICAgICAgICAgICAgbG9hZFRvb2xDb250ZW50KGAvcGFnZXMvJHtwYWdlTmFtZX1gKTsKICAgICAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgJycsIGAvcGFnZXMvJHtwYWdlTmFtZX1gKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyA1KSBUaGlzIGZ1bmN0aW9uIGxvYWRzIGNvbnRlbnQgaW50byAjY29udGVudC1jb250YWluZXIKICAgIGZ1bmN0aW9uIGxvYWRUb29sQ29udGVudChjb250ZW50UGF0aCkgewogICAgICBjb25zdCBjb250ZW50Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQtY29udGFpbmVyJyk7CgogICAgICBmZXRjaChgJHtjb250ZW50UGF0aH0ucGhwYCkKICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7CiAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHsKICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgZmV0Y2hpbmcgY29udGVudCcpOwogICAgICAgICAgfQogICAgICAgIH0pCiAgICAgICAgLnRoZW4oaHRtbCA9PiB7CiAgICAgICAgICBjb250ZW50Q29udGFpbmVyLmlubmVySFRNTCA9IGh0bWw7CiAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7IC8vIFNjcm9sbCB0byB0b3AKCiAgICAgICAgICAvLyBJZiBpdCdzIGFuICJ1cGRhdGUiIHBhdGgsIHdlIGNhbGwgaW5pdFVwZGF0ZVBhZ2UoKSBmcm9tIHVwZGF0ZUJhc2UuanMKICAgICAgICAgIGlmIChjb250ZW50UGF0aC5pbmNsdWRlcygnL3VwZGF0ZS8nKSkgewogICAgICAgICAgICBpZiAodHlwZW9mIGluaXRVcGRhdGVQYWdlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgaW5pdFVwZGF0ZVBhZ2UoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0pCiAgICAgICAgLmNhdGNoKGVycm9yID0+IHsKICAgICAgICAgIGNvbnRlbnRDb250YWluZXIuaW5uZXJIVE1MID0gYDxwPkZhaWxlZCB0byBsb2FkIGNvbnRlbnQ6ICR7ZXJyb3IubWVzc2FnZX08L3A+YDsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyA2KSBIYW5kbGUgYmFjay9mb3J3YXJkIGJyb3dzZXIgbmF2aWdhdGlvbgogICAgd2luZG93Lm9ucG9wc3RhdGUgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGxldCBwYXRoID0gbG9jYXRpb24ucGF0aG5hbWUKICAgICAgICAucmVwbGFjZSgnL3BhZ2VzLycsICcnKQogICAgICAgIC5yZXBsYWNlKCcvdXBkYXRlLycsICcnKQogICAgICAgIC5yZXBsYWNlKCcvJywgJycpCiAgICAgICAgLnJlcGxhY2UoJy5waHAnLCAnJyk7CgogICAgICBpZiAocGF0aCA9PT0gJycgfHwgcGF0aCA9PT0gJ2luZGV4LnBocCcpIHsKICAgICAgICBwYXRoID0gJ21haW4nOyAvLyBEZWZhdWx0IGNvbnRlbnQgc2V0IHRvICdtYWluJwogICAgICB9CgogICAgICBpZiAobG9jYXRpb24ucGF0aG5hbWUuaW5jbHVkZXMoJy91cGRhdGUvJykpIHsKICAgICAgICBsb2FkVG9vbENvbnRlbnQoYC91cGRhdGUvJHtwYXRofWApOwogICAgICB9IGVsc2UgewogICAgICAgIGxvYWRUb29sQ29udGVudChgL3BhZ2VzLyR7cGF0aH1gKTsKICAgICAgfQogICAgfTsKCiAgICAvLyA3KSBTZWFyY2ggZmlsdGVyIGZvciBidXR0b25zCiAgICBmdW5jdGlvbiBhZGRTZWFyY2hGdW5jdGlvbmFsaXR5KCkgewogICAgICBjb25zdCBzZWFyY2hCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLWJveCcpOwogICAgICBjb25zdCBidXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmJ1dHRvbicpOwoKICAgICAgc2VhcmNoQm94LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4gewogICAgICAgIGNvbnN0IHNlYXJjaFZhbHVlID0gc2VhcmNoQm94LnZhbHVlLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgYnV0dG9ucy5mb3JFYWNoKGJ1dHRvbiA9PiB7CiAgICAgICAgICBjb25zdCBidXR0b25UZXh0ID0gYnV0dG9uLnRleHRDb250ZW50LnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICBidXR0b24uc3R5bGUuZGlzcGxheSA9IGJ1dHRvblRleHQuaW5jbHVkZXMoc2VhcmNoVmFsdWUpID8gJ2Jsb2NrJyA6ICdub25lJzsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9PC9zY3JpcHQ+PHNjcmlwdCBzcmM9Ii9qcy91cGRhdGVCYXNlLmpzIj48L3NjcmlwdD48L2JvZHk+PC9odG0=')); ?>
Function Calls
base64_decode | 1 |
Stats
MD5 | 3ebca0450052bef20b2e4d956f0bb516 |
Eval Count | 1 |
Decode Time | 348 ms |