From 78f4bb627fe209f788f3698e79f612aad2d21f2a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 3 Jun 2026 00:00:25 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 03 00:00:25. --- .../20260603/20260603000002-Binary.backup | Bin 0 -> 255060 bytes .../20260603/20260603000002-Config.rsc | 3412 +++++++++++++++++ .../20260603/20260603000002-Diff-Config.rsc | 66 + 3 files changed, 3478 insertions(+) create mode 100644 MikroMaster/20260603/20260603000002-Binary.backup create mode 100644 MikroMaster/20260603/20260603000002-Config.rsc create mode 100644 MikroMaster/history/20260603/20260603000002-Diff-Config.rsc diff --git a/MikroMaster/20260603/20260603000002-Binary.backup b/MikroMaster/20260603/20260603000002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..59f6697751e63cb822e97b95c741eff9477bc065 GIT binary patch literal 255060 zcmV(cK>fe(sF8D2VW^XrqLc~__YXNt6lq{L$M}-r39Vy^YqN!wWF~JBInDj-%X__=V9zzBS;;kK zWFaifgEt@e%Ibm&1)0{EM&0e2L%-adDCp9d4}q2Zz2y?Zu_TY53bT7hBNR6CZ9`IY z@Ei<^6G9^~8YI&HU4-^ZSq z7=K8VOJZ7sg6s3!Zs)R6$ms(|d9x*hg88U%2nP IiT>m4p2-#51HjeFX)|m%PUG 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 c@QgPaE*28WRSBnVvC%ltvOumr(s?Z3d zBNmqJG!%)B#5Y&mv4x0g&D6(moQpCT&A?cCPu=*LzO!SB;wsNz?U>2sVc0LPd`opa zNc?;8wmg?)zAjlwKv190{82(k7f}wV1*)T-i>oc##UN%77FAS*pfQDk%XD5j_l$Kk zxMs~eW?mN&IV?A~al5vMb3tKzVIKfN9R$&#Q`Y8mN1PqRNp7Qwb$5A5csn8^P6Z32*vGVY&GEav?ShKNrt~L8>=Y~ z91$(MrlQfKkMsH?5}mSFcL9+2s1#;4th_7x*eA#3V6sV-1fK8dAnRvJNh#}qQib8 zI}S0{dvpV^y|jT#J4vpa_V0^##y|ch-y~i+uz(9LZ%xWU%5o(z2y#<4B0!U~3atT@ z#s&wm2Q)Owj36np+rs&)Q4O;Cimtv$HsT6TG_=~%)*7}v8uHpwC|oZ6b3XZ*p6Kv^ zg;O=o-MF`$tHlF8Z?kuKuk&P#$ojKAF>yw~EX--LYQQh$RE>ci;tSw4U?mdh2HX(3 zc864+0K;-su^29HR?}|NWAJnrC$IhbDgWyhruAfp7WMo)!m$3Y_Yf3$9<44*kT_&` zaMie27rB-Q53itgT?s3veO)mh4tvvX4C^gN^O|WfFt=QEV*$*31M|Bi_Qr`nT7Bq$ z#;mI}j4ox#KTK%=WBq1$7jm++Jq`W27L#Mnu25{clqiv;vdF?zNuG_sVOWW9eb2lj zmi7$2X-v9;NSR1j#K@nc z^co%(c@lxs6lhwbU=2mGAtg^ADFv-=<29rb{4Fs5wwAOV`~eC9ypkGO??o z9eeSW1)OD2J(#0I57Wa~*kQT_EAG$bQsA|JHnT19Y17NEjq<@nA zbluN;)Bm&YU4E$JdcuU79){(m66HYAqm454kiHeVv*QO#^kD{^Xv6LM!dUI4%f)=w zf)lPoudk}Ur9X-9+AvqwZFE=yZALp^8)1PR&y8)DI>t^(#)^iARNshwC}@A;^BwOe z`LfAIOAJENISna1K{UlLc~FJA)lsul;~}NIQZ(vp1+Y&8qmvml-FT0_oUXPZOcj`d zU6@pB<;<4%JN7@@5>ZsmwB_xSqkE?;&iQ&QxDoe2@FT(PQT~Y+N(8ZCZ?hbS#c>OZ zo^n8evP%fV(9$0sg(GZ?%J}T1+H&8E3RJREC-_JufucuG>c-GdnYALfY(2P~5R5Qo z(4>^Q3w|Gk2O&cf`C1k*88J9`1E3lWy@rg{R0u36d%Ss;iL5;!>KD7n=m#^SF{{f< z?8Qf6*l~n(K*`s)^K?G5ud0<;qdp-KZa;V6X4v2Zs_LSm`J;NnXGs|2;DlEbP5SyC zQI5)zy4q=|y(~(MD;p~Np2oI(S$N7Z9}P4lo2kV`GMlc6vmn8j zC+YjhK+#fD(wlun3BXAjlKCx&DlK1_q!BtO86}1&w-3GSiAEaZxObMrWsI72GlXx=8ut^erfa8H;;dWQ=}~&=Bl04?pu=Hx`BPWx3P%&=PQ7=ja=W2n zT~M~n8Wl%I=8|60NwwETAS=z`$0megL}Xsk$c$zbMV_;xel?O|eYRePNuu>jZQP{K zL6;$&mJ*V?ShwdGkN%KB@NF@ADfzakrv#N_iDp~cc3M-E1|eSV78_~ou{hO5xTewT zgU^G`m!A()7`bgV$kfq$BcNV_ra9St#R%kKWE6a_bI(ro)%Y)F&;(*xP!7#M%2)c=T7uGsvdnkfCpv1EM>Xf(h9f9C`3Y-CydwWpC%9n`7gPny zi@z`zRhoL1EcSBB)0QiWm8R&t5t~r+4NXV?mrwG?Fn9&q;^&o-3>4I0psG3tUY_Sn zDG3rnOz}OHIQTuFRNf9da-oqYflsP}A27LZEvx}u^o{S6Fs$As6@>QGcQO98S?3FB zI{{An$YTBZzPc-dW_y9qKIjw-Z>aiYdu2Xx*3ej4BuyodoS>_CC z(Oyd+eK~|79VI1=KsJ(Ck?+JGlP|TF0H>s8XiGr);afqSfLhgsSMzB)T>ehImu_SCKK7BL;ULPMq7E+M56Z_;t`=cor5O+#Rhu>8b~VmWQ=2VQw{x{!qIG9u4yTqg}W zgyhx8P3he>&zR(VGBhyir&u<#fGP~}3~PL)Ps#^uuT=-)`eyhLopUW8v5{#jvK;_{ zI-n`udG%3WPNeTCZG!%Q++TerEgVg52a%plJDx7=-7Jh{-C0otWdm>4e=C={o;1_F zNUMGVT7VeZLNpkf74VzizxTynm-4rPQV0 zrb;JY#Y@hEa?=;=+}%@0m?}%5cBW@Ypeh=i>1ztmjL>Q@;3H&}IQru-J7ER;Z&O7!F$Hu`_56<^R?K6*`CHiZ)b2EN2XHa zvl5UQt7cA{r_C!zU~sj+Wh&RD&-d;hd7kU39|dp7iOGd2e}z`0>0g76fv-20IbjIg?8E&2r?$Vd);e_WBbH}JT!1-*lx!MBau9mF*s)z}I!j7gl$TAxq&-&hg7X_pcWmOEJzJR;FO) zREkR|ur&&${atjJdb_XJu4lf~xCYQkGBl-r<`=o|%g&PHfBro>w%cMZMX(GPpI^{0sdQ=Z6j44GH7#)FY0 zn!JSk^7bemLDQ4K0#yT-OVwYCdXP^{!j(Dq&I|!qDH&NZmw-vKGmq+ELDPQZYXXVw z`SG$FJphFW**v)(GLRO*jPBWpSINbo+od+oW|9r@USe>Q9D@DNjn|bo%FZdUvCXN^ z_h1)rp}ADAfd6sgL?idAmvxS%Ueq|>gtr+It9ZaqkDUL|9MA6vjumy&kVLXyJq5}e z6z%zHfk&=jZ!7GY*&$PC5it1l{btK4yzHqw=&B!62n%%& ze^^33+vf%;Mwg^Kp!fk*PbZ?rlw&bdb^%&PlvcPVC?Y!_F@4)Z4M03H3DN@-8QG*t z4?n{B{K?PlYp8tJbH_807(->!{45b-cgxUA5EAYI?UW~LoU{!lEfs~xy1j$}QC>Cn zcxd2nqa>}bt!nr@Wyf5|CZSj!#1fbh6D@TZInjVb$N>S{po5Mdo_2SlRYQ-BeY27LD@Sz!m)G;R5+L02+YsHTC%?&bMW(*nGgvKM?7M95?jQwuXD|l% zOy-mv)ex`ufrpiGr8`RY#|tB}ea2_^(7n5?zvC3p$Udfi&FJOolvR6U(952yxU1ev z)R_H;Y}DK8<{s*3Kew83c#w7Pb=Ux>k*|jNH1Y(k2VY)3)HEk>u<1-s=IxmUQ&W2e zD5C}HYe453L5~Q7F9gpkCF%B_WSvQcP*zep6;j3*L)B`Ov*uj#3v@I>3kGquhP4FK zL}oD{hVB`F{MVv`CMmp|+GnV51lTmzuAgL}^ls9grfcQ|x83l51nxx8u1TMTujzlu z6B}dJL1ZG3oIDw2RbO(tc5jp+>In1Jr|WKem5-Xr+-+(Oob-&M$to6Nm&veZ1x``7 z%&E=xFTUhkFM&crsXR?EZwc(|3ql*3>5z|aw%r{zBRpFyE0%V9G%%MleDncZKqOUekz z(P3C!R&WBV(L9&i9Jbb|i0z>gOo}8FPZUdz6phg>6Hh++W9l4aBeqSWY=07pLf{6fH# zok!{W9ete3C`+4!-dHe;FyDK@310o~m6i3o_~<9!A6x{Gs01&b9m@H;^3-Y#(r|U$ zru=J|>JN|7HsSqa`%k=4$N0vraDojrwq;P=0eaNSJ;PFuZZ!TA-pCi)rR6K zj6x0poJdgqs!-ZvU6rd0y)n$}5e7U$B0^QnFney=Cnba-5O6mIE%oT}iZU6-gk5>j zMGIgR0m=NUc&Zb9pzhH_%2AV!J(p~(mE@V1KZJ5MSpdf7vvf{0qx&z3FIWUHEmfM9%CG&|zS!|bL|a9U z2ZSw`QiI<#(4(j3#lyLV3RgyE3>=(BTLNNn3C> z(!s%YwTADL<{GS`z-Blw_l+7Fk*Kv4kgLblI^_@|wG;a#t!TT_sV{ZUiwUG3r9pRU zE|*b#IIQ@@pCsA=QrAy!k=3oEHI0Gqn6QU+xxdHTyat%v?ifd7yH6VTrp{4VpVU)% zcCqHZ|B&pdtcW3o-pjzy&QeB_74TI3q-}!|O4@+lf9q4Hv)mYi{I6S3o($0zxW6%^ z%3+}PwX3+{qZFU`n{CQ(=vkL#A!k550B4^8(Nh8f+{gqw1uwDntF#zp@-h&3R$ilk zgz0?(9ELlgu9HU$R<#y;+Z~kQwK-P;RHM7O?crPdQgX@*Gt*RRvYr-Um36+l8DfAV z=;enrT{W&G4_UzkU|StLl7{i`a71D%x8VJsghCi+aCjO!CMK}e}gF1t4 zE6fL+tcc&m%2EgtIjw)uAm@w7b2?s}Kwy8M#=~3am}HD`+IRRi{hB4z@G0#na&srY z4`*(9$V-Mu)!Jt5b13~VUB8aoqBZ zIhQD&Y^wUGlmS39H&60;VjS@g41$2Rdqsc~q(?B%d$UXk3I#?l0Lv8asQ||cDsi(Limekml)cE0YrP+D zcbxR6XCd?dsEAuzUQr<2bDU2%VW`b_Ac3o?M2y9VVIi+PfqcJ$&EcZ{J9bpU=ThIP zH_W=`aKLBtngFo1knKI?1vh-hghIsl>0VzIf`S9EKNc?UK@xx*s{K!8pL78sLN~y~ zKTsA;fXlYu4ygI>8z)AJ;iE6UE!tQPox$)a!U1Ci=4p;E`Ulxo%`mP4Z`KVH!FDoc z(r++H(b7(4&7fxujs$fr@8H-o?Te}O0FB5D@A-W*t3DTg<3S`uWIasAB@DDQhUk0M zSN6XF--+v>yMpxI$?uOV=??vPVqgX&;rL>r8)_^@|FCx{K*y4=K;vZkNze zZlhZ<&haeqF#NW(Vw^cg+J`O^f$eg3(Tc29-v)2WK*fjgQf6>nRk$WKUb&MUVf$xW zYJTdhG}<9h;*KNvbe`baHxppFNK-xP@588QUQH$J-UD8hI7%1n#p~+ua_kxcD>+}~ zMMC$;g)X=P*AG;nuEB!hb_M!ym#1D{TF6iJ!pyp(*4Nra0Y`7;cm5sX$j(4~C8iZOi-BY|sx`z5ujYL=j+?i&K2bpU`SSMPN;mqr z|B!F+!J3>nsUNlL!l0(fI?{l*1@}UMdO^%9`4_{ZNC~1J zHvNel*M6K~86vaJ(892K(Un#7O?!3Jwm#yqGaejvQf5JOh!y=^)4~YGf55INU~0*= zFS9)DQ$hv!;eJur+Qm6FHU#l`G9z4I5LWl$NdrK5tE}Jz&zb?^>_l9#*g7?o-{@a} zr2adba^z)&wvC#Z_>cP*TI6KWk+qC{x?p`*5eFL!*hl4sZ8dpa|)dp|dtKxybs*>daOlVi2*!c)`qtH{D2hKjak?!W0_$5mEU z!TPLB9PW`1sv(!6HlHggLhj6Tqm$P7MSH#m1Iv1!C+Yxalt&R?_^jUhz5%*oEv%^~ zbFdvD%S)*(@uzH@3BmU1}ijb2Hj_f^2hg*YF3<+xIF+wB;LvBpS4x7+m4mJTE zHOmi*7Z=7&ye7-q{0DNEd6w+-VXz)Q08^SeeNc_3_V>@hUq}!7dOiu$i&2+zeeC-m z`)qVa3~{;&*jhIP7A3M`SV$xS@%mKQ=G#?V@PuEO7h>z9CzV8FcS#cb&wgp58qD$mIhZJf^?nYm%W;|H*UK zVXtW=9)H`Ze-Aq1Yv3Qt>2QLXf*vU>=GdNfQn5w5l?+?xdS(%FYLph&rXlp6AHH39 zPj4`FXBgAp03{Old7$8KA%-XiJQv?08g)y5kx2Rv>cp&B($qcfALLa~Oq=FVR^U|~(x+{R7eAJXRA1OE+o0g?J93|vP zQ66NbJ=Z4VyQlSU*|4m++6G~vY|u<5F=>LCtXjHo34#?q+dYveG_xv(8f>uPBt#3mn|yfu<4(>R+qg_{ci5JV zytB@g0%eHi_&$_n#BwdgUx!<2-{Uy-THD!nv1buFdn8z-1db|7bT)^WoS2))yH`jR zZ|Ew9PBc%r0U!hU9vcO+v|NL+5?9souPodwkQl~IG34bA-(H5?qVU?KhsN(NB%cJj z+0Bc5SkM9iJdpt5c5EefHRHxy%@a8hiunoEA0;Q+-;bDwHI^BKSvOY?D($$>f>2VS z;xRa$A&ot8SgBt@`_S(hj1Bet)R%^JdtR;J2s7kb-%zq>O-j$x&-5_#TTY)pm#{u< z)xp2FCLMuW`c1jY4;H@(e)ATR*8MAc(9yLs+Sd47D1%-wg;-Rk80=&5d0>&@hO$K^ ztmIpX#*oc1v)0vMk#AURx+(9);xcR)luR+@e1wWZ^^o2#?*_i?8qeW*QE-Wn{AF{T zk2WCaGUn_&IxBh%iYz?2LAEXUU9}Ol!L^l_ipzreFH{GgCK9_qQqCb)71giWLnh9| zjGqy|#8$=*qV8m~C?fJAI#yi~(5 z)h^)4L&U2VXK)r)h;h=jNH$!kDR8owm-rUMaIlEbyb@~>6Bn3-I=>w=@~DPqGO2fC zJL@v649NT>_6o?dr-QZdyHxA-UqkEPYO;H+JY}kqqYrS&=uDlY%{nisX?P=6A-Oy! zu|LU|mfUX8~QAkCp7SiT9@n?ZE3smlwSEVk}72U8bY9Tvup&G?m8^0!h z)B`5@UnUQodN(iqrB9 z4S|Yv)2UUja8jZ&1LtqqfHi_0CIBAy`WO42Rge5j9 z(FJ^D2Vs0BK!{cgaT)iPek(dRw?P%9%qXgH$@G>YwV;) zSfF0nc3yqXdSYLgCL=wM=*F8(i3OIARE)F#`lf`pxm@`kzG?ila5OH@`gVtM_o#Q# z0XJrgn^YuI(}{)d7UW|2=9Jf9%OP%})tWSw5xUJ*3ZXS^e&lWjB|#df^K55T!-r@2 zH3s%klarBJdZ#1eIU|UrZ$C$q8?hU`8yDXG^lKK7Aj3=3hvbTuar|aygtIU&PS${Q6mS@uvQGwVw1m3>Tu3ji0A0S$rOG%svTB_M zWjc=hi`>zqb4BGoed_E(g|3yK`b^W_@lRhKUYMII9w|Go8EGVKI{KlE%a0-D{ub>o zA!b~@#MWD}1CsN`#N+|0P-Us^K7xVR@OcEYP9)QD-fv^ z7u_ZU$8m2^5S;+K77G^Uiu0v~C^ehnY7?ZSr%aPW`L!I(y=eRCMVhW+%X_H{W!?Kv zqX?2?u&s#$M2fEk+97?lXTyB#oJ&^_&a6|?_%DslNq;DV8(Q@i{W+oP;*l)YGdT#J zZeyLs;c&o)@$jV6$_$UDJsaqt=P!7dqRPM+{f!eH7O1yZOO9pHI?gwWGd4GFH>uPh zRx>7vh6jgP^A$>VXvMfSP;VSMt7sAT5W@)zNwJB|!z5b45bM?bQ1lOZ%Oo&gm3TN4 zcbM&#B27eZ=s9iUzU}(P?W-2Bwq?)GCHwHKQo~EkY)Eo67V~1AwMNohy?hq0K)Ru{ z0Y~v6jWBAE5Db-hj$#=dN<>PjzY)XBQdY0YW0qe3lO!j)k+0F18y+=}2dNT>=WhiD zp8bhF%#I@*S-QUz!r8LZo>NTWpV*QVbZ{{&1sq#Z3&cCn3CP$&W#f@iJX8K`W6lw} zvqb$5DBwHGLj}Lke@&qv5WPlO!At|1s|Ahi%Tf~$)|1v+G9w=fKnjJ`^kOBfBAq+r zDaZpv7N}jeQ!teaayvSR1E$qtIQOQ-79@sCj5|vLKxW!Wl~p(G%yFtawitlv=%UXWZYl!KA=MZ5C+^z*gJ;aDlRVU{*G0r~ zPA{hs90$Q!9UN5||9zM<(a~T^IFb3(C>#<_*-+F*>`I&E004R_!x$5ct}3ikuB})u zY;G19>H}mEe%0f(g=rZL$n`=celOGsHq{e%{LVv+GuU|1XFgvEy>#wiE1c<$Yuq;h zv%>yw7np~uN0dEC1unZuH#+C5#Wc8Ox$z|8T^fmNQQ#BeU}r+GdSzPVCo$6uX>l)d zH+|>EBGpV@q7dlXED|hx{5?V&679`kH%8R&P2+b&Qiw0H!y(13U1Hq@tnm9#ZqjPr zojIWx8H+oHzW3nY?Fy_7vQs<4UZNjce+eiY=zJdUwf_Vr-yAi8wDOia@+1l8;L(=^ zrs9A%QO95)%-NH6dG|2Ye-l02Goko}0zqtIbDv@v`h$PB*bUnaWY)~! zV>ZX)v#-A)(W7YdC;=RG>Sw~VvK+uP&ntK#g2))gym*}Wr)px`1~Z_DEH7VWGz!g? zwCP>aoKg)I;^Q-&EUt^Cx9#%@bu}e$L1w8y9$-0)9pC*%XulZBf2v;*2bT-|T>G%^ zaxMCxjVr2O$RbLbXk#gOy;(nHOfHfwB4ux}_0j{X*go5R#c&&Zgq`K;EB)H|Rg#7< zI7S0)Y@7o1;q(c0A+Gl$)CN0WM3cKeI!%<^*VK!Y*fu1vomjjPwq_wz+RUWXoO0QB zl)|=UKJRBr1u2b7T9-tQqj8=Q_1B!JKSD)%AP>SCddN&aLg<~Umf*sNO-@}mRDp#U z25fJ(mb=|!f?`p8PqN#g{kSsR7S?EF`2s9;?6oB`#<-L0Ix~k={sXI8hQ!kDp>Rsi zksbtr55+?@Y^KNfBS`mA&91;1^8dn3)Q^Xo;=nS_Ko2S{Z56T8dzfQ)PHPdNn8zy!H&*zmj+|*o7ZXeU_NBPsaoz+s z_GCl_dd^a{mW*Ogek(ZJZ<%n!S-6#e21PE&Lo^ zx}C2KB29YCmuP|*h1Zl2vn!qLu?Vs3nYp0l*XMB|*?`es3Fh22@v;_#J zyG;z%g#U+v4A0bl<(0L&>LFa{F9cyUIs$2XTp`St&|1{GheN^S-^iNfMak?-=zR&W1tYDI81T8qTycV;)J82@SJ(>ScAeJ9i4 zowV=<{`g!Q>5b<4O0kz<_rrGXGz6byp6a&`h_|F05>89et&~x?l~4Qn?}AO_0jk_g zlH$`8YYO>y1@u{mF0#DGd6V>KDXR&P=qz;D0C#{5jv*!y?s&oAsfm=gN66?(QBuV@ zw@)8lhU&+}y&cnX7XgJ56g}(-fClq6KcRc9){}@OQ*fC_RXcpwhOYoR&lkmeAcdh zNC_k^pZxR{nY4)^OJBA^$1i zL04&Fn*bhr!ey@=p8JZqCBF*#3-M(A=YyGvG*4znuMI1;^1wA7rI}OEH$|eUzvd>R zs^v|MPgN8Nu3K*1JbBxds+AK+0RwP)dD4jd4&~C*gyTy^Bk8gG!MLg~(HM;q850Ow zZ?A}ZRe$H)dIO_8As-dPXWB-gPAoQ4i=0|(;**%lkM3iwAWng?PIeCCzRTt!46e7L z7ci=yH&=^1fjg4PQo_lvq-W{5^RJx;G z(xh+kH>Xy-`LwlD4xR%LA?KMj2UHa6DX~pA{s{6yKci^zjsm!nFL#GETxTRDC76=d zZ5wdx3jR)=_-%U~4fmT0`zju$!!}^YBmLKxRe{sQ%*5V|IRd+5Z1jt7)5cp*{yABJ z;T`zC^u*PSlgF^e=FzK-J`;Z3fd7Fv8lE`|cxiMZLhwF+F-t7!NEN}cQ>2AU;#0X3 z4XBAhi*l#0W<^A3<~nx$+TMrb*-SyjcG$`TE(7X3`@m*u2YR6xF#8`ko%~$kx0n-@ z9K!7|@AG|kD5mco%Hn;&NJG9{=uXTT!~jajb%fOTmNTPKzRCOGt52dQKSfjg-#PXh z%{Fq4D2UfN4eMDzUE%geDuDw>0TGn2%mU|s%cw0~RGw|~&%}7sN_v<}lq|*Xu5Puv zB73MGuR1syc#5#;5IKJw4C#boeN?5Mc|+>p^VC{)*qo##r$ublz)D_ux0a5NEo8FM zXC6I|s5iH;-GW?XAk(FxF}}sXdbRbbrzsLXZ>S2AA{ux8&5s$e$E;P?ac7^HvIF&TiY$ai|!8*lsA9t6kbcME!D8YOI1(2c|m`>fM>L5!T{;$Xz z@*DHeAh^eN_A_)J3DB{K59>K5HW5U=EE(^%L?wSTMH%`tSSI?&th8>$`RyYN^dD6@ zDO+qk4vR3@2=gN5TTe)`x5b|w@yHfAaWhzc=b(SNdH;IrZZ4rkt+7@iRcEIdN2CRf zDtszB=yr}`?ObUp{)-G(sZ^#8T*uxK`jz4Q(@h-dlD$aKCkylExSWEs94lFEleSBJHkacg2l+a zOpc?CaD)twOq$j=!jt;^!EgwLWl#9v!#!#bT3aW--=C<3z{Xq3(K%McK4Hd+>>W!a9(GQ?@ORb@kb(j(cmJBE804+$6P;% zKPl&9J^wqw52AmwPn?r;d{)H}gju0!!IyHES_yK{%UKXExXhPN$;Q-Bwv(R&FkC%X zq0=*X<0jxk1xphO&uMh6y4W7(+Fu1Ea`@JuGUHsf7Sy#1TgGceVsq#NUT>1af5s!H zjg-U-u|<|Bhm9n9QGDWzOkrc|@O&t9;HA#GZ-?P~U)%R6Nhp9?m5D^mpJ1Uev{+B{ z`eHM^E9xn`Ah<&UmfC$7_M~rPVRUb^_#ilFHZE11>lNox*}WRKH%@bUMyrC!s2>K4 zYkhPJx4!j`-ujlt3?Kd#ksrSN-w4K+=3eOmdk*%vx{s-s&;ToR7j&dG_M_J zK>?0bkK|RX2RurJL`MAdL3Slr8x)}Z+-rZgFR{v>!blsFhh2sbjzEzdf~%gyJS59l zfDLD^972B4T;Kk6R}V$hkb@h9YD37`peOig7ykJgM$w@6epa1dx0$2Kt&Xe+$ph>` zv2+?#&m^;0l>JLHMae+PGd@bH7>l4*-jpb#;Fa9sd@4cYXbGKrdh4%i_1S%kCxphoWw z8e8B`jKziG!$!>{nsn7GBSACH_zl2$*`+Y~*tN{u@Cz6#COJ0-f|`qW5chVg=g=b5 zeaJS!b#@|=#sL360Ki+3TMM6pldO-qHr$S;VyOoFb#4byuE{14*#P!i`^n2Jd0*7( zj0jEIJGj02&fFsvDjd7EEkX)s7E5F2-<&dgoR>b~0N8mQK^7~EY7!f0Smjj;2oc`Z zF>@6|DOZ>T#k>#c(hNXGkpHmB!kaOASfqnUk9HP@&*p|dR~Y9 zAp4I-STwd{iXWdqy9rFONT;flrG?`pPyN9-JOAe?vVdtZT{p>qH%@$ zyRn;?QZV^iYTlz-;AxB?*JthM@%v2Pv4`Sl$4x9U3LMZ$?%}y6csQKSM9H=#yes#( z-Z4TqV3YSH!`mw)cGe5^j^nuOu)Mm1>{d#rUIKLJA>A`M zOV^F@QT=)TCJtb8jr_Oq7sHWzxpQ?_f#Wa)qn{~9$8o&x)&0a@9HqtOC0$?tD=F{v zd9*q$HeXK4S2;{%GmtZ&}U(?+~NBx3`$1g0kWqXxGjGnzRcIN&ME) zX!F^8lQnaUNy{FRC5|i6HCu`V10oq;c$f=yVriM-jc^(&_uL|oS-IZ3F!9TRlsL*! z{zYxJ6(7P0z?XIMw2mxvPD%UhQsUS_U>zKo(pOe~Mnl5wCD#;bYl_44cDY~g)>ruf z+r!x={NCJ3+~gOxn59FR!p*sF{gm7rnJFy!3ZJ%*x}l7{kAd z-PPm3W;j>?)Ni0a>ka`X(aEk!qoyp*98KQX&5Un8qi5<7Hd8Vog|ELl{aZRuqQqu)r=o z!%LloxeN1AF^Y^plqcWD6dhgogWDJ3jpW0o6+RVN#Ms1#E8{sc#cU1Qm;9UTG+{E$ z$g7LdO_5h_gihqcxjI!E9S`Y7=~jKS90j^xu4{0x)~3N-ASAXUZQtvj^jaqGgNKu- zDKXS7W{>$0vf4&dC1V2xl@dNB60`VK70v_A0PN`m`8gmIadXdM&`r!uX z*~W#5HbKq-#aGE_-AQ%^?tOJ^N>x}D*{Lh^3>$2*43p1iNt%t%U>Lt6@;%ttxMN8I zhNSGAM55&CK&c|s?CiNlpRy0hRsmR!|H;#$h>&8(yco;{xLbpfkBAp@(g1GAEm>Oa2oNB#t zCog^C+H%f_)kX}e@=Cb-tOK6u**onANA2Pw%|c}AL2&P7z8;tYz8IYdaOUmSvkm7g z^s@_C4R{T8uwg#bD8e+j{Ds;i_KZFB>YbEt_<`J}B>(Ul1VEb1(xvyQ+y+klD*0(^ zJ;8BU}w(Z znxiFqfzl3)a8S*mT)Ba%92ei1YkQ9A4n#eRKNTv*@4 zpBn8kL*-}Zd-EH6MsJ;lvw9Kex6=xGAJG=T41Uf&Qd1%bkYQ?myN{ir3I+MSzbSHe znI~SEUyO)@qr7H*l|TQHz2CvvxQAZ)`3R%67Rp#l)&?JVt$rQPdoy||xr0+7kvI+l zb2#Ij% zZ;&&x@kqSpH==d#(^6p$WiVf$I=qUiyb#q#Ss-m1iB_){NuI4ts=zyuo0Y+ojJC_` zNGCU!`u%e`>byXP01NU--Lythwp(#Kqk6}!&*#Wd(J`VK_f%pLBplfPI7!i6r)%h`BojZ{1bp_n+-J9Q+~I8dM0c{f~>Orlm!R ztD3wx;H(j2JIv_@7{m`0LGbU zqcJb}KZ&k?H!#&cC&*DLWWzy1w~$i$wA<7Pa?HpzsK(yQl83!!!gA;Z47(}4YJ*QcLy9NE^F_CLy~i2|iMH$TflMQyGHOLV|-izC50!RQ*I znZ48gWAiW1mR8@n=piZ|ijT2fuU7@wVW%!)N!&q&;ym53w%!4S83rqo_GQ{NS=M5kR7)BcYC=vzEgT+yIql9!{Qhgl>1gGS3V%V`xm z_cAagY{B2s=AQc{i&+fyRKGiwP|zUci&*%9bMcMX784`2ERc#3ge~zBgOL06w3UK? zmm7;V-8$6J49}$In6-8pVnx(T8L2au*v(2cke?L!X1q$#&=1C(Qbn$WcP+rJAAT_s zm+D|3rDD01>Z<((nX3GHCtUrpdqfk1*rpa7#EiwJl4fo@dW5x7Yi@=W6uSFL3wU!~ z%fJ_KwJ;cg-fzydo*;zniHy>_CL=R7T0{)EC_to6t^z)m>ZP6yZ$n&hTcVRl;64Lb zifuH>m4r8XaI`T2uBWS0;5haZ&5u-lI29&bB(?K5&^U~E@$GbRtiztu-eB`5M^VaE z29-DFSKQC#{VweXKh%>&wZI%MREnv+IwY`09+k2;N(G3Vvj*%Br@M^!B5AFa68}0I z-;WcgC!A@>L*@FP`8%Z-HsmLAOL){9!{{j8zg8rX|1d7Gua5(BXD7-^wciidg&N9X z+#x2K*qJN8h@6*Zg}4Es0)a7nKad%WKn47K3zRwSzZ1g7o&xjlJIQnTU0v4)M9)u) zVbIC@8PEZ(8h+4g87^KDSA-NL$dPfI%WC@yJ4s(B4FB@eI15om(-VW2M{fq-%tqx7 zK+Rw;*({bv4s%yK$J9*t4%|Qu^|vvI*Pl+wMSNi1BCHE1$^B?=kkbk?@g(42p^`1& zw~GBu&vE5 z&aaI~pir{mSROV9qODA6L@qw44?I7g!?RCo01zr|(6CMIs~z#vhuYOp$Y_v)G+9Fk zRp>H;ZrOHAEoNWG6*|yIDw$6Nu}80YTqNRu*b=t~6n9iSK*az&%3a8E->+AwLKt_q zC*=P-sl&2(d5KjqXK{AU?(A)8l9&2WKQ8>tA*8fXMGtenQ0?1xKclupY*VQJxDawf z{w}YQ9XMJE$vAG+l!9+C+sgn->Lcd2sb@kyvO0nMN^NQ#hf%#j+xKz|aHokk4d^Q1Emtmn=TS?fG3f3S?ndiX{F;VcTHk_7l?C>X zm}4|El^HR9j$PTMRo+)CuH#*cN0qyUv9r85GCVsH1u9I#WUkWhmoqJw6r8!qM5BExnUO zw|@`OV8l^7_O-e%IWwLq!}H;}6YZ$f%|xP9*nbkiVPuo#h3myoNbgQn4AMlB74=eN z5x>g|dB{(}y@iSY|5=S;zNI&i9qC)u=pRKx(Yt}ps;j?dfU?7YWdPm^e^$fV5uTK@ zss(Ef8S^HY^e5&uLbA2JdGy>EGRU3nC0g#pGrxyaf0YF-Av0NXKm#b&8<$;Rq zTM5+olil9q(H7}Foc^dLjX4{7hz1b$e}*#&4XjFOJch}zr9m9e;!e{cU-@(xd;Fl1 zhU;8wZ59?iJUA~g<qeh|)aaz=QSDwKfxPR^64l05T zXBO}lgf*!u`t4JAr!7sRsU?Q5F)3Vjyg|yd0uH0B+Y=y@-M4FoN^_jTA7_b2LTGUv zhm8DG?wg_8U?i~J;lF6EOI(+i;ye+eOKb*neXj|gJ)Q`y|U zY}}rQiO}_*O?ElqEizkFF-n-W@qmN*mbAWP*;+k-6bh>7FukbD|G_mSPabRO`MlX3 zi^g2AVSR2y4P1faja6@SNn0f@84S=62P+myi0N?PHZf7Evqm(6+JapWGDmyFqmP@)n*i_d#Pugl7PD)gq6p)*!e~9Wz~EIS z9nZ0l;$c&%2TBXEiSNoH%`A73Qvg15h}l$WEAx6I2*Qp?{QzDQ#peO30dG5&^41vG zHeDwto|qR<6bdt)1#ILBVUH7d0jW`9YIWnIRQJPyb+_*@{w=UmWftf9$H8GHo_`CI z-VCQRxX*^QD=1>j6beC$Xr1XU!S8V(ud@rQYNpcbt*R~Fm9#%C_A1}1C7nx)#KPrf zF9~g%+%FHsqL<~Z-tX0Hs>R(Wa1NRg_0?FbNeDBR(&%I_fSd)RM*y7pRH0QCz}n!l zFb_02h7i!_q+Xj1V!p$AfEy^TEE$acaeJ~LafTTbml76bD2i--m|T0{QTn->%B@{P zATOom;asy$^3m?zm8*!&Lag#WG+D0w4R`#fD?zJc^6G{^WcNu>vihHbqf zQs8Oi;*QPd1vb6wjj)|cgR#466uTnEZf^&bVy2Sbf7Lu!usic|HaL;n4y#R=Wr*Wr z9=jTlBq=1smtnV|k%k)Zc2}Bt^6()qIVKDm&qhYY0^!f#hl)-zs@SCd@h5(Ax* zjQq|o5)Zzj0h=E@l-5D6Lk1=^qNB_%mdo8y-GcIAdArjpwH_B7K?L*yY1o{QUdEXF zFCjfIb%^UonOFYOz~LeBsRH-{|eAN zjbzijHNmLuFbPHACnrNzI0Q=8ktvWju*&o?MCW&V`SqlnY=ggX$HRZOU(mCc3X}Lp z+H;9lraG@D^T=O*Sh0y!mS|od?SS_szX0-j)tjNOJvNMgx_|OKMQ=}5RqEAAq4iA%IaXs6X8G zjD^)GV5SahJSIJG-9d)^ryyz2 zSf}MT$jP14Hny4wdC7xDD|WQgmnq=IyA2*pkJ!gJg9Luv zn#HP(ZuP_4RWOiJTe!`Ux~jE|o(6pU&V#pvM;P2xc=S)-B^ES>Y+1T63-)I zhM&KXxQ(37kP6}YPL(qi8S)mu01pA%gn{K~SpFx=*V%Mm^@)Pb7KLAxZzI56zYtwMc9O}V zOwJxT>yGLqeUD4S3-j?A(7J}Hd^e{Uy=dnSirx2& zNID`yXgU;a`&8adO9klzRk$FMmc5RgDje&n67u$uYtiPj!We!A+{1vO8?MWr=(V;; z%k6#~Rm^|}?Vv@rQ^j<9_XNtNOcP~$W1&~%fxyVRd4ifHEUeLCP=y?swM=Audq%`} z`OMQ?AJy;s$I-p&=QuZ+0bKR4Lj<}HJq@E}E1Y0&13w-hLYm~r@c+-$n)f3~pOOUz zVIjQU9w|cqcI*Ihf(5g+5y4$JQn`=+oKD^C&9dtY&oIbpd^G2s|fMg zZ&>r!nq4JlBrbIDY(zX(o8!G}#LYrwtt1^-*RitP|E+=*jEa>yV^!e;_`&;_Y;PDc zaxp^AN}bMOPCR8PMD8}6wo75ENIwZ#_C`0T<17#MQ)XSGN>p0~c>VW8y{ml z7%Z#@uU&It4UBS)H_x@d`HO9cyyfQUc%BfHs3B`6i{;}9tSg;cp#}m#jgz8tM|Ic{ zUgr>QZA8_5;g;H$QD%0Vk-}PBJ8hB|eSQR*R6`$Z>VI{7(G~tKruV0hzwlh71d8GH zuF&ncQwnT&a!s9eH$zw->tc9j(V!QSp>>)aHb7#OU?Ypj-Q)eW`Vw1T0A53>kIz zGtfzX7V>mKh13M#+n2i)`s(2D7Vvl+64JZZ2r(ar&HE;AFdmJ&b**_SAVBlMJ+gs_ z(wlCPk3)x*OZp@!>VCJ-vio*R3jWJQ?^gh7D+sD=Q)g49n(SJ(M(?DKq#tK_GGF{c z(vJ;`fFhKxhL5Hgu?-*~O>W9R2NclEBEr8pTNS9VkmTOfV9T{v;05s1RRp~f<2z(6 zscYUHE*QUHTb2q(!(4-We=u}IYc^zz942}{_@OgZ($dSUk1@`~zyHQ7@L^#CS7i-O zD&m?_HyXZr?fLSppr54=zV$n0Rjw)pIx79ajVR%LlUm^<&4jsB0utO;zyPa7S%dlK z$d>WfW>D-ytmZmAm4gbGm{sCcyJVwVaG5r9o1p4cJU$RAK!osv!XhKfhQ50`&nJu3 z%IQ{8S2TE&D;I>ld-3%Ft0sb<&Ha7>qC_Z>h@7xtjx=XG>-2{moaMLphSYm^mK1b1B*-~@}IVsw1$3O+1v|8B#NFtoh| z`pfY@cRDmn5<|o~C2xFBa`TW}ZfnOeXD`1^SEI$lb9{K5@X{k4SZd3?$DR@LGWwGc zIJU@UyMeeQ<1BhvY{eMT-d$VK10R4{aGr%=`DP?69)~=i?_Hy<^Q==JpitR0E{Gyq zA)fB93-YVsj~)K|rCvam>4+x<9nlmP$;?8|KM6v3?k^aPX}|NKrBJ%Zb8A+usQ*>a z1xy7IX{=vjSn>>`)c`_E&rpeqFrPx#0Gz2k8sjrA5J<6veza)@#0F7Xs1V z4J?bUsOShTSZB^)LF{!b8D=Eo0H?zqnBTo1TvWv6ynv9*G0xx}T4j11ekd;x+u^6A6W<@f#_9U3@ z`cA5#Mcdt)N~9J!;6QaYj`h*^jhiba%1d!$L!qsbVz%v8?TYcbLV;@-Rl%uM-h(sR z`)A1=9{K(n^xJ>uC*?R4)vnNiw{@wR#h9NKK(~D9%O6Vcm>cOXfw)u8bWHsy0QQu1 z4Xq-K^My}$la8(sRFf|aoMTeYXrsR%>O18?SvNV%6Y6KDDvGe4>Q0w zm`@3IK?~E{&Eh}X-8S%Uzfsiv>uJw;;VKb(|CwgDpAl;80dM%QBNnaGzaX2&(9ohui0y<5Z2h0%{3-xZJt} zJmqm5)$I+q^tv>RkazpX+A!}8?*D`_w@~;E9WM@ncD~17#>Vy=pQiD86p(LfBL}fK zWtfkGxd>Zvf~%JPg_>~94kppWSB7di#zA!u;!BFIC7Rz~g5P=Ms7?2^PtAcqF5^2l zLH^$-DS8g zJmg{=Lyxw&!CM<+hh3LQa5q}dX0(ZO}nX*U*46SrP!66J&Ma~OAvI7gyC020WI$js!d;6jErFTV*?T5O{AB`g~8 z&~UVBjPaXjtkvia4x_W*R$D!O!&nN4}H3MzupqFa>$|Ah3(#|P|42kMic9Sq#*)iz+w zOohgtfsrLW2w{cD5)&Yqa7t=RBWUt{DG|OO4~&tbBix6;~;+3Fiwi%)QMFY&|~V0^`dORhZAd zf{_N?G09C%h@N_{R*@_^2L*C%B!=@W-%;$m?ny`WKC(m=SSNDZ1xY1)O&)dmhqsb@ASB))gEq0Ix@ zH0=AXkdW}JP!j0?q#d8K7o!%Z+*D~QmN|b*5Fi?PJL!Y&eo+)C6~i9JH`0$_YiR67 zS=l%QLNQo0B@$JIR#w#sIagjOOSp>Y$C|gG<`RduE#}>YXEKnGs${9|lv_&~mK?Fr zG>Ri_5Az{A1GKmV-@QBQtQY<0CmPQykvvDkwVzCTevq@qZ}(Bjy@@R>9ZRYbzU+D79f=OB2;OH>_U$GvYTb2rpY0}giVn!*xUd*kwz20 z@Z7FIRnLu8@T2yyOrJYu7bp;oYP9_|M3k8hE3voK3A)MA-DxQ$|S?P-!XQ!ud9 zJI*y80%ZJ(w3o7wXB>$fcS!z7O{sL9Y)e?J%Uzy(9b*Lb#Kmbba2GU!NA^cdOrACb z$F=rPv%LT9Nt9ax(1_KrN>-{0)$awxJ{*m}|Aryt1wqFJ1keuSb#qo>z8n_wJok z@shIgTtTnuCg^ZL;?*lDiNY%ISbzSQe$FzwqR8*`++*-D(_V{Zf05?C*PbLrOjJY1 zwuL;DMK>7%t-t%^Z*Zxg7`!-Y7^??KA(NOWl5~I(O%>F<_r{7+49|&M>1dB*2-VC{ za8S9Z{6F!y_+t}eHAr|o=tN!HpvVs$rOh@I<7>)=`sz)(HNH6#W!4kMR8xhfKW$TW zmi*}=9nqX6SVKR~*%;n^8F6i6L*I;@(2PC%><>33->O(pTV+1r z!5Br9@FD@y@|kF?RuYU=W4&=6Z4sabdqOQfNtXR6om zQJxT_K)6c+Y+~&22E=sfKpZ`}k(X%QrQIaxqMH$`L`BS`mW)cjBIc||NWFf6HVK?m zW1vYm%=YWY)RDh(OVD4rs|wC3#V}=Q&WP;YqNy$AZCiJrL~51?lX?eA_DIAjK>s}n zLUQvHjz7t4S2s(wWSSwRBeRMY@;+xz2Z4{vqFXSo;&^qW;Dg2hglht%3j#2wdP_jr zNxY0fS72n;l}Hd_71VD<6In>ayIVcGy7!AIVcq5f-Yg;k@L3<31f9N86@uKL6~lu$ zPFssgGKCV^G7F6Bl<-epr4jJ;_$7%`?#ofvG=A7phZKgLxIT*%%tmYDxcbaAkk1S3 zKj?YXBj302^Sf)GYnFWs4v(Q4>Fi(GK5}P*&ZB_CJdxOQ$P%|N=eHlvZ}u<#BB~5O zT#MVdu!5cY?hf4u2z70hMdJs*W7<4L#bT@!O#eh99$$9;krh{NMp@3OJYO4ME`b{V zK+t8S?%7vEI5tkOSR;%XEV|4~wv}6Q4+VDE>)Ji}x7R{g_|@*h&jJq!rPY=S^#CNW zsimgi6F&RIDK~MLhuh z9@`L+dCJrxefT4|HZG+y_CafngL)Uyx-55qX@YQ4B)Y;L80A57PQHe8eq(!iw6~tK z_fmE+WwR#8sB-AQXPDLfb)UWUI@S~uGh0yP8T$Gas9oBew6mjoE!z^rebQDi#Zd8S z1R<@hX{{=-_w8llM8w^=3GMbWId!Op@n?v^g%T0EsW+npJ*H-x&eQ9g7X6}RaGhy) z`58Tx2Jt5=Sh56Qo{iPbR|sUFX_)ILTt8^KUY_ocmYhLp`HburTf4U&S-yRG$7=^B zChFZ-cXT0c&s*4hb8{Jt(@|)UPSb@CfHb@F1P)nQ`FfQ{SbX6V)+a7*HTv`!l{Onp zs>PTF-7#$%<)xMz#tVw``pd}Ef@|2}sgPUU_T6uYc4(V!P6-1pH#Q=CI-(sI4cJ>JOtoO+6^-g!#mi>aRcpVq zNyk%wQoTo`pqvnI(766wjkjfJK5M{{lJvLEti(o)J7VdUJ2FKi{HKa3X0OgIH=E){ z0cpUhS|S5V6HrCh{n&|RZcyWYqxhp%6gnTUb#Y917Vo;|fHBuUc$2@b5b_8wpxcv4 zVN}WtDlL0mh&0Bopn|IU0zJycype!c{$QYt3(se7>gTOaEQ^s_4`Vvzs3|6j1X#aM zIQ(vCoEJCJ<#xc`sBQP8p`B*^YTlY(FPbHfkt3EOYP4sZ73ICp(6$wjwU#c!4m8qT zI_drMo$Oq!Vjf!a{^`y6N*UD(pcA_xA^|Cq$(dDy0|TRO9~x^DruALA^P!avSHifP zU#IH&n?lHdHXBoOUHftf@cPbw?ikTEkuSFsM68$-UL}m(l=odE#J}p$8=EAC4OmT2 zZ!ygs@auf6h^kfqLT8NOZU8ge zZLdiW)pP5G?lAnT6NO|w^6j#NJAq*44?4uYf262xDhE8$6l7SZ@m@pIYR;Xf7yB&t zBTo^9a^bWz&m)g0D|?C>=|ArCxm7Q`t@|kGnBt#Ol!PGy?qMNyT!!2pOb|xu(Au^Y zYDOJAkv+YqJ7!GB!2*_xSp-p!u0A^4qogONNsOdpHljm4ZqiUrc)i{$oTZZk%{05) zC+%)$YoemcI=9Aa10b-e9kXy3s87Eh6ej=2mr;yPI=ng3_3;(Be?0Skg~?botjg@j89_x z?ki3Tu-=1*fv|8)1)v}ps2GcrIduiwn;t)}%LQDaxo)^-arC_9iH_z)xnuOM`_28?VGCDsHSm&7H@?#D{+@QuDLBy5E`Krs#9>5_(#~e4yaY1BAn#QDRr_sEp*dbQ%!D{j&eh=bV9ThzoZz zc?tw){Q9DrBjenL%2ttURqB$pGapm~3mHAIS@WYOvbi&qld<9SrK#kHV8Fy^%PU|o zV&LYKi~1<9h&5rTMur00z;v>8#-izvQhKXhSM!e7W+!`Fu|+MBiHG8wVuy$9yT6R+ zQ{?E@1b`&iU#>UvkYsK0Hol@dxz*L?xdmcQ3z8TV`kIJD_Z#uqYhY@1LbWdhu1iV%l^Y)J6kQ@qCAzT9UKGA@ z>SQ~P@U`Nl=j}XV2gZqTOD5#1^Ghutb>^!dAefmy1pB9C)PysH9rh_^*ivR%aC&|x zj84n1F+KA9?h(gj-H`gl9gC(h@`u=p+qehpH{_?MFbl@ZH|r zV%0Z@=0FB~K9Lx-twlT+7KlbJ_ghH7p~Z!f7Qsy&&rE@s)BdpkZT%{9UiNTL@nZ)S zH#X^nEBujYDVBppWw{F-A8y_jG51aCn=_+GYXjK}ejf8-)@fBI4qIV?U)y=GgsoOZ zYzu76IP@RwYy%2R6#m^G&SgK#iZlJ+6c4tEhRwFW(gYKTen9DCaSXB^wcD-1#xTKu z1wCR!h(&MUGc(z4X#4>!Pz#q3IN=l3gL;_RpKry1GSQT(-U~ODm4gML2dcNTunKW* z?gBFslM6Wi9-GMBkETN~>AZ2)ptgBnXW7_aE%WiOo+EW**Z7*e2~$q z5h4;AcF(&b1LpY${DRzvT|6H#UqVK?g?U=z>W<5w;}IZ-{*ND-q7)a{V(Z~EPFtg6 z9&4w!u&2O^X=%tSm*`%GQBYLTt^BOw(q%s%iT(X=a+&j&j(teMi7V^Un_3r|k&nkC zZ0SR;i^Z5uo{vPDsdkDIbsN z+fG#<$~uoEPg`3gpmg1HW33Zud13i!+yNsnR!1*_CUk(*!XMC$(l=Tn$2;eNOX6FX z4-{k10UJDbHJEq2VPzAfUd{$`Z_*gP>2QV&HdBnKlqzT}4})sQy!TbEmQ;VGINN>P zO5wGs_m%wPi#&r+&w?N-$UrW7LVkEXdKnsuYd?l0MR z8yBvBMa%PsEd`8GRiE+G#{dk)tlI86p>8dwz08o#((4Wz$0CUv&M8(c^TuKePF^U|PJNR~p2Nue z8%@$~UUs?%O(8I^$ZTu8kC9vdVdL(h9}KTbIez~s6?TfjbhjvT#|T_XkczT zdCXcrQ`4q)luEoZl8WzdEwAU-jt?LSr>!TY`SMX)6-F3JR_#i4W$4pe^6E6ik&E7V z3oa456U2oZ142J2KA61HtOr|hO4w$abqIT(vVx}2H?CWM?w)+=1dn$>KejMYB;{tb zL&!R#xtK2r{Vcr9V}Pw8HOZY%uWC!4bZJL0C>wg^wj>SqXLDSKY)PLPMjgSnhb2-n zYLiwXE=Y7q^03o9wV8=qFWY4uwLR_Pt!=ySxjBHl=s8sU@~{T2K@7xpbf*`A6e*XH zH2I#I6F%aaj%@@qne+lt+JN4$@CgaRU5qX79IL3Zxuq`7*JfeUQWW^eiIl*Pxs+05 z4s{hYU$w_#n^})bv*dvp3o&>AUf84$$@|*b60z{z+saP{f^}CpYz~9-W(;5M zV^X*D#lB#bs>Upljn)2?<)Z(3(z#7W<{|B6!oQ^6Pm5LNGgz9-;6~0O*TshiP{!OW z-TNXiCt$(39NM-xk?J{!Y$4fq8ezpai2h0)TJb7uc zXBT@|(%sxs23%!^{y#rCadgDB*K zE(K0Ne_;;(hh}~QbItQX>{6U*uvhhEqeGdS2A`$6K6J;eNMNHpaAT+5W|TdwQ!wxD zoR_4l7T79)!QtQH5Lv0bpy=w#5zK?}8cik^t>&w^F|x~le+lMKA~(@1l@(8xee&Vs z>iCo((y41g?BRZD{}Iv}mz`I4%91IxsC@$#i?p7qkPla&ZCBwu_6Km=UTFVhX=xqS z`PEH+AsqJcs3CDl&)HPQRl|%YRL}+89`Oy#Y`@sI9hr{xPR(i0E^0Hwh{RVlh`FUv z%GtHm#P^%80Lm*brAbGYQ=ylJoT1(O&?RhR^_Bn2s!pW6RG8L(=rtaa}& z5<~U<9wjv{>B#{z$38SXEm8KDXO^G>!L@#qbO5@ypc?Ddt<>)Mt+#kW?b^DRii1}h zT$yyFO?}<0rJCG<5JS`pY2w%O7cHW8O*;${vKv#{%F3)fFGw~v@L4=}%OkA>au*xe zyRIHnmq4ldSDj^x_dAb_9&@*D6tGJXlNQCj z=~3Sb%ka8 z!a%f?5>1+W!)hi2oHcoXdM&7Q^dXqF4m8jKU!7@}@%bH%<(x`;2MOT~w~yfiRJf(m!~d6o#wUpb$ptRpAFL8352?=s z8rZ29f>B!2EbWgMM9tZxne~%FbF!@zte|Z6HY2&#ty!pVq(hDZc~SWx+$1=E(GgI` zeoZpM^Z3QwON-PyyKE(+vCHXwM%xex)ZT3INS)pLy9a2k0}{F*gc>?)w1I4^F}ud| zMt&M%g9J4SEQj8OHhh6Z0Bm-9&gE4MZBLr;W2rBr3c5b=jW_I_Q#qeTk~8j#P-3a3 z7N5egmg&hZR9E8w2y5+g>YJUFUc_pHoRFq&WWvb|5Bpge?YI@rc#e=M@H7eOApkhn zL&2_@VUQtb&j}EC+o>g>7ZNN2=p^>qyA!8|X-32=A}lg)JM3lpdrtedHLt^uQD%F9 z4d1bXu{&lxhRhc+swICA7aj@tqu09< z$*;+o$BzjS6^Q>GyBVK8!6Vb)+r7R94PYU*-kZKw+nN(_uRu=-|DzdA_rQF6hQ$kV z5?^`s5(K?ipbryY*Zx=%5qLiP<9L6Dby~0_pH-cVGld*`JnveG8t>y$+MVYR>$?1& zGlH@kCw!e9KX_=ULFgIPAc^V0R8X1G$;%rIl5t+AQgP+V4hc;5SWRjF@5BEw z5sxV=_p%SLS|iy@I@uFDh0m$0VRvJ4vjwb_4*SlpfUn*pUGHwMnFl2BN5Lo4SpbU< zjAKC6v~=If)<^r}gzhQ~w%7$%-O};F_QGA;W&*>lu#riiJrJt|U=r)<9h4kFUapj4 zWE;Z!2ulpQijk+cdK)4jrYTttb8-fiQUHa#T+9qZ%}?#&B>64XNai?We2mhkc4d2q>523p5(HCXy4%;qd_7MV zC$;h8jFZ+r3!l#PJa-(yxqq$RwdMbC9)Jwr+NqiofJ#yyTbhAg?r+3PwL7?2_u?2m zNY6B?rGtcws)5ZB&m%bQba5X0%ldVdk|xlsF<`s#5c?GjAoxG3dOI-AR$My2I)BOQ zcCL%tngEjacCDQk`)l!}$#@HAryY~BkF{&5kgrWeyG16yVPuV?Eccdd4H79ICLyNd z_3>1B5WbfF1g^v0s8JG&o{#f6OHB05;?uf86uFE(F-5Q*gZL13MmQIXfNA%NP#;J?v&P?zz!0~2qi_&C~00R z7~lCEWin`?p3`s0D(toacdVF%6g9`iH)^eW`G~EFepqp`N(4Q+O8%^J^jpAU;r;$A z7OE7imH<*JL{STInL96~*oX~w9b;tg)Bs9>BnnpQu~A^fQKB`TR>I@J;2W_hMZ(aM z-5w=E0Kgy5%Wi&WE(!U4N=}qn1hj0N**KeYUiAhEsB@XP z*ua`?5o0Z5$mX>HlxdX5SJL*;L!T1L`G_bJu3uCmbfqbw? zocOQ@Ou)1yYE@UfA#4ia(BwJuKk!WsyVSEP^~YMNp>Y{sM{Tk~PreSWkWRO8N)Bse zQXC@kQcEH8@e3_(I|vmGR7A`vC?zPJqJ)d*moovvOem|UnVBWz9FT5Xyuj2#XyA?C zg&=9AB{-Qc1KP_Fbg)bpK(_3g#$0{uWE>*2x^9$a zjhNVFT(|pN;l|i=K)6P#`t9@rLngFBzXs*qAT>`z%hg$ox|fme)fZ6Lo0KnaOKh`> z?cdWD%J&r34_wD>a)>_(kf#Xmb(Cdta-w0=Mcv!Lj2Ss%r3XIW?m(9D&j7<$2oZq~ z0f8p4A;`GCN8ST&=?)5&?6g<9rBj0tJHS%mhnO;n4^1JrW* zh#B}4s3N`9O9wfWn*$)ach96EAHE---c0hVF~$W#CX7eZ6Y=Gk>l}aImaHpN%anO; z(gg!I?ulSEa>5?*r}#<+LuH z!!ARG;H^9`_fGI1+qmEF1N}lw{C1kh%;l9{Pji;qg@fxc8#Ip){CeuS3t>LCamIM8 zA}Y>xZolE!WSeqis_7zwWM>o%33sQa5@7B#a_BrwW|)L}07x0xRu(hChD zgAGH1aQY{#okqs0WnX1hbYsy|5^CWp3Q#=(X8e1&y(hQh?J2X@3Zs-8o6bTp(mjqu zGN7peLBC?y(5MlJZd%w)8(V~JKj6#sGe@Ze{k-4A(m|}oC{z;OfECW_2?@9jCkBg1 zZ&>W=W--#_8)}gclL%D#lRsKv>hlE6Whkw(+b*Hl^RzFzM}!wUHV7)Yiz*p6GXjHd zP8lvtHAGOT{gT;Z^J#-YV7-lr0YQPuiOn^U^iAuhK8v?|eQ3mYl((qXty&4TKPuAQ z(OH^&^sd7gtsPv{ZkKTRfcpPOHgNP}u+nKi`gSo)LtWb5dQ2dubWdYgJWQdf_|Qlv zmsNOM=7H8u4>`C{0VafES4TVyQFUu&Ce$l*v&pALq?p z&l~-p^l?PlAxkl#R%xt}DkQOWMOKT~zj{Yd;`%}ruGP*_BN$g@eHTzV@Ako&Z2zMH zY7j&meP~tgL4l;o@eJ32c1Z9)S1X{#E&exm^@+79V zwpJbI&<&Guhhv4MhHsfx03^YBOp&vlQ-syN;j9Os@sY{`=?yqp*>Ha6*GH?yLtqz{ z)Pnd3$&+M5D%NPy#3||yWY=P8O(+*}-oD8LAzgN~1p^Wl{#vrq^N9T=!zc;lAXcj3#!M6*Z zfw3KSa(i=a7Of{EPzE+$ugB zv>~$+YIEHSPP)y~B?)0!a!GMknfleezo}`2#4a`E7PsMc^nicb2!1AHweVgIYXw>z z{QimA4FN-Kk4ohyVq*QjY!tI_yHQ>Lb#ruilGxo?1!ED^j+-^p)4(%K#bb6At609m zl*{s&v3je*HHAbM`fLMC?TNEW$T(2S|1LLnhR|pZ@dDG1fln;X>7A-%M5*zaz-AUi z{KIrEiB*ON5Pi~aU235k#%CgtJYvQecXp%IqIfnA$T;F>O1k9Jo0C&kVG={`c$=4Z zGwlL?iq}EGi6WppG$7naP6KScNOPKOBWMw9-Y-?NJe~d?(EVf={uD|Z>_hH(`Z*j!3fMjjqbGj)I z_ND8OdwMX;_|+8N`mcz*$i1)5q)kf9yxZpA?*RPE0lZMU-f*z+H^>73@Qj7G3X}nZ z*_?|oRbQ6d9>mN9MN2M2aHGx%bC&8$5R`RSvWo1K*C={x2mI6rKUrT$nC(f}d zA)fC3WpCG?ng^G{Xpl8fh3Gkw@VT2Eo^_?@^SX%CSBTH(!)Je~3{q@2<||+eD{Px_ znOl4#DbrUhpIUCDXN=X8I15h;E~Rj9BJB6*ti*<3qgbgsF^tiAd*>n_yws-_ATSz{ z;Zu+77nn@`J1Ch(#L*r^BwhAe!}q<2c6blnVf*S*t3N&Hg_5DwG9pwdo4|MY5{L(f z7h$(o2bnc$FV8fT>Md%8_Z_zTZX(dAODtvZ#uE$OYAktjP2jATSiE3i2eI zW+FInnB+YhT1TLO!F8)BLT%M6M!bUvmh)k18uu*Va?jZ1t_tZF^YpYcnQa+H#vv;8 z^}N-Chpa@x+bN~NJ1dDV(Yn4^km&jdb8&@K@=nQJajtY{el1#^+qaCE34j#qNE$4cDaIn%i4KV<&ze?HZWL?rnJAPH-IsX=H(~WZ*R(0!DscjcVSB zW3LRbER35GiA0sy{$4*ScLHdgz480qAVM(Jua5M&EcVmNgbN~$6!G>u<1)H_8Q7vz~6V4H{EWk zvCtEXSeuRy5#ZZ!C+-j@`TsVtV8MfXeYr_|a7a0WC{oKzsG80oq_=#?YDP-W@c)x` zrl;X`3AJ7hhM&o#NmT#sgzr)8*0t#&cjak+Q4lH28SG>r7X8*zRL6D&0x+{v)^p07 z8D?I0B*)1Km+GhGl656EedQabL$;}~J1uWbup+6Q=+!=0tK1?fk0h2EfKt$CJN1d! z>M)QHZA4k3=K-lky#{+@-3{XKfD2&5Mjh{=?q0Bv$*?VZXtDjMsd;GLTE63*x@xbp ze47o?g+;;TYe$EZ9UufP_VcB}hJtxje4PYbs~qV_s2cp4Kt{p7xDpG%UklAVqq56w zD3_kDVxAS}WiXAOT?LQ{6F_5);B5fC^83Xt;f|yym*pl7OdZNwRvSW4ymWF1VE+4k zrD2yUTk^xwk~1*URe;-t^BAvL4e^xH@` zP_NUzIiPJxE;YH7f!VgF7pFRtl98>d-74QdQiWP<~h<~1@60cDKad@{a9TOmkJr_(Nw+s(A~>4xYq$k<={SyBTJ&hqRi zC$LuvuuU-zKUSPe!jB#iHDFkE7inlgYgg#T;NK5ynvIn)e$Wdf8D8#|W#a1Yg?Ct_ zLBshalrOFe*@X|${*ji&Vki^=>ltl`M@)2Bi&mmgAZXhkxfNH8g7WR zO;X+(8Aefg{r#Cyx~s_c5MI|zc$9*+(O3JG@1k$b>}@DcN9_KI0iBWjlU6w#N*!gl zlIAClv}_H#_2=s;Q^womAIQczCDTJ{WW>>m$-|jS0LT$VIO7xAH`qbeCyq3_AJ`lW zM>pb^AMK!qg^npIz9^Yo&20)}>~&E$*2#`-D>LDP{)z1x6M#7!iN}FMs@*`}VGGCM zKMgY;vZc5HWxCYH)1Ig&8nM=6gEK+iD_zIhuRO6qn{{i)zIzMlK18O-qRj|6Zrq~d zttQssx>#}wU63hb$l1aJhpO%Jg;eC2(2^GaCnIw4%g%god;T+dz}@tq5}FwEeH;lu zm^XkMhllR8N2#YpCzR)5Rcs((3&KvAtuPa3px1^V?F^Dc#~f#>Ut@I4h4=t3UV51={TpDT zC{;VHy_AhN#4X7&7mLt(Z+#TLu2jh`hXyz}9m}eFNh}YcVxe+vau1F4LV&t2pi)p6 zN`c8Q(kB8R*K2R~5qUQ?l|6N^rO`u^DNdD=pRezez>bD8uOBSlDcf~4NNW-DpT)waq&RYbCH zQcpjYfXsY97iqXvlZzw`N^MT81qg-Fkv1-zlGa5+3I{K2j~@re87~$&f=&yM%+_ls zh>{(>jVWnCe1fP<6v6xmQp5KjKB%dIaku=V9OGq!Vxe5tUdygGiZ-;Wf^Tz*_2ijwM+)_#fR;Q3p4ucKEV20ggcBzQ!coN9VZci>(mK zEo&Ae_xn)sOk{N(}L>{)kr4XwzY6Q<8hL0WBtKNz*)-9#rM< zJQlgQH@H5~j$HB*S5Ka_tu|7BlxMKdLJGJ4R@B39wa`FDQ$o;-9^Jw%m_HCgRwy@E zZ?7DtDyh^ot#``~4?S4$r)^r|hUQ2WNs?^bGaXinT7r=L&j0S^y5T+HHNQaZ`bD%Y z_RupiJBY9Qxh`0Q5-=#oARP&fJKI`W$2R-oAnCB1^ugmx65q+b%(j~WN>iG#8X_La z4o|}Ff~1NudS-T!vcnO?v!+C}M(1*#YPqZxp|2rk8g6FCO03Af#j@0(cB2W)PID z5pzj}G!d-02NjZ^<69IqhkCjv{1B82={BGJafnh%nX11v;>(72bm0r5MAx>54@g1V zciM#kWAg-kban2`itnzKNOO8`_ZA?LUa>Dl#LLQ8CX@kBLH;(St>2qtXNS%(zCR%8 zaY?%6Hf6zsLmg3dGmpy`UR0XQyOkSg;Fx+FjjC;+;_Kv!KL)#_Y|&qg)8h0fB93Ro zf!5xBrC^9wgokYxM10`OTQq$(xa*m%;tnrUqnwSB#UQU1ei`h zvCj$kw-_=MWKb2GSJ5!BT>74*>a2R5i>-Y6LZ*FKazpniZ(!VabzYBMZ zxT4%<`osOoh3o>m6nd#e^>w^FXMqB$`op8ND<}>YIr~BxygYsiIS6 ze@=BvE)Z~DjL&CJ&NxPT^O_JMBMH}{l63I!yTlj2%O((?TBbj*dxG<*-%E5@s2~>m zG?9S(%TI%m#n(pb9q=k+!1ozgPXyCzfSV-L>Z?IsChR+=?WsslW#CH0g>(XbQQI|{ za4l;M6R!6zDsS@26h`=*WXueyFsHa@3&8pNgP_Q(C`t+MJSw#aCgLf1Cfcz-4fJJ+ zt}x++g8=)ES}kh-W7zeE9M>8m%~83Y9NBU|Y&E?FPyuis>UBSL)KrS{-JSB)QOvoF zYg~}-X;^9u8-P#ne&1q&O#|h5D_3vK;Pqnt#hl5VEe$t4RQ2deHLJxsSZp-ytEy;?BE<8C2t9f7|2uAYzwoSDm`p=#waTLhG>{g5`0(+WJ%)yOcM`ev)hqc4sIM;vqctyDkHEI|9EOC)2ecfdg?*`@Diy)rns!=(?@7dQ0p_uaw@Uskpc< zsKw2%TGOLtfC#Jza~}-0jv!?E$@|PIqC&7A9Ux?0E#7)rR~!d_m6Mg4PlO!f-nM?j zP)B5Cp22g5KmCM-6~L$1jU@WRcP>bZGMP;500k(QycN`8*r%q+$4GzEbX)uUFRc`l z=niAJwY&!96onQYiHt|iO8Ax#jcXvLiFrDLAmc5C@)zL+p-M;6N-Hnfx|dO*xm_$v zWV(Tosm6a}6!m660bp5@OF#yL6modIaP)4|hRGN(1Jc#df}@vK5SK456!ISI!R|F; zW)KhMDS&>Vs*WK*{=m!ZjzOlUJJs`R-lq&(_M4?!c>XJd%A*%{@;L>Og#m48nLHIN z;%x~o89U*_k4a3geX30fBEtJL&kyWy$MAD4#5za2=*sbnSdT4h7EQ>wxcCZ?62e;L z66%CtVb4N%In|LfVRtyDbB+jzk}|e*MXV6dGEdY-P`+3V2tMtG6SCt%obh<#@cq_EmU%PIYrLR!S=at#Kv4(LGLzb{v!BYue8gs(4}#9}l&F6(x1(&d)$jo!y2Q;HRHeI{e=| zI&IVu3}wj6!=KKYIq4!KRyShgwT37N88q4w?r%Uue<>gY5~Y%M5K~1vd&Lo}qf$1-vCvG` z76|NbKoIydccK#{!(jsT(VdJA`-JS2gMp9to40U$0wU~i?&g$1$%XqKtev9RtzQvo zo39Ap(pFT7C03M)j6oHI z*FB?&h=dPjgKC{ApZslq15Dl0++Iei12%5!M2)v(`Zgm8@dQxt6(i@etkY$`fGXdz zbFYmliFfwY+8)bn{A}peGHb*_!+E9!F@(d7!HXaTKEoi}o-#Um7BNPRH}Sb}peqCA8Wzeb_mWawwj1}=P>%FB%lLHp|1BA-en zRL77tNf_&n)ovMT3p+hLKA9c5JXiLETkVc4pLrP4jvw+1ZJ`PD(%bc@90*`FD)j+Qi z+BaRB_$)p^{q?io6aMA`M68Bqy@Q>{HXZn;bl=`S+yl(CJ_(rZ|Ga}&?(GqV3^fzg z&HW)s*j30$SMg)(?^}+bKMUF+Ru3D}7KKYUlNj6Hq1RdV zk9*6t%m`b_KAlj}bgV)7Q>ZjvD*660V?Vx_prvcFcVgCAYJQztgBL;r7=$@g)T92o%atmbXo$9JrbBdD*R(o`lj+5jKP0a};=B=U1{p#_GWDHu4>!ROB|6!)M3u4Su~{ zBK@`W_A3ZjL2F^dsNmi%{8Sdh_8b~w1=_~3u40WeF+;llHZLGE>~7B zCLlY;XWG?jM=)feN>u7xO`7lpgY-5m8<1M2M_m1ZPWeV`G;V<>OEj18*a9@L*N5B1zuXq>)(e zEnus;ZyxKek#fP4KK3qrSd%}*uj+`9iyZfTuhMTb4FQDP zCr_SJ!SQ5uf_ZW<#|B=xbWwsh$&EU61uyGlPADA{%HjQ$eq1lF z(RR8%lp<<6O$M}|mk5yLe7=_X??nHw>nLw_oYlDj#OXYE?yGDSLWw#8hf$2*)Jv(K zx-h|xsNqZQebAQ~jb@NhE74chD}#apR3p%PqN9Tf7dWdrLb2*c_wW`HmAathFZMI! ztMfj6&h>`Lp$LLdO@UqqDtwjoBpeAymdAXcnklI24(fH%4HhSVT61g1tpl1iT<~Hi zJSDxJq6!=lm0tsz25qT78&NQ`x|kZw>)i)A(6NCnaLZ+<-pgp%vKGQw;Oc0>M*#PdnuB}zRqk?u_lAzcJyMl8<-sF2 z|MDLFkDtfh^ZR9sV^a#?V`kTtznWx_J^OCQM59NuUn)^;a;^k&vr%>8mZ?sO!3ahx zg#N$X#YuDh$*#o&T&62o?hhp;K>3Wym{R-{1$)>QNw$-Mu4i}2uZBB&`;C>R4r4;i z%yBTO+R!0w23^tDU&OMK)0c&SS`Pa?Vn3{7#|(x6gkwlquE|*xhkw|s$YHuC`4G1W zCAV>5=NqLg7?FrpNL=NjwAqFeGpWhUu~LO)%e<;44| zBLQ9`nvtf`xe1n~Vkv?_Sg(?2O0+Kk&)nkcwZ=!=<9B7BuN`K|c(g{z_(lVZLPi*w zO)XR)kKQjC3$ma%w%ngO_Is9dB(KN&b5)zlx1b(Es#HN(_M8CHWY*>dfu96ZMHNeQ@W3*6&QyJjG5U--_gigLqKONp+p))>dRAzkFhXs@+j zQx4dv5kp>cusp=w9c2HOBs^Tw;w_Anrtxv`K2<@eU&lYP8Pfxm&#%Xr%*k(2`;^w^ zJ-VZPwRs4}ptTJDvYFcfK}Uy~@NqO51Ik8{a7Ay>`g(sgl*%H-ql1ZcVE4-M80%tj z)R9tY6vrPpXi_!jL8weJ)kg8e8Ud3V0j@wiWc^J zQW%Ltf4>T%J4}d+*mzAnvB}~INW99Sw&DYJ1ml6T4R=sz7tZz+9cT@M1Rh!vhOtkZ zg>om6J@VcE1ca!ldupPGQJcn>1BBnnE?%s?kAfJD1RI@9;9btNE`^3*?ko(b7=1zA z;$B`=q){+eR-aslcq#cb&t#>wy~9_v-~&2Ogj9U4u$l zZ;T8}_yjtA)V?@R*Co6zyPl<{0L6QRhuSt?x{q)7{uzZVt+xa!BfcJ|Epntv^$I-A zOmcRtV#l7@3pgI0TOIl{Z43s7jirVMPpVq;9N>AZpk(ZKxTLE}Z9G@P8$f!gstqk036$HF;p)E^Tf+_` zbo@pvjwwN0&XB^7<>-N{?=Dj`0%J89OzVp8rk6--;vQ+I7s9WP&+gpb5Fpwd1xdpO zaCSvz4VyL=8-6h(u9@5HRhyaHkDpNosTF@6zTWMoQ~=b<2djOX96 zC;_3K>OSeQ59e>UNKBcGNC>L#`xnr_C0?6F?3s|z36hkqsEF_`#D`Kq4IK<*UkYnQ zo@}*yVg4HuhaUeEd>A;ZqpN)yW5fR4B4{&FQdG0)=jNf)EUmFaQU~84Jus}Pj$D4s z4pd0C`>`i;qsk5O|MKL=t|;cw%t8eTP)4TQuUPJ3{o^4|XT&c4y;cnjHt(%=A!qIh zPecz>1)5PuUdVEO`EESX(a2JO$%Q$vu75woM@%8S=tXSMJx>hYbl{|=Mc`k~d|Ni9 z@hZ&&{BiL8Pzm0>JOwK_K_B*C{Fe@MEA(+%_{aD1HOfqoE=4p?!@3U6 zC^3HgZ>{>LRHBIJiN*d-L|SaQ9OMZh!WTp@F0Vam#pZ z;bhq3n1T)W*$rG$i{MGQ=>pc+x`{2665@oNKHbk)uOWU)N^WWDgj4WmpS@DRE6*TX z)je1xtt(4?V-Ul=1r*V2-6xN6%ZhUSem_EQEgt_Jejdx$5S3yoXEb$c9jo>gEG!Zl z!}m$+5}zeAGhEjmpG1td86lCru}eUwbBvy1i`#H4!B_W_cUaa_p?cI~M?TuiuTWvV zk`3g^S7{;Ngq(O)t&ilc_(V)5N>MwB{erJhv*VH-_}IMB=XvDNMum_M;Sxr5_5Lix zSz5Aghv`qmHA*C%pKw1HlS7kwPOd(TeSgvVS#+vh`Gk3Yg9Si|3p4KWj{jutL~D~8 zjfHG|F1a)Hvm-Ky`1K#!oSU54MVpAEW3`{17be?4!MJSov3bj3V8q=X3h;?Vm|>wR zWs;W&Fm_I`voDYR0tyvVOmmVA`S1PQveIb5#uXA6Y`S$@weir zv)-q8_kVnp8PEjJkd$;b6V&oVZuE~0W)W)Wl}v%{>lqu7#N+J9dL3S$4b1t@%-JT0 zROiH!|BP-Ti{i(GtUA>mgQl@#L{}~C9PuT@4m9JIUN$PM>1H8qx4FSU;*o=EMN{o~dMm13>11U#gUiHNTbwv4AGi+PiK;ykn$~c^5ajN1U6qvpWb8T~L z7i(UUGMHjgK?ojPY($cybM|4hCmRBq?0!6vvzE*hM`vKYdeoCUn3jauzk& zztUlAa!EsRSmOE464Udq7w~OP`M(AI-(@AGdqc<8Q=3nCcf-8!(QRW2K>He( z0(VR5)?wDa9od@*W?bV3>G?~^3eaZp2u%9(;PIA8lsB%zA zW08!6wv$EtWL#TxmN~R`S|9>*`o6isDwhOFdeoIw_O^)o* zRZ4`jnf7M5gJL+j#AG8POzo@;hvygz7(lRRSk&m$ZvUj;;YxP>dJZHEv5iEr77qd6 z?I`J{jsVu6o6x*&;;g&uoZ$4`i1zx+WWC75cb9bXt_FAVB$!YdBS>q@X5*D9Q@&SOsP;k_dVoiMQ9g;9lSbxP7>Mq zg!$rVYNX?BQV*EWFS|sj$5BIo?EG-FFQ>6^a0K|&h%YxYxfmMq7*cIhp_Uf`FXM94 zY}pv2^~32SE`D$>UIQUo+W^DLl-=cWE(5F6_uZ7en43oyi4>Vsha_V$7%xlW{KDZm z#_jFJqxpFeGSsBY@NfTEwk*^Q>Y%Rpz21q;CI^hYocFL#E>4Rsq{$deS1``@_{sa0n-(_g;z4qg+)-O$<2=6+R++)a}k&6Ehz% z<$%gx@CYSqKVmRdkmp$3bhEW>0co{^|T6I1Ir*f{c zmRxu-*V@YBM6*)@2L$riC#tqoE-hR4k;J7#%`eJ;#fCN<-2L6s489`!j6r9MpiW0U zuCItnxS-Bsfc9q_JQZh^L2L1X09Tf5cVnN;YQr$#Jv*DJjJ9IBrv&XRRUlUIkYFB# z;!%F{k03HZZ)YltONeGJp=jkmL@|}x|3j_6TK(h0LXgR3)U&OQg)}2dH{4Fjhc=67l*D|FK}K$P zmM(Nuo{G%=M>(@Yn@`f@_Qw-Tv%u&+G+6B>e3I61-+yr;u56l|{Pflw z5;A`I&B%_9I^zK*|;mqI+=wiAO$x+|oslR$VE*^jitjd)if` z%gz&c3Fz@D17sl;vO0oXt%Vxm`~JWzs5$m3m2Uo&y1ag9DbBJVLg{{i5CZSE6-cvP z$-|o}%&|V_O7)~x=r>Wzl+3FE=R;Mk709qLkdEY(0Ah;oBYfSsh#HyzRwF1rpgMXM zk6+H;?Pt0BBiM#etmk+T)UlDMq!J33tq zZ}%InZw+9mWG2wR{kFnh2*&D7p{AHN=R2W##I20TdUSF9;}EyCFv^xkZYg=m)9WnT z2ix&OQ&IY;ZK%X@C-d(i_x1vaW>oKhkG#FB{bI$rf_1@pMtgSbFq0#XA{gvE#*PnNi zoXllEfU;=lXv_9GqQ1*t2tePe0A&upA9QDUF>%3@g&`7cLPKv3U@fveOSV%o^U_kU zr+rVK0CX)Bst9MTzj-I|oHPYK;nid|wr^hY+ep7J1!5qf^Sze=+>)0QG!k7mCsYOAgDdz@hPf=7IukHzIY}K}&H4E}k@X)l2iUd2tD7bL z9%HaS2zR|z6z#ck){lb7)e{bKK{0l`bAicayKhj6JW#&w+6|vo%;m;};ChLh=)7J6 z@=fGyu69X8%+unsEa8w3S=So)&a4w7IP!(~>gDFWFyH(ty0C_xL4nhv6z)b5Jwod2 zE~!@{Uz^?8R8kKNEc2!@b@l-g!$Bt)3w&Bkr&&Bq2et5Ed}!83XD+R1m#7tu4Cj*1 z7lC(68*)Zy_hp$$xOuq|RgTJ26UW|k-~Qy!RzMtN@2C0HtNi1;IG)t=AfA_C*0Y;u zVYHrv&X+y=`LJi$MtmN)+peuqnRnY|+Xt>xZ95?9OnW#of5{AuyZ8gK)#k%C-KoFC za~_a*JZpTm0QKlSt2|Zwr11DTZy?9@_a4KC_#P@Dh1NCtlO*urJ0_k1XP3A7mhd^ zBo*<9f;0UpP~;>Q&6^s5pfMou!RQk<0ZXPW<5LSH75~KSvS_OnFLZ_36Cb^{dnw4Rj1o>Y2mU_o62XdZW{=1#4(qQC>C)$xX%{wHC zluIzXTO;pvw7;kHWG#iQFHbe$s)X!$BM4n5e!bUrLWG7cHzdDx|3b1tz283S>c%7^ z5Vp$yZ8f3o>>|J&jEm6Z_+kv9k@MP_aZ8ykB5Gy`-Mwe1+a9(9VW_tot{Gb$zb%bg zS9}Nd{wecatsVNC6HRv;9)$pde*0a;VoX&sP;Ue>jAJW~!V1rbm-sa!nqG^b)2=pLqwEY;oQg?FL9&&aQ>}S<-op@N86V^BV+%q3GDre9?tONF^ z-bMHm>J`pNi=}w?UlSI+JtP(emxxg>u_(opK~7-zIGk8PEs}Y1=&Am;zh_nS1Q{RW znGVD044d?0VXV+&2k2d4mtOt9x%YN&CiRVvDj{*HbDBuZKnKj>Tdici-*d$bQB zohLEcJaa(uG~TVmYQs?-Ma?oyzh$)Y&&(d4k@EiWUSjjM`Vbsz$+WDuL3Q?>gS& z>Aa`-qoMs<+j9YN!}=2S6OJb%=+m!0xLDOX`fFAH4fjqfVLxuZpY$YxVR_AizlL-o zU>V4W>Vc3FxX8wllj#ZaLB>MTT2V@}E*TFT5m_+-vN2GBI1g}kt3rLI#5F1J%i=z4 z=F0FK?#hN(ir@eEJ!5mgjV)&Hh)^KO%zk*N`(3^=CvVYsMTKSD48d&gcFkUFV67$fY&bgU zj{2!BZ2RafUF6%p>xBb^!M97rnAC~@m<<##YE#^7Eejdq>+~m0von>9z23ELhV~Y= z_=}bLNw|WdPS2*WK^x#Qt|DjF#y@R?=xqH>X~klQJ`Qa4 z$PG7Bc%`uh(FLK_548@^3VjVa+P8-Gu@5p)z3h7f<{?-;oG%gMVf!!RjFP12cD9uV z^23iKjPfzoDppw|vKf)MB4*@kX1HxqWSoX#-|-@+Db2zNqC!f{3>|^@yO4uFE=xQ5p>aAw;W?AAUZCi znwVPJM+BBW%SWWiob}#TUWX+4nK!j4YiEu31vVv1$}VSJvl9i*KOBSU)w4te>^m@m zjAbTQo5@Y4Lq4afw18#R!#*grnJ8dZbrs`dU08=9F`_JEto} z3W%ePo&W=eR>@&6<52NKXNTHg3I>Q3>=RqL7dp2 zG;lP=5HqqwALHF7{UM>@^HhK%slkLGr{u)A9BL4JKkNGx3)&xh>O)7VKHX^Y3H%*t z5w)fFl=yH0RWx3HojB%0=X}RL`;}O=0E|8ldk4GkONQ@pG{l0L_-vA>wP;<3RIUbm zx^{xBT;ll-;RBL}&)hP`t5UlAw=E0KonDMCW7#itGra!3TX+^jbLS)N+E!E|ZCjB5T}IO_P5eiJhd?xprOs9)|)h^Ie#V89+aRSDJhZ zC~{IWi*J^m%TWc~w7{>gl0s85j70lt@fA<+H)DY%TXG%kw8h0mn4?~2tg?8nNCl5* z)U9Odtf)98k<^L(S0F+?GbLm(K+80G!UR<{dg8UE0apmE*35Aj1OiA2giZqC5f&)w z;+Hk+{xa6?1$_K-ot%5tI887eABPRUj=+<1%XL(YJ0Qftn^hkaXp_rzAw%NG zA5rV07xf@IMws4}KThLkl-E{`xurXYOF;0|e%A$uqaeJ}hMvBk^`}T3^zA!&lzjt9 zVD2Nz5o)+wEz4*t5h*cv6VCctOqGdl=}ui4=l7X_1TWF7in+MMr3Cl)>@L~I?z)99FFs`Dvr0r5E^Hb7 z<~&DSrRYSL9bZ(=^snAPR9@b-Qzw&*X^V{W8unsWgs_rDKxGq4!~O~Se`}nIT}`A& zj1eLYe;;E=#pob!jA5Hzh6=~Ndm8!*GE-f=1vbJf8QSJAZarrY-wt$$@g)~l>x;yO zl5~ZMydD;E&_mz(Grj*cQG(aQ8bT{NFkJ-g!(uAElfN_kaQ->kO3bA~+NF?>^MK(B z)2DF4VB;bEhLq=A+3=DU(xYsq&66le(0f~1Rz)MyJ z^Jup-b(zye-k9|gIF?PEW*OmGA~Odidfev79*?>fWu>-QnjNoBa8HSvrB-6CV3Uj# zb>DV9!C*C9VJ1<>`TYV;o;*vT{eCd;n9a;Aa^ugekbjGT`MEPNXmY)fUNK1M%VTk1 zq&H{i_ch{kL{yzUN~9u%?}4J$G2yO}n)V<#RX$$!&jbM>^2gO$%N;&B3IP~{s>g{* z9sX%GTm^U6X;04ou`>Ajg5Cn8QNjWmt4=fclXecp3Ws_HY)nmBBBlV zVov=k!}8WFG&E(QDIHk$Ngk3beJp8yan56U7PX8 zNcWIFZbLtZIB#Ibk}{w}Ih#Oq*l{b;Ws%kYc*O5J~xyC|sO>XYmaB;JjgX(L_SZ z@s)aj1kScFWHT}yNZKmKexCk_-BqxO%5sE`NXLv(YF)*x2QZzDL{ckP>WH#sakF*T z=68UgOD>F+v28snSV1^XBc|+HPD)35dy-MMWvWt`^QYO0N}_A*16%HW&ILQfa8AF> zISyoiopmjUA_F}DOGw#QauJRPSJ-vwB89i|1)%!IFGu;fc2ep&FDCJWUcY0X7~0NJ zp{>PQlvWEhlpbfVn44cE)z0!O~i-DnKzNv{R_%wnHt$R-3At#Ljj;09_)Vy_4o7ACwfjNwtkPw^;7CPpOI)IRa}q47AMUaC*apmx7u2^a~S7CfEGN%Mp^@oY& z#&@oSYkdd`IxokreGCB zWvpNyac&dmgpWYIVfb6t9HZK^5DM4&^c1U+{jPr;vx~ZmDN}) z>Y;)TMgN;@^+X~hlJx)DkT~aCvTa1fKFE`RA#-BpDOhSNP)thBM=qy31v&(s%$`@BoLz1gi zm^_#~CGa;Qj-c-FIWUhCALmhn&+(BCH#SAdb16N>SOTvGJoiBE=D`t*+PL_*eJYHe z!MPQGGN6FFT#4gt(i9E?KNKZl2#a_^f8dGn5D=^i=zc*HNRq z(G?xXNX3-Z!+q)lZ>OXU-{CXp7@Ee_7GuH1FiFP>i9-8a7V*u>lzcLy)7 z&JP-oL{J*B_Ah%2`X`VvRx8bj?8@Ed-+e;N`=iDFeHmwn2pZYt&--&;Fsha8EsI%q z&~5%{pfK%9<`-|~p%>!PlH{sE@Znzpagt|{EaCynk|hCuiT~MgRB|HUQiTWjVYqoq z5P_9hh%uzEDX@+glr95Tt$+3Oks*fN{7U_vWxsdHU+cXY!|(*gfs0%Wk<)O} zbPS2w@HO^Z@}P`Uoevv>ZjY@gC|l2XGM+G+KTts@Y1^k}1`hrKAOb|-`wsayTl!Vf zx&n-y^NyF)TE*B*#DOaTpLTwcnuOp)H4Hr;oQ!Kc{(>!(1n#A5G^uo;C>_)2Q^dtF z3A?Wrz0cYj(;W>#B96L-py{*)r$&H@0(G9^Xcy!nVn3BgU2PQClz1Kmu}`~ndx_XM zj)x}39&KY*g9eClLOW~%c?0yDiN|GA7ot~O{=zH;5@HRT3q!Bsr(Z1~Z4rJTNDeq% zane(~Lm3YKLZ14_OVx*4^&bd9qSEW4Ic8`C_W6jc?DC)LjrFy={ET5yFLuuph%<&3 zl;SRKiV8soBsz+YDB%)Xvou_=7ii{!L?sQrE|WH1xCL-w(iOJ$a?O*dc$<`l|D6C~ zLNPzuwW$f(ijKRb(&BlC72FSMK5sBPawTkrf*u3k!kTH-prK^d)GfqFt-+t2&k4Xh zBpDN@vIZ=+2o34tIlTp`TNSjX4eP5(ih9Aegqlv2i}^0Jnao zU!0Ux5z`Q#kC^M6yGxoYXF*z5h>b@-?}K*CJ3uynTS8Rp+iRH2`cd`k7IMcD=b! z>X5p2Lfh=oQ;-+OR0wKn4a_PYb4(2prZ~VJC8WuULXpc7 z-M0o%o($lc}B*8O>YVh+123NSg@P04dx{WZ0kw%U}# zC{0xJT8j_L2@L!Bwma+@1@^*0`fgvnG0eKg%B4J~9i-4r-U$NwIhlgO!Efij-J$fA#;{tvZ^fg5#R$m`TW|Me+%jBw(`Hj}CkbpBr) z6b=ETD#2%7T^A#eRW}(trVHqXNB6rQYU_|4-%J#AuY)YSCDaVaKP=Wp>$w7){Rv8g zgz-fU?cd1mx*LG~Z53W)E({P-#6%3OdsjqO+&|PfOt4|`ZZOrGVFLV#i4%*cckgOV zfM!;!4JkC((fmH^3d74QZXKSm=_^TX@2(DpQdl{)g_LFq=Gl}L3iMK0m{u2BEK3(~ zOymd+#3qjLtiOL{3}Qc4HNWs2Db&gs-hFC{v8m)90_5a~8RE&K8EUoyCw)+O^W#u0 z$XfzPH5xCBkg!A;L)*-j0931$0ix=aK=`Ub!ieI!b)L{gM&$Wsy2vFNC^WIAYlj8| zDSP06zvEG>X|qnbfl=yeegVxEwc53X*Ph3uevnDPe#ftAHJvd5MjI8XU}tR;OQ~rOm5`t;C@N}zgCU~K zIiL1*c(rv{(4z}4%LV-Jfh6wWgLhY$JsZCc>GHgCnQZRpwk1)`;3E#2d7qsgA?YMj z@2YYdgO~z)xXB>84`ofM1SW<5A{;WiL(|e8kXkQ^^S!g3HdwRVybOvFdo{$WBsf7N z4~pwmY`bHBDHCoAm=O)@B_Oe^vMQ#VB{a+9u!3C3u)Uegegz>vseocW!H(XI|AfYR z>)p(@z25kD%1srKK#!*;NA;AW5)?Q0i1W&Pf7U5S*1iyEuR7(QqbNF;Fsg&nJN5VX z8)bhtKY42}?Y+~fxCR>EY!ZAJ>yJDFZ);)U8EI$ck}D^)6v7)w-C@?&*c=MvD)|z( zkOoF%s9A9iW!%|Xb{L?5X|82(;Fae@7vvUUqoPIgQ~k+qqn7r${^K)*wt46g(zH+n zI_K+VIcEw~y~a;6K zbo~{b$kr>@6&Ms(i&!P&P@;bM2gOvXUk8JRZh>Ai0dU4IN!u|Yk#?cCWxuSzi^Ai| z53y(NYo?r~q8`j&Gpny-y2?%LonLR<3t9fniQI-VAL^4I=%&`kWG1!ad(Cs|vlpsq zL8uRYjR8$LEUe(k0;@+OnRw=~i-S+)w+X{`)#3qk>sp62lBKXi$qqIWxrnZ|w{rsk z7)jH3=AE?GgeDh)-puU1OL^uM)h*6S;J(=U9yvWLsRSAUlc4d=Yo(?5J>Nmk`7zWb zj`rGaCaf~*fA;mVQN!9Psz)mHkLuehQy?Xj*B$_k3Wz3g6=AluG*NQjd5VcBY*C>(2s zRYyIQ8P&_OcAiHMcP#le#ITIEMVW^p8;?C$v=c{L`h}F1=FrCToq?(-`47#glw1c~ z0ov>Q#WUvQTR-WAxa7HjrPc_3{t9)g3V>tQ!I9`a@6!&*pv(vRsm0<5wjz%gm`Fe{ zSX`mtY>rcUG}BGKXrBthnf5#HB5|D_N`Pe5M`s%QPdw{IVAX0&wg%4*U)pmK!Wy~V zKT13Q1b%W{SSEx{(Iz}RKFfdih`IMig<`eKseESPB!Bcg8Vw&iRQy_KYH3aR?B#`? zRcc;Rk>yLSf>>NYX7%{IMl&<**wxJ3W z*VK6HdK#DEuPF5*nRP!;ZN~+X|jJD8gONFR#zq~c!#;X%!mJ!zW5~*Eu-X#u{ zMT+dFIaEhJvcGGZ=LkePKtrj=lEm09Giw_#6WI{b-QlCjs>3yI{>5s&No1?!HT}7j zitSOUYlS#!m@c>iwo*7;4SVmzqd~QgI?4f}&U^Px&6;d!69#PESRJd(XC&=A>eRBo z@B`F4F0x>SX~U(h6&m7>dzTxo9eFpGNs9Jd7T~aFM~=eripY#zu()}8w>FyZcXBs7m?Xl6`bTNB zft#oLz=t+jHTo1xtOS6!R`Lz#6S$!Tl%4C-wr}&6MJdfIc1G7954xUhRRo~6>nO** zs+q((k@|O9h{NhfVmPQ{GPF&D$OC5dPr_dN!pxQrdx=;=3olOxgG4D@U_4y`mh%Qf zmu#FkRq2`%g|*RuFv8qghjy7QKin<*BV~e=6NqLfqu({k8t7c*AtrfXQM^;fB25=p z2CBkC{0+_Oi*pAblbZ1|y}j(;#rFY5YqQS+(cXXv?4fP^Wz6Jn*vc~?m33l~fyIO@ z)NwVi-~rvfJ~?^UJ42M`tmOs7Sx@6?8QBwy`*;=Ru7%}=*LftPIcSoCYiJl3VW=#pEBv;W0bsZ6 z9uM@tnxmxgQRWn8q6r_)O?ANP_|~>8tRxzZQJfvsP4I1Cs4}He7#?Go z{yE3Pp+_3$*-ApGAE2GRzyU32e4ecf^-(@R3195^bt1uoF@5MZachz||y zIzXElRF2jVri%_ja@;FnPAyT1Z8O~$O{44pn5E>>N7I8EDnVNeXC6;pw8&hv0AZV~ z=t%41%p>9x*+hh;T~VDcmvljXB)mz z?OcnPr_gq~PRuY(O242;MIDp#3$42@x}e_Rs#yRWIroe$d%_2*M!(O64O7*qw>hdy z-BU|nYFc{7T3$hBIM-g5{!h~HlX+yr_#RTd`-cSe^xZdtE6T0hit$E>ldOCp&NjoN zTcEnf6~#yGnWD;MD&ea?OR7r_eE=s8PLLp@9c)F6C@Kv&y1B;yxF4jKV&4$8zbQeC z6xL5eG$ja-8zp*lT|L`olp>nSqN0l;J)dR&D-5+V-@K4Ir-M>4zF^ekETJBe7A9n! zhyu8BnHggYEw{h?o{ddt?4=yBOLv4*|TCQV-D4?3kIYx=^Q%nP^uK)NWALJ&BZ zbnO21QGyI={k(KF)+}JY;`r_6Ab>DswuNYOP!!Ff-)rN}n1&}n$1kyYm{#%c>)hw~ zxpFv<<+%B7YEo=@aZU(90kKRH4bEBp3!)jT0NH{RHDgJkRYNR0>M&o^CIN%HBLBs0hgLi70B7svAID=kJIs<{?I19ymZl!8p+Z^;1Q~dA zBgxw;puzFtTx{+q@>eTELmdXDLc77`rRO~rC^#K7Lo2dC3WC zvchCv$1O}d16w6+cY<6v63%QL{}``+FT&IpDD!$gF3LSE_Ik@Z!CJ- z(W7bNO6ITtXl}?EP}gc28DPNrsOPD1(D+Z(! zp+(^y6yog>0+4MKDX`ikY0sFQp5aNFW->ZEjeYJuGr!47W+{Ww#~{`TmM!0=>lS%p z{1LlR6mW#`tH@xHGf{soAd`V4U+TrMAox#&e-xj+T!MPDgu z$5mUAwW#n;8UJ!JW`%G_B53UEun?bUHe&^vhTBR>)|*YCmWiQaKL z61azgN!fTV@Nage=?mJKS*jR$xQb@C{<0tA8JTTH0?&InrI*EcB#)#Yd$Wcoh|;n} z%?fk-QDY(k+TzF%mdU5Xmf9xU1*Tks~a}3<~0-9(b zmx%&1E<%V^uE@EeAF7Uzf0YGD0uH*k{5hMAcKCY|nPX}gdB$lcL=eOPhYYqkD{DfP zX80$Co`848i$afjJ&+;(IFNm8kamKDxXe3OBW$ zf(TzRnXBdect-F6AbW*mH>agXzSrys5ueD-qykCqjqDWRV4V_HCcOi-Tzubo>`|&3 z^l0JXTk4a$xtD0bj3=Bnjd;Zn^^>3lpb23N!t;Nn*L3e6+Dm@o&(V39DFB+FP+T_R zV52`T>*Q&%kowm0d!|s1`5|83aT6~KsHt(Tw5_*-U3Rf)VTaL9b{C>{d8$l1T_v9dJ$cVd|vFVmIU*%MM^>h%qNjfX~ zh}bVO#;@UTU=8aL9CwxgXrK@=ksV%va&lG9mfa$IaGBX97*Vy2?>_k#U5vfGKKTRe zPEK}k#;8FxOhY;K={0oZ)Vo?V^9X)H%u*N+4PFwhQ3#O`kGA;G`&2_WlaCJzHC4Ig zlqwso3eD;vd}Oia^171wm>x|AR2b_=u}T49p>~p{A7H5q53rEt)Mj6i1>aVKw#N0~ zw6r6{2X!a^zOdfuq3 z^BqA}-iT`@x-S*eVyF2|J7&_tyS{Ieg2%BsYSoSlA4HSUdCoI|yNWzm|!*C$em0~d$ftniovIMtml#dT3uY`IQ`ULsce)! z_L!;EJ@@9s{pNBSxn~*6NaBPC<2xGWw5?tc@6G!6&5)K>FOCPrIVcKKJWgOO{A@s# z@4Q$hJK29FGWzH=n+${Yi2x1UXA?< z$Vc+v5QU-7qfdV={py>ILhalLUsd=4vWJ-gqf&I4>GeZDCU9YfV{|yx1$3{ixdn{SOyv^oPt%M6}J?>rFjg!39CjdOlpIvz#PM= zhgZ4OWr;OpX1$!ePeeqz<1#Q|TXFqq<7&Jdg5bG9LPq=E$fJ@PW9|G`%uv`X9TmNo ze(JI`_@qh`b}(MlWVbu4C-x1T1_7tC_wwH&c9%Kbm8$UFMMt8szn~3NYmA-gX31=fX;^R6IAzzk9PgP;=yET_**cH`-}-Pzt_*Q zxJTuOvL$tVku*ju*Rt>;_$Pk43HRY|@7yG!dVssgloI+jTN305IN^~w#0lg?Ef=ngz{?n0;j@HY~vnh;uxElSHo-F96F=V!V zgCs^>$+Q*zl8L!Y9_Za7=^fQG5?uay19;TbZ)DCK_5HGKRwBeuigf%J=8UbL zitP}@(dF{55b6DFru3hjE*M+XZ0Raa$rQ{&qtR(mC(Rp4!zDyU?vRk_g56ZOCxcT7 z5VQs8O3;`4Z7r8|g2=x>;|-T&UWlo0tS20_c+Z%lk#>ekwxhq6lie?#qP%{o{Nv=` zD)MlZ@8fw?0_X`pW!n?T5jVbt_@!JR_P_Fh2Lsp7jX8$U9Di$rByorNbPXfw<)`6@ zPciu$YOJQgu6&oyE9P49x{%Nh5yL!p%kYL`c$CE(O-V^>(iE2nnWRhq`80r(CR`~5 zovP5l(lTj?)uZBcLQvq=1PX?gjAL$?9!Q1CS;<;M4LOC?-8`#qDU=UM5J>2dwE)M5dd zF1#x$?->im4vJ({A^$;?gdAD=yX&{Yljpv>F6G490R{d^SHmN0aDhwoY_LuKQ*$hVeTE%sx7=-Y(SswTiS6S7EiQpA^i}QPJh`GKn4GAO_QKRPyz> z5D4ZUPV9rI`CAWb@Mc^~azc%y;9~_DN+$VOlhdnj27C%;e!?RDfK--MlF;0CshjQcd2e8#$ zG81cX{Nl?F?QvIFXAty6h|izE6%jMvHYfdbw?)+vnN4l-kI#l>mK^^&e)RM3RNXUX zokJdJn0@Fjj^vrvB8{cOh!jmn`v+U+LNsm%hT;u6?qoO%4qto?!?(cjnY+OyE%0YD z&ZVv`vwvqBZC>y&Gb-x}=N83`k(V<+&OEk(bIMH7=NN+HPG0pFcIi0O7d9WHBXC>- zrb%l-0r7EUr})CFv_kst89RLJ$h#6?|BxL<-u8Dp_vFs8W1se=@w%-eV9B?=Eo;T) zEpoybeF`%!I1^&%DoJ54yL*wsIB3O+kMZOJjJHv~t-T$4Zg0!P*k-(Ruyud2Z$HYYuJR$8ZlTTQ-@gYFiENq99Ur+JR~yMYbatMSPV)w~}w9+yG& zi4Y_@uB(4Bmd0n&brkPjfrXbLT3I9q@-x4Q$?mi z<51)FBSAo5Hy6_Y*gj#Nr8gH~IsOR@GQ(qy?pp5_{j;;TCDhKj zl6y%x6NZ{n2cJENk0|1S$~Kd@d0K?V?4;8!o&aZ>Jr>Tg%=VZ+KHF~sZec;gfzzfX zu3OaP?=YaLOmCgt4?1Y#E&)Kg*_aHr-lBloWVgD(GZOak)R2m|5e7`&&G?K1Lf@Kr ztVmguS1hVn@^zYZ4A6`YCPj!o{CXVneswn6?kWV!YnWUxHi=MLS;i*W{2SEIlr!7?*Kr)m?-DdAL5p9=#>J83ZO5vLa`WoH2Zc=04@?h=IES!m&K$nbAVgql`sAL#Hkp} zp_}*UL~|WB)W(c`?2JEk;n{E5JsZ6 zmh-UjPcoG?b>vzm`g{oYV z_)%SAla4s#;Mu_=<8%W7HU=>ZhFBhaAWI~s?UHRLt!-oa!>_iLSk2G{-~j_iw57zm zdIeE~9#HK@o$+gYFqwT^#m#LsaidT@-(4C)pJN!7V@;y+$E4d%9PETKb0My~_D~CX z?SU$!qqD+&cFBc8V(e*N#fy{!;*ugw_7;V_{ zSI>Wq)L!`ptj*5d1QrSx-XA0RNsi#X2mmq&ZD=}@eh!{<9+;?w96qx}o@pbwRwm!r zEsIG+mUabiSlZL`hq_ zm`o0F0McwD#==fr2m)2K|52sWP-A8#(4DU3@~a@~ARr=v~y3MeTYbz2I!yCy5GifPJKEoI+`lB}j@ ze1l1JC*lAom0c2~(F?KJh8c8^#*-kf4Y9xMO$rldHpnUfk1PQ2W?9qFXh9y4vEu{< zzh>_hXlc%w7L`5cF{wB|U&^eoh#M1{y6YDQfOo6Us2(8Teu&E)szair)%7f@f~F@e z5p=6c96o=kacDjH zA})`y1LsdOT|ijejYf=PKI?4+br_W!!4f?LaW(JuKbnv-X`f6*Zg!IM&CL0I4`f)AQ$l;c6 zT)8V{Z>|w03<`(Uao~;ZfH?t;iGStVoZvZOq!HS5PjWLUPUo1jLOaSd9^-`X=QyJd zWyALNkspAF1})449%LB(qh2ScF07kZB=tYLXf&Fvwb8x`B4kwNDoNxY8BL7-Qu~E6 zyT*z&37)0kYLhm%BMLO@gUa{-Ehr^0g^jr`&|pu0m{1K+Ei#;-=+gOMDw3-V-mGAY z_N@e-M4cNo4cZtLV(jca#m;E!;2ndHO3TQZklwuXP zWlfnJBRH1n)-Dz}dyJvxAJ=JhHjNDJJdmUz6y6jKja|j^*S>poA~8XT0sWLWQztpQ zloGwchhtu~Q;1P8YIRzU6J=B?gHqs0-Bu_c7%}l*FG_fvmD7PgSQ!w@LVe}!LFxvy zo^5qez!H%5BD)4C^xxghG>4rKN{&6rPKRuv%%B!Sf^XG6_b^S8mm>R8L8NWU1lhD` zH(n;ag*wP6`+e#?{H5K2(<~1)r;;#B7&Tk&BCe(+i0)!tB=vz#f|c0#akmRLo7WpT zv8Crsfl}xj&g}JwwmB$(g@YxQz|K*Hj*}=Lg1?#uXuMGPa_)oY^n}#j5>_#^I>8em z$nxpby4>8=G6q?LDsr-{mIDP)5)XjDPWZ_rD}wIEioKjBK+UcEw3=sRlj_FXgp&$g=WHObvBtoN6jhT+?Fzich*@2) zOIo(Vk*^cLD;VO&Z${>;t2`Qpjr^MyUw#77g<^`L3J7EJeFU=oP|D%Gu@)4mK%pQ7 z6kZ>|Cq@Qu#_-sJr9gq)GBlPHvftzcf58>=ryF;s)~q`B950dwP(Rw0WAX|RsdSh} z1X4G-`itoFmd}_)BSTQU>c^ZM&Oaqvg(RqBEmFoe#~~Rv^r-};cFV~Uje7RFD_U-& zDmH0~c~7$o%L}}QMX34JX_i_FObXgnG$ECLqk-yUi0xiL^Ic?Q2!#5fYiL%0M4qB% z2-;Ik%W%4vmPGW3k6;aCW!ze#b)pXRVt*C$zE+X#7=)++-ggC`o&xJy)pFX!A!JOR zCW{q*(DIWwg!O9Ve7Ls~1;G+)Z@rmP63}|^ z%ban%^7A(2b5k-w(Ts2Cy;WxSeoo z*w>g78e$f(1WA#^Ey(}pvZJ}U4w3ksH!`;%bKy{_f30$H)w zb3`czupwfST7b+^!k%5Z=CV}rrt!=AK)F8NI-5hofD-E+RIoCWSxz1gEap!qLU$5XfMph)+0(pJlx%*SnIbwHrz$VHUy{Q%tW@;D}-SThL;N8&ZnHYmb zZ}sQ*gIEkNSp|GmsS1!iBd{Ph?ZjWML|z6BlzwLC;j9=aWJ~+Nlry6@NuIh}tn9Iy z7ptS!jqWQc*%YURw2N|~dKa`FR=3{F?x9%Vx!I>3_^spV0`fA|Y4oo$Mh0C*rLxO> zxMT~@P#M&lyTS%gr^WJ=s>Ew1j54s(w++SJw!jtko2#yf6_e0;P-{!4^u-g^03YC45 zY)Ncj&kSL9>o~c$57-ldhqe7f#GE62_V<>+^QzS7u{J6W_UR(&`a%L4sxRPgSby?~ znK{gYpKF1u*vS<2CLZA}oc684d|XJ3sBaWs zO&s}R?H2{Yxpn8N^R_nQ>35?G#_NP_@3=m%- zoI*XItJO)_^bO^$L=W3su6e(xHyIaWLzQ#y9JU)LOpPoK=s-!aeqJ)5qLT}CAzS0R zwB>D}WjAEK5f-z`=|mtag^n7GAdahjr>8g%N56LzCCnbt2);^n-koArKj!3_r(3bg zuX_24@Yh)`BX#k*Q92LUc!qCG#OSYuvHpebA?Wvv`V|-!M{}^0TR1W>?fl4Urg!)6 zDDj6vMAdj1xWz!3rCno%XGI&s^NwJc5Mf=2K>D3YS|*#xoRE$;OVXR(F!9gtnPXpc zm!kV%8Eh3VHd|<~S$_TZHE6N{T1xqg*SlG%nBKtf`9#buBrPV4UbYmRChkT39vY)l zs+jtg0?fKE)5vklj1pGKtV}ctk!LunFbTU!uP87M!l3Ne=fLE9Y$~j3wZPGe{zXr+ zdT|rNIxRhC8&{r}AmL4veCLAN8oPhnO?EgjUF$Yz)%sKYR-!>JtSFn|sjZ`Ex!u+Y zW<-5QKx{D0r%R|Dq|Ik;A;R5ZMMpi@&zld{kS%p zv8?)*a)G94bqu)1#n>>`pca-A6(!n5Mz1(+*+cXM58d%btf5P}x*dR2^e4cSdNEby zeJ~7j=&S`*Mp0fW`WL*3k9J4D2o?2TB3a57-KKNeZS`>eCl(%gd9ICeG~lx>aP}(mgSCl| zPa_uYIgdEm)}}-XL1|2i`A&lAv0}|am?Y>^*s7z7IjnYT=d+;W1z3Lflic*q$pDA9 zkK)skl9y|r?mY)0gJERMNzG)hRgXgdCe5k^_ED{~%=UvY`t{#Ph>faQ4~>|!neS@* zPIA7mKXQ<1YJaj$XX&IzZ>;Poax08j<`;)t$ms2=AWcs|;ayJx81+{A_;B`jouxBe z7go;u3q47)*Q-F_ppJj)q}|J=kP+%6!*3>^G!_I>phc~rb`8Z!g9A1Cd(1B5uG5LJ zk9ZfLa39sWlu60AUk{AVp65rL=2unJ1tT5g4E_rkq6twGtGn z4h>tS@26^D(Y>+_xz2+o9P+ZCJ74L0;O>APJd}XF=R+om3Euw@aB$DZ%Y_};w?RGx z$rzC1*M;0*W*UnXUas|O`tcSzsK%ANpe4u4`?5C=0%&jO{(zA6hc5`hpCKL)l`fxQ zG~%}n)%uAn82vRLK%J~-8VJ8ivnEutY;`Qar`=!N4*^+v-Z5K=__xyj8|!v%C4c3j z9(rZ|*CXPfc@12^Y4X*il?2H0q7`_XYBuqKU%LjoJgl5gPrpRVam)jPhF>0{`!k)V z9()vEcGBq2X-UbQk~1=Bu$%eN|`EyV2s7J5WvQ7(E0}Z1iJ-Vnd!(6^A zaos6(txZ?btCL4J@=cYgA5QE8*AUVCJ4v9q$7B5MOWyUkh<9%v)6?r$=N;m*F+tdV zpSk{|P2_h30!7<1k-%0%V+;`qivF}{`1|E>bCN(RHLGQccF(|K^1PfYj;PIWe0xvV z4j?R5n>e06q@f>wF`BBU{BH@h2yKd%xJT#;H*pwtPJTD-aGHP9Jh5A}#UA8#zT~iU z#nX%v4bPq#evZ?%*ZQNtaFVjh9VF`=XbimNM}K>IIO&E$phY0|=WK3040q9cIEjwi z(K~$sSb&FiTvL+7K8~ywpY?d?k!y(0+Rsn!BGk?8s}*18IWuBvsn-y88PMRvF?7fFM z{BQZ1%S1M-9hIT(mZinlLShN#f*wM2%@N~BTGeHcE+abZk2e-xy=(u&+6&xdbS*FU z=k{hx=d}qg^M50SR^Dul!cTbPIy>JAhI8Ls%OQSL#o4W%nmy-SszjNF0X-FJ>O?|Z zQ$l-J>`BuNtqdV6hMx9kaz=K`;)K9ONXgpf!t1c+csL6kAQFHkiF1_x;K}F%Z2Si@ zkQ^jjQ-!ON8Njt5yPJgf43M-ScVA|;UrBqYQErFSI@tBGOM#B}xL5fd#Oi%uf!g!tXso+x zb0osRcWl60h{cF=PX4^xAK5^eXIu&MK?%ag?W41AclUOlS^Xk_3?@va@FV7 z<|*5`zs)V@Ru(f|i+IO`S?jfyQrwtSW3z(Eu(>qxWq<7N;qPLe$#TZi_;vqyB>yj( z$+YTy4^)W$A(DqP@o56c@n#K*_L6k&8B#2@D~uh6DgBvS?5!_7A^7mK&ny!gn2z)G zV{>ZJ3JpR;c%kc!*u!R`r6HjN(n!i&$70r>l#3^>YJF2C1f#skWBc@jzrP`Ii_r2i z49Bt=dfc>Zf5{fL4P}L*@6OOW{+8X|_%1LilQ7HU8Vh~Xr4~+@&iD?IJ z@W6vSeQYTaI8SnWEhw%@|0(K?yi~3hVHEc76HJOO68Sqq)5>EQFO50M1|Z4A``Ct^ z-;@-u4jC_hQl-47{1^P{Ay(!~hg#U>AGw}+32MO;&){{06W|sV;deIKlA;uF$9J8n za6OC;C~L_v$)u(l(|H3NWJN*fZ|Ua-YX^b`6Wo}MK0LMF;D#gogMuw|RL#4QgcV#9 zV&PCz{~3`5X^@G#M4H8-nR@7%`ED7H*ADGN^hIer!VF<;5Q!tFJc zRvn_-0KhmIDAt5)azeEdvMD2!JSax8c|6mRW>^<}$~lOKjOb7#02-4eMfCjm(j5-J2kE@B|QTi^2C&zkH7)FN&Y>j_|()`KzkTeP(kPrYEX z%Of4uu-I_mdWMlNiq}4o#te8{FoKb1(}vIy%G79Ut3i({Y(>X>4@5#Yc_IF+Fne98 z5z6v!kYCjj^(_>!3nTbzDRDEh30|eWDDAlupsPuEXXgXWboRuHe-K6>wGd}hPkd3A zN;whS;gez`UL~p8l-@QLIvul_-lNti%P^qaVVBmWeUQ?ASF_)VSdZ9wYRWv@yl->joVwd;TM_Z6G>7}# zC7D+k^@JjfD}C+HcfTEv*Y^*Io~!msKM=4M@BOoAGjC|M?ps_e8}jR=p~|tNqKE9+ z=@|@;upa?TI&RV5Y*OVkQJfB(m*UPY&OA($qYbOmuQ^HS-CcK%1HI*`;Bz%A0OMRg z?IpTRcLO|v%B!t^1tIZT@$#6%z(NzKoVi!3xK4Jab^=FUxWaR5Kj_%RAzR}W0>5#R z#FcU)pVlu5jO4Ns%qyjH_XkJ5%aLimpP*s~5$*|q|#5TMMo!s>ga43eDul_{Pu%1+#Pk z=#sPIrY!x}5N(vL3mI4(QvsS_3%3^;{2^@6Wl%>xH7k|42s7nq^J-h*sF+UEQ#&Nk zAmAS#Ni8U~s`7x7$hCSZm&YsOXKr!`UX27D6+LJ;?@Tx8KZz3cRz~E@FUg?S7H9{Kq9L|NwR_>7dwjO#_JbFc-_BgzWbVxBmAl?H(UDJUK^FMF3UK)~Ou zSB>g5zqU%Df;(Auq-+ckvQ?H%^|;M>ML53-CHSpq1K$s2gaio&(6*JK#nSH8wZbb? zpE}hRHVlB|><+K@mS4tR3n5h^Fs0oJ-?T%S5o_m#Cm-~YhB+|F22Ez;E!mU)GbdG9 zWsbGu8jo44q;yO#yiYZHCz>IF)!hX9XAAm2RDsI5k;p~DI{@gyNhGYdf0c9LT%+aG zAM$img? ze~n=PB)V!yro!k9X=F>uAxVvK{vT*a2QPniFBnSDRdV_3`5?)vm?P${nHPI`89%tr zn4^#yLGcw}1&16-E&6b!6&33=+>>Xq@{Mx5-!Y5zDZ%Ei@5)_hj}nIW4D-B`(^&)f z<9L^WICr>pZty4^h@Aqmp}FUwe3-m=s1-fVy00^x#!w@+12fX|3;eG(+CA~|jRV@S z_`^96zV$HNbUcX9A;w19tY9x2>awWnhuA|ws#-L>S13A5_0bTK+e zlIG#s6<$nI6k%c1yZ;obD)=vif}t+-J#d1;;c4A&$-TZ^EG1v>io>JZpDC#LfNDG< zSBnBPV=W|;c0D@+CVUy~Ww5^K?|SX-$|-u4%FwR|96vKoLYRj8zle#$rbICMz>Mwi zWK$=HLkBvoNfF}mm^gTNfS^WDDP^r!JUde1&2`=ByUooMM>54nXw!Q53$NISiV;*f&z}9dhivZf)m-(e!V>R=IcMF&{#*7gP z?OI|3rfWsjbFGGt8OU=$x*LHc0(Jqrmfb;HPRkm&Ng)R#5RkjrD;tpx%=!uAR;fUR zx8M3wwT@5_1*=Q<7FY)J+2?>oK>68`)y-ycuG#ghGO+L2%D^pH^EVxs+`WoOJt%qY zS@@rIYU>=9(2HW&O8#xY`+J)e>{s^5%i&Hr-jbPR-FvJ_48}rPnJHXXB(h(K|% z9DyDjGy%3y;PzDk!8DeK(`TdE{h3q4{_bPWOD|1VJk?Hykl}N^hh()OX3%dSR!(4& zH~3AR7T+?kXCU0pO0ygjp7HRRoe8Agjy1`VcE3b+V%HFYYZ-BuXjE^7jIqhCF%VwD zmrG{m=6KI#;yUlpDAi&(#(|7U7RMi3AjR)>xV&R2SF&}-@_VssDWEGRC_gdb#rls7tSZ7sO1l8Jx9>#xTf@!Efl@eu_ zc`ydSZMagzg(MEc*MpF>R1e|l^vFE#mz^md$e@6MEzYXa?2$aBfN{9ze5Cbygok++ z{C@6dhTyJwJ3cL;jT=rZ-xk9KxphH8@vpNEa|M+Rk}0^4WtDUJ3UF4EHe(Jjylt*^ zKVK-I25A$B*r8P?7i79y@F{9vpJdtw+swhv{o?!EK7sYMAUI*_n5PxB92tU{ijs}P z4fa5dlZSPa0PT%S(sQ2bdncde1I*i|4(U0b=W8?HvXJrp(4I1gXSqkQf>r%S?b8Y6 zm&I!H(s!mqE0dt3?upMNzj36DUXkZIbAMuzni>wh%C9HkAQHrw5`(HW%Rw%r9&jn; z8o$Th6!ap{q079^FUHd{tZ^6DhNsNU+>sGreZk(j&Pv;GV5{z+j;{bp+$HDof+bol zoPA<2$y>AY`)tV40XbT&@9Zk_yix_sN@^z51B697GnM)DI|Al>hyB~abg12g@?F0WdzH{P7-E2@ zLTCc^hjd-1`68(g*G+BanGu7dyJq=UGPqxtl_YLKzuo&X0eFv6ZIi~M%(lDuHJfIj z2k;S^!GEF!qs{PR(yF&3L6CjRKH!s{g*uB}7(V184r^ZHa%YYE(_>xRdVOeQ(SmIp zK>G853a1@D{V&Q^0VBX{Q^P+h@OdHe+u7{ju|R;9S$S2sexj+ZFBZYumCgssQA=pG z8_Xo|yDHSU`l~Wt=hpX#oZy7Xa-&P*Of@(_XHM6og*rC^6v)QH{BwdX*K{7tkW1Kv zV=$GS#G#mVDJ8H}4elTZ=rXBYUVRvZ$ueby7jO??DKl+jm<_|TeV`O}sz(C&AcD&g zs%ac1k9i&_>Cwcn20MmEI-Q;m+{WWlM!+__w4~G*h3L?z1_^$ED)dgTp+Y!{)SUs|ML!pEJxlnzQQ( z66xMKCLeVQju>*8%9Tw(;~fAfzB3D^j5?Gxp%DzkGkL&E7TGLF3DdBH;%Yq`EXUhs zn^*;9i`;rTh#57rw;FIlp}2+WAuj9>W>4y^#EY2q6Bzf-=U-cAzLYaJiK4A*%61OF z$J&1^^cfl!mR!8Lek)gFl%kzaZ&6N0?|A+DDBr{?RQ0N%sE1I|BhV29B{qO z0(rezPo2ThZsYmFD#*OR;=(ID>-%@SsZDeR6}!fZLo%Bo&trP z07ak6u4BBX$Zkdq5;E_^hTWo;%tgqU5AYX9W=HU7ob&l^D1HpPsoUaL>u{11Nq1L+ zG88sSqb~Z-ut$Fk_mb23k$x+ht|J)!NUYpCx*;bfGKPbd1_fGwinKyC+UAx-2oxwLz4PiCBKQ z8%ddI*X#lBo}l@(V%SCU_Wk>&M4hc~0=#qmKBE3)XuvHp^f=qlS-7o5v$TUV8-=C6 z{tiE|iv#>UZ@8z@HRhI2vJsdL1Kf?J1L>rWj7a|`7xJH}K(h{?>(+^Ip^!H^z=M$b zgCf)mI$kVK`c*?N$A|&ihXjoTCohU~Lo2SwcDo zfKB8Fl2$b*PU^f{V#_Cc7;p)1?8zv0@S@gFk3V&pxf6X*26k+{^DIP zF~w>nai~&KfSF?%HeSQ=$u`c#DGM=cfgXF|XE4v;4hO*a9%#$#ds)o=KLAfr9TdrS zSAefdJI0By5#1PF6>%l05!v>7~n|)aogk` z{rjrvNK-6hJL(WGg>9wc`P~~Eoq9qFb6ZE|qpb-9*U4o+U|b}tDDXiI#>7%VVHR{o zaxI#EA9$G}tA7XKi;p})GG%ZP)PIS1S)^Oj!aFfyf%0wlKj0#n)bDJ-S}%2NLj{;IeqPRC0v=<+=<_t2!=ql)93$(;Q2;{Q_|p@;(PHh9hk#9eP| zBJE+nOvOl&oO@y7n{QD#$49=AO4OfXt*wI*+3>P$$Oai{i)6o;?uz3kX^2(nCH$or2Eyhh9x&(7o=#x(5}jU3 zsAeU#fxVV~fBJ{RF91l7?!M_!K#Fo9`5%GN-W1eg}1Hg8q zA|EP-b1jI4bToB8OJbLB42Zkrc%<#fC zWR;UHv1DqAjG53+jOIs0a(8$k))-z0V@DBt`h&BMP}=qH%un@v zA>ac0{}vqBJu{_M{~0FUR+AqFffp#{B`(3Cr44E zYe-sSf3m4WC)_zD*lN z;K%jmHhzFERG&CYcZ`)8Mn-x!ctN%Fun*f=wk8PrO*P zi{M2BphZu#{keQHeq+sF0%=S_?72mrjbU}NXDI`Ku`5!#FrMh}E(tkhq3(05$QY3$ zVvWjcSQ;yn)Dky8t$r;~=?Uu!?Oa7LHNXB9TsA5dC~Y}wU?+C*RzbtWQ`8FkR@H)l zoi38N46tNZ-}Kl^{UdFB+$cs1G}g8!A*rr+5*>?sW+*f-PxWqlNR2#fn)!7UF5#(5 zi5YNHYd(bXg{@s<5R$%@w;LSoJ6?I_}~l%)6BoEv_EhMj(12X#zMf z^+U`+&bK>Z61;^P@`!qyTPzn?K8KH{t!u6H2!U&~#mnzc@5VLgyaR{xanZA6)qz7L zRS8{uD+=ro5lPg$u;uyyKCygwj(QRz?&2L2Iwr4i;cX)btrFye7EHwnZ!@)`B-Mpc zqcn4W@4|wH3n`xVdt*dE-hf*(=IRyOTaRh74pm(1UnJ7`%feA@-ho}qGSU|TAM3w* zJZc;4U|lsUiZmN>Pdp7TK}Sw)fQ1P=_qkOmO=DQueWU%8N{)y9o5#$;kTeeKM4tYP zD#zOdwGWfeifFpvh);Ru@)VazFb2X3G&q#yE+~T0!@4h)q56Rvkx-x*2(>)K29}uTx{|YyKkfFibw>Uv7f-G~XC}gSz_>k8MY5Rk|S{T|Y7A8Z5 zu$Cr)7zA%WaG=J-a9|E=XBfSuYSGoC{1e(xv>jibe=(i`zwkY`PuWX0^?X4P7*FPM}NDs_rDPUk{-0W+>XyE`-+f zY6d^Y8Q%k@v56U>bDM!ni!Yh#{>U8O5a-1^TqDDnwl#M+#la8IW^AR&4mrC*YCeT8 zsIg!Zpe_gt(tNWWZV?VC61&~!?~uP&8$T4r3_wjGS@QtqdxQDno7$N~P?8U%R=VMh zWR6Q~r;`LqDsE=ZotplE0z>BT9I;u6mdqx?Co&-DeF7it<0!2E$A^``++a#BzI6{yrs#|fSBpe-x>rA?czI@#dSLfIosiYEX-Z&H+0O_ZK4XV9o6L~|b2^VCD z8_ahG(P0;`giatxo-U&R8rUb) zM#*wCq>x>Sf*51EaXrbCEvQb`jqXSAi}QS4sD&jn;qL7j|4{))Nfr|^PgeMRYnK;) z<$+QVufek5=D#PC%&HWdi#CBn9GHNxSeRdWdN(R8Wc8TZ2Oy(z8PUdrtg3vHDLr6L zn4udb=`YzjBNu68(dAJcj#wL~q(c|xZdP9WRwjz{S5(5G?dZMYH1m1w{ppHX-ev5G zxND!#joD}$44s(@g zTaMvP{e|5;3+*+v1i}$x%%mG#RQmS@g$#WWEisxB+(~1yF^nl6Dl$m{MOmoxb2Nuv z&8O(HL40h=pSBfgEQ{F!R9ISb!`Nyq1oZqh9pO$QA&!9b;VUBOZ5 zv=HpDRRy5Xn_)S6h~_d>dG&pjOH;}c3jN7%f-x{7i^?A)MwK1rIk*4QKJ7dq z_j)@~CfzxT9W6^MLm3*)@4p)%rGj&MbpTx3npzJv*Abc-ghV3@+V9uexiW@sIDxCL zpw6I@d~ai11`~q-hd=4P0L>fO1voX0H9=RVpoOjoi4*-EzoOPPv_IxUF9kkqTi?z* z3Z&(M&TX$ktpVTW+ZH>Wgg}j~rhx{9XjC78uDQo>d?j9E>5@@&6e-`c4G}vY%bv1Y zr2WMZ1o_u4GKCIc4~yl-8VW?w5CR=~^8=Yk$9EC#yPF{yg`CY!VwV&?x@h)} zu~NU;@I`j(kR3>8I#Bq4U14r?IWE=rmsU@AFeVoi8Mb1d4lX+prdqzu;`64VcD(XW z{RVAm=_@-T%TcXdkF`}f`w1fYu*`r+YcTG5mri0|RuJ(~IQ0|7uokUzUv6-2S*0+?#x@P|x=3)FXFp9CxUa|nmR-0o7 zy_?=%Nc)iulq*f}YprSK%$+#hX;6p%0_bSiSB%^XZj2TrwKmdzq9PrC(bhsQh zpO9H4ghIE?Bk+goLk|*YMYjV|?-clBHyy!ub8M{DMakL&Ui}l(RWEk`Lae%^nVBW? z*_%)k&S*1+5>@oF&pzS;$ahU0VO0moua6p~JaNXJ1@ACjYInaEdge5BYXqGYBEz@w z=o4cvoV|wAAJYzs#IxK4$%5Zn@1zx|EczM2qaJK3NuNL)y!%riK{yER)pgLF0BVsFtL;`Iz+=i2iiD zdInF#3X`leBNJA)!}{R7v;-%hv=k?l{8GTWi9g!2aOP=b$46Crmi)FLmDk?f1XpPB zJz(+Hz12+9uwgA(_2^bB`Gz#0L~zyatZVv3Hc_i+hFT~=4-JR1yi#^SqrRv-Y~*Ce zvr+J_m@=b~xdpN+zv0XvO zLlEfh*-GpQd#q;s1(8%s?1ETE(I|*E;nw&NRzacUT|w|D@5F+2H1yA|_W=fBW{0rn z(2uP}ZGD`t=!(caP?myeVrAAQkT|Z$>$h=K@8@q)PWHB?PMXdFjpNoIRliv7;}WVPkIk z6}z+tcN3iD9;<+(XW-e+viidv;Ll;|hNc7sP6z6N5HoxjD4-+Yp2YC{0ibe4y5Z6^ zfUJvtT5_wtLfg&R_o`csb=!P}$LX16a7a2sN#Av9IQKFxb~*lz#m2JC1&p}JtpzsX zA?ss`BTpcQoIZfG&P?)#PoIQReFGx9R~65quYbb;Pf)5NX|@xMZq*DUafEg(f{Jku zmHCH?9hfyJ(wGszCH{{*IPMx>j+(qWQAPP+(L-TN zSLPUn2W(UvyPH_1GAE)~bd6@8q^$p{GHLA^8U@fkoRhM!xopjP9G+{`0k^%TY>osL zT1_#vn>b&kG@fE%I2}7u>)!;YzDWBu2}i@%Y0%d_o1$kr-UCD}=nLzTQZvp)?;#LW zvV8-f06z!tkP*l(4MRm z4y3Yq|MvEQ2B79wQR=$6_Y*dIP$|u5i}X`R-=oLaY&kDcEcBOzB!g_mzn|D$qDdVA zEjET&+*}3-gEpaH$D_?bUi^0*hJG`2)#Ux2bmL>3g;xxF!EkT(VzjD}J*^b7`fd7~ zdDQKsYgePj1v*|f_y)xcpBk=Nl8ZpT6}SjQUDD9z^ZH^@T-fnspp0k?N$4Zd~s-#(L; z(%6;AY#9&*pdYSrc*-y~9Wzj}$yX~0{PV(mh(~^DVwh_Kx9v*tZgv`J;vrB&vTCeJ z#14c~mGa!08B{D`?@@(>G~aIA;7izHBU)WGqh$hBnpN1VNZZhr+%GRRte+XGHB)H@ zWiS?RQCd>vOs7?QdLL)|C*vXm?yno`b+6v+DSmNuQ`&ZP_SJ9tKyhw~QRa_aRDh#G}z^?Cp;7CK@6T@p&SwNDEklb`1r$W>3Ho&KlfxxvKaE;3*BS6Q_iXh0|V{9 zO4Av{G4Wp?NyfV;hL>948%sdd2`7uE_;Cs%-?$FpZ-p|#!M6l67-N7mtP%S0DA!Ij zvIyBsWFV6p7EmNs4L7=IKiN6`Y%t3Z)3keS`ls_U+F$%k}YIAbf8pP&-rEj(s}%xJG=$*U(f7)Bpt&INwDnw{Im@%Bg(p?%=jr|?1LRPUhI z&yoxo4;Ber@2P}&fa|ADQ;|3OO62h#6@nl=O~I$Hl}g7-eZR#)w7K)JtyvjPGy!s^ zH+!MhRRfR%`wcRAzrfz^m!x&+4)m$c9;8y(cAJB)cehjrY$lupqG`&^l_}$bw$l?} zV?u!9-Ncz0C7*>sqG*fpv~ZmO@#w-S>_vn@YPV6P z7FXRg9AOwCJYM&A(nWas-sIo&rvF`**4)M(@#hb^Zi8nK@iTX^?{XwC=jT33ka$R) zHYsj}u?jJ*Pi4b>l!ij}WDb*ZUmO?aa@aJa^isxU8FJ=CN8!Mwgfmb?M>Umv=%KHv zx>(5_3)5N_k)I)JR_8v~dXjH~oN*5+e!IsIu*n`BI3HOZ+vWKbz9}Qt^(o zln151ML3(-d3=&@D7pTbtsZ8f0eK~x-B0y<6fh7jiAr5p(7mSYWLktZo>Us=QmT|+wP*ST*dC5a7UOQlsG_H^pw9c(TgA9(QIr5=873tRVTBklN zV!Ill3OOsLu-Ygyx<#K8FsJ${t8V|jRJTEKtBEsYgpeNpHCOmkg?=){ZiSn6wqjTM zBG%$uL%S&AcVBS~51~$}9e;~0`AY%En4WlpU@Rq>>j=wHd4#3$nZb1poGB6BrqKae zv^BT;Gu_gMa_!*M6aFUWxvXoVaS=kkD-KU(*);>-Qd89iRnFklWzw?e4)ftn*>ILp!b5BMQb`sM&HzE$`P&?RslVBQ5m6*inrKzYH9rHFr+>cu#U(3ww zt^PZDTIA{@?t!0%7GO&kI*SnRp`!y-!)6()wTQ-$o}u88!O5hW8_Y?UUZ63CfqRUW&*fd- zPFtF05Wl!ieB0d;3*-a6g!;&~KL}Svz;ZB30r5n3@=>w*g>!!=VU7O&l3HX&AgZG1`-GSX*&u15x)7B?Y>B@i=Y0zDp!v@e z`TcpM0!<7Zyqs=aH6bxK!0~o>pvV$`@{xBIf^1p?m-NT~pfPO(H0vr0en1M^#c?8uq!1mLyR^*US6VM$Q6$A=@2A zu`*Q+^FU^8At#Q6-%HoRM1JHRHzGj2)>G9otS$W~x+%-8pY}QdT$4Qtyw8Po3YHB? zBQ5{o?8yWo1GvM%ib+6=6N{15lmL!Eg!H^qdk1|=h1?}mJRwioFI<8MTSPOzH@pq; zBLon2b2A%u6iN%tv@%z_F(_@QV^GYrSjoq*%6doIK#%4Yn=5G|nGtea{&$1J(v&zW z@UcE_+>FgNjH(B3qtH-9NV zs?ags&PV_C$BxW@j9{#gt@280#DOP(SgHtg~PbrSQT4$6Hod|Ki~w zVW^9Z(;`8}eW``9ombGc-OG5Z?uQ++ylxTWm6PsUC5xk!M$YrQkNjRFCPQQ~zeqDC9;MC{o){)fos7GOFs2mY-p2oXBx zy8+yJnT8RjK8u-L$MC?gQ!w{*lYM|hVI}$fVWqWT<7lE-|`-zQWvCEzY zpGsC?FM?O4pXDK*IfFJ580a5is^YsqA`%Z5Fhd8=mI_n8LzYVV|IY5?VcUq4>4@%~ z=|E>jju?NUe{{&yim|0W`9SVZ_s@ASHMpt)g5(k^6Ia{e6CPIG#ZZH2&xlW&G-B>) z#i*XwT}440Ws?soCrkg>|58?DEp4@XY=1CIhpp~#c0!PYyuUv ze^RqMq%#!!!s6NX37|m60__h+auyg$>J{oRxdLf}f||WvlttNwSvrl8_prn7RdAH_MDjt+z`1NuYaP7iF|F-*7@Tn+QYi_MwCjTy=P5 zcvm;$jJdB(*frw7JY7+;jG+5KKCDW7E5`!vC%DKU-j3Vg&E@w3$jk zy_*O!)-tUX5(z~}xl)`@--DRC))KZEH0ZGif_V{pWD|uZSBu;6<@i7px}xGLyM^9i zQf#_Eymxxu-)ytn^r!|}G4u23nR7X;OGg2fz$uj2JCObJ!d+0xrZdE|mm2WdY`6fP zJy4Sa8zoE(_hM}xdx1poWXmW$* zpf)+BtzY3Fc^|pED&r##lboNDaD(7|$>9gWi`eM0@sa1L1X*YpFyR+CcODnPINR4o zHVSOOx~QwP^(=fDREvre6qY<XB|ruz~~Bxs*2wOA?%Izi&v*XO#)h`30rf^w}8| z@D5d~mvy7el)tG;A1Q_KzPoL)`5Yh=?An;ksT(7Dons)Qt#TzCwf6lRomAJjCI)MuPNk}UMwk1#S_f)vkqBz1E^u8DmG6x#NOyXx2A_;x`fbw?HgoAuG%DX zBxHy8nSVB@kVf*IGM@f!4g2`5g_qvs+b27Ms1)1-km2)jj=?@@(`S5mEh|G7=^o1k z=ugo@7b98-S60xRc$BpRhX7p6f%(9c(NAeCLRYh zTV$ulG*E&Ce)5miTf(%MDh~d{SqELxGN@~jmp}=Hb}jK5rm}uzUzzgw8-nQySRdZf zC1BzvPSP-(El8i1Tx=+Oh~o+cGzPq zu4Kbv7aM0f(pApGAtesj(#)4}E{0L`flpNSrZ`U|HI3io z{Rf=GtIb*mh7({;L>N8ZsQRxLslCxB(+3=P3_S{)4l}LCpdFR<(f*$*(z){Wt<65; zNJIHoc#Z5Bq?+wrg0e+v{5*h_mo1Z{8Lg%yEZYMv0bIKQAA6SMNvSjI*HWT}|DllV zzHzHRP{b->xN4wLl2G&SIs!=HvFK<4zhsbgRZlp}7yZh#Q9Ofo+y?K&Ae2#VDlciC z`cnGs9vn|Jyg4l_Y`P2;#$rp7M`;S94TBvR#0T7+(M2g?RJ&E?E3b|W?f*H!}@ zu(O5EQPSucnJfbuB#{1k<0hE=+QB$eBgTWg(NY;(G4^?M)dqjd^9&;D0#mNhbtk`G|A%yT;eO*k8g z=h5)C1G~@GNWeL5Rp=}z1^a}h#O)ep`~-T0t<5n)Ly}vQ9B$IwSahW6G3q=yQPOvE2;rJMgr#zo>*WH{TEOy`G0)-F5Qt1vC z#q@T{u$Mi%a;~$vFA=l{4dx-1=kOEmE|Ert7I#L8U|vkDn^rSO9Y6@<0j~^Qh)Pfa zR6_}#Pn88U`yj>4Y+DFH#d(b#5h>Q=@Z& zrJLK9Cm{%>iN3_|JzU$lUz0g+Z@p^KAGAhGn1s{S_YV*VVrOD*cVWMqd@+ou^&MK# z2?+jLlHdiisAs&ct;A!Wzwq)ykA@ zqyf)hVKSfkKegzvZBYAqqH&;?W~(x54r=*&qm=VS&D!K@I4bUYum43lXM~*iq*ivh zGV@0jO%PZEt7v+X5lZyO9QwDSoSp;NWeWN;b&OWx#O(t=3+2DM1%nYdtEcO_{10oH{&~I*NbhR~ITE)NhALcoa=uEeB!a?kONl1`xD1Um-1wJ) ztIX??I8Ks`6legpTm-ooMmaKrh9*WTz7PdN=PWq$*EWJpu7^+to1wA?Yw z3{pU~U%k1j<~3sIZ)NdqigDu{o%&iMNrK>I;LuJaokaVk$q@*TA4UyVV*mp~DRWKw z3wtCPCfr1Kc^R8<{m6|R_qTTDsc>14&x^9hnGqGU$zAts>k=GcV&1}S$^FU^4--73pgymy`(_|wsI&Nnc^6CC>k3oD7um=l<$nl-99gC>n@f3AvJNTq1GBI zWFw~UzBu^;yRCn-mAk(GO6nia*>TC1_fOTPZ3{n}-(f1*>4XYA;xQm?a^z0Zydr;y z=j*?}z}V=qJy_1*9EC!->@zv50N=dh6!*4na}SA{^kcm2G>AQOYfxRavm6|CjtwromD(RvDX zw$}WyEQDjn=>23V|1&=HlFtL*%@5$D6g5}=6-L8uItULb>atX&@s_T-F4GsV;c_BJ zY#zTAEy$ivCIpadbzU;)W6{2G6aaY~KS<&JuYB~esK4}+1$sT7B(AHNP11HaJ~KHtp4K1U6FM(da@iu<1%~$1jQOm`jleC z8txBJAP-UR8-O~;b^qxU?s?x0n0n@2G5(r2mnAr^!LNH}oCsyp5ym=}(qSZ#j{H$q zbkUb77Wa8lR`TDmTkhsCLUjk1i2$s-j@Ed9KA)SE@Yr%6wTQo84PS`Q6muZhEevW> zq)d%m95Gt_*KqNTH=FKr&MMe9Cx@l-hl@L2;LY{GKr@COYFmtMdtm%kZu-takl`4} zQPIoQtg#@pdFFc;2I{`TyoH0;Eld-nJYw?yevNT|@@PwVn6uVcu7-TAW zOrfX!amM17dr#^^NLkb8tsrS*&iV-tqrY8AXWcqTUu@?tP-fG?K1h9f=oJ#rIlGIu zV-8^FaFyekH~aKH%t-ypFdkWh79^i`??$@9gf&^Md&aDgH&$iOzS$|PgSmEUwAaQm z1J2}`h0Lr0s??8$fc|4-n?|Pw?|^uITvoBoZs{uXU<#pfqryFA+{1#HEOW@|<5HAz z7(uT|b{ktbq%Vj>FOw`^w%5coXSgfV?I;!(w;yCOe^w6VhGDeOaetb;F$GC2rTi=S5-8T@&R6)p&EXddlc+u5xvGZ9digQxCK?CyE| z^m~fPK2uuD+;e6Z!4#Bq+W!OQ*!?)>gcDRBS@B?%GyfoA5s=fR0GA$6?Ii-RvQ#Fp zwy9cX>3l#O=o|@*22B$;Ox?8h>lkPwsEV)^XcHf?*`P3P=3y@StN{N%0Kk?rP9E<9 z((7MGfb7JB_7{=RV+_TOk$SC*r*w;d)Emcf?E4bA%N*}cSC!FP;U@esaB~rEl)p7O z6|@2$i`g#o7|YTex68QvN9lnTk7gwYNZy^xT|=pSoJ9{$gN^wnLHyr_Gjsna;D(y8 z=*hkHux8yseHZ%$`o+)0CHH8^5znS(g?oz@OvX0(#vzI9ArY*uiG)i)`Kms?Fd zXw~ochuWNNh4R9dwId z4J-|89&QoD0!`Nj=_D!iu4YrI)<(X@Tjh(o{*>)bYuaqMR(%O`-#ENMmz`sDab#`% zFqb_VegslB!&eOk)}J8cGOK2GdegR;BIqsvy6XZQX+0_*fdQh~3+;rgaTDx2*13l9N@}PtB*Z$b_k4J8c#SfT z4tF0mIS6sb>C*4gF~WJarQGsaYqy>*%ohe&jYody4&xhvGaj(WqpB$v%?l5UUrll=Mm)3R(H09@Pk7or+jf{`(=t*NXh&TYil++PJN8jR!Pzn=N53AE*|v)=@SWgwKw z1hyaa!Lv^1=cPWhZFv$KqZ9RPEt5rPdZ|Y{i`4%}1-3ukds>a;9?p@PRp{bE%Wr zvKt)Tzmqx3we7!~pPU4QGLbLolg9w`Egwc7yfitM%|_S6tO%?$Sq(Ha+B?4BCmbYN zL+({JV}5UA?nq{V*cXEeYtryA*cYk3jtV{JG->L#&F~eJbbOkaji(ExE0#v}voW?9 z#{Z@MBwayN8*J($Y-VTrWt+*7T?tqoyhBtp3snDFO1Zmo{6^u?&|_Tgjw8en$G zAu6r&SUPf%pNy@j5?q*8@*oVfpC&gK%RAtt0qU*X!gLvEs8ZGeoGN|(=_8JoZ(73CcP13Gc8b!s&4Q27yn^Aky`Py?AUqBs z7eTitD_L(oSx-H~3Q#aWlw+6ye3Ke+>pdtBg06LX{qp&}2s1TbCK)j^^ydpL$-zzP zL$|i?5a8kho`%U|(=tK?m~J#9IbZ>EeHF%xJs#eror+9L# zE3NvSs`&&|rJMx0Yn{aj{$^!|b?L|D7EN%vQK1gO=nkY>NF$&V%JhZrkWdZB;gSFA ziAvKbsO3}LpWlg?v|Z|hY1=_e_M!SoeS#70-nPo`kQ)lgf4s=l?aiQTy=xzidW?22U zq=~hyCPr?z(p@~Io_Qno4yI3*|C*nU(35A4&&VnDNkkM^j)zH)Be>)bx)z=PY{#4Y z2qC-jaanq&&Xlc5MZ{I`uV)`Bv0oM>YryH}z8O^xjoLEXMJ=#>d;fTpcN`(l; zq$pKKWXoF-BX6_`3m0ln=*%nHX{n|cJHpD2DGEL{Xit~BsR?gQt2*xsQ;R5Ux4J>@ z^grcE%7FPQKr*~9Wuw1E#+hDwJk+$+-vd_pbCh@ZM5q|49+iskV}YA!XQMQ#R;a6T~g2oKl*gJ3u!IB*+7 zTTeJoR5X7|%-TS2D&sz;BELqUUxVJ5@J0{%G8}z@E7?6C6Isa~j1GtnP+Vd&1=|~qokc^fLsx97C24sRcw9o> zwJvCKp68{=G1g&3=QBE~l8?jQHQ=6shmtR>s9a*WZHzAm8)oA89HXY5ssJ&a`ek9} zrMtULjX3ITGR^_}MkZf4lLMznPx|~nVra!cecwK4Wm`@;+y7sbw-If2vzz7+M7r7- z#~o;TjO9R9L6Vo5(6&Xz$vhb%nT{U;yuMtf0RC-Xk`BuXDB{3E&1-|3<&s)x<*3s! z72(q|K)6agz41&fUVyHt`JeyC%%-|xOuPw;#pMJc;IUgIo?imV1+{+BhEpm|W7L!m zMjU)3?ZpFs{#hTXtq6hmcjZ?}1j4aPX6`Fn^@QrMOOaB& zzMnq?w8dT$?Lb#lu3bu{c`Z4{S1unWlLeHQ&1Y>>&W9g7b_hkk>f=p93zK7i!e`hn zm-5egU0$#0x8ggC)eACIH$6zuDA##0XPon=$kY-66cQ&^YjfKQhw#W1Dt;H{(K4v7^6mP9!8=TX;7DXlWP>q{tQ zOybNg6s6J;4}0N;!w}$rEw3JqjAOloQfkr)2nJ`a(kG|TTqj?9JbKvhzsk6jhGtG_ zU-T&oEM&jYnY6NUg9x8v*r(X@v=9<+e#-n?&^cjVmHf$UtjjL=I_5Bv3Jy0e8)?1q zW?CK&vM^J4)U@7%R&Op6ZPx#2^J}FDXYKw(ioiikFD(A~0g6n{(~F9UmG-6gghUs* zbVO`pvl?ZRrK?$9j&`ri8tM^%s;bwQzjHKtJ>IcNUBv!mfQr((6s^F2y;+8V2kX}T z<~yxX!Xmxy*85UR11;vr&13L*S5hBxYW-qwRmYTJvmkAB4!#0qOOOMAZYnf)eqMjA zhn{vXyst5V$&0bio^$X)2L)`r5LrD;&ncz>AjKpB?Wjy`su;tZ3xKhyZMQVF^awdu z|4X&E(pRkfwhy?T4G8CL>Jc)1cxqWpxSKkrY(iO6D#8p-%^GhUo9fYMYLGd&qY$@Y z+ZS8TNDx(H={HMh7m@0dQJR%tU%7w5c9cX~43ymTHX7+pY2wVjd_iwRcxngQh!>B9 z4P^#pXpfzLSDV3mg|DpzS(KKM(Nif@IAvVH9K8uy96zk237G0Ler*8X7tLAAJ+BI4 z@9;AmfA;MD*l!IAegh5v1K~Y>?+~VCqB{mR_f3#)zd?~m;&$(- z&;*8S)ldtC5Z0%T{?19@;1VVngWL$sM6prcZcKIE*^Gs?#JA{j@MtM08qw#|0vw=X z!oD4yqp6N@fH7lA*-!IZHUu46^7ceDcR!=h0*C?|=B6UjD1#LD!^$V@;LG!0<-~_x zn51b#kYW>@sz>G^Imo-PYi*|jU&9`%sHA?kUu@EkPqUde7j(_Cop()2oOS}8+*fpw z7=W(Hn3MEo?)MS?+%ytpl(K{_EYjQ6h}4R-3lRNv)%7l}$S`at*KaE2FzbqBHx}sO z0(5<2O&+w#T>h^|s-4-u;!)iRkbCZ}XEYfa`+Ab=ghn!c3sWEU5O)*hO4)qVlgWw3 zdZHsLdb3AN*&0A5oHQz#yDMrn0% zc7P5Q{%RPz1#B)6U8eySlEmqBLm^H!R++Wi$ zuk0-Xjzh)q`94+~X@#_QnH&noSlnL0Rw# z`pnzEanrxk4LAVF^39urDwOXkY4NK%g;--2g#2Ok^$~YEosb9#o84WmeJ&8AR&mBglJw#d;B&0KVChHfkQ-1hd&83W@94{P(CHua6 zxIF}7>{{N5Ke`=a+Kv`{&|GRghdPxn@W2`|g;!X7HzY5iKcB+TWTLs`zd2|c)+n-# zw>1{OxdC2(tK6Vnow0MPzql}Po(6g;1Fwp;|1>Gq7~zs=;-T5OG?)CGdicsV$CcMT zR*R~iWlIMYfBZ8bM)`zFWZ@8DX8jwL{mx4+8)iQ7a!zw-`40?Ww%X%sAaGbwZ@j|& z9=g2MRxfM9pnOn>UJlpa;i(>*fR-Nxe(nni_5b-UxW-d6^**cqxYvXu->)8HoVU7` z-s_ARLo^%kXQ3?_oPVx+@AeckzK6O7t(4=l3pZ*ggnf70UKiy0a;>r=D*;ab1L=g(pD2~7t9*5o_fpdQ# zPv7pilwI!*=X7)q^ST)(alHe1m7=&+>*uMNt4w|LiuY4<7v~VXn3c4Lx^|QXKTp>U zevpvA_3?vHczSgAPSm3d^sZS%mCB`-6-sQcgK(9Sui%k<(xBQ9#!*uj0T2AmT`e%q>*LkQPMpDWQ4`~eDoz?@(UkZABe##{6uzfQF4Hn$l3rfIYE8@H4GxK(18$^EVCZ=4CFDEBfa{t6k6ntWs2HDMw5-YR~I& zJ}OBiOlTym+|PHSV0l7~PVpQB{UNzfUM5HQafdb#Y_$$H$O-x-P$ritq9EAM7*#o5 zYVjPJ^Ei-0D%76^0Y;MuzFS~$*BA2dI6tjVbTwpO&A#Z~Y{oj-m~S2YHo&73c@Xo7DcTizfu$o6Yi=+(xr@$zec^P%I4yhj0jXv zmOv7|ge-C&up!tG$e9R6l(-R-64^WC*HO#q{ueM5XfVnb1sY1pp#;Q;oc=0Wzyll6 zqlQA_o|&|TQfCX{5`0CY6X(}*FMZqH zJM}z8Dve6S%*_fWD~{OLFN5|wLSzB%1)eQ?JEn}6`2+pl$y2KulhQSq6{Ln})e^a3 zXF9aWMB>qWFEv%T5t3{drRww$^h`z#cnBfLJ6n{RCy1vcHGLyfU1a@>eUF&Q#J^>0 zze*A_UFDAMG68r?`e8$jSM1Nn5w|Y$Nc9VDyNwFjPU~hXS@@mK78_hbr60Fs&LIRr zq0%*jI|*n@6#1;+&J)SN%Sn?|0{S=Y_N(-3Mi&E?FC9rh*XzgRn*XGDqqn;Qra9#&YpG!R&Nfo+Qf09cijPr&1VI-Xyo%Llh_7CGr+?@r!i&5dsTAmh%9=d27W*)`kujga3s91jffVo+#=fVwcayk;F&J$)Ie22&>JlO?U%a#bwRld(HIxH`~FPuCW zC8@@88`n{q{GOABy)`uDq442yN;u8$`+(7ozLpscwh(%GqQc}SeSP|4TX-ZS#v%dD z-8M$V+w)PYM9>i$tGs52M7m72F{@FHMGKUW8Kz*+d5m32%A}X@plmMG#~lZ%us*5L zE&gQnVvA0!%9g@O&m_jhTK@VIsbIe6gN@Nh;(cvUa_f)rl6SpA{J<1i*UBt8VYY-hT z%h%h$zp=K4KcQ(YaO@)Z4-BjeGL6hjocflMX%8zy&Yr7PHK@OyUr&iJ;)9C?1D+x1Oz)F_8+0 z^RQy7QL+pwgjdn}cnJ6f-rd{HP+JT(etiT9N5r`oXSFJ2fHLn$Z#CA%1 z@YamY6IKnNE*E!^*WmlptY<`U5tYK9GwhW#Cz}x%)vp8okVz(nb{W=r$ZKoRZkx%?`L($y{`DKR#3?xR4D|kUzIY00tvz}EGp5Xc9Nb}^uxqse-vHt zX1IckD(@r^ z?sh1NK+1y|Isn93Z!-*~Sijzz>}C!?;SIhkB@P>+K^lKpc@#nfjLu2mB7(E(7|#~F z=NQTUXk5_<^`u73V!&@)Iq~>_?NYGP!=7iWQd@~KpK(6GXO^3kOM&aJx*rHg2XaH8 z%1$L6935OJ7fFDBr%mNzoGi?XhcUIiFfnQ zgJtGflwNnMcuLU?0=IL`xtIgCiX(q9+!?b1-Hp9BJHVBTWvRC$Ug9AWiI4*A$0fc# zZpJaAA+9ka2}qc$F~OrlBI3|SK!pL)$j?DJE$p(>UOTeK{8|86m}ZigM#*4trF{O5 zEh{W+a5v=EtUz8*t$4asbP%Jh4A}05)uD1f_z?n%1N)Vn7YPtpS|hUT1q0hZ6g3hC zfZHT)A1+ham1D6*5JuzW4kqrpdPk)y=>UQ}|3X?2Y7Qkd3Vch;UvgXHx~6aXbXheB z`8l{g*OY_aWjz(1)dsplC%84&?u1Vq^RV6cA*yXA(lL#c;TO1D``r#*sfN5*g~uWU z2itz_G9O=;>%RpkTz_w@HJyC%sE5P6(@acI2IfhNm=ziSrcLVR=xUSFk`t5Ns~Ozl z3jA+1i(2wWuG%QLlhvq0^wb-NWH+=lS0t%`I(9HQ?1F#j>76^n?n6HXTz3PoraB zLe`^L)MQ4@DB`Fz)i)NIsM#RzkPkdkY6Ui^H;y7(!T{t>LGdKf*3iyvJ8nL!C=Bf! zuNu3{KTufN0J2w%(la+U74l_2?hXDtu8U&edGHnRY41evgpSs{qEcMGRv@8$Q3NIn zWBDv(Dw_Kuws}l}e&rAp5V*0W#3z2Y%^lerjaee@s9r!}|4H9`dVPv6aVKnS0bfSA z$$)v24;+T}wr;j%WicYb1qCrY#`-`UZ2p>+2Id&SQyCl(K6~j~4RJ1xsx=j&N}q(d z*7uWY;7rece&p zq73u>2#2%Vby-+APF|TBDg3D;9$Fw3B$Bu*^g(c-N~-)|`1wiy$?x(1O+KR)ff(^f z>J$a03A)gRojbkyLgmC)ufyjpFp z@ectCQ#l8IAxRufiCIhOOOFCMy@SvmB9~oqL2jG78ZV=|EzTl_>v7ae|8E#&y*xc7 zcbfR-iQ?$T*gk*L*+BQBh(mF3UBxr=^gP-Kq#4n!qPzFmGZlCWVhRhBUC_A1fl+~J z0%X6&myr+@on9RyYM7fNNo2LFT1lxtPeXm2!|1Xi`ac{s$_FZgxz)*uzf=L|?f;_Z zbJTB1=9tlc3)yvIXl}JXf{K3`RufT7&9=Up!)VqClleY*PZ7LKv14Vyhbau<{@_{y zBd*}uNp`BG%MS|qTtG0dM~Lm@(Q)PEswdP+Dg4XI=wZ}5Te?D4$ z;rFkC?FD5t2(Ic8f$YzFww5k_;!mlTIzuH7PoOb zf$`V60RrLzqi&vj<$q8h|z%qX*pb4h%!8puanlx!XSy^-`-YV%9Rr(ex{wNWLa*8t07> z6)d$jB9Y7EvFs5Ea+V;^D%pJ{#n6mvN+tlXA|SL&($xbpIXO z8xh2!w1745a(U<|GRYBCxh!F*zsARRC1Cj8HeKq}rmkvR4}_NI-)LnvbU`v#pcL||;o|2U!ZL|0pKage(z>T%aca$+L zP$idEszUv(6~-r;H>l(2yCocsWLl)2AHH_l&vkQmmx2ny-ltmIS4a`>JDGz%c zT1w=y{@Q6B?|na4zjbbsd9YA8RPuQ|)SQf!9R9f+>xM^LF#diFq|nSue%xv{i4|m# z<)a>pfy5X2cK7Vb3FhL^g_k@}|06k!m7E!72l{TQi;*9PbM({xLN|bjBhF#JDKq&E zaT4YOO?6q4v5b(J4Pu5GaLCd}c?brx-YdteBeZY9d%R<`N{{|mmIla$zylVes3RLZ#D&FUn(f>ocpRu1NpVpu}>G_O5V>{xe)>Pw8HAEI`#$ho+A-|U(f2@dFG@gRXIdi z=@_#mY}sTUAJ5`Y51$N&k9+L?%%{HgRhjGv&@WsuvLxNMJg zILRn|%I!-+-P|b*I56DDPfrlY&^8xlG6SFMr?;ucu99!KJ z2gr>eQPW7M_s&IAoKEV=XA%KtR=&4m($kvv#(yJ6M0R0T0BVEca7)K(2Z%^YMCwQZ zHq<@fr8|8`H+#o?jA;qtDm!CDi#3?(mXt)_PW0?#i-~}X*#=48fGz)H|8|8wRRCe8 zIPPnz9sIH_7}y-pQ|w#+u|WufxW7ghT}THb_JkLbllzI_<;Rb?Fr`%KWe1W6c5ei% zAW79rP0C#qJ(s!wUQH|iSA&@fRj6QZ_3NWAk>+y*j34A+t4~5LXd&8La`VAUAxCl_ zfsk1*hS37;4;lA+(F5=(@>RG;^n*x;pgU$~jN{Lc zBv_r0@(IL-nu&Hwn82#C#6y^4p=|`jg>N+zIl1piG$D)Dm9a^55@c@;AcQEB_PqYO z!>v1T{~XlIp_rz)nbqG$=e2d%`#CtfT-XKLnvpnw`AhI03Y3H{C!BF)xEQ&F`lrH*=LW2wigN0ijTDgY97Q%Db|uCto*nw|MbV zFlq(wDiHt5D;)|XYF?YMCZi;+j<3E`4)tXCEwW}lo%7QB*Y*yn`r?@nJ=uNIqrgPu zc{(DJ2C3HNogvq0-mG}Cl9C53 zFefH1~mTBI$MnMCiqeod5o6`tK9>Y*6FXeAbS z8FOX)8MR`*lb8QPptsuz-0y5IfX>F{kzdHr#9>Aq_$54HU2Yo(fM?(2Xia$|7~w4< z9S~pCQ#L0=x()kq>Kj)JN1UX!EFr8j+;G{TAB@W;)8g^W4^{=>#biT?6Txgrqcmw@ zO?(8Beu?Vo(iRThB*a0sKn)eu$z@ASFvE9#qU1u^aNaLi;qq0RXfT^{-z>&mBx6YB z=(iqMCkCR!Z!G=oL&Lm|tx1HtmBG&gFj$EQ{O1?B3+GK_Z$mu>!ZN0G@nNavmO&bz z#8T?X56b$B6P#bAgTUZ@iKxPW>-NfsF>N(MCX?2dIznHX7(`lvkHmSFQ>YB%L3Y{* zt7r@p9;<8cdyfV56@yioyc0>=e=Q&g!c?&EQ?I?JIZZ=^zpxO(>#k-w$&8(w zBM7vllg9`Ij^>ZM%dVIVG6Yj&;zjP|amPKJ+>crr@)2&G9pioUw(D3js>fD}8GSFn z6{R!=@Pv0xP-SnaKi8=DDfd}gzul`L>{EcER3s8)Kq;>+z9x6>8?(;JfC(r<=ThV{ z4V}Jy1=9`=@@X|xAdK5EqekX+qIcCS>oImRXHZt2(`C6zCA*OS%dLGlF}B<=%J!%j z?(nWP-0b(_^S)>@k<`0toGko@r~1fn4DeBT9K!XdDcHq!clBulM@h41rQE)tul@N* z>qk0gnq~U}nIHFU`yx?izJeqFz=}i96((x20c}D@yiFNmtYL2fBMvUjD<+@fcORI& zs$)Altag=;DZx#Lk`2|MOSF_(bx}}?XmG?t7c@F9*I(Fi`$`Hq7E-z`%v1a7#) zKZyA7y|e}1J5+7d#uTsEZK`F^)vyiL5cc|4%JP+Fv*5&CEOl~?YS8%@8VlD|gndPa zW`ARa=RhU5xEAL3!niSdbG}j`$O1giNwj{FmE;TlFv@~n-p96)SaBM*yz@sAfIY^J z&NHAgwF3>A2m!NVSvCS#{36Lzmbf+srE{nl_Lv0~3y4M=LU*(TA8i&C6wZErs$zj$ zt(ME~t1#m|Jc}h(<5>1Y>ifdVARcz zSf6Xm>W(q?aHL^DY$zwPxcgXe-YPeM=|lo>szqIxiF;Di5FgqsI||}O#B1~5YpT53 z381a)aiJ=GwtI`^`9%91q{DI$t;R;tO^NMOLWvD6-ZUp@c2_QWCq|@D^X760-i)%t z-v?8G4#s3lWYBWnU@EW@n}X(6W$MLSGE?Z2rB>6oMJb@_eq(rTnFn-nN{TLDVMyqi zvmT)ba%N=BeAFdhFH+K0FS_^Q%W(Yu^(Zp{2<|{#HPvZiyadp7l)_M1tQo@+k-g?o z%1I=8LIhqttS7Y>z(w|~7+UHB97#fd6J6|Tot1Y>mB|^*_%;-Cr`eN=JS(=N$bl|# zd`YA3HwpQG}2SMd&(s2RsB z-x!g7l&0`H_2*g@7Gy@32cI;w5x@>ztIz1)`E2swqkL#{;9-6(n&{q6Qf%qM{A|Va)S7w~44Nqx4Q}JHm z8yp?lP~ws;T)?>;4lqLtPO!2&3@ND||2Y5m9gad!{9)57;C9h-_DZ`0cYmwU1uwLX-q+)V7B;-+bqw$MDZ{3URe;!kp!y}v zqX}&WyN~xf?~9QE8p*F8*o$dhIbHJemCS^y&TejqIYW|MF9aZs1de^wNi&&`rI)-a zv)^sjaF5K39SkzOBD+V|6OK0y6NXqU-#xPjhkA2|wo*hq-!z;Fe`SdqMu;aNB>7yy z>hcdXa6fY*b-_D7sT1hP9d=nc54*{A7E~NvSb~A}Y(=M*X3fW-(}D3N@l`sxv{x9p za#G^Tz>#TV>dypxiF2UAoN#bEhcv>Wp$qWO-%x`wb`+N8?yeb1_E~p*ep>{%Dl`s~ zPcjxZ`*ixuF7KCTIi@vs0~(O{22eCRtDk_1{o$XpryQ&DqYkfD=a@bqL1BE6OIC6# zY6P0Bc^WL6LJ>lR512lni$$A+ooLiuwO1X{P>M|}(7Jc=uY3}VM`zX^JXi^34^ZvAE4a>org{3Tj} zl9A5yH;H6tJtVPubN{eVTBVDWZ6{&Mb*F|dNWb^>`#gi|$=EpvooMbTtRp1WAJhnK z^wtJI@R9E5m2kgvpe6+!_iWJ`;sd*wz#hFVA!6mJmwikP#Ow=C=Mwrb9yAmcvBsnU zhBtaaPKIiALk|%y5Mn0s?<|JM(E)t=%NxtcHEXE{TpqC%c-~631Z9t8g^l^$^lfMXt{zhOsUYsW+03D zy~NRbc>vr2bm;dnOv8*9hcGSb5|rm-J%?ev&Q*Rw@* zjF0xM@OLQuauS0lllhVNchef7yLuHFGM6_`nRMy55slKtWq7zj*>zE-8FI%#DI!+jOz=$_0Q5qsfhhG zPx;970xd&X`b@6Ups|eKB#OYM%(Q*r1h*$5PZK81kh@)U-cbKbJO9u3n{Slj$?(L- zr%(AdjnG=qGhT?{U8X1P;=EOu5GCF43EqhZldug(L!!T$`U?=C=d_f8E7eB}3$Hu5 z)~*0sboF!wfyce=_zQLUrC5%3(=VF2x8S+kWY=qnuf?r>mt5^?l@FB|=05`W3@`u& zcm%e-V3yv$B%pWeY141#;`}9uaFukvU(Lm{;7Lxz`A(d~4~&@gHHbSqAkhDI+0d64 zd=7A6K(?*}GDL_U*Jc0mzDF36-){$@L#hdVXDXs_?>VxY57XhnJ!`i^YMsW71@*C2 z;6vXF0^k=6TzSaN$U(3?S2hMddL>|?C9iYMbQfFXt?Q7ad(qY#*NWg0x5YWrIGI26ZJp|Nf=7n=DG*QdDJzo(! z!V#SH7y1v_Q*L_wlNLnuEb#DoktF3*!X6B;QMv+Wl5sTRVq;7VsOJj#>xH%0|Z2i=pVK5J`G>Ea^?sju78!5~h z_?K&W4Qk&@<MVG7ySu5<9x1PXG+-sGF~T2-x_1!;o^KlQ zhmQmqgi%4kMqrKu8TfUTD-+hQF5Vs2Xrq$Ovu1x0PMDDbB>=F3|JWa#=j0fN9_i$8 z%N0aDLf&RcMmnRdmE3}_4dlsM_#(VWR*bz?$N-KS?Ahds=>E#92Ytm2=_O6RxXjd; zL;4pcr*1OH9i+y&oB644y)n5x3TWP59xXD3^ACDd8(H$)XXTzKNcxua-}Wy@B7^4Ol(^wXx>r z-S9NeBwVwC@RU#a2htE{f#hE>P2DTxu~@SMfOz;yRE&e=YD zg$|B~GtSy&e3_(SP48)P%5bQucICU3>C+!2k;?0K2Pr3D+9j?3ZxK2el}}z_5^8`* zuOK%u@L^gEHqf&`lPp(RLQL&FzK_Iy%N|cA55+;QdM7p0f|rfJuOfuHwg~;&+Lsup zhn-}_cIwYoA<%On8B)5o8aeC>u$y}-1%q|o(R*J*%@r3i@@LY!0lct1MR##S>mE6} z^QALse7zHb&o#2aXQ4>A;pQqitqZ;GSIEtBB=)!<)iDBl5_BYdaWr@pOW23P!@@e< z1FIrWJ+A<7h=qbn8W(<{(Zh=I{t6Xc2nOGnct$#(8>lYFk+1{(r>k|D-UlG2065k0d)~y6Lyq`~0B%eyOZY4e7Z zM?d4t-VItg48mE6wB{MDX9Use-N2PY%0 zAr@Pb{*t2s;Kn>T_cK5~6F3aA`tNOkb_iH!nmDE(v97~u#c0!EMyMdBG3AWmsjH8I zc{*jA&2j|(vv896dTb!f&0p%1MNR8Ib4)VsalS9DQKuVz=f}AQv9L2?J&A(Iao0AV zN5_5B4sYCxT11Zo$^{dZYxGm{-|OG7E;Pz=?;)i4zFsFV# zOw)3*ceu1i!2KZ^o9o(fjcKARWsTeOChT7X*K18Z>)nw$OCYz98?(So7BDm6j`yAMd3#1^r~LBE(Dv5f2IGjSPYdK` zI11^ZGTz$(ya9XU>`mX$ZpM~1aYC)zc=u|ci~%?7L)+;~c`9?~W0>u1ckFMnn^@8% zQkfZ{y;QLfOwW^25|gcDztAiD`Q`uqp$~zYBsBwe?zwk0&!c{Z4TO^~wrYQ6f2w5t z7i^#EPCS=u#RI&*Q(bgF!>z!gb1RwdS}So5Zvz+E+#5|Q&uGzWFTlO*g)#JpGSa=F z-+k_@{IcDfq{8K;&ThXZUw2pbnO5<D$zL1Z;yimJ}@}& zp+F$7<(kb1w2tbPQc9iFCOM4*jKi`mMPy{h5GuUjX(-YbCSWg;MMOTK>Vqr{C&4$s zKrz&C+2o)@6JPV5dtRw4KsaCdSDmIT90J%^qWiinap=kK=?F=3GsiI+;jWn!d)mJR zjF`rrqWcOUtZd#Zn2Iah3_y<#7&=u5w;o>0+f|bTsE_ZDwfz`<^27g13y71XzN`oJ zxciOKsdR0IHxcLj!x~l%WeW+Zd$%8gH1SH@J9s3&s!4~y{A_H$k@eOyY()ORq=H2Z zmyt(O@Q#C37>`TNL^#zCUF*2p-Xi1!?T(QA=>#CDk$FOm?dLNT7iH)ebVo-H4m`uz zHkQ1$Pa;1NMHN3*uQP^6;+SlH_yd*aPY!;sB$F(vj!2)5eSa)pbLwZl5^ui$@X3TVVw`rC1FSe(uQPdN zlCdh(4t5MX)z>3Gi@+s;?!WWL%vlQ#`O?&1*(c+t(fd(b1C=f@b{3|xU2`IUPX~R6 zk(^bUqEiS6j=cu#nn)NQYP(TjZ=45!>O5N&rBfsw7B$5!a?aSR1=#`ye`rh_ z1xl4&)4Ih{dRoh;NR>7VFD3mqw*+qI=Q~T7X+kY@43B%Xd)LI zN}OOH`bzrJY|z?#sG4$TNTb@8l+s*zq^O!&Ujb~Q5%Iy>t8lFyg z!1Th^tim8kq-*`0Qf0jber9BQIUE5GA#KBJ|#(js*gNm|q zmIdH5a49O(u+y&9;^4cY5_vInEafc$=SXsU>A0*tSTvg z2q*;N`~I4Wcog&Ki$y{zhEv4W5m^&0IKdGK&TS#u856g**LlDCXl!Uex2A|g|5;@f ztO}~N-;h(Z$qlCu|Ko?hY`zJ=EG(VWchm{ZexqVI2SGya5a+NcIy(c-@tnd#$9ZeF zuejxuPmn~L0UtF#ET3+A)PjFtW&%6E@bDCz!{q?wKK+!&UzhLBw}?;jzFL_=aS~rJs?a zu@PJ5d4CM=i%?*mAUcA>7EpF=N7FW+xzDx?Wt+w1l+E( zESPA$pQZRBB(dV9h#kJ5JuEM5I70`qe0IeXqOyL$mEwTLIc;majKv6Tgv7O9lK+~# z2#7)G0{B}1@jDg4F4uH*=&o;gmGxN+yL->h+uWy3INeho((G>otCE{ird(PlfdKzM z0Kf~3Hp1$tURDemxW?R3D|oI!xUG>h(<#UYv-gRN`pqT5cSfscE5l)L7MqNw7&m$G z(A@|%NlZ9KT2EAJSsH3 zr+VN_NQw9wdq`&ajC@6C!9z=^nUaC-CP-BR5!b zIhGY}rwE6rKl^JDbq`>>2|C;@W29L)v?EU?qI46SdTp)TzXG$yX*JnAKMe`^Zn7YT ze`G_PX=mv#8Yo*Cx4Z>=$$lE%BprMKtPUigWDo` zV{f%fo40vrS)f=_VN^OgUB`KK?+!m#lx+@wj~7|iWmyT|K}2NdDA<-qRm3nK~bhn$p)8^yChoJ{rCF1HvB zt7@-aSb%8FqY4aIELUQ@tChczZm`ER@ey9$6b$ScpdjIQB^BgRoQYXSAwi0A!;>Dk zj+tq*aZ2SYpg;~(kP;v6^{=mdHwcdnmV4YmPCj&A zB`4?rv*X+l44sx2wj;<$2b|IK)Vi!UvIk=Oowu7s z3{1!WqfHi()y?a07%Ka@u)Nptg8e>`3nEjn*T`(|EBnbFKv~YnKuBAfgW{c!87M_V zvILhr>c=|(w6T~@I$SDB0!HG!ieE!vy9lp{`!!K0TY4fg9NZmDvZEE=$_w|I$9&TD z`;_4qr7JEvlz>2T&#cojuV|)CVQ+_|HfL(UWio!@#4kR)( zwH={Aa0}gCg1{ks(Eab*bhSe6{)(wfMnNzdB)Zh{mJgMvTz>A739c;f&E=Hiq(^a^ znT01hUB3N)JS%%5F{a8=1%M|Vv*)5UoRo-sEKXkH(+U1l@}XlkZP=DOD66m3N_;FX zT9dd+kYsB=JXqUGyGzrNZ49S84L{sjjFPrB>L&scGM}$^$e{Kzkf+$QghwIeaif(n zJ_r3&;br28-*HbqgYtLT({Xk3#$`@B=7w=PQqVt5buqhY!GBUrlfu7#{kW@RyNrai z#KNK>S@4$PXm9%iiGo_fge(0?D|Q-)Q|;j`=BpbjGXdc!@{D1b$-JjmnS6o!s}9(K zy5dUUVq}k4clAY5lATWK9{HjxcT$6?atyn2bRe3PrC`}?6+N_3d)Q|<_&$*%3d@E(t5SD^Y z!Rx`_%1#QuCRy3s)$v;D_*Q&gc=K}UF#3s=ihz%0O2Uzq~KdfGF<5HMh)p|mu`i!?v=z4xdF(@WAWM`Wn4_#f~fD$Mnvyp9`gLqt-`GkhNB4t%8;d8QO|9g{}Z*KJY6SFqT=+ytt9OJMfXJkGXnQEsFzYy;)>i%`(o5q?cFfeFz z*oTqqr+mnd1?4^)t>CLyc$&pb5eOOpZ-6-m_9KOp8j^@k=ae-4aO^taSq--nu!t8M zzf9iT3qW4AP8*WRzT=+)A#Rv(8|$K&`z1j5?RUEl74+`P{;My~G}#FXVP@CYGWZGE zsL-&`8Y`wuURHA}n|N=DE!C{Z@!Eg0E7!>KpHF|v1nJ|}cy|B(j zNY4p{e;w$FmwRL;%~{Oz(^HB3XW<^th)de^FXdX)mmA z8=qIk_{J70hj+4DFf-6ahmRk7*wObc2m*XLHnG7Duu|MMZU9CiOPHPGIb0n z8p51KLhzB|_dC4&5gdjNnJWhUd}I8@ir}16{-If{ zgte1Ug`s4?NENW&TVDIdWwEr(ao&jr&3K4SgY7;0{Tu)6!pU0aHeP;LnT|8k7d6ZS3w0yVhN z;v>qm@0-613(Ep%zJ0(q=%VT7yCVR5NafG%hKFhnQUFN}rR`znJK)g#YCWZ%@Y2j`#O90Tnj*W#%3 zhHS5meu3;oB~|_~q1;46?EF2N;hl+cmxDlj_0g4Q0g`W)8P4JBWS$iC9=yNFEfA_W zc-mrAnqyQ%@2{84 zsIXAyBnX+v{&+9}Ppj@K2c|-$+{Q!@+N3KomixZtF?ZJ8fy>g62DMvRGkXZ5@^B|^RhK$xAlSH08&;R+tRpsr#6_S;OB#SPffdq@Um zQ%}?MrKGiT@ViIU{B6J4xr&_}$?tA;%UYa0mlXaJPsl%uwyS7}QkBehgc^NbaUrq+ zc4#KY^VmNE8Y-hC!|E9y{k_-1;bq2&6FWVWE7fQ^oJ$%Z3HglI)82A^WB7qv^n<*tbY!e|XJcBw*HCnK;iJcg(UQt%xbnn2M5b zSR&Wrv8g@w#;sg2LoOC%-%8z%Qou17&o3}>H(8~*^@L#&i$@_XoE%!9!sKs`bz({# zt>%fu5AnWMm-6t`-+nyhzx&3r-(9m%C{a+8lf+rNzH}RZx+VF*Z}FAY{s5u{*pWgf zDRpHwi|dzY3q9<43#dDu+(jjV`)~pp51v&78QrcIzrV?v=6PL(xEoMpDoH~b#v|@n zB#6P!txRR%3S!Rk2#dIv)DK%@rr2AX*2$_9g2K;PjbZ>3*oJ;LUVI!5}vtw}XcQW&&(jK|RGGF7vDt@W=qS$QzUbcz{Fvzlrv*lNbDS+?15B+SQL8t^TA!bH#1k1g`yK7Q%skOm5rq6NypX1IZ5P%*p}GNmXYMRx#z(9!;`u0+!F(!OIRBX-ybZNEgqd z8t2h|eM{0uAma$Ntx!!?VrrU-qC@#6h2s7t^!VF5^UjF$@8Zyno#K(`@A&+%_V=n9 zN}`D?OXv=8(J0OfU3d+xbRb=cOLZ>0c%Tf}0ul&6##<+wsNfz$5CXUzISVi6n_py~ z(2@sAxqiJ!0`Fp!d81R%IPtDh{P^&o4MO6l#124TaCWWnah2Z|O_qJ7z&K6@1+vT# zZu=PUX{Gkeh>6hasc5Xkx5o>E9I+%4G?>eYN0{co6;lh+*+^YTdaGE@oBErGolhNj zZlWedM=_W@Y)9@U0mL1|mm_o2Pbu5t*bPF{yllvS$roEY=fUzmvIG%OH?QKRxe|!?xaHzMbrP(q6787O zXa`NdNk@Fhx_S;0bl%2(;3b+MKu4PJ8>6ncE0>}wP)!{pc%BC_ZWhq&=mK}?Q{P`N~ z7C@r>r;l)Sp5DCePC@939}Y}UAvGC+PW7AaAo3RT<113<=eGfyAJDP`M0{s_;VcA! z@+YMeE2C;tgxYgFG4ZWcSp#xK6&q17$G-oo2no%VtPSVJAVJHqeb?G#Qa`q|vNPpi zs6>n*n-38O<N; z$@5la7{`4al9Zp&e1}^@6V)pTFGy{&X&H~=xH!AkQ*2Z6%A|2d7Gs>%(E=>v8R(t4 z)=(|{Lk=6Acj+orvH;%g8B5)-D)Z#$ZTK+;P9WZ@>97lvGCHgF3D8zacZ^3sF5uhB z^k0xv3ZlfejP&&(CuEEsWD7#~L~cr7Cd4!T$3gj(@dVlNeV5n|ZxD z%39jOk@_=_UyYMKLohhKxrbHsWB|#4slgA4D5(c39`H`drw>VY?Qck6G#vnKzba{{ z{wMQBv>m1?q%eb2lJvd2R9tKJfh-XS3cnWJsvUaQsi6=@`<(q$-{-PAQc;os)ER75 z@@f}J>?}Hxd%pM!d`uMf8o80qnQ|6`g#tPefp&xB{6%A*ucIPdz}`ibrSwdjY@aE3 z(AQS(+G#o<BPAhNgg==0`fO6mfCcUsBw|g(0_|;J5FhU zrp%EOFXK< z+u5#8W|g6s5)&~bz^rXR+dnaivirfyv;~cWa^Joa=;p?n4~+sVPK5Qd5)KQo6wZCd zTJi!ip65GA(478OFCnIQWXOj8iaPomN@!nMKXisVk2c$8Yd@F5{fL_v?#N05}fg0)Y0$v&5E~v!f5G7kabM zQJ{;cl4fJNiSvf#GxLJS+Ai|7Z7@guVRz{dS;QzTbQeI8c2PV8(-K%Q(8qbLS173jTp;;k2U#AZ5{C)4C!R6gzAEG1;|80A&Dtz0?gWvGlVUF}PTH`>kT4Ca*jXZGx z+hKiXogBwLHoSc}jDN4?AwTH+2W^y@G=4Q3qFG&Qv_j zA1G#+LQDl*DGR?IR7YuF7|%@#?lVj-{w8GM%-=EhK*!n;&mWd(ga~&Kq=a<1Exur* z1_dj>_oszVx~tM?1*MAduws|fDNzSX(yl)o~Fzi$4a7`4zJU0azGwDjlAPnA<7{%GU35bf^I0?H))r)53Os4 znrLtb^$dS~-bpNqVu_>0Rh1*?5^7g^p1TVf6mTovDFPS05~xb zSwd6U>qtA^Cy9Y|A?{G4En4$9Kha^6^JRPrdXfEE)L&X^BO<$=DM5`Jt{Jw8S}B9o zAw>|BNbqK%)c9-o%s+SA#KIG25~-wx+9NLs&Z7CePQEa9N-pJOqU8 zZogGECtHM+R_p6P>wtGE-s_B>L=Z9)X4v2_I}&E!q740NhQe6iLBnjNBV-YBsO}z| z4T7_1MO>%8u*F4&|3Aq7ntB>I3JuL>W{2Nxkfnq#neUi+VQd0Yq{6r@i%P2D1@*7r zUU`Xq#Nl^ofY795_0#mLDIs}ML<##v~;t3r) zjeOI&GgocXeFqz?Z(P;4G_@UUKc4`vZ61Y8ca+1XK$6BFp9{=;c*)<38-gE-8r3_G zW;f0Hx{*P(DPQ*Wxsi`JE8i5>a*~wmPO|Q@4VU$JdNLieY{o`SJQ;C%>;Ot?!InMt zEjFNp4;w7YvPB%>>IQL`ib1ZkzB#~xHr5LzErxXo$ch2)CX+V-=4Jo&G%%0KL7@4n zy-g_QuPdB$>KSu_$@%Wd#0l>_NNEt1%ov=>T||Ty`Vffqn=B$E;7S|$6_t@vj@IiZc^U{L*J{7ykQ;WxQeVoZd+UTFsoE^&BDmq{X(=J? zxNP%cD3FlllkiYfJj~^2Tt&_XjRIY>DwZvYO6VEk)@&X^gk@T<_>4A=XhEL{k?#%u zI6`0)g&0tOaE%x*SvW>5LKGjhfCZ=z;ii0wBqo0V%F)fIIzd#tg6~w*+Bu?g>-~K` zSWgb~?gEN2auhE$L(&So5#L;*NmDR;xByB3=Lzy%R$P`Ow2_D|X>fT*liW+Gy-1@* zuT=4!e?-Q4FkD=Wa7wU{4Gskh7!U6*d$u=T$>tgiBwYp>6yuRtfQk;*T-`ar2R{W#5(3bEGT?0;lgIG;?w%TU1f}Pbf zmUjiKuuuuJZF)6+m9~SGzzhT2h+q$|hW6Q)$nvw{FSGk9JKZkLeu5I6$4IoHIp@*5 z6J_|Hnh^Sm!v-uA{Cp6M23QAWf|p!Pxuvc*4m)I;|K{UU8z+zqRCfr^2e^ayknwl* zGz`n)UwDnaQ&1#d5C$^q%0?%)UXh!?Vba^aWdoa|A{0umhNF|yE0Q`!nap(q0^H9! zV%+IdN~_~zNXJoXZNN4&ow)An+-%< zZ>$C95->8sfNRV0aQkW*%FOcAy9izEauM7Hn&mnsFaGUv+z9!=Ab`d4BN$k0slCdW zWI}S)ZZq9&?{V5k6SjG(0#H>i&h@~gR@|5-8ScrMRa=_aZmJ`{c2bIdu|W5$UIedG zn@C11Es5d=);2{>gQk?fT4#doq%a=v$8dkVo*IO0?eTy-6l9Kay*zneM8je?cZ1+! z2rm;h3C+BFeQ^>;MRKr?@~YdO@=QQQX8)bwTYNZBSW#dA{tHj>qo5XlBgu{GzDLOx zykv!HAO+#2f5P51#;OPw+@ov~6LnAv29e-9l`c@5WGzYkT|$%mzvNdg|E{IHWk*oy zQ{(~KDm@7*{V{xxT|O)Fi8tZ2&Dd!iBgegRvH?cc>$uoEvzesFwlqVtjE^MxwuDXB zfjSJLq5Iw?z^Tdwc1K>bVS#63O|I5=EXWaSGG_;PfU-6xs4I3EEl8DRAo+EP5Ig8P zK`W|np(oML<0vbcrrhz>INn{_>#9{rNaIZj@XI!F2ZtRzaH>io-lR>WO}0!zMVX=Y z3LA2rZB$-#(zr3Nw~DfTH&`JRw$0fdQCvge`Kib;7hA!7ez!+@3;l;;b`jzhu*40QtUx zOT&MOq(1_j5k(aUqNyd{s9`z`O#pEpZXcz2@i{DF57Dfc{Jdk@{xc0kVFZM9g^;0p z*Gy*bJ;Fer3(>#j!1IneV+x4Qa^qr6N|9>$R%^F#eV%}d1<&HDx~LMF_wmAq0?8vU zeAqyrfgm}zemI6qOwWYvs2rZ(;eQ*}S1Jf>%?oJL1|$cOjo z?5QzBSj;Ii&WiaYPG(h4JV&GVcd4K1P!y-C}<0`vTD zzVfhWsq<*u7&GAREp4PI(%J!NTkf?dq9>n6zsQp62IZZ$-&>&{cLz33#V&?0mTOok zF1{;_#RkauUgC2Uaibdqi3h_LZ5{~Et5CUM8PjWymwFtBf2d*TFNjw)|7n~F;g=1SIqfmFoX(^s)_0-G4 z3A1@h><&ip=W#@P!oPbYa%gp{<4-uwx&c*&q#8OldE-t_UFbnxNFtr)LjPhxqT3Ntko^paq}4urP-f3)EIT#dzht|m zo*WmDYqKTZmrEulOb4*%0)`I=(46COt@y?fzMDRyC2n;&)EUdhePd>bsa5OUGB%G8 z+Il#xc=Lg%bo*+NVp-^4{=z~tTu-uYk-N1Z_z55~R$(g$mUxuPefF653BY%o>GcA4 z{QX=L?S+!FE|)u}6ZZQpem{(3;ALTu%j7opw?X+*nk3!U-?D}Rjx1V;F5m_Sh-i4* zYshnhO3ZsOH&nc8aaYuTl>Ipc=y`vhezb}9v^0a(<<=&vpTUd0rk~a!Yb$VKd_{_N z@@+1X(O4hTKjN5_qPhd6z>I{?*nP_V0wNkPRSGWF>b5SJ7w^~LPi*b3nj@hpKoIAn zG)s7eOSA3s{!2Cmwi@XF5nXWJ>URw9qauqYoGf%9sC*5~pO($DD(!%;sqDXq>iI1l z)E@t>IzjP{XJkTz9@6C)fqae1)rj8^)zG(aV*1;np7_juWucbIb81{Ll}_!ogO6TA zVS45`z9d>IqVL#EZQn+*YgIw8KG=ePS9NK*lLK(bq)oMa!PSbjqa!}lmS!=Sf8Y8v z&JW}kmKJF6lyth|B;=Ebq#*o{{}rJ(1|3hM?go4Esz^(xH4L$zn1~k)Zh6Y&zI{iM z)p35C>yGt67a89R^6&~@&{TQ(s&Td8NRg7VuY$MG=@*N`#3Qar^#9|H3619c@azQE zbOCO4V!c73Ky~K;g3h`KuV(E{af&*}^8Jd240FCO;7X!E4GZWD$YT1%LCnI~)uUhd z`PZ#uK(&4r4CPL@{aQ(Udo?#Q`8zDpoz&%5;4@B>r=KjGO4g@o`>&D3YIfO@_lC$B zHA8UJ0`roUwa0p3y15BtVG2Q+Dc1tCE&gZI#2+bu{atA|Pk%E=rR#!=a`O{K|AxW(+*rPMPL82*$IEs3*nbVAuoylO<9QphkbT&{i z`RjL>FQ!w~)c0NgayruLF}~`=Nwyus-Km94*B*d$lk2Gh<^|hxn5eW|^4GYrK31S> z%YZE9Hp3YfXwqP}^`rd9>cVoNBQBU7Q6SKhrdS%WCxdJN1gu(GPhp@1AlHLWZz+=1 z+b9`91r=8EY*C+dx{F(3dQo`T{;j!xsU9DHT7UT^S}VUu58(`k4q+a+@}UONYoyh< zk+R+lMdim_m}5W-RNQ^vJ-1=f!oNV#kq!_wavnJXN$Mrv0p($|feF@jd+J29$80|LN?80NUIpyuWJ5t16&gx zoevtQEx6UZ#|Lg|@Yny0Y$^?I*AWgSB{n00Ti#aLfZm*p%zG6@6ym2Mu6ll@!vmHe zf@g2=kF-TNY|NR{%Ptp{Ka*M18APpEp?scr?Q9S8necUQqqAC6+ZGILx`UZZx2N>p zKEAJ8HD!r1)m&tbGgPEWHXw!;)_wPC8VafrxUg==rP_ztZdU%;2dzGJ$z>en?KD=& z`^g_C9v_a7IDID-xU4qj#T?JPeX2oj5;1YYNberL#3ooSjI9&KnSN- z`}EWl!7J>ggM^JBs(UfSt#moN4pvnt$qnkJRqwUfg@OhVssH+P0l{L1HbHf;)=c)526W($+K9|H;_TL&+R7!v4Oz?M2e1WAk zNFv&L9}?tux%e|x7Zdpx!fz~=v;f)vN3P$I`S^bI6pfom?1n64c7|UXUgc`QHC}Bx z^O$2&vgWSH-Bk5R#0`#Q%LCd4zjYJf0wq(g65N33j3lBkb;|ft-O6vE7Xw(sty7fj zql|h4)qSiwuqf* zVsg*v?F$iB1ioz^E<-KU++@RH^_6B{HUyj2OlNZVV0wY7nP(Eqr(ql&s^{C}W~iOG z7}9aA_S8SpP1QFpzL-cfZb#tMJeQ+*SuPFuS8SoAwvR_+7rVLOM^8nI7@iAD<@VE6 z$Wl^vMH<&Nrpr0fd$PlZ1%5wRk1k7RCOeOq;u5-j?%nDd&C$(5Liv+&>&xG-Qu)8&AN-myUTUWqi}%yz)1)dN zEbqDW5H8!f>Xr3dA@{p{d$k?@;T@BFw+kXlSDeUhPg1wmTAP21@qQlS)t7<6kwLAf zrKUvQG%xGHjIH2^lh27FP8B&9it(0=l2qPL3x2U;c2U^*3RaKH$lNwKNsDL_C@M z%VRYUtCx6Ig z!l~+=r$@%{!@G--H%AQV6ff198>*~9&fby)8!R(-c8T*ffWQ$h%r~J+XG^qY2jI{A z&YIQxCa=sXz=b)JrW(QAP2s@7N16)LAHu{eM9`0f*y*reIBGc z8@iF`&7W_4F%xsXl2fwz(U`1uapZJ4NVlLK+|ozCR^IWist<()fe`xMZOUi{>0N z7TdQv=y=>jAkQ(?k5Ck=#-SxIH^tZrRNh|%k##G7w0<-hC~7vp?ROo<>){bsRuPXK z?&N0J;prl!c!5cg*;?H>RluRNq#mw#Arey#6~Wk44#ngyQDe2f+pTQsy*G8WPkZ!S zehL(%|Jt2+7N%d~7;RolXmQ&$QF*1PAM!`uOcm8R1XVnlf56%0YGD4HTA(=|dN&(Y z@WKKu#hZN?LR$$iFFAJ4jgKGM4PVBmm4mIQ!a)p-%4}?>3^#Hr71Z$nv+Qm=yeuVc ziC&;N4p$xZdT?|_@wvA?jIZCc;7m^NlK@%Ek!MgrRoPRJ5M-k%g{pzn^p-CtcvjC~ zOcQT)TSZ9Hl6+J$S3^e>Vr(-Gf0c~Z>FLhL0#B^Yd*r3YUW*=czc=SERo;p$Ujuu{ z;;%w38_oL#hh3X60G-G>Tk8U}s6MI16&*q0C@=QBxo%7za1I2crBWPbYsW3{dXWVKe6)n^2CF=xd!rYI`ho=2sTUa3%4<7 z2Y~f_!I?8P7_&_dxxnm_&IC< z2iajn{-#gSBD+)MfJ?&zdMY0Ef%fMGLiC5KV53hPmux3EAZ-a2%g92ycTFRSkk9o{ z92uSc#!B$kCFYjS4`}>!j^82?^wqbN-mw*w1gf_5ZKi!TK7%BMqv$qY+jTu1|6l4R zwo@Tu_e}vP3Sr}VsE$M_hQM8Zy>P+llLS3M5Hz~c1P!6r;YP&wkO>X%=>Lh$Vl<8! zTGvuv>QQp-vGy6xK50y_8n%n=p2FSA`2qxv+Y^!nSN*AvmDQ4EfjUm!p4kg1C2)~mYOSz+#u>}G!?r`|%hvlnHNgmJF=r+dI+V7LtI>*d(s>%nJwSY<+x+rl$V=KkxR! z*|JeI+gk#A4IJq^WIsNpcyhb9ud~6ryo&FxGyYDfj-q;?=PquWjp?27WCa*22!i;; zXY7fBfB*dBL2t5pz{1OkaFf2eA+QOdYt>$RtlOE=@hHHWO z-J{jC#;u(awvJhTa)X^DJKO}zAn5nDI-6Q)YGG3N@8izPK+;Zbhf1uxyeX#C^jR?Q zx!PEUD0y5g(fZ8>OAWG^#QxBSztVll@h=(P@pdg~kM`d6v;2QXRjBJ1)@^d8kv>F~ z5$25VBi|U!deSyo7~B`Otq{CmC>4qIDfG5-1HVocCo^t&PKbJeJ1T|4+lv*x`HhlXp( z6Cltnu#yADrN3CJ5)6+0Tj1Ga88M=|qVQBb{e&hc!1!y+McO}^%iqesK&>#Hb(yO(-E~f9<&bGxZKoxpk=dom? z$OZ%cliCt&vRB7T^lx}p>WXu|@pSHo2OZ>oLF%K>3z(@sn)nl!(}0Ujrr^uycHTW9 z7FAO(VHoO37~dW!ErHcyx2+|T2tf;=Id#5UAcKrg&9HdonM2)6PI0BfYB5^=R5+wX zydFW4Bg{w1y`X3bf<}n6MIkhoCqN8Pe4@x&!E82tPlG==`V`cVoRdY?!I9bw(MK2h z;K$3=Cz}TuIh=PYhzD#A_pQ_)q}m_m$<_ZO(|g`y&)|z`Pu_qM=c1}rhjD|1w0m#` zxf?sangd@=24N4F7XUcf=QBkHB%<~$k0s*CdE{(>F4Jy;%NAm zYl`O_1)gD*Id1%JCT5GL$RniDlWt-Ly{dGZA?*}MRBF2(YVlfFNMOW`>Bt>>!~|2Ifa|+j3i1T#KeWxR)a3@4PlhILzpU8@`%MNT zZ<}+w-Y=#Fl*Rf3nChxoXb2ZuQ2P*H^?VMPHjFs8(f~rLhEW(>Z;46EEyuH{D;Sph z7xtKpehUpJt=UocGagk7NDd$zlf+BFKb|#@Ud*)d*Ud<4YdtY$l^G9eQGl#&D&|CQHZ@$OyG)FeTTz@0;_CTH?dba|q31F25$D=N9-klpOc+VV7xAMQ zW87mt4_n=8G;FG}KWCJ`7Rsy&1Vi}ql~!KkOWa;tRh?%T{d(OI_|sVv$h~}>QI(tK zlid6B=xFc2a71;Y4-P-p8jn;!b1;8SvXnqAxP30ACeF3;R0(`OZN9q}`llZkny@Lj zsk1=FLgCfqt39D_@wz)!(?iZWar^ zlx>{Ejd6|e@_xe@|y6@Jr}l!k6**upc-thV*?2YEueX|jBu z+R%HQyCAWGv@kDRmW>DDdY>MsA$tmnRtnnCM3g?*fPg3{^kEAk^Os9IU1tM6K7+rw zhnLdOjD1-|4J9v5Squ}_40vax94&NbLssrWe$9>=LB#^`ufK{cvH+hHSo^9f<~zL` z2#&Sh)l`L~<=g;$YlT5U2x~h;_~#@Ah+du{EIdwu5E2Bq)=dZo4RP4{JKsfywz&dO zele+HjK?u5P5KRm*Y0f12JbW+M&D_tLDHF)iZw&=o8Ysv)vxq>S`#y9J>3!# zNM`a-1Q=bmC9dtiFmpL&QE#_7HG1Ywi18`xaaYi%1=?si=kMw7{;jlI#~@Xl7i zUvqGerEGEkT+|^<3k5Ev#Qpc&IeFHD~%8o_M9a9>XtA3ocI8KM8bd zaF&uv0*8@+7X3inQ>2W3oufG|u4heSKT46+G_}qq;>yVg?NGO_bV*0A{9!GCC2djW zAL(B;A)&~Jk2XL2&$T|8c8fCblaWY9eWHz&P$?edC>mOwru^Ub4#ENPzY?*(Kz)K; z=NYNtTSCSx6flJr1T5PTovPJB` zo+$YU&_6CXmAr_WJp(UWNiJj>2Qs|dcX0NRc{X29`K}uq+nkryhLy#AltK^XBOCrFP1d&?XR72m!vbt?+mGXtK4GE%KV^ryT##R!RI z1<{SIon0Ur4Knava3zGgVdy8T-8eo)KC=aMtGu+ID;&TUfzTjA1PVLZT`zp++ETTpx1CaSv1oG>!iGGd9*rVTnILVaP$G3(Y(c` z%mIF&E;fhGfLyA=G|J6MH;8fO_~wx5WBtsDt}?u{Fx?ORkqh9@*oXifueZvhK%ZQa z`J)s$M;`Y1sXK9KltRizkH^wXVBtdz1P^ByfEab23&{;+RktZr`Zh>pxt^GZJOgG*~_{sZhmS)q4GxvXAjtaiK^~*osz@@xMsVN;Vi1 zK>FJI@zP>K(|$HI^G^R^A%jbcQ`uk&3XEJh1^V3?tfAB4;jjNLMKz#lV0RttZltjh zrUJ&UDk+m9pvNy<%v!gK2~3=Y9&`l>-YdoIa+pi6aAf8~l9^_m-|u5%%-dfU(Ukiw zGiav{c(RUd6Zvu<6VJ^E2`^y75 zoJ?{TahX~B`zKUn;llomF$tz`^}9i9^B03#;Lg1f>N`8Zj<%rA*nAtW`)4cldODO( zShqH%D$Im}04J_aMHt6KCnez(G3bc%uxokTHyTUiUvlh(XfTLO9)U^hcRa^f2)J>S z#A&uReo#xkRuf;woUaL)QyYGl4M`m62e;)*1Q^B~^(fWu7F_Q6Fn|ymM2Lu>MMo66 z@Zj{%lftRy>VR|J7i~_K!2=lB(L@`PWzh~p0|4~ZXphEWioJLNC}Bi0sgobJj8=1L z^K!@#p#6%8nBb1Ix-9-6is;j5a2i9*sq$u4enJ@{r4$j$+`N2nQeQic$r~9^VQ+2s z+NWaIFv30xcCN|@OZ-$2f2OL^uY$_WZUm-|{UihB%f(>`$1!D`a5&S$Sj~z0vlere}N=I%HyN%jDnfXu@r6cr&Ko-=nx>k8$Q4g?I>Pt>*#~@nc!geB&9fT&< zm;IA*sixzT;Q}hGv?N(pUQL9Ff1&})C=YVW``rONmbvj9oezUt@+RC4yr5ISqOnjR zUbBoG#~Fai%rY7mR}sE&aqm`*26bW7hy7&2v2^Gf^S@GT=+~a05#N_*uJHid*J zy9Rz#DF5}+bJ?UI5XVqcacNR|49`>YrG8F}_WQO|8LL>g&v(0{*37u72yY2PVQw&o6g|{HAMbLqE zCfSDA&oRt#%;O7lzvj%EP&=}FayK(F?)-?k9k@Y!>k3s?oePQzg8N?)nZkY@eQvZrF1NJv6jh>awxm#wZy%@d>Me z+r0)=AZ2q8QGVyW@sS$8kWiWc8pBlQw`ff=+OkQ>Aksb;56?DW+UbeGMWh$ zFWQ>Me`4iP(rhxw5Z0ATL-pXCD}4lp;YY38d9=7PA-XG@e#M4!Hm9E&w%94tU zpP>B^IdWDo;Bi=jHR4*C)PBA5MTc;|Gm2|m4jcsH1*#0u_ujZ%N>5PHL2VM`A3~T| zSLjKRXn~OHv|eN@<7^`~-9swRIu@UmJuNVDnlDGY|eANUfg~{h=f6X0)GaTC0|EZXNvjW3vg;pSU3?|0? zsl1)57axzO5Y%fDw;GIf&?whU`kYHO4BS4{EeBrc6p=(xkTSPbC6kkN|p) zf7LbbR=Fd1sEin$L0BA^yY3j+5$HuzsJfjs*)w5n{cu`^UODb6f+-Nxno1!Uqy(Rx zI^;F@?j0~oLXy|=hU@53#yw{l>oct5=#OsgXERVAG>u7s^)dFXbM^MJJP8#bf#MUB zG&N&=;yP;IT+b{9nU5&qh)J8x+Owp|CJSfV9xHp^i&M?2ZjBpMA$2I{2EDTsrB?+X z=@BJHyQtpG0N*)sZ=Q6hSc&kAy11F3f%9AC8+t^`Ltvo9&Id@te_)i*)>d)nEOY`6 z{0ZQ+&}54Hz%1Dd(%|hG4$p*`&X*Y)R##)Xi|cAnIlJRDg%c%6wzK8;_HK$#-+~aB z4~n8P2sA8@Hc~WRh(s#0DuMux)GhwfR;p~wKsx(>b<2V~pRAC| zPDIo9I=!t3M1ak%k;-4gK;xZ+rvPhYjt8f_!C-MKd^2o}Y;G-{u9+v;8^zGVRd*Nm zBgcu?S3XLu<*kPl!}uxQ3&px@w_PG)I~eiOWn}27?J&WREO43%BnAxZ#865XX!)3^ z#=^BK&3uAkQhjq;dCNH|Ps3>KrTEDWR2&;uqgeZ zO5Aw$$WTH)Mp=A4GD+81%y3m^HcT7{7xwnGw6^MUV?CTC?Ea zGT0O`w-y1lMa`_J@vfUo>pl@H-jCj18GgwJ=N zl*xk9Vs(Ak)v^M$$o{*>vvy!d#Zl;Hvn)a-(qiQ5Ut{C7yfo}zWs{NyxmoS=Xz@fZ zbDz@Cn9+&DTfJeUUnr<|s$wztJSM$DV57;hyOh@;k@kYDavsmz+JfMvt=YzzRfYX|HeRZka~nvG-8=&O@!8_ zGZ<1u86gKb2^b2_-PwUAy^1T`M^dD{SU%O2sZl%)Qw_H%gS6FI6=Ht)=HCqmc*VPH z7ZeFj4#~2JQSY65m9X9MA~noS|HF51XL2QTG_o$od3%)~55fJ%#DOe50u47voor_@ z$kCfU#>7QTsJn8m&vF&ERbxF7jOF{nQY)sWBX{E}01DvVDUtIt&r?F#+X!Q0Pz1&3 z87Iq{*QzF+EaH)nZ=O-&)h`ZFWM}!SdAm+x)yni8>2R8Js3iF4MEgVoUD_B)@G;Tv zVk*1+;;T<$6|$`3g{OziKFK&7F!edL14@U2y-lvw380Hox5I_%3pAE?gv_#%HT`khP?bI9FNyZL z8s(B@aNuG?M_l)H@$@NTrhuIo%}J)__`YsE1xUbNdl%eNVq=8v-0#%~n!yIYwg}6H zedH2m3Ei>n6A}(-v!sc?A_eg*5Mt8dA+gR3v|no>>2ZmclKQTRlPN(tYeXZfi1xke z4!63j$9mbP6%_}9G=rVR+?axGA*78D$X9v(spMeRwb|ORB zBA_gQQNd@#&!CC-5l{kJ32Ns>Rv>wUEdO@BvtfOk{7g>1oEb<57Fpic&5tRh$UGYE zc%r)!M>!k}x)w3ay?;lE+=foFvgxdz-=v}zZ@IGodNYe|Cy{ABkMLpfdIScH85t#` z=q#U@nB}@sUE5^%=xkyli#x9-CV22K%yGsiHxPmQrGe$=>UAH|oPq$^2uvwwx`{ac zVSIaOp&dLL2yG`-J`>^`euTl^WXl@?hwpKEmikgEju5rzq1%$eXG}UKl86~W2K?zJ z+qAm(Nd2i-hXfgRN}mPE&@Dh;vR=lF)$#GbtpwG2tU$mXUz&!z%EXESC!>XBLqnX6 zCfSHLO95M`r0{@N#7pqzsme9JE&Q&a#kvH2^eWt++o*N@>c0a-BBBsaZ%lQLLaXYS zn{r&rpc_14M;-I9c`&JSDz=<|#JRw}(8nTX)MRcL+d3`?G6?uA8izu`D3d{YIqw)b zRD?>G&a@L1^hCZ5)EmP)b>Mi>2Z(nMFnBbpLjeXwhjo)SpCifI!jEuj2F=K_ z|Hq`V1``jvc>I=U=#YXO3*kSYLQ!O5YD+506N3#Rz{K_2gyZG>;`DqESL$(z|3P;& zNUsWPd#__lGB_h3CCcv!E!UWgKbrnUQ5rjQsQ+IQ__ zRMJ_3)luJ(m)M<^_J5OBR*OS@F1K}_|_o(lM^N%UU z{Fip{n5uP_K?+4*$ycp3Owe#}h+!3`X+71Y;QevK1{um{KJYF^Kc4ksVxch%==6<}nPx9->a1jP?tJoki&Rs+T2CZ3? zPdapFM1N*+^?lyEL~vPQTdsFCWrE{#3KRpPS&^iM0Ptv@77QCBsrM2dR+G#+`wk^< zcf+5xu_H;@C+C^d2*jz|dxiXhQ1hL{RfKZmiVjvfs=Aw4Qshz^8_AXDGlZ;qMDK5- z-LjmEGt3f6cujNGjHqZ$mEMtzE&DlB3PU)@%(Wy9oKQb?_0Abl_xC|l(;gG>W?}$b zlqfoxhWC8)d!k1IdeS-zM#3{`iBP4SA_DjTlUp@8%^DVD-p}2~>Nho`&cIpUI*B&% zi3;gkTyf3cC*yJjWE@lfbudv&GHr^Lj5`G6nZ@B#uyt`mYKKww0eG4dICnrh5>H}2 zMoUbmc=&~ZADS^m-==$P$6s9;ETIx*olcVCl6ec)8 zy?D8t!@1LlRPv|d^ypy-G14z?U2+boP6({_&GbRFyq`0<)0Sy<>=IaU1COf7j7v#t zkp#*geV)cI>h1g~)!{yv1w+&MEIX#YbhPDS;37Mgx-CjfrW-MmTT{}4qLWj5cWI6e zi8Y(-(w+b)CP0B=alP7RXbvY@Yf;sKk6D+&T~?!m^;#Uwa;7+s@Hojh&GueGX1L#w!oF_~yHX}8xBzXKY^8&cuMQ_t zfV7nuj|{`}q7npt>*p+Ejp`GQ1?6_M`townnCjkaKmHZy@3H8b!FsDGUV|fa6`Olq zAOp5J@OC)LHU^tB{;6ZSw@cZ3xn$)oO|2+(ulGWN0rmQv_RJ=GbY>oV-tvS#^IsIH zd;KwPW;+E}dUeMm5?}r8w((Jj+undAgv-5>LJ zA-;Q}0TXDre!6Hhf#aSX?!fHPa)xH6Zd>TDJ|OcDsJKO48!*6&ByUZXpZk4Sd8#ce z96h3|nYdW25{y>(>XTY%=#@zyqT(Y`SQ!Pbiu*)Y>@_yFK9217;YC4^coRhfjikDg zwplO(3^);Yh3${J=!Ad~mja>B=!WyI?8zl=4nP#Ep1Npr=PDpZxB@_920Np*tOfs5Y!A~oMeH?p!#>^QPxY|oETo;W(89w%`=soheY z>E|cgcuY*KSfHwCPs+NoM>l&Yr$LYcDQnj*`R#mo!!p()Hql|PTv{%>J|6qaC%Pj6 zKj(WzRo*{r&j-*3(&VVYD(Z7#DE}rMl;(Y`RK|n=pH@0wL0I(s13734&dKZ(h|Smn zxVs5IDi9d0Z^UtljdFcb*7ro|4wDg1kGEivN8y@9y+}pVEeB()>lljFWMe95e4!{O z+G+j^{W0^dN8oV~9D*&#jZ7u6j;fYe90TkgJ^{Wzr;=3mkRh$4r$Q8-DQ-DSH5zst z9#KKqNpyue)4ylcp9_l93oU@Vr~Jdzdj0*`7u|6V)T*LAn(%Tv58PXY3~>S{J-o_m zS`3X;;b@d%;{;<-b;^pVZVim@8d||>#Lv!b`}B6W=7Q0pV9xyGCZlYCs_oGo($>dJ zH~n~gy84cwM@V0T{&52S^_UoWtV!e4PvWfNINNdzh*}7Y{Cd=T1F4~fot9P6OVVoM z2$@L^b}~`u;Yl8){6!bhpcyDFOpMyF3d4(z%o@xu!XJyAy`5lf6rNEo@B4`ycf~gm zr-Maooh1gCUrKl+%67MVRNZ*1sU?2nR9iSck4XU#~YLD2u6|T{tjLsL_Nhi z9_&xxgHG&29C9voq!}2r5p$tRKRfN`G7T22-2UDFEdprYMX7(|V>|zDE7d(`7rBQZ zI}3)2p{xnY<^Z3Sp6R^k8VjWx2rY9*3vhi2V~T4D^f4{qF>vu$GHQO3HWy4G`8zSUrzJRyc2d3MZrlrd{ftvdW@}pmUr^!R4!-Ss zhXe}rQM*WKwcUaj)M$66@i_Hi*WPd4#5#Nw+&YRbKBCFN1UGK1QpPEVvU`k2AxeqU zUl=)1Q!jWJNakrZ=2;()(#4S(%99e|JCb|#2%(bfjIiMp&MdFyKpbpp}xkGF18%% zdPy`dyljLJ^AF63Y|jWf_vu3r$_?k`ClCS9Dz;F7_?j zigpOa%B1yxg<0sgsw};P!SuzsNFpJ@`Q?v^AQqnV#no|bOQxDh!9lg5y1zIdiKjiDm zZ@PngDsl%>m1t*a8upSt?6+}QCJR33%{7#$s)`f9elXca;n(mU$)&7z>=hzipW4Ry%gv!leObyi} zq2A3!3Z&)Q8ouo*i!wbYKfJ{}m+#|Yks930PM^v%`4Ga3lkD-TQ?+=5pe%<2+a2Po znHLMZM2})Lz@6h+YipV|@$R=y{G?>W#)$ZO9{pvUF8D#*<* zP9hEunx0}Bplto$2ZJc4Ig&&w7=4!>gJh#YiM*Wq{PkCa0UQ`5*n6=F#Q!Qi?r)@Xl*K=us)0LaOux%%BnH&lK8$ zOG``FeL7jq5RI_R>FA=G20E<`j<6Esnz#913|e((PW`7TSh)Dv*X6=7npruBDq8M1;7o56ysfcV=ywV9VN zL{ct$fCVKeOU-Bf5rgwH2*qG%Gw*u{rg~O04azx|RmD z0;vI;!@dM3I9rCNeT1pq7YVYt5%>R$Piw|9hfo&&epwd8LCd8O?Nl&Omh1S1`N5}fIhZ9@?0OHKon)|jZr6u^fQ=H}KN!O@ zBh@^Woi%YT==+f@*~j`HrO=GnsrSnOrz^`#Xs*~>#`x&mwmL?bH_FFr)*bPeWj3fw zGq)~anp7W^Oo(kP?g5^TPoCk9I>lR8kPi~(vep*Q2Ecf=Y1AleS6 z*L!ASY;Va3Vo*nb-JXGEjyouv>1~U{Hct8~OA@{1)Fw94a4G=4ZdD1vTmmmt2J#Lr z=~-@K=aOHe1+#gy>iVcV3T7fk`cVzwzUi{F4a{XdZKBs^SzM(;ty?Ao>C_jwC&XkJ z2FKJ80BLOhiaIfYc(akv{1FE~WX_5q>OL@yFd5J%Rrlk<)$tj%r{}WeepLe$+H`l7 zI$DANFPHON?SMC_9{D4&TQ6o?1e@safxzWQxFj zlsfGbuOmY+(D5_t?IDB_cHh889aWTUl7w6`$`;N=U&U}osuXf8qP`3@z5buAhcp20_KmGZF_gzn~j?O1}#9_Ei1TABMvH-&B>+dvPzE|*-N^c73 zg5)8hnKFPy8DeKiGlXs~1_xE80OPK7Yi`w)le7!V7MP-OQOd;|*lG^#RY5(@DsX1C z=L`Yb#rkly^Fv5_=B!bfWX53$xFC~;SoKLAbzusClntH8{?hFL0?DO^rt_$|slM+t z2%WJD@|rw32yIl`fL*55Aj2JNDHy}i{d_B^T-tm59*r(y8WM3c(tX&BQ%1!r*pUu= zJZ127AjE_*Z%I@X+xrq)Wnc@Xc!ttu-yZ1XWlb7Tq`uj617BlWo-Sm?FBK>s`8bu7syuFTAqvJ@GUCaO$YM)@Tp zP^UC2Hidp)GKQk{Qedyw6?=eSle{WmFd1ZrMEHb1M+a&+0vb>Xuz>lDrf@=6&j)6G zBfgo~*tar*I+W1v-wWQufGN6c8lWkwoVY0J=zFP6?0u~@dJ*$P@(Fqyfb0x2*i+24 zxwv};ec;%|>G|5l1Le{vAZ1tYf8;sYAi4#n_*rQrvxF3%e~QHwWqMy?{c~o|Lu5O>^Nh{psZ?xR23TJn@mHQxn zLWd?0q|HxQUYtxa5%1`MQ8>=J{_t7bL=R=AxGmVgyorWp?`ET5z2b0SWa=+ zD!wuephIGjKL_UsjvzU)?cwqk0!`xzF8d5T^B`cg)$#*?QiHZ_f+fdMhu}Xz1*Q6y z5FSD&4%YPK_r2Rc0D)Wb zk-$4DE#*e_N%1F5naB_P1P1G0V+u{b{W7u7$$}$Qs~$vO4?VS;x;wD^sWbvqO*~XR zGs4TGrO;pmFB5X|@vIpNrJg!)l7>@Y+XBrP11@@0t^Eyb&0vc}@e|h%(3D&pRVN$6 zg?;w{9iQXxe@akVosQ6H;PT>EyJdg%9>m|LPh!D%P$D)o7vc*&*@`Vnkp4ripry%DRBx-Hv>?V{$*v zEjT9__Yhu}aOD9RG}u;WNkuc^k7If~p_hpDz+Mq_JNaK{hD4{B_N{e;#R1<$L15qV zZd1MstSMfl#!W2O3UvC2um2_F`CKXRsyg8OZjFqJwLjLfk)0J;q|$dhC*y02IVt|; z(V%Sr!8klEhap77ng40Iedl-wv3&U;9(jEq_ar35eRU_IFMGl@i;ZP!t<}L9iNi#F zYZ=I^LpxSdmoqaLXAm4OKC3bjiI*hg+}yHrnrOF;qg7K8%|13Y&*%n-Ps|A|!~5Ad z-cl%MRrJ^JM!F7DR}mVIt1;ZW5TrtCED%5scU%QmNx#3~QImf`9ioTcTL(^_+lzp3 zFimZ8XW_Yetzj|Q*U)AbC$1D1ebO{pvrJF}xt5(b+K zC{efgkn!|}?({LKmc69y5V%a#!1!Y+sgbc=y|9u9l)?nCbx^7P14v}&F+Vdp{l2&o zPxGyq%(0v>dqt#LQs5DzG4RA<%|U%2>NWVmVx=(`p+0i4vHpskr7@fg@X3uqd0{Lr z_XKHX^1VA8r^W3hzf%*T%}E6|z)f;6bh}z147=&rK}>;R-~;=*wZP)6h^P&rKtY3y zJ-*V0vhruy-5)i_;_?-4YI<@bfl)s{w7H$OnsnJ{a2y??iDk?zE$WeVSO@6hybnpBJED2V!4i+ z#35E&i(!d#7<;YX^CcQ?3tWeM8o>{y5yKsw2WU4(Dh0&{Q+uOtW50Shi5S4{+_-*@ zEv{O)7w;56-wvg(jE(7{UV-4qpFNuO|FosT;(|W&;=2HYM2EfaR^_TN zUDN*yXP>TA?-an_OGk7l-Ug(@)qsW6E}VtdGE^-EGBiq4VRyMai`-F!pKxy5cvW){k6P0LQ%{_3BTdGH$HV-5TpRe!ZV$ZL=k}p zmW+h?64T~>y?wp}d}c;Y5@&fC5ny8t{d2xRS-l9}pE%<;pk0_ZHWS?Cw*m?s>n##z zJKFuqmQtv(nP{oVrAF!b-rf()@ujXNN#E&D>RL~Ntx5PJ5X`W%&lnec-Hx?JU(pB* zbwbya&8-3@i7@_LuAf^0YDEA|=`1hWL6Wy${SVmZ`-q>i+x`wj)zd=VRG-u%@)}v2 z>DKG6UY=Oyv*>E-+;Cnvyz>;-?2kOy$TeA8SXGN~yB~~qc@rS)Bbl!)X2Xlgt(U(d zsO;F1wez4LL1Zw8Hye;G2Aty@HSL4ZV1U1Q@>W@3whKrr3XC(y2gwDnMC2;fw2K(w z!DqQk&b+~N?Ede&8~{;2K)GGQtMH7Bohu2dkViXvB~mQT;3*`g`jJrJ-%P^K=u2KT z0yxrrPNz?*tdc;E0G^p0jnu5oQ3l#nP!&MitH+v74`L!uZAV&& z-t~#|DRLRz^kE>Ssv{GvDHbd_Z24K(tSiip*`@ji<0LKe(>XGxdYYb2&9>wt`5YtV zPd_3*86P>rs?4>)^%H=QUedpBM%=q-wLatpErCo4d2M0Jhz!zwU=vHUX z1V}9C2SeM6jRq#5!1VLMg;8{Lgsn35iudVVN&F`tcZTLzqwAKrQ(L|RwhTr6{ZmjPVx8U_@q_P@-c6J zp_VbzjenyANxG$9aTetHIFSI9N5p7VYq2{)lYuJ@+ROSIv|iskfq-K5`=o}K!-K5EUYs8t{YfLQtKTXz(tv{?gK9T3?%r~d@NNMjKE z8VDj&Vqf`CL^Z1G^>WmlS4NO4!#dNcnN-u{HbX$HDaHBqQzJ1OK{-sd0@B^^W%Yxx z_j35@t(T%`YoO7iq^&D?0>uJvUyWPYsD=W4%Lp|msxSZE7<>IRY^2sCsY-Ey?gPO8 zjemP-0P83ANL#PhaY>&JS0mu-v$#B0wNejd$SrU-Am4~~Hy*qz6Nfp2BNDFdxi_yesgsGZLvZ^JDDFzQQ(bwd*qfG zPXZ%<*e!st5+LYhxtOm~WGGa{p9`0%Jz*w#{IQ@Y;|(z@M~-iKR>xzPuK8^txecL1 z#3M2HgzY@0#5~OLF&c!iAj^5b%j#}@f%NwYvXK55di18S8Ouad?u2UpIhd|G;M5d%G0m`th#VJgzL#*bQpN~}S5AI;N2r0WDB z1vA&!j&PQ$M;_wk;0bfsabNBAsn=B`=vd5ty9PDK-04qIy#eO9TtJny&t3`u1}rEo z{Cs0y9G8rIf#ydm&;UzAXig(q(&?HqkFI@@V>6zi!5l@H+6KSU;G2v9t)%w@)UYaGDQr<8DNDN195L6|Ws z<`tJ>%fAJ(*{MnB3pgK3no@=2=<%*#+kPkocK9#|WcBo_?Pq=36WUEf9J4(Zl8cW= zx@`$etNT?AFLU)c0B3&>e$EYm(Ib3x`lb zD!*2%^3g&Elz+SF2F(m?b~3W(3Yz^IM-RzHyNvConrN>}(oOW~{~vfKA#nb7KSzog+C$yx4ECl!`mMX_9gWY4ueMP6NA!lZ++%K(*}T2op=s>HplNS5>S0q}8c z#cZ^~uKkuG!rupSv1iSg{b1XJNpL0>pWHMb2Uh6uBOFw*W!4j0au-s?W8Pjl$-!Oclj0)vZgy?d_$_}e&AGgdKswQ z89j$VnRCk*TOF>ZDGB-25%zpzfsqA6138J8c5E}4su2uCM%;FMV8%O zN5`s2@zy8rl8qBuwEp(fj^?yQmJ7hvlXtYCq5jxNAC_v}>DInu<#P0v?+hL}HA7>% zI8$DTaSd2*p0oR!PG04H2!(!n@7*1jy#uHw-#7qfR5&OZ1Tdad*m1!WsdF9a3Y*0= z-nDh?)jl7C8qo`xIKcKE>&<=GlzhF8DLoirjD(oBx*#+I3p|iNz)Mtw4>@zm4;5Rl zHBxqpZ>Rp4b6%qUE9xB{HDl`5NpL-uLyMpO@9JgRf!6iirJjC0;6V z>~7oI(-uC-UM(G}NE_``6G}ZBAyCw}`MP>bHZiRMfrdoQAFz|CVDz%+FAMnqSwd#G z`%s%qAeC9@tKA%)WGjIG2uf3A9WaGQ&^U3wsdj)a9xcfBS*O)SUFI8?QzeD9ztf9^ z6CiZhT`ig1(Sck=wI*)LYrFc*P73LW?(xWhR^Xh{$+uet4!*$^i*D2*I9C8`zob=1 zQ5>((bfB){L8tKYdiF8Rf6y3dujr0a=CDVq`+HmG$TJofBBg@#%>l0XHPe+;(_*`Vb(Kv;5a-VCK~sw-q&-@trY9TR z@Kk=m#O{nK6OSvi7N&}LAAfEO6MHcJH5$z7J2?N7*ivUIpLMtLUr6VO{4&&zP@ZozDv6Os5J>ol3j=BlsC-Ze-epnNUpA1`H) zM8$UZ$ALY919cR%v6uG;S{n|RB~;jB_l1xu<*pFlxfk$rdGkC#m9Jh8L|%tLX&et2 zKgiB&eUCoimWbKD{tND;cfko31aFqY5+}(tkJV`FFb@BjX@myPY7Xvd0lx7@Ns=tk z?~+~#)F^1=CS+~3!GirYhNpR%|36Pf4Nz6 zL%qs~m>de+g>d%jV-|YM`}KRp&OC8@5&EX(Ty2s35(@>DEYg6Do(PoYNu~Z5p^&&Q z+-}%d`pfztc`PB!>MnFgFypB@wUJipl?0>62$1=CD{7N z1^!C6C)5LwDvIi6{>D6=g1B$9k@H+}Wc*KrZ8kx)2fJpAQsLOehpqNib%O2*tM(Dl z@$f7)jTkvkGGo=QDXXz`pUX*|c}z44T^JT+eo1>;ya{pc`$Whv&?roksHRvyI+TF} zlWN;`_PuiR?-V0Z4|o0l2=|^k20PRjbP>M{X16$GWXXUz#Tu546@tpBt>SPn_A(Zk zNF^@{-$ljb|9fWSGEkKxIixQCq#|3DP9m%@maP^jRDw3O==Wco%XY4jI$Qgy~Re(&z5HW@9EGT_*GZ9Q<-%`62s3OS7#RKSc z-trt@-Itc`uo^M4Tcrxik_B=e3*A&+>9bO2sbPTq6OVF&UN7B(6~`T6pp9DT9iHG$ z1FEA`c2cW&JF@s{uWBet00h=L0QCIK>U4wk6!Z<7Mvayj&rVIFfU~#ignywcDg2Nk zR`%3mD+tvltIr*9Ia?DkSrge z#u$+#%P(t%4VXR_A=IkIh69%Ppa?~p&$I9bQVd3u8Sth<7)Co7Ho1hx zAKZ#Se_to_&ttJNr`v~&NI<9=5Pu(_3yx_EEab^a7>S|@x{@W%KlMCzwN5jV;a^15 zo?jp!n}r6LYreKQZAtTWePK5AtLoNUCICVpvx9137I_EFB18g_@gXvQK05~OTDs_d z9LZ=&GrtLBds^W7jqU`_AqpOP^n49Ltp;UGjsv~b9t*wOMwvb`Xs0*r8uehszCNS7 z7^+F*e%ICfAW6nPM)Y6SusoYkQ^JG%)a?U(H{=-gjD-jns$@p$oK$ng@mZ{1{cKsG z;R#9hV&#F(BGflM0iO!sc0EA{y_cL=c@$!+t9Ydc5)L#AsM^Ou>( z>%$@;UTr@1KtKDfGt2}Gq18`)Pa+{!FH@Tt2wST$C!_5JGxfBv(gVh@6T`)p40 z*tfUtuM_^+U5vmYPtfNU8|hs})gmHN)=lBhSIcjY5{5v7iRp(^y`lqv*8NgK`u1qy+y7X?PFsamZtH6pP+zs;vAybom#VAI#6L? zE4Qo(b}KeCn{a|E1>c@Ev>LOxk&!1@=m)6N2J^EpDrV9Z@u2@jG`>dhS&D$>Kg{n*L)8R5(B+RS009&Oab?cb16zEG@iakNYGpS=7|+U*W}|C>DBGHJ zTd2mK`>OytJV6A=U%77xZKHlljw*3~ex#eUD= zAZ7xw{gzcCV12qjU#P^_x&=L`>>Es6f{Fs0y1<4G9JCHkr9vyGX`Tbiy2Swl01f1E zM(^ESW47>tiwg6(uea`waaLCX2bh1RhhN7vF&fZD5l(?t0FoLLf9xm?>A;`>#UlFG zUi7};_k`lQQzaFz8vy@50Kj`^jpvEUXm0>Ui_5K-@}+M z=6=rChLn%ZZn1QZz(BIKr{Tk0omsd#H?dB?lO|4-KUG*A{wgDM)l|hpZe}e>jvpC% zB>}mRC2#c?{wt#ciesK))i1ZWkwS8DZDual%l`0Deckm2JF2mu$iTqD;(NlC zxV-Ied8$Ds>ZNqRt<|jc-QnD~Z`uq)`59nC6OzDvb3o<~5h2Z5@RroRZI`{U6Jp^Pn~QGhK|jet6ma{0)uJ{gtkoX9Hb!P{$^i7uH_i#LUM+ z0*s6)k74nI2hoXlD42aLU+zbC(7OOhz;Aw@r5Bqvxw^qgcIRPl|DWj@NhHa2@5$|B z-gyt09Q1CG5szIk)VJzd>^jSR00blxfJyef-+q3d_39fVxT+5`VPWCg1BFMx^qV&BVFg9)C~gmiTb*wOZg~e)(Wyl=#VrsU5N+$d7VB^ zih(wb=Iur;$~M8TMdL_!oWtvpA+e*D_>DPGmF&_IlEk33cx~AHlO{bgDt*^g=9$Ru zJMeYU_cWCETCHZocjTN$-m1ujUwAgI@vUi0L*4v#=Zd+FZV%+6Hma#_ZK2462xeC) zCzoGDH`QGopKD44n0tlcaPo{54iKEL)HlJoMV7|l-mO*4G9kU9=4*qSJ6mM1y_eRhiMh#Umo+^ol=X5^E1NT_#(tTF69@?_a+>lYa(ir+J6Oz>x!M71(Jr zomSMl#rRrv^&cJqWM}`!yDN4B*r)Y#$eleEU6!^C9gqqp$G>{_nJq0WXf2~yq?_vAK~fw5g( zEL%p?w|iDtYu zxbAY)Nt2fa%lE(*rW(eW`qqx^9dhXzZjWU0pr){3pjSM4XsORUiGMXv+m1b4Oiwz| zjFNUe`;kTP;NSKCL(8~jOm+A@k7>qsAq|}Mlq1}fWm8^{4epyyjv|ZXp_S=++H6fo*5-c8 znkI>%3LN?j#?@_qI_sB={HWewSm=IB>980)xe|oO-w)Xz4aC>vFy+Wnk^rym4GC#% zs=H+J@(cr82Kkl|1aM0}$LzVtB_@xdiOCkW@v0_)({RZ1G9lfcX5XeQZC4oQZqiHq ze~?WPU2KL&8tpVOFQu)uB^OUkpFLm~DgA0^5ia$Vn)2gl^LO7;1N1UTc3~S<9+@E{ zYPCP8Woj5UY$rGDSC}9T@sX=aX2K<(;salu<==*Yek1+921)3ti4VsY$HGJPBy2|n z?mDy8tQN0$X-xM!$PY^H*#fbN>cDmUJ!It($nZxl-|wZwrJ}h{ zz=4sDJp(o{Z&pVS`1o$71sh1yf&-8D3fUty#Jij?O?Q=aw8E?UMXzzaWJXI3(Gysw zPKl2lMO7l@hsG8;9QJ9jGUgIqjVY4~2PTRu)&1I`fV}x4J9;%6qAxMF5!pYlcNFTruQ)HF*vx(fH$xRWXe5fD0L`jDzQd31de`8d4xL}! zHbU>}8d{mDVzUrd#W8;EwY&n~i z_K~BapITuAxK-qhzkSOii_`v78Z=iPJHUikDm$ge#1&TVe#OO`j&K_6zpobP0+hrJ z2td>nusq~*nyej`OV7aU2ZErCv4>wf-5_yhdeHgV2Hn-ibLwf}RiFgM9RT$AL+Se& zc@ebT#*sbfb%01??9NT(JnIdG4eJck4;fK{xWraW#4|;0O!!)RIOK@KC}Xo{`BhP7 zRW?uEb#4fFsdA<&wfa%ef>WI1kvYcuJg>&;=y-onn_CkFFw&%5u~s}DYnJ2?+m=vk zdworzf&Il|;JcSLhiX1s@v0&36jkvClBM<|*nu|Q&!2dR@K>an@8hP8R1z2P6jUS` zTP7LHIV&42e0(47qmi}sssgF^3OE@Nu2CYbreVYD1h`+xTDTFNQjjPx9=10WC4@4V#hv@`3Z{63 z`=d(1ARM9ARV694THB#4QGwjZ7X|*-%e05nG%mca47@JB$lo;pSuUW)wHG&-!A6(M zqgc}}DhPgeFbPjOPuLqhczIpC>IjhGOjMRtBu2X|?sUiGp| zDfF$@dZg?yT?zd*eDHFWpUBG0I^2%F@zqH}^T_3uZwHX4+o9Lr?r^1WhYCi%VE1yr z&u6f$OH)L>)d9^J9Bk|a_W8jHbT?L6AzUf0?M9#89Zm_Jg1jwCM*u;hrzy@o$oat; z9fYITmC}|=OkJD8P%GqQR#6&^@V*P5@(bqT8fg>)%&fWQe{{7=Z2K$doR-w1_@o~> z?8#f_?wA8l-h*O%W9@2CD_ja#zFh7dw^D+;o$5^ z8Bk7}G(FvK?9JFoSBsNcoED9AxfIaAMI1XuSl%`FYD~t~$pwkR@37i#VHITJDIw9NJOu>2gEeI=1JndFomFG&@qjp+y;7ERy)(E$-FIqIat7 zU)og*ytDUBZX(Cz#xMKpJ-SB@(m92Fw1*;MS+~Q-zAUL&BaOG`OQ+Hm@H&B<+hVn- z_0w+9grJ0x{>oSIf;I?|=Z3}ghW~Jn0Lm+DV9+mjxIlgwB^9rJk+Q+#|HpU5`Lk7% zAkfRP5ZEg;IP4}O5*8cN45-IX?hl=MOVO;6x@>>m@~y!@tPhcK)X)Y&qEJ(t^4?ps z!n-^+ee#y1yIla0q>)WPB0FRLQ)p29@*#+Hz-cbCAJ&6ppgPUNcs-LU9W883>~|iO z`@FrrW-a@JY8ob19E3ve1hYx8CThGNsceB%S&d%J5O zU6>lrke<~*+@P%3CdBuep{dvA14%a};)V$Kg+IEj0$}(H+CW$BMvb1{(boT&5ZcOaU++53g=a{>KRu z>2Y}4(|U^`$m7~=xhs)2oIsypiZ4N&dOjtqdwsc@vE^Ah+nnTKK9 zXl!o`Tuz_dr3tO;1R#bv0iqBbq4RP@Z|>JNj3a6ze5WX-W2Ft*?@;8Dl7*;jWWEP( zY73&5a4v7CTe!M3wd)U_Yph5fHGU9WxBbDWhj+JcTA)3O+{(doA^rBR3`y7iad%}= zr}9Nb3S514+wX9huNboX4W~%^Y@Q8a>H^LEZc&@6- z70$GDm-x*d4|-t&6=6WlkfU`$%-{FTCP+2m|B(gE3ZkoTNmgB6T|fzh2P!9eMLn9} zr9SeogofckeYUe*L9%-ng6kEL_D#NJNP{i4e|-%kbJya3?2f}!G(?~gG|4dDWZ&~w zhMHvtbpmi&>_8!leNaP|<$OKVLl;I*^w|MZ*eNNH&Qr@Nw6Mq@I1M3M32(%+X-RKA zyrK{jpm7LoOtKe5`OU+i@fa~2r1+`4$WnZSiYLG9m^&|I-)JZe-wKFMDK51agCQBc zEko`xbiY`O^f`9vg|5u92a~M|;(jf|K(w%HISnV9DlIwxX@tkX$KxHu@QY9Lg9&g% z^1SQj;8am30r86h2St%xp|=Ya(md|a^Uq&`Wq*-L%l@l7NwQ-`iShK1joMvadBr^D zc$S$+(|bK)JVq%?k+EMRdTv8gKNjgIDgua8eTr{yQGMwH*}3z6zjPLI;!SR3qkOr6 z>ym>)Ea4n&ps&)W%Z9kozeQxG3}3X&CDV7U$UczvAQb^B-UyR|*_GYNGDZnt?S7H2 z1Tx#Mv_fO+=?IN4+GhaT|J?YwGZ_;01KopdbzSx}n3HW_0!rnC{+Xf{E_FT~&uC^@ z^8hzT`V4UzY5=)s6D~gc8UXRv(RblY5nh*Q3nR!icuoc)LlzfHtq3q211+#RIF3rA zWpYur*vm;$`%&bbcU&yZ71=794K}}O{g^A?@zTxMTvj6mpWTqJTob=%eK(igKk=RR zzAGXr8MMAsTNS4m;#iDYNaYbb%&ZGmC^bewj4$vnEsvJ5bo*0?{a2@s5ibxc99 zGh?IyoUGtUNQ8fux!m8<6X{yM**%?c3x~;KhhqUP57_w~D?yeZ)z{7?=>%6MA;$!=21AuBcHU&jG8Q7mq-4qgp z18>{I*uP^v)T1i=S3i=L_>9$Lsh5r$=V?W^_r_y#$2F_%RAe@ z3-2GZiq#e}Bm5zUpucf&VGkYio!fF<`v8i+Y~YOeXU+ua4GV@MzLn72ymH`$wvjA^ zDBmKCy)i!h^S1wy#~bhHV+DrLIPDOpBzI+1c1cWeLuUVMjHRmh6*ZP3YrN#ww|y$V zLw&8wFXPXPllMAI37LalA{16sb?BL(zzbggZdu>4E%9gL9=5=Fym$+~4=@w|c`}oT zgM=|5j~nTbb9oW(Xd~JHl62k=^}BI!hvkmFi&ud}WJry(d4gjHiyIk&%9Ra@IFb>H z0fM9`dUYfbmr-*htiw+36{xrdkV@Gj?IEa2J0UAKc@s?vZ*T}6?3$2=AX8^b23p$f zv<7#LTR(Yd62b@P{gn!(VW)Nr0v2A9GR_1d!a)!WvsJ94{E(X=6yn;K-f9zHf)cZ` za~YmA_99vT)9_Alm~EL+64hohRoB)d92wlH62;rgU1XsDM&$?`-q5`F3crD9mQDz%rYo@(Ut; zF42oF(H8xzMcodi^AKGx!jlcx+?W{$u?>AS5cV0#+}8C*qDr#LfyaA?FDQF?ZS%`B z7}?aW9$8R|t5pCA%c_w!c!sJApU^NgyW-v-!Dz*TRP-#)UXW+ffdoAz&{4%14ZtiT zsF=$!vZde0M6E0o`EfJOvr!w^(`Cum{JES29sJ1Ul#nSPZ>>}^QMh*ED<^Z9f#9Ey zhS0ccf$F}nGX%`*%?^bffETS37ZRJ2+Qc2yP4vMb|F_i0B&`@RhnbB!$e|%kV*HHZ zPk`MH|IdhR=wJYd?9s`KG~BFpFv*;TF1XyuL<(%9cs!pmUO(x{TqEV3;9_zLfrT`& z!h~n0+&e=yv{31g>VFeF&D8vZKa?z;#~g6jIvJ3xXr{mX_~h@Vh6JjFnBN;s8LrK$ zY8pPY=1)Rh)vP(=T%ae=IV1!V`7# z8$f)F&UI&Eyr6k*B-NcbXd8eurLWQLi?nG&$cMwM49?ZGIi1lPd9jaPcEdcT;oCuk z8}p+R*!mt9>i6K8Nq(EU6MocGn_{HTZxJ}`S_D)OkBPcJgSZm{`U6bQ48-us;COo3 zc&mpz2iAxis!JZ1*|9i=3#*;|ovy5Ya*36gH&!l~ZHOxYR#p%FY5Vb=xZWket+LBQ zsZ~uAg@wqKhI$DK=6y;p&#nOqAv{4*K!!3~z2_?}wr+N%A0|cB%FyBXM;CXH0&9Pq z@w=M))_2SKC9=J1&$?0N864YvdkaM%wHc?R@3z!D_94&@R#Di<*VYGk!(8s4m*8J` zv5k3nNJNN*+`cWbrXW5MKSk^qvW%?G?%0cgR;Dsyv`+THbKz2O(S$y>m-*DNdHc4Q z5S~c{}1X0|3zSgRyVClxQ2K|U#NV*| z9MMX8OBOZCZo08JG`Z3$+7=AWySip>G?5Tis%Ggv_8)AAFY*+Z@aRd*YimzT|cqIn(BV=GsDeGhBx}{7lKHO znG>((r$qHn5OBwduRjXupI&-kPl#HJ!VDfqx6&K!*qwjdD^k*n!cDvI6C~e+D?Wqx z({i^zYCbYc__gDCp0IPbv zX*J!gik@SIXT5gni&c`iuMmQb*F{lnbhFrprgls?zDDUz@4D|{BNs>GsknKA1)06O zX{64*1Pz$>czD&n3(UeN;%thKmUu@Gy*UbqlpL zcY+H$k}1ZA2@2Y|9KnfR;%-8<$4>JBVzKc}5mL5B4R(C=+@T%58v(R?T#Euy8|fN1 z={9{q^LyBrMBU=(CL(Pf=>@ATp0ytCQTIGS2;1)4VZ(w?pa$}@4I;nQvp^f(O+pQ8 zqDCqjFNm%AwK?_(NQ}$4+$o&S;bv>h{4#)?w&3O8fN7;)-YMskx>hb8jWlTuH&5x<2OaH zFq=y_(e?aLoh^Bk9c^cas1LX6aS2z0Q4+cY^XrPVKD$=WTM;B-Zg3ALdr(}>5YIL% z{3{7{YFE-ONux`_@4AVErq}1^4G~V>_&|bZlL^fnnzqg(w{|prp?_z7Y%8J_Gq)b| zp=Uhb@Rkh@WGBRTPoy~K^j1$qt*ss&qtP47+P)!A3k8VYP-3+WHiWWk3A?XoVda20 zrj!|ObU(<|6SobEPHdu7(&HS7D?wa|oQ7j%_B@B|Nzl3imp!0YW zhCCvr>_xoy^Nx4*HVjZr6Tjxpr66SPzu|*4bhF{tr;sr5!7=dJdQ7*+UkC9m93gsa z+Q6s#hQoXcv8-znw(dv1EG;p@GL{lR*rvtRktkimyvz|4^lk8|b>q&bH0*`IdA#;q zt1epdCb!;cyNz+!A#AfyQwk+TGM??lz`A=+)tzjH-5Aa*>*z;yHG7{6J;=IbqRVI# zO-qu=)JM@N$>CLNvc^@c>{^w2?dDQQ^aOR}=(YAr?PjTd;M_t4xdT}KC64Gm)Er!K zx{kS9g@3EQG#;5t@hExDRTuw4m>V?jqtPyo+d`(8{1(Z4L&%g&7xfQ#%#W~0s0oW# ztPjL&RVw*yyd99qK>%h0V_}{estPKLjj0c-8)$~f>?d#hnELSno10;(9-iojy94>Czi8*;j`dtZR$IiH! zeRWf^J2WSYdubEFE({~P1b~EVb5PJ3$u0_Tx;*g%YP&_&$i0X6MmN};LxWyPFXwgL z?=|tSa>O%)Mp6d6PXoVv)WeY;%CRu+r-i@TnLvJ1?9z%`T>u0EloH5!r-N`O1REnO zcOf*r53G>^v^+DjtlrJ`ScXs9MMab5)_<9P#)Kj3YCegcw?`VN!G<90`ydTZ5dXw2 znWDf)404YA(KzFO@oKS~ep0qJAVjSBt^!2)ikkT!v{4QP^>N+EL|nhjm0!Uw1Sw8Z zlK9=epO48bG^JohY5n8?j3CNM_BagLr$(?A(u0ccw_^1JtA`D*0)atyC_zBM#J_T) zq0|kSP(g==B_Qg=W%LmMlP|TcZ4W=1o^0xef>zdibh{#tgbM&zX=g7h^_(Y$Q?}rO z(L5i-0pDZKYH@Ljg<$8jV)SvF>sJ4DLVBq*+$odQ%mdr7OI%65`ORW22z&W}`zPhk79saQu7vT=Qc-)^ z&q8JR9??Ji11j^Z1VcN$UWo{R1Ew~P*teV+%Rz5(Ms+YkKdk^suSsBL*DhjZ1pxI1 z^m%w60M@c_I%t;O8z$FH$8yvr2aR+%2jU{wTazGAgTU+5Z5d~QiH0-hp=Erq^Eg?E@z1~2WKI~0%}v#2WSd+fjdwP|IGjM=^Q1hxL{ew&yAghTfly|oU{_FO@jJ&z3R$blv@&zM2n3r zkDd(ogvWXf+k(k0;&fPyOH8wm|Cq$8Y?cz{3$8PzGlG^+=a2hM+sJ= z#R&~Bva}OcaW|)O=Yja$6PSz((k__@SxG~3d?~obW4tb0sa4r1RCJ zoo%XPmwkkU@gKAKH1!bxW+%F`6hoy>Ul&qk{;VZ=vqhCE;4?kTA&j{xXCf-&y0?#x zO!VbMxlwlrAo1K{N6BF`1;B@41TJ)@BdLH8#3PqXG5-~$7#SuM3?Oytvh&!U@<(WN zGGPxyHd$}sH$5_CuX&>7G_uZDY|8Laj=vaZ4Ny2M$JKGVc^E+7sikkNqWDZ7MAOL4 z+YEp8E#{71rEk(f2B-$^Q35-MhM~KE?Z37%?TVwbZ56swqDdm@4nt?*ZjpLG;pN{& ze}^z!(-H~yuZ4@`b-;@Ci=B_SEXu((#xCGN^)yHRe7PmgG7?>$4;TeX1YWNy{RWjf zXC$w^9|)9k#%w%j`firW8mGF^a;*Q9U$m73P7Q;k8}gy`2aDl}-h`^U{Q@&`KK-|< zhbeG>&#FS5fkA>(=Dr9T=S_akPoNEd)%bhfh^uKiBp5s~SYO5m&#(5$jL13X5Zc+`vo8=! z9fo+b|6?6X^R^Tf38HaN(Xl7a@+YKfqd-!v7!D|7<-r2pIHRUOysAy4?3waXk3b`U zkx>x3+tHuO;J09%;y=7Ls`yAsbgLKe2k0teH@>7zyQbbOZP8$534~~4KU3aI6%sc> z?u7U%n&aqIvK`HuH0@rvx$y0D7Eij!M%Pvg+~7B%I&iVK!?qk5c@QOJ)omtke<=&Tb;8IzyI0~$(=tX1&M|ozkPX)U;<5n zFU#$$Mr`#F9TB7HG(b@PxFrphy}oK27nS-Jv`q;?swcuuP_CD;;BVtm`MnpA4QB79Y}bb{|`^d$Rx1#%I^go9l1VkxgZW6q!j9qrKa;P_Bqw z%Lm7sq|`pA1iy_KG)~e|0#_*TXn@#MH@%(Ufk9{Vz_vI;Mb4jK*_OKrP?oDXvb}VY zONE1X!Vk9btpaqWXS|MsJ^JT?>>@Q|G$hkwh3M6vduoHyi_<4Pg8$n?rA-%Y%hcFL`#mQF3X9|or1>% zvpZNFWlaIkBT+-L=xG3*biAPjF=9`+8dU8sHmMq+xZH!&l>f~u0c$QeFib+>5X5f) z=J0R-bHKe^s&X)&ki8<2is1O$6KhV$U#~sfxM7Xrnsun!^!(h2NajPG)JPBjalD!_ zO;x9d$arB1YM7x@Rc(LbIpIALKrdRSxB%sLnH^v7XucLJ zcq*e5g2fk?tV-B@BQfJscM6FalRAWBEf~_gunJ7jt!rP4$^S^#fS=(<5qNW+OuhCo zBiKpcPyAD^#@Y`B@#zrKap-+l-#UVjA3HnLoInxo9MFnYCW zM20%oTW1F+p2ZcVb<%KoMp4dO2^DhCnN&qUliSsHYrUN8H{)IiM}&YI!#1p%z=&=s z0Nu(Kb^S3POadL@x$4_t>=QeSaj|sNuu^=GC=?uHiihNAyKUzRR{cD_6$+aE3cAPs zl{HrJffE{wWwWpiooS5>A_@a}%8Mrz41wZRWTY&_ff;P11<0~mCP0qn{TWvPB7Vk# zo!RLUo)QD?Qn5UEO}ky2_?Ux7+YYg=lKK^2pe9~^2TDryaM5qX1m>Qf32IBl=j74T z97c<*N$)EUMN9*I<-x7h$8@+_mzklHNhos0!T>PN2-F3b!4QL6JvAV=ksQ%!PTJAE z-6H{fm99DD_v1uw3I^yDt1pT07Ubf7J*p%C_+lXo&h6V0&;nGWDWmUCxwpgrQ(q=P zp+t|&DrjK8vAj#TT`TCPw{jKv^m{LPnP5kN?WLLqsS?DY z>;vu7JIB7-`e>vFVWHaa9u1Hs&36CPlrkdRQGNriV-e|_?19!%kPQ$>%tDG-(TqC{ zhqycWsey~u&`N6=saZVw6L95!Q{}B`?9~6$ZVY$*JiOg%-jbW?SOY(N{#7`Qfa$?B zPNrnEED1)|ufaVKMTEc0Ho?dZ2ayJ_3RVy(HG1X>b<7)vD%wh1XS?YzUW}uY*HMT_V>Ym(U;8V2z z6ctkQm@Bz&2DH2kW6UT&5zKMaavXaATZj!x^u#?fIN~;mrS}T&wqe;)`sH08CrXIW z=*UI_06y5v&3+7JPwdzC!d3iTyW1YW5g?7e-*vVJk?dN-_oW93z=PP@)%b=Ax{Virf zVQLQ?%=7W#sXYZE;~3Gel3>M^T@+yTbCfz?V5{tp_RrK=mDZ`5zOyz1891RMc)8pn zA}sHa(%RbWCv(E=B#{^Ih7?~>RFKJKC!v&Pa#>_4AgfG5i$_H`amnSTLR@O$O(&~5 z#+yY(Z74Xy?o#Gm(&AE!YK0z_9)Bt*@nmG3Yr`L(TQMb(`bw~~!?N-4iGW%g{YOd~ zzmx+`$U+&PX!7ti?}vT%G;3yK5pW!Jx^zS!*@kJ6R09<|@>$V4$R%f704B~A%|)?R z9mL}Qp=+j^0kS)~#~7H5hKhCPJ;M((VUL_yl-xYotvXT|f*^@&be+pslbb5Xg`@|a z!zG1bMeJ)6xb1Q`G~r9?+=lgzwmfCDYpZ75pCYwzeXxcreXs@Gf!gR90bjT~kWiJ? zLY4WUPCxIYKW{Afs}@PViM^;8JgtWrzaV@DWwi71Jd-z8_Hy-9jJDa3U{5k($L8{lOG6(=e`-gF=2e38!uPP6 zGZqhmnxAOd9<*}kd-IHXBk3lA!KF)=vyA~DLCe7L&x-AB1%me;yF+KhVNWSnecMK` z&{r!5LuwIFT}K%hOWas#!f+uooMVp@fplL3rXV(QDtu;EukVXw=`mcn3N&0VHAZLF zsEgA(m?0pm>0Kgu4lgnt(L0g4q}4_@r3G|b6q+%(puq!)iyz+n)I7+^W_Psu_<*rBKyi{Dr0_jelYx`QHxjn=qTx zoqD1;Nr_4C$c7osr2^s7_Uw%4R!NcT`}%FxYmkH{Tp>u~tWU+s3KSVuv{KDrEe5nR z>NyDo#<5w>ztLMWnPwXp{VGXg#rsa`(5}7Y-Hm zv~;X{>@fB4xG+8#$5SFCHkR1HsLNUxPIxi)hmYm%=8tHq253rt4Mpt3FD2}b<6z-VR9;|32 zP(8$N3J5dv_Mtc~AoGO(_5@TA$ZYSGTGvnnW2>3w(gw*adNaDQ-3+`iOG^N;HKqgb|m%r@9Sn z;-?=YLhG&}V~KKg<3xp*EOcKflG4UTGz|0CGa0dbNc3+F?l?xKpvYMdwbKCV&XsrBKqG7dzx7yYN=Yz2E`?l22I*Xcv*iBaz)}vo6z(+^fr6 z5f9PUBt%kH(Pl?e6($5OJkoHmR}k#wa{QaVw?DGNkd3MqBt z&t@%mY4B6po!KEp3!VoQs==1j#)Viw!o^OP#HQ(KP^8oFIColP$WF=Td+3c&ivLh_ zTIVq+KKPYBaI{?0;!Nukm7p9&HFNbcb;*jPFX|pw+c|-nH4W<9V<;1*pa90P=>QKOYdvSyZ}S=9(zWq*jJ45Y^sGLA3-io zf(nh;k^9o=h=4G5hg>E;4OCLFx-#G=;O)*Q-?I78SmV$`i~`d$u6XssrY%;Fm##4( zQdI7x&CYnzzG(DvwV1flC)PrKMyUQ4OZvzcg+A$Z9>y$zeL1eTD@Bq%w^8|6s9p6< zX9&y`*A?U`0U^{x-$b#W^%CgQiRDc^1uOD_@OyZmAoh;bUv!6bOMDe6q>5@L^ihk1 znh%lhoG;5TPui%iH-2g$bJ)c-q^09E)t`7b>@uQu6pFl56+~qOB7Zp}jy_z)H?H~cAJgHs>#UgfQPp93Cs`@3tdhAl?Pw}rTm@riDcd*lp zW&g;CSff1t`wx2`>QbY4CYG?+g>|GvBB&}`{%CZ&x>d=gn}Ms@V11a`cNZR4RS@=k zDb!1aMx8#qtX0Lx0w(BNCW*`0H^wdoV*cWf-$!FUm+-OTSyJi~W$=04AR|SH*-m@V z1wq0r;v4$$Cl~Y{H++vRF=u9zr3icH{?0>ZFP+MRPz}+5G}H#wVEh* zz-B7q8h?L(wnci!)VgwBcvtKMwQ)kaH@+30bIWP-O`JC=W0qLvb;`DpfjDv)A>;$L zsC_i;VwJ`4@7Z^18++XDz>Je!lL zoEOy`IMcZ9EoK4t8IwzintqlnDb+%PIeBRh{+jTEf~4XKdC@niAch>D7kXsM8hOQ# z0&nKn7b0_T5u!Ji-EowdhucbdxI(n~M1OOw%_LL$Ef3|<=!YyHr84o%UA`V3wE;y` zRO_TXfuT0B{Q8*LmO-TFCn}_C5FrQwcS8ImsI~f^{ejrjq-Q>+|HD9agf@*dstPGZ zL@iY!V59Kns$~tOh)JlTMxEHwaacFzO2UEmp!CYaR(2`)MQ8 z(Xk1Sk`)s_m(MK$C90|Rt=<)91L(suRAL&)QkonVd*b8F*Y7j)5%H+`8M9n(BF zf@YPBpD!X7o=#owV`VZXLa*45j&?LZtrvifNx`=N;_HptwY= zOCRNm!b8Zh)Q7)1y$R0E;V~+0u8EO>rG}DKm{l&u9$y~GmA$*Z5>$QiSJRP#@aL{u ziiq>Mt|0}Q#h9}J10(MhG?lQ;4{<+a*uU{k3*IX)bZ?+(!Iq%ua353zx6ssD$YURB zT|lP4t^SzNr(HaGVlbKGB7JZTE=Lkjq~nFChLA@Fls~-(Huvlfrfg4&;i~BK%$(|B zI@v4XQ`f7zd1YH{@>q6jUaxZzf@(XefJXB|Rj9FApHQf{qNdQlKN_l3uFotJJM`_Y zjDG+V6feD$EObq%6^-!N6khy|fI~poG;#v(Ih3&^3k%l3P@FzRxaI{)1lN7YN*pD> zv=2e(aPViB_hL6F3Js$uN z3=-fY5#(i13Z5qG&d?UHaXJ=2N7K6V*q&pIC}x}KsLH^#;)r>^lT>j~5A^)SU;+KN zmubowu;8lg=47I8!9Aa!w%0xE->~a5_u2#uIQq}o_uLf-j}}n~>?1A*HQNa_kBnVA zQFcY@choMF?~sbW3`j%T?1=jC@$JZ@^M>EUR&KWkY<+Q`C??vbSBWn$Tm`8!IUvWJ z>Veg_7}V~A7+xU-76))*O_A1yf656lk11qur3MDM#xKq3SBY2UOBs{}?p| zM5n~uuFi6Yuc|Rh8w^p28{)fYiMgWO%~Xs4du1`=`RhEW9q;dFk8TgK-cs@oGHx?N z4T|%v@OWvm$;rZ3G&fX}1_AqLM_LFm>4&1(>ejY?@1tbaSfbmbi0B6y;S-_bcma4z zT!1A-Y4@YFc+}?*OxqPjp7{c1cRk153muPqLDdC8r*eWu-tkni=9N|$|#D-Z? zotKTREeu=eBwjYF&Qe zQ#axyMYJJ(g9L>vmi3Q#D5N&adPtL1P{YX4=SO}g;GexW_Ben!#AkF-oQfkgO{_;d zqYU7Ap&toZJgQs_Zb7pQmykfwgTYCTb4*^TjVx`y)BW|@t>NReF6@TtVZ>$Fdr)kC zR&d4i=*Nos{cY^tWx?4^2D7uAtiXHOkP49iS<;!d{E6a`wE(^k-Fz$!99z7iz1}jr zEXCf?i1}P5LmK|{zUP$rG7fF@ZU3jDSuRhWS8Yp*g9=u486|}1VnjoT(xrYk>e))S z=zlH*UcbUxGLQ72Gy-MDS_}bHylN#{G?eo>$5Ni<)eXH*h_YSINd39~EJNRAw&lY_ z_<~8|N1v%Fa^L->JLqUIqY@Y-oYXINVTsPdv$emOg@{?<7DD*K#J-eyO8pDVJ;xt& z&RH8>%O~%k;<<~^qb$*JVX_p?2U;xbHfpy=Bt&ZR0|5F(H?z@HHAOiJC>q)?rtD-~6jF-PD_e0$eO&_shvEIfyum=_TtzFuU&xDMk`_iyfBV`9? zEj9Hn?NSY2voaU|QB_hih1tLI1@(`SsZfiiAHF z0-PQJM?dVudMyu2v0r?Ih?`9Ne>WW452`bZ>M4j2f^!lU=jB1)z8FR!3b9^*4^FNk?)}bZM#UX29ouZKYfSan>Slh+ItvM%-CVkcXtz_i2$@-R1J7yXE+iSIZ zZzKH%v7ooWp(^`sAr13=L!UKVrGkWXdGiP5gDIrMj>Xjt<2oreDi!|Fb^H%B)dT=c z>?LfOi$HHc?buUWPO4hT#Twm@H5gzMUL!BT!;4u;{!g6|0XcJ2Cr!?;WYvGbj2lAt zN7`9kDMh3@zy=rH$4x;|s?7fm5;X>8;+hFEbyc=&q0ZYT7)O$s>1mCacKDFO_5%Uz zNKg!lxMWWY3%LrdGFGm2(X?FzMU4zZ<<9p8K{y8Jo@XFl) z?7lMh+B=l!0f=tC>Z)%nIMu1espl{rZ{7<&6#HD2%M)JYF8U^hVanJ;#QqgJNoW}Yk#R&WZCEiTOx z7Dmd^|E@OT?Kc&$m)WdNA%FD5M>PPDAwWdH_bh?KYQ{BkEde-i0OD))I)0$AFhl%j zt8m?c(75r!t`-pUCu5m27+lE*G6Rp_vKdDQ@UsfV&v==z;Z_PQgnyU5HnwB zMc{oTe(SX^S4wMAHkj}~1U*(V*gUi@vup5@ve2~%+^KDmZ8}OMj5&htv1{&$hLKqC zh+VOeVKLHa-Y^eZ~D?6A@IKUqTs4LHqfZi&SIFVwnoUXW8f*VZz) z#}TT*y#;D&tnkVwer}yTvkCDRiF%ojnv-p_-YhXadU3ZXk1g@PQ)|&yXeuMtqB1k{ zNJON>0(>L@{4B>9(&>t&C_}FCeMQP0r@RR1Xng+?EcF_uWwoB4f#=%)?U-M$=A1%{ zHrMYCbcI8z(EOc#jwc^K``;wpv+jB8a$Z;&cDd&FY@|Y~?A(v+PNeS=EEcDCApnvw zE!gVu!l(f!^O3Cd++y20yjR{sWx< zmHcC)M2tL>N!GF;V|ZteGw%cC%|AFbc=^dL1j-AQu%^e3P*zOe$1r#u9o-EQ zq#eLEOFwm59Y|!0c{{b{!K7{(o3k#h_%Z-;YCz-rQmwLZ_17iJws$i_eo7C@haJYT z$tK&P9W!FE>k+J!Wh^Biy*rUTSB5ET56^Hv*oreRnydx zyrhoGarV#HrAyydAndpW8wHM{DP(GgzkLIo{O7a(2j+z#mX!EE5A=M>kA*6-1om$1|i@Ln*>4B>y%b z*beilqe#M%L}Txi*34f^f-XHYJ)E-#a1NNcFwCz^3R}fwc-d+1geh}E(N=D-xvmIU z>(PBedOR-}*JtoUV)(3WnjkHT$9&M$CQN90!SlRX&C8+42lQ<**^%!4nzAXS9+di4 z?-5@pR$(lXku#sbv4mF!t1FDm(Eyc;qpozcU?YIli&U8VfO4_XFhP_`g!M9z1G24^ zTc08*0^fl3&|vJl4%ztyoSf-P1 z+Wx)k+(X`bvE?&iPuO7LF*NPV!+I6}+N88PJQOMkU%6TgDV@f^6YrsP7>B(KQ!$Sy zWFAx0%wmx5%mHm^+9=LRK8{X`Vn{erM2eQEQ%30nJ|DmN4} z^wB^NfVU?*oaAW?+GKpJ*)2)3dll2qu{8<5aKI&>C;2RdQ1YL4c&S9yOa;}e9W*Ir%S4c3bS*z>%W)IEcXTU(y!qZ(O z3Ni80O<8mK6=vIS(HohkLFc(Co`Z%*pyb(5)F-fX2eI{`--s%_7wk|=ac0^SAFQXw zYBS4%F1Js3OSmtNPx1M}SsYoPZ8j2QNGfezwd2~hEbzbpo{7_vds9E)w(8#2%rblK zZ&b^OnS~_GvjLadQ(gj)W!|&drm7vNheg5D@o0}Tkt=S|spiix2g=HR&rA6&p66FGZBU%{Gk~>~wO^~{-Au;bq1`%8$ zRb;>rRDSU+`Vfi4Ve_$U^YXrfKU>>WZ*I~fOWSnU3NJ(NcnM*d56ay;Y2(;slcqvz8ehinQ(?M2ELiD2$Q?%p-nLiKK>=( zQ191<1d37{W@b4S2*6yN59t&S2hs717PPeb^^^!aI|6XO9_CC(O zk|wDEPGq?4`)4MC`KdK=xF_!wBAK4j!)-Hp7rB3`{j-5vR2ATwf!k&#TSip*s%76hfn&K8wyZ(B|HdF zBM;-I5->yBUPLw-X=PD7#QRpe1Y9ROouU%)*C--<2}>(yVlLWC5oyH@hX184r=v?Art&qLl&FqGLw$sHm2?-3L*pl^Ssyg zsXO=Idj)J3h-#q$z-~wjO_RA%tRkW9bL3X~&TtgisYGI69R8P>vgwLWzeyc1E%{07o^$i4D&c{9~3Dj458y1FM{aY*kU?Ah2B?=?rCh=QoMjoKkYB-8Q&tT2*1 zQX8a3gZ>z~dN5WRgCB!|I#eyb0pQmr?RD+!UezQD2-Hi3IB6(fxUi=-Q&*Q56wa;< z*2xcj<>qyJ%i9?4L4k9)TIgAb6<1a~U}=O zty&}W&N4u=JqSPhajlZEK1nw*^luiB-EGZ{1nkCp_cN{~x^*lBgu3lb_c*Q!j+h#n zW+>0?A19}3rrJksD*ovh$O5y>Uk)!3(+_mkB#RYLfaL~yg3}QSKt6OQpm`F08DBKmT*ON2!uATODf$3S&n2{Aw^gfQ8kHkflZSUqZ%60I9wGY9DCp^Q#`bz}sB`2H3|uQ{kec@&8Y!Oqy24n(!x2$ak zQT5DN@FeW={j>vl&+c=BI5=DhU<%!#imYCwGGxGv)zhB0!t3l!k|hsph{C;c zO(~QQo-%LIa(dG_v^B+LY6N|-9*}?KPgh8vTA^M-{;({WHkvo!BUi`vC)LzyQz4IeK*|CY5mF%am*ziEgBR^rJBW6K6}YuYSu2{Uo49Kz4eIJ$Na#Unr;u~ z&@BHA;_!3lcdA3Vel#C7PcNh<2M#*MVi(^E-`ms`1fyOqIeyT>vzBaI_t9oWhLS4q zUpI|bvgFgRxkQaCFUgO&53xA%w(7@K;d7G~dXjdrVA1;b59{o+pa)mW#-wf)Dox4_ z!l=Tw6$B2?+jDC%rr z2oz^rUXlx~fTNw-N|~%-dP@7@-7Od0Hd{JyO80H1>TE%xS<%}m$DKsWd%Y_wgrOAu z#SM>qkHWO$KnTRhA{j?s>IstaNo2r;UW$qG4GpSR#0M*=+sD(5#Mp}3G?3y;v&5HJ zNgL_B&7PFv*r*^(RJUhV6xwj3&&c{8m96q`eDoLcEZ&L>eqz$za9Kc|n=dXHjG_ya zsnapMQPswM#l}Tt!N=3tsUag^qY#c()dIj2S0wU?x$Qvz7L%A)o@tT_j3agw`5ag4 z&Ad%b&`38R#MbV$imiS7qHkbZ@*3x7=8}N30pbxpyVX4Loco9c9q7Ip-$_4~N(qm) zU=wYL3`Oe~8I<;5d8dTR%?#bP-j<%o=&@fBR6K7&3$-J2GAz8kb&|UL`D7rK*K!9= z>{iKQQ#8)oj>KUopwU+NK$= z_H{>kK&I-vQR;E09Bfujn+_zo#%Tq6qYJ6;jZ?5m2&IQydXCF6CB>e6#Qt4|%jyX; z5Xu0v=b?|JwMcYjBCr7Wl}bUL->fwY2k8mafb3+y!&L0tXBn1g&7MkG6J`&j)!Zq} z{}(6VQ|s-gT+LKbjy-@8OI+n(&j*ZK$4kKcx{ z`CgTzyqUS7i~dSzfuSZMq^X^Zr?3ii?;6tRMUlD{auV@T@iEr6!2_W@Ch6^feCt}0 zrPH80(7!8hVZsA084#05iIjzlR~wbK6KZeo zk}ZG|G}|W;&>o%*LQC>@2>8q~K6VVWw!lg@XpIXR13W3!s*0IX>o2Vp54+>{Ap~z3 z{szY>Ib%!tSN92ifC4!hy&=BOleuU)e#FPCv{Npp~&c} zJ(8jYThj0OekLgm3%3$MGAWTeD`le$217hlw}Ay&#iX4usu<|9GgtIenv!)bn zq!h{%5qf8Q1pQJpjv`|!97ooKpo>rS+nb!QbQ8RP75|~{;U~DwKVpOLEH81X?{sB7 zNoUqu(#NJa3J6N1QY}PhPXE}BD|(=c^yQ32|KFI4(jV{*KEk21cy&h=)p`qLGqbvp zIUhYKndWRa)7I)vt%y^~uJ(doWa6H` zjjtF2FAzR&M>8wS1tI)e1wu)Nj<$Q8B*q+b`3u=ayT4mpxwg`4&>}b;+Z*`NFtho4 zJu%*&)cSwjhpxEJc6McR=MB++2!AkOl1Hym zGOVv?D<-IpYZb15H-ub}(aNwvfi5p$A5RRK)6FyN(R}J0*;U2;a`KUdgY;`&S(
    uN`(&Ad=%J^ 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\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"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 \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - 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=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\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 :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\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:30: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 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=all internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +add interface=lo list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 disabled=yes \ + 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=Bridge-LAN interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip cloud +set update-time=no +/ip dhcp-client +add add-default-route=special-classless allow-reconfigure=yes check-gateway=\ + arp default-route-tables=main:2 dhcp-options=clientid_duid,clientid \ + interface="ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8 verify-doh-cert=yes +/ip dns static +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" 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.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=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" disabled=yes name=dns.comss.one \ + 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=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=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-IP +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-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +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!!!" 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=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +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=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked disabled=yes +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new disabled=yes in-interface="ether1 - Unet" \ + src-address-list=!VDSina +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 +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 fragment=no in-interface="ether1 - Unet" protocol=tcp \ + src-address=!10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +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=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +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=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=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 certificate=Root-YE 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 interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 nd +set [ find default=yes ] disabled=yes +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set check-certificate=yes-without-crl +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes 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 certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" name="Cuad9-DOH IPv4" 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="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260603/20260603000002-Diff-Config.rsc b/MikroMaster/history/20260603/20260603000002-Diff-Config.rsc new file mode 100644 index 0000000..47df08a --- /dev/null +++ b/MikroMaster/history/20260603/20260603000002-Diff-Config.rsc @@ -0,0 +1,66 @@ +25a26 +> add name=Internet +27d27 +< add exclude=LAN include=WAN name=Internet +73c73 +< add disabled=no fib name=To-VPN +--- +> add disabled=no name=To-VPN +2421,2422c2421,2422 +< set detect-interface-list=all internet-interface-list=Internet \ +< lan-interface-list=LAN wan-interface-list=WAN +--- +> set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ +> LAN wan-interface-list=WAN +2428d2427 +< add interface=lo list=LAN +2446,2447c2445,2447 +< arp default-route-tables=main:2 dhcp-options=clientid_duid,clientid \ +< interface="ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +--- +> bfd default-route-tables=main:2 dhcp-options=clientid,clientid_duid \ +> disabled=yes interface="ether1 - Unet" name=client1 use-peer-dns=no \ +> use-peer-ntp=no +3130,3131c3130 +< connection-state=established,related,new disabled=yes routing-mark=\ +< !To-VPN +--- +> connection-state=established,related,new disabled=yes routing-mark=!*400 +3170,3171c3169,3170 +< dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ +< To-VPN src-address=10.30.30.0/24 +--- +> dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=*400 \ +> src-address=10.30.30.0/24 +3174c3173 +< new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +--- +> new-routing-mark=*400 passthrough=no src-address=10.30.30.0/24 +3179c3178 +< disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +--- +> disabled=yes new-routing-mark=*400 src-address=10.30.30.0/24 \ +3185c3184 +< 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ +--- +> 1380 out-interface=WG protocol=tcp routing-mark=*400 tcp-flags=syn \ +3188c3187 +< dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ +--- +> dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=*400 \ +3211c3210 +< "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ +--- +> "ether1 - Unet" protocol=tcp routing-mark=*400 to-addresses=10.30.30.33 \ +3224,3225c3223,3224 +< "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ +< 10.30.30.33 to-ports=22 +--- +> "ether1 - Unet" protocol=tcp routing-mark=!*400 to-addresses=10.30.30.33 \ +> to-ports=22 +3312,3313c3311,3312 +< add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ +< To-VPN scope=30 target-scope=10 +--- +> add check-gateway="(unknown)" disabled=no distance=2 dst-address=0.0.0.0/0 \ +> gateway=146.120.64.209 routing-table=To-VPN scope=30 target-scope=10 -- 2.52.0