From 98be13938435701e601682a4b1ef200e0555a2c8 Mon Sep 17 00:00:00 2001 From: PretzelJohn <58197328+PretzelJohn@users.noreply.github.com> Date: Wed, 15 Dec 2021 15:30:01 -0500 Subject: [PATCH] Version 1.4.0: * Added 1.18 and 1.18.1 support * Migrated to NBT-API (thanks Jowcey!) * Added MaxUses setting (thanks Jowcey!) * Added fixed price and currency settings for both ingredients (Item1 and Item2) of a trade (thanks Jowcey!) * Fixed config updater (thanks tchristofferson!) * Updated readme --- .gitignore | 3 +- README.md | 12 + .../VillagerTradeLimiter.jar | Bin 145565 -> 0 bytes pom.xml | 14 +- .../VillagerTradeLimiter.java | 11 +- .../lib/ConfigUpdater.java | 285 ++++++++++++++---- .../villagertradelimiter/lib/KeyBuilder.java | 120 ++++++++ .../dev/villagertradelimiter/lib/Util.java | 53 ---- .../listeners/PlayerListener.java | 110 +++---- src/main/resources/config.yml | 13 +- src/main/resources/plugin.yml | 2 +- 11 files changed, 422 insertions(+), 201 deletions(-) delete mode 100644 out/artifacts/VillagerTradeLimiter_jar/VillagerTradeLimiter.jar create mode 100644 src/com/pretzel/dev/villagertradelimiter/lib/KeyBuilder.java diff --git a/.gitignore b/.gitignore index 2249a52..464d2e1 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ bin .classpath *.iml /.idea/ -/.git/ \ No newline at end of file +/.git/ +/out/ \ No newline at end of file diff --git a/README.md b/README.md index 90aefa7..067c53b 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,18 @@
.MaxDemand:
.MaxUses:
.Item1.Material:
.Item2.Material:
.Item1.Amount:
.Item2.Amount:
bLZ%0aGACH| zP*3s>pQsN`$}S$ide_?ugG#8k+cn26Z!zAAF_X2kuIOm6yR#cc!v{x;w7*#+wf2y1 z>gUj|!c~j7Wl5e`oS0`_)gq~P@kXVf6}JW2A6D{?EKJ*YF#eogG;X8+fcBenm_GmOd}#FWy* zAg9)OFhlqZ`Kp*(0DQ*e7%a~yK#92xiB9sD?!~!b2Awh|hu}>4z1#BjJe9Bp$ZWie zP7W4Kt6P(Dsgio(+Z7fas %E4_%Jm)=AIG&v zQaOSd%iT` `o<~ zs^Mcp99&$C$yrBm`x{axShyAY5DH9X69PWDdUEM!xEnK!_;wFc58N~M2c_>_wdDh8 z;G)4O!$5ka7w63szzSw=GeIC2)qDf{_uHF(+I{K19EfT1JdMfKEjFeY9JT|&U|op@ z6wchgkBxM39Q^hR*iOx(djAsfMbOuH`jq P)@tdGuO?>d_ zP0awQ(LA8#bYkUQ7Y6V88+;4=@&ne~7D$R2*w nTHfrzb@W!S2{PV^+eWNymDF$Q2SGm@XfQ_(( zudgYaFheIP^)ncSgDDrm03F{n<}=*mg9&|?;%2{;_IXCVLrlFuY%Vm{2*tPW9bbq6 zU+kxE#PYrx C8CB%t=JKC -s9;1m~$Y6tIMx%SW5$h!(J0(q91A7!fW2` zLd?btnz-xs{R6r4d}GP1dW?{KYm+#+;WAYUWW~$_lTUu><*j1=oS2M+#QP#S0RosA z+|xSa^;^9 ^t>_9+{i^RF zyQ$k0ku{mAS4IsW4ni}>cSsPzG8}1%vo}q^xkbRH3na6IbghfiS0wmA%b^uALVhd9 zNLjGcmvX&8W*03sGt)Iy({t36)Xpty=r}n*`2>l B z6ZJcUGt~*rQ>W}l`>2n`9injdV|Pxuc|p51ux{^&L2oNm+;5(D;l*|%gWo^l_PcS& z?euk*1i4d&5NwBtwLrcQeRK`2Uc8$?_t-vtE e_fp1nS69^-}G z$gzFJ^?tOrN0voO8Xrh2oPs7lvXz#75UR8!Eu}2oW!1K@iZnhKwhWoXJ)l=FsZ BfAh<6+ z8HL3=twL~&AwG>K Xq Tc2Tg%}7ppC&Yxr`0(78(vp{C)f zmizNJ{yq=MtQGtHpqK-eHnsO=CGiRg_J_RD6FM-4>BrhWt3m{Adrrt6c;+8qsHn^0 z(F)GSu&w;~ix>K=P`vf?^KjZ^eZ9XvUJU6wzq&{ 4lR=%HyNOmj4!CGyClNk&6f2=RyaBU)y3! 3YAKQjr+dKl*XWZf+ zStt$lcB2AZeohHr=$<~|f>hY1(fw} dh_!U@1!BuPAz7i+t`)Gwq z&nWk3ksOX)urC_2 {w!48h@L~{lZ%8m7*}@qnnUa2-diFdJT%t` >6{@cA&sf-5xrTqEiS!&fx zMy)UyqK4xAkWrlSz6vCBUF77SZSkO< H-cumzQ%Vf4kZD)9b|SYJh|6r -DN+O}2g{ytL_cAO&TA%s(e>->Db-_ O1|yGJbS-9SB^t=}+Qtrss5~Gfw<&h3x+X_ct{MdLVz?4Dc{1xd(K9*h zxIH 2M` Rmq8!Vh8^yE9Sh`Xj)TWG60vz{`P($(F zns6kEe5Ya =XlU+`~+DwZD|Y_10~|nXBj^Dl#DU z?|>BzzZE32oVvL}`KbBnSBm6D43=pl`Kl`EX9TsbVEoRc#E-t95#OE-lQ5}7C#G@K zzjT%E8*DQ@H4?~w(^Vo_+dc$x1?iR+c_QK5V-$R&et=q4&vRdM;d%FvV;SUc#8H zR!c^T^N5GajWp^T(<#fplmXm7lmRt>*$boS#oDMV{3p(6hwz#}rkfS>yQfD)K I%0J!bOEHvUqMtAF?^p2Awm-n8*HN^a57GD=G8thmbtZj$pPDis@@32evk zHN>43=L6fhIzSdfqojyEY?q4Y6Ezt@kj&GQzZd;VG@j-ibbCD2j;W_!42rB 7_5&nvv}?pWJ?ZF%%^)#%YQ)zRDS_0FRxBk9 &7)4bk=--M(XB(#%Jf)Kaj!RU&uh~`Gnhf_Gw}V z0^;}w>|BgD&gKBf2Y~DqE9DqNJ6G@K=ST3
kopR188b zfL*=hXGe^bdqNP_0Jl5Le?bPOQa+~9e;KR4kby@9LYEdt(O<|Q#P;S)THxO9FJ ^4)NmHUA`CB^M zZ&p^w2P>!5;KCHC4(-(4NWakT68;jG_ta8m$saDbezzf?6482Bx_>d!;J7h{eb;R- z*PJ7t$IZ^pw =|$Z z^wV)hO;|Q6Nbf`rl8ua9#^2MA!=W5OhTvD=!134t$>3la8R#?HSmO4z-Tq)Lr;v4W zB)G5kq5eD`*nnWWrpaHv$P2P4fKpJXlx*fGE>I$^XeeE@N^^hwT9#x2XiVAal$Th1 zuhw*j!xB^z0EJXD{2}0^M_Q`!^Ngh)pk;&1t=|Uf5QaEa8c*}yHXPB|@FXg0q7_cH zNIs}z5|_El-?!@Od+uX7aHl *ub=Yy8c*!0Z++Ah~ zh IS3DoneISrgl_mXmbXkQ&qXIhP<&-dv(%x{|M4t^x@bx^$Lq z10a&q^u3M{?(cV;-MBbLQv%_;673t$&c5>>wJ!UEf0`kw?;oAv);>f9<;>33a{rmV zAu#Zr-jvk_ZtH%8^9f-1ghToSvvauSeHVjQ^Z)Zee#=v6Ymo;}>#*L2F$;h@ZPwSv zN`qj8%gr$PM(`1teZZ}4na|&|A;=G8hn p#ahb^;v3z|N#h+@pyeTTRTcx5#b_&bkS_=11lj+(TD6L>#b3LFPs`-@q61{#NOT zcuE(Ay{-56%ejei3orurW&gHE51Vn!$SCYbY)Sn2W9ly6TmeAbU-e@u$vw5`a<{1u zPH6ib6&LVwS0I0Q1h%cWamhf9`|=Iw_g^S{Vh>}G jw0OO( z8=fxW5<@cm$&(24Mo}js6E|W8Sx-i#-K9HL*!om9M|UyG^Dv%#09B|K#n(y~?woNt z-Ms`9R%u?W)EuRZWzNKElOwr8`^=+X&f0A?E1YAi(@ws63?QQmE=p`TZ?;m+4M)}X zHoFTz^=K~HV-y;8NL_>XD7+<`K9mylF;r&GQm!hfYWewu9IZm@7=DvzP`1UK-^9-f z0HG)nUQhF#W1OyWE%cGV!l%J3A}XG>FDxr%6l0Q34~FD*=46m%l0?^%(T&f&IYwG} z9-ufT5Vz?8>e8Zi4M@3i#6$-foOj)?$QAF0U&C#1B%Y0WSdZRYs+Yd{_Nb49wTy zR|VfH<_On!ekZw~HaC2ZjyAsk5il#{+!>OC=Phz|MzUc}KsY`_B#K};uttU2;KE{o zb3Ds7TU RqXy zFz)nmzHa=qMAsh`5P$xEIwB}n#hW9LZ{Hdq{#{2T`k#r)*38=Ef3`#_I{!$E*Uds> z?I#HMU%oSh(nbKiF?1zB+`pj6Tv`SNzj-~w(V^X@sag1g>JwTTHIIDA%rAj)%7%s@ zSs&ZO{A%L-oYU-5x|rYB=LLe$f0B^J`Q#ewIzNNRL~YD;aqkw-ZGw24{V8Zqo$OL# zn%Yq;F=#*gBs8FPvXJ6@&G~O6+21R`@-3;5n`Db%6%(vjz1LEg30JZflT+eJa(u1# zH(tnNNNmVnef6_cS}_jzY3P(@NH6OMT`G=DgN{-4ls?9baI0nBnD#m8X5@GxZGoI< zUr K-u3$_E**+|_zvuV>Au&YNE;bZO)r6L8R%}~d zZDjNr>>1wjTZO7aM&_9d5EX3@(zZl5iq-y(7t`$eiiY^Xe69!8mJv{4nbbZ=*PBJ$ zKgBsYGEnzbO>rKlh;5S%hQ{+ka?f(gtqZ(p O*Q(?C**Q`Gt9dw-G{; =W99ct(gGGtvUOeTpH 7C(r~zh@d1g*(B!Kh-}2Q%+&!B=AMN%=|wWr z1u|C!KRT=Lp<}NmaVlL48*A_TQ?s7Bp0>WYx1PGLyr%WM9yX-DRTbAeEc}h54U86L zK|-dOuwXXHm=d;hKL?CJ0E+OEjlkO>A1?63(vgJfgIl7}j{#?OwtOnr!uFagrJ1R+ zGFnYGvXJ!G6PY!Y9cYmBCR#?NAH>%c71Q?M?HmT20647W4Dl$m;-U(|!q8GsAVsAC znE--F?Z(1ylL!uE^+KXjBi1FvD)kPQ%+44;c;ROna^ad`*op7UQ&2G~R#zj+f<=4k z{w`cgQolG~exE>5#0oJs)c!Fd@yB|0ToSd&l7doeR3kAytYqyw p- z+ekmo9$k09Y!U2F;;QN+7c3KWWGy{T^FQD!br6-tW4?3sBTK6pbDi7((Yyi?;9`;j z$PC-VMV!FcX}X6*sLF<~R^@|c0Yt|MkUH+H)~zTxu=~*i$Z?$}&^sz{sNj}QR>Ey) z&)(npmK%dc>n!JsbWr>E04^8#cxfWcbMX%kT(&)~$s-d7kD(6r=FDG{tj}iXT$C9+ z(HZvj!T5L<=Y$oo#i*d;vUq$vEg=HD^P{aEixN|<0v>{zRojJo=;!1EAZiZ86&6?O z6a2wl_EO{!(rnh3e_Dzu-+N;GbG1@=`hJpj{tW)kMu-9r-Mz!r6+5MTj}WHhzwpF{ z7q~J! D}*k*N4gM zLt~{r)pB+qL>Q ? zfhd|Zb`o`;s5u7P9MZ2@W#{QtAg0gE+$pVMBopopol@Nw(Tc1!)K}jdiqzUThw66# z6&8- zbd%;zWt84_t53$Np(Hvk;G|nVRB>h+yA^MA?1+lI1XDa6X^Z61ZMaBlIcb@a-lBWm zbbvKb@BfbHwnJ#}cFPvGH(9{Y|0}7~ _6QhpkpBP~Hcz7y}>mOYBJ%O2J zw|7%AD~-nUs`$|j4Lki@TY+LLejNT!7#}^8PjczHh{@Da5Y^uxY0AVnT}ub%GE&0G zrqVm~{>gBjp{8jLudR{Ai`;|qmhTU7_QsT}qyMP^@ZtN>KGXOXo=i=sH33o_xAB|I zI$CJhvSmzvc+N# VjXVE(?IegT8>n3y?&M_kBr@ysddJyh* zoYWhtHh)&Z(;KW-K^yqtu`mW>^5SS_qY{S|H;;V4?(8kY^=ygXXswY_1Fz8w9yxq) zxa?u4A|17F*~@;tj_oTp%zo1jkeYI9-6f%>7wwz&R2A4HZ!43UE;~U($(NeH+MCDz z{9S$*p^e;6KvjI9n$RxRCnbivJw#yjjDok_n{&&U%`VtIse-+p6T#jp1t`~}m<)kg z$@ -I)emcAy-=w7%{d$v;Hs^OMxJ11|q(#O{WXp9b`?9~O!Qh~7zJYBP6f2s~| z1Fu%MjxtK%j|7NdmV}tWRn1)941uigpn4pKLhjwvD?(3I{ro4-X74cV6i24>j~E*h zhw-;1Jioq*_O@>b6w*+!HDA;RO{pA9di+kF`93rJ>CD!$3|DQdzI(stLH|bYi2Pc- z@tZTj@jh#qxd!bU+Dpo8O>PQEOI*WVdRc6}WdJLqM3}zCI=UcjvRZVp*`l4e!cneP z0%fH(VZIyyC_m1XfqQ>9ipdl&opolmK%FnqDCTHHTv|@0ECN^Kg$on{?FTez$~%g3 z$ _XSz{a zpvQ70rg^E1B;0NIq-?ls{zO^Zocvssh@)9kJbbi_xj7Qe11M#u+2)QPJ4S64BnYS> zvgu3^FOAS}g-H8RS7c1TK`Y~7;E_E94aCQuT(9mtz)bhTcOkOghpg7I_TLzmq!OTP z5se1LPPAyu^BH<3pNkDZcx;kdYkA^Hwww|R8}cV#F{-M HCXLt(Jus46Kl8}^%~4iszFPWWN>nFnq`K%eUP4AQ z&U;ufMhlPZ-_bQbjM`T@UP6qahU+-pSljApJB{ MYi1WrY=!j*=3 zUfXlU{u8(VjaUjG9fdh+)Mj%y?085nmbuYz!Bg#`2;^CYtx$Ogs02*Gq r9j+G4wd(q~MDZAC9MxpMdnQ&mnY1xWwqndo`(zU2Jk2AE- zIN7%b+KshbD%aWrDYYBr(ZR=YlxgWZnv8DDyDip9&eu-BIuCdX2jWztS~5dt9kOf- zGLW57P`0R{?B*>fp3+AWI~lY37rMY|ajNaAJF}p$^_~;49V~1LMmdm;Pn-pHt<&lJ zsy+RrVmoV?vb|_!W9xSeI0U(4(7~w=dATkM{lVZE1a$FBOOyy6C`xiZOlKSb7^(&V z{hCsPgR1%S;~wl~ZJ$lb52|#~gxH-CN@MXJ){DoRfGjE9=HWdo&Zh#Wo_MpOy7Ji% zZ`+he4#NW&Z`L^b$%7_Q1c$IrSlYkA6-+o{kCr;WW{=|z&c*F)HM>BL1gW&BJ+V7u z?8oN__`_ZGRYF_q(*MlvjSHwOoiTTEE?5SL5|G~i)OzyR7!ZsXmAfT7%iB#CB_PxG z1(s@umyEW6Fm`qR{*oK>qu*Cm Sc)v$nE!*m!f~aOK2t2fMzn z%L5Rz$9-s!;A1ud{jwDSZOX-3cDjPl4!meVXTSAh&qZK2!sNvi!3N=$@A>K85|nms ziVhm-inDiNG$6ne{^5=+^h{d)j0?Y`vEfe-B;4+b*+WZpW_6-2(fMO#&b*(aHY<2R zn^fQ;PjR&e;hoZE4s)szZ8zJvVX1G?C9#<(NV2E3BDkCz*7`Tj!~%!q&;_tH(SYeR zp^wm #N$>ol2XuUO(z|@R$-$pR}%*Hb|dz zeTFO#UCGvxFbKgd0n aDRuLc8|?E z2g<7lf?Eu-t%)>Wzw)^TZ7$#tZ&sl~UNqxB@b{>~ZQ~GIu()=mzI%` ezVNBh!>q4bD{C;9SC5Xvc`}H{*I
|>ql+tz=C30>;HmEmz-ZO)0}SZrw<{~pz3so zKXwGNA*$gCZo!LmOz&~xQjxBrtxsAe&KtmQr|Wi;J7o#0I}EkH`J$Rb9#aB-%5SC} zhuxFQcy(h%IH!HY`O=^>w@nsgv9wL3E*h S$^Csgl?lqYp2saHyerKkVPi5NEi87@g z1U;z2;xZ*Bm2X%Vw_#1-Ri!o|+oj+z^ZHiLC?-@I-I_|lz`K{}$qI?;oZ%XgcAgRv zG)9w$MLgxKLnPY^0te%gXrRy(e?MfQT-STk7W6n)I%cgiP%|9rCZb&mHzg;QN LnZbko_fwE=EoI(_u#&_30h%@n~b`!@e;B2PEjRwte){OL5 z%zIg;n_-7ECP4&Nk6c5O7&&@YF!R2FLu}y}~ zT1hxdq^Jk5j9P68SHk2gg)d4>M$IJ^LE&?}a2Nj2!g`mPoYYFU8h R`qeM%uVJ|; z$#CI%!IWUCR&P ;U1I5 ztanze@K~Y-;`}VA<8;bt)abo#HqF*WYs;}%b@X^|>hq*AQ=IaFmF(doqvbpkoHD*N zPRD9^nnjG_aSHy0Ng?KwIP?N%lFP4Q-;T`(u_>5LuGI%za?2LtAF&u@CNGQE(NKpR zci*+cKEJ{5SX#`pYEW_`kClP8s1COqQ$1cJ)jJN&*@M1tyKeoqsgfg)@~880wIgs! zI(!1N@3f|6uiY@YE{w71VO02ZrcCcVL$r;1+@O}{vXv_etvf~B%HLz#kgZ5mfpajt zBwJos!{gctc}nQEq}v=3Y^@U-)tXyDIBkI;*d^y?Jd9n?nAIid*?bNSjyZkCgonu_ z!oz0pG>lW;STQPNcOv*6fm16U(#St&P%x3ch=UBPR^a=d)uzGnLSC9~*fX|%=Cr`a z&nJM4Vew2_@8{h}gwEU^g(($b6FoZ_BUgK^jmgesXquKqDTVc6isf@jB{hnisEO3W z`y2^&uj_9Q-)A<_a4AdvC@BJ+)PAFZm(zb_;hd6Y;#^fxn(`F-=EC!vz9z4Z8?$x+ z3URv%7y$yqByKSHrXhwr>MssTr`D*{kF*pm0cI6y#$bXuTwsI{mxe5UxS4XiCoz&- zXaF``7%VoFkT!>f3>}K(tubu$9B!E?nqr7uEeMC*m40dKxSU*@I`TIp;u*VZ3MOVF zo?PFx*y(2G8m_4!@)4U^v9t)#$vKO0H8y7v7ZooCLdJwH O zJ>!xmzA#@Y{OQzWQzurPlip`HB4|hd5LeiF$y+zl`Bma8*^%6t>-BB&LH(TE@b5XF zxQsM5lOjK5D{xsBod 9&=pW&(YhDKQR$2ioKdom{j$|?QUU`wK 9n_Vc(f%syL1r?1C=e@XPwJ2ig5MD6ar&W+E`zhLq@`i1K;xmCP_e1SS zn1YR2O|t(BEWExMnl^1k*6Ch6y+*2WVb@w?>rN%Z{`Epwrj<{jAj->W^|(n!#vS}# znw4jvbhr|#m;kbZ$}UD$2h=HHsu;D_IMbS4M%=hT#v>uK&cI3Nm+pNgr!INEU7np& zea^NkTcth(9apJUIwd(ct~4733h!RYenq!lFEj7*TR$qKJ~`Ae-qRbB{U$R^&vV zoZ^U%rR1MeV|in{Nw;_6Y`U;6 MS6#dt*xOHM+cjR1-&x{6lgZMnB`e40;&VMK%Qx zE`|S;IrdR~FRYE!yN+0ZGMR#ZU*IJwnL<9jFyk4|pBf8Hoyvz!in%ShYat9W1?2SH z=cl^B-mUJ$7~JgF%N7=yV0|m>ba;R$eL8v$DtD{T+*L>RMdo8fh0n&;=8Fu^h2o-t z^yUyUgUTLXpfUim` ;G3JAo&6^i)rB=hHB4Hf{c%#w@x&R85^lYo|)Rk#EGE)hk)J6#pfu5G*wv7QH% zmLG>Y4NsSr7aFMNT}ci*u20%Ca2e5?K7v@#-@{a{R|xOksfI3Ve8$mL zs7R+Rg$?*!))m(hXCJ|{oR5rAhSy(fiJ9z46cbPtAZjHyY7RWsh`WPi^& zc3zc;;uV};7DG%FtgOQku~Xq3g^-Zc)B3*HlXQ0?O)_cOM{S+UtVQMVopVO|Ni)f) zoQgF8_wz^A$X>Xb!!M8;q_2VQ#E7#SyMsK0qnV7aHjfrmkLq0Ym)1QMTHrY4^kMS` z%@i&eRz8p4;zLJ9n=%}hfF#$Z8|qtdUXq2_A4jeWae04dMzb|};W1eX-g%Rf(70q% zE~ GKOjO)bCr0%hWH2zmIwii2%dkcFD$L zAbDiBsG2`eHFXoAbL_`?Ogd*M+nvCc6Oh Gydf Ck4_35UBMdx@^v);}$f@@#pDV zi;ja88+kt>K7wUk4yMr>n$<@(5{ewI7;Th_cFh2CX5JjSC=tI~W<+}`P&&7*jl~v$ zHY%Zp8M4cd$FYxPjx7s^{f!>Q-Hk|~aS}~4Sy11dDOQ#?YIM79Nja3@d90tpsCU|= z2xfGqc=tfq>&-=iZ60kU;TWqxmLb86Q|G0 e5;;5Bak@@ZDwi&}6G<+3Bb zvnAiN^&flyv(5ipuSIYxLClmAwzOEh6Fii{Icor{58qdzGpm=A-aSR6l@TQwv_pnz z2s<(UM6Vyjg)paT3R5Ja$%d5zy+^*Hl( %(rjCnEz@A{?1|ie=O^y|37aBoSaQ;O&p!* z|L;ht|GBI5|3`S_|Nfb^frp8sw8g)^|Jy3lg7RJ%eE8}bCGVazji=Rcq)o|82Mj fTi}E-m{VLG48C=q=s8qF*Ti3ks zX|`N^-=4T?79;#s@O8bK_0pN 0!}me^+rzLL6od-G8o5-Qgk#x@-E$md zYs I~+E7~>hlBdR1n0y5 zw_6rHDwGGe&v(BV{#}?P@ONNn^)d!@N+qN_` Gs+{O45PH5?aly?-=9~(nF|% -_Kr!wjfb7mJSe} z$C7W=T$ozsq7%~ku>Drr*>;rNKRVBFIlvDf_$U|&U?5F$kSK^Y33QQRA-r`jkI X8$}8SN;#r-^k4Vp??ltOG$*I~h{Fa;h({Q5)Y4Q5|1_+swzQSV0Lzn0 z1S(5^9!i=-1Jd#p^aEZsD8?5m#$aiMvcAU*IA%`aVsTcSYow`?Vk(l7S3j!T56%1* z1(iXjx%Lp8%2k3CZD!v%UN=7Nv24r}$wQ-gLG8rm;S1&-Rj8Gy!UlFvFjFQsNL37_ zP1u_dt%2iCwM{CJ-&$uH=|>H;UL!-pv&SJ!P^y6o`O7Ah6og@qrE<+!^ia%#FYzAr zqCD3`=FYC~aX%|3L*kkT>KXE~)j+>ZojpPH{ji8|@h1D=xu*>2hi39%88*n0oovXL z+vT~2vfk_+8Oo aBoj^AsZj-*4kKJ!T=gmS|5u=837(HtA@CX>kPH9N59rUk!j)xxB ntal>lS+Qr`(?|o-J@wWgLzp>R9 z?$@BmI)>Bn9VlEW?Qc%Qdkp+mJp3N^qjp}nXR9`(ruBLS?5W$T9uJ|u2Gc|CBy$d* z{x4?$fog=G qwmplvps00uN8Xvu)P)MrY*e*?{;*7Ag= zay>twT;98SZ~=7a#6g35YZ?-CO-Wu}oZV5mQ1N;va-rH3=3Qxo9bI>vyiY3h-5B*L zmQp?k53na4HHih({;q?gmpmVqie%30@#v%E5L*q3dgNvlor+?fi@vI(FwLe@IL>L@ z`*tQ2fTrs=5`D!yvfJG(_9E%hMj-x yNCDuBvfC3eR$G=;kNTCYf5k!FFuC+_? zOl6>L*fbWgT>8h<`X1udM@EM_)GPkQaI!>M_)~iq {4ceXZ4EiaanqAQ3BT!jQ +KsWN}>KeV_J~Vqx>7jsrwl$WNjUAo8pU4vJC_ScbQZ7hzbvRq7 z>P((O>A|9_`18QQ^QhUh8N$exsQOxZnzCw87JQ=9MBr!CtMYjfR6O|{DVy;UCp>!o zTY|B$DxLhvA1dce0VOgSC8&oMAybC4<@8QAlO<|}mQ`78z$z-}g)@)c+9_P65~CRo z=Y{e>RbP5rl&KVTu44UrXvWK|xzux5bBXkvgye+wsTggA4U5{`DE3J4MHRd&6IL+; zKe4HaN%6Ep`sgJ+rsg~b>>J5v6pw)b?$Vjo5vxHG^q~&F;g*Gix^=cd#0mvzUpaal z^f|m{DC%DmS6GpCv1auIdu sJd4;{EBZg+*Nhi}H)J 21&NUmk8*i;0TkijtbjXnXbIHcXRj=@$F(YO+8zDu!DhS*2gHv_317s_8x;f*TZS zR_K!M0#a$Fz%nofF}UZqCR^@z;N`05hG$Tfj~4Mtnk7awpH-S!LAHCb!#vHc*}HS4 z@+93mb6EFG&9({ofYYEb_tIcd0E1`Jmi8n4`%gdP%2oYBq@ i9;M5%%YP?x D4XxXag{ dy#IIk4!_l_n+@^`(&iIp}zA;Jk5hrk6-BFM29d>n*%2V5awh9 z@#F6qc$sedgg0#fZyk7DvUp2#dm41WfqaYJ(8i9@zfiY8J1MV#g5XW)7>93*{jG#r zkTOtzbDnm!f~tg?=N 7mc;#;%z;{ZN@|*96C&^LJQJHgu?mg6H33hS@3i zAU=T}gV}_bmXP%=F!5xlITcr$t~1S~oh8+U6WS_NA5!sMm5F@)^BW5-MO95*xlJm) zddc@X;L}Ujr)_J=OK1=0*$XRAq }cprAQ(824@zFI|P!R zI{r3NmS<;ZJ7V!$%HJq((u-?z$CPp!9%9HkD CuPxc`tWmp;#W~JR!)G9ImL?A(6{(5Rv z-oj-mn|DPb@wIqA7%V#X6jmU|>Qf6OeFZBZl+m+h5X}*f>njq~zJbd~*RotzW@Tq# zEx%!*f=vifVP$==q=@?&B;-G*rI~^4af*daT{xmFZy~64n!aY4^eobZD%;u2S<|QF z)7D5T2Casi*G3LEnM5onaG_aQQ3|fuf|8!`i%%h3!cz@Su8&tFeD6LWRhagfg{mk< z{x?`vn&QM<87hvXpj!ZH5Xp?j0J;<-w*e?!d3t&hrbsC&Mf6O_^N57v#4JfvWB6wF z5(lVUvf-8h$rAa2qPJ{Rq*NqnT+^>`Xu9VC^Ihp;Nr!Ykr8)h-?>>sOeC7t)>jTJC zWsN%I5Msv}B}s;*s>1^S %_G=e#wDK-oSp&h;UFVvd{Liy^@Sl{F*Mo^ z2VOCz`SB)Cm)mS5g7a&LwGP~wMJr+y^9bj+et?M4`n`R%B+X)b;8xrfJ=6h7V1KHv z%PC1gwq2L^2q(+8`a@SumtbEZBvo|387o539cI0ZY;RbwnuEb9*;MC(b>By5pQVUo zsF3cLqY7ivJx-CPRQ@}{F*)A*4j7uGBY7y-z~*VqL)$~m$?ZL>yO0mqlG6(~(fbd8 z=eomj*hB4Ui#epZr8S;_ON ;(P?Sqk&?<(9- z>
uFtU>*HPPpMdYmjYW+IkA|q zo>7Svu4!l2fHHgjYrKex+@VcGS5a7JSJ^4!Hdm=2uTr%+r0XdSwdnG}m5OHJ?23_S zuanxHm=5}}RxsMqU?3~Kn4SVISmM&)P$*~A(uFW?Nev#D^p%cP8vK)t(#)-6s?S}4 zO9 fN(m-!#w7e6n~j zkpKz&0tWA4(x N-~3sTNX_2C80Tr}Ra32&tK457l+9B4)!8ZI>q*wCUxS{8 zllsZXQ_qLFF|*A+Rvy<+x3JtX%wlfqvEL{X60Pb5>W^;fTByY1o$7XBGf^pqR}(Q@ z(4w;eL~Z{JvFc+>(s`^iFKhjVKx20*{%$>lC|7$C8CD#; HbCeI*iu!msVp) z6etB;H~u=K4-JG=&>*nJf@dnsK+4fH?of|)U^IUbY@Q*vrs+CFErZ8g{LmaxO?h=q ztBp_zh4pY)*|M}dz71NbbRU)wM+5_)F%zNyKF^DLPKE`v|Hp#8(TOe?s>fiV7b5M? z)xerpuI?5<4!!(l1e%w1I`0u-PIoagsA*47T5709YRFzKqKNq~#;GCe3K1wS`Cz_G zfEDA9Cxf4^yT&{KrEAK=yIhPN3*{Y7 $R0@*LiwDW5gj$4ZIJ$-enKy!2 ztK}bPb5|oaEo|TLdF10RWw+(v-8`p+gxrN|tUXANZUlJZP&Pw~*Piql%%%y0C!nSw z?fnqxVRyA)UtH(nQ^d4xF9MSX7!Y=oGOspcsIza&g7#4BztVrTk}Ny?n6o*E{%(B0 zl^Jmr2-McT46XDfS+2#fgWol~(V=r5#~kEFZ `sMz372Q1)9KAhkm%afi5Nq!Cm&2)2(J?y< z7eDN4qx}kewhmJj=i#>kld!q@+ZFfT<0Sv4awTCugs51$DxPq5H!T<>uQo3LWsU3a zw`I`ZudDol<;VegAQXOX^*bN5&kwZEaJ0|gm`g))J87Q@VY*_#{qW!75N(Aq-G~Cb zusr$ecLcQmfV-nd9BW4Q+ey~~3sP6)kx+0V){t>rhkT}|QdjJ~q^(;R$=R$WkhM7H zhKQRym8@wCTmDQLc~0m*U|^p6{dUTCuQp&43+E3*irclL&Ge(q^v1!pyxs;$xRTEe zc_V;It$TB>tGwfrt{*bH>bLiT>Zb| ESrd*|THzO7q0 zwrzE68y(xWZ9D1Mwr$(C@kAY49XlP}{LZ;`RrQ^E-*4AbtDb-M-c`HSTyw2C#vB8> z(GeSRa7uA}lXgVar;x6EP>sE=ssTcO(I?w{5%XlOV;#}CGNws{@N>K@BihQ5z?my# z6*DRxO8eb$pj7wnjj-rfJI`1@qkJEfJ|kk@u@SM13FiAjatPH?Yx3Pv@?CSX(~r_p zbhl+1MZOhkOj87 zHUr9c!k z{XX!NGOEAMU=#{~UoBx6<$&duf3X(vQgECQ&v-uh9p}Xeu)MNl2{^wt{St_B$~me4 zO&^T01$x~qhVRe#qr(XVDS!nkf&KFEVdAckfNaj%L_6`r )eH>Cf~r(UZ-KBBdqfHWR1f8WPNr &G-f+7H{oilxx?n~ zBjs5u8X9Fa251z#qaAlPzZk>5iZ+o~-lebSogrCn;*H62ckD_j%h=7WCj@Mw>MX@G zi^x{{cAOWq64{5Vt<@9B^Q4)>+%?+$4gkR3HQM)pvb`SEP2jh&brIQbg=*W6RlncL z{BFHWKXmInz29UQ@ABgV{O(HAf;fu?mRSaUgyQ#)j< z5`^! Vyh4#s1V+pa|j2;+>p?_zb VWmF}y-9kMrN6e$aQ&@MAjb&i@W}X) zb9Z>uFd3eZyK?N)y4(?`kzRy%>8cvvQQq2AB*#d}I!#IB>WJxPlOym$W_z}G_H6{{ zKFn1Kv9yo6&IBJQ_&&HJ`kN U?ELM|Mb~DX zu^^ewl*&`lS>q<7*9!2COyUdJ3Z&N|3lTF~wQSjQdC2G*ZvJ#b<8 S_=|oV={3s?MIiZPJgSloCax04vJQ)!qo(L~iaS_@ z=A);@4-LJ{ixAE`4TK#W)hU5a?RS$Ov y~ N0a)Kf43$5)@ Ky!EN**aNmjE#X3|(ne5S3hsU#(UFqpTeevBHqasqwiE zFtBf+Xg=j4wSF@uWFmE1DNjC_;8x~c<>v8$L1=c-i^t}!vGG}%)?JvWQrPiX+|R(A zIu9Z1z{UC*QlLZEvp%%5zt4Pxc6Ipy_P-^2!VYfu(;E5?L{6S{I(x^0zo_)$kBu^4 z3f+*w(@A=Zb-@5gC&NB76e$nWsQPBBq*%rY;qz`$sCLD0_ex2q8^MCw;kGPa!eT#` z;tFfD03|+1@&X1GIjT(^r$+QkQbr@|=rJWa$&2(WlhTl9cN@FZxw?&Mwd=zA+p$ZF zx(x|`k_)?R=hnGTu1avHlu C%yCBc3y)6wG_$DWO*8SGD zLbqet*0BmHRA;Z4-@L(`l&{sa5e$?>&j(Z}K{ur57U=m^@y8k|ED6P%#$2m%^^46P znyh3KSdDr8zj8!x5vK?HG%i1fkZ(X~jr GN{u+G zW?)UmIH+=%xNlG-yM;6zOX7A_ZqXg#VehTbBCSVUtIug1OWXBeojJ1itM(zTZZ$_@ z_Q~mXK^=h!>%pqMHr5Ql059$Ag=nQVQSF+WMy4&Y4nEPE)$^~c(~yl>ByHUp?J02k zW;{G~h>VUAf^RA?GH;>F=*xo21I~Gp#+QAewJpv5L4U7fHsz$p8xQ?B&7Dh4`FVkY z06f~0KOEWQl~t0Y?+q(EIQ=RuZ {(y56FGyVyL_VTSy;R>nb+QAyr9@*ygAt{{$2;|@D%^Tb6_ia#o=O?>^LW3 zmk2l}p_lYICE=I&I~+tW_H|%mmLPUaL@bVdV>7JNGcV;xn}=ee)Eu5Rgqw%rAvsxr z<>R}f_~@FOGU1Vqn=;Xnx0^DNkv?|h;v-;or6MCHcCk^B6`L|Kk=UCuQIQ8783gE} zo71~0QCS&^ilZ~t<>^y1w~CH1926oWK6Wrgg^5{(w+2gwSfw)Q0(v@ZhQzP^oRAfaBv zGAv4Pfq>X~{u9JV^ &;Z?3hQ^P@oJBOcRvED3qX_ %<~A5#CU9%MjdasBU8`aHdeNdz9LRUvlYOIw zne&`Ojj`ik(*um62!H6uRM-k`Ou{W=x2iN0qoaqmtdn8k(!kAa&bx;uDC7m7JdBKE zOU@mDB3Fbzhfw%dh#Z3XUEn=0O%-%IKtwf!lRk5kL|XcLJwyidn5GNB1!>&=bZt)y zf1fLZof7C}m;3HItY^TQl*JA|7`~1uuc0t3XBAH4%(iHr)6+Va8HJn6`r |jWa8WiHU04Nw&Zum=7psWri1{4Pvg}() zo1`|m7+YTC&0Z3tm>s)bdR>`OKBK}O(MX}_hEdXR1n2$J`;uYFeKb9<^eSPIX=z!7 ztpJ0$(oEH?0i#SaPV)5-B{f&Ni2!Tv$^M_&oTaEbhx^?D`hVLd{lC+Y_rEm_g;a#? zZ5`}g?Mz6S{^ul2+K~q+ppEsJ8gGq)lNZXohbX<4F#qf)B!V%P#u#J#9f;Viv7S}4 z)*`(zvzrvr`(jq;|0{yLw-U=ZnwWeP^NaGJ1Amb}9ZSdU`q^)mi|=_G0Lbg>y#P)Z z<&QuRF%iM$MowZZ`TZy}w731k&dg IO_AUhCNNPfg-Pun%O-L@dQp<5sT0#Rr!AQOn9s*cdTL~B7P5L2( zI8pjf6(}Ga?V{jkg@CCRh818^K}+r_RMGGdyqY2SQzkacY?S$PI!dCfZ7h-Z_`I0$7Ia&V3`9+dM8x+m@>-#j+^`co6> zm}AYtU|M&nT^^@SgdE@vdG1Lx<9E2V4>|~Hbgi#+TUO=P$1z8T6vC$3=NPnOt*2E( zig!*kVpD4^IDAl)VwDb=ZB)YCql?*M+GyAQjwR%ub6|7%+jxSdraI~hU6HT#M|(r( zo^%+K4NwnfKf!Pw8f@{cz_0p<0Uwo?`AB!AqSDzD+*?>vaU6P%75E&pWh%c+pip+< z+-SprA9Df^T%lkr8(BkTJG&^eQ36`ySZDT!S&eM^Q@(8R115DOr@Eq(-d$OE>0|X& zI$6nb;mb%g6<32um((K^s^%AA9`U8G?3K_b(dSm418L_c#sUvN0+Jg9rvw)44Qm13 zE|MW{zu}+?rI&~UrH_sSc^w;-X`t+Xy5DsvbaK^zdXe{YJ za>kg|B%Rx%m@UDd3lh#P`pF(|u;eB3_PO-pdxvSd$$f*|*T_D??O)_@24tz#WzguD z1IV=8=i5b%q0hXTMXNtdsXx36r`tYkrZk9SNTi)(#TNZdAEZb8LH~&rnD4^F;CHO3 ze|y*cZ$8NX8!O!ZKV#+Jkuvj515sIi ``ZNGee}nd@0}${W)-{?Ma*{vVv#CCDLvHA!Ojh%m5Z+? zWO)Wxht97wS=26Wqc43THA~&TOr=z_Q8{gAOKolcvDxL-hd!>aerBVwp{af}#5@mh zQ0K_CntSQ|rkheOPr>thkuu1I2Y%6#5#BI!W8aqH;-=#rvwa -8^7hQ$tm$ZE0hB@A9tN6z8xB#>`1&RK)nKi!mrvu{0<2PqOHbbf-7& zcq&zyN`kWE;utD%3D^&GD+49D$rur zUt!edT~Sm`%oep;eRG$VDa!K8R9Q|29SCLLM f(&kZOco35{^c9Jzt2KQZBd5Dgc$yd4waBiIi0m zznaMXrAwt8tOYS3P(-EHvBr96)2_}Oy%f0CEv;@@^-}-(E`&3Wqs?FD$v)X=pEU;q z7DuU**LIO1RiPnA%0)}6M8^C{vyrG?nYV?9hkKWLZ~|1T&f#^{yI|+0WSK@yt*(+< zS6N%Ft+chaw6HSUQgml;EYGB%9>AP4X~~s@zpZfoz>`7noqaAro5zpPX81zDXXnpk z1pVXdost*}c42ZV%W+^@A<#BIzLW aE$hxdR9*`jayG${78o<&nul4yaMDf z#e~pm+&U@2j7nAk)M7e?fRY5HG*vZB>F~5a56cqajlbp8gMaF*9J@+|>jTcHnaoVU zqDI)*M&Jvl5OQjvFO}>rjmrL{H rL*i{bWVX%_D&3Cpp=XrvaI z({}BYeVB$3RnyhgRMR0-8@uGbEaZu&ATDRB;WwPx_h34u&$&VXS0Mm1DYFl0_m5cJ zICk;^o4r1Dsq4>x$d<}4@6j)VJQZAOg|Nz4?}NinZRO(ODH_2~Am=Rx5S&B6 !ns-tZ?|YJ@@HoU&VtZ)RW9yNbDmea897Pu;Pv1j zL1eNi3wJn2ALg S&Cee*x|cLEmayi-JqVBToV{dF0B0dnX@#o=LrW z8R!G)ok_+Zm?l?CUaN|X09j*CPhf1B>$l2rP-H>fPL&H^S)cOofw0FLqRU@HlMAhu z%0iXqPmMBj65}+B7JzfW8kzEVfA|mX9;8l3T83I(XERMIsmSe*VYQcu0H!NIO$=(mH3$~PfrP8<6#2~GY*7VgO^J?NRF4s5iPKP=g$MA zVS!;dY5~dR13loq7uNO()4hFa*51)IyqY>?+nl>&`sDsExvl24owMv9n1Qv@PoIHe zwL1UAvZ@+eC+;3$!boMeHlmLow-2xZmvh|T(&I3?dsbI1so)#>43Sr*&+|L3e<43m zDLTwlH5qiYbI)-@O86Jflnu#sk th+zRN`zN*uR$=D+-Y=H%_eGXb$jO<`@V#i}S_H9GO|ZTyHjM<3cK*GPUN9WY_Te)Q zOL>qTSOh5ILTJ8 kFN}r7pFM zDxqcu@x*>~A|4K(q`6&|j>TCTm)d=+a`eT>=8=|)soyJ}*;DOeOn+%}tlKdFFt*te zvm*Q^Ii-W;V>(ss+q33>d}7zEnSXQ{`~ZHTUVZgjXj42PcZ^Cu6bw-?Zkav#wjFYE zPleWzN&Cp#?hu8pjIq2pG~;PI?N-Z%Jb4s%c%m&0`Q4(u`I-7ila2p7KEZZ;JT&^k zg1M3S$A*T2k!UTTLsetv>XCTLp%uD!liPkb#>yRo15)O !EVK1)|BF=IG)Q3%-SXNcF2U|l!IN7r_IvD(!_2tVr@Bx-dXKe5Z79j zH*%#?P9#- q-RKG5%o%!j$t$*AJN7ZA`JDZx{&pVap1Ji(5r!>n|%a790g zv#W}IWKXJItXlkwn8?-91FNjT6j!Cxs57a-XheN_X7x{SlbKBk`t1LtxrUgHzNWx@ zaJcqH*t4T>)j WDrJzSvs5+j3tYZlF7OmZ0sxG~$xJqy+Q0_C{T+^&&wH-TDla z3xzA(+DVXoH?-G2nWfduQuR Gw4NifCaJTt>1$|<#N zpKKKZMZjhO*)I5StiK}T4vRTPBz9|FUY+Hng2&@(OZ0z*B=0GnqZjrU#s-aR0EE=c zOj`a@{{*kMkV7Zv3r;WCOJP(gJIh>nrygVpNjF4pfr-{4aqJ&QM?nx%qh=Iqjsz70 zuX13lRP%YnK*^MkB!NY4)AMb^fRk2yQw{eUgp5uy)FFh*CK~c3QXpKtI!+ D@UA`ry(Xk-4dxM(d{D K)Nvi`6=hC+3Jid2_0Ig5nU%BQ=B!;H@-#((Gc9tCbN>hk|4o%QLr2$*$bP7V zsn9~i38ToSOVHP~rFwnkGL$|-5Vv}b=Dw9vkY(gBEtFsyr9Wv9^vrJGpCw@&71IcI zXWgUQi?Pbwwx$uL<&s4_Y^bQ_5nnXryRa;oL>0tJB2_AL%frNL8cC=$;Z#k_cB@RO zX{L-Y37$+!4~Tdr=)NSv{Y0K|