From d3f2600b6c20523cd273380ed8577442fd6538c3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 02:20:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 02:20:41. --- .../20260508/20260508022001-Binary.backup | Bin 0 -> 297788 bytes .../20260508/20260508022001-Config.rsc | 4643 +++++++++++++++++ .../20260508/20260508022001-Diff-Config.rsc | 12 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260508/20260508022001-Binary.backup create mode 100644 MikroMaster/20260508/20260508022001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508022001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508022001-Binary.backup b/MikroMaster/20260508/20260508022001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..18b048218c1921c43966e4c3a044a863bf7f46e8 GIT binary patch literal 297788 zcmV+aKLEh*sF8C#iv$2PSQze2ZZJ|}vI>v_Z5!$U000O80004Z`T(2&Lur^p=Osn3 zyPQv}KReHOgN6?9qA+8|9uZAkr4VDl9MS$#S&xXJLZm1S%ZvBi@^3|kt&6RFD6v3a zN!;=FE@so#FKxPU7 z;shNJCwz|Qh4qpGk|3lRI5&7tKS0U~knxB}2yxOTJ>FKZ@I}=QU#g4aSswNhOO}Ll zMeglWI@<=5co|{j%IRwfi_kZe%EF_-F8P&t&nDU1Zz8_5lF;nr+g2}R z=fr>o5dh>HcwBSon4b`sCJiwW=)GJQ8|}~vF4A-U7ZcH>RtDZe#*ZSl7GfL3T6!ZX ztU>sS+gSFe4iEE-)FX7K(cvh*wu6-Hg~QG1Nz10+JT3zK`B0NE7JNiGP~XFJyvh7| zubIAX{Bjwa*8=(*I$bH%^Q8CIeV9+R8yp#YoNlg$i9(QOCmArWtMiow3Rc|3=kPD& zW(O;;{&~|}8->KcNpBFANT1u@8^gO!Lggh#K!jBY;u${FwOEY#FcH=&AhP1jR*ez0 zD{*_^nVIaDxf7THMh#l9Q9D9a$)IohWo7kW(@S~AP{n2d9Yb|*+4ZX4(CIn>37WK9 z>-`xDn*~knq!tyo)zD|az2g2qgsuogDe&QyaTT4yR8&M^cRquGakB0U|1e~g;#uX^ z{^(NfGf+h0#9;CuBKiyv^jD%W)&Bko#CrNffPV8JiyQ`$x$69QSpBKEm${W59OGer z=0~&_?i^6dR$K&aR#6*>4Hk7O?tW~LJoJ7(nE0^&saJq@COdQ0*-iIU*BHDYPfH9` z^A)Q?=U;6@AlcHOq5nihk>^={X2f^H=A=H^4WCJr^g3$Lp6-U!&swGE0iqGEAz zY`#!IVUDVt(m!n`x9%8i_hG8zI#hwr{J^ix54kHEu_`GRXX8)>(2avDI21%tlE~gf zAdA+Z_Ep&yjUsZFek;r2{AMYtcnaXIrditTw&{vTT$k-pU6pABs8;9f9~>peIqm@- z^`U(PT3ml3x2yk-&ZIC>P5WW<2O-aqvGMtZB|ZGcgzIyA+ap;`q|_pX48fW86dfJ2 zQ6!LWR#jw9LUP?{a;seaJc!#jIl`Q8DUs&M>c)4iQjfr8=V6dC&n{it*Q9HOIRWQ7 zcqeoP?r8#N_4)xcHCq`X8u;5nf)QJ#8&2Hvp~a~;Y{b=lC>}T9MK4~X;e<*nRtKYF zMxy@ADm}r4uo-Y8z+3zd)+KZOgGJ%vd21X35Y@S4C^Lyw57HDFF_l z(JiCt^g?v$h=2#U*|395Fo>-Bed%!PS&v-oug%w3abjFnQ^DZ+r`kRQB_US6yVJM} zn3ilnxnn~cYpM2h!csF2huul+#Y zLq#GNysZ&;`Y{5LDQ5Ne@mt^lMB7uE!jSnGf&I ztB&_rX*i-jj!feg!1-N;An2HCCn}?W{Y=-lLJ+86HZK%SOXMvt3JpU{Sn)5knQO{# zfmX!mmS8Q3l($iW(nP$PANL-?wI~ZHTq{e>rRq$nge{ur6|lAwXBGh+0Y2ymHqNCIG=H^%_MKlww*X0d(IuaYUSrgS)+zoBp-aQuZu*t}yt45#0glD)c8H1c@^DPR>l zlp6qUNLn#9NRW$9@CHLjm0bCw zSSdw$(zPc<9EhY&CKECjL1fGRMnCL>rZYKxOUGCi?HvYwAJXqojf#ovKP4gD82g8J z^3kOUj++zeJWHlW4ZYn(wG(f)Bn!fT#bper&c(hjYh6`JcTsOX9BOGM9=X~l2Wm6q z>sUn(aE6%TGM%30wLoVtbY_?GT2+%69gFDjZ=|E@#xc|>?r#6Ssi_f0%f^dpz1k#u zoQ_5dR&6rPD?Xa9Q%)*9vJf76r4XZn?-c>Kk%B~53S4tNyw@{Z?Z!<@9qYiJkhZ_# zCBBsx5#R_bzlW+_K+ZC--V$50cm%TiA@k$zgXt#|Gwr<&N;hNtk?P%NU^fjvy^HX< z=PrStGWMX7a8&1>4vgcq$+5x-V^=6Fpi)?-Vy;yF1EoErcq#QSXK`C7q$^pC!O*km z0FyoR=fHy4K#VhNYF4jX|9p@gWG@3|QCxjXbL!Gs?N~iCh}L^WO(l#*1{)-5ahz3@1J*$8w`zD?nCjIaa%KM)Ggm*(5bHmKIg+$QP2pDYg{7F3H(Y+XwJw(vQaeHP z;{VcMAE$C4{gbxDoW;nGz||?kND6loCv_R#CL~8fNR8Z#pJ5uuM@%LHIl}gPf9lM# zo4ku!Q{4 zVgknZJAfmXSKsY!TzXDD&}o3^!6O5~IhUAijKa~&N7aYg$Sbl}n^uud*8L$so@su| zgKVonMaLf^Fi#iQ{sQx5Pfg31OA><96OwjXuR8f)QWP5(WUAc#MN^EdNdl#GEbT^@ zVcLvdB2!~8fUip)_`_@=laHP7>N`3|Ahn$)td|d)(E=blPc2??nZz~h5FZ7UzS=+P z$ZgP>b9C)B%jzBH4e~KTE@wJ>CG5TRO@Q|tPSS|#p2NCDeBoPZ?JUK%g{gO?&?bpj92z4s#fm`95`?7HUSfD8dgg>I8~KKueQ4NF2ZL`#WsfH)YO&Movs^0 zwA<79;yaf*M5*LYn6+1Y#gn#e{bTlHa9HM@3+G6Tuv-wyl|8m;3NuH`?7j+y`qRIE z0d!1m1)Oh^3No=BnMNkmnSJ|*e2bH{36EGtTppi!Y4E2gMm$SlCHfBhG$c4pk!?LR zG*!y~(Yiv26|o(w&mVgKcYfbWI{CP9S{dpJ!%HpbGxy1*kES&xlZr7T91$BY@GlZ5^h|Tu*NDet@dreDUXXB^@H5 zWa3L&?a~I2LBAC>3%dt$LQPbIAAn;69!}`*cNgeKU43_o0{x3U?f!prBz1)!WW3U7 zp~=^y&oU3o==kL^XB4@k+^igtQ@%w3zp6cRvro;aZ!%5|Jhy|hfcY0`^&%!5QGBG$tn)Cfc9HG2?!>iTudANk z!xHiA8%(&wrbwFB7`WBczT$Ys@tH#aM$*%liZHNhse-_G&i#?dq{i{3D0F(_5}xWI z!8beiwZ7zZTyU|w#*6=gkIXDOoL~5D=LZ>8w^JC?$msMJA3q9&5uJH|xL1|vH9SZ^ zm{L)NhxX}fptiGqR$HK(V+XqM{j+8$?Bh{`XNk&WoUXD(tt@z-G5Ao191JC?J#WAK z1E}cEr*Z?u)fNfJ8WaJp*@6?9^_N~VOW}YwCRQk0-8RFIUpU!q9EKbfa4;ryLntP9 zaLC%0*#;D&$aHRnepkC0f|7(Hk(YOWdK;BsfN>@S4U0=|j=v$XHk6HELJ0>Mf?&v) zFWVD4EgGui)X*UHhw01!HWQW}5aUI1 zr|{mA+jsB?3il6b*kuxnFv4Pz<)JxTNfsWaCdeTM_xQ=t`7#OTV6hU49PD0mfiy!& z4y*h5#zn`@b<&l)aKQ0H7r!nuKp)r^mS*-{h)2OVw96>F>OH0C*1$~s@t0HQH0bD+pqN0;X;a*i2m%LN_lpK!w7>r3ST*v{s4g|tRO{%r+AwU;mlfv0_r zEXTa?ph*a*S;>D8NE%@v{DK77j!=2cll;#b(*dOCJz_xfdJ<7Kn^%>v>Eq;_3|Wa<@^i;_N}W^tla)?d3w{daKY5x)TDm`jGs>}DRz)Ks>FY}gn$`1xRb zt0rcyZcUFX?fjXWfrqb>k{{~}v1xT!EZbdd-()UHkc6s|8y$h@O0S?a4fz*4LCn%& zz|6lfY!=UQ$|V%ba&0?L)25AIC`3Vrf+W)$O0rCiU?Vof?IbiC%xv*+zZKzi9~S!Y zI~Z)e0g^W_@dwSj<3)#G`Yh@bs$bZ-|nt#$r2ZEZ3%IDbWp^1Y5 zdwf-p4l;Uxt7)gHq$Cx;*U+lx3c!>7xAy-Sk%BxTiY|?j?R7y5Ev+o;(fyGcNPh~| zY`NDxNpNw{4v!8|VLNO;SogN=PQB}PiznsrXhZA&WQGkCF0T8tK(iXHj;~el7&0^? z)odc@lyTh>=q8-#P_9>RbSZ-J3}tCLm1*Oicjc{XaXflJ?WWNLi)+NOy-9bGLm5p> z0Rt`SfiZ;8>Q7Tw`CBTo?IbRpF zem-G}e1O0%>Urp=NAc-v zVB(qQw`V4KVY4|2xiIOmq&7=Mo(wQ)1Y3)dQz=*$J}qP?rZJejXoVaO7Oi`P{LNQ5 zI_WFnJdjd&Bkh8TK_V8Eb2TrIR@wId$tvQ#EUSqjP)WU}EE$v;hl(Ml9)uhWqnZ8X zrwD?wmLUHnUDbC!jx}9;Vv1#6XH3d{1p=DtV+G;pAxlep>-B?gsF^L_RV-HP*tX{( zGpJQk`D|9hgWg1Q&}m8S_y+2&?wnAgR4Dk^NEs1xH`CAb4en#wU)`4qFO<5eYejPNZiY>Sz{qbQsH?HI)J?76H)a z5KA)%*NGmp)}DF9Aj>^h_=9r|aMIE{E@w39U6ru=WMy+C4YxlmR4*H_Fkz>@&TWqM zv?@GNml&J|VH%|HWDbwD$$~nkE+BxXs^6Jl=?u-}c*xdlD9o{KN z&?mianoW=ESnvRoA93xAMcZBm-P0qN&C8!84Dh)j(|H(+HIgoEirLlQQG&FZtfc5a zaA|#ML$DFoMrTojj4VxwWhVjQoyYMD%lSlZOSr7eACQwiU>4XXp9x?tyF4a#>vCyB z5u}Ce$9Hj8qD?d+xuW`aWMhT#z8hNTW`Wx9C3a zzeYtws$F0&8l~Vv!I;AE>^nV}-Kl)&|HFsZjJ24CjJs*g9K!KMgGNE*=E~Eu<+=Xz znH2TeG^Y(bXy2U}m@|q!LZomJ<&S@$j3sm}-?4;Gj`aRtX7^_LnXA2N*KV7~>PbaZ z==4$l|1BGY^o9MtSH+|AArp*ie}}9B6q0BIK%d59X4l1M_1=&x;95`E#}uyWsp^3N zO_B9Wm5ne-8ZQu|>penjwBlSRT*s7G{))TzE34fg$>(A9K&c5fvGR68`>bXtLdJ&X}Uw%?w>GmpEi^{L-I#;xwQJcbFh~ zM7-5qHow2wXk_!7fH=ZIq@|r2!hQjfw5mKAvKZn_B>cvKp>+w;V$RuFW+vI`oInq3 zSAXQQ1C(M1-QZwz-)$g}R{6aqw~uuXhc6%ufjkrC=?QiJfPI zwwXUELcAd3=$bQ|$~UZqEp`p<5|f^^V>}MG@uUx!J6TQ!w1=T(+W7xJ(dZS6tdKFy z{avW>!t^p4uzPS=svcJ%nz7AJ__E$Vp+tJ~PTojVlC6gin1^7u+Fwruc-nHd^ZjU0P9>aOorl?5NPPO+ zktPfgbKqXophu0)Ns=v3I zkS_mVt&MOIiL1Vh5Y9)D_x}Ryo{(gR4@)tims4# z-(l}znY@HWxa$f_C+WY70KD=tM{fcvwVyj#0n#(yct4}`OwiO1-zpoAC08TuQRDrF z@)M{Rvc0Fg9;jfe!e8V-6I)Ld=uv2+C-Ukh+Oq8aNNd?eH9K+ekPDwOmOhF9AdimD z$vXgw*-KQ`4}GRTcDBIIG715(yyTEc^Q9Y3*%`U1JpN&yXv@1cOBou>cL5CvH?8Hh z#hk`Z_sHC2CocTNaRun!OBCx}U%(!Jm+PDk>Xg9NYCzbJoX~k43n)!`9Ba+Wv&RW) zP(Ojiqp|^2{`6+%*O8)LZwCmS(7j_?V}!N-RW#jObQc-No8qsAa2iz!!$AMTCZhKj z|G8oK#B3u!PJo^2XdOau4d&<6Z{&Kw1J|FQhqUA8D%0Vh5fX+z^kyvfTxC(wh~H-f z2vw*bdC;9b0A5wOib=~KRzpPxV`g>KA6=YJ3p=L~R9k5+%RZ?=-_*Hd4uVnmEc9q- z_!x8IA|m!D;^EyCle{?2%qyTu^fKtB+y$>jM`9wiSUCWpmDwXh1fVN%bBq!TblwTR zMX(~;!BF%}<5r_{z zM4_nt$lMKfS^ZKF;C*2_SR`vq{L^&f zM{QL;^mKh7=Rk%;$g03Eb$MDZBr+aVb_ zuDnX5-odBOD<4-(sS{F5KpeBXEib&x`(RS9F{GuZ%JGst+uDo7x>`XZ<&cbD_YzZZ z@1!cS-C&e>$#+HxoZWL>!=NLBLYv(0iE5@&vH1aXOzg7OA{`pP5c)gBIIihW77Q8T zR9Uj5TQH7h))x;!dw3{Ss*T2++yU7H_L3PyV=|`kSJZjOUQUjTGRoEeHKMb{Nn_43 z&*HNjTrvUp`aK_-&mD7sH0rCRc?Gx86!8o%zMKbnNB}sdo$=DkKE(owu~uW2t-B!# zv<$6T)1b;BD08hq$KY~HyY_Uma=&KxmFyCGi5cQ@8Kyw0X^iK`2n`E}Yts4feoeqN z?2hc7PviYjZS{$K3i9?t=0|qmiiQ}69E9dD!223kPak{D#|6J-h$w`I0FXIyeQ&|o zYxN<1%e!k7Hzv)#)Tph)p1dp0Y?+3fOJG(CHke{(^8iLA^TfgMNWP7 z4OGyx8)F1AFBI+kSmclV`QV#@>LoENIpLge+xp(LACo`l>#rTuS$Q)=>dxi~NDLK`&r8t0uq%$d^ zlUc@Xg@B8m4&V{Jew&9y1)VEUbtZTYNXpE9ub1IWUeS@=fDq2vM#2q6fshOj zxb#r3t4PQWPsNhB&FR^jn<8+hQV6lnywV>yxxSa?{Kx9db4ol*e4cW``I~WzRIGRx zXy{TrH!NY0yiG*c3J^b+P;=~0(54!;qPyOAbBWJG)?B{b$%tG!w%#u=e^Y6Lpb{B+QYbAn(WCj)hd9c=-+j!e5CL%WPg_QJSr8C5L`E#fV8%YBGyGH|lZo3?MiJvd+YC0*+%3W=Hay$;->N`x#AB)( zQ<<5PdXSC(uK(KoV7$xMT+vrr@@EdnFg6k=$2Lcg-H{cM4sJ&aRcs8>YP~@k>7AGb@Z+vbQIlc4E~@*V?IbdKaUBV++wyBn%#Y7TP5=qf*U?|)ga zP4RGM%)oS=q--jnt#z=0RNbkYo)q`28%C?J?D;YVxQ>2v)2kNg<#CPHFwe%5{Pc8- zf&J$lHt*E?`11Ww)eG<-!FTleb^0Q7x5%|C7Z`OEt8M6El8Gw2Ocj*EHSVZ9G9%S8 z@CJ?BxtCs(V>{BF{Edq2h(|;f5B&onI z$R%b@{Ds=@lz?qGsCsKMuAOp46FoS~^rQNxu4o8j81C&amz%fOB+R#V%fu_|O8%hI zH0*5fA^K;e8{$#*FF@u1=y}6gGKAiq$bwkUg;|}_4=&33dDOLQK2q~DT3Rf4M19}N zB-5y}BE&(CbuTgxe90)3LTgU9T0oYz*`MUFUko?efMqBv$#mz6a=#bJ&JyE6 znM~k>KZ!m=+KRJ|dUg`IVeil4Rq)l;aN$#Xu-tV@47RW;k&kc zg%Dy$rZUW2^c1gHY3AKOE)cthux8~qqRv6%i zX3FpyG=4K)j-l*RIyHBQ@hmbtEjA{6BW~GqGIeqnvOsozmQkaslCej%b`v29X=f>2 z40mVj8?Kys; zjph@v3npjV8I4Glif4|ISl{Td((<-Z?KcGcQi=jmWD!t5s<~gG-3=E_Z+ktIyDXGt zN|$wu?rGgSsU~mSL|o*(Bri2o+~!9B#AE!kj(-FE8wUqHsHim!s?iIc*U?QVLl1nC ziW=)@?x4^tu*>Bkk3{}Ib!^U!MAXvR3&9w}DL>45io$@-E6eZ?2-E9YM4{OdkP#)2 zAyBeNMaSi~8za`|8;TyH0WYz*5B&m}#EG53tHnIlYn_&+8o`Sbciwr-{RIrFl95Opr8TD3a@T+zt92;cJiKzcg z)Mp@jl-a9Ng1;pEQD$fWJFB&-`w^!7-zoDe)*RUgEQzY#%`JEcoL!G`{|wIE7R$7A zrPn*8Hma_PxgUl`t=et?s->^kv1FV-RDyK#XM2~+pC=FCPRJ76(>gDY;gcYPbC10jvm0|crciAd{l);LT ze+BlE5mAr{#2%N#+9_{0FgVt-jSbfRML<@zo=aM)Rc`1Oy94FpL?#>R(cxQ^Z}I{2 zDBK)9rVwo1Pp8nXd9{3VHfx4VKB-E8Qo_|uY1P?pw*qPh>bg@i_6bV%k8#NnV5$x7 zW0TQ~Dd67zXYtEWeW2;`(<%ix>e7d#@cTwF@5~^<5UL4H+8#hFALCu|0;%V&UZcS; zE-ieG<>^-*d}l6PEpZK6o857cn1t}-m!o}BR|MEp!`NKcd#9L3S)?MBDaCx5k-WCl zb>@|3tc^~vqM&c-TKFlmLW;V3ip&%jK#ZSEhEK%EJTHChWz#+Wim>OfRiD8zOWz)= zKRQ|O8RMX$?uYh_Z~F%%KXd<{C>$y~6@ftsbIm1G-*65CX*#ki=FPg^?M$8ZI2^oq zlBw?a5%va`h*-$1z&B}fcxa{60xc!56{vv;7%y5MqcX=N15?sWbt~!10RAv;&Y$|2 zHsL~e75>-8kOP`H#QI&}YGIF(44^fP31bh#+0I4i>B#qy*_p|aGdf+$H_>vG_au>c zhAO&(D5>Yfq9}&n8-Tw?h-D#&t*6_Bb*73hTx~RsB>7~;)Be9Dnw5(TGvL9&UBF;2 zla!h-9W}LIn|}ZC&~moD*I*wU_rurnouz4sh|leXb}1obt813Cfs7;EuNmem;<_9B z9-M)^wZLKZ{^Nln6zuphPNMntv)8-C2{+f6GQ-EGv!5Sqm5n*HLb)DkQs26yUYB)m zY0Kb12~Y=WI%~MuqWQ6~jOHuW5o?c==6D@K`62w7`hN3GhrO#zqZ|{!TyNhjRG#p- zpWvcZ7Or-_A8F2hCr2L`GGJZYQtmUQGzaiu_KEANYa-SS(O}LQ+)CJb!;(H)B`zo0 zjF~VPTUKoOqKb%z_KJJD;iu^lC^P=XW>h;zqcq#*m%;x)@9#w~QGDKy2ih&p{TvQS zFi6%jY#N^7VT6|TDE!PBck{(ish>_(h41wW`vv%qY>Qr%sCBq*x@Id>0H}tuIkCNb zFdOtcS_g?oA?W($UT{9YirMoMYB1a^*q97TWned0$zrpMMve@rgaLS@V`p2$kb_ZN zg*q}jOH7E_np)|G&B{In(21h%)hf|b#R82gRDXt&k6*y=4E9Hiy3Y5&W%8gB3d^HZ zLhDZ>IjDUVttL@SHsRiBWbO>kk$Nz|r%SE5mgwr-7ahKze2lmpSnBvZe9`e>UgYz} zly6rs*&cXn5M0jCypg`f)|kRC!zvYm&)u?6DK@+}9x$kWF|!s+XyPB zyCs9e`%{y(GpPRclc^Awufkbc0|GN-T1KMhrc?K1t&&t90^7e~KP?TU_>#?_|7_6*X|HIw8IL53A*UX0B& z57F&b=aEx*onPfQ&HC8BZSlI~8KyQE)}(62i`2(tfRov0J`B06 zLyW99_+U*kChvRqp*SAv1Qqz|Kle1p-rA4|M%y4SIfdU*_7Ys$r+e=h7a1=9%WL$D<@QM(*O3&%Cq4uY^PBU1wY0Yh&s(=0Ez zlyfEdk`w4L|2V?)EBd2EEutr~ZQI9E0C^okjEibsfbwslB70zcq#@7qc_gn10693R zNnUf+e6(*Xqo?~h2y;qPsNS`2GKuTo4bg(!XD_B!F8RIOnZ>jHi>GprZWo`9(dcRY zn(QMl%__~832dA-$h-P6m)wQ;6y+XS&$WcjiM5sygKRX0>3~<}t>1b9iXAi;VK$#g z?SZpW0byBvdA8(JW8&Sl$FpWeH>_EEEM=h0^8Gkl$X6)v#Y%sg)7W9!x;&=o@=n`D z2{6zEJQow&tB^7I@!SU_1SYcaN#qAOo5s}pTkM2?5)Zg^FXD(RPf$9}L(GQZKx6&c zD&61QN@m5q8l&zZzJpbLT?jmz5hJgZ)&IKu$08R1Vg6&X5~z`R(M62&FU|vlY6rIZFr7S&ClrhCf~%`9a-UR>R1%B=dWSWJZ6BWT8y1d1 zP&xScwM423!VIk+!^1oEa|5UB>oYeU4MxmS&bi z#+7LMqF*_735j4I=iGh#W9Z~h^` zyn0c8$}%PgF9XJ6pwsAt7!a^J;px=37FOvcocZkyRFK?U>aVsYUwfz1ClI4fPJ>4M z%blIQ2jfe_uML0imVrPILyB(224XT=MY0E?CVGuv0lXO@8ht-@!=EXRsaJa&!zWT2v$Y2&55R! zKDek5!%>n{l!tASXe*Y>p?-;J5{jcYk%v%eN-LZ<&D&<`_c}=)r9p?2Jc2J@|!K?TX zkjQyjN}Xx+W3stVKIP-9yn)-5FB13D&^RKbon1%v?2^*X-ioexqlEVZ)1_s^8Ntn% zyFt6OvGJRp;JT4T-2a$aG4%Z<(wY-CsMiD{lA^Z$en6DWw#{P$R~TGHbQd;2e+sk3 zzECfTE|A2YqpDQaYUzAW7yIErgMWc(By_?5vNFrBE>Fbi{3{}CImOJ{6y{lFQWNL+ z#A;?7{`dk5Y6(*HeyJCCX)c#y@YuQQxLZZxOg7M^1ypzihy{}El&9jJ8>BJ0%!ql! zJC4e}W|yxQLloMyrhK~i7p}XJWNBo~Hq$9!9!;)fOK9g|Ze;pLK7PVbOBBZkU-dU2 z#_HIRW^1G~^im63_x^?G3eQ{2-d9@=R}`VJFZ`NuynqL-eMNu{D?CTZAA-!zcz&)f z=7q??&CS=lMCL$ig_fNr+cEm*>dCdMo`2g=&(D=eaeso?o8L~M7f)iv*U*x5GZE1H z^@9WD^9SG1dv^vx#}%z=sj3K0o1v^bgH|rYM5@D8Snzre`qD}1zqW&sqX69n+;w%T zS6(FJ?lPYU{Td8E?_k!fWL4}2G zuDUd6H+nmqM@b;Qj?=uX6a^sQpLHjN?fziw*)ryA)#_5XH+vK!^%Qz(#hql|CJTi377(tRwwI8MS) z{@H1xiCrs5xpwejxuU-Ol=9?H@SF_WSL>Gp;r10sP80P>XLxvx!B|CCrQi+q@ZtDn zz#ntrqFEz%+2vnD0nHi=7eAgRhS@alksrq*4v)c z|D)^-76Oan`X!9?FeUF=k14v+3t zf=vK}m`rS;QJdG74UC=>JBTd+fM~Er<)_-V#0?>`ru!Wi#}tgJE6Jk{{$Bt@mUt9T zDe8pop7Df^h|&yI|9WV|=W#(p2zv)Wi9NVA?FmZ9_DYndqI7i{`ys2_|HwLhDNY^- zy_#gK(S)k6q165Obx!d8{J$4sxh;3xt-YX95-^Pg*_Np1g=DOe5&1QNVvPC@$g8Gy z{kXGu(4`xa7mONa-P1Mv|3GnUsu7S*<&~b7Fe(NeCAeGM54^>SPjQO)dQO&Q_VGBK zRa?C{pVzxIdEM}ry?rt_EMQ_9OdLlm)I7_}5x!s&hYa2iK#R60b*A>nv>=K{{#9&^ z+ZkVzKz%$5etWT+0IJ#O;;9zZpNW=D%Uo9%^Sctlc~nWf{ch4>-JxPP&ezFb`!Mv= zC3gfVMos6K6}A8lZqfM2YNUhnSrAn%9u^qNAXkCz&FHdLfbKUh1l zcYZ}SKr%lP&f{NqV6myPyR`j^!_)vkbw>88u)xlthCb!k1yf?ofi)PLJ32SM;|@UT zec}?tQi+VDbdu66rqRt?@*?OW>7gNp zc>8Ab+jEQ@IqYG^v9THqgZXp3Q*_gB60a(Isg(CTFpY=jm0vtG%e2F`dV1!v8?QX9 zYeB#-?03doVQ5HkRa_2D9fdCq+W41+GiF`ZxUxN4j{p+y2BETbiRY(+#@fm)>HvpT zaDTU@C(zPoM(<2}sUHJQ!X5Z-Yl&Z4J06FSV4Mc&vchdv=}mHv z*((T6G+0jOJZ@>r7igXKj~p=kE&DlL5@Is=w?ecvKOsWY?h;5p(0yWB-s%k=ixArJ z(A^5N(2#ND#M&+Q%fHMKXPY<1m5{J5X`bUl@=t@Xm%KbV&cRGkiS1c(qQfj0=333a z)9-=45>5_vc(tq5tfXWuvr^10`7X2+Qm$1cvDV$P3E~VgXEhjh{Rmc}69v=HqF@HU zRwwzvf$O+=O|k=Z$cw;YXE?!QoVf5dHfx!NRTkrPlA9VWQP* zYR`D}AUgR3_gJop^}CUYJZxR3o*DG^;@_RvXwlDiLo|PpU`T2oS!>NH^pcLjrX~*J;>K!@5$;=oW{ql}Mx51r{-0hO(7Dov)Ozrf zlO%8=Zp>j`hA3`gy6HWAIL4;XPfx6ej5wF4yo;! z)g0AR`JDTHR2g)S%F7kdujJ~p^ZkNi3iKN2yJV-rY6vGqDu<4u4!kvzrRFWJ_BMQ< zT?%4Z7b?#ORglLUB>Yvv`r3C{5nQA2u4RQ|V31PQH8+_;hMR8byYcYOitY$No7=Q< zZVG^5>Bd;Kdlgs??);5K|3#))bKEMC9?}iOzfe)mAwCe5Cqc)HV{kF^l^M3IP+8&U zw34)~#AGO~)clI+Xh7~D=10|(S6Za}^iqrOMa%I6NWN^tplELyB#c_nf~>$q0_&mD z15+eiX&4~mDFGeINg_pSL-pJK9$=jMV!)pcOdyPpxPrz@6l{`Y$G zg$5yo>|EAd2KA9=&UD0w?Ea)K`VPgE=&w{Rvgi+k@ja89Q7bS) zf0drXY;yq_e_}_MgzINoc}`Bn`Qd0SX@sM0J<;Wexr%SRPmpc+VjLf)=Rt9tr1(b* zvjQ(yJ2Q55vK5Y2hIRxV-#@NFAyUDoqmA`f*F=NtA3-@bve&Mf|`}_P*kZhC23eUZp3#@?Zu`7ppyQqFZEqMQ8$_S~HUAI|FAnMu} zL^Y(W4t$Yeh_TO8Iy&?Z+d!Osj`i~OSPpAnM>f!(>dH^5M{_4-n~N59h{`Pyk}5xKn;zZ z$wR+GUO#gLT9{}HlpWLVt|nu!C5?2Sf*!lk@-lx<&gA@5W@4+Q?zj zT&PwSF0kJU^)3e&G~5^Kg<1VpGI%&Hcfi~XKuf>LuO&)DM~nI=VhT;;pR8Kt0Q~V- z@C3s5U4wX4zv(F{uPWJgP43yvR*}aKUnEIM0N>!P&#DG*ZJ-QP2Vjl38JPxtJcoEIo*%hb9#9Vb* z(UpQ)4ue&h z;e0A|DKXX^@D(Yx_Dz|=e=?^Q)z2^PuX?rw;mtbNB2iF)BX5hrUN4s^nON}K8@@tb z3%uq;`+Du}vzX(m-FzR-cTycd+js{9^$m)4zzu0lTsq;d6-Z}(Ho)WkD^n{mb$7MP zDd%8f=HgKc1J!771cEVYSOq)MPhO8bqbP5J*P02+2-o9 z0F{Hn!TEKJQ{U7}M1X8I;h+fF1$rf2&^*+cr3^!t0~MpI<{fsR4r|lFL6JzM0M{B@?w!; z8!3sm*4#M#Sq$8t7_97;V#jVMvQtvFFJidZiNZe<^v>LjSG>msdeYgiI>)r1w$Uw@ zKz10g3@B>rcx#0W8fR`R(ieN6G4YBabq$w?-_WiP_FS%kjK4tm6$2M@Rv;kDkDdjQ0O823r8VhKmNazllr-o?47 z#j9*-^o3)@F@2Vfd~%EgRPEZ&*Ii<(9j!)Vo4LyU~X(nnxWe60&|S2E=B z4`_rI=8duiL?hZzpPIT~7H&75KZJP~mjW)^30eA&P3$(gWXS)z{}rqwHTjGSa}isx z$z$HU4y8`S58X0mZ3-mI6_gfVZEd3LOuWbVKzASy&w7MB!QKb$Xwd7n8L%WP13%)b z{@~sz*K8bGAuKgv6psuarj4OtvcgXUz1eAKx3-6DD-9X95`R><{eYmVAL?l z5<&q8T>ILeA$tJ-KLEh1QO?k(U*{S$`_zgc^#X|&{V6;<_VP166#*}v=rzU637V5* z*U|`K{?Q-cCkz~pwMRP4OB=gZD%&;88WP{AE*OsZi0((qq^bKjkXZ_#!%Yl2XQt7q2~#1beyXGDWpa zH<}A{#8P(CT3k#lPQYXjVT$GBa9_Lh3I?Ym>KH|rrt$Nkk~hkk9ppiQgHIgr7q6BR z#khV3M+;T|r%#?6Tf#7Zx#vvv#?A+#!)R=adaRAB$t#bi4|?}0f+6wmhH4iAvRWCV zJvoeNVX@iUvBnB3oC5_9jw*An2zC^6%x)v4{9VTtU#kjo%QWbbpSiSl%8&l3ifc3SqxO{ha%3RRYrwn$>DIa5p^?3UmB^K(fcDuC;!-%z_?V}(85L(w8DULn>Ru8_46wj3hM)ppcG!5HZ-m526dFG zox+R@E6HcI{AB)d-}$qf#+a|&wNMjpveDQ4gp8_;b0l3wCr&j_Jq3>4tFm;;z?kuF zL8kt`ky0Q#1{aTWUVG~sZYvL25|x!p+=HthnePTM2EwNhG4VG=JYSqNIU zPQ(=Cjh8D=PEcxXvS}=i3SnFF6qpGdL9fnrY_yKXU)*~_YmzVwk_MNW0Cd~T$gr7s zM!A&&YOp<_jLApH9?z|evERp;uD?t%*CvHzFbS>E7aex$@>qn2EFI`W> z5_b{dnx|LU*d?4DpR>o5BzY1%Q=U~bynKB`dP zD9l6C;->Z22mEV&S!bnsCi~h*{M$e6E>!W%!w(CfY>^4#|2`ymDzy&xTv^I>@LmgK)P{Uf#rKc`;IQOla%oL-W@X|c*633kojs15E-4ck?ZHl z`0fk%6HR0r(?Z(@*f^?g3dQAyHMaV%E;9QKgPO$sMQ#CuELl#uTVBU9XLaw%!cM$v z!4Pujore&Idsh;OuT2C1Af~u29jq+jfjKUN2@Ip;E(pgJj>&1&Ah2pCwLE!fWMdF} z+JHnvO9PoXz2r|JM&1S^wMFh5y`ZGjW@*+eGwxfI-Rf5ZFu##R8a}Zu58GlS?nb z)@8rL+v&Wq>*fJ@*ancM@)P*AtO*bfPM?v1JP_qX1H={_ROqviiijzl`neJRE{9dd zw2`XOx*i{YIa?}^47D!uq5-Hy5arvakE?-*FygXKa`ddx1WQfVcs(HsOmrQUzs|E{ z>-uOo_kfSxdX7Uwds=(L0-7ItY+WC%LBg!o2TDAV8p3z<7Q>K_eP2TZP*g9CRwJj+ zHM4y_D!S0l5-MEE)9h$lEn`hy$PB&2Z*JXC_o90b@*d7O3#1*L*de6MSI~G7i%(;a zR_&x!ld)#cvYW$q4BR;HPwJ>f-B}M}IIgaAE0FOgp!tT(hq;m;Z`QVAKKXZimP|(xOwm0qFziK+>k{!zSOssAn=s zg{ZM*f~U){r5jVICA1sO(+A8EK_8H_Sq=05Jgg6Dq$JqR6>5lIx0g2gLJT_^2+0q|m0xm7GSs@Zk2$d3ftXss7W++oLMcQwbkUGp zhsT7!9^=Pq3N!R$=>~vzHAlCqq3LwWV=o^JB;@?Ez}P|{+zL!RB=-m2-8VSH8-%Ym zU(SyS7VD*`JLE97%?@t1F?o5O)p7oHp^Fog2bqRTG5#U49KxJ=T9^#9YSMLS^@p#$ zCk45>p91=lWn(1`@e0}}11v#1z#K=21pdETgk3<&bs5KDvJ~Qtd8(Z>UMt!GAXJ)w zvJ=s3`+9$qlnj>=hJ#EN4*~bf1n3Rys@EZu2Y>H}rJ>9$pZ%jZ?q zY(?PM|KbSQGC9F0rqJ9<5n_X5f9y54F|1F70iH$P0taF z{9DaoF;PqUDK(1BTR;@Tv*|_%dT-!=s2cmUV%OGvyBpy&(KG_yxkBronGx!HZ~`@; zNyCjOy`c9tPYR5f>?QsTK6FKgTbA=lm#_H^3N zcEt7MU~PcbC8kZw7*k6)ye3F03k*8kSHRs=?Eo@G!H^9*ERZts2Erv|NT};)!m_tH zyK=n1CarPzgu3{G*mgxOX=goI$gh8}5MZ(#ZrnHvEZwf^Qz~D2c&mt|h2gWh<~l!& zR{Vg9gT7e2oG3h%=HyQ+&Hf$e)IR~=47!=X$9uF0mcPPhBThf4?&3ZulX#r*wU_8$W!OTzR$;akU^vYVBD zK;+qE=O3fE0dX-s@O1(AgM73b58=~ibzNvTXsL!WR2UE1tKN&|ZM9)E4D7snTwPa$ zuggV~OU2`IvlBYo-?C`jT6=0#nbbnds^h(O5#fa}8p|#z52{XQ?l-K^5l=?>65EEu z!Ui0xZ!MAK#Q0c>6B@qYUTC*sc+F+?gcCnV(5TA^$yxzsvbUiZ-^&?Uj;(+Ai=PH} zkaH?hnM-m!drn0Iz(e}^yCj2vf>R>_KIpyCfKSO7>~RK$ z`b5YHJft!R^fjdVVMwpa+&U9ZnThfAX{A&>_ad!p_1s@7ly|jEMlR-a-C+{m;j}>A z^oHHRwLlfvwLtR#CLnUuG753TViY*&yz-Nxx15^?#Zik0iS=0zV&LnV~>dtUTra z7onYoBTJ9KuVNv0svk0COMJD%0rUFoEa&P<_~`&b{-@v7pnb-S)Lp@A!G*>CKRHaU zd%cl8l5RC-!qVP)flz|?%;JK>Ck(9jlk0Um2IQPHy8V0)fSq55?y)fsVf#O< z*8oCUjKpd`9t%kIwDlsP-Hw^LBrABTojkR+45@i8*XD=El zg4S9PDfSe6t*0L@$Mi%Wac20td_m$G0k#WkZ9cQY;DY zO_zag={({IYh0$-{S@nLV-xO|fZJ2;?1W7Y5Dy`;W8B(OtG-HkxcU2{lCbzYMf|UH zWrzBk*S&8%kzL<+;vjb9rM5WhqthuQ^^zwgX#mwoedPW#JY zMnm$&)rG~EaU_TFq6IZcKL{rJbZSg}z|8mAwH?oz`r9?wFLwQS?O%Cd@kbRYHCKmt z&vOo_Z0Bu>EG*d122FAa(X7&Ny!sb>@2Yqi_iZDvG%UN5M~3CV=@mjTMUpr%yr12f zoz_sL^<~pDlogwoBk$pvv;XWjyb>94H3cXa#VN3xgfUvnVhWHWDCjksnxzjw%cr*M z5&TZK0*9PD9`8{>BFk6!F!Yg%>URPi7ZQy2$J=tzJQ*@@7SL@{G}A1;UhaG~7b!yA zvOI9~y4D-9!imC-h;ZD+v@yIsvJ!yE z=P>5kkN%$~rRm>BBN3mm!Nahoe1-}OHnta~#@TMTGTslM+@=2)>p(i@^oSuQn-8|F zlgEhtn#abflI56zLF1?VsAH?OXJ?O3Dkvr2Z!Mle0iY-_-+m1yJMW85DCD=`4D~HC zK7_bx4?mZg<_oUNdVm?Ms5_5f96zxh_#%6=w%8cl<>D;Xet=AE`(WZG(W6&gb8==< zFgugn-?ahE%X@u%M^#6%StmBkdKr9;sv{oAMoZT27s$p zCHE_x0Thv5hLX6^e{{ZoTKL*Y?(Pvohmk~3aFn#}(mvd+`&*B|!GLun1uM#r!>E@h zU0`shcd5v;rdH}%Vpi!F#o|P;!z2OKPR%em0TY#WtOgMz{@pl+-Oal|3#?-U8%h>U zvCXtdE57nX@kcszw8&J#(SP?{E;y`m1b~4C^M%f8G}Y7_QK(c>N+U`n;A0P`Qw}F0?Qr6z%KJ4tZ$BgB0a&>3P5}q{xo%+ zQDeeIl7$$feLU7_3B7Lk(b8mZy1fcX-8+SZh1Y|BN!8-b&n$JhDnlq2Rvl17$+``gS~NfXHW6Ik9w(nlJZ_dEg(iRw$MUkkNMGcpoEmtaD!+ zgWJD+x!l|b$O9PA1teo~$^8h;@*8@#x)WqG{`-_^dm#zf=r2VAUED2{G&x8_pPlt9 zY@vi77thCbgATxVavsAqY%l0hEo!1cM&*?7d! zz+d`IsD?R>qLyx8#6ydX&C`nIe_285Fo5f&58neECMseE8yAQ&Ex#BUi`yTS9kfL) zwXjIalc&CsqI}Cnd6VB2L{QbA%5|ZH^Q!4KqB`C}umdtQ9$*NsTY=t3p} zjFGw$fkf>FUQKw|sWs3Ll6r|5DR5f=@MgOsDNQ~&kY?ZBW5#okwIt?>^Xl_*hC(4x zY=f%yIeldT=)=)jkOn)H8%C(I&0XII8Sx*^9?R>GYJjcb*#Q1c&J+sshVA%bN zw26x$u|&m3>61$La2O%<`GD~`JIANzbr#({R>}=1Y-lNWD3jqS0oUuq?0R|VL=Bs@ z(_wLDzsj?fV|wu&4J;mvC*#&w%p3_&QS$Is!HuV1vy?pe4#4D5)Ma|rEpR&uW4Yfp z#sqUqdEhPS*L>wWPOhU&7Ki@>ml4|rAJOiGmqA9AUzy&ay>JIzk*b3{&xJ3QdU-Ue zEwTdMC6q#uEiPJ@6k(%tq0K3gx`PyNX^ADPXcD>=!ZjACdv1BjAVet(e~@o@Hm&+1 zLVW|WRf+d_0z3Fhs3-pxg*MvK_UOzT?D%Bf7ET1}6_|oVbVA~993+y2`xh_46Q{PH zgr4!?+A1Ayi6ijqC$x4R^+^^x5P)hqMsMFnJbR4|h1(ni!Lh>R#D)FT>iy+Ca~Q@B zvw1|f&La->Ym+9(Df>3-H#hYtfg8!g6>Kh14EMfIxsVagW5NH5=H)0E@+FmXAJ6e} zUNvC6VqeK<`_x!m>wK}iT}Q|5{kv^#RwL*gB$kE$@zbPpmOwaVAsjQ-6=CwKTuC%x zbuG8G7@B4U7Nbsx=udVi?66)xKV2UQl3Apx$5J#o=;6(z;gn#&B7~MuV+lmu(1{1| zS%k=44b+j#r_JpW((4qxq<uF| zD$)#Xa`IoO*OD^#-{Kvhne6bg1*I=P8=iuVAi|)i}{9`i2Z;%oQ7((<^OXXS@jVm9LSbdJF>7Z^dA{%V(%%pECWND_GD= zug3<(PISl{qHXPkwaq{!e2C3itjUl0p^qs(%y%gmtp~Qx6d~cOq5r;`JOOwU#MHYBcO#JKe;7P^Po5;oTFiF@HqAn)=a zOT2Gufm2S&d-#ZDwU7SXov9A2+?>@?Ij-a|r1HP;kQ#HN=`*ee;`v9xGfeeAnn4MZ z+NVZdI`Fd{8nn5krys2^pFFdtf%VLx@{FSlF$S$tu2VQ{>@7zAjyfjpb5>?gYc)v- zg|nrQ7;1t*Rc#KvZs?<@1x~e-&43+_>4ZNH3ByA*-9|2PI3$6OA~m+dEBWX?Tnq9=^O00@(o`O8kN6+cg%!8I_uE`N#4pJMS=tuSjV-3EE-wPx~OTWS@fp3S^ zdRkDMXK)WrpPGg~%DY+d|5vtixepM1jn9Vj-1J=`VRpvj8-}y!VVSP^UK#%M{oENb z58z1+r4{-TYg+m9!YrX=6T8&{La;)ieXxuCz zOVMVMP^-weTe=!Gm??u^^z$V;vV6jfHyz-|%#dcg$WR$$$|&EOn~icK%a|hK*c&}3 zMs_PCgYlgiQ^L3EH4g>%I9d8+iw*KoECqQeImLA_EWG;5LAS=!cFO4mRae8v?M>$! z-#ZxruVDjx*9SWxN{eDN&szaVgX?sCjxY`)+Gf)f(`U%;bg7L{z?ND^vnixBl7kfF z6a50Eyf*TjMn^mmfkDx{!X~Lvzwd-aKhO1n>n?*O5%bKLUw=7RD!y4Fty5Sg5iFge zto?hcpv(lf)%_tA;QJ?*Z*Q%-|BAED2`bqSVd<9g^)Mjx)7EJ2=}@{>RZ~luN0`r_ zns-UJTe0~i(Epp>=vtk^Kj?A0vWk%LBOl3EIz@Ak4`$15eKZaSvP1SIge-WEH=ZT`kv-DZ9d3`@M=jYxMPZ z8k0S{GaOKfar}|lEK!>KE?FI>P`o<8%+%mvHaYfnibv7Sq19<+IS7U6+D7*pcoero zL$%e{9uwlAjIfdB*z5B%2Qf-fR%#J?L?I}t)s|b}xnDhNl(w(UzR|a7MP{x&P&)xP zBx!a1#L79h8sz&_PBC1155OFUSnaMXuR1FMx_&<-dECcx6OUh%pr;Ko@+2B?APg;v ztzVrt@74==p$T004QGG!0x--Q>NS!ONCxmD!Hd^Ankr#UWw|il@)6)^rBPzckqU9R z=4MPR+nicbe^7GEJ_Ql;l{koz@U5*1F^f*tK?l*VI?-6hQg=*gd2J+)teECqn7NF!lv+dF8+9Ud6{vq}-JIcPl-R`7S9r~EzN>Cv{(+D`q9cR_MfpyQO= z&crY=KpJZ&Ge2gEmn;&y*j7*fxJdHj-7buA`?G7I-d;`3d$)^fGp3jxLD%=8Q5{!o zPm1TID7G|L`UQZ?f>Cd4c`xBXGf*w~y(jpt7ms0#5170@%TU+m66t!P3A!V?)aeHn z{gHDc06ommn*3{xBPvdW6|hM8wR=Q?M)Lf&@|cd+m0M@pPgl5S<;GAWEh8sP=&>@Wkq%I^t%*?H8{2x=;Cc zJH0D3=6$>AbygXiLDsTuu1;*ucQkm2ZoC1)OFn-YNVFB5Z}@-Lr43W8U0o6v`>ZLI{gC<S0GP)iyRJoRL0QTV{pl|i*|5yMOyjnY%s zo9udOy^7(-)4B(bvcJF+jQ^PW>k+o5vQ{0wbS@vVF=}ti<4;$vs5?pFNJDV6qUoVJ zsRfux@kHQ#0FpqssVk{-pF)U9i@ch6X`{7L+;00Xcay%vCX0=P)#t{17cDV-U?ixB zY=fnnjU)hJY_#KYkjC*D@l&nG9dwtq0y>~ak9)5UXtpXzEx^wc@Q1!6;;bGh{;f$+ z34*TVdOLvEE9P8EiCfBDf!+zUB#lMjh-oFJA$+&+cl~0)E?nwZdp#cM*rk@d>)d*wL#9ICGpPdQAdTvebf-j=l6~ zgLyVe{Wdoveh*~#!q*12XIecJxOi>5E8uG*Zea3QXdMEFux)RG7@!KDKt9Vu6v9GhTgZQEnlwQp4`v#78D*33XFVv-{)HvL6Te8DD{YL8+q><{`$| zG}ns2ZnlLx>=Iv_NNPKQ+71J{D2UY2cl%p1oVauU{KnHGq_7|E_RC3T6k9YK`BPH& zI7}`3Z10$36{areq|+ba%+PJS*V6AGRf-W5$rtWfF>=8PPBuxvba<4O#??>SE-@}I$emu3C z|9Q}cI+P676lezd@VQ}IP9zEVBd#w|iEXbW3;XI+XWg8;YYbiYUtX2cxBU> zqej3A?{(3neUyxjiC{r50TvMaOcZ4BnujpzkTE9p7ETXj44yke<=q<-=oItb4YhEt zOxfi-0Owp`G}epN=Q+1X{Ws7x5nM`{y0k1pB}f$FD9oI?BN4M4i+~GarHBwhZ#ag_ zSHxwKYn>>2`mD>nzJzcmmBqo(29-*oz2v*ykT?Ef~$H^OE!|GPn;yj zU!yWG9{~7~)U!4OM7#{o1I6W>GG%512)vF|W%Z4kiBUyWm>U$H59bAd3R3IRy_8T3 z0RyM;pZjKqRscd5O!qX5kxfrS;Q322c-|6g85%+|4@_4L^v;*kR{pLADQuQrdF`^0 zf`Mgy)W%~y0ddULXYh@`zH%=F!YJjSFcf^MQt3MB+k;>-Hzi1-5H+g_Z}R#WzXms> z_Et_-R_HoUa>aD``XN$m8B36*zOt5+sXG*X2l_J$Rg1M1t|>KWB?dyF$sVSoYKK+W z1l|_1pz3T+IA2}5C8}LHDET**iLv|~G0!>Zk9M~Z@M^j%LeSy`FbM2{Y$}SU zYVi@~btR++yt;>6DW;6a&arcZQR5~n?;bHDK=0>lvPom$%y1R^VcHYU&mv#YkMBN4 zHJ#G?BTAadKR>_A;i&# z#Bv|fSzhBfv0G*%pNM=UYrQ4jIuE46F+~6m7ZXgd3O>&Lf^`#9lP*)UEGxn1AzWrG zsTHLvL@?2!`zm!6E_(J)fzn`w-!tO1=Py3ANMOo^V)tf*Qui=ex!`(*Hdm~1`e|?G=34**r2?~Q~Zw_DA zCDj?rS05jB5s`B!^7fE9rOPA1`o!Was5k?n71wiYPO7Mkb&I-1x|D59U?9S)HWX!c zjs>X9cecY6?NQl;F2=Y9VfR0Bsq9z?s?xvXfpD6`){UAQ)g+m}j9l?u$$MyV12EE; z^6AWv2LHk~P=7&-keYcx%i^$~(mdP2hrJX`JC{zD#bV3bPY=0;m6W8|V&XK`V+0=? z&s;ZhA-9R@r$3kx^DMTYOY8M-g(>{$$zE_aLpbLWHxS!(0RO0-+pkyCcOk3L5U~LuA1mv z4)=}t1wHFf))>)I*{ zD2&!~QjJn?6_C$)!hdIC$=@!eQ4k>kIy+rSArEX6sdbU~9&olTPu$9BfD~(GH0;;h z2e3Q9$v0012WViJEM|!lonHUSwj#92_FstUfobge!aA@?H(9JO;FdQ%BK}lFpNhR5 zCtrKbQK^^-VafCgv>(Ye5ZATPgI_#I?Z+zeBbL&^)0Uam-hI z{<5(td}g+NQf97$OhEYc=o-vBLp$Wx4EzgABJ`_Gj%U6wxjG5CW5dV|IV)vree-BRIw2{(w z28%-2NI@WG^X=@PvV#);bE5}J0#K?jBm2wioRLPc(jZZ)?3zYRIzuo5qFY`e6E{y+ znR;p3RW6$u-N4U&C{9j)PsRJ+S@;bAG)`goioVl*5a>+*ZgN8=oF}+5g zw>QtOjJvO_(-V>~Eep)OqH=jefJI=M6fI*OmwZXiOUJMhz5Q8G#4Ta61;R;=kdnqrtJL4{VmCdfF?{L?1*cZ1r zq^FN z5Ay?5&?$rTmz*fvH^MS*r(SI#uC_<*UIim9Vv}4mZiprq4HIZZraMk zzh9XKeEN{eIg;4$BFDIZi@D}p74RYO(G;oM9>chP z_)JR`n-v#kQkiO!`3KvM?BNS~P0+P4bGDI8-}}SPVa+}dtYa21cj}dB(0M8(7p}T; ziypH~{jPwMfpf1xakeXhGAJhPjVpCqoWmtOlPW?1rmIs(ioeU|HW;`S;COHX;M zMB%r9OL?$NI(hPUm>Lxjs53#HejxM=V(73lJ9eko!J1t4cU#RFI3mnRC==o=l0}YM zyIj7jaQZQ{x64{gz;{}k&oxOl3bFUhdfX|Wm-AuHxMl2&r2+6eosNG?GUse9+)g!# z#=-x>b52+f2?5SyBPhaN<&=Xa(*Wf??A?yD`;9X|T8jfkR_tTq8edy+4J=VY#0%~p z&|^2gFQ36J$JD=5`7vum1{-ZZ1@sI6`Qax%5c$RruX&%3czlsav^Ij++k-K(P4$O~ z+8BU`_yyx-vsw$_VtzBj@GizTm!YjMG|gWV3b_8$0|WcD#`FC@NEv{4mb{e246zIJ z)Q07XD}jA8q>R*VTTx0twQh?RIGyT@GRGr~CR#w34#;t~#PW3}>i{|1w zj0nvD5tjE;YDr-G4}C$9YM&;J1nr|UNIa<63;_c7Os8I@L!lo)EyZEPt=ALbN$NhR z3WO{A$VoLh(qL{N5aFa?HIA@B-YPZFx>?Xq4?cpga7TsYh9X6wSX@3K0*;Wjjw^58 zcD2Bkl~wWeJ;tqyee#`%qn9{m{{s{1$BMvJ;=>IFe-)}mpeM~% zQYA(=-Pl5^-?#|uwV1K-tJhnLQeUoZ2=(cDeh(qmtbwn-;Gzpty+K0~kRao~*v(E4CY46CxSs43Pu7HQ zAgqKRL?-09D^~5@mLO=-0XMxR^*~=66mb0Ir@Ed&rvc@Dm0UGM_BKv=c2ZnkAnRz^ z5D``3X#!Xd|81SxHag*7Hro1*6^Ks<1s7@CprNOqmkA=O$@bTRbr(ycq$b%Sqj_)!)jnA1pCm$vwdYtTxxTLs=KK?x1h)mn{^@q~yDT>55 zJ&M1l<)5s4aXql%p8#1ql;N_KxV9}+!5@#eNin$`Y=~eUu8h^z$E_9G9m4~M6g>PQ z4~{J%xTY&HlC0DIFY=Aq=UD>@(e&)?v14Oh-pl8Mn;&k!z+0qqj1qd;`F>UHuFRB< zi_SVD6r-ut_05rOB=}3gBgUg5bIQsz00YJ)miM10D^*?*xnA7vtdjzx6J=J_6ysy| z`J9=U>r24H6f~+knNm0qt^#(P;d+P(PxrKA*5N(4Vmd(cW6XLhBGB&lQXf*pdy|W5 zbcIx;qyw8>f1oqwABBOU=@i`?#VEW-@PAH8Do7c+5KC)gA_nMK$O7KgCgxLGu6oZb&q^9rMXz@c(K*HK_ z*SfUR{$?{BqQkyJ%Jqbsh#@k6mXc-dKs(IOPM8rw*|P9GcG=q6>AJsMg$>Kna#qVM!@SB~s117Iw6poIYE1vMg3uE+K77MGy zX1IVZL)CE<3 zp(VM`uy5%q3W-VH{%C~^IrT{VAuVr1*wrv~G5$@PadR$R=jWpUL#tHrexVJ0=d2`d z--bvq>10Iu>JS-PoQ8|84|hau({@JIe=fJjhVIiGWWc1Ki{sfJv2XF#<7$QOFd=;~ru`+VBELRDl*FD3M;eWhC4Zk*HvCREW2M-Q$jD$fz1>OFLU9XN8xd~s5cIWEI z{bgE!>2{#)xaqtRBC3mTK!8E|MAfwt-P)i$EJTYvI0}`MFM3iwZ|$^ZesND3x|mHR znu5W6i{Y7LJ<63BFOYl!*fF^7p#s9d>NwrBYGA)69xaEVaQ{BIU%0G$j-8AJiai=$HJzLGxEp4oO2A#@qXmc)rm?ke3 z@T6>*mE1QSM zCLOeL$79d>#L;D=4Y<0l*oec$eSP}7$MVa;`JX`%O!C@ChIbHF_YkE|;D1JhfQ#Ch z4lPxGhBg(dqKD9SQRjh5B6bKbSykwEw@YG2`P@_!%RI6^Rg_!k4ow)$Vy;?2`Ok*i zNL^Jj?n_}B7XmCLcR|y7_|alWT<6|FhqGID6C+qRz8D1PN+krsE?sYlOZ>W2gUCek zH3bd`QNFJUJq$3|jIS7+oLf*3*rxDHmKaXw$iomyr4TWfwA6dJ!M#RO^?p- z&i{7qlU&;ZIOsuoccWWmdEZ(XO1B+ZlzyV7nIAT=>7?65l@zI1+4TMNEW;%w;&B#t zDe8-5X1M-itFN?DJzz@P?P4fF{nE+EX)6c)3^rG-#OacTXi85TEOBc;@!T<>XRF2B zHw+|7084eezCHTMy&hV3rnZm6tnK}Hz+YELY2uNkj z{5=ApsAPmkI<09=>K3!4My4$lNV9T=*2xb3)06J*mvT&Wtq)lo&lf$WFBPx5{E~3T zp6JNW^m7))k+YW_fzdOeKF3%%@`r?WxJp!NVYk?Kv>QW~20O_i7pb|R63KWlA2a~( zi|o1Z_BMM3TM@Dz$bB;r#i)XZBhoO|JzWz5OTJP-{7!8Z)da{|1CCr0nO##`N*1+-`gi+Er*%D*IgV7DTPe(yiB zI$$yg3<|yOyyhSDnUwy&e=5&rR|HM6PV|)7vnfc}K4})G#pOq9%SSCiNWT+3C-iWt zSRPZCY6g7+Vv?KmDFNmw=`7tIx2rxuY+s!ya)&`I<`izzEMIDbXHJq_(>PG@=#m7hrtP%Yt+8hYgm4>-YWk>aIs@1u-&1Va;Q-k_2BcZW4IqGhwxX=jFAPQD`ZKrn2_ zInBjIcWGNGmLLg&Mw%KfDHjSAl;h=aB7tnjjOxY66QIG;dN$yC1u!={XfAl>?ED*V zCdNOmh|CFP61sbI`LNO>SvWe(L&S5#69(IVWsV`etiGefr26LMZUUah!HfUw2h2_1 zp>yG}HSzK-JY8kl=~lA;2ni&zI*J3}bhprf$;Sx9E{WmOv>B$0&MZ)PMQ zOMN1pzYPF-bJKO+w}eI#X5bi0BshwP{i^mM#x=_OVsPD0<`S)^^v&9{3%2j5P)bJC z$~Rl11L$cGPmb{9&kc%VgX!-gUwEHD*kIDU)2B?|>U_|F8{do~r zasG~)s^NSLw64M$SrZPkuA7=>!?0>ZSkk;&LJiQ*Pt(IyDo`rD2bjD;sDc^YCwn4S zqZNTNQ8%ZWa$JVz6H{E&p)+NE!@|4W%A)5avsp3)3pNXUlKS(?#RD4xf#8=67U~*# z1*m_2`tC2x=GK>!t@_*Au$TbH2?Jt?61nWjGB_D1-_u7ObaM^)r08^op+XcWl|lwco%HX+vOV z(kp2M+Sg{ygi@zJu8KkST#{#0#UZZ0ZeAsmd-c;LhMjr{^o3)mAt${q9PwzGKUIcm zy)ms$WT|T$pKn2$ke;r9!TppXJsL0}26(3Vk8Ll4;vh~IE$ao`4(M} zbm6akN}TBsBH^zgCuqf0ca7>YDLpnr+b{Y@uTnF^5migb02p&-Wp!%hYaqAAI`FFNJ_)66bI8X}{P+%ma5o zDCcV~e6eX-0Dkxq`qL9vYp`bN4PeoSL|qrDQIXh)@@Fb$*l^#ZT2GMc?@3LYRnB z)Xn3l%GK*zn4)##fj0jY|Hpp2ClawfASX!@0d>Du`ATweBj1H8RP4dh%^JyQiR#;I zG)easGXA~F%(OY_1uI;4GdylMhETD;U@FB-@mNGH(gLxrkC!4_P#t3{xc~pR*vqUc zm)Ku-dx>$?hwYa#U`%khazJ z9}3%mH;uiQ*$F=OMI#gDk`LlQ7E=M!3D^2*2**etX;gIlV8-yT`bG0nX=N4WzwbS^ z30)a77Uy&F4Gn2{yJMpVp3j-~Ln7Ubu$CYiUO^q0m$+6roko{Al)@jPMo)G#!q0ec zsR^y)vYv!F3x&_nxQrIL!oPXD`#HeA@=64%tmeXT-2w{aTx*L}DCHI8D-hZ+mg$l1 zeJ<3!P=peUUX+0H!zvc`4aWZ~+C?d2K8aLs=IX5P;2=yKWbFFKCyGTHXFN#aS`_sI z<34V7_uVS$lhLiRP-9-HZIBCWHmsb$$T#XdM6|TS{zk#z#P(^+d0>!iW6oXwn&;bP zTMA&gu5w+*l0lOHxF7vTdUo$_C=6`q(qtAFX1$se_sv}K!%(Gr0z19KQA>G?Bj>Qr zZN%AzygxcNt8F4muB#oTxAo@+Dc^z!NpYJGrcj>?_Md}vrjja!>?;86aW6|4UB87_ zoH0Si)3;}caPT3VHO=G*OeW*vt8ccnuv3yVM#<&`5_F5dqd;B;nD}3f;)z^&l#+6Ttq}il!y>DLg)9OnJ*Uww z-=jmJ$+>oqDFpQoYUDYT5$V-Jx8pnwYoARev#;#s%R(F{2h`l-$fzM?w&TU%Pwudx z2@%l0v9DA&;Fjeg=%Vi4X9;ooPnk`^Q+ID1JrWz%i3%~mmo1PxqMMhQs2I*PiQ7ybGe_dxAr-pkW zKBXAvfdTbMPy1x;HUA;{g!st<1tks!Nc);7OOddU1B9`w^Hy{HQLXXBiqk!Mb=7fp zcJ4`oEDA8@I<`X*)2|J}1+G&8k{HF5HO*M1B99|z1ur~ySO30c`UQ;2Oc1^C<%Ph* zsC-CkUzZHSiOwmBzjd^8bReLeN%Yu%VR&HxDjoP-1S z|5TU9UO{DVSL_%-Kji-ilbu?}ZH!bY$M~jxcUFI44juPxTL7lRM_XHM6+hcb`6Z@j zIQ39vu|@V7ZvsV2LJVK%GF|x+pKJe#{ks=~BM@kE7H^e$yL2kzCLBAq4HDM8$Bx!MEV#5hI=x~#ew{5Y zK!FX2Ba$_8#X73W)10oS^A2ch`I5&q&>CQi*42T@22`L44N3`HazPEjQ>nt%v4HKE z>xN~m=xM;00=W! z$OxEjDXN+zM7hBvo>B1ra-KBwd0j9VH2W%+M}Vsy#Y zkDD*rpVZa;oXY(V^^fc-`*bK=qLywlP^qZrs!$F8`S`kn(+r>l<<=^enmT12CL97K zl^O+95NH5`gp1kxSnQ%q+5w)=&f~iWqehZ$*r}n3e%_5tfwDaLp48q-J7*@3B-f)u zENP)C5BgQ^PtCp6!T^_4|Af-9JmUwhw67Metkb81hm-6ii-h$t+rLh}-OS@GIH$(z zRu2RNc%45vza(6-Pli(I839AA}cwufFZ|HLdXAv zx)VmqrH%;#Fhhp5dyz5WG(zHb+29*)D2OjXre3NIwj+J>R(MZIr%um&WFDQ54q+u~ zhnA6a8_Cl~h@GAAI}Q$H(xtdB2E2&Fahh0fsKa8)5H8uHpHH$Abc-dK%ZxvsZK$*# zq9J;kz_#SbXYEFwUkAkK92tW=4++ju;+!6_&t#-;$v`_htez(K15xc>&*RzCv)1XQ zSZ4fGtz{htg54JC0vA2%hj((=u;dV+UESOOM+DCqn5slL%-zSnGCtAIbx;8nz&v#k zs_BZB91lRbA;`O|f6#bOrEa3ZjeV?RW&quYC}*gaDQggZUz&!gY3xk>oc3u6B>kKz z(kn7V-*Uz?ne(|^_2fj-3}Pq4=@NF#cQ{m8n!lU-!89vcA@8d>T%V<^pvbm!QA2UT zwA-d3)u}o0jcs^!96U9s4~Gkd^{oEL+qyQB8lT)i4M{})2QEk=Pf7S-*9@Mp*Z8AK z7Z_%775MYa(FcM9!a<@gZcB{o+vxt=h#Rdoj2DzCY%r#XtIED$>UQRrJv2L*>WH=U z@86Hu3y$kPN$Nz+B&1Us>ArT-9(W}? zFj&v458AHiU?VVPp(YorI{A3RDznXn3NGSjgx&pZ>0FlK zdk47ntcba2M@Ft+3hhb^-SMDzE)Y(?Km4h1|JE56fNUf_)2c4Bw6eJCfV|6sc8NL% zHGV)ySH3;;60i_WLV(_I{g{sDB;J(fu*_xdg-TJU!47DhTfEkewqq18Du*nXRg7N* zf0cvIN@3k~RK-&aN!jBw6h!Zj`K;zQywG-C$mr+=(; z6A1nAx9%(?imJqfr)^RF1SU5(X#p}Kd1bfOqRQE zex)C?6EwqoMz{V}pt=Pt8P%M=FQy(j4euGA&q=!rF^WE~^#T36RbJ4!gBRyg@Cm(kjkzeH>$|JOUH#FI9Qvl8fOLFHA1fMvWS;_R*5 zDFYqvZ~LC`!fS;vz1^5izTrXaqR01 zFfNEF+K9FteI{@=(9LhzA-s@d7J>nXZhKw;wX)Zk4mfvf`C<64>I9Zw>*7m@B>ACv zlInzR>?x)LV{X=6VSI4$I)ASe($LUTa_!ft-v{3nJ98%mb9ai7+yiV9iBwNJCME{y zOli}&_oPmm7_{VeqMQm+Her@`+zSN`Cgb)WxGUC5J+$^c2sE4b0;e9q(4?fsElGOE zm=A}9k$9F_%x%6a0Sl0kfDYla1S|3=c13&G{Dv5tSr2_%ik)+&UA^D9GWy{p+(
YCQSh0S_xp#-1YtqzaWES7p&Ia?Q|f60b)LJ_KLXw-3dYrKG6L^1Uqh za1n|ij1v02Qq@eh74~Bm^tlP^1)dfCVIZxH#|e}^<^8UWA)!}*ob-7H#K+ror_S$B z#|qx+`FHR{t3Wi7(4V2UcP@(#1Sj+4eUq@=JyRuPog*}3tdbtr{LwbhUXFkI-~FKH z4aW-(x?}=qruY6iE2L6LAlhC^PDLN1xhv%C&oA(+GCvuAz-PBGcgksflpCtzw0+%- zt$bx1RcOUkE|Dyjr0OYZR#-3L#p!YW+C|%4YD>)4I;BQ`fpohk4yqwa4$WV;8{=V@6#cCH91mGs>6LlTC{g~G8K2G13cln$np}tm zZXVgQ#r3_`D5tSTDTFM*mja`vIuN2PV)4^?`HQ1ot``2C9qblm534DO9l5I%srj1~ zd58Q9NNWuhO#Mr^`WldXG=m;0#N@gvI z;YamZGuZ_)3caz9+8YDokq^l!zf1ZbEw(gY zwnaQtpKFN&CWEmt12H?V;g^;6e3mr2wbRbt?N<@Mb})dHD*{_t#HwMmTr`DU#?KJR zmB{og2(;X=1c#;D3ysLjlV=nW%5QR&ad@;mtw{&XH7@7vEMy#13Up_{ih14#PtF?w zzu!xueVD~+K1YGbHFftcuzrsg?-Qy-n3GrPwu+-&Wdv85l%2+T$X@J^~j^Qu$k)o0qnOTrtJ8MSfWxW_B#?Yk+;PjQ5 z(e_jF6{Geljp|n#+k_Hizzb^HLmPFtP$w{4Vi+_Co)w2(9jA4a@0Tb80Hc&uv8+j+o#}^XLb~IG@2JEmxUlh3Z3& zl|z>pM=y|q_tmng1l(A;u|#tzlK(0_7+rqmPDmFhlYp1#Q?1nT*AGv9?gaqlHQR=( zYZVkM{s$sI+11`vDq1z;<|hJhbP`LK3PUTYBfMuWXu_0Vl8^%2sG&hqU@_CGHfan^(*pKYvM7rtWo zoCIPYA^6vo%0(bpaG}vN2`VzYz*!N<`3Nu07)wMTy=&+2)3vseuXC16x2>tT(m%=o zBkKA%47hRa^)SS{k_Bpzb!r+)X#EMmf87XteBENHZQO3lXP`;?Z*GZVcxk&L{!9C1 zA}NJyJx#R6?^A+;;mWKcoyA>p%rZz~vKst0Hb6vCiXZ~(_YFVik>+yu7iQqp*em0k z6Wp~bujvO-oE(+BdSRdcMr-4zOk)3S zb;!BBzIUXAFOQ0|M8A(7x)98^BGoas#^;<(2K)qHz4mXWV*yc@4 zMf%|f;tE?4CF57#POIsj6-P$f&acd3(b2&6q-`H%FW zEw&&ntwchystD$FhzN|HdZcr zv4w?6KMC2Qn=b}=daYe-^$}4|=SFfP<$=TS1YCqB1;S|m1wWG(WCX`Fc8GTg8lM^G z2h5fCrzeDIRAt?>KbIcj7M?s6JO?f|9G_+lKwW5fD&VPw;(k>%tnU=Q0>J27*ZJv z*cQ#i0{K}b2z0NRa+`Dy)cvD*goSe&Dr=D{zFK;O=uj_+LcF>epP1nby2iD(uIqFS zcy_ufgT%F+0dI;#3s z!O`Cic{%oo%0CUvR4@P=deh%)1YcWq9h!s%#Yq%!!2Atj=DHVmy`HNkB{zwsU*%z%o zMQD19$mm@fXRBVYZ94P%jsI@xc{t)v=L!QP58e>m*|#?o1Sb_jyse&ov*Hzt&*3v9 z&_KeAtW1h3x@Vw9Stzu*RLlmBDW;iBrtfc^2hWE!k6cy}Of^iYk%946aCb#P4Y+2f z5b!vyRnkxoJ&VYj-PgLSEh6Q5mSodyc49ht*=+ITNqHs(p6=RxiR!qG8J^11dcFR@n!#I z#o`mt9IN%*PY0UrCOO_wvslZiyQ6GX`w0~K?SODXmUTt+cX-4 z{ueB;>+)4#U!Qdd%fcetN}MNRWXUqEjI$ob6j3S7A(a^N41D?DJ=k4wZ5!a*8O$R%5mAnN;{;*3BrVrlox@ox&t z)YS6)B&Y8@pgBAW(5V)z4}EmeT&nU+mv6Z)8D@FpDlG&?mcx9QxD|xlYHPsf2cnuc ze~J36m{1Nc!iFxt#{1Sqv>*w7AJT1GN)ycWH-9F2E3V4yD@}e=0mC!)zA9sQ8mQq! zpIE5u-Z*7=+9+JNzM#?+rVmD^Qyh)$Pq}J?oL^X#UMniOMaJ7B)FF|!9CE}!SHVmG zTYrju0DKcNp+V z`@xg*4rk6k7)BL@j;wkk)U=gF>D^~(GJDGba>K@lNqV z952Y2IKz`uTLqTgd-iN*)TBmxF2taHqI$VTv%i<6p_QWTSdwBozk$g)*8VrWeyb!( zSW5n7XfPk%%FlQ=TNq`d-InwvI1;y@7DvAi&Fr*%WGFYg3E~JwNHRYaCWV`Ob{$)p z5yj!}9_ur+N(GEw*#+hyBU_zkNXMx|CTG8g^f+_*&N@rjXo)xjE)*oQw#?qRu_5j- z+nnD-kqt?qihe|{`oxGEE9su7Yttig4evvRQLZNoxC=fbA}p)v(9Z@1DPT+o=zk_M zyA_ElV0}rZ#d;*yK3pkitS0auBxoA^QGfd48(4rTSV@ZdDpw3UUA`q_3JC#8cJKt~-6SZxAY%Hv8lCtHM+#Q{x zVTt)60}B;;jmuGLfwC6i2Q#Vc4GMfZGB1sf7dPiBaI1F`79|JOft=4p-N4g!vspxj z!Ct5QZNig`wq?Y{K*(738_ljV?_5KdUJYT`m#jUQNBoruo;(~-3F)Yj4~GnHw!;+N zrx-LTh@8ktmUgi*iiXYPuUo~1(NG`~Z@78kG}1nTGv!+Vno90&_x1U;pXPptrX7eD znbF?DOI!gdn0}Dz*L(h*9`wFwrB7EwDo~I=zH0WYZ#p(MBJN=K{5toPAyGXZinXbf zhjb|nr)vUMnI|dao^@fQ-vc*&&;Q-MwBc zS&?H58?8X@vxvP}kE_H6XPc`^9sc{7z61gHEj z7IB4c2foH>T_Js&(fzyk) z1QX_KOCn(P_2{TUbx-C&^cda$m-Hdig?1CT7+H*uVF81nZHS}U6hAdQ9R&LWdbQEw z;FG0VD{|GyK(8ZCj8!A~zioN84$GoA{0SJdsrX*<#o-d5OKW?n0A{kVsuM@@#eW+7 zW=iRzgM#=y(SjuH5{LYcFBASdZJ7jP!a-nLt2bXYt2+fPC2X?t!Lh{r8-NZDlP-48 zCORLRIa<(LFE6<5ohk4CgCXPY_ntKLlT%&4*q#~eC(N}(up#iN4z2%dq!M3!&2f~Y zq1JYG6}a@EqdZl7=TBucrdJ;Q`H(8^OTZBc6W6Jx3iTXElj>P3%kuXGF_j{7TR-AK z?qf0_^kPGf)Em0wi~|cA+l4XRImpm24R`( zevj*OmHfZ=s?e3p_b7;XWLoGh&>*5Y_a$INDrgpfc>6j%l;GJ=T_OS5E&^{%sT8f4 zu=^csDuHoXPS@XJ7K4z=*MpR(DY@mdg=mwl5BJ(l^d?0V|pE{jjAE=`N<{9@qloTsd~6a-;2_! zrVo+aRQdm-08?SO6FxjE!qe}X33vEdS59@^$(Ix*BZ5?%f2%CS*mD>ZP9Vm5+h9?% zYi`8~rW#rs{39jbtn0ljp{g!uY0+%uB1m^N!B4Uk5gmT`hI79DK%Bl6!*FZxGe(Y7RUF?66Ivx-CWOZa07h?gNo1q199r8H1}4 z`}Mvmc!P2(_-2`eZf195-$~r(Mc}QKNjS zfHlZGWYqaucIlqzQu*#i=%-T=0(5YeATz7{i;*$Ow(e}l$3|)X4@XfEbLkGrh*$kcf?pBLn^pUi>S*qZH_)6kqKB#b7Ttx{ zMrDLJarv`|U3bU)-N-F3WR7FtxyN?X>hgG#h z@3=CIL`Qb3o@^QrR?3zT?KQja?b^26CmYxs4i(*NQb=uN6;!tBzHw>k8b5k7#}_ZmD|qPZR)3#Y0HmKoxH%UBXf?$i$It zghI3pHmMB(4_$+b*3%suILBI<)|vCeldv6U@Mi(I?%f6lN`oS2T)7!3DSu9A)^hHo zMak|xrrjHuEBwJ;L0#~Px3F$74-Mm=u!*o`c*u#|k9*Yrv1-;=Ut>F#9ck2BW_9h2 zDE}z>37o=zVil4i%w%>c{G~ne8q}PSNSdGT4`;VDnIssNE_hgj2e|=6<}N+3xO#bF z@dqQv6G`NSh@-}?GzPdAr?Hqsx(cl$acv&U5|bw@t)89Mvlw|4CUWnRf-?X0zzFX} z>+S^@GLpq70EnuRU$BLck-3azv}#jfWkSgHmN-y491{Xx%`_BIPY9-zRv-Pe3*nZ|vA`jotjNX=X;h{seIWm0*y}QL&(w{rilgZsPbet;Q**dG-LM-P6ugyf zaStk(<-sScFHYLuPh!qZ;SIeA?_Du;^bh%rJ)4yYS66I=zH$Dc35Z=+fp`cAVsnxi z0^KGuu_B+eTe#Fpfho?6^TfPxAys-?Lq2dCggWofjT$Y?b0|=8Y6RNdkcgEX{Clr! z&(3k52C??c!+cScF@4#9DQ2#@cWg_-uW|4a)hG@@w`C@Y%)DE40$qG=a=HMLzb zjq99Jw}PtPh@*LFnQo;v*GL~UDwOUx{qQ?p>n3(j|0hIDP603kH`xY42;X{RD~C_w zF_CSw&4>qO*IU^xEm0OV%jgqJ&CLcPJg90_v!i?{-CsSEL)B0Mij!nI2HMA|F<#V`&dB!}84kwT=M2xP7)01E*@8T`lGm#a%kD;)$be z-Q9qIW8`6deX`+s*G*Vn|JU(ky4jKr&c|PEwtLWjL}j{f24eSE=ui32<^z$Y!Q@Vw;IHq)KHG&r zqz@Zbj*+ewCx@#;gNk~^Z3x6vAQgAmbIs^p0NxfQ4kNzE+R>%5UrOoxGQHTWXWDOO%EQtguGy(~Psiad`L=#gT>+L16FQ zdodc%wGzDW4KL95!$CQ-U_9szvSS43P8CWWhz|1u-jSYJ&)h>_&JKbLf+1jLHuO5` zV0@~7Ns=*^-f&V0-rsc$)(6^w-s?Lw^lqTujn}}{!Kc!o@-GmfYHl^m08P6CkdU`U z=Vu^Z{+yYsj;*vd3aeHz8up_24}^BQ>b40>EM6{~O2{J!NIlfPDsY=uRdsN%tT~eh z;O|D0^SP(StylEs#bYp1Rw!$wBpkmK`A!U?Mm~^m)xZVlNvfDXU;CC2b?Ax!!PX(n znd0dqA5%PQL+>ZBAqd*uwb&|0Bj-<89r4UN7bt-PeKii&BTc%rOxZOZ@p@@l?+ zkKuz~!-ILRJ%J*hrC7a>l&uL9ZTlh_R@ zlqd)wHij>1uH)VkS0a_S0c5=U{R1~r@>YPI!%WOosbf5d{{%SoTj@d;SF#EKu^kyU zUhRYe1$CQ9^?R|7bcoZFmaV92B(A;j-`f-RG<7*?Igg^4PG^b}-Y0}ABP-lmUK0YM zUd-Xma}dEt#k3VnOpwj4jC{W*Df<9@j)!%q zxXvbJj_Ta7ACLWudQa0DRIu!&fByjRBrT|D;VT;i5pykYjmKj?Q*;EZojn{nib^Mt00*E6MQ1_|wuC$$9!aGa!s|#89-p|Xe;~uX1B{5#|G95zI_zlV!_bsC z*S4z#TXF)=Yj~3k)SZ+=jPXYGsFB23Twe8%3oCgQwAuVC-xax)QaV*kuj~MNTynSN zTO4gxx7Gf5q4onJC~8slp`F7j1+!*AUe9Xj+R(WaX((08Y2Lqy7_C=ZKH8gVLFjQ2B^Vt*Z#aZ@-nav0xY0)3&lYzx{^ zzP$$F!R9q-OEBU&k40I1J@5r3d~I!A!Hp|Gz^Bk^itp4D>Pda&%;&0L=^a~iouQQ@ zCf%OYXp5aO^HQOoVBbeEnyvC67-zlU6Y^RJK~9g5&V~LmSYsp=dtXOJTBoZ@k-(7-gR zKakpqJ^fQIuptWWmVFLnuo`IgQabM4B;O@|P$h-i)kPQa^{@S|2LF#&u%eLS+qo0E>|dc=4A{J)@2k1@5XuNyB3``d=JT2Le`Hw7kvjBkcTsIfz?H5{cd zv@w=XF?21b$mNMGuTwl}0T{4Mch6lcM$iC(RX51Tl~qS4qitabR&tO=K5WJwbYoq| z!lhU0>>Jsk4z&)^!k#AML zEa)CwSMnGsJ$~nwFuU^VMWCX&akzY3sb;Vm&b!EC(>LObfv2XCJ4qB-#d0{{`$TB0 zl=Ws?;%Gcu)a&SBt@ILIA08*AxtEC|`zw%vXaIM9jDxbc3ZLn@%*r`oZ3y0z-1Z2b zxB)$CI-lmsv!eo3Dd}lfiQ4uiKfUCgl$9P79~^k1Uis&UGQVSm%l`ZeF>jWVb$Q2C z_9S&Rfz>6LkvD4s=;+doF;B-~kp4YsHxr&6x!RO((wS#_*jr(K%yOTRi!J0HogdMf z2^I@r$~wlJ7x+YCLaa+OZ8r~dXg%@VIW1!6W)f+JIe~#V#h1_NH{JU%Pd@TkgY)*cMGsld)M z>!Ao={2&rGRaMfn)oCeFfaTIpw8e^u+hCF?NS=3Wb*LE&Im0cb0cB`3!*_wehzcf1 z%It5NwCAK#U&Q8v2n&-Lew~nO*r_XVg{FbZi{SlS&I{Z`8gwdQ_=H(+b!l@8LnXL& zDIGZLag4l;(ClSd{Jg8lt!LfpEpI$}??NlFd~O|K~?0yHAV&ayOd8ugavKkODTdDlicjx%KRwt+P8B z=i8blHSBjg4YnvowpPy-6_7jHF*CSdK$xI=U5*r?Mnh+l`eT$g%Q6Y^=T8l+d8c;B z0o`FN)t@w$wgTewQCIt7Mm%Uwb`D!N1AFBM>+%UVkWgXep?9055%*3BD)UB6r}j38 zFcus#F1Eu=Qb{C5IXT>NlR4Tvv+M!V<2_7Kxr-jjNS%Md+xwuiNZosH$r)sTf&d`V zr@WkF62mx?ojz7Y?AfoEmNo2(q?k@x;6l#8NrhafIHt68K~tu)2fHCwwS}VQsJW-7 zcE?f;!QAFVMKvRTr%44}@X|h(lDgdlNz^-%B$ry2ZNT&#{6Dl@%ZOt`2YM(Hh)u*=0SDzZ64OGtZ;^H6tx#GSNo0;xBtCS1P zD3Ca8U~4J3OYvUq*}f>#y95NLKOJe@f8t)Viv?ET z3WMvz;gv^IQ`94F!D|*){3pHv-d)DTY&w{Jl-@!6j>ivH8K9i{ovaZ^y{tI41`&G` za9l2J_L-j9CV;8HN;tUg-%{P$R6t*V()aYlvsCu%PQm{@l(PgWpx>CAB}?iU1V_mHNv;dtZU@>S5r?pc>9L`hAC5WV3WF#uSFV8B(!t@uLa%1UQ;I zLYmGvML#+mxJEB__3J{)+;F~7VMs5ihC{k{;H0z|0R+G+f8@t_Fy(~wf%MJt$~$Ew zfk4j@g4?D+gKMU6>nhDV~S%Jl0q8l(V zByviA$%sQVBobK@x4;2x(0a4tIY6wNCD1c@weSpfua=?Z1S?#}Z-Tm*9O+r3bBzJn zBnBqtw~^yvN@t5IZPsD}nENOyUK&oed0A6YNpM!CK9=f~H)2^>oS&E08~j(}%ZSsdx#%UH)z{cF#`Vr# zU^GP74Il252@Lcp;yW7?LU9bpD&Hl4+9p(1b5y!yisd$cLX9f=65`=wQ7Wep9)#A| z75nn62b)i;&+{S-Sx`nQf#Dod%ft*3g7tHeQ){ezZfzBCE>2qNjYSfyL5xv8bp;om z_NaHK-c{Hmrb;K*3@?lR4b%C zTpJo(z8M+s!^zc~3Q%$05w~U7`cB<0JaGGFOjgCTqcN)XN&^G=>!x)ScZ(S)p}ke( z1k8|;0|nx>I*kbu4^c@wfn#6C$9dn}umlEAxa{_!r!=^P2Vq^p?{i~f#&S6K$nTOm zj#=ibS@4G`x7xoj7?S#r1W-()2y7xa~9Ev`YnP&N_g_r zN&9m>!310YiRXq&A?|}a)q+8A06=K=e_BTFEqC@#d2n@PaA{*S1Fzt?wabktIxgm= zk6O^tdlN?PQh_fFgyqGl$z@RL%;PT=S%2N+5Z!I3X$iAuz35R1`B|}wX4u@;skU67 zfZdiZX}=|Wn}YV-#mx%4B921!l;e`|;c^JsEEV1OcpkHlBAh;4m~Nglcb*&ODPG#> zydPxgU<>pL2XI$OJ4&1kF(zpc4{vA%FG5CEVI*+=3QPyu_cQ5#ar=LIe>8&=pBYTX zrd~o&TZBG+7kQm$m>FJ>&rcTgRa6l=u3WpPS`gpx=`5p~!B*Ld&`jdM#APv8@%vRy z6Z~yxHsLV~792Cl{i6dM>n;Cq{*_3108jh|j5VUUv&nCGBz_1iF`*UJDJ>42E5ioA zciKYPLi{00pEi|Z9b81;*{xt9Oq5r;$|k6U<<{N-V5~3G`t?QKW6t=up zI`x?_lP~gi*m_2jVa_g= zEW@I;xwHq7v~8RanBV+C?Q94I*sjf6M+2`MRReS=g~v%{>zN=XPFRhdkn*@Cc&l7F zk(6<8x+IHYAqD#E&e?1=^s(uH2xjtxabNuXL|}J-^UoKA@C%m?!!SZu6*NBSG-u>| z`@5EHXf4+r`!UbhSGFZ-CuD}o+`6ae2dN2~&j6ZThAp^Tl=P_<@|-@rD?&0DZ|>kL z2G6|#wITn}0>_d(gb|W+|yKd=T zFs1ySLPRHoC|Gic(316kRadO*B?54j!D7>+ls(LO?ax6SPM z3SN)yd|#|N)+*-$TJ6aCIo3lzdAmic^X`&Q$-b+b@1^qS%0m^hA<|ZllSc`=L`+y? zom9LnD(0S~JrB4fW?oTL`ku@7yHam=YsUcpKLEhA?Q8p55xigm6rHLVLCMC*WkFRI zJ)8fFU``a)V3qVsZV4GVo{;+co6D75I!fe4=XC2)Gh%^y9rFxlKrHTvvg4-S>pDvX z-%3@!W%i)aMFPqjJEAvBA@fD15&_%bbj8%j6N~>Z{+sjyL)edkV3SoNGs#YgtFG?aN>544cA-%! z#Cp$=t@QXsCNkv8C@B&DmZcJ%e+*72qSaXs2^7=bt9`_$>X~0X^@OGmsW=t_s1$+~ z8VQ0VrCRU3{sHgBoNkjO(4^C~-$9@#IOp<}kM#f}v2U6K7ekoUiA(;bku%x2OI;l*r7=(XZQqQkk{%Ym;@Zk^# zC2g&AOJ(X>_wQ{sZ5nBK1tO|GL;^^d8G^JOJ~+A zmiwbt@DB9Fz6*~tl{X{<);h?{L75TjC0h1# z3yO%(m28f9yGwUb&y8+8OF{80Qd}HQ~@MQJ7yvKxB9N( z#~cQ|%xCl!@~JUnsH|in9m8?1s9hAPEu^$0c+;^S-H=aCzqX=>a|TVCLelPRrEV%4 zVi~L5yTguDJ)b5o@REcGoGpSKUllAz)S%@wJxDQDLR`*svic63FN(t^HF^30x<4%loM6q zkK@pm!Apg&3Qo-Fh`zYHc?LD~O}h&D{FlY#XWx=IFYq{j8w9g*3s6i@7jU+$Ex| zZ!=J-Sj@l;9S<7`sK1RyTOMOdq?3<&n_zuSP8xZZIDMxlz)^PF!Un=saLWr{chCwj z_I2$;h7HZ)sjxEXqAvyh(_^$#iM29aJExeIBqYy%1m|R4vTlBwGDYZfy#Ph+4pAAU z?#^ur@8nM?PU2^ED|T+8N8$=u zxtrt(dDFui7LKTm3QPnX_FFgfz;cMsm#Ew(OBpwDW_5P|w6W4Qcc38?bohT6JF}-_ z`Cm;^$1YMlCL!|=L8O^&A2Gwn;ry-Ur4^Ar$0m)-dnAY2R>W^U8O#Xs=DlQzqw{>24@SUFQjLB2Q`{%&nH;9q`h1{BdX!;Lx{SY)k3BHg`b}h2;I($^%x-wi+-en8 zMW_ED>>edcJ*dKEJ3*Hj94E=8m4A`m7w8{0&F~6-vP?r$@mkd*-0s%;(_jgetmidM zM@dwzaD0b*K2L~rex$++`teu-Py1t0dg72@Jk8k%HZ+Cc^Ys3`j~?a{ch?o~o`6zW zN?MwHrLfd@9Jvo6j8bFawAznILERPxEplbkvhIJVdl*~53`Dy`1)LDoj_*DrjC^*I zwPim*t^)oP^oYM;#-&SXd__kJ&k?4gh+-_08?fJrFi&C0e4lzPrJqJ@sIG<>1De_W zwLd6e4#29)`i9ZJW<1Q!t~ zZ^vD~sS;P|rbSX$-!;G|)C>Y2^qNB4lI9^u!?+KL8yTBA+y2tgq$6=jj2_W|0a{au zMe3+5D10w>oYdqDEIlxtlA0j$`0htCFz*sv*Fk!rd8zD0vL+(s#VynA&znhV)aV%b z1B@&SAuLCHM~{w^EjWmGvlw|vVapz)lowAjj?(_N<~N*7yLg$Yh3>q|R5XT=%c0Jb zVk@gfR7Wo#9ENxZE`?R^rr3%0F1g;v1xDQ=%*<+rudeb|k=ww(zi?e~*|@5s9`f3I zkUUeRY1?5Tev;jdKX-wV6TFP0W?VxM?D>`H0!31RME=xMpGXi zbbAN)2+VN^mIZs`J#m8FMfl^#ul)KLr7>9Gyf}sEe`tF^@TPmN5d>+OlHK77T4q0YcioMKo35K{p<$zMzk4anl2wy(AR!b7 zQGa`+bF^Uz6cF_+>V2}GnPu$*#Wg9W;xq#g)sWgp^iju++JAf$yUzlu?(Zp!I;dns zN>Nja*VOLlvdGl-V60<(Dz@VB$wGsB$D&6u&R7^0WpcfJBhRaSTmnHovy}snC&`4s z9k>%EDHxPl)uitRP`PO@y{iy0b#94sT-y$~x@YYg_NMQf_)bL=K|1(nEiCZpAVaU) zCbbMPY)Txbss{z;5S44!9`CQPTWimAJ6g@#2`WbMxV~5twtTCaC>VyT*d!fU@+74+ zsfxwMb?s-&sg#28ycD10?5!(@Y`W$Gz{Yj!0=$#UZ>(FB|`q(zwj?Ev=0SJqed*-0@{1vDiYSQq#O> zBgD8UZiT5#5bWuZKrv0dExOE!Nui#6$I}6P5|jU>$o|{te@NnzgyjyUvED)pq|mk4 zmz!t8Do-(Yn9*+?jl-Hz!A~(TdKGOSBrNI0#-b3;q^qa&FR0_Mp>p0Ud(7m-!n5)GgK%ZM>A~df)Yve!JhV&ew+xo=GK9yDYa}Gs#cam&F53$9`>L(Wl>^68`N3C1Jo&E52fHP%_g-xZa^l3iV_AN zeY;i{ExUcq5GI^o;w8I79z{FC!^$lQ+iuk7p+$j`dDW${UB2W4CTd^Nx_sE%-zQI- zdJ7+pOM2{AWcPyf5<4Ji9Eihpt5}9eR$#XFRb%U@k5i*g$o%2PvM^PZrEb>s`(dw; z*CuCsd4br~oV1tF!m5#4`EcVN)y%>TY`Wlno9o7pp-&&XRUA|(okHm4CDql?YO7bc z>@p9G^PJf_Lk8+AR>F65e5m~vC@}L?C9c;G9A9hrsVgu$4U%KcGhhr%sNZ73J9)Uk zM0balbJZXe8MBv)3gxwoHQlq(0Z)1|WR^%J7V9O(P(_P@zUSU6f?o6v!F!$(nO!1* z^sJ%PE~te}cVd!Bk|V|z#1Hpo3l0^R9Wvz?!7X+ZKPkR9dTWLDB&~91wfZ>`uN?Zu zh-R0C9F!GljTHlYyTm|v9wt?UvDVR&vJ0Qpe5D_VJT;CJy4viG4lthVOS!{yA5@cH z2LX35P4!X;LoaOOHDz^q?+i+MMu#0FVU6LunTKh*a+YZ);ZX&ZPcV{NT&`3sPNm=k zUa0hK@!a96a!e=<@AFH@1YIHCWcYhlM|K(S(D%}n)Vwb{N|+y|D5q&3izUU+LXFzs zk7(^)oWVWO&0kc5+tqHvYXiFUZgx8G2_5& z15}b$MNZ`Bz7%b{6MrPpeP*HpZ{MI%@40eNL|coYraXR(sZbZQegC|{Vo4Xxi!VZb z;NGBL%5p9nuxOFz(y&TDgZv*JdK*7<$}5<4Yb-1w`W4du*USGemK8W27+!p`6aGhO z4vPiL(sR=^Fd~EexQzElxXS^Fig(4!s_22b31u?;(tsE$oK4}k%e~{jRl7EOzQwRiL@DY~>C-fL%W@**Ct5EEpE9O5{zv}>Q!5~!kA-Jm zjq^Y&ibCuAW}DN3s9}vuIV93cL+c>XsTvG#$y=mhW)2>uhy z3Zl1|Q-O_=`2)1Yv=w8(`uaUcg`8w!nIYG#w|#asfZ?y$ux&aglAIbF^R`@|z}~oG zH3ZUOmP2NU3QkB#< zabwMM0bB?1a^x$p!jpP>bt^*|Zyvk!XmIP4HbD;hpF&!h@(R~>&)cg%{Y^Nq&C6RJ zw-RbJE;n8FlwSLs0Z37MgdhJb%zyCM)D;fh}O~rZisGk~ixKwVc3d;1-iz zM6xl@gK4`WpnG&W_b?>hVyUd`pWS=cTR`MA)6pah%@y_pXSJT_wYE%=5kT$NWy;kgO4KfJ2(*FgDwW27YabfY%ZHb>>tc$Z{ z`|=m=|f9C44^ec~q0p zRqVcB>nZq%bf7fPzunkvcH070|3ixG4l2PO^hgw<$0fq&HS@!o4oNexZ2p3ESapS+ zW?d*!2^~2i41fy-OlmQm+&gRN&p)gSl08z#e7$!?YJKZC*rbE$71Q`EVFNf3-tSP& z()-gEgLV-AyI1YD;?aG9T~KkO!K?V+t$Ku)*PYDHX28w^F^U@N^P=B3G`HY=4$R6;(2 zNe#M5T~=tiYxc)EpN)l2G~68E=hLt0eJ0dEP)8RnUb6_bL-swNeLq$>W+b4JczpeS z+XW!!W^O)Bz{;Nf+*+$9Fe4?r#P;HvdGI51%@8O9z9Wc8tKHiU+0@*J$@a!d8NX5! zWhEd50n{?}n1e}kGr@&l=U&Ii!_$72L8!(UXi|&?5P2e=&hVr&EEdJRS(iA8{T6#o z12~;n#e;A(XE+EWi7B4ztbA}Hf^R;k1`6izOW+fo7 zEY}pKH`?TNh)J-kxW)Df;Ohnx>|;D&RluJ}j6udZh3QYGG5}ar>i>Muraq-kB!1Js>kI~)?v%Q-IO#u-Ood+UZN{5wG>vn2a`w_O3^(XC* z-gzyxyC$e8A^eojrIM88H)NL#?sAPxG09@GcJP;!wtLyn+#mHa=b2N|A*c;fqjsN! z@{}dPoFo%zQ`GLRv3d1*mSX}~L=ZH&LHJ+U=R1-(L>rS~>y>|b*R#r91~BG@P3dA# zLpZ@1^a$Tb+{17_BNN?Re*K31oMvk!+bvw-o8Y=fN@iOD-^IAm$3dpd#FDKM3n*&x zspRO)pBJ+I-fWyi$}X-4ea~{{C7yH>Flo<@*Fi`d&G-I!;ik6#|Nm+8RQ`Mav(9SV zbL8%p%Xxk#ruH*59`%oZ6Y5w4*Z3O-+9|zU^w?{CX||ZJ3g7VtIIO_&oN(BSx{mau z=FRs}sWsWVV2nB`s!VhIX21yjf4XJ+Qj(ngRxTXsa(;UmuBp{7bCI zd+RB%FNvY{>XqC%)~SqHF9w8sBQfhKO^50*L9V_dXs1n^qYm0NbD$W?(m${P|8|*~ z?~j8M=Xn5oBU`)wS-E*b-`o>Xvp8%M3l_ApsYgV7#I^@7C9`Z|z+qM9c;lr5(qpeC zqvv}Tiw@`Zc^Y_wzxQ9mM{UI2hN?bNd{O%QgMw**7i@RM)T!O(PR;cgDCG$25ODu7 z-_joFm=+=8)&-b4ee=slVtuO|u!BRBT_IyPdK3?zv;(>nQrud@mX`t)oo>zoDOf1a6Du8k@pT*SL#_4nn zH`)WvU~zope|$+mYXU5-16y7fvXJd^ac|WU>baO07AUv==`zOoF*KLm?H59AlnW{U zi3|)7q2(mu&QI0wi6wF_2Tf0Y*eRNQ&|qi&qoLPf>XQM@tMikA1A{nO$gTr_{!2^t zrue3)zv@BzJQ^yqArv}69RmZo_vD~YY`cT8Cn^4zyQSxOgnpQ1svQhZiw_@dq4R&m z&%jlH>*1I3hxg(1HA6g*YJLjjsaTRbs^x?_S~)-vxXXp7?hHqOa^TvRB{g4q#_mfv zgf36s$_*%IeJDItXu)4BBm=tE8tXr2-a%>+-TTPAz;+rzCa6MY%g1;8bFkEYBWKbU zuP+Pu`ed>{P0mQ#t8X^b$NPxTbQtAI2XNl5^L+m5>aLhU3-gcdh(Khd2MUc7DAdL z!Gwk4PU{rK%7_^)2hl}4g1dVECbRrtiDi1whS&xlWM48(DHqQp74WRoIqDQY@yDY;415Cef?)$aCyMX(_Wd#gqRvnUTg=!+E%zfaugI6y`h|Y z_HF~2%~OTOyrVr1R8gz$%O%~jr3=G*zyC)a?rg%PsN<6CsH?%;+p=?+SP@M}zK>r% z3wBniI<7`=h7GSFc!vh} zZJp}@06C!#1W^x1!y5fjNQ)>q2wXhaykQmmwro$Q;07%3uwH}2?0$j{HoeG(c;KCq z5)y1k!1nTiQuW0q5&+iiS)8K92e5fRX>ft>;*^kE^<+MuY`=vqaoS*qZvqquylv;g zxvE&Ur}$*IujU9vf$bGR<;G~-8$FFFz6mvU67NwX@~pa99uHIcX-VKvyp%F|IyX{T z2Y>RvACD6!7z4BGwcw1N8MHIG`)Bdb4PM}fAPfGN!+~6NRtEtKUO;X)XxtTV@4*45 zBAs_qNMX#-;@x6`K*2*YBdEL9_+DO=ibc`tM0|I{cmmteb z9hdbpbLV?feKtoK6)7KLU%kkC#RVB2zj)qZ-irxV-mfg|}RE}e(w8Vd%zuH_JZ zpD52Ewr)FTUig)lyY3)@l5^HBKP2=qGyD9~u}#8e@)(4yDuTS-&CclFcL(g>M@m)p zztjtF&{6&(sAnKDj?-aj#=~VXI#KdzmI`-1g#(tT#GP5M%8a2(Hh##Po9a>5!QA}a zBhvE?W@TljQjankoV@G+{?l4!d+UCrp}|7{OTRCc5Ju!(i{z-TReWN^fm8lZRE)h| zwr_8wnY`?X_PC#crXCxd7o8__2%KePZN0(`{mr=yJZWA?t^Z|nS`g2T>;0Qmv>&tx z(-lYd9PZ1UH*ts^31)p4I6bSJ*w`U7lrBu0XUW`VY;dl4&?6utsFn$LmwtYp!hX`{ z1@1Vcya70NT-laOeccy1xKl}^dI|I%%;d4vuDBGY`0J_2k~@hKs788Y4VkI@ZOoXL z;aDLk!9CFr!q-sZhY(Qto%>Ii;EOceq^6l=FwDL*NK6UdP_hxg%G;OoXPb#;M?)_v zpy%kuuhE{I5}9h{2PG|!98Z2=z<82o`6C=?ShpT1wJsp)jbkzBtk?|mMHZ0pHM>vZ zvN^8~%#HX;yu23Zj>awNr}qDDOh2}%yHN_k%UeR8s7BIbJN`M(T1uV(vCn-@n@R;WcV9DYYhVseH;W&z&HzNip-L{aD{Y{eN_%q zq&KgbBD;$b{g-F9zL?n{S|(BaB3rL`I*IVE)p zK1~(>10K`IpZBc&YUS)@U35jJovY9b-O?L5FPtzt6Df&?LPT`cIs|^Z!=GDtZSk;r&V>oY(NN`}W$Mb>cMwVELs!#<^jrjDdC!Oj^Xgs}|MJ~^{)Y-Di3Hab zljlhE>{5D2-I+!69iyrYrEwq9;B&yBBmtyL-0zdSy#fNTi=Z!glwy2~Jc53X!@BsC zx1%&ytajo#`b;PYnz1BNF5az))F!wrl&Ck+mwN&q^N0r{c52`Z&;iaPRmR(;A)DB$ zx`coXM!!l}7w@))J~ZXV4X@oJE2=hjXahqaLhtJ1b_!Sa<$~&Cf>4aYmArT!yvjD- zd8XT(24QQJe)L{W4R%CI zDq}uXJ71Ti{rcW{mpSCL3o;Qr=)E1Ht_3xcKg0x8=3-3=o!ZrDbV4*fKb@*kW}x>r zsKb^9sLZ#Wa3 zpJgvUE6tK{WOVs>1DEokTXm|Vmp(x~fu7=n(Gd9c!XkA(;X>5|(&w7QXd)ZnX8PZt zqDh;VJ0M!%b8HHr{#mF&OA#GO9DpccR7d(a1rsz1tI6FAY*UFta20|o_o#Hul@jqv zCxlpm^;TzHS%cUQ_V7baThxneBvFCg$vYX%v9Rk5*Z$LDXU$qAag-hAFLg12kJ38; z6B%1(-LKgGjo9}32Rf5^UCeZ@YIR&~iVMCaD|bcO*36wLq}QUA{7&K^>p&}3sWG89 z82Yhl-e(iQ*wU#_&5acP;{6cjm%s*%372rUc6J{4zojA0KB@{%cxwJT>ftXF_`Shc z!1=r<9Ll8H(#?xGZ>2u+WJ0#1s@4p~9oCMw@(I~pHn+nV3ib=FVRaMk*-H4_py+-l zo*AOhV{MD4W3ThfE6%|*-Oac_%coH+y<#yw1MmPyQujF>qq@k7fmqCq^1ss=9fBVL zg1q0c%UCH2a)=-_3`^m12wwM?2e)>kn#J@L@AmvGuK5io3LgtfR5(uZ9CHVVO~t;# zG#yPU=iuHDS^7nGdl+BA?@06yHWl0FHG6tRqco2=#WQU84EsRd#ap@=r*GlEDhBHn z3&0Mk+|r>l2QK#9UI|7US`$uJUtw)E84qz+v6wZYwYEK>2I@!rDPiL-9dZ zaYiq+9ls;3JVTxfLf7XJv@v#3fWj&B=MjF$yd}^kBd^CE zWmv-4_P9gh5=wJDf8=j@NJrX5DVmkkzc=@+<6eY8%g&VLu(o4j2dK`u#3D}k(fJz?Xa;i5-l$Iyb~ zPGzwRmXL&{m2Rhx=+r=IY`g!B*%sV`bwGUKb4M&jb}lALv`(EUxj5+If@#kWtZetu zIT8P3Se-}Cu{ihKr5t>{{2jLi(3)g(qzjsX3dCXJ&gs%ewc%`{+T|fVBM^8k)?b;MyMUck&<$D5x51ZWwm4D}< z0i*+96rSCkAXY|K@YBuv4~m*tr1u7<5smignjP=g$pYmKN#|8>FeX+VgH_eWz6~V= z$Ri-*Jqb|*;cM}hzkf|}9{b&uv^!=hj1InZ_Vt?kSTgR_ii#(sAje*z6S-mV8`|L{ z)71Xyx8%esgj=HBcohRyc3qWUObI1Ts?B;NZHs!mBBWJ8xHS5B+i>b5Q5Bn$u+-H; z1>uKHkR>4{2TOF>6bcnsv2lCT3;@(nLz5e1B-@ngKWd%O&?ioOzQ4LuIpsz*SK7pv zbS!^1@4<)Ok>TEU(|>N76NBYd{QmXa0Hl=KxT@~iDpwGSZ|9*g z0~M2jz8|W|WrBSROBf{`J4I%c+5)x@J+*|-7IveimjZtUTtD$QUxF-eY`f&!PAa<` z_J$<=(3_06YGGah!&EVNF$jt;!yGi@J!>kz>$FYrU38E|1R_ae(5L7}5qbDoNafyH z+6#7=qN?KT0be;`JC1r7p>}hRUfaTySoLtP+mUz);E zy>lgQ-$D5~dd7{8OF2ueI<&(0!p#g5MVN5=*@~hRcAT}P_SGegWYoZKl!3^xpecNh zl&%(gh;qgNJbXy|g@}~a&j}Vm1$u|^^DsO_gmGF=HA(c{Oe|q2gPl>2=jc>QOBa>5 z*4la*bcn_6xB!iK9v(a-LK#(yxhn7*l}Vshv_YFZSfmNikJ#0*x+iR~>CQ~>2_b*e zSOqwbd}Y>iRC{o-h_v|Lo1B4~)#pblu^^ht&Ze>KK#lyVVJF2$ylhQ=W|hx2`LG;8 zDtcQePf-9k9a|C`bazVE?MJMw&HQC`HxQ^L$873z0FZ{G3<2n6lUm59^s%dzue%c0ErXcTVAvAMpa(_aRTO!H(ezt^lFao^Kl(;v#X}`9rf$8-OaMf!U9O zv*JFdB_+G6woCyc5($Gds%xksNarN)_e0W%w^74^WcV4Ag9J)|kOj&zDx@c%_gNa7 z;M^fsS!Y!rG|;9z3Ym-F95I`@TpON`1;q2silYy8x%ltR4N7vkC0Jg%=T`~087wOq zYHIQ@4UiBP%Ig|Dn`>;{!deoWfsQFad2)5wDbRgXmffFdwZy?l0FU<$EMP<6pnD2^ zd5d!M4F8T?6*$Ei^z6{DH1oFg89ixnV)Xy}{LT?OeM{wL-}9iPWLC%elF3TT#LrPCk)MLD)ZzZo2cPBkd09sYc)gKvZN|DU2 zy*XQoYAnzRQz(I|Pv$>+B66MY3)qN@yEQntFmp9O-zsXLvUsVNhHNzT0aLzR)S6pf zAVjskHleS6%zp0pA4>`bmG#iD%u%J*z~aw4<2NIuAB$-dL$wF%%~Bf+@mE?~%WCy6 zJ1+TA7hpo|i+?&j@R9UP@|Yx&fYJAX_6NSD$B>bch1h>p?<}M{JqH0@;Pa) zw3r{jP7};z<`gMxVrW#L{pY1zjiVj1%5vQ2I!$Hs+|A!|upHx3s?Vz`t|gNFKvc#F&xwq1IE_8t+I7b%)F`@@;JmVn-W&vo5 z=BnD9)Ki9g{Ta*TKhu9gRVpYL+Z8+&*Nq1Ao6fyEc$O9tcBwZ*Tm+9Z1cNs9$eZ|3 z6UcW>gcO5DPyUv!N)Cl7%Sw;1guES;mRA}v?shb9geYUyH-;kr*M38*mZe-f78AMx zC^zp^twCY3^J$zIu}_Q0!G%Wr@b1GdSIb6RcG}_oVIy^5aX3;pNw9y8LvOyucU zZblR!NvzmT0p#_s68p||cVeqh39DTO7np-_T)l47T zEs^$_8SB}b+vLXUgTt%4;92`XBg*r|6(7=9svhIg4K0C{x(+)+bEo&)4iT9)Gcgdn zDD8F-Dun}As%+1aWVrfKEaxm^4oExFt_8Z&FqV2V~9Dyr1M zxRT-?QfmkUXyj+_SWc+MYwC5>KNr{tSB?y{%2Ky6Dj2a@3FO^~_U}hoAc>npro7SQ zY(C#XKS#Du+PrfpD`_eURj(`)f>;w9sXBL?<+&Cqrr=B z7C5nHM@4V83}M9#KZ{P)Swv+rr&a#VPanmsl2v|%1~&Ec9JMw*VMs7l;@S#HKn32) ziAVvKOO~ffE~-vTSi+j;WdqFcZp&R^e+5C%f#=C%5dZVdr^Kz;sHAi(#^ z&QseeaSiO6+Z@%kP%LTLx_t6UHIfVnB?9}H+6ex?kD})sA;~xgB{bs_olPAjF}=)P z{*qtNiKE087#aZ^ly2Q6e|?bh#i5stTP^$H^~j%QTE zSR%*K5cEnyM`IFp#+m19>oEvM(>1_Q)tNg3)u2h7Ja6&hv$yjLqzPBVCQ+m>dK+TA zwazcdi=&PoV?d|miEdTgC05{8etAxFv4XgCL@F^5l=sCaL$QrZFc=Fq;vikHu{O%sxAe*2u-^sE(C+rX-CO?1E&vMRt#d)Vw#bl_DCNYqQ_ko+f4 z!ZXKJp3z+6M?K0#cQa+B>HY79-KQcT4I7(f)9BaYVjlcumC&YL;BH|gju%mB#5<|6 znM<{A5znzz#OUkc-X*8I}?|?716hnPWQ`l75*Bu zaK-yTTKB%At0JWVb7T zk1-=GEju!l=pYQ1&s69ktq*;B+Uq5a0XvI4ItLLi%Jy}2<(KJvv=izCKiCO4iM}+* zlm{Jn9d%kpjc@l_YQQ@&EQs!7a=@*$$ZVFhZiEC#1-tYCw37po7Y!sBn$21RV9>Jx?ue72kx8S?PsWh|JBNsq5IGA(r; z`V=YUs^jy|Z!^y6zN#A$i}hHNT~a+~evN9dcDwB2dO{Zm&EZyPL%^z43!Qe<(pK%` z-uS~G1m8!*^@t0cQUq)Aw&EjhCoE8n5VKgz>BFCHvqR@VEq5Jgt>g|_O0vhhf-xP? zJb~(@HNXkcPNGE)L8bTjO z==V@(QH;D)hL?FMys7N&{f*dS>TC0N3F#j0_>9}mp+?!EcenZ0_-*T4Y>Ta!$6R4yMDz0O6 zulzmk;$BfpcA)fSs#-fIhPYzLb4xe^md^_8E3}2Cr<|DTo0+raV%`);gM-t$m1k}hrfc0Z|>x3SiG3#m^Q8N=7_5X_*U8;3?Q{B0%pVe< zB3BYQPYDmaCdUVLknzuSldJM)YQwf6weL2ZqgEjVOqT)h~+{ijYjGH6C5`0nC1 z)!vqPfNa{Zl882L+-Ybsg^#bOrO`oot!SZ@`sm#M^k<-~7vgd_f@agc;KP>3DJtz& zR*>{-7bakDAlnJvWPk^{m9zQ6H`$z7!r>7??U-awBaoo-;`z@WN08d!_P#PbkTRKq zBQZnKIkOH*vj}}sKlB@E+Nb-Cyb{ui?~ixkn9LbwxbQ9;9PE{;)13-Ju@zre#-wBL zDP3qOV7zLRUs1qR%`!ce06GYejDRKHwNO9|o#^}1!;3RC?4-zB8w#B&YRO2$Ca1oJgT>=JQH!0mS0%8fc5~LDdtTl92VI659L5_ z!loY{sbNP6)~|@sN26EzF}3liqG(}CJukz5T)6g8Uy2Bhbe7;uKVnpRwVG_Ua1wa~ zagD1#?GJHWtkoRL&g+&c&}cVzy9S!8MhqriPVdfPtbN^Ekz0NXgnw1+vCu9 zZ2Om$xx8+~RRw-LD{*e?>q<=uMz9x!cv7>AVSs)|)t9yWl_Y|AZ=g~0L9{QH*0&{Ujfz;nn z)EjV1duAmCjK>m<5XnkhkM;0Vq^nJFsy*%k-EW^BOH_TobS> zv$$v`I!Hwto{^$qG{%EqRz0czb=H3U^5 z7IhlUII{KslFUU?=VWh@<(@N?rsk{MnOI#5ZxuF}OOxG#Er())XC+?NTf-6GbW!pc z`2OFT@L_3Z3~b{W!x>E>m~(3>X|K1pi0iXUn!K={!zmLj zbGwm5z;`#$qPW=yvFl@It5(#rhxl95;W6`|S3~K&`HzVw+_baL!9pc#r+p#lJg{hU zm27=G*_t-$G%szB8IdF7u%+V0O%P{~8gnY8SEY~NI_tt3Hgeuqlak-yB{rj(^fQtE zZ(Q*Y7S3XoAu&6d1}zRX0H!qbZrDtAaU+YuUe?jrx~8%nm-{5-SX}(NUb;K13qrIM z_K3>-4E4frRTqDj&h@4|8cA33da`SvX;=Prf|sx@g>G^Ka?Fcy#*z! zZI2)?oJaK7&V}L!(QMUgQbX7zo7ee9FiH@rz5&@QyA6@lNA)P{_Q6nc;2x=QBN0Z$ zHKI(Oi|)1e?0>kMA*$LIZ@bzG9I-4)`F$(HTyVG1=nmF#@PxA<3H94Dh!w^=i8@Xr z5AbsO{&8?yG8RKIy^B@M%Y5h6RvR|)abV}ZBPr)kvU2R1C|?RG6hUeoEA?#&nn*M+ zc@8!BV?Sa5A0^^}dT{-#k$O(wC%keHmPwY8j+zXeLv_`GIcw!--If40}0;3x*1m46unn{`u-0}LLUA>;WL;R7>PUa(-Q!x_%QQ~C>HRS7h3eitBT*sgfi zGCw+h&nw3I_dQlf%H5o5#}*UHFnrYtPQ>`Ccauj4pK{c+pHc2xr33vA}itLdJV7?=@eX`DWXD$Ol>Hu#67&POj!jRG^{y zzGo~K$$_#EuvjlL$_csNk78EtFYgfro#A&w8rsqS`7dQU+*&9}R13`SSHijo6R&Tp zspiudCH6*F)ut+yUdtM2di@=$%)&rXJ0)V?&m(!&HbK8sfQxwLOr8b(|JX9y1mffi zgMyceZAY{lEPQYM>NU>D5fo%uw9@{*Ha9K%vDTx9@{{!{NV)FrADTurD?Kp{muFTo zJjLjorC0o``bikII$-(LF@n&Y++~Gz2n!$iFvNBQZ0^n(VQTjvc1Kfn87uUYQ3dG@ z$exmkir?AsJxUa$=0>4kR#oTitfkN#ixS?AD~y*;=f337CcqG^MX(7IaWdQIFb;Yz z99jW)A(}#A1`OUN$1zbKgv;Qg`K@8FwKwBKQ@mtJQi=qahbp=56~9jq;(;+6+HY-_ z-Z6WWXS-Mss5g;_LE(cM?YUAfc;`xolX%3i_-3=P07ey#1s}ICvP^;=yUe9qE>(_5 zYZJUMAqO5Y2+h2|vD65Ii0_;MjIonAk=DcyASpxe4I%%sFP#u%U5IY>H5#9w+Mc>R zKbO4Vd8=u{9cscn7I;$HFp}x!nz|=)oop!o=pDiJc>!$+>bQ+Y{M#_^P~=;*aFM@J ze^=pH%1I=J_b0_z89Wu_MkYur<< zdSudvIfb#X9D;BmNeF@+`nW9KjxDmsD*>8Q$+B=_=!$P>rb|O?M8;!r#J_#gLWM)W zpbPg5_-#od2*{W@RsI%^PC%MAX!8F!S7G)aJZB+HQgEV9i5p)km=vDx2E6l2F8h%v z8+|np;%f}#|JpC?&wS|`-Od~xNB%-q{J-wSXHfuelE?lwy`@B^P>QNN+WKB1vsF+I zRn=Un=A8D3+3CLASf*p?tcF}c!z(t$o_PE0HtSXiUI-*I$sWY`tPc>qK~8Cott?YX zRGek!0MJvPV%4JK?fDyakEM<s3UpvaK8d7rE+B0{in=M}G#Wj!Zq@gf2Oe7{ zp@^BxQ)jb#+M}{lVZb2G(VHDBtjafK>dv}X58xqb3G4;svW7KQ*Oq6ZHrXTisr!S? zK$ypCpd^HL$0cLux$CDu_jn11>A#BkzF+@;eD=h{2_}G>MHCzOYxNy<1A8T0q3sm# z$)+6G5I{-@A<=Hia6sl1#)XzIpHSgZ7K{*rXP4EGqlpl`9GG7s!ugw9$orW}B{VQ2 zC@M|@7n)Tliy>BpPpzCX)JhtvfU5w{Uj$d_As*y`bd60>mkoLZ*BlbIDo}6^o7zn6 zA8MVFn+%JG&BGYJsBe~n_sU$t1B=d{3;+~jRy)pbk8}Y4KLEhB!U3WBh~RAl6zc_v znu_Yp|K(7)s8Lx!TE_-vjvx16bh84JPxH%u%vutdj5MHJyx}+`LohIBcbvc(*Y3at zFI+7>~FA*(TrSq>iQH@zsNeKqW zqIzWT!^9EwGx=dA9~1REVe>_ULB{@^@@5^@^ka{k35IXVX`6*%fAw+f$}T! zFAF0{XQG6Qy)jsu z3}3Z&j0C>H@yxa>Sg-t1f(cv*M)`SC@E)e+I6$TDOFGg&Pcm~3k-lu8EDFX7m4r<@EPyVmb3S+ZjfP@&S}d?y^qRc z8$J+CQLf1Tw=~I`EtauEU>YR{naiOqBRqJB5Z3xMyt=%1h>miQ)rG0rDy*mTx+yD-;R)d$>bi7pEU?r-H9V2SVchMFE1*9dvMcrHB z!r`bwlKS3&ao(!2D?>WW5*sO{i{>9Ya^@KRbV+`p2-Gjv<6?*+mU;U8;Onsf$<@gs1#o5;>8$IYrA!CtBKk@xIda6NzdhO<&DGa@_6(4YQ^9i4CpQ=qp&1d3UAxee4XKU+577Ek-Tj@D#082{RJh1R56nX=&cA7mACw>7+oZ!E9)4hiI?N{dMk zFSAxw2ZJl}kHWaM>^9RzP7@|O@7vI>so=)$J8AfQO$h~*BQHfB9cd^w7dQflRvGdz zP8g1vSPFFC)P3MwKUw_mEAaWy(^6p~;LVr(hd&E1B>EgL`35#2Dwu~*`U^UJRDAk- zrE^Eb-OUrja_7)f-(DsHlDvk0@SBZ8Xcj*VlO4l3v(dOiZN38=UUfdRI>c#T|!<&O!fdL7_$)qdl z*a6Mu*dlq$*%=jp)VdHV5Kgt#-lG=j~&SZ zhahM#oA%{mT&;Ps0zFPpd++}^%24#bS<+0@gd63~b%Twe&AxPTP0wo2J2SZK>`~9k zja@3d*6sn3WEp9@6Snd@$7T=Lq?33*+wJ}Xk0U6!Ja%+74iT~cDk)jrYElHw6EZoH zpoOP#ILA<9`>x7^Z5DczkkGCz7S zryk1{y<3CX1I8-|wW8_GmPI&RSvDLg@cF}X+nTV&k7t|S(PgzMH<%pvVTQ(XY6r2Z z-*KgY3*6Bal_QTEmt7{-OOT%Z{vd&3Y& z6TOQ*t1GuA1SWz0M81I|U|1|mrwrQIVx$N{oC}E5RKJkpBhxHT%uT&y{0M|CEUnlM zCDrvQLS12N@wBpy^sNzLb>B^DO-T!B^)^Ht81n6NOXP(Xu%!gLzRb@vvl zHK68-rVdv(6Pp_lAs2ANX|a=gpuO~Je)ZELyuKJCHDk03KO`TPoH9f8BM4fk(6rm9yrin!cxts7+Y%Cs-aO>u_I6hS$o z@NFk}G&|5~3v_ZS=QKkG1iSQ5)E1Xl`-jX2hwkXfN~g2f-?6!g<=ULKg9@e~yeO|i z75NRb*X#+iBa24^JQ7*-k)Aq;#LCO#I$k*cnuece1@oW5WDrzC{ZtK6mJMnveSZQp znL+D*dptH#GYozpo*%1K*~gk5#j~vuMAnM(L&2OAkOdadogx+l4Gd2~3WDbhH406N zGn<+kcw78x>13bvY57vdd<2_oU2guOKnG-S!f*suX%}Kn8s(2sm5{`if0XiZty=== z{8w~M)ANmeMC%_}VkGDOj$|OMPK@%$T(tirHRIpFtL)HM9VzEq&1tO>{KW%5H$~K{v7fu!=xir`N1x+)vh_PdJN(b1nSUA8#Gph6x- zw2y9SaS2yGj&WI^j6an_*smO+9~HXsM<0gM*|MYfN&TajE745+l~vuxY)etduGgrh zT4Df{-DB1dnY}`A?_Uu}r|I+XXmcaLtaN{0w09hiFk7W{;%ebwE zFP+@c7%3DyL&>wmW$M~?!9AExQQ1tnY(#?+(A1eqkYHLLM#tD3<8cCo&xM%0s6snU zh1ri16ROehCnOlv!9SH@@7XqGQ5ve3NODiTl8^2I1Vr?A%${G}^@{aB+Xi)s2^bZh zn{bbeO_~j%Kc*Xy+ji8emz6qCmj~L&l-zq{VRV5`vKHF_f)*}dyq5{xc%!|R4zg_ zqc4LGLmeiMI=oB(5{AqTXuXnryd1b>G@4Efb|GYc10KZaFndoB_np>`V2hY=?HZ}W z{#*h9TS9l{PE}q9PcC2CcZM7@;p@p6qOs?cy5wKJ%+>cH`x5zQAlbQM&ViSJH0VVh zO-hut$723QR7vFA!@WF6#^qi)kx>bJ?Ja&O-rzGqM0J%9WNciFkWFr%%iqE@eiK1B z%W3wF#9b7ybM#e;4zd_?H0_C{lkf5ZT$4fIuojKkR#^7g8^)VN;JqbPp~7#&6el^D z6NOtF`rSYd;}+KjJ9>iqW2k7miZ|HXwCWs5*Ia^`b7&Y#+NG6A{Z6QD2$TihYnP=F zC}1m3S#-8|VlPr42t(ioZ%w&UGdSa@6N%aB9O@YU;IlL-K^|yo+Eq^xaNjK76zcF9 z0)`k-CdNlyAt2zEOapt{t{Rc0dHgP&MN379Bad7GulgJ!U_zcS(o5a+K50iQbhO-m zvjGIX>|JRi_jgb`P#Xd)Dx*jD_gXspcTGWM9&`cC4vSVTyuxxJR!XdR=KNjF+H;2w z<7^G{S)!0&Tazzn4sEb^&_$qRdg`FDLWVtp;MtD6SR3HEl}mPJ+ACsl*^RAiOqe8} zoTqY+8lZK9=hrZuJ^ERd0AC%lz)VH)5pv-1*0$t+2XP5QTxZetWWG0yahHo%Yzg*2 zb^7r?zGv3~)`&26N|E+WYWz1Gs=rrpb+bFJ_95Wdqu`HTc@rE31Q7n>&dv)_I((YV z+!)j;VFNP9$ipY;cZx&Waf!g+(CJ}6ahW!ALB6E8=u^FV*?=-KBQiEW>0=DJ%0V($ zp8Gt_>>JUVdCzB$zJ$lT$Rky0{3pSnRG&qE1+P7N{)qayH0$>#g;HnMTcARibR9OS zSs+(tMUK0b(0B_S{>3fm!d<5IM|}VkI$ft{?qnZ(RDG0as@2f7#Hc+E!J zk`wkPFzRB6Z33R+Y8=P@#TU>e)I?HsMRP~%WN`l@%q%l4%l$In-&HCkDQ)|$2 zCYdaBRp!|5)lB3K##6#^bYz}6*tJyp0qKEmsaknp=lcC4;&bA~C9`*-^2i!zw%_d1 zP006ra}9WoiRQuUt3-P6(?ji0cJXGI$50uX1eL*Bl}?LF&A&PT4V28Qh8i2YoyQNe z5=5I1?eHkt`HDgid=TfhecB>~-JYZ_NJttW4pW{s{_`j-0s@=QMUBy5gfS_zipqon zN#)Q!5&!D6N8g_TZXs;9i@)QY$kqPTD$OJG`6D^5^2a~KcyuM3@Wk_p6)f2p89IFp z@Hc!gOE=dnGft6stH&aH`w>IexL|YJ75=`LY;(_2wDLusx!*w>X(@Z6eCxOjjpz z!!*WHvXqJo5I;CY>ve&p)>=(wF9L%6*@_wEtRi!OkwBkXDEH@<3Bh^v?OMB7=>LYA zVKfjz5Jnc$DnJ*Ug%3UaYn6wTR1*y2f7o-tyTYa9V2=)C?=W*tHWry*##$J$EggH#J-V1A1r>cGKCu! z0(n#v3JJlz1#*1P<3u(=j*tp{#_dFD9&P5{4m-@ArnSi zvH;hjmZYe2I{ji?NXp?T0~PGj@`J$7k!g3nmMyB~s{Zi@i7pTybsa;&>lGUhv$j;iE9+{`{O5tj@8nUHR^1&u@@M5(@?- zX9ghW65j{Od*0!gM+f0e0adz>Puo2vuRcrH0J^ z>cT?qDd3URg)->X7jkHew4J@YSnx%#V*_nqa(p6kFd}c+eYT&1v-DwKe?9k>DJnR? zNxpa@z4Gj+^moM$wtxXlvX!$ok%xt&_-n7_ym)sX!VwJLM|R@NDg*8J;gu$TXI_Hy z!qFtzXvj~$Nxp*xp$wrQH1#X%Y5{zbg4R>4e4AEEr4_wTG4?zSy#T%rT5T_2AOFdT zv!kj6F3_(<2A@fG@=}?a2KSX??LY>mgQAGG3pC3#{p*$}$Xs38;7qgY)k^_i`$Lo{ zidvBOlC>H!*l5~aRG!wB_*Edc)|{OCSd7LGbguA{sN8Z!Yc&aN2HK75ILU8J>Y_^N zc`Ldk)}x#qPufCn?TNh|aZQgbB@v5f!U0ErFA^7r+#qXpwcRz%#0M3o7xKO%n-jd` zv427xgM}6Y%o{$8F41~)N;4BdCo}`}g2nyp%FAz1yYO{Kso{*MrfNtJmege)gc=oe zYutZ*^SIaqJEHss6=D)#>4Ft5#SA$^AI_i{`GKJF6c&|spzaJmucj^V6AzI)I>iG* zLkjg$Ms#c=|HLLA@`T=vFlq{P<`k+!d8pRixMF4cGn4$Lg} z(~_9^xFd*b@Zyrxn~eeQKuW)x&DIZq6>4_GmHZ6Vrdw=oxcXXgT#x&QtjLNbpk3Dv zRm$8`=ZNTSP>m!r;I5>DYo{6ax^bE$IWgOF?bo-d`Wl;GR49}JB#{lV z@u;FM!dkW6)duA3AftsOS5;SiGo6;@ z#pCvyM!c+v7Ru3}U*SzhfKYgs!zLneR!b6|g82HuF}N71{vefyFkw}pat+=2mIym>0-ZPUnlo*J z028(~B~D3jlBvp*^(TnrWN>?-77hA_E-Z*YfWG{66Nas!e2t^1S9u@o8#Md&a!SlA zT)H7wG_rSl$PU+rtTa>)9H_FRYuO2&CQ91+LDKzv$m;F>6mN)os0w?j($Ph(t@yQ& z^GYzOdlnSlds;H@cG2a5+Nt9unc@>%?EbgUq$p3*fn4C#F6M66pN7^0V0z#vJN(XKqjf z?X>$9gy*RHN+P%m4OVmGUWRnIr+{*E%?U>&FWX$dytt3X{vOGG+pRNA#-#P?+>b=q z%GskZotD600NR#fYY-W9Wh^j0C2o06O;PB={v9#ekpms`Q?mi8WH1prifi`4vH3^c z=m6whjiLiDb`-w02BcQnW*?ng`G7_W@p0Q@_wi_Gs-G2-3!ZhI4Av=Yg|$knrfZ$M z!PmKEcH28_00nbE1QJ6z68_*%HBAcX5p$(|ZTgS6MNROsXD=Fi=n&zAHX5o*63~68 z;5UL8&|0KCfo1o6F%d-j2!YfCNCC_P3NA1|MptC>FHFM@fE2y?M&K%)dZ_cCDm!HM zJ8l9S;}yY#mVb@a^*CO9_am7g%F+_AJhddMPWI{){cwa!#Dl$JCAVDhonO21X&8c= zy6dg2Fh1|HY7KV?xyb5|d@u!npup*6NA$NWiWtH@ymHBTpM7Bmxb++%Caz8!epvW{ z>Bs!;^FFj;i2|h4pDH#r)&({X*aMM{ultiU;~@er@+Ca$Vn zK&@@?0To}m%dHB(RY3ND#~m*JSRc~gqzzQvWbwm(*N}3_;qLce3KT+Xar=s(*q_rSZUE>Tf7nu?g`*>-l z_$@P>fn-8zu(VhD`GtkdNknkV{6Q_@B9cPTF!#P&z^y00K!g>M^fS=D;+gBY#R6?3 z#xv|Y3Uv6toVgMyQ~9z4lpU7IT)U^ZFH^jh!yT^-m~TV4Zb!Q}QxXfN6aJK6M~foe z*;NBlLi%hU+_H)%ujtt>p9C+#uZ=$Aum4a7mRs)~7Lbl*#Angz(`P5#`_V;OPhtVyE+tw8MmKicZHDNW$OsX_WrYSC7VUzt z+05nQpCG2M5f9oUUM*Jj?N|d|%NiLU9UOIhTOPX@!36%xwa|LX9M$*K);eqCD!_0S zS22TFWUUk6L{Yi*iLeyJ)zv|n-WD{?D~m>kY-lP2$Q`Phc*ZdNBEAX{cJeMk)e!hx zCJ}}58Id1)W^7K#_N z-fBe3D)Z=m+yJ`HwMz+(4cp)udvAjwluoG3R-$DLjoC?EF3<-~-^3Sc$MvPRzc0mV zu|Z>Irf-uq$Xiu@v#`}=j1`r>GPMf8b~G5Afq%iH36ydqB*6AD~-9jYZ(NuM2>xnaboN6Jo9-U>mn+BJ5;-| zB1Mu}QmS=rhb2&>W62KbJ5=ty;s! zxg2!q{XNO1&12S`5|8oIJ*+HeH>I&Q+3*y8IR_}t@X)Arm+<=C9X99La6X15Nm0P_ zfI$@7gA)hszjesJ^4Y;4hQiE)SzWggv|kU;dy+6wMV}Y?J+pTl8u!v)b(Jm?Fl`@A zN;kMTC+@!F+qjG`fLE6)#op^F`iko6$Ppoj2<(b8hW3o5l2=bh|4(Md>8yLwwnol@ zFT=pbKlDY|DKD3qnhGl&Q2*TxLj}lt8?Th{mT(-YKaASjXQd6^vO`jkhnYFFU&|_0 zrU2o_REK)R9!~R*9$s`=`vil9f*%ZlYG9@{I@yow|0Kib^DL@SLdy@r6Pv)IwsYT& zaUiiob!%@d&3i^)cR}qf+FMK9Hl*~)C6}^JOcmsg1T6jAUi&)F=Qy{)- zCAWx=W)1v0XW}9LM&)Rx?0IT>*5 z({uq8$L|SS+cBAvt*#T!QY_RtZe$^NYU_~r+|c1Gs1Q48dj=od^i_yT-4#+4u=gi0 zVO`y`0G}7)l5g_4W7Ll4d4CQZbC9Db{5Gkh4Xk;<5X3#k*_1v|UXnnZdV&fDdO?Q%Xr^q5^xm;rgrVcd}r3A}Y{`+eJYrh!rW-_N(c5ooxNS#wN^%-CK zLvc=auYR;3A3H#~GWyv0!5px|Yxx0JlKq0$+`^(bCmpX|4WV%XtLJ^PuUL*I&JMAN zwtlo>3v3pr3&lGnJ6L21-ZZTDnZ?uM(`4OHbjV)XRa8M&?%eqOpADm-^1( zEcOV$`9NioX1bsn>=)`=);#QlVwJ@;F0wcLei2C*1MS#>&nBLk#m=h|KOaX1wo_}PG*dxX`@!dUwwGn4wU%v2Z+K@p@x%}ld9a}uE@$9Q!3|@ zbai3I7Fskf@lDt)+-EXIJ97*_H2Bt zG}nvmJ%sNrci}EDY3XOZ6(AD@G0$r` z#;n3}f4sG8qN4bahl^OLY-TK5@Rkq_%wTA}f{K?q^nB?@PIydMaDR1lk0Wdl#nR%W z)_z3E4&9Xo-taVT#iQ|veG_Z@i?50akk1sDPi!`tbF|}|7z4_F3Q{|gPKN7j3O(Yg z7@p;t*4+5ggLeBTCT#a;w#F2M(Z$Ya3?Njco>)MuF=_KJSL;k%e?8e6(OGeR%4bXM76^s3+uJW`^%plDj8mlExM+N zH*t^6+*!;xjI54S6a)FA;sJVsXFB_z>C>#LM3i-kjoz|WB>8Qd+1#C=}j zKiGsyzT?K$$>?y?`+*q`nQGZ(QGgh>czmqluIAv+tIN^cW>?9S>%#}_2f21B^0;wZ z^}qvkt4>E`3?m-zWpm9mIGdNlB5P1Wd)}xF3TGsUCza<5g#P4aBPI%hcS(SuCcyJb zUlkiyj!*@f2*t-*+5j)mo|%5iW;#89;(6a+;?lOvbKI6YkP-Z~z?uJVwV%@1LAk~N zxmmr1Ng*2E0ttcSJwznovPPda{1IGS@K7f}9%WhT*bXgOX#8>f5!h+_2z`ywH@5C| z?D;BIN|S0*sbSKiB+udtrs37(H?YBZXo$6+^OqfYr9n=@P_8*CwTsDjN2&sy8)229 zXFD{5M(MV{R^@~NJC6Q1hD`txfdsGWVp-ciKf*j_Q%RM15Jr(!5#h?S)g@k}w>RaOeMfi+3xf z{|dw#i~{v8c>fo{lgvzHA-0(1$dssaYzdV2t9-ouy&or0dxBGcLXB=56B7nL19tvl0WhzU=6a*PELs=VJMJ8dyBg^lF^+{K2Z8)Fm- z(CiBnfV29mk~8U!RVo;s)HBBa1=cPv(b!ws8q+%}Xngm2YBgHT3=Fq^ZjY3CCHk>f zcV;7}P~sj9-Y=l5ZO+;;Z{YjR?7)!}(o&n_zmH@d4reYdTy!uZ9W0aNoEFq=9}TID zZyUzKM(a<=I-Vv{izRheF4(K_kwRPk5A{Z$t|Yxn!e&(8V;>;5IY-n^l2~SsO6;M` z4~8^t;Muwc6S1E?E>f3JGZDK)!~eNyJ)v?z`-Jx!72LzIvc7rZK5`6& zk}FdAB4Kld;j3GQ#4&EJxaN-mLBh!sb=&uhM=kjs$1w<*B?Zde5`maTu8ow6932NF z@7_y`Xi7vvH>d!8j!_+c3QJAhGo*sX>nnO8PLk-It4oLNK*0AiP zVU9pi_5E9fIKj>x@wwTY^@L~U^69J7TL0j^T!Zm}ha3(VqnNqD3x9-qiI&x0xP3M` z)^1Ly?Q94p@2pMTO?boS@D@k8IZcX!M0`=aQ-QyYiu1d_onQazLAs9jrnYL?p*H4P zOjp4Ot^K@T)nd!-pPCq1-#=jfThs$2X0VDewE=uHEEiodq>OnJ#Q9lXP>ltZ>(g{U znWtWXy)gNf`;gC9unaJsqrz-fES*22{rClDDeOBwB-x4HSmrs$J7rzG5S-j$bY@^w z5iHdYsUY-)Zo`Yzjq|K0{6Smko^U>X)_=Y+Jowpg39M;qNvwAljU^jbns_x(BX>a{9;LaP2a3Tpl?*QYy#S?RuTxAGwo&1Xr9?tA;9_c1< z0#E;*$6}jO(=E)nx$w4aOnH4XJx*%;!zuS0N0#fNu!-=TTX{$sFvsWf(0k(IlBCMr z#Z($Xb~w+UdhRrfxGE0ce)-_uKks)+W;Vx(F1Z(YWIoY@w>ypX0*J10TbKpfwx-<_ zh#~?Byn}TZx~p{41=|U)1tS@Du7Z%F-`b1DR2G zh!V??ee}@y=1ZOS9NU#w@NsbpLq%~Evjl@%k{hl9ctWDo474>yN+lRpbu8AV2LB~^ z4eedO7N+TpcOa}55{;VbMg2(`_Tl<4e_4dQn)g)(d*P##R(a3pF?3jQNZINTnaZC%8iU4f z+f{VgHZ!P)yPY68VnzHOWv*Y0H~UkzG}$R;X>9{+OqMcnO3l%Rd?6!=^E>J)s6o!t z=~|JY)Uh7rRv!)UK?WE?*rPF$CO8WE(uYmb>y}YW_<7UpLvpBo^*~hWLV%z_kDW~= zKhYgNL+-a5N8~3!N^61Es&SQb)1!Tlydfb!)V+x214*Wk;Q=TNos8@fr|Q?}4QGdVT7Ll=X#<;|x2 zm|ubh&er>@)ld?4!IVma0!LLtm%{TUSd8!fv4c=Jt@3_XbI`*ZQ3R^>aG}D#Js*z+ zR*7#6dKw1!!O^K!j?H&<1w0c>DPyY=hDB{Dv`;N9Q(Eq%ZH$TUSV{L0yH4y0ct;?Y ztbT!)KjnH71T&7f+w`Z2=17>4Q5Sq$i$Qas4rk=WlC7@?it|~KQ?jO>WL9!;@tE-j zi7%Na5c75sOB{unPsgsnC_oonDJT4?AoC#c8a7+1ZV>4312@Ce`Y{K|KcmJTT6t2K zwA}!xQgBod*h>>838RBWE>c1(7TB#mAeQ3s(d-PEVeq_Vi;QehEfHsFA57PN-ve8nI?U5= zz2XMHHx>wcarg_?jjV1>)=q8T1g=rClx(xP41Um(&+j^O4t2@@+K{i%q?zO@ubB1i zE08tAM;5}AcKtr|+iL4wa@HcP(auI?Nd;*Ujw+`Nu9SgUL5yVGfIx39Vo`r)h?a>$ z_6`XfI1CRwVo6R*;6zxpv(_)W-5A1t3F@|~5jax%!F+`DE|bJ|Vl44fU~^)zth(}? zQ2tT@_Q363YbSl*LyKNz`3`xXimhXErIhi41w;AHON&Qph@*!?Cln$j&5e6*DH9fp68(D* z{I9AmHE$dzO9<7Dig8YR;emfXIaz}@P#u@r;VE0>nFVse>tjA(iWHI8Rhv)F9xt*7 zOHRj@q2;9;IdW3COh3`zqduKoWUw#_YIHV5QA5JTZUgT{t#e-F|<4 z=QqyMQKS4E$kE7y6wV#Sdj}W!l_p0mH;nhW!k4L?``Dm7PD^4vlIPq$d*OaKc1l6? z$*F-dAcoEp9lZP#--b^M|Ih%RQp=LA8NFQg?+_N`EuN1PlZ>N<(kzP~ZMzBd>|rmf zWNBUM-;t8}`WZJz&OU+KRY3X3#D8J;sQhgaGSzOVlqPr{fowJtRJT*>W#`UWmx-kL zd*p@uY)5G`vG+MxpFjAFVDsQohgdkHW4@$C3*=rNSmraCN#bHl6rp=k{hLKRMF{_o z$&KWNR+aYQWOK4+$G=Wq6j*OnHUGr2EnQi}>l2dqg$URLYnD0-v&N0rN@ZsMfMFI-wuny?3(!!8x!bXn6Zndd!Yo0RUR(^B{)D;_s?O$*d@eK zQCRN=pO{b;Eyk!7Dquc+4Q*k1b`C~f(VAA!>Z!ZSk@=$J2*&Ou^4HR2M@*PcvV?6q z$acEA=_57M)E=4xJLrZ-W@fkXw3U`wTCz*PbB>jTHOHRQF!DS@;^5&CrO;EwEOfWO&JUQ#=`<3ey&P;L9Yz(pEE4Ga{{7nS0R9#Tyx zFFt&h*D^x(Qdc;3^RX~mWcz&4To^R9DS8t%ASW)BmE)ece7;2KbZUWaX8%%kCs;=q z=sWdvYh11n8s9^dcP7lXnX=z%^+mzFJZ zBE_Xk2F@RcuK0j?GlS#DfqEh1#_LI50orZb@T}b^>ubv&ICG`!%{!shkx=-!XY}@d zj^8CFr}R7NWTjAtQ$76Rc@dH}m!T(TrpZPU!76$^m9EmiC`*V2)<==^V=HXiU3cBV zn!Bqwd5`g?q)7?Fh}1TI;vlF4`SVM95MXG{PSJMv5ZT1Qd89dV}PmGK^fXT=wGL6N% zeaZyC3oly54`~?34LLyD@O^*|(24i5?n>dXWj@GS?JTiEyY8OHU*Y`ANFw%WtynqNa0w_`^ zO`<=Ii2$x6#60%#3}HLkKDC8G`4xx)6}ITooj+xS7RdvGRGF;btk3{A@zf9%Xm2&Y zB~<(z{Cq`R0b>l&+__Qia4Ce0WIhhmCHtl2pcPju08Rx$220$Ri2E}*CJk{0iavP1 ze^h=HSfO10Rv{dxN@F?z4T5|7p2Ax<#dr~XEXg#}BKR}r+80>%F0OO_u-d;Z3BR$f zg1;07EE(69$+;#5n2b0=JOJfX;TJuh<88apo}9%k8)Ee)|QMh_MgmD)(PD;!m&HX8jpf z6JZt1+SOk^P9Sn@2Q(5_|vTV-whUm<6hK3u<-4K zTs`DLH0+1=ymWlnwCm#F#q7P#nW_aa&^-ro_7c3|(ZyfJ!aK$rwgf^l|p0%s=jcp{o+D z){{754nGYEs+d}lJn?LFvrE=B)-ffnh1U%C{XKAnMcQDtDp`itoS11N;@v8AN$iKi zgE>?UoQwr2Nc_Rgi@zRAWpZ$ih5Ds*1{%z}&zN=>R=mIE;7OV{;rdI!7+SU6vCyhR zC}lO`U}QToROpBU5Fh?aNKluUZ(miXr)-q~cxDiu1uhl;{8HqN73*J9a#}gFGc02_ z3OIn((}e4O=2w-qNde#_9IT4VVr{B%*UNT?7>&6`0a42hH$hH}h)h=c^#w(L)ntHa@FxbhqlMRcwi-Exv ztzGv^ff#)G`@DhvUVp{#2CczX#zl1^{#l;tTl3QHQp z^k=IZIA_Y5Hr)aqXj_u98_jY?fYsgj_E2ZbeJc;|&3UATk;-N|6mDansE6e2X*!k2&@t1 zzCV6&@HefCA+to^;9VjiV4|UJv`!@u^=n09!#TKVRfl9gT&$TkiY}88H-Aj@Fa+1c zubOiua!Cx(Q>456>qgxuN6Cv^z;In@lf3qdjcNlyo4tVc863NkS3J!DxY7iJZJ2yH z3Ugu|;<~VglXP^Zel%|k(c3~H;xyDan=eNtl_e5TPa)oEQ}de$4+)^3Bap=J8JElS zpUA2~UcaK{dVIFAqc?VSpZAXEdMw?q&vug>2#+gUWoRPrRy5m`xY&Zols@}ump;fW zppt4l?gKhu$+|G}K(YRVhC&11Ed(w8F9(9nv-$TOekQG1)%oal&*zzYvDiYy4uA!Fn;I?VXuuty=ait!aU%0G zgqNY?PToU7j^1c1OYO8X*Rh~Dz;k6zvpIM%lbjv*x+~<~|1M#I5K;jDKLEg1`s~VQ z+xqz*s;f=S>#Y-H-{$Y=je9LZ!DVZW(Lv6ezU_|o4Y#e$8JWgRHv*hIScjjA6jL9lX;fEl+9S^py@VZp zg#-nt7f{Rmp|w&}4lgtw8wP-gT7|?NB_nAWT$IXC8^Riz*gPTpAT*ErVuXgOS1R<< zIhSEKv3as>)brSCxnXN1-0aH*K)~;f0n*j6gN_`7YkxU-VvKy~3RExOC}?gD3RMJF z+iUuHBboGvF_qG6TlzO>L+qAitaK8xOzpxz@d^8-kHGdUEC#ssZ5)vf`fqC?a( z>;93f$RCLB(^Z+hur;w=rMno5R{we5!Q6<+?fr0;a}xaH@n{>>z8+946P9FlqH?Z{ zh>A_`%bjL{wxEjz5%jotHpfY=CZ8;^7pfQj@%1#JQ=|{w;JU0iC8r_({a&31ass}P zBn7Xi3AYV%nBHNb2UwR)yKH_ett?4U>e=j*zALPYt=nO!y-T z!vcqByI(c{R3bJH62l7($WsI~EJ4bGT+jTmxt(?v?2h4J^>$*)p4s63fEfN-b+Qm< z+SeNWD&TzJ;XI}xVGV`3_1DktJI=Rao(wvdlb6XXT_XzKi7DbyTsx?0@5Y21;CM>7 zZKpU~tY@k-xms+)uJB~OsHtV50OXuDJ7zXXp!g0%dB$Dr=^-4-&)&jb{xbZWACAHq zvlL;}%0b}2HY#ykO$PFXWYU7xv>Ca3Ef~=TF1jeDr!1&8f&NWLQU1a2-{_m~tfQgl znBQNwT{(HQH<+Q ztVU)#Xh`FJBHEK@Af4_9R>1}=ZI|fP^GMo(Z!EGm3kgn5uDG>^>{~rle*Rr?`;0w= z@8o=j31`E6vRoQU!rsG5Is&Y2sxa!T=x$)w8x(=zh2LiWYJg+?=YH2m0K9zzuFsAA zo)XibYX~oS@(CmzzHIuutNw3yOUr9FbwPDTJAlX-@DKa#t1?0{JVbFdR9oE!?1p? ze1%(5m`l01{*KbuE9ic2J`9s~m6QtOb`~^nYp`k`va>-csdW+*YZ%~(bjNuUWyvCfhFZj9HiLoZ%X3R1Oh^a~7cN85$)@di6(-d}wVx&Pzj8&7)Ml2zV<)47Va0PDcj6bWv9 zKmZu`ga$&pDuzGl>l5&*EG@haTj@I5CAD=~d%}%;hMjCT)&||?4-(=w(?!JWQ*wEL zOV^upft2z5kBMd=%*c`T73`2fdGs3)Ip>7R3cA1wDnxF+Ocbn@TjhQ0qkIlns!4JN z_wItS0NA&LhM}awP8PGe2k4^@lFjSJf?!L%A4t8!+prbsjAevG<1j74*%nZ-C)yIk z7`79qI?=kaGD#hj!wpA%0M%I_L$})Iz6qIQ*-XN)dXfW3VJ#mvuk?ijqw+UPd7*|s zo{kBxLznz{&9HvYM4ecHhi!7=3#CPUPPbQ$V{5Q}&pLabOvg3dv9{-F;x~qdp4$kn zzGIC>(r))RIYn!%iq=me5H@C)>EY7;glvPUbo<$4ScbJ=(o`)Pe}KGlN2t1y8&)y% zR>+4)a1GWKFY)!Ui1*{+Q2vr~#{bWDrId4`?^G-MQ)LKSqSsiv4&f!{3sBg*GTa-A z*JQa+$;{$fh@VIC0W4D0U$IS!O=xjg@OA#*PO}!4s$co;ukNm!2xHV)08O3!;0QV% zr{oLxl?(L48&UKE!#djdn%B~DE6PDi_Z3|k(q}X+A$79f)Mi~FJPv1@6m5tjrv$gH za~Vy!qmn(cb$G-r2u%QB6))?l1TEl6;s1-r4kWD4qurl&1Ng2HTSP$3N(pPaXnPpC zN+cE~iaqm=_lrZC!nH5n&{HA1iBvLX#e2QWpHZr9+v!nM-NY|Cy!*G+`1$7QfVi1N z4fze@0XTCg3yq}{Cl7cCqi_f|y5Sz&)dmAOAA`YLH&6*I3KkI(nanUiIdij;zjP8Q z^l)qcHL!tn9yMkIv#0{_C|xKZ4xp1vMcysTPx2g&1sUatn#g@XgVf8UQD(HmphiD@ zrlHe;J|9_VSapG0>3Xtb?YC61vUu`Z=E1kAv6%A=Z{JjbSC841;8V-LzQzf;?q#e( zM55B~yyHjG6Zxw#5r^h_{(&Knh^nf9M%&2G-cq6g_FBey3 z5^~?q`!zJODs89_Xs%_1|CK#-{pyMMa{HT#PY$OLK0p53s0aa;2Q#MSs9R|34R355cZ#l%up zSE_sYr|uq^W0I@e#Jjtf!D-gUmR*+GlBnAeXs|L4N$*NvFWXWM6)4S_oG{TPy%AX- zk-jb4B=i4N-36~WlR8Fm4H)Q*Eqk(YM2;XnEi__UYz^j|eJs&0i2XfXX=8>4b*6FT zyNMn5vY{vK)%Qdcnvl5#4U2$;jR5&kB6wY zeGUuttgKAzClt8kv6Yt-Wr4cT2imL3K~c1cQqnl-L|w%(vn!TjJZ7K(*s1CYlMEws zD5c`}R%kdR06vWAF6Dm*==J9j4J@3an# zTvEfi;m>BTDzSK-^*x|`jWK+<Ie<)0kj}(Dw`}%->LN2%*Vi1vEJNb<7ywFkFWU)JxXLuh=|z{R9haeq zzox!D=)&z9CP!urtULO2SxD)Q4y!S>lQRW{ejEWvq(I7<_UF(v9*&SBV{?o7P|E>s zO$41(*9n_8y+ObQn=9X`U3FkP|KeqPvyI~_O{Qc0xiKL#Q6MC}(yJbL1(aO;K6Kg% z@RJ((1D&Vd6r?;1iya*)4Mq+yoRaQlcYE%I!fuq$;vNA=gmQriRKSXGaiI2f(ZPy< zkL-c=R}`e#!pPQsLXayj%}x9JqPn=1cB0wy&v z<$Y-GH#^gc3HI|)X_z7AL*Kaw+4Bs5uz~i-UWIzEu*(Md!mUwa4aE6zK3xD9t)tEU z0sJOW#T(Q9)i-cJjt?M#S94~)6KF!P85oZ}<}Lj>Mz@}`-gWI}ab>Gu$t+;V36(B7 zML`n)i|wdV^W@{GnJ_t6Y%dw8l%)UmShVa75S1EmC?2I~wJRM6(-CRd z|M0!?l6DnANez`u{S&W}QP1?>|3C zK53YJp?{_-2h$ZLv;nQneYsoCJx*g+^3-(;JrEW?BY8rIGaGpK6V^unrisc1-Pn%P zF15T|mob^Ay?P>eC#uUuCtH;#*gH8d91U(Rhw^oIFSw?EOHjg9j6%{rsV7eC;cr?3 z(RW`HzmE~BU%aX*jyHdcq4C@=Cm>q-O`tf^_kU|V#nMn}*xFUT(x*qsK=XUT5m|5f z!3=?AD?Sde69?duP=A3|3H)>@SLdcz7Hgqmx|3o(eQ=8B(>Isz$+rG}dbxMluR>3e zrFLX+jdr;pxWqPwP{sUG7Kn{IrotTbr`EE>s620K&mSIYP2FVcAz;~MC^vy6zt+Dp z$&9q+8Yc2B*h3ZF4j#C6xQYq4(JcWfUDA)+-(4DVoD9*$s;alQfPd3$CBSv(IEcN- zNSP01A$o!A^K)UY(gKRp7>+l(~+OLsExJAc|~xz zdNFzn0UGeYC)CE?0NA@*m%fLiu1qiLL*it)aB|6d?KMq4f~eXqraxSi;LL(I$_bh6hcrTO$aN6VK%O;=IQjb1j17Pi?act&vY3LjRGkY%s>#-K zv3Y{LL(lIIqK$>2Wq@>{jZ{!_>No*FSEUwA3oHADkqRz3kA9Ak{f? zm_&j@(wO~IneA z9iCcj=9w(H+cs{g9BxiQ&%k8{sqy{JMxL8Ymvo0?o&gp6j|zgR|u5J(M|ZJ)pR~T0SR+*RT(+Xr_t#`Ast?}K{7Ws zZw$(vwH~jkKPr!!S)QdA?x+FHC|61CG=x^s%gfIRn-W@tTD-L46WTKJ4+dPrmo)siV!7> z*qBEjzUQI(10E*$`ISiXe64q-+|X+uKZX$wp4U|)5@&99zyZP&b!mZ^KuEM=MOHlO z#5kR96yl^IM|<25o)^DcG;&ZrPiGv$cFMrbv%<=t@OfSTw?nJT>~#>>&wy$5_&;M~ zr|Mz42p#kkHACL5e)CQttS^)4yRsH53!1AXiDw;)Tq?@tR2<*ZEG}OL(=E6I#C#>1 zrm52@e7?Ssl4n=`i=D~T+B6<^V)7%Ds>FW?5NrvV<7sbK`XQ565T>0fyqi+~sNewe zX~gb%8#kUoD?moR!`8H!8<%+Wu_qJ?C$Qm2ZF+2e3g_Azx0JnW-ZW~OKqv)?n$zB@ zv*YFiV_H2wpV!9t`yAysgI(WCUo+#nr2&qt&ZR!?9V}mC?^=6N6A|#g>%`hIG%&1m ztwr4B)pjbIW^;uNwqzm~hpT5S9ttVf-1qx@A&|=Dz2PzvomXt#E$HXobhh3SCFqrS zA6G)t-5WwLB=Dn$}NS;{)=!e>fexA1@>`B7h9wESz#Z|9WOn?rg=+liYa(RS>j z7#P^epKNE}L1X-V4AX?<9#MAg5rIE1l-Ws*$Z_;=>mjY^g%?S{?|ZH!FD| zduT*hym%oH0J$yNYG76?A3?O~1&%`p7(@nGBi_ft*{~;6gMs#$awAbjIbduewbg zba2OoUj$_H=i=BEw6#5I^FAuo^3LrPL8)-uMX<@E!b zB?k#@#0uk&u;I)_i{4c@rs(YmvF$bCB*8V}VI4a1me)s@k&9Mavuq3WhJr`*((1IT z64y^~kt8YHtqWvYRSwV$5e;6zFDpxit=avW8Rkcmk-mkxXG<0|W}K#HxmXZb?$%)l zncbxPp#r)s%5MPctnC+;vi*K^nbwH{gvZxB?Kf)_X8#e5{v7ciBP4`XEq@y)62hfq z?4MHky7<(xn4(2lXL;sKL7k~Y!C}#Bk-g4PO<{+QKwH5c@Oul^a~@V^Biz{uS0`%k z`jZf(^cb*X6l|RqWf! zm^M?l^Pb;Q&I`?RP2r!;vj1h_za}?zZ<@SV0AV~CELVGtX7~+2Uuyf4x@i-LRp-k= z^acqt9*^a*g*HB3y4oAYPD;nT=xdaew$j(j7JgV~F+RO&MumNWaG>}|9d`U|E8f6dGZZ_7Ctyw7=&TsW3Jv1UwoNILe7mb!v62rZ( z9Mzy$istlj{vgvGPi7cxYik6t=$&`JRNPuqB#vSP&lY6a>ARl?DG*;!0iP zls{H(LM)`}Q&G9>84pAZC1abxSXJ8cvH5EkqlF?N+%Gug(%k3u*3=}Hhe?vx$~Yhd zM+oM5gOC|4*Ztu8Gsfn(0&T1@|6$eg7S(Ahv%0r+2A>#IYB6d}B`_cuw0xMVP&gEe zq37gb{(Q(-f(E099SW*6VGDwy!4 z#^E}4w)Hfik$A@S+(#^4NlSSp1K#Xoo(d^w4Lg>p7r-aNO|A6U{L3T^$*5^JWS53b zxn1s~|C-W;*M0`3%@wyu$t{5j@<8Tkd#}@hpT$5OI zy3($u&?BD=SuOzJ$0!P_%%%k39$;(jZ|-s3J=`L=YZ6kQd!Rnjgtf_EZh0+|vbj0` z#verBP!N!<-0F*mwExA2J4ho@jLI_A39%e)2{r|q8t%|d460?0W}xn(=a`=MB>!*&)d9I9!rB#Jg|k;Lp&x*Lw3F*3qafmR0#y40-gA+m#<)^hCA0jV zB;rUL@E3sJr267`*<>h#dX^PXX%qjKNOpeyLnAdsR zG=3+>mvJJ6R8e%MsnGFc;%1!}Gav6NLqo>oSc`bj5NO3aH&x0&hU!sTXFq(PPWCzs z30DRU<%v;p+>4yw{&-wZ+toHGoNCG!v85geYZy5HVU&3$aYq6ueIXu2pAj+}HJgXO z%jzgaRTtdfy^%mGNF1Uy?!AwBU1?1Z#eF;FKmE`RY_Plj(3D*SDKExV(euTha_p(G zu%MqH6M>bD{Yw#C>%wtydn?BignA%DlGTFs(j=E@k%$9zXFJ8I4k+PvC?RZSPI9%D z22>%ugxs?;aZE)FT6joLeNc(itCt&WQ^)v5aREfb9EMn^@Bj`fnKS@a?K&@InrM^illiV#LysjUhWAmG!deIhdalf#Gf&GaNJNwO5A3!R7hGGnKR(FG=+fn}763*uYC|G;iKfK7KXzN@d zvhUkWrxR_d`J!(rQZ-qtYWJEv3P^M?n*4mPPz`o3&kFftQ=H8Tuz8zFE9$i`HSR52%LdAKJen+c|2#c(q@m`Zy{Ti8Vi45y<@*WIG1ten+>Z^4eVq zx|L&l-3+LpXHxuF8;G@mx5?6n3r?(z>O=I1LjylZOL6Jpg5a2`k5_1qt- zKTMmf{Cf}rCGyy`;z zGx^`B(Toc+319ee#KYXzLY{UI?rz$D}VUAJ9dP6U9bN{vp93r)1YZEYEY@1 zDW-aOf_&|$DiG0=={6ojhvw{Yw>0k=*4>l5da-zV6h<&t4_k42f~@*6G-&~)`qV|Z zd}L04SW0tk)#X#Fb`5t;>G(^V%FP>$yAua=Q0<7D54r4cYBapDVXJ6H`cQNw_L^W> z3eKk+S|4mfn%E~zw#>0zx~gel_Ct8GPYhrIGhcI%Q2M^P*J?N+5s`4ZInHH2vdepW z;x0#$ejiC%z=IdIK{^7ZL9pR>HDv?y^#lrq!B3|GK;)1aGKl5%xJyvl#IwyJyq)I z5auV-y)gcX2*PnE%ozHhoT?1SE~d%|=cHXTQDA<#9%YP#=4-oLN!nC0vW%MMvYZnA z|M|Up*}#C1{>wlzYLs!wp)_Y^-A&F(u$lK85~>I79}5XOWd8jTK3w63>;3-!U<5Ig zs`|PoRgiu4v4MUVX6hNhWgJz0M5M<(AY`ja1X7JXYi4Hk|+kI6KajzKts2Ecbf{Ab}8iV6san@y6yS-TLf z3ZYW@TAzorBlxbJcAM%1@FNb|;>kqec}Mgl21F+db7K#ISVL`e{Z~1DGnhD^FnNPq)GDlR#JV z^0OVxM?`W7In4T7A-crsa3xBNQHR?#eq=0o!{_RAez_8P-EF0`RUmmqX11%$jq!CB z$&B??RmzdTVR80Bf#RpBV|h)$^O7B%`nY)+A+$NgTJ7c*z{^w3YCAE;Q7@)n#3CvZJYb4BYYeaT?#v`I06lDrps1B6a!X+N|D_}Ux@QqgBwD_b7@Cy3D+#7O+sF=BKnEGH59NZ}q7 zs!(tjEMsr}g($+l5K}#pfO|-*R>j|zFtI+S0 z9s~0M84c4XH8JM?v9^7^N1JO=>a(POZ>IfX~3c_cH zF9EyOhz9pR{pUR9C^YUGZ3x)6rzB4{&?_^Q{b+NCnq_(=1)fzXITyxe#BACFE-xJn;1~C5+^9z8%u>JoOyr)AA+Z)D5>ac0m+Vp9Q@)e z4bfnhg}}I8USj?^JB>#TJs<_v%Utt(`h8?HN!LBKcyRXQK)&9j?)uT_n`+aiVB}xo zIl~l<2pJqhM|-GGY4!kZDZcuodQNK5odb3^>t)Lr)jo}989*-Wy|w%J;eHTUu7dm- z#VQ{rQ>=>PxA2%J4eBseP&kClw^@>^So2^dFA-Sj`GFxs!6gPOvD`l~_wigI#lk*DM}`7(Ff|^3&xWC)(=hLd|2+lppN%m1pGD+wTBFH zNr)=!AE&%e3vpA=W~WHv_-|O_OKhT>0Y9jU$U+FwfsOnG6_PS1q_#H{$Sd6>>Qkl< zgozi#hZcU}#I42^OZ{;taQsL^lvGSp7EXT~M?gP`^!Q9$iuO5!v}0*G(ovr`pcK7z zqJB{Fb6H2$C>)Jfth*#M@@IL#0C*RA{a}>l+3Rg>(ud$3Y9a+v{)0{8A=2lXVu~lb7bQLSaa7>edS@tU5$o$aSLtERGOPZEV z9QC%}CAYsW;(OoR<5YxNEp53s#ZKYMIdPABu0R~}D>^!8Qjxdb&?0IUL22d*$nJeR zW-NOHv3e+%!Y_#+1rG$#Km}Vr zq#~vxE>nj79@}-=hgx;dgSUv=H3Cg@g8?~jGVmWTzoX}-&=~CmII4J8?}xh(aP^+F8Qu&V!6u8AL4bib&X;+?@aj3LWLTP{ zx-+UBfkT-CZyAk6LRuu#7*{F%+fxoYK1EXQ)*2TNS%qR3SwX}6NcYA#Vf4!o+A`{- zV|DmGROI|w4ySHSchDxfT~|_xKLEGam8#?zb$+f#|t`YZMSAs~JV6z|mgzFT9mY(a9!e?zOTJo5Hf7 z)F}k5x_{;A1*?woe$M;WZcX6TJo={z{7IhBqY6~>ieln(j7gJ~5|pda`E#@&zOff8 z;bll|dz`exlYPvia*>jR<;c|-{=q?vyUfEBss;(VdYaye;3SU|Q%giF(=b=B1t?s_ zPUqgsq-#~ksxG5j|HgF82rgI}0j&rn?M1I#&u6@tJSp@u_deZyt+Qf6IwHOf(20LX zy)$(C@Hn}A8egiDI1pu48EENGA$(iVuR(v8Of-!im@fnsifI!WeE8c&6neW#83 z1jzsWR`}T{2X8GyT{N@sSxI-|0#m<~yiV+KmyiL-Wl%;mPsNY+l?wc~-4FP9HA3rH zFdZ+fzhru7BIlBbAo{>m1kS@T)M5UV`DA7xPu0W$b{fL%G?YMn4&)BFURQ!0?;ze58zP;eLCj)?%wt` zYJ~{$+~Iy9uEWsbcx&55j{CTXtS){3(cEZz&HuVCckbxRBzvx&@w=fgEBYc4qxsVF zgpK{%K^p8Mhnk~jgKliqUYJEft$Fw6ovDzCC-qML-H z8LUD9ZXQ{67<5k(l+Vt6k9K9}JyP4RVLAe;vN-Gj~nuqve_9) zA6^p!Y&t3H{z}S;>fpH;E!$a)tvCn_i$F5}F~{$i67L9hab|u1=RJZW;T$zR_`rh+ zL*YuqddccRH(w<)Y`2&Ygp1=cYzkAFo>JmpG?3mCQ@|fq^;i9p#m*H51YOodBhkcn zcJN=2!)l7aJT(X3xy=$j`?q!ckG=Q}FrSeyR>U3UZvlL^e&)*RNN#EC4J=tAJcolh z3o0u1>mh;TX=9fzK;Q$5%7#q8A_g4urL}6|@xF5O0&@Y~43CFG-bRayF8wMoGxZ;O z@UGEO!}9bj>N5H|YHw6P+m*q}1W4}z;YKIj$;|(rS9RyyHjn3_L88%KJ>e7V)xOv6D8PtKORy~|G_JKK;&*~do*c~bYZ8FW-YkHt6#g9*fK0P58HezM{1C-SW!j zR38l)?cDfD8R2rs;-5VrqX&?~fh`(39}=`AYLiB<3c-@g1t7BA`%mD>)sb(a5-{`B zR|*5Qb}e&$Z>YI3J-v{1A)ekU>PO36SU6!aRlLUS?>|xqE!Edy^a|z>*XhJ8o#{oLqp1kCpo7=|Hk4pk#weH)O28>ij7in3qvI#!Im#^N9)Y_9LT$KKKkq z5iRiwRF#`zdbt78rSu+>g0HWHsv}oCoB^A#=t3A;Xi^ z;!8BERWswc1`&OqqK^!0+)N(e=G3vv$@oXSXFo7T8Clwzmxnl?#uxFhtGjAJ|hYnp<28@DF_&dbSDbco6l8zzH&yS#mtcM)>uET{9b5nyuWK>0e zz}LpQ+OahV=7y+>uZPZy!rS*s4s^sCP0x_1*`BYA#=@ugAFn|8?iD_Z@^+&g zyP1)on%^i~x1XJ3Y2G&s!v&`0^!*ffAE=VMCZBne`hzn7pdVqTJ>frK)l%Ka6WiGJ ztM|zeGi@GUTD=qgryf86+}23KzPcg88U?H2rUHYRcW_`M4x#9f@x zxu~G2H=8XW>y38(R1^o-{HdKXcs)}O(n3lE~dVk<&R$98p!wa7G4%ecAug?oS6=W!mLd1ClQAV zAQFnpf$hnMcQ!7|7kJj_8OT1_&Ln{l`xRe20da(UsJq_qM5vV>L( zSRYeK1H`#BmDFT0LBhV%%JV$@r!!6}E}xOWCgMf&r|{!46w)~d=G=^zl%r(;!Y?FAu55w*{a<8oio#mM~vej&{KA%U9kgC*Ks^_=9{SVY(6yOscQa za0AbPfH#6P54LkTXb;Qn9*uq1f`PhBEFua#H*o>fTzdg4zVC~y4}Dm}?0Q;Jy|eQi z_{Cm~b4d*+;a=JKLNeABzE7rCN4vdzj||ElBuSP!8>BUYA@c%xds8<&pwnTO3P2k*KvfMxyBFPVB4UAcI^KkWA{+@Kt80|xnntf0lH|O>08R7 z%WF|Vc^O=WD=6FOFY)hmZ|nXn{EBb!Sg!;Wv)8Uo*JTIOMnYxwo2iwqg=z(^_y_Iw zO-|I@%_5Kv`&?m7V=|>fhq{7paF7S4@wL_S;T0s!9SM8!LX78ona|%xms5g!gQfe~ z=geTH0El0az}*etA=&;<&MyCqCf0kwU>YZVYr|Ytw&91@RU`%?lmP{0j$0(S93UMd zUWcq&l9HekLRd6K;}u03DE%J!V+~Q9NAL?|H#jo_&t!Z-ZJMC8;ZyuMomS*H16-V> z6q81-G?+vT8J?MZz)v`m8QLxbc5Krras`e;1z@3b8C9_JS~Tf?Yl*6uNWP33BCQf2y~8I}V`H&^f&s%32f)G&Vd%eXt2FwIkTx}DGhvL! zm6A8ZRLYD5XC0C0MB`>_yjsa5{C&Z`;0&XWi#(T~C<8^9i-Yci;gHM?voP4t&V~6J zOj>~ou8QOX)5i^jZ-{5tAIH6tm5%V1^t7rH96G7gs{*ne-T{2~3FHVI;6WpQ9X+l! zk)BcE0fYtMeB1s(=qy0y?bvYCLoKc-wGu-1ubTQ1>ng1!tSF!rFBgIs`e$ht>C=ooJ--yoD3piikvsb-Fr+$j-FtNq*J5dD~3SXhnD^ahd*1=mrPB5V1|d=t48nUey0W5-Jb~JS=Hw{ zK59_Yefs&QkyZ#z6uOzu*gUX#K((h8A}BA1Ji<$l^+UvQ@)!!DGiK;F5g zERp+&@EeD*1cBM4)8!#xVjezaJ|uNC?5`EliIXfJBXCit0joj5Y}&6m1!u@MgujF> z9rvvScm!)st2A}14BbgNv_~P5f@@vBY-M-dB&LzE{;}=J$D%BHSPBwWz#FOD$hDU* z^sjIprs-PRJq$sLY~@4Ue;$mi`ToJhw0A!@g;wmnu=E=h;aQb-jigK7K^&3GU(IdE*%-U^Pq0oA49+d2XSJH4^$xQ^VyBp^= z7T6(rhenXL#-;VXASb~$qax?Pb%AGI8_>A6@ak6Vn?JxpXlr*pO#85{q&cLrS>G{% z)?&BwO-zm@Yixk4;1g-hcQibL9LM-vqADA}5$w;DZL-tA|LX?&f|+N4a17lVoPJ64 z7tqMrU#}AXBDs*f9wY(-DmGWlKOF(kNXO$cmFP0L?Elf^pu7IJ`Vou?6eY#+yx8XK z)3WWbQSHlTRe531lrc*+P=7SMLPF^2o*VxyKg3#SlzuglJc zv_+r?1V$Dg79vKZRG+VW0a9J0;e%cz5<7}1E3Gm9kz1TTnGAz~JCwmCg=AeY?!D|| zI#u&|0ghDH4i~Pojrzi8>FvMVgTJ%epOYPbX0L)|zsOGBHVZy@krt=$S3ZI{C1mD+ ze1Mta4TsEfVz-QN{3hwz0lA?4V-}sJDNP+* zQX0LE>h{gh-AI)$y4M))4kA`Lir#90owE@9jH(ud#LrHg%VxZ{1H0ijkEk7wwkjD< zwVbM!DesQu~{oLhjA!TU#3 z>d&__bMZQG)0JE~cWv4Fjak;S2F^ULmd%{Z6$AR6g;&xT7;!17x+-kDHNrt~s*-9%gAgO~;f}Hr) zCm%fYM>5T^UeQ3~sTo2b?YT@_r!c~tpN#)|srKjoxkOO51rz_5T%1#nGw9&x5&#WW zAKPm;mdk#nj8nfg)M`6`4MUcQ@9 zoCURpDqwBN;KGVQ&3`4*Yt5fF5m+3*&_G1fj*mlsU< zBRzF-k`aa%`z>LHSo)S;j1GEQICrl|BMx0JikNF4v$lsYuvOm(y}Abxc3)TkWHmW> zVqGEBULITVZwzikbJFjO%FJ;7jdVg2Oj?QBz_w5l&rrgj(%IH6R;~Zf!A_T%Z$iis z>nL5m8{0%BSWUm9cyJIRMTw^!6jER<3zlFX!0XFM@0sF`caP{k&6BQfQFhy{ap6wAbs3rpe5_h4A0MjaR7aM$KT|iD zH`q;}MmIEK*qeozR`dzqDURwIC*luV?tr>E{BPm%0-}RsmqOMyqj2ig9N%ubTPc$3 zZfCl++YOPnM4|8i1)@8iFp!eStygcS?t8cOFr&!h2K4b_BpUUI_=ov}c2|mg3z(9x ze-v-?=l2j~5fD=|7D0mP%jm8gBm+v&w>l4PO8#k&JVAzSn+E+0#>LGp9U z4U3!BfUH*xvk0-Ve@0HuRVBLFo7xNqt{!tCe^{5PSP-=%qm7YtvLh$^oG2g}&Sv(# znoLvJBd#Vs4L6>lK_(R)Y|5n_pxs~DV|D)}RfTD;6xU}B>y&!Ur|T>LE!@ED4%v%M z+8oi^;Nl2zf}Eehn^O7Ul5BWe58ls9x1g+2VRjmZAuZfO;vjHNrAMG*H)WeI{5#2) zj@s_eg$zE-_w){-=|1l$$mvD@3x>oRLkois6*~xw#`phNk1+H@6RWcaRo7=|FoK+R z@dw2_%1m57gx zKLEf`HmG)9SK!R$!^L^oXOLxAAn}_CD5G3dniZ|kl`vtS?m5t1?)<^@JCY+M8NVSK z_wF1PW8CO-V2W;69$@Y~BwHo4ImY=L9FGd^RXxGTxTR@gmD%&nyVCJ`J?o{){f&H& zaf_g6-Z8E#F%B-F7uuJw+*+;7b4E zmWbIYCnfrE6HKW+E7QLgigx|8B7pz%;yP)5h*Gl}!;P(NYC5AnzAO=m@ZyT)d7F7~ z3vAi7gy{r>fEZH)7+j%i8~@Re_~fnyXE6qo zluE&o+DJ@I`sab(Erc7>YQZI5$6c9Cx&sR{SgIYk4s5;h__FImNoLORm}EEQ{AcYJ zhm3?l#)?4l7G0INiSLnZEeHi;r~E^1HIJ5KzY)R4f3HfWkn(u<|rWg;OjW8 zLD!m%@hkZr?!Fc~SVZE>p{XJ`CQMyg!=-G!_J=jR`~kP%E7S+{Geks>RYyR2MnXS4ntx5Y0C`jWzdOlIXMNDbF@{MhoZzbuSg&h zE>5RxC^3ie@j<`WS3v|b+#E-<)9%E-se{i2(c{!Q$R>oYNFWHvVIW|3ETar-x{TOM zZcoT$i@P68bA=l$DBO>{_qkvJzBCT4b68_5?*7)pQA~>}4=!rm(8m&o1u{B4ir zXi6bO4EFBpgg)M}9VK_gkuL$a#ft?{bEBVwZO3sJ8R8xhipD;T!Io{KO%;d2@5^~N z^c=;vb=(tsM~Lvq2qEtZPzXJJuYKF@L+J}Dj*m1!TttlBAWnH*WN+cWzIHYjjyN)a z|HKe9Kt60D4M=IIV{;x2Ws~=4oEbVi;T&pLLi@i@T#tk?RiwMaEL95sGitV88z4F9&`Nxe(mI#c}qGzvsk|$7-3_e>k8@4!h@1L)Ys-= zU-xjN0nP%vTGi_#dLK+uY!uJbPb=_0%t3gYf8!|T(8%%w!I$%qr^7FJ=OXpv*S5kp z33TO`e?gYf_IzBQBn_(=j0_(L0ESd%d2{TmWeAN+;E+i%+2<#Thr*OE>dUJdP?;!- z2T}PN^@sPQ{aVfkj=l$!u1Y*95xlGjj>eEp4#z8$%w0)qW@8bXe`7Fg6r*al&>O(w zZ4l3QI*jtSDA+hVCcr$HHgrl>8G-40>s*wLCP~a7O^B$TR_*gym<|UkV!y8Fu1@<9 z|EE9^5`F~bzK2vXmKTK*Ysqo!m(DJ=NT9?cM(nfrA^W?;jcfzp*Td!3Npntu_1i(w zvu!PJ4a?{q zX7G&Ifl?C;^8<~tndfQIpc*|_LkJ+~)&6sDoE4^!%x`n$i=LNxuOi>2!jxU60{h+O zRSrJD*|R>QvfzTrKXph}I;z~NsMA8BZpBZoK14SC8Z4Nr_s zE@q?;V(3m52&B?{`oS*W`Z?Gg?cMl%&nAqnyRScO;A0$_f&o7?4ru~c$4ymhy(kb8 z#JmocG`fibVJ-CR<7Y{n>^DtQLHNlM{m`x-Y_tadk%sAlo;)0v+k0#I7w6ju`39N) zr;Ix;H-0^}HAf$xoQPonorn?*=Ix1$vJaD_^%IwuX~eve21$E%3exN`vF_?i2(nmI-N9Q83s{3m@HIIZm=p#(3JDc=A&Vwz zK?BTc)RvAudOJ%#ZnTD!Ixnf~jijUr!MFog``>vD2}>+a{TlN7918|w#cwyxLVEn` zW1->N;SJJaa-hu*@?g&6Id2pap(Oku%`o|>CX4^xMo2-oIJ2n$IyXbcep9@D4SLs< zz7|oQouokN%)m&HX?L%4lLP6aDww%%G9ax5@NDxrC}j@nYd2?(V9~a9;)%` zHBq`Ha*sr0fSEQIN-xShb=ENi<;HQ@GI(CgI$+xhHZY(O&MaAoQnkp==(h}UEd-Sb zcX%0_SFnG*7vl0OG}9V*h_wpaqbSDgTH2p|%iNSLu!Vt%+}FitgMV<3*G}17n{xpO z(69BqG}N*4J6|zv7kqLV>L!>QgSN<%(3y+<5Xj*AL$@nS!2Hn`WE-0SpC-FFw=#lM zfe}f@eo*+OMsaM?_a6U%QiIswXzKE^q=PvvD6x-|9-J#vPAGPdH6$&fWId8YjeXlI z(?`b7abBt%=QRG4u0Sln`<)o6K_4xGpqCAzk9oVMp$4&NvSnRtj7cNNGtHK<7T{?t zb$cz#eL;;CQ8)ICGK-CFRfa=#mBN&7eAU@}tO;yX}kQeNLq~^b(?b z=vhI^cn?*<91Y&^!(Y3ar2Ko2E8bmNpr&ElCK$SltWD<(iZQoY zGn3@;`57UdK-cDeNVuqxXST{-)ty~kq5~aeHCeCwY`3aows_z4H;-46foeOw1Pds# zj$FrFM#-&*#tn#wL^vOkoUKYFui&FPniEVx4XLkWd#2{m;3^uF*|m1KAq(#5@vyDs znq}r@rp8{jXs>%9Z~$X_-d@YSJFtfsvpcD>FAhRk{q2ZCDf@`=V;2w!j@KgaN?k0e z9Xm_(1BM+QR$RheiQ?yBukwt1{*$~SQUsog=}T0tBEX`YoTxa`djXX7 zB))*6y>&4+Fm|Pe!en%slMeZ!G_JR|k*yKA(ezdw47eo#>1Wi#mZe49)0rjSe-<{HL#2e<_!O3QA1v22 z(@^8Uwz!4xo`YM(k$|x~s&mIs#O?4`7y(=_eshM+*^~L#Fm?Mslaod$a-jFU&A0!B}?C}cNF~3EG6$CCfKn>mTwCV zZT_LQ3Dr;u3x=2pAk<11mU@-;+Q9Do?5$HK0Rp2A5mn~;1ch>eu2M&04dV4yR`1U++cbD9^|E zSFv_-Zg0y0#Mps;`;Rq4iZLbW1?7Cs?m12HHOU?%D*dT=>g`~fU6L@Kk7VfwI>|9n zd2Usc$1BDskmo|H6nB63YN|BWVcN59irITVy9s51);A~@kx2dK-Vx|KMs-hM2>D-8 z`h_52uQ*Yn7F7E=5A+sIjg^uE35EzEwYp^b-)=i}=%#boTrX7fbVTI-(s)oMku8CQ zjCbwLx)W?btV6h@YeEIB5pL(PeOo{qosq8`@fW@j353{@l4!{3z9FiQoOvgtACDC3 zCM4OL<1=>Cx`xL5V!!3&Dkwo@G->)auGTG!M%(mpy>fWSVG8=tDdfefRy7dEN4?j45wOMP-aWtTL z40`olmxnxBPIDdyIvqOS>vSOw%xTkJZoVQ^!jATjSVh@@BVFcbH&h5ULZ zhuqr=zusAujVgPmwFdJ6BWJzIlIFLJ#ulNAs~3=EQ|EGPYM8u?4SI5C0ttn`>@DO% zvJ5&|{9Y)N!BU#QY4RUlZYVka+Y@mbA89RM+$~4pEkc-=lmxf z^vRW20bGLerv0bCvQv{I>^+~aEcmx)X&GADzA0`1yv`>zual}63A%hO{VcTR0>FC+KlFJN*x+1oG zIa)@EIOd-ZiY_(q^e422>D(C9BeY<|36A7Ba#_r|uG5v7@;xH7Uco8?Kv=)pVOZOF zJasGXb-vy>e|40SR;6Cdy3Bf8I~i@d7l9dr-@h;5&1|vNATwl?@5HK90Ru&{{qu?RB@peX-9H8dYajsvqe&YNqH03-2ySUuFevwS}5t{ z$2no^9~?zL$to#S*S{&_2aS5Q9AH6$!s!pqKKq5P;Q${@sb)+Pv!tnI$i6-c!A;JH zd`g`mABhuh`p$`#R*gWX937cv2uwWJ!OO&zb?S8Plr3%^R9qE;p9GKu9HRUK?}cMfu9W2_2tw)@Z6TJ0#lTqppB zW36XOx6~53A5~ZX0`jfp7Zx%YG1|U?L{Js5%L7v`$5tIErLktIvB)_mlu3 zli-sWLc_QlZHbp9-V=Xog(<1s@ z7Se3efDGJLq-%T!OJk4REp(3u%AN3_3?-vBaoFgyGPhebLw}Vq6 zW2!80&}ioFk>IE4j<|1avU{IEkwk>BjV-f=PEQ>y8;(Ap5)tT< zrA~ooQK@wmr609O1q%Roo#aQS3WbmYjuKZxF1#$z#T8LRda2@rH&(tg7XwnZS9A0e z-XDuZ8eI!EtoEl-)k+*<9MqXN82Uo>gnRDVkV9livGolrV#K^jKWu=$f|tSiXf>6) zKB15KKPu?%UGq|uf;jsu;k>Ou+VWB17y6IFKvsaVw_32)MOs@Y;Gc>v#xC2bS0Gld z+qX3WZ!b2W*p%s=I{`5MA(@}g1WBPrQkG%^-ApBV4QKP$|JkekLiRI2a{^4ma!lCqfZ@n|b?i7Nl zk0Jw4!_jtx7*dd}sbf?!8a*XZAt{1dV|hT1O04tmL%`qA!LpaYzml@n33aO6Z?i+t zf6_Uh(1E41ym+0XU1T^?%6bkV7vcSQ_!3zX3QoP=87f<{##|8x0*FG!$L%eI(0}@* zVw*((MUXuK8Vax?+8Y6P$V}E931LedZl?KLI`ZLSDm}bZ_TNG8j<)jz)|7bnlz>bD zM^d%jqKE>99JUQk!2RFhZTYQ?@{I&sEDV5-v;z-qCT&2EFJ55mc@Oh>SJp&0i4VpZ`i;yH{I#Lg_IA?*G37Q zc1Q${Vrdaa|NTV^Sp`IGj1-waLQ!6VXo~bx$3afns++EbZ>vW*0mpVxArpK3+lCAhB$#7A`+iWFV*E$KWu@(C}*2YU;=Wa+LE7 z&?oGt2zYDOM=>WEoI9wIuv0lw#>@UA;|E}%z+HG;ZJ>ua?!zuZPW~S}sywguPHAD8 zh7Nz1vqSlf8d$%ZEyKV$2`X3}L6Y;DwvIW8HNq!JAOa}Hsopl82#K+qJbnuui14F% zS;v1<&q#uN!L|D#oTT;pu+HrQECZH*QpFF<26=dLU+wfxR5J&F@~ef^fF3}rx0j?t z`1&3S=;kMXP@QN8F8Jw2EA%U-gTKUqyg|?huTo{Gd)}=rQoS`HqNtoHOUz(0Pu(tm z#&QXnmHlQ>ikt86cF*|Bgj6j;yat!pi2$+vZX%k_$<9RvPNgWP)1<`0Rt&m08l#Yi2hOv~#%8cXYX}d$t z*X=M61bXka>lI9epAFPAVUPal^48m;><5G?L|psFrg`-1A+VoMDH6pZg@Z!(7s&8T z%@TtfmdJT z>)`G6ThF7#8i2@y9!48^4-xj*cO_ltp`Zf>5`UJ$AO~LXRSO&5Quo3eNUlS*g$PLg zyVWWaMvZ~l<7s_o-{Bn<1BHM}7Z?&DZ?;^I+jHF^h-nq4Ek%4jvnI3bIwdgzQ*TRk zwA@33h$Ows@4SbWMY)ceDpm_rrq?CJC-+|ZmjSpFFi-^Fu5oTlDrkGzqg*}YC5n32 zG%ey#!uiqs3}{jYQ|eb2avs>xTo{*^GC3%p9g?JT)8KSyp^kdjJ#U|u%skJ|%;1|T z%=(<-7x^!?xfFZF8KW`Xh@2DYj_}u2aGA<2BBK=Hg1)ICchAWA4w2kDuhvd*9zsjX zwasy;h6orWfI3q`D#28E=6O$!!<|k4P}n}MwYsYDjGKu9*wBV{`qB5WFt1G%{yT&` z^6}$Xk8w}XSIad>`={A#o_LQEc~JBpIP|_2JY?HR#x<4DL0|48O<*sQ=|vCRMvyb( zSnCP#Qog9LlXn(PxghJWuk+~TymnWtunT;Oj|CwQmkbjLnFNB6&K!2@%Cakm-nS1U zOpt=H8yWG`Z5C5K4km9@5#k(1FsLef3khXI-ls01)Fo`woE;pvMZ~K3A~{RmOmw2l z-e~~5iOYagqP+PwJY8hB3HsD3G10DflXN&6)hG%(x&oUEmxW$B`f^>HUubfO)EenB zR@43VJUnR3YiFJ5We4p1Tw@wvq*SH8M+`FP%5C?TY*cQnOF*BGL1_?OKPUDeF8Tnl85N9ilvj11AKWC z_C5-kFDpBvYnwd31978T8}*9-9((VaDGQT!uyNWh;4y*6cFh1b2bpEQ5rK2IMxB-d z*^h#*@_7={blx9Pi$yq#@c6sb@hm~;f3tTDfTOs&JJ)5|v{HV)2Inl2M`XbpHnwsN zkkbxJ3h}>+r=xFDR4OKSJQ>~eLo*Rov`FOB$?OCo19rh)W zfhfvnw<2Ob%JMmDP7unM4jSdA8DA7%nwN?FW1Ot(w5KTH#3W`ejwq_Oc0~jGNge_p zcUsUdAJ8$7;`c=2P))QQY?qeHzf+RK&*jpj2_6Q}7Les;(cEGHcdv(Na!#ZAm_#jh$$fx-yj_bW$&#yp;Fuvwi`aT#qk0KOYO)8&$=V1)343ok(0;{qH6 zS;`PM!O+m6_NrGxjPnUdypcB(`X5z9=D0+Ei#F^lGf{0b;ZS05<6funJG$dwWR$;5 z@UA9tKtC^oIEYLCi5mxD?9rJ~xda@gkulFP8kfShVKhO`hI0zJPHbt}8$@qOmi52c zVOV!@7TuQG?~VeCK}XT+RUJ^~D-M?l)YQZ#@ElC=)$6R+IFB|qMph{)_GCtRR2xC_6Oqta=XTal@kd|@?XT;!tA|Ct% zX(1+J2`3!gPI34Esf_^w#(nXgNzmdRB4R+;>L&S?_tVdU(?`@75;h6*z z1j0Y*=pqy8jT`2y7`G`S4uhBrAVX^SkI@*B8Y~wJ7DN8m{8G3`{0#er40Xo0$~0YV z{9TB~BbTEgIUzo&W!pcM`QzmO9g2)xSi4h}K4R}Pn)b}0W-lht1d zGpJh2H`iZxuwrV}$Cgo!YI;N_v)?yVsJr5w0B*Z2NuB3|mVc235&xf;9_QoCccTQ+ z9T=nQ#(#l~%HyrTiGE*Mt9W(W!zn^94afv>8k})bQJ1hk-CR3+TgBJ}3`%|2n3rOa zOIp@$122!plNd3$V&n^DbMO|SijG8rTW(WfvDx@@n#|dmvqj2-mG%gzxH$LBQyajo{8hZ6LJzC`0kWHF1 ztP}KT$hS3=9djREY$+qv!jMjkvg8ULnKRlKkbe}MUSR|zLLUK$S2pm?;FwxQ2EGCK zzqMSsaM1mTYyVs!;8Gv$Fom|k@NowU`Itp_@@dm}WAKuL`6W34AoN9qftE2M(RlT0cn@lxtdWK&0yTr#(H4Au3Dtn`*I7P{_=Wn)`WmHpsx3UlrJP5UJga_>#)u>GU3^_t=8o{!22zS(v z1yQhnWIdjJ^3b>aY5@wl@h7Q;iGSy>F8l1~RqKGaeH0~!(r|PWYgN=pF%CCK{CxNJ zSEZw1xzL9FZ2*n6dqWIZhbat2d@i}j(o%hW{QnG#jv@6&d$d5)c2jb z`PR_}#*HDHqG!L^1G(2J0^ZXl6qNy#xS6DKT+W+S1uls2MWC2iE2iXecqbrXf1981 z2?Ubma)%Q)CGDu_q-nXU#Wcu*DR38(bRt8-;U?*`hjTm&Sf7V1i{KM7ChaT@YT^{jOc2b3tSH z7~){V$G|(1!&(6-Ka@j^qFp-@2;M0YSIAPpaXa}_ype;w(ddO!)B5u-TWUdlyx7n2 zjWA2__AAA6HgDtjui126qO|S2WDh2(_V+15jZ=8PdCOHuyz7ItB0!ypAvR+?*wXa@ zXlkKBnDg@ZGE(YV4J7@8-9|cj`$<5l%nS)R_3n=v$23*daJ|x~ST7w$Lc`>iL>TJV zz)u!JFz&fk?^*#b<{zxdad7LAU{ZNJ$j@|Q*UoP3-CtLL!*V{G{mxhJ+hSw5-@Ero z2j$8a@6Hk>ITaz2I=_0ZWdZNq5~dT2Cy8C_C0p@NctC{K#K@vZg4#81rj3EZ5zk^f z?_A*_W5_?2yPkv{^Dg-_Y+41L;sGszV>`k)_?+O0$J*ohLIEo>jDQNUvzGdyU_$T>%)3(3#2KI+ zw_cAD&G+0nt^*=d^-N5I`~XM5UPlvd{67hdyD@Cryxb!77peb3`q|LvcB+0QaS;c5 zzK>e4|Mivr@Pr6_80I^%MbN*K$xUy=$@I+nR5e|N1@DiRN{es9r+-zGc4mfpquiYo za?nu6OTApeuK_|Z@RKinwJVfQPASIO!Tw2xI_Kuh#O+jY;YwnZuezVehdyssl)YKv z=Ej~J9TO!MIAiD~4@*T1l19zxRD?ZjIudWI4VFokX!W6{1xstW%d1Z#apQLN-VP`%fviOlHu1+ruY=6fKs3q#ivI7jW(eKDS5n&Ki2{gDVDHjXEQH;v(mos^dpsvVKqgw7qa5;0|Qd9KA ztb0yOCZ>+&x(E?P+I=&GszS%qqfhxVKQxN|)e9Bh4YSvDXnwxNz_TV1WE-(%i0PZWwnsM_U#= z%JqB;tfH z-3tpqW8?rA7r&0v4S7Fh>$LpG>bo~GY9~zlHV1Af&8EGFdX-jD6DCdkKGRT3T!@CuGzzh0 zwbM-Ln=Z%OR91lp)rV5{{~Y%7);FZef&}N*Df<=fI2gFGw~j4#lrgo3BTreIc1OsKXL^ig5HRlqoTfORhXswtwC-t1pyRGE*RZ#-fDw*b1Etz#WOX zJ+&d>Co-!3MvfzcV`(TilnV9hsuivy4E35gI;u)0M3-aWoYBumTe3Uz^&e8LYz;xL ztnOwQ3FpB6!p(_HgRR4JftAxP$y};KWVS$bf==5-EFV1h-Wgn!Hk7-Fla8xdb=>}o zPI=I3|K8M%)O#?}$tT*v^CS@sjqs#@83)MwW&%0?g?;F<5g^32d)*l1tLuDTLHn|W zyT8b$rD_9No5@o;Zq?>BA9JLtlialse^$rr8tcF_&CZ>Y57adW<{t0wgh4-G&qIZ^ zpCw|=8)FkPoRy2a03u&rDffsQ)a$DO1hWSfX$k1tC)E3nM<_*d+cl2g2@k_ooT)j- z-Yc#A-zqbVKd;Q`2R&x-8uMT+fY%^T*Ph`UK2V!XQI?3An@a``|_a zX(?-w++bi049^^)0Z@~!@0L)MB@w)lSL_tQT_$`K68H(}ET;GXaS?f-X2jq_=OrUa zEI2%Z`R+D7z!%f4d&hGABk>cxs%rt5F6dLUqWHF4X>*sXpjg%T>i4GP2zg~h1lu0( zkzGP*PK=dSrb6)$Ic>>n+LOV1%pqTJHlE?DgUD$(8?p?rWffs)ctY0~lrhNOnTHMC zdrXevt4d1KMH=Ki>S7Tvldc<}?QA62ygYmNvdF4 zG6-Wxay?18CFkFla-2<@1Qz1+rI#veiadEj?)a)Zb;dgR-BGk^uOvQ(YJlJlyeQZg zABurxW~oJnIQIkU4AR(c76D&^VmSGJ!NWN*^j`oUrtA@PZIM>sn^XQ&*!3$5L!M~Y znQcn&JL&6;S629cK&3q(0{t-+ayeP_fRNASu|%fQsoAS_>{I0)#^tYAaWxFTET1F*zAr1}j zrj|=aaw=n>L#(@_JNuQFf`w6}(J5RX{6`dv1}B^T;CkrvBoHM8nF64H4E_C5s2qQc zb%q)vht3{VZs*nWufH9NU#r~Vad4~aoj7NB%(R_dkoruU6O`syLw zD=}VYi~Hca4B6F$J+_LH90e!n&&3-Qrs08Z;j_X z#v|wRbe@PnzhG05Y1rj#fr&f?;I#wF)}=foKE1Z4q9Z>065lQ&j1bd-B)OD6BK=bk zjw)ePL%>-I{b>(Q-@eSTPFsOsTur|ae&u&pAobLL$_{U}OaFJg7*)gJqf}FRQ_C6b zvOC>6vty#*N>>M{$m<#FtDyIGb1jQN838tvFpcKZ`2jm^(C{Cl)5<*2LT&+$R$Igd zsv6A$rCqr~1{CH;jU``DzIpsL=eI2yHCBA&GM(Oi*yX5}_w|5w4nD$Hc@6s`EMF%O z$llH=>F$h<2$yI!-iY|tt|1K|V5k8+P@;4nsBu%lC~?i{&oX^o8XEBLk9$sfW{+_S zZXhM@E+&TgWjyGsRo;{psuvGyL~QLs>D|*kw^Chg+8PRy663>$*6S}e8H62Dj(JqJer^TfkJ`IB@!B`a9II(XF2e zM?!lQFOiFfp+i2F8DaKL20lvp8AFNgngLG@iro`C&Ny|Vrdn_#xw5{9qaFGAi(wUEHsQ{aEf|%L{mr@cw3YL0jylOrT_-D+0hSg}ty! zZv;Zvqb@Pj^}mq8o&Vx{G^EBYyWPMK!xwAm*8FLn7%Uh2%yP#cx3w$fS3!H3H1YZk zff|3fp%bf#yg9dTM!+U#&iYoMQxJrSAi9Sg(j$nnIPpP)KW~4qp-cPo#e`s2`=d_P z4wS4ZlZP105XkN6NcZ?iY>mZTry*=t&QoD+zau(V`}7ww%Rgd9q3wcIt-}N*{2^M( zk~37;YX>l<92cd@5;S3c{UHXu|JTXexv^hZ_M}WvQVfhsZwTJ9j)_U^wc2b0F0oFtU5CvNs4T>~8tkzhM#dT~O^R)v2lavlDIEOdrOsF7Yui=uO=qqF?pOwH zBA*0DI|0}&z3`d223D{NfDG)5pkjnm?Z^=RhG!;RPi>M5WKaPg&6+oZ6)?hicr7V< zXEiKb+v?bIFmQ26t#IhpPU*dD*58tMeC>+H7NH`Z8d9v4xf)$0A6EeOx-2kap9p`W z1l%n-x;{&1yi``eVdlrt@0!?CQu%eLh~187ZC+3Z(*-IkDzieHM>1qR`hYW{dUPo)(w^O@uLE{zpn+r$gZWLZ?R{5~ zQXui%fok!!cX&I=)wgs%+;S90+jYVXlO8vGmTy6_WEY6EVLmoyR8LmuRdb#EIc!e# z(c&$C<}ux{DuJyGUQ-j=vglZ3GGr-KR(w-QZHbJv%&VXyewdb80&-?1^md}|q%pkK z)BN-)Ej?vLxyz4X%;+F(x}}z+lpM$6uzh)dx)Oo-zCfde-NbfWn_dV0j<{E8rYSW8 z8~_!|tDG+|EJ$t;2EU07Z;ZHDc*lsq#Wb+Y)FsplL?@RoP09r+?Y`93h^C)j;Cm_7!p`YI0=(!Og#Qr~GB?2^drbDJ8$o9k$yk%wg(08SQHQyaR1PlKM8Qi@huv z3xR}lY#E;XF_#KD@{@<)FTFkhO{U>g0v+NBM zFeR;5))cT2j2Ratk}3mf2|n$@_)Z`?)-GB!YKm2c=V4)k=CP+mSZ3*M3#Y?{e&ya# zZcNvjI-lN*P!O9(CoCL+bd!byz7<9-&5Ib}x}vu^X)6*)ELOESEH#b8vGA%5p-h zcZdR*FISLxG~*LSeH}sK2b=qVzQY@j-j3bOhDWf6dU-X{R#0q`<`gR)zbsKPYmamd znfS8aVoYOpc*kDIB+&OomlqseoP?bhoCcPGarUS+1V;N_x9u}W1YvHV`{=PdzPC zPr2d$VMOWxv=P-`7hry@o4x%1ko9%#OY5Rs!&bP#cawqm$aZmNg&ylVt$7#B>8}I* z1Z+3ayys{h1!{_&?982XJ#9^42F-LT0C%MfQ*WkGAg>U7h7EJ9d*=0(I3vUu;1Xld~Z zy_yAfS5@cLrr1UK7_k|t38P|_jb`@AEx-DQ&3zS0w`lJ89Wuu7L+;vSdi_oI6y1!+ z6n->C3LL0JRFCn*>AbG_>A>iGuBKiTBqx(F;g1764;c~Keb~X{(GfD?_Bo_ySE9m> zK$rC41t;4$>GSpM4ayRc*Mvp2csILwZ6A0GJ~_;9@`o8n>S|H<-L{m?iej+dQdg2 zIp0a#$xG-OS2E=-*jHmv+W-uk$o(h^Yi1R2Wk`J~1dDUTE11p3@CLENoDZt0RX;M> z5hJ;C*jcx%WaA{_&$?k=OB0A`uG5S4_1Gh38D-gen>P*YJp(Pxs+>JzkD3U1=^8nv zr_m>n-$sqn>JC((40iwl8wAw)1u)xVw!op+B*kuz!1_1?Jni6E7YU#3vwj|6m=D7L zVP)qg_9FaW$f7n2j2-Ihe0Mp4+7#-!i(23nCl`OQ1K-uJmazmk?2GGY;jyXw?77+FFLVoRnWS`WH!8TV+InHDjM(+x(x zO5X1Mk9tyANVw(!_cD>feL@hWWE6;81Fj-*p>4$Q%&E2z>&fd7h;E~N8aLtNP%?ymz1)PW5>anh!L zr{fTm|CXFIELr?9SyZD0bx^IoNHKNa8mOQ{n7-y{txTs9Dywj?mv%0zf(03&;;x;Y zn22L!;?YoM<{UybD&=j8Hk5{kKD?4DaRxxH>#fjZTbfA89(FCRG=*lF?){l2%4G02 zS(n&WjuqXI<11rzd~LAj?>%J78b{1uW35VAAT1PJr$C0TW7}D5>vA$R+}w+?obaKb z?lwWQqlb*Tnb9U+O=Q3w4>9%5b1Qc5BH<8dD}|HD{NJiz34tV>Q=r&Gh#D^|1K$8b zCb}0%awq@CYbPIl&Wxsyl+mVP@I;OK_&u3NovrQRrj>UrFY`wz7+i#kG<@o_?p1g- z`0S+g3aYUYcBd#p!k;wT+u@WCvkB-=^(}2pqkl+=zazIQN!c1R+|_FqfTJ`_0fI$f zcwAE%?OV_(_vF?Rt=5Pb@UEG_662KsUWXEdxy{Evg__|3In�yv(vN$ceBWDN1l- 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 z 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508022001-Config.rsc b/MikroMaster/20260508/20260508022001-Config.rsc new file mode 100644 index 0000000..1ff023d --- /dev/null +++ b/MikroMaster/20260508/20260508022001-Config.rsc @@ -0,0 +1,4643 @@ +# 2026-05-08 02:20:02 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=vados 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 \"dns.google\"\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/128 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + public-key="64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=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 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG \ + routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508022001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508022001-Diff-Config.rsc new file mode 100644 index 0000000..d809f8c --- /dev/null +++ b/MikroMaster/history/20260508/20260508022001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4293d4292 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4294a4294 +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4402,4404c4402,4404 +< 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 +--- +> add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ +> 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ +> src-address=10.30.30.0/24 -- 2.52.0