From c776fc687ff98c73daf41d7005479e5a54b268fe Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 16 May 2026 18:20:47 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 16 18:20:47. --- .../20260516/20260516182001-Binary.backup | Bin 0 -> 248227 bytes .../20260516/20260516182001-Config.rsc | 3439 +++++++++++++++++ .../20260516/20260516182001-Diff-Config.rsc | 44 + 3 files changed, 3483 insertions(+) create mode 100644 MikroMaster/20260516/20260516182001-Binary.backup create mode 100644 MikroMaster/20260516/20260516182001-Config.rsc create mode 100644 MikroMaster/history/20260516/20260516182001-Diff-Config.rsc diff --git a/MikroMaster/20260516/20260516182001-Binary.backup b/MikroMaster/20260516/20260516182001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6a650cd25543d4881dd90b7deadb4021d9cc174e GIT binary patch literal 248227 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ÈkoOu&5^gHrVo~mm zK5x*p(qH%g2U9{L5YM#pJT+-wVXIdW$lK}>QhRrq!?GLy9P;Fjo8I%EVI%*Jo;8Nj zJ+Qh^DHlyp)FbsXfAc3Qi16nzB5uw4k}|)qZdQEn99wQw$?1Rrev_#q zITWnAhMqnGVK509<1?eJx{3MZt*rUXX0RHOr1A8gwD`X|jT^YKbu%A2cpKyK9^O_= zg4zdglbWYtl&$-OonQJ@sh&Qi5R{r0I)}m*f_BZzLms8!6!xg!9 zD2x)ARqXf&dzu@As-$3IhG;1vEX7ACqV0blK7ufW0_^7EtMOH)A;{pA^lIPA%L<9N zoe4G&4~3iLb-(A^;ZbeO35(znLQUdokV8OXa}(Ah%%6IEt~=s zLQ$vA`2#M7X=A+693%ovGHtDZu-qJSugB_#>iVig5}piJ_bD&DtfhxlH0f~IfQV*9 zNv(bN^D_Jv%tm?XqnTfB_Fm7&O@7cvt{+)q&LuDI(ky--g7OlXx-=fd`#g4(TJ~2A6JEKz5BM5DQ@|)8^$SYLT7;? zkE5w}SoUUULVNMWY1kl;jtUiMvem$hG#E+5zj!eeZ54M=aJLAaYx6UEBT{rQZ!x6|hv z{wx~Fal(jC|D2zky~2}n;7Tf-VUC#C+~h5mhzQ(o2ZW-n@M=Ll1o5^paKgHO?CBI9vjmkh|oxWDY+r};wI2((F#vu-U?0p zIx>?BBDzH`Qu+ocEK-wg3}|%lrd@2i`M#%?m(wDpNdMlo@mKC)Qf7jr{# zRjn^)@|Le--Z0~}=$*}IzSj=KJ3P8el<4P4r5x4N+lSMwU+0n>Sa+A+S^{4&n(piutNIheZ!C$2O#cy7z==eg}c2zD#o|GWVI z7}n&CCow$*DS8Lr(mp4~>diWGC_I=Mp?WEOGPe^a^4(L0E}dhL)= z0PE_~{Cv0#^sxgzzm%tZ*t(1*rO<~6gL5j%jw#yd5LQe*qjDGv_%ddcka<1#nQ#=h zj3yr=1Pccg(DZ-|%AwvB00gGGKu*w{mJCm`RhgfH^c88+M#QXDLE+3to>8}z+HVl7 zH>XC3{LIc>9u!!@!mZ8V`?3RnC*7(}uNUImqsjpLK4`?n%>#8Enm4{_AD(0!2X%pH z!nA4%66><)t!;r!Opee`cM9>SWs+rxxtB$J`f|08qkN;L7Gw zh7DbCWh;PPz2!E(QBvzvlLxPn%yPWl3TBYpA3tX{_Pf-SPPI$?iREr{hX=g(Nb#;o zuD_*3y*Bbw_MkYI6zp6tV8^@&eoWrR)HMe0HtL3`E1CCP+gXGsDhc*{uUftz+K!DK z-$aM$tm}tZzk_jDJjT>Ty55C0^}EA5R&M@6ebg2b_Q9E4B*kuY>9sgZ0x+D zf5lq&yS1H?jkhCRg@s+b!8=g41vPSAw%&y~K|HFLuaeud83Z)CE_bQ0s1;1?!KbB) z+E9~=_PKBh{E%e}OPV>9J$6oN5Rb*ty|Sx|wo&)DLDItB`N|S`B-#LB62R)WZaKQ< zp)VkTVHoCz4&Dd{yA7~xA^$bT2)jih{@T;T6 z#xBNM8kcn2MdS-1PUdH%+Q(&%k||wTgi7E!%(t8Ws$|s!$32Yl6Lw%8RAtiz#jBN7 zNd^d5(2Yn#u3BKYwo5e%0VGlM{13pLe9+ZYf76*?1C8+`x%X={T;BKy|5KK5PzEwz1NTCxpQ5(C6W}vHqIw=~q zz%pHbrTY+GLQlAA)J`_W@n1M{lEp_koNublTC=wB(_ORgzZe!DAE9g}mPPF$${`UL zC}y~DPKRzCqCa#Iobvzi(x3;~lXaFecaISd7s+p(Kj3s85RtE4h^IU~zt!-#OW!FoA9Bb@_n6tqmW=N44#dat9!HsP}kJHAOJ3H0f9PW z<fjwk*wHO3h)Y%YRW=!I{cC@FYa*)#r+@S8TdZ*H5^(K@xW7a^MA)45GAg?|LWTi$5K)D6ITngqJVlMjX3$ z6~IT$KA-NNviC!0IbSm-kUNyXQ`mvu<*R=*J|>3E$+rhebF`1Q!e~M(;A-kwEods+ zSB;jXiZB`C=K<63B8aJb3{WT)(Zr^{NW`L)-<+Y6{jXD5GqrWx^$ipULS_l`CdSN> zPovvjUYM9V zsZE!>ca;Q5WY~qo6^&{TgAbKg#eM&v(UYGI-Owki!YQDwrITwwln(o`?jLC|o;QfZ zc9jQrrb_6QNPqO3-vhZ3t3@j3e7*q3fE8DR2yMQ36)5=#?y{rx7-L>Q#bMXw?#2ji z!O-%0nGq|PmT(tlF51+^rfu)-cnYI}M5wSME7s0Bgh?N?@%WrO#>#u^9;l$QDB-xH z7`&48yJ^MF8>(p9Dg_z0|;t8GA!B~8ziFVC5h&pl&Up4>M~OvoFo zO8_XcRMp{2m*_)>2Fm6HC5~Z?@6~?|hmK>D=1(^cfseKwCF>e$T40w?+Qv_IH4O`9 z+l86uYT9!hq1nz2!$0<#%;A!Hz+FNg(}4Ic#mn!ujF5!wnd~8v8;al*akZf`9}mm# zmooGP^^uh%&AK-z3l$mMV;n_i=eN$9Ciwlrsi&uGp=kUCXE1Wo>_}YfD{q05Ed38_ z-l4r^f_`Y%OulE)CGwP`>)AbfJA?~y1C4Ny^0nSlhLg+&TDn&W>i;t_1fQYzP6IV| z{(rCWJuQr_JHw%0fqPU$8}LPz=7M#UiH1p*q%e}O@kjP6(-50=t9`YrR}y^t=DoPm zgc@DZ9iv)s7$mUkL0%IYKiL2$>DjaY7T{Dq2YnNL8t-)1MNyi1ZLdqY4_egzA?Q7T%HoosOxR zDjhII#AG9|26wT)Ql*vLmDo>Ymv%Av*h`7bb~X!ICcrq8vM#S&&X-~}9g$tA>Xvl5 z9w|V$)tr3EsGg37sYz*1u(h`Dj?@LAZ^!1_{0nmy6?GraVB4jn{Yw}w)Kj?#xgGe5 z^`(&6t_hO$`&I-NeAXflpu;izq!pQ&^Ow%gYg<_E{0U*+nM^#^pKRXTZAEcfO=4Zj zaBxxRX+7e496}!CnH0JeKk9=y9?-wL{f(3`9UiH6%x@FGV^V0wCbV0|4X!CBA}s;P zF+CWKh5@37b|o4Ct?VN&xX=NTE3)%G()i0s6l(AErwE5^BT&@3l@2Z0>jaNf>A1_m z-0hS$C%aJI{~uP)8g4^DNXS9U%Y$u1s$-L)S@lI+w@Zk)fm0C+q$bHN387nLZ5 zlc;%rK{@ktVn1}(|Vj#2KU%%z!>hI|DS(0PguFD^Y?WMZ}275{@2NEvDy ztftN#SILeT)#Vte*B+&(dEJ!R=G)L?xrsYML2ce8CF83M_F~|fIu;#jnTC=s<)M_W z$LXtqB_~!uW0THUI?-*!A^tgFY&ljWGVEPSKWu?|X&#GUo>#~t{y__3b|4O1nbZSD z=VPi&Jr&L6DG(M*r9t)r0HT*{jL&G&b(1|a1GAx)Ss-5QDjHbMiar*K%I+yK4t8;2 z*jnA*%%LFY!ZcytzLnGo0-NzDq%y*W=rNX{g?S8&(u=aW==Cwmu+p~_iRC7Km;weh zsKWTQrJy~c8+~Y>rSkF#1tTC7(gxI0A%{%F$Og?xu@`Y8!?NDfAQ@gzj*I?hM2ct7 zO7RT7<+QwQ*3syA$`;$Jpux}kRD zZ70w++}zJe&S8aWhPN6ASkvc8z=-57kGazGG2o8EVUk%xOw(u|E2`paP6pZ5uGeyO z(t6!d1b0q`WI?CZ>MhL7Zw@>TtGF>O^9&JTy22i`8J_1NXO z2Ox^H1&P(HAhhX=AlN0S?qS8u!}!_dqH~U#j9I^DbaRx*)Qp^=<+cb{@g!v%uTot* ztMs&#ONflmEuKPpiCXNwxpyNY*0Z?sHkg;#B}vY)6=s3lUUKgrLv{6o;74c<4_2mI z3a4PM@bR_`wjg(~Bc)GjEAot8_KRYNzHBsaC#`sL;IU>O*!XWU;O0xJ`#aD@dh3%T< z2Sz~wMii*qjEkY*Tw|P;T8WD)uO+-vY?385;JF#CN?Cp%Rv{oJ;Ph>83z%catQl!M zio>LkdblZCNjJWh&qT_WkW7TxDu`>6^t41y)BaO^MTk<{lUL0Gf`so! zHE@GM7}nyvS0mjQ7h7ams7`{q%^ELei>F%^MO65W8vmigfcN3vtfl@^jG7+#r7P8& zz#-fsw&zkQb+hu}@Jr@#RE=F2VVNxKX<7%)`L>;Dq~I{T>zJ$A5$k zM^9ahI}BM4;wN8RH&U0Md=1rZHdCN}7Mo<24I_u@F*h4c&$N%9p{Fpxv>t4Qn=J#$ z7kx6w>JVe_INetTgWV1NX^u46H#(qgb|H^fNP>+=TX@VND%kEK+}dyV9hf@J?!0Zd zN}1)65P@W&-{){V;vqkZEV~g}KN)WQZDl5jCZ1jG_{(MJgxj1WM1r!RjSKsoXNiEt z;r_2G0|+JwVNvRQAUPPQ=j&t_i*sb$t#p|J%(|oCThyIubecHhM?%cLQVtf&p0d0& z7WBAgviDxO@$E)xgw;6m+3{JI=rqm)6At=YIlLXJ5(}}D#zl@OMvjAadBuCNbk_D* zzb7EZzSZ2)ey}6WaCW^sh*(N=juLomx#s3llLv;L-Gjz&x|G}Hp&p+w)|)j#BWRdcG%lgWvqc%_P8#td@F=Z zlXPnhrQw}6*xS4j=tG}yzf0)-jiPSp~-R^dA^ zkfOZz?cN4j-2O7+pR~gSczg5T_S+CP znmM%bHV;|s(z`71@IEdQYeWD<5RbLjg-jV!o2-lqpbE6@GQmBX`(@9Zrqdh#Hng7) z%a{aIBW$L<9#o!eomG9+b!;h=6y zu=G0v&O1T_IXV!&Z*nE%l%Pc%zw*XME-+x69G=lZPYJp7vyh(EaiccQD`sQvg}WOa zGRX)lADw&5+J$Bogg}00hl?Hj8|)kM06MrrEr{*p6CQXZAQL|uOC9oAY=YO9Z#-5r z@esGs7udN6vMZkQW$K}>1f}PYl=$x zX}DmXXTtJbHn+kHYICWC9j7qOKPQm$xYKkZsacF-IwV; zLwc2X!EIZ1LbMS}#X)@oxpwzz6+zGX%^`;6-IK2jPA|;TLj{`5H@r%A0klLDEYCk? zilQM+1j6v{{Bq|o{h`07c~)#HZ}S zf%uawY)%LMAX^^55w2h+GUk5{Z|4GR^s@t{_LAwD-hV)?UVcyNlz}2L>iiRcuEZNK*q~b!;#0$2qi`9A-;FG{6ei$s;RVuLFIx@-Q0AREL9lByojhNMpf(V( zt=-%}XT0m8cGCu7N>QfdkMSB;YVfyLf zNe??cK<<>XW1?p?543-2CZ-l&hBQ0Q#l=f6PiL_Wd49;rVSca?JDE*{uVjg$Uv;a` zp}WL{a{3S*-i=w4FT#1L43Z*Nq7U&;MN}KZJ8Gg+5BqYBKph0M4)Ml|#?%<+`wx_X zM=!HQ5l`bM+fvK8i~lE`xECBtCgf7^vKXS9RGq|*qT$!E5QGknI9j*Uf>sbh<9UXz z^X)K!I^5DrO}=NdV5_WDSd{T&y|F>wW8R>TL(wUvV8`rdJQMcd(z9%=tkQtR3DkH-whz&^<-Kix}o)g zfU&RzVyKCQPHe6kF!FBoCPh3WJZ(x8aHnURa|JjTkS@j4&k;*r3aKCan;2c0U+^PR|Nqk7PtG+=Eh`D<&F=a_4qa&k8ob@yVx-m<9YB9W7$mqv2QgXtnQ45$$= zi67!+QbTBw!TxkpzMY)Q!YuW+AfQ<np=;XWaw2S4G{*sy%gy+YCh5-;wv6<#SmWD1px|_Za%h+w zOr(y{n4ozODxGZrj`x)?mIJUDDaftAG0mP{CBYlF0R;|FfF7*g<ID4BFpCk}!}Ix@10`9W%5U)lC^zxy1 zr%&&({CQCq?WTq#k#cTgm)A{Cie1CYb_Z*%?|9h>_ez$YuAkwV!dO23P=y_kHx*fT-1@t|tFVMxPmMu2FW*Ipoj!eprW}XhjV*JLRhn;LHd6>J zGV`--roIr;dCAAyLpdnga?Q)P@t1yT;7670OD)U9F>bo+`gpp}U<9-H)9$y{*~Kh$jV@6;FM;t>7H%qzO>W2bg+ zzx1`O-5dAE?+*&M5OWRM=_ZdL*ZY0O2A-R0>g{G2bO7;qKZd1MM1u;{7*zw5iMwcW zb{8amOvFg3&l9I>_WNAbs%j|}DCK0YD;OIPGWz^eCH)x#2_-c6D!~u7ndzGTTZH&j zRjvjlJE0wrbr66e>C^;2GtkD#%{%XzpvIBk+@x^+(6d=}b-4dx^hkH4BXH6w z3*RG3mq@2=hs8M{rUG5i`3Jm%@SR3E!NK~&YF0iCE$6VApb7JYfGPBCD4Mmj11*5> ziMp`G=I=3d{G&I|-2U)ly4aC*5-CWM*riV2D)C956Y6;xE;D zKyUTK1Nww4n9yaWfh1H)V1^DJK$r1NbYZkj`954k zV}xe9%5i(%(R%DlltTIG*8@Krzh6OyOfP5(1DE!&!G!OFa=PHXsEIsL6Q$dzrf zK+{VbsxgpA82ZyRzpa!L-ccpa9H6G4!KCQ~nj77xM;BpFPDORz5HO!zV;ZCsjm#cN z8&1}iPKC3;7?&XI?xkH}c12@t-S-xc@b5#=^7H1`9e_>9;C+@pCeJ*UR;B;`+%B99 zI_cZs<|BD2{oZT8{-P3e!M>IhVd`1zW!yI2Hd-AkJQjM=1Df`ZaJ8hBLREFmp=Qq? z65^?%=FVov-wv!}ipq33QGFxI!l+c^nvQaqZjM=n?ep6{<)& zSDsGz%~Kjek}O7lxjMatrnd6s>q?k|LYXyMQs}T36$a-mpkqndbY*U7{#jC>`(5)j zL9 zwmw|FAWRf22+MSHrgWj{beX@MBF>f3`FBlogU;l=qj$2{Ehjj3-|cGBqP#b+Ho@L*)7&}nL7>><63wKiM3Y*<@9gO zl94Kzgu)!e-hIp(O`EHM=3sXc0;=V3vx0&*Tx+f9*$L0ue^!@cugGqypm{m`UbYg11#jOaNxfitRB+7PKkf6xINo~-nF znl;DSN*=g9>7UFCdudytE+)_Eekmn0{`MMh)9CNoQV^sfOoZB2rNoLBruj%{6K`HN zY;O6U3`X=YI$NB*NgT{&;?(M8jvxP8sR4o&VUvw3AXjA?sraM9zh+>nZ~p%AzHJ~{ z-khB-iL2o>LlcPTJyGj_d|e4RHL(;NnZ6MLOuCt>V-S7;-Z(B;WX%&EARDS;2GxALgk_iUzC@I%DVkA>b_wWU zX~)^*;ygVPJ$ftNB_bS)0cT&O>L|3ne^AhanofL@Y*}RTo(-|4W939?4~cgKBf*=Z z&Y}arYMj`aeXKX*E9;D1JjX=oxz zz{<-04<#e2cLL|VQZM)hfVxNfYl`$vpWq$XdM|mm!-m77Npcj01BDPZzPN};# z!e1!L@uVK@Wl}Z`+dqMV@*0fC4u1lZ{;uqa_XLM0d%p35VD5STS9J(qIzXXoE(U6| zh`Mc_O^kt+PA&Gln2Tp+pbJkC4b_WL)Mcti=C?d8IX4Z|FP9{lujDc5FNH4e2-Z=;diZH@0;dgp)rkdVUC(A)5?CJDT2#tGXmQ6hwcuP@BgvdIrAfycgbj0k}}A|{hV*(|UB5{+3`?|1IY5_O?D!e>PnH4WW&1$vp%T<-qq6jsOb^XJfd zL}=7iMhZEYXD6>#LUCb|I07<^MC1S2fB|-ZWa!et_=~4* ze`7OTS0Fk&_TY{ujk@M|fXBmbof(JkcKM)SV!?%m8gWMxD?n+Lh^Nf`eE)UyjTM9; zK53N%WQxyIcqfn7JO+sc?9dF885qn2P-*Uvm;6A7;I{??ZxRGB;zl9-2s2tltpD=P z(f9C$>e>;xWhZ&?c8UxLF$-@-Vf1_+r94+ge#o+Ns<&E0*A{CcNO@Gw+jdqIr#aJ` z@X4$Pp@$-ewG>^zGnHhw1(E7}Mh;=tNmfw^&`D&fd!XG=VEcbq=OwR_tkcp{#SDyO zA$Wk%QfERK6VjV?fsI~Ec^9noP1o(Ne8xOQEMH?BQ`Qg55M%!rk9P##$<$s_#r`wCD0G7cHitOw1a`gVy5kxLH_Y^DFj%m zjUv|1QRX35yM)tqkG1DcWL#qCq7IKgkGgdrVSarV69Xo|7$+Tye3 zk&lS{17RMf+bp*7-aXXh4r{;aTNB+2D5XMGo8imLujqA-BXRocq70v)4FNRzL|&q< z1MME7#@`|eG|cl5LNlO*kMKtqOCQfrLdD$VL0-r`r&=pcm0EMZ^02NPqKB?9oJq!a zTF^OXo0z8xg`?&~2+|MgYlc<)^@e17Le51ZND8LjnHwX1#R9aOWBQM{)CqsIb9f*C z&tTvJc7BW=LZ6m-bBb_D3;cg$?xueeeg4v)IiDTrm+Wgv!WBFk;}(VVO668ESWBxr7XJ>rkB4G7zX6R~kpwAT zZb}5@vdOMTlf7>|OLFH{<>jh??#Y$eNS8YfYv z!GD4Q;JX6tO-lmrc@vF>NjAu&)dK>SYX#MYg1q*oz2LJ>2}x8b^%_3P3b7^x`lJJ|Lup|@Tf-0`DCHsCfZX<9lHPcZ699Jp%~S!k{X zWDZ6lsBLi1+qj*vRNWZ){^?9Dm^3kH@d_2k#eEDsE-_u~oG|tOldIY|Flt|S^5@ve zy6Ko<5F>QrDqlbfu{2)^38H4GO_GcZmbCq6L0#P=uC18q8co!Qt8sYTBV8!cC@Xn8 z0}2ETRLtJ|8|4#Vx~)XyPq#aun(d=v1+~2L)S%!DLNc8GA?Qek0baI@xeCR8MT&3` z;zV*B-Y*xLn2(VZL(oG+$>}+4${U|X^5+lT9P{(Hnlq)@;#0C(0DPBo0&HoK)dr;M zJ34WBuY&6|(nw3P$vMNr>y2cr{h>N0yiDjvy-o>>WtNN&19$u_@u>5Y``gDyakEhy zKW{X9aG>bB7Y}he`D`S!hQ_(`J@^I31p_NQ{rt;B3@ulm?Ug$htPwj3l}*!SZFh%O z>u2AGS9OB~is8suN_LhVTK~N7EA4z}jEx4mS0QbyQuORDl^B^kP`-UFF}s@2!|DIk zD}z<)>IkPra*cv0*^8;KsIV+w=AN2vyM2!;IjGVpZ%hbh8F$#5gcA+F@7`WF7x57i zCAd#I?>_^QrRPw;4QqszpbYUsdm@(Zq-0(FOmKo>vawZp2(t;&=ot(4=|X#h+?%|VL~+h z%Ttp|tNI@z1diQ;Y3Xl;3>tNuWk@CJM)Da9J%R2_46wniYM2fFq4Cvp&<0~!Svrgf z$!4aRRiGQs>wFeMy-R}9Cu~HCS^ayeW3C$JK;t%m+B!KT$vmj|+X(cbuYuC)T6*55 z$&)bE_N=#ni9DvyPkUkZJJ~y5K1gd31ua_KCTUissw>K+DEd@@;(W^uZ6!d zbPjE1frd2C3@kP^Eb>tIbk!cX59`M?XZNkoZLy7|0$`QE_}I@Fw&?Jzu{?K-Q3~ZQ zTuW16r5Bfc|C|#epI-~xc;`pUN&iu9YPKzvQA$d$%1#L*a}$XT%a=D>s}!jnIF%Hm zSxH=!iZtCFK}*x#f`z8S&fZ{ab6JD)f>?{xGc*Xp?yFE* zlGH;<9I<>gt!E3q3OGuJ)fx*(FI zF$7LmB+0U@DOAfgq9t5ZXVl+|&|xzEgf~pvTQP#+9IwNow#L}TH9*}j*x{t%KF6(s z8V*#KV0rVx5}24b&8H5?^~P)&e7Zs;;*8mJe8o3X)@4&F?P=yz5e#dUqRH z-bt76!6lWYWBF%&<2BVSG^irV@@2&=L7@jRC$1TC+~-P;-d8bn{HtkXjS@z$+i6QD zK71*F9);L=yc`PrECJIDSh=2*Cc|t4FotA~&Zgk$c0SMAoh(e_&o;Z;n?Gp1$?cWN zX0-fo|3qA5V-!s>fW>8gY?o(1vn+$rYXUdE!T`2v` zABY9w*k)I;9jrI3G&S1-16K+(sN9Y%I$x!SoO+Iqqy(Rg#s)x3X@t-g7cKEbV3kZI zbKV?UA;FCoMA8ZnQnx*JprxMn<{gH!yS6{IGNIY-=cs$E@}%L(MqqsTx$qz-0%W*Q zld|oWJakGT*#fR=RSi5uzly>n2*3_{wmIh-Ntpgmd%@MD#X|1Gdi+qYeSHo_rMS`@ zbPQgm2l;^^@m~h9ikFY)?|_!vB?L~%KM#(TS9Z+Y-a#3Z^+nQ+6p?8OB}+q2-5 zL1%9;&Yx5wQ#EP97$njpjislzLss%^yp|b!^5ngi;{Kg(XKczT^JVR=4_k58(UT-S z*y+4pPW(+j_Y`W`@(Y>V$!x%0XzkU0r@9!8u!n#GI-fBR)s!g45o*X6?vBq{Dn{to z(MsreT*E4Ioz(lL#|UXPQg^mnD_;9kN!V{^&P^ zIeQ8tJ!AHqmpR(toUW9lUzM7=afl6k-i*M{4gsC? zc)<-acA@VHLvk8@SE7)=z?yS#c~^myTl!*DU`y7ra-fYk9YNCX-KR0RkHf|;+Jug+ z&~`8X)^rXevJ{wC7TomuRV24h>UN6)L%jLWcA#rYY0%*^#yjLww^}^}2)CmT&;Zj^ z)@)3k%G~x$M-m)lfMfZoQ1be~n?>rCpxHS&sJP5p@J(i4@LWlR&R;;XeTG?O%%^^h zz5V!F-cOq4{VEvKBDLvJNC7ih>v^ecfdx1AF0M_iVV0;Q}U z>l$5Z@i=D$SfYeTnKUT_nrpv34gal5qcmDa&}v$S!G8FHm2Tm!Qt01ctOng z&{bMKz5p!mV@>HdFiPJT1+`FT*wWB8h<mHha%KZ2KlhHjvElq zng*Y$8D?TA0GJ>Ti-8HR)2>dk<(=MNczDUwFd>Fm=0MvfHs!}~Y53{Ue*mOIX>?UE zNWH~)v<)!&my5$lO2K5^4{{LhL`y5!UEUsDKH}TtfsM-zeI2s~>3Nk)kZFv!`bp@UGh5C2ZLvz{(u#;@+Y|pWo_Gk z_s9)QYdiGWdl{|>uu}H~;_>phcc!S&R-j!}EGnNISH6X5i4OnDpc*d8s{xp8gXMh= zwfbz12Q?Uy5INy!a)) z0%-r6)GPmU(5VOBUD=^IHO8x^J*bj?s;1eD@blkAk}3?opp{x{0evTwGLQ=yDnO`i zq@r3y(xFs*O)p5t)*Dy-a0ZDuxrhBU$IZbiDS+p-$(0PSO#7xXZ z?%Hy4|1_}-T)D;WW0PgjM}K~bnw>U0An{@VQ-<&N&}y6q`cXP!Lz}Gt!-oqf)v+ zcBpcxv@4DTzUCA?4%y+`%zW|omsRp3^d|~uR)RiP4|DhJxk1mMB{BHcU4v>XLErR^ z$T%sGl8+}LOFj|;X_(^QvIENI+@I^wyG$BDzSsY&*qD%8V2Xd*Sswa;wMdd!}K zZ*5Lirohmd0|5U&0KoR49AwYb8Vd&mW|QsNL03dr(ioA__&;w`+%>zRXtf%3;#67N zEEW6IixvTnK2iSuJPW?s@xqXgWD^8vK$S{Ui)z<<5N@8P!@g}5ZH}f6wH{9TiRqxk zEa^=9KrvIsjxU2<*-(8VKltzaYo06j2ep}hf1aLu^J>hBQpF^;#gXeR|Zbb`)A6swy{m1k!@C{MT)?Q z3rGy>al!;4 zj^!<`HJ;Pv2*f(se>V5g$fA5*!YFe4T{t8SaI^7Ya#omRJT?tTg!$*k%)xm!Yay%Z94cUpaHzxm9x0Go^pcG;nd<)%P-)7nJWCrMJ zd1%Eis4e5X^?03C|Ix!!!IG#(m|A)REvDrDkfwkMJ(w38>>R%odg%*m%)J$IN1zv* zK%rKygDu^o%z;L=@*ok79qlM!XkZ(YES_mCLe67g@qhW=jb<>G0iUT9jqQ zE>@e6S>47A5cHEJX0ZI_e9FU(@%J8*_HU!()_g@!wF_f~P~^pNkitQ_AT(W)D3qS%xeD@0jd-}37qHI-RSJ_%c;w|Q1N$6Lt`P=bWyF9dZBP(@)go&H^(&|dD8}S2>kHgSzH|>$WViy35KT`R)3IW92UVgDT*gWPzN~GvNhV>{7&i!vo&c znZO)LU3hwd)mtXhTEq#$m+UXwu6&pcM-yI^<#IqT(eeQ5-#2q}JukTM(+r@Jn>vIyk4?#GS0Xo9vlD^o*sG8C2nL`P@RPA^R2TD~m8qiA(~-@p4!C~?uR#5j zb50P=F4sU2j~H9038iJ8T}{9S*VIzJXAk@19d^5x(YF2U(u_iEGLd5$+bMY4mxM&D zpk)B7K*7^KZx|F%M+lUd7*Vh1Q&?U>6$Rzh?LX@`?Gk;1n~CP>ouZXT=6-~T+9@%DKT}fKEBk;_*HB_d3TcUk0{r9L+Jm);K1MJ^t!ANI!dAa+}Y;(7^n& zY$4k6bJyz>g9pJx{|`iFkRV_*5P7o!fLD!4T|O^#UFQsM2(Jwa09UYqmtLnjPPHlq zY~yd+&R6zjzGSkqb-Oe=4cm}56o?Fk-j|@{hZqxkgt_83dqUtiLK3k)n5zelAb)Ia z%FtZtmpJT@5qH5HE~9>0Qbz2)sWftWw8^sn_N0}a1RaTCJ7xZY;AY}l8D8w3SComG z=VR+UNvIe#8EOQ4@_Sv>3g#I98v?xJ!rE+R_sjf)qG$3q?T2-na=R-3V>0+lrsP8n zO{G>5a-oe@n%I~NRIjN_4HTiQX~L7jR9Q2MIrjUbKge+~+!Qz5{!2IW z<8CQj#T8xXdC#uIh$OZ6er4!bSdc5DAphM%y1#DWWrakHOz<+GDs4z~2BM%|$iR(} ztpzK5RO%X!-7fg$KYQe&+4jVl5EZI=pDc){i$?4B#vQno4U#VUJW*19bU@pv59o1> zRrOP2v$eU=ml8+=-9tOAi^UM}m|t(B(rY>3&M03*ccrEpU%ytI6e?&-t6c}=JoO0~ zXA0AOu2_-}wFshZX1HeE;2}uBmdVlQXdGz-icP-1i<1Y*)aj$1{&GiOZxvcry2BT9 zs|-??ZVK2u%JCty< zHN?6wu@XWeBKEDdc6&x!fzGkOZJnXkg}Kf=PBFtqN&;t89Ph5mEq1O-cD-SabeuFs zPjY-qW(4LS5Jh?Xv)i@l49%n-Tf=#?m;NGXGS7=6Lv$F`+=P=70;V>^V@%|)&H3vd z-%j;>D9o6>o?FzmuAtSFf*qH`F2BybtW;+SDg*^bNt^@ipR16Qo{FL@Mg9_teM{2i zV7p2em%Ee~o_B@Aoj;XB(oQ7lLb|~m(vL%@;KZKeqrq|_d&zYkJ$gpMt1Ksi zV~-7ag#jj)1k<8&(%|lc6TG(BnrzAT?vep(8YcRhs=#XPyA5_84PeKTzeK3abR-zP z=cMPcMMdG^!XYYYF4$(Heu9gRJ#;1Iet#(qsDq&FzW2Vs5xG9bhceha5c-)Pv$;1a zitvbmL;)*gtfOLmpf-SX7!}447CQWu64_*+NI}ovuPP<9XVSR=Fk9|-Mo<=(8gxvi zC0tDNF#_!QItt3V;aEc4ktOL-mzhS~9R4E^>*q*Ug))0#J|w)|7bpNm6Z(ObO9PBg znt#Jmm!L^27E8>d;##q@JKDd3&BMhsbrK9z2am!F9*}pNKojwl9k~(&!$zU z`!9zhJ1>F5%8B#QnYMWzG)2(BPNmqV19cznNpfM!Xx^BP-6zNppUjZ0MTS3T8#^Wo zU>1-xTfJm|p8*-?RwrvQ@(b*%B+DFmJ##?GcFlDL%b;Zql?CxHTU2+cJU0sA(B{g!S(R@`wPRWOtsnS35mk0)%|y(gBt<8~kar2T&zbK86m{w= zxq{QbB%{9_Cp&1?@x zwdBvTFzk1Q{^A(5MXiU=efT1=Ebru1D_1CyXu{T(9cX$QQuqq5;fl~>e0}wS6y~pW zWl5oSFeF8d;b*<_d&u20elOF@9OL1vrYI6Bi0?;U@^MACc3J`o%s~*Z^?>OmQZ~EL zO)UpF&F$09sD+0G=Yg-*iOVwZTL@aJmFh&+)Aq+i9#OIO`N{;dHS>m|J1oDFA{9II=bPrauM@dH$8nN4;%Af zn<&1H;`D^}G~~jU%t}bd&-HXdN)zO!mlk&cylYDo>m#L#zOtPIJrSlAR$~5GA7qZi zKZC{uSkfR`%^oPiN*n;0BjBue480GXNF7+v-GUhSx?6Z|hn~y^-)T~@ga2e7)|^b+ zxztlDotj*Ps%y!8_&G7dSLImSvs2P2aa6ih(!70^mAgHMsIev7m)3{ZzHSc_LWwJw z06rXF_1>37Nr)t{%^t5B9x?Y0R6&UPXmV>v4ZH5Oug39;is(ANueIXd z43a)vdS{#;yxbPtgA!=qCLxL*AfnX~e?F}8=2NO|yLWbMnZjA74k!T{08&usI!HSr z11LiH~eR?pp2!_{A!Ski?k%gM;3K&5M0dp&ks{L=LD*F>MLGmogUZzdV&IFgA%e6WIMb6iHgoYme-B!zb4oey^S zFCGp8tOZ~0z-E`t@^FJv%)9%e$o9)K1;|u?EJS0ifq|aGN2IW-TrI5f=TI28R0~+i z2djVA7tN{5ef<%r2kkPLqMu%;^VB1fmxP$9TGeJ26)5pi{0a$Bsk#$9yO_zRJlF$m zhI)SQwV;Dra^F@oq;=w)A#n#5v3KFoJNUDFA6`9AIu)Z>(=?q7v}QHF4cjNsB^61h zB#ZoN6vIWTYlmVCxyz`Rp8qZu zqX>5~OwKlV;Uo&0E*^eCv^x(FW{uAHwA|hqY8t_L1yHh*#yVy0q6j1LI?@W3PSRD= zI`-6N?R(sS<#D8TlWhkHCrH&QLZZ$JBghMoT&39c)uJ&yvjxlp`+Ga+Q5tm$;TqIAJcx+-{eK~Y#cie|(L-Nd3 zoq|5v7^}FP!Fmp(h^u;uI>f&u@1cCO3V;)Bm(|2yr08XV%zWIkbVI3Gnf+x}tv`Q$ zJmPAdF8&eLbCV}%7-8_)>qaaMhh$vrTc*+-7wxqif@Y}(wAG_Zx81Dw+;#C!(_e8* zqyOa1fNtl~*9*&ZQ%Xc-HP6#Muq!o+S|H$R;rJ08j2I9HKl8c`z@Kv2)?xPJM5n&D zR$RDoBwe9Tx=Z1oWy_{3^jsl#b67C{t={<{XxRb$?fBzhFsckaBlh3zoPE9%YXLbF zL*KltK;Pi`+>e$OD|3ax-CSo~SSFfduGbQ|PIOx=y_Rj4irB!yy1WM6ixv z1Z3_CGu6gd38mhMQBb!9{gf(|P2{h;vno_s=de-HRv%|zPAqZcbJqlVYU&Pr$7FLSlX zut@cY<=2FH7*9~*+$`ZWC@IfXhAl`6h>QWpVa#~(WF9b*x^(F7f*P2w?Sff?TVv%> zMYsC}hNqjNmQ`^b4?)!CLn!@6&bVd0U-S&Oj05$|j~oqzNs5^L&cF9ACRq?(=WRlK{BkBMPKHX6!Wl)v7AeNgyuVpvvo^OE$h^tq=eaJE5 zpQl1hwD#Pf=@zZBg$1n~JSt2iD2Q;tya3$P(>Rn5Qqg_@7PkOdQA8et+$(l-nG*6! zI=g)xLr<@r5x14u-%*SE=25e@cO&LJSxg95giA{TS6dsNbY*kc^hXy=F_$S1u0dKZ zkeBlIn=$Ls)y#&7Nyfesn*yR`uM@n4u-LOp@ukb3a;~B zfXOZtmb&X(PxeuY8J{H|#|X42*8yx_0e~l$EDLs9?a$m_G#xofxN9X%%r`>Gy3X-u zv+OWxY}F!P+LWL&JJ5?mxvv9!8h{_aZLdIu#1K2YL{xD+m{*FvlD6RIXNP!+6GWZ9 z%vZue-`=ZwKNQ%wn@QRV6%Z<+yxq3KJ@ipbhoTWh@MF-Q6a5y$deF=Lj#dn z?fWy0AaO&mydPy*j}YolqYcg$6@vHtIU|EGp{Xd&l@0mwO^ms6m+$e=#9YfBbT81m zB{%$ySBmb@7ZI>-w(yZ*nJIN!Kqzr|_unwdW64; z(SbFqeu2bJtSrT0t0_V+;*0q=8A#-78w0doI;C?jP z_{xR`rjE5DJ%z*s87)nGd9vynh?`msgvt18)e0 zy=XYf$H5O&tnE!1(1a2};`MQVh4fUdKF?+V^}kW=fz>-%E)6D3mNPPqeg0;H6npcx4*p7)Ss7R%x2(Y zbnGoF}xZOuxflZYHM}o#0EqU?{$^ltKUe!q_;>mOnMpGj_swY9@)75WO zDbdm%*IZQdUn~ahw>uGS%+zz;jNcMAG<~#qePIku;ZrNw^CU=F7{Rk2rrC&Y5^+77 z=^F|~wFjwwUVbn56S_6-2+BE3&YMk4Lb-WNgR81S$Vj3<^dDoyNFc z8=^2rlGBPCzW`G@aXx$_qs&_?F?}m&806@9{Qg79pGZfqYjX9frt0;ePf+p!nU^gp zZ;@_<^edZ8j0_pD`;`-O9J`W>L{zU9d=!xH{cbZV`WY_k0#$cg1wPQO$> zy~pD#wIBuF8jzRQJ(IrE=YqA8)V-E~xu@NBW%@STP4IY46^YczL<^>!fqdKe=1XbS2fRK4o`W#FJS2?QdF8bOZ#)0 z2pOBn?JjwhXS25X*{g3j&VRi`-noGLr*TOQ4gZ2=V;G&_v zhmQTSD;og81cd0>&$_7vqBRkqI)Z9~8JW|HxbN7FX1R8&Ox+oEbiZ36LiheauB+a3 za!&r~k|kFQpHj%WSY^36we*O--DtZk%RfS};cNsRRgm4Zs5pa!(E3(4`C@s#|=9*B=aGSUV z(ha!kR>Llm`9##3Aytsz;mI)ova_1QPRjL9w4RH(!^R0ZL=P-t+!pns*^RGJft&Zj z`yFCQrMJ)$wDLP%W3v^365xnm4c??Hf*t^Ncp1}@$20vyAEEwRl@-GK*ivb~;bNlL zNwJu6pzkTJeGVobGr#+uFn+jdL47C@)XXwM(BD0NWETgbiQW_?=23r{90WEhF!brD z*u?qf8Ed1Sc3ykvX`cHnu)b7-$eFoa3F6A;rB_%T^vOq?k3Bpam$@6X`%;)yC7Sjip(} zoq+zHQ|&jUyiSRLUV-_)42lfw3o^OIEYZ{aJvE^DgV#1c~zM4)^%4w>4@yid8&rs{F`2NMH$4e}LT(-9y$ z>ec`)xXEGO#eZ${ahEQ%W@iO~dNaT1aHzr%wCIR*@ZdziJCl;(ne7KX^I2|>hjaoq zFlcF%ImZO20t4{i6VfO4es`=H8-WeWSeA>ARrR*u$=sM72ur}^B;h5ar-J`X)^Z@N zgk%r^3CARji6I8)$rN`L0YseZXtm@)>q=ZmsnHBw+nJ_wdB|dI@c4nsGSMtunI4UB z@~Iznivx`vfBb(Thn|kIxsZ9VFbl4y-AD}esMfcK_X?GbP}j`z_G#6ZUOgR_H&YKG z6MYqdKY9jUh|R_UqT)@Y49V!kfa?yIl?0|AJ^9#{O|2#XU#Gec*Mft-LlD(W86LlU&484EyO9Wn%#xKQC zTOMhY(WGRhO0#1-?l%C8bMSRKIWFwt+|q9k`n#knaVy7K7;gwFz8$%hS(*S6yBC4h zry@X?m37wVjzG$YNPO^cHQ5Y_7e!!eYu;G5WpNFlQF^ku}$<`{vA{RQPbBjjT_p#KqHvK(yPyJ3wwxnQ1$c4zAY zDx%?m=yfLdiUtsn!|+Vh%Xl z4m&(pLjcN&`Y_+z+rz;brfJA@yu+l$r-)ce6Iwzyb!tmS;`-y5 zUmkw$s{y3u^|Fd4k%xql8@;c+!{m(E%P)NL4=%3xim_Yw6`JN8q5Yf&R1G&C5ELrU zsqkDLtgU^(l&{J-i$pAJ#9a$vf3_#CW*0RW()$oxdVp%Dtl`z%peM9IQc)atR55^c011%f<--;BXU+?-_j98J7=E7)xN`p<9M4KM)OR50|dozd^=Cag8$}bI7V&hw?V;GFR6pN9kXW~l(O#ad z>}}HUGYdk{iNiMBQ$Ul%#E>t@aO{z`v+QXCb+Q~;G9N>Lxa;Pp(VD|nOx=?9S&<26 z(!`F%m@`OzzYr}zy_~KxNm!<4aDe?ow<@uHz!bt9QiEn?i({8zFKZzkd~MQlLSbR) zx6_948?KUNHh-855yn5YrnIG_p@G;W=-^ z9XsRm&=_|&Saz$(HZbWmjz6k)&^m+NWW^^jXsD;Hh)0g9vlO z(Eq_u7{Jc@o0ySpXOwIV#0j6Ertb(;57x1IGNG*_FR7nXk%1eL(HFfyQt{aDQ%)#M z&CWlHepS@Ja~a=pE$td8hvSn8M#4Xkb>&b%&zOGPpHK0nk@bFN5?UQ`+&A46jT33P z?vS&>ko^BP3Ht-j<`W~~7%r>ysQ)wy0ms}+E8Im7gK4M+w5m3*IWjI#5v}t&#K*LF z43RFs^2W;uf^h8P<%j47A;&C3lO(Ysm~fUreB>tr`>0sN0)shp5G#tQ(D_`IC&y1fAQmRMqZ` zY0tL?q}z}Z);XsbaV)ALqiLR6O%%&)W=z^qHzK)enOrt;By*O+vj%x%$c%aI$Ls$4DW3$cc!Ydk zznqma@F1@N3%+6vBjoOVFh@8#U+0YBA`KE&Z)T5kizaePAW*y9`N1`JgQ$_kukFSq z$<`Lj{PDMlzsZhm!N8#s7|&uI-D1o;%IjV-N% zk$@5*CwQeWGJiuR%-UgxUTboJOdr;Cc11Ow<|T!RW@L>7zB&IpBUeQ}af8b)gf3{x6U9ix~7VE9b{2swAhR3S<>qCi{R z6)o`atyfI%_(V1W?*2#GuT1|Iz0u#}3cdCVz1_VesT*&ny&Fli{w$*{;0}4KCOVEM z^AZP@zSENAF>R+Qm$fS8>q1JkxvY_#qRf);OgO9JXHqj7N--7jr2RmF!l4Tmht{x0 z^ZG$ROG?OAsWao>Oxh7O2^0rlkV?Jt6!|#S?gxg;D?zqnmiP9nlwrUtXB7aIz)x|Kyon3RcPKP< z4kFTfx^E5oTffAXis@Bt{{_O1+5^GJFg~KHmcALGZ_F2(g^S;4)RZ_9RiE!~Xc4X^ zsr93M0J$=IBp#85`9~XK|ASC+(CYI|pZ+llvx+mil<`Pp4$tISqPATRTTm3O>JJsX z98Mi8*61}a-!XXP55HD|C+6T3{}`!Q38PNgF)8HcqIWcS0dL@|8P_xo=E3T=Y?ph^ zZf)>`%tj|<@`;%BriN=JBdRfklY_}U$PeOr9s~}sc20D68f}(|>BSQNE4x7Gsv%Zj zh$0(s-&IfO^x{9}#Xs>@>62}4 zeZc>G39Hi?v7W#cF+a!?VS z$dOLX=9^2HEsMyk^>)!EF5isPEZ00hP8K&E0d>RirEw#~t^iZ5mD0*hzh$lV(jqqe z*raATFbHRgRNI#YtGecfCY{m!ic~%hMHj*pOL+x?-f^aq(CUL%n8t_TvQutv=7@48 z>R7CADQSykx0*AznDJVc`IqrxEN28jj>0aERZ{aHM@Sqj7o<&1{BPRpIY)X2Ka{BW z%tLthyO&K7f3KG0k_v|6FGz!I6EVVHqc`vdM|qpv=siV1QCfe>5e3zmJDje8#jC)` zvLMxHC34C3M;ZotvhArto5mwXu-#2sA~|gWRXxKX#y;Rc;%Y=4WCLcr>c5#EmidE9 z(Nvbi+g}?qAb_kwIM+rh^sc!Xzw6xgCtg1zXlFq}1I0}OgL8^(|5XEWEU(J-+@z&< zL|L29QX+DamnpP-6pTRQNy~f!q~9D4?T>&g3nnw;0az?RvYUes=mjY>Y0o$j%ayoAEzRjf%f- z`((l*cb6v^k_!!wi$l5fLaC1d$opV;=q^wH*?N$LDNARa>jF~ZD_qv)iS)Sq16<=& zg<#H4LH0f5fG#0mw>BCnLvmbfiM{IY=)huNnn|Qq*9HTEeQe7u;DL|igk1aDaO+EI z`cLb{KG;{#y9SlFo#FBmO+n;(=|e!|V8_r4aByz`=!015sDV`S;62BUvjFmq7xYja zB@Ktt4I|m{+H&9Q2xA;%n_J*o;jElWW)|+*z}<*M!xsQCh~cG)&0I1{4>-s@EF|bc z&Ful^sd-Ij{e8g2j$xu>zQyWh2XW!yPd(d@#%RiF?#@fVAPRJ*jdnEg&!WMdf>x@i zJls5#f?L8;9yLQ^Kbo_sjy)e6TWK+w5z6Hj*^R0VSDIms)m3H6SMWGikQdq?nS&On z?VF&`7}sSYt5Wfdc|;_@=jk5x#aMXu zKJ@e9MSM>W_z}mDdY`|;N_X@9`v3z7aFxy)_5FMX8u%7!)}c+@6*+SeB7@Hz;P3SP znsSz)?}i2yCh+GDq^?}$eso!5N%JssLG(i4hQ3>gb@|ir_*uO3XJbipW{-Hc+!=AL zTX?Do)St1kneg^1Q3i*Pk42r6XR}#9M-9tk%H&bmhp$%?Ce{&ywo^=ol$J@{gia@$ z>u-^}6ON$nGVdn=;52=56&D_ZTyz0mZ$$^#jY*naAA~L+P^t$c@Uo91(Rn->s)!{i z$>FiAj>8~w(#ucESEm>V%fr)|Pm4~eBUB>5<^L+wA7cs9VS2U5^S?pu@wR;_BZslb zg_DKF$XPhHjUJ8C4DW1@Yz2{vF0+C!wZ{?Mz}bXdU#59!!pOlRHN?t*=KWp=i}kL( zW`aqX7pIC%!`x%^X7Gi<20(zbnCvDn(_*Jbi$GaAwHIHR^RAGhk*Hrp#PP9ZnKGnA zTE=3P+R8tsWr8C>%6;VcIS0N^p(1awPAC4|Es#s|JtyxY#T_hkqr4t*%YiiBX5`n_ z_7HUQVnuDJ`r(0i5YC$o)hn_;&qlgTecH^#FK!mGNiokm+@Bn?a_2p|uF()cr|l?n z7|fX=rJ%HDKow6`DtWmJ*Lw9|=ohHJogRTj`PO*Nllzi)9z32Rd=@M-kBC3!{VQZN z;eafzzqXBs@UZkLTqT_T2>RLojqf`zR7OWM@H06bFlhSu{~`d=b9NT?ETYuB%5<^V zD8rUk1EK-X&+c~R)`l;cdSZfx5DxY+?( z0BSw>&W7f^_W2tJ-~^RwF_pyjTPr{Vi)mdiUmsC8Bnw!=YU#7+v#0*IGTnJVJpRi^ z0BeKI;+lp^ZiwN^xIc~qKE?Aa&&A%W36rqefreA|ZIT=+TMdS=<3ty*A{|}v0FY~T zB@d7e zl>k=#HOelDh;1v-B-a(g79S9}$tJxMD{_KZs+o_!Lu=?k&HIZ(LOx0rnF|R`0%#~% zY8jrbp_Z)60N>5y3SoBOrkk@?Kp)Q!TTguN$!d2ocU|vroee?(&<`R*K;p{(?*-P( z1#7rT%^onZP{N7BCn1oEdA61=;Kh;i6s^vXIsh~GxswGJ7B%I1UDUBSdt9O5?4;5Q zELol*3_HTHiO8QHfrbaq68Sk}g0e;Y8<&6`;ZP(GmkRp^p$7&xcL&=!CM1}0yGt^V zKBV~8i#p>b1bfc7A;$WMcV}d5*QxA@tME<0_qmeO;d3fEnSJwg0Zx4{oPugf6_8waUUM#Y&f97sKgHuUdoqBoAI_6##mbw%{0T8Cef-@8 z5vj$B+88YXB0u*pG*#viM~wP8>`CbA_zc$ls;?=hf}HgXTklTQETT=qYYVzT1L??1 zP>@--7{Z)tIoUdlKT#3^;F$5GL$Gyl$L}W>lI}#|W}{#Obu-K!gyy|1_cOsI2_gN| z2!f_g;&X>T9jRFHM(%wzZ)cFm#E5iH`3BEQhuS`W-Kk_0L`|U%4J7;~Qet>lnQ))y?C1 z3EeGE63b{~ACLZ(gFmwvfcD#r6KAQnJLeAcNANFzqo809Tb`l*n}^5-)5C( z=S;OQzg^_&JI;VHPNJWFIib^)(U`W&k!n+UbPBAvCU@NYhIZUHiq6O99{!6bT&MG< zJ{keCLgio+*UP0RRT9r7M?xmfR82p9;U)13-{LDnap zPZsY0l=&OP3Vy>%Mu)alpZspHpSPewB*tUnuBeS=D85v$iI*OQsdq_6aKz6^EWj>< zWO)1gOk4{q(yJvW+EE75=biDoU7U<}&PbBGxU#*-`9Z&*)>Kxn-uSoGCCc~^nqTz+ z(Vi!i$sis|=;>!bEaB3_rsyrlZg7`X?AjkFoD&0FkqYa;sU+8W8PQp7D>RzOfj;DdmP*aX6dc3ZC_4oa|beM~VGi`O_d zYZdS(mE+Jn{a#%KKb-)ba`IRzpfp=h`JF9NAD+hosv+?U9o}#Vk?ZSX$R9R$#qx`E zBB=vU*35=Z;;BpvEMPj;&R8GzEyG6b3OS~ntQ@ezGLEMxc+ zFLaoB7!V-xdM&t!3;PxBs;Xrfj91q5m&M}a2iOA^`z&gQ2(|e$q40u`oNoKXzp3*G zXwLpwS?3VGB%=h(?)H77Z`0Q+zv#% z!^2?`MJ!qmOj&;63aVa3ZxPkAE2#?BM57doLix+HEFK!RkL%(O_T zz;_y7{51_LK{nO_QZ-{_Ue|E_RQfye!m8W!QsF(!_7(|Z!&91j*iStq)!*3pI$PA0krrAFa7SLA#{4ND*n`oV17D-dOKBwi$Pwb~=B+6CsJ z9s%J>-w7VvrER$}!KEWc-3G=CINLlo-QBdqX?F-57%$CfqIWIxhF*y2gJpgBLY~xt zw2Oe96zxfn;R(5~k4maG5&=lbz^2B&jXK&ZbV-R79(5 z%fP-FMAXw+YIq9`Cwi+eiNk|YO(HxESp*ftcZzyyLss$a8rFO6cq1yeY|pMN+tCs(PK;+gSlxWLWe2BLs-zUWftryXQC}ev zAD>Tnd_tJUDw54^=$7SmdvVtkY0;w@Evaf^9XLBlXoypj_$@Ps&Y;;_@mx%dxKgbU z1BwY&ZZz3W>EL+&x1Q5SLuPXBMKU#cfdKB=G90rOAl*+f3gI61!7E-dg)4t|*_<^Y0;jb? z&1s-ydPh01zcxcKApVektS&V(ZO55SZWdrAKg0M!7qZS*03c$8E6_#S4$+a`(tH6d z$iAcsZ5(zFVn;4KJY`&dV8Giub6-^&w~aZ38Kd!D*{4xJ{j5_{=!5LtV`McPLz8D2}+orpDYgA>^jDjV2&VU zmYEx@Oz%DY^&M)bohk?_|Gz2f3_tbx0Sn{L(@eWTrvfCGL)!xc|G_$p`4-q&I19TJ zk|b=fL>c+-iMtK~M4mLV+z5h$>ce%Ml|?lZJS#`U@#w>Bm(3dyH!<5wA5Mc|q`fr} z8w4fVs4%fxgm1uXZmJ1nm5NG+h0eb(ab3=M-pg&L<(xDZGvZ}R!*`czT8C1XNrN!t zbbvEl?f9tU2n1c(0i_~&lg`r*aBXC)4PY$+I~e96mgLUzk;ogt?chn6{IAyeN@Q%D4w>aBY92E_sep#nw6 z%q05_I8H{OML-OC z$B^8qktzU%UwA5Dt+6M|h)B~-J6z!aI$TF}YT%rn#*8;KM%*%0I9zi@M*x(ExgElx z?O&TSiIxdw9wa=~x-P6-#p4*B>4F?;0Od@NxucKXUK(f!@E#AtHFMEtS0!)kRS7ko z2jXx~4#B?`xEW{I2Y#DL266;Vi?`Sbo+aQ{BM9s#JKq(d#*#YB{rnEQhkc7o(Hy~e zML)r`N9AQ4d_uc}2ESYNPo!!6eJ#RNe!NzU4?yH6sFzeq`T9;Kv>C)T7n+t<((7gn ziqCe0-CO_)SBAl^YK@u8;K&xDt6Wpqjdtw1sXn{d&M|0lalk2;@EwkolD!JM>+?E} z#IDSuZ}yS4NILarNRx<<2H06|bBXY>vDveY_G!9-fxAbIhG^iq;l`nwu%T#IvPd6V z%jE&B5s=TOMoGgdscvuKIQASa;+m|-{$8{BRsSx`&onH06rQ5jj-T9FH}VN zCzl5w%yI3W)#E8v%eAx6cz*lM9Vd}m@K8V+>rT`8BJEceZz;*!RC)bS2$V-2lVaw1 z$Uqg%F36Pv${d&Q`ukzBVmNr?%Z_OMd_vN3aC6PvCT~NjzXNPC|4+2UYBbO_Ycf}F0(P!v;hA<0KldkZL%VK>NWTjaAYosO?thdUkO-_Cii$;cKzqp z+8JDLK4*ImCSuPpx;+S?VKd|DHCRKVIz{(Gq_8x+DKS_M$ajkQtix)JUmm(0{+dK! z3^RytH6n*#Goc*C0(TTG8{Ha&=FmSM}O;w_BGLP2|*U}k@ z7)@F>PWXNiqr_gyPghP=^S*$4L-UP`DPuG+j<1`~BZ2ybP3_Q+=1gpmY@e3KF47km zcW~={d8E_Au;FB<&g#qfrspk3Ns~iUh#@(7E36=Gz2ngrtYbeZ8^#Z zdLurU0;W;jPP_x1G2@N|+vb7kEO2_l51X`c1wgKLK5u2~AbhSsvsGZSJ%hKwu zYdG+6wq9;(q8gZ`e*AsQ1`xY>#f-cIfOK)YUeBV!nnAQxyvu7S@0|xOc!4nn_;n>N z2)Y%v3 zDF-Z;Ako$^%Gk?wNUJ92m_va?^)}sEbAEmJ>*F~+Zt9reD_H}yn)>zv*XsP{vlmKE zBgfU-4P7YYn2u2~8rJxiZmu#n9IL|~=DgYLv8?ofT7-_@z#wuF_cxPU#JJco# z#8EVPV45!XmdKdmX>vO1oh-l41pn;HJTtb?Er6u@f|JYI?YDsxpwvY!xOe@z*$je4 zL6;varLvtOQ3Mu{gCXcgw4>L(p>F`~KI;CGDY#S~b9jG?f??5Rn-gsWUKnkP)~`9k z+Ld;7Ry!Q`WZB@QsWz_cIhHlGgtarRFtJba3`LD#cni;eV0%-VaOiqtrLjUgg%VL! zdXMJ7oMZVai{(Z7G}gXIvQk)6lDdJu=F@=_dWFTpkD(>g+pfJRTLck zA27#RE0X|OtHDVq3UYVwqziBQxL|*)Ro~=J5dxXzlB6rbGYewJ+b@5R&D1~EVV(eQ zgh*v!km&{RE(sMs)nsqx@bDY^DL1Fp-cO@9Gzs^(c145kLT}`9vrWD||Bgzn?c2`T zq&St(%>?cg|cGJH#J%84ise2R|ViX5w{@dh+!m1Q0W=SM>vS)!-R zvUkz!Y@W|!2@33`Dc(zKNX|OiZ7uo1J&~yACv6u~+0o-vPJ4r6=`Dc>0fE#%g>zRj zHfNG&qEplYD%nPdJ5q$*P6b)HkTMNv7PKVn(Rw>R#zgT=M5F0*o}sk`S-2}Ab4~&U zRPt-yQraOuXYR_Q0k+>il)TWhSpNK?LNvpXu&$_ZoK}`d)~W?ODZJ)R5p-Qub-n@~C$ldhA_r#-0R zClWi(^t;p|--xl~X_mDec;X7Y2@s+0P)T#YF^Y+H_p`+sQ=f4#4!F5>+zHlcB8Smj zr1khoiB6tDGFCRSuGWsfa%nzmEQc9?Fr@l9uHo+>`_?EzltajW(e;5-DbYPZ2F{ZC|o(iLHN*2B5~SJ@A?)SR@Qy9pPX>w2F%%|*aRcKXdqnCf4z_0aZLzEsu4 zY`{Ap{U+)UqPZ#buPyJ}c_>Yo{yVGqgS4CL8Yq$olJtLLmW-yiazuJAo=n|`t`;SW zrJ6BL{LNzB(Pl}fL}-xH25g@wStnN&(t+^gzy+72-(iY?Gp{3iSb$f$t^?5D9K|4q z=9^r`#A5|C>>_-*|uxLOsl2Af?4~JP~3ftgPlukiSfDMn-Y7il^iyV0y5faWFxVn zTd-T;uA}>$6qCA(3}jSG?m*I+I2_ro`0#8qb3_}uX<+)TDFJ=$$byVmj!V{h1rvRR z9=V@p--7)VUaW2RfHE)1g1{{027C-4SrK^~r2-Xf{@tS>bRl^RiYqz^eL0PAy~rES zW+4^kY>$q~h##|!I0CY<{==vx!)fn4IWhc@D_AEd!kOop8SJsXLu$kep<3zH8YpVa zWK%u{NE5eEa{{4cnf&*(ACve|HlyrqUfPiY0e@$k-g~mti1DL8>ysI`0e$5kB-jhO zZFj0LmRLL7T}kHx6tX2fA`3lA2AjyxLD&KO+tPmomk$q8TV>n~#H9&hZq9HvOYuTY z_m5q9+&?Gycm@$L>;jdL0&=m7J!ZCMY#FG0OHdqTP z)CI-3tkl;FNK%&`(1B0fMuA0S(On;uqQP~2O~y2oGVo`IKw>N<3eP_1=U?FKco6I> ziwu*BkS66Isiv*o@%UKG0|ft|_t@g;Y9-7?{iqhR4y;SCNX1CkOMuxytW50!ncJ0`%Sq_8rS9?sbm@@Gd$B#I)m z0S7vmj|`+!nC5D-E|2w~w??^IK;Y;HirM80tHF+jl`(Y{nM_i#QP7fzi%qy%b>RHMU9cn?9V@XBYeEaq9A zaU+4AyrLAQfc+R-&NEZ|KF(eK>C$kR|KCmyFnLAgE3H)wwWX)DGtKHAJHE3?geW+u z1)A&oY_wcwN#0>LF2=30T5?p4iHUJ1`9uDlp*zMlhmuU@0=Y9%QgTB&d=jtW%VgpW zuX|wrpd3UAt0+#)%Y)I5u#8?$S7yQvn;2Bvz1wucM*3v~Wy8$Dg3z^yYT}Y&TcU)Z z4cCCHv1!_4w_J#|YZ$Rt#JHr}=^zv`3eeg6yg7M?7C~#PhbIHy9607w7^{qb`X*EFV1Aa)FRozSq&0^Uh5& zQ2~R%CHM+ZDJn(Uz>7hT=Um@Ocg8SZmKK^8M1My16({R>9e56Mi*vT43l`E?O&WBV z{)-LT`L$H^?^z|T>jAk{>fIjd?3iYycKR;Q=(B9)#m}A;XaBq$OiVjm8w#Ltz0sVD z`?-o-fd<5{GM|%H%G!!kCm|;$`3m<3qRwnP+9%;D%BMC9@FHN4jxf%KDM}|j5`;fV zzFC)?bfQML*Z)-KgeY93Xg{JrBOwhJpn#N)=#x-j9y$EDAsbX#kVp^tiS~-b`{i6! z`Ng>^@HgV=%Jbucxy#=pipO-=Z<0CMvbuB8^!{oLGa~uwR2c$>?g!W;MwP(8Rpr|# zyof#qLBbo@22FhvkuG(u^DWIyU!rg48=!l==Iv$9uXr9M_z-?fqos+9`nqOCDH;ueVX7<5piF47h zCKy z>%j6XBb4ojkSj$BGu$R55L^$R$4eK-3^jpX;7lt)a}uV+3Uif~6$%qMHl>;n0B4JP zu>kC1fU#2Q*%Khif{`_Xt;IH3Hdr_vD#dLcw5Ut) z2J{sKhkNaQSsO@%koch$wW-*yv#>L0svRt*E6qDTWIq0YH7R`-bgi`Ntl9S7GXy&> z4=)W*p){fn_!ro8FaLbfCJ8jW@r||-b8_7Kj@2G?+#I)#so0*F#ti^RWk`_-zt9(3VDQ({Y%}jz*y8EQ(l(V#+}YGy&5!`K^X=N_Wd z?p&N{+8P*9mF|Gz7ep0)t8bz0=G_5kf>eE2Fgf)! z=G@$I1=XCSwou+y4a!-h#1R#E1u0;+$QxyXx~6Mp2l12-(}!taG=evOPy$S| zT9@w*U{`)7UjFT;3Mt+eiyh+|S73O|X{?r6(4AK*^v(FvR)_RsYM5BW4|)!Yjck?4 z&^>2Rc%~r#f|VJ5j5?zL*0~gIG@bU7C@%5Ay*!=qrNWwM{klgYl4i8SCsPq@t${gQ ztCSX{pC%}O%s3dNy?B+xw_sc05@^{dV?$ya&l?ogSIGE4!428GuQ})!CRYt+!!4uR z7FvTVpCHZIab%{G|VRGn6?e{bOn7Aqe4;U?BPvM$` z?KuU4hF);>>a`S#3|}9AGj9`KtElK)5{}CtS6$2sGpUAgDK7r=IjLjl0o9Fxc>#BR zYM_wdKa@|=-5I?-1R%jAP_25?Jy-R^8fzjh#;t}4|ynpVAw+=xn-K#`=dY4t3RpnKclfTR5?WcM5@lLbp~9tTbap{ z_fTv6_#dcxoX|}o;w{sKUc)<2m$2vvvQtx^ao2i}-KYGbyC1+)*duD#KQcauX@Pg1 zfW%&@Z@uIq^It-U^{3To=D3b<0t?J6+ZK37wyhKq*p`fHt2<5`ay7ud%{J)ieSXk2 ze$WeZmnaAha#hl8IK!AKooX9JrM#&8|3AlEp&;DgB*wY)21lzNY)p-X_@iiRyAxYKg)Jlsip!yw$CIUMkcotTteBhv+pfzfiaDF7I-s_OA#? z(RsBN2LLjF_;Xo!;fO}!;6wt(L^hj*lX%3pn-8em5{yKE<|9o0g)IWm3xYJ_v78G% z9ouGj&-kZf`_Im_D4wQFAj-WnFhc{;FT}6#jO&)EUZiy0t(DdbF_th@Fr;fOQE3;K zzgN2ZD4K8tk@sEa6q0SAR4SgF^THv=87P;El$$o6qNA;Q;vDj5chzKkjhG&1Vy+`{ z<-F08b`%_9k_U71+N*ywv2O$x+ou)?j23Rd2ZJ4`s}Bsjbd7I%pQf<0KY4F&!pK@( zyR&*FDCnJH0mtR}JzQH8-B)gpkjtddE?7*AHf_s+R3!*?o^>sA42&EXews8XXkAzZ z^ZOTKM9lVvtK9QT7vbbYq&JS&+=*c*XEe7VgSzK<2TZ(Qg-jsfuQ;Fd$&Y=U12Pxq z)=FREcG`t?@y!_rJ2z&RxBjkt5FcQRhGt9J%lAKmt{P< zL2a4&y+~zzY7btiObj<-p`>u9S@ z$&3V@mg~;#ntq{o*4;ETEH16io|Y!rIw@g;bnr4hd^%_QipV(0Rip5?w@pk@kIh5fJ z{w*3}*To6mJc~Fh!y@2r-NLRz`K1YMN9XH+zf17O+A9F)zLf(x-xVMT_{E{Nu!=9Q z$WAE!0ePU~6J_Fss2Ntv+GN|4SyuU0 zb8ch|Lp1a^<8>-Z>Z`bU?Tq=k6!ZSbFu@uZ2q$0nqFLJuFg^!?qf_IFIrPjo`)H4oKh8R&aepkh<!c)yl7ID1OB0&m@6h#~^k;6A?|b{pWP~OP=+Y3wYt$){&T#? zzwa9rgJ`T2k8hyy*JcDWp}7BqN-yt&F2@%ApSfodgBE`+dX08F9V)TEjj zvncwS8C?FTR*7aiyZ|c>n4aVK-yM0%G}K)z<)H`6Kf+XhHbjEU_}-doW91}F+&{rC zF!3&2K97_%;24;qosy@o;mNQ&@}{5M1@`c~)%udZ19;B{EJwgDOdfzT7iA+dyZt?h z)D)P)m!RwM=H&o54N*W4^Qz-&h@}Vlu27bmS(B2%>zK%FKb{H-Y=hFz3gM!Ah-~kP zwdE^I;Kj#15bOUg)g1&Bl_LDe7>Jzr{Pzv4Y6s-j;*BH(@yN2&f0L}3%BF7D-_yJ8 z#Hm%6VAI8^Y&JEJf@yiUXt6~@#2@~*l75?i$}HhyW35rbV6wDr-n@?Ond!?#{aq1= zX||H)Ju7VwS8Y<$yJ77WS(IUC%C5j7?^zJO|59=cL8RMR`)KfA?2fCitT;QKya2-A z?X!#2^;&ffG_+5Xmz?9qCJFr{WP0kP?QgFZ1sr1QBK`-A+14?+J4YRwJ?bmp9%aMBrkNn8}n8049 zhzx9IOd#nN+6wb6J5z&kFsMLfUF@X2V-oGRB!aZH<_!G3@!Y{(9Pm>qsM(Nb7uuwc_LX6qPWdVJ0fQNLG3WEFev`V{ zaf91Q#h`@KTpsdvQ;f;6ePD723r#y#`rQ%>}p2-$6kBv!nHahV|+<#mW{9)0CJ zePmgS$@h3_KGqX$X@A7^F~;e6heZ~8Umw2wr^1Ain6sx)`A!m(P+R5khL@6y*w1do z@49X`&!gpB3-RJ8Xhcb>kcngf+%s*5HnCNVfQQWH)YnoLPt2IsFq2dAMUrs#tTE%f zUiq<^MBCmPzIHA6&Ss2;JgAx6Yuy)ZueVmj4tNaftLxb9eKVHffjPpbcv7k?sjQ9p z?)as0H&I6Ze_FW`^s z{6Hn9x~36?=rB+Sg|CdVN>4xC5ToOl%PKL9=bqP+V|(s+?>(Y9Ye8P|mPYEE)60Uw z5x`0b?F7vUpDey68ku>aktKo_L(FzOL4ssCF5ZEQDnJ`jy$1O_Cw_jV_cIS6DJSL; zo$Z%lp27x&$W+I!8=pJE^@RxS_-_Ovk6A`ULi_>ul;Y7D99r=cdc7T8_uJ*F zPGo$MtBB$tksnYRz96!k!dn(pER@^WrXBELpA@BM%R+m9QRl8R+OG*)*L7b+859YV z5IQ!HtVf`W-#MhUwa3V^Q~zDR+50BkXm>Z3P1#anXKoM3)p1)O^|sI_StuV`5|fck zHTmB+hrb|l<6`>9zdyX$n}BDF(+vWABp__mKjg`HDUw1anKou+#G273+gEckt9s9n z>Z1Yr{!&G@0+D_$R9eUiukn5gUL?E)+5`bxlcPQ0%R$L<$6^2rtW*rBzDRPSBBYR% zWqGZ(33p@XHd_#5!)1#=5y{T>)P_O}+&yyNZmm2N)-JyLx}C^Ix$==ST$S%7O#=_? z+OP2jlLqBn;M)a@;ACEM4LcBhV4pm_nDA{k%GT&K9WSAZI3^{D`+geA9Ud z-`~+E`_2ALd2h7lkv}cyS#Umc3LMvMY-}nYj2LspTz|*x0P9JaLNms%0$MH!5A5{7 z@YK|$?l~X2p;vG$L335w$YIv53*7e(`+|lopu}i57Ov+4RO+V_ib2MoV9w?x2;4q5 zVcuWY&`VL;KZ=dD%JrsqEn_Q=@p3}qdcd*10$hCxVkrIvjN<2Sf-#r*R%>p>DnALZ ze^vs`$8R3c2Fob2BI~J5;o0y`GOOWE1nJfJ{(x z8ZB~uK+_q}4w+kq!m>*{umwR$OsW80?hu8rib0_S0w!w_~P zk-1n2Uid`9%a3y9qJwbqufsj8&S0+}Q#byMOL+$4K$^%8AIiQXm>7;i>bZzbopk&q zvXC#`H-NQ|P{eJHBPU${2(o8)qDckU-o_W=N6ZuREQReY8AVF?jIz6MST>H54pz6< z<5vwwWFw0Fhsz{y>zq%6mnr(x28siSRX(@(A$i-@c1&kCur4XGl8!R`5*i4GNvDz0 zlAe@n|CIyp{zTO)xX z)l=}L+2>O~j?i@m_agcmbRD={X0R~vNoO@Od$lku`PB{RgwJBI4lO6Qap?uFTFuUy z)hfE%hSqz->m~T(;X^GTdx4z_vC{(UhT-cJu5lus6fO!#02B%G6tOyezt@{HWiXrq zSBfo)@f{9>ItvuHT3l#KJ`=mc+WUR_taCs-ONF{ofmg^g;I3=4ML+7v`ei!M+UC4p za?PO((M=up&?5U-*I3fncBo;hDe!&z1EdXnD-k?PS$=Kf6dOOJu}bNme|z zOcHAs)|1T25qF+V$T@AwgaXK*>mh2>FVNmS6ne`J+h_NGzl5UN1+i7EWKu_t4#Tg4TIG6sR%!#Rb6r7&y~^@kW=F|L6TLPDRUhDY)t|Bdk`djSG^2d*;P%kodX~f@n-o{4Fzk9 z#?4Zb7%QMdnzx{cE|&rQNd5-Djdo>FVA^2c^h-JVCfOY)QoBxLO;f_IJ%Ji) zr8h?Q;84Id;KmVo?&x$I_=}H8S>oOcm>?T?n1M0WcE8sEgWKg!?q}_sy%?8NWY)Jl zq*%`%UckXEhXNtO&3*NXI^rGKBoQ#lGPaN+7 z)Fn@)>6^UlT9Hpq9iD# z_GYFg`)@1@Jf=uLwGEGI;=C8O+*{#-OrU20=(F1`U`HJ2b$)QpMk&J)-S^5N4E2z`2(y>*_&xc82i zWz;5Z3mczxQaM0HR2!QP%Ux6zdr}kaj`|5k!%@7v5$GX)s{o_m0^ZamKE9+NyeSba|%9t*wDo z^kK1MtR;xIxkIk2?7t``L}iC5Z4xz%eU>GcF|gW!LcHH;t=k6Pl-cBCoEue{(}Avt z%i0o!%#7E%Z#NpUGgyILl&oooh%hmeg1eG{s9x%o8*I-qDNf`oKBq@7Qv`qPruw;oMlgf6|^)PR)D%c8CI8 zaQ%zXPy)5>(H$i=uq8bSuZoqL^(xg5b#z923IjPAPKu0lFxqJ3vhFkblwjZ19nWQ ztNGEv&-a3GjqSlmaTA@(0E8EVtyvx!sQVhmgCPYaoEUu*S{smAZ@ zl<6dzv1;XkN+QJEVEn@tq-{NtVdvN+AdUEq|3Tt;!cN~`(RlPHJVmR)| zL>#1UJGk@8--DHo8E1h%r%|$a&H**+TjegUc1Oc1)10Opk$#>%uDso_c#Pk?W*4O%%0Nn7VGU3l3vHC0-=n4_fELi{KA zQ7zqAMz%(gGTDR?6yXA!3a;B&R93`M=iUB64sI#sL;^b?LkifSA=Db|z^=BoiI>!K z{^NQ+I+KJ1GBTV_wGO?r&+f}?U6{^;HXoGGs9&T2n@$)A|4pYQM2bU%;j0@T`YKF8 z>3S#y;rI_3>oaO)U#3dQR=PrHl$&ZB?Xiu-l$$AVT*(oWU#u$67=>#i$coPk-IE|# zjtF}EQ3~l0xTquW9NtNr+#iHlYb4KIYbZwbcJ9Ov_g>jm0g>UFx@v%CyumSrxz~?9 zKKYq?v=p_#F+cKZ&$QDWa6I{C1sjI@@lk>vwl%BA5kdsS2OR} z1F_dOSgr6DGQmgOg4i8Z8#p|N^g`ap$*l;l0pQEt&1fxF61f{`v?0$5jJUxT;CEQTdXP&0_ zBsqj8)(CV)_LI5UwZnehlmc&VgcU+;`!^F*{UYGx1q%-4!dglGL(_fTAl%WNeSCnN z)5RK8xK#W)ek%!Orf=vfmXfSyzY<2`8&JC_O<4w5rUiGGA98^3qW~5E4Ll1|(uTXk z4L>Ls`uZhS{@y7&SxlF?Dj#(2@dCp-zlDKAoeZr zwYFP0%4W5X+g=n~OoDYhbcr(&fW&C=IOS$c5X~6n5fxq&T3(B zl!~AW-SrFfp#HR1epPYjGWgTyka$2SC$qRicb%t(Q})mQ^Z>@)o@;!3Fku%SKV7%r zA$zhsmquKB!$O~&&r!I*C=;FzCvh=)BKE6u?$I)S=)CUHeSwHEHJW|WWRZRRMW+4< zq8~q~)?dmGtiE;C`SF)oMam0hL>++!y~|bhy6X@Be9J%T;M3vg4_+VVr@A!aTGL)L z%jsi^kJ4jwseH3Hq)tpf$_T{sULe6_M^0SAELtgIM_`wnlRE-xdMsb^7 zbh(!*Rxwu*K%|(7Yue@f{#e52n<_Q+n)e#T(xqI9t4JnIJWx-mwDx@Y2gjUzZtI7r zQIMQbvB@U0I;)Skt6hrlQDm5~X-e2xgWH~GxA+pjf(U8Rvm1h>fmOrGsg1;QQKn83 zTT8lfDI(fHMs-lFDUzll&-}5OHLk_46P0-M0=9OuRger&=zmQa3H5R(K~2{&z`Y8B zB#qD<=wV8-9Q?rkaPUBzd{par45kGgdb-&IL%{TkS8X6y5B*6nd;A5By91m5x#5-t_cZUHbFWVulkN!bmci*Fo+}|FN zD~Gu)JpAq>;A&x*sn8xN-~YVpN-%D6C5 zN&JeS1;^dqSNabs#BeX}$kZ>YjN_F+5P-WU&NZjZ%MHmt$j{&Ca5ZG(v-Y?%JAnLM ze&!j&u;sAxPw|T}e=2l8aBqFcqC@H6acwNks!4d1?_xY$u#)8scvDn;$Wnd)hRQ}T zLiiD|?W7Ug^bTfV%3=gR9px0gGkrO66AC+?L?i3TO}eZcd$xx=+SpaQilHFAFL|~D z(x~ZPGMal}Ao0uf@xMSuBa{h2U4zGDL5;p`zU$|#RTu+wzY^5{+DWMhM$&>Co9*3& zdU6*b`kx?5t-9o+Vm1Jp-P2&7n>y3K9J}aLRMI@PBv|uK_ zkiMuZ?SML(kT;w!*S^%m7vqKv3h$U0f9$|Oi#l7_AAh%n zfXs4VAEPB-xyZOWQ7dvD&NN=fgR!BRTm(P-Y^jr0hXHlXdRDIo3sL(WycL9MHIUfICDu}DE|(LlD3FX)f~p@uW?e>-#$+D~+%`PB zHgOMbLc(9g?KHuj2|$Biy?YbkfpMH>TFmEtlxWPaEw|Uy0Q?D}Q0($C)^NiOZCya)&;DA60WNGgRuFQA_p zq|yt+#+cAdca2$^2hwM7ges-Xc{aq>C{X#{A68lw!|=U|wAe1MfRR9SbFHI#Q~ZD zz|-MUPF93-vs|uTbT8aF(~15{u1|f-`%_1gih>1p)zxmVmZ}i9u;`>pbvK8crg)@r$uzp@5`{EM^w(o0VB61SqL;#BpLb$bu ze}nN?d-GR&n;+fxG0y}yZb!|4M;C$v+_=+_%_n=vJGf+ z&iKF|L#Nw_|7Aq#W=C&M;1mkNu5sC3)`5Tjxp$|=ruyib)$_ki(u^AO?FyeSMCp_e z71^uPQtjru}ZaqTtMcNd{(r@?Bn9*)MGh)N_M!PIiX6_ zqls8KZN+ySr>_Y^Dxqe`O>I!nP~nXyF}#Xouk9iNC#c;?LO3YG)t#nsFH80tP^wy( zxFnH;Ybg=3QwT!zHvz3`)JpcnrdwbDVb+Bg&V?eD%iMnLV-ZH)U z2qYg>`nGgR2Q`4xiT&qtYu@x-&iJV;SgmpoE;9M4eZ8akd3xei!L{=JVNz7G1ibND zN@%JhTRe-vZTgThbs&CDz(x&|4wkiu3sA!j=g+I33^eB4g78bHwizuS2}nOJ1OBFSNe;@)3J$t!6yaWdEqb{^B0%>4MW z!!jj*HiKSRqQXK@{4b6&{#_EkwPA8vXB=UX^ zEE<$_Q9#U|PpCl#r`&|M@~`bwMGp7cm(hxKGIPNem2?o|O?Kn`=CX7v=l!**5`MC9 zt2rp$$iQbP)pF1z!PkI1EH7eePj%1oA&q^IqTfsulBn@xPE4Vw0A-H2c2i5?(VdL0 zn1PxoJ~W$CVI`mIAqc9>kMGWdC)zEEl#h{C&v3JQWW-3&WScuAFtLH@=qTiw0zle{ zfHukr#qs}u^6HTMu&LG{wJ4PM6Z&kJ)Y>Y<+R8O*Y$99NGr*sXgi zlI#ZGesGTB5Ok&rS~rXqkC-dH#3WIY4Q(JPw&)XBe%skVXDL%l7Z2szC%-`+GTCsr zn*V)HpJU&pcKAL0!nP%Dib{O5$p^t$f3dl8QDI$=Lvtro;Exn{DeCZ+Qw}QmbwAOG zOq!@t`e`HO2wrOqzzp&y$Qm5+4-l!_?N2yMW@PUBB6&URjN%7&UjbOu7}o;WD;-Yh z_PH}R%nCSv-byLmC_en0={Lp{swzhj{lRnQPT_H2Rsn8K6yMtF?zx)Ef?pl4Vh{h?vreiKXel8^G z3lbx^leUJJt;rQ_Kuw4VkR_|sJcRi@NDYZ%7huYA-`}7kCnoU=x9Y@hZRS21iSLjg z3!6W=2(wn+SXqR$n9q$3+FCBp+Pr<+xqKr1{xQwbJPZ$1s1C?vtO^G|8x3K=R_CG` ztsR;cJ?soHr>;4s?@TMOkd%TjUk?mJ!{vVo>2W_Z6qrE8ZwtT&GUbFr2FiRovnqmf zou?^V;rpalv>|4>juPPs>(OQpf_S~SZfDI0d$q@{5^v8j73eY4EghzdLWy##TV3>< zhxz9S`NSA+jk+gyro>1SD6J29@A*CS!8~mgiqr;I{rBF;H*CK}2vVnk0<38a`G4

+x4k_IN6rKZLlJ(Fw#NY=8u_?f13!sbbjZ#W6DA`%oD#A2v z-CHA}6F&N&jKpDn5AA184 zpp*xrGn36{3ubVKV)cQ)={AJuPOfqEH;!`kO;693FTwW>HeAX*-2M0;q)2yl(rJPc zo8GBLM{(E087o}!?OSYPd4{|xeLuhn4P`~U9FvF$$P+3*%u;kvpQ^@ z56H=G9)ZT{dhUl*Hr_S06>veBUab3v&R|I`?gI}{ZE(lteyd{Dwa}Ff%o|GIKHP3R zC_D>nT^yL?pd(7C9M+dSsa=Dk)`6K&F{)6{-RTH7K(5V9+~2LdPyAl zRNP+3{`hdt?N(TKt@nwp9r)`~QJR`%ee5qp+d;J6TH|?->2KT^O%B6UfgY^kb~rE| z0F&)9$-bb7nCSC$kGFg##qz0i)!cl2=wq;KF5079ZbX89K5?^$k#DFCM#P>e2F>rP zEX|*5I-f2+6RgA5W(UzQS3E*t4J=pbl*rkC&)6zbPB*F_ux2 z)WPyGS>rw9{ywTDUxM}q<%V{a37Si$^rx;qVE!X51)v!FqX2xvnq_x30ZY8c0wNb$ zq@rT@na7)4D)mk}y=U{XD9{O^n7A|a-bUNwm_fHL-oHwFh!w4MIAXAzr@`Q1h5Byq zoG2DqXV|Y;mvV$m1AL~!`ic;ETB&)VL}!SX3@cQ!Zzgy#b>i6j;UAZTX$)Q88y@N; zBBS8Jla6iMlxY2Q45_13e*`CSms{3?<#TwHml!xSfGhm)PA9gO$%vXbK2D?hM>R`Y z&LSk84NKF5id!Le7KzSPRF;poFHBvp%9!$2RwGFhdwrCi=|gf%`9_4csWEF zEZAWkGVj3tRWa>l69Tf^$B>w>?O~ep6Wt65iDI%R%oCT0SOaftj>sov#(3&4iYmS~ zzS5P`Oew7ZBum*h=s6KFe!U1~kQx3gvX-w4kQV0gLCn_%0htJi$!Ds9T`7Jg?jCr? zzh8{TDR6SjW2T|!kma%TT~~(D41i)Qzs0n(o@z355KDS@R-zlzJ$N8t(yX8VLwE^E z@w@>KctWvi(qN~h(^25#kbMEo#;~I34^$kR$dNWK=d)<;b~^Q)%0~XW9Yvy||VASzaO##Z}pStjBqzT9j{S-wTe#)@={!rl!og2!;)d#iMhjrsj>RKqVU_)(-~sw z)@niWf}?J-FZXKOn}JD&T1;;x>f2G=b#OWosm*xNn1^`OWi}SiVqL2`#Rha?c_3On^C?UMWMqRg z>{P2$=h8H8qyQ;b0ONgQLGPTzkA7lMnVAW-YPCSFi&A$%xp4wBT2?fTp+A{|)q_}k^G~&j$4ApYb6LL#m>Y&V?EbM#Bc0VX_z#G(_Bw6Vk$H&i;0ZUR7VWY&6KJK4q%^Wh+mdx zPFq7Di(Ns_+R-x})rehMg#;*=T#JaMF zj*@5Xte0-wj$^idySfWcPPw?Ybe(?^2O|&{f$108adTpg)h8Utt}A=SLo&2puwEj& z$Bv)Vh}r|CO}fS4Pwmko@H#+XGaP0Wh?W5Rva6?6ujb<@lp}t*0gn#RUrkn4 zjSBQ@+(u<>ma`BYOLq(q4vfc6_CR(5R&nTVchOxu#7|`z?K88I6VDa7x_6(U!1hnc zS`^NRIS`80E0NR&R@d&q`#09>=NU6;VkEc@5mWD*7i}eo&rzjZ&Ub$mMqGVX|38f-jr%7AON1q@~mLT zRWJGBp861PgaIY)R+{IW^))3X-7US3l_ad;CEuGhx}s2}KVbJzezxaCGxfkD$G-7? zV)CJaaiiCD-Uf|6)`kzMra8{4T_y5(mI$)@#J>cH3Hxxr1C8!ig zc8Ukv!3mol*o+h}n9HNT)c=`5)Ugh2#@t>=(7sx?5?MCl?$f#zU0FWE@5=cdLUIrW zM=N(T1iSv;}v@>)&~l&2-fC zYh7U$?r7q6&ndg-Gn*WugAsVwV+0Z;2A(QRyCaC!g{6rTeSDZ(yF@|<8oCaeJOGyjas_ceqJl$QnRDH%{F;4grF76Eqp{9lyN#&drL!8; zgP5=8yLwvqBva6HIciVhZ(nsxZ{RS&>F?O?nu%UOJnTTmb9C!SVqMlJ``dM;GOj~U z_JoL3|Kd;`>XZ`V7057O;XjAuCier*S>N)36-Sl+)se)d-LWCvqBTXMYS`{Jglbh% z<(Fp|YSR^ZVOpNd=4Ck`v5TH`RIgP>i~#>X0Kg2GCE1~qEuiYI42cw@eeIBzVe7`v zoZJ;PgIBT|^NQ?7YM(bmHbbsrt(KFP;x?I|0JfQ~7^=l#U8}~5R1N|9bHKWT)B^)# zrmVWq&4w&jx6&$4cyoA7!S2qN010P)aMd`sf7IJ24n3?+oc}p;V-94TZZ3adc+6ZVryLllEN~f~_CoOX2=p$hCZu&2;VZ-bJMh5Hju@d{7xy#&n}n zVvj?0Z7eBC_yoA+r4re_D-jGQFsWrgP&l_Yy=;x-&xV-;1n{iGdsdWUG(oXKJS@lZ zyvWc&h*oL|C80&CwW6#AE3$LsapH@71QKg*Gm7p*xfLw7u}8sJt%$4~I4tcFCvo{w8As>R za=!P*?Y`=dUQad^iJ!twCN`hHk>XdKBX=z+Q8uH74@9JeoJLVrJ_BU^DTH~ES-GN7nH)UdEBYX8vON6v? zN#}1Mv&l8%X;2vG_#cBfw2YRNkR?4?!FaSEm0x!qx`Y}~cFl&GamdSVE;f5~l)=jf@3PckBP(0Nf1i%U|;S<&RP6Pzo7DY%F({ z!85Xl%$@v;Z@_F1Se%Dia|K!6CC-91vV?xYZqg7?*FBijKXwkx>ajeb0-#&c)NO>( zJ6H0RcM(wr`_dgZY?mEIfbiCyj}b3YsOJ33#N{+z2Qq z@WR&-y}sUJYjjGqjz0sp#z9ko*LH!Bzk>Mw*MQ=1UKojbBxV5q0SMMcMgm_?o^Unc zj+lrEOopUmv}3A8jcV9*)j}-gCa3w927s zU|d;dPeZpZFXl|`>yj*GN5dB{cJ8d^FWhKr#noXr`h+z$=bCNg!uLtIj%fyAbD3GRwyA+YlI03MG{B4goJ<-r?ttGLB> ztH8fmv_uw`dz^6BAX=`$tA-&kGD#%nSA#d%{C9|Wg>dJDN=6!zCH(G^_uBldHwptD zi!i+TZ(m3uLUGNVl!#ulU-l8Ro0)3EUulk*fcaBCxFA%xH1BE2-vrGS_Fl=(3jD6P zmNj!;2vvqe4+CJVY?Ub0B@y=MZSds!+tGs$D)9)wlIPoWQANNuR9`tEt?@xZ_-b5-#vwb%`;f?W)&6Dm8pP4|2$g5lcE)swXomkW~|I7ln1aO2(-iv zA_`EaUXE1oX<8xK%gO;C#BuHeY&R_nwnKjdvC>WIWHZbjTPDFGq7F1yxu@0QxNoZE z&QU)D5R0QzkCk!evOL2oR1^27?|TtSDlzoQSE#;(>#$1}m_H!<{|OI&6>QOBPfM}& zCs0#(*-+?pTx@ZbOqf_FXtwng=|M2SKdtpYedoP_Cvkf{3yaPu=u0L;sTsL{-fDiA z@A|Z|&jl$zd{8{nfg{+i`~Q^Gu9AWkW_>rFV}wWZt~tEMk&U2sw2Dkdv+oaOCTI4| z`3336UB`LoeITawXSKyCu*8#Eu@W|qZo1~D#(03c3YFmm4z5jL<8z4sPNj>FjSS)McK4Yc_Sg_VBoTNg zDP<`|*FdYwG?9bW85rx@7e^awAEu=KM7;*L8ssVC&&lAwg>MAm1kmT24&2 zDF@(zHA0a|^j~W_?;t5``1|K{hIv2JiN3nACrW#=oo>vr5rr7TC6bf?c7`}k>kI-< zFvn+k8h>j%JmYOu_MFUh(8hivbxOZE)CyAp8%j((USuM^L4J|hw}*{O zgBP*bDtWjNksAPlsNkI?#d1k$=}yrk zL3Wc4nHY`YIE}+t+CO@$WaqeU>71c~W~HO3i7Dq`&_;Jt>N(7v8$VADg3(kXsiOOp z{klQ!Hx@RzcEmsfY;R*c{le5-)GgIH{u$fWL$o*EUc@&M_wzzGu~^4c0r8M<)9TxXk*Q}HU z1s^+V&q#0uIO(t6Hxn&@5itQ7kx*{mLhDZGC|h<4M|8erur2xs!$9ah$oV{-!5|VD z4iE5Z(&kt|rRtCpdtri0lFckP1MM+MX7l&hFyu!!ufJV3>TX=xBoyoKq7M*7VPZr& zoTH%3JLK^f$~^wkC*n(Adg{-mJ$_mIy_iB02IlgM_!t9(KzWjQ(59p-5#~xotj@f9 zRd=l#nEYz9{x|KNlwOS_4OCJ3uQ2BxL=8)-q=fLtG!(KoA~JJZ^qXL{Mt|CdQ5@cd{p!0H|Flp)_Vt`4}&+{Jx zmPl+^>?9RqWFf3*^%1DOZum-H!9e38ML{m98PhF+VD};Dd|@uj)F%v4|9$+{dnu0P3#9=PPvf3(DKXO47G_sPa6YN3|x@tJ5YA9P~oFuCfW zc8Yw05gDJH$KVbAGA3gUgfCGXMbfUu&$|#a-a{g$TQIY`>reR%1|IV1-~Tbasm_mP z8Sn~nT3XNU)U>yN=};Og6qoRE#(&~WfB0SVnX4-_(MQB}76K`h9bBs8BEXI=mSKs|= z8$;4OD|x1Qs(7K`)N6lpkxe3QpQAfNK7`j5sP1bZxT7dfSptm$EK;OzU^pqlw+KR7im+y=jD{{G?!yS0;FYBtd@)Dh9hModegM}|6koxX{Kh7Utgy-v+T+J_ZUPsO0q~@@RT>jTBj&5^KD>HRRqJi%C^B6}0!%}=FfdLFZ zq6D15Wf}!MiFeX;%MoiiCkr#f?D&Z$oU-pkx&b$X$5d>l3eJ!9W!`MgiHiEeGTYwg zkS}ZXii^(fBMrJ^!cx^$dW(ulpTio@v}RA0M6B5a$giIN`(6Y4PH`USm|W$Zeb%p` zD%zQ#iA)C{rv?K2w5wO#65|hg=)!y_JHqL6<7S^9!!4LEa39bg&F5MLV+Y)dH1P{_ zcYnqCH|}gy@os%X?Zep{`Q$@%WGkODWsnp{Ol5g|db-znVWoy}St9F)<(Yuu+;In6 z!Qx_8Gi>yk+z63Dx2pLwG>NX#E(K&O5p`4(Rbu918Ir7$buzv9BaSDqZ{)GcRyESj z&1JpQbM_^zAKD&r%+r`%V)4qmaFGh4u)s+l!^AJ`1{^-S?dBmk7;YA=;QypWyh(l7 zdWMtbljTjNGlhPcjM=}oxW_*Pj{NI6f};DR&|$@E93GvEC_e#;9i}CN&4N^Tj3LgR zsP8k^TCfNop-gFI^Qe`3XdRMP4#$Q`PuZNsGTa%)=Qxua!Obrx8@(nI!9q;lnU~(* znV8V;tO(EY7%``I)T-H?fWcbudYz}?Yqs6XyU(s83oTBCL_mB>m98TH=>+?tq>gDT zjDo*o{LTIHRgT~mgg)wmOlmGLn8$91T7n#s0hfA$??l@G!p%L@oVuf{zF{6G zQJHid7j~(hoC>rZZg9}IsD2!@ICXIhw|_Uhk=!tCX(>mvIW(c!hx*%|8VNn;{k(jx4wLPOQU@j*?( zK^uF>wsxc%yS(inT5om1Bn^gyJ%`3%@Zl_fz`zDvNOGcS3PKU9=7Zop8IJq)@NK3; zAK_x}*}~t~7(3rC6O8$?cQyAR1J^X9$J7B>(Kp?A!J z@@qcwXo;oTNfO$wvLIw(+=D*M-m|q!m99J}8DSHd0=@CJ*t_e@k!aEuCO*1hPbylz zR@31sR6iLt$<3x|iFW%3hAnl_WFfjL>a~20&m#5?b`4;3%#PeWs~6EOUnge8-H-1oQB-4odK(ba z-g-6!j7-d=APmFQk`pJ~Uva!(9Kz-%nm70h%f2%(QrdOK?U}>1fq+Z(W#pY*UCDo9 zcCycb`|#X~8i`2595&8-(Gd3cvK)V1pTiRYQ07_nUUEv*}or43GRjz5v;2$$tZw%oi(49 zip2&@4BL@Yaw&9uVq~Bp%jfkSj@b3x#p3zQtJHIWxbdr5b`iaP%X#P17dm6a+?ST^ zi}E-yBL|00v1$5Ylzffrk34jH}4AfD8Id0LbJ(0gK3wjzHAP>n~an(VTfV3+b z_47hUkDxWeW`mqToU|v&%7@l#55+URBYnZ{pS7#p`I=ur2R z?yai?tADDd9sV)miLYdfzz|y#F=VWv4o;*0cioAeT;bwnnIk3hj!-ELpIATb+c@); zNv_U(q#IE;0Wn@V$Q#sbJVep8^Jbt%d%2h^9a*}_^hF#VKc4uOR7Ix**kCJ47@Mk(f@q4{OkP z>EWx8?%RFToYi!tF^D+7541+s>DxbKnoLEz2nFSt8jg&`Vxo&63rdcl9bt3=sd`0o zkg3%=kKj$1ghHcI>Mc}e64uv)O&+bb3UQ=GUd?;3Nu>|r*a0?A4C)Bb+zLEkfz*+( z3O~T@cQ{fS^=Nh59@1i9&ebfj@-CanLOisZ16zk=o3Ue^xq?)ZvGshSm`?YEENU#` z@}S^SDQ9OP&MNdO2rOp#5IK_~3%_*&7z!~UfBO*ha`r&h-Wo*1jq zznje%+vv)A`)4`+1$?rLho8IA(CJwX=NJ&@R2e*7J^XH+LDqjkc`rMeYihNk0zD&{ z(t(+xgXQ;_FEs9=QL6AuXDSIyx>NhNh28Qg3wUz=4>B~tsWX-Gdb)WCP_BQ)n@jSD z=89KZ>_5?U*}R((cXw@O(3Zfli70n-@#Sz2J%lw~NTRW@ z>GM*+#K(kDocc?Bd5YE>FNY^cO0flDm*<&83ilGVtIFL};+EZP}Vp!Cre zrj6tf11WQ)2w3M4Ei_PlrI>abBIyxG2Q+~0B;HWMX=1`qA~01}V~l3rr7MM>IVvSa z@4`7Ppx^PWk=vN2JF>qLDa#75pd@RL6UO13BPXHCNAOn_>BXzRLI$riRoGAy&ukFh!M+HuAz}1F%QOXByP1TZG|8b(e-TNUzf7-<5my zeljKYlSNK~E#LLjP3!qVV6<+26SHZQTxt_AruXf!*1m8snA(|)MF9be)%q-R5=-NtH_STsZoqv)`Bk z=cT$J3Ftb$QRc6VQ{?%A@qscj_Ckn0;+>lt&b!q8wr&AN=DV+`X>1)Q-6{(*Js)=* z5?>sx>gNJC%O`)cD}$WFL-q4bFa*B+5_cR>Yorv7E^2w}4{`>}5F0Fk{{gh#*3U)& zmYW9{+4sb_0-~AOrSJVTz7~Z2EK-Q&07yymq0k3PjOEN__1Rqq_9-1hydhA#W4;eg zHk(y-6QIx1r;C~LvTXZrd&jD^x&gcns{#fZGkWZcYdW_yEzmX z@J4cypdoHz88nf&RM3Q=L}-OAY#Y!#2?s})^&(XW6)@vUit{f6nRNdYJYI@r1u*cc zkphrS1u})aOc%w>>TJ<{S$JE>FoqH|U@23t5Gb>pIaA}I7sZH>Md$D)8?6BWGG|Jj zT@&_^x6LHBf?KH>`btvZHb|i(V5j}t+&p2G>=h|ol7yr$1usoqEGma5^H;IN3rZ!D z>c>hR8wgCNdvD0UT8h=N-W}p^KL_M;`4t0i4lCwyi-1bfWR?vTMPy6HG_yp^*yJri27))jE{T zcosT+2#M=8QX8*QLOr=or>X`0Qqe zU$CiOP}Y!u>CNEJ3gGL51YS#Ns2s^v?LUgFP`}fb&yF%-|Jxlwe5_KT*aJ(jo_?6& zo4*Km-ctG#VuLgh21ouh`^f|)OMLo8*OQA=Fn$sR)j*N6?-#%|+I?8Y4YJp%RH$NI z7&aZAgammbFSn#wcL$vMwP+*vMOgPL0amf`*-0@&Djg%fVsmWHf0ImvDAtqKQZn!G zkRpuh>l)OI_K#9e16l`bayH-Ppev(4bHp;bI2`0VWmOW9Hsldm$t;Gdd9Kk&ZwrTw zGz1W;2#~P6!zG^x<}Je*q+?U>mR(6x1PCelom>FsjN1#GYH8%gLzNze>HsZKqp)c8fU6oTlQqr5U+&>PgxfK}6T-ZUCOFNwum z)>RhCpQ;g7UY`XU+DSyN?Vs?;4xZAuYL}&7$MhFH-_NOLmf(jJR;Y>Uj3h<_sAsQi zu(e`?_jH<3*UVT-DGE(?C7=irh4o9N{qyJ*<@_4qdt$|ejl;))7rnLmh_l@8L)_Sg zM0QtLR6R0T49g#u49bmI7?;~am!Es=E)`|Rn*F!+qUhKTs>k`pO25yR36R`wIfZ1x zU{bOQ6jP~{fq_t_N=NwwUp7Y5Sv;;@YX@fGQ2^p#*-LW~7R~SOVhKc_=#H!mokd?P zvX@b0nfQTg%Tljs7JEup%XSDOz}V=G?&w69WG+K~f}}-B>SQ3Ln06dCmf=x^*HQR* zbz(?-yFmoG%_mz!VPyTwNc6&zs0)}m7B{0PjB#v@xjE5zir}O{#cepECp7&IA@+)V zw0&_Q8fM$tI`HLID3Afmzvdf8e{)T$nDkgt-7+QF1!KT%pq>q0@L0Q}gjdZ?n}jTB z40Usmd?SpYu>AV(gt=P@@>?=Y_=G0g+V`}+DxAU?q_CIBjQq?zJ8W8=vMHpId_j0^ z9HJduc&7%kvYGFwJ>|DiFuXQ5EWuj8oIsG!)7c1BKhsN^%dac;WM1jG>1AJxP@hPIRQdOcMb&vhE#EVWkp zELSf<*)(GQvk*OQICvU9I9C-qXp(PH9l6<`!X1YzDl=FwhYbV;22X}1B~&S-=N3T` zy7sdSvn0R12MedpC=XcEj%!d~@5Vq7-&XLH*jAJl)e|1EJucQ*6fuPWcg;2sRShjA zc-mQA011heDF{VDGxP@h%2nRmsd-%h6r(Ho6$CQzs?I}ZYi|ZI1`8v_XC{hOW8!TQ zVF!G31_}6qEdr6^@G_=${a}S`dCT$as!*Zj>Ej~`rYtlj8I4@}kdfd9{%hY3_n=B?gRSN`jKfLvcQI`A$NY^XfC%xpD@bV~q2?$*Wn*Kb2<6XPd{~GH!A=RM z89Hfb%um_6hYfZ2H6I>_#GiGAbB^(#UI=LOEf6wT)^7KwSaj;@tn-4jZ%)FIO}{v< z#fQbccI{>2Ot4&z;c53mt}xO{lRh<$KP%k-Htxz{6fu@R=uU zfRvQ3^yLxk;QJ}}@+o|5(th6UwHU-(q>&Pmtc@)>wU+n1Js;~k0YV})hcOmaC z-HVUNQ`#uZF3jbui?O5I)zZ!S_Cnl31qiO}cAiYk?+~w5RRj=CvyENo@>Xb@ErNgb z5lfU)94|E|k|`ecDn{+T%dh;TDkwkdZQZ|zrk1Y1L%S3Kf#0@tls-lB97Q9PDpGlk zfG0#s@f{$T_~n#v6_X(Y5Ajm#j3}9#o)RU7ifY!heD67KY*28peeO4Or^eEMT5P0` zPFOi*)hh90DxWTlBi{u5%m@0Nkdjtj(H@Xq_HvR|2FioEl+?sw$CFY$Fx8}_?3RbW z=nfOW+l#)wK1z-jH#oL+?ZL$xK*=<~>_6#$Xk0%rZ%n3@$-_zQSQ?6Kf44ZRu& z!tRIALFe6JC4}@jo?|ewDabR8$B+(y$mx2~muSLPxT)Eo^c%{;+DevhfCWKQFKrJXkH+e7}u;_Fu_uN=pv zXq*Rr+Js`xlrsiL$WXsyNMr?rr!3h@aG1f;@MvB%tYj2{l^~;I$H8ZnNcE(}D9kaJ z=@8Oj=xWqHj$p03@J8*WtIN~kM#dXv%&Go@x{?hVZ+O??Zau4oU8yb5-BxlBAfbEg zB-5m1al*d5h$Ew1leB`B5L**bTZNZHvzl94tk+dye{J9*w;_5u%uvf8?|x^CZsQXA zqF%>1<^1!>@#4BKM^2GKD=H}Y8UJpZ;)9ep4<`p+3iuTdi2-%J1KFw32i;9(G%nw) zG{*gUQw{PW6jW0ThlUw=%>SsX8VrB8E#KYReEp4fW4DqRRGb{*B%UyJ#@RcZ5#Edm zgK-wGV{)B`iS1~TUIKU6>q-pSYWYd>^@-e7`V$#qfesUpo>pAN7+{QOx0Xjn()Khu zKUV9%4;6pQKs$$Oe_y3L09CAoklh7v!PM_@_Z1Kfm2VLAhXjnnu7O(8uU^@QFKTVF zA**Y&&rHsZT4J??B9&aPYBPZTU{enjpoMNeuxQ@ifzt^A2U*{~Or@4NV_WR4lJUyt z?mFF9O*a@%M&S%={z?TEC(gv%);4@m9$w;p-whs<4d1B<^FPO0!^{?I1t|-onYDE5 z-XfTC_Vqe+p*uu@w86r7mY!Iqkrg$j$XoMImDe9KB6!X#g+=05jr6vR;x}iwdSSMY zBDNel+>mZDUF$b?BsZWD+Y>}UChS7CMr&9`EtL^LUY|~FjGa0OvFz+wDV3JV$#dvv zzzQ-B?i`kG0HBbS{IwIUkpXI&lhB#0D|xvn5hHGAD^zotJp-7Cjp?D|D~ses*|Iv8 z{hTc1(;Qe~wVU;^ZvjEI(;Pe9Y7orIrBWSiv}j*%Od7FApW^&zo)7Pfz~qLvqLULz zvh*I2kOrHV+zwb`_)gbheUwoiR?I1nn~zBla|s{~%mQEUoG&GvSb!voiP4n`fct9} zyILrkGMGljAXr?Geqtg5{ z(o;tyn~~*1iE2m3U-}u?G)=dhYKK2%(#YJZw!UhOko5e@Z2UJGGg$%E^0_FdZSW0p zyQV#TP?y>jM(zF$F24jVOAV-u7|&OO{S^6_n9mf_9SlEXpRBd`X{L`q!Z3f0wauqZ zc(7s7CRAIoO6#z9LNKpe$BK70xXD56+<8K311!Z-_u>BNX8atbw9QoBaJqaD3=Cq= zITijtTz`bEu6PCo=39zhvN8RhKE}&&c!M1xq6@F)eZju^WhcYsAK)6<^-vM4<^|?y z#H~?2D#J_f{sibFbReiBv^wKtD{S{r#H?i8D}d^oKG-t-0hn#!_}*7HHU~G&0i-)3 zuZbYLd0$BE%V2fycXML3-v$IkqI2SmJO=&1r^I!Dq~;nthuCA-YQv(1BqOUq?gLGZ zw%O8hv}&9c3qWswRb&2gm6K`ksYGI=)|^Uq;tD?m&moQya{1$0AeSG|Cz%u^MzHT} z8k@KHko-G)^(T00Cn%&9Wh1Fte9MLt+DY%&e*~;B;Q=MUz!PKWNC~o7G=Fr)3&7lTve5X*(>FU=QRi{ ze}NM7R*_}G*lYM1g;!V*m4}nk=x?Fmd@OK>Ly{;G4?A)*yuSin*cuiO4&q*ue5D`G zZW5!WfR{OXQI3iE#7Yk@4QVg{uvKhlAWFa=cn447h__Q#sOS4)hhN2TlQUe23Z~ zOjTc3=N~vEy_AGQL=ihqXJx%Wl{zN>&!p+Ey_zAvk~W69@}jwa1;xD5fK_yU<8QOg zwmk}o>7A*-ow$oWCU~37hGeXD4Aw``(5tkzr9)~Fm1Onlh_L2dVouxDl97@QN=)=N zO^TWHM|8gPdscU##=*;}sxrF19vZ$RsYK<)KlBJ>7_%MK*d3N$_De94AJ|`V9}aZJ z3Be1W?^zQUM?0e00p&|d1Cx5e?=QuXShnwYBDR z*EhSA;rM08i9)mgF&zt%)WXju<*MLq0=5vWxxtk+jM6O3$`8$WK5s{>8z-mnSZAKl z3fXsJrQt$-`k;&wu{A(vqXwDeDQe@9=7Ic-9M>&BCz`f`V|xR2U*TG6IG!Vxe3P^W za!p_o*a3BZsapGG-U$EHB@M=XND1R`y68_9xFn48{tLE`3tKTDEa{N%eLtCMB1}CR zsZJ80zDXgWEy5R$1E?~;K>wUWU6sE?}Aq^^g$w7j+tL0by)HGJhez; z1c zuIXnb2!OKlk~W$Zc%Ck~Qb<&P6ZQ^jzbVUh1}f;U9c-!4&XHJCnLJIE81AIv=w2J) z22Q7$P6iBpqg(PB^pqb6&6LCwBHU2^Z@|L0>7wN(B-JYhNu#|0GKVeEa_$uCOloy zL}U(mtEnpuh-uuw&Ep;CaW7^5mJo0?gukHNffbrcJWmo-`N_I`$kv#g3lg7gC6Yb}!bBSu?Aab4UnElhBh4-hih@%`S3CiymmVntuuk!_YedWXq;Vk2nonm-- z`iC%6ZXML+AJtUgsOo9x;qIESfg(w;X!7_4&Ud)+tBGh?qYv8cK(@Y&^c#)LLAMVk za6#T#Qx1}R*rxFwdHO9BiCN`*cjybeG%!x8tQ%l8;Dt39_a`Yfo`_kFSG*5ub)sd<)ya>V>o zugd6LWo?~qpDzwRZopY`EdZYAwNcbgO#u{a;2Wqh#nyr|UJJRg=e9tsh^3FXDqYFk z&SFDF<= z9Uxenzlx4A@Ah=-3+wO*z)HY7VUqVPTXANlGOf6|E+zzPajj#@W9);lW zYb1wq_d^qGjVxjPwgI$yy_YnD@miV?%A6J*^q*rAQzV>9{iSBgy_;04u?P$|7UM05 zM+;o4UMp^WB zmUGD%b-ZyEUU(|AOagOgZ8r+{Njhq(l4Ki-&bh)e_(ql!VpgOd(2Io|HgJ3S>4l^x z*E-7r3|)2^H$QsCM{Wky-r*Qu_R3*BYudo*V?i<2Jsl@(&9J~a>j;1dc~zXF>~?ZPE?O!*s)v22`w$$)*KZ)8MhJI;*iy>&ecOL9Cyw!21Rcp#VaMK0e<^kSW;kZR4! zu-VHjQYB1X{brFyQ|>Chc=NQ|#4-|X^7`y{*Ln+xsbTHW(pR%hi;+$tHEqrP{AR|y z=k79Sq=1;U8Zl@V6T>UErsLb#lbQMwV1Wt+LqxbH!|&8ZwANpToXr;_N1I}sjl+Q? z^|DN4mBEfHrDh|DYiX-YyPyB+##CqKh(;W`?Y3oeo zPteSGD^-!UED##<1ah*r9c)zUY$ybw(lwp_x(n^N7`&j{v#p+@e$GYMOWMs(mTR$dg}9jB^D-2FEjC9h z_ukB28Q`?|17hx4EI3`9gJ1L*~HuQW~ZlUCt$(LLT$(a^Mv7uiW_O1}fEJ z0Mua2V}6uXqb$5dGL#Ae0>ImO4tF$>mvfivRZG11`K;YEes-IGDn-*M$aH*?=s*kxW$ zOIpteVuQ6rQN2-~*KAw1g22g)=7+cyZB&LA1u^Sd%B9ys&+pkm20OoIhm<`Sv{zZOM_(}KEhkAe&N4;7|p=dl2`VvphpZBQYk zX;S+|&M6~kPnL5>J#Sj(8LCqQJ_!g;9FKP}c5k7p3Keih8YxVCEX-o_)*9=L+B%M@>(30Fk`^s1_!|lnhuaR22@A2ZGvRv|2cUJkxRr668BM%fef;a9Ne8XN>fysoJ z)VCIk+4mkqLXLy40Z-xn0MIm3LDI!AXge9L4cS^(j}QG@Jbw!6oAPKxNXm4tQekDx zUMs0-H~EHb9ru5nli@0Al~frs**IU}@HhN1u zkZgO;Dx6IqU_!qeb8Ss?Dy+WCU(irJ`5Jv8Cf5 zV~*WkBl;S7ljHPgB&ih0n(m%#FQx{V342F3JOH^U z3ZkFdccyy^#$Z+0R*Fr8uPOD8@uY8=#%EwBt~~v>`>^>XoLieNM<#3wPH0_o<}oI+ z#Bdp|W@d9j#N+pjb?kTmrP234`A{~sZ9c5V zSY$?OGVI(hLH^y<|3)T}7MXKGDfcV$Y@PAxTNI!YmrrVIYXq0frh|D|L8ieS%BzVY&q^yW@aJHN@(kp)L zSo{Qfsv_t1v{c(xtC3?AObqqW@$1WDrMs3~dcB$y6Pa-Xp2DT_US2t0%63d6yGR;{ zs`^FxE_P11(UC%BHX6A&kE}Y}zLo`1YSVc|KPSvow}GcJqy))At|cZZq6?j;dMrTO zk&ov-Eysr(xntr6w6YIDsOq9ROUR>Df|Xsq6vDqiz z?wNv(5U?J~qe59CE7e$sAF5=K>5Ea@nvb)g5WXlupOQ)Rmq%;{wh~x57#+$ap&h0N zg-WY}Bj?GY$)=Q5trebutvTMhB4Kp<;D0SNlwDu;0XvM6eI{7V7#|TlNrKF!&Okkf z0Cn9S5>qi28RWOk{SNZGP$tk7@fB%eo?${#n{!6)ZT2Af+Fs}??reV6Ba&m-Pje%G zr=OEC=~3u8>uW7dRJL9S&fg}(43Nd(?9LZH=BIh6d>?%!v)qoos*`i%y(dm)Od+RZ zfM;*a25NFPPrnx2y9o{-{#lAF#N<9SN?jrjJ|`bHFr8cL_Kb{Fxp*9lKWTMB0;;K= za0N6<`3LzQ5Hm-o|6=;Wy)d!<#;qCRs5B8J;2zvnYN9jkuG?7BE zL&;RiAE1r;l=0AO>(pMPhZ1uGA4Nxdo?$Ol8}dM}5v4Bn^GQCa zSa-f;bDEG>a)vF#>d#5-M?v-iK_v6d&K?-7mrx!mZf1+&cV8pK{26&&O#7FD=F#5O zK{j^3S%`r7Re^sc<8ra`LIR?nKRS9vBRBc3zb3kCff|koU4odyE2WMr>SATCxK=SG zN6DA*y7Z+7IxZqxSSq*PP{fjevz@f5&4gcK!gq>xk(Uc2e862&at=Jo9}%lOszd=8 z|1#o>29&>+gY-rNZO58`m7(N0xV>%8y>Lf9j#9s>;y=tkXN!tY^}o^8{$S=vElQpb znAjK1E-4qNC~$zJ-h2CB*q2VKsw*-C99lbKu8;%9))KxxPOv~xHf?;(o{K6F;Y#UO z0ce8YSe+3va;$bxT2qU7{>H+vKyO#fyI_&dKqPZLC53}8{oVw~WkwH(a7;|c_N(VYKr3@5mhW_B8=ts{f1 z8i2u>okDgUQeQhI-5D1U$Q`!i=BGZsU;zdG*3HncnKOboJw1m>!^?V9<9QA8U1DUB zl4a|$zlJ`9y>Fw`YiWdpHz-CMjjT1~4i$SK>=Q9BVfo~6#rd>H!<90zL@b0_f4J%& za=2*B*XFDJl`K@s|CQAm*FWwXtT-T!a>|G~(vk_!-N`w0=8SZsWAg(vyQpZ8lco-s z*$8cLRuSZ{N4op79M!LkC*knF19b9Fhilw zQ^{I==7KLtuSos`a4-^sifa?gSQs`_ax}7kQYhki-#$k86&S(AcI0HG-zYG_77xMG z5trb_o@)6~d%5hiT6?8lK)d1xpe0!U_j-OpMKdrH;9CDli0M96p5il<=ehDB6&qq- zP?ymNt^Fog_m&e`1HbbpTupAHcuUD&IPnK1_Lg~<+AVWe?_{BBTNyg|5Z%RbAG^qJ z_Qy!p(@}k6&`nR5ctFLRSdQKWK7~FfuzPP{s*hS8h5e3+PqTq%K;=nQH8FM^YLTyMN0QsQIN!IbJl=9 zW@L3;47Y{q^CI9bIzbHq9x7nuuPt^LwfB|N%G%r4^Xur%o{jb~4HSjxLuPX<*M$PB zM0pzPq7rN|x*F=O@trV*DNhKTINi<{d>g+2hIYp83Eio5FX;FfsIF@2*`l6|j3t?% z7W5|>a5 zx0bpo@_`!IE%Oe5uhDyQSRQ676w&%R^Dc_AJY>1RDq>^q_$HvDZfTyVQ89ptv(~E+gUFsk) zi}C~06A_X--+tnFCet+5X=j40$P^3t>?5QQElWKz6BNMG5?C08Et!3WWJbJQCUPpY zn^66_m-sO^)*LqA>jFkw7>hQ+X$58~`_3}9gAD6|6$sv^X_Ou&BHj;0aarvovx=j< zaD8P(gQ|CXe+&p`Y6DrbL4gO2bG`mH=gfJ12J30(DL?yU2hh;nCUvj1q7l_OV~Pd( zN+40X2=+bsTa9NY3)OmNJf5X_K-icv7J}ODF^ngV1Zj)pc%^$^k3I`>tPugsqAO zsYC>+kCqV>BvXNR!hdU$BR4%Oi#DTBn3&G^`3_;8_I~mnt%gDgR)cv4(Qn8ML7mdq z`MgO5e~%v%&Q1-AcSZ~2U(hU^9|my*k8qh(0j77mvc@gd(%z*pUXG9&eh1a4+Vbg% zOLsS7lo_XOrXW!1gQIz&5XFu7SHyYh9$IkdACFl%85*}~hW54refog(b(#-4AWk3( z5sTCZH4)``@ex?tD(8Vb)%l$OE!syYOkehh(j+2*1^c)si2$I~mJVNuP+AB4JGS2D z{kZr$M}$L%T$J}X{7wxcO zB5X?9r*+0lN#~X$WAVX(9v6C^G zU~P6=HSZC}(;DD}zaT1@qL%cUIjU&vUXpxb1b8ApZKmGrJ}s&mx^4Dr_gzXX#Rg|; zVUQJXyMqWD`%76y+|&;qOJ>l>@e&*%5PK{Oc=MS}qs`1{KP!5Ul zBB8ad#+aM%42Yj)`4}r^mYwTj*arxAA|K39YP>$SycKlf&JIQaL72rAQz#f`k=QK2 z;v>#bZJ_2mqmFi#5UAZpgCaS(3N*tvh}Vs6C}S zIjj73r>lRd%+inJLa0NekEgxQ++Dthtx$}rQ(C447GWtSYQcCx|GnvUr*e~ zcar+S40RXk431#ItQm74M!>lNd7O}BVT$OmS?)rnS z<^USal`&;J%od_PnjLTGY%W0+@2G+3=yX{0*dY=@HY{9GuiD=4thTkUeR3~Gx^Pg$ zU_*O16#|?~KH)dqq2Gv&+i;Lml>p+=iOx=u>Q?3J>& zyPp2TgZzE|b=Kx(*h3e;X6EO^Z%tAO-o=>-93_qNaPZjvZ;;1u1vEpDj$h&LP*Z$;Gp z0-NjV5x26+6FZaceSH20!GBWY`cvJM4I8P%7c`T1i`AVDlP{SBl zb-6#>YD^5cU3OwjMlYSQ6P1B6%@26zengUKyXRx8*Wm*(h`Rh%6M;~a*Wwhq-5zyY zlHu%so!KdjKMM#mYnFFRx8sZmyp2f7)yyyl12N+=te9b**~gz`rbv)`HNgX!ZAzx; zf{JJW5yWcwHQoY%YO(woQ^9^&KwU)S0k@PM#u?`TC0l0HvP>~PbyWI#Ya-YCf(tN$ zJBu_RQ}|qfTv(_jrU9j@DwdxwZCU}z69fDje3~Y!hUdm1F=#NMA_Zw;}Dk~-PHwLHq`0hn*==NufI z67whzrLMS0(Rd!VRZhc+lF|kFu7hp38Cn=@RY*_Qa;SXk(t0$GYB`mZ?HM6KP@AUU zrS&-~y^0#Pr|$%r3pYtsq5(_Koa4=4D69UO*%l2i^E1pB==;T&pGRAgc?i_j_@}7vU`X6V<&1Ca zF48?)@b3@6dyER~LqGP3b2!n^or)Q41w8rMv!6GOqQJ4O>Urr87F{AQH}#l6gi^=W z_m#j>oos2xx{R0K6YhI#z3p^M)>(b?Aq`7b3E#o8`X$WjFtKYaReeM=Q~@?vHF*-! zyPQnZ+)s0ivp{_cvM$I>P zmLBq9+~Z#kw{iPTYrF$gCArthiWA_=f-?l!R_KTV5>-cBKZk`gKumX366aVH#HDgl zoA;B6uud=`Syrv8qQDaNS59)~3QsNL$j+(nc@F%~&{A^0BYxmlJpdYSXOyz+s;;Xi z5tYz#={1N}#IhHs{UXJ*YNPlB{Y&-t9Pl|7=_6Dj7M^w@R^eY!1xdLcqV*wBc`_fm zdeP#gqWUo?(6vLxlpKBOxzJ5&a2ZrT&b7!7t6j8+XyC;3w?U8E`+)j&`je4n!7S+b z^eeu1hhTQgriby982oy6weO4= zmo`R_3JIYDdiKrYNP>5kNH!n22=jS!%&Q(Raa>+%%Nilw(4|(9>JgHcw8wp0(>rYQ zYTGSerC(IYFGys4Ru|4P;|dX!q%&dKNY@M`=3s@*WwDh_HLeI_zSg%?h}c~C7)#_m zMdBa_ym;;`xqH@6<^@4;2P4VZ#5J2S2jv8nSR26aqxFUI>WnSM3e`lKbNwm)B``AY zXpOVDX<&iP0RBL6YrXwok$SBKu~tzC^m7cGo@C3ZFpF6wrLJQha0Qr?H`bV1*tx7# zxPStrC{%6Ev+nG3)2;;%$V#sJU0!t;Im{)yt$SkqPtCDmkcNk-%c(@x>1vBqE5=ln za_&H0(Kr1o;>;DX6tJ8!m)ihds(BtBfBN2F?UR=}gjBx!)t_vNyFC%SKr0oXjL=^6 zaZN9cs8|e;IKy!&Y0mw7))fQt+U5SAEKIV)+9~#koD~2OJo%{3_ztdKHgkowiO~ld zjBZYn>YRReei|POQRE!>jXF;+Azjb;LM!q)R zem1&wPhPl0(c_rBO_mSRfua24F;%g(njKHj)P`d=vpXuHm~PxFgV4S{xv(OBxZ3bf ziT(*;#!~iPt2KSL+NPx6&Lj^wI5ZEeDz6J#Q{`q!=)Bg;lTf54TYx50GLtD{rw3Uvskl+0^B8tKAZwA z$X6zUX(ow2m{?3DS0y2U$6Kwcgfq$S1pCV?~rJM_*&y1_O8l>1es z6eX-;%IZU>8tygz-Ow*!Y~LB_ND$3$mTVDvQdELeOs|PDvgN5T574P=I3&msTO63Y zC{PYv+}9e!_?U#n+T2Zcu!R|nt(v~l^0m8+N{M!@m;yFvF5{jvyG`<7`zCa2_2bXg zZuw1hS`mv6M{uC@5j~3U!zN#yy-w>a7e8ORcfGUKJ(i#V88IgH|?Zsj#twecpcE3zJT`nx8^Rc@f)5qb|Ru>EgN0dP;&`B$`+ zC4YSw8urxC=}nS)%M7@z;aoKR7=?m`$`(HXpt8030J z&-+m3^l?rM4u<5$$OcvY58Trjs6UiqttKWfTyg--W!DgoHGJw+<8#@bXyYSVn$Lij zqIB_dPZW9&PAd2=A@;xT)ncHzi%9KX1egOEDzzm>c?s zV3-`JNg5uu-rhCNNb-HlhN?kV__x0KGg3kr_c?g1|7j8aO0a91dL2^gXD|(|j!oRH zz=tsiRR$yIkF>vx$}r`LFIfiT!LGfo;LdE_AJ4A9kT^BV*N~3|D>S(p_)7`o9SQHkY0>mnL@? z3YF8A6w32)teusn$_Q7p2V`J!idZhgZsf4q^I9ycy}f9X5GpCM^OvS_;2tWXK_OnR z+j7K?AX}<72g^CHhSXT`(Pfq@O|a(YA_{Koq`jvfCnU>vURVvKT_0R!(IpdG+BzPi?*0-8O}K3nJ5Z@eQ4`_~8rK%vdmzSH>1gH`JrqTFA8FFf^|XBJ``k^M z5I_(0Gw&~pg_U5)ShA_hE(*xkpUe*}(FonmrP&7gF))U8%&(q=qRbr>IxyGtLb7Ig zLr5Id2cKDCWhy^jPfi(Tw2BcgbY@glsPxb6-*_#wU$ckO;J}CSV%{au*hbH&jfhY* zh85*HBEaw~vT||NEl5YB`T=Px_Lj%@5-az=>xT-_6m z4p069zIG|n`5L~^ji*@NkerIg!!Ckr@=E;eQLFzTCJ&R~Qz_D&)1RX`Ez_wLTkjia z+mRSVA^O+?vrS(YNl5&La=wt?C;Zz6K6TXs8TTLPcmFJb(Zb!kuD7UIO>SR-pPzY2 zfmdA$7d;Qi*&Agza?J(Y!6+Z#mI)|dxY^%*G48=aq>w!1S8s>`3I)MZ4Fl{LCkE2AvVej$;C!1|DE-7Mbtgw%JYm_xfFUz^ ztbm^EiHIH>7!hv7wgBUgM;P-6uxa@kCdm;gB=D~O03sR#cy9=+n?vI8v#+12#AQx(H_cwy;kvKDDz0zEAMUK!hmq8SNYZC83Wn zKA#wGuE7&vF`to0!DRpa)|SK)&s_3@4qam5*mYd+3YWt)R2_9ZF&|*f>``BV7!^dJA?j9(Z1J8Op5?Hi{ ze9y?KVA4xvN9`xD6hsh9_&lEfh4025d%y}hCyLBgXubS-YI-*2^fQ`#!Pv*ZdqP)U z_ncf07%U%Rm!bPc=x6q=(4vQy_V%Fji4Jbg>;9IF5|D|a4`Z`HO7+V&rJd?;52ZzK z))kK;hO1aEcs1B#JGNk8Xk9Q9b@Er_woV zotIM&+JM_04`00bXjW%p$%_0Av@T~`=!{5YEt5@M%hBzgidQ(QNKY@)aj@0-xMk-R z>AYO9`S>?ZFJklqXiLq0RS$z5B9v}D3JnuWKB4Pm=;!7qKW?+&4?DSK91RJw>{!F~;ReT=`i39SpH-doXsPq} zW+l$Ehy`rfc8oa5?R1kM0dwC%)JA03&4lg%9yk9d15$DzG zQdJ$EN8eDvJA#&MKoNlXY{>3=#($sgw3ShZ^l|-cJYNqLGPONKX1tL+1)jRU7y+q; zoOC$%Amoj?5?e8zQLg?cj}gK3@&ezV(x#*MPcV+X<150D0Ujkgb8#jYZyp^_X|HTP zr)S~ZO;m1z90v0~rkn%brrpa^;m&o%q<^bgsK|qGxt&^nkbzhtx{aBSVr|f+aGV!6^I;r z@zq>TzuN@IW>-d;)dOSf6&>#ltAS>oi#2hnCcie@g1bh zs8>__6#ApFXg03F5D*)>8(%9R%}=q%YM2@1KJy?Z=9%gAO92eB4a zEMv-B_fve%n;Ru{CGj`O&uPwVU(IJ1U=n1H>k)!0BuDr=;DTiawEeMyV7|@i-LLy~o<#N|^Gv837E zEEGkct`RrCMIeaGi-jq~-YS`dCt3}?5HS*I48@_Y`79^5J*$wPU`BJkVqnEn_9@;L zf|AlH=5PHEuK!W5fhe{QFjv0{{$H;6e>bK3 z{Q|CRgbuL&S&Z!9i(@u^1beoMaeu)!mr3 zFsJO%A_1sRwSlZ<2SB7S_N~#uYg4aV8%+P%+}X|@f-%l zZ`!=(+V6!#WR%e>Xfts%cJe+Vd>d>rU?OD-(*`h*9#L&Hfk8Kf1X&Prx>&=41YgI% zIIWtz6}CIwLpw|nW+htHV#ch9Mkq9AbctAOr2gG40Y;Sx0izTI)2~fWdX3>lF`u9} zP4YZzL5tU2Gvxl&t)C`d=1gj`@8gduc2G%Y3|m`k=Bb$@rgV}SO3eC;0Y@lLvU2k{ zOud?N=}Ka%#^YtI=EnrV>g#htGaQ}Nq^2AYt3Gk?y>e};q>#ZUg7zx&cnaPM7%WQz zUioSF({ZM&s;m0ip09$%S*me}+UCgkQM!nFCx;d3F`dUqEhu95hU|)pIgAfGXUBC^ z-P8~&bJi7WUkWvWZk2!j-)P_I=%_t)EL~P`pr*bobsz2@DZfp~jT?hO9M(=?(r(y8 z@p1pA`!J^68l_Ax+yTf^*$usJJh+mLtF|$u)kG)JB>fd7<$6$@OzVH2fLH#cAp#wn>N(>~e$xF*T38!iHf?icUvzA!XCpi$v#+Z=kXLn7dx@K6_ zXeu_zgEQoEotvW9lHuTkuo-yUpG{NbKMa@)R!XEV&*&}tg&_KSC!|6Sw z(<_uPn&v-CrCMa1?CY+Us+aoWg8^V1*OzwLe=#g z(eYbf2itGeaPQ#68sqRML>28PdW##p)M6(t|MG6Shj zmL-Hrwb-V%EV-sGEe#I&Nxwas)sRk_Jm64yGyFl#2k=73L+wBs zK3{D$eyS0bEqRm&D3*u}enW;i&16aRCm>!^Uoe}aG>la>)FC!MGGmeY?CI1J=Ymaa zapgXIN#y2OOjA_J1%Ns5-n%yNe5FeEH`3?=7pCK@Oo^7;IR2cU&sw%VPt!HMjvhjw zpV51Lx*tH)P{$4TVw2)yPf=@>@jMupu210I8$a-swwqcpT7N%A1yhdLIjPxW(IkfG z)a^jG*En!iFTaIaMEek-Ijx*onF0w>gSX=={-B;PjHt=;Hs{lz*8A7d)W6yZe(Mz)$8Q-iUiE|axfx7(1t8*F>Y)A)1yn@=3E1@|os<|G<&Da6)qU;p-#(_adpcer%aE`r?`OC5Qv%x#|m)O&;}a$bmHe2g)oF|=nFdQoVFEG$? z3{PcnLLN&%_5-eSwab;7>h4XOY8n#Fm%J6YFvJS9n`xKm4{+AlG7tkmATXP)sLTch zTN~vuBpb89JF#whwsO94be=a;A&XV%P(HbE8hk}MVtC|e!8`}-lc&*lx(u;u1Z}lD zC5&45+GM1H9uP0Z3$&=Js9$(7lRsoInKaG`qt%=k+3a*Y-fe)WUZf#56G#pLS&QnB z|4N`m#qST1RFh?WFCB9$*Lfd^5E*J8?w8Qfa)`+{5lT{B-l{a}1}l&5loY~0q<$$I znzeU?jZ>giO$N4pR3;Lxu6TK%IvH17qTp}VkvdMeWCpOQOM$0h&2FDCyT z#XYN1kExg3$JLQMP+|UV{qP|`jV(Sa&>~`sjZC;OwJ|yKbZb@UU!{iufAC7QBZ+dt z`wZ`$hX5?2OTd&Ot|3~v=cFpT#N}z%c7^9oK8cgaV7X7y6}j8>^B<-->?d?!ulq}i zE#ICfsV+9zM)jTx`L+6x@iee9&eePvdOxQ`7_Th~bOX=YoBbit5e1VPOkGmkCsMkN zkwr%23hm^DCNrW>PEQBX$Hocnz0K$7E21kOh{&mp7?cwxn7CuQBGs##Yf0r z&o(|*#bCUqpXk{?#pPNKG^1oZ^}^5pt01Ov>d8AncQo}QLr2PbipoK##|DA0r#)qG z{i*&5_v`#Q_S_zPhKkCQ4MVJ6|07(%tKpW*gWVqP)rGeslgIH-H*#mr{8DzV)i!;- z>f(0oksR0{GT9DH#em@N*7xNUDiGgb3w6i#$QUq7%1Lh`?~xH;2rZrD+H~hVO&T?M z8pZt!vt9>LhPXJG0Rw)Wo!%8wRUC6OOlQM2{luAYo=j?a0YnNq3dBie61QZ#QK4r~ z1Kxc39{5Ke5&0d5R9IpPzmS%isd}R2b0qgpEEH85<5Y1iU#sa)R%#iC?sughm2F*+ zS6=P=U0zr%Z_d7Y{g5UkE(FBfg0`cTtS!%g((*LLz@n_A7KZ5Q0OYIap$t8kub?JR zFZ@T?_eJWV4qLFYz#Z{PZCmjc`4ttBjgxho3C0dTfV3TH z1MQ(PQ{&%3S10%o0H?T|GdDyOHJyB6QbGk_0f%Q%dF(LZr?rel<@i~!m)quN%wg}Q zc`2t7QoPTcR?n$aN--S|TOWK;ppscXFm2p0t-oOX|Js$l|3j0IE@b&Nqfr7&#pfD7D7B>kP=YjTec) z;)S;6l9)j~4Kfj5493-KvS*tQx>Cb`#0le}?eKj|QKg{Dw}oS~sUv+a|vv zTwjE_^jGDb6dtuL!4%lO*t}II#(PEkJg7NyK*c#CWj@qU9S^zka~so1 zD2im@m1dTKbTi3<@dj76A;@mTi zlZ?H&UFyK+z0O9|GB|J#86yh1SVAG@+yt(E-JiI&NJf&xNbjrwc?{AcVwQemITW*M zOy}~@`N-XDZ&@54H`ZUCS}GPJx0O0?PniA}xrxE9Uu?vAgll8ShMNy@VerI?oLXe0 zzq)#o<>cs4bUBYP(~W;XlqYg5@>>*6>TU|yHhiMyhAq40ksCcwK+d_~O@EsVu-ssN z+urf&ing1J(MSJKE^DJn=j?AByMx`!eWL?Qy+88Ru`%YO66OvulW{~EO64$Nu;8?ek#mQkxEqzsMZhAzy<`wgE~lQvRjVN_2N!U6kv3qkRo1M8>pfy^(9x3g zi{pKtYWDvrBAY75N)S=(_F7D@X|4=Q@;>7P!IC#B^%&MW_|R%`N&&djgk%%-GU3Lz z4rmvhY2{>WS3#9Bg6I;D?T%%E!|~4XK5|kU92lv28%iQJj_) zQ|baMwP=#J5V6#e^hD^qzB%Lun8%=%$*{9_wqM;%$fe3wz!+9CB@)2J?3!4#ymz+; zbC687*NuGzkA#o&sc}X#G}0w>KeG$pD)druu(+_?Z6Qc=6E7kNZRhQ50eYs(zX@nM zFThw9!~9SSwPm?oslwr5jk%z=lf&%l=F~m+a_Lu^fw8n)2dVV^_}O&B*AYRA&fu9tw}s;OellYX6?se z$PEk?xwrMEUb;A`_g^rw$rZE9|DcP9E}oHg%F~{+@4AbWE(UPDf5PjjLo09&K-_5} z3$Lu-X%^ogG#tEo{&1?aVITnCljIL^RPL2dRAMS8d;n9OmbB4_5PsKDbS4n>pbQ6b z%`S;;()qih0H|GhgQ^V#R}x=H{^Ds)*{!>IG?~LjFTd*~hRS@p=855#XoKo|qh(`& z1cZ^tBA$3P=SOD&%#Ey2{jsqli_q+5klZCgPwncx-6xDc$DE@LE0H$o6c zlAYN<2-l;tKIqJ6&HbXec($0bGPSHPvmEnEnYElMS%`Aj;4BFh{)_yS(USi%E0%TM z5BhHmROqTJ>~%T>0o*x3xlCdg_8y2W^t=*o5$q?Y0?gS_3F$TZcsY)#X6p@BbiJ@; zUI}qCL{kc`{>LkcSKUBZ!F89_=6`8}W(e3DPj z3fv(=jHX4_=>WT zceST;%$c(u{F<@~`LcWPm!*}d=zuzx0nt4WQcJ6E9a*%kP)$?a4=>G0Ayvsj$FQgBOcLbad3uLhUMl`DZ5My&XA@;JFX6-6cmc}uoK+7ku6#L2f8I9pSYxf}C z8L-!f9$bY|h)E1X?uc5I+IFq+*C}d}CIq^>j4}0U5uZPi$)49A>C*f@2eS}{x~k8g z&TIsd`BccIGBxCJBlZ64$=W-eRKZY49%5ipqgnrFy3!N^_?~hJHBiX2gXCR^q*pe_ zf7C+#4ajZUf7^^Z^EBM~@%qy&fE&fp7il@vu9aW`C}hQ;{GsO zz*l{AiZ9o(_Z>0B1_&=Pfa9#Nsz37-RXjvWl~J{fQ{VoOb-ndv%gQJ$k zt7oK?{(H2qg^n-joL`V2V{@`Vsw}pR{()eZ168`JOF%=sVCb&Gy=f*}vcfqyUrR;n zbud3ZCwV5*1sw8OI$@jW{WdF8l#-mOH`}^(L@cYFgao>xvO#2Xqv40ZsQpNItI+*o z`Dg6Iq#%|oBa~tS%BJWiY6$R*m6RV-BJp_Cc*Ing(qT;WMTiwGgTy=ap3**fJV~Mc znIdto^Px$}$;jy9EkHTv(Y90t(U$69ynO#-csG=zl2Vuf0kvOMNQ=+|UWxmiT0uFa z$HzNuoL0y%x*2nD(Pa!%Hlrz@(^&eUrig4$y9(nFH{dO3+t}riFD=Jy)n8&Yv`6RB zAhvlr9T+;-9K$3JLByPzkons7!Pe4)Ro~m#51{o?m}%_(=;RDt;52CR9S5Rt-CnqN z3)fI+H;I|2ea=yi zZ_W2B90a-w;Pff{ZSxYIaJl|q@K37BAN#m#Z zSUW59&h(6urJGy}T9vH!x!ay9S-0&$#VL@=&e#uuKc&}kchD>5X zre(m)hxSE^?T+Qf%rbGbz8Xa)$rb$G>8d7yNid{y2-E$b=|Ja`@3d^|8-Ua{x>+-A z4vuH4PF0*8?d0Shc5@_(8DC52&@N?+4hD)Qf&xIeZzNEf|Ml+Myex#7yFleL`XaUOe-5`%t3) zh2tc{|9Cv&7qwLRK}g)=hQ^|QDdVzvBznwh2W7AY>GWY6T36|nlR1$1*~NchfBl8L z{5pqJ9qcuyie}Cps2d)ng&B$&GdqvCDv!nJ`k(E5)A^ui2h_$!B&cmkiO2=7ZNY}X z4U})Rnm?-mrSa_sE!k0ZBAwS#W{T?-*%vBcD$qnbhi4yS6xY2vlx=x$%z6j+of>Za zK962hf&HA{jJ^RoOSy#R`lKJ#H0)q86ps71%f{`F+Ryvb@^&z;(M4IuV z9L}rjYirt%69X9q6ABu*kK@0J%-({!AAg@OKFj*fswHcO5ok%QWBVysozk6AB70w? z2ZllJmf7MTXNe9E_dF3`kra4qM!omzL6;0+`mlu$vNLFTaCB8{BwCq6Oz z(rlgwENNg%P>Qhv<^$wOKhdHU_#AC;m{NTLzNGyAFsry(*Z=`44q5X`D^X*HPb`!b zrEPp0-H=gEkFT9459t$iPce`Och$*kKkHDc*oe88n2gJo9v-JT4MJTsIRzb#wYN$oUWdvm*OVwdJaLK%}OqgX9Wnmm2Peq13`{Qe0@{wlk1QN67 zK4X>Ym5AAIKQ&tQ3f(5FVgWsdYMAv&`Dc$R)(V)BYS0*Ou zV$S}h5HKA6jIc+=36GeM{$Mzmkm;X6rbB>rM5rn!cO$ub-iZ`2>AcCT3e374lAE1G z_j}^5sO6g&R`a=nU4T49Cq0f4>;a~BqKxpQL>{!RH3E30T&tIXc7w)3NMt3%e}|!9 zl;p*18JKG^%3vo5N|z{~rCPqMHl4S3m`MpZEp_7q1D>lkVXrQm8Z0pUchP797t85O zWgC^6ektNWCQN_LI-^$BdL8p2T1J+ZN&*vxDWoj-$4D>R9P@TEziO{BDYDDqpoz9H zKIVzEB-F6michc{ds*M|HirsS^DUe8+cWx=G$EPT)Pw6}#c7vwgu5(CVC}fCtD>R{ zdk)8AfGW8Bx)?$+}7wF%;jz;9BU2Is=wpfU3Q%pF@ z(MkhCAYyHFXbi4~q{Kv~3|4l^S1{hOj+nqa{9?m6()Q~mrDLt(R7-0AN6qo8tHMDl z5V`%E3iMovCIgqKFL7gdnXLfX#BOp~6dZrzCtGC*H!_%Q)dC6t^97#%$CdiKnRC-2 z_7-{sqD`z&s@mbFEv1fK_c-m0!ZvWn3(Z2~J^^~-{Xs6ZK#6^*e-7B`*ap%3YxUa&h^;H0 z;9A)UV}>Ll?Q~>GZmDY9XtU@B7#f>XogbK!J1Z9hwL+I&{$)Q%)|HOTVP9VCnrdyotN?0b`nnTLv?d;mqOdcj~Oyd%Z)fF z6Pl3EM5cki^k@!z9V#5-nFj(i5{mfvwsFAaZx8rN=!aeqbcXZn0E&g#ELA@e*=1$2 z32H7bwuLU%lY%fPI?qogl0^K&gaFaM`LED_l>uW>P$jnWUIi9jPWu}}@o&>S+E;Zj z#wTzW9)|>SnSZpfKSvB99`t_G{vVf(XB>dtk-VhXo`)Sy&6#MF2fl$1vhjei`r}X$ zm0ar&l+)#<*nx~$_c^qZT%8AFGNS)sRLB_R&p%=H@>nDkJmSFNd_?0a67nAg$GKG7 zmt*3uc9D_OUs%B9e{i5%jdrkdmP^C6##Uc3^M?TZ##(Utesg(|`=6$5(c%Hj&Bey; zUDjL$tn9rnIV)QVHnT7WoJ%PfHgvcj0{>Y5=KSMw9|t9pHxg&jxK7DXbeIhYD<5+O zJcDbMDl?=Y`Br*$DpuiPRt9dV#~{r7`oH8on2HS_0rmrHGBDu22`!75w`!{evsY&| zx+a$hDP*e5m4Q^CI_3^h0Pr7raQ}!{WG0e5QJkmsI z)nZbTcee%&@qI8CWt@DyKMtw9FO#wK!2nY!wyfJf*KkMVZ%yDYo_wUC5%H~7KHB@v zf^0u?4^Ox|vTyR1M`l&4Gi_%!JO)PF$CL^!JtEP2PpTkY3pSW-!(rz+re0MX0KJG#d94?LB_I2YO_Qf7t7q1 z7P~hVKqap~u{LlDYxJK)qyWr{WDvEb`M>lX7vKG+Di)LykLr-VQ8b)~Ax2(DI1)f-%f`G%cbMODo@5sGwCA+(eX&ylyh^ku~ zs)pRVR~oYkvsIm^jKAT3!#la0_&mc|`Z3C83SXSnzx6rx&u-9Cu(Qk(vmwVTX~Eaj zURT{LtzvPKP&;-+jBMv%aYcc@C0?}LBhD<;a#XEH1{zQp~v~Oql5pP6uN!Pa?6XRf)7IQXxAbsfYJ3G=2%($XAd%R?QG>`4h_FM zG70-@*Ax5|u;!Wc$=;%qjnc1F*IEdoT{ze~G8)zb03@{dsBNW^H+ILdg3Rg8`ZKzn zUFdetWKfHKohS9qm7B9TRB1wUk{@I6)F53bO8`6a@Ufvjs+p4?nUxdZA8_?d{-F@mr(rASz8)Mo(y7Q8C{3z5#KpN$GN{j+X}%JG9TE5@zF`_6uU#)V9`aHl>#ERy13)g3wuug? zIzIK;lck#dq-PWdx2a?Qx~Z|93PO?2?SSkDgV-UGu^-VK#1f37E@%pWDycFq=6~?+ z%|trBAn%i1J)1Lux1OV-+&WGr(!R;N3v?`kGIr7!R{tR(A8xNnP-jGWZG_MqiGxmAdOYZ#?Lt`uD z^ubjBjuPwCh^)j|h~}~O9AQ*mFQQF*u9@)*{`tN}I$ujGDiWUMf8b{@n?4|le)>S6 zO4@9)Q7Cwon@?A=_{zep;4AGx$o_o&PopK0yY%5y#3|;p)b>^Sn4*+U0RKM#z(I~Q zFS;-rBlE>|wz2nGF0v~YSS=b3Qd?2%URpkDuBXC*=0Rto2XZ*gt2xv51M=N{ik(l) zEgTpr6FU~+l}XadomtH=qjUofOa)N|Dy~a-GzFww@p4@!s)4Ck-F^_-QT89BYT@QQ z3w!p)o^tHgxk;{{ZcOe9GUK?7;Wo4%{!!Fz3q8oT5EZp#>>_Wjf|(s-KiwbAca^oQ zGK1)JvtD7e`Z zh&VE)YE5O)gnsbhq9Jm-aPh1j#j%1E|nn>LUR-i_pQyATi zmSZ;>GqyPPLZuo0MGO6zCB{;G+k0Pn;c{e?+7|lkl~efg zTnf!8Y-AW8r2MHBA)}`Q4%6F`t?%~1V~HST-u($Pd$%RP=&k79i%eoq&8^D?%{f|q zm){tq1YFSjE?Ljq9sbPY5R&@t5!(g3(dJ`^-M48r^xSTG?t>r|@?Sov%pvgjouAms zE4LLiTC}>=Ye*cA2*@TXfkT~*S_g*u({W3V>oBCMIAD-oF7R%q7ffW*<^6HD-mzGv z8F2YeDr69@LE?Y{bgro_(KWbD2Xns`VdeK~(LB!k zPvuMIO46X?Rp-JRvU@_2Rt2jlHisE*ZO=oYOsc!qKW|I-%L^VlULEIWIIllbIhf)H z8$5~9wI8mA37U!PTF0T91uB-kyS_U^FVXq>IKu}02>kVI7%vAf-;O_^jnxturWzHk zOKQe_$_yo%qPw-ql2ai21!&m#`eHsqX{*umQZ+)upzqs?nqNW6OO|WIm=l+I+XPeW zhsmqNf)moaMSmS@7c*snhV}3HQMwv%-L+aeV1oyuuYqF{2gX8pwPO&Eg5wIqu3gP1b5U;Qb+jSikvDc}3{Y1Nvh#~%k$Mz`q0njNST3snzLsNfK5 z<9EDmFWQYD0X5DFcHy8xNigs-gT>GOqo|kkdWh5rsrqFq4u&|j%>K2E*cPCrsv^6y zs4UQ2RP?+p0DFLs^RcLo<3Xetk|m{KKNb!vta2^!^!jKUS8yWr0rGyKjw@Sb=;STL z_f4e(rNF(qot2Eih%I+AKdrghJBgCJ1F7y2OrD+D_#GZ;;I=n~Xy%>HmMgZ7jRN6h z^n{&7 z=V;2Ih&)%ZOZTMBi@=OIS=8#lXcIQH7B1QY*(k=;!5p#tI~OlpM^!x2wInUS`nM_h z)8kW5>IJc8>YgVppoWrg2htdP60d%)?6bg_VEa5WFP!DlB@D4yC(eWQxD)_<7;ugT zl^b9&bL^t0>)hNd_npKqug?^iX#hwz5+QpKB_~Z$F#=(&_vzZu8I0|hwqeXB4MdjC z*<4*o6|aT|F94CmSPRnK+?P&p@*tf z&T{|Rq7)L4A%Z$fi@A^{^+FVbrq5zY7TsVl@d?qq?+|lMhr3lEkrd2JFaqS>KUD0B z1zOx4wO{@0^JU351?hn6zNcBNpO4!-sAwEmWntKV+Sl14`l&fzvNyfY-*A}gvYoiI zL)%zonmL0e;BT!WNYpLy!TvqbXy^OZSKm)aZWznmXedlUuDnkwE1_Ow%0MsaG-`hn z0RjmMhr~`D)6>~B5d=46M!0$=1#J>Gsi2WZLcJBe~||P(&T;lX0|`S&I=ka|IP&r>||V104M9 zqIPgl!?BJwddMlIeK^T{-y~6f(&#k}4{yt5Qa{Msu5rg98GHI4TPb68ULGf42CU!V zKpq;Z4~n7}b19!#EFW;0bNn-)Nz6PtwuQO*f?EU6E=aFA4v2vo_^ zyqIa7Wn$gE*avFb0J*f@FXt{bA5A8@Rfox!+|j9RhXl8~ zAIUgzq7F8lsAxBl3^}``Znn=+lT%?&sOE;1a(2iK`u>Bd^;!mk-nkRX;Dt)g`WMQE zEZX@8F%B^LH&HV&Eh3VRdjMtHoO9{&lj2xmu7gEAVf>oD602bqZgINlk>=SO7oqx3 zWYr+~8F)>STY$L-rjx=7U*7SIrTeM%aFUd0B>mA3G zHF!9L9SuT_N4H*8p@KPA;20H9(V^UBNqIO_@yxq4*sjB{CXV$PwWud6(dYTIi)L7= z8T8tn!seLB^H=vnIHh33Cl}FUQJ3TpqAn0mYn?r1?6hq8sfo(l;rcRqqcaZ(G~4Bc zX6149o}w#Lz;G-*KtBT=FHc4pt!nj{z^hY}j@;Z&?QX@Y-}A5B?j9WO5T8|En)^LG zVHhVj2hw?K0|w2|@{Ob&Yau_w*-kJsE^+eeBhP>cd6}&gk0t{{z+%qp@08T}ma2kV2Q*2hVR^KKaV}(Xg(;3Gx6fXQB6@L#7gORs969sjJ9}dG48&j-7-r zOy9PWhtf5ENHv0pnQyXbbUvQ9sI=@80atNZ<}(rSNA%OtX&NK1l|)C z<0*vaRf6P<1s$VZLK>=fH=fI8fPQiqkL*?xbjE@?_UuM{3s8Vhy@ z-uX!o!40Vt&45XsGeS~y^X(_BLMCcL%I_fKgpMEdLuabwu$t%`wpS5g=3%9d3IE}GS>5uDXWn<5f$b zQJ=g!Z|ruJ?Y%hi!b0k|*H*L!C9#d2-h=@45hG92WY(#3uvENFLl_5eM3~`l9TH5! z25$CDyriSHz6?E(cqY-J`s&Qc`>m?>T|T=^N)z5+Ml-U1GrlBGM`>Y8BU_ zomfI99}z*qU?x>4DmKpAQC>e>`Ph8qi@YWyLJtRibd4`mW{G`R*rhcf(cVb{q1L(R z=5a^@VaQP;@T=BTKPr8)Jq^rC^*LG9#H^!VZ~g29uoSH2JL*a5r;PxzyX!i5&yIlhlYk!82BJoX4gQ za5HH-J0XQ~v7mR+wG#*xnIS7G;x)Xh8usBTXIe^;FInxD zZ#n!qVdz%Sj#^z2*wg4qI9t4oKH1b)gm)(!y>|ylu0v%NeT2`U>rnP&@EQxG3dAWW zg@#E}eN<`ztT)@H4zX^}e zkWL8TzuW8 zt3iZ$9)#_5!~};v3s*zgj2P_+-vAzGyi+zp#9X|**tKFoxP7yHMCjf@Tnw38AT$}z zln>dR`TAhWg?N=SFb5q2p5_2);@-;MU?g6cOw3pE0_@h5Ry4|{?j&?QR^w}PA&udz zu+!-sk&ww?+fasaNJ@)rN7zR~7KVL2S7J4RZF;3uqrmN7-&+a{zn|+&s_X&*&1w&J zj!6s+p#{P=t-mM&g3m1x16)>0EWvDZGk|?Ci&XadRglqIVzD`?nv$Ey;}nP#vE{c; zm{dH4bejl(IUn}aHEAOqm0)+w#MFDyK`JoB2Rm&(a|!|5e$&CqXI=R+PR$je8nDt6 zpGW)xY-gG*HWN5ehr?_yRD_OYvA*IXRcW}Zv@v>wI~_zEAf~$C=1iOodS&K5Uvbgj zHFMB7Q$g?8W^?ESP6<XXyKIWcGi|Gk2J)Nk3+rge^5X^Q(faD)Lb@F6a z+*0|yV>}dcfS8Q5S|GR7dc*4wyYKb9Yx|sWWVrqmeO{W3hHA?^)kSim3lrT~09ql_@LY<4znt+qf=tJovioWIJqLFE279mCGZ zcKN3$UdX6LKWRJ+lPK-J2dLE;oy1^^B~?y^QQIiV9#zXcLNE_=IS*ycTuKl0_XVZ$ zV`gP5JmM{uKxv1@9zW&gJ95D8r0n_Su$RPKb!@a!&pTUcQ*b-JPFn zm*D+K?U36kCN^N@b^2#Y`I^ds!inSj(@UbLpI~37=<1lzxixNP7D=(T!pM>?HP*GL zy-`p&&q^&X$-~77mNXY}*HXu6Iv6!l`Sm~GlV2^?lHl!*K6-s(J#lNL_hNEsI71Rp zUSp$u^3qfq5Msz}sUw2;`dH`;X;;B{!QBv~5meo5E6bJm>< zGT6MePc(IPrjZfp?g;xi`gifjldY&Pdu}mOIbn{t1`xob#IVcWHdge=kwN$b#03ZB z0Ei}aXE3HT?G5ikQFX`DJnLlS*;@*<4@wp9I_fq@k;_LcQ-Id2mpAorFl*$ws3e(v zM~c8Hxh(c`|M1Ekauz9Lhr>7gGiBd{ailYZC&`^%H zH$+iY*v^NV%|U*GaiMP;6S|oYVl;v79RlrH>$?p@yJS@cfFwOZj_E^lIz2SCa&GM5 zCa3-CDhISVT5`R?&+aRh{GL@dPc+b5=jDV-Q`~?~Wa1?P1{YBruX$1Qt}X)ObWQB5 zo@I70+3y#q-=A4u(tczf7%jzDyqr5?{6fP)_1dQ{x=mii6G2Cvcn34+t)YJd^R^wv z%x2h@|K7Fh#|LG_cx%*0w9ov8Q=}Pc)GfQax5v+SX^gqt>%3sG9iSzzt}U3~#w!4w zg@^HcW-EI_T?iQObt^pO#-%LlBECOpUZ#*zl-a6M{&)>sZ|)kAryGHxO#q4sjt2Jm zxS)`v2SpZGO@Oo(Tw2UIAQbmQgMFeJG;Z3do;_Eug@e<-pBxO>i|-@&5fcA^}jH6msNF@ z3}G%XpCyFs@cMERLhNNhE?>J*22tzAnWE~B??QM~nR5y&a#Z(^U@sO!rx(|t)7NlK z`)-cqO()S+KYkWhpj&CE@T~}d7gj3ye3D`z5BhG0`4rnx}PLiaenhTvuD0Q?dv2yi;ct?N4SuwJLw2!LGUNEjq( zx~WF*=FCUIR+Y$py9ko5q0|0X$7v9fS!7CbxEfniu?W-uq8(hnR)<|UmV$CQ>r;jc zvQ@F>&c`oM$#e}vQ8COK_}(_V-PKcv5D~CXehe;lP3u`lI9>~YQ+U48BO}#jd2 z&Q<`*5X};@=Is}hQ6T7?WWMyJPOiyIKy?D?tBn6KaW73hR&x^}Ow%Wev zhtI4vkQikDi|jFEw9)sLM}q6Q2B(D1(v}+nEbS-)2^M21q!u50_C7Sc)$OTbD0?4; zKF}+9+U2Vn1pX(2e~H$J{hSqtR#9;_+{pY|YT7EvU|ni5-f_g*vs5-MO$+g%tpjYd zoEBS;vEND&7|Vgs=&`boY*=eLA;HhhD=tgdlyx#Htmw;eV;WM_jQ_CDrB1}0)hndK zHb<&N5w1M*Bmy~Qhh%+(3>Y*RwKc3z9PY7JUPu*FHC#x8;;%^V6t}eQb#&C0(5!+xHTvILq+Xc#B_c|R-yUWb|iwPgWRhBtg zoRmFyQ*lB{Z{6$r3Apb@a?92qbV9n3fSBw)N+vyyMRU~>X&f1_2a9wzqxgMiseD$ zha#rk=sQMzTYtV>lu7LPFlxS~coAe7y8J&aL+<@RV3jhqtD^{?t%exZ@kkjp4|5Cl zr)LV2TXjUT5f9Jz#GYt^AIR7oV;kP0d5S?0+$6oN=rs2)-fhCrrYH_m6+cgzuBEXN za!c6#U^`lUgHZ4RNyajzjbYr)IGn#GbKA!zU{k_$rr-Sn=2*ybDkhsdP>sX}3Evjn4VwaYjX-!_@K*1=dGT(_;vh`1CZZ2LH!u1*@@DJ%NTLi#yNNF10?hbh#IU z+i<64@oU}kywJR1=6eGv{^LHb20gS}$Ra;=p4ZStFk;Ak7RLeWJ^skBNy?#pUWF!a zyX$nV9(nPRJz(g((#6C|M$~6t=csAVKvdf_ha4^CGwPra4kP?ufqv6yQ7q^V!EXMj&;Qr6LM;)N?1_jL|CI?&GPeX^}6mAZ305fE9d?AoKI zKQ7&6%KOY;9){`Oojrsnx>CXQI_4kk9HD3Lp#H-j^iKt4IwlOGNn09lER#~bOa$8$ z3%w+#@aTwC5Vao1L(9Sop^6;WO;EcMs$;Zwj4I!(NMSV8(Bue>qD>|wUTa1a*bNVb zrQ-Q(I8KBs`+(pqDBQx^$&sZ;_-3(lN=jl?k9v$5SL6IeU(9dm_gJ)I`kn+^*=p6!|uq^_rKa#kv?b*umNRdPG5bcL48??a;90KaKA+$oB04hiWJauH^;LbS3;@=P&k{!YnzFEJ ztYv7Ly2VPPxF5YPWBt--56PFBGn3Z<<+Y#cO!VL949+ z6l%UclSQa3OnVb)LRe=VdY^e`TMQ7xv%cpqm~+5d@8-emK9k$WCceFw;?C6Pb)b%! zuJT-<;6v~dZlKZ%w8j_im?dFgJ-0kdh!9A7MM8C>;l)iYp zPll%kvN>giisViGMXp}$-$4+{KxCpU{PskpADYA#y`$%MV!ld7Ds7ikwhjjtRX*7< zx7@Ry$p9D~Du}f#3U+8ik8PEj0{!xB9K9ZoF@JHFx^21qo3c+*z4S*H!Y>)80EfJm zE`k*ZRGl5Pt)Bs8OWqU2YQHafm~bBPMdwS9$ephtY9Rhp(t7CamFHAm3Ff&#DiumX zC{UTxy(1m}F$uVfH9xlD0my!%A=6uInw&DfZN8zKk2YP649D}&@*4Z`Iq6a;Fyo?- zyR!_?``Nv0CCB|6X-uiBw5QvD3F*>{s_HWg2rDtnhT zUqUthpSZa+B6ms!ru7pfNLmwFG^Q)1&6V0O1^OalA>LRMDhWB$IvC`~D7Hdz0M6Z) zWluOXr6NeO|JAldo} zJ<5lK57hM7VKN|hco!g#=-duyWf^wMk`&0)kByE54Gdf#?XiOJg;^N#tJ`?+UdBql z->Rg|8f8<8I3Q}q?PhN1fcN24RH{L$-9`PbYO#hy5Dl_{C(rYs76vu21;ve;$Qzlp zimJU5nhA&xhiVD=gvlo1Mo*|ToZS-ylD2S*fs}Mc+50Gr}DWYP%us zC#=cd+qkQ_KG)?s>nnQt*%8ACMWQ#Lz8p1xd-Q-+csa@9wT5;=mca}uz! z33($4vkpL}*U}>V*(1pQw9j37T|HO6O15v|@0&s9q3LU0nM_fKqaddMD7`_5-_?gyn{m&tt)BCq!K_U@EPM_MCMJSX z)j{tq700#m-U*yne^Ayc_)3gt_0nI|jMH5Fri1{Rymd6;>rip$v?R)B_F6FiVAfN% zP!)Bu%iy;jj`JyVn-q$%5{d2zvmVwJy)wCYF*=6Lkn%X;Co{WfZVw*1U6)0OF}da; ze-@GnO?}C4D{qJs0tkrmEjPpT0F$zmjBIOKDqh8VcNPZN=_}BOeAIel$L*fzT)_RI=d2+cqR?@PwudAA(puM?**9A^%DA{C~aloFk;N9Ir za(j_+mq$#LFsyj-BHMUJ2JUuV;^rMEwTk)+CT)Jp)F1db>m{SwyQKf=yZwDtA;21| z$=m{ht;;8MKhq=b00bDek2gTE49)0dGT= z9F0KB24Gq-&P2jx+a}-Ck~w`&EU~e-ofcNyXiqQDPR2Y~Yh=qa*cZ*daZ(AewF=BYh z%tlOeGAEIeoPm&+AKr`}%yQ$1^XP-j|E98v!_k7Hl|$V(pR1~3ZOBi@8uR6m6l4!? zPztktp{R>p!KcsRI*C-SDU7yvxbIVd4N^}yBJcK3qt;Qak-wd-n8b%-A%RT^KY&dL zAn+)SdfWEQt_o`1ofC?M*iq-A`*Ubn+Z4LuT5oIz{+A?{H_wQBpICea|EWAR(QmAx zDs@obUo0bV%{3Qw5Wl+h3}_i=FZ{fMqI5Mm*$U|2tG{F#Lr%n<@**|L|LzSU;A4s6y~CKUIJIKV_z>QAh&mA z@x$IvzRNW%)mRcngR~p5BXr*1TG53t$JRaT!nAAy(R&5UcO;wSh7!GlpG9}>nwy@C ze4Lb4QEUSrYGm2lhB5@c!qjYb6b$^`wFJ{GikIpJ5LZE_*SCflWK; z)lN19Uz4VNLXDLi6(Av7Q133qvn586(_3_b%>r2{RJN`(Ca7czt7Q=OYL5(1N6d#WqmT_X z{351rWjQvw5S%X1TG(ukX4&f)u| zX4Y}`b6le(8HtmB?{VwG3L~+FH&$(&o1(CpyxlwfBFm&RK&>DidN`rMo>>qvXfa8# z=|%Sj0oA_$q?)szDag=upL|SzE?M%N=gWJ&Iu$I)a?&sx*TQU#xEI1zfbTr4PNdK~ z;8rSVnY==fn%>G_yyZ34z&h3)*bG;1*ZCfA<6yvdbMp!xA$6Z^AUftvdf9viLP(Rq zH!Vs7J7}2;ho2K3eFVEzYqGF^P>-HTj9eO!C&9|5%PyG0^m$cMHpv_C#~BGK4PJZH zu}7APBt8uR?sb+~dfEcj@&3hz3%YiF0ER4U4O+WwSbd`jS@wvVCWP50d25wBR(MPw zSS53>kmKiL-fsAtrqaC{4dzGKO=#Cb;{z+8E-l`TaBK=$IVefAstBPTz}!uyhqdMZ z`6;M4YnKgL4`ty}1K+ed$X+jwq~AJVv*;&=(4Dy1VYhoy3hW}7iHLUmn0B_^xw3da zx@T&%bEBV5;2B!Za?AF{ZnnAF z9Nt4t3!?;vJ`Lb9Ljl_Eo3GXeK!$B2K(jyD&Mwi4h$Yp{5zpYKJhT@9*pQ~tF^SIXLgjyxrisd1~G z%Z*Wb{F89Es80LW+qb+jjy0#aj>t8t7cPF%4Sr=XDD-Kh5CPw98P?@;7bIPIja8?u zM#oG=^sMuA6+1-cxqP%Eo)Tzq1^vF4E1S5y4D{mep9@?;fjqWdzs>>{#^7XO1?n>w z*DcS3zs|;I?jen50Ei z2G8j1G$(SY+=-|mP5VL`&-v&2}P9lA6n4geW54=f}*d7SqS24kSIiWmg4xhQ7~H1^UOdVikvxktHQ?O2&< zKa5@eX)VI{?#f#AJxd2d- z&5eTDSX(iU-#V*+nZ?Mwo=+#Mm(`L$f36twDg2G)@Vu{Jcxzb5?k+E&~tozb_RC(j5IG+ zPxzzo%I4iI9_rd6*i@LHt%J}$8MSy33Y#C-{D;Zu>%{N=@w0V9!ZZMw+7-o{2M5Z- z&)swkvePD43iM*n0M(eQ^V`5F)M3mUk=*AKpE7_=^u04m10=p007#;zy8AZzURM)R zF@dWNK4^y=rNEBS6-cnA%(-qlIEd1~-u(n`9+^;8Zq@A=MS1%q*+p$-%@G}nDRaIHE!$dgzX-jYrG+Dee1bb1 zCwI|hxZ`X}2Y8xWN4ilRLIC6l%@yh`r_8O7$UJ(uc%xrfh(-$2U^nfkJBDcDMCssU7@!n=CpSh0(d|?uL)mo!MYpx+T5nJl@+AI zHKI|Ytj?aG0DrI&?l6<$iO<_$TeqH^%b;JYz60juJNywIoo-z4YXn2GjnvCZjaB3> zHB;uAlG*KM)Q4QIMQZi(b3i_pa1eK0TFTjX;Gp;bEvW*2tC4emkd*FN{dC+7CgN=! z_gwnsE8Yvwu(yQ)E@vcQmo>#TbBD$0zWW!3f-?Aa7p!*G@nbTA5F#I9e^BraEZepy|oTrl`bZuX-fcXs&sa`E=^i_FvU z|E`~Ip>Ou)Z_6Ri3eXje8Bg z9uPokK58&AzMW3lqTn(V?%Vd`r%yUTJoQR2z}ymHr?ovj&f2H&!wxnTS+i(t?EDTR z%xYMbDWY@6dpk5wn}!szO696FVM|F4c$jyBCY3T#1AQs1foC7Y`I*R%ew5=kKoB4U zm4~OAYEq`Yr*8l1giey*v+Lc7%;@C0nvAkxGDB_bud9(ONs6YcsG6nGDL&+qBK~!G ze94WI|JccZgR;j{BssdyI7Bl*KG;U&*3tMplhl*++Wq4rjt%vJyjO9Bx^K z-~f^trSLY6J`1aFL)!%Y41b*sTN8?5{WvFs;%>tEmOO(w!V?W-+qCxy1QH2w!DG~u zn;YO2Sd%JikxPrM$x5ax9Psv5{&8*D@}1Q3Bz7FvJ}PB@NfJpka?{w3t1K9`;~rg1 zd`sBemM>r)@5P8BZuktlV2%>DR}U6pjE`g9u}qTgu7dR9zOrq_%ce|`kOG{D$MQCr z350dYX%#OCTK;>pGP45iV_HQnYTE(VV!qBXPMh**?S}5~ZzGhB$faaQld{I-tR}%e z#Vd;k=-6@N^`QjCx`>KD!d^ys=nff61fO{YH?&kRExFmoC=o?tla&7C_@-zJn)npL zJj7)uN!{B+rp`%HXpmYkeZ1sKf0zr}aT^D}DapTcd+u<3FGob*KQIlD z5l!{2&elBTBMiSHWpST&6}1yGurJ()Xu1E`QwNkSpwhWTYm;ZQ0SYbVxY~z!oxXTy zY96M&o7dx@cWy846oP-)ce_9PVwhpYLnEX;QE60ybc?0$)-Y1K=cBW7L+v|cNxRlw zDa8zgtc|s=_GCzimcMy?D*YUVZU@W4&Zmh^$9eey-cbFD&!>wayh5!4+uwu7-))an z_PQhEU9_t(YUHzhvgK+PqwK^jDiG20PAc3LS=ZTo1jLB5Snhu%wJjlUHTL0E>1Jvp zpz8GJD@)yj4#O2x1f1%y2@1{>N~U{z>B|cU6G^>Q_ZSmJ%!jIF&8wzHO`5km81q3i z*6vxM(22|rLti^iOyY+N2|F}XmaNVh!&zq7%p|w*Z}UMhaD-7#?5bAtPJ6r#=D{A^ zq`(QB;Nb_*M^Ez;bb~ZA=ySjuzY{ObciF2^Kq`t>wPHK61xUaJ5s0ik1w+Y%rw6zF z;KUA=(>eT;{b~TL*4BbK(+s7*I(7FZ@zz3JIPrpJy^PSapX$RPiPU<{^D$=>K|kkv z#cT9V(1AM|hw0uZLuQP9d!(~@`mtLJg5bM6HZNtOI%92-+7I{tl%Im`!i)u-M>7Kl zxZU$^I*)7=mimzl_}%W<4KMcir%>1(tI@z@b+U}M?4j-g<}X(${`_)%nZtOE437{} zkDB6R!-n9OKP9J2aV~@L_%FkWmH4H^$_c~KbBu~WL%5`lZk&5eRGK5|=IE)hK9Y0; zc{|@{xi{}bt^eKi2G09?6>jrVz83nr{*TVog;%0b(ZQgltG(R;ZUit0T<2Sl{PheV zG(tD;l+pW*--*@uR3SiX1QoNvN`AndOR^WFX04h9K}56;QocUpF!xe=!PD%F4k(ls zjMa--Sx=iOJK!?#22j23cwQY~HOUbvG3STdJ>1BjjIUJ^o+UdV*+R6?u3&I@Bjw+4 zD{aXK(z(|iB6TfvU_LRTj0tf?sDPqR5_tHIbhTo^S%-wt%X>_T4_C3Z)f{Bj@52}J z--cW=t%%Ks%ympP^rh(lEM+?C*%+eZ(5@Gf_)8DELt^`?zi?-WbJg=;)w562mvl)Ar*^-kM=ZCWH-I2I_2?Tm>{v!R|9Y7o&X4IW(O&`eH%c(mk<>Vu~6C*IW4*iBeQT zD+sw33(x+@+U1AP%~xZFX}E{KSL+UGzF-M>u^rKd{(%VexDxuT2-#Pm)e}s-Eq<&z z5^T!3`qV!i5bqRHFz$@Kbmj}mAq5JWbBp)-e;VkySlc2(QUq!GcVgYv7COLP6D{^L z7&P9o0%JBDsQf)co9R?`=b>zz5A3Pyd!}BrtFQ_s5Fx5sA``%UjCmnLCA0aD#(Y64 ze$bP1_8P1d@5LY?Jx$q@&k^*u_+hDW)ntZRt}#iykFjIbQv)1t#Tssb;ws&?>!Na##>LXO>U-N zxCLJA?%6&)@OuhxM~JlfWEi+L)-wX(e4@sv)^NV2#H1XWhJQX|K#=98d{~}$XY5)w z+ZM8hxjF<^tQLUv=REt2;wLNCCBe3|&)OA?NtBS4A_63?jCr?G=8+F%H#Lm?s|+Rz zK48-d@>YgOs#^ssc*J{4V_!u?lM3g*e+W07;|gFj_v=zbS;@A5+nK#$C0>hX&VRZg zaCb*Bq0W_0j&V}g*@FN)$e3`IcVt!rcr_ z{bl2&a$!Lu4CO1{fBd?dqa_=dG>OPq_hBbIFe~s?<;@#sgWi@=dgKvkiHtbT+~TF8 zDh)X{k=ij|O`8BJu%QST2FtNU1jOF^zvDN;iLcg5m?l|mECeL9E>OXCt-6N~1OBPu za-t*4#QImFHHBJme9Owu&>nB%nDt|>ZG`C!;_qd7z1}sxBN87oUv=g}@4KO{EL2z7 z!12y4vps#AR{h0WLWG%K$Au-zYW-L(M>f}|?uzr3)xBUFy7XkX{O(yZxED)T-q%K3 ze105DS5U_KK|91D;I->hOT*N%kQ%|c5x_a$Czb4`sR1&Yu2%gMfD`i4lpH9!F#j8C z|FFatA>AbTHpCgtxYCoLR#25KS@h5I{%nQi#lTruvBX*iYa)UlvmU8}5A0<;o#_9Y4LDtDR8JL!ZX@CS;PXVg!&n)1MZhM~@nD3u z;82kY0U8HV1R6J^0!xDvjj?%A;GlA*_DZVq6JtsVQG9V-c0~l+kO&DrMkk;=qyB`3%i59cdy5}l5RGZ*wsBf)ppkfV|yp!V~6StF70d^orx3>UNugy2TDf9IOh!>KR}m~N35FC zjRnY48m!H=vie93{beu+3oqS+cu0zAm7vNj?|x zmy+sjRP4W{8cC-szQwCet*lae>GCY9>ipowbiD6gs`7TM?9e!~v;f6{#FXvC zz+G1ay1d6_Dy*;2Tv<%}vY+K6esTT^D}QyMekB;z2^pN~+zRd%QZi)TW*nav8+|aj zhNSd4zKe~I*+h7V=;kwywk#Pf4LK@XHc^)9tGI0z7VKn(oYb+`Yk?T|pP+V=z+Q^` zxbwTNa58r}m%H~vl0y8nz;@z7yuBJo3iTJxZIiPZmF_ZsQzeNL%9Cq8m(7TfXtmV@T{s4M@%H?oyW9nkv-eX-<1gYzE znVCW-0f6B$KC*EHiuy)PlfXZL%T&jzpR0nQXHw6M47hqDhQZ1^*Ps=*kPW-~kdcmhjuWs9ff#%vGi;=*2Kq zU>QdiRfylt4+rdPjc>4{wFeO zo|kV$9ss=v9)|^2)DT901vtkhbBD_EIId@zLZ-GtUzu3rldK4G31>pR3I|;D$XKdS zU0pb#7S_QVgo{V1=AQsC(H`Y59du~&J%@8`sBvXDH@9vTDltq}6k02$6SaN?dd-ke1 zsUnGfuJFvcUW?-SDCOZFLfPLsl%1pYWKW6<*~wFXIK}tc&|hV?PW6@0@N~5c;quy% z(UNPpfDgV};*4;M$Uy_B950B^HWIMdPPON!X+C{gCv|ZH<=Vv}QWAxVo@lkV-%>*B zM$*lKJUOKiw%Fpvz{u7Sr1`%(W!?gVu>5xrHD*Y2^SWv7NPvQ)%>2mm5Am#Pv&Yee zMO3+d_mu$~MZ}m}MP*`!r;GgS0i^Yl>`8pHV4rkDBswNsLN7ZyJblWn9*?T4%QBGL zSs4z~T1!^09uc)cdnOG5ABT}SuY9ZU?TeJJvgu4>W0D1IGr33Bef-LROuIzCW*3~^ z4L;ZBG;Zn_pv8_HmfLE~|GcMiR>RKrH{^Y)@ewtJW9fK^Mw-#WwIaR8Y<+rztURAw zb=Fk)fL*<30$|w%G@FM!_U=3)mu@hwY81^!I&?r3RV{t?Gb0l6R)x55K#r-|bxwL> zKk|J2>N%QZhKRoRSHdX=O!PJ>0>pKVs7Bg{-RCv6p}JC<+A-yq_-y?h8P9+oE< zJyvU-F-iIW*k;7XxM89%1?MUOKy?B^59h=zsQVpHpisI#&S)jO!Y=}=-l@Y9)4RbEBfxSz zG7Cgi+d{^)`nULg$%seRG0g!eH*4ArEWC0wA+sJfv$}pUr3s{y#Q3FbRf{NC+sRs> z{{sR;P7jS?^<{O*L-Wv1MMz@CUXO6s+-tya5T9dq50L|-pT8o_nzqcAp(|O3_Ji=p z)ybrAi>sG=jkqOqoLrbHsq?B_&2=D$M0{5&<%37`l$@)UtYHTOa4fRcTFY{VZkd8c zl)INn<`v6@SG?H?phxK5{(baqUzQ_f?W;(mSnnoQ(> z5H198IVKH*Dtr($wO6ZUMUq&KZXtwdJ8x8( zyWHA1y~2L`2Vcq#AXLI7f07>=lX5RlxUjAf_@-uYfziXUtfdhVP#TGyT7YemMU{E$ z@p>n3y&q``P0Gp+t!Eh3eQrZ|coz?ls@XHycUVLg2Sj{w>oU!GSSi?SZ3+N(s9pvg z0RKM#z-@Yo-qb~{UV#DKHNAv`Kk6nv?Meuc4N5C_>Y~U&s!~I_KR6YpV}i;W&|N`l z9%J_e6rDVwj4$5&M&@ZQ{kNApu@#g}J?_^i%&wgBF+0-*5~}}YC8T`%8yJ%myKP6% z-gIZ>=aKaHNU)0JgyF^KFuUSYBvm)eTYch54Z$Ypac0!SZy)NBZ0aemEs{GDMuAg8 zNF(C-1~1_(s{0X^fL`xtQ2Srf6SEnP#a}qI1F}4VLQC@B<-8%02S^ygKy%D)D!>l7I@SBH4xR)oqV*lBLVYq~HlB z&>v^+6zaO1Lwl#I!UwY>UwfKEfx`bAGh|80<_RrVP+&yGyQ5q{IGQ+nX`jr>nzE&& z7?A}XmEs`#N=);i^q=dd1{%S@N&6?rJ_qx=6>1x#Br||QW^pe(9R(35)1eG- zFuT~)wQKFh>xY=`Gb+OQs!^N5H1OiZSKOM9AHqTW7CeB*}A zKI3iYEU#Nza|E4E2f6oTv1Y1AjmP?`ORPi@Y zm)Ob0;Zw$nEf?OZI#r&|X|51?k2?Xv993Zm$R2pCV>mNJ4#}g&M|p$-KvYJgPz|cz zEju$E2v{0$E3u?4%^GEf!lQ2R#EUDY@Yi9yp0X%>C%BDTGUJmRVd%i&U5G?$72AZJiMRb!DYgRH1qgHxP9Svl*ji zf&Bg+OPbsZjTd?+k{NPNQN3I{mu$!~LO&dme&|0+``wIIKG_0+dlJh-CkH(aF99;A zG=A!UuU?hVuUX%s^~hISU=L1ce`_cu5X&CC;=OQQbVU+yJZcX9;e547(;%ZSCCx`Q z6|er%%2+9RdSad^te4SX;&vTc?uG5Pa )F#Kmx4bBnYfzQO9xlppJL|xGcV(?- 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 M?QocS(#v|s@RT=TGXMYp literal 0 HcmV?d00001 diff --git a/MikroMaster/20260516/20260516182001-Config.rsc b/MikroMaster/20260516/20260516182001-Config.rsc new file mode 100644 index 0000000..bbce42f --- /dev/null +++ b/MikroMaster/20260516/20260516182001-Config.rsc @@ -0,0 +1,3439 @@ +# 2026-05-16 18:20:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-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-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-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" dst-port=123 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" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +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" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment=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=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 \ + out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" \ + in-interface-list=LAN out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260516/20260516182001-Diff-Config.rsc b/MikroMaster/history/20260516/20260516182001-Diff-Config.rsc new file mode 100644 index 0000000..7a0a697 --- /dev/null +++ b/MikroMaster/history/20260516/20260516182001-Diff-Config.rsc @@ -0,0 +1,44 @@ +79,80c79,80 +< add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ +< prefix-pool=vados use-reconfigure=yes +--- +> add address-pool=vadosV6 interface=Bridge-LAN name=masterIPV6 prefix-pool=\ +> vados use-reconfigure=yes +3240,3245d3239 +< add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ +< in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ +< to-ports=2904 +< add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ +< dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ +< 10.30.30.33 to-ports=80 +3249,3251d3242 +< 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 +3258,3260c3249,3260 +< out-interface=WG +< add action=masquerade chain=srcnat comment="masquerade Default" \ +< in-interface-list=LAN out-interface="ether1 - Unet" +--- +> 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.ru 3x-ui" dst-port=2904 \ +> in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ +> to-ports=2904 +> add action=dst-nat chain=dstnat comment=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 to-addresses=\ +> 10.30.30.33 to-ports=80 +3368c3368 +< default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ +--- +> default-route-tables=main:1 interface=WG pool-name=vados \ +3372,3373c3372,3373 +< add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ +< masterIPV6 +--- +> # Not acquired from pool +> add duid=0x000001000010000000 iaid=1 prefix-pool=vados server=masterIPV6 -- 2.52.0