From 830b4554d43ab543beee95869a448d602bfed3c1 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 03:20:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 03:20:41. --- .../20260510/20260510032002-Binary.backup | Bin 0 -> 302173 bytes .../20260510/20260510032002-Config.rsc | 4647 +++++++++++++++++ .../20260510/20260510032002-Diff-Config.rsc | 22 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260510/20260510032002-Binary.backup create mode 100644 MikroMaster/20260510/20260510032002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510032002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510032002-Binary.backup b/MikroMaster/20260510/20260510032002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..52931b5a301b4b4bff83a37ae69ac4cdda840964 GIT binary patch literal 302173 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 *_EJ+IQjty)$1j$Z7n?msMCWrGnzi7=fFf z2v761t+T4p>mMLLwHr0A*Y_k0P5g;fIRd^Os5+c0q6b1-R_TSOQvec!jr)BrWWm6^ zCO+;&I^HhWQ~p=W8;p2;w=uCt&bA9XhvKtWqpWlt?-e0h0Zb!^)?Q|Mq#5bx3@?$@ zq2DM5DTH?&;Xz01I;h}XY~ldEw=;KW5+itg#*QS$11^fA_A(j>LYwumncb-Ts0jqZ zikMbO{IQ;004a}7|88LNG`ZC{p>}jS2kb;w@YiIK!s5NgN?1Tf0b)C^WK5g2lN*lE zk^N&ZPTvvRMkNRe`%bWl^eM-~T7jRP{T;eq5@;S_4jGHp&%RpP(FWmxAtJ7^dI0}F z0KiaEwHojaB%%a?SL zsf?tHf-LFgPpY9vVQgUkor^JFWU9HS#9};)*B2n0!l? z0=iCOg{}^;?$l}3yVF@(9erop4m?~dR8P0p(H#!;EfO%*es;)sj@s`2b!|)Qp`i$| z+?ZU%Y{bLc-QNjI=6`#%Q+*|H1=>??H!U1*?a;CqH3nVY_<%;>$N!eoWjT2Iei<`` zc2x!Fxn-O2L*u+>I6NgaZ(fEe1C!>gZX~V^7zx=S%_E5MGLL;eppYKwo*&onwqJh3 z;&8o&rXu6n=6N9zZf`wql2rU&LRG{zhly)f`olbifm*PIN1Sln)cSZiWUC{62%`iv zvE&HgzFW69$MfmoU!sC<3-~_gz1E;;&b?su6Erxnx|~V51#%Vb&;6$UWsJ3L#r%q> z1FP|jD7wmCixTO{9_K>r2ES_=iBVD9i-4KKGK8h04;fcGZlKeU$2k{Mv1*PsOI>q*UcZTJ19zPrS)wVBoZ{;ho0N1Q-%}df`i>hkPwd-v2v6Qpb zC8X84q8hHoII7^T-~jf;M0Pbw)pW;`M}(fpqEebOqku^zg^=`hA?g8it65?V+-d+5 zCPYjr-?NZn5;gjv>h6^uXN!oeG5D$`dby#4QN|VK6Iy@|$uCc26{EcS!EJlMF3Ta+ z7*i6nSI-$v{z=3!^Xs!1RFp$2diaTW^Zsqs+Ani-bn!s=vM?z|i#)l|=_I8ftkn8z zJ-Y}-O2MLyl+h&ZorYEnKwLTdsKwQaQKB!X7oVS>3xOooQ6lK6qNf494VYw;N*kN*?hq>?%nZ!e@rG00*-5Afd&J6UhySqN7Mc8d)%DA`A`Y zPb4+N&5pPW8pK|%9F7m-H+SVcL5ls*MX%AjTmy9xs4oOQE}IZ}+#ZbdYYp_-n7DMG|6`D4f*wlp*JRL37F zo*zu&4NG9#P8RY)&iO2}M-RLbICx9J*&<76|G8d~`Ff_-ONGt_cct$LTzQ|x++`y? zrV1xEFrJ@%Q8)7p?c+@WN}P)Ue$mf*Pw*3D9!%p}`Qc3BDD}k_l%%51{NFKzts+aV zsC1$6o<-{%tjS+@h@?%8Ka6zzu2i#2(pY2eQmrQyzWby3GsWb6V(jB=vU2oiv6d84 zb7I4Q5S0CXTv(lx`B6DZPma4XvH4_|SevD?0BKtIG-~+_`*xb|6s4c!`^}J_Em+ns z5UyfE_aQtX)$AN$y+t`Q3E^X}P$A;?hM@R7$-WPX)XPgk5QW&ej&XPy*G`oRB<)UA zUb37S&}S`0&J`i=qKz7Wq<8Nq2+tPDL6i{A@%_4Y6`>gnk)W(MfmU;fxbCXmM8~^s z1~+!#YrrRuNgb`o_Q*8N0pbx-m5IXA>4UkWD{cu?0QTUzs}0^3O-roK^AJs1{ysP^ zwki>eWB1XonsVwc@UV>!p=Wa)Xe3;Qc3 zBx*Qw2`G2a-JL?w<^#Mf@yGW*JWtw9s>IG}$SxQ?EHKE+2wUN&M$tckRxyi2~MDKeE%eGKk-kLR!riHT_Wknmsfa zViHMIhWH__G+hetCnIn#2Ol6V{F&=E(yuevORPonD-b~`IcjS|1I?@L2+VQ5TC2Fr(XrQ1YBc?t6DLaeye&aHfZuW zxbdV*H>V=01r}dP+nRSxSeO()oDGEti|nQCiM7mexySI%)z-y#?n8Viwy31$uF>S0 zB|jOE-U@!fHLnP$Ip3U;#?3)KPVpC`rMRcVUCV-0Qd z+O?{v7mi0*U$x7->)OV>2it-#%%ka%tmkaE)2Us1T+781O>F-i$h!k5%@W~Nv)Bf2 zlf{x_C9+S+Ln|&95}>MJ7_;+WwQ^vF=bD2iaaz+bRjfE z!QP>7>(St*mSJY}mvH&sN?GU3{kG`zq+fc2fN6ikaX7?~2O0{-lc&3i3Nn4Nh8Nn_fCQ7x~qPMOd~Sj>n2C!QZ`UACO0y-V<&^K zsSqD!;^lfgQ%Vy=lQ5rDB}nF|9!T-0K-Ett85bu{`Y2Z5roh%!<~@B-9U#%VgP$lM zg|uS^Z10fnS~R1Z&wW#P39`vO)*u&W%YTZl8@VZT^2)X&e9I+yf!EQlZbI5AOcl=eUq3$uCn<{!uxo~ zr~^SU2&xnn00j2{^hYU6Ir)#aIRO|%!~*<3qwgLC(n=yW&ZWGKf4d$z2CAHW!#_WDs|Lauu&8PKuLdQdn36k~j=G8Ry??$>?;KR9Ymdx-H8zv zG#ggXA8jFXE$XZj!@TM6?Q3n1uk=Mje8kqQ4!;t<|0DrliM`ZFl=tn^ps>hScY`nE z>^AVn=&xOEk?g*(4&ZI8^h+lb$&`s=8JwE_;^OFayXGWn;Y`E3qAHDOD#O_wkf7W!3+lxk#Td&ccp0~y9d9F zK-SB`9*jcbhGO>rk#ygFe-Syeafps!Bw!&_oOw3Wzw2G>9_-Zf5JEIE?!?9TVSb#o zlcI`I$`5Fg7 zK`<~-Qz;;Dqz@kf+?Rr;>Hn_JL?O?Dk8%tgUT+vktjfpi>_J-`9zuLq@UJ!6B+d+W zhVejeK-!#U54UU|PEQEFi$VyV*LOM+J%BL1PuFdyGNZxBxbZI(wQDeZJeU!j_;q#0<*o;; zk*uXOELgdAxLHy5=&FxPAv_8e--wIjw2^{wOkZk*5{`ZjK~umbWPJwOgq|76u zdkG2*&dXHOs+|jAh3GK&X_ZnwhDXS^2j|u7#6{LwDckh`@T!K(3I%C{TM17it<}oU zu&BceX>rfArvAED&uKyfz+Gx7{a%2xZJ5QI&&Q_ENX2LWo@|&ix2?Xljs<%9Xo5}V zbA99ZST3rU6+ybriB!)KrC1Y9dONnm-GjPRn+ZdaRs{MxT?AdtTbVKeQ+eiWRJ`$g zDgve$%pK_nnYKN4*z>?;ZyS&j0|CT9aw$WbT{PK9=f>~zkxLlZ;5s0Fjjk*W?pC)DtnzGDf!o2?+6oOgqDu?b2Fuu2y?LwlCLvA7S ztx-8lQ|806mLx=08-+!Z&(*0?O!GlTJ1RC_>$5=Ci`0yHv2-e4%PQbF6Op|sE#I5~ z_nhU?{E#9A( zdk!5fPPZ) zigTqnFq_mG|6b;~lOFjtkbKqOWJ$i%vk=lpx?yX}q8!>vu>@q@6g-o^JD-pteq(`> zSE)`AjV-3F3^L)?9p7Y*8~q(r!p8YCNWisxB~@>v+qh)v=sKcro!6)?Cx<)anb+sp zgx4h929}~qMt>|h zRMNb2iAuz3-Hw#%%Y@sArCO-&H9D2eX85~fE3L}~ImMu8m8cy*ZFq|H*ZLYYWL<6u zy6+r}Pg&Ur%b2uRPZr%t9)iz(c9CVl^RFpaYadM;L<3RsKTr|p=5pnec_LBmdQ^Dh zh=5L0K4M38Tim?^8Ly~29pl20%;nHM?#-}{cBv1>k$1;6cp1yXH~_z-A30PUf9ULL zK%2xxTT_H3r51sJy`FiM0o)%5F91ir8zg&5QlFZUEhg_63!X15cYj5Ff5*s=wLV83U>7Z$*>t_Y zVc=k6yt8H*PY#A!2yiv$FWwK!W<%EBf5B(G1`)9yy=2I)MBR$<^gQjmZfu+u-<&L+ zY5d{iUJF);N=wZa{_bL%G58dD9L)Di*-9u_5YKEUOlBkvlq-m|5Y*NlWq!B_cHBmG z$F4|f^$CJNhN>89NJMyOZ#i>69#lbNpiXX&U^g;HTxg2`pLfaZ>R8Q1488Jwd}G}E zjdfPf&uBb~3XpX;m)R;*>Y9euJ$GULdq%rBm{NvDWDwj&ePIcJ&44Tv%OM2+qKMT` zD6#pbrl)PKJ=RWh@QJPfe)(lkQ0)g#+he+ms|V1%bWa0K`ot_UpK_hqJ8cYO_BivB zja4Iw?r56yAYfU72cw_9en;|r!6ckjk z?DyP-XdK)LL_dbSXiDL3nGnRfjNI|YWB2C}x8-@%IJ3+BUQwIxRdp_LD1%sD~%62gB@_S^Apgc6bR}(hE4y1&pHM`Vv z7jksBl@IVZnt0X&%h+s(e$hitq#(&P8!97qHP^z!KjJ34phgHP1nGc)y_DEAwn%i| zJ*V+vs8(W32}hWGU$3vv~138+py}p;rOk-b=rUBUG9G!{*Koj2jn( z$F^VkeOku)W6-L!60cjHSX9+j`^FV7j_Vm4=Q>5cUf2hZH-8KBLy^JHIL z1N%?^{Xl{q4H<+>(S>p9jef%}>)1&64|c&8d{b$-HqQp!MXbf~g0Ja5BE&dROD>go zO<^tTWz=;kHi}ExT)s#+OukhaQfKfT2t>@(bCmBhN9@@!6@~2heo|uB9KrIXs+F!K z`Ocw{#j6JQpeV^5515G?{mot*Vdmn<$-#r1?LNZ9E~gU-AmQA_0X_}`fWQL_P1= z)giqpvSafZ)e|~BzJ`-%6U}u>8TqY`x-vz&?Y=3#fKJgb1_dv%^nEAldGtiu>VWiR z4|pMA;YpR<(Qc&nPieBf5i7A9(+ewhx*+kudIRn(aVh6$nMoW9S&OQ5jyI5Fz*CBv zy&pyawaE!!=Zf&llvSp1^9O_}+DTp@y>1yR>w!h>V>Kjc%QaoU-0`ioo(QR`@}Xzu zd{|R_=4kB$SAF%Y{kQjb93VTr^otK{@CT*it_}#68k}^SU{7vAg z{mwnzMatn)9gH#vn^LIW&?xyV1h6eh2IRe9o_qHDN4TH(1>ySMVaCmV@}EfeMii&W zc*%XN-#y0vpwjM{nXvA1wmeOq^XnA>=nGM}CS%1tqXNeAjVr8Ovpj+oQ1CHh54wluJQmeu z@V+C$O=ci$(ABV325*=;b7TdK72vWYfxmH8-eDr-FkIkK~fFy(PXm3!8 zWKr@y2>3gqi^5C(0OFIQyb6CRvxqVUz+GLCEcsktSf%dLiUhdeRrw#`;}EeJldq2?>gy&O#Ok%!jl68Uhyps z9v-PGJ9lKZl0)P@G0{%?!Lk`f4L!S!zfM@P#=s$vU9VJciQRpgiR!#&{ic9|>(k%M z+Sws|%7%f)V7s{fVHso|Mi()gS*)1C9QXO2zZI|GT6CYr)%myoeq3ZUyGk{; zWx7&_4h9`}s1!%+xC z2?)W}S2>62x@bB)!x!NHr(HlL$Naz`Le)Y!rlMb4-U8p~WcU<Igo7Z!Yvx&w3l)EwT8BDIa6)+ZNSzi$ zbFysapOYkG?CnsaSGJgYBB9Ub0>Pf;x+Umd>r6L?VO+iUlqaLRTz7i3l%>ZsgJ{o1$y z=7tqhbOL=tCG&BUEKnN<4_bj1!^$H;hK`oj_dnd&iAweI)i*QPdy3qc?Ake4AbaYX zkB{8BM#yjS;Vx4TSXQ}xNyXfAOtUcTS|a{(6zM0Vw$skRNU6@kQDCQbuwM~&!_K4E zyk-Lbs6L(4PWq-QdB<8PBRwGU?STVrw=l1{#MDJJW1nvP1(<*8?Y$lcZ1eLR>p!5O zRk`)!;VyYhCnV_?=%ch{mn(Y^5!tyg3tF5qe0eQ&!78yb&d(BJ>P18!;#RD46H(8IJ9TS_vnxJo6_J4gow3f%{_{($G z8;Z>Ct<__}0flLz?+}JX0*E=UEijDaQRqg?KqSxE*o)|Yx1EMLmDD+qT1@CUQf!C2 z7Nx)_n`PM|B66eYV>TIRXmJBCu<#ceW8j8|Dy^ZI`@sgDZIqFbO7oz`$wm^U!~v9r zZXGVsBRP+07*KcbE$3+Za?m(8b&nz{5w~=3xE<4~VM`z>I?%;f*cuu=l4wlxZ7xV7 zWyqza{to$;_53@pMKYTiZz1P>5dW}FJzA5zvIOPOt|`|t3!~k3s+Vdt5N!+W>Tzpf zX<*oAxhIyvCb6(Jj#hBFTE>f=vd&kmMYzmcR2}k|*c>D{q*=V9Q|&WEW7DX#J`q;@ zefN)5tL)hYW^35rIK7XdzH?d+P_cf?V|}p%P_BZ8{*fWBdkM%e1rUVaw5|F%aD7Ns1txT)n?Z!EJBJc~8%0tP7^MdbG z43I~4fh@|hhOfo0Gtz%q^d6J}y^^okm>6s@9KMM3ir-h$bgP(HdqP4say=mzGC*bl zjQ@2nP5z*_^G+3rcL53ZiJC3A4pn2Vl$gwY$MR9%G@{8%NwzQpM(K76b$I1?y$bH! zyaWfzzDwy+1c*HbBYi#CLXuo7t;REf6scQsVD|o^9dJ_=t`uAAYCsUuM1yST@1$?E zn@R4nniGi8m{U(?5ES@;R5V<$;HToVX!k!+mKC8rc8g%3Nhkcl9Gru^XR79BsE(U0 z*eHQtL$(g91+tRd)C6J#7QXslVx*by!4MZEpcPhgp}BwU zQFq3jcg0&p$rCG9HcylGVwD02j}D82kM(}<0=HW8b#eWKY32fL6-;hc4d)C9NDiHb zX*WGd@3^PDM66};!`+DZTl)SI5Z^!s17m!Se|I~MrGeJ)X&Y+a>8ZPcF1fBWfkJ?J zY^$J8T>rI7w2(|3_Av~%^l*+F9-b3Mz+^I#d-ie|)(wfcTqk}pysZ0xhVgbx2t?U) zTG&I2piPMf3(XlovktiCNtQsjwb%ZME>Lg@rcPok16Pr5=4=kpy~Ky+`x;cbYZP)p zzM0;Q_dJ8bZ=x9l!%^!FaE36T{`hnVrOD_Jd!j${BHF$}1=@#;zJ%S_iDgldyoeJ%cUc!j9joC4~(WPPccs-nr_{Ow6 zYEyzgzZ+b`-1?0pCr&HYTIhnaYQ-1qP8K~wS61+FR$^upWaw*vn;=YdM!_(&=)5DD5kyg_Ov$#DaB;5DcO15M6?m9}ACfA;sK;118Bx1Y4Wq5rr3 z$C!D#tE;Ii*ooqm*O+g3%VLDA94tjGD3boEd807f7zi9c(`c-?33;kAa=Q?PWe zUZ-6y!9iMFOl0m+`s?=T)(*kq(E?P{by6K)jw#CQM|7Q|UM*&}ZB`f(p|l3D3%m@yRBY7T zgU;O^Rt8W0_TEhhnhMRG3#W(b*K43Cih{s*&8RS`ppYJEN#I%~4ZBvqAgl1GU$VS0 zK_g2XP3-xkd>aFN<#aaAzU5k#%Dr6fs6t^OUO9>|a7*nOBcC3rcg8}1atrAC`tB2=JQ1AhoG~WK8WUbTl18GlGE?DMtN<$;U2CW_ng`MZSv2+3_rJD zx}1=slDPpqS9xFJzhA~HXS+PXr{QnP#{wT%*1hUm1EbX!17Gey56V%By!h&u%YM`le|mQry1ws$kNnD^NVRU0dyd@SVaz zgKue1dhpF3N}C?5s38mSH?QJ|^*tPV^@TZjqawO6=Z> zXX6r=ubIuIrT_zC+-9%9d}B89fMlw*(oaE!8Z-!GAF4|v$bM>mH`Yd;C#G|DN@&bG z@^DXo$Qy`(&y^cw0hbZmkAS!f>JZqW_TBd(Il$e+?~G)O@y& z8G;P*)QlXyF@S|7d0RGfG2%U5V3=n!$)!=V1A`+cWRS|q5DyQM4WS)TLmttAX1}1U z9A90DY;h>uj~~x;*8{R#Wu4Owe5fK<=z?T{nUYGu!$pWD$QMNe2G5@Rh8lV!^xBl! z@V0SbEx3yh7stH>TGz~TUKklPk)7(E)WCsHgvcYR9m${p#z?ZS&n`x&Hi>g7232|-wM_~hSRqncXr>_uH3b~zY z2y9)=!qwdoQ`R!V0R)6nwRP^_$~GH`*-q33gYLJ0b4xACG`-)(Kgg0Mn065B@dBXA zqp^g$&|^Oe$-huP4h!ie{~`0sBYZbnzkk%;ht<-9Gu9Hp=GaOz+`LE?oO_83Ua#*l zo;oy2z`2KeWqdBDB4%yy`5*WN8_E@5N_&p~1ASf@t^_vO3W~$q1FQSx5^3JrwRVUd z`#aW8L-|DX{VbqRb?4`7D01ym3J#xB01|0aD0P-Jo#?D|tYh$?ux{_F7fRaF6Epof zi&P8F2%^cF7Pib+oT;K#!dcl77~69b8un2I(iM=dsD@aQEvI*&=tcFW^<4*RW(lDE zFPpHR<9(p89%sw*nQg~K^AT@g%GS#|-DDS^ubZ;VbsbGLx^?&qHohgP@Ck#txAU7| ztHpVQ&}#?jmhQ`~UV7tAYA2nxQJs;XF@7KdKWeW;!5E+D81;k(3fY- z-HhYDwdjq3VDrH=ABCN`U*(bZGm^uu>#o8s8Ee2u2aREOjQb46x2$d*M^HXa=i8_k zManZaSN7fEAu2)pIc4Ra(B-FfRch{8A@VKzc5t<|vWNw>hu5+jc`g*m6i z%w?^B_*b!cqX$9otF>)J_GRG-gi6xQu>xcwZLX${)}MKp-mFFpD~sw>9R*)(IERCKLW zNyU|qq%$i2kZsv)tE+Q>f#FRK&zmsCfA!6M0|jrEPB~(V(vn1IF3xkj^SqKbE@64* zaMfO=$jk9**_F~(9iojpgj8@KGg%-4ca5;r@0}f{wf#9#C)xr5$Tw(;Gadhz_-+O) zVTdvCXmBE-LYHEioI|^re*VU7t%Qt%p$1aE%jN+KZ^e5C{U7-RO!cIu-=+A{ktu3% zu>`iy_oixu%fNnqAA(-QwXlVkqfX?qB$vYB#h%qeu3u}Mt33|jD4YNJ#-Me*3R#QG z(PK}x?ba=TRu-b_*epqNYPO5%P3DpLF)2CvON_L{ku%zLR;?G6KBOr|5%vpq0@FK) zyHzyq9%DLi8%u~bBc!ZM>SjjVg#tRZX2$s2CS$v4-{!xJ$L@um7rqixo*R3}HmMK2 zwb(p?X=mx2I#55P(w;B#!3$R3ix|yF$=}0R9*z^fwvMmR8M@m!YBvB z&$}QGLxDdS*yvJhpnbRlf$O97Zw^grc}JzOlk(t>zEoL?CP-m4x&}IeHCUpAgpK7N zro0&q3JN`_V=REKi6SkPe-Ybhjh@(RCf~62B%eGQ-#o`^a#MQv%H1L@n3BftfK%3r zChHz3^o%)7i^LsMNW$Y;haJ&KXBr;q3*vqY$~Z>A?+Ot^?o4r*{*6V`Ue7i_K7v_~*Lg3HT;NaXbHgt<&nY zJZ)S&70P*Rwt$4b`Vl_tC3d72;L@m}d?caf&3pAy0NQV&2v@#mU)E?*$udDC&1VFV zFUNoEHq`6{Fv;oQ#3nJQBCEVpC5n}uH5EONOzFN??)OwX58n>?>a{NO0$|}0hIan0>SScQ*Hup?uboo$eg9hvGoFyt(;O| zjx?K8V;zj7f1YY1-vpfaolkNI#>PV2I6Wy*cSu*1nf(eAo(9)0^}acC#__0r`t4Ih zb;Gi^?`BMxS-EZ0oLHFi`8WC`FttgtSgi*AtJ^_~MV>Z9ZWR(`|16*wnOmttG5iP<#$bl; zPUJxMTBW4{2u%GMHM+0f7?FqY3G^pTSnzU$f_j1r9U((um@yCMZ(W$44RM72-00;w zQuv5DNz)3%c*^-(r(vGY8}yONFe&`!&I}!D;b4Mrx)NgY8kgEjnBX5iy>{d} z1k?=XW|aRSnfb zj^o2a;SNGV1)>h~(ZaNeu*?eOy`z9sF@G<7C23^~#L)9PflH$0%^gk>|Fqx2qd^fW zB}5*8+pj6%PG-X&M?+a`_;%`;A{|epyV@9+*2S@+bJAm> z^s;g7eb{#&`q0=s_iAhrd$`i1xJh?j3lJ`a}~VpcY~;NR|xvYP~&4Np&_4g8y_jcqC_t6*1>v z51;O!@2xDK;vBS~gIj=k?ZlOd{)X#iG1u(P9OE)|aLlOqd#{SG(`$-;B5)9aH3WsV z0(^4B4^(w$PIM+&`W~Xa%hki{&}WOdM90UP4jKAp zJYqznZz%~3^v!!ifjt?j<^M*`pMMMSXO2`TAXO`a^~YnHy^bY()W$eK3Emvds}s=B z+H+B74mg_CO9M+|#%nuo08vlGD>#C})8I%d*?LvaNKhk86aV&npAEo0Q{j~}6e!Ql z1E!+qGby=f?0PupF;DuBqfQ)isvhg$;`yij%(HQO1PD3LB=D^$mp?9Sc zkW5xZZ)JCKuImRVXBchhaZ|ZapKLIZ;e+6rHZ~KV9taWqp)?$;#@H?lO`U+`dM!Vy#CLaCF=-JC0snd zIwgSkuZk?Mwa*_ym+6D*@$*JqFxf4YXwmY(U@3GIJ4f1Ux9sW*PH8J)wtc~HIdKNcc|LyU zbcCQ|ImO9FiP2Z(TLa)4sWZ;QPGI?2Pi$JIPt<_^@2y`xxR3GkKydzKE>vw^s}$kR z3mR3cx>+N8AHA>R1Ey4yauclRu|Va2@EQlAPi9t`W>l!F#7r14%OoT>C2Tsl|0*$~8O;LUEoQv=|2#I;HParNJHlg2w(*Ykt+F=6pQ3ak zr5CV9dme#sGK#1FxiHOlWDm~!bZ(qB`_)A>)z14QP=0y(1^^g~A8hxbLm zoC)PQ?l;-+(=ZSX;NSZ}+&SL`d;Pbti(JJ1NTjA%^C)#Phg4`uP#P}$#{oWkyy=sb zFqv^EVu$RHcTjMF>-9?ylzjdpyD@QTZHfl(>mR@2o3@O;uXfTx{=8d8e0G3%j*sbE z#t!}l_o0?U5#+&z=L$T0F-UGUmmg~^I+^QnwntdoeqBrKOB|D{qH1udXNKm~pkE^H zaj^(S^=Xk0D^My5X4+}lmw{)W?oi57rAfrux=BZ$l(S?K4^VfUQ@!i*l^ux&1e zgjbaXh}|m$z}y-%sGN1n%S7Ql9e$y;NwyC5+WcV{(cyoV-zIQWbbUYIBp4W-%#Wb= zeTb^I=Q91q><4Xd&8h~bm|TomDXt%+-?k+4Itu6jm&0(hd4J{R=|5(bDa`8CnYYD| zmr@wpVUyBP><75mmrb&05K+YmB!;+Dr8I{{V*&~juTWnU;)POq5+(4a{THZblf#}rbso>`m40!3NMu)pSm5bi?fKrIa)5-f|j6h89U~6{cjXk zF(VDW=ob1)HBJwISX|oWN$1Kd@+o(PvKUU`P>FFuH}WwD#c+?$S)m0?@)t;J1n;*Z zLa(&v6RGX=VTr?xH0(oyKIq5T3`iJedsQ?`9S1=7Pf#cUkzsgn8FSdU)Fep%CB>KK zzr^lm9xn9X1$95MmN1KnWHaDocb*pSAjae7^@+Vo%Zt2!qT9kfk)-PX^CLV86EiTF zlVEU=9jv=#)@le1heMU-ahxr3#g&Uhm510Jy;b-p3ABXi%-MgJw|~aJr^^n}3M=TK zp}_6AVT%LveIAgmvh+AmLU`3jCwbiyd>#iH_1s=5ztBL-W*}F(W>WJGjJ|h6#zsm}P7(hCDv5Do0!T)X*2806WJ+{uV$YPjFieU2 z%?_nYvpSBoDG_qPmaNq8PQVeY`oEl0+;F@+szpo{l{<1G8hA~0tjyIF?@6U*Q%#P8 z%^FL0jhC=SGc;Hw_v~!iZCwpo$tt9TQLcP*UI5$Rt_7iQ^%z76M@B~A4Hm>+zmu?v zkt2mPV8TzUBaYN!9qov`lD9t2^>qn`_3r5c*9M?Z5jKJhX2z++O=nC1_xHo4I#a8$ zNSLQ717ssDA!=YeK0JNh+h)<)4Q-vZ%0Q(4{>Od20Y{rRtVs}j*o9zYrhucv{nF_V zl{xct3=THOO_E2K5<)xM1Zh-psFl5w<962=cai@b^c#=smP?rG_YtY^J!9M!@PZXL z8<*s9t#PxTIG0Gc9GI<-%L$tkB^7F+F{c%woi0)ztU{edQn1y@fZf9Rwd+;{ z{l;5PI9o4spt8{lVG;|d42A^c2$5C=^zD~}@qbafR$M$W2I zW!@%g-BeL<+YO(CI?%`-Y~FUEj?o%H@q1pDA+uhVyv0mfkT=gptuB($wV@_L-ck`R zsE89E-cs=Ga|8YnM+WwcGcZEbIs>4+;At*r=75wm?TL3+W|V)ym^(^%>@y!1{L4Ug z(92k#EEQpwjcN;`;T^%Q?2f@Subrei`Tlln5cO;||JOgA^@ApZd?_M&OI@pI=?lmTBhdXWi7kR&w*Csa-xZjJ z+Lh#`$52(amcfEH&8#ATPJ(E9UkP5gDz(Qa?t222d`CY51Tmd%4r8bWk_5>5DM{n1 z#31kRN}7|Y&Fc0XoNNCiyS&u*o8Yr^lU!qjSA*gLXI-lQ<&O*!fVu#`; zSIrz5>(AlC?}q!1pOFYyJ%Q@BLz&r#fg3*bWcjCbZ42xErq4ENZvWUOeF5`Y8OQN zdZ02c>XBhtc9f-b33y*m*s2I%x`Z%6>EG*;OVLj*+TH((0{PFYZvM0M};P}T0U z39&7`BnTSAW|eEN@djuNV#h_^Q}U++~`DlQ#g{6dgVE}iK>jiu%Oi&HiEB9$9M=X`b}_|Z)T z;*My#(6DT*^+Y8vX*8nzO#y%OWcGj4e2RJ|%wQdm_`NOri@A1b7j50P$PatdRE{R2 zS#4N9c#K3V83X8&BGb1N@+4~jX@tF5Dr1c4B ziBk)D z8}0cNMH#SWt~dB4>^0{T_B7QzBPD;DH0FgB;)I4Q7f1c-cs|O#7jF{|XYyge{8*{~ z>LC|H$C4mZW)lo&>!|&cCq+D03(I^5rwQ$X{Dk*wV3E2$KIw$|&K?-YMTuH8Ckk_} z&ia(oN^$ZNcL+0n0g^&8H?_qrPricVa5Zsws;3fNnV`lUcG7Y#G{T+D=%f$*k_kRaE{vBvJ2p_b7 zvH#qV>X-LI9iu22qZlNRY|m9sN(tLJ9iUF$ugAD+s`j>$8W4;RRv zoUQi9On`jw3&$Ky#M@hRzPK|E&aR|bQgJg*J1{E)H579moF2R;x|&0<`lC-_eYi2e zIEIfnxcLtvfvV>TcTu(Rps7F>dQ>UAc|8)||Boad%$UCWmBJ=!CCQ9=cV0EA%dloR ztWV)X+mVi4-oAkZW(Y1!?`JiXC8Ba0KWOT_XTdU0w&o`=R3qVlF00CmQs|@`$t`3} z#hy%}$gGKzf}CP`BJw#oPlzV6Ahr>3aN&!`IGprpA;fK&QlRRxZPO$Kk6uD|1XZiU z4p*%7c#>oz3SK);rg=792h(WIF&1qqp-L&6^v-ps4^7x^XeH9qfhNW51Ks}uwVr0~ zIUe%?yPnExe#`{E8SsMGt@n*QqMkH!UI!S_4h7X_)!@|)-jl1*B0tiTm5=8;RO+v@ znIFU8)Pskf>Nm>-z(9W)&I6_;e>tXs<8Jr$nMh6#_-t7RxI-3FerGki1T-a_7SYu* zAi>{~kZyayEiBjCBYqD&>0f*%aTuYbnS%IP^}Ct?wpp{J>`Vhm1CfN$7mM1@au`F& zYpG@THf%l;O*H|Ru~E4*uh{6Cy3}0x`+&Yzi$*Cs4@}!w*~&A3Cyhs<5mr#dZ+5jz zc74JiUnKVbo{WGQr|a6Hgr(4B2EX0#-SO5H&fYrO-qw|>CO#?|c{_50If1HRx2PEX zMZqP#BH*}X-|vFCDtaN}0<8n%mEssqoJN*0C&qCBNQnbgkYGyV?yEkFtDhlI1oLYi&&^KJ>C!=+-~ZDl=D>Rko0onq?AO?=#UeY!NR(s!qnSik zIu6hY+{fcyIapbBhJyE`J%QNYqqz8m#0+EsY<)f19^D>L4F-F_I~%Q1Vq=D)&tDo$) zFKg2X00s6G0WI*$pNfj*81Obd{gBP$f-eA$rEgj}XzFAIXgrHM-)wL|tB2uoNFMjW zZEdRSErM`Oq2TF+*Y2yd^t-CB>u`MDA zjL;JE66HK!^}rhSyLcObBmBSq@$7g`AB+(Y-w+=p3YK0O0tq_(E@r`f*Q`nET^F>j zRpD5=%GNRId!)N3q5I^m^2Okw7J9=Zo60$S2Bcv>?a0V@=O*7czUROvxDv;gCAtR5 zozDj5fzAsBDFmfl#~Z4OXy7C%F&n+5jpk`z+{x5lGtU7N11BpOAf$Jl{XNLQKYk5r zYA69^6#)M~0Kn64gA}F6?{iVVM%bVM7jnai0$`Ayf)YRYzD&b?P6nO<{Le}0CSA}f zGu%AE%98X2hvFr{z!gFHh?k1>J>_kQZ&7Y>osY_GkmG4Rl^Oz`MjEzj9o#|$K>WD? z^S8R@n!Ek)H~M?N)r7_b2maE`7Qj)7=Vbd>+OFR9%s);3isIpnNt9*=RL6BiV=&LdIhQIk}|R5lW+nMWOhC>P4zUrv0up^r?=QM%_zZzwol~z-|`kAjr1Wm!%0d(>z8ZEeKcHu?zp}jNNd@%4B z0M<~wos+FtW|wJOQJ^bs)|4ek6rDvsNj;p3S@I6OZ^- z&tu=@!~w~Or_`9SIOaM}U^=9Boc5bQvIlU~Y6^))maV~LVMyc|exQ2U&k0l5O?~m+ za_$1n((uI_zHuYn1~AYzgESydhl*oj_7{&u*YX9%lw53~+6IH0;zeOb5?0qQ7JtVn z&@E50v3{SZgaTE*7x*K>xn9Ud+T9jKYd?aLV+_(WoO!poURmyR&X*bFVZbUqI^D#P zCz{lT$2q%%lCo1|{GE<#{H}*jozR6`YWY(cPSydN=Q?nLDt-CIvjGGnVo*2m&X|c+ zmSO*0MSM^}ZyfBzayc1*<3y{Gm@(}FCJB>7=zJ_>TN`^hm?WdbWmg+0$jOoPxDs60 zt7My0%y&6%a}csy6o5QzMa2QaX(%ipY-wtB4C}mLOf%sH;I6tprFl%Rj-9>Ocse z3FjweiTPf^SC_U!3<3a?9YP=JuBJ|m&)I7To*~RY_JCG0iR0h@c26If+CAd|MY*AN zZ%i3VU;OuTCfDTUd#XZfg)LnFUHIlkM-=t3rk+mh3v0&FmR^-jFeH|V8{8a5K;Y-@ ziJ`a%Wc`p#;@t$j5?(D3SJB|#PjvYe7|{`FoW+jC={tUud!smaB_8bP?41%`O=ZT; z^mXc>$&j_Jxxn3?B5t4F*_D}-%U)vYB<=(`&f@eEQ;r$1NavB_X?A1NP;EI(%a-1@ z>!N{&S_(Y>Wr``He11m`NL3|i=OIo7x>;MESc<@a)uGc7YwH<@Ap>j#+p?~jnCSts zEjq4p8CJGQ1ufrU^8W#~e0&*O3p*ENlD_MASbEj_W!j5SGN@Hi#QbW8uoaxjAbhj< zt#r!A>1%+ICi9usb%$WB2qGiEdj0EnpI#4}@X>Zy=RRA%ydoWic7AlNT!(Rmt%R=2bssIfFyjoWolN^89r{{X<&^l7J^!rm6}q(1rV&fW zeZLb>lI}g|BT#i}geYSwooed9C2reWtmlJRd)6mkN+z2{K&oRMxlp)3Yx7x8gLM?# zy$)byLc1vZvkLa4Fbl$*u@;vL+OY19N3>RD4%Ki5zIuJG6U^B`h(}JV?{s9lJNfp2 zAwyY?C45YzIz|Ulu77-lU6_~}#>~OJ+jm#mMnoaWWvJVuKV!Tt)|S%4{Wo=b9#XY` z9_}gf&WKCMOl7Dj*$Rinqaqq@xHxKfA3U6Ts{zABGvA>r&+P!nP^nTC-0%O{t4x)x zXj3lvtq<pJcBtDt@NO&>kAm&xk-?K`wmzhulygC2JK5h}J>lW`#hV-!Hw z_{M32lsW~YRe<5cZEF*I2)Cm#$EJn&ppsA^gw=}EV_>;iTNc&LFOpGL=^+8I*^W&QQh?8Po|hC*$aSOK?R}#J74%V4}wmZmn)e>EOe!Z z%#1>3u###}`DTkNP^E-wPXT&ty>2R+NllwBNLSSsBN&X8HOT|3+(w&4!-OM860n}$ zY8HeUyFX@mrmt;1aG}VZAlE7u*`SW`WAW{gX`1b0*hqL!hVpauvFw2-9+LqYg-3UnXkxJPaxv(T}`tvo{A zSy&{aFHHx~Hq9zu?9a1d$}DzuVtx|rz{2Wfh8EZ>>ch`VI2M5$$d6U()n&u3AH9;W zKab=6DvWyUn4QT~{yOLOLFMF0%!ou7V2Lt{GLdm{@w1Ww5}PVQ<%`Y+VaS+?q1g42 zOr;+Zo8k-2;h)dfhL%zCW-e>Id}6x#y1tv?3zn`YAEx2972o=Z_0i~T5%OK)&fXa5 z3@@3h&tJE?a9-1A`wbE_G#$DAO0+7kTTw4_`t$D1yX&|*?a*hb>$w z#p05G-EdniC~~pBo_2k)*T?j6|L*f?^JX0(Rdc@E@;IYEG`jn(n3B$hDgB-(I$riA zIy|ZSq*1DTuqK{Q?1(!h%vSzRCqgJT>(==v{n2qdN69K#{NX%{^iGg_pbNkoAG1g` zk^eo`&I!!>cUI3uB9GVUDm?KpJmB8dkz8RE`c0Re)ROd^7xq$(4B-DmokQ`YD{w)E z1>VoN;ig*f>6r3z>N3A!v3Np)mUd_ro{!pP>~aHm2Ttn#xMUg@CYKm_)1CrBJvh0+&)Dgk~V}X z(LpYP-@-5FJKevDhAJJq`?%lY2dEpK16qQ;M~JN!h&^OWi*>(az{H3#^FhkJt+Ruo zH6+lNyA7+=|mAk;vW z!)!N&63tI4$p(U=$p*cms419IOo{c;cL7jXYz~fAtsMVwNWfW{kj***NolsgJ{@Q`{qv7Sl+kS(|Ks@5EcY1LWt`W-s!Q~6Z3wFExeT1)tiX-q$s zFlO^y;D7Wxrr3(J#=bDn8zq}k$;Qe~4_x_f75RJ8A%bBQ6IoR*6xW9TcJZG3+J zz!^e&%um?NXmNgVa80$vx(&fhY?x=?weR=MF-QJG;JQKBS-! zI!XY^%gfKk_!k#pcD-Qq8Cs{qaqxgNcx`4Ke2*~1F`-TnvN-feGTQpRz_ z`NszGQ;}#oZRu8P3C7wox+x`jS3+=OPyoTZ)#_E4zuO~Ia2`~g@;z%o9?PLe+!^;++7&LkZ@hb7v%1lA zZUQKRaUS7Z2se*7_6S!pJb45N!Lo=LbZGoDweVi|^4ttXbb75UInE@v<40yVVh-A2 zTst*XIllg|Q{ftkT)&oG3LMm}O(H`q=Csupu4(Ws56s@!JF16lA~MO_k{d)OsgC=} zu(!I>Qkl_hXhnPHqrT0Jwr%p6icG9-FBKV<+oE`P z=WSMrQsvSl^c<6T?X9AmrC|%tPS5mKUOL2XGpke6z*Ud1k%Jwp-OowL?g1_xJ0Sz+ z9x3Vx%@GvNKc{B-2LeWQLXALw>&!z#$aayQ#^~?D9QePFJ74=OUM0n5FcJuPR-vHJWA9v&HGmRKTD`80_08B9` zZn4tYUL)fs;1cghO&US0Yyj#ZtKOl~T&th7S&V>P07Im=OBO?tJf__5Odp%E-B7HXo^4^GLPKM#|6H3XFf=$B; zZ??{7eHlmWC38JJ>IxfEl2Q?{FJlzOW{L>90_o~u1|g0bg3HJq_Z%OkkEG8Frb@QI zsz^;hiSjFvGoUjGUf<~uN;wyq5ag=*Wy^h0=?TI8c6?KfDxVD#u(hHBy@_i)LF7(WrIcgI*i-gL5QYa*kC2>v_^CCR(#haLpJ zw%+9m%tkKFNJ~JOccs$ysI}0kCca)H7;-;8p|(XH4{snb2}oKffF(R#5jK_IN)ykY zPvF+ta9gKF3>V? zKxk0kBYY2rp*oxn4`Ywmfj?a}4;pH()pYai(SCYu8P9FNzt98vSd?ygg;V#C75eS6@>}{q6#!~FO8q4tF5$%mNfS(KHd8Zc0gv< z4KIcJfcI}?C&TaV)jKt$C#ex5d?XHrz?g=!a__wQNV~;3ZFSJdH9>`Oy2NCrn&#_r z5o-&nvWlv97iG(;3CSdJv5>}8-8V48JPTHyF6{GGE+D4E5NT2ugEafbJ1AbJMr5gm zP+P@*2yX=*sw=(I^Pk;0!9ztKWwh7UAc`>S0D7ZbEOqj3ZDUIN7i^VG2%)SkZJrXU zHYeAyY|s!-TqluQ*ZfOxqUiND4WxGrBf@M}ENCQeid@<_r$AVLM@XeBFBX`9d^muy zc|P?;Lp3}vm(}gi0u-sw2iL(8H_tQV_?R>7pg#DrF4U-RmUyy}_7em8JyUh`24o#0 znbVF6;sUaYcXbd*Xt$#6-Z9!YcD^72p64@iP(q>M@boULHK1)Q0K`8!!ke%^3}OVm z%eXtAq71t=MQAXcFrivHwM@Odl$b)N>MC^m=2D*_knq#=4LwCeF(reMe-EM5mx3^{ zgRN&J`Ew01E5U=`;ME}=V9+>uX%Z({tf%x2)}d`iqQM+3fUI9MF`2@;3`vgH02KEM z+pZH{#9=ubcm=67XBMSjIO^^*MUHbMFS7n(;*pnD?_}oC@lLmhz46i0u5(kwwZJ?YqxGbM5H*rpIsak_xm`7;muCKBQ zZBD7flu_7n4BVG}sfc}w3bo;EOu`x^(zb}HU?-h|T(SM});eV5|LvcOB0Encn|Qx) zON<p>a5PV6!%+~o$;nHPpT->M{e zwAnhFPmEvK0e#(Es${5O$a!N zbv=W@5LnInh}^&p#j*n2NzjDPxGUl>Hwg+mkz@4kCY#x9*YdZpAOD1yTNQ*Z_Eaqo z4FW6x^OnpTTx;5TLwB_#@D03FSLgkB)~pPUEyW*%!&7Dt)|f)O_*Z0$y}+P`_71#G zb8NSXw5ZnX>W8lge(THwD7R$QL8|JV@NsEOl)h^1s*!2U?5XzBzcdLwywB$@QwU=Cs-gAyOy>;RL3JIvS&p$-&w732zs)tIisBJ5wjT?aKH+t$SIZozO zyU=b-`=Ca%`LgxDEQ7#M;PFm<1PU8#_qmz#&85+1p@%Nff~MdWnD(1S?CN)E)iC!bf#8|I!@N=m$*vuA@0Sw8QSls{t7BM7 zljW2td`a%OXy%vF3bD9t&7JEF5W6LYwXq<<(Hlu!`x6SgEG!@`081pWhX*XWU;XGe zTh9(3cm-O@N(hkn$A~gC)QT7QwX=VDjla?X{iE*TD za{NM0FHbKbA!R>9Z)HkLmx1KHGYkD9-l$;6L_6fi4OLq0RnRP8Hbf`y=L?b|*2VF= z4TH)E?LTCc}`wFuu$ln?w>u`DgU`DxIjJ$NY8JA3;@cVfy$MpE*NB5w>A#fMXU*^ z@!uogSj34cO>YW!hAd)f{rbkkQJ~ZQD8_PTI475XDq>t_mE8-EpFZ!1xOw4=bq3P5 zR{MSjXM02XuD|Vd?(k@dt|r&MMO=ABLT+0(B6DrfwIq8V@mXN*gKj(Dm1rG@JdvRE zjFv0JPzzAKm*zH+O=TqKuxqu>;#Cugn25j!>^PdGsOY6_-_-Sw$iV!Hjanp1%pAZB z($4KFISyx0fY>H;J+x}Zh~Pw$jqvVWPrl^D&fIma(Iw1%Px@=?s7MsLSMQhOx&{hC zq3L{dt2#^QR!{ue_bw}CMVaNDr=R2cUa(ldxl0wY>!(ZBCH@^%5Of2cAkM+mM2U+f zMGAi!j;_@DkfZuLKTXazhkMV$0#fVS9I>_D`P%W-F9q{y@pc4I#id#3BUehB^$Z46 z`sJMa5``b3E7J+J^LfD~ZH5$oB^|Q#o>H2-X?#o0(|oHAB<~@Cm1;yI&e*iOM)dm+ z-b(74)0QH?&dWfl&hZ1+`vq6cQ1I?z|CfivO#KAWxDjIBiCI{%cX?IzTw5Rqb2Nus z&5h?QiILRKvPSf)#EbIm4N-!rV}~N~D`vHKY^5T!&@W;3R_G6!9*pr3adS*10x-7k+Z9HZ*bDZ|EH)kRB+~Ns(tMX=(P;Pr zi|eD%Pwn@L79jhuZk{aOo|$6uqxk?P*Hx0vYmTxwhUf8ZUES?ztOGa!F~{5a^grP#+hgV+#b){4h{aACej->>LP?23#9d<^AM(y^ z*~~++z#6y3`t><{l%ZAf9{yUqX6yui4$7GiXJ_g$oX_@xnFJI%JpVq|JpUAC{=16? z@OMr4Bf}smQ&a<@YVHG;gi)pI&FvpcwTV(I8;h&_1*4w)*}OHtK8H^PNT=z*jH|2E zxY$!fl2wzB%#ooW`kx|z(g)+tQ+nG{%bVFgv)#|xATFAju3N_?(xnYSgO{cRmY`;?Iy=P7DjmN9?*rQDiS7nQ9f=kr8)w4cnCA`k<0T~yQp0=AW zZdG{{?7t>Xli4>V{nON})QlamoTk_p$p7|=kIi=4mu{}OaOpP@ww7BAbZj7`_Bvm~ zv&vU7p#>pB?(s+sHgUlsw=Vio9MdS7K$CIuVUnv}jnGPHql|R$ray;1Yh70Dm36S3 zs-HXD%JGgW+wnvi7l@n!Xi%4)E|>4q^~;Py?x%SWKJF}t%hZ~aeEcHlg5>Jwna>W| zvBk@Viy_v{W%i_Gr?FqSt$col$4`$XInL);3WH(Fc5WlcO|nQ6bOBdn1U$WiJKZC) z#XU7bo$(|RC9cZX^yw`@pf{-TUA^!#j_(K^&~^X4ckVS z+io+l0jUX|{f*9|+V2p?&S))vze?`Si}_a22<{T0Pr!2<=%vmC_$~19a6}$b+G&Dd zkZr~{QnP6Dx`Un<5ZE3CkIB1bxM?s9u@H5@?%XQMSn3Bnj1Q6?$rBNs=3Sba*si?u z{BCfBKTD_911j79Xw1q+Saz@hMkC*{RV+|XFYbDAYbG03Uk?;SqrT9rIiVB0GX(voq!yL&|S=Vq< zq?l-XUIcCC&zjX}q+i`_%>c(%Hq-Y(q%MU|+imn$K`E069$fj4tb+r|ljdcGR@sPu zQ?6%ned^#$^aEMJUVD?PV(#4QvjUHw4t34FCfWqtZy~}(hJrSJluN%9;&%>-Tpqv0 zDI-3O*vK7y95-vM8b3>_gt`Q-~y4UR>;-;n^n?by!MCcr}ZP&UbD1%e*jt;Q<<_WH>pYnSWe= z>O;&YKVp&9uE1Ol&k}=@GKVXL8qV}!f8Xz8usn6jl*=!ViAJp}GGj+1UnEhh;ou(0 zLj)P{<^`=eMEGRlHB2$E^L|mEjd&LJN23pP19a{(9LG||-8sBHln98Mw{@*lQ8Hvc z#e1~YJ4|fqrVdQE1gk~}&K|j%z7_3#ojN_ix+h}id0<^SAAgtO9`wyIYLq3);oPWx zD)3ekKCCH62n=Kob1L#UZC;~4!V6JM^iS8xL#`D^^4TBIU4OG_s+?N>L13BEju?6$uu{0T&1q+JSS+do zoww`INkOO&x#;zrfXRRyaq!1+=NxFHl=nSX=qIU^es4Zd(eaz57@i;2lB~|h0;FWn z6HP$phK9=Y@_wRg=EA^gAWQlqg8M8T;Vy*BXf@#f-zk$H6bhWqiLdOj{(l^ZDv$HR z89WUeGd4xz+&*<_9fnAKh9-6{WV|8g^PWR34z<`Q;64DKiUPD0okq2brUHi_RFi!0 z1Zmht(<(d75tFydMmQu>rX6er`RXUG-!;Dkvg_B5t*aQS9dj-9Al9Yy$1s6hh%B`; zkS+So9y|$+8_}zJryW;?vr^sJqS`kUvFsYhdginkhUQifU3B;IRBcAS8xvRcgw%&v zDz*bT3y?|MNL=Er&?^w1Mb=&!^eXea@1sj zi(0LjX`$$TobOXK^xwW>m8(IM8EZ@wrL8EcMUGhjYE4lreGN+iA}IX!ZSJA!rct-JaN0t*cEj(-M@NeZVanLl3318R1f5Lzay z-iI76Au3>|zbJlgxTr7Z@eDxo_49$B#x-hlo?pga(wlV6Z?j6)GDUJ2y|MuZ7&wSs z-rE267I5}d4_k3(c?DqQK9Za-P+AD$emF?TB}^D|*}i@%7NxSp2&(0}3^#D1^pP`? zkSZ~q+th+Vk?q5%jX0lh+oSxLN%tt%VHIJ;i_bg+)+}P|S9>ct$)so`bY{ZZRRgPL zVypoQ6-hsob)(R?zzS#aW}|q%Am688k{bS~R5WdmQ|94Ev0M^#8trgihh>^3fCNBA z4RdHN^eD!Su*sf2ZhyLE7|?KSU2TyUDMiOnnk7ZTD?#dPEah+4fT6)Wpl3QZkIeYs zU^Z5w>dd=F6IbCC=_YYqEb(uj8!{n2FW0-%kY;g4IORN+SPP-#`HPAHQSI zya|NZHX?%L)8q0;q@5Ym~z>rW}*FgCBWd9lCp~i3) zEqMZG)<$@|ACD-Se!)|j98|1hdBgATe!&6fi1y^m4ppJbA9-xxw?)3(3~=N@_c`5! zS_a*g)W!0#2H!QUIOgoIJKop^MzA`f!pqj{m?wrpYaAQlGD|~{jypG}JKDo-&>s17Q2s%QJ?@%M3E|ER<>{Fj4%uUWIUWD&m>^Bj~)t9SQbhG|b^XHg8K+Y;fuZll?8QY{GjDg&F87o2rvnxQX(`LRSPk z32xxM4j$K{9ogNe+-&uC6!0Tty8LQwgOWUFVNz!`K$AykT!2MZ-sR}L~ta!_Vg#Q--~e|VVKyzmdF=` z`pQ=H*=+*5-|)}J8o6^9FkxA`RLR`f`vaG2)6{*zAsB#s8S5nghMAQWxhG&DDh09? z+7D&e5#zd@m$$kDP}FA(em*MJ3CyRDq1;GNkfIeCD-V&jLzKIq@)ZSjAG3vwB?z3o zoj$%RmjxKi%}DIx2MQC}#+LKyqL9$y+Eol~>A>sVkf%1|Oa0HyW)a_LknKH%V1QM{ zvlNp`0?1KgG_GfMbH(cV`4VMZ zWrZgb=s(V5<>aeRx)e_>K1I>%tNrn}<|%-N`QiB!WKc&m&W*n^ZTu8YWepF7S3yVwfeL1T?LpGx+v6A;na+enqjI$d*MmhkBO1Ik49nB~(;11p9-*Uk_dfIm)$`N^ zGeC9kYd8rIPoUYnfkopfFl{lOXHcToiEvrY-{y^75^a%|o1wNbT07Ph% zfeg7w=(mahsYSHT5ihYn=W%@#?jOHfk5(Mt*B#l>ejYgs>T7w1q9ily+x3>q zsaO>HHFG_f>IBbgsL_z7c!My@y)3+<8*B>M#*nA*E2P6?9pTWu>_vukR5f>Th?PEq zC6{MJX7Eh+Za}7FZc`ak!vbqyvif`WRtd@?mQPaBLXN!3{@Ox#d`w!fs z8(0>3|D=|G7R-GiZsK$QNMX}Y#24=C!dj6A;lbHkJkd^-a8WhZg7>#iG&;79X%(HbQ>hUB$+_fEYhzEXjYj=xqQwm(IZV1jvB z?@e+iD$|;hT*AJ3a^E=;zcv9V$U_6Rp|4NzU!jOMpBX>yAq6bbU_1^Llp+b?2;}Sp zVh&6F1C97-5zAEz?8rQlsO)*4l_#QDjF*GoR&~i17RFNYP)N7ng_H~juQFlkW~Z|Y z>C88g5H6{_AcGDw7m=D(xDC9JVA#NumFEXnilEXqb^oycZ zy2`x0j_1h0jKWZD!unh=sk?w`3+c;q=TM{oDu!}ez4tzJE3&+SCRk9zpf=zr2@ppM z{KM6px5LYuPBte3c5qNcKYuW{c!BPj2!2{Di^FXiGEOtQimVE-rg%E^H=S?3Srv2^ zLofIep9WaHB4h3c)O@F^7<^O7=-SKo`o$V0j6C(zs}T`W05JfO!Z+A*ql`HUU8b{A zd>iW`ukgl23jsGt;oS_!h7RxB^In&qTJN0CZ`VW*^N84gW|*Srv&ZYuPo^d;?CmMu zc%Yd4%@OH;$iZd8TKlg>}5xYSPsN4yO|hod!#oJ5N^#MgIFhLeV_@^+Kj z^h@Nb{N^N9I;+NkHRC3=g>L4%{Ol3WcF&GxC<5xzQ5-0DE}a}ROoRf0Bp`*Zf-x(O zy*?-ndF6UUQqnx~zqf;JO(Rtdnn4lVwIcMf{c+8?) zyL5w7)aj<#ep_;jXmPr#J~>yr%WcL={D*+aV5Mi3%-<%pBtzp-=vab@@b$OiMk%r6wOP3a-&bZ``D_C!;@OwFA4*LmLSbgB8F zCr}-p2wJY^R?+m;HCCU*nIm*0-jd@7yeP*q-+2>l9mspKpnhT3?a?ZiKcgISlVav! zG8sV~FPU#(HE#XZyo#ZKNRvcQjhzMbwe5dE>u9drH+RQo_)a=+Y9P9y-D)isra}Bz zghKW&Ja!9oXF_Nek7c_Eby>C6f5oxA*2UuByGah zc;RG<8q8g4XBakF&6Q@^;JyCrk{*GU)3y+2Iy~y5l3e7J!t%q9nF1Laf^e~ixN2}f z;L>d5cb_B-b=;ZF}F}$GX<^X!q=U# zs@#zw+x_Pw*LuPBN@HVBU@$;+{6-1kOKL;v<5^F!EW2rn)tfj34v7@VQ$MKd0h`M& z8DNC?X{d;w;66)q>BaJsIFwl!p;-8M)f@cj)+K1h43AO$Yjeg&L}YSiN+<)OX4_jy z@Bp!>JlIp3S%sk6itnCUHQek!9zyFID=RW8y4TCuf!=~7_LyojKq_5h(vA)cDRI>E zS!}BE&8`<4=&3=Uo$k`wL)Pk9YLMF9BIiO~TcZfawlKxr{IVeJ7*Tq5YQ;-pN^p&6 zFGWq%NuX;Vs~_S`ot4sf$BIwpF$Rujxvt}Ur_pcPrlE#B2us41p-MSLS|G)oDe ztkvU+p;oYMmyrwO4t?vj4ZZKqto|(>QM8C|ET& z(J==g;LVVar4nZ_s2nO{TPVfCwbOriLF-%Z(AwXiwb(3hTxza+p3hc7)tyyZ9Q87Z zSRc#ST7o!3hR{DurQbF;e)8ptXm7IB16ftDVkx?Suz<>vfN~T;^5dVAM(MlU{)FAj7;;mM0U3cy$?2OO7|;I959y4YB%PPHNrxx7;kO zB8|IwlKnoTFv=T}nwQ(i}?chf8LiqS1VHrj5oR7+IIT2WJ)6Jan zF}*`nH!<_zhtO`4daH!6>*s-G;x?DtbQy~hVD>3JGZ=z`8jwSS_*6%WH8f!BGz!c$ z8MZ~~ZTQ+UisR3Pd$;3r+NZ;HL{pi9mJflg>j>CvYGjY!{yD0P^Af6H(1yrDlL&h! z?!6TcZAgRid{6%5fg0lij)2bu)T?*kpwe$1b3hMe?_If;MQd(a|KdmcO6`F~nEYC; zjuppMp3XJ}%oWYNmd?V_cC(8Vb1_w2bU&VuX5-4%7jMvv=qhKo%_#NsXut9gfw+bK z=1-#yny(7^p1LRz8`^WyJ;)c$^K%_VciJhVHCY0R+2VwUXA=o%K(NxrCJR!} zNx!L7QqRsG>SZk^&ueuUY2?%~`jc3Z$AFAsOkeX(8KMKHtjyjX5(&t*-08{8M|yb6 zh-Yse8Co4Pw^TELF?K(+pW_niY~!$g-69E6L)B}8xFV`xxdF9J>J*r=xorm2Miu4D zvt7!)ll8>$_*f6gd@D-mf65}6zl^Yoi}`#;o3|suzG0n#2+U0ix+w;A{;`Um1SbrX z$TQU!6jR9WHd30zVY6Txyn+J=7Ztosqe8w(6BN2}&FU%BlFe!<0>Wz&dtY&?Ea z$%PW0-alsRhvwq?cSC#CPETgEM=gvN-15(L{Vb&Hh^b=9pz0Hj=IqLehY?y?5ZNTX z*WvNqMIX;D{wA&{O$VI8-!n zM!?j2`W2D^^ycL&5#2zF={|_rw@KieJy|6TcYkb|;fpOA8!)g9Djbm3!Q7VxqlD?? z5}x4o04e$JiTcfc5@ioG;`MMSlxENhfl%x&#xUO2uke=(JdM4d)v*q-n+?pcsG&8L zjxleDE=niQ)3$ZuUlp4fR*Qq(B(Z#T*EyB^DpcQmlYE*}InxAgPbbC|CltJcOZ?=j z9v@z>gH1=^lvXKF9`_hb3rMc3@hf3PArt*PPypq$P1%KR4SwfK{G>TOEHp#s@^rkP zRMW7*$(-L325oMVX9mFT09EM&$W^QX3!SUaNcs-mh}JyigGgVVC`e3YcbDAFyeIE4`%&M*bK%+3q<(`xl)Qz-{4^9VIT z$b3OvPkoCEP~}Rg+mCw1(~Mi3t$||iIjQq90ub8;2;uHtcIgS`Qn0k;$dN@Rf5^X#MI$UB--Gpv#3>+*DYQTE@z zWT=n|l1|l4+}ss@@oL_(BRF*^_4e44$%0#uvN>KL_{V@otq1QoUimuPZ?IH;vZGjz$YgT z&W|G<3@)dJW|}z~N`?i5e_!ggQ}&`Q$=LXs4ZJ&Sd4JIUFYJw z$;p$;aTpNmpwWO4;c*@nGqyxyPHJZB4U!3-Z6P9Ltun%6Jp!_c^95Z<^Is zgt27-#%mWqkuScsLI#$t^sk??rmMU3S|#cR$7PyAYBPUow7N1N#AA5Q8#CAcy7fp8 zZBsMs?LjrpGh+XiCw75Csh50NdvL_=GA8n2SHQhoJ_p4Hfce8y!cMrUTXweB#}+8v zP0V7Y8mMQSC0oTW7naoEc-0{MUg&%Bn8V)q*FL*}=5WPEBzmxQzU1}|42$KowN-k_ zbEsGFkDM>_n3dgYidyQ^_wSWlF3+f@$*eJ5u=eCF$PjhO=05##gIH@Kus;MG0hyf2 z&hgqln-dZTzq^M0|F}%@3mO6UpM>gG$jYlMZ1>IlAwVGU)kz=*!qve-9`l3?MnboH zR0bLR9grxAaI}1FmwnP>$A^j}r9|LWNH86JNkQ0ym=&%bx;W!|D7&`-Lf*=qFxI4j zN9r-hEQ}w2`T_)R80Q>k|MWRm55)zzGblQ~zpVnU8sF{Bozz$TRdHgsE)-nV%(y!(hhg2UnXcz}{(x`H;+ z8}h=UGOtX#Fv!8moh&PjeGh_X&`eA_6?>tQfB5>tW;^F2m(x)BE(=ay!3-5p$g?1j z?#VRe>E|1$j5S45b+2RYXO9_T0K}n<8D=YV-RRQ_US2SWoAGzaX4l3D_#+6$o!RmJ z8yC9}k~-h~)Iuf8SsXTdIP$5v8QPRyfyefixV*-7mQRkipNS|~r7x;rGxE&R^@Usz zNWwItri!AeD*IxiA#|5{f)A@(_~^C{b7K(691!RltjBTa!iZ{jX6@|twSTl)P?Q{1% z!iz1a10nn-I8{7tJRycvUZ{Rm6PLIKU4I8o_eAtX9O2l<#K=4=4wCL`tC|&2nZuOo z5HRv@U(m<#83hc8;a*j8A-OPsfYa@bF7(OnM-SRAo|9|4T+;a>I~4!^U$bOSkFoz{ z=jYn32~@0}!ygC!+#5^i$-%5oayO4=`w|Fcx_>^UQm00+8Pv{7a*A)ut7LY=?)p@_lL&15RywO&YQvm@z@|dFGZI5 z@$5V}`$hUg6XrXf6&n|87Q*29iOPX6aNP9~TiBMBn+Y)hk9%liOd)SWa0j(fk_8ih zTZP3@H}#nqo6Uml)BplN{lAmFk>*j>TZoL1MlxjCfsIlaq0pNa&IS`2SH`Ul1MILM zdaIhFtspTjOhHh=*-k8b6a?Pd`vgg2QPeYLk3RFR+Y+~Xv>fZZ>zl#2Ly-|03z$jQ z$|+!S1msZl@YB3k&m%&Oeo9jlsL~+tgqk`n#S!QVkbOA8h~+umNOq>QqCKn}Uaf-8 z9zln*VRTmozS?`Q>WrO71_F^fgu)9u{K*F{M-qy<$5!dB&(Z#2iVsl z{A+@3=rLcnb0@& zZByKG1~x_Dp&cQlzBB;z#w{FT2f~`SX!;7gaxItLrI4)8a7mTvHdpmy9e~gbD`YD4X4SSvkXP+QS?xi`t(F`DNI`5X zePG^1EeOqYIWi_@!2ik;Jd$g;17oDF$x5`?`E=!GKBe94iO-R+1C*vf?Xu2&_uY&| z8in09|7j34%`Gwn8H(Wj;SA5GDh+#+qIOFT8b=8!{J(vM<<{L+{kiEy^1B}}t<+<= z{mbyGPe#=ZlitoaN5+Lbw(ZHuuyoUX5TxwGXgS|L>@ImGx|NFbkl-7=9AtFU{1-W=9op-g9_(Y=F-J*_oD?b;CDIU}^kwJcDDtCK-!pUmZk z{l&-zyy*eZ%HufC8_6TX*nY8V9#i~&{Y8c;h==vFM6i_(boE#P8 zfVV&O*|DQVNe43)W9`@c;+PHSJ;<(`^}eC6ROV3D`NriHm?u)NFO^=nf}yZm5OS+H z;bj=fVY;AU}&4L`C7}!)0pwyw3OAtA=3DE9uFBUS8(bn`{8(O8+7DJ^ z<9n%4#q6WH7w~VFpuurWw@7eYgH{HQ6j*hTCPnaY;G>94oiRIN_iMRcz04aOc=CF` z49M~mqnZlJe+6RJ?Q-BL)he6sdN*?uB+h6 zl>I8q@2!b(OcI(uI=PU3f;}?n!IG6PX+1~Tv7x!wz&Ul*xo~{}Kl7xv=r`TryZq!VY+WYb>k*&NDiTo$d=UvG(X| zHJ`SLo#lTpUq~l%Qe!d{JMHmA-0q`kJwTYL+{m;0nado=`|f}~dWTt9U@!EPF7hcv zPgdw#>AA}v85L_J1hw&|)0}vLKN-}ZVO{9F$5JJB+}Z*wmH*7yW^@R>Co%I0+Z`86 zg4u!w7_kLXT7pxi^DO^R!q*+LC7Dgje^g9RZKr$;1I#+1Z@I9sxR~<%;q5TtU0VMq zQha>51N_ZNb`BETRZkizUuwi~Yae2PJK+W93a+<(@RA@t%4>9u@W%R$m>Xos(`d*C zpY1fVRUsJBA%3sh+Qci-Bi{kRwq2sYq}zk_*NwIm~e{zH4VA5SGE8Z?Gad65519UTsc^r%B)+= z5mei_VK<-6{?)m#RrDD7EL?Z|&>|4sGsrp{xOsJ&>`4EhGK*2Se=|WD;k(_D1j-*O zd50GPG9}=C2&yrnO_Gr80M)Ta*^8MNpt*aPs8{o$Xq^KboKJOb9;SL3KS75$EkRE* zIOP5W__Vu`D!-d*&SE!&%GK-{!#0A`uNTNwveDeZvjf|6Joq_ z#`F{eBD?I3N86iBS~}d+R%Cc^;}jBKa;PiV2C-03xW%lh+epPkM5#-C*#FH5nE)3j zsm+qzEQPHku6>Z-`J3Q@(}R#mcNS)%I&WAZe33X5x;|dY;nLmc%8o=*zoLin``Lpg z0p9wzC6+m#HLLP-HxJPs-w%L$j;RCO1se$4)_(0C!f%H7+r$}n2OF9{MC_ay*ch38 zVb53>jB8mQSHQtceA8hcDZeguJ`-;=hrs|L1Qu6c!ZQ-)z^QrGzulBmKaLq@s`F;- z$?&{s#0Vl3dzBH}otxgt^{JyqnXWxJ1uSP*@n2nbNyS1>gC?xwnO$*dMXKFk-;X0R z&)P0vLytp8e4V9sw_HH|(FUKz_JkXY3;b>t|hW(uWR($LnA~S%ChjoZA%S&T?g(m@b>DCi* z4-_BVWObA$3TDfnp#>7PMqQ}`&ze3{O-vmc{LdbPG9~d-IEx$xwHVPfC)z!ARK~rQ z{A~_vLvD5Xc=mpG&2LXt53!~LeWzIP;mA$u*!kDV zF+6yHd4%=9482rZV)$~fE|2=;7{rg5@Bj|2EPa9%gG4qGkz9|aS2y6Q55{GNm?^17zV?e z1@vJ40>YbkQQ%D4e>AX~ukndzKL$XkkRA`wTm~njiVl(h&hu^Ifi`_81__RM(EObl z>%p>-!Csuf5Ud<)OzTHptK|-GFyh)1C1F?X!Rp15K_~7ByLG?dfNfD6640#Z-KapN zu+ZeT1b?y!p}Daarh#fD>b(tRp-5w}X5qre+RG)c#ZG#V0I#NGA@N*6a ztTxZ|W_XcB@MoiCUm(9-;mtidq&(5(ebB9ooNc?9)MBW4G7&07eVdy%3eBpI2TlW8 zJ9&YlY=wV5q)`50DJ!=Qy`=}O?#uZ&Vy4UKX11!MpEoC}jAbt-1CA96A{##BLpJgo z9m~YrBlxpdAWLr_e|5dIm+S?qL=9%c!=8Ldcxmj}F$U|wJQ8QgfhlMbzWtRoEqHp| zzd`qFvWE;pu%OR6V4~XuHjC5>3j%fM7 z#Um9`K;zIAT=7nVxawOUZKhU2o4#ErAp(m#U~T-nBFONC0dym@^wq1g{l z5I4cq-H4e>RSF8j%?QWrztn4}*jPs%YN$hkSXFHrHT}*3UKZJ#GIJUlWC1kA4~|zG zP;pXfz$6+RbI#b8GM}>T3=ljXj;?x&vOcep?Yk9cSxTfSy$LFHudw?lBp9TCVG}@h zJNy5+zOyYZb}7n5>pwJRn+>TiDN*;xg;I75wg(7``f<{@y*RlBuvHV&L@QZF?XkiA z6Sxd`YU)xg3he%^m>#j&;CJ5!vL|TXUevn5=ZfmiOzdBjuM6{Q#48HI3%V6R`_KP^ z?f3dHcBDEUTybI?ZiCTmoqsEeT(HH`>A(HvczbTowj2h$q83S-$I26)^WV$@Ka5Ky z9k3pDJwG5m;Mw>sD_Qns!Q?EmweF90;b4x!m%`_!t)XAwV-Doofyn!wvl&*PppA(kiU#2-#xaqyzh-FgOg&`*@Tt{~*Bug1WOJKoQYzS6ooG5+T5pP`CFC zf^A~@Xj95-b^OtvzkQKX6ie=fqYe23+q3-PYu7;LoQrmF9GzN#8}ff$LD&71HjhUB zP26)Zdr>6hW{A-{9oy22nFd2wPOHVN;yxI10bDL^(dFKzKYjF*9cFA<1HKrRv}ZZ{ zbPLCi#&!sFcZ^Le9TdJ|31GrA&KMCyi;{l2rxI4YWtW<+6mGm+o}!pQWwzL-4Qae3 zYtN^+vn;28qT53K#HXMkGPQLia}cHK~ihVY$Cf;2HO(EoR&Sv-B>Gt=9|A*w?Y&iG~>(KK2Q$~ zzNOUm~!B(>~{~VFa$!#kgb9>A_)YP8N!q;U>kb2C_H## z5_vpF97PUnGJQ-Jz=gFNb88i&I6fA`BVa-B;H-p_UAO$hj3~oHTZ->Z`fHPL#Xda* z$Hmg0`g!@U`163b2^q5mYsGthyf@H2+Fs33BrTnu?TfPeg;Q3m$waGME5bFQFPfs8 z7mCkc@%gW{ITeh13LoG($>3(fPfJDMEZ5uy2RtN|OLFERdMcR+&0wq>sr6s3%bWog z=e06QG5azL|K<+myJE;PXvB&KX@1=qE#QJQVMl%PEEOroy;oQ5;yc>?c)&{1Kh!8-K- zdMu$12I!{BSCosfMUOP1G_>Y36p~yDF>&^21#+MTGE72MiKoOnIOJEVh#n}_*kS!j z0{p71i|trjKozX}ETW^a00*TN`;YRKQ!lC}&*lNTY9xhS6J=mbj}7!h*3Us{6c<5a zo`A*|wzKa9avw%s|HF`K$7%^SOy*iygQ`b=iSyNEkh%iclZlnd-dfV%1HffsANX!g zXpm2xVSCHwh>=%H-!t+ z=vNKR5f}I*fA{?z5;zE2xZGxnBM4o@-H031wKUoGsDPZ(E{gc6A}w&U?x*aXL;c3o zLeE1S%q9(uYml?<#rG;snHK!3pm;n|9FreBH(q^fUS2>#(QP34o(BPl7A#bU4b#NwWy4!XFP8wP{*KrdbTLnah&~z6vxHJY@qvqGlj32`{6>S7w^tZc zBTzM-lRq;PfXpYt7d6$%MSu6}BvbPf*1E4p$Y_L6!)o32jTey!m|1r>l!t^uDscg5 zwL(cj(jBjZ0Eng-3wD4SCBotzrFx$6#Wn?U+l#mSr*O8%hxp>gNkSR_AB#aOnjMMR zB&y_-+UTqd_9gq?kyx3wYwml=$=r9vSJV{;eh|p%vxmP7qhzV+O=`gaOkEHJ&`t!F z`_;FnP9&&uAlgfg&vQ!5h%=1|GAjEzHSMmdZZfg<>UXu~@e*8VfRtr5|>@8NenC zbF+ipw?xD3Jvq7^nX1D$hs|B;IRGl`XRQ_T-wmkr!wiPhmj~f!CS#D1w8{h49n~YK67((hC9JI&5&%TKD8!*yWyhRBTlNeL8YLgW z)5PVwx{=bG2Ajfr$74ta7qH+Uzju0|E~QntN75pZB7ugt>nOpa*?If^oH%xk?z=&* zbrO!=e%2RL-ADpB5KdH}jdBRYT*L<&FSpL!OzHJJCdFr)E4Pcb|ES4)Er@RFoiGrZ zRTWuXuv1tjCe8u^xhifyEP{ax4>s_LH9yP;?M_6lJbzvU2Rz~MaOwh+e(137`s&RL z@JxDfD%k|-XzIfTDO6_v!P1L0ONOo7N*D&5!{Cx1XLZ@4c2h$orIlIXtoWrv)z1@5 zX5w^_`o8c($?*cWe*cy@$ZmTfBLj*66-8;ae-kfReDg$m&m_;y7QkS%&KZp=8;$PP z^XB6WQ6bb4z~rZ+-an$%i?Zn}MQvT)nXd0IPfXVRGchmdG?7MQA$@QSt0}$uTN8M7 zV3Sgdk9GUb!@}m1A{?R($y7r!qK^-Lnz*ZcRP4u$VE@Qa)JRI`DKWvM|Lu)SN_zh+`RR za>bK9!gCv-Z2t8{P@;!fqZ|h9-ppK}3LbfE*lgW^Aij_y5N=08U42gbdQkE8jXYfl zOujfJ#+OLk)OZm<5I-R>0Z8Ra{0?bJ?P+$@{UsL3$ zi1umSxpR1o$d_&WSGEE?6OTdf!n%>z-X}R-ktTf8Pncz!b}jT$Gv??n=22Lp>HrEGa`Jc@|m)cj}2(x#VTDiLxy z?y)J>3UAiWtj}r5#8vkkhRlvAXHnsYcFV8KRV}~!-#Ylw)ySQRg7v=;=h$>WsFUOo zENTzRFyhd2gVUKnm13g1K`%iq57|<2bb6%@2FJf(mUvDB8kx7rYMVxSCW#a$X-kBm z@PW6pEgX-V1L_a3v>~g#?5(IzjOXOrcE!VJbFtst+(?lAr>VS$#^H^q;qc{98P?j3 z%!8tEPG!kS)Pc91QE6@SQYhUs2mjS>ffQW3V zvUt&t9lcb*1MebW$3Zy?5^u(SI^e6pM))IEm#h9NxT!q$6AJA9F()kHCqJX6ahsD5OEDi0(<>;b}&Y+a*HyVUd{1GtTnU zY2XH7eIIy8nfSVul^~Q^t6Lw@c+orjgpF9oQUuC-boJLl;8mh_`jy`Gr#ERv%;J}5 zf>fcvJ?X@%FR`iS>6Pfj+|S1~vrS#8eZ}-Z;PfByd(UUPa$G@J!f1uEzdFN5kpcV2 zRWr!Y4)Cc3c}zA!j$0wzI9&OHg|XX1`YsD{12LRc>@g~__CI)kM71uX{dYroobqp> zdNtnf7@W@?*_es@)Or|s5W|CfmWMUC2lupQ)PXF8EO01gYINcezux8qYzHm&x$7hj zJk;;#;_oLm8>YPdo(|C7l{;u=wJIr_|GoA!)Isae}&xei#>l@C|Xk*40Phl7KL ztWO7iCY+dbu>v&jFaoeLZReBQ6AP48`{FD`#6ivb;_b$b@^hOu6XtfZsf5Q%u2sdr>@y2#AX>u-KkMM%K>-JF-Qvpp&Ynq0z=SoMe#IxJ!5g+hjVT0E$ z$*%SLU$5}k?9wjuXJf5{S&+J^hYf+vo-s6TM*8k_Zeu`q5K_ret;60kdC!w z=pEzj?fkRzXA4S-sI~0$2_2Zr<2NP0*!N+p~!qDf|U&oW4B;s1bgc|v(_d3 zv+VwZZppBS0u)Rj?aD47ObP)TO29H6^N8{j3K?7>P`w1sJhr4@KwaYw3An8aP(}@P z_eV@I6wb#*^Oy*BAuKI@ZRK?wILjS+R|7^gU?X1?{Qy>N36G@obeBB_K{^U}x&9L% zQ#o>eUsO=ho{d|YeTgvxY?5WRVJNv>XT%MI7bm~Dm)3)1ux^*3*y88hQtD20CGZ^y zncOY$su0p<`{Hx%-MT`Sm>E2z!8J3tx3m|Kpfu00F9$*J3TKk-RCS)4F@&i_Ery|S z<`rhF*t2VLIQ=C1TnIOhDFw{o;$2W#Q{sq^z^tdxZTFMHuoloGn`Kfl^d^~6WLz*| z+UIB?Dnd{qU^>lIH_+@VYy`jEtFPX;_)6K`sChzEvu$U8u(liVK(Nx!TAPi*i%Hc1 zZoznt@KaCneqkl0ii4)siM$kq{8nZvwEPp(DH1N^l6yTo00)3Ct_?CKio~()?~cz# zG&dhs0E~{{+lV&F&%nfIwCgrOh#-q(NfZP;pCl7n4RD z^E79m`b9eg)OUFLhXMX9X5J!az1h|iS5GD6jEFG7nacdkhLHH|omc`HN~6FJc4Ys~ zd0suqOyeDX-P@?N8br5q9Sr;o|aFO7f z_u5fRLR^Z}DTX4|Zl1d4+m6@HEcf}c2sdp6lY%dx1-7m-d3{tv)I%fE=sf+3x!}*F ziEk+=*OL2zvk(RJa+)8G;TDXh)97osARIl{ckS(U?m=#|jv*grzz)?%5>X?4FRT8Z z;WJJa1AouM9`%}dJV(2dMdl|r1_w?i` z$Y@(fKucFwB~e)v1YQ|Tf^=T|PYJC!Bw)m@ssfEFSya9Nv& z+1?@L0ny=OyN*_#0J@WGNRs;_bjzXby!pa36b&F2fqro{Oj-q=e~Veq*jnT$Lja-F z0;d(Gg7}U5lE1#=)(mEFcGOr;&9|rL&3~*C076)!`Fxp0FdW7=eIcwlMs|nY7*taI zkrpen8H`q|IU)?<5{yJz0PmDlesjc|*2PA)6T(Z!bLTi-$7wNkjVdF24EHWm4@8!* z#uMl_w-N{1)EluiGZZ&N6co~XLfiRt5${oN z`-7mTIIE%cN(Tg-R};n$u7e@clEJq-(O*e!3w)R|s*Wa}A2wFo&61rH9-0RUd2ZsL zq|4eF7%V8(V$xq&ejMuUv$Fg`UP;lBe4qddwYraqvZ*|oHJhQsW&r48tB22lh|vl~ z{P(hl6j^*dLbgYP8{cR5auI$i3;NSECbF7w~DgFV!s* z)KXflqjP<~+}8}YG>R@cGGpR=|4i2{j2p5^2SyXwU?WlQ!f7;p2e2;+b} zua<==Kok{kYaI|B6iQTl8RHqu&|wMkQAw@J+3LP9N{=oK^i^7M%#;*t&RW|#3Sc1* zH4r!N%~Ab(X#GMF$LP+|@KSv6jXfLCobMFJg>RIiNMEp5OgW2VHxk;n)cV%+aIBa9 z#=P>nejNhFSdEC0*Rs(7RkBuyL%HiH0?P#B8o^f+gzfOSNxS>W{-r_cF8h{p7qVp| z+f%tEK*8X!{}}v<@y)6d0G)(V+O|#+uH*|HUi*V{itouKJ$P!CSE_Zt+liW;b2+i<+48^s`*qPIS-@Yu`RWq$ZuYIk%Fla3bP{0%>jnv(I=(U%-fhNH8 zcysenf(6+1LH@{7&7M*syG{z=c332%Be)Hy5cOUu-1-UiwG1GIjKOO}S3?I}Ftufn zQp^AX1ln8rPpbu}k{1hAn0wl_tylqtzcx3?^NZGi%R(ysMfu#4S%~CHM4i<~I2>a|8h~}49vAStda{D;;Im~?xZ!j$f8c1j3tNK*wT0Pcgs%NX z^vp&>wj*Li_|}j}ayDrJ6QAZurF|gl<3z(PjToUsjK9ggEk!q!52L~P4_#JlJvRHK zr#?RDpy^7fO|Oq5DC%%tKy8l;Og89+>C&HDZ0KXk1ynd8t2|cp1A61??U}IPS7VD? zsC7F*<9H)_K&LQo_*nm3XrGfzWj~=_fz~I~s`bZs4^E5h-9~@P0*PPMx1Qp3l)Cm{ zI;R3l)tAS_XLM(gR=Mty!ii2463mFE6wjkcWewv zQi;P}ELdS3$r;{F3c-q%ZJuvKSJ634~mdTUK z(TwT=#g3%7Ca|#6SdrF$U;{4Q6>$RUhR9xbtSKb!#O?U&K=HR-k^vyg#_<@2ka|!A zW18f5eBOjX`_|?&utyTtF(+>2ii%oUrRBo0N{7!k4PwB6Rs6XncJ5tvBvDDJGXD&S zpoF4G=X)Kfzl=aolLe#wYvAMlrk1r8!BzZciRkD)7C>UU9S*h zfB;VQKPx1_Gw7MY#eWPR+KnMX`VONE!lU`;fs6#1rekFrJiZt&q)CgBU=(sN3e~T^ z!LQh~C&~+6IOm2<$IOXehiOdtJ3(nk6ZARq^h8fyw@j)yr-k=Q+yCxoRDp#E%w5(m zj$W-p>1^cG32o|jeo(v70j8Ulcy8|n739;+lUER2^mnrnXe;pZ3HL7)-g?dMw8SC!td4G_TR_({X z;RcF_6)>)Nv8FU`=lm>W0$KNYEqw)|J+F~(VM@0@|GUFZz=RHNw~X-Z@yZf9w9a?aMx1eO-hWoScoWYk_OcFJ2d$(f4 z0oY_Zp8u>2Uy>=Iv;xzYhq3pbOd12tN87wAHrbmG+Bk25e@ANYu~T4p$&K^F;}lC6 zhrb|%K7ln80MBO}=We-=2cuSD?# z2D7da2Z@cWWLb8&R6L#$e4bC2>uX<72V(Ol>p|tjeJRorAd143JgOFOWOCcP+3yui zWgH$7xo!Jr_c8?je6$$2rd+GhTTxcVKqF!%Tonx)k~rWw5eYwOpUpoA1mbNGsJ4x} z$vsad|E#ELvQAk=X@uwrsN)|Rjpq|WVD4L|!A`$|6A6i{c0pYn;yZt7H7vZmqRpI6 zyy}$9SrP`H-mDx2cBz8~)jV~c7dx|?XQ>GS*A8xbUt4}EFv+pttYoPpI^Ha)r|Y}h zfe9;e$3zAgDx=o%Mv0&ATAvE}CeI8koD`kO27jSZHH98t&*$a9MDeTnZ+Z4$n;8Co zkfac%G%9Ke_oAhBuQ68;;qvI|vAU?lz zmV3nNr-#Yc)JZuBf}x9-IU^a#m;y~vPy{4kQArQ$?@SBK-{|BHnIKk;^6!>-V!7j# zZu#l+08D;JB#kXE2#s)C0uou9{Wu_p5rFKVw3dckWoLDAk+@lJD`+f3>24Y*zr`pl zQ}PM>0K63G08C{yJ4_YeBaoR$zkU)9JC7pS5{Jruw#gONPu45}P)~y1)Cwwx3w#=T zCe^avpFCtBN3%hp2UQrrc>d}OfPz65Vf7FMeKx_#PeWl5$!4Ys)k!ArH<&AcK#H(M z;ESDRL{%kIo%D5+AaxKqPr(b|THCenjOLtr*8Gdes;8PhNz3T9FMQ0SgGk5fZj#oE zF~tlH_R;!?Nlna`4$3}evrTfGd$z9GDxZq~sTyD17#POP=Ku0BFAFo$r6l5R-}N4; zVTG_SNxx|EdhP&TpRz_XO{)Xh&RE=`8aC{IW@ras1QwGre%MK49yfY}5BlbTSm) z&eif_H!-a~5u_N{L^pvZ@RpRyW!E!_Zdl{sGXebDj@41nNqtHtu!4Xrjj}19BN39W zPKtcubPHpa%@UyC3DjMcARqSqH*g%*|Eapc(!c)N{p+KHP42U7ww)mXhpa+i>&1M3 zMWV&9;_K5rTBS(z*1R}5$s^+T16w}erA-eQaN;1@PjpD1O)Sh$!5hGk8&-OW#@kjU zB8c=X*96{=yZ>6PamNX4U3xI`rSE`1a6tNa1BtAfEp)v_$GO>&({3Q$3c|81nE!b5 z=o*S%6he(qwQ`+xTGg2CbOvLxP55;!U2wTrZ#m*jZ~yngW~ItVXC9^(H#k@N%dy-T zWfK*n6a2`C9M7f4!Zwoxhw~B*_^$@6_5s(0wa7rzb7(9~v-VzmFM+hf3o%w_Q%3O| zg!0!uumIu&Gg7~BaqXy?$bi6cucHQE0X)-_ov5^((>c?-N&J2ITi@n?3!o#t;$q2h zcZP`RgBg=EoPW_m6si~RCfKWcOAzLOzktLujNf~&fa(FKKr5;NFH)5oUOV7Y^CGml zv8=Ryc2E<*-8D9rZ;`C85?g^l)5!k2=c>8CWB9bGmrs}5!oU#0kxZbZ)?E0dvTh8S zGtmuy9Ms*Qpz}&>g`@2nxsTgvV;LR`w#) zr9e}3uI`241^Xw+7xQ{=6Zhe6XR=nBeqPqr{|<0~trh3zKb0FhihNMHc7El1RyIg% z=gmr5*Eph+-!ll$>!@|xd+*C(+6Zxsc$zSB<6{}D(DAUMvr z=zdlvydbdj0M7Gy(sgKj{F;h^cq#acSkn1TfTABnn!GI~H2_Fj%+&e@d6+hCDJ6tG zGDJf&-jMo|Y4xWBjQ_2m`HN3$X(m-=Wr0!_W`5SFA6f7oFweQgl%ZFiXYKcgtciX&XB=B*337<;h~e>?e?G+6Jw@bkByp9^ngUd8?SJ-|@u#VluZT9g z_KlRc39c|kV%(B|ji-Nyz#~5zgQ9k64+^|0s#1D91n3wT?#|zo3hOG#v2LR0Pwd$5n6-Q+}cw9yGM0Y6|hGs z9Pfl0x3sG4%|EvkJY5=5x<6{oiv3<=)5Bu6H3!r4U%%R7y)h_2cVg=`rdw6qb^Go? z=tVu4{?{9%L>bIxQM>Q zU`KXdL>AxMm@eBrh1`QX=A_L~0rj`tIou^i)+-dBSA-mph}F|fUn6W$$UPw`Fh)TD zY_dH7Ma#j%K6!7Vn)0ea2QS1p95nqt^QCh{`9U2eXOQA(n=%=QNd!l)U{8zn+xS5-~5NcTOjJwGNxubKusAC`3Fr%$7r zM`h{`ErdYxT2uTgQwjgEK4eHx}5zU21@uhVr zcGcC9M+&GbmHUu2afbCc@{gW(_H0#1M~y_`U`S7dlB&yN8+m~ir+~^IWXNuMY|$r* zDNOY?GK#5qOS&R92h#o|+laG*1F(cWtHb+~XmDfuY9cRxxqj7N04C(bL!qqL%y}( z+4QU!T1R_jQ-r1f0j3El#&Cf-7OMzVQ?&4M)Uq^7asmey7x_br(9EG0!Lb4X$af|g;D%WAjK3%86ed58 zhWB9~d3dQBC{GjGoXLo;_0dAWaR2R_{A7CL=UseMs1UKaUSHY26^C;%>|Wf7JE(p| zuk)!4jt(Bz?TV&ZLn$1$dg*92Za8m+n!Hq`XdkYS2-D6iFGF;hk`9w8lp6J)r!kIe zdpRzy|E_0wNEknobXBxpf&O$z;9Qi%6pS>K{q|R??De|4q<^QuG;&C`pumE@-_mw} z+6%m=>7}#_ONpu9NyuHxz(yW^2!e8YskWoCgT{;vGJM4|3>laYmUuRY*UlaE3i!Gh z>b0wSX%$i=u=)xxoilN|^aaw0QPFuqUE6SCp$QbSl@MVwI_4zsUM+?w8hy#KLt$q8 zs3Wl;%m`|70m93K^ITXKpNd{=j)b1j@BaDQ#hj^oPVdaOEnC$+(C$dummoJI&bSdo^kxCRW5 zyNV-b`&Ssp7g^w@k2_p`u?QoW;7D$6-V|8{yFp!xS|Wh!EZYoKDb?EBXj%~f#MWiB4v`{UQC3ew zsv)|CqILzyNP!O>KOd$d#I2BU68ckvB+e%}>)j4#+?4BD^P6As@|!ii@yfjs!OMSZ zeV}#JmIFd!2%k*!JQ@nqBg%DmE0Z+i8epR2xLPWcrLUZrg(&4w>rPfb8ZXm$H*yFAL3HW(zFS#0{qWe+5BKpKvFbXRQ{GZe+HY@%l`q{zvR8|O)r z{OYzqE!aVSM`HEY@RBcE8}gFuN~Is8HXDy&cc>5KJIq1a_(vxY#siK$*o4NCOKMU+ z@^hYN&)p8_&dUfO(vm-uP$-shbm!dAR?@ zz00plOR=7=yQtPA!+N6qA-G|SQZU1xp4cRYgDx)c60yvS-izMb_eZ3~uC!RjoTQQv z*k92qultf8tdO}FR0?5{oS*EfW$mvt+`d80PY!~26UbYI6oC2!*|$-C3(1Kf3N@@T zkXA_%xon3|8FhC_UTJ>$nIY%eF5t4rgj{9&>i8Ny`dQ!D^r&D32+>H0aE2tauol5H zE+bB_gv|R)^{S;+5s&hm8zAPbsCN zmXb8Y#=j`BOUp&kH6--u1KIY4?yG(t8eDRLMCREcoLy9j4lLZm&ycbRlA+m!ym`@-vM_#=e0J?+_tO0SftOw5R z%I1Fas|KtS#t*DYK@8s11lgx?_l~t6wHNE| zurY;e*TH*dkUe;?nvZ}3>(iVFeBYT5Eg$ro>BvC~E-{OYD(b|clR(F-cc7TcKElE~ zl!?dl9Tqr(3W9S4PV5OFRf+TBV<+cp+qjRuebTjH6Nd3pyG2v6l*SXs*k4!2 zr$$>EhvH=1AsIp&Y|`b(_4d=27_|I|XLu@;S@fw%lfv7Z@#UO5N1@=%EhsL|&I0b% z$aT`@unzqOE)W=xA}u$wTrA{bEIOGUG>)#laF!aN`9hPatS5nQf2+Ag09<;^xh#!ss6dWOf+< zqwZzMh|ElL-kW)%4G41~z`cX!Gs!fE#8kl&Hb3B9Fr=UVRQ~<+HvTguu3PB-VDPG% z7~5U4!J7;$Prj2F0kTbPdFT_^Z&m&sTdMpDA#PZG-<#E{AFm6a&@dgzKZG;kNL}0hf?wWfn6LoxQBJ3ir8y}o1%<0MH8j)Ah=PU(SD~d>7 z?b5!fvtVltxU00yN!&(d&5MVeuq3Z%4rQx1;mM>7@qsbC9Al*(_&qoP`|Q3rUbhGR z;)V(+jleaODOA#s;FCI3&c>bOgPO&Z&~LIX95PlYjjm9k%?K+50q@`qNN+mxBI61Q zOj5qmurav1C+*d@-rz<$*57d#_URXe?B+S$QZ`k_DY1;(&OQZ?g`grv_>5jQEl>tu zdaVSWtF+u1@i5ymm*2?Pw6x_+bEr-1yrgC*?>`X%o4cm>)|eA>kY|qd6W$;&enZl{ z$t@iC;5CNK*?9zXf5isu#}T81xVky!w6#n?$s3O?<<86cqhY={81^K{K!H`eS8X7n z)kBdAp48g$3xxkneB&yY!(10Ef@_e?Brzs#ba@qXP|vQ0%GPS|Jz3*M+1=o%rf`ftMNA>mHi1ByhQZwpY){7@jSc9SpN|{!$XtG|&L9!J+PlY# zL@WlmBTKnTG@s$<3vTAqEuVc*{etX_~xj)ngN0o5gX`D0f zuJj6lqeQe)0$F(R8ldj2Z>(vBWPfONlx}eS}IItIQQdWM~3&|)pLjt0i98`!@(MI_I5ZNdi?7_uiYy1bi~}{uukE(dRRc7vkvDAN;7PP z{TRv!+adAN_zgFFY!sb=6&G25xv2d82}l}#?*YlO;_@%M{PNmSQ&D5~!pgfVVwVC2 zR(vwVDkrFBfkb^{cT_|+yiF;yk@lQU#7n)>eXDSCy4|k!fVo*&hoEtDArP#RQh!J0>G|I5Rn8{56j{i}@0odaA{A`D{M`PGBbG`oDcswp4p%sLPe~I) zb*6=HmnsIucLZb4QI>OedABv@#H6!>xf6{rDUDvVNokmkS-a^)RkG9jv+r$ao7mv> z@^kh)2`7}vXZ`EdGm_HK)P-!v2O`d8FGL}@y_ED1Py8FW<3F#>q<^JB1ca)E>Cc{{dmTK}bjfQ!lhUO} zY8;X>ZLN-S2-SWhiiA*MDU!A1gU(zBRA~3b)S#6PS?VrNvEA{X^&1$4L?Egp|E8^W zFQpjIA|1#@OK-It?(-Hrkxf+NSNs#~0RKM#z^_kw!Mm6aySW6+tn_`J&4&siPNFpO zEH_q*cHEw6oTZbC8tpxGV0cDTiCP&w1PuO#Gq6)MW>RvJEU-fz;;Zc03HxzSgQh>V zgYTP3;=#%8!jgWES4NF5@rSH*HE@;o4wwQ-th7n@NSsPmHID#IvKMk*Au$tCZkZ28 zpBT=D)+)_au7AU^6lXc0`A=f@Hq&0=11Fq(kAN(lT0`+hUT{e2Lf&r-zcK6q)rKw` z{+EuTrrYz5Jgi_@t%n+2dQ{=?SIZW;4HCTNIeUUUPy9glZjF_i{e9d1MCGdC1@*j{ z5HQ_HZIu6ok#+oI7x(v-aoL~O(CljeBQZj}cuyzz{`?FGJzI}6*z375r4kB;h^jj# z%EXax0eGMnu@I}E35z4U68|A?mir(t`sz%Opo|$GzCPC`9_~h5;PpM?^O~uvL zqsP1MSlEt&#=zZ)nUavG4r8Xx(isB$N!3)cX@3n^J|$$Y>~B7kzW(@q+sW#RFxvn3 z5Sdaw*YF5U4h^b{uEe4tBtQnn2-PJ!ODs}BV?OO+3=xoGniyA?W?!y;&VTc^8o)hl z)WUgS#J_gm2R)i2DQe3*j~_w1Yss;dkZpV*4e$=tnvY)aYL5R!l_~8=o}oz8`9%6AMv3HjOaTmz5aV7S zT6i-lemFC$lPm1ObMa5JlvG{30PGYfq#H1;(j&tsaha*kuPiN$;DEFFR6BBPZ*-+^EWMBJ~Y2EqF~jwOY;)jFlukSk9vL|IB@$*LN`tRL}KcH*A+ai z>0_TK@zukmhI>HyN%2Y@QkL9qVr$p}cuahAFS-EF ze{s{k`H|-ACtrKcykEbRal#+7n_t{O+tTDu+aI@@;_4$IJwegY2J`D13o%CK3Vt6% zq0eU)7xpu6J(E*Pmg~Zex#%<$v8LR>e0@%JyywY!7CXl>QPwkQa0uqMkyw|;l*2)N<^ zTp;aUzQevDFPSPVdLLHpVXKmBoU4)XY`dCl=nDf=3Rv>+ zNh3b+$sL|yHdhmk83E(qUEzjwqw$1Sj9*85cJ^BB&Qx$G{mpM zivTa&565DmX+!eGPTmpzYDUZ9@T#6IL39J)Zs9P%QbGEWt#ua>AbIZD7ID^In9o(!EY^gvc zY>DEs{Y+;&gD#AF*4tN)I@Mv{5o^{;M!<*!x&Z>l2^o<4x!fsC-+Dy3TxgMD6mi5H z){jAR7q6a~3(_Izthn`q(tW(i%Y{O{V*Yis^gAGcCFex@Zt>MTQJ-8-bj@))ErL!V zP9=}Q&SXmh_>q|@a8B8hG7qqG1?GkYQwBGlld9Y-B|_v;W?I;P7i)9Gua6)g0m8#J zV$+cxk#QS2GXaDGkWm|629(m{4ijh0#wsFWrwReTS<8QrfyQn2UygNxuI|Vd09F^{ zM4k;Y7pqEtq)xk#Wc8(lvmeIBYvNc|$-dAP)F@|!JFxUSn3c)rB@CGhJC_YR=qEMw+JQ z0H3C!3zfn8b|hA@oNzxcNA^>S{ZAr*f-q9`=_Pf8BlFOv#iv94qMw?^k*d%Hw=A81 z`0icEN+v<9uz2KqohBow#6k#UmynmV6})LvHP}$iBw8)@dD;wA;N?wji^UvEpquX{ zoi>&NF)p2=0ROa`t3=nH`}I|##9TH~Ji z5EaM<(-zJ9)hg9*KEa%(L={oi>r8B|wz(%CizEMqlFnwovlzucy9y8FS` zXz<4O->#bRuQag7ap$tOG}Q=Y@_lWwhuy@R9U-);&1m3>dwyv|bxd#*R=i8h8`^wU z0w-8XvZvj3qohB(ich`w;htNyEXDDHD}2 zBD&|x zIOw&@*JW(Ji?E>+i&-krS;|HoOYH%;aEBTF*6ve87*eQr#7krRK5JkaxURwE=LDh# z;&yBgg&_P0m>^7nKSVB}5kj@A#%dj(XHwoF==YhlE{h&VZk%iPO5jKjZHE69z0?6i zHKKTxPbT5+$Mi`NsV4*&ET^r1z2F^{UTJ_}cap^SN*QUt3IGd?uc@gX4_Bb$?pN2y2Bb7Aw9=2uEte;5_+n zUVapVm=e6>r;2X*^cOdhod}WC5UOWnG*q&@)r~WNSKQfUB>r{3GJP&)PuLrLEL5li zNCjrB2>*H0?u)DOOa4><1qD)ww#mZLn0aVn^^DYf%lQpTlAzy@FexLZK_N*&ls4*# z*`X^zFo5INkNk0vAd}5dB$uDZVQxYe;Gq7ekdZOFzlOp?nQgSi&PWlo7XTT_*B8Xy zF3hEGCQ#9qt?QBFHxeG%fTFGW4oB|lm>1pg$xH}2y4ch1Oyib|i_vtfNrcV9kK!{( zwZv0&$nHXbdku&1zN2ezY7jIi?p&%$ z`vf)WrS+BZ59ewk5zwuuuJBS3FC6eu*_%_To(zbUf?*9rbs#8W{KXWN4YEl%RVX_EjHMx0l0VTl}K#SY6&{Z(eH(rAUVHDFN(DO}Mlf!^T zfdwkIYzhd!FX1x!PyZK(Y>J?}c%T)vX2J13vj=OcjTG-4opAZ}G4bDtHgQP7eAC^WGO~ z?Y-U$xNU4YUJ@@ff}oGN#37dC5=!a%;osxk>7-pr<)w$E=6+rFan6ae#j~eUO=*jD zHKtQDF^3gq5&qI~THjHytp6Mpz;>cXFPKg>6NB*3y^VE;`I?u$E1QO%+5Ms`-syg}37a*k|Dzb28 zF4-$Wt#LT@6;mw@;w#WGwjUdmy)yefVj`~r!)<8_%Bz|xgI(7pZ|jjZKb(OzKe&0y z3%nPmr7E-x{f7^v+%&&O_A8l9u)Z%ItGNRAs^UXWzQ`wTV%;#F1%b#wUC-ut#B(zm z#9DA!KC-~Wc2YA8etw-2O~`V8PCv<`U(7p$Eob6V0H7zQDZ?3&lD+{1b!@jthb#`;8EC^L(4BB!ie zdc1?M00WBve;3i?Pxzg>gU9hmf5HutodXw5nDtmMuf%bqVBtryK64QnXEQ@X!?10Oq>hJsS+RBBq|2E zqmfkctK8K8jmQLgrYdL_rzCi%q@ARRh=}cfQ}yehE7y(H!#jBxRYI5yGmE*_215Mrxn_KTRjN z0*c>Z>$ja5DT&ogI_j{nfQAMX8|e`YauhYR^e4z@>9f^*pG*2e)QYKnGV=Y{#7;U> zP@aha^(;lxhM;W-xIRc1=b}6O`{LbN$y0}+r3GJyQTq>t#Mmw|ot_cA+Yq3KQPTE` zRYij&Tn(gl$p-lADW>54SWVQ^njs~bbst3=e-5g-DnPXsF%=`>*@$)Ik_-XUQ3%{N zcAF=HQnXi^TO(7Kc7yK?3&th*sP{8~ANGBq6MmFN4vDXf9To9lc*G&u?MH!*%O(NJ z$O|HwM@>opZ(52dU&^f2BsT(;3bf0;w%|5{7Or19gaIQ<%M~iMX4->|h1IoVeu_v4 zjO&IkcFH4_mYNFXfwC4g%WH3dBz1x_(2$NV1;ikE@GoS%zwdK5;fIkfRtu%fd)p@7hD?UXzx96IY;>Cbktrk zYs83>kw1Nco!hg#>>zHoSgVyl)C71OFFKOPE51uS#_A?(&V#Z&+IhyKK+w=S?b<3n zgllG~u7dUNb@f}1D&`NAe}dia%0F%Oxa$dQG>wi^oLGfh1Jc8W$IjNA&MF7LZ!P5g zS@N$3i>MCUM_{pNN4e-`fAx%EpWt|k3II^&{ShTkI>Hk!L5VF*Ay>;>=FFoFZ7frN zuAN3B%pm8NJA>vPjeB2j#@2?Z0h6@-yL#gm04~L5A)du^sQU=eTp^S<3C~q*jo&dW z)|^8hZl6)GR8Hz-K(F?lX#x;`b$q0FZ>$tghou)@z8X%Nu#xEE=}~Kf(7g6Nq&Qq( zga6S|o-EjOyf>(pXxh6egnr1_p=N^;%1gq1 zbFAk?_1CID6GBfH-Wgh)4XxM;_ud$+h8(TJj|l?UFPmDY67iQSbY*NwPxYgj#x|*| z+Ua8uz4GAJaxH06h8k7Lm*&Yz)3jZzUkyqC)o~O{XPn1l{Ey&tMWQ%S8@V zr1(DTr9f`xksBR1F{Xlkc9Vr(Nqgawr$kcGD;cnGg-~N;)@IW*EhZ)FIa;x!J**h5 zm5vw9*8&R2>aH&Xx-{%Xvsa@XQB!G3)`w8URE=1YZ8I&#nK9RLuvHpv4p0ERvDvkQ z{6?X3rk2QWd#lA<8eAONr^r%!cz%X$3g)|aFYm<+pNXhXGKV{^h>+S<1c?#&l)8Pv zelxt`)twqGJSp&-3S45u$r|>3xgy2!zP!MZwVSFY880z%o@@|0@ZikkHwdsTt&@nz zz_phzJ8SCFgxi$&YX~djJ@9{6LYA+0l=P>}`A1hC!p{b-unA|qC}y5rWIr=o#_6C? zL|1MWlka#^QzYwc;()x1gYvl-+V3NUVflj7;&(naqQ*ed7Xw1VsE1)HhKy$=<4Cf| zbk)6Iymf4f?8moVSl*nJIq-CeERf`$eBGqvk((xB@Kawv=n%Rb*ulGdkV(uZ-{s&d z#2~l^Dw_wur^yk+MNY`&!}rs1N*Xl3$HmJWb}1SS)JIivWZ|OQMS0pm1r1-ibFNvC?;+GN6SBQ zErEBI&9n<$vZ?62Q<(3Z^wmc_Rppw~0}lb&8e06^VhD=)d4V`?kw{}-!mTTHo@i~l zMK=aRA({hGQ<4ZM%GwLt=4%Qyq@##fbGX&mzU^q|S{5X#dD?9c&T^J3_^z1@`iwZBrTiW#buwv->y zuxuu9$ybYGOYC|z2DynNzy!$%Aqq?Y9H5LnTnNAM&@mCxux$C5tJ&^tJMNmW#r0WU zU|Yg=o!r6(W7j#!*>V)V((8fqtv_`wR@>?e0jV_y8uhAWm2C zyCA97Ttaz1!T*Ig?eKeF-Kv3uvkk@C_WN^-QfsJ`eSOMa3Oq7HNp_m{LY?EJ9SQdS z|I90|{C+(|)w~~5Zs$L&dO!#p*M2yw02$B%2IgY>^`k# zC<`@U0gtxx6x^+Zs%^M03y%bf%PT{(=Km2I`hMfzbmAYC#bO)wi1Ub&J^Q zSPo|2$Uqwp0Mq5YJ=D706yuq=5H2k6Y{q{!E3YUQk3`Zpggk{WQnsT*)LcdD3&E#e z2edVHYWQeSZhG&0ZRYuri8LA4a;i>Dxy+AH-#C_?r6YeiK_!AOk*j zK~#LTkWu4>ytsgRFT*wG1zH?Az!qNb!_S1Lw}f#rA`0FgEH{8@*=rv7o5=w@M3~I~ zcMe3qL^dH@e9!p5nVDB)B^986jH_^AupM3^;#m1ODB$KXGY5 zh}K9!av~o)wLa=Qd>Xj~D9>1r*@(*|zt1)K2u&l|-s2wg3tVM1DWUji!(!mgRLx!% zq@k0~h2A8_JQ&nW25!M805)x9LD}qxeiE1#h!fbbRwJYpoeq)qs-j{&?}}Vm9G&{M z+e(2t<5{-2J9@Mc^G={~p5q|CVslc(n5>ru5}`!5*+;wvC2_*i7(JJmR1zSBJaQgV z%ne_!IYkU#fTrr61)si9IPMrT50%2|;>JN4-6?=XCr)2qMa~^$4AQLEE3IU{XXrVD zj)>Rn0F3M^E1(iqIc_RpWB%=(m+&5{MVb_MZ|1+?243L_@>g+{)`<{6fKaU0A*R{0 z&sh*?8v=Rxvzxb+deykU+VHN_fBl2!@PPIwmA00v${XS>H<4jSfS=kgX0pHL_#M2< zh=g-Uqw5e%&Z}^GWz%JQc?vUs8<9S(3hZ=xUh6Gf^|KS<;W{fqaR|l)*7sLIrnL)1 zyLt!rqOP}j;EqzOxHdhDfGIA}M|@HNi}1D!mPnJubWOD+EH=g-<>7UdY+xkN;d8+3 zd|u5Y6er3VDz?yMvyyXV+P1RuKf$MIarPhR8cY9q5P#Kt4%g&>doZX~ORT~r| zUIqH*U!kQ2ru9<>$7mq0P2rEf$JjQeB!Wr%e@h!H;K0Y642akZfm1ijoI$3sYF zM{A$YmB6VUSkuf)TbZ$>eUzW&3)Z?&q{) za*4;F;BJVSpR@#I`f^;z#bawesV;N%RzR8oo#~-p%M5vI>Y>mx@V5nMQSfJ&>MnPm zUdyb0y=+@CnlGA@i6%|g$-wFLF1UWS3_iKDSxfFldb*&Ci7bB3Vyo7c%n0xn-a~Ji zC;)m5DrSKbDu>Ro_RA!Y^?&i~RLP#=2XqLnB&y(wzr~yHEe&_=yy*h+iGj`nkgO`B zt(fIjo|n`Q82l58p;)Wv@qdu4qf{d){aEm6M@GwuQVEU!`1D4P}Qn}wAuy0VXrsM zbbXuPojk}3GEfjrOHp%#pj@~2YD7^h3x|KLC|vPA$hQa-)RDg;Go7rvNcJ8NH|RY#E1JRr))oZO*on>^OVTAZo;FhwA9eQiScEX^rpFUKE?P@Bf;yItr)lqVs1WlMsu4@afbCvJ!G&}XFWdn2hwu)t867`LU zt0}7QRI$&{T?esM4n{j0b^META>`Zv&K~ot|K4X#TmiH06dq!(yrYI50n$_};i#Fq#05qQQVfEp?fVZwSOe0fDi{LHlMpYLsX zFUZtLz5WksQiow*7la8AyDHy;X#`9HsaB}Pl2EHQE9LnN2z3w4Yx@;ra{Fqnxsx)O z{LtHm9(wzNdh!7mMv(A#xFPY^d^j`oimwz&6wzqc&X8D1NU}2gm;ny&sReYwU7+uV zpp*!s)oUGc>!%u1N3G$5fq8Zt)VpDACIfe5zC)ia3Id|N{^B}>t|jZ1wEI{Y zOK-qZDB7_ueFI@*$4z;??d49A+qS)j2T=j?zumqD48;;N7xQlzB0x65WAwOdgZ8Pq zOw4LQBHP37+|J{Ag0^M_Ccz$veq=y(ka@y$hnR9_M6s1ogJ7q$DB&;UW7xTZw1(Xb zJqVPgW;8JPSzEQQVgvuq~&`{gh&jP!xS~F*h8CDkh$7 z!fRv{FTrbBX^7tH{K0Y3hZ(e|T^Ds4{P@e>9!CDq*BZa2$}VA_;HlQ{MLFVHs~ z--T^jWzz#pY`8UbH@w(-yoMP41T+J`nCYBM?H$;Oj9FXFZvx4&7McX>DP!Q3qeSx{ zZ3bbl#I_n3j5SBwm=25i;#Z|C%$NQO{&SFwD)3e4NNqBx_JQL>NJ4MfG&2s6UYcbN ziYP|$?IRF#-o%+lb~7xy==PIO^Wq+aJ$zfE8&yp0C9F)kKx7fMc>>V+;XCi6p*XP2 z`>AOLFHs-Z`M^VM11C06cF0Z*ajfLniVE1ZT4CTtCv4=kqF-Y%w8r8x4swcs6}rpw z<|CHBqA(vCsCH~2MR;@aIK6?`h%iL9Y1V;rq*wLZuxisJzksChtJWO;FT)Ugk(9qM zi7clbFEI0!!?^7GMl}!6fD-Ja?OL|5uh~RPE<>AcKNY$0omfLBv9Y6Xp^~y(JpseF z9KIphpqK+qP`Y+m9T@<1qfi=ItJqe+J&%+UI~CTjDFUaenJ+$2O(bo^$+zWJt9wC# zI^;tt58je8&?)Sc2Qfx2dNi7q@R47L`N_SjwK~Er!XYSiKVk%Sx55_ngB!wm25zTc z+i(jr!zh&D5HX?kjs&Im<5cuBvS4h{DZSC)EyrbGdI~>H_zqDb!lRrc>|;o>kjhOk zUiZzJUXv`eC7Hs+qnIh`ds##23i{$5uJ{=j>I&^NV9kWXBshM=e^7fSVQsLA`Zcmp z`$16fF!xrn@pO=1!H>HIQ#j%^t1A3RIK^`QaF;fI@IopjcBb?1&}o@eqKe~6G2bPd z(|14#ghRag!&Ksv2|*)%K_>ybF2ngJFL9+id0X*rGu9Pl=0(q5~lVnmFGjLe;&M*o{=N0R#A>%OZU{I$8P2WK=k7m*Nbby z!vIlg%=!@Qf=pZoQN^!L9_S?5jHakobRBIgGrqk$p~IABj-E$q^MaI08J6SIIh0 z{xngsH9xVu%l{Sq0O2N%ZIY|-^->K(WsFt};z05j#Q)tA63>fa|5;30JnjqT#ry=N zr<(E>)ne))-@EA%?QVzT!!-bl{M-_#%{|OBBN=3d&594B{*WdlXEf~-W5Lx@I%5Ag zOn(${$^zb;f6mf8w$?B`!{Z7S-|lXDHcuqiKHPDlL}&a^Z))#v8kloYxBX1Njz{(? zw4iA#&Tbg?bZyz0sHf7FEC6|;7?F3POx=%bRARJ2RI|UXb2uWo}Gf z?rAd(-et#>N-4{;fr`l|?!YI*EhfDs^xZT=e((;7F&>ilb;f~iNSCd_mO5dleNu>j zv(mU3XTfj(0Z{dblD;I`Do)*hjx@LKclDVrD*l%OSkh-?}pjXcunIX9;xk1M;93!Ot@b_2kq=R zw!GO{C`F=?PJGtP4MgfrQP`H^tLgh3WBuK3ix=j5T}Ldch(zsi{{6D*c(|Kl?;xoz z6x?*bC2^A1b+Bz-6i!;=69{x~lghQ0jj3G^%e+uA%X3|IQ~=BBIAb+M>0^^`ESaA> zQ`e$TlJI@`E=bzBmHt+0fCQ8GZpHrV?2Scqp-1Q)5qK8D(ssuLLuR@n#<4tSR(>>| z>VV)tAO2#f^YIacUh!BpXCeX3lo|aG5K1$RhZKpEsaM>_@2C;LnA!yg%$HQ02kmXZ z^Dpa>8=9gPZt4KI(wwGE5!}IOHcoD?e#bz6I$0VzK+#rMN-$asEbP)= zqJTvy!{OD0qziix5Bd9DBn5#J@=~<3=7krWLtArxUy6Tqmwu zss!LG#)8}{#x1Ze?HiU{h|F+7_)gx6M#@lJU7)O7KMNpxxp4?{DI+V zqp}?+B!pcDI0c)Hiw9jV$q70<0@q+y?0dLm*e~8#5+=2M;d=VA6onoLt-d3Z zQx&sr3gs^z*P5A4Dn8o1#&y_DW6n`7nTSf47MF`n(c3WdE`(;8^0?3@g4%>Clf|!Q z5nMv0g@8`$QRD-Gj;d!8*NF;#dQ*Emtjw4LSVEGgh(Aw%MzEs;D#r(YK$R&fD3`Bt5VRflqD^YN^pI<0IoD*^?5>$A?401zqcd z*uYXVPaY8cp|seRNk(E89~P<9RJ^-0Dhs&OZDNs443sY!i9X3K{W+}ST7;G9^KxEk z9&Eg~KK+x}=pW^{(}E%a@?|zzBB}E)`5dC7I5$U9MK z2DAB4Ojjs=sq|*1?7++=hsl~EN2{+)T&z|7j^L)}>Pr2~!SHJWh>aZ|D_?KXIxN4h z4b^{a!?+qlVMPvg&9l9pPiEjA%{cb~2W*Bq+j3J1@zmEx4Hm?egu*fXOO^-8}gcf@ygA4v0>+wH%LC;=H~U5f4{6ZLCg@tOeO zTRzbh>1bXO1MFXuPJWOn*!ulZo!kLP08ikORYdl7xmZ2NTcaT*4;?857gEyMCFyxf zk>Lx8pp*Dj;mMc{o_~Qa_eDDbx}sRB!NY>X|LQM>6o>9~U;L3{BzjO5!l@?3S!GB( zLnz(Ry;7!$_QPTcH;{9d&2naoUrt^ivd-$1`e)4($J6?UNa?8Cg&c4q6U& zku`4jN6eu?){iD2T5GOf{~&lU+*}$SPM>>pui42}?eo1dE$}%mGycWMrF6(^M3m|t z_dB@dS&*29*m#JfGE%ZK;4$0z2*KHGSpnE(qF3Id)E=2O02E|ogYa!OVEa7@#YrLp z-3qbHo=YD&T7rSmW&w-@5jeT08{2mDLu}_0=@Ms-Jf@W$i}kSg9*DZfUh^qw-+O|9 z?#GaKthdovSIO_<<*4wu0%y^MWLW0;E)K4MB()Q_m-ffZVJ13qkArfz((kSI_O_WH zyQ5Vm>YtzvREu$(L*X^kK(2bK3zuK6MA*%|j?iKc(8M(_r3;zU;f|9gui{yS{Ru(( zgOc{!uEZ;@5Ngq|jUrT5e1h3YR2UcoG!zDr0;fUPO_ZA(+gh7fg-;z z@k&A)%a=tX^!jH)W<+ezI{tvRFeR9g3o-_baIkmLtvm!r<5y$Kg>Vs9eLG%?In_l4f1)CmSMHW4iiavttwsu8g-{8Xfneaeae_^;{46 zYDC0KC(#AF(VCh?kGJ7Kf1db{U|x;4_!bBZ7dye6=AwdWzr~vCSr03A2~sCpC|$N3>yR9Q8r2rA0nI|91%zy29hCctld30HR>j&=j_oYLa1v>ud zmZ zdkh$;#k4%?hkxBys7ayj``G&S5JjoV!c$+0;rg^z z|M6k8MO>^7@s6nZAX9sVS8A8P><~)`1O)3&cP~i345Fs&lekiI>?(@8zm}5eS&jc= zuDZgQ3S`^|UCgvFHW@@EQX=pnaM;#aW%~2{MD7=pU=%B`(U7qXZ-`@FYlLvpB{7@3 zktL}bL3HnB*;&EaJ|V?)B$VLVyarcB2o?KEo}wN`kT*M$sE0a62wh_MQKpv@R@)|< z@+P*hIF~)s56E9;j{Y$j=^Q5V-@_<5$g~7kBKCaA(7u??k zgo;MDx--J`AAp#GL6L^J)bq3g5nQHie_x7R=QD-#ti=@pp9-gMdB2h2UqdqCrLfl1 zPDmt@;$PRBEp@~`kMyYpd3Ka7NnB$`j1a!8h*Kx)B z{3@p$;$tR)TrsPuBHc?3QN~1cv#4}dXi_z!>j+YEO%+27rk+VhD>rKdn(s-bVb4oi zjL?k?A`H7e33IgDd^D%6{;v6_^BY(W&D znO330<}_f5TOA+TG@^ylwCrtQi9MQI^y?{9(a!+ntZ#XDxQD_fK}FBK&h(fRLO$~ zTS=Z4C)SS}U?*s&iYFN*>S5%ebWu|marU1GzB(stlRQvnwAZ1#`&3GIETK za25%i;?7SMnzk&+0{g>7$bZd2nOs8}PqTFww4`Ie*xG=~vS_?!51}oMvzy3W8upT5 z@oqh?=9v#$o}rmQ_2>bWP$QO6!dH}(XGt0JS*8(5<;RS}6f#JC7`OF+KfK6NIHwb2 z(}CR}e|N*2Jp>H^nhGq9OoIH%zc&1oGt~r@;BiX$*RK3~NK|Et1Q-+UbsJz1mqlF|Q9z&RoK8e8=qOK) z1yN4GmFr)EsR9&MGE)tZ^Cr(%R#Ro)?QtR1;?W)Khs@}0htHIW*o*OHF>AYMW_wDp zeAurkB`q)*hpu5c<<_#kNtA=1nVIiJINfTd!6&m0pT`9i) z)e9ZoW%$j>oO#aIe=Qt2vriiQfo=}@(uMIo!gI_9+dfF<8%*qTy3;AEe(VN5r9~yJjvWV-qa}+InN_-MM3s zFo)}*lLdbune|#=+gFeIwbhoExVX-8)42=14ceGkBs4t;zoH z?+TQ0@cro_lZa*EWbio^4=7!--r+hBK&2nZ5HAL}$U?Tad1_lc`wY}?#^v0#E=rW- zik`4l2Wj;baj~EHe|0wUSWkN2vpZv%B-1dTU+wHHc zvDCpbBIcuxwWp%iCN6Vx4@kH76?yqpK3`#;T7XK@HQ1PD$e+Uf`ql4B3yi!WKD`!U z=}tACiCkxlq%+E3R01q*TBJs>;~9N;d0;oc|5Cw*+K~c2lN(q-2TNIBvUxGz*HP67 z;op0Gd~FUx{(6m}6(EbAY5vs`N?|L&d$CA%F|R&4@4koTeYnYxi6!zO)&fW{_M2#} z0=&8DP@I6^>4tWv69(%Q{8m9gz^_Zms3xaMF~WnBT?i? zPMmZZp&AZ%MRCU9Xg7w96K+Qv{EaR6U_ln@zQ7EHT`r!j|0G_sBysjpYuJ8^rqy7@BsC7y*7`KO*^@sT)N`k(;|A9?->q!u#ma#s;TSCQ=Au`au zC4F(Y!rsxReSE7(1{+oCryEozXbypk4uGJW!3L`(&A=yBfSCn(9Co8})BAJi%>k8d z(BKF|!9iP*tuQ)hTc-J4Us1{D|icO-c?!NZs z`fZ+8bxkjzMM2{&s(XgkhusK%&q`0;m4dorQikhxa->a)?Bl5`rwrT?!?VgL0X*h7 zrHaO?b3E&`csh$9Xk^VeA+snnEvqN=A>EGASzIvuQwC&P$&&tP-M$)3Yv0efdvb*Bjlib6WS)_Yqp9 z+u?t}Q-fx94R};lG(nu2Pp2R8${^N+ot}Nkoz?3?lVM?IYCwT+0hC)~R9ceaM1iKH z!c4{!UPK`+nzNTI=KPG19)O@qG;^?`(+@vlzozpPX=k|Y>IcwlT(O5_X@Oa1B`L38 zDjL*9RDaSG+h!;@kx%;>v0-V7OjGQ#OUt7Xh2B|pbLSx_sRlU*J|PARah{l>Sv&{l z@n-rfIN5f%ke?RCiBU|p6n9_V9-8%~5(%dXfWLeT*7OUTsGtHfY}R8|xw@|NnT#k% z`dqt;dhh)|GYkCQXOZ-MxxQpVd-}cJ%!Ep10dt6ej^53VhgGc2SIK|bp40W*k2}T_T+sx^9SD!HGlJ$lmTe6?HAtm!2zekZJMN#ou0M{3_^+6bxTuxO-O8q z{XD6WV^oJbn*CvkWESPAA1g!GqZL)$@LT`>2`q*jIaFy3j_JElrutc-53teVAEtQn^!4fg5{FrTl((EBl?1ZG)1d=@AbRQN76 zEh4L^TiZ|;D;RLXN+P>jN34>fcU9Ej#x0@%zY}ox5~$BtzqwANGwWsM9rG~~zf7a; z3;eNJiJI0B;7LNAV`5%AKdO4CNme1Y1CU&oYe%WUa+ZQ>!d_W6CY)Mk@ZK!tZRkU{ z=l?Wci;G+3iBbHI+_asJTsGc`IY6NqsM+oGX3Ee`JT!r6>^~%cvyOZW4Jf?-H|p|f zU|`}$;uFSHilfL199BX=&2MRUa#NTg5zDq`y{C-f_B`z2Wl{#6C|f(0*8i9&5^1Ww z>pI(oROWU9Ju*T-7iJo3e1W${)Um>SEV{@K2BI!SMdS2ZUH@&U+9osS8sZ0{5(A8l zor4S(85u{OZ(K;mJi=~+%MlK1PQ1bj_EA!V*E7yBeI2__@jV;_*smBXPvjm8i7`vu zHdTyjDN%FG9i~9(mEN~~EtBxJVo!MpDij?op~prHfHLyKvk(++Vj>>mV3*PXBqiBO=L|IE>8C*W7v{;b;S}`#6p^l} z8Ca?^YuibvI&b7ll(Ra4k*^-(xG=L2O9@mj$b!{|W^Yg9P+H6!o$|!riP}QhmYmWg zWz5XaNG^n{m!Yg)vq(FLuadcs?!uDnc6!#-X`yo1Uwi$vCN z6I%?VJ{@$-7XV-6Vx4R_v-0W(8SQ4T+FwqgmLF^qPh6TF>kB8ytTVgx;-K>|wPbnJ zZInwQX>c_6VCkL4?`pkxw0O5i>juM&-a#S0f()twB3l7Fk{9h|q%q|qe&Or(Glv|5$7Rf^*Eca(&(3rv=gdoB_ zWmLB8ViCrTdLW%~#k31|AuJp2ce#L|CS$cN)#o(D1)b^pfZFk1z;R~EjWY+P(T^;Y1gIEoB zMYX?o*{KAwle1kv=BeUI&whh!I4`%iF3bcz4%>mXVw-{#R`Q@8Ok1svlWJ&2(=NeI zfwYM!q#|$JI*y&i15GYFeduFE#qJ=@I!-I@v9~H~xZ)3oWgKPo+?m@guJ$RHOy^UN16b5XK9xg-WA393nvAZSV%LJcb#)OeK_(t ziPFA)J#Scz9desX7>!4+bTA3N2hN9J&~RA^mmaZ@B&Llh%S@IH>OXv~GsviWka^Eb zM_t}kJ*9=5ds~FLU5{Ly0r#t)aTE}}FE!`BHSNwyN#GmV(X?TSw5Pr$nD8Ozfh_IS z|M}-(6VOO9y{k1WC)KD}KPDZFd)#G-J>W4GRjd#sw>hw0iKw(~#K)7N($Sgt!lvt`BY|EgvA7tEad-ChNw zZk^q=BulQ8%9FF-;4BP%twEUgl`GIOOP_$tj)bN8$hQk0#9lqe*B@y(OO)&EX+A$J z3V(h*Ne3w+yIe~@yMA_^4(HGyGj`zLtK85ev7bQO{#sF84#@&|&hMfCvUvofwN}lQ zn$h~jDy*^lNCo6It4rFW%L>R7eYQ9`Hji$}enfivnPc4iD3tasqEW}q98(*CNd&uh z66WWG@_-&6J`db<;}M5}N8NERc{xp4S88~21N2qR%KQD2#3$p#^x6-e+A?Qb+{n;5 zKl|S_-|+Y~Cwe@TzIkuW*iu09uUt=WA}Q8+(AT7v+=J9ge2oj=s+atvzs*{*E&VY< zNOn#K6@$HvVeiVh`OZ9~FwIFVqnyAFJDW@Ap5XA=65+u5OE{2W+5XWq=F(qmO~B1I zs?x(Zs{Dj|u-6E_97?^RDY65Wfx5B4;a-!}Tf-9-vNw7HiFcvg!-*%R^ZRUC;fA>Mf-L^@1qLf(YA&stAgLaw9u06;;&aGbcb%n6+mJ4YU_b)MssX0qb$ z+S(Pmpxv&p(+Y94=iLgw*!6D~s5%=j&W;cTGT&`YO%dYuJ5ZhEEVubXpA0>*Hew_g z_uV5ncWq0fg{IWul!?;VKS+`0CIr84{>hIA{^!JyZ#Df!+k;oj%gm@qk9_{OVTBH_ zOOF-_m2+7FxtvgtnSuh2;A&`?1TZxSHK1zyPGFYkKKFI11!qNAfA{!@FQd;}%~?Fi z(^PUJpMFJy;EP!g9>WkUg9L&_8E68^FUo5pge zkfbH82|k9y9#rRjVbXeF=H2WKD5aaHl82KwTVs|4dPynU*v9MK0UZCuUFpIJ5r1FB zYeHy*hkF&^1eNU$B|4R*vhkN@v>;f82?hk$M$ojA%Hwy>e&+92xOzkMRvFklNp0Fr zk>?foV0u9c2_Z;CU(b;vil%uyW|q>{ojKl*QB9+BltG2%Y<5T}I?=n@P>G?UaRMa+ zt_jMtR`|De1S}iU)GI%BXtC5am=Cw$M2R_vXghXu@qqPWs+`RXaBwn|4||#Qrw^5M z4=wp}*nux#6zREAI#AIcYbFm16AiSn-ngP7-0bHF@*(AZfm7WxJYKT&R^_?}onBt? zA7LCETs)tRXiSu&39BCFWOA|yp(rI)3azao*1KfPf(H!QwvlOe8+nIShG1da*RUN# z^un3t^N!*GdNHu%X<-S;ialPGV)}Ww&^N@}TI+0gzIsLGR|DOz3ZNiQGyV;> zu7Ro|%xhClKS#W+Sa?zd0C&IVAOqL~;? zlVnB@Vimx99tko0tiqgu4@T&%xC&mlxOT~_>h1`gYX@j%PD87)I1@HlewwUPs;ne@ zv(cT)LZu9=Ij;Ukm(-PuuxBmpJa$S06PA?_BZlv0^&+1BX=g4 zs|TuTAl*ij@LTa*Z*!Xz!p;rifK-<01kzz%t<7M3F8Z`RI_+fGGk!211p79o7%8IH zVeKWrEhEB1Nf_S0dt2Y6UpdLI`c=FbgwS9h?J zD; zJz9_BH`uRH!0>n#CK5!1-F))#k$b=ua?FPvm`kO*Wl#)|B8$~gwSuA?CWkZ?-C9WZ zuuIVM!TVMr#<#{YiX)^UZ~AN4LxeEyKJ{*^RWQRr(P%o*_rFSQD<81k*f>a5P zq@@4ie83ZZW|h7EVSY?(Tn-2%csFz;+uYKhsBfgwOV8fH&kPtuh0!k)jrDsXI@ioY zDy<2+C;L3ij~dK*13{uEHyEg*kGXrsGqwg+xU=g{A&c_b1E&-Ge%t@2mIaLeT6i$a z6b>-rF;CfJOK&&aS3?ffvVN0-fL@OCx^w;TX!y|&g*|tw@6Z8vepPntgmrL`&FuZp z{hFYxs5K<0QAl@vDuimgXo7Vm^+9}j{)pn=qW~jw;_wLF$EIC`KlHaBLu{>EHlsSR zOa&&shZXtg=Z|f5h$Ua!WdOawdqp>D;A=_YP3mMMp+&$ZoZBh`wxH6%m`1L5Epu+w zuu8Y#d1Uw2Q#b1Opc>A@|{4Zq&&U+#Of___UzFzdzka#lbNX+0*PR4oKu=5aO8jG#}z z5O`{h6iDg%uZ@^+cgD0SnEzt!gg0MbSZlnoz~$6qG&T+<%3xBwG5NE*n0BOPr+7E! z2u-2DXSaR<@+sw}z|ys*+9&~!&pvOi?hj`Lg)(Lpd0lj0cu(^Sb`215c(Sm>dL&P! zjFAqLcC;rVp0mWT6hj6=1KA>>>lv4QOs;s_m_x2esm6QHwoW2Vfwxu_f_szI*f1n+8!`;gqY0R>@2a3FsS^L>D2g8;z+*>Z{f$sh2QDm* zM#jlfYz?n&kJB;h4#0{P!vk0~u9s9|-8mmLoHT3zT*e6X@AS!HL$j*lXhs>mrNr`m zC&gs!XvKqCCtU{Ng<}{A;)8pcRz7F*SC5hAMQz+kaa*swGR~RsIjW6aNz+@YJ~eMr zieN30n4BqAPXoc+ce!%}`;qZnE|$JLs*6<7_W6uwp~f%vnw5S2Z6{_^=kM=xg>n;MBn#B3y>zr^2$1Y!DIinn&|rMd#{{_nkFP_ts3AVq z9iu#Qd+_ti(B!p;hbjuHs*QN(H(MDuC%IH@lz;rGq;n_&5;W4hKAU1z1ZBG|-g`U` zoB@h~#2bfv0>nsNQK*wIhcxeJ{P9ayIRAN44?{VMe#?f%9bAFL$$wP|V=c$U#++PT zzNg&>y`6falA}GnyG#d$)|#Iiz3P~elnaVyXc&V)_FN-H$GHK0Z<)%8T%jbfP+94S z04#7v4|U}n+{=5E_-SEBd#|kqBiplV1yo&@&R zEXS_q8)fJSvV2|2(KSWC^GZwc=-chu-;v7|5pHb#i~fj#epe`WWympoAo}7{r+G)v zzjZr6(xl#Jy(1_=_zi6WQPM-;?QCfrTX$xs49jGI#GSJbmg_k8(K_*rDPyW*;#!8m zNmE(mQS)*Y8;z)@wD~<--H?ECO$z59!1^DokKQZwfG0w7WdJ?ML(WbL23O6%5W8?X zED$Ij@C2b9QXMQ&PzCa!U3q_M@JE4IUP-v?iut0pb)CA#g>L{PENPYztY)uWP_a82L3q+jEgp-(Gd!(A= zTKB11l4^_tZTWIGsv@h1B9*SlbXsDJ*n(f-6V#47sWIE01q%PmSrDKOqgb)Eql>De zhqOrz`vdB1H55ZcD6F2;IXKb)h(?>b3BgoyEOj;GN}(e00GJfnL+KyF8+VdcM%jDE zQOS>-te2l^IzuBMN4koIcL)pMd22SA+V}o;lsX~slN7BfQ%50sR=Of#wW445I}gH# zxJvzLOQT?eG8N(exs(&11r+T7f5=k}H_0@cS(o{_Nusp* zvhf1a4B=bMFB%-*PQ$PlV47ulD=|`WvzFyo`qJ=W8q)rpIoYb&gytHK9iV+n3)sI> z=KE;{$?v=971n(lRj66nz7dSSf?gFP!8o1Hw6jqZ1}>L4z77E-*p{Qm@CKD?&G{$y zw5A8QvSHq#MYGpI7|Z~4iqC~;@l+xFiO3^Kd6kU#-=(8pvElL@FH>s|K#HLvG<4z0 z0h5p-qzGaYTI-XrnRoQFb0*daH+D0f{yfNaD(<90e5#X!`LZufz*t_+%es)3`9&{< z6?+Q(-Ha4dA?v9!G4JQQ+v*+@m=3R?J5)(aOc zB>BRjc+<+a6%*7Rey3(z)<%LfKQaKTnmHi?G)|o#KJ9~2cLVbTwGXHx#f!+ydCI@2vdw%BXI94)vNza(uMF8z zS;*zAOR(a{D9;UnTa5=)j^_w?_qmMb;9G6-WV#*c1p5=FF%Ljnh(Uo5CyduPbeckE zYxVE=-Q$xIP=vrqbxEKl2^4OAgOd>*SG5NdXYm+2L(QT9fG(B=3)CrQO7pIj0}!Ea z4ipg@!@rVs3;zDmlv(qXD26X)J)We&7r%kd-lntU6Ot`{SvRizS80fHxvKia;QXoc zshzEjciIv3kLo84&wp_3R?5oMaK*&>vFFX)RHxknLpP3@YPR-t^)x_woV#nn=fX5! z$WB8$%`nob3T}`E`v~o@HSL(^?~&wvsO>;^S`IVGXAOIVKW!z4Dbje>-Q5O(7Ulu* zt(vrrOb|-Dzd7~SPNnuHcRm3gCLmHnb??{wcoM7B|Mr+Ox*9g0mbV5?mj9f92ZwlQ z5O$!pSLY0O-kTUl4=YLE-_Y*XuB%73UO-CS>DGSK&}v;Oxv^78GLY#>`@{*Ou^gvH z=?@WQ&JbKYR~+vfDsm6U+Q#wA-UX6o5(3cz_6|me!Be<^M0#+joBlZN85wzyC+au; zV(Vyw=>x!s%ki`2#;(>An3AEGmFC?$>81mPKinc!Gzmco(;X#J;0DUi(D4c*C4em= zS}vWS$Dr9dqG{$0?JSYxcB1I1 zk&paBO~w@HBFTj{V0*xfToy_CxyUkx(8qcOH;v|6Heq>hLqrqjzl$KpaPyq*@LC}E zv~b^q-J5FS@24$5S2hUZWFFv3Vy?do*rjW;P?d}IVUrjmclV|~-F>Pf-PxtiJX_fo zu%FV{m)ejY^f;HV8>DfD(YZ>eRg6wo%XR$dzhG<+FqGaUA&eDe7ULZM9xnow-AJ;v zWU~q*1p`Qt6eqVe)lPjI7}&&X#&&Dg&EC@Hn}i5fEq5+UEjB`9)BKpK^b-oHcv4CD zz%wnx3F=I~d%!Q98c#~-Nt_%0_3t2HAk%vwc`M2q>lA_Ui0EXB?WO%E&aQAR+}X(n z6KIu(Vh#T+%U$FFCUgZRlw_vpw5@!>du0yB{3SSL@Mx2akF#+fG5PGZiun9hh$NQ= zS-mS*_I#c_-1#@RbLlfW5M<=s>;UsXhuSrgWj&PFb{COxW5vJ?&$wdZXsm zkddif%-P}ttk?UO+E^qZ?N_<`4GG=n7-7GiQCb76og=iV2Yx=olB85Z1I|dvslQO| z8Y@lcCAT6TGyU}-MYDq7oF^r#QLx53z(UBv1=$??4QAq%%>sP z!BvM`YZaELp7Iuv5KwC=@vVp_n6yPsNwX+|>e9ZKfWc=(qtJiDj>ECiJc`+m1p2{; zmT90M)s_wpC@JMp{Sq;pMZ+N!=y3T^@?yqxi6|UX@+jW|7bGRg74dhvHTF}42VrKz zuV{7{7RbNEPdHnGy5}Q>`I$SN>kFKqQ~PqKbjM>#Md}$vcJpBkyu=1BC$FLj@j>IM z|HTFqAfj1@jyqhG_{vZDLXk%a6LC~#2S7oTOg>RKL~+SxsdHxOtLj3YpxyBU9D46Q zI{0OMgL@2kq0LTB#y2+mZ5vwHp#4EWo2_P}fyr)jQQ~3iG=&}BZi5~M#BpyvDf>q6 z476QL2-AHu;;;}~BL1u26|ezX*?I}99xgu?q*5O;X#8{&s2{)-bNPi2LMH4Jy`Er( z>omD&o(}+~CWt_KUK${Fr{Lx6nC&h{4+2-(O>*Gu&(|TW|m~Mb?2!_+N%rr2f%mOP`h_uavnt9}~nKse577nc>&$z-$cG#+*jvGwY`% zJtp|x1&GC+4O+erLYCrN$L^lfyC|0<_`QR{w2~MQ0NII!%R$o^rQv8o({C71TV1iQ ze-7;KXi}XGvUl&FQg5IO44p7aM9$il0cGkrcbPwH&**hXdKBV@on~#*coY-wKFyK; zB&xBPLm|}O7q)#4nOtLT8C6zA|ITuyN-s>8woB63iRp|pxEa`iK};Ia9cJ6~cc!fG z!Ucp_vC^5-u2ujO3Om$rLD(zeL&BU+S{V_`m@bGW$z;vT?ycj#z}N}UPn63A$oHs% zmF+`r!6b?@JsSfe!-d%AAiN1)cx362Av*n#LE^v|ldSkulA?~zt|@pF_p$xyYDzDu zekIHnXH0O*?LTFwrCQeUA%;8P+__vb6BZtwU*3cADVRUyYGwq;8mX-XryN?1oGu#X zJ=jh^Uq5QkT2=HKtu4+2P~LdLS9x;!4gX9Y>G5x*g{D}{bjj0*lOah7dWYK2e~#-W zc7&3Ey;5@OI+%d(-gnzrvqF8LJee8kQWqM0@%q zZ^nlBtG?}ds_h`7m}Lc7=>SeG(tYP2r3E@k-Xg}QtB4tN zomg5bR$1Hb%hG-t%ZWzgCep|YnK(UcHWbuF_#iAAAlU-E`f@-4?u+he zl5an)a<{)912Z>u>OH-$-Q|S-i)C?UicI)$Y;pGDpI1%u zTG`fan1~}Np-b)U4)E%XV=72{-p8sSW_#a z(7t#HHvN`9owNAVl))ABiYLY^sZP(_l5BA~Ql=3(+!HlBUn-J!V8CUB` zpnrmZkWJACI{otEv`b80$>P18NySBB$rb|PsmA{4vZzdala65oE$q^(Z^@3Sg&*`bH{Nti|V(x zs8EIw-OgmxDCO<~4DvCs-mMtxHn5FLbm&`f{Ns9l%7TadN> zyOH$PtR+(CslSpwE=hn|9+_-bYNqOlI^iUlv{eJFM~Au4y_mQ`pzVo|;-A>1U0Pnj z^hL9ZMVv;R3>iOOSP*oLUf(TKyDR;7lA`e@2kz?Pp8(ZVtf(1&`*PoHOBgN49E(*g z%sRC7nypP!1=Gv<8v4Q>?VBe_EjffzIrP^5I~@R@8wHW!rHI(!S-hDWKv6GdG*+gsvD+E`9h%Lv0_rGeyDs*a{E`E{V010~JY zqD8R0i^$@H9|ZVl8pwhV``|6?1D!|dGw~4u%HEA{!6EECx_-W0(4?=RO!QTP2y&UcodfRB_eys^9rEoJx3*)|B|J0q3@bW)OeHh5`LL z4GLTpp49AP%)A(xOU#ugi#X&-g?Ug-iwu!X zl^U>vcWAsJr#$m_-UKo(45_7)>cn?DXYRcOzakU8Da&9-{M3`!Gd~xn!JCmhEAzQ>WTehqBn?Nlx-_;3Sd~W4IpktjGzP ziTfe0%0q9ZrW@%W4~$({D!GBMK+nskaH@|m8fXQEDRG=_tyXCdw!qSUkTGabC)hI1S=x!0M##|XpC`%EI8)4ZghhbIpF z#^cRymIlY}3zA&FZ%}HC@J*qZExuZsvV8?hLNbEI6Mg*%o1#%xNIX(~PdNf`Ofi=; z{*%I@|Ivftd-b2S7aKST_ESUcD8vx}j@ig$^>fV*#*JcEx(dcr*@kcGQc->#d9v9p zLrQH44R0m(gEiLr+P-Krfbrn|^4nJaQ#Pj2lw`C`^0Km6rhfaRKCfTn16;mG!qt0v zJ>_BHLNw+`Jo9CXZ{$Vm0jb=OY$rU=pd6SBFphQmg~5nUrX(g_>1tt@{{m_O^CkdF zuR~y}2@6~XGxE9ULJ!X~*#2*aKQH7;B)=09WP!L0sKugF&?PXibAUl@^;Q_mc8FL5 zpGdug{~9f#WcQN2jdmkQwyDbJK*gzI>Gz zLA3Yr#Kj(;Y^AszQ;xl%$TpOd(#EYywvdAlg^1$wQsCSD6j`Fs#8x$)@awP(1ESv7K(fu2HAR@VmEx5^UH+yK%lCAM~F`UrP37dY8fA# z5W+|a^?tf86W$ED`0S#Z&MU7{GAust%C9=`yEdGHS)(Qo#Ej3qFz=#cA%iUP;W4dB z2O=O=?n4E3hI`j{CuU3)fgVu&YZ*2UK6mihiJ|TVkHI8DZc--W@O^sgxM#6_k;sXRs+$9r+6EFr^MiwWYW#5wzkv!O7w~#ruPzRIy1t*19=nT{O zpHe@xj2!f@1%OI^kYjkD{`aiDTXLMw7(L=v)mygma)}Vm5QNjq`k*dp@+_vX<$xT^ z&<2-IDu@RI6IFhi%`LDg3K{U9CI~Ni!$ZkP*93*<&AixX|V%a$*Q~t@*u9|nf`wDqHetgt=E|`;By9F>Y`I_J@!`j(TsVuv`$a=$4|_o1`;IQ&#AtbKIBox}lz-bR z49*b@Z|4iXj-Imu1EWV?z84nj6-uehyY*2i$in(edH&5gYS{&Ye%olFWuq+>JZP@) zn&n+gnD-GbD97Q_3QGP}r2Cj6hhh^&4b0TFiVm0rX!c>pK;W90# zCx~VeF)E~f6CXv|X}xB9Ym-5|huTRet112i)d@vg;9Y|BEayEaMQ%T-hcbgfelEjB z>-IK4XPEaj8T|%H00DDwQ`>tF3ydB0QCegXGR18di}G>%7`K~j{ec5I?9inJWCSNu zQ-8a-%ck;ZkDuYs@E3ZvLvtp4zIe|Vlo#Rn_5y!TIP!j>!RS~bQ>FtEgQx@-P#6`1Y zZf6cIS_%IlkKel!7$l>pN=`K(*CFEgq^KM50dt9tlwXvIDqgb+g5a2phpr()6DQkV zcCdeSJ+rArer)ai8Zuewnl8R?Qejn^5NV7d-v@#4vR)w1|6u9OpT15&?fz)jN!&y;L4oCo#_Ij?kc zEh{u%iCb)U{R_T(nDnqwHlh@`-j>$b93hgnkBAns)axbRhMLMHLsK)Mo_jq}0TcMk zJ3aQBvnrc51fiOFa)1YS8-CC#@$57=-W{lEYjSvnf3&s|lp{=d8xRC$97T{Az@==s zdz}jeYkBd_I86Lk4e!NQlsSHdV9}gi!;!>++xt9DWTnc6&-}!XaJkgGlci&eojq@>oaN#>dx?`wKzBryuj zBgzc=v#v?p2u`2CWp%mrRiUP}+pjeoZ%@M%0zD`68(kkYnpBqL{3jk4y}r zzW9`O0Pe7SDH`LgBSR>kIErv;fofPuf)9{XOBU+sYi|6+SBn=~cpZ3*?&h5bCJGA0 zT|GcZkDz$vsV~K_dV9v+5gg3!?+s_S#WIqwP33y`=O3nui+8MiP1}|YeToUXN_%3UY|*Kt zyRnaoU5h%3#*u|yq^Q^iE=v&8{Bd;?T)(|&V6V563B6OUUjYg}h>zG7eDRtNdX-zV zla|Xs?zcOs{MemmMWMUMbVyg_2=_5`#$jmJTuz6Z)QHsMB@!2NNRAA)RU{y|Yj`5* zGsNJB?CecV6thRH+45KK=1y#3Z=;`Ep5%Dg7|ljZyYW!wP3vM2T*#p~-xtlseMTnN zIN)NQB*_f|jeL}h)BFlERUdfpJam|%syHFR=p{?a57oaI|x4;IG$qNYX6F}t{_~Os(Rd)Qw zseW@pP_yUZoxX%3Bfc(9By0T#?{Y{{F|F0u*$6#*^Rcj9T{ox?BC;|GxK3xNSepUH z$E?Wi{=mmKrW&h8QVeKVb_{<0IIXq^ zi_|NYw-4@9B6aAC#mVIT3r!jld<5MCtBUvf-iUryXiKpCzN**XF?O0;*d+uEpw`|+ zFWTAH=E+@P76+c@51}84-D7AXT8=Bh`!Lj?%oHg*ohagu)GyFsu8u z2m_JWIi+Cf(-u7^bosPW+V6^7j~HYom$BaUzi}cT1{n2R`9n}h@7YjLYT-iZheqi) zjKHYyj#3C@`7Yval(AU*o_1$|AK`pNl<76xY#{}|T-|N@i}T??cvah>{l7)8#IH>Gt#Gk#BR1&Zs;-Zsx@ZnmF?qI7ytzzRUoF z$A%d>F5QOBmgY{1t?#1#QRh@K|6>iPkim%_78|?OELgl`N$?KmPQG84!RNSjen@n{ z%HXKP^7?}q^M1MaT2Q)>u0K^!jO(M6Sh0}1Y1i0q(|o&oIA`jqq0?Mf>`$2TLLaYA zS4E^9ytoKshQ#=oZ(5Fg-`k27cfx2hqJSlXfXZ4RXyM0IQc0ACxkH{h{~m8@BPRC5 z^|e)3w2Y?f&CVJscwYD`0v#}8@U|oQ%1}-Bc?*Q%ng&gF3 z)=EO++3xm(USn=F@~PKD*0eojk+T@geIft%W?rjb-#%S0@r5Sqj9fh6ZRBv3ySg%m z<8C;AF@8ZOr(Evg|8q^5?mTGS&!mwJS*?V}Ab;(hodo&Kq2L#5tvhdy3v?UH1E_Y) z_!j{eChUOh!{+d+-egk&(wt=H`zSgy+iBd*&8d_6GJe6DtaFXHN?^5a4&!c;bQFf7qy-F%0Xxhd1 zfD$((pL#S;koSyJ+F$rjXf)68R_==Kk2p>C zHwrsEx{1PsM3ujgWs^9Bk8)Mioy_{oIoj8Cn*55OYFdw^=>$a_ZNO?9TI~;Z6tRv- zZI>se=6;iFEP%DpE{j@%981*#73LCf0>gu5Id+zeA~w$&0dwyov_`<_f7%+4Vdfjw z%Sb{Kc$iLUu5j`zcaUEvKn-e06CFU=^>xdWYOkB*nL-;$8J3-S02!*&k8D^=HDk&i z@ck_$o_UP-296Jv2vCedvF2NEsB(;PNGdcbm37$;VpwEFDcklM_#HX{rW8{#NePPm z3j!dsUGaKHS;*^Uip#^d$ZCGBP&2H*{JvZB%9+1sjoU;f1iSk?E(}(kqM$6I+60Cn zQw7&AFS1NoFw>DoT&2MX2A>0#+Yd+Z?xA`Cl1C6-`+>yO9FQ~oUjj4Wwl&e`DP6;6 z8#@O05*)E^?bcd{f`;Sx27~kHpUsmfldXq3lq6LqUX(gW-%cOC_^b^H`qU`qUaw_M zflKVqpW1=j3I6w>t_I1HhY?}Hf6#SSQ(ddYx(4GIe`F``uR!*u_V&rLa`N>cz+3OB zQ+*r3pJ}woHZv}KOg~EoeT%(wgr4dgDvVdfPEqfKMC4*<;ST< zT2hHtG$EVakDXCja{9a_{_PDR3+L18MD4$QmO%)BfN6uDJO;c*UORV&FtnKsQTaX@ z8*i+_U3D6F_Z6cligi>SpM$-@4B&*#P*{;M6LwzNukdwK;>S8E$;mQMDYre>|BQYQ z)0_XA_M6LqGh}f~9p3nn23df{&dV83U)0($?zh(C5gQw&g;BT(DN-jbK6qR5;s@zz6Twkf z+7nXah2-p_6qn(>o*)I9}w=)=-z96IgY(&S6(Q)p-munIi zM#x#&`kP@UG&j(Oc(&u7b8Rz)j+CbC0PFnFeE(1Xltm{R>3o2^(s;bE-K&|=U!L!k zrMi|Y4@X|3FvhWg-N`FRg%Xu@4Lk)a3i13*kp5i)bBWENf7Jipe?``&rt8wuyPpHM zuiUPHZJn|gk=Pjc`r!m3#P0|V?rm=Lu5lY}t#o%`JeRA$MQD;tj+VEn^dNr(!!YTjAip|s$^~L-9ZRIT zXiVyeR4zQ{xdc-gpAOiu@I7nsf2Yb?&G;{?_Yo5N;~FeOnlO7*CbjhI)hQep66oS0 z!R#w+xxZSQw#qlE)ailIp+>0J|EDsho9?MO(I^KNjl7-mU0!&h1A% zu*Dkb%>;#z=AG4s7X#+gzRPH{x< zLVa6hgqNWx~jR#gWHGavRR_POMc=)#^l zx%n)4rE%YEvM(8aL49 zQ6;$jD|ZP;!qy_`>;tBu9Q#Ba!{PgZ-o0Bv`qkao(A z1PjUxO$bx`bgJrt(t{O$%)UOKo|E=Vtb477mKm`P+N8e@?ltZqb@0v*Y0XgD$j5;F zh}Q=W<2*@hZ>>M#?IG*kL`5xtCuIDV4$4%_fv_hGE05$Y*-wNsKIc}qjCT-1H@`Jz ze}>TXF6&>m6ncAe94C%rJ6Yhu#1#gq1{{hSx-m|s_(PB(#SpVs&Dk?b9e8E{$z5A_ z_J8I$@JO!PO45b~#7_>ElvNO%_Kehb>^1cY{0N3g;sb90ZJ~mD1Sv#!lTkf?9)+s+ zje)v;P&F9sJHA3RHn@_6hTS&P+LqOQ9j;>3Vw^5`F}3VSI=<9Q!ae@yoWSkFtc+VD zc0?LeD4NQT*`<5f;$&e#k%RsDI&@4*zxJL=pxUD94k2<;1p!uZS{>wWz`IKK5N#Ng zB>N{-?k`fgJ4OsGepznMP!8wFjzaZdLwDe7cWl|S>wS+O=bN5329vP#ZZ#8J^d@%= zM}PI^+Yspb&b~cFUcAF~Vh(BK;qaQ0BZNxhwxEO1jN1TGtx5+)uRvTtsAL6^xdSQP zNbritumCc5+7#1C&nuh9(fLj3s!4n*d}g5gZ)?p1e1#J+`c8NfDKG%=h9e%oHwENh& zO7UAm!YzDW@wLJvstdRon$dw+7;bA@@VeJeHX91S^X(vYC*jfRAN=veQPn6ww@8mh=@JD+JhdS7fz6K)*vrp~S8|B< zaCplU0ly$D8zJ%gecOF}=2<+# z;Wb~RI=vsRw8)65jx4_+UQo2YJsbCVToZn|;d>kDFwyn}zQlcZ=#93geUDJgwck?`w4f%Yn-TJtK; zws8bq9SNi{Z+TC>ydERh^xWX?)$45^$Rp~9tw1DgE!Uk*5UEzjnjV$btJcs=iAlRH zsNN5dt|9sdp83G>B|cup`2#W{)Vn$C9lAM^i4jZxBmAq%6g|^noX0z<^s+=rKeZ@q zhY70C1sA*gg}%jdKg>@QzHF~m)9hEYX4y_E&rF!Hg#2~XbR(Q#w$?Y?LV0tKSo4MQ zWUw4XWaR9a`;M(@k^W==7dt92Uj`?_x}h|w#&4FmxE=Uvt5Z21f-xp~3fwY+)z2wc z*wWO2qZl#&1$3Z0qC}>NZ;s9O>>D~NC<~9V=y09XGwVI}+?U?Xqtw`iGh;97H=3ub z-sbHp8vfJguRbS;#w8N|&Sx@8C!4!D>3!;(QIeE_!zo)1p0&>RILZzy#uUzDL zDPtk4*y&L;hVJMfs?{q*BoaOt4cCjrN z|8;ka@2MCq0u1ZdtcUZ7(XB4?K5XN@j4Zu0P%#GWGs5{`G!w51IF%eBGwWN-liNa8 z3wHT*av$th>yMiQP}r0p?kRg}dtm}LQ35$7QKtvw5!9CepkKiDlcZ9ajsb#2M~tki z@HyC0)o^S`WVf?vunaobYet)!8d6bfj|Rvgh}BTE(tcD4Ihwc^jfeAD$1@!)E}1=A zPck03uA#wO3Y$Mx7FYkgRN~cLn~Dm7^85*aD6{i9kX~EhGPzwJfJ0gCU`f*0+0ccBQR#%$SM02ssomkJ~XvkV0(XjpKoyLaT z7#3u0a=BXvrbsI>R*=ZJBe_NXa@)_05pSt1BUa552e0(#5rU3lJXTqO%7zso#-JmbUeBX|SA{$x{TDj8tKIER@7|RK{9CT#zE|XK%t@SkAix zZB`@Y>a2r$8E?x5gQ5rbr_+vlm?G^YGHO-f9s0CpfB(n+OF*qE0RKM#z?fQDRUVq| zy#Tf?zPMr15Y_z#Y_=)hadHsOpT+6oeI$Mq$_1W;@ix=v)Uaqg^RiXC$GRblWeQ+k ziXRb*GMB^<1sju2sb`2W&%jp9lkWY}+Xd!(U{#*BfesE#D@up9m^z|X1+j$a@<8ri=!=wDE1AsLyp888D1l7n!~jb;>}a{2+!-ZqozUC+1q0^^k= z^$%QEc{@Qf1nlSe!)pOa^zj{jKx(^)NHrIro@obnuL&GIBabtxqj`{V3Lgky*X(eL zjVH;Gv<%>Y?iA=S^jbQ({C8zl!erhVuRJrO)#iISIkC1tDEGZy?~lavwDRL=n})H( zc)t|ZogDg0h6r~zBP4S*wrPuC9>rE&{hTzJRrDH@v9x7g7=+L+1S~y*{|eVs$YQn~Kcs=~wK!n|!b%%rX6#Gbl%sVAO@{UEJQmr!{$N0*LLrd~ z-f1!1fDa8w{+B;()<*8s9`^2VyrQag5%D}$#4u6GT8$89L*G6aJ@H+pIB=Ui-e(`g zeVWXB7EVTlb%$XiLWaMW6mtZ}=Usc?mOX@QUo#Wa%9(7%G-F*B!d^y3(6e{a8q30k zAmsuJcTYy!CStgISsQm%9v-sT!oiS<`#Da9Aek1)O@M3;zGZ4Rmd*>E-O2b)sXvBV z&BxS?j1bgRxEApN%(}-M z&*7Z(-AeLteBSm;)G4O@`Gjz3oHj>qy1Rze9y5qy5(r&B`c-M2S3YiqK`)jG>z6g$ zB8sh0P(R*I{x%WjTARu=e1Sr~MP-{<)u7W}BQ_jGf2>)Ow^Bph43EWc|62@&u*=KB zj(?82QfG6D;wC)}Xn`K!iq)y6*5C}O1~$qaAzGzY^_2-C2OmUUx8F7I>6EhRKM5|nE;;B|6~%z+Eif->N8lFrs#iS8CtqKkBfboNqGZ} zDJHqbYy?Zbr{zQE34wxYU(ui_lKoHo%g3lKLf=&a__KH76*8~u2V9J=%mE{fi%6oB zOQ>kNyG|2_v{j0FoaSw=Qqcx*PfF-EynsIwW4s?Dto=-pk6hf|BwmwZbNK>pc?Vfn z5BKeQ)XNAs_gZ;qU}KNo3H{L0PpliEJ4*)F6ZT)FX@dH?`iS2dN$bEeihr*01fRFEIMw-00x!PtPWBw$b ztVrhN_k_UWURS41J#K2yRcLM8`!+;sRU$GVj*I~FG+$(W?DIgs@KQC@H^-$tcZ6U<&Wu!8xqu zi4zzbmfO!40So1z;wNNVNYLRmzf+fI2K#CC#|8t*`XDy2BG4EF`Rq#F-LzQ&jAVd>O61Qc89Y)ms(!a*~UUQoo<0UyQ$j4{uWH!m2gpBF>D&QYB+Cx z+)KbF1kV=ZiI!`Fn>r%Dcb>5CA;z_zBiX`@Jg8*Mno=3~W{hkrHdAn^N@MHkw2co5 zX9ZQnuoy?x>7)iHtUto#S^7Ze8!Qvdjf-ei($B(7C6rq_p!LwpWgym| z=mE99X9%-N1mKXoF!Ktatf-0SHY&i)I~H4wZ&GsQ9O~|2h=WH4Ap2vO#{sml8i?9x zD#LMq`u}I@6_&se41E@*csEfDF!wNCD5?#=BVfK5fiaQkxxc8FkI53EC?z<)94lf9 z5!e=rVy&{E1Fkem6RxA8&q*oE#&;H-*fvVP=#hjagWqDSLYjupCeWUY-?vj0C!*W; z0X^cP;J9=Hb(X(rw#Pm(FGP9wg#`*l@G?8Sg0^9&7&)|lCEDA+Z1r$d z@p=))@H*P=iGfcWC(B+Bf4u@PvotSPnO#(xq@Vv~i5}RtC8Uvq@T_Z0}IZ0TT^?>ALbLKFL-cNcIfb6x^ehAl3U|C$O zY+(pE^QJs0at-AThnRy;iJZo0GUe@pcbknpoPiK|O zCM9OPvcJNHoy(}H)iCJNTt%-1l_!J!xh3>YhSI-uZ99Rohn|4%#|(~;nXD@W{%X;S z`I)dm7LmocJ&HO*gNX^}HafcvUXd>y6HI;gf?wI@2z(4F&gA9QB+8-vIZsRs1W@_( zM8fV^Gu)N~4Nl!0t}Gmy1c2J8BCf`0R{e*oF)M%eelPe=!KgugbK{@En7J;@%i2+X z+Q;Lhc6RrNk2Ym|6KM^`vb8OpF}&X0UK%@+)5v3`IWPS<`V&!36*wRcp&Ifa{_{4D zL`ueCy$6YROm0Y>egY;Q_3oIk?^}cO?$((jJ1YtK&y6qoTDTb+vzw2zHL$VP){1~!4I z)otB4=Zst&_TDa_fT;WdqhX~$k8RXGC%KO5rCAn~3SSQM?>y#A*5)!%BSQagYQr$x zO?F?My_^{9PJH1Ug+m&jn|PBei^nvg6Exc`vuBl%6Vk4f+gMJRF}{02Zm)K*c;#sa zDIy?;DX?CZ^?-sgjjMtt+982qlDB*umtwRc1CB0kH9 z0{IrNE93L~??I^BFS6pt!x+!whb^Rh^S~(J(u>Di;pO0KG9STrhRqTFC^BYXL;1)# zN3s?B-0D2i)6Trt+I-@D>}K(e-4=#uAsk7u%eCn`Y`-567TO|)Oq zo8-uMM8>JEd*rvKaG@l93Utww)s1Oyh8QC;m*iZYq8v^Qlu%n1)c`+)7;s zf0XZ{5J8z_BG|iNK3D$4Ye>2}mK5t{SW+>BMR{LklG5aN1E2>hljnhHh#tLfzrfK4 z$M@y;rMr4VR;R5H=Hq5nlpgg7TJ#Uk0&EE||{G{qX2BA?E2fb$XRq znAvs0Sht56ER$Cl%P`nlCzFo*t2)#;K_TYBM@x`Iq5c0dQ_Mpu?7H7e9Nmg_(=wf) zI+~AGuiUqIDQ{fCcVo1?RUZlv2C9U`W13^=fH@U)%FhFGl_G6}%1Tk>xAPy7qxfnQ zb2A=J*Lap2Z75OQ9K?EM)u(aI%T`yLu0@c!`+Xj zoiIt1+dc#VSI_iJ12J>|y+lzACL3}Bir6D1$IEZ>8&rqhR*dTjflf|L2MNHD^xKb@ z9UUsA4*c}GBATs4@F*rK@+$ItW5sJlakadv++HW#N{QX%4FQJwZ5h7-^BmWYQix;2 z-}j-lnRrVym9tkNKtF5=40Ww>+8NgK?X<^HABv@PsooW?M(v#Jqg-T<%2N&|_N^(l zN7G(c8+>;Zkci8Z*W5e-?H6B6e?71K6QitQtA_^ou>QEYN12+_WLoId82#Ihv-k^A zJ0}+j23e|>gT$FkF;|}6P85zms>m6hq%l;nE{V&_&V?0A%t!MRBDKJpUKK4s+CU|6 zCEH6GdZ{nadqa@?xWTb*jR~=OC$_tG_d%g*pGg1e7Zh;3un9+_BvIiaF2zp6eOW8u z)XC(DZjXFZ`esEtXicU-nSFGXJk~thHpsJUh_Q-+1bpt^ePSb}-2;ebYSTUd_nldw zOHQM0{^zEZ_P1uP_RbSZZAQ9%qz?EepBynrdijauuGw@1hD@dzDD^@)kIkq6gRfBQ zEP>CdaPSwYsx%{7nnM{*2v^GwkN5#~Y?8RBuVu#W?~76}dHmcG(f26h+lNU_u2= z$&iiB*Qyq2s(3#*YwZldukp<_!WT_=3d=o?np5l~vK9$T{hV)@y9a083D(~y@w`$x zew4wTV2U@mXLecWwbmcszn;Bpi1kh?UV>&Ba^MMDY{3f}b1{%oV1MKK(8^XTl{By; z8*L^88zH@8PtPUn1A;vPoJcm3g5L7s@jlYAU zKTQa4g$4NDEwg_2Kbk^t{fVDJRz>fmoJ`;|AoN%|9gEci=7HC@rG0(X-{09^Cxcz3 zDpAjje-1GHuyjVt5vH$K5bLr=y3?-5R|;N|Nqj@iOIGFqNOW0Jq@-{*1aMx)RQ5%Q z_$rc@Cs=5-YqU@x9*u38#-Awd-DkdAbR6GiF_J7YNi>dye9)h7CiYO_tw*~+zjpD# zrZnV<_$1x#KYQvogduY;#b`jzK21aTeHVMY)Y&(%h1ZRnf%HGU{k)aXj>Lc%r~6pq zS^&-Kvke{akzpg0q+#(Lds|0#R)YCt3aRJh`Aq_vF{<+0HhbPEqg{puXP%zNeBP~~ z;M0!sQoHP|?7t=eme=efNcas0S8wA7A*p;!X&4*`HKVM$Dd+VrSQ3;XdU@SKY5ukV?&9-oc@tSDm~4j`rC(2WVeo<{{DfW*oXCPIH^ZY@a= zbCvcm=H4|qOz43+SWKjwl`|qW;7sojsjgCWTz+|f8lZ+IQm**Q_Pww^TC$5goP{<# zV#m=m_vEwM5g&zM9x&{#qS{|*^S;DNj7w5iSu-I4^iu1FkP!T3wZY<&0Egp=O+&zc ziGnX|^&_!e;AXkaDlD*?nlCo!6*F*4?R}2Ad`;Kjl?(wQJg>VKZ;L%37rHjpUplKv z9_2}_<clDiHw%|fhuc{mDyqvN=-4AKCWFm^mJB?Ai&mNv;Axvv?5yI)3OzGF4tsB z_yu0Dsz3@xuOy11dI2;La|9sJph7u8cMz9+d*IzzMI~K?(nMhr0MBSN|BckhcxwkV zmY{}eN<&80SPD)lOv6y4X%{2;v@VDeBF~K*7U%s4TisjL-&;i1J|wv?Mc0tnen(K*((Ay&Ac{a-Mm`0A&_=6(KQ} zvtHH3Gzn0iOk8FnVYvX%;01(OV&w&0bpJ1?kpU5v3r>I6(py;zSgd9t?&Tfid$-R;GXS4h=AO3c$)EBK)a8L z8DH);D&E&c^Eq>7Al_US17%VH~1v{4Ek}wgU z`PGbaPHS63vOYMtKOFIVrz@@JLTtu!`ia`BOZyu#L`%eSY+285mgx#y81uiH__ujP zhA3y+Dn3^F`xgy`4x0rklw3MTJFvibITeL0^kd+>F-Ksz^?%XkjA=uI@wc~7XyFTg z5UuTwGTosC`;f|qnEFVEPjCP;61W(c_?@Z)vZPE_KkL(6vKK_oShVCP216oaK*9~# znDc1eSgS7Q)@hitRZcd`P(>A$xSIL_)2BN+nh!MXon+t#mlCwY##+zh6E^@sC{7*S z)akl+d$#y=pI78~q|T{}ur^zurY*+O&b^@a+Rv#4JV#A!d1Y%c%B7tPE-fdR`>jtF zlORAyQk;pxh*%n9&8z@|%*mRstK(OXi-T|%I|LX%c}8cN%H>kBQTh+$fFoM?UhS!6m7$U z7#C?`QyopKi;AfxhyJj9y2DDyhyBE|+}_&D1I-Q9*r*wms8Hq_bAZF$(;AmlAwr*3 z4Xr`t9!P^YM2ty=&>~5gF5t}J)9((Kof#D7e5Vy>&1D{3>$ou#3ZyW&RXA3nJm(^N z0dTaG3c`QDcTM{TF6{(*$V1nh8v&(R$_!=ruwE%+$~-C+v#E~M!8-ZhS$P5K+(p`S z!1wvy!n?I|J7G}`j63$%Kr6rupff=%w3lMUoH~iE#jV5uEfg$C3R2thPKV|yc8FS= zVdVmCUNM@$52+ z_Oa~BVZ`V!ar#7Q1bTRNDb!636??kyDifL6peBqV!Ja$A1e1CJggzJYaBEaYqEwhG z5r;*+74H>%Qh^ua5=v*}SMMV271s6|^VWPZq(X9I0u7t8=K?4h=M;3iGgd};6>`9w zF_l%)0h?f@mpPypmdAI!re;v%=_M@NNIqacvL!uy(tV0!u}FKt!XZ;JmJZ`~g~l@cq;hx@~`2>|f7YQyaT`B6+k zXZckPXBQmQstQ9h`kk{RcxAs9LHLD*3FY0ED3AHR(gft}* znotq#S%l=#s^%Cw%e29(S&}Rkb}MSjB(tndGMn=&6YjE(pv%{Szp`C*n@!1{1FW@w zJ3ZKj4+s(njc0)V+9z|+XS?=3NL>ZSx!qX&!hP0P>#3eij#RYwb;CYg{3XXQ61W9s z=vky6ufSA7zQz7&;DD$rbFNhQlVqIF(YvF*ppGlH=Z$Pr#TOYCHf9bK0X#auY4tc2 zTa6Kgsmr*apVw~20usiMv~ZWV3-;v4llq1(gnFSb74w+kCyY13JcWC?04PEVY|zOD z6ktwM^<|&{yDa;8AM8|qO!w@XlA?6a(Od@Ye-Fxg?w`OI0n^~?m+0E9&yBu0n~s*huP)@3iq6V^H4lB>1%zga#VPO*Bw2LHf0g+siRJMlila))s6w0E%-urCZHI(-$9uK{ z8d!sSWgraVjvS=zBLFjq&N1*AMooR~b&9|Q-FG;Du(thqNX~%B$QM zN%&>oPFz)qIh+(uz>HP}E=NROfmQN(el!dDuI>xk8?*3^tj;)s+0-b_PbvvjVu)ZV zK5<0P0jwZG<0Cc>N}XU9vy|i0NQ7R3-*$|4w-y1MWNl-ODXVQw8lj6WeZ7b?Dp&+M zX!9V)ec2zqeK2r2?Q`rQ^jG! z=$n!pe#7_g+VSH`#2K!V|TXjnuqwb5}KDCV#H#LwM}yYzYO|2Llth z+%)`b*h2SqmNa|vl&1SEMNU4Ejj{qYuw<2rh6{O3x}JkU^M+ z$m!rDXy2Ro&vqlMCCuVgVhqg_!59?`tsP`(ujad-K%ckW@7TRoWtD9!6UFS2; zk2BNNbmF&iI@4#4y6l!?U?q0JWNB44t*lDjVdON0S(=c3o!Wi6fcX&d`eWJqMBiX( zJlnia|EB_-%PvA}cf0PRz4vsj)XKoT+weItg?A>Lr)K%M10lq@h4ISY7Eh}oEogkq z1)bE{S#c&adwo>oqh5*L@?pm;k-mN!-9OirjZa7!y+&E8-W6&Wa9~VGf^gfXh${=i zq)duNSYNNb$DqDgI$@v1z@?fdvaeb!x1iA+}?BFxHLO4QF>C?g2dN15G^g(*2;Yd;(I=Qk3gydKA#*n*~zr zFT(9jYfh~5oo+Qp>Tm&uv-$sSHv-9@!aydlsOxkXi#)C-UIBA_Q8>Hy<6?Unwmlk{ zLeOwOI%=$y{})dy$gj!bi3qL37R!$PzB&8`w^@c3ux3+1$QTNokuX!vtrVaIb&3L^ zI7_A*XCq+lxys?a;=VGIU}em7QNHK`kr&cO(q2>ke2vi#TMD&4acf|k_%lagJ|$J2 zn$}7fI?eHG6u&{N4|9haOWm@Tm<~RC)-r7uq$Ym*db5=L#Mqk6!QMH>MVH^w9T?RY zp<)&Nb~*s)hJ^P_vfi%nAPa6g3iqPyxV>uR9F#G>H~TDCatSnDCZ3>fO79D+bvR%b zDf?KR=PT;7dItVbMUhheb|6xX6p$axqp(Ag*CF6rx%nxde5A#Ok%Tu`b&K2(@w)qj(URutvIa~#cx)F{$rm@s;56KZZ$kwt6s(#o`#qwUpM9{2!UBH z`bE<#G0wzb)|!=7JM4}I!ngTu~deHe>yfRymb10C~@2+d=uL#KM`lh}k> zPB7v@1};3CJ3Gu*Fz?xPUpI$x+2T8d2ah~8GOOVz4AnQuXDsn|szZPS^?LPd>Q=y?a*Ss(Q{brpEuy8Z?Bjq#5Ci1T1%O0JGAkQzMwR zzMxn(9`$xXAJ2k2@R)+74L6GE2CJTYJ@0JAGB|ft28XH(iy|gvB*42{5{-t`%O2e%+cE1HeQEZE;8>GA~R0zBQZy*X9xb4{R7ace`h#Ehc8NpMS7>f=nKQi7RP_^+LPR z>dN2E4*$7iH28Sj-N!!G-8x21w`Mp+#p4JB=Qr&&0u_AEvqHH(VwDoXt*j|rUF3Nj zLWj?+(l86Ny9qQP31Py&qgT$vakkuBvuKco1q!tx{zLsKJ0$JB1zx;7S_+vHyv;Yp z9s=!3g*V><%9CHb%7VrWbOW$aWi$vJE89VPN4=pPM zg)i*Sn&?zFbSF6vw=H0Ni#}RB8=Tcn^6&a^h=mh-7#a!7#tPeWod{2)12HPHyNN%aT`DJq!OGvEScgtsO9^UfE@UV zYt~PWnCbwl+R4%Lo8%D!GSeom z6AlZ4Y|c=&JbXWfTHCS>|C+1o!vb`)3Ns{Ad@$kVbM~au{IJ~NcWSG}1Fu(dnngC()^hg7vAdQ32*=SoO;z^caR$^YH{e$z`TJLrrhZ>$bzgLN_#Mhy!H9} zfUQN@#GkE#H1kLt9755fh_L6{k><;y#!_=GCcfZN3G`Br0#?T2@M%aNk9eY{QVACVJkgW$#Nm0E? zQ3z8QX`|a}+j2zCTVd2ISVK_+w?=IA48ieyPYh=8qAOB1PxJ!_wFCIDWgmmeXI0O- z{P(%jX2KT?7p2R9JBPU+wSbg@>jp)|=G*M+77F7;BdtB>Ext;q-#%@bZz!%#8s`S9 z&1yJmD6X3HFEGG>%hcNvfe}FE&FHf*h@XV!K!xDk z11&NVXMEmNC%GuZVwnn+Et9)T;;NrhdBj1>&Ty)w7FD4*H!i9Y-~?lL?Au0p@_I(H z`kK27aWA0(heO7?YKT>` zY>6`tD0}wg;c%CaG1eTT7wX+hb`++eb-c8CVD5nkKOTx%10a;XWM;k?1X7W-Ln#9e7EarQ6Z#Zy?rhxL_A5$LaIyo6Dgs zv`wdSb1z408E;w@HYGY+kiJD}4ZvRT$+Clm4sxxMy@nv&cj*C*QkP_!j(z^qsxRHJ zQP*L|<)`usZ_u$SfWGanMx5`od_uMHF=bBkJEOR;Cb42O+7#I@?9^zgr-OlI;Io}& zc#te_O04A4gPy}YnhyygwR^h8`#rfJk4Jb0LP=lcuKZ;&g;9W&)eyh5P4a(_FMLvA z$N(p0Z>Bt3j{Zr1FK3nInN1z${GYng8)82UM{}Su!SN}S@jIGjMg|inMmJbZ*J{s>p&6ytFp*fRx_k^HM!4l5phTr^0O#kwP)Q$`__vUJy~4UOzq$e2GtU+2#+}ER zQ6;q>fHL%E)-bW}D+F%yWm(6PnmPv{Rwc^wu9-Pmd8z#3C2*Y6AVua6Ckr4bJDb9W^lhk)p)RocK~=x=84I-jX9AIXpVEqB zUr?)gguZo#dfl$P=($@iu>FL2B@t-$h4`-~r#u}x-On7f$U;?tYaZu2_RtJsa!4oUeH5P6A!*cuOI63J3}Kx2FWK}JkjMbD3~{WpmG+uV(J@=ppYV_c&FxY!5;-~}f-Z?8sdacf5-1gMsFqLmZ9a2n&^FnUNgz#J@5SU9I zKsti%nlN9}bXhHxQx=+Bua>44-%6LpoH|UvF&5-FWj_cB6H#7{@1nI@I>seB_-dG# zQZZ5WgD?UV^)p7iABE!4hR0~{t5XAi1~*>Gg@V2fRFNd>@(0&GXC{TOSWOP;)xo~L zLmczGy!~gmE_9srM*vYWW~(1S?TRrWV20OPoh2DR5J5v2I-V(xQBonSKdSy<;3pi7b*0xin=pMguZnQ)T#hqU-x!6Hk*h1! zDXPzO^nlx>!jlrJc3Zj1-aNZYMQ6{D=b5Ro5(T>^y&UF^D#k|PDaxpH)v5#b>`K+h zpmz+j^7#c6JseNLeG6suHyKlET^JvR-;@0pa7xI;nMDtxwY0&-oaLD!zq4KXX^mhP2$x3_Wo zYB_Y+T1YC9!D%BeC0Z2?=h9J9fht1zsx0gMSqd?2uTq}6Z+LvGD5Tf52hq2lpPwg+=Si(nKbExcL5;#oDuOQ>yXL=b<-Fi^PAT8cI>Dd^1 zCCd0bcZN}k0&J+2({J5d z(_-UXJZ)f+RDYEs#G)JkQo*TxFD~nCzksdbDlv+{KnNAvTuyb9>|Y@&M$pl>;S5wm z)YP>P&c5= zg!n_rT{v#=J&r$n%-&@_4ru#+XR-=%syDhf5EK=uU&sb|^n29=!oQB3HLB8Bwi>VF z18d^wvmKw(o%3n0X!mZ?lxa)c$;j*n ztxghw_~29S&c3Y>u<%>wZTCkWR^fd81|-KYPv#)}&pm{59)%$&E|mhC{+f%P5hS7B z3c|GC9RBCzmt0VOnJhf!Y~I;aB~$@PhAkw3LiIek?c~Ve^R#Z3yFg(|(wi+vudyGZ zeL5CXuzi*Y!Ho+@zLG5O=e87nu*p8-jd-(&o4e%kYnX`pCZ7m_QOCs@-}xNoRyHo; zh&Q^(R@rnsH;PgnLDLVaNYql~kRfun?v{#eBYjT+8&CWk=MlQwQ$XIimjbb$QC_Z| zGriA+N*%{+--s21sUWfGd z6}9sfTlfnuTYQNYtyNZ9Q=h;7b~f(yuEtK2HxDqR%?e!I`@aXCa?X+Mi7Fg3M8 zkyrRz@YiE=_4qKHg}bH|cDSO>dT^1ZYhDGC%oQA2=QeJitMndD92kIt za@>rLi$zIslVQ}EbPH2;v6HqM2dLdSl|8a{qH$5uVr6_zD$YI@aEDP&-Se{qg|`C} zlV<3V{IKstjO~w7cJDK0D%6eOZ|#t*A+O0vKN=*>P7Zy4&)$@=ex#(p5wQV=dbJ?0 zIf>JuOklOHHYd*&tb3SBCY(jv;}s*l*cf5%f%Q9nkjh)yf=6W;FW|6dE8&+kxoKLY2#Y2f#AfIi~_$lEDyC> zkjj_ycjMP?6KcX{CqU&rErWfp&zFfZTxDJb6)41v|XwrYC31L@#SsK;3yVBV)2VaGWtBiIn)mNE-Ak zX2lIjfcru4734&`vC`z_15f~UF{SLqC%HECWKl}u=OB0URqPGH zi5#Dxr59jrYT+B)xsLkIqZae2Q>JVLcPXSNY+pIJ7h0k81jH#IwdlzLYva@qPl)vR z&^)vpPy1Z$KIpi^t8nh&d|(X-P2saz0jXx){&i@|@L6*(Sm7QQ5vSmR_HYW_=!5}F zf+_zs8tG@^Z6869lulyDnR)nwMB3>5ZH@nalshElN7g#2{Nlq%OK74K=l_Wz3bgW( zYD^Y-LfB@e^bx%e?6Tgkk^Evb-0AP!VTCE?mg~hD%p>HT%IGRlO-@PwGmJdd=WcN; zwsWgXqwg~rJsZA{_jCa*8DG>p>hS{Q_#11W=N7uek4NKxMRMOsz~w7%C>{Seft7!O zY<3h7+LschHxnc(YzWQnvsffcT&rA3kl1ak3kjKt_4=p7Cv4S{IJIk{*7S2NE*?1j zJ(D=ssvV-qy{{1jVL5F0?{HPNlV$oC9NvCVgX$NxCk z@$7ekH2wjuspE)tFCH0d&zDaNkkGV*#UsG1OW=gSI<|0AYv%_K;D(#x#%uHq7yxcS zp8fhM=63fPUYm?bw@e(l>z zW)QUIUY}qww;K>+n9cm7gv-bJ8lE^J#j6|;QWl%rMHVhkGqX^bpX@V?HFM__JveDY zd&GnsP{TOWSP_1kS3MzlW+o~I2Zd~D!+ySnVP3r90js^#;Us(=Ub49En$G6Gue*gQ zgn_ZnE5E2$uJ;9s#U8ok?*Fz7bn|$f69Db6im@r-vMG(a#h;z;4HhK%gTn1rd+|S8 zOgjd;wS~SVM!kSuH*7c?jM;La_Bv*TeTh|2iNPRi8hsGF&yRAc$QHN~M8C?Bi+pR4 zx``q~ZToFGq_w@>1&0t!9nW9q!}7>SkMf=wyMQms+<0h4E#G$qHrY%;#r470m{6+z zr4_&Xg0&1wE07Y3=hr^2uEV9iwTk-IQF>xt>f*MgG^59o*L@dFPa%w{aF5F-&!)7C zT#^!)IGh0HDSlxH9GAsNz@}xRJ=hJlM+3wH21C-T|Wl^;GQ_v1QsJLS; zgc|{m?%hG>LIsKqeX8Z;%~fq9zrtOV>_?!H$z}=;A2W9F<$4wn{)@7HAZg<)>@PM0 z$(AHq%)1jxJFK4DR9>epV%GC8vy-C8E2@x#NZcWsuE`#V=$_@q_!F}?7zdIb)c^z#w`SJ*up_ykGg|Ezcxbsv2(K&as*r)Q zk?O?w;ERD>;ajRVU8#h^p=?Eh$hGMRUz^)3#Rr9AgTG-G85aC64|WC{{!DIRj;00~ zis^flMpqU8L0&{th|t#BX27?2`Ty=3CBI2Hg0U~#cfqM{5z0HQ5otT3QqCCk@mLFS zo1KJPKJj&2xz*s4HukVE_Fs&j%*OQz0|_ANV<2(xHj(EXlo5{>G-kk5PfWE*o*{Ve zEeup7-TBC4SwM;$g(96J5I#C)+&htH;DGIh3fyB&P+?Q=8GQ!RZ5V{w@mP~am|QQjesBir&;i>%BOA7A9CwN$D+g6c2p8IifS79?y_=x%8SyU zAWCwvThUi<7D@(QF*Z?qzh86dD8ckC`9WJls*6KtF2L!SEvb+u&9}GMA{)=N?bm@& z7k<1!ZAYItRWLqS^;GF8Ic}bf5>;VhB;8rvjgJBpkxHTCC}5p36evO=+V}<=tH&52 zgKfH|mWH;n3Pa=W2Fb5JS7DcsF->Sf-P}GGdY;)^_H%!ZvH_H{kGo!OjBvK+L>^ z5!DtL3 z{}lfrt&AYztT?b2uOM-HUt(nto!Say$EZ-Z4QvRA%@ZN^IE|!5Fgjn0q%fyhpF~Y>3h;8CH)d&e zJ$Mgdy;gKgxD(7|E2)NwO!Z2801R}3iI*c_-;$uBW_}3OlCA54nF;WD&1REc+1{kx zcc~tKT=nwha9Qy*57(29#Jt;>c%^zRZHN(f!*ok@s}aAP=RI+Nnmaqg2`R!6=B)lF z7Og%g#GgWb9vIY>_3sUt2~Pb1y%hP5A51z?g{!}S$x{{)Yrq#7dAc*m$8^hqz<`Lz z#U|S-$dvyEYz2pHthLS2gtU~w0^T=NN}P15)!O9IWU&#GDM?sf0ljVObmjFsJ}?KG zg)D2n^hO>`kLgtJ%q!rwVpmgJW#)O&hvZ6)SyU}3+bm}uc@f`ZO8<$j*@08MerAY2 zh4KU$Pid7acXwGLE_LeWh-`S%Xy%+vM+v!Voe4B#5&aoO0RL3ZE8jpW(qbxKN-L24 zgc!;zOeFG2m+h{ZoM9gnEa(bYGj~H|!evW80`d*T?Dh%51rhi1bmMTPo$NsJQmvJT z;|D)oVShl7x;Nz|n{XQ1N0)^HJ^KRFrYu^J@Sod)emkp15pA3a$&O6y>>#ydI;7%+ zqPZG*xhNa;B7Ye#aX08&JDFF7k6h4_jiw%1L)?j-V=W5OJ#dWG<~p#{T%*29JxIWf z6N|ReDPj3Dn&LvWFq+8#aZ=gg$L<_~63z&J0a-i1PAn}q1f3PBSGz}xDLc^CbK&`ct7%bt$+u2UW^Xm|De69pn4KTj() zCA1ICTVQINZnlFmFwl|?PtE>%IMCLYQk1HQL=z^D_bh1i@ZZI-qX^$&RLJa%~q- zag1CFglseSF{cebku$CRPkVkHu1jcss`4vYA&E`o(p9?}Qh1H-Vf8m1+*4Ro1!ax) z66-&=b)t!K)Kv6M1>YasQN(LNi#aqp(t-vylcw3Cj#g23RD=6U(F-c!$DJdwYfI@k zjP^O74?ZNrPcE%10$a`t&6}G5X7}o#q2f_xh!3{MMz>%HOC6%H{YOv?o$-fMC*|G* z;g+nUNABIUZPo1r(?E_V!8z#fm>fepHfQmROowSX5BjOu#FN+=R`DBSPfiTNjp3^5 z=Ytg2QHg7&ghC_rypw9L$4 zY+`jElBc@7q#4lcVy9b&=(Wu;A(iL9Ev>O$9o#1AMrAeg*z{B}zbU}0>Zi$Tv&DWt zVQ%-R7HQKvZTup7*r(pMwZ zGmE>N4Pz64WzYfkon^Am>ld7fC;&(h!97X$i9&Jt;YBLab@G7|X@RoMG<8Gx-%B2i z+o%AuC}aihxC*U$!|PUqngi6MCt5VdRexRjtQJ}D;^(^b&Z>dk%&_M_UFX4#82TB$ z3I6c_Q|B3f7aDpmE`F`>niR+`a8lsMy4&KpQKa6@DH)Bhg`FKl$an0DWb9Vr$Dh zh2MC=REeO0AoX6wT%M9Pfkr)B1YRv5a*i=(diV-a;Fy`~|~zz3zKW+(crGg=Q1ULt$oj96sD zhfa=BCmUiH@oiNfYK3dBlhKJOfQXL8(urE?6S<%q<$eG=sE3Y$m(p$PQmL_jGPvX< z?t#r_!Ur;ki!NBI_`~eOr}?6>VGf%bLrN+`zjpfOI3Syba~iPY?m9>IHd894ca~6K z$%Ign`xS#?15x21+^6LV>=<=vTF60M?M}r2zF8!Ju?LDOI zuJ;3>1|S=}v~7E^JI2lXa;qjZf^%#{cE0yZdcwcc%#0&l;85si&-DzXnG{F=-kXm3 zoBYl#PnJD?w9d&LcSA{N1bWcp##Dv!g~?P zg4oscr?}77y&hv2_>7r@XX1GRde`y~2>In$szQK$ly>N!c5g1+xT9spvZl!WxMPU#p( ztWA_$oT)nrPzpkCr0orAq?8wcUs|Gc4;F_R7;Wr=-fwi^W3()bb>WZwJJ>!s6Cz+G z;^2||TsNxhzp2f$Yb+DgqMcV(A(N9@6cvunkLa!1DP+CNniLf&;53tYfteB7Sr%;Pf(D8Brw9deKUVVwjPs z{jylltOqKOVgR?@MRS{gLKmatQV6Ivz(2OfilWHbE2i(}XmDn!mBI#rKEaRva#iyM z)s}Xqy0^GgI#Ejq+~KP4MV7EgaA6^Xe3#1(FUNH-`g36eE(wbn#(Bu%*COuYA% z?YeFzv`3=<6(z`Ra$iSO#=L7C&4&rHjkc&xCIRM8Pk*;p4tjdQW5|t~@Ix(ItU1pH zOFVN1Hi?xP@iWfeMWoM5Qe6rpBF#cCj{98neD)wid70SLqjg5gzb=}Gc3;jWN@~4In#RS z??Urc28Yp^HC`qXr6x6Zq^XHlg@HlQ@~V?WTs8FT?y0GRR*bs~S|yF-?zoV^=t`WO zIlxYE{`+ZFaQfTh`51c}LT&rcGY|NWcGjCVv+EMd?oo0vt8h8+)=$ZO88Iy7Lr}nL z(}Vr*d@&Oj$6qz%v-0#mZqs7kK8Xd$Exc>*%<~GF7piR-DvC2rfPqhG{jP)XWQ~$8 zPrCZwNr#_rnnkCH)pw8#kFIv9A^C5yXuFV8S8ql^O(xRNpD+R1)k3v} zTIFi$1zMhj?^{piD{l0fVoOIi#&1iIUv}`dYg1XwXqy##I=?hE*_-a5n320x@UW6I z>onc@tylLB80@ODAjqUnl|AVJs&z@N%ab5*d;DACz@&ukR5n1)r*Q8Uikj{W)R%a! zT9d2wSHi-U@T&r)oRD{~{P{*L*9V}ryX^AH)R`>V!=CP0L?GPS1{i$E1q1x>!<0g~ ztK|`nwT5F97khr+610N|ugd8~GJUDB^S#A)r;)a5fIGEc6)6Hl-!Oo#J{hF`&B*sr#D{Geqq+!f3Q~z%biTBMtS~D7Eto!Q#g!hR;p;pkO zQ@QgTMm12<;%iR}77kXH#TL#zhMKQoM)YjS3t2`-Nq``^zc#hG9TGLuIU7afc>3U9X6+prUo{a4!?iTF1PdU2*%8ls;y_EJUCH2;f` zK?9-yL{GjJW3dy=tmSs_7@ZPT+07?W9{N#1@ib`?n(X%t!vhi)LFCKW|AMn3RWILuGp0PV3bE~HZrVbFM<=9b3j@~uNqQDAiNeP!8 zPf6mYP_?g=%%xw;n7y~0T16pOQ(YNBP@^|LWyG>Ya)Ahm(nZNQo)G&j3W!&0Z1TW! z#nM_O=-4L2GW`3{lfGzj~h~&MfOjvl<%PQN+SQaPm!|vm`?Ob~$_#cdrrL9iVXOKMN!ZTRlbkrJP zvgEh%=0pr8bj)LV&7e=Z$Eb?+x3%I;t&3Tmq69%G>m72UUn>@Lb{##bQZWBtbCqjV zUZ~~p#$)0c?BeXSHPr4(Xt?&mb{+tOHo$F+A2E|yL-n*QPB+e)qb6}y@mss{tlwtPBLBtIO@~xMJDkxZwV~|^$>>jh4L>XI! zfFE^F*f$yQ^H9-Bn#XT;<+fk(aKFV6gVT0J_}PEcQW3O^sdvwG#-Xm4)%6WuaRE~v zk+J_9%KV5gtQ}q)!T|zb$bTGx;I_j8(y(eVzI3tr!q(wikm`u+)A>5#Ryv!VG0ZQ9 zD)=a}#+e)3^uOu4hX~Y23aA|~YB*JFKqb5>mCp9KL=~IX>W^s0hc23U<{!?syf@HO zH3LeA58SNXiwx>+nx$o=JPjlvlO{<(o#tqYGx}RZVOy4aM?Wlpyp%;)C_8b<^Y-A0 z%gDRU+-DW%My>h(DAH#8BuPR)W!y|`MjnO->CPJ1{@9-`wj{0iqbz(B)ObLsDkYX_ z?v6?*TGb;{J8!fESHXH=YNlbj8Ts4BN@@L&>dr^QW|mF@qy+#SM3#i_S|So|c091g zOfnVA6Sx;5P>ZK8c+Yq$Al0mI%gI{Y9Rm#p6fy@Z?&0}lsHL;3kc(xybp#gbPn6@y zBZXUQGCazrB-K9YG9G|yYZnPbS((jo3Bn!caL7+c;-%0|i@d(17yVfuw#QVQ#Gt2& zj5ZXFtIf=Bb?l;mPQV2g@f9AOIT9F{?4DP%r!xa7Kxj2i-8|^6A9_NtZO$Omi<4MVF0l-ZJ1>atSi6|Mk z>jDr}URoJ4PUAZ##L$-%G#|AqrTusgH2l#p(N#|amm4p!0yzDH_iFuXT!H8!JQs%Q zLo3KmU$@oWpJWul@F$e(S-A1ZO;u#-+^G2Ajay_!_o8!p3huL$n|?Spp;JvcY)GIJ z5vY)H1R{!^W-a~gp1EdrG+^5_B0hE^{gNs7N9alW<63&9pxkh1kBqm_rYa_dnYzWZ zcQ$-`SQVUMftS{`>M`w)V&g`Jfz`v_AH|OUG~b*(Sbh#c3K@W|{AA$QBQs=fd#n>0 z9B6cC>f01qq`;^P21HR9gY57=$FIA5HN}K&QRxz40MEZe;}Ft>Go9pBy~I;tXYRNMHEUgV^%r?4n+e< zP|jmAO)l>TD-@z^SL1x2to~4v0XTt*#D5~b`s7do%dwiu!_M8J;jY`z#AFFq zNgc2xoTk)RIUIueY{ax2tbNIvWrLGkzmvJcAi5V_1ag-_=5!9i)B+3`Dec%W#vWlj zb2LRzV+^xpUzx5alnsQOJGGKrh~i;{0GcMuBQ*!Wb+kQve!dsJ6X$CG#e=_~Lyv?M zPTwIXx#9oH>!dAhCJnv5az_b2xt{@>^e0>Fwf+}98^*t+O-~9eU+c)q$BBl3&2i)d zuY&aqO%+@Totkv_BhkD}vAQK&To1)L=|D#|)7ogD*J$W`W2=1#?y&o54{0Ip?FFohr9@h^N4?&4%cL+PyE=D%>jltV|%1bqpveLk!Cs1ivRSo(|T zoNguj)SjK1oz$66T)Nliv>VGRukVIL*#10jW-iZ6?b& zr+D)wXEz7mpSJ;IrvjHb`;nh1&$2iyE~a||jDi@BM?n4g+Yc-Z*g1Yem=BV~Mz?yM z|P6Jo7~W{;+Tz zaOYNlEg#4Cu!8-1X~I>2?}yfr6Uget#iZJw;kGvBD?7+Z#~M^era!!bT3W_=0jWKRWpQoYxXfqPo_UtZK8l%a$i&ryvLX@ zx|B*w7sa)8h54m{c8Z%n{s2rbBfYcQqf8s2fJa;H&Q-%1fIhIZGjDc3LEy{FXBa=)x1@hEN?Je1T|vmSZj2CTf}JOPP*n&LCsyBbyu0&yp*jQG4->Q9ieh9 zu?LIkuYtX8PMY;r5lTDAR?K|RQHud6cFw#V{u#BN)5-9X0FdWqH?i1%(duw#RDb!Q|G#t&FwVwsnIbacv7GEs#8CMU6evd|%igQQ=PjCfICI-G~ zS%@GNI9C9M#x1*y;f({hQ){dI2m;wKiVg5ew=f+cT08}KWlwW?QOp-w*r7X)sW2i$ zJz=86UuO1xWEleA?~MA~xr%S zHdPrTlyJ87FeZ*Lr*5==<6VTFX+K{bA(jAZaX;b#aJ{myi4xr!4~GfR^@t^Fi5Xwx zz71K{96C|pN_lLczW&xz;g_yH0xwi*P~iVsNKxvQAJEkc$rovx~a0O2%6CFBlW`Bgp0u>p_L+@*~5e$!G4`2%_#$3_b+uh&W`| zu25F6+13o)>@0S}t|=*|orGK^d14o%vPYH#1CTSp+>zjqveSxdc^Qj;xm#5d?TwgV zSLO~i`3ChW@j^w)2GuR03fHnKn3=0t>3x6J?pTjkM-tASMAeN*w1-CwXp zGDzrB@cp(l&9bB&MnYG2H0;YATkR%^JM(Nx8;y7{@tJEMhwti##Tt~e3>(`^nLZEG zM$qxh;L4O&OnruSRj7P!qF(jeuzCws{i_ADqA?fu{~2SchFU)vjDZc|K#JZ5VK0rH zHyr4v*q4_Qn@BcGR}Etx`IHGOkG;#ikX|3=199GB+lcW9vs*9A6F-Bbhvonj)OvvW zNhPGqNGLGKawF({iQpyxJV;$!0HJ>Fvxq6qy-lrZbh5kk392(jsTKbM)goeskHLIPib+3VTp3S|@4tt6C8g!B&AZQQr&=Rc&HQN$djmACkH{ z5F#ccoQw7oRjLJ#g5O-@e^$?mA31SOWp^KM>h3Q=v8^$IYiHdF%(E2cika*8|I6s&N0MI%&{zYSfixGQh_q*i_ zbjv5cY$@^|ZLZ(-Eb|=z??%~U{EFr{|8(6?Cqr7#k#b2cG-X5Uz3fsSztoq%fJkZ(VBU|ew7$fZNzz9O?K#_7U_)J4H$warTi6T zfxxFKt+e=|&wY6ifvys0^sEX^@q~H+MP5JghRrtv)O<() zjl&a*t4+CU%1jWDjnniJjAS%KRh2M{coZ}p9Wz+=XfJ_cOL`Q!1%*EFCQCXzeVrgG zEF+4Rt6cg$1CY>Ly8a*Fc~G{ff}Q#LMr0!KfQ9PirY{2!j)L|8`z*rRbEZ`9l`9D- x2jIMDP_M!pWlY^fBXgOvL0WKAG=#^e!Bnw literal 0 HcmV?d00001 diff --git a/MikroMaster/20260510/20260510032002-Config.rsc b/MikroMaster/20260510/20260510032002-Config.rsc new file mode 100644 index 0000000..fa02b49 --- /dev/null +++ b/MikroMaster/20260510/20260510032002-Config.rsc @@ -0,0 +1,4647 @@ +# 2026-05-10 03:20:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/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=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +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,::/0 client-allowed-address=0.0.0.0/0,::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260510/20260510032002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510032002-Diff-Config.rsc new file mode 100644 index 0000000..361cb80 --- /dev/null +++ b/MikroMaster/history/20260510/20260510032002-Diff-Config.rsc @@ -0,0 +1,22 @@ +4295d4294 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4296a4296 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4299d4298 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4300a4300 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4302d4301 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4303a4303 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4306a4306 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4404,4405c4404,4405 +< dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ +< VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +--- +> dst-address=!10.30.30.0/24 log-prefix=VPN-all new-routing-mark=To-VPN \ +> src-address=10.30.30.0/24 -- 2.52.0