From 96d2d0c03e43fece11d57c87f0507d1e3e3fddde Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 12:00:20 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 12:00:20. --- .../20260515/20260515120002-Binary.backup | Bin 0 -> 241490 bytes .../20260515/20260515120002-Config.rsc | 3404 +++++++++++++++++ .../20260515/20260515120002-Diff-Config.rsc | 211 + 3 files changed, 3615 insertions(+) create mode 100644 MikroMaster/20260515/20260515120002-Binary.backup create mode 100644 MikroMaster/20260515/20260515120002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515120002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515120002-Binary.backup b/MikroMaster/20260515/20260515120002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..18e29a49a4119bf8189ae677eeab19391bcfbbe2 GIT binary patch literal 241490 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П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�$*^eKmboc{5Ohc?PC^Rr=$1a(|a^-%|iM zQR@~dN0?T4$74KUovM6V9b!r{)7~`uGBNSoP&0-SxJymLkS5JcKTJc|kM&2k=7FOU z48+fQS3m`qHPZwggf+>A`S+B-sb>EyQJxZKgiugl)8Ch1Q#VQ%U}?xzrh(DH*O|qh zV4vKrSA~vN*lKEiH4={-{tpeJJRb_Mu7n`W3Hd(lH1{wK(4J+5V&*<^Vg{!3m}kCX zp~KZ>;8cdS-h=zCOatmc>u3iA(Vo+2pYU`={*Icw;@HOWSrv5Si!04q0(1W{QOR7t z7NSZD;$y^C?fw@pa;EjdqI>ojWax}sTQ7j&%XEBOKuW-??--ANz>W+_)&hOp132|q z(DB9%!q$gPF#B`#JgYLO?5F`Qq$_uM8EpGCpDc)S8Xb|yOb~PH09|{JvKcJskO$jj z*?P(*dY1dWFl0WN&M`xTil_1)W!~BrHPlu8dCO<2%y@mx zEzQvl)v5I}r_>59l$B(J4~*T`Sc#(}fCz1KaIx^=J=bR9YgxOIstQ;?|C!S) z@;s%P*63;H2745aTkC27W;iD|S4+x)C+<1mV1`w>j0HqL@gFb?S5tau72v}n0)+@= z4Mz_!mmw!5ZVAO9pMFx{&==Jea62Y1D2fQFGyKuikiw3jmcC79S-jp}=?e9vaJ^A) zGS!Xq{5K4;iUk61WNSGJ9)vK3l>d?du2Q=49{RzerbB8HZwB7s zt=lwaV9ne%mUwLG=)VV`cJ(1T;^x<|*yK|>bZ*Cy=9==uHWB)@E-$z%hkn`@YmxP6 zLi_Ja>sXZAYSjEP!2Zm32%owFy_y_$qq;)ruorui%Ne(P+C;&~S2Z}d1XjmMW$;-$ zyt#GQs+Hdc+|AO4j7FFfVVC4~BZdVR)KzAAsuTFhxw47A#>Z}w7e9=A$qzisVWOvX zaoDs5;?X3;&MCx=V!c6grg7wI@a!}33rd*b9EnddBaQVMYJ`<3*keBy2{)qzR{E#K zIt&?JlO38EZbK7Z$Jzepg6_!WII{JRukY+o%Qm+WkJ`0#;fR0%oPgU)Z2FIXd0 zNwy2oYUK(1sPQOBtkx8aCwqf@$Ae9fRj|mznS`J5)@p>Ku>#}A(4T?vL`wM!mDMe; zG@$@Vt#C?yHE`8t1z`8Qt4_=pn{?>47e-Ff_wQ*^07|%fMo@YM$nuWb2DAo(gP3n_ zz9NWd^mSk_NzCcY)48iAs9VSMx~Zg-bNostg73snE7}OleE!ccj$kk3^*W zPYbW{(Qs>km6mHkY#J^i^_-Fa53O5UvpXipv;-A+ajoJa6Jk}d`@1h{>w&kf&%9Q&-+35*#MJh3qG>_ECg;fk|0nW5V# zwJ@^Z_#;&h-{=NK)J0*Zxnr~L)6N_UWD}DsfHb_Jm-d7!bBxcURkR7NQ(wdsWM278 z=T>XAH`hHQEG^@e63uZ?F`G9>_JDDpW-$;?6LQ&Os-B_ryezWyK!fWry#=;vV55@{ z2@ktR&$Dp6V8~V~4hep_I>q>oujTcWe@h*NwETwo%sfSBn-w47wW6Q%Eqi z&qzusOd?&mH>1uO{{+F!);w?m2e_@G9^w*0Nr#xR^VA`NzRebC8t}(WmH3Jj7)yG_ zw0Rx=ZO@mLRr=GY1~`qA3n=C_Og=5V>4D+Ip1SWfTgb8E5z`A?eQMKnnSk!eL)s4< zGCV$YfXC8$!52?1JeMtvda+gAJem=H%6GDyU{<2yWFM zik(@katp1ks_ljLF2Y;35Tt(pQPC-e&$*ZD4jzv+euie+=I27CQ_{jf7A@ZCLth0q zngE7hUD~hUndNb?M({`8(ih9lnU$meL=9L3Gli^nbtm5K+yAZ|fls(G%rM zv3@38O}Ed@uS2XM7xkT1%wp@4SY0LO4v~RHQ7Bcmq^2oi^8LHTlxXgU&gcKUO-1sp zaq+U+-QXTR90AzRaYDel(P;etc?j^DKh;^KYT51C^BEefKq}q+!io)_=B6A#2Myz~ z`0sIgUQ9>et`2NfiSc$8dvPY&Y=x?sD{&n&iUxEzZ_E7^O<9uiGl|T{4C)hTKL7K2 ztN{cDnS1ng6*J4L=Htz0aCvlbO^p3HrWA(A6IjS);()B<;#t^4r2AgH_Z)eJnyUi} zA1cA{g524i-Fz!>?Bz>g@5zbfmx*rok^oW1Fy}!}F@ew6mVKdaD`>UFgj5TN?~27P z1z5svHC%$g!qa9X1F|G9JvHZz`$8Yor{4ebP+=pV&j2K%uULutYwJ18yZ4S18YXA( zOYYE!Gm_tZ3zpA9m15x%9jTRblTHPP3fcTdK$P=fIKpKha_higMH*%bLdl8hS?Zd( zb>TM^&|yo`EdPnqqu?Nldi@#(I} zq8;zsu^}ZJuck_|nisbiLeTeduU}z+d%Lo{LabK$|4n(>@DDfHgaRgUQ_S*X z1J;f)S4AW!BFc<`?4LD}1B2SI+aY7K4Fx-J>34&XvkLIkbU>lRd!FdBQOx7O_9#RH z^!0O3&|whGSGS=vGLwp;EUVKO9KaCi6rGy%{8EAbIxL8DT8Kq%JwbQy_I^qH6eT-DQ%?|D;5rL=~^EZ9)4+~M#if8K+qeI`K74_ zAa*_(*gW;9^+ysBGSDmhB?C^m=z4Eu#!Wb0$@1#Se};bL&o8*!FteK24Wd4`&43Ys z{IhrIec3C*O>Jo2>vt(Myit)< z933cTy?@}}#ZkNqUKkTRH0Rk+T1N?gZmM`lR&ME9%?hU#Ve$pnnaFbw%9*>-5aE}r zdk-td+OOH8q6(fb&ZPdOaJIEdbW6`A)5C8!VOcPaG&`s47{MwkqW^ z**=f5&47gT3ht%{4ijH1Gk6X}AEfA8wNjdUx%jwef5Dqi!zKdY?p;C}La#wSp$4W( zm=K@VG1gF2a@t7ESOiT!h$js@Z-zvWuY-^ld=fbN2;@(^L>*}`tZ~NvyBH_vppRN_ z-L($rc?E|$Qs?$HssPM~_z(;)SIiDH!v<}gp+pr&?O?yFzToc*0BcR3wWgj`P!M35 z4cY555f8=W?QRiAX_35HX8X5p1Xn<}0f;x%?X40Z<%{YI%E{gGLVP$w%=}u$f22>k zRvXBH7GU7_Nk1>}2#7K{bv&A%qQDm3a6PKBcSm^553*x)M5I!F?!EurH}&2lKO+2X zae&HCHnMAY-V5-9E^nJH>K3kMras+EQ02K)b^Ghd^w(L3P;8r$>47TS^qr1xAFHI9 zOZtK7FCL)cz45->TmMMJQ76YKQ1f3#B`fES?uBF5P)j8E)ZDzhn!dU-gZpG_KTTA& zABnexrPdylX^2|%+{==0h}MXvXEaM7>c3W;=df44EB`unLwi~}nm5eqX_c6(65TB! zgpXVKxXnhbO8f%dNWwro)#(T<MlG&c-F9 z))=Ci0V)c-@3Q{BO^E`mFnPs(QhjLG62RV@FMC$Sx=pra7d=sA=Rv<)jS04*y3w1Q-^qT z6UGvsX3>vC+Y@yMK+{Thhzf-hZ3Tz14JIco`~cX}I9@*i9#_~Gt#uH9r~R>|Lj^DF zYcc3vIBkp(i(2ghdC=`-&6RWPkUi)Iov8kKrXe9;jbY9*Z+=^eBKWmEVm3nUEeDf> zuL)6Iv{VhNEmIw#K)hHt0Vo)FM%8Gm<#5&DV-Q5 z3TLTwqY9VD(+~Q8;m>2;8sZA5K@rEUwSq(z|Am;rv?tCD3l=Nc9lxQ)8Sjo3kQMsb zj5neiP8_1~nNOP1F2!Z=ZjG-tSU8woU+j&NVGs$)^x9>(dfXd2=H@!g@8)P|WeRyP z)n3Q$ulIa_AtL}f{WHv(NLY#~^%9OV9S*%&6aVlkM%1B(GKyORV5;2jY&LnW_@<;We! zuY$2Gh{EPyp;b6*nC;N;DFH|8(rr3_%gAb@)_7nJ2>CvH*HWw=+nLBwi0UtRY_azF zD=mAY*-gWpa81C{404B@$i-rxr$_EXiYH>F|D{8Uiph^0lQEu9l{jhuny|b-AGi35 zX%!uo8<|5@&+M55NexJkp;?8A&sJYFNF=ivqbPNt*K42pN6wzMxw6-eaiaKm1pm^* zH$6l{DR3|pfcsB_BwC|sx)J@Nd|J(4-t%kVNoSx?wwnE&Q4aOySTTz??b&i~fz@m; z0>4rl?#ABXT{<~;DCHX>I%j~%c3Xj@_Fg7Mn_}aI@iUu$3%z#hhFK2BoS+|UGaXwP zX)8pS!Ys0PohV*@YfQHfQnnNX@aA4cK)2xL+J>;ZZOuU1nmNAv?F-QAYMUm-P(%s#Zcoj+Q?k zgIzUzvt>xzCqDN>j^y=w&8uUqV>8NDj~!SPv>P-}aYi3Ds8Rc~G7FjO!RUu8M7l|W zYfVes<2Nk^9KN@#o(nLp#NpxmBeUC5s zY%bkU`nh5kYD2)2&$uHybIGFxa*3^(D-GP)+jx2GPJo*#c>{5uf2k+9@v$uJEG-w{ zI5ns}sTru3nkJ@6ND*n7t>FqaX<+UdE$Mco<~0E7Tz;9*?9p;#rq$~z{A0Yi2EsT` z0Cb@dTokGdDNO#{HopV{J%||M<>6qLSrsUO%!aMXX~Vo7WCOg3X(8yxltp<#JJ6tu zLF<#8U!K5!!BO8VrcfWE6?-OQ zkA|!8N0y!7Ddx%+YR-aV>L;lOBlH`t$CK?r<(|j9HD(BNH_G$LNL>n#MUO-5YF~UJKz-{4En2*1~Xvh zJn)ESNvw`U%ye7ljcS7cSm!2pBIcGk!MYD_sI@BDDZ73tGn%u0)q6VGqC3p2hC zGpV?VZ2sxpP$x@$8A&_2nJOFEB38VwB`7`I?nlhF28%5e3oSJ|UjF|5GaLSH6<$i# z6im^OhmEXGbs@1^WdAB%UgQ6{@M|z%gHnGli}<|{a({8X5@*F5h1q!MhJ+MLJ}?0& zj=yQfPh-ldM}Fl3nt1B=TH$q1$?G^CBnG({o;a~cz(}}rB$U~Zw4LtplUJ(O zYYQEl{S0{vIwKsd(D$exMwhi70kT&Vw;R5ODeW#encBdD-0b+gtKY; zdr?qzt)3hLBCbO0h;b@ZUHh7NzsD2nj24_>x^cd4R<@*3^$aV;?lz=>%YmX7(yZ7pkU$=c@4zx43_Y;S*`q!eFfto;OGCWfQB^o~4}E1B}>%2w3|aS+80!46SV3@I6g`u$JF z2rHVIuQ)4%hXYTjgO^#vlhjMw_3$4X_A)~KQd(O?|K+%M8d*x!9U488Dm@)l$bG(e zD~{aL_FMKb{lRu3OMaw~{_jBZ$y$!?W=#k*H>Y!1q(oPKGJ$X|B=bL`o&I?>_hdK=nyNj6sEs8+z*e}9U&NY%#6md4j zko9N~%QO|eCUf+Koi3e$g<}U6&fiNqdwmKs-qGwELlvN8Xcc~jn5=(Kw&xJcJn*F3p<->> z)ROqJCwq-?wE}Gj)I<0sfYXvmvmBb}T#b!}?iT7@{B}~^^dUGglO1rD?%EEfR;L{F zQXQS0&MAH!oo+oSEklJTScQLr0g(D)KKPp@qL*(^lYlFZ*FWE!FzH8LDdetXkVwO7 z>}8#s(6pIykaIz3@pOfiUy({<2PVD+A)y#Af;uEA)TFrz0nkuyf<;%OPn(;h&mwOH zRfEXi+0vA<>l+p@TTHx=hnr#OL1ByUNogqn77zcC}8+uP26>9JzH5 z>QBT;$*POH-^)RteP0eDU-!(9%J+(SbIfQtlaLf@P!Ae??UHK7nE>O4@?=x?uEJ>l zPYM{|2{^scHh$7{#>u^b>U7y_wVM)rPYH_B#9|Rj+9%}6TrvRRz54`Y$%;!ofM2L( z;I9{mntr1l2t0hsr-!*I;TQn<)p56?aY^#z!|yKuqLd5kUhydQ%8kfto8wu(wTOVR zMfD(yPd6W$uA@`>W5H5dE2$S`?-G4j#6tST_E7Mtj|r@FGo|(n8b#j|xHgvbh5az~ zzLU=Nj~ORezTm6*>6vao0JJYFD3Y(m!)`4lfpQy!yv%ZZ9Sc8bnRT14>uKc=#&z*gn^GGr&BGB?)TUBCe$jo*K8>RHN$nFZf6 zOZHXirs?ZqZx?>q9%O11o$e|(;kPTSC@t@lBFz}EcIfhNTC%UQz_6L|G+ z(8DBnF>Y+1N3~j-tvj0B5~ZPMTZ(*7?y-SM;~;Yom`|BI5Dn-g<~COT>J>`%3 zUG`giz=$tM+W76PJt|jWw;eX675lU)+Z)#6IoaICIN=>{fgq}B1aSSJC7M$#16KEL zHq^^uD+)Z$ZbDU#q!6n7S@cxuV2=bJQ_hd`0Wu`~69%|n2>UTFotxr26az!BK6h=8 z82ti#Dytu=eX{&@mQ>`|5kdg}KLEh-8`CqOKRG5X%hCbmj19pTn@-RGATVptGI|G>@}i3jHVwsk1?2}*l*s43>zz; z&KFIEG1d%olTwc-8`|T1?l{0n-JN_Jb8aCmSYH9o4!a?h4|ASsc-1F9m)+hxIO~0) zz)PZN$_GStakh3nCV#rD!v2@8q>D9filUhBH$rhx*`RvhU)~0w0PgK z-W*mteJSkUDsiW34gye*)y%&$A~bmto^!%r8%a<*KqYXX)0)Bf zn`fx)>7BoDAo7Db-b`1sM)q1qla3`m&i`p;y2&BTsnSx7qt*OCMrDE(S_h2t`s16@ zc$jFxR)I2`x0G`Ltlc6p3GER}^n3enOyNu#-|i4|PzSu@Ar(o1LfU>h0nRRjqE<5F zbANpOhda1J%2JnK@Db-VJ`;jLz+`w^h4sdCURkR0vBpgF{U{tYm5$noXE(LL(7%G@ zb4Cc7SSqG+u*G}Co$2!$i>+u;9!RM5)OugB%x}PTBF`0_{SlDQmoQ0M?_?RM%{Tjk z8mD)Hf&kTh+}{vBSnIJ~ZfiNjXH8|{8(B#(!YvH^xr#o29IRc?^+C>oZLHcev!|-M zT{OZcWNKouk*LJ(e+G>g{C$LyZt%&pWbP8!K)Ou5T`)RSHVak9*BXdtrPQ>{(Wc(M z1-eCZ_Q3VOx|R?gM`z1zlL+N13IYZp^;s#as(>^YM73SFFC;A~&sVC=<~11FIS z)p$^yUDMk>jj9n(3tCD;q4?2@2xV%M>|qd11uFBTrfS*83kkUx<$*_P=x@O{!^@pW zTJH+ebsDwYB|&QOdpTUR!{pMyD)bAMiI-aw*Wz=|hq7?+QeaDeOn1ujH{eG`^7l{N zs2^2u@Rqr^ z5~GW96u;q zzb@9*ia>##UeXy@9A!4XIms46sw};G}x`YivFD!(e3mZ%jkhwd%g5| zcBx1~P}&iG1Yq$6?E}z{PLJH#)8(htzuP8X-P!l*225cP>~x^zP$+$F!A-Qwnv!CpM(uh55cX-r4+7Kst^{=(@x|2eG@4j z8`oJZ$^&%z@jr_8ounU1i(CuvvUYnm@F*R?JcA+8f2||Y{5zwwA~&zCXq099lXHLa zcH}Fy*!cw5F+SE_ZI@K`bBAlNqAP+{4Qr9Os_Q(xdXoQhk;&X1odAGU*gTa!J+WaY zy!8AtT+9jYUr*A&T|;{@Ghc0Sx^i1gPlbMb`JJj#mtC+xqns3{3Xj3$y~-z^*k(VR zHCVaf5nq7)!fmf$2XgzMPE)!6m>I_QEu7xzo^(#UBq)* z_VY*d%!afembhcfVL^P)7w~`J#9Fcv!X*caUS!5}z-I%5Qc-`y4KSiA6B+V<*=QR> zI^|gbTma!#%dm(x@|i>#)GuBZ5LaL5dYdyNgkB8q^hT77Ym$X(oEm)MLK+6LxVkxB zQXV2c2338Xs5JAwn{WP>BOWij!Qo;}=BpQgFS%PYYTtuNJ-?dDD@K6UpQ5&-IL`ZO zvGphfV5!39R!+0z8kKq{K3jN;k{9+1yk0`9lsQk#@P_){HOm?z*M^NcK$F!7ma1iZ z^9IboJ6{|cBq1!s%Up*y`SEHRPnx-~L;4-fSl9g?~X$a0A3@PP4|hQ=lY zoVrpI&oU0lZ9p>4E7C@UvDVByN=--t9fQ znfJe@kG|SY>Zkwo6`E$uqKy(J>DP(!3ZR7m;(_?+ujTpR&a2lt&6^mS zV$UB)n#0nzf`*I>>S7m(traNX`BOa&OT8ptXY&FbdAhsKRDI@BF#0XDx$>kO<9y=G z^))t0420svKx4JG|JUEFOx(GHJF3crD^65c5?=;1&?LF z%uAc0wLXDs=R$4~x{lrkeM@bjo!2yx{46<1rqHhLIxkkHGe&TO5TXpy4Cjm_m=)I{ zQ$CFkMVy6-a~gKQyDToK-2BQnEMd~U#%u(?X&&0T*%AZEU$3@aqF#K zM_UA|$5V zdNms|xLWMz2^5IoxmuF(kbXrIyY#Xkns7>gGpF$r=U{zLnL}r=QM_!8kssc?Dsn z)6s6jHs1kEj9NdEaOMnKHUqt2(v$V5z_=u{Y5z>n7~6EFAq?HnS8c|w68MEI2Fm&* zId@h(p+ebE{t))>6K-Zkn|Yn9B+tCYW5zicu4L0y3$C=OThiwOS0$K5ec;>J9%)HJi{G zc&EL$j!8UGF)te={Wps0UHViWw;N9@@oE)LyqNHF{nAg!ivb_2!kUy>=!f02HCU0^ zfm_$3v_dd)gDyR!@Fi`(JlMNoP{v9x7tbvJHj?%0X4gJzsU`L4B_JtjchRqaH-Z-i zDPU(e0SW97H{kiIBm7<{IofO=?}S|A3YS0LiBK(wWj;?;RZ{lR*N+=IH&dQbN6j&SYrC|zTld6>x z7jMZX)Mh^_6_T(ks7d=N%i7wftQKKv(PM)K=f7@Sf^5berxX;`Iq z3`I8Ts7W2}NLp!uEOSs1tjDrJ;)^zq3Hmwekk5?$2yb{2ce%XWUnz0pYk<5;ZGp1=BHCBRb47IOFoDU*Xmi30b zL{e~iTFjnLChYC47u-tvA)*35ipM6mcGMG=!-EBZK=ck;jVM1XDh<+ejvmQ9Cm4VZ zUdjM`vvb7giHQtgY}b*e8p%h&%nm(uH+94f7r;(3aLht#;8GgJJHrDe2hb6&yqZEf zx_19_GBTos?&Ls->JqbzCl_Gv2a*uqQ!eYFS`5dK%+-tj<({vLR+4UyE$NE|;dhVE z2NB2R#D&u5lEY9lrx_fGwEuqG1portpe6Zsz(ufIOg7_6%AGzs0FC$1O>E#U`rQc* z>tTKsXg%&pe`}wu_zX)BfqZC2d~`NE8i5!{h6-YmnNX#=Ywl0(C|{PRBtkKZ|PbmZJrt zqhT=L!`S$MzFkZIHzj(41^eIFo}iH0b0J`TE#l@~KpH)v&jzDaV@55ZWvYGSd`szN zZ%e99!RM?9izF-;>J?Mj>5&dD0gBaS&w>CeUvBfbMn6YinA#sWbsH!>flM^)Usx2y zLdhUak)gFA^{`{a2lc0I#aTrGfeQzq|EEi^OXjFmLphqUkDEgZim~E6n0);}1uUs7O$JTF{+)6(m@UgrAO44YcB5u@6;o$@6H8!L z&In;5X;H#lD4o?HpNnw@k6LHoyenO2Lvk23+3U<@NxdbiaGeG zI~U+`E+Ti%m1UCA^+AKe$}Hm-$j1I6k|KnkY@+3;2_4RY^xNZ?O%V^%2D0#O-SQ6s zserD)6HvU0NxcSV^zMIvSU(@?A>`rHn2aTMH&cT(a3pxzzWb~*mT9pqcG!BY15(8+ z9ONZ#qx!eVuU`>f=H{f6lOxSikvZlVp(vb9M#h|b5M3FV)ehe4`VGfNC1Iw?YoUQ7 zUYkxyhuhf^Um9RXNwh`VpWuENdkit)(C7U&slyk0_J%I@`CIB-5_#~k<0&bvLck1?G`EW8QYN^9!!h*ILyLY4_g}!?&6l zx7@mpmZwHgwW~d_XRvb|6n?OCJL`0b_sYa_NrorLS_BRDqF*R zFm>`Z%KHN>-uObDJ>EsfFj5B^`)qMCxl-eG$ zz!O}E;6_Y>it^Wbhi-QRLOUrs@zc}T)_nUo7V*P(WeGc3%0uG+6hxPzS?n02;@sIg z3h=&q0`T{jVhrDNjX2?3O87i?ZTc=uAKwiE>yI@fF#i>|CMs@9N1coQm}n>{6Liz8zsb#V-kG(*7cG+ z2(agk2?0_Mx82yCcx!TNR_Ra}o)R`_!n_||i%tflBhTdLlR+9B?XTwK zfZ;8BTZI{m#rim~ovCKUJu}=`_UH>xk{y{aRgiLCb8X8K$;)$Gl5hE2w!Grj^g*JF z6#-&av?oltpR_?>9=GQ$fdrzT=Q!gS^N$!=3BCL+F}o=s*{iELAg>e4xw+eWiMnROiM_ZSvXWQRq@ZN~;f)r{5X5MAql@lW6Tb zX5%2&Lf9=8lvDpu6)DBujYk&pI4cpEqux_>g;mc`j*0#LCX-AjZM zKrO>(OPB_^RHR+U?T*2Pdev1AsmBefFc2J!&))%AE4~Q(@F^9=)B4`l8c~~@89oo5 z3VjC6#^eb;Hh^jLgw#(8sX-M`m5$zTqk`Hp*$WKjDV62E#2uKw`v$`emz9Kqx5Ti)Py*{l`-|KkF*w2 zM1`FkymcYz#!o@7Y3swqDC;TbT#Yhx92bo`Ryf|`_jRr(2q(Nb{!*C`R)D3c2SuWG zjX){7d~4$!k#m-oep#*)y8hUqEyHK@*AFXsp_6%dBen3-1IrZLLl1Xi@RlpZ+_))P zdki$O%CFh_LPlOlfPBnfo=PFR*<~0yST%5hMBeaw!C*HP0-*i*Yh#QHCv}`c!4PaX z_En$k1F-EGTVCP1XwSx2bpm~X&VPLo4eG#Y}H|W7*X2$o5hQx3DZH1j}}-L zzy3dRsScV3NQ{n++vF2Maa`Jr7@5l4&Phs%+eixA47h8G1iv4)@_z*|YHq<)=DIMl z>eA^DBj&vl+j0Dl8r66y$)&`5I`?9-k*__9feqDY~{QV zK7~Ua4p&WM1aan1O8?(Hej^aVRs!&u3iVT(o}~eGLi38`!kZ9ZfW58W+JvJ``n9lWb>m^e`Wz^iUL8?5m_BxbA9C9%hO?9V zG-#QIl;bAJjok`_z18to2;}2F)8S7R23Nk@$%QV*uUi^Jq^~WcyB^Q2Dl;L0O5u`* z;XV@9?aq+ouOzW3OZgMyVVu468Y`U~XcSC<^am)7R^I%Rtf@G=rzGsl5wI{>&SN9K zOtWkzlND#`Jn%TY3!e(}xW{}#w#d}(3Owkt<8j~4^C)%-Nz+#gGr{YPcB;Qa6a(03 z@6?inUhvpWSlZK*b#FutL&_f->?&oi;@`B_dD3nKd*o{Ic1URBuUelZf7sST2 zLtYzYcGF3!!7BIYf6YPC9YV8%&VP0#$7ZLjhbY`Cv&siDbKzwaNFxQlX4Jej^G}#; z3-g5IK2*%oN3#oxGas{ zk=ezR=!kv1(F9oCrFvi>YHT>9Or9O0N?rwSgw0bN3Jc^%Bb1m;U}f0jda-v1 zr^b^(r8B~48Q1+x2uMU|s^Hrz6yI&xS}_cIT$Cl;yNmUc5yRDPJ&`ZCDJQ`>IvqX! z)OusFafBhDMo{mgMy(yHS`;wi`zr!&3=!maM6?ieJ#XGRMSp7ZUN|LOrl=_->d&o1hpgPd~ zaS#L!yMvj9LYY7u+yp89wLecp&7I>&VIJ@>XwsI%l?Ho@Ccd&(lP2P=I_3Xr~V4OrdRFTykZaXYW* zWtqzFjx=u$N?p)!&0fLC&2Rou_Eh7dw_{!R9uyiy0d-ym?EtjtTD-^j)}8f{U&nJO z=+_um#_ekSv(gqCn)|bjZV@@{MG(<)Om^7j77FKqh};ShZGG^9uo1}$kxct4%;0t< z3H54^fYg4{qamMZ+FIqk@g&`8yntP(*1sASUR%bFLB37TH7_f|LbM@tXFLa10JBC4 zBJdFD{3nzhv(+YgTTEVlWWzMi1$&gb9cNzXDO0NdNYjGH?iS%~zAV)+f zXo+9uRq8^HXew%}mg_vXk6I7|u(>JLh*M7#p7*q>(Vr-_7mBj$g71UU7~Qr+mf%o# zMtAi5V!3MBmH3yX_TbkYm>x4M_(Ew1sUL)nLBa^Cy|D>zOc!V**j`Poo27kub*$ZR z%an?cxm%Ll?e>tPsMU9^b)5(tjQGMVa0E-<;hwMxuQL-lWcZSz5aISySiq-F&V!Nm za7c!@UafOZQ7(T{6Njt?wKhhE_NpU;T5QrTp;*6+(Md1UVEQP+Ld9F}y_%;R!w?Ym zjK2c|;zT_xEb!PbAge(Ib+%~>fz$PM7ZWt!E$_z?RrgQc+2JR^@T^tL@l6T!GN->9da>Lug~K==i>v$gnXM7N*-;t9Cm9Tx{4O#5ltnyj zvJH4Td+U>BO&p{sW>?b|G5AZ*>6xucY68{4Y|TP;kh|LlOq->hhlsoxUp~{W(6Ux# zo}S5#?h*MTKWM+c>%7Jdq2r|OAWXIGYNWC^ZH{f&fU^Okj&g>&@3nf?2Fww|rnGhO z<1kaLy`$*bIHY+|n>m$Z;01kt3zxbJUd2fYZH5%8j*Q9FLMTqt2FnoqZeA)IO!yn3 z-?de!6LrZR)j@l}GU@u^t(70eKqAQht8iGrn5I-S7B0z9D?VGRbw}JwGZ3Y4%;0hF z%`Rw0MDrf}3_)oLh;OR~LYqZPvO9G{2ake!@FeBQ2%GQD@|2 zNa#+`P*e%a_buPTAua1}Tp}`q@SlfuPdRUQ9)k=G5yZCAvzpFV%E6MDx4s+H&od|M zDT0NU9AFhxZwE8=BmlFj+ew(AZG+DvK{Y#(XtKn-okXPwO3LGno25C49p8pqH=5K*E1c)=sRQxysAc$9QFT%0^W8}@&AZ4=5Pw%+3|s*3_aM%M(%Li+HAta zEjUhcxW1s~uh=F$O3*UKL$SGI`GL4AYErIQj!8wb2NPK~2x;67{T(Sz9&MgCPhW1c zNn6(EIp&YS(vPQqAg96I=gJV^fkT_+#y$v$^o*T~fzr9{t!tLL4SxT&K8HDeHY0RS zPaTd%Q$(i+Ir~z~x^P2ug;NeQCDf`)uZV2h&!cc<`)4;#TM2RSr`McBfj~R!c7fg0 zem|&KjU1YrTnM35BI3XDy8Hgu>L@vOdgJuioc9(qbK$25q6TRTo_m!wQj^o*2?jw& ztYp;9Xek9tRL9E^O)+Ul6;6;q) zrY5@Jen;YHm-o>z2R1p~;hW5X*?F)6;SHbk<~q3md6M}u`}*iYNw+oiE(6+jn|a>n z+jbH-;cy?PEuz(uNtS2Kp&SyH;`&Ee_f1L1tK7Zxq2Uf5aYICtDp7hV(54@uNfhiL z0*0)<+pQ2oUG-akdwBB2##Q%#AIA`2j>aUsOJiJeJ~^`=%y3W0e){+E+KPv9leE;3 zofT8pU)ksiqSW&BH+4Sjq1aI*{P_M=cxe{{+T~>4)yLYzg!vQprt69=*$h(rb>Uk# zWzjtBS?Fjd+u48kugCGPgCO!&SZxrJwvc9hDnOs$Peow|R6FzX2CCx36JPSnPb{I- zDtGNz+w~BLA5RG>0bSd#1>g#KEEG}Qqh`IT%W7hrZ1i5HtqW-ux_yo33EfxAj~;?3 zuIVw`c7N!BiNfk*U9FS?f!e+xEewm61Y~bYsQaeXRSycoX$M z@@MKVpyJ)}(%MT2Rk(k~dD4Zsc)^d#Q9)#2z6W|g$2gx0FCN5W=J3)Z4}WVm+Bs3P zbAw^)%*_Z#me2-V*AJQpn&`V>aykU987VPu4YheK)BTo?>KSrfLE^TTcj0!JSt5)C zcrE}$FuzIvQPWe2*%H174l?G`R~Gg<*N_hCxAo?~FmXi8t8)uf)R%mNIBz0|@>-kB ztT*`bnF_FfFYmmrWudh4DOer@DVvw_`f3?2L#dR*K$V+Ki(d(BAG?c1#sk`cLNeeE zf~8?tw0vWOs=aS2leTI!@+?VE+nx8P_=g0M_7F-=giIM36pKIuNYvpW`8wPi+Tj7ro|y#)1^+srk%KXB|q*Yfjv! zv2gwTcV;|IByw22^E&JJM=~#)axh^nI4!#3?Uf_)9_uj8FL8|EBFOo^dmkN1hM@v- zH)M>|2sLjksN{PcSj@QlF&!v`c7G7ZX&vqc>0U+`F~&i1Is|pKYPVTv$8!!GXH;FD z${|-3ijjS}*bA$!1W@bSg&B>4elQSE@V9V$IyksH*?Wa!ns-h zYr5O|t`p}0dcw-<@Uy|f2xP4hJC)}oOsTQFoa9s77813J?5s~8>PzPD7YY6osR=k* z+q%JBKlYS|UjEn~2AI=+*wYInQkPWn=}jz`sbX#VtVyS9k39AZoHjBX3jyq?Vp>&UcTSuSwq7atVjoJ-bY_5s}e*gW}%(G6< zP>ce{IA1yI4?^!)xB>Q3vO2r8WTbF=Kf7}TkIBRCs|k18{*kJ3U(fhe=eF4Y`@aryon{>C zc-V#kP3W&SgyeDnKV)m#mVYT~uab;fvnnV(y@G`Zwb|;oz?Chb&x^qN73q#FVng;{ zybD~U8%6`92dTAg>~q*z1bmLG|6alYz_t<0ts4@VFtFaaA;EX0wb6q@a2ibvt)_~7 zI&$fxXhoHgjkRrGD90bCmD${LN8~JVZO+A>c-O&1X`+o~duDL)kCuCbY>tc^SuqW$ z406bn0>#DBcOh+bmiZ+K0mn>~(i9kpl2;fx~Zp5(iE9{N@cI+Blo_q5g45C7Ko!yZ(Dq$Gu2Of$% zNDcYJGL&i_dG$MnhI58}VT1_tz)=8$Yi$zO0lkGfPzx6OBj%V_fsmzhDV7kOCC9;1 zm3|Q!X;-k5Yj{VkeQ3T51WG`FKx2d<>B+5$e*t80bnr2m&Bjmu&EIIv?%X1K({*DR zl~=76*GVwm)OZH>>wq|!2Q2rM1GJyWJr4Bb&!u-p<$z&nRxRBfonhfXiZ!9ysAIP^ ztHqu!=5Lr*0$5p6X5s@AcS^I|EQSxY3@XNANoeE(^HGscoWJZ!^ zz|7P^?C&nwyh^y$@Gp4N1eO!13a7jVwBQ@RN;=4MF$3Trz)3Mr*S%*l-Wzl40x(Rz z!S>$?JY@}fVaRjRs7M@3o0P!h-VwhaEngZu%13@owbT@QR;_iq^s^qVsik!HDD{+& zd<`-@m!hK_;O>$^EI8DfP-3xOsF7ETaLGj0kGZQ+r%;@^h^klTUscQYIlL>oiRT@T zks9lNgm0g9fHhtTFacy0_Q|$i9|%%PY_FVn`*EY02)P@MENF4VdI_$8odHPjT316s z0!&^yJ=UeHu|@Rl^Uf5=kJG}_uo*|*U%5{{3Bt{tew1^hb$CmW3kk-+KHLbIRSQDW zTO|Pa@DYvgl@0;4F>NzuDPLf@er-Sk$kLD_NP{jqja;orI8D63X%I2#Y>#P~$V%`L0Jk?sG+TeIu-8`4Han)`>GmX zx{RQ68F8=veEqB5e^LyvxhO!$1Q-)8Vzyw=p_Vs=M<#1tYOa{cias{BPcAA5pPAL@ z7oL?$-SPB>C>UF9C^YA5oTC<~hv~F+v}~K0dj*?5`(tNp_VP|&Umd~-L*i&?ymL~{ z;-p*SoT=p`WEAk#D3*2B;c-%@DVtl&HWa9u3S;^Kaap3cjB2;)xkO?2CYgumFQh>< z9-`5F^C2rzg7(T`y&-0>-Gm8BX}-Ju+#Ckp9Jm!`I;@4gaoxNXNZq!x-bfFgA!B2HbT|&s`k0=|I`-qNws4nqE^o8a?=s@K;_W_2 z?nZKj!SDe?OyDA1c;VRnhB+9{HDTW&v8VeSDr#}lastK}63#nIqJ~!qzD-364I+Mq zK^#dLKoXAb3~C|#-KA6B|Cso&thtAE9Z*IhD@2v5PZ&vQKDpIV54a`reGGx8`L7d%mH2R?^Cz`6wt*k7U*@rGE-@Wq^ zZDf1V!1;)5BdmskFsZ^d<(X>IN7!qjeT|zL{j=7aJ8>L7GKj&u5aEYl=J#O@S%f<> zeG+4FH^)}En&JIW#Z~=$@^C<*@o{t_Ja!g>0qkEX!LtfX8YKLyoQX#D=C0alP9G?F zPWD3Pc`zS%F8Wguna3pD08WIz9p4{$yCN@3%zJb$u^0K~`BK)-zBl#BQ$|>efs!Bx zJX+dx%WgirutwT+{pRROm}%(pxY?HC{{y|9T)V|l9Z?LnzG3+r|MqAAz^4%PXzPy} z@J*zmH^}GGZPWwPH$Ri(~3P2JRQ-CCqJ&5Ws8H9Tyg;0qQ626xU|dxW>Tk~ zmTac>2=gbU#5;DtNj9C07Poq*I2ze%Vq<=$*@(EP?{uYaDQGH8s>W<9cql%TtcVyo zIkU-HBl=Vp2zkLew(N}raAK({|vRMwo zR@||Q23Qut5ni^BMJ2PXfy#qfH?d6na56f@1J4LR%SC^^Hs`L=u~De?N*lFUX9i`I z`G34)36;<6ZrxrSO48LnB3~(dj7we(LO%5ca&$uQdY4)rr^t7>!(Xw9>12izLUN!h zKz;!y0k@Jp`Rx;Mdnd|1r%sId%#idr+Yap7B5sw*TNA`O4P&r|2yDb}@(el4KHNh- zzC>=UFj(LKvNHo`TyTrpYn@F0;tf9~1|cm{zf^~~D=V^>SJ_r~YT8C|8nCP9tS34h zX{UH_d{f2!I~!zpDZGz0(5C>mw1>R6!U06RknFDf;(k8yYshAdMtH-9OM0}aur6AQ zu$5uQODA{K3$F8!+Io5{Jf=N=>ioXd%z5ocYN^;aqDITx{MF+53fPvT)6r zb;NM0_xOQ;orq!Dc~bwYe87)6`AFIGGw^>wl(LVMQ8dnVWv;S!5n{l=j;x~+kzc!6 z^Nryv+^q$NoIlKZPAbH9P~+ZU@Eo^C>*{~`ce|cegrLw@!~^#4Y_OtDQUVX)UEy^3 z+x$3_whbGqk7DrktsuDh^}%nNg1d&M9IMYP=P;|d4DHqRJyDhzir)vsgP3-=vX43e zi9SzRIsvJM7Vmw@*U3Bg&&$lEKRfFZOnICj9KaV@_blADJVzX0YbpFbQ9J`eW&LME zMG6GEN=c3OLe6^lrrzjY8-2qYhx}*h-P|RD`ERFRnHs(CrB@A$*OMH6HehV5o3_&6 zg66DJ&)m$8z4FpU6n8t(ndRLG2+Qm-0Yn#>s|q547FU&`>vOgI>cBmr0@T9^Hz`Jzl~%-m zUuZ@pf3_OyyKP5VMP*4}k!VXUk%8={&d8Dgud@&$NP0z6>Rm-tPSH1rrhfp~WcqZ2ezlBiPQ!aAltaMHcV|LLGuq`5KM*&a6~v zLUQYT^iCw9xG3KL%)0!@$(}9O_-Z=7ZeZVm1GQk7e{C_>$qpd)kY9^p@k4>WU*o z_oCDSCCLpzCJ7(@NeT4XCiKcdURKTlx;Xeb6&{(q+-NJq0sNn3_-wXut<+oxNrT`( zz)~AGg}Z{l(Q`?i*j0Z6OiQ?Ve1nH2q=Y!GvVg)LEJ;t0*V6b^qTZ)64LcAE&n!!T zPP?12u<-t=#@i;0cCpu%?z{%}!jwTLKV^j>$DLuuhkKg!u<$)Q-Fnk9RIrGCL#{&w zUu!tt^Pvk-^SAT#St}&eU*ztZMy%P)RS8Uu1n*gN?$dsL`V`j7CNxvBNv#D9=^IV{Y60|A^7YZJn7SUD}2ePUNG6~;93t|_+ z33RcEH-A1#=q{ZAw|Jmzz^72~)6?P!X zZ6?KVWsYeD&}RI?eK77B8<9f=(f7SUa22h( z{aIurqgi26R~tCpz;S3{JETP08a05bg&@ny?-MxB9+&+DtqB43C9tTRW1z|* zB}A@?{2APiX7$HxMG`6#xMJLuY?}EEzdLQd!Ha%C-%zfsHJ%qbb$5M3wO6HpC23|! za7*gfibA7_R}XkTgkB&qL%7II-?ja*P7l08OUQGeU3ryg?Z2Rh8tVTjwZadwCeYgs zyow)(z??Fix*VL@BaLM`{0As1zOAym`>-N?dHlB?ed(&;S>-rAhU8S~{;yRx( zD_)0c!Hx|8k0L}?sv8ggBCDJD6}W9l`vXxn1&Bgw9qloY&Kvz%mkVI6c`V)OxGWpU zU6UB$u>f|z<7}V<1P61|)yzl1u3F$FoU-5K(Sk))`VgXC4GtW_wHage;r-+8JBntq%5bc$My}b2p2*8uYmZ zzx#1MR)|mWe6Lw={xt-7*Vc#U{PTNK8DS&U{LjYG z?}{n*f`kU+?HA56PZ-&VB)kuyYR{y94D4x6JgM_gQC+2x-rB$B785AK4flPeF=G3^ z>MSZqHG^ChANB>+#j*;D2ob6Gr(@>yV65`oKRd`)W&PEYmXYVBa1$Xw!_wT?WJf(T zI}$RmNe;{b{dX5c=1yCgR^Io<38pyQkHOk@Ee7+PkSLq~c(W)g%LW=5g@t!I4WBLm zt%5j62q$d6hXI{k`pUckoUERo4N2`jErhKgg#@6Y3%cJlRz8CP6~VeL1Gkh?xdPH6 z%ZR#l1&mN^g_ox?S=_bF0NWVe%?(Ng=Ky_+MD}9_Ln`|b-4TCzC0%70B9Dz5P2~Ms zHmTb3TulFL5m|K^Od*~}u5w~+wT^m`wxRnI4Sk`;C}EI>hyBvJG$Wj|h(kz)&dg@J zDSm<<&N9RD%#rA`Cy7W6Z8m95u_*nrSWXsM{krqPLdpRUwqe{(Sn3%lpDGbLJ2^E7 zKx7ISLI7N@22mlMyCn2=i+M(@zf?#vcD)abDt)DUf)$1*(CaX zxC$Nj5COcU<;EAo)aE5kgDhT}{h}*zbvW#evDDzmKzfdjoVRQt3z!WtajD<}XbK#T z|E;vtWUVOF!1#itoLWR2$qTcA0`QWk@~(NeB&^Sp**|FsCIhL^wT{+?M3ntm5RhLJ zt`(NwwnxzqayOuKDm4Y+Qa!mCSGKyNWLL?u;hS*40X{Ewlh^e%G6(=`y{3-|Z8BU3 zLKTz26OK+0S3mN}%sL(|B3Ni0SM7$%WH#d?Bq{-ms!UvG>Pqy`g-|7qJwL z$~mc2`Q+2#R(YjjL#j z0V%*~_h_5;%KU1LsTio1EC+f=klDPm<1&kO!-4gm$40|esvn`FLX)3h%irN$# z7^F)mrgHv>ZUdP5XehYP5LMF_F(_~PX|h4#JaO#gi7t!u)AJdbI~|9jtRQMq z>T-wY0Bnn{N!3VH0B#k%;=jerV+v_2Z>GzOPG#JriR*nhayni(} zr{U^|Kb4ZumGu@YiUaC{c&8V4_CYRh$UL-zEH2|)F!1I$ssYLkqEal8r3|Jj$Sq~g zQ3ZPvK}O_?VlYo}HL696uAtz>^n4TQ!FXlvdmRm>i2kj%`XND>_}K&#oEO_|ahbXi zY7S8rwKJ{hk(LKT?&VdP`X6NfX>byD1LLfW|H=HFGjmQ(%X9#f;GNB!jl2nHC1y!V zfpN|#YenzK0L^C+uQ;(ICM|Z2>K@YAAs{qrKojqzi=#QOS|3nN@QS?oWRq@55UwS% zEfla<2dB=Bt$2+qnQ?yx1&YK{uM2dT*yAPV50 z_157zHfg-YzgsW$_nF-2{7E!R0f;# z{Di4qDAwPJ8DmO&vsw+?;|0tUxko5w*2ay;>s!&_8oZnttBFr0kn8^v}jP258nAr-5ibSHoILY`L7k@XVp77=r`#pA7bat%EyGI zPr=iT$btS^sp}GV0F6MzUY2g3hL*7O+T(at_X!!lJK^FQ;E|qbFop=yGZ#v09i;n) z=gt(@A09?k2&Jq}qZ(!4TF`|L9LK^};IS=X5!p(~%J>#2O$(q) zhs@S?Qxe3_Dh;x;EU}Va=7-t3$<)zb3kIW{a_6WQHzALdM8CP+79SImu?uReT+8Xz zC1q^!iTD`=!`F0~(<{v`Y7XXhJR+9f$jc@sme}x~YaB{D(szHuj7L_tlX%=${_3-Q z9PpaZ0tvVBpkoa@(b{QUVQeL=xeK3!M%AFn+l7a=b(;!KqTd`3T(cnpP7D+Y^HvhI zNuG0HAw6;o?Ms6h--*%aN6`ZRgig!0Mziw@-IMUOX<+yq# zfwfQg->XqgTcN--U{2|wXoB-QurB#~u=N1o)Cd(r^Ku>ABM-HQbcRMTD^T2#KR|>r ziwxr>m_*Nf6~E@q;1TF9){2y+D;p2NLo|ly1HvFN`Afn+;1StBdYgRZK2_a%lTVSZ zeo^&p$s^zf6XvJ3`Z2@0N62bC^4P{|rL11#mhMnN`I|Mi3_(~gI_0WSyiT}Y9N%GM zqiQ|$n>7iW$PF|Sq%Acd&TfZlbY>Xd7{jTK4fW;0&5a^iCzp z+2ukc-3*XKL>UW@<*0O5XI85yF@Dw7UF6PgG&uZGPJT42-d@s}<46=WB2AKgtbuA9<;zVKc6dpGNoe6ncOJ8 zHQ}ij6}+S>xTzjav;p!`vZH{|SD3|`sgLXRczi8t%AUb3HO26oZXQ%le>{aM-dEr9 z3e+kF3}S#ZmZgnmoDP4CLAt$c3Dkq>EW?CoFAXReXsOnv7BxDptzX5R?zTJZN2AeY z8i7;|af@9ISlR&?MbWIRl76%N<=>kKk$>@ZtE6j>yjfIWuvY3CeEDKiAM%(G5N#f) zfa1#ka5Y7B^ zS0xCZQnU zX$u~}Geg_#fJT>8ulnuZuK06I{-mMM+f2Aq^wnkU{G?E8E`cdo?k9d)M0&Ay#YX(e zP7zGH^4jR+qtvt5^$v{5tVcL`3`S;2FzZaYBt{p=YlMd1gLxRumlnAY@rcd3+Ns0d z#OUH#diQvxs6~Y5fWTi>0Ln%&&;9y()%Clcb$`vvN*sgJBrIDanXmS-rp*izj;iHg z>hCYnTooY1PE})dGH(E3^RNce3gO;!t1T%X`S!%w`jusaw>!<0SPfY#0Qsu zyfI_GB^Rn1D1-u<=I906hEFj&7}R+~_rd#Arqk_PES3oVB?P_%t0!Mhdo^YKXC!^{ z1wgpvUsOb4|3Gcc8rQ1)$^DKx2Lw0N1)qb2U^9ju_q6701wCBfG z07%Sn;u9!m`>KC_YFSTCLHO%2dq{WlKUC}ZWK4fUeSf;&1vL2{jAICfHxnAXyo-S1 z#AaNL75mkM!hkXk>HeHRN6CGCk0i3ynr$4iigYPSS(XF0MV^2zXbD)iatHK>h)^hY zU78V-IaFf#zL&<533Nw7jldLR)zj`}UzJruL8!@pAxM{C#+_OL~S;$8M`(NhK4r8bqD&=Q8 zT%cY~1;$(1XeB^0`zk&izSHpyD)3%i<~s;MEw2ADJ66L&Vx8n5nQo`uiKSL1__` zj<`_=)6-Ifeu*-+f)Uq?o15q1f@~0DPqT`wva=M+>~c<6s}btM_Y;zI)lF>(AS+C= z0M)gw$VXJ7FngWHAvuWl2n}c-EqdN_1`F{CuI@SHWk_*;kP)Cgk<5nyLF)Mn;Vp7h z6uIG25SN)6eMSqp7n{#C(2_f*X(?*KWXKedTK0?XR(qBObUg*c0wcYu7pC53S7899 zILnuYR(u_16fn&J@d?0b;1CWRq~LE4G5_doszIxf{I1A2dvEEv1*rsW!F_(la8wIh zYq;7W_{A_t#(@(zwa|^Ysu?li1R=x@Acvwvw!o^$!MiskJ%Esmijrf)=ER+`!NbV^ zmfW}&Nn6=J{0wmAlP<}iv)}ygXafTE=PGVXb+w|IqF5ulk^JXW#^dBk$%lTGD#H+P z1S2j`F1K%L-&X|}+G{HV9XvgM&uo(N*}NtE=_o&re#F4j9c)B$z4jWhDyyC zdvIN&#-WPYHOtO# z6fool7%v z;0F^Hq#cSCR{0NXw${Ag=Jv}UL6t08_MCa}3r}0rA=?wVRp&EoiJdDCD~e#}jL3nX zXKb&IWdrs}Aemc$3rzB5ueb+FVEa)J9B0_cBb~j^;v7j+_Q|x&CiKV}0?h5Jfk(Bn zC{R7U4a+xGi^BYHLSe~0F9JUcatXvI8)^E#5WPyP8>)dWWQBa9bWeV4JS9zAnd)g2 zNqm=YP5hpce`=C>WVD<1>H@({Jft6BRP!zMJJm6d7Dmga(@j`V{4p)r?Z&KDmB8h$ zG%hB(SZ{W3W9$iDZuu;ACrYY+&H4(@C7_6@MHEAB)f@S_20mF~x-1TC#`PEm@}w=L zCRt4f%Jn5#QVnRsA%cNYtB6A8%*`ZGXPSC)$PPs>iKr}*JIq0Y)s#2D3P@!!a`urvDJ`C&jGx~oBx1@e>Z5h@Nderz`Rm zn{eTX(H3xe#yhU+gBuxQ3vXQIQs$!T`jFA!tmU%K`*vGLKBe=$%)_FJFwy|LmCe8{BC2@Cz}6qsT+$HD8`bhDoP!vzaHV{6Ku%?D1dELoFl*%p z*lF@g7~i`jxot4HP+{boE2tUAL1}kh-EdCfx6Sg=`ruys6B;=%dTtVJA5K_=dQ>dE zK8Vq_inv~!3N<~sR@*{r(%DF!`)A_h@Z@2sKnuo2qA2&4y(8Os?#iMx(gBMzLb;|; zRHp6m!gY;%CQpxm#WzUa?Q3HX`?p2d4*kP}&RD@r)$7iXlBc9b^4~`7>~&9A$QL8B z!u+*6r+yBLsmY zgB#|6>e%oU0FdjB9aHy7nF>V8uyXw^6fiD7X7tTAKN@yxZpU+ZBWJgnfsF$}LKtMr zC#&XMXht+^)k=I{hYTZ_vL($@pQD^z>ZUZw$ z8yK8$lMvWNU4PrDW2{#al0JXA8!f1W=ljCMpc%mA=aRQsJ*uENs1c(Kp)AB$ChCbk zZH%aIN1jsQSv!rCS6a{#mCYP6LG|FfLAXM=@v~>4Gz+fztko@&-dGR+M7*#;7`-9D z<5a_kn`v9viTKLR54*U~J8Sk+u&Gy{Yf{DkglL2zs#CxeNz5tb*)aRBf?}iQ;$XS% z)9wDM1@e&Dr!3AOHvY7XR`bajr)*iifYxiFcUgrRk1&)u;zrx0AjMx(?_yzZ>LeB* zxY^ikI(^eESlD$FIpH*{4f-URRskMEP>qls)=g~De@+~TmliYNi?u8%wPUBNS{3*a zpTYS`rGZ#0zDTo#)FY@yFbg5gS^;e6QASO|)s|PUANWw@&nyK{Ep~*p6@74r5|Qb; z)eT5ok0xw}<%o;4@$W2xm7UMR(Fb7Jo54D z^<*it9A4AxhU##%$Twqz+n6|3%<<4?P%R7PP+x{&C93re(;Y&wUkGgK@!-WX^Neup zkOHbi=nm!E0onfIX5c)jdhQV+?6b(LdI z8lfi8-C z62I1Z^TC^h32-6qDTQUPC+w-BoF&vW55ApOww8tgY6igxqmreyQnJQS-BUNe5%27m z%!ZN;HN^u~%gJ~rfdEuuLNpzTm*Uxiy{TiI&TW_`DvR|$kExbV^ct8)l53;9P53;E z$lL^Uv)OrXirVPCBuK7SyM`#=M-_2VP|gc44|Nk}hEj6$REztQh#kH80^nhdT2WP8 zyhOrHL)7R`+WD`#I)YtC0l6;@(Nf=ki z$P;Ue*%fG?JZvsmxk7C%N8q)hWLuQ}3L<^od}2;^x*duuN`Jc4BncRb2dt}SOGG_v zn+FfTjOeB1S@7{<*slrQ&seg1W9_cWTz$XRFOT%aZ6VoV8i!O$9c4JRm^-2sJ!rwv zQ%hwNzv#jF%&JiuLs^`|B)2ZL4O_E;pk`4F6*I7MCX(d$bQ2qkm36DW1!Mp1STb9V z|BQ3b?L)-cW$H#lzFQEA#FSSM`{44V?6m?s#I70ltJ&q^~zf)eaw^h!?wF#sj{hPOSd}k}X zP!Vsk1d`d3L4y#f*K;)(kqh^XqbvnXGUfiEW+U^E>?6wyU`Z_=;#p9RQMysaMku;Z zjca*@l-O8?DP_pk*=}Jut_8c&9pdo5Q((p|5c2N05PHrokWMipl`N|A8UX_YaSkcN z+j4Q9a}ktU$a4lT4<{VkYZwid4&(XLnve29c#7fHTZ8#45h7Qt=*s5ijblC|a7aca z_HNvkZ?|Gx7J2pe#2&4xf9XNh34Y{<6H)LYN7ZUmeX`lloVYIc_>9R|UAm@7yK9|C zNKY9q-h0-jq*C(ed66h6%m}7#lm(d$mq2PrR{M90vmRub0(M=Fft-MB)W)_p_K!T> znCbw1^-69W8Bx^4kpbD5Op|outl@$nND-1GHr=`jx({FrS#Nam6$Mh(U7lUNH`;J0 zfKp!_O`-`=XOvl;PBlZQ`J?&T^(k|8`;iNmwt5hxaHoMHR_1EOoXB&i9=}@A=t)cu zOQ6VZpB&P9zVDU=Um_c32+|;pVlbXHF4E}7?4Ypb{A8ScTNT}h_? ztKUWW-?ixh_X5EgC7#)i+;w;UaK^rQk-}1T#!EMYU7J>*;WM0*!@};45wx@}jw#c^ z#9&9HabR_9@tYWgj#$1g$*XIa+%>goNl#~@y7!qIX3>DD8VU@sYycg|f>N-P)wsf>K1 zyZ@)nN$PY1^fRXD!R)u@_*8wl;htI=eg$z$Y(Tqn*LAFG~6l6d3gz?2$qzr zsuP-LF+%D7-)`P_88DaFG5U}Extzy{tK~2BytL_3@u^yoY|@pw2y0G@+P-ci|F^C7 zFbyA>z9@^|@cQEA3>u=M35hirV3AJIiY}Dfk|01CaQNx1s?={avevKT{!Un{jod&O zBcpMx<6u73sk4&Uti3Ga?UD((5!A`wT-8A?-q=!j+x~CTIBZ1Y6TT*lH_}WNb{8|0 zIf`o0SH9T$!3(5rb93FitEP?Cxvly&wY*LfaoybFWz9J4;<9*(wm%~ zEPD)b{6ABzIIkLUUlM8(WcRQ8P8dQWm4BJsmBv^iXA8yiPvrDCf!ROlDuJ>Q>znt# z>KDd$D};_F%z@H#;XhHVp!ez_m~lNmDi!A^%_iql844qw&umtBKAU0ls{UDR1;1gj zdP0npNsX?dmIU)20F`iBPW5!Tl?$m*784>%XWVB-bHAl{+c#Rgq(y9O)pCx3wZA1; z*mPO{OUgV?cxy|G=gP#b$9qa-4RHI#8bKDLTZJPcyNX#!>3HTA?wb8G)Z07Kl>hLX zU9t(>M~QscCQC0NBz(m+cLy~sefP$+KyV;#=BQ7`wT0$P@)pIgtY!)&vIRO_<5+{p z$nV0~oWQ{JDyGaL=@_L1EdBoZJ$V9f0XF4aQbbnLC!_?BI=|igirM3ol^JJI$|pma zw9%vVMe7b)Ra|p_*ISjefUCdzluqb{b+_vBh#F|`a1In(`^Tf{2%|93`UrSg-^mCRX4i`qad){C>@Tp(C`Fm}R&fWHSOp{sAZyKxg4l zSszvcKjhvT+A?6ho|E3FAY|!wF=@CvSz)7_$rAXFXG@=lL?*+-9~U+Onji96a1%|F z>SlAq3~94|2ZP#qMxP9)PljJFnmF#ZqpS}bA)pJvY@NhWC@7(FvZe;C(1 zXA70x-hmOV;7;OA$)Tz&R1V7_eKOhc{UGMd0c9m{wnI7KWKWYw;Sfb}*Yi`goaHIM z?r=$h{v6=QejaKdc!eQgC}1Y)?*9@?br?6iJX3f|H*4}C2X3Y%A(Ti5b8`v)cjS$* zZ0x)ODJ$I#HfT?_vCEuBgQZ4N6nbwo2pj&frvanFduGoqA_*0!9GYf*N9bC^Ol8KS z>>XWOA}$R_z&&i(T_gYmE?8K46z1yH8+#0{m8D=Zgp4e+%B*UM%6EtaMDXF0Pcy8!+D ze$7N~%omk!+z$ErqIkm0`#4XqEd7{pndS}AgvuP=LHjbw_*T*(kz;mRanRi~ZPhUw zAOLGjw!EkqU@?es67Q=~4A6MePHR;z8h@@x(xq0= zPCB9A6^p@ZUtcI7pCcL8yM0%aUUCngG5B3q?m+lVmqmC!v@fw^#@d%i`f-x5MW=|X z5!<60s&?4d%SLTx)CQ>Yp*x?#3O(lIeG@qh9P&^(6e*)1 zb@>t#CEMW)?G^OZPw}EN2doiLp@s1G@>L&|Nc1u?TNpW8USL8Dk{9lU(u15#IIwp3 ztt$OrUkQA~G%v5+Y&k&Q`ZAKq2|H6p|Ag?GGI!b`x_@mdlLS?p{txT8XfqAWUirIV zA67t`AF66J`8-Z2rtX5wAWy#2voAhKo6Rn|dDlesI_jXV_UJx5arreV6X_Zg$~{?K zY6ME%rW#*F=}mu%Eg*reQdERIok|Zkj-=;!>4cIvDp^8TZbd&aEC$|Y`Vs3LPgiiH zM~W|DNTEGyiLPF?AE<+00+Ze~$&G#)q=>Z^$I%d=XO6TaVW=!o&zBl)RitfffS!@)hiM>7m z14AuJD+N&(FlWWl96!A=BvQ|mZ8%Bfgt2e>-F(%PENPp@7vaBU^e6_v`u!!yY zqqtU-b4S#bN!V(*#@vpg_3ww~!9f>+lK{FkZ%>3?so#N@{ZMhJm+5%-Uy^ zdJIRhH=v#kGoj5iptM30B>F(0KSCr!t4FFYnI|Cg-L#0grb36-PJc$R<5>lQw0g~! z>x!K;jKVjvCTuLZ3`z{ww9`Pcb0GZ^7rMtPlR5~UnES`Ait@*Nd;kh`Eu^WXJfj@U zqj!(vf&Q=lRI_5kk-_T&8jGwQCAW*FzLpuozK0eOmS^^Oj}=wsHK<(1(3l}1W`xQO zK)D-2M*C00{4BGyu@8j)!@CB12~WA;EG|Jn(KjvUBIVpb%R%tHNRe$~-WHd)EMSC$ znwz%p!yA4mg!;e>I-rZZum0c44ocyx6=vklB{9JZl*ZpyROGi@ z)p@-K{(_qEI>U_2KNQ#7{$dD}^Fl5NV8%#X#&ohz|6U9*grmG268}coR4fdvbnfAo zIcFNRCsg?B$+#*n&@t`HFR{LDT{*~VqW+>JGohlbh84F zc!1yN$8d(!pf>X{;9E7+Vf8x}EHnkD2)(uCUkD*oPS zIOvNNBQ3V>n9S3(RQ>A0oa;HvFgM+FN0p38?utnM6`%pNW_IT|U@naV=oOMI@z zWGtNZ9E+_{vur&6apu6i8bFaQZ1sqq9ZrGQLSK;~=?~71>)eKfQEy%C7UGo5UQ=^+ zE5@y_WqI45`}20ZG$$~+JK2)j+9O#OP*Tyj!3xGH!LY#b+c_JSf4-dORO;5S*!S#1 zfgvsC)T7SNrp)l5d@oop@9XCSafB6;#I6}k4tcIIEJR}KFrkbCUCWFuU|tv_Rg+z9 zpQ*Wo(HqGOktY0{S^AbqHNLS5LgZ$IGb>+^z1g{8PF!t?&^B3uTJ&T^JiQU2G2y7V zw^0KQ=^K}LfSOi5*1-9RzC2<%A-}lM?Dgwq4P8YX>||BEz;$;ew(nJJ$*tDOmd1-rEB*LhDMzaC!Anf01jLDtcSRLTRxMh2D;H0@&iPwV@8`rxDkX{!?#RddlH2Vjy zRVjJxGBs4n^Ua@9kVN9R3`x519R8!U-_ufD`K*tP5zabif4)?JmmQ@J2JTI1f4#yo zYi`#{%Wto1q}vw3<Dmi#L22@zGb|f(4;3?vE8wyhXUEMh+;T4EQ~v^ubA&>rj09C{Wr!wr z&;AVcG-?<-aZHT@)s%{OxA2hn%dUapyTAu(7*8l&h;b>sVsWeF!kX>e%#>wZcZXS6 z%hrKIUTAa4%Cceeb#tDk!h0N8E84BWOvdC}S^6je`zSDWNPW#N&erydCa=9|*h>TvMytsh3G_dWsls;v;0 zt~5>2EGqUdAfFfYny60ztX@l0IY)~ssV)6c5@IIdHl8Ia9os}6!_ng_MxKsXZEeB) zgjF1OTjG{6ZYqpcoF0oERYcMZJY?EUz}>Kn$kc82;{3qcNC3&dHo+Y_T4OahRx0lI zm8lO+->sYbu2red5!&TmrcXNTsL9 zq4NgV5uyZ9v6Z*SrxwYZ|kz1^pasnhrebXx7G*aX&XT}@``j%-@{mj zhU+a4F@s2!ntzcd1&3QnQMc2D1IN=Hr4CzM7*j4-n;z+xhvVmZyA=C$vX-fwLSKu5 zY_5$V5(mR{IoayjYeMi5}DbY=+5{D}99` zkIuk&P6)xC{SV3)^k=<9O#!ytIWRiPP=UP)nswXs%1q)kb@ZI|)rsR?x38*KHBaChIqZa$j5smJZGuJp`jD}nO5mmP(zqFo5Qe$yW`O`fZ< z9w%^lI$8HlffSWXSe|j*do+q)_OOA~oh;(k7-g7*Bzqz)NQ7PKGOoHp-Jph)p^KW-zpM6dg+SA?`Ww7iFtU`I?A$DNpt+K`qAZ zl%Pw2ev75nh&Xl_ zA$X~-xWHKy*7%hDwDCro8t1`yxz2}k6+HbTL?~vOY)`e2bt}tg>66CLWeb40Mhsq9 zmZ?+3B<$PZYKh%SI6}S^&RQht93OuVS2fm`x-MN_Dg4}`@S`>|15NcbQF~>E^Mp_< zA20bmaGDx^=@nx_!&@!6u|&04`jG&L8~3iKvF=QfnsgK+;+=9XVQD!zaSN}v@k_)M z!9BojM*yGT)V#VXMH&f$(pfc0+e0uY{n4FD zT-fMf?5+|?P;qFn{N=>{fiKoZZ9|YnuF>khhAtuY_N2sD()4T5KT33PqTciKn9nkB4t z;~bTVl-d}nJD73gTSgz?CL>7W{?|n_Ru5V;X}U5E&~nc{^H%X#6KWyIMB(Hs zO)H?59?35^#c(H?p*IA{8r?tj8F);BN|BQlqfk^9#PQR-AK+D~I(-3iw4J)By1N)G z#)mQ4z0Gbk>%K~%&Ts@)O_>#QsopO<|MC=Mbr;vQ zZmg_{hndx=rUfhlBZh~8QdT*Ax&=wDk5chu+#za#%xWa-8xbQaEPgIqzHYAaQ4YKM znjra1OqOf4=C9J%6ndKLYVmaEwr-D97m9~;pnlzvajMK+iISKhMn-HU@>E1>dbgYP z-+ivbCxk3g?d|l`62u`!ND-T+F`hU8zM4Db=)91ye9Y~FD7hcLVyM~unel^3r``p6 zjoH>sFp`(3Ni3v`Awg5G$nWrC$Vz0pD8$+IlpHjX zXVyl^V6b1pfB9v7q1;>uLwHylpP^VV-dodEaIp1WZWZRRjX7YFI^-!MT~Hnii%(G} zI{N$IL)2&UZK<+5uS7*6&$IQETTZ5vQ=FLU$ery9T!zo&@^3NT9%)jT4iJ9`iT=#S z?bN_AKU4R}o4|G3R5L;{u>6iaccJ%KdZ_6c_1qe@p`VqqfbPG6*&3tgAtmu;JV}P| ziD9MzI57tI9%>N_gmeDUR6vhnitonKU&ZJo>VRRNbn&hVXErwi``TxOnq%cy17 zf(@4f^)K+@?(?mCq|0jRZ_&K>+)j%AV)V`PLN2&%XoOITO07kPn8n$85n|$@f-i2* zxQupuS=#nf8n8#7ls1FVOuuG;cGRhxPj3j0x1=hcCT_bP%y;UED7txso7vW zG-U`7wwkViCGEopx-M7_qd{7W9z{ULYrlqdp>H=RaM}7nz78gf>X19;O>Uf(?Hqb= zAX13`PO6qFEvH97J)#L_Cub6RH~A?5GMNE@0gL6_U!;6u%ZJQCnNueR*6cpeu4KOM z6s*C~P8|lQ<9D(q(MKPP;~bsdjhxm8q!P!Cr#z8PJ0&qg<+lW+E05jbQ_2T=pcFK# z=Fk*<;v%UTloh4B7as4rOx@OqE(}b}8}7fB9-T{$Fa2+Cs=D;r?~P3Y9)+V!31&|) zk8WZ=1bo!EC#=$V0c~5fn%fe99k_5C*>ysclvQKHAA#X-TH{(vQT{U6=f&M_)T89# znr7P^l8^VTh`WNU7)U1#{S^*KOHD(2^8(SXoyq#rCvKd+N7`>TT33c0gy+WRXyNBOJ zhF!cih8E8i#6xyx0G+1>ed9#Y#@boN4h-`PtE@Ct>%-e|FdaF;l`UWg^^sF1Y1HN` zaPa_XG@b_2AO%w>ZqoWPNJV2DpE^+%UgESnP1{1o4ZqZAYwfM8 zW2=2l1^?19Fb-!r{#isFU8H3W#EQ-A zU4Hd^iDJ`-C}7f9iX`Y3!#dWz@!DYK%ZzWa`r_oqJK+A5ch#zh10Q^{JFzAM;xgno zd8U~_`pHs(@%6^lLyqOl&SLn1r#|rwRVaa~f0qQM-`W7}rLPUyUgg)G*h!wUSxclM`tBtEa>Ezb<4vfa=-(AImmDom6xmFP0LTNYX-YmNMGB#v!paB zYvcVwHib|lnW_UIT}%>dH)hiL&(i54REXirRo|#)O)GgbL#Z= znRuyj1RgdEB30;v_Qb&s+(bHaHrm#Q1`_@e3JWhcK9Nt~NIjqOrrL#D9|TB?_Dl;z zCq}iwrD>R!3A7}c>9o3SvWOyFCFr;nKPxq=fUUZ0ge715sfq$yENa-)-RrAoT<5Ew zN#D`Y-#jN1FZc^{5in2Wv-2`YYVu>)ecR~6&8JuSvPT2}cwx$7$=hX^Lgi`&eQqZi zU^Ag29dAsgM8GG(gg%a2lk|X68ZupVFW`{PlH!yPatJkO@T8Itug(@rL_V<9(rjCd zkx0O%G|dq@wbAna5|pyV4S(BM=SXFlFrb64Uicyf3W~J=H@2FP2fZg9SJLPNGepxK z%#&Ob*e2H<)oIRN_YsoC@T|E|LrSm@eDFB*p1)HSW-E+3AX)`i=k{fb>V8t!?D8-n zL<@9sUmZ<$`+*U36-u(eUfdSs2zqP!V}qy0y%q`i;IH4VpZlCrTULCPbtlpAy?3w7 zW!DP#-Jg?D8Mp$1NKL&VJsQT1ak4no?2P&0f6L>ifp=|~!WJvgM*&aiHgE$) zweaBl{hxuZWswu3GLJs5$U=Gc?8|f(Y*>mGem%y^-4_zzBQK8muEwC-m$ucu4to}< zxhT6jKu!UHL?)i;(`WmD8^02kOv-LaV=x#dY9Tr2G^bn`N;b7+`C{G6xkV4RilzU! zSz(^-1Unap$lmOHP_g!im8$WzAbj;6uo*s1Me@Flw+y1%2P)T&a0<`E9eAH?`QU(Uo!51^O&zmJ(R{sOI7Nu zm$}QmQ4EMwL_(O?4aIg!ap?i&o`)2yhr6mmaDwr;PexYsOBlLzr7+2-y^f?dF?`ZC z32ort6Cv~AN(7q+7)8%6_aI)s6f^?dR3D_s4)P^5By@x>l*`HFoUV#`BJ50%C-niJ z1f=VzK}E<{#?{Ddwp|7cV{%W8D}cZ30UcqdYVhTn63azIV2FjXhoN3_Jg63gccCsT z%*dvcHq)dkDXzc7bKC!&Qt%UNmL;TD>GdCa<5!m=C;bXDSu*)BdPIvat5sJ%8;M8| zhQEbJ+9AhMPYYmz`?zkDebn8k3N=WlP>+qo(U{fQQD3wgB#SfT4#4?p8=QJ<1gbqm zyC%qn`9GT{^~*2eC(3=RG)h)IUvLX<&+HUw1mA#uC!#IcNCQga&jDZ<*DqLw$@^6I zIOqKB>aWsbw|v)kt7EgZ6`>vHna;SVdPMT_j>oq)P;Za~!l6-N3}~%aWOjKK01p|> zmv_`ohV%xU3x0t~w$dbeES?QGKze`l=ZDEaZh$plhNQAGUq`YE&Z+M1~2lv;$ za4{G9RCX(*jyM?H&C*>gp77yo)OCE2r3wFaNjW~0Y*0bIX(|S@2 z1ac+#MeAe4>nP@MbG|tsey1oc^Sy^X5??QRGorevk`qgpkz{7Isy&FZE&}?_@xQ!WX8kMk_7-7~ zB2;;*&b(FjyM6OG%)Jh7k%BzqJjJe7xVmhdFa0&54R$6LUOoam7k=o4#sS4P{a?=n z)7OYkz+APFvK@`yGKDOZhs}At`>7M?iZ*?5@K=wf@WXw5kolMbO)@$ccAMvd)M?E= z{s2iYtDIC`3gU{{>-`+P6XACvw9Hk?UtK|q-Bvf2fZF6$!js(|NikU=AUdnu(!P#w zrGU@Fh=5E53X31lg~`*2e~oV&7%_I4iC}Fug305>QdHzhN#{2g2$Jk*YVqCd^3#5R zTipB-3P7kNGYep3ZLW-Ts4_;=@z`lvbGI^sNpUq%5C5xUZ*D_(=t;=T6e1*L(O z0aCKDN?piT8l0QkSn=No#ueQA0nwnW^hy?ZYfD01K`Ans83z3mRRs-nrHUf)uey%N zS>7{$b>-RS0iL2AP{^5TTA|$a0Qas=fqYgFUf(^f0LSrqKWaevf>3I!B8)PsdXVky zr@Rr~p1fx>Kb{huX71ao@=9_%-5rFe3yzM*t&||99|G(-72)FUhXa54I1eMTe-v6s zo^I7F+AjYnu(tu{>R_Txo+Je0RF48L>zSvPz)_!AX`^A7ig^@Rv`xb zBmCknT#zTm|0v80As89MojUs#>NC?{x!0(LYe-36^+j<0zm;~Z$F9tOGaNQY=L%%G z2jmB{04_0-CPgDq_Q@)P>DDAtdKM9#&?wYHq0AMp4aj2-RVq4K{-CY|yz%T%1pAK* z5)xxacog!vf28L>nDF!13GfgoCMC+E<_s*Zwurd{IC-r^D#$nr^A3xGrxmG7c(!m6 z($5~bCZKmcj`)%TdVxYsg@2FJ-_$r}jc*EIF^*A|+Uu2HMND&B@}DTTLgn*Qzg#gQ zcbYy;r`Di!2+@~!qSMOBV(DmsdHpR%6*jM--e2z2Vx@@D8pBM(0ooe(g7Uy8*-e_`M7DLaI$vXaG z^$16c>avU}am~vM%D$FopPfM0!22m}@D|D=IBpeOYnrC=#vfmE$|H{BD#s%%s38y# zyrcmsC5OXUoVp)yC)P@4#a;rrN_p$HE@+*fo#B`S`rBjt*?Ebw{cAaZs4 z9X76gnFK8))h5OPIP#s{#c%ZXrapB?{4D*!rL#_kE1453*`>6$61?jO{eU#{a-Nlb zWGkP8wu(YF(!MM+_hvwy1CTCfqR8nDq!LfIy z7>=&81;&jDufbY&#ay;YW!6^DctrN=Q5q5> z0x`IA9r|*0wj>1E&gi1+mnX-}eYxs}#WW044LRh9FI3GIS#k#uoCZdpik)?Q z_UK2eptLYk?8Qu-Ds!7T3St?np_}f8zu;y@Q0zc|_By77WEU8a7fP8_9zAu^ru*XT zoM{K|#k8<`y4*KsN)!C>B3S$P*S>;8biOhTh^p8|50pCJ4)_@>C#8LjrE8`hOG zVceui!jRMbZhsosztU0^k)>vT+BYLVG}kG?^Yf_ETKy+);J7PE-FPN?U#|%x>!a7x zEK$ir>dCdwK4ZWA4*e9BAmv#yTy%47({SX%KeMmf&h1-}oAULjI6a%sr*yE-h)q!|{L?ef_{P zQ`oT5Or5-fY0Zz|XaUAJigp>@y@{#o!uk=x)*_R0hNlbs^zYdu))M1^4L0ku54u6B zs=v<59^;W+1Cam3M8TL@|=WOeNI(d-CAGdZ+!bRj_IWap|L#4iO{ zdj9~^t9zpDXXXqCYKTp5+?HmFY^8?~aFN)bTzIqQS$F{4bO!lN z0W#iezCv;l`Co*?rfJ!v{;!Ir>i~|hbc6OSuf#=}EnQuNcT#5jj&#R@xb9dZ+vS4m z+1?FDR)>Z7Cg5Ye&NO*Rrv>h*N!HdZDcGyeCF9zFZ+Pwx^ zm|wLn4c>d1oy++TM*&(NhWc56iQ6%>-4Et;gM!`1CE!7^*xi$c$y?s;)x;tawPgO5 zw70@Gnds$t-J6#})yAQ6lTtg@w`?a~@SO*<5AcP7SdPzT7&x5Yc35KV5(kdT(QEdEwd3?!nh!vcRhS)0&37-?w;mA%hM>7Le6P~|gtOh#fv z(UBv9wUOecZ*3l`=aHNe}Yji=?)}ZG4?uW!FSvzyGVzu9{O4emy2G^wF>F z@J#oT0&~sSsg5@9J;%?eUw&bm+oEtkCk|*fLCep@y!pD7vQ>Bh7c1q{yZcjfHg%BC z+-gkkltCiQ5NaKuCB_%XgWF?n2b6~UblL6a02=9dY~kNgFSc&1%pM(xWRMBGkUXnM zzn`~WK}0=kaR)RtBrR}gPbZ*JSTseM6!EN z|AY^Cz$4;ad(iY552Jbg&%T=tYO`FiiC}j3Xd}|T6xQ5h zv8ZlHl(Va>jlJ%q*?WAR*aAt=q?VrYLlO+l*>nk>36fil&k2Ziw!yBDLl}&e&k^5S z4&X+}4j+06Hd^_O!%p3;xkNY;WO~Dxr5cU2PaKNN)cZ0M#M3#Tsi;R%om?%Wfd!47 z6+d|^4TtA4*KrHWAY&8Ptt zuKtYI`Wlui5X^*WKzxRUs=-RZNc#nFUCLBwI=9~DoultjV-*up+#jvVS=(LdftLy! zZmR;l4e1&AxHc)aEBwcj<4_Z;yrsmYw>j(7qr?^(|0@7u`?R`Nvmy@R!iu%j-C z#Ti55ErcTAdhOde3;O6IzRUxvyWSxZMH!Dp-Mq6ljsxF7MD(0-PTyd(zLHH^n{+tj zkTN5x$`z+vc4yo8G`-Anv&Z+pd)N(n6NpYAYbof?SQ_di34wfKnMCKxyIErI(G}}R zLIH+9_;vRsES4o9nJH&)J3>yyq!iBEqCZ89o-oXnzYARKlgxjoeWxqaX4uf5iFP%T!{T2}=-v`yY4L}FnddE0;z%671Yhvg3UioHcx9dj61TT*=^qN!qTrJhtLCv1}HP*GM( zbMnsS%Rj)eoVsK1kNn*)%K{AI;gK>D{TmD?r%lA?k{pfSj+$ZfPpSP}t#D+CRFnY)MFeEDmF&y1v8B4BN2TIu)Di8=+`S8AYAR|^;7N945FvqW{qrb@HDI*Aa-x+}BD(k< z2FYy>Eq8AV))nwu;j}*PXiuc+54j{BxMo1WJM%WJI=y}=d`R}(VEQkcV9^+Z49KgA z2#TXD^gX~)xc!eie?R)SgL=&V`;!YQfU-|tqFef*k!Qy*H!`cC#ZPPe&O2bEHhyVc zf#L0*sz%+s8T9ZG4LnGsx0bCC7TjlZTN0SAaRVa#cP2g^_dOp)CjUKy-5>^RvQs;# z2!w#JcJ(XlME+rhr>o)NHjYC{zW%+Nd(7mnpdBCS$C9id2p{z=Gb3 zQiS@5g@!2o@V4!s56a)$0+(*pPrdme zMr<@Tz?BR_hRYl_AeLw~xmhN>T2AXgp<$WIfU=9mLF0XH2*~xGixy*|K31dI#7s~= zgfKx}Sp7NGY{}4YwJ+_$BlwMl@AezeBDAA!6Kb~rzv~d52`J3qCH58F&NVE!!A41{ zjp1Xa)?jH>a;~7zc!-Fq{GO^Khsgy{EPQ~*s)X=f_)^(`(e-ad&XGpBAaX0~!h+Or zkbCUVsOnD^qh@-yDmenG_wLnlb-#3J4xSARa)L3E@K<{LmUJ#4D!w6t_6U|5*p+DDLJ1SZZ#BkSQ0Fp&pQ3&oYg{D1IC- zvH(*j=*dW|{J&pSB+7og0!<;%$t0#7_I-9s;1FBCkk2Dm!=0Ww0>!z_(?y|qKl5Ncflvovjb_N(%I^v8db z+&HAOL=G}2XyR*ko|;~!rCyoY^J|jn*w`JJ`@7QBqrl3rsUGWfze>3+Y77;EK zh+0IZpG9UjS=XEi+qrZrO-1)djZbSpaJ7xOxmNk~ zta#UOAQ{WG(7X0M0qZEur~Ppb5?*<*Vi!@;HFiI!N$}80TMK*82~2cHsK82?fG7+O zEwx7eW+X4}1)5EPS)E&4(JDX6o1Z2rHuN|5F?l`%-dv`NS-BID&9?!=%{caVk|;|! zE`RRD5AazqMbFQxI778l@#1U9E4fKm&UWUb$7rj)sfa4c<(XYGj*lge%BZT>qR8*m zdsNIR=PmnNizVtx+k(D6c^mkBr8S-6lvf)#Kc}^+ZD!{h8*YZ%bKU?#OxIboOE}$V zWL#SWaL*u?21(d{S-yfY19aYaT8KlB9t*)Bg5PS}vG`12aV++$;NuFqU?$hUo+)Wu zb01jEnRn^-9A_`eySuXMd_h0oK)!>=J@`Q(-G1#vyc-+vaHU`?AVv(KeXJW^C1 z{!Mo1qaoyvE1M3hA;>m$)I?N5c8KyjnD_54+&gc#YOdOk4MX&UJqrm!tc}^{IuNGGbwGS2x0^4J~D+aref(g|4_JbA@}wl9y6h_a5IB>^#`Syb4I2 z=6>$WS1Pt>-i)cP(Bcbi1G84R%L+WcMY+{^@9;nq*=dqVe0S-NJM?~L$y=q2^kgV< z*juCx9+u3roQW~`>E{z%c8n5N=NjyKTMTD8Gjq1;47l5XZl#e5jNV((J7 zM&aStZHOc|W7=1m%SfyUw8Qho{aOW-*7C283Yu^(M(9iO6inn^7*Hqpo$4zCV04Zz zH^m%Z-NS``|4nDZrlt8?$9@9qMNz>@GMDfkGYc3vaU(W8xmAHY@2lH*%!iTQJlniI zRM9a#=5tqWk$TYS@TRr0(wM>|vU?w+ti9gDltv%i{}j)y|wrRhOnGO!ackUVUh^L+`Hzt+Ot2oL($lsqrE{sb(2 zELOMilS}6Fd0()d@EjVP$h8|n&GJ-MC7BO4V{_DwOtv;<7OQIkMtlyrrtbd}lf!jM za5 z-rSD+@iLtEW1f9S8oM)*^}r#WyGnG}Fo}=*RUyC@S_8tvz^P+vS)NQ zOg_3^(j7*8Y^^x_N!eM*)&2xXn2r#Sq2&$__gd-w(M1|XE{I4%A+@ugEST}{uoqc1 zTNzbaSPGYAHz)3d?AKl9`w6vUt1#qhYLoV<983dFb>M6kOI5WJ*7|i~*nNn9swPXT zq^QR!XM!64zV&Jz@qEkA9d8N)inqRi={93Sbav-emqFsKm7@DkycFq?fLJmk;D{QO zZg>Pln<=fq;B|xkC-6#4M@Px|LyKCiEvLZNKSK0 zw_(H1rxQDRaTRk9)^O36JrKxjAeU0HQ2Q|&b3ZjJeyxVd(edhKDx8fRQb9%Eq}%Y9 zrTm7~cHr_6hj0bIEasiP)IJ57fm0LZaEYWZ{>pa=tnPV*blj>5aI#8hw67GgOOIQ= z#xDWOSp2=#~$=j!`rt=x6 z>aFhGWO(5Db9GOCTP8j8joh*i9maT!4%rX-o`tW0r~_H#VW$abFTrW0MO66q#ioOQ1DW$i3K&&% zT<4OM`bt6!^AMExu*+NI5Kq7`Q=mF@l_(PJObo><3Y3iFjrm7vuQpPn3ypQ*W0DTD z53+cI?yH^QXsY91ccIGKnV8GRe&tWlhXhjcpN3C)gg4*mw2ei&@ro9c`(>Cld`P4g zkeU$j0#)T}rSX^m$PsIQ^rv$_l+ravDC49Kia1mT=6}mhGaod)+28`TR3Qt94RAYR zxajZ&FvWl=ghUqeq&&o!c&=^VWe2fTKU?2(H&kFxJT z|4U$;VYlVC!`~=(e+PfEmD@w5-C+>@fYRY#adw2AfX z(_7;eA#XhdK!=f=^WE#4TYI1XUkbetTvR~v&&S$$q8(Ype2LjE?ebe+&Wx!GKBDsv zlCRpq_ni9NQTg;B4Za%C#8SMY?38Eh_$}ie4aT%`_9k-n z$$V13O(=o^F1Uf|fuJyOo_{H;`@iuuXy{ue8Yk?5O={Dt%25yNfiJ;ly<*3>bxLn7 z4gZaS<9sxK;x`&95@#Er;``&*Du6kQ|1Se@I||&80O(>sSm|lD;sbh&GfO-dmo-e( z!=ZEX6=l#%_)&nw=i;wF^|#^9aI)RV4@nQI+zlWkb=5Zi{1qY8hE~h{SdTY5+^ozh zxjTJYlSb*^L$T;h_5Q^DV$|pn-te4h)6)4Zkt4{;M$P?mkl3QVSIHF{rI;`7IpT7g z$TkBW+hO7Yz>Ly6F0Wjl-_&Gg!drBHhQnT;d5RaMHh@%pBzbW&wT3Cn_!b|Q;-l>` zHK&H!CcV{%PT}bBYSVT33v1%buxn>ve~G96%E_Z*t=h)@gpJ&niE;p$&#t7VpSCIW zEykv>5Ct0giuzY}G3dX71e7sv!$yWcW~4m@1Gij8u4yM=+btJ5nG_whCpYL)yW-}_ z0C9M@0}oTG1TSyjMH>pvLPuXktVEhnO2pvARMA-g7~9#}Ftq_ugQ*Ud)mU})9WUPq zPP6-`rDuK-5uL^3fW8-xRQ|p+4{r@vHhlXctP(9>CxMj?W%@Nm9H7=<-uu2)&^?W1 z`HiHqbL)qp7qfWZDWLTB2Yz!^v#+w^QRe&BKr*Xs{o{F|sPG*|Srl)^2C7SAzKTJ8 zk1j!&Om9RB)l>LxA|<)Lj`kXv-bu;20vo&^?KquB$oV-MUg&)BwpjzDtPCWBrHEE zu3D^V(Z=KR;An`GNQ)O`<HE1#f}-+@M9RJ;z_^g<`tG*U#8W3U%hT?-9#9HCr6F z9^hhKW4Nu^6Wq81&wI-7gbOm<~r1z&9xk{zgcR zXP{Z|w3&BKybR){>1I10gW9Y=f?v1YX(id?N`cOwHyCv;y zDuw|YvMx~)LRhdaAcTQwj1$gtdVpODt*Mra8$e(b|EhZ*dlhl}>BPbKv)~@ggNwn{ zAeE486-I~et+->A=x=PdV?d@`yIr6bKte#2XFH<~$v7!R#@~ zPl3BGLWZN-M&Q&t-utn#y{0)elUsqcKZjV(UXmy5cm*@;;V09hIgD@)w`6hVz<6Dn zp{QvMQ58i@uV#;JUy^uKVZJN)cm&;CicaPZ`L+tNX}xSTeHYKXTvB_)kUJG<(Avtj zO~M@KQixT_uCl?8W`_~*(q4WrOFJ>e%#pgWUEyb%AA7=F^%dk3C>+gm3z(rh(%z$o z3H!S(bjxGs?`zEYtx~y#u?@1kM3p~VamQM_py(SBd;r7JyTsI~p9 zqU`O(BRbXZFD{)X9SOJxu-XYV#^#tu;0C+H#Q-r-e^l(D6|j^(blJ7xP$U$^;px^k6*iYJpIF zg@4&W1|NzVRoXP2Ymn-a3mj?g%?3vC#)@QFv=aIz&EZNu!F%z6utaS)ApN-XGpkYx zs*&VC;D}-0s_Zk5%NH`>r~*BU-mHy8R(#P>jz*<8Hwt?-#jCM| zmixgbpz?1@^caB_{D)-VN$kSK);s~aIM=}olUjcR0NcBfBNDvHPGb5Q$QwE38OGg4 zc@nm{m~HbYfq66ZIxF%xR3w2*+_TDRS^OEU=ti55khv$ z?1NmEeCr6%(W_Njm`=wi(IQ-oOw6d9KQlz4FUtKl*|lgB*N)VlGxm)fq%CyhIEKvuWhZ&X7UxkjJSBcNch8n)@9+Us}OMn0<=$nK__I6$T;MkczD@l;cPo9bu zKt&hdG%lkOb>fG{v{cpysgd+M#KNzH6@lltEN_uA*`sj6O;qU*|H)QQ>sLZrKp4UA z{>musq*&yaiz!HJiS*#HqaSmE0;OL!!b{X^Pr{NUy zp^>w75eEm0DsiT9>P60xt%kO_HwN*XvG<~Mh5On zwcklgx-Zkx;eBjO?NpQFFBFHDC78X6l`qr@9@FAWWCW$_wy!|wzsOmm>Kx*xOyR)# zsbvZ?PFMUtXaioY*8U33_s~m}>G4s?xv_*^U`^^Ea7zKkGiOKzWY9gbJPGrjRq8=5 zjtE!h!V4Hjbu1W;Id%xYQ-bCUneB#1yQLC7qt_clLBB;g%SU%E`XEYuO-$NLv_LC7 zoZoMR^W);)$g(_>3T7@&BKdD;W_KpvpMR%74?f))wIN#MCUlL4x(!vJCY*d&kmDVkZ2HUPt zMT66tKEqu1wO)Y3Y-06KyMvEoMmGVuHVtWw0TB&LsCyHCN~i04`@PnGxVSau!uX2r z8C*&Cg-;GkL0K`(~M2haWiN+#EzTPTUEDmY-H78cws{2TB1b8VT__oA^F3Jn&tn|F#}2FM^m6P5J> zR`5nQmCMnZU};@k6qY17vXX zV!Pu>#YBb9dwR<7M`anI*>i!TT53QKK>MnD^Gii1Kv&{68wMmrvf*6p9$yG*(Ux`J z(rm&^YT0)7fj<^;oMFS~m&(luE_~wkj6XAKsRZ+OmH_R2WZ)!rkd}*a&#-~mBT>u! z&8&N(WhWB=W$zGtp3d8#|GlC66lgf?;1p|<-4g!7QWvF^UgPAYs1Nr+%9HFc@gJ?d zg|44&sYBVxz*fA$Jfv}uCi`sRb}!Va!dZQk%KNbr-e8y$hQkNj&gEUEU)z9r0T5Tk zkzB%2ZBwDIJU|LKdRAjm_i#8Diu4&dmybBy@8$cdEcq!4sL%=Oo|Zu+S>GG-^b4ta ze|a=aDE`!8DX(5iR}KkG(0u?*Nel{+0l7mxOH0xe&*fqHw{vygkXjKR_f67LgqsAJnkJ4AgH?mssavG*vd*@QMt!$OCggUS^v zJnaQ>bg~}VKQ0BVXoC!`@3M;Ctd8aY<4spx44Kk)VzH9eZ6hh|+}L9Bwc4x01R&ph z06%0L$}M9d)ZP{c7U&6#J({*dgX0`Kp4V#ZDIsoCb6HH`QLlTa9I?K#<5o5RDKo=U zXf7@$I_1heP2IeV7*XW2adIqgZm6^}Du8qh>%cF~55?ykb;me9A~kTYaJ0@sl1@V` zgv4ENjdIqWg~O5CdR$CytVVuHY>P^jTQoXKYIV|5s7v!EZ79nyA$oDIp<8eO###`Z z@-DG*MOnEdy@?u?$p$lt#?qHwiYv;#{JiGoPEXi z;po8N-Xr|_Q_-7Q@p7&M`B^+9^I<*3w%Q--HXw4Cy8Fd2`&vrHL7h&cTjUEFEy-n; z0;Rv51>BP`^{AB#c_!Tt2ZSFkdd5N(5ZLU~BWrPd%4bmN>cZS)bQXl$b5C&^&8m#t zw=H3W?9(zPA0@*S+(npSy-|Sut3{>NbxG?ZFMJP>OHwUNaZK##E zDy6yeUlRft8dw+R_M>jv7@7x0bJg0;b=joJgpP8N()L&JZQFZMYo_h7WS9H|(qaAo z8h;ReQge1FYS9s7{{=+kg*k;rHef2FF3-mHYhWcSVNSjvL*&M&ev4Gj?qvP?C7;9M zAkz;i6$_cV%8u~I;FE~hq?kUo<4PSLK>lAQ+_nIVt-yZ?#}`@Xi+AK@_G~w;y%{V#k4sJ+$Ij}A;pNoxJ9+j z=RcS%2AQ<%bL(fGsOq9e&uCZZ;#b|iO}|i^HG0%|Ii_iB(MT8`5`$cA+|E+1vpQ{I z;ero4it*$e)%1L80z*56!WpWqTczkF7BtdG@IDLnIv1Iq(b%>|f$F1s{M82}TjI{{dLOC2lp;oUB9}r!!K=@$4Zx%tYmay<^Y#GmSa~Y# zW=TmvQ~Tk$vUXv0EF_^BidSiNPRtRz9aW$x{QcNcUpfa;TLKP`dEt&AlbTAM6^PFV$xemtfIU5Lq>xkSi_s#fngV`vS|13Q-< z4K~Wl*aqPmbcOOu2QKOvvfE%)+x;hFO475 zcyQxv7y5*{mskfB%y%zow~*tD;q%59RO^JodJ+zvOfVc^;dY7r9vzH>hec&-yvWqy zWBKP#e0T*f59KR0TN;(z0!o=sr*-wca~{9Ty#-S7C3A65$u^r;6k)KlgeJ5Z2J(6(xF{h{%xN@VXAK4t8cwh?4qY83rdofmY} z)2HpErN?M90$}}Mw`~LRq*RaVv`#R;wlR}mb0M$d&u09GGkTxEdXEIQO}pyqUV6{zWE8A%JY1S4bw--h|JcaNox8Rmr+mbyV|D>k3sp*znvC1+*8AXU(hr1>zwu0SvKdjm{o}Lx- zN52=;tmdU?mSm9+ObVZ5Fe<0Bq<%}Gr*NjA+nj6tvtVdhIZgiEZm9HT;iVaHecnEi zSk?B1G7H>AL3IA3d=zPF4JPOi(yUbF5|pU}owMCy;tU@bZw*U+DHuxBjn)s~-*0pf*hbMU3# z9Nx~X+C9^fJ`!6=ZE|VeO47frM|;>8G$>k8?<$VcChH5`kw$4K5(~-NA`A*VG@FE0 zIbu0l21X1ik3Wj_?q16?rFJDWm`5KJ1521qjf=jO+3h8xsq>i154opr;??52j-zUM z1(y^%-2OE*nxgJ%w*=vUVqIM3R%^f7xG0&|o-VR@Z{SmTL_Bk{IG_Ypy*y7A_QKmi zUic349py#A-b0)j5w!Bm7ur6rh5q<(Tpya{-afuIngF#H&-8SI2J7mWuNC4;{+r&R zf48>3r&$9*BR{v;xoP!cZM}y&GleXGvZ+WN-jFZwPh!6>m5 zne@^Amq=mEG4xdMGM!!Ne#EZ2+KqRpL68D>9ufyEAVy8#MN>(^Bq`TDlO@Ees7-!e zGI^JNE~lVxP0Eja`56&Kf4?crr#_dU0nS7M#b=r4TM+KfvO<@ae3NG^V9iYZNLcWsp5TkEw}PK?cH-^ zDl(MDN;aoITxfa9r3K=Rh|VcQD3-$#HX=cK27LN=Z}^P7poDGC3wk-ePXfzJy5h*I zJ{|0uLH{lJ#6Jm-1>mzTWxyvCu|Jxc>iXqcSU8t!Fls#~u7iwl+8H zM0M2f9y1TRsD&A0E3mFMMD8w}ZI%Xu8T^lS%c&*b_=!JBAiA7j$|g@^nrwb^vci3P z-l!FaL^73-%)Q`-M?H=hOhNS^RU#+YeM1ELTfd~`^f=)Q6KvDRL}4UwB`w$HXk^bJ zTQnBZKIMj3|NGQ{T{4%_?FL_Q+bOTTfP<}{))J}`Op?6cz&@@FqLM)ppKXn)xgPNT z{VH5ak@9}bCVh&SNIs=s4b%X?0mo-lP)Nui<%q3KJD5Jfh{{WBL5;kMte$Y=%`gqc zND!XA6>>5TSAK{W7;Fj5WvYMt9h?QeO-2d57I;B}xB*HIlsi)heRf5F4g>#Xgc3H_ z!qu?r-~XqXA$Z=gl2(exhxMB5&2O6&IvXS9$}u7RdS?chc}upiyGLOFiuU09>}@L2 z5Pa~_RT-Y1N8Qw9nK)0C13t1ZV9|`tP7W;OI+6Cn=XU{v&_a6YFAtX_as0lepJ!I@txe)0l{@d`Z zs;qn$h&^=;kIfU|pzb+%m(IC2li@XAnL02mxyFcDvPiVV3^y~)(mo_jOf?_FNi}T& z6&uh9tSnNP??H)RGcTm3*&#+SouwV-a0;Ow^pvUwY z4!V3b-?f;>xlJ}R>@&=96E?0licsMmabg=`1#_l$BnNIn>IddtXDs}n70otZ6k-sP z1A{VGX^N{kQ@M~C+}TRvjAe*enG{+_;bFhvPpIl5D4=GTv{tLrMF%LvP~c`B?Nlc_ z$V{*hP-OV=r#b?ynF*jh@M>R~zH*4^yk5BEMZ>-JEv>G;VR#X@}F|03-3r##8?ieq| zX`B&xY)uZDrYVdyPt36+H?S}{7Gq|cF$wc03M;?KE%>G?OL?~+H;7Lys-X3r=%&cx^B3EdM*z)LE zINLuSw@4%*sY!`3#{9s;O>S-cgYh~TmSW#TcM}cx}S2 z#q(xBnum~}cc)E;ryH+u%i3T{U6qVqY|!_Ib-WOU1fP9v`lDB#4V5tfzna{0r@tg8 znMZk?ave_pS;jGwKX4^V&Yn%wqXFSuFa$i+nlj6IBHi?;p&i^c-ZS=GGpDD;Oe;ob zu_A5w2$D5s>AxhUp(*Vw7yODprgMOMv3LSxoB^xPa5r{q*_gf<~IFfS(mW*=~P`DS`I&H={*9>=^4#d z)?l0jt5?<GP!%}q@6)Uq5NJS)!AwF4q{xxl}lgwSa1g5@Ek?v+@J5G5NA(=AC?1f3OQLtiX#{^fKm$J=#J57t~II#YC zYb0^c$M)mkSdGr5Fn#3ocUTAfrNoeR0xjvx_)@RPAf$Jd+6gyuXYMN|`_lVtb#`UJ z7SNfTiHCS4ctg^zFxe~~E>P;!qKA1hs%x{y7+^t8IAtfIK>N#9Khf$I3S}XOc*cm9 zpBXeV>8S42`geDNJv(MU*#>z(1O-X3%H@S>gfAa#FnZ=9&8ao4=I{emhY^H&NlY(T zmwz2|AjrDNHYqv!)j3N_P70PFB;x6WSve`r&&b5t>BbR3>!y@kn-=Y?n z^QhHNv&GFm^(`jp=m`)YMiIB}_6{Dwe<=JKdB^$!yWM?$MTs8uVoQ zd%V?3PMN#i9{xwp9Z@6j5RQm`#OV+R%ygbYMaO^bAjy>dC;r^UT-m`v(`FmQb}2~{ zp2}(18k%2fDB8QBKzmu@TPt;=ZNaeNaZ+)A{7NjP+sYRXvC(#eWI2{OHt&U%N)<(P zj5W-Fh|oppsgRyqIf8Et!HwNXWetM5iiG{(z-?r@!wX`Ew{tbM6``)udiH8#^1Zo@ zz+;Nv`j$lD1_35NWw>j^IU0H@&FG8?sF>-#_&wfJp3FV0x?+B8f~{2f*>OgwxQkSN zdz#*9Nfq|_nuE^vFX!(3R@q-9|773#fQm8%Dn)4e?dLlixo9&tBW?KmeIk!Uh=fk{$5$f6T4x+L!c(r3IpN zzECEMoXAiNI5JOhnj@D{%X65!9#pvZ06fQOaHYld0s+!QJmkLP8U{#XA%7P)!b*0G zZ&tCnV_`CwW>jr{Qzk@(3b>-7_b+ARQZUicTpWL!-ru|d5c1ILX>p?29B@@Wd-7&(ci7Cl+;9#tg=*^;V-jah!sS{Mz_nI zn_w0BFl2DRN*qmZPY?g^pJ$p@;COQdCa5Z>6!Y?gFl7oNzQucxWN{dLx8q1CUe53_ zgm(!UmN}d)2zbqNkqfuckye>yIQ{skG~eaZhZI^U{Vm7cpPY=yoBf>m&^7XO(hgZ- z?|m!AC7*B0F^_s+I2}9tPl^N8#hPDekFU9qLWX|P_@)C4=t?T*Rxp&|xmjVYUkm^_SWPSL#h zr8|*u0r5#AX#Zeq02}`_N$NjQPMLK2?Znj((t$6*{%c?MC!j8(NemviUB&NK&ro4C zAb$Uu4tm_+x+b2MQM^igxYI_l5v|(wb$nww&WOlUkZv>Jh8-Bq z$1gXCh~EsA-y$olL)?jXe&8? z@KK(!5jKs?WTj;0Qcw!LeTGuoI| z8305=M=K#G5<9EOJ~eyI;*Q!+gS(jhKvr1%2e94M?>epAPl2Ol5EUw*_xvzVA(numl$ZKVg9eheBUzDd9SmqY(M_Wu`gNC*6p6@ zBtc`~!Ac?w=4h-~BN@*w5GTR0Ec)jDH#XbzW*UL07WMObg1yHhorIMmv5rGU&FMX~ zXr!HN9G!OgYUxic9|#OPifTc8z~%gI`vN)|ejnJw?cQrnug{L2K}kRTZ|iS&e^erV z9qpXJY!U)HK3sJ^P!ysD<;N7689%nfX(*_qQ2XLB#R7Izdbjp}MzJi3 z;^~$1k8kDH$HFR2XxKS79n@91@PNR|(i9%Z3rExUk?h4PleW@4KMS`t*!IH;)F*!d z-+V$Nghy2dlW)@dZ$ZMk1?jOguJu*?T`8pCl|PzU47ARbr-xU#xA@Vp>hAZ+p}Q|h zsP%2NwK$s@1E|-*7T4m4Q&M#2Py_`I!Mva?jj}uXCB(+RA_fDeVmkp!!B>|M-aBn& zhJ~A;2YjRi*YJOGLeS+5+*8t3L_%y;`d0f9z%O`w`+5_zuzUuSuC$gIo<$@uq)psv z039knJ5TG?yw25;4fb~*Nm4#9%~ey|^vXLS$0K!q1GRpw8y%3A2s#sI0(9*DYR{`mK^~ zUK-a}M;4k;#0R)=!&q_VgQl+yI3A%>b$fDj49tK{s1wV?E;b}On{>$4T0zBo5pXB2 zP?9UvVZ$iO(96QBSZMAMj}0@VuDiY>eK^esv0?K4!Fe-mtvTuGqBEyW!4kYFG1ZZL zyW6D{II#pZZcGqSJbLmyyDJI@2mcE{Ig=;B`K*o%&zAb-*az$O1bwRX`y;>FLQi|{|}KRKf}6FOUA zj8s1?g$RjtRNE-;Xk zp4xkZ>LWj!iD3a@)(Q#>*wdkTp#AT(XS^X+nCDacn&d8h8#IJ4e?PQvRSBv zgJ(z~G+E{DJf(DX&`nyq+UYDs%!4TqK-V7i7Q&bu8>@ZdQ7j4Z)7q-cZ z#-2>7QdKUjo%q5|Y#s)Y<;PXh)qQ`fT7?mVq@d~(E|d%%IG=fhb43)M$l#Vi)T$-kj{@ERmWSyP z9C}5efO)2aNHhL(9y+O_Bg4nIDH_Q*Z*zqwN3(XjBHKgK4=$^`HLhq-k^Y31Tg}B_;Rg%|#Tqp;rkkCn;(}{Fa~IHS zY>kLN*X{xnYx1P(FLMlv?kNtoKeGQ&oRm^fpCw+`;B)2fjeLx6(#Nxjt2A>HE+I+V zw#F({_OP)eFWESYC7RIN^}M)6->|t57A$~ht&zJZZ_kbxb9w>>X(=|`AY57h%lk5+Qu2nes zjmFR!7Cxhl6+dBq=58>ro~+K-|GL_lm^e3U=Zv0v}}%ilnsFg`ycIjAwVm)-Q_1sg@p8X zJ2;iFQ+PrN;^Lhe2#vS(j|KADiZvpGC2ht~LpX5Y+C=qI{aj@sk30#w2imM}vJXeU zzxEVplWnlA>sX3N!a3z#aq6X!9z)i$sl3eI728++VX7nsdJn)49~@`*)^E}6=nyKe zEJ%dmPY@*n_eVILg^v5_R?fRBl*R{1F7cuu!gtA2?;_b0=mCT40DjCPjI)x3bU{Da zJB#L0+kJUB-GQMs+YzsCQ$6rJ?yx7G@XouI7>rJ$s`}=BBSVvgT@jdVx)(kv{wfBXTtaIX?Fv5a6q_(ry_gljYN}eDH8a{v`PY%bxgtka#{vY zvG(*jJVPtOP(lty!S?Q^x40?Nqq&G(X}XEVkzQJOy5G^jO%bzw1T!*7g7EbKP;hV_ zrhqHZ5Wo83x#sz!z%??^9Jg$aCsZ26Ny2RWx03!XvAx&}Hz2{>4F-to8(>9G_+pX0 z*ckO!8?ew1RFk|-Y5(S6=<2}I21aE|`PL8CynsMAgU2ho7Mj7me5efP+{IV4ZB5q& zl!`p6*1#Z`V@zAJPP(VjaX3^C$$=a^x`qLZ{XmT!ExWb%lVFA@sK^o++|S)&oEu!< z;T!_n zD?sqn)O&?x;ZJs?`3`F`QFkGCnrU2c=$r8Pk&9e|fdyy;{Bba3?xa}c-R*n}0DX=Gu#UryE$M0w26=PDACd8#2Lp9O>PmCGp(Xl>L3F?U z7Z|1@L3fSY)AldtlbMtgJhe7rsJ?;Y+F(U zFQ;-66w1nZdwR2MTr!WnM-ML1Inr>9?h|*8h;T>UzF* z`-TPAh^f6r2cVK-|IE;PfR79OUfg+u-^*9g1u}{GTYTe9d!b*FMGIda6L#Kk=e9l# zOzS3pnDRZ~q6CSm#b2K3rCHS|@WpI3OQ#tV^mII~RsZ|1kpyVKAR_7hciWqd-T`C1 z3PS=r&=(M`+ikFyov%^-4kC<-W;5wLTU)pyxCpuC+}|sjQ6`1!%w>Bgv6w63<`tVL zl22pH3%u{~>a(uTn=yfPLVZzkiu->mfGE$iluwE7`aJ=|&w*zYi6awJ8ZYsY5;@`^ zuWKO>N0|$Rx?2}m)v`#!&TtdSodP?-Ut$b*F~dfD4quc$sZpqv3HdONjya(mLjtC^ zBHqN{0{?jlNLBWWs!jUy!K65XiIY5crT+`Rz76t`AK)rhvo%+&ZGh^xJ3)O5Z|kQ2 ze__v-L)&qjmLOjd*IN$J96PP)mhO}qwQW5WZ;m}1bwwb`I~G#lyO9Hbm@n2{cWlCN zsrfArfGCx3C>lM(0nLA2c{VvprMI4J&5_A_Q)D)JZ3Zxgrz&f>^OSG}`N^kQB}5ke zo^k2}iV1|EU~{=u?G(%q)4>TuemUCrI-+VtgTx({oT&>+>;5g75~V3vgzj_6;aBHf zvv!>JUs4L-sv(526@VTB$`Py{QlR36YO^lDK?>!h4fW4sZzhc&ft9`eN#jhna&%h5 zR0_XiK4w>$kC2pJ8Z``%UGrh$9k!(gZ>HDA+%lr+P;c|x&JlM1L%$N`I? z1f~d#86rU)gbpP}G)Za8Cjw zNqNsY9a?dmt-(8n^)k>@G3{=JpX)aldA`GYz@KShfx;)I^r9SrUE7^F=D|r~@Q1Aq zb_im{DWP^Di2lkPlpX#FVO3z0=-)^ znbVCgb?Phs#Zvx|7!Xuox~D3{?r-!G(GwI~I;fJR@@q@t@13G2;fN4aPK`)#1k}{EGCjZh(-w2i`*_>OX z-MCv6i3g<~B^tbkT6nnYFOrA@DbZEBR{hs6m4E@>JE8|oJf5kBB|)s3$xuJ z9h<2|X6;`g$<^_Tz{)!aA^JTm_sWt%goE{I)$K6N6F$E>(?hzK_tGdW0lyAa1B<-N zbPiy1VoL4~i>Ao06*^;zNCpX_YjhwR%<9`<2;A5n0sVRui>*}iF_^c@D)8eM(&j=o zSWqsm={)e5PJJIuJL*bheLLm8m)MMMx(;L-kgur;PVsdS>=n}SX7~u;g07&Px-um| z0ib_OO)dD$WeouGR(T0TJl{V}LsuATn8yz_NVq{CS622AN#Y&Vjc@H@n^y@>#WVVn zEM}2DtLd2#QBuB&>wLfXuLvjv^zPwaNihGSczj%M{mlR# zsBkfsa@8q?JSaJZRdIqc=Xf&SJXx9~<+&G>>_fwk?W5}-T0CI+w z{W@P1GDv4u3^#f~FN(q3zjp#40O7#2CyRkers4^yFXgVD8kz zNZ`o0(Q5xdv&6dVGjx*F@Is?UCO>FmI>h=3sN$r_kf!a+vWnC;pQcTi1km1nqS+ME z%;ei%f{`(|7aA5aqtt3BcO=J#k$r{Tls@Eq612$3;u3m5FRRMxFX9*s2z!z5XJTpm}(AH)i2wU%?B+zdEq)>3hD3++tQKpyih73WYmkU2O zHUHkNhLUGIS^i=_)EL;x5x4~(tY*H(&$#TTU^DS%PZojNWn`_n$v?-Nvd*wiaOhph7TJwIDyWl?J6HYWzb^KF?n zaTL42ZUI{GWW4}U)H|dfZzG0KyjKk5T1d*^9@#q<^iV={7-$zOf@*f}1JCPIKrC<3 z@$dYJs{Ha|64Vl|w3LYc^pDStUj+mc|A&LX?{Or6pLxh~p7epr4hE)S z&jzS|h}|*)*esWHpS~sWr%OVJ4Z2N!X0m@hH21(=4D4-y5ocq;GG;y2D)v2xxhKiC zV6%V!XO6;!H`n74d5kLjsRF<*q#d*Ooxv+PpPU9p_l&>B@m3N5pjIIFF zUzS^i&HrQ8v##P~wyuRNVlFG^CKxG5S&tqjf6PSZ6WE$_@=}GEwg-#R0W_G(wgf^S z4_z`|2?a0=@0_56LC|6^sLPzTGC9IdiH6bB?DO;FRWd|Ul+4{{XV}0ynEo1h>*dfw zC-3c+uL64CAu`WLq+r}kmZ`hH{MKrSlI8do5j z*&rSjn0hE(3-Kl(YJSJ|tEr{cPyeX5*tlc}ym!na zJ8!CWZ(M-C_{rJ+YoR}Q-S@ZbK?Ja}D(?yex`d8NB^C2Iz;eAS1>@4;?uKs|kipu- zNpZ!Fdw@h{dEIVxvN;!wZQ?#e82Icy4DJ`M9$N|dh&6}~V;Mr*55a+Yjl*AI4aYI? zhA&nB)9=ApQV)lU&+Zf26LD=>2(v1=47xYDg6&g$<1XwedHtVC(CiPveprVek06}z z)D1K774vXW#~!j-^P3r0@B`Cs6y9iER1T+JZJIi@2+_VS%WRyIQz<#LoJUf{k*l>!u1{UK|mXJIdP}ASZl_Q8pI0 zT_4c^Cnb&Z_4@pfcUw5OuW0xYCM@^?y`3C{`aE5t8MQ*61C0E(?KtX<+#qD*x!wWA z(VZxwVxi+orlV7G6GQo-nQ^kh(BHSo(LY^sUyS~$*f%8k^OLh6by%kLiwv>B4eV~4 z&&9X77?VrHJ7kaeg<|B?a++VGcT+qiPOP2~H|}gtnU64u*4K@##=y@Jkd)a3lhoL< zxrkZMXzjW>t7}l$GYztr&_4176WRs(caLfVgns@5^WTO-Mcq z?-imdnYytjUr#;0*0|u5H3%j(S?VkXx3d-twW<7tZL@zr5;)TXmQWP{VMYjlES!fTe%ljokUl$l8C zif#+B=I&1~G#dEAI~twhvb=Kh*xUCJxE9BpY{9Fda$oj<{%6deVtP2K63d@@esws@ z%$E+v1X z`g;SV>ab)eTGm3oGZ>6lyVQf{j%QH<`EJNk8hm5gH78Q33oUG$84gRHIMvOEgWWx? zG1aFH)($8D+ASl{;1hvoUEIBCi-yIL8#N!vPT%!W`d?N@S2>32az~qamEE6tf+u&f z6@ImZqgmJ#xEWaI=fNYr)nW}fuK+6Nqb?;itpbS_OT<=n4Jo7o9CrVi;3bA!ZvO(M zYouP*?SutEgVBCPEE@$Lel)p&Vuv9K`?2-cIAtx1Mm9Hc0QLHz8*T;Axs+piYn(TJ zuR1%2goJg9waFZEC+r%~kDJ0l&JF&%8GdhVN7XA)p$f!?8p~~t!dWY09TSMZ7NHgI8| z^ZDU5$5#&6$jjjax4_Y-uGG9}A*Wl?LC7MmcsorP%Ek`+ATP~d&TG?N68V4Q9Sk}9 zRH(9GIMB;I{*?%(Z&OUW-@(nR&P!`5#WBBv?SLeV;I6gb=^1(yufR=P@lKgduVmD! z-=whB5Nc+iL0Tpc4VYbRpBSvMUC0RpfRj&zXV?OEPU&_KLO#y4i=nnqd5@31>)y`8 zVf|$6nfaS5lHQVC{oqH4V)awmXVG{=WUc14)$>=_fs~j7~=ieOma=chVTxmj2+uTKC zM&HARW!wPyn@?1`7x=ab%^oY-F7ge~?m$BH;N~31>)67iQKyuw?Pm}>L-EXU1-M)? zBZbJVs+`dbizDSft>mGO`3R7kKyBFx(`ZN(Tl7^iE0L+*Ij89fSB5?@tvA$kGBf6N z4o_Z*B$MWYS=$^HU}(c&Z&J5t#8)l99(&QX4vhaB4KyT&{wHgvX?WV_2xn^Y6wWJ} zhDTamCH(BBX(x%g;Afk8LriTykzuMAaTe}G9m^1-c1-#XzxSCPW7N84ykP7ll7`?I zpL?#y>*7c5LrvQ3V*C%|t>^yzsOM>}X@9bN^NtyyW%r83`t3M^OpjUR;1cJ#BLnQc zexrzzW1^k^UHj0Mi)aL11Fq4wXNS4=Dlq0hoAYlwQhpBa*=!(}ekME@g--2BH59uJ zK0d#nf>wngVXYWVeoa5%9;~k9cw9yR8BNKc&-y)+@OQNTv*<89`OCd! z$z-%!-;2_Y8c+4ogj9-PPMW5CK)B($n|!HFp{R^jG{sgrH`zAp4draZt_th|f;WH> z=1Afj>{*jo5_AW3P@2HUJP%fRFF{`*F0}98DfBo#8nWu7b>YGlFNHf>1rRxhg&Eua z2*A*OaQL3Ka`R#uu6c=E)cb+1iq>*#b7F!nxo|(wWn6i2bz;Qu)jOr*4BY0Ev6M8O zEQ{q^h#nGbfNF)X0#Lt09r{=wVFgocav)M1>@QM(8;=a<)U4qY2+Z~$VuDitI%S{l zf300eJ01Y!81FQI^E9X6$^H|$t4DnuXs9j^`=&mloTi^@`=r6U8@`(iSbbbw;ru&# zZWa04HC)glla9pyspe7EC(4I^cP7|thkBY0lzTBhapedlXzR|Xqu+xCm;TOmbRw*> z_X#4+{j`K(yIaDK__fM8r6)M)C(4McecC@}m%N*009Y_iPr#-0g#U*kxKx0bjdSR- zr&VtaE~~y#>&;CDr=V{TmR?9|QuhN``e>`MmfT}ke%UwnM|;PC;^b9-sTLAha7FNw zRUrpdA-`g(@IT9On~5%b*j`?|rE-0hcmQTa7@NsEyPo=wF9w*Xubgo4_G*|$w<7?+ zx~h%taC-il^>>N9uQPfw34_;>)U={$F?ya?bp|p+Fj^f3k)w8_F@iA{?%j%Ww?^!DVT%A1#an8W{xBZz?$~YK9%m2P!^Hb46*t=Q@Uv#J^1;YR^mXNrZMhKae{j+ z@2rctA;SZvVAqdxDWcOrNgk0l_O7u^Hp&-o=AZ#u>=!|djnJAT48}*B2DP+~QE8TV z8+0CzjeEcsd-%vgU9$nqm+BUrGqMhm0Wc+q!$5~@nG5+M_|fen zG!3l_>q)p1*8k|lJR~%Ni!o4* zAXYk!i*}4aD>}GgBtVAAM{H68UCz|%ytGfTSr>}rOH;o9wCC)HAYu+!6&`D4b}G7tkEWC0CR&L>?q(M2Ci$MK>|gdPA-Ne-dBK_*nS63j0)vt{nE7d= zFC;w+2F$@{9JF;s;+Il`-~{R9@ptQgtmIVA9mvo`;9XWnYpAwR^!6=9f6WlM>~K_o zUy_@DQffS}dg3x1pOe|Bd!w1Q5Nhcv)b7w#MyO#k>>qDS;DV)``Q1=YXUyVwpW};% zcMy5(M09(0U#7@CbBQG+mu8qzY^=0zd%pJ)zNgy&qi(E-B$7Ww(c~ySilsUgEHVe} z`w#9J1A*4dU>kP8#CV`6fHzz==pe6@eW@YFS($Qoe}Pu`xU_mFyut=uKxUPzO9rY< z@NaOk;gH98iW*Yjhlgk}xssWk6FL9cu#X%x7)Ez5>B#RMl>6V#!+i6|F0N#8WaiYX z%YV!--)nxYFuzAl^;jgzkj!Cxmt3AJgH1?=FE#gD&5#*GbH{xTd}WY2&?v66TYak( z|DB27=_>k#C0qilU1Tv?XBM`||N3e#S9lOmbLyGK5!3gO_8GPU$7X>=aX?Bf;cZ*u zGKeT-j=PX^fp}EwLbVXdMyVEb^o$#FZAlXyV@jBj0&a8AS8Kq}!NkyD@i9^+?L{=;g9F(Q;>XWc5#eb z4jPE;PKMm8U2F)4t=HSHQMV}G4=%ab)L!ioaWVh!PT|9Vr|I3|it|;Q!84AH6${D| z#UNk`HPC2#q$O_`ED2h>&{q66h=ig}8+ZLWsR%!-33nwc^Fi=X<-(MZzNJR~?k;|h zk@0bFz>NDXIRAL(c$~k1U+Ki$Zyq**0ql{I+9&(oA+b07l%!mv!ML8LA-DX{?50~q zj+9#;LJO2c3@GlHCT!f&M*e9#xOmKl_gNXW+86uT`l#^|7<& zM23UfTod>c&n#a0BQjMmpS8!!rx-iO$Z!3sLDQV<{7U@#; zjz=lceg$>ZOKgm&!eHy=khz^O5$GKIgkbQq5eOw-HrX6vDa+Ti+A_}Fx1A<=d3Ggq zwiw$-j8ES=de7@iG(T}P_@JgYEOggi3vBojJ5ptee)n?9X`jUgwg4>nGpLK)H4WKg zVj_>lSW|R8af{^rwROS}K&(a>rtoM`CxCl7y<)fF(+=97-3Kb{4Bl=OgiGv&j$ST9 zeeF$4Tp54jnvy*f`Qay9lhrrU=Yn}nCyZ!#%9>DeYu0U0JaUo%Qcou(H|i=*OQx5r6zv*_9ar7HLix`w~cc2E_;Zm53R6a?9!>oc=Z z7|L=G86(M1PV0mDHmpdPxOtOod5hZwg>8#M{>A8EABZWYdy!7%C}7CUj=sOmzfmB= z09C9Lm!f?hse*cY@v)%{3pGGPKVP|zA0q+6SP#G&8pZnA9~1Cs?^0qNAZmKh8LVl) zc>xyh^a|B^^o1|;*R#t*hV(%_-KO)s-HLj5(4eHoyW2~#nUGymj#M91zcaZ*rwxQlkG)Hah7r!1IN+hTlxB=E0 zsMO-kYXqD|0HFt~Q4cXVwto=k4UUhe`Mwj-;Nx%ncSc)5ThUMSJzn}j5@0DRSAW@W zV32;k!gg@n$0W5v#;}!%=*ZF=f5CdC1yCkzuh$()dex{fIwSw=ssTv0{0hO$As)tiP%}YY7pH~3!XGdxZUk5kqHi2(xpKRQ^F#HEls!#m6j~8k-Vw+Z94Z)F# z2K0j@ar#}6;oBS5IRGqHF3FzZZJT~d75$Ug9hnY)(E)=;jGkYG7rzh!8ky)YeXY@} zk9YSvw6#HLBzJb(ZzZn_U<1;5KC{H#0k?ndY~&L(7YyauhJeqG$;h7b|Mr_#K~IGI z|MUFeByp8e-__vb&CI^DLw6Y?*JdsWvYz+p$r5&;sQd1-%_k!ouB#*btS&q>-w`6( zVpnhu@kIBQjWLtp#zBNIgT~3~0SiBIj<;pba-LZz$S9=m@3*AE27Q<5aGB%EY_AW- zJK7n%UDLvirV~My)*pN-3Gz5w6>twesm=B|&+_TNQ7M0V>2JC9@s^MBS?~Jg_YeOR zfQsYER3>(LywNY!xNYFw8h*Aj;H2qb#WSREa%`+!{NGQZSs5d0-z7f5PvN=?@j=HE zzA@4q`O7Q)R!nl|8qZByOP5NYxo9pt?`5kt(1%rr&zLR#>hU;F)z8^f3P*zyG%UU%0137fmwIDgzxdNCK<dtXELCN&}$P;2{s{3h*n={)Eq6AK;=;p2!pN|a?t$65co+mVW+xsmmx z-%)YI6v&Gg$W*zgTA~``owd&4zt$@X1gUzT$Zyeb!Luk`+gVIzK`U8Rws=#Xx5F^5 zbRT=&45OhyPjb2DN4D&N$GR7#Dna$$((%xPP3}$sTQi-s{_`>opI6;2GK(H77^*XF zZ!;7&ZR>jgM8{;}Usb4rmXsJ*Q89Gpc?jXWt8lHroi)A-AGDqDAb+s9gUGGRye=&_ zv`UKpGbjKwEtqvY%LvwLNssvk55&Dtf7$iUBYn>xTjE@^Y0<`NdN=oJTjs&Zr*_7s zC^Dhzj4mSYh?oz73-DuO$3>wFmzW&lPvmeAW+Smvk%+MjnQPO61m!POGB*ON6snV) zDhS#jNP%&}xRds0xU9z+l@M3Vt3*=Z#VA=2Z!dXD_Xv1{&~hG&E~(|1Y&PWW0`})Q3QG z3p@xDTT&IKzaqIJ}xy5es3q?~$;AB!u|A5Xt0&v^euD`3O9?2rPy= z6DZ*}BJ@Ky-Pk4vaHd%lI0-zzaUim6Hk_aG=dklJ@~tV}-(@<~jf>)+>{3vnE|#dB z+US?8Rtn&O^Bqw}%MqM3Y{2uN8|sKYUP~;(UQlp**?*N-lQyT_%6*c#Cl-!LV6fI+bMll<6vWh-9V3 z(LB!t8%azo?^x2@BuKA9td|O-^RTBthlj5CaKtvN;1ihERb)MqPTyrB7A+bz0yBpD z_?11#OMI(qvyQ05B!K?yWq{1YE3=b5oy_O)Y_4A9_Cg<6V)D*UDg;B%yT;Pol~Q=& zyy^kade_?OD396tPTF7Xr-)fRSMHfLWt8eng&rS+SL`hSgq>c%k_bEP40OcX65UQey5sgk6!%)Uuol=r#8B=u5_zh=Zf!jmp)GORKmy_BE3NLCMl(GsjD0q1- zB({2zM@JkiY^XX+uV^pmhS_G>?_Yfd50FL1ftX$-^YN)^Xr= zOP41JbP>Y%HbIi&Z@#U~vYr$SDX!L_fIrX8Q-q~`(`^NY*H&sGcK6%fFz3#s5@g;m z;uIG3)TA-i&d^!6`ra2KCt!&zS`>ISt#VwxWE$I{oInL2S#(EQ9a|$#moJP!BqQ>( z>Qro0f25=X{|Td>3pwee=LGUj#`I=98|-Gb3wKx>?mp(v`I1A zP72R&O~~)@O?L>o8$jdj_88J4NGVRj8ArVlASUC5NQ6JgX#EoX=hxrIRcC(t-DeA& zPaE-<5GKkS3O)R^0lq(zDfsSg45w8}w1S*8O!Xv0wc-qjgZ`No(`9-J@Q)>3q=>tG zL*VyEUXsYGg3su(-dm$TJ_VA0+R+#Ts^Jw7RW;JYg>vN%77!xqM%DHGv1cPvXT zId>m$aqGtKbtmN-Le zj1-#$WwIJC?|DAKikl9--q%I_Ipqh$5~-)BdN*lB8+TQHWKV!UAk}m4Od8LcX!r8D z3}Ix6xKGpTeS9)>vtj=s^dl)edgjHfBn&F!>r^9VEb&pGc$v0yFI?e3Iw!n`cILfa zh3V;r>E(#Ma|R*hI3)xBSgHfrJu_8D`Dj58{uWcbf?o8e|6Wra@jKL`%My8MF^bhj zTgh%odb^3Z1T|_x6h)=S`y!uT*w~kQYB(Ps2W|B)(m9}%=M77HvK!A!V@cuqf{#i3 z;f-tvZgFC=OvE8Ddq;=YLSjdMVJCeb1ng!0`g1$#S~Ikj4AIRZPee=JgU3)&eL0Pd z3N2AWg>EMjTvF=i;b(90f-!nW?8}&%n5RwX#e-U+7oe%jf@xnyGJz{qazd-Ie!{@( z$YUimrXL-i&!ZCVL2nT$A50Y4ac9J4;1J4cl`~k!7l3F)eGP3zhF{xl9kht9v=F(W zgpw4E=vcDN>LiO(EAb)TQWTj}a%Xt^CLI9-pbp(}v%hv@j8k}_(Cn1pOCRY~`z&5l zN6C4r#qxXc9sqgZ4!)i=N0=Kl@Q*2I?_F)>!z)2B#$PH{8XA2OrO~d86n{bK6Xrqe zVKR8>VvMLM#eot7YU30j7(6D6B`N5Ht;U zK(0#QbcTtDetcM6`Q$RaK7=FLLopm^i|w-u1RI&lE7sr9V)&jC%Agg#(Huy}W#aXG zBC`tLVqt+Lkff;8^MmT%n~kP{n_KpE!rVNFe&p9#(7-m=+vG_gKqY)0!l$vSeOgh= z+UXi;yvIma&|2=hR>``7I z)|*28vQkDfW4sy2(9*Q)t>axzGSunFJO)JJQ*gpqit6f_CzIFAlU;H{XZ!9qOkOlP zDAIOhCsqtA_i&$uG3!YLCc90PwLW^s^`l|H%~|>Qc~s8T0zJ9noHgKhI~Xqr9& zmabr6!Kt+#&1lB{U860zw|$Tn+T@_VUUP$`%B`msJLRRvb|io-Jk5x!Z=80t!XUm} zV^E~CN_dHW>+duMioF{)JiUJ9XdJtdV#9Vp?Q??6ibo@%v*Cc3KH7GKJvUeOaj|TM zcHkCNb>Z*@z@Irxo3L}h$Dmr+(;vH?GCu&=eK~|`fa~af=f5n zs?UW%mZaGK%ex^RB5Z6L=X4*~cY-6{rw!n)%UHvL3MiQY(>^$bD5xMkR44KaoqkCN zi^0^F%eJhI{{MJFucKV#00X@oBq##q|A~(vCPg82#z`70EffO^!8YZ-#)!>;FpO#_ zPpL12jFUs0?xZzN z@Tv{{K6jUZYIMZiLxu3BW4%5}IKR!b znN-UHVk(X-Fy)DP=0ArHKk~9^R#yHbaGfHS={sJ}Y2@#&e1BO=i{cKVxe7mpjy8|} zco<;u#s0g21=7XRMf-poOgy?9g;q@@+z$pbd-aY}7Om0Ag}ewZ+BLe6DYIZZM;XMP zyYphNqhMv8TNL{xcdGhzKGz3)F7-K;hFk=e<$S^o_7Ir9OE~;;;Y`M^8>G8%MB-V9 z1{ZS?SUabQmu+XMg-D5!Xo2MDlOC+0+K*9B{}@8)V0oDyykI4t))>%C!FPsfpt*EU zXQtyamf!`cM02IjHnyC-AFvq%s=Vh$lk?>^-#B%jMb(0CY+1+mBdi>T62+)^D}Ea@ zOf}TmP)_OaM6fOfN=tapDg#+1&t3yxp!&2^OZH@iy+6r>3*1LZ%YEokwxh)<>v8u$ zZ%{qx)krHQn>Tl*V@_^1D&k5vUqF_R0rzPXLG32o^Rx!86&Ps-Qa0`_N_XV{b( zR{kU4Lkho;UCt1}3UFz-fS{d<>1Fe8Tr0Wbkgi~l=c-b2V6j!h8?eLf!e81dWTCvC zaV<}=?OfE~q|Rz-uQnqAS%5W4fC#+`scTO2y~HwdlS6#>cf->az3Pmb3d4yFq@jd^ zk`F=QCjuT zZOtwC8ZD!#S$rTwziuy(O~ba@wqyy#CBH7m)&uVNXu>OMnztJrVTOQ$HnucdxA&*F zyMKP*PGD#aVPblk%H(Z@51l0*PmVR2WmRF7b@9p4&a*bT$2{wfUe_QRA(pGAOyDRd z8z#CSvV4E@f@>rdWGruZA`{=QcCfV(`MYK=_&YegeGooPe0eYE7M(Es5RbB7UU2>( zDvTte4l^o7W0*~;?G6+r*te=fi=E2L!{_xMhpy_&(BL>Hi2Q9PG=vjYOOra3U|ItNq90C%@4K{Rfc-+HK&(U3Khwqj%vk}C<~1=TqV(5%WE zgHj;)jAhuN15qenW`D0f;lhJZ=S-k2%jgzj!b|Tm`{Emob}0~*7e{LoNKNcd1&l;V zDZA(P)5^z2CnYm!sJxI!!|ImV! zgU4FKUyFcCwBu${tn}x0e`tJjNBMm_pYlKZfkKkiCXql5`AiD6nY6S;9|v| z{hZ0AhJM5IihE9bnWELWnv;VQAQT{rc4=D!w-#dofKFiNh=I+?cK?q$3sP<(fdG}}b!Z$$bG>TPGiB~ zvrW06M5R7A!{4*_B_i-VtPww^;Tg~I~flc#b^hJAZ;YtV1? zb82EtO32i<;+NrUfL{eM$sQ@dg@C4w@N*9`;tYzj9|i)O*Z`NDghY0<4aRlN+(82c z##o8tsfnTaH;F!M$Jd&hL5LJ=>KH9KgS1%2>y+Njg>Ojk$L-ljGYsxQ1NvKalhB^dse5I*_J#S ziDxT5%OuMjC%*MLBDFd%_O_Abf9lO$^SLVH0@l(Gij6e7bkpll$R^hZ+#|nqS80xl37(N5NJ&)7VOS=M(j( z=)J8d9kN-ggtSnd`1dC1lUV+kLlodiv$S(C5*4H#X~vLBxZZ2=R_cdYu(&)`$7Cf4 z>3Z{XtOd^Fa^wjbyp56157bV?e(gt)B5gaQYElQ0IkKp=HTq&cK0Nw+(b5n%g^Kk* z8>$frw2haIU|>7umdCVEY+>Ug(Y0l+o1z90Gok}Fk+G$cAK|oaWGLWx&+{jhuRE_cQ_DwEf%27-hAAt=lib4eM|?TwHRRYtEa zhvagWPfGS#O~9tOHK@**(h6@l3-_)ODmh2lqf}reh|-M$P;(5m(zi7oQ!@%#yr3ny zZ2!)32GngN!YmJup-V40|2n6kLRWHSwOu0%a^=*@eLawHM+V1ceLuqJ{#T%MS5FJN z$%H;V&_V_0-obVk>-7XLzM+xSwfU0kRvY`y5e_S#FuV&I9-nl|)$%Rx>NqK_Dev`m zXUu$uhe?QM|0I^a=-h8^6N+6bv!dzF6_+a;oiG*<;NAluvjTD?1KGuPlw~Z*ZQCDR zsugNIuz#ZAF;Q&o;sZKVe4P;)UL=DMjn4SL+eQsbIqg3=Ses?ZSIx>4(3wN=xkF)w zNT%Uj9^JxmT?H!^t}XD{ zJ@XBY#_}KmoU9Po_8ky}4y~8HsyLQj-N->l$?667>EKEPn1NnwJTAY~upEzOMJNFO zKLEh4;l2TMc|C7EgB33EiVGXa_{k;q2m5*%&8jmUE%8rx_c^3SOjbf*+Wdvf-yUx>byWx+Ps)oaB+_nzaFzK#)zbn*@z{9kNq4RZ&_ zM4$m|QDJS9c<3Jj)3N#I96m%YS zN<4S9$pmYXTk=W*$?~$RrIGavt3MZuF|>twzbEs;b8o4vojCjH?-Qn8KnA>o{>!hC zgrE@Wv0tjwGe?^kIkBcb`jf3eEo1)1`Tf!z=h6c10+uF~K{%~sa6gjcY%<-uo&)^B zF%znqy-qBq_QDA!`-CJ@*nNvzZRZt`J9s*v)glQ^X&Ws`EInlh8}?u#Tm1{}*H~0^ z)gb{jF{j`}XbCjCH2w{FhlkR&sy_xAVu>O^Hf64=Rp=e2{bIT2#%$+tPK+zk{S-@? zwc_VEj;u!Wiv0>PvqOEE{J0+5WbQTz*GokiiUOiKi)yL9ybdZfi8wqKVSBCSj5bT@ zS`)2e>Z!~dY=3o30TD|APO}TRsSsiM#_QE+e+o1Juy-W%#w~A5gVUDnr;q&b17oH4 z)d>Rk734629x1K)P^;CGzw?HgOBjvFToT6v&mes{7FJ~{8|F(_P32N&;L9g)uY5wpZH~#^Bf)hH+Br&I3|0yEuu~Uu7lhZkdv0<|f#ZS@R{&=F@IVM2I zkJ48z9RmXdX#UeJsl)O>Ym3U#$8*HwZkOLC@=<4<_N0>fI_;sc zZacj06F}}i(=>8KMT?XUJU}aiCVG*K)vgKwCi@^(6=(=A#aqpXKP4D>sw@`u9M$K> zIg1|9QMtL{1dE3Z(mngMIhyq1L`*mQ&WKeqxwV)KLd$LUi}~e*=%SBcgy&n+l5Ff< z*7ITUV}h&>A>_)ER*>YumJWwg;zj8%!O6FKulcacsxPcrMZ2*xVDG$z8Q9!KspW6N zvu`Q^R9VCHWcpeH8X;r{CC1L(JFZ_-2qb8-)VCkLP#4r|0{tkP@o%1Ryy*3()nnMp=mY$*KNS zVq4$Dmve9e9=i*2Kjrk#EK-SI$$Ha^o%ATZR z`Ga{BmedBCeb2nlVMYPmK*dDJjl|XDK`4V`9bf|=eBz6m#9tDUA|T8c`OI1w;mUY5*%V-p|c`9gb)MUEk26V+e3bd72M{7Vp(+WoFo^X_m|HV|BBq=|*qxzo+z^yn8`Nl$G2igmQ zH_PmrsO&uqmLhbOI2qP*6Rp~^q8u7)c(nn;lrC0+BXs;fvkeaUaPHqSwh8?`m$VHs zs77Vn{1TN_W-fXja6y^dW3!X`#(}e5l6mf%WM4usv79J>_~#`QEFzlp6!*)j3@IDr zcN5KE;Ydf$OrneVruR~a*)FIaAcfL@b&xp~-UmRPlYQQ=wWaot|$6z8Y z<#FbQvHS9h?osGz^DsZ40 zIXQ^>?bLSo9mjcb(r`-fun0h_zz1}v=N;Vf>-mcud+X`=q#pKV-QlMf63iIQUaU7* z_G#d%Poao~0>t>M<#TWhl(8>(db?)x-7AtR5wfAgvT}Z)VfmW9xUFIKTBfVTCDk82)@@^_o=TSQa(?aQBO#O-j!*tM5#sV z!koMz%F!;X5Gs`(KhW*G-Nwz028bhUoC8c+_Gv?^!a_YKT&{( zm?pSse6N@k%66-J>6GZlN0t^dgE8^k_XYk==?u)11%QYkI0x32K|h-1td~wZuB(2A zhYWYk>X4XYQZ^S$w@&G(d1|GDQ&avW_PA8 z$3`}wms;4HDqZz5b+!UeC;**$+zD@AR(E%MvAxx^I7@bT7FrrnVzrhGCHnw&cfFLJ zRg;E68s-a-ngp7C#MTEP^GFCie6+W-?!CRcZfMw_C|o|QmiqgkqEB-7DSvLK5pKU^ zA)OnZ21{d>Lm!&RY*LiG<$2ZVb+p`v&!}E=(jA43YR@8_tyYRE)jnh2 zMY$t|BF(15ghicFW(j`yVRKul37p-;$o?!3BSl7tM$Xf5N_L7r3hbz0Dxdqc(&)#H z*k+S$G0_a^rh23eS5yRMpx>4)(F8;{TQ6d5bQDBMKoBw#7SBR3y53obz^GNQd0aapYU|FjBaAv+s zq?)GIrJDJD(`<7k|B8(e3<>1IUA;`!aJcc!L2Btk%mD!x$m=pBVZ+t<(&`(+|O4f+UJB7NS2`(qD$g(c65yAMh0)`*Kw z7OR}2BA=3)l3a`bBBsL!nUdb&_bBlYy83m(&)kQpik)!GZ-c3aP#~nsqyF9%8GpRk z{C<$C-4`b-rdljdZouj%s`U^EK~aj(rZcerM;a_EO!6X+q%e}pO!zgULL7C`$_7Zz=YqOKP)s|{Kvjmq;6CrYcoLRoxEAc* zDz#gzW&o-BLs1^-hC<-I>k4B^B(bol(H|C+aLJ+tkkdJjQ_r+hieEZr1NkWp$6@yM zDwZLjK~*GQu-6>qSBEUucdCt!{+8gisjB@BF|aV0a6e&~V$6G_$DyfQ3P0T^cgc_e z;fD(H`mt)ohS*!gOv|gI(I^tfC@^BOSy!&(OnhXpG~oZ|ie|#aD#hY+IRjvM6^q-F zrc`eKe+Db1V*SA3PAhHLfG`W{W*T9YHiKi?g+va+3q?c?#yp$NCuv-R*^>yo064yJ4aE58mSQUTV4xI2zU?~xwq zCeK#u>X)JziHjO7@Ed?H2gO$WvRl?IYb%!khb%7mnKl*yZ4r#Fi>|K0fIy-j9wlu5 z8{VS`np0_&BSKV!ISRJ?8fZhryA`TK?l%zr%f$}Zl$t`JK*ZNf+&Gjnusm^ZK5~zw zpKZVKvR>sVt)VlaMQkmG>BtbJsvz#mxUf1(>Q4n9WxgGUk08Tk%iTd^5ik;AbLrh= zSe3Pi!JnEo$w@^n$u-|9uaD0@%LyTcd|{JUAVZ=}rky!8wk}oL6m!sNdgas|R_Jan z|5KV{wne)6L6>8yu;Y*@hyE7yd@7MWl7TzZxb_TDLp>z~0ld4T&S!7KNBRh5gq{{0 zOZA&gFxGi(vfpMmXkAa<0^WjZT4WLX&t>Q0sl^)+TnJ2$w^`xFUR|JAu7-ZRAQ@|t z>ij+w2G+hBS4vX@=iGx7GU`D{`y$POH@Fjdr5gzwMiTqAg^OxW%#86g3Cq;r{&#^3 zDmz+52W@;RP9xBLmI1W)?T;fV(~|;BOyhJ3H!#cuTcFvIwWJFh*iCU|%{8sUDhc(C zh>vF3F&dyfv~_m)R{O%;gdB7h%810@kn(auL=8@3RGXpETdlxaO5uK}mrqYth|VN3I6tAWTzlHD5*Elk<=?Bd*S%8`cAHMp#7%o{30A~L3mXoz%f5nZetVIp?X|KR8{t$c+-VM2(X_sYe`r;~XWo<%f{vKD5G~F@l4;qP$h2n&UI1KQg2f z=&DII~kU`3790rwgbu?nh`t>uLYte?A~^l8%3SI!|te>!PK5I!5@w0U9$ z%NZi&XLu0{C772OPEknEhw|TwWsR=yyfNGAzf z9?)+~I9Ei|gb1cb-u;*y7EnvBTxR{OFR8Jb8mBgm*-p-IU{#*- zVkG@nv%k|Y$WVJI7q;9sskI4^>}zs;smbTdkgK4^x9By4KYAUa{yz%gJ)BH2dO1qoaR)8 zrdLf6g5)EQ=TO_ah=$}smI^&FL_iP$xjy%%Jwl(0gD&uAVFs5H2mmu(D>lYt?PQdk zF5z0qIk?MVRq4tq-TJG@i27H_y_^A;8czQ&Syx%F=7;(Yc(uX2^X)=zI+59x)66?a zbEeG_L(StQQJOgdxi5*KA*^x3-s*2 zl@mpF)r`}4=LvtB+@vItofU%0gX`3?ro^h2P0;y5_VXk1M?w@fT^3L?8Hd%8m%kFvc0;ym8 z4_5tCF`?4S>PFypiOuf_+VMp%aSowwu{BGj?1<`!H0i)MhX68_vt0t)f^l90W{j4C zZl0R~i?G+e8G@@S_sy+xBihUDQ ziFZZkI$mr{?oxyfxso|1R9+?QlPHp?tvkXO7BARj?HK{?UnmdIFcyKPR&FnPOXG%z ze&o&~NcmT4e0qx@YstBZ&Z(lQ#?~AVewiO~FX67TEuOUign~Yj9OYnl8xWc22zp~> zh-glHjxPo}@5{xsf7=$_YSbG_iDLx-wh{eVlkw0qR7@QDx`1bU84ldqay-8)B zc?|))#jc>eLDwEw9eJ&IR^6zo23Gh<(I#<|@539=Gal1d{OGy(VDVJ^`jB+wV42}a zFZctKP$3zWkpJlME#IfjqG#5Wo65pH#-7hw?mv)%tndTgq#1t*A$pKT`?g95PK7#Q zc2vU+Lprfj6q1`&-V~@&0G6}pSBXZ!xMgW9b7oiGDS}k>95|1_6 zH@o^hl=3J2NEIs)`uTzDVKh4^351Xj=KT9X)2YF^jZ+}P+uzIbX!6R@P8(;1TO(m2 zaD6}@wwrz9V`N2mUl|UJq{oi}^8Mbuwdefmh5MGf?)ii!EjBFZcdPhB&$^cGwoo5z z)GU!n#;oC=0iG+&H!mYnzSy3zq?JqERt8=WOuoP_}y-Qyx~e3`ur5IB}` zYXzfSR*H!tArLjL`>a1c!39<H_&m$MpHFd^H(N;`%;*F2@ijf`?|{N{>MYXI{!mP*%+D}6$Xe1UE(jjCg~o|djOsOt#s}e$~+-GNQ*hC0C`x1Y2$j>pX> ze(WRQ8h(urnT}Rd?A0jFjcT2>ml|^+JD$VQ2v7^$Ie|oIx)vq|%w&2>{+5)mRBD%P zC3*J*^Erta(%2B%utLkdqJWoUjNSFIe`|iHHF64!`o>Uf3mN{m$ubh?#52p!1TyFJ zl{e*q8QRIR5BrccCPgEPZ55FUlAtBzn!%}O!lnyeu&5`gWr`}b$+-}t=$jqTm}7y) zQdY0QtRi)n4>jeQ$Ns9kEzMk@ojxmglP5UMAh7H88`ehXMdX?UF2D#FY$YAUS>#1q zotM@gS>!_8=a}YDT>+9(LHq|mEWa2OH?lN<>K!OM#;qRdWv2M`l1oIwm=^WpVD5K1u2J2VmEu+$Ym?{L-}+eK$6qXJ53f zEb|@g!1s1e<7ZJ#(;cDL1_q@L+{+)&^PRCw+^8Eo&T){6i{agJA7rybYA1Gy^S?)Z zkU7CyAws=0lx8IMo{}cMNaf0jDlqo9ggwY{ges1jB4roMv$2M;0D1H;jvd;?IM6gAKhgeT*PNJCzNb<(vB^8COkQG7 zuc}9@sXuU?mPCz%2+_g@C@a7Q(;E+wFb=iw+e!8j1ujW~9IlAAzuQEg1H^fNy6F{b z#tYzxh10Z%&kWXnHH|I;f-4M=vZEkY)^VoZ2R7T(r(Tzk38R=l$98rKhA)JI#iOB!4z8tjC2Fq6-%h23^i5I^zLuZ5w)u^fGc)^8$jjwu zgOG4HVvE$DCAeJ!Y7A;^d7t1?_QJ|yJN!Ih zRa$j8ZX92}p)p7EiG^)Sb9gJ2uVc2BTW-ny=2pXH;(jrANE3~tR3|&lcK80lj7-@K z3TyzgShd8{ssuHYRbVdDgcFxXR!9tU@ozV>wAJzgrR@Ym$kFRt^)UM5{ZE1AF{ZZU zBn}f|2=4fX>WX=Y* z_-mQLsx|m=J+=`1!w1wGYa`&+Sw|)+bHDxaUun*U62U$x3e+YCY<7&2k(`Pb;@0ds zICgW>;$(R9Bf9X__xg-8zC27rWPvR?xxRiL^ZTOZkBm*=lKG+f=5QVSd1drI@Hb~L zOxXuBX9MFJMF|8rtDU9eT8=i_P;i26-6E==Xo)CJeiB_Ntr3R}y+|?0>Ly3xh9p-_Gm<|BbO1Is5mu zY^7!^AQyC!kvPOlB@avocH0X*$MZR%P=4-@Yy#Gkwrc=p`bq)PXQ0vTMjyuEm@bEm z1BN9&RP?iRPC&B|PjV8;dWJBN2WQsOV)w_$PM4cgRWu;O)wH5f9v}~zK&tNoIMX^Z z=FQjr@|Q(^6FG73<8V$Gs_-czv5s)dr?G_W?G#kU%fc!Xf1~o0MjY0*;#S<3xEEDWcH=aPR$(#)7 ztaOvkc#%DG?9|~xv^8IJ;)0j9bj5|U9xc~k0EU$r(GTZREm%p2jLW&?$j?L}qpL%E7M7cJ=M@Cd= zT7Z%Y_@Qtp-f2@B7wFSw3tJ4W=r)U43|x~Hpmi~6cP`4MfYtc=ZM!LlBkZP}XNym% zV|T+1G$QAH+;Xy%5b`{RU$Y9~EjGoo zOZe@YlS(J^APa>Vy2_;WKE*$O;b_MHx3{$$4KB)0jN$Hpr`CFN1x8uKUxQ|R1brKs z70QgXi8@#UqrnK|5)N?Y?b&VHj;d|Z6Sl0FGDps3J}4F9Q0NsZpjTWqqZYo)2Y!j5 z`!r<6BX4ybp#PwPeeOE^7C@H_CeE#km$xoI`qkhSR!GuYRFh+Mndg#1wdw z`Y7`$8g;O#7M($UWCZHkx);YW00qN00J06Dym8`>0wTeJjp0Q_MX^utr~ibjig zlo-wN{4s23Gmt+dqMY-wG}FYN%A*@_M&Z_Ka|GtdE?RxzIY_9R80PvDDmxrR(X0;F?Xu>?i z@V}G2Z26dkXUA;Sf++#LaZPA;B=3XE&yCJB(&OJgxr+zZWc85>-?L!Nljtm_jeW5k zpp!P|yW%1OhJ}!GbBC{E{SFvR4XAu*es0=ro6F6w<7kMh-odri7IUrn^GpLelgX>& zx0Ka5@6ZLvU+1Ijcdc`{T3lkEmd?lvjVt@^WU=zNw7DHGFUAZEq zqJ927bD@)0maVs|gti++ zOg88mfdWfZoED`V|J3=Shg0|aO9s&fawg^d+tdhR$0}rH?JMGF$13CUdX6yTp%&`h zNgwNbh9k8Q=411fEYEBD7k`>`A^3X^(!rP|60RH%9 z3|;l6*i->7mCq$-EFI=`#I757V(^Jwgy2}M!x;LN^XphW=Q)lrkA~e?XUbyYI(45F z8o*brO#RH2`0+aBX6c$Vq$TAT=DKH3LVKLy+<`n$=E|4 z?B4qP@&)dHV}Wx6wSX5R4@=1QTB_C%oU{0D~opxMZjIh&yr!ZF%| z4G0JEm(sB20v(`BZEkHZ0Z3LYYqY_%u(Hmm@k))&sUoQDL7J5g{?#204AZD=PClR0aEdz| zZ`P0x4gAAFR*I1RSIt*prJ6;AfKLn*97?j@kl;*6y1z$`W(%Riw$$M3fV;IYTK$gS z#yQ6^m(4yVJ#?BaCx^}gWU;SY)F; zO)^7l7-@95uyO`O_7=61)|e&7kA43wOBmuxv@$qOBbrR-Q_~c2&kjtC0~r+zg^Z!` zitO6Lznx|;O1nY?7x#V%U*8>bX_AQi#~_T9XpG<9BYFtcj$;TW4!=f3{=iT>O;a|1 zBR~E2F)422p@#FHJSekD5$58UDXOz)VMRq+5S6y6qI8Gw+B4NGFB;6*R#Mae32O%`JMKN_9j2INjLpcNT2)3mN8OD|TTH+_HI_O984 zstwi#VhJO7TBL#TH&^50smgNmPt3SuaQ@@Eu-ot)sPHV-gSd7a7$a3|1a%tLOx;F@ z0|uZiqjxlq@W3YK{AF6qt3a+xm{vOTS(GQ6)ATFD1sZ>n2RUR1ls~T<@XDiZIbIub zYd?J=eT3e|iyEdIA(bxWS(M5#Eqs6z;s~f!{Xz$-K|2ogx}!(!Fg_2ik8SbID#5{t z^I4V#Mvn<@AnXg$AXl29IwRq2iiOYM$JwwOn;9js3Aj8yGK)2ZC)d2o(EM7%nVOm) zf-u9JqkjDH{`P9<>M6g5D+;`(A!Woe0hh2|FMl-%Ne`7E;6PNT^qgz6#w@ z?=eDnAwPo~Xe$?pg;b(np!=T-2*0_>vP+I0I|c@(A|hr`@d7E>^(!)JgB#Fo$6C5l zX0B&@rpu)MI3X_p!0@1}O23RRCZ%BEl~yxGlw~$pdH3v9p(seEU?v0NZR<&*HfMSh z%m!#MWg{QW;^CdrUD|3=CqOf1cvl`=r`b8*7KrSnx(r3EZQ~p|`BKePHxg>@S1I#v zvyORD#510_4&)!+C)gdrfTD%1#i&%qGD2~}dZ$bzCz#arghk)0^8BIc9$e9>CmvZIe^g#PwXRciDV>2=oaH&8LK^(!mNvY88(n9CqO5 zUrRJ&(SM$lQ1My#1JLA`5Kt-OmLHkiqH0$M1pOt+;0P<{{iA}IaHxyR%e;5oUk1pF z_KxaxJw3$s5BB2W_G*XcIOw=n!2r7>q7e2st44@deBx7kdhAHKUDy~t2|zqoZ0#|1 zfU2w4@{5I>pgNIQSb+bfu=Bqp5 z?ce?rke^7@#!<50fFptWssaF~q~pxs0=|RU2zWG}OvYoDji^Unky@aVD=Zcg!|F3B z+@>=8__WkX8vLX3J?LA)Uq|dVgAuuBXi#`TLobUjBgB4xzoe2ROU0Umo==g>t zlbG|f+BsI;R1%e@FgO!CYP-|h#l*3Gwa1aHMCU3MSA0%sSNhpnIIN0pyU|iqASmH> z=25jlO!I9gG_el@8adH7OOEfNo%sCp{*iR#!s)XYz0Y50?s%Lus!$#m*&fS*M`vYt_;=}+XSp{ z1-sDUH|1gFmtd>MOTxqKNNBZYcI!Q-XjQ9T0fUjiVrOH$_BX^@RnOSD9!Iwjl_WCI zRo6Ie76iQdJM53D7o)|}oj>T;5c8cdA;o?xqTOt8~!wcCzbVY>V#A0 z;2TrUJkF!WEgnB#+oTti{?tRHKYE+(p_8!sjmi7m*su6&zm+2-q*F%;h1l%@n0D96C zG3Bcd!tXHaV2SO$U&mYl+^*(6zE&?)o(nG$tpm%npCc(NRxn@%Ueg7fo7-|VJ{A1e zA=g*BwrUWVMoT+e1HCcNV0o{djJiKLELi|81=`xCN{0-?N&KLBr~;FUQF&k8*-nh# zz86_06e>9hJE5)>H*%h3AOFbxdK}8nJ&RBg*T9@=#_R?zYMLUCI=fz*s$K4--^e42 zqeU(n({u)Q2Sd7+ZUIl&{o4MVzPDgTUzLUh#RjX`rJRV>STLXryMR#3Zodz6iM+xe zvblpEbs##(wHDQgz9REzutOe#$bK_$ZD8+e!D?P*p6=TyJr%h85N%qY0of+GC4+y`RPhj)8vie zhIAFS#yM$c2u_A$lqvaSHowox~l~#NIeG_ps7cEO%r(NQY05eMS?2b1Qmx zCD;*ocFC|z>muW}pUL&^o#4PtH2%~w#DNz?E3Z8Q@sm0MFN@;(#K%vVDuv}K4(3L9 zLXDh)w+g`oDuv;jy?kyW7HvBA*B_&>(j0i!y>H`%YZMqj3kN@#;TkIsR?+(>WN1_2 zv#CFf$iqM|XqgH1_QFV@6V_Tj4REfoD7y4F57@HKwAX@SgV63**nmHRyB@w+xuZ9y z8^dWFb&$fpWfFyzqWlR61OO{6ZPY+a~QBA0{2B9heQj_*AL7CiLpI1V77Hpd!8j2Xqs=bh!MyonU>RsfG_QMlua z@^ca5M>lWeH%UF5T)luoSeE?KR_3I64rp;tU>jl+!t|~wXDRQ;t0N*s%*Fe6XBUm5r=exXm|wXU8ra9H)DaHsFrUGOL7~I z|5tC=NPfMsRF~{h$#GxqLak)R8X?y~$l+&ul8s@r!{)Inyhr<=eWV_n<6P`e;35M7 zjC*(_E^?c*uLvd^JDX4wkBI!K0z)ArekA?+93nif&``*nkZA=fdv3JgRZm+0T8e_5hwD7&GNMj9DCWjOd{hZ;T=kMR*BpFgsi-D9!$k|}7FIQKwdq<@khzyh(s{3807Imig5KYV z)OXd^)*C7Ev3N3r-wjmeXffEjWmKLnjgpI?SE&q}tza$XE6bgXDSnr@E^2Q3DSg1; zw1hs~VKO2*28VP>LxP818z)b7b86$b+ked#{Ys;iZNYvfP1NI77DC=!5i+=saCb@q z9(NZD7mGjze8gO%I9^qI$B-gdf`|ME0QkH*M5ZoVd=|Je&9sJkNp1LxT`nbf;4Os! z!F%?EMBL79?nC7c$ptku%TsKp>8qy(Z8GIFPMt`x37x$79_v-K&KT;zKl(p%LM#~p zG^_Y*c#^g6ND}n^22Q3jOtVofN#};PAk;`~m7;%v=5$6fLKhTxY~*%JCeGubk{sbb z=TTeZTxZlS*1I3LvcbrbT{gBCQo9R|H}fF{Ch-23VNOyRCJrAO3GT1R2k$}@Lz9|h zp^mA2=ur>Gu9_ouv$_;R#jn5qQ^R@jhM!dXieSNmyVc+CmVN1>4k@@n#4SnlYhF)K zAHRFhB8(7w8-sG(=!1520UtF-zg^3*!>lg5y*0EjE>`Ca`3EB@j+X~q5i zXh(2nvGd&Wibt<)pySarbfbBSm*j#|V=Q(#YF0_1t9!ku&gE`f`w^e?fRGC+Iy@Kia&1|TIQB>hs28+p`2X4z9A1+WhTkd+sl zxw1N__Eb5&Og-$Eph6Kq+!p{D5U1l`pi){leZ39;!Py&oPmOVL)O%69#M!>8qJwDw zT7i|IV<2NOD5HSxm6%Fv$zMU>4Ib5k)}!g!FHY=_n%e=Jy!=tZHlu_&w8-qn`|kFm zca#Pm$%r1w1sf;>p=N}(7cQG{J=!zTdwKX%&7Y=7HF@S~K>XBCYzpDSF~>3AEPU}z z)jS%0PegQ38)gE;2wO^Y+7+8G5>1bgHbPM$cC!P^YGIuZ`cr+tAE_iYD6I<|M{uG5 zZ6M}oq2gsSljL@tag?GAszLq!*+;&!N4860WA2Yv5PtYRVj=TQHd|yFrNFi}+9we) z#^`E+(GnQ-*@(ZtS+cPO9%FZF0oQ(;S1^c?>&?Ylfx7g z{d9CU9G)2E;}gTY334c>`nW#e>8zVk{hpZxfxzxmW!(M{aSW?H{ofh`0u`D73{(@E zUswJer~}g`rE9Q6cyB-7jZsjj5wYg3nE9Zp{eNGzKjn+KD#0N)Cqem!;y(pzT<=p8 z&1(jz{(AY}W&(T71Z3$-nRnADkw+mAvHjZlgEB5x{gUWpf|M@g*jMr zH&`QB;s2R-xEJB{y@sJm&G(W1^6~z*f7?7!gYP}WY9G(2Rc=5R+ouLae`oqcpZCdG zEG0mdBO2n_g9CY`SFK9&wq&%M|0E*d_%9FspzzX+85uN=j|a zxEg9ZvohX$F2fU-KAvnjz{?S1)uud6Ap^Blo1lZ2i4}QFfM6ennTd@sll&*G&*D&| zxRe?y=Sw6%X}oyMHbs?@8ff$->N2O?m@0m!>?`H9APEWZ#%7iJCsE7t8Jj zEK9Hx-X$FcRA#$J!&!iC5~4?F^8q^sxwZYkc&(Ujwp67$H0y+F{h; zQ}jjNDr=BYe-HG%3BWh)Z$4ev)xo7VfK8CR=WZ8b`B68ddsPQu0;J>f{Hl>xFaVRr z#jVs>v{X=cZ;nRmwRk$1+I*munnk<`gs;a7@7%=q=TyHsLFpRh61|Q&P^WFRa$=*2g20U@Dxg zmzG8N!I{5*mx@F|ihX+VElr6@mqsM`_`TQuaW+L}a2M*7U_IB?OSECz)P_zJFIofR zUolLKwC>R@pnmNM_ueJ-u`}|2=Wl&lbd6e3(MsN&ZH}~{Rew{&lLH)Ke z2p86CyF8#-Fpl~FSrj={r+yN_7f&TRF$QQq%HCBpis(0UNV;8rR_GFO=hfXh!#ulN zAj%KLQoVJeHekL6P22>@Ww{ST9N{Vz^&e+Oc`>I$3>Sca|N9&nGdovS2Q>uvX9;4Bi=M9!~QN!_c6G5HV^T^CSC!7^cKGU zfI4eoT4E~^digf&hzND#K(wo2u|wF$MKo+nsh9I@#}#)^xB*ZsRfmXr?RAiSvkJu< z1w3dYSbTRee8OGABv45YGXj9>IAYm6r-!-Zq1b%dIA^G~sb*3Awd8q6a*=UHWOZ%v z!mv(_Yy$A*ME%$8$iA~zwCTO2-x@oAOhV;@eL=p9RFEK6xpa<3wipgTH7s+QCJe-1 zr{94u9&IZJnMJWEO7ZkEh(U?wOa$I@g7lV1b%toD&|xR(M^^ zKp*1JH6rB?QT$(7sHwa=W*fN_(3X7_N*>OlDA`}xoAR%QYFDt}wKn$)XV5{ZiwfsEheND-aA>{a32%RxgNLO8I2sIdnYb3gcSM|sc zBmHFpe~(sH9LD$)ROIvu&G|U1V7uzLcwi8>0(}I25VpBH{-4zWlU^(bjSrZ?Q zacD@J6r%ZP)}d3-8o3Mpkczd|jdJhRA$VU8&SM@(06&aI8Y0b~vm!mp>-EqBleaW! zn*>qbhNJ38wC>-JFcJV|RcQFD!<(p@sxExPtcEgP?aB4ueQO=_EF&BfDsD06ggu_4YdxKdS&|c1mwJGyO{Yr|8trkTN`7H8xoJeJNj&@Aoe?jp*+W%Wr8#u6? z`Dp!PG-(UB)(wlHp!C>gwj|nNy4;E3){x=Qw(d?#Qh;_|Xn>4uRIQ$e!0j>U&?dFg zGyrH$-}MLS+N;*1G}=z99#ql^`Y4UL&FPzPL2sTbhsrm`jRxU%g|2V_oD$|~lb&#n z5}=Q_fCF_#^20)TBnuY2D@?pjS7%w>@0=RU&xm><`ruE-7@?-b zLm>Va?n-{qJ~(#c;`NNw7tzcU!v<;%#*qMUa$w|e!wX@n`%~|W#=)IN>5R!${)&3H z%PQl~*;|)6O?bTPz52%8<%B7CLyQQTP0YHHz-`17l@=WB#&@6_WVR>}x|QhKG!K2~ zkeW2yG|8j|X?r$~k&O-DZ67)3%Na5_sl~n_A;U_URCgQjA(4gKBMuD(57tMFfS8NT z?V2)923=?48f-}DyRC6M^aXnU5#-Mkq4iGfpnM?j3@>Z2uIA@_I0VJ*3z8!1YX`@= zl73G#T03#D@C(6yq6q4+E!RVViTZ#pP$(6%w-;s^c`OqGzp#@nGLM^%bY=CL3dRB%Qu=+O|o?W z*~Fuu^>R&9se0zXczV)iE{U96+k2?TSMAPy+3iszb|N7C^?Z5>dZY+ZB132Yv#pD4oL z{5H^xrsSioO4@`fSQ`ZRu@#bI z?f2+2uNHH0wxf_!b-CaHCses)nK~scV;4-4tGO+p8n*tM>KiaC?ycV}L^}XEthmS& z7E24gM;wN8YF-IYM?XczehM=bUsPxRQp9?uER3E>tZI_>PjOstA*! z&rOr)jnEFJzG#laM^pD);uo%_3R#JC&d~t79 zh6eG#F-JV^Dm7m(Q#f|O_`e9{FaKU57p<$)ME5;L^-k$Cjs0;78yY%hKY=o^Y%Us1 z7;O#Zl28nuO#QssLtwBPlwe8@8#wGxL#?bnStGf2`CJ9s7qisxPJcI6P~$ndM3v)9 z{4@?SOc?((=IHakOP`!s6s=~zUOg*5kvIYuRYxXs zuNHpYR*6=ucWxjqS1#satIa#58luvo$2`OaV19gM1z#u$37MHL@<+Rf-mO%hLV$2*HaF`Xyj-z(XkSRa zhol0ir_M(WmO3XPLUgSWne?Zy$t2{M&TRong9Ml4E?Y$8sT z7(xSAJr@QQk=cSwK+?he7ua#~MUlGWBzo!^{BIcbk1Vv!tQMNT%b@C%p_=V-Mv1Nd4XC-$DeQ#v+yWYS7^b3^g1>= ze`VAsT|p<#UI7tMtZ&bDXxP$6Z00gQPF0`hj>VG5-Xaad|(g zjxb86y`w2mQL~=#lJmT>Ld>O3WrOp7ftizdKNh^(Hd~+d0XGo$DtoW1V)7d*ua>rI zGpc;ms6XqH2Alng1@COHR)2UsO84G$b=e0475e3~<1ZKA^{=Uj1z?=}cq>WEfq)2E zLQfL673ctu-;Xe$U!IR{l+46+Drz>>QUaaZz;2?EMTz=e3ui#(bb#%&?5xGt>CFk< zR58{mKRtuvR+!!Js11zZ9KO2fg+~SjGqjCyfft%n z?#Wx5E#PfYcuPjvX8lc?I(?t01C4zxanCj)Ml6y&!aS@@LI&0N4;*?PLsf>59|<1h#BW&d3s_qSC^3*dvgZ;>YwiIioVW zlhQ$jLJXdn)%5GVe~=o`{3>__#nr**Bb`vT^4nlDla}G=tX6QWCX&kM?q}F*=`7vN3Iz zM~_vE^)l)eoWbQ#odr?pCc13azv~>3fR_?9KIE+1aY>x-Ru)6wy>n9g=68$cdF!sS zLtow(Z82bm9y)?V`o{cQuM|gph8hIdi}t%U3<(KP4qUHL>~&%R=u`@sRW$xvO95dR6xKZ%P4cbpcPvPCD6($Bxzh(9EdM4QCbfbR zj+r1A^1FdD9ye!gzu;~u+HYVt z`-;xBgoyUof&-}hf%yN|^5@H0KyI+H!(k~P+h@sA)K`o#p2Ni_PE1P%(kh;}4=e=K`{CGe|i`s(=`}W7wf>_GkWO|YO77yoePQ_~Hv0*Ma6CznC%(DXZG0Q@-q`BgKc+$LZ4qi)Z5Ywez1xYP2`E*W@UTJZ&GkJg!p zwBtZ#r1~Po4Phi2Z4NK^ZicQ!_i$auqrQuIT!{b8@4DCMq7d%J|DjmCpwv*&%^yn9 zRX{w;Cz2BZLyli9HlcfyiA$njpt{b7K904IZmOg`Sjsg?>tZ;XZoymV`uzcB+S?i* z1lTMh$DktTdMpH@FLeSr!(35Uzs_?!d9ZiDWh1JsT=sCEeLD}eM-x8X@US)cBw^{x z)3w3*18owD=N7%*U-aFuK@t zoPLzvUmQ$l3=nq)WgexNxv)`u0E0@OGlVt8*W!7MeBsw&x7~}lJ-uu$;KtHI*-?{? zb(u~4ki85#f^KutfM@Dum;%egvXH*wWNt_{L{N$n?67dLmHkPbasr-$M~v|Y@iVE^< zkhL)2(f?dg>ou{NheMfRb1Bgr69%bPbYiXed%VD{15Xk|<*8q1M^jB-7k##bwwP{R&aTsQK0 z=g)sR?kt>A^GE~&%Ndyl6^kD(M<0hBww2|8ks06hRC=sLn4c4mPErSH#~S~y$ly>B zwDk#aFqxeN`h)mWDu~t3#BPEd*u>ck0j_7XWaO8G(rsy3^1PQGx_Zo9dnqq9C6EFp zVF=U2IE2ojv%1TtmckXKPVMRXdWA9?G@VBVQSfAJqi#!R@5EZc-${lahV!3t{s*li zTLSFB4`XUvt1*yHvhcFg1X7VXHP6lILyXwiCQ_PT$HlXg<#BFxHWvV|U2*-AM|Rk% zhnuVoT8IrTh!=LLrY_GwiX zdZ&27(D*%4R%hTC1K4M>_zkZ|FHilg`98XI9iixF;F zN`W<#`@A&XLZbi5LmBmys~Dn(fvlC3HU_4y(@NdP+2vM4U?xZY zdW%2@PiqHW>t~ANRwrumn`(C`i>#Ua%W*%_Rpg=f$x?j~46K-o>1kX}O@@N~Qfi0% zB@l1dkB#jjTC2yOR5tN_x2xR;C9W-#BEO=x_AWR$&TfsV;*6Ap{j|%&&z8m7D~{nZ z@>c4@nmV%u{Ur9+7JSOXtLRPdJw2pw(c1N%=N>?N)PLcxsM)OdWlC+6z815|YM1-~ z-UyIoSNH!XGtnl?Hvvr+CW0h13=~n95vujS>`s5Q3_D2GWe1;I+$b^y%dox2ZQ<3*OtFl}Ev1xV6@Pt$amdPW6v8-5>m>Ewsz4orB_0(2_2K3dK&0 z+fWD!e^RmzW=P76*-4wljA?$Xh%lTj2{W)MWO>e#m+f6i(#?yt%O`f6@D@du+KhR< z?oHg~@(T}&Z93ToVboolx1-IeO&tFU>s@nGoZdi@t}l{Ol*?-8;*!dnlZ2eDG>E2q z2g^-J+=F>{XwutQI30iVY|hkj(5FlL;YJyP!-&pi)H&?e@y*fk;#bNy zEVL6A$(xJI`l{}DoCCFxy4z@{pvdsTZA`nn0L0Tmr(k!@!+SfkcGh_{II>m^)+=Lg zgfjb7)c;4Q8f+Q(!2Qj`5`T;486m?&74YuA6K&rgdSkfEqEj=Bi59YRrjWEWJu$pd zAjR?xxZ%9yJ5_BBs3aJg(MJ|2UTT+*OU{Or#1Sr={}{(MX%IzTu0hzHO&xEoA4xoO z>6sM~xbg|Gi;2#YDWU=7{Fn0q(lBJi!?K82VGMFR{>z8JHmOv>^nVx{+m;M>WtywYtDTp}a0oyC9N*FyH zgdiYljyKCTq9*J{7Zz7=QkW~$Kl$HtYOk2Ur@3G2m4gSb1qr<sOEPfM6IO8K%m~Aw;0o4!eUNJ6NF4%JWR`qy1Roh^p_h03y z)!N2NcaLzrbI9}&+!@Mf0gSI_CokGCFiT0~asK_gJMR6XTGp#ln{=&(7mw3P$HrRj z|AbkVLjv60`F?egtyjmpimx<4800~HH zB7-2Zfdid)$>8YiqWb&M+OVb}GJvl97xS*K9I$mG~9-4T~K-amp)Z zwgxru=TmwL#6vL4o%5O%#Fevm`y`AK@D=Lb`1dlDtYw2L2)I>}niH_^)~WzK(@xs3&Ff6nXTmV|^E(5ED1s zMPoUbeGfy34{PY2CHLDyof&E$PaZk-cb;#{xi$^S{hNBK>rlyl7f(kW~2fGaE-* zwIZH*8-CBseSq4HdW;lZie(zmv#}Bui?+iyeaE9=z19|;NGGZ;B~oqv5vp(w9xXEb zO{R-rYVA8Cu0|c&+A%S=??pk|-=YtDw9P^AddB8Xr^f*!q7ydLy0`MHvjAeq>numu zYuB`zwkVpK>9m)S9Cz|g_bs5akENI?(J;MNW6^EGz}|+%%6VQo#&AFoql5>R1oruu z)-AMJD8g;##eZszp^^`7CaSdIaKG%DC7wt>Ak&Oi+V&18BK^Tw>xT?paa zlLYRWDn{@B3~RC;*U>g{icN# z%&_K?*?HJY5vi81_~tT2*KrPPNHi~gHrrp4NTF59w1gu}p%Sa;k6gb@vPDHdueX6| zD&|t=b<`iD3N_)*b)V2BqACfsqtd1Ry8pnMe%ZSVtl3Y5h9R}j3K=n>|22o$6Isx{ z{1J1?ShD$rTeUMs)Yug}(y?sLPS!3WVD*cTLm`?S$QYeXA(7f*w%<}YNJ8wUm|JTi z8&WFqErCt|6CCE3hvE!yPky#Cy;sr8(;knhCMf}G_kaeb)6J0#pg{~7{vj3w?U*da zm4y3fzM^z65aelQJP&49z)WV<_V~2s>FG)!WX44+%|j~I|8+$>icw*NY9V(~c~9cM zE|=06xl3ZZ zQcO(4t{v;?O-bQ5D)M0hkqNozFK8O$tlP7=rB`YXkaQc2nBqx&Ry~k6-*qOs_`w%> zg&i$t9jfr;HsqJ((%=@tUj=#*_a7$ijL0Xm7jJiDT;UrZ0$18pzE&ZpuCEy%=tesd zyU-)7ZUHZfn(UDJB?Dg+W}EZqg!#CJCqzpFe*}sYD+|a;j@mN^i^@nNpZYcZM~l}t zo8$vrff^}Wc+SK}X)R#`ra>g-2dv&cW`2z#Xh=JT8nBDu|i%xuB~{TEd>j-7tZ;Dk}U^qsn8&f5|c=g#|ViTMe{kS{MH!X zyr^FaY9@vf8g9Q|1#NKOc&xDcunQdR$9@^eG66^T%@P1p&OT&BBeupid?iSKl@XOl z$2Noszp0_I!JmEF61?kYW%K6>o9Hf&Of!Y_4%6>0zf6PocKm}oOdj{Ow?EqiiZ;q{ zTYJSh!>@IWrZgl&vaAci9yp=KhFguZq z0Z2d3UOvg<%$$wevO`z(Dh$-O3ZIsW(SC&%+{27!c{w!A8ej}O1}q8jcHtPOqZs`R z=U8EFV99{zZ(!LX<`)*naO|4-jjwqSJEVQ)kG4a*Tt`Z{>8@Zd) z*4>pn$EI2Pu}l7pRmU@HOnS%kXgw{WX~s7CBdB!k+@RaiFH3L`nrdA*d`$6Db8|&= zk3$(Mo5EwFISBmJNCp%)Cl#zH6Gse(m_6Pg33{MF3=yxB^ugOB%KJW>r$c|3C{~Y& z>X6>gm8h7>n-r-jcdIJ`j634XL)Mb;^7Y-QawLxd^;}%BEh9Ih)5M0TIx8q0AjUH$ ziu)w0<>)K!QFoJ^NnuoJJDOZT1L|@uM~-u?6{xmKVz|+g@S+OeJ3M5EBrwo!`+vtl zuiWZmLO0$#u^dAP6%7ekr(krsPweO*RM4Dlu^dYNN@53^iV^y+LK9G{DbkCU5<{m;aM4e;H6Jo1menNx_S>_+bV)A* zZ~O#f-cT&OKt-bLzQ)I3DK(orS~G@DjxsQQ0SX9n*C#?AYbWs2T7cRkXvkRSnHLJB z%niUSL|I=4ryuPAEyKW5HuAGQx0O=!quTYHM-O1KWU-I0i+W>GUTLJ{6q7iBeM+9t zwSQJqWYMd!1GddAE`gDK;w2f%cPn}x=Y^KZ>WY7PsAmG1RO38L3Dkpy$eaqy;M5<{ zJSm@eksd=!iHTj^aruNK^ycx$THWGK)aUd?ZDo)MssD8|tUU%&7B1C+yy5WuN*zcl zwGWB?OsJ}ki5$atDk#BmSVkBTi@MF%7CcDYah>{D6BiZg(fzbD0Ti1&6I~SpAA`EPg%Z*Gy#q*!El#oBE%+#LUE`-&f&SXyq5sdHv_dFLv zF+B}2sm&G3Jy#JQb-~u7RyCTBuclv+Sui8?dJSR1?@yPb8)912&N?E6Su-Q$)V+ER zFjR+1#|vS`8Dca7=_L?{ZNdpB`7fV)RTzw=ieTb3!XJkc4mYY*m?X!5*O-dHNR1H) zZ%XuaK7wB)?I;0o96^a!@XgA;wFj82XsWNc4L4@S!VQ-?dt5U487zTsR1UXmHFysV zjTMkkZT|io^me(xteP_S2`TgJXw4!jD}s9HEFS_~=qJh($`Da#yxzz3s`ZR-RJTC` z+~@7cFSZi;B+Jm*5oq(MQY7~Rff}=o1}Qs#+T=;CM+9^C`B^azvRVBeJbKL&wp+53 zUN#cMAW@KL0LU4&Zww*EkDmCQtu<5+WmG<*d;<)-<-nQB{ zk_7s6g}0GFy=P3_T~Jzy2*YJmkY`RlulAh?qdxE-UGWeAm?+E`1J z3ry=X$%#lUzaf@EVyvh-7Bj@B1If*504u#ddB!_?mcvK__Ow{FNT1;hPr{J5M7?BK z?ZQI{Ex=akRhN_fTr{~3NI$WH1w`BEFhnldt#8dj2j!k5Yic{EGe!#8xc6!afrA8kgJln*2o0TR3aG4PFM%J*udO9P#(=~d-vIK)2 zR?8E`j8X9c2ga|+4Dre2i5ypn9Ed(6bx7sW{E|gb!528}D`h3a1pz>xGZzU>1Uik% z-fGFR>oAbt5PpJn_5W^{ROrsY0rK|0TGqHoq_LZV5H@NKAbv}$7|_&~VfHy&_RL*a znEWhDop(PF!8i@`doEG`#5pgKZR`hFQ_jnL2V!3uulqa9x!(~qgz*Dk=$9h;4i7itv=fA;~Hr9OMeB>kF%labO31X5j1ilSc~!l zR=^4-KTj*5j&EsTY_9BtT7|{Bq*7@~t_V!?4DMm`b`c%Ljw}U>3*?ZzX14CCO-L*K zl3=Y zRi0gmtSYA;jGH2Tsa%fK zMh_C-bp8cd??id7O8{3Z7ApR~TC6o|QEMU}5EEyf9kTJ!Jw?NnamTYC(e%^9+ei;1 zyQur0N+a%>g9o_7<>3c}h>fDKy zsy%~=Dn_$8gocAVIdrO=a4PdRjq*}FV_`VPc$g6j@|Y7l=iSZO?5{0v_k&+I2FW$@ zlBWcKrL9g0JMiNKA%}h$i=93N_X$3aLkhWQbePk!2R~FXFvXUE|M}Eh+IJ0oSXh$w zF_yZZHtzJ3MYF&Y>|}i8>Rs<*>T_KyB^)RxGG&rE#<|fuk2sN0P^{3~^%JByk66=A zUY%M$KN$t@?ow~01A#A9Z|A2{`rp$v)No%f^*#`s)s=A@bzqESGXRj&GO!rHJOnSMTk!DI9Q8lImc$mz zFFJ3pI-WcIG`!L*LwZ7D03Yyld0uB65Q_e4PCaMWS)+)5g{_U`lf-7zl6?d-3MG|j zA%>+QhIItb?-1_7b+CVWvY}IH?%vI9(l8U{G_iUPaSB0A%29c0!QEdxtH<&e?E_+i zo@@z6OwcrY*;&JzbfK$wz9#TXffNQEsqDT@bK0g&jxTa%1(P{XMojNl`mq0sQ@%_{ zk*fSmVb3%{394oxlF^%zoabGm5@3v%bH-Dv=$G{&s3L84{IVTl2^N3H4YKWEY$@TA zq)~0QTx1S#ID{9H*WziM^eY0{IgeQVB2__2n5>YN+}`YPn>HK%w98Zuf8E0b*xw$a zfEz}qjBiWfAlAbY;08De=)03EXdzQ3>TX7Z!puWXP1qk`JyKk<0I}aJ#uL)Nc$Sg; zX)Bq9v*mP1Vtj#YcdPXYt&X)!DhuY8!;sH#AFwv06X= zpk=KoW?w_4OQ*$vPXI7lGeM%?Oi<&}$G?Zr<% z|KnY3NZjGX;f%J(LrQK+ICud7oVdU>@!TmiQ{{}EJlCiG&vv!E(j+G6PU(#~nKFiF z1~>9vhJ+oL92!UU`%{=PXPHPscfeVgM$6U3*Pn3<+Q(_OufOHK`CDT>6z5WBhnS~G zZ4Y@GqUv)d^Zj`ODl0`ExzoE|z1L|Lo^(#oPU$BSY@r(Zv5cL-D3A>A>E(r{lz5;& zC87#8<=mW#u&F(dim5IHJxh)1P(kW3-%U(r4&H2&5%dIp1X^9p`tu0@Z;_g}l_t+6 zud{qMAje)7$|^}=dx_(E@~Pg=GID{JOhJh-_+@|8TOr~KYb2Yl6CobT-C^0Il8D+F zh1y(C(Gt04WM5_C+m0VJoC0&Eb*^S+<%!&=rG{W&>U+Tg__hUq1}+LBgpqdF0Ls?is?8Ysu?O)j!-mM9&Tr%xe>>t?7(`iH?Y( zp!paWI=MenfiE2BWnV|;h}jY84)alJN5C!-=TwaCiS{al!zy&1<5L8NF}h5T8llFFeM0m#M_=(X9co2LAnNKFq- zM_bu!Fw7pElu|0((?O8%qY;f(B_>F`qgef&b$i-F=XvaZ$TyY%!uSYoNG_}pl$Dx6 zAv2qvebQVxGBIYh;12;_ZB%Ff>e5F?GabT93vuV)b|;<_l_G38tExE^I65--Ld^Ox zb=GQeM(XavH-}u!mB*nlL+c~#Y~ATDjPvoB+AdG_&KDH%aHg29iCT=MbAlM#DAp!;(V<=V%z}FBSLIq19yt` z8zo{g5D0g0E0e>Ig16ZKflv`4GnIvDP$_&?^}64R(@WDjE6?ygETT*?;z=KW?=3?X zvA9dT2UL_kVhZezf7XwzPCy6(-YV-tTdd5>Lcsw!2Y`>wpy$EfBA}}h>e{41ozrd# z%ZbGI+Dhrg@ zc|DXI&)W{!5*~+%iObhMLw*9R0tZfC92=I^VIMJ(BJjSF6-{>0^t}tQTcDvv*(_Zs zG7UF+K;^_(hL*>8jK&jkA73-Entm$5V;O_08L}xhgdgqA{6~JiR3y&HiG@?h76SK z&~Z=*pS&Gv8~fGO6@P2|zlKZUj~HvPb`(G49Zyw-rhS;+8+=n;=y4|m8}6m-!x*qx z;&w&?b7mrwuf^TET6KyFeFN-Kr3J(@aGpFy&9~nTA0v&?JV23@op%uqO5Mc+#UNaT zAU+BazO-O-Tm{l;aDi&h1p|%<-WfmF&MQf1fWQqxAG!eLdokP<-uCDS)qAyk`U4Ey zZdPKG)KUmpRht22@AncL;h8T0igx~RYWGzOP}bVn9lcjg8L17tnNjXl6t&pPk5gv^ zo&kYL)ZvF1*0&U5uzSgYNsS+}`BMP4JTzhveqIUW#fK@4XO!$PxBb=s#wua0v4{IG zyb{L&MWn%W`AEq>ZI_nt(HI-wj}O>%g#?1C24S0_1d21Jk%Ln!P|qn=?>SSQN*;mW z@Xz7HoX6vtURs_v)eqcnVH+_`|a8f2e%idl&6&**F02ZCK8Q>)zU2yiXFe%Ixv`sXE9u|p& z?#RBaeMKjl{VFgh@_Jv7-cI!BOlw)Y-9zz9%nyGzSo`RckGID5jQo!6)PATjlOOJa zsuf)Yn`YBPlNRS4*CRumuY^d>r2%Kj@DlxirH}v0X+u<_U^@9BExJ$WZPHniCp8BU z)xeL`29*Q171lsuFtwmrP(a^o!gUP_THliyLZ%{{0@c2nP15*-BZ7M$}N zhSkE!Y)&n35g5zN{z=w9f8-PS4vPYaxNAN|ZRCGYV4r&>R8?H3Ao)+zRE^d-hpIgy z2Eder-DS~}S?_a0k+l=YN{N{np|{!0?M9;Cmb0%N1N(79ayVGtFVupy#7>$tBj^rz zF^`9ztT!(Q>>NgIu+)qukUjPSlRVrNf5MC3Oi@&4JPBg;Gm_;1O|(!3$W*&a(xXQO z38lYw5B~d+SePhxvnWVz%f>Ws!nW7&q~n_a)C5~E${MQwXF$}^AwAkBsIrC9dFYHR z^0I>*uVd9kE!8N#vERC}3EHm0xr4+5sq)JCDp#>w z0G$0vE>9f$Ka#)CTuCG6_e!!yHr>ql4OM_F+>8k9yFgUE*>t8 zOSy7nie3V-Jt?Jr!@Iwg`Yy!-+-Pj(2T;+=s*s5IXB4>6S}`}93Y+grw-Eq&gHONP z<*Q4Tl>aJUmR6dTVBMf%1N+5jD-HERZ2VK5!E5Q$apJ+k6a8Nr`y*Ne&**maR3y5V zjkMdZd#We7ESm#ZzX9Fn3l|_NN&*VcC<8d>??4f@I?R=vc^P7x`m zCdS(M?`8!*0SyLWq$-o`MryV1MQnzni8zP=%a{!{?c;YeY0OIlkYKR0CWm*H;> zn})cQU=nc)v2-NPj>Dg4XwW?C6;@hV?h_{xD8|q(N4DUteV^zF?-CsUX8Ww+k>imv zYty#Gf?0doQBXg)n8A)P8^vdP-NP-2+3Ex5^+g9nfA}-CcK!=>o!EWJUpiO;eX(k$ zLMuJr;beVn93q-um z$=v+?=TSm&7r)kk;gyA~m|%V2x$S;o=XD(9rTlZ>NA(F1J~}6QG`5W3AHvRKHsp>E zDGh$jzb>2-2kWwz=D%$#fLrqjnRo|e>hU%m78G2L;kIfc9Asr=EOLrw>MQ#(nX(YC z;-nYnv57IRoPF+pwS5_b-8vSrYEFY24I2&&-b@{R`{g4;hgQ9#g`7+Y{qv+BA zNxkd*M`=PsjV>IX`^Vaxs!jRq5=tGWVofame?DKAh0M@)8(qaI1;MbC+K$QVd6%Zj zB%cgxNSS0zBC&-xcRSL{@w;PxjIJ#DJpK)@Xc1Nc^mIUy81m~F25PCauQk~!Y9QAK zSvgN-^F5#Go$-}9y(#dSYD)%Zu0Z!luG&DDHgX1^bYjPvHZ1rmgpb=X8T(+NK|(D) zW2g+_UH)O@4*R-uN{b4JjL zo4q1{Rx6sYd-PQrr)iZ!AW}j1Mn^ANbzBEc%z7Eqw;elpKjG~if+2f;@1tx-U<&NU zH;Y)9+@T^^A=-PIQ&kN&k^!;9{;G7~Ok-v-hPF+F1S{_vPV!d*@1NYCoiMFz9~Ztn zTb6V=m{6Y((?ZjHaDtAnA>YN;=oh$C8vBe|D8(n}et}OmXB+_vs#H&Ct;G_@zkEK< zW>#9J1JbDh8Y2E<0kb=m}BzPKfu^9PO$21;w#dsF(f9MEE3R+ zzk4cedJ1%cc+E)cUsZ{JD{EQl_cU^2#8~lv4>uNtEt{ z1e26SJiipWDc_t@DNB(h(A+PlG#3^@b>ifEp-FtOP0S`C_?}X(hbRc~#ZAdCVpPO= z`OIh+H=eX(#dJblhm6DwTN{Gp;#(Exvihn1iAnr#%q!p_5xIk!!M2kBC)_(S0G66f z0W-AY&5Cny;-3EGfd<{EEdjK~U+`C9ooU4S8)2k*mtj3LrxK!BPG{|%6C1Ax z;X)LsAidZ5j4b&vHsIp7pwvJnLu!^;0w(?EIzJ#wV|1=f%W zcFtQFP=~IPN@lw=OXgiFA`=rOY&%g)SE64fb1`Y#_2opn=Zsw4(0{ZkjqtPP%ZeIm zn|`B)7!2FU$MCZ{MP3gyDJE=tFQ(c(qXzd39|!8JBB3ClKw5TSo?F@qF2x?i*s>jK z*w=crcKawfixn#*IrZ!-z(_ip6lBzK_Wqm|xxScw2k;@+;GdSeoM^ulG3X zhGRrikQu7_(KJ_LJf$J~E6Lo%UWEMqLZBlDwU zJ#=77=F`S#YPJnpx1WCa#LiTao#(6XAo%F_3}bwMP`#t1>a9sC+w^BC>v*8&@3a#! z<5FPLIb+HXG$NMQPtgT2qzL#|ogfREH55-=dbaI!1Sq2I0epD?iLRMqs2e#K8M{>;<&e%jKdZD_u{G#u*rwzQ!;S-cwEvx@fOE%dnCEYq#DmAsDTkDYuKAHhHh@ znH4I}0UO*MFxGH2CDnMZa9pqkt7(L$BVfi$%zHNu%3u5djCy$1*b|2e0f;>IW|!$R zRFDiwJJ&sNhBkA29tw7L2upc1HcwfB$dz%(x(vb<_QczQwf#^_y^!~|7De_9{!cml zascA%vdO#7~1)5mhu5Boglf*KvWEigP&m8Qx^8 z0s3Cue@-di$BtWm!l%mJ``T(&9i>5t)^S@LAh z-TjFRS6h2t;{I-a_Ui~l*vMl~D{IpCdqJeGam=ALFHjrzX^GGxn|A)|<0Quq0j=qj zA)igSJEY?SGE487Lc9_|#lPWYudNbE=6y&1_H8$c$}H8xDu;eO9zX;@n-|9BIEB{` zX(_@YZ&Na6?@vN240CN-CfcZyuyUp86wFi$ZSDVSAo5GwLG7gRfnca6iT_i$Z(;1z zd^IyK85j!7P^w%G*QqI`=Q$|ijYX9b`b=%ldQl0R_MhCT%rsQgB*f4^j{)!*;_XD; zp1>lBE}7Wh?I84BE7CFpNVH@6ydal1S=H=*2~|Xx)8_3Afb_Mh_cwTN&2o6Vce60> z8EMhtG-$5GT9wkX`SY7tRpPQ{#Tvo1?fclBu`;RB}gg zxVzj!Tt$H9w|>2w5SYq8h@uqW;_#ZPXLY-sE$uPDu@V=3ULf}mIqCd@@|o7&8Xs6p4!C;GBWw9b7!N&TF(ig zx;n7&^geGHoU@+Ar=cUtf!VSCP#DrBikel=vI>+(RdzzzQ+wrxH;(HxI$W(p~38WlBYTQUL^7$HU^iS6u)}DNxG!|HZi_n4#Jw+ zXvZHB!zrzR{O@P-Td@;#A&MhHis{DyYtIEyN93M0i@*G&2LW1o7}}sHIQQPA^cF-# zZuVM%Nxpskf%VBb2$W3h>6i<~2LPe@N!P!2+pRVK4{v>Um!;M+sS!bhLdf?4*yGqJ zy~J|$i0g?pMIZQ3)lv%YObK1>PQCWQ`E2k1WKLh}&BfxLK$shbV{(dUCQZr@v;Q=F z0-JVuUF4k!QG+Oz0?WrV&)?|#4&DF9&~~PCrs~>Gk8R?u@lkhV z(fujmLi44}*z(lYB7@5(wywecTBUHi3^KbBOC{zK0Mj7P)hnF1UDhLH0U8i9-MmM^ zF5c91vz#_Doz)h(xSut$P9Easc1u>Fa5p}xh|s(xQ&sGnFkBvvOa;@PJ{e_`MI>ZZ zrj*Gf;k7;`1nKqrm$a&gzSL2-;}XI;X(9kqY~-p}%%wo4ksK@Y3~CZg^>*pQ(4e;& z`@RKIJGU36CF4-c9O#u&KWig}2^)6|b{E{o>yQNj01&WBDIC*jwS#IfhHU zAL%uI{u~1gTB~C>=w5vqWFh*r;(vNG?C~zxM|8je-K_*~g@NRth6#!2#y;>H08#-! z>}Dyf7)Zg;NXhu!YAqHuNi=R0_b>HGS0&5K;sX-z$nJEc(Q?x4lK9TSXjIhOxWjGm_@g54=)k42;6m zglt;;r~tPFZPMaTz~XsH?gp;a^XpT4*tmqv3X+(Mslp}I?VJXD|DH7IBn_(_SKdKf zLqT}MzHNzeio7!fh8;%NzEAz=?elFO)T>FRjK`y5#>SS_s$!3$F+L>yq@Xt0rje-> zi1;D&)~2-@gzhKkPtrv_K-L2FJiFQ(|9iCwXHr`AX}}m z$+>!xZW`&=YX%6uVW1o?j*17MkfS)N(i!8Wg&75&63Z?zI+g2jj)u#;{ngP-Ty2Zjh}_aK_HMx7xFR1UJvDh5 zCUGHz_ifs&A$sv=6Ui7fyPdjwD6Qp{ZlGELP%fUF0+i|xxaCv}qbGg^?vF)V@!wEq zN}CNqvcrvJEfz5A-0D>hbQGvU_JEWCf)(@aoSvFq`lD;H>la1;_Pm~~jUI?z&*Rn`!o?9YR z{?C+^RYJtwOgmbl-G$4o(JhR3`D7sIvj$%~;kKF6ab4VBKC#U-zKVYxL$72Z{38}% zpVdCjZpWfww}%_oQ)3}gi?b8GW27UMC6D_dzY!W*+Fb7CycZ||b2E)28q*lygi*aj z2m44g2%&20O+<{%-`)RGBBwAaTa=J~_a(8j&1M}0-BZJ&Gxrc}+4|Zur=EALetBNF z)+h1G>0lL5{A3kOJPXP^sOid4MBri50Fm}aCABRS*`?Splx=JK8u=ThJaiPman81h zd*3e@x>#SUA_njVIPpTCK!TidjEyL%8^Rno#ejW|bOI<>r6gpTnv|;94ThxI&geLN z8j9JlS)RG4Z(~iAAE#NBiQu+M>xnt`>+QB`AmKq|#5+b28G%h^-`8RpU2#C*;{R~(`)(6g& znQINsKf4&Hkn)1gV)_stabJZrSHKJAHn*Go_r$i0=00WlAGeyT+fU(@Fa_=+N5)%$ zD8h(8NT<#Z54=f8MifW1XfU)@s6R$_Os1??+^+v9;ARP)-EOC|OBuoSYqO{iaRjFl z;jGAT!G945!?=C4t?(%#7Vj4S;s9Y*Q>b^0smOZn&z6yzNd1!?INfVm5i*{AG~PI^9$ly&_7*W0<{M$nT!91=4*?5JHG- zow#{{gpcMu{<^Cfg1CNF!1(cY{^paj3t3-rO=pW+T5!tpO5`s<21K~*)FE=M`e^P8 zh@5S|lf0~dn=tq%qj(xSBUC`*1l>7LemZL@qX+A=CS|X@woShIJ)XJ;npJ8@HQ9ek ziX#I7B3%P|%I+Fw+{LNmfhL5aT8(6_$=8?NC8sCz8b87t;LFF+$N2k)H@{q%ucL}Z z%TG>BGPG#b+maJm1dydeGPQQ>q_g`v{*%P7IR4|}&?w$9h6@6lbCKEhz`gZ;2TFt= z8zn4=zGoWCfxEjL&@DW$hV{W^D*n9u>)R##Tnk%lD6V$ya5y2@cr_Ty=Pq}!fu5m3 z{(CdDz@XLYA!>7H9@-9?gc@nLR78I0xKOOxIouiF9KhbuiJ4ZMUIg+xIUP z-V(9PVF#+56Kuc!I#u9st7l{m25e5tH`*!34<~UDLQ! zdl9XTTO&5J>lA-cYzj|p*ocaP8ok5vv(M8?+`fwDwej(`3~BQ$3+b1*m$NYUdiO56 zjE9}bDi^{w$$|CHVITnq6U**EU$vUx5}SfkD(0rP>==(T$vr(U=Di2s&W;^6^Q8K= z6CEf@D5aSax~-?@Z+ihOatGNc2=p|0nE%@IQ`!akLr=>wJ|M!f!RwlXgcxw#)} zeSCC#Ye)gL!4lrGZZW_IP`D^V8si1|DlisXT4>wyfk3R5csGc@J^;J}+U$^Yj_t+} z%lulkT7ea0GsH-zd8lC)e_2~1N>F}ZPmr7|c*Ni@bw)uhU{b1rcPSHaol}$xO9aV! zWBqB57rPT~lQ7`0vSq3~K7yo6I8WPpA(TKxr0BDdUX1bzF)VxGSCVU|DA|i8gf%}> zen#`lW`4@6`Q$wegMR@3KLEgU!deDle9z_@53_z(hEV3Z>i0#G#fk=?*ZLVF$)dVp zz;q@A0QfjISC?T;({UORHz;5=7GP{0<9V!CzFs@JnZo1B{~5g^OlCf@(#JPp zUx|b>yg#@K)JlrVj!jvyJVioN;`l|Dxrb zBFvs~idvgE2aUQl`F5@;n(UO!0#A8Q8S@YXUESvXX-zCOTlo#a0XaL>F=uXQpp1?-OPGnuOyVn=t-(m^ zXrLtSz*yi*2)s9Du>$e5(%c-u#3sV%*$J{K{6iPaC!gn*HYer%QCfss`o%<5%2`&- z8fOlDIe|-nsyn^7rG>12H(1zfZSIDgGD;z3GbJr!f;a^S)&&m{0M0Dw%yu702-GBt zd-xu21~KV7hY>Cb^YRL5^Hwpc=ZaalR=I;WtC~dCJs9Rp_pnm@2I(fnuVCKA1LF_` zifjxaX}i2z4Y2k{DVr0%aBJ%OVmPVO#i`;sW+IZgxIaZ3niI`mCvs9AsZP=vp8%jl z9}nlT`D4&rQ9puTc#CIo*=X)Bn{64t0Tlk=_G$S|bW5R%2Q5v8Hk;7_XNB6Oq-U z#QYQl424xF+wRg#9UYj*-I}lI!4w+QUg$Yim88^N`ZVk={+z^)InE+jrQNnc$C&Q< z21p64&HKRg{cGb70H1@nXf``S>TJ;DeGl>Xu0iEMhBIff6GGv0ENJIA)Dm zJJ=?9y-^v=4-7I0dG@{pOo9KG%ive?#mSnd4dWz)siPhBicz_$W(pQP^|STAyr2TD4$il0{`Au!hGFn zhVNfr7I{q2@QWrih1UD)|B}yP8Tyqjwm zua_#K5$Z{FYy5_9G5MpS8YPS8pZ*o${MZLY#%huJ4LB=t8S~-2}w`^8h5KxMtS zyw#2fGHZ>v&DrG{mFRVY44>&*M%jOQ@rBUrwBI-)&Suo+hc40|2_ip)Ds=0t5EEOr zc%tKuOUB7Z`%eOxzK$(E7H~e;DlxkAvWjdzBxJKOp~-W?v1w!{!KSvu#|suGU#@?dv&jCn<|XtUDqoJ)~(0w+YK$D5FV#I|0SJ_mSH z=4B(M-Ve-Vg~qOTR-hQZVwVEZ(#;JUvmV6gvkiW62*wqlx7FG`3Jm?Dv|L9@Gw>vB zhfHntJ1Lt-0qda`gn>bmkADhP-V7ZDh6%&_XgsLIAg$hu~-W`99O@dCAj zcuIa6R{`bbGA>xN?!ABS$9{xJF$rlZ=jQH{)Oz_)@$g?#_HbQ&ot`Zcv{>`!ui!;d zDpV#({=N7R{*y7e6T4|#nJcxw_lHa*GJ0hmuPdg`P%jDiR13}y*1o;hG4g1Dl=Kuk zOc}uyc&sP)?EnT}86`PF%vx+|lf(}TTiJ#9vyB%VHe5+s8m?BL zO0a&3!#`y1i_f3A$zwz(Xfi9mvxaD;KIJiCT=KIY8{XMW;Tg{Y^LL@VVn>OInmcT zd41gLGXS+J%|}u@jpa#wdH6~W%HjZ{B%szx?1mqWv71JSBbY`O%Hc%CEl4nR>nzGj z;%lM=o|i3zC2`DQA+$@hhu|2W*cJYFnu)dR@6X~lFrZBlTTdrqmyo&Fs+}o5XzwxR z_UCALujCOM+Y=!pA1!@Qk##2^PoS>pO)CUV?4KDl;+5qjGw!Y^{`$M@5+ZdPso)eX zP8G5id2)+Zha{bo0a|50)IJ2mQW6ef6e~7-QdBY$T5y<;{gJPO2U5%feK|Jzp6CY`d8?;@w2TnF06AP!x62UrDo%ele_5HZd=7TYvy9n&Ct`^>R^O zx!yp2w{qz?1naAn*5E&d(+n@9|~ci++kgd_s+L;X-r@#7yP>J3X9O~ z$w=KQ);Xx5rvLcp0`%=YGKPv@(~h79+5 zIUuJ2C25F72MDjM!dyqEiwXURqsPE$Q_z5{&`orwf46XTVf>!o_8rt_3s42*knr$L z3uYkW?~L^mR%hYe$tHaZ>H&Pjf!4av3LN?Arkn@YYdBh+s`eq;B%0?K1Tv;UzLBR- zqgJ+H-ss_%>+rXCjuJ4uIR5*Xd=V9K_xWyXaO zHp6uHo@82RJEg$*)>hL^;RG1D_*p3Wt2Czt7-t=9z8t;KR!%23HMJ_@3PcF13I?Mw z`^Ii$k($P>^!prIXb0se>vOQUWoCNH2lxWA`~ znHN^(0Osk;G$R?QVO~n0(vgz`@NhoW-;|l? zonj+UI(XH_SeL`ALVejC2EeuUt5~EvHdndODgrHoMv)TDMchMzqg(Kywrkrpcu7m$vig;ElFDW0_aKf62``i3iKS$#c79*0yBiNrc4-ux%xxbNozO7>2 zTh{!JnMa?iMmcV4r#2l3h*p?fK-DSFMJZ|Lz}+XA?y8yjqYS^ z{ZNX*%GO@$$_`y?2rJ<8e0K?Og^t>Og(YyfQ($n0d2f+ui;{Y?56l!IClU_KX}>3lOq7E9Yr?zJ7iR#R|1(FDG0e(hCmVQ)cDHIi ztdrcwr`}*O|4uT=m9sIV>}@s_Sm>Y<1Vv%cLoAjy1(Je?r8{)A72d^gwa(}}^RjIC z@Hl%^p9m*Ep>IXXRZ`|Gh^0X3yrHu+F+0bW4_K_ER$+2F!Sg!_+WgH;S2v~z*iVTr zviY(~1oLl2eZ3in$u%0=EKsU7>RA701m0#a$|8WRDw_FtB&B0o10YWl`S_vmP&sWB zz*Ta)EG3RL6UNtH;*vmVmwYWiz@)4Vxlf-0^p>*ZMTY zjJ>GlI!CGHz}z6n)Vf>*h8^P+Kq*X|Gim5!foC~fSXD~&?U?|w zrNl$vG?#>{B=mmQlQq5>#Gc|t8_&~ZTDVHt0X1em3WmwYIF|LtHMRB901=Jgr!W5# zQ>y*k8o>nDEuSun>Cz`JSJp>bo9P2$A|{e9(cz07AfLm=kS8qq`n`n!>Y}Jr@QQM) z$RYkAG{$s2@6(WOChc_y^lm^2_o@R;pswNwBO;asF;0Z!s-rO-$VN7{cBlBF~Ut?<7LwIm>xZqNU z#tRWD9ZcojZ8or-P8<7)>kC^PdtJQjC9Qw9AP1xSVZH?2O-@ZI zZ7EgArWQ{e0^zS&NhgM1x$R&hD;IczAQy7k?H?L}Sj05qA2v$@q*2^U?A@nv_;5GP z?s>W8-Jc54Jn$GZK*a!yXOD73uS-+yWz;gh_X7Ze@)MQ<(bH ztD<7NbyJe{y>RpozXfSK2}wMZUd7?ZsErj)2?SYZ0{a zju#4AZ{lxTK|eY9<*P94W6JuL6}Ie~+06cfyYu0?tEp)tXQW06Y_tYh*^t729q)3K zJ;;=O7AXEbY20W?XnnX;N;uUm6PurMw?1tYk_Q}!X0Z)$RZALTn1O4-@4eczJrMz{Mgk@N{2 zak!*hbUz>5=hAhDz-jXjofVxVBO!mI5uc38VCMED{pRn2c^7-i!W7&d(n=ei9pUfQAw>F0~NmnYwhfW!}VTDdXHh1-wj6X znG{^D|3cJVeO{+A7HhvN%*C7Lt4B0~bd|V{S@kOd^gE$KcO$#I)UbOt(*FbydCz3kA%t=Oa;bE;hE#x^u$EBiVKM0Eu zN@xD$M^xih-_=8RO0=Gt;?N8YkvA6)qXq%(Qx0t1QYslG&iucs!NWv(*w}1hw1XQ_ z%TcY_)k!6WJK$u>{=aXjv$fD1^Oe-+FhB+5q*V)*-6J#~Fn2G9hAh3kiLFm-)%po@>7w*S3=LI zy@6;z>}k|4BbC!NAmZ1IiO7SL;_H($p)#D2W&V2c1Gx~hb3P8(zdoeb!;4$^TKEW~9=nEi7;@ra zLMNK!g|_H9Y#owr5cp%DWdTZ*q#z2XPeI%94D56&Z2JMNgNr`%F;{2=^pF^5p}#nJ zB`8ia@fieWL$-Q+V=!iOO|qcKcAgzZ;d`tjS$63u#HO_7*{&~H{aNreTV0*AmqMzU zu*nLkJe!uJ+lTsUS93$&^K%jmZ4*|(UdRHK%?aeiXG7CETSWP&r1(~N@g~A1v|5U} zOkXxb`*+WE36L#3AmbfZ6Rn%UTe)(zdi~DfwzIr9llF`CLOJE_8M*w)hg}|Ank!cZ zrBcSfzQo+Oko+~-on=EZ>~GTb$nZ9-yN#gwZ>j5eV=kB1iil1?|CB7Jmtz%UopM;wC5dk9e5aKk+HGj>-2tB?YkeK4OHOZ>x?S&g`-X ze{ZcFzqzbH*pJI;+kVqzYQ6zr9+zFXnQ2+rg5T-;Tx3VO-z}Y`cT#WoGlNn;Pns1X z@qOD6L3&3H;V-AuAA&~{c=I$~;An_vJ#5rbU6H4>w?$x=) zr$2u)OlRCDYd7M+SVgwEAd`n{w7WNvfX*PV=i2ZuL4b4`8$jm3bgxiwvb2`ydOv&k z<0#=y48CDT+ygB)3g@wcRXjwfs*NQ_3bi+sfIM4-vm#&b`vR;}OGcxlxy1VB=cV2)SSj<&=8LH2^1k2=>6CcR_`u|i48Sa1CO zqr^ux@mFbvPdbXgi=?Z97OxhHe-O#o#Lm66!9r4FkyOMV*-3EowHA77Nq|p`bRXNmQyR6a#|wPO6}WRHDk_I8FRPIkN=+QGezG&eQM#T*m!7bM z6v(Uxd)e<5oBT&(N#5_i8q{$5PHyjAzu79!UhPGLs){3Is3$(q=08^Wjm7-wHLRpP z^24LIxw6(6iAOC0f9p8R?z4Jp4NaxS=rZo^`GR)q9~HmEk^laf^)dRKliP=2pblmHqBe^)@3z+8ed^M7dP0C2{ z{zJFdPta}b1#c`9no;0~5*LtuYw>Z}bkkGSl|9_2hY#KW3wkC&W-7}1%tQpKJes#} z2x#N4M@{3jjhY3YKyUdQT`i`4=``GAjRR+dS~xyPLVJv4+3zLOQoH{eA=|~S`L3j| zu7bu51QFb#w)iVf?R6})5iyW4cp%HE1AOxzoSFiO-zH}Oh=^~Cz`SQR0xsPi7a2A! zpTX1rOd3xXGX?JJYc5=Uol2h88om^J9=*C^XjU|MHWD(9GiR4V0@{{tFmOkcG{sl{ zh5aX;cHFC{(iqJa!8J#Rvf0G*LjnIj-VRcOy$Fg_gxmKn6gSt{W7ql_k=igfdQYHz zmne|d7ag!-4Q6bcI2$E_Mn)_TTexVE9zVr%&;klT zCKHX+)N|6Z(AuhY9}3QEnxwe{m>i9t(0YGZkOIU*6Hm;17On zTEmd0uLBiu2hUu;+_KmI5d9vZkSj;&5$dt6Rjlq-_ZbVtr}!SUlH7eM&<;cJlT61h zU2se{46!0sifpU(yv9~%il>TJvvfXWR&uuPZHei{{l?7o@%i9@hVH>OI*VUenNHPe zADO7G8F$1bg7f||*jZV?BCS0R5<|vJMjCVA1TYfjWMNr*)SaQv>Li`u`Yub)WU_&`SDxMq!DHaU&d8D<;XUsFcsYJ1lm27Z`(PQ9`j)1QO z-Ok@NUMd6(Vl$b2lkjQwtw|ZGV@z|etZ=!g9h;t6r|TJT3F6>!N#U+>_gxR5il(}7sA`3A(XCeE~pP`r`>^Kh3|DZtpE>fh4QQ%P@b@G)xk z3frbm){rCIsx_y@0AYFw=s#*;w~C!H?9F&FPh)TF`(Q_3NbY#dJgRTC9rZi9=HM`~ z1|P(5u==3VXASN#ClB0=A}RcYGbEsd=7YX?FwK)!wGt)Qd1bPXhN38AGd#fsf~t&Dz24 zy>H|$!P3HD1}$4hYEvL<#4o!EjpBOIYMR3uE9e?4I6(^LlWEt$O%^*+bOHO-vJg`G1w!2)ko%KlWb6K-y^|V1APtTIK8{J1XW& zf?q34{a`yTJ_LvOhUfdQQbJ-OwQ`D1t&CtDmWdChi*9b77RElvdHC{pD}~;NLV#yW zTIEO8zXk0Hcu^sQMdHSt$v;;#O7i^cAjfLes2DbDMhj)X6!maI+~V}{Ks>AnE!hYF za8T-F@C`feK3ik{hjR1^Qg7U`lwSKe)%jF2&*PdoUht)lB(f%@=>$u`pTj7!=g^{K zVvN1J;o;)@a2rS3hN5;6Oq(fs?vc9hh4xskdp{am5zqE!872KtO?s8tE;X?9%1>ht zFg8T0I4Plmo3vrcQMx@XD_2r$IAhD!(=|xH0{~p<@p(nC*BUKja9PzbM>*-3BA{6< zF1EJbABX5aaE4%QgEV?i%6=Bo=Z+E^BS8WS{5cb!jSgBKqhvc`ALsw}Ze9!Qa}%p1 z`%g%DMz%l^cf6Vjc8dU$gL)?wh2;696qMJw#d;1VujTbjuOzwnmk*w#jSZX!n9STN z`?L>RwQ$V5q!LC)kg=5?<^~U$K6fSc*DB;w}kX z_NvWm>^Xo2uvW|Kg${&)`zo%d*dnBV%LtsRk8FjQkgxLTY^u3HAm=d*0b{KMNNU$j z)l)u>lNjUM9<~w1pdE;yL2?=?t%$3kxPEiAY@jtb$*$@$P9JaP5mHta$jfT%LpQs( zOeSOw9g>$Ju=k%>_`CDvN*Uh{u1e3Qsn;RH9^Z>##_~!#3>ZQ9Dx@! z3@**|m2iyN_x=~6KxI9X;l6<{1aG}2G`+UD=(Y?m;&Jtfv%vvvN<`LQ@+mw8jP-Fo z1wm~7jPgqE@;P(Nvyct^SGl%#&N;*lkZGMRNR4`M^24LD!XkR2mUDeM&yiwuOP;MZ zmw<6!UJ@&$D3e*2)VZrxt`p;W0Z!tZo)IbIqf48~Qym%F#2KiHdL&qg&r_|*qAy2E zr2vjd#dXK1@f{q2B%mNbG^bt9n8=huurENLFvZLij61Y0JubmKI{OIA)j(Myo zOT4j(vB$~md}&K9jmU02YsS(VO&axC$Q6nOSy!_Rsx3cOEd1$RV~r+wD7VVB*h>*& zQ?l~#L@nOkV+_{)N~ssquUCRSBuV<(j(^5!FhR=2`iL1CeK5uY;EtLY0Et;#aK~OQ zuNi^aYUSkNQvP*EDr03kRHYck*iA3hLYyoi->{wgXUOmp91PP7SwI#uP2)0m-*x8Q zRFrVd5SKr;da%heH1r1oj+G-|xg&o_FmwxmJ$XU+i!s=_px=9@;#bm0Wd^MGGmF#| zQ+BEI+fHR!{wfWOM9xug^}Y|eoK!72qlg)w<(*Q!#3fD-@o%Q2_HgdUcKT75KHA*d zEFz;>$xJ)G&75r&X@8?3MzX4k>0gf0LK1R)id{8gzoY3i^6D<%@veYwVN?_;V z0kn4s=DX<4SY|rBR|CE=CVS`5<-E-DTKM6|V4~EVWZQon7qa;`K$mt=cMsy0uk~q0 z#YyYEk?_w;WVnYj`fOmaq6?BjZ69)N6B+xPH5*RLap|3Q3lK*H>bUivu!x^)!v(0( z{2wpeYgHT$9$_=@2focramH(;3}-P}jA=Oyjj9J?WwpVWcTRJ$0}&?v#MOQ!!pj(9 zlRG}v{K&`<6XXMw>vnCaF_x{S&0zCc$zBPUZ{SYa&&}I0ZO~7ZZM+q_Tvg>svSm4G z-Ze`R8Vh!zfTRZ^ScK$Mt2|7s_m(cM()hWhynohjbGTj(skt$W0@J5=7aO|S?l!rJ z3B^ z=nk0YqV(tBtL0UuXR(YIcG-eq9XsqxzX?yv#oT;qa7(?u9a7m$3bl-I&<0~cd3GP6 z?4^>_qO_Yu#Ki?CT8w|4yRMM^5O5_kLG@3v&aI zgO3%X_%twqHMkUeh*6Mxqd(BFRvHqnuL8`b&8?2EAgY1mXQK_4aW>Bg%Q6kSZHLD{ zmaX|1ZIs}M>_jJ~s-l<_44$mSpgP{Z2VT__lN)!_^BU)KLXP!k|44iFk2Cwg{Gz*xCe76;7QA)OUxDu6g+#oBmtEay{5YbEnkah&wUp>iZ>rRTS^Vx!gBz z4}|!u|059<=Dk`*_#??{o+PY`5fkhdJV&4Fzl`0J?{KPpa3aUig_!w zF_lHKLdVP1d{GEYXpQu=lMzLBcb}57h_Fg6&yzBijd>)^Rcs6tTfixi?_D5$d5}#Q zGnsP>pECS`U{NP0KtIjLX2h-A=X$cl^b6P=$kZd5|71!O->SHD%v8&`oVc{+!JO@; zeLf^b6V5iREw8j^gzZSsyB($SSu65uay&G%|Ako{W zV~RQTxc4fw46FL;^RFKoVxQl0N5SH;@r{)YccC!-1W7>K=q2Yt#Q97XxH) zxE+kLdxziUfbpfr=7xdPMP~Ep9?C>$U?bSV{E`&UE={hN;m~XxHyXt89~HV%hHKXjwt58lV1;0q%$_IXb;XE{g}iDY$t** zTFY>VX_H3`#AQ$~&0F0W16wrXR=c3jPMsswG8C)HuP#2`)`j|piIJ3*^$H|p|G?ob z9cr{z@>Z@;9^KP|ipTeHUVi66I;`?EU7oi=UOglwOAPL+j6`>6k>HquAJ^;=~GT_lv!ga{~Gu#S(?yiu>_NUFN5S)+uO1>nvX0v1b3!< zathw^q+QXh5GT87v*x*ni2d2M^peIhX38iRc{Dw8B4R~_5jR4AajHR3WqN8>OxOH~ zoK8e|8voge_rw~$8s8WNRGmc_P^+sU_D*3hFJqNT6LqdW*dI003;;I-YbFH73*xT} zPOTsvOy&HU6_g_lFU09v%K=ju%N$d+SKMN-7M~KXMbgoUFf?7Ld*i=fQk?fjUGM|* zU8`t1*ySaf(BvB*^N>+V_Q5`{rD%Oj?kP>sPqz_C3k&qyERrCzDI6y7G??C zc1v+?wWrBJ8iM&>4k)0oI~Pl?L1(#0cN^AK0Q60Hi4t~%RnpS9yH|ZwQVFX-ARDXD zL9;XW8EqbZhd`(nY_Ln53G=2{ z%i3DoFSFQ0ws_1zr*V9YsC|~HLoS|bv;Ic0vHM8}w??&y{tkf-+M+n}IORT@8CLvm zFMXHeh!sY2ayk}HIK($35Tqet@tm0+6m*l)jrAd@A2!LmdQ@;re(b};fr^)L;wciX z0W5+?z!2es4Jv4k3~yaV9mmgl2S%tdF)C3}(%7hViy>oOYT&jrzSG!G1MK zTH$TT;0ZP3w(TO>eezxorp+I!bptm8yNBZS0q{33_SD?enTuSkX?20YnYulOGjO zQyZDLHH^+rnwoSIw;fp0QmR9Ln*wYIha|wK`m>}+wsiNT|5Q?H{XI@t zkp8J6r>R{67l~m_eqGP5(w@&NcdF5N*~_a9H~w+&%si#SXmK7F7}dS>C$!1iqe;efi}t%Os>`ny-xEbaj>VGiAKL3jAvx0a2BZs!n&%U+XyY} zm0dhPMs~aa2lX((^^l6A4vQBYHuS0Nwx>r5dA8JEbaC`LQfWE$MSrPFw)88!|C{MF zN>bQLO!1e{53!0sotwW_4V<#AH1TAijJ!7EH(6@B&~L>=W)-x!v*V{wjnYnwv*2nP zuobid@kA1zdp*vR)})i8AtY!4w1!(x7xd4Mu0uX#sEe?GGRa;|r#-5FS~{?G}i5YGqiW0dRNHN7c3z zU|D$N9PvCNM+IjV9+K8-;w>bQubTr6)JcowxkF=zQaZ_@?+;op2(SGw=(lHNZqg+N zk7c1(?$=8%#JtfW`2q>Ytmg|5Foc)MX}lczkUA+j<+4HJyEcsaC9^lz*rzZW`0I|X zYrIWs@Ac?rIDJSPwn|AS!SXW^YQc>QQjjSFZW?JcQTz)2zN5Q7!_hJY2sAMSy&p_7 zJ~FW)7x1tc4?vR*G@54sOX`tNpy4gg?T&~lQg2~%N(c0@>HV{RMfwEV03zPS*QI^T zX+Nwy`uQ9aUuqzuJi0-O$7o(i3!Ek8IW4~Gf}+vG!vHNJyBntAr_^S@NRUv-;CmL% zg96@c(;f7Z4_q#yl*Vi(${UJJ%y&QT$E(i4kY9M)SrkQWr-q_wR(*Sskctz$E_%PM zvH}H=4Z{j0iD#|%+28^5^ zdGH{D_5)OH_Y+MwsDL7a;+nD_&?}bRc#>drWyZZ0Lu@^&n7@TC;G14#%YCYBH<#h} z>ycV!adzYkkPY74GDh*J3fZ7ZskFjWm1rR{%nkx7l1F zpEy?YYZEVu?uwPllT$qW+A@Zzf|5L)<(TlUgFs{ zu(${991q@Rp;5>;3pg>mSX)T0lH673; zgY`S~p`0kjP$?)Vt+ncJZnX%pw_v7x(SBwTv&RJz9j5PKwMsfN2Djhu4t<|ZejT1h`BIoYIdYsCeN02|?Z0;xAuCfLpprAA@W zt#p=cx@S3>PoYxl7CT+V`|*Tpk;QBgk*MZn8Unfw-ck1vf$BhxrM$4w{A%}b{lRF< z6ErRm4fJS^L70@g4vj11{4wWX3J@P?N-~KN30+bGYn?lJx|Oz(hK1-Y`*j~E`^r%y zV`ZSB0H*|O&SB=7@$KF6zyOd=Ju|)-*};5pZ~mKTIgTM3%-gqvYBT5dxaqerSA%Vp zk3y}UcF;=gpEz$G=P6bR4+A1RhIQ6`%2(0-HO$boUV%J`K{)bp<$RMfQ{TquB7EIG z39*AMa-YIOk*4wKqOBM9Tcc+HCO4W%CG647Is+=u>Fhx=B-}(`E+a4EC<~r7U|okr zi6kt=XH_1GYY=@cC^v%apQljAt~`jAujxWL$A_Gh8XGsI>Ek9Bc{pT9;6G0CKl;}D z_$Vmn;KjO^EUeC|&=%6Cgu&uuF6uLf-AQMk-GteJVd^q!#_rOnHc#_CgsovRiPc#q z0c&JTymkf+hrY*|>8bT8+TDo7nZf}GZ7C;~x)-aeC|;$w|LG5F?aur$G;9VGV9-jq z0DRq}nzO<;3Om=xlJ|gZiP-^Kj^PG`4NE;_)8Ehkz7rXH1Sc#2C|ZT&i}Apqk;|q~ zQ5}b3tUZsqfVC-;Q|wxU4ELTC96ewaD;FjCG~%EGb-74i3)eoeqjGxC8eB%A+BiY~ zu(ZPoE$PUT8pPxgbaVMw#4RB>bzj8l!P;|#Z}oQ?&kS;S^47j{P7E!M?gd zhM?9T)eVDT#`HmiOQiltZJ3(C?V&N$iBk8T(z?iBxSD?v`fscNufg3^CUN#c7?BIx zL`YK*+1dlY8ITCQirq1_K{YhC5JweBP4cBKC-E#QmnILoFyqAqK6Mp-*wUQfbIb67 zep9d4uXLjz-g>GdaBsdn$o|EwFk3Q%f}{vw9!k7Q)gsyX2=uwU*Hl zpnk7z<&C72qWJvSI4{vOT0--uR;4F7U~ZM-C$kPJB02q+ti~hattJDI23x{M*y`zc z>z~gUY}`1WntHc7(6GDaAUuInB?%vD(^8vKy+||X*+;x-|0JYPOqK{%pfKHd>%U|0 zS7M6WL&`tF`NzqGzkxK$ZYFjkihU|Vi84V|CH(5P0V5H{>-RBRG_}UW<>4FbhV@2-*Y@)^I`~Ajr)$L zT8`KW1wel6l`3zs=3?>4^~5%qsa-&-I%|k@99f*Sp&~%rxf?y{Q1&*`lbRcO<#+7?p-qivG_Z2^`(wWBuj45|raquD<3NeR1V?zFqj*(X*968pyCT zPp995jt_Gq#HKTQzQZmE@BN*?buum_zC}>}cgkPx5du@hV%+nGp!k#goBbRaQ}^VI zb%UmGR4E>qwM@k6a1^qzx{*5ZVQ~RBbY*C-%dosJu#jB`SE63W2Sd~We{XX|B@92P zYguK>E(bJ=(E^`dcO?lf&w%;2T7$Qe_%ko|n!?UO7T0{+tFbC}uptfrhW0&6H5f^R zl1LhOvXe<(hT^HFc9dvTg@k$M1uqqIi?251vvRHmK!N%h8bYz-WXgB>DJj4Yy$db{z`JFRCNc6!RWOUvF^vvuM5BOSYa)iWDf5S;;ytj!o+vM=M`^5u6-mgk z6q07xH!ot=p7A{=gmW#g(KWy{M=fsPJj@)9NFej-6nsldI4^4zrTVi4qzE`Tc_M@% zyQn!XpdXqNZHEsjl6%!_pwr0+y~1`%Z0$uL3Dqr1z>V)l!K%0WKJf(aj`^kUZw~1h z*o5EnQ?0IoXXl_+ZXqWwEN6=cB=qNhpj`MDf#zTk(FCA(xXCtdhhmMqzw^1m6qwi7 zhO#h27n$X6Ka_`sF)O2S7o)ZW)2Mi0(4YPv=_}(t)DW)Vue%FJ5cx)d zM+~cgO>V1!*^B63?b11*AZVlL{)aOQblOP~1lkZ(>Fe*Ch4l!whAR(Z+~&pd1=!=Flxad&IE(9Y=|*Y z>{WYIa#?A=x;FbHnnql6=z0{p(a&~Sjp6CA)!DqGyEbou@(Dl@ys{^6m{01vkp0YC zoj7_j5%OzoZ!=&o3hGn4g7DqY_{wps8nVcAC|w@GRA>7gwSV2%b;+!PksAoBh5v*- zbbzD~WGDNuR8Th#&28oqua?!@Uis&Ka>n_xjNSR5lhrg?+B=7E>}{CU4>?9-?5<|g zYRwVKgMTb{_juJ`_3usm5@xpPncC(p`xag-Rs)&@`)rD8ygNk&MyVcZ^_;F_?4+&e z;4rCS+1&Z%Zo@!$8;$HvUQ}*${wL3Ne93j1%N4Z4sw1CdM7kJgFJSu!kCAg=ctRz5 z%LBSW>3x|Yxbmxs)o@`E=_F4!_vOL=Qri(@s@pfbjm}=7^OaWhI8A3$K9=XM~raZ)=tPfRgBKuYzlgVo(tA8nJyKBj>Ty9q{(yfX#g#CDnf_zk$JNBk)uaY(5EPUTermp{23S2+r^;LFH-{5RUQXalVJcMn@sB9i! zzlDD7E&$01x}@|OblwZ!vBvPdAgU8?F{R}KOXrke(NmfvG{KSUoS@%bbD|AB1SFjN zw;J4TG828gxLTkXC#G_;VKX6IaKTd!>}D+jm|y=UL+$<26pNtd<9AMa*Gt|qEpkgh z)b-)-zz`X1fD_AGppZ&Y@P_`dQZ-zw>Q$p4?IyC_2fld}2cSBKfs&$6W1H$iT? zMQ0H?&U-xB)i7>3Wa^KsE8-AlK`BoyIUdk)9Vz$t=SEaHMUqp?KQHuGQG388P70R_ zK+vef-z!gjGnptEigEOuixi12&(>-5Iq}XY=QMFf?dI(ET@J&e>yjC@PT-yQP83JZ zKt6&Iir|BB)Jcc;xSRfe-H_r1;_he(7fF?fb;B9nG>+37%_uko(EL;DEc@;dGyr`o z)g3kJC|Td1bH!#3&eIAq4^$euHQT4yydt0AVCZ@@(|;A6iC+Tfv7FWA1zEhYxFkv; ze$ayc^g}Zmmf#^rM6S(riw`87Kq16nhu(4*Bf;ASH<$Tro9VGP;kP(VF{)cQ!8~SH zkapMlT{hCS%Gjq=X1I&pTWMv4>;5)cHvGF^S^FLGFDKoz?T3)({Up^n{{O7>siduy zT;3%HKqU9&r%MC^k%rzy|AxG4uXb*yqE+_@VP4{Cpuyc(YDXJ4m ztQtJ$NH*h?&oFL7tdAqK;oJ^9W*KI`D4xL@U3fsGhU?3~Me->_>WayjH-ebb)66ui zz}78z!|A~`d5)GlQ)v*}Re&AaBiFYO*-xAKLKsylqq#?!sk-*^P%QAc9_Bb)!^^4} zd@Rsh=t5928<(SNrp57(gW#YMDYa*;AQ)K6I}n1OlfJTK#@wxk8b48V@-+3UbE)Y# zfYFwXH9Ly}-HoiSZH&pwwMDQM&{y>w2H?U~SQuCI-0ZrZ?IJ9uoJh>*hfWg$i!6K- zBN~oMLLWeTc(k(NzAuVhP9FM$Ai$5gaKzTD2zvDX*hyMQW<-VCVJ>8K=wqAf|$Ea)!ZW zfrD@OxAsGSMN?8Zvv@<12n*CQuj z_2q&#(N^jexy170VD2w3TO7IAn9sdfnM&8pD@mDd$_QJ8`(N~p*dwe#R~L!;`(dN9 zz0ncp2$hzH&#bcTc~Rf8`OKP^CHcqWd}~RxwEO6d#$qam&cF?zTyP{f#l#abqO9l$~X0i+MBii~cP2*hxg_-T$ z>+|N|C`}cmxEc=zIwA>!@S$9jlg$-SwCfdup4iVIKSt8ff_3Z7LM|De6eb3Rj)DGF zKOr~iIxybRmbOLzv?J0^FZF&-eom7vwR$bDa~m+oRGSWx#+he59P3v{X2-%N*%fTR zUq^r>3@0QLL{a7<-)@>4kCcE$e>a+kV&su;zSft?5Mb!5(Kz`zq5i&Bda5dpe3%GC{<{fO^#bgvwo zE+|)r4VIK1i2NYF*O!;XrBVF|Z*xJ(@&6sK3+xp^*dNWDQ|cqPUt3}Z!==RY<8nAj z1h%!G&;W`uD0{>Le{(-0!o9@b;(=Z|zQ!k@J>AvE(EJgv2Qs?>n#EJpiB&pGBrUaA zD?8sh@#UZW4hI^LW-cJ(biGV0lsIj<)N1ifb@ri^EB)ObRZWNAI{(kn6|wB@S-2bu zEk9M)O zXdkFee*KSBw;16*6k#sV{`8sNEaf$#(A2sWKD1vDq(bur9gZ6M>x?YAcKw3{e)E&a1u2+|!S7zACb>Drw=Pzw3R;qK1yOSMC zmdnuOCtyh#qT+}-;2Y0ax?P}i2A#cQ84d|D!CLnjb%^1=;erpYH>uPkl}y}O>44{4 znrHsYdkW{zQ3c?5?XHw2r|_U9mDJI?KYo4|r=ezJ zjA9%XxMje0n%v7RST~SL7EIF4vXngI!fxR&c~U{|&a!fva;To7BCEt@=+(~+_!9+{ zWQm4d#GI^es&RkKF!7{uTheKiwE-KF>*v{j+PlRm3yIXij3Y-)P^jwxW7oK~pujk9 z-@8U*-o8t143Z%;?w36qy1l-aCY?U#IoL(8-oFx(G)`NzC*KpV5Eo^Q*P69b`fZ}G^_ar1*(({Noe&%o># zYGn$e$I(fb@1L7EHUV6B^OLbXiD51-p+Hd-3T?@u1wFkbo>-FdOe zmk42L^(0ogwRE+DwhAmUsB?Hq(;J?0Ms=k|Nw;YxM=l_!H*MZNMD8KnUeyYAfRHTN z^Y92=$mtr{_!%m>cCuj?EFN?y!ml;#lCF`0Hg{<63`RBfo1W!-@FF5@@kNm}` zGLJYb$5rxQx`j8RgglTed(l2!W;0R+2N&;@o>y}Nl~H)ry+N11v7$vH$w z%i0+~?A0JHU10bO3pg<$$t`#RCu^W@g748?q=ex$36S{K+eovXjH&V{Ng@K?BhiU) z-jJf|zv_SiBG_am5w-MVz{-v1kr7xh89r}RNF2ybz&hdt`>N1cmBHx3208xjIa%}^ zm2Dhh-vzi*&r~TZ2HhhG2Z>DtIvo z%Mk8NuvrJ+JhZ`x3ZU5?kshUYD%l%dJMu~CZe9HWpNc~96T=O?UhJtf(uX=~kmBZ3 zCVgHj%A<1#do`MCL>e8qc$~HcaoTu=0%W&wogy3MIm~#k1Yi4epFBSDuv?{nAI`+$ z5~wQ%4_KCDgtqM2g$T-n>jkn|H4MiCAv!6(C!+6%?a3GTt(hHMZMAlP4Hny?7BwKi zl}&*G1_9RS!&`KL)H;^bu~=>PYXFY7;N0@=n9C-2Q9$fwm(it_)a079_AGY4+s#fh zSC<(9I}}3XtvPt;ZcQ0{0hjC?{lR6Idc>@gbw>Czo}z^y)weP(b9n^}BdMb{xcg`i z90b3hfRSY0PP;|bE9GKJw=C_+Ae{MPpR~Ae^2r$1$kAwFU%LmQ?8e?ieV>huG~4e- z!bp*~D!Vm#{|kLh`y)g?WqEV#*IHakg^L}I4TX1&0y5oKk5BsI>gh$fgm&ufNl{!< z*M6jJi!#TABX#SNA`%pk$(TvVy=Pw@ywrhyXcuJ-6T`W+d$FfDM%Cldivni?*1w#o!5K}0CY1bu6%fLrD71Gx1To1N6!SO zQfm>RRa8SDw@}$`=(>=v=k9S4vO|cBt!;;S|uFVLwJav5fUpAG@jHLx*HT5VvDm zN(&&qdzXh}|0m5$pD`YSu+$K?Y{pjv(3q60d0n3Fo!6jGoMlbU3cx0!&o!3imFs^V6PJl4u>mv9wz0dg zO6v^BFYdGKw0l20fs2|9^+J^w$C&~c_Sh!y8-FG6(AN+Jo2PF9!tivE-@Q*cf0#NX z7SU&iui-9-qKM?q3zlaC(U9#9D2<*OQyKLpa95wK=vqNPjqcFU&!WswaSUuuYVD`# z+^9>3+EMNLlD`1xZ}QI(l0x?_Tf?9}c-C9o1Ipvm#Y=!@8TnO)Z6k%oZm?~iOTVlp zuzz*;xYj%l%~gLYqx)BmzlpL6VHwvvUtf1AkHdH|-y`v%=uV`(A4$x;c2_hR)^Tvj zSM};uv_z47VKIia4X~hf-v~0D&|e;zj0WF|y##(-u80*v2rYA~0N~gbQ_!Nk#IJ>) zTaQ$060kLib|%E*7`txknrJG#r*sFE7?zre+VvBGvgM~G<_7O0dN7Rh)Cpk5C1_4K zL^@?Wa$=g3CSDoS|4?EIrL$7-Jz0~5No#L><&FAjUnxeZIM#N5;Ge<*`e1{A^2=<} z|HghB!WGZE#3Rw}m(m==266E)?ZEbhU;BmxjGkPU(jnuhZow$wS78ua-VK{8WqkmO zHNV;w=EJf}0{LG^8Z8sqoCquEpVa)hBU~9;U1=cH^K^N7_ZsBksCrIttm2vqsv|If zh#~8c;wNd&S3leC={o#_08>R=hq84%hbW3mGUJd>P+`6w4@2l2>_bR{s=*6{@V5Q= zVDn9qr-!6KwQCmNYOn8pD#gyA1|Y_gs~iJ&SO0LqY^}LMz@UfC+8ZTI4QwgH@h;O9 zG&grEvmQt1N9qx8=_X=OKZHE4UnKjCHRm1*^gf z>96#9eb@nb$VvHWyrS@=)upR9@_`K;cH_QY@zzBEkf`A+d z`R2Ynb5S99XL#{Z^7d-6a=;`vjmG7a%6Yao2dOlyILx2(@MpqmO63@ETWG;Y4pz|A zj5rC_y2U4l*t(#(Ug@oofm(q)n%2O6?9WccZB!-9Oc+jO#V_lSt~1$nm+CtJBoG%x zPLQ03u08-3NO~HeXtxoEc;Up83+cImQ0~YvzPkaS>Df$~*ZW_|-G?gxD4%H3Qu)|>GM;0mq zcbx-PMFXar8W~f2AzU+kQ;8*3U?ry^N{79W0sRzpXuVCvVx(D$w;Kx5P|Q)B87lGN zD~K!2?lDc*avK&0_7wldp4q1yRXjGytRU5yleVOruvVKd9H4yRcyxdyfNf{RB_b5k zKy5ICLP_kN=ii@A9tf|;D3R4Jzg$rFiy&I~DbVew2SwcQfK#?oXjBK5=L}Wwy~|^5 zQ~BI<%vxob_69GBU!T^4t3|d(qGHPYa>y(mNb`R*qLxovlDKewLjRvUiU@L)K&qHEXy5O!QjQBTg&g=QIPqYVf}GrR%km@zbtE`EUk7gEdA-5<$B&%a z>n)af@Isd&U~XY){0(5L8S7x%Tj$N<*Bo)~!?};fn?OE9{vyXR%m&4ElM`v3w(_3k z*On1TxbI9_FtqCiGM7H#KGnQ$-UP zy{+VSe6--TR|Y?rAO8cX9mWbel{k{aQN3YaR2kI8LHpPqyGbw2R5SR_$-z(yM(Onf z10E+3%$AnLN-@k)fhf}|NroFIaZ~*~u7thj*P3IhFL|HI2E*^9<1hK62N29nxz#(= zTtKh%U&l)`yFASb-hLMXxvw(}f75+$vH9d{GOozxeYp8#ETA~~fOMioMlY5H!tgmU zl8$7Yv8P&q)6iDHt z=#G?lE_`V6;dN$06l;G z!v_iU(h7PE>7Xj9$xTirqDM7`d488LP^%EFZ$o>DOEL0kUh}rw7DOmw$kvIGRgYr4 zlbT3y`q%%Yn;e*8zl6RNa)nW4z@7yIDDlA>P-P*BQ=1Z{RXsy>`ROJG9iG6Du@G1V z7tX-xXuli`{5=i_A?6$LdjB}(O70Rt_j3b1+xG|IIH#Q4X!hQ0zi)n`Whb1~hC#Np zLs#5#?K;E!fibf|+$nJ(N*a)ckz>~g3|%j_ZibGplE@T#3G102MQz3Lt*+!X%F`44i=%lYGBP|Cbf7rL zXpKA8n*2?*on9Z=ILN6&#V|XmBI>T9-%(`VzL~(wFk)YDL236;J|h1ap{rYzj@;bN z@zCAzOO|ccs$a3^EX!g(0rfNYI^|-(m;jR&^Pjq}o%H{Z{}+X7XFj7sCDLVPc2F2+smxTLe5#HPi=CZ)B%=&IzfvRTu91I& zWYT=X=5v`F1gd!(nKxD<@(*sYKLKEPtQ#yP+D1VL<+^7W)Z`eW$+bE;Hbr4p7Q0|= zg5c^AKmrAo?!n(*$*eQYPS~22Xyeq|CX5u+SsSjr9eL-T&(kMER84LtZk3 zUr5@4g7h6?#ocYiW-V^@eRsVPPT<~d8p_-{&G-Ae-^)Xl?d3(XFpv5_$|kJ~f@d<# zEK0I3fMl#d=}DwrN1Be8>2*gB{k7D>$P`jF4D=MvK2m{PsKa(fc;sN?QNro8^i}z# zx-A|-Vz@MK-BYoSeWBA}{mm4AJdP#n#06y!QP+xsSpZ%%@>pcAuj4)6*w`$45~sd$ zv#NIJxyqp{!+D(9WayM{ChAol4qUS6kH!f&6(A*{(6{2!*;$L;96~;`Iv{Xbf6#+$ zoI0r=n2Jd;^+~C|Ab=sf@_~7bTU*H6P5f)=oG%Wri+jIvacP}s!RsSMeyq7DsvJo$2pYw|8lu<%g(vmnn3hj zCZ&aMY|#tERY1DhH$1~La2;mYrvu6geIP@Lt~1wH7A|>SFfpXM(Fdxvyfk16<|YZ0 z5J+D2-;sRALd2uQaZ2#&(63_q+@KuijQ-J{1Z;~=n?g}hBdI!0boWVmN-C+Q4Ad0voAJ6_!xArF^FYfHiStz#KT5it76_Z4!uI!oN}D^HXrh@g z$jyH=u2-A z_lZN+J=s1s-FbKNSa^g_8r*ufti;$^lYzS)S7iEUwHP{25JErpielVLwi>$6A;KGWtbtbI6hUg+a!YjfuM8}YvDrv1;1A@Gv#AO#H(q~XhKCG} zk={)3r#yZ|8-A|A>CEi}RB)KV5K%6sg8IFgKTclIVduEfqH|pM|He}>A$JHT9y6oI zZXSN_=2E7IAJn2p(@MCpGqN>W2};baGyEaH7!xS-4NrpTgI*5MWyr%QzCQXGNu+wf zW27=Q6AC?Zr~AD$bca!S0&n@aO=ivP4f3(7bd7$UBJJ9gxWi| zt@Y(nVYaoj7<3xd0qlDWjRCc5pG2grW%|%mBJ>RFM%3DZt=X8eceEi%0~NPJ)C52? zK5do~*!1Bsf({x4Nc02#WQc5CPHDJ2iQq$h;(-pn&R;HZZAJEP7^aU|4AOq7b}`np z{{KaAAo0HU2O?SNRpl1Ee98Px;3JU9zLJiD%Z&>k`w4uB>i;@^f5WEMtLSX zazm^H8am$CGF`WYSmnLdP*#>>r0wan5?y(M)NeH;Qn)%?;J<|!|8q%k=j8WbjKFH8 zS?Q7oDkzDtlXRcqLF}-aMU}XL&_Me*1Yr7;9^KPfp`1J9#*cFRdIW$&@EDRM0}_fP zrpCsS;f13c^gcimzInp*tRG>eb(94a7?&;~dzkCBie^0dBpv9Wy37joQ z$+n}6u$Z(p#fyzaNqN$JD>$TsZa*W8uzLhP!*|4)dRUAXlO^n3JW0K*lpXSnI~{b> zLE<%w%Q5|HZ-ID`bkZY*IWk@C*^sQJtpTpwaZO+5KotHztZ-S{i1=KA2!4vV3ZjxA z*U_hUik-v}1&^)N>JJsT6GX7;Y7v!n3LP({jILBPfKlgIxnrACP84cgR}uN2s`r4| z`c4mEf=a5cp6Q;@7VAKjt$SoieqNK9py|31K7?^fbrQ)w zurj1uSfgCjILKRuY_7eDsnn2%V;;NX8!X7BO3A=KqMO)Ai(FmcBAnA8?+a?Wcp!*2 z%Qj&FnEmfi9#=I3E(Cgwl``F4?wc#5hM!5jskIVEcD;}lN&z-7UOlKO{l*Z$mw+yv zsldBp=CC8RDr`ZwVXV%D0D9jnmjs+OyO-7yaaGY)eo{smiOQv3!4slYsmM&l%du@e zZ-U0|kjIp6=n3$B?A{AB)CW**$O!GgjE1)}jNsFs(#||t8ZIjZb%^#KZDWMSbiJty zfQBCV5*M+2l?W@jT8-Ga|;P~sQ)-lOEGB}RkRFj6g z*VkVM&U8?osA_7sy;F1ZMP5)_Tzx4P-=Q+~a90;TAoQ)sFei-Wv|}nqtW<2Iv_y$K z2RVCJm;3-M7HBK`|zq5Ofju)cqm|t zl8KI{-KG%Vg^Wf;6(GWQtAAAH_;I@9Vf&!MmMZVfLAF(H;-=A+kFjThyxdPYZK_md zB7kWk1H)CYNAWdqqzt=_n3)>lh1Dvx7v@pkNziY22uV}d*gAzR&d9z1bda2|7irLs zOD7;4%}W1uG~Y@-z}LW7?giu5^=<-tL983H_)bsvxA=hlLTCXwD*fjF;@Ni_QllK;j1(Q3ft>xia`jSWk3lBBi3wx-`g&+ss2rpe0G)}T zhq)Bb#_3dlUUnezBsWLxXkDQMBg4J#=?^Ht^}KcCVx}CEPg=ABNBwGR=hBfU0qF5l zu>vAq=kP4p?ooYoxag+R^K|s-ozHffi{`=bH}w3kQ>?4HpP(`l|a7EH6g`w+EcwTMSnO_(0yXT zjuNDiea1-d6=Yw-Jw4&6tgatI9hn`$GjQ!cXiI4OE%eN4Ir1sAqEO7*+8;It4C2wl z+vnzPD3V2&K-}jJI{9vU*?At)VxD38Ru-EAE>OIAc35NKWiJ+@MBxC`HeP|Qgz_e_ zF2yPG!BcaIyyh;Kz^B$95y7uBnS|W5>6{u@n!}8;w+fnpq45B4-j2{tf3Gnb#%E)4 z1{DYf6)PPs4KeUlWs8Etmkcdhy>TnnAbv%-hHI2>J@p5>=PQ=t%c~4o^%w3+P*l)J zdW(fE!S0FMSyi<=3h)E>uusOU1npB=QE6%Ponwdw>JuC+$Q$eas@HUMe_(`j+Gheu z;(~rSds$XvL~HGXHaID2vIvWngh%}mYkUrq^jj7xQtsA0M`m0`!mcwk4ZAjn%e0K5 z>?(w>?ALtj1{q;oWISGgy_Y`fp;QpZX?)rg@6rE5>nZ~?T!+k9qN(#u&n`y!1S$Y2 zaP3Ag-9kgP83^ZNVDV)6QAaP(Eh`W_7;;HcIgv z41zfa1ylPjVL?Aq6wuJAsjZ~hG22_q?khX@=nA#^uGZ~S@|oqEiaP&zxuQ&#i)!aD zC{D7kV0915VHJQUHG;B~JNBfI`kckWw(5PN2BMsm-?SB#_3;kxk(yoldPgZZ2ur(mkFYlfBH+XMe zKL*{@^%2u>w#}3*ROaPNxIh<!G-bGfKcA>e z#LTH+pCwl8xga30kJ{~&J%u}x^{sgp-LHuOG^6oPR09T@y&>Nj=B>-jgj=Y2rXbkUP>RjeamwR#xG90i!f^6;ygw0wri(&jntzC zzS$|6ed&~b3GLY>*o+mJPX5gC_K339+`uuJw{r3*x+{e!pEn8J@pC^9#0ZzrXo&sk zT)GxtV8Ka(+h`}XvQ?afn{XaY!F$6b?v+M4)5{kzVst_)J{Kq^u?gaQ`4$@gak|cqJ{Y>ZU*emxw{Hf7yz8D3kH^s=NrS?BQ|5MT^epSfX)DK$?kkcitq9cK;ZX*rlqI=-pz z(FlIccXlH=ZD1`jE?zKna0X$u+#eG_puqaZB0>IX|2HyuMW~k347DqJK7vpT?#&%J z)iI2%zONqjvv>M$Pf&=O3R_tEDJ-#zdRY5w4P^L?aOiTUzCMLqslsPmb4%@V!gdtp zK)A@fDy4YMeDkR%esgD6q5uEB>ObZx9E@~-OjU58`+kx6ETJLAGbllGslq6CLjh-8 zilDHL6WEd2G-@nMzFHCmlt^fJu`z?1jIR(wJt=QFu08_6j^LN;G8q5N)5Af?s;K{R z@Y(%I;nBp$lEm6Lw1S&8tew^~yC1u(y(l;2J-b;Qp+_%)QwPb9=vf>7-jv-+C&e$C zaudt1tdd=3OqZ52erjb_EvsfSt{|5JoC6)>OzdGY6vrr{NM_3c9!tmEmdnD&lqzGw zBTxG?Un+j&L{M|-7sdi?#?X(Ewrhd8-?(rsjGlN6e=e#)i}+&SDxG6?z+7>ehI2Ao z4;ynWlr8R3LEaZBHUr)n2Yq+ys&zIP&{(MjsKgo-j$EVCdu4^uapz@CUWMDeTEh1J z!n>|7pZpeMeG59sXVPI*V*ZcCCD>3>Xk;kWw$G(3V>dSjBo(@@0ta0Ksy~SMGadzr z8@>B~sp#Uj3mtLf4M~|7N5FXoD(i@#PataGaQNpgt;; zJC3gJO=>V}C3si(24DejGo<;|zb%~Ydq3}@v4z99k%T$;7*`zUZ$Kv)jvOnc!4$i) zx|^Qh*PuXLfhyWyfpgLkw+tsEKjS?$e`C%vaRn6;xK14~anD7)nx*3#p$ULGHbw^= z87PRS=m1^po&EtWgj&alCSqNvwa6w-WrNMpFkvH~d06)W%Q2t$@?%N3{+G)^^Wb&kg1fc1yyvti2S;YQwm@ zKj;oGD6~SFb=mZ4eBZHdQuC~9O5oAK#4pE?4w;)*`Abvn<|`T6{&rAdZ*w%QXb>QF zr_$}GY{0(;tE-bC2`?9JFWF)s{xhJ8$m%fGvmqVL8UX4B)Ps<`Ok-#aykGtuL=*vL>77YkP4_k0{4vTp6vXCB-kupX^Bh+mTJJi%Xkpk;YOd`c6V9xQ9 z!MPs49-8Uz!Blf00eX;y z`!ca9U~qwQaodKlhO2>&6(Mp`gk7PJvQP1by;oV9?=KCyUmMKuf#$omufXY$<`3-) zn4%43q*A4Tm_|L%fr=tby%#wK-hwKl;1Zqhr9nYE$3p;~Y|3{5db<>|Kc2*T)8O3G zD0CHw50dRTRV|{yJ8}<9)Gb{scI|a!o-4#GY8Q;Gcm$mb?NB1U?Gi3?8pIvNEg}(j zJD_R13{pDkZu1ZDDiccy^`#E@ zWu(d0ed4jc{taS&xFxjvw-K}2ceSkp+<;h34ZIn}@4Gx%fq4@~Zdm*w5ib@XSnTZ_RBI`4cMuM0T*9vTFwGSLy{NSg$` z(K!%E?T_y?W3;u3>dLL+PQfx~g$vO&O3GQi=#477*4gjpH?155Qh$2rYRqnJ$_Q z1r!DQCPPeO`(eR1&1$Rb!;HA-zYo3A~V)ady<@C9+#~V6+aM4vX&R2Qu6X{K3Dx9_hqewHh4gY=I0iw3N8aTN|BmM{kJea?V5lXH0|Q z$Rquvfg{#E((QXSuKc2*-9&Xn-EzB-2W+5p{@`=~H;#(5zmsH~`wD?1?_TV;D>A=? zqz=$Zt3Mb**qAUcHhe9Klx^g8zF^b%jsWl@d}?OO7D2E-a={12bBU~HN3hYLejSkY zTf$ct3uo`;n-lv?ecF)vYrx_UpXKn&+iPDqd)tDPqlU&%^B`da6MKfuk_;Hq5abN( z1X&zhz;`c*OSN{RZJqU12R#Z$rSkytIHR zfa3qyt_7sVYN}V48V%Eh8dGnyu75}_VHs-s7LzUGUR#CIorID+Fz=UIjWxJVEwp(* zyL`Kgr3n))$2`{25z&2b)7jzgeB%*Hi!=h-ivyh|ubfysMI%UEw2*gj^67+&c};9W6o#Tf?Yvnrr%kBg)pC`Dd3g z*7>9JjL=@9TrRUfv?3sH&7VEj=jqxl=_PjjJb#gkb_8C3b+ZMI2OH-eM0kLmLKRz6 zG$r%gf+Aq$EM{K{WUkw%12B+-%z6?1+?p~2npUO$HqEzGwA(A$P0sT`SjQ%he0p$W zhnsCZ9usil;kc|JPt~NN!Ko`lJoh`pFm8vjoOzu#do1gu)Y%)_({oegwVO&y5j)Hl za#$$@E$wPfbMIkEMGpUS$4vEWo=j^)Ih9s<0S6fQx<=RjqJ_Bax)u;Tyt4Eww+kPaDI;eU= zlRaP9D74tQ-cAQtMRqTiE#CMlj^-UvMN&G_1M%^h>*RWd-z03`Cq|&AAq5DdN`XoE zIQ|D+Nuww2CQT|zC@wcMzT+*93t#%(c56=x^0tWY>8+HLy~yz;ehb`${8W#g+KR-= zJW4Pwi`TeEgZP1I2pH`AaA&x)?H5Bk+=g~gA0qO!%V`&I>0zR?1C{dfnLEh#!ydEb zBs*6j2ZUN%BRiVFm&Nl6DI@bfSY?O~795!ebLSd^Xoyh*M{dVC#D|d!1#I`|?6BN< zeucvbslh0kz3%84`!^;~O~mjVcIj+_zRyrF#g$7!U~}`$-)SyWf(PrkYwwH|=w-f7 zJI(1hB&dhc+<{sVcWfhmyD?21rj|JK-qSQ!grEMeB4|nMergi?59Qaa2i-AQ24D`E z8HeBzi0AiZ4}3`>t{GmwYwFld=8i8(-;=I_^5lju3thFv_p-Y_2mdfcgkCK#HG<6I z3bCszc4!XEW7~);@Lp00N4ZH2b3Fw6a?mC99=cQ@j|y&wAFG881L;0DfDzw%*^=c` z*TdVYmv)Y}i(w|3!RuA*BJr6AHl3c`p)=iyYlb>UW6UHI|(^?d*COG^J$P zx`>n{+lcM?elN67xe-!#Au5eS7aNk^bvj=WBVji^r?R=(Ri`4lxc^yI<3D68mid|H zsA43^J^1dEOQ{Vlb(7gg^j=lNS8{ zAtVgN^YE9W28eEFB!vLA^Q69-f3{9~b67pVAi@7qqtPWIDB=V3#{)8?xLm~*NVWJ8 zksCIss>e*p9*f@XeVtjaq64sh6)`{pgm2vwI+6lu5vruY#%YXRlDR76nXZv!1yM7KT`KFG8_fqbY|zB^6cUM#rw<=ZYU?I-WBRG;p}sQJTMSGv z%GCSYc%J9!(E2^m*Tdh{KGwOz&Oax9QbCtGC48F609W-?Fz)>%Zh(UBdlxU1BA<*W zgknhit5#<;nEy8_occ8*g3vsRe@p!$w`IafDN@0t%>3Q-(%1;I47OWT57O9Q&t-W| zm+SU#)V0_h^O1s8jk>56)qi7Ktw4NB6mV1H$1f>%&Z^hqMLM1PT17Lsa9*2CVo+f2 zcJhH0;YYuvb=a224J(7ZjD8*B zr{Y*yWcuJqd#rOKy(GN{q!m^U2nO+`R}rg}f4rhf_|hB_d4B zYFSkVu}K8u7Qi;Ho9+pj^f7TXpJmlaoWg9;C>zm-R6u(D%f^>hs|DF3XbO&9@nl93 z49JtU56M6_OtS_&Jhtc_rdRQj;_D@W?@(awT#{z_0&?R4z5k2|pl5KcB55&oeu(0N zW|fB`ork7}JpGCRcJ<^Er?XS2K7dJ0W2#6S2Tz2{dIz2er{<2l<=YY@ zPZO7(E4LYCIGET-V=+|uBxhh$O;0CDz`dvbEbp8`nHB{7^Uiv)n7Q9k>Q_bv*%1w5 zPPDh^yq@${$xJqfEPEfI=A9e=Ix<23n5w2=ajW?FgRk( z#~C%moub%Q$z&uK&2i}s_4CwL8AQ>-<6ptFRwLE=i$YUUIi%;XCh0VO(GfbSPRXfR!yax3r_k?lgP4j9e=NU9C=>VtTs zffBQ97Skq{cMw#6kjx)(UHDGDs1u$EyF26kmO@#xZuK9fOl|1OMUn7frwtd?4{)GT zxAufc$F4$fzzE=@wkl=@mywaNs6vx0>vMFF~7fh*i)#=6^qC%&iBJD424s8({93uv{l<^&N@j!8CxyXYVySqrUAa$xXz|1fFVfJ-+;fRjy{s@ z0|I+^j|MH&Gy@Xgc|v&*fsX?f+5vQ5qG ze+_q>BaKQ!aY7UAzDq%4zA;NT8S5P_1x#2|!tYl~TLJ>%8NzQ} zX(TF(y6S3mE*sxb>?8ldvOJ#4oN+cqn2YYrxb5bil}$6ois;QNqbA(-=>|) zAht0_Xx^f49DcB^Fes;0@lcg^R@|`d+BB8T#6R2MF{Qea0SMO5+vGs4SGga_v#AyWmgWAZ)l^N)lmwo)WeP9-I65gDDo_V z*6PLksAuaU=f83!5Q?3GJeD(G6}q_21b`P1|<8Z2ia$+z%%pS?1CQt?0$7p&pAg9zjo*NRp# z23XN1v?Dx<>RV@Bpm^kUV|eBc)uohDc7BXJ-3g-pk0M?HsR#7+V754bcu{&`$jiKa zT^Urh779c=Dcq*cQn2N!yM)q6&N_oibGyxa6i1tLND!R!7M_g~m%PC+9}N2gKSZ6M z!M!X#=2{WyC6jRt9@f7IRjoJyNx-GhsAGfJpnA1@ zxWJHiB;>HB3)Tqpd)SJTmxu&XtRn=zQ8=xj<)9DaGA!#WemO!rJ}XE0ns*)DrEWn% z`*d4p{3>n3zh{p|xR|*?)YEy)9L0FV5bJg(j8>#qJM`nSw#8~lyzsZGU-uqGxMtw_ z68u+ryZjW*%eJ<5^nzLJ1JX;7N*X1>S=mYwR~u66(4bEMJSmNIw>WX9sNoXml`Bpl zU=~ip@6*lB3&cYGvqjhWF7}>C%Nn%+6jM&_lsuy&oc+5=q zGkZ$?2C3<0=kqi=P8qqXH;Fq2h{o`N^=EEZ9*(5A>B>we46n*bajafI_9oINAdflMDAQ8Sr z2Z^ELQj;c-?_-bTGh(OEM! z;m;juDtS`G?P#nC4=FT_6f(CKT+~+Ep0*v&IqYK3q^B$6sa*L!nM)0pMcB^nbd4e} z*SymRZFwgK74tA6nJ=-XygYY)2$;|nWine}0uu;&@`UXnJ~dy=fAQ}(iRouK%Rn%k zi##>)p^~CtU{s&yGs|*g#!@QdF#%=bLNjB{vH}`w|MCIRQc;SeOYaBm1ig6dU6>A` zU${c3u@Pd3kELo{1k=Z{Yk*?Dv0Vv{CXIx(%j`a>(5Dr550j_^Bh%QrvAsR32npj+ z4HtdEXXAE=1X>U|tFi+|0Cm0Y#CnVS+LW(=>9Y}<@u1P|=TpHgtA?*UKvJm+Z?h{DU%#O(#R}EnF{?7y= z;ZTS-BXM$&E$z4aOX1R6$(9iNl*+{$*@vezwD4(p3MYm}5K?K_Ss~$UcexU;F zg@uy*ej-gI^8yetyN!$Q z&u)+MMl39v36S==3a&IhcxV0iV#z`Abzkt;a=6|gmAk!vc6G-zBYmkJLZ;_B-&Y`4 zFZs{cI)6tjhKH?bN!+j97MC~=QK_=iTcXYlWNSF0${YYp&=7IUIH1b2hVBJA*QO<* zupl(D#Sc6)U+G^IQQ;0E)iQMCBIqh2F<SyLZCn`+4wcw` z4p;?OCBF&l(NB^cQHi>KX2?kvm?7(g5I_Iwd(?PfNrj&yz0%+@$&}Zhc2=&5+Xx*3(%9} z?MIj|>?vGXrAlYs9dTXY*g+P%cv0s4Z1>mNElW!tTYNJW8myGnRoJHjb`xdhw!nR1 zpEknK;=7&xtPlYM5RU#2=9pwYPSm7P<3Ow{b5NmmdyN2M1mnaf2WoQZP`u)Y2@v5~X*AEg(JlHdTBkziF$!kkh!|IZX3)#N)r<=G&MPRT>IRW7EU#FPF zGXkoyIVE#E6FB;yVR=mY=`r^Dl{04sdr1&XAQWdlcN)C;*Ex4@5RjMS7~_ki9u;?Y z5?G_3$F1Ab<5s+-O4CfMNl~LrZkU?28nrb2opoTb=19JUeGK4nTJ3h97u+QBp6bgL}w*cFR;xi25h{&`GyjFXA(j{Pj~ogGrb&TWK;cLG7r>h zUTF;-n};|2Qw~wi?Fp#thU~bK?+|GS;Zns?W$l)l_ZCVitGaA_x@@=wU97VLtfOf| zJ*&C5fRBW^EqoI42%K6EAx5(E`pIAnU35eL9=0pENfi9o5-DW*fE-sY} z@!Z2G3(B7;>W=&uZuq|y7NC_#38mjzi0&oUXZD+H?Petg2l=LYez({EEhm=TG9&Gn zOP?gN@FoXx`inSSV-yY>P>ndQ#QnU0D;duLEYgL` zR;CaK>9%F<D+;3QPOjuLpyvNn2K(AdMfR}o^4*I3vY5s(MJX|vx)Heqx6(PyLSXmW_T&O@5;h2+5+1%8mM zCs_*Ng5ZGiX2g3z6_;I4wM6uVr68W!0Nh^~WW#GN(RtWowUS!tKGuPp#qS0`oUg5dbP)ROLP#s9D5`{SXLd=(V#*2^i{XFn&h6%tE z*BEQ4P^e#Ao`XMG18}Z=YR)3!rw#%&6m18NbPx9dh@ApP+qD!8`Dzu^@_&wA12DfT zFs-SOE{go+&B7Y2fK;A24QnTNPLHcPV})jmnBvb)TNL`7`1TFoFl_sn%j&|1@M*RP zk{>Go#1Enl548!my{8wSHH)?HNqHl#V^pY5k~;zA>P|M!fguskpmmYc(Xn>_$C2|< zBmUM9!$m7%?tyI3a0cP%OTT!;q7duL%Nt-P$@;&rVovPzfH=VQX8 z8|$MW|GfIVAHonh|1$gXwyT(3aU#37p!xJn?JC9tWCZe-O=A{(@PTmtv4&CEfzb?? zh(988otBID)88pdV8(SMGYGjR;365rtb4f7?74~KC;>z5cPH_w3@Oe^lwy&Z79?JK z9*~1NXRPR6i-Qg2tnVd+)3DH33?D8V!}b`zg`FJ`iCr@2Vg}(s*OnW}NL141)Q6)# z75>k9N<`uuHq1Rp0y5lv`eAK+bM6OXSP2hJXw*CRT*6XEXe&Zo#>kiFjsC%om0kk} z^c}nR0PPr@?N&H^+b0ucZ1ha+m(8?i8+6UbdI~xKiRUr+_)YlZ)CVHNcA=M$3s}R> zFnZaSeLt}Cm6e0zKgyuRN7n3E)4kxC%bCE+Pb)PpX#})j?NB;1yja?lLlsql3|Oqm z%Alklu>pHSbB@l=DSE|NJa=MP#B{(;7)!w1NfEU0(o}5a1Tebc0tjDT+Qiz*Kxjv1 zZ*o;~Kd3X9E1y>IjTzh^%&Y_NWV}+!QQhQ`j+~RbiyiF%Hvj4l`xk9iYbG`kB zXdFv|QOzI|URK5;p5E;X2?#FhX=(j=r~rmjqe3 z9VF!-W2`B0y_|+BW~Qk&U28rKT&x{v$xFmnOFvhF17lto>2s)_YtlXTq%Zx!;ldVGz^Z%&&^hM z0)z3~Cwl=g;tD9=9$yLBCuB3FQ2AYq7PYM^$yzBG6@{D#|D1_y=eGGIHMPxIUh7}K zmWl*eE2qF#{o0(2gfR_9AOD#_Cokxz{mt0VEi-~DQn2%|zhQnclETeD#;(Lhb6NyO zYG*|kxY%i)IFdYCm#k!XcA+62rJp*6N92Mjh9*zWF9^036~;8m>ojq+HCN35thv%C z?G*S0#Y?&xL&SLB9&BY2=Aw9^8S@ z9C|GwHp9P)6XXGbF|)Cw`~ zO)IF53^M>T395ZMnD_yAgpc=O+`Kgi=y?*X3-Nfji+_~Ls322_DEPub)!U5q1ntAS zcI-`*z}=LM>Bh;Y+S>xQNx{bwfT5fdg;-!lJZH-pUo+qzYMVp)KPv1x{k{ur0!YZl z^O>C5xj`nsoGYrc69gkhJx_F$ge32(Sa|vzNGe(&FOkyv(P#IL0Av`ll|sl#+8=}w z6wW>A_2NDal^eG$Bcz9enl^C;xVh^d4j8cLlfdC#_-BU@17Y-<=yA;&m%8QWWIUqU zWBI&-iFL?c9BHB!QXlSVgI8>in}qY~p`qt2d>mU_^{N8I8w0_nXS+`E)*?Bv%0t&` zrLoYNtXI|nldS(#j=UPBM-S7bef$hn8u8{jYb-8^O~A@!tlPe82fNbibRkGfhtK(G z!69?vsYsi%_?u^2z=sx~ez{E}S6pHDfE*OHN4HWxIyY*8<4Y3t z@XYz5*P*rne_{HvyWLSh;6L?Z0Hv#NbU!$XGb>CRm+4WKFIE4)rx*(TBO5LvfW|RW z*Z;_|zY0z=mWX9TuW6X5auKO=zEHAVEmZ8A!jU^hmd^cL_-37BA`X4mp1l}`v?`Rf z0Z;<5bNrn+$hj8!uJ0lZL$)H>q$igQD1CfrerP1?0Sj&GHho+y>p8V76Pbi&!bXUe z5n8r0wM;ZfD>T`4g30EYYvK&B`+Q5A&us9@JY6RS=4X|A`pUpx}E9?;}9+ zp|9S{?euKyzr=;U7c%f;AE`amx7F`fD)Rc`Y2xteTfXqXcKfxtLmV>-=bS)^I%E7B-N}le2P`cqKzz1>_cid z_}HpN!UV|V63}_NTbZ3ey7?dycxNdXUEgl@$jBDSfF|x2D$agv#TKMIKU9Q-8LM5p zH|TLn2Oc=?nPJ}ZM?%Qaud5xm?Ac8&!=73OdiqJmFN|H~@yZ+^3)Cb%t8%vD71%G< z*+P&E2&>~W9kGy>%1*yYHeM$3ieaWz2mC4%ji+J4)RQWlJuZxcFix7f_At8A{naij z#4bvB#vrE)m5{Y%n^bD)a@XLN0uUz!| zRdOsBSV)2X5K^l)|AZOh2;?x59+Lbdu2U~5SAbQ9MX!9Y9&cwv;=vvNSZVbN9XJ-4 z{*Eg2-$df z={g+yMJg1C@kyhP+?j#%>irP9C>ssP!#Q1)H|CB)&;8LzTVCCQpkM@=*x_O_O{1s6 z{Ci179vt<@lX}{OJmZ9>;{lVMBop-Hsd)o&MH+oOXYt`J6#`4*<%e?uie6=69GJXr zrS*v8G)im*F!}8cXDG4Hq?GYGt=i&fl4o(!VUbG#{mAU;GPu@ZH~^6eI+=+r(|3lT zTr5YDQ=79=%tBL^Tf?CE>oFFhm^hibvxS|0s}bW$_Rr1gXDWxfalkf89Y^*@+l8=4 zd6JW1hr%psex~3rq(4&C4>Wh$5A@Ik9oq-*IKI7}kV|E@WHXlhhKL$J5R=&buxVTA zF(lDb4UI1W`B5yuqt8Z~^0|~lyp6}p@VV2I<3cBmIeA%w!XB)!3BPt@LOa;4bR;A0 z!Ot*MEvmToWNH?}JiEc-t7BF;Vad)`b{lIA5b#Uz!Ch7Hyl=X;hQMMmHA|Vum~t2y z#vjRf&em4_fk@*J20#9loqUSdw02C&`RhO1fv*^R>$>VF92~$WZOJrg#$^iuB{!mS zxXXNIZNBx=(;U$g-YsL+0mQOl#n*yyZ34g-fM<|CP1g3x#R*4a4mxPUAv4BRx#FcM zaMoHCL|*M*P@SAon8_r~_`uT{qWnNyHi-#DiaLIcPV39k=^8KX(dvqhRyP64)&8`t zS2>+?7fSChTFx@KA3N`FOzd zXYF{zX5lNQ2qr9HrzNxcLrR>nc|>?*M=*e%m-4yTS=K-2IK3J}x$Y^`itNyzoeA~h z{!J;(^%L<#8mdhD?NyKjX~g< zP$*Bj7n}X272_~TQF|67{>VYDg{OT=x3a~N(?hmN(^j8vBy&t551D4@`yt9Zgkf=mGk0)p2(w1$e+d2W=jP+8a5ur}jJ2zdNQh(`8Ru9*6 z9NH;%lZCT;|NRK7c?nuwn1BP&eG;W(#(rV#zr#nZ>*vZS+awe_+kd(_OO7*Ltd?dm zD@K|g3awGDi`sn3y+g-dPelS2&=DEfwD^2HCG zfzYa#ssBDEd0pZ-M;Ko7B;LU!0Gr6p-adia8U&LMrG1RyjEO)8BM7GO@{A6+JUbN| z^%BLkvk-APz`)b2?dC;Rz;$&?P8XeXTk#A)O9|1yTb}|7;oG86`lo!H(dhkDkzB}e zmn2X?^E|NS1|#Q-k=_M&*tbJY*p7b=*rGyQGa@qi@@n^~!i7Ljm9ub8zQ7By} z3WU6BVb|!40(Me&p*n3cs)}ptBy4>2^lsZON~Q%9Uxoeu$NNSw(?}onpfvrC0A=;* z!0+4~xQBZN$q4u@V)g-G~r? z&~@n0d2A8dZPc=TDwtip%@Ptw4CT9oIK&hNrC;YQ=Q%{B%=i?{82ZT+J*c#18-2|> zUdYPwh=t4;vH?;copizveFcs_-Y6p9FyEmU-(0{{_o}DxiGdc#FnhskLSY+75Ygm5`T;hMyrI02Wn%+S? z#l=iz3wNCc7yO3aKzFp;+&J6-ebNm3!6O+1holD|dTkFaGCxZG3bVHG-!e@DXWEMK zWIM?|A|e#X>vhz<3Pq41Qi2Nd)lIAj4W`)t)@(%&10A|=)uLX!AsKNIQIszFucU5G zN2CkXWic6Ga7*drIT!L3pWh zMu`_LZd;K$P0$1WTnX11sr#Y5){`HTf9EgQZ#^`&m6@Q5>x%3hoWLvtKB7#EYmJBB zk_JGLj|-*Ht&19Tnkc2=CwC$5=V(wu16(~wqQ`$QM*JN+oH{A&=BEX79Uon-Xlh^w z^(`W2}+pT|4z8-yA>yR*X@*&~?@s z+S5MTC+h~z`!tkD-@9G>(S8ZTRd@iG6%0SM$tbRZ0Dk;`@=@r31#QW4=LZUuW0ykn}SAHz$!&E&Orqh_V z5ch6hy1vK-PL4z%$@yAss1t*8_QdPy8XY!-qOx+AHG2m0bh)LmJA%Se*r?kCU>f;L zuaKytFWJ#Ws`;8>K!UPXwt8pVzwbo4!lQYWER(yddNa>r!kCN*O^K>KCr$9Ku@0mq z?=~N{Tv(A1~0cp&G+b-MHSuU)D~mSm;u_Rl%npNuJ(WR z+0%wC02IuE81zAuGsAx5g!DtVgI{=w4;-kaz^_NP$FCZ6q)M zp1_a;-w^%bLQK8g595XozX7FNnKK*)_xYMUs!I1?nTmIcl)~VE$Ot8o5^8$@;zH*u zC=VZ6uv8X!S~yKjhf6KKlct57yAvW-3O5NvP6L+MkY0N!RdQ~5Me7QD34?vjxg!l zEYh6qHFA$rc8Kn18IIFBbqiP`vN(h!9I;Xz^**e;j=v^mFB{uk;CYS#HhN-DQ+mS0 zvXAF&^)3IU!%ADX^Z#cf1~wd#g_BP_DW6CSL+l*Mr}YN}tE@bIW}^*I=6gv2x3~yf z@M4X-WG4!4;X|ZGkZz)6Iwa3HPjFiiVs(7xs_hM4?&rZ(X0nzOpycY=zv9|uc>^(3 zokAby`AsxU_rf}SV-|+AfVWe$!_y*Uu=4l!iu4OBW{w={}UxnFGZYK*%*tE(d;^Bl|--y6OJH#c&SI%9y{$l!FltqBh2FgUGZi{XwhqJqZEpX_@JvAB zZ7!rnA*ugE7}Y^jBo>bS5r&+0Ux^0zHZ_pz^wWtQ*@PvUJ|Xdu3Q61`yd2;F5YLMb zis88tyJbjA=)YV53AkxkeU&Y2<|1kxNR@Tw4+qQOC(1NCzOoh;YV2;;v!g-?XPAg= zotx*yniD<^^uX*;neAs+5*3*f7T?N1$IP6>2x(95ywp*b!a%TIhgFeTv>%9bt`}zI zc*TO&qyh*R?`Nt+91p5xi(?vt?&8l03nrr|F)zP-5`3zKvcOCOBDO!ll`sl)IPje2 zKauH18u8D(p1{vwn5jfwWK9bc38!F6`~8dGdf)J+Y;lU|3lP#;2FDG{UwM0q-cSKPh;NcxXwzq zU2hQebIl@k9sh1o*y6^FENaXZ8I71Z7W_TuWkrN-7ZoP;z%?u;R%`KMi3vYcTuQ^9 zPj>hV&;Ow+mgLKnOptc&Bd#e9i0Nhe!-rG!9OwC8YO^L`SEruN$BHTI$z~H}F;BR} z-Q-`#<$YpEC4BQbO*EsGw#=%0{0nKrRjVO8{>ZDmG~z%u=OLm4Ey?3{rFuA(c+|kj zzq50>Moh3`!6dUhmMWY81U^mQWO$1~dSg)I8cS9L>r}}zmgHLdHQI&i4YUX%bi$D# zS#Xx>@wEnEmo|XvXnEa}vgue6z%SO&Kyi8RL9ym$8z=j2Yx{;1@yd*Gs?XR@P;cgb z;rKW8mXZuX3lyl5z=oDblTtb`(ifR^U$TzHtnbU%#Eu-jofgy~pfdkP!6S3y9B&G3 zpUq-ByP-LqnpSRDPs*CTZ#I0aiC}<>X~QF==uQrMkauIN+ZPZN!ym;L$ivtw>-u$2 zDHF9HgGwmN!e5XkGnMct+wv&C0Q_pqBn06hYTA7TlQf%~K;%C`4)FLH(Nz>={VP$K zd>4jLlbzu)J`7xv*3tw9VEEU-YS47SF;@c5d0;gt*3Uvit@>mSU6qHl-YEUbC+K%3 z>Z|x)Uw9a;<;gELYu~yG1wkoc@5o(>$#T<$R4fMn1#iayAUO%${bfq5pFEiX+wL2z<5%HCI`3w=!PC_OuSegHrt=$SHzN`T6S|1_wJ|G zN`S?!viClVCb|k5ke~5SRxAH#EFZUmEz9`>y~>GY(m&rJnX1FP5dO%)t?-I#Sj)``SKuw!15!@C=@{QhXF$s|5avb<>`X4GsJmU zwBYo0qXrwNb0R|GfQR;+tQ3Q>;>c*shjx>;xWz6{nj0EeI330MJo=3@;O8X0H_~Aq zauth?4{%VIZ2yFG%xu;B5yU?cUJ&7y(V&Uw(qseupjxRgek1l{&LYVn+HV@S9H1)j z@-<70r6Fpz%JFjV5D=Z^%;MLjpxVnfZ@Ee%VtAlUjZT8>yGyR608UTSs^kBBo^v;k zqC`xmh-K!eS)W(|yk-p#yZwe8K{6B*HydF|lzxJ&4M37@QuM);&m$bP8aMeia?y~N z$zy*t^h58>xa*@YJ0Xx@l{}f3$BGQOhL`~09IVF!byUZU7ch*CPW7vmsn3jtZ$Xk~ zw~EYg#0^dbB*;G>(KFUOEg+NvvSyF7gcO>OZG_kqFmrFiso`|plhvS`JgB2D5^x46 zx1vynYt6$x2!SWTsa>WJsIs&CtiLJ6)sqAWpjRk?_4yG7HI2)QmGLZ4xNa9J{2-J} z<|%%5uL(=}&#sHn!9H@+^KiEA&&Ib>@3LsHTj~aKb2q_e!kgd*mQ+&>4j{QY@Jv5( zb38uJlhtS43JhY)skZUKa6FIa0@+q1mgu^mIhS%)Cs9k1_a=^3AK?x2YG4AMv6;g( zpoT!EoPmBax@|Xgu-=7M9Y!LPNqguBJF*<}8m<4kAVOn5XGS!ype0}TlZh*+%QWqE zE#^|Aazr3d0h8@MaG*9rDPD@G)7%MG@1EApK{uW=l4|ExrN>#`@ZaK$Lqs{!5ir4# zD{ZjU`>t&CGZxg)3~Y%A1E}B+$>{+bh{frACbfZQ3>A#G417h&kRYJFM`!1s+F{C- zEkAKJ?6-Le?s~cq7`|^%7nZ5fMF*OuGWjbL`JEz{=^I?Wkvlj#$qqojH1R-{azpx; zN}^_ce|9-(Qnz$efE_>S@MidQ+gPqU%_ugiWfRYWpq}M%)9f$TXG-3~zVI(7XZ`_! z0}tNo(yENT&pJq^$dV*GFmzlrE2yf<0AO%~d7V#l7id)^P?P=P6%YyN}oG zmSVr^h-XNMRq!aJQI%sR(dXfp^y`xvmekMH z`XXSvAHxLC|Ga;N=m2)mm_bZAKnQ&Qw8C^Aq>iQM3B{$UHpP}ns6?W%BuzOvJruCE zQb+ihyBa2WZ|bVZ-Dp$jz=pIIamnM$0%XhTBz#sWo6cTh(*{y-d5jb9WjgteZf{xc zV}b8(S1Rm(%+-qW6yiB_3*{$Ej~hVWkPQO-s)Z;`B6>=6Jb#MI#(LBIOMLzmul}|@ zcJygnOn0Tx8-}3-9N~=U7?r%Nf~6cyFiykMenJ$bbqWeJ>tH+4&feMg0aB-q1#0XM z5D0kA^#cRVC$f%D-+RWyNDMpHu(9A>-P>Vo*RNqLkRMliT#~)Mr2Xb$>og>qkbQz6 z_>^XL*&e%#pt_n^AQylh4np-qK(4tY^I4R>@tkGi6C5l=tVNbXn4SC9-)FUIt6uW$ zJR{I@WhCqGiJpiH28bidYt++RDcUy}-?iWEfvy|M-94WopAolz&6u*>svLTDXGBOK zT6Z~38N_!iZrmWO4poih2ckiY_}$1aLpuSgYlfC?Q;x`s1f5o+Jy+4}sL^hZo!k?@ zBM}pzmx_z6#-W^56deQ*U1<`qwKYHyd*lb1O$cNt-tmAisY&hE(#D8LCs~c2LeVKa zT|{O$%V#h+(9>;NG@Ovjae-2Y*_SpQ={o4G9@`s^g~ zxyakAS`WL;! zv8h;PfT!;n<8MN{1$!hv2&Pybn$+S9+LnfHb!SRiBzq@XjW&K_iKA)7*nAJYjDCFcI_+D106g9HgQ#UZjghlly{I zq)y@E#uMEcv85Q}eU^8FOoyen4$w zxEI;gyrbnCl{BNgoJCce$qxJB&8m6K2|~i!uO}!(uhDD&8Y@JY@Tg`vXgxDHKkjh9 zG#y-j1Q2*vS8zjhW(oMXr5|}47A3;4I^!5{3z2|zh&v(^g2Ixc%1Dz`)y3{-LgR6V zS*v%(nxcDJc89uA8Z8vgR#gK^@<(AR)H9n%CDmiX@!39sfKz!Nj~*_c-4Ax57&IIH z@8=%FDm4xK!1i?`1dZcpivF8`$(x^|A~LHPCyXYe9W4;{fgmOyz~DHcg`LNbrdbFKHg{}m zv!bLNv&gqphXP&1vRzk9JvIV{_~~n~A>5+R3sm=cv6Q~;fl&zbMJ)08< zq%l@_TyZEVg41I?VSf`KQoz%qZ@T+iK?O`R?1WQ6is+e#V@)Xu6gH3C1<|!tU=9jU zKgBFUlb}nHVZ!`Xy87r*!ck7&OCN#iM$ML4(F3K6kX7P_z9#mcaL>hHptVRbo^v|c zx9zpdO6>62q9@*t11FfwE=hRzTE<_V!is8ooZtC_WG`<@=7dTU`O`Pswc41>(h^S{ zH3m)bqk+-XvW!A`jzp#gs2(ECY``v3(@&Ypa#;92kE)+B;Z+5#7!cuo1#qY^R06=@ z$pL*Sy;m>>EoWyAg?y&Z*5itC%?2OTFJm286XO4+ei}LSZ<*(ByrO^qx$^?RF8sNq zNPTv0Lje00!XwZxTz1AYyOt;AW@N1NR6!iG_`Q7S$SWxUYl1d7k2XTOrI3JnsGW~0 zC}Z(*gTh#Y+o}f1vO(WlVQkAy(fp$scP*5ndCTN()^4W0Q8k$=gKyHZfLCKq2Ei(p z(T`=a4Ky{oRPm)qxO(X~oD`g=L!C=C6i>eQ(2Ch4VhmgTIt=NWU3|QK!QpwUlpM6^ zj41&E32QFRlyX-t)b(tFUpS)Zt5|0eR2E$lQv0R=tE2fRSK9Q-u7yst&@~AtQqEDPAx3`YEOtNHwPpN7p!QCnjeaw9Ly$t7NjU?LcKM{{=L`5m) z{DyzBazPcCIH|?TDMJednc=+5b4X5$E=6DFhR%o|Z&BgG z@Vv(YO(tUYRs6nH6*6ePP}>MZ&m{8-$b8mmXk*t8Zkk47oB8%H0pk6hpWzoU)HE`( ztq8QNX_)sX|Be#JYF%yQ?4uOdvNi}69CyHhMmPQWePgo!KvMmXh^F4PE1Q9-Je<3q zBeU|#IK*y3lSIASZs!jJpsVK)T53TOt1+``tp(exK^M!#_>0)FZha{%no|9!ht|ts zZs4`quW**?-|jHHB5ccV5ulprHPDZhix}yTWhXYZBP%OO-K}ZL6GL>HdeV-k(m~5j=>M?54I^DF#5cbEQTQHDBg`MDL@pKR(Aud=wu1 z3nAmSZNe%7e0`w1d@sH?dU%PU=GUrY%u0k9C@JPBR8&sWl=apDA=zpMk`xZFKvuthj7-a- zC22`Aci#m}*ANH|Nk=xGYNC`fWZ2YljnA&oP8UuV$H#)dy)ZeObc$%m1WDX{n1QUW zC=f|N)E(}1d`_7cfjH5MF)(ycQ!(0@G~-Yt;2&079Vkk>s6tOv;WF=z*O!gV2G8`Y zer6EgB|%ZE;d7M*>M}b?;&#+}7DiidB@f;T%Dp`zK@RQ`KcA0iJDX-G#?rN*5YGAo zea0h4euTcm6~uMw`E1KX;V)fXt+T8Odd;(2(4;C%;Y^_zqp=U3qW4MGiFK$t5$dGd;~jUH^B>8>HGzI0-S1t?{KoXqLeN&%kFuk z)LA|l4kuvOpa<#qM_Wg%nx^21l8)0iNE4#4q|2o*U#m^h+9Y_rGHAG-T5DOYN5sg! zPD!*k1(PrKJTq~aOb%HYe@}XkN#g1{!r?-Zbn6}woV0#=EM6O|MTK7F?D~h&%4$UC ztA*8^y}}MA66a=T=5f)LHAzn;=rL+ghNF0p$l-|w#o~s0eF947JiiPaPTvDOIJL=J zytF@6F$3cz?tlBP^GGT1Kbwpsu%A-W3Rin21-Bou^Q|Shk)H&GDF7rURQ&lDnrfIo zZE6MX_*`;hu|q4Wg*?q@noRzJAN*l`0NDZ>nk_5G@ABFICm*_EmmLL|uUmE8o9&@8 zQ7&{yVY8l|o^rZgVe|9F9oxq^RzJAHL4_cuf$fO2KVZfuVm2AcU@k!j$c}uTQn5vg zT|9%NDT_g9W5Ob6{ez$+p%@DtWjJfw@i+vupg+Vw9KIn|X??kQ6J>~_Mj3;(TpbDU z=oLKS<{X@6n%uH=$qp%_ElGEzzE7{0nIe(9g{wR<9uGtH9XKkmJ!rpXpt-urhi z7MNMroJaNi-UI}VH5w_<>iNN8QsVKs45jh00mkHjgBsh)IY{qXfQg@A=}Aoe-n~-` zQ#7l!)kMG2*`Bvy8zpm}u_A_W@lY)3j^D-_SDKYk`aC@@S|UuDjwOT$Ll3PM;KuW5 zd$J>E zIIYK{EOZQO+lp82%w)zuF53~%rv-7h^(6J$vb2YmhV7w~11bl7`qZp+;#Y{bSg5rq zF~;(?SkMBdE0xvHZQ9Z5D!3~d%XLKnLh!qghM%0{T1fP73kq1mHUfkqy8kX!QtXYu zRNm=Wg1d?CzvJ4{SN?&$s1v56dT?GWvX|74C*0ps1K2)%%CY&uQe05f3G}t6Ew^}q z?fva9*w=4a0q;Ip#8b;>7H|Luf((R+sQK99iYxyq2)HE>YwpgD!w?*5YVvP#ebDmK zyXya}>5O5k!fZXn6hlmZDT&KRDiM@pz@TR+TAn%ZWJAkH%jr(sPI==VA_AdxvW=nf zs15rbK2|P7U3MmUG9k z7tI7?{Ld`c@Lp|t5~up2vpc$SO1DC|*tkwG50@8`A@q=Xj2p*HOnY1^{Z)QD-J+Bp zG^E>=gegr#pakcdVansDdR-+l-zLP)BrCbyAQk|*xa3`HTJ*L6en#LcQd4phMm3iE zvUKQB-6tG5QB@*(C2t#_EV>)hxA^PboMAE!QdL*bzNq!$)(OAh0LDX->TfXu)$dLY zJIr*BW>g@q^W`GG<*9E_L@R;PG4r#CfWCoDTZ_w#^CQGvD9PTiM697$Y3{f3!rp~c zNT+h=`l*52ozY2DvytApeScofIVL%2E^;+O_THX~8cXEzj(=u4oubN0SvD6-ON03h zfxtEQ9X!Fj2!$2Szo3IOYPR!MKBloIC#$}E|3IsPqDkA>CNB(^vQfsYC?pfl$6JFb z-cqG^wg3M@RBn(fCpyZvFNhwxin-w8F;~*eRk;ijg^yXKXe9>;`VMZ@n>PJqYxnA6 zq}~*4>b7=p``p`f!tS94_`}gI$yi=;nmr4EDa!^zdj-&CfYGaRFYLfgPr%2(S@0e} z>a1G_vnLh>Zd_f$i$ZdW`4bCdMuQ{A0Xr|+D3#4oS3xCHanM$6lL4`^JwPGyVYV%m z{q8+PTGw9H@L@AtaFm?O_o1xg@RELpoom0w!N`EGn%J^oc`ufsqW%UC1e^|gDgz<# z_=WOUeZTG~Pan*^FPfJV6HyX>#BGLJk%$i&M}vVYmznQ}frx6Fn=|uA4Uzf?%R7ay zQ3_YIPV{~JU^K6Lu*NSO?g9=Tw@?yf3J^ozVkq^@aG(}Xvk9u;|1q?4x@k*bsmMrH zMU^LuM!z37$X(V$b8KY+h+fsrbF07w;*9w)+QPsYC^TxFf`_u;bkH;d^dZ>XRo04N z12-%a8Fph~4lF78T zI7b>ymGRf*s|mi^SoN|Non6PEJw(pjgt`0DRK8Z=we~GN)uWEcfkz`+X{Yx5Uo9e2 zKN$l?`qHHMoRF}o4lE}#-SlaD*>;Ij{IlHKn<RUvfc1vfMHgD{JhQI)yMYdZrS~z7k ztAR?9?9!a|v0#sUS|gZ*HcM$Af_Pz`zEVEVW6RXyz)h6)C_hIIk2Hr|WufKVCq)r5 zQjVWtY*iXzAXmjxoiF23_l6yfx^Qdp{_t371i<7JW=09|PF&{%$NdPIB@!ZxYUT9b z7g8iuY8sClZ&CroA1@>UA2+z?ur;6!8vd{Dq-yv?u6*n^?-g&@D+XIXAn7Vojep1Z z1Hw(g;M|+KN0WzFfh{~cSL~;zjTL%2pJ~v3(R4NAq>ke`QX=qnjkfs?&d_S=gb+!fDDX7%&y0OZgfiR_VMbwGZEKK3d-bQ&E&{ukDfQ*{<-xy1eLvo% zRNVk_>$y$r#zm~r3p{Ei`hg-Qd#>+?rzf0wfY(f;c41qU=Fag*jhO4yOXOO~34`yUnvnM@Ker z%7UmDB%H;lSE5E?v5djlK-cjiRF;mW1v*@iaQXA*7`bI!`rp1R8)b&Q^0>LQrC;U( zxm{x<4hQ+aQ-)86x41s0#WE$(xHN~gnkK^Q#eGw=FF4*^Z9*SMsCJ&%))7bW1-1!C zRp6K6;A~#Yzfmo5+(wnD+pE4)%R%)8dGiX=%s`&=4-X=^#|q=0T4u`piJOzc{0y-W zD50PJ)hVuakJ&mqGal#Wb{+zcxpR7edb&B&l-W<2OPAuRi{boEOVUHaUEBl|3Omh1M>9&JA1N&2)WEwp)fp6V*xFdnMazE$=&X&-rpE}P=7MW4h_Z7cu5~& zi13=QCMrU6FXbFl6wPUOQoJ-@9o>aT zM=s?HB?2dT!_>}G%C?TiI?Y4z8rQU~hsY`Kl%Ubn(QRE35=%3^&x0Pf#8M^4(>to?NzN{@b19WCWgU@TMofzs$qC+=t9D zWu$k;T`!ZAf?f$OxsfCFW!M^b&7(VSE`WDsYMzFqTuXzBp5s)4B+a;}ks(G@u)yC?sq zeHskMlc>IB@UTaXU6FbDB}j*e32!03HE;?W|9^5Urwom1ZS+01%ZBm|Juqio1P5X` zfLkcAR$+J!u6FyXcKU(v^fO3D_e95Iy%aepFp2uJj!zbz&xK>z37BdlXMX)al=L2z z+`+<9bHha>kRKVuYl0<^67DqLWIv>_b>&=>=nU_X}^|h4%lhiP3`YcpfHggsi0hk z4x9%q19g7!PwMxiR8hfG&^sVgi6F`?GXnZ)^i9a7X=oN4yIS&5ADS_cY#qOdbyjNX zLr(Q-NV7DaRRL}0K1i5ip_f#1^m^TiCIXP!$jg87o%)Bc^V7%k%ji}omsJB)X4i8; z(&X&Pw^K=&fe~o*bDYLcG35GLG`sn_*5r@!A4sC)kH)M-iz)OszfKdQ$naGmGfD?v z)2~}qG{;l(^^C#hx@_Fc?1|%b#gaW|aMh-XBLpSP&Z7=%R*bhtmNlmsKb#AQk=0Di zlyh7AmtfFKAPNRM=3S2v8(})F+au_NK?=I=jf*!?10NaYx&kkM=9W?UVA4e?YAzLF zhei}xr*d^hueNWdN4AKkZFcIot=H$hMW)SMR1s7BNudIxPAy_p+cD_S%WGgF>$GRG zs(#fuoOy66)5-1Vgyq~t(gw!_JS`^>@m@05enF(wv21?Uej8@rSFx;y<}K2iAs+5qvhP5wRsQ215*tV^M{XNX z@G;QpV)~bZUpN`=2#7O1EYP$)wcJ|HB;8fH=s=k`jRY@x=Jn_ync}z|uohJMe++5% zIY#SAKMV9$9U89azFDMfL%_afn|a-j-revp1l)t4dJCA{@o*u4$1lPx)Ok`gwGCnZ zc}U_rM%|i$QXExz4l@Abx2zcehvp3q@bY+GK*a+mr5OP~_b@qk{2W7S=0!=FRB<8b zY?+jhk8z=STNy(xjBh0i&&8Yx445ny(w{WzWkhrECHUAvkHb7jc7?Cjtv9NrtFVSS zpYEz%$F5?*Rt*h;Xc)OqO?t+rEOGf5yzFIwqfSMYSUvg}Bl*VH_AW)M@)_e_%6X(Q zXZ=wc#cIc%JAK!&t-)~{2i)L_RuhSr3C;`sr_FPrYY?+Ig9}EN^AS5NBG85Uq)l}j zW1{%Ai7L5)31D0aK%43Bd@S(njQz3416`z{4^CHnnQ+Em?65j6I00RN-mdHNl2Z$J z*+s^gc;tiXhI#8~I?t|~iT4shQmf>v0*`6GC-vU_P+(WTW`5XNAo!LZT{!8vOi2*y znHgAEl|QNJ=HP^$=}D3Yw7!5-+QnEa~$^bv<>xRc@C^N_rT_i zk@v;0@Wr`RgQMGJ2imLZZ%H}EB*Sh&5M3r*PRD?5vBpsziQp$yzh?8_K?Yphc@zfM zfSN3L#XKmmMjTeocp`(8%g`fR6z1D3&ZQ^2r;fGtH_(d9GnL{!G)e%cuImc`bhX*( zlQ%54j%ZXGo8TA>I{rwt53|bGNmwiT$n(|c4GL9(Q#IN`Av+9hCC8)kDOsOM#rQ^P z6gD1o!AFWVPJ&F(sr(WqJHGI7xK%{UlCDNTH83OluG^fKde(~+)wL$uS`^k0EwyO9FZT(C z&D9>_?IAIB4&|DJI=8c1DlW2!vc(hq2MqSo5aIARPML72t3d$&KLEh-n?)(KJl9ez zJ8!$Mzx0U47BQ3JF&Ig&`bcChAi#}VF@KEslbW@bYR~MH#RM`5RjwWN<|ws}#g!sp zP>!x!rQ^%Jx{7f7qM<{GEu-|(y4~#K$r-_8EWL{Jd}NXpwvOd!GU{=#$`f@OCR?~Q zZIdLASHVYww6b2Ct?S$tlj_&rWOKvh2` zx4HZCGsO^$5VRMq*+6JQ*4^`FlHNp za5EEZQKpO3+5cP#@epNGN*%#unspItD(z0*&So(7s`?iR&vTx@)sWX`w!4!{K z4Qu(VuN38ji(Fh9B@jRll7xoTYZ>9_HJHz|t(tbuRY^8}O85LsBC%cD9)q1YES53W zhSbo(c~I+Q|5A4~5qz1ES}lmEBGacL1e~yRse!s6vp!(Zv{}CoP$OR__!%Iis6Oh0*gm4imww$oA z>xXy4bV$$T(wkkHGm@p)|yqcI4Y%w(j?66tBSQL?>p!|9WgvJwcJy~>#d}A z2g{Ml)EoU=55?dF+;7mtOmAWI1loygJpKYHyS-q(XU%(QWeW4O29*HFV!njw^%`E6 z3>@*>lUT7TV7*O3PaDAkXUOqZ!U%DfBrY23k4j`^hV-+Ke<}d&>SdOJ5wpE#u~k%u zQ9BRRQy!^OQux&qFB&L<9U+vRnxYZ9cy(eQmRv|;qdCB<-CXV9zMNmoaa0R`3fDZc zee;q2!K$VZZeZ0hayWonkyQPr{zvdt z`W#Dxq>`{_(QMV&FAjEW_r7UkH^RS!RmU~g11yERfV3Ri?*ay?hD%=wB(zSQROSYp z%F|G%gI129b=cz%rp39|vlQf%YCQrjfq}aE$_rz`s z9txRT8)>GN93CjX(J6_eI3f7=XCp_b+%W1Q_K9qCR{TJI@!1fT6K!$wdb$0oETCgT zJT=?>=TCkZSE8@unJ{3~z&QhR>kn!_u*q#c5YLt&m|q;QWH1BcyW`htIc}}XXgq~V z%0QTHV1;dc=UYJJ*0$DwL$ zk5YQ(H_AXt*ECPTIVTaXotIA%a^kshfcYW>8fP%4%}-7K2rBg8sK%0BicoPA4Q1S59kUgJI&xC1%|o&APFe_D?%vN_4u849A3!hPM48?qpRqkCKD7 z-<}kPqOW>4UFoMIf0M$3x%MmMD$Yr#F8oKJ|B^_O!CRYT7lQx%l1*{$ zQNLxVSCtsT4=mfChlove?7F-Lb&(miLMLx~2KyRMY~a5e^073-8cnHCf1D`H)Q`4X zI3kLJpTsL}*AST`cdi3LsqIxD>e|1-uN9^?PPHxdU2rc;6;Fi?m!${ybDw{V zN_y;#fquF}4aiCPw~MdWs+D;lJU|DB(;On&Ev7~hwv&}Yk-^?OZ^b>e&%~?B@^pIs zyCwcr)Fcp!f7a`v0B%cotdU`>YPLVtDg>A`M~qEn6!~57QF`+kzbbHg;td zxv?2J5#c_WrX_|Vky4i@lJCuW8N$DuW-q0%#R|1|HJ(IJlH2FMr*D?AJ{-GbqQ2NR zF)j-ZEKml&7FT)1xn9zU$z(PpydZkD>-1IMgN_0=IB{It$F*;$SbB_9_~OB5)R0g= zS0)7tr3qxYV)s=m`7>cK0Hkei0OvE`k>Sf!F(43GcZxYc5vF=KlbxSm7Z?q1VRm&7 zd^JML1!4}l80-zr2XV;7)W+2H+I~szCw5skm~hZB2R@Ry=$Z4aO?GJ~0(@o4Khl4_ zUXarts2<4wc-S6_8nu_0YGpocSfJjH2?a(_8EF3$|HO-YWPQH4p%a^jgYgfXi)(l< zUWNLbB?$Aa(O8fm#8GXn9@kEYz~0d#cWdpS#zQodV_fhP-DhknLLN;nMlhNV<(_u@s{pWSxb!LbCi;uVFz(lEDXGx9k+aVJm1KY=n~;}WtNX|tpZuuiaY-vwbbD$AnfhbgDw+mO z{>meEn@bs<=&$W6?SS#zCyKDAGQWlnMa%lhv5S6zRS65BMp|Q9z9B`h{-H9_R7Av~ zAh?0lr1N5`)1S{HB$l6`Q=0mIGb-i=Jb=ZsM-d>qZwZXzB;?4No8N6%wIl+{EVxwr zW>mWPYXBfYZJz-oJ6Q^u#XjOw0;%J%9Ta>ZNU%Pz7QJ|lf2*BAYrX<>yPi>11}oeu zNNlik!>c$FT3$elPs-oZ`Ob^n{9F5-9)kT?g=+HrI^tA|Q(er>S~tRLqZ@mXbbuY)KdFxX- z1LHgtBk1zmwh(J)P>iHSFhix6!QhXhpBN=XdH8}Y-6)K`sqF{19Pk3`8M|;)exqv{ zsfP?c-%uIdg&kRx6Ok$G(F2CJXUz{+(sZjQg>*uS)d-2=kW?rv~_uD%#dh^Tl zHTx1A#cr0elCgs!T*}-I;%=FGPQi}I!}6a%u?G3C9YB-YpwaA@ zovvgz3j>|vDgsKgn+3xY7u!`g8a;D%Op?xGt0uR3?P;+E5t<+7fluU#BiTS}Pg9ID zOfwm|EshfsYzJ69)%0Kwsv*U5AaH${i_Kd-Jbjn3z5o?G3ITNF+?oqT@qC5sVSe=J zMkA+OJPDmlO$fA)k9;6l25j?06mnY1=PN_spGBpW%^W9Jt<&fs(yURV2p|K3-+T>m zsG}y)oEHyx44oR{m-6ZyR1{GTm=e?n5Y<}zj$d{+}9(qiTnhr|KH>rsU`6H zAA14Nib`=a!V57dhhJsUn}6saP^2O31jouP>i8O=P6Wi3;gO@vEf949^dHK~px7UQ ztMqPedJfo7e|mJY;@q!IYaVI)D_kP4mp>z_q@zhfmYqOQu-27$8>0{v5Agyu7@U}0 zT>{PZLm75xPlKT)uqT?>%rE?$xN^mh&N8>IIFs5=?7QEbsKA52o&3pYc%Ly) zVpyBT3lXT6O!z@XtALM4db~eV?C{$By72e{HFM+$25=6)RbJ*YJ_v%i@wQT40R#In z{twS00TG9o!gFFYOAnv2gtp@BLfaKW1MHqZ480Q5reLI_y0^48w**_zlk;FW!pKWT zWov29!S+A#yICw_$~-)Z$a}R3AT4Qr1 zgsNErzXNfPZ4pSTPY;ifAh;cthX^i@5yh2f~f_oS!J6jHP4^E5&sh>7PWEt}b^!d}bvv)(u$70{ zuMl%_y{ZpCgQ8CT&^8&-E1hX0a5@L)4k|omVzS8{Ow(2#*DLqj!dnb54&Uh1x$AVc z6kBF&?8~wnGq}uP2&E{f=Ani7Z^W!IqkZ(~ya68^P0%3Q;_UQ)168k>V^rZr#)!d2 z!)+af$Uusg4;3E@3W3yMEFyA#nZc1lz3`H=9QW=*!QIE;fh2=6moRG1`m7w#){H}K zk#IHGs1>^^9n`h(>Krf_FN&CbmUduDG8{ok6b(s!8y`07c7c`aBnPNY&D2V<=9G+9 z==MjlI?mlVmV0UFS&xWU7!ICxIm&g^XhfY*1lyhy3Ijn|7{x=UV(f&r#Xt#q= zrNaI;I8);@sgUr9x0WKzI)m283|c1X76kf!bXbT$fWii?DQmnsGnR&xrtK-7mG+(E z{B&MsYr0peAAv!lUFtXu06GA(r(aDdngxOc_}C}_^<-HzgJg*g6I%F==*k@kF6>wp>dyJou~1VsxcY<(2F_;Nn_Sm&1hJ4a^=@^&_@6S%j6#RR1=`#QFVdG zKloi4CX(fJoH@sp&?zS_&}%$5Y}e}kKZfn9{^;Tel*9ef98&X%aMlMe_92%1eR5 z+_UY-ouOssm>!Te0x?#u#J>)+NmkGm3w~DT)JaA0!vd+R8N6MqZ@S^CP}#N3dCPQP zPoEVkyhB0W=vAK=Y4g|W!147CUncM@9(Ot#bhb6A0FGHjv=IyY7m+Ai&Rb;4RYX94 zusQ^`3ORPTZGFc(KL1>=C*@TFkWILhR>bksc0j4@EsVi>*SYdNLqKzJ34eCL^@;Z{ zHI|b#E&tIC&K!?BjM%Tn`_MM^Uzh(PDp|wAj1S(nGg5Vz) z;~1=SC%M{ls~8(IT*MUV>FWHPDFQ)7>5RqHYGe1q{*SFu!2J(*a93Q5fJ+8^%`g;&_(b6 z_#wDD5k43YfZ2}H25`O@>%sAZ79G&JIDoI9d_;JG^*%1T%Y9shC<0wQ{c=@ui zEx$iwThc6@;>|Cm!x93=* zWm!K=>9Ti}hHTZPi5+&TWCcw@=^mM0X(BN&5K1kN{AI3irU}kHokz@)M$uX~=3<5; zVy@+O6&i5>;6D;Df>Vqy6Sx#;Lg_mGcYs>^foKz-&z`?7(;W z;XHK5TIEu|dwg~5g6%Vx{Zx!8-FodJmcTV@4Acn2W?vq6XE=LW@y4AfJi@WtuYW9TbN5(*EsZxwMc z|7BwBUfOOMEMJby`35f4j4J2eexpFC)&3zQi#}Ps52|!rCs;&W3Or5N!Qi<2@C^ zNnGFC0{KpWv|xobM#}YM!v*59lrD|}8B}f)HIBdror@kdmW9k(Q^%5?u@Yl=7t|5e z<87#5%U>1A5gvxFdH%`iIarEH)^_}dK7_Q&_w)^!!;bH+Rm&2jT`!+eQr1x!IzA>L zp6E3biRA3OjBQ4CE+b=0WcqrStNh&jNc(;Ytk^p;^vGu3Ii*lc|AQ{J0is5YU|9GC zKs^ZVL2rs&$7Xj)$d{s(o1k41k)#VZsA=$V!#;dM@b)48k!)TC+1*2qK7C03Y^cI) z`WKOt4%mSXbhdDf9NXiS%P_n$Q6;a)k!d_VuKLtiYkPc9U)O4duw?3Mf9)?l&ZPx6uebQRdsMVkbZ;X?QT-QGI;*G>Ln< z@k&HDd%=n-vL;~~sU!jaTleos+%zk#suYyAu^+*A=xdaeH20O*wFf81U&!rGvMY61 z(w?S&CefpKsmU_^2@oXQJQMJdvDtwSIp5EImuUFryscw|0UamG3G-_N!;*>ePk*Pj zB7lJYZE+&Zb2*8Rdf6@geE(HcF&;RkzcWcCJ`>ZEmIphMXwQ;%GNGfhKiRF<5aX^D z_-#Y&)wTskFMK+7f^NhBUD{o?-8QnfJhHV&%g9rr3icC>TvV>5AbZFHz7wRi$|3wb z90bB6_HJG_tSiy2$tUru23P%{G3P@a>h##I-%KYzSV{RqoP!s7g2A+Zu^ij90lO3N zsnZb*17RnsQ9f9i%vUwxHBZ+_02vVPX-w^;bF4{bq`T`M#(TmK;9W%GtoZ=35-&`S z0osv+L3!fh>W>^u)oI+*Nk-1V*^D}CfDKK_yeisuXIc)yYC;+!jC2FYmM)Ot9kiHu zr0!^Z@eQt_7UQ4AHX;&9Fp7=WH0uHoX7a%;eF#!(Y(abqgx1GV7 z(j)C;rqNylOjKH1+`;$;zv<-mf!roraUk(M<-#5{z$T&;fT%r!JKWXNDMlj5^aYZ7 zaq@q+qsJviDJ2Fvr8loxKh9d4FD((c9mwmXrs*`CO3muL?k_YgO7ZFS-9LE@0lEDpvt@rul~uR=ukxq zUZ+L5lWe0pM0bUf9W866X_*(p_cavP@fJ@NwVj4QBB1k+<=$M9N=s`J7tfjRHI95wM?8gb2#_infUN z%cIm<0zx*#1*6zqRzfcpD~)&@Rdfrvx~OQ3j4zwkp! zE&^I@y#bxKIUJ;Uy00foh+fZOv7^#gNN)UHo_sXNkx3Yu>O0M*AVCvm@^Zq$uEU4U?;TI^;irK4&NA#_*SN-SCn_71FeMzeUSt1T z?&BWhe-PCUblaX9Rl#uLOa>K>j=tC>3XbM)TXw@7E+#xTD;=Qlof1LLE|CkpGrR`M zlKQ4RIog7Hl0SSGUEh&RF==&;PUJo)6p!SBk>-8p1`WR32g4&8mNhD8FXK^|;VKCa z{+7)!BW{bzlB85W{R#gdL>kOS>*B`)LYj>CU*sPz)f{w1C)CxMJbP{SUh#Q+0`F`n zXyfTwrUbW;+h_!EfSgS9+%W@m2|~kEJ>6zzBo4F;zn-);x?X(S?hH3m6cro=y79PO zrd-HU2Ft|s5)?(GzqFWYRuvj&?f2P@592_PeJ+*qWu#gawb`!sedgDjPB?G!eeK`l)o_>0utZAu#tWL1%%<^K2`e!{eU5 z=YhopZpU(HJ)LA4AoV#Tfx^7f&iPcc6GXM~zKZi@)eRCl(0kMk&RTb^wjQ9udAsx$ zmQtYr-es2@*$U-(ZjI(_=}^N-IR7PN{MsZAg|^a0H_}sVsIjPUgO;3?W{b({Pb)B! zymp0uWig)`|AsWtMqfhjho#^jeV_rYd9gt?8sBxk_A82{gTCZeP>5+bfchEHv-D5v zCI@+H)GFpvsu7tB+MsfBRRTYr!?`j%y_#PZ$_$WY&A;fddX>$wUzLy2u>ZrF)N+0H zO^O1GU&1nQOg#tLdupHg+f*0i_L>Jk#`{+M{v^S6DfX}D!gj-@QqH?GeM-q7VAchi z`=wI82_ZlCFlBVDAm)ZQzzLS~8m_}fh|)I|>LG871oe0A3IJQuo#%+H!i-i!n@rSK z-)!arhIv#~mZmdDBZ9t*|CPZrnHEH+i@pqo6;={E%i91yxkd(UwN%}eDH{8$tbY6U z~OoB5Fc~kDryKTiX5+-P7lVgCv+k_Qe#1xEej)UED#b5~4 zRUel(dymVbM@u9-xqFVZgGqg?E9|bSM7MB!;vNubR3P3`L zwlLJ&72U9oWH^G*XYqN-Yf3Z~2IQafPT<=uP`rQQut2O+CESgRq-1*-E^e#X7j8n8 zk92|Ezpe~U0$)v{GAzZ&1Qg&brDM65#(RCOX||cH400RgTImO(21A#_>uf5t7Qr&3 z>TDCNG(bV1GL`?am)0yB#d10Z1C@7G_a(BQtCY2TK6Y#! zF+9JEi>sPK*m%5;-L4QX`H`>}P_3MExB-{(y`7@3eX4_8Os{NZ9~-42@-X$!v!mnL zhl@UHeo;OI_+!v@%_UmbzlRE*Is;|-!C$MCEVecpg2@1zvEn3o`G~$Tg~}7{kf0tjS?d zj!*){O?YsB^w7*@O;8wd0ZmG zdf#1Wf#OBeEfHR?IagB~xC*9<2=X=&?`W=ubhwux?G-MxzFbrs_7l+h7Q0RdD{jiztbN?x2o?I7C!FF9?eO+xBB`t zY@+fyvmOZtZxWHkMX^3uS}7S`&4L_`T&gsdh{3(kD%!~=;{#Xk>wFY^XRJ(o%cqq7 zTGIRB2rF3*%7B`?S6`GdrvI;d5TRu19g zaoDI-MS^R)@O*`>*JzY>ye86o;Acpnf7pFqh3oD747f#VOM%k;{;!~z=L`WCun?^^ zjyi*?(C#8v-%l%fC{B1^`l|L0&3A7?gTAcF;I29eS*Jn~KtiXLImph)9vqkFCWGUp z7#z{a(Eeg&?Ilm6FyyKCS42)eJv2$}C_3N|cXL#I%*5p~1oQY6Wf(Iq)d42h|RIY>-8Kz8xWjHCs(}$c8b1=WARcf{QcM-WRz&4FtQKwb46L|^Wfa&E!Y6z~pCN~SE z9CGi(x7*#AG%9+IsQRj*+-$u4L@!e5uJUXtYbZGH2zFlP!fGCjefaiO1*$2W8TQew zzqlL6U1D7?@t9D)bHik(FTIy}O7W={_-$opNsFqn4`htHo%i}q6kpti71|%%rN~}E zYQR__TlP{X4%M4QcgT^^G>-&isVLU3SbNE&X?ogMDl}7TVWGrlrk%>Y+#TOl%lON4 zJ(g{3z_3I9|5*f&irCKlmOf9Hh8gM#`4kiGj;3 z_(ixe{<-yn=1f#pl*{}C)LfZmstc`b0MHrzbiR->z}#JWkoyGX?+j9$S?HqH`HnkY zn0%;zg>prTR@ptt$JR@#D0~#A0KtWI36hQMUO#&FDmEk289TgpI{CNc{Jbjw>;Nz5 z_kes9nU0kLG&z<$7N{A5E($zkxN@eNO~+C4X5uy=_t_Jvi(_SHX*7o6(c2djJ?HzR zqoY^@cu(IZnhkwU>oL04SYEVTkYH-rA{SzSaNjyC;$psJmy7Ts8Ue?u0oQq9e&ifk zFK}slOGCq~mA`3*Ll!t}HyrpLdg&e2sGd$?*KMPsssggA80bt^uA=~OchpN(xPbSD zN1{VDWSP_5h#D4asp~z(ZE>|xmxdw?yi+Fk{|%dxcEQ`U<0TzPYMyHAzyyte6cCO_QsJqvVkvseC79hlkH@p=xaq#Xrr^u%+gMjlcS7{96+#z{i-)Au#>Y4DqW$iE573GPdaWd;Mk$hnjoLRZ(nNT{8jZSG(cTTmi%Ni*!8`MJ3}ZIX2T# z7_FG|HlcZ5nc6Po+Fq=wjh_ba7_)jF%mcR#xwM0KKc<%?)oKEwR7P)w-~#tJ!0+Iq z$thW#pFdfK&X*@tJ*gd&H*k=zx(EEKkK| zP4zck;3p2ag=?p%l7@;oa5{7*#W@Kr2I)|9Qm(4uw$Zf1DGlZJK){=8A{;n+?ECOA z{LwCnpDnmfORP`7Ew~Q!qC%spc-N*0W|$VIn;8(%?(wGzubJRa9V$lvzv_qdoLK;G z{Hv&OJr-p3^RDU{1qzVcIrP=El`^k1fJzrFfKe|>e!i0)IvW?;4*Ihg+3#FZcJ6N9 zQ^8C+_PmhZi4A7cHKKi8gm}nS@mjc2$sOrmqhH?FteOa5y%J zm^66SoC09+S&mzcgcIxglO+zN!7B)0-p9LVg*#~6WZ>V0b>#K`?(_f1aObE67Kr#D zKoifQ8*FISHh=JRf`hK0VDhGRF%s)paWD|6NGK0~bL(U%zdRWR^{*_y=6 z9X%Yx(?I%2M$L))-B9evR8o$OEQ>rbQF#`QRxbj~^M9RjV-mKI4`JU*jip`|1(jNt=1QaD@Cm+qkyA0O}=5uiFSyC2lglN)Gp80?kA+R!f9x0YfbM` zK9Pjqk%Cb!nnR+^1;P{86IWS=+~Z**2^MkFB1ME2ZyhY(L!JYPpusBK!MM!D8;q~s zQc_9Z63RfP`Hz^~tivcGBT7}C=6<2h$+Cs#Uu5X4V90$@Ta=A(2(TZVA~)FfF04~3>tc& zvnL3Nj)gk5^&bJ{sJ)+S)B>s@E@4R-s(RtF^&kJzj^n{*T{QpP&49*FAvEqaI#AVN zH1;I^(GbK(2KfK;!g)wrBSLAK8oni$m-yr2shzF^~id z=6jx-PF_KUM9AgehtgdaiUS9`NO^C^&{iuqmVZPW*O8k{IPa0} zR49haVIHXw`Pao4iD89LxOO((?WxyUru4G%1#*5^>+%?zja_ek;`s`9^}O9O9QN>} zYYTxAMGGX*<5y8Sv7{y$$yXbtGv;6vey`&K_dCX(1Wvnl@0Ac}Qc7}%-b1u%ohjl-)2DYCkD#<$VkN|P7 zozotQ4^$xASKBhz^|C7cRB_Xv(+moTdG}sfYJ^YYK;f~OwB9eP2h%lHCLC)*vj%YJ zrK+!g&D#{F=TH-UPOqoRLkfDirarP*-^M@SyjOcjhLsk*tR$<41$|a;gQZ@H{LeBY zWh>juhT?JLn>2+B7v4e46!;ZvF!PyZtF>i_JElqp%W42;OITBpByX~UTgSQ&?Z>N1 ziYMAh1aWITign1N871pQkXr`4@iVcF1FxxKA`J2|aDm0f>>NJ|3%q~RX(hk^adVYC zQ@cFH(RXGua*ft`aD85QXdM_mZR9px1&{$JDLS<@6gpwpT$Z(YMtcPcGWybSYD?jA z#rKAS@0fk*9;;BEQYk9z`{v%>?7>;M*B@!8met>4GNe(oJ6T;Y2ZS4N7}k+uTMJ}O z8FE4u)rxAXbL5jaOe8?~o|2NdBLTpWlccIt|7F1&p)zHq{kw`3Bv9$plZvG8fc1^W z1M?RBpVO2`DT}Ej@!#!8slz1%<&Zw%|Jj61p0t}?|9v+jBhG0bycWhqL`mI(O6K6m>`ox2@k?_UV1SXO9U2H;s4=GsD^CF zlS|Kj(>wiJ#@G@VnHr_7s5Jx3PJBZdyd2kyY)KkK_((x=`aTpz>?*e2^uTM=gSNq|@$ z#34!K=Xf+)vu;X3DhpX#juq_Ck>L&sprANzt0?n$i}+hB6{cl_H>)bachy9hOgjhy zmgR%qYjoJl8uac$_~rjNS_aFhuoT#Gf{kImo1W3_sy!lXZ#tpnLN!ItgdPscw9ym2 z+~wlf&AAs$(#h7v$9ZpU)-r7;dEqtEX#8e03>}kwPETW%{^XsR;uA8wIg4HncwDX?>0 zzwQ$Qa7@gNmANH;whR^UzP3m|gSx%MZV(!SFYMH0$QWOJfR$S4E}x8>&63`F*NA&D zy|Ud1s^fAh)|9ilr%^{fbQ~vPf-}wLdhfYYmYZ-rE}5C!nNgW*L^GMuAgUCQ?&qIE z?f%^GF5|&O@FK>Vn>mLdi~;!pUL-uQ?^XNQJ$bab`(k&u&-}iZApVT!MaawROX!!t z(W2&Iz}JE{igEn8tx1+xC2EE>OXnGpk9lL~NZ-O}l1jKfYo!bp@GVUvt8nKwK3df@ zH;)-89xp>)C8g#t6zvjEb3~10S}lr5;l5NJP0it|P-*RM-op51k@P*0=xv~?Qu57g z`wJKwn<=8sJ$Mc&aPo)ktDO0F?Hb?hcx)t!KwlsC)1N&@6$pBgD%?}&>4K2vu^g1> z(V}r6%zT}vQ$+5HMrj8Aun;!w5@&QoGO8&{pB=C$gT(d0n(n=>7My73$V-ccI^8tx4*H6Q~k}GN=VVB<@JuKf@o z3d6EmgV*#mb%v?3Q<3~zpB@*?owR?VVQ1D}KlWs`GI z{+_LyYf_R^s!ESVe1!(Ws5iTP6s+a~dGV7T&;e4HcLwIllj;2BAphq$3cTbE9ykw< z?k|8h=z&T&5Q9}A4qM6I?~f(c@v-j*N?~Ny(~@nRLujZtGN7fdFVpP}#kd~Ox5t$N zI$QdzDs^XDsMut%U znWg?C;7n%zE$&ZcMYfr_dzrzoV3KCQCdJpG`9iU3^ETxBywzT_2{p{4!V{JUkj5X= z_6T) ztT*>$zKW%R)Cfac-4G+Rt^IBP6Q{o=YQ3}VsCbU^YS~m7rzii{xVF=dD7t< zvq7iXCv~;LbTn*TiwF3KOQfGT`j+^zs=f_G^hET>q~5h^rx@e6KeP%fwbOKA9Ya<_&F7DBjrw8ot*^J&#Sc-Sa3^g^C z)f{6mxkCSef3^_pWR?J5R8mies*cYpIg2mk-+_(-^AHDhxN^|9k5OT)b#aWH%K+@0 za5Sq?PZ8<(2*R`HR#*q%cwn!!_0-$bJCN^(#Yv1OnUXS}7v`_>RWm?E2Fa`7Kz=;4 zoW+>$P((_3X5bRhB^c1SR_ez2*Cq(Of!4Kxgs3p18lkh;mUG`|JbOKZLw^;;=pK`+ zm9&&`$9`osGK1Ssb39-S8mI}-Y~wQT;dV@Nb=7oNIl3=MsKVD|4+s$+--XlFZFLJ3 zppKXQRy?CP=HPDp!R5|GZ=?;bc02R1)`SI7_AIQ}V!Ky=lemlIeVK{09vLn`Wi&1L zf|s&AOU^r#Rc#4JbE(U$948M0?9L=+eltlhkvAD8j9Qh)`Smpftp%f8{ZnKB7(v=s z|9|ws6QwI+_H!p0Z8AMhbVGDAdjz z;O6`T#$H20t2sLIE5u?hHHc3xO6gGo!XE&ZCJQWXz72j*@d(Z8#Orb?=G6uMj9p1P zR%8LMfNrsn0D2Lk87#{Kl$WZirIy?>39$k!26X^^h#=+=f^Yb{Rnd*suBxUrHl4d{ z+3T=O9|HBl1?2s`z+pT!RGmWHEO=#TQ(@2G_<>Oc80WTCHb%Z@hm$yf6kJGtNt8Jm zeO?~e7Z8V3?eFA{P;)G=ZNh6r=FD0P&oxW~o=2>Mgt||?&o~7CAs^ujI--2H^9G^@ zldKIRNo!DSgEzRK9$)-MI-}h+gUPNh^NZHp_+QI@AA1bkz+MusA!I!~V_Y4kMeqRO zj@??cupDFw5^{sn+X7_9yO@dO7nvg*ON(iCxH{#Uh(*7FP9mscpT91owg^IDo39-~ zCv|LN>9)>fY~sCmn=zdn8CDD9Qo?piC1zTf_U!%Hnf%S2tdw?vwBLNDeYAGk?_gSl zth!sZz0Cctmy~Ei-}_+W;=@{j)0`isXBIc9tpVOVo(SKZU*}9BC77N^qeY^rpz8Lj zXCWkT!V(YcLKIL%dsQ7trQUu*PFfCoV5+8vTQXXeYOcr{iz-ISn(15vaNkjlu3#1+ zMl4!A5{P@5q%#g&{@}{POEm;=-#4)?II!jlB@NV=+v;p#=zz!gsqw*i)uOSt@CBAA zcVZ2)8gT!e5sE~MR7Q~U7lz_k8`I5eXt=iRgAhdjki%t@OBkA@RaSK2E>f99+^1*Do>F)|8{EhJ~4bE0i-4RSh25o7?X zu$x1Sq!?Ejd(eV$cS*-wDNmLLfB%3gfxxvGoYISQ>E(MTPB6V}goKt8z}<$*qQAq$b+ zzJR*u7;S|3Zq%N2h6`7+<(&CY*z!cSdBu4627e4h_VvX*w{n`!hT%&Cn&C^P3}n&n8`DTTS&Ck$YG$y~c8`0@@!V0F<9zt&QMm|Iqh6 zxfVhro_d#9EBUuLXDUfnL%#UDAkkyVeeYXKM?wf;3;IMhY~rQeq6ai$5daqb*fEv# zB)gx)q7?O-flAv`wQrn-(+DZMLrX$HTYFUeOM%fmU#*Xo3m=NE0B8Gmaot3Cd+yvU zYxgmFD`ym{rKT9frv^kM4EgTs7_gK1x1OEm79FrYlNZF7D9&;pzQRyy|F1QS+c5Ba z;kTTNxpY&vIcAEVNJKql)%ni9wg^ro=Ra&+h*P!0Y)Ugdk_Qo(S>1$fuSP+RM-8S# zySi%Cj(e|YY(Zshpkh}j-3y@;S+vxCag4XhAK&-iSAucfVG{qEf$dw$-J8eS>DCGW z$P&!)z;Sc*DRh#dq8McLsz&={jJ$VXP}}*^q$iaZm!i>~>;Y#J7LKFB9VMd}xOT+u zN4oFd3xop75Ir>APS7G_cO%v4_p$|-lvv;1Y_>d8@<}z=k|< zQ{7yZtHD~U?TWGQ)$JYU+J{Wu*D1bIg9g;ifN8F}m3z)CE1V;#37>9EQ;0VPXt{fM zK!dqbz88pH0re=mZBAG*K}oZvZDxjJP%RDbphjy`w?H_ZzFLu>Ju|k!&qw0ycVL*? z0WIZ(^_6*}{2$~{E~@~GGQ-V76HyR1I5Wii$Y%IMyQ2H<=~mRlUoqcO zoT1+~lJi|(}U{cGYX4kw!_n=uRT_JyGb(irigI?Gl*va>vc+`e~ z^!4>+_{HB)v6I*nh(P-!9jkuCCV^95l!rg=X^3~jmv-NEtsb)b2hT~4^3Av&KOPMm z*r~Z;_YR6NVUe&&(NxpF*UBk0Th{*!IciC_*=6?mIR?bb8}??8b47Q(UCDTaqe zf3U5(K)7px(LOO|yDQ?<>Nig}FlBUPZ#+tu6mon%kB_V_Q@$^Ks=)q695_jZmUq)p z#HTugm^zFf4bw80J@f9TLFalgtpFLNQI?efjVDP}0E^)2NpeOtKf1Ei2uo#>PHd%1 zd)iAjrB`q{we&BHmOL#s-d z2(I+E^7&0hHYcJLuGg*CJK8R=J`UcXqZFevtW8{fO(^c0CBj;M;9>$}uT^H4u)8M7A-L;?}1h!;H+CtY** zN3G9nra9gp#Q-)C;#vqisqf=4*$qGJ-%h0$$PdU4b^w|@q%1wcqRXD{pz)rA*RpzQ z{?r`)t-1~=U`}O#S6{^yNH8h8#F>s^)8d;h%Ox9igYjDi)U;<5NYL9K6>>SJiE|WF9H5Dd-=~)w-J{#HKbRET$X6ZKMR1alF8%u(Go@PQzD% zAsWA9DiKW@>92{w7{7<3%Gt3n&vVOg@f@I_56a_Nt17&#F#ihJqA~h2o!jy5&^;bB zHZZE`R~^I4<3ZpQgoAOz#O4htbb6rCI(w2UU?Zblk~z9JF?tmk(YK0XSnq>9pJX_z z%N#cT7|Xsf+YB$65f3ulY9t|q~D&MNZ~t4h&y*D0Kjv z8iGvzeHUuk4y24^?TlbveR5Bh5#L()ajUDL=-Dyg(6wsE;3Zg2H*H`3z)J(lT89a5 zDA>@=4k!EuP1TqjHJ|_aCnC8SFuYq;`A__8Jj)m(x2wR|Thjn_K z<}Q-1CXUNOF_aS?OQZ(ChH8QQeFXNyx0{D&qNb) zF}RKGkHOQ|)Hj^Isl4oFobO(kbvM^WA_6^O&wPx=-VzL#H%?_dmRZ|eO0eCiTz8u4 zkB3b@Dr6SsSQ?@lZ)lN_5)DV!nxI^2#DUCo{6gi%GkiNA+k!4Q(c)>XEw^Q3xRs(! z@w#Ny{dQ6RlX&237=r1$Y9nJJQLR1XrHG`T!f!osEo&~}d zdP^ooogmL5WCz|QV)4zq|MmBVuMzL)1&7h;c?yRAJx>i*N8ldgamrQ4s3Nm5GYyTi zCz9?Ks*#~zx*BTUG7_|v6aPxF9WwcpG;s{-v}iN_Yo!$kEBmI@MpzC@96)uMT0ls( zG<)^pmm2?#rM>rbsuh$8KynS!i}Yajb6~&xCDgs(h;B?!yW>?FX(dR7zliSN1JVp) zG_~STGp5??*tqa`gWx4ZN#)`5v2mGoLiM`Xlh6n<$SXWNRx{kdgdXfqYasT7ymf_4 z_cN5Nnf|!SP(|kxx->9-ceygH6oT&1HPFT}cmNv%o9y3BnA?b>&~M6C&Nn|y3CdqP zX4;TVpVlA51WPh|z=|EF+*SX_v}WWHnO}<^y5RaTj=)15^A&8W&(^O{=G|PuaB8JI z1f~oe79Y-x_J|X(H0>?Y_L6OXH!0HFzex+t>bN!U@ylf$b>7_tRW7vu5M^86u~kH1 zb~ur?q}Cr~`C6-!8RBaVk+|=0`nqGGD6}3oBA+5|6YA~u5tTo+{G9t3peU_Y0y8Ni zov$f5aZ!RNOc)Co#CzxqO%EuoV^hJ>SL#Q-QWik6pH`*TqcChbL^F+9_S|BXG$W?K zmkOhRT|FuOW~P%O0y)Z}{Xj(d?m>#e;4(B*px=_wVTpUCyD!-J9fPun0c8CSL>*$v z5@VKvI8{y7p$#q@<%V?W{TxA9aBVhQCzad`feh30{-J>RVhziy68DEObCH8lB6 znVe1C$r;Du3?pe5IgcXjw?fpaNP(eG&xf$SF!enX!wy*&aP$OdFXkFMy2E@jAF%H zZ0H;6xo5ESLZ>K;Xr=irecfbjZ<;nOM?J*!fR@hnv)8ow4O{`(kDEZg6)XlchSf8X zBMk4*gO|)ajy0?Fcl^C`5PHn@!>T5jLysXZN>+=up7X<}E$DNm+wwtTQyUe`mS<() zO!nI-sP*qAb_YI%Be9#Y3)05u#-D8h$*(wgI&B)pTHErY^n$i2Q8Ny43XpA)Nm>bl z(x^?@d&(%q3rC%QwI+}BNChO0l8Gyf#h+lJ7mqdFN$BlwF?S{|e}==zvYMvY+B$SK znDb70l&IVSWc#`h0L|1|t&GYm#~c`AxDdnB%Cc4{i6*Z93PF^3d}Uyh}l zst=oY(DVh2V2C+;5=O8%EiQL?&)IT$*$Udlz)*nk^0`2HxNh<{+#-5?` z3b`5h&m;TPt`_3VUPUIwo%Rci012>s*VSNlE;Y4L*GWFs$KoN)PkD&-j|iL=JNLvV z6D(h_^3SPhDb^jG&`vkdJ2KgH_g0iesk98+SX|3%lW-i0xO_stm zhw?N)IB>8!@+pff?=SNzss2k|sreq@Mf=H)#o0SU15!=FPKbR~U8d+W8d$A@ei%2b zm5?|&Rh8TzoN{#ES>U;-Vm#}$c3fN3CZ`}nd@lGmIt2EM6_*x)qOirQqr%gQCtf@4 zYH1FHuwtKfH>^u*NAsaeiS_#}2V!weQeH!0$qe6&)}S`Sd>G^kSf*79R7RrTp0?$p}12bTW_Q+AzQC2);U^7HNIzyu;c+H z_H=b_TAE!+$AsD})ThT8XLfG+`P;fiIpOpZzogXRh?f0Mrgr1doHdq^({ZTDrJS<8&xkr8Q zx*^7`^HJy@m`K1QJ~CKCR&jafG%=*CGRUo2TL%HgE=m8%ui{b2u@=ZD2m33g5DHQ! zz_vd;GlJIFWlzj$dPqR+g;pl~#;4bImvb)Q;c%CmuCXA|Qh%Lh#Iw`@?jxpSY*pO; z0pSED%#5>-Kao!(>22$(u3NMdJt*omqkyNXm!`DaN+{@bjZ)ipn4X|N!g;N9q@v!c z%9;rSk0ub0imQB&2?8fN+9q@dV)nd%gQ2MMaKKKhH;U=W<2*W_t{)tOrW$Xd<d^bva%pp<+8u`Y3i;dT@Vl-o`!Gem z?wF408+QfN9=RhjS{Kr#FiAI!Fb^4j-a?T*n{7_FYKjJ-K-MrWF*>DqfR(G77;qsY zVst}b@W#v>xMN~65=5yzTtpmo=4gj7yza|fnZ|3~4M?VLG$T&lfLmF90tcWf{R%}a zYfQgs+e;E!JteO`0BOP+Na&H>9M?#~v}Yf9i(z}_&(=!!Q(zVfK zY zrKg$4j3@2N4?4%}|8`!EA2__6a_2=9jcF=u$F5!RcExy-tDEyG#di#av2qzj-c5+8 zs`a92m!Po*K54zMbl-z0g9|XqcU$^id~tRlqL~?wF)GLDJuO)?H`UP}x{%9hczj*q z1BxIvO?(Im;D3wnIZoOt+jKd`87n=ZUuP_d#Hb?uZIgV~26-GZ9D-HYhHp1l0iN$M ziVh$v8BR+vlUGOt5~2aL;}d`?TpIwubJmqNv^@9JD=I|mLV6UROhn7GE(X2=6c=NV zpdA7%1|TeS)yF`>A)5DKFV2YXOzNobIxI3N#v~5sOV3g~{3+*qS3wThHofset|>V7S6+{dSC zbH`99i*y=wqsT0Cyf{oL#aJ{S|J+|ys_kfVp?fzkjB=H0P$vo8Hxpmfu(hj9^6OiI zoo))FkCz45mh_;juSqLHw|wx1UcGQ^TFG3fA@&GB$;@f=!?zp3q4c${!Fy@7R!|AK zEWOxt@%%w*=tP9LsE6Gd`0ft#QlECM%k=#lH_01-?yQzU9a)~;HM*g;t18uvS^75b zT;YF4*wV%8yk$}vy)*}4AtUQ^;^b42OK)T3YD(LiV{UL?nu0mfYYY0v1FkR*rZ>im zaES1#VBaV8O7qyV+l}HRHk~px9GmL(iVx114CFi8s6hy>gSjyNme3(wH*JfOYmtR^ zv42Qcrj1Rj2kwe_cWpXKLE_%l)iiU7LUBP zjhrK@i=b9vnO^HGTk>2j@NA!G&&a1bUSh3Ucv-j3*emRNT_ALndA0drcjg*&)3~F| zmAl~X`Cy}2Pi;P^*uPTrLEbf>52R>b4cy%^ZV`S!G;xms;sc3bGj$La{VY{XRRsMO zH(JJF1F<;AMbfh`o%pKzqT7T*CxUW2sdf3^>;o6ACpKLvVbcK)vKM^(#W(=fFvoQy zc5BmG3^4w-T;sQCHP2FIXHz67xYhZ{ulw*X17*G5gg$v_pT5|N3=B67{Si9P&)~Hn zqQb^%xHtxcr{?<>ld8tseDs+XLBI|udCln)w*J`%YlzK%w8iB<)2W(k&Z*0RwZ+>w ze_~_EHH_MzQgJLp)*DeNP&>F<&~euF0j5K^{W;Tcq_r){9sRZD%^QbAb+m0ox>X>v z6nJu>On@K)J<$)L`xfPB7J=QxIwv}vxy0)J&9eciCnM~kv!SbX$s2rsK=-f>jrdp1 zg`>%2D26UTXy+yiV0Hr;nfSl@r|E9sM!+NAJ+avQ>gBgdch}T`0i=D~&K=374OC1G zHO1zYPl`8>L%{Us!7e!T(DZ1oh}A#d_}_aYtaUTwdwi0(9Wq3Bq?Y}MR!wGBb8s=1 zC_{wu z`;C!LBGvON*^C@}+~fXBue>*3RriaL5PEe18V%o*FW0Kpa6wcH#(wd8!Mm$ZHeN5v z<8{n_D)EKJY`G#vO@nfCp8Mw@9B9(eB*Y|{<9@d2zy$ar%{OvW3AWHSn0AnE-4kC8=(ws>TT{fWBzrT;eD zyfi|fpq=eQkC_VNr*(G+WmIt<0A`Htj*`$WnGmx=)-vK%W?ISTHvlcsx&4nJJs~gv z{v5q^e>kJRFMN|Okv0^L!6A+9r^sqKdWEaYeY#hXE&DT}jE8PQ-T17-xvk$W4K$6> zUGt3LZ@7zz(qcjpX9yU?P5m!zU(fMTRIFIam1pk2jFsIbH%*#_n`!;#;c8)jQW*?h z&(`AvC3l_!D)BbH*d%WqN+K;N*s$*43S>iFoa3H`V!=ggkzD=*`HU!BL``fal&v|b zZIlL=^C(PQoY*|`j+6@e;~DOhv~+R=KXLZK(N(sA7?NfADgODQeX>STKv3CB$tL1<=9FU0JL7+`@X9c>uDEo??M~T(R>k~C!aWkSxsL=HVfu)mbN#w30*aQ7* z_rqXc;R{z<*Z@}TcYU0;--bgE#Ar5ABj|1)e#=z;$)@Q@xBHim|>ROlC*u+*vd%fqAMtZm< zxt`!P<$Tnvps_~MiWRiadvVg98D5!F81ptzI{c(#x#o|RMoas~mK%xkWzPanwCn4bmTF_bhVuy?!cU~`jSI<90iz1{zLJXh zc5NHWl#nrQ_x3*Y&VQ;~BwM+UrS!&wM%qeV=U{nO^FcqB4cxkS<;s+-fuHs%@4hV) zB0Z~&QPy?`ieaa_n=f8W($6PIruE(aj@!8$DL|6SB;H@U@GLb~q>WS+aHZFM4Fj!z zKWeJMBmaH^|s`zUb?t1Xu6d0|rQnt45 z?5>mItLeb58wN;emz2ZNUPw2KpQ0K-GG!#+Uop6WE2KtW0)DILC|LAITLOT__F;m= zp^{lpqRRP+lr4D+rjIdGVu$z)6eb9U)r0tbx$*T1^Dp4*P4B^i0o^1(F=><9^f^`?NZXrn8+Fti@bBUUYkvN(POkl{Vu_sUM9 zPjK=Kf;gXty^?ONRpSl;tmp|rRMUaG&_hmHeXSn27sfu)y~>=nBvL8r`UeQ?+ylP@X2VwLMyX_R>C$ zI)R?9NV=NbOO!64rl!$~uuIX!U|M81ri7`+8nAZCf>x7Gl%q~nl)imO*Gz9i^3HdL zO8ZJDV278Gco%~aH}jqU>* zh_0GDBqa+0^>PqiCZ`sm$_5S*N?59>6_@$Wxv-_bcW?lI5(R2=OmFIF;{j^KP!&{U zRpq}t4o`h4*mIFhVc^D|S4pnEb^zvKkg2ROF}h@$FT* zSaDv%x1gLT97MKU6gK_}XZxpw37!>+(fl6xj!UzeAV-!jm>Fiw7IR@$hKh63We{Jr z>{*C7T!7nK$exI64eV_s5ko7!O&tr6NRt?AL0BXZICs@Ay06C=1J(Fd;Qz1;8WA%* zibQ#}rKcI{9Uvdk{*3vx;e2^lv`ds)O3r!qOqn^j%kvc-`7xWxH&C4-x*uF=42Pr) zhK^(gX<_IDudiF$Q?zKkU_ns@pVrXknTb=rclswP`1axGykR_lXivCnaTk;z2Vl}m zoprXH>V*k}`>G5Qo7r}mNx9me0cB#jep1&1@NLQISefx~G=6H?$4aVQ-v=P(Ly`}Z zN0@&rmWs?AXXOn!u=e@AG!UD-7jYMEi9~%j6U~)bPP~hM5cH0cN9haYtC&OVn z&Dlss_X3d&?H<5oeD%qPNXd* z)we+bZ&Ru`c%Lxa=|+%iX*^m5Z>Ug{5}wMrh|TWVaBP!k+HoFvU-b7O~{ix`PvVA zS5JOFRNv1r5P@NV!k3npiM1TSuE=sG{I0d+(6CHB;MZ(?{Sw_|b3&Rn_@{_Q?o2!r z@F`(&h@au3dSIyQ=di;%!%K^%<{pqk9UefM29*eEE|3JKu~gC`Y9i#q>zSnwoI~14 zkdHW5fGU6tgje6!9eq3m06m?@h(Mcc+axLgf@o+N1IeRtbe%#3GwxbHZvnTmXsUeQ z)&Nd@M!D=B=Ag`V{7>kYN|Y0_Jlf&M7XHb^@hGGdbP=)-hD8$ks7emdjpEQM(hp<4c_;l)t;y&x1Fz{!5^S9X5|U#9g?-6Xo*zn_kp`(y@9B}z&205X z!*os!jA3kx%dD~Hh~Gb>Xkc21Aj9k^s`(NE-ZMm0qjL1qu{R|U%x`xw+$W-Z@8i(o zI3fcK;zM2tRpZf;e>=W>%CxA+LSH~jrzFa#-3&-qwh;y3RV)+Tm=b_b6H}!clLG4- z_5@TPD_wviR7gWDyn>B3)ZQm?8V~hIQK}(ei7PG)chDhSB2gqIB@2XR#l;8eX4)$< zgY5Y|P<`CzTnI*{v((0YvxDs=D93FEO@7*t6qFAYN3N%_U$gwr&m8QRP0WVm(szrX ziAhpaP4mqA#=`^KT9V0PN@wE&&?hSy(BnlwWL19`=cIJC?*e_PYoDLZ>j^hqF5rxk zNVm`c(seRjQ?q$$ZWd5K)=7K9hQicL&8{P}`32Ye%QIb4> zs|B_f6FyKNTdei{A_e5^1-a`SM$1UjH*fWdMnM()InHarL%I)Mery3vU z+f94v;R6;$G`Tv}z!Tp52ujeP3RZw|NU+P6MALU#Q@`WKR7h5!N3ra@Ui12858!gDjRnkJ6B}bAf^Rstyl)@2A#Ep} z?mWo{Aw_=7&-qKAwi2M;1y&bvPAJL_;Z8+;W1g=^1m6)`REyJcqhqKq%o%oci}*ua z#_M9>^T0KzKWqHShtKr)jmdZkv>|S`X}?@yea`L|kxi$tD$fE(oIO3bUC%fZ1-;c% z0ciif7WhTLfCBJ%Fr!^|W2c&|U$xyKr>{pDx{wpX>PYiC%YLlPhd0ESU|gEgr+u)l z`7owIRfzf4&1fSr*7_Jjd_ajS6XFYT>)EScPE&^IOJF;+F6KK^KT?aH>>3vGm`soc*RAf zZCP14?ExpICXl;B^md2h158Use<5t+`gI=m;+7xnI`XO9NG8__go-kt8h^+`#At<50`UcDJC$_jJDL|k-z9vucKHB(VxO@1NPq8yEsBmd_Z=vc-K1ajI znsD}r7BbkDOHiIZpYG>Eak;r|E6}U-$S)p9TrbUV&rH$mSr5weEfHcl-^NvIrN^HV zhTw*YnMM&~IskBxWVyx0rVrrO+h>Ssw~I2W)-926YMB7KpPvnz9^^P?(j?WFOI31u z7d~;OPq@u^H`S-Js{OriEB6kQjy^|bkh;GGKfk z5%@}plm<^fl5r&DoKv>iVGI{_R>&n;4l+6vfjWLy!23snm3b$)l8$`T#$h5;4+h6nN3rQ$L z+OD=lETz~JyQOfrsv|tRf(Bv~NP@by%SOj$-(Oysi5mT&>_h*meuI|I_MniU1ILfp zvNYQ;*V7f#==d;*EM!XzAYYrg??Ek2-P15T<{O#bip}k-bWZ4sA+aKtNlxex&aO{f zu|LrwY7Ogb25kkUFO<|dhkbt2!R5rw26ON+Q68@me`zzX2#OZ5Q?;2p3S&mw~ z0Cpx6dfd;zHXJs`*M_oam6ym~RYP?6DkntcxVCFy&Gd#C08CIVjfHh=&~fm!6mxi0 zU;-CFDRgP9y@bZ{aBFsoINwrFG;Sf@fzx{?Dh@BPr-k=B)tLob3E4> z1m5$8I&cE$wF`)Ko;mtud$l-Dxiwb-1Wa}DC_kijLD)6kCIfwcN(JR0e=-8MV$p#W zoyVvtyQe{6+#leV!jCDscc0cceXppnV1cW5gaF#FL=&(X4mv=fOw|Q-x17q^x9t3I zFiYb3i=TUPvmJaFb@4f010EJQ8S>Fbw#Ly&2m@&cLw8I0@I<-N{lMhE8uIJM(IENV z+sBL3`--&wttoVA^*?N!Txu9Q6!u&fHlGUuqEeE}&WFc|`HBFZ9VGM~#4r1CQKF5h zUCHB0YFytmvTE_h1Qn9TYW{mu)IhdxZbOG#pr6wV-rrn6c$nOI~cE+im;)uphB%>pVoYCMiX3^ zd!DPukBM-n64d?SOW1rsZ58^Cosi5%=)Vmm(VT05M=V^hhuTKsXxx-k@#g1nrOEQ7 zQ8syX81hn$Ldirp(Lp<$((E4+BFl9);C0_Hh+Sg}<0b`sNQ6;!|)K{QIy}o%eB1(oxPea8IvOW~!b@!hLsROPQ2~Bk2 zC2Kqio*8Oo1oXh7D^6@&Lu=}x?5PD7@l~-dQU$lOEseR$K8gC|Q2J%=c8lnhAqC9; z_24`Nf!6GiQ2E6Uy}?ugXcDp8qTgq_NZ^Aed9U5?Cm5&5^m^kuXoGA+D=J?S;pcVX zyd|3E(pt@S@DZ;lFqLKYMckjV-Vl{fP!#uA4lYxd&wa6l28CrxftuPXN%S>^<_NX$%5Sp81ti zUt%mSQwf5ksb7sx3I<}s)|azjyO|?$-lB}#XY8p?X}ud zDYvCqnYFC^l+zvXj-bqc3}J8V{taQDnM}F?>Ljes;xZhF8dFCR{fc9+pagif=~>+Z zo~ixQXgKb4M__>wXd-`{XB}M_zoC_Y%-UMU2FyU#7q%^!4x2>LR!Ee3o zO~(Mz?p7cXEB8FgM(b>@AUCaQ*>0|0dka84&#ETMiesU?OF0-c_?aCreq6t*BR!8A zEZWYGFOr4uq~9{L=QSm-(gSDo0b#^;`}>I?0K1J5Toncwx~MI@O_GRde1*0A>%?CYk)Ih(!U-?c~fiCp-5$kd4}4bC><97z** zsB!VK>0Pn9Ck5QARIob_9ExG0!9IV-i_^ruD3=0M4BBy=8}ondT|?W03?s7qCf?$v z^MTUO$o9U5enfQJA#aCEw^i|QE>uOj3FU~V^0)8sWYZ^aDI=mZn*4v9r>=n7@xrpi11Q&~#m>ZuYOXtQ zk+ze}rqJ^)6M>2xkNDaeX>rbC5rhVXHKNdweIsjI<+FAq+Nam8*qrgnvLGsMs~{u& zb*n#1lpv7q@|Ukc3V{)(izQjP9U(AIw=pN`y8(k(f&c%N{5-QczBH125i>d1{Za!D zBtd!NSEk_-iPPJo#>`hHc8e1rGa{l8 z4_tX4t45?#V5M#b)Ss8qS5bbj%WSMSY+*TX1(4w+qoQS^R3JWzrkbTz&+m&4>DQK! z-N?ccRW|xINU7LQ*=mVCM7+wjxWH zNX%RM-;7cZDg!QS58NA&+rkrccv@YV>)VR%WUxc011SE>uuF;i*D;D-46aJ8$~($; z|AR0YV$RpeU~gf1fR^W%Vp-xU{M`u2Uc68!4K|d->#N&@648+&+5tm=uW8dtR^8!N zJI>GugiRiNZi&pH*~nXui+ab43&suHI~mv4CDXn+IGM(`K!Y*=%#62IW>;b)(jIfB zEr&y=4h0o#M&TrV2Wom&vx(2Nbk+^Qe|CZ9>5)NzFw4Y7gQs!$((r}fb%mAbp#?{> zmT|HQUeuSoe0sYYzhoAa@5krkr*Ar~y*981xCQ<$q19h;0h=z5ejcc@tiiJ_BC~X) z+I!1SL2iOv&iIrOlEJs!S;o2H^Lv%^=!83!pw((m*g3mm1XD8_P!buR*Wq3?Oz5Da z9)Ije0u4UnWP3eIB>l;@fE(tERVV_!yJ!Cs7cWnwe&(sSk?T%5cK`8aseOBPvOe2s+_UxhgLL_JnE8ZwtZFZ;Jj18AxZ0-2X^b%g2@ z*(Ok<3_NX44tC|Js`EjFUe@98gsCB&Z=Nh`)_X|nRunn&CNXBI4c;e#defLqy(JNxa)=Vq$e%K=al- ztQOZv0i`R1URo=Tzxp15=yti^N;`+yRF|65odV5@7vApipl=w&>-{kIdyIV>4e0Ov zC8RM>#sKgrcm@7rk0VvMfnilON={!ymfp z1`nt9oX=YV%xrL&mwudH^gL&b$Igunu2(Y|i-;5ZsO}bCCX%Ajyst-=D~YN<#s2fL zB0g@~!)jB`rOv@ND`v3yq*)Y@K6PAVr?a*CS1>eIf5Gfdq$qypssI8WMCJ*)S2~?V zmOfnmdKl|7@!trf~OcPRt=G;q56gH$SlKRuE=S==RnzrbY7{hYs;>bpdqc$ z@@n$9gEX~k^ewXAi)9ZFXjAYGllVM5PYTHEo28rdI@_X$mgTd23A;0hCRfh^72Bl` zVtpbN^=O594(ZPs+dct#78g>n(Qj&T5x3JahISweXyLvyF&J>>0E)NPIhh*_ASeq; zO~n_HH~eQ4lm~r~_dgsRxS3gK$Zr<6Fhg5d5@+@boK@7 zQ7qC*M_R9o0ZGg@6_VZ&Y?6jdN=4jvRCiQt204|m+{SS22&d@s9l5UsqgmN(O&0qw zsM*N1>kb;pG5K94J|ZjM!iCo_qRX9gow~g-a{#w(C#u3U&7Nj`Y&ZzXKZ!zFPL+Au zdYZ9qB10RYF$&o7i!N-#(|bygR;AaE>puW=`b2X&by!XRij{N~W{dJi{xNiwvv;CN z^Zo+DdWlQ{#q`I%aJRn!!9bu56?n7}bX zUi}XHj_5Tlq@IOz>9a|yofYWrv>ZkkC^tu>2`i&IpnZ#u;@W}0h1AwyPcL3vl82Q^ ztMURxf0rgpY3~zI2l{IXS%Fgrmz}nNe*Lc3E!!aoXp;2_*`M5z>MEzLo(r-hh%P&4 zW+xhQo4Jvj`1Gj!{z-Ai&9KsV1D>6@Q8u^| z)!XUN6h|;x-^b~IKXHA^_q2lupkib7C~{@4JOTDi8eb2j?QHp;7I`F8m*h<#VN}CT z#r*}lA`7^Md&T};M=-f~-b=eiks?H|4N@9OL! z1&(S4ilA!OZ8!;bclem62vgb$-PTOJ+Xq znINNz(B`++tVWCs=W^2l9HIAdcmr?pe4LS7*$4v(dFVxenYWu~Ux#uHKzaHA+R|q1 z5YTLU5I%PxiMH3kn~|E2-@FJE#6G;PeG#b0M)8t+v#vHh{M%3mr|Yc=#Z??#omb41 ztr{W>h7>0+0-`@UW_+4j21K9o59|LwD%5qKA%8ukldyZ*x zI;Sm!OmHn@n7vqqCiJG8+ZjGg+d_qaOrW`GXKAjX43n6KvMRiq#4vcS_sW{7VlZW7 z&}1sH*2+^NZ5cr*s227Dw6L!t2-4>Q8aP_Xo4MY>_2Y4>8SzR{TxhfVAW3H1hzo-^*EPl9s9&&9M*t<+~C7D*9ZyYZdBnq5LDIE z+#eSM9LV&|HDXA;2=yu8c()$%5C5ZoJETSNj`PT$L)WraFIL&;J5)q^mtFlI6G z;%q{n=q^*^Ae50xW$v)Iy46CY+;@CFtlTC?3iWcr9L+EsTPa+o71a6nX>C#F_Auxm1 z9J{o?67jPyO-ZXRy;x72!7moMutQ=tUq2JoJtLu*DZhpDBMeu2)IS8%@()L5W$T~Q zzFy^Trwsf+xYb|YGcot{z{{=J|2VBB;4h!+e);u-sr8irI@^`A?+mUKfpfL4?O{dOra_Mq`- zNp?hnG@gE@)@2cAmQvmmGW)kl9||sAqdb{GULK5(AiptVwwIA|k>yDWNK8V2aXMB3 zkWv8`z#e;0lf`ZQs zGV_#)x%(?WFarY{k?mG)l3v>1#szlu=#ZI9JqFPGrZu#hk?r)}Gdy?=M7XH*5YY1? zn=EFintE~>(EpDV`hpewmkPxe-{L~x+PtoM96GgcLQV0gS}M?OfNU*H5@_FHLb16z z2WN!+3P8gkeV=Dmu-N)#MD^;EfhVs_S__f-Z#J9BYaCc_c}LpnJYGxM4Zag=Iyg{Y z!PErFC%=H!YU@$KSw^}h)x;Bx`B>ZC+hcpNF|K!CqrnzwF-jGMv>ZX>0g=%%*s4*J zHN_Pjt2$aOnu^v9l?yw*U}~GU&%mOMVX=5Q)EWtq`=bLOF^Y}F8h3)GIgkB6JdVn3 zW-_Uh)K^(mcLtmP(37m&NX`wJP07C2N0ogK-?Kon)_;%5;Xb+`S81j035g}mAp-dk z<~6!@SHTDgQA%`LiWzQB#1dKDap+RymBPVG=@2j=okzWOZwH%b$ac&oD3 zUr8HD8Zz?ExwiKU;O>KRxyYT6Ec%41FwWi$txXMjCMt_GWqix(00TaGTir_>ZL@9I z+uxTAc#d>R6{|#dA)1eI(vho1#kXKuiLgVW7U7A-&f2^h1hDi39?`4%ow^%1WzU5~ zkQ)>^lkMVB9F^E!u@p0yx+M7?S`xJ@MZ(m1FiuJPzFqwWN4b?pyMaCRKmg6mwNCLsb zs9j7}7|DM~wSHhZnIF)DrRaxD%hE`HG5q(c3~D2A8GiTmM-V~i#;TNmAVGzu#oZ5Jq$dX5Y43IV8r7daf;T4gK zgr0mLc->BAA$xUGe7m;d@@ZzHtpY+qQ|DF)CCUR!2^AcE(YN!G8IBav-~R~{$zhMA z_!CcFDsNbco`JBzxb|v5N0>UPoRUV{rB+LBFy53U&$Z23#Ujup5dtnK*a(GZeFS&s z`j5Tvz32{NBSE3%w9|^V`b_mz(Ki3T9U94JlTE6NJr1IWjL6Gg0D+2JS}5OI?@Bp4 zfrbrn@j$6~@d6Xy8f%ooDBxBIbSK0Wmw3v!J<<@gV-KOIn5#5m9DM}P7+QObNL%A{ zo|OAv4+l0WZ!uEBanN*^yAU(qezA}wDuAm~;3zkGJku{1hm>=@cOCRTOzVce1@-rx z?jf6qxSS(UB)yX1YtQ-s)ZCZ;Q`Vr_2@yhUKc;$#QojY*X`Lm~wS7^D{S7*yC1wBV z9(IA|L07GG6A|f^jlbHGs+$1_$)dkaKis<}cpioTJ(yV>HuBRU;^8qX25egI_6k9K zKe>bN`zhd)*Q+%tyh)+)HUWg;3;ePAbs-!}a*CksiikJvPL3&3^atBePW~JcmN(;R z$O*Gi>Er}1q)Da7B%76uf&7Opc!e>SeU{g`UtT zZa3+dzV>CxQ0*J%t>~@z-Lwk6E}r8jica+`pFX|Qs9DkaG38FeZ-Ov<9sY2}F~K@j z>Q*?tD>H|k&m4dq9qiBTRrNx^N2ylmu(3xIH*5KriU&1sl??ngRSx0E9Udv^9tMFs znTvSVdVtF^{j=`|Zf}GPv%l_{?K77x?akn)t!3)SE>P{-T!H~Pn=RHdjm#O{-Jc24 z5VE8k(%sV%7LwGBs=ryjEVUhp1+tX8n#XBAOfy#IBf4zHyST9jZXS*o#Q`;*9-q!D zC8~hGy9NuM?y_V1Ctt#HCstfR&HsiPLSot7eCIu=bW5erMsIzx+^0}U#1sIL&N1xFGMP-^=X(d zs~qDf*<)H`xiA2*_eQnMn}FKn{IH1Y{ ztV^G@6@EF#5u>8-4!anL(po}uGJLmeG0EKd2=fn1htgZ%gNi~O`NzRNAgu!9zqIZl zD1sIUOwAd;{=Ogq-Qruka`5*kR>uE=g-oyy%Ok{-N^ z56lWGzKhX7+0!UWc6gU+y0TKbw-P!MG|uGwlgB5SaNMLbBT>6?COCd=!=-oRGOvVF zIuK-#P@@IG0zJ>ULO@7g7I5Zv#(TSt&?t$7%2LLeQEcgi1%qUv_mYAJDX;V5q#qtf zSnd&&Iej648e2F6qBOLhfSJRQ;-mm{`>nF%=Jpd36sQhksADn{3YOFp6ek3!wHLxf^`^!I zMg*cA)>p_`TK!$Xos4-4dz(Hpfvmf9XXn#TlT>$tM?XhR;8Vz*dW&DIABC%#Y@s2@ zij*y}i98}Ud&942&qdx@R)h-2st*vzSrb(ntzkFmMBSP1sLqjw<8Oy}+cNPDE1V-K zwAL(gs(KrixX*T<^a7^H%oic?D6!Qvxe=k?>L;K!GXztgxY2q+XY6yYd5GG20xk6b z#VuXP0r$ShBvWF>02Ycv*#D`qT|Aq>GSqr$gU5m%O)G%$$k-DPoycJ|o+e;=W*5W- zex(T-W1C&{6qOu9+d*R2JQ`E!6#;WCj72ydbCdG$AC*z)ny*n>lPZ%W181v?hq}3? zi@Kk5G1+WhDM0J)xgH73t3Uk&XZn4gso_=)cU4xG%R@tcN!4*ehxwh#wrhTw+D|tL zz>F4I5ph@2f19{HCnNSwXzVNss-&n5Io{aa^idOze!85wC=|=hBcv%eC?c(!@1??x z^}1>PU_#m{4!14-z<`5$s|=NOgTyMKLBQ|26KZEkoDZNSCY@5q{ask>XiuT}on{aqb|D;vR01@!B{^=xzrg+H(#}2?yAo z!voXml)BOy(-i%w7MuZK+0tTS6eik?(DJYrzfSqLdSwVgyga*|WhlMCn_xuifF%FD zH8<(1L)MO4uWcl)%=<5BYU5A3S2si>A!cPV+&+jRC9s*65F9yUYF)DTlK1PyTBMZb zu<4e34$4WtS{3h{TLF306DgHApxv28MBo9?r%#joVqJ{<13>^o5_PVqg@U7 zr1`+L9Wv-j)j6|?0!&T!+6&QLW$tYvh0AxDx%8n>>ymy0^tGq(-|_IbpzrpUU-+z2 z?y$weIuK)$SO2}monf(;KLS;VDAY>$Kv&D%wVp-}U5Ms^wp`T$uHv*rC>D$%&jS^L znC%caJXK_kSc}~xT3TN7q_2Nx!U*n#d#Tmr<3Gm!bsP<%`7^#|81@e6*dVYl^2g6C znN?c~?&IFDj zg?f(8;2 zyRbo~Lc#~u1OX5GyZ$)(KY8;@@rYcBVB08*OUUd`K1zM9){( z>0nSPdTjn8RQwoHI9fCabp8k}PnnPZ<$`cRw&~`}&QqK5TxN$y zX=IA7G#O=z?Mfd^?BqE-*Dw}ox$cqJj~85Ei-^4CWYNRE;@EAij@A4?O? zh$*??{tc;GIFP4$N4I&JjTVZVv1k^Ll&G)18*!ssaQSeBm9C^{hm*wHfMWZrEj!&? zpdKoVPMoGz$eBlmSLlk(Ym0Jzb8Zy@b^D+#|8F&WE$`io8u{zfU(pnhPMJGd%}hcg z0cJ~P=x1Vr-E&*Sly&7i?{kNvfU41?Q09)xRSl$BaICION=Q^C4vCzn4oQI10>7hP zZX)a#eG<#SRi$)dAsV}7)8qPM^fUgw75?1+^1jLX#4K-9-j+~hcy|A?t#6!t5(@*F z9#*J&Kv_&qZ4!@E^}#oshyGq)1GRmB!p|+Dy)CAFcL;B#`W+?}5Cshd1EHduiOoj- z^aDI8uXBI4j4V%iv91V_XifGd_&39~6{lXlvMZuQ&6=_T7W}a8!hmPI+iNqw`&vQU z05WVSBVK)+iUo2>MniS-P!xkHM{|x*=(>V)y7bzgf^nbf4NtUI0jnb&vWtx*dpnGt z(#7aX>#KHoD{;K&mhyby0LO{sOw}MGyQwk#C8vZB;w<&R`8FE#nkMudh!LGqZa>)S z^nP$yA~nB>1lAyicXxoT=$z=AcjZLAv>THTu&}I)`=n7!~UbdOxP0>mCBaN%l zZA#1V1I)OvubxEI=?=ald(<@C@4f%RaLLk!dhj`9`LA^tPHUmw*B{gY^wYZxGA<-I zGfn*Cd5~?Z5=!7cL(&aZERgh5Bmo#WkB=A59{f-~ZB=pP24#c{|l*UPIEW&DI-WwSjP)EtfspBSch}yecEkUtD8^ZlaHe=CGCgTTTJ1` zEsTBo@E;V;EN%QjN%$_Fx${w0`^RUB#YYl#WCD{dm>m*0@K6a!aM*mi*SGcPV6Ung zfq9lZR31tURS3+`GoUIQVWvsqk>`Ssd%q!>d-DF34)bTLKcpyL48Kdwd(6uFpHaby z2Y@JiBW7H(=65)Q&#M9a@0uGFi2R>B6o6Yt$MNjnqZ9kc zo^?;w>QZ?rWHYH?X;UR6P9YD@Dpk!IdAcPyQCMm@Ash#qfTlxBW(4v!%Vs@F_-Yo#PNL1TTE2xM~7#pBOj5z z$l>-6OoD8cQV|?}M6|@-ryYdD6~f3a>PR_zkm?BsmsbQzN1-!yao#a;TOprB=QOhD z>>>o7Zlh)L4epSI6wcMPmA1h)vmnb5SYnSEB8JXkcj@bi_&eqyv2%?6?KLcvaPFiS z%gr99^YhZ_nj7Z^TEk=}ia`bVQ-pbeE=fX8C-bsS0o}rOp%=iMAr}e(e-O)=rPLgw z)rsHVpn4f%D}(KmhaWZIOUVU@Y^w zs8q4%?{;*zVdFYyGXSP14UbB&WjGJ+%vq}f2<1QSV08#k!9#Z(Rb?{^ubl~<5Sf!r zDE=!y*;e*#Yi5nP0|HOefl0|~_jmtUQpEfVuO=@nmhBk;j*!sYFrTB@_ARKIiggTD zO@t+_on6T0$9YX!SD*ikkY5wyLw2IJRg#ot=E-1xL*^y5VqmkY1qw5A{;ScQ=4(~X zkX(a)Bt*pGH^Fy4ifbSY``)TnwEdz=)w@AVsE630bvg*O5x;ap1tWjkSDb+?cnhKd z&W_QgT`PA0Yi`bOE?7jW2=Ajr7xj6rp{Jym@%YRT65-j-)RyV%kd-;At)|l9T04gE z*Gk;RJwnclqXia%JP9#Flu7;1jHTt^jvbHpjgCqKMVC!}2bx~hjX&%zC@Y=Uv$)WO z9P^qXA{#2s3drnm%&ujq?(<76sfgfL-rnanE>R6@5K(%1R&f`;qy#?l$R>pp zBQp=z?>&kshg6Y)1s9}HSxAe6baohf@_OEk7#`e;SHn`Gd#Mi%ZH0h|;b%>|Tv)>S z`gtB($$KM>Kcs1tLI7$0(axpKDOjgdr_b<;3lc|Ht&&WiS${|oJ~`iaBCCmBaOb1qy;l-Qr3?QJaUh=EoG zmY4kcMf3EsAs-E==N;a#9#q?dwCHW<_zLFKl@b(8>dx}DQlT;UK%IG{jgHXp8$|L^ zFLgp$=^gCqmvDgD7o@6u49hv8eIy`BK-u%Ta&zf7;v=yH2uUNGHV8`|Y?$)rY zQ{y1v6qO?1>3#{>+?y_CunZ#IlFclkZ5@aT*D>dF+R(o&J4iVV zVqU1!XxN#8w++dUn*ni-UlnT1^ar-qpQD~(1gzSnb9^v#yT|VMSK2FPGo(@dMSJkc}mnZ{b5U1wvamK zQO3i%^>E)T6MUUsbwc_EFiQ~)YUjanK?)IE$@|p9+`L~sDv&|_@I~-JN}r2fyOUi{ z9Emmt4@Y_h~o?}|IN z1MoXe{Lwl@Lh{}n^Z9dhuhDlNK>jR5tJ#zXyo)}rwG6B?O<_8SxEXK!8Wqt_K^kF& zA(CJCy}TH1)f3%Ar~(^`o#1+w*;;?)&y<^oa90PK)x(TTO5hRYcL;e=+2YJ37ITgk z8*M+AW}s0sWcPK-R+1}objLm+OTT{PSPi}qvs{7JMU>@}2(LUa=zL2YNa;UHcy%u3 z6U_D=3XJBjX`K_?mtPY{p6vnO{9Q-F_mdn`_*i)nt)C=nm|K;B*eI|) zTdt`C-opc|Ww?ain@>+c(HiCs)a3>hglzp4FifF? zYy&vZA(W>FWJw zi-ZYaC-=(yCM7^l-(joJBLlK0gD*|A$~UD5x{DbgH&#j7>JB9bTUs&Ey4hti zL!wJwHT&jb_>7TRjx!;{#sqB$$-GJNx%W8JBTfYu9y&4o7bByTaIvfRcC&t37gSK{ z2^}rj)@E>$ag}5Ys-r-=FQyog(>z6DLnzIX-@?~X(5l79lu0wYZc#cAEy?&~SX=U5 zUwJbdZ>(#xMH~co_r8s^a<$4!+C1z#wFREg>Bdo8tsU3ff^!Y{%>*)iC_50n-j;uB zN|oL}p|v&YRR+e?B~MPg{)xMo6a`-@hY6=GnJ*uPz6%oSHK6FgishD60(1bE9)X@aYV}p@3)OFgrUWk=wX@w>GtJU+vejnBT7r^Psl67u+La zHN|d#xSfR!1?1G=1u2doNx*Mx(E)_B1a;8+Qz*FSxJs-^vu^xiRb8) zv~leIm||0-Dh;;1C`n%haMjN(@`Z~`b0z*T7vuon82n?rkXCyGI46nFLsGWtt~Iid zRJH6}G>wJ*BY|C7*v~r9m0Hfev}Rj9^OeHhbYM7#7Op0Z$qeuu6kKP!WjKGXL&dv* z$S9C;{B5{5u$c5i4}J38PL5vcSWJef-$dGk*q_e5Y!pBxuYvZ;=Cv32GTk7Gd39su zYsUw)2bYQu=_uvj5fywbhqU4gGd+IVL0Raj5_w32z=xcH?F;xLPV@O1y_IARcF45v zr+(UpjY&4sbO7qo8tuc23k~$oTWB=c%N-N?0Dv` zOPfW+tGDKe#3%Adxqa3x9AJuSVN|rh&wEX@;ZlQ5-U4~chzg~yDalqbv=lSy(*Qcz z4*nW=_UR5l`M?q&y;7=x;4Y7b#e{YhL$7ad?Y4h}Cm>FobG&LKq$RR_j&y#O*3}3i zZVCelA=H>s3Xt&ADWI$5J-zpdK+Lmgo_Q@P3@hgh!Dd@Bx+TM&qO0bCJD{!WgCNC~@1(6m?bJ`E) zD1vz>(^^*ILcKCc!%&xtuxur${cwTH6jt~L9 zPZFmAFgDDUd|JphcGPiebN|oQVlzC>LV}QakkS}pGNTa#ycWt6FNYelR{(-6YejFBqCroO(Pfkf1;*LH-R4hFnw#{k{#y#!_wb$)RE=Rd< z#MGpKaXc&Lpi}&sr(@|*%)}!&i;QLl@RliV$|>EfJap^_`JWO{Um`~AcH<)Ao7n1| z*B@hwj7Y)Fh;I7!33n;@uS#K4nE5fskF)Pb&*^d2`1G4brVaH-|Rvx1tX*IysJYNEF)lf^X6>%TC;{U~~| z?%B~i0u-$tQ-!?Br{zg)RbXM?8su#I(A@$0)H!d^$1?qT_85dw$Z3%(*)Yj7iO#SS z5l`$v;Wj1u*Hcrm$BO*Os!lMPsr*mC3!=+`x6>;oyZ?jg+~+%VpY)Xxf?un7Hw1F& z`$l~@DG|;`Q9Sm*$Tz$ol1V?Iu@I^Xed1bs_36YkOnx zW&P47ugA3Dg7vgVc~La^QJ^z^-IhnCq4s->ECAqu)E1l_dxZ(K7Q@FMU>?8~q@>Oe z{d~yE&ontTb7cv9dFTqkfZd6l?jsHf7}>u^rWaljA5I1KI2!SY3f9z(SDsoWbciYA zo$*A1|j%%uYQ2iI~9lhFH2j%eVwuvY{!>`qe&D8 zpFDB+gP6X~I;L%`An2mGd)`AOT57G$^mLfKO16Xl$LVi(`LsO$uA`C;mhd`b$eq5l zr7C0@3sg_@?+{$%dy%u5b`%mb z380N|9;;h-&lhcU3N00k7bF0ElF$%^(X30K5#PMIN&YIbB%7sx8?7QQI`fb~`dV&< zY0YG>`@K0v|>O7e!M;f|UvdPIez4K@LevVX-N%Vle z<*1kBr2~$mN~WS9no)1q;Hyy^Y#jC?kTd#~%{(LI0DnRnIo8E`7;bz5g<@s!Ubhl@ zyQ!CRYFa|`;|>j7t{xwj<@7|Lm?Rw3wc5}+=aBHsK&8Zr$@HdBOEPy7hiSPcr?1aS|=YJdzAp` zueX(u85im^m@iMLL#l9lJrc~o9;Rm~l=_bFfxv{C1t3`%ktCW=CfhZfHYnf(XT_{w zDVL-~zH75>*#Vmc<23{jpMutyF2m~OFJ6YQ{_Q1TSKAZQd#bpRG14c;A}4yYd8^b$ z_c3KKk?)(jHq-xzeCor}#d3HKYYSaexwr`xQ6bFV|DA}VB*rh->-P&;aU(}0p~@B6 zF4!2^HkL%{6LJAMwo_&KbY!qiXX&ORb;(R4@e1Y$NmagGvC*)CM+;7GP)JjKQ%UaV zb+7UA=_uK+@k%OnGf^#>&_l%c|88_`V{~vaG;%+oKPRO>ga+L7LmyT>QOD0BrfTN1G1EC;z}!-0^mmXbjc@J-ulr&MgWF zy(ZcQLBnCb_-MZgw&iEeKn zM>t{6*!OC17MpK12&c}65vxzae_GQc>ZI8tcrso%y1Q&LD18V zB;FtN_hgq1sux|U;Y&d7XK+JMeo%Z9TE$E3I6z9_#Or-dgJ&FgGL8`9G+?U8d2t)< z+*`_p3V8+^Jul!uxf-(%znRBPLG$w3b__aMG7Q;pdiUHRr#K`^1-^JEH`T;$ zqVg!Pv_FqlbuM1zhw~HOs8#=@-fjP`yX4p~2G_YTD`t?T^ovlg_&zvh@k`r1_#p@n zU%{n;L-WI_=^q*mU7{C;NvYvh5A7)qWx2$d7BGP^euGI zv`5(mFsMP85`3Fa@*qP{u#MOY9Lp@1uQ0rqs-o=UhFCJHrw)?lv}f< z_fc|BS8Y;zNcUidyW3Oi3O}^irzk#Nk95D79# z@GGTlfD)-4I~(f6j@!KfUXt?din`2HH+8spvAUWy&%e3!_FB6uENZgK>_jGXp4@!V z3ZQ##VKbK@AC|Q9B(|G!pdYY-{VQd~`pT|gAh}O(wwkOQiNh%ns42q=S{_>4Hui@< z&TEccZW>E+n#nCs%E_(gWe*xf=RJ0j&>gcaWVms1q6MEW#GXR;3KO093_V#{h-Lx)}-kT>>VfLWs4X+==jI|3$>-0O1o6g~= zJBu+e9aPF6hd~gcmPIp4MvjtUGj<6#WOw@viURAt^d#SpM4X0zRD-9}fGXhN^-IrU z#h_xiVwpXPrtwP;KJkhj!#WR0WDI9r9*4G%$1_g$1sfE?f29sY&bMTg^$0RX(@76~ z<2Zm+;RK!78xXB8^nM!*pmGTTY$rhF3#~yJ zmqEKRw04OLOI^Qy76Qa^Vt??rgy1AqM{TR;iHJ`VpJYwD6sH?50Hz0NP=!LN`d|#? z>d|jbhj89QF)bmfh>)c#j1&uKr1nEZL7I(W+F|g+OCb%@mq+tU577@vk+J~eo5l4m z^cJAt6j5bs$ZmX2(?4gT^crbH5+*^N8K--_Js~0^;>Hd&?B0u?kC zrsg@ksQP_@n=VvOkZ?5~Z|ZuRZchO8MTu({u7@+jHIo4%3ppOuSZ3Rhcxw_SjP+6Vb)l#wA3428XTrbH zQx$vc{Mn@ z8CUM!U6Hc*AWLVcfROEDGWUmHZTeYmzgbJ=Hpn!bw`E7<|LI~UA!Pk&4J?tng(P4Y zDTf12enEicSb%CX<%C{UO5A9WP8;MgV45Y_>=-9dUk0h*!%kg zC)pv!Qf?P4(&;Kz8*8rUR(w^?Z8t8U4Ebh~cI2NU6gI{4e%arl(!jf-75A|Tv^Cl1 z1bDHEXwS1FoG9O5h*T7DPD&_o%4}&-JQDhe&VvH{Hs>WQ!vU_g5t9UR1hY|Mjb>${ zO~Mq|Bk7Ug7GIz@2-GCtHKC7>F(%SBH1fXQw_zYm`HlhSCU=0H6T7P32_>B85-2tK zDXw%DoO8A#;*WS@Tw9Qw6Gg8I6FN06S4uyUhz#m$UsuLdD~bQ1RG|w~ofuoy4}d`y z>cUdQVVjcHw1QKS#7@v}f8cC%sx+g4aAYr1sM&U)A>sb$8TVlzp)hDqgAu435eEcU z%u_>`iTYSsM%}hwqM%Ib$S;mkOp~HzSAu08 z;&HT&yh`KExh1KA>I~L4u_F=1d~Mhx!ry#~NK4>zgcHePWzR*ZV>gy9;$7EAoy$a` zU2D%-(07Z%m(rZ)H9x$zLPk=%uZ1eB%08V4b8a}+Us|@aJEwc78I7<56XZ|2ZSBfLCO`HAIsIR82#?#=gINg?Od%i zN$F@K!RV0u|CsW7|Jfv9*@1O|7&&DCleot7K_Q%J+k2ChlbBm$7XgFcg$-q!1Wh7Q ze5#Fd{ngDEwjv1jD?2EQS;)TB$J=bX?ufP4Zc4PA6bG2PX9`>oCKm`R9m*w3TVrvO z|Co-YS6?Uc@@A%zRh|>wFV0Z6y^3dP3ynYgkAkpy;`28D2Yy_DGzlliufdrG+U!Uy zjYW5melr;MUI;Jz$<)tg9_M8CVx3d|2Oks5i&Is+#Kw7E+eF*m@lB%DCj@)jXo>qB zb4h!Vk@Ayl7o9&yU{%rh%xj2|x|M0?1|8LXNgk+FZ5kcG|IEHtGh@7P7!z7q3xcDi zm_}B4UL<7BAy=%0R0rlXzg5+bhkYNv9Ao@d3LMFeU?y4#7y?Shq)6kg`&<0&p3Vm7 zpu2to2Hc-j{A-L{)a|6&>=%+WMMjPwbn4cyDV7Vb7h>tXI>8h2r!XUNw(ztLwunp5 z5*)BBm7k1MNhYO_9U7#hF-s#YAsnlqDzdl?SA^?ZJK}1PeyLCsAC^yH2|2|2r4t6N z453giHpSHaVbq`!95N^zgDJYw-lb!3nm#eiyX~^|)@wDcSmn{?Lnog%3S|rzLj-av z?r%5RcFiRcZCZAFJoRk&P8*eoBI7{@S+Z;6&EMx{qbCupTjZ>>@7F%QJY#aGWSdep z*wc~%^=bnR$^u8~&lw&Yv1@$^Y9Icre!uWW$qwv1<^*|oB}0u7uHbljTHB`(-2|Aw zqXuI&$~tTbe$bgNG<8_R5|7`HhgW01vRzw*E4uS73<=2t$(LTN)3XVqu1b}@d>_}e z#N?ExkBw=TC~%gtEgH)WWH;knw1})|ppt9T6gN+`Xl(12o_9=trr2{#r*Fl-@bsI3 zP84k{r22lGjN8dYa+kKBn*HsA5}i1`uj5xF!sf>&7Rs#Cv^SZB_S-Bu4?lbdZx?YL z^L-m_?`D;hpPYKvt8CbzV%iW1(CQJh#G&=gd#7E5&Dh1@+SOM@k@n@>*laV`wNKRTA&p6$g~hZHBh zIJU+;6NH@qQC6Z%;u1wwf#pBLC-B>#>Zdqyg%#SD`RSuCJI;*{?$!NvBX$rc_6gDs zIfI*A%VU#-PMN%R6%mkHgb!%ZaBcVD*^b9&;(y0ndC{%%Jos?9kIm};lx>HD!&%MGOa4S`aLvXx>ok>L085-7S=HNi^ zFaNE4hRkE)pa3ARG*OnpPVka^#hfGBx?k3`1<+G)mb!M6l#fGT7p{ zmWJ>3O8UxfTj^vvSv^*h!+e#2{%+Y3*{a@=&?6s^Iw&PnLmLr%)Y=nd9_QDgBXNgC z8M=IJbu~8$i40qPb*vwk_@ic`I*(pkeFnNHn3_<*x{9jl_MB=oyMz?AxcFdbD54D{ zIW9>gwiVOaayrD&{3jj|e#)i@oT1IKgju82^O4!3N8;3mX|v;}p0ny+lA0^F#y8gf zK?0FC6DWx-CsjEaxD1iTTS5&nGDEh>lK?&AW#YoIjHs2Z%*C-_AE(M>LHefZL_oSx z>$B_{Tt*R}u)pQKg8o&6m3*EFmIAqM6lm-u61=U%*qnj%>d=O-8!AT4+i!4 z#?>v3^j7drXz(8b8y^fju6D08&;kBAgVfJtZU3YPdDIamV`KRbCFsCqV-U&&#NA&V zr6fY+88hjZt|OPehVdAt$`G}%kC&tCA}OBoaBrnnDL!hg%45|y*n`&FD?cN$7B!JF1jJKVJSjK!(h%YTDv+*phm}-XDtD5x+rBxio31?m&himp4fyN`(2}vCQ)2B=2z?eL7x)SqJ95 zgykD}_K|j%jDzq5fo3o|yQraZbs-X+V$%H2fI?=iu_uU0=Gv-zC$rxY1U^n+>}9N zL>l^^;~_Kd!Fs0r9DyoeEKmmeWEUCTB}+38v{yTM+%ZS-HHrPpTmwOcPD7gJzaPI?F>P_gRVKN!n?sL}k*x1<_Vy&1 zBg5NVqOP1wO}KM6S-s?3r6E2OikQUl2V@E_$~@?65ZqnZ+UK?;@Tl=r5g|QhPx>Lh zczIR16bj7?$FxNkMeM!WAa_+7~f>G;C9z(#axPrW&}^6TLwI`B-gV zO5^CY^k;atzJp-u+00npeq}=fRr?;r6KInHjgC4D7CW<0#A*SB=sXkIxvlTNRlWnK%LIr@NkTPU_4ZU-0Iln7XQU1HUN zw}m15kg(J~MQ1!opsnG`Q_Wu5mx75(T5}U0sxl8{1a67N8gLnE@o6XdZIyD7RGbDX zE*JMHnBC3SuU`-3z}U8mErWIs2C1-!Me1&2#`6Sp{>W7Wh*@6=duWvfZe%vbH}C~v z5yG#S*9;6cyemaD&`AbkwBht+j2zI<3m)i5SW{Vg3YmP~aR;Jv?D6sagTVM5sx&h3 zB#D2%9V3i0<=VtX`UGlVpD)8tBikJ)m*I@&H7-Bj5e8?~?S-^j1Q{3KAAGC(c}3kj zv);M}5!lfuj!QxYg&J(th(eKb)sSBO;vbvF*E?h3u=UVFR|8_vjJL*5rG?S3g!F&c zK4|DG4+mHk@M`NPhcr1i!&do&YcEv_x~SqWFiu9}NT_pUs!kYh$04I#={I=u!j8q? z=X*iw^e7exQe~h>NUjs|B8wUwK@THmr3|RlZz8AC>ph}m*bpj!1i2|WYc=c6AzOb( z(_sM7f6gPUG#Q}cg&$TsW{JZA)x$M6PC%Mskd|k{9bKSAWL4`__*a%KIl91vy(S)vR2^Ema@50UkFt6-+%ls4bJ zeD)a}A;KiZEI*K?CAoYs)?Q0SGMVYw9lLi_KWHO9oqcLUKD0PDAJ-==G?l)eW=#;X zL9f7i%K%ivS+X;E2_Dg{m zOlF``Q<#$TqLQj^?Xeax_RL@?#`lQ8<{L6NgHKAa@rveZVHz8h@gU&j;G~7^{q{6# zEsmIw3ifVmJaw%VX3^2gEh7Y3>El8dKpDgF*9iIx8Pvki?Po5ID?{B5kv8i3hN zj$jf-UXMd_ilz(UgIFrCk+hOLFg!r{m0BjJ=hwzh4@jZ$Qf^gHh;#If+;G&}=h1~8 zSeDnHIz6pT5$x{U_-p}_)w_($;q03eh=751?V7Y`Gh3i(|eBE!F zZs%j|Ss^$>(DKw*Yz|6`>|GLdrdqaOthp196_qzuf8(`y#vwZLT*N!L^CSBwd{c)> zP7tg+=@n_(A8xVG(I)9rs)Z_GbDD6{WxEc^swH8<75rHB=tEB;w?LA--0f2vXTa!fOE6=VvS5P(-7+qHX2dJT!3+~yHYX_6?KZot=(>bUk0CvY_HNX@&Agv7{ z1^lGx4SOhb)@s)m8nBjoxUJ}i#B2_1sQxfxk}FLYaF$H2vz^1zZXnG?iUv4=>zGYd zUur=}g6`*)&hfF`fw2UeAq-u{ZMP@MxP6z_Ry+#fmnXVKJEt=xX`9uS2-|l0DZ5X^ zfiuS%=h@rODx9`0KoR3I5Ki$n;C~9DHRhg|bMDDr6~(N(b~-RJ9OjQ?4Fnpkd24%d zTFCB?3?6_V?-=OZ8<<@QXnA2pm(NMl&!8Q7NstsHeItu$a8Q!xbW7%O@BM%O6h#t? zxVGILQbmrveiMXJ1`lkJF{bDJ#`R&E#=`o!h`X~1^Eg1xXnH{wnuMc%d!ctRJ&V^l z*8<)4)4304*;c4VQP?ABk7dbRgbnx15o?ag^Dp|^XI*1DJ5!z%CqvSa6 z6qxR@h2EXm8mPZhcR?$!yfO#vO6#{J!qwI92^=9EHqP?wu&QV|48p!^xz)kWWp+b5 zmEG24!?|-*^ZAzt1q^hh0DcS7&bx!A_5t@yC-g@}CQ>E6{z1rkfiGkbVQaCD+rADR zij~FYeNdHRcFfu?`nS1{t?Fb^qZJ!PoqeVZnrjETF+>5(Hx*B8GHcxBd#ugxE)|(O&k!UTZ#S~OENUEgPn(qcP zCq*Q*=(5a!@uv09&Y?`yE?~%c>YCXM2JHdVBX^a3h8ppq7;WmbrPo1iWuM_crC#PZ zTB$2E6YBDoZ89!MA&{>>A|lC>C7p7LMldk`Wln}R!yU_L6&b0-%$_MD;y&Rh`5Af< z8%DD!!2f_tPdz(H(cuygN@<{<8X*{P3y@&LXNfY8OXy7iHT{bwPXE_p&t11^%(WjM z6QLd-v!6K{biVJ#OGOR44Ea^hY;>QZw-&IC&WlR`jq*qlWT2I9>8ponEt4SkLTs(9 zYO5nr&~2$8F|f|<`J6j7dmxMbRH>*X?YEDjkn<>0U?|Th_76$h~^^U zBo~l%e`a}(<=XKA}np zeYM@#qqX}4@#17XK4k4qX(NAMmmg@1K&S7rB>iao!k+bCZ$O} z)9#Z9^#X~k6%=mMTT}{>7KD?R!zz|>e{L0ZtTb3Y_71>&zo&M*#?a!I$D5_pX?Rw2 z>Uwc zX{KJ`RsemU7(LZ`LCqKYcW){XgGEh#8G0V#Uv^*3+11WJSGWf06@B60OAGii zT*{|K1urpu+GGk5b=xEdH{^xffzgiMA}OxCtvy{8q*~(BFZjpvoO9+auy#xQq6yTb zbx`3na(OTN>n(dvH&sk4Zn_zQPpnepWQaxIRgGbaC+_?c2g^3bAn z`qz?L1147ZO+Eo&FQ3rcVA1<$l6~j-4L)bmcHO$vQ~{W;I_Vi9;V(KL!3V`sOUo%F zs-FOJ!X>!pPx995$qe)1J$J(LnBn{a(%<%3jQfeH9$iQ_a-t2~H-V<23ALm7{-G*dK5&)+y5KjL5l4b@X~QWle_FbNmHfSJbch@MAz<;{kzjroa}t*RvXAO@5x4= z=Ukc^&hM2e2ATPpP9upzZX9~5%o52*{#-qXVjc0m;{%Flqk=VS?0OrNrYpUpdQ42W zSH&C5xwiI;H)Q1h>L<8aFxf54xq^!OU9%kqa#!L9%1Mxg{b%iB5Rno4Iwd)NHz&EQ z4V?bFg4omvN;z724^)_Kh%gIKy<4|^fbiFGSigK(KL_i8mlJAoiR59J8DBbo%ybj1 z8p9i|qo7$Wtt3~;VRCwg$qw8)O`V>Z&WUX#EbFi1oOD+O3bq1%Juk{q&m9-4GA-Vp zrbw$JON>bDSES#P3-l%TPRVHC)UR^@eMH%5Tk#plM|7^oCom4ns|a{?8=2Asy^A)W zDRG;3c=adu5hya2wf01cd^C4)Fq?3~w)Z=$*%K$Qj=@>~0Gk zbhQ~}xe?x|VQik|7j+hIYJ0Z7i0Z3%RYetUOi3iZ%M|z~l%diuQ=U_ZY0TokQdxsa zXSkyNNt@10oZ});i5H%~>9l+H!KGo!&l&UxgQi`l_-)gPSThqFCtGY0!Dba%f>zlq z!8@kw%Aew?@xTQ?IOB3#3k|T$FQvI_OCmTIjZ7v>Qq1KA}f+mH_D9pVBw2NNJrHg+#hL7CJ&6TmmXVkr%2 zJ`LX?uSkLK<|!#2H|q3(G@7#Zr4p?PrkT!po1gT81a+BUWHLMzlpq>KbGNvl{U^vWn#xGaU5*VcHQC z!j{no?BzFab(f|E=wUqPaN|ln8a}ut0JTrbQvO zx~{T-Wm)3oK3SSCr5{J&kpZt#0kVr#hE#BTt<(Cq(17C7<*dZ3R}BcUu0&?)StC&( z>#W>^_(Ygc8$Wc7cpQP!7>Rd@&QiGcye%FyN|b(*zH}%6@crIYFnxPL={EI&CWakz z(14tU*#vc^%lVk^)6ypA_rF4xA$Q>L1NhZMPF)8vMpa!=wzcrqJ#a-KrVW7ehpWVc z_PX3fvlXeKxqP`{7@UbXzQKGB-=mWnmx4gBD{*=g5DvqE;~Sy4qQ&GexS&AW6Ulxh z#mYpV7!*ii@rMEPGu>x`n9jstK=X)2J#QTW<79pjly2zRvBf&~j8CA^+!y{uho&mPgf4||7%MUlqj`)NjDUIoCj6CJMD zx-Zx#Nnjnooei7u>{dU(^MZ8UHHCf*AzFy@=JWOGzehp_3fI#wmVvpJYSx}Ri64;z zLaKiQvaBLm(h2<8Wekjvu(NIV7G*N!3B;X%kc(ziP}m=>($reN`V|6@&OP>76Lc@U zam{BcsaKMEd`g>-O)2D}HSm?H6z;~CV*bADdPDw{d429V3MS(=@hkx~mYd^xLvoZ+ z)ewT{DXRD~?;!&3Xa6(ylngEeWIuX09!^wda-q4MYtcA<4a{P(EDpGO;5UGINy-oqYwbv9Vw?gz=WQdS+Dt3=+IyAe#pGw(U0&-$sh2fM90jk!HuMY)SZ9wBj@g^PwA zxzZfPXEAR)asfw+1b#`T;8t?ZW7n2`bcw~{Y$4_oh3K7}_V)?x`OGX&)kHab-?@g! z_p;x3`8vz}I12MJr55Rh!<2P>@ZpsgZ2jRjt1LYAj1AItgJjU>%T_&$QJ`K+!Ks*X zn4dI>bxF_BSSGZ4ruU{^;rdV~BcKFs4I zfa0iE9~$O3BI%ul!-~Sm6wrK-*R#nT8SP?lW-go$?oOoe05|9ylo^r@7HxBD**6_o zbvYHn1b(iyn_p^xrRW20q|b1%o}c~aMr%x33hfKe>M=2q$|q$m`ZbYf41)vMr<35ZM1P7E=aN>Nx0Hjk?J} zgq`BTe}|ep%S&-E=K3B#h4aOqOOZ*Hih%jPi>q;7v35uD+F@gJgG7e&6JiVM5_EdI;|DC&1LJgAb*>Th+742X=@)MM_ZIj%B|jee#;l*a(TlxBHF@3;m>9&8`RuCmV@z_%K-mzZsi zSzKLq`Cbo=e4g9@m%zdsd^-m&k4OP3X``gcU?L$viz4Ow*J`@I$fpvK_<3Yq_)VH& zDqSpoeM_T|0Fr_qQI%4EpkB6X-=)U^YjHnS>7j1m#<$LQRs6o#V4nt7LplzwX*zDr{-=LOk7SBI8n7swCBLhfHhtuRuszilmuZ|Au}5~RLg|m;ZkBb?hH<`M z{?Usijin+#&wzhq2cFBqg;@xmQpr0MVZDJ!7_f=#H-kVUNIb_t%pFm3!%gHPOQ6=d zCSSHdi3VK9Q59X}#i$jTMY01EA!T2;93XWwa|)AK&!)+li>6UK*x!Q2J8FZ~1Sq7| zBZ&iDF_vuh$V9+GD|wLSZ0tdhX}>KM3yCy+&fJGwW4dA zbtGgzvqkMF)k$>ChTYivfM@7;SYO5IqFY6viira58@O+t6Kr%YCW`ZSq88!r!$d^Q zGLn*dr<%P!`N3^ump>Z;yu2UI?`E(+gs{Z;z6yi%Ke<6O#eUtct22>B49N)$LjGc+p=$aD;lP!pj+@ zkH6b7p|XZu!o79-icklXTQ4R?Sh&Za(MsG<^BrEI9Eudy%B`2EwKIv-Pbuc^mEr%Z z&hqMbk?ZPM-&(`O3`Lm3?ae`zpm*rVpV5&ENxpHMlFAw%I>^ddW2wc*&ae}g;7q9D zicG!*Daimqo*eRx_WSCxkl}rO(3_ao@Mr{;fAn3lk+|L4c%7O~Fjw37)kV(-=lMP9 zf6+>-)=*%u!9X(RaFvOoloNl)0LD$1tufPd<3p(Y&&4Y(b^~gn*Duj@pbCgadwp7c zA{w9Rr0KVg2cfDtsLs;Xpc+|O8_f^%jD0?9izpi+ZHcefiW)@YYrEfyL6>|dLR!c)e?#e@yD9TtQU`BbCiAoe-t zKY<FHL*D{SXY^K?vB|uOg$hyJ_OaL~f za&kzNpgObIYK|vcm|@s;U@kE<=;Q@-GD)ry@-*O3#`oG*G;`{1rCXBC&(WpMGB?|p zL8>H@xWfOOU=7WxemPf!-cxfIaoUh3H}*E*3@&Dv}^(3Wchlc2k~d#|8u*=Bc>!m zD92@Q@``;eup%;UuEBaqHGFtJ_f2Bf7?wPfzy5<>xHwJ~pr_!&005~%nKhlpcY2aV zh9>{?78eE9ph%C+*aF7{^nESa`^N|Tckq(UxM9<3U3~yj&n?J*iEg1jKbuntOt|z+ zTDPhDuB;u~GA-!o4m<)4Oe(^|Z$8>`xYp@L7ho6Ueo6}-dRA+sEhNb3)qf%OySB^5 zxuOsLC%>SzK%5INEeG1lt_hO64nd+T6ro*1Qs!mSuzJ9I<$V5O{NQ5jJr+<--a9?hmQun#xvBwZZdMKg1pmC~d}D^I9p;6k&aAz^WVYu&nKb*XF)NqW zbvrJ9n8`${)3b2p&oq-l{yZ8Ei&h_ui(gJVgKJR#&+&M4#2Gc>QOE^=zkCrrpG1PI zzE4x9`WaG+;iviPT6dv~gaF(?htJ^~)|$A1h^S1MYt-j)imYEnsi$cipH?!gK?@bg zXk+%0;Ga9uC5ka(TmCAL4n(_))iD2z;Z>4EPgC!6(rZ;h&dJouC&n^18}%?y`>mG! zekoLz2Z69ph7xv9WOS{qd8JU8j~mC|5Fw2cqc&>?s+UoFwG>-=2Ap-{dHR@;qG9tm zrS@US`$)g5ohV|XM9Un)xsr7CrseLnRZK{NGFW^v$;J+KH3_*iuaZ>|Q4z&JDx3|& zs8TPB%KF2JEY_5vLmPnBa(<|1fSz2RJ9-sH{u7y1aA%d&_bFvR^-KhpEy&aA50Mr3 z(6aVw@tsLZPY%&ym%Gjf9co4ke5o_9LoE4d?mv=~+#&O<1Jc_V`ViV1qae2+Ks-`b zLbuCIFDFa~ATNQZhLHOg++gGUQZ57{q|5%XUyos+ps&4+YZ7?dd+DBz^g%c@E;IrC z9f>@lEi?B#i(KAf4WUPHP23Zxn6CFFBfc)8ZGT`D*txHOVq-tl6QV~b=_^Vfp&}6^ zz%hgG2kWzZtgPE4t`cT?|0~O48Nxytf{FG%xOKAjc#595QD*aKq{hCq^BL9WeMT5w zN7?X69x;iV{3|48hTW7SFPGYhj4>ymIp?TGpgx8q+*q8VBeF6;q0~Bl#>}ow!;ya3`>_CdGTqBAXe{($uNn zvQ3L;`k1oZrRl`TeB_7m{T;0MzCOkQ8k&ACA=f1C%3{*-arIyHEp?~~RC?W)P%n6U zuhVIzX$2;Ee4xzlbc(wLG~bzj3*cA=6L{;?V>29h%sU&G5)M9X19|=gqGDnL24HE%%yXFfLX4d7Osq^>pqJR>TR3gFFRQ&QYRp7`iHLWou z_TS2a6$`*d(9Nl{0m@%pRgT<_iXXqi`9jr{_0+spL;9f7LO-W@85LZV%e3PG(yS$l zW}kJbg2=}huIV5M_vUz}=-c2+n9BU}IivdOy;OSpxtRT$KurTJwdrx_7Qy;mC8s80 zvPgB~t`es&8P4)UYM)VRqev&~w!7aAAo(R;^$n)o;lT6n9-J+NZ#OJXxZhslX>RuQ zWi)(9Bx;XehoX`$C<)xgLz0^mg~P51YO2s5sh~020$ zM%ez9e*t!}2X9HZ+R%pe%_DOZo6!7G%QVwl?x-v(=b~1t*d7gZn){~A2jg5x7FFj6 z28Q+PG9lsMZvBfs?23}qO4LS(jFw>UT%fk(pt^A>m`+7dI(9%pk&((FnvOW-quui1 ziJ;l($8eCb{<5kfE4CHJ&d}6gHACo-n^5Mhxh)uWoc^Z}aW>OR4y0~?-r>lNVH`g< z0sUz}^7!V^e2mJq^9ngto)G3e)Y(t3v8fVd4!pEOvYEx@G^~2+*juWAvZ&9yqdFWR zheQGFGm_C0{;MYys5~T%oI#MI(_Xmx4;;Te5VUzn&Q-nt;Z5iT2KkU__-&4K( z9wcHPA;Hvz$!FYVz~|aRHad4BEv=Jaf8ub&St!9CH9bHo_&o%sJfe+h9O~ocI z{%H<@>5}t;w&Rt#3;o^}=KOP&Q|$gr8lCEqsB=^9d`vxsE$B$eIA#$8hZk}gp~!Ch z$Hh1mxa2c5l3q(znSCXWvENRY$}0Qs?qLdZyl3E+8-2XcT}NPu4?^xva$Tt8+v zcTX8h0jC&R>UN;jzcJ$hb+U6(9&qKXc;Uf5DoElv<}|VFj=)x7()X~Q2WSbU{CIhm zqJI0txB9LAapw^kS3#WSQ`4EB1-Ms7Mv?EZyJL~|l8?N9q&BiXTgv$fVDd)!*pA{Y z2EBdQw*?BrQmJ|^{Y5olQF3f3m-T!uuB zY-YAFlN7OJ9v1y0N|HZ5>COiIpO0Xs8VgvdBF*3llu2SP*qPzIA}8n+a&u0zFg58F z$?sl@4ZP4WPxQts%HBh%qbdox(bfT6p3RlK{U!51fwNut@kM%IOs7yIHlwN7TONoD z_g?M2JVl|KC12_SLeNCXxf`atckbKc1k&nKuNnS_INjxf{U+wfciSQ#?;4NJXM|@Nfa4>d;Raouzjpi5v|&(2Vb}Sq zEL>F|7m}8UC_WY`gN%Vq7i`S{{)<1Sef{`(04v8MGH*VH%`HzA~<6 z6I7_?!U3=Uh;Mcf9Z!BD&k`ti9_}>qxv%<1yPzA&1oOC;>I6z-QLGIEu$9LghsI-r-9$8EMJ7f?3gZ%d<8ro0s#y&OVIxBPUK6N{+b+YW1$MhE@phL8tS zl!o6=48Y6=tdB)G6KUYg08h68^|m(Kc%@#5!9#b$dCS+u3T1_4`rKgBCRrk0?RgoK z)3hw&V3I45bIv{@#3F4<6FEJDv|?xsSA2~{7+rPDVhn#CJkontIQ|QbDf8}br$$1t zz?dG?5N&!ni`>{eO9ycibCHdJxvmj^9Mi;#W~4hH1^zU8&iI@L4jX;2rE`D*oNe-xF2YMvuNpWCN?#JDceYMlU|U$m zcNc3>U`*%PJV~)YK#2pBrvOC41Sz`KIC*QcincT7 zfiwh4M|*l(4YAg%wanQ%#^*g$8~x<+%4%in{*ebBk_XenoN$~^yS_atC+5?HjtdSx zrX3SJ)qrv{@JRuBnQf2^V=*U|C0@_(V@?gzr*?;%vjwV0eAH=eP^#fs_aOf+gcpdg zl1p#R9|J?jL|nd&a70JDfb2xYYo3|fY{HfaBk5XAjAOx1VNOcO4@8g(1Y_bfUtBRV zZ3zHh$8Yp1nOUQNbWd#XSVXeEK_S8(wFFn}Qq=c+vAV)o!f<_UCBaTosF;vQWby8Y@r0X&&o@-ke};D@Tme{kV_awP3|(?nlhww)$1?z z%Qtnz;x+;yFzmj2kthd9%qKyn~e)D#75aLRN#nA)H6YPK;YHQ&?Sw;Ok5LtG| z%=??3-f^4bBfwayuH`0uYfUNe;@!C62VPG~IRZ?;{K+s@O&y=QQ)kDC>@HI~(}7kt zXNRUx;;Q$ouLWMlBWx3L*4yLKq zbDxmF7Fd1;$^tKNYy*l#2{*NKHQ;-0+MP!%txdhz7u`M3uVUXKd)UKrn8Gfqg=YE+ zvSoC?5ii7QF`7i}oXds-y=K?jG}>7y>tJzNI)bwqqT$!%^2yKtDagEf++S-^qR$jb&_c)aEO!>L`_HaevV_^qfI%o zv{Ib9IF0Cv4@S!gW79j&RRQ8q@K)-WZ>9x2$y&ob$lDDi&ognjOz0<-0Q8R z+EM58%rQj*e)Qo7VitJqCg$$j7|C3sIKDf2!pSTMm{HXjPhq&R>{JUl?j)~=@VSgk zYTV1z-oLOIS=6O5rQ-z)6 zX)I4-f(%oV2vdH3dUkDGn~o6Gs9+=s1TwK7?RgTHEprkKWK`R~V7b@@Lk;TVhDh7B zJDROD?1)*GtP!_R1DtK^m5BCb8^(|F&Yxu!YIg%>sZND(_#DjvGhNeL0!HpH@d387 zBFg^Tc__M3{^Q*o5Z7}n#2(+hltC=O`{FVW&{-%)EzJisOfd6iK=&D|dWMl>4z0s! zt|GR7r^iLSj2nbn8YR;YX+Cfr@Kc!vx;P@SnXHIrrwQ8li$CC9eN3S1lW%$Z^1Y<; zg45+n`&3!krN>i7WzZ@ES=y3lXq*pkCaOO#0C+U&Gd~4iH&uue8KwMWh?z&kI~kl zdtj`PYY}6T7>21x9A7W~COLga|1B5Cxyj3uKGFXIwzfk`Zk08fVG`b&2Uq3!{n!5Vy@IGxyE!Rp{i3u++l<8l8?Uc z75LO+BwE~80cYP4l!y~0N)!MS;6634pgGei*heCl^0ykf@HapDrdWwPl9bkw3dGLe9|8to^Ax6L=~*TjqE$Mk!{Q& zMr-Hesb%$YikvnAG03RvH{eJx%uci)=*|@3#O=1dSKIa?&`&p?rnczwFi`pkee9ge zj7V!7Q^K))@^}4B54Q71{0xw_bK)b}gm6N6%Xdhk*lv@EUY$I-MB&2hpxen++Yo!U zStIyLVYGNF$q7D?9~r2!_^Yy@CHzBs%_W<8f6TY*X2cLeC+R~6Fv%ryy`?HENNfU; z9^!d)+L-IC6KufT`bjQ$Nl414aInXq{(h7#(oEjJ7{TGWhUlOw#Ir#pR-;i0h$C&JqU zKRl+n^cw4@x=Y%8o>Hu0F)?;dl_ zHXXs`-LpJhKjI4tCU$5$FQE_wy7d6LE1Y>tur&hC*0IeRZSP{{M{jXW`8%z;N^N!8(2gmxyRqEHzp&LQ`=^+3 zClO__-75-h{daGWX1S%$rmgo*Ii{B~+Ptm^f$FOn{dxa$-6FZALoHwmt-Zhf47=Do zvj5ymJ_`O1!zHTj#DTXr(c#e>N2EMM60@0 z-#i*OwMlSepoKQ%F}mAF)HC9RHo(6j+R!TiU!8}%N{K0HQ)2a_Cf+7K@9xJ%Awk)% z2}R%k9B`M(uIdHj)rk~(2322K38P%oD-R`&Df2H>zoEY){AiGmTVb~jM9cvsj$89Q zWMS7Bwht(SR~|t|861Oa_^>4DPEMu$5}k$o=9|fo&H@ewrH+vx_WiWnx`TANr_}1B zh=|m7;3SYS)8{>%S`q7NO+ME=iUxT%eypUl0YhMyk!(odtQKK!GntzPeepyypYQVq zr>P@naE!uh9eUZus;{l1*<*Ou!eWO#bxM~`0$=`rD)U=d%u&C-gx0IA> zGwJL!7f1PCGwpWkrO?szE|k^>&eiG8!!?j;>#@+p>hevPDY?+YxKEZgZl%WvO){W1 z!tm~5t4~{`RNnj>6|j}J;Vh2qdx2(p96$YZaDJm!K_-5Vv>%u$!sjN)p&wERmmi7kd+{vL&hU!yPjE6`GAx&932|Xvnlfc%S2@(y z2cMCJPiP&PsQtuVSoz@FO+eDEklGF=l8_^Nj(b|B=%s!#Te{N#=gRg2@Vy|WI_!m% zP|;l_MPjrXgYy57~B8@3Fs7WeQ_2kr@wi3$b+^Xa)oh>IKgw1%<^E((fMVPUcp~<*!Afq_mUU+ojqTotj_9Db%0TZknSDLNIyB}()9zG`u<&5{1j+xjW|odDcxq{ z@i9$Heb+snibHu@Av=*pk*!$^GM;8%Cr8n~`OQKgw~&wGQvDqC(B!8amv>t=;tw^E zYp^K#RWX}jIJQl8SfR40?WYx?edr6ln+K~cS@lkQ14u*?uT+N8_c}(GDrhsSQW4WgmUxV(itLVL4PMg+rUEt+CrI50*wUi7obh})V_L7Z0xPp8}M*oq!iArP9q?tp>J7l?EHle!oh@5E09 z5+>ik9;qX_n{3igLA@lY(MgibSh<@omdlM*OSU$kRHQn#%JYa?v%dCDqZ;Am6ymsK zj=eX;8{UMdC$e@k>42X*YlG!3MvRtvPqS4j9UyC=MY2jJW@fFuV1yHc&%gu-GHJsx zmSzuHy#eSNj3b_dhh&oNg}P#oK=Xhz8Kx(yvji3)iPU{?IEDkgQ#@Y~$mz_^+!;;B z*hS1QYYuLp8+C{5;NO=IhJ7g`JDgX;Z$c&g`7Y$FfIpJFNoHPQSD$B;*1r~<(xQtK z_Xju{c2Zif-Mr;uI%H;~V&;SfxX>@6=rL0r)WGQp9uIOYrN#M8J0+96vi0*qJX+rp zg$z-9H8X2iB@P>U=1uWbvxHo`LUi*}7BI_NXf%avHxW#$KoHmgkN&p5xSCOo?58_? zNRZ*{(qOuYknPSV*$1GwGKp|ewlBblStJ$Q(^D>GK<8MzU;Mm%<{gyWwqEX5XGI<< zpe$)A`#j%!OMPQW&!FHRX@F(BX^^h~Os=+Z9=RxP0g8D4g_)j`YFD}KhypG2?R;-9 zW~}#d9CfTD4BrNlA8UDLR3Ns5(|(WNeLRkt{PZAJi=sz0gvC9`u|4Cx<=hdC(0U-@ z!+&`)4OtupqI+TT#w z;~?y1z`+ehRDWTTBJUP!)8l{jX3X>~+DRoFxhFo5Mo;6PS0~$H<-O|@VzD?o>q0x7 z&?v`SKKcfgTqoj{^}v{WFwkb|TB^W4^IiRj88J<;Y7DCfCl)NzE%>uF^2Z7rH}ceRiP;SqwG0 z8&3v-NSv8JYrTe1TzRtkSIO?Z&{x7^zS?QpZQ{l)VhlsPB4UYGOu`dQRgL>W$e|#T$4RKjP&bu2 zk;LDYTi9TL6BD80gw|^wFYcTn8Yv2@*K|(%ISROysy~pziT<|o$;Bja%xHZVbyBYj zNe6HH*ZNJwC``26Y`Aex@D4TU+wLF|RdC6r!Op(0c|rQO!FJuVK0fg+`nuxVL_2tU z*S8qieHk-N+N(o)b5e^|$==^RZ^R@O$Xyymjh9BFZFX)xB^O0zuOm&B^%{(qo1M0Vs99p*XgCHaoNX zy(Y&6Y&g*)Y?A31UT*?KO*y-H%!-}BNr~%8Z*h|~z==W%2+b31SS-O-R+al!zF%NW zA1HYzHh40zn3QaH^S>k)(oZ?b63FZ^Juit%n>GwvyZ#GCmX z9}Wwe12LvFOBAV6ua~ygU(a6gn4SJI)+}w~N`)%=poS_nwm*-Er;SwNAS31A@1bzw zcXc%>axz7RK-Wm}!`!~Do>DSHH}GMppX&>@x2=Dp`GX<|fykR*R%V{Axc;P=+eXF? zXQv-LlLzvxWb5_|rZiF~lAxaQ(U@pRCW|pB<{gZ-Q37Avq3fwF_=eb|8jha!*30r? z)TlpMze~f#0;8O;Nbpgkz$$;k1De^vs?Y#U?IfY%U_}ysrhfOZVq&>e8}d6Am4XLjUOO{xM-S-rtdm&Se3P#k>!0Q^O&WEuGQlh3 z%t{i_B6EQWjz!W66^ugMWP%UdP@~Ivo)AJLHA>;xq`|3;;$ca!C1K0ocwrVnarbf( zBPZuY|8U;hT(&>hwJ<3Z@U3-EWDFBKyR^(R$@z8XsQ;3QD^7!?mD}3jpoNmQ)N%~x zsh(HB%(pk{EQ@Gfti%u~DGbHrO4x?UW_Z!SimG8hD=L$lm?zduHu?a(eRRM-mn;Xs*C!`w9 z)ZQE+jksnr=m50AFM6-7p0Hm)?*RoFre*)5)_$c3Wm`r=Y;tIJ!_WT)@8S zN`-|DftW~R;NUDb>e}70stII-TuEU*xX#J(E^3;Vga3C-n1A&okXfh)n>$3%WZOQXW!^Rg3AX-MHkiV;_*iMO#wuV7 zN{$0{3jVVM4hdVi)Qsd+?k+rmelR~lZ1j68c2YW49{cv*~h|79xV-uQb& zzzI~kV>Mef?hdaT39qCN2&b)G|I0NY+ylRC??;eXt#bh+Uo1u*rJ|=k&3*|EW0Zw8 zI!#%SgqaUVTQ*?;l{)`~k+nE_lL#U90;5SGwE*xNhr-K_sBz7VF7*N*FXCV+Wec6) zlDp`wn(0<&rs#9yez^c85wQ5TrG|U2N1XTY3z{lY*9ExgRn-5SE2$x>++sp(@i_Bg e+0Y`7yz!r3A|PV`Q!9n^6x@EzZi<~Jrs5`Qvw^Sx literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515120002-Config.rsc b/MikroMaster/20260515/20260515120002-Config.rsc new file mode 100644 index 0000000..e478a09 --- /dev/null +++ b/MikroMaster/20260515/20260515120002-Config.rsc @@ -0,0 +1,3404 @@ +# 2026-05-15 12:00:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/646/5f377362\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 11:50:03 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"fbcd.net\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"twimg.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"ytimg.com\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$ListRKN add\ + ress: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list:\$ListRKN \ + address: \$newAddress domain: \$aItem record: \$aRecord\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=iCloud-Mail +add address=smtp.mail.me.com.akadns.net comment=smtp.mail.me.com.akadns.net \ + list=iCloud-Mail +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=172.66.0.227 comment=x.com list=RKN-dnsLookup +add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.99 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.103 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.104 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.106 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.105 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.147 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.190 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.136 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.93 comment=youtu.be list=RKN-dnsLookup +add address=64.233.164.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.103 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.106 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.105 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.120 comment=gstatic.com list=RKN-dnsLookup +add address=173.194.73.94 comment=gstatic.com list=RKN-dnsLookup +add address=74.125.131.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address-list=NoVdsina \ + new-routing-mark=main src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="vk.com raw" \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="ok.ru raw" \ + content=ok.ru +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "comp-lenta.ru raw" content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="gov.ru raw" \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "r78.fssp.gov.ru raw" content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260515/20260515120002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515120002-Diff-Config.rsc new file mode 100644 index 0000000..da0bdc5 --- /dev/null +++ b/MikroMaster/history/20260515/20260515120002-Diff-Config.rsc @@ -0,0 +1,211 @@ +348c348 +< \n:global CommitId \"main/646/5f377362\";\r\ +--- +> \n:global CommitId \"main/641/dccfa1dc\";\r\ +351c351 +< r: root, in 11:50:03 15.05.2026.\";\r\ +--- +> r: root, in 11:05:03 15.05.2026.\";\r\ +440a441,443 +> \n:global WaitDNSResolving;\r\ +> \n:global WaitFullyConnected;\r\ +> \n:global WaitTimeSync;\r\ +2255a2259,2426 +> add comment="Download custom Certificates By Routers Identity " \ +> dont-require-permissions=no name=mod/AM-Certs-By-Ident owner=\ +> mod/AM-Certs-By-Ident policy=\ +> ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ +> !rsc by Vados\r\ +> \n# RouterOS script: AM-Certs-By-Ident\r\ +> \n# Script comment: Download custom Certificates By Routers Identity \r\ +> \n# Copyright (c) 2005-2026 Vados \r\ +> \n#\r\ +> \n#\r\ +> \n# requires RouterOS, version=7.19\r\ +> \n# requires device-mode, fetch\r\ +> \n#\r\ +> \n# :local ScriptName [ :jobname ];\r\ +> \n#\r\ +> \n# CloudFlare\r\ +> \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ +> ootCA.crt.pem;\r\ +> \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ +> \"\";\r\ +> \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ +> G2TLSRSASHA2562020CA1-1.crt.pem;\r\ +> \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ +> .pem passphrase=\"\";\r\ +> \n# Quad9\r\ +> \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ +> lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ +> \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ +> .pem passphrase=\"\";\r\ +> \n\r\ +> \n:global GlobalScriptsUrl;\r\ +> \n:local UrlSuffix [/system/identity/get name];\r\ +> \n:local UrlDir \"certs/\";\r\ +> \n:local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\");\r\ +> \n\r\ +> \n:log error \$CertUrl;\r\ +> \n\r\ +> \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ +> me=\"DigiCert Global Root CA\" ];\r\ +> \n\r\ +> \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ +> n-name=\"DigiCert Assured ID Root CA\" ];\r\ +> \n\r\ +> \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ +> n-name=\"DigiCert Assured ID Root G3\" ];\r\ +> \n\r\ +> \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ +> n-name=\"DigiCert Assured ID Root G3\" ];\r\ +> \n\r\ +> \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ +> ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ +> \n\r\ +> \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ +> ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ +> \n\r\ +> \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ +> me=\"DigiCert Global Root G2\" ];\r\ +> \n\r\ +> \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ +> me=\"DigiCert Global Root G3\" ];\r\ +> \n\r\ +> \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ +> mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ +> \n\r\ +> \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ +> on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ +> \n\r\ +> \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ +> ame=\"DigiCert Trusted Root G4\" ];\r\ +> \n\r\ +> \n:set CertName \"GTS-Root-R4.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ +> t R4\" ];\r\ +> \n\r\ +> \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ +> where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ +> \n\r\ +> \n:set CertName \"ISRG-Root-X1.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ +> oot X1\" ];\r\ +> \n\r\ +> \n:set CertName \"Root-YE.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ +> ;\r\ +> \n\r\ +> \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ +> \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ +> \n\r\ +> \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ +> \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ +> \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ +> here common-name=\"USERTrust RSA Certification Authority\" ];\r\ +> \n\r\ +> \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n#:set CertName \"GTS-Root-RX.pem\";\r\ +> \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ +> \r\ +> \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n#internet\r\ +> \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n#:set CertName \"ISRG-Root-X2.pem\";\r\ +> \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ +> \r\ +> \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ +> \n\r\ +> \n\r\ +> \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ +> h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ +> .com/dns-query verify-doh-cert=yes;\r\ +> \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ +> \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ +> ment=\"cloudflare-dns IPv4 1\";\r\ +> \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ +> \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ +> ment=\"cloudflare-dns IPv4 2\"\r\ +> \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ +> e-dns.com type=AAAA\r\ +> \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ +> e-dns.com type=AAAA\r\ +> \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ +> \n#/ip/dns set servers=\"\";" +3060d3230 +< add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +3061a3232 +> add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +3064d3234 +< add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +3065a3236 +> add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +3070d3240 +< add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +3071a3242 +> add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +3084,3089c3255,3260 +< add address=209.85.233.99 comment=googleapis.com list=RKN-dnsLookup +< add address=209.85.233.103 comment=googleapis.com list=RKN-dnsLookup +< add address=209.85.233.104 comment=googleapis.com list=RKN-dnsLookup +< add address=209.85.233.106 comment=googleapis.com list=RKN-dnsLookup +< add address=209.85.233.105 comment=googleapis.com list=RKN-dnsLookup +< add address=209.85.233.147 comment=googleapis.com list=RKN-dnsLookup +--- +> add address=108.177.14.105 comment=googleapis.com list=RKN-dnsLookup +> add address=108.177.14.103 comment=googleapis.com list=RKN-dnsLookup +> add address=108.177.14.106 comment=googleapis.com list=RKN-dnsLookup +> add address=108.177.14.147 comment=googleapis.com list=RKN-dnsLookup +> add address=108.177.14.99 comment=googleapis.com list=RKN-dnsLookup +> add address=108.177.14.104 comment=googleapis.com list=RKN-dnsLookup +3102c3273 +< add address=74.125.131.132 comment=googleusercontent.com list=RKN-dnsLookup +--- +> add address=108.177.14.132 comment=googleusercontent.com list=RKN-dnsLookup -- 2.52.0