From b8fab114f650fb52609651824034496b00b9b2e5 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 14:40:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 14:40:19. --- .../20260512/20260512144001-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512144001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512144001-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260512/20260512144001-Binary.backup create mode 100644 MikroMaster/20260512/20260512144001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512144001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512144001-Binary.backup b/MikroMaster/20260512/20260512144001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9c1e9d0d5782996618fd07838a898f9fefef33fa GIT binary patch literal 302653 zcmV+aKLEh*sF8C$o&*3&^g0DOB8bEu=e=kvXy)Gl000O80004Z`SAPzLud%e7HfB! zU|S19OnAO(lUKt{;4LK3`9OrvByr`UM(}EzKP#<0s2Qa7#ysb4Yag(L`@3l_6m95 zLcMo21rNu3nRP~K8qaEILtTv9>eXWs%GZ$zxwTX!WL$n_`z({!A^^JakKkCYXPlC} zn#O(!l{vD*dEN=j9ToEXOnB>$-PsZ}_8v8QcXD=t3)y6}GC169Vc`vt(74JL&rcZb z?pFED6_WAljV;72mE8y0;}x>d4m^?ph)1-Aht034SPTRF^y1LaGyaQ;UhQ8afMc5tTKyHG9n zP8|C(TFjb#^TbDCus#QnS1RotiK>G#9+RLhB4ibke_sEZ-V*Z8Rg`^EGbesK`Y<*) zk0z_7*zf!|fzFWrs?JZ?d8|&$#h9Z*1t`0dY_+}>Qhjg1mKl4E>zG5hzZjzV)Yq;IXap^SsEm+oFRWZ; z-h2`zb|^M;{TRkKp@qW#*-xMt%+vYUw9oQ0lQG8<`VPNx6RHtraQQUerv&A%f8ay*@hnV95PVuj?#ZD2;F$3SH}M_l1wNfbiAJ}!B&E~Aal z&YIN~diOFx7kh;PmqX)%w3+SyrVAnZKlV|c{B9kb+gre7JV70}f zsb#Y2_=Ke76ka{2kaz47xl;6ev*z$zBw0w_8@0*~MfI%m!-!?3$7<{WUqLlJUC9D( z?h6Cgcp{b+sXopX-%MM(x8iDN|MpW)D`X+Y!$?QT$GQ4)_-xhDZq;xM^nye%Rzq@L z+_X`GO%i0NNud?m??W|-)30iUM$gMfq7EuRQ%gFV1gu6=^RWzwC97dcv#+r_Mu!6o z0`wW}dx~xCa(~GXJITHSlBzGICqZ?ZZ1UYzMBWIQlo1*Lay9KBUE}AZA|VL&$f&{U z79bwpvh0jsFJJ8VKn$xaw1;KH`WrvlrnZD3(8wJVMt=-?B5XHXO%A7|i7w`Z%FpPB zv1&GUD-+*Vq=eutYM~0F%J;fs*LaXc+xg++b_jKy`ehpXKuY4E^kGzKvnQsfs#oQM zM5bN#9QKY3p3Q#q9MhDy>)7c%Wdw?h)?`8*oJ_iq1hV{{v#UPo6 z>Ffa+wZiiwdtKCXL5$K77*CPKE*{%0G;mVDjS};RUYB`tC=4Y#YNXtg?( z*_NTk_`$O-mKX9s$9`ZEAx*H)HwmaOqS$%3NVagHCV(1RTF7X=gouU6vd3@X3z%H9 zXxfaxX(lr6PmHPQKtcgBIWHgbPSy|n0M5O?4^RE>x{G4dr@C^+9^OiB3HqRgC zW;w$Qk`GSUEqs?5fgYcnTf}JkwmQCM$*&5inT30pnIzg*`r_ZK-1l(MOet)@H%XrSblC zk|=RPxyeJ<*;P>DE=CuIvltqjazK>Wo7IfV$M3VzH>zM3`wcKgD5H3a#SIvO-6vtt z;w~TCY44qf3~=PO=TDQQ`Io11wsErKH%z8jt^m{J$f^`v`12Zi@n>xan)^#Mh6bP6)anGqu$GN`99lF6=SZL%mjijvAnCeVgR)Ol>S zW+3*4c5SdL*Dg3fC#D}Gy28DP6v$a2>XZqZ2Q`ZVZnj_1KP{wGLYZULd_#ZZt9PbU zBcP^S8M5ox>2yUY&rX0Ha8|{e_PYDPEA|^$aEjKs=vg{Xkx#V(oPit%gqNtRvXUi^FQPO z%Hfda-AF{m(g4a~i}3#YSWi;*1QyoH&U%W`2#DVTjBJQ%AUd-NYRJI68IH~g+ZFFpelXg3n zdOrY`KK6hHRL36$1o3bHsjkjfZJpE+R(EA7TSR*U)xh?F{z`;kiB#i8Z2(`EH)SiI zB>4nFBtbG>=O;!!+47QPTEw7C3IElLHh9m)ihEfRphVxjVJ@vC;0ulnCY3(x zt1~Mb$;!*8E8$UR)AZ|eq#E1jmgQwwS#Kew7cZCyLyPAXl>~5g zFpKYuJFlm`_gykM_n^Kwem?qiAKL~>K^#pAor;aoe1)!-$Vlxu*2F}d5@yw)WTk#h zlqDU08N+iGXA?p(Wd{8KVB2kElM&;Iu~21v}_Iz#`BjB6QUl?5cuG> zCD>*I6Ev1pC>3(D#Bn3rbf6I&1(yd2l?i`L3X2>~I^W5J{Jy5eI}|?PT!ah{*ule| zPE7mSagO)kCcT?a9e+vxf;bj|!zJ|`;FUC^ zp7&@zx`AIqg)+zqY8|p|5kSXHwmKdUaHkx9mH1R{LR1NYqg7n#JJgToVBTiLB70Y! zr6pdBtgJps*_w9HZKKx|_%70?Q+i#{K^6@ExdIAU8PI4-q$Jm~YbnyK$kn z>xeJ0O%9Re-ntS>%mKYL!+lo+OcM+Gpwd1bEf}jnbygcjar^yU*ub1`lrk+&H?!M9 zmJo)u4?j}0NB&06Sle-TbI>3K5AHNxY^<8{uq{aZt8@$*ErE?07C8^^voHxBYCCmw zWvO;JH>ed`r~aNwqhIiHuipcFzP+CQ_Pw|P5z6sq*L27ikVfh@VaQ~V}l;gL0*t9vej zLyt?Yit#7bOQ)!@9^qRA;q-yVh2zK2J*clk`p-K_R)kCRASb6aM;T{?xD8da@jt`B z6%4EI3kO3L$F4AVx$vYpqmq+TBG1MRg8rh41VEKuY8pP*5irpW?qIM;ZnCQWP}zQT z$}LkjN+b{!ZekE**LXKKBP{z5*&v-kgw^|DaL$8Q2x^06*pf-Bu$lV; zv0u?eaa4NQ?X$d9B@@RVDQ%|2eco|^)R!6gG8%g3H`E$mZ&XLa`{xYN&G~zZ^tEk3 zSYu=O(PtW9UE~+RyxC?Y%l+F@)>Z}e5DphB#yeEeF!Bl& z+LqU?vaFeSYnOMBK^_L}<&n(+uKY_xhQryDTh(yGhLdw_`=rKS^#X`q9N}2D+kKQsSqAR
ZgS6LMMy-T-R#^C9A90`dVDuG&NSJj3bLhTlA?0R-Yfr7@#Z zFndw_eK_%X_K&Cr^2YzH!_5?*&NcoepdC_tz(Rx=sJYZGmr$UG3{nZfM>ECZ=*oeL zrQpsfhOll;d}QpPr7(fnUSt z0ax~jXak}H`kl$_9z$UbTY+!Ws3 zUiFL@tp1EI%5EJNQL>IR<(NuH^(YJY`*y12p`wQfJ1+3YioE=&0!ufZv=INH*0;u~MjVyTodeQ;}5Be)lM#Wj-T%{$cFommowBlLeSI7`0s{$RUi1()U@Z&Q`V2?Vt+8rKVjEM?a;#4fX1?3C+8@nF_Gj8o01LxBi5Ti$x@(pGD?@koiGYw+rth3Fro@;}Xb z`7c0`Ltfq&H5?NiVC=m20R3{Ct=@Uj_^8%N{pXSSK<2ZR>$Cp-*7DcVmRIGWyCw+f z$KCO5S(f70-Q_h6djy-R0>(4&F_f)>Q18)bEENWgx4 z|BObp-i`g>9eWA7gHW{jC&iC~f>azQfz)IV@jbeWGt8Ut9Z=zCEu+KHV56m;JxaP5 zxN)Abh~W6q`qPoH_9}%pP~&1as5fv^*#O&2_7k>labrJ1;WaoxRwmprE708&;O@Jb zgD@Jak~Kle5W%_o^DA~BZFwNJmHwU465}AW?qhXK;Hz_h#GDN1D5HO5#r;;#Tv=7X zVhzoAbID5KdcwG>1k4W>cIp3mS2OP3b$n0&oR2_0I`v}F3$FGv%lipW0kNu5&)(ST zucj3Az@G2rG4fv*PeN(vZR*E$wS_Nyq=SF4E8jngzNRUb8U9UpaVvs!a*WbI{KT=I z1o?`;UxRxX6hAPJ((+Iq@B@n1Fk;NT(a= zpdFXN^&GUUFw&0V{82b(MPJ2H}_2s!CVK~=w5L@gOl?`+ODIxGAp@00Q|TZhKpHN!sPB`QhHhWCUp43Fn@B!s>UYxvUzNjdp#F5naQB3e|TtSQJCeE3`>BnWRN;PJm&8LBu zQ0UmY9#mzX5#cm7b;RCDU+=cJewYuquNIW0g1wXfGtTvpiU!rrAhQQQ>Sr&@S3~M> zAeRMzHLPUbxm;~ODC7^en#7t5&SL9D{T~fBpWS`DLCz9h6EOs=QmRYV$r$NT&M~(QYj+8T;pW#MutKxg9m>(PcZ!YwwgI_w-0;PXHT{y)L4bo& zT+KH~%G~Ayl$oy?p8c^hhDF=P$ZvDz5eU+RU@X7Ko<54e2em=CY?Hl`iZ|jW0@Z67 z{w=TR#p+*6)xmph+soKnv2c?C)6LfgVA%NQ^bg|B<2@?csH8%Ef*5L!{FCjj_ac1M zJ(E1hBmaOdge-l%&G1qVjP~eV|V}(vgTw2*Nf59w7eCub!f5R;yXOQ;%N~uV?1l`<0ID=Y(=6-TO zM;)n>^Ds|26?zRTjlFvYdzh1D{!q!Vr;a?b%nFR+fDri%prcdQcf9~)Tb@O-U1C~$ z>f)sYU}Sf~#kt9{gKrNl{^S|1x5abvKacB+F0ll1neSTWtu3b;3~FN3Vs7w}So8cv zMfD}v&Eg19bPIGZ&vK;R@H{NMKY5GgY?P#5vs4d2RTuamVGui{8A-Wzgl>Kzj#mSm z>Zl>M?-ECF7bg+V{~DC+G1g;tgY9>sjlWrcs=%D?&a!O1zz5$on0&Z!#0uuPWFSU`Xie zG~gtez6iZZiLQLUuDrp+6tvLwU&LJRmAA)T3} zNhzcxv-1~!n6XIc%*YkiSwO4U*wL~TW%M(^as?wV24iUrIR)N=LefQrrP|XjNs^eJ z3~cnPV6~d1EK-yu`v{DvVee52Y5u+>Ns3dJZ^6x!hsf~?PZ8NCKN`|8 z88W(C?%1gXvXpwTMck>1bJy)7%u#<1dx5=`07qioz}VB`tHbOQ*vs>6pd=x-qhuBX zF!`#na6{ke37@;D{Ogt? znUNrcl#>`~l651hi6Gu?U0hMiAC8YNewhIn#m&CxrL&Uk22+l~Zi}8Xa|~Kp6bAD& zSOhmO%#7dF{h0YY%{9@ecz6Hrnaey%CUwh}p+$djRn5i%I5|5>`FE*&W#&W79TFB` zv3a&;43~(Nw4QbZT=7h#I?4yeMf};xQ!TU`Q1uyzSTA$Jt$aag7=3s*%K-$_nCrI2 zDfgqV>;E;J$YvG4GKbt5+PlhIR+aMptelc_Fl=}KdUWu7IHPy%o9FI5GgpaWz9?AY zmN}j{7WRroFte^NH?{gHNJSTu`V>9X!iTmymx}lQ{`z@mHhvFYBK@?Z{HWYzH2%mh?$rnY z7j#w+W-)bW!N&oi)OUR?KjGVL@Tk3OE?}y~nT_4_Z-Fb!+Ka@p>5ir6K0bnu9(QA8 z|G$;};R~Mn52M~0lSwA4!_}lW7DR-7wxS3l;foywEx@I}@4-3{shkfpb9o3V)>#TJYgO z<`>2AtUxBLu8@rIRhMy;?dFGGAjuUEdHh5p3#NwoKDH+Y^6UzUdjSto>n4!%&nw+~ zP;zt<^l|Cw{=Fp5J6>JAv{59UEE&Bf%39%UU8;J+yflLf^j6Djbb;M)-xCmhQk~Ms zH3(o$bZgLX9+-DDlmZFP@;_TX{ymp?xuu9Uw~LgzQq5qIq=syGvYa19t^`OAj-p(G+30^HIs~&3qsEY|0CE&?O$AL4`S?!u z6=dK}zbxm4CeBzV^H5E^(ZdlqhB9pAu03D{*P{QI(VwjSK@u+(0?Of_WFVa$E5QBc zFBH};&Z@r=u$b!4XRAaC0Fz~?KwTUWUB5g<#l1x=S|fuXUh%=7ueV}EnnhC`W~y(J z1-GfOG>)tyZVZomX=2C(dUfF*Z|zoGNwPIf67(-^Z`kWWDL_LhGW8&l5U$zA5j8qW zpO=7T#O87eTzA9H0{50f^;4+h3$Ne8hjDrVL%(bmFhPA&*6P+SOrw~M`U}uSXsgyr zPyhxuc4L3@iQ$IJUMY?VK&7zYl=3E0XVuplhPV8)>%`&Gl4}t!f|Ef&)<}_WKo`A= zD?rZNEkvHbS6{p7G=(~#>fE0r~;4y*jOAlpt!T))Be zV0K}_opI3Ye;c(9T6hL^H_XtHh*>EAX-2;i-(qTclu8KdUUD7@gu>&>=rtcKUfm?C zBnyq7Qh!ut+|8VP%Sv;?V@in^l|{FZ49nb86=@u^PjL+Bi1;M1PUx86?b@WmwJIJ+ zQjg#IH0R|y=xq_+P5!3qu54ejVly8i_6-zRuD>gDA^Yhwsti%brLUB%MJc3gUt8Q?JfpP_miXq3U1V;qPj49CifmAB1pJ~&JSdBhw`xQ!m?98KUWxN9jnYq4T+Sro46x-Z zWz{YrNI8O+(=}cR&q0s4oe054QG>{TMp1MVemE@1+VDJ5Du7|Z-!m$j&mFNci6JsF4%<{*(TB5@34RCDseSYRKiWQOc(R5y^ZwuV(gHeda=skCLz z!Xx+|ay_ZII(x?%&^F96$Rfvc&H*o$Zc+oA$=2-jGU&CNI|?qn9)k?ptZ)`&U6hSI z1!~y(SQMnSc>o#G5%&wUVDY>)PLOnv0Yj-mvfU24EaG1Q!exD>=tt*}sww76JMf0J zFnK0ne~ZVJ@)OYx;|rq8ZaMC0)*&ZH8LoeoXD-i=b4{)X-}IZ*ZAALLm|{Q3 z{(w;t^mRQ#!?$h$=9l2ZZsoZ71M{I>sz^hrheV2J{=>}sC~n(d>oC31|I)t(CY~^6 zLJbVG;zS5ld>kQUceFaS3DfdnE&>BXKvqAX!G=e2jrF)fdQ z*}h4Nx4*Tq#iTA%75AgOSW0Nxf2wA97f|nRf^9PFmx%1i!a`eNj%5Mb3(q11SJ`+6 z0MRc3+*9ff$Q@k0-6$Jt(A5@pbZ)^?h_{v2UsBx4V1m+!+WF2AzijVdT<`X@_YC@@VVZyC!SKX*>F}C^hmdn zQ>C1XY+`#XHY&CpSgMKXMHm>YA!Vq>`4(SqdPeYpDLr1wnL!Uo0_J1;h3A^5nPmik zIvnJ6vt$L}LSw%STgi*;gcbNA^Knf*piYAwkFY^q#M#0&NLVE8E(8lwceoM{&efR2 zh8Jd?XS8a#v6v>-wU*x5v*zaX*_*;fD_`86NAI#VvucektAO)aN%%zTK6-g9m&Yq8 zQ*e18WL}vo5vXBM4`sEv;i-QOKripSI+FEob>mK4;OT6B%aI3F%vyB0STHBUzZhXq+0FKa%-+Z zhX&$&Fc9kN)7=~ZDdzc2B)n#sZ)xbCcXey!*5KY5YAx4&1eXj3bfsuDyJ%~rIrERX zJ&LRbhtNA>qNq7j{FZ1;G=>f3Je`MR-T`zKeQxKet!yM&O5>uH(sd#tUmNPL-aW5c zIS{Q)S_9=#^mcj7F+D!8DIEl**UjRHEBnU29B?n&bbYFAg5t)}Wri17HhvA@pW0@S zKu6}{T7bR;YX{Sg8l$HECOMRdD;~v(M!1ifbEDJ`sT;0>7|5g6CjC#mp@B2V<{F~0 zE>p#ny={^%ytiEQ81Gc#?q|Ll3_53-q5^6Oja(d8mnAuQtk@QH4sjBr4}31L()c|t zk>tlM3+1}Az>~UE;fmpkAU#}{!7ji4FW`5H;8;np!)vSk6$`#a;|bH=4Wg5HH~8)X zUMm4%;A)55dlW{q=8UlX8l1ZgvI+_F zkheViqn}!%NIrEdMn`;=2i`t4w;ADTSYaW2LXEU_yCr=IBDF{+)@1%Rq(A&fxqioC z3|n?ub-=z;6g$v%`nn9s(6c6EsiL@GzbsG7+0VM}f0X1>8?+Shjuph^}E9-b+Vic%8|kPN^BL^fl_FdavJM3T(nrO z2%yDq9=fy7dP$*ak3Ex_b=)#cqe+hv$Mrwp&z54dNyXXF@rG=8Pz~pwFrW26Y~Cd>*++5c7;_oW@%{~g1PN@4>wV^~ zdO9VnA+cyQZyD{1k8CU2JZp9e0f=?yn$rX|e!CR{P2wDli27 zmDRyKSs1yOqlYDZzyglxMBzyre+qo~&v<;TGC8P~B_!odUg!r}%xyKwc~!$x|`u2ED|ZhYI!%`=jj zb&3xKW^lf6TcFz~m#q8ZP6STsSMWDGHc%_T9BmAqt>qBB&vrc-E^X&<6~cQ{^FB7~ zcuHLzV9Fo=E?nnjJi?boAa~}=;;gu7Ak4Gv`0UZQ0xyzL04QlRebWiWuy;jSr2UE< z5VrpEPmuHmfpZ4U1v|SbcWx7~GQH1+K9c9(-APcIhT8CRr6c)$8bk_dj5kH+;LPKZ zM#}CyTNR;~4c)?v*(8Fe1(yU`fPW*r)=(w>>o2E9U-w!yxvzk)J{YGugw z3f<0$w*#5-l~*2+u{3su&xa>xzBgKk^kw&6G~viF)|pEvH!5bHW(IIL2Dfh($DKiy zo>qMThCN^Xth+5w!4i9%dr>1spZHp90c8#?76xgB+8gS%EqedA@gv7Hze=n%mxxPI zHKU!;(wI(iB3KBMMb571!9GPL+Gn1y$LVu-VA@#>njk=iv@<2&>rw)fyw%2dn{0XC z^`1bkcX+#c#YIom$-e@D4NbfP59b=dG>+@?*kWTEK`qabo0+X!iF+(=)iC^92Nj-| zRKt@Tltmt?-pHCyhE;UkiN6^sOHVb0q`-i@J9qKN`J{}mLKN|9{hYzfQ5Xt=_ zMS&`h&OHEuo2bh=F&D(VcyCdp@&TRJmW>*IP^7FMA6+Oyk$#ipmH((2s^^tx(n#t? z?9mg%a>pO45*57?pd3<_GY}9NQI9yq))Q9(6qo4cX zem0(j*Rym)TG?-~6+KrE;q+PCkREW%Ejnl~Rn*B?G*3u{?=t zM!txHH0ZRiuv(vlm48}iuM!R7#_!x-&k89XV*uY)BU#`g22Kl(ue+{88Q2=fSdelf z3*cpQRSNsmCSa@Gg)}D7AR&%%MKibN9h3PZp2n&;gt0mYBm?&>))nmnM0i(=k~@)@ z+Q6IHzzw&PLI(>8#BN!HguMImuD>`mkY(*}p>Kltz{=@Eo0-!~&~Q9BDI+ANNBr!z z83mb7wNkZ0yNF7Fsd#2%;MvKE(1UpUjP*%Y>a>z6XpGRk?Xd*BMn`b_O&b2ij~;MX z*d6Y#M838!jxnj}+qQvZ4pk%_-4_=SeSp*f_*Aa&zk|}Xm+KJ;QRA&wz~x(j)RR*_G$pQs9v=Me&m_l zUNaZE4hIqmG)#E_4Am63RKA-5uy*ab*xs81G$-6)vxEQ1K_wyb`RP@{pwed{S;h!U zDfsWWW{pJxec5k&v`!x3gNBLb?45C~`HYu{brG3iqwh!sc@&a04#}!#clXLNP*$mA z@w+!&hp&}a{MavQcH$Q~^*{g9S8`8XSD;Pp(&;NFNlsLUYxL}dIyxDVK6l#}^37HW zSXrr!oXa4%a_EFK7tQO?#V~kx6J~wylK_eYE3N2)FVtP~Ru|%sBD)hDE=FYs>3I?H ze?Le9K;ONXj#V}Y3ThYfVPmMKr_l=~TwU?2e~iONApqVOFSaQI==pJtE&?}TJdriT zhTy1iMhpgsyeesRe!~V8_WgW1VjTXa^ zcq4LdThA4wCd{I~s0-U=+rcNOh}T|TO5K=8;nS8t24b02NDUjx_{Dy&0deY%L@F7k z0&6}{b%=7kJ35J3b^E#f)v13D{qny+2d^XKbpSJE#CrDu`@PWfW6rr{JC@7LM#{Sm zagVX&h!apZTM%OrJI+U~ptA*-R2FAj>C^RV-sPtM9{9&~dbgK0Xn~>vz^(G9uEd|t9YMVJ{?nHgVSo-RhX-h>LrY}eRcHtn zR&iyh<+?Y4p|&H%8V2iD2ZJUGZPg1eW1-K0U))o`)82 zgz10#tE`u-9291n?XmzlWertl4fPTnpJwaPq3rKsz`0v+Ut4f9@nKzCkhVbAiQ5ei zXr=yU$Fh{=P{1myugTc~5YUAh3Sd7J+{;h@_l-Xu!+|aBUOTa!8Sh2|6xY?(|EWCd z_&9cd=Y*+Xxize+%}d8yR!?W`1+C-VW08Hm=+|M!L^FejkLqU5gZ?JJLdJ$B-Gp#s zvkxBN3opO8Z#LIA6w}F=PRMX3t`G7jEEst7igrP|l(7tvL>uA&^7d!jX3I(n%eOUh znOoeNQZpBvLuBH@%a})Qfj(;}w(|`y)SD8Q6h~+O!$uif=rDjd(%}}6y*W|G3hHOS z>dVsG@2eS}2SJk{##r2;FrAtnXjkcUIGqMoA^jUru1Le2$t|=HESdAGj5k_K0($BG zl_Vdr{321K7^T-aIFM+JilrDOq`%RC#I$?V_h2CY3W{0-wj68Q`D>os4X9M_GNBYa znhR3^p`z|RX5*v`R9ae-Yt*BxBXnmy5|0EheuLJTM9h7mMbz zffdwHY;m|-23)4U(T^rF<&-_lh? zG1EhQ4}oSjW-1~(U!~HQZ!~Hh;uRhRp2lIq%1hjN44IZBO1l`x}fQ5u09cr=#mZQ;<>c{-904tvuELurl4 z0R0~X|Bw^$hNmBtAk1Y^f(RvJ^Zc5%y5CR<94I}dma?`>wnnnl)E>*(hwRxWV%^lA z^TET+gW6yOzj@`mg(MBd_hWvhQ#ss}yl3h}o%pKeOyBH|7M-wf7)ALsp4Ag2IeQ=GN;e$Cvf0t|2R%lvqyH1s@_FqC19ilj`cpRqN=N;FZttoG0q&#e*m>jpVLM1hrja{ci5ME_ zsUdw*-*#)$<5T%#+j@}FKAE>1XzwE@8-PpfKL(g(ck#Jm)!kS$m*hD#JRZ{F&A9!! zM`}qLoPgkDID;R7o1yLPaflbpto_K?e#*C?0b#?UUb+^?^RTex)fB|=Raj-U>B+DV zi^$>ppQYOlvM_6(YuK-kz2$xdh*=WP)xP(iB~V#TVv3CmMg5AxFz#ChvLU_Kw|_~wJ|>`1~j`_K5IgXn`(@S4t^ z=e=BlxmjU73BNnFlQzxx`kqI>gva%lu$3-OIW5hdI?^F3Zf;0ff}%3(xOLoyGHR?8G1L7|CY1NE!Wc3^R8Ai92#5R*HH zOScdp-%wG3$PWe2^<6#0|LMxVDB=Z>*ZuJc?J4&wdoK9zr>Q>Rng1_Fm8eOZV!a`s zzc^zGo(Sl@Q(#3Lmm37GP%ownw2SUtsEak7+beF=|YH?r`Xrksx zzpE7X;{$tX#4ea&ko?X5Duu{pqwz*)jQjGP7PwS(|H(ren|8hOjzC87NEOpnHMsdK5diMgu*iK$ zD2+`X%`N;m#|Z+=a!%kV;Vn{6aGe&}tT?pDI>4*}pPkCtXYnDFAvpTC5>(=4`qKxH)eLCj(Nu>Pg& z_9*wNhh+jj%$1gMarS)E=0+2Qv>k7BTYqpQ;g)uYT*%91EOKrE))J1$VuP{(L7brC zI>9m!zs+Z3=12>BoMCOzeEJz&$b*bx?4+bUIA331!(=fXBpvZu=9{j}zul{sc!s&9^(&}@1Z5~siY{7d>t0wI??mH6sjl@TB)2L(;xK{3T*e+gy2*(HpGBsbhmdE`Uux?T_!ZusA05i#Zb1Idu=M?cQZV` zG0C|n+aAA9ZGHD(51`~RH~S1)GhGdji|fob?=W6UzWs%>H)D{pT~&ZW;KscEKwT-G zs)5yZ#{X*gDLgfLNM&C7Sd6J~H!C0e?s#VUsn(rlj}?#LChRxRv^k#lpWzlWCjht- z)0X(yhtg_)88J#u^Xv29jHp_W&y>ymGPc`!B7T6uYrg^#T*gpB3Qt0T5 znMH+Xcz09OHUjhy+Wv9>HH_W{5-Y;KUMB%o;C;SvOq+3#ryo*)+Ac;qB^vt>w+mh_ zqY2-jLvPaxVNj2&Y^LJ?Wk$dl7N6T2etmdSWIPrpVkCytiB~)ey36Cs#B=Q9MtM35 zd{WQ$%#FvvwPDFXc($w(>km&5O?LJOQZsCuJ$`}KV>a;*Afoa}E>NR@RMUacOucPH%%6T!*LCw9I&-f<`5q8}Z54OJ1)i3F=?xz4boL!jj+W# z`o}`AC0h5tdT2b?x>-$&uwsy+tSEpp$f>067g^pYDL zOaP2aCuTJ(j-?ik9vcntUzn#X9D+iql>+y1HG3l~dcXAkw#;x_I#|~Tf)l`#7XMUv zg)TrOeC^o);L9$WL(?f`eiHc54aBYO8jJ^rbrs!S!?%tj&wHW@C3ddda7#1?p<`bb zDrNSRHc@dEqs2)B(2d?uvMiO{lc?Cvhm>JJD0RLR(wq-`<(2pu^m+wV{0V?m!CF&f z7aasC&ci)a%z=s#_zFf){5UKAK2VbpR-vn-o_YMu)O*f$tmh7?u_GPz+2pAiG7B_O zIPcDc4)Oju(}7=DzzEkvK1J(jR~fA>(jFvP+wRb4+@Zf|=t_I=4Dr-dp0)eY-xPyu6l&yDUwsVVsNYGXXPgMhJR8zVy zXI;rD9(+XX0)}_47uKT4Ye>Vl+{u_0C!nh_+e{gCXRcMZT)@zeyu9*RKS~K}jQn_( zu3?#EF+zdSr056p*(Zs2JG-Hi{bwxUoo2=ygg=>zb!#X6?RZeg@>EdJ8Hy}ZeF4jw z(z#1O?St2JfPJI#)zQDz32^$do#%8ezw|Ec56LQ1-oug2Hsv)qV6~XnV@(Uq(vG*} z2XN=SUj3_YE;M2!M|^kQ(xZ$QI{Em|itLmX5ma_l{4~5@=b}^#e3|%8R0%`nG~kUQ z7quvU&U+F|^7;V(KLEh}t_wy{O1&n$wbLKJSh=DwL7mSlHK~GgPk6kedxAgjLDl~9 zkl&6>GO(KG-SCsdYZ$d^YY7gz=P3u|q+nvi7Bo_xB;eD(?vUizOb!eWeX{ztF7&G}A zF=6}o*~JSZRawIaEKcN7ckmOfSp_6IPcM!-Fwc$T*LFAIwI6}@#skS&Z*xD-z4mGX zImUb3XKd>`wu{U7C$<%tNCZ@mU@!H}kt!Y6jn(p6wHu;W((dv&c|-^8Pmve8Ou^0^ zBEnshF{AD=+AY2Wc>7+>iVa#q!3Mu?n;lAQ@mCx5zAe~PU{b8g%k`>cwBj}DNqQ$I zvdpoa0f%ZMK?CUS4hWDQMdW;tq$j^%Z5U;JCcl$aULjC8B_qpFuKiA#}?F7v*Ff|83n#Xd*((vF8L zB<3jVLy1vW{s(8V_aJQ^-_NI7qG+Tuncg>qWauBDk~_7Y(e5NW zj+LRi0lo_IRZ%zbc2lftHpaiLz2=+Q;lT4c0f-H-G)8--9`7CgT2C*9et8^Y^SO{; zQ!L*@e1T?t1|M2IwRHVS_>Usb`FW-;$vLALrEBkm)4UehOvbvUrBKagRSDB&kZTM+ zDmE?7=OsKF*s+rS^{$u~+PK9Ih}#X!0<#nPUAN0K%)-rUAwX&W1OYC-izfe^y|sGa zeEvOzB+2IVPzXWe!6NHv*ntiZ9NfpV-9%P;@681p=fI(qXrA7)ms$Q`q(pq91C-Uz z-f_3fo1ez!A_{pBdHPrTA2;Rtu>h_KYpi-rcZ=42IHKRB2gypjg8v2i?GI7^F>Zzy zZiqzdgpO~SpE}6%cwUAZo|Q6=@mEw>gA5THvj?cy=>1`{#qx+bVq<{63lUVGc9l>y ztdsAk6Dx$MzG>NDig@Lx-dd{i_g2MX#l&&~1itR}snHat*^Wm`?G;>!opzmSV4#E2 ziM*!46W>n+$Jxl~s}djvic+&A8!Dbg3lC~z7W*fuH7PvU^@kgnuDe6MYGK! z$QP}$+M&J7m!n|@_)f_^!r$%}E8AQX36i4@@lbPEoybKM7hSCyYFZAO&jZ<0$maqF zo7unmPR#eJXbP3;ZGw7{ob6;V<+(UN#(NVB4xDS11h#4b+WcE2qCOde&mB3Kys0Rk z{9UuMzK>t+p5G)h2wki0BB@A>a`=ur@1^AUMigL-{l+33*-f>DV+HWdPsU>P-?kS! z*(e6L z4-8k!>t)fW>;J`_Z0{MOb!Jo_SpIlmE9&twD2(Wwy~uq(M_%g-BX5tMnj*wn{JD1` z^a;AmVeNVOC(V?KV#4z7XVO`IwR_t~YAJ%IiijXLI*N#8Qf;*qRKtD+7XfSy9U?MW z-EuAYOqt=LX}62qAA;x;G`pZVQf~V+hZ`->aOsB`NY;D$yL&iy4JJ6AERTI?`(>z3 z1`s{{+)BZR8jq_@xnFOlk5f{&k%iow+R&B1YLTN4Dx0nN%2Vk3z*MT?$y@9AYIt6P z089RO-71VG`%f5e@hb||@n2-Pmo&9?R1NjL&&@oUhPWe=yk%`Hp58VqKpEXgxBEA4 z9B!?YBCFahRh&sDD{SAzWOw4NAv=!JWUN-^)AaG|NxT)-%Zr z!D4P_ z^ggWhp{ZzSvH}}=1&q>!BdCFK6iL)CSsiLyo^Dsyi^_3e(d1#2(wUQZ39HlsZtJrX zl#es6!-`GVY+6u@X1BzsD&Jy%Tv+&a>=VLq0()ec7qYCvIGT5{;Vfiyp({b&!qwfTni&aL^#v?a0A!;KNAEj9Tsu@q9#M6Jw%XN3nS9R>; zc=`s+)-3cOY*!D>V%ABNHYO{vcW(60WOV(D)eN%l(M^9#CBt)UTe~o~sm6&FeLAWv zE^*8tIYCX`q-RA06;T9(h)*vyx%Qeh`c$XN{3#9D=l zBEE+k@QK{DweCBsqe#MrNFj%wr~Y#jRcaDAl+d{uwY+zBe{p|C#RSQVM!?%iJiChJIT(ENTDaX>v2bA)>s+_Hef8hy>%42FB{?r^u``S^((+feoNbe>_0p z*xhu(vfu8x)%`)keg@lI=NjCVPNA5INjGj{S=MwjnppU>ysAZ*=z8%0)HOyCoZZVP z;V(dV&08o>8|B)sWdKA@mW_A7U+nMl5G9QQ+gnPs?Lh!aRZ^l#WB+X8L79pLvUCuX z)(?I(QVhb>}9!ZaxOuaW( zMf*R#>7wn+7h<5w-A*DVIMJXMm(U&w8ul~f7V9VSv8i_U4$3i_6Iws>Rn&jd90}cl zsk!b7ARZ5aYPg|OK^OF@U`W+czUiyZ%VL~8kL`baZV^Y!yzbj4(>rWP=y9PSBw7N~ z8gR`D9B2Ay##niUu&SMTqT(a(Q_Kd(996y4OoX#oQfv}jX-D&B#pQ3T>8^cM_gXE} zd4pmMKXSrRo(MO;{BRR}>Tmrfz>8zqVdAcgE?NDjl^971ThR@=URb0v*5Wh-%Ux2z zO4*MFXWy~(6I_Ary^6sKte69?#t4orzUPRaSkX$UpP2ueh2Id!81lIR% zaOlj(%=YOFR-YO6>-3n5^$yF&hOIY@qkkBAw74S(RC><~ULgk?n@Aq~WZK=fQ!B3BUwWNi%TCpyZph8I}s5Wi6pd7*eo!;J?gpBfuW7( zDA6ofI9OlI`TRMWL{Qu(rNh!1*6k#0j5!l^s4+P9CvB+44x6rwHk$oSb@LyE7VChR zu;KyaL0oiFs+TjOP|6@h$nGG0XmpBSin4Vj+4&ePH!gyQ4o^~y)lP}dBdaOB(q#r7xH!#*{a^)Q{aeLO3xiU+3 zo@ZUNA5*$9>z{yVB;)81#UL#PU8gZ(IoBK{Z`lAd@Dpxs!`>2Ud1nmnaUfeC%S8q3 zXp$s;ZA@?><|aH6yyOZ7Ts+I+9mSU7FfX*c-N&l%z~$GA0~!)_T_8D3W7t;pX-Cc% zwaB;n5n~e2m51X(qBc*}>&3x0mAfN@RbWL~D%pF+`Z1)RR*R%Q`PwV$sj`p&QO;e^ z1}G5Y$k!Q5@39DWC2Z{e&z#a_MB8eU;w-g(jlrBst6eEcYN!HOJU)jZ2fMm!X-bWU zw=zXRKx(8!CLoIaN=I+VTvq9^@K8z8YTwgwOaBpnm3}>O?7@QV$Uef^R>Y|+!a5a9 zp;Xu5<}EHhz3x7s$N)ZkA8G=~A@Z@_viiDqm26%Zq?lDz##h5pIRc$CsU*DBvb%Lj zVWo4I;A;6Bm@P7LI0G86!qg6SZw}4$08_UbLGzSi%w?H20?(%@q5Pu@ zq+zn6S_yE}%zj~CZ6`u`w%CQ55~gFrAH8kYS%}Qw8v6OlD4-mTt}A=(&@X#-Q)bBR z0E~c^0gZhHdPoPcJv)Es`xn(`{-yt5^p`=)SkP#4|x9beffdX{V zLR08sjRcDqM90GDMLlaPAXg;;*If^pS)!$)&%ro{{w0tpZfDE(x%b}one3QflH5go zew$p+>Q@!}dGXYM&S>#+WwrhrZ0CLccil;x%rie8>jt*U(vC*}&k)ZV1mrp#o*0V)n#+lF* zL)Ebv<`_f7sQ3h_=DP<+<*ow)qJ9Kj4)T0^Ng_}_ZSGdb(-{1igF1yK9OsbUn6@v1 zqSv$fZD&JE%{ydXRPS4kwJLf67GWUlG}W12f4*KSZG<}cJ_JU@e%MI=6Otg z;^RLCuyLp?e@?FjkT@QYdgPBCeC9Gyk3kyfUIR`H4KP7#}1WMuaQm7yO%p3<~rK3OjbdY=|Eie(tn+-rk}xcbi8!8fN6hR%^Z%NyboG{ z1jS|HbSFvU%&`w231QNF6lC|*CC92iIhCX?2u{`|+gM+C7av?9~IDMVi zv0QA8i1s)hzDQ~&A5_-tr7U&Ns#+cNo08&{bN?h4zaZ15;=YLiI0C$Fv%Z0gn%-r% zEXunw!iW1|w@BuyAXNCCXX@@kA$6kQ0=E4EF+G{8U7CBa*LErrZDeAO;C>aR3Vhm+ zpB1jh3dOwV=2WA;>N=LCy~wN>MoZ||9E^t@%mu4xohU?hN~q}0!-T)4hmQwoHU3&~ z1q-rbVuAMf;_hUW8uH!Sh}tWhNgk|$y!U7szL6~|{mm zQ-wO{MU6_N|Fy&~a7;V8?@PcblmDIFn8@*>Y>g8#=qv}pAhRu9${d$P{ePN@J?q6` zf_AFW138lZXp+esC&(sM&-GM^t8Rc?Tx}7BEaWs)_*BUnZnS(&xnH!`WFcR;WNlXL zU_gD8BOW}H{`X3Hq#fod@#u7*y-j9`?3`WY9&BsmMe17c=fky1ZEzuuBd>4}I+;L*gB(mryl~1X!;a3Gy{ziJ4+qu@ zu*-cGa7aTIMBb#l(C5DChX;zLk(GUpl_mj$w9uTM*)*SmYGEqfxfNyFB>i|@s*qpH zn0%g~5p0E?w6O{;)PEU%tX{Y*B8uGEShl+XHpzniP{FBLYH$tPrVTPpTXn{ZbbN9K z!UiI_zeX1E(>n%zkG!G4*}SAG3(D|k=Tjghcn`Ltm(&iha%%9n*->R5Q8{q+Q2?V* zc>wYI*`%w9DhO9up?03c&aSK2oxX;Y!pl%K9Bh{Nh7~kwlc{a5R1*|}gnfXc4fp~# zm8mDADe)#C!ab?dqXdO1&e3}yNON7L;N~BJj>mhQgpE7=-_`uv%4Hgr!YQ3T3fBPv z8ziUslE)%wjB7;UO7rn)Utt+Gz${2zD90a4UbTQJ--L(gEF92=E&W8^CpRq_ovsrI zChPPl7Ng&>wxrIu)o3-TAF+_B%QvbFX9*b^Lu zEZh1fOaV?5y-XNt&Hylk5M|Qn(dN`)t=k=R(^aZ5h`hDY)WD>XFukEArm~DgdO>Hp zU@L&qhNOit2KXY#t(lyYWBxE>*^#SA1Xo@)Iw2^955BU$;D>V%-UE_bo>m;OV(Y0R zChbnzQsMI&k0^It>HI&a9``;=r+Kw+d%l)e`C6N2qo2T5=5l?(p58spa|vsmCi~;3 ze_*$@*DGzv=jl2h_2N7#^^O6QVJ@5BK&(OqU>Pz#>LCt9mnN4c*zE9As()$d6AkIL zA-+h6Z&3ypB`#}&3Wfgn^lK&NJ7%qMVjV?pOTE=fsL0bI03`Q9_4095*s_AMr>Er7 zzlO&AF;Jr&q=ILU2mwSp=ONQZ*|U8>jU?4#v<(bhsrH7pG-pp;JTo(#HCjb{iWx)z z)%44f(XA#1pH9`{2<|?-^+LadNT1l>L)hwA6Zllg3%FEl)|n<&UWF=jV@*70aEw;4bjhRssro9%6i)mM9;i81Cf;XF5;PmGtPD@l?vQf5SK*LEA zWNvNuziw?6{8Sq8oVK+A2KM=4-I$Zfaj95P&z$NzA|QYhbKw||Bfa)IK=TTn73`T& z{m!7WY;{x?gv@u|#yhHQ#WLv)w~W6vks!}08`ZS`(+G+D1cUq2j^swsZD}TAsw;>) zG*>dkMIEZATGW{QPn_ci5fZbvzKedHQw1l(?6XZ<^-y-TMr-&aEzS;DgqlA&e=}v` zx55D%?$S(Obqe{h)~@=RpjbD)=Tb`KN)Cyob3_OFYLgRboBEc-v}~2#j)b`ffW! zqJukE$-GGO>#a!(z4`!*6u8j52_A$vDzh&qU{BeNW@c8wo=ycg^WEEdhA*fz8p1SP zbYy|C5qrM~+5#n)C6HusbW7otp>$ncGT73X)@gO_4)AP;O=-Nqf-*DmV5sl@KZlv- zW6vEnk)y+?>IJZ~4OX+SHEYEv%`Ao5$%qM#0V;o`=DTL) z`<52Mg-WDe&mCkJ=p-e@`Un%`T>8a8npxQnx{ZN(Xww+lwv9o4_!x<206IVeT&8e3 z@@P;XuQf5RBKq!PQMS)x>*r2IBM-D@;OUIUZzWBC)tEs{^=0lB--VC@5=N&_zEDe* zf!{=g^IBFa+;=?=teg;!`hJ|!*<#LHI{JD29WB-!X~WolxYP++3al(3NY$2vTOh}$ zbM|VP>IHn%nk@h&A5q!Hky~fKUHwXE6z`t>!cspEhrMLBHo7Fpp&Tn`64$&&w6r{X!a-A4(TvUfZ? zoB6je*_2gVh!<(s`O^I>zo&%x?D8FV8txAx4#(SIlek@k0m`_W_Q?<23e%s(3s9e; zRV>f`8okg~NJi_5yywaqan7gq$LszP=4kF-3U$i&dV0$~V40yj!Xg{N(7laDczUm= z5Qb9R2>QXSH`~?>^!pIO@i&2TP|tC+>{<&+22zy30c6eM!}T9HNZ zF!e}k_s5F<);!W#5q(dnDV^yZKdok9euQn51eS5ovW>fb-xHOGc<#GM3p+f*ZCp80z;z<{FLEl0e4+r{JT`u^_G*@3W?%BI$ zbkZ95FV063@`n1gW{+C+(`yMCrC7L1tkyY@=-sb=)GakBzOk8^KA*-@99qf+XY0}g zZGw;M)O0gCP_kecIL>rtb9C@bu|~q?H?{=@Dt&&P4}{OMD*sgMTj0c0i)pTX?~YFH zmmv9GMIrcb1I~N_p0r`5yto_Fz^pbsi zGs)osz_CA#)7wIVV+!;8Q4ule#$rL!B))K5^AbX4zqD7d^&V{QN9z z*PEl#n3+&sr7YX9WrA*TnvM>{G_(KAs-4tZGKnaB&;Z4c@xDe968T#Z0y=Nff(N8LwmruHStEgCNr~!)w|)DA1FHR zdakv^PxMavM=!Q9pBm({2w2h}6Nzhhu5dK);tAzoY2>&1%IIq~LbZEg{&Xu{MXE~= zMg_-?D29{!yrFJusu;^LgEAFKq=5|QAQ7fPsfiu&erubW?FO5oH#R6SC@1s7iImQ6 zUT@v3<(Ykqa4EO@NN8g#3Xg9A_DJ%%twS&<193b}V^d<5D*?=YQ1hj9jnUrv+3nzK zZWZuz(ZHv@{(#k)qq`}Vnpw7#(XA|}&BG*(BaN5$GhtjPG43}8P#!E&3A%~qv!8Hh_~A9!v{8sJAVZa|;A(a^1LD(&dnm-Ak?0CR$pSeH{jpasHoN7=NgNX>FDP+rJvU88Xl3Zat9tlOy|ZcaEf271TURik zgg`cwtO#w&bO&B+fu*|J@9OFG-=6RKpIyDn`fsF3NbPy;0#! zJ8#*cnp>+I%iq5oHm@qh>Z2QM*WIgYg0NK~_OC|ZxF?Pxu2CbQP0GY&PT)raN|1&m zgnkES5FR-UYTGXu9d5!LLUKQu>80NI=Y8Eo`P>yp+>^j()TEd5yyF^7zf~RdR&NsfN{}3;7c!y|&vEcfW(idX1G$s{SR%Ht!wFY2MK?-2(94~g*)0u<=LQD{H?qpxq2ja^-pU0oouFrmcj9W(i^ z-&(kME)YyL63)(L8_*#`l= zSv~sbmH^6tO+Yq*f;a=Pq--fMg=a9T8;-rzD_n#*IrT=MJ|RKYaUT3jlv{@(yOF}` zp9Vm!V9G-qZHX%FumaFKXgwmjp+RcwLs@ArY)___L%g#BRJ<@H&SyLNZbAG28p&@p z{7%$RR+f0{gjUIcDZD)sYnk-hZc?kamKDT(vohr$SGcLn2iINmTY{y@91Tl z>h-Sr)M3{e*|wZsB6nhV{}HvinhupKY!k(j#u*KPf)C-6*z#a*Y{W?Hd*R<(E5A5`} z<77tSuG#jdJg73B=g)$mhODcw!o}9?Qk`rPCi{oEqfNjGsXAd<{YoaOWMZZCknYzl zdW>&XLBEhStT}%#9ptBD^p+OrH42obnuO8wMTC$vcx=bPs>ygN1c?0&Co1<7_9VI1 z==WSj5}mLbch^wK8@<8U{Bvw`VovsX$ZebwG+d= zM^?tS;%R-(Xh|?xX8OXRRZT<9fCYhJisq<`^wWbwg3z~qt&Xp{cr4=71fe}41URq| z?13g$6e}cD2|BTQSSQOxiW$@cm^ zS)MOd1xz6hCKO8x`6*nJOwqgnjK=crAF$j~ueU_nD>>0|a^4^C|8T6Bq*9`=yukQVQos7Iz2;%N@{UFL&m?91 z`!=10=1T26wWkma;)2(pk9mRELq-4q#ehr81+xSQdSsxdSI+TNQtG|+REw#cST-Ug zP;HFb^^>tXjlSN&zfuszGQ3J1{2^mqSYU{mM7=gCfcYxITI3?>EBb~x+?vBMbUR3q zI}{fzJlX98>EK=!vig{n(8Lo#DI!~8i0>n5Qio;1s6m+FaVjfVfe|m0cf<#>h z;VXp#L_=sW?~dD&m??+C*8AUv?Zk=-&bOYX+3j07yOI;y2?9YW1<|-P3c8DE2}~JL z@uHt5oYoTpR{nYK*4uu{JwXJT^5`1nZOP>Xqwijooe%6Mts{jxcECHxNh?-F#dlf! zxdQ=3-^Xi^Docr+KF+Dzr2~sBvz=Mvxg2T~Xbm@haYowiTD+*XYVupr?*BaGVsnL| zDIL zgefl5b<<_Z?-9C|uCDa21eEefIkdOEAh{6z=08jv7)fqn`D_hAeBoCixjyZRHQe6* z(iWzT@ZiU?))L693F*?+p#SW+RNi_;VE&h}c(km|hVM{XDASrS9Ixfm1) zgkU5P(d+{&d^fURFv<;DJAh75upVxnVU_2Un0b-?AnE%wC6kTOho9+vbz7n}N1yw{ z{Rr8CPW}UjDrtEBpdGuiaX^VgmXabDMRs*G5Z0xfcpaX5s)Cc>K0ri5cL~LVPS*sx zz@8F;i>JNJB z9i>)P5*O0~rv>If{r&|4{}bfnl%*=cFcay6%f`Mvwq4UKh$seLp!Kj5rwH)Z7JK zN-4n^zPACE+KOc#A5&08Qcm;s@hcZ^Cy1mMpOB%ueOiS&24c3vPBs?xv67a88V|sC z$>fI`>Edx_1l#*U^ILJ7JU#D)0a&7atLOC~06=1d)4a38g}oSjx_VJgf}wsAa0* zM8Bm2&_*%dAL)5_IJge>Hy9sZJ`8ArCkw3jm0FnVtSF3bHy7+Sbwjg%@MLH`SjA3?by@X1Vhn;t-*Q+@zG|G ze%aXhaVOg=ycrK?sat1ahR1t}%H?#0XV1{bAJL)dmUNSsmR1K7?!8bw03ek~HCPJ{ zCV$r;iVQV#hiWd{rpRW8G=SPQL2xQ| zW0v9hvzQ^z{kSx*dF{oGU_s5ddW|d&N?1Z<;UeRlo2_8G`ZsdMBD`@61&E0VW$mwZ zLL!aFECl=Vn*K9tQ~sTQ-6S!Uk+?yzSXa)2zZ%n;NGfoOi#yf+p)cR)=P;k=zFr$J ze8?3yN71^hMqULz*rq zq_yuzLWdvRwm|*Lnfv2vUZqO~G`b1N13y;EwlPjubNdr~{r~kD?4f5U``JRuuwlQH z_Vj;GvtN~GnMS~`a+y^O7kXsipR|38hoJMfutq18=9&+xCivJO&T8^_Ei7_Wq1H+d zh9}Rxs+Y(#98U5OBbHajwOB$v6C5njTQ&EoQ*Jh?r&2seP=-a`4t>#s@(}$l zX^3Swg8_ZF;t>WVTM?jfSQBaCpIN2<{y~|LC&#x}gto#bPqoTrRkkH>m}cPf;@uDL zJH=`~D91?b#w&uTl4d#wkCAkM1)vd*)WZ&fTAA_?kofQNreoj%66i&o3E!T+UNHIr z>nzRUd4+YGR1ASh>99L0dVqy@Scu?~Kgh2-qGhte^L$t}<{_k*brf+d(7z*p-Snbm zM8n4Ixq3&bP?n;}Let-gLh|9=*GTFvf&P5Gokp4r6jFzorgfL-$LP_*bVw{)x*-&f zn(h!JAI%`>QpWWQZf$IwA;X04NqX_g%gRJ?4uQx?xXIa)@(qe5;*9LFO&9g1m1Ao~ zr(UAJ7P+P1dB2w9eef z2{QFjMl+d@lCWub*oAQMS9&xG4ewQP;m`B* zquC*WZc!$Z#qnY296x@yyLl3jVN;ElRkPaA2i&wM;vn?;%^}wD(GP$VNcFwHx=^#% zw)IfN--dBf-XB+p?fmyDfcgJ~Xe# zohY!dSm%$(tN%(n-;!AT@JbMm5tliV%aSO0Ht$0>UTI86wcX9IE>1h zxAga`PEok)w6(P&)d_sQ9I(dW!r0(lHJ2DszlegU%r)nce+DRTtET8UM{EK)k3NCR zEAPx8u^DKAKb0#dES_RZ+b;q?FyRP82ul$T?Z`lA(V;sBRoOM`9UqIKylOYO1$fUBkWRrFBe-GWGBdWJ z!)>TjXd0qTpkq5uiFnKhsDDNUuq9)e{eJlO) zev#0Or%%;DnwF4JzGr=u0#e6pn)z*^e^F6x|5@$LVOyk(%#qL}3<5-M^3E$P zN|WihxL3#y{yMZqvPq?B2>kO)q_Y^t;Qyg`bx;EB+N9aOkPY&@Lq#sj=)QUUf^{`2 zRkV8qxP|H7U(h=`?QGgvS%K}0HiYrZVKP@@_Q?Mc+6%(^@8MI;E5^~6OED7tjtC+{ zrfV=Ze%}wN33iUm>zQD&E^j{HdLY%RWAHd0f+sqfk%{umXZ9vp8U3rH4jj(yYbZ-8 z;iAQiBrBQ4q2masWN-vdxe}%eBuXz@!9I-ITGC}MW)=gAPBil^QGxLKBIfOueJEMz zNUH;>CM*>KR!myJ!dE*e2tLuQJ8tEI2`i z$eyP$j8|3`lBkXu5ah*5jA|MqL+9auh*k-4=zrNDoSH~Of+EBh?``y2R=e9m ze_N$k#7=((ElJ0o;GDO$jzsIX^l}0;T9dXi(v1Bd05bt60i84p&=;JJ$j{4{0TO+I z08>Hu{E`pkwYt?g%ve1Yy6V`t?@1)b4}c@^e?@= z_*Xy<0_uz0xv$9Lpo(O6xtU4Q&5B7iRkGcUJW*EM@!QJ_tyM?^`V|@Jt&vo zOBo3@M17YH%5?u3_j^%9Ky|tECAG)?j1cdv8by>rMg@YjmtD+&6N*91Z3WsdR-exL zG!1UmUT$Ija#P=&VpVYD%0=cOJ$*LuJ_9c$QB1`N)9{Y9rTx4LvgxY-Q8=L96^xzF zuzjIW$Mrw|V{!Ord4L z8+5%wkaF%Z>HTCT1(uMiBV6IF9Yl+F+cVk`{#%*j*lfq-YV0!?VK(BUR$p*<%iS3)3q8keXTBiaZ%AK5PU6AZ>%PV9|fYgzrF z7kGnVHtinN9o%~GC2t67b~+e5g8f{20XMz~^HNK)+smtbZeLCJfUD7O1Apc=f-M=A z?mqV}f@<@l?q1Nt=7B2r`%cQvfp6wtWS2BA8)AC-`k<){UW&t(`ipI4u)&^I?w|n2 z)LPe^>?i$4Ga@~*-dUmA)jOV}< zed$Wy@D)(9MXvGuDw;hFIL(G3EZlRg8JxJ9iNkK-4N_8fnL6>e35s*Zb|w|BuzYLJj^x2YTcCRer+_%p>6^7>%FYKRFV`9MuSvG0DkDn~F@KU+00>Ig2onJExSF6e!L#oeA zZ7gxbQ1VC*5dWVq?GGw8-sD+ormtcZVUwGVhpgESvCu|RX#us#C#q`rK(I;nEN*5X zsK&k(7wfc&hr@MmZOgH+0vx0SjzV*Uohu(k#0SlGTc0=DhzLlu`yQTk1*?;h4B#x*GSHL#O)r zRvz2#$(R1G~QyjI9MroaPZCUsD{8 zhh>0Eoau;b4~TQm(k!(9L*l}yQM-ZOlpsB#QlUY9Gi$`b6c_$9x5E9S*^VHWX#Y4( zz0q3x<|a=cSyFC}&)H2Mp%oXMCw{wKzLC-uospy^V`OGShOq)fj({iGhDa_38Bohk z91^0f!!)z6gloN{2uy*1@uh^)xjiC3TiqUoiqy2LXQOC^*(X;jx*Ri-MbQ|=g>vnv zAkGdpOtF{5mlZ=c{>7=o>U5n>TM+pdQ4b<)#=M#T5R#F`x;&KY z9xRni_MWE{W{f*8ixIS*1XxBFrAis!MfN?1l>(xUoHCwyDot0EgJB|!aj9KpNni(L z!6b7_*b8YKy2hCXw{|BXv+c?XSf0ldl}AyKH#m7Y@DdY;<`QvwbVMuU;7{ar-$>2g zPu5L41I~KXsIx?^)0$98U?^>TmdHkg@g=?XU?P}yA7yZzJ<4-^*&SQp#56&MRTUv2 zE4(wHf>>9=)aQtQk#Nz(uUxF* zCKIch_f?+%DyN5ak?Og^iV+sG7H?UrABzvNoJw?2@1Ds%=JvRGv|fSe9rWGdH;1f7 zBWT1YC)J^G2PPf8+KRQaB5zVM)Sel3WO)hbR&)D`#;eRXuVIW_fj5EU0lBZ7`w75` z(-7ibDyXE!=Jz4+vuyn?T58|v#GxJ=*Ve?)aCy>PD9QgoRdtGZN_czM|Kfob?1-~E z5;ElK1McG-boKl}ebx+XKb<2&82)FD5^4VS>5%65)(c%?AitSTHfsQTN$VO<3D-gZ@;zYaqcuC%N-ivA{JwSxS?B)mRo zMJIP4ZZS}4sxYw>#Ew^*>fN`ZLq3Xj$(y9-8l#}B@$)0n^?qsR05%4zfHips^ zEp~~k(DSMPJ?vz{pqTehShNKgD0Y+R#1_U@|CnYYPpCci<*aVV2I|tP7FT=y zl)m;Oa9x+@1C3yU3Cv@3SPY7mqaJ&(_3G#ilghwFP*$^I;|3S|@5&T%p2VkaDDj zEQ39xl&!=9B~4>;ms@;l<9nq>EVkujv9GOm6k>Cs=DEc}CcVuO>tI*ft8e5R9MFuW z<>Xnd^FYekYchkL<&U@FzuCnj*Ec>H~+pW72ZR5z;B>H4)XZETw4_A;|togaBsIoQM zZGj}c&0W+4y}&YeQ+fX7H=-X{hYwRu?SNS~YA%x>amiYYUk-_+xYIUezJ@L~^v zpY3MO$Buf<^-(j@B~XHLQpPwCw{2((jES)DAqptQ0~&&6ju6kIgDKeN194BVr~v+d z!WyEUHu3}sXdus7D9#n`!iRz#nKBAj@D;zDj%(7A2%CXtM%00~3yZVeTBw<_>1?9* z!0GHTzev6+5-8&tiS$Nlw0EEhh$3nQne>&=92U zs|``|hC2&3l(?r|+f{rTG+3HrVv)4l2=0b%4Bl)L+b}-9dD|wMb!QsuXgdjSH{v1X zvxVu8=o*Z+|M32rVuvkS?ZLpELI9pF#UJ89NzXB-5`@o(;q<|T9%bO-7QxkbL|0{h z>orK7M#V|r(-A1SYxdD&Fp$MpN$yijX*4ZMT9|hobHDa*##r)1?)n8AxbnCQNYly- zvC`ve(Z+)tz5CT}Ll|PtV}XsIdRzIFxm+gX=QkbFe9mCz-|Kh~(Nr-!Xx$Qw$%5Hg zvRE6exG%|2sC_m1%#YhAj@L)_J=70{^?l=RFIWH*^-(UkXO1pDGa(3D_wl~^|E69V z>v`ng8$#KB<;b!-p)vaaWDZ^yE>OAaS#uUUau5-lP;OBKz;lCYQBs67v^CUr#Fcax zKB=wJEv7f5JA8aa2X9L0e+D;ZhSVy`D3YgbllQnqwq>v_4{fE1#QSeGGl?@2@ewEu z7y4Z#!S6V%rkMn1f`v1kpoxtlK7ifd4aM|-=#^Z(J0C2nfo_zQ@bJcHxjwQ{${Q!*# zq?gmx244@o>t2J^ziefxLiCc-G&qck{pA5iri4`pe*kg=blPhSWco(xlqw8~>^9H~ zrI}a0*ro6&4fM!=ez*O-A2^BW4CP2}bvCZrms(^DuKmfvdNa{J-B9bW$BQKf1?;!5DDVY6M>924`CBo zbuBXw3gr`uXE<-F^$g<8rb}CU^iF9KlEzjhYKqf$0`ci4eS}ZIn9OYV$2LQfKDn4T zu9V-(u~cMcK4THVeG@sNO~E4(vz{sUj9oOVzwAV95*NpDRjgmp0?UrdvraYdyn^r3 z>jxMFJkiv7Q)hB!Y#2{(4io`wVfYT8EIg8n?-?mUd`Kx?PI+O>T<+Zw>L&$euhp(y zQnFK}evUhzcG!D5hs?)}~>`%A~@Bj&M40t*EEyD!Ge@?Lk*`?Ww@z1lY*%c`-L8tpC(R2H==3?*bS({wUaBDBy6+-tk{tVn2F{#>$2YJv+#Ll=A?lJziR5N#OxPAHEH4!G5 zJ_tR(xW5ycxPsOTFo*p%AaI58S{kivseV@C1dd&gmA3WeRjbe?@)wf;D2bKfvKixii@mS74%( zE`2s4T9Cm?_B|F(z`Ir@H=Bb;?hA<17C{}$Ho+^~q)T-UY(ts4%f=sfBun$947{s9 zxY$sW&LM}{6J!|{rLWwM_x>e<6ZnLDZ(}-0fG$mP53R7H6CZyU<0il?yG#27O{@!N zF~_e8dvIlq%YH*7JugfC`fs;5IJek0;@f-E8Tv87rZ{U!C*Bf5D7>y>@WdfyetWRzMm2-v{8Fg#LdxR?`TH&Qi!~|J&YT%mTbmh6{oWBHtt+ zgA2o6>-^HDuip`dN4+>FLyV)(Zwa4r3%4ZaQCPSYvtIN)G*<{*=sI?46h4|QJhWQ! z)zTw7ITc@|?jVQ$e;>tsxMTIB73aqx7yKA0>Jq1+E-S8k&@sx8kNuB|i0$|X_`GYt z%3B`JOx}EAVI;^!$$>LAxT>8k4Bm-s$3MFuOa!Hp%KIVX?n12P7r^}ZaH`8)xBP>F zYc`!~{F0SgfK#0h3!eJl^C-Vx0Ox^nrN7b69_1fenTMT*vD&*`qha{^c)*h{>~#pI zGu~hMS|D>h@l2&D*t{{M!DY$qy_PYI#*HI9rfHb2lAS}QP2@5HMQaT4`J0ai;|{osR=TW|%Wri!3puINIRMv_i5qW%7~+2Y zDh&d>c%>oB(n6eh5(z@i>-n_Vrh<5u&)hLPZjrn7jJxNgB=ZrHWByve0Z;NY#H)>q5jF#$wX zF8Qk*_?aoS`^|~ZhyuF>U1DhM{eVY<+I+~>8eSgO{_@nVq~rWJES!!A972dyB8$zL z0bZxjUK!WZ`GAHy?x&Q8dr>8+xMPPtqN{2kE*ml)oj~0Z9HP0n3^~kP9ahfE(YZEY~&X(%ti~%iJ>o;3D$XZeNp4o=+E2czj;i~U_uaOF2e8Wnv^nC z42K*M>D*wRA>gc`JPh2-tEpwbgOW!MSkT5H=!sqwU%q{HV=TRvBFd9`!ApLa&_LhN zWK6iJ(Vb`W;K2by0$gy+-sB2|vMpG{SLRE(+#hX1jgtf;6?rLlFMfuLed`imQ4-#u zWU^{dfc(6EwqC%D{2Mk&Xq9+^`k6h@Lx?mO4oc`EwSP!ruk78W_#ZnbIpbb2_|J7S z{-Y?2Ed3t&tAv9DI}1NL-n5~3iwPhrS9ktB`{owgp#8t&ii=d*wRc0PpsJsiKT&8v zjyG6j;J)jT(T-7lqrP^(BTyd!Kf9Vv1oh?}Z&rq2tUd^ux0Whh$Z{Tz)M=H!NwrNS zK_JGJKoXo3m;ZmsI2uI7E_Z&8U<6!}^`gz}Vdd9^xEYqzm!jIVtW%u|S5ED>0AvtP<75&>b;Ty12es7q!Y zKcP4l#5pAL0B9J0`T#5W0$}?2L2@J1_9ka4CY=szQ+oHB%}S7WPHPTUWNX(8Ev`(z zSptTFzf{T4{!)>kb#OlX#%^KLlSJ4ycAAJrP+sR!K^VKtVL<8wPW5W*Jh4?@VuYo1 zA4plj21vm}#-c)8pP{}*&Lk0*Hd}R*(n|l$y#_$p>#{Gzex5ZzbbCx{M|)U{F9tfc z#FY<*(N18FNyryvxVZcRljYR6>xvkIGz&9^zB~|cr zV*pc;Oj4iE-2l%ed!hOVHB@4UZuV)Y7bnUF9%|AcaJ=lPlMQda^OI#pF4<&H{QwBLtu@e;wqVzj# z-@g~0_r1#I(n3Y{V9e&8WuqM5REMbq&WTDkuvt`u?SI6S>-Yo${ z+OFU^d&b|D^uTQ2)>DR9jpyocl5(V8c2NM*8h{%G;{;PTF$m0@W9pV%K6caa-QD+|?|fh1CSuPD0p6k^K`D8d4_LQ%+X z1q|-b)r4^JZjJt)<@4uDCURId1kl|sAB==}ESfQL9X?Na!B4)Sye$)>J?Rj_bB96c zztzn!NDJQ^MalLJ|ubRstcKsP!n&l7Szrifu5Qb6MSbk?x}h( zY;qfDNhqFD*eN%~mC>!vHRV;7o_ub1FJ5}rPG&;%W`*=hPHZrRt1!>K68v^Ha!ftM z{FqSNg^>#n#QzKMEl%mRg8h7ZI26nBVy24+;TnWF6dRTc**xkxd{ShHY_=iR7H=~dy_uD|4T1|g& zkn3nlWiqI4N7=SrWjM~X`7O7$AVleknIt0djMKU{tsak8-8(~U6VwMXCUEjd{N#@? zFlW=JpzlsY4R5E9rYL7OKsap;nz}PiE7LtFb&eszB$VN*M}SrXrhT$?#GQ7pQxsoS zLI!e12YML;Nejs4o3?NvD)*RUe7!*!w!>1z_C=hg61S_a2$Sff@V-PFN3SgI6fYL4 zBrAgW0b=#*TZME9)~QE2GKC|urRz@g27^^lW{g*j)q{k7xchXMU09tmlwr*8$pm7O zA?Q)}5NG&=-ySi(l^Xpw3eFEn03&n_8j+J7$D@%W?$P3_q)6*`_(elYSjVCUqBU_S zq#-Jo%#pk{Cr&JPc3wNW&x_T9`{eLB$h-Sd@ga1oNp7wIZkO?+^Zo$yoRBiu8bWZk zV^}304|=WVu>zDLm5TBZ?8O zINh{-3}$F=42W#t5};Lp!J#!h-JXu-n;qFC`=JEl=|%xn>+r^TPP~Lp%FZv>bw11t ztP3j9$2Bp^=fw*yrJwU1lwFa0*M`q^g^^;9@kJfwvwltHU>;wNYUjxWCnV~2C}dIv4OzujzGX~NoA`KS9q z!uzhluSVpPq_&Ep-)rNCH&2QrC`jgyBqt!gT^_%zvJcUme*QxYt5ny% zt$ny9vC@;Sz$aRcdnVZ1edJshkS6p7r7qcPo-`%I z0H9kN>T40!C^`?mfw)l_??_n9SX>4$GUS~$OB**ngDoGVf+f?LBTA!TRIbO4mc1~X zsx*ZTZ^}PW1PnHDQZjg9pQH$uPPyxbcVa46lc%Nkh>rZ-*m-l*4^BeI8A$+w42BL- z>5jJMfLj%B>LQk!tCfjAeqb>o9#P3I<7yqJ)@%yH39{3eXOx;MHFyp3pI=^K;Jv@i z1V}J_>v7-5qbxiE;YiA1QHt3QC>IkwuEk0$x|RblS{r6X?JO{is^CZ6y}?*S#G3%* z7G_H8*vim0FzHveJ%{~HAc)HE7JN%i@*UwN*W#>J{3%&1eq&Do2HZ*}&jRXj?pc|} zkD17Ftm+`mjJ8M`9)LoC!m!IGnKm0Afgq z2WaiI_{&cns7RAVw%Z{KWA3xv#oMwFkHy>ocHfIY7By$bIg96u78*WrvG91_3KZNf zg=%!0TmC{#yqbCgnz%y!!q+nT{c!I^d;?sub7*6Rr;*j zNcn{Dcn+%wAe;YKTrpM(r6TJi9wNDS7U1)p&N{iIjfO#=eDDvDMycMjgN`9J;i1%B zuF_vo`6 z%VbZL1k2va`x|S(foWPMVfTq0^cTbw!s{jNfjZkkYr4_S-HfIMuz*?)0mzqT>b{|1 zcKA2zTR}p!FJ;+XSnrkK{dm)mZ4BNTB6+Cg<-U>@N?;Gp3P@3i>$S8wZ1`V$pDO3F zcq`YUc%4F#6#nILKE!L0KFlH``zA9doOWBucQWwvYiq3Z)S9;TmR64lW@R?%NIRcV zN==wjNKKXSgAK}p;~p`ldl)-~%_9j-6)XSt>GPJd-_^$i<{5N?VMnYHfQNXI0|(h7 z<^PiWk8}iU)~*?E+Wui!27AC`KFxFYjmEP>$P;68Rn@=F8%QD9+!5GfyCaNHQP^{i zsI)C|67?{HEiPzvy{=UtEs8E|-I+4h9eV~MMR8=hOQiS*6`-P8NtLO*5}#Z_uM+s$ zIXnsg@y(Qapf6=emGfy&CFI`{w5dPxIQ9a))<_o*- z?3U|*&f4Pj>chi`l0R6X+BHZRY>?FsGzgL6c=8f5w7M8p$Iz)%YtlFWiCLQ%J<^1d zei^*G3$NHKGZ>3>aoblgkNFf`V6jPM|?<;C3XHfpnt@hxMawRKg!RupcF$sC)ejS*A#e$LzX*hB$Nf7!N$Lt{+rn<|tm~hu^EK849hjj^4c>W$`okRTP`m;;LyuHQEHFoy zm}VB}vs3OC49~&3+*JUOWRAm1avmU2mepSK@jRzW9_GnPtr++@354K3bygF&{uk=W zVivT}Gbp+~97)t@p8uPLANUfz<_%Bb?et^F`77y=*CMdtNQ(0fmXtOb-ePvt#YjRWbS6h?A}h19?whplV+jBn=zdg?L5*nr2Nb9Ln`Y|HU4? zquDL~|IF&7rHNiMr-tIjE2ULZvc$enQ#noXES~@V zArm!|omnVQGk-ca+-3iodC}2t-P3)$3DIOM9>{!OkIEID;znRM4rxKOxUWVY<Q~$6wEyokG-GCS#Byp)`ex6m!IE!w7Wl~0- zsZ~Rt1P75UOR&C~3Y9E>7@Df{Q7ma#DzagOhp6UTPB+@3h6*!6g_34c0dc_-DKWJA6)U z{v*WK8I=_$dJkCwdX_js`Bm6+|9FO3ZR>1 zj?eD~gayThCP4kF6Zi-cB6>37#G$NHQP=za05^vo1~A52*zZ8}cq2TU>vU5sUmvi} zufx1M0eBkRpXUNEqOK5nISATWZ0(Le##+>|eh+_+<~$vA=yV@Gg!|Ir_jnZo{ColQ zmlMqIqR%a?MzsO&1IUo#XTc*9z3rjOY!DHcxhg3L<;*>+HLypaBfUzy9Tk!(_&1`g zu99PR9j*1BLE>dv6L;D@2sDXB$K4SjF3&s+n1}i;SxnL@z%f$3PfH2e@Er2Zd~kBb z6e%TzEvpUnBJ(CjUL1SuwXByJi#&@weIH*-hI;29G}JZb$Q%9yssPq$8tCOv!!S4G z`UmX*S`eg)91z+o8i&l7(<(I)tawwj^Hv4$3EwGHfQI`3s8>)50V2(J;FPnyd<^RZ znJMKm&8ZM>7Z^hfA`QjyY-x#wRq(GCa6trn5Ny|jVbRM6u6!7#)crb98G)4|W_l6@ zY%Hu0Y-;GyxfQv4>J-6gTJ`cn58dvXSm{NU|Uc5%U?ev52FI-9ZQfoaZOdIh;rY|OFX)hCmrc; zo4Nv7sYpstb68io2545)BzkcQ6t`@gF*PIS(T731T3?&jV*QqwAfmCPYeA5@;AM+L z!FzPJ4d4gZfTr!@m-au1_S;vdsC_tWmxT%!x5rc3GJhE*5b3G(BsZaX(r+1_Il zcmJ)+Cec)pMuL2?A>7`A%{Yh?*kGK`OPuv+H-j5^%SP$ZUsf$|v8H%({j_s41i}x4 zW40qgE96@zaq%1(VvCQ9(-SmxrVskc(Iz!_015Z}2QC75ev_43;qz6p!#mzbRo2!c zzz6i%9P1{XZME~OAS!;c9VtuXCXnl}NwN=)X9~%&bW^-m(4|c{jNVf}VAKik3h8ZI zstlx1qh0fBJ)`NOmsXI&#S#S{dWu%Sgs>Pxhzv+smyvH8b%?5`T*Wp)-feb}Sy zD%x@2HyBF3B!!_(;CJd2#Pr|_6!-*(gW}ew?e&7&IYAc{ILEKro6mq{JV@GV{5K{v zmZLmID0#;LC>6kcS)J(C$OIroIolr%Scz4oKv02@>VeM9syc<--8>A&N;~gQ@loI{ ztk)}g9C9&f_Bj}p?DTJ#@mTa;Qb?%!Yo?W%Gvf*^tc8R1Ksq;)(iyTytc1|$3<35m zfx(_@4o{$&6Y%IybLNaDUSqwz1|B`~$#?%7ZMW?At+Dr-je&1G^9MCP-*ii`9GW(| zqFm#;pr2PddiUN4by)b%!Pv(AMeBQNt;`SNg|#prD`Qkq1m!=p zH;S2xByAJfv!wRl#(EOh!IvV1eS*b4EpEPS4v0fEXt`4Kv&G}S!3Z$oMk`ca&)Gd^ z%;&XrjO-GXiY1rliN~e=Un&W>6Q17SKJr_n{X$>P_Muxi7lN*|U*Gp&x{baQWAZXL<} zBPfqBe|q;*a_o)H*3aB^a;^wMxA~eIGyXkPv#?NrBE`++78Ye4fi{qM}e*;_K&PbQb_hU%ck z%L-?qn9|cp+}4e(i|$!B(Zd%F3qLw0f&n){yW)cK=E~2G@&% zEj*y+3q4gbl39XyOi;x;gZ!^xG&qUw2Ap?{ooNJx&k-k-tI>MSh6rMr;a#K$Jm9A| z>T5r>VtNo|{^U5+lZ4N98Te&)?}ZF)!q+*u%hziqn1w8%5{<%8TRfUDI5v5|aK5-Q zJ>FG0BBZjQ-!dSJJVIsn@g7YrxAnv0m$wd0tO}B0dQcHo@#swI6A<9j0BsOB^aXwq zd?JN2S|nFB8h>SpQUZMyPCt4Z05%}1M|zHN8gb3+u1Ggfz$!- zlWPM#n`9l9bnHlNJzSQL3s~P#&Ig)vfY>^#Q^M|k9BO;6j45n@h~m<@)A4t{ zyQBm^^9TSCqNZjtCPv8c^R|*GY1_4_r&^oMHJYpe9JG68WLO7OscKEtr^u|G5`GXf z3%KkCAcXzGx^pB@mr;w7wnoBRw&ANto?YKBJE%X6^&MGS4~5bJNF@=U;c#KRgaca? zW-BvL9AC)9)~by`(>wNAhAdSFRTU6-gF^~rY4q`QAKEzfKPEjmG_yM)&&j91v=uD? zqa$WkYKK7swbj2dF)wslctw@;9r$|8z?3blEtnD1K1fd<#fq~F@1Pc5J>TE1OM7R{ zG(<9%E0Mc}H5Pf{qSe;5i7qAI5Zgg+*MmQRffIewe3?>>`l#7>iK%G|rw58#64m{HI&*UJZZd<5JHgj$qi z?j-xqCyQCSWnsHTrpeOqk~f-T1_TDMY)#Sq09<<8qwi1@xGK%Pk=`={b~&$V;S-FD zYZ~hZLvZm>^79>eoWk>Tf?omd)_4If@6iYxxsV8b3ylYSKktenm3t0mSg=8FbmP{P z_35p=LNHt*zAke}N8G}MiEt2__VM)-8>d?4mI4v*vr(XFs4XNwUE;DWZXdBeu%j5Bwx==AyeK;)X`> zQwhs-m@p6(6ZpW*VrYN4^hkw@Fz7GYTn$#$M}s@PdJbJAylpLLb&pTU?#c}%DS+=D zX#iU~Z?SO*fnN-_-@^7*ny~d?@=Pq-6Q{+$RunQ*E05t^F*0uoT zYJ3sxqNXEL$fk)m$seAXM#_54`puo?#%Ef+Ui#Bat|RGhtptRi!gpssDWE6Bf;K7x z={j~BJ^Wa)Zf3kjSBbEC;hrayVrlg5Ii(9}jHnw}v;s(&3g(V9I#Qys4%QT;ybZv1 z?H8AL49F1-VJtUXTExAr9X01;de?QY?vEu?3GSgt&XD*CZ@!y$AkVInOU2hXOT|DWdZr@>D=> zHZ5JwmuEr-^nd$Y$S|DNIob`JA9sSp*s$GCv*Q$lA4rLvl*~sg?UYsTODbj(xNv~k zRpZT+hSPHe^7Q1`Xa#emde~*V%^!TI7c-R1zsmySn-vGj&tdAArp|2nnh#7P4QgvX z7qVQAvXuk137VG@FsrU+PhHjIRj=;aX(A-6Jpz14Nz6b6st1>hQv$EgPj|pyilmxbuL& z!|(n}NxFGgtb?;o)wf<(?>*@n92&PF&F+tzOBeT2vxjF>MVj9Zr-&P@T^C}6L)5Su z5!OP{ySN|3M!&8U{T$VWwp`?KrCjR>=6V?ppM`e%^BPh?hQm@0;Z5KZZ@rU5ubFEQ zCH(E4-~QLfQ4mJ*FJd&g*=n3D4EgzirIR&dW9rad!XY>B(fm80m2kNT%9C~QmCZRt_(DP@m;(94 z+q3MrnvmSng;)?GL8_9(=UW;as)YlxM~kxUc{CYwG??k834AvmLk>RuVv#~-&0Pe* z#`^g@k|erw9unB}`*V7vMDsW(@HxZ#LXD_D$c$#(3Ys;k(JI%lgvm}@b<#|>uETap zAQ|9Mc(a;aT9k^bY(XJ8_98f4w)visW;T<-%AaPl1YF_&hsUZ_6#Y;Fa%-R(T#dVj zGN2h6;yO3%9b>WxU?Y@m{KbzL6|-}wN)w)E?3Y-V+h6I0k*5)NO0!M6sHwdS zi+&vZa*duz@^p+L`_dl|)M-#jb)zY%0d1>)D60U4940jSU~DruKH%&a2)lZgmlB$# zl)gxM0 z@Hrn;0k3$Y=@kck)BU}J#cP+XY>;?DGfT1aBoJOSf{^Z7n|6-H;3(LdzN4mg6NqBah)E_{9+7XOv{e;{Uj#{AI z`m^0EzMeul(}};~yi$`%j(Il{sgUcs3pdCR9$#XKSTvc`ddI!WO+A zkDi3El)WOW21$I-e`!$ZX$;9xBO{;wkQrMtCNfB1%RO;DUT7H)!}Mq0Xu=v+Z>viY zc(G}MD^Zb;secS{Q8UtBjKi5cN#)G|CR=S*^(_ralm=z(0G)kedK-v~OD;Ub0-)f| zd{4z)Q#v*(E7``OOO<)!Y-{W5cl3`RGmN<|gI!3Ef7QkJacf{owoJWm7i6f2v+)v` z<%vQLNCEBy4>(FTQC!!|HAE!vYCv7N8bQe=(6u7Fv}I-LeG=a(n>s;GqZ}9gsXQCs z-GFB-_?=OswYdjHex#{Kc!&H5Xz_MxcPf{{t#$j(N$!#=Cmk7}65`hQ z_X4dP5r++U!a!j`=2bZSH!#GZBn&rzMk_!NZ%n1Ifr#u!a%}18oEP|>Krm?Rs}+Ch zvsJEpp@?4k5h^=?vFDSWZcd)cEUxme$SH{eJPVjLC&yMR-iu47_i{asti@fJC;qg^ zCG9`nK$q~a_RJjPo8BHsrtCM= zL-wp`<4vPSPLNN9x~B%Od}cLVT1{*&EyW=gWk-SMJkqIvu7%kDDdipaWW1y^mCom- z0TI-v{O<8|o(u&yT9zWG&%%HRAcCHCSB1+=iJR{?aWDjQ$q=6odQNV`$RBF#Wd zbct-V*&AIx@m|&yxkF{UiQe2~&6&t*kdn zY6RH`ZUX@Lf`y!|GG{W~mKk~j^yly0rAgB0oFTgYsEgSWXi@ZqMe1}U#@drs%v5GK z9vCR4QK~K)^B5ce6B}k+p5zzS8d*E|x-?pqgeH&CB>z;Jdybg9X!=ec`iCCALy&lu zJH4X--?;HN!F43Rq+?B3@NIpE;aKHMxp^Q%SSB(nZzz6KvulpF!NKD-`vODkR#HTE z4QTV8q>y;hn5OEJIP-Lln+uw_n3tpQBn>UZ4-4}UsJs_Z7t3oq^ZGJZe_9&3lN=jF zKPVhUPUKbXQ!669Ro#KK^WNAS35%kfTjED$L z4T8HdvQ{u0XOUk*UVQ5Ax>iYrhLw>QXg|N>(yBacd8}QRw}WbcUtG;chKTL?K}<#% zR-`2cnTKIh{8`srxB6#(OyYzqm}xU7wmlpWuTEkH)vKFwpr={o!a3fQvr%!7mS!8a zkvSF2+XA>ZYd;ni6}6WW8~DO?p6ijim9;`lZ|}%A9O@u@mFSg`pObA@i*7INF#no` zQnj4IGY?cfR_ua(US-UOx^2W2eMp{&pBO=`=LmLM}o|cXtsi+e`MJ3A7_YL3To?xlF83C&KrEyR9qC; z?!GM_&qV>QZWdI}wS|XsS`c*a1!eMU=606&;M)BY&x!{lPrKgPA$$M3H5Uj3$>M@n z+Sk+mP@2bUv;K=(c9tBBAF*c!h4b>{ws0F--}s+jT9(U#0Zg==M;Q6=P=r13Pbj-B z1D&r8<$52UFqB}ogUh`h7k;{Ce7?CS;f<(YtYhSVmvy>RQkH-pqNWx&x@R*xNq)(7 z5Wy#^j8W}uiyDZwMp-X+YR4`F%gjKfgwzN?>P(o@CxSKXDjJoN4tB=Jd9ctL-2|lI zWp^UBX!h}RL(w>h%U@z7%~82Tu@Ey82D*l#=s{>5H0yxg$~iH+DvN?YD)*wn)4Ciw zG$A^0v{Ec?T8%x3rDt7=H8G=Yh1jp;kC8GE(zwbjmp}Zl11|bg;EiFv?;5{CTz5!v z5Dqy>alReSW#p)fG_!8=jeMQ|g3~^hWnxN8Thtb|EUGwY6zza%Y|b@+n5V3j-sRzb zc-pZjS|tML4?B+(NYcQ6#_u)9_U%`fxqh_tjw-iIGba9Ele0bYU5LfM(Xe96Cd;CZ zrfOu*LymzkBLPUH`Rc674e^JQjzOWeIzk_@eDN&$7 zB`^k$RqDYRH^p-WlggGi)8EU=K6t`xs+#a4>qXwsb2AU`a*x%b@;Mye&vy;cHniTW zpB|-$qK+I%jaN3Q^9_SqBpDm}Npl33bO~t=MoyKK@YNNGdoC{U6cp%;mHiBYT6jBp zuZXifeTD`Ug$0S8J6ojxmhYt{?SgVE6SRd+QiD~Ht4x>`4H)ju?3kXe5tn-0!hR#$ zgnt(e9+~Fi@jR+#&DRr`NNMUQZd(&-W{obr1~fq8kU#}o9;wZqtOQ!ij7RLKL0YaR zWA2QrZC;w9SqvTmahmv?Iirf8*DG%N)-_KZp20SdRj9P)(6r0TeW;a0hP65H8FVeW zk11Q#b>gHg?&MXbX=8Z-65`S4?IW{j3W?3Uv@O3ufQKdE3} zDbBr7fe(q2XI#B`yLy31^b{@?uH%ytUX1NVXUC##-isnxpP5SOu0_YE-#%9+m|^1L z^gdlV6v;Q~qs2$wf~{zcbd9X^_{&o)UB$}SYe^z*FSV1S>%>5XM4{dwAW;j7s`z_z zx{!a|d&JJ5Zvd?MzOl_Yibq5v3#Brl=o0^M{JpodBdP0_?=M78l%DwbF8m?fe@5|| zdz5lBV<1SgV*%5t`>gFFo#odWMGXgoyIIfYM$NA~ps59A`ujnQLK56gPR(`}{Aw8= zpF#>JPQhUjgbF$~vs_+Y>R};jUB+IT`+OT8A+pfxS*;&s(l<#f6C3e|mMQKv$yO4d zdhp)sb|OBnxB%))$z_n&^`_A$NA{uXZlZMMf7S5G=+4(kA$OspW%=&UcOzR<1tO=|ZZ12a@XRws09jWw`L7q=-_VyS zWrBvCPdwFdHc%IJM5pqx1+L@_y|)<;u?6@Q0Ga0>1|cNf7;H8`fOe_UaM9D@bZnnb zPdzd&OIxC}vRWTH!pxQy4BkB$`DaZnfTO`(>v_r~dz=6nBOS$c zuGtL7x}@wWka0yc&u*uOAJKF2(F9qTukyFTfRC+V5GSbAG~FO|Rz*8fdwfRZ)e1W7 z0vU?64qiUxAYb`hD0a+GQKUxn=DRK%o^pg}=3o(+yXu(_@aJj9B88tf2I?0aoD+_a zRD?G&VPp6EHj=>zW|7Zxv>YnM%mtPPkyg@%;qs&4H@6E>_<@t@__3&qFMCJO1G>L# z1+O3_AP1=()V;73pS5e&p&+^l7r1z(JUL#IMSxb)kG36jvqk{zuF zh6kz-m5Bp1RQ@)kk!$N^Z^nEI3gPLDaYlZovWFTc^|JPCOCt{4Qkhm2EIRjtVZ-exWA1(}u2L6=*M8H3>7c*3VHEEP%kL zKSqxv;EK8jVYF{`d^uz}tkV1dP&{duFOwVmI2E!Aa3P$cWkh)*KIYUMKsI>HB~I0)CB*O= zI<3N>Kj@?z26M6qt54WfRY%IG6B}Y}w9OPL*@6|0lEa(}=z}-K$rGn@RKc~3sDYEz zqlzb31}|}nz-*KCb9$eLd8YSZ-LBbg-|V!$8AF(4G=4qed+oUT>}40MOwvOg&Z1Kc ztU$eFH=|QQ#>-Ly(IzPrvy=E@6WXx@VZ79=5~F$uyk(bD_REAoN<)uPd)NXJq<-0N zI=4B(XHeo48Xb@eVdfD%2U@^B)_D`6K$mwrU%wdliZxh(cgMYlU67{uD00eg(YpP=ja)WiH%244xb=wc~LwqXRA2N+oZS# z1uK)?x^_%F$|Z{TTF;O!hOR;lACvW4QuhZ$m6O!_!=*fJ+D}cK-&N?>jl`I_N>On< zA|g4KW4xX-q$IzU0j%$J;Bv&Hxnrj8`CHv zS(aZC`Ga63{<<%4m|H?|age{R~Fht;&MRT&AP8v2ZaGZM#L2?L@?+?sjTv zz-$+MKcGnM>A^F)=lY$hlg|8PWhO>q5eD2ctiBg(oF1?`?nsZOZ7~ zB3KkMf>P{*a|l5$3vNGx1=7ns#pdleEDW6WU|K;O|9&cbuPpUoG2Vh7Hp{-`S~(xob~-J>-@)>jtJjvZRi z?Hs;MVTqmWAJS(ZWPCNk_fVRxXYRi9k9xDbVEO26V>rkG`o%85SM@XqQgYbFgaD2$ zqm6+GV{JJ1A$d_zvu5T994{+I;Lwv2g<^gt`X~k@?%cR^tQ7r99E&K9DKJ+{^J4OA zIt5$D6NJ*zVY#f0Kg<5gu;ga9nV{fi%Xs_(&_jm z1M(#r&QYv?^>l)n9g#l-;PC>*)k}FLbvI}h*LY1N^(C{(;?&}{SHrkPGp`-=1-k$x zP@>%p_CD^QcA<3jX5K?FOmoC62@XY5^n@w&iGnhJ^T1E{%w~vrgU=|N9Cc(oI=6&u zQFtt_{702;Ar_rZDjDGM(0?|6IhN(@TMm0;f$vMhJ7IoYAitGxd|mj>SKqq`DeMq3 zZ$@C&h|RI;4n5LiqcI=5|DC{b9Rk7Sim|InIE&j&d!CL>Oap+~eI^U_?<+MqU&X?8~ahWaZFUL#jRGgiGFt!}DP?Y6wF%t z8pK1g$q11_Y17>>GGo-udQZuarOmMT@K(OMp#7OS`lU^TdYGbyZb|(1D3^%(nN1Rf z?2Gk6j>Y;y~+O_5J|Vk%WqaLi)0>#ioQ>x%yZ*0l05fkp_d2j3|V z#I4Vk?2cl;iT+-ZbE)MvVGOtlh25)$q&Mz7y1-gy-&Y$aZWCRqO0z63^7m5UMDwx8 zc-xSO5(sf*Rdu_M{#q`3iqCg^^BAkw`+bkE&PQGnEmI2u9Wl6G_6sgC+=65R^hKk< zp;CW0P)EfOg(0RzQhB+2WwWu0m`zBkHosrK@x`%wQu%}UOp5F47oGWK8D_@z_W8a?O9c98U@W%`F}N}%o#ciDj|XDXFEJU&|ya-C2lyL z-};2%OL@=a$-r?@ngU6h?)~NH3UAJ^O=+=}$$r}HSFwi%nF@Sr1f~1VXiI)N!jB3O zjnxy7h9JI1!BVh=m>tKh>HpgA+13|ixR1%>Y8PvqJN}v@sE=qTLPHMn8k&jno0bUuCQd5<2zMDA7OEH?JY zB4d=lQa^Uo*ysHV&vrTG%Re<=@P!P8l%sfY0L|?U-;N0_$6^fgO^7tgPyq6_cR z-?k6>m(4>}K5WkHW6S`2cP7my0o{QQ^`;&drbDF-efu*;b;0lC8&LGgX(2&SChK|4u$EY9wcu2DXzepxjs34rGkK8HM z$Rek|gt0sDc9Kafi|yk~Ye&wvbNdVI{WEutN%gc__Q8(jl>!l<=RP-!BOx8-=vRCm^OP<<`w&o}yqzF${zn_dAICJwRAf#(lAl~*7hH#rtNGnX1= zgE$m@@B+8f5yR+}QFh!mY)YSHT8qEj9z4GL^z1n+4!8O&SwoPyCn z#C2jpH*zS$?h*`S;#) zJ4Q6c0Vw2L5>93Wq2ykIDH`sPZtI#v$9|Pdm#KHh!GIiU2Pq$13zQ&CnP+548kr zQM>Lcn{$*}VLiZp@XT#rEYDxZGKurYALT}fjN%uPy*UeFJBEmu{=YvJx3i(&?HBur z_1nOu;4ebKt}@7*a0J} z!?^@rrv188U`Sz`5{dU;EiIs^m*9@vK|e`j6iWg`za-MYa>f;95O-Lrr#UXTh*frl z{eIWy5>K`Ou^&=#0bM8`+00Q5aJG5|4g3Y9B8Kx;<8fTTzq2B^ zK8Ngp8)0pU*fCs@wlSd)MMb{R7Jkj^>$N_#xDiV)t_c&f z##q`QmrMgb=hqysp5CRDlz11FBViMXV>xn~(nj-HPV`Uubu_GJd z2NUKPDMOw#yW|UDNGR5D`2+KR?gVkjkzrdSoQfsvm9y}g&UtcAZ8Xq`n9_pL)DgRD zDOBhk_mJMw`dLrzmk)}hIe7jFsDOd|SouC7M(v3{Y-R*Xpr-`Bc0n5Wg$rW=_pE~emr`^r zwZ9d_AUPOW7_H!f`_Ot>t#5ofWVxZ+wv@WK3~}I3f;_N~zKVgvP`p7?kC))!2cwr}IxiL1 z=fwTK@=In{tC>@XI3>Z?_kM^1`%9qU-L7eZ_l*Z-eL#17pO^bJ3#u~g5(MWt-ec^a zD+n$RUWu}Dn|~`urd*3Y@(Mfnj9#yv;Vg+2d$P3NqQxWY*Z?Qb(YjL-*8d#6dm3dg z3@q)tb>-ce7*ZYmz9P={YEu zkr{M%sKTp#H6{KFq?I~Je2x#8U%%l#CMkLvqy5!~JP$v`poD;EBkK%TJcD@gJffh1 z7Bb9;fEnecg$|rRWet-0?@4a4Jo0niqb`g<$a;U%Dg|SSYE^N*T!G0AIxpqU2D)DO z>n|?txyh}8RX^}D1{BN0dreA1I5Li_2F)aC4APBg34Qm4&k3y|uy{Z4 zlWv|?G*a9B82^wjKq|Lco8@K)kDa*nN8Sto%dSB_Ad98gIEpSeekb{d*zAumTGT+= z9jGZh9P(43v$56nJ}Ya=6MG2^xUFppAwTIGL|jkH>!aq7@+@9=7#RS%?0veao0LjY zI}IQ;D9e7^wDy)CdjhGKt9WmF-R-RVj5PWuzzCbBYB{wg_H*o8my=th(-LEgZ~$Ww zCME54KQ0yOEl3CJ+sE730 zZ8M~)Y+Yv9t^y)u&f->X?ytegH>BaML3BMAY@f5Ef0CkQMjX*}um_ojjiH6OrYw>? zjy!`js~gLrh@{UoAL%>SyNt3Ro`VdPl`Zwo+-2mKw(}_T zV{X=t2098hQfGqtumuFR#fq%UdL3J8%Lj}gTLp^M?-`)`1eh)+0d!>Yw0F8Urwy>5 z$TAMFpL?&Uw_o5WOYl9XDgqkX5DB4)rmQVR?s9PV@HuY^d~k?U@HHBCh>4C~c43IH z;8A?K($WI&x!m&pT`iU))otBeY>Xb4?dgx6Eis7J(v2oxb^~7&Qp_6^8iBM}vWQud zMeZ?61Pm8_Q>$)3Lv`}j98EN|{Acs{8q`K$p~pb9Q(tUM;IJ!F9GG5)Z*ctS!7Dg) z^=~(3?BOrhS>sqCQ+R5DyoQQ&`Y^QgAyp>x4q>C{!)9bq5!A%Lzn;L>+-!P}UTwIc zF5lB5bz$tKpPFICAN%*$r)?GIwvo$^NOggPNy&OuJ)p2pi-~_(1Y7lH$@OV;8h+4v zFz1cjhI?&5;N}>^GJ2r`F;;1RRLu^qb@ld%O zpGO7pg2x-ea|YK#N!amnQz(Gu2_s@Rkr{N7>iA}S7GI?m9%`w^X2dOPS;9(SO`+D_fn3Wqh)CRaZx@d& zTaN6iA2Ze9y;s3e-cInt_9K0C=uqd**934=Tw4aa(o|K)mynHkOa-z+E5$T{!v>+o z#Mfp%@^kTMocnAr6@y6y3Z$f{4H!3}{D{l&>g|Y4i%AuaKzUnBeKJ;@(Su|Akuswm z#Bs=&qAtN;-?FKR0{CHE71L)E*Q13)<27dJG(=g3tqJ;S0cQ^-l}v~KHWYZL(b$x5 zKpA9`JI1%(kvb{8oazM9U0-p8TvC(l0Q)^J=_x>p@m*kb!B_GuIgyTe>}UjvCs-ls zy**fqwrr7?U!lWdytp#oq;4phJ2qVZF8A*(ol1B!Yrz%ACv=Ce)P+SUArJCjk1c#` zdyve?#(rXRPUn2scwNI=8pUx@v9{tm!5M_G{=y9|q|HNtG}OR~TQ5sSe74jl^3eJzw=2D}YNPU+{NJmz6;(&|%Fs>|N)3JVR88DNL zwbn%CAZRMlF=rHusYD9fq!{7iE>7Ly_#9q8{3I;3(Yp-IGts+i`ufshf{*V^pUpU2 z%AQ6D$*58e9X#7y1w1tkfF!!(bQmo~!jU(a+WtD}$yDZ>)|R;vR{3FgIT7wo#YtiO zq31OF^ycZXztQ*pW;#IpNP@GIF{nbp(a`c(w09=FVa~|gcG<5~aYnu7ld1XnUIG5y z2M=d)&0|^Ald!Z^!pM+%r$kmURy?O9q*ducHSv7cK$+s;kdG4bb2aGbVbzx z$0K!JVM~!B%iSF=C|I$R*W3E8Xz@{6$!*JKt~R%rpg*txNz%83-!09Oa_J01HjR|Z zx$1pV562zK+8>z#A$YShN0j>(fzMi%%vK_B+is4 z^1N$xj=GNdEliUAI+!Gic?R2-jnRoP>v~X=evY=`6Az%sf&HY;TALum13yx(*_1C` zY_=huereJf-4j^Piz57G%HP-U0+NS2 z8?@>=6rftN-FoLyr9y!_-!0T{IYkjC7qD7(xoX1SnN4;v5Te?;M;zrqijj9K^8^&=m`d6knIzs#gxMI+8A?Jg6Tj=CY$#i0YS zKFlY~1Zm-cW11eGD-PoR!gTH91ous&L2)Ux+l#tgwG)wz(MZy4Rd)fuXwK(Oj(C1blW!0@zwV~9aKP@Qba0T$yS zDbRI>`w=l0FWN4}*BlvCRW*`n^@(jW2~VAAZPwmx@iG&DjD6R--~E*-dVEqx9S{EA z+0GXtvM$G`U?>+->}r>bidI^p;8MC_x4VDQJav1EF{{M-SY+$-9j8eEyA-mij@AvRxJl!Rs zo8;FbQfg~i)*AY6Q)B)~k}DDE39)Zr#1E4O`JeEQxrQ?lT+%A;dsu2-Eh*oj(d^}G zzmh_SwT(4%?b`8Rr0n08{Xzb97NSG{*QdS*W`>kD2kLSBXlIc`LWlg!hH<^W6q)`s z-)(%f1&_3sZ^fJ(QZBJxy?G33lO4HF&wZ*k;%u@bSa3wWnZ$4h8W|q}sOO{%POVp; zOM3M+Zb=#v?JvUD6LEwbyasymHY|+Y1KO)3@Nrj!qn;&`E0W$W%1z-9X#YE^F{jF)a<>Jn_VCFoZF$r3dEMYPvYYG0a%& z^(9vf+W@SHq_uoe12no-Qr1)%&cOn)yHV^~e8d9PANyj$zJ{**_K5`gP!N2cbzObJ7~@O)V0h*Q^APETi&} z<|Kd?W-ISvwb27Gc9xCgo-#fbxX8h7-0CtEA>$tODw1R&wEZ{6MY6%!aH%PZ@#%0u zHRq5wc!yh3ZvuIK->IAGG5E=_Gd6lCpI}6{QwkMiaeidjbXdBAH)Yj7@go{qBpaiP ziY#4MXx@Qt9ZZiwAwjw-1~uhe#mber(m4IbJ~lj=gd1Z9$kMTr7#VLnS3Lc}trr0| zoWj0kp8v+*x_QCw04_u1{z8>nik}%^JIq+cZ(N|6Oz0OBw3522!&cDcU6L{Ch6#aD z=@tyCWbC4(xFJ8kRlk@?;^(eR|>ZX_)whA+uwZ4Hn@vcUZCY;mQzfx-e98Lpuy-caf6lB4Co9 zErij?N=Pfcn{jW!TAxe7bYg!Z8Y)Iff}d2)WhgJNlZfo{J`2?A5d(6jP9e)^QK48r z*LZ!#zp>qaAS3-Oa5%Ai|6pZDY~{7n(Gqm>f|l6chU-X=0cli1WC$8WL>Dff^_R7< zLm+29)b=niOouz1J*Y^ni&Q-N#ENQhpc$RRM0$f+;RWeeoGv(U;q-lFI;A*rLa3}- zNHOH)dPtK2SN9Y`ee+({U8bGm{Q&#MfQ3t*#jwGQGH!~QV=MYZ*>S|{JONY%q6xFz zEZgGPm+c1kB4JG#el|6SX5;Q2K8hQyL+l@iFvsMlTG^lWNuz9@2`DIJSgdC&jiQ6z zT{VmvXNQTq=p9I_YUK_gg}8_WsZnS*u4zA$$*lUQ;#$8L__jgsmP?`dV+@5CnDd!f zgVgg(m{Xax-{i zt|w^fts-5djQuE|Spy}{zYF8-p1su)KUB|&NobS*uul_l|N4tKRSxL2yHBV1;78dU zEE#)bAdMXpR{4;nSZ3lrUZh+84{`F0FPh?w#bDqea}DqDZQ%_m^t|dKq z29xTk85ICSl!<>m2-iD#6R#wB5+!mV92Kp1jczZZu=+u58362zW0H1tlw&(<{}Ia_ zVqV{pZ8a?T^3*4=(&j)GBna863THXd-0lK^4x~~>>+uPstFTWXukdAqU~)M*qkH3O z9naFG*JhLvPyTmR>nMRS5oQoeg4rDe0HlxF$vRs5Uh83E4w#&w>;eQLA{R0k7dQJp zYw1trmRf6J5F>+geT+4n085Lg7%z0FZh!>G2H)ybR86tG5m2&IH9~AOAJY#g$03=z z&=E}mzBAKf@h{lO9iv9utE&jvsHNNJu1gMM#rU~XYh(}Y0>&yU1GC-C^z@&(J0NUD zo4a}N41My{Ox`2_6IvCLx0`qNPnulI+LA)c`?N1AtY}fyVus+xRtXxe{~wTHtw>~sZ%{3Ha$b&H?>F_E0%DDuu>}mt#a^}aZDNKL9ZXLb>FH8nCGwy)l zlFqQO+Mpm8mTiCpQ!!p%Feyo^?we5YL`hdfQuK5`?~-RNOWxnO2;7~?_Gfk5n!#j^ zuv){Ue1ZH3U8e{VDA8OY!HTt5hS34kq4_Q-1*C*1!ynQvJB1cXEbQ97Y+^uV)nBO^ zr$96FxB9f0Jj8_kUH#tl^CuWFgnc2-Cc*NT*TChI>-zyw>;?Rx*d9{x3n61{U*#d; z)$vU3Eg6+OJP{0aH}%<|AYIs`0k6#`o>@5c|GG>@-S_8&CAs_o|#-!6+37{2sm7e-vHB|zhQbKy}04Pt*$O>KE z@0Qf^f76s=1>-^JCg0BL`ypVH0266#xKGt>Vw$Bl=?b`;EqFXu*#Mhbe=TbqIw3~^ET`nT< zhgS!EL<~1#jObIb7xJXMAMQzE++-Evs_C+p1-~td>kO%!6y3$c4lA{GGOtlvKCT_; z>^&zG{ff}2SeeoE&wj5v?5b$|^r)_sXQOQ_G^Q;?Taoz)g|I64c9at=$am0skz$Rf zPvA{!>Rk}Wr)d`HfA8%6D>E^VsU0#3+k)||{Yq!d2adk-dyBzzUn1`7#ZDSRs{KDG z#G&2ZY{lCKp;hOQhqyf5U`#@YIS8_FHD`(=(bicq@FWXpU-Kj9q62G{&`4>BYRu-e zQ5|Zvg@Wsx7ebpsc2O6k(NcwN+&x`KC3(g^m%Dgv`=5Pjz8?srV^r;S_!|cxYb=>~ zK4C|=GGYGp44b^~YM@$t1p_aJ?3{FJzem8)nc=yl?9fg!ABa@set|i)jg0IC$g>u&_ zUuzwj#|(KMdqrj$9|Q&^?*c?W?nHT>BBVfk$FBVk6}|iBSKEr)&(mTG-sCeAAVrV2 zQqO`(E}%5hZjZcNym+tm3jCay>!s`6tXGF^;3O!G>E6vRL@#sCQixF659-5dAy$N+ z&5gGR1X5R$^{Ne^*7+NEaj>3j#m+4Gq%y6bg4WNP+e_i6k_xZjl53$qy~R6hAPF58 z@az)hMXUhB&uHt2$C?|m8UN5nG|0BFUYXC1Nt$M|e#*O+3oSt3cXI~|3C0v)&X^UX ztjo!+NNdT;rw2s6>{8S^RaBN^qp`v7gxnxrhtc>E==J1axiTS0Vu*GCK6O67Yx++} z<7TSih5UEBROSRJ@kLam zx30b&*9*SPJ=E4#e{^<7<-rCwgSag%+I27AQ$OQ+u=QmOe#e4XE@Z_vO&pJ5-eO+A z?>%|9q&L4zL;C)}3EJOL40psj3?&kA>TnXT*z5<+Ps&yhEVyq*Gx-~1nhL(vp^v=N zSoo8(R0JVXmhTGPrm#>aALv|X% z)3?r-Ny9EgRJgGtXv^qW`t!@1BfnZM8Ia8N0Q6lN-Ug~Zggu=WZj*@k`gM9W2c6S+ z@^D895Z-0?xzMnQ0&_`Q_vv?}`9e;)RXtOh^EHMZ_{dk>8MTI#jkfAO*gXx!^+SC_ z8*o43ZB66@vjl?p)6318q28_jPm|;-ObRhrX%dSu9Zi10*1{6-EWE$bz1wVrrZ^>O zhP27?gV^+;z5J9R?9a<)>Uo{;oM^OM(N^5ResM}bY|^n0@La}N7OO@K?KG`X1sRS3X~pvGBcL5GIk>m60eFO zN}N53dRC-$HHX!F*EFfZ_rVGVvDu9LttwV$ipn8dPj+g06mHEG8G60?O#1vY!jE)?6g~<&vo+;*WveN z?<)8d>nP2Q4eOn4es0O)JfLg>|DjiEDy-A$q!1qDxqU z*oxG(L~gG1l$CagEa(G2;8n6j=@)spkSMI6(k?wjhs~a^d!{+ zi7yfSUD*l9?d~^uC#I}5Woq2#S8RV34!8o<*%@Rj6X>-X$U=v>yI##XTRxpSqT!$S zK+fPlQ%JFPGmIgVT=hg1*I z)na%Ko3q&chfR|6tCcb0-YsCqkn|_hGZ*SuMda7T<~7=#Rb!{|Gd-F@q;C-&Dsde2WI?v0sJFgO?C zgB+#5y~^J`3^+xnz#gC9IKXG%7V63auL7_GA%{WW0ybfi;KG1uyY#(M*$=Fz21dy4tMkuaYD&GdKogcfhu-=wY(^K)$`Gwpel-PWWneO8<22$M zvTdm+r1LJpg=|M2VOk1T(UfIyu@tM~z~TRB_2Ui^)B{iRV$<^*obSn^mjXdTI+k-) zzq2VQf6m=Np|l8DdK6)*$13k_Kxg!*{{Ar#I{1*YU~#+D=^bp5uWysKkf?f_;L4w(Ve5yM=l#qq!#?3;XA zU_W;8w*h*L^?f!M5wM7k7M-_0SzGIEq_^jv=qvffgUi@?NsX&UGX2lunzkGmOBiqw z+75e9BjGUU)5WJIGqme+VHw8kse5A7z^Vg8AE5K~xp~ufJ5TeBVrLN|y~oKZxlgJ~ zS=)v88q4~a7M--0Sk)L{4Iwz`2X;+qWFuzlC5@k96j_Mgiry~QB=3t53&{XJ)k>qo ztcaJbywBR_;KTr&w}6an2_W8`pz!aH7Jw>!7-AG}rvn8UM)(Tqs8sJn^zktb!BlxN z%0I~7L;X#^z9o}BfXRxnfr)@qDu!P1QrtG5jcH6dYp5Jl$0k2df3W}P%x`-7ezyG? zLZJj^te(T+XC)}hStex#1e5n0*GE*8&G#<&6np*tL9)_Mn{X~2Il#ZHSB7XuX9ow) z@Z+EulKT|8*dq4st-WSjH)eq_vm}~3Hu;Iwd3v@>^0@m`xxHd$AJ1rVTM0&%o@{Fxwoto-c*$RxY~bxaZ?Af3F!pUiQI1ABf7osNs%ylxLS4^O;|9+ zzK(w0i;_D>0%J{<6owQtUb4kd_r_RiiyZJN?*fIv+eYl>F>tjmgIJrP zXKbgk3mmKBOEC>iyzlO~w9?kUFcE;lI^U^|vHGp41mst{1Hlmp;%juFV^xhaOSRiQ zmiv+^+-9pwra7}vP5@MKpTQ}2I9y?c<8M{AiRpmOXoN!K+3)2tmBC7rkHk)_!JQ?3 zIxLv^i;Rh=9|a3Fz`T0Q6kU0txxCtzsT`VKg9(|5NJzjv%a9k3hJq#^q^?4wd%&|lGWa))-cIXFGP}0IgV4M;LnO5RuCt)`W z;75I^L#xfY6kDa6ZL7aQ;W}g?2_$LRRjQCkk22Iv<%MNL(A1}9dN=uMsXDfJ4$Af9 zOQ|8{L_72nGR*yaEBsUFB~c0w1*%ir<-}MLq9M;bAB>GynG!zxY{t0UdiQRQIB_9e zK@hGX0`aHYhm-n!6~|&Mz4~coT)^9bJVMFiDyk5nGgarU#-q0V1uX}8;Q8XKhCfoDjsfxt7Djv`L z_1j>KWj=+_#ym90YT4Q}tTw=rg42LNbQ0Xo&T2(YgG1Uh>9$E1G`i< zX&ud28sY$#4$h91TORXk&WGPisjK()Mq~F^e&9h5h{|v;rF#&E$S??S7p5>0_ngRa zXY$`60w*}<`c45P6vd%p7*oH!XO$pLoc~?XTQ;#*D{)Oof#{>GCcxbSRN=Qstv*D0 zR`JcBrWcK3uVFJw=EQv&6^NPo?vemVu6msNFf3@|~_V z67`yZ-^{v0wL?cgQT6d-EeWb+EpWpGodMzCw>|%vCH>#p3&Dl5FAYCN3NPLXVhD)s z_2Td5r=23*DLGVpgBYz;O~Uqi>|}k)Chl!dc&q(~%hEx0vud%`pTw<=SG%lvcr)Bh z)7;l_o`l@RrYd0E9SSi)92;Y|lGIm;dxGW;tb#$(jw>>d!rl|{U?8t=PvCG`-K9+5 z`Z%g#q?|7*sS7#tk&0~n{7UnEN;MHTyQG1P1D1sAVY1 zV*Sx-f8F(_N-MtftO-2lpbeH6OhrDyqn*IRAdgDxKa@1TOXh_y}|IV zQHw3prVc6{!R%OpSVPEQ+!B-nDT+u{%q}-7gORkY68KhwO+|!)?F~60wpNCMur*dx zt!FqQ4@Ux8rcDpk6b?tJ_kQ&_9SYUoUG|bQ@vo48r=tlF|M!IIx`^)3?!7#ezXwu| z#eLiWf};?XL=5u4 z%PRE(k_Iy*nu%7rGJUhVgU4aoHDu#NlG^gZ3ArYW&~cny)k+yzRT^@`0{?Y)iYF|Y zV$xJ4`olE&bUE)l+;od(B$6FD#i~k%=H8AvVCM=1`-q%aT*)S;TB_-d8hV`x3{+zo z#nsOg6>=88;{`RBOdhl|xa7Q{X{qCmPgQdejl0!q7ohyH7OhS*#5zjcl=?Dz@LYkM zH#($3O_I1||G1aH`>q(Nku9ICyy2~K%dQ~sxH%@#(ofO+2mP&@`sk-j>;0z-hCJ!= zH){zhC_!C(dx_p?YqSbw1Fb9R1h3+DaDytfMFrIQVhH@~1#0@unphendl{8cuEKkqwHyPkBQBLj zOjK#PHw-t#O<6qk%cAb*sW;t~gNWt?!4t&gorE|3Sq%1&H*TD3xOPx-o*G7@k#V9A z>Ji7BTmxH{{UA`l`yQt6_;DvXTsXRnC1VG6$mzZ47?@rvErfP#A%dx=Qv;hs&dP|42LEIJpaGX zVDk2;OW3OytAXyw6MKaEWae_$mBa-csw0zO9(X)-;k51(Rl%C z{?*Ll6^WyVZxx0!juDXC3#Kfo%y=MG!^W(MyXt*4#gPq8+_##>|D&kvqjyo9QX3dR zst(24^kZUo#7!0=S;OKn^?2FI5FXME;=>UX)gV5=A3_>&iK(SEowXyI9YT62Zp6ze zXn?DLUA;qb?y4YiY)t{OG>*q)Xt4zTOHPtmrfa8Z+$Rv0i%Ui4s?SBy0yawNTVT&G zOqZw%j}(QCnPX=(lARQ=W`S(sQ{^XS7=Mhzp2_cV?JL%2zB81oveW>qw|c&9bcINh zH>|Qr1kim{FcuB)b_ddeH=hoRM!APEr?m^g8{R_Bhc4hMx)vXpx6$1(g*7HIv#92? zYl2?!+*y143v?uhy}xC6i)V|IF?}htjXh~!CDkvC9bRhrZhAKUL)Yacnwp!vdB`Wx z=AV&u1sH4GnzD>IeL zf$~oWJ;?$2$~N5wIabHX!!1{ozfK|bs`!qO<|kRnM{5Sgu!2jcD}!5$DkEBwTpc$} z3Lu}!V;EzUMgDl0=<|Ye+HXaJ_r2{=a{2dxg(2)RtnK%Lb39RYTLC_|z>x&$6|1YD z5jkc?&?7AE7RL?dDlNP+0upZGS-0Js!VrS1=czs|XqdVNGz(L@_=&|ud7ml*q-*h* zV6}Yc!KIVQCyk0@63K?JypEQasfk1V^BpR*;SLEd)|nQ!K7nh1yYfo~ozTFUaq$Wg zbDq=V1*v&#RzPY|!k6q}456bK$64iN*PtKCfRT=7C`6x*0fm2~n4&P^WUB%-_f0w4 zwbMp93fn^rwq}B%NfLsSF`KQydSwZjldH4FPy-&3vqt1bZX5Za5O^1m%xPnWhQI}( zXLI#@?*3c^X(b~>$6um>3>Vw}n$WyF&`T!TIQ<4)F~u9q0CI6$CZtSv)y1v{_08+5 zaopZ9?8V>AHUHgllwy`LH*6PSpoS0RTsAe3Eu)Jt)Si#gA;=`G9OquLrnAK=(l^rb zCzaQBKX643gnxFYgAZTXF^;h_cc3P|+{|Q2;k8Qi@&LQbQ11;yv##QRm>}RVCyvNx z9OZo9^}ZbSGYiEXuRqIDwd9jrn*|jkMyQ#G#iqg+;^UW(W(5?y_-lJ0f(hDpxke(6*`M3ij12#J%1DijivE?JQkeeJ7V$qN zxMU|igVWCI2biyXj=kffrj<0H(7aCgj0?RzfgdFj3Vg0Xl3{*5w%ICQdx4YMv8?t2 zn@O{hv#PjaVhnV|uHZVH+|p728?jt*RvEs1*KiY&%3~~~0S4as>7MDONQ9w^+dG+M zfQkH6TPwBh%}h%td-)ey%es&fNeFB|g({@@*Y@~C{r3a~-4K;M+E-``Q?%NMZ>PM! z&Iwm2SV# zis|WcAJb&sYSgnG3blIreNR<^s{{FSMIa94^JB-6KdGd~s8$h6uCK;+bPB;pn9lYt z-EWUxK=N7W)XERHsv2y^wbwXI}8#@U51MNQkS5>}C~B&``Mm5}&~A z5ZJk7Ft!M?knq9$Yz9V!7i(wc+MRJQ_^!DHe=`Yt^ph5_%)*BCY|^>H%>VdS>{1pk z8DVidz7wm&;Qj-Q?hwPG^~?l?RvZ2waF;%2@J^=^Z|49pD7<^1B25^7l zSdOKB4wQu5ph%K;RumwTKln^F6;UfDx3gFCT(nHdWffI=90l{w)}fM+A>mX%2yj+* zaWwWbE;}X}**GJ>+;YH6Zc_=2)Bw&QwQf(FPU=yt z^Js5|YT7l3>EVl%@>C{Fw1*DJiz| zCUdEzo{5?rM)3`F)KFf++DzMx4zMB~8;f)L!Vc}?%AAq9TC>qq8m1IEImw0mK{z$- zUSFf)EApxdjx4MJ9GW@C4+0JQ-HhJjj?0bPhzsv(X@sJEJ~Ed#^&yJSy6femaYa~< z+=kNBIy>rPL%g5ZzE^<=El#$L2>R9Z(mtp)Pb{sL;A6( z(v7k^F_XWX{4{ZUkeTBzyFkG<4h1db>xRyF?fgB0uBQTmSrQzp~Y-Wq%K!LCd4a1Y`s{Qa3vGEye zoAv2EPYZ#3h;h~L>u9e052KO%=1iz99d?h^jqI|>TexV>P3n@5rAqi2q@U00IA`i) zCNL8oiyx(|S`meQA#Ek)9F>f!QBhX$cr>xii&C-$Lm zqd;Sc-%dhEf!k%aec@gIr&Z0E2!PyL4x*n*pB+^x%}GMrt% zAsnmEOpmkmB>6C6SatYW&STQC_=zzEq+8r?`mAnMR*nj!Xw`!|)PhxcJ(#ehf3{iX zw0oA}{o|_lXa*4w-^2-A7M$Z)(L#tFlx+5XcX|aSOcq!Xa|p5`XBZ~=;40tswVN@2 zl1F$&(b9ZGfWR!4^y0wVcb#4PC2$uo*n z9b+P5@2XBdJ=bU#=HVZ}e+C`WAlI3MuQp9uM99gDrzuL%9|vk`t%c#+RYmtj6;oVbNXjVAq$|9xGAme+|B7r-Wh4W%Z6L7e$+Cn&k<=q zxmX!lHm5BiWe5eB10wSR;+s6rhgw8+gq=ZakQY3c-QdBd(Txz}ck7CKblN9~x550H zb_mf@m)nlrJf>5dhumOARfpDV#|ZEUG@#uA1Dm~dU{Pl-52dhO`o`(UwZQQHU4cod z#R;^scO6in{aq#KQY}nS)MMY^jvd`aiVE%QOXhWNMS>S7^kLl#Vz@RY931YE-Bc`) z##qQU1+tXs+V!$j1py()WD+hD%bEC31;MeyL%A}Sk}k#R$6;Yghq7bkq);kW`GRdd zSbr-BlY?_|i14^~xJwWkei9If#2AY^1=^ifT}Q4hMOz<^jN{erepbsJ{Al<(irlIE z8wO8XTOVa~LLYwXgCJBz&c}qFg_#&Qx%2c7w$+4*aR@XwJv{{D*%GOcg-(+AZMfWG zkzxsR@*m4Au{Db87t?T+Endq_hbsfxyMjU)2iX6ZcGlggF&MFYVmXu-$UCyU&kaUP?Zb_u#;-pb z@vim(SHHUoyAo{G&?;A<2}Vt&Tn#g_T*X;?qS*J$;{r1t6x>&kuO^Vg=8UHUs>{*b zSG#v%6n8M!a`aZ8ybi+W&5Ch`a(=G6{ta0teXlRqR7EkL7aeKINXFc)o%as!1cd_{ zUH!T$@-4-_F9&)KrvAf5A;F*L%A3&&6e3C)Scc*F1Fde< z3ST~c6NuEo{u+_2ulAVz28j5J$9Hj(FfqhEnYOI_K+7z2N*#{+3fm0ifGt4teVz)~ zz#J&1@&+Ct`@-KQ&)p@0c4l6q{O{^7l_SIsed(nY$AAa{h!vJoars8tW)W@r8>(WX-&?wgOBj-`Jg185QGmJKEr zktAU-ns~AW0L%?EFdo{l@g2a4^f|-5K!@9nRJ_&9=4V*?YXJX00KlB7D+5l&_Xl7e zoQ(`)_(*82J28#ZOo878iUg~p-myx%N+(gZ96SCz-Sh^9E}koQ+1F&Mn#5HjOnk6l zm5(Bh6@Rk`xGvYI04dIp10oRTG#S)~4&Dq_1{9{1lRw4{eYG`ywss-o3O~?88pvl* z_J>Mmom6OWD#CPosEPtNE*WFRy}R#&f|*osK?XZ6B-K%d8ZW4}^Q)1o^R!+J`zppR zu&UHa;GNRv?)}O|5F8UDUx}JzSd#5}-V^}mX_H&iI_IdhVQmu44`jg#p`cJe zlpk{cfkGk)Mrn*XL9+>rjV8{z?BwL_dKtY1+E3WM>2PX#$2_bM!$%f@5+-@H`f6}O z?nvD)H-;+UlZNS0r-G6UH~^di#^RW3}ppKflX@@v;r$j_L= z5tT90;#jqzTNPgu0J*O~_nK#t80gvZ6}UKC>&cS0`bCfQWI5mE&M3gwbrx^R-V51D z|Ck|aQ%Oq;1A$bQ0P}A$5&FLM4TC9Olp2qkDHE?1jg!R}V>KWDofFtpPC;7slb=1# z4@+@N8 zel#vBbIPb&sBaS@73z^&MFZA>5>1h@dEzZIUrf*Dk=&d*DOx|c%vUOE=n1G}H#qX^ z2z6~`cOYgzG-n2VyoO_5($}mivO#6Fa8Z^Z2`3Y zx*2q1vp)$iN;u;(hx<}?u9Mbqr`QI!uKIHBqG)QVr?u0Jxz*4og5%;@HX$df_&hq- z(H)xySNc;xe#gDxlZcC&22~DgKXs;1HSC%Hdi6T{)*xse(k4v%2T$Z5>CB$+K!lY~ z^d0$t1UiX^M+QSXHFW95oiJMJO5eHN+x6{z3+xO>QBc0R>wj=a=bCZme$Tm`FX&5u zR>dfIJvaP zu{dZ8XTa)~*^}W13f^j_hJQVHK-k}^Ha{Z()OdWVnX=vR3^sPDo2-h4g%DdZ;Dz?7 zN4gq9L30r`=39fkd5s6yHGve%8{fQBHe#y0@=EZTXV;Fi)yx@;U6f>)bwOT^k9ahW z{dZ=Towo<}KPnoA_Jkbf%nTPgc30~blLAxcf{Mw^r}p~h8XupRzZ?19WOinXrcGR> zpKY$tV4K8ohj_ns2{9Hac@@61Cn!i2z5%@Zv(BNERS-mG0hh#>1Kv37LzU#zorG5E z4Qui&ZW}vWD$3VypvwXAm5su5_V<3Z_5Km>0SZ)~RrX&LKBzVB@>$sQw=b_YvU=C7IX!atY5Sg$di3e;Aw#?~7xqVoU>J;l327bPb>MsHm_D|+5J=8dyAren%)4?dT4*9z zr@I0^gw)T-?-e^?b>Qya0cleBS4~oMFC>I5Fcs-BD)ANX1qjsLgX#Mp4aUmIrrH=~ zuWiwny5U4YKnqqv))G7^i^3wArGRPW|6Cg&1a{W~&O_4u-Jl$_TD_JC zt5BS_9|eD5F@F{JmqA6cAw7wWwd0_yrPTwB?D&9Ahrje}{G!CTe9Ep7K1nxk-BPRA zl4oTtFA|+=875Obw-FmG68<8+lkEMn#^!O+lAGglD6V*}%&-52gWWjWoe?375}9b! zz*)rKgccO7iM$*uDFrWouC7M9yAJ2vXl@$P)S|A5EOfTMG$!sC#)zB(TUh4|cflk} zFe6Nh6I0Z|vZ`tHGy8a)#K{|*LK+a@V;s_WUeO6XptIqt6Mk)Xm$U;=E0s`Q@@d=LyuF94Vd z0rIqu5gu0NqoVr__Vc2G=L3ZEMN7`}VG9K?>lnK@f3nJ(V!dRKZ;aDg6Ho5^8!r#s zou82Eg^AxNV3{;qA{vN%#BllpCyb6D0qKP+yonV^Oy`W$dW&#$eqNQC4osuP*l}k< z%zKbEbr^3m(X`AyxjFpe8FGf-5c;ete1my-urTiQW=NJM+8h$U411X{0uy<2cDfFE zfJv8lJ5^|N`nPdubH>f^sjPqru*ih8XHi>Ia$wT6cIt1-duzgyv59EV#Dfrj+#R}1 zTJ!v3%Uca>Mu`k%Phr9hK&h-cc`oXKh@)NHmk35pLO?>@shIFX>@S~}1jNk%}Nr?h&O6!;3vZK8lRCIQ6g*Q+VaKobv*ns&#w-SU4&d1_2O` zev+g1u~xHvt2F9+Hpq$*{^R_&jO@%01tw`loFS{>Hcfde{@JPhmZm*0BOvb&D07Ur z?1SEQji&qKM#{=_3mEMcrs zxr@amkD4<;Ke*itzO&pmS9A&G!3SOnqn*pu+bgm;t>k1CP_Uj6Z0w0EXRK4(Dlj%a<$k3b-Zja_6~6$}#+{CcARs?f z6;#>xYv}|FvH0+YgT5+Lskbnw0G+A_N)`s!tK;;`K^wt0EDexhZOY`UAzUrGVf=c- z-Sy{4?wsyJRkc2p_|0l+khxmT5NzW`IA^lBh;AE$?6a|iC}cs3p4s_I@|mGxK`Z2M zc$4V%yqIu^%MGL1sx8==gg7oS!O~}lr@&h-;U*teFv_L0rHLSw`aIet5`r+5=F16T zGM75UP52p9kr?t@6w1pk-|MOt??R01q3GOp$uKdDi?N}XS8TF4s{q+j?Uch)8UHc_ zh^pgHH{*Z;0x8z~%?Ms=^7iaZ5Yx->*fDzl#?%i#DAo9{KuCN}$CO0bnjd`e*O>Z@ zDvu%8C_7uxE?z*YZ8IelxQ{C|Ax~xyoms@esT?zG)ybBabz2XZPnKNuVsQ-|AAWeX zet?+xlNXpxc+UH!gcJ^DqjZ8$x9h=D#1lzrhF?AkBu4(W7D?7$Z&oV*|9+u7f3XOvb!W|SZXUHtVl?pl-1rN072pvs=n z97T!EMBoGltH-9rLd}7Y*SZ=DKm;#DByf|P2=|UvdUlUcIft@2dvV$nrs44pKdBikDmFhOZ6Brhs#n-?<x++sP%!Cg8!&HwEzNT#HJP_!B%h3 zAGdnA^JwtxQy^$+b&Yi)`<+#-%~pU<7FUf(=__TO^P)VnN0S{=ALzGyY~HxJHgsg} zk1`};nF;=^cxHv>tIhWjIMq z&%b_R)CO?M>r*G7W)l>A+XXPkzE)?wIhpvD_u3|~>=H+j#xH4!bb!+UZ)$5+LGIre z-d#Dc;!5q@7cIB)fcep{x2_rdfqa8-e2_!xCh;ATEG z<%eitEH&KqlexJRb)Fuf@~J|sX-c>f!5Z%yMyI4Jsr}&x(DzQZ&xl~?4nM7O4kV>e zW@JoHS1ZoHLUKJs;*ndQ0BYuxQZ2KfZ|1yV3OC`x(4%)rvvF;$zFw~=AecjFn+C=S z%RluEWGxP>-yK{zKO>@(u9=sqo1YV2PdCoet@249scD|w2Rxpq|4a!e|A6mLM!P{m zXGvxK2pywxp62ooHOFpERG>)~LNSd*)+0I*=MCJIK*2tFrV{&7@HOgan2n@bIuSQt zWpgi3escri^Pzhj*Dl_cjT)@mom+wn^$qZ&(`*8ID^4+E$a-eOkUAE@A*nrFoCiRj zW@t~608~HX8sn=q?TPtTy3czeLDbhN|9m37W&Gr>T8(BFT6hg1uA_Pw?U*D^l+tXv zX_AAYv&5-}8@g^a>QB$7P?T!qtHCOdi_;-7jN=%SU3j@Di7`hfyTOf}e;vEffA|he zK{VnL+YmoEhFXHc8FQIw*Yx&Xr+|gaR~k+!N)8((NF~6@6XNOcb&F|GdUMX4{X~;C z{?=l0IUj6@{$!JJGcHi`1#d?XMx6E39}29KI38=na!G51kB*2PUk*+aVgeCev2choaNT>a=2K7(CNk^LHz^3uY|pO`2&lF@jSB5)iR@rU3!^z$D8}NtvrVsMWWvG#)RjMB?xOdK$ws`8Tt-KAfV~6Dx7l9_ zqtMuEG-ha>j0;0I?GR~_YD zcBikQg+q-8tAOtPKRNoAT{}Nb#-Ktgrm42E=xIV1nhvaJ=1|qMSp6-<4B%pI<}qU~ zdP~5lyjoABA*@oYb9sybUZ)e`Z`-4PWXX37m>Y3SP6VqR(H{B+I5J_5b7E{6`{F10 zFXp)4un`4zb*=LK=@vCN=@$m{UG3PrHloJVf7f2?gNx`?f4OGGp*W7M0kWO-?2V(9&{O5xK2# z2;F2jJUFlM&vZwtWCAZxw`Y^jbZw!}@1oU_87;MM>%s2O5v^N^kQ`t|A53!s z^PTy-?#yR;gmqt+Q{BOQ^mFZH6osp*iOjJ-iFb8O#ILIhD|w2^zNHU-W$>Ji*Rl6g z50m*uB)46{e3rcjLtg1owiZo8&(1%3OBZqdU7iQhh{N>!T)SI!zK1;K+AgF?lTKaI zB6?k)4dtyW(kSje#Co&O8RjIn1bpYD%q1!u1qHg5rhYgiR#EOgDHSTUoS4(37D%veCVJ=TeKwb?rUY^%#4rMbI4SdTdIa>gK8$b?17yh_gD$W0a{dX$GO9K zVmMaj5S+xu;B_|o1a3YC_axDY9-J69- zR)85*zV_V6ou1je#QJPB3Yp&MO>DeI7NT|lDpUM&uc)*t8#O%y_A+^Mmwk0w^<5tp zRAC}6pcskjPW7i<8Wp`PVI@wXk!#kXHUU0e4qfIpJB`gGX8e+wDa>Z8Z>ZzWke=t< zUsMV9kf5b74z!HZm6T^qoh2hf z>gq11lm(6?BhDlhXDO(MF{Gc2Y%JW|Pq2ELkLFhhSQ5~kZbf7b2iEY#w-QA3t{P}b zb8Ff;YWjbCdbe21z z2@r-27%@N zGyU>bm1+918W4pi)xH+OoEIK~W+aOb|3<)TaIjjsPoJU*C&EeASLUm7%jspJ>M-vI zTP*{M8R84cW^CYZw?}moHZys8NBQlMB6WEJuE&VAlwRM{_6ockB8ASU%)H~f4d!~{ zT7Oa6+TG{unfWx1d<6d*yWsT+y$7ofIZ{>j%;+w9K{WL1qv&r zwtvkCs;>~I*X3}5TjPGffiS9)&$u_<-#eow+u-|tJ9e`*e`>nUxL$FdEt1g;#hT=x z)-y=p4hO96-f{3(;{N~yne?R+Qk!h;<8pjT&q4NyVgezuaePNXSHvCv`XxNo>5Y*C zT^$Yn>FkgbR%8a<$IX;{Ufk z%dQlkQn!qF<#GPIz@tu?dokcBry2bmC0C&NrevUVX-HAv8a```$Y>V=#Pa@7GFO=j zE(OR;=U-K_^r^AhF65V|<;@J3fMd-js{As_&6rufZ$m9cec3UC2kMZ%&Y5X2 zmQY6aLW1!qto${$-zmh$o!HcI{VK@TUrP}uoM|DGV6nAbeWWUwcYcY9Tj z6Kq|Om#}jM6ngj)m!#a6_X9?xkZ24$-r38U%2{K%#&bPY1^F^2C}-H`>4-E+BjGtv zgN-8Fs3)K*+Hr#P<~Hj5Ma^n_gkTPkNDYMZgL#+)P$eu;bQBdWa3}D_gZQ4$dQ~)^upj zt)!i*kbmlc+5>dk(QKW46{~vIrt2Rs>eyn%r8MnAbU_6s9p@&FF~&@b4r~wdzH?1) z%1&8OeENT~Q>xVB-%p4AcU1#*$-|uaK~bpOiw(e4rs0?8WeSsQO{&7dBlM0}P#8Ti zaNrp&(@!-hoJk_+`rFNa6ogip7j9kcTXJdjGg3r;jVHW)Pp=)wU{UDAjiGTUkdk0Y z753su*g6uFAZKk)?bIS~ON!XCvq=idX5?EETgoinV01}OCvwl{Qla|A3kz6{D8(r~ zOOM3UP>g@}7<+3Ict7zmdxkq2jfojd*GAbw0fynEk7Wmb8`RNQL=TxMC1>Z9C@Y%n z+atn925&KyX21WL!IN6KEmwS0lE42Y#XYeewV@>BhO%pZwcd%*YUBU>^H1P^2Lh#p z@CFFtDQV()@?fpJoXS#Cw>dL+vZQesifOmDFLu(SD5Xe`xSed1B=89)Lab9srL=Y8 zf?=2j_&`%h_%L6Ty=|mRFtl}n)dK$5sk4Fv4-Z*H!kHv_Xacfm zo5Pb^{yif$N8PUkhh$vc#X@W}XWNjR57FltqJ43|F?X|K=@96XMNc?HT^^owJAbdL+ z8I`$=PMsosndn7D=$reZJdZXl=#osZf)b4^qAnA{O_eP&_a6=KsjrDK~*!%(sZ5^;0@|J zFy+U%HxAxxR!@OSb7KamCU!2X3uGn=vham;0zerF4vM>EQkDp$eoX4y6@eB+z=8%7 zizbVzOJR2@d6R8izE}s}VjL_H^MAz*U=n0EPEFk;G`MscO$FdryURkY$6Cp&Zw$gK zOT^q%>bIaE(i^~!r6*jwn0yxBJ4RyYd&ZHgkTlx?sEQr-M5a$F`Ps0?p}-|tv^*={ zs2?H^UgqI+0YP(gIj+lI3Zro_nL7!Mklt&W55H#EbQ>a+DwdGyuB`6r_mXNWPfJ(Sq|}`TfZY9-FhUVB zZ0#Nn00f*@Q?)m2vQcLnLRhRuj^x-quN0Oz-K1*3A=AgwsoYCXh@4?;4L;sZp}THa z-y3CmsMk0IZ2}fIzhn7t-iGWemw#ixtVH_rlV+WLXB1F{U>6&XxY#E#4>oF581nBT zC%H&g#w&`Vh95xKf*QPO(28TU;C?jryx^qvbjy2Jymjd_lt4o)?GV8Q130rdojbry zF6Dcx*_v?HPiCHS5U55*vh80o8W4+9UFX#X zpka?$q%{E-F&1N12#~U7>AY}QIcP+O86$!DV<4z5GM~H48dX^rX(se>H6roKKw_+- z#^=95u;arLtex5SixsYWs0cJUD-7xS8VOPRYVh^ zGy4w!j`#wRe~M}S4cB7JtHLGx+hk!JPI(5r8GfDs%sk!=7 zedOulXl_6lm~0BWUoxP!{bE1a2V!3@{%ci1Z-Aqx0tJ-iy&p%^fdY25GUi{$wVxdu zcnZ;Z_{%0|=9rt2h3oBf7Hmn`2n?*f+49a}7tpo8NC(Ihi~Lg_cxnf8`VWC-^gnB( zi!E(SxU<$uwd_3ZCbeP`tI2ciCV-C*S=+=5_V|Fi9w2Bs_g50x;YZpaMC^o>XE#N6 zFnz*3gEGLKW$bGZwc}}Q4`@1Z5|th))l&c5Ud*kF!z>t#F$-Ks<<%#YX~+Q0LF)#U ziijvt|2!vptR^^!yAq`v0fQV)Ze;&zH!)X&7$7ttZ;;&xAHovwB-RBPL!qP&x%HOp zuF-E;nLsXB3h{ijePcTR2RMMw`cyF0h09JnW2LMnEI9_@KiY4F0H00Bgf7E1AvY1K~AQ|HfyCMO2F^S0uUi6^e;95!L9y7 z;47!Z173GdwLW@wa`Qj&cSC1B1dpUPwEaq4cr{UJ^YRHOU< zABFB1_h-ObteY4_-PQiOa@xn6jKREms54*PB==uy{mC{Qgfkl^A_kddhfo}s<;TQq zwk;7?1cCXr7RsGixXuqm=1-=b+W4Q+U2xo#^#++l%Kao`t&UaEFa#}&4P~U#y>Y`D zbd7hmX`N&4T`m8I4Gq@-S~wvRtXFu52fz`@kZ6H|n}AeqHNn~jq<_IUuwZ1(&Ba@| z>nEA>Q%Ap6CG}#y4~x5klBq1s-BOM=`u%!)^1KPBjcze@BTL_Q$1P_4;oDX*xA@B} z>4rSoMr#4~j2H=-G}ku))>u0QdXyZOt#?V*7QO3bUz3-Q7qPJEvGG_p90XLP-C=~m z&Y&~lMS>0(R-X=nCGkOQj;WW$eqwBQSO#Ga1;Pu}??afq31D`%U!jL32PkQ9zPh(o z;NLw48pU5s>|5AT=*{zbs4_HFODGn=O}DysM;_hw8%XFHOv;7OnOID!iveX}{N%B8%FnFKX+u$HtFR-L5`>jNq?;N)T;kx z4nuZ@e4$`)@j-s3K7JlO@=TO{zVdc8@K@`Pbixs6P4aUwMJi6AU%`2)wQd&A=5#BQ zr)^=97xcyR%7J2>;W}iyq{Cf;nj_lEra# zIEQJi>M*m(LcPzn+m6y1U8)nFX;lIobPWF*6=$EW`A zF{65CMwMne2xAEqr-@ku*ChjmL`9dSqUXV^7~b(x$I6OSC@ixrfu6@&8H&^|!!aMUS3DO^+FQppiSM&Kc(2J`r*aF#``R0}w0y4|(YH z9?e;&_?Qro9}7H>M>x-N=a9?uNmJ%?7Vj`Re{Xo-`8RvM3m{`?z}g|Rc2Pvc&62f4`s4I^6JOQ(=t zlcIN%^i1(jgIZPaHHfDa^w8RaP;9{F7cI{e1!cA=2E#U&&XAN!i#YxYE&AUa*iV#k z%5m(B(>kWenW+DxH=(=dM@R0)dsX0fc{yIwD3y5Hvk&t0~k?7!lW@z!lN{FLdbd(|W|5JOi~=k4xTO+StYScpBCWosMSt z*>CUnd6C!6a=dAg%_vMen;^n*)kIkF#`mas;&siwiu9S>A?wb{!wHz`|Hq_sgc+Ur zLx=nkBl1505}&b_!7~r*>Ux{rIz1{^Y8LB_MJBYJ5rlEih=;l%XQ**L_K%11DpvNf z>%!j@a+D5q`F4dQZy$;Q0u2ZI&ggOJQXQ^=T}y-b4Y@s>mUh}(A2%K=Xu6%Ginnfi z)#}O-v3B<)9Prdv+`dcGsteM?-ZuH<`mlcY;1=AE6z=n zn<@MFj(%!(glsIZDoqfX&*)|sM3g-(Y!eUXI@X?gmKtct7Ods*>EsRTdyn8my{$0_ zI~KPkwR+_Wb???Px`0oL6yyM*i_-Tv^LgeM%qgedE1twRPa{1d@7o5a0L;7D><;s5R?eDuP}GwcOx6Bgkt{V`KGA407F- z$$#HDlYgUrH8Izxwdt?N>Ax@=d~8y}6zn2r(iq|Jgj=wAdM%X=Lsh@cJf%gn-moSK z(l=}#ZsBzFNGRKO?mEXA_k3Two;2k%;c8A_RD{R?nG>5pG!C#|;s$~zqyd*ExD_@` zEW3qOk{xc@5mbKyyV6WR*ZbXgh7oP=1S+jQ#)GBIIdt|31xpf8QG)9vwPm(kR<2Ln1m_xYwG=Za zx-3sVybuF;YjR}ID0AG3H}L4Z4UWG({>?JiwtKV3-W=!#Zz6u^#CerlB&;Peyn13x z@#f&GH;jqdy%xN5s1?S|MS&!&JrBM~HK5(wg4$>wi?lh1wpA7$u9Sj~2Ced5#5skY zVlPa|1lH5#HobPf$mFnRKSrH<2^UFDkaf!Wz{5{!QJ1s|O~}3!FoCx+kBL&7T*x~g zt(5hjHF?+hOiFBMRQB36&VY%?Mf?tFC*1$^4bnfr!97iT-D@tlRj6d-)huWd+oaOM zqHNLjD()7^*DjDz0U)DGgm~1cbX(le|NQw388(F#4!E4dsH@C%1QJQ51&_8x7WQyq z_24hPTBUWHWebo!=?Pxc3nCm~gTnG{eRE3HZ6?SFOG(>myC*pa6l=hY2>Kn5(fH^} z^w}dVGZlpg5pkHWlsO-v?z6fL05`L-boMc5hTf6t+_(SstdP zJ-fgc>O}T|jGwv(twgtiMakyhvePGcHImB)=?i+l@=3%Mnh<}ERsnaZI3$2#cXsuZ zsnF>*g=+orhLA;uhCFfO(u%+%n@|vRM19dmx)=ObitIR=KgFGrvc{u!I^g-7L#-P+ zf@6bvFvvfSW|n82@P3Eh92IbAMdy(H9YLDpg45KoxwV>;X%jJGj1twK5F zEPd1aC+PA8E5P;F9z~k%aNkRm(^V7Ayubs8 zyWpzyPrHJ0$RB6|+Y&j9^urZuG%KM4svj^$nA1o8$ByDiuU@-OxtvQghe6{rF)M7| zX=xtg|2P8MCFnO7U3sxEJ(TJ;`D$p@ z7*P=e-COaXh6JZz00KIDSW9rI!@&Ok{^ae`<%JQoE<}g0Lgzn4e)V@RdlPD2r17Xn^V$e6rD$U=$c}H0f6%P$i9~Y{{S?`(_u`NE16^S}Djyy-egQobc2pX| zz8#ZK1Ah;)+In>v%y2WnuFJ62)R=e&aHVcLV%_C&7URxL+wV)5JYaJV;^=BM)63e) z))xWl!s?R2%9ln-uk~-^_5#!_6e0#U`~?C^$S}YrQR^n`xIu2y+JkcF818C9pLEH z{y#DZA}K#rqbnQ!&4`sc-pwCJs7zK_i`nk7#mWVlVJIb0PZF7B_H%*1rv8}d+D=Hn z6UftM7#I`8;7SrP`1+PSiwMoA-MciA;0n21A`ulqLEteoo|%P2dwCJKSfLG}q&b7yos+G= z@~?nZ9`-e%HKK6j9mDRSV@(rlgRaZV`JW{qd9pBA8)zgbC3VdSIEEb0f1^3vwS>(S z6NQ#l(d^&(NQmHJ8+wn4Igm}aYw~AdhWb_k0n+_GNcE9B0Yvf|Sq3yGg+`6)`Ml+f zT`U1ggKM)?HX7ksHV2|q6V1xYzQj7@G?(ETFWC&XF<9)DE!NDkvzm|-X^Cl`>+H>( z>Nl_!%(j`1?L=J$wj^w;6q5A?pia5-atyM$g=Ah>*-dVK9sWASD<^HcdeL&No%eNy zm-7LG>poXW2TELsU|-16B;XPCQVts>daSvU?hA4H$6%5EF-}NE6fCl1tu_GxW75EG1 zE`K)j840`|N-mQ6?xZ`E@S8f3K1h$n#%NqsNUCxeM;W7`7064Bq zcI3E7;&{9X0;3(ifPfOm)I{|E!IE6CXSqPEJw_6EOudgm`v0=m+3VV;h(qewlz~hV zStRbi9~~svPj0%hE52I zoZ^fOzaZ|ZYUGjIpeAMMb|E>weDG65^?80yEet=9^KA2)jTHbHmFEIuuL8n2m5y0?t_I@9~ny@EIWQt5L3CMRfHZ1hA^ZLqYrtxE_g=wtwv zKKJrvFjh&wgYJb;n?p>TNsZNX=qdNz0iy(}6GsCB5pNcwdY*cN+XZR@B6fzm^;Gz- zx|tb;xf#op3YnUbAgz5Q3)r3k)X*YWw2%5J-cVv`qr~v%W2cgN#|Ry7L-_>>w(C4j zuq~qdtEj5zrbMh;qbYfL9Ei?gbnIAocS4w zGElr@LujQ-Q%2aD2%P}}9(QahtO#QqvD%fVY zBmC?5vPKG>jO{?V0f;wTo-`EMfuT?R1)%PvMU~tcjFURZ!kUX1ho^g7O|W#>1YuRFuCo+zRz&8)*!lz~VIN=X z5rSn;e?!@7kK=gXi)KlQWRy!w**M?knt?m_JMbyiU15o%|Mb;zaA;ZfC{~qoEp;SCQU zp}=ONpMT?H=Sw281Zen7XB-@8I}jl^(6wRa za^%ZS&6c^?U44aVX7p=FQlTh>!4s_jbXqe&a`D}3&x$!ndZ}zTWses@498kA=xh~G zQ^C!BN)3VG527`s3p#FvNPvT4;q=fFwDT7?#*v0GU2`o;`()Ds2$ij1rAMYn`y%W% zG3ouN0f~krVp2cc43Yy;%BZiknp?Lt4L!7#1WvV2TFT#t7q`lx%~wq|6Y2m&HKk#h z{)xqAu*x)K2201{m3Ie9UjiZ`A2T2cJ@jSCB;@?c4N4sb+_ARg%zQPHvYcMphhTPx zM;YM&=O8L%h*Gfg(_<%=WeN_XgjxMU*?kD1_hv3KRp||W=bIknMO~dxx_~u@P#n=J zDul+YJh8DYHSYLH`q<--+lexL9lNxaIn{pXbu6G@QA}_ko5OdQjQ=!V`6K1x6iIW0 zhkENUiD~G^n9tlOzi7Hd$?v&fPDp2Ke0(kFyRdircsoYTQn@`WIXd` zWb)vO-B>dGXhJnO?!X%g`d$qYqGh8{Z9aX_5}<*aygbv}P~Ri=mBz44<|1H3e)CWS z5D!qJLXhRNGPO+J!_h=c9J)Mk+>?MplfO?XpQU&m>*iOLWh;Bg$byv;F;S{;n3xLH zk?yMHb*29v*Nh5mQc92y_?u#lLg#q{a$E&d`~fg{jffa}+oqKKhN#-1 z)eh?fy&wQGWf~dBe*gbd4g3#{8^+9L^i{H*vJbZrj}H@*ING3#)dLSW~6e}y)XBicabPRn@G z00xW!9yaA#o@d2IDGF6w(XkYz>)Zl)W-qGivXKNc|!v1b#Q9KLw1VKx<29?>aVp2;y zK-MAnlogW2lenwH#Si(oPX~L3PR;A$aOa!TjXD--XV@Z;KoxJWI~q}|K}Bh|UnvcC zsVPZsw%Odk;<`(k@>XwwOT`prx|}ebftpqVGKm9T1|)Nx>-O!Np+KzXC^7W;QC{9{k<^%( z6b@!q5M-{Z<{KM_T!<`l<6lQnC^KqVr5b;rZF$|%;h=9*1_ee(&WknD14i8>x0eO! z@V#a3Xs7c4fVRWvk3W$vm?15fmQw{{5x4#7F`?GE3pf3a0L&vLEFriMPm&Bx6OBSL z4B&HI5j|QYj`o}m6Z%2S)}k!kX<}o7Tk=f@rr2G$!%OtU$!0{LJ1JG~1?g%2JG5QX zSZl0~^|UUHWXk(3J9drG?8n|rB{PNVlK8YELOSHBU@E-w;>q)n7=sCuTI{a!f6GjjRM1#QI39OOgk*t2H-2s^p!i)NjGioFKBB)V(f zP(`RzM@TsPmVmU0RzP4RrWWy)t^!0^7fLvwB6kE4z(GZuZCEe`0atOUNL0d0;Y5boXShDjFv|-qHHI z(1--(>5XFPZvSR&hg9E5psL3M@D>SGR{NJMXctfvj2A~(W2f`WGhkiPG8J{3Nn-2*D>g`4?c%ovDrnXb_1A^Q_S`Xu0J1~2pj(x8`dE_^ zrvn(g23pB4CYYvVDEwK>r4%6YZyh7R&DEo9_m%=@j5&zmiQeO8(2qY0C=Yz2xQ(dl zQmY{5T;xL`t6O0M*ey#i^b1=dpMW-p`LJt(pNLll$Y(<=7izLjTP1~QojQy)jAu58 zr9$mv9^8K$%6lAh!1i8Qumg2jINRuqUK9XEZism)UJkS=G>M0#>pHi}qP2N>U?ejn z^UA$(?64bG+?w60mzW7TK}LuIJj*X;twR-`9$_q&3n48#Jfv5A?#Y2*F>R~3`qrCjshv+D=Bpd4WkwYnMXc-h z|FA%_m7w6o><_11r2=F=0&A*aOGB!6DBaI`{ALf+K*11}WE1;30D%&bUX*}F(2*XX zKwnyJXYRqQ*f3G!=V!(NQ-+6|p@>OvaSXxPQiX!hKsAcyZS!-4BHWGxQ=oBri?8LN z+-v9ki7{ytn1D2+6AE`zY^QF#z-%=Tk4%5_z<^z$&rmsu-18Yg8jKYv^koC` z+dX*ZaovehiKM3pcPA`mulBpI;8l~0al0IMTs^jhfn2(4+TNN`nB4j};{mIDfZr{W zKs=4DtnOwNG1_UE=AY&OqvV5KiDw4Xz_1YD+ z6q1f%hZRvX?Hu*-E-$qeH}@U3PV>-I8~$Pwq?eGp%@4~ZjxwROjbwyOHkWnEMxDm1p81Q^R=r^NeTm`l8Q>OE2A7)cAI!*NuTt zd{dG6(mFT(6df^N(90I})WXvQk|rPj=Q5Y>T{XM7%ELL3f>}BKNR3cfw0xC|5|>V# zX{99z4cg}&JDlOFTf!;do}Z9mwFt_R9}Nz%@$WRvosrmFvZXDvRgmZdHYCIxHmzRC zs6QVH#PQkSX9j$?F)Sn;i^!w$sVN{hTfsLbr_YW5Uhp0#mqeec;h$t1N9CpTHW2WG z1(X#!e>rdaTY zIujWc&b*TTC*p+N!z8}x@Mz4#%bRsVt$L(!q0L~$@?;z@caJ|FSrld$Qz)8PKkJ*) zX&thJrLRWm4mBlTVa!^Wpn=lgP)v$U*vxCX$|0}&S2%vlAGPI5`rYQH@GTVB#(G>LEpwqx31K-k{9x=+WYr#vkNV(*d)2V<;_J; ztOa33i|WAT%&v4v=_F9k^z2QbyYvn8R$+);|hj!_^i?wTbb zx&|=JjCBJ7PzS6A5n_FFJpy6pH>es+{`j(B(ss;cRIeEI zFa(et8TZScbs5Ro{PNRk05$!B!djW)hH(ND2pU<|V-0sexG!|ZibRM}gF%$p{_?%Y zV(A(g0oajsTR`;&3yc~`Dv@j9%$MP~E0rnvt+u#j@658?|ZWh?q78rn)_N=@3f$pwojDjUL?CQneGgM@8OSS}p=e11OUIG_w79>s$Q52J&OOCkg*O2{iuU zdSbK7PNpA}-W5mgY{Xu?>sP#T`x{X66;R^OHfWr?gX#!wh(I6kNZ(s<=h<_lJz zE>yKql2A53TK0;H69v+EdTy?hdi);3{G<^C^oVW9T&v#g6p9COij<&Utm^?)IpHL( zw-$n#Sj5UK0;7Hkk>>64cNw>Qis}~LK)q+OJdQhyji}O+OufP%Sn1m2Ld1(S7zDT= zDuh!ar$<-n%^lyc1K&;c%aO|PSIlFdPyE-o2!u8_KGD5eK+Z_0k73Aqw-yL&vhA(E z)s?aJmKul$BXk8Q+Om~2$s0Dj)k z#;~c?<%l)=rc6vA9`EQbg<}W{GK#Xr72(1lBOJ!Z*e7J|e0*CKmq% zqFvGDp8GLWVIVtb>QtF{WL`6va637{mEQ7_0lDT0Gm%pAW(T(gd094G6SCbW_|hHN zu%c$fcj#z_QjyUc#022zXmMLkdC-?!4;pTP0;%&Sgelk<%aP65Uz_<+AmyrkuTzzj zvI-z1GVh~Wc?H1jjB@N29Ehd~tuEXX`Wm3vZHgBRh##g51)gNsfc=X7%++HBfL@FB!duoYZRSV|zEw z2Z!u>2$jf;$EYc+K;RMVHfIEP)}*b1TVSFqu?L)W5p;^6kD2W;mPKlmqhV&b4x=qd zN)OB{GL6p=myGrL+Y2SN&$NUm-?Okz+XRwE&dkw;4*21@nO1j&M*mT~I?e^khi9sX zn};x#jK2bHFm0gi-V=S+v3sP@CWqJil@~k&|CK~$`J2Uiy-b*;WAVD9@r!v2?n)&L zQY%YnLsbPEReey1Ryvr&>cm+j*@wBcYOBMG@9J_Re&qqy zg?~B)8HRWfdc;GQD9-P3QejS&_i|vJT=Nikr@;VtVkFV{p4m5^!^XM6zFE!4;vT6$ z(yYYUs)e;>>34l;Y>fx&GiqBGz6#$Brw*wp;ouM8DVfE|6XR*`7Y>+^MU3D|wE;i? z?X9yi=w_(bIfa?UmBo!%jpi>!q&{|-NP4ek-r1}=o{IS?|IYX#pi1n>p0CLV#qw}9 znT0|r+8TRWe_KM=I~b2qv9@m2J8Od@c>?%PsZ<-aRO^FI|9jSE1Q4+e44(;r882>b z5U%Y5naSi+!gI{6*?xjf_fyq#U~=f^YD5k{n@#$BGhIH)pao%s+4P2WNhrlp9Ap<6 z$t7V_gI!H7XY=is4p0gYUwROb4}4>3lG5rr1zxvn)-lbf>+ed=$*i# zYQ5hQiKhxsw8OwRK)KwACN=@E8Ho)(D%W=b{BF8=ghMWDnfEXOCnW$N`rcaUVJX=z z>5+)1$Y`!+@?jkVSe^;9VkDQS^+t{pR!Uj|#kb&CaJU+*#YCM&`q2iO)bOR@uX|C; z0YRw?aq4ln0>06L{ravSB^~_)+Y|;JClEt+Xc8^rdN`)dduS2}B^@pwH6nVnGiC3> z{A)ioYL~KF&l6*(T3VBJ=ad>oxrWj_#!#K73H**xhid8xW z5Sxotv>%o1CJ;T`O+-WvEL|~aC!8j(Fkaci!GD*JVdMPg<~ImvRNOz_vtlB=HZ+^a zc!+C<^Lg^~Yej}s-H>l%<7%wf=iHYOE!8^s;RliBBrmvE^P@zFj?UyWJ#(a|7ThsP zPVA~m&rxBwE^(b%E(!!%L%7IlWRWHGYFbndzU)xPn9>o=C}c_`fWI1A`P|!?vEG0L z?2A4g0Lf-ef2L?+vuR4uxR^wDSV|3{qa^m$Y@NldYX>T4eYhetMKnjNo$s?Q<}qaZ z9Tr)!Y;KXl!aD?5r%{|Z?0vn8;K9f`15%7ke@XE093KkHoT$NN0eObJtW^(l8JHyF zsmA1o&xbe}3v2jBb7=(-Qa7ae*8chGipkE1@qNpF!6DjN4xM&zWmr7bkmEkT7DWL> zau3O^Y83{VgiNQB*r!7Tgoonu-*zBwfWuy!V%@L=l6h@@p}lz#|87B$4wm8oiTN(~ zU7`?eiBKBDUf5+Nl$dJ9yoZ~m*J#;L8GjKS#Z~$AA))jws4qpb=iO4SbVxpU-+w5l zHxyz1TA)I6{5LwTW%p9mcZ8yu=F)5NzJacU9|RVkBM>R2hqRVJ1_A(Y3H=%0cTsR8 zIEJ1rZ$hYkRW;&CK%sth@tQFhj*$n0Fd2NTM^A;7_>dVqm42G0>2A4l-CXA3dz{6l zTH*XEn$|F8)w-)4|Ann|)lf=N2xR?i*6w*1tv#e(qXo--9|tTfqIxxI0a0F)Dk@=v zU=vT&?cQzteIKT{L4@wl)jcB)ROc+UCI8ZVEl%Ca=x)?sw9j89awW|fhv>xZB{|(^ z&`|c1I2N-5Ou`?>+`eFG5SB)JgWbN#n_co#UkgK@wat&Kq0mC}bPmp4oMoa=5KyNt z`ERZ>ZInq#dOX*!5gCcD00t#BE#NVBln7#}yAU$NRRX;VA+_u6p)yW6Ar|SCo#T&% zU$X2rV4)Di7r0EmX0dUJ^+-Wr&CQRKxW==-oL2Nb)6@t9&%Me57iS$+rcK@*0F)QD z5lz4}%rXwBsF|8bpYz!-zjB>nk{3G=u}lfVW5phPv-$I7p9M0uA5Mpw=R>SAE?g_ow>ch4wPS)N8Cp4cWyZ(yRG8I`3 ziTWnC_)p_aLbJ~Bj50Jq?NOpcGoKiGtq>>t^^;G$&C`<`6!u?jGg%U{)3{co>j5zf6e+(Jr1ZlYxQ60ptL_zH>=h%~uVX`Lu3QM5Q z0I3_L&{J0hqBiPQ*hZ*4?SIZDve=vKF)BQIkCXa$2jDxV*ztDH%}j(qg;3o52=P%P zeEs{%0|`eSRpmmZ@7l*|;F1#fo~I3{bst6T50l9FZ4hu6yXl}$oH*CdW`TI9zgD6| z5YkdS=Mum6>%$v&@SmMnhm;C)#&8IfQxlQgQ$LLpLOdzARsY+aLaBQxz0~G4t3{LH z;W|OKJlA)r6RbH5h2R15s(d?d@vdmi?0ZNinRayLr~0T+MT&sF0~3w&knJPvd>z{v z(Rt{!PQtJfttqigcj6EJ6Inx~?y(`@27R=vc${_w=oe#jtz9PNz6ps=fM6Ba;hA8LS-%`!Bkll6rTJ~ABT7H`_pGEcyCndM>r#N5+^W<%zH z3$j>-V^In#sb>Mk=W~O8^lu120cDKfkGHl_hcawcWbY#CpXw2TXir4>y?U{eK=!0c z%$WNZS=e|lH@<2U`(C0XhIH?%a(;3b@VJR0czf*Z8#wx-T;pATChQ1vE=jcZBykJbD89_ zB$}Gnr1?5roiv@Z#gL0hV|mo5FBr|@VCJ4CJ+^zq)}pd7Z=_PsG$VkB;Gi-M!e#dY zPg|~M=MPb>t3KN}$m$P(KM#)o5%6q#J7I`IRuhQp)WQ1BuK}`Pk&naY$mPJ>IWS?& z-T)Rx`i#j#<=QD;K;^W082G+|ebZ@^G?i7XcB>7Kjoneo9H}F4$3jw4UWicvvV{#u+&u73tJ|$C$Vx$^vz)N+3Z)jiu0D=xI z&4NU{ky-XaFVSoxV zjyxJZhtQYHN0fJWc!Hmm~p>ANB@GVd|Yr`zE^applYte zh$eo_waF^9t&NdP)(%mk1FH1n)78{RNyy+D+M6|e{eY4X>&mh{$YwLRDZd>&e0|&iRlaLC2xRms8zu%we#cCluH2YtS`;c zYf&S8``#CUmMu$~vy?njqd9*qCh`g3A9a_`8P(D zwi5;l6l6>nbRQyxL;S`@T6j<9@dw=t+s}()+!&NHFVJqlilF0Ny8*IOa7p6hbda0g zNM#*+5`nkRu0l0x^-~19v@WPxcp7iJ0<6vhky^G6N+ugn;BCN0Dy|1U&5%3O@Ua#B zYb^PRD}D>}E(GpoR?1GtIw|+4VFd@y4+g^})_b61j5q#vqQu`Ml(lY#xk!)y|BQg& z#wlyvf6lCn1`_-`m&IFs;X%h}dVPIbGRYkx03qEd07l;9#9zh#w z;Jcd@10?|wE5mw`R;<_Aj?7=hQ2C-<__RQI&8(VJeX&m7^5O4)J#)p`I?_r^SqS__ z01&UrAHM>y^AWb!1$abxR6PZVYaOUgDW3?+>RBRM%Yd5y`vs&81$v*NKnv--vo~54 z6yiu_1Oplf*aDP0^43_KJ!hy+L#J-BK1Y#z7Lm?Vp;*uH<^i!cf9tHH!BWvdYYJX8 z|0BHp>dLG?P}M~j{A-$I>a+$mEH?M}Ud@&Q7Q~LEEfnfdH%xJ5%Jr^80$qnu0!-U? zw0pu+Ryl@T(lR{!{|)PSO;jZgJi`nQe$7~;i$2Dfnv=&3{X2nL&rWmuP+sWt{^+?M z?P*klLFVa;C6csz#S%eVGUSv-!Zm7Q1VV2Rd(?tI$4rI@R_FBJzsk5Dc_^Yoz&S@J zz+$C?w^Y!(hS9PzKFRZlCyNjyt8ymft=KPcY(~hChRiJ3|78&6pH-W?%gxNLFsU~i zhGt~HLo9}2W2>docO8|}b6*4Q*F{Y2_j6}5bv~@V@4`DdP~bOKnc6)r;CuMBA7eln zl#v5D8Nk$t@0F_eAfGb2A1Us8UOdFe6ra5R!SVFAB3#UCqJa7|iR(1pnoVIb9W+NU zx~|sT?k<^Br<(di@XmmJ&jQZ~R_u#lpnx^>%F{&-zzuAhcG-oa-(+xG*Vg~3n4)}A zQ%&tSradpv}$sH7ml5a7pcP&PVqzJ+;7(N;MbaH zMwn6>YOKR8Fcd;rYzEt}13hJ$fUcsiRct`0Sx-Q=(bH8JHEA%8lWb^aireWqfv;YA z_L`I#1}eQO;y%K(qB!d%W=ROfm(_5ZsyO1& z0>q=S9$ULQjmoDE+^^)vddnuc$a40Ev;K2Y7T=HWgnk9dYmtHG0ic>(cfj{N>jzZb z?1k7ly;vPxB8k6CkY>hxrKFAubHjj%T9XC7Yg0BOe3++?TKq*l_NuKwPrmvw|NUzG zT2!E^g8V2>zOYT3aM^R8r+{X~9T&I5Fl~oA=&>lOIR^=ZeZ%5-cG4RL0VEMDj1{yL z(w~_lj){STn$u55L|)3@+#PK?fhycs?+5s=%J9h=`N>8s^{WUs+*4(j2EMr%1jaHQ zGF|XB(F`|nu0@das9=k3&2ik)lew^z%w=; zJP7c-Q8KuxTkH)`e3s;~)>u1C41&c6r~i5nG(BGNeu^Ov5on!n7vgJze=W~wQb(Gv z9E0^48WBNLnA6O{D-e58&QYp9QJB{pD}iTg)ZhTK7g6 zf$z!R7^s5#DOPeIP+6!R)umqGZ)G;Mpm*J#id2&EE@A>7+|Q`_EG|yV3i`D>#mJX>D@v{;nuP>BG_B8X;pq^_8DHtpGCiCZ*9v#>^H&YR0{b-52vf z$4>)KD6v43JD}kqu6oq(^+4eoN4a$txm2rm9HyO_)GZ|)lu$*(&bLXcB}?hHc!AlP zJg?#-p^%?WszYb%@5%8Y<=bKafU51^7e9n>KNVe+6tjWJPrMU)C^pO|IN+u+?_ox( zE4M$k#W5%9Xfxm9bO?@n*de(q;1`e?EU-VW{J%B=>}gW2#v$0uZQIh1X1$iaDrPtF zj@5_s(`2hYei9#1-OOML@Px&tCT;c^18KF#GzUH#kvP+!o zNx*x5)LxbyhyR!p-F^7%S{nG1btvuj=fmPqpdxtj!?J|#w~`YnI5x?xIO|DwtY4bY z9e$>W0ho^%UL>M+=9?UAHe!0STW$lEM^O*#}l9CTpiA4ht zY6vWC`xJNX(7EKwE*weCm=_#RD8bi5SbZiVd#!jjWMTl&7AU5AL*M){S-Re+Y|tGv zlD9o)bjlXFu%K8|yyh|grwoCdWCQ#jTf19y{D7&zMDbVp!s=9lLvQ?^Stm_9%9)YnZkyHs=bamDEKY&V%hQQdI*b zdrO7ZgIq_(&6~}|UT)UaxA2?OtXLAj1YvL&BYIo{LvN~rAyU1m zYUdWnKM#<&yMtaWlF4+$+r$~d!QCR{lt_Akz3Pc5b>zum4w-ILe?+_l-=_2lfKv$f z7(1u!3@NqP3>8mLHr8Sk|* zjP=SV6%mg!%z5uCin3>Xc`d*`PR_OBUhE$+6oUZ!#*3h3U2a`EFZC=nN|`pWyNUQf&1YF@*p*nQ|K`jyF$soBYl6y1aENp(wKSK{TK z5+5FfS2)TzmpD?nqFU!6KTKdY9E9oca0I+gW5l>V{bd4ee6J2cKrx+pfKYe-4&u7y zdEqkv9>eVhhuzgOt3eo6Z}({D?F)W~8e{ojc2S3%WHMaS+oeMJgIrLyl@f&pqGyR4 zJn#-P6|gWU6qKVLxFH8Y23RAj=;#f?AF1SrKB3uqr68S9wOO#_JKqGq^GDk{y`~W; z5AYN$9O{oNY}ZhPQZSg#ek6$>zFJ+HPS}Z?Wdr<2k-(eYksKn=O;4xbPK-y`k_!KG zF>+fZ8>1#gbm(s!wIK5JdO+HWxoqJTQUr+>8hTUHL zR83hu_Y>6GZFm)4HBT13xyo@Qq)sjsT=C4O*P-0Ie-#-@z|L-d8b)T^SJP_XQbBaE zz`knu)@v(6zD1m1(baM7I`>+IXnYgt(uMEMkv$@TZIGmjWnAjr@0nLa^v0y}rP1Xm z!hNBvgwa;Qw5IH<+rajlM5I77btfQmNk^EWfmoC@sHD8Qa}-oPpvR1CEmIu00UkYV zHyvBd81c#7CH(jNblr-?bBv-f;c>}*{zo5QH7V6pxpABn8T0@0wKa^fjhh&73$gl9 zliQJ>cYk$KbzfT3=>zyQ-0c8R99NxAd0$x47J_qn1oL}VB$V~5u!(?C zI6Lf7Ys{^Jp}b92Ym}#!Y>tineGU$}Kwvs6V!4P*m$G+k_Ia=TaYf3UIb~Obg9bxe zB!QWA;8_xN*t0Cs$C4*ixP!<=&+J;_tuE1c>Q!A-xjtX&eA)8xq$fY6$bUX5qK6d? zsUhxG>X-+xfpzoIjel)&1F5wRDPF$Sc%mRx*Sq91E~bftty4pMMb}Okv=X^oZS&{7 z7bR(6s?P+nuaoUBRIBQ`F&bD@Ac7EjX>aD)@%Twn`{sAUkiBGclqR_c)VDsHBDH2hEBdLyf6 z>MV%(Nb1u`6S!K?D=i_?c#$gH3&+!8e(o;ew^>UjX-(T_AY&M=p;f9_j_XR3J;WC1 zPw$+i58{hz*2fq(F)hRBIP*Ble&rqHBQ&0?P_^7ULSrS7$5w8kMDB5awtCesV(7Z! z@IXC_nZo-ct-Z*jJEKlk8OlOfb`;M35G_@BthYq27@3K(i<{YQ9T4RTza{vI{VGsb6bJ^+PVBnuVYcr>P=mEW?ApVBbG|yvuv=N2bFJ)S)I#VHtX9PgubtudeamI zS|B&*A^oEql^pt402HEmdT@XYT9yLgw5KsR6?#e%_-79(zDJ2OgOEA_f@b^=UDTWK4H`hgNol@5skr0*& z(b^S=6F_+~!l?K}6c5tS{q2##mH#D4Vtt1gw41wRv@_nueQ`#k;IHe2>a?+P-tQQe zr`oy*qYc1&vYH+hwrc~;Qgioaqb>(x+;I3t@8>8ur40PsG3iZjVPOJn>AEEh6l#tJ z|K@mieky2uGH)9kTu)1)$vyY!O*&T21nsF61!ihXt=zdDm%^6TQx5;MZAR})-nh7G zf0oeyu9P4(ofRJhtV$#e{XH0@t}_QCyR*Aa}( zUA?S8OXj{Wv=*Mpi}o!_$?jAG#})tdEX%LNW&UZ6pcrJ$SI`XhLVl5zTW>%aksvc@ zvuEOF;X$kg#esh{j-6! zvzH&K9%WU>!C_+EN_H|lxT5{2Ms!6J#FHcK7W*zx+Bz$#EhupBLL5 zg~7-v9?KHslSD|uUM!>x$~oj*T5Bc_?GM{<=eHdFU@hgEm73jBl>uynK4RgzQG_vx zv54za;XNvWj?x}BU(in=wy9ZFmVvP^-6;q%YswTrE!3IX>9>8jC`~zChWiny;nMbb zusHXwkqfbCW79RsxKASQ&2Ydqm^w&c*+}$K(jzV($3*M-uoa3Uuj#6Viy`EO3B){E zobSl~>43ZkAr-yO#2NGGB~agj>2$Ec{A0MpeC{k>tiVQ&yCy38%qbkoab7zKd_6CQ@)QyVg{xi>d#oa;> z{Z3^nUb?XFvkc=KmeI6}(+xNHoE-~OK-32T*|o~?TW(~;P0`-&J-jWE``(6zh%DuM z*38L*^^I{UTR$X#+I}mfQ?qJOck(b+RjKqAi zJBfMOj3$6P3!fcZ41fwR_{0wChyqJ}P-pyPo6nhA**vU#nfVkz7lX@QQ6Oh50;Aqr zxw3;7OLsbzgENF3oWz%OlM*y!H=Lz?#u*P$>9=!i>&IY2D@jms(4zYgr-!WGO0E2% zch+2Q7GnlmFG>8>Xq-l=x3SpEFIWVeRB(mxR@ znm)J`WKH?HuKT;_4>6`E79(-o)Ejx=@(_wemPJ@afg{S^oRdA;nBSXeMda7qerSCk zY!KC^e)yUtzjct0C{SIaSaH3FrH=kCG7rL5C-?DM2 zl0_|sxrsy#2Qs_z%RzTyEQ7b-8Yfcm7uRBF=;h`=*ShxDn-Y))+OvdQsW>@OFZ;2m z!mHST9#ZWGp%AW~N7t^_1J)QbOuW;&6M8_)N<)OaeVqsVg{P3`dcnqW-~Qu(*9Lfd zrsV%4Ko9huPA`~+1%Cg{w6811u9H4LD7GW)W@k)7F$*4|rihM9givST*}}~DQwPux z6VoobkoBQJD>QhVEv4f{(R%769Mwcw*$SK?c^bgiypWd-plz{*`5OEUIt(7@S)ME? z0e(emWha82pyF{y+zaE)sS8=Ed%-JBAkLvdXn+}qwp>P_O6?@a_T-F-b6WaTG8(6q z>XF`itnwy~-hnJtO@XFKo9^9d`{ul0@7b)mcxmAGkC0dN!damY!UdP#X=TX|Fcs@N z1Lxk9P-5#=*oM_gIfqdU#&!F3Yfb32b6|xbWX(cKC+cNbe(fib#{6?}99*!tHv9xi zxtKrY3lI#k6v)|yQ~vxvO=CW|zfW6~+;-Pc)d;P^B)ujIaP=q@UUG=4d{VO|s(6ow zIS}N~B!dGED;?0A|1q-VBgR+8#J%F~4xv|srP(M>;InrU5s2-+AU!m=yQYjJAotN` z)``*?x;&}fe(A|D-!vywQGrZ#c@K%HJ*hHCZc;La*#Gi{(WPHTqnXqA>4}5`Q1F*G z<&%JEjh%)01UQxm_~9czzCzSx@d-~S1yom&>-D2@mFFa%W97L#(??7(Qf2hdszH~o zEdu9HMW@(?tNg17GSa$=*@#q*5Stx9 zzAx(A(Q9W-x6l9Mk0Wc zT?=U+xJFLAi>UqY<(ZVQsa04wtXzftj7hyxlQH=vD=TobK%J{Ti5>ytoQvCA>GZqt z-^rw_T@a>-s1=nI`+l@NC*de98)W*0P=EK~u{tcl${e@_Y8Y&h$Ak$UM=Be9&awY` z)0T9~MRwy-k<(5DHe?Vf@_8Vto{4LYsEsMS^|WbeKrAPIOLI<`QQ8bh;X?V%0-FZMWL3*-P8OR53&GQ||9!q-j z-z%zCmsuP6xpfCjNBv3;6(vuopD4MiiGar?L3c9xEPf%MKK=S?K&8uR z;6TE3-v08-K*|szM>60@20qf#(MDM51_OCcfCQ06h~ET4vni5 zgi2jgbR*C!Ld7|^Lxb5rX2$;QXtc`rP66Fl*%HXDVK8D5N?nnuq{yt>1kcgrr-^$rB&9l%{c6g@|SDNL9y_P0s*uEOsWIg zBbG27|5)XN$926ItCZ@P*`QQy$MGkD%qjP z7|LWbh3 z7^f^TXeKza2IjC3g8RUy@_}f-DuQ9Xy+VZ0FlkoPw8fIG#Hw)BR!@-lvGFoaumOQ{ zjwjp=sIPZgu8uSoM5U+SKP&q($OFp+n2*^XJffa&XN1f(TWRBA<3&gTv*!`KLs_7hRQFD{%y#8P{W%X5^uX_EFX z_?o`;S#(ER9jY>V$>Y@7z1g5FguuoO$29nF6$9?U%BK#YaPXD1HjcsxS9*4#ICul_ zNn9)1@m=3g9z`a5U7hsmW7*L_Kqe4d*XywQPLY2*AK_PjsFN3y8#uqNRjY^(=&O&~ z2C~Q02(ymbMBSvJ2|9Q=Pn0nX1}`D8Dd26i_qZdU2Y5=C+O6l_ zrw@jKZTdR@mT#4JLVf0M9uSc3!JXYYhBRfsQ3*3cO7PR#5eUA*-yAZ;HSgHRF+hq zLb4tITkoc8`m?%~2R?za9~nNv1cYs+0Y@-%yMX-uAp+78XjREWeP`1mm|l#Qu#9mK zL;Zlj;0)xNfj2__fz;nKBZ*ZNTl@uc{9!hc2iuFjvgPqpp}QqXAV6Wqfd+wa9LEAkSm92)-b`dcLZ3OlmnsO%dJKNn4%gS_A9j;!qQG z%9kQi$>m8y@P%)vw4Fah&mEGO;w0}gizu9Ure2K3sRpeTm&obwM|>~_3PQ&KXv~su zG2>nnY}h;%wH&_vDE6Q^z6pnUZ(h0Mku~7z#erg44&SI`n4wKdMH{~O3}$Vi>m1U< z0K?GL1mvv4>J+D&kB1T=!3t$Y_6fJflU<~uD{9DA0R_!O^Bd~yuq=l5fV~Xz8wo%P zo|exi5?GjfDl<8Ye}W$%=l}Q~yzzFMO6>SD{S3tIi0lTAom9xP7y)z5IfVn0)+5N+ zYDKl}P&rOI(S^Zs4&$s>u{ozG$7;B#OjSfIQqqxW>iP-%cdaxR@y&7#k~n&y@>F@; zHdV%TVRk|Oz^VO$=%5v?C4whE9~Ke%)IN#0S#1TwgjHCls9q-eDI0!)H4d3w>*B*J zO4ls@5+95jrfUCHQ9wj)O@R*yc@I@gLbD4qwD$yy>?R7FDVPMSgx|t>CE$bzifsbO z;1{gc70{KN`<2k@P2>DDmk3-YCGu%~+BrF=)N6acOyy6ht_E8AVu{U4c*g*IA6GSC zLl+7(aCEB&8t;hV)``2kVHJ-CxncG-_(|%=BX=yQ?TfOe{%?P0QfyRh$4_;X=EQYe=<$D^e&oxCY*)Zb!_LlRtIlm|Zsi<#Mw=t5^ zYe_JrSJW8#tyZ><>)c~_CvgjD;qd<;ZcoAV%iqj5u8NtZmvYLl1=7dK1j$tP0B#gf z5Ipn3;^;|AIb*NZ>o=|Tblqod$8ZztI5v#Y=Z6f>K^-o4J;8>wwv?n$v3@z=pg{cm z?y|SF&Sn+0YrckX;ZJO=S+dK#j9+8@&R@7U03ZU7tM%ILQ?3=~d==oEirmKiROYJ- zMB9&QK5lMF3aFEkupOW+BqkNVt`41@U@f%lf-po9ri^PCQ3gEGwDHuucd2iawL)`< z2CNJ2e=zc;K+l=Ob)zLjO(TFJt|?#o3Le#$T1hm$Gx$@Ml}UHjl%Wa-L>t78(-Xy# z%i>I2eR5ZAQY!!{jR6p7Gzh*Ce+k=B414LRPS$DiKE*EmTZV<_X2GyR9@jiUUc8>h=d1pk?7rsyDgSe4h_Nnw)xWGgFDk#>D_Tf%D(!m%a88CyPb#NHj=y#9m*n zK&9t`NF|wpS0t=4158BC>aO~^7KjK46FD%ieu{MQL2+NYmHb?9Q$;?>axQC^x^mTM z+qb0i>A;$RCGH}LfTh#Z8~AIA{nnGCs5Zd|mEgy0JOdO^ub3yDM;`#h=$p-Bp>weP z*BF3^*p;8nx1$-EgYk1b!G-wu;IDk54TKXx-i=A}?Dm9rd{*&gsBL5RCtG!?;5K^SBevXbuFCo2pJ4HJidd5)+)7<5m3_Bbn4wAn3{b%gJ_ zP@wa(uhqoGsI2bi`uoxuu5|9zh^e|YtGGIn>NyP&#_dG zA7K3>bYDHG!da-fnjS|eS3FXL;(e~^g<=l$IB8xUFXx&~| ze{94+`dIG?_koS0#iqR6X^fiEk?5{9 z-E;^cBCHF=lM|{1T_Mlq!_hF87HMbdJvc0GJbjwF4WGjofiy(#TYR#;D=9Q0gPAso zp^Nn(#1E?i-W}x1-#kFJMBM0z&t0uhTEF(q(WRiFz*oSZ-BPppWly$upakGJRBEvJ z!<^=}*}b)Y=zF-`6I&S*>67mQ3bFKx)n3~$nl%opV|P;lY`;>x{c_nOK1pVQBA>+oEBAh;g{6xAz&TbWyz^g*aGv)GL?HSV zZ2i)tVY0zPs6If&bVQ}5wb4%~IGMgYN|_&%`wZFNy=IcJHaM5lLn*A_^gZ*ER67@? zm25b!FWHu~C!g04KU_G=N-|wGrizs4HIR7DxDt4LfeOA# z3B8d5@msJ*>+;JDs!$_((PnmrNfg*02+!*61$1B7L_EM0D@AXo5}pmb^K$sgBo8|j zavM9<-VfSiDEt(S46e}Lpqnc=PzBbcWwlM1@`H_VlebD&GZ}x@R$()#T;w>LB`RV>49ZNk!QHFKCC z=ELa7(%4vSqVVJ#WX%w_M+!@^TVSM#my-5S1WB$^BkG@^;vBu~ki6H)KWN)!e@__2 zMk;q{H>&ixT^B*pK%ZrjYIHrDsCNuy%L}MsHpYTO?5>oP)qjPB^k`kCh=nNyW&N@Yp`%2{d)c`NOL(JhRztbP zi#j1ErJ?deEo?sa-I2%^}pFZ2QFsX&IN`mB+-Wlvh)5n zHqq?OUayu~8Biy!p9+(oCeqsu;X{HYcErX_6e|~*>DK~0ZkoQt7Ch{yK9jN~W>-_t zO1y~i!zN$PG-4`X8-ki33SRly9L)Xs@s6M6x~zagCP4u^J#rLMr%s&NB1B#y>lRp< za6&W-V%tik^dR;ZgY*?2LU&egJ6Eu32AxY-KJ(#P_>L_k1~)8LbY2EY2V_0{s>y@w z`=|`BV?gmRJdx2-`>uhTpxVSH*rJ{<$!4c~Y`iR3r5W(gvz%D;Olh35)g zKCbeR`*)QaNgc1)Y!2PuFeQTIcghDC%?>nn#$BgRr!|em3$@oA3JZm8POdHdH^Qv6 zv&#?QOqdaFK!K5Z%-PeeJXJz2tm0lgI!8RYxUjj6g~*&QA3KNSb-@(s*1pfg6>VQ+ z*px~o8#YsSy{WE5NS%?e!rZEycC>GNj-cYmx`AwFBVgP5?jJeRcbTQH;#j!x zzuJWjG~5v9I0ALw-%LQ#yH^cFG5=|jyC(C*tbzcvFKC|snhz%*FS3em9eAv~WQnvm z*QnFK%JEn1Mxq50t?F))C0H)LBdCVNdVvVk`=S`k>v|BYIdQ$AII`ovol`rtuR9SFdnhg{zD`pS;Aq|HqwhV<`M|6o1KD$n3Vn7qfvc~ctSIFRUd{8&h_v& z{tK^;GTyx3N4^`A5o`>M0(WxD*o@Pb3uuDeVC|@qm#s$Yw{-MTeG!(s3UuqZXREl~ zJX7lEAEWXzI=f}5-UU0XDb{Q+SbaaKcBTS~OV?K8l zxV;oZX&^=#n$?-0Ki@YzWSSNTkp7cL0};G(fGgf2Z{eqYNs7D(dFl)5r4G&-JPe%sFy*-x6$bo zVg$=RYZ5@%objiNXQdp;$u4T+fQ+T>ho>o3HyDd1Tk%TDx7-P&vAe@xpVfdSoccUK zBCI4MP^JzZr#C4r=g%8^;%XX%Zy95BW=@$9xmvE`iCWb_lLGqiD3JS!P0RWRC2Y*Y z@=TSR%)SU`z_iLOmPkn*iT;hWbK33gFIJGy4v9p>_fZy3j*sEn!w%KvtmttOx1GOA z(t}-AnHqsUeWPC8dk5O_=aom$)BZ)rzYNn(iueE6$vyU)fL57rVGIX%wTjOXwflRK zWt!kOw?f6`)g3@W4qdJMLw6o*y?*FPabGELA8?~(l1|O`o+1ME-(MRP*F)R z7Xd8+(|_X!iLTvIjAO$Q2s5ri&Ssy}bXmONX}PQ`(e-lLISFtGz#U;sN(pKVx{Q@h z>;DTLX;DkDp9@+#{%@UAA!$%~kxH@PaCjnHe8_W-fU=pUT+Q%w?MFnEAk7^3Rs~I7 zReAyRpAzB&v0VE8dPtM^QUHrX4HAkmgoJ0vpu3EWvr4!P04j?3ArIX~9{Sv?TDxxK zxN>8ul)*XZ#t6k_)(hY+hs+9kGps!0&9GRLLsb9CPs@GqFgF_Mg0Rq;zLM+Dk77Uo zCZz=a;*tXg%gN-d?Zx&+yG@`l(`c%d=a)#oD;CsD2FXCJ+v7DX46!;wt79|;9cB*L zdBOxsHKGYNh^L~PUf9`g(D<`!5PquZK!fY1L&Z$dVH3wrk`wwk0#bt!I@Hc%QhqWw zqm;Wiy*6U+NFBEJ?V)xB40`cymW%#o#n+*(xd*k8aTs8e#?jSSusmxLoFa0&D9lih zwLMt;Q6cnQ==9I%8tgmM2o zMWR!dx>F|l9_48Td890|E*44<*=iON4HQ^DSgi2&>4SHwto?Z10(CsrET1Tg@;$P9 zUd1wxq*;-+&Vg&5Ov`P^;rw)ioq_V5%Zr|6Ie_U*JHbvkIPlbfU;efpG=H1;1C|YY z)6z?^f5RC|y}-r&2dqp9yAZF#}wO7t+FXM{(j=M$maziUTz*LLuYMJmAi9(qJ>ZsS78t6i)qx*iOH|ISh( zKqmbkoby1LzrH2{99Em@yewD8;g3XnR+?Ff^rW3=de87OcCyyn@Tmb4 zupo28;8^zo6@a58Q7W8(Atxrsr*D1rpm(DfcDK^#AT%9&)F~wqDx*ZiEiwtg!nG}H zLHPt72gT({cNRJ@TGBkx z4wz+O$M~M>indAQO;@&k2T=NsSO1b41D%XhqnaN~?o|53L;}8OOhP!#BJy|mM9rT2 za3(tER3565q#lUu%ZpK5B|>eQYzpI@i7vzW8kO@B0F8I})oW0uO{;T6AM)O(spmOk zO1AS#Z_Iw9RJD+;FeN<*wB|=Mp5>+_YsGTFjrI{}aFQxv{F(JJDL$h=j%!At_^ z1LKk%=3RuxeEjtVp)d7#c|7DrA?%*f7*8IrYP1Ni&Yk9@yDW<2}~LgpQ#9 zO-`aYckI%eWLvC82>c<*(+Yc)%M|GxkAGoM-ow9BYfdNsd$>2g6F#aT``1S+niT3*`6#N15V*w*a!_1NmGsNWEfY(O62KOuoI^GM?>HNBIlWuPk?ot(o=}KcuicPQGHQ zLU@AAn;s7gc)!>>4@E|x)ufg+v_pPHgkN;6MNnJtqu%)npQTtP{-#4?5789OT;f^s{IQuc zI2XULAuwYYalCw63H6q(AGW~ET_Az{Tcs41-EN7F&ifz#Adr6iX~E)^U;i_FR9r!P z`5Gf=(#=GqG~-YZ1y!MbN(`U+Bm4AYA8#6UdGx~|$T2^Bv->(8g6_S?E@Hp244LkY5FC81Xbt1Bwe<@DHavi}AZDsn#)0;n4Koam^WA&^`c zi9L?ksszvK^;p;Fpk9njBsBxr5TpfCFyQOn`$EmFH~~jL4YLUa3lATWd1&rFEHq@dBk-- zQWF?P9=R{d70778cM0bokCp!a_^kKo>mg-tawsy7GIFILoDvM7+JYb;%DDOvcXw+{x=IH}iMvd)V3JJOAXG%5yIT8ACtt3N3K6AOmXODe z`L2$b6#puu$u#(rEqDH<*U8_5^XRaruQKdXH@_!Y@^g?)1jt*5E}2u9CwNZ+O~;AW{Dpi`F4(j%Ho6D`YtzMPS)wVrVw#XRck|L&=<8CX&K z6)W^w{-_&l*Z+(1KZQKd%fr`T@`0cc#&Y|kr$wk2#ep1c~X3Ipb zscDn0k~6>%yLU2u2W3+PkBO+~(d@B!Ow9kDWtPfpYZm2gIdLRULMBhA3YLt%AyJ&T zc%VOm^*`yn<{1!PlbY#2BgO2IIg5TOuZ?E8RYFGS0{>f0Hzn_|&8#I?pD;^tS#erg z7zrDM9PPmy+B)2Fmqt5P;0he^>cKP@V`nQQIPjBoKAX>8gx2*C;!M{o+VCp~eqrT$ z>P8jNi#Ypcq-|N7U)~Em64YH1y9Xziw(b+*PWt3H|1QNX$p0U2Gpo7Fea25OWt{id zrWh{{uCHob+!I~m%%e}%p4ySYVdM!Lg_mLRVC%lRA6(jc_NO%+DIzD1LA?On>G8n@ z5>xkhA%SQkIJKuVXm_h$c(N6N%}d0xB%p7Ca!Gk-mvjNQs6#aic)Dnys<H6)UOFnB*5qlul`J!hXK5F@5XWt)iqZQ&Q2uEX^maqV4vLK!cu8X_C|W3PrHP8AyUA9NS^nN2MbU=(R9 zu}`3OI~roUlS;&~7BQJt448*v_?hNV>QwqeaHNEMIhd+zW%4JOTWARL*_FkB^R9qd z^t&O2&=S`O(GSWZI%V8m)96>d97YfNWx-oh>gJZsbaq~w+7i_*OJu)ftudwQ+F(X+ z@Y~_@{^{IsStq~wR|YFQTqyujBF%Sou-jd*-=|Qf_hHBwEV*3=C_mUCcy^t` zV?-ZW?n?-I^BJ@xnT>{-@c(dK;pmUBKB)MF)A*}?UmUOj*WVFd-#STHR1%I9*`%c? zTM^ue03S-V(0$y3SwVw9jKtd~ z8igza^BG+xu;RgleYCkZ_rxWg=xO9!S%z=g$C)hT{sB|&dx!f27$Nxw?wn6KFh+{b zp=C{x1*@|u+3N((H`K(<-5yPYC<7ZH4`6F8P?yojyNOb>?>2lRb%Z_{r5(09hpN(tz zR~3xZo})S6RSH_biF687oaWGH#kbR9Kr(_`)?Y=iCj)|NHU#u3|l0)BL(jQk${NFA|AN>tfykLAtx z0UW%;!eeN%99qX4xI&u;h6X-TD4nb>!Hgpe^A%*Tlo#YG`$&Yl;z(8P>Oolryr*@t zWv&E{jQFq#>>G=>MmmnJ$|yUPMy$fbs|4U+uYzZ}*_k-}tFuCR)ltV&xfcvk$B_?; zRx)atz^4mZo#Tj1xPuNFQ;*l}kwXiC&H&IfWwC~9sIVEEO|KByaq($I05!o|HE1Or z^qtMkUPcI?HHOMjx^1#&dI-|Wf?#+%uJ=4@^ch%IScRJuha){TzbCAayFg>DWUla! zfq}=7-)TQ<0TCZ6WHuY7r1SkAzvf~lCGL7TvjAIt1FPB!j z+rwNCMAiEg(6EZdIE#t7Qp!a>X)nAn5`1PBxCW(hFmnkeQ_~t3)@syTv^VJ=dx6IDy-)<06L~+4G0*S4?00oX*dt%EUV+z`y=C?|K)?i3>j7F?rf*)qYfyJL}@E zG^WZU0q06b0M1-T!BIwKPY>vo(JuOFI3;_tJN3Vc<{z@0_NPltBy+=t&zZr6p?l>!I$>tWs5s9je^6^tvZM$7TUcU+b`_)SV8Vq>;#pMHTXt>sbSGBX}q2I}_MFx7`b6X}Eag zx~L?vH0SS$2QaMtOV~k;+F65bO;=~4%$IZm!54i+WH8N}v~DG7L;ny(ajMkDh@!(0 zwmK+l_oAOJ^L+5g-gN`^O<%qVo9kJSMaA{eE^maoRa*1m3OAi~6LviSbt@3otWXW} zC;TuiS;b%i!s@#A-5>OtP}zu6*efY8RR&HJe@c?SZCo^iIQSV~RA4 z{Hp7IuE~kcF?0+v5+I}ei<~y~o(%9Yup62DLR%4Rz6Nq=ET4CCLj3M(emP?MoGB7) zym!e+CY&%0`+CIZQfBG28`D>G5`8&lb{%azAq3MND;hmq$B`^Z4Z9&7W5WFH&1KRV zB;8ikBP2Q(a8BKdhY!$-W-ZNtP~Bx1Sc{~Nh`*`vRU`!A%;>_}(DsL4h_+v25g=&4 z$U~0`+yLn!Bup=)v!KXVk7h(A1`MMW1Gli+El-lVr>FphH3bh7k;9lv##pG2LmvSSbfKeBc94b2C5hWjQuX1t3THu4YT}4Nxj-zzuiU zNT511@+5jcY~b2vdjs8JjZs1MpUr2ff5E#x1c&#;v&#~ogVQ4{{!^Hx)$G24*yzJ! zV+&su$MskItv2lBk(cBJ#;{e10A1XloJs@Zes&3gYr3;O1x2<;LaZv(8T|I73A*=g zKMc#*4vc+W4js*qv)jM)yDcJ6(Z>~3C}PKvbGvM6@VdLGh{zR{ z^QWR*NbVnoPM?6TDZdNLZp7svjZ+tA2zo@%23sWUD9w z*>IYD+4ml?O8j$bGrfji0XP=JAncY;tzH0x!SkhVT)Ngip$MQT0qYwW%xDmT=am7|rqxU4$Q zw{oSOaZI-b9@e0lzCP*p{x!sX4p1})rq?=qW*_*lnu!&91bq<{KUl&`MXAJ2DUH_B z7#v``3>B#N5)G;?$6i5gE2MQLg`HT7Jr%ow}pet783DS6k@TH_;mq1Vv3G z3UeZWb_B}H{$o|?g$QI<>sK`!x_;8}qoc|uz|ps!9x6wjFJ}&Hk*({p9PDLekS@~i zN(4y$&?^GB{tGW(m;=bAfGf^{^7M~DHw$D16P499EP(wq$jWy_SeYTjgN+p(hx3<4 zznYcBtQVOh1GFQ=$(Aw)T5Tgx3a?@-yO)vNDGWoQsIt$H04$k%r9Zz=((A)?xG9@p zHd;__#pXR9>Ws~-qMLIXl;f4ILT)?3Sbi*mc!&TA$yX3QRx<3mP>pb!rD+P z)GaCofZ+Y}su(9lLKD|GPXE?r&IY+SQ2iK6HW?!-y2E<4$d!DM3MIhG?+U4Gw2L4! zm@h|7ShJiJ;}Hy8V>v=!&^>w_fL9=T*I73m-!>M&rZ9qJpqSmQYa1i!I@DSs9-Z;v zL0F_tQfvhb^!d<)Stx+NKuqj6L$O0hJxoX_Sv+*4xUcLth!t92yYEY~kk_n9Xo9)& z2OM;rGSUD@o1=$B&f)>Lk5$cqUz?jVF+e!5=G>j0U}$6(DRz&^i8o;NllsIY=8N#l ztoIRg86Y9uYr>g+i}cVvH12S`Arm+&Z|^y?0&rL%3@&;Xbv)v9bd zg2G-gENZj%7}0WIu!U`1bBe(MMpdD0X6|5v@&e znx#8;PvWFVFqBE=F3UomhY*D7@@fgHQe3kaKgUZGU$Oq9FygVMk1f=P{b3r@yRZ(l z&jU=oM4JiZsm=>qQBAUay^Ekf5Uiay5hvVH0NMS4yjd5uD)-{Jj+iXh--K^+4Z$)Q zGs8Y76M)W`bFtAClSsCjpEp&qyjNOqY8E@e@jzSc-yVxq z!7HR(mEESgH`ewkAg(cQ`2DlYjfI5oC}it_u$tjA$KNr>Z|LVlrRP>PfMjrOTyPf+ zb+^p?uKDF{vScuV)1g#P{1^29owH5L?yZ5JpgXfIRcW#;JSW$mT88HqSWyxuBS|gt zr3$-`)C9BXxKv<@>MrO0UI$*+CSV@NqXZz&sGkG_c<`OA)WaI=VD&wRBPC}wZ{JZQbDCWyD`PBmOGY=o-VPKiov_v`2ne!w*GL! z+J)@uEql0SRJxW*AyH=R8zTn|0VVxjN@4g#R{K+VPj(sc;hai(38=%{G?clo1ZZNE ze)O=vo6(2{75`5~lk3(Ipb#roE;=6|>(M{gwTp%X$hN=sSnGmMljTr089PA0{rd~q z-BY}Q5Vu`;jLzOiVmA}L-pbzzn*?85H&1S&%G4#K%As*P{Zu>x`c?<`tlm|&w9kI( zS<|a-Jf(u5GD6I)4U1Jh_YvDe`+sDre4&T}F3PSs66BY$X)O(*%kLU%dPyPp(%+J* zm|xntAe%G%rG=2=FJWp&n3M(fwNkrb?V@^Ry~3 zXxX+_ZHmRr;0uUF>9WdMQ9iPS#$_fy8AU;)a4(7$5nFoY0eK>U z^vGV#W?|fFh-=AnkgW(DiDUH)5cXf`Qd2A%_~4a-ccF3!@LthU5nwuT7aVR3`Pd*)=A?@$%dYP z<3hk}F3@B<*)t%Pj-4CsQ~dw%KKp+uR`WtAkpgDsFw8Rob}OiPz*VrRWY26x^+LoG|r2`uLNj__dO&e7^+DxZ* zBxXq(gkAfyH62l!gOz(;GNC5D1rzp^FyuGRBK4I9)Ej%cUK!HIzUdUSV)RS|4~hAI zx>T@4BQC-thMkDuKXS+;{6Q~*p~mGQFV{YuSolm+(mg=#y(_g8OH0s^$0pd`oLW@X zgvpf{Do^c(ILH%OeR0S-(&^~1CMJ<1d!bl@Vq1qtvem%0B(Ntb6`AX8uIjSyY`zF$ z&k)M7ysj-twbrAnA<_CA`o3DbBfbX^fjdQCS=M6;4Wbr#4-6j-yLo2U8m&vkz; zva_{hCXD6MERB+z!Bub5z@EK`9AsYr8*4<0wdvQ;OsU9vUm;!!%^e%a1$i-(cO3^S z6kXN#a(Y!uB0eU8JJ=yeZDVzX{~u<|OpJs4q_cO!RvaN5_*av(M2B)N3*c|I$%Z}Y zNLh#4s-=nDv`DDaG=aKY1AJLiOQtadqagcuc_a*nvtB|>C^8}(d7@vX?R-%MjdkPd z*u(YNNMtM8N9s@#M!QynCVR*cyfH8HUKXZ`Lb9d*qBo=KswfeS%7%Ftr^-$-;U$E~ z9xu!gpK%qtt!SW$+2#g(o5x!-VA|bC>wr?kz+bhkPqN58j<-~>E#5?e>IRU{;PEE) zp+(t%tn-Wy)U|(wDxh!pq`f*cg=MQE5Po==0MMBuy#tC)(x$_CG5fn;FiBuEclPJv zdrf+$D(wfn;0ea%r?3dWz=yFGdmQ>;Ski)4QGd78G6Msk3E9vXcplgEX1tv9HOz>3 zKE)Tb?R!h(_|~gqTdQ<9TUMBSj~LH6X+(><%^`*zOk|S4I{Fn)`#J|_;l$E63{NBj z?Jfn_LPzrOi@#}@+6S8mr%K)k6}Y*3YnQN`o`V^jy(W||5&wVEdbLG4asdqFffMHC zwrb?!15Va+DJfq5`39*9*gSbBN^o%SC_L=)RjzzRuAa_7>_*D%>R_2G z+YT?zE^m@i-mx|KSDCa7k-e7-p~+sYW(l@tW96D$*PTkbfnI@418_?9<0#%xI;n1j zh~jbY%IIW2)kF@|^EarXW88=~nd7(Y%;32+Ef56;%#;4q& zw&*1dx%cyRDf(tyZzSTe0R9ld3Ah3TF8V36`Nj&4$>>KOp9)qxEDWcdrD z`gFx==oj`l#-%gDRIsvp;1Jn7KwTN4N;-$TC1lLMMZdfpl_)HD5t6o)L9Z(OOfRW( zIXr-r*CNQ$HbrWC+#!f3N@ygaVoY17R^Hw3P66BHxH7+)eMMJ{6k8u-p1eT{`e`$@A~!rCkDr6RuvkniuCqFea5u>+~4o4Q>j`E9wL)jNpU&s zQ;3~oO_;e2VkS3jbM9UL%hJ)kv}=_$O~ai~A~0RAOz|k$t=aI8BaiX#eeW4~zM|w) z>-ic|{q<4RDbY{al$b65z=H1~#S`erA%lc;OegvL9?(v%!M{I0^RM5HDJnfM#R5C8 z>lMiP6vGMvLCX=uZASq;-Zy8I{TBX`=O&i>cEz~)%w1*X?k35KveONZlI_nn1_`@) zuPqRBNyR(Py?3Chi^l8SGiBJyrEV6P#*UfQCS@##cu=&64 zf+~iXqO{64IpUkYx&PlPq`|E!{K>G$tVtvwxGgLbEhV&*Zi@GAI}d3=up#@!S4it$ z8gj|3MS2aq6sT{O7-+DHRs>Y>!@{@+u_@A>(1uxpka)7VYQ90gmK+1AJIu>vfz>Bs z{L?>Qt}_*#_rh9uQi>Wo%=i`DW;44_iB=}8F(59R>e7=>CJli0Y6^!cxzz@dtxVm; zMYvJI3;L3Yw_h73|NaruWgE(&<}4mElxGeH1gH_^w*2K{edg7m!poK|7CDE;6)UA; zSq8sRZNQd4&ePjpj{rtxcstu^RA#Lyp`GT&S%vl*69dvufonxOCQ&g4a)nMinmI@O zOZ&(nyD%-)88oH2Vk<6dqbFvlb9nhLBQakNl?mDiLv&Jvvz;*|c~nPo7#R(7p&8tk zR~Ly@3P_LB8!=!PHH`aF`&-)pGBO&hVOJampIqGjffrg;~$f9q_E3{^1EUj=I1 zv;`?$U6o!Kwez&HTA5anf!jI#`=)p{1Uu_$YzB7>1LTt_Sk@ndI3D-jea#8OuWIz` z#4^;p;`Tc4gSv-LQjM@VlDo6mGQ3?ocyB~H645+fX2IK1u5Kl#)V3m=RpWT2CFD00 z%^_bH8_}G(M!bJQnQPmgm#=eri}gogDUDr@?*E}`{<`4rMe!DM?Qm30#MARQUe7&` z7b(?J+KQ1IjAA$MT0(6(%_X4G$9k_Q{HAnR7r5Dlm@y4L#^7Y(^??1D4n3t(91@D6 z(1(&_pUniUcAMsHD+4pLRr0wHulrEW)kvI3eBFa%?44Ue#=PDelZrr`K$FIVtx~yj zGA;=`w-Gz4=F^5PUGyG z%PN5S1i<6d4}OEN&+O(^agygt@yOc;rzzZ#z!n=&z4 zaant5mEalnQ_;HVAO6nHv|NZ=fv`vgsULTwoC5Mp6R;xkE0r={nWP*V>qv%nKAd|?D9 z7d~5u%NE@POFOFcL5DwfGxU@m{q{KVpZ-zO?w2E=K2^@>7q-2yB2irA z6P*pD%v#-wl5HVzF2r;<1%%5@>{Le!cqufx6^j6{>Zp%EV&Z30CGTPxENk^~>koaE zIa-ueSi;r|pYe|eY;7=_>PeLH<1M;{KA$|Opl3bz5*_LrJnDAI8I3o!c*h*0<27aJ zw7%3Ez;}d(ze(<8$g0#kD$s&#JdZ-Ri4I7VJ-oO@*QM4&TP4fs4a@)h>8ed;#UrTq zk;jAxdL8t^4b^N9R|m@IP>1gMnPVgD4>fhC zS0bkpV#1;yejsK{E=PCL2@W_NFC2-ipjRuB6P@^r#t{Er#rWEd|L75RMMTSBKBq*u z$2tlCj!`l7a_bLY+vW1n1>-7k?DgD|ix*EA=CmU@!6}Wco*NCY*FOh-vb+Mj!UHorRXb?c2KvIm)B z#~q}agjBV=B;_h;A7+wR6x$WXV+n-&%n!d_L)pK(nhVPlN@q9zShb7{?u?aAgl{nL zHh^IpJBBbE!Bwl;Zhn6Iyg4FVrrPU-cVJ!<$PiV1p_oQ*G(7pdMtuSTv!B#k4_F;f zfY-{s^7}b_<+p(w7cF@Q~4bR0V|GMPJ>1};+DZ90^X;n!&e!y zeeamIYVR3&n&Eg#hEXEbf_nOT*C}?au4*FwPv9*APCCP*9mj^56r2>(hrnpUS{U@$ z)Og`2EJG#qPle)T!&6nnmA332QRRY2mr@Myz-#IR6kMr_AP*oXp&k}G_YYnVBOV_@ zdvFG8YoHOQ(z(IPj^u}yb)g+C_j2hddn=bq-`wi)v>1gRpa1hW*!xNNwOD*TKC}W8 z5IVNGZ@v>1Lv_pq`cd(C#f26yX)Jc*sj6kd^~R^ejf1sMX7i*KCCT`4YbPNl*B>6M zb8nvls9B3GCh)1uc-9rv_8-qu-kzJ&zHGKY{|A{uh@eB4%s5Bi{&{WG3D4KxF z^DaBCfQA0h!^s*vM?c${ZgF_<<^+{Ap{B#{v4r247KE&R*!MVadR&NLM!;`d<5FHq zZzYO}k^}JM)wpC*m5s;anoi^PNp0)vk?cyQ10zY)nc+bB#3o>W97~o=Ak|?mnRKd(oQtrdj9%}`=9nt36(&Rm9`5;JiPQE{ zW?w)o-&1Mh%i3Bq^j2<5L2z>zfJNx1fFfN%FSO-he&rq0GoCn&8+y(l9VX#uwBy5= zc`lBm=@vpCl)5+Zu`LdM85jV%C%U`NL!2uLp7L6{j}hw$(Jum1qRA1&o^cXWLhmeF zjoJViixhDm5H0ErfKBRD*Q<8Sq=Q{{vR*c1)(!HQlYMbm{dDylVBdNeOWDa|c_#vy zjyw@n`p^3>`8_bRtEROY^k}GxNc=9#`BW8F>Vk;MKYO^6dTDuJ`FS?Keof*D4fx94 zN0{^qUz(e>ovQj-w((vJJ_~x7LY7-_xl$aB`R$m0K}CbBiduFB1SziUmk! zD4SaYgIN%4iTloXEHu=VH&mWIcNBx7>_LD)$+Q#3DDu7?O!+`MGJW*gh6{SB2<|MA zX2N%ATon%3#DK=eYWsw&_*r*x!Kf+t+gKUv;g|hO4SyhT6CIup<=DY0STWBWnvolR zNQawMV};;RoK`aCNJYtU$=x|PGtA{1f^{aL(^eVy!D!j~Y!9%7;uwOZ5v6=$G&Kyh zg~20LTH9&A8u)W6H-h56XXJ}>tQ+*yAHpAuU37l~eQqP}1Wh>5rG^7*LfO=J&#wWSq->*5aTi5Fo%lzh$q|NVFzCcy;p*|t|7GYw zC?;IkX7kNdC?h{6;8xq}LhY6)e0TlXQ6{R-*_USlrEWcA*?B&C|4~;93{}4$lL0$7 z0yw(bsXAdtAiia@bIhG?0O*qB19r*A^%8uRm)+c>CiNq09vPbW5lQ3hL~D7jXeC0A zx5cDF)@MlU^0=vy(PTlcvt)JfWDb5=F7slY+H@&~q@I%3_0J&_sqf+-q0|_qlgxBp zs5s;ON<%e`Ze*OT%N1MuP@qkZJ|2DBnub#G zHNB!=Fred;$FnF)n~cj%Pk_V7C_t|2E})V5`)$t;;KHG~{~mdU4I6@G9vCJBJZz_H zy~Dc*WANekK;V|8);W(sto ze7zx9SM#tE5QCS22VMpo-j0$XGYF2O#f-Jy zE1Krfb?%~)!%LcFd_U05F~5Hxl%BQz^KiGS2?Oj>i(P}ha@1bgtP!KU((xvA0f0P~E0oUKr&sb&QaYrWw7J z4To=dcYtgl(b2<3<9SJ-jp)`*_YcRY3ooS{xzmwh{hss$)$bdcP+L#6Gs4yQ4V{XL zuN6HrKIoYYzb#snE$`#}PZ5VI0JXZF<=?LyRVd`X5g*#|R1U`zBT?hFc^swNFK)*) zISuLmhc-$8?D574B30`IN!?(|x;^oZyuMe^G%ZZ3cK$yko>7`5Csr^=#!kvead>`r zwNwNa`1=dNbQDP+J1LOaDDlV0IbBU@VX!z?Nx*e2_A!3sx2E>ZecaQ$=R2^7=Ua*) z1z2&tF~1ZPHlM8b-sYzmRR+`h#7^i(Y@PYt$EbMu^c$=mwRtv6*tZHt!Q`CQn(5SE zr-Vd0q<{%aKNEdq*lomyz&sG+#X2ot5Y4ab5sEWD>~i0|`IlJ zcRCK>ep6N%5)3pq#5)(#?=PId2 znSLwir&e3IhB|X;x0GOGE>h#WO1FZwe7?Uc*GhAe?*5(Bve984RK9Hrmz)v@{y zr_?gSXp$IIfV_iY*E98>gD!uQiob&e{n9I|4)X?0K0?`G-33?a*BOW>?(T^8N;pIk zDMYm+x?$uH?O!#-A@MV-2P0KRBK=mUH#?;hGdS-SD{|2{nKQ5_gj4~%_!N1iD? zk~q=&iVCqI4n*;o+A8V`PUBnMpw{DVoH`i!uDS{_peVvq7Gh-$?P;sx61pf3{bp3S zu|vd6fjyk3Le#YAp};s(iHMF8ax@9UFD*(BZ~vwz9TTc#JEKiI>Hy3)&o-^lK3Dns8HC ztc)x&b)1v4ke4vFfenX{7Yvs-EDQ!frBB5fk`2RqvakmA_0=j<^AtH;zdXR3bByc@ zI-tEOT~u`ZO{{pCBV4zhv^U7DQG)7@R20y!ETQqX5fs~cyz_Veh$~dx$#-LS2ltNQ zX}DM`_JQgw<=kc5kh+25y{k0?3}P2DzO|PK%_*_a7s4~Hp{xcXX;9ciD?Ict3k(UK z94e4_%uN)IAt+=)e8>JHYPVq{z8uTeHy^vAk(Ix))6A4js)^ya>4|&V;d31jtSj<8 zZj8P^mFu>Bnrw&J?i-5IZ_51XGhG^lBlv&;Upy0Sf|jmmg>}s^+}VV}vLy<u^RF~o+pZA_UYj2Sg3VP&ZS&PKN?**z;x)z}FO9c9jrIFkcOFVW0QJ{N z>X*8I^@+Wocv|Yc-|Keb$XcXfEf~9cXO{YOl|Y3gSQO1MP5)CHTjnxhD*!rklOwYF z&du|8g=d-D5|5g2N#?zB2Pch_aE zjJEp{bIW#k7+4Ot$AZfI4YqH0ndhzRNi{C(#5Kb^gMb$VRy6 zI2>|2)bC7%I4{~Iumj|gO=va-Q9aoiH+h{Y?!$>OG=BfyK8~5bI46$i{Rbs94EtI| z0v=P;xp}8Bb=HWl8=#DluPpmqu{ijs$z`ar0z7QSkKJY06rJ&;%jLGwn?)%6ugqbs z*WWgS0Tg;Lxl@+@c6>?oDo3R`kpBGH>%?DG!1fD#|7aLl(S5VFFcq3V<^N(%H7q>oenYLptU(lTAcFp09# zhP{M1N*DtEZ7qkjxI_?VLYwGuewsc>Xa@>7Co@si zt{6(MB}=PR(MUIOI)K4bdkuP36uN_p$Ed&fUQ{A-28qw6DUI`oj<%W7pHH53(4Bd; z7jnUm`{G@%tpbUzK?+TVo^n@b1-ho%NQfRGi0m>jUQd z4;#m*WouTbo6;o$>Rn?NyBXhasm{a@DsEo}lIuT;G?Bzjb$1$&mPvGPHS9GG{do{= zD=+xQK-m2$ofM;yHEJdBXto)0d|8j=b5#d5N~S4`yJ~l&9eE(`54ekh)sg$Jq!q_= zuKiR?-Pro%kaW$KO^`X^Xc!#54xA)~mI2LmiQMu@R}>SVjY4;7-QcjkV0An$PaCjx zx1MR%)|T^cn4z2I&+Ti&@G7*_lh{^|bi{b?b9~6B!X+MMo>yGy$j3{h0KiD*PDG+nmL^Up8Ud=cL=UZD1m|HsRcU1emtK^KDDx}LLAAfg zoLKm&aN<$qD3E>)C2CWN)$CA0BtZ>1I6X(+X}bV`Mpy9NC~AUIbr0!A zcB;co4pgGkmi3xi1hGK&0q^e|eq2b2uJ;F+>|VZ1CN289-5In?v&j;HJ`F-k)CSqyT> z3u8O}iguL~4#v=gINsD2zb597C{8wU*6{Xr95ghbXGcowg6@i;QKCA!B_)rRIW-r< z)@ORKG(&{*I}4ZB9x<0DLqecjM_kH!X#f^d^?SC=*9|UTFEDk9psxn-2k* z%9rp+v)w-;x2K{p6X-d|M;RSJqk}b_vi#PB57c!Av~ODW*W0kEE+fMfamrEm&1z(E z>?39ubkAH3G^eSYE9nWAS}sT-t{;oJJ9!rzr#*P zz40YcdCmy5H)L!VVer0yJ{C|bBCRD)DQ8(7IvENE-Mds-mmeouZU=ijvIo7Z0?8%{ zT6v$0Yb__G#_0AP9pEPb&n*PH@-nyr9nFFb(9j2jCi!fvNDhR(L0zCs2-qR`R$eG0 zqt=5!s`F6`7%k?c5XhTtpJ zFwb22^uGB9WJ10QQ?*>VFK4PK66iO5CBB?ybS}fTzC&?tU29cgA>(ao@5QEv)YiHf z2VqVvm)d!wTQ@tvx_swcgRC~I`IT&?zh9-7gpnAFM%)5I z;k`9|aFf=2;tR#oSnBELrT>yd^)z9f;00A-+e2>${-Ffs<7#qovxOo^X`uG~6*850 zHEnfrcbr-WW{*(hGGb5MCQSPx^YHpLt+GhbB`v850t6!Y`Ss~SMSnMlq`XB{QaeYG zl$p;V9eO~48y+83PtNF3_M!SH)k4nf^F`?+n#)NC5}7ZMc>Hp8s^D>u%M8yMe|?U& zcO%rAt#<++H4HJTO;1l6?cH8ynS&unF=EEDN-F3z-d{=~?vX%5z9M%TZVxEp+loq^ zK3xv^6IF|eG{n9PpC@X8voLgPfF8d$K=#vJ-XPb;3$z6phtd#uHFTVmHUO*>az4V^ zN2M8h?_2Al?8hW${u0hjslCDfa>8ZO1L1el+?uKm zAq4r`NORBhGx$IHWJi#q;B3(fqEMz19~%xdzl6RwEIfRC3aLTohhybP3HfER^T!~S ztXWu>4yFGUb(0X|eMAGeVHXx>v{;45jenJ`SpNc*aDtlQa=kG`e7)l6;G$yWrJnB8 z@M}&Z4!g9GS)P-phl#_(brM!mx*%TXE+b+=Nrs^0)g{<88;&v@Hj-rV)j9LY0^dUw z<7P3RuTwqllh9YU9#+7%*L8;cZDu9Dn(5Igy#!A;c)VyaXFM`S>fWUV2N3uKJ0z7L zUB3poki}AUP$e>UebO%)<0yMJANSFoTrHIqQa~BZU|^+N;OFHJv0cu_ch$#y++<4S zx2UwIfDla8QO-q$L;uO>08;GpvLNemrJE~fHdfMu->UA z#>9vuR^ym%&O$(ovUMO6`}*aqA85f$iK#9RDZR`Omw+cmVOVj{=b{P-baw5uw0L?i z9&)bTZ*@Pqn0B~S&~YVJTXAr&YM_pRp%cxvqqlo{f|Zr8h4uqvpM95Jbgz|zNm#x| z41U`bK3zddv`7j5ikoJ_ze_bAg4jR3%6+&y|5yo(TK$|Z+VE1$jm5n&3`Ru-N0VEk zlt3kxCmvUr!@x!ZjK^7QR=gg zHoaEmy`=1vd_KGxHacW`izCxd(_d?~H+m0k{WvuaIq_g^!X^Qq@$|ytFKRjYw?r^< zQ53!{wh&HOa=l~^Yzei?RzY0v3;ec<+kfPIx2YGQn zhnRd;_P3#i(CrDoDpXT4mmTnW{`U$39?SKgdBJB$Zz_#TAv%vDf&z_3O@L(1y~0oM zl8hx1`)9O(j!y?&+%lsa!R#GEo=V`J@k>@`KT#?fkIjW{emEI=r7}1N%Q+ ziFHEiAr34Aekq@zWca1`I8i!qM!SbyIaQ?XQk#vn4{B~#bFf}mHL^_&mG;e*oUB?HoR z>^f#s)qCR|ehelPZd1)l76^&C*&WlPBjgE5OG>@8VzX_itARGNrd)=Y%8q-!Sl?Y8 zCDaU=T7*WhB)&hd#*{=VN63OHopvmAy|oS%?SZlwI}T1_r2z?|XDf7;ZGtej^r=Pg zJHVh`4Vm;@XF-7j71++u43?vGLEud>-d<+V;`r2}G3QcB-7RbDqDPkl zj4^!4v1oD_$b#HV7v&8f0++;O+mggiDJ@) z@qdm$D_fuPdj+WTgn0CKmaR!`KQxsrC&fWkSmi}m_E@&fN9T0$3Sy<`1bpM2@5yEn z2=r=Jgxzmu=?W7fwm@aPq8!ei-`z2DJ|8zM@H1cCuNh;-DA12}>8d*A${(zyv8$~8t#QRl6k%9o+hyS(5p{=RU z705W|YGHONZRD#@_>3y!WsenXr>b|%Gw4{&{-=b@_ttLbV3fslio@pFiG$94K9rVt z^MgHXF9;E}C#VJ^>evw088pF((5M`qwCsBQvCS{19^1P&}1%i z5I1f_j|7ze!$bbv-x1g+PWRq?J*Ly4zIFEG`RU%xTx(AuQ|f-I z$#+*5ZaOhDjPzMW@hTL&QlPoWB*MGMi9|b`_@(_2&z0j2JoFFJFCpz`;rfst%9-yS zzH2W9Lb!J&o2xfWswP$vS>~kRH3>s|LZvy0v^Oi(5bWhRo!VhIJDs*gDLQz!(V{-d zmaU_a!235xv7mWmDNzqLhmue&=kO6k&6d~fB09hFEs4vuf z`Jn$Y>@ueKHnD-R4~a%qg3cw5H~iWcSF@m8zQ0jCg3KZE^$r_fe?F1HZ~L!K+CC4z z@PGe9-HtpX>;=HTE)&<6^wdT9$ zH)XV(yk=b@6coUv^4NN`q6=k!!}t27|2!iOIUnQE`i(+ep|&-07)?8C__M#VLj+uf zYgC|_P{ThLPVImY-HCM4=5a*O`e)ToxCp7Nwt)X!L{xvVCzat+UwGtioZ`Eeq$;`d zjqq7lC(l!NSD;Xs`15!ACH)GLd7E+1+3?}Ihn9*gs*zmc8ukfXq=R$|Plmc}Gxc1i zI@j_CpTk1;5%NzI^yKOc`I^mft47AN=?#Hg7!>x6l#{3#lPiQgV|(WIMpoIirUePu zb-{jwxo_ORa|M2NI(KS!NEV|!d9Q@^0PbC^ZcJQPLgbRc(Z<=sI+C0|#DcSstvGZ+ z6fx*rN+YmL^oAKJ1)80Ky^kV}*;95K)pxH6*Eo~JwJUFW8_DQ3cJ5})e2f9`$ASKw zdgYs3S-;3swl$VLrPSJZ_?-+#M3v$lJ36Z`hAbV%`E;&%+h~(i-v5Pdn*8&wnZY#4 z^@@;oew&?OI|{(ZXca9VM&saQ6y`u!yyB#eKrbgVwU8N087-#354++ww4KOKvQPQW z81WdFw!V`bYkqjNpdK96;BQRN1##z9jwO{sgC#=PyHiYy=?Fj_)l7LFjXCQQW2|-W zQ&5Y`LE=e*^48c9V535(P8GV;#Q375hSllNvncR?u1=e)kwsD9g#|%-jb^&*n1)Ia z9f|WcLH9Tz=b2hHtgl#SF}nR-J0}_%y-7mF;LyKqveuvfBhE-7GTPDGhrAM!?qAkd zOdxF9`QJM3MA?SE)ae)-+dJb_qzC}~9Jd`+yuTg@VsAZO1Y^Uy`WQ2a)S<^rB5Y#Q z^3?+^^X}ob<=0m~bt>$_^atx-eqcM*tiMw1SQ+5{M0KK2D3D%NLfSFK_Df@LWK-ohybqZuT+&dAJ{r4)Sw0 z5!kKOx{_^_g|VnMPRdb3(KGzI9^DLV-vq9RiHTp$Pl`Nua7z zHSUfCe#77NrKry%EJFkcJBgwW;%hLsvwO5*{z%Wx7rH1U#8QOkhex7&BW2cv&_OSmQx%nECu2ak}z zs8IB;)Yz@EcGktY>eC8Fn4e&K-P%P?v{mR=cRKUe2G#06j@4pUa+`0R_-D~1?IZGs|e5qo%v zBJl{cz=WyZh~EUoqPEi;@E{ zI$r0uSRiW|q5nFA6B}y(x};d0aA3MeG@W3wU;@tPAD5l zcBw9Dw)SqbyZd8!U(Lt@8A{!DSyY8;yxC}0&EMlwx`I?&w_Kn#a|zVuldkZ|M7-OI zC(E27$YX63ge3rChx>He3G;*rszF4>zER8DMt-6*sW$DXfnz_QSwkojLboq=XvSzL zR_6WtyX-(53t zj;)UpjIYS(bYQucC@g|Z8UCQ%y*ph&VhFSF88=QU8j0y}6+{E8DI+=z&fNyLRnAfM ze|qk!#mqGGjsaN9^O;u*d2pY#XSjaLj2?GzHQhr*wU$=|YOkjhIg`+(-lF${Ll4Nh zFu9mz6S@o|#1pPd)iH0rIZFy4T+^LJ3RsNJj3sk_I@ffG$i(?_RMcig<9srHcFfSa z&Auo&T#vyZg#{dNU8j*AQzqc=-uTTuouxRlkshNS87x(wSFVe7Ovx}9SRJh6Q$PC$ z=s#i00Gt4RNDyIr5sWDrD@Ybp?57_XN23b7&aDAAJ8zbeikr4jq!?Zh5V%6CUW9~@%SW^v=T|) za9RKXI%dY%fvM#F?%d4A8ssp3|0)BJW@WI^|I5>!!+qa}WVC(28qirxX|;E->oKWC ze-$Dn;Y+qcRSapxjy=3kLi2txSs>{yg-rKiu}{EEw0&$P^)LrtcM&!)YvukEied;| zf)HbP1-#9fwgE|j#T-eRxi4~+ldCH1;^vf>bNT?dLxkl0p)CXr+@kc3!qDhPS2F)^ z4F3?zEM0ZlI$hI;AopB289@!5xT1M{c^O)80=yPJx^O>f21I*Bzv5+}1&Ve+T+-Gd z(0u?O(OI^tW%a+#*CAb2XKqIfR`n-hTNB%bcpk;`^J5Wr-bjvf{cfZ$tILyHk!{3j zMNo<#|2Dd1(Kf7F>yWgN)KExxs&qd~I^_MGk$W1cF<&kJ=YsN`>k5i5Cxh%;1l1$; z*3rfTo!KulX*kvlJL00>yG;Q^miKVS+?~CEbc_AJ%=Pygwo@53-5f1S<1tuRyA{HR zs){K*Bh>D`RsL`gVsrUNbixpc$YoZAJ?=sMV=|i0TK#=PTsO$0CvBv=XoIbj80Sab z10XcUJX=EFwa%4Tc&B)Tpg)7=w?^UWLL$9?QqMz&CN1?^kHHo~zQ?m|e?PIUfyy{& zIO+kVGZa|6UVuQz`H{wSc$ps@?Zx@RvvrU(A1FZuu_x=z@wQ zVN8AQH40f-xs|X$NRsrT#7EddRsWKH`UTf3Z=_G9C;yoG^HtW5Wy6$9fp3B@)A-T13DbapuZ@&Yj z88u(X=(9Ex!8(RpSW(i)mf||?8icGCcJg%dR2)Ob5gkC?JN~-pmM{uz`UdIb^?Pst!bKCpUf^5A~*eT;}aKf(WdoHC1$o~{(# zUu5XI>h1M(ldRfyWLR!R^?_A1B`~n)`LCA1=g@egCM0iJ!pdOJBl_0XEG)-B$%eY= zWS?Xvv@M0^c@Z|Vf4Yb~`gC3EHfav+bC2{jhx7(q4yb1nD_3aTuX>^vEsnp*(;1_q zL?c@%5V^sc*DzyN|044RmJ)1%2h#Dv+gCVFaB7|(;R44ZQkk57*Tvm{M*xCds7R(b zNZ~MFsVGK$@=0%;EyDvwwd#!ihze+3{=#n6o7Y$bpAY+@6F!O~%{sU1JrF;G1`b4S ze0J1=9-~`lpyE^lwV^Xi{(N<1c zMWj4quRi2z_K&p!e>nU5>L%y;a=U6U_hLdHQhA9HhozTcK-32hhZ$v^}z3 zM}SM_^O>i2U_0`rdDOjEcj3$q=+kK@pS+&o{h3zIS^XL)(xO%INf?Uo!RphCxwjiOs0~n&0ceGQdA^C zm^_f9g?L{QXL^)cLU$lW=FmI_F_NfQFrfeA|6x>Z%8J2;WYBL57Pb)cYfg&`@-*rV zc(1=UlF9so9=1jSPBqg8O2-h7NE({b(_}R7sr{aSoY}|bFsj0L7S6&Vl_g&dN)dDW zM)qBi(}5+`C%PkGp>#f}$HNVcN)ss!&LerG{n?_507|M6EaJJUVC`V(wTR8cBdXu4 zs5J2IUj0Oy7;ZBz)BHBB8Ko~R$fE}1%K60O!4OWrt31VYvV8pJY<=1UG1xKeX}V=h zdIA@P0kTIRm*hnMJaHwH?#VYKG1N>$RVUjkP)#J%BcJ(`iD*o@TQ^oef?}v*8HQ24 zm;=(PTd+QJ3!hNM>zS)v&4m_F#eFrVP#Hr+yr%ZOdugGKZJzT%Clf41MC!(|TXk8{ z?7%#5ZX4yXT~0+|Hm=6(nMkH&kk-cwcPlKFQpRl9&`uydEWt2?L-&$a%V=!23!p8W z9+EYYK1V6CpK24ea(I7q<=u_73poDU$%8%bwLC%%U$zt}|Kw+0er39R;QRDCPGS@W zddODe494S@ZE@x&*}fc8!_VUW^-Er$H^=7g?XawzNqDcRSbOLB@S&xLvkz_QW`89Fc4XZL%NqKEnpX)y)PgXJC>T^$UQpapf{>XYbTE2&V98Cvv?N@cguQT?nS z|9D{HoZvMC^Kx%lagY~vU?m4i*AMCY)-|O)Nt2SD#rHw;;^pdxrKz$K;k?hFzK|)R zX6?r{5QR+lpPhN(=;N94XY1`{0;DWC0;1x56=l>T&IPS*sJ0QLKUkFKi3=ED=sl^-mc%SR7J>|; zUC5{ig;$T%4uMv}EaKVXPFY%s>9F!BZID<4cWB2}<7_nhpbY_dX^}DeLqG&6J{jE#=!ElmubIx2l?N7}X`7fT1$W$4exMUXIDC~=nS%OB#8a6jJo5!b4M**d^#DU4CtRB32QdXJ~3m1PWKsEXcog-UX;(uNdY zO6?=3!00ikt$k6~jIlW7IOeH`%FC$D2mStP93!Bynic;CT~0dbys?o&%)-7*CHAg^ z6wS{6;@|~I9&kMPiMxjO)4j{iKoZ~-tNf_&A?v0m-~ne65|rpnU{!={_1Gk3`Z4?M z!2%U?YK{t9y~PWtW*tN`o>ZSF7o(@(F4>bP4m^2z*K zvNwGpKXa?-f;*O(ZQVUn1#>_!j26!Qgj$Ct76204k$I zR&FooY&Vv1(&5mj7#Y*7x2B>78}Sm51lu7w(dHG|6IE-*_AkP=ozJD#L?epock1~z z6X$q{@X7~%84_K~!71mTl2rNBCo*N*m9oLuC3~-wo1hr=k_64O=ObJ)$HeVYO3#3dAeB=^1HmwKdLrdk4jv@&@H{@AUQ7*s|Ecq+pirW-#M!GMC(P zyn$yPJU=)$BpmvuKHquUm^gpxfzjE;#=kva<_h&N#Bm6G9Bf$kLuPP&8fgl zr!D-x$Rauy+}LhYjF(zCM|mIL=!l_X<3!H#_ABq-1Jz^$f2L69n!yG3fAfOv+4DQ? zej?%JEBx!YYiO5Qpe|`nn#HX1wu6P1rB&fQ6%>b$Lh~xuDBXU>lhbneiL0>Bd42TO z;d`AW8o?x#>f=|eReHo=_TIp%eZ;Q~!6Qpq@0tPDxUSu|!n|L!SeiD1{dhTI0y)Q8|0Drym>UWpKf+HM&GWyviR zEY`MW5Y}%K025CPTM;P6NQxjKo3Nm*6>epsd4fZxVs<7_rR zbb1h&wXFH2cG)QZJNF<=$ef>H8FS=I_|UN7DC&W_?MoP%zQA=sVn~k;V6RqBlyPB=x=ACGhQgs0PKC~LYzSC!6{-5*B!k9FB{nGOBT1x?&56LlV0 zRv{83;0oj8PnlKfjm|#Z{+(q5vI*v=@ejol&cIVJc`2q7s_)YrBYO(EGmy1IBkLM#?>o_xRd%>fB)jv$>`nJxG_Nc36oyP&qJ^GWz*R_YQd47KpMQ)Ye zR3;2_Gagh0K&x77${RuOCFzQdT1-oID)4W-Q<8XvM^!zLG3Y%d3_Y42|NLft>zDtR zFmB!6rDjID&i%dR2W6ieWV!IsAwvT5lm*#j&^LmO_Fm_-sNTp^qFKKdEPTo02QndT zX=ENx2!}c_h@%ou6%T*?qrkr(o5E0;yhI@u2ffjF&x&0ebzz99-a!{I`Txeg2(1Da z3Cl~P$5-rwKWq&KlHG=L|1c~dT8Xs5N~-tD(>UCn9Q5_xLxNB&RsEebKW;j#R)ONg z>sC3i#E=d;-#4g|^eY2b?O@MbB@xK~A0Ti$=9gJ*%TfFq2Sn|scJGndFwsBR5 zQb1{B_E{%RH{~QVGeT!|2^0VKY<(Z9YEeP}*0z%uriPas*8|<4!-!6Mr4yf~fDhb8 z-GoLpA9^g2ZAIARQqsIX4S%ST;*i<+2G*fqF$wu$NN|IMM$| zo!(3EoF9dePUh?%K1}CrY;(LTSPSLF3i47H`{6xaU+RRB|(=5 zaX?e{;1|DkNc#bTO-+U&lwUkCXP+_vyJQmziIDa{To3=T)7y7Q+Fy&HZ7MJB;*cw@ zMK8jBxTj9n z6bXCqeF(#iGLJqckvl|?+3c(Gm9Lt*W&X@bTZ~8~0^V;HcOSt3zqBt=Q|NP$%>t{; z;>?i^P@8KLxY`nQ?ceVF1B6b3KelR@4vs7#kqx*bRR(!^h`nNED7J7%l&u4w1=YPo z>w2XNv#AFEH_$@bAcF;Ewp@oQ`l!mZ$nKDD;!M}v8UAF^xeyBfa# zsp|wpIUSltB!pZek~lHXS&Xt9{Ns+PPM|HZvrrJUD;&!54RRW`J=t9^l>Wz73BCw9 zc+q2Bp93wPMu+S)CIeFbcE-4e#)isR$vk?Yzt7wBJ?ITKmBp;DP|SFBAy2!F6l>Ge z(MSP?*pSvbkp&D2^bw+;WkN0Fk{Zs@av~C}B$VWo+bU#5O5<`I#%pb^j=zfG6?V@~jHJ57daEBo8`?QnA6AP2w?cMG#Z8YC4 zKO|jWTHbf;TyCAbrbV?QBnA(RJ)|vZyhS8rb8;+0Orf+>A<($mQC?}iZgd6YT)U2T z#_;Wol!T+#1}D^;A4>1sAYSnJ3B8KVO_}j6y#mEL1XN2mdI^oFk`W}F-kisyhGW7) zy7;Z-^NDYbU+|-Y!7RF&MlM7fV&YAu6srlQwyV;%CzUuakR?!l)=491od`unyY#VF zx#(`sya(JnS$Rq&0S_}A)YOP5)ddHeCK!`ob#5w~J$q5ssJH%q`;fZf=?cqs!jzbc z$*(V_863>J#doGUzHh~rgEcJb65c52rJ&wQf1R)0)Vb`00I?ztC9qoj>)!I>9wkj? zbc4lD^S=zI1LZySLrTe%{?Lmq(gqln5|)C7GGG2tKa>7nMkkc?uD{Q{Lk5aUSt<1e zr0P-|IGxq%)xh?%jWL%JI|VFv^l{u+eahO4Q9ZG{rC91Q6K3%xg1YdtE*I^Q~jBJMq7>F8$ByIcKnMbo#jbbWO^ zP()5=1zF{}9}=Z$Dwzmda=w_^y1`lh6eX74-*1HB({L6th*{1tvo{iR?lA=_Ooxtcd%s$*y{Dh>C#R+KuT3R<64wQ(Ud z7_qi-y+Q+pBMX6hB)ON$sIgW02RFy1G*p@ZbG3ScK)wocV&Z&SBz^^m6^s;VNRy{q zHF~mZ40ME*6fx3&8WGKH&oVhn6ReS9lP9e)wNGH1vG6BHsxvU`p4 zyTk~c6_l!y1fh&RmATBoY@})#akjy2UJq!6DX(l1HwxGCnOWs-xv+p&(+P}zny;xg zH1UhGFI9N@VZ*x!cS(|&Vj6A7Npl}9vUsOnqsTbssY^=BNmuwEi9fT9av`@2V#ZE| zf(?OS-Wa0^F#Iq<_J0{yoDf>U5A74afs*%FRv=c$LkdQt(ObyxTh>oftdicZxhl*$ z&_71i&>p-c0p`2E0?&#&h;9jtUKaIC@YBY|fNg(hEkQh_cV~VXjhM3$qXn#x!}gv- z_y9QHzX-NS2ClI|XOG}~a$!avqun0OiT@MdK$y?A-6sWL2zpGHbET!cwft6*snvL{ z5$u%GE3bw^Sj|6X;SDPQD`mA z%Z_btibL>R`UWk0-+=hTui5#($oJn5OG2xLI3ue!fQ68a0GuCX8ZS&#i&2HOIsOfk zL+=c5p^6e*HWxwJWEli|yk^>rcdvU#(q-moNW%znfh?&LO?t3E?L=V9V_!R%6n7w+ z@po(BR!Y;Ww?VF5<1WnlT%Zpr2Q%3D^{Xp@D(*z53x%ArceE20=qCcwy9P{V%LHu= z_u_6FS}DkL0)llvY{xXoiuk6=myh3|hwGM0M?nGtq!4dADYq8U2!LfTP&Xnt<}Y6h za?yPTpw|UADxFu4os}DRa=Y|1!*)?e4S734FT@1JmKm`?=D6M!aGCH2-_|v%vam;l zGw@9?bq%g56t=zpd}%E*Ao&FXhQoJe%SSehf+VL-%e_kCwJjj}#1 zx&oQIzS892v}M1Jw8TRm3hQhLk4~u+eXi9=4aAjzRNZL2=IFO3kvAZnN4r=q!b%D- zAc=LDy!eow7`x}8p;u4%>@tbWEqJKaAbJ~kXjkzB$XbP0^K;00@RD zvhGKl-7V!rtf1~n3sR-HG3Agyy3};R!6B+WMYp^sHuR+hu1&Q^BvbU;@rUUL#urII zMy-3;8jIe$R;5v?dbyPv7EYK4h%gVY%o$}Yh$}>gM#eU$E|Svx9{m5*l`*RMH>m||b>0~L!Qmq?j;!O=a`kRcJk;0RdH*VT8Ok6#FY zW`+P9BhtvJIV3nj<7o2Nw*S;ID?$pTz5)eAoNVnOF||lqv<|T?v-CJA{|w6zoU>na zpI12t*0%ei*KkY-keV;Bm7n{um%qBijQX&v*_vZxTPcR^p02eHBhj^bP1a8sX5E}4 za-Rg^?zFG;4-sJWDRvkq_Ufl{1V+85REeob?*MQQRS#TU(^!arLM)#F4Y>;k{gIG` zd;WeAnJNO|s{oL05XlHB^*WzJo#PkgfVN^ngrE7<{Nxs7KL6fgyuf=!BVV+sEAmr6 z++vY(4E{(1XeW)OW-q&I@;W7_a}W}4v&$!qKXsD07JvY!NK{)#gM*KA4b#7d-hs{% z=cE7^Q&-t=s-))`_r;oJt)%$qa68@_Xzu=CPOtHHWV`N}*LX zMEf1EePKK-0|$H*4mij@QGL>1%T4U8msdEFHFR>KU47GJ8M1VPn}3Ei2juc;YbvQs#>x_%}Ti33=6dEDr~}kW<&yqa?QKCYgBn8p15Ls zqE&-?GVLk~9EX-HOUo~xuaRs<15Q{UAUD&ud7Sc#iWOq`^Uc3+KVv&VN&}lTsUG7BCRAY?k{d?f>cQ)UT@489Xl&BoFqJ6WmBryvD1ybIlab$f|0zozq7?*Ur zerce8uFqXsqa>t60?`@Z&NJx4eh15!BHh-x0+NL+{Lvt%XB6Y&*fDoetVGea(uWR; zQ!{YhM1ijL0|U$BDGgpBghxZSI@AQUxz*`(Vz1^1Gi0yCWM{N;z~3lMTD%ErGk0;k}vmz%nI9chIo4ZSDSXcDC@qtC#92k z?eiw-^B?&K`&fSN0kJK7(A}<4sB9?LkwGDp82a`v6@D0bgn9|X4YH*=&X2=Nf=0x+ z>55%rT8VEUD%g^LX8cRGQ`S`tBN_Dj*fvTkpn9Fmp2c3-A8uyrNfEcp51Gh3&&p{S zgR#vy?@AQ3zFAUYps60vW~)TH8S%MW2gp5xbrlDm%A-5kAm{gsvxQ`~m*cWc%+UtX zgtw4sFKG}SxdzOTKfSU(l6h%DYqJ19!UE9@-#@P{SI2R>({rlMnP?6kNs@4&{*FqD z<_P;v6J7HNf?Y~)V>)lb=K;tbt!{u#zEZOC7lV`%0@Ti#d_L6$Tm^gV+;KphAzO<* z?`@GQLZ!YN0yq1yxK{gZ$sYg@bdLeDT%@_c4w%cf8c}(39lR{wMQExs|DhYV@xK4r zD(~ZGSL%eaL_^USeWdNA0qKHA5V-7J!`V{KPKFQMIw0(o8~rkHe|5PlFKYfs75T|^ zVyw)~F`F&DLHUPE9GP+k+(%+V8hSp0ZxXWDe%8NRd+JpM^h1cO?0D3Zd3cc#Dl?JT z5yK)oCg^JLII4FC0OhR>iU47-!lub>%;=`>)dUnvkERZ^Q$m#MPSWINLdx(2@^a{Obz0zJU!i8sE3kVk}b%p8pe`M#gui@mT6-XtM7DXGp>haho0 zW%2y^{~*r&3)}o2?M2Om*#i^m;B}#Al(CrQMTM#gy3CSY zcc+ms4>W(<40Fx(B1S1ndPRjFFQx)SlaL-wMim@M*T)s3lnUs1xa>Gv}z%C{gB zkA8is<(Xb|d%R?z_uUU>OD{Yr`oC~Sbaq`37y~Artp=Zn$N9H=N`g^js4E^hoORUy zalpCg2~+BRg1%qlDW2MvbL&7pk!LHx>ibggfzTFiY7zikxOBBzUgU~l5|-dh$m>^QI_T5l zG0X?{sK_2itXYD3>A(TV^*2N9cRgH?EP1nQ(+|5yk21ifGJ9%^3-)^$0ySFg_H74h zouT%k$sh~e%ZV^NezcamT_icui0d^l>l^lc|J@j#KGth)@w;>5)vzO5Lzm`pGh5g% zJ`yFISuHb-frhxz0UD=J+bewRwb{6f0);p$=u>O&x6a!??fzVUK@Z$=A!stvdhPDM z$T@ITBK=t?4cbbqX-`WY2jP#*(0RdhCjjA}oap`A4N@V6?M1e?|i zmXzd^1%k)#qK=3=7As*9=kE3el^Ap52f~vFDw;#?Cj*4po9mCxg$8oX|A=)Qs_7l32?(lw(?~9ptwDql$OYEx0lQ(2M=3!V{a!lq z{~wjeWRM)kc0KJTC@S~5B=~-8#}}t>n1-AkaFiqu@6)tT2qs@tbd;r&E#GWR#0R7f9Zq}R!Mr|;x;!)nN21Y0ly*x= z=Kr8Rfyin5f{z>)s;RKUC~5(uRHe7_-(_%j^#rqaz;H_D&=H&+391AD%*R1Oj`~Ih zXwP1pM<`20BI&q;qWK=JOV%Q8`m)XD@zs@`Sty@HW6bPn==nCy7k7~Z>33Jvzzu}u z^jU&H)=DCAK=0*T!kqR$aP;6lOYV8(*w4%Rl99bsw!WwZ2z^zk72I_3KI0BEEuMHx zq(-bNg5dc~I^Gj^nJkjln6y^k^u{Rwa26vnTrs_hc8g}*zR5ebQdwA+hFG#%Lr?&az&Ks6c?B$89LaY)2I!ECs zNB>G+z3e7V>NL8-3CMbf0+H{3-2P>>tvmv%OVbmiQC@!IR+6=DD1@uLWuxM}qMS(f zlRoMM`%m4QEy85W7H)+Dn}Jdw4y+CQ^|%{d;!}i7K1#@OWEU>Vp~WKg29(X)$3N7p zlIScBPK<4tBZ?tG!hA~y2R?l5(3euVONfj=GIJu#%Z4e9?t<{dxXsRe3{jFgT0S5T zHqnnoZLJHXo75|_6Gs-eYnYx05+v_M^{12erxRS?(Poq)b2JW55%F!3!jMKsuS*t1 zDnvw`>;6$PJ5U9~HDyd0P``#AWeMJ7PcrjOiXeT8zS+2XBO)SR7%t)dRcLARj#Bpx7Lx9SWD-QESz|U|Jbkli*nLpywJJ*5EG|Gp?dtgJIIZ}l@baSCX#PFWqyK98!Hp)x#u7sCgcJ^ZPyg&#k zP|3Yh14veHMMsEB2#&?)?fJB_`IjM*eT@G{_XQ~&ekIgn8~wE#umzq;Ff;s|PB%J9 z|B`)zz0C`mq|7uz6Q^Al zzzQY-rSf07QL*ZT4n|OM?={P5OuY$~qrj2q!It!}!hL8LFTb^fFq5t&XlRzdjA?yB zwiIWLhQaB-+a*W=?VGzF$;1iopW*;v`+c&xZXA4c_Oid%hJK?c(l~NZbaYzs5}thJ zg|^F<`@j^_YtW4=u)U;HssI8&{l8Z%kR^6-3qUnj$kW&$n-rt!N$wW?lStYUTWG5% zDDm5~=XJ0Xr->qD>gcS(NQ=x6ErNZh(#ED;Q@Cegq|K$hY7EHOEC;wVXdX5AKrEevmA-~jfybTOrm8n)Z2r=AhGSRel>YG4iI!m;18D!P?zza*YozJt&rNji%1feo3@*T4E0*Z_)?pb7C?@IR!{uHV1(c1-VZMJ9(lJQz2iEKN_q6o4=3k^fkItc&{JT5oDDc#p!f>8Ty z2V_M3uyyiuie=P(skIJ#|7me%yQNi{cn|iPY3i1wrSj9p%>t%)mug+cJ~Po$b9hum z-*ZfuOCOh_j&`v*l(RYpc8RaALRHO>AP`YN=8c~_72JbGq?`;AkAx6u(kGvi3?yP) z#m#qWf^C3q;^mbEb&`XLnEHrH&(?^Muw`?`t?-dyV0w54E~-%Sn^p|W^k23icFb9V zHz5*4ujN!WywL?xK-P9I=-1_U&8D5&B8q*_T6jiY|{kH? z?C!Zn*Ai8IW7Z%X-rL7$=ag8d>n!KlI{acbxn5f?I(anmMsR zGUP>a4ur(mg)y1lqV}g;o$1xh+2%~Fa9r-_fWOms%(>XPZx0Y6P%b?eeNy%8X1Z>G zA;R&V;OBULX5#veFWZ$%WLFt>a=cgS+UIQg>@NLMf7{VLY`okaF&7AI~>HK!h+}IX#DV7#*oSu!SUBi@NHsk;Y`2Q;v)JTF#NO!DB*Jl#X zAMihJ$1qIo=Si%33cl6ihh$PK)f+j9tm5S1M3h@o)q3Dj$H$#h@Li%w&Z1%i{ds9z zelPSSK~A_S2WwdojU_$DhVNs4uAqlI(24OXwearm6bcU0)8PvK8@zZ$lp2`bP^VAk zu8D!h?SJ8`v*piY1u>H1$qE$9h#d@K$&=G?})~KWe^oLWCwZSWb)93(&I6$?Zx zL-RhR7{{mvZ%nWXk?K4Oa995OJRK*=^ca2pFVpm#UPmY%?$+Tmwg}_N=OSg?e@EQG z1J!ImUeSrgJWn9^EV}~JbE_Y%3vd$ZUMv3T{4Cf#Mb9=rpr0D0T(T=?hnP0gr|AOCOn?Up1jbrw3Hyyt+jKQ0!miJYKxXrU}RCI9cJDh4h zL$2G9H}{`K;~H7PH8;@9cq?b+pT$uNi_tP(;m%I$zKHgV>>LO>^y<{^vIoP9P;1>v z4h5p$tPaUbW%dNi$m?)2Mv4L2k04d)SVh)l0Xpx&KKk$#89E{wHTQbDS7;}_I0nBG zeD}hP5YSx86b3M%AgE}ZB&0Gx6vV_L7GtZQtWWgy6vY};Waqri0DYYGlgbh6i2o`z zTL`?Tst05S{!9CN@YIguv_L(Cw4@UbtL&ss4mVmRh9389Y$c1^T^7S=c7OV&8;wX~ zdd$J!OD90~g`9@yx>34zrYCr;1;5P?^y9aA#eE1mvupv5O843Ux?XMNgw?LN!MHjm z?l_+b6Haw8|CCTCJlR6)wvpwyJEkSsc*1Y$isp95Y#06)_6GF9ncs2`^5$muB^z(Q8C%mEZ8`ZdX)xq zPQqsZgs(lhVniE7cGI-H!$D|3)b~ zi=SVls)Zx-)Z(N5mfOx7Ss-+!-L?w5Y0`5)@jS?lVC=PwHCLxD^wf%fhx7#) zmMj3!7e}{WhW|fkjvTBoM}&}3n_~aE+SJDV`5sO{D}f^@KfD8_xgaf^y?zb>N(A?X z%D`@3MWO;2l`0S~z|cMrbrP1FBU|*4U;4}Odzy)9B=KwhZKI2g+~Of3z6*gT07ZmWdTxNL1%T*f$EoeiJ%@cyM^gjMDPf4$JR zv?EnUiNGnG{;Vub?h{+PV;DRG*J_VS*Dhj?_P^F~DO=erH;9 z$G0cyE)LoDBpvOCTWHy>Zj6i{;(%lGy#ocJEtyCyLoc~MXVj^?C=D-2g_963(%SLU z;Uz`dpeb2RUt&aNp8<)xC|b|p$*DZ%qFLUP`CH5i7{jvYfecOeepsE=QsFl<-nRBd z+r}oY%|kFBU7IW?gs2eOQqnu1ME5X->IJwSpZ@~!1Rt^zG^=PJn{B+Roxt4JR0M5y zJ2~m%WZlOpv(l-k-;JdE7H>~85sU;X^CF_bCeBPP2cp(-@T$vA6$b3{JQV~MZFa@L zlw$`lIY35;N*#0{cq|@jT_~5J+$5&qL5e!u2?ZSS;XG0lz5hDWt~&>ubRsf6rQw_H z-(6*gHz`D1s9sfk`9asL1z<`t zXY17s+6@bitO&Wq++9t61}sVyfLaF&_m5UgVVqkpFNarEf&uUNjY^D#!RqtK5u%}a z@?C{gFrHsAPSanH>c12IQVk*|*46LUxewIN;a?&iAX&8b8W-_&dL)9WD;0n`6%jx& z29q~Yc4lZ7^22kJ8_zeJ>LmD%xqc>&OosTkGd%G$Q2!}v41BLnU|IZr#^=xjI@Rm> zU1FMrW1I&RU4<7#Ox_)ADpwphwR*m%a(e?!M>uin->aL0#$}je!=q$jgX+q{9X2!9 zjFW=yK?5^LRoDZ4sMqBQ_-4+kXQ8YXY>q78XGB+hkYvEiN?q&aRo3dL)x zQAL*A65Euf;s0230c?~LFTKG{k5GwA7K^P;TosVHgIW>|$CWh!_gu0CFbJznT&whcXcS?O6D8HFOv2(a z8k<(Ps`C$y;I*Of@^LNSki3$^XM;e|G-WLg4f~%Ieb7UEP;+up*2Sc=9^Ks%Zs|@ z_nsiffzF^lSyJ+iqvc=>Nu*@$I2A*u4%tp1VQ+P(zS;3*;ll9KVq0KGfHRc*j1~2T zg1f=p$wm_3y=@Y=RZMkeQ$%nJPRQh40S#CWw63N6@C$;Ds^?xvrkc}^6T{CzyGWmx zd9emZc};%_d`cd9ee~R!m0!Du0dYh3RP0ETVZu?P@!uXCc_fMiPbC*>8h?Ystq+!I zN|~b%V}nne5zJ@$WzM4#*Aqo1f5?dFzSdTD)uY z7aoI`a7?Bd_g#_B#H}s{_ge`FKiLv09QJZeuQb90#K^T!2ia3JP|4bCaGxw;N=rnw zCO43|Dx-@OluGhr*LlRWr^X&tAtJ0A1Ki3mWOq1@5dfCDg5u=BpEMfZ{`4sCZh`i> z5lh`~u(EF-o_!3hEibnY=hwWdT;;#z-~8UvlWVV0|i?ISQxQcOi zy4y+E>)Cx079tz?5H(wWyOz*kP@gCNUrB($THX174C8^+Z&X27Kxe&<^SoLTb8MTe zyGnOPn3hyWCZ;mfcrW3+nsMTHM!1B#QCCo{Pr14&4MhnxCzx8oOR*DEFF~8;^n>@R z`c(~y`S?9i_j zan*jS2n3f>WgRcmA0QUrTyw)q5*JTFdokQX9h@<>iPk=T_no(jLV|;-6G&!YUEkx` z9*-4l-DkqC2)eM7Xct5q&yDT{77U?Zq&bb+29m6ov1F#ZGlAXa7e;tztAD*K6m(1+ zg62E)su{}hH$O+N+59)c-qseAYFNO0tYQ-)cX8z0 z9LhF8rEzH3A&6{Ka=G=aw?jOZ_VAXEWT4C7`{Eyt0JShea(6y2}VN6fc243{svV0Bqt`~tnU;OWo3qQST* z7#zxjw4aitIIF;kS+~jxyUHFB-RG(SM`YakUG&N<{$~9*ccz_SZ2CdxEH%Q;`p(`) z0oU^Dd(S9Q3xp8HlW7?4IR!|WIkUKz6~lFf74#5LuhXOEY%Sw2nOZ%5u>+ehi`l%;C3Lbc&T58}5Vv7|+UbKx1m%L)R4v}jwH%I<+*3h0dx z6H8h6Jk-FL1*_+1IZMIlcH-A>IdQn;QUJB(qFfju!7pJolM)L8Pl8Db7_#ng2+f{T zKd;Z2kG1R}$)U9#SVElrZ7Fa-OShaE|3v)KkNa2)OXQqR5!#zr}5MfFbi7YK2+HmLV-Ljqj3`gKy4LFR4|?{9Jm2l*pCR5n#s_gB)E zhnYp@?3^TRr@|bYnIJb_)LfmV7)zuM5|+v?c~r6Ag5vI8u-j&0kE-JSu{HQPU+SJ%%*YF!|+0+!{UbkPt+pWw1@`|04VI_?kTY`jsl2S4Y4k-Q4?=~oC`G6w0 zZm;i&3gWuGm21P9+Lbq+`s=c4xI{@GNF64dCBu*CFgNtQ4J|w#ao&0SQaMa@@3zC@ zVpk1WUTyb(6-DJ*poH@w;qKjFx~KOB0KZOb73vUTj^Q3k{_a6=41*Qs_>@NqEjDO? znH}S=R&)la! z=f)9R#)H^BGE#@7C{BdvFm#B()qVykCZ;qsR54dw9xTahg+}gB&QdH{wM!7FNM) z7vs(cx+$9nhp{Pe-f(1RLmu5~`Y;E9mk*v$Xf@{tszm zk7gXCsgZpOo~5%)W}lRgH)WKJL=|W=lG@v;@2U5FS_a4&1wD8VcxgfoiYU$Hkl!8* z1b-ve?N1-8_U@>KHai^$=8#0?d3cq=HRcN``AI+^B)DdX;;{+f>Zwp+dFAK=2(z*# z>G}QCHdFK0qQ^{5qMnao#yP_ziGZeM2du&?5)-7EfL z*ap@Z{NxiU=o0A6G4Njf67onQ0a`VeX+#qSOijcK10MpA#WYdOJbVxYs0xO9s97`> z=~H$itP^C>+i`}|oEb>e5K`nUd&GAU}Y=|rdJPQrf6m!7S5sGm{E8bTV(&O#iWhotZ zAO^N36AK7%Nn+_MnmUUT7=4cyw#(mLIi*vvL`B==4rXbK1*WYlPJ#u>8?GFbvd0As zzayRXKncXdh-Is?74l{g%y|D&7ljvMGSFEAG(7lWr{0s&dq4!YO@c%ea3&LeQ?3WX z(2^c%F>Z*HN5-^R*fX~d_|Ub&u@>bL&nI_@)qaN<`OzrjQ<6M>(?iDi9|5T{q=1`x zfx$uNYO1G*Oj8V2PesmS=eLf|Lrca4pkFB}K-)G4sU0o3D>WdrU7 zc7sc4SGkfBL3b0R1Qq-;`9-0X=5>t`Ke*u*<>1sPnnBE3JOebIZXK91o41RjmSRxAevLX+LAZBf z+fi~E^UWY2^*XeN5Q{nye>TlIT9HBU0wgDKkZq77x2=zj(e8eP+F-9K4uLIh>TrvZ zmflSNyu3J=$ODI}^B{|0LKz4{)r|bCaFnvvik1k4#jCWK<`Z=y8cYhUD9gtDn^mKe zSI#GOMFTT(HW0m6Hio+T>D%2nYp$>F>;vHOEg)y>)`-butn7>`Q#{~ejdQD0)4e}$rawYp?_=PiR}c#O zv)mvxEAqQhu_=S@;y#-Wja}`6KNXgJuo2y!!5QwNSD&%$K2GT>{VA#OuQX(nUaf+| z>KQ-7L9Sdv$kmJ|a0)&jLG#xM8=+~Tbv0G}zSki3eDyxQ4h);7eY#DKXbQ0Uq0E5M zNOeRg$cQ&)Ouv1@+1DtT74qKISSxJ4p! zCt6RXV8zh_U)Lh^T{0^Bhbu`?ljbI)56|I|s|BOmI#BU@;8z`(y{!c4o7B|o`kk($ z=$7m3{s#@6f3@azxo%uycv2;fi{e{`QljW2;jMw#<&&hGLWGTynC-O?zd;EX$$o32 z5pmENw6VkPGejW4S+?wOV7T6?4xrQ3F4}=5VU=0-aSSRX!C>M^=m2Iu*Vr?coqp5e z${?1j%Y8Eg$>$z8mwh@4En>~@ZqnSRf*Mz$=i(;HU;`y~l&GM`jn?IlvV0Wz;^rvd z?F6NV&U>vC7p!*F3ZCWvvymUO-}{H|QR*=F#*+RSm;NdA?PA++hxgT3dpIr7Y4^z7 zy@+|@s-;)b+aT;xeDwoC?gqhCl-9$TicAAgUV%h#v z;4LFn8hIM46#QzqNMm`OpI0D6ZC-$VCU*SeNhG!*I&w@6n@GhC+)jnxJSR+-hFP2$ zUeS%WZc%~dmKnQC+Rgo@5i%$x<8^M>`@l%RT&g}rx-a}t?BlfFr=Hz6KT<8_HmZM&ezD))zdJi)9Nx+_ooNC51=xT=w5MsWQ8SbYqLh z`^`qT!zPi)4v0Qt%OffGVzT!=mJ+FeT27Xe8^1cXkdIWh!@p9p{R}2*Ohc5t z?qKQS^vhL9u>bu7FV405TEE+i4XZSN)M0IR+^D?Zv!^@--tZFj^+X?Zo7WH%~uS*cpa<^U@>Uil~wtFA*A|H9ymx>dUVvxa%}2*BhRlRPQ$LQ16i z?GQ%m9KME3@HkNxafcNdJ$pFPutxzI-kQTeyac0Cf`O}vZ1k5Jnhk8Emmf;;q1Afn z3ha9(f%ON#>G7r7`Fb0PV9=D+Uac@u1J^scJ?DLzv7{{dIW)-=9uD@+7C2Ev6S}=0 zi0hP=I*llj8t8=*ptOgK?qumVu+Z*ytuWO0j!VLsy!WFFQBoMegL&S37fwmLXfRKf z5*kTI zgIDpXj#1A0R+SJPf^>w`6(*}$Ub|<_pLIF)Lk3NlG4*h-6g~xoI+`C>#WQdFn&JGb zbmzF%T>L4nm%Ftj3PkGw5$vEox^nV3WuWfY%U=1!c1=H{OZ=%G7^|2>v-L@L)lWEv z7tsdVR#W&%7;3WrsMYvFA?W2CU5Nr(JSH;D@71mIVcRs#fQM224y2HqHILPLU!=a( z@7D0r${v=?*3vhW3t2B9sH2kNyI9r1qj5Rw*QjW9GV~}yDRrWZqG%B8B>z&F=smJ6 z2U*212&G&D_W41p1aD_uchzQ2R*`T;gguL=bPql;iu1l+aRjl36$TlwWOJy7wGBOm zeJt;pMVb>-E-5ePBZ2WrX9+qNpXC0#rA)jU8ddHRoLHA{Hzu8( za~pHnsjW)3H|m0SdWgXB!b7EJ4OfMDSjfXL5=}5Xz3_cI1C7k6qs9`(0~#OOT}Q7q z%oL?h+3zqasufIik0M(Tb^M5~(XKjW|7Vc-GeYb4%yq01%NKv^K)Nk3X4NzhQU};$ zuJvAby2tW*%{GT5mlzDdae2=$rrOMN0C>$Hax~Yg78xa0WtlLg?flb;kJS((X?xT* zSvk^vJiN_Y$5*%NvTNi}e3+MSh4EeU%nj*K2hSna&4iX#?Io@H)e*a-={Sn-G^YS9 zuz~sU-j5nk%p4>D`#FYJh}BFEapxsf_N~(?6`~IRhCd^-Tj+s(dUrlv-nFp2hA92s z&)+JM(hKYrg6B@fltb{WmU%DOMvV9+s6GVATIF-TbbnWRfqOp?Ga38uhO^!wv=|U~ zOHf&K)hP9tN4tvSkswHaTZaIV7S&}w6Rcv1ph(LzBSZ#CIPpV!GBH2mK7HY()U}Cw zfG>%0BJg5Z?xBw$HcpROIbY-4rZqVRJ4S_5K}lT=&HoaSYFe&z@+9z(9li>1ymfVkP5~ zq%gH*6ihuqo7l?*T?ok1Hc`lCvp@AoGp}5dJ`jx_xaEwUPzfe`m*i-e*Kw0UtW2KiOHa*bIxGwwtKB6UMKXkB|&aP21)_GVjs z@I;X%mHS>=;-`+;TFk_7AAF8^6zB%%GDux1%c9NYJU1O=P{ow(f!mt@@kJI+x%3G3Hc1Bt+og|gACkKIo18VHWicYfIma<^v2|37-h^D>N zQ{U$n8%jUg2KWzJ;Z8Oa#ttTJQ(qs>0wha$4R^J5NP;@LU2pi~Y8 z4E}w% zZxgLDut5;JU5yi+lS{%P8BpfNhN&1R6nMb(*seeaY7gy4v1)HjV=Gy_w6!MG@u9lb z%unR_eptZn3m(ILIhLAkudCdwyG;@NpduITiB|>#^@O{o$e6! zcC^E!BsBuZLir*92xI*Js3ndfJL)OjA1T&2Em-nu|MM52=|}m(i2a-Ef`?Z>ZZFdo zwWmeK(~uU1%O{C zAKPL@76U}J*GNypJ*9O=aaVdGPbX(O=0kl<8+EU?+%khj+kEfTMKZB=dfC)%%ipjv z80rZeKb(kJ4cSaANv83fW-hd4;b05K=!Oa@z9=fLb}m!RzWDT! z(5XULwzYD%C)MMjUbeujU*8w&BI#|H_^FTa zEA7iQ#x3EJ!9o#|kloMQ5&(I^bSH7xPE>JK;+xLAnLz;gzU+^*K|6C-N#y zqM$;q30sG^P4vmQV))>3|A$_AY{49-FaGzHlV=~a`yjPIyM#WmzqCdNBm9iN>Nv~V z1(Bzy;Vrr)AAbm~XRIxd74!@zqig*p$THf!rsXX3eyG&c>L45dL2RM!x=2X|ojBC- zygJ(n=wS_-w-qm|zd577ZmA!?B81b=rg<#cW+nw?ZI~W^^@Yc814?gS%`OS3WSBC5 zyShyXoSsLu)Bx0al;(Cu`L8ZZ$v#&5jfYudS=Ox!7o2r(t-<2USkM)5yh^qmu?s|R z_ixZTdrL-{>9^4krU1vM<7<93IH<5pW-1Lu4syNp04ISI+?xTH6fvSRb`>CCzu@)->`w(9Q`*f z6z#%-)A}{JZ^Xt~T+q&WvVMX>t|SH?3YdskTYwbu%rydKD+WRzZ9?`pb34v}2X!80 zkac!el+o)Qm`_#RCL?e(d+f0N(Bctm_Ap+7}e&A;ptxz^2PKdr z?#_U!yMwhk5H$T-0!b70|K_S1J08@nfoOkl_^LI<6Voz0|9)2S$p&>S01K0xfz~U} z5TH1^oJ5<$zNLjzD39Bf!n9V=SnRFJQECtiYc*IoW6(l+3>Evc24>sL?HTamU|Y8L z!mlmLbO-VG;JpM3wQqg#a`komJ4znn{oX99X&?f#n2dT?x;coIp)d^x3shYcv32Y6 zj1*49Ph{LK`ArBHFt{?EDlPU&(nJr543%osKmd8jXu%b6WLLtDq+rU7cD(Di=BAal;eN4^`-|ClmvSRJE=n1V zfy2i(Y48#Sd%~t7TF}_5QkCjB7|ZNR6^%LboCpd`feO`pk+_+lTC+c?26DSeqmx~O%m6Q$mfh1E%L)EY#L?2p-v9|okwWBCTE)AVetrr?!P?Ym zPIe}-cjJp5M8PNwHqh(Xv}iUzAA47PnjsQe^&u052T!zkJRh6jGW>b+&mlYO-kbL?K zWK>c0Z4!Z%^I`pS^6#|9Wj{*S6?`3yCt zN8l__hhjB~FZ&ENTW(55X#LgPRE~@qrhyoiO+L^VqCYkFN8&4w*V`C9kDv3Tv*xaW z)$YU9=BOAE4eT8e5wqnCs9hbq(8}5K@%@wTSZs{o@^zSXi)GF1+BJjdmX7;7dm+^m zQ3l4V&C;0Le{fNA1R@O~A4FG#=hf<_g##@Ps2iV75{%>Ho44Z|&{ie+V|AAbLuKUS zp&D!dL@iha&lHLw<+}V%fSATB`~T_$=wZPByo%TO8f@ex)fZ;%asVbXz&`cvKnMg5 za1J)*=p*^bz6ANVrG&tLk-Sl$b@C37(I6Aud%d%cx^Zvzoc$ZmKq=KaFR24n{fz3S zMd%Okjm7J}Dr=F`gSdU}6-%pBL%hW^fowApuHqYf6BI=ZG#7$+g7*d$70Vz&H|yK*fuL5066;i%4*1lK0AbJIk6bH-hV~pLyHaN5d#Y9a`WKqkq*y0pq0V*mH8aXtnBPvaZ;zQ3_<+r*M9WuT z_|b|eEJsMFaxiEH34olP#zJcwWFBP7Ac9l1iy-TkhTfkc(%3JF2ol1Zp=;fCk9m4`JFKd!*oR>R0`}^gUmLMZl&mfQFT6?ptZbfrru!Hc{w&|h zn6~9)pg%M~d(HI%5GTr^q5FVW9>|Scj(DN{d|LTP=1&{TJ&_1=5sg9fP-p%2@bAi4 zZ3T)cdVX5N{fCw=Q4A4~VUd}w5pOJf%46Zmzj0CR%vq8UTM^x^X#{n zv|K$KlL$p)K!Fcn$$I3QQ|k;EKE_%yK?q2ho|sM>_!CduU_K7s%~L7qr6aIrsKS%f zKM|c2CAw+n!!>~(()QFl!7{-NiKBp$TYYSL-#y%RRBH_k1SD6XL!Fl;dgdVJPn2$; zYP7-G_8io49v0G0Gjvv^x%c20OoCAi<8@izZ#Pa)Rwc(hytznM|RVg?_| z_Cjtj&)S|1wSvtLdAb?Vg}Nb#?O}J{SX>b|0Q8f_C1=IqI)3P5#J_g^-`(>R>E+)K zRZ|l;SvYjnoju2SoB6BIkN4K5nfc&F=?1`TJ_njkl6|)Qw_Z(vBY08=^PfCq(-Wd| zK0z}LbWS)|V7&z+N8H|Fn9Su}$>t~9)~lP_=p;3^0I!4x0Ha)eGlFtv3%2PQ`d(KcWs>Gdg+MzILbk+RYnY<2LiD1ba`K(|Xl$%EA3r6lgG6OKPgDyx+W) zpcPBXXP}}Xh|Y#{PDTEz(vu)o_j5t>!iX5O5Mz8M!4<>r$jeG+XFbJq!2pyY~r*}_^vQFixx2M-OiWFr~5rTW}8TG}W6 zTX(_tF8T~V#9Do$v?7PpOBsaqMb<5v0KT~TE#Kq8Cq(N9hS0^(JtZlNps||Px#&FQ zhH>6%W;KyRqM!^2XFmSA%c2%EM~k+C(ak=9nW5EqMNB4+y?5o-Hj$%bx0f!b;w!Sm z{O1jwq46C3Gf5A_ef#&I!R9fN&v^A8Y4_U4pFF{$RM42ca^atddUCPEmLS0(%?Eo{ zz1?F3IFMmoJM>UxqcEM$y6g~2h1oER#ZT9;Vo;`T%Dv;+MXuJr%O*xu#qD>19N-Fg zkykbGDvXHD+bKi_Fw&ps=gOHb^N-Pib3hggmE_=;4>)O+SAc%sk+63&>tt*8gB_9-H)EhHvJS z@tI_?V8l7u29##HMSDuqoPBj|I8HQ<(iu-H4ocuO<15|_m_Tbnv(GS2X zym!4J{w2t7&?*$jC7lr}CR*m}YtII;80b0*cb%>&Xn24X_{t+%#<#T@d}KLmI0YW1 z^DugAn4_e*dE>TUT5tK*>q3^wR346=rf&*E%+f$OPS35*K`fM5>l6_>&_C!?8*U5# z7X>Kq^;;~3jLf{}g0W}CcRUHKMEGrIjF6=?a8m{*rEE@qB?l30kGaBoSN${1cr!fa zT^))3Kg=Br0}nuS^;`sPztIq>>)zBn+~40l;EoK!9vHOYWKAni(%9niQEdzas|;E1 z4wuVSdEciX@=O#vcx40j+R`-h(IhQoElbLI?Oc1~(qy6qmJ(Z}9&!k~R$Zo}qg3|h zaNg8A^*-TgQDes0#St1p&@2x~1HEO{A=3fj!_i)g^xqwM2nl$lCXzf|u9!pADc3$} z>QwR*DdG#C*KR2o35W*Qe&B-E0?og(XR_1x6j}!;^7&`-1W;0%cUV_Lkq)B5D}EKY z|CP=)xZ56?8_R1f;6jXe0Hkj14(Ea9fC$>7srlTRFxfvN%LBNZgF^rEfDaMgl?R|E zgLgsxQhQQH&#i;wxcC{-Apt@Uy8xByA*6xh-fuwn?l`vb%Pp-Ba-&iSSoR7A3#!58 z7R^lDEERC*n8e@E$x!2pH#to9gp#X%hdSA#6CfqtN`vSvH=E5)tmkW~y<#^oEmnNs z<(&A9c(p?#rkQBF%z5VmpSA+J;4APCF&n{5evY*C|9Q%Bub$K?a^j?^5$v1d0ZmbiR$!{xk$rs5DaJtvo}>ZWQt1rPqjbo{zkb>vQCY{G6}fba)}#rh z_$ZyL=Cgz&5FeGPa6c~F{~W`_{ExW)vOjr9j6x>32-x;+rvCu3mn$THW6@x8j-S*( zeVdpiix3J6YHH3qA~{Qi{fiG2UtY(*Av?Dk0)fvnVv?}swl}1^z9nI_-70yITx^04 zDW+7-{k8$IQ~Ty31GqD6N>E!M*dqUd)|#%Vb9EUUXkf7L3>Nv{rMwTHX6l;wFS+pO zFb@YQNsYvPjn^3fGbd1nP~vZfT&vol)swR)*wF?Cr4gB*u-+SsX0&B|@tM(@c1^}W zKjV;-dnZ@O&FFUnUjb5pW|dhW9pn%VPCfx#2e|L;O)E56S^&zBV_2l1LEfOJdeJR= zRoN>E3204;mqVCp9bJKwGAnR6@>SU$baQj3n7>y#C8w$CGGA)V#wK{WwnV-iC4Su=fjMGYor4m4RT^z{fLZ{6-(5 z{i1ha#5$_|5t7m2q$3#?bn4zgszDb8zvxCkSr-CyLOlsQ0Yr@$x>5W`E*grlF?`;) z=w;oEAW)(5)n|$v-LV`(8$Dwaf`U*c&?Rnb;PPiSO8bHV1R-9K5~Ca8^q~i{5MXuK z9^eVBK6|Le`R3(D(!+;TA)ef%Z%CjUldYDTm$Lk$wJo=N_hGfj5T#bBq9qsU;Fpyn zsnZ@2)0r)8iw=u}qGhoz09(w$cQ$a;SQ{6(XU*jtM)jT5yqF1uq`L~!Gi2rG2;*2z zVVRs#gHIWZ7B`!foi}GW&zPDlGNCV6VVf5DK{Ay5Nc#;oeM8N#jIq3y!XF&9|r zORw6EgQTJQMe|!bbn^YLWJ)MgsHNoL5}d4FzX;56#I4Rf!4PrD*5AMs$TfqY*mns< z6_OlB@G%0{AL>%iN^}JnxKY*{*6Gs65jacszVGKc)4YP=PlIPeeW$sFm595yk$daa z<&at4iVSzPb~p&>qtV%wNP;bpwJ7ocC@Bb}e(du9vsa%J4cF41nwAx%n}-Znf(cbB z_Pq>fEw}+r7pA&av;2NioskL<%`$YY^!2~u_HdVU z1C4=elSzoTZ^9Ri0gD&QtWrhXOL>#&xvP$56}58GPVoR`GG_C9>CGW806*){(p|J0 zn+lTdgmwnIVu!(8O#;^NSYhkmW5k$^5e}-P+aibt-sXqW~4 zeNaE}6;Ocq?WIA<{lNC>*9Nss4yb0JP{66b;iBo46_|7mFPp}FK?{FQJQFq}Nv>qi z084rhB^c*;&7D)m2 zeO_j*jnLBGx5|#|Ptf{`DQ!m&Gvb`c|ZUrDx6quwV_u4MjTMvNAr=%c<6s(fa7es812&h0PJCdIMli+~$ZCD#-}r3(mM;AdOmy&1 zv|UzBp}^-@T6-elz5=PaOtc8-sAmZO#<1c*?u4dY&Gr6}HCJvAE$v4ACqW37C5r5o zK@okwX#L$2&hsxMi8!#>_4TJUpCTZ`I%?Iq0f2VZPLj)5iMj(CRVNy8=J_9dxTS5h zQ#gupo(PjCk|s{tnMoU071bAXYBUTHX&-VR2>mVZAq4PCS#DHB!O<7UyjZ;Kp~=0q zY43;`+IhwWqK~yt@FKaQ^F?aEhJYfl7-kfqzrci?7rrUn zF^{a$lwpTfbIBs_3ju3_TeM3W1)o)1XVZ`ltf=yf0M1G}ji; z#KOhas1WDj8c<#O#wwCY(xqv3?|6YGar z6?@2FW@p|lBfF9sW+L9I@MXx-egf4qa|}OXGgu{1uFZSR?v(IUjDrnGnr_m-)3*z=>wo+$Cuw?oEP~yioFla%#75dh!(#OR)frP9Yro+OiTqL zN7VtYS=iUy#RIH=_bN?nnG@g}L!EE#i#!hcX(j$Y0n87lMus24z|uhX{J?%3_SnD{ zRhVmR?j{!#DP59nR9``#qo_6YirZ}}#&>ZI@L3bgfQT(UAgx9{gLm=G-(E>3a5G#j z5W+)O+!X)EBL;u%IVd#fN3T^dobcz|!LBQn7gH+e|7f?uIwG-NQVqeWF5dlP*-ETG zq~*oQ37E}714A57hosQ|p1Y_REwiC}^awWfd|qGmOCTWGV(8>(*W0&C$PC^x%ck8B zD^0y-i``SVv-a?=9_K-{r)pY4>#`4)`FHm|>*i@Ph62j=?e8q8tYzp2K)<;diAg?u zXw{-(s?TND631V*&`vbJD+vpr+eHv3R2Uj>8Un}CG1fjHR@hXmFoE&x>-@z=f}`;b zvuxFMU>52z>iSTlYgHe@h;a9-VW%}_P|_1)(8=ROC6=; zu*Bkv;I_YKM@0rJ#2t-w$I|mT(h1vI>DjX;s8+)9>cD$)v;(EfOG!oHajxQxAtnt4 zCswftnufV4(ItP%Jta5Ntx;=>bt>aDYD|IX9Amn5GOXHV!r62qFs?+OK7ca2o3Hne zjg1lK!PxYmy!-q;d70RKM#z@Ef-*vU2?C+HaNqan}H7h;7Y zn|XlmlRo6jQAWtFb=UIWY$7hJb8tyxZPTQpwp~G)^dvjBC@L#saqzsIRNy1=S{)L1 z&r98ph_cbT z=9~`>NmtSj>B#F=kqhqmDoOieJzOej$N0pdcx}ojD-1dsG_JZVFE@|};3em&ID7_J zl>9W6hH^K<9++#q=vU0Lz6A@`-K&iCyx8X6cXqo(n&|R@n5CGtL7Yf;>-AmcLKq$A zEdc=`8s5yuLeC`JW}eWCdDud=Y_`nQ_JDvnSeX=>>E*CYlOZ)NqIg2 zS|SiLB9ceDeVS_EAAoSb9No~U#m0PxL(eoj@Rsd1vYcZvLgy2A1y=q8QT^gq8Q>Vj zJ4y_&%awBem}ftAu!M0V79*L$Ty~h*nFYH}CzcBT!N}^HgJo$Y1v|JIuSM4|t3=a- ztNL66bW01R9d_MsUa9s%wXC^=3!`s;vUDI+MQQ7O@2oU~BVWl)1$Uw5i+T>|0_?Aq z;Sh8K*r<&X>*TK^_D8Lh3_Mw-jJGxd6(@wE!px7SBLyZv56U3DOo>*rsHX@$Y+ z#z=U!)jr-U--pV5L;$fJ0VAn~j-|eJ0oF+Jiif#Dtu`t7yoQkowVV#T%OGKj{b3T| z%v6Qr9!;KM4sS`>^Lu6RdOly;*<`aBO=+kRmd^b@M88QedQ2coc1a=>^Sw}k(Y!oR zdzo~%4ZA89<12{{H!i|BD`zr7@t+rrOxpk2Q?ISe6KTdGpt9~lLKuSf`_lk$4-+;> zef-Vi<}TcT4LBnUA~nt@GhB2FSt2|69UtSoH*^onfS@U6o)rmj?%cN3*||CE+ktrP zK$pYc^qpq^*PcgRZq4L*`Hl4|2q(30OL?}f>|Lk3I)AuUNt4~$|hkos&V z3a`L~*8hzCt0xP3fG>mIbF%1Ugqq=qsg{|SMa2IctX-zA+i`({cJEwHs5fqA%)mJj z6J9QnIMXqg`#zq3otm6D4+kH5ZOhdxC@?00-3;;8qcbhC*g1RoB$2$_;?W*Y9&mT$ zXRg932Lwn5!IjD`B$^*@+gKl;^(Sk3|I2o8nMO=5NObe$L(0jo$Ff zjjQS-7#D0X!YgMUMi6P`my2Z0-G&u&PP-I;Ro^}!y0mAU$hXtM>z|+o$$^xGLui4# zmP-=t3(=FDB?wTg@b0PrH?&Y9ZPpl4J*Kz8!}D8Q@3m7Lun9XhCkWeZyH*C?nNsmz z0COn7E|I${_RU8Sp||rA-hKTZr@pS=op#{A^G5akcym&%c~1gR1ub`BNP8h!Ap|*3 z0|I8^*%099E!Ws7gkwDfM^qlLT-wPF>@^L1Xil%CV}Kf2{WaujxYHKqkp*LGhY;7KT(V3CKQ3&AL@s7?6 zt!p0TIXixiVxkCh{nS^9#Po+Pqlhny5NS%MsJ7;{-2sf&ixmh03*g`@2KL%uHkzr9dkvI(F@&;(pY0_0j0s@=7*-7cbSeQZRE zh<@;Q>}-s}APG0p)%$X>DCeckQ;tQk3q|d=Sr_l3?4hRK^VC|Kd~J^?_MJ8Y1eYS4 zs01j_szWqTQtI@CjwVQBD+ijJ159q*-X{ko2J@sd!BmXwEjU5k4q*s3A^}bvGwu#a zy2@jqS2jAmH9Naqqxm~3&qbOEaQM&bBr~R&51o<<#0Ig1{|-iesbn65Mz`=cx86lB zEi)4ZWaJO#_5sv{%&HuiJ4)Q~VOAn^@_}M5R&fyUzS@R;rk?oX=gw~OzioOx&3?Ea z^t@}CD16*I*TA1ptbC{*nW){ha-G5(AYy&fz#+AHU7C_+oIIE$RYd58DD7Z+HsOtj z2JYIB>-)UdBIRsSeeRrR5GkG617~)paYX5dLFivvmWAAKsJnE-T_&7_#)mJVR7jK& zQQva{)mq4Du=u<0BQ(wK*&HsyySr%=elYhG6@dZmg+ij2HRYKD>p6LceZ;1e!#U5+ALl|Jg{!mGw0}bo>mk^FdEua{wMyu=?+G3N6MU*S7|M5VC2GgYQIu z3Pd0rzb$Mv`lH9t(p_*oOJy-(=eQ{s?k(=Vk*mW)GR##SS*Q)Bruc=-adzj^_xtOb z*T0>Arzep_tm8zCkbxcfUkaa)=C)v!$Q4j%x=2|LL+0FH-QpNwSScJk)Vc?YCcUEd z3K{)4xZDP`q__6cFFf&Mo!6rDM zVtCv8N_qEJf5=n+!w`yjwu#k1!q`kdfo&+iA@YC0)}I^b8EO5^8?9ipFj0o6;>I1b%7yT{JwWYOfBbQ#@# z!N93gM_OYd(;Q@`>?}ha?q&&h9ua)!kIr~f35rKi8r!y0g=cG{ksHz^N`SOt+aDdU>n%oE}Ofo~Ru{lNL z{~@LlgBppijUf2q%(dSlD;v-z^T8}9n@5i*2zyY-6D^Q8_DT)gQkqG905#mP*24bqXEGi>mc1p}Ea)`KugMO5#S0 zl45H;zlw>m&G__o=EemFi}pxlM67%c1hE8eG0+^B{qZZ= z=bhr><}zvhnWf?(o956_ZH(V&hQ@q*Vdt4gUCT5(1Y=VhMAr;Y9X&pVy+%OZqoUK3 z#G`AIuGe%5Q07>BexXU|L2>^$sbnJ&#dk+_MNtS{uY;Ngldqp?EBcL+MLPeBA3QF_ z0M%;NHdNhe#Vc+#b|8?EIuW1HMaJ#@Xm;e-J%MQDuK|$R7A;ov*!5ST3_LfW*P14sm1Ox83n^1Bl^~?v=*?WoI9f9 zhQ#{;%=>46#84FTmE6wfg-6@AO-pP|Jd4nU*9O5TboQ}@w1E00_gvJJ{UU!H<6A{S zJ2qol9X=pU^RFi@r>dYrC`Rg1vGqQ8pX)=H>J8}?p=vm`a>Z~Kn6K*Q-8}>AMsZ=JKBvAC%g~{8 zEd7q&Kql=RCMSNG4&!CPYPs$3B9SPg>pqq9hMkKmW!V@;?0|DfILi)byUGilWjTrH zO^W%1u?IgG8>Ay~3cCVjP(6h2On`OwIg`C_r6q4+Mc4g#W1dcq>WH4h{2uS+_JxREBad_oaLw; z&lMHO2-G{(r>>~AadD%0hLNmh7fdnK>6N8+^mson0;w@eVPI99wd7`;SrmA0v4GaA zZ=r*kgK;98`BRaC>5;dx&$O4J$`FuQ593WK9ev7U0Jk;f*PHfps3AV74lkHXI{ysro(?f%ar2LZl}=FTPE<1=3-xroLe; zhF>&>u4zSbsujpuRjaw5I-R-XTgkO*s#fSvG)U2t)k)YhFUB1v9>JB`&!ddyf9Rgq z$d(t)U%P*=uvF&~es01qv)t^LK(LFBM2qc7Z=H7Fa##LtyouZ~;gAEGT5Lpw3uC~&$j+sHt>n3`eoeMdLw*n*k3 zD+1_sqzc`9QT+Mce3SXL>{w0rWuyuBs$eHzAic)=_~xh{3WuOpH3FlBOZcdc`AUa* zzjp)5sr)@0n8x5{B48im0Dnd zUsWS7^zj*GaqucfeFrk>5>Q9jGo=tHU;ZpSLPXAd`vOn`KMY27 z!!WBuVq+p{#7qu$P1ApfYqg%NteIapI}=3=8#_tj?(LPGwyXTOjx2cO#cLXA+xs=S z`Ry6kT2uZog8gu5obd!Rub@vHrJgni*^7^H^wa2vH(=8xzh^$lWBNf7T^EdFO{)Tl zK8tA%31z$L$3JOOAbvRT2{M0~)Qm9p6qm3_T@Q<^Xtm7CkWHE^%ts9P4VT}2K1F+u zxwLaD#vs3xKJY^T@Cy=EMW#k|Re<1MU`$!sEe^vHdsL*O>_0jDb(oZ3)zbo+R_Uc1 zs^@jqQd-7{xxq^#6(5!@6z*g93d0(g)uE#oD*w%Hl+)8fKJPnTQYpEL) zmsl2m=%RYA>OlcCs1OEn~#Yus}=I6^eJZf_CpeI zn7|FDLjFtYJW&8a+DiBe_1D8`noSN}*8T2j#1dYK8LLzOEpLF_bYYuA1X(oLELDx6 zECXcyTd>*i^EWQ)f3+u^8%QHPB7|a@>s}_{>_OPnQs)vVc3#z}=fL)R%B#mYmtq&X z7o}|IFXS0_tOkh4!ftVTBmpNqXvvoIj2ZY@6&|IljagS^z^-MH3rHCVIjS{?izEu1KV zIb4Z?$X!|E^pY7`Zvr3rPKm#Oc)jx^@eb37!WSV;RJ|v^5DiPRZFB`IV4acQd7$&f zOpN&AYN%-uNvRwHpAQ$+sMj3h{>Y?=t|W8xQv`4F410}hB-r>j^I>u-<@1H99O<@4DC$p5+C4G zz)4M)VMbt|hv`)z;~8dY$FcvX&@CO4{S;uIQcHgV)snQbGMp|(!C&rp?iI5MoIAdE z&>2CjH%5%<-{#EGzw^;aZ$tg@DZ>)?tLt5na`_jfNs^_|kkfkDr0-sSjf#8>;hC;% zF5+AV!id=Mwmceo-T`1s+g(q4d@f&1t8_^_45-S?5R-v7M;G~VonM6@mOpBF3;($X zP(lF)>BL+`w$g&9A;YSA7L$+m}w1Omi{u&N$kDqZ<}xaZ$M1{$OLND0V};T#TG_G z*}D4}l5@%YXoVo|_-8Z0AQEhrC^A|Y#vY|?Ekg)hh)`UB2`YTEd2g#Cok)`XD;x(D z{NNSND6J;tk%Qok5w~r=S3F6P@H&Ks_dgYw!E!xm5Xk8ED3?NF-m_7-;s)%b7)(P0 zz0N6N$Ke%wM|wfo1S}h@<*nu1d;nAhdPAh{hRjZJ^0DhKgt0J5WzV>6;&wO$G_2zV z2+mu43+Q5ghmo*`-Y!OPN{Td`0tUQoSK2IC6utxb-!M<=9xB`ICBIV2-sX#gc_(&u zCk%X5rbfTL3FTj3l+JjIY!ngaUJZElhPApr`u8(@j*zTl#p;!d(I)Z5dL+ilHKVU7 zqa%Yg_WaORGFa0emMdyd1V~nHi&-GWr)PLFW7Y_{n3oRY?tvyhPErrL#-4vsNZY42 z##}Sm;R7OkRg7QQxHczh^tNT&UykQBUCIj#xi0KUZ?Br{P0r1%kPslPAQKVMvOgFWDE7rcTfnQ^vl&XpAf+=fiNf$= zUsMTptHWmr-G)GE+eYilM}fZuSom6`8W065b~5zx^iyP5!)L`v%t**=+9ItfeH0J^ zah)7-EjphB5R7p+{{ERRgQ$jOctXu<<@0nH$TbTf>Cwc8N*-$Vq}e{PcGN)OMp`L8 zT2nsKLL071MIhxwQR#q0s* zzPZP7JLnUVT6N9SaE4?Y3dDXGj%dnHf)~Kjq+<0xnaen0MN=psE+4_YqH2)-><>Yb+xV9QIppNLz!T z#(H(H6~V<;j|By0pwd-hmZ|xWtKv(+eMnG<($1`k}oJFF_1sDwfMC5&TT%&uyduHo=1@v)jh&3SB4^A6>Q| z*bGiqml8`Cru0aQ)|LJAFn*1*_yqP<-}()dQ?m2~w_TAd?{<4qNJlx`Cmi0pEG!;c zEeU^?s3G0olb@jW=9&E)Us;&v-gm%4AN=yt{*8PAhicEfEG-3V)@wg2P7n=axDD(OGkzXy z)!uZpydSNlVL;cYIFsidt8W68QJOqhj0Q#L+cU3aSlW0{v$7mI9+HkX({Y*tDrO-1 z?cL?cum&CLT}>7;3?(}6%C8(!1^tC}(zS9pYAoh)x*T#pgWYcCsy>=DXK)?Rq93J) zV#DgOB&(OLEH%i3KeYUu{qwits9ekUbSwrAlmXObzsKYT@vtKBpJ`!vt*91@_Ys>I zPgLxX(?dJ_=mB2IG|N|A3#tV+F__9=6NSol#$RL8N*&!6k*jl{ve=|P-#j;F6Z4w+ z2a<`x&!c`?3hBfZzpp`zo#W69*kkp)*(=Q+BxAw}7_4th$ow0tX|c$Bgk$_Op*n0& zAV5uBwq*g-ZQ^H0x!7rG^Kz2J6)Jv%=^_psKt9(kfmcVU9JAaPuc=9v;hea?K+%!Tz`hXfQY+)gdF*^eS3>pQ< za4*F^0qmwUO6A~e1~prly6`++Q_{}1!3|!uL$cDaiQLmh7CR^rOcw0#-yWKtqvzqi zuj&o@E=~AWo1aaZv-7tG2mympk}pxbR(*^v=j%?^u+$?U8dT6I+qT`s74W6pjL)9H8X- z{jR-%p3zpZGVl2*5l)UHh^@@-CLkmTfe&GGaBP5pIUO#ZD9r!5R#Q}nb1*S`>`IIR zkW&}0`pWfrZmPXG1|`upw_)Tk*BOw{!1e2;*BK60*?6e)8aRszd|kgtUO@EN48VTnYC+hZq-<1Dk}ddFsK5oe}EK%IMvcIE;GzYWq*RuJbraYSCG zO*d|FVr*LBJO1=0fqoXyGXu$iH0%)I(FpxHRX@bi;n-xjd@Tl32wY-oPHD=hv2;YM0sJ9H}c@U2M@Z_$oA@?4*h^PUTV@Rjlzl{GHRPL0P ze&aCDqWJ)yw2QU&1-ftx3xu#6Co2Zv6B=fw5Zf04g;|K_}T-Ee4+GLfu3mO3=_s^P^TR zUm~}QTmJp*jp9_oo|Glo&bf$pYI3g>NULl8 z>y;IU2WUAjFhp`(!f#d#aU)>V)>KASn=s%TTbw5_{rdPZr~ygM-o zvGF;6a%L+FA(w@UwGDU92dHj)v4gr>?VC?F1iJ6Uyoh|w7 zZhDRE8@$p8W*PD?!3Sgu-8z--Z{Dn})2!R{10zrbeWG8_}?r(RKV zSPn{p7$3~p(kkkGO*uuAA-2CJ)bkXlATvsEEwqYua~=QGS8xht<%y_qjo{61kyi^= z46y9{pmk&;;czMM-V0NV*-3^*y~0bM-iG=O#s7dbUmTsUV`63^lL*_1K07i=a(}Of z;SrB2AclkkmpP)Rbx@K$SuF{wQp48gs4o`Ak;33#Ayy$FkWr)*%ABRJ(rjzUvw8Dq9NC@8HXZ|~p$%g@kJB-MB7Pw>LWcW}xEdw(6VxNu z{7cn(M=@Xvu^q-!@aH2JCciL~%Yqx$K#wJ9s9}XD^6H$6>D)W&%D&uo zg|%`Z&ByyW+4k@CnRfHC&5kmEMPosM-0m@8$*-9ZU~-x7ApDT;$ckBWdH&mBBuTPm zj#BW8&bw3Hz9Iv5=H3uc{uK7l%pIOJ9qI4{#%m&ADdY`%jv!pP^oa?R@)xuBR|i;M4igG}7?<(RNwk3EvjzMztHiy}Y!hFCPs2qRk|8x> zrLe(nQkp;=ohYc4`~Po2&?SVY;n;?aI6cnZsN7Q%C=OBq;H^!zs z<*al|cC?rl3KS zD)a6Pj13~ur8y>j>2NbUEjwUiU80TuUMLg{3@r4Bn8c0fwTrBvwq@-`k-7+4;}INO zwJ)Yj7HhLFVDG`B=l4aIP%-1KCd%mA#c~9FOreRTlaZIOBzE%L6187Z}-nYE%y{zkOoW%d~%v zUL8KFos3YxhNpgr02yIan<^(^cMZsPWH}TslK^gw)hw3AC_t7~6#F}$POVnqhK?HF z;HGpDW1a!WF86eoU&%gy-p_k_2J`-VQ(Msmnzpp_%Yr3=B!~sqCK2X#*T02e$ZU%D zQaXine_Aug#?VYjRS1KkvDZ)?_v~f!(IBjFM<@oOq-u-1A$Sw6)h?Fb_@}sxNJO(X z4K9ou>4pa;g7C%Rs=CHTBCx@*S?E6u6XHjQb~31GOQPWZ?E-n1iFjTSs*x;(=gV}j zp$F~2S9@qKQA_kZ+5y1RFqq6!{#Ujqi-IGwfaGxvw`rF1m|sLr8@<&I(L$atL{hJ%Px)MSk#j1St}WS^2d^!H>7fhLl72q? z1-U1Ao}$GBVjjW*3s;I3em9{f_zA^pM$>2=9=NGmUEFtP>pW*A^8UYGhE*;@j)44$ zyX9F6x;q$&H5{|sP1Sv-ZiAgR7py0`-~a#h=Z_xGm*f=!V-GPZYyOb5%o#XK+EbkI zoz6t63ws_q$yO$bz?>q`8C{?QS;gSB+?#LV^wQfUYLvy1LmDF|(qet-Qs?7pQ7owI zTAh>2$LlSyoz6#`46@+(nHrUCXLgHsf%@n?lI>8UDGqjfch@HiOJ(K!{?sOWC&_-* zVY1DCl4$K0Yn^1|lM^@o&xNmCF`sNs5{eRd8mX+;P9OrV(>Bck-U%%`Yj4U@Lk6rb z=Q1u@?(Y!DiV@ycVBbrQ zNorYwBsm0EKqJeX3#*moRuL%^sQIQ&^|vMrm<;@r)+&o-fM+lfg2zkVWP|p*@c!j} zA~3lm#lhe&P>Q%P-Or_1%B1$g$F{r^xy^Ni$vP93-1WwK402q~K-EZVVo(l*>w6Tm zW8Df?5aZaUzeY>G*EbX`Jzsa@*q93MgvC6JKMaN?)CMJ_9YE@Uo{2#||Lepano@PUn_=1&E0$Th3_pUa}KV2P9ay#8j+e zZc5S0DelZd^Z-DnHDIC$%Q&cUozNM+4RUjm&LDIAKn>p%8%o$6MC2Gz%Hm5WZ}XNS z6z123I~EnsCTm=ADW}2&YW1m2#mynZOen=V22nm2YC-;M>0geS*MChLB8UIW9vI#o)Gx2=QpB0fN%5knX!12 zEKm&B^m~8C@3}4s5D4ijI7yM&9-8X@ZNu5Mbx;Ukuq4AM$*qtp>zCN)>H)lNv2_p> zx_HqSaM@p=4OIM^-4)$~camSvlT)-` zJ@a(#ZMG9N1gz?Ozp#NtFFHAS37X5 zl?9r)Ih{#D#$W&c1Z(qY>s;@DY8_xHIX-hmHu|OHvpsdTukV_qQoaj~)%WRDGvY%WC6+DK5cB)ya9+=6Q4W0FZ?{Ob(+y+7 zePHqKVkVa^hHv6LaZX@c*KG5o6V4Np)RhZiNfQNDzXha~)tk0hYf;Pi*xoHFABf0n zvBo0D=C>e~p;EH4lR+M60v82`>=PWRozk-9=y&4=Juxc$Y=Cd3Cw2jx z%bUV8+})W$w3#0`FnH(dtLev_Fhv(Mz^?%OtZli#3u#GT+E0@4Z=8yb)kYe(D;W-E z1&iOWxLUM~*iJ2@!q1?eNc0l(E1lNdi;+&HQMmUDXtG#2gip(JnHrapZxNRN%=Ws96G- zJmu`)akh+XtrnpvL`$(*zEv#JIvo0-)lyPw6~c15z+|zIbFCs&RLQ-#z7^=qKu+aY z8MKV6g`)R8`MEa~ivSD{yc^2@Ytop@LesOHC`H4|4r9G$0^>Z{FeMUPbHi;9Rp;w) zWr~;1IkNps7uHF#pbvNaD6bj4ia#^_-1$hD;Mpj6Mq$Z8SxX|Gw^`?70PZSazH# zTm&!$aYMaue(ozBL_VYGBKJKKikVf)&h~}9@ts_a=m}83aL8UtK z{kNF!mh6A0Cf6#6d~yH4OjNQyPK|qV$a+i$b&7jgv)dOPK5&ldCV@`3W(+FXP zu|*EP8ge3zY-1s&4to%Pyi|lApTOSB5cs@({H!UQRARsk#3xKqRN|Q}BW#c$-@t5E zgdwn>AxU(21`@OY5q#395ZaZNovv|^9X)%t(920eDVCY#S5f!_kO}KEP zCAR(`^t=+GeB&jP!9hp|L@#FUDcE4OtP==en$Djs?LGf#!gn!5d&_9K!1bLMM}?9X z>h9*6<>nA;r#1HI?wzd-^fB>bLgq+5CJLYaes~03l0pW;(LpbF#(>@SyPltRQGhH| z=l-ew;#YQy<vm1p|I3>NW5;O349AEsh zdb=@brEH7CRr+u;oKPn(vuzH`NQyM=-xNuc=>%VcV1(@u5@`Uq94+P*35Z)d>c+LG zrUG3yCQ7HfIb*dQI#yM7Xe@2Lk(snZNp@=OX|!K1G(>Lq+hyorOtC;KW&Zip3%qgw zk(GE`ap95}GY~`jFY_|1!v0J0BO;&xcdh*g7cUee8vf`<92EWxo`_b_d$;QX;w7mu z#|#T2k%u2%67da&h{b;eB$qUEj^0&0^^UaXP~;7@@{lmhWGE@?x2g3%W90^{zdDKW zaIxIKQ|5S|^d&l_KklJCe%~sDu`FCfFFx|Ah1$`*1Vc1<-($7SBOHm}vo04k-Th4Z zt2|cyqgD)N`xyT)u1-mC$(ufxV=b}UsZ`m?H}d<g(pL|jXrHwHUEC-Rp8p-j91W8)5I3xbS5ufI4paWIPk!JLa+X@jUi zgwJ;X23(pb{0UmCG;BDL%#s`TUl1wL;OT!Dv?EK{W~k$XeWT^_I+FBL)Bs@$TocCBw5oF?y$z*47Kh+ZOnK~&kL zsYmINbFnJaW%Efh@kq?%K-KcK8K6ir8b*$0hC$;07sE_)IsPp74@*2~wrJ8gqJRS! z)VjpqSwE&}a7I*2{w9)bZtOMo&TUK`^Hd)hmIceuy91CaI+*aB0`yqK;Qa$s%Q=QN z4mU1a$D~KU~Wp=(OnX4v9488fhLw z_vKpJ4o7A;W_=!>j|JGghXV_8OMp}?`0qPJ!`xeJc$?pMBH&&6zDw!+_Cw!TLy2@5n+a!y4-a_qUXb9d`b zlsEmUK1NPVYAtknJ&MIo3;*qO8k9x`kn{1xep;oj&=7`$>|UJS(9uN9?fmO$_bw$* zFD9jQ1qc1QjLipVh(oV7Yx8cI6X9aKITui{4R5W`b(S*X881cGEG~L06`n_+oq`4M zc69h2b3qo*#AP*e&We!EqmDWD4g?^&Mi-?{0g&)RO@j|1 zfR91PpVJsQmPk((*NV)M@WxHd*z-w%j~`hH7%zSYgg8fJDFpmxhywBAW@kae(jz89 z%F0rg4`?b=Jxc2TQzTHShm{z!56{^(H9Y7_ZSFs|f3+Dh5XpzqrsR#h>PNFXuEz{A z+-ADD!$42>rPQ*T%(|Z-ER+5lR{?EtZ8K>ln{ z0Oc6Zt!+}GCATqb9OO6gug+&$6mcP%fLQe7=@}0UEH@-DM}JJ}>{5-7QhL#{%+Z${ zO~zm-ZsQ==TTza?u0-8lxG1;HE!a4d{W!`5o4UJvkOdne*$8ig(K;W(nlav6vv^1!z|~K>`Vp z04p4PPVnV362Mm26fGxT)(1H#dAcoYv`yBV!d}NkO<3y0qw4 z+2{U(wU7B=gU3s&$a9sq-<%Omid5&ZNu-h@Hd9FITtB;rVwQA$pSG?~(@f9m4_vUa zSSK5z<4)m;IH$jASBB0F?V=>xoYeAj^C1HVK|gVci1J%fL;DpvK|=~ziu)Um*Pat< zs&t#XK-_q*PGG`x;P;Yw*74T^D?&`|&I0e$DE@$O%jgM@Hs>EOY7^Jt3lF-qDnRI85>vzMOnjX9Hji z>6SUWBlOQqm4q$rJ%s}{IsY!{O0FVfnY>U5=c3du_jbQb+Zc@WtF%dH$vzB6kI68u)xkK!KUOKNuJcmNJoyn_P5`eEX{CG z4q?KU)6;}M)Xeu`lMtKLy`8PD6bO%f3PG>t)KpLt>*D5>f5D*08QUqJ@WU2Wos!es z(|;50b2-{cR(h5oKd%msxpj{zcHw}qo_(--uoz1%-sFpxC8>f=Q&`4>peW5ec_Kl2jN8p3U)Kx;lbp$L^ zs|LNibeUgr)j!g$4DBATh};uWV3SwwBxeY71^7F2JGEP)(0h;fJrgF`adQn5(s(_2 zs;@8ua|E3;GTMGu_#7=$;{I|VX>XYlE2yq#d>?DMoW2O}k@xwBFIfb$*{Mjb2K==?g8C7to zEWH3zd=U#tmxVsq8Lto(N48<8Z<@q>UN%-{RKVYYAUE5>xM*yI+9O@yIpXR!E~nn z$3N54pizf8Qdh(ZsbWE~`+BoS-oDN}FV@s(_nXF3-V9_ulY(T29adTyaw$^6!9bNs zun{^9139_Q-F^mKLG$*DNYP1B|6491nY#4-9plL^DD;ItPc?M8nXOx%Q-IXxDyR*e z0qv1F5*uURbAmY2afPr9>HNDiW8iTpngk4u6#vf_WjGB?!<-|}oDw(n>l3|O8w2qEWSjsF@rgcm>iU{+7qn3aX$?c63x$4`P3$o*B!+{y>6N{w(IGE|9OBjy_3=n-q z(IxXhL3L+D*TVjk{CsSlxfZamg2u&+YPt= zoO+Rwa#NYYMN*@j@>wNifGMId-X@tMo@b#3**n z8|bv%o-3pt2gcXyd*eLyyAG;u@1_a|G5(d+XYLIv15`{#zbqYWnivW~do+ptL6uu( z+Tgc?b4nJn=0~dnYr~WG7oETE+gG$kw~F6tA|YOg^6chBn?m$iDupNOs41%6{YHvD68^t|4i!cfLbmA@i1H z?%@G8L0CFPccY@b`~;1NfYl)G4~h8UM1Bbe!6>6>yr27i$XVmq2eHv_wBCt!5{Hli zq9X!z?uYvVrtB$eZz7@v}W{V)Bof>Bqs7Lsl{Gjd#`~&0#}npURs0 zP=dGs!>FY?jn)f5K?8%ZOqbL*2KUaFIy&y0u$cfK5wQ+UKIN@E{8ETr09&*Q%!ZG$ z_FJ30oYFmacLz0iN3%DlfHdM8ch4g0lQE945e)*G6aKwDjX6gg5gkB1+jAea$Q$4- z2^9YNgWyEPERKgb9bz1f<4h!(8Zq@!pbHNNrNMwdrL$UfI?{~l5^v45P}8qSN?Bll zUAtl`N4pzaFk=}Ye;pmkd}7fDF79!rf`U?uDKc1Yx3w`_mPo7Y`Jm$4S{gp5t$+t& zsoGz6+O;g$x#pqc>$)V`gK{o*rV&D1JG}{U(taEbi@pxZO`)LWj%O_ALYv1`+8vx3 zHCgT8-+$bB*lhO6!O9gwHwSk{KIi}j2_WzzzCu2sX%ZuFc&-cuOMn)2F6h!YB`z8- z*2dbmiT0Re`h(8zUbJ>2R$D(p2-_+}gO6eNoxWfPJC8eH6-<*`5dWtgc*Wmx+6u=` z#)QpqOd$-@7Cz1Yt zcZ;Dk2yH>du4<_Omd4DUO$D+KsXaD{3L!15cow*f`dz#rDQYx+;x1&DX~m28_jTc< zd*2|XrTh?Y@_DBn%(0U_hiAU6OVyx_%z(^ouL#}4-wxpL*6m`ydh;&fC1PPYFNaMl zi2M+WI??~yz*(o9Vc?cU5ftC^hK#%(K8MZ_A>1u#Y*BP-vZPAa2i0-S#Z??lFE5&% zrA4fxFUr4F6HC^$TQZ9Uda;ao^3<>WDW)VV^~zLE7fu^W=W{1Ly1BY9M|eovH_TFD~}N!#Jic@i# z8LYTUb7~S(V-E#kOy?lz>bQ0j6-KJD$-?p;C8@=2pyid~8_jA^A^IkVV;^x6gE+>F z^gSBdk|QCxa1~e&F8r>5YSix+Rrxv5@o{x1{jp!QU*`a6g-wsM7Jr&^HI1~9kj z`xm`>=^#@7542il=QUqt&!$1Ps*Rc{J$?78Xw6q_$?~R7i|r!$RiSs}28O{zmcI3> zk&3LE!WTkZ(6v@!_ula;NfR>xxnd}9<_Rr$`CZ>Vywp|B()8f|vFvlfs+$&4q1t-h;j8RJvT-a(8Q(csW`!(wM_S!No~0D13;^-C!oPS7U}Z3z^KZ>fzh=xs_-A5 zGilS?^%ZNh;5n<{rH-!`eerd#D)9Uf@Q7b|7CANG>D8;HPv>q|S;v@EFJLHTiT`}u4`vi{%bzvt>K^QB`82+^47K!)gLU^y8a^&$Bj3$$C z%1ZXSITwJkNd96GdP6Og0Sfp)Jwu@qr^P@E48Kd6O^ug{R`+F7;)HYMKglCuGC&lYozmR69UOE6x+~|E7^wP7^Iy1PleJX$`J3B*!&;#Dq6el-fhN;1o!|M4vxEj%3dxLY~B5l zJy|R(Xb}gE${7;9x3L*SJK33Zv>lUYHu?cmb0cur8j=z)s0D7Vr1!qIas}y6g*a+H z&0gPiXF5Q*4*w>uNIH(TE(SZx1|MMcne;Z9f0fL$Y3H8yAMpt}dsc|IPwV?fOAK53 zyd7(%=X|{0$a6I9LH4tERqs$)RZZ-LWiy0x!DHFgM|!%Dt=WM6`s!308bEpiqac=d z--wyQu3!wfjzBjVpu=L@24JOAisnKp2e<+AXEYfh9_H=FHfOu4!6^1FYw?Po@p+fl zGw&PIVQS%|bi&t(gY+Ifd+vRm0UFzg1MO`AmLBQzPfKz=Tf8!3z+XqB(%7qq z@ySSCQM(@1MY~!ZuQ$!VRI+V~$_^l_1;3!k$Ejg;26sQD`L``sLg0lqgGK+k0??5K z2lBw6@eS%J60K%qnna*qpF30*l{d>@2pHQ_APi|n9pqR%RoSEd+W_QW*l^Bd>p`}) znnZGDEuobjr!{;c1k?AMi^KBU1tMK<$9tj#ucruTzsL#Ca+|Qw8oXqUg#oDzkqyB0 zqd2%*$yikDh8$eoJGw}rJvCnA3xV}rOuuA+t}LahujMpgAM5%&u=BslkSt2*lThkf zN401q@k>LEXS0FsD)$>r;vLhyZtCioekGsnRJ3oAr%K3KM% zAE;)A-V64ySiTg45xbUW_!vK_c?L*N2g+F zsDT!{;ea#|dK67cDjU~L3xEhx1|n`o_UrE#q@FF=pL`RYD5t*qF3O94pYt1m>xxjp z)^g0oEE{c4_n@XRXPekdF=5=^3#ZTJbd8)o4S9wS0VKJf7-dcywWB6Jyr!HWA{T$CZE;a z=x9i3EYnP~;}+lh3vd@p5(zzFpAk}bUOh>`)od%r$-W=x(r%azgZk!Lc1`Q4Ca9a# z`E@K{OQSju*^t|I8}-M0yMc_%?xrW!TeKU_V&6UPEL19H2-?5lnf>XqZtbGG!^n%j zSddUXHj;7~dpB#e`Q_1l0y+|iRhhc7DHod$gH`SHf+(0?9=!VXs3dTm@Ea`pJOM9t zGf&0~hSt=5S0{MG;&nHdXr}QU>YKWqq16xft_xoP>Re*YBphdKO!n5q0W;*-^WU-U zXyCKaHP=knXJIr&nm2ppMFpLJFM`cZE46!e=PkkjBXy-`+AkyHV~r``k)AeTz!Q9{ zC08+cd|Mk9R}~xN)5%C~bn&c1uM^HcXh3_`2m<4gj1LWu2b7qb2#6d@gaHM=tfd+9`Jj1p16nBH(t0( zIEvPi1y<`n&T9(zC~%=TtJkOWo@h{+^y%gUtP6@F;X}Kn6HXl`_(Y2?ttF%92%oSw$k*ga7ryfk&?jCygNZF#hz9qMx^p$O|q4M8-1e)l5s=fo;n*Qfy~2Z z#8l^h%B$43DE6ZJtKFPx%Sf8aO`j}}2qLC}u@%vRRC3w@z<<Q}(R;nJrLhUXVQBbLh7YPrxq6}neVbBJ^sP^wJd)k5ov4w8_gxqQIY=ZQ2F36I7SDP5hS2> zhTN^WVcfaW?ITDg)8@^m3~@XPL@0(Aav^ju^t^tmvxa%rTh4C@34TMQWc&48tv_Ju zK56wrlWpei70Zq&L%EA0dNi#)iBle_71z5Z>nfG^O)jmcIGz!Fbr7>&80th~u z_$Ngm8j^MaQXd)a?FdiXj+kB+PT(ztg+17ND3S}HCS`r>an%L?oq_v=?(c%poYtqN zkWc&WG1kZi#7&8b{f6P+8H2*~YE35q;Jp+2!jG4O;7Ap!s*uQnW@VWj|36cPL>EIj z(#%a3RnsFxh!W+%a?lcs<-oEyL$Ptt%5E**v{W$ZHj;gPLfaY)K3cg%B9RPY;2j>I zrS;{}Fho-p*jwpUURqZ(fgktGc2>8I0LeUmU&Gq!k?n%K#$(*_z+zBs@kM9(`+zt$ zTHmh+tc|?Ibme@5HWpJ~{Oc1rcYuTOHzR?_H=vt;E*N}JC-9q?KY4XBIcpoHD4r}v z5ud#=PE;*KC{($?_!o60!Zge`MA-IWq)Rb2+^t-+Wt{p z2m;*b63ViQbF@g_<3u17|s%f+J@}0FN-x3!x z!YJp;X=4IQkGBBR9HGa8LebA!gyGf2hnxfAq`W@ z4wleDY8edsF!GG$Cg%e*RP}fADG91b+euK$XbyUXSl^H7)MRejp3uLX87J8C`3W)& zv&4DM#{DWyeK_F7|M(5=EVwAs{n<{TjP`#>(ufu~@B_WSB@r=AqBNX|uQwrq9_I?% zdf+9MI2rt$e)$;Vcu6|?9e2dwGdM5XSs$8J>-jBWFL{i7=XUiOnSgb+EcEHkIDDK( z$8g11$aF3H4s0I#-Wk>m!JR1XdBZe#26^d=ky%^|cnD|R|#-#2%QS$;@#BTp6ZfVsSDA85EnjSUT2>$omt2<$O%qejs5SjjJ z-H`2cy5?MFnaV4(@>89X+7{tSyMn%rs2@Iru>HADVmE9527ng z>V5daO^qb2Ce8Bns;zU?XFmGYy?L`QsyiOG-%S5;c2eE~1HL(zI55t9^gZ5IPI1&V zDDwIRDH{TtN7$+{vin}x$WLE0gd$gdnLbO2nve|+ADjyw_T|1xOO;6lPQb&-5l#9@ zMrs`%i-{91cUBxK80niDqYx?YZ30P%utJR#m)+LyW6#5x=>e`k)RTLpmaHI;$QeEYgd*MNGm>!8W>^d6Nr|}Au|C+hPA)-I^@vql z!zuRzJ8i~O%~>YFXMbE)kn}6qY304w1>Y2juf`GdpVgJ55ypkKc5=7uwN}R{w~K0i zYZs+w*P?co7VSMilGYFFF;}zJ0SLZ#v?yUs&IHjBYK&Y~e!D02(`^TgBP*#^wF|;W zLIQbg>W2>H9Bk{0=A=tXedQK!@jX<@voB^&KXs)X=Ir5^J#2WV|9zQqggknp_F*r_ zd&obtg)qF$ceipJ{YA{}G&nU2YB+eI=3eJT2cHHo97B2(BSY71Nn@*=dQ*m^`#Ezd zwSEHIAX*c{2IW<|_`zK86v@$x7nD8chRvK5Udzy`V*e@FK~S;|cK;lO?^|5UDie2T zG!xyu(0srdbU$_>qSL(k@?cLV^ql?!=m0Lg<#~3CX}+d#6U{Fu%S<3^OZg=1W)?^x&Hqo(bSi8UgVcQ$;2# zh(&O6b%AM+9sJ_KMBN0(EYY7{XFi zQZ+Qy!Iyt{0s+Q_4g?e}UOE=m$|dex7o2#ZP$Ona*IU9)(Bs;ORc$8$$Pcs6B(c@63{do0K+rpi%0p5aP z=33Lb>e6{umr@N)=^(C@A5)w)J|Jy-5tRREcWc+|lU&A0s9c8{|58!J;BaBltF7fA z`Y^cyOy@M>EZ%fhkmt|uXPfWy8aeCg1*tn&HFGk-6`@GR$_H#pPUMUf;kY0*Q__ji zh(0_to(ViA+gvIqoV|o*klczwAnxW&>&bW{yMMS}g-LlKXanMH7w*~EFqe`!JY^Q$;UtA|#GFb|i zva3y}!xTaqzj2Qg_7Av8iXjp0#B^V6QPkpqh)(c~v*EYoO;kF4GOl{m!B-84nCS81 z*nG{@%Q!FuecruojxKbd^6Hm6^$ zrc2ZDPn&3apx53PEH%Sw*~SaGhxcYjvKfu%mNlMF;-0^oeCmJ9aeEmES3qnqCYbRn z&ail`eGy%3hJ!;eb6S7AeC71SNkQSN(mkOx zu-v%CrpH%i^09^Jr|S0T}%%*AGRbp7YM zo6wJMfxB0(s&ADV9UwPk>ks^$9pv4%6gjKs$c`_u$o^OEmG$Z(IU6bs3jR;Eymk&2 z8wQYlI!)uN+h5SaUz-;m+Y!yWtA@~Mx$xYqmA#bnTW!!ja1vkB(?{I?NeTRf+7873 zTkydnwTTb<%SeF71v#EZ5-7jjcK3i>7+Obj=#&yELtij3Ij7aAzz}|B_v07PCP=p; z{S7y@lk0i6TGr%7wJo(%YH%AUNRggS#Hl$hK*UkZo*4I?^ygVzPfE>$L_>y9bfG+Y2tR)HQYh}V zl1#jx6$ZQqq3D}N3EVCdK@dKLT-NmlQT%9a`y^Hj$b-#G0A=g~yCE}9&e;chBgLG0 z-Cy$7^ACT6CzMv!w^5i$Nkw>nQ_jGO>&^2CQ~!{sx+9Fx5oc~^YT~%4h5u?^qNR!pNa58J z&*&w{EQW2@>9%4YeZL!F?VL34_`W9vSC4<1{;a({3-(b%T;|#J`=c>{mIAr#%jHF^ zoA7fiVwsD6UGFN$JMvuGzjhkRmOoc5IV;YFs-CIKrfRUR%=6m!w+D9-6lg(5wwrei z3!FnQRV2h@2gI(pK~dv!IIk-mr`Z4j9nz`P)yv%4vp=?F0m!a;4)q`E9jp;O|LK?e zL_>Q*pfZ!~wcr~qk_BPFRDX_gKJ!CE9a#X9{ECygM>E79mUJR&{#%m zZvd})Nd72Th`l zTJnj)Z?8*l(v~5hx-=-&zm~*8*@d%Pauade(B>atl6)Eb;U5iBvKJw0zwOcuHFZ_WSVcU_a$S{9W&! zG732c7BQ!m%Zh#~?0EH9gtRCpXF{X{pdYL~{uxoO!am+f+fei{M)Dj~>$SuAe=qGK z-I8E2{#1wA`eX>Y6(b^kJW>N?$W%C0Si%%8e)dS#gTu5-RKsVxN zVD&518FY3DtI0pQrGL+e+Q8%4zTNmIMd=k4H1KmG?pw zA)UgTI;1p<^ileQ&#tzBn11PMU@s=ta_kXw!A)GnlW_lhl zUnHSypC%usZt=|M-xeYP-Cjb#o>T~QXvIwfaOSE3=)y5M`p z-~3@s&YtG}+ThB~EDy#H3l9ceW&_F|6a*}=J<}L7%9dAK#w|Wg4tXn#$sI)ck(;;C zQDc#(>K{F#1J6TT)3@|VV<`(V;iZ++7)dLOyXv$|tkG20vFvRTJjIK}N~xc4&70mS zG+P%Xs)8}LSD^U`^9n~73Fme(&tRzQf6V%-on(&sLQadtZtHT&9#!075dOdWdfWB$VNJL$lg zEf6U){C8Tmf{@|y7&9PHW~(#7=#Lxk~4ZjOVT!!M~L;IDKQL&h{aV zj+(*-sL|G445QeIcJ6UH?6!L{20!Uo2o(crs0xei+l2a~S)H|$cNiWYkW;eHmTc)5 z)?pZAY;y}e6am4$UAf`H=LbG;K~c{E@O`l7tG=`VG(uz}LU!y{d-ds$3_->Ct|#!v zjTjc1U&l~zA3M$ht`XX_YW3XRFm+@m#ks8e3BLoQR1$>ulrgpNNp99hNZM> zeZgykPXwd&F)_&@QN4FvKug8s2vRDE=xTyxH}pf<$6mk^4FO+|MgZhGW3^>opv$p1 zJUEw`i0)r&3PpN+^QgusDK-CW;T+}&Y@s9oIn$3w)}y!r!`3J!f}<%#M(H4?~MVX6Woa>#ika} zG#!(^!!5ZA1D|PjUW+-u<1OaCTs3|z3C%IE#ZAMZB;6v289+P+>Qq!SvHX!ll8_vV zeU3IF#0gzFxW&7;MIxF(H!~)vDVDPaL18okU5-k0t&fQV_Xa@w3WpAk0QE-O0MW%K zmBd5e8{Ios2fml&VB6s(#p zQf+FXB{CL2$LusO&>M`NiK@#!enY;AK378Df+i(n` zE(zx@}%OH$G49i8+Ubro&zY9 z9Vtjr2@(clZQ;}*)P%+7$ym#v0UG-g3LC>|74!68aVZgkfKHA^(k9;DPmD8g4+=?b zIs7gV5eOhSC6@uyl+-GzYasEWO_;=iHOI>hJpZ)~f>6gPZ37p!rCMq85BzJ^1Vc7` zP5CY8%+y<2y2_VLPUrh{26Z5@OWO|S$K)5B_D@t_FoXX9;fDa>g#W~R1Bu#ZRgwg2 z)-I75x7RAC+koJ?IJ--RvryGy9$AgkizLNR=2fI}-%E_n9;rCwZ*O{HLHCk_UZ8ha zDUC>>MOIE2tpLV;4WGacG>3;SuCZ>ISc}r%7nn+ZIEkZU)W9KfL>kw_xk@+eCA}rw z-gjgVlQaB}7tXVoV0xM~v1S_Im(H`135tMxKx zqpKwdLEoezVt$>5#XtMK^hcZZhbZyW%>j%O<87>2CVtm8p*@h1jw{%eR77xQHLm_3 z(2-U<+T!5DRoan;a^t%BXH$?_PL{vBBj3{W|C1AgEccqdaJ-E0sV;5_s8m1Kv=y1c zQc|)wdr)&6NwWaZhiFZe-K=jLjjy%ytONi3fY}2429*&DmyL`=hw^89AP}4{6Ic(aZ<{Eb9xjV1X4+Mga zKWeA_ntyEcgWuKFFFy21GYG-XW0CJiD}k;Q6!3LxyojZPDTe?iE<*2T-?3_iHeS#n zsepfVi4m=NvplF%$)IG6KmUp#L1E1&QS(jMSELoIq(wLx+=TezXMe#VPRs{d&eRp< ze!z#p8@n9n=mybCv<YwI+1Gn&!)gTWJa`eyPd{jw6nS?8N8k7NIr+WOeFYESA2!%PGdrK7MO5(gafEc#! z%ZDBX8Ga9_{bPIzPZRtjMQGW((=VcRDl6)le?@xQfPc|KJpRGfxx&sX zmV>#DR1W=&>KJ}niJwxiVhAcUea1sEh{&B7vz_~T<%_nrL7 zJldIdkg5@`)Zaw7$nAgn_p$peF8v^RvO6f$7Ht#_D7^18 zE!F&S7VOjdPGQ>2Bi7wBb77?~WYqh*RmRyss{pZzJ%|q-#Y~6XpRry&f^-wz@GFdRhY*|LF;xNPL>t8pO_afdK9an;Qq=@!NUty zAD;dRHOap@DYh>X9K8Ydc%Ro(Q_{7@Qd;r_8bW)C!BYEzPa-hn7yN~v|0rAr;KS{EZVu*hAjlJ z`E+x-S%Vjy#q4`l$D$Tgqfi}ht-;4!Ph#%*K>Cq#0AOI8V()rm|J;l?9SrymX@ebf zDu*GcztJnd1wVsb^7Ab)`#s7FrcFE#bgF~4E0zc;3D;jfw;ryHjOr+{i&p`s$0|8X zn=vQgWS4O~m?2;9{|_7zmIM|#aO8N^^S2rz>?2A#S!n^0@M9k(@8cRC^;Ao`w3k#P z4=)GVOgcK;Xd2FBqUv_=^C+RC8dNm`g)nlv!UGVxc2Oe{)#P+NP9p%vT15+gbU3&D9b*9aa%Mj^Xd~7w#Ufv&LZzlG0 zjUXP`FmJ@8!7EuYFBO3xpATu;Dm+h$B%2_Jb-&5fI!A1uU*e+$kF;oCzyAT_6Y0{~ zwS^z1R}|M5f^;*1D{<&pE5Z%{G2|f`2Pvi9L9C7uxIz5iePWOe$|O=ElQ_R++FEf6 z(3)ZxW9b;u`VC&xcSwa3wlyDE^MmsGwbPA1X?7m;)BTY%D=^7`OVr$eG205{}O zwpR9S)Z1H&u0pAE^8_OLolfQCjpXvO8S(9lI}ju+bGI#KST1_#K*eNNIWhDhHdzaY zVZyH47!*8IIRh*c<_l~n-^NL6KGsf&bPzFenD_>SmHnkAP98<{?Y7%b-FG=0ji;Wa zyFSpZ0e7;E$F5YLV?3)k`+OjyiJ}fS6T7^L_m`a?Pu|fZUCRWxKfw}}CJ*XYc;Tj6u$}nddZ0;f4kcjzgFTbveu_sY z5qM*zajY*-u>cM+-lLO|*W!Ra+#hbF7QdUn?Pkyp2HL-qe#_uAB2V_k_q@rvUAA%B zBQ2z7K_X9Q(G(=+E;&iz*K#h{FDoXiu4I?KE}=5}D1`AY@n&(dIL7lh|8HT)whHX1 zMagP)4tiL~26h-%*ge=)lcNV2gq;dlBlG3Jv3VJ8a^d4^`$8<@CfQPfIZCLA*Oqu| z2?|ta)#nP3v8TNY-gO8?1u#*WRoZDuUbxS=%(8UDc%lX+TD#zZmju|ZitfQIgFLZi z8)!0T;VHIJ)sxy;)TcFa-i6<;J;W(d*IP97i4yz^7pDNRs&nRaE|y_uFZw`Wjwr3p zO9auovqNO_`nR7~pFQwV-t#O43m*ZSm8W;NZ5kr!ZyjZ%qUnns@xdDO`!F}al2{Kr zV#BcQEv!hptXoONFB(J*r@~T{puD~wEjb4%&m?|A{BJ0mw<(Als%_1BePw? z28Di}ySHck?+s5kyX8RRnm$kJViJJ8(WO_uLDRnDI zyUI_}z233lV#qn<{)-}PoOw=acdGW=nv%nAQWvFs$NvWe@m5tdEEsP&BV)WpYDH%^ zh8r|v8z)X`fj1p^0Zxa|#%v*Svq9r7RU1Y@FOE+x;}Eaft$w|n@SW+Qjfg+6X&4DR z3`rkDy%t{V0?f2Iyt%DL<{7kK?VtKxWfi%#%e?#{$x2oGblB+c^&p|(kI-!kh|lG? zP?PP*AYWWiU>|Z@TWy0sj*SN2Wpjaxf_v&_f&~mCL&)@!G949w{5(8{dj&(NeFG4~ zTh+;XbG{VyKa_h`El1E1vP=&}*$o2IYuJ0@KT4^~)&geUcbh=J2F?{7=L))YqsAWs z?vUpS=4*u;+Hzt6J)BJfeF?s?b$U`)q6h@^=!AMR<2;Z5albYoF9Zp$AL|WL) z@8hu{Xoo8>wKB+j{@Sz#xS#I5DrC{ec&TBU-XL~{g;$KQ{=u0Y-CctISegYS`2-jP z7biC9;s-_Odm1{%$`*blRoRO^V2{4eE|{4%#<2oCC7T6JSf*kf^;M5U~2B`1sW zxhN14d_AO6lZ~$93sw5(P)PE~@D69g`-a%RoF=3=5}~MurhRPM!sj|w6?vhUZ_SF` zA(1_ED6P~W7md8UE@QF&yw=T|)!bL}_$3AB72gA^^OWX2GZ#4AlpXfZ`NA?=Dy=4IY?b&7Ptb> zdI-H0@ii|Y>9Jj*)(!B(uBqHM_a0q&EZBy)R4;*KI_o6Kw-tmm;Hzjm#?ylU5uhIO z^e8(1bs3eGgIP!|XV_rKgpc^41LjK_uQZAKQ$-PD2ToTo2!4@UEIge=NJ*RqKxUxC zYC(zIhzd0a@BHdwJZZ&;3sF&luhs&JKSAKCZ+~{Ln#-#&=_RJce55pL=AVf8bGCQ7 z?-ry@!QR+T(>H2e!k#9FMW9J_@4bH?hxazdZBB?U<|bKc$^gV>G=}E~ zhnppb05@PAC^;E@yVWN5$>hc=%vN)p5~}+mW31RWTvkhQF5z7p3KQw(P+V(}8K<7* zZ#f(jr|a~Awvm}MJ}fG>Oxi6RfJT`zbO7BAniD4H9BQ+*$ou3x^ndzrj}{#{dzL}f zYr0MJ2Kf+rSU2CL#$$BEc|gKmP+JnK4LQVHf+vOvN|X&jrd=Q+`EMuCoh%lj=E>a! zXYVLO7^66G^IkXMS%axKr3-?`G6VN4_w4jqh>>2Sp}*!fdrf0d21A?wpg+<>2heJY zfQ#YJKA8^z^u@+`Va#QG-s;@?zvjjOq4Ie54T)S?GJ?0^4cmj;M4(RI9xk$*4xY9B zov*JBCYFZLtgv-iVm_2eibGV&wL8-SGkZQJIB84y7o5sPQjy%{W1Na&4`Qk{77(0l zq+Ms38FhYdJQYOadnqHB78RLP(=DNI6G{~+9vb}4$1<5z%?u2r+HtLyYbqbr&SX!I z9>(&B#uZ9Pf@3b7`HQ0BY}9BkZfVUT60#yG)qO7qA&$e$z)E%-7VABeaZR5Tq=2KK zP_ymyWRqW-hQZIh?`Kbfvcp9@i#C;6CkJ95$PL#BCW+lhz8H>&Z#0uC6^XA*^?er2 zjdW4yEoCBN`vBvHxWN>A$a!;wA6g%jXy?Z<7xJ{jKRjB}?yD0_}Z{4?Qe z+EycRQPeI9agdzhe9i(TxAIFE8IQ{I>wNLC((kMl?gVIr*uv-7;6HhfbLB+nj)qq$ zfDKR+Cz8qou3&fF%_!M}Zxv|?^b&JQz`T4}b-Mh+$!b(U+;h58YF`#*dm0nk(2_;{ zvA<60G!%rm_HORhS9p--y9w;leumGI-WKCAS#3~aPEqlM{Vti+q9v$E@nD$zA$xQS z$3S94v-Gn6Fo9zJoC3C^ycWQt9-Sy!WxL7;dHw@@MJoaXDC+rzYVR@qbf3-CkS%Bj zHUJ&50(R&$G7V_E!SIe{V%`)a*(ATmK&~_Q33-zwB~)Irf6MT-ySgTAI+$GnGZP8 zf0Z_DQkMJ!p&i0{;O`Hv2-@cuKo$FRNoUzmBcu>agCA~Jf_BSYW31tBc+R?t%fx|i z<>JHYUYi_+6x<1M6HZ~Fk2by_r@{vT7GG$S2^<&uhG+SR8Y!;+l zn;p;&2cF}j*xig|mC*j}?u}&WE3_e=wC3dnUwB*|!yT~7b}=-n>HF=OJHW3W{?@z$ z^Moh1_?7IEZrwEJcR594Su-nY7fXl=}iKhIQwfBAEOHU3~e}eg&tEbUI7*vcj_oaOSNF*!cdwfEKp03*% zf$84^GnW~ho&pk6eTkq!3_c_*yJaT6{_W(QMjF~B!ThvbT zQocl21I0vs^X=Z!J-;V-h#x6zYg6nl&Vw*lY8S0VP)4(r6{si1b(2!>kdVa8kDQ+8 zoj*kb-D8K6=0Uk#A8X7XbmP+n-jsR<;{?Mo&NSXwmH2a6v%c;xB4rGulBgam(ng;e1GNHG~Kmghs!f*>-4t1L1*f#_+)`RftI1LK{Ox4Ls(2)O4 z*>@qRi$vi}%YD@q+&}tBaVyc;!gXOqVdytM8qMF?G9T({VBY$oBA44`C*vy7pM}v zY=4)p9Y=yh{c(nw{LUx*-rWaFjKP(r!y+bU6pCdRS*f6nvR(;N@UVbxNd#X^vbCK? z-Ax_;L0KwIasm1~HaSsW2ri0MXbw&Qe>xiLkL}X5DSH0JHsMprwLLkLvQG1z{>gZxm|DztBFvpK&Hyc*jlASi-ed=sl;pp~ysGfr*GkuE97Lk^)oW?3`FE zi_&;9cTqfoOBS?Cp&^RnZ@%GI)+5mGF2POjolBEHEO++>_s*P%ZSt1MVJVMy+XIj8 zW@2CMk7Q2q{X0c60TTx7@3iRDQ%{`)QsHRe7Lm6q40`~*Io1@UwOG%MGzS*Ck>~~! zG&;$A8gfxHM5nwz6>s{^vqc`|9O&M$om?6^yNAF~d&~_IHrPc6<_JSRWDn1^h$vN3 za0obQIJ2^LOr#+MKdQ7l`RoE_{gGxj9_WdFL7AcpjFp1uah;lrIq9Y6AMTgA{Ww&+ znmaShiQhs;^_!n+>;Mg9s2?7~gkabkpS%K2{+nmxK8@kJ(Sj!0#Ma+43822}^cKhl zu*;wuReN_ruAd^5V_nE!e)Tqa`5+4YSccsI0M05Cug!t@ymlu?@#@$*`qmteQ{%|J zYcy~Yjc-2{=zkVA277!QJw_G<_{Zn?wDx+tkr_ObE3-><#`?u1eK@aZUI1_a8e33%RZC}tbBou18zLlSnu$R>CqT{jyn!d~4xKIGS9zzD0yPua{(P&e z$a;Y?-vE5nV$=pfl{;1353-z%Gh`cJ5E?Az=mACRofwXFmJX1=5pJ_cRYWgGjGPY;|B5G{g-^wNU8tlL$** zNF}siFXRQ`f(&*OjaGVeBS&4L5R)c4qC7d$Mus@QM6dS993WPNBrs2Hh1F$p?WCqI zAk6Cxv=1hW#NteMx^nu{Artw3tqzeEDaVh?`XfZn4kYV{+!Pej&k_CB&zzwammNm2UCs; zvX#+Y1zK)N*A>n%gK5q8Qz8po<=Gnu7bVqulZhn`rR0w5&<6`glAg=?^ek+~ucQcV ze%xCcV*Fw|>BRZ`qyGwA($I$c3~I<=kW`%^&xfRDS~rGUrXA~U&ZR5%J49B`aVS{~ zniYy3bg8tUk|hn0`D6+WgkSX`WbqqgLvh2bH4BMpvdZ^75w1l7li5c!1R4!JJZ)5a zS7HWKrkBBw7=kFdEkjnBgyP6Bqc(-s`tdZ{)$LiOS6Y`Sm9-p~iz3r5RBDaf=o2M` zY0U4J%t2W6Z&hEMr=sBce1C_P)7qt2F7E^>wm&p8f+z7+EC6BC$dxb3q)XbGiI|9N zeTp)RiQYJe!l|k|dU$tN5elg?(x;!`^LD0EGox8a0yw3dd!TzkIDXX;=}q{&?a>o| zPNs`pngag$DHK(-?6R1&KtKpvt*n!P?NGC!9zwSh)W9oG#K zH0b+tpi-6147)P0Jj?7tf-jRQbJ$~$5GfRLiOto(x06~^Fqb)L9pLjtEAh-vL?IV zNuP+A7luo)>s*76Q!!`Zzk3Ak?^FX98qxqg6w)b6mEYX)fe5O<`aiYj=$yOU(O?dl zvRZAQA`QV5pzs)v?f~PcHT)J57tsk4TKfdBQX;^*A5FSEl2*sk$c5~*2x>46xGC56 zhfRms*DpeD7}ynGYs~hcMC5);%Cfc8XJll^k#j%Wwkub_>VW9A&}c=(pp-?w0q`zh zOE2AI9wFPoVn_-KML7`LptPT?;NmG|;=qr`?`8Pp0!JrQU_}+23Rh|rK=X^AH07K0J{5qiwPr!N`BzjBQQ}GAmHj)t z;As+eG!Z6YV#aWMpFA*inIkbY_$GrG5tY0+2r*5ysfR@VPU!vF)5kg)=6)Pp_HAr@ zWEnrB77f#i&0;AbM$AUzUbmnNit(hO2aV1t%mz-?xPNx=biWfV5FF;e5CYh=o$Run z$`+p{R^OVgZMuJ(w`1IJnk_DWmg2vEv1CLK!th`ascM&<;B3Fq=)os-2tRUgDtwcS9AUE+6zzPKyz284D%p0be1@@p zS792CasKGMa2YhAdy$>#ER{>cEz)u9D6lG(7oiGT*i%HXdlj~qnPk(Ht}T{caXNH-{gp|y|$X7_U^2X z%P4e;3JpPClUCwHhKOKHG{t~shQ3bM%5r#P}ckKWx?t;^@+T& z{P;R2qWa7k;L)dB&|6F}-lO*oU6zRk0cNGm%SvwWZK-ySu?yJRQl;O|Z?_9#Q0T|- zSZMgg11uVouGH$P4ki5=U1{k`LCWBi$)EDXcenQ#NayUTPZ${?=te;8^AfYi>#$`= zcyff^P#8HDwlW68iF2+`_I6ru5!c+(#ZUq`-Pl}OwLz7tCAOv=Y4Wo;Gy^gfdYDa^ zZ}pYk?h01&QB=f6fw`>ix4aHn+EUw;2BM8lNIt)6MH4bmEb3kI7}CNU(&z_r44aMhS~TVYSEZ(1Me z^i7}sPoM%COvU%M{4B@I%i&n*im|H-<~DX0L0P@#IZJA@RjDd0%+wsUiOYw}v1Bky z-%+$<*6~y!g0Vw!0Jl4Ze1+&I+W2w#K-9}rC4V0FSh&(w0Yi~zXim&%yn!q8>bo`` z(e&?-uStO$nNxyxrKsQ_#`R2a_WW<86r>OQv(r>^FWNZtbK8}{`v!!t)~fX`TyUl@ zw(n>M@Ng3aWi6^7#)`A`5dJ~9f^f*+n_Mfa*dKFLi8Y{Qw1Qy%DABbmmQO0Li#+k9+@lj z{^dPYlkD4wx40=0St=xwub}%; zF42!w_~)?^-7zmlW*~@^ikTge)lv9R9$pa?oc48b7j}+#`=Fw=`?yZv%SN6&BqHIV zRRVTFl9&+O`7B=o;Fj1y7IX982hiH?ASSq!d7*02g`&KVzz=Sv))V}2Kg(tDTw{iy zZ=*5xrwj>5&R%!ihBxvnk~dHJK%qoS=s-(b9T42ph=cCR+rEcH&Xh>A-ujt@(!f{< zjL5r@rWO5wXzm<_+GXG1{DJV*)&)LX%&K@ewkm!kiA8)t9h@5#u6!o?^gau$)TO`f z!15YKiRVijyC;f96jHge&eQ{1X{j8TdE*?+BBC4|@heC7J%#2(o|#q92={ zPE+L-per#HDT(|*Tpzf*zT<}uU~zSU&^+|{!D~f~A^f1j-+Tra_Q(26Js|8K<-XCX zj?+TY2iD3J66BUJD3K-l(FP&H?XxQc+lTO|{!%YqWhK|*_ug8*h(-WyLM{y^V;}>} zkt>=qHcpC9&^i?Sn1nRn#gBov!c=TdH@xnQ_dhKZ+07Sf7qCIs*TGzw9CJb{p{^7u zvIDx9fICHk9$uQ%2;4jSA}RHz&7gdAy>f6 zmp-0Hp-Ebq_&f|v5wxLqTp-;r;+PbU4GV6?&;3CN{CU>DaO^qmmL&TtJe%-omd1F5pgwpWP`lI@` zeJ#(iyNOXr+bd*zP!s$OD)ZX@LHog_NncE9YPww`_(u2E{4{Aj^_*r&-z)-XBakGfc;S8sVK^u(CB*R$H}FBHFsLl0 z@6-Ow%u^0;Wr5O}nd((=s~FKRlPqRk5RU>Y!#MgVVN^yVKnxe6; zPw8(Z(2ItuG4Xn5YU{Yg$3Xwei>T^07r3Q^K8f=^G>(n(F4Rq6K@ znG4@XtT@N`oSY{t3|I^%38xEJqU5^+zmZG?DJ+T!sXNVHwf>Idq~%?E5*E}^t^Q&n zHO!p7O-QjDw4oepHHWK??w@ObUx9he{z#oO>5k;C$vlijqR~i3K7(9LXytzwF}s+W zVNL3FCgMZr13GtqKavb-utPlQ7>FK;^|vbErf-j$!n|DBU^!Z1uqf3o^4PBATs?f^ zyM*mkadg4eLav7mkIY)TL)l?{chXpVXK4~r zCev|r6%o*sRas=0#DL7{VD_g6iUA*{&;+P5_-?3!~Tq5 z0;VXkY6f8-97&!%xOz*1fD(s--ilHe3jRYu65epo&kWn#CFD5;@LC%{Fjor~FA2>bt3=W&oKh(j#hq9{ zI^A8Q5v&nWY!KcJJ$?Qu@7mgvw4YaCpT~XIs%JH}1H`msjBWpI(70di+pVTaH}R>fj~BIXE}Dnn}C{ZZU`p>XLNx4qK)6k1{0^&&ee! zf3Y}0Ab0)uHn=;YN4t;u&cX$Y>hf*pET;5o{|?(U7eu48#^`}l6&N>!dy;ww=+v+= z3L0KEj}p?eQ2JUA`+ogtL;^&t(#e+hZEoR}OHZ;-fQApN!CMx}5T(e6W!jM_up_zA zO|7%8Q#?yFd#;@W zx^X^mgtJxZYmqSPWJH`t^e^Fr@~#SVP=tYf+|%lMt%YlrH=tOIeb-|0NPCPl(*bP%9nmH>HKfcr5C3^_k=z z%^nqn@=l=qrKc{4YYcB!988?%EMq;r38GumK2H|0M*lwSYh^#s=#psViGQ=Cw(62v zrvZBuM2}3(&U&CUIvk3ea0Oj-&b1I~k6WJK995+eW+*bKzI-%*o^y>){Kvhs&ryh! z;9yNXTUG~kWDUkMIiKgd8FD6ED8hV+wngqWKd{!;HA#5*h*YmJ#;_XU^n%D*pavB5KlbCI?9R)&M}x}6$K@ZexP>Ln z-31SP#b_uK*gsci?xt9uf?jyVHrKjs&duQa`P7boyArILkwv!G1myn{o`wWdvhhqw`Du~PX70lQz&DbM0Jtd`1{;zPz{Hfp1m^O!7w)M)Q zMd1}O881WWs;TR*r&FsYo_bHSD4SuhN?8S~NsZ*l<>4|zG>_6}Z!w9Z3Hu>*1J;8o z1IS{Ac{O;*N~F~B8UynY-#mF$m6Ety2lASzXS%l9ktoXqm`sJwT2R)wZdZ$hd$-uP zm#BZrr%x~xkv5MWk&}QoWQ17CGA>3_k9j^x8t}nVmq~G zQ=l`a%>9-5|$;pcZX(jkl! z7os6+z)#2b@cc&Ox(M9l&=sg05^o=k{#8Vv+u()`?{%tmhOGDKa=kT%yRq!aR2bE0 zdLMiQ52m!al6(q-(|lwqL*_LP%!XR#@H#zUq`?FQIpQLy<6wxueq58 ze9(1^{Ir=)*qqR<&mtbbZ&x%9lTllDXtx$0%B9;S&~wO2jReIz{x;A>0HMYMePco- zwTd?w|0DKM4(XSI1K~e2@*g`Wn41EhwmdG2F_FQyI?4KnHMS0(5kaBD+5bAnOENO9 zdQ1FT*UO(2WX2us{7h|*lfQ4HGq$X$Z}!9m|7_42O`H0RGtW&iZknT<<@}fZX!u79 zZmJM%x^bm@IjPei3(@aGw7aj)oMm9R%Ym@k^!_W3?ixr@T>d&aCh7sT2mGt&x=G7Z zxH3WYz2&k~=!g(oBH77%yz{e-^jCdBWpClcu1_Z^9e&veD3v<+n&>9N8ZIA>L=;?+ z)1?z7-8O`Bt*{>oE|Uge4+c9ySzQcs3W~}1F_&9ZZNjAN_S^Vj*8S`ECIU*3;~dgx z*M)(Ne-uDQZ5Jxmm#$5F`07WpcZ?78^1uiIhWl^SHtC^kWHy5k8D4OT)#VPfS$=VA z4+>1$tPDZ}OC2WWE{Hll(o?($bySVdTd6s_>AVP`BL4${Gy+v+iB#6upS2uY8k^X|C)%AZcN)ioJvIVa3B2&wTRCsny1@C95z)k{pvcEb-u{-aw_~LTaack__yj zq-w7@>o0h{<04B3cdWF+s0L7$kpTyX-)8-f`ddTuOMb#3wU@rZ5Va|skI)yrAe@@^ z7a9bAYXOL_(0u*Dr*Y%m!d`5-+G^hTiDYt|CXrRLjPQQbQBiD@@w~0~W`#9hP&Nnb zaMW`|6)?LesNMddt*HQD!xRF?q2f`zmPPO*b_y7AQ=PKJIaNe0=-JVn2N+<>B2tm=~f;ms^@( zBbynnil3&pFp3dLUlz8043U^#alhPf^g?v1LkNa$%)}uPuzvQCU#Ep8k!W>?6<2jF zm{cXve`dZ+B;=&LL>AlOp~{d`#xnN_mm3>(qi}Z=TFLyW&)>fJ>{@E_tOqaK+b9|nR_!KGGV64(Y>)zi~o4c6*kkPC*;^|JT>Cb1V? z%*GxbMdEE5(Hq0-f%FgYfne=D_~CY4(k@qEi;`UlKw>;7VO~qyOSI-G^2kg0$jexf zHeHpw1nC(mmO}9#feqOa6wUX&XeWb%2*foFnLk6Uu6P9-4$S|3x?Ny8)^*1jOn22; z5lK6iq7fYcza~JKxG0dNgZx+)YR-ofz|KV&b!Dap^!w{!Vio0T zpl`iSvnT!}ktP#gu%N1Eu9{j5C3l_{Sjfo$@QS($8*EelLlsd#9u~UL-Q$eq?%LBh z8sE$kW%C%Td;<(7Td5*ROE8QYvR!`bywqBuVb1rTOP4D*A%`K+nF-?MZA1|ndQBIO zM2U9X@wC9^!An=d&W{zoM(Ro4%h_{wI2n!SGs~cpm{<~xB=>l=gm@krE_}F^Ds&pQ zFl^I@0O*+-b_&6H%Ka7daN!N6@D7uOT^Gp&7|G&CKBWk~g38-xR)}#C?fFmxVN!-+ zt0&*|yPDFSj~o)V^hA82q(6Bz?7QYE_5FYiJy?dG*4(^3*0jV-k1T7;9dq`f^A88M zjTi_|V7SWoiygg83Qglri#Ixt<=w(oxxDpf=&hg{`o~Y|RZQIF*1(L*<@~`a)fIp-C$O=0K?AcE!7s8gKA~uy^Of@ET`cdF zfo@D)Jeu2cde{nfqz)5}r0>x=e{cP}%WJR_VuaP2v2whw3%cL@=g9L6Z z7a@hGsD7X>QIK*gu2VBCz)V`;Zpa*K%YLSP139P^6f5pj{3KgMog-ihbzSA;=25Ya zVv$I{+rVU73I&1F=!)>JQ;S&J1p5fkQRV3lDgUoX@z_IiQuj?UD%CQk+e5B9wR?F| zJzI! zKb%@$yxTh;9rT>V=p9|ZrkEs$9TE3{^U_rLN?Th@7l>x=kDa&dZ7%I!GumPYt5NbZ z*E%q`jTeGaD^&6dG9PAUY88+P+9+bZd;^P_uUW2K+!=x0mxT|%a@?OuU=(JL!!d;#VX-VuWEe~azMJthU^ni*OO1r` zIguP348Ij-o?qDRBG@Wc)8%y!eT7KlnM@Yvo4ce7kgVrlCK4S+`}fq-kOkpMMIL=K z7t2kAwI-7Zr(rS($<8d-GMUm84VU3vrsh;n5EwO?*z&88f*CZLb0D_%p-n5l-aT#1 zuzY0%`Mt!|#ko+IY|+2HDbF4GR9dWpRj@Q7zh?=g_R=@d6^pGmrE@$|X6vj?IG;(s zt(q9EZ?gr2TK+fs*(BMSmQw;w3fe%t8EKr2a<&gT0sl@Ghpj41^-n_5#jJ?wnDm8B znKjO`R8+A$Y7Z-3zW%%i-G*^SDGtY-aA93_J&#FCC>cu?v&V^aegkUYTJIdS*aQ44 z_#F?6ugQenBnS^Gc#_=T7Pb*Hh&9>pV^da9Ab*?NS)2xYs8ibQ?6_|Dd z=%GZM2dtU6hGh||`$IjyQ=6!)7;NG{X`f6wQDmd7O$#C_ikm_TllLwRHz-q3e=-fM zve!i2?g%)k3)HMPzHWB|7}FM;M=Jk-NCAKa#8}dOqxOB)4!1pII|a+~nRFR(tj_s- zspB<6u2r~efvtQiz6MU3BppBh3imZel4+K~32mt#t-9}zyV1=^(eX;ulJ`)ZA_!TV zt>^@KUT;NpuWoA{15Fy@y@QXy!Xts)8HCI7%!ZKb`TP0_zHxi^I8dDv|MtcY8JTQL zyQ_=eIgX6`W+$cbcHZsY9h>$m z3R%Skn#1uyc_$`g04Nc>l!3qtj>$b6*T*;O)+Hj2-!KH^!iK#usP)?nqNv3(iKp^` zIi+(1w&#gY_`)KKfAty^_XFyG6`{DyqI2DrAqp@1taR@-a<}89Ax=hIqhGRnR5_%V zS%&|aNZw{g+~rP@*W_M8d9o<@j?sEy9=&hKi{YC*_-|pBi@n7DVz9rDjP;o-fPoO{ ze6N6-UfuT~5EBA-16|5yUTdYfJoZR-z%Fct?4OPs!oCr%V=a;ANFJaL`$$FDC5@&s z4qkvmT!oiJf2g$)gnKpy&P#B&x+&#;!=o4Hji!z{+C7{dp+Ha ze@5qW-q)_ZcJZgEUnf-FDV^6!dL6&-L!;aFnNq!;2H%HESTM)mya}&`CHGIYm9YXn zJ-Gxt)?HiZ2P=ln^bBqXAIDe_N{57+`&A`!h`e-OQoH(<`S@|kYvLtW4IzyFv-e>c zJM-SYWVv=sJr&ZJ*uc8h0$9dYzd+Y*>jzscJ8&DlWp>NfH+lihAw#6f-a zm^m^?fV0z|lVM$w7?1cH{YdVY!e=0^?h14vTNJ;s=0z+>R-3>SfsDM`^FX=DqWLGf zGw&lbDYZS#_#cx^*9iEa=0cJ_2AQ;2J?62~y80WnYFR4mDILqAj6jKqKde{H8ags` z(8R_mq2FPCNH5a1b$@|26X5Po(`*v=v)5a6I9XBx=Q_(xF`$8Zw0xgMu2f^_d!}7y z@$PIGz-;Z@yN^lZg2+!6JV>>)K?@vdE#JDV=G;6Xr)0)!&}TkR9ifCC+rn4Eg?a`a zmu-pd)HJ^5RM2MkUkk=epC5r}=#ItKP2^nI@^uad2|=r|+}p$8p;~B>eWrE_fMB(P z(a*O$YfV9WU=qJR({kP0^guIYl(z5m78u$Uc3KhIE-Mp?Y2Ir&{J#YeLo7J<33F-nN#OlvW8RSWC z+SVxb2MGraIP!<7f=`_nQ;mR#M~6-)lNTHll_1T?CmGA2l$X{QHwFj&r7Z%zuA`S1 zWXIk|3|Q#y93T!dmW8m=tUbMZIC>`Y*`2wLKjC#x&~C^*wR-LMXC8PP52YjG!VgE{ zxHMg;4u?lE8z85ovG#1rmB7C$PH+Y0w6f)#q-@CLHtXv62H@Z@3ImHb^opJqzaU>! zS>3jG#u>RKbUCzJ?0bpNDo1Zq3{bW_`J%MY=``wzy50QAVCRCOte^Fis+i0e6Fl^z z`6^K$-#dF~2Zbt0$5iJ*VMML;F6#5P=>w`T%7Ni7#Mu-7FMo-`c7CeZ$xj zk%o1|qucTSlD$sCiNG>H6Ik9(P2*=!vNgf<%Ka=4UV8SQ{8HVX0_Nfs_wr_*vroOd zs4ej?z8@;Ui43j;H!137+TX%yabpyhZrKE}<&Nt+0AH9A`Jydjd6(N6S{Gv#wKPO` zfgHd{DYCP#nw)Z)dG&LAbS#qYH6YrW+@Y}19NT=h6kUXYk}-0>?v!287jW%mWkg0g zprpN2tU33HIc(JqHgVxR<+Os;fRm;=G`aC^-`%hZ7rldu(MshW1XanZo`#vs^b$F~ zG~-T!_a6+6?gHhRM`gX=vmZ`%2>*x_6VEC4J5`N)YLgQ zw6%5?dI|jU$&`{Oy2GTcYw8Wc0kVWvJ9!nhq~p+YRHwqgI<#c_s9)bhH-Nny`e$a2 zGhJw9MdkArBPJ9MvbMdsLJmT0*5s3w%y8f!D6HTtFXWW7W`tP@4U%UyLOl%7`qvG$ zrC~CoP9(oyvnv5_1m!P4gDk?tPqK3t1;HW+JLC8UT6I^btk4Tv4);!@=bW~CRq z10vU+8d~1uB+Wq6(nH=!Q}FOy?7{}i85FyP=>Ota#_r5(F&ApfSZo-B^tfwNALPp~ z3^?cS!CuW`cxyPz&+^J|Gx^V=OzhmxZ3;!h9$$#Q_ci#@3Mfv{DH zJ~8miaA8K7R5yx+i1KJ$u?r#>X*xP9|9trLj-2B^Q&Cde6mxhsw>fLf8eFqA!9cBD zfp+rjka|cSo{?56+a3i{;Pqdyl`*ex6lCm$R(p)ZgyNBhSi-vw3tQY-dO66+-HA2g7Qa@#)RKWMAB{3*wlt5`qH zS+E2#Jv@Ppp#voZ-5*DBG>k?^-|31;aE46HRlgyzWc;p<0YM|qcczS0;nvw*o-zf|rLo>r<`6lHdlfqe+y(k9c1Rs029V2vQtyez6rP4eDkpL72x zk9pu<>%zEo_=&V~qjrUx(wt1^%FQ^Qf`pImo}(I{YQXC2*1m5;HHd^np09awUark) z#1uGqQ##0Ec4*y+ocYJMIn??}O?K+`IRm=}=9gxI`KfTz?1%mnYhEA6wc4l(~mg#w8^NkY@EG%KuD~b z@@9p5t|vznD%!nWyNa!Hstxaeqa4`bAvR5&NL>fKxS-o9DpYf3AjLe- z43x$2cPKq~mo25z0KBhTnKUAs{3pZ)mP{wc#qZdRNuh=#V9)TtNMNKk)ON3q@85z; z0h@n5e`eBRlczqOSd>POilNdoIO>AienVESnQq)M>>AnaIjbzRd<^hi8P#+OEJxD1 zNQV(SnErbs9zsxYd$e-OI10S2e{)=$bQYa{+}(h8G;&xurCI^Ii7eo81g*A&PKkjY zIW_ka+vNWmlEM$Ft4SiKS-nCxui*C_f@{l5PVsNjLiK1%nN`HEh+CaTv?SF^7pzb# zP!>abJ@Z)*cPD1p_e2xmgJlzXoQeC&I1T@Xk&yv{Ka@tcdQ)@hzB|phZel!95TZpG zTB1y*m#7`1gCO|etvWqA=OJJ@^57~aPHqo2Qh3L{musfasDN(n8*9`wRMNfUnpmV)gJ{?S;*EbTlFO~E$2Qjz!?|2$FE z*?-+4fw84K^A5K6EQ4EnfHw-O4ScetBbP^QRECK0;u=H*M36_G*+esG@Aj8R!`nlE zaTwsWWVU8pgn%AZDc!iXASrG+AP+pLGc&g7Dvpjs4rqDCyUHY@mbZ7R!(g4L%c%}! zEwV1GEoVJ3kMuqyK>I?9{0t9)@+sR@eeHdLsu+s^AwN8TRtK^H3WebI%*~LbY4B7& z>9wZqOa}&z=avQi2YFOZ(1Xe}M7kg#ZU+1KN~)c|BjgA`<{H!enj}8}+~?G93AuJg zA=I^A0yjF^`<_;E!I#>>h~6KJHLYy9z4P60FT2>Sw#5K}EaXrzALpt0z0bU{M~_k2 z=#4gsC^zg+y&YC;P;Uq^`LTj8+YhKh*olIb04X@pc3ryVO1gRf;w$~pz{dRIMpZJx z0`D$gU1?zBT>`}N$14qPKG;T!lI8K0>)3He&72lxl0R7Hg6KxRXpxcPFGyQZ?X2{X(aOiV=4{FK4Hs6DbHC045 zx-B>#jil52!VjM1Klc&BOfR__yI&h6(~DS^FW!IF414H2vMp1?flKsIW5YG~jvY!f z?sTzM!!N)~1*Y_?#(Gvu5bLFWkSsA_Ujp3PVMwt==X3%TuMFA+3-S2rMyLvBCKSP= z*fH@Pq(Dz%PS2Q7^H{6slK6UmGw$#Bf#9RuF16x2>V?0%sFv!RqmaH@f{r7M>Q{?0 z&d}4TrsK zJ;_qswm1XloW>%t1%fc6VJ64|G{klMgi-U5$XQSxG*3)vmxSG-Yu@R0mJArs!tRS2 zd&Zu}>lbh(`+Uc*$ttTg$y>9(s63`HG*0)E=OM&O!<6v)qzE1yGaab9fL>aj7GSAS z=MoltYbjFEAr>>Y^F(ED)^B1c1Y_rDsGodq4kMJ!QggTB3;-Mkt zx^f>-SNu1c2snK7Y03AQlfvmPpeyZ!&DAWL#Sk&_gTFY>zmLh!H@@CeaYj+OXv#Y% zSpgOB%!`p*o(HP=<5xELIw8RWUup_JSbU=;e*Kg-_7bZDzF!@%lDw$S8gk-$ivtg1 z4*VN&N?j1N1kS6jp^QP^`SyxsK0d)zHrtisEH)?}A!yHkDNZ%xxd%Xdec(ouKTUGS z(|M^3ECPfqOyBD$p$p$`v@zxQ%66T@M2=E>1G;n*EWCD8`HIVim;Vk!wf$>TeOJ48 zZFe0oOAi^~M&NN~jy0>Jh=ROS7b$_ghzvIAx1^PHd5>z8V5`gxZwHN#Zul_568YC^ z(VKaLW`E=&l>4Nx%+lRt!$85U*ALOoWWUy3C6_Xs;03i-V`3lvBUv&dm=Wx2=t*FK zRU?mFHa5=-{wo+0Ku^)U7|<0dz42riZI+Te^6rKHPdkN)AYm zzIY9zwt2a=jeB0%?E@VYQ3AEKKefDAZs$Gf(X}_zN@@U;GI$WIsa@dWtjI6pt2Kay zn?C9PpNgTX>O0C2`>-Gl+Q8UY#?ris_isv@-U$J|39?RZTcUFkz(4Xwk?O@e5?}4F zkfZIx{0dC5=VigEvQIrM7iwGQ($h~=7MA<;H+t@gZ2I{RE)Y!_h$6Hke55W_HKuZ} zd{%w1)p_#jW-+h9I%#{|*A6nA?H3H7kolmFugbt(fe+4RN?9WWGLRERi4)*#w(n$6 zd|2Jw9ZTMEBFN+av59@&28v*r%=5Sp`l35r@i@3?&xQ^Xah}f6=^7>W`!ZlvJ$Di< zqaA1E;2}X!iC_Gx(VION6s;D>x`$-{GT;!S>b{D%2@=OkJhE-u)47SRyyv2WZC zcypKx4=~av`UcxTjni#V7|bSA@RE`86D|Bt-vH@L!Bb7hfgE$GYQ7FwA`6o7Esx(&o zj?6A4$!_ITSF?M8KVPSGS`EYY5YGLf?^%)_i#ih5?#DMOebv-~tI3g~#p9jVOc;P_ z#t`f`xG^L(LAm0neBDUk)Iw5ME5rtwJVdQ*3f}>h&!QX63$szyFUkE|zB?6lOfL=4 zlt8eX%6pvh7X3a1))CNR_F!dc#N40=55)}Daj@|V=1I*VWaYOc!zC+69+h=)WgdE0p2yu27vVj5 zpvsA&ZDVwC$mq2s3fU7Z2c*0!CFReJH)_a{l9Thc2TTr@1_AZ$tf~kFVEaUK18JRKKLU@NH|sP{1^>eSX39mk=pT!(oMS5{}+L$AQUbT|{*yN-OMjkAQ<*UwAjcLK;Q*YK@K z|DI2sbV1vPkp+*|D`n8wV1v9omBK1ci);cc_FV60jwug<^+4%T)Jwk2mJoNUUYb7)=U|NL=38$+WwP`j^J&A^?idLfSpeaRaQ$R@L zY9|iY=u=jVt_pCdEU_SX=LI{WtrNN#;{)-=pTJAfi*_rsM2|?_mV8&Pu735BE;m@9pxaQaa5- zr$$#)Mz9%F>+$)WGl{1!&iekqKh_hvyk7D$-_2gOu7ocjAoP3{U_!ih&w{+p5Nns1 z4kEi2;&d!emj%hkL+Oj7{!Fptv$NY#Y9dj%@Gci^KF!|VI&NOqXTiI+`;rI_3K;ob zhAZ=-bn6h2+|ttzp8n{L+`mV;qvb3dYO=3j8zpu#cV#;&nTEaAvdM|SBwhyT1ZxS&+$5Q*t=Ab>ho8mKIl|*DTG!h zKz<|K(QkUS50q2_a?aFntcsJ?ht>{7y1Sd3Jy4*}We-(1aa+${2S#X!4pAFn@r}Rf zP@8C#wwN*t5yp_Uj#6Gxl>A!(%_xCTW&Fn1Ge2$_SH32kdiTX0BA{E*G9jN<1P%=` zop^_nWynEeRVD>cG9nmnWSJAK!BXPxQuG+Z*z0TL7ZbbuVNCnr3to<6%~%v@1ui&B zFYs21zVIlK5bWzLwW|dc1<+DQsjIEgt`&pD%2`#ZCr zf-NMckj!H{eK&OtRsOCrFwi%~3&0*!3E<#{+}4E9t&6v{Q zOiAQ+W>2vk^whSQlRhui67@0lehN>vXMwEc{uQ9>ybery#ws|eF$YKBUys?KP1x_O zrabHPx$@$$247ut1_HokoT2j8FtQSBZ0VNvzh+|H%OjTuSuqTkCE71 za$d-|AUMX+7(5cu)D9IQk}WkM3Hm1gut`*noc#=8)V%J7Jok(c?t-V9@guR z-RBHf4lds{q66^DuIiEwoD?B(skXsbrsv?LMX!e$_bHh*LkQQ|3kPkJm2GQ*yiW5q zP;W`nA^dV5e+=;-4@4d6%x-dd1dj*}%k_`pM@RPEEB%+?CUJ2jOQd>=nl%U&H=BUd zP2S;!xv3y1y7aC`S10Vakx9uVBFl#|FP3QfMifn$dSjM_70G~yO5-zNyWD>cV3hx3*%U!=OTOPwwh*CfQ z_E)~R{VgZ5rNkr7wG`R)%N7(YL^omYIt7Jxcg-Z(O4(xXg@B9|UX4b{Cx})vWUS^( zVrjZhV&RWo19+@1iHyS&&)wF+aS}9MelVrNwj3wACqI@FH5~ z6roVSLEgfc-t2a@Qqf%J)J(j%_5MPYg`WKL)Wb&WUlpz;J)0i66Q>Xzl+LvzXjVxB zzV1xtf|;{K*A6~^zcSeLf1q!d_pM#m#oYhJDrCxhH} zJ5Tbuq(O$kDR0f(aJ}MP{RScG5rHLld935q1%}HRY0aO9>F2HcU>y3ldCLC(v^$P9 z-`{8|m^Y-ofJ1p_gR5|C0f5fDNlI=VaGLO&4+m6YQ@$2KN>D0Xbdi3k)(eoO+MHzY zC2gv1)RK@7!ZI?oxWtF{mi+&nCSHoe0B(lI`?(~7_58UhU6}nd%jVMC?3yyOj5+G4 z*%4PJ(Dm?-teGr0WDoQ1*Sp|o<+{9F9)T``ZIVC7W~o$W17p@UZ<||60&j-7K1;V zUC{i$bK(^t(4yE>I!`C}09K|*!uA#{B- znM67)eV=y_EC1JpH<@^VVLBaT#%x%^t`6Tk?}i)!_&S%fCgygx>!sO7Z)F%>nO@*( zic{oGF{!zPmom4?hX8V}J=q_b5uXwI{AF*M!#j2hB-wb?$Lm9_Bc)#gGOpbK>H102 zv)!VVFfII^$zo@gI`oiz2i{WGXF9UP;=_Ddh9DBG!CMUqj(5^K8p}#xiCLidmK8|$ znGqLk)Q;GQbLzQf!&d7MI6i8Wz_m=0g@kTpbS~HQVW1`m7%21<(}Zp{`A#CINCc>g z3d$bNIiLPlRCg0dfTIAv`&@X@!Fk~pwhBf>NaWEUfFl;*`!$G;yPyRz#9b3&SDhg5 zHz@o<4)73tI_W}qxA>|llXv07RGO2#(5lEN(@DFfv6 zOH_xxA5of6dR8)|=P;sXVajkFV!mVA5%0CHQkYiH2d6ir>M08Ch>_yXf4~VwV$0Jj zp^jf@yo!a-+9nF@ErW%W=PM&DvWPdh3n}Xm2R%O+02rQx23^EyUUb9`7U6IV1HwrrX5mGmNZNm%)ayQ;~Zor0W{seMBV&h5}ODC zs^9=pzyURLtT=NV5@#ls-aT-bHtM%A=Oj)`)*hV|R_~`w2e;WL#U!<0#JWcxjoE|{ z%y03U8#R*)SW8>5MvsB5b<{uVKSdCV8I@re{fyiL#7;fS4GHUslZz1)_{vmXQVUZ4 z;ruQ5I^kgMa-ds@HKd#7dXH>73v&I^f!m8D`Ox|@Cl6s_C`-TI1xNK<9MV|OxXvoq z%CH-VYJQ+-k7cQO2gZtiwZJm2--C7?IgwFkp5w|4J!Fj^bt8_xYI7;f0t{G;5i*R{+z!}O* zfi^5NczsW<3;MD|F&LJNn!$J|RE&Ck>DO%?b%ASF~HUPDQ zLF-hk6*{{N6x&W@q<%b!XX#{n>S4|9k(uS@YAb4+<9nGed%BaxeqwkPXCyH-^24;4 zr;ttaKm>LLr8F_s*XwbO<2`^rTmaGAfXByOukxvNt<^Lf84Em>ohI*AB$7wY6*|rh znI~0++jQb*>g*hY7b6}~GQ!T&aNA}-BRnE>JC^fr{)i&2Y5p3>1)P-ASJS^hMl3K` z%bVL9{EYa5xs9gXt`{X?Q#eRTBi7Ql(G|W2UkJn)iI4h+ZStlmSWp>sW(DeoA zq+8oB)x4ZeC3b;p|C`KyN+b0qOyx>G7Y|lNs97b4Z7+{^qBQEA#{i(&q>%yX8W-pU zfSosXkd52*Pzemy8Z2#}SDMHvN+#YJ1B#@uHn?e+h`hh~Veh9jn`jzfvfvdP(()tP za2DPlA7qnXRwAbLVW6af@ zrlt7TuRWY;-CDUd~ebb~d$=VgNs-eHYwPi5N$myp#LDKga?@4WAFC zjHguR1YVdEHSKg;2mr9#eg$t!`iOtL+|tG5<%Jj&hU9l&J_Kg8l!(*gHhT6UZ95+% zU3$?8V>(m#Az5QPz3IG8FJ*2HW4rVOKIox2qz5A^Din(6!gq#hshqzOI0Y>8zPqsQ zY3BaQrUn{PVM}JlD?(G*i`3W5;V|#Efu{YV%M*fa2Ot-z;Ud9#+?>*nWV9}mEG_t2 zv8FFhRrM-Uhm;5$>Rzy0+77htR2mSH?hW|b7-TMVfIWDW9EU4<&}kMs=kFoQY=@x$ z)J{~i$0*|tii(p&vgc+AQ0{Yg65IAXX6Ep0>d>6IO*OKmzz*}qFdeY zo5PBAH*UgY5%Keu*dntF=}rR;`YvNd4zX@mnyf{Qq^tNaUK#k*&%mm6#6t@62aL@_ zB$bGr->*~w!72IG!ecxK;Yj&zMiUc?ut@k>$L_E{y!QpgHwVH*?>1!{;fhBFls%wW zfCzjiAyh;-LPN~j);%CGNT+z=X3UMLM;+`Uf0Rh4ta0(j&VM6UcYu^BFSNE7A}*yT z9IMWkc2Tsu)<(}U+1DR~w2ylxpooxVr(n#U9MPD780k)1wk@XbQ|AMZ5=qCd_jt%Q zZzaxuz5{4ksqAMxm$!5@tNJK(ZG$3I7T$RUDy)m z2{K58MZs%t0uA8!@(#l)4~%h zJX_7oVd?`?7zX&ZL%S0PTq~QZdd-#Y)X0l^bB0YK0$}W!C@{_FZz4(y!e?1eYd>9!Ujl9y``h|i=~z;Y~S`Wt5LWi}qI>qjlDp;K_(E5iB**nSIW zezp1c&e%2b*ouKuH=Jj|cJM1Ipjl403E>Pr+Pgbzthh-X>jkr;Oh-h$@w0 zXPi|43;!Y803*zE*F-7irt`lNvyG%s0GD%@C($|M80gk@6f#Emi&qc%E8^W{IP8tq zqpK}7Mz%1+dYQUCsYvt1HQD4wffZPVklRsVmhzk8hj}1^Wx$RFy_Xp4IQAiJp!?o^ zQ|KI~ItlYH_n`g@bsvjqg@qAKL7u%l=ufrgC;Oe(JS598#S^-OhZ-D&p^W;6#d-e} z$b-}^x3wE-neL;iR-!Xh$ST?1!S&bEN9FT_8JV=?XYj8|8O?Bv^XD^20s-l3|LU)aZ?vLNP);@+~|H)5pIAE8UFDIK~W;^a=OQ-J5MXsgl40_w}1WGwCRmByN4rV3@N8az^OzNuZwPB z>teTlUNV~XIGL1p;mtdN#DV0yU%mgZ+Wy(55hIg=@McA0d+HTgG}%ZsQ|5L1fU&zb zRxHC6USMEO-`c*RlZ-42wU<$NR{hL}1anvBm&OHsfO*`(Vidut2%Hv>6i;J@NUy7< ztrT=+NAba1cPiIj;(+dOUqekVzzx}@1lmUN9tInW@C^fJqv*Twc-&_@mLYq=^(ziC z9xmr*Hc3v@tPhvY>vTIp*{q3^9#mN=z)*51SR@a#B0?C7qh+9l|HC>(<^fIOrcNXH z;6h>yf6r0tyHoz8-X8&4phJ(QuN=wpJ{ZAMGW5o%9?s{p34bIzwSaC*C~#^ zMmvMT&IS>UK+wbe=)piUV--S~07QAmU z0fl|M*hfrKY-j$?5P^AvwvpXNYack(R=qh1^j1<6`EpPVluXxTPx!J(D0HIM0u(@i zR@-{hk&sBD_t8}Q*N##KG~o7`zVYogcV6m+VQL>>b2(>ypC~bu?G2tzG)_otS-Xqq zK_d9PQ_*xY3iG$Ip}UZX4A=C^a0E^Wv?#0$dI&ppb25IB$p#=UMU~9s;VIwP5oU$m zBVzyKOUwA;d8lvoS6+ z@a+v-(xe}r3+`W&IK=t!Z`NDUM8D28H7YjW zJ&%v?u_s>n18Q!*8<9g!pE;sUAeEv!I9ST|T3}CbvylTlh1oVh^=XkLwT!!;!8nny za}!e~xp$4V7pww6Y|rRdFT!h})Q}H|MKlbwj3)6_@Q@ES#SoC#Fz`PJ^Ts8>&->a@ z(#WonfJ;MwFD>Jt!-6kbCDQ=@pOjCP2elbWLKZ(uopmhx#E@%hHiOGmcS7k)a~*oH zw*D4#DV;>#j6fnC%sSjR!Wr5!8GZ}Rj(E??aAjtSTuN^vRmp)?GiF(c#ao8vBO%z? zh6djtp(i4gE?sKQKt3cgwb$-;;uE1W`-Wn&7RWJqQO^49%v%BSuG#!`0Rdf5>p#u| zXJ6)9vEyE`v*#no+qW16_0dq^o}Avj|65Dsq+b=TeqRA?eJYV>xC0NkOZh0N(F&ZC z5l)E6S?hbS)7vM>U%WTqsC|Jt_Lh4|Z>OE@stP*@Z{ongZAyiypn~uJlYVnXC4s(& zhDIPGzlXBFm<6y&If=Q)>i1M2+`m7)7dIhF7XaK42?XGtln{`MT-|DJRZ3Wu4W;!K zTF(C8*C_Y8tM=zQTq-@X42Cl*jYc9EagMyY0;o0R9Qv49MYoq&L3Y+WWjGAeSs(%N z-h54CqRigv`A~?3$);-QSSAM7IY1`(eYGVg=aM9;S8G9W4bp?qA~V%H0VG~Lf$toY zrj0~&$5OpBDc2Gd4f1u;Xv^?R-a0XbBT4rOPWf@>hov7 zYxA6iBv|sYkKD7m=GW{HF`1R}s{^Q2a}hkc^?fX0wf~(5s+fOUB%*w6TUKleJ@k68;XBYsYI2 zKibFhUMb&-s_u5|yC^R33$_dRB0vGA`6tNd_v1{x)2UOspTmBSxRLfO*<0+2P*foQ z9)W6a-;MMXpZ~uRj9EG-)s!Ib@APLnV|x^4;lc;J&b+ME`!6em2C1<>?J}~rrWN%_ ziZ+Jj*N~*mvO4It20R_cd7ttkJO|d;2C|M}{J^l6!=}O5zTc5I-az@aDo+XEjQ4DX z%RcqiN7h@lXe_$AMp z?ir)~(y22nD17bkk3xHvR{96^@I(CfY|tjeFQ;)43YE9$VLh(eo8>j1aNka~O2(8E z#UuzFS#SM_mDaylz_IQkN1ow^4q}em+cBQc6DOBr4=cUeajV9@joPU>^;_{$=1DLI zF|F*j4DNi2E=rc<1^dD$U4SSyD6`bTuVQ^X5jvb5X=yS*44x5|N3SO9&oc*?&-ibW zscn>}YKllsc@f|cex*()TwBVp&*a7V;|adx#Yiu#4IyGPV%`EOH8ye5?5dNJ@Fo?# znCD2uw#RJT+7+`1B@hi3KQtLDLFIc;s~4z0KD*EO7~w`|80zCbto_Pd_p3keJveUj zHH$P8uOyE@|K7yTyB~7>t3aHH+PoNM|;leA-uR|{MF8#Psh2KD?A1UEOf{PFn&x(Hm_72!8wO>`Nt%0aR#fFQHk_6dl2Ug(bWd>8R1FhC#wZ&M@Az^ zc$?{PR*Ouhrt~68Z5t3GG;|_J&s$10ZwO8Wm2Mrip8Kfi+SxvNm4C@rEd7xlv`_L@ z)bXC}k6WH&ru?oi53O)mcg4Xf_y-#_CbS63w4X^CpMHeHGVU;aYhg?)L2J>@2crC33!*K<#uIVm8V1=_L;0d^g? z#TxR;NAQAypk@Z)Z(lp$W7l9fXOFYkJl^FAlam!>EHIZH;t`4^qL@Tq&K<(%XJ)fC zG#bLDf54)1oY`UnRr)QWwQaDDSqOue^bQkbe$a-rz}B(F6^u4XlaEuaZt<=;QGDT2 zr!Icu=E@h*IJ976D+DoB5KAHjY-P|qXg;WXr^)GB@_DJ%jmq)M!irPd5)Ii07& z#k{7=c_RoHkJFmnKXwS`K5j={!Q9X~{xQLma>PVdtXfBaiqvjLTqtwP?@{t9AP-vq zH?}oK@_}Z~CT8KTKDspRkX?(%j zOE55Zr}f5?)lh>Y!RM)*BuX5hm&KTSG3fr#m}m0qvTnis@=g^L{bE%!FYDtmTT6+p zJ4FB@jAMMFOXq@S4n=cYTqu~`9DlM5>Q$3Q;mShfDHT1^ahSd1YMdYO^_abobBL`p zYQ2n-I;O7rVKOx;#{pC=RC2?)a7=w*r4IVhci(~rDyoWatrzX(nW!F$STZg-0E?Cz zd2NengCexFciU5APgH+)hfbW#XFJP95D~hV`y>?=ImAJcIOK1${QBwz&ohDYaGn^@ zkJJ!RZgG>crGdW6c1PA4KOu*D($4stKvOHty+dK$NlyiomB|w%SHj|+@2Ro-=fyXV zS0yp!g2C{CDhjo1+=fPyq;>3oxAd=2L1K#9b4@29$4J0bpgbDKh=1&*xKkxXOgGEU z*1KWol$7-#Pt+l#7=mgP9c7D@^pabwkDJm51L&y?mW;&DOwDKrny3B;JV5f zjR`mLi*2i(j?s)a6`F_yYei6M-Uf#4@yGNew<+t^hbTclCivv@q zalYis`Vehgs%-oVAVf1sRWmv4dD-F_{8mNxG!s;A0~>l`GxCF#aeAF3%{)8&r(0{3 zjrvO;+S+?%nh!WQYqAY*8ehx86qWRhT(jqgTyV2brD~*&G?@a$WGJOD`R3dglFomJ z3g;bU|9p`V>&t{08r&27yw`(0#d3WC#;1i5jCq>RZ# z@Dynv#{PUZmH_o$!H_qKd&ePP;(O*&=NYpmRokhB0W3F*a?ghA~Q1aD#EPU8vtaM*Cg$CcPdDMnYD;AxQs^#tEDY_$d(d4s)`Z4e% z)H~U!e)nadoIcdKg&n;~OBNN*t4eUg46r4$6Uo-L1TVilt}n*iH?%d~8)kvNKbK?u z#I3+{s`ru_Yc{otA|30js_qSusa%_AXGZj5GCppg*pjN#w{zMLXYh5 zbw?NdO%k-Qk^QZO-4+B|B!b^lYJ*xSchp9alLHt!WL17%)N2|+{jb-%`A=<-SVKg# zjICT5Q?v=sNfeKYr>#(AE;i2Gv=ZMj+RS8~{k9sPy=uLqML4pj}N>4^Nx zLWCT>=kQ2CUpCljxCK>;LGGjStA6dnmLm&}(Mg~!7Ysa6f8>z`;Y3<|^D9I8D)UA0 zL0{x@{Na2^$2)57dQV)s75k`l4UF!s{QdeLO&mo5CQA<3@!82C3IWV-nq6@p?to3} zxeU$*Cir>{P)pKtw+1bG*P`0m+1l_~)3`RBkj$#>p8s8tO41M(Y6JlfE7aRgAZK^% zY=jXa{yI;AIcD2~KIT^tLi1mmt=$kS^>d#c64Ak7Vh%Sk7iD7i<_~BXqcG7aHXOvW z4e{PSfAZj~rvOSSs=ABQYH3})Ucr__|41c-gF4P5=)SJ^cj=lCQYP@!N7k+x)p5DB zPdVVSgfgrkrJl)@Pd?@kRC>hGfJ!XeFLxj;#ZMecNH=UhR=`0<9EibN$yaRSM}9zj~(!zCIKDOa|ctejlt}~x+ugK!Gh(f zX3Q|Guvb0syG^*@xoOsH!h1f#L7Vm&AGii}F_QVu;$!9eSW$7}8`NO+a6U z?lejn1qCK`J&Pn&DUVL@Ss9ZW6G?A?!bp;L!+4YB*E*{*zT*?#*fjYO`q(oelRAQ$ z&wGPGjFV-$x7U?zNwz64u%Dc;zB4u?9aPzbCgN2-=kvS)USTkJ=%BzYfD*q}P~i`Q z><<+zKiSo@;o2KMIu6GkaO#yikRU&flMPCh(DPc++ngGa!nQrZZymtP+K zEl=^E1;nXWjec+5hp+MWsBpZ1>Ta^T^2)4V8AHl3DapmJ{b47*gTR3=Q}i_xD-n!D zgB`35l7AU9(J-=FNy~{V>B>}#s7NkHD_gx9sG*RaG6_DV8xsqMQ$yFRp&Ur5s2n{w z%oPNv8Zen+h80=RoxTcqw2-O%aneQUCH|9%Pu6K0K4y0(BL^E}B0E{LK_hVW;h37h2y|DX)U|4QKen@maeC(p<(TLj+2Y@{o*+3#H& zVN(?-%Yk{w`ju3sUe9Y<-7^yfbe|iwNlOnkhyt^~o|~$Rr{3rAoBd6+1kar;5Zc*X z1*k<-9@-ht|MIpMDVFABf;A39@z`jApCPc0r)t1w@fqaa#8Y+mw7X(2PnaPqbynJ% z8GW9@m8^9pAI>3KyJ4@T*G zM^#_x?HT0?cueKdLb|=L=_m>=m#oZ+D=cpT#v;kgBM_u(J2nijK^$_s*6i~P z2|f=6(hh}_!!ofzLd$P3l)8HO>nomI9VweqJabx6eUer+1?8h>KyNtcrKF+zgiSLY zEORnvnPdl*S&*`GDq#rDYn)g6+9T~Nq-St|9O4rnftj3$6G45Dp0Edu8~r++NE$0X6&4!tGc zXwOQFO|X!9gKgS7b`8J=U#T;+jm{(dEoZY>$l+}67W%`42Kdh}Ep2(F(^dDpp}R)w zqm@6Z(uLAxZ(!Ucl7C^)b9G{W4IgR<7{4*){IQsfTwv_jg_of{8aE_RQFKy7E~|{cqmvoce&K>RSNMk2~hCjuVrq zJRJnfx&vPQ@_#iPo=**08b#uf*PBH8Fo&z2yN>WW*Y}ypTi?AR03IH17B%xyWWUCT@Plo^a-4|N0$>^7lIJM}@v@XT6ei zv;W35=@hYnPbV3mpxh^J@GirpVBunnL47V+Xw(0~^*qKa-Z&0@u)shd8*tH>44frxfjplEujyK3llEoki za{@rlJ;xdDvBxchBLY2=-(D*sl(J=2f)h_`qS-7_&v|L1CQB5ReG?*d?7SHzcV+RK zO5lV3w6T()$ZD|NaUM$e?8(P~ZpuSRZc8_&lEQg*En3t`uZ4qGpv4&Z+@v{59xAqt z6*oXY9)+9zRB?;1oQ?Xs0AnwF&3v}pb!64|XQUqOzA{>X6gClv6(j-KqK|`~8`)bn z3S1;@?;3j1176LzW)L!Qguxti{>BE`NncDQ?M#208AO4eT3Rl$_#H4VC;@>vTgxX8 z&Z#6+F$9y^KKbtHp6Wl(idv$hM+fzI;;k#=^iSm?8QpcmN>q3A4hx6Cd$zn($JrCH z;?Gp&;-Ll#4~5R8Ntjpd8&J~Ajg(#}JJ{`v#3R}%3_r^55xgF0 z#Ldm3LWxqKOdSpj?`~nZgKtheO%!SWaZ>eGeht>Yw>wTiz&nQxpL9#L>YVIBn%Zml zyXTxFr{)o#j%$o3&ZchfhdXo~&DI{mQF`PL+`yyrE0{&O0*RB(Y{XyRTm>9Q5a=S- z@9QVjdIm?2q3KlXD7pdTB$h`vs>+XxFkpEv6wHp=&xX^~hcSa?^NM11Z(L+x@F*;L z9@MsvL-Lli+@P^@o020Zu{i5nghVER=ox%hzs?9cvIXz9&zN4*mrv{{IEDVjc$25r zO1huab3PgLj+tS^yKkUh_Ukzvr-9{3eAwys^gcS)Au$T?jr*QpnfYmKROQRpi;I6g zinn4M_}9s#w&Q^?J@QsMx;@5|fzUAMBaQA8#!%goL0E%$R8bomuFFW;a z9g`&@wKUACu2vNF@RmR8mL}`_NvaSDJjmNqW&C|TAeycE>Y+}dpgu|?j{LIWpJM3M zs>b02fV1dKPWJh|0#-bi{^u0ZhFe*9vG2Onc9BrxvLt_IeA2g~`*ZBQA$C(*z}ybY z44fu|>lr{GA`OY)we6Rc7amLVkFs?oRJAQZ1h*6_w25UTcf^v|$+S5!;O^q8`YA1R z=(hiDAGlOc+s>?1#(}K72z$$ad%bS|vN2Q6G&`~s1LNby#wij(xY{o0!kaViiagm# z?4xzZM#&MWqj8d}4OZYB{UJznW~dO$yD(MS+Ba6Y`1>C|qflq#@ZDFBmjIPxFhdxk z02UdT#jpf+S03{Z1CensL|GUQ&v|C0RQlm`c3#=X8aE`8k3H#J+*@gC8eC5Tq2Mmc zqqrG7Q28xhlv11}m*PWbQcPMj(*;SzCpLk)MEVEnpE3 z5_YOupAii6+`4Cf$cT(CA~%G-VW`Fzng+~Sl&oV!zNV-Z1*eM@Rtv&)P)3&%XGXCT z$OO#(I2P*{w?|dR`+7isLGd!AC+f|tCfj_~BCDyp4Bgn+`EhGg%w-glteXkxD`ZLQ z75d}kiN7A@lk|1V765^tByjhKoBgVL#~!Y4mimEjb1x{$YTMlwy&F1!;t+9F81S9c4B%P}P`s17Z@qZ3eMkY0WG#^` zg{WWrBLv;fKGgcdA+_fF?IEMC;5@Usi2{i6@Sd_3xLw>jkCy?!XWqnulV*lGN>U4R zA^f{5&2}t!5tut{L(!X5k3~W2;Lw)%V8pV9{O_*WazcBp2mf{w0#C-WJ1 z6?TUCKr9n4^e{4Xylhd}k`%Tq!uNvc%cU!y7})9;B=lQ^c=1-A$5t*>~u(0oJQ775=?*)I8(pPM*YE&Z6CeT-n#OJkS3PW zI!cx-RUehbTgUz)(T?B8rDJEp{Dt$^Zl&A{cv};TD#`hGUGPqfH|x;YL}`R2q!%>iBQZhSd<~ zcYOe~phftA7gqat^K34_#J)K_$_Tea!iXwhNi1+uQ(;+9X- zO~CU~sTTZ+|1{9v)<3!*NYU4O#NxfMxC9Pn?g=n;01xxWzqzAD;>>kS@1=}Y>)J7V zF?pFB9DgwR3dlvr*wxrA5hFXb8}}7K*Lao_IqF8q&JY~kNNgWWcA&CJSoDWLL;$x$ zO)gV+`{3<^!n@7DV7HUaW@Jb8rF>~@4~VbuOwW*WF&8bc4RYmk0-yXdMdW&<;DyFu znBq&upQm<+F`p`NA0(mBio3k@~ zwDgNKdp{fu97I>@SCEI(u!4ajy>B>gXg{Dz5GH+J68)A|gAZ-k<`nk;{OlRCmH@ zHV<6_k+-mavZToe>;85Ti-~B+Rx>?EKoZffPdU0S@k(n%qUHz&0WJMhD150j?jYap zZ7BLWAmoJTh|nG{{aI?X_JuEjI6bP)OOHFc=n0Zs1_%O^8xQ64-#|M_{5b+Are?VJ z?x^BLL)h+3ilzV{G*Rbx(f`|f-H4**m?fEZ<;(R57p4drA+H$=@!-Fw(d!OYzt5G% zT-7V}`e=bsT#4r19?HS%9nDm`O_}5^^!pXp=ip z(*b%438tW;in^0er}8NONc3&Ap>Cnzrg6diM-L%?`YMt5|N8Qk4m;HUVj-IeV!Zs{ zSb_#J0})Rk6$x8OTWiOlus(66I|^`n%qwM8WU*G3B3GT_3$7z(3kAzEi3udd1!vHD zL?HrmNinT4dHcpsyow*2mFmm2`KY`rEsi~se~zoH!te%;VM4u{zJ!Rz^0>sGf+hA< zxT%!{;{b&x4!}Su>raS2yx|w|*+4Z>ybs`CMoPY;bM)N~FizE&iGCw!%g=s_>nARs zUzuh!Iq1e|CGs5FhuK0eU%bM&>@^lQB$^%APc=znQs-(Uor7QiY7eUyly z2iAPm>=zyxEAy!6o>zJBU4C^l#>B zOnVuamZ~ToGbT@k62Y1!PE+Z}H0k1&DM14o%o$`u2C}B?TkX3K*cxnxWXc4-6Zjp( z#1IrShqB1-jrQ9rM5$I(F<6&h8gYFt6SIfb8n||*YgYUjZe*8Xhg;J*45hlWBfLv( z)c(_DDu{w~6fRVj##oYilg zG@0dkdRj$AdwySx{IS?K7eBFia-cCE{JjRdmxO(_@4;k$+(BOH^Hvx^%X-uel<_~< zuy_xpC*-CzYClmGgniXYWX4c1W~O4(G-mD$4#bEH6)W(g`k}w65olED-x zCOO^$(dR&PdbhKO`6ex7+g;+2DAJ73;FYa>Da!QHmJaTqqig#G?{WkY#5*d%>{qj3 zbO7qJrX}oLcYTp=u>YIhX%@5w(isi4LhhA%LDkhUI~wnvQJmML^8@nEYj(>~2zmcRd9zrL;GjcB;4Emd)$e zGntH#RDR)j`s}Z|oSW%I|HvuFHJ`I{#Te7WF=VBm$`!m{jEe5Q_DFT5*sWf0J@)Z* z6*O(FB1?q}o#B$#a-6(yAQWn-5!9xHy|S2UMq(Npnbm*iJYbLtE5a#uGJ6F$+PuKj zrY9PnT2!lnI{`Pty8=-3t)7_?{1%TT7XTk1N*4 zw^1ocD=C|)ODr!)BX`(5DK)Vu_6GW2Ll+0tTKh8_P8K+=hl%)G!@!3v(yxYGRcf$; zNWP^Cn;cxxLesU@hvbx4yw}p>UY3dnu8O;KOrs%0_2I+8b*CBM+G@@Avh^_@ZaP9p zui+mTzrQI)^{7JcsGq_;y~dsI=)h3WK_z@BYGWkRMDDa_3P2A39LUHto$Dx-wjad4 z-p=LLAeXV1qBFrQIq7hL_dTb?u|lO6;T+h}xG?BrcWZ~TWF29l*Q47bXcCFpBx=eD zHKUR~rC2hrlXW`!L)-`Yo0;BNc^G6cZAYbbCPu=G73tH1Gac|#+YLez- z^;k!*jXy^cx&CvOuQ&2-;*yOhkLE*aF)f<3(ka7F8V#v-;v#hPnenYKi0hF;y&$hW zmR;PfkW8gUQdB2#;R$HmHdGt%j68EWS(1}=6uy@FyzR)B-2J#@F->1T2}In4BERe} zjn*}P@`aDX31$Xnl(aGxP75N(BKU=K{*tudrQEn$Op;R`*08BOvnc13IBCAK(6erY z#q>j|F^I+PmyymB56ux@9^Si+k?Ag+GTi={fTnuFsC*WQqRI zg3rP?GFQ*p%CG98k&$vV#)S`r4n84NRh3hPWuda!Lf70yV=F{6SdnL1$h6>bo!7a> zDa7f^NqEE&sKc`TqR}bxC+(W*!MA@lS)!y=fwBZ&-b2M@($G$5hx~~dv+HaUL^y07 z8tUe_e+TM?Cb|~sffOXZH+IrZ@g0EN8uWPe4qj(MXYJOxd(-BC)3Z>}!?^F`rS&~k zuR~M9I^Is1JeEO3!HAzAuj$x<|HK#J$I=IG@x)Ow-M7j)3{58dt;mY0_*t%HU1yZ))K$4P~0>+ zR6@7krDjB90ZfA-SvOBL1|x@Igld`Pg3h z)?}?u8TltDEpw?#3U#C-t1G?IuB!+~bTXJEQ&T4q=E58J6=NrR9be&TUTAMoI*b(m zp8Yuyan1R_Se{Lx*@IracH%Q`LNedi=o? z7DI66YrjiC85hTmd!SQ6el5Ui!}43-MB*%w66cK^wCgd>t94Bju8J#G&C+PsAsH`n zh&5y(Rj&n>a?T#e`$Icwjy`cNG@8>orL#0+T=iZIT}1ioL7*+AJ*h673#M|!DQ(!D z;ku~OE;+M=rURohBC19&(xqrDpM$_-{H~xMeR4g%U7g|mAfEr-cwFVgICG6=pK@|Z zjz}!JzVi=nInA zp%=bV8|%tHL=WqbUV86x-Oxjgk-Gp64}l}PyLe>u69!G3rO1(_3D#o~1GhmwEyM72 zJQv83PwPead0S$unTnW$w+h8-02n=eSZ4*P0p-wBn&bhU%Cjm3;mgw)@Wk2Noq0e* z`VW_PzQKEY6+5oBkbX0>Tnw-3I}1{Y+3IB%(eiESg#!Hgg5acyoPc3aM1i32^)?F7 z`Uz>I)tq=tlu4P1x}2ZAn2MfQ-{Kb?Ce{C$?oT_Rl5I&Wq_YK!`K~y0&!&84@3$5R zP(~ufy7_;eJEJm7iZBEulA615HmW5|km!)0w5kA9M&-K~#P1QRNQdEbqTtgq7lOmi@g~M{FO0QkL zu`&P@B7T1fpHK;OLHdx%ILN=euxL7)&<1;1nQ33-8cbk#gLVdXC(va;w`7=qf?l?< z^KwF^C~RGwL1 zPl%!ZY>j}J<5!pJp%O@`77iV|dgOl*dB#!h2y|K0t=x}$jN9b`>D;dU1XwLm2*hJ9 zI%#iymt%;~=@uEsT8#iATo_rqX|Xj_E1Rp?Ky2C${2OFJE~YW1@8plbwTAR#vPQnn zXiJQ5hXlDl6-v8|A&@E?H-xCn;44Z&AxcvnN2!KtT4>>-gp5>+irr+1b-<)l@|da# zqpr5l9+5`Y?L>PvYT%UHw>cNZYyx3u3{6j7s5GmR0m`@t;x{roPW%J&t?My`^GOz1 z-9$c(jyC`sVcCCsAkXiH9T@oyE>59XwMzG7mcYd<{Y5vZsYKL>q6{(zT=0l|x@x&P z@40#rp+N}H{cVXmy*S?@=SXWcALa@&4>@nS$)}0TLS&3o?(LqGss6ajVwGcF_YtPP ztVslxdp16b`cUFb9;6TdrkumQwMxgyd`qYSL00ZwfEE5Wmcpr*~_M@ zJZ|zoqpT6Kdee&+_eG(*PcdR%>#RfSMAvcH*XyWCS^CRxXcF@QWo&%ncU5IYXe&3@HoK4nm~(p8ou?l;@ph5_mR$ zqeCu+Q~IkBO^v)h@V2YlJ7_)xw}ClBvL{J`x!m3S*)*c+JI>hBUW{cZp#^fT9lWzm zPV12&4@E59k;E&B5rZbHT?~P1rAnVm&@T+NO z3YkQZ%hL%fO3thLzWgZtat()qP@R?X;}A8=UL3CI4^vMxfpZvK*>+Rr7$@?NI^>3$ z=^Yf4@|l&wN8=fKQC$b=@5fe|cEuSVNHvzh_9+!)+gx|;MIiOXd>OFBAHqVeowd>= zH2s^AXTgk!)gt?!R76;oUZ#xajfh5kpn5n3*)J|&57op=E$`Q$7+k}z=w%L5eq~ez zbZ#Y!#Ukl^M#KWejmm8D9H9j!4=FDp&Vg)%64~UK(Xgt-$1};c*(O^Bwi>^;6Dq-< zrA-&tt@8RuslnFgl4mPr(PO|wXA6HmWbVuv#Fph$f5O_w>d zvMt}(N|7uuOm~7BBGLk@h?N{$N_CL7C(ovp8ak60t1Efn31T`uZwF-;8E&V+E&hV{b zwU|Jc>StOFhy(nt#$R+*h|`Cg8f9CL@d^7LQS|ZRtkZk|vk>TCniY<+VSEiAiHfVm zm^+y&6H?BDz%(mP5syj+yqXzqJ@1Z5NMI^`aZi7G2+G|Y8T)0yKUVY@r~h>zv1aU~ zT|vb=jy4LO$*V1yABBGN3Gc_)`cyKx;tfoy^=1egqiGQ3nS{6});3%hBF>#5L9bwK z_m4|SsrgrP-gy&;T>Oh5Aro(dN0C?lOfE#Y|5bOoGlg^yrBMV=z(lU{rtBDcLa>Hp zn$;HbQ9@*dY+i(%2iDOYlQV}YGiEE7bSbFM|8XLrMxf*Z*)_6>mLVXZs0G=}CK?>* z+5W!)BbV0skgP}`rGL5GkW zFquCE@(-{+k*k^Er6M4Zxh>OLZX+kw(!J4s^F{TNKd1+HqjT!{7@0wDH(S$sqe|Rn zQia7W-(psgSBqP7D5Z2p5d`JS5P*+{08cv6s`r#>c&$-ad!S8~vKwyiobzHBn3lme zCkl1gD@WZc+G_4cvj)0a1+TJV&ZdOpZYs9HOG4H-^D)=^4$|vP z4EwEg4<_q5uJ^s@Cl}H~nzCu@6QKx9|E9G*s^B@ajH35mx^!%mzW_(CF2{K7VhVV3 zsKfWaX_xI!Tqu!Y!>`O=E}CCOeCL6_?{S9 znN>%;q|!pfElM{@E=;6Y)VzqUE@Y9R{XvTG-0EG_oKr|neppc#^VXZiV?sJ5G^Dy; z?@wAZJ#v3B{j4-6%Ya9I2gdCO%&vo7=$?*;qjV;wUcxrvBgg{S3NpiksA?$74Aj8bEa(8gvi?BVS z&+R|i7BqQKGBX13?1zSn72+4_q>Zf~>&_G755QO((wHlC8g`(qB|g8R8fsd6X_(k= zq#V)5^AxM(qr&0xsqVRv4EyI`;Wg0ya&S)S%e6XhY4xuJ;NvC=i}~Q2=|r)FG@-Sw zmM^V)UBq~2sCZk~slNL3i{LrAH3|5xO|}9pTVm)~CX5_OsP#H0OQSdHuW6b=8-x^E z#?5L;WM6x!Q;fBA_Cbhhjp@ca=Dh3l_0C>b@Ynk7+qs&k~qo9%6-LShL^_?zphYn!HBg4pyio+7Tg$;1^?)SW1`7l_) z3RpRfUJW&SSv0axuRTd2tXat9=1OXv!c!L#kS_^J*u)YzbfFW25k zEJb8(69Y)s9~YyyHytcoR$viF9w01sXp<%~F<^foMhl$uD9P-Ix9P*$oL$k|{y8Lf z3r&wR)XK8ic|DSUwBok3@=Ab599R>}f`&8TYl70LOab#+))a03rnKQo@Hf15BIaA+ z|GHcva9R{l`C3wU#5BfOW#biFq#vy54!o^yewt@<%5_ekw`TK5OJ;+g9!I~8Kp!+l zQT!_qu5t|-Od-h1x@j|7+s**R5IaYS^=_}StgoW(5 z8p6w{nt?rX4XFopu0+GhjrS@o8cqD===5THT-Idc! zlVT^e8~|`10|UH?p~skWHvIFk{o9Pvhr#)-mF=O7Qy#fM9h^Uc5Y-GJtJk_){Yx=b z9=!a`g>}6|yGFy8Y~3(12B_}0Fo||t+Qt*?;?tXsXNecp(n1Ph1~PPNilbFevS$P2 zOAC{ZJ}dBe{YCk~p7r^f+Pxn zYsUQ*(6shbV4D(t&0PocT&u9R)o?Mv4d=wbzceKRYTo$G(HrFvL9irclXreMH^%d(AFTMO0{CAv(kArVu}Ya>887<^ahjOp5-Dm^=n2TmDA=gh5N5vnw)*ruNpN` z(PPtI)CUT12ngY3`DGu}!+-gthM5at76)!a5onJR(}m}L(o&;f&IbK{QJgy5PeF$(-qkhjLj8prAdofQF}h-vCrQrVfIN-x`60Fz;E2D< zCx1xTy%f2Xy^Em5B;fp8p%!K?Q*86Reu31^!B>%G6799E(%X?@{5Q%~{Qi}}!q7?? zt62V8a6JPxo7Nei$3EKz-hJpXfWZ70HLR+ z>@Q83y6u{NlsRMm`KELdk?mJP7`6E}U1F8l)94k$89-MT%=YS2lSt8*ur~C;-YRQj(YL3ka^uPl9g+BD(Fy^;M66 z@(ezY+0c=6t;OHWc#snxpH|2B49eRL-K^9Zt6m;OPEMRyv%N8xl=s9Er5)YLDa$e6 z#+vXrL(?20T?an_?cU;XA87?*db?bj{9cX}jr(S;FZ(BWk2uF_T|Yj!c_&IgZt8G7 zJwyD{+gJ>{9ZG&L%f2c}j_}=nj?$k>^@~30Qb??Zn+|9PIN5GC3*8Y^O34at0kNWV z&0TG@>p&GXtH=H0QM~{%vm|gRR@nlxA(B1dL94%20c+61nKQ?M2&ZkjWFhVr%)3nC zWE0n3RCztJp_b3ksFU1@=_N5+)o)lcDy7HmJ~5zXd#|NTt5d9=F$zA?#yKT^ruX5W zmX_yGGouOhs^X(-{1kr}mFh zMEowIT<*o_0cSBq)i|`6{D@d|GqzDRDSUwc5K!P#5if1e*#(jjeilUxR?xt<=mO3E zKbbE+F(JedTiCCO9@@*UzG^lVfrhM!-D13ewp@OS0d`0Uc@5&FIxnN`{KO{-##QBQ zFJ_MayuJ#~qs^TVpRA;#{pFW$MS>NY)TelHXjSr2Lphp ztrJ@?7u`IR1_o)M@wi*X4+;9$;#k(G*H@9OY$l|oV}U_ zn*5Qh4quHd06Qy7r@dlPKR>*A7Gvr8S&6cZVXppo=0-|`lR+QNLZ>SU`J9&*k_KCaP2!5NC6a|)3)!^k>bZHF zaWsRiJukhTky2K4c8i{hYiO%E^NLqsVy~|02Xxpz-kLp*RNOxLG22SO9X4L(YHLU+w=qT| z+uyLFid;Bg%NLL1Al9LWR`IcFsBxp_*B@-LAxK1CKB-ZzukNakxvsq1 z#HK^6;lFrA$K$QKLi_u$WcDyCr6go-(Ss07sFTp>p?b%inC{U0@r zeBxT>xgh+JMYbnAtl>Qo*28Zbl^u{%Ai8*}(J+aPkVNB`fE2u&rOR0^y!R}P3c!V} zhee&K%y28=CeFmwG*1^G?fEiuHJo_75fL(Qw*g`3yT^E-U0g=fzoy(O^RqP+`FgD1#!>;+f!(@`3rNA z_HN`3>66SX;v%yzm|W5W$4>%aA|Hkf5EWRh&zZnV2cv00;_|R`5JYa!Vs|HSm z$aVn-0vM|!I^BdgQUvUs9U!MI6KnJ33C~yAODL;#W}~b_NVrY)1Th~`w5dpAfHJK! z+E`P4-NNze+OhyDJrnW&k7)(A=rpKmemZDcTMeTmbKX4-4H8q z{?~{W1&;ian!I~?*L$A{q|OI`Emcx?GEHd2v$DR~3Q$%X*ZqkA4p$UpZsa-U`ck|( zs4VR63=FD15RPhUKEIn?uYz2au_~3W@PF}bP?$J>^*Rsc+3ov}bq=!i8a;pp#$^lF z<0j0(0~{|8!O;?vFO!s)YKj0K8+`txH{bID(puamifIF&J36}Z4_*Ae&A~cg&Z@SA z%x2bsOZ=~RO>0Rjg5CBvqqN@N-BjSQ!s|2?&$R4aB2^Ux`5}uHLge3ZN#+IP(yst) zd1Uq{AbbM}eE~?hEU(U$Nem3IcM1q)xYkF!wSWauu|QlsX@mmDTd2U|!poF`eZecA z9$xp8(ky>$yOZ$6?wxd@Gw|SJzQyOLX||YJGE)(znA_*TxeCQQgd8n#R|gM!aKj>% zp-ocJ@Ct#DCA~ZHvF;L4I5Y<$c^Xi^)QZ+G8};K*x61%%=(0h3 zxq~VJ>41o;7q!Wstq!>uMi@z3rRzuYE6oNUen=5_L}1-P-_;s&nQu(-2`Z%iYStTZ zMh1Hlc$b%1=Z(~o_9B(*L* z)2Q83i;xo#T^6Iz@wT=H!uY;Oj*p1$pMZ*0E0&#r_RVF(M{mi~1QKD5Wh?mK}9kgIZdg@oup^IvX$>PIe{M?H>H5<%-lP1M__1LBE z>C{VJ$!WtgZu!VApyjD?dSg3kt;ND1S05paHO*1Oc10WjQG~}4sGR9M1noMY*6=WN}fyoJ!=+Y3yUE2dcoz=JO_p$RonYe3WWu){(8L3e+3@pVLvJBhJ5>=3@0>I?xpymiI0sSI;wu| zi<|sJ>jLWLsltB;H97Vh@^s*5Q#aiA1-T$h#n_O96s2em2>+7CSLnJ~2OP`Zj%tub zalnzST}~xTb)bFO0fBwSsF&d7bx;bL)$`jxvT%xi->j|@QZuXHXX~xUm^g{^O!sWg zu7>rjIzN;kfx_SZ-Wa*o&N>(s?Rh6FC7FoTu4$VK2)y~Ekz#PFYwG*=i7ki!;LSFN zu?zFdhoEC<#vUv;Wsmx8Fnd%;dpkZLuBOYqSH%>rGcmW=z7K#({b%s=+5Nc=X`5@Ggmg-KA44h3eMLW(JYv3@?zt{pCkdae%f_xht4!g+Asa4u@4 zxC^ydDW}srbG1WMN;W!t6BM3x$Ly@3Qy_P2`ri~jW6v9Xobef>79L54oT$unFvx@S z=qLj@vT|40OIBE&_KLOk4D>c@J%Em0_9dr)mH}xTgpLEyh-=9R;iT>npYuP$1 zXYl7QfCLOGy;qmo_z3rR(S7=Hm;1)`Y zLvu5xi&&FLh0Xpv9~`f2@HF<~;gg})!BRvkyHwx3YW?fWi)c6pA!a!iP(O!^3~Y8a zH7LNML03X@-t+ca*y0XKIRO%5@DLVLpjCohlL$wa87U7=fW7eHX;tU;)8s>QJG74| z+PX2vOw0S;au$Ek7oayHxJyLBE>8{mldP)kBP z@hsgAmaupew7wZu&&}=G(>DIu8e{^O9Y0Z*kz+=LIG(wj4!Ey%a#nEpIukFO9I3f$ z64qwx+sC2T2JNuHc0k)-=0F6(s`DkX3pJiEWF}d&)4N?CSZHRgV5Qq-hN!N`~jaYb?gJ8Bgy(`=0^GBd-32s|*a)WtTWPY-|S$zB`(| zUjMvBh9zZ*l?Gy9dEdbnC+^iKg|jj8ES4lzl?Zn84SL3d13E7KuU$dqMHP!@U~fKxG6aoK0F7FX z_OBOAdG|8UQk1-`hbFfhx+*?HaSDHGaZ^(GfFYnUWmzp{X_!Qx+Vr*P2X>Xq5rY_8 z+^aqj4USmzmEcrmYit@R%3d ze;QMdN{atE2!L)}c_6NH^;iT;fQ!IS8w$<~x0;@byDej&S1$L7;)gEt*kSY&;|W3K zio|~gZU}cBg4iBP%(m5ly3c6E4h2?n zj$vWD$%e7No)&58Vqlz0LG7I#`)Pfm(EiAgJoNApp*^}#+}IPMV3Kq3K3Ag}OV6Aj zyMrh(8T^9Y&Y`72+#90qF9e#_FWb&8j z+LYPr+#MA+i=d>^5A+qXw{@kt5^|ZgEbqA$zNFjTYzX+=4&9Z8FB1B6RKhnzJ6XV) z2rwl^e+a*nVk!X^KU2?wFjZA8?rQD6|3A(6H7r-4vXONJ3<^5_Qm?SiJHb@^(GNz! zL&1+Pjhw{m4L?p?a$LdpU#(|?N;bu%H%x;3NulVP{h3PD+v9LGtS;eS{>rX@FXsob zt{Zu%-C;{8?aI-zKWS}RN45LKj%GH}#U)%^6(xAlDUL>Vgn!t;@W2{R91oc15U55( z%vg|h#2!UvPtuM8S2^N;q!?CL*d~13(O&|b${?nF7ZJR#UYt`AOkKrn#y^i@PUwKM zo$2yt3940!4{zD3@f!+8WwnOunW%Y3Xi4`@U}pn%3mkN{4}HeAN;Hu7DqmXry#w>e_Kdap*?GMmGcudc&Ggu>_it zd;&em0_BcDHJNkq&WrpXg#!T?fXPPJFhm;(PtO^fRg^PvW!ta7!mMF;Kms@%`1`cx zgE~peb+-8Nzmr3G50D!jjFbGmQ;!detv|`9eiLKY@&rPsU*5`Vg#ofG00XyIuW5%~ zXVXk=dA~%i1j|ceHEe~u;W@D6usG`6lWw(_O*u>XTu^6@@hnC1+P=pj^1>8c z?j*?)Y@8D+AscYu=&g;s7nF?%A)0!#R2DLF>ScF72p1uMC<}zK6`S3fUMPPtvgQds zDrn8LzWPYcUtBU3?B%d#gIlG{q~~9_9RIT?Pv!|5@E>(NZNx7pi^myY`J~W!=9TDP zE+KcbYsrk^+5cL}Vk}y1k^XA-TZUx-1vv%B8Ax#Gw@Jst;+3|OzWaplma`S;AxgMw zc&0~rVIOLxejEYGd4`~~ctr$M6g9TF3!Yq#$gSN)ePNG|*rMK~c(wQi0j7w1Y{&XN zvqI=x{aqGAos9=VRr7Z>@~&HdtUM@YtGpq_eA_|69sC9A@X2v_A-mo|BALCtC!sr( zqYxW#DBRsrw(1=DC;iF3L-X+o7Ud(C%Nt96WUkkY6MKO!$duZ(OeRb zHDIVXQ>6rA@AmpM8o48QXHAi1e3~G`T+Z3U6V*^$w58Ut96#OQRA0>jdJnZKo?Iq) zN4>=|hdi;Uo&9`W_pBcca~=0Jx`Wu6b1Ns}WDp1&d_2YLl81nzU(;oj2IiE-ODv9_ z_aZ*0)E{EzlGnQ=MfjR%f$~!G-OeF$h<9E*Kn86jbv=_8aVXSp!f7x_ZTwdXfaX^~ z)4_@f)ly}^O(;5SCjp4h9C;6ludLDXfs+oKNEJUGAeL6NIPAGgYhB(S&C5%CJm?b^=MZ8T z%j!R`sIaW@IMbSkD{Zw1$w4RwcHEhme(5(GGcr*6*1!b;Af@wK786%F`&=$2gPD^M z-albdTQTP%k%4bEF5r{?Ub~^Gr_kZpb7P^=CV&zt!6q{&)OpOZkwes%zhNTYYLC-e z&@88aZk`b!EK5wU>=&I-I);7ztAPN8RuD}%G!ZFW5V!Mi68XODvw+YAD;IoPga;D9 z$b@+iSa=f2GUIjVPncBQEX!3G@%GEb`6yZX8)00$c5K(jAG*Z&kEkQO$$}{bnt$vE z)nAazj7c=0xD%+QRu3jRediyE!>Aew0cgPZ(2`PWYnY3w=eZ_JTep5k9r0Zf>Pz%s zc9WV`xx6hxzWL{ZWs?qj6B`=XOb5VfjckZLpC1u;3JjId-c0O|*>F`phOI|WY$0(* zb_m^QtxN-Ff|G^dbV$^dZN?UDqNIEt_oBL)n4o7{y^zC^Pv zxNGjK(JLSJY^7s039^Vt@4@=$Y+sLRIK(l|e>j3Zn9s3 zW$U!{V5yh_v*B;jbeH~X@X2?Opy21dDg!5oJ1V>%bNr34wv``(?K7^HN6dt=@yWTG z(HFyZ!-_kNPU0stzPVJvqfLe%CnK#SOv|Ox($WIByD|M+gr_J|>7&#!WYV zRGu8-JPU<0?`jT=d&xJ5(K8`Z%-x@Pn~&v~+Nl9QL{Irgodi7cmPLL5)h<4@swue@ z`GCDCTNMGVzQR;K`j;ak^Ikgr8j_b+4@a9BJVH5HNm}2%63#LvM9R)(1K?FQO7PIG zmzGo-tdJ((p3V z1!_eHVCbG=bfso_UvtI9pp2mI%HbSY^G|X+U>W7@qXKGqV*Jd z9=OKTR|}WN?RjlN?I-IYi+>JBTIxyLIip470vcjkSbgpQ`%kqT&#WiQ(3rMpLCAO+ z77`afSz}4}jEp?01r;r`i~5l{t0S6dLioOVE8qv>ZW=Lqg=!Km`;E5cIFD@4ig>kn z5Zl9jM+o;s0_SiQ*(gTo?fB6@YdT107-GmT94U4@KJj*9{TA3u7w>r-;-Wb*a@^3) z;JQ?#P!-GyG?VaArGO@g@PEbmbP|R=Lfes_+7-5)-i0J}b*1Opp?!(FUoi!=5>r2K z)i%u7o%TiJTtTO)A*F+Z#PaC)zvUhdL541cz#$UII`0tn$+13!?yZ?Sn{%C?Cr`-Z z_K6g!d@XY4rf$vZMs)eoV9ksedt$?@r&>0xW;fLe0%WOY^a+{PR*)NW|G^&X!9R%U zyxS0ubPG@?a9kEqICC*Xl1#Qx*5uY)Rxs9~2ZRR=B8T4Z+v66tS7bDmiN#yAWw}gh zgkcX%&UOK>93cc$F^ukC(a>vWXp5oR?N0agKF(CR6A!d=O5Tu>YOl+cGzH0Na6!XZ z@4@tMsxc*GmS21>mxzu3qh5nU|Sm<1)iN% zCqgoDBwDL=`;ir$-n;r~*ZR4BbrieC@5C-OCtRH(IdeOXMC)2}W;Jf>UJNvu;QT;H zOUqk&@ERV(HOu;mrlh|U|1R~os7pvSbOsNbYl8%LtNUGCFJ~@N-D@2 z%@H3_Q^AW6BP)e9vT6QMOCZwzOsF@S3zH=7m!T4@`>N`#lx^tkkFI^Jfp z4E{CG0BV_IQuUN!Z^VOvKQ`K2Yjw5BlD8`!o1`8On>brfsXBIDx~!loMaC}MPiALN z&BT2vc*-Afz&^^PBX=)^4X+83oNdqMR2R2Qx+8hlq@Sbt$ZNz?3%o|I*-{!T`Xb=9rI%F(VKS*j2a z5}k7aX^rGJ2>CJ>H9{@dNyAAP-hT~#jeD``*d*T7XGw9P=W~Xw5M$r(zG5;ixGO*m zdWMg(@J3L}G5knAt2ZA{IqFW;%WVjwa(d?uK(yyLQhP3HO=*j3H7f+-HKmq2Awh`A zPrr-bpX364y+)HZ4Z1AtK%tS=TsW#DO>?yPyZ$G64hzG)Xz|gHjfph6S(?L^nvzP! zZyl*LTg}SOGuvpXA8mOE+Fn&Zcf?UAm*A;o4!N+0X%Q=(uiTW;j2lJU_6$YJgQ^FghsU`@)d{(a^&WcPq0O00rdw7CNcy$!1_HXSWs2`BZ7~R3D%$n5f<0?s@^ij0||b zsOz=^DV#M-!Hl{X1(R?fF_^jVD7*Q>5(mh3X`&o>t=3F1^EKR;g=?^pEi=GNv$_5@ zHiC|e&9EWnQ8E1nmJQa5nw;V#s8jc|PN6{SR|Nn1UcN_FN6afv5zZQ$9n+_aG1AP6 z0oWm2|N6`t9Y+Uz^Yl{g#^f95RpScAX3TesW5jIcR&XE7sEQ`mm}{YDRzz5Y&;3+J zAe8`f@KqUBcM&KxJ8YaHL)p!0>F1&|t_?h%uM5R|S(f5xA~TN9s{m_TK|BCA^1B<1 zEl=Q2zES%;v-0I^eGa6m*p4cVXym&cgI-d@~zzw?srH` z_$r6iATixc!v>iA(<4f$)rmvKp^D~&lBSvR*kM9gV0lY{r)q_Gl=%i3+MujjR1*OW zrs^cmJjB4Qe&B_ck+Vjr?H5J}05Ka-;5GD$t4{cKSokj$1F0^Lb{3)aIl)_u&-c!V zNJ0Tn|G&OfLt970Zq)${ZXcO1?`hg?qFt+VbI zB)|Ds$f~6yEZDshNP}NAstD7*9E^%_qNHd+3uK^ezg9UQXL%SMXPF1sU2(Vs3xry! z;=caMu-OA=AeXnanBM>CJ66ucsqvPw?cn}Atlf4^Iy19AbO6+qx~8`vh!^Ft;nG6?{Is1Pf}oTa=aVSv&B!JLTB}-gdLGv-@L^(J%p(W zLGT%E11tuNB9qNF>3^Xo1R}ZAeE|z0&?K;6#pD%T8_O$uo1*dp1t``-FBwa$FL#%5 z3+=->)AQAx!??x+6!$@fw>bEvaomr=8u&>DDbrPTbBy7MyXRtB8z8VBs1YU6Th91I zMguT@S7PO!bb6_fS1s6|G+obwn0=O&Q@9ni4~^pV?ZF(O(S31YGggR|@NXdqn>pk3 zBT$5z6vQvRlV)`+KYyu6zxsTzt+p+%X%VXp2IycJF*O zECb?XA2emu@2;7j0;H+$1y&POvUMgtpJa|;ADT|3+O178J+L)it^V?mjy{g6$vb=F zn6%4Q?#DtoGa@!eLqwef8e_g5H830L_jj)AbEad zU?>5GK(pAgB&D9t6 zLEC9d!`W4UuXc=2?gZBUQ{qso825rJq^Ve<5K z)Aw+*P>geRBh%OFEJJ2S6I=jUWUHWzVaV8QR+R#%Fss&*ly)vvyK4HE;aNxdYrB?j z1c{2-8-!KAEd8M_DHHb1yxJ0~r*+*Aj8$}3d-YVgEoszwt{2O2dT()h9?W^M6Jll(M+EXI0|ed~k}8iPGaMh_+sobdP>G0+XmQ1~xR7Ze(1_a0Eqe0IZ_ZBRcz2 z|H6A;5vY2Y*q~1Ze2sEwBG6dl^L~~NoEoG(?9EovB(U-}LH%OFg!|!7RBVO{l9LU3 z*jpp{L&{P}&>_B&QC4X39po|I7R%+VnC}XoeU=e$=klxZtRSExCYjBUFqy0lesC(D zfyrwEt3pNb?)fCNEwUJcQtpRy^s}|DJ9ySNrE0aAc40!_0^-C@><1X@o`=m1j*W{d zxS}7*SF^TH^~=E!_=v9(;mh(a-SUlnD|?3Sf>%e?)!6AEhj9_soiktlro z!#o#}yM9IS{+-!`dyms>MNjDShyXS1GWCZG60PPNHGbzD1wDb+8;s(DRp=3I_G_GHQX0FSN)OO&VePeDRBj1*5Vs^qL3$=B3V(PXQvkR3;}6fu!E*MTPn^5|krTCMGK}`oHowX_X|J@W z%cZ;GWYRMXEom`CBET@{JiGF}vcZl)Xf6s)Gp1;{G=8#su8oeHf|>L8dB>abCc`ah zlek+2_2rMPIqw@hnj;!Piu2cS^2*Nd2ScLWcDU`6T|(y?lMn;#l0OiuYMWrMk?Yid zl%2djEGdnd<1Bc%EQ$7_@K9X^LYeH}(;q*V~-qF50?W8~$VL$|3_ z?E%a)1BXjBQ|r>eX%%Gj6S&tX*Q7C-Mq>#3qXvgqVeji6ZaVL0T2VvZbS07jX(lec zrXt~FEJLtZ{S4RQ23oz}V>5P1{@g)shD|Oimbox)#Lw7CqgCao7pik@1RL9#JB@0ht{MxL?!k%;2m|9F!7} z85lq+>;!-n`d$LM3=0cV`OlY8JdDqDv(CpC)iFnq3O~=kZ#s!Gyt%{50;m zUjSZ|%b#!24J`=l^oV@I_fGs)WCd<PC#^*R`3 zgD%Z-pkfD;+ zH!K{eNH%gJ3whGOaUBv`bDwFv#paYDq^(Z-2HQ}NK}@2^tJk>w53RZf{9AAQnRLp9 zMi>RSl?f;rZvIfC{A?dwF%#hy_EzeMAS#k>jmn8>)cw7Df`?c(cTI8Km!*VdH=THN zL|_flWSnydad9yfn7K=wC^LsA17bN530pBkC+gGE!~6vY4z3PP3*XXBsKADSqT@q; zf2~?ng3neyQ^afe8M52LL(J^yH1`5@YE6*Rp?yzr@yD^)T=*6pW^8h6AWBK&Kgc!HsT7LZYC zV8ouIVx>9RN#nD@FQ|7kURP>KkMt5>yU!_hqBvmwR$YUV>&A zrO;DS>ddut*UYebcZ`jIyffNUDrWh4i2_tnF5TD2_p|u&D#K)GmMKpIDlLCG|Dgq1 z>pan>*5p4cv~h#q1m0SY(9S(OoeFMrcF-T8oZt5i_IeLxp9QOy<*6KpA^#2H#D=o& z6y{P5@^d;|fvR<6tNb))hPoq${5}%{*IGHE2`y7p(o0J*pBjer$>L=NI-YP{OgjRq z{h~E%2wi9`a|D~&ZF&0L@KQf8a>HPwG*YL&i!1%eVU4ijF<{M_-}P|j!)$n&boYJ< zqHxQR>A1#BhbBnCu5rC?$1*L^jq%a}Pb($F&M1KrSrYMWFCIi2Pxl04oTepGZD6GF zn8i)Psr&T=P$V2b5^>#M5nI4#aszuzeaXA^7Dw=Ong=yU;oDN>SEEozz&4srT#rHJ zK>D*`)d=Auo#4P?mU;-3%L4Z7^m$0SQ&)Nv!;A=a`kE2@Ua|!9#r7b!m`jThqWqXB zD1+s}w?n?SN~kBJfu+46K3P$5UmW^b|L(1o*|&~ZX$GhCR$Z-syA1X6h?(B2?ds-W znUc0KmST6Iy6~cBYlIGUrnp%4?%G((c>xg zR~-oR^}dSUGh2C}LZ(7wt!^^PVR9{J#Y{c?Ghyo)wFiq1=ZJVsW!LY!nxObE!jnKY zazrEHtO>`+vcVD&Yi$9DT6gD$G95x;si;@lXW&u9>iR)P;2!d|=|^;ytzjeyk!iOL z8kiLl8=V6vPv#YQzfgy*ahF-nXYaSHQxCqT!3A1tsMrzKF-_T}x?Fd`6}VsDyKpui zB$}zy$5O_}`xXHMp4fAc|A?%ZR=VyMG3sL$rp)Mzg9=1`+uU!=YWDKKl~P$nlkCR8_5tRqrPn2uk(+$h5P48oNF!Iik1HwXd(&)=DqGPe{kLY8|Ji7VKZWZ zT=^@g#Zz|0{Tbu^t{5$QdDppirpANaDeuMNrI+Du1?ad73{q|m7uTl~;_$*`bEo$@NH>fIYIXVEo+ zVE_!PkK=r&ZWAy?zXm~a5VjUe!au6is(=bj0X!LY@;mLxpm=a zqSxGdqngjV$DnIbu@}FE{7Nq34%nXWU739+w=aXJAv^&e`hS}psx4zzv*~H5k^l8E z5L3-ZiyD_2Uc=fM#vHHMmAn<5ML+VM)#s1VCE#Z660Q>>ri_ZYvtwHvjtX3}rvX_p z=zkNNQ)WIbK15a@esj22-Zl%cJfdZ&q^tZFNnm!E1i2CR9mD;JaMbIh&mVL7-G5Cm zJAL4P0SlY3G4E(`xGFZh^d}J9Q(oiKqoJ;1<1gwg%yCrO5BpdoU@V^otc(NDVVE?~ zK3D>Mh1{sC4h8GfiVS*P)1i#k>21fthwX!*MbJID;c!1_%Dyks-7W)X07~R+i6p~M zxfG&nJAmo5tfJ0wmN_ZC&@Uj)7uGp=60{|E0zhzCtbU*K|rUs#&+zrv7a?SdF)2R@n;6rSHMH6G*@Lb|St!ijgO8u~OsC4xLQ z@F$J`_yC4$a9aDjJ^l7)#j+ox_fj)++N&$}J=nWMCi zShxT0=aT)%as@6-_HdD%b43g-!`JvaK4HlU5Efz4bq-<0`(3UC5)jauDzXmaHGD9_qK-4IdFY1Bwg$>u}e@ z84ebr%;>!Jos2fBQ94K+m2W3_v%ZfM0xu7m6D2oR(t%!v(vm2)wU*u!wXD zqwC|tLy)5_JD!U1+cxgyHd^-y>}=G(IezN`8VaFlMI|i0qc})Q0I#29GzSA5**smK ze_KRXG-T*H?(6{$?1nHb@o}Dslp#ow)ud9OIYr}wja+o=eetJeb@8D10uW^~u*pD1 zZma6wbV^CHG!39aT^c|5gzd2^xBomTgBhD8Ge!?dU zQt%U_rP2LTIFw;z&!|WJ?|w67+78tEw>JkQei>2YazS4q*mZt1xyZ*?#bMbS(!T!* z!N#5%=zOmHsvHbX^`+ajl$M|$gOFF!Hj1Qst`7;I(m&=}O!jBqGA=eK1j9JW_}a=k zEzj~A3_g_TdLCBI6T2#?-XJ8Qeqk+efR81To z_33{Hl3E@+7&vzHY)S>hA&n71HAOL}-(B>$@6RNcnnyLc&|PNjH^pGtv9{HwiBkf~ z5l3P9nb^8md+gqSDjp{QazmH##aJ6&=`7}Wtiuu=d_8}?0c7U-;&C!~bz+*r z&VJ#4y^Wl}g9T^v0GOzfMNAI035wiX_VkkTao#4IQvQ(cW#LC=($qWFT~vAZAD=Al zQ(Gqy&V#d))f(4ixSDY*#3r#z<`{2xatZQ&<`}ENjp{|XY|rfkjVTOnCzB=rGjaI3 zup2Y(5?&q3)O$=AOtG1@@<&?tsK>ePc1^PG7QVWW&>6p&niPZMu+^MSvz+6yyN^r; z_|NjNegquu?Y6GnbV0u~YxC<$db?sXGLEIyKe$hgb++wNBR)5aASaWw8iUC4 z5625t*@%zjh~OU^j`woOdby63Vy2)a2;ot9t~7^w;F%8T;jn19+BE2U#e`@q z87Ff?WElgJL0h}lAyP2@1^Pd48@eAQ6bKCDO|#uUXOB|=lt~O&0m26}mM#y?j!sHb z;wCe*oOj?{<_x?$I=hD?6`{krh^!|!O;lMW%=FetwhXvmRVCM!gOc%+#T=S|YbeK+ z-xSq#R@GVGV1%B*T)iTNz%-&$hg`7M8l%OI*r&!yTC)uyEbLDgt-)ryu08hA@3!MK zr2^?PMF7opa_wH+sk6w5aEN+k;)Yy+s^N;nIi_ebGPW@(>>DcX>ei49uozx7UEaP? zTcoqiVR^Tjo=nILjW~gJ{9K#RT~+^9B7*Rw1C7OB7ir7eIGo{W-M&!oa{?z!tvrw# z&fb0h4a7!$ixRjXpxF~69C}Apia;Ms7sD9%^nahz(j^S0+2odM7Myl)|4^D%3TycJ z_=!wjQ&V;JSHIC6(?-|kvPOJp{mx(QP07yrL8m_z;J|__0_fx|6|xx zWfzA+!SPA0CVa|Q##{l^5XIw&>dI#-Mhz_~z#!I$lVd1Tm<#Bs3Zr>yp4k&Pr0Omg zpCw08q}DN+r9bK-r9sP357x{7kXx=Ta__nqiCWMOHRf}EvOgh-fUZ|^{(Z4>l}_Z> zuzcNG81At!ma_LRt z{ItIH>x@rcT8J=sgc%?mRuz#b0M6sz9Jfuj{tv6HheGqWc^lh>K-fXrG-U7sGQZ%b zAQU2AjUv-duFO6vax}I`vqK6Pw(7s)e?nCfDq`Nsv!IhyMA$umdtxWi-ik$sjQWFp zes+C8>Oo=xyyAyM>NDX2OpK>SJF8phye!FM#YUgn%xu3c$jBbv5A|(;<8vBu3N@0B zDeT~r-J!)R{4zKi$NWEbM!FSjzYQ^R!DIvzOUju+PEPkNL(NV(0F}8P|ARxsu_LT6 z)2#SMLXvq-f*KQ605wWkES&;nfPSXPDSwawSP2_}OjAyDB(`h&6X!NwFKt^)qU@`& zhwvWVF0Zg*8XAAHbJ%+h1p*lv8H)vQuYICyxltGPijLjO@3;aJJDJ!W%x%t$b0w*YjRUrjPy*T9`ufxzA`BC!jm)03zjH``LO&h z%c0T26Jmp+@{-C4=8ksq3KXxVLp3BQo$@dwPrHuSoT|E4k+cFlvaCwC+f?^gzUILk z!R0JWSlvdYu1{LCIp&C^IK;m{S1iyDYRLe(9j_83OWlUK0~Y8KE2V>#kYvaqBmLAimmb6;quyl9^HLP2+9Cuk?{TU=ih-sd1ucGO!f;m)Y zI`7b#!`BEBX|sH^O5pdaw=!%ptZub>3PDmd|IR&}fi) zYAV)$aytx6J*?Xag|XhcQj8bwOg>HN9ux(!@#?NKvOoMKVu5Mic)|fr$LCQ7;9(t- zq);5bd)>1({F_B9-ZHx%k(XqDlPaRZ>+iU+QFe)xA~^&dkI?3!t+$BwX~~rZ>by|L zK9ccPlZ!y*o)z%Vh8a1J56OJtBp50S^<8sPh~mfA=CfH8^ZStg6QsCQG1r;mKp!O~O$Q6B*QPMsOKf1GCk zTj4Ys@N^rSpxa%eH-1_-fL;x0$@(H+?P}&D!kSHqrRfJBWv7iIc_yC0>S+81v)_Jf z55cWbhrz80T}!#IHdmu^-(Z5G6PKzQYpA9UwZ-bBJ~&H#h%+)3*@5;B_&I2sSOB@f zJff=cfwVxL_t=3hOowJRF#Zz{0;3gE;B81I$Etmxh+JAVg0~2lEIS@FF!uY~rx-`l zbvm@if8c8=BCh8?JH>G&_%UdG;fP=0{Kb%TCu9)87MBSAo8JzUlc%$?qj`rtR!A%` za2awcC12gudb%xA2ZwYU!*Ze#ud29n>)+n;cNnkyeb^bA_La1OIun9F{NIJBWTr_2 zt$~aS{TvMvvKG@Q7(TMq0mGr&UG!MreC_e{QA6?g9$nBMS1YKCH#w=*M0nE&1BS z=kfs6#n7wqVfiG@9gC-`JN-RT)dLR}L6JUk8(te3@Y*_o+Tvg1FK_CdwoQ{ZkayK5J7?9w9_zZ1QSTZ|5~P1$mscovC^Sxo&L}Pel+F_%$`a?)=)r@!m-}n&<&m^;e8=Hm^>YzAo%&q0#I4 z!uc%JT}nVCzS#idsbPYG`p7rkc&2NbrMtWRLf&@|fW&x(zj$+cV6j{;)2T(`6lA>X zG)JszIkGku`p5Xsq&_ZDw$haz!%J8sP@UNK(Cq7*r7u zeR77_3R*9w_ngucsWRT>8^DY~ZokYZSbbdp zF%)^hP)??|n}@_(V)}L5Su(js`}V1XLsDk!HYvU5Yet`uK~~b_P^?iq0LFO)HZSC zF%e!%W(lEld|sr38;J!}gh&!`Jz5*N*h(8-ZpY*qJ$IGn=4p~{(f@#pA;*Z=}`R-^q zaQ?BWcP>=o_2yjV-Hknb)N-Q2F-2Khw>X|3=gn6i1h*~O*j9g3=E6lNi=`so9NNyd z4E3#O1nUu~PUQ~xePHR8iDmWQAW)r(KOKQ{`zc^F*O*fi1c6-Gv^_=TrlX7ak;sh_ z8X~#N*$$@^2;-*a-7)OPCDLQES+shp;~R)HBIZT*^#G6y;7>b$Xv4FFAVC^$xIqWR zFN4^w+QL<3eT3Vknw?)d#+i{OPEh#6lDv~>n`7uAmr@Geea)gKjRKe3f3$Mk%ZcOK zn^78w?l5`7av8WhpB-rEc;8J^NxUE@<3qF+ay1toGJ68Tv|Y9`D#eEv3)50zq~R__ z8gehQRTKnY#bEj6`Sz8cwF2!))xe+Wh};XjcCNn5VGl3v+zW=G^+ASJgMLbFiL4re zU)a3JRoTLyxNG)sDb{C3TyB^GtYGB6z~wThG8VhBTh7Kpm10= z*HT@NiUX6x>)C5aXjHcs_mmu9nH5Oa!Cxw2O+OxdI&D~uDq~@#Qm9u3w`mZDD0Vc# zsb|SfM!1ru{zO{`k-DR*o=Yg9c!y80RSP^^Rkg^{DJQugEr*DbtGHl~Qf^DAqAb+v z-(w8n;&9Q~7i_9Y_El2Cynjb_tEM^s9M8Om?j1_GYVLWKRt|=>^FzyYSzkQrbDnJY z#DV9gB39zUfu$*(k+HLP^sE;1Kl7(FE)p}u7uv6F=RT0dyB_+Pt~GWi*4|UPY9+g8 zGyUp2+%~vS6l^yv*ehMFBUVV%RVQvf+3%gX;BFp}GH24{`4o-#wX5?KXSZoLL2!b$ zh>1wa_~T?Uk;yF}fmaI${a>s%F-sqn2M~|~;Yy5#wr2dfc4-kEZA|hgfI$EQ0y|o2;E(|gULigCEX0< zLV~WwXs_w#nLvd!%q*(QMMj9e9+CD?V3l<)b<^Ppw0~&>jUW6x zElN<3Fexw1q>b{1-98}_tT1e<@mbFm+e+7_kjQ1~QY(0bHU!|3*(yFNQ$Vj=wIN97 z#8--JWV26Y%o}c%ucIX_iyqKdJCzb?8s!m5Bt%q4_44|zDDvu|nv*(Mc z$OBc_WAGjNoTRD=sal(}q%vo#}#RFuvyJqM$G4Eq)R^js>d}TXX?j+PA)Z zHMfT1iu6;hZu6fZdTb~qm&MVZLjD~V7GpP`A+|YTjMk2Y!@#*nwto`5+K*(iMo%a7 z2XS&Nft~6DR60e$nHrDQC=<@YbQft>P&*Tdjr3@5Q5dHu4hO(ey&x>#=V( z<+7I(k(#PYUU2?YN(mzS488=-YU~+crtFY2ZIw$La}i#c7kjx64x(1;`ioKrm^E;w zxu^(u1#Gj#ET8`5l>Hr``H(#D7Aw&8h;(R-u)p!46>?pq@e>DM#)v>RxQ7yfH@-VhlfL>b#KL+yr z2h-6$`(it%$B34$Yey-hLWFslS*}x216!iM|M$}7c0~t!$MOB97>oY`tdMI0j-Czc zZfPh>brj_Uv$QMnD*}~sA-yA*;JmfOEo?r%o(GgVB+Kb02Fw0-!9%-%Lp-CgHpGeqzy>K z6`{-IP=%@HfVIty+B=dEoX3c@wX^rb61ACvHG3SWkggiqv7aCWi;vGhb)VF~Ub%pttlAi)1SAxSww*_s|{hy>D z#!=HRr5Ztf$HWP*z8Scr2 z1*-7iq10yd7Og;k=7&7q_I69n?j^y4my)!13HbNsH#;F_VfA95_Wvo(#*v_61n{JU z$8v!Kk8u+zVN=9-m|R~PvQ<<1cWMW84Lr%2ETbiZ8^Fl$q1)vUaJYsGS9gtCA9hfc zUQ;-tc52>PQb;E;f-^xvi_jUbpw={(ww`=&fJe~^=E`of<;-@?KPwALwZeoS!X;Vr z19M5vUD4P;_hICWO8Pa=H84sxsfC%c9e}OK)|e64nP_b!t66ZzJB5v2*E`&O$+^H- zkj$-J{IiwwyNYqdImcadD$}mA`0g{5QbufK_7Ee+q|C?8i!OG8)I7L*L4j3O1q?+Y zlFZ1FzX+FP7WpUu6CD}lio}^3BT2;AeE;MW_EtGDahL!noY#bg>OsJc3WH6IPOY_D zjxTDT<0yPe&{p62m_1+eEG>6!#osM()DEW`*xb#J{oIP;QgoF5NhOma@?GLJ?N2GeXb`%6Cyw_oeqBTB$#7I z7wZ`?48}2B9bAHCzMFU)RTtx3oT9~QKSUq!%#U>A4P*VBGA^d$I>Okc4X2Tj=K>K^ z>XY?5wLS$>JxmhtS*VPWxZ7HgbHv>TDC3LoSe}~XI!AJ@W zidvD&dz?LB*5{uqMTvbzFI2s{1hw4u?Pyz7E@5u{^t3}S6D1#o_3BUf1T!P%)nYFr zo@#TFQcSc8M*PTQ!pAyq?(}X!^C)_Rp{O-@v+Zo4_3;i}(-Y!R?Nk)aInY&vWl71I_l4ZrmMjBR;=E}?0ftBODf++0Pc>3d_2EtQOM0Q zlT2FG@^Sd!q_fI;rvqR?H~Y&A(lPP9J9PKOrH}LdN0w<+tyDS^N%hRn$c0YotzR0y0# z@XWJcd0Aa7?@;h)8d-)o+*^qE(1i}p?Q0BXh{oxR^O^;=D#czAlv0)|a@wnlaEDSU zPQz^lsBV^Y%1#0uP*q6(vv>n4hbBjqr0zr6puL|8{^%t%!s=BDWD|avLGcE53-IQS zjPjq%5fn3LBE8Z8;p1*&6QMkQ6?po_Z%lIN>Uk{zfP}yp3TSVy4u4Ig_%*4_fRzyKjVxl2k9Y*<}R!-RH`sgh1@EP>pE-d}4wKD1c);wosER(J_>P=uWPA*TOO9Udv z$as#g`(@tYS?9uHm`wiwN8F(68m-t7o1A;%4&F3yk&R? zJ`Tl7ZCB}@ZvvVwg3VWUS*6G?9Wz_$Kv;~E0+(N9RO+PfgM}&Pj~Ecrnr+G>ej*3fkA#UAdY0u+4@7oky4A9s4wS_ z5=G1vB11~oYKaD^bs%z%^ITKdT6$UF{oWn(Mql&1*}zq3XZelX-`uDj2!sZDWRETQ}nsyejs%N zTKx?O2-6p|zo4mp{3w|2L|zv~$DoZce>(To&HDE|x0c+;eL>*kR4{jy5HFo(Tyd-+ zd+obdLzp30=o!zho0##|XH;4r;A0k!9e}!dV?m*Ne1;sQS}WEJ+hAmYe8YVmGfKTC z_F%4~p$KK{)+SUQRv&0)mPv4ed0w;ewfy4ponL{r>CA18^qT}BD;bh_KWZLt=#~OV0t-eVN>S#^CTlW9t0n03#vmtsvfapnvq+6(YV@f&&>1cKKxWqB zGFd$cl9f*Vp#qbF!ccGAVNGCkg9v5tJaYDD-`i2NpYY%L!9K%;7v;jXtIX=1><< ztSSsyufJD(ptOr1cJGy?_Q;bb1HTE2X)^YiqF{(^p+n`;r)I5*dkMyi)kcC z?7r|{C703M`_1QA!J9%QM}QOhGe)&>RwfDm8XW{hBba|H;#vadFDMFQ5`|-icWw}S zdo>4%^uV}2rzA~vG?}gZ*qqT{QcIeWoB^c>B1K~7LL0vy;lY>%l*@b|nWN3Oz^J-| za3c0uSbNZY??n;VfPUY3FG7;k7D5^WuQp9dl0QuCfj0VCMMG@5T+iU)>31RTR<{Um zJ&dhIbU7R6@w5;~vKzvi=q%uPa$68{6f@Cm9!zhn0wHJGd0^C+hAf6NZr>+wYQMb=> zh*HV7+5m#bax-v5hf}}f^G_P$|B>TNqq$&HB&c+JB??nI-6x1!@AR`um(4C;&ji-z z%>In1Si|WHPpTnwXZZTHmf?w~%qU(Rpew2dH?2<)7^>z>pf_mK0W1^^A+1S&1(5EW z6qcaA4422L+80^m8`B)cC#l(D4h9i*0Q~|hmXj`M!L#Z()Q!%mGX9G5pwq>4nnws* zI}MTUwL}c6<~+;t_MH_Vi*~^Mz?D!jHTVAJE02o#a--$_k6|kFx*KSuF3+V9-;g=Y zM=*-n{V6g>qvZXU{!9jQkI>7@@6cf>6p;3BT;Fi&ntrJF{0W|Zbj@7)_;?E3WJz!y z^X(9SLw7>dWdH)euntNDv+5ov;6AJ^Px_sY~E>Z1>&ZM8LiD|Jp?aVs9Fm6+K znCvp={wGu2TZG_TZ*ms&B(4rcLQY+&b7rI9`x8Z1Zg;yT-XcL7(Ua@HoRWU+#=fl* zhWZd8nYypKYja;cvJ>T{)XsICPOdAiNXI-M_>5;@<-cN7u!1@ch_^ueEW*<`NpO^g zumooGuQt>|8ml`u4M+xlmu>6r`q49}Qpajx+lj5DadpM7pjPZp292{oe+v@AAz9^0 zKNEgKNQ3iQ_5kdWyi5jtP1_o@YD0*lY2BF37YcD{ywSQ4#umi4f$QHKT5~U;-l=>s zVPLO)+#f>vkDrGF@wYWj!F9cj3+$EcA@$)-;=t|X%dMi_>^jXn#0JBELgH@Mj-M04 z4rB8+yKW6YsluEiDl{Q;ng=% zT4ZP>f^GFQK}K#jtKKkXgfysT6-;hqX1vE3_zwJUCP4Y!>K#&L)j?pofl)F7rj&w1 z!_!aMiKxBIuqk~mT?u(nZx+Kgb#(2IU@fG?E{?~J37&F zX4psU(WZl8@Zat6@sMfqsu}FRQ9FV#3&0(oI|Awk!ba->5qj(H_iu0wOfIU&w#;9+ zg-26_8-+4gp4LN|L8$ZHINq=y=@X>|lEe=Iy(d2avXrrQmODtgqzmHb|$N|O*W+hZn}reHJ}CAdXL^yaLegw<0dAliMpwj0?77A*QD zoV#6t%az=}AjnG;eh-i@T>%6O5x9mc3qFq9bURr~fnGWt7Uk%u{R}~{Ez&)>la4Yp zd)V|Esi!9h6t|GkN<>ix7TX zhjYQm*jzd+`hDG%32`byi8Z7bW-A;3pYLjSJ%NiS9!BLX)881)X;mM`_`{FlYt(5* zxvz!?J4Yc85j$_c`|AhUSZ5Krq7KOaX(ymeWyL4a#1%b6U50WN=%{nr{?~Cw2P55g z=^hQqSM{m?4q4DM`&A?~H>O)wTkI}?7|+n_<5W!VWOSUXkM09pPE$~#2w9ic=}*8^ z`laxQ%%S0;tvwdl5VGm21X9I<$u8;cLq&m@++l6e4=7vhL|T)_gR1U^W0`YW1Ges%Z+i+D_i(@G(;`=vSw{F*zq4Zr{ZNeYN&>|Rb2{Kbr^hs-AMXsk})--JgS1!F{8_ zsMe)lmgNkFJoKlHDBzlSyqNz>-Z75Wpw!i{lN)fFV7 zB;#Jda5DeoS&l#kk4N@N^c_n;GSC{EuQF%Z*Rk-#o6XY#BHRdG&Lhi$Q~H_A&G zxJx|JKHn<{lJ;}*mUOh!mn2!yy|b^}%p!bV?)t7UrA5RcpM;>IKBw~M2Tagvh@!5J zKG9mapW71_if-ULA29n8Zmo%<*QIL&Wa3YVxl8cd&$eM4AV+(gJNu&s4t zea}I&37|wxRZJGJ_H{5V{TqDWKfIWTN)`gMfn{B{4k694nU~)*&68*q)h(is-bjp2Z4iJ6+{$YGyB3b2xU{8 z&|5nZZIMlJWOS|oPFM~S_#Y*V74$I75WFOPi9UKTn;N{xxc@?(Mu{mpLZd;3-@+&j z7$bi_epF4D=W8|a+KAzHXbcC}uJ@3Sh!}FxvS**oE81+UvsPV1E+=>a#3M7o5LcN| zz0`H#8S;!nMgIxniv4Vp2qj!pwt&MGyKsLbLxL+r=Xgx19?s=HZSL`rTPZes1zz@VG^d9;XaSp_1Kbk~Z-h7i}LUKX1ot6NOexjo!ymNDh$_By4XZGcg*8)WA4`U7k?2j6g5jnn4;LFxe4jLs;>x5e(D0Sd z_G_TV;;YM27bf{Ffsm9}F5`K6j8w`G8z#v7r4%0;XEOv)9iiZ>oMaH7u%3i#dMXx_D8}DTG-duJ>AN+Q#rDGs zeULCR=vdz+m$s&IQipO`!&Uphr+}oLQOR$poFM63jZguItiV5rlWsQ@+(WVR+7#p$ z#KTF}<|Xdv&_Kibakf)uce&odw-=0jGJXYv6HGs-y(9XECw{upajavzwD6~HkrrPe zqFtzcqu))#H%4}2$3p=x-E0H-2%X{@gu7YY<1!aJW7xv>~?5YkUorJGO0}Zg8`zHfg+X7nPa4#B#3Y+Y%H5 z3>{jr zH8GZbPeh=31PdSAD(g`G%ny(wrXNt1*(;eVK%-{{MhLLuJwNt$DM)knJH$Z{4At*L z46*q>@1S-S-(v~_*y*)f0Y@+P5+kvAd}*)^sV8haqnP7g1lYTAIPqoLg{+h0LaIao zp4gM?%n-@Q>WKCY(@xn}o9QW7)!^5kxqG=`^epp->E7>d~Sm z<))*L+<0aQX5)!DL+~<6F&^`oI4K>9oV(tUskkg;Umk(Y>x*kY>8D#l=w9D-k-HH8 zkPTgD4;rwT=AQTH3kML~;rD&hKVIx}sO1=->F(EhC%yLRWD*|nWKbMxK|1aEgx-f1 zCc|h3RppIDKM-jyh><&5Eqp=}GT?@yv2$KQpVUJzl7jh#UMzq}f`K<*lDJj!ILPVa zIJfJBZu#A8Eb6VbczMj8wTwCRl$m%TTnIomk_~`~lZ!49$dPq&A^Osi<;5T-R{%#kcDNoaweS?A^ z6sH;Qp+6E{Fp+@Oo9KcH`tNxCLh&U!dg; zoO*3=1K**0cCw#s-8jzMwdB|Idr0GwO7Kmq$3n1A@nqGRCM*64R82%*V=NT3N~1bk z;EMg6nrK1z!I=uShIrb-!^Zno)m7pYO*~6!eQoYu)a3>yd(`<0&b0M(^+$6!#KY$R zpJ0!2U=KsS{PGeWdT7m%^NEXrh@!_~sN_Mr?CDT%&B~15R>{kGT_$^Ahw1b7LXOj} zVHT(SfDC=aTVE^g-XSY*)j3_M;h-$b)Qk|$F97ac8Wi4P(%S$wsnW)~r;yeuE5tvy zO4ww!*nYUbSE*KS{UjCKD>G%<{Y#17ghx}~-O3J$oE)Wkz3@id1bTbnLNHCZUIsCZlOCVR-usrXg&U(cRIEOD}@)v z7-m+i?j<5Kka656t))5n4`G1^-rey4xir)Uz7_97?f~OQ zJko=Jj=!i}z_B_3_NO+ZoEFmz4<^a#oa{Ck>2KlU7RHs z$KhYB4AE=c3ML9yjVFe=Q%BxWj}_NwVS01ZwY7Iuysx{jryfNF?z*`10K2R}py#^q z7$6^~54i*IVBOR6!NvjmEbEBBPBaT)p7Qfo)*ZU|jlAY^zdhow+;4qO3CYZUK*+N^ zuzt3oG_NE`V^nugh$U+MpHyNx?XJG?CB@!g2-+DoldS=D4POifz#g;$mz!;n zO?~?N5p|RrfRfjpx@yTppvqb7)b?I(jJ?ybb=?u^oyURZ-PWlq4|OV|gx&)sDk$b+ zFZdKTyq>R;Sf!MMh6=&R@y&&`JyHVut<~G=vMd57RWN_Ht>q>6xQBr{)Sra0{`icxS;xuN#8V1KEzhnEdYGdmwyn?4Oc&q`p9X9NZk>BqY76aQW5 ziG1M!R+9qtP2s)6RbLZgw2tQ!M*1f zq&K$b+g|25TByj0rNZM{vTtCMRq$=|>N7F(@)IQOjX{Z@=YULRu1jYPajcUHlW`Ba zr4hOpMqoNtd|b3^D+o*HDvIpnUu5j-3`+$!${2Y$nZ$0bp*&s%T5#ICN@N;x zqRm#P8mwz;Dq+?LMgd#h>TlYsy17*zZ`S1ZE}0T7R-2iWw>D>C`2Yd(>yD%tKFMEv z@0zMs!Sz}RW8Sc)5xR5wZ{c^|R0d2A#);;xfaP|NX$4z_AiK5$@UQ#sy3r!)|15`t zmU#ypkoh7Ulo246fuO^ZeS^W9u$|xyydA-JnRqf~3cVgyWT{k8q1uFPW{0vPeci`C zlOW{P&q0jq9+1qTsC(#0L(q5m{>K;i^R-qtM35>Z+)H3tNO#7xLcWXo`-J92y}?O$ z8|N#%(5Q&{3w_uZ&Ju9JjXq~Xh33$mS*LL^^-}LSoNXmaZo;cFJc~u?hJW~KV|2_3 zgOGjX#|XYjr;+MJ72GzKOj%a@bHX<{1XMW#_HKO_BlrNU^Zz{@z=oR$Y%FLEW1()| zMgW(aSmmMeOxLYJOkKe2qrvomX)IiukHlt>2f;>e>;)`gU`+WAEgNOb-9lk{m>s5! zNOM)~rUcYg48-kK|2{?p@QPRY=QAY9$jQ;@1-$gsaOYF`YQU|p1aJwy2EaG_e`fjF zoia%0e`a4np09d6j3sP((V~WZgcQ;~GeyJf)MOuS7aID*`j7H&0cu>>n~_{#E#ep- zZ0`wgxD>`<2%a1@UDn;bjsr16jz~Rpdkp5ocIDsLwG{I9_g|FVre?FU_x(P<-;9A+ z@=yw{P;Zr=B4f?4G{Tsz(l3@4AHKoJY48U~gdg0jDK^0| zi$b!DeE?SJZMAe*TNMpws1c62Ye7YKKozqEF%cRadjb#Sw67C?T1$plRk~f)A-XAy z=MJ`}u3mQB5-VuFp|5Y2`X{5g2gIo1X&1k>z$OA@1O-dj%?hGOW8Zwi`_%X^{<2SZ z&IwSd2n_yjYNFj#1=cgVGXbtz9lf!Y=jg2ts8BZmS2=aHEy~7cDS8nWOVi4vYiT7g zk|y6H6tkhSRLDQnl8r*!=qw-c9vhNc=$FrYMwaU`e68k%+x!11?d74CQa{AaQnimg z0LS;D*8);2GyvxJgZ&$hwn`9shC}Q|es~C`@qoyE%g4ffETemae7vcL;;{HD4P$Yk zkRHA$jH{mY$2TP+1w%TIY1!P__1 zSk~^c{)0mHvFtNVlN9F{iH*v%)Eu+G`B^d?_k<}rc*Vo0b!GY1d%ZVM^hH}UeS%w( z3#MsVl_I*0GD=h7w|o$4Maf6R3d~hl==+SO+(F$@{CP)ollDYFF|=8NL8|iiOjw7L zA+5d>DISO$fLnVhP93Yw03^o>w%U%bqr{AfzKhBM55I%>`poCaHUK*N9_5(&h83P{ zIbAq13*FV_By}p7{wk<|w2x!G2qJppZj?g9wU2j^iS;~?xd{)SI@HkdlR1YoQ@nK= zX*;dxJDAVdw=8jZrpys(p^dOoq3L#2ZD6+TrNDU0-W_?!9=nsj3uY}F3o$S5=`w%H zZT+MXX{4f>-i9+)Rg0C;f9&eGIb0Hi*=v}$u#z3nP*gGT{`dFhqz^ME2SyA&_`y{J z5q-{^X-2wLM4W#GZAIK#EMWwV$M7TTZ|C`&Vczb3|C^tf9UzpE92`@u`rJ8_LWK}WnyEWEuM_x7 zW1lCas{6}dt?83SnTb!0iz#;x$y3f#LM%lXQ*R1c8di%JJ2ZjA>1Gv#z&7wEG<($p z3`oLZXK>)MGI>WStMhhG-yL(y+v!c%d#_CP$Z*aytj|013 zBfgBvy@QSLZqt(Yyf%wk*keO7V~(XON@QbhuoAZCrN&D!{(n5CD~)0``rFPiwXaJ! zUJsiUw2OTf6*!Ph8QY62I!?oEJ*sbtzChoCH~F}hML>xYoolD3EBV6_wkTDK%Ml@vtyCNK0~Qvh@<4pJU7jVvg4<9aiJ16-RrIQCJ||Sz+xkX*bjNy}J4bJM zOh1V38QERmDZxW7$z~c)xwu87srU~z>jN+j8#WPtb&x5PRwp3OMLQ9kl)TTZsuD<% zW>B>c!eWy1dI!aAl2 z-B(Y*`MmbpZg_+>!>Q&id=CM7F}cA)9PVNa78_CVL4Ai7T2snSl*vR9lRhZ=7uyWc zA`1x<#MBKqs8e1GJ+`s;DtQ$Z#g>d!Z#5P8`Gd~~Z4Q9JY?3B0nap?klELjPaaQv% z*XO!3CVAOWWy+2#QzF!SKw3M5*pb?(@z?{>JBj2soXZC!<8n8>Z<67Yjcp%c9+il68Fgss- zPaFZw-c$7}%{&bMRrME0dKOL7mU^ByBtBWE*cd?aa$3Hhe73hKUtswH;5xvwJucnP zF7BpU8c$+G(?{FF1;o6OmH7BHgR9;o?+Zf2U1f#Y2)u$+XtJ z|C&!TsWXYp#>trM3m6;L2+#y?cq#Ke$}Y*$N%YL2{k;z!B+zVBQ(?@#rj<15jD;mX z<_kaN6^Q@Dw#}~`;th5+3CV&VPtmzP_qduQiN8gTx*@tve#Bm(6-xYT;;GVSy}DD?+`Nt#YGd0}npZ?8jDa$bI^4&9??v_bQX>h^(%0 z^+&cRr6igH0pc9^C|Wp#FD7nQysZiiic@FqRK`57rLrefJGVG6qR+^_eksxn*p1_y zCl5{Deu}y$Zwx9oC#uK~snt>m!qQm?2f>NJW62FibP^gCQ05GD?u0il_qz*>OxVJF z`=uBLi9sA=#5Xmu`_;WG1h1Z&Ey3@u-Gs--LEn#Nw=f$r$59->Bu!@vKq^Nh*O0A> z_3y7k?6l+`Fzqr$BiQVT(OD)j<1b%8!@Dg6ZL~&Kob9YEt0N-7_jx=73gb>x*Sp60 zs!Q36Y}Q=Lm&puStz6UW(OCs?VWI|oe?+hM|Jt6J8k9DwYhWxKU`cW!G#!seh5cgS z0|TNk?tw(oT}8EhuGZd0`ky(Y$j_^j#a=#=1~5o^gt7^dONB|PQUx)6;Yr0LZUeJ# zGJzjRW4QZ(*y5&6DGdpcy4{8Wb6ACHeZHl?TB|?SOx;aSmw`Y9F?-jHi-BYBb0n7| zt^L*dtd#l`#~+tRQriY?DnIX2FN%MaqSm1rxT%=fTVV@Uitm`Vb9dP0e8;iLHL^iQoqQ1+bJnMu%)uA8Ixs`=^;Tv$sLj zo0ri7gh5mIA@gxlsh0*9MAmwW_#{jqbY1(S`Y(_~G^ui8n>~KI8=@wvBgi#_^pamI zxf93|K0#9!-=B?Z_yzKik4=3`aFdRZ_aWk> zRAJKdX{L-L(H*DhGAHb6?ADf&vs31Q7*-&uK&adsT6@ph5Y2o!PmEoqhIW9-nC3&c zB33r$1?8D%b4*VP*p(f?@f?TJP-4dvRjR zAoLPmi$K*W2+%Rz#crrt1R9PAPvY)eH>rDBhf9$Ee3zl^1%_5gW9jQ< zqr&r>>0(81E|SWVJM)Lj$Nd#AtrpJ@gT?LiG_tYm{*s;7!_x|erJMsW?!|2>1XtFT zgsTKiP_!pFsW#OwX2s*C>~o;T{EvE_W+~PER(jm6iyB^s&b1w>|R;pdZ{=z9KLA_ z&k8J5r#{Gh<|dw{tuq=QrToa^GO%|+4w!Zsvn5@DYNwY{z{mKb%YFR;iD>MA;fzmX zWxQ6ATc3g?7>InUe346!Rj68#AZ~d(c)PV!ZJsRNt@o&5RXv@dmu1*U(MJzi$|o4k zJ00Gztsow+d_6Fk%~>kBbZX}C0S@Q0I$Q|0{j_zi$8LC;594D1yV(*D#n4upzNoXH zFFV>`X{u}#6zT?Zg3-`P6zlvFX0 zXK|o2Bt#>?g90H z;JD%-oVW&;{e9i##X8SS(7k-1QI1g_a)t=b#*k+;wxi3R0<)`58uxaFx=x8ls}K(n zo&6RGFC~ZMlGer~H(+5l5pxu=Lw&N_F8ICEpsTEK4p6c>Zn)4@@@2;|KcoTr03>^n z;3K!O_CLIbilD>z3L(KSm89%!g9Qg;!IM&^y+(+=7EI5#)@|7rrBZ{}4nLJZnjc}r z>UUBuT$1165lK+vUIeGLN$8$laVZzg(o6(z{ye#jSADCFUnW#sTG!3Kd9So0uIIiu zQ8U`zK-Dw?>zZSgg0RoULr-?;=MyAHNM|H|uywBZ+j*fmW3|ke+=%^mR*%^}g8PYj zg2f`ydSadcgOI8Ja+2d=c=Y@g$`Y6zKE|4MCm4JU()w}2QOVgp)s5zn*K<&297>h> zYS(0dr3^Y;&OX33(!|p?6`>NT*fsr=S4P~2S1e`|^*~^bKrJz{``D=Fs{Z0dK=q%X z>OF9-(#r9WI-EHgnYAhmeD3^z9R+&Bl&1+ZMr`j@Qu#+UKY1VNI$E>o101`umHjHL zV=IKcZE&jWs0qr8i@TBs}PaS@>5`a^mNJDymS zrdzPnIFyG|?R~T~+fXSzjisRq>Jl>bHKdar&oweo4FZY`@gCd8jEXG;B2z#~v2^sl z3Y;79T-2z1k7z~$_gI)5VA1g4tT<`(^!nm5r zJ;v%ap~VL{axH|RB{~4m{!IVU~RQXlL#_uvTyq3c;qk<@!fn_VMkN_3uy{kd+NDw+JU>FFQ1(yOi; zi^!Z*juz)`vocfgW_$MM1$MHDEr3hHV~C@`kPPm9ERL|%(@`2W0Rg_Bh^<7WeV|UZtsb zXFnfH?n}_Ra$@H=nlJ@mNK+TH5XPck-_Z~#wTI6}+?SP) zsHvVn2#qgvDssJlt6{2RgrFD=v6L^gMPJggZSYndQLYrgxh<+KUDzeB@s#gZN~g;y z+rTH+nU$r)he3JkBJ(*;y!U#srmF{IS8lj_%qa#)E1EF?&R_dAbAqwkEzuFI(l~EN zl?VOh8&0{C+wzvDg1HcU1WM>C1QmvInbhLY-K_&psx2k4czLH#5jK5;0i0 zr4DCE^$hQCBe16F{hl&0HT7zLVd@Bdc(Mh>)A;JakA_(HC!@$C^tbOHa3gv4cdFXTujOM~yl4Uqpe=Qs2Fpsw#BpTJjH(iK)4V4C5tg#*20e4@^b_IOubU z^kcWTY4LG#VyI``qH2J{+nn=o<^4~}P8e4jkF%D8BWO4?P%~PS57_JZK3esK!LiC6r7XqET%<&3*|Zi@9a7V-Oaze zQ}|lO#t#v=;_(i9xOVNoTve~uedL|(GG7_C{jY!lr{q!}Fa8xUut5d&lm-RE?b}~V zI@7Sb?z3&c`t~rk;$CMwucUi*CtSFQAD>goMI=Y20$=pK_eLtf!#sK7etei@q7l^r z+f4-3&Ehz2{OdNYMa%Sq$0qYGCT z8zM$M+HJg&5AFwO@C#Wuu@c+U$WhFi_JJ}&Ue)G2ceNL1{bC@eaO;hinFPrV^ zPDOsDLG}{Y?S!k4Ukbd2eA@mka<&ZQXYsz^8_>HN;|0l8{a>XR&{1!GP)lRVr-xvg zkPV3E+~vo#A6n!Nk6pzMPss}^>7N%Htt)CHe1f$zSSYJHeI(!FnmbO(hagC!M!4}B zVDg0v!`E{oQv05pE}?6C$jql&iSWAq7#&r{2|muCs5F8k=Ii9rhivZZIfZp>#C(dt z;5VT;Ov^gP4I;HlX&yh!Rn`V4!jlv5(z~N98W%|Q0mv0-JrM{lEjt8eQS1||M(Hx2 z(BybZ!GiNMiZZ&-rHmvHg*aMyvQA8*U7rVcbYz(HHY1bdx-d#>CZ=4(WfR)9nz%w~ zuvd#|7f;OENlqxjEvZ?RTd=rR+6C8TP68pCi2TQWb6fk`iRw8^N+P;C2OUa_{uvb7 zZ0lje7&~IA;c_ykEw<~+KC#s=x#so-`)_vllX8u7bby==XymfspO482R=QX7daDa+Q zv5r3MTYW`D{8vJ z9n2L+QV{#@^f^{;sJG#dKVGNTitZ(kut+g&?DPbsHbnF{$=F7D$W)l3c_5e=RN662 z?!&l%Ul;o|S$zY=@llbsh-j1%ApGa_jeM!|#eHakYq98K?m;WlX=yDct5~bd}4fZnARcK zV1s%4#*{Z@%95N@Os07J;jz1oX0VOFNj8WSQ9S7p2Aq-(MA*1TIDDEJ1+@AYmiW!~ z6wjf>B0%_Xk3IIl!=uLtz;0ap9H%}Ohrq@ck73THwXr0ng7&(!+{W#dd zW#p2^Eq@%iuNQKxj+ao?SuJfjI8J)3blcLxA!xg^_yiiB*eEUY;}(weZ!@0@0hDTzg^=4T|aBenYh)JZo|m8OV)#3>|-}smVqex$#>|v3mY{B z77-p%jRvzh*=#~PH>lkaRa055Rpp6kEunqSj9j4vceaCnej$MJ_r@ZHNCZ>R-)Ws6 zU1{JrzQH8;xy=u_vH=}`zr~ruN*rE@!QH!23=x0Id+`%tMHuf{=C^af)>Qs?xWGo$z(#6KH z!<-eF`VZ!;y&UK}Vy+$_5yy-@NjWNGzWROtn9&~!M>K0c7J zP6+K}9aET6!Lw9rFpVI)K#Jw(i#DqFlTCO@-(3{>FmRIf+t%io?O&r5q7uFibdm|g zt)VQkb;~Va(3+#?(H`>>w5XzWT`{3G-J*Lh1j(=@wrj>rA??$d)I7_kW)y*>)ahKo zXMbZ26XmKEXY6v!DI27z@24pUJWH51hW%cNzv7}eO0UPW7h=H)_PWX`&Y*gpN5Y&4I=LK9 zvctYeIrtQsX+r{0Vil|`B+Q;3yU6vdIqCPXmWua?{M0`0xZ>WFx5D{`L(5Ay9O9uX zlMAWqmi;_}UO;_7E1gHL?@59(S zdDE2;H{qL4<)=Ij`YTRtZr>gaB;@hmLiQ=bA1K6Ko2z&OzbWqa;i$L!DmrqqHvV=BIV@`#Vn5{Zi)=c|lhNdA9en+oqAEXcWSE{BA=_5(jI zirn<8`*ZGXjGl4x#upbff@oDJPbPdzDNfl8PL+>_;1@i{mgO>_h1adOLbF+zugB`o{^j7B z()jpK1mI{Nrq{#I{@L0y!GaH;gQQ)t-Bxex$W8mhfd}k$;AT1FJXfygsa{NVn#Myu zM1?utBuTc4JD<%uG`Xce97Z39>fSf`w*(M#eh_G|Eo-|A{q%$)?{Mkz&W-JDE0C%a z99ob+l3xNO%ITH>xp-h9AR5d4Bet&R=MYl{Sndp(;Z{f57Ppext~VhQ$Y5O%mjER= z;uvf%chN4?F|*xaurNSJT$F{Sj7k@eB9#Vl zApzBnrtYBWh{nIBv%-o{-aHlYsZCbQPws6_SXxVJ)9RnrfirUcOPbCLqZ&lsAr@<% zL+1{s|$9Zu}!m!>oj$F02Xq$Yf&glf3Hp?elU7-DFjsxx(fdzaJ z@`-J<*Z=IH;DDn14|;aW(yjj4bIFrg`GA#o-95tz$3gRyIk`>gdjNEwj*|V#df5R+ z0zwVfubv24xnoc7GA9Gq(B>*nQsA9gnSr^A#c!0+OaUZxXh#a{fH;^zxi1UqCI@t}(BVRQ7}C|*}0M>Wyl9$QmM;@(Df zwu5$-8j}=F)VEpf+V)cU(Cz6JukITfC>`TkRwFZOq%VyPfKU(;7;-20d=BaEy$ld1>tzV4XpDR?RucB^W3tW zg13GxQV&r-c#L<|+p2krjOyMk>@4E1+efJ+{tm?16sE^1X;#`y=7v3_Z$wlyc!XTI z*QtYKsp?NgVrsVErHjLN;%sd){PB82A2xRjIQ$OP(|H6q&9y@oNP!y+T^dDu(gpR( z%)t#07tRk@Hq_QxokewK5sY5odR^b>kc?*i#WDRekBeraf&bYQ23wy}Akg4NJ$TMt zU#5-&4ngDGA6Tm%74HcV-k0;caL~I}*Tx5)nSSRGyTY(gY)}-}g0Dq<^(Yw--}Y7L zS(&?YWCpMxxB31V!kq+8J(f*eHq`JbsyH^kH{%K;cMc`^R`83$0Qp56JkY$kJ;Irw zKHtWZKS#7N4M4D&;hpCaN3bjWyROHtQQRU=S(b-?Fjj~A%oZx9rt!e`l9L!L-;kSX z1L=ZTE1%RNa+{aU*pxN1&_k6j^_w=x_kE`Rjkz%ErL9b)^iqPzLCcu9_uC*=uB5a#65-_XmMWd1U@ezg z>Y;|5EjlHHg`6J|bwG_nMq>8e;_a^a*Z4Ln78@rDlDm@D3-5~DZ>A1@!ijmL$G8VR-bjDSQeOP9Lh(=IQI_BQ!DdDJWAJ%4{4 zEBmYgd#7t`w{oE8NGxj(&l)U!c0e_+1U5tZFR*F<`#u|`N$e52$3-)t_%k#$Duht8 z!Fb9h)57fAY&U@}7Z>~k${15qkm!nt*2%cXF`Xfga9@A8l;@7H+ga{x=hceQ1ONH^ z#-P%@vihy#bh@em-@Bvr-0F0$kLlyul1io^j*KLppdC*xrxKSIg(!2-a!wie&+|1< zFI>ICen1knlQuT`oeJG=80)bsV) zVu&bYJ)73ah*YmREg(fu7^@}~*KJyXtJTTzq}h1xN;9HqEO?CFtGy!h{-y~Hg(HI> z2JoC#-(hdSd(yNfKgp5^b;z0^Oeuc#k&|3)YvEnKc_^jR3BjSrX`*V`-Nhwia} z2h?9gH%qb4b%2GX7dE?4i}CsdV=$OB?_b$CmbhLUM$rikn1`qc++T)@Y?hjXlh2}C zJ$bv^W+ZvNP7e4f{M<%x1fmHmu?}!G6 z0X;zmP~b^2`izd-_$E+rKyo0BDXyy|Gw!T!^7F&+(H)ucT_>%=bc@&W{Gv)i2$(J> zwIxvbXy0kLPC$oU{&t*QQgS&u1Fl^-B?x`>A%uCniZ<<}c49UcIIS9~2iiZ@fQ*1p z&Nyh#8IF(XgL~v_Y3Xw>6tgii1Y=N;TpHBWGr1O~L=afrEiYOZeHuoI(E)??;C(g1 z67RhcfxVC5DMURvET#Q#yJ`>KaH~AR6#G6uUzN=RO)CBSi;$f*T@(Zf*o#qh)i5(2 zjQ0xKNDnf!4Jf~UC6d+wb`=HpB!5T^GEF1&XN@ru`0=1>4 zU81VkE(qCkKfOX1s}C3%=R+UPxA8Tz*RFpK@8q}b;rIvNaTjxg^#?$hm|baLYFck% zMW|mPlC-x9U#YX1>3r;~_=;ru2M;dojXs{J)L<}gLpoi@wlP?Las|U9DDpbS`1D%m zmGQQRBQ?s54y#H~KyVJtn&KAI=~UT+p(Y04u@jOi@}0rYfXKlj^y$OthSQ|07A1?N zv3SWDfBt4*Jq;Z>eatFm(8P|58mjxtHoYiTM(*pc zmlqAW+lg1K*?`}c8fR`psMFhJtiXP*mU*l_T$Ao0azH+>=8;Gsq@;WL|{PXH5<&&G68C7}h< zUQ8sCQV`%?cOkKXe=6>~jj-v*CDABPQ34ayRfx`w8YKl}cItrz2^~86S?q9S$`NM( zwIic?lf}$5uBuXQsoLEYF9g)UhRgCx{0E z{NXf$hZI^}KuhXA0q@f4XR>?7XE@3<#j5btfX1|eGZlpN-*`p!M&0DUJo4Q}tLRIH zmYs8ju{3k#Xm;$xL}5?QRm>K=v9LW}+6vYxn0ji9CW$Z^O_=+z&ajCj8re)8=izpj z4?RapqPM7e0pL8w#WS6|Lf_;wr%?iRI3nZ9bF%J&cU1#ND)6=-_rdYPagb+Y1{!>? ztX#dpHB&sq%n6f{+Cr_Lj;{J3ckN0++JBDFq-cE;TZF%@9RLiuMIUzV-9yxx5C5Ke zJ}^(eXGEhrp)DTq^i_8AKV_&306?_2~lX*jYjm(CGVSj9xHSQ@1c_W z0ipfXTaK1K(*Rya{oVAtKCu;)BXL-Z+#m>)KO`SaHI*`K8oJ6^p<0e`2G|4K(DL&_ zF(_Ri8u;6^z;R(Tsy&t(C?@FbU$a=Z{t%-9lpj%gb~O>qH&xSVvJ~kcWF_y!+(fwS z3x;1kL|Vpo8pPKLwnaOuY#+kD3!80t_7Fq$LOh}HMWfr`fYc+83=ZZ_ zX25YX)BW>h{`=Yc@E|WEz(b$s-*ooM0VL6~?v+CoFmuKelPb3%If1xSYmM@A9b2z&?m#HaHhHqb5}vpeIP zs6z?9Gz$qv?=br?0bdz%sBdjqhu^21qSH$;jVVGhVrs*k!SQGCob%}MJAMS{0TIR~ z({rFk=zGL$jQ4*t%B5zE{H$2FJBHmypQ&FaqbCj-k338S2E$hRnJeZx2Vh}qlNHl* zwk<`4O9Q$AZOZ8gSQ-?XUdI=SmA53ZCWfyD75q$a*2#@?o7uM&yDuzgJ9^CMm}o^@ zMJLo-z0d#;<-co}{Af)@-#bVB$Hu7Vd463&_aR1R#NU5m-Y4&fIpLu+OxT3$+1Yv= zdb63Fj*|(fvSyiqpFL{Y&Ch~7h+jRoR&U<5&O0dswNuVYs!hO&ZHC)BYMJi;v2LT>p$NY3 z39QUYAq>aC#nwLk4>W~Msw#lMAoPiCRi1axd}?E7If#aJ^zSlYyFv25Fo;-x=aW#j z_G>?ltCr``J;u_U2kF-PXKpGrHU3}R8Zr5W-SCby(02=ibx~s%%TxZYgnglNzX4i%gPqH4q#BwYxTW&$qt+z}6Wyl>bP`M;OJi)OrU}|K) zx?p7?A~>4-niMeY{S%_ZT=`_P9jO7&u9Q^mdlN<2ohd@2f=MsElE9LT$YIIxQUfG_ zxMkAexy8b||EjD?6R^t&*t>TG-3IiI6kbh4{s7#9nnY?=S?L>g@et%at_tO<}M5+s~N4#3!+wr}BVFCF{e ztSUd1;3Q}ko3MB_QPnhAns(U)n#7pP7tG^4KdR6Ub~*so%ZQyp_8Nb(DKzYgu{a0m%TO z_YGskz)J4;4k}JGq|&q-jSuN^ijp>wu{h>pgJbZq?H3{M$EJK_WzUd3*?ab>m( z(h=Q4su35)(eGnZ7Oyv1OTLK~`%ZMXoL*dn52N2P8|xcGoVK*C*Kp8o&`m}k9+)zA2M&9QAa^L; z(0XUU6+r+NCZ(k*F*L=DX~(ti!&kk4`1|gT0|T0kDvMTktGz-tf9RlwSX|}54DCA; z5!XcuT0fhxcAdtE<diI)-YKA`XHc5wea;;eIfIrV`WLnEuqc7+i*-Pp?b8vP3V!-wi!s zYz^a~U1`Kb$I+ z`FicWtgQMR%G0Dg?l0}@TNWWTbdfN>_BN}JG4wRS8>-~V>?TC6k9S zivfFo9I2Fp@!6`o$`DQVAQUYRYQsl@Yte>53Go_^#qQozCoCs0tUHBO3mS>Q2!1YC z8#7a65xNQESzB*iVOa{fQO&5I3*w1u$=ISuyiyWJ3xO0}2T38)&^a!jxSH zcq%o;a@n`-@Mk-aIe6{@^k`_)y+H8Lx`sX^O{cMD`AbDbm1>n=t2Ga#4YC zYx}l`LpcV)7%U#cY8`eIWAxLb#j?gmlnFryy``9HsaakQ<1EnXem^eZ$niuWt+~uR z?dc6nTE;hSZ7%##=jQaQ4sSSQx5n%^bpB85(F0~ovJq1?|a#auf+m~wBHB{BJ+6DnB5`^21;gs?}PeYWTTUDsw3aj(u8?uHI$swxV z^r)aTKvk8O6n)gfc|s1%oC;dCa@%dVmFvx#554BudB_QaN1eBc;%_2>KSn@})Dw=QtTt`!N)Tc}8KPRZg(c>vowU8p zZe3op64fzR#EOY=&<6-ps8NAUE=E!LrhE>OEU8dW;jrTh%lKof_GZdVlK|vRMg_te zSRlnO9c+!$jNXuY4NNwTzWf@*Wj-!`3tCs5OW;#p-jgiG?PNjEw!6Ev6e@L%wJks{ zl(*^nE>tDG{rGzJ#t{wYaScl1PM$o{ zjRw=ju-K3@S?xMR`Iy zc@@t(@2c#t!5G?-f}s|dIpV125UuTS=beu1h-BOwdb&3pvCaLxVPK4~WEP_%STwGz z3HL=m>zoo6^pR_`Vw?^IDnx>b> zc2D)2*I1Xe`z9?oLg1tOupglb1hkHS8BaY0dm}|gmf@{FIuLavMVkrmxfDtpOdKtt z^PFRJoN8}-5Uzgx<6C4;0sCRj3`h7hyBZ-C5JnC&xlr*!g!8;8ZgyBnvIMlGDe!Xy z$$Pr%mUedPA&C>_Bog46Rj}*(*kRCLoUwh zK9U>v_x{F2F9$h!!Ec;@+fkfMObz+6ck-@$Plk#U1w9HGpwSar@JIXt0Z7>BzuGO7 zZr#0~pe1~2#vKt4X-iF_=RemsMI1n-^(W?s+XZdmuqS>OaiRS(q6m<^QATb@#{R93_8&SX*U;UJBIwp9NgJ7~#=Ui!w_*aZ?f1c6@P6ujORu_ZDe={REKj|Cw z9L(J4rFwxbpfbUn_e-Fm#_aaTHN^LFG^q~aID|#1&8`}3-CNBe8`ooT@45ip z+b#taxt^3T~Lz{sW*t9GPVj zk;_|(E@8&bbX!Xfn;4SV0w3TB5$ahIdCI#FB zCjVQoU-!4Q`p|ALN+81HP;P%=5t;ltSirgWs_;eE*H@+n09y-ujRnSC2E{TIYOtVT z#YgaoZO{y;lzzG-Jc(2ZsZ;V4Ws&yP9*2|=@tOz6C@bui1lur@1Bu>b^H@ciyApnD zaoB9tUk7)_&_E)P=-Gf{DA>FX_4Ay<=N?H^uC;0b3y%rn0TVuX_5W5~uMXFnwf*NP zn*hPiLD@h7M3rZOm{Br-zIvv(D@5qV0G^v6;?pf5ZhsdSDoAf(hrQ~+u|$X=77ZgWnhSA9Mji)`Zfb<;?sE;n@2WYIa+%Z`alcv*Wt-OqF{7MEL|=KAXPM@U{Heum|Ds`})9Z zRH74R_h*>Nm8us5OpAAJ}0$y#=>@U7WMUZh|Q(ear|AmP`cLVbYZw)d)F zdb>mW%50aV=01K>jB7C4vX00Nm!whY^%4WGOAvg}2QvJIW6`e<6#$It!5>&o!)6Wr z(wJztcfJ->Q~3B`0ScwD=o9qTi(Y?LCUu#py)H6Z>Y)>on~px9Oo`T)WN7(gk?U0F z@M{pcf%P&~ykPeMjjnw1EA+p!lEMnbmjmCC-|2In<5Y3skzj?rL~qC=EBg#<)@tBh zX8MT)60jmz@Siy7NJqW9=#D@WL`O%M!c2mEaem3Ov>2MLYMgycQ`4H7B*2S_cYP)S=v-u_GKB6%Ake-m~)l#`HDuE_szTO=e|musjhe4 zcet?mq}(`#y1YU%K%9*>P%Cg zP9WwVyRRuD6=d*y{g@cjV=Pv4zbonY`P+pd{FG}lWKb&_^23ERESAYjoKUKbDSPws zlrP}z_NEnl`3cxPT$+XBq0ZY0%YUa`S)Nex804}DQp~DQNsHL0K}X564A9~suL}WJ zc7%qFwHx`EUnvR5(Dm-o`PJodB|b40np=4>5VmeMSA&d;$)3k8TQV-|6lGadw)Qz; z&V3D>vD0`oOc0@SBvn{#s<%n*ksdzxi3@C-iIcc?ew@kqnzf@!oYWz28mK!G-D3gU z;(ux#A#bF#RYs}bIw(R|VsQc(u61595dZm_!?hc-9}0kx8D3ZnG0{wPf;IZK5W%F< zkD+|n7s!<>EEyihy9lF#E!=vJsxCr(kYBCOQy^+392$wlpXAR3fA^)KWao~ix0*ne zl-xvLrC5@cAmd0&$@dEIn&d{ZIo{k-+9H~Bt1@Ow?~+jy=RlDGL~W1ly`xS|TEZB# zk72n$n!~5Ye%M!+&k$E}Ai|&=G-j>A$C6KUd(-=v_`BC5Cv@N6a0H1Jao6v!t?o`Q zuv#W2%fYq0_c_o`&BrNIdmbXI+q1jL0$chh$VJwZbU*-@6kJtAr7U! zZkY2@g1U*K$`!?n`QC1Y3O-xms}=5sZ)rZt*m1%*bWL7%=RBl7Wb#=A@9ze3EOUB# zJ7U*+rtSV97=|2UL46y>jbQWjK2)AaCH6Q&C--;SWVfd2G5vyIyPx4oP@%LX|adH_?}h* zel>qy7u8KW<$@oBa5LB|YG0Itf(%u0-ZW{CGDS&{hT0!QzfO)=8`Y2}H0T!eS~>RJ zIV>iU$?j~AX(#@cxN1iYl+#9Kzt*x{@_EuWkm^^QlMFjkW>CZO0h zn)Cwm0#186?VM9X>wY*QI}erkK%fPFZc6mOn>4(?LIWO5X;?=Bji00IA-=PE5aUy7 z^S5-B`?mgw{SJs%c<-Vy!B9Dw0%lw6jcPd`EU*#KFy1u}Ldxjh;>=5{o#Y!DY)iT(lu7m6Ahd`0|8eA+DKuSBDxI{%qf$Xw z;?(S(0Q`9gzu`vAz#emjMEkReWdKe)ohI5jvo+5D7bHWG(vB%T&r=3+anmvw zbkBS|>9C3{MXKf8r%5NQkN{b*7(Nx!K*;tMOVM+PY35IrYgRv*04!0_ zy@h)c+@a6d=M&OYc@Gw9gQF%r!j_(UpA4%9WB?dfqEM-0Yis&3j3IR?R{{qqdlJ+1 zlv0A|_dio6)BZR5yB64`=%LBYrjCY7&ZELU$ZLxUm2{I(NZg70g=n&17~CTiMHQL= z#}K6;M-mt+@~8=`_hg#ukq*`IcY}-bU8{#nti<}iMuM;>0O|!)$e6jLC3#OvRr$1} z0Oah$i0)>-dP2Z`hwaWl!n2?1V)I?AmGi(VX4rFU-PoJN3efN)TT288_K__VwL24~ za^DnL*5&(Xl)5lX9aYnd2%&n~cjkMZf9`P`t=wQ>lG2%1)_=%Rud=a`FJUp!|t zl6{KP9+kCT7QMO4YyI|@5?~I2`V64)x+c;QO6y0BBr2uR%7XC@vxO6{q`SKqYuCOk z>>#z)hbqlm?Kw`&K2!i*i+c1h2ueuM$u9<^TZ%6KHIY_A>e^0B?xA?`6oM4I>Th`n zh|CS8G6$`LI_2GY#`y+N52fnea*x^37q4<+cpo%e?O8Q6oaTitcIf9QJGe)z;& zlKaV(+4p?H*pf>}TkMt`ma7(N1-4?|b`d5Cvgbdzed6W|pDXw4k=Q;$(gqM**1qx- z)Fk)^l4g0Gk{Lup69}P9nI6WTu(ZnOZKSa~VD8lK6I!BNt}S)IMed_C3VUY(aow@& z0c&OQ89c4yB$vk*2f`af)|IwSvg0l$I&E8Z|4MDh-PENY0SZ?uHDDG|=dsI&v(GY* zjAOO_q{0>P~WKR z?|YjiH#DLf-x-F!{7nEo-h^=LfNJbDfTx5LvlYYR*TGDD9ToDb7uHDzsidOnRj0d@ zY`GM_s+%@Uiw#9$yfgu}P>9O9gzp-EGwmZkq*>Hb7pg?2pFv?Ks&ByzzTB~39jS6p zac}@pm@obwy7TZQBZysE%!IyKNO<5={PEV?$IFc~4AhW+uY$gzk5E{lM7_0M@$;8Z z;M)-&?oij0G)Y?yaIi@51^kXDIhb84J?~BKPtQY?sbFxlx$q;x)bW5)_|{5> z)@FuY|%$9EmdUo zGPt!bq1gw`v-vhz-4_^KAUjYAJxxIWVS4Zm(z_kd5wch!Gr-lYX6tdQwZRJP(gazX zFU$iDTd}J7vYHnVyBfT%ov>scH@g6%%TGiT4+k|v7 zIVL$nG~8w91Pk82*M3s~SR(W-QWmwjflO4he^*HQ1Tt1A;|=^UD4+13wQ~;dm*fjR zJ5;X@9m>vnAl`e5@vj2riAIqfMretDlO5idQf$2dFMUj$htFLcSQ>G$s9uKiNpcUOkbldi+m==2miu9GveJI8>W_$X0aqLho z{*|CL{AVPu0u|!Whxm?0k!IGaI*+(WKRE%_)b-`iWpkpxdOD}?!_T`aH$mTI|K6Fi z2I#H%+J|*_C{y2N4p(U1svk6He@Bdn`_u?NsKOY!FML`P=o#$FW_vs*Pj?jqtg=S09S~)DIcaSGofgzVz3c z_m|CrqHUJW=IU$KAz?9rQ9TQi4w1X874f5rT^H7^LLk=-CD zmPWBqnHYTPg>08ffEus%|27T>n6rdB6vGp$oP5wlTpX1`K~cwVY_qmUlp}m?`yCS$ z6TX=B@>N6v_VI4Vde#WOG>4kt;(-~9syP9BgXVyZ`pCZw>hR%XZHN;;d$+q}m*c1xCPHc<*upR|SCweWu!Xk3%sH&?4)O$i2IkxtlZz zleVM7O-a_x-IpYof-df(81VF>8)c#R;-(p@yY-b?>$LiB$EU&ypitymBzyaBPm$2n zZ%>rC;$>hWz~;x?YQ9N*jTr6GwhsD9*g;k$PpHkQWrZa=PIJH$*sqzQH%AmOqn!bsSJaaWILZv?H(V2LZ1=oz*~@$t3dY=-e~_hJWB)5832 zG;U|)3Q=K7aV*kuN9c&NaSphE^Q&O$bv(PN%z{W!(K%J_`{3xUBTw{OWNSJsw8p1D zA}%649b~jp;tcH~2$-X6g>GTDH+oD*$8Ak{g7fIM%gQ_z_!F9!UG%twlUrz3OD<2% zwpYl64Q#*u%GvFir@CG~b>iUP!oyLBI`+-JA#YyJOBb$&MRV-w9;LNlQ+C{CVUSi~ zs!NuwSs|K#iQ8$#jG0`(@82K1Pc@jq@>y^D}Ban57yd?rU|v+V!CYYRE_VAxpO>LRh1kwH1}iX!aLdJ{m_*uebG@<^nd z8Hj~ZU4*9XqBGmyTbUnhuw^aGd(@gN(y{BsC$$$GO2>5ahq4PeYMpkxVK+3mNA{z< zVl{Q+Gc3_TgkAdra^l5Ke2b6}`|^~J>cD}i;e}xe5`dq)(g1;Y9g_Ib#4=RKB!*O* z2Uax;|Lz||Kf`}s)P?Is~%Vusg)aoz(RuOBQX!6p~!|SsbQPb~fVJ z>_?g80t#GtCk(nJVu0>2zZ0|2OyuQ14VcI=8y>d!RXK4z*Nm``{UUHt{30#46733N zbfEx;{+OhvEhktbPjWLI*y2+$d-w=WxtvE%lT4e#2ll}uuRJ{2frsxJcoOW+^4z?e zDcib5a&D#SD>RnU7>7;LB7<^TOEy6U8BCMjJkR(H7zUQUqk5JPbpSczj`Kd~!WLrK z52UgZ_Od+%xr9*YsZ*nMgSdB!Hd-G&cxx*_7Q7X+>ITVxZ;4Fwl$1$izN?Xn-p`GZT6uG12jMlT1E+e$~& zbIGomepO^Du8CX8eD(Dp*4V&xXyEs)<>Jez`8Lq%qew*}U^2$tf}&>LCh-m3H2S3c z#~zsIRls4w2NyTHC&Xl##w;wil+hrJe`j90(fr$_2@=iZkZ9Zbw(E+X!tp7;6MEuC z$KVKVbB^zywa@62rDQ}qHULm~bq^Q8H)tluF>d`GeL4M{JS_%HNKO0XF>_W@uu z&^|l>ZW0~Uf!6XCQ96Zp$^{a(8M1gX9mwClxE>KhGX}E)cCSlzp1i4S3mu)A7~193 znJFVPbYXyxkhmT|UcgOaOF1r+4N@mf55C9O2RBleK4XinB2mBDA0j_0FI}_eFAyQ{ zd}FI}|LB5)|C#xR8MI(4^X)a!c$slqD&p8=(b!0#yd-(5ta{AHv8z)M2iKH!(wcew z2soD-M3($Tl$t-y8e@TcGp~CvP=qMbsoHOm=b^+_BqAiYG2Pqez~eTD+tB#zLCrnw z_#6qO_UMuh@#fRs9OCP_&&6+|3%RWqpDNXpITgmr9`jPa-$r9ecPLjm<6OoJPkn8v z>63gfZxN(NaC?}%m|IdGt9(+WMIvyaq1lGw9f!&zo%PhYfGWh5dTYbY$$~BRaIqvp zjh{vGVaM@VebTQ2@G_qtEU5D>xyIdDmUeFA1EvFeD-b(h_!NSIC+k6KXz~@9cfRvQ zHz4V+ec~xR2O`p0KY#&~uXE4}{}Gv(qM4W3v=&v2F*pPVcPo|AzI}KUR2t|Y&5Tc) zAbZ>-1>yLM_s92;AIt*keRsj5WiZJCvm+kUJqAwXs2`UV6>GAInv|x^Whwwbv;TYJ zIh&3t#2cq$xzU)kJed2Mj!t|ujcECoh4y#*zy=p3(bwTyHi$Vo93ol#Hp4GL6k>;y zeI;l3MaM*oAUx9Zj|z^Ny9yTtg0Z$?}2zr>dTYH$H;5#xS2M* zVBrY;MKNh`;tY#-o$+iQ{D+`VcF4a_?Y<6x?b-#c_#JT?jhpGRI9+nu(q&#o$(EVG z!1y454RUhS?@d?zNL&`(ofDL|hr8>RsMh`ksk1Hncbq1a)XxG1E&@c#>I)2AqwNC4 z>xvD#e4NX@I3#nE3)c-Ab)`TF^tE%Tv08h&xFl&>5A_0Qf3gl1ou8V#F{63dzx0qM zrW;-53{316$R7WMY85LwD&}3*JWH9D>oU-YBTN{~fHkV1@7f(wzmv%g?^GgkVxRjF z(+2}SGTLp?EMP3{z<$jtDm@@hSlNW>PU+hgIR!8aF??p-mvnC50w%Un#g9F#o|W zeBn~R#r=14P$9n!+E5l?Sn3pX0~s53r%WScCvo_BfjDVqdJvEOUH zkGV(g%PM<7f+{9L+Eeb~MuanfVFL+q){6TYeg0vvIIJP$o3_?#@kgr$gcUPCt$+Cbu z+R|@7s8bK$NGg(xwzdUT;rj&`aoN_`bEonPbU*4fN)5T0FQ^1-zha}`xC{3$v&{w#trcsbe)djUFl`O=~Xq6$`?=_ zMW3RCx$r012)bh7Ng5`jfr zzCBQ7P7Qlr=|D3wWBDzH^(zW&yIh3&Z&&X>T`xwP>62zSFY%*|O6rVotwz^%7Pxdz zf7@O8ryu#3cmkKxBCJErp>~-mseMobOUC8x1+&d^rWxQ^aIn*#2e$N<$(gfpoC8zz z6C2x2*e)z)Vnb0RU7L8dTEYu)aKMQAzTKZ5r*EIYbdYk4_@D9x1n$m4OnEi61z7TK zV4-eVRtnsX39ET~1kAmV0)e04LV+in;E(ja4w1h!5tgmH1Tt%lEB?x`frA`JyxMID zMvmj#ELhsF(b%U@TB}T#9H=Xt2%AW91{dJPPveRYZc1P4rZvR_4|(4nA;_@s%qnE3 zW-SVINO{X_e_lhpBx7$;hY>zdD+5)MRGd!MDZD?SIw|=fU7E5ica#xl9ks~+q~9oW zcrAm!xoYRqTr~B{UpRr6Z~18m=maSvE3Y-hm8gyF#cHf(y#h6;Di0HIEpI@tBIl>Z zYIEyAtybWzGqxIS(I#553ypgJ2#u}9jqe*!fJTS}iONRLg**9D2ln=KlB+|!)o_P! z%_g$n^@AIVWM@i5d~QT)Hew)%6Td&bmV20KLRtAB^MBaX$Z=6r0}JJ?6&M`Qp_nb+ z&mxw}7Z>^=+7#|rtjq55C@-d4QQCaTEr(vdwM-yqemu$B}(eX61x&UXpaGlJI{NaUP*Ds+ZU4sex=Ykt} zUSyZH&h8=ABeFk2j?t$A@nJL@3&||%VKejN%tsyMVQb5pW%@=pBE+IB^khQG+cmDyhUPQs>o zZqh^6mLMk`MYUwdArFB#DHrYq0LHZfOqinAF)GgjI;#;AsMyxLFN;(A`9TW1n+sGQ zyxR#@{TW;9rr%=XTGbF4 z!8ENtL;&9YGw%BDDe=m8QAqOWPM<$kZLsjW|xe$+?C)9g#4P4&? z#D(g#M$8(gM-+|cMir%b|7V>S|NYC8=7d92Vz&MS$u2=@eP+Kl@Nv5Um?3RH zHA_^|Y#OeQxvORhNXl^C9gd>DkczW+SfNZ|V|DvkSRlvxw_Gl30MVlzrFZBmUR-E*>-V%uC46f)! zZ0;DlzH({0o6ujxq|*0Gxkj-GJq{GQUxNV(PmT4MpDI-whDr}hV{*=c2&@CiTCZK! zp^AlMSk3*%UI0l-#Lb`9Cm;h>q}ntppr?(3NySr!T7KWDtS#M zHw;?n&Z7c!+=x>T1h)b1j$!ijdr#1-of)kHI;-pj`!F%WIjyn1{yh$EYj8vo;?`cN zv|>&PaRI*4DYWhf{JM?q0%5C~=Ke5Vw&u-?yC+pGDWaa4dQ)k6cc&BOC1(tXpG9>= zCDo^2muKVUt6@^vVLa7@@JF7{_?WEG8DuZrK` z^1a%KUI}!=KkLv+^KlwdeP5`yD)Eh91sBbA#NK5AyygKx1g>lel>PZ=$SEc9(|HC4 z+Sl|ht=bl};R>;O>aHnjhxj(^umPHt3%jU!Fx2)uh4w0{@23oS!-||or`KZ>O5zl^sb1V?7&&4k-B-P z&+W_y2dLnCI)SbvtPjmV(OPK`{2HK!vR-zU66Aq0RS(i34bt+YHM{xWQxPQIMQ)gw z;R%N3k{}=V4aa)|%QUwzYAAQ^)wWz?OjHggESTn{K9w!vBLUC%44slhfPQUVyq8~Y@3+>R;PRx=`kPvGN3c9;Sc=&6N6 zMBLXiUZA`r_5Q@hY=PTbQ*$uXAos@EvOo#fM2L0Q4=s;tu`ROBwrJ}vFU|hKPit!y zlf&Y)B@Fv~PP`dGD01VjVYzYIeGryC2!_|@Al|`mg;fbhQ`2K)lV3w$#wo=4AtZ1j zh<`?US=~uWB6XG@UuyJYunkg%)JBa3Nek>4{6uF~uQYi)bX%vTBG0ff3O6mY5enT` z-x9Yhi;IM_3Aw)>4w8#SMR$|KKWF%h*dZ z?J%!_@XK`&V9v~8!jx}?R+?Rh4C#-fpCZ$vdInlZ4-IXOP6k7T8p%+{V}C~bV@E%N zpr2mDw>oSwv5jD<7Botk1q5N|Jt$ysEya5eal&B#{bX3XWWN@s012e9a=wuLYag}? zd|#rrbWtxRr{fMFjEFb_5AP{8WA=&2iuqFJVXUa!M!iYQ!3s$6c4Y#7V#O>-)$ldBNX2GqdDh-_Z215&r=i$Rff1Ohyu}PHSuH01ULv)p=K!7Xyv+L6l zHY@}l5Q+C$qJysIDw}djFQ<~Dl3mjrA{v{$jhA#w2QU1u#CYxJ>Dz%mQU2@9s_HJs zhErSXB3y*RpYV^OFf;2lg0uBJ!I2ReM%-FAw`A)@aq1V%!6MzWa5a!AZ=<(_Y4-@p z;=adRuFuwi!5g-Hv@N_>scbrZ8wXp_=&JG=sz`X}a&xmuz?+SWK`noKJ_1>(8oBW5 z^M9EVdwc{rJUJhMqkdU@E42zV-f9ThSn2Te#RV_ikK-E7vy`L0z7+fL^Ff&nu$t>i zcRiYVyN1KY<)LO+EE6lB4_*sUK?2VV_4Pg~dC6mz1l=zV4rJp9T9Nn6o}kUmXwaL= z-P81x%;F+r0|%o)4G()kgWBru{inA#r#?Jk3nbJXTg3*-Wd;FUKF3%3(L%y&RcR!E zMU41H?||10tcTe10h9z=&W)a(3mTrMN854f992kp40%!&oOdMg}%`7{fmXibpD_Mj^{u$Q!G|MF(l@P z(bT67C&bF+D{`g_f;wCYG@sl_I>MBHonUgS1Fg4(lNsrE$_xW>kuRzvc49&d8IPP{ zbDFlZ&-&)q^i-kYh*J)yW1BVe-NT#iu6#SSv&j+yMqaN>^Lg(kg~@?Lw_E3}Qtg|H z$?HA_F$zGwR|JnT6F#!x<}ZSCNo~8EgevZ0GNDXPzJ8VvW1;!U#s6%YIMTXhM>AgM z1@xFMba^o@Q4kVJmEBA`Ri$HymN!P9B&R_IS1I6nqV6}-nwSgz!cCuZSg`B!Ohabj z5z$T+Oe;6EcGm@zy@d8+hJtMN8Ze_PMcGhya`I{WlDjwDQ2t!0ssiD1hOA&=WwQy6 zVvPh41!~Si`VkSid$#IGSmS+0eJ1sK#Er>#VD&=Yw}=BGfR z$b2gPj)E-^i)7Q0yQabubL@gN@2ZX3oc_Iu9GEdU3J4DV5aU6RL*g4mn(iJzDa;@g z$2Kn#6oXo;U?kyoDIDB=<86yvr}NqT&3~ d00ct|d7|g@|nfO}Gq8?6%p#Av?el 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

Dss0hQ^_Hgtq*Ei46CvyWIvJBn z{WS?5=yW5di~use9uYqk`Yp;D08en6P*!N0qDf#-coe0VKc>az4@kph9)MPZ-sRgB zftOrza^(zuL|`uM)JF;-9f5MNdM}U6!9SA}$SDX?Q1M^yP(CmM1dsi5rpNoCkDlx- zaKll^15Zdta=>)2_u-dr;y4q*Y_V9Y0>ZnJ&P&2=VEK5T)%yUTdXz1AD)`q<=K z17vS&EfpiTpA!k&{991OA(2_(km`GHT6ah?t9)f+{m>5&2!g__w=Iv|h(&=oHF2F1 zX&^#QrDn*3sS}g;RUvGo2W<>@Cwjm$20G@X-4_C^y-@D-k^FcU7Awx)zABffKepN& z1+V(qaHr*4yOcl$l;q3qyA#ixevgAoRm2mi z>lJ4Wflce6*#ISZFwXslyxZeKNb8F8Ly=LA%9^={c*q0PVxpuS50=PehRa+2Jt^U(Z4Yvx z<$2+hPPO%V(b^X(zJ9d>)$6 z?|HrLBhQnUN>96nR-bCB);F?^_pVppzwM8say;z#bM7$&P8YL*OcdHf;_{BFE({z^|D@>3M2qV)yw`V*FE=8A^R_bG| zdVjdKZ|AYzeWXJv&eak4P*ixe<=5qbe%&V28;=aFYTx`p8V1`f&fh~;%x-3v zjfWj2P8xg>b701+2iX0yQclZ^r;({e$QpG2yK5ysOVr?q`fq1OY-wC9ow_{wb-Ldy zo5rftV*kIQ(k0fwDsIkwMtm4nA|JyCA8jpv!et27^Zg)hnx#-u%uyKAJMFGF*>fLu zz(MjI5!Cu5{)+uI4Csqk8KKciBx%C;j9z5S)n1tTs4_nh)0BXlTwTg7d2o##>k#-d z7D)7grywy_^;5%YHFn!ZZlA5#CN8h5w3=fQ7F2l(}7livw6fsmrMfv9-A5Mz(md^t1qzcl{-2ZA-{<_ZoTK*pwSB+vuSp#3T;u0H3- zlriaO=j?R2!C)6yk?7rf#F~(3GTab$BLl&g`=y4Gh@=6TJY(a2^4`8|V*bVxfnybf z6$Vs@yY@M5ZrCC`#e@qgYA>9t9E-rP=*klUWi(;Hw3vnx?UFOIyBLtJ(38bAKE6;{ zNe^_m!;t?@lWBrWL(v^Vu!|;S2uqPuFTV+rh7V0yo)NvkzaCu*Q$DNNovmwNJPtQ8 zparf?b`Zrkc!|tX&Bk`6E<9|Zy`LVi(bkcR(JAQFeHg&>-6j7*pFa;qXMOk_ay5;z zlu{4hKGFoV5i=*L2e1VA5DpT3`*IqK!3-OllS;^ek^M^lalymt86xGCq)u9J|)6n?T7MgviKbD{v8xBN__| z3f0A*Buo-bKA&tkHv$;iun`CJ!TQyT#;i7p1SnrsYL7|f+33$OE!}^hD9YYGfb_0) zFsPtb1PT;5zF4#oHK%h!~r|KXIvHQp@bz8xZFkF=doy@v;a!KTkLOFZE9K z$e>*1O8|!n9!R-t&;!E-`eVLE=a!~G8(&vi-3GYgm-yHe&aDT0*H{UUsIprBke-$A z1c@P5J|_MWKbu@aYvn63G%^pP`&@!fwUE@h>G@%TyC)lSzq3zg zUIuxhH@43C;gA`cp@XtrQ^RIQUCH@~-hRc}zg_)Eu`=rcLwy$5R{#@QYBa57hbeqv za~vR=RioGz;65W($k!};@Gq0PREQ)yTW|!v#t)a;n|&TOc=B;6a%K0wo~H8=mdg9- ziNqwLg0)7ffPkYJol_77U&bn=CWuD1OgAxePfbgHd|W2LU3cbi{~9{a?pGVkjrAI0 zKHQqRdrzbCvd#vjc}#CjV&as-&`7A6EPxZxG+wwZ-J^22zaYa)2iBk8uHiF258we# zicOV}*iz6X<=k#b<`Xz$TT%qW+2)@@)EewMLRdXp0U_7xy~0O{w)CXcRUwlCwUh?g zrgR~g8^fGl(u=awjR6LYBJ;)jnW5N_rIOi+=>Allh(+N3XD;}IbrBiGD8pcA7l*{A<~o2^}?XW%W#sfr{dKH)Gax@QFHki z+O@BPT!g1|=Wfj9W#mDjSWO`XgIsM0j-2%So$`q})8Jbl*5lf2 zHiS)v$T9*$plbW11NbEebP4+~%To_CAHvKv!k}CsM7hq@jEe#BH%rA+Gr}vFskT_N zvSePs$*X0}sz0tV+_|d=Ex{t!S|GP4P&BUE7XiM;K|vR+N$Y-QtYTwgGEz(DXoYI$ zsWRZt&ndg}kqiVi$lK&!-7U%>&7(i|BX5^l<9m=;F=Q17@u(;#`M*p;<8h>mL%4+~ zqI1*&;_drmT@36U{ka`A4$1y zBe2ip_jwksHRU1#p%yByL=!b>>AM+#k1LhUn7 z7a3DiI+e`jz19w}Cd4CNRVn55wT%tj)pIRSI1V~kzEB`1Rg7FqYulm|U6(;rIsALf z>6fjI6y19t%toW^PaGF+7;+$fhwDerzRN~p*F;!nt59O z8zV2;3n<|dDa;B3+J%tru@+afNZpdUkH{CT=juT+KW9Gscd$M|UG~mB!r>Kcy%)n{ z@YMV&$M(!%rO|Op3NCDYymS0=x?XDoT9r&n)C|$Q;0@qn5GGpI{?7*7hrx z0Y9I&s>d7zgo5O2CCbS=u+Pd5q4SpWBc`9a*UFa>-G}#>02KN)0%DmuURKkrQc=T3 z)&vY$U$u_@7rQW2nX)n+mREg{#2z~g5p)jAiTyIFD^ozO4AY0BjO4f+w-$1Qe0Dh6@NL;(K<>IYTA8%16*mQYK`?r2OsifB5ea-0l8AS zlH?yM(hXjP2pPC-OZi7t8*dbB3K2N(=J}wv>Y?8UkS4y~K9#CN;Yh$H^#d7CV~b2g zP2Js@e@q~3P(W987Ii)d>Gd&*uR>QFEVM1{bc-Y>N!52ASR@R^gzZ#+7P^cZ7_}e_ zc<6qc{#E39sB6UGlpp|?gKZtw-QT=kk1ZT9y0iWcf=l5SVz&9!Q?{6-qz|k1ccsf} zPuNUx0rt_lkd=y!8OM%@Qj{US_~Z zuY}1%vJ|3H+n*s{Hw_@}5>EA;wBF|qBCSZ*o*OMEp3KlFOkWiv?GZ#5!^ELo3x_+m zbTf;qPz$w%7yU)9bZ@h8p{swZx5Loa{3^IIlxaQy*;{lr@s$KOZqh+d}~AN zJFL;(IcXnj4%-TXM763q0n8DV9@}^XK@%U!(YTeQC!m$fPTAC&+WS$J;J_?RffY_s zyK|OmcL6?|Gmvk4viuyMJ;VRgg=H8?(W|+gcsjrBd67WQTU%HU-B&V2vv4i)HNAT1~+>#n8SY?1eK;%wVYipojQ#?Ege!DJPUj9b;tSM zJHC}-vOV8GX)3zTKME6kxMXjndOv8~>eFG9Oyz1B!jEl5c0CB_?K3Gh90wbp@dTr* zG-dY6>UQaCDtV{dTso^tPZ4VD4fq2z}xi0xn0|X$TGH?=$fyWXcaqEQBAbx z8{@uyRK5Bf?I3uRcXiiCEQc-!VgD)3k+OuIc(LmvUt(kTmh%41|4P-^9m|;6DO%hF*R4rnb#97xZxUn)8AoSkzFTGW2Ty3YaUj9sKpRTiurW- z^5e%UIU8_isPXL;6Kq>MY2jq~_e3MX zrv>TSO{SS@J=!j~D3bVNd1M+;g$R8EFuK}B{vaiV5I=$Y+9kT-`%r35k{y4~3mZUy zcjo{A78(?DSX?z-xFJ@ZOpLOz+%npZSh;J>ZTxeSdP6b$+Bjz8I+4h*NGX4S8je(i zxbYn90G_UByzx>20gSWp)!m%h$&MTHUU zQJt8u4W;C{K=bI2wNFjX@y`4KQj-3Frv-`fEchLAwv&D-s)t`( zSLpDWg#&5G5CIsX86H9E0mX@un$js!jqDq=W+!twaI)oH!mR^de<0F`DkL=uD6WA zn>{#Lqg5$qn3nZUTM>C^&W8>8(~(~g_{&jG)R&-c+z_1o>x<&F0ZbYD#+#Yu5$G~K zh(Tlp;BU3N>bTlRTVTNL#MA(zSF2jxSb+;62l8vCg>g3P^lHcvHCDL9vJ<4{nlgAp ztCM624wqmnP4h4~rBAx7;_}~Sf|e9XAv~p3q~UCke3!*uL<>|2?EdYVI4Sy6??y8|5q-4^+kt}VYB;hf0H4IM$D z=u|`gfdZs-q06drih&gaGUWHR_dMza=~#83DIxlCc=uDIRoVf<2oGP~NY{guo(CMs4Y0euw>ffg~lgm+X`UlwBhk7OE}YVj*C}mcZ$jY#j`8 z_@Pd)Gry3-8lre{7vi6)Y z@QT!Qi4-YgDN>B}#^j;to@fCK3y8jgfJ8124>rSP6`#D)yECST9-W~WL?Z}JGQSza zlA=ulC+V8<26Ytny3+bI-!9-(7|ng#m`@pubL3&J8snn5f|llMZzb3Z?;Rht3@$bC}@QoFd3>z`)c{n%gNd$kU4tdp}AO6k=K=F3c2Krvdk*f zzmywNAKz7Xgrnc5hvU27HpENsUyA)nt4wkLB7BvCRsz?oO0iM1Y9N+<2GxtxVc!ZZ zJYMtX)#Fl5hshGAl+GsW0u%FJIn^~8G&zfF_%Ug>!XRT$@qldPC~PrRhJ@DC^L|TO z`!z%y7BZJk7LRX z?M)H|@XSZRrBMvWrX?3zk?26@=%nTUTsedI1|S>h zeB#103;oq2*ZIs~sju%{fFR_J-eH`?JyUtoc)Ke!x5ozgA|@1x>Y)J#RemIgCY=-MGsj~j zYAA!FVTl9Ds_!=ijxr^(bBxxy#>Y?ie4V)Kf-Myx9PuPH+?--u%`kCB8G5y(IvT}% zP6!z*zC(+j2{;mM$a*%JJZIbK)r5cX`HvH%A=RxFH3?WE+2oB#f`;X)Vufb1;bE(A zrQ+7r2Qz)F$7QXD%s!`i!xyfw7}4St(>Dl~eF714{ggkxhp!9OoWXICApW>gknY)$ z-Og6)!*CO{_Ktj5F=`xI52@+xF7}oK8?7&TB8&y^EbkwyCKMj88QLFq?Jlq$tOLKqgbyBw!Ag+j(Olz&%(kX)hk_}+e|8_O_ zch6rJhBiX+EL#O=U%(x2*rzrcU0_2(t0*SVbbZQ{@Q zBP`z8??3%XrK>|jr59p*tg?w2Z55No@|2P(or9h;>iTPA2ugRbu*^O1Dp?2kguliY zs36!@%o%!xyuR-Ho1T3wt~hf(y=f>=`gm;=80VN|QAF}`PC0W|M1>Qrv4UPT{8Ehn zuE`HWE^{ua&9;Im!aV-9*&2;d@(To3*W6ziwznL|ui>??b~p(_4jOl2u3VDeTa%u? zL?Kn4J=FZ$gu9nbYhC^Oa$GS5#q+{-B2Y?qAQ$bSU{EF;o*Er2hOM5GHZrX9W&3lD zKV&+%2kAPs&Y)Q8`t1rfEOI5S{N`;%ipmX(6)EM*pC&B`fWXKii#-QQw;8R6c)E2~ z*00N3TEv1a+0OWTN-NQoB*P#b3dG(O15Xi4(0|W`1goukDSUbo5&*4I7r-BP0v~vjB4uZXm0*`gu+H zy7GY|=)$G*Xi<{+2$7s{|G6+naqC;t<_;WCT^u3U974frmEx>**jMch5~u)ejKCsE ziD8q7oc6zcAI;O(?kDQkcp)HcjzwOWjaqpUzY*lxJt{>c{R#ua@d8VUbt81cijc?E zTMK)oNZEw2&&?pNGsXpIT;#II9~a943S8&a@lLx{6qJE_zQ6 zEO0rQWdsUTAh2{0GbwgrkkyWS>$7*00{jIOs_vA{>0Q;G(SJ1XrxBv%HuUB1*2(EdD`)%#(i|4FE<9~vAXOezb0;i)hSNx1B zyddFRQJjNJ>`>{~#F#h}pHwj&C#X@reV?0e18r#KFB*Aja~7^x$}z_r8xw9ho{yf`^#2fgs;S2V3odNj>RaHh=1CX?u3IE~iR z!=rgpr}wM??Bu)R#zaOXploFlcFlQB9|k@z+Iet5=Aeg?IJ_2vQShu5F@gXwRk)$t zh9;m-7A`-7a>^GYF(vY3CvKcef1gKkI_NR^YfO>yS~A0S(*Rc|k&1?JTO+fWX*THp zkfa4T6Re}$DVcm$Ey=!`tHv_&x)t+9M?#hMOS;?+B40eCv@%Y$8f>7sl?=)>(c}~) z>-5bNOqa0rS_tU7>u}zN>(sM9(6^P?3d2Qq9Q~UG=j3F9Z!Lq%00Kb$zxpm*Mo)?I zWy9{Md6NK|=}12XJS~Cek|I0(Xg$j<1T(HdYyDBMgmttYlfY-iU~m+AHbIsW#y7sB zWCwbMS>O*R@BD7uSM&s2zo0+097l&p8*}vcg|;f;gm#Xv#y~W@nE=NRQRpH22veKi z|D^>C`5<%s=o2qfafv_k!=`NWn0V+x<7oD>1LueAJ}a2wkM3NeGpVkSp%D3j?E~z@ zjDxTrK}-3s!J&sdx{YaDU5*6daO}YZ7lSBqZ)F~X^EVU5QN-pRAV#~%D^l%Qh`?z} z96y}%ady1Ob*SOs zVThoS$FMPc!R4s^|1rc5oZnBG-oBTBR_QgDkF;TemxF=qIEuNbA_k=?B#)@Z*CT=C zF?EROoE&U=p@Irv%NJayI!WWwO^(!-pW#qv#%o1uep4-z7!40y3j}5|0~i@MjKie> zl2gQ=u*gPjNCkBsJfvOK5y=m1reQ|zw|`FKP;ebEBFnmMk@<;|=YKWnz=js-?!H|U zx{yZWsy!r=a>2~-SU0S9`tqAeXnY$y86Ck7zGATl5akJV%FZzRjwpghR12H1l9bRw z5R1$RvAfI{9LPVIZ3)^1>3CbNiXDaNeDkfZlTEuo(lNvFt};Bq zZJg#?@L^cMs-b3mx-#mgw1BVD%Pg>!z}61KV#kQ{ODl|kmlJTym=#_s3D(u&Mi?&9 z6F8bh@z}pS%q2ccLu9eFv`~L_AmB+QVvemFKhON-O0Eg`d)w;N3daz>WTj(*kgQRv zb86Ki{1x*}*8>NTTr0}qpp`1msBa~&jKtG#@?_PqU_nk7o7pFZ|ZJttFee5XMiGsJV~t?k-UNV*SiS2at3x9KPVBO|@GM5@2(7YiRN%q^3TX9^u+v265n2v=d(m{u<@BEx zM(RUNZ-_5DP-d0K)wdj6d!X%T!?+X@(f&aIu-G^L%wLuyC601`i!NOF@_m*&{abjsAJwT0RwVtW5MK4`vVApo-@K?2Yh zc=n|thFr9aocIDH%m9kaQUEjBMpJG`Vi=QQ#x`xKR`t)F;1_2wnof;De@LHw?OsTf{2KQw?LJ*cM7?vy(EG0EA8pCpsYOy&z7YOx_uJ=eE8V5h9i1%^_n za>Z0A;I4o3MfTvBHU;8-!iFirzq(Q8IT7-|Ljw1Pxd01_BxYg4Ujg08k%ocWU+|Di zvyLv?l^eMgy{))ptmXRS0MJZlIl)?;TktZsbY@x6mFD9-Hu zylxhV4Y0uwnS68{dVpc+Gh9;y9dgU=zRv_nr*RRqHP+Mk^qNg zd_)b{JRatR7J)4@U}h1sq2WL}!WBd|I5bRAU0oSo=bmvMNhWB^Ksgj&b5;q_8;Cd5 z+zZPu4U|R-l%$4RdV-C&A2ec~F@cCQDsSMIXbf6g$fK$k{buR;zWjP0&Zz1(l2~r2 z8kns5R02q{!rz0=o*Jh)_{~HR_&@cdQtd-vvfcUHjzfPReiULxTH%HGYQ91|D_~ZV zJB>8be!8QF2{C-*a?+nz!?b9v2*hb$eXGB5(VO8rX07u)j5rt_pcg>S%7S4XXjXtp z1obiq+=y!wGChbmF+xH^4>{yC2y-t}pOltZ&{erqHW39Jw?Coa{v$NBK;2@4k#k+` zt24z;35->7L0lSJ{QAY1F4+i8Fp$DQ$z6Jow`el!Sd$vwqpze63nscAn9RNTio@L{ z-oh5*Y43O$KmUuznd(aWVEn&~SG(2%R>^i&JZ?&~OKOw@c`oG5^u5Y1GVNH#Q_QxB z_E0l;6r{cUGWXAvzzEq8BxxJG1g-9WOtqq;!euhTFj=?5t{Sf{9Rzu)O}q{8#nxj4 zE>^$Q-cZgsb^ktrwMWP0=`V+^w$LV=4Iqy$dli zd5vZu<1Dd|1d;t>_pmxJQ%Y~S07A&OHM)cB_suVy9QRIc(SL&D>qe5|Y?_wSaF3FP zarJ{k3EJoC#&UeT*7c)@!s_d1ye(ZtO)ae~F$aeW`t68=1U=PT+N@jT<$^Roh zY$|;%kp;TsAMDqd6eS{rx-0wBwCD#r94+x>!eJP^)|Cd*p(@Mi$i1W1iRJoVgV&kf zw!Js5sf=+Dk}CBKta}f}*X@BDfCq*$UPc7Q>$VNW3~&AxZux7% zcE`J#{ENXH|2Srkxj|Y!!v?Wd2HZnz*Ee3LN}F+Oo_v9P8hF1+ni2uFdJNha0t|aM z$0SLbW?Lq3m_yEA5aAx-MeZnwpL#?D@5azlH6NH~fqEN*_RbY}ZMH}>>MU-mk)y1V0+<7KK3q851NxL;l+20Wx zz6Jzlxhx=-z{9Q3Qh}^*Ik!V4$zA9!c7a&#Msgb@xPMnpq}zdSqEIQVxw?p3$@Y2P2!iB8+*-_?7-#$%S2 z`c31+W*4uW`?z81NtfJ2p*LOzdh3bhjf=Y*&b=%nME-g@Wb*iNa8*@s6jfh8uGS9M zttYz)(N9Qk#QN4opGKBo#*Y0G3jYOv5;orYgsUVP6 z@XWdJSWYs&S(58hI=&TCYF-enq%I8#CFZjpf6%n}Z%(~eUw8e6+~7`(si2N^bPp)W zsy`HQYi^8Z-SWnKaW6PJE-TpU%JMW)!P}cGzfN11o(b@~M^nhV`zM40&H!YAMxPiC z^LtL!NRq$YeHI2nrw4ui+EuYJ`V)i!=Bx^9=3|s;m)r|5Ze4Q^DF>PJ;_N9BS)TMh zHxzGaSnY?u)iSpYcg{caWZHOZBb^hBUX2%x-G+IXbn;2(I23gL4=c8*;Dh+SsoV+P zI{FVg47MC|f9e^!*Ov_1x+S&qrW&u&-j(%cd>v&AdTeIjhstodtr`DdJcSrPZuWEw-^uT@dDf~@jM=G zmB<&x#jTPS^*dS0E=e#h#aXPXF)(mf zy`$X=Ftkx#O_jnl%0(xM?(%S*rl4@gTzZ%zNNSah2W=zO)m*rI;0b(I4(bYSg<~HD z!ki5lC_|&5K2)@D6mYpMIxz8O^ zi#Noyij!2sN!|^cqq{|>&2dO#aCVq}ndz`cn6BHXNKxs{-vqFav?R8ac8*vlmBBdP zMiFk10F8>BjBk-c1A0RYd=T&bU;h^5WGb?*MbBlb!)VA-G`h$$c|*O2w38Btn&uA) zRBR%E!$i&v=+^;-cd>_tXlno%+|B#MT51j$p_bqL!<*BhC3Z)9+%MGQ~AEI8YNhv%e#I?}uUKWJ5= z6d-g2c&~r--q{K8PFvzrbdkn07|Ddrh`t+uEJ1j-nSr4U=;xgu#t%U4|K#9}mfw8_ zN48=9fzO-z_vi+3V}0{5WU5kll!KRF6`S0>xMoZM8bYbt}F#qs4tS73--z1D1h4+Ob?%k%jgx2RB0FW!seZYFx9~CUmUbFg(1J< zO|Z`A-gcKn%4BIxOPMgwWnR{X8IAzS`#r_vezPa7Ry|SufA*d8Xe?o64qD;)8CTT};9$Bhrfh%V z=-hP)_Y~m?X@sz8Wa|XhVPW(QrZu!CR8Ro3mL3Yykt`KeTiIzXT6TqJScFv?%>#2y zQ8j$3p3(IZzuWtM{}AJ@0WSSzzn!ZQr0`5!Q7{F~Cu!=KDPZI`sik?I=Ot9f39_+? zjWTZ2PIGEzbNTeuc1r8hG`R)Fd2*S?IUYHth=NBCspKROz&>~V>>s?Xz%rM9OZ=vd zqXKP@sxFdUH;mPc!oFf#63Mg9y-21IBxyGJStKa86m=?2L>u!`fEO1YvCi-~HUbv%*dWeW@L(-;ksOeW0;!*a&OZ##z@ zpw=k@M+y9FF26avJ{Vx1>ZA#XZIH>qHoX2D7BlxY6z$LFF2>y_IpEzFVp1v|v$G!+ z7)?n?Y@QSHWYDd2{DN!aOEJHIe|N&Jc=A>Zo~#KZk_U|4H`Bi}kaF$`+Xhqr6mEvX z+*!6{TMBLJPfHG-vdK|CMHpuHL3W1}#HH}PbjER3 zv5?Zy;W3?5@If&kYRBkjc<99aZYJ}!0G&dJ6)bWriPNw>yZ7B8GECTWh_>c)i`tPM z77yG@%_2wmew>DaEC2`{tNLN=d{)DfwZO`u)`>Ya5WhIg6+1RQ?YJ% zYshKgA~0$N*sE61p^8u2)|pcShrqT=PNc%fG`x1`fJ0x=(_lJ(o80L^shb{D@2Dwq zS{JdoOF}mof4cTgf$~8G;Dt5NHlM`1L#;YF?P%=$*!sgh^#Z}DN_H=Ssg>ucnd0on zCu!>g!o8DEQYJIFNA~`8lBoEsQ^4;9*V)Q0WYMC<$>2UsX~S5ngl9gmDkB1NA|%av zOM?@PX<3>rfXMEN!G19@>j7tdXH_=8qzpZ4wmR$@(-EueSRhi+-s33R9c_kH zRc%H$f_&jOtBz|SF{JarhfePegQkd@nPmt}t9Ryl=AU-v!oLf>uF+28+$E$`EU5EE zPA>JM)=&#YhmU;D1PVlzix4e}fqWUHbpicuVIqd~@bOFLtPqG12~$xr45YS@xs#-6YN3$^HX9SR^F5HQY|F?m7? zmOJtpD3Rf|F=+Za<3V!o5JF~sX%CVGay50Rg6ixvpX_2W4Mmw2GhTfwef3^Pu0MzP zOVs(CD)iKR3sTMJ z_=FM449u^3qm}kH>*~-c%srpW4gCxROzlUUprvj*9h+QxJ^`LyO?yM&kJe+g*t$=a zoLn!k@)C_FK=}r22)yFj6q9${S1paCWUt|dLR|P0a)77lEixBI>&?Wr=ldsPDfThm z1f(QW{;S6tPie*t?pn1MGSC3n=py@9XiMMjCHU{=c#bL-;=Np$J5jZK0;9K%wQ#}5 zUrXn~sM0+Z)7`PTz%bLb830mNjd|}_<%OLg`Nui#HIgvrwQJIFdt_K4jRbha0GJrW zMJ9SrNGlW%Lk+tL*KG!vUpm;Z_nC9gg4fOYp}~CKNDCHHB;z$4H5G zoS=T;`lJQ`fPd={Y15z+eOVX7k9ue(qBCWRtbC$MmL7cL%|6Ll5dD<3$2);#zb@i9 zdIPrRrYNqQk??r;nyUH$3@@qUReTxp^E6sS3|v*et&N{Ax5_?r z*^#%rb)T&qC7k#`XdUnRD$818f|`X*-@ayCvDGhyHgjYW{F3Y!8j=r;nn6iwZ*DDs zd0JgWVg5M|p$fX=Oi*jAq7Gj&(Sa!zp;7h>Uc^Uz_f_HOM&t<^bl7f>85@{$twsxI zRY`+AX!NT`F7->DC&)Z^s%>;%AKyW&LUe-yd!#S;kk;R@NlN5%pX$=U@sXWbH=rj8G zH~fdur}A=bd6Ksh7n?P2hi7d29{GI}cc1~rMY_%#iCX=CJ>k&|WK z?F5I3H=?vj6j!wpn&PJBOy~^5EQVAEzWZNpC-DEA;af!XSg0m|P4BhSPCYBnr_<@I z`i8(j#S&OHqmnno;oAkAaTCIts0QFlsA1t`eu0i0y^0IvK*$D^5mR<0s@=Jseb~VyQz4j{= ziJ!8f_vq%_8lquf#LeA?qrBfFC2PN02~$Ifj~-x9R;nHxduwjS!+xFA8KO`ZDwf*G zcTWa`qv;R7hT;-Bc>GA@Z%{wzF*u z^Wk5xOaX%W6MC@@Zfx(~EAGsqcw$6QdITC2CCTR;*jmgS=|x*`I^7BAo;TDf>#hyk z_e@{b`endQcGf%QyK}nw3M%y%%HDMRd(Agu+0@uhSxAB0t0PV}3?rs?hxyW7gwbbc z`>WGbesM4CL4%!qGysmwHq^V*882C8HGoS)@%BX2)v2+b9{IQs{L&EUDX#<^@_Q-J z!;;D7*zR?pify-C`X(Vm_Y7dGq1vYBx#8vhHQE(8mrJCD^D$yWv!ba@bfB&KUKcf# zu=i-K+MA)gNDu!@RH|_ymM>d7BG&K)yawQUT1wbN#3!x-SpeF{tkA`mfk=HYAU%9$ zrxprkl%Rmt%&&8*qLcrpgPNSKOq6Ecv)-xvz>6q_Yw5Ylg1ZHv0edK()5+^Qoc{pT zw{yQE?xQV|b|b#+J#G`8^4bTXEm>Yw{f{z@YZ+6Pm(M7XI`}x{Mg^+69a@eufL7PlUjMr;v zb&rPlne_(=IpTltGW`N&Yot&3mG=+tk^YSZPf1#yx0(9?-`MB@zcZ1PL0yE1PJS!v zJuFVxZ+lC8*bk*`|Kt=iOO~C-vMO$WjgjL-4?%Qm$eUTyKdUs3Yy;*fxn5*Y|qN3emqTN$YbzDM*5nf`@`fy)z9T0FXXk#N_f72VFG zghD`?tf*DL`RMFiC$^~kS5!Xjpf5B86nX|Hj`n=7@Qm9c=~1q2=m~2|zQ-pI(MH)r zV0apc-8+LPDuDM^VNtDiI!Y)O@wi#DxyD+RItYmB5vcGK3DM_1`BDf_xG5~h8d7nj zu@b>&Rv<_fe>bz8nu>sR8@QkT_NB>}#bQNy41*_CiD%#cIlwyrY_<3{IDHLwI%wdv zL@4l9Jq9a0sO(R1^<-ElI|iH3w4pFg8^fZ|QF@SH&u+ie}cma2k8}J0TL*vHJ4mr4=DR z5Fh)?OnVn-sq%6L)JIP1N5+;oH%4yH=Uw~E8nE$?8uJUxl^7+3`#HlS|W8(!Apitkv-&8rs!sd@%GXh8P5!q0NnNp>ghDCC<_ZR zaS;Qb*q|Oa1@pM(_MuqWt!jF23*V zwG~5*9@QM!ZcsFic2XP;exj&HZ1mQ|LIk@0L|p*O_Z*d?@EeLvtx%JvT1y`zIV%ZV_hin9S?f|UkJ2o*_djz8C|t+keu_$2R@KRU~^zn6OUC>Y$lYw4c1i~aVS&4 zgjrfg5mllGpS>#jq?#zZv~rR}9y20C9Ob|GFgG&Hj+348Bm!6hY!>Q!gnAe2md$2i zVZ>uFfw)Assa>{avYG7*TNp*;Od4g-PISRji~YeQS({y&j`5k-h}14A^*Fu&Wc2k1 zhG@`1iJ$jwu?LdK&284c>PzsduiL`x9izR#JRMixy1S52CA%o~K8&Zv&hwSihe6&h^x&u?73l9ChjY9@{UP-y{`G zYl6>|ZnNkr7&4Cz@DAbc1WJn{Ih*aVh@o!-m95 zgJ-oWIgbrpkcM^lnHRf*`tj#}{UE36Mm0y$rRNflTjFqap_O!RM(~(7I?$+K^aF1K zoQ`|AqT=OTP~D#<0YXDaKU!`(mMC1lj@d^ks<+rGrC_zryIs%|AShj0JkPxl=#$r! ztNX5sDPcj3t5f~MpgfW801*Q#9KJs9Qr@H%eLaWM#)ABpq zm@uDPqz0Sf*1T~jBp<_livoJ$_)^evD+^ zhajtHCF*>{+Yk;QMOWvHJq00u6LQl(jGQdB7!$jdo_ zb=i%_EEa_dTjBKlF74o>>r6$Ba$o??dnF|GmIh%(>WnvQ-eRP!CiBUSB^Y8PYD8MZ z{$5HBR*Fllj;R7cyK(yN1C zH?31J`Z3E~iy;gUs^N4Iz|;{+R84n>D<<@2zHvnwc^h`v?4W3C!7b(0~AUDyH&?uCUoc{%47`IO)Ip(&*YGeYc&2sRX zv!{W173-W>xj7)9qB69092){k^C(Yl0${V#wA1a?zgy{_6b)ps>`N*_*i&*Mp3$Ba(M>x!?PB_vO@CKvO|LscXgeEJbwx zyP@HI-NC7qd_ralsaBn3pw#&c^aX7`$H5WUL}TBm10y622!Sr8V)`uAk0MAjEVJM+ z#CY(-Qwhz+fYRM1PS0(Klu_UuPAImgyLvIrxvX~F)p8(kb6kewf<{`E3+K=xv%HqNFoi|k24-5mB zJpA@nXbUQEf;6)+$Ri6$`y)!7W-wPc6w-e{+gDVPNile~vOhS1rV;NnC*;8neY>sf zZ%w$GQ!G~rUXC)sv|FL=G2`^c=5pk zid?wZ4s_pk9W+Zvc>^{MQGu}br<|2*{sFa*r^QsB{VjGm*hHE3KAXVEiJ(i%cM}IS zHS=G^Cn<_Lt=dGd-eNxr8KJXp%!r>pd^+hjz=}+{L!le+}&H_9Wf!jqyPqTW;Qm<`qW=8Y7p|+wm`Mlb@TEDF z{1tw0E64ukAO94@y5*j$9TOB}vb-+7UaYW)Wgb*tk1B}C7+4x-SB$W;z$x?iBq6wE z)HA4e35Y$4KJRhe%=xuTMyCDc6W_R((}5spRHGiJsvk0RPUYqn&;71H=%QiWmzU`$ zi*;S3_;&*0Nj%xLNB4^UjpaYi`HgT-)FHU zk6miB5PBhmY7SEQw+?5SU>P3fl#g+ELa9!+_=@XOhT-@-a$`EF}giL^9K03*&E-8fh^t1C{4MAnSGWYzUhkOAY9V|N1 zP@Nr{kPPGn+yHb(!9&M3w&*3Rz?gfe2vf{>NwlEBmF64+WWT!=XB#|SI-XBvSXHqu z?A5;X1}I-UQJSL$tYao|Z6c1}<;m;}UIX{^(~KR;jVN-WV2`z14^*~a1O>O53r#Tr zo;i3qG93R&t5Z#;fmr`O%}oe8LWj8lTy{n0f}@z-`Q zZ!!E{U0q6r;9Zb~5!m*r0)WKGQu?`2A(f;>`+3rU2@?))v<1MCqmYrj@k$goawqgq z>qE~QlQo!>c0yBTFkaKw6**Es8v@gven}zhZh#mwncp+YrQ1g4NFhJ zp_J&YHoyt{;ivF_pZeBDB)}C-=CbuQ+wWp{kFt3!CBUR34wR5D06V|uIk;tyLnd%s ziMnptXKOQuwtef}nDc2;qZMOmoGU?5MN8{A>U@2#{~S^*2WP4;=H*SWuL|Y^NadNN zC+7<<8k4oDc={7V53=3N1Co9|3J^Cqov$5j#b_dBEDRQwfrc9tMJr#JwQq}ui_-(% zB-U8&Drx=_-ShIYjR9|2NEyG48vfM1gU>&mcHM^cvcr-Ke-W0Q52hZdX&BvY>ERwCU!kUh zqNi>tqF!n~fL!UV{Dn%-_5*0Q6|YjHMs0}&3?i&ZGE(Z9WTG)*o!*4@X4$lcn_eR6 zXQw+``3WnP!RI+69jWeqm+PeU8*Jq+9+kNC8vUU6|y z;q?!$kK$blogs)(C9dk_R2OCZXDLpMcVv=(A~&*+>3V;$#YcLGD(P+Fov~~E82J=p zd`{G=&T0Ab8Z-NV=T3&&PtJZ#yIZXQy9kBJE z5S_J(5Aox*7UpxQcL5{|xW}fbUNvdH-EH0iAgSx++KePL<@@Olx=o!Vf z%HVtn7|$UujG(`?Ai&4cCQTw03xX{yjx~B>Y{&Z5ypO;Ej;B|Jxth{H>(qwQf59El zjb|%07paVXK0efbf*RDM-XU^;ZdAMV>mGj4fC_|nwn}}Krnn8N>o9+V)_+)RmhxQr ziH(c|OdE`s19}?tK{@Pz_dp$wBKhCc+Ykd{J$+NbnwKA2Mzad< zU=){4evR%*w!hMzpVGyl3jYrTdG6+rodj4&k*1wJl^u8DDkj=C_k2M{FCelk-%W!_BE^AI9lCoM?fnI$*b;DUvoYd(b)}x(*_u^R z0}*);YMK(rs&KRlxK6tm2$-hHVS^I|(jQ|Q8~jp{S30iSb?8&nN^*Syujo|^GZ%m4 zn(V_e9n|xeCxallRTA!z*2+>*xc8Jsw$9Y{7e(HzD2);~mi6`xjiC6l{Ya_O(#At%k^IFR2}7oH{QIC+_E;djV+IN=31nqZ0r=Y!rrs zO-;buC5ffKDgi!CY3=}GUB&jm(_%#?mAqjUo6VOV(HA8z)R}F zw1W$#zvD8t|1c|dw$YA43g$v2%h=>{(e?Klqv@G6B0lh!a8NSWX-jfmTSr~wQi}njG|c*!SNw-g}2-^uB)O+f4ea{@dOhBO@*9@ zr8avjQ)^D-Pi|4fV;*GL6jAc@r|fqdW{2Gy(U%ht)bHwXqe_AnL)4w@OTX>)3wL{0 z$gvnEyb}k*eZ!3OO zHpv*K>){a0cf#?SPshDyHlLLkA)#=?*FWjwI;LPJ(6$t^Ld`hZHyc!AVb5yNS1wrv z%(Oguw=%=E&ETfc`lL$J?o*VbcPm6r*)C$xpMw3RhU;7GfuKal6(Zc`Rd;G)pTCcV z^g@QARSsSn`sIT#{%x94+#muV2{3f(7bJ}0U;UoZZrho4lD=5=Jl#%o5<&Enc_G^j z*zk^)yhQ7Kogvvwh_yg_buX=*VZIl&{2@z&Fh@b~rba!tikmeBlKC55q)w$Wit^H1mt0;OVmM03U_YM@dk^P@wn7|^L6 z(@<-4V97T^Vq`p~Ili@RR=;J#CR+g|4q7*pN-k9ve%auxtPcVKYX7HQ54jPhI4#Ry z7a$Onf%!6|vB^D{x#L(&#$XyL>kX}oUm)`?4}i{Jjlf)JEO*PDjJr&7Y4?;0%uDXF5EP?de=jC zk>1N*&BIsTO6Hrfr+1?SaK@dzU*$P(CV#L8VHE6@oBSJ-o2HUYGs|E&H}w~oQhs~F z?hcT3iP)}ydT&P1sGw_dz|AlA8%2zw{V5&@&Y-T8`voo|R%XMJHEcn>0kw}5P7@>= zRVj{i>6HT2!oFm1LD#!o7-Dicb%2yR#zeCR%mdFag zx?Px+=v^1sh?{$JjJQ3uoZxrsVBp-oQgJC9pG4jJ#O?IS5&r(bVjrgb+n+JbTIvDV zSYJ?Rt&;)`w0*dMD5rBJmweluwN*Jerwx)#BXm^2bJ7 z_o6Eg2nr!F{CRthverM-s26RS*3%&Iqo|6=vx8_WE`oyAxrZse<9Yn{R;%q;rAD%L zqSpL$nnjkxG?MLbASX?rB(}Vj^#FzN?oWI2^O!~#3sTlg6!3R{lk=#9PVRI!1%F(# zdoA%2&1sdi;8jWk=C%GG&D>>Uz#N3QDSdU#O;k*Eu%a=-pyLZX1q*%GUNoOO8W8(- z__AsO^RZ50Opx?`A$6nSdc2go!HN3OQ<$Uf+59V>-KEd$id-g@4w+WoEt1+I| z%@l}}x&iZsQXS9~msx0)sZzX#U>0rBr@lH(#7M~jNE>exIFx|CF}7d@z)mxYOVM5c!iS%1xj+M^Dy%bClD>PrT{*zc8wTZf@M@xn zy}7#8vjpK2F9wy1P+1Z>Q!RmzADOO)sO&Jl-V~{?Es+x15ig|dLhb?7aMevUW%qKy zCg+Q8BOUEFr4d6%B@>ChxjDJ)ojMX?P>!VXGOv574e-QS~<+Y|ZbW7VKllvTM^O$Of;>MF_5AB}bOFCex_5j|3NsjO4p( zOFBeChssVgORa@CT>6!~^f~Hp!i~Pa%O7}ruw!8vKZokU1+nM7Tf1z z1rFZ~i%5Tzqa9maJ=c)}9XfD@%11B23*T7ZxEVeifG#_qD!9xZ^-kW3Fz}AU_r=c( zbbT}|W27qF6>*+>*YZ{ytsks;ts^4QDb?)N=#&S7xPGxOM@B~GmOGOX)T2`~kr5$) zwB@4wBSX&Fz<}!(K^|qI>c>su()!Q*_S~n7%X}(Dr zr#*qlTGlhfD)F6*Lu;^@ObW3QTADX$)1*|vVlsB&PSY1SIYCz&lf`p3J+ubD3#)je z;HL*)1FEa2%tpd2I}>rMDRuaXbu(>xl%?vn#O>gydv93}gGZ4%`3JzQmFa^?^Vh6G z#rj!+yR+>5?kxL;uAopI$!E?;b$vd7C}X!P@1y zlfcV!kwMWN0+BZ%<{8NMh{MlVFnqTn(sTuDBR=PkKhy5h=1nowr3VA8#eA|cqPlJk zCG&uL&Vzi7mmsLOD~CH{0p>lbmdVvaT{r17Hp9K1w7Wfol4L+}G2_26)em3hrGpYr zm;fEN7%ha#6C)niF`knZv2*V@zm`6i%(QPG_POp2>rj|U^! z?eV=7_v$~KO+6N}-AQ=*RlRsIQV6rj0QonkUi^+;qzT2)_lGYKhwT{D80tx*#d9(a zb?Xg>;uQiv8&n^5vHB4C3SN7@+}{tNPhtn0)-`k$YC+)WAFCTnMHrfj%9`rAu&rwN z`H6!x2j@YF&_~@m9%6#7LPQ!$8Qq^apZL!2lfvU%ojwk>E6dvXFcW9oM&-EghCJhL zj%pSu7iq3=E&e}=?^AJv*u{+J=v}^EMTyEs2=x3T1ij==W}`!D3=d*EZN_ zC(cFU2CeLb+T~r$Nhile4e%OiMSzL9)8Gy2z-`bQGH%*X2nOdS)8>!EjhpI*e0mMXf$Edw6r-+09F$j8E@PoQeX_n zK2Igs5igku^@)r%lrikq{Tyk5;~LNiN?yP4cD6OLDJfqA23ezhok2-25&)-zA%Q0PSk4B?96-N)(TUGv*dzfQXCJ5I%qpqX4kNl;<<8_1}K6cPD|6uu1z4WYt^{khw4%^ zT!q)mhTdM4w6N`vp^yLgN9Lo1Ysf? zv+c(oZ(bckTCoTA-83!A#cp+IsW&!pb3S++b#hoo-9T+3PZWWAVqu+^whP>sml87g z4?FSv%pG-5nBoArUQjg+=c0>wuf z#wiH~(pLH5pd3D)pi^wJ+A9oSK{P`U_JCAzEYP)S`;L8-1gAjk!b%g-R%Mtokx|RS z#TJ>&k;5&+lLN*PSWA+-Pnj0EDJ+Dc-f^61mN*Y{U*J};DUYc}mY9ZF} z=Hf+-y5~*CI9_el|BMY@XBV* z;qe1z3JH1%_3ii6c?#%8An>;w+|zp&Y}!VL-z^4x&&u2nb{NRP=Rs* zMjpB09Iwr3QX=ewM;!1IdFD+L^GoUQ8chx^Mup~$e)Z+ae>MYt>bZR8F=Z!psbMeg zSYSeY{T|7P16ObV+O5H-*aV)KiZwMj9nM!5OYjO+h=Ek=J5zTQ=0)MPz{D1iVi{ci zJ=^7l9mI9}RCOS6|+h4}gcX0k@8s%@rRX0GNbbV(_!urhmkM}-^7Loi8C5q7w}4?5^;BW z{OgIn^aCBIEBvv-Q%TEtxi(%*D(-nG=K6-UTpeKR6M-E+#at}j-4Eexd@;LwKt$v) zvMSbf7xwKN9mZp*z0J(^3+M-N}bhO=`NK_bh8d9BwM``?av2>p+pSFu?f6W~Wk z#jFmckfAp+M93(8xMYY&1$5q3%d+U75eYe&Z)2%BxpDhA0SEa7)tnZc+b-YFN? z8oRt5mbclCRk>LiixvfD|Xkm&Qg@bgVg2T>I=hm}F~h_Nb*lDqAWeW6qC|RP&wg(py6ns_Ya& znk;RVSj0Ssv$!8Xi7l6kiUz{xNQ5t6sD>OOkjlfE!W95tt{$>T`z$Kiiu;9X^v1K0HC} zn!ouU)v#ioHWMW2%+d_OqlmF65@jfdb}#7vnIEtRor%Fis*}P`E=0ieI26`s@^xm} zqG)vHbRgz*d!VVEmCMLHqF3!;Wu`x$uQDF*HpN_Pt{dJ>$&@9tnm_L=5(EN#PVpY| z=@RKcrrS46q+oY_Gv}Em#2;8O69mH#ItB=aQtmi?%#CJv1xt5UziuNa9yxlg)kv?g z*%!16O;GU}9k)6K+GV;yzJrNvhRv!yD_zhtyZ}Cxf6GHg)O!1_tiW1v!ia);oJGgS zBfSypen$~`Yi)>nV>_Nuw6<#{@BVONpG2!df&9@!#eH zZ7x@z*{4#1u1}_dU*TH68K@t2ooVncUsImyeC>#=V;yjKLuq;Peb0J%<^v)PKYw1P$jWRfSFC6CSR&>a!~$ ztcBIxHN5qW-Hw#_ujW;1k(*bmx=iw0*ihmu z0Ex>G*!DxncSOs@O+Fn(doWYv=m?Q+lXXe2_3Mb0Wn}x$V&JfUTwQL_gvR?{1C1q9 z*<&(zP>OUYpqz30cRW9u)WnKVE^mId-k@X~3m!RGX*G(HIEVW}<`WI2llGAsVMpNk zbHo-NJ@o4gu+T2DU0F*`FZ}lXr{4lDnqV=!|Npr!9`J~8pa3EtKlKUEYj8A7D$Eu* zHZL=;BzR9PY*SYs+Hku>?c|mLp2J_4yoyvt*onWO{O>k&zQ-Q@2)ctd-IwdDkjvHl zmEHY?ogdhC>+$w8rd`QTUwquGj>qO)63A}{=9g`B`&Pg5FXv{z!e(D}Y<56+g+6dp zcd?TuNG*N`$o|8`On7hKJ;H5M(ZQ~Kj|op7?**MLV9W7VF>Rojx?fUXEVN96G00y^(Yy#O)Zr`w@$gs0jgj6_|!3Ss1To~v-KcfciNTT3Fy&y&M zb8P39Z5FzFPh9L_JC>DueqTRdMBTORw%YMgMN-lt63PnirWDA5xPkARa7U&K(U8wG zWuIISDu1AqkDp0J=BslLxk)j0gWU!*iqrKH|5!~KLo|rzpds(Vx{2f{q2!oCe#*gd^ZBR)(Je_|QP6-1|ginTyq;EXO>dwm+|6 z3yuQ-ywO5S(#H}ajtN}K0uY@hLkd4{O%6ts`a*B)N5mFbv2F;YRXI+IC51NDf84^9 zrSfo+Vsx?vT++~89wfkxUW!z8)u^a*vo8YDRwLhP2B%J0KmSlplQi5w*z;VDP&bL; z?ffdnvtdPZJZ~jpI1j=Wo-|7MU5_ zx4w+1XyC%BsoFsZG#+ogysZ%J^d27Cb92kbd5b{e>2uqn`PlZm9sddE2R>|2#G|_KMT!e*}%_xuW z$|ynYTRhWs7ivu1LXB#WSQF~3Fz+VjuLo7=@yIKFb*+?D23RQDxy~WSp`ub!`PP2? zbe?&O3De3jDe~#Ukm?;DKH?6GSO<5D!b76qgzSMWx+~o_>McEZQ3rKaxL91A7>1kp z#oc)np&e$C(UCx_9s{kP2WlUs4h~f=L=Jo&8I@dZnVb;y%8>?PJT1kjeP6&e^QSp# z3bBc>ocAeDK7afMggD#LDO&n*KW{^5iI8{DlxlMhsz+%UjC|->p_I?}hT#t8)!uYX z`aDWSHBJD830NDii~eT}p^S5~F=1^4IC$6YkMZlxgXXB8^vtwLzfw z!PdqVCR=p1Gu2Ojn=04>cQt<%JO+;IT%@yUq6exT|? z(wflQxqB}zJL^{|>RyO`5kdavOwqq)R8s3np)1 zUx6eezi@yQHT_zWEy_<#05Dy*!gOZ=s@;Fm}w(Xn12bok5gtFth{p~*vH3`Ax_{s`ocqKOZaiW(p zn4~loHtIT7@5z`QLrq93<9<0c<1Ua<##@k6beJVV8F1;oE44{*u?9HX1#u~Mw&8kw}}4i>pMC5SKSSblp&?u%dmdZ`0fk7^v_M zoz^xOq8VwhZ|w{2kvKkpf;ay{hWHqPj>Q{63ZKT(F4pIUvL)epNW3yJrdWM4?$6D? zTdN^3QoY%s%dudbW-j0(%O>y@sux4QV?NF$0 z*%^SeIf(DlnQQouxAhHK)dZRi(TgNzK}He^5XX>XFKIK^Kk{N~dFaWsd=Mt6cfh%YS_tTltEWF;86T4OYs<^~I5PTmK4j4Y zOq#GbA0B?pK?WY4w|sge%7uNE)FLyZXI+ML{OMUA84|ISw$!W7*rMH68buA5M>1GY!E1?N0v% zFILD+DT8VGEd|7^SqYWTMT3t!e>sk8J}Ix?))d_rg$jIk#l}pQXCBL!1+qK4r3~{vYbr$Qb#8Zwk z4V;A9%s}-Ue&AWsPn=d5OlIBbdL!G3ahCt~XEC3IUHL5&>1J@Cu#zkYM8Ndb`(wGo zN#{0@intb-63-cl1AA*7t`qS~H$Gg@J}E0yVitZ(Ghy;jDi;I3ADgHts*s*urRwb7 z(E1eE1OHc_1GqVyP!MCON{yX~&*c>wRTw|d7wF}2N zcSK%WW%^I3{OkH^6xYywqv$B(`m=&nJm&ZvEq)HUys>zrOTGEM+uE`Sn>veD%q}yY z<*%-hRU={YD6U~(f@f6IC8`<}$i(D!2_%1{JeLUJTChNb%bItI9KQ7&9s~4f%m{b5 z;@shuK1idz&)A`BdSKBQfcnT_XZrJCY~zC=6WS4cx)eK^FaFqIpubK>U0VKXyk3$R z!WM5xn3V00;6E(9&Vc1s%Q9C#+Yi3|Y{qT-G$LPd&Y}2>P48p$2KF%X@j>TRN*B{xSIg!6tXAHfdh(pF}gT8 z9wKAzRTn1aACL7EOepSiR(0MTddh%e8fNe&0~V|BM1N{ZIcKPR^nRM#CkSLxY0&eN za?DLO2&v(tzWEGydJ7@^itn2*wvr*U`wgw0;ieLB4v4iqvb3MuEkj1mPguN8*46I8_SHb{i zT*KJr*9`j9y5gcDf$8ya?|%#^7%w0@0493|CC6YL?jP+nA}EXRk}ma0H(}QsPs~<; zEZK`We%1iZ1Hk>cN$t=SEq2*jn#ZoL0MN=@n_LT70-L1VRY&D)CQvT58#u)aqz``# zFR#aLbL-;=B5pi~GlM274&%CLH70laQ_Uz%Hfj$K@l1wrFCmt45d(*OeTxoA&1az} zp&;hB(EwduL;t?zktG^S-4}~vS=n?U#J`WXBfFvT6(n^{gz2BJzn_tSVvEx|zRFiT ze0aoL0`tonVG8}D=)GI$8J=)_Y}6Q&;bo=TkQ0L+UM$Y zGOt6y;S(R<)zej4X#HzYi>TFdLZ{ zoN)4NPY{_(f@ZCmsIV5l8n->M60K)Tot)Nh(r~Kg0fXAC1ux&fT46b*g8kFhwLOcI z`?WSn3QM=!HzmBNoDjq5Cz?(iBiSSBu6XEO#1-CkTc90)HUyTQ{!lY3V88*w3H5o( zqUUIz6*WZU^T~qOo)~Q}!pFX(eM)oep?u=<6WK10HFhD9Qz7+Ylp!Y@%E-v83t3&U zwPB|h*swr&x<`;-@-c^w8{3NS%F??( zx(go45~vAiWp~v~KYa~1U_RmvpB}{vn)s!MDuQ z5(Rwro-II6%qAKAN|p*p%VDviw=Vr^25wb5h#$U<@v<*iL-x->)oS!*MPCSz2cxio zm-N0*DK^Wt9^v27JK`@kY<&fwMgN^dZ?i_LE1d9D4}(mf9uzFwA|5o4`SJn!TA=XL z4$xUKAfI=Ya{`|8Xy2Izw5T%<0@jhUqy!vkX;mSqIngXL1UkX94QDmlecpNyFk?uq zq>`~zkbmUE*ii-_vx5sb@=5(MH_v<{Z-GANaY%KJ8AiH8zYNh?wX@x)1D9?I6&8lx zr^>&wykTvNY@tJ%^D5e@L0V~ajC2x5KI``NFPRHJ?;pQ!pAAl?46 z!*=;B4SHP;9TMYbk*&6s3Rcqu^n}-ETs=Js4(xl`=cy(=HkT0vej++&D{3A=WO8|= zFlIg<`+g_Aj9P?OZj~muy5fcV$rGq~^~i^ftU1xW5JKa|A@>){)P%zW%h|D6 z2s~4mwrp!9lQd{vns*Po{q$&~j;}Rs_nchACjy||QsKL@0 zu|KVIg(%i+YIy31wx}rEcW{=2%f5I91-&)^7}Bl16`X=D8F|Cm^jjOd4u3;Ib6ID7 zj8tXukVmjB_O)ql?5^xy=c~`bX;)qpw^bXTS1Yv}o-0mIUr&%PtX?XJwSnqt=5H4O z{d<3MWS1f1%sUPur{%BH!v|-tljkqtbW@ReiTt+*uQaNzW%zbAh!;nvg5+q~M2vaQ z^r5F_lLya#Z&l*>IS48PGIol=^=}u$mmsqcxNyF=H z5-2Mf@5y?JvNOq!U+B-RzUq8NOtff67znhe!9&2wqM%%+1*$}3v*&uR5s_nUkOW%w zuUq@w3PB}U^N=|V7VlToa+k>KD&Jq4uxjM73l(7)1Sni;b~~`%q$J&Vy!e;Khe$kW zM?|HbNCivr5bP^}UYs9--ztV&jDslJXsiT&WFt^Exh~ej`{2exwH5X4CSV2(21Hsf z{=G3maOvKzOWmAk&h1|SQ?vCK2`2HX0gMW0^{`rWFgU_?k%x_3C&K@6HrXQAjR(AE~*Xe>bS>UwFaD@Hj2*CpnoKl?# zu5`CN*hxjkcrlhoR%QFMX!|4(XbZ{@7{CWDY>S? zFzZJ?4e9hTJsIo*z-ua@Mr5mqIsgq^SGFJw+LJuV8&XXnMLxF+pLh4wamz0m1z6Pp zqKJ8gpTA15JBPy{IgXh)BF93XG{=L6>{?eh0qZtqMSn3uYv>}lPAm$@&>xKjO|$SZ z8aTTqe!qJtp%h4t#SAKQk`Qkk8otg7WCURs=@U2@ShuWjpamTowKJjR4g{HeXmT;W zW#L+m0zn#oz8)V_*wqlRf@~)sC$32?qHGP(7PH9 zhCJ6(pxOJ$6&7H8^C8P7n`vDMi)3y3KM5lzdU)ekvatI!=gR`^oI_dqvV- zqm-gkU_LD}+grm1i3}^amOp2sgb_d0y*oRbew@st&-hb3gL7rg#tswM|2us{gv{UsXh2Q2(}8pD?fh!yi%~&7kSyTHB&e9U+*<#cXG*RZ zAYDEdCJn|BiTe$k`DFJ%=g}MST3p1pcR``865X&az=+C63`+MF+OQia7c!gl+s0u5 z-BX4{hlvrr7#wWSa^Q*fd$j{n!ht)>CQeVdvJGGk^su@h%$|ZhR1B& z{L^B*k$JYV+dDEP?Mk&_Y#&M=D0S7dKh;*umbi`lcEL!Bqus#!dec>VlOp~C58B;B zHm%2H_kWTqH|nb7g`-cAuL)G*WNh}uk>_8q?vn{~AdZhK#4dZ=z|+&u8S({ JJZE>elcq$aHwFLz literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512144001-Config.rsc b/MikroMaster/20260512/20260512144001-Config.rsc new file mode 100644 index 0000000..e1dfb03 --- /dev/null +++ b/MikroMaster/20260512/20260512144001-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 14:40:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/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 wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/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 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="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \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#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_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#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\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# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$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=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\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 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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 WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\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="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$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 \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\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: \$newAddress\ + \";\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 } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\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" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/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=25s 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=ether2 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/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 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.4.4,8.8.8.8 +/ip dns static +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.33 comment=AMSTER name=amster.vados.ru type=A +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 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=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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes 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 +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +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=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +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=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +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!!!! 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=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/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-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=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +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=facebook dst-address-list=\ + facebook 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 passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +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" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat 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" +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 \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting 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 \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + 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 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 \ + 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 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 \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/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 hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/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=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN 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 acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=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 interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/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 note +set show-at-login=no +/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 package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +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="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512144001-Diff-Config.rsc b/MikroMaster/history/20260512/20260512144001-Diff-Config.rsc new file mode 100644 index 0000000..190fe26 --- /dev/null +++ b/MikroMaster/history/20260512/20260512144001-Diff-Config.rsc @@ -0,0 +1,16 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0