From 8c6fb2c92e1634e8ed27245e158b3abdec5ce163 Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Tue, 30 Dec 2025 22:17:45 +0100 Subject: [PATCH] Fix Folia chat colors - use Component API properly - ChatListener: use MessageConfig.getComponent() for error messages - ChatManager: build format string then parse with MiniMessage.deserialize() - ChatFormatter.convertAllColors: made idempotent (skip if already has ) - Removed old formatGlobalMessage/formatLocalMessage methods - All chat messages now properly rendered with colors --- src.zip | Bin 0 -> 104177 bytes .../loki/lochat/listeners/ChatListener.java | 33 ++++----- .../com/loki/lochat/managers/ChatManager.java | 57 ++++++++++++--- .../com/loki/lochat/utils/ChatFormatter.java | 65 ++++++------------ 4 files changed, 88 insertions(+), 67 deletions(-) create mode 100644 src.zip diff --git a/src.zip b/src.zip new file mode 100644 index 0000000000000000000000000000000000000000..e07272d6c33506a6b0255778dcbf9023d5471ec1 GIT binary patch literal 104177 zcmbrmb9m)lvNjyswr!(h+qP}n>e#lejyrb8w$(8@cHZI~6SC|J%YD@Lw%J{%OI+z{2*Qnwj|g^M7py?(fZ58n_z#Uv2%i`M-Z8 zr2mgCBRiY_ANJ7ysXc2uD~tcYXrA+5_YLoVH)?HXWNzU6Pi?;jDgLpUf87AAik!cE ztK|RE_UDG!7}y#+{Zl6_%*uZ_A?^CFU4{UF07y0bs}rt&--&>&t(}Xlk%`dXywd&t ze*am-#WpEfeBo8L;Q4giq}pqX&5qCs{(}#}3&K?);J!GujBdA#4vQcKc$pKESH8Uv zm6onNL7P<+kzk_us5p1p&K?*80*mA+WC7nq{6caynPyl-3Q~&p(BWt2PTYJ{u~G`K zgo;2&hNE{8vMFU3y0mG@$5n4Xct;wg4Lifs0zmtF_5G})L0SK6nR9OyXeW?VowH{# zODRoeP-8Ke&jx6C#dpOZqXo0-Bn| z-C$l&OhM=3`;+IWK7`9E=njysMVP6fOq9tcDb%k#%C72A^<7Y@)|2u+fVW|aUTH0p zqw(965}?eXI0cc4CGyNf94h<)GqA@HMBU#Io8b&1{^^hoh3%@Rs1+zFv$Jn|PUy?pC z(P+rhoG_6E!46o);O!=mJ}eQ*jg>e9D+fqlgXH8Oc%k*T3IK4~V8jS&r?g$*&StbB zfZMfzYZiq~!nxs=U7u#=Gz&DNe>*deU4SIpqV=uh-8sA*#9xrPtM}B~@Wv;Vn6*=y z_V*G*s+3Z1pkY2+-Ne&qTOdFgV{^&5)RTW~Gw$OaE1qT07w3jLq9BaLV>Kin?*P!T zH>!Kz{bBbo#AS1ZonE1YaOR*k;1@s4aZ=}hwpCn7mrNAgvkD7*tLQKjhXfJk#1v&%4VrB41P3#jZzyQ!Ls zZdY-7qH`zbB2(dJ{L9Ow)4e?~A08e}qf)O&ToYkS&SCH1@>9pGm^y2ar+_}jU zYW)0nAQrA*mg+X*ax8o&!q)KajV(FPeO+cbLX}6oqnvbeoL231`c164wL=?5m&&=O zk{t3A^eL))(z?PJt>JCSUrxzOE)>I5F_Z9N{fVjly)&TUKiDT$qFV{631salJkMy) zo7mjNCnwcyQ%*Z4jc>F?nI7MO!_ADBgKM-Ju#V zL}ieMSx$ob%Pv$_qrpy(uhGVxaK@|2=k11f)UPiTbvp%bz{&|)QKuEi6!97!%UjUm zN`t-*v(yL&JM17%_NNWd3|vwhbj-p9*5`dCPWE5T_myt`8k4IQLv-yN4oN-vHmGoe zSUpF+nE}VS zC=0|O?XNmr!(2Qi3UN@H3#62&f4o?F5JHbfTSZr0!>37YXT7ee7tnU`ZB!}}bbiDq z-3>1(Vy;Nt3Z=hHTf0L^TgUIHE7!@)GX-M`%*T<5t!>m%obMMIa!$HfHfCW(pZUYSgFvhKDg8WvZF4AG+bys;p`O15@O=Qf|72{pU5`S%$% zmN}sgv~Um?>CKKW(Mt1zKdh=QS}iR}8K3@$UkM&Kn`!B#CLv)?a#b?&}@FzsNZLP&jLwk*~c;my6XO14fNm-RrxP_6{{ z?jPOCt1~Hc^L13nl1TQmMZ`8Imfuh9W-YmMT8=xHL6?QcS2rg0?)KA10}c*0b+xU!*8X

Ja*a1C9OD$R`>;?{Fnj*2% zM3T{=5EoB5ju`Oaq5d}($fu4K_Q=|~#F}fnGN5N{aaW=9QP_jCP?1gp2s@hLyP+aT z`)5zHYenZc5qg~%Thp1b)ItxmPDjo!;{|H;VqzM%&-?Cf`uV+|l->ex-_-G0zl*u-2iWq2aoirK-j^78C_!(g-7VX-iv;g#$?{uREX^eFs+??|6(w33eHIs<|){61Ww&$s*|03AtSDd^$} zcp4unAB?qzi0|L_#T~y=hT!E*bKOGN;7dYt200bRsBY?TNfGq97p2Q>u|FHLtJf$X zB{ie1)}VHeQo{r;v1W`;#m2_ODsQNx!!cZ*1@^zrcw#5r6B+7isTo1+-|L?iQLNr+ zo;MB<4VLQbZYZvRy^wT~rk^01FbRanYFnP+5%DTe;85*>Vi^I0nRxix_Ip&`4JDV* zHd5u!AMp$*(Pi4kfsoBAGxMmG;PxN3qPw%mZs-%JQwCurq)#8IQZa8CBn&0-Wa{7i zfar%%8;wi~L-+co{`~ELyR((>P+0^yyiZfcyeFf2^w?fK?GeHkIj6Uu38p!gYHT|x zKChm@C+__Uaaw}ULa&;DYa{`v?g3Cn!WHy5@R6HwKatj<2$m?6`8ucj(0cLX=w zApM63`%gH8wTXe_--yH?rOW?XM4m8YWl^{ zOckX{wj+_M)-EnKaRPB4K^{->2Tdw#Qq=~r={S6|D2XX+%-5>Z4K4%VreYb677)pb z8kTK>K4oWhXa%HI6=H#hanP19Fd&7i4b!Ng(xmF)pws9NFo(QYSIQZ=ievhHq^JmK zp_22UsVhjx6;+3FM9wEpf^KJ!>?F%OPgL1%6BiA5c-c(VPiZ0|qLK!fkdm8foM&L6 zU!@qTm&07xo#*+kaI_{&00U#vmKnOe;FZzIEI+mZ)?0p#zS+>N!@HedWYpSTpj{Ph zfwTBp(q&ful)AyxJm`CKXxXmG97Ef;U7ynLUmm172C1dT@|9m%TLWkbZZ7|Ncnr%7#@AJ}B-Mby5n20dV(toeIJaGo zW3q1}{~midbGVK+q`)p-Ss6RU+7%=4&DI_0`*J`6vMxzEJ89?orS@at6&CixeZCtW z)ucSU)^@#+CQ}h@O#*M0Tbswbxv3Rx?@2~A8gj1R@1Q(EuPcKF0stucOHeWy{gv2q z{s*w<;^b^+^RG~^uK90eZRO{hoHS)S$AB|@nfwgbeU}uTz{@|}SZ>dM0yaAU>0qzK zes{7Qf9_m4O_CNoV1Tqc8c$AP6!cZ#0csNams3JWu&uee<9Y7ei;>@}j1khfxHw^4 z{M13zjvNE&kQf({Vb#mIYWrY;I#t8ZAUKSQMn3Vz_?bM26>8NNl{DpiK1ow%Rg*iZ zrI$w>dB!ecY}C;7kdLgy!7aS7`6v_v!53i&i?0SqhcB~da`P}$lm8o{`4f9dd}I%_l^dewq%kY%fw7wGbCgsy*-W1{DtZ-Ww^?vvw8X><`5x45BQX z7l%3URJQ^#!gvVSg?(Q}S7XUXoLPA`&ImN%bl_fmZ*>p0gxhix4Mw?y!WxdGuPkWA zg<6;)^Zo0>M>?5%_A1E< z3#qHJkEHMNWyFEs>3qTA!Bd~FV7H4aaG4%3`bIk$eYqCbIcbmd9)%qr=)}pSJHHJ` z_!8xHvxGycVeSm(tSM6vul}3fH#d)*dC&t*xuqY_o*)ZbgNw~-LY~*yza!hgKEFxn zGqM#vlluR_EiTAk6FSeoAK7Boc7_Jl{|??#eKu=;H*J1*i<*=-EY}!Ny6A6lWqlNI ze$4CA%cw!DQE0Ub9IG6MSm#n$8dE0ke`A7LJJ7FlTgE;sWnf!0v)?pVG$wb*62#1e zP;hj<^*Q7^Y#?XBRSJ!($bw+~c|nb&a1H6?5JB2u;%%YgPsB{ z|{xMBJyoEie%7z{7~B%;XZ7i+b77vU?J#AR^If1p|EjXH*qOYx7JiUPln}S z7J;hx+q~m}FFv)GHU#78XpuOG93kpFhC7|IV91hYePBOQ8W$KawMf5~AMSdFxvvOq zUz`*b!7VabfxhbRh0>*g8FT1Q zm;*|c{TY2@Wd`oLY)!Cvq>pL@lnG>s%+xr{GTbV3^)0UthpC(euFPS9mY|>+2Yy#e z2t?9UtPZ}tu9N3Wf#AF-Yv%%npMlu+|KHY|}4ELgb3<*N`kK ztGxXMg^>(Z`tSu^zgSYGU#;JWm{nz zDeUiI(#x4$Zn29xPbSa#9khP!;1{lb(Tm_;D|t}Gv&#kjwJGTKAPQ{Vy=Zj0rxtY$ z7+k8E#V;4P#|X|xwN)-|{vaaki`%oYpC^M3{O?Z&`9GYD{{ZtP%xvu(|79za>(5ic z{`*uY^;%*xezr2N;S+hPdsUp=bOdF9Lx*UCvjpL;FWjp&sW}rC=Y#qA@}~Wc$QwD6 zl73>d`OVK*;(DF87L_0lHDq8;c-gUJTpRZ>2MZrcpM>Xi8;|1_`b?@=a=m!HcoF4V z?y)&;9^<7?F1qgoH;y0TSS30gPSYedjV#xtNe3I*QQerAmGpY{@{%5&lS@OD;)iLD z@rWeb5{8UIvYX+P{aY zeL-@nur-Kg(0(f9x3V0F;tGzJ*A_HqmNtopT=4h-i4eW(K-_cyE!erPu8#IPt+RNY ze=0Ik_`u8}TC~iMVM!ZLJ#87_s4NvCir%YQ0()vumf3~G=^|PNLxNwhZl9|Mz@Bb1 zjZXX(e%Bvh-eXuL&=X|GQ#_WvdI+(*5Af#%q^495p4dUlbu+lhKjuj(w2a_R990JD&Au^dN^e z{Mht@22ZspQKZ)9f*LcOh$q^72g(9KPvtdxc&iU?lO|VO?b?wzz?Y2JD1bjJUdVD$N*dFrnsn5 z^-WkL+aoLPu8>ojT@O8?0?-kwOakK;D`=q6RnW3!=MvJ%-@^Zm|6pl?@p_+8p7oa~ z|401)59qeEozcGs|I~j5`tLN5t@L;BZz449nrnh02p-gooum`3^CM=rES{7YH!PWP znGQUtvwu@x3);xY1MDE$6Jj8I!mHuZ3ihNoGC3EU6l_?IUkD9jJ z`qksnqqu5Qy?dOK?T~RO{1A51XnovG-*N;oRJ#mYv#|$r?ief@w%AKrR>MPq`80RM zR`PTrcwC5RIQv=CF8d4S5|Gnav1^o-OgTY3Pn?n8fi@^XfDgX~NxYNnivXobgWkc}IA-~^^)~yV<8$Ztiu6ir(;e_} z?pMtlpX>d8D3JjB;#1W#WXZqwHT#FDJ#IgLCS|@nj4i9f9U%x7Y=Azr&CCl=ef3l((?Zd-Vzk$p?}z z%T4iLWC$<^f>tQEm|(xqwU&I5;tuM&J3liPJqW6Ku#FWm6pqO8`W<*%xRD2!pLJg7 zUnn)|KlFsC)ogN(u={y!V~)ouqdzd)CVu9o4nHUc^1Rx}fg zr?UO>srhP%<9BJ_g#7(NyP`~Nm2LvLO)iwgbogBu!m)9}IA-vd@t3YvgkYOgm%KeB zNXVa|JyK3Wd4A4z;W56$p8t-cVtMBgWj;V_Sq)gWRV|;_Lza-Xs-yn+#Y& zR95|2*&zd)j@0xolg;ao*5V=hI+}IUKi7)~z%R^H*%WQ_5qRQ$6@ngEhzl)a6_zK@ zd@q$`=!VBYK4~89Z};LC)*mK;D1-de-C~|y{ zF&SxWoC+lf7lE)m`O4&>T(XI+ZOh1~(jwH=eNw++MVmGQK{=!koK!F)6Ei+%hh27s z?(W4Bz{+Y{8{N|AIHP^l0+w3DgwrxJgWG9LHkGwGn^oziEom`Qr+jQR`Rb8>Eg4D-TZcoHcpf|K= zJ<+XWr#H>qt*rB^5v)_cqX+YIPApHWvux3+LiGBv)ES9eA0WcJ4>W-B5kbIYUh2FE z*^1Vm;&L88l+EIbj%pgrsJkZM%a=*MwrDEi;)IF@HUqjXjopaOdP^r&F%?zL9B_oz za6HXEiqXgC%pHM~9FX^^68qO+9H?3GCBgyU6BPRLVT6i44O{)z_=aN!DRwMt;;u_610kv(6B!3;Ssa!tm; zL1LJ-Y}N3_%3S^o%aMIMydtYr;$q5RGt$-TJRC3DP|{*Dy9ZRY%u@?Zy|*B=8>+mR zG}fe@_h4wQyL2Be221widtLHGSs_7=g)EpA2`^VPuLGuOX=A$gKIn-#*nA~p4nOcT z-zjvJeE-V`6h_fVzU`$`XqXH1Rbsy)PvW(sHlGT!H+R!$d!v}3TKY+sBpfHjGdoS7 z6HNqPJ-0NSffgeVd8*j+JlGp_4%Vf^8Ifo4mj3x`P=#4sle_YF@h{05cXZDRxod-Y zsH+Z5MpLc5Hpb}M3`+~(kO!yk`C}WrcBhJJ&)}zv!U%=bh9%Fw-KC5pQ&Rn?roD?!smi`dp0qEx^w3GclhMY)_zE>q@g+0Uoc zBC+m?qvdj1&@1tN=auemA17*?l_PtK`TqC>{~P~K$AyzUKCv$Z;qU2XOyyq-FSdWb z@RD&d`&a!0>wU#PDz4wDw^LP4Ze0|mTWr+LeI-#10on5mNHVA_7{pj519_L>6gQJ{ z4|5nVF%PPorJ|xD+4C%4vGRU?FBHT=#NQkAlKmtT6Z=DhzG$rk&E0j=>*i$sgUE`rfPAMpW(+Xh1A}0_K-)c zAS$4ElR)6=ObZMo1L~cdI6?R4I^@-Vd?`&cpyNH;U%WL}h z{>0O;VpiQhLP>LH9l*^fe{cb|Of$95td|YZ-R#U+C*`&uRsbvuF57~OPrf^J@IV>l z1VD8=k&+cHG^4#K!kHL}e4es;ytt~~oHT)L5OK%)aXhdIg$%IDSPf!&5UWaB7BTnq z>~25oY#m{0>C46ij`@Lu(h;IcT3j>j(F^Tx>-Puq?g~v}c^q}n0LU8!0Q)ZrN17t= z#g|TGN8Y?C_up?lB;9w%CFefI&w?HOc#Tq12wpaldNf>PPDR+5R00&bhR(|_R4qnK z35=yHJ!~n|he9qNKcwppDK`ej^=Q1S75IpV#+TW%@RRtQyUdKD0e`-dN~iKu+Py3# zCOK@B2wExD4<;4UpAg9|km0X&_Xh)o7L4&|tL7GRHCj+%r)#%U@glR6eTm@EdajST-)4l_PCXJ*-(F74kRzt_q>A8x>i^E zwY;!De8z-*D%`;mNZd)gu$4~Q^|S!*AXtw3+*b~4pt7DI@HSmBJIv^|CTj((iNW@u zg~4e{TBs#PL!Z&E^Bm}zggdj-ZC@$>i?6LDaVPc6`kJb}HNE|Eg2tEii5J_TV~W*5 zwbUZB>}R6Gy}HUThr}X$Cn%&F-6k&dFkQ*q=azLdf95_tJhA!o6Y}IEi?b->VsKlD zDQ}_^Jo6geV3UV^x6%ai z&5p`Au`gtQ(qfLw9$ZsI9GC^uXHV+-dEtMlldpFS3r@=wKk4ab?WcaD^2o)KC2g+O zVBsN+kM{Ee{tbAID%p!RpMWO~_xFHD`45DT{XYOa7w3OjO~d`E3n2bfCN-&V*dmLe zbcyZa!fBOPX_*;?rKmcH2PBEd3kE`!p?{71qwxF-gvv=!dLHp7Y6xx1N|`DKBHDO|CoyHzs} z+|OB^&2SeEuX3n+s?-fmNt4g1bo6%q)S<;xF`DO8`))%g)h^o7`B%ttZZeaybTq>E zO{hE7vzOsOqL?Nh-P=Ce<}sM2%@7JhuS`MIvPzf=4dNS93S0*?0@ki6F7dp(HwN36 z0$|)+O3+lJ38fQ$1WG{7+Ppq*+=!xH9wgvL7~=Xdmav?-ad2!NhTFZaxN68DIyLnl zw18G5aI<3Y!PnM&S!1L#)4pU^ulIDZL^B7ZPv;D`oQVjd*2y>JT6ri~dD2Q@Ck#cu z6foKh|zCpVKm(*NQAV}u#=?w47`IB%o&7yeDV$N&- zlr*^iUW{`SN~5^m9wDpm{(_RI?`@7-Oi5k#3(sDTn64 zo9e^kkE;Gml41Kp=V#=F3-g)=iL5@UM?5z+pZF%pN6qfA(yK=rPPCs+2=<89t2?7_ z)YqkvqY`GDHO6E|-jB02us70flik#O%=vuIo=>7ji1dSGsQZTSwz!vxMa3u*6bCr% zsAHyeB}32x(f&1EAcL78?K@QxCDF|Y6-}=jWnVig6bz01iM|xDYU|FX>m@i@JYa@O zSh1(W7tu{7j*;9E^H=>>^H=7CD=Z5hkp5p39ufGp0Ofem_+-STDlAi~Lems6R`a7N z?$@Qb4o>}%`wH?VPLlxxw@)ODCN4c7I`Br)Z}1TxgCgSZO!GJd@M3Xd1~I>cZl&2{ zq*+U$L@IQI%)Xb4RW=_kJJn6U%C9jxFD+p|=3TDOCynxx+}s{UY_l$? zzdNNA_Z3sxG*s-w`bcaov9X6=YGexS7nzl)L zv^ZOaApGG%X*=u%KqDuj# z;cPe~1}jY;1_kTr;eV5xUlku@F~>~DSTlJg(iL<3gQ@ot#$t&u5JpNz+Tk!qrq1Uz zd(OlnPl0J9>Y!xddVxy%K;sy)iPncOeB9E$8PbkHWgDR|^>QbQM`s9G1GjO2SV&@rjpo;$KEY0)sXt;*QuZ zX_U=4@}PV3xcOYb_7a1XKv94{5VGK8`}-_QM$qk>>%%X}Qd(t%;7aH(9+WkPc(hlEy_2ghFj(S=HYy7 z8wM|P*OseV3R^|u)?(DT(Jr2uK8onA%b%RGk(&r&F^>+FE)mK9*hPVFB-6c{ji5G6 zQ4gWcqTEPT$1gr^7-)iw7T-!`i7*t8YBJNnpu^oqFd&FNgRDe4MxdInFm}d zgO>v-ZUJL?*`0GM=H^a3Wo;u`WaG1fKBwf=vI)OU&QVM!bo*0w8d(AR`ZXBv`tS)u zP}(tX)uznL3=7vD=FR(12Xy;X zRw5SdJ1<|+K2pk$;(MNbHa@mCr4f=R+_cxN;n51Mu^WpIzTX)s(1`>F77PGj8tLyd zQtUraaE^aJBPp8LTmMTbgWaDboat{Q+-{8xr5pXo&HYYd2&cGx(rJcv%pX9)lI5=a zC?Lfm1X9EjDR}_{i00IQf=z!I7tFdxmg|cJFo?yjFX%J&d3+M>NXi_W5E(|vtEq3m?rK+6s#=F7=GEVcy5}Nn$JxjHn6+*;HkBxE}M172~Ds~BC|so{Y2pg zDjzln5i4Uri1gTN4#exw7xT4%!8p*~K0P4Kj1c*}Es87OdaY8NEt=;Ce$$lV)=a)q z8dKF?`rxo!jCn#GU^UKk>gT+UKVpS4)(IjnkgmwpqL&E!+Bk{Bi^_lqMD{s}K0db_ zAR*Xd(1#7=GT=}aVEii)QJy0Noef5;Mg}VC4F~8J4Ht_{J!?nkyO!K-`*H2Fq8xws z;L;Yq-Vys8etZmz&wbvEwc0s}vPn2VvT@@;Ixzdg^v+3`vW+;S@eUlKyXh{gPl{`y zjKFgiT!#rC-)vXF;GuG`CH@y&_g3TK9r^H<**ah8ge1?9%(kQ(v<>0e6b_;+SWmd> zyMcLhZ%!ToW3p%GXU*JGtAW#3g~F8%P}ve8hF|3;Ce{q}B2M<~RNH;$Y@>O4>IvoN z-1P8p8a%ySV@D|h-*iOE7}fy;NL|PwJfb`NS$b~uHs969!-r`JH+y5OGa*Hq1(ah9ZbnzKXin0wD#u{3t(R4I%F$2yHDIk2v; zDp{ukS4Ug9tkdr7?78HxXV5v<(mchk;7O2mfw5@WUsogf-#OnTy4lMJ(>T7>LD%Zn zQ#vHb$o0g0W0Y-%77}SXJ*Iz_)WbNdt=e9;hQ7fEF*V=%jtJ-3B-Q;;A;5*q?!OqF zMOhegTrtN6H_xE`-3o)#8?;bEgr+tTKI}FL?2}pd`axKk?)pJZp!8opTYs9HtgU^x zm-J$N(}-oCXgi@Jd(mlrc2yiPk2l7v1TBBNY|V~U6BEsavE!HmG7HI#Hawwi zlBe_nTo{D+a$f1s~dv9N$gwN+UfF3 z0EPC@1Z4@sl37w(bk8f=spk-Y-uwkW@^hzu$}48r$-kEoSL0~8YAen`?P*MmPkPz8 zs)EXyatnz&PZs4sK1-FXGkQ+7N!s}N+4;%shp^caA4cOP9NR^w%8HMjWEt5wUf^Vy zd}G6m99xm*xUXQ04b{Z5J~~%&)b$%Ea(;FwYg$)QK1Ne4%d$^B%id2t#k`yu423qq zRFmYo2rju(Z+Do@#GE8d^V(9;-1uV9R4#murDh6SoPLj`dcQWM{6IBt;^(wH z5G+m9$DRwiV`z-l3(xvOtPGYgOu@c>h~6V(%5^&k(ib#M4B)cmkerv}&qp+?lv&nL z?E4C)nu*+)63PQpQM;gXck}M#qO~F5A~Z%X|5nzu~57?#ap7V)j)xV4M;7hJz; z1shV@tt3Ex0TJOZrSJkg1aNZ3@bIP0Rb9>CII6p8;4n#_KuMo~_xysCdrUUFd4~=I zzXTL4RQ%nENwcZ(hv;GKIn`KKj7DYQ;1h>e3zu@zN4|n@HdqbJ4b0pT$<4%Rv`sNe zMg=_e+8DbG*pgzO+ApWNS=?D^PafNmys zedbkRdz$5Zf(k6sVagAP(2(Cj$aIB(KmGv?5h&ip71zv^O*btq@OVw!w&^R|dehEB`-(@(d?@$b3(gVCmYC@@m*cPS& z11zY2TO7i&nAFyodcAQXs<#j$1r8>>oQ>wzIS#G?(^6-IcoWjh`a`Wy6w zbpfe*c3t2>=$ye79Whbb*)rXDbx)xeq>ECHeDB&z&_b^vQyHwfZ0&6A+tTsn?XV?- z3Q)TCuWf{j>8}QmZNYFSVIidNQGp`R4PURKhX)U64Z6B8f{e^sO+iT(dpqs-jCv&3 zlnaQXd0QPm)->oQyXc=HgKgllWYQHq;<5c?m|(JYLA2Hbz0ARH z5VAa0r+#t5PlWp$B)8;-CVUocd_}plm&Yz2G9R=ltLU$8>AHt;62VW`}t8 ztc~W^pG+y(mXaMNSjX5d#dU%8yuga@Q$5wOdF*WCz7FMs)6<$b$_3&%1Sp2gx{QRV z*fZB#N_850W*2x)qAx6RA2wr~$~3~1;f-ZhYrQ8DkMr@Y3n~*=ooJ6}J;N7_yTAXT zq9_FhnwS5)5|Z-YS3-W@6}n=}h1;$NZ@urY1e4+Yci+=KV<&Do0WA>p20{KGt~$Xe-J zS!61xjbS+VE8NtR`;XX*{GW6u`qjtIuwyH%J8DkgZK8AaYo=yD&(a&r#%-qvFVthd zD+TZ|kGf8=(puK>vW7XwpBgfqoW;e|pMMH4fk|QsmYl5%Z8Vq5dTS$IHShP78p9s9 zMK_A*?2bLwQdZ_O&s{$4m!6802N5Ec{` z=({s*0Q7{!weDK$>FH(kGvsKommZ_B`@v4Bfwk$(a?T`SFs|u>fsbbTCJb8Pi%20%fppE${b-Y@>ebpjAK?ZwObcUfK6Fux_tqaE zw@BY?h8r?lq4x`m%NYyCD8p}Ak7AsZ++>#e;&4*kIq>Y7C|hRT7%UBdhKkv@$`;V* z<>Y`hy6*fQKCZfN{I2nzx*z!-VwF z>h_KqTzq~kvR?tY`@%1J>s7TIEe4@47j6S8SNiTcj!R;0MSAG~ubHp)RYw&Kdc}&7 zI+%`3)5u3Pan=uiH!C$Z7bIjJgmrf79)48UEUQ(iv8k@HQEeF*7WMIPp-h(Uk9QrP zi~;@F0A#mnIzE1|d!T8I9TDhaq-b7!UgnS558p%i0hm>~y`9VqTtB(80|RUOrAQ?I z<;a{(4q~+wtl%t4l@9bFV0mh}Bai$3&F{7J^#)nB5#!-$j!_FXh@9YwC+`8#Ju8}C zm66%XF!Kuu>rp;zFM>vWTKdk@%^^7~V<5>a-e~*4(D%b~?tBUKjoHjHu{%66nVqMD z^Z@ zhTp28T6lUSKSh-aNAmC^wF9DS~Yh~JDm-1lQq zn#xmIOBI#)wqLz_mu&_rkHL};ZcU3Vt-%ZAPH z=nusN{3L89KGD(>4h*FLp(3cF?+5FR%yq%7N&Xr6+1`DLkQ#0o$KLz6Wch`IFizhX zv#5qO!+^GD)^AW4g0UHKd8lGe_8qd6%sQ@wiM)BxciNasC*5|Uq#uA-Qs)%X+<`Q9 zH;PF%SyfTIt(?gTGq1<-b2DH-G~ESh#*POb=2`M!T{UwNs3fq;MoU8Y4{!$bPbQ&9s{3hF=SrZ67D5oa92u5eP1XKtr*v%tsy2o!Nki&sw%}G>MDPd^ zvTA4n)5sffU4dmwV3W#G+FQsC%I{12^2ZSjpAv?A*(ua8>wwzL9ph=2nrre5^J`Fn zBC2aFX;djs-R~;A6GBxSZHhu&O)1n*cSWZ+*yUkbx>!YA_9h+}cPqv%`yr>oHS}=v zDvsj;m9OnVbK$3cPqswhl*KcHIp6#vF494}e#%!5y91#2*K%H?mU`A8 zb`H0Ccs=M{V~?o@=I*D7+-#SjJ+whiINq{CRn zMs)M5;%o0q;f#-`WlLUTkno}9H6qNmF6f4Ml)#rpD9yt){2WlMhw!2^aho$2q)ocO zY|TjwV)pcX#u669vkw%F0$5=|PK01jzu1&mEtWK4Ru^WBKHzSTOG59~Su5&B^=Jgv z_%1X#w>(+`UichWmhEn-r;B@6*e2M)sX>)rVowFH`R+Pdsb=!NVu6*rsn^519ghvI z6qEU_MV(UWaQjw!8>*nGYh7Q*@U!1q*@C06BjfD?^FDH!$#E%s$yYM-c9$aEqD$25 z?!SK1d4Og7P|iX1OP&gUszrIJoNT3!*b+ajXrjX^G)chlNnd&=CVFfOrcBX-ivWu$XoBv zV~@OHb47#dZuc)c(->F?(#HnP^A~`;DX$1~L-&?iDz-})Jhz1$xKXgXk47;ewcSwt~!d&XaU+?u6{ohhp<5u9=O82)nVCl5Trxw^gQt6dei z`S#k#1PA97*>7RPqr91=cr3j+PU7dJJ`Pa{? zFmp68wlJ~%=MTg<3jW&zF@8T7<8S?j-%bGj!3o2^EKL5}iP8V<$ryEidh_^P|EIfQ zRQp%FllXt|Cidq)DPU}4Vf(KHKv;hw;O~!fuC->nK7`qYp68Y}&EM0cHs1?4d!oGd zEeRuzwl`r7T8Kily`i$cbw5;SR23Sq9=Qk<>lWa)z^&8D7MENUrrpt>8}I@3ndI%T zr$4S=r-pE!P;o1<4DwHBhYrU`go}}^!!z8a1@TP5 zJBa(3Z{75J#h)%>LG4|2E$1B{i9JF{9oc~a@@^KSpH%swuoa zJia`3|EhdM8LZuFnfAuZ6O8a+ zUUL}$;0&81fc@2Bv|&!^&3vnvcHWWEh+>7BeU0a&oRmK)Xe~%L6pDIT*yCyjzik|X z_st(~CoT`}t}fD9NwjmI;D#6zys?w5&);)HrP0UF$IR#9!AdJr>%narDxr=u z?UzDxQG$0BH8!@>ReeUm(=XB0b@2=*r#7+=!VLV4jLesXK=b$K!nU@xC0dEr`lJdH z113OYY*cG|4y4{b;8C0vcq(&^#`9+efTHJ7Hmr|q6uLHWIY+> zj;N$;7MC)~T<07RyxwLq+lJ*gd-$EaF_wdf8ss~5_J!HwgxkRE-VwgWpfmWQO1|kJ!@7L-&bH79Nq=l`DSjvl3c|)EUD*5|6qmfe1@;$7o!piI5nAj zNVV8_dC90OYP(}AK9cKQyIx>yP`YU6o1U?)shr#b9A88;~Y4Jd+XN<5~;6Ely zl7+2$X^cS!?i|(xnJWiRf!Nx}9OHD7Hesr8xcduKp%?3e&%!03PF!B8Fe5nV3qum< zJX#IhuIQV>txrqsG=Fu2$?f6yB6eYV<9+~a(FY5GJT#|y2-5*;hRR;NZ4T9{Nfp5B zH9>(s9Rggrjo|9X^^v65`__&CR)HcC8;rTV_*bN%q zKaz+rWOaSBT_Od|&}Jh(;4YUfMXQE$U12apl9FL4Khz*m8eo|TmB%L4;%7NczP-4a z%;4e_BWv++az3H6$aJ>f5B0u}n=S&)yXNJh{AnY`Yh!jR?Gb7!U|LB?jUd4O#>x?2 zLsJy)D zX5>Ht8kw|0EpSQeEVKxlBTq7Kw`Zro#^K9}R*Q(o?wiAe@6G5=HG8MD<5Uzg((2%` z=pZYEd1^FlSerHee^`6R;LiJH?KieFv2EM7ZBA_4wr$%JYhq7qCllMo$*gDHwVr*~ zUbXi+=TxQY_aZO)`{G|+pYFc;YO7s>3HhG@s}>IVgy(+I5We82tSNmpj&BRh;J`=s(I^L- zX6#pG&>PG!K|;tUiBQMZz_7zSVr!_(9LfXJ6h>ta*iFG1`yS%fNj-be*-(-vjZ*8p zLZhzPnPw0@ES`q_8)jCuAS$d+T0Vtq$$d|WUA1r7q(Ya`O!^(JjP&{sT4##lmpRJ;5*Y0j)$Rj_5=7!MQx>FAGNzeG1yBoba*)M=Yt|I8$S?3O z??p(8>0>8@KJzC>&SWdrXs*eILq~W|vYPvI!pTs4quPBV(cfM^V3tSiCt>gDUCYLH z0AvwYPL{!T6A`VDUi#we=5ZvQDZzXvdyA(r{KWfYxm0LE*Q|EP$BfpUYs!;lNA!VA07=0xO7@Dv!|29r!CA zi%3spT+W)J3{yZ81yyJ$`^AjrD^MjvhLVtmKjV*09ft8;quk+EjL4jcZat?P@}SXV zfp>@c3>j6S>$tlsaFm&j%7}k6p1{}xB86xnI&-iyGKu?)9u-Ej`@Zdv%U?x7!)9j& z_EH2I)=i4QM*W6S*eNPY$$*?aCKlAwrTf-5b#OysUhLR=JdV>^PP?EXlb&%6vHhak z5^_pcmo@>AN3CF?#*>E*I8oRT)rd{OSkG3tNbvK#pZES<=weTiLRyeb3fD9D5(P0; zTuVk;+vTK)j!4;FNX9GZ#kJeXUcp{+YpK6LvD-w4ik9TjY+s^IG^@f9`i#4Uu(i86 zDI^zs4(ZddMsy3I47Q8UdAANjI*NV3ZDU{oiyN(}yk z^J#7y@4CEBd7xTnq4XK_;#ZZXd6SFjDcVkNL#BV^bEbPLuN9+LS`J1=7J8@{4Vk_I zHD_wPTP=lQ1P&oB(Y-OG_!J+Z&_MZ}aVqZy{weXx9aB-kbo=>HR$On5r+n}KNROyWjevRgxc8LQ?{pO85ZuP&@{)q>0(B&_y>zkUob3V z`>>)W=wLUGvN%?YwWw&{20EIUmLSB~*>1Ja*%BVT?#KYV=pH}DJ3JWr?tMZ;_H`S8vQop=aQ0AHF-nhJLn$vw7I?@;DGux0%k`0XZ z15CO#r{{6ktxu-5`Zi&J13X>&rRR?2*@Ac`1`3;>#TcUKY?&)YddO=$igz%kslmI? za1sdUV)w}GDnQT30IpLmgWsY#KU5>1A-^?QI~dH57m)uDqsid!41I0Rs%wS#Hc;pw z6moi6<*%uE|C~`t3xTDY<11@n6SRQhlwArq>X0}^7#8T-j!O&?;MtsDOpOw=+Trxu z`e}!M4>ViA*#N^FM(8aT6Z-Sx9~yHp;GKyrNB{sg?!Q3#PiLI=|3~WlUzsztasQvX z`w#q{Yi`(JwV`yw$GPe^_89I-B3omgxmXWJ`?|uaHzTZ^iy(l^hb6S)!kUI+4_heY zZFu{2T|(cnnz{Ptt!+f|`oD?tyrpAI=5jkE5FVw_Q%CG^aP#58!%GA&cMK>6aI?C4 zyGZQhvi0|6i@Hfm;A_-p>JZt}}1uEi&>qSWtalwy&tNp4_P3^HPd?8k&;2)KE8%&MuysVApl~--ysXyofK9X3rFcfgiHf%N1dD`8we?2N90qw z{PqUgH$2lq|#ITQBZlT z)f~-IB#aFzE?f`WIG<6jpRt~8z>7bVxPLa#HS`I}t=OG*$dS?KyC z)KRLVB(dW!W)Mlokwsp(9!EqsILwA#QSKEt#Od1a4%{xQ%@KpzXuqDBhq?QML{!uP zDPKX~uo9K^v*oA|K>^fIHnCNW5$Dg=+4tzn}zZE~e~v45&zS_gRhpjEQK;(s68^2b>SdHQlz^R))G7c1%QPzXY!?AmaT z?I~A~EETW?MM?*#j*Y+fO8cqDzey}tn5pKrv6Aa?=?-7i|wBE&u{i z1HX&$l zv2r4Pj*oorJ+XD%hELDpExJfrE+s_X~UxUMkCjI z6piH?>>x~cTJu7gCMKzKe13#xL<&Cm96-n{g^Ahe$nZxPu705Es%!S}uQ%vP849p% ziRNQVv1XV`-?JS`3ken_ep{@}851rkPoWXmFQ7;aFB3Z6;eX9~Xmo0w>-S{ns5i*r z;1-J4I1W-}LmvF`63Y!rV+o)Np9{61wNOwq4`4lNHx zsXBOSPd+-*HQ)=mTPWB6fP*VuE1zao7cy(hjq@9vOQ&IlJsE6X_T?vdOvSXYMw3<# z!giDanD%4W&{S?nLws4(+#qPhCT!mRS!#ID$g8NJI@gbON2Ni>uDP=8lVnHniSuy$ zB;{~UK4hF+c`X)5B~jYDB>C{3(hf=9SGj37+M#ae7soJ2gZe7@*{bn;ULak-LtkChk-c(1N7`he+5woS3 z%ek;13fbbyuXnrRd z)84ytrYj_`HDD8vCb0M_QFKFj%g5Wy5QYkRJEEzB-{jJTKML{*Ase?6Bdw?<(_zkE zx)VJOYc-TvG0+fu9j`uvUV!|1NJQOq-ME64HJjHQ07ecQE0;`EnTGt|{3AEaR(p7< zsz1d^6(E^Xy>NuQ=%+fGo|RmzT~VKy>B-gdsT6!-gpe^<*?tu(bzqvwoEz1E-2yMx zWv+TzZH?#ZLOw&IlPT!oSUC(2RLosjo9cWo!nRTD?*ztL269nYA!JcvZc0StdnO4- z$=|;Ghxm6mxX&gS0sz36?EhvX{=c!2^rCJZlVF-(JOj5pv+aL^53sDeo6Yp-Y)N!M3tFt9^%h|MSj{3xtv z4@E<(zEx8HB`vx4JWrCMOXg#-NY-e>)3s{zfy5S?ND5u^^W}PN;#6*8?LPJA(@SM( zdP~>cnn0K8RyF>ro%9pHg>V zF2ZbjUNfB^D{^YK%S3(by8!pJdVU6++5L0Bajig=Sg|x&4i+%WhC+m%5fNmAG-s(R z6jUO}D!;)yhvzIe8cMfS4;u`_=B|1+qEVLtx=CV(hfsaaPxJL2=Idwe_!v80UYRDuA7n}6iPRW zXnirudt+wAXo??n-jR4>CPX0S-(|h&S6hMrC(5a(#34KlFMbqL#-V~U5Gn%3d_F16 zF^G?KY2_gty|!AgZi_&v1iG*{mHDM7rKQm?6of!c2r-u@QI!r+vU1LFpo1h$aTsS= zrRhL^!mOnw#=S*ckujX%({NA%B;yk%kIRx;;&^w-BNP3Sdu_ghK1CK2CXg5N^32{C znX}Xpn|jOyOP)`skLd5`GO#M>PjNA+(FnB#TciU%X%X{f6MJc7nr0UFAQbEKB!{b*zb04 z(PMy8L9C#e9Hnk#?t&dqvIE(#E~hg&1+bc16}Hi}T05gaokZ`GuGMYH&&Q|=cNN1$ z^ZMQ1(D~)fP_p&R*`RQV+Tk?qH00*^3;?xF8r_FR>q1&%6%AIey-<8im&TSn=qHBO zHXV;6o<}MDn~TO^O4o2nhohY7N(v68l=K$pu)LS>yhUGAEC7SX{HO_Tp zMk>yRQrEiEAlkj*8f@{%hLLgiGVw{^MjGe2jLx1KD{^ETk%oA)!8HwLsPZ;>N?B48 zqfW<}MG?|9udcM`fyFih14EU32Xm+BUG?;&p3&eMoFHAP4SQXE-g;F2)ApS(%BevI zechZnebz7s6NL~aN1k2gxC!BrV1U{D#QNZj$a1cm55~cW zX89e_&5NwYHL|Wuo71OjsT^M@@<>x^H0F~mWPG!)LSXOh= zqe-XzN>XRVMN~n_tME{C(mWb$XMtR(70gNr^D{qKRO01=EBHoTuXJqGr0>Js#vM8; z7{)7?SS&iESt$jAV)pxfr70*3`4e6UmXnM@0U^^XdVYtgeE8k+W$PevSqiz>CGsn;W6BQ0qHi74EiKQ^94b=HnjtoDDUSCfHJJmV!umjg~Paz zouB#(L;%u=c7)jVbf`_aB1t$LRCw2kE79bzFlNAmJ7VP}k}+wrw1TPPqS!;d4mgSv zs1x-yW{7^>$uB5fufDp!A!Azz9jCuZ_IA$8Dd3%ucAkxH#R&PwxbLrBuj5=!rJ~Rs z;~7}d0tMu+QKq7D;;Q*Av^hb58)8Fza0ElO+#NJ`TVdn@0h?+L82X7LJv+*exnDj0 z!+?hyu?XPmO9_FE{}+e+8AEpd&Geu4KjDyntCVE^VvIi*70AB6|C&NJ|IMFY;6IM_ z*9`K1&|i%H)207U_+&L5+jZe@-myua^c!ThVK@l8LLihg)`1bM#FDe2Pz21)rr88P zm@X#RM=K&gXz+<~U&01}f999LR^*M^)_o$n4sBUpidCB#drtB^PIQ?LC8C3yvJ;Xc zD8+^|LGkrcEb0>5i$gBy;y(q6c4T5@VmV<#m&eD&ACj4xHeyQ?FDl#F3SwM8Y@5z| zb#<6*f9E!?1pb~PoaD*3?Re%5%NP34Mll7aU=V!fvdPQsW`_~i`b!V?hJ9vO6Ny`g z(@oe;d=EPa7)+83WoEN}h}{GF*w#Ci}3*#$`cVZX+6$JdTC3-7Z&yPDWzuH-?r0(F%rIp*epJ&1O%PZ?)$hk8BpfFUy z-IN(=sVF=wD+t>4MThFh%=y?%%BhHh#w?j-vSJGR;qK}Tib>t*Qz%VM?Ab*^MDQr7 zyu}q}EH4GsW7^W&b=w%IwY3L_F0^LLK&;P}>HJfp!6=vCHY38iV_7zlVKUBOT4wUJ zVQg>@f0bC#TOH*i@2!_}@HjwrsZ7=-&qa(gk$cI;gdv5)gw2h2N0X*e%t|}3(BT!i zE=H+MwYvSDZ_lv0-jyAMKI&?AdUBLG@p&>5XX7uQpw|WNEL5k{2f()L9`? z>exrlq|^Fk56&4+zgVte8bf+{q(eDm2C^7=7n;0Wf-#Ld4> zhMYxj=0#Fh>Z|5>+V`T2RM>t#Q%q_*fXUQE)RgrLt^S*N-Frx@AmCyzg##uRF<~S& zj5ls1Ipb-6M^AzhE=S;9?HSv0;fL&}j9$T6=^g9qpp7=0$yx)KMl2Dp5bzx?VTgS$ zIp`LlX{+dp7Xf-Nw!*#N_gq9R?y^Ezqc%Q_F;9*Oj5usiXsK}!Qr#O=rzA_GZ`cU4BLwj&Hjr9Yb~e&RlaNVxT|d(j zrH_h@b;r!)Ye<@%bh_JNIrag`$ebkM41n1OEdbpYk_i2`2Nn?aheVbmXjdeo{D{Ay zd4>CEftQKGfy~CLeKUfc6m$r@>(6PJcNq&G4ibBD3NDATFsbj_49JE=)vR`v8=+Wy zZ{%o3;;xt1$MJe)_I19;!K6MmeeUAjcCSIHu2OB@9u!7psizxchn(!$Rl1*SLl+(* zbvUo8E43Iyj#qwGD}t^7Xqo8b948VPBJS%wBfm*)Dj!QA2dZX6tciMS*Xwe(Ai}mJ zFqq;_AB0BLItES#)`1oO9yqLb5!>-@i@;}~jOeJrr3y- zK6iP@F}$%l{fPd?)u&(fE}#{+Zl?_PI6mE5P`m%8t3nbOE5>k{Rhis@Zm=6L!abSg zau!`WxZH`ml5Nvc*kY@h(@+X+y3CX0mNxb9i*5PZ(s-n6ZNmD)em2cvVW80&hU+#I zdDFYXFvJu>mSTHfoW{W##`>$Tip8zdV^tx6R7f1NS^DO_{>x0~ zw{G}7oDxK%xgqm=$*8Wlq%c7N%`OBAMj6uMw3QWO7uMz^zh<;ul`Z~j*a~a)3(vqfbGZE2n~V5zIP3awu~0EK+JU&yeF)Q67G z*pA+E6;Wno=zr4_{Y9H#-uXr9Gv2{exDXI|QN}zg104pH zgHb9=Bn37_6W*B-?bR$K=2yW9Vr9kb*?R`6SPV*BNT5;-iheQUC9AhLM5Oe}C1A{hvJdFAdwD`QGT?A_@P8k^Z7N;jgg&(;AG_*9-o5 z`2KmxFO5^1dC_klcodiPPvAEtLrI&-2-6Mr`r{!%8?eE8BiEBQ(w)uMBt|MC1tQAH zFM()fFEIK1;dxgun`|fP7+XV3n;QVt7Qsf`ypJ4*nM{GUn&1ZzMB`YeF|PXkbe3CD zcMAG&R%fCwJy8=)`^Ebto@br{%5rAz7t^@MOLLE?-a6yYo%%(WgW%vUq8Q*NMxHgi zjW|`deYL9Y9tuOA2g~VGM_ktZ_IzP6gD#!K<~ zLu0xX(<6!2X1H9?M-N)0^;o+));8mQ1&*s?gAn&rd%5+)Jf>&u7e`W2jZ2wn)sG`>;0v3No6-3B4ul=02v6&Z~@{_f_To`qC#Jax6>eM9IToAA@%%Hf6Boy%Kv zPg`5}<~Pr9bKHKKL0H57x*zj0qmFnoz`OVzq1#&zFEde8NV6qp83gsskEaM_FCTm= zDdc!0?oR2xf_-kT7>-^*hJC08X-m99=e=Dq@vw<~DvLrwWHW86cog9}6PKXKaH##9 zLyl!91?*kiV(syFtxH%A*I+5A|$ z`N&Ryi4!@mDpsdAde-bZ9*3?k7(l3$ymTquU`rB}&}3)`75_Ep@Gx6jgHtbOk^YWu zKsKOaILriIBq&kj=D^BbV=|j>3eS$B-5MaF0!X38yjvB)JHV77Ue1xT$R zL?ssXbs-?S!CYVVO%>%%!va3v;vzT)SOq9( z4eMI=Yf>D{Knx32Xb%!m*?gqx=TBS;T)vPdkLIT}EVc}^-@&WTPTgJ*=Co(-9Bs12 z|9;REkp4i*qI0YDOWD9(Yi zgW`(2tbrTnJLpFavF*;IrJE;A=45Wtk+7N@di})6YN%lA#%PN+aY5Wb8G=x-UscDrIXx;x!@+&Yn?YNuUrwnCGNF;P14> zWO8J+E5RBOu10``393!Z5n>Tjk_re7;xP+_tjZBWSYoo+{GGlVm=KG$dCRJ5L=j!_ zYq=Tx4+dR+-dk@(P--x|3Ij5sB@w4Rc^J*vyNt>bV0p>Fg#z}B%44_WCgLgv63Of2B-EAE5H?H4OFd z*G)wpf3o7S(bFUq9HSC$rw83X@UDB(Tqp&U%Tx;x+43R!#&sqr=e;b zv(L}b!I4#lgi*;MoYC+WoJaOBuGHaRKoh8bY-e&GgAEJHRJh?>12J~i?2wV7PMCMc zX>+Ddow%4qy_+%i2RC3HvkJ1pZD67H-A{)$Dx$zFn8qKm7$J`x8UFi9FK$>RMSI&GwruJ+ew64q5ii|e z>Ne3fDW8EfRd|k!-UImDUUgHO?WcGm^##!$Vsqe~E(6K$2aHw5&;x=G2yxR6*ky`5 z_Hr)KB!RoA%_m>*yK^m`!Zooqop}})&R;14lRj$;fgWF5uw)$qz#HZ+F44G(wHD$x zb5BW`0>Q`7G<>Q>=-m)YsT62#>4GM}Ix^SVzS}Fb{$qj;qH}&iQEr;F<5PBrl}Rgb z9P3%;T0^hSljFeqf)iWHY0&yvqp~|kYkj{dAtp^fVoVS4YjZMx=2ckh@{vr+d^sS= z<<5>@x!(1?IlY`I8S2oau;7I9Jx_I;6q_FHu6JYrtpeuolPS9%4-1u?VQaCfdwiEN z%6cD4IecNeWV4{73e(@|6HIQoWNy_esl}r0xr_QV>e=(e^?D(N_g#f~F=>QvmhZc( z0cNcCYaFu}p(O`1{@^M>jtq`xL8DYrYqtP^!JFt4jAuAkU>d?cLH$mhed_OvySk9B zlgtSIXfc>X2Ot?>qMt`D=`v}WpB@>`(pMq&BB;qDF8NA2x`D0)*+kYALIwA^X4)zF z4sbM4>5OZI$_~W$`L#d~4$(dzSrhrySn|RBtFiP44hsJU2me9o@(&F83l8M14BU+! z{vg7?EnR^A$p(MuBwA(WkH5b+{2rc-o@55N>y*?I!zv?~H$;?|Ujli!>L6T07EM&| z@+s~^13aWtaNUeo;Eh;E1GY%Qe$f!R*5lE7VPWMdC9V5XGvPMEtTol=55Pqd+%D67^GBYo_S1ZjiZO4WSbbFppWs`^M zR7dU!AgjDD6* zF{Xs@2>sN*lZr^)QWFSD4FY%ujNBkg^dQzVJ41FcpazY{v9ixiL}w|i1MZ|qBg^H7 z+S|=>PA7vO;47pi)pL#%+~@jo4w5nykJgc%A7L1Ic4@fCYyOpHs zSGk8}Aml9R`};$9q6D^rai-b&rxx2QQG%Pvf&T&)FeXs^o+`?Zq37m5Zh#|0^OZ%wuplyH^3{MKOI9--G@zY1Z5WNg567I$j!^-h#8N`No8E}Go3 zk3L-X#Ua)00v00(mba>=U7pz^yC+Vbn&k7Z2G|NG_QJkwIg5GGqD(vQ|LCF`(w|yu zf4N8Geob`$)!9t1`LFvG|MOic)4x_m{`#HE*cv%o8UNegcmdb{k+%KWCRxzbvt1uT z^kv(=tZN4Vn@TC?MJdZ(u18W+$uA19%!l{al6RdCM~Ur>Pvzo?}9|%^EPTVk4szn+t8uEgM4wJb*8kVm9@c8Gf7=C7|6*O%z z5!grFA?QPGw#@Jcg%`~nOWV=<{i#}Q-6{3E6sIgaDcvkvqE1S8#vAE|9Q zPXEu;L^*X2D7F}b^_GbMy(fKPq1bJ_bBV*Q1Uz$cWx;rm#*KGW(SbGY&IHCE9Vw9~^FRaV(+vc(0j zN~^{L@Cmj~!D9Mv6JVghm4#~k)2`WmZT>$_IyTlYc(H|Xcq{#sun>)R6RSMy<@r3t zz!^QM5Bv`;WAHk5uVb=Ov><$XB)f&N(%#@2f97`kU-moU)slKr^Nhln(P4es?2-19 z>q{^@X>ew63lTaW(Pnn~b(mhAG3oP|n5hlHL^w+fIbsqb(bHWaNojqoV@rL41nC#i zZ~WX|BIhwM>Mu>)0(w+CR^a_I=h#MQjfH(}0BMGDnN5kho?VnAztP*o{9z)DbhZ1c z4XCP>n2kDu({e~EWdKk8m6~T%=GS_ymP2 zPJ&+|4T-Y!Ag!YSW_bdXnrt9oe&0pSga0UiBI_tpi$F0IZdzOP-_D0c8$DNd!>M68 za3$uaajsCs&~DG|DjW@Aq6V|y1;If}>qm*Im*$=feoN`rSN}%NFXAoQ?-ttTX9YXR z>r&7I?XiHIT|y+9)*bS!kBgNA=!h41Go|lyRcX6Tw%oVJ@kVUR1&p?Oc#Q?KFTUhc z98sC=bpuHPHUWI4fAi|ZSE>wDvV$b4j-tyz}4U)M_bRC2~{_ z7q0XH`varuWMz+|MsbMcE*DwzPJox!!BgFPM3bpGqhU}UBI6}$o(YIq?D#aRW|d@b z;E~P1yS}(awKjq}>ik?oRr@|TjfzBzRtc zGk=LjA?GB=xCx*AJ!)OEfU}~DB4JEcVDUvW^s~g3fC*#5LgfiF z%4zd4DI6!ka0#3>w4#$D{0@=|iX>nERti@{Dak(Lo#aiuV{T>s;E^VYkvd0x+e1^DKG;TS=+UQg|2a-2p|@VTsLl{r@> zoVDcchC;Pd9gg1sf@B+gk0(E>(AnzBGAQ^FvZRCPvsEp4Tx#lxsZ`5@LkSQTbYQJdd-VHkV*8F(J^kx-N+@X= zW5VNaPKi!`!gW$CJVOl{% z)9OFzU|u%-kvY6sqjc2i^&*d~+Xx|~)|y#@40NHH=TV#ShgC5O%9JfMcC8j)D+o~p zccRFLR~3=7Foig;scUy4w1U6U5!ja-B#w!5^o(KDf@}^8xgvI~j?F$@0$i{aan7VA z<_D7R$jej;SF2*96js!nZg#l3%ODuYN&du>r|?(_;Enrf_Ih~aMz-jYg$T_ zJUl|-WkY1n$?jUWzqR!=sXjia(Q@5~*$PL-49PLvH9-=ylDd0s(}J{KqB@p$T?`0j zuy(jaM*(m-wX1Xqe>Mfurj5$%U?y1K!lAx*cFvMhw1_9@;Zg2 z6LZo0p$dOXh}s6AGF4q{{MTL64RHtF#!A9RC=5q~-rjgkn=0Uv^rWZkMs zmwNYaf?h3Fg?@xcy{!Oud>An(eK!s&?d(e%`^plYVnW}YZ2zSd1ceG*VG-G)^ogRE})wSH4_|lg{x$-Y)2IJIvv2TQGY`)DFItLCM7rB-I(`0;puU3 zv<3oNZy&k0Bo}UDbm7E*btQbs?M3T{ASB`{u#a#g$HMt4X}VvpnV~ z-xL*RvO}|S_DLqYmX;c8{oqnRD4#FZ;y0;9BgKT^WRWV^`m+JMd3j11^sX_LiL!Ot zk9bogWGJ2q9VYd&s+C4RV6AnC z4bO747IkW^{XKTJ#Q0jDi4G4|3m+2kF1UZuve|^p6qYXCRkrM@W4}Cz{p`Fw8p>uZ zx>c>z(Bnri@L?a?=u22iLyvajthbBB?qM2xe{T-YTX_|~_kpl?lbpN#sp6K%9PIaU zN0Dj%O`&vzkA_nAI-awQxl&Kn&~@~jBl{ej=lJS8B)U-JgK{H3c*`VT(w6fkqgH1@ zh;{RBS|%CEP(wl6Jfy(R(#$Ud{*%qK>xHL>1Pji8nx9oQ)e(p?1b3XN!{UG$=CKc`k%K^EM!R28P!)l6oB^QKv%Dz5 z?ChzEJT-VTKp?rwBy5e7?*?I8fpQP7ANKV?|NWNE5-(^ zN}{qm_%itsiH2z$@a|PG=G&KBf9kJKa&$rHFV~|{s=tu*&tQM@Z}k_||GqhE>TLes z`X4EOvFD$u{-5u^*f;2J>?`=61^SDB|1r{cuohF1__qw~_D=@>6Tezx;~xx+miK8u zgaS3iIU|dwS@dEyIV-_?SH!hGDx=tsLcS@v8YZSIo@2;@sy{4()FW^++x^Wfuo>P* zC5v3)Eg#?m+U--p)Ma#^mQU7nA*hDAJKhnJGyIE+u<@znF% zF12_>by_hR2LJ36FXFlRsLQq>ZdrMB5u#^#sR5nmx8^JC2{sZL-2tdBm`d zavAa(X%sdeY7yM7Lp}kWFpV4d=64@Ydyn(7X1Hb-v*)JZyff>9ASG-+7*a-nSCrCXfny?k26lSYkF`G<&%iY6i(2@lP ze=jRmkVx(s55j+>!P2+vxYfbD}*6-BZPshFj`0et?XmrDCZf-|jR&1R9e%GJeY!P2sVy6tPSwn>951gF-j z?xSLZC8#1E1yV7gVRX8Z{6{@3oo00c&p4!6@v<#|Xg;DD*KI4OT~lHYP7fF@4(f1pbZ=0hnd2j=zQQ{VUP*Vq z1K>}|Zhg-IgcY;k^^st?HjK}ZAP2w`foBGfFv-st=_+!yMNF8oOk`^1^w2ol7U;dE z49jFjf3^CLA_!ZvMt@&rN!&(%q{al@TNB!iJxwg+T^sO-5T}A}>=X>Q zVvZ41E)$6{D^}K1uFDop8S#YL9QE29_H-+FP$Jrx6h35Rq!s&!h+Ih~C013#mxFzR zLU~_&CQEg z*}u?*>+2M;HELwCk`;*BV5Jf(L)VjlT)MM~ynf&2>)3ABIe8H~7`ylI-M7dBo z(ZZ_>hu!P^EH}}Wi#iO8#I0|YIc14|C+jP&X;!l#C)p_!t7vPB9W4a5Qw)I60*jNV zFx7BuWi>I1)6BGVtpU;%&CRky!*&fUp&JEPt1)cdH0;kDL8~iMYw2^y0oK+sQudw=53ZdEO8k+Bk#kH}@zvLrPt_ z5lyjb$jBxJ^NSdO>kMn}!+Sw75%eDY*E1BVt{-P6xN0181$jy=1B0?_wN7Y(jfPDO z`LE(Eco<0|niH6@7&pf7>^CX^HYKf-d1+%eMW(eZ5hf*==oY16O+!;cD?u)@ve-d1 zHpUk!qZsfw4%z&$%*=BqR#ux$Vs*st=FA=d>~HSUG`|MB_fY03QoPHdI&u!>$4UDA zpdOs3Y{$oV??Rc;pnbtva>WkS8Ez7g%m+rlT*y0x!Z`A%be7p;*#li>6;j9j^D}T7h%js2yT3~|rtWS= zuz00`wPVLy9b+`vH6Y)t1DhClPSvc{s^x$2NhoY4=f5l*uFIQuN z#AaE=mMx{@%c#*!r-`HcQAMGLGjzeS@J8L@btbA!?+Lk$oFz8~*+SqLx+y=FmZWBr zvD;V`SFKN=RG{rnG0Az=uA0C_kZZ-5YCVhJ<0xJ=WiZEym&Mhu!=Xo-OyK;;iO~Vfevpxn53Fr3LND zhPv7HdTc98Nj2>@G4bo;Bs=}O`_=Xir(0JU#^{b?39{w6wBW>hsAGFr{o|vEc>l<& zb9i3+>C?S(!sz#7m0_oc1N_GpU}5iF2MYaLw->ke)mz8o;a%xU5UND##hd&7#hWCk zPO__#Vf^g%0hZ2etnD6R0Q8Q|O?gJI&c&%MVO|~HMWie`hSck}&qJiivwbRnPwHyt zuPQS<>9$SV6J-38%7@H%=~4_j%Gv#OTDYL6C0|>9oi44YHL@)6DO#hg46Xi0O@tQS zQw5m^&ufE92g#7hOl)YDVQ7;&hOs-@K-j`9kGBTB(ke`&ud`M$;X5Lk^ z2F2R;WSKjW`DJ&M5e@|!lXlxX;AEz(3+31Bkl{O9|EKpK>XS1O__g>uPw;=U=g8mK zljeVqgl4w3mX7}|eMm7*zdbGspjr)9uoZWoL@bt_6h2to(VwWyMHY(~FzLQrNW`wL(<$z;@dK+mP%I zhtrZ}DElZ`Y=$mN*K!|8Kn1EOms4k6TN7SfHo{%F=k!;?xgZ6@*TbiZBAf{?S-}xb z!AFDlfAj~Nu|di|XpjeiZ}2m%Bk5I{m0!$U=#3&k!j~e`&W3|Tv(9#_icO(0nu^fv za!1{VaPQkE9?J`i)?gmf3b@#_UCZdaP~(VA60nDE-$TtL=OqRVXA`P^#pZ4c+VhXV zaY%ab)Qs@lX0!(%@0IzVx z+|W3ZhyX}bNS}ZQDot;SN4>F}T^12z*-r-+cBQbLn>3woIfxb3P?fGZ645sB`wtmT zX^l`%W?>bnVG{0UD%jJ}@_lRz8_+5JvBc}*EJ<9>g!JhmQJ3|Xs6vr%lB8AZzn8zq?*d6NA)dqR zu_=depC$Fq)gE)?RZM;v=o)*lc(J`P%l;m|;-NjDzT}6s0i26@RLB0#fbAM!#PBPm z^m{wTXvA>gjY>eAGzlXbPE`%+OHi^5L?V8foGUlNdMNsWA#MHlT0&BxpNl*E64C$> zTDGbPO^d3MR_jsy$_6JUK<(A~JC25&L>`6mX3g8`PE4@Rr$H?57GuoK_a;JA256!s zk;fmQF+3C5PEO+iYp(ejo3Y@BwAH%h6;pdK_kQpL4YXOypi-zo19w5Huy&cGvpw3UXofUN%Mc5t|JN+1 ziz4n5XQhexJExV7r`s-Xs-u+m7De88O6fkpVG>UXu*pfyMtkJ3@}q}1(#0oJ^dtc~ z#EDh_#1Ybh@lHx{Z?mIFd7MbG$wT9l8 zMcCT?RczOGQLYFeXl$+PqO!ingc6e_R-6Ee<=2`jSK0{1-XY`ri@+!~Z@( zSeZLI8QT~;{P+3D?w|R{_`l>M?7t~C{{yG3e}(%iCw&#e(*JzJzs*SL|I}^%c}BLH z%$GkfdN=rpuf7v`QID!CR-Mxd(2_*dNU5NU~8Pz`^o<-<{>Uo-<`>hiWHK+HGSmu)Gg)Pg_(`8f73Sp6xkQ@ZE!9t z&{a5$URyMXgcovf^I_=$Eeo7G@vJB&UL+=lNc7=S^}3a>I3WoS5vUIl+cf%XHE`2+ zhZHiWZwV|tA=EgW_JA)FKg)$pE|SFPQjrSi+S&hTA7}HMGS`0OZV1Ib5em{PQwStH z`K1v{hWv>?K$7IIeO>xGIkL6W-x#mN&LwK!${uiu7F2y)TOGMh$_Goo&EwsYJVVmg ziWh|dzYp$hY+TSbM(qCFg>R{`@rkIh(H*?fd*|{8%6+=HsJU@^qx%47brIc%ajDP~_MGkcIBNZ?> zH3$wb6#1RlAyH2O9~8U2SSp|*Th3yiaInHe0Lzj{cu)RnYP)LIMDN~T5OKB22RHjm zV&%YKEmbzBqpGdSyTxafKY7|H;fXt4Dg&@2R&RbUGDKxhUCitm@?<)h z@#x&B6m!C2rrCnf5oOzq#a<%F;(_oTXh^jzz~(m%?UR-*r{Fq0(^NGf!5j&#Yq5dh z)pBqrG7&TBntaW0W)uM+xV+Z{ci%AU2;nhibbugH!OWKCicVFemw=%pre0*EC8p>= z87f`S-FxC041Wni2*)DDj1SJ;F6b(wMGAKW19J1JVXn=-B{}}iSemO$(Kiulmy)OF zSUbpDx739_Jps9*n^u4xkqRICWsVDNn2vYmg>^AS?IIAuwZO$0h6^j}-`jT%p7tFCk4Cz zW!a>`GBpMf_IHF&Nz3!jt}-F^pRtiSKBqAU)80&_kA|1>q>E*jm3zx42W@c&3G|Ai-Xz{{vnBrY!l70K5G6WuiZLU!-L5C*}K6p1NRsD9L>7DHDBp8%fJU3$TDM zFK0L&OjfTn5mPBa9>d4-+X9nV&y*;=aQ455POQq{kjr3)DeG4af2DiBVZzX32|;C} zwdjC@;caq+FXa$(Jyel1fZQfWkQj?s6_#c){hRBk7PN;S1-;>b0H z<)gCfh1$6!oFF9WBp_bwyq25OlbRG(5-iSK3=8xSq3h9b+A^~(hSsqzHc!JL^7>#b zDN9i`y2D$OPv7yxG882;dyuAmx2h?>W;31@&eO4|uK8tA3wIdPCKDZRbIAUzPj~$R z96xJ%}f`Q~nX*|WZVz|B!lah9iE z6J(de49_jo7;N7}E)N{sa{_UIRa_sFOtB4#ik%SJ=L^}Fw{FCc&Y~GTnW@}iN9BaQ zguG9_YO*@Hf8EGn&4(-F$(>Wxg?u z1O`x@V^&&agK)CI0jml~bG_K=vRtim2E5Oq-j-?7HMAQ$rq`?|!K7jHTs>2~wt;gp zlvS^&LwNgx9}EUXk*YYGg8&U_YHUU6ktae1oC%14lav6q+s3XtHb zHm?x`+UOrzDU@VuuKOh~gnhz}=ekdP-2+?`R8X2<^xYHa2%GVB+WC#1GRakcap>W4 z;(X%V#@Gbt9PY-K;1@o}1ir$Poh+jZ7~!S-t{wSdqLYfMis~`NwUCbNQ<%5g&ZE94 zX9T9!*4ezkSPL~@%J!LFv|_bTFgb}Qm?CD0SSxep6QPr>4GfFjcO03iR^+%?ebJwU zdHo{*9mq%gyv|-f?tE|ANk`fC9h9-^N(uZO5T#ceLzvGUOUs0`+=Yt+r*FWyFC4ru-I%q{|aoI8-D~7nw?CB5q*A<8nS@xt6V5M?K>HPdA2~q_t=kk$PdB= z(HqjXf_2jvLxU;IqOjnBcgX|DV~^0$FN74GFYD!Fx}tABeBdb6=y>q@hBuU`w4Q#O$e=$dYw?&u}+Y*wDIls91$yiy%?YL*Dv#{kLN5vGD46X@g2xmGqVt(8kYw@)SygwDbl z78<@;An?n#peq!Tf2<7s)y{B6D^i#-+=OTdBZSDWf*X)-axQe9*bJ-L-n%9~pC`GX zULgvTs=vQNMWFe)lznq#U@V zqxVS~Mm1^GmvZ#B?M{)p0xA;I>LV2|xWMS9fyBC))ul98$ZD0Mu&Y_`x|GW@e7%^k z@$LKQGX^(F^y^mm=?gFMvQQmI(&~Ii3``_=8unOn2(>HKEH)JSA48;d>FdE^Mz!1KfUOCeVoPRfhu$?idLy`^cME96QE#97k#|{KUMk$2ab0z_Hix@n-I_@C;F`ao92j}}IN+OoC1yHp zZM-$vjV`@@PAl<&gj~PVQEu_O+Ax89wMQ!;#CVJ7*$Fagujv?o^r~vbyaKT1$DTva znAcjy7+taNKF5!+74+qP;Mq@cxxxVzmGMm1yR+1DXc8AZ|COSS!q5D1Gl1vMgIq#7 zqeSqfplzq8*T2r)=u#uF&wS-aZU1so^51d%f1yMC3tdHREY0-(M_m1br+;u24igm%bJDeB#guKC zB~Bth2@xxe-59IONzr66{+)c@VZmvBEIcqH6!LCUTDeDzyFWTS6lH)S$;ED{_)d#m zt)Z@^W6iRM&X5mXbw%1aV`KRltA19-o zQxK79Jvb1j%T_~6eUGiv34*>gWa#1ppz%PDV| z=a5D0z6*&ElZk}OY)o{|*nVG(EYGUnv!^JJLP9e#H9A0oSTY3i+k-9SjTa5vm<}Xc zJq7%-$ftH3N-c2-JpFjeP-gZmqITA$P`R8WmS7$gloNfj&E8>w^MvX(sfYCj^$cCJ zH4p3|mJwK6<d2r0`6vd8!B{771BPc#_HZH;Ds&B964pRrzn)55NCQCBW&KJ_JRSuVCUtssp9P- z^A1eu!c)$Z*5Yx#jlfALC$+&Rifd8h5%}2*cewd(IF4Kb%1nWGi^)aC(r6!VV)+IP z&||$ONxRaX;QD zLC_E=on)Tqj_VM%mrK0VGhTk~-a4O33^HH~Cy*k)XUBCw?eiczEx_zJkS98A+qN5L zk?JpBlma&Qtx?;Sq1#8=Qqmbi?}4>GfU>2{S=a#MyViEGElISX0pL@vi<{Oc!b~=k z`kj#)VmpkCCWO&I6EOAoolBaj7b&h+YZ}z4nE9he_)gQ_7UK7?gff$|n9?!3wCD_J zA`;&*m(Dg<^BPwGvMC!D>?&21Q6tSU4CDx?b=}P8OU4*-UX!1GQ`j$9&r>*-hLzQR zht&pL4fW{9+B=>jfA*B5qvN9vGrZ{6S3pGAE!w=Zud_E=Wx`r9FxBH;6y>W2 z=zrdzc>mTl6CeNp($`!3uZDipzsX5>{+9{jKi=T~h+@C~t|a-Bn_j4I$gZiN_=xTL zw8CQ76S4y~C5ie%s!5V3!O62p3tHM|N?x0vk2q^kh@1{D@ib}{S;=~w^po8u6&poK z2Zt=~5JY_V;n2!_VIkPM3MdpjmE^)bIrc^-S)_ zO^|+b*K!5wPL|MCtJNn2Vu(i_t&b2B}#)e(oH=}O@Mh^N823NZuVxV2|#ncXqj*Tt&^god7yOpOM zYEOu`p2i%{S5Z3)wBfzhsshM+syPucZpMf86j7&^*@P^hU$HbNLi|Jr2)WuB4sa$! z`&Uryp_&OdAtOSctb->f@@PASvT#rg>@onm!_SJFJXU`Dl@S$pg|P^NPEHZEoUk8H z;Yuvl21u?&*`ikhGBe7%sdJ}QDu0($AwZ!XO;A&`7ubI}!@h$aVLr@jf#`Sp(#IJ5 zmNVNx;8?B-(X5TXWLU1vHz!$|$gj_iCsZGyX`X4!!g|nCo^kAf85wL@5KFJNB)&sl z1b$@$!v-uFjl3;F3imEhN6g{}!|8t)arEbeFHmtDi9e(@6vJln-ycG5{TY^1&vS8{ zTC_lo(u5Gpe*6YeP;e|~L>jV_uiBqGOyc!3D;DwGa)Q2QY5N$j>=N+|I=4! zglXX!ul|GX*dCx9SHiu}5yY@nOzIYkH+M`o_dxuv_&30eKb=MIb?NWi?~ObH*ZcC> zX-H?byw7typlRMfZWtlVsn{Y`!lYhsduVo4$N`q!zuY22r)Djl(ug6TX@QwAI#_8R z;^>UO8y0KV#?&HjUyABBYkOdV15yH0j>G33c#Khj1*IWrGpde+(vx~rlL<%YF3tgv zkva2`p#{wl$X{c0uVvxKCvt>oP~l=NgYdF*iGzt0eEAlN50O_!}cJ< zK+ao<9Wx5=a+j0l!8OHc;fx_jUd>Gp#l_#=Kz33b0}V%1pc4kC z0{(7Uh)B{Xuwf6{ZOl&5cXe}fnU)?$;0}GK+q)q2^vW@a5=Rt0CYmwXq*>M7Z4+Zh_Tf;_f~=ygcbqyUmiv zxj$NRnC8Ez?i!68o!sf zPLfBbSZ1ikZ(z;oA24C#FF)#t7Rh#;n3OMRvnY9>BS6@eQqd`sW`h#PExgBHPC?0J zdtDnVuw)p=*HG*p1dFj86IG#}V7KWLFT^a@{5EIj( zP+3e_Pa_L)TbDa5KoEoD0&2#g?rh|zzXH>et8!s_K=f(VvAPfh?d#R9gJbCB)pM_` zO%?d=rmZAL>!&-|1{1vlcQh7kpkd364G2Jo0>(0SgrMzoj-7}P17V3J(169@39MWU z5JgUZNa;DI6FT|(s^ifUQQOet^&3u$k^&&o{Jo3+nYALoTg4{rIej{yN{qbM-D9D_ z6Y~l6?D5Fy>D*kOzp2{tp$NN?2c4tbuR5Flv?sO)2Z3@1P6c0(mHbfh>;soz{o%-E zz{fr<0TJfG{PQS~wjsGYE=T&|M$JyiP1&AzzzfeE0vUJrHq|dDr;ARHW(hvYy9NOK zyzSLDAhXz9WdG<&=_w$8@iKZbf9+orr`u^Wix#JDtfhz9%Fww9@zRZ&BwoPvxi>^G zN&QYkR|2e;ms>p4Bv~QZPQLrJ%Zptda&Ny`ys#!Zi6lB8qghNG7rtCNd*o?gU)<_$ zcizQyxIdt;WZkcP~o-L+T(zjcj7OXCUo*K5kHNd`m}dE2av}dgx0LwC;127 ze&C?oU=lojqOFYqR61d`$6G~Wat^mdMdv$MmJjoe+SONzQ*If|zarF}qjTUQd~=L} z3Ntp}@y6n58;LJ2k(i*Y_!RzOM<|##%(W8oPx+$Et6Rv@ zb;BG;{pmmbmqhi%vuyFl*NPww?mwvhPuI!p-)`XiXNjtrwWE=Vy`H1lS9JI${91B;vHZKR?wS(Bg7IKw zvOj(T$@ZmTepXs=ZJ>>Pne3itaU5|Sc^<7XiwmAd-^3EAg1{jgK=G|3s=ytD!;q>d zU7Ma9MrC|6MSv5EsCK zK4!mr4$*|n%$7pAyyHjNUfUf*z8r>XG}YUC*uDa}2UtM&r)k8ZcrRh|o0)JZ6o;y> zYfMD|!o3s`K`XBixf0@*au{aiAvbnVXe z?&@47G;x7AiNS@be1?aV5F3l-}{+b^`l!3s!L~uKfF0(LLP?LETzvqPU#NyiyJSRBsbHYFHbelO~$DTVA3#tERk!u^jknR$PLYI4KP7P zu|+oMXqUtRw$hreJON%EpQhVlinBExoam& z3fzD$X`uCw`SEK#`LtxMW!4$S!2NJJBAp4c=NOj5G;@XI?#QAjkMT7etWX-KJq!9b zXlwPXa|P@$I#Z8%42Z3cpx$e&Y(X~`wxL8Uh?sv1YMxQ?aHG!BmW zI94=}*6-P*Kl?T%Yr8Bn9o5yn@KaCM1#y2{nklnEg5+>S7{fnzT6xsTiD`v7Ir`6lef&T*5{``YK?kxtLsBsjRf)4hYaUn9M{y%9@z1IonA&of={=WVt^52nV8aIVfKLBvAUPxcGbAS${_7$u#eb~6 z{!6vskEdzjwW~0&$w)R%76DAzjPPvaLZl;8Q(gG8LS4;2%@C=r1QK&0;~rP>kzEVlUx2QD< z@*Zds<~(@=eRQ3BZeLY^3kKp*)WQ_Kx&7p<@%l)sF!ymfF8d?6@Q+X(x@_U$uX@+> zhQ=Kow_vbl7F*37xl06?(K}4_nqu3swh!Fy zs9aU=F*4}Wgeb!ts2RBfs2BUjrKWRsJ z7_XZbEE(XI5VuP18PP-Quywy-$d&$(ms-;IBej)n`$pu+{$*uLFJMhGArMjo4!Wv9 zj_HP1B1}LA3ke~?ge55gM2gSUWP_@_a=cW*n6`gGP&XINvf8#~A}x_fnvq6wBoa=HshEBxk^@!oy1$vR(~%Y%g%qb~ z2{pw~1b#t(>wXa@)j^A{?A|5fXx2j;>Doi3+%0byA||FwNZ$De=#x97fu%R`dvLU# z%qFErDyA*GS9R}OCE(=jdPo&c2@NZ$jx(7y0Zg^xUSh z_;b02+QjPm;-X7+TLcDRR2Io%6g;G2k*Gct06qfV+(lTDNRLiY!?8tK*74b~|D{64 z%tYldFei(;uLSaeO8nDF~YL3b4$x3TZbm!`F%TAe>x!v_&X=tPZsB8!tTnIS1iA3 zUu}DXnXMBSmq&Mtjb8FQqFi25Cyyte2ZPq`w(eQnbE}7t{>y-m5(g2c6gwoX0D9H3 z;lb%y$cc%c^w}qruVY2*Vbd+FL28^&WW(EqFJyxu`jpA8$xwEK@zfGOTaUXpmoL56 zJ`W2DEGm16F+_|R7PJkrdC%dRd9#2+ND!hPj@s_AK7Pi0_-%fWaas|lYD~@UqPwz3 zZ1(jYK<=-dfTGb)8^MkW1l{>7Hxy9DcYQ3`di>CTMwB)!ANz?WdmlE16F}fje*G<4 z*9d?n+l(Gh&9K{bG*iK09gK^20Q^$5n2#HjeR>DxLo;%FbXTNJtkB^|p$ruU#7Jas zV7WH2W%*FL>EruSAu*m-O=12?hRg;!_IuY@xo3O%v!O#$4P%=SSCAjb5X%++uLD3> z68UyWUFSJ#i5Mj58Qug#rM6(2sZMKaImii*>>&Pym2K z)PGRdpVsf>zfsqJo-F?tsr=Ja`9E?CGu7X?= zk|sZ6R~keE{>s}<)T9f3AnpjE?=XU}{vhA}ASdj*jmg*^#37)4st-PTC_qepEZ>qO z_Jre5OYEm1BJc73^3wINdU$wXVPPtQJ}8~L8D&h}M9EWqy*R=#gJMl|f6aR@-3BLW zk9SED{&NO<0HX{Jz_prq;vwqnti@*C{IGN7wls?STScQh1!p)H(NTgh!3xO_(Fds* zTgp%&nc9`LIV32bX-?wRfKB$XN0B?6a#$~fZlRX%G47Yei{#D#@}yl(iw+c1j^(_d z^OSR@=`^;mX=NeFs2trf~z{~2w*4ylp`g5f40}XQF)b1K< zR|!5_7j;oZ_KTQOt5{tIq0mj3ay~iZ3_Q3$k+PVWR zGM+*CE_6xIm7ai%i?UT*wcdI2F9j8;q;=F0PMX|ccXnWc=e(p!yr_klr)H2{L^2Do zH))5|xHdHdXNr@6rL|{aP%#Fzy$a5x9QHG?NI5}y)z=5W2+SrUplv3!m3ohb3PHp<3_KLonmJLqd(?fTQA6 zg9LLv4Yz-lwdzoW@It@~qpouHO)J8=NWKU%NmVtX)MlRc&A8tI>*Vr&uG&EQw`Xcn43Q5me zPIF1H`&3A`33S7ppqviXP^n^94e!#=H&|4=5Y%*`>|9~T7{OW5j`yhUpwi_r7F!)D zKk%55X+Mf*S{_9v|^ zw`$JGugdwKz#iV0yW2suhIcqf`nRK2Yo1c46ijSS9IGL7seQA1{k$hgx0XvLb#z<;H_YfanS|?)qY-;{i1-_98P%N z`LR6HWr`1GKzgoPz|S=JCbXBoSz4MX`^%bMES*q{CGu%N%ckS15a2HEpYKQzL2;3X zZ<;OmwLw=e6?IBXa~X6>u%FOonx;6&#g)9&gQ19I+5vaG4ne!TVV9JbdxCyS!Z}%7 zxI=yCcpGjs=ck#hl68eNNT5UWSpXp!KDR^}n!m>Xiwz-6x_rR^0A$eqnGJ>ht;C}I zkA<9+&7achzZF#Z{Jo@_{JLphq;_S!!GiM1Yj(ALuSh4j0<82su{tszjcN$5r|Z`v zn+1}X_~izbQkWA&D*rVi?=6Ipg;-1V1@(S6;&52P)ADdiqLU)_+Atq}j!&}>CO-ac z+7E-Yz&h^8?O#v6DQACf*&~ytO-OoB1UmQ4iz9kBb_1DJh6!r~!`}~AXHFRG0jVdyPs7%% zWg z;MquNkd_h6#AW&HCO>A_PzJPtlRv+?)p@QJf47y4B4f_h;IN)}e{>d5I->7=hbk+a z(QLWQcX??6DQ@{#!c*ZXVb zOGA4(T{52v`l6W=DC8D)!Su8K|NUyF;k;K!b@x-~Cu6klcrO5B5^n5Cp*L+KQt z_b`ctQ<1$I-8EBs*PWadn@UIHS9Qh4N+(8>r4A}0VHM=L3(m%lpaPOEMMMlma%1M= zi3@PmNv-bDNt;tN)P7uBxtjnUV5ClGSPk>)MboCVTP7V9aao-jq!nvfVx)E1k}z$E zCL|4;N?StaCsfDxQJQ^C9+`gdVP|Kjme2X^N>RTMmP-(J(W#bG$f-uu0ch{NbYgT^ z^57LzXI>@m(V`c+w4_Q3yhXGs8mC&b+b|i80JFh=C6&U6maZ-w=dZ^#aCY+>QUx@j zt*%eh(3qkcn0H9HVYn8sIonKXJujOy{#;1b>z_^`AEPmDbJxB4tW236luDY@5|c!H z^4jt1vTRSMGWdnQ{F^wA{*b}TOT!m6JU6PMx&7PFN9qb2IULYMr6w*# zG`&p;ZC+3X726K}kB^Llh=bp!xB=6uR0?@^u%90~-Ida=@?F|V-w87{+)f^mx^edy ztg34krrN82zyeoBE%Vf#b4O>{R!6ispxaokra@6kkOL0=Sd5YYg;*Ltuo=$*6YYv9 zzZ!3KEM z!H}gm3~m9vGy?BBs+yN!5&^#)iy3IPXpCQ}93BziRwm<&U;oXPfL`{PfV((b$0@M2 zX<-2_c@DUD)zS(DEq~peYzP6~P5TLN$UbLyvTZALvCMF>1TP;=_43)aGSzoEZcmed z1hlDWL!ZsmnXdjRH1#v;6hClAm=ADPO9otTLXm#VfQJPlq@*mff84)kWkx8#HqmB> zOuUDpr6Eb#`EQpihaf2Arp-8NdvG@369$!QdC+p}+>oo?sBAxyydFyH}x#_aRlTK!$?=wr` zP)Md>z$N|X&vs;ul_Q*ciQ8$OGj=t7lTXH~=ty@^kOJ4=gQpjR&R18!L> z?-{Uu7(Lu@GHL-r1(tl+h!bJo!39uINxSIi=Ai<`6Z1}XacNxlIk0mx38x)t6~7hk zV%VT(sROhD|JZKA@3Pp*1bl!Qu560Xu4W1zs8T6?K&j?=wUjc8@|*dFiHB(TLgms5 zwbsY_hsAI@5zU1CDf*Th0HP$axV@n}c|xh%E>?yCN6Izh+2HvIxMa(sLXiyHgw@f4 zBx(lO^M@89W{h|!bfc#V&k=Z-oMDJH2jhnRKb^13cB_|ipXlvz`Hn7xLvIS@cl2zH z3@zF3T47zePO*~t;O@N zXOilM`JU+CeDYls5~v;o^9I5q?4(?JHv`%8Pz?Hn@z(Z6;>$6OklXz>g1U~Se?t`6 z#G)z8Ie&YFn!~=wd3U?pV}GEl^K_j0w)LE5Lz0q??${T4G66f@wtYREsbDry25T(K z!uE~r+ta!exBBe~r`3}JkMUhRR`-7LY=Lz_pQroFY3`UcXY+{%UPICB6rHXDW0W1+ zH?7b0T{1>mDiE`k_(yHdt3i@c`eT9ZJ@>bG3DKeTVzjVl#9z1M>()wc055n7t7Kj$ zb{=yizVsea5Iv}dIm_p;l!&Vq<}XmK)rtUII}Xi2^a7E{w1uSy_Opxz@t*sM(8SIC zKy8LLP`MKiMCyCS5W=w_frTrTNv@GMRo8QAP)g0H5BayO~jsaCfJSC&h$4C}-v~>LF2a z940ghxA%%@G)GHM)3VKdN&LLI$-JgjQZd9&qk?orvH7^TNS=5+(Ye8VKp(H)ZEVGA zN!(Nvsbp}#OSM|cs2daCn3Ja$-Efh5(cdt=A@KTLcC4N>pDeBsykWLNT1Y(cxj}Mz z9vPqDvm~@)(#A^z<8GIB%OAY8%Xh>W-lI_BHi_R}kukQwbNo*E-2Aofo-;KUB#(%3 zqgYGP4sR%%eF!*yxTAZ*+4#+tF!jEQ1ePNNpN$i72ytp3!Tw%VVo3cdYD6+7K-cO+ zOOk;d#;|>X*Fr<59|$^Be$z!MvD3Dv7P(r;kW0;`o*prH9+qj&xk9{kda`R^4w-B) zXeEAlcN*$ORy%E2Y98ZXCRP(Gv|Du`0n#q+`77v_!#gmMiLpR^F^aK;1YqY_0lC`Q zrHwrb=xdyYL*k8EI9R9!-+(Pr>iZ0Jfbb}8CE~PR$%6H^5LQg7?k#=F3a~71R!&JW zLMf_PcF(+8eR*H9iucIy;4KQRtd>Nxn<}1n7LFT%YXu17=h37UH54t@I5J4mF{UDT zlzcRM21Pl{ma6uK(zK6Q6`|GKjCH^z?>W%eHo|>YaObH4(M|~C-r*Q0*tY^eXU`Vl zE2&h*AR+7AN|HRyBbA^TM->LSGEI%m!huNM)TT`y_C4DqJU%&w>O9qv&=uyEHlow3 zf?%*2HN$iOz_6 zRPI!u`MVdpoH-Kan12|EYhlrKQ;RGLM6IQj0Mn%}Ja`i!`;Dl`9Zht$$Si&0u{x4A zHk>gAk7l>K*U2ep(L|MoZo7F<_fSYUe^`+6b*8C!l+fBKCmh%hl4fz`@_L;CB&)16M)r(V4RF+Iq<{Wia8p&VA}cg=+!KtecV z4`=4e3w7fmGoYx2Tf#th2yhaaYwTPE0&($A|MwVIn;{*K^OX$%mHK9r&CV-XSu>VA z15u*5;ILHNr?7`oIK}kddZjOmP_3@M`Lft{@CI7zUMsIl?`pSv!N3(HrXmgI6#xfB znUlm(mikAzD{)Z+G)cBYBE`J$2enM{+6G0QL3}w@GX_JckOUz@x9@vi$tPO%at*+^ zn@9k$y%NCG`|RtJ;NoPEx2eq7f8dR+_rjy;|8&c6P+QZZrbzsAs%EiU`4x2&0Hrm;ZVWs7RE82>tT?*GMQ?c#|DIYYg3$49wU5F@Xeqr=XHw0}?@n z71rc@MNRx}$!^N6__NV-Yb%9JM8j^4@fsFxshWK$xy9{|+|;FO0Apqbg0Ua>_c5v~ zSst2?s=A+s%A8n2@amCZga~2!IR^*?nf_x!w9SJ;WH$1H{?9;fYHtc}D!g<*sXly5 z5_UN#b9`yg2Wt*ou3ubkRNdC~ir9~k`EaG1J1#T8hq@z;Q!e*_3f zTW%lW;g$v2fU1op6dp+t6N<|Xt_I@9f76g6xOiO7gQ_IIpV~bLbnk0OyUtLU6KXhv z+B{mAwi`jshV!N5GwOs9C^fw?jt8OJOD+Km3JD_acZyI0k2i&~hH=H#hjbb+I_%lPN zCjA@f03M|`hi3lW7jv#?NNNX+33EI8{T^gF<1}F z%$&+a0GVRSX%xd>Y3ZL`!uO+}1f!qPd&%s{dC%R;2W$JMB5*sT%Z-X_`jNC-4ErnJ zL4Zp{4aB<%fN$*+`YM0+jQIj=H{42oXUW3S$%K2U%DG^bJ}O~JTD5wX!eQfHLDF_9 z=t(zcEjx7Gg-=o!A-$%vJdo%+QQ8cVeXWim;>Q&Ixbtx~90h0nD`(=Ivj3i%0IvqD$B zfHUdc1fuc_p43{BF9Vn>lZR%b(d*>HOq{cKB2Ddc4gxy;Sk1Y@b0P==q7U#jBzq6@ zGM7)ku#)O840+$nLUv8!;_OerqijvJ`9$CzTlF7dW_;C=qvhF<^Pf<3zBOC<>H|nV z1emcS0C%Ux2SB0KIYw^{*<0q?qVJFh#0%cv1i03xYn|Nr@vGvD}_UVu;G^eMr2B~OrHtGgc%#zY#O#-%I)9_2~jMi+TwrU7+%7sdYG4)G{0f+ zs6GJ?u;>e%V?FMnohKwI$lSmO{arA*SK%G)(^DAwE?_|Uw? z-#8sN(F3_gpdlndw!E z{#C`n{r}GNe>#mqHkLN_|B>gZ|2AwB_*%lwQq{CU`G(>xw#%351<`;&7PRS*AO}HZ z{?$HD=2hNQzpCumOe-5ssHKW)Z7%1ZNhwz@D)%9T1rZeN)4hHx!1Lg4$kvQ!ieqbd zFv)S?^*O?^3G70AfV}Oi8}CC5g0~3`;u->k`R%%MS2kaA%nsF7s<+gK`qVPRdF8NP zLV{pTMBz{q9J#A`&8CfDzjZ-cfQVX+4hDQmjsuMacInHss}mH1>hV+v{j=XdMO%&L z9k9kACD{EjX!W?MM&-(tgi3Qhfisximb){$ptvk~N3*3`d-kxPaJV#tJ9rO+a#KYR z?e+|F@|YY{;95Ad+CX5&7c4a|QV*qWpkyqM6KH~t3cKOBc$?)qB`)O(R~4-^R30DN zQm|$!iDJIT(lGCu7CP^=Q}MRGLSNtzQ3$JJgU9~$dZj`$-ds0m!}~}98`?reg4^DUFa>vM1ALyNiM$xczFElnXsVMX`7r>8$?c?; zeaH}zb33UbCmnAY+=@;s9{Kh)Y<(VX9qe&WEI1rYoIx03Tsk7IJ7T}aaYey#JEJ;z zCOhtP%eugc(6fT|sFz#n*GY{0yKe5pnnk%6elIT&2b+CfDlzUD&SP#O^IvBq(L14p z1LZOEHA@z0*HS$EZnXH?P7+0kgnF@K;XAmbNEd`l!DXeNEXgmYz|l4Adn zFOlRP37l@ArtG|PTqI$?(#}k<8CWMuSZb2~-8vCM%#A%G&2rVHLE14A5x-%4U3N&W zqXeqZ8^M0ghNWf-{H{1=FPr;&&d4{43W-}>7@WQ%A%ra*XWLftOaCE ze0mgU7gpc-awWn1q3r=${Vy|HBCPl&&O{6VEHe}!Gg3hZDLKOMG8+a-s?ph0SXjaO zDgnc&7d|~g*BGK$-eAR*cyN1FbpOwk&qc*_E|)2(Y@yq4%iicH*J}8$fN!`|=$08= zV{|a)HE@X16#adH1YTT=JfuJ*~RBmWfF6kG-R-ff4(W`)ck@Bsp}Lv`5EJ!ZoZ_-fV6LFm5%y zDAkXINw{mXe1n3Jt=Qc4Mj+s35QeWzK&p*^<_T0*95NZDY039&voZ%#jYu_>m}g?A zI0_R-+B35=KjUXU0a>ZF{nO`<%Arv&Ac}sLf>pH7=@jn^J=?rk6u;i3HGxWX2J$I0 z>-HM2m2;Qh$M9b~{;*jFom>wF5(D0~<3=bBaQ!k0ZIYrW0~SNfz$sa@OWq`PrmiY4 ztS8HkxsomCc!T3UAK#!9v+qD5OAJU`o1uMhoSm@}HtMi`EMM#&hIT7e0YqO&EUHiI zL;Qx88u6q_6)a;?JTJn`{Qq(GPC>eD+1hT})=b;B?aZ0BZCf*K+qP}nwsWR!V-{hy03dc=1#F8Ua)_tx6e-dCNSmdFo2K)bOqkd}qDJ~Oo}4pj&Q0@I>g zE#T-x`eA1!?=WIv-Rv=|u08MP{*pa0DXiCM@uh5Ql{K(Em;1TWkE|9sQdGm<(6$$9 zD45G>B{{Wvl4svGGD*2prYdd`o$lhb%rI=1cE6Fcd@V-~84vqp&L5`d4WKPQW`{^I z7Y)aSqqgqbkanvY*h|)BufSobU1jXNI0PNe`db(9+0P&N-8%q$z|S^hbH-QN&QQ*O zk)I2mF4V&!OPR{Iou{$)t`(bAo*s1wPD?f0X}B%+1n=FeDyAC^36{)$YiuS8+Mec$ z?BP{80vj&8#``C&S8*hnmy_pqxL%SdHu2B37Lv}aHY9;m7m3SwL8ld|#3}!rZLsE# z(nXVzC^cDd3pnHYp~Mr-Bf#zy*<=@RgNj{2ea-eRccTZD^|3?UUJFC^+i(?YNjO8F z7E=oEe(ss4m8W@!c8xs;8L1I~uhH*i1f*q$x8B|^%GS@zY9K#Qta55V7G^#KZ<;1n z))8VP0d3UukX_S0=f`HVLh!f8z11Vk5kx*Wu=#PREkfj*kUg`+AU|1Pom~MaGktCp z0jf1t6b$JFY&^O*Y9r@}L;iYm=u9Z7}$n~^UvDRW`s+JZyt>pxm+Xp4&!Hs6)Z8kB!O_iiEoGs9*3zdQH-?#Lq> z{by=>|DD?Yg^**3`~x9J_iUn?eCjqY5QHKj^dl!x4UM?PiH^Tr8*sXish2}rbD_bkr65r3kaIeqfO>W{q?N@0-9i zp;}$;FLnYmevIf?P~0JT&O)oAC}8T&f+=;8fzW5W!dF1e%?NS4EfGf(kVwxj(6nB| z>>dU3CKF|tJBxHLYdi<4wIaq^CpkGL>mCBTm<8VWz(+jv4c4$k{LO|wdMsh5xdCB0 zR$;>q%>@zg(LcTA5W&QNwqQ=F87JUM8hts8`!&ZaxXTk~5Dz3PIzJcihrf|-rQOy_ zQaM248pAx;H@KDP>pxV^JpTOE^-y)bf;E~gv2W5i#{tGW#CsoMyCS$4#AmY4j=p5RI4;1-6lhci?x0Y5lG%J(L@;E9-U$UW6UKB2v|D zqk56#M=nq19R*IO%V-ly@-6lBs?5!TVZ>QYSV1n)5&*qAGZSeBG!y3cxd~JAw5eCz z20cY}K6@1E9IBnJl{N=j*x6(N0 z*p4mId8WJrHF0JXS3L`Ur(YT(Z!^8Hhy?3{t=%M~r|Zf7Oaj0kpCD>Z*%)UI~YQZQcQUWL_iEjAO%e15=3g(GHoABYi<-~KjS6{p77Xb@|$^_*MMg{?}qLy z)klejoRP{EP>OQ`t|8z;5^WOHZtS6Zg%)n4B#AD$VCh4v1w^r5li z=uWG(+D4_e4KXHxYF4P|XcD+VVNv7sfY!8cNo9|;Ag1CL(se#yw2^bL5)rjS_tUD* z`AJ2$B7bmAgY{&tS$OriMoiRsXDD}Fjr-~p)hql_n$CUV;ju;)w6=TY>7%S@hK?~| zUx&W;w{YiF#biJ0K#l7aP4mX1T>!FsqF_>+md&?W&5;EYqT>ix*VB372lU%}5B9() z(~@2K2aMY^!lslTFx)tJJ8yJc8ct1KEnHrHaT2m_0|PjHIK45RSe)t+KWeWf);-uY zr~mb7&^)X9Fkk&#QWV?x#}kvlZ(n5gK;c5}qhD|EzMVH2A-=CYpby(9nDS{q<}wp# zW*``kei;d@tqlk=tvn(6wbce*3_V_euz^pKyfk(L(e#g&sR0$=6@umT{DW7wc6vbr z|Azi#k^emw!~Fkm_z2m4PxRQj+WcKSKK)n2=iqz2RGPBcpojSu*yBRr8RIW*TOqxK z+tLR{gE3nN*TWv3qx_jpTml>3{flDN25AJx;mq7$9|Gj{_7B5Ft=nLHZf(-yll*PP zs$L>0ChZ@3oS0!EWsY;A_dc3&PD+~NlVae*kdU11kh35bkxQO5a@*}1K6)$6%-hkW zpH)!g%)tOH%V$YmjQ7DnorQ2a`$LK&1Ax_iv&fkj z8C#)N9&or=_PkoqtD|an2zh|0-WhQG#AbGwt_Nhbp*m?u@e9vfV#so&4j|I!{;M_0 zqw#iTvN>Azy%j=n4=tiNgWo`>2-voaRNL8D`jslN-VVTCS2=l~3r~F^Ip)!tz}IK- zGX7J5l~UCs;vXmOp>-@ZCLvCKcO0O_Feq~;Kb1*gY8L_p63yd<^tO2o(73)7*KrKb zpb737_}+~yocT&y`;E8t3A&)Z^y^YVWA>6S4BS6yJ`UcFkyxJuJQ1GrY^leff3lr7 z>fs5uG@AVRZ!5|9xSG5qtFIIc6!6lYWaF|aJBkRh#OggBjF?z&!mt}~uM7#_JOAH^KHjvBOk&`h3!)dJZ3>_vYtYbkn&1kynz1q6D~WdU02 z0Sx6*k~#Fq@pvXo9-E{dumN|=w|%Lh|$L8@Xs?8ItV;l-Xf<2qH(lAQ<+pkRB4fM60=}+o$H(hxRu| z84TW1eZ7Do8ogb9t0-hr5fmW1!&BPlTU$S4U_hnc{&c)f@(fO6)Hxf4Rb{Fol-h?` zUS1t<-Ix$~Z-JAG2N{cDt&0z+K#1&y!dCU;6Z|05`5S}c+0ktwiOV4YHMP2^kP&Sj zttQ#hj4X-ScGopfNmrLd%!e`iYdVxuzq`_)3y(hjNhrCJouH_#5j2l zU51Fbt>S@ZQ7RkocS0*yCSLmm^)@eehYNR!jk~-=*<6#wD%c7EaZwsC>aHLjCzT5!65q4)OqVD2JZpR#8D zglQsEZ(Aapu_(v4Lw&n$|Ao5D3vMJ^?}PQuDjAPsO82lj_Kh(T%w4VBKF~s7GZ_L9MNC4-)aQDE;AS+5Jt>3ty?YR_MLLm%TyD_~tK_Bgb zg9ed&=ajZ};9c3=&)m7lncRz9E#(ezwRO7w^ZczL2kJa}q`v$ydw%Mo$?V|^M92q@ z7Brjr1M_q49jo|jP$%Vv1_4PnvcBt0W;$0+wEocyTF5aa+z!DVXW}|quSap7;K$El zguHyG@u&08Fu_0I7q1p?AO>;K$j0(Q zdKVBN?jUhMU-&Ye{vjy~V)z@|8>vd5vGw%887K*%#yzc^QU#%PnjiMz?{_ zOF$4ypusZQ+bjpnhj;1M0h*!G;dn&mI^%EFQ1?eo^f6o zVjG4e^+i*2^M*1RRFo7#MR|8{lh>E?`E6BhINGWKztY!Q?8<;^gA9%PWG|JMHuDJK zjbKG8Acdlc=ZrK3ey8?z0NLI1#;Gwx|Cw83M{iGNz6Gj4>5$1# zyf|ITkOwIOv+Ef7s5@xJO(zkIIiUqI^7G-z7r5fXkHxUsYBAX%)X1l5Cianf$K;-Q ztDXhx=b6gZN67fpM{KZ;KZtotDi67;)tl6IHkCo{Jr0ikNHrpqqQT9ix*bo$d&EJD zS~2NgYc{l*x9FeVTuRjH&m(|y=GoMc<1}&)ZiW^Dmp*8ub{GZif`8osb`a16#i@Ug z0hH6-p*&lnq^58fXn_MYn~ZN<*F`7SmOkUYH&Kj0&cl|m3tH}OAZA*MXfI6E>#xr z0b`tA%qDB|ujCf0Hw8gLp}at6VxP<`e**@ZIelR06A?FV#Jv=p z13bFC0mKWI9uw!)A}Xa-Qmkf-5=9LqkqsUbeNrf8MGlp-)7*d?~d}#R9R!*5#2SDnlZL(R;EQ9oazrO8C|r9 z&RdfF0s(sg0uHlrJZ}H#r?$<{8xv^qXUg~S^AtJ^6}bV+M|W`NQWlcg+(H;oqTM{ZnS4A)YxqB1#x@B zff7JgmBSOr0X$Ujts`qEK;5e~+^883w1>Q;xSxjq(Lq=p7r85`>%?5xXe zW}lkoHXm+>CrbFhIf!p%+PNpXa`hhQ`@!3f6yQryaRc>@H^i-S)LYSCl@=!9-3s8P zoyExtf?2~l2|s~lnXEcLIJYT$f(@2t(tl__5!P(N*X0HDF;NH9-cNQDVZwRKHVEZs zDsoUPmOnj3kK<^zRp8acr49-5_}VS;fr?O7oJO)g0wXT84ubYJPNx+#o8z+B+Hpj_ zA#fS9_@>P*#Y1U>?Ub&R0S3ry!1a`ID$qvq^R%5%PL2vsS7+c;_Gg)8{8IZ$B+#a_ zX~d0iLT@wpGN`Py@gmFJNZ;L+$YC61QtrbkFvojzODD+yrEjU9;%eFy`p) z!ul$Y=kRDDlC^bsU|UcdM(?_VAAPqJcbd_ZN~)J9IGNddm?T=|OIvDA;p)#{<+Pd; zzOCX1fTMshYZKxJ(Uxs{p4fQF9R8+~ZUN=YtukJoJUuB+8|0JbO?pu4f%Iz#QT3jR zE@M2}B8uEzk% zjG~CL<<6lllWb&n`{SdHJ4sS%a6l7t4ZKwEXF-s6ywX7n^IKux5m?9F=GjMa zF@@SIXZ#JcG`&i)^EcNumJ$ZEByZ0rbkT?AdH135QRdA3BAIZt?Yz{n?jO&ZXdEl? z_8uxFI$)}oNuZCZTn1uK*$zgm!o_3k-Xo57&>*}gbdE~I`)+$UQBOZ6cwr2mTN(q< z%2xrUpktkc4vzjfDe#U|YLwOMOf z+RBuNjbzc82)g>@C>kfz-k`@=myQ=k@nbL|7uE|F@!UOpJqX2#4I^M$~|u#pMG zuzli*EJjm{$yGdD9St1=VwlRL#E#=SV_LR6w95%NM#YG1#0eJw@s7eVX%!uMUYlo- zT>ro|0RD*N?#)U5c*gvc9NF^_O2)J)J_yTIEKVQeEkTxSrQW}8E^6EL=PrCZVVF{( zalbthO~!-B<|iy&u4PM}c{S8kep#Ra)=Aq#wm^q*lLUS77bLwSaJB2eJb8QSmgmNK z>f62sa?EDg^h^8z16;oBu(uuS^Go!fLs6522jS9cC|`}pqNr7?T6N_QWm z>E%g53!K2Vm+r)lYhrXriG8RQb?ZbiAbi!IHEVau0$5p(E&mnMWy)xDWNL8&OaX_e zQUf1X1C0P_s#>#osWROVS`BR$gf?|PD6*3~@>Ww~Eu%UQ`GXTmo z!fj_Qtd=X2n06|e*kvcZTj&5}qhLIqCfUWMx4Wrf&)8lgbG5CjQTIY*VBQsT-vgjp z^4T+IU!2J>mNy-QMrxw86SZw1$dViMBd2~nSG|Jug3ZN*4~1-q>JMbj^d;(Q!(I^& zxRkz1X8u7ymZ8FrsX#CVfeUkZ$a)v@B@`PL`j7r%&L>1JYv-(*NC-laD$pm0$2nNu z3W4OU{t0sp4EV=sqbC>0Y|K7Wxs}Qz_EutEdDcZ!yU1@!kQ0i|kv_rXBWzq<;@cNmb8} zS2xgXCpjL#%w@MmK|JAkrsnA_yR72Cve^Xgpekk>O+<_$EXd; z8&BefV3CtL?#FNFI6M5^w;y{^Br4rO_6>amLxE7}KBuYMlP)s614naC!psEC6I%(p zUMybEU_Z{yab6GzU0?CVpYT+BKUHZwT;*Tk3_cZnXmo--`xiL>{uV~Q24{aZ{J!5k zQ72k0fn&DQ_M|)g@&$3_jbphgpJA+i_Ow^+F!P$vgMa_}hlW~LY36ayx97nc^uGrY zz>@#$%>Mm+{ePvlqUKgk#(&$ERiOQ6TlVCynuvzxw-X<#H+<|D{qJU0RhEGlW{B(i2hj7Q49MAVtc3i=)vu5%J?bcf^cp5h|S`0v4*6j2buM5}R_g7ph z9s3@D84C_u$*PL%5H@3_7ks}L2C5zVU#WM7s^Lux|7SXBqal5aJ3CE#~bghmz z1d{K)YAj9@OUE=BGE`!=iUkCBQrTN}oLhPnH>Gp9Z*mgXz1Xo3g|H7ry>^(vE2;b2 zADfFddTX3ad;W*u6JWx!D7WS57I`6U4>es%(IVJAKkuqIV3uWOmNn zmP-)i<{HuZ$Tke~bsaR&?x9R}TNSy5hmF;7#s&5(kC?n^1aR6!Wxc93=1clc(lcgx z_uz=bg<5tJM$++B;h3>6P%6~A$NRl1NVs$xESQ<7$Q-CQ=JlJ0Wo2$pD3Co6zjjyV zJRYb$AzlB>kwVJ$uk6}4qCO3HAzAOF*s)z8zIgNVYH4(e4n3qRL(s znqW+KdnZB;jDdc)AkN8no4KCc_K}^!tErSjO#G2*YAkWRBi0F_+Zir7^M;X>tSSek zK4T57XzwSmz?4ASN;8>MZo?t1S|L8y8Iz5PI|cd!K{_<>3{`>PM}ypB)wX=-UIcwQ zeR&;*`e3*sZ`iUtW+-|hh@olA&hEjT+3X|s&_KzZ+?6H6=U04SHA>yh*ZECqFD$Ve zEFNxv_S>XfEaoOUKJD-yCiE?SedD9LDKA6R%!>}~nZk6!K+8h&Ro;pbAF>U+oRj z`g=rt z0PRSpF+sLtXE=3v=NYtXw@^Z`{V(mA*A zkyrz^r|E6f!SxC#VlqY2X?NuHktNLD-9_}uoET!bSfP_6$6m_c#YYHmLW8gP#ijE(}m zCB}rei39fkkXi1YGc(pKPmsqn!s?GWX(c(zQ=FBhb?-Yq*E ze6pGFXW4N5b_CA9T=yF_a?#hnwfXR%!Ah&x*3jsrf&FmOx4$x-AKhBpXgOO6!33K0 z4ML2&ju-?Osg(POBWUp6lyz4GrH1cNXALgq(#Ow|4K!ez7mxQif?~lV^`eg+V*Sz} zw>buLC7(FfI*+ciS_mdwWKT^%TQLlf`FTrNgE1j!viIVBM~rCeL@t(R_s(C{`&=)Mm#V#V*D)i!j&Mi9IaT>#S90 zqZTlS&4v_hY8dH@EINlac0&ySB@vRXO%&x+d&Xk-6f*+^W*vCcXyD)uh{dFr@ahyJ z7XdE37Cpl2N^;#3>PiwT13_#5nZ=jR@6hQ~uhT!}UApl|`*+Z*e?G?Eq1aV&#B!fC zniAON`t|+G8fd^HJJ<}Ki`g7lU;PBX0^b`7?>2yrjL899!yc0|sf`0)LgZQT#??-n z%Hi)WW8syt7uyaS{w5{uW|l#UCa2-e3x$u*D9xX8;0ip-gZE zrXr6+n+ptQFcY^T1^&bFF69!Yh30uK6#n!r_c6_3!;6F7(=4>va1U+|PYhZTpc#CP z&0XQOVS&Y|(IGscxfdJW59XloMETM@n+p|Z2C;-BfJqcog299J<@6Z&oYuyvGqrln zc4<(zBCe_D+pqKjuQ~~C#&wP7feWLR)A=byfG$kMtP?!M^@Ft9Ni|tTyB8>txb-O&?2Iyr%w~)I zNJnL5YMVm~gFS9_sU2=X40t$}RS3^9L*}^IbcpE!9ZEGo*&JFqT_PlKwja9%#BuJu zC&)b_m1STv#VQdu<_mB(=*_hVMj$>nF#Hk$$r}bEHN^l=67|-Ei?EYXr;%siN~@CwO3PZ5TNC&y&+HL)$I208_dAh)${z^) zKHt|L9fb0BT{A_bAEaLYqvGtV4Q7#btSR^iR7ouy0HtK0Yuuq*x@S9B1q+?R)FX?tIB~>?}^TA6usUoJDzdP8sB!#$>3oudlNviPEQ?<{B zd)_oB#}Rt?nhE7kYTu9<1%0Rfvb;*+B6}xgm2?u#&%Lt}>Dg9I$Fn>HDf@aB0DogL zO^Dvw{M($<9jeZYRA^ugpsh6pg(30i*k=s#>pE3=b22{z!04f8#SKUe@XrnN20ywP zy{#=XO{G90!NTvoh`;3J)2sa!)r@K`?pJ*Wg!n!1E2>8?rrGzE%H1#nCG$NRA0Bmh zFp;B{4Z=#<0lzqvY+Nw2A?F0sW^&OZ_YPOeqmQ)iV$9p3_l*q`lDo$lPg;SfOeE>o zE0B#se#HWmPrnW`c0i(+GI1{nWUQBjgLntMbDk(|U>CH(TO@J2Zt#f$24NSBd=<8Z<$3hL%q=krub>Ds%Dj}k zt0aA~KaqSDvDpOF>muI%;NYTv@BotY?Zuq!@IkC2C@TdG(^nVGBCveFnTLzqQV~EB?vG%=)*(91y-z^DLi9C#0j%#~=CLkg7vYW7r=o=`A3ezxx zv|azsSpS8et(Lg47BbcKL;hGu6Gp?wY5Bnufs?Iz2V(6g3A5M+uVK~XyYZa>Gx8%I zPj?T_lk<0Zc5?z8o5mm@_Qi=qTxGUBMQ?BZ#k7v;+K{*fYI0R`Yus_++HT3SH7+=P zNtE6B!Fd?6rTp3WiQ!h?5KnbTP)uutvda9U-@8~!iYXcJLpX*j8*a)>FOo+z(i77e zKQHFKnbN@BtY)q~w6>8Y|Dkbp8|iPjUCo>GLolbX-rok-KaVCe<%IGM6~$3tXZ>7P zjJi<3|0a}FixHw3woyf!{S?A~JZ%cj2vb{(yoVT*_}B$O4>Zs_2k640^mZ>bZq zs!sT4FcX}mDM9owhLbrq>RB>V2dww^7+OY|Dw&}*$#ESmdTbccZ73!h%Uw9S%9=>h zdbz>u4oogN!;#>*r%1vmS_VMCqV(8IdFfk-C^PK5Mkhiv{wN39=2zH7otGc>v+b1x zs2mvL$y}UzB7n$}xn*UOt~OJ(e_GE?O@G1M^}ts`>;V(bxDv|H1_cYxK&qBaDO2CK z`L&Ts<7jSDYkiSB-VS|?7VbT2J($6hA-aHSX`9aTr}ygj^qoqDc7(M^2_$nRS4=9) z3QkM(^d9rVu6c|bO|oIp$@**LEvqhE$Oc`KUI=f?(jRywqskIG0nC!3@(j^rgEMin z3Yx>_c{%wk1Q*a~e}sVKJ+Ues(EEmp7s^)ajjK4t3PSb`g!9C8m>oxs7DZm5L8@YO z-qEjdTe(}!Pu)+~Plg_<-)KDrdo-J!biaL19lbR>ffc8o~E%@!7k`lu*C3-C2BWw3unS*lZ>q?h^SxCT=~Y*6a0Fk66t{$3S>Ab5$><+}kP zPK5N!=B*+Fx3eUdWu|3%!e&J^LkQs`!vkXKMCyakGi}(Xf-Ub;ZUlXE==7NlW&xY^ zfAJ=5j&P6+(LdxSVgrkQjvB+QOlCFGBtLFI7^=^pqliWS$lmh4dA>3%_vVq+y};ZiN@YHe5l z)HU>uPd|0*C})ekBLEVNX%eo}u77Kl0$h|0xbNGtxl;_i+l%^>{|Y?(e&%b8?~sii zf7|bwjE!=awp@Y7vZrVT+y;`7y5@6ENGbWnnJ*9gipGPzaR$`5Z~N=7xMuO9mni=| ze-#h=?{RJSf6!@vZvpXNxxcjW_YAD<-vSZf|0*FqeJB4z-+{cUzVX#v=61gV`ovt#-iC|K`)bcw=ycmX!>l=* z&r__DFSu@&q>ijz^_={pV2`j`hExw1%W>4Y#xX2jC$||?THA!SF8Xy-HH#5nBC(*0 z*{srJ8cZyb-jo$tWEa&socQs2nY>-e`%4+r7`$@YlS3CEIWwIlQZll|G+N;|EF?h2 zgqZQ|IA}K*y(Hfz89Cy15JSL$gJtT`vTfgXWH8H}#VxzLnp-!!TNqoKS$$fhZHAe^ z4uH%x&j79+jAz!?gP3o=#0kG;$8Kp2YlNKIK0y6#I&e#(Kr9{)h+MluR!Pww6 z9HDqayd^c-itt)QyEC;kASWyrF7QuI0MA6elIT0VxiX)ad7jyIXdi*`%QZUE zWJq)Ol_xvq4i}wRcnoV;6Z~gZ-FDXf3bsZ?{Zb~?(}mmw!>NJr z$ygo|;fbfM-d0gVd3Q3ky3*hLFK9J0)f)-LJHrPVCUxkX)gzf3SW-B@lMLn{w**g2 z3#|-~lW+aHV$3u%Jt6B=ND#$cj^HsTY>UUMVrVl)uBeNAWw>!7@>o8>D&wDCD7XPH zemBzM53t^OcBF)95JC??k}iDfR9rL**h-u?rv^UN`}(b8-dIKfp3E7ccq-JPIoaTC zxQSwIoE5?5Q$||53CAIn>Kw)|&6Ao6d`lLu8FH;cvn{rWNs4kc+Ie;m*w~=-9BAw~ z5L4WK9r8&a!{G8q7ZN{S0dd&{NwCL&B_RwTUGG+|p3@8=g5_=YO-T*rR!Yl+H*<%3 zhK^?zm8i+}+P(!`|HMCOD4C-eXjiX$FRNMH}q#~tsLwsY;MOcUe`aLC=E)aPP7!G?kT2UL9A zv!ACM=8L)`+h{@cgcMWRethOa4j8;{hes3KDl41ojPVIghT0P%O?IiWH)GIm!5U}N=R`4${y}vtp4{&9@B}=*Yh;sCR zf%j_MpUm>{k6>AG$rJ?lFPK*~S#)&`XMjXjljPR3O5@I*@S=evR246bC?j4cJa*E% z<8VdL+vfht{fPq;G&`Sse`QNYv;F$6^UK}(GrLn;UBk*p1zddFB`leUCbB=A=u|3PV+piN~pb`0_jM! zUU;qayC56WRg|o?RzGyU#s==F$UXad{)rI2sT!)5eKTO%X#aj-lK&53ivJ6oTiV&_ zZ_@y&f9WRuC0Nm<_KklDqyIw@T*Kn9G@=22P^1|PgeNqV8ecH3RWRZEyd*IEWgOF@ zJ|`{>3{)l_N>z=p2TQm<+bA(W6}cViW8#S(b2(Lvlw4nD`nms{Gn~DS*`h)-XL}njUR^n3U5efKHyL|2+)br%appEd~eaPN2p=a^_bT&P#P4 z^H*7;K=XaM1u=SES+`gM(u3THKd8{)ttO8Ma4?LDN!ljTz}(L*esx0b#(xToitbEm zfOE_ju4=waGCVFYIM^OIaM#Nk;&xb~(u|jx>C>fwxebK+R^`Nrje{xr-9f@K;K{^U z9^ezQkc^-AzhBxB?$;g-8Oadtaqhv}`_B{I3Svhv*~j4)_vAjvX@#aZPf!4Vx?-GqW6H;SQ|4bV%yJyWO;UZFRnR$}w1 z8p^fbLEd1eVu{@e=!C!|0`3>FVMAwV1OjOZnv#eD4u6Te+4K0Q1 zBi;^hP*^b~X{4nkpf9P~wxwXUV+BX*o!HfZ=rs;XbtF@n$if6%80HjTTW$cTWD5f- z9EU6$PH09qYh}0wwVAjec63q#S~^{1Vko_4ed1S%jZ&`)60%MA@rO)Z7dg|V| zOhnqa8RJBrl*6lmQJ7lA?6oGxkb**{g13H{+BEw)0rZZA@gfJ|e1kR3grNnegpKW{ zZ=4d=Y0E^a$;RVEO9c$7B((#>9&cM!^n8A@WwSB~B62z)fLM$ocf@^u5`ekH zEVamGC$lBY)DJC@FR?QB>-vZ75s49ho%unLhA*g;G;uX9ivm(k;wxyiTPF4O+acfTOl8loNqnVtmr@Mcy)1@o=$7!lz^~BFxe`M= zHnGODXiDX2peNw#8y5zL7@x^#um2{`AOC|q2LSocDIk{rJ*Xik{dcvao9~*@U;5=2 z-)m9)w&Vak`p`AFSIBie@Fi}pBb!IwNpA*EZwq>hl{r#;Bct#vo5GPE`LgQh@6pCn zkd;?(7!rz-*Xe8QQbEQMNKnFtzzL3fth9V-MiiZ8(kM>(5MxOTXeMg1aM(**U2I*+u!+R3@On0tPz{Y%umsmF?ad9e7GxJIj{M&5rr5 zRxx&L=DiLoHu$Ths?CO9_kZS-c7o=4+LHJJI;&0mGv+J#f9|G39_%nZP~`-yTLbV0 zJW@dG;?g7lMf1;MnSoxz@7c7&uA-0=cK``p4n>P;fh%MGPy&ZjTST_#P!=;=rsa@t zi)s;?`e4@T*#KNgPRQxgRZCyjieR1p#XNc~=PV}8q&~|Rrx8m32ilmLq=Z~A{7Bd9 zy~Z>S(oyDzb-oYpKQF`A$FeV?q*$vfcrURzfzx<3u(hz&mq$GkO}pMp#hea(4F5cI+wo*= zM*3aA6B|YITEAvhcr3fMe}QH}=QW|5Xx6dAbDXjoP79c`FMk54L*4Do9days9MwcT zne$wu8>l%WyhT!)Q54T{AjuAX-<~xj*=xB9qS2J3xr?Zx01a9PAy-kH=;0A90JaUz zhS$4vNk)?l1??6n?^1m`!)6sWU4P1}?&NsW2L{=o2R(mhdFnPO;j?4rn%}}Knm4;6 ztxieojE1csReH~_RPBr78FJ@N&}10KxfAR>*rb+5^E7!HYdXiKG9XDFBBsg34^$l* zp5I!1V$FomsRM9&a-)#)Vx+5yYA zt;Gn0(kU8~hd!=ZWs7C~IXUITH16ArEuLfoXpqz>S?ub7UP2!c;-m z>jGzm<}k8_nK+dGCsK*EI54nlOfFW@&L=N~-Kn<)2}?aSzAIq=Hmq~bkbmS(H~l{1 zPvkx!Jx)HX_lX+~wGirLJ?srSOgRhvXsbI+o(od=GM?R3K4B4?2A}ZjDX^f=4<8nV z{QzM;;5Bo5S6et2HkaEY?T%$zZN>Pae|j2nlzspce7oV{{@0+wUqWWD!2cO(i2wE_ z{maVm|J@(w=sTeNC7ZVMz5e%S;8OdayvW~w2LF7*Ut|2Dwhq?%PT$PP|EF>&!*?JP z`~Lm)%uB3)3_$Skf9iMAf>hJYB|DlUYh$XbpcKSYi!;vl(}P@HU4$d1XeDU z&_ta}sx+sIA$!iSf@@s87Vb!Y`&@rKPr8iQe_;3eGeP^1?me?UJx<|_us9dkV{Le^ z47JC!czG=Y0$_dDrw+xP2_4 z6Zajr(sV6vZ8Ce|;7j?0Om5^MFifTlTL+8_=`wR7$Ls%Sxnb>mIL9*IRQEL=c&@Wl zT+FhWVmvRk!N?8?#piR~Wc7-D)dLIq1D#b&D7M+ zO3M*aJXKYSeOIse23jtjgP_UXkRJNG?C4hEd*I*(z{%Y(umfY{Uq*H~A}>M3`W!(a zGvObGHf>i@OqZ9BRFd_adCLQ`oTQ*Flj0iIqtfbTqUw%@>SS$xzq++(gppH3xOkne zzfJDlZH}K!&ZDkjuGf&wL@LF!&Gv7;PhMOvo7T{1eb0#GZvhPYdOJ?q>*sApYHPNs zJ47wDtuNPUr35=|zMrQucs#Tnt?Q8Wfbj;qJt`D7b;|LtMRiUd+aW0E59d zj}e#S^=qNq#rq~Qz`RoDh#YxEzU#|(l%DkAI(*XEV$(naMrMB=6}4ARQyPCD@j>Z; ze3%76XUZS#YNc0nTdvbU)~z&o&PsE^<+!Vb0`GhH`378LbWlB*W`Al0<1w>Fk3m`61Cr^c;-FqfZf2VZ#81NU-U0tP+-|2X5H zU(QT(0q@AxX9Gig21IzC86Ecr?){=6qv^!@4gCd!vJD!ZGjLDzvJ74!r3s$;(~4k_ zn8p;k!+Br;3DbHHo>-s=!50Bs{v}V)lSoU`|0q^e`vBild@u|GJdoiI-~yk&G3OSy zZ_eK<$oD7J2NCL$c@~wYbp0og4aQ>@60x1E0Y0{Ys(9ilJ8>OAsNhJwZzK7fQI_1> zsrrg_lSR`hBSYb+qzqBw4JKIA>vmawZ;fLpgtf+SWbB0Yf(1bMVEb+Ii{ww)^>yC^ zKqbaTPNSS)71UJxoRg-xQ@xHl|GdSDeO4tKt)+reB#B1<>5(0pl~b3-+wv$@I{z19>g;DSDbP7D!f*QH);%l#|`r zD%$iIt*_N$AduD)N5eECAh3-y5WcanVETe9EP75571=kv1{Fh=5)!Xgd|U9CP+LwF=%-hn#&cwZC=2$oV867_dd zQgV(m8_cy?a$smK$vdx{s~N7U7U))g(44Bnyn+4W>=lYmkT?iDFc{0haeY;9jjBvx zH~FsPipiexyFrDXAnT0OM1Op&dG3R%Q%AG=z= zHRGJ6A_BEGWxiJGeyA6((63AzWxzW%*x6nP@J$}Galx4@IeagM!zn_|fMJ!6h<;^N z-uFZDKo|0l1hr3*c$AxQ6SF0@jW7N=wiL|(SV;ZkaxkA-XllT<-h@Llimx;rMD%V2 zf{g=v$?}DV^MERnrHH>$MeS4{_f4Agg{`ko6D!IMYsmFF0wMK+%KVO<-a?2>b2WgI z;p?x}lztYw1$@77->BG5{&#lZ7A~iuseyFwit`sWkkFh8GK$_1iXoEMqiX?pi;<5V zde2E$!jq#xSEpZlsM}_(&}GNuZlW&aqonF>G?LRhS{twPlf@D8gEC@rA)ko(BwXOpp`v#cX zv(BM#jJHa0kl2O=adFqCs(WoCte+wUOk=~MuYu-)6s7p-t9c8pjEu2Zs2u6+0IHWk zF^G>^1{5>7@|#2%8yq2|avwXOEc9+UJFoD3V5b7?lNd*@FR6jf5WmKxl4u-^>j4mO zXeb8;$jdpRgJ7|&(Q#?`QtCEXdEndMksnL^ujiuN;zT4iNGOTI?_TxrX&;DhwYyO^ z&V!=ESv1P-i*EqU`xKVE^}?38aqC*BTp@|$p>x+QwUlQ@QPNnqR174A)B`pa_-C16lz z=;90dJf~_SYC-ks0{m{?=|Yjb#z`JS3>qS1JmA(C%2Oj1Ix{hL8aUo0vQ{zd-UQPS zdXC%)WLAEBaADObXyQDdto@9+@CTR$ObcQjzmC`;@#Bu1XF9<%a?*{J8Ab?^Du}C8 zDoe!Ay+hBG0ktouj~$<14;x`Y8-}=W-soH!Qtjgro#Vf~9_KFIQIm?VRA42uae4@v z+TleJcpX$G-9MnQ2<4ep=s@Uqu@$KYRHDt4tQ!qA%^eF{(;sm`x;{$AP&hGB+4W&&P z9o5Me9<4m@W|PV$7RL^NI{hN;T&J#6tTh5GJbt*#^{||lEZ&OCGsaxeoEh970u4H*Q?P|nkExEEjV#s#gDAe}5b~m3tD?ZmQa)TR5?2qdiq2d|u zF7yp=soW@N&J95o>GM4fHimz?dMm$p;UkVx_ynyDYZ7gWQ4nd@3%e}`%fNW!{Kb;l zyz_o>Tb5;I1I4da(G2}I1CIm11K6N_2M_Uy=OIMr0|m3fK8n|Dev=AoCDFvQCxe7- zDC=IJ3l3dUGB)b}L)tq=X|`qCqQML!!x=U*Y}?4NZQHh$VcWKCXV|uF$BnG2Q+4*f zyH36HZfjp_^WPY2eQVA>2m2sS_AemMRacBzr-S)nk~3)%ITy49g47b=ZzEV2`TKGPW8~OB`wWyUT7)Wl!x^d@z2}o=AuIN zFy0}BMsiUBimTN<50Q?Bs-iIEam7} zH+!u0%IFj5yG`@^Fk{)(LZT5L*EBB`r7BI*u;ebOlyYh=E1wES9-(FR7UayjZ|1EF$x!~HwV@>LUT2NfCs zfS>ojd+0BJa(@1EnC0)T$>&6$&-v|o1`409(7*LePCh-7-(i;DUQxO1FUeIJ_zr?A z*qKzA+2Hm9%&1LofqclmpH1@XeH8P7EG)3w!XikKn9`Y9l~uU#;PHFN#8!QTCq$`C zMTx319ODlz`=eutBURLHkbHKyx-$#6kPrEY%`-MA5>h{;j{Iho!3ORHm@gjc5zUC> zBvT2Effcsv*uQS*y5yM09Sy^FRl@u7n?I`}N5 zh2_Jt(9qK*LY!POt)Ys|(9N}tQe5f5WEf9poeTjcCrCGHD}(g>H39tooyt1c>5=D! z9u`1rWC8x-3PKCOYe&vTW@FN=i|dIlr*O5Q+NQ5bI;c6EejiE_w@s!>U9owUxJuX^ zd3MqTYksO}jz>?$TQI4JBM=R4`6=DW^MK#87MVNjWLwxqGy)BY*}KxqaUVH|X9^4U zvIAcOMXBo&1?Tc>4gZOAIyD^w9q1HoF=>Ayf}?RkCb`Kw((5no^vw&V$5xBiDQV`S z7ezt)_=pZWxUO(G)sH19-{_%a*&}n6j2t;wEtJ&aw>LQGqyDI&YQK-Ip+K_t%)$h6 ztnHKO@rUyK`d{&mZZ5W^i2@AoK8h!oEpWGgZ}%5Whi@JD4E1n+)<*o@$NlX^*B1QI z$3^__UbL-&ot1;Fp21%`&ApU==NfPSgVTJS`$vHUe=ShwlhoG2z|QWI%G{31#lrlr zrX(hj%A0U~?!%!^1-}&6Br$~lR#7n^RE-dVhJY`vBtr!xSTf7R++ONhz1eMU=5}<> zCTeGJ+F&9GLI@gP5a54XqD1s%24-^)dAtosYWiZV>}&~Pwp8}DmECPTE%So?U@Z7? zF;ml?z(#J8tzID(pXVY&KQDsfDw#{$<@(aOg*T5Mz6rI7yxG#bJ^zTh8ZH zYAMRn0#j|)0;Y3Co5r$vkothKXDwHqt5j11=is>sriG7LQfin`p;x&WhhXr zZjpf-6|YN$AkMK$6I@Hk<`u|q$Jg<*b35kUIm0Q+nXupGP^KC-cd*|;WtryaiSuyc z^s_9K-eTM`0U$;D=AXw@N#5<@ zroxB>{r;t+`7j#M5p`5uC`gp=7BMu5KX`YTNg$^o2$-!YEIqF`Yrmm!P6^#p(~Lq- zT0&LC_v|k14;T=gAGi;k+fBjoA)&kzf%Pd1rmWm^*fXMf_whQ0w8RXlnSPEB82af*We}K?fLFu{) z2)!ACF-^jT?VGAvI06+rQc^v5UheCGdTXV6wpG-YYYc@RXF4pSM=P~rgwp%cpU}FN z2)wp!|Ckn=GAY}6;^?$U;PeGUd^w;MVtd;X?xxVOs7omFNcqg1Cg^c?YS(RM{Yx=g za(a3)I*u^cNX>E8Wn{*KmA_`y+H4@)bB7D>+Y zEPTCCyM#IhL;F*!EvFzhi51!%XU9WA6DO4|WXnaAKD%*5C(#9IElKMg8MCFV2Ka!h zmv2JSQ2fxWeZ#t6Ex_xPq@Lu1(ABH!ADgl|W{NM+IcBm;6a%QFp&9NtGs^ZUej1I@ zOwlBXpWETE7$mZ15RYU$XOj#BB!nW5?p4?ApMt#Rg=oX(9Tnxla=RT07X+|P>9(_> z&i}xFzGjoazWD~u=%%dD7zmwWh z=>;K?*2e9!@vZr0>vrrm-OUJN^keGaTzTTK9k9rcoS_EPs2d6m5#l}#pS3GSjhaO_ z08AEF(?4O9R4P08)<$F$e+q)7Q}-~4YaDc~KhTY@7GtkZICb@fqdG<}W?FnYpXk8q z_dOkAA+neL39SHsC_9TR{UaJ;{WTiuSy>vI82vjOJY)Pj4t9UyV1)9AIEE40hsMyy zB~_1czjP}#G#^>RIC8Nv+1g?izLD+Jq&Ss&jOjN&!g1AtF%?pba7(|l!nc~D;qZYz zuPu*{T#t-{_R%#rR)c{3b+`3{mqs^ilKvd_Mw7X|G&L$D=HmttN1eopJ-&9d}3Kd)-Q&dDLj{>1;qY~)~gPqTepbO+as(BYjqc0ENBkxA;&yD)qV>HTDG44HZ>Yq#M&e?e0y1;hT z7lvEaq<8dW`FZYEe{6G-Yn3V0Zl8}ysAu+rcvQ>~Ah{`pmB&>i9yMX8$W*13d}unH z7y$bKCNGzU!erlwPoQLY)G~eCUBAu*Jmoh()ssl!R8UfnalYHK{^%hNcoqD_Qpdew z)1d}eO1ER_q5@}u`K7&OS=tA_RaN^$9ks270_h(vL_sx`u)E32(He6Iqml8o%sRnm zoXVQ;O&5L#&88(9J#kptjI*AmJvPJQpbgez9V~VnQd#oiSm5P2kGEZk4A?~;E>yb! z-cWc_{>uasOGI3ECFx6-FhgfCN>YI}wKeOAQ7qxgzl{}>Q>hWX47|UR# zo1}%>HzhRWY6aDl$D8H>U&Fc>v9a_rXG7GOl@k2$Dmz-?S@%(L^ZBMdEx6jmRQMGB zGG7N5|0a#MkNZOL7S-H+8_9;o3Q`uys>DFfg~*4NZg?o=@|AQp%oQnJCy1@j-WpPm zoSI-ZUBJ`@A_Z3Fr4am%Y^MIn3H~~YA4bP1!vHMqs}&ZevNo_(OfEs-uz{=FrR&l~u?q`z6rQPsyDn z8xF$&*r}azVN`2_8vmC!B&S7NX>T13pfIuT=>T}-t{^6mk^PP|=_29iw)C@*Urv0a zd_#rHlBBo8ppGdCgjBm^*DGy_0=VEVH9|h#O7U{ETJ$T%+WlDS*R&1=WA`Mn``mMw z7ZFV27h-??0qaX2jNFr{tY`qM-i#zmOcH%b8Uq2+ae(G?s!c;z;gc~fIst}~qoVeH zo!R{X9ao-^XGP{lT9FBV+)jyz*9Jp@1uJW$5E}_=H1x&j@dW6669N>o_bS3}WACu8 zi2FnUW{Yo;fenVUjXLBE+7Z=B>BnM;y`R(@A3B}%+8(pL6)G^iQo2x4snuvUP~n|^ za$`m=RCAeH&TNy-*evun(De!|^cPm^6(&u;^_;_P3=Jm)Q_{io_!H?jAX z>by{yX0^rSUKngXCoxLQkJRbi%*RauRTvJktz7B1>2G^1X*QZ}spTg%wq4fCPpDDj zL#j5TUsN5XX;idmrXbA^vY#vxYOOBSw9(&C}`ZN=25539tR7U;UM?%yv-00hCWlo(WryD7_X??tyMe`iZbyn2|BSRWva zG;j*+Q*$U|c-~F{%~u{^ctwDsB~=bLiodZmsf*M#J}^*$pz6&W1aiqMBbY;&~QcXoPO+opx!#UdYAy0{9~nO8-td9c;psl`Dj(8u`QKh z)?|P!@)Cw~W4b0(mK&)pum&EQX8BgFj)2*OgC`QM3Hf3j_Q%kRSIZW+=PTInD^jV4 ztF!4dhd2Mv+3LS1W90qmiX{FwSLENw#VGau&Mx+EeFkKvzu%Q!pR{5T3M-N;JV@@s z+c+q~eC0?nd~+qCIc;@6-~4*~5G(lz2P4f1vcSm_r%{Lyz>$&b1?z6XR-+~v01r?d zKZ@+;$A5*W0@W-S{hSz2OV%Jsdc=2EiFNoI%x*)Snlmb(#re3cX|EsK-k@c9vVJY= z8#0kY&@yC6I|jCm@(nPS5!y>{0M%l)L=PpK$+z8^Oa-bI_(~i*j4FrI#n**!djl1C zihuzPuc0k(zAZ*U;G)Vh{;RY~Jj~Q!yN?V#KPzaf`aGrHujx^BP_$C(LUr4(TpA8ocU1YdIcw+b9Qv6TY%0L3{@qo`id+$b8 z9q#Z4b+^&`p8f3sl_)UYs-Ax?Efw7mf@*`_ioo@P>%qmDT@$KHGK;s2u0gxy7H_pA z=x-VGub@*~vzd~r;>c}pn76$_%4ApkfS-7men+>0qYtl%p}1IVk(tzhZjUj#CY*u7 zUd~)dFDf`kY7Q!)YJ@(gC`rX-2Ff=dle02Ve#D1NHMCXTw9%xoN=CD5(o0Q6UM(O} z^Pu7)BP!YT&$eYsrbWX@aTT!5!Pjl7Fjp-NL6tg`QkQW1vi}NvsPW16AaNcUA&3S{ zxc-&CXO#H1kB5LqE~msb&Xq!qu$;qJ_=|3lh0Jyx$1&@?s;QqU=Xh)&L74 z>UJp$5n={`bwNd8GDPVe5@O3}dtnhd9#eUQv7~3#(CwJq*sJ{Kq>$O>$mJ^L zA(ozd**zd4QMZiSJiH!~Wr6LjxQH0FDl7sawp3;(XIN*Cr|5P_Im5iMs>6Qy>ZE-) z*Jj;obJcdnpsHNh;Ev^NEI#8VxIyL`Cu2cdo?RFmU`*#aKtYUY8`MfSv(^^9__Cbs z+Cz?+2;1RlU2`nU-5Qq_23z<$gzsK{%l6z_fMlUYGjY8&FRKh^YnYfcmY}`Z#zpiU zk}uxd8kl}u#epGeY(*k>#=e|-c$R7X4sk!f53~vmA0zJMifJ5;+%%m1vbS{i9BY7c z^RT(NB$GK9yPl?EwyC*EI{jFhB8U35AZJlD0U%e(p)R+X!uANs(SB(*r9$ zKJF2uELjK4ElAX{N-D82$c_fJjSs7Qu~rCEPdWIN`uEX(qaa~2`m7;&_@u-CR{~w? zPpmEf#`-n*&Cv31PxSm}U&ZezK-uT|OI6%%b>M49;r9=nFs?pZ{6R6xRC%glT7_|1 z602XjMov0FXwCppF_JNuQ#E}WRKrBg?!ic8$8S~Gh7u}p9|239Rh_upcre->UmS~D zW%R3A*696QZWrDhfHP;`i{ICgZO+_(VWv3k2e|01r^wyZvX)O>JRU!)&a-{f`nK_W zX2n&U?BgO>1Ghtdmr}T|5o55uBOfP8)1g@TE22_nXSS^X2c1^5+UL-|_2sTaKkwbpmk8 z7HEj(?9BdC3O~lH`tz~b!wq3f{ct?qS;Uw37+7@bnO&Ueb%u>%R#790OyJ`2v1=8s zLGokQf{&x*bqz9mOauPu*imfJoB2bybQFtY2S>-ky8O12s5p8_o~6I<>|IUgbc zT6am%5{-C6*9cA5WKbhxrifz*{T(ZNk2$1t?@8KpBLZIu^iEaHxwrBbl=$=7q3$B)%?y;N~T%G*et-K>zkeef?E<`E{fFP;KR%L8)^%)r-|=ZbR*^ z)7)*Lp|kGnz~yBl$#VGk!*~Uw;Vs$X=k>i(L}l5gAr;F8ixp^T^QP5PsEGBTbbc>1Jwp}oLJ^|fdnLb#1+MvDcLVG zC0L~`gq%{8k|*9JG*j8k^n2Lc5-c}zB|pmas!s-HawFXo^BI!Q>dpbp8;j>&Prn0t zJIgSh(yG8jVFvI`xcMg^`K0dMn2B|V-qqks40-X_f|?hBvcAN*Tt7ywmBhJN#kdr1 zJ%}2vI*qMC25d%#Zwu6p{%j4|2uFB~RrsuyqaOR5%Sc&|#sggG^xjj}cLg%h1O$cT z9#Gn-?Ru$FI!a+;FF2Wk+_*M`Z+1ZpjAy+`rKCbimbMg$)=D#TA3Joln1bDFs8_x? zT+1*E^zMX#A-Vw8yE2fMZR^*hGhsv5!bwDhv+N{?F4f@UJBJ~Me&*Ox#ut3IrWn?> zL2N7v6ATO&c?lmC*+?D`1l-d_N|4KcatU|%ao461ZSVy@KoD!cKnJ(ijfPk1(a1ls zJYC9hleYbK9q2NEZ(V*Q$U&#B4bAntUO9c}s?W%f>N$UdO!mYOP`$CRDS_ zG<$}a>O4(EahsJiIRlw;%iRu zQq}^tcc(G(_(&W9s1)QZb;~L3yfszzw2v{FJ!lpu*|Oq1aAgD;LhgoHheiDmxhhxx zF>+AB9y2sMiR30+g4B1=HcDN2rK5|S#Xyl0$BHHcml z_mlEtg*;Y#3Q1=Kk+|-jwF4$HcXa2DWsA2A7 z0yBGPGhnBwNaT?A_pG<@A3d?p;B3{#Au7qazK$uQ{GPGdc|BBy%De>!qX}JPmFh+x zGNGZRV@E7sjA}v`NqJ2spvM}Te@L9ezB!pknhIPp(OrGbHZ7#{8FK|YZ8YCw@pl_Ddgq2x-_qtQog^EKmw_Rv*?m836LV=}j=wX#bPvixh_Ju9uO zC*r&t>O7(~&~;Qd66)0zU|SQk>S-Dr4O^5=Vm?3Nz;vSOr6WuKF=+ypc34G&R0_wM z9(!XTyGtlYI9)p_vA{T2Fll8N4Gjo3SXO!C*%h1YbUjbQa0BX z{IP!JA;3wQ@*{C#3zR!xXBa?+I!_&J-0QL;Soj7r>I=L&C;r6+_;CB z3Poa*iX{eL33{Te^1;MnP%8`MPd^-F98b^afwjr?rBM21aX&i2a(0mdrw-7IWN)ar zgXHXVU1)w`Plr`priM^8|H4a+Cf`bT12eC&0em-@RnptCUhYDZB>k@Ys1X=F0e+6B zI|NJI7Noor1*~n%v6(h<=lsyxHsiRW>(S$2!$!>UX{o86!oPM@E9;Zj4M#0_Y3(M3MIfF~(o zLVP*C)Lf!PUcB2ZgNKo@d{vRmF}Z0V&H1b%p>X2mtUS?xE8kBs@(R@gL+~J+NbOtN zJab5RQnaL{o|wzjl|Qu@x`gf1wSl!%K}X2oY+|!fn9O)h!S1SkFyk`>f#r~>xkzN4 zc84}e$Eo&+gMi$IgEiS;JfFgQgKO_;0dEx&%8b5QL>|U0b~4WQnoWvq!2B_E^=A#= zy**v3H_3$gLL~L4bPAXPB*87GnmQ)tw_vip`LY^@z5QfC2^g$&g~TsbiS;tQwV=uQ zTXmTAeMA*!qB+)!X9OtA_^bLyv|-DtbRJl~NG-f8FzRYvNvn&MaUSQ%t%hM7?~z0n z1T~9TF<6EP;wn;t3CAQ~c`+@gpF@Z5cbfS?wBGzR#N?d=Vr!(GVKV&ehayR}ECMvd ze0YnVwO9JO!d%sH>^bcP0fgobL~;svm3;A_;{Hz{ec2htBJOu5WZ}QoIW+Xf(cO zC-SY$GP8$I@wmjp)RO^cZ1j}BzHtZnhWL$x=8f(8R$VY5-D@mKXWp|k*|RIzL)&%# zWZ>%Vr)OmHw}x4${!*j1N+in6tA=N5+k7QDNv-r^B5Gx5lnZCl3kq3L&#P>pN)gj$ zbum_3(Xl(FslaC1seSph4FQoTn|FP2JxcZ>zwGM=EFk?MM&BuNAx!K6EmOf)giEv{ z<70pBL-eX@;h54X@X<)gjl*1W-8jh`h(`dHPY|bc*~9+$o3GCJgxqNO$)2V{@!t*l zKQpNPq2~5q*+Rp=v87QuS=s8_QJLCVS^iaa?>AZ6Z@d0?8u2Vu%W{_qdSC;17dDLJ z0i<1QDhTN9W|pdoaxy5Vi`cJDWenf1Ib;C?ufoXD74$?X-h63W*wa1+NYKX-`;9;_ zx{fj#^A~j@YNe*e+w1eM1#V4`_v0}4_=+8iRcJ4D4`QkvSgIiJM6B-{JA0nZnD3Y^ zTQ<%#+Qt-+SIodW13Bebt|f=P*1@gLh#TZ_UrhBGzJo(B8XE}ob_1|B(^K?e0FViz zZ|-SMTo)TYvh8)EK9Oh5;F99*lcJNj%s^d}Wcai>fRa53=g9&bVf$P*dCxq<$1uho zH~n-%Db{(}GG-8HIaJq^P>ZfgfyGh@Br&LjZlp2sBvc7+531U)2*!2WPasq21a<|uo$ zV-)78O>shyYoZkE#2TF(acNI1`5%b3^9)l4Ka}M`DlT^(4G&(fM0*hZ!U}E`4)HbX z^3C`#Z0cd01XPuL+3>C3HkYh8U&;~74`g;+^3L1Q{qSkUxX@^XAg`5ld#)&XpZV?m zpG)ng{mm6IlYA(dCuQN9G>{wM7Z+2$YOya4D1$JKyMTl^pd>pR=@IXnj`g)W?@#dW zX!$4k(R37W@}jxt@(!SM7XJJqBzv+g1a4&gRlJhnfx>kr`BE{DojMTdlBY z15A16y+UMlGu4N3F^%tzW3`7m9L^Tz%X{6bKku7j=<`KkL+mKA&2LUw`$=2;tgD_` z9fJu4Ub>94qc^3JFSeMy>f#nuB?lz3gLwY)gKznP^{G$#dLX#;EYX*DOsXsNTU1iCM)*8aA$s#r0aq*uJ2v z2kK1@CZS!gGg1ypB>{y`L2%}B$u7>t#S^TK;Z}m$hgEPw)kBfLuVb?nvRHJ=p2FB6ldnz3_q~@|unY zLSriQMv}>JOBKATSAXNW@r{?@k%>&ilAspl^d~*E<6#1f#c ziJv=9HXPiMtYu@JnE6T@9Z$!t7oAUAgdZ@8 z?u5_oK)-*T4nV3{G7W_x!!}w6PV5i3<|G?^2bt^kQZO;Sj{C34oDKD^*CPF4B*M2T zUGH&#R^(56&%-$Gw28ZgrPt&>fS0}gH?ck&N?K+w+dt^nWad@qcoI*=TY34^Rx9N* zCZ69%T2Gs3H8o#dU2I&g{>CYafu@p|^%=c(X8i9rVx{gM6TJT>dTnH@qi^!bBk~!) z{+}|vEuZrof8U9K0kS6X3L0h@O7I@2huqM#Ajwrf#6*E|kW%0!x&WEa#7RAxrq|;W z%N*z4vS{V8K6=_eij2OK^&gRjJnM-7GZV?%$CPcB0HR4O*Ov@k@ zjt8ATN*+Yxn^=6-03EEixgqt~1~3|}$(H1?2u>9#IIY^(=r%ihKO4(tCbXZGxjRc> zwd<_~P1&Tf)?%^`L8s4T(T!@pxB$N*wg(N#rD+Em$A2HnV*nhZS2*M(bjbQXEp?@^ z31&1}c|(MJHZRR#`z!Ci`GX#$>(%=I;OWOyS!w*=xOW9VCly%1f4wnmGm1<@ke2-)q#Dt!B(<@5~>>p-dpdZClZIY?fH z?X8`ryUaHsF}hvM?DE1AI^-Xs?FXthv@)#XJPIeZEHb3&vpD!u6z5i90#ppgj80#> zSUbe&M1hS>gT3eqDGOmMpklR#+W?XG|;kDu&*O&aGH>{m|YG-nl$jb%*k?a@idj- za=@)wIc6JqbeiHhd&xRnt9Zu&HYGwmTC5Ou$2zGXVNMSKxMK=W^T2uXIOp(OhL{fO`6vd0i%>W;R7crdzpTs8OUb zJ2mc*TdvhkxXa3&C%`tN8h+bt#6~58w_GiJRB}3kP+Bf>Ln9mavs}2IhLkNVT20EF zC!`0UDKBGEZB(OAfa>I1$2HwU2$?q-*oV4cE*W zKB|Fjt=}PUd}fTpw9kz{b=pK9QM|B=rE`$U9trEbd=A^3Kv zNp5orT;>+jXnwrKFDXd(M1a2PVc2LU28h|sKxB-x>VOH;#7t>*v{C%h3^1Vp&7j)I zGYJ+d&jD*%hl%!v32{w?1jWWg;P{F3R)!m69U6*@8a76QmY>wmmMp7gwQf06Hmt3K zeqHPPyv_1D*HWy37h1<6Lf5LWbCnX2+MDv6@k-7&qF6)H86$XHN*<3`rJ3JSM#QTy z;>1C2z<9l7nh80aCQO^}u^-IL_YCu0PsW)yEJuEBV$#{718y^F2SN`Fz#o9Z(xYWZ z@k6rBKQb$h5J@Rho?o!>Zh})sJY@{~Kr6uAgve(OLm04kxdC{ET!Lc^L(Tc60vZMf zvvH0hT9lHpX%fIZe-iu_fe=xH@1kpXoI|$ifTp`*IZLp=f00}`CK>r4BhJY%;j6`r zr0s>!cLxAIxCDpxzM%ik8_avm*93F5m~_fc0rff#45 zD;!ikbuh-nC?AzASF;4oVqS1k?_eE+t@ahnKEKIs{ReOVI zLCa%8QAw%$_T;^faqb~0gB8CC#V;AUXe+pX*Ci;$J zXBVqXur>?HY%mX)UjQFa?I$_)gY$-KtjVT_|xWkW~y z4UxIZWXrda-**&b70;L8G%Rmz)Svas1Ih5`Le34&R;+yu(&QwBOq_HrDlX#s`DYO4 z88tv|=Isl@DvYCzk;R6@?fG(1%Ekx@`f>uCf{gxLS_TAo87Ort1SR?=u4oba;A`-XjwO$Vtv8*y7b|8ac}&t8X<7kI zV53N=(ZJ`>EQJ<>>Eqz{#Vghn3?;$+_k86GuQ$8r=g(H)ODX;9&D`8TRX$+tI{Op| zgg04qUs~^DEvZyywa!Dv?mwdri(RhrnhKaj4Iaba$BLC+3i_L}WuH-6?`Y zAT?+6eOms}@ziAs`Zjw#Uj*0N{nxkeumh9FpguAHGtt;Bj&IQ?AQrV#Tro|z^a}d+ zT{HZ`-)yD1HMT4!e%(XXaLf)Gvf;&kkMZZ{q^DC8w`YoHvsEmLdoq0U%DYC^4xdbm zo-j|%o}oFH{sA~*!W{kpJpGH=#Vyc^MswA8Ac80 zdNSKzMKE~%TyjP7VT15EhA(7`CkF*CGMh)kCN@JXFN%XffpGi#KQBNKDFIW0`U+dG z|2Cb$O5MWC>$A#@5ca>dPJ)FM=z5j%DEB~l->;0^AOIOq|TTw*oV1DFIYobw1 z%0_KP>%hQjRmH0+mFZ!rj^w0Op^Hfy_ve$fI^!DyTKno*-MyS%M7Y$dyax!{_e=+GDP^^CWm4>;c>T^>Su{%j-4Z;S%H9d3{QRVeWG9oCT`+g$0byjIw4K;*O$-$vfVE#|nFub*= zLU2z(I`lT(@1t366_l31_Se+9)bkKwqpi@JwD>z{C~8!|I6w`3`9g6gL591j;jM>1 zXSqH!eZ|+Kljg;Jfh-@^&A|4HQs7N;p11*{GY5W(n!X$cetmF$n97*+@-Fz`@@fuL z@~o6&F^iw9c~L~JE|GaBaN%`Q;1IbY-~5Fjafh4$K;)+S6UU5t{5lVjRHym{oL0!k z^ufbq30`+4-h1O~Hn;4zcMO_{X#zUQPUhnyex9J$8e4jnNEwkXtschbmY=vQ^*iWZ zsuAY70!wcZF+3}eribC9KW@-t!$G4Yn+^>Z*_3UM;=)fmPM-FmpTNWi4yk#Uv1cHL zg2f1N$3UvV1B$mmtj(3;yET!~$R&E983`aM6^D)#o@BXr)kQ3U5?PBMeU4=b!2x55 z3NjABi!SmFlCzQ4FJ^PU*-Az4?t}Yk_q`5zSu4Ij1YC%%BWAv- zU1<9g`PXZxh+bGmjhfb&luu}H8;4zQD5%>oVd+6Q? zJXeI=VSw5~T(248Y3vuJQ(TFrY zRk@hhRsiS*glfdDA_W@{O)mJ0+*;`77(4^43_!Y-h#SL8}cgf(W0W8f4&vkypyG7 zTu^R~)R){SVKC1&JAA$K#M?+b3vUU<&_09R4mfZ@PlYZtL}w@-E-x5ZryZv-JSZh* z47c2tC2@B@bf;{ZfcN-y$gksIk138LI(j+zsob~?o7VS+v-PM^y~c%iIKK_NrW}F3 z-&n{0*?se`ng*Ib@nZd(ng(lg2O|^9e^=3~{>ggv+t2&mI+30zZneq;?|lJv>a|Ik zc!vVJJlaE}4MGZ!3mV?Qip({MphTX802+P0v#$Xrx{7|NwKT9kV14pPE%H&+i$`?A zYcit^!^uKFJLnP}Y0_u78{u4^Wy-;3Pz)`|K|t+T$Su+7MT;%S;IAYlAV($1*W{eV zLV0I`a6W6HdG0%`ei?N>L?J3rlEh8${TJGyp()<&$$x zpvux}s08d#8pY}Gw&Au|{sbWwFbayCYHFK6fJ%RcMNgk6(XM{lJwjdCY430465QiM zPJm0bJ1;^}UAx%~T)bA_PE3f)i2?*giH&v}UynrO;9mgC&vYLZKmd)10)i^6aOLL( zvX5y*Gz!OKHjo#dJg#8RN4F8qF~kSmuz;T?4^TVisEtqUN7LV|319SL^0vqn#@=jb z2;CqCJiW+;5t?z4cHH^Ki3vl9LEb}Cw|~Bx@Lj{ao^L)dhqo^*yxQ6LSy|U_l8HYC zK)o4JdXs*Y%(t!0J!9r8sNUHmgAbANvVU@hi^dDw?K+F z;P!(-Pu`^g=NGBtwrl3b{!ajBi1FtnZou{Wz*-TNRk*wPku>G}EoMLD#3ytP`QA}0 zz=|-D9cBH=64%-q`QR)CMm+K1`Jsf+@sY=v4~19FR|vp&u<6UMQOp3X^NUY<)gYZ6 z!1^%ds8wZMcVl!m1$k#wi(EVb0zFm+d5q^<<%APSH2V0^?p>f04cR=!>Ps=rC87O0 z;RPP;7x5_QEbX5mUJJ+}6g^f^IHHl2w2Yv;YryXYD)Ufn4WgY zW~&$2%fO8aVGNlzSE)B}*`6R^$ZmngXP(BTJENd?SXcFCU1TjUS~hFTzF-Df)mImaUp!mFzrLw2WVWKdKSs|YQ{N9~I@h@9bD>~b5DLa{qGqNP>Ners zHr3p^y%Xjy2C?qrWznb7reTL|+aJhfd}mz7mpo|<4s#8UU@~-ZX1Q9pa7w9GuNtse z7$~@{$&-Jh0DEdG{+UB;v`ifE`i*Bo-i@jTpLiw@_g{GSy8&$U%O7b}ApT*y*&Eo| zQ~y=ohPwCfTq(cTfAx|5Sq$ud7h|g9sPq3I3*rBg^;re_{~!3uT7{H1L0M!CNc&;0SvjQo>qlK&|Czsh3&Qi;Ytl>AoquP+wt_{R_b zpOySq(BdzZLhxz6&!acmpq;lO@Q3UMv@EsMhBi(Dc|Ko zdfb&g4S->QgqIJ&^vypkbjL%FkJfq<9$$2h_|C}iyS%0Xp=&C=4sT4<;Qo9jC3;e_ zGC#ue8s2E7NJ;QUJ#=g`5$>cWX*6hPn1zTFq26&wRrp8)X$(f=YrRTEcb!k^5RF2F6G57H9&hgZBETz_;8_epoSC=p^*37rd?va<6 zE^5;7xKX#Ji7MNABUz`DrPio6#42(d=bXKP$%z?@~%>Sp2=P4XiGubx%+L$?Znwes^f8VJs7k4W zncx7t(Q87H8;Z-FyEpp|oGVTcO7@{RA-51F_8?UYm2+_M1R)ocfmE&O;y1_14&@i# z$Dc2TL+N?l1W+08i(sFFU1gf}%~H`Ozg*tfwj3mF&3jpQ3#mwH))+Nbvlyf%5;UoC z|K1g1c01B&fB*pApF87Uz}a8%$BT^j|L3>*O)2m{ex_@7`M*Kt@2%3WtY$SMg5)W@ z%^j`|kzZOCQb#SKUMGrYKqUVi{1ljPYEyDLJ96;kTjMYMJc|HlG6YqV2L~6GkOcsk zxO^CdPVLv9_hT%mt5&-#3qCc{vbUXU*ZMa>_HdEy`L`oQz*#P?e?4U?t-1 zwjo9^E#I@)RhafM%V8s20K82JZzbCKtzXNqdsi%knBn)}s(&zB#;)x*w2)DjHW)i= z!)#o-%ZBo$#A*`h6>C;@=}=H>{aC7&HL0g_cr8|Jm#s8Hr_C*P@Q`5RlIkLH*r!t+ zWYVHp^`EMm*&7w~j7Wo+Fy##Z=-#QoZ9QQ@5mc+vzq4u`Nm-6+y zbuN8ITPeDf>{@uJDU^X@G{pgRyR?SphTBct#NER^A|Ai8a5KaHHU)Z^M=FT5gjSm4rMH3c)#+KV`_AX$f8vW`dN8f}^tw zZ_Tg+`Hbs@(DYWg3RAeJZ3G*69R=^7#N($MJ#X-=9SR@Ii0YKcl&S2HdA`G>z*aHL z?*D*gN{0^P45AlIk@`{GGYKMgrrFU_Bp zb#E0GITf_Uh~w2@jdZe8*!ux(@7|UpU}UX_nAYT5)X2>(vi|fOv-qiSj~<_fT(<0> zk>|KFZ3kS4mmeKgKs;0ojyztj7eGC*VmAH}-ei6I=0qEjoQ=QTwk}*4gMy1?i$k*} z_{K+pk{8fL$hcQY4_Gf2SG z`eEkJ847Amx8|;l%}&0_2z}K_L4Vn)zRPQuB;?49jvZ}$!P6C;n9 z@zfEfd_U4dV$$nZ*=N9wjD&S;QfC%5t*@9EwiIoss#P8`(5nzwkso~{NYg%mf1{ds zf2*MIr(4tTPx|uTciqqbwF&*tc^`k}^l1KHcKYvYZv0Qa6Ze0F&VMT5x3V(VxB4ug z*0KDgz_9%vfs^sm)B0^|(tfVL7&MQ1rrX##W@i@#fW)0fcF~9!&b^2#r1{M zbe9X#%UGh3WNj2oij zh6}jIMidFCDDF5aLW?cEAc7l?PK#UAiHYNaiD*<%+%bVR?#7JUQPDBz;4*_6Mx&x} znQ;r5p0B$5(N)#&^?NOxgXj38zV9w|tKO|!w;KJHnGt^Tq1WsCPs;XYj0owJ|8~oN zb`1J3%M=rq`$@rfmem>kxBdLDfl0SczFI#e_^0ZI(Jy?5eqC65)2?|hn|jart6$^% z|HY1Pe#kOw#jDU$mT94XdUn}b06FSu);bLq%Qa|m>{u+Xauye!$4Vn#%hu0a@@Z=Q zl(c{KRa!hoXm9M&*1hev?v8&8R}aHp#^-1Vc}&x&^fS2=JWu3CrNGkr+XwtU;Y48PZF>`L zc6ifv^r^T1thsbuW}S);N()X0=UgaTmb$#`tN)IQQC-gdVqQqb(d2>WO!c%88|u^< z7g*4I{(;C(1AGpwKcAE69a0`tEoCvOD3$nU|g?7not;(PF#Op?b*f+zrd2P+v(l+~8tM8|KPTTigif-8H1$oD3&5QT> zEwM$n1^r%ED>D?ft#}!hl~AMoj)vL+J#H`TdSlYdPCvi)YdP}N?2^2LzwGn%&oxHQ zA9?u5U+UiPu|74W)xv-)!ACMmdxTVY$9f+t3jTHHrJ)DPb(be^_pDfD*;=G~Uh?Ai zM~{ogzB^O#+8Qh7&a0st0;66*yl{M^Zs&HZLRG7@QOPD%yeZB(`+k_r*_bGgD)p<@ zC*jB`%~DO($ol`}k3~)X&PYvg-eFf)dDv0|j*-f_)=#yVk;3dF>EpEq(cvy3hB9&Y` z^w*05Gn;zhBS1o1Jeb;GFs7qvSby8yYw?^22&_W&8cm?%o=tHXFNSv-gAlqNNypwS z0o2kdBtRM}_c!W{sd5ZH3T0K$5{=AZsvZXK<42HoDJs1tt z$4z{t46OI>==D2SR{_2Q3Z?om@K5n{fI|2PopEx!PKgHE9%pS3 z2nru$g?%{@6gGkatAU!niYeIMx0KUBFAkn)pwxfGzkh`bE^%^!r+-ikA8kxfrhp)h zK?6*~#}~ub&H?&jA6@}Ter_;OqW{OJSfgFw^WE8T1tYVs>j57Pj}Kv7AgP&R_`x%h z@u)kdtjQdgx4Ww6JzQjU!$jpV?+x!|)3f@|+>9v1|`hoLJ} zcLw|sF4idY{o$Gvoowha@}k4<)7pU^25%%SzX;ApjV)M4@&#kV5nYj+oS+W`xf<(?(*=YP+N2hRYGl{h?kw( zyD84=!JC+lh%Rs7&#adnPzr@)ClKu)gpvW?t0z0XeDFwt*MRMJv!Lb>ENCpark_GN z2itlv+BispPsdlNFt>@4{nFVz6T6>T7%m51dDtViLHlKqV=@yk6$jRdvFHQkUP|{Vreau{`Xd?A}Lg}Y2*OKB37ab$!&F_UTct>RgEc)6FMD0 z=j`HBhQ&2iDor3y=fcqUr=w_tb*Q()0SKLbpwqifj_Mg)-><1k^(mvB2V>r!PE4w1 zigvb~dTvmBh>INMHt`)OJ{Gkx-VHvI)4wa{A!h8emo2@2ejDO^5f(T#g=se3avM|d z51F}mp4)9VgegA0lNhoMf#3oHL4Sru?Id?a7iicc11@sn6klwfuHmyPLK8D zvFdKd6lINYZiaiZ3rrkm(vn7~!V%ekQyoj|Mq!>ok)1 zTXDEUuM9<;69iEvv8V@`6yqnQi&SO62S#uLFM_~J=Wn{0i8x)1ML3KCG@A~%2Pg<_ zor0?+!g3smzKgS8)p5kFq|80e0!KWIH$s#!>h#tv_ei4u%xy#B|V&)q#^CKuo zv#H}sHz5V#qtg?TV>GGy8H2z?QvMi<42i(EIr)PrG8T2r7mCT~(5hTx(4>m%AccY@ z3y~k9pZAl3xn~iCS2bOpTORy=RKAYW>d!SLLjVCAFlAge8 zVJGk-e=L30*+ZqO3l3~t>buoFe8CA2m~4d+k~}`-^iYWS_;B9NYm=}>w)5vRF{+&R zj|KLKSmfOIyYr^B*aul?NG)+=!e3}-*i|*ZL;gX!N2$5O%17!ZlBg6A6c;HN= zx>((h*y9!;=3RnjDo*V*sp^GG`$0FKDgqNIM3n-yUbZzD`v0rjp4zBW)P;7%u z-pHoix*oF1nQ!|)dIz^|g@hiP+UavfF__wrrj1RB*URm4U!P!8steKAaYt^^@Ck?| zvm2>YeHrDRyr7%_UV*TGU&wLjcAn)hDtA*{!{XvL1{ioh&e+)0`mUc8bFk$!akwDM zAc!@?^IF+)`m{Fd~gC=-y5EM zj@44Gn8g6ngH#T^j57jhhjhHjvO(F6k?O0GR^Q-b`9E z3~^vJ63lFdb!vrTc-zT_9DFy<|L?;8-;GWfy%X;DM+ACyXVuTcLngnix0Sxk=r|aS zF|ek~;n(1_-x@KOeuSExf75F!$47cu4m_HR!Q`E5`tjs$ObE>LRt#QQ79u(G$g9`1 z*~#n7^pm*kfr{QoF|^!U&Dc$ox0(fPvd%d_x{L5{|FNj+)|11QD4YNid2C8RBD)y! z_%8kS6)R<$LL?I0WuD>%HhGGd#wM?8(a$BZ#{ICVGAZTX+5$9rYfFG8dUSq|iB|BK z<`lG}-?=sPEl(b+RcBlBjvad8j0`f`|4Md(ip*y|%Ge8FeMI}g( zZi@p5@&F1AL0ZPs9j99{5H~xBLs-`t*A3)>MHHFJ@$aauNb6T5#6_hRb18pQ6zkF$@VS+7U^9?OGP@N z(Cq@~j~=rrFVZ!Z%U%IMBYjb5G}3~AzOef-qr+?zeTkS!4umu$ph3vpU-}ju>kFU7 zih{Vf2@E;NO<)0n%zyqK9b4Tsc8m?eTA3y`>-l0aemJ(e>l=DF$?7h-G1=;_a;GtI z@Fn`SE;p_(WkQR(_gG4F`RXoyaOdlKbX@&XdTd~u4_b@&9uWF&K^=>sOalD1F5-SHtlm0 zQ4qf}Yv@vXa-E9iLM{l=MfU9Z=D11jNiT3AnM0Q}$aNus28oQ$75%gkI-ypZM0jgt zWW$5q;VVBk#AX+%?-#&`{z+v&T><_HqyM$a!4%i|!|mvrVM2lwo6{A`?DyT$B*hX} weq*>)I4M0BbU+mDToz3$e7sf;UV5)jilk$rs^hy6hc)>1NB-bA##5>O57t?jyZ`_I literal 0 HcmV?d00001 diff --git a/src/main/java/com/loki/lochat/listeners/ChatListener.java b/src/main/java/com/loki/lochat/listeners/ChatListener.java index 758ca2c..89de658 100644 --- a/src/main/java/com/loki/lochat/listeners/ChatListener.java +++ b/src/main/java/com/loki/lochat/listeners/ChatListener.java @@ -5,6 +5,9 @@ import com.loki.lochat.managers.AntiSpamManager; import com.loki.lochat.managers.FilterManager; import com.loki.lochat.utils.ChatFormatter; import io.papermc.paper.event.player.AsyncChatEvent; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextReplacementConfig; +import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -14,6 +17,7 @@ import org.bukkit.event.player.PlayerQuitEvent; public class ChatListener implements Listener { private final LoChat plugin; + private static final PlainTextComponentSerializer PLAIN = PlainTextComponentSerializer.plainText(); public ChatListener(LoChat plugin) { this.plugin = plugin; @@ -24,12 +28,14 @@ public class ChatListener implements Listener { event.setCancelled(true); Player player = event.getPlayer(); - String message = net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer - .plainText().serialize(event.message()); + Component message = event.message(); + + // Plain текст только для проверок + String plainMessage = PLAIN.serialize(message); // Обработка через RegionScheduler для Folia player.getScheduler().run(plugin, task -> { - processChat(player, message); + processChat(player, plainMessage); }, null); } @@ -38,11 +44,9 @@ public class ChatListener implements Listener { if (plugin.getMuteManager().isMuted(player.getUniqueId())) { String timeLeft = plugin.getMuteManager().formatRemainingTime(player.getUniqueId()); if (timeLeft.equals("навсегда")) { - player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("mute.permanent"))); + player.sendMessage(plugin.getMessageConfig().getComponent("mute.permanent")); } else { - player.sendMessage(ChatFormatter.parse( - plugin.getMessageConfig().get("mute.you-muted", "{time}", timeLeft) - )); + player.sendMessage(plugin.getMessageConfig().getComponent("mute.you-muted", "{time}", timeLeft)); } return; } @@ -59,9 +63,7 @@ public class ChatListener implements Listener { if (cooldown > 0 && !player.hasPermission("chat.bypass.cooldown")) { if (plugin.getCooldownManager().isOnCooldown(player.getUniqueId(), chatType, cooldown)) { int remaining = plugin.getCooldownManager().getRemainingCooldown(player.getUniqueId(), chatType, cooldown); - player.sendMessage(ChatFormatter.parse( - plugin.getMessageConfig().get("cooldown.wait", "{time}", String.valueOf(remaining)) - )); + player.sendMessage(plugin.getMessageConfig().getComponent("cooldown.wait", "{time}", String.valueOf(remaining))); return; } } @@ -71,15 +73,15 @@ public class ChatListener implements Listener { AntiSpamManager.SpamResult spamResult = plugin.getAntiSpamManager().checkMessage(player.getUniqueId(), processedMessage); switch (spamResult) { case TOO_MANY_CAPS -> { - player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("antispam.caps"))); + player.sendMessage(plugin.getMessageConfig().getComponent("antispam.caps")); return; } case REPEAT_CHARS -> { - player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("antispam.repeat"))); + player.sendMessage(plugin.getMessageConfig().getComponent("antispam.repeat")); return; } case SIMILAR_MESSAGE -> { - player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("antispam.similar"))); + player.sendMessage(plugin.getMessageConfig().getComponent("antispam.similar")); return; } } @@ -90,12 +92,11 @@ public class ChatListener implements Listener { FilterManager.FilterResult filterResult = plugin.getFilterManager().checkMessage(processedMessage); switch (filterResult) { case BLOCKED -> { - player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("filter.blocked"))); + player.sendMessage(plugin.getMessageConfig().getComponent("filter.blocked")); return; } case WARNED -> { - player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("filter.warned"))); - // Продолжаем, но цензурим + player.sendMessage(plugin.getMessageConfig().getComponent("filter.warned")); processedMessage = plugin.getFilterManager().censorMessage(processedMessage); } case CENSORED -> processedMessage = plugin.getFilterManager().censorMessage(processedMessage); diff --git a/src/main/java/com/loki/lochat/managers/ChatManager.java b/src/main/java/com/loki/lochat/managers/ChatManager.java index 653de0c..affb242 100644 --- a/src/main/java/com/loki/lochat/managers/ChatManager.java +++ b/src/main/java/com/loki/lochat/managers/ChatManager.java @@ -4,6 +4,7 @@ import com.loki.lochat.LoChat; import com.loki.lochat.utils.ChatFormatter; import com.loki.lochat.utils.DistanceUtil; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -16,6 +17,7 @@ public class ChatManager { private final LoChat plugin; private final Set globalChatDisabled = ConcurrentHashMap.newKeySet(); + private static final MiniMessage MINI_MESSAGE = MiniMessage.miniMessage(); public ChatManager(LoChat plugin) { this.plugin = plugin; @@ -23,7 +25,7 @@ public class ChatManager { public void sendGlobalMessage(Player sender, String message) { if (!plugin.getConfigManager().isGlobalEnabled()) { - sender.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("global.disabled"))); + sender.sendMessage(plugin.getMessageConfig().getComponent("global.disabled")); return; } @@ -35,15 +37,28 @@ public class ChatManager { String prefix = plugin.getConfigManager().getGlobalPrefix(); boolean hasColor = sender.hasPermission("chat.global.color"); + // Получаем отображаемое имя игрока (с градиентом если есть) + String playerDisplay = getPlayerDisplay(sender); + + // Обрабатываем сообщение игрока (смайлики, цвета если есть право) + String finalMessage = ChatFormatter.processPlayerMessage(processedMessage, sender, hasColor); + // Отправка каждому игроку персонализированное сообщение for (Player player : Bukkit.getOnlinePlayers()) { if (isGlobalChatDisabled(player.getUniqueId())) continue; // Персонализируем сообщение для этого игрока (выделяем его ник) - String personalizedMsg = plugin.getMentionManager().getPersonalizedMessage(processedMessage, player); + String personalizedMsg = plugin.getMentionManager().getPersonalizedMessage(finalMessage, player); - Component formatted = ChatFormatter.formatGlobalMessage(format, prefix, sender, personalizedMsg, hasColor); - player.sendMessage(formatted); + // Формируем итоговую строку + String formatted = format + .replace("", prefix) + .replace("", playerDisplay) + .replace("", personalizedMsg); + + // Парсим в Component и отправляем + Component component = MINI_MESSAGE.deserialize(formatted); + player.sendMessage(component); // Проверяем упоминание ника без @ и уведомляем plugin.getMentionManager().notifyIfMentioned(message, player, sender); @@ -69,16 +84,29 @@ public class ChatManager { String prefix = plugin.getConfigManager().getLocalPrefix(); boolean hasColor = sender.hasPermission("chat.local.color"); + // Получаем отображаемое имя игрока (с градиентом если есть) + String playerDisplay = getPlayerDisplay(sender); + + // Обрабатываем сообщение игрока (смайлики, цвета если есть право) + String finalMessage = ChatFormatter.processPlayerMessage(processedMessage, sender, hasColor); + boolean foundRecipient = false; Set recipients = new HashSet<>(); for (Player player : Bukkit.getOnlinePlayers()) { if (DistanceUtil.isInRange(sender, player, radius)) { // Персонализируем сообщение для этого игрока - String personalizedMsg = plugin.getMentionManager().getPersonalizedMessage(processedMessage, player); + String personalizedMsg = plugin.getMentionManager().getPersonalizedMessage(finalMessage, player); + + // Формируем итоговую строку + String formatted = prefix + " " + format + .replace("", playerDisplay) + .replace("", personalizedMsg); + + // Парсим в Component и отправляем + Component component = MINI_MESSAGE.deserialize(formatted); + player.sendMessage(component); - Component formatted = ChatFormatter.formatLocalMessage(format, prefix, sender, personalizedMsg, hasColor); - player.sendMessage(formatted); recipients.add(player); // Проверяем упоминание ника без @ @@ -95,10 +123,23 @@ public class ChatManager { plugin.getMentionManager().notifyMentioned(mentionedPlayers); if (!foundRecipient) { - sender.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("local.no-players"))); + sender.sendMessage(plugin.getMessageConfig().getComponent("local.no-players")); } } + /** + * Получает отображаемое имя игрока с градиентом (если включено) + * Возвращает строку в MiniMessage формате + */ + private String getPlayerDisplay(Player player) { + if (plugin.getGradientModule() != null && plugin.getGradientModule().isEnabled()) { + String name = plugin.getGradientModule().getFormattedName(player); + // Конвертируем &#RRGGBB формат в MiniMessage + return ChatFormatter.convertAllColors(name); + } + return player.getName(); + } + public boolean toggleGlobalChat(UUID player) { if (globalChatDisabled.contains(player)) { globalChatDisabled.remove(player); diff --git a/src/main/java/com/loki/lochat/utils/ChatFormatter.java b/src/main/java/com/loki/lochat/utils/ChatFormatter.java index 622eaed..b1f84ab 100644 --- a/src/main/java/com/loki/lochat/utils/ChatFormatter.java +++ b/src/main/java/com/loki/lochat/utils/ChatFormatter.java @@ -26,23 +26,29 @@ public class ChatFormatter { /** * Конвертирует все форматы цветов в MiniMessage - * Поддерживает: &коды, §коды, &#HEX, §x§...HEX, MiniMessage теги + * Поддерживает: &коды, §коды, &#HEX, §x§...HEX + * Идемпотентный - не конвертирует уже конвертированные теги */ public static String convertAllColors(String message) { if (message == null) return ""; + // Если уже содержит MiniMessage теги - не конвертируем повторно + if (message.contains(" <#RRGGBB> + // 1. Конвертируем §x§R§R§G§G§B§B -> result = convertSectionHexColors(result); // 2. Конвертируем §коды -> &коды (для унификации) result = convertSectionToAmpersand(result); - // 3. Нормализуем существующие MiniMessage HEX теги в lowercase + // 3. Нормализуем существующие MiniMessage HEX теги <#RRGGBB> -> result = normalizeMiniMessageHex(result); - // 4. Конвертируем &#RRGGBB -> <#RRGGBB> (только если еще не в MiniMessage формате) + // 4. Конвертируем &#RRGGBB -> result = convertHexColors(result); // 5. Конвертируем &коды -> MiniMessage теги @@ -232,10 +238,22 @@ public class ChatFormatter { } public static Component parse(String message) { + return MINI_MESSAGE.deserialize(message); + } + + public static Component parseWithColors(String message) { return MINI_MESSAGE.deserialize(convertAllColors(message)); } public static Component parse(String message, String... replacements) { + String result = message; + for (int i = 0; i < replacements.length - 1; i += 2) { + result = result.replace(replacements[i], replacements[i + 1]); + } + return MINI_MESSAGE.deserialize(result); + } + + public static Component parseWithColors(String message, String... replacements) { String result = message; for (int i = 0; i < replacements.length - 1; i += 2) { result = result.replace(replacements[i], replacements[i + 1]); @@ -282,45 +300,6 @@ public class ChatFormatter { return result; } - /** - * Форматирует глобальное сообщение с поддержкой LoPreff - */ - public static Component formatGlobalMessage(String format, String prefix, Player player, String message, boolean hasColorPermission) { - String playerDisplay = getPlayerDisplay(player); - String finalMessage = processPlayerMessage(message, player, hasColorPermission); - - String formatted = format - .replace("", prefix) - .replace("", playerDisplay) - .replace("", finalMessage); - - return parse(formatted); - } - - /** - * Форматирует локальное сообщение с поддержкой LoPreff - */ - public static Component formatLocalMessage(String format, String prefix, Player player, String message, boolean hasColorPermission) { - String playerDisplay = getPlayerDisplay(player); - String finalMessage = processPlayerMessage(message, player, hasColorPermission); - - String formatted = prefix + " " + format - .replace("", playerDisplay) - .replace("", finalMessage); - - return parse(formatted); - } - - private static String getPlayerDisplay(Player player) { - LoChat plugin = LoChat.getInstance(); - if (plugin != null && plugin.getGradientModule() != null && plugin.getGradientModule().isEnabled()) { - String name = plugin.getGradientModule().getFormattedName(player); - // Конвертируем §x§... формат в MiniMessage - return convertAllColors(name); - } - return player.getName(); - } - public static Component formatPmSent(String format, String targetName, String message) { return parse(format .replace("{player}", targetName)