Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the buddypress domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/maja/public_html/wp/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the bbpress domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/maja/public_html/wp/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the rocket domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/maja/public_html/wp/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/maja/public_html/wp/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the breadcrumb-navxt domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/maja/public_html/wp/wp-includes/functions.php on line 6114

Warning: Cannot modify header information - headers already sent by (output started at /home/maja/public_html/wp/wp-includes/functions.php:6114) in /home/maja/public_html/wp/wp-content/plugins/dzs-zoomsounds/inc/php/ajax/ajax-download.php on line 93

Warning: Cannot modify header information - headers already sent by (output started at /home/maja/public_html/wp/wp-includes/functions.php:6114) in /home/maja/public_html/wp/wp-content/plugins/dzs-zoomsounds/inc/php/ajax/ajax-download.php on line 94

Warning: Cannot modify header information - headers already sent by (output started at /home/maja/public_html/wp/wp-includes/functions.php:6114) in /home/maja/public_html/wp/wp-content/plugins/dzs-zoomsounds/inc/php/ajax/ajax-download.php on line 96

Warning: Cannot modify header information - headers already sent by (output started at /home/maja/public_html/wp/wp-includes/functions.php:6114) in /home/maja/public_html/wp/wp-content/plugins/dzs-zoomsounds/inc/php/ajax/ajax-download.php on line 97

Warning: Cannot modify header information - headers already sent by (output started at /home/maja/public_html/wp/wp-includes/functions.php:6114) in /home/maja/public_html/wp/wp-content/plugins/dzs-zoomsounds/inc/php/ajax/ajax-download.php on line 98

Warning: Cannot modify header information - headers already sent by (output started at /home/maja/public_html/wp/wp-includes/functions.php:6114) in /home/maja/public_html/wp/wp-content/plugins/dzs-zoomsounds/inc/php/ajax/ajax-download.php on line 99

Warning: Cannot modify header information - headers already sent by (output started at /home/maja/public_html/wp/wp-includes/functions.php:6114) in /home/maja/public_html/wp/wp-content/plugins/dzs-zoomsounds/inc/php/ajax/ajax-download.php on line 100

Warning: Cannot modify header information - headers already sent by (output started at /home/maja/public_html/wp/wp-includes/functions.php:6114) in /home/maja/public_html/wp/wp-content/plugins/dzs-zoomsounds/inc/php/ajax/ajax-download.php on line 101

Warning: Cannot modify header information - headers already sent by (output started at /home/maja/public_html/wp/wp-includes/functions.php:6114) in /home/maja/public_html/wp/wp-content/plugins/dzs-zoomsounds/inc/php/ajax/ajax-download.php on line 102
GIF89a $2 3&-0ԧʈwm!K&Bζ"4AgyXwuj9SXHdfr+hVVCXeɗwuǸsSqQ&ɜz{zW6F ,ƪTsiKeWkcYDE84IRyuiczywidtWVWPjiDWXhgd0 #'BGEDF̸zƚȅGַ֭xxwB/74@Juzdz7<6tyqtSjtҵͪFO娬WGGݫrY`kFGU9TcgxhʉŸ팵{֬j)HOkYx쫹r :GTEɌXfIgsUgUUIXIUejΈfa ;~صv2SPzmeju{{g jyll`2::,_ɬ5w]҂s *? ][[Śg^kX1 MsMJ V` jv=mvC=6-0I`V-SJgfV4`nH!M>9`gB~ծMwФ,c?=ѾZ_hrq F-ae Yk9٪ &- n@>{n bߧg"'HU8<2&8 &Ȓּ f :Ӳ4%Oa|`зA tx+pNS/Se,:qa! #A3xpD6(\r#G! %R$__ %R8Z> z`^+y=U$(VŨDH6Tp c6u#6 X$fN(lP UQtT8y}0'MnzߔHD<:+ǴTQru11GF} LOHӚL;1g^"iSe8IщZԢԌxTMUx߉;QN)O3R`ץ #Dh47muCm&i۬Rmt7H+)sf3g0Sp.XbL3)n#Y9f'{ŽL lSj'K@[TWT(œ ІbW `ȀIj *֧դdP1)ѻЮEjTv ߄"VGla;#p_}vxmkPFXwjIl@AP~A~GhI(<vH[qnG{UaUGUJ!+%XCrO*wStKc:i1 ~p~耨&CHij h:kHm['mHs8vHkK8c؉LXjkw~`ցJ!sAttm4iKr8 v@z/p00)k^Fqn`kP ]PpZyr!  E0^Jڨ: Z(z(3&x{:0*k4d ;P k ?JIj F`Wp`FFPݰ)<.<pK 7`70` 5Cn@󅴲pVLBP RT[H;_ @_+B/?dK"Pa{ik(p"`*g੧J9J: z /P / ۸+/0gJKk/P j!RP wi"%@ 0 bpܰE@0{M*.0 ʪ jZʡ:P,p۾;80;:ʩ+8  1   3 3  F  < G@ ` p ` ǰ p@  Ep#F+8n6=9A < `7L8ܶm{c+ b;5*6OPΣ.cNH+WKG^`CelƸp& rl ` ڹ˹K+6XA= Wu'CO"R P  + P Rkk ,ʱܷ˨jL 0L0Y4YY L،+  P,  t p #L  p L ֐ P5 i "p -A>F G\]9e[X\SX㘭b sP<3ʀ A ! ` P@iS o/M97{ Y,c4 N ?=o/}Ӛ>> KozJ+\1TM Q0pzMpʓ^twmn~_׀oU ^ <.   @ RS @ @ |`  M O5 =n>ܼ]}D{~׭nN]90I?JCm;NR-Q S R sq@D#W-.! % ɏ9РQrJ 0sX`IM9uZB9D8 f*F'F*Z 8fD fF>EhV[a´K eԎpfL 3ƌ9lpj(s""')iēʊ,@F.8騋T 0& L>Q@k8 T4ӌ20l,EQ3mRnrt07|!TP})PGC \0Wn㘛5:fN: d;`Ņ;~oXcU (^=^(>j @lvcB\pq(`  ( "h!E(drE`tƑ:qDž[bx&ԩ$AO**&z2. K>< $q`fxrfA&.3p8F/gT0H*J@b>(@0=(Mhf &#N2&$Ci S2 fOp85^`1 k׺)֨Ri[vd6|0# G s++ĀVt_!Nqk\ÀfE=Ӳ9(nR.A1ڥ AHubJ:nB"|k x/w~G!&œ "tBo$K(p@<Zl K*hqPR+(K3>֌a 3e1ᗣC1qcTq=Tj g@SC]PR\i7T! +(T 8q7)U # Cb bV91sQ$(^S* B ]]a!1l A6H(ZܠA@1xbA!UQKǘDy~XA36<̧Z)hKFLj aT@ % KaO4 F vXu`p_0q4CnY mb_ѵ0( F֪cҪ! o 0 Xo36FܵM(9/D2`qB0 =++\ވ p :\αZ8<Ohkׇ' VQ (5Cǥ:ybhs3ElBIlGb㯴 B΂:L,DVӓJqY+]@ V3paP aPtЯn b Te(@fXh j &a [<*Zǂ:[wrC٢C sAC-Ȇ#9>H9 h7H?~Ђ, {KVˊFi<BZ+#8"g@l n,H px "ja@tA`C &jІ DLɅD#K 0A`W@H "7ffE@ șmșq Yk|Odx }p8E ܟMF`7yc%\ o`Ahoo#Gs|HAn&Atẅ4j! '+hpphD-s%s+p#( Tϻ( z4}C7`ht8$䌐s);̢q>"قDQCtDӑĉ4KI "Ѫ'Oh0!ZAE0(g@a+Pq8` { ,V" P,8Ɲ @m%Qh [M&LqoKGO9G3u?( y4y{$xy`82@-(pҒ2\y*c]""QMMtSl;EGh:<qA:pcI )?D K,؀O@'!D ! m W@i`(0a) h)0 Z{:#0q`0q0" '@!i}  ceXՅ < mE\q47pEPrLdXpb܀\(2$}! !epq &䈁#E-`!ƉٚH6Xn)'H>c` {^ڸ1¢#*èNH- D=!ݣH)EA UX&I2TlLXi`PhŃf؆zVu``[#ۀ$XF_0c 0(hXgm+n|L1\(3\%>Wo*lX!-Xcpo qpqR,'4MB-…*scIb; 4=6D^@ Xh(:>G( a^uk*_+IE-xԝYK Z A`PN RXqMm8PZ +a` C TEnX'b yp}qX%j<TܽlыWk}b=7q X/(ʽ\8qΌ?(4#bhR' +B3,+](wB{"S0$45Ç>;q!.baaTTMOӉ_T_$Y 1jQm85,hWQk#a0Va(Mgg(vxiD b:,XQ(}0j  e|VJgЃGiQnkLgu<(us 24@'v4pP22gHh %g'zʛX)>T谎É{§/Mٝ.>cvii:lފzva <+"RpmLO&j)? IT^ I BOЪ8(Kچ1`k)W|:,05,*)xp8/O:Ԗ!+a`%_2Hcte0jH6c kǎ G6Avzf  UJ U'}6 猘RZ!q vbpPxtrqmκbhG*7\':sr(xXĜ&N7<]9t\>ۀС8 YjzTX!Xd}4P H,?RƉ_2 0:p B0 Tum!,a` m 6puDU0`P%:u, v`q*nƸ7Y@aHac`o ;HcPvpƴAnA#w\ا}2U#_@EiGжym)t͌Oh$R(c'=[q尕`(ڽ74+@`(i>@N>R(Aj,3iz腁 OEdzq_LuL %YHuUQ-{Xи(0aTgdf+z UPPUXI o`80>@5\'2%UUw1\o3_| c4?d%+ Q2hP ̲` < iH!}D <e'l< 1Be c g9(^2 asOT4p „j$ЀADʋS7) 0sǸ0T~1š*3FMl8tЁ P4:jd`+F7ͮ~*G%?y,92%7 q+[X^eį@b 9X  ˜|PDǦіL4X#Gl D*A4)ydJ=7ӓ33J(=&A)X\2xb4AmsFUj0*X 0~#Zd 0 (W >h f s$B9dq+Tês PÃ` H$m' '83V:(%C9WƋk{Єa`yQR0}#ŰgIg%Y͡ݐȮ n8&A ,YhI̠3*UhiQjpW2 mL 8$('ڐ(0J ф2PIzb@*T -h7 NR ], m #v( _ ;`'Ȣ R)9tt.(atW KUYce<{сNud0`My>n 3kCs_BY_/,CA<17dfimF4RI8`f tP[&(Iӫ1* #% J4~^3 `,cmPa%tt@ m)[EsD g!vK'g./Z.Ř_j{Jls{O z܁/hm.s]SmEy[H<2h A1pb߸Ǩ$Y=V3g[ 8t`2_Y`V؁l9 qoWge22}phD{&Y-B-@`U܌lE -(,2x x|ՁhJxM>EO9I5(2lÕ4BC1MÚDN@MO0hMhTC 2,zIzY14C[[JY^\/B{a(Xa!t[AUdPX@ j3pĞ8^EKMRoPo \o$[=u\uR`` dH Hm{ս/Hm@ 4 @4u̇Ϲ菏1Hj BAD9U>l G!B׍lD8 PPA D 66 4@MLJ 5ICy51h$Q{@\i LQa\M4MzZ"@ d!Ed@%9> ޼0 !k  5@""P ux ,0@g P񏐅^i)X.Lؒ.L(~8B2x"4byLUaj VD :5> Flь=m g D0 ,C!DN dUJJI`1D}H1P5MlY4 FT[GZ۵Idw!ᶥJ! %}XV)Ҹ-QyCIDi#ZZY˵RtZrtVpDĝ(e{ dҾ8A_H 4~X aܚ(aP37 cLdNED6b3זt I 2y \C3,242C$aH1PBE00d <H3D28U6, M[|J|f k68K0(=%2-.LRHd H˄YZ 8T mL0dY! ]]6 800 UǬi5= &Z@E9GəLiEx1T0<{WdMTEQ>~ 91ԗ#F[X@`%+ RSS (T/hGv~*'Um2֎[[o8Y2ĵW_0F \ےZ$ p9N4-<0<D`,|1q8a5< Ѐ$l >3z C tJi=ȍd6k%NqS $HBn:-3Ĩ o4M,88K8@D4AU$xMV`͚#?:K!'!U@IE˪WWCO  uPg!Q/A$!m , # x&dLю^W'§*Y+,-TRjrZu1Zb ѭ 8%t(V3| /Xـ B浇 Cd]%hA H0vzg#aV2Hf+v.m@Q.J8u1 ܮD>C;;62@4iV4mVqBCy/U5 DE*{Y05 54u^8NvC T;k0ƒ+@ avV^҂/lEm'֚uӆGNJϪj]]o ( Aխ@3Zχ K1LLv@g19(RЀo`\9ߚ ?+@@lF : Ҍ. T gdCMMC AY3,MgWtHX~B S, ?$U@2d9+`#A @328A$A 4ST+TK5kro~{Y* _;u毻+mV2(pt0v#67a4 | _.k@#g+*Aki78Ϲss@q@;DGB(8 z]]u}iOE1K|2SքfJ b3l 4VmB F1ƈi{Vc 9Sb(࢘i\ tX@DNc4 h8sMKOuJ §RNp5~de 'e@ j+)&I/Ye -}RX-$xV"ؗ*FTHE @jeb+uaVXAي1"o8Xa Y&zt ~{vQl708ccR 87@M 7)^iӟ" |!_ r@CA%p,p &B &$,B8"*b \t`p`1q & raFu fd$F9FjPb!$!*Raeq!f\ qXQGmX:rypXy(D zƁB(Dpc \8# ! Bl l0ê 4ф* v AHK+?@؁hM 02Ʉd9Hdmᅄ5ÌdyZ[J nm/ ilͰ4X8kC&+=+UFVH`~I4ဋz{bXXa'9G6() s+1Bѡ :% %! -p;nE_\1Zfx# 1H $:t a@a m1 d Yd r$:rBasnaqHs udKx$H(@ ]_ KawY ֬H-SS VhUWg-KUħ:_,R5b 9 R3X#k M;YԖ̰3$A8\Bق4m 2!dlFf1e\!bZX5 ob 8s|6 Ihp3m`eÀ"a  ޱ"ZDF JK-4Yjqćc"qDh$m43h3'MFvD .AB̑#oxBʰ a8#AcD!# `0$\`(, 16pC0Ԯ2JNPxC @IrЍ" ^"iVl԰?E}XhJVf ̀Hy &04j; PW QZЍ ,is\Bpl  3 _HCed-\X mps ` : 9tD^dב b@ Y|*3:4(ơ)FQ97w,p6@ 6JPHChG9gRF?D8!14VR  ,2ڒ LI*H*C I0ь Kfn?7xp H( +&_p 0 +?  dY̒ P/,t~P/T4:Q *t@&. a )M9ͦ8F6JRdd7Ful #0a81ƊN:Mꔭsd h ne1 4?S`@93xkӚ@AZZ! M }clƏ 47"c'{6 O*,D N mJB x܎J&K$A0#O& 5`<%0[tE%8@N w4B%l0w3ʱA\(ж/zR"W@NeVbPO cU|}.DK E)wBDZQf0H1`  U"d@-x k`i0B1*4olAFAN:c8b!QPސN,XAO4QiBV\t7`(chlU&!0hq\Ƨi(jS D?ض8d?7^rB2@poi @п &5-Ƞ\'*X@wDeR ^ vꄨ f jȨhnal, |c(褠([nANAHΌ (NC,@j,(l$ ƁF|$manJaLK>$a*/T  .vJtIժaB-XKv+R Ƅ"A!HhIP f AAu\( @@H `pA ؠ r%WNV/ o,V"޸B(@|v{R ˾`i6@HA ,J6o ɥ*` Z42#0 7 Q_@B`RdL!adȆ`(bb.v<& NЪd(=C (Flj&`9~D\kFK $(e)Đm BM#4mr$rDJ!Bǵ"a pFถd#TpMᘂ$ܠ(`  A`J a X` t @4W ^% +Ђ3ՇWK`K.R3| $ Oq L* =.l \9; C ]{@z b&Ζ#'ETEh5CpD$G"ɴP4*!dT# ?C uđ*B`ERO aB0 Ibsr kA _a NzmKb˷:aAvXoa vp!o !@h@B vW`u+OzgQ/~h~n/.8S1֠U asH8K){dVMHLLTH3be7`k%l`aLrhB!s s>eaL hij$$p\#ɚE& a@bCG!uH +{7O#! G$ bJ,͵,y2_O Bq*`1s!*o`@ q pđ ol @A. ڤ"allVn"-4$8'P  gV+}Oj%V AQV6 nl HNaŤCJh xXz"8Aa H 1LL Dp`7*[+P`r3 sIf @i @&@Lh*A-$v=DpazR,ta$I.^F++__T4΁0bd0HdjA6,%a! U9%RDbz-_n u֎dI&Vf  r(րa| v*O+"VnQ,ZEPrOV *j"AJQ1nϞ)UYSş3nol@BnRNaV_vvV HW]$02 _ZZ%cL&X[%i@j:Fb&P]F]#@9" ўa ·x Q!;8DIF3y^YD)!#_3! *2sm! R%Jn Oh & B@, |` B`A@i+ D ,y&|KmdasQ s1} J6n75R+9U'֥2JD.HB ͓2!praAaEf.EV:#!;];|̦P[UWB D@AHDƎxBgHG+nN$f# HBӺ-ҸZ%XrM 06!c!za.Mk ״V"Hҁ ء h)Pa``v p` ~Ǡ*l@{@@Y q)@4+-^O΀*"~n)Rv8E\ EH`l7cJ|ma!3zV!wzL`X b"كNR}hz`ckR;Dϊ IIDE2c>yIhȐx{2 Np+ #Fb+ T sV {_F ZWqAZ1N`5F"} Jĥa B$ MȂ=1bTҠJ"F Zpp`ijqG=;?\8ge8#v3L]vE1ƨ` $ 7C5` VC60q1`h1 . ^@M2ռX40C΋ 5H H L0QÌ*# 2tSF8tE0Gqs1 !Ԡn M0XP"ܩ]Q~PI FH}.#;0$2,AOE^xS A[TUdW_%C 'PAgyLESkp 6|Qc"<( 22c!21 WlsMh!l 8[Ō[ns87\r5p/]UvhxОE WA3w!C~(e7D1$3@s $SN58xsyhL2pcb V Q2Q `S7eD2edhw 2 !P_8Ä5) 8w2C23ԅ|4P2 6n00N z04F ܙK#Y(~RgFԨ  ;a3"@4cB х.lI;z.&f 74Y!9QiTҨ4 1#FҐ9"fhtg2ȁ;$eX %AF%"`/;8&C%(:ԥ a4~ 8<|-R H  D'aj(-L(J% 4¹>t{=Q1I-#< >Aq)*_UI/**t*@4  x+nl02TF|; )lP!0 bw 64/ݺBpP:E,Q),$/}e8 v6\,' yRxm>]xMA>) MUDJ]Ch@bT* T9խ2S'1FW̆aqBP8J@f8dF ah Ѐ!ch |`tePp1<J4Z٪U%,4 umA@i'q Jް%hjrh5)jO)T{52Wͯ,v^5$F0pF^A<0 <c&٭0*/X!ǂ(#N(` *)@ٗ1R1v t1vhf5h}㐅L &NH ɵiLckmj5HESUi  4, %4u֐ p6j,#P 7c^j+tLpF0X=2}Fp|xha T"DضrF UK?Vѭiժ$#%AQ 4T!S[BcR%UJ3֊ m%0 h8abG <э@0!h[1H6 ߆X0xF~n )ha11)l` JbbOe<%0 1"bF" `tNU`V} ɠ]ULEL0!"Q!pE["r eV5ef (LG>r D 2 8%`1c@6*G pun0 YU ; Jx I'x:c: Cy)LG\L\Q!=bD<_3+e+2֤+$ {ɶ3NTp :3Nװt! # FpW_Ͱܒg20 `4}X0~ /c~"1a 'p&3 S@ P1puSGF>!=Sh]U5 p1U] LVb%UBU[UVeUɰt&r>5FO "L` r"^ ~ A02` x   ` +a[Je䆔sJ \@iE#1!y[G:C0ÕDG1kNmdХ&Meq+L]({QV!ry0" m 10$u!Ȁ? Ǚ` : 0 R&RH# ~ Cb`1 B  S$m@I20X@ D X $ [udq PdA PUVDDW UeUJU%݉2gwaET p7Pf:t b @@ 1Nt π|a U  x!)9"J/;I!::EJ00Kx)By|8k~Ȗf? 4i4 0A2RGR+ Ah% (B0G rX2@ 88N *U 0 }rYU  /e p4FS4P E`U2U t p % ĐUаXdF^w% !gQD p Ȑ> H3XdeA nPfh$x;K!aR J&:Di-(:8@qy T*҃*L{0<[*<+]?ML;kKPm*cTC"И!@ K2 tZ$ F@n_T0v*@Z`o AY@? fX11 PBo :P7gGp& WA @E@ B!ݹ c  dr3dUNd"X J@U@W) y `נ E3€ep G61e,"b,h  3@rF% v&6 c` ?'V)(Z u:^i"AZ±J PZ#5Ca;K:k 0;<*(Ѥzvia {*Sp] iN:s8´!pG_}(zX0$u{FP^е hh+4 q hQ1Ϩ0,TR1p1 )h @a X0Cn @tsio  9Y6uA `4n 0U@,0U8!FsJcvE)""Ġ A $*0 4`E[ɰ8#'PYcfGPJUB`1 ['~)P:9wDi[x[' ncp[0H#kKd*$ f +b<]ö+l'tN!}Tt^sJP^~1אXa몧>ѵb %R@G@bV\w|[X€ }0q &$xAz !  uɀ'ҰRÑty"@WQR @"?B 85z3?dՐ47@ j&  u p d 3Q Ad3 Q;%Xv9"̠Jӕw3(/q9OK<ܔj ( 0K0M>,kL |L*Xffi++"^` i PF`6жN

v8V"p.rg /BU#` P6.) 31iBD Q`E"Ue$ BRBn.-6C5`n6 bXA \`WJ,z'[xt: n ( }j[K| 0`)܇-Ϧ+ȳhd<+ B*Cc|! HO}qnxn<>5f _!f `Q  6  Qϸ1Q~Z\G } mjF/&A֠9ՀUʝDro@$ Dp -Vta/R A(Q-&( &IF X𙡬Dc .xVC5‚[FMp5F`]2cƴ!;hXe9s 'e8O ? B)8f4j dH'aFsarFeQ$jF` a@Zp@b!#i &e"! fa"(ƙQ%avxbj+5؁@ꬴ`FJW4I—`6Wˏ $!:@ c,9u,` HxÌxgP pM0`nÍL,@/~HcJkv+'!q[8Y&b8c#8+okA`@1ѹN 0Ap,*>@DOTn fp$dqg"4 &IocdB9@Jo9Fb1&d1&kKdB:q& 7 *C %՜(1&:xTD[C1`vG,` 8 ['6G0F%N-@yP4я>ؐ1q MICz`I36Cds7q' Tj0zXXu<@V@P!FHjc` T`=b G8a h@C'+5fi%.G*+ OY7\oʰ", Բ6٭Às]`Q"+š*Q"6h"qtcH)jeq T#FG Nmj'Ba 3#lJ!@4Q&)(2%26[#v+X"A@C ^5.`qA81̋ al۞sJO0F % u%ξO-O!1Uwp-;:w5- E4~xΏ,CW,d41cZsUf7w`IAژz)e 6G R@ MчPcW..C,e#W6Yь+ 30 0;=hxVEUS }F͠D0؇"@' @0XL'5A;=H Wv;"wP %aq;Ё T03:W$$8G @PPjv}%2 3PvI-_c%9 8Y> !͸( A+ ~GkӸ[ `)p_'a , F!ڨ p1u 1=h{ 9ݸQ%̡UɆ+Xn5/e8搶:Xl3#;-3YC;,)89 9{qRHD=((YTX%Ns b >)i`aٛi7m0 W|0>a9a%dhppp7N8 H.e4MCf50ˆh ! h ZAaI7iyhiG ` ;J @ s9XC x"j ɩ#gn;04jl*dȆQIe J$828C)X X# 4IKagƺ4Cʃ@Jpdd7C PUR2ghfP=2n16  cs9tgd谴=l@*`P85< Pʠ؝,b,C5S sC@ XAЊ  ¸`vt(iy:8 -@1 \ 9x A à=0 8 +921!@/Xn .t!z*:atHB#8+@@7lx!aCX30cI aɟPʢIC>c 3Ri (hFKkl,Kc 2Pj7b6h7jX,; E oؔþ)= i"*sX P\Q4)RTh (CYSd "af @$ge0j҆qÃ;mj{k:g`{'p ? h !iNQ< ? AUH1ۨAt ˱D1S cO,ܐ 5F@$Z%LKX -k,`x74+ Qa Y4C4IQ#JJ pf@d W}pyP ^I=)u ~MuI!ީQg@|áX# a)b5ar$+ڣrP^.ch  l@cHlR3&H%1`Nl ` XH(>16DYVc }Sv`*  `W˕P ;x$U i( [O>0p}nu 81t؆m׸+j2ddC<4j r{"+P.masEEqJb6HĸdA%㒆a_r%o KlH;Eh(jr=H8r E=`d!5QodX`gRfiX(0==ȋm(SWhQ ? (vN ۲ ET^x P [AX%Pb[At1(>AwBй&9"ci >ncqlt894P2l==պqt lX4~E.p 3I|m,RqmFャ&Tq4v4sP]..)*1."6,"_S.ddhdr6Y O2pNq`vh.Љ @.dXےQ٦j,a`e(D5s8pS8I8Fbq^` t00|ҧ/0ohr1~̈  'uBh~bĀ:`>X2/ nZ+!@eh!aX݌Di-n?pAXnUqk~|phwpA;:4tJYu!(,m49˳S#7MAX- ņo ijk)=-fPbLcc*iSȂd挀jШ\v,Y5fI 1L-(x@j 1„NX A(2 @Q TV=)8 O^X V&'v$H&V UuR P$C|&^ ND&H@ƀ/O~?)&f:C `36 OGOt!1G1QxH"L2, +dL28ĄGYL5L:\mA B0]`5I֜DJp`AI,K1 61;A3)@=| @0 1i+ٝݩ\hBB(ܝl \% (H L\ f0lF9,Wi|Akc$)lAQB:p™4@ PBP7p4@JvFuL@7 -_/G|̸MJY@3LK5506Q_0D謄sV-%7M "QD13pCA,|``#5L(7|"i1DU×@5X C Dh@@ 53A3:* VUA8Z N A l݅B T'BZ$peZ XL@4%KkLK ! e 0r1׬9W;T"tu91\!8@lCn2.Po .,2HPLw=؀kG&XHHHPHȔ'iH lC6rc_-5qNXs|#&QA5P%@)8$D94D ✗Hӱ1F$!, 7P 8@Ys,Brg5P_UCCJĎ 5@|ADýuMLM-aEW[ܒNe1/4[,B4%20 B|eAX&Wz 4AH pXS <"$d$OlF&\ 82\.~n2HU+BToH,lL?LCE]ll<H fL|bԌ pʔߊXh*zED'N&J5\JI#yzD9Q8I2CؘIC3,7!4|D28PI,8P%YRsP7`%IH yC> T} 60l% ^`0p  < +4M+pARON*ɨ e%IJS( 2-iW|ɺe )X,0 4A%\`@ed!z!l^#)%(A>3({l|vC \Ar|ft *a1{l`/jz$ c&l2 'M wH[\uZ-G!%_2獋s@$ڻF,I2 E TD∃̀plvH^Y;j٦m/-z&X XMLYPA'8 -E&KD*|Q8ɝ@ۖ4@\شNM5DL2\ )\V]D,C0ĞD)5(4h(r44-*xCAτ $,C4NL)d pno䢉A[tJQ.ZTޝEe t,F슧eV~%W J$exnFyF_KB޴&͓lX uC62 eFT0rD?UUPsP LjC/_;BDT(̃DB1D&ߐ <(=c4gMȳ?AG•>y9|: D8Ys͏ˉM3\AuHL1"94-K#ބ&XY Ȅ5h8l S6lh0PA86*aT|\iIJ 3s,8yJ&Ao1K6$P,R/W$˦ʂ6! Ze0^i:u B;o\A]AuXFTr@GLf7"%uv0XfIMH42A:4&9{+$'AdS`aF$%2}姤o2o˒y3Ŭ$VxlS$4KRNZoj@@ybC*hB 1 0 $~@x0 %JQ:[eWP%JC rlɲvX@E:j?`kW_;밪gɒ1ƨ wnCV`GvL"(C6ὅ)edא- ֔hSQ2قdЌ[2n̘%\9f[3V93 @L]MPc<&,c@IE 6i߾V@ f7]&ܴtˌ-8F3gڂ6jL0Fp1dL3a!&̙0a8E3> A@ H,DAHvP#O  Hb PG E("AhR  ZG5>R*{2 AMCht` 3̸H#LL ! %I-jt] %j5c!OZ&*BXF8:몬jW2+թ! n+v`"hfmJbyf3/alaQg FeQ&" bTo%kI kBXZ@'tA RFy jff k!c^2`f@&% ߉[2FBjyϗ" <9,("q2z@ Lp*5abEVHPA5@Z(JH1㣶Y80 ,E[_hC3(`EHQqS RX12$"hGrP-,B$eEjv4a*>A P`ތ:df ga1̱fG*8n"{C!JZ5RbcX#-QnXrAL[ꒈRPLyq&`64Rt}BxPB9ls#W0_܀S@xS;tCɫUa UO~,F mE$8ۍd!cK ų)Ds ̹0knW  '<J$>b (`%O>hgT': 88ĒND lNJNm|zDK̐ƦI ZJF KldL8$rB`!$O4"d =2a  lCnf!(5H6* B@%p):cBԈkya,2§Xa%[8YI1! \% \,,(He-P ɣ 8-djA9bhݖ>AS-R4x> @Ё7Fh9@`'% !V*\R ǜ`CfKRB0JJmRHI ~D)Efp ɱi`nq $rBs&s:LtFt^ib .`vBwvBvlSkvl3"֐y0r+,,\ b|X pa[E0 AjAd/A+8J?>c]]P#8*Ad `ǠlB M7 j8`X F  xgإa0 Kc{+LCf`|f$eiA@jEjljEtEvKD @Z.K$ :}DH@: #"sN#A M@e Nv~6pb(8Mej3("@ 2* A/rmזeV/T #3"( t (Nc%Flj<>j Mb B֥jbB d <~^` Pfn4xO6ZT?*l> "1T f%AI8Fp$3JSJrE :I^NlI KISDC\p K$ & 0r0N:dtL `@JѴ&~hn`6/j'wA'TB%:B `A|rB(B1tc 8.h)0Dz+Z1ٮk [e+[8 44Eal&66 ar#7A@ѸA`N]@bAA! A:aJ5 (gS"&1e/A@ @ KdJg<SJ&q4H>Io䱐E&glfnЬ!H< =M$4 8+XH2A(XI!0 g5X  nT' T)JU *\ѕ2t*֕C /j ̩D++^G+A3h)6Aya)>^l&F 14` ;J?h~".jK*ޮ jaeAAe< J`. ~1d0L 1B`b"@a|G`L kQkplEo*5VGNTSSnSD6FpZ* na T(u&&@<6ß p?W 6%' 㩖!@A> aKu8f,9oF3ld|Gfp,<=I=M:q8O>g XP@&rIa @:HàN p`8!'LT| l::*tWhmX‹| X\Zx?w\x K36Ty(8!Ӽ/!6Jc QdAH`nk@|AzLBr@[:R [X%+ n!u%SxXȳ&k҃(q% |!Eķ ŅE/ƇY^Wރ!*FqgJ?V B A6> t4P `Ae%A"_A > 0 j"Aag.8dL0fPc a%EcV aV nt؍(>h.qrd m?sD E"rGsQ=  Pf'`Sl–@%*L\cyaܑkAw {f`XN4zEhħ} 80%DfLF%a) t D e6:&:^a abn @ R`?@ k hT1K[r`aVƂ)Fc*;؂cTs1VpЬY>dpC ?g=(=)I GJFիXj͚j; “^ ;Ďl)! ;Ƹ 0xə3h(֡C 0 ?2C 5t7Ν+WNZ9f(0Y5n0n7hǸ1hP"`hKNb6ǽËOA*1"̐ !J ,DK#632L 0t1hc~< I03.|$ w0!4 IAAA',1šiWd#N7tCE QR|065x@#Q x:5| 6ws 1r:Qc p2V0`P`G84L P*B~G)F0bwHʦ)i*TCVR - R(Q jU5Ae[-CUX@@yW ,gZ{ ̀\?Lg@3ѐ  ЍA!(AGCn0nt0F !TA8p)p *˛]@ +̩N#yODFdz!lHk@X !C If 8D`lЍ1>$-Bd YZ% dDXBQt @ā9c G2h jt#$ uH Ch0̰Ԡ40Κ H}-$ax$sN85$a,R b*n yp4!M_+j ]R{˜B V ~6 X ӂ]20oˡHH1A$!1@%˸Fq tu^r0+\vB B͔%NwtchBVʧO2a 2dMLjkP33 #A3^irؙ0aBm@3r#EhzajA &< Xr"nDASATQā c`ܸ ;iHƹ,]d _ǰfq3Ɓ "Ibi71f _;XmpR٫%| bۜ~a> g @̀( eEq37`e\4a: MHi}h a3MSbX(؏4" Q(3~֟ ԧڈ8Zm;!1 u4 R$9\f12ґkLB 5"W(biLc?a!D@ fxKqѰM 9 l [f\@&0 ׀@!U+&у+նf8yz0īmkrY h"]oVb^ ėRca۞a>0z3V Wo{2H $SP( E V.7(jJp KGj!9߀ٲ` -5.'Bb`@12B J0$cݐ@:iq% +؂S#W @5X( F2eCCL-F13̀3vUD S A %@'VC Ԑ=2GP8v@@HY ;ctp g p zwD A ` qǐ ^r`@ @@  :# 4f) G 8 G z  BL䅋ƇݗN Tamwjɘx)pT+C"_ܥnNFl ~6" `4P:oC ?@ K5722PJ1s +@9ݠ@z# ; #>0/1:WCWCJ9dRfT!t3p ,  `OU\c c #,tYa)^_᷹E| W7&`>? Źqpk`0`bıp0 dِ P#FzС#:,$GAUPC74C IЋ @3LC E W!О2p'Cb2 &sSA0` ᏱU77` B$F @\%.ؐ$py P0FНJ`bJ [wLp , e ϐ9 K@ +l3 n^ncĠ*TOrg O`U -*[a)|^!žp]nban>v\NjůZo9`M 0?3 P [ ߰Aɰ `z!q5JT 7@)g5u1P7 F$T+CY2Ì'H5S ! b;O + uUTEN * J@p̠Tp ~V R 0ۥԖi MݬA lxӽaQ u%0&'s5 PpPwпc5VIb p穵1` hi| XH|^T4NO-A`f)F= pNC+R*; +Oš@)I0,cV'`,a S? kثA u @b;$t/"sS5p vrxѠ|ͰUC T!rtDXuOC n7Q aKц f2Wgk !ey{Ibq0ݮQ5i P@^iB des3̠C`k5%0py ܀WP!.hpR ۰9+ 0*2~O>@f-P4 focE`_ڦ YԖ xN,>:P &L i>РRHbŲdq !C(][F`%J3 4W5_?x7u XhR %ZQI.5:S"Ĩ flC%uHq‚ZmȄi,1j Q@0ඕ PǢK̀LcL1I1 Վ14tI9TW#w4f501Fl8 *7HCWN(1JBҷ;e54n=~8!p &AfIF ?P@?( A  L 40$vx`  hBCtC8?0|AftC pL@ H@7fR~R m2 \LaT#$Dr ‡3LC +1610~XLZHLph1"zYcii4c9` *|&(Buԥ'㪬q+a)Aa)!u-^(tU# `Q&`Jb 3c. -g9ka[q G`&8i^[fbcoCrXb4ڢ`ljJb`dH %Kn1qYFC`iF#dGmVp`p1&# C 0A\A w80aAZ XE?4фB %lm HpLʿR\ YLZ L 5l;(HX8CT&fh#88ms !E&"q419(7 ! c 5BnP!a|k! q% FqZhSs$1L5 $2F. o|^pʡ wB X*l X!^qh @ࢦAkP" ]h2 @5 %# `7#m%䏂4DC)Є|HJH%)# =qcjAD JLΔpA έ! x0#f| ! D +`V eP Y B 3 q)M678|JV]Xv+m.#_]bz RA?lf*( AuQ/ƨ*|冃hdd ǼjP@5p`ńT`&̸  VB^̀z"H)n d9*ln,;P=F> 4L<(8X08D,8 N@# if5,4u |!}md$_QHL }7Hrc)?J(f (!ղI n )Dk7n`U FB@  5|}43<00DԽajrWc40*jԣU[| 81vFo =ݥ:qa'f$%PII*v9$1tY\Fz A5u/%pfaLh Rk Fe*` XqAjwJL8|mk(30B3Ґ a\ "`tSl3z6Hj:yz6D_˨=F$#Mqc & K T%GBȑOԸPZBr2%0ZSfH&0t=PvRPBFbX{c(̮6i)=4‡lvJ0eX=Ct;# dc2 KT Y+cF8#zNn%< @?40_vp>Lcc XoN88^00؂K;dJ[;;Xe ncH`k4pKb*yx)XЃ $J:+#I+78#B/ A;>>{4+Y*,$ak*ehq Z[f ) m3"!0s0 #vxX, T2pR 9r8 t@"U|Gx t-5tUl@C>h48c2n+ 6qt(+8uh 0.*zYIB :뚮䭀-*#,z ;|:WmQ(` Y (Q΢/ < xQ1- Ր!]-89ҪL_5eXl@opD&6cȡD&g+i٧P<RDi 7]`_rЭtxfx#pc@N0p8;}8l+ڡP[N8C!9GlYwyh- Z|A×n8v qюcqHt '.l5]5# 5Ex M_P4P,TB UV5XBB5$: -I-5Y-7_X5%9# 2i|Sc K0&2." ``/U&-RT!S pq]fpÌm#a"RGԼQePuai b:sNl B@lxNZ-c[5i2r% Ks(]%`ca܊+Zۆ|&8t"41rds/;;KMNNnXœ Q.e \0X $7^QPsE1X3ȹPm|-:!8/Ŏ(9h Xh" IJ /Zq't)fqrc&Z Нjm @ȋe㜱& X* ΅#f8 :Gx &c5c[X`k2x<%6J(qC X`! e6' IIGGpu5 hN^/8F#/{RVA@*11V+CP %4IRZ- 8l&_΄xpԈC@|C hH j I 2}(mg/rftnAZjeP[Exdh >p d2apVɂY,2]3(@}1 0j@odH I)zUu\ņh"pp묁 șI!(\#7) p YJ ?Jp= 3qQNB-AI&}e'` #D™j];3R]6+ Pp7 n) ( cn/g s $[z(c_ r`1*])Έ0oG@ZevSB"(Tqn(mÄ# !vsjP1#x/H Ё/4@;y, eSIwSn}J;y$:-+Q 5%?ҁ x.nJ%Eay{&qމҙUfq(q u35+ <ȚE"WdkpƊLȲcΌ9;@T.f,1cƎ#f1kɒ1 -N&=-;r-7%ؔhzv2Kiٖ-l 3 دƎk֬״j~ ;`Ė%kx%n![@ޔXPcF9K@ (`2"D CMe˚4(MD$R -`0$f7(ԤHWPQoN9Ν+ E s5}=Pw\}gh^ 0> v0o? @`D%d *p !tWH\1p 4\.LO?$)L1  8#5x#9H0*c Y8@ 9C3I63 1A %(Ald PD146!x C̆p ?57172#L0PM*|cNp7ɬD28S50MSbM9JpS\C@5@$N9`c[nUg*X5@9q-ͨKt!!A'˨!С18Q "!ʁٵijI^2 4E6\1@ npT6hȃ3#h0Q$d#B7F dX Ï.j L*`,h$< dQb8fz6-:uV\28"B3 dll%22 ! ƚbk:5#%dT, dTťZoxw 5p,!:p9(]Ŗ֍`Kq5/eC1Xp gvݙV5t~tLs]:/E@%7!t뷜 ͼ7MJ65BŮ>r]2(FBt! ٨!V`ܠ,P8!  PER0V"h)d$) K{8|bdlZ0fzG)J8F/ C@J'IOQ yrc7@wPW8A!a?@dQY C4QYM3Iit3DA}itxN]! "Ǻa|hRchn>5j2Pu|, @ͯ0\A 25 @26,UM mgնua{*D,__pOB4"SR5bATM$T0d62H"iIQ6#C3R93qCaXY%:JD#Vp@ gpKD㫗9E%kyo;Sh<֪Iוr tt| jxKr2ǽ!1vGsfF!B TLР¯pG֯0 L@L!2\[,.kGC?C;H8u@5b۵E\Ɉ-x;,DdP]A P6AeC; C:19IbL|t0ЁL 4 ' 4AmO3,A^YDq'q@ zCh^˗E ̗_R6Hw`ƞS7ӑ4Ɠ&|Al 2zsIA/ rwO7TjTg } p/(_ ASC\@ `'5u1W{La3"$UU4-4 almDSC54+6Л黃0H8՞91d2 4B+X! , -肹/%yȷ o 9)(^{݄ǝ0e5Bk¢ s;0aˢC0m ,~xh:fx\!7KF1 wAC @E!|b0 @"`App P:@P C DT) Dsl͝(v< gh$vi `FjaiI 0O~3C"> r?d@ H!%P;d$b5CO|'PL"Ezq$cȕp?|!P#jQ藏z(*J'Ep"/?⨠.zK5`q mEclJ輓N=BdbhFnR\5b4 FPr |TrD tTs,,X]UfVHuJ'}P0OF<0J1BneBPfbo#s∡-#fJq?x7Y@^hn b t뷼ͣ0cD؄' yK 2p !";(1Rh % P i32P3hEcэY<_C_lF#/}iA5% JHD$pM4RL$$lSpnuKʜԍn ,!2Vpl(Cp xi:wK M#  bdWt eR8 "]% Op`=F4cψD2'd5XQ=m 01a>d0`Fpc,XU~_^: *g( PO"^R FdIE&zY ǔPd7CZ^'Ihdƒ}$.ĪQ!VCI%/iH@lQ`# *H(a`0 E1Xg h@XЃ <`2q #](K▶Tk )ϕjCX%Wa3L N@ #(A3 Ol88D𸁀7 6Lm,C*1q w  g xf2 aBõ O&~N s' XC=@]/T /P > =DbSFJj0/yIGuRq%-p,dIA$iVؤPCEk3؞ nvD$B'_ D'[p@ vHC:l4@MCe#ȘAV?u-:XVP!0h)Hux Lnf{r6l\!'qf̠XAfd u`x0òQW0"ְ%0ÙH|Gk (Po+ rOg;q0h aE Q5z = ~z7BE$37%H|BmPgf*MZ2$I-Il`JD%-i-"qkNSE'q-H 1aNؑ λI@>!d"_.F`Ѐиzܲa̺ǤɚL VU C3Jx CX`` 'ޠ q@p-™Jx&:\*:Ao1Èu\Yhȓ9?( HA/WDR3p/JRpfpHq M.IbJL+dNw2(kFˢRnm͞ё@Ђ h! @}~*aV J Ů` rʏ-*O4/ C$@LhVp)`eV:JbL>Z  NNT@  !A}!~|k`<''Z| ` i뎹 Œ @b i .kDX &,T6CT"jK)D BA*`a !  8 &1mZOJXJD* "Jm:L%dFm*'MFO`c`b PBBurz- s@$@ïDfZUX!PbY!f E >Ca> a4B  !@; 1i= r8`(azd P Jhꮋ'@ L" d 6r+ 4dr cDd:j2m -H =|'}K h@2!I*e mHF4HfHbrn@- A@JpaB*@bƊ`01Naa0`)VDV`Etf%Aan)JteZs\oT. ~ N@ s;!N&Ҩ8 ˞*`&K%APK&mf&YG* i.`*u=R nE^R8tCfk)Bmhjfj*g&ڤ*ZB7OEQ`r`p@  A&ȖI/ICe^@&A,J uL*2JUayX JM೎#J+AfJ @ 5?  Aa ʁ R!RAB e ?|  @ ". &^y".R#a#멀p5 [d # GC0$ ff@b"h~A=F .A},@& TJ*/U"Hf $YU[#`Q )a~@ZX vV6%_v0M F`>~SEfxcxזXo tZ=a քlNFo$NLtܵ$@ h@D5O:&9B &pGWCo:(tPH]G$* $EMfx  !.z!@6 ,PnAz @*"bb4#ˬ4@'W} `UaC!㯧j%@e[`ApT a~)hicw=`Jk{B3l鹅I R `;ٖT땇k= /dڃzM\7paW$ w \ )>2!>LUzA ds(80Be8b:͒ &y +NpAʔmCQ )`7hЬ6kaP#Sll. F`8RlYenj @ uB#@X?,XdUEHYz!Ԡ 0f*C 4 1L6-P'$  @gB : Cp"$b&$ AA*j#H#-S1VaFdT d@TRd } f|JI'R)ӚJ9-O>uRG JU%hQVidp TdL7Tࢇ< i#VtFO]9_}baW41p M6 m)ƚj i4Po 0 qlmIK-ڄ@ l{LQ@1sLT & DFN ?vh 0l8 MsS P@qi!vH1v|Ҕ)4xc2裏[ 'VQ2F%$ePZE[n# Q2I>f gM5ӛ:9S(jg|@kT1'aGq8C0T 2 _y牽j]qKez1 xB |&zEDppB ڳ)s[p 8fDBh]0V0QC s PEr-C3ܰ@㬠 (eD(B|,,3@@Jj $N @A<Hъ@ 1F4 u ;D)C ~@`G{Ӟ r)02!t`H`@C̍m^ڄŗil99OB4Y%)?jѐ&= fPQD@B 4FK{p8f!Up@%T} <H.t* L@,LDZMAxiƳUA6x3 5iZ#P#{8ƶPrE!h5 !` @TXX!#@ā&(L@ `'= Z4С H ?TD>M+M`3 XbVE(l;EQELFP%$(QE5mZL؄2  Ecv7*dĊV_ R`d!`, e X ] P$^—R92t$-'+X2@rIW 'NCDXAFJd<xkzcaa9!PoslK|!q d\#ȹ'qN8 zA@Et fQ ؀ ?2`' 4_|XuEO5dM xCW *» ;E$ekۈTm 0ȏwXRuiS$ӞDb׶E4Ũ=J)1܁0qdcFhXYI@B2xY!7W(i42b+BVt 6 | } q7d{A'=0 Wc8:] p ,`YFߒ8 " !Đ )0Vh , 80 mP l ( i` 2 S5j  =jIȄV]PM`l^^@O5|q(yVZh&EqSO jX0joC %PsSt%SMO p'{W&31@a'?az3_&`$FBGc0 t ِp W@ Z !Jb0 9}Q : 'qGd[J/'JUC~BqD /GIrMr.:ZFJ/7;+#;/g8`pP"0: @<|@̔ĠG e ?5 u,Y  /0 0 =`Cd|&E'> ` /wt72yA' B~qA^@bb*(+ ZXi$yu\Ɋ@u%`RJmR* &`M. @SSd;xbt$1Eab4pFLd6.`0Ǣ  1 )jGT(=~ q+:3 zr iI`}P ;ί1XX;Z H,ыТfȀXv0ڨtQp e  @G p 0 p(  "@@gbE `=Dhd{'!!!"i` M@ ]#$f|[(ȇQZ$c 'p\~ R\P m04Sr jEva7q@ەvSIYFD,( f !W F /|&1,p q R0꼐 ]|w!/ tU:r 0Gᾞ4qf$-8*=Qt+ / epE`M] @! *c @ z`gp r/V*!) / 5!2"!:. (p" cQuZ E@P' BO }O` $@.5n( 9S` 6槫ax71D(Gj dP sx<njP 0`.IA6 `/l {++I*rű,Z NW˥ |XTY=.f@ ( t2 Sۨc Gi[/ /|>ڰM#/1 `keDO@Fz $>": w腢?4W@Po0%i !j@0!B$r:(|0$!@`@ @!BH%M0A5^1!+E Μ`a[" ; O@4Ƴ , ޭ=ɤDP?[:)QO1|8, q S DJ( AH"c BjD9I<1(:"e,x=Hc x1~q*@9 $28" 6ɓC'≎6,I 5 /łQ~B)GwSS 7<)F+h DFp-Cbhmr*Qf S .15t*usacU  t2=*l8 -Whw?s"ڐQFU6`CuX.[!A`YN:hAĽ  a#\f1ŪC|$ɍocl20a@|h * Ua# 4 _ @ `D0X@ 3& a4$!%D">;RdC@A W2dqC@-x" d4HC6~@6,Ț$p 'OD;G9Npld#+FpZ(!nP9Dll}L'bl F7It[ :+NVp;VݮVj8 !60E690t5&*]D`-Y`\Fe&C4hb TAYH^ggCz@6.d^P*כrh ~2m`Sc AN*B֕OҡV RFw T»my;b$ {E>l3Ȁ EdeQpCE 6 _ #A FƖa$ _MnpN TaMhrW8o8`Ҁq af4 0BXQdt( r@S&ӘTٛx.s.Mb9@8QjDY%g Ԇԡf^P>0Hb7B#Dci ʹF&P=+*CBʽ喔Yw,(c*^6 23bJľEZ.wE pjPbe0  4X0b53mLќq yD]%Mp9lD&9՟r_/.7=*>?_Ѱs;`3=3 2{(g h Zp(8Xp󑒁! @, `l2 褹X, YA qRV5,Y5 U ;x!c꼘(j! 0/'eroz1` 0 z=o7 =Z)ɐ:Hh"k@;B+0l1s+p?3a*Vyȁ ,:ܑԘkhZ+up ,s `AC AT-* 8lA8٭4MAAwB59a<.j p5j!0D- dˑBgs6Ʉ5k7P1=E0u{ B !2 r5 L<݈%8`<: @mTE;aZl[, ]Ex# (F@Q 3dYKx 踡0Gt @ 7 44: NO;'HyT5RcY:2h5TJu."ᡌ*@4!$Ɉ0x @C;1tS7 7cu:1l05xRD9cX?CT,G=:nvPKK˸Mz)2&z#b4ĝYrfޠ ; 8Q@Z 1L&̛KAr<4 A A%AP{'MM9 3#N"D(*(BΈL88rBh |1x38 /CđaÀB!CV{ĥ|( :^ 3P ^Z;ڸچH8V4n@"cMyuN рy _2ɿ7 8dtF0݈\A,8ڸZqmKż@? , r OlMFV;Mc"lH8mT N5=H; Iԩ=H D82!!9!Yhp=kOIS2=s@4UσjKW؁Z XëUψd̂κ SC0 K*`JnHKX+&ַQ \?[&f3R%eD9#E( [_PdؒXP-F 8K!тA2 A5Y}RzȠHJ58$陓iY ɔͩDuDᑂjZtÚwUOuA`CZ p\@3  @tѴ8Bҍ l0P4:#;2` um]T^\nٙX)Y8,E]*ՋX07@-H.؊}]$ 4´ UҶ#X VCB^ Ο Y0H d%R5D =H%A=Ύ)# '`5AϤ(#Ueb0Y8B0U]NB, @B5{ +40[X[d́ɈWR∥?1(* \89`+LP&Nc - p QURdIu-N0^ٌc9Rg=|3F|j]0Tà& I.NPiUЀ0_IY /RCd[kYd˄I4 PpZ^̋W YU3^b㈁+I R1IlE-Y!VOl[&YꪝoA#i,&@}zβ82 MYρ92Hn8EQ`֔_qdr$ګn$KK̐C %?XT_8Fwu&w.wmUL δRDKh M%\<5Ch7`كR(ڃnIL yEtt"I 1 _?z r'2hNeZhq7U`!0ԃhH4X08 . C8p!DЌRD 840Ȑh2\ \qHTP }PC A;hQG4"$ Ե=3M"5 TN;9~SbƐWB(lWoaVXj7'bw喞)WX 0 ^ $i`P/(Kv J N֩u kvf!6@PG djl~oʫsrhs: p$LW]!'d''[O|RX`QOCVoA !ۂ f``v &dnGP(fSPͰM6PL + 2#xQ, B7.V>f| @8I]=XtS,T, l H-h՛n)rru\gUVuXn^z6z š01x4FZmXz4eP"n?PAɶji8 [nAB9\{,{ C><lҚkaau2V[cB q9bZ.de7y1M4T)Fp}+6d# i !<|yIMpB"1 D\2b^g tq7xFW\r`ܕ4d|N&EdMgxv䤆&uL!Ę<-c hPAN>Ϲ0 g  edz҉M$1zNYfP+\W )#Q?A5$68/ _fl X*Nb# Dے%gJP,p AdV't ~q5yXީA3&;)|rf$߲-KܦJ U]#*ΨǶc`U֡ :P 6zE1mru,.#!OztWR 4:ŀ`@Cd!wzc:0M ePr@ @ "(Ex@2X4 )5a#dQ 6A,l!i$- KR^"Q` 0I[ô!MmKV>'Jpg g6?aso%Νmf s;T2\W BVu:5y^fu 2VKi LDg8IKh,ccP_Nu!&C '"i h{:+ | A&/e =ѼOfo7V:"XR0oA%2 4Bt>O gR $:8&aylzi48U12rkcĚ{3oKdx'^0 H-cQG@hX"x]Gz]訚A٭I]WWp ۀ\0 @{akX]|4 ODLȑITAĀMLH9@)dR (+\]A@ La40)}D)\E@.Xý2DHɔ<gM(DP`P[dzZ}_"S!˩YΥ_׼]qE`r`ܓ=\<ЀutZwIUy  "ǸM#Xu!YȂ!$ J' t*`% GFG Nd6MvIfM STϗTp8PnC38^R &zD‰D_ MYJ4?L0agIx1 9T"l/@f$d  (Tp7=У!UHT!`ɀ'}ԫ u,٭a $#p]UhY `bpB$ ʦ<ՄI}|(M ؄]P8@ [@@5@34+) @t)0 B2da9dBD$Fd@ܥݣm$0%3%PiaW _E(J~:iLwxyb$ NdN䡁M)E8 (cAc tUvNYGqe"zXN`aWFyU]Z }T6@:A3AMD&uS)I5 #m&=b ZUgMHMKOPOZ f1XAm&Id. E'-1ILL̥tEWXIV8'u_U uwP 2 RY ]$J=pH~ ~FM @A%D%BF"v+(Jl/!|`d \[Y|kXPCD2@A8xD @M|i:Je Q\E [jNȕ"Ȗr.&BʀH% mn-Y1ޔnJoh YF ,b  @1@1@lCXT@˄<ЄIP\L M`^$W}肄P&5S QLk&C  Yn6&  q* )aUEtul"}F(,2((F,>nE)D`H| %zcGjiJdbnWƪh8UBpFxUe_W \Оp܁$4\댆kx%/c3X [DN4X}2E=H6P'@:vAA2S1!-2euɚ}BoV񜱤\l'!Bxv/*<$6Zb>a/ vQ,~ ЀT 0 `]z.F 0W!$-GitWu/V Ƥ_@Sm0`4cC9C22Ā hߡlj`юM-\S+Q@$Z9NmŜ O`1n1Lwqn.HS̤H Zf,. "ܨ9M(HSɢn / !.*sғ#n$W}2~>5]@,8))o", !| VWӲX=`z锎@'_$ 34S4KC9@($.ذ b@skAV5aHeaL g! \dC{4@B8(0IdDɥR?Lsބ,|kyG!ƜxuJe`_6e:YE(4"+ AVA4n-MƯ&_ jp#7&# (]>2T2**UO WV|!2r-€; 0Iq9z0ͧP C_4(:CT|je"8.kȀPPHOZ&B6Q_ \d646.mköB6F,lni2_4)yl RA!i#tf W@  v{w@)eyoߟ)H4g긁 ,Sw)w[|!W;U-Gx5!Yu`F3Qlx{3 ',@_445/ @GR(v\katVF\P؛ZA)Rl L@44l<$,lycY]HI`PŞ zu\=7c<]yaLww7"ϴw|l{\$d ~2!11ed%XFur!|:c-xuvWԳ;~2wY0VZ,¢mIL5x_+S3:A@8V@ bA }`Xf^Q.dO`^3dC60`0ip0zXA1XLÁVd}Ofٔ͸$z~ 鷖m[;X&ջo_{;<6 HDx" @Se+衧 :{L yMvM֯QP4کq6}쇫3F_Qʗ/~pQŐE'.qbƞO<3:'`bBYuh,:lY g΀ hЁ3 )PdAԡ43|8'N@B XЦ'LCa03Q 'b(LJ"]Ј$rri 'TD .O>b ,8&dAIp) >Rb`Ɗ! ta@pKC Em/uk-S;›3*T̠ЌN5M^[USim7Yi4bkMUu%!Ve'vx kL3OZz ACÂpljB?X&:E* |'d!Yn`Ypy AEl31F 3d5]%"u"A:@.lI%+]jbePL2"  +NN~J 4Hݢh@ѱ~kǠE,p>L3]:l_;U \UVxuVY}{~Sd3 Ç  Pަ dC&N`aYLcy)~y * *!_"D;6Rl߿#Gq@  `~2H  wBh8$,О@h SS8%+k Ґ4d 8{8 e!uI% c3\GtR)BlBmx*ɆVSq%-![vz2Ŭ5+<O4U$uFi 4Anh  πnX E! S` PD Ya+jPZK3bX% Cc{gA c3@e#I9`- h" =`1T /Q 4('A3Sf8-|aX (6pAԡPc Ƒ-%1kC LWunb"+ڊW!\x/֊7NaGg51!vBΎ@[Y!egpd#' .-f)FsRNP//Y|#'ZA˘&VU/Cż;pD +G9N t 2 T9d,R-ff45`,d.3|>e90 z R4m9=Â70aCTj@\2ˌ^`*daC#S.4@yG/FLzgPRU]JsO T( gzDXJBאn/1;l@LrZ5 }Bt蜵L(QJ²Ek^h)s% K|ZWn`W[A$~k :RS(-],ѓD* 7[ ]+w]/tt<|WQueiw~k5:D,G  :)B*`j 0 j " nO~E x<q NlLHNLM ޔR `|J|*% v%! TdH {y{WdN/dD !Z@|DWL!gU"/'Lt `8<{il=Ԥ([K6'Z a 8 p ^ wFZP^plup.Z؅}n"oUo+R2B(7a و#!"ቱȠK4Kj/-I]tFQ0 WĎ,=qj0i=,,Bh)DA  8S`K1 KM k:'֒zTcab #x>OMIe8`s*fĿ>śS} h`ƜB JR p1-\ &VSy ɟ J{ 8Q/oGKNW]5Zm McWF=<NvƳ $ue }y4(B !D3 pZ@ b&ږ t`}Z` R| ΀ČAd~V$iB@_,zt2WCtn:(A!  g Qeq,Lp(A:B 虰0K1V2HX,XC*'H*֯ϟ@Jt(0*]ʴӧPJ 0 ȯ^~PQBfYp]B]d5*Ҫ:ȴ E N|/"`DęOp^$`ZK :E $؏E߿C'Ѕ q4=>`ӂػEȢaI@iCM`oBFf`ѡ -hŇ}+Oߊ}>" PgЀPȒnn݃E d.(xSB% 0D!8!RNH$B|pD10$z2 *1蘃E h^)29L8 %d.5T]h-`  ;< R2 _$RG d S%՘Yg= }٨fښ] Xl4ۭF\p؛. `b"piU^zP{ݩG{_|'=~ZeP0Wн,=o!g30|D2  A2LY 0F izP`- $L3%yLdOE LvmRg쓚jXωaG+nj`,y _ `P hQTbb("e1~ i!Ҩ /ELa klkod ĉ" *& 9 2(xC|:^u:X"Og

Wߠ3] 9ßք.v+mhCg(H:f|@Hc($Y82/+A"( NPGS:-5. |A$x샺5 {WK(zY) >re = pp: )hh'>AY0B-}NQ\RQJ\ % %BahO ir`yUHaK~ti J继Oz D7n8; Lꯠ{*!*EC?hT* L@ɱ$ ibcjuɶ@6I,=^`#"?ki>Z2\E|6B'<7"hAde Y j ڱe`@p!'TfdM1 ~qy@V  ' dI` P#sm!\ @3 j_ߵIS/(su?qRjwGKVhvPHr^#*(*XsL ͲbY2'Y[ 79$d d,PbpX\6O/sUO&a3' {tO4bARz2 "Pd R0j& =BW" 4` \)V/F8w7 kW8S pviP  -pqS !2o4w1 h|`:mBpwg=,,fRf8zAJ'nc\qJ" ''X|E6'UMՆL+aY67328 32eW4MQ$Nܔ~d?#g25/ =`LY T%9 t h44t1a KtOƸ'yUdrA_`iBQR DR)5 pqwkwzz*(_89P S/`06P mll Ulot] /2"@|(p89T=醒=wU* \38);X8|;}'|P4p6>pMn9bTa8HRSq QpN<2rI31]= cp, 3y6h'0hO d< ]\ % ".O^O2PHE)U $= Z D S7Q/sW5*XӖJ40l0]P BR K8Q`}GW$ZP,AH2S{oK0W$= K8Pv$V~ǫ_⮴'~|Wíq빢YAC>odkIP||X(~~M Ԋ':d2Lg7G31hq 4O@O N0 P hP<= P q݄ z]؁j @Lr``.9.£96ta=*fmi$=8A5͋0uh mb0&3hߕ*!a8UP!2؎ǎt>RN~!Wt=y9Ǿ@k,)vyv$Z..6XR?8,YnZE25m> 9  L5|=`d|heF3|p1  ` .b ,BjQ$$XI62 pmibh $ᔠ^@Izc` &1(k˭A6C6_"lM6kˬ%# 挬6CI`=A 5P# @*FaL_" %RHwŅL{3h >k$=icwS[9cxx^V pT>L@3Fz]X&uiwA 4OG"Rw!69+$/T ȭ F_ٕCAJJM^(Gb5N i ]ɰ:`AX"PM۠)8|iҊ9cYUIppݐQA gEub&& W.6Az@)x_>FވXa$ %L": #k4y5(T@K?q3 ]:P.!&y&I8Zc)!*0a=-џ~@P Kȶ+1!AYh +zh2;[)1 (Á< +Cq4C?<# :JӣxP7@5P A !i+ȁܩ4ՙ:K#:9[{=`QE`J$cci0Ph^bpR &2A9&t sh5 hy8c0#h0- NYb(FG  1bڊ Pc, +0жTHTPLnF Z'ಞЁ4h B,F@diHȌ8h8월Rʁ+shPG=P8 k]*#]D[p#h@@0ܹ[Eʍ%h1 G0&-h8,thbYpYTUP G-ܛƌk$  čZҜ"NK10HP*ȁ䬂Дj.p @ ZS ):WEKאҏ4`DBUA\0ENIsMX\X+ ;a5& 2E%AP + `pEPYt#Q'T yBK(ˁIbXZ=2Z@ 1ò=[3ʠ ]0 J%5Q`9x5x[GdBB  P 8ih؉sXkLX;ꄭR0Al&Yc A-T#~A%_8NoXZ3Ueo˽ T(%(3Q*` @(`+!<(߲E3Ms8.0: |թ'eWI[u]GFD!K3DQ̺MtjQ+=)a?^6]-Jb.ݛץۥdKe$2u׆@Iqb2÷ܚ6TEm-(2Pyk\0LV+d V09  (IX #cr}:FVh(Mth/ BLB3m\6` 0bþ@j3$[il0ZJ)Xa^]1X<ٮ AP ".ֱfKL~ T.ݳ-BP7Q`6h.+H 3)Q  ;Mq A`y7IιVdBt4\K`3]Qia etbm }i$foc2 /fn]^uWSFJI/VQнI*]cl$9yNxw "31?|6hZHE ` Hoo @d2: g> 4 @4شL.v}/t>`; *ՠz e%P- ka ̜&h6`h1ԟ~ 46b&Ϋgv#,$ <Iu3^⦑  p(%8w`4 6x̐tB9+ł `]gX[BjRRx/x.`Q,[2=h2 ]Lh^asb]G]A`bzubvݰ8,3i^u#>O)$'nWk.F3fo!  <_ ` pGtAIKg\0X)LS%tE3x{/fno\K?9䵤rr5(5ٞ`ݞv1_ _T鮠y"vLp niPdYe94ud]t @@ɇ8I؀. ;Е3H{tPĢ8[4,@"aa @[99"_'WO /lK+skҍ I= `0E]   Ba`qbA$8Pa+PL $V ˕ v'РA+j(~c2mԨ"PA1M97bNJ% ڴgҢ] %! \ pMЃ - u׋&S@)"&þcuPD̘݄0 &Xe!04!,X9,$@ =zz۪‡/n8rSBe9p1]p[7r{Lz1E]{أd-@~Ĉ/Q H60#L$m҂T:85!ME-U!^U nԇcy7YlAZ eWva`"CqEU^bQ^rM6e%$1H`X h9yH0&Bb%&q'tnJv%a g5X Ѓy t(EeC|Ydb(G dRH$t I&I!#vSfԆN!U:TXXM)Ob[Y";]Uf ,1t dQX}48oIגMxS2p%2Y vF/{b.=Hog|0u7]eCtYzAۡ9J!E9),L6x4#!4IKL4Rb+B 7aEG"ŃeUUP' C2 gX]QE% uJ5EUD0m|2`{`}Ɨ&XA@oyBQBe0Wp}mv}7014ET:BY('_A!GG 0/{zJ0N}O m?EkUQG4U7퐣ZRYQ3 HFF U`Ba7ٍO2u~!I<9$P#bhЅanA}Er 0[w>7]{Q49uv  ;=HA 8%T:ԃBR<9OyS r4W/|"EQ @D"ӭ1,b 1, ؀$~T `& *0#&#C=FQ2D r!Hkd[BBD'01 5Nf#Gcᘾ5 n\jE uN%16ufᭂZq:.yKqYzg8\C%F4ZB3dn6pI46*tV]DD +BȂ,rCT+Sꓦt$d} Eh"7 (;$Ea(6 Dx" 7ifu>fѴkR{bo`'^uDZ::ɞI=X:1B%#lX # dVd+ M@eYYCYfU_ݜ끷[sAKDdAr{j}3i &(> Pxfkf!YCl,&( ^@$ VrWƳ~*qlB;[53k<o{٠w]0۱bk\`-@+bC$YH^"VMt*(JW:v֕Θ F_oSZcRtzO|VEWD Ih+%rV"RԥF({ [G-^`kˮ:W~1 m\ XrSHVde(GZGd$`6TܤgNԧΡn'Υw0IL{eRץ%nyBHV*N4hC@фduP( QZ%žd\K2(]yXĘ@BC-|XǙZB@]\Yy֚YgV5 I^}МQ @H̱YoYP0J@4m A( 8AVj`WvQ4є؍]X,Q}/$z/ ~_Y9ETJn^of/1jղڧmlV/ NĽ044HKތ4 ,M h?A%@ _ )8QNR/FZx[: pDUpTX۵UȂd# ;qXr* ðw9/rJ 0MO CQH/mqqcpɂ Gث 譾DG`܃h.]4<j>q Nv׮%A#Mhѱ`nS v0ݭSVBW2BQ"1#7#7,o IKFB4 #ĥqOn52/:OHTd* $""!r)s){%grV,,,33>3=A4 4K35C3U3/@0*s3 (ȂtB(G^ё00'=CND1G!ð A#rWw2t _163RtUYtD_FcE .E23 Jdc6K%7дM;N4O O$PP;$NNِб +LDC4L4ȃWs5<4@)Ȣ>T^( UEjX5VCX'EYcsOU[U7L\7vgv_w4t#s/XQt5yoyQu1Ѐ-pU4LwwKPORs?mO0`Edfk4nN+ w3 Sq_7-0 C8Bwxꆸ `lx-w{UOC;L=C;T>,w?>xQC?z#y89'9 v4 0Eۅ8*DLI0,z^x VtCrxQ97>9X׹Qxuy48`8`8 E+c5Y?w_:rco:w::CwwiJgGiBJ2zĔ,wk߰;';z猲?;_8q%;{2gx{;;q*tl@I /0oh&bK~v[I@y| OP*g/{/?|;Y@:|P 7|C+7G;#_; Nn/|,+Qʏ=/XogތG AW1n6A׌KSIXr8ϰsճ"2O<-gۄS7~y4 z=xP, ][.;6+bѼ[9jY7obo7~|/Q`4-6=4J?ΣO9HAxB%p(ƀA 8B&l q (LA-b/WA,qBt(@:sm hCQ)|(ʰ&6+49N'|2<Mdn"ꨘƉL>sž`i#0H%Nӡ+H'f EuTI!H+=TUm' *E&(8I2lU}_yx (,9{|1hP69%r͍PEp4CQ)zw11vUF߀*S~∏:L!N1U=BqA^+ )"m*N` KЛ^Jig^\CO騥ꪭ6 ! ,T r q  H; ‡#JH#!&pM N7œ(S>mڿ}DžSD#7 @g3;y**W8qH%wsd7I9.];];0ژn`8nӾ+*׎Kck*:ꟐN>ĉ!U 7[U@ kq D+4!kC 4d? ԍ@E dACAL KDGR Tud?ΊG$lP 5]v $t'!hK\1{-8DT'.዗yO\}˹C~8\l:ك.n/o'7G/Wogw/o觯/oOD;}WC8hA]ǎ{*S?@ y Њwr@pzWX  %O +&ţ,mm `BЁ@u#IG3mJN2~c9ȶMЦ[ޢJ:xpG EUA 1 #" >!l`PX!-*8'W3ck jA1!B:1Q~aUaW-~64)_2 e 4# jҍ(Da 9F2 ! ĪhF1at;C"҆v GJc( "puF\aT(xc;@zn+ 2@&u`Ea@ Ȋ@f lv8$. $0܀O֏)ЎqhcKdk#ll0AmPKa$QcGN(@QRn `_4H:.U]r  ִ+G:?J hA,aJa eݠQoy ITT N@ӵ#i mtT,]vRuH1-kٮ B}QpcC)Jt)8`!`|ԙ1fPq %@ldh3& 0!#۟riS*J=or!1e4#8#TKU!!q7pMbahc;Ab B hB2"p5AzU o o2BCn[A B@F cd8uJe c>)#6xlζcs" - c((R,Xxq̞ QAX* )Yт\A@JNm F ) 8$0r3b[\Zgl"-UA>Z 2Hæf:%Q R;"FCAiZ"9Gc` pvRJ8\z _v'q0 hj.$ ~ ))<Y%?L<~``+I܀0 ` 0*t @O1 ydS @ ++?0A" </U!0-Bo.h X`*'@ 1KhxGqz8HGsqw|DALD8z}.~?/"(@^Kd ?[^_?;A4yy<zyzG=xW<|<ywr˓~g}W=zwg;Շ'>+=6=4 ; ".base64_decode("PD9waHANCg0KIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KIyAgICAgICAgICAjYXR0YWNrM3J6DQojICAgICAgICBBbHRyZWQgYnkgQWMgVGVhbSBhaw0KIyAgICAgICAgaHR0cDovL3d3dy5oNGNrei5uZXQNCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KZXJyb3JfcmVwb3J0aW5nKDApOw0KDQokbGFuZ3VhZ2U9J2VuZyc7DQoNCiRhdXRoID0gMDsNCg0KJG5hbWU9J2VlYTczMDU1YTBjZDg5NWJmNzQwMGEwYWMwYTdiZTBiJzsNCiRwYXNzPSdlZWE3MzA1NWEwY2Q4OTViZjc0MDBhMGFjMGE3YmUwYic7DQoNCkBpbmlfcmVzdG9yZSgic2FmZV9tb2RlIik7DQpAaW5pX3Jlc3RvcmUoIm9wZW5fYmFzZWRpciIpOw0KQGluaV9yZXN0b3JlKCJzYWZlX21vZGVfaW5jbHVkZV9kaXIiKTsNCkBpbmlfcmVzdG9yZSgic2FmZV9tb2RlX2V4ZWNfZGlyIik7DQpAaW5pX3Jlc3RvcmUoImRpc2FibGVfZnVuY3Rpb25zIik7DQpAaW5pX3Jlc3RvcmUoImFsbG93X3VybF9mb3BlbiIpOw0KDQpAaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsNCkBpbmlfc2V0KCdsb2dfZXJyb3JzJywwKTsNCg0KaWYoKCFAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpIHx8IChAaW5pX2dldCgnb3Blbl9iYXNlZGlyJykhPU5VTEwpIHx8IChAaW5pX2dldCgnc2FmZV9tb2RlX2luY2x1ZGVfZGlyJykhPU5VTEwpKXskb3Blbl9iYXNlZGlyPTE7fSBlbHNleyRvcGVuX2Jhc2VkaXI9MDt9Ow0KDQpkZWZpbmUoInN0YXJ0dGltZSIsQGdldG1pY3JvdGltZSgpKTsNCnNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNCkBzZXRfdGltZV9saW1pdCgwKTsNCkBpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLDApOw0KQGluaV9zZXQoJ291dHB1dF9idWZmZXJpbmcnLDApOw0KJHNhZmVfbW9kZSA9IEBpbmlfZ2V0KCdzYWZlX21vZGUnKTsNCiNpZihAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpeyRzYWZlX21vZGUgPSBAaW5pX2dldCgnc2FmZV9tb2RlJyk7fWVsc2V7JHNhZmVfbW9kZT0xO307DQokdmVyc2lvbiA9ICcxLjAwJzsNCmlmKEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwgJzQuMS4wJykgPT0gLTEpDQogew0KICRfUE9TVCAgID0gJiRIVFRQX1BPU1RfVkFSUzsNCiAkX0dFVCAgICA9ICYkSFRUUF9HRVRfVkFSUzsNCiAkX1NFUlZFUiA9ICYkSFRUUF9TRVJWRVJfVkFSUzsNCiAkX0NPT0tJRSA9ICYkSFRUUF9DT09LSUVfVkFSUzsNCiB9DQppZiAoQGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpDQogew0KIGZvcmVhY2ggKCRfUE9TVCBhcyAkaz0+JHYpDQogIHsNCiAgJF9QT1NUWyRrXSA9IHN0cmlwc2xhc2hlcygkdik7DQogIH0NCiBmb3JlYWNoICgkX0NPT0tJRSBhcyAkaz0+JHYpDQogIHsNCiAgJF9DT09LSUVbJGtdID0gc3RyaXBzbGFzaGVzKCR2KTsNCiAgfQ0KIH0NCg0KaWYoJGF1dGggPT0gMSkgew0KaWYgKCFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSB8fCBtZDUoJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXSkhPT0kbmFtZSB8fCBtZDUoJF9TRVJWRVJbJ1BIUF9BVVRIX1BXJ10pIT09JHBhc3MpDQogICB7DQogICBoZWFkZXIoJ1dXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSJIRUxMTyEiJyk7DQogICBoZWFkZXIoJ0hUVFAvMS4wIDQwMSBVbmF1dGhvcml6ZWQnKTsNCiAgIGV4aXQoIjxiPkFjY2VzcyBEZW5pZWQuIFlvdSBuZWVkIHRvIGNvbnRhY3QgdjQgVGVhbSBmb3IgcGFzc3dvcmQhPC9iPiIpOw0KICAgfQ0KfQ0KJGhlYWQgPSAnDQo8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPiNrNHJhZUwgLSBzaDNMTCA8L3RpdGxlPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUxIj4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQo8IS0tDQpNTD0iQzpjai9TaXptPHJQcy5SPT5wSW9oVCB0ZWwiOw0KTUk9Ijk1MD5CO0VGNT4wP0RHR0ExNDQ8REhJSUg6Nz0yQzg0MjY3PTM8QDk0NTA+QjtFQCI7DQpPVD0iIjsNCmZvcihqPTA7ajxNSS5sZW5ndGg7aisrKXsNCk9UKz1NTC5jaGFyQXQoTUkuY2hhckNvZGVBdChqKS00OCk7DQp9ZG9jdW1lbnQud3JpdGUoT1QpOw0KLy8gLS0+PC9zY3JpcHQ+DQoNCjxTVFlMRT4NCnRyIHsNCkJPUkRFUi1SSUdIVDogICNhYWFhYWEgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgI2VlZWVlZSAxcHggc29saWQ7DQpCT1JERVItTEVGVDogICAjZWVlZWVlIDFweCBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICNhYWFhYWEgMXB4IHNvbGlkOw0KY29sb3I6ICNGRkZGRkY7DQp9DQp0ZCB7DQpCT1JERVItUklHSFQ6ICAjYWFhYWFhIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICNlZWVlZWUgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgI2VlZWVlZSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjYWFhYWFhIDFweCBzb2xpZDsNCmNvbG9yOiAjRkZGRkZGOw0KfQ0KLnRhYmxlMSB7DQpCT1JERVI6IDBweDsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMxODE4MTg7DQpjb2xvcjogI0ZGRkZGRjsNCn0NCi50ZDEgew0KQk9SREVSOiAwcHg7DQpmb250OiA3cHQgVmVyZGFuYTsNCmNvbG9yOiAjRkZGRkZGOw0KfQ0KLnRyMSB7DQpCT1JERVI6IDBweDsNCmNvbG9yOiAjRkZGRkZGOw0KfQ0KdGFibGUgew0KQk9SREVSOiAgI2VlZWVlZSAxcHggb3V0c2V0Ow0KQkFDS0dST1VORC1DT0xPUjogIzE4MTgxODsNCmNvbG9yOiAjRkZGRkZGOw0KfQ0KaW5wdXQgew0KQk9SREVSLVJJR0hUOiAgI2ZmZmZmZiAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjOTk5OTk5IDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICM5OTk5OTkgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogI2ZmZmZmZiAxcHggc29saWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMDAwMDAwOw0KZm9udDogOHB0IFZlcmRhbmE7DQpjb2xvcjogI0ZGRkZGRjsNCn0NCnNlbGVjdCB7DQpCT1JERVItUklHSFQ6ICAjZmZmZmZmIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICM5OTk5OTkgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgIzk5OTk5OSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjZmZmZmZmIDFweCBzb2xpZDsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMwMDAwMDA7DQpmb250OiA4cHQgVmVyZGFuYTsNCmNvbG9yOiAjRkZGRkZGOzsNCn0NCnN1Ym1pdCB7DQpCT1JERVI6ICBidXR0b25oaWdobGlnaHQgMnB4IG91dHNldDsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMwMDAwMDA7DQp3aWR0aDogMzAlOw0KY29sb3I6ICNGRkZGRkY7DQp9DQp0ZXh0YXJlYSB7DQpCT1JERVItUklHSFQ6ICAjZmZmZmZmIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICM5OTk5OTkgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgIzk5OTk5OSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjZmZmZmZmIDFweCBzb2xpZDsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMwMDAwMDA7DQpmb250OiBGaXhlZHN5cyBib2xkOw0KY29sb3I6ICNGRkZGRkY7DQp9DQpCT0RZIHsNCm1hcmdpbjogMXB4Ow0KY29sb3I6ICNGRkZGRkY7DQpiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOw0KfQ0KQTpsaW5rIHtDT0xPUjpyZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZX0NCkE6dmlzaXRlZCB7IENPTE9SOnJlZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lfQ0KQTphY3RpdmUge0NPTE9SOnJlZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lfQ0KQTpob3ZlciB7Y29sb3I6MDY3QUZDO1RFWFQtREVDT1JBVElPTjogbm9uZX0NCjwvU1RZTEU+DQo8c2NyaXB0IGxhbmd1YWdlPVwnamF2YXNjcmlwdFwnPg0KZnVuY3Rpb24gaGlkZV9kaXYoaWQpDQp7DQogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5kaXNwbGF5ID0gXCdub25lXCc7DQogIGRvY3VtZW50LmNvb2tpZT1pZCtcJz0wO1wnOw0KfQ0KZnVuY3Rpb24gc2hvd19kaXYoaWQpDQp7DQogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5kaXNwbGF5ID0gXCdibG9ja1wnOw0KICBkb2N1bWVudC5jb29raWU9aWQrXCc9MTtcJzsNCn0NCmZ1bmN0aW9uIGNoYW5nZV9kaXZzdChpZCkNCnsNCiAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5kaXNwbGF5ID09IFwnbm9uZVwnKQ0KICAgIHNob3dfZGl2KGlkKTsNCiAgZWxzZQ0KICAgIGhpZGVfZGl2KGlkKTsNCn0NCg0KDQo8L3NjcmlwdD4nOw0KY2xhc3MgemlwZmlsZQ0Kew0KICAgIHZhciAkZGF0YXNlYyAgICAgID0gYXJyYXkoKTsNCiAgICB2YXIgJGN0cmxfZGlyICAgICA9IGFycmF5KCk7DQogICAgdmFyICRlb2ZfY3RybF9kaXIgPSAiXHg1MFx4NGJceDA1XHgwNlx4MDBceDAwXHgwMFx4MDAiOw0KICAgIHZhciAkb2xkX29mZnNldCAgID0gMDsNCiAgICBmdW5jdGlvbiB1bml4MkRvc1RpbWUoJHVuaXh0aW1lID0gMCkgew0KICAgICAgICAkdGltZWFycmF5ID0gKCR1bml4dGltZSA9PSAwKSA/IGdldGRhdGUoKSA6IGdldGRhdGUoJHVuaXh0aW1lKTsNCiAgICAgICAgaWYgKCR0aW1lYXJyYXlbJ3llYXInXSA8IDE5ODApIHsNCiAgICAgICAgICAgICR0aW1lYXJyYXlbJ3llYXInXSAgICA9IDE5ODA7DQogICAgICAgICAgICAkdGltZWFycmF5Wydtb24nXSAgICAgPSAxOw0KICAgICAgICAgICAgJHRpbWVhcnJheVsnbWRheSddICAgID0gMTsNCiAgICAgICAgICAgICR0aW1lYXJyYXlbJ2hvdXJzJ10gICA9IDA7DQogICAgICAgICAgICAkdGltZWFycmF5WydtaW51dGVzJ10gPSAwOw0KICAgICAgICAgICAgJHRpbWVhcnJheVsnc2Vjb25kcyddID0gMDsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gKCgkdGltZWFycmF5Wyd5ZWFyJ10gLSAxOTgwKSA8PCAyNSkgfCAoJHRpbWVhcnJheVsnbW9uJ10gPDwgMjEpIHwgKCR0aW1lYXJyYXlbJ21kYXknXSA8PCAxNikgfA0KICAgICAgICAgICAgICAgICgkdGltZWFycmF5Wydob3VycyddIDw8IDExKSB8ICgkdGltZWFycmF5WydtaW51dGVzJ10gPDwgNSkgfCAoJHRpbWVhcnJheVsnc2Vjb25kcyddID4+IDEpOw0KICAgIH0NCiAgICBmdW5jdGlvbiBhZGRGaWxlKCRkYXRhLCAkbmFtZSwgJHRpbWUgPSAwKQ0KICAgIHsNCiAgICAgICAgJG5hbWUgICAgID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkbmFtZSk7DQogICAgICAgICRkdGltZSAgICA9IGRlY2hleCgkdGhpcy0+dW5peDJEb3NUaW1lKCR0aW1lKSk7DQogICAgICAgICRoZXhkdGltZSA9ICdceCcgLiAkZHRpbWVbNl0gLiAkZHRpbWVbN10NCiAgICAgICAgICAgICAgICAgIC4gJ1x4JyAuICRkdGltZVs0XSAuICRkdGltZVs1XQ0KICAgICAgICAgICAgICAgICAgLiAnXHgnIC4gJGR0aW1lWzJdIC4gJGR0aW1lWzNdDQogICAgICAgICAgICAgICAgICAuICdceCcgLiAkZHRpbWVbMF0gLiAkZHRpbWVbMV07DQogICAgICAgIGV2YWwoJyRoZXhkdGltZSA9ICInIC4gJGhleGR0aW1lIC4gJyI7Jyk7DQogICAgICAgICRmciAgID0gIlx4NTBceDRiXHgwM1x4MDQiOw0KICAgICAgICAkZnIgICAuPSAiXHgxNFx4MDAiOw0KICAgICAgICAkZnIgICAuPSAiXHgwMFx4MDAiOw0KICAgICAgICAkZnIgICAuPSAiXHgwOFx4MDAiOw0KICAgICAgICAkZnIgICAuPSAkaGV4ZHRpbWU7DQogICAgICAgICR1bmNfbGVuID0gc3RybGVuKCRkYXRhKTsNCiAgICAgICAgJGNyYyAgICAgPSBjcmMzMigkZGF0YSk7DQogICAgICAgICR6ZGF0YSAgID0gZ3pjb21wcmVzcygkZGF0YSk7DQogICAgICAgICR6ZGF0YSAgID0gc3Vic3RyKHN1YnN0cigkemRhdGEsIDAsIHN0cmxlbigkemRhdGEpIC0gNCksIDIpOw0KICAgICAgICAkY19sZW4gICA9IHN0cmxlbigkemRhdGEpOw0KICAgICAgICAkZnIgICAgICAuPSBwYWNrKCdWJywgJGNyYyk7DQogICAgICAgICRmciAgICAgIC49IHBhY2soJ1YnLCAkY19sZW4pOw0KICAgICAgICAkZnIgICAgICAuPSBwYWNrKCdWJywgJHVuY19sZW4pOw0KICAgICAgICAkZnIgICAgICAuPSBwYWNrKCd2Jywgc3RybGVuKCRuYW1lKSk7DQogICAgICAgICRmciAgICAgIC49IHBhY2soJ3YnLCAwKTsNCiAgICAgICAgJGZyICAgICAgLj0gJG5hbWU7DQogICAgICAgICRmciAuPSAkemRhdGE7DQogICAgICAgICR0aGlzIC0+IGRhdGFzZWNbXSA9ICRmcjsNCiAgICAgICAgJGNkcmVjID0gIlx4NTBceDRiXHgwMVx4MDIiOw0KICAgICAgICAkY2RyZWMgLj0gIlx4MDBceDAwIjsNCiAgICAgICAgJGNkcmVjIC49ICJceDE0XHgwMCI7DQogICAgICAgICRjZHJlYyAuPSAiXHgwMFx4MDAiOw0KICAgICAgICAkY2RyZWMgLj0gIlx4MDhceDAwIjsNCiAgICAgICAgJGNkcmVjIC49ICRoZXhkdGltZTsNCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAkY3JjKTsNCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAkY19sZW4pOw0KICAgICAgICAkY2RyZWMgLj0gcGFjaygnVicsICR1bmNfbGVuKTsNCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCBzdHJsZW4oJG5hbWUpICk7DQogICAgICAgICRjZHJlYyAuPSBwYWNrKCd2JywgMCApOw0KICAgICAgICAkY2RyZWMgLj0gcGFjaygndicsIDAgKTsNCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7DQogICAgICAgICRjZHJlYyAuPSBwYWNrKCd2JywgMCApOw0KICAgICAgICAkY2RyZWMgLj0gcGFjaygnVicsIDMyICk7DQogICAgICAgICRjZHJlYyAuPSBwYWNrKCdWJywgJHRoaXMgLT4gb2xkX29mZnNldCApOw0KICAgICAgICAkdGhpcyAtPiBvbGRfb2Zmc2V0ICs9IHN0cmxlbigkZnIpOw0KICAgICAgICAkY2RyZWMgLj0gJG5hbWU7DQogICAgICAgICR0aGlzIC0+IGN0cmxfZGlyW10gPSAkY2RyZWM7DQogICAgfQ0KICAgIGZ1bmN0aW9uIGZpbGUoKQ0KICAgIHsNCiAgICAgICAgJGRhdGEgICAgPSBpbXBsb2RlKCcnLCAkdGhpcyAtPiBkYXRhc2VjKTsNCiAgICAgICAgJGN0cmxkaXIgPSBpbXBsb2RlKCcnLCAkdGhpcyAtPiBjdHJsX2Rpcik7DQogICAgICAgIHJldHVybg0KICAgICAgICAgICAgJGRhdGEgLg0KICAgICAgICAgICAgJGN0cmxkaXIgLg0KICAgICAgICAgICAgJHRoaXMgLT4gZW9mX2N0cmxfZGlyIC4NCiAgICAgICAgICAgIHBhY2soJ3YnLCBzaXplb2YoJHRoaXMgLT4gY3RybF9kaXIpKSAuDQogICAgICAgICAgICBwYWNrKCd2Jywgc2l6ZW9mKCR0aGlzIC0+IGN0cmxfZGlyKSkgLg0KICAgICAgICAgICAgcGFjaygnVicsIHN0cmxlbigkY3RybGRpcikpIC4NCiAgICAgICAgICAgIHBhY2soJ1YnLCBzdHJsZW4oJGRhdGEpKSAuDQogICAgICAgICAgICAiXHgwMFx4MDAiOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gY29tcHJlc3MoJiRmaWxlbmFtZSwmJGZpbGVkdW1wLCRjb21wcmVzcykNCiB7DQogICAgZ2xvYmFsICRjb250ZW50X2VuY29kaW5nOw0KICAgIGdsb2JhbCAkbWltZV90eXBlOw0KICAgIGlmICgkY29tcHJlc3MgPT0gJ2J6aXAnICYmIEBmdW5jdGlvbl9leGlzdHMoJ2J6Y29tcHJlc3MnKSkNCiAgICAgew0KICAgICAgICAkZmlsZW5hbWUgIC49ICcuYnoyJzsNCiAgICAgICAgJG1pbWVfdHlwZSA9ICdhcHBsaWNhdGlvbi94LWJ6aXAyJzsNCiAgICAgICAgJGZpbGVkdW1wID0gYnpjb21wcmVzcygkZmlsZWR1bXApOw0KICAgICB9DQogICAgIGVsc2UgaWYgKCRjb21wcmVzcyA9PSAnZ3ppcCcgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZ3plbmNvZGUnKSkNCiAgICAgew0KICAgICAgICAkZmlsZW5hbWUgIC49ICcuZ3onOw0KICAgICAgICAkY29udGVudF9lbmNvZGluZyA9ICd4LWd6aXAnOw0KICAgICAgICAkbWltZV90eXBlID0gJ2FwcGxpY2F0aW9uL3gtZ3ppcCc7DQogICAgICAgICRmaWxlZHVtcCA9IGd6ZW5jb2RlKCRmaWxlZHVtcCk7DQogICAgIH0NCiAgICAgZWxzZSBpZiAoJGNvbXByZXNzID09ICd6aXAnICYmIEBmdW5jdGlvbl9leGlzdHMoJ2d6Y29tcHJlc3MnKSkNCiAgICAgew0KICAgICAkZmlsZW5hbWUgLj0gJy56aXAnOw0KICAgICAgICAkbWltZV90eXBlID0gJ2FwcGxpY2F0aW9uL3ppcCc7DQogICAgICAgICR6aXBmaWxlID0gbmV3IHppcGZpbGUoKTsNCiAgICAgICAgJHppcGZpbGUgLT4gYWRkRmlsZSgkZmlsZWR1bXAsIHN1YnN0cigkZmlsZW5hbWUsIDAsIC00KSk7DQogICAgICAgICRmaWxlZHVtcCA9ICR6aXBmaWxlIC0+IGZpbGUoKTsNCiAgICAgfQ0KICAgICBlbHNlDQogICAgIHsNCiAgICAgJG1pbWVfdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOw0KICAgICB9DQogfQ0KDQpmdW5jdGlvbiBtb3JlcmVhZCgkdGVtcCl7DQpnbG9iYWwgJGxhbmcsJGxhbmd1YWdlOw0KJHN0cj0nJzsNCiAgaWYoQGZ1bmN0aW9uX2V4aXN0cygnZm9wZW4nKSYmQGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpJiZAZnVuY3Rpb25fZXhpc3RzKCdmZ2V0cycpJiZAZnVuY3Rpb25fZXhpc3RzKCdmY2xvc2UnKSl7DQogICAkZmZpbGUgPSBAZm9wZW4oJHRlbXAsICJyIik7DQogICB3aGlsZSghQGZlb2YoJGZmaWxlKSl7JHN0ciAuPSBAZmdldHMoJGZmaWxlKTt9DQogICBmY2xvc2UoJGZmaWxlKTsNCiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpJiZAZnVuY3Rpb25fZXhpc3RzKCdmcmVhZCcpJiZAZnVuY3Rpb25fZXhpc3RzKCdmY2xvc2UnKSYmQGZ1bmN0aW9uX2V4aXN0cygnZmlsZXNpemUnKSl7DQogICAkZmZpbGUgPSBAZm9wZW4oJHRlbXAsICJyIik7DQogICAkc3RyID0gQGZyZWFkKCRmZmlsZSwgQGZpbGVzaXplKCR0ZW1wKSk7DQogICBAZmNsb3NlKCRmZmlsZSk7DQogIH1lbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygnZmlsZScpKXsNCiAgICRmZmlsZXMgPSBAZmlsZSAoJHRlbXApOw0KICAgZm9yZWFjaCAoJGZmaWxlcyBhcyAkZmZpbGUpIHsgJHN0ciAuPSAkZmZpbGU7IH0NCiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX2dldF9jb250ZW50cycpKXsNCiAgICRzdHIgPSBAZmlsZV9nZXRfY29udGVudHMoJHRlbXApOw0KICB9ZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3JlYWRmaWxlJykpew0KICAgJHN0ciA9IEByZWFkZmlsZSgkdGVtcCk7DQogIH1lbHNle2VjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU2J107fQ0KcmV0dXJuICRzdHI7DQp9DQoNCmZ1bmN0aW9uIHJlYWR6bGliKCRmaWxlbmFtZSwkdGVtcD0nJyl7DQpnbG9iYWwgJGxhbmcsJGxhbmd1YWdlOw0KJHN0cj0nJzsNCiAgaWYoISR0ZW1wKSB7JHRlbXA9dGVtcG5hbShAZ2V0Y3dkKCksICJjb3B5dGVtcCIpO307DQogIGlmKEBjb3B5KCJjb21wcmVzcy56bGliOi8vIi4kZmlsZW5hbWUsICR0ZW1wKSkgew0KICAgJHN0ciA9IG1vcmVyZWFkKCR0ZW1wKTsNCiAgfSBlbHNlIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExOSddOw0KICBAdW5saW5rKCR0ZW1wKTsNCnJldHVybiAkc3RyOw0KfQ0KDQpmdW5jdGlvbiBtYWlsYXR0YWNoKCR0bywkZnJvbSwkc3ViaiwkYXR0YWNoKQ0KIHsNCiAkaGVhZGVycyAgPSAiRnJvbTogJGZyb21cclxuIjsNCiAkaGVhZGVycyAuPSAiTUlNRS1WZXJzaW9uOiAxLjBcclxuIjsNCiAkaGVhZGVycyAuPSAiQ29udGVudC1UeXBlOiAiLiRhdHRhY2hbJ3R5cGUnXTsNCiAkaGVhZGVycyAuPSAiOyBuYW1lPVwiIi4kYXR0YWNoWyduYW1lJ10uIlwiXHJcbiI7DQogJGhlYWRlcnMgLj0gIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFxyXG5cclxuIjsNCiAkaGVhZGVycyAuPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKCRhdHRhY2hbJ2NvbnRlbnQnXSkpLiJcclxuIjsNCiBpZihtYWlsKCR0bywkc3ViaiwiIiwkaGVhZGVycykpIHsgcmV0dXJuIDE7IH0NCiByZXR1cm4gMDsNCiB9DQpjbGFzcyBteV9zcWwNCiB7DQogdmFyICRob3N0ID0gJ2xvY2FsaG9zdCc7DQogdmFyICRwb3J0ID0gJyc7DQogdmFyICR1c2VyID0gJyc7DQogdmFyICRwYXNzID0gJyc7DQogdmFyICRiYXNlID0gJyc7DQogdmFyICRkYiAgID0gJyc7DQogdmFyICRjb25uZWN0aW9uOw0KIHZhciAkcmVzOw0KIHZhciAkZXJyb3I7DQogdmFyICRyb3dzOw0KIHZhciAkY29sdW1uczsNCiB2YXIgJG51bV9yb3dzOw0KIHZhciAkbnVtX2ZpZWxkczsNCiB2YXIgJGR1bXA7DQoNCiBmdW5jdGlvbiBjb25uZWN0KCkNCiAgew0KICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgICB7DQogICBjYXNlICdNeVNRTCc6DQogICAgaWYoZW1wdHkoJHRoaXMtPnBvcnQpKSB7ICR0aGlzLT5wb3J0ID0gJzMzMDYnOyB9DQogICAgaWYoIUBmdW5jdGlvbl9leGlzdHMoJ215c3FsX2Nvbm5lY3QnKSkgcmV0dXJuIDA7DQogICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAbXlzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4nOicuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpOw0KICAgIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7DQogICBicmVhazsNCiAgICAgY2FzZSAnTVNTUUwnOg0KICAgICAgaWYoZW1wdHkoJHRoaXMtPnBvcnQpKSB7ICR0aGlzLT5wb3J0ID0gJzE0MzMnOyB9DQogICAgaWYoIUBmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKSkgcmV0dXJuIDA7DQogICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAbXNzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4nLCcuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpOw0KICAgICAgaWYoJHRoaXMtPmNvbm5lY3Rpb24pIHJldHVybiAxOw0KICAgICBicmVhazsNCiAgICAgY2FzZSAnUG9zdGdyZVNRTCc6DQogICAgICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMtPnBvcnQgPSAnNTQzMic7IH0NCiAgICAgICRzdHIgPSAiaG9zdD0nIi4kdGhpcy0+aG9zdC4iJyBwb3J0PSciLiR0aGlzLT5wb3J0LiInIHVzZXI9JyIuJHRoaXMtPnVzZXIuIicgcGFzc3dvcmQ9JyIuJHRoaXMtPnBhc3MuIicgZGJuYW1lPSciLiR0aGlzLT5iYXNlLiInIjsNCiAgICAgIGlmKCFAZnVuY3Rpb25fZXhpc3RzKCdwZ19jb25uZWN0JykpIHJldHVybiAwOw0KICAgICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAcGdfY29ubmVjdCgkc3RyKTsNCiAgICAgIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7DQogICAgIGJyZWFrOw0KICAgICBjYXNlICdPcmFjbGUnOg0KICAgICAgaWYoIUBmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJykpIHJldHVybiAwOw0KICAgICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAb2NpbG9nb24oJHRoaXMtPnVzZXIsICR0aGlzLT5wYXNzLCAkdGhpcy0+YmFzZSk7DQogICAgICBpZihpc19yZXNvdXJjZSgkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOw0KICAgICBicmVhazsNCiAgICAgfQ0KICAgIHJldHVybiAwOw0KICB9DQoNCiBmdW5jdGlvbiBzZWxlY3RfZGIoKQ0KICB7DQogICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgIHsNCiAgY2FzZSAnTXlTUUwnOg0KICAgaWYoQG15c3FsX3NlbGVjdF9kYigkdGhpcy0+YmFzZSwkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ01TU1FMJzoNCiAgIGlmKEBtc3NxbF9zZWxlY3RfZGIoJHRoaXMtPmJhc2UsJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsNCiAgICBicmVhazsNCiAgICBjYXNlICdQb3N0Z3JlU1FMJzoNCiAgICAgcmV0dXJuIDE7DQogICAgYnJlYWs7DQogICAgY2FzZSAnT3JhY2xlJzoNCiAgICAgcmV0dXJuIDE7DQogICAgYnJlYWs7DQogICAgfQ0KICAgcmV0dXJuIDA7DQogIH0NCg0KIGZ1bmN0aW9uIHF1ZXJ5KCRxdWVyeSkNCiAgew0KICAgJHRoaXMtPnJlcz0kdGhpcy0+ZXJyb3I9Jyc7DQogICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgIHsNCiAgY2FzZSAnTXlTUUwnOg0KICAgICBpZihmYWxzZT09PSgkdGhpcy0+cmVzPUBteXNxbF9xdWVyeSgnLyonLmNocigwKS4nKi8nLiRxdWVyeSwkdGhpcy0+Y29ubmVjdGlvbikpKQ0KICAgICAgew0KICAgICAgJHRoaXMtPmVycm9yID0gQG15c3FsX2Vycm9yKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICAgIHJldHVybiAwOw0KICAgICAgfQ0KICAgICBlbHNlIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5yZXMpKSB7IHJldHVybiAxOyB9DQogICAgIHJldHVybiAyOw0KICBicmVhazsNCiAgICBjYXNlICdNU1NRTCc6DQogICAgIGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG1zc3FsX3F1ZXJ5KCRxdWVyeSwkdGhpcy0+Y29ubmVjdGlvbikpKQ0KICAgICAgew0KICAgICAgJHRoaXMtPmVycm9yID0gJ1F1ZXJ5IGVycm9yJzsNCiAgICAgIHJldHVybiAwOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZihAbXNzcWxfbnVtX3Jvd3MoJHRoaXMtPnJlcykgPiAwKSB7IHJldHVybiAxOyB9DQogICAgIHJldHVybiAyOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ1Bvc3RncmVTUUwnOg0KICAgICBpZihmYWxzZT09PSgkdGhpcy0+cmVzPUBwZ19xdWVyeSgkdGhpcy0+Y29ubmVjdGlvbiwkcXVlcnkpKSkNCiAgICAgIHsNCiAgICAgICR0aGlzLT5lcnJvciA9IEBwZ19sYXN0X2Vycm9yKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICAgIHJldHVybiAwOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZihAcGdfbnVtX3Jvd3MoJHRoaXMtPnJlcykgPiAwKSB7IHJldHVybiAxOyB9DQogICAgIHJldHVybiAyOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ09yYWNsZSc6DQogICAgIGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG9jaXBhcnNlKCR0aGlzLT5jb25uZWN0aW9uLCRxdWVyeSkpKQ0KICAgICAgew0KICAgICAgJHRoaXMtPmVycm9yID0gJ1F1ZXJ5IHBhcnNlIGVycm9yJzsNCiAgICAgIH0NCiAgICAgZWxzZQ0KICAgICAgew0KICAgICAgaWYoQG9jaWV4ZWN1dGUoJHRoaXMtPnJlcykpDQogICAgICAgew0KICAgICAgIGlmKEBvY2lyb3djb3VudCgkdGhpcy0+cmVzKSAhPSAwKSByZXR1cm4gMjsNCiAgICAgICByZXR1cm4gMTsNCiAgICAgICB9DQogICAgICAkZXJyb3IgPSBAb2NpZXJyb3IoKTsNCiAgICAgICR0aGlzLT5lcnJvcj0kZXJyb3JbJ21lc3NhZ2UnXTsNCiAgICAgIH0NCiAgICBicmVhazsNCiAgICB9DQogIHJldHVybiAwOw0KICB9DQogZnVuY3Rpb24gZ2V0X3Jlc3VsdCgpDQogIHsNCiAgICR0aGlzLT5yb3dzPWFycmF5KCk7DQogICAkdGhpcy0+Y29sdW1ucz1hcnJheSgpOw0KICAgJHRoaXMtPm51bV9yb3dzPSR0aGlzLT5udW1fZmllbGRzPTA7DQogICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgIHsNCiAgY2FzZSAnTXlTUUwnOg0KICAgJHRoaXMtPm51bV9yb3dzPUBteXNxbF9udW1fcm93cygkdGhpcy0+cmVzKTsNCiAgICR0aGlzLT5udW1fZmllbGRzPUBteXNxbF9udW1fZmllbGRzKCR0aGlzLT5yZXMpOw0KICAgd2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQG15c3FsX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSk7DQogICBAbXlzcWxfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7DQogICBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9DQogICAgYnJlYWs7DQogICAgY2FzZSAnTVNTUUwnOg0KICAgJHRoaXMtPm51bV9yb3dzPUBtc3NxbF9udW1fcm93cygkdGhpcy0+cmVzKTsNCiAgICR0aGlzLT5udW1fZmllbGRzPUBtc3NxbF9udW1fZmllbGRzKCR0aGlzLT5yZXMpOw0KICAgd2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQG1zc3FsX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSk7DQogICBAbXNzcWxfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7DQogICBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9Ow0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ1Bvc3RncmVTUUwnOg0KICAgJHRoaXMtPm51bV9yb3dzPUBwZ19udW1fcm93cygkdGhpcy0+cmVzKTsNCiAgICR0aGlzLT5udW1fZmllbGRzPUBwZ19udW1fZmllbGRzKCR0aGlzLT5yZXMpOw0KICAgd2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQHBnX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSk7DQogICBAcGdfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7DQogICBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9DQogICAgYnJlYWs7DQogICAgY2FzZSAnT3JhY2xlJzoNCiAgICAgJHRoaXMtPm51bV9maWVsZHM9QG9jaW51bWNvbHMoJHRoaXMtPnJlcyk7DQogICAgIHdoaWxlKGZhbHNlICE9PSAoJHRoaXMtPnJvd3NbXSA9IEBvY2lfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKSAkdGhpcy0+bnVtX3Jvd3MrKzsNCiAgICAgQG9jaWZyZWVzdGF0ZW1lbnQoJHRoaXMtPnJlcyk7DQogICAgIGlmKCR0aGlzLT5udW1fcm93cyl7JHRoaXMtPmNvbHVtbnMgPSBAYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7IHJldHVybiAxO30NCiAgICBicmVhazsNCiAgICB9DQogICByZXR1cm4gMDsNCiAgfQ0KIGZ1bmN0aW9uIGR1bXAoJHRhYmxlKQ0KICB7DQogICBpZihlbXB0eSgkdGFibGUpKSByZXR1cm4gMDsNCiAgICR0aGlzLT5kdW1wPWFycmF5KCk7DQogICAkdGhpcy0+ZHVtcFswXSA9ICcjIyc7DQogICAkdGhpcy0+ZHVtcFsxXSA9ICcjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gJzsNCiAgICR0aGlzLT5kdW1wWzJdID0gJyMjICBDcmVhdGVkOiAnLmRhdGUgKCJkL20vWSBIOmk6cyIpOw0KICAgJHRoaXMtPmR1bXBbM10gPSAnIyMgRGF0YWJhc2U6ICcuJHRoaXMtPmJhc2U7DQogICAkdGhpcy0+ZHVtcFs0XSA9ICcjIyAgICBUYWJsZTogJy4kdGFibGU7DQogICAkdGhpcy0+ZHVtcFs1XSA9ICcjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gJzsNCiAgIHN3aXRjaCgkdGhpcy0+ZGIpDQogICAgew0KICBjYXNlICdNeVNRTCc6DQogICAkdGhpcy0+ZHVtcFswXSA9ICcjIyBNeVNRTCBkdW1wJzsNCiAgIGlmKCR0aGlzLT5xdWVyeSgnLyonLmNocigwKS4nKi8gU0hPVyBDUkVBVEUgVEFCTEUgYCcuJHRhYmxlLidgJykhPTEpIHJldHVybiAwOw0KICAgaWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpIHJldHVybiAwOw0KICAgJHRoaXMtPmR1bXBbXSA9ICR0aGlzLT5yb3dzWzBdWydDcmVhdGUgVGFibGUnXTsNCiAgICAgJHRoaXMtPmR1bXBbXSA9ICcjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gJzsNCiAgIGlmKCR0aGlzLT5xdWVyeSgnLyonLmNocigwKS4nKi8gU0VMRUNUICogRlJPTSBgJy4kdGFibGUuJ2AnKSE9MSkgcmV0dXJuIDA7DQogICBpZighJHRoaXMtPmdldF9yZXN1bHQoKSkgcmV0dXJuIDA7DQogICBmb3IoJGk9MDskaTwkdGhpcy0+bnVtX3Jvd3M7JGkrKykNCiAgICB7DQogICAgICBmb3JlYWNoKCR0aGlzLT5yb3dzWyRpXSBhcyAkaz0+JHYpIHskdGhpcy0+cm93c1skaV1bJGtdID0gQG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZygkdik7fQ0KICAgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gYCcuJHRhYmxlLidgIChgJy5AaW1wbG9kZSgiYCwgYCIsICR0aGlzLT5jb2x1bW5zKS4nYCkgVkFMVUVTIChcJycuQGltcGxvZGUoIicsICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsNCiAgICB9DQogICAgYnJlYWs7DQogICAgY2FzZSAnTVNTUUwnOg0KICAgICAkdGhpcy0+ZHVtcFswXSA9ICcjIyBNU1NRTCBkdW1wJzsNCiAgICAgaWYoJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHRhYmxlKSE9MSkgcmV0dXJuIDA7DQogICBpZighJHRoaXMtPmdldF9yZXN1bHQoKSkgcmV0dXJuIDA7DQogICBmb3IoJGk9MDskaTwkdGhpcy0+bnVtX3Jvd3M7JGkrKykNCiAgICB7DQogICAgICBmb3JlYWNoKCR0aGlzLT5yb3dzWyRpXSBhcyAkaz0+JHYpIHskdGhpcy0+cm93c1skaV1bJGtdID0gQGFkZHNsYXNoZXMoJHYpO30NCiAgICAkdGhpcy0+ZHVtcFtdID0gJ0lOU0VSVCBJTlRPICcuJHRhYmxlLicgKCcuQGltcGxvZGUoIiwgIiwgJHRoaXMtPmNvbHVtbnMpLicpIFZBTFVFUyAoXCcnLkBpbXBsb2RlKCInLCAnIiwgJHRoaXMtPnJvd3NbJGldKS4nXCcpOyc7DQogICAgfQ0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ1Bvc3RncmVTUUwnOg0KICAgICAkdGhpcy0+ZHVtcFswXSA9ICcjIyBQb3N0Z3JlU1FMIGR1bXAnOw0KICAgICBpZigkdGhpcy0+cXVlcnkoJ1NFTEVDVCAqIEZST00gJy4kdGFibGUpIT0xKSByZXR1cm4gMDsNCiAgIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsNCiAgIGZvcigkaT0wOyRpPCR0aGlzLT5udW1fcm93czskaSsrKQ0KICAgIHsNCiAgICAgIGZvcmVhY2goJHRoaXMtPnJvd3NbJGldIGFzICRrPT4kdikgeyR0aGlzLT5yb3dzWyRpXVska10gPSBAYWRkc2xhc2hlcygkdik7fQ0KICAgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5AaW1wbG9kZSgiLCAiLCAkdGhpcy0+Y29sdW1ucykuJykgVkFMVUVTIChcJycuQGltcGxvZGUoIicsICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsNCiAgICB9DQogICAgYnJlYWs7DQogICAgY2FzZSAnT3JhY2xlJzoNCiAgICAgICR0aGlzLT5kdW1wWzBdID0gJyMjIE9SQUNMRSBkdW1wJzsNCiAgICAgICR0aGlzLT5kdW1wW10gID0gJyMjIHVuZGVyIGNvbnN0cnVjdGlvbic7DQogICAgYnJlYWs7DQogICAgZGVmYXVsdDoNCiAgICAgcmV0dXJuIDA7DQogICAgYnJlYWs7DQogICAgfQ0KICAgcmV0dXJuIDE7DQogIH0NCiBmdW5jdGlvbiBjbG9zZSgpDQogIHsNCiAgIHN3aXRjaCgkdGhpcy0+ZGIpDQogICAgew0KICBjYXNlICdNeVNRTCc6DQogICBAbXlzcWxfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ01TU1FMJzoNCiAgICAgQG1zc3FsX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICBicmVhazsNCiAgICBjYXNlICdQb3N0Z3JlU1FMJzoNCiAgICAgQHBnX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICBicmVhazsNCiAgICBjYXNlICdPcmFjbGUnOg0KICAgICBAb2NpX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICBicmVhazsNCiAgICB9DQogIH0NCiBmdW5jdGlvbiBhZmZlY3RlZF9yb3dzKCkNCiAgew0KICAgc3dpdGNoKCR0aGlzLT5kYikNCiAgICB7DQogIGNhc2UgJ015U1FMJzoNCiAgIHJldHVybiBAbXlzcWxfYWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTsNCiAgICBicmVhazsNCiAgICBjYXNlICdNU1NRTCc6DQogICAgIHJldHVybiBAbXNzcWxfYWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTsNCiAgICBicmVhazsNCiAgICBjYXNlICdQb3N0Z3JlU1FMJzoNCiAgICAgcmV0dXJuIEBwZ19hZmZlY3RlZF9yb3dzKCR0aGlzLT5yZXMpOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ09yYWNsZSc6DQogICAgIHJldHVybiBAb2Npcm93Y291bnQoJHRoaXMtPnJlcyk7DQogICAgYnJlYWs7DQogICAgZGVmYXVsdDoNCiAgICAgcmV0dXJuIDA7DQogICAgYnJlYWs7DQogICAgfQ0KICB9DQogfQ0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJkb3dubG9hZF9maWxlIiAmJiAhZW1wdHkoJF9QT1NUWydkX25hbWUnXSkpDQogew0KICBpZigkZmlsZT1AZm9wZW4oJF9QT1NUWydkX25hbWUnXSwiciIpKXsgJGZpbGVkdW1wID0gQGZyZWFkKCRmaWxlLEBmaWxlc2l6ZSgkX1BPU1RbJ2RfbmFtZSddKSk7IEBmY2xvc2UoJGZpbGUpOyB9DQogIGVsc2UgaWYgKCRmaWxlPXJlYWR6bGliKCRfUE9TVFsnZF9uYW1lJ10pKSB7ICRmaWxlZHVtcCA9ICRmaWxlOyB9IGVsc2UgeyBlcnIoMSwkX1BPU1RbJ2RfbmFtZSddKTsgJF9QT1NUWydjbWQnXT0iIjsgfQ0KICBpZihpc3NldCgkX1BPU1RbJ2NtZCddKSkNCiAgIHsNCiAgICBAb2JfY2xlYW4oKTsNCiAgICAkZmlsZW5hbWUgPSBAYmFzZW5hbWUoJF9QT1NUWydkX25hbWUnXSk7DQogICAgJGNvbnRlbnRfZW5jb2Rpbmc9JG1pbWVfdHlwZT0nJzsNCiAgICBjb21wcmVzcygkZmlsZW5hbWUsJGZpbGVkdW1wLCRfUE9TVFsnY29tcHJlc3MnXSk7DQogICAgaWYgKCFlbXB0eSgkY29udGVudF9lbmNvZGluZykpIHsgaGVhZGVyKCdDb250ZW50LUVuY29kaW5nOiAnIC4gJGNvbnRlbnRfZW5jb2RpbmcpOyB9DQogICAgaGVhZGVyKCJDb250ZW50LXR5cGU6ICIuJG1pbWVfdHlwZSk7DQogICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuJGZpbGVuYW1lLiJcIjsiKTsNCiAgICBlY2hvICRmaWxlZHVtcDsNCiAgICBleGl0KCk7DQogICB9DQogfQ0KaWYoaXNzZXQoJF9HRVRbJ3BocGluZm8nXSkpIHsgZWNobyBAcGhwaW5mbygpOyBlY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOyBkaWUoKTsgfQ0KaWYgKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddPT0iZGJfcXVlcnkiKQ0KIHsNCiBlY2hvICRoZWFkOw0KICRzcWwgPSBuZXcgbXlfc3FsKCk7DQogJHNxbC0+ZGIgICA9ICRfUE9TVFsnZGInXTsNCiAkc3FsLT5ob3N0ID0gJF9QT1NUWydkYl9zZXJ2ZXInXTsNCiAkc3FsLT5wb3J0ID0gJF9QT1NUWydkYl9wb3J0J107DQogJHNxbC0+dXNlciA9ICRfUE9TVFsnbXlzcWxfbCddOw0KICRzcWwtPnBhc3MgPSAkX1BPU1RbJ215c3FsX3AnXTsNCiAkc3FsLT5iYXNlID0gJF9QT1NUWydteXNxbF9kYiddOw0KICRxdWVyeXMgPSBAZXhwbG9kZSgnOycsJF9QT1NUWydkYl9xdWVyeSddKTsNCiBlY2hvICc8Ym9keSBiZ2NvbG9yPSMwMDAwMDA+JzsNCiBpZighJHNxbC0+Y29ubmVjdCgpKSBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+Q2FuJ3QgY29ubmVjdCB0byBTUUwgc2VydmVyPC9iPjwvZm9udD48L2Rpdj4iOw0KICBlbHNlDQogICB7DQogICBpZighZW1wdHkoJHNxbC0+YmFzZSkmJiEkc3FsLT5zZWxlY3RfZGIoKSkgZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxiPkNhbid0IHNlbGVjdCBkYXRhYmFzZTwvYj48L2ZvbnQ+PC9kaXY+IjsNCiAgIGVsc2UNCiAgICB7DQogICAgZm9yZWFjaCgkcXVlcnlzIGFzICRudW09PiRxdWVyeSkNCiAgICAgew0KICAgICAgaWYoc3RybGVuKCRxdWVyeSk+NSkNCiAgICAgIHsNCiAgICAgIGVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPTJCRDUzRj48Yj5RdWVyeSMiLiRudW0uIiA6ICIuaHRtbHNwZWNpYWxjaGFycygkcXVlcnksRU5UX1FVT1RFUykuIjwvYj48L2ZvbnQ+PGJyPiI7DQogICAgICBzd2l0Y2goJHNxbC0+cXVlcnkoJHF1ZXJ5KSkNCiAgICAgICB7DQogICAgICAgY2FzZSAnMCc6DQogICAgICAgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj5FcnJvciA6IDxiPiIuJHNxbC0+ZXJyb3IuIjwvYj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjsNCiAgICAgICBicmVhazsNCiAgICAgICBjYXNlICcxJzoNCiAgICAgICBpZigkc3FsLT5nZXRfcmVzdWx0KCkpDQogICAgICAgIHsNCiAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJT4iOw0KICAgICAgICBmb3JlYWNoKCRzcWwtPmNvbHVtbnMgYXMgJGs9PiR2KSAkc3FsLT5jb2x1bW5zWyRrXSA9IGh0bWxzcGVjaWFsY2hhcnMoJHYsRU5UX1FVT1RFUyk7DQogICAgICAgJGtleXMgPSBAaW1wbG9kZSgiJm5ic3A7PC9iPjwvZm9udD48L3RkPjx0ZCBiZ2NvbG9yPSMwQzBDMEM+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jm5ic3A7IiwgJHNxbC0+Y29sdW1ucyk7DQogICAgICAgIGVjaG8gIjx0cj48dGQgYmdjb2xvcj0jMEMwQzBDPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiZuYnNwOyIuJGtleXMuIiZuYnNwOzwvYj48L2ZvbnQ+PC90ZD48L3RyPiI7DQogICAgICAgIGZvcigkaT0wOyRpPCRzcWwtPm51bV9yb3dzOyRpKyspDQogICAgICAgICB7DQogICAgICAgICBmb3JlYWNoKCRzcWwtPnJvd3NbJGldIGFzICRrPT4kdikgJHNxbC0+cm93c1skaV1bJGtdID0gaHRtbHNwZWNpYWxjaGFycygkdixFTlRfUVVPVEVTKTsNCiAgICAgICAgICR2YWx1ZXMgPSBAaW1wbG9kZSgiJm5ic3A7PC9mb250PjwvdGQ+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiZuYnNwOyIsJHNxbC0+cm93c1skaV0pOw0KICAgICAgICAgZWNobyAnPHRyPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4mbmJzcDsnLiR2YWx1ZXMuJyZuYnNwOzwvZm9udD48L3RkPjwvdHI+JzsNCiAgICAgICAgIH0NCiAgICAgICAgZWNobyAiPC90YWJsZT4iOw0KICAgICAgICB9DQogICAgICAgYnJlYWs7DQogICAgICAgY2FzZSAnMic6DQogICAgICAgJGFyID0gJHNxbC0+YWZmZWN0ZWRfcm93cygpPygkc3FsLT5hZmZlY3RlZF9yb3dzKCkpOignMCcpOw0KICAgICAgIGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+YWZmZWN0ZWQgcm93cyA6IDxiPiIuJGFyLiI8L2I+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPjxicj4iOw0KICAgICAgIGJyZWFrOw0KICAgICAgIH0NCiAgICAgIH0NCiAgICAgfQ0KICAgIH0NCiAgIH0NCiBlY2hvICI8YnI+PGZvcm0gbmFtZT1mb3JtIG1ldGhvZD1QT1NUPiI7DQogZWNobyBpbignaGlkZGVuJywnZGInLDAsJF9QT1NUWydkYiddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdkYl9zZXJ2ZXInLDAsJF9QT1NUWydkYl9zZXJ2ZXInXSk7DQogZWNobyBpbignaGlkZGVuJywnZGJfcG9ydCcsMCwkX1BPU1RbJ2RiX3BvcnQnXSk7DQogZWNobyBpbignaGlkZGVuJywnbXlzcWxfbCcsMCwkX1BPU1RbJ215c3FsX2wnXSk7DQogZWNobyBpbignaGlkZGVuJywnbXlzcWxfcCcsMCwkX1BPU1RbJ215c3FsX3AnXSk7DQogZWNobyBpbignaGlkZGVuJywnbXlzcWxfZGInLDAsJF9QT1NUWydteXNxbF9kYiddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdjbWQnLDAsJ2RiX3F1ZXJ5Jyk7DQogZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+IjsNCiBlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5CYXNlOiA8L2I+PGlucHV0IHR5cGU9dGV4dCBuYW1lPW15c3FsX2RiIHZhbHVlPVwiIi4kc3FsLT5iYXNlLiJcIj48L2ZvbnQ+PGJyPiI7DQogZWNobyAiPHRleHRhcmVhIGNvbHM9NjUgcm93cz0xMCBuYW1lPWRiX3F1ZXJ5PiIuKCFlbXB0eSgkX1BPU1RbJ2RiX3F1ZXJ5J10pPygkX1BPU1RbJ2RiX3F1ZXJ5J10pOigiU0hPVyBEQVRBQkFTRVM7XG5TRUxFQ1QgKiBGUk9NIHVzZXI7IikpLiI8L3RleHRhcmVhPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCIgUnVuIFNRTCBxdWVyeSBcIj48L2Rpdj48YnI+PGJyPiI7DQogZWNobyAiPC9mb3JtPiI7DQogZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsgZGllKCk7DQogfQ0KaWYoaXNzZXQoJF9HRVRbJ0RlbGV0ZSddKSkNCiB7DQogICBAdW5saW5rKF9fRklMRV9fKTsNCiB9DQppZihpc3NldCgkX0dFVFsndG1wJ10pKQ0KIHsNCiAgIEB1bmxpbmsoIi90bXAvYmRwbCIpOw0KICAgQHVubGluaygiL3RtcC9iYWNrIik7DQogICBAdW5saW5rKCIvdG1wL2JkIik7DQogICBAdW5saW5rKCIvdG1wL2JkLmMiKTsNCiAgIEB1bmxpbmsoIi90bXAvZHAiKTsNCiAgIEB1bmxpbmsoIi90bXAvZHBjIik7DQogICBAdW5saW5rKCIvdG1wL2RwYy5jIik7DQogICBAdW5saW5rKCIvdG1wL3ByeHBsIik7DQogICBAdW5saW5rKCIvdG1wL2dyZXAudHh0Iik7DQogfQ0KaWYoaXNzZXQoJF9HRVRbJ3BocGluaSddKSkNCnsNCmVjaG8gJGhlYWQ7DQpmdW5jdGlvbiBVX3ZhbHVlKCR2YWx1ZSkNCiB7DQogaWYgKCR2YWx1ZSA9PSAnJykgcmV0dXJuICc8aT5ubyB2YWx1ZTwvaT4nOw0KIGlmIChAaXNfYm9vbCgkdmFsdWUpKSByZXR1cm4gJHZhbHVlID8gJ1RSVUUnIDogJ0ZBTFNFJzsNCiBpZiAoJHZhbHVlID09PSBudWxsKSByZXR1cm4gJ05VTEwnOw0KIGlmIChAaXNfb2JqZWN0KCR2YWx1ZSkpICR2YWx1ZSA9IChhcnJheSkgJHZhbHVlOw0KIGlmIChAaXNfYXJyYXkoJHZhbHVlKSkNCiB7DQogQG9iX3N0YXJ0KCk7DQogcHJpbnRfcigkdmFsdWUpOw0KICR2YWx1ZSA9IEBvYl9nZXRfY29udGVudHMoKTsNCiBAb2JfZW5kX2NsZWFuKCk7DQogfQ0KIHJldHVybiBVX3dvcmR3cmFwKChzdHJpbmcpICR2YWx1ZSk7DQogfQ0KZnVuY3Rpb24gVV93b3Jkd3JhcCgkc3RyKQ0KIHsNCiAkc3RyID0gQHdvcmR3cmFwKEBodG1sc3BlY2lhbGNoYXJzKCRzdHIpLCAxMDAsICc8d2JyIC8+JywgdHJ1ZSk7DQogcmV0dXJuIEBwcmVnX3JlcGxhY2UoJyEoJlteO10qKTx3YnIgLz4oW147XSo7KSEnLCAnJDEkMjx3YnIgLz4nLCAkc3RyKTsNCiB9DQppZiAoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldF9hbGwnKSkNCiB7DQogJHIgPSAnJzsNCiBlY2hvICc8dGFibGUgd2lkdGg9MTAwJT4nLCAnPHRyPjx0ZCBiZ2NvbG9yPSMwQzBDMEM+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxkaXYgYWxpZ249Y2VudGVyPjxiPkRpcmVjdGl2ZTwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48dGQgYmdjb2xvcj0jMEMwQzBDPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48ZGl2IGFsaWduPWNlbnRlcj48Yj5Mb2NhbCBWYWx1ZTwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48dGQgYmdjb2xvcj0jMEMwQzBDPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48ZGl2IGFsaWduPWNlbnRlcj48Yj5NYXN0ZXIgVmFsdWU8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj4nOw0KIGZvcmVhY2ggKEBpbmlfZ2V0X2FsbCgpIGFzICRrZXk9PiR2YWx1ZSkNCiAgew0KICAkciAuPSAnPHRyPjx0ZD4nLndzKDMpLic8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4nLiRrZXkuJzwvYj48L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy5VX3ZhbHVlKCR2YWx1ZVsnbG9jYWxfdmFsdWUnXSkuJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy5VX3ZhbHVlKCR2YWx1ZVsnZ2xvYmFsX3ZhbHVlJ10pLic8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj4nOw0KICB9DQogZWNobyAkcjsNCiBlY2hvICc8L3RhYmxlPic7DQogfQ0KZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsNCmRpZSgpOw0KfQ0KaWYoaXNzZXQoJF9HRVRbJ2NwdSddKSkNCiB7DQogICBlY2hvICRoZWFkOw0KICAgZWNobyAnPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZCBiZ2NvbG9yPSMwQzBDMEM+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxiPkNQVTwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+PHRhYmxlIHdpZHRoPTEwMCU+JzsNCiAgICRjcHVmID0gQGZpbGUoImNwdWluZm8iKTsNCiAgIGlmKCRjcHVmKQ0KICAgIHsNCiAgICAgICRjID0gQHNpemVvZigkY3B1Zik7DQogICAgICBmb3IoJGk9MDskaTwkYzskaSsrKQ0KICAgICAgICB7DQogICAgICAgICAgJGluZm8gPSBAZXhwbG9kZSgiOiIsJGNwdWZbJGldKTsNCiAgICAgICAgICBpZigkaW5mb1sxXT09IiIpeyAkaW5mb1sxXT0iLS0tIjsgfQ0KICAgICAgICAgICRyIC49ICc8dHI+PHRkPicud3MoMykuJzxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPicudHJpbSgkaW5mb1swXSkuJzwvYj48L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy50cmltKCRpbmZvWzFdKS4nPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+JzsNCiAgICAgICAgfQ0KICAgICAgZWNobyAkcjsNCiAgICB9DQogICBlbHNlDQogICAgew0KICAgICAgZWNobyAnPHRyPjx0ZD4nLndzKDMpLic8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4gLS0tIDwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPic7DQogICAgfQ0KICAgZWNobyAnPC90YWJsZT4nOw0KICAgZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsNCiAgIGRpZSgpOw0KIH0NCmlmKGlzc2V0KCRfR0VUWydtZW0nXSkpDQogew0KICAgZWNobyAkaGVhZDsNCiAgIGVjaG8gJzx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQgYmdjb2xvcj0jMEMwQzBDPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj5NRU1PUlk8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPjx0YWJsZSB3aWR0aD0xMDAlPic7DQogICAkbWVtZiA9IEBmaWxlKCJtZW1pbmZvIik7DQogICBpZigkbWVtZikNCiAgICB7DQogICAgICAkYyA9IHNpemVvZigkbWVtZik7DQogICAgICBmb3IoJGk9MDskaTwkYzskaSsrKQ0KICAgICAgICB7DQogICAgICAgICAgJGluZm8gPSBleHBsb2RlKCI6IiwkbWVtZlskaV0pOw0KICAgICAgICAgIGlmKCRpbmZvWzFdPT0iIil7ICRpbmZvWzFdPSItLS0iOyB9DQogICAgICAgICAgJHIgLj0gJzx0cj48dGQ+Jy53cygzKS4nPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jy50cmltKCRpbmZvWzBdKS4nPC9iPjwvZm9udD48L3RkPjx0ZD48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj4nLnRyaW0oJGluZm9bMV0pLic8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj4nOw0KICAgICAgICB9DQogICAgICBlY2hvICRyOw0KICAgIH0NCiAgIGVsc2UNCiAgICB7DQogICAgICBlY2hvICc8dHI+PHRkPicud3MoMykuJzxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiAtLS0gPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+JzsNCiAgICB9DQogICBlY2hvICc8L3RhYmxlPic7DQogICBlY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOw0KICAgZGllKCk7DQogfQ0KDQppZihpc3NldCgkX0dFVFsnZG1lc2coOCknXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnZG1lc2coOCknO30NCmlmKGlzc2V0KCRfR0VUWydmcmVlJ10pKQ0KIHskX1BPU1RbJ2NtZCddID0gJ2ZyZWUnO30NCmlmKGlzc2V0KCRfR0VUWydhY2NvdW50cyddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICdjYXQgL3Zhci9jcGFuZWwvYWNjb3VudGluZy5sb2cnO30NCmlmKGlzc2V0KCRfR0VUWyd2bXN0YXQnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAndm1zdGF0Jzt9DQppZihpc3NldCgkX0dFVFsnbHNwY2knXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnbHNwY2knO30NCmlmKGlzc2V0KCRfR0VUWydsc2RldiddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICdsc2Rldic7fQ0KaWYoaXNzZXQoJF9HRVRbJ3Byb2NpbmZvJ10pKQ0KIHskX1BPU1RbJ2NtZCddPSdjYXQgL3Byb2MvY3B1aW5mbyc7fQ0KaWYoaXNzZXQoJF9HRVRbJ3ZlcnNpb24nXSkpDQogeyRfUE9TVFsnY21kJ109J2NhdCAvcHJvYy92ZXJzaW9uJzt9DQppZihpc3NldCgkX0dFVFsnaW50ZXJydXB0cyddKSkNCiB7JF9QT1NUWydjbWQnXT0nY2F0IC9wcm9jL2ludGVycnVwdHMnO30NCmlmKGlzc2V0KCRfR0VUWydyZWFsaXNlMSddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICdjYXQgL2V0Yy8qcmVhbGlzZSc7fQ0KaWYoaXNzZXQoJF9HRVRbJ3NlcnZpY2UnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnc2VydmljZSAtLXN0YXR1cy1hbGwnO30NCmlmKGlzc2V0KCRfR0VUWydpZmNvbmZpZyddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICdpZmNvbmZpZyc7fQ0KaWYoaXNzZXQoJF9HRVRbJ3cnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAndyc7fQ0KaWYoaXNzZXQoJF9HRVRbJ3dobyddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICd3aG8nO30NCmlmKGlzc2V0KCRfR0VUWyd1cHRpbWUnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAndXB0aW1lJzt9DQppZihpc3NldCgkX0dFVFsnbGFzdCddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICdsYXN0IC1uIDEwJzt9DQppZihpc3NldCgkX0dFVFsncHNhdXgnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAncHMgLWF1eCc7fQ0KaWYoaXNzZXQoJF9HRVRbJ25ldHN0YXQnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnbmV0c3RhdCAtYSc7fQ0KaWYoaXNzZXQoJF9HRVRbJ3NiaW4nXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnbHMgLWFsIC91c3Ivc2Jpbic7fQ0KaWYoaXNzZXQoJF9HRVRbJ2xzYXR0ciddKSkNCiB7JF9QT1NUWydjbWQnXSA9ICdsc2F0dHIgLXZhJzt9DQppZihpc3NldCgkX0dFVFsnc3lzbG9nJ10pKQ0KIHskX1BPU1RbJ2NtZCddPSdlZGl0X2ZpbGUnOyRfUE9TVFsnZV9uYW1lJ10gPSAnL2V0Yy9zeXNsb2cuY29uZic7fQ0KaWYoaXNzZXQoJF9HRVRbJ2ZzdGFiJ10pKQ0KIHskX1BPU1RbJ2NtZCddPSdlZGl0X2ZpbGUnOyRfUE9TVFsnZV9uYW1lJ10gPSAnL2V0Yy9mc3RhYic7fQ0KaWYoaXNzZXQoJF9HRVRbJ2ZkaXNrJ10pKQ0KIHskX1BPU1RbJ2NtZCddID0gJ2ZkaXNrIC1sJzt9DQppZihpc3NldCgkX0dFVFsnZGYnXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnZGYgLWgnO30NCmlmKGlzc2V0KCRfR0VUWydyZWFsaXNlMiddKSkNCiB7JF9QT1NUWydjbWQnXT0nZWRpdF9maWxlJzskX1BPU1RbJ2VfbmFtZSddID0gJy9ldGMvaXNzdWUubmV0Jzt9DQppZihpc3NldCgkX0dFVFsnaG9zdHMnXSkpDQogeyRfUE9TVFsnY21kJ109J2VkaXRfZmlsZSc7JF9QT1NUWydlX25hbWUnXSA9ICcvZXRjL2hvc3RzJzt9DQppZihpc3NldCgkX0dFVFsncmVzb2x2J10pKQ0KIHskX1BPU1RbJ2NtZCddPSdlZGl0X2ZpbGUnOyRfUE9TVFsnZV9uYW1lJ10gPSAnL2V0Yy9yZXNvbHYuY29uZic7fQ0KaWYoaXNzZXQoJF9HRVRbJ3N5c3RlbWluZm8nXSkpDQogeyRfUE9TVFsnY21kJ10gPSAnc3lzdGVtaW5mbyc7fQ0KaWYoaXNzZXQoJF9HRVRbJ3NoYWRvdyddKSkNCiB7JF9QT1NUWydjbWQnXT0nZWRpdF9maWxlJzskX1BPU1RbJ2VfbmFtZSddID0gJy9ldGMvc2hhZG93Jzt9DQppZihpc3NldCgkX0dFVFsncGFzc3dkJ10pKQ0KIHskX1BPU1RbJ2NtZCddPSdlZGl0X2ZpbGUnOyRfUE9TVFsnZV9uYW1lJ10gPSAnL2V0Yy9wYXNzd2QnO30NCiNpZihpc3NldCgkX0dFVFsnJ10pKQ0KIyB7JF9QT1NUWydjbWQnXSA9ICcnO30NCg0KJGxhbmc9YXJyYXkoDQonZW5nX3RleHQxJyA9PidMYXN0IGV4ZWN1dGVkIGNvbW1hbmQnLA0KJ2VuZ190ZXh0MicgPT4nRXhlY3V0ZSBjb21tYW5kIG9uIHNlcnZlcicsDQonZW5nX3RleHQzJyA9PidSdW4gY29tbWFuZCcsDQonZW5nX3RleHQ0JyA9PidXb3JrIGRpcmVjdG9yeScsDQonZW5nX3RleHQ1JyA9PidVcGxvYWQgZmlsZXMgb24gc2VydmVyJywNCidlbmdfdGV4dDYnID0+J0xvY2FsIGZpbGUnLA0KJ2VuZ190ZXh0NycgPT4nTG9jYXRlIEltcG9ydGFudCBGaWxlcycsDQonZW5nX3RleHQ4JyA9PidTZWxlY3QgYWxpYXMnLA0KJ2VuZ19idXR0MScgPT4nRXhlY3V0ZScsDQonZW5nX2J1dHQyJyA9PidVcGxvYWQnLA0KJ2VuZ190ZXh0OScgPT4nYmFzaCBwb3J0IGJpbmQnLA0KJ2VuZ190ZXh0MTAnPT4nUG9ydCcsDQonZW5nX3RleHQxMSc9PidQYXNzd29yZCBmb3IgYWNjZXNzJywNCidlbmdfYnV0dDMnID0+J0JpbmQnLA0KJ2VuZ190ZXh0MTInPT4nYmFjay1jb25uZWN0JywNCidlbmdfdGV4dDEzJz0+J0lQJywNCidlbmdfdGV4dDE0Jz0+J1BvcnQnLA0KJ2VuZ19idXR0NCcgPT4nQ29ubmVjdCcsDQonZW5nX3RleHQxNSc9PidVcGxvYWQgZmlsZXMgZnJvbSByZW1vdGUgc2VydmVyJywNCidlbmdfdGV4dDE2Jz0+J1dpdGgnLA0KJ2VuZ190ZXh0MTcnPT4nUmVtb3RlIGZpbGUnLA0KJ2VuZ190ZXh0MTgnPT4nTG9jYWwgZmlsZScsDQonZW5nX3RleHQxOSc9PidFeHBsb2l0cycsDQonZW5nX3RleHQyMCc9PidVc2UnLA0KJ2VuZ190ZXh0MjEnPT4nJm5ic3A7TmV3IG5hbWUnLA0KJ2VuZ190ZXh0MjInPT4nZGF0YXBpcGUnLA0KJ2VuZ190ZXh0MjMnPT4nTG9jYWwgcG9ydCcsDQonZW5nX3RleHQyNCc9PidSZW1vdGUgaG9zdCcsDQonZW5nX3RleHQyNSc9PidSZW1vdGUgcG9ydCcsDQonZW5nX3RleHQyNic9PidVc2UnLA0KJ2VuZ19idXR0NScgPT4nUnVuJywNCidlbmdfdGV4dDI4Jz0+J1dvcmsgaW4gc2FmZV9tb2RlJywNCidlbmdfdGV4dDI5Jz0+J0FDQ0VTUyBERU5JRUQnLA0KJ2VuZ19idXR0NicgPT4nQ2hhbmdlJywNCidlbmdfdGV4dDMwJz0+J0NhdCBmaWxlJywNCidlbmdfYnV0dDcnID0+J1Nob3cnLA0KJ2VuZ190ZXh0MzEnPT4nRmlsZSBub3QgZm91bmQnLA0KJ2VuZ190ZXh0MzInPT4nRXZhbCBQSFAgY29kZScsDQonZW5nX3RleHQzMyc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIgd2l0aCBjVVJMIGZ1bmN0aW9ucyhQSFAgPD0gNC40LjIsIDUuMS40KScsDQonZW5nX2J1dHQ4JyA9PidUZXN0JywNCidlbmdfdGV4dDM0Jz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSB3aXRoIGluY2x1ZGUgZnVuY3Rpb24nLA0KJ2VuZ190ZXh0MzUnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlIHdpdGggbG9hZCBmaWxlIGluIG15c3FsJywNCidlbmdfdGV4dDM2Jz0+J0RhdGFiYXNlIC4gVGFibGUnLA0KJ2VuZ190ZXh0MzcnPT4nTG9naW4nLA0KJ2VuZ190ZXh0MzgnPT4nUGFzc3dvcmQnLA0KJ2VuZ190ZXh0MzknPT4nRGF0YWJhc2UnLA0KJ2VuZ190ZXh0NDAnPT4nRHVtcCBkYXRhYmFzZSB0YWJsZScsDQonZW5nX2J1dHQ5JyA9PidEdW1wJywNCidlbmdfdGV4dDQxJz0+J1NhdmUgZHVtcCBpbiBmaWxlJywNCidlbmdfdGV4dDQyJz0+J0VkaXQgZmlsZXMnLA0KJ2VuZ190ZXh0NDMnPT4nRmlsZSBmb3IgZWRpdCcsDQonZW5nX2J1dHQxMCc9PidTYXZlJywNCidlbmdfdGV4dDQ0Jz0+J0NhblwndCBlZGl0IGZpbGUhIE9ubHkgcmVhZCBhY2Nlc3MhJywNCidlbmdfdGV4dDQ1Jz0+J0ZpbGUgc2F2ZWQnLA0KJ2VuZ190ZXh0NDYnPT4nU2hvdyBwaHBpbmZvKCknLA0KJ2VuZ190ZXh0NDcnPT4nU2hvdyB2YXJpYWJsZXMgZnJvbSBwaHAuaW5pJywNCidlbmdfdGV4dDQ4Jz0+J0RlbGV0ZSB0ZW1wIGZpbGVzJywNCidlbmdfYnV0dDExJz0+J0VkaXQgZmlsZScsDQonZW5nX3RleHQ0OSc9PidEZWxldGUgc2NyaXB0IGZyb20gc2VydmVyJywNCidlbmdfdGV4dDUwJz0+J1ZpZXcgY3B1IGluZm8nLA0KJ2VuZ190ZXh0NTEnPT4nVmlldyBtZW1vcnkgaW5mbycsDQonZW5nX3RleHQ1Mic9PidGaW5kIHRleHQnLA0KJ2VuZ190ZXh0NTMnPT4nSW4gZGlycycsDQonZW5nX3RleHQ1NCc9PidGaW5kIHRleHQgaW4gZmlsZXMnLA0KJ2VuZ19idXR0MTInPT4nRmluZCcsDQonZW5nX3RleHQ1NSc9PidPbmx5IGluIGZpbGVzJywNCidlbmdfdGV4dDU2Jz0+J05vdGhpbmcgOignLA0KJ2VuZ190ZXh0NTcnPT4nQ3JlYXRlL0RlbGV0ZSBGaWxlL0RpcicsDQonZW5nX3RleHQ1OCc9PiduYW1lJywNCidlbmdfdGV4dDU5Jz0+J2ZpbGUnLA0KJ2VuZ190ZXh0NjAnPT4nZGlyJywNCidlbmdfYnV0dDEzJz0+J0NyZWF0ZS9EZWxldGUnLA0KJ2VuZ190ZXh0NjEnPT4nRmlsZSBjcmVhdGVkJywNCidlbmdfdGV4dDYyJz0+J0RpciBjcmVhdGVkJywNCidlbmdfdGV4dDYzJz0+J0ZpbGUgZGVsZXRlZCcsDQonZW5nX3RleHQ2NCc9PidEaXIgZGVsZXRlZCcsDQonZW5nX3RleHQ2NSc9PidDcmVhdGUnLA0KJ2VuZ190ZXh0NjYnPT4nRGVsZXRlJywNCidlbmdfdGV4dDY3Jz0+J0Nob3duL0NoZ3JwL0NobW9kJywNCidlbmdfdGV4dDY4Jz0+J0NvbW1hbmQnLA0KJ2VuZ190ZXh0NjknPT4ncGFyYW0xJywNCidlbmdfdGV4dDcwJz0+J3BhcmFtMicsDQonZW5nX3RleHQ3MSc9PiJTZWNvbmQgY29tbWFuZHMgcGFyYW0gaXM6XHJcbi0gZm9yIENIT1dOIC0gbmFtZSBvZiBuZXcgb3duZXIgb3IgVUlEXHJcbi0gZm9yIENIR1JQIC0gZ3JvdXAgbmFtZSBvciBHSURcclxuLSBmb3IgQ0hNT0QgLSAwNzc3LCAwNzU1Li4uIiwNCidlbmdfdGV4dDcyJz0+J1RleHQgZm9yIGZpbmQnLA0KJ2VuZ190ZXh0NzMnPT4nRmluZCBpbiBmb2xkZXInLA0KJ2VuZ190ZXh0NzQnPT4nRmluZCBpbiBmaWxlcycsDQonZW5nX3RleHQ3NSc9PicqIHlvdSBjYW4gdXNlIHJlZ2V4cCcsDQonZW5nX3RleHQ3Nic9PidTZWFyY2ggdGV4dCBpbiBmaWxlcyB2aWEgZmluZCcsDQonZW5nX3RleHQ4MCc9PidUeXBlJywNCidlbmdfdGV4dDgxJz0+J05ldFRvb2xzJywNCidlbmdfdGV4dDgyJz0+J0RhdGFiYXNlcycsDQonZW5nX3RleHQ4Myc9PidSdW4gU1FMIHF1ZXJ5JywNCidlbmdfdGV4dDg0Jz0+J1NRTCBxdWVyeScsDQonZW5nX3RleHQ4NSc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUgd2l0aCBjb21tYW5kcyBleGVjdXRlIHZpYSBNU1NRTCBzZXJ2ZXInLA0KJ2VuZ190ZXh0ODYnPT4nRG93bmxvYWQgZmlsZXMgZnJvbSBzZXJ2ZXInLA0KJ2VuZ19idXR0MTQnPT4nRG93bmxvYWQnLA0KJ2VuZ190ZXh0ODcnPT4nRG93bmxvYWQgZmlsZXMgZnJvbSByZW1vdGUgZnRwLXNlcnZlcicsDQonZW5nX3RleHQ4OCc9PidTZXJ2ZXIgOiBQb3J0JywNCidlbmdfdGV4dDg5Jz0+J0ZpbGUgb24gZnRwJywNCidlbmdfdGV4dDkwJz0+J1RyYW5zZmVyIG1vZGUnLA0KJ2VuZ190ZXh0OTEnPT4nQXJjaGl2YXRpb24nLA0KJ2VuZ190ZXh0OTInPT4nd2l0aG91dCBhcmNoLicsDQonZW5nX3RleHQ5Myc9PidGVFAnLA0KJ2VuZ190ZXh0OTQnPT4nRlRQLWJydXRlZm9yY2UnLA0KJ2VuZ190ZXh0OTUnPT4nVXNlcnMgbGlzdCcsDQonZW5nX3RleHQ5Nic9PidDYW5cJ3QgZ2V0IHVzZXJzIGxpc3QnLA0KJ2VuZ190ZXh0OTcnPT4nY2hlY2tlZDogJywNCidlbmdfdGV4dDk4Jz0+J3N1Y2Nlc3M6ICcsDQonZW5nX3RleHQ5OSc9PicvZXRjL3Bhc3N3ZCcsDQonZW5nX3RleHQxMDAnPT4nU2VuZCBmaWxlIHRvIHJlbW90ZSBmdHAgc2VydmVyJywNCidlbmdfdGV4dDEwMSc9PidVc2UgcmV2ZXJzZSAodjQgVGVhbSAtPiA0MDFibWgpJywNCidlbmdfdGV4dDEwMic9PidNYWlsJywNCidlbmdfdGV4dDEwMyc9PidTZW5kIGVtYWlsJywNCidlbmdfdGV4dDEwNCc9PidTZW5kIGZpbGUgdG8gZW1haWwnLA0KJ2VuZ190ZXh0MTA1Jz0+J1RvJywNCidlbmdfdGV4dDEwNic9PidGcm9tJywNCidlbmdfdGV4dDEwNyc9PidTdWJqJywNCidlbmdfYnV0dDE1Jz0+J1NlbmQnLA0KJ2VuZ190ZXh0MTA4Jz0+J01haWwnLA0KJ2VuZ190ZXh0MTA5Jz0+J0hpZGUnLA0KJ2VuZ190ZXh0MTEwJz0+J1Nob3cnLA0KJ2VuZ190ZXh0MTExJz0+J1NRTC1TZXJ2ZXIgOiBQb3J0JywNCidlbmdfdGV4dDExMic9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUgd2l0aCBmdW5jdGlvbiBtYl9zZW5kX21haWwgKFBIUCA8PSA0LjAtNC4yLjIsIDUueCknLA0KJ2VuZ190ZXh0MTEzJz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSwgdmlldyBkaXIgbGlzdCB2aWEgaW1hcF9saXN0IChQSFAgPD0gNS4xLjIpJywNCidlbmdfdGV4dDExNCc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUsIHZpZXcgZmlsZSBjb250ZXN0IHZpYSBpbWFwX2JvZHkgKFBIUCA8PSA1LjEuMiknLA0KJ2VuZ190ZXh0MTE1Jz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSwgY29weSBmaWxlIHZpYSBjb3B5W2NvbXByZXNzLnpsaWI6Ly9dIChQSFAgPD0gNC40LjIsIDUuMS4yKScsDQonZW5nX3RleHQxMTYnPT4nQ29weSBmcm9tJywNCidlbmdfdGV4dDExNyc9Pid0bycsDQonZW5nX3RleHQxMTgnPT4nRmlsZSBjb3BpZWQnLA0KJ2VuZ190ZXh0MTE5Jz0+J0NhbnQgY29weSBmaWxlJywNCidlbmdfdGV4dDEyMCc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUgdmlhIGluaV9yZXN0b3JlIChQSFAgPD0gNC40LjQsIDUuMS42KSBieSBOU1QnLA0KJ2VuZ190ZXh0MTIxJz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgdmlldyBkaXIgbGlzdCB2aWEgZm9wZW4gKFBIUCB2NC40LjAgbWVtb3J5IGxlYWspIGJ5IE5TVCcsDQonZW5nX3RleHQxMjInPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCB2aWV3IGRpciBsaXN0IHZpYSBnbG9iIChQSFAgPD0gNS4yLngpJywNCidlbmdfdGV4dDEyMyc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIHJlYWQgKi5iemlwIGZpbGUgdmlhIFtjb21wcmVzcy5iemlwMjovL10gKFBIUCA8PSA1LjIuMSknLA0KJ2VuZ190ZXh0MTI0Jz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgYWRkIGRhdGEgdG8gZmlsZSB2aWEgZXJyb3JfbG9nW3BocDovL10gKFBIUCA8PSA1LjEuNCwgNC40LjIpJywNCidlbmdfdGV4dDEyNSc9PidEYXRhJywNCidlbmdfdGV4dDEyNic9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIGNyZWF0ZSBmaWxlIHZpYSBzZXNzaW9uX3NhdmVfcGF0aFtOVUxMLWJ5dGVdIChQSFAgPD0gNS4yLjApJywNCidlbmdfdGV4dDEyNyc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIGFkZCBkYXRhIHRvIGZpbGUgdmlhIHJlYWRmaWxlW3BocDovL10gKFBIUCA8PSA1LjIuMSwgNC40LjQpJywNCidlbmdfdGV4dDEyOCc9PidNb2RpZnkvQWNjZXNzIGRhdGUodG91Y2gpJywNCidlbmdfdGV4dDEyOSc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIGNyZWF0ZSBmaWxlIHZpYSBmb3BlbltzcnBhdGg6Ly9dIChQSFAgdjUuMi4wKScsDQonZW5nX3RleHQxMzAnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCByZWFkICouemlwIGZpbGUgdmlhIFt6aXA6Ly9dIChQSFAgPD0gNS4yLjEpJywNCidlbmdfdGV4dDEzMSc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIHZpZXcgZmlsZSBjb250ZXN0IHZpYSBzeW1saW5rKCkgKFBIUCA8PSA1LjIuMSknLA0KJ2VuZ190ZXh0MTMyJz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgdmlldyBkaXIgbGlzdCB2aWEgc3ltbGluaygpIChQSFAgPD0gNS4yLjEpJywNCidlbmdfdGV4dDEzMyc9PicnLA0KJ2VuZ190ZXh0MTM0Jz0+J0RhdGFiYXNlIGNyYWNrZXInLA0KJ2VuZ190ZXh0MTM1Jz0+J0RpY3Rpb25hcnknLA0KJ2VuZ190ZXh0MTM2Jz0+J0NyZWF0aW5nIGV2aWwgc3ltbGluaycsDQonZW5nX3RleHQxMzcnPT4nVXNlZnVsJywNCidlbmdfdGV4dDEzOCc9PidEYW5nZXJvdXMnLA0KJ2VuZ190ZXh0MTM5Jz0+J01haWwgQm9tYmVyJywNCidlbmdfdGV4dDE0MCc9PidEb1MnLA0KJ2VuZ190ZXh0MTQxJz0+J1VTRSBDQVJFRlVMWSAtIFRoaXMgbWF5IGhhcm0geW91ciB3ZWIgZG9tYWluLicsDQonZW5nX2VycjAnPT4nRXJyb3IhIENhblwndCB3cml0ZSB0byB0aGUgZmlsZSAnLA0KJ2VuZ19lcnIxJz0+J0Vycm9yISBDYW5cJ3QgcmVhZCB0aGUgZmlsZSAnLA0KJ2VuZ19lcnIyJz0+J0Vycm9yISBDYW5cJ3QgY3JlYXRlICcsDQonZW5nX2VycjMnPT4nRXJyb3IhIENhblwndCBjb25uZWN0IHRvIEZUUCcsDQonZW5nX2VycjQnPT4nRXJyb3IhIENhblwndCBsb2dpbiBvbiBmdHAgc2VydmVyJywNCidlbmdfZXJyNSc9PidFcnJvciEgQ2FuXCd0IGNoYW5nZSBkaXIgb24gRlRQJywNCidlbmdfZXJyNic9PidFcnJvciEgQ2FuXCd0IHNlbnQgbWFpbCcsDQonZW5nX2VycjcnPT4nTWFpbCBzZW5kJywNCik7DQoNCiRhbGlhc2VzPWFycmF5KA0KJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1sb2NhdGUnPT4nJywNCidsb2NhdGUgaHR0cGQuY29uZiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBodHRwZC5jb25mID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSB2aG9zdHMuY29uZiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSB2aG9zdHMuY29uZiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgcHJvZnRwZC5jb25mIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIHByb2Z0cGQuY29uZiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgcHN5Ym5jLmNvbmYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgcHN5Ym5jLmNvbmYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIG15LmNvbmYgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgbXkuY29uZiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgYWRtaW4ucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGFkbWluLnBocCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgY2ZnLnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBjZmcucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBjb25mLnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBjb25mLnBocCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgY29uZmlnLmRhdCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBjb25maWcuZGF0ID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBjb25maWcucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGNvbmZpZy5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIGNvbmZpZy5pbmMgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgY29uZmlnLmluYyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgY29uZmlnLmluYy5waHAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgY29uZmlnLmluYy5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIGNvbmZpZy5kZWZhdWx0LnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBjb25maWcuZGVmYXVsdC5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIC5jb25mIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlICIuY29uZiIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIC5wd2QgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgIi5wd2QiID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSAuc3FsIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlICIuc3FsIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgLmh0cGFzc3dkIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlICIuaHRwYXNzd2QiID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSAuYmFzaF9oaXN0b3J5IGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlICIuYmFzaF9oaXN0b3J5IiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgLm15c3FsX2hpc3RvcnkgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgIi5teXNxbF9oaXN0b3J5IiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgYmFja3VwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGJhY2t1cCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidsb2NhdGUgZHVtcCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBkdW1wID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBwcml2IGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIHByaXYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXRhcic9PicnLA0KJ3RhciAtY3p2ZiBhbGwudGd6IC1UIC90bXAvZ3JlcC50eHQnPT4ndGFyIC1jenZmIGFsbC50Z3ogLVQgL3RtcC9ncmVwLnR4dCcsDQonLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTEnPT4nJywNCidsb2NhdGUgYWNjZXNzX2xvZyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBhY2Nlc3NfbG9nID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBlcnJvcl9sb2cgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgZXJyb3JfbG9nID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2xvY2F0ZSBhY2Nlc3MubG9nIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGFjY2Vzcy5sb2cgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlIGVycm9yLmxvZyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBlcnJvci5sb2cgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonbG9jYXRlICIubG9nIiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSAiLmxvZyIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTInPT4nJywNCidjYXQgL3Zhci9sb2cvaHR0cGQvYWNjZXNzX2xvZyB8IGdyZXAgcGFzcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2NhdCAvdmFyL2xvZy9odHRwZC9hY2Nlc3NfbG9nIHwgZ3JlcCBwYXNzID4+IC90bXAvZ3JlcC50eHQnLA0KJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1maW5kJz0+JycsDQonZmluZCBzdWlkIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAuIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBzZ2lkIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBzZ2lkIGZpbGVzIGluIGN1cnJlbnQgZGlyID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAuIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBhbGwgd3JpdGFibGUgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtcGVybSAtMiAtbHMgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgYWxsIHdyaXRhYmxlIGZpbGVzIGluIGN1cnJlbnQgZGlyID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAuIC10eXBlIGYgLXBlcm0gLTIgLWxzICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAgLXR5cGUgZCAtcGVybSAtMiAtbHMgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzIGluIGN1cnJlbnQgZGlyID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAuIC10eXBlIGQgLXBlcm0gLTIgLWxzICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXBlcm0gLTIgLWxzICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMgaW4gY3VycmVudCBkaXIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC4gLXBlcm0gLTIgLWxzICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSAuYmFzaF9oaXN0b3J5ICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGFsbCAubXlzcWxfaGlzdG9yeSBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5teXNxbF9oaXN0b3J5ICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGFsbCAuZmV0Y2htYWlscmMgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgaHR0cGQuY29uZiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGh0dHBkLmNvbmYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCB2aG9zdHMuY29uZiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIHZob3N0cy5jb25mID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgcHJvZnRwZC5jb25mIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgcHJvZnRwZC5jb25mID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgYWRtaW4ucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgYWRtaW4ucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgY29uZmlnKiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lICJjb25maWcqIiAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBjZmcucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgY2ZnLnBocCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGNvbmYucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZi5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBjb25maWcuZGF0IGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmRhdCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIGNvbmZpZy5waHAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgY29uZmlnLmluYyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGNvbmZpZy5pbmMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCBjb25maWcuaW5jLnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGNvbmZpZy5pbmMucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgY29uZmlnLmRlZmF1bHQucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmRlZmF1bHQucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgKi5jb25mIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgIiouY29uZiIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCAqLnB3ZCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lICIqLnB3ZCIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCAqLnNxbCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lICIqLnNxbCIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCAqYmFja3VwKiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lICIqYmFja3VwKiIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCAqZHVtcCogZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSAiKmR1bXAqIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSc9PicnLA0KJ2ZpbmQgL3Zhci8gYWNjZXNzX2xvZyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgL3Zhci8gLXR5cGUgZiAtbmFtZSBhY2Nlc3NfbG9nID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLA0KJ2ZpbmQgL3Zhci8gZXJyb3JfbG9nIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvdmFyLyAtdHlwZSBmIC1uYW1lIGVycm9yX2xvZyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIC92YXIvIGFjY2Vzcy5sb2cgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC92YXIvIC10eXBlIGYgLW5hbWUgYWNjZXNzLmxvZyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywNCidmaW5kIC92YXIvIGVycm9yLmxvZyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgL3Zhci8gLXR5cGUgZiAtbmFtZSBlcnJvci5sb2cgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonZmluZCAvdmFyLyAiKi5sb2ciIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvdmFyLyAtdHlwZSBmIC1uYW1lICIqLmxvZyIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsDQonLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSc9PidscyAtbGEnDQopOw0KJHRhYmxlX3VwMSAgPSAiPHRyPjx0ZCBiZ2NvbG9yPSMwQzBDMEM+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXI+KCspICI7DQokdGFibGVfdXAyICA9ICIgKC0pPC9kaXY+PC9iPjwvZm9udD48L3RkPjwvdHI+PHRyPjx0ZD4iOw0KJHRhYmxlX3VwMyAgPSAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9I0ZGRkZGRj48dHI+PHRkIGJnY29sb3I9IzBDMEMwQz4iOw0KJHRhYmxlX2VuZDEgPSAiPC90ZD48L3RyPiI7DQokYXJyb3cgPSAiIDxmb250IGZhY2U9V2ViZGluZ3MgY29sb3I9Z3JheT40PC9mb250PiI7DQokbGIgPSAiPGZvbnQgY29sb3I9YmxhY2s+WzwvZm9udD4iOw0KJHJiID0gIjxmb250IGNvbG9yPWJsYWNrPl08L2ZvbnQ+IjsNCiRmb250ID0gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiI7DQokdHMgPSAiPHRhYmxlIGNsYXNzPXRhYmxlMSB3aWR0aD0xMDAlIGFsaWduPWNlbnRlcj4iOw0KJHRlID0gIjwvdGFibGU+IjsNCiRmcyA9ICI8Zm9ybSBuYW1lPWZvcm0gbWV0aG9kPVBPU1Q+IjsNCiRmZSA9ICI8L2Zvcm0+IjsNCg0KaWYoaXNzZXQoJF9HRVRbJ3VzZXJzJ10pKQ0KIHsNCiBpZighJHVzZXJzPWdldF91c2VycygnL2V0Yy9wYXNzd2QnKSkgeyBlY2hvICI8Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5NiddLiI8L2ZvbnQ+PC9jZW50ZXI+IjsgfQ0KIGVsc2UNCiAgew0KICBlY2hvICc8Y2VudGVyPic7DQogIGZvcmVhY2goJHVzZXJzIGFzICR1c2VyKSB7IGVjaG8gJHVzZXIuIjxicj4iOyB9DQogIGVjaG8gJzwvY2VudGVyPic7DQogIH0NCiBlY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOyBkaWUoKTsNCiB9DQoNCmlmICghZW1wdHkoJF9QT1NUWydkaXInXSkpIHsgaWYoQGZ1bmN0aW9uX2V4aXN0cygnY2hkaXInKSl7QGNoZGlyKCRfUE9TVFsnZGlyJ10pO30gZWxzZSBpZihAZnVuY3Rpb25fZXhpc3RzKCdjaHJvb3QnKSl7IEBjaHJvb3QoJF9QT1NUWydkaXInXSk7fTsgfQ0KaWYgKGVtcHR5KCRfUE9TVFsnZGlyJ10pKXtpZihAZnVuY3Rpb25fZXhpc3RzKCdjaGRpcicpKXskZGlyID0gQGdldGN3ZCgpO307fWVsc2V7JGRpcj0kX1BPU1RbJ2RpciddO30NCiR1bml4ID0gMDsNCmlmKHN0cmxlbigkZGlyKT4xICYmICRkaXJbMV09PSI6IikgJHVuaXg9MDsgZWxzZSAkdW5peD0xOw0KaWYoZW1wdHkoJGRpcikpDQogew0KICRvcyA9IGdldGVudignT1MnKTsNCiBpZihlbXB0eSgkb3MpKXsgJG9zID0gQHBocF91bmFtZSgpOyB9DQogaWYoZW1wdHkoJG9zKSl7ICRvcyA9Ii0iOyAkdW5peD0xOyB9DQogZWxzZQ0KICAgIHsNCiAgICBpZihAZXJlZ2koIl53aW4iLCRvcykpIHsgJHVuaXggPSAwOyB9DQogICAgZWxzZSB7ICR1bml4ID0gMTsgfQ0KICAgIH0NCiB9DQoNCmlmKCFlbXB0eSgkX1BPU1RbJ3NfZGlyJ10pICYmICFlbXB0eSgkX1BPU1RbJ3NfdGV4dCddKSAmJiAhZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXSA9PSAic2VhcmNoX3RleHQiKQ0KICB7DQogICAgZWNobyAkaGVhZDsNCiAgICBpZighZW1wdHkoJF9QT1NUWydzX21hc2snXSkgJiYgIWVtcHR5KCRfUE9TVFsnbSddKSkgeyAkc3IgPSBuZXcgU2VhcmNoUmVzdWx0KCRfUE9TVFsnc19kaXInXSwkX1BPU1RbJ3NfdGV4dCddLCRfUE9TVFsnc19tYXNrJ10pOyB9DQogICAgZWxzZSB7ICRzciA9IG5ldyBTZWFyY2hSZXN1bHQoJF9QT1NUWydzX2RpciddLCRfUE9TVFsnc190ZXh0J10pOyB9DQogICAgJHNyLT5TZWFyY2hUZXh0KDAsMCk7DQogICAgJHJlcyA9ICRzci0+R2V0UmVzdWx0RmlsZXMoKTsNCiAgICAkZm91bmQgPSAkc3ItPkdldE1hdGNoZXNDb3VudCgpOw0KICAgICR0aXRsZXMgPSAkc3ItPkdldFRpdGxlcygpOw0KICAgICRyID0gIiI7DQogICAgaWYoJGZvdW5kID4gMCkNCiAgICB7DQogICAgICAkciAuPSAiPFRBQkxFIHdpZHRoPTEwMCU+IjsNCiAgICAgIGZvcmVhY2goJHJlcyBhcyAkZmlsZT0+JHYpDQogICAgICB7DQogICAgICAgICRyIC49ICI8VFI+IjsNCiAgICAgICAgJHIgLj0gIjxURCBjb2xzcGFuPTI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Ii53cygzKTsNCiAgICAgICAgJHIgLj0gKCEkdW5peCk/IHN0cl9yZXBsYWNlKCIvIiwiXFwiLCRmaWxlKSA6ICRmaWxlOw0KICAgICAgICAkciAuPSAiPC9iPjwvZm9udD48LyBURD4iOw0KICAgICAgICAkciAuPSAiPC9UUj4iOw0KICAgICAgICBmb3JlYWNoKCR2IGFzICRhPT4kYikNCiAgICAgICAgew0KICAgICAgICAgICRyIC49ICI8VFI+IjsNCiAgICAgICAgICAkciAuPSAiPFREIGFsaWduPWNlbnRlcj48Qj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4iLiRhLiI8L2ZvbnQ+PC9CPjwvVEQ+IjsNCiAgICAgICAgICAkciAuPSAiPFREPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiIud3MoMikuJGIuIjwvZm9udD48L1REPiI7DQogICAgICAgICAgJHIgLj0gIjwvVFI+XG4iOw0KICAgICAgICB9DQogICAgICB9DQogICAgICAkciAuPSAiPC9UQUJMRT4iOw0KICAgIGVjaG8gJHI7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICBlY2hvICI8UCBhbGlnbj1jZW50ZXI+PEI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTYnXS4iPC9CPjwvZm9udD48L1A+IjsNCiAgICB9DQogIGVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7DQogIGRpZSgpOw0KICB9DQoNCmlmKCEkc2FmZV9tb2RlICYmIHN0cnBvcyhleCgiZWNobyBhYmNobWIiKSwiaG1iIikhPTMpIHsgJHNhZmVfbW9kZSA9IDE7IH0NCiRTRVJWRVJfU09GVFdBUkUgPSBnZXRlbnYoJ1NFUlZFUl9TT0ZUV0FSRScpOw0KaWYoZW1wdHkoJFNFUlZFUl9TT0ZUV0FSRSkpeyAkU0VSVkVSX1NPRlRXQVJFID0gIi0iOyB9DQpmdW5jdGlvbiB3cygkaSkNCnsNCnJldHVybiBAc3RyX3JlcGVhdCgiJm5ic3A7IiwkaSk7DQp9DQpmdW5jdGlvbiBleCgkY2ZlKQ0Kew0KICRyZXMgPSAnJzsNCiBpZiAoIWVtcHR5KCRjZmUpKQ0KIHsNCiAgaWYoQGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKQ0KICAgew0KICAgIEBleGVjKCRjZmUsJHJlcyk7DQogICAgJHJlcyA9IGpvaW4oIlxuIiwkcmVzKTsNCiAgIH0NCiAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkNCiAgIHsNCiAgICAkcmVzID0gQHNoZWxsX2V4ZWMoJGNmZSk7DQogICB9DQogIGVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkNCiAgIHsNCiAgICBAb2Jfc3RhcnQoKTsNCiAgICBAc3lzdGVtKCRjZmUpOw0KICAgICRyZXMgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgQG9iX2VuZF9jbGVhbigpOw0KICAgfQ0KICBlbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkNCiAgIHsNCiAgICBAb2Jfc3RhcnQoKTsNCiAgICBAcGFzc3RocnUoJGNmZSk7DQogICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgICBAb2JfZW5kX2NsZWFuKCk7DQogICB9DQogIGVsc2VpZihAaXNfcmVzb3VyY2UoJGYgPSBAcG9wZW4oJGNmZSwiciIpKSkNCiAgew0KICAgJHJlcyA9ICIiOw0KICAgaWYoQGZ1bmN0aW9uX2V4aXN0cygnZnJlYWQnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpew0KICAgIHdoaWxlKCFAZmVvZigkZikpIHsgJHJlcyAuPSBAZnJlYWQoJGYsMTAyNCk7IH0NCiAgIH1lbHNlIGlmKEBmdW5jdGlvbl9leGlzdHMoJ2ZnZXRzJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpKXsNCiAgICB3aGlsZSghQGZlb2YoJGYpKSB7ICRyZXMgLj0gQGZnZXRzKCRmLDEwMjQpOyB9DQogICB9DQogICBAcGNsb3NlKCRmKTsNCiAgfQ0KICBlbHNlaWYoQGlzX3Jlc291cmNlKCRmID0gQHByb2Nfb3BlbigkY2ZlLGFycmF5KDEgPT4gYXJyYXkoInBpcGUiLCAidyIpKSwkcGlwZXMpKSkNCiAgew0KICAgJHJlcyA9ICIiOw0KICAgaWYoQGZ1bmN0aW9uX2V4aXN0cygnZnJlYWQnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpew0KICAgIHdoaWxlKCFAZmVvZigkcGlwZXNbMV0pKSB7JHJlcyAuPSBAZnJlYWQoJHBpcGVzWzFdLCAxMDI0KTt9DQogICB9ZWxzZSBpZihAZnVuY3Rpb25fZXhpc3RzKCdmZ2V0cycpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2Zlb2YnKSl7DQogICAgd2hpbGUoIUBmZW9mKCRwaXBlc1sxXSkpIHskcmVzIC49IEBmZ2V0cygkcGlwZXNbMV0sIDEwMjQpO30NCiAgIH0NCiAgIEBwcm9jX2Nsb3NlKCRmKTsNCiAgfQ0KICBlbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygncGNudGxfZXhlYycpJiZAZnVuY3Rpb25fZXhpc3RzKCdwY250bF9mb3JrJykpDQogICB7DQogICAgJHJlcyA9ICdbfl0gQmxpbmQgQ29tbWFuZCBFeGVjdXRpb24gdmlhIFtwY250bF9leGVjXVxuXG4nOw0KICAgICRwaWQgPSBAcGNudGxfZm9yaygpOw0KICAgIGlmICgkcGlkID09IC0xKSB7DQogICAgICRyZXMgLj0gJ1stXSBDb3VsZCBub3QgY2hpbGRyZW4gZm9yay4gRXhpdCc7DQogICAgfSBlbHNlIGlmICgkcGlkKSB7DQogICAgICAgICBpZiAoQHBjbnRsX3dpZmV4aXRlZCgkc3RhdHVzKSl7JHJlcyAuPSAnWytdIERvbmUhIENvbW1hbmQgIicuJGNmZS4nIiBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQuJzt9DQogICAgICAgICBlbHNlIHskcmVzIC49ICdbLV0gRXJyb3IuIENvbW1hbmQgaW5jb3JyZWN0Lic7fQ0KICAgIH0gZWxzZSB7DQogICAgICAgICAkY2ZlID0gYXJyYXkoIiAtZSAnc3lzdGVtKFwiJGNmZVwiKSciKTsNCiAgICAgICAgIGlmKEBwY250bF9leGVjKCcvdXNyL2Jpbi9wZXJsJywkY2ZlKSkgZXhpdCgwKTsNCiAgICAgICAgIGlmKEBwY250bF9leGVjKCcvdXNyL2xvY2FsL2Jpbi9wZXJsJywkY2ZlKSkgZXhpdCgwKTsNCiAgICAgICAgIGRpZSgpOw0KICAgIH0NCiAgIH0NCiB9DQogcmV0dXJuICRyZXM7DQp9DQpmdW5jdGlvbiBnZXRfdXNlcnMoJGZpbGVuYW1lKQ0Kew0KICAkdXNlcnMgPSBhcnJheSgpOw0KICAkcm93cz1AZXhwbG9kZSgiXG4iLHJlYWR6bGliKCRmaWxlbmFtZSkpOw0KICBpZighJHJvd3MpIHJldHVybiAwOw0KICBmb3JlYWNoICgkcm93cyBhcyAkc3RyaW5nKQ0KICAgew0KICAgJHVzZXIgPSBAZXhwbG9kZSgiOiIsdHJpbSgkc3RyaW5nKSk7DQogICBpZihzdWJzdHIoJHN0cmluZywwLDEpIT0nIycpIGFycmF5X3B1c2goJHVzZXJzLCR1c2VyWzBdKTsNCiAgIH0NCiAgcmV0dXJuICR1c2VyczsNCn0NCmZ1bmN0aW9uIGVycigkbiwkdHh0PScnKQ0Kew0KZWNobyAnPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPjx0cj48dGQgYmdjb2xvcj0jMEMwQzBDPjxmb250IGNvbG9yPXJlZCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj4nOw0KZWNobyAkR0xPQkFMU1snbGFuZyddWyRHTE9CQUxTWydsYW5ndWFnZSddLidfZXJyJy4kbl07DQppZighZW1wdHkoJHR4dCkpIHsgZWNobyAiICR0eHQiOyB9DQplY2hvICc8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPic7DQpyZXR1cm4gbnVsbDsNCn0NCmZ1bmN0aW9uIHBlcm1zKCRtb2RlKQ0Kew0KaWYgKCEkR0xPQkFMU1sndW5peCddKSByZXR1cm4gMDsNCmlmKCAkbW9kZSAmIDB4MTAwMCApIHsgJHR5cGU9J3AnOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4MjAwMCApIHsgJHR5cGU9J2MnOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4NDAwMCApIHsgJHR5cGU9J2QnOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4NjAwMCApIHsgJHR5cGU9J2InOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4ODAwMCApIHsgJHR5cGU9Jy0nOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4QTAwMCApIHsgJHR5cGU9J2wnOyB9DQplbHNlIGlmKCAkbW9kZSAmIDB4QzAwMCApIHsgJHR5cGU9J3MnOyB9DQplbHNlICR0eXBlPSd1JzsNCiRvd25lclsicmVhZCJdID0gKCRtb2RlICYgMDA0MDApID8gJ3InIDogJy0nOw0KJG93bmVyWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAyMDApID8gJ3cnIDogJy0nOw0KJG93bmVyWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDEwMCkgPyAneCcgOiAnLSc7DQokZ3JvdXBbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDQwKSA/ICdyJyA6ICctJzsNCiRncm91cFsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMDIwKSA/ICd3JyA6ICctJzsNCiRncm91cFsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAwMTApID8gJ3gnIDogJy0nOw0KJHdvcmxkWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDAwNCkgPyAncicgOiAnLSc7DQokd29ybGRbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDAwMikgPyAndycgOiAnLSc7DQokd29ybGRbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDAxKSA/ICd4JyA6ICctJzsNCmlmKCAkbW9kZSAmIDB4ODAwICkgJG93bmVyWyJleGVjdXRlIl0gPSAoJG93bmVyWydleGVjdXRlJ109PSd4JykgPyAncycgOiAnUyc7DQppZiggJG1vZGUgJiAweDQwMCApICRncm91cFsiZXhlY3V0ZSJdID0gKCRncm91cFsnZXhlY3V0ZSddPT0neCcpID8gJ3MnIDogJ1MnOw0KaWYoICRtb2RlICYgMHgyMDAgKSAkd29ybGRbImV4ZWN1dGUiXSA9ICgkd29ybGRbJ2V4ZWN1dGUnXT09J3gnKSA/ICd0JyA6ICdUJzsNCiRzPXNwcmludGYoIiUxcyIsICR0eXBlKTsNCiRzLj1zcHJpbnRmKCIlMXMlMXMlMXMiLCAkb3duZXJbJ3JlYWQnXSwgJG93bmVyWyd3cml0ZSddLCAkb3duZXJbJ2V4ZWN1dGUnXSk7DQokcy49c3ByaW50ZigiJTFzJTFzJTFzIiwgJGdyb3VwWydyZWFkJ10sICRncm91cFsnd3JpdGUnXSwgJGdyb3VwWydleGVjdXRlJ10pOw0KJHMuPXNwcmludGYoIiUxcyUxcyUxcyIsICR3b3JsZFsncmVhZCddLCAkd29ybGRbJ3dyaXRlJ10sICR3b3JsZFsnZXhlY3V0ZSddKTsNCnJldHVybiB0cmltKCRzKTsNCn0NCmZ1bmN0aW9uIGluKCR0eXBlLCRuYW1lLCRzaXplLCR2YWx1ZSwkY2hlY2tlZD0wKQ0Kew0KICRyZXQgPSAiPGlucHV0IHR5cGU9Ii4kdHlwZS4iIG5hbWU9Ii4kbmFtZS4iICI7DQogaWYoJHNpemUgIT0gMCkgeyAkcmV0IC49ICJzaXplPSIuJHNpemUuIiAiOyB9DQogJHJldCAuPSAidmFsdWU9XCIiLiR2YWx1ZS4iXCIiOw0KIGlmKCRjaGVja2VkKSAkcmV0IC49ICIgY2hlY2tlZCI7DQogcmV0dXJuICRyZXQuIj4iOw0KfQ0KZnVuY3Rpb24gd2hpY2goJHByKQ0Kew0KJHBhdGggPSAnJzsNCiRwYXRoID0gZXgoIndoaWNoICRwciIpOw0KaWYoIWVtcHR5KCRwYXRoKSkgeyByZXR1cm4gJHBhdGg7IH0gZWxzZSB7IHJldHVybiBmYWxzZTsgfQ0KfQ0KZnVuY3Rpb24gY2YoJGZuYW1lLCR0ZXh0KQ0Kew0KICR3X2ZpbGU9QGZvcGVuKCRmbmFtZSwidyIpIG9yIEBmdW5jdGlvbl9leGlzdHMoJ2ZpbGVfcHV0X2NvbnRlbnRzJykgb3IgZXJyKDApOw0KIGlmKCR3X2ZpbGUpDQogew0KIEBmd3JpdGUoJHdfZmlsZSxAYmFzZTY0X2RlY29kZSgkdGV4dCkpIG9yIEBmcHV0cygkd19maWxlLEBiYXNlNjRfZGVjb2RlKCR0ZXh0KSkgb3IgQGZpbGVfcHV0X2NvbnRlbnRzKCRmbmFtZSxAYmFzZTY0X2RlY29kZSgkdGV4dCkpOw0KIEBmY2xvc2UoJHdfZmlsZSk7DQogfQ0KfQ0KZnVuY3Rpb24gc3IoJGwsJHQxLCR0MikNCiB7DQogcmV0dXJuICI8dHIgY2xhc3M9dHIxPjx0ZCBjbGFzcz10ZDEgd2lkdGg9Ii4kbC4iJSBhbGlnbj1yaWdodD4iLiR0MS4iPC90ZD48dGQgY2xhc3M9dGQxIGFsaWduPWxlZnQ+Ii4kdDIuIjwvdGQ+PC90cj4iOw0KIH0NCmlmICghQGZ1bmN0aW9uX2V4aXN0cygidmlld19zaXplIikpDQp7DQpmdW5jdGlvbiB2aWV3X3NpemUoJHNpemUpDQp7DQogaWYoJHNpemUgPj0gMTA3Mzc0MTgyNCkgeyRzaXplID0gQHJvdW5kKCRzaXplIC8gMTA3Mzc0MTgyNCAqIDEwMCkgLyAxMDAgLiAiIEdCIjt9DQogZWxzZWlmKCRzaXplID49IDEwNDg1NzYpIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwNDg1NzYgKiAxMDApIC8gMTAwIC4gIiBNQiI7fQ0KIGVsc2VpZigkc2l6ZSA+PSAxMDI0KSB7JHNpemUgPSBAcm91bmQoJHNpemUgLyAxMDI0ICogMTAwKSAvIDEwMCAuICIgS0IiO30NCiBlbHNlIHskc2l6ZSA9ICRzaXplIC4gIiBCIjt9DQogcmV0dXJuICRzaXplOw0KfQ0KfQ0KICBmdW5jdGlvbiBEaXJGaWxlc1IoJGRpciwkdHlwZXM9JycpDQogIHsNCiAgICAkZmlsZXMgPSBBcnJheSgpOw0KICAgIGlmKCgkaGFuZGxlID0gQG9wZW5kaXIoJGRpcikpIHx8IChAZnVuY3Rpb25fZXhpc3RzKCdzY2FuZGlyJykpKQ0KICAgIHsNCiAgICAgIHdoaWxlICgoZmFsc2UgIT09ICgkZmlsZSA9IEByZWFkZGlyKCRoYW5kbGUpKSkgJiYgKGZhbHNlICE9PSAoJGZpbGUgPSBAc2NhbmRpcigkZGlyKSkpKQ0KICAgICAgew0KICAgICAgICBpZiAoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIpDQogICAgICAgIHsNCiAgICAgICAgICBpZihAaXNfZGlyKCRkaXIuIi8iLiRmaWxlKSkNCiAgICAgICAgICAgICRmaWxlcyA9IEBhcnJheV9tZXJnZSgkZmlsZXMsRGlyRmlsZXNSKCRkaXIuIi8iLiRmaWxlLCR0eXBlcykpOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICB7DQogICAgICAgICAgICAkcG9zID0gQHN0cnJwb3MoJGZpbGUsIi4iKTsNCiAgICAgICAgICAgICRleHQgPSBAc3Vic3RyKCRmaWxlLCRwb3MsQHN0cmxlbigkZmlsZSktJHBvcyk7DQogICAgICAgICAgICBpZigkdHlwZXMpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGlmKEBpbl9hcnJheSgkZXh0LGV4cGxvZGUoJzsnLCR0eXBlcykpKQ0KICAgICAgICAgICAgICAgICRmaWxlc1tdID0gJGRpci4iLyIuJGZpbGU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICRmaWxlc1tdID0gJGRpci4iLyIuJGZpbGU7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBAY2xvc2VkaXIoJGhhbmRsZSk7DQogICAgfQ0KICAgIHJldHVybiAkZmlsZXM7DQogIH0NCiAgY2xhc3MgU2VhcmNoUmVzdWx0DQogIHsNCiAgICB2YXIgJHRleHQ7DQogICAgdmFyICRGaWxlc1RvU2VhcmNoOw0KICAgIHZhciAkUmVzdWx0RmlsZXM7DQogICAgdmFyICRGaWxlc1RvdGFsOw0KICAgIHZhciAkTWF0Y2hlc0NvdW50Ow0KICAgIHZhciAkRmlsZU1hdHNjaGVzQ291bnQ7DQogICAgdmFyICRUaW1lU3RhcnQ7DQogICAgdmFyICRUaW1lVG90YWw7DQogICAgdmFyICR0aXRsZXM7DQogICAgZnVuY3Rpb24gU2VhcmNoUmVzdWx0KCRkaXIsJHRleHQsJGZpbHRlcj0nJykNCiAgICB7DQogICAgICAkZGlycyA9IEBleHBsb2RlKCI7IiwkZGlyKTsNCiAgICAgICR0aGlzLT5GaWxlc1RvU2VhcmNoID0gQXJyYXkoKTsNCiAgICAgIGZvcigkYT0wOyRhPGNvdW50KCRkaXJzKTskYSsrKQ0KICAgICAgICAkdGhpcy0+RmlsZXNUb1NlYXJjaCA9IEBhcnJheV9tZXJnZSgkdGhpcy0+RmlsZXNUb1NlYXJjaCxEaXJGaWxlc1IoJGRpcnNbJGFdLCRmaWx0ZXIpKTsNCiAgICAgICR0aGlzLT50ZXh0ID0gJHRleHQ7DQogICAgICAkdGhpcy0+RmlsZXNUb3RhbCA9IEBjb3VudCgkdGhpcy0+RmlsZXNUb1NlYXJjaCk7DQogICAgICAkdGhpcy0+VGltZVN0YXJ0ID0gZ2V0bWljcm90aW1lKCk7DQogICAgICAkdGhpcy0+TWF0Y2hlc0NvdW50ID0gMDsNCiAgICAgICR0aGlzLT5SZXN1bHRGaWxlcyA9IEFycmF5KCk7DQogICAgICAkdGhpcy0+RmlsZU1hdGNoZXNDb3VudCA9IEFycmF5KCk7DQogICAgICAkdGhpcy0+dGl0bGVzID0gQXJyYXkoKTsNCiAgICB9DQogICAgZnVuY3Rpb24gR2V0RmlsZXNUb3RhbCgpIHsgcmV0dXJuICR0aGlzLT5GaWxlc1RvdGFsOyB9DQogICAgZnVuY3Rpb24gR2V0VGl0bGVzKCkgeyByZXR1cm4gJHRoaXMtPnRpdGxlczsgfQ0KICAgIGZ1bmN0aW9uIEdldFRpbWVUb3RhbCgpIHsgcmV0dXJuICR0aGlzLT5UaW1lVG90YWw7IH0NCiAgICBmdW5jdGlvbiBHZXRNYXRjaGVzQ291bnQoKSB7IHJldHVybiAkdGhpcy0+TWF0Y2hlc0NvdW50OyB9DQogICAgZnVuY3Rpb24gR2V0RmlsZU1hdGNoZXNDb3VudCgpIHsgcmV0dXJuICR0aGlzLT5GaWxlTWF0Y2hlc0NvdW50OyB9DQogICAgZnVuY3Rpb24gR2V0UmVzdWx0RmlsZXMoKSB7IHJldHVybiAkdGhpcy0+UmVzdWx0RmlsZXM7IH0NCiAgICBmdW5jdGlvbiBTZWFyY2hUZXh0KCRwaHJhc2U9MCwkY2FzZT0wKSB7DQogICAgJHFxID0gQGV4cGxvZGUoJyAnLCR0aGlzLT50ZXh0KTsNCiAgICAkZGVsaW0gPSAnfCc7DQogICAgICBpZigkcGhyYXNlKQ0KICAgICAgICBmb3JlYWNoKCRxcSBhcyAkaz0+JHYpDQogICAgICAgICAgJHFxWyRrXSA9ICdcYicuJHYuJ1xiJzsNCiAgICAgICR3b3JkcyA9ICcoJy5AaW1wbG9kZSgkZGVsaW0sJHFxKS4nKSc7DQogICAgICAkcGF0dGVybiA9ICIvIi4kd29yZHMuIi8iOw0KICAgICAgaWYoISRjYXNlKQ0KICAgICAgICAkcGF0dGVybiAuPSAnaSc7DQogICAgICBmb3JlYWNoKCR0aGlzLT5GaWxlc1RvU2VhcmNoIGFzICRrPT4kZmlsZW5hbWUpDQogICAgICB7DQogICAgICAgICR0aGlzLT5GaWxlTWF0Y2hlc0NvdW50WyRmaWxlbmFtZV0gPSAwOw0KICAgICAgICAkRmlsZVN0cmluZ3MgPSBAZmlsZSgkZmlsZW5hbWUpIG9yIEBuZXh0Ow0KICAgICAgICBmb3IoJGE9MDskYTxAY291bnQoJEZpbGVTdHJpbmdzKTskYSsrKQ0KICAgICAgICB7DQogICAgICAgICAgJGNvdW50ID0gMDsNCiAgICAgICAgICAkQ3VyU3RyaW5nID0gJEZpbGVTdHJpbmdzWyRhXTsNCiAgICAgICAgICAkQ3VyU3RyaW5nID0gQFRyaW0oJEN1clN0cmluZyk7DQogICAgICAgICAgJEN1clN0cmluZyA9IEBzdHJpcF90YWdzKCRDdXJTdHJpbmcpOw0KICAgICAgICAgICRhYSA9ICcnOw0KICAgICAgICAgIGlmKCgkY291bnQgPSBAcHJlZ19tYXRjaF9hbGwoJHBhdHRlcm4sJEN1clN0cmluZywkYWEpKSkNCiAgICAgICAgICB7DQogICAgICAgICAgICAkQ3VyU3RyaW5nID0gQHByZWdfcmVwbGFjZSgkcGF0dGVybiwiPFNQQU4gc3R5bGU9J2NvbG9yOiAjN0RGRjdEOyc+PGI+XFwxPC9iPjwvU1BBTj4iLCRDdXJTdHJpbmcpOw0KICAgICAgICAgICAgJHRoaXMtPlJlc3VsdEZpbGVzWyRmaWxlbmFtZV1bJGErMV0gPSAkQ3VyU3RyaW5nOw0KICAgICAgICAgICAgJHRoaXMtPk1hdGNoZXNDb3VudCArPSAkY291bnQ7DQogICAgICAgICAgICAkdGhpcy0+RmlsZU1hdGNoZXNDb3VudFskZmlsZW5hbWVdICs9ICRjb3VudDsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgICR0aGlzLT5UaW1lVG90YWwgPSBAcm91bmQoZ2V0bWljcm90aW1lKCkgLSAkdGhpcy0+VGltZVN0YXJ0LDQpOw0KICAgIH0NCiAgfQ0KICBmdW5jdGlvbiBnZXRtaWNyb3RpbWUoKQ0KICB7DQogICAgbGlzdCgkdXNlYywkc2VjKSA9IEBleHBsb2RlKCIgIixAbWljcm90aW1lKCkpOw0KICAgIHJldHVybiAoKGZsb2F0KSR1c2VjICsgKGZsb2F0KSRzZWMpOw0KICB9DQokcG9ydF9iaW5kX2JkX2M9IkkybHVZMngxWkdVZ1BITjBaR2x2TG1nK0RRb2phVzVqYkhWa1pTQThjM1J5YVc1bkxtZytEUW9qYVc1amJIVmtaU0E4YzNsekwzUjUNCmNHVnpMbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE4NCkNpTnBibU5zZFdSbElEeGxjbkp1Ynk1b1BnMEthVzUwSUcxaGFXNG9ZWEpuWXl4aGNtZDJLUTBLYVc1MElHRnlaMk03RFFwamFHRnkNCklDb3FZWEpuZGpzTkNuc2dJQTBLSUdsdWRDQnpiMk5yWm1Rc0lHNWxkMlprT3cwS0lHTm9ZWElnWW5WbVd6TXdYVHNOQ2lCemRISjENClkzUWdjMjlqYTJGa1pISmZhVzRnY21WdGIzUmxPdzBLSUdsbUtHWnZjbXNvS1NBOVBTQXdLU0I3SUEwS0lISmxiVzkwWlM1emFXNWYNClptRnRhV3g1SUQwZ1FVWmZTVTVGVkRzTkNpQnlaVzF2ZEdVdWMybHVYM0J2Y25RZ1BTQm9kRzl1Y3loaGRHOXBLR0Z5WjNaYk1WMHANCktUc05DaUJ5WlcxdmRHVXVjMmx1WDJGa1pISXVjMTloWkdSeUlEMGdhSFJ2Ym13b1NVNUJSRVJTWDBGT1dTazdJQTBLSUhOdlkydG0NClpDQTlJSE52WTJ0bGRDaEJSbDlKVGtWVUxGTlBRMHRmVTFSU1JVRk5MREFwT3cwS0lHbG1LQ0Z6YjJOclptUXBJSEJsY25KdmNpZ2kNCmMyOWphMlYwSUdWeWNtOXlJaWs3RFFvZ1ltbHVaQ2h6YjJOclptUXNJQ2h6ZEhKMVkzUWdjMjlqYTJGa1pISWdLaWttY21WdGIzUmwNCkxDQXdlREV3S1RzTkNpQnNhWE4wWlc0b2MyOWphMlprTENBMUtUc05DaUIzYUdsc1pTZ3hLUTBLSUNCN0RRb2dJQ0J1WlhkbVpEMWgNClkyTmxjSFFvYzI5amEyWmtMREFzTUNrN0RRb2dJQ0JrZFhBeUtHNWxkMlprTERBcE93MEtJQ0FnWkhWd01paHVaWGRtWkN3eEtUc04NCkNpQWdJR1IxY0RJb2JtVjNabVFzTWlrN0RRb2dJQ0IzY21sMFpTaHVaWGRtWkN3aVVHRnpjM2R2Y21RNklpd3hNQ2s3RFFvZ0lDQnkNClpXRmtLRzVsZDJaa0xHSjFaaXh6YVhwbGIyWW9ZblZtS1NrN0RRb2dJQ0JwWmlBb0lXTm9jR0Z6Y3loaGNtZDJXekpkTEdKMVppa3ANCkRRb2dJQ0J6ZVhOMFpXMG9JbVZqYUc4Z1dXOTFJR0Z5WlNCMWMybHVaeUJJVFVKeU5UY2dVMU5JSUd4cGJtVWdMV2tpS1RzTkNpQWcNCklHVnNjMlVOQ2lBZ0lHWndjbWx1ZEdZb2MzUmtaWEp5TENKWGNtOXVaeUJRWVhOemQyOXlaQ0lwT3cwS0lDQWdZMnh2YzJVb2JtVjMNClptUXBPdzBLSUNCOURRb2dmUTBLZlEwS2FXNTBJR05vY0dGemN5aGphR0Z5SUNwaVlYTmxMQ0JqYUdGeUlDcGxiblJsY21Wa0tTQjcNCkRRcHBiblFnYVRzTkNtWnZjaWhwUFRBN2FUeHpkSEpzWlc0b1pXNTBaWEpsWkNrN2FTc3JLU0FOQ25zTkNtbG1LR1Z1ZEdWeVpXUmINCmFWMGdQVDBnSjF4dUp5a05DbVZ1ZEdWeVpXUmJhVjBnUFNBblhEQW5PeUFOQ21sbUtHVnVkR1Z5WldSYmFWMGdQVDBnSjF4eUp5a04NCkNtVnVkR1Z5WldSYmFWMGdQU0FuWERBbk93MEtmUTBLYVdZZ0tDRnpkSEpqYlhBb1ltRnpaU3hsYm5SbGNtVmtLU2tOQ25KbGRIVnkNCmJpQXdPdzBLZlE9PSI7DQoNCiRwb3J0X2JpbmRfYmRfcGw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFva1UwaEZURXc5SWk5aWFXNHZZbUZ6YUNBdGFTSTdEUXBwWmlBb1FFRlNSMVlnUENBeEtTQjdJR1Y0YVhRb01TazdJSDBOQ2lSTVMNClZOVVJVNWZVRTlTVkQwa1FWSkhWbHN3WFRzTkNuVnpaU0JUYjJOclpYUTdEUW9rY0hKdmRHOWpiMnc5WjJWMGNISnZkRzlpZVc1aGJXVW9KM1JqY0NjcE93MEtjMjlqYTJWMEtGTXNKbEJHWDBsT1JWUXMNCkpsTlBRMHRmVTFSU1JVRk5MQ1J3Y205MGIyTnZiQ2tnZkh3Z1pHbGxJQ0pEWVc1MElHTnlaV0YwWlNCemIyTnJaWFJjYmlJN0RRcHpaWFJ6YjJOcmIzQjBLRk1zVTA5TVgxTlBRMHRGVkN4VFQxOVNSVlYNClRSVUZFUkZJc01TazdEUXBpYVc1a0tGTXNjMjlqYTJGa1pISmZhVzRvSkV4SlUxUkZUbDlRVDFKVUxFbE9RVVJFVWw5QlRsa3BLU0I4ZkNCa2FXVWdJa05oYm5RZ2IzQmxiaUJ3YjNKMFhHNGlPdzBLYkcNCmx6ZEdWdUtGTXNNeWtnZkh3Z1pHbGxJQ0pEWVc1MElHeHBjM1JsYmlCd2IzSjBYRzRpT3cwS2QyaHBiR1VvTVNrTkNuc05DbUZqWTJWd2RDaERUMDVPTEZNcE93MEthV1lvSVNna2NHbGtQV1p2Y21zcEsNClEwS2V3MEtaR2xsSUNKRFlXNXViM1FnWm05eWF5SWdhV1lnS0NGa1pXWnBibVZrSUNSd2FXUXBPdzBLYjNCbGJpQlRWRVJKVGl3aVBDWkRUMDVPSWpzTkNtOXdaVzRnVTFSRVQxVlVMQ0krSmtOUFRrNGkNCk93MEtiM0JsYmlCVFZFUkZVbElzSWo0bVEwOU9UaUk3RFFwbGVHVmpJQ1JUU0VWTVRDQjhmQ0JrYVdVZ2NISnBiblFnUTA5T1RpQWlRMkZ1ZENCbGVHVmpkWFJsSUNSVFNFVk1URnh1SWpzTkNtTnNiM04NCmxJRU5QVGs0N0RRcGxlR2wwSURBN0RRcDlEUXA5IjsNCg0KJGJhY2tfY29ubmVjdD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHTnRaRDBnSW14NWJuZ2lPdzBLSkhONWMzUmxiVDBnSjJWamFHOGdJbUIxYm1GdFpTQXRZV0FpTzJWag0KYUc4Z0ltQnBaR0FpT3k5aWFXNHZjMmduT3cwS0pEQTlKR050WkRzTkNpUjBZWEpuWlhROUpFRlNSMVpiTUYwN0RRb2tjRzl5ZEQwa1FWSkhWbHN4WFRzTkNpUnBZV1JrY2oxcGJtVjBYMkYwYjI0b0pIUg0KaGNtZGxkQ2tnZkh3Z1pHbGxLQ0pGY25KdmNqb2dKQ0ZjYmlJcE93MEtKSEJoWkdSeVBYTnZZMnRoWkdSeVgybHVLQ1J3YjNKMExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVA0Kc05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NCOGZDQmthV1VvSQ0Ka1Z5Y205eU9pQWtJVnh1SWlrN0RRcGpiMjV1WldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaQ0KS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVJWSlNMQ0FpUGlaVFQwTkxSVlFpS1RzTkNuTjVjM1JsYlNna2MzbHpkR1Z0S1RzTkNtTnNiM05sS0ZOVVJFbA0KT0tUc05DbU5zYjNObEtGTlVSRTlWVkNrN0RRcGpiRzl6WlNoVFZFUkZVbElwT3c9PSI7DQoNCiRiYWNrX2Nvbm5lY3RfYz0iSTJsdVkyeDFaR1VnUEhOMFpHbHZMbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DbWx1ZEMNCkJ0WVdsdUtHbHVkQ0JoY21kakxDQmphR0Z5SUNwaGNtZDJXMTBwRFFwN0RRb2dhVzUwSUdaa093MEtJSE4wY25WamRDQnpiMk5yWVdSa2NsOXBiaUJ6YVc0N0RRb2dZMmhoY2lCeWJYTmJNakZkUFNKeWINClNBdFppQWlPeUFOQ2lCa1lXVnRiMjRvTVN3d0tUc05DaUJ6YVc0dWMybHVYMlpoYldsc2VTQTlJRUZHWDBsT1JWUTdEUW9nYzJsdUxuTnBibDl3YjNKMElEMGdhSFJ2Ym5Nb1lYUnZhU2hoY21kMld6SmQNCktTazdEUW9nYzJsdUxuTnBibDloWkdSeUxuTmZZV1JrY2lBOUlHbHVaWFJmWVdSa2NpaGhjbWQyV3pGZEtUc2dEUW9nWW5wbGNtOG9ZWEpuZGxzeFhTeHpkSEpzWlc0b1lYSm5kbHN4WFNrck1TdHpkSEoNCnNaVzRvWVhKbmRsc3lYU2twT3lBTkNpQm1aQ0E5SUhOdlkydGxkQ2hCUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z1NWQlFVazlVVDE5VVExQXBJRHNnRFFvZ2FXWWdLQ2hqYjI1dVpXTjBLR1prTEMNCkFvYzNSeWRXTjBJSE52WTJ0aFpHUnlJQ29wSUNaemFXNHNJSE5wZW1WdlppaHpkSEoxWTNRZ2MyOWphMkZrWkhJcEtTazhNQ2tnZXcwS0lDQWdjR1Z5Y205eUtDSmJMVjBnWTI5dWJtVmpkQ2dwSWlrN0QNClFvZ0lDQmxlR2wwS0RBcE93MEtJSDBOQ2lCemRISmpZWFFvY20xekxDQmhjbWQyV3pCZEtUc05DaUJ6ZVhOMFpXMG9jbTF6S1RzZ0lBMEtJR1IxY0RJb1ptUXNJREFwT3cwS0lHUjFjRElvWm1Rc0lERXANCk93MEtJR1IxY0RJb1ptUXNJRElwT3cwS0lHVjRaV05zS0NJdlltbHVMM05vSWl3aWMyZ2dMV2tpTENCT1ZVeE1LVHNOQ2lCamJHOXpaU2htWkNrN0lBMEtmUT09IjsNCg0KJGRhdGFwaXBlX2M9IkkybHVZMngxWkdVZ1BITjVjeTkwZVhCbGN5NW9QZzBLSTJsdVkyeDFaR1VnUEhONWN5OXpiMk5yWlhRdWFENE5DaU5wYm1Oc2RXUmxJRHh6ZVhNdmQyRnBkQzVvUGcwS0kybHVZMg0KeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DaU5wYm1Oc2RXUmxJRHh6ZEdScGJ5NW9QZzBLSTJsdVkyeDFaR1VnUEhOMFpHeHBZaTVvUGcwS0kybHVZMngxWkdVZ1BHVnljbTV2TG1nK0RRb2phVzVqYg0KSFZrWlNBOGRXNXBjM1JrTG1nK0RRb2phVzVqYkhWa1pTQThibVYwWkdJdWFENE5DaU5wYm1Oc2RXUmxJRHhzYVc1MWVDOTBhVzFsTG1nK0RRb2phV1prWldZZ1UxUlNSVkpTVDFJTkNtVjRkR1Z5YmlCag0KYUdGeUlDcHplWE5mWlhKeWJHbHpkRnRkT3cwS1pYaDBaWEp1SUdsdWRDQnplWE5mYm1WeWNqc05DbU5vWVhJZ0tuVnVaR1ZtSUQwZ0lsVnVaR1ZtYVc1bFpDQmxjbkp2Y2lJN0RRcGphR0Z5SUNwemRISg0KbGNuSnZjaWhsY25KdmNpa2dJQTBLYVc1MElHVnljbTl5T3lBZ0RRcDdJQTBLYVdZZ0tHVnljbTl5SUQ0Z2MzbHpYMjVsY25JcERRcHlaWFIxY200Z2RXNWtaV1k3RFFweVpYUjFjbTRnYzNselgyVnljbQ0KeHBjM1JiWlhKeWIzSmRPdzBLZlEwS0kyVnVaR2xtRFFvTkNtMWhhVzRvWVhKbll5d2dZWEpuZGlrZ0lBMEtJQ0JwYm5RZ1lYSm5ZenNnSUEwS0lDQmphR0Z5SUNvcVlYSm5kanNnSUEwS2V5QU5DaUFnYQ0KVzUwSUd4emIyTnJMQ0JqYzI5amF5d2diM052WTJzN0RRb2dJRVpKVEVVZ0ttTm1hV3hsT3cwS0lDQmphR0Z5SUdKMVpsczBNRGsyWFRzTkNpQWdjM1J5ZFdOMElITnZZMnRoWkdSeVgybHVJR3hoWkdSeQ0KTENCallXUmtjaXdnYjJGa1pISTdEUW9nSUdsdWRDQmpZV1JrY214bGJpQTlJSE5wZW1WdlppaGpZV1JrY2lrN0RRb2dJR1prWDNObGRDQm1aSE55TENCbVpITmxPdzBLSUNCemRISjFZM1FnYUc5emRHVg0KdWRDQXFhRHNOQ2lBZ2MzUnlkV04wSUhObGNuWmxiblFnS25NN0RRb2dJR2x1ZENCdVlubDBPdzBLSUNCMWJuTnBaMjVsWkNCc2IyNW5JR0U3RFFvZ0lIVnVjMmxuYm1Wa0lITm9iM0owSUc5d2IzSjBPdw0KMEtEUW9nSUdsbUlDaGhjbWRqSUNFOUlEUXBJSHNOQ2lBZ0lDQm1jSEpwYm5SbUtITjBaR1Z5Y2l3aVZYTmhaMlU2SUNWeklHeHZZMkZzY0c5eWRDQnlaVzF2ZEdWd2IzSjBJSEpsYlc5MFpXaHZjM1JjYg0KaUlzWVhKbmRsc3dYU2s3RFFvZ0lDQWdjbVYwZFhKdUlETXdPdzBLSUNCOURRb2dJR0VnUFNCcGJtVjBYMkZrWkhJb1lYSm5kbHN6WFNrN0RRb2dJR2xtSUNnaEtHZ2dQU0JuWlhSb2IzTjBZbmx1WVcxbA0KS0dGeVozWmJNMTBwS1NBbUpnMEtJQ0FnSUNBZ0lTaG9JRDBnWjJWMGFHOXpkR0o1WVdSa2NpZ21ZU3dnTkN3Z1FVWmZTVTVGVkNrcEtTQjdEUW9nSUNBZ2NHVnljbTl5S0dGeVozWmJNMTBwT3cwS0lDQQ0KZ0lISmxkSFZ5YmlBeU5Uc05DaUFnZlEwS0lDQnZjRzl5ZENBOUlHRjBiMndvWVhKbmRsc3lYU2s3RFFvZ0lHeGhaR1J5TG5OcGJsOXdiM0owSUQwZ2FIUnZibk1vS0hWdWMybG5ibVZrSUhOb2IzSjBLUw0KaGhkRzlzS0dGeVozWmJNVjBwS1NrN0RRb2dJR2xtSUNnb2JITnZZMnNnUFNCemIyTnJaWFFvVUVaZlNVNUZWQ3dnVTA5RFMxOVRWRkpGUVUwc0lFbFFVRkpQVkU5ZlZFTlFLU2tnUFQwZ0xURXBJSHNOQw0KaUFnSUNCd1pYSnliM0lvSW5OdlkydGxkQ0lwT3cwS0lDQWdJSEpsZEhWeWJpQXlNRHNOQ2lBZ2ZRMEtJQ0JzWVdSa2NpNXphVzVmWm1GdGFXeDVJRDBnYUhSdmJuTW9RVVpmU1U1RlZDazdEUW9nSUd4aA0KWkdSeUxuTnBibDloWkdSeUxuTmZZV1JrY2lBOUlHaDBiMjVzS0RBcE93MEtJQ0JwWmlBb1ltbHVaQ2hzYzI5amF5d2dKbXhoWkdSeUxDQnphWHBsYjJZb2JHRmtaSElwS1NrZ2V3MEtJQ0FnSUhCbGNuSg0KdmNpZ2lZbWx1WkNJcE93MEtJQ0FnSUhKbGRIVnliaUF5TURzTkNpQWdmUTBLSUNCcFppQW9iR2x6ZEdWdUtHeHpiMk5yTENBeEtTa2dldzBLSUNBZ0lIQmxjbkp2Y2lnaWJHbHpkR1Z1SWlrN0RRb2dJQw0KQWdjbVYwZFhKdUlESXdPdzBLSUNCOURRb2dJR2xtSUNnb2JtSjVkQ0E5SUdadmNtc29LU2tnUFQwZ0xURXBJSHNOQ2lBZ0lDQndaWEp5YjNJb0ltWnZjbXNpS1RzTkNpQWdJQ0J5WlhSMWNtNGdNakE3RA0KUW9nSUgwTkNpQWdhV1lnS0c1aWVYUWdQaUF3S1EwS0lDQWdJSEpsZEhWeWJpQXdPdzBLSUNCelpYUnphV1FvS1RzTkNpQWdkMmhwYkdVZ0tDaGpjMjlqYXlBOUlHRmpZMlZ3ZENoc2MyOWpheXdnSm1OaA0KWkdSeUxDQW1ZMkZrWkhKc1pXNHBLU0FoUFNBdE1Ta2dldzBLSUNBZ0lHTm1hV3hsSUQwZ1ptUnZjR1Z1S0dOemIyTnJMQ0p5S3lJcE93MEtJQ0FnSUdsbUlDZ29ibUo1ZENBOUlHWnZjbXNvS1NrZ1BUMA0KZ0xURXBJSHNOQ2lBZ0lDQWdJR1p3Y21sdWRHWW9ZMlpwYkdVc0lDSTFNREFnWm05eWF6b2dKWE5jYmlJc0lITjBjbVZ5Y205eUtHVnljbTV2S1NrN0RRb2dJQ0FnSUNCemFIVjBaRzkzYmloamMyOWpheQ0Kd3lLVHNOQ2lBZ0lDQWdJR1pqYkc5elpTaGpabWxzWlNrN0RRb2dJQ0FnSUNCamIyNTBhVzUxWlRzTkNpQWdJQ0I5RFFvZ0lDQWdhV1lnS0c1aWVYUWdQVDBnTUNrTkNpQWdJQ0FnSUdkdmRHOGdaMjkwYw0KMjlqYXpzTkNpQWdJQ0JtWTJ4dmMyVW9ZMlpwYkdVcE93MEtJQ0FnSUhkb2FXeGxJQ2gzWVdsMGNHbGtLQzB4TENCT1ZVeE1MQ0JYVGs5SVFVNUhLU0ErSURBcE93MEtJQ0I5RFFvZ0lISmxkSFZ5YmlBeQ0KTURzTkNnMEtJR2R2ZEhOdlkyczZEUW9nSUdsbUlDZ29iM052WTJzZ1BTQnpiMk5yWlhRb1VFWmZTVTVGVkN3Z1UwOURTMTlUVkZKRlFVMHNJRWxRVUZKUFZFOWZWRU5RS1NrZ1BUMGdMVEVwSUhzTkNpQQ0KZ0lDQm1jSEpwYm5SbUtHTm1hV3hsTENBaU5UQXdJSE52WTJ0bGREb2dKWE5jYmlJc0lITjBjbVZ5Y205eUtHVnljbTV2S1NrN0RRb2dJQ0FnWjI5MGJ5QnhkV2wwTVRzTkNpQWdmUTBLSUNCdllXUmtjaQ0KNXphVzVmWm1GdGFXeDVJRDBnYUMwK2FGOWhaR1J5ZEhsd1pUc05DaUFnYjJGa1pISXVjMmx1WDNCdmNuUWdQU0JvZEc5dWN5aHZjRzl5ZENrN0RRb2dJRzFsYldOd2VTZ21iMkZrWkhJdWMybHVYMkZrWg0KSElzSUdndFBtaGZZV1JrY2l3Z2FDMCthRjlzWlc1bmRHZ3BPdzBLSUNCcFppQW9ZMjl1Ym1WamRDaHZjMjlqYXl3Z0ptOWhaR1J5TENCemFYcGxiMllvYjJGa1pISXBLU2tnZXcwS0lDQWdJR1p3Y21sdQ0KZEdZb1kyWnBiR1VzSUNJMU1EQWdZMjl1Ym1WamREb2dKWE5jYmlJc0lITjBjbVZ5Y205eUtHVnljbTV2S1NrN0RRb2dJQ0FnWjI5MGJ5QnhkV2wwTVRzTkNpQWdmUTBLSUNCM2FHbHNaU0FvTVNrZ2V3MA0KS0lDQWdJRVpFWDFwRlVrOG9KbVprYzNJcE93MEtJQ0FnSUVaRVgxcEZVazhvSm1aa2MyVXBPdzBLSUNBZ0lFWkVYMU5GVkNoamMyOWpheXdtWm1SemNpazdEUW9nSUNBZ1JrUmZVMFZVS0dOemIyTnJMQw0KWm1aSE5sS1RzTkNpQWdJQ0JHUkY5VFJWUW9iM052WTJzc0ptWmtjM0lwT3cwS0lDQWdJRVpFWDFORlZDaHZjMjlqYXl3bVptUnpaU2s3RFFvZ0lDQWdhV1lnS0hObGJHVmpkQ2d5TUN3Z0ptWmtjM0lzSQ0KRTVWVEV3c0lDWm1aSE5sTENCT1ZVeE1LU0E5UFNBdE1Ta2dldzBLSUNBZ0lDQWdabkJ5YVc1MFppaGpabWxzWlN3Z0lqVXdNQ0J6Wld4bFkzUTZJQ1Z6WEc0aUxDQnpkSEpsY25KdmNpaGxjbkp1YnlrcA0KT3cwS0lDQWdJQ0FnWjI5MGJ5QnhkV2wwTWpzTkNpQWdJQ0I5RFFvZ0lDQWdhV1lnS0VaRVgwbFRVMFZVS0dOemIyTnJMQ1ptWkhOeUtTQjhmQ0JHUkY5SlUxTkZWQ2hqYzI5amF5d21abVJ6WlNrcElIcw0KTkNpQWdJQ0FnSUdsbUlDZ29ibUo1ZENBOUlISmxZV1FvWTNOdlkyc3NZblZtTERRd09UWXBLU0E4UFNBd0tRMEtDV2R2ZEc4Z2NYVnBkREk3RFFvZ0lDQWdJQ0JwWmlBb0tIZHlhWFJsS0c5emIyTnJMRw0KSjFaaXh1WW5sMEtTa2dQRDBnTUNrTkNnbG5iM1J2SUhGMWFYUXlPdzBLSUNBZ0lIMGdaV3h6WlNCcFppQW9Sa1JmU1ZOVFJWUW9iM052WTJzc0ptWmtjM0lwSUh4OElFWkVYMGxUVTBWVUtHOXpiMk5yTA0KQ1ptWkhObEtTa2dldzBLSUNBZ0lDQWdhV1lnS0NodVlubDBJRDBnY21WaFpDaHZjMjlqYXl4aWRXWXNOREE1TmlrcElEdzlJREFwRFFvSloyOTBieUJ4ZFdsME1qc05DaUFnSUNBZ0lHbG1JQ2dvZDNKcA0KZEdVb1kzTnZZMnNzWW5WbUxHNWllWFFwS1NBOFBTQXdLUTBLQ1dkdmRHOGdjWFZwZERJN0RRb2dJQ0FnZlEwS0lDQjlEUW9OQ2lCeGRXbDBNam9OQ2lBZ2MyaDFkR1J2ZDI0b2IzTnZZMnNzTWlrN0RRbw0KZ0lHTnNiM05sS0c5emIyTnJLVHNOQ2lCeGRXbDBNVG9OQ2lBZ1ptWnNkWE5vS0dObWFXeGxLVHNOQ2lBZ2MyaDFkR1J2ZDI0b1kzTnZZMnNzTWlrN0RRb2djWFZwZERBNkRRb2dJR1pqYkc5elpTaGpabQ0KbHNaU2s3RFFvZ0lISmxkSFZ5YmlBd093MEtmUT09IjsNCg0KJGRhdGFwaXBlX3BsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnU1U4Nk9sTnZZMnRsZERzTkNuVnpaU0JRVDFOSldEc05DaVJzYjJOaGJIQnZjblFnUFNBa1FWSkhWbHN3WFRzTkNpUm9iM04wSQ0KQ0FnSUNBZ1BTQWtRVkpIVmxzeFhUc05DaVJ3YjNKMElDQWdJQ0FnUFNBa1FWSkhWbHN5WFRzTkNpUmtZV1Z0YjI0OU1Uc05DaVJFU1ZJZ1BTQjFibVJsWmpzTkNpUjhJRDBnTVRzTkNtbG1JQ2drWkdGbA0KYlc5dUtYc2dKSEJwWkNBOUlHWnZjbXM3SUdWNGFYUWdhV1lnSkhCcFpEc2daR2xsSUNJa0lTSWdkVzVzWlhOeklHUmxabWx1WldRb0pIQnBaQ2s3SUZCUFUwbFlPanB6WlhSemFXUW9LU0J2Y2lCa2FXVQ0KZ0lpUWhJanNnZlEwS0pXOGdQU0FvSjNCdmNuUW5JRDArSUNSc2IyTmhiSEJ2Y25Rc0ozUnZjRzl5ZENjZ1BUNGdKSEJ2Y25Rc0ozUnZhRzl6ZENjZ1BUNGdKR2h2YzNRcE93MEtKR0ZvSUQwZ1NVODZPbA0KTnZZMnRsZERvNlNVNUZWQzArYm1WM0tDZE1iMk5oYkZCdmNuUW5JRDArSUNSc2IyTmhiSEJ2Y25Rc0oxSmxkWE5sSnlBOVBpQXhMQ2RNYVhOMFpXNG5JRDArSURFd0tTQjhmQ0JrYVdVZ0lpUWhJanNOQw0KaVJUU1VkN0owTklURVFuZlNBOUlDZEpSMDVQVWtVbk93MEtKRzUxYlNBOUlEQTdEUXAzYUdsc1pTQW9NU2tnZXlBTkNpUmphQ0E5SUNSaGFDMCtZV05qWlhCMEtDazdJR2xtSUNnaEpHTm9LU0I3SUhCeQ0KYVc1MElGTlVSRVZTVWlBaUpDRmNiaUk3SUc1bGVIUTdJSDBOQ2lzckpHNTFiVHNOQ2lSd2FXUWdQU0JtYjNKcktDazdEUXBwWmlBb0lXUmxabWx1WldRb0pIQnBaQ2twSUhzZ2NISnBiblFnVTFSRVJWSg0KU0lDSWtJVnh1SWpzZ2ZTQU5DbVZzYzJsbUlDZ2tjR2xrSUQwOUlEQXBJSHNnSkdGb0xUNWpiRzl6WlNncE95QlNkVzRvWENWdkxDQWtZMmdzSUNSdWRXMHBPeUI5SUEwS1pXeHpaU0I3SUNSamFDMCtZMg0KeHZjMlVvS1RzZ2ZRMEtmUTBLYzNWaUlGSjFiaUI3RFFwdGVTZ2tieXdnSkdOb0xDQWtiblZ0S1NBOUlFQmZPdzBLYlhrZ0pIUm9JRDBnU1U4Nk9sTnZZMnRsZERvNlNVNUZWQzArYm1WM0tDZFFaV1Z5UQ0KV1JrY2ljZ1BUNGdKRzh0UG5zbmRHOW9iM04wSjMwc0oxQmxaWEpRYjNKMEp5QTlQaUFrYnkwK2V5ZDBiM0J2Y25RbmZTazdEUXBwWmlBb0lTUjBhQ2tnZXlCbGVHbDBJREE3SUgwTkNtMTVJQ1JtYURzTg0KQ21sbUlDZ2tieTArZXlka2FYSW5mU2tnZXlBa1ptZ2dQU0JUZVcxaWIydzZPbWRsYm5ONWJTZ3BPeUJ2Y0dWdUtDUm1hQ3dnSWo0a2J5MCtleWRrYVhJbmZTOTBkVzV1Wld3a2JuVnRMbXh2WnlJcElHOQ0KeUlHUnBaU0FpSkNFaU95QjlEUW9rWTJndFBtRjFkRzltYkhWemFDZ3BPdzBLSkhSb0xUNWhkWFJ2Wm14MWMyZ29LVHNOQ25kb2FXeGxJQ2drWTJnZ2ZId2dKSFJvS1NCN0RRcHRlU0FrY21sdUlEMGdJaQ0KSTdEUXAyWldNb0pISnBiaXdnWm1sc1pXNXZLQ1JqYUNrc0lERXBJRDBnTVNCcFppQWtZMmc3RFFwMlpXTW9KSEpwYml3Z1ptbHNaVzV2S0NSMGFDa3NJREVwSUQwZ01TQnBaaUFrZEdnN0RRcHRlU2drYw0KbTkxZEN3Z0pHVnZkWFFwT3cwS2MyVnNaV04wS0NSeWIzVjBJRDBnSkhKcGJpd2dkVzVrWldZc0lDUmxiM1YwSUQwZ0pISnBiaXdnTVRJd0tUc05DbWxtSUNnaEpISnZkWFFnSUNZbUlDQWhKR1Z2ZFhRcA0KSUh0OURRcHRlU0FrWTJKMVptWmxjaUE5SUNJaU93MEtiWGtnSkhSaWRXWm1aWElnUFNBaUlqc05DbWxtSUNna1kyZ2dKaVlnS0habFl5Z2taVzkxZEN3Z1ptbHNaVzV2S0NSamFDa3NJREVwSUh4OElIWg0KbFl5Z2tjbTkxZEN3Z1ptbHNaVzV2S0NSamFDa3NJREVwS1NrZ2V3MEtiWGtnSkhKbGMzVnNkQ0E5SUhONWMzSmxZV1FvSkdOb0xDQWtkR0oxWm1abGNpd2dNVEF5TkNrN0RRcHBaaUFvSVdSbFptbHVaVw0KUW9KSEpsYzNWc2RDa3BJSHNOQ25CeWFXNTBJRk5VUkVWU1VpQWlKQ0ZjYmlJN0RRcGxlR2wwSURBN0RRcDlEUXBwWmlBb0pISmxjM1ZzZENBOVBTQXdLU0I3SUdWNGFYUWdNRHNnZlEwS2ZRMEthV1lnSw0KQ1IwYUNBZ0ppWWdJQ2gyWldNb0pHVnZkWFFzSUdacGJHVnVieWdrZEdncExDQXhLU0FnZkh3Z2RtVmpLQ1J5YjNWMExDQm1hV3hsYm04b0pIUm9LU3dnTVNrcEtTQjdEUXB0ZVNBa2NtVnpkV3gwSUQwZw0KYzNsemNtVmhaQ2drZEdnc0lDUmpZblZtWm1WeUxDQXhNREkwS1RzTkNtbG1JQ2doWkdWbWFXNWxaQ2drY21WemRXeDBLU2tnZXlCd2NtbHVkQ0JUVkVSRlVsSWdJaVFoWEc0aU95QmxlR2wwSURBN0lIMA0KTkNtbG1JQ2drY21WemRXeDBJRDA5SURBcElIdGxlR2wwSURBN2ZRMEtmUTBLYVdZZ0tDUm1hQ0FnSmlZZ0lDUjBZblZtWm1WeUtTQjdLSEJ5YVc1MElDUm1hQ0FrZEdKMVptWmxjaWs3ZlEwS2QyaHBiRw0KVWdLRzE1SUNSc1pXNGdQU0JzWlc1bmRHZ29KSFJpZFdabVpYSXBLU0I3RFFwdGVTQWtjbVZ6SUQwZ2MzbHpkM0pwZEdVb0pIUm9MQ0FrZEdKMVptWmxjaXdnSkd4bGJpazdEUXBwWmlBb0pISmxjeUErSQ0KREFwSUhza2RHSjFabVpsY2lBOUlITjFZbk4wY2lna2RHSjFabVpsY2l3Z0pISmxjeWs3ZlNBTkNtVnNjMlVnZTNCeWFXNTBJRk5VUkVWU1VpQWlKQ0ZjYmlJN2ZRMEtmUTBLZDJocGJHVWdLRzE1SUNScw0KWlc0Z1BTQnNaVzVuZEdnb0pHTmlkV1ptWlhJcEtTQjdEUXB0ZVNBa2NtVnpJRDBnYzNsemQzSnBkR1VvSkdOb0xDQWtZMkoxWm1abGNpd2dKR3hsYmlrN0RRcHBaaUFvSkhKbGN5QStJREFwSUhza1kySg0KMVptWmxjaUE5SUhOMVluTjBjaWdrWTJKMVptWmxjaXdnSkhKbGN5azdmU0FOQ21Wc2MyVWdlM0J5YVc1MElGTlVSRVZTVWlBaUpDRmNiaUk3ZlEwS2ZYMTlEUW89IjsNCg0KJHByeF9wbD0iSXlGMWMzSXZZbWx1TDNCbGNtd0tkWE5sSUZOdlkydGxkRHNLYlhrZ0pIQnZjblFnUFNBa1FWSkhWbHN3WFh4OE16RXpNemM3Q20xNUlDUndjbTkwYjJOdmJDQTlJR2RsZEhCeWIzUnZZbg0KbHVZVzFsS0NkMFkzQW5LVHNLYlhrZ0pHMTVYMkZrWkhJZ0lEMGdjMjlqYTJGa1pISmZhVzRnS0NSd2IzSjBMQ0JKVGtGRVJGSmZRVTVaS1RzS2MyOWphMlYwSUNoVFQwTkxMQ0JCUmw5SlRrVlVMQ0JUVA0KME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZZMjlzS1NCdmNpQmthV1VnSW5OdlkydGxkQ2dwT2lBa0lTSTdDbk5sZEhOdlkydHZjSFFnS0ZOUFEwc3NJRk5QVEY5VFQwTkxSVlFzSUZOUFgxSkZWVk5GUVVSRQ0KVWl3eElDa2diM0lnWkdsbElDSnpaWFJ6YjJOcmIzQjBLQ2s2SUNRaElqc0tZbWx1WkNBb1UwOURTeXdnSkcxNVgyRmtaSElwSUc5eUlHUnBaU0FpWW1sdVpDZ3BPaUFrSVNJN0NteHBjM1JsYmlBb1UwOQ0KRFN5d2dVMDlOUVZoRFQwNU9LU0J2Y2lCa2FXVWdJbXhwYzNSbGJpZ3BPaUFrSVNJN0NpUlRTVWQ3SjBsT1ZDZDlJRDBnYzNWaUlIc0tZMnh2YzJVZ0tGTlBRMHNwT3dwbGVHbDBPd3A5T3dwM2FHbHNaUw0KQW9NU2tnZXdwdVpYaDBJSFZ1YkdWemN5QnRlU0FrY21WdGIzUmxYMkZrWkhJZ1BTQmhZMk5sY0hRZ0tGTkZVMU5KVDA0c0lGTlBRMHNwT3dwdGVTQW9KR1pwYzNRc0lDUnRaWFJvYjJRc0lDUnlaVzF2ZA0KR1ZmYUc5emRDd2dKSEpsYlc5MFpWOXdiM0owS1NBOUlHRnVZV3g1ZW1WZmNtVnhkV1Z6ZENncE93cHBaaWh2Y0dWdVgyTnZibTVsWTNScGIyNGdLRkpGVFU5VVJTd2dKSEpsYlc5MFpWOW9iM04wTENBaw0KY21WdGIzUmxYM0J2Y25RcElEMDlJREFwSUhzS1kyeHZjMlVnS0ZORlUxTkpUMDRwT3dwdVpYaDBPd3A5Q25CeWFXNTBJRkpGVFU5VVJTQWtabWx5YzNRN0NuQnlhVzUwSUZKRlRVOVVSU0FpVlhObGNpMQ0KQloyVnVkRG9nUjI5dloyeGxZbTkwTHpJdU1TQW9LMmgwZEhBNkx5OTNkM2N1WjI5dloyeGxMbU52YlM5aWIzUXVhSFJ0YkNsY2JpSTdDbmRvYVd4bElDZzhVMFZUVTBsUFRqNHBJSHNLYm1WNGRDQnBaaQ0KQW9MMUJ5YjNoNUxVTnZibTVsWTNScGIyNDZMeUI4ZkNBdlZYTmxjaTFCWjJWdWREb3ZLVHNLY0hKcGJuUWdVa1ZOVDFSRklDUmZPd3BzWVhOMElHbG1JQ2drWHlBOWZpQXZYbHRjYzF4NE1EQmRLaVF2Sw0KVHNLZlFwd2NtbHVkQ0JTUlUxUFZFVWdJbHh1SWpzS0pHaGxZV1JsY2lBOUlERTdDbmRvYVd4bElDZzhVa1ZOVDFSRlBpa2dld3B3Y21sdWRDQlRSVk5UU1U5T0lDUmZPd3BwWmlBb0pHaGxZV1JsY2lrZw0KZXlBZ0lDQWdDbWxtSUNna2FHVmhaR1Z5SUNZbUlDUmZJRDErSUM5ZVcxeHpYSGd3TUYwcUpDOHBJSHNLSkdobFlXUmxjaUE5SURBN0NuMEtmUXA5Q21Oc2IzTmxJQ2hTUlUxUFZFVXBPd3BqYkc5elpTQQ0Kb1UwVlRVMGxQVGlrN0NuMEtZMnh2YzJVZ0tGTlBRMHNwT3dwemRXSWdZVzVoYkhsNlpWOXlaWEYxWlhOMElIc0tiWGtnS0NSbWFYTjBMQ0FrZFhKc0xDQWtjbVZ0YjNSbFgyaHZjM1FzSUNSeVpXMXZkRw0KVmZjRzl5ZEN3Z0pHMWxkR2h2WkNrN0NpUm1hWEp6ZENBOUlEeFRSVk5UU1U5T1Bqc0tKSFZ5YkNBOUlDZ2tabWx5YzNRZ1BYNGdiWHdvYUhSMGNEb3ZMMXhUS3lsOEtWc3dYVHNLS0NSdFpYUm9iMlFzSQ0KQ1J5WlcxdmRHVmZhRzl6ZEN3Z0pISmxiVzkwWlY5d2IzSjBLU0E5SUFvb0pHWnBjbk4wSUQxK0lHMGhLRWRGVkNrZ2FIUjBjRG92THloYlhpODZYU3NwT2o4b1hHUXFLU0VnS1RzS2FXWWdLQ0VrY21WdA0KYjNSbFgyaHZjM1FwSUhzS1kyeHZjMlVvVTBWVFUwbFBUaWs3Q21WNGFYUTdDbjBLSkhKbGJXOTBaVjl3YjNKMElEMGdJbWgwZEhBaUlIVnViR1Z6Y3lBb0pISmxiVzkwWlY5d2IzSjBLVHNLSkdacGNuTg0KMElEMStJSE12YUhSMGNEcGNMMXd2VzE1Y0wxMHJMeTg3Q25KbGRIVnliaUFvSkdacGNuTjBMQ0FrYldWMGFHOWtMQ0FrY21WdGIzUmxYMmh2YzNRc0lDUnlaVzF2ZEdWZmNHOXlkQ2s3Q24wS2MzVmlJRw0KOXdaVzVmWTI5dWJtVmpkR2x2YmlCN0NtMTVJQ2drYUc5emRDd2dKSEJ2Y25RcElEMGdRRjliTVN3eVhUc0tiWGtnS0NSa1pYTjBYMkZrWkhJc0lDUmpkWElwT3dwcFppQW9KSEJ2Y25RZ0lYNGdMMTVjWg0KQ3NrTHlrZ2V3b2tjRzl5ZENBOUlDaG5aWFJ6WlhKMllubHVZVzFsS0NSd2IzSjBMQ0FpZEdOd0lpa3BXekpkT3dva2NHOXlkQ0E5SURnd0lIVnViR1Z6Y3lBb0pIQnZjblFwT3dwOUNpUm9iM04wSUQwZw0KYVc1bGRGOWhkRzl1SUNna2FHOXpkQ2tnYjNJZ2NtVjBkWEp1SURBN0NpUmtaWE4wWDJGa1pISWdQU0J6YjJOcllXUmtjbDlwYmlBb0pIQnZjblFzSUNSb2IzTjBLVHNLYzI5amEyVjBJQ2drWDFzd1hTdw0KZ1FVWmZTVTVGVkN3Z1UwOURTMTlUVkZKRlFVMHNJQ1J3Y205MGIyTnZiQ2tnYjNJZ1pHbGxJQ0p6YjJOclpYUW9LU0E2SUNRaElqc0tZMjl1Ym1WamRDQW9KRjliTUYwc0lDUmtaWE4wWDJGa1pISXBJRw0KOXlJSEpsZEhWeWJpQXdPd29rWTNWeUlEMGdjMlZzWldOMEtDUmZXekJkS1RzZ0lBb2tmQ0E5SURFN0NuTmxiR1ZqZENna1kzVnlLVHNLY21WMGRYSnVJREU3Q24wPSI7DQoNCmlmKCR1bml4KQ0KIHsNCiBpZighaXNzZXQoJF9DT09LSUVbJ3VuYW1lJ10pKSB7ICR1bmFtZSA9IGV4KCd1bmFtZSAtYScpOyBzZXRjb29raWUoJ3VuYW1lJywkdW5hbWUpOyB9IGVsc2UgeyAkdW5hbWUgPSAkX0NPT0tJRVsndW5hbWUnXTsgfQ0KIGlmKCFpc3NldCgkX0NPT0tJRVsnaWQnXSkpIHsgJGlkID0gZXgoJ2lkJyk7IHNldGNvb2tpZSgnaWQnLCRpZCk7IH0gZWxzZSB7ICRpZCA9ICRfQ09PS0lFWydpZCddOyB9DQogaWYoJHNhZmVfbW9kZSkgeyAkc3lzY3RsID0gJy0nOyB9DQogZWxzZSBpZihpc3NldCgkX0NPT0tJRVsnc3lzY3RsJ10pKSB7ICRzeXNjdGwgPSAkX0NPT0tJRVsnc3lzY3RsJ107IH0NCiBlbHNlDQogIHsNCiAgICRzeXNjdGwgPSBleCgnc3lzY3RsIC1uIGtlcm4ub3N0eXBlICYmIHN5c2N0bCAtbiBrZXJuLm9zcmVsZWFzZScpOw0KICAgaWYoZW1wdHkoJHN5c2N0bCkpIHsgJHN5c2N0bCA9IGV4KCdzeXNjdGwgLW4ga2VybmVsLm9zdHlwZSAmJiBzeXNjdGwgLW4ga2VybmVsLm9zcmVsZWFzZScpOyB9DQogICBpZihlbXB0eSgkc3lzY3RsKSkgeyAkc3lzY3RsID0gJy0nOyB9DQogICBzZXRjb29raWUoJ3N5c2N0bCcsJHN5c2N0bCk7DQogIH0NCiB9DQplY2hvICRoZWFkOw0KZWNobyAnPC9oZWFkPic7DQoNCmVjaG8gJzxib2R5Pjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSNGRkZGRkY+PHRyPjx0ZCBiZ2NvbG9yPSMwQzBDMEMgd2lkdGg9MTYwPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPTI+Jy53cygyKS4nPGZvbnQgZmFjZT1XZWJkaW5ncyBzaXplPTY+PGI+djQ8L2I+PC9mb250PjxiPicud3MoMikuJ1RlYW0gJy4kdmVyc2lvbi4nPC9iPjwvZm9udD48L3RkPjx0ZCBiZ2NvbG9yPSMwQzBDMEM+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+JzsNCmVjaG8gd3MoMikuIjxiPiIuZGF0ZSAoImQtbS1ZIEg6aTpzIikuIjwvYj4gWW91ciBJUDogWzxmb250IGNvbG9yPTA2N0FGQz4iLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbIlJFTU9URV9BRERSIl0pLiI8L2ZvbnQ+XSI7DQppZihpc3NldCgkX1NFUlZFUlsnWF9GT1JXQVJERURfRk9SJ10pKXtlY2hvICIgWF9GT1JXQVJERURfRk9SOiBbPGZvbnQgY29sb3I9cmVkPiIuJF9TRVJWRVJbJ1hfRk9SV0FSREVEX0ZPUiddLiI8L2ZvbnQ+XSI7fQ0KaWYoaXNzZXQoJF9TRVJWRVJbJ0NMSUVOVF9JUCddKSl7ZWNobyAiIENMSUVOVF9JUDogWzxmb250IGNvbG9yPXJlZD4iLiRfU0VSVkVSWydDTElFTlRfSVAnXS4iPC9mb250Pl0iO30NCmVjaG8gIiBTZXJ2ZXIgSVA6IFs8Zm9udCBjb2xvcj0wNjdBRkM+Ii5nZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuIjwvZm9udD5dIjsNCg0KZWNobyAiPGJyPiI7DQoNCmVjaG8gd3MoMikuIlBIUCB2ZXJzaW9uOiA8Zm9udCBjb2xvcj0wNjdBRkM+PGI+Ii5AcGhwdmVyc2lvbigpLiI8L2I+PC9mb250PiI7DQokY3VybF9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpOw0KZWNobyB3cygyKTsNCmVjaG8gImNVUkw6IDxiPiIuKCgkY3VybF9vbik/KCI8Zm9udCBjb2xvcj0yQkQ1M0Y+T048L2ZvbnQ+Iik6KCI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PiIpKTsNCmVjaG8gIjwvYj4iLndzKDIpOw0KZWNobyAiTXlTUUw6IDxiPiI7DQokbXlzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0Jyk7DQppZigkbXlzcWxfb24pew0KZWNobyAiPGZvbnQgY29sb3I9MkJENTNGPk9OPC9mb250PiI7IH0gZWxzZSB7IGVjaG8gIjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+IjsgfQ0KZWNobyAiPC9iPiIud3MoMik7DQplY2hvICJNU1NRTDogPGI+IjsNCiRtc3NxbF9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKTsNCmlmKCRtc3NxbF9vbil7ZWNobyAiPGZvbnQgY29sb3I9MkJENTNGPk9OPC9mb250PiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD4iO30NCmVjaG8gIjwvYj4iLndzKDIpOw0KZWNobyAiUG9zdGdyZVNRTDogPGI+IjsNCiRwZ19vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKTsNCmlmKCRwZ19vbil7ZWNobyAiPGZvbnQgY29sb3I9MkJENTNGPk9OPC9mb250PiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD4iO30NCmVjaG8gIjwvYj4iLndzKDIpOw0KZWNobyAiT3JhY2xlOiA8Yj4iOw0KJG9yYV9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJyk7DQppZigkb3JhX29uKXtlY2hvICI8Zm9udCBjb2xvcj0yQkQ1M0Y+T048L2ZvbnQ+Ijt9ZWxzZXtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PiI7fQ0KZWNobyAiPC9iPjxicj4iLndzKDIpOw0KDQplY2hvICJTYWZlX21vZGU6IDxiPiI7DQplY2hvICgoJHNhZmVfbW9kZSk/KCI8Zm9udCBjb2xvcj0yQkQ1M0Y+T048L2ZvbnQ+Iik6KCI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PiIpKTsNCmVjaG8gIjwvYj4iLndzKDIpOw0KZWNobyAiT3Blbl9iYXNlZGlyOiA8Yj4iOw0KaWYoJG9wZW5fYmFzZWRpcikgeyBpZiAoJyc9PSgkZGY9QGluaV9nZXQoJ29wZW5fYmFzZWRpcicpKSkge2VjaG8gIjxmb250IGNvbG9yPXJlZD5pbmlfZ2V0IGRpc2FibGUhPC9mb250PjwvYj4iO31lbHNlIHtlY2hvICI8Zm9udCBjb2xvcj0yQkQ1M0Y+JGRmPC9mb250PjwvYj4iO307fQ0KZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk5PTkU8L2ZvbnQ+PC9iPiI7fQ0KZWNobyB3cygyKS4iU2FmZV9tb2RlX2V4ZWNfZGlyOiA8Yj4iOw0KaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB7IGlmICgnJz09KCRkZj1AaW5pX2dldCgnc2FmZV9tb2RlX2V4ZWNfZGlyJykpKSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk5PTkU8L2ZvbnQ+PC9iPiI7fWVsc2Uge2VjaG8gIjxmb250IGNvbG9yPTJCRDUzRj4kZGY8L2ZvbnQ+PC9iPiI7fTt9DQplbHNlIHtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+aW5pX2dldCBkaXNhYmxlITwvZm9udD48L2I+Ijt9DQplY2hvIHdzKDIpLiJTYWZlX21vZGVfaW5jbHVkZV9kaXI6IDxiPiI7DQppZihAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpIHsgaWYgKCcnPT0oJGRmPUBpbmlfZ2V0KCdzYWZlX21vZGVfaW5jbHVkZV9kaXInKSkpIHtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+Tk9ORTwvZm9udD48L2I+Ijt9ZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9MkJENTNGPiRkZjwvZm9udD48L2I+Ijt9O30NCmVsc2Uge2VjaG8gIjxmb250IGNvbG9yPXJlZD5pbmlfZ2V0IGRpc2FibGUhPC9mb250PjwvYj4iO30NCmVjaG8gIjxicj4iLndzKDIpOw0KZWNobyAiRGlzYWJsZWQgZnVuY3Rpb25zIDogPGI+IjskZGY9J2luaV9nZXQgIGRpc2FibGUhJzsNCmlmKChAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpICYmICgnJz09KCRkZj1AaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKSkpKXtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+Tk9ORTwvZm9udD48L2I+Ijt9ZWxzZXtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+JGRmPC9mb250PjwvYj4iO30NCg0KJGZyZWUgPSBAZGlza2ZyZWVzcGFjZSgkZGlyKTsNCmlmICghJGZyZWUpIHskZnJlZSA9IDA7fQ0KJGFsbCA9IEBkaXNrX3RvdGFsX3NwYWNlKCRkaXIpOw0KaWYgKCEkYWxsKSB7JGFsbCA9IDA7fQ0KZWNobyAiPGJyPiIud3MoMikuIkZyZWUgc3BhY2UgOiA8Yj4iLnZpZXdfc2l6ZSgkZnJlZSkuIjwvYj4gVG90YWwgc3BhY2U6IDxiPiIudmlld19zaXplKCRhbGwpLiI8L2I+IjsNCg0KJHVzdD0nJzsNCmlmKCR1bml4ICYmICEkc2FmZV9tb2RlKXsNCmlmICh3aGljaCgnZ2NjJykpIHskdXN0Lj0iZ2NjLCI7fQ0KaWYgKHdoaWNoKCdjYycpKSB7JHVzdC49ImNjLCI7fQ0KaWYgKHdoaWNoKCduYW5vJykpIHskdXN0Lj0ibmFubywiO30NCmlmICh3aGljaCgncGljbycpKSB7JHVzdC49InBpY28sIjt9DQppZiAod2hpY2goJ2xkJykpIHskdXN0Lj0ibGQsIjt9DQppZiAod2hpY2goJ3BocCcpKSB7JHVzdC49InBocCwiO30NCmlmICh3aGljaCgncGVybCcpKSB7JHVzdC49InBlcmwsIjt9DQppZiAod2hpY2goJ3B5dGhvbicpKSB7JHVzdC49InB5dGhvbiwiO30NCmlmICh3aGljaCgncnVieScpKSB7JHVzdC49InJ1YnksIjt9DQppZiAod2hpY2goJ21ha2UnKSkgeyR1c3QuPSJtYWtlLCI7fQ0KaWYgKHdoaWNoKCd0YXInKSkgeyR1c3QuPSJ0YXIsIjt9DQppZiAod2hpY2goJ25jJykpIHskdXN0Lj0ibmV0Y2F0LCI7fQ0KaWYgKHdoaWNoKCdsb2NhdGUnKSkgeyR1c3QuPSJsb2NhdGUsIjt9DQppZiAod2hpY2goJ3N1aWRwZXJsJykpIHskdXN0Lj0ic3VpZHBlcmwsIjt9DQp9DQppZiAoQGZ1bmN0aW9uX2V4aXN0cygncGNudGxfZXhlYycpKSB7JHVzdC49InBjbnRsX2V4ZWMsIjt9DQojaWYgKHdoaWNoKCcnKSkgeyR1c3QuPSIsIjt9DQppZigkdXN0KXtlY2hvICI8YnI+Ii53cygyKS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM3J10uIjogPGZvbnQgY29sb3I9MDY3QUZDPiIuJHVzdC4iPC9mb250PiI7fQ0KDQokdXN0PScnOw0KaWYoJHVuaXggJiYgISRzYWZlX21vZGUpew0KaWYgKHdoaWNoKCdrYXYnKSkgeyR1c3QuPSJrYXYsIjt9DQppZiAod2hpY2goJ25vZDMyJykpIHskdXN0Lj0ibm9kMzIsIjt9DQppZiAod2hpY2goJ2JkY29yZWQnKSkgeyR1c3QuPSJiaXRkZWZlbmRlciwiO30NCmlmICh3aGljaCgndXZzY2FuJykpIHskdXN0Lj0ibWNhZmVlLCI7fQ0KaWYgKHdoaWNoKCdzYXYnKSkgeyR1c3QuPSJzeW1hbnRlYywiO30NCmlmICh3aGljaCgnbHlueCcpKSB7JHVzdC49Imx5bngsIjt9DQppZiAod2hpY2goJ2Ryd2ViZCcpKSB7JHVzdD0iZHJ3ZWJkLCI7fQ0KaWYgKHdoaWNoKCdjbGFtZCcpKSB7JHVzdC49ImNsYW1kLCI7fQ0KaWYgKHdoaWNoKCdya2h1bnRlcicpKSB7JHVzdC49InJraHVudGVyLCI7fQ0KaWYgKHdoaWNoKCdjaGtyb290a2l0JykpIHskdXN0Lj0iY2hrcm9vdGtpdCwiO30NCmlmICh3aGljaCgnaXB0YWJsZXMnKSkgeyR1c3QuPSJpcHRhYmxlcywiO30NCmlmICh3aGljaCgnaXBmdycpKSB7JHVzdC49ImlwZncsIjt9DQppZiAod2hpY2goJ3RyaXB3aXJlJykpIHskdXN0Lj0idHJpcHdpcmUsIjt9DQppZiAod2hpY2goJ3NoaWVsZGNjJykpIHskdXN0Lj0ic3RhY2tzaGllbGQsIjt9DQppZiAod2hpY2goJ3BvcnRzZW50cnknKSkgeyR1c3QuPSJwb3J0c2VudHJ5LCI7fQ0KaWYgKHdoaWNoKCdzbm9ydCcpKSB7JHVzdC49InNub3J0LCI7fQ0KaWYgKHdoaWNoKCdvc3NlYycpKSB7JHVzdC49Im9zc2VjLCI7fQ0KaWYgKHdoaWNoKCdsaWRzYWRtJykpIHskdXN0Lj0ibGlkc2FkbSwiO30NCmlmICh3aGljaCgndGNwbG9kZycpKSB7JHVzdC49InRjcGxvZGcsIjt9DQppZiAod2hpY2goJ3RyaXB3aXJlJykpIHskdXN0Lj0idHJpcHdpcmUsIjt9DQppZiAod2hpY2goJ3N4aWQnKSkgeyR1c3QuPSJzeGlkLCI7fQ0KaWYgKHdoaWNoKCdsb2djaGVjaycpKSB7JHVzdC49ImxvZ2NoZWNrLCI7fQ0KaWYgKHdoaWNoKCdsb2d3YXRjaCcpKSB7JHVzdC49ImxvZ3dhdGNoLCI7fQ0KfQ0KaWYgKEBmdW5jdGlvbl9leGlzdHMoJ2FwYWNoZV9nZXRfbW9kdWxlcycpICYmIEBpbl9hcnJheSgnbW9kX3NlY3VyaXR5JyxhcGFjaGVfZ2V0X21vZHVsZXMoKSkpIHskdXN0Lj0ibW9kX3NlY3VyaXR5LCI7fQ0KaWYoJHVzdCl7ZWNobyAiPGJyPiIud3MoMikuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzOCddLiI6IDxmb250IGNvbG9yPXJlZD4kdXN0PC9mb250PiI7fQ0KDQoNCmVjaG8gIjxicj4iLndzKDIpLiI8L2I+IjsNCmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/cGhwaW5mbyB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ2J10uIlwiPjxiPnBocGluZm88L2I+PC9hPiAiLiRyYjsNCmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/cGhwaW5pIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDcnXS4iXCI+PGI+cGhwaW5pPC9iPjwvYT4gIi4kcmI7DQplY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP2NwdSB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDUwJ10uIlwiPjxiPmNwdTwvYj48L2E+ICIuJHJiOw0KZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9tZW0gdGl0bGU9XCIiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1MSddLiJcIj48Yj5tZW08L2I+PC9hPiAiLiRyYjsNCmlmKCEkdW5peCkgew0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/c3lzdGVtaW5mbyB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDUwJ10uIlwiPjxiPnN5c3RlbWluZm88L2I+PC9hPiAiLiRyYjsNCn1lbHNlew0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/c3lzbG9nIHRpdGxlPVwiVmlldyBzeXNsb2cuY29uZlwiPjxiPnN5c2xvZzwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/cmVzb2x2IHRpdGxlPVwiVmlldyByZXNvbHZcIj48Yj5yZXNvbHY8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP2hvc3RzIHRpdGxlPVwiVmlldyBob3N0c1wiPjxiPmhvc3RzPC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9zaGFkb3cgdGl0bGU9XCJWaWV3IHNoYWRvd1wiPjxiPnNoYWRvdzwvYj48L2E+ICIuJHJiOw0KDQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9wYXNzd2QgdGl0bGU9XCIiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5NSddLiJcIj48Yj5wYXNzd2Q8L2I+PC9hPiAiLiRyYjsNCn0NCmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dG1wIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDgnXS4iXCI+PGI+dG1wPC9iPjwvYT4gIi4kcmI7DQplY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP2RlbGV0ZSB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ5J10uIlwiPjxiPmRlbGV0ZTwvYj48L2E+ICIuJHJiOw0KDQppZigkdW5peCAmJiAhJHNhZmVfbW9kZSkNCnsNCiBlY2hvICI8YnI+Ii53cygyKS4iPC9iPiI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9wcm9jaW5mbyB0aXRsZT1cIlZpZXcgcHJvY2luZm9cIj48Yj5wcm9jaW5mbzwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dmVyc2lvbiB0aXRsZT1cIlZpZXcgcHJvYyB2ZXJzaW9uXCI+PGI+dmVyc2lvbjwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/ZnJlZSB0aXRsZT1cIlZpZXcgbWVtIGZyZWVcIj48Yj5mcmVlPC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9kbWVzZyg4KSB0aXRsZT1cIlZpZXcgZG1lc2dcIj48Yj5kbWVzZzwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dm1zdGF0IHRpdGxlPVwiVmlldyB2bXN0YXRcIj48Yj52bXN0YXQ8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP2xzcGNpIHRpdGxlPVwiVmlldyBsc3BjaVwiPjxiPmxzcGNpPC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9sc2RldiB0aXRsZT1cIlZpZXcgbHNkZXZcIj48Yj5sc2RldjwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/c2JpbiB0aXRsZT1cIlZpZXcgcnVubmluZyBwcm9ncmFtc1wiPjxiPnNiaW48L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP2ludGVycnVwdHMgdGl0bGU9XCJWaWV3IGludGVycnVwdHNcIj48Yj5pbnRlcnJ1cHRzPC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9yZWFsaXNlMSB0aXRsZT1cIlZpZXcgcmVhbGlzZTFcIj48Yj5yZWFsaXNlMTwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/cmVhbGlzZTIgdGl0bGU9XCJWaWV3IHJlYWxpc2UyXCI+PGI+cmVhbGlzZTI8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP2xzYXR0ciB0aXRsZT1cIlZpZXcgbHNhdHRyIC12YVwiPjxiPmxzYXR0cjwvYj48L2E+ICIuJHJiOw0KIGVjaG8gIjxicj4iLndzKDIpLiI8L2I+IjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3cgdGl0bGU9XCJWaWV3IHdcIj48Yj53PC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj93aG8gdGl0bGU9XCJWaWV3IHdobyBpcyBvbmxpbmVcIj48Yj53aG88L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3VwdGltZSB0aXRsZT1cIlZpZXcgc2VydmVyIHVwdGltZVwiPjxiPnVwdGltZTwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/bGFzdCB0aXRsZT1cIlZpZXcgbGFzdCAtbiAxMFwiPjxiPmxhc3Q8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3BzYXV4IHRpdGxlPVwiVmlldyBwcyAtYXV4XCI+PGI+cHMgYXV4PC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9zZXJ2aWNlIHRpdGxlPVwiVmlldyBzZXJ2aWNlXCI+PGI+c2VydmljZTwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/aWZjb25maWcgdGl0bGU9XCJWaWV3IG5ldHdvcmsgY29uZmlnXCI+PGI+aWZjb25maWc8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP25ldHN0YXQgdGl0bGU9XCJWaWV3IG5ldHN0YXQgLWFcIj48Yj5uZXRzdGF0PC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9mc3RhYiB0aXRsZT1cIlZpZXcgZnN0YWJcIj48Yj5mc3RhYjwvYj48L2E+ICIuJHJiOw0KIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/ZmRpc2sgdGl0bGU9XCJWaWV3IGZkaXNrIC1sXCI+PGI+ZmRpc2s8L2I+PC9hPiAiLiRyYjsNCiBlY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP2RmIHRpdGxlPVwiVmlldyBkZiAtaFwiPjxiPmRmIC1oPC9iPjwvYT4gIi4kcmI7DQogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9hY2NvdW50cyB0aXRsZT1cImFjY291bnRzIHVzaW5nIHRoZSBzZXJ2ZXJcIj48Yj5hY2NvdW50czwvYj48L2E+ICIuJHJiOw0KfQ0KDQplY2hvICc8L2ZvbnQ+PC90ZD48L3RyPjx0YWJsZT4NCjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSNGRkZGRkY+DQo8dHI+PHRkIGFsaWduPXJpZ2h0IHdpZHRoPTEwMD4nOw0KZWNobyAkZm9udDsNCg0KaWYoJHVuaXgpew0KZWNobyAnPGZvbnQgY29sb3I9MDY3QUZDPjxiPnVuYW1lIC1hIDonLndzKDEpLic8YnI+c3lzY3RsIDonLndzKDEpLic8YnI+JE9TVFlQRSA6Jy53cygxKS4nPGJyPlNlcnZlciA6Jy53cygxKS4nPGJyPmlkIDonLndzKDEpLic8YnI+cHdkIDonLndzKDEpLic8L2I+PC9mb250Pjxicj4nOw0KZWNobyAiPC90ZD48dGQ+IjsNCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj4iOw0KZWNobygoIWVtcHR5KCR1bmFtZSkpPyh3cygzKS5Ac3Vic3RyKCR1bmFtZSwwLDEyMCkuIjxicj4iKTood3MoMykuQHN1YnN0cihAcGhwX3VuYW1lKCksMCwxMjApLiI8YnI+IikpOw0KZWNobyB3cygzKS4kc3lzY3RsLiI8YnI+IjsNCmVjaG8gd3MoMykuZXgoJ2VjaG8gJE9TVFlQRScpLiI8YnI+IjsNCmVjaG8gd3MoMykuQHN1YnN0cigkU0VSVkVSX1NPRlRXQVJFLDAsMTIwKS4iPGJyPiI7DQppZighZW1wdHkoJGlkKSkgeyBlY2hvIHdzKDMpLiRpZC4iPGJyPiI7IH0NCmVsc2UgaWYoQGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZXVpZCcpICYmIEBmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGVnaWQnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRncmdpZCcpICYmIEBmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykpDQogew0KICRldXNlcmluZm8gID0gQHBvc2l4X2dldHB3dWlkKEBwb3NpeF9nZXRldWlkKCkpOw0KICRlZ3JvdXBpbmZvID0gQHBvc2l4X2dldGdyZ2lkKEBwb3NpeF9nZXRlZ2lkKCkpOw0KIGVjaG8gd3MoMykuJ3VpZD0nLiRldXNlcmluZm9bJ3VpZCddLicgKCAnLiRldXNlcmluZm9bJ25hbWUnXS4nICkgZ2lkPScuJGVncm91cGluZm9bJ2dpZCddLicgKCAnLiRlZ3JvdXBpbmZvWyduYW1lJ10uJyApPGJyPic7DQogfQ0KZWxzZSBlY2hvIHdzKDMpLiJ1c2VyPSIuQGdldF9jdXJyZW50X3VzZXIoKS4iIHVpZD0iLkBnZXRteXVpZCgpLiIgZ2lkPSIuQGdldG15Z2lkKCkuIjxicj4iOw0KZWNobyB3cygzKS4kZGlyOw0KZWNobyB3cygzKS4nKCAnLnBlcm1zKEBmaWxlcGVybXMoJGRpcikpLicgKSc7DQplY2hvICI8L2I+PC9mb250PiI7DQp9DQplbHNlDQp7DQplY2hvICc8Zm9udCBjb2xvcj0wNjdBRkM+PGI+T1MgOicud3MoMSkuJzxicj5TZXJ2ZXIgOicud3MoMSkuJzxicj5Vc2VyIDonLndzKDEpLic8YnI+cHdkIDonLndzKDEpLic8L2I+PC9mb250Pjxicj4nOw0KZWNobyAiPC90ZD48dGQ+IjsNCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj4iOw0KZWNobyB3cygzKS5Ac3Vic3RyKEBwaHBfdW5hbWUoKSwwLDEyMCkuIjxicj4iOw0KZWNobyB3cygzKS5Ac3Vic3RyKCRTRVJWRVJfU09GVFdBUkUsMCwxMjApLiI8YnI+IjsNCmVjaG8gd3MoMykuQGdldGVudigiVVNFUk5BTUUiKS4iPGJyPiI7DQplY2hvIHdzKDMpLiRkaXI7DQplY2hvICI8YnI+PC9mb250PiI7DQp9DQplY2hvICI8L2ZvbnQ+IjsNCmVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPiI7DQoNCmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddPT0ibWFpbCIpDQogew0KICRyZXMgPSBtYWlsKCRfUE9TVFsndG8nXSwkX1BPU1RbJ3N1YmonXSwkX1BPU1RbJ3RleHQnXSwiRnJvbTogIi4kX1BPU1RbJ2Zyb20nXS4iXHJcbiIpOw0KIGVycig2KyRyZXMpOw0KICRfUE9TVFsnY21kJ109IiI7DQogfQ0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJtYWlsX2ZpbGUiICYmICFlbXB0eSgkX1BPU1RbJ2xvY19maWxlJ10pKQ0KIHsNCiAgaWYoJGZpbGU9QGZvcGVuKCRfUE9TVFsnbG9jX2ZpbGUnXSwiciIpKXsgJGZpbGVkdW1wID0gQGZyZWFkKCRmaWxlLEBmaWxlc2l6ZSgkX1BPU1RbJ2xvY19maWxlJ10pKTsgQGZjbG9zZSgkZmlsZSk7IH0NCiAgZWxzZSBpZiAoJGZpbGU9cmVhZHpsaWIoJF9QT1NUWydsb2NfZmlsZSddKSkgeyAkZmlsZWR1bXAgPSAkZmlsZTsgfSBlbHNlIHsgZXJyKDEsJF9QT1NUWydsb2NfZmlsZSddKTsgJF9QT1NUWydjbWQnXT0iIjsgfQ0KICBpZihpc3NldCgkX1BPU1RbJ2NtZCddKSkNCiAgew0KICAgICRmaWxlbmFtZSA9IEBiYXNlbmFtZSgkX1BPU1RbJ2xvY19maWxlJ10pOw0KICAgICRjb250ZW50X2VuY29kaW5nPSRtaW1lX3R5cGU9Jyc7DQogICAgY29tcHJlc3MoJGZpbGVuYW1lLCRmaWxlZHVtcCwkX1BPU1RbJ2NvbXByZXNzJ10pOw0KICAgICRhdHRhY2ggPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgIm5hbWUiPT4kZmlsZW5hbWUsDQogICAgICAgICAgICAgICAgICAgICJ0eXBlIj0+JG1pbWVfdHlwZSwNCiAgICAgICAgICAgICAgICAgICAgImNvbnRlbnQiPT4kZmlsZWR1bXANCiAgICAgICAgICAgICAgICAgICApOw0KICAgIGlmKGVtcHR5KCRfUE9TVFsnc3ViaiddKSkgeyAkX1BPU1RbJ3N1YmonXSA9ICdZb3UgZ290IGEgZmlsZSBmcm9tIHY0IFRlYW0nOyB9DQogICAgaWYoZW1wdHkoJF9QT1NUWydmcm9tJ10pKSB7ICRfUE9TVFsnZnJvbSddID0gJ2htYkBnb3Yuc2QnOyB9DQogICAgJHJlcyA9IG1haWxhdHRhY2goJF9QT1NUWyd0byddLCRfUE9TVFsnZnJvbSddLCRfUE9TVFsnc3ViaiddLCRhdHRhY2gpOw0KICAgIGVycig2KyRyZXMpOw0KICAgICRfUE9TVFsnY21kJ109IiI7DQogIH0NCiB9DQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09Im1haWxfYm9tYmVyIiAmJiAhZW1wdHkoJF9QT1NUWydtYWlsX2Zsb29kJ10pICYmICFlbXB0eSgkX1BPU1RbJ21haWxfc2l6ZSddKSkNCiB7DQogZm9yKCRoPTE7JGg8PSRfUE9TVFsnbWFpbF9mbG9vZCddOyRoKyspew0KICAkcmVzID0gbWFpbCgkX1BPU1RbJ3RvJ10sJF9QT1NUWydzdWJqJ10sJF9QT1NUWyd0ZXh0J10uc3RyX3JlcGVhdCgiICIsIDEwMjQqJF9QT1NUWydtYWlsX3NpemUnXSksIkZyb206ICIuJF9QT1NUWydmcm9tJ10uIlxyXG4iKTsNCiB9DQogZXJyKDYrJHJlcyk7DQogJF9QT1NUWydjbWQnXT0iIjsNCiB9DQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXSA9PSAiZmluZF90ZXh0IikNCnsNCiRfUE9TVFsnY21kJ10gPSAnZmluZCAnLiRfUE9TVFsnc19kaXInXS4nIC1uYW1lIFwnJy4kX1BPU1RbJ3NfbWFzayddLidcJyB8IHhhcmdzIGdyZXAgLUUgXCcnLiRfUE9TVFsnc190ZXh0J10uJ1wnJzsNCn0NCmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddPT0iY2hfIikNCiB7DQogc3dpdGNoKCRfUE9TVFsnd2hhdCddKQ0KICAgew0KICAgY2FzZSAnb3duJzoNCiAgIEBjaG93bigkX1BPU1RbJ3BhcmFtMSddLCRfUE9TVFsncGFyYW0yJ10pOw0KICAgYnJlYWs7DQogICBjYXNlICdncnAnOg0KICAgQGNoZ3JwKCRfUE9TVFsncGFyYW0xJ10sJF9QT1NUWydwYXJhbTInXSk7DQogICBicmVhazsNCiAgIGNhc2UgJ21vZCc6DQogICBAY2htb2QoJF9QT1NUWydwYXJhbTEnXSxpbnR2YWwoJF9QT1NUWydwYXJhbTInXSwgOCkpOw0KICAgYnJlYWs7DQogICB9DQogJF9QT1NUWydjbWQnXT0iIjsNCiB9DQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09Im1rIikNCiB7DQogICBzd2l0Y2goJF9QT1NUWyd3aGF0J10pDQogICB7DQogICAgIGNhc2UgJ2ZpbGUnOg0KICAgICAgaWYoJF9QT1NUWydhY3Rpb24nXSA9PSAiY3JlYXRlIikNCiAgICAgICB7DQogICAgICAgaWYoQGZpbGVfZXhpc3RzKCRfUE9TVFsnbWtfbmFtZSddKSB8fCAhJGZpbGU9QGZvcGVuKCRfUE9TVFsnbWtfbmFtZSddLCJ3IikpIHsgZXJyKDIsJF9QT1NUWydta19uYW1lJ10pOyAkX1BPU1RbJ2NtZCddPSIiOyB9DQogICAgICAgZWxzZSB7DQogICAgICAgIEBmY2xvc2UoJGZpbGUpOw0KICAgICAgICAkX1BPU1RbJ2VfbmFtZSddID0gJF9QT1NUWydta19uYW1lJ107DQogICAgICAgICRfUE9TVFsnY21kJ109ImVkaXRfZmlsZSI7DQogICAgICAgIGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSNGRkZGRkY+PHRyPjx0ZCBiZ2NvbG9yPSMwQzBDMEM+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjEnXS4iPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOw0KICAgICAgICB9DQogICAgICAgfQ0KICAgICAgIGVsc2UgaWYoJF9QT1NUWydhY3Rpb24nXSA9PSAiZGVsZXRlIikNCiAgICAgICB7DQogICAgICAgaWYodW5saW5rKCRfUE9TVFsnbWtfbmFtZSddKSkgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9I0ZGRkZGRj48dHI+PHRkIGJnY29sb3I9IzBDMEMwQz48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2MyddLiI8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAgJF9QT1NUWydjbWQnXT0iIjsNCiAgICAgICB9DQogICAgIGJyZWFrOw0KICAgICBjYXNlICdkaXInOg0KICAgICAgaWYoJF9QT1NUWydhY3Rpb24nXSA9PSAiY3JlYXRlIil7DQogICAgICBpZihAbWtkaXIoJF9QT1NUWydta19uYW1lJ10pKQ0KICAgICAgIHsNCiAgICAgICAgICRfUE9TVFsnY21kJ109IiI7DQogICAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jRkZGRkZGPjx0cj48dGQgYmdjb2xvcj0jMEMwQzBDPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYyJ10uIjwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+IjsNCiAgICAgICB9DQogICAgICBlbHNlIHsgZXJyKDIsJF9QT1NUWydta19uYW1lJ10pOyAkX1BPU1RbJ2NtZCddPSIiOyB9DQogICAgICB9DQogICAgICBlbHNlIGlmKCRfUE9TVFsnYWN0aW9uJ10gPT0gImRlbGV0ZSIpew0KICAgICAgaWYoQHJtZGlyKCRfUE9TVFsnbWtfbmFtZSddKSkgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9I0ZGRkZGRj48dHI+PHRkIGJnY29sb3I9IzBDMEMwQz48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2NCddLiI8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAkX1BPU1RbJ2NtZCddPSIiOw0KICAgICAgfQ0KICAgICBicmVhazsNCiAgIH0NCiB9DQoNCg0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJ0b3VjaCIpDQp7DQppZighJF9QT1NUWydmaWxlX25hbWVfciddKQ0KIHsNCiAgJGRhdGFyID0gJF9QT1NUWydkYXknXS4iICIuJF9QT1NUWydtb250aCddLiIgIi4kX1BPU1RbJ3llYXInXS4iICIuJF9QT1NUWydjaGFzaSddLiIgaG91cnMgIi4kX1BPU1RbJ21pbnV0ZXMnXS4iIG1pbnV0ZXMgIi4kX1BPU1RbJ3NlY29uZCddLiIgc2Vjb25kcyI7DQogICRkYXRhciA9IEBzdHJ0b3RpbWUoJGRhdGFyKTsNCiAgQHRvdWNoKCRfUE9TVFsnZmlsZV9uYW1lJ10sJGRhdGFyLCRkYXRhcik7fQ0KZWxzZXsNCiAgQHRvdWNoKCRfUE9TVFsnZmlsZV9uYW1lJ10sQGZpbGVtdGltZSgkX1BPU1RbJ2ZpbGVfbmFtZV9yJ10pLEBmaWxlbXRpbWUoJF9QT1NUWydmaWxlX25hbWVfciddKSk7DQp9DQokX1BPU1RbJ2NtZCddPSIiOw0KfQ0KDQoNCmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddPT0iZWRpdF9maWxlIiAmJiAhZW1wdHkoJF9QT1NUWydlX25hbWUnXSkpDQogew0KIGlmKCEkZmlsZT1AZm9wZW4oJF9QT1NUWydlX25hbWUnXSwicisiKSkgeyAkZmlsZWR1bXAgPSBAZnJlYWQoJGZpbGUsQGZpbGVzaXplKCRfUE9TVFsnZV9uYW1lJ10pKTsgQGZjbG9zZSgkZmlsZSk7ICRvbmx5X3JlYWQgPSAxOyB9DQogaWYoJGZpbGU9QGZvcGVuKCRfUE9TVFsnZV9uYW1lJ10sInIiKSkgeyAkZmlsZWR1bXAgPSBAZnJlYWQoJGZpbGUsQGZpbGVzaXplKCRfUE9TVFsnZV9uYW1lJ10pKTsgQGZjbG9zZSgkZmlsZSk7IH0NCiBlbHNlIGlmICgkZmlsZT1yZWFkemxpYigkX1BPU1RbJ2VfbmFtZSddKSkgeyAkZmlsZWR1bXAgPSAkZmlsZTsgJG9ubHlfcmVhZCA9IDE7IH0gZWxzZSB7IGVycigxLCRfUE9TVFsnZV9uYW1lJ10pOyAkX1BPU1RbJ2NtZCddPSIiOyB9DQogaWYoaXNzZXQoJF9QT1NUWydjbWQnXSkpDQogew0KIGVjaG8gJHRhYmxlX3VwMzsNCiBlY2hvICRmb250Ow0KIGVjaG8gIjxmb3JtIG5hbWU9c2F2ZV9maWxlIG1ldGhvZD1wb3N0PiI7DQogZWNobyB3cygzKS4iPGI+Ii4kX1BPU1RbJ2VfbmFtZSddLiI8L2I+IjsNCiBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48dGV4dGFyZWEgbmFtZT1lX3RleHQgY29scz0xMjEgcm93cz0yND4iOw0KIGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJGZpbGVkdW1wKTsNCiBlY2hvICI8L3RleHRhcmVhPiI7DQogZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZV9uYW1lIHZhbHVlPSIuJF9QT1NUWydlX25hbWUnXS4iPiI7DQogZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGlyIHZhbHVlPSIuJGRpci4iPiI7DQogZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Y21kIHZhbHVlPXNhdmVfZmlsZT4iOw0KIGVjaG8gKCFlbXB0eSgkb25seV9yZWFkKT8oIjxicj48YnI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDQnXSk6KCI8YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIiAiLiRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMCddLiIgXCI+IikpOw0KIGVjaG8gIjwvZGl2PiI7DQogZWNobyAiPC9mb250PiI7DQogZWNobyAiPC9mb3JtPiI7DQogZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCiBleGl0KCk7DQogfQ0KIH0NCmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddPT0ic2F2ZV9maWxlIikNCiB7DQogJG10aW1lID0gQGZpbGVtdGltZSgkX1BPU1RbJ2VfbmFtZSddKTsNCiBpZigoISRmaWxlPUBmb3BlbigkX1BPU1RbJ2VfbmFtZSddLCJ3IikpICYmICghZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpKSkgeyBlcnIoMCwkX1BPU1RbJ2VfbmFtZSddKTsgfQ0KIGVsc2Ugew0KIGlmKCR1bml4KSAkX1BPU1RbJ2VfdGV4dCddPUBzdHJfcmVwbGFjZSgiXHJcbiIsIlxuIiwkX1BPU1RbJ2VfdGV4dCddKTsNCiBAZndyaXRlKCRmaWxlLCRfUE9TVFsnZV90ZXh0J10pIG9yIEBmcHV0cygkZmlsZSwkX1BPU1RbJ2VfdGV4dCddKSBvciBAZmlsZV9wdXRfY29udGVudHMoJF9QT1NUWydlX25hbWUnXSwkX1BPU1RbJ2VfdGV4dCddKTsNCiBAdG91Y2goJF9QT1NUWydlX25hbWUnXSwkbXRpbWUsJG10aW1lKTsNCiAkX1BPU1RbJ2NtZCddPSIiOw0KIGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSNGRkZGRkY+PHRyPjx0ZCBiZ2NvbG9yPSMwQzBDMEM+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDUnXS4iPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOw0KIH0NCiB9DQoNCg0KaWYgKCFlbXB0eSgkX1BPU1RbJ3Byb3h5X3BvcnQnXSkmJigkX1BPU1RbJ3VzZSddPT0iUGVybCIpKQ0Kew0KIGNmKCIvdG1wL3ByeHBsIiwkcHJ4X3BsKTsNCiAkcDI9d2hpY2goInBlcmwiKTsNCiAkYmxhaCA9IGV4KCRwMi4iIC90bXAvcHJ4cGwgIi4kX1BPU1RbJ3Byb3h5X3BvcnQnXS4iICYiKTsNCiAkX1BPU1RbJ2NtZCddPSJwcyAtYXV4IHwgZ3JlcCBwcnhwbCI7DQp9DQppZiAoIWVtcHR5KCRfUE9TVFsncG9ydCddKSYmIWVtcHR5KCRfUE9TVFsnYmluZF9wYXNzJ10pJiYoJF9QT1NUWyd1c2UnXT09IkMiKSkNCnsNCiBjZigiL3RtcC9iZC5jIiwkcG9ydF9iaW5kX2JkX2MpOw0KICRibGFoID0gZXgoImdjYyAtbyAvdG1wL2JkIC90bXAvYmQuYyIpOw0KIEB1bmxpbmsoIi90bXAvYmQuYyIpOw0KICRibGFoID0gZXgoIi90bXAvYmQgIi4kX1BPU1RbJ3BvcnQnXS4iICIuJF9QT1NUWydiaW5kX3Bhc3MnXS4iICYiKTsNCiAkX1BPU1RbJ2NtZCddPSJwcyAtYXV4IHwgZ3JlcCBiZCI7DQp9DQppZiAoIWVtcHR5KCRfUE9TVFsncG9ydCddKSYmIWVtcHR5KCRfUE9TVFsnYmluZF9wYXNzJ10pJiYoJF9QT1NUWyd1c2UnXT09IlBlcmwiKSkNCnsNCiBjZigiL3RtcC9iZHBsIiwkcG9ydF9iaW5kX2JkX3BsKTsNCiAkcDI9d2hpY2goInBlcmwiKTsNCiAkYmxhaCA9IGV4KCRwMi4iIC90bXAvYmRwbCAiLiRfUE9TVFsncG9ydCddLiIgJiIpOw0KICRfUE9TVFsnY21kJ109InBzIC1hdXggfCBncmVwIGJkcGwiOw0KfQ0KaWYgKCFlbXB0eSgkX1BPU1RbJ2lwJ10pICYmICFlbXB0eSgkX1BPU1RbJ3BvcnQnXSkgJiYgKCRfUE9TVFsndXNlJ109PSJQZXJsIikpDQp7DQogY2YoIi90bXAvYmFjayIsJGJhY2tfY29ubmVjdCk7DQogJHAyPXdoaWNoKCJwZXJsIik7DQogJGJsYWggPSBleCgkcDIuIiAvdG1wL2JhY2sgIi4kX1BPU1RbJ2lwJ10uIiAiLiRfUE9TVFsncG9ydCddLiIgJiIpOw0KICRfUE9TVFsnY21kJ109ImVjaG8gXCJOb3cgc2NyaXB0IHRyeSBjb25uZWN0IHRvICIuJF9QT1NUWydpcCddLiIgcG9ydCAiLiRfUE9TVFsncG9ydCddLiIgLi4uXCIiOw0KfQ0KaWYgKCFlbXB0eSgkX1BPU1RbJ2lwJ10pICYmICFlbXB0eSgkX1BPU1RbJ3BvcnQnXSkgJiYgKCRfUE9TVFsndXNlJ109PSJDIikpDQp7DQogY2YoIi90bXAvYmFjay5jIiwkYmFja19jb25uZWN0X2MpOw0KICRibGFoID0gZXgoImdjYyAtbyAvdG1wL2JhY2tjIC90bXAvYmFjay5jIik7DQogQHVubGluaygiL3RtcC9iYWNrLmMiKTsNCiAkYmxhaCA9IGV4KCIvdG1wL2JhY2tjICIuJF9QT1NUWydpcCddLiIgIi4kX1BPU1RbJ3BvcnQnXS4iICYiKTsNCiAkX1BPU1RbJ2NtZCddPSJlY2hvIFwiTm93IHNjcmlwdCB0cnkgY29ubmVjdCB0byAiLiRfUE9TVFsnaXAnXS4iIHBvcnQgIi4kX1BPU1RbJ3BvcnQnXS4iIC4uLlwiIjsNCn0NCmlmICghZW1wdHkoJF9QT1NUWydsb2NhbF9wb3J0J10pICYmICFlbXB0eSgkX1BPU1RbJ3JlbW90ZV9ob3N0J10pICYmICFlbXB0eSgkX1BPU1RbJ3JlbW90ZV9wb3J0J10pICYmICgkX1BPU1RbJ3VzZSddPT0iUGVybCIpKQ0Kew0KIGNmKCIvdG1wL2RwIiwkZGF0YXBpcGVfcGwpOw0KICRwMj13aGljaCgicGVybCIpOw0KICRibGFoID0gZXgoJHAyLiIgL3RtcC9kcCAiLiRfUE9TVFsnbG9jYWxfcG9ydCddLiIgIi4kX1BPU1RbJ3JlbW90ZV9ob3N0J10uIiAiLiRfUE9TVFsncmVtb3RlX3BvcnQnXS4iICYiKTsNCiAkX1BPU1RbJ2NtZCddPSJwcyAtYXV4IHwgZ3JlcCBkcCI7DQp9DQppZiAoIWVtcHR5KCRfUE9TVFsnbG9jYWxfcG9ydCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfaG9zdCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfcG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IkMiKSkNCnsNCiBjZigiL3RtcC9kcGMuYyIsJGRhdGFwaXBlX2MpOw0KICRibGFoID0gZXgoImdjYyAtbyAvdG1wL2RwYyAvdG1wL2RwYy5jIik7DQogQHVubGluaygiL3RtcC9kcGMuYyIpOw0KICRibGFoID0gZXgoIi90bXAvZHBjICIuJF9QT1NUWydsb2NhbF9wb3J0J10uIiAiLiRfUE9TVFsncmVtb3RlX3BvcnQnXS4iICIuJF9QT1NUWydyZW1vdGVfaG9zdCddLiIgJiIpOw0KICRfUE9TVFsnY21kJ109InBzIC1hdXggfCBncmVwIGRwYyI7DQp9DQoNCmlmICghZW1wdHkoJF9QT1NUWydhbGlhcyddKSAmJiBpc3NldCgkYWxpYXNlc1skX1BPU1RbJ2FsaWFzJ11dKSkgeyAkX1BPU1RbJ2NtZCddID0gJGFsaWFzZXNbJF9QT1NUWydhbGlhcyddXTsgfQ0KDQpmb3IoJHVwbD0wOyR1cGw8PTE2OyR1cGwrKykNCnsNCiBpZighZW1wdHkoJEhUVFBfUE9TVF9GSUxFU1sndXNlcmZpbGUnLiR1cGxdWyduYW1lJ10pKXsNCiAgaWYoIWVtcHR5KCRfUE9TVFsnbmV3X25hbWUnXSkgJiYgKCR1cGw9PTApKSB7ICRuZm4gPSAkX1BPU1RbJ25ld19uYW1lJ107IH0NCiAgZWxzZSB7ICRuZm4gPSAkSFRUUF9QT1NUX0ZJTEVTWyd1c2VyZmlsZScuJHVwbF1bJ25hbWUnXTsgfQ0KICBAbW92ZV91cGxvYWRlZF9maWxlKCRIVFRQX1BPU1RfRklMRVNbJ3VzZXJmaWxlJy4kdXBsXVsndG1wX25hbWUnXSwkX1BPU1RbJ2RpciddLiIvIi4kbmZuKQ0KICBvciBwcmludCgiPGZvbnQgY29sb3I9cmVkIGZhY2U9Rml4ZWRzeXM+PGRpdiBhbGlnbj1jZW50ZXI+RXJyb3IgdXBsb2FkaW5nIGZpbGUgIi4kSFRUUF9QT1NUX0ZJTEVTWyd1c2VyZmlsZScuJHVwbF1bJ25hbWUnXS4iPC9kaXY+PC9mb250PiIpOw0KIH0NCn0NCg0KaWYgKCFlbXB0eSgkX1BPU1RbJ3dpdGgnXSkgJiYgIWVtcHR5KCRfUE9TVFsncmVtX2ZpbGUnXSkgJiYgIWVtcHR5KCRfUE9TVFsnbG9jX2ZpbGUnXSkpDQp7DQogc3dpdGNoKCRfUE9TVFsnd2l0aCddKQ0KIHsNCiBjYXNlICdmb3Blbic6DQogJGRhdGFmaWxlID0gQGltcGxvZGUoIiIsIEBmaWxlKCRfUE9TVFsncmVtX2ZpbGUnXSkpOw0KIGlmKCRkYXRhZmlsZSkNCiAgew0KICAgJHdfZmlsZT1AZm9wZW4oJF9QT1NUWydsb2NfZmlsZSddLCJ3YiIpIG9yIEBmdW5jdGlvbl9leGlzdHMoJ2ZpbGVfcHV0X2NvbnRlbnRzJykgb3IgZXJyKDApOw0KICAgaWYoJHdfZmlsZSkNCiAgIHsNCiAgICBAZndyaXRlKCR3X2ZpbGUsJGRhdGFmaWxlKSBvciBAZnB1dHMoJHdfZmlsZSwkZGF0YWZpbGUpIG9yIEBmaWxlX3B1dF9jb250ZW50cygkX1BPU1RbJ2xvY19maWxlJ10sJGRhdGFmaWxlKTsNCiAgICBAZmNsb3NlKCR3X2ZpbGUpOw0KICAgfQ0KICB9DQogJF9QT1NUWydjbWQnXSA9ICcnOw0KIGJyZWFrOw0KIGNhc2UgJ3dnZXQnOg0KICRfUE9TVFsnY21kJ10gPSB3aGljaCgnd2dldCcpLiIgIi4kX1BPU1RbJ3JlbV9maWxlJ10uIiAtTyAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIjsNCiBicmVhazsNCiBjYXNlICdmZXRjaCc6DQogJF9QT1NUWydjbWQnXSA9IHdoaWNoKCdmZXRjaCcpLiIgLW8gIi4kX1BPU1RbJ2xvY19maWxlJ10uIiAtcCAiLiRfUE9TVFsncmVtX2ZpbGUnXS4iIjsNCiBicmVhazsNCiBjYXNlICdseW54JzoNCiAkX1BPU1RbJ2NtZCddID0gd2hpY2goJ2x5bngnKS4iIC1zb3VyY2UgIi4kX1BPU1RbJ3JlbV9maWxlJ10uIiA+ICIuJF9QT1NUWydsb2NfZmlsZSddLiIiOw0KIGJyZWFrOw0KIGNhc2UgJ2xpbmtzJzoNCiAkX1BPU1RbJ2NtZCddID0gd2hpY2goJ2xpbmtzJykuIiAtc291cmNlICIuJF9QT1NUWydyZW1fZmlsZSddLiIgPiAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIjsNCiBicmVhazsNCiBjYXNlICdHRVQnOg0KICRfUE9TVFsnY21kJ10gPSB3aGljaCgnR0VUJykuIiAiLiRfUE9TVFsncmVtX2ZpbGUnXS4iID4gIi4kX1BPU1RbJ2xvY19maWxlJ10uIiI7DQogYnJlYWs7DQogY2FzZSAnY3VybCc6DQogJF9QT1NUWydjbWQnXSA9IHdoaWNoKCdjdXJsJykuIiAiLiRfUE9TVFsncmVtX2ZpbGUnXS4iIC1vICIuJF9QT1NUWydsb2NfZmlsZSddLiIiOw0KIGJyZWFrOw0KIH0NCn0NCmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAoKCRfUE9TVFsnY21kJ109PSJmdHBfZmlsZV91cCIpIHx8ICgkX1BPU1RbJ2NtZCddPT0iZnRwX2ZpbGVfZG93biIpKSkNCiB7DQogbGlzdCgkZnRwX3NlcnZlciwkZnRwX3BvcnQpID0gc3BsaXQoIjoiLCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pOw0KIGlmKGVtcHR5KCRmdHBfcG9ydCkpIHsgJGZ0cF9wb3J0ID0gMjE7IH0NCiAkY29ubmVjdGlvbiA9IEBmdHBfY29ubmVjdCAoJGZ0cF9zZXJ2ZXIsJGZ0cF9wb3J0LDEwKTsNCiBpZighJGNvbm5lY3Rpb24pIHsgZXJyKDMpOyB9DQogZWxzZQ0KICB7DQogIGlmKCFAZnRwX2xvZ2luKCRjb25uZWN0aW9uLCRfUE9TVFsnZnRwX2xvZ2luJ10sJF9QT1NUWydmdHBfcGFzc3dvcmQnXSkpIHsgZXJyKDQpOyB9DQogIGVsc2UNCiAgIHsNCiAgIGlmKCRfUE9TVFsnY21kJ109PSJmdHBfZmlsZV9kb3duIikgeyBpZihjaG9wKCRfUE9TVFsnbG9jX2ZpbGUnXSk9PSRkaXIpIHsgJF9QT1NUWydsb2NfZmlsZSddPSRkaXIuKCghJHVuaXgpPygnXFwnKTooJy8nKSkuYmFzZW5hbWUoJF9QT1NUWydmdHBfZmlsZSddKTsgfSBAZnRwX2dldCgkY29ubmVjdGlvbiwkX1BPU1RbJ2xvY19maWxlJ10sJF9QT1NUWydmdHBfZmlsZSddLCRfUE9TVFsnbW9kZSddKTt9DQogICBpZigkX1BPU1RbJ2NtZCddPT0iZnRwX2ZpbGVfdXAiKSAgIHsgQGZ0cF9wdXQoJGNvbm5lY3Rpb24sJF9QT1NUWydmdHBfZmlsZSddLCRfUE9TVFsnbG9jX2ZpbGUnXSwkX1BPU1RbJ21vZGUnXSk7fQ0KICAgfQ0KICB9DQogQGZ0cF9jbG9zZSgkY29ubmVjdGlvbik7DQogJF9QT1NUWydjbWQnXSA9ICIiOw0KIH0NCg0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICgoJF9QT1NUWydjbWQnXT09ImZ0cF9icnV0ZSIpIHx8ICgkX1BPU1RbJ2NtZCddPT0iZGJfYnJ1dGUiKSkpDQogew0KIGlmKCRfUE9TVFsnY21kJ109PSJmdHBfYnJ1dGUiKXsNCiAgbGlzdCgkZnRwX3NlcnZlciwkZnRwX3BvcnQpID0gc3BsaXQoIjoiLCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pOw0KICBpZihlbXB0eSgkZnRwX3BvcnQpKSB7ICRmdHBfcG9ydCA9IDIxOyB9DQogICRjb25uZWN0aW9uID0gQGZ0cF9jb25uZWN0ICgkZnRwX3NlcnZlciwkZnRwX3BvcnQsMTApOw0KIH1lbHNlIGlmKCRfUE9TVFsnY21kJ109PSJkYl9icnV0ZSIpew0KICAgJGNvbm5lY3Rpb24gPSAxOw0KIH0NCiBpZighJGNvbm5lY3Rpb24pIHsgZXJyKDMpOyAkX1BPU1RbJ2NtZCddID0gIiI7IH0NCiBlbHNlIGlmKCgkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0ncGFzc3dkJykgJiYgKCEkdXNlcnM9Z2V0X3VzZXJzKCcvZXRjL3Bhc3N3ZCcpKSl7IGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSNGRkZGRkY+PHRyPjx0ZCBiZ2NvbG9yPSMwQzBDMEM+PGZvbnQgY29sb3I9cmVkIGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk2J10uIjwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjsgJF9QT1NUWydjbWQnXSA9ICIiOyB9DQogZWxzZSBpZigoJF9QT1NUWydicnV0ZV9tZXRob2QnXT09J2RpYycpICYmICghJHVzZXJzPWdldF91c2VycygkX1BPU1RbJ2RpY3Rpb25hcnknXSkpKXsgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9I0ZGRkZGRj48dHI+PHRkIGJnY29sb3I9IzBDMEMwQz48Zm9udCBjb2xvcj1yZWQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Q2FuXCd0IGdldCBwYXNzd29yZCBsaXN0PC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT4iOyAkX1BPU1RbJ2NtZCddID0gIiI7IH0NCiBpZigkX1BPU1RbJ2NtZCddPT0iZnRwX2JydXRlIil7QGZ0cF9jbG9zZSgkY29ubmVjdGlvbik7fQ0KIH0NCg0KZWNobyAkdGFibGVfdXAzOw0KaWYgKGVtcHR5KCRfUE9TVFsnY21kJ10pICYmICEkc2FmZV9tb2RlICYmICEkb3Blbl9iYXNlZGlyKSB7ICRfUE9TVFsnY21kJ109KCEkdW5peCk/KCJkaXIiKTooImxzIC1saWEiKTsgfQ0KZWxzZSBpZihlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSl7ICRfUE9TVFsnY21kJ109InNhZmVfZGlyIjsgfQ0KZWNobyAkZm9udC4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MSddLiI6IDxiPiIuJF9QT1NUWydjbWQnXS4iPC9iPjwvZm9udD48L3RkPjwvdHI+PHRyPjx0ZD48Yj48ZGl2IGFsaWduPWNlbnRlcj48dGV4dGFyZWEgbmFtZT1yZXBvcnQgY29scz0xMjEgcm93cz0xNT4iOw0KaWYoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKQ0Kew0KIHN3aXRjaCgkX1BPU1RbJ2NtZCddKQ0KIHsNCiBjYXNlICdzYWZlX2Rpcic6DQogICRkPUBkaXIoJGRpcik7DQogIGlmICgkZCkNCiAgIHsNCiAgIHdoaWxlIChmYWxzZSE9PSgkZmlsZT0kZC0+cmVhZCgpKSkNCiAgICB7DQogICAgIGlmICgkZmlsZT09Ii4iIHx8ICRmaWxlPT0iLi4iKSBjb250aW51ZTsNCiAgICAgQGNsZWFyc3RhdGNhY2hlKCk7DQogICAgIEBsaXN0ICgkZGV2LCAkaW5vZGUsICRpbm9kZXAsICRubGluaywgJHVpZCwgJGdpZCwgJGlub2RldiwgJHNpemUsICRhdGltZSwgJG10aW1lLCAkY3RpbWUsICRic2l6ZSkgPSBzdGF0KCRmaWxlKTsNCiAgICAgaWYoISR1bml4KXsNCiAgICAgZWNobyBkYXRlKCJkLm0uWSBIOmkiLCRtdGltZSk7DQogICAgIGlmKEBpc19kaXIoJGZpbGUpKSBlY2hvICIgIDxESVI+ICI7IGVsc2UgcHJpbnRmKCIlIDdzICIsJHNpemUpOw0KICAgICB9DQogICAgIGVsc2V7DQogICAgIGlmKEBmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykpew0KICAgICAgJG93bmVyID0gQHBvc2l4X2dldHB3dWlkKCR1aWQpOw0KICAgICAgJGdyZ2lkID0gQHBvc2l4X2dldGdyZ2lkKCRnaWQpOw0KICAgICB9ZWxzZXskb3duZXJbJ25hbWUnXT0kZ3JnaWRbJ25hbWUnXT0nJzt9DQogICAgIGVjaG8gJGlub2RlLiIgIjsNCiAgICAgZWNobyBwZXJtcyhAZmlsZXBlcm1zKCRmaWxlKSk7DQogICAgIEBwcmludGYoIiUgNGQgJSA5cyAlIDlzICU3cyAiLCRubGluaywkb3duZXJbJ25hbWUnXSwkZ3JnaWRbJ25hbWUnXSwkc2l6ZSk7DQogICAgIGVjaG8gZGF0ZSgiZC5tLlkgSDppICIsJG10aW1lKTsNCiAgICAgfQ0KICAgICBlY2hvICIkZmlsZVxuIjsNCiAgICB9DQogICAkZC0+Y2xvc2UoKTsNCiAgIH0NCiAgZWxzZSBpZihAZnVuY3Rpb25fZXhpc3RzKCdnbG9iJykpDQogICB7DQogICAgICAgZnVuY3Rpb24gZWgoJGVycm5vLCAkZXJyc3RyLCAkZXJyZmlsZSwgJGVycmxpbmUpDQogICAgICAgIHsNCiAgICAgICAgICBnbG9iYWwgJEQsICRjLCAkaTsNCiAgICAgICAgICBwcmVnX21hdGNoKCIvU0FGRVwgTU9ERVwgUmVzdHJpY3Rpb25cIGluXCBlZmZlY3RcLi4qd2hvc2VcIHVpZFwgaXMoLiopaXNcIG5vdFwgYWxsb3dlZFwgdG9cIGFjY2VzcyguKilvd25lZCBieSB1aWQoLiopLyIsICRlcnJzdHIsICRvKTsNCiAgICAgICAgICBpZigkbyl7ICREWyRjXSA9ICRvWzJdOyAkYysrO30NCiAgICAgICAgfQ0KICAgICAgICRlcnJvcl9yZXBvcnRpbmcgPSBAaW5pX2dldCgnZXJyb3JfcmVwb3J0aW5nJyk7DQogICAgICAgZXJyb3JfcmVwb3J0aW5nKEVfV0FSTklORyk7DQogICAgICAgQGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwgMSk7DQogICAgICAgJHJvb3QgPSAiLyI7DQogICAgICAgaWYoJGRpcikgJHJvb3QgPSAkZGlyOw0KICAgICAgICRjID0gMDsgJEQgPSBhcnJheSgpOw0KICAgICAgIEBzZXRfZXJyb3JfaGFuZGxlcigiZWgiKTsNCiAgICAgICAkY2hhcnMgPSAiXy0uMDEyMzQ1Njc4OTBhYmNkZWZnaGlqa2xubW9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjsNCiAgICAgICBmb3IoJGk9MDsgJGkgPCBzdHJsZW4oJGNoYXJzKTsgJGkrKykNCiAgICAgICB7DQogICAgICAgICRwYXRoID0ieyRyb290fSIuKChzdWJzdHIoJHJvb3QsLTEpIT0iLyIpID8gIi8iIDogTlVMTCkuInskY2hhcnNbJGldfSI7DQogICAgICAgICRwcmV2RCA9ICREW2NvdW50KCREKS0xXTsNCiAgICAgICAgQGdsb2IoJHBhdGguIioiKTsNCiAgICAgICAgaWYoJERbY291bnQoJEQpLTFdICE9ICRwcmV2RCkNCiAgICAgICAgIHsNCiAgICAgICAgICAgZm9yKCRqPTA7ICRqIDwgc3RybGVuKCRjaGFycyk7ICRqKyspDQogICAgICAgICAgIHsNCiAgICAgICAgICAgICRwYXRoID0ieyRyb290fSIuKChzdWJzdHIoJHJvb3QsLTEpIT0iLyIpID8gIi8iIDogTlVMTCkuInskY2hhcnNbJGldfXskY2hhcnNbJGpdfSI7DQogICAgICAgICAgICAkcHJldkQyID0gJERbY291bnQoJEQpLTFdOw0KICAgICAgICAgICAgQGdsb2IoJHBhdGguIioiKTsNCiAgICAgICAgICAgIGlmKCREW2NvdW50KCREKS0xXSAhPSAkcHJldkQyKQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgZm9yKCRwPTA7ICRwIDwgc3RybGVuKCRjaGFycyk7ICRwKyspDQogICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJHBhdGggPSJ7JHJvb3R9Ii4oKHN1YnN0cigkcm9vdCwtMSkhPSIvIikgPyAiLyIgOiBOVUxMKS4ieyRjaGFyc1skaV19eyRjaGFyc1skal19eyRjaGFyc1skcF19IjsNCiAgICAgICAgICAgICAgICAkcHJldkQzID0gJERbY291bnQoJEQpLTFdOw0KICAgICAgICAgICAgICAgIEBnbG9iKCRwYXRoLiIqIik7DQogICAgICAgICAgICAgICAgaWYoJERbY291bnQoJEQpLTFdICE9ICRwcmV2RDMpDQogICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgIGZvcigkcj0wOyAkciA8IHN0cmxlbigkY2hhcnMpOyAkcisrKQ0KICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgJHBhdGggPSJ7JHJvb3R9Ii4oKHN1YnN0cigkcm9vdCwtMSkhPSIvIikgPyAiLyIgOiBOVUxMKS4ieyRjaGFyc1skaV19eyRjaGFyc1skal19eyRjaGFyc1skcF19eyRjaGFyc1skcl19IjsNCiAgICAgICAgICAgICAgICAgICAgQGdsb2IoJHBhdGguIioiKTsNCiAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICB9DQogICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICB9DQogICAgICAgJEQgPSBhcnJheV91bmlxdWUoJEQpOw0KICAgICAgIGZvcmVhY2goJEQgYXMgJGl0ZW0pIGVjaG8gaHRtbHNwZWNpYWxjaGFycygieyRpdGVtfSIpLiJcclxuIjsNCiAgICAgICBlcnJvcl9yZXBvcnRpbmcoJGVycm9yX3JlcG9ydGluZyk7DQogICB9DQogIGVsc2UgZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjknXTsNCiBicmVhazsNCiAgY2FzZSAndGVzdDEnOg0KICAkY2kgPSBAY3VybF9pbml0KCJmaWxlOi8vIi4kX1BPU1RbJ3Rlc3QxX2ZpbGUnXSk7DQogICRjZiA9IEBjdXJsX2V4ZWMoJGNpKTsNCiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRjZik7DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0Mic6DQogIEBpbmNsdWRlKCRfUE9TVFsndGVzdDJfZmlsZSddKTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3QzJzoNCiAgaWYoZW1wdHkoJF9QT1NUWyd0ZXN0M19wb3J0J10pKSB7ICRfUE9TVFsndGVzdDNfcG9ydCddID0gIjMzMDYiOyB9DQogICRkYiA9IEBteXNxbF9jb25uZWN0KCdsb2NhbGhvc3Q6Jy4kX1BPU1RbJ3Rlc3QzX3BvcnQnXSwkX1BPU1RbJ3Rlc3QzX21sJ10sJF9QT1NUWyd0ZXN0M19tcCddKTsNCiAgaWYoJGRiKQ0KICAgew0KICAgaWYoQG15c3FsX3NlbGVjdF9kYigkX1BPU1RbJ3Rlc3QzX21kJ10sJGRiKSkNCiAgICB7DQogICAgIEBteXNxbF9xdWVyeSgiRFJPUCBUQUJMRSBJRiBFWElTVFMgdGVtcF9obWI1N190YWJsZSIpOw0KICAgICBAbXlzcWxfcXVlcnkoIkNSRUFURSBUQUJMRSBgdGVtcF9obWI1N190YWJsZWAgKCBgZmlsZWAgTE9OR0JMT0IgTk9UIE5VTEwgKSIpOw0KICAgICBAbXlzcWxfcXVlcnkoIkxPQUQgREFUQSBJTkZJTEUgXCIiLiRfUE9TVFsndGVzdDNfZmlsZSddLiJcIiBJTlRPIFRBQkxFIHRlbXBfaG1iNTdfdGFibGUiKTsNCiAgICAgJHIgPSBAbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gdGVtcF9obWI1N190YWJsZSIpOw0KICAgICB3aGlsZSgoJHJfc3FsID0gQG15c3FsX2ZldGNoX2FycmF5KCRyKSkpIHsgZWNobyBAaHRtbHNwZWNpYWxjaGFycygkcl9zcWxbMF0pLiJcclxuIjsgfQ0KICAgICBAbXlzcWxfcXVlcnkoIkRST1AgVEFCTEUgSUYgRVhJU1RTIHRlbXBfaG1iNTdfdGFibGUiKTsNCiAgICB9DQogICAgZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IHNlbGVjdCBkYXRhYmFzZSI7DQogICBAbXlzcWxfY2xvc2UoJGRiKTsNCiAgIH0NCiAgZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IGNvbm5lY3QgdG8gbXlzcWwgc2VydmVyIjsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3Q0JzoNCiAgaWYoZW1wdHkoJF9QT1NUWyd0ZXN0NF9wb3J0J10pKSB7ICRfUE9TVFsndGVzdDRfcG9ydCddID0gIjE0MzMiOyB9DQogICRkYiA9IEBtc3NxbF9jb25uZWN0KCdsb2NhbGhvc3QsJy4kX1BPU1RbJ3Rlc3Q0X3BvcnQnXSwkX1BPU1RbJ3Rlc3Q0X21sJ10sJF9QT1NUWyd0ZXN0NF9tcCddKTsNCiAgaWYoJGRiKQ0KICAgew0KICAgaWYoQG1zc3FsX3NlbGVjdF9kYigkX1BPU1RbJ3Rlc3Q0X21kJ10sJGRiKSkNCiAgICB7DQogICAgIEBtc3NxbF9xdWVyeSgiZHJvcCB0YWJsZSBobWI1N190ZW1wX3RhYmxlIiwkZGIpOw0KICAgICBAbXNzcWxfcXVlcnkoImNyZWF0ZSB0YWJsZSBobWI1N190ZW1wX3RhYmxlICggc3RyaW5nIFZBUkNIQVIgKDUwMCkgTlVMTCkiLCRkYik7DQogICAgIEBtc3NxbF9xdWVyeSgiaW5zZXJ0IGludG8gaG1iNTdfdGVtcF90YWJsZSBFWEVDIG1hc3Rlci5kYm8ueHBfY21kc2hlbGwgJyIuJF9QT1NUWyd0ZXN0NF9maWxlJ10uIiciLCRkYik7DQogICAgICRyZXMgPSBtc3NxbF9xdWVyeSgic2VsZWN0ICogZnJvbSBobWI1N190ZW1wX3RhYmxlIiwkZGIpOw0KICAgICB3aGlsZSgoJHJvdz1AbXNzcWxfZmV0Y2hfcm93KCRyZXMpKSkNCiAgICAgIHsNCiAgICAgIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkcm93WzBdKS4iXHJcbiI7DQogICAgICB9DQogICAgQG1zc3FsX3F1ZXJ5KCJkcm9wIHRhYmxlIGhtYjU3X3RlbXBfdGFibGUiLCRkYik7DQogICAgfQ0KICAgIGVsc2UgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBzZWxlY3QgZGF0YWJhc2UiOw0KICAgQG1zc3FsX2Nsb3NlKCRkYik7DQogICB9DQogIGVsc2UgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBjb25uZWN0IHRvIE1TU1FMIHNlcnZlciI7DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0NSc6DQogICR0ZW1wPXRlbXBuYW0oJGRpciwgImZuYW1lIik7DQogIGlmIChAZmlsZV9leGlzdHMoJHRlbXApKSBAdW5saW5rKCR0ZW1wKTsNCiAgJGV4dHJhID0gIi1DICIuJF9QT1NUWyd0ZXN0NV9maWxlJ10uIiAtWCAkdGVtcCI7DQogIEBtYl9zZW5kX21haWwoTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgJGV4dHJhKTsNCiAgJHN0ciA9IG1vcmVyZWFkKCR0ZW1wKTsNCiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOw0KICBAdW5saW5rKCR0ZW1wKTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3Q2JzoNCiAgJHN0cmVhbSA9IEBpbWFwX29wZW4oJy9ldGMvcGFzc3dkJywgIiIsICIiKTsNCiAgJGRpcl9saXN0ID0gQGltYXBfbGlzdCgkc3RyZWFtLCB0cmltKCRfUE9TVFsndGVzdDZfZmlsZSddKSwgIioiKTsNCiAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJGRpcl9saXN0KTsgJGkrKykgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRkaXJfbGlzdFskaV0pLiJcclxuIjsNCiAgQGltYXBfY2xvc2UoJHN0cmVhbSk7DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0Nyc6DQogICRzdHJlYW0gPSBAaW1hcF9vcGVuKCRfUE9TVFsndGVzdDdfZmlsZSddLCAiIiwgIiIpOw0KICAkc3RyID0gQGltYXBfYm9keSgkc3RyZWFtLCAxKTsNCiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOw0KICBAaW1hcF9jbG9zZSgkc3RyZWFtKTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3Q4JzoNCiAgJHRlbXA9QHRlbXBuYW0oJF9QT1NUWyd0ZXN0OF9maWxlMiddLCAiY29weXRlbXAiKTsNCiAgJHN0ciA9IHJlYWR6bGliKCRfUE9TVFsndGVzdDhfZmlsZTEnXSwkdGVtcCk7DQogIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3RyKTsNCiAgQHVubGluaygkdGVtcCk7DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0OSc6DQogIEBpbmlfcmVzdG9yZSgic2FmZV9tb2RlIik7DQogIEBpbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7DQogICRzdHIgPSBtb3JlcmVhZCgkX1BPU1RbJ3Rlc3Q5X2ZpbGUnXSk7DQogIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3RyKTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3QxMCc6DQogIEBvYl9jbGVhbigpOw0KICAkZXJyb3JfcmVwb3J0aW5nID0gQGluaV9nZXQoJ2Vycm9yX3JlcG9ydGluZycpOw0KICBlcnJvcl9yZXBvcnRpbmcoRV9BTEwgXiBFX05PVElDRSk7DQogIEBpbmlfc2V0KCJkaXNwbGF5X2Vycm9ycyIsIDEpOw0KICAkc3RyPWZvcGVuKCRfUE9TVFsndGVzdDEwX2ZpbGUnXSwiciIpOw0KICB3aGlsZSghZmVvZigkc3RyKSl7cHJpbnQgaHRtbHNwZWNpYWxjaGFycyhmZ2V0cygkc3RyKSk7fQ0KICBmY2xvc2UoJHN0cik7DQogIGVycm9yX3JlcG9ydGluZygkZXJyb3JfcmVwb3J0aW5nKTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3QxMSc6DQogIEBvYl9jbGVhbigpOw0KICAkdGVtcCA9ICd6aXA6Ly8nLiRfUE9TVFsndGVzdDExX2ZpbGUnXTsNCiAgJHN0ciA9IG1vcmVyZWFkKCR0ZW1wKTsNCiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOw0KICBicmVhazsNCiAgY2FzZSAndGVzdDEyJzoNCiAgQG9iX2NsZWFuKCk7DQogICR0ZW1wID0gJ2NvbXByZXNzLmJ6aXAyOi8vJy4kX1BPU1RbJ3Rlc3QxMl9maWxlJ107DQogICRzdHIgPSBtb3JlcmVhZCgkdGVtcCk7DQogIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3RyKTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3QxMyc6DQogIEBlcnJvcl9sb2coJF9QT1NUWyd0ZXN0MTNfZmlsZTEnXSwgMywgInBocDovLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLyIuJF9QT1NUWyd0ZXN0MTNfZmlsZTInXSk7DQogIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYxJ107DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0MTQnOg0KICBAc2Vzc2lvbl9zYXZlX3BhdGgoJF9QT1NUWyd0ZXN0MTRfZmlsZTInXS4iXDA7L3RtcCIpOw0KICBAc2Vzc2lvbl9zdGFydCgpOw0KICBAJF9TRVNTSU9OW3BocF09JF9QT1NUWyd0ZXN0MTRfZmlsZTEnXTsNCiAgZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjEnXTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3QxNSc6DQogIEByZWFkZmlsZSgkX1BPU1RbJ3Rlc3QxNV9maWxlMSddLCAzLCAicGhwOi8vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vIi4kX1BPU1RbJ3Rlc3QxNV9maWxlMiddKTsNCiAgZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjEnXTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3QxNic6DQogIGlmIChmb3Blbignc3JwYXRoOi8vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vJy4kX1BPU1RbJ3Rlc3QxNl9maWxlJ10sImEiKSkgZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjEnXTsNCiAgYnJlYWs7DQogIGNhc2UgJ3Rlc3QxN18xJzoNCiAgQHVubGluaygnc3ltbGlua3JlYWQnKTsNCiAgQHN5bWxpbmsoJ2EvYS9hL2EvYS9hLycsICdkdW1teScpOw0KICBAc3ltbGluaygnZHVtbXkvLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vJy4kX1BPU1RbJ3Rlc3QxN19maWxlJ10sICdzeW1saW5rcmVhZCcpOw0KICBAdW5saW5rKCdkdW1teScpOw0KICB3aGlsZSAoMSkNCiAgIHsNCiAgICBAc3ltbGluaygnLicsICdkdW1teScpOw0KICAgIEB1bmxpbmsoJ2R1bW15Jyk7DQogICB9DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0MTdfMic6DQogICRzdHI9Jyc7DQogIHdoaWxlIChzdHJsZW4oJHN0cikgPCAzKSB7DQogICAkdGVtcCA9ICdzeW1saW5rcmVhZCc7DQogICAkc3RyID0gbW9yZXJlYWQoJHRlbXApOw0KICAgaWYoJHN0cil7IEBvYl9jbGVhbigpOyBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHN0cik7fQ0KICB9DQogIGJyZWFrOw0KICBjYXNlICd0ZXN0MTdfMyc6DQogICRkaXIgPSAkZmlsZXMgPSBhcnJheSgpOw0KICBpZihAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMC4wIik+PTApew0KICAgd2hpbGUgKEBjb3VudCgkZGlyKSA8IDMpIHsNCiAgICAkZGlyPUBzY2FuZGlyKCdzeW1saW5rcmVhZCcpOw0KICAgIGlmIChAY291bnQoJGRpcikgPiAyKSB7QG9iX2NsZWFuKCk7IEBwcmludF9yKCRkaXIpOyB9DQogICB9DQogIH0NCiAgZWxzZSB7DQogICB3aGlsZSAoQGNvdW50KCRmaWxlcykgPCAzKSB7DQogICAgJGRoICA9IEBvcGVuZGlyKCdzeW1saW5rcmVhZCcpOw0KICAgIHdoaWxlIChmYWxzZSAhPT0gKCRmaWxlbmFtZSA9IEByZWFkZGlyKCRkaCkpKSB7DQogICAgICRmaWxlc1tdID0gJGZpbGVuYW1lOw0KICAgIH0NCiAgICBpZihAY291bnQoJGZpbGVzKSA+IDIpe0BvYl9jbGVhbigpOyBAcHJpbnRfcigkZmlsZXMpOyB9DQogICB9DQogIH0NCiAgYnJlYWs7DQogfQ0KfQ0KaWYoKCEkc2FmZV9tb2RlKSAmJiAoJF9QT1NUWydjbWQnXSE9InBocF9ldmFsIikgJiYgKCRfUE9TVFsnY21kJ10hPSJteXNxbF9kdW1wIikgJiYgKCRfUE9TVFsnY21kJ10hPSJkYl9xdWVyeSIpICYmICgkX1BPU1RbJ2NtZCddIT0iZnRwX2JydXRlIikgJiYgKCRfUE9TVFsnY21kJ10hPSJkYl9icnV0ZSIpKXsNCiAkY21kX3JlcCA9IGV4KCRfUE9TVFsnY21kJ10pOw0KIGlmKCEkdW5peCkgeyBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKEBjb252ZXJ0X2N5cl9zdHJpbmcoJGNtZF9yZXAsJ2QnLCd3JykpLiJcbiI7IH0NCiBlbHNlIHsgZWNobyBAaHRtbHNwZWNpYWxjaGFycygkY21kX3JlcCkuIlxuIjsgfX0NCg0Kc3dpdGNoKCRfUE9TVFsnY21kJ10pDQp7DQogY2FzZSAnZG9zMSc6DQogZnVuY3Rpb24gYSgpIHsgYSgpOyB9IGEoKTsNCiBicmVhazsNCiBjYXNlICdkb3MyJzoNCiBAcGFjaygiZDQyOTQ5NjcyOTciLCAyKTsNCiBicmVhazsNCiBjYXNlICdkb3MzJzoNCiAkYSA9ICJhIjtAdW5zZXJpYWxpemUoQHN0cl9yZXBsYWNlKCcxJywgMjE0NzQ4MzY0NywgQHNlcmlhbGl6ZSgkYSkpKTsNCiBicmVhazsNCiBjYXNlICdkb3M0JzoNCiAkdCA9IGFycmF5KDEpO3doaWxlICgxKSB7JGFbXSA9ICYkdDt9Ow0KIGJyZWFrOw0KIGNhc2UgJ2RvczUnOg0KIEBkbCgic3FsaXRlLnNvIik7JGRiID0gbmV3IFNxbGl0ZURhdGFiYXNlKCJmb28iKTsNCiBicmVhazsNCiBjYXNlICdkb3M2JzoNCiBwcmVnX21hdGNoKCcvKC4oPyFiKSkqLycsIEBzdHJfcmVwZWF0KCJhIiwgMTAwMDApKTsNCiBicmVhazsNCiBjYXNlICdkb3M3JzoNCiBAc3RyX3JlcGxhY2UoIkEiLCBzdHJfcmVwZWF0KCJCIiwgNjU1MzUpLCBzdHJfcmVwZWF0KCJBIiwgNjU1MzgpKTsNCiBicmVhazsNCiBjYXNlICdkb3M4JzoNCiBAc2hlbGxfZXhlYygia2lsbGFsbCAtMTEgaHR0cGQiKTsNCiBicmVhazsNCiBjYXNlICdkb3M5JzoNCiBmdW5jdGlvbiBjeCgpeyBAdGVtcG5hbSgiL3d3dy8iLCAiLi4vLi4vLi4vLi4vLi4vLi4vdmFyL3RtcC9jeCIpOyBjeCgpOyB9IGN4KCk7DQogYnJlYWs7DQogY2FzZSAnZG9zMTAnOg0KICRhID0gQHN0cl9yZXBlYXQgKCJBIiw0MzgwMTMpOyRiID0gQHN0cl9yZXBlYXQgKCJCIiw5NTExNDApO0B3b3Jkd3JhcCAoJGEsMCwkYiwwKTsNCiBicmVhazsNCiBjYXNlICdkb3MxMSc6DQogQGFycmF5X2ZpbGwoMSwxMjM0NTY3ODksIkluZmlnby1JUyIpOw0KIGJyZWFrOw0KIGNhc2UgJ2RvczEyJzoNCiBAc3Vic3RyX2NvbXBhcmUoIkEiLCJBIiwxMjM0NTY3OCk7DQogYnJlYWs7DQogY2FzZSAnZG9zMTMnOg0KIEB1bnNlcmlhbGl6ZSgiYToyMTQ3NDgzNjQ5OnsiKTsNCiBicmVhazsNCiBjYXNlICdkb3MxNCc6DQogJERhdGEgPSBAc3RyX2lyZXBsYWNlKCJcbiIsICI8YnI+IiwgJERhdGEpOw0KIGJyZWFrOw0KIGNhc2UgJ2RvczE1JzoNCiBmdW5jdGlvbiB0b1VURigkeCkge3JldHVybiBjaHIoKCR4ID4+IDYpICsgMTkyKSAuIGNocigoJHggJiA2MykgKyAxMjgpO30NCiAkc3RyMSA9ICIiO2ZvcigkaT0wOyAkaSA8IDY0OyAkaSsrKXsgJHN0cjEgLj0gdG9VVEYoOTc3KTt9DQogQGh0bWxlbnRpdGllcygkc3RyMSwgRU5UX05PUVVPVEVTLCAiVVRGLTgiKTsNCiBicmVhazsNCiBjYXNlICdkb3MxNic6DQogJHIgPSBAemlwX29wZW4oInguemlwIik7JGUgPSBAemlwX3JlYWQoJHIpOyR4ID0gQHppcF9lbnRyeV9vcGVuKCRyLCAkZSk7DQogZm9yICgkaT0wOyAkaTwxMDAwOyAkaSsrKSAkYXJyWyRpXT1hcnJheShhcnJheSgiIikpOw0KIHVuc2V0KCRhcnJbNjAwXSk7QHppcF9lbnRyeV9yZWFkKCRlLCAtMSk7dW5zZXQoJGFycls2MDFdKTsNCiBicmVhazsNCiBjYXNlICdkb3MxNyc6DQogJHogPSAiVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUiOw0KICR5ID0gIkREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREIjsNCiAkeCA9ICJBUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7DQogdW5zZXQoJHopO3Vuc2V0KCR5KTskeCA9IGJhc2U2NF9kZWNvZGUoJHgpOyR5ID0gQHNxbGl0ZV91ZGZfZGVjb2RlX2JpbmFyeSgkeCk7dW5zZXQoJHgpOw0KIGJyZWFrOw0KIGNhc2UgJ2RvczE4JzoNCiAkTVNHS0VZID0gNTE5MDUyOyRtc2dfaWQgPSBAbXNnX2dldF9xdWV1ZSAoJE1TR0tFWSwgMDYwMCk7DQogaWYgKCFAbXNnX3NlbmQgKCRtc2dfaWQsIDEsICdBQUFBQkJCQkNDQ0NERERERUVFRUZGRkZHR0dHSEhISCcsIGZhbHNlLCB0cnVlLCAkbXNnX2VycikpDQogZWNobyAiTXNnIG5vdCBzZW50IGJlY2F1c2UgJG1zZ19lcnJcbiI7DQogaWYgKEBtc2dfcmVjZWl2ZSAoJG1zZ19pZCwgMSwgJG1zZ190eXBlLCAweGZmZmZmZmZmLCAkX1NFU1NJT04sIGZhbHNlLCAwLCAkbXNnX2Vycm9yKSkgew0KIGVjaG8gIiRtc2dcbiI7DQogfSBlbHNlIHsgZWNobyAiUmVjZWl2ZWQgJG1zZ19lcnJvciBmZXRjaGluZyBtZXNzYWdlXG4iOyBicmVhazsgfQ0KIEBtc2dfcmVtb3ZlX3F1ZXVlICgkbXNnX2lkKTsNCiBicmVhazsNCiBjYXNlICdkb3MxOSc6DQogJHVybCA9ICJwaHA6Ly9maWx0ZXIvcmVhZD1PRkZfQllfT05FLi9yZXNvdXJjZT0vZXRjL3Bhc3N3ZCI7IEBmb3BlbigkdXJsLCAiciIpOw0KIGJyZWFrOw0KIGNhc2UgJ2RvczIwJzoNCiAkaGFzaHRhYmxlID0gc3RyX3JlcGVhdCgiQSIsIDM5KTsNCiAkaGFzaHRhYmxlWzUqNCswXT1jaHIoMHg1OCk7JGhhc2h0YWJsZVs1KjQrMV09Y2hyKDB4NDApOyRoYXNodGFibGVbNSo0KzJdPWNocigweDA2KTskaGFzaHRhYmxlWzUqNCszXT1jaHIoMHgwOCk7DQogJGhhc2h0YWJsZVs4KjQrMF09Y2hyKDB4NjYpOyRoYXNodGFibGVbOCo0KzFdPWNocigweDc3KTskaGFzaHRhYmxlWzgqNCsyXT1jaHIoMHg4OCk7JGhhc2h0YWJsZVs4KjQrM109Y2hyKDB4OTkpOw0KICRzdHIgPSAnYToxMDAwMDA6e3M6ODoiQUFBQUJCQkIiO2E6Mzp7czoxMjoiMDEyMzQ1Njc4OUFBIjthOjE6e3M6MTI6IkFBQUFCQkJCQ0NDQyI7aTowO31zOjEyOiIwMTIzNDU2NzhBQUEiO2k6MDtzOjEyOiIwMTIzNDU2NzhCQU4iO2k6MDt9JzsNCiBmb3IgKCRpPTA7ICRpPDY1NTM1OyAkaSsrKSB7ICRzdHIgLj0gJ2k6MDtSOjI7JzsgfQ0KICRzdHIgLj0gJ3M6Mzk6IlhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWCI7czozOToiJy4kaGFzaHRhYmxlLiciO2k6MDtSOjM7JzsNCiBAdW5zZXJpYWxpemUoJHN0cik7DQogYnJlYWs7DQp9DQoNCmlmICgkX1BPU1RbJ2NtZCddPT0icGhwX2V2YWwiKXsNCiAkZXZhbCA9IEBzdHJfcmVwbGFjZSgiPD8iLCIiLCRfUE9TVFsncGhwX2V2YWwnXSk7DQogJGV2YWwgPSBAc3RyX3JlcGxhY2UoIj8+IiwiIiwkZXZhbCk7DQogQGV2YWwoJGV2YWwpO30NCg0KaWYgKCRfUE9TVFsnY21kJ109PSJmdHBfYnJ1dGUiKQ0KIHsNCiAkc3VjID0gMDsNCiBpZigkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0ncGFzc3dkJyl7DQogZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpDQogIHsNCiAgICAkY29ubmVjdGlvbiA9IEBmdHBfY29ubmVjdCgkZnRwX3NlcnZlciwkZnRwX3BvcnQsMTApOw0KICAgIGlmKEBmdHBfbG9naW4oJGNvbm5lY3Rpb24sJHVzZXIsJHVzZXIpKSB7IGVjaG8gIlsrXSAkdXNlcjokdXNlciAtIHN1Y2Nlc3NcclxuIjsgJHN1YysrOyB9DQogICAgZWxzZSBpZihpc3NldCgkX1BPU1RbJ3JldmVyc2UnXSkpIHsgaWYoQGZ0cF9sb2dpbigkY29ubmVjdGlvbiwkdXNlcixzdHJyZXYoJHVzZXIpKSkgeyBlY2hvICJbK10gJHVzZXI6Ii5zdHJyZXYoJHVzZXIpLiIgLSBzdWNjZXNzXHJcbiI7ICRzdWMrKzsgfSB9DQogICAgQGZ0cF9jbG9zZSgkY29ubmVjdGlvbik7DQogIH0NCiB9ZWxzZSBpZigoJF9QT1NUWydicnV0ZV9tZXRob2QnXT09J2RpYycpICYmIGlzc2V0KCRfUE9TVFsnZnRwX2xvZ2luJ10pKXsNCiAgZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpDQogIHsNCiAgICAkY29ubmVjdGlvbiA9IEBmdHBfY29ubmVjdCgkZnRwX3NlcnZlciwkZnRwX3BvcnQsMTApOw0KICAgIGlmKEBmdHBfbG9naW4oJGNvbm5lY3Rpb24sJF9QT1NUWydmdHBfbG9naW4nXSwkdXNlcikpIHsgZWNobyAiWytdICIuJF9QT1NUWydmdHBfbG9naW4nXS4iOiR1c2VyIC0gc3VjY2Vzc1xyXG4iOyAkc3VjKys7IH0NCiAgICBAZnRwX2Nsb3NlKCRjb25uZWN0aW9uKTsNCiAgfQ0KIH0NCiBlY2hvICJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4iOw0KICRjb3VudCA9IGNvdW50KCR1c2Vycyk7DQogaWYoaXNzZXQoJF9QT1NUWydyZXZlcnNlJ10pICYmICgkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0ncGFzc3dkJykpIHsgJGNvdW50ICo9IDI7IH0NCiBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5NyddLiRjb3VudC4iXHJcbiI7DQogZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTgnXS4kc3VjLiJcclxuIjsNCiB9DQoNCmlmICgkX1BPU1RbJ2NtZCddPT0iZGJfYnJ1dGUiKQ0KIHsNCiAkc3VjID0gMDsNCiBpZigkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0ncGFzc3dkJyl7DQogZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpDQogIHsNCiAgICRzcWwgPSBuZXcgbXlfc3FsKCk7DQogICAkc3FsLT5kYiAgID0gJF9QT1NUWydkYiddOw0KICAgJHNxbC0+aG9zdCA9ICRfUE9TVFsnZGJfc2VydmVyJ107DQogICAkc3FsLT5wb3J0ID0gJF9QT1NUWydkYl9wb3J0J107DQogICAkc3FsLT51c2VyID0gJHVzZXI7DQogICAkc3FsLT5wYXNzID0gJHVzZXI7DQogICBpZigkc3FsLT5jb25uZWN0KCkpIHsgZWNobyAiWytdICR1c2VyOiR1c2VyIC0gc3VjY2Vzc1xyXG4iOyAkc3VjKys7IH0NCiAgfQ0KIGlmKGlzc2V0KCRfUE9TVFsncmV2ZXJzZSddKSkNCiAgew0KICAgZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpDQogICAgew0KICAgICAkc3FsID0gbmV3IG15X3NxbCgpOw0KICAgICAkc3FsLT5kYiAgID0gJF9QT1NUWydkYiddOw0KICAgICAkc3FsLT5ob3N0ID0gJF9QT1NUWydkYl9zZXJ2ZXInXTsNCiAgICAgJHNxbC0+cG9ydCA9ICRfUE9TVFsnZGJfcG9ydCddOw0KICAgICAkc3FsLT51c2VyID0gJHVzZXI7DQogICAgICRzcWwtPnBhc3MgPSBzdHJyZXYoJHVzZXIpOw0KICAgICBpZigkc3FsLT5jb25uZWN0KCkpIHsgZWNobyAiWytdICR1c2VyOiIuc3RycmV2KCR1c2VyKS4iIC0gc3VjY2Vzc1xyXG4iOyAkc3VjKys7IH0NCiAgICB9DQogIH0NCiB9ZWxzZSBpZigoJF9QT1NUWydicnV0ZV9tZXRob2QnXT09J2RpYycpICYmIGlzc2V0KCRfUE9TVFsnbXlzcWxfbCddKSl7DQogIGZvcmVhY2goJHVzZXJzIGFzICR1c2VyKQ0KICB7DQogICAkc3FsID0gbmV3IG15X3NxbCgpOw0KICAgJHNxbC0+ZGIgICA9ICRfUE9TVFsnZGInXTsNCiAgICRzcWwtPmhvc3QgPSAkX1BPU1RbJ2RiX3NlcnZlciddOw0KICAgJHNxbC0+cG9ydCA9ICRfUE9TVFsnZGJfcG9ydCddOw0KICAgJHNxbC0+dXNlciA9ICRfUE9TVFsnbXlzcWxfbCddOw0KICAgJHNxbC0+cGFzcyA9ICR1c2VyOw0KICAgaWYoJHNxbC0+Y29ubmVjdCgpKSB7IGVjaG8gIlsrXSAiLiRfUE9TVFsnbXlzcWxfbCddLiI6JHVzZXIgLSBzdWNjZXNzXHJcbiI7ICRzdWMrKzsgfQ0KICB9DQogfQ0KIGVjaG8gIlxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiI7DQogJGNvdW50ID0gY291bnQoJHVzZXJzKTsNCiBpZihpc3NldCgkX1BPU1RbJ3JldmVyc2UnXSkgJiYgKCRfUE9TVFsnYnJ1dGVfbWV0aG9kJ109PSdwYXNzd2QnKSkgeyAkY291bnQgKj0gMjsgfQ0KIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk3J10uJGNvdW50LiJcclxuIjsNCiBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5OCddLiRzdWMuIlxyXG4iOw0KIH0NCg0KaWYgKCRfUE9TVFsnY21kJ109PSJteXNxbF9kdW1wIikNCiB7DQogIGlmKGlzc2V0KCRfUE9TVFsnZGlmJ10pKSB7ICRmcCA9IEBmb3BlbigkX1BPU1RbJ2RpZl9uYW1lJ10sICJ3Iik7IH0NCiAgJHNxbCA9IG5ldyBteV9zcWwoKTsNCiAgJHNxbC0+ZGIgICA9ICRfUE9TVFsnZGInXTsNCiAgJHNxbC0+aG9zdCA9ICRfUE9TVFsnZGJfc2VydmVyJ107DQogICRzcWwtPnBvcnQgPSAkX1BPU1RbJ2RiX3BvcnQnXTsNCiAgJHNxbC0+dXNlciA9ICRfUE9TVFsnbXlzcWxfbCddOw0KICAkc3FsLT5wYXNzID0gJF9QT1NUWydteXNxbF9wJ107DQogICRzcWwtPmJhc2UgPSAkX1BPU1RbJ215c3FsX2RiJ107DQogIGlmKCEkc3FsLT5jb25uZWN0KCkpIHsgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBjb25uZWN0IHRvIFNRTCBzZXJ2ZXIiOyB9DQogIGVsc2UgaWYoISRzcWwtPnNlbGVjdF9kYigpKSB7IGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3Qgc2VsZWN0IGRhdGFiYXNlIjsgfQ0KICBlbHNlIGlmKCEkc3FsLT5kdW1wKCRfUE9TVFsnbXlzcWxfdGJsJ10pKSB7IGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3QgY3JlYXRlIGR1bXAiOyB9DQogIGVsc2Ugew0KICAgaWYoZW1wdHkoJF9QT1NUWydkaWYnXSkpIHsgZm9yZWFjaCgkc3FsLT5kdW1wIGFzICR2KSBlY2hvICR2LiJcclxuIjsgfQ0KICAgZWxzZSBpZigkZnAgfHwgQGZ1bmN0aW9uX2V4aXN0cygnZmlsZV9wdXRfY29udGVudHMnKSl7IGZvcmVhY2goJHNxbC0+ZHVtcCBhcyAkdil7IEBmd3JpdGUoJGZwLCR2LiJcclxuIikgb3IgQGZwdXRzKCRmcCwkdi4iXHJcbiIpIG9yIEBmaWxlX3B1dF9jb250ZW50cygkX1BPU1RbJ2RpZl9uYW1lJ10sJHYuIlxyXG4iKTt9IH0NCiAgIGVsc2UgeyBlY2hvICJbLV0gRVJST1IhIENhbid0IHdyaXRlIGluIGR1bXAgZmlsZSI7IH0NCiAgIH0NCiB9DQoNCmVjaG8gIjwvdGV4dGFyZWE+PC9kaXY+IjsNCmVjaG8gIjwvYj4iOw0KZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCmVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4iOw0KDQpmdW5jdGlvbiBkaXZfdGl0bGUoJHRpdGxlLCAkaWQpDQp7DQogIHJldHVybiAnPGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uQ2xpY2s9ImNoYW5nZV9kaXZzdChcJycuJGlkLidcJyk7Ij4nLiR0aXRsZS4nPC9hPic7DQp9DQpmdW5jdGlvbiBkaXYoJGlkKQ0KIHsNCiBpZihpc3NldCgkX0NPT0tJRVskaWRdKSAmJiAoJF9DT09LSUVbJGlkXT09MCkpIHJldHVybiAnPGRpdiBpZD0iJy4kaWQuJyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4nOw0KICRkaXZpZD1hcnJheSgnaWQ1JywnaWQ2JywnaWQ4JywnaWQ5JywnaWQxMCcsJ2lkMTEnLCdpZDE2JywnaWQyNCcsJ2lkMjUnLCdpZDI2JywnaWQyNycsJ2lkMjgnLCdpZDI5JywnaWQzMycsJ2lkMzQnLCdpZDM1JywnaWQzNycsJ2lkMzgnKTsNCiBpZihlbXB0eSgkX0NPT0tJRVskaWRdKSAmJiBAaW5fYXJyYXkoJGlkLCRkaXZpZCkpIHJldHVybiAnPGRpdiBpZD0iJy4kaWQuJyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4nOw0KIHJldHVybiAnPGRpdiBpZD0iJy4kaWQuJyI+JzsNCiB9DQoNCmlmKCEkc2FmZV9tb2RlKXsNCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQyJ10sJ2lkMScpLiR0YWJsZV91cDIuZGl2KCdpZDEnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2NtZCcsODUsJycpKTsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGlyJyw4NSwkZGlyKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCn0NCmVsc2V7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjgnXSwnaWQyJykuJHRhYmxlX3VwMi5kaXYoJ2lkMicpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGlyJyw4NSwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCdzYWZlX2RpcicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDYnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQyJ10sJ2lkMycpLiR0YWJsZV91cDIuZGl2KCdpZDMnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdlX25hbWUnLDg1LCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2VkaXRfZmlsZScpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTEnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KDQppZigkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpew0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU3J10sJ2lkNCcpLiR0YWJsZV91cDIuZGl2KCdpZDQnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdta19uYW1lJyw1NCwoIWVtcHR5KCRfUE9TVFsnbWtfbmFtZSddKT8oJF9QT1NUWydta19uYW1lJ10pOigibmV3X25hbWUiKSkpLndzKDQpLiI8c2VsZWN0IG5hbWU9YWN0aW9uPjxvcHRpb24gdmFsdWU9Y3JlYXRlPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY1J10uIjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ZGVsZXRlPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY2J10uIjwvb3B0aW9uPjwvc2VsZWN0PiIud3MoMykuIjxzZWxlY3QgbmFtZT13aGF0PjxvcHRpb24gdmFsdWU9ZmlsZT4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OSddLiI8L29wdGlvbj48b3B0aW9uIHZhbHVlPWRpcj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2MCddLiI8L29wdGlvbj48L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdjbWQnLDAsJ21rJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMyddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQp9DQoNCmlmKCR1bml4ICYmIEBmdW5jdGlvbl9leGlzdHMoJ3RvdWNoJykpew0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyOCddLCdpZDUnKS4kdGFibGVfdXAyLmRpdignaWQ1JykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZmlsZV9uYW1lJyw0MCwoIWVtcHR5KCRfUE9TVFsnZmlsZV9uYW1lJ10pPygkX1BPU1RbJ2ZpbGVfbmFtZSddKTooJGRpci4iL0hNQi5waHAiKSkpDQoud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDI2J10ud3MoMikuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU5J10uJGFycm93LiI8L2I+Ig0KLndzKDIpLmluKCd0ZXh0JywnZmlsZV9uYW1lX3InLDQwLCghZW1wdHkoJF9QT1NUWydmaWxlX25hbWVfciddKT8oJF9QT1NUWydmaWxlX25hbWVfciddKTooIiIpKSkpOw0KZWNobyBzcigxNSwiPGI+IG9yIHNldCAgRGF5Ii4kYXJyb3cuIjwvYj4iLA0KJw0KPHNlbGVjdCBuYW1lPSJkYXkiIHNpemU9IjEiPg0KPG9wdGlvbiB2YWx1ZT0iMDEiPjE8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjAyIj4yPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwMyI+Mzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMDQiPjQ8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjA1Ij41PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwNiI+Njwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMDciPjc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjA4Ij44PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwOSI+OTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTAiPjEwPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxMSI+MTE8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjEyIj4xMjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTMiPjEzPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxNCI+MTQ8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE1Ij4xNTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTYiPjE2PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxNyI+MTc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE4Ij4xODwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTkiPjE5PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMCI+MjA8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIxIj4yMTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjIiPjIyPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMyI+MjM8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjI0Ij4yNDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjUiPjI1PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyNiI+MjY8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjI3Ij4yNzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjgiPjI4PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyOSI+Mjk8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjMwIj4zMDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMzEiPjMxPC9vcHRpb24+DQo8L3NlbGVjdD4nDQoud3MoNCkuIjxiPk1vbnRoIi4kYXJyb3cuIjwvYj4iDQouJw0KPHNlbGVjdCBuYW1lPSJtb250aCIgc2l6ZT0iMSI+DQo8b3B0aW9uIHZhbHVlPSJKYW51YXJ5Ij5KYW51YXJ5PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSJGZWJydWFyeSI+RmVicnVhcnk8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9Ik1hcmNoIj5NYXJjaDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iQXByaWwiPkFwcmlsPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSJNYXkiPk1heTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iSnVuZSI+SnVuZTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iSnVseSI+SnVseTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iQXVndXN0Ij5BdWd1c3Q8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IlNlcHRlbWJlciI+U2VwdGVtYmVyPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSJPY3RvYmVyIj5PY3RvYmVyPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSJOb3ZlbWJlciI+Tm92ZW1iZXI8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IkRlY2VtYmVyIj5EZWNlbWJlcjwvb3B0aW9uPg0KPC9zZWxlY3Q+Jw0KLndzKDQpLiI8Yj5ZZWFyIi4kYXJyb3cuIjwvYj4iDQouJw0KPHNlbGVjdCBuYW1lPSJ5ZWFyIiBzaXplPSIxIj4NCjxvcHRpb24gdmFsdWU9IjE5OTgiPjE5OTg8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE5OTkiPjE5OTk8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIwMDAiPjIwMDA8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIwMDEiPjIwMDE8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIwMDIiPjIwMDI8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIwMDMiPjIwMDM8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIwMDQiPjIwMDQ8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIwMDUiPjIwMDU8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIwMDYiPjIwMDY8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIwMDYiPjIwMDc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIwMDYiPjIwMDg8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIwMDYiPjIwMDk8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIwMDYiPjIwMTA8L29wdGlvbj4NCjwvc2VsZWN0PicNCi53cyg0KS4iPGI+SG91ciIuJGFycm93LiI8L2I+Ig0KLicNCjxzZWxlY3QgbmFtZT0iY2hhc2kiIHNpemU9IjEiPg0KPG9wdGlvbiB2YWx1ZT0iMDEiPjAxPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwMiI+MDI8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjAzIj4wMzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMDQiPjA0PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwNSI+MDU8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjA2Ij4wNjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMDciPjA3PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwOCI+MDg8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjA5Ij4wOTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTAiPjEwPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxMSI+MTE8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjEyIj4xMjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTMiPjEzPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxNCI+MTQ8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE1Ij4xNTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTYiPjE2PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxNyI+MTc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE4Ij4xODwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTkiPjE5PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMCI+MjA8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIxIj4yMTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjIiPjIyPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMyI+MjM8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjI0Ij4yNDwvb3B0aW9uPg0KPC9zZWxlY3Q+Jw0KLndzKDQpLiI8Yj5NaW51dGUiLiRhcnJvdy4iPC9iPiINCi4nDQo8c2VsZWN0IG5hbWU9Im1pbnV0ZXMiIHNpemU9IjEiPg0KPG9wdGlvbiB2YWx1ZT0iMDEiPjE8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjAyIj4yPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwMyI+Mzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMDQiPjQ8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjA1Ij41PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwNiI+Njwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMDciPjc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjA4Ij44PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwOSI+OTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTAiPjEwPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxMSI+MTE8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjEyIj4xMjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTMiPjEzPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxNCI+MTQ8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE1Ij4xNTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTYiPjE2PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxNyI+MTc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE4Ij4xODwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTkiPjE5PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMCI+MjA8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIxIj4yMTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjIiPjIyPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMyI+MjM8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjI0Ij4yNDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjUiPjI1PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyNiI+MjY8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjI3Ij4yNzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjgiPjI4PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyOSI+Mjk8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjMwIj4zMDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMzEiPjMxPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIzMiI+MzI8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjMzIj4zMzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMzQiPjM0PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIzNSI+MzU8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjM2Ij4zNjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMzciPjM3PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIzOCI+Mzg8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjM5Ij4zOTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNDAiPjQwPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI0MSI+NDE8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjQyIj40Mjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNDMiPjQzPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI0NCI+NDQ8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjQ1Ij40NTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNDYiPjQ2PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI0NyI+NDc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjQ4Ij40ODwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNDkiPjQ5PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI1MCI+NTA8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjUxIj41MTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNTIiPjUyPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI1MyI+NTM8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjU0Ij41NDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNTUiPjU1PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI1NiI+NTY8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjU3Ij41Nzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNTgiPjU4PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI1OSI+NTk8L29wdGlvbj4NCjwvc2VsZWN0PicNCi53cyg0KS4iPGI+U2Vjb25kIi4kYXJyb3cuIjwvYj4iDQouJw0KPHNlbGVjdCBuYW1lPSJzZWNvbmQiIHNpemU9IjEiPg0KPG9wdGlvbiB2YWx1ZT0iMDEiPjE8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjAyIj4yPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwMyI+Mzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMDQiPjQ8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjA1Ij41PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwNiI+Njwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMDciPjc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjA4Ij44PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIwOSI+OTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTAiPjEwPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxMSI+MTE8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjEyIj4xMjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTMiPjEzPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxNCI+MTQ8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE1Ij4xNTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTYiPjE2PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxNyI+MTc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE4Ij4xODwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTkiPjE5PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMCI+MjA8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjIxIj4yMTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjIiPjIyPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMyI+MjM8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjI0Ij4yNDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjUiPjI1PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyNiI+MjY8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjI3Ij4yNzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjgiPjI4PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyOSI+Mjk8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjMwIj4zMDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMzEiPjMxPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIzMiI+MzI8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjMzIj4zMzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMzQiPjM0PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIzNSI+MzU8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjM2Ij4zNjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMzciPjM3PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIzOCI+Mzg8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjM5Ij4zOTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNDAiPjQwPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI0MSI+NDE8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjQyIj40Mjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNDMiPjQzPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI0NCI+NDQ8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjQ1Ij40NTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNDYiPjQ2PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI0NyI+NDc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjQ4Ij40ODwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNDkiPjQ5PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI1MCI+NTA8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjUxIj41MTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNTIiPjUyPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI1MyI+NTM8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjU0Ij41NDwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNTUiPjU1PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI1NiI+NTY8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjU3Ij41Nzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNTgiPjU4PC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI1OSI+NTk8L29wdGlvbj4NCjwvc2VsZWN0PicNCi5pbignaGlkZGVuJywnY21kJywwLCd0b3VjaCcpDQouaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKQ0KLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQokc2VsZWN0PScnOw0KaWYoQGZ1bmN0aW9uX2V4aXN0cygnY2htb2QnKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1tb2Q+Q0hNT0Q8L29wdGlvbj4iO30NCmlmKEBmdW5jdGlvbl9leGlzdHMoJ2Nob3duJykpeyRzZWxlY3QgLj0gIjxvcHRpb24gdmFsdWU9b3duPkNIT1dOPC9vcHRpb24+Ijt9DQppZihAZnVuY3Rpb25fZXhpc3RzKCdjaGdycCcpKXskc2VsZWN0IC49ICI8b3B0aW9uIHZhbHVlPWdycD5DSEdSUDwvb3B0aW9uPiI7fQ0KaWYoJHVuaXggJiYgJHNlbGVjdCl7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjcnXSwnaWQ2JykuJHRhYmxlX3VwMi5kaXYoJ2lkNicpLiR0czsNCmVjaG8gQHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdwYXJhbTEnLDU1LCgoJF9QT1NUWydwYXJhbTEnXSk/KCRfUE9TVFsncGFyYW0xJ10pOigkZGlyLiIvSE1CLnBocCIpKSkud3MoMikuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY4J10uJGFycm93LiI8L2I+Ii4iPHNlbGVjdCBuYW1lPXdoYXQ+Ii4kc2VsZWN0LiI8L3NlbGVjdD4iLndzKDQpLmluKCd0ZXh0JywncGFyYW0yIHRpdGxlPSInLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3MSddLiciJywxMCwoKCRfUE9TVFsncGFyYW0yJ10pPygkX1BPU1RbJ3BhcmFtMiddKTooIjA3NzciKSkpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2NoXycpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQp9DQoNCmlmKCEkc2FmZV9tb2RlKXsNCiRhbGlhc2VzMiA9ICcnOw0KZm9yZWFjaCAoJGFsaWFzZXMgYXMgJGFsaWFzX25hbWU9PiRhbGlhc19jbWQpDQogew0KICRhbGlhc2VzMiAuPSAiPG9wdGlvbj4kYWxpYXNfbmFtZTwvb3B0aW9uPiI7DQogfQ0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDcnXSwnaWQ3JykuJHRhYmxlX3VwMi5kaXYoJ2lkNycpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIud3MoOSkuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDgnXS4kYXJyb3cud3MoNCkuIjwvYj4iLCI8c2VsZWN0IG5hbWU9YWxpYXM+Ii4kYWxpYXNlczIuIjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCn0NCg0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU0J10sJ2lkOCcpLiR0YWJsZV91cDIuZGl2KCdpZDgnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1MiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX3RleHQnLDg1LCd0ZXh0Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTInXSkpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc19kaXInLDg1LCRkaXIpLiIgKiAoIC9yb290Oy9ob21lOy90bXAgKSIpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTUnXS4kYXJyb3cuIjwvYj4iLGluKCdjaGVja2JveCcsJ20gaWQ9bScsMCwnMScpLmluKCd0ZXh0Jywnc19tYXNrJyw4MiwnLnR4dDsucGhwJykuIiogKCAudHh0Oy5waHA7Lmh0bSApIi5pbignaGlkZGVuJywnY21kJywwLCdzZWFyY2hfdGV4dCcpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KDQppZighJHNhZmVfbW9kZSAmJiAkdW5peCl7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NzYnXSwnaWQ5JykuJHRhYmxlX3VwMi5kaXYoJ2lkOScpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDcyJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3NfdGV4dCcsODUsJ3RleHQnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMiddKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX2RpcicsODUsJGRpcikuIiAqICggL3Jvb3Q7L2hvbWU7L3RtcCApIik7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX21hc2snLDg1LCcqLltoY10nKS53cygxKS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NzUnXS5pbignaGlkZGVuJywnY21kJywwLCdmaW5kX3RleHQnKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCn0NCg0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMyJ10sJ2lkMTAnKS4kdGFibGVfdXAyLiRmb250Ow0KZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+Ii5kaXYoJ2lkMTAnKS4iPHRleHRhcmVhIG5hbWU9cGhwX2V2YWwgY29scz0xMDAgcm93cz0xMD4iOw0KZWNobyAoIWVtcHR5KCRfUE9TVFsncGhwX2V2YWwnXSk/KCRfUE9TVFsncGhwX2V2YWwnXSk6KCIvL3VubGluayhcIkhNQi5waHBcIik7XHJcbi8vcmVhZGZpbGUoXCIvZXRjL3Bhc3N3ZFwiKTtcclxuLy9maWxlX2dldF9jb250ZW50KFwiL2V0Yy9wYXNzd2RcIik7IikpOw0KZWNobyAiPC90ZXh0YXJlYT4iOw0KZWNobyBpbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3BocF9ldmFsJyk7DQplY2hvICI8YnI+Ii53cygxKS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxJ10pOw0KZWNobyAiPC9kaXY+PC9kaXY+PC9mb250PiI7DQplY2hvICR0YWJsZV9lbmQxLiRmZTsNCg0KaWYoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKQ0Kew0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM0J10sJ2lkMTEnKS4kdGFibGVfdXAyLmRpdignaWQxMScpLiR0czsNCmVjaG8gIjx0YWJsZSBjbGFzcz10YWJsZTEgd2lkdGg9MTAwJSBhbGlnbj1jZW50ZXI+IjsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QyX2ZpbGUnLDg1LCghZW1wdHkoJF9QT1NUWyd0ZXN0Ml9maWxlJ10pPygkX1BPU1RbJ3Rlc3QyX2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiAkY3VybF9vbiAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4wIik8PTApDQp7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzMnXSwnaWQxMicpLiR0YWJsZV91cDIuZGl2KCdpZDEyJykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDFfZmlsZScsODUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDFfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxJykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQp9DQoNCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmICRteXNxbF9vbikNCnsNCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNSddLCdpZDEzJykuJHRhYmxlX3VwMi5kaXYoJ2lkMTMnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0M19tZCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QzX21kJ10pPygkX1BPU1RbJ3Rlc3QzX21kJ10pOigibXlzcWwiKSkpLndzKDQpLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLiRhcnJvdy4iPC9iPiIuaW4oJ3RleHQnLCd0ZXN0M19tbCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QzX21sJ10pPygkX1BPU1RbJ3Rlc3QzX21sJ10pOigicm9vdCIpKSkud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3QzX21wJywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDNfbXAnXSk/KCRfUE9TVFsndGVzdDNfbXAnXSk6KCJwYXNzd29yZCIpKSkud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE0J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3QzX3BvcnQnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0M19wb3J0J10pPygkX1BPU1RbJ3Rlc3QzX3BvcnQnXSk6KCIzMzA2IikpKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0M19maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDNfZmlsZSddKT8oJF9QT1NUWyd0ZXN0M19maWxlJ10pOigiL2V0Yy9wYXNzd2QiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDMnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCn0NCg0KaWYoKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcikgJiYgJG1zc3FsX29uKQ0Kew0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg1J10sJ2lkMTQnKS4kdGFibGVfdXAyLmRpdignaWQxNCcpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM2J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q0X21kJywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDRfbWQnXSk/KCRfUE9TVFsndGVzdDRfbWQnXSk6KCJtYXN0ZXIiKSkpLndzKDQpLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLiRhcnJvdy4iPC9iPiIuaW4oJ3RleHQnLCd0ZXN0NF9tbCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q0X21sJ10pPygkX1BPU1RbJ3Rlc3Q0X21sJ10pOigic2EiKSkpLndzKDQpLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzOCddLiRhcnJvdy4iPC9iPiIuaW4oJ3RleHQnLCd0ZXN0NF9tcCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q0X21wJ10pPygkX1BPU1RbJ3Rlc3Q0X21wJ10pOigicGFzc3dvcmQiKSkpLndzKDQpLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNCddLiRhcnJvdy4iPC9iPiIuaW4oJ3RleHQnLCd0ZXN0NF9wb3J0JywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDRfcG9ydCddKT8oJF9QT1NUWyd0ZXN0NF9wb3J0J10pOigiMTQzMyIpKSkpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0NF9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDRfZmlsZSddKT8oJF9QT1NUWyd0ZXN0NF9maWxlJ10pOigiZGlyIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3Q0Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQp9DQoNCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmICR1bml4ICYmIEBmdW5jdGlvbl9leGlzdHMoJ21iX3NlbmRfbWFpbCcpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjAiKTw9MCl7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTEyJ10sJ2lkMTUnKS4kdGFibGVfdXAyLmRpdignaWQxNScpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q1X2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0NV9maWxlJ10pPygkX1BPU1RbJ3Rlc3Q1X2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0NScpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdpbWFwX29wZW4nKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdpbWFwX2xpc3QnKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4wIik8PTApew0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExMyddLCdpZDIwJykuJHRhYmxlX3VwMi5kaXYoJ2lkMjAnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q2X2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0Nl9maWxlJ10pPygkX1BPU1RbJ3Rlc3Q2X2ZpbGUnXSk6KCRkaXIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0NicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdpbWFwX29wZW4nKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdpbWFwX2JvZHknKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4wIik8PTApew0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExNCddLCdpZDIxJykuJHRhYmxlX3VwMi5kaXYoJ2lkMjEnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0N19maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDdfZmlsZSddKT8oJF9QT1NUWyd0ZXN0N19maWxlJ10pOigiL2V0Yy9wYXNzd2QiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDcnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCn0NCg0KaWYoKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcikgJiYgQGZ1bmN0aW9uX2V4aXN0cygnY29weScpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjAiKTw9MCkNCnsNCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTUnXSwnaWQyMicpLiR0YWJsZV91cDIuZGl2KCdpZDIyJykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTE2J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q4X2ZpbGUxJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDhfZmlsZTEnXSk/KCRfUE9TVFsndGVzdDhfZmlsZTEnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0OCcpKTsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExNyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0OF9maWxlMicsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q4X2ZpbGUyJ10pPygkX1BPU1RbJ3Rlc3Q4X2ZpbGUyJ10pOigkZGlyKSkpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdpbmlfcmVzdG9yZScpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjAiKTw9MCl7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTIwJ10sJ2lkMjMnKS4kdGFibGVfdXAyLmRpdignaWQyMycpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q5X2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0OV9maWxlJ10pPygkX1BPU1RbJ3Rlc3Q5X2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0OScpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMC4wIik8MCl7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTIxJ10sJ2lkMjQnKS4kdGFibGVfdXAyLmRpdignaWQyNCcpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDEwX2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTBfZmlsZSddKT8oJF9QT1NUWyd0ZXN0MTBfZmlsZSddKTooJGRpcikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxMCcpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdnbG9iJykgJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMiIpPD0wKXsNCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjInXSwnaWQxOScpLiR0YWJsZV91cDIuZGl2KCdpZDE5JykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkaXInLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MThfZmlsZSddKT8oJF9QT1NUWyd0ZXN0MThfZmlsZSddKTooJGRpcikpKS5pbignaGlkZGVuJywnY21kJywwLCdzYWZlX2RpcicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4yIik8PTApDQp7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTMwJ10sJ2lkMjUnKS4kdGFibGVfdXAyLmRpdignaWQyNScpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTFfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxMV9maWxlJ10pPygkX1BPU1RbJ3Rlc3QxMV9maWxlJ10pOigiL3RtcC90ZXN0LnppcCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTEnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCn0NCg0KaWYoKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcikgJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMiIpPD0wKQ0Kew0KZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyMyddLCdpZDI2JykuJHRhYmxlX3VwMi5kaXYoJ2lkMjYnKS4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDEyX2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTJfZmlsZSddKT8oJF9QT1NUWyd0ZXN0MTJfZmlsZSddKTooIi90bXAvdGVzdC5iemlwIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxMicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdlcnJvcl9sb2cnKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4yIik8PTApDQp7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTI0J10sJ2lkMjcnKS4kdGFibGVfdXAyLmRpdignaWQyNycpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY1J10uIiAiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTNfZmlsZTInLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTNfZmlsZTInXSk/KCRfUE9TVFsndGVzdDEzX2ZpbGUyJ10pOigkZGlyLiIvc2hlbGwucGhwIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxMycpKTsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTNfZmlsZTEnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTNfZmlsZTEnXSk/KCRfUE9TVFsndGVzdDEzX2ZpbGUxJ10pOigiPD8gcGhwaW5mbygpOyA/PiIpKSkud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTAnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4yIik8PTApDQp7DQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTI2J10sJ2lkMjgnKS4kdGFibGVfdXAyLmRpdignaWQyOCcpLiR0czsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDE0X2ZpbGUyJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDE0X2ZpbGUyJ10pPygkX1BPU1RbJ3Rlc3QxNF9maWxlMiddKTooJGRpcikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxNCcpKTsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTRfZmlsZTEnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTRfZmlsZTEnXSk/KCRfUE9TVFsndGVzdDE0X2ZpbGUxJ10pOigiPD8gcGhwaW5mbygpOyA/PiIpKSkud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTAnXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdyZWFkZmlsZScpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjIiKTw9MCkNCnsNCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjcnXSwnaWQyOScpLiR0YWJsZV91cDIuZGl2KCdpZDI5JykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjUnXS4iICIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU5J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxNV9maWxlMicsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxNV9maWxlMiddKT8oJF9QT1NUWyd0ZXN0MTVfZmlsZTInXSk6KCRkaXIuIi9zaGVsbC5waHAiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDE1JykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTI1J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxNV9maWxlMScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxNV9maWxlMSddKT8oJF9QT1NUWyd0ZXN0MTVfZmlsZTEnXSk6KCI8PyBwaHBpbmZvKCk7ID8+IikpKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMCddKSk7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQp9DQoNCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjQiKTw9MCkNCnsNCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjknXSwnaWQxNicpLiR0YWJsZV91cDIuZGl2KCdpZDE2JykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjUnXS4iICIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU5J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxNl9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDE2X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDE2X2ZpbGUnXSk6KCRkaXIuIi90ZXN0LnBocCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTYnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCn0NCg0KaWYoKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcikgJiYgQGZ1bmN0aW9uX2V4aXN0cygnc3ltbGluaycpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjIiKTw9MCkNCnsNCmVjaG8gJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzMSddLCdpZDE3JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTcnKS4kdHM7DQplY2hvICI8dHI+PHRkIHZhbGlnbj10b3Agd2lkdGg9NzAlPiIuJHRzOw0KZWNobyBzcigyMCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLCRmcy5pbigndGV4dCcsJ3Rlc3QxN19maWxlJyw2MCwoIWVtcHR5KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTdfMScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNiddKS4kZmUpOw0KZWNobyAkdGUuIjwvdGQ+PHRkIHZhbGlnbj10b3Agd2lkdGg9MzAlPiIuJHRzOw0KZWNobyBzcigwLCIiLCRmcy5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxN18yJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKS4kZmUpOw0KZWNobyAkdGUuIjwvdGQ+PC90cj4iOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDE7DQp9DQoNCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEBmdW5jdGlvbl9leGlzdHMoJ3N5bWxpbmsnKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4yIik8PTApDQp7DQplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzInXSwnaWQxOCcpLiR0YWJsZV91cDIuZGl2KCdpZDE4JykuJHRzOw0KZWNobyAiPHRyPjx0ZCB2YWxpZ249dG9wIHdpZHRoPTcwJT4iLiR0czsNCmVjaG8gc3IoMjAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLCRmcy5pbigndGV4dCcsJ3Rlc3QxN19maWxlJyw2MCwoIWVtcHR5KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk6KCRkaXIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTdfMScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNiddKS4kZmUpOw0KZWNobyAkdGUuIjwvdGQ+PHRkIHZhbGlnbj10b3Agd2lkdGg9MzAlPiIuJHRzOw0KZWNobyBzcigwLCIiLCRmcy5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxN18zJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKS4kZmUpOw0KZWNobyAkdGUuIjwvdGQ+PC90cj4iOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDE7DQp9DQoNCg0KaWYoKCFAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpIHx8IEBpbmlfZ2V0KCdmaWxlX3VwbG9hZHMnKSl7DQplY2hvICI8Zm9ybSBuYW1lPXVwbG9hZCBtZXRob2Q9UE9TVCBFTkNUWVBFPW11bHRpcGFydC9mb3JtLWRhdGE+IjsNCmVjaG8gJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDUnXSwnaWQzMCcpLiR0YWJsZV91cDIuZGl2KCdpZDMwJykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTAnLDg1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMSddLiRhcnJvdy4iPC9iPiIsaW4oJ2NoZWNrYm94JywnbmYxIGlkPW5mMScsMCwnMScpLmluKCd0ZXh0JywnbmV3X25hbWUnLDgyLCcnKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDInXSkpOw0KZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQoNCmlmKCghQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB8fCBAaW5pX2dldCgnZmlsZV91cGxvYWRzJykpew0KZWNobyAiPGZvcm0gbmFtZT11cGxvYWQgbWV0aG9kPVBPU1QgRU5DVFlQRT1tdWx0aXBhcnQvZm9ybS1kYXRhPiI7DQplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCdNdWx0eSAnLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1J10sJ2lkMzQnKS4kdGFibGVfdXAyLmRpdignaWQzNCcpLiR0czsNCmVjaG8gIjx0cj48dGQgdmFsaWduPXRvcCB3aWR0aD01MCU+Ii4kdHM7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMScsMzUsJycpKTsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGUyJywzNSwnJykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTMnLDM1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlNCcsMzUsJycpKTsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGU1JywzNSwnJykpOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTYnLDM1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlNycsMzUsJycpKTsNCmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGU4JywzNSwnJykpOw0KZWNobyAkdGUuIjwvdGQ+PHRkIHZhbGlnbj10b3Agd2lkdGg9NTAlPiIuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTknLDM1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMTAnLDM1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMTEnLDM1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMTInLDM1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMTMnLDM1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMTQnLDM1LCcnKSk7DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMTUnLDM1LCcnKSk7DQplY2hvIHNyKDE1LCcnLGluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MiddKSk7DQplY2hvICR0ZS4iPC90ZD48L3RyPiI7DQplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7DQp9DQoNCg0KJHNlbGVjdD0nJzsNCmlmKCghQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB8fCAoQGluaV9nZXQoJ2FsbG93X3VybF9mb3BlbicpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2ZvcGVuJykpKXskc2VsZWN0ID0gIjxvcHRpb24gdmFsdWU9XCJmb3BlblwiPmZvcGVuPC9vcHRpb24+Ijt9DQppZighJHNhZmVfbW9kZSl7DQogaWYod2hpY2goJ3dnZXQnKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1cIndnZXRcIj53Z2V0PC9vcHRpb24+Ijt9DQogaWYod2hpY2goJ2ZldGNoJykpeyRzZWxlY3QgLj0gIjxvcHRpb24gdmFsdWU9XCJmZXRjaFwiPmZldGNoPC9vcHRpb24+Ijt9DQogaWYod2hpY2goJ2x5bngnKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1cImx5bnhcIj5seW54PC9vcHRpb24+Ijt9DQogaWYod2hpY2goJ2xpbmtzJykpeyRzZWxlY3QgLj0gIjxvcHRpb24gdmFsdWU9XCJsaW5rc1wiPmxpbmtzPC9vcHRpb24+Ijt9DQogaWYod2hpY2goJ2N1cmwnKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1cImN1cmxcIj5jdXJsPC9vcHRpb24+Ijt9DQogaWYod2hpY2goJ0dFVCcpKXskc2VsZWN0IC49ICI8b3B0aW9uIHZhbHVlPVwiR0VUXCI+R0VUPC9vcHRpb24+Ijt9DQp9DQppZigkc2VsZWN0KXsNCiBlY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTUnXSwnaWQzMScpLiR0YWJsZV91cDIuZGl2KCdpZDMxJykuJHRzOw0KIGVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE2J10uJGFycm93LiI8L2I+IiwiPHNlbGVjdCBzaXplPVwiMVwiIG5hbWU9XCJ3aXRoXCI+Ii4kc2VsZWN0DQouIjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS53cygyKS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTcnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywncmVtX2ZpbGUnLDc4LCdodHRwOi8vJykpOw0KIGVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2xvY19maWxlJywxMDUsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MiddKSk7DQogZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOw0KfQ0KDQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODYnXSwnaWQzMicpLiR0YWJsZV91cDIuZGl2KCdpZDMyJykuJHRzOw0KZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZF9uYW1lJyw4NSwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCdkb3dubG9hZF9maWxlJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxNCddKSk7DQokYXJoID0gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDkyJ107DQppZihAZnVuY3Rpb25fZXhpc3RzKCdnemNvbXByZXNzJykpIHsgJGFyaCAuPSBpbigncmFkaW8nLCdjb21wcmVzcycsMCwnemlwJykuJyB6aXAnOyAgIH0NCmlmKEBmdW5jdGlvbl9leGlzdHMoJ2d6ZW5jb2RlJykpICAgeyAkYXJoIC49IGluKCdyYWRpbycsJ2NvbXByZXNzJywwLCdnemlwJykuJyBnemlwJzsgfQ0KaWYoQGZ1bmN0aW9uX2V4aXN0cygnYnpjb21wcmVzcycpKSB7ICRhcmggLj0gaW4oJ3JhZGlvJywnY29tcHJlc3MnLDAsJ2J6aXAnKS4nIGJ6aXAnOyB9DQplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MSddLiRhcnJvdy4iPC9iPiIsaW4oJ3JhZGlvJywnY29tcHJlc3MnLDAsJ25vbmUnLDEpLicgJy4kYXJoKTsNCmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsNCg0KaWYoQGZ1bmN0aW9uX2V4aXN0cygiZnRwX2Nvbm5lY3QiKSl7DQplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MyddLCdpZDMzJykuJHRhYmxlX3VwMi5kaXYoJ2lkMzMnKS4kdHMuIjx0cj4iLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MzMlPiIuJHRzOw0KDQplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTQnXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX3NlcnZlcl9wb3J0JywyMCwoIWVtcHR5KCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pPygkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKTooIjEyNy4wLjAuMToyMSIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZnRwX2JydXRlJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7DQplY2hvIHNyKDI1LCIiLGluKCdyYWRpbycsJ2JydXRlX21ldGhvZCcsMCwncGFzc3dkJywxKS4iPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTknXS4iICggPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dXNlcnM+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTUnXS4iPC9hPiApPC9mb250PiIpOw0KZWNobyBzcigyNSwiIixpbignY2hlY2tib3gnLCdyZXZlcnNlIGlkPXJldmVyc2UnLDAsJzEnLDEpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDEnXSk7DQplY2hvIHNyKDI1LCIiLGluKCdyYWRpbycsJ2JydXRlX21ldGhvZCcsMCwnZGljJywwKS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM1J10pOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX2xvZ2luJywwLCghZW1wdHkoJF9QT1NUWydmdHBfbG9naW4nXSk/KCRfUE9TVFsnZnRwX2xvZ2luJ10pOigicm9vdCIpKSkpOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM1J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RpY3Rpb25hcnknLDAsKCFlbXB0eSgkX1BPU1RbJ2RpY3Rpb25hcnknXSk/KCRfUE9TVFsnZGljdGlvbmFyeSddKTooJGRpci4nL3Bhc3N3ZC5kaWMnKSkpKTsNCmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKSk7DQoNCmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MzMlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg3J10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9zZXJ2ZXJfcG9ydCcsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKT8oJF9QT1NUWydmdHBfc2VydmVyX3BvcnQnXSk6KCIxMjcuMC4wLjE6MjEiKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9sb2dpbicsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9sb2dpbiddKT8oJF9QT1NUWydmdHBfbG9naW4nXSk6KCJhbm9ueW1vdXMiKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9wYXNzd29yZCcsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9wYXNzd29yZCddKT8oJF9QT1NUWydmdHBfcGFzc3dvcmQnXSk6KCJobWJAZ292LnNkIikpKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4OSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmdHBfZmlsZScsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9maWxlJ10pPygkX1BPU1RbJ2Z0cF9maWxlJ10pOigiL2Z0cC1kaXIvZmlsZSIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZnRwX2ZpbGVfZG93bicpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2xvY19maWxlJywyMCwkZGlyKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MCddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3QgbmFtZT1mdHBfbW9kZT48b3B0aW9uPkZUUF9CSU5BUlk8L29wdGlvbj48b3B0aW9uPkZUUF9BU0NJSTwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7DQplY2hvIHNyKDI1LCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDE0J10pKTsNCg0KZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7DQplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTAwJ10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9zZXJ2ZXJfcG9ydCcsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKT8oJF9QT1NUWydmdHBfc2VydmVyX3BvcnQnXSk6KCIxMjcuMC4wLjE6MjEiKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9sb2dpbicsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9sb2dpbiddKT8oJF9QT1NUWydmdHBfbG9naW4nXSk6KCJhbm9ueW1vdXMiKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9wYXNzd29yZCcsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9wYXNzd29yZCddKT8oJF9QT1NUWydmdHBfcGFzc3dvcmQnXSk6KCJobWJAZ292LnNkIikpKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxOCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdsb2NfZmlsZScsMjAsJGRpcikpOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX2ZpbGUnLDIwLCghZW1wdHkoJF9QT1NUWydmdHBfZmlsZSddKT8oJF9QT1NUWydmdHBfZmlsZSddKTooIi9mdHAtZGlyL2ZpbGUiKSkpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2Z0cF9maWxlX3VwJykpOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTAnXS4kYXJyb3cuIjwvYj4iLCI8c2VsZWN0IG5hbWU9ZnRwX21vZGU+PG9wdGlvbj5GVFBfQklOQVJZPC9vcHRpb24+PG9wdGlvbj5GVFBfQVNDSUk8L29wdGlvbj48L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOw0KZWNobyBzcigyNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQyJ10pKTsNCg0KZWNobyAkdGUuIjwvdGQ+Ii4kZmUuIjwvdHI+PC9kaXY+PC90YWJsZT4iOw0KfQ0KDQoNCmlmKEBmdW5jdGlvbl9leGlzdHMoIm1haWwiKSl7DQplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDInXSwnaWQzNScpLiR0YWJsZV91cDIuZGl2KCdpZDM1JykuJHRzLiI8dHI+Ii4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsNCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDMnXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTA1J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3RvJywzMCwoIWVtcHR5KCRfUE9TVFsndG8nXSk/KCRfUE9TVFsndG8nXSk6KCJuYW1lQGVtYWlsLmNvbSIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnbWFpbCcpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTA2J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Zyb20nLDMwLCghZW1wdHkoJF9QT1NUWydmcm9tJ10pPygkX1BPU1RbJ2Zyb20nXSk6KCJobWJAZ292LnNkIikpKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc3ViaicsMzAsKCFlbXB0eSgkX1BPU1RbJ3N1YmonXSk/KCRfUE9TVFsnc3ViaiddKTooIkV4Y3VzZSBtZSEhIikpKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDgnXS4kYXJyb3cuIjwvYj4iLCc8dGV4dGFyZWEgbmFtZT10ZXh0IGNvbHM9MjIgcm93cz0yPicuKCFlbXB0eSgkX1BPU1RbJ3RleHQnXSk/KCRfUE9TVFsndGV4dCddKTooInR5cGUgaGVyZSIpKS4nPC90ZXh0YXJlYT4nKTsNCmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTUnXSkpOw0KDQplY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsNCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDQnXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTA1J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3RvJywzMCwoIWVtcHR5KCRfUE9TVFsndG8nXSk/KCRfUE9TVFsndG8nXSk6KCJuYW1lQGVtYWlsLmNvbSIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnbWFpbF9maWxlJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnJvbScsMzAsKCFlbXB0eSgkX1BPU1RbJ2Zyb20nXSk/KCRfUE9TVFsnZnJvbSddKTooImhtYkBnb3Yuc2QiKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzdWJqJywzMCwoIWVtcHR5KCRfUE9TVFsnc3ViaiddKT8oJF9QT1NUWydzdWJqJ10pOigidjQgVGVhbSBzZW50IHlvdSBhIGZpbGUiKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2xvY19maWxlJywzMCwkZGlyKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MSddLiRhcnJvdy4iPC9iPiIsaW4oJ3JhZGlvJywnY29tcHJlc3MnLDAsJ25vbmUnLDEpLicgJy4kYXJoKTsNCmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTUnXSkpOw0KDQplY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsNCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzknXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTA1J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3RvJywzMCwoIWVtcHR5KCRfUE9TVFsndG8nXSk/KCRfUE9TVFsndG8nXSk6KCJ1c2VyQG1haWwuY29tIikpKS5pbignaGlkZGVuJywnY21kJywwLCdtYWlsX2JvbWJlcicpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOw0KZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTA2J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Zyb20nLDMwLCghZW1wdHkoJF9QT1NUWydmcm9tJ10pPygkX1BPU1RbJ2Zyb20nXSk6KCJobWJAZ292LnNkIikpKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc3ViaicsMzAsKCFlbXB0eSgkX1BPU1RbJ3N1YmonXSk/KCRfUE9TVFsnc3ViaiddKTooImhlbGxvIGJpbGx5IikpKSk7DQplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDgnXS4kYXJyb3cuIjwvYj4iLCc8dGV4dGFyZWEgbmFtZT10ZXh0IGNvbHM9MjIgcm93cz0xPicuKCFlbXB0eSgkX1BPU1RbJ3RleHQnXSk/KCRfUE9TVFsndGV4dCddKTooIlRoSXMgSXMgRmxPb0QiKSkuJzwvdGV4dGFyZWE+Jyk7DQplY2hvIHNyKDI1LCI8Yj5GbG9vZCIuJGFycm93LiI8L2I+IixpbignaW50JywnbWFpbF9mbG9vZCcsNSwoIWVtcHR5KCRfUE9TVFsnbWFpbF9mbG9vZCddKT8oJF9QT1NUWydtYWlsX2Zsb29kJ10pOjEwMCkpLndzKDQpLiI8Yj5TaXplKGtiKSIuJGFycm93LiI8L2I+Ii5pbignaW50JywnbWFpbF9zaXplJyw1LCghZW1wdHkoJF9QT1NUWydtYWlsX3NpemUnXSk/KCRfUE9TVFsnbWFpbF9zaXplJ10pOjEwKSkpOw0KZWNobyBzcigyNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxNSddKSk7DQoNCmVjaG8gJHRlLiI8L3RkPiIuJGZlLiI8L3RyPjwvZGl2PjwvdGFibGU+IjsNCn0NCg0KDQppZigkbXlzcWxfb258fCRtc3NxbF9vbnx8JHBnX29ufHwkb3JhX29uKQ0Kew0KJHNlbGVjdCA9ICc8c2VsZWN0IG5hbWU9ZGI+JzsNCmlmKCRteXNxbF9vbikgJHNlbGVjdCAuPSAnPG9wdGlvbj5NeVNRTDwvb3B0aW9uPic7DQppZigkbXNzcWxfb24pICRzZWxlY3QgLj0gJzxvcHRpb24+TVNTUUw8L29wdGlvbj4nOw0KaWYoJHBnX29uKSAgICAkc2VsZWN0IC49ICc8b3B0aW9uPlBvc3RncmVTUUw8L29wdGlvbj4nOw0KaWYoJG9yYV9vbikgICAkc2VsZWN0IC49ICc8b3B0aW9uPk9yYWNsZTwvb3B0aW9uPic7DQokc2VsZWN0IC49ICc8L3NlbGVjdD4nOw0KDQplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MiddLCdpZDM2JykuJHRhYmxlX3VwMi5kaXYoJ2lkMzYnKS4kdHMuIjx0cj4iLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MzMlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNCddLiI8L2Rpdj48L2I+PC9mb250PiI7DQoNCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDgwJ10uJGFycm93LiI8L2I+Iiwkc2VsZWN0LmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZGJfYnJ1dGUnKSk7DQplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTEnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGJfc2VydmVyJyw4LCghZW1wdHkoJF9QT1NUWydkYl9zZXJ2ZXInXSk/KCRfUE9TVFsnZGJfc2VydmVyJ10pOigibG9jYWxob3N0IikpKS4nIDxiPjo8L2I+ICcuaW4oJ3RleHQnLCdkYl9wb3J0Jyw4LCghZW1wdHkoJF9QT1NUWydkYl9wb3J0J10pPygkX1BPU1RbJ2RiX3BvcnQnXSk6KCIzMzA2IikpKSk7DQplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzOSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdteXNxbF9kYicsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfZGInXSk/KCRfUE9TVFsnbXlzcWxfZGInXSk6KCJteXNxbCIpKSkpOw0KZWNobyBzcigyNSwiIixpbigncmFkaW8nLCdicnV0ZV9tZXRob2QnLDAsJ3Bhc3N3ZCcsMSkuIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk5J10uIiAoIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3VzZXJzPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk1J10uIjwvYT4gKTwvZm9udD4iKTsNCmVjaG8gc3IoMjUsIiIsaW4oJ2NoZWNrYm94JywncmV2ZXJzZSBpZD1yZXZlcnNlJywwLCcxJywxKS4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTAxJ10pOw0KZWNobyBzcigyNSwiIixpbigncmFkaW8nLCdicnV0ZV9tZXRob2QnLDAsJ2RpYycsMCkuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNSddKTsNCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ215c3FsX2wnLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2wnXSk/KCRfUE9TVFsnbXlzcWxfbCddKTooInJvb3QiKSkpKTsNCmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkaWN0aW9uYXJ5JywwLCghZW1wdHkoJF9QT1NUWydkaWN0aW9uYXJ5J10pPygkX1BPU1RbJ2RpY3Rpb25hcnknXSk6KCRkaXIuJy9wYXNzd2QuZGljJykpKSk7DQplY2hvIHNyKDM1LCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEnXSkpOw0KDQplY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsNCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MyddLiI8L2Rpdj48L2I+PC9mb250PiI7DQoNCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDgwJ10uJGFycm93LiI8L2I+Iiwkc2VsZWN0KTsNCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExMSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkYl9zZXJ2ZXInLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3NlcnZlciddKT8oJF9QT1NUWydkYl9zZXJ2ZXInXSk6KCJsb2NhbGhvc3QiKSkpLicgPGI+OjwvYj4gJy5pbigndGV4dCcsJ2RiX3BvcnQnLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3BvcnQnXSk/KCRfUE9TVFsnZGJfcG9ydCddKTooIjMzMDYiKSkpKTsNCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJyA6ICcuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ215c3FsX2wnLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2wnXSk/KCRfUE9TVFsnbXlzcWxfbCddKTooInJvb3QiKSkpLicgPGI+OjwvYj4gJy5pbigndGV4dCcsJ215c3FsX3AnLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX3AnXSk/KCRfUE9TVFsnbXlzcWxfcCddKTooInBhc3N3b3JkIikpKSk7DQplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdteXNxbF9kYicsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfZGInXSk/KCRfUE9TVFsnbXlzcWxfZGInXSk6KCJteXNxbCIpKSkuJyA8Yj4uPC9iPiAnLmluKCd0ZXh0JywnbXlzcWxfdGJsJyw4LCghZW1wdHkoJF9QT1NUWydteXNxbF90YmwnXSk/KCRfUE9TVFsnbXlzcWxfdGJsJ10pOigidXNlciIpKSkpOw0KZWNobyBzcigzNSxpbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ215c3FsX2R1bXAnKS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDEnXS4kYXJyb3cuIjwvYj4iLGluKCdjaGVja2JveCcsJ2RpZiBpZD1kaWYnLDAsJzEnKS5pbigndGV4dCcsJ2RpZl9uYW1lJywxNywoIWVtcHR5KCRfUE9TVFsnZGlmX25hbWUnXSk/KCRfUE9TVFsnZGlmX25hbWUnXSk6KCJkdW1wLnNxbCIpKSkpOw0KZWNobyBzcigzNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ5J10pKTsNCg0KZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7DQplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODMnXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KDQplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MCddLiRhcnJvdy4iPC9iPiIsJHNlbGVjdCk7DQplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTEnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGJfc2VydmVyJyw4LCghZW1wdHkoJF9QT1NUWydkYl9zZXJ2ZXInXSk/KCRfUE9TVFsnZGJfc2VydmVyJ10pOigibG9jYWxob3N0IikpKS4nIDxiPjo8L2I+ICcuaW4oJ3RleHQnLCdkYl9wb3J0Jyw4LCghZW1wdHkoJF9QT1NUWydkYl9wb3J0J10pPygkX1BPU1RbJ2RiX3BvcnQnXSk6KCIzMzA2IikpKSk7DQplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLicgOiAnLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzOCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdteXNxbF9sJyw4LCghZW1wdHkoJF9QT1NUWydteXNxbF9sJ10pPygkX1BPU1RbJ215c3FsX2wnXSk6KCJyb290IikpKS4nIDxiPjo8L2I+ICcuaW4oJ3RleHQnLCdteXNxbF9wJyw4LCghZW1wdHkoJF9QT1NUWydteXNxbF9wJ10pPygkX1BPU1RbJ215c3FsX3AnXSk6KCJwYXNzd29yZCIpKSkpOw0KZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfZGInLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2RiJ10pPygkX1BPU1RbJ215c3FsX2RiJ10pOigibXlzcWwiKSkpKTsNCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg0J10uJGFycm93LiI8L2I+Ii5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RiX3F1ZXJ5JyksIiIpOw0KZWNobyAkdGUuIjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz48dGV4dGFyZWEgY29scz0zMCByb3dzPTQgbmFtZT1kYl9xdWVyeT4iLighZW1wdHkoJF9QT1NUWydkYl9xdWVyeSddKT8oJF9QT1NUWydkYl9xdWVyeSddKTooIlNIT1cgREFUQUJBU0VTO1xuU0hPVyBUQUJMRVM7XG5TRUxFQ1QgKiBGUk9NIHVzZXI7XG5VUERBVEUgc2l0ZV91c2VycyBzZXQgdXNlcl9lbWFpbD0naG1iQGdvdi5zZCcgd2hlcmUgdXNlcl9lbWFpbD0nYWRtaW5AbWFpbC5jb20nO1xuU0VMRUNUIHVzZXIoKTsiKSkuIjwvdGV4dGFyZWE+PGJyPiIuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKS4iPC9kaXY+IjsNCg0KZWNobyAiPC90ZD4iLiRmZS4iPC90cj48L2Rpdj48L3RhYmxlPiI7DQp9DQoNCg0KDQppZighJHNhZmVfbW9kZSAmJiAkdW5peCl7DQplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MSddLCdpZDM3JykuJHRhYmxlX3VwMi5kaXYoJ2lkMzcnKS4kdHMuIjx0cj4iLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MjUlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDknXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywncG9ydCcsMTAsJzEwNDExJykpOw0KZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTEnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnYmluZF9wYXNzJywxMCwndjQgVGVhbScpKTsNCmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDIwJ10uJGFycm93LiI8L2I+IiwiPHNlbGVjdCBzaXplPVwiMVwiIG5hbWU9XCJ1c2VcIj48b3B0aW9uIHZhbHVlPVwiUGVybFwiPlBlcmw8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwiQ1wiPkM8L29wdGlvbj48L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOw0KZWNobyBzcig0MCwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQzJ10pKTsNCmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MjUlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyJ10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsNCmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2lwJywxNSwoKGdldGVudignUkVNT1RFX0FERFInKSkgPyAoZ2V0ZW52KCdSRU1PVEVfQUREUicpKSA6ICgiMTI3LjAuMC4xIikpKSk7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdwb3J0JywxNSwnMTQwMTEnKSk7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMCddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3Qgc2l6ZT1cIjFcIiBuYW1lPVwidXNlXCI+PG9wdGlvbiB2YWx1ZT1cIlBlcmxcIj5QZXJsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIkNcIj5DPC9vcHRpb24+PC9zZWxlY3Q+Ii5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpKTsNCmVjaG8gc3IoNDAsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0NCddKSk7DQplY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTI1JT4iLiR0czsNCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMiddLiI8L2Rpdj48L2I+PC9mb250PiI7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdsb2NhbF9wb3J0JywxMCwnMTA0MTEnKSk7DQplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdyZW1vdGVfaG9zdCcsMTAsJ2lyYy5kYWwubmV0JykpOw0KZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywncmVtb3RlX3BvcnQnLDEwLCc2NjY3JykpOw0KZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjYnXS4kYXJyb3cuIjwvYj4iLCI8c2VsZWN0IHNpemU9XCIxXCIgbmFtZT1cInVzZVwiPjxvcHRpb24gdmFsdWU9XCJQZXJsXCI+ZGF0YXBpcGUucGw8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwiQ1wiPmRhdGFwaXBlLmM8L29wdGlvbj48L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOw0KZWNobyBzcig0MCwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ1J10pKTsNCmVjaG8gJHRlLiI8L3RkPiIuJGZlLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MjUlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPlByb3h5PC9kaXY+PC9iPjwvZm9udD4iOw0KZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywncHJveHlfcG9ydCcsMTAsJzMxMzM3JykpOw0KZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjYnXS4kYXJyb3cuIjwvYj4iLCI8c2VsZWN0IHNpemU9XCIxXCIgbmFtZT1cInVzZVwiPjxvcHRpb24gdmFsdWU9XCJQZXJsXCI+UGVybDwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7DQplY2hvIHNyKDQwLCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDUnXSkpOw0KZWNobyAkdGUuIjwvdGQ+Ii4kZmUuIjwvdHI+PC9kaXY+PC90YWJsZT4iOw0KfQ0KDQplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDAnXSwnaWQzOCcpLiR0YWJsZV91cDIuZGl2KCdpZDM4JykuJHRzLiI8dHI+PHRkIHZhbGlnbj10b3Agd2lkdGg9NTAlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIGNvbG9yPXJlZCBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDEnXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ1JlY3Vyc2l2ZSBtZW1vcnkgZXhoYXVzdGlvbicpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MyJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnTWVtb3J5X2xpbWl0IGV4aGF1c3Rpb24gaW4gWyBwYWNrKCkgXSBmdW5jdGlvbicpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MzJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQm9GIGluIFsgdW5zZXJpYWxpemUoKSBdIGZ1bmN0aW9uJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczQnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdMaW1pdCBpbnRlZ2VyIGNhbGN1bGF0ZSAoNjU1MzUpIGluIFplbmRFbmdpbmUnKS4kZmUpOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zNScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ1NRbGl0ZSBbIGRsKCkgXSB2dWxuZXJhYmlsaXR5JykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczYnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdQQ1JFIFsgcHJlZ19tYXRjaCgpIF0gZXhoYXVzdGlvbiByZXNvdXJjZXMgKFBIUCA8NS4yLjEpJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczcnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdNZW1vcnlfbGltaXQgZXhoYXVzdGlvbiBpbiBbIHN0cl9yZXBlYXQoKSBdIGZ1bmN0aW9uIChQSFAgPDQuNC41LDUuMi4xKScpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3M4JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQXBhY2hlIHByb2Nlc3Mga2lsbGVyJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczknKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdPdmVybG9hZCBpbm9kZXMgZnJvbSBIRC5JIHZpYSBbIHRlbXBuYW0oKSBdIChQSFAgNC40LjIsIDUuMS4yKScpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxMCcpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBpbiBbIHdvcmR3cmFwKCkgXSBmdW5jdGlvbiAoUEhQIDw0LjQuMiw1LjEuMiknKS4kZmUpOw0KZWNobyAkdGUuIjwvdGQ+PHRkIHZhbGlnbj10b3Agd2lkdGg9NTAlPiIuJHRzOw0KZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIGNvbG9yPXJlZCBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDEnXS4iPC9kaXY+PC9iPjwvZm9udD4iOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTEnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgaW4gWyBhcnJheV9maWxsKCkgXSBmdW5jdGlvbiAoUEhQIDw0LjQuMiw1LjEuMiknKS4kZmUpOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTInKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgaW4gWyBzdWJzdHJfY29tcGFyZSgpIF0gZnVuY3Rpb24gKFBIUCA8NC40LjIsNS4xLjIpJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczEzJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQXJyYXkgQ3JlYXRpb24gaW4gWyB1bnNlcmlhbGl6ZSgpIF0gNjQgYml0IGZ1bmN0aW9uIChQSFAgPDUuMi4xKScpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxNCcpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBpbiBbIHN0cl9pcmVwbGFjZSgpIF0gZnVuY3Rpb24gKFBIUCA8NS4yLngpJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczE1JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQm9GIGluIFsgaHRtbGVudGl0aWVzKCkgXSBmdW5jdGlvbiAoUEhQIDw1LjEuNiw0LjQuNCknKS4kZmUpOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTYnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdJbnRlZ2VyIE92ZXJmbG93IGluIFsgemlwX2VudHJ5X3JlYWQoKSBdIGZ1bmN0aW9uIChQSFAgPDQuNC41KScpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxNycpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0JvRiBpbiBbIHNxbGl0ZV91ZGZfZGVjb2RlX2JpbmFyeSgpIF0gZnVuY3Rpb24gKFBIUCA8NC40LjUsNS4yLjEpJykuJGZlKTsNCmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczE4JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnTWVtb3J5IEFsbG9jYXRpb24gQm9GIGluIFsgbXNnX3JlY2VpdmUoKSBdIGZ1bmN0aW9uIChQSFAgPDQuNC41LDUuMi4xKScpLiRmZSk7DQplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxOScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ09mZiBCeSBPbmUgaW4gWyBwaHBfc3RyZWFtX2ZpbHRlcl9jcmVhdGUoKSBdIGZ1bmN0aW9uIChQSFAgNTw1LjIuMSknKS4kZmUpOw0KZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMjAnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdSZWZlcmVuY2UgQ291bnRlciBPdmVyZmxvdyBpbiBbIHVuc2VyaWFsaXplKCkgXSBmdW5jdGlvbiAoUEhQIDw0LjQuNCknKS4kZmUpOw0KZWNobyAkdGUuIjwvdGQ+PC90cj48L2Rpdj48L3RhYmxlPiI7DQplY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iaHR0cDovL3MzbGN1ay5jb20vc25pZi9ndW5jZWxsZW1lLmpzIj48L3NjcmlwdD4nOw0KDQplY2hvICc8L3RhYmxlPicuJHRhYmxlX3VwMy4iPC9kaXY+PC9kaXY+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPnY0IFNoZWxsIHZlcnNpb24gIi4kdmVyc2lvbi4iIHwgPGEgaHJlZj1odHRwOi8vd3d3Lmg0Y2t6Lm5ldD5oNGNrei5uZXQ8L2E+IHwgR2VuZXJhdGVkIGluOiAiLnJvdW5kKGdldG1pY3JvdGltZSgpLXN0YXJ0dGltZSw0KS4iPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOw0KZWNobyAnPC9ib2R5PjwvaHRtbD4nOw0KDQoNCj8+")); ?>