From ad1dde481062db031f0cbaa4bf57f31b6a99d045 Mon Sep 17 00:00:00 2001 From: Ryan Voots Date: Sat, 31 Dec 2016 15:57:02 -0500 Subject: [PATCH] More work --- .gitignore | 1 + app.cfg | 2 ++ lib/App/Spamfilter.pm | 4 ++++ pastes.db | Bin 12288 -> 100352 bytes 4 files changed, 7 insertions(+) diff --git a/.gitignore b/.gitignore index d38c149..26fe1aa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.swp *~ +.well-known/ diff --git a/app.cfg b/app.cfg index f4a3166..3defd72 100644 --- a/app.cfg +++ b/app.cfg @@ -15,6 +15,8 @@ max_size=524288 [blogspam] site="https://perlbot.pl/" +url="http://test.blogspam.net/" +port=9999 [evalserver] server="localhost:14400" diff --git a/lib/App/Spamfilter.pm b/lib/App/Spamfilter.pm index b21994e..5da7290 100644 --- a/lib/App/Spamfilter.pm +++ b/lib/App/Spamfilter.pm @@ -17,6 +17,10 @@ sub is_spam { return 1 unless ($blogspam->test_comment()); } + if ($cfg->{features}{akismet}) { + # TODO use Net::Akismet + } + return 2 if ($who =~ /^[A-Z]\w+\s+[A-Z]\w+$/); # block proper names, probably spam return 3 if ($what =~ m|https?://|); # no links in the desc, maybe relax later return 0; # we thought it wasn't spam diff --git a/pastes.db b/pastes.db index 7aade41770579a502bcce9029b95d796b3e88046..c080647c546d15a5f44a088a53952c6139edf212 100644 GIT binary patch literal 100352 zcmeIb3vgpudL9OnJ=-r+Ywg3mquJG-25%35CIAxPn`pk8M0fMmWRvJ7XGjj_61XI9 z6Tn5|0?lS~ILgfIL$V|%c3I_AtZb}`DoQMs%So)LtR!+ArJ_VuTqUI<%aunZa%!Ve zIf>=X+Lg#_=ljp&;sOLnG`rc;J&W6H;NEl3`Oo>!`CsQh|2bH`H)j?Nwq+HvdXe>b z&Uso|JmZXcJf08me-r=J)qH**MeA4xSC-mJ*?a0;I_BBtNg^%Xd?19&%2NqjD zccrtl<(;CwnKA4~8E{I{HXfCXT&nu9ZE`6-k%+Uz#Lc-ltIF%o=~*L)l7WwYq~-jT zD_2@RI^Zz#mR+>@M{7lSp2YlSnoZwL#Bax!*y7Uk{KV2bY&QN5o4B7?n7)ew^YOch zAj|7EI5-hs#r@unCGUKDJ4V6qIqBeTk%eC5eC+1*ZNLt^fwAalyGJAPe%qh6{j;_| zY5T`*|3}*&w*Aj-f6(^dxBdOL|F-SFYWq8Fzuxw%ZGW@vm)rimwqI!b`L@5(_Ltgz zw(Td|K56@~ZNIGuzJAzdw7uW9*7l(79y`s|(SGR^#q821d+1-+0tbGr4uHj=_8>4) z8}@iIwzp$u48Nu=j(lhjzgGi>f6X7*2n-KD2^`b{qCMyw@%#Kfol!#$A- zD2J58Dy034p|y6gfSaldwFkR{k)YQb2!sZD4=E$l58Pm~`+jXYsLcj7#%6-rTwr88 zSp_AgO^=wlBJy3==DW0a12JuuC%E8fv(CF2k$DCQ6@Wy^Iq`N*WoO#$5qA&IgtY0H zc56ff*_@mB>Uqz!$JcQ#v172DUfA2wGi*~&Svi}5>au1!XKwElw+e=lv(iRK-Y8`5 zT5Ou7@y1tNN&RckluZM>h8Hv9^bg)yMd_U&2Si#>a92A4`w$aW9XLMGGGbIegsB z;A4IlA9D}!F>B&uW(ObBTllz>#>edxKBh?4#q0RE@HRfqe~ol=OWXH7_-kIx9%%N!4?_=J zY-zjF!flKLp!>#LNSlpm@e#kiY5SpJ)O9;BI>M7~1p;H*?P2X!%&*07bO)H8OIK=K zQci&pzs8jlV14kxNVq#90mU%8@N4EscT6*H5JWAGyUtDqovKZRMh~=Emy%Movrewg z%}$?~Z6sKllJ`ie>dYSLNEB z5iLntQ@cCzP`g9wQd{76(kQqSIM5!E?mpT$smirGQgO3D%-r(#Mn^`pM<_KT0M60Z zp^>o-01A!t_QbR~h8)%Kt_{Ud#E(4C>|J=6L#EKsb!{fpi#I5FsLgbakjkCI*KABz z)&RPj%>`oB0L5!(JPw`wcZ1qO;1G6Cc3(^Ip3wHG7kHm&iSURRj{U=Gh}7-L!!d1r z*vEW_{!rggINUb`8v|v$>p3ryqCMeov?mbD7cg$#bz|+0mhc{Gdn3$vtY<3B85)!V z>}a!KuoW{0t7&)=)`FEWhKDEaE>B|!H%GL+F<&G$5c3Uty`Z~?L9GkwI-IsHKA1ZcxhyH6y4Mf?6i1O$J8nJZ$%_!>*t&v3GrDd3JDmV*C2y%-Z#t z@x7(P>oZFm*YDAjFI)|i`EE{JpSgz;*JmaVXYW7VxH&OBli>N6#zISL#>V>6v@h&C zOyrPnV{d5!Ij3?%CF^+ zxM*Al;F+7#U9;1NiNW!)#Z)@Cwf$i7=2B|022|!7o47gqU}FPNR@_i#CdUSEqQb-2 zgGbjFX6|)OFRlUd-n~Pz1U`q%3&uh2dOW_gI~c14m@(fB;oo&1#nWpG)8p4~B4HI+ zjP7mRKb%}4xT(R}nXv`*$o;Ma&{`am*i7aUMs29fcW-)Pc7}%Ff$X}mLv-%aOloF& zZGEFBc7Nmkqw9_ zJwEG;k!0IB(AL=qd$i}j#@=S*>`7n^Oh#o25XC0|WxX4m!8v1YF-E+pZN{#pv)&+y zSOUTN1D%oXNT|R2I)M7My^~(&g8Z zYmtp0VAc}Kgn;Wxu61t&P<)>9j|TyP^DVmk(8qNM&#OHhiT3rM*gh81o{o0MnD!K< zLL+FWwtCe6uUvq z3mlPmqBi$u9&I@Ed%d7#=Ix0d4oqney*xwMdpL2Mr_-ZXD;+M}_MY6ruvfDWS8j6{ zxG#D!rR4Bf*cfEHULof%FBEB zZlev%c!>yAx#-}be{Rx?maAI$8$6!G(UgzS9d;KCd(r)e@$wLhdc0byvFrh@MZY%Cc^I~8Xld%Vpf@t;dVy^I2Ec{AQ!!U5YMX|RV}Zki9e<=>Ac{}; zJ0ijE6Pp)^?f3^>BM}}Ngvr$n0Q9CBUL0>$L{X3DukL>Bg6G$+e%bfsbLI9u)7?q^TpJjv z#-{&I^i9+Mw|VDP@c;dpvNP~My?nX+kh^@T{BZa3#qxvq@&)H1{+pN2mmhxR>z|_s z-&^M@coz=VqMkKZHshn0-zewyT|VbLO#R;Fw(`S&ce&MhnEdt2E#-$_BmTeWDR^3c z1Kb>L`KK+v+%nS=^87lI&gi=J_65&JE$wjZ+WJ28-mp^zGhbvGJ-1!bw~Z0+L;bNX z61}5(#wZm1zH}+C`vNz*MDnP2#rUf~cytYLM%sPt=SsH0=1jXdJbb@sW?&_EL3)=` zMi(Z=?U%UOOY$5k>_F35C(|}r7i>74UB_+UkV^FTvIy&mvM7U6>1Bg#uq#&4>8SFL z-_p)|Lgkikj_w+}H@Y@?d;USP1MTUdw=beS5wwJwf!6dyyJ9QGzxglX-t(RnlCcE; zabGyv%kksAxc;Pj0{^GhbL+)hmX-F#>PY;5*)x3gyl0{gm^(%$W7RKv@c}#U*{8Ci zQ@uPtTd@k6G@Jmg?)FAH@sCnOPX1W0O+Waf{;!|+4AqBQ2bUlGmmiP)_yx~5rm5un z+Q|DcEjhA&?JA}a$-qdLKOE?aX(J<@o!SRT3J0~WpcV{j>p{&M)M7#Hy`a_+)IJPq z*Mr({aQqq^CheEBt0Ny$QT&C)mwYHch3PiTFWdmAHxSfNO-u``55P&%J$;}xyi!bP z{Mv_M%?pz#rgdr8*0iw=Evc<*s9rpwUEa5;MIAx-R)U?K?U(phOndKx5zQNWUuN$@ zftdE8c3lDq^ZSF2L-`y7P_OnLrG`h}M$gpi!Cxl+KiA^*KIe=Pk>IL(55%9xt2ulG{cx zxn)^Co_9w_5It1!$ab*vh)jFr-{>}_p6G*Vb(G>SV`nt1`j%O0CL7RAMwctvfPx$uUr?4*C} z-2eo2KnZFr$(kv`jJjt}FXXWNXyZ{NY#BPRHJFdQ<>+i(Fv(0SE%13(!2S{FLb|6KEDgI;ADh~5Nkd>W%wr`bK&SHC3VRvlB8ucZ6Ijogu zg|$pUB^lF5V=@6vQ#7*%oPRvdgl$4u?lQ9&Ua>}QuJ-T>rk}L}6|y3sk(S~W*n5Uv z0OTA0+kBKm?s)-_SFBk4%?Q9b+QjKqyt;m+`@H8Gy^^YEZeb28$nyQIt6i|At6#KV zGM<=4h9yX3d8&oad&XQ@iWn|ozf0xbvtqsN`D8N$9zWmiyY?!H>yBrzdYbZ@?4F8g zY?f?Dwq-ss(qrKN|AqMff@j;)_FHX#p{=9!=UV=-<%#G2M8b=`K583*CG*DDCdST9 zS%TpW@F_Ko%(d-;KE{?|vl&?O(Q~G~!?rT}V{FpYGq3~^Kfu!ZzCDI4S>l2^!UR%f zr&!DncXjRU?S%=rfE_NBx>oWx{^3U#ZjgCKt++)sKj1ZU@CN*@`&Q1lD(Zwut}4CC z;suzPh!bQ}`}S5ThkGk`_4%6eAMC`=d+t?t2P|UMCR&pd*gqfA!~giB?%@lbkM9$^ z6H5N>aCm4aAgpp>;%^!>i(o@TA%p@5e=>I}X#52_wTS3fW^FP4Y~^5{lc}7^1Zjd# z?#KGs!xdQ)`YufNoWau8UXDku+K|aiFIbpPaA=1s`L-{7ba{xV8X^FC#56eVQpkQQTZ$z1=A|onf)Ld1QgK}QbJ<-LFxnQXzVx5 zLD3lLusW;8psM1)0LlAlS(790kC1yPt8eEFr9!RI-x=sXT|qwozl2c#wo>aqY5mpK zgVwLN{3k6lo`2%`DIWj-Vx>S8w9B{Qh$OmP`Dp1A-3CfB10fyeD3ZWP{8$Qc$d!{TD-$`S-uHJ<02u zJ;EN(R9Aw}vU&9Q9`#kuDuTrk+?BI1?@q7e-}}Gcy?Ndfxf+Wfsi*-|s=+JJ2%aa{ z|HI$}f_~qec=Oz%0f}$ekM(Ucr`I1@@qQ)0{%B~NmwcviB zSp#yceq)c(LnA-_(S=cJgzq^UA+_TJ1Fo3DshV=*Pr3ik^Hq=M4?G`wI_ai-wa=dS zaKG2XhbzDIdtbRXbKcX@5gU^n+8YJW+%$5xtxS5;C~VhhfD~d(c8E0o!}-k0FJ8>8 zP7}!KhCx=yy<;F>_;UpE>|UY`0cALTVlm~h-p?x&G<;G#N5P^(46ENOJSM;Po2v*MyZfc#Uva>6)zm888oR47uuF9pYez%tZkrq zTp^F!h@j6{dr3^4_5lXbc?^+~Np{G_9q=l%a?q`@ZZJRQSbBj~00^@6if1P3p&c!@ zaPI{rDgeoyWQ6Xmcw+KS8Py|RK*H1n-9173coRaSh~9y>n{X&6uxsVl5mB-13Y90i zfszUq<#3v?oLE?jpU{No?ChGI=X5dp#ewg%j3)9$)8M|*0*w(7L6CXNB!kG2H44>A z?HC5AZBx(TpB>=+t~o`}Z)?Ks8)Uvsz2M{T3A&ijm2<|PK1tVMu4!gG$&>%ncchRH zW?9jK6O{tRgnOB7mWpKKa9an$e&w70``;k`f1?HV|9dU}vgME90eI1te_5RTFyEPr z=RNjYG2b~a*NU)NbymbghOBC`rj0BlD7KaD%iUZsWS9u93wv+Dr(nsCPl*|=WV2IY@1gd8iWAYb~$yV#)vu0kSt z(G0KiO4a0+9sH#zO|PkPxe9QgvP;(pU!MeviW2lv6~J;q89$ku+xL8$!5Cx_)zE&4 zi+h?Rp;_gX3oTU$jfzV7N(O)S^F@e2Y~@#e@gIHk^*PMF_@Z#l{%x?q_03-;<>VwJOK?}`IUe7yF&lp@U$+qYdwNZj`Y}ESr^JF5u|`8C_&`urj**CZ>4fYR8bRjcW*Ulo>B?A8+o1>xl$djvs0## zE1Fwo3KnxN1^&de5xgu=qRBgN!OHLc%rE@y`K1e<@9{OEj;mcIyU?|1=DLjBW8Mvf zcn1r;z>6W4sskQMGi&8`>2?{L@Fq&zth+zRqTL86i1ZBiM)8JTlGtD*ZRo3HW{TYJ zK_UsfRsCD)kO* z85>?ZYimpCtu2cTRpE6(9AqIkEa{4|wW9H)xZy`bb`h4zi7mlL!Y+Zz&~6NNn$h~1 ziMlxaAa4Mb16L7H8oFHr?ip$eJzytE$skIjHd`=l&}NH((Mzf-%vN>~j!BP1yBKT} zbU_HDtSq!>n&_0OwlOv*O$W|`F;@&9){{#%p;yrNm~EwY4WL23InIn&X$Mc;G*UWo z!yeC0JI@Q46YLAbU^rj|J6J+7ub#0jg;WRKu;~R5GzSejql78=I);a*N?8bBnN;RE zPNb7oHjg=N4sle|OOrLo(@m>E}DjO6I!O0bP0s~G9=Zio&Urya;&%qKx01(K$IZz&(mK-ggp-U2=Iwy%Hb>^JmnVmxJr!~Utyr#z1f6U< zmLoy-WVfT|;S9(qvX;UfvXIM6As&gKcHumSc-*uwH&jwqIZa8ds+JRZ5K&$p9eZ1*)4XC^7j@II!upL(Ul=z z+RT7aRR;0M-yh;r4Fz?Ct80iDp!A^(jWoJx$=C+pVBv!cUCPHpIfxd#!n=;OvkpE+ z&OoBrvXP(6Js!gVv@7k|xqI5CtqHNj7k>6SE8&-q7g2X=KuV@T#aESa>l| zoXy}mab*!bCebHsWgjwj7nQ3%bY!0FAja;a4b(Iq8HQd^Qcy&VQMu_tif3SSFu<1( zYF2~b&_fWOdAK@OK;-PE1tUkah$iz_bAu3@d$Hqb%sXK{03ip<*EE z9}NWrx?kJn_96UDIKPE|0sy|V_O_Tjug%7nAWnm9V(B*AeE5v;Pi#qZ!QqrZFd@jr z&bh9uT>@wT&N*b26>7?yhjWe}6T_W%4k$UZT*H1RQoM;}$dWMgZm=7?hGA8Fl($d? z{u1mLC)CMS5D>Y-!qi@l1DEl8VC5{C1`kW{p+J<98w@iZ608teWV`P3t`A~h$Zo<2 z5Hxd(`FV$Ppwze2$86+7*7csyjLaYI40Jimqf`iI>qRTraFT| zW$FzO4VY{##!CzgSh+|rV~fsRYkovyGWS$dK;@!+oG+a zN2wk`F&HW_Zh^ei;Q!3J&yIg>WYH%9E$j~-s zlihHZcbvv|vIxEE?5q%2GzP@&LLXpxNmB*ZG;^aeEBODpVdbt*5u*aZO&9SXZ~2slQqDsA z#qUnBg#Y+US}6s+&Cft?Br$)wGyT0;dsJ3SbC;SQT=?r zVd(aL7;&4V!FTbUrQ^eds?S&!qBwI!*V!K(jAH7!rN32x)l0$_)FJ&R!qLJV&Y+n} zKZ=z@y|53!^kq_!E>Uhh$VR0pVrd_q&T=l!US-o^uTt*NkPtUX5kY1~q(VYc227|S zXNn~_)99qWGVC&0amtd;IWAz}L&(D#C1J}YI`{3B^3%C3+BreV9em3L2_u@)l;ESz zkj)C*`K*&(s8(V4j3?m#EAThLALwQc<)30RB3jOINh~G(M$zWr%j+eiqw8hHK8=DZ^q3yRETH2R0ih z5tPbB4DThHU&9?N3La)(5LDa`gq+;H zN;wLA^Nc+Vt|3mL0~;~+d~B(wFicc8c~E3kW!EQpH&G?ITkO1$g@8yv?=IlrNvbwM z{y5&uMUqlWU1oD2@_E;I;j3l2is=fqoChODQ7Dxa_uW;7BI4RR5cdPJg5 zUmBNan{d+@2K;)!ISG>i$AA(_5Oa_;^eUI+t>W)Qr9|uklo)j0i3Ch|$ZGkMlnC#D z`xmiLBw#^>d{n5NL`_0WkZ_?VG0R72Nagg7Jm_2+5CRr_Z+zCnOWfgZ90=%_+ zWeoG*a5ZtX!cL)bd|d#dRK=(&c!Cf|K)VP>@$+mz4W@7*$aut_LW6)vQmmaD)e}v_ zs&Z?6UN|co}hIQL>KX6Lt)Jk{(Q{%YMaEQx}jW3 z5W+_b^6Cfx=Lw-MRM!YcrV?*_#15QB5S8->If#zIBMH0qaPwRw$+!zak+v)%1C{vd zs&vFV`KvXXDk@dVO|i0xHH0PQpn`8IT%Og)e76iN2l4=Oun}S*%q_%wLJFl}q!&zt z!ax)92@GaxHlLK*2npXZs<-B> z+%|y*6VsA+`=tXxM0me|SbHp1bE}g`T;fFYFhpAJz@rPq3@73Z2Dq5|opo zCrJRL)x9_@)8&nRFcrw_Z z?C%YsQ0Yks9tI3|D2tVCGmx}1*q5EG6FG8R16TgPfAGKdJ)nJE*a9GhPlA@sj=-u2 zgkAaPKhXN`pZD|;`O9Lu_lW;nTR-P%{e65iuOHGL_-Ov! z3!YDSj1uwxEgpiioWbM>t2~HT(9=n>K729oEM=It9$E+{SeRD{RnY|`O;gy@19^%P zPHqu7=YV5A5=0tVyO%VKB5Rf<#O`g^(&qnL(?e0dm zPWC33i=|COtZgS@WfiR~7q;b(mFcxetak%m9DUh*dgRzL0ZknQTt0WL41i*tTu-=l z=Zc^e>MGx{A(h6QTf_`@_fY9@q^}Pvr0{;kpBT`E$6?pk2zGrh8#@=G>bB~;G3@#q z!LI*x#crSx>;_&oc6BH-Dkw9G@5aV%uo3JApC3E$|5wY*)Clh>QY4II$*S+hFdS+G z!=dNL@YBIA(tSL7Ty93X>!Bxl^d-qnEN+wBj1D#|HzScou#3E8>=YS3FJ(rejbImj zU9l@8m$2w(NWSLc5P8d~v*&dkKiBX9!#dbSU-tO*3@CPH>NXPYjgV%D^oD!;dMhR<7x=7IPSd8n zDTIdUWTK)QdV0b=11uWBVVSVv2kQoP~hcYRJEG1zM%p9%oOk2 zfx$>PGRUDs27AJhp&>TVjmVNd{LV)t9F6oD>n%D_w5$Uxn zw^X248#{Ndo-?(mCwm&iuBSG37_2@qcHMmuj9p*2r;pY+j>E3r*!5#{diurK^$&#y zdig{s(hrz}Js7*b@Bn(T2frg0?P+lAdK<*9w=Q;r{bkDR?G5)2sJSO&wa2a=cHQ8A zSG4oMKz|q%O8um62O^PhcmDwEK{b&`gBbQTh+$uC49|!<`-UQ6TI0f{Zn5gce?$&Q zMuB#PWU0%0{S9K*UmH76XKxQ5KS7;Qth~WbAg^Z}KUEBY5RrZW;vB7Ri8`_Ent=fZ zv7S(Y9r&TPWEpG_yTRJnozd92gpazd`mVqZ?`mT=&>(gLwXwt4!Q&W>h9liQkSx7W z64CO~$Fq%HfA?T`fT#}4Hq;Xy>gA*v8APZdexPH3-a_N_M8myc_X_M#rZ#p%4PrOs zU=L(wz_1&r4U*pL0|PXM zAq>uA)w-kAyB!qW=mDK>$WDx3AJ+`%+}_jjUO$%Y21VZt41g}6!f_FHgMCq8Hvo|W zxfu=j^$t~HSC=~B<7^DONKNbnN4#*Y-rqY2$wJ66bql%KLmD;0IiV7}x^fdf&c?8- zZM2{#qkVkrdIw;Uq4%Txr`CHM8~!mcFc5~4r+alf&^-j$pv->A%_`nQ#@f6WIl*Xg zD6_WF0?LGX1!eYiNBbdJaA0lu*HWKRtM^9+!x14)1|vgYL2mru?6>e>FZeDBz9V}x z3I{d#|Jop1m@W4Qd3q&=lJAwx89BjlaWJfHxSSDn3b4HW>bB~;LF`U2S{&?Z8!Z?= zn1+}y4D|ItZbk>7~eEph|~4}3{5G3BYgwm0mSO`4?%v?PdL#q_EwG^R7jn% zJHcpiu&Zsf5O&;V864^+tpG|AhxG7%e^%`JxxnWP*ByptARv)`oDT_8nr1_N(2AhW z9+#sUxo?wzW*wr@4Fm^qI+}@1#qkl1Wg0%S1f&brrR_Ovc z5*4&P(BBh|4#@F?IDx?E9~#2=LAt;bNGe23KC}Sl? z&{68P>bnBFEMwqEv z8b2CKP$#UIMyb;k)KV9_=$WnU)fqondg@ZQgdLe_a{oeuE$_MHX8o}{vo&=|nc#mvA0stFc;K@IF>vbEB|Cc?*9|VCbqELBG?07uVaREuf z-aNChJN3G3Lu1FWJ1!teU?;{7{2!>XaZhx#(o(K&7h-`vkF0*VbG-x%j|)f=7(P#2 z#HWqjaREsjyPj7sCZcibJT4%KW7qeZj$N&&fwGShT*IRVqIIJN#OjpdJMmOzIevG9 zGTph{_bz^PC9B(BxCJqB2mfCuo0I1Ab;eJ^kzPP2a=;ZeP=O(j8i>AnQ3G|ble0sK z-KO;@B&x)ZN%4x7uqzE|bw(9%YsFQn3-Hnp> z9J~J49lP>kY9)#syMfmoJLM>?#7$D>;LFBNi7K>4-8z)ns8#^~2XW4aqxZ_e43#+Y z@f&*C7%Fto7Ij%r91&q^376lN1)U9ft)an)3K`hE_ z^=uXerJ`k$IwN&MRnG`Jg$f#@ZmYg4umesfU{}Xz;glJvYqXpZcCM~gw+?oK_bRZf zH+GBiP*o9Ud<(yMA+|>)m*~u6SfK*Dx<-pom8u0b73UGkbm!^=|9f2I;_72pHf2!J zoPh*9sB`d$&FQS|$$pSF=Lr}_C5Cm?`g3FG!p?<~>sF1MN|MhFY4y6;%^6!os#%O* zU9;>{!>)ol>+#-l{2shypvi^VF;_P>d@D##5uo~3#rbn}Vuf4D{nB+`<5nff?~1WQ z=#pfRO3DOw@RGfT*j0=jg7j))H>Gc!a_CtzGnd z{GWAR!TE;e18+ePO9uTaVDc`Vn_c5tD46`W;VUyd;6Db)ZsDYB{3MSA;h)qq=4Lp+ z?&omA^D>Tl#V(E|L+xFdvv7cFa?Z@+<^4R4x0Cnt_(e4Vfz9hr)Gb@0-_u}h0%xh| zbhB)3XLU4?c6;z&o59TcHvW<*#Nvg5g`ZJd#xIQ3`0arsXyJ6V6OPfrQUBcA@RCng zQvwk!R<~8(75s&FH7Rh?bq-6drB{Jn-7U?sZl&8)3o5!%vAvV%&UNY)lE$!eExp#q zuI|$7tAHK&{m1aX>*Ni<&0_!~vAQdTS zVdt7gt6N$^C-WN4_E+c_K=6Neh0Vo9=}Q!&&0_##&0_$G=-f2NiI6@%O$F~hlBJet z5yn|v`$gdM%9=0I^aTG$$U?3a;~@;R<}rXoh%byf)!Bc5scxIc06P6EoknhZ^BBr} z^+Nv|n>w5j`6nkvbq&rJDOte(u8rz$GFKE|_1zeTE}Qe1@vCcezDNvJ`zx7PrB;16 zhMmjiJO;bEM&~Pz-3gI@QY*Y{y{FFp!!W8_mqpz?22dQ=|IEh#g8!9wA3aOgD^8uw zV*q2#V*tx^%1O5TaqN8I)Iq5YX$12c$HQ0d$KSxAXa|CCdrt1vz6^ z`@A3;yU)lmfZ+eZI>+BOj{&Tp&U#0vHje=$k31cSS?NVWtV>NV(q!`(Kz{7>t8ok< z_#fMV`B8w)V*u#~k0Z@v04e6Uw$b9)EX`v8rEYLp&8N3nDgyfJZN`|4oW(JK;QwKz z=AQK!$L2ABa`YPqpJ#{d#Fy17bG=c!@=X>Chh>XxDg$S}b-{eW46W9JHJ zsXKPjGh5p`^;U)xu>=3dy1CwS1+~=0uz3t15z`B!PIdMlV5(c9P726q9s}t3S#a#M zb9`#8a4Q~%+dKyFbd(AHzfniJxZ;A;txI+`j{%esS1!3(pE}QMUA@lOxkQw@t@=Ju zGYGA4LNK7>4`;5d1$9J+tw92^bz1ki@Ao`kEdk$H(uufFzDx z^BBO>>Akb1%-81_K=A*lJPMF(&gLqELRCTM~o{BnETw+ZO>z)^M1jFj$cs>nw3KbMrw^iTIHh#@x z0BihcuISNf>ZusPS7GcvL&pGu|Hsk4)d$3?LklXp9uHi0Hje?MZc*G{(M6}BPDSnj zq;3^#DK{(Tdk~8yuej!=~eE{tG7Mqxo145 zUPGwhFX&Whmq_iZ;-s6$0LEU;V*tVLVdDSRmOt^dUcyK7`t0|>mG{njuC=$fpVRI1 zR?)DF88f%Ldg(hq@rk{0!Sn4kdUZ85ylxi@`rf8dDD1D3u2|nRbNnW3JTclYm286{ zhnXtI#KWFm$l)9*8;>GkQ7`Tc4^L)vo6;!1UMgB?(}=MShA(Drv3$YW%otgQA6%h5 zXbh*g?iI`;-Rf-1%%Gz7OWA#XSn#JSkBy~lBiS%yKNL@y~!Otmj(d;^uqA)Edph2J~UFr0Nb}p4ClM@b{ec` ziS`j3RR)#PV`$XM8@WAyfcFTH7|)n?5l!;@bYGD9=!w3qE%B5yY@f)xWuZS(JB$#= z;Gh+l4#M62iAJ2MyGW$MA<}#5?qXdyKbNerf9t4RI#L#Hb$mTKD$C5#6$IPTZ zB|1o!id%!PE-|cL`fI=WNg;{Re1}G}qbUJ?2qXZc{?Bs$Z~Yxl+X_CKSF;CR;~w}o zKG?kA`D^Bt=~)P{u998og3;1tb#dv&bVLqOSFR`iV+tZ1Oxd2lhAb*s8QX~G++xi91#}h)9I!zJHIH@6a zX_IYPmQwcQC*dlbdB>Ab-a>bCyJK9BkUWTK4zP(-s#MTZ`?3qDIgxVe z@}5~t?f8enLjg7?%(!=rf@S+ra;9V#%`G#f7fmbYM z?;pfe*_$x4h7GuTY{|;%FoxPM;jhLxPfSk6=i*ECM|u#Q7U^e^0i5zs(Q%=nAvS~# zsnK=Fs8VIuA>}1>T%@XpqkVmh{!<@U^=SEr8M>pEj zuFCC2e(wfydXE9PHvC?`luH$dH~azbMmeKwyZjc`>duT& zy`XP;c~!&PwNPZEW)8}wGN1<4Zc27v8mO$Zv#ME?0dq@tKDy_9lZjcrT=AmWgnBNQf zfQffv-DCkOUXj-23xllSKIiw52CnC7H!&vd7PkL{ZYRtkL+D>ka1%>Q6Yu!D zpA2km_4aM{MD)RdK{60)^}F_9Vu?)fwQ^e-^VNjlD`(ko^*#KK9V`J)9(nKBj&8%1 zXWEceHS4Phxlpog%d`u+kui_R1F_PV%9Ml`N&FeMlfsg!Ka4~)U%Mf&=Heh{ZO4*#vB?#tT7qNZ^w+JI)w&t5C z6!d-H2I%6VX;YG~ut%Z+Pdb0(8SpcSYxu>)4gLm3vX0+mq_^aeI$&!Xj0o#u!FW_M z3z)9pO$5#pXtT!|JzYojtd9QI-~Hq(#s$we@4p%AIJb?(sNB=>9ScA7_~9sb%(2k? z;==Ou>WFEZxh)ooGq0`hGydfFP3N|JWHNjCvlq!MXBC<8BySapXvF3|U;N?_Sk_9H zXc25u&-sds1iG0kVdW7EodsrQsR+Z8CjCmIUSwU=iZ0Qju5dmBPhl5+=+TC^%I@k5 zN4vv4UHC1@E^^!Tse~tk{mK5`5EkA_Pr7)m;e1xC!}WBB+b`XW-=4n9wsffTbSRXv zvUxMZ9blw;sl~`s-3e4Pvv-V4hM`)VrF1k4n$TE3q3mtm$92YoI?uLPwv^gg?fff0 zFZlnvp4MQ?cV8poZ#MOrdSGhjyyqv#8SP!ad$0)iC|kJ278e!{@i;e;0KqQLPt47+ zxp;!S+7pO4O59;f&b*%5)$yCDNXAPNA$SKda;vl{v#~?GaI%#)E3)0x3$?N#8QEyHc~URr-6d!R zpK+pR8ofjC0Y0a5VEvq)Iq;!gOw7oe@jP1h?8`#0llbG)IhxIpn9b^W_<53aTMIWW zd5D}i!PjQjj-rlELdZfP@ApnaPQeS1Hx2R`9fkit!*{u5|}riGS^v&Zr&uO+y5? z%<~|io8~sykoYl^^0B~S)e9tHaxA(LY8_!VM*5^~d{z2S_Fns?7d@KjzuNs|o7t3= zkM;}>)KTzR^f}w4-^(sC{O8gS5mxzvVH@yI(OMi!A-ZAPSiPMb6Z8K~j|YEebA9`* zhZj6Q`{g&M*Ul+fKfe!RFbk=SF_GJb+v7mYWw=zQfU)6W3hH4#G%{n5Y9R)rw-(H^ zjHRbV3Z?qGJGsRxOjIqo*1ZuL<>k1sN?GXgxpO6xixZQx6Sw2ZWN0*J?D<80aHqcl zKqtc^xyY}vo_?$;k@YLU0bs~g?ePGk8*mJBNGwF(JzR3f#&h`mEpsS zULS$3(;(1Q+2Se$_}h92Y+6>vRb`~2JGb;qW)lVjpHrZlxr2^8?s8~Y70FbMTVFTL zLP%|j0u>JosZIRZ1u8?XF6?p;~&hyz?r=ssTB#YCyb>C2-l0 ze(Y;T*NWEGG43n;{x@~oObLeBa(IS;?{zqhiR~DNwR-2@KQH+In;sATKDFyxPj=z6 z8+$Xh--w8q=LRJ)qA~+9`7K!bZY@c1ynukRK1!9Cyt#-GV?b5$DK_slPQ$Ln=8E|= zWu>cPj_eW}Da$CN5SXgw)La}0`Qq?{a?KO3>xlC_sNlKUA}S{GsFgP=ivMr{q>9Iu zS0blI`BcV2?CAlkFKpbh4ASw%a&2goHvqyso%RdbujFwjgF^K9Tm%MT8Wp^K6vRNi z98?@!Us;|h26h0|s^w@dr^VIP9nI?0TZiw3e;=zsI-DPvjActj9X6(nS7v%1G1ge_ z3o`EhSNanZifuEsdgre{688U;r)BC>KWRAIM%X##r4MvO%OFUJJxC<6tTa7wH^Dxjhnw###cy$; zAo5a-0akNTWXYi{#qftlCqSRxM0`21jF=@JRkIvV@IY@=MgK&VB%7#G5zdZUwTa1z zDHI2^$HtVEDrI3L`U9cSJ3InDVJ+~$cfVhAp>QCPJ5<^HfdFqHf#;~XzZvV$c6WD? z*WBL8;C~UZU4ov_qrQ2uk<+st3h~&c$faOWRNNh`+77P2kX0gspVRh!pKO_Ec^{je4KTRJm z?uz8jd)lu|fAQSze!(~)Okp3P2#fl!eyfnhMB$6=v1{(|%|>D-$qu+>=F&IK9LA8I z;I@UsM5YZ7;|2HRl0T&?l>#WrUS0~Mq4JQn>EYo!iTSxcnKF5Mn$ri-(xZ}5*atNs zjT@rQi#(zNh^csn&}gZUN#^x}4l1BGe18X(FXbOwh{LFvQM{8|K`7!t<3L9ddIv^u z%8s&7q$1%4i^`w@sv%F4Km@UXJM^xi@ub+r!SEOxz6XXkS;zvu@;t(5yNaL6Zb4i4 zZeUjmhZ3M&IkaELdyD(DvFC+n6>o>NtJGzV~pQ%CAB;I+ds}T(6#8k*&nynqCQR8?+RE#Yu zL+BGVG$g{F_;R0-v8$jV@bExzTVv2V9cWbQ2--3PV-D0vVttrx8CWSuZJX;kC*&86 zkW=MGa@XPcX|`Fg-~*&6gVmX@Omh8?(En!i|BI7-O-P?k4}2W4E_goadoxyYE0A*h zzYy*7)$*;Iv+Sf03{E16wguQb<`!*tB=dvPAl;Fw zr9z{a?Qvl*UzTz_D@9=;4>sTdD18=+Hu?0x)gf$5P_tD50DIS9(ItzPpURLlq{Wf; zOEBO=qX^q86l2HE045l~GO-;J%#GDetk80pHm1p9MP7;bdZ2;B)9f<{5~2IY)9SN%adMnYA%Dp z=u0tAg@qCj%V-W1rGa=$__VJ!DAYWjwg_;f;b>FULTu$l zv+aDw1Ya`hBPxY9QwF-!Jc|H=iL(fJMj08JEwV6jeeidPuC%*?2xV6e63QSVhp8)q zY>iQArXusW(pNJXinXL#3f3Mfq5KuCCBwik2cKbm4%tGZaPkJYdFH%hH!^D3QMlrFpPXG|EB`%P>y?VX*so zA@t&h{9KKAtZ$c$Wiyl6Uo}2ICG`K_^LX(0nqS|F7O;vi@Me35`!s@TwN118gi**2 z56>I95}i%K)u#~aP?Qr(w;v#}1K}}?_YoTtXLlx+@5Gmp<|xXXo>fz1QBF>g{a$R# z%A_4-d3RzSikpl%)G>}yH0M|P67yU=i&rT`pN=*NG>0d>XXf&V8ON-BIWaYTm*(xf$$s&Is+CaIb7WQeaK9<*pvj==(G=7p4F`kSRb7!y*lV!KNZ?uI*zR zOxQ1!hWyl>!r6zTIrRNCEeB04dZFx_MH57l%CgoS4&yh1BrcnJE{CW@_)FL##Ys8N zL#N{%FYn0Pc{8=^U+2vYYNDj8;~k$b^^8+WbUtEIEH+0-3WER^S)Te3`v6vr-T#;K zf6M>m!C&+GjP<}buG)y#3%xnLfY}ZfFn0`lSWrK^W}8n9c8#1wG~p2w3mcooaPG{3 zGsX35MQnJd8I7FKCdqBTC7+B(%tx%`!=wP&FrPyFYQfkt3Puj>qbWWkTN_+SC(zj3 z{pSM4&%}YTN~hILojPJBJab~Qj3VQrg`KxuPpOY$(NSwbC$vyciKu9^8Y!j+al zN7(u`-Zq)vEm2X3$;BC&{fJdB1jzb5DMHrcZXu!ym1iW>B1|}(2Ca2=Y8|3&8^oBn zb(`}NfpUIo?h$m<%)o&PR3Oa-FCX#oRYU=#Er>z#^U;>lJ#q;k8kv@NcxrBUY}NSo zzasu`^?bq8@{jPruTSolE_%Ls@6FgpKYETju?AHT?us%nvy>}7e2jsl8fHG{lvuik zW!|0ll= zmR}(o5B4RggtC446s*WCv`YJuG9747m3{ftu`kJHGsqeyQAgiNxF2b?vMYXfl6;+x z^$hKxtY==p@iSGM&nW0JpHYk)8Eyj_NdPPjXz?D;XvsC_!9CW5qvUe6rcOa=6}5^ar(W?`vu4+;#_Hx1+ll36HXDBj0U|6xD*v6uI9pE8ZVzDxN>DIn zFt@^VIKsGnN4HTv=onyn=;22|=C;vWGz>hGbTtcNkfgv30iGfut67}$Vw^^mlMQKq zDn`0r6u~)$IN@Q0W%!LWN#)yX0-(%s4c3>)#dnr)tFywOy6Bb$s1g>StXYnEIX5bF z%s+RlD~-T%_0%BHa77J;B6db>jkWl9GMfy69DwQU8I0c!~@bvrp!A$wQBs}12O-9%hU1}H~yO+ z^-Bv zjTD?1Bh4h5VULqU1?wDfJo3C+uBK@P2V;e4h3U95t$2aDrq!$DnIzpoVSGm|$Hj?6 z1$qz@3O!z+E_x{FvK&depohzjS0tdPrQIlH4+$iB>(&xvGg7kPb7UHK)+H+qW6E@( z<(0jdckD$%?`ci+mZ#sXKo8DjvxH9;Z3hJ$AzO$YCB>BN@z|3%CjBGT&J7tNMpi1 z^$EP;&#dY_wwtnlpjsOn|!^ zXr6XtS|gcP5>D03#>JdxKNFx|U?|m@0N6O|1d9P!`Qv8*@c3WjUwu#5|5rRMS4a{x zFWCb>_wF8S|Jf_Co~G>&Tav6tQuw%atVfu&WE@j+*>c2z2esU(l&NM^0vX3m+aH|( z^Wml1{xo`^^>>KgF=o;YhViYA6sa_rUh*|xMb&1@tSnRJ=4y6Eept+Ln;owM~y^yptIP%hy!`(MAt6F4#?WL z%bT3X>=1J&ms9s>Zyj|T!xJyEQF|q?xV*>W9g)^?1^^;6up1o9!)YcDIa}R&#yMBhxPjDukK&){M@}Ov53<4&+@|&C%O8B`ULfWZiwckWFW?RwC5+j#l`@5 zsAvYsguN(47TrP$Zh-BOdDx0E9LlBZsjlJK?)gs`Dd zmE}}j!~0mN@`;&nw73v%w!_bkEc2IAbn*ZsrWDSIpX&)oVTLL=XL8P0YaC*Jd%)RC z2IQcx5DU0*NQ*#}7yJU!eDBXsKe^!f%bl)aI>sR@_HMZLYmj0)rBC)WBPcX!RS+p9 zx&`B>)th3034OXwEblBgHLU=Lph?m;tpHMvO)G$C0Uhx?R)DY|Pp|)vQU7J_-+t*h z{l8^Cf$FET16=z5ZxH`;Ni4;`J4n1~`nw}khzg*+=<73U`V(@`#`08x?`Ef6e4K_P zjOIk3Y9jCohyWZW1QFm2*Xq{i{&f-m`}>~OyPn@CS@7Ao{*rlc!SjpQ32q?r-L>?N z{T2u|ha*(y3$j^$kP5{sW0R@~k*DPr80It!$JR-EN00G{bP;!s7a|&(AF)IrK=B=v z3kNRdu&aflbmcCSE&M=}3TDUpKQ{ST+eQwX&Z!0pi^G(zgT+^e)oLN_yBTJDI)L4o z1@lRa?+`N9c)T1obryK2K82E_nlY6}!~)rslS*mnVn>gFDrObzshN-Q#SHv_i9ykn zHDL2Rb%2VgCy&|x-~+__Bj~?8mj&hMKka*piB$GVtg|_hdZkT&5YhN9Ml6Z{o1BP4 z@}g6n!;Bje#49*1Fua8md~%?cuvOT`wk-?42~Ey392iB%jnVPukSd^dq9}y89TOD; z-E!@jC&FqXYlEY(uSA?`fcdO5i+z@XI1)HK zxRP!d_Fs@E>&R4_cJ5tlV7mgg?1(%u_#Fj;vWOCiYCEFXizp3?BW`8sixlZ3Sj%nw`ZEPqp;)^;983xwklHbD!YP21a>y@RN^lQE ziaSy?#&S5d$=NSdSu^jZ`ZZTfVii#-EkXw+ID;4<_3z<5M(vc zz_3hGq(W_{rM)^Xd&ow4oO$I^U$y66L5Blh6>