# v2 git bundle
ea74e9be2054a23e6d05e1bfda3ae8d7916228d5 refs/heads/bundle
ea74e9be2054a23e6d05e1bfda3ae8d7916228d5 HEAD

PACK     ƒ,xuI@ SͪԀ ;EefIrL{cX1	 91<CJ F-.	+!B$'sRPDF 1jy@=ӪK1֑@-(r-rBp̜X4e1}9hZZ]vgz`oz8o i-Tu9I&l{:[Wmx&u6t6xfp%"VJ,hsR84j=C~;sZ^Oiط|/0hEfb''+}*.Us¡z_:"U3E+6feN><t\'N4
:ςq ¼yZv.đ}$-u[x4Ye*;SSZas`t:V`'"kP~k@3OI7ڥš	zc .x<$݊*~2V!3scD0UoEM0x}K0 
ni*	Y*06>n:4|S
EuDrhMs"1BuiJc5Ej07ęf H%t fbNT*^5Yӎҧ+no4U7UC+wwϷr.*Q9kа Ç{,*}oh*O9"Ed[/	9l;vQ;:<Ahۮ -t}XFK`MTdmdX[Qc~$F/AEX]*X=fGvq4x#Ylg>`lg<gF ,pۊgh!Rr(QOy-6:,Z-U܅'ȫe,ԘӲuN#%^N˺U.$1Z	#h[U@Y6__POhB</rZk^%:g^1s0{{PyVVf.8gvG j *Q]Θx9n0 >cy(0~B%H!QGE~v3`	ťbsBG2dWΙRē6noY(Lv!4`JO_>jdP/i]n5i	H)N]jEP`?ҧ)_Rڟx;
1>H/HyGI&kJ6
-?:'da*ʦ "Yt(y0[T_\v^YR6HI!.u{[^u<}~xa}Rɂ<(ص1茹Ix;0 =Ȏ$GB#0:S")jMDE@Bǌ`	M%cȫmҺ-	(gF'ΰqg=}Zgz봶2-T#Y`bB K][\[WU:J!x1n  WG:k`{BeYl$G6wR~.S8D4xClS	Su|6a,ap~>Ace]@a`dL%pEEϱΕ^1u>oۗ;)yQnmߢx>^ە]tkz<PVx=n!@SL)E>ˁ B[i9WRL(r\88g&QT?8MHSIPt!{^.{׈Ybpz>^0m~mLvɦ ozZs5p2Npü3~@MꦞVHxK
 EE7PJ]BO}BŘBw_A9{ވ `",J8eH'r${aҁlGa2ZBQBic<2<6x`o/OD۲a^ϡnWFON;
O,V	/rO"xAj0@ѽN1B4y%d#t9GrxtqN	RX1jnrh@!OB9%S@S5R17~~*^:|=0K.\$|X֜13g<t!28iPxAJ19EI#"n=˞N|2+G=reTt[)*=fZ5jSAN[L)m(@c>&qoǕ?2z'
ozev?RH<zN73_Ue{.6UF8Q9koXx;N1 ާ)o6B(m@9câ:N"q{(+N@ns2r
-+]ncuӔ]ZJSv[6Da,B31.ױ;}A#C׍۩˂֚_VUbm<x=t"Qx;n! ОSL3EQZ! Fx)W<b}2`tZhf]CVg/sѦPbͤ&!k]2*zuMWe}*eeʾ}	_BЭkjL&	ڏH3CjRDx;0 =O!)hZ)UC9B]P"9ĦKI-Jm@dCh#-C,$6]$SǼ=acl:L<><]@{;BhW5oQE`_27,˦>R|Mx1N! ОSRcbY1f[`Ha7x3v&m]H+_PgE1JNV%8A`F6hR'Jr>Ym|_TY["y>u)PxqFZ"EJ1uc|/CSe0xjۭO8z;ǳ]_Sx}Tے6}w$\Z{a`;@dIe,q1_2f3V_$JNb
)zbE=l!SKMHlXjJ;5!x`fPtۂ>HtuHClPD x*}qP!?g%b_õ=Gw=uMyK&%m@oh]3&Cαh|¹I8rV.|k9ZMt}}>Vmw\3:×sgC>
kv&'
AEO>?N?{@D2{/xeh9)FbV;ӟkx4?8z<$d>{1lb}xd>r['{17/x<f˺|Lֺ%<fyvyQ-̓Qrtq=O{'53y}_h;-gh#<nv޾zrMw1K ;>	ѸpoOlBkφaVKhaiDH;2	()(X8k9hX*sTeTǫ7 xD>*%$*6!3PPpDI+RLz 4ou2SKhU"":lxQ アUMmKP!@)I+N%~TeMB*[)&F/8F(Z^ i#?'BĊn}j.~H(jZۍI- &w%uB7@,xuI@ F+*&6@LjDq42ɢ诏Yw|U
,a1J8b$Nr$SDQ1,>(hW=qDTBQQ"
,q*4F"V&"C-*
8x׿eY]UA+	yy?"R-o[GKSke;+7s앶ۻo Ng醦m<9dB>U廣͢UӭGK0U-}eE!2uÃ޲Ӟ\z bnҠuPܥ,f yJIJL[ف:9E4u\=YXiGsJ|SQ}0T)7yVqj-{龿0,9;7Yu0j1veI.Gsz!>oV&ݜ<c<Ln ȃ!1YZock\Ɓ;*h̵Pj]2GٜTΪ1T
+-tif|UXrXb@xJ0Fyl6"2[enr4qзop_E	&DkSjkֹQBXz @2{$.t,!l|p6Voq<mk]uZb]Ҷ<݈9mGFtVԋep*Z&:zkGi[4Eebk8HXᜢ&E}?d
xj1E{}`f	!mڐ&ق}lϒ.m*:٧"Y "b9pcB-l4VdpĜxYĊ!D!]&u#,Nu)<}1D22:?CHDpDhv:r<CpMkk,*,>gsGc...;|JBcxj0E!@slRtH9[CnϽGߘPa02$tPcHLBZm1]OQĈT'f۴RnuZ̧./ТxG;]J7:rzGh)uL|AsyHo?=o/gx1n0 w{@(K.kБHG-Z4 @O|R9;I:f9N<hE]Tt.'^RK䂆}Z=ۼs^.p#=N`9Z{,F;q9@km3VlOѷR)x;Ѹ(5U2, )$1(")%25 ̌ (5oXKcc󉳜AWZfBqjBiAN~bJ1 0'x̱N0 =_:i!t>v^kZaX|7H=kM.E,EJx݆Ɔ<btɬiVIm)FN?ƣ۲>*~]Vn2&g'$kw-8+ܷXLP1Ax;4T"$<"$($1"%4",)qb%Ph,'5m`d`ŕZXPPR !xAj0@ѽN1Bɲ,C)YΌF)%7[vB`6ࠝd~j=f乷ufCk*gQsJ1IlBLNXC6o\Bw8O[-oHzmJe9ɶ>!|C4ꤰSma^XRYxK
0@9| #d&6ЏQv>VpD4,J/]&ٗ){]Ԗz*s)A[E11>lQѳ
76e3>?dkDu<e:Σ`5 N5vwCUJ}/NxA
0E9ELIڂ[r&h m7p">rX{IlY՝H6jDN6aG͋TJO}SXvT>Q<Fmt,/*ۮYJؒxM
0@}N NZq\$HSixh#`-6"LJm#M41XIF5o^:-5W} .L2Aa`ԮsnM1uٻhK@x1!@ўSЛcl= J]4z{/":r		Q #C!n鱸\A=xkʖu%) m&<$6/S[җaڤN0r<%$΀1jӱ.]TmoH1x=
1@>^I6;YA#X$(z{-W<^@ު6DwYmចb
U㠽3d<t[$wxʱgK+e	2$6qqN`zn:DթU[e]J| JS<JxmTɒHȈ̌}0hAK--R ׻dT|YcP1Е@u(j,J$DyAV\
R$ޗW驚"
Ve: aC=(0	I} >rqIg%_<rERx$=z(XW.|MIFXD&B|̡5ai-ybYpp)M4o+s5c͙zE-aa.;U%6f>m&I8EvΌ_{.}O֠FI|$mWDyBv3#r3W"{ͳ`Hטv;e8Uga}eN~Jt/7Cd);;pxo`hek'/Ee%Npp8:V.	ݗ׊nj잱_ys9)L|:ڔ=qt:Irv|uwnq3Eetm>vթNXetrE	Z^~@l|b#Z>(CqCB }#4Oܧ7,J[$IhlH#Nޥ5) NkQQ|2oL,(p^YK|8b?nN;lo8INyH	QHxSyAd-@YHTBMrv5nd? )+@Jc]LG rx;n0D{b p#\RK0E	ƆoAO"0cƤ$B''5QI4ZICÁ'U9C2t[)q&Ra'ko|ײ\fl{ܷOX+h=	%閙-C"+4	txǅ.P's_ZA
+<3~`bސxM
0@}N 34 #$SQv뫈$	)4ps.#XfDQԓWi]1bL'MJ6Re7nuզON}:25s` Ԯs]fi/'OIƜx1!SLobf1zY5h_򿶊@3yOnz2C@6ԓW8:1ъI'ʂq9Q_plp/sAQvO\>.YkءFT]Қp;B*gBR1xm[@I?Lқf @,*(xnGADi_+B8DPP(i2HVD0
!B+Rp,k1FR$j1"
de*nU`Z
 /_![v4$ICЃC=SI&O"e޽e胚eeV<:ÚXNݞx:XYuucϨp-re2[u>
ZUvw\ 𶿅L,Q7ਖ਼VYtl-iU}Dށ
 Ed?/qaC;:o4,'|wEP]i_U󇦾F{Zܱ Ső[6dqKIa.Ca^;wgm="1ޛ՚c`*i
!^[]FOLe~+g&LEp`
/p1iq?El}KW<Y؉g=Yy ӌFL}vkfg~LL̛gd5	yp.OEa8I@9H }|'dJsj~ Zx
! л_=ugG}B7aWcׂ;h40:GgIyNԮ-B+Db2'Y,$&omeSLWiZԖ9w>EqKzDIpxA @=a(L1ƭGp9С5-6vܾouSdg7DbA<[Ш^HmBIS\!S'uc^5O65W8~0r]ys H^[mVܚWQI`" u\Ox
1E|Lv؈X&0YY߻`u6@1j{"v4RVk8O19=;Rxr8M96!3XH{뇰:p7~2\aă<R8q*;P@뱃vj%&17px:c=./P2x1n0 w{)"kБHGe(BtD-@#9*&1$D6;ot(S
o#($ nK}.u7(<_u}#ڻ_L_ef3wuTx1n!@ўSLɂe`Ȋ)l]X-c+}\~/3XkaLάMl0b"~V;hr%)ѺυF?XVJ\{/yuR߾xK!|Ikԭ{U'PJ<HL{۾WxAj0E>8t#t!qG3A7YSq˘ɧi8rH>bk.MOHS@0ED~%'L:yh%<zR7$Y.e{qFF]_bbopj7S[SI%b۠G횧ZHxMn b"3TQm dpܾ,zlϧzehIeHruTj&/G1U.gA&j2:iHZAg~nQr_u]±١^|LjP;G)~BhsY!aY[~Y9k\["?xmSn@|G?ԗVs`8mK-m&mSxfhΞ9# ""$U9TRQSYJB4Qrjµ#5U
x8Ա,&2HZ/#Ddȡ͛P]%zNEnaӟY[T? EK*#^yURuӑ<
٘ɲ6\>ô%Xk8R߄{#6tݘgxn>28{%W/9e}ZeORկK<p#{!<rito<i>x6Khu67r`jt[?y:Upe)QMqk߭h~ƶXdSB5۩bn.p ܚ6G>[Jhv#ofMp6찴$~%זϊ@0+Sj$C32WzDź)n,^㣥8LѴN~s7`u^t]UwӢ!~p0͝󃺚DzqNwɂ{ۙ^gD`TmS@#))Oq_AhANP¢a^qW4eU2*AZH8	E(ڒqz"pڔMz.;YꒋxFh.M>sI7xA @=bq\6`Z4vܾoFeЁrvkAƲs9C@UJ:Eq/`F|RW
w*7ZEu\h~.Ю]=T.sk_E'(0	%YNxI
@ 2[:="'xt0IFߛ?TUR'N\1С$rE#<yR4komҞ$`Y_u\Vs6,e*pDNzfGY8!X`fTw1yeP(<tL^x9@ ~_	9qB'P:7D"N1e5L+.d>pA(yjbĆ8W
ԝ(朄I9Z}[gQfU<<ۓ_pirg[#ϣaHֈP8\Vc} ZO2xmYo@ߑFK(50J@lcyf%"Ur＜+8@504lbiP)VBUR]5- *Zi-P0Ψ*l):eY5uch!ݔP/YWf5xyX7B˪,K7Z1!(.>ui[^s&>@7-o9c]s}{D\8wvly	g)%rFׂٶ6I6d$KwIZ~2'Ye~MPߩE޳244V>/qX'|	-9A=]wS4vhs츱z4dmlO\pU{cW;ͅ(l-m6Mbrw͗'3Z~5M;Xq.c;McD<`$P_g/gvnNbtKhâW P|$)1[SZoAU(1agOxRvE}4H> ZPwϟ/d;@_(8E-AIw	 ,؉Z	^xM
0@}N q\NIཾ20jGKjcB+.cr-hMlȎMVл?U>EOs+M^>?Hy뷩Ryǹ^r
<;w+ygIK_XJxI
1 yEtz2	x	;fc&
עښ3d'EQh	=*;KZdSs	N:=`6u!%WTA^pS$!or8gЖi	Qt.*MA>7zJxA
0 yE4i>@Jo@aڪjs!K(2`(#'Z1'OpaL$v"RĆ_Ƶlu\j̢[3x_uz`:׹]Tj3_Ix̱n  НRk?qwQb5RYt Q<\<B)3)gCq㐦@%b^ȧb$J*DDź4y?q|?09sݱNp1<g=YoӽkYt Շ0&tm5oXXxMj0@N1BпRB9Bь+"+>^]=otf`2fL`QLmJ! M̬~smfk'':R&y'%Dv$LR?{olX	eo
f>mٰڷ+mF'jN	yZ:{mzjQx1n0]^d[#d$M:j˅!7=CDT1ai@F̊3G7ZBi!?dՉsDDf9"cFLKpcV^K	B>u޷OCFx{u+f[HRPjW[:7?s,yXx=n0@ݧ^~,EPt:R"bx7<=E Z*Z"QeJ.,&9F44ϘlZoqJ9Yby%?]/juϭLI~l5L6w>ZGU]"o@pCA[a5;AoSuZEx;
1@bzAd[`9LtJ6*-&>"a)!j,쇁9jS&:
a`L.lLdv2ڝW췹\
dJuy:	F<hZ4.UT{	x=&Y}nQ-xmI@ %Dh-5

"(F54 ⯏Y_{] "K@2a1SB&B0!%UT9(3cKXh,#SFeĈp_K<;@q\7R_~ AF!Iy{KI_1x.igPIy
ܴll-ٖG9uN>_z0L<E8w@Q웮3dz-k]']atE{Ƕd<N+޸}~q&z^*ДbcqA0j{bZfFR4lXfgJ$twtnb*T6=v4zY;XΌ@ilj=6IW䯵" S	ڌo܏[ۥeਙg{($P.(iof07c{{L?HaM[+h!E<.qvg	w0Egwm85/[go|R@W_rfMWӁy]ϟ/?-x=n!@SL)`%,9BJ~iV,ۅo+̠a0JK2Ax[FJ)DD\6zsNk_X0ZI!YN6걆V^Cc^[{Վܲ7T[W~v(ϫκưc`JSx
0D5MEīq@JF̼ZLܲaϝ>ڎL0Zo*R8xt-6Nz1Vi·<X:a.eD܆	xt㚮m6UM,B(&3"1
c~3pWTx1!SLobX0//r`%fM+}v&h:L˜9bJ}RwZu0XJʈytlXqpVp,6{})֏Z6ZεwP? 1T@ZnP>oezREx O12&,{#8
Y[7оAჿ"Pr(Y}|$\t='RJ>19kёdhhf
&+۲[&~gQwN̿@9Lf/Ԉs]>STkՇҦ^3z?QxKn D>E3cFQ4!!QneALc\1i+9Nբ5F JzBy"Cc(d}|b->Zb?ão[Ƙ^]gaPcpsGB|^OLA~Y0k5#'V	q5ckDxmS[8}G/FpU!	d$ee00ɯ_fUldcX10XVuJDT)UyYe	Hj|Q%")PZ
24EUy1ˈHscYՀ,iiU|܁Ƹe/T A4Y%]^ynDnCٲjp_e]4:mi
>.k8]gc>F,Ӵf/lgI{qӜGk#{ 4ׅ($s`_W	2:]^

m~컭^8RˡKx_h퓳Hr̅Zddh=]zzyŵ(F{6ډ! i̛il`狗Z`Fs@?	=/]x-6ۆ_|ϡ^eh@s~n_tlEHt.8p9y9IlRBӰHR!{ŦOЕ+]-m~WEg?3xeV%J܇q	d=lnLP U%/tYՍ',?ݸy2a|;'cԿR@'c ]u
<P8Dw콨i&iuղ0Z`Bq+1$͓;_<UݏBބkTkx=n0@]^eEQt:Vɐdơ
v^B`\ʈRD6s搴"Сm1DDNcᴰ`Q']ǥM[mL\w۫{8aZ:k]:>w1{]F-.SDxuSے8}*UISI*\m|_$@6l23VVݧ-^R
$Hu>ߔ!Qx REQ	*iKȔJ_P?2*#}5YQCI@5OPƪ5y2r (K?$M%e2DY{f\ƽ:/Y^"}OaJqbxx>0wݩ,G/~h+aZ0ANll-G=9gRa؊ANNQg{I)I+ۊ~X,áljw6-\vN6y{=\5G>
՜8n6Sn\r;6Ec{!c׌؉Gkjܽtўf(wL1EΝ}\^mG&Kfc
͖A	Ng8k,sU,X^nn~vzI05֚m\TQwk]mtr|Bg>MVb6͔OtݦCo-|\ˉ:"^`nCK>CLeፀKPP)Ag"B[Qq '*@yšA)#}y5ZV@jp/!:J[)RnRimpo^{⥦R/hPxIj1@ѽNQBY*[t>}ډ -$hs6`m̞rZJq;cFm<Ed5K&Vs89ꀏLt[.yOPliI#8׵h/Ϟh?\d||GJLX}x̱0 S|ޱvB@vIPb"
6,kLNdsbD,Vrى,c!1iLBfGQ0;<Ijzf8X+p꧱(K=6M4A:ZE,ô
_*M-xuϏ@ ƴ306EeeE6 cPmؾKޗsJAJ`*+eK0(J$ T#$Hh	uhTV"bL,>$rhԬ;f5x?@B"?󷸩~ IjH`"BQb}O9X~5Dn8mό疵Y2wLkiov;{1o3c0̙ax'֟r/W@8ٓ^xآy:)b'+ΧCH]ږs,MEoK4X0~LZǉ &jL{g:F4p&Ԏ[Iqpq٤kXl8m' JDۑXo.RDۉ;a~xחYhRzCkqiϑ ,=^d:	e4k-=Wz2`_ηav[t˽3-x&sSku/{I--,άƄ;Hz6b( h1>/0xuKo@H#ujJ &0Gv:m]~:ӷ6N"YHD>dyĉENy$#0,FUW=`Db"1@VGߤLHK1>#-8*
43%U^(](/~F YZiF˼q_!xHb~J>Olivy
~\{p?9(0uj*)z,8I۩1{#ۚX3g*Ϣ*SICZ%𴟒:|</TB2,miV^hX/@
.0aDjn4^)c\DJx=8rVŤͱh[X)+⳥zgONf2Dg=`&c99mU8U+,8eAOp&M)[U_Sq)w`h⸔ܴ0{co}t0Μh /DX#;Q;\`aTAҒ{/E}	F/~ Շ{?x=n0@]^ ,U#d$EQt}ÇwU$lΩJ	5E_ЮkfbC)Yr4?$(b@)pfzyֶ/POu[#.w=?`+	svWT x1N1 >pMAJvH)C{(cSbT\PJ,YSX|e˞n4ϹnI.1HHE6a!gXbrt1z;w=zPy/fݯLھ@tWS8>}vvTxj0 Rz'+T-[	C0aObyBhmAfMf8{xG~i>]FN'&Os41`uLgz;z½nuxL,+嚶Ltއ V]*B3m^amu!fQ:x1n!@ўSL)bE!̮>[n_
Xŕ6$"PM䓏^]ǄrЈ>JMQ[!=MX3fÏyv7~׺6enugHއD͒*fQpsWmym?}Ox;n! {NzK`Y}ۇ7H7b42CtSDN8QPNF3+qP?,Ǩ)́BkȘlQꏽҞ_˾.o1SoJ
i	5v-*"3djASs׺-GT=x;n! ОSLobXX+)H0"7HכX?d)H%"ymrxL&sfndP4Fc8)3yơP'ѧ>.m+|9ʽp K4pФR{-	8g[M@$MsM}/PU*x=N1@>p;̠H3jb{{_RN܂gd٪RYr .]b1,#;LD1MqGmޯԔyHm.xoxdyT#蝋mLS;OAS!x=!@SLob`p0zfW1[xW|"E➂h9t|pC4"j\ѣU^en`1$KQR&I>;o?}Ys#:,sQjqf F;VҚK8
e
QErU_7iPx10@=u+G`tD)
aoȌ#Nciن8p"Г8GN:67Zhc^1}DDȣ]
g)~'zoy|Nr `Z !.5bR~@kEf%3N^xMj0F:E֏ePьA,Y	EnE!,k51dHV]KyrsD>/3Dɸ8%dAb%8X~;
`$Ϻa|}4[g;j1=HGta*H+'VxK  MLB#|Pjۅ7p;Lf JYVHMGZvN&CZł
mta78"b>Zlt^.ؐn1p)Op~@D^pxiuM#v:ZHumX}*3ëbSx1n0@]^ EӲ#tH*۩,mOA7|gC,3EEHq82<HʔgKM9
:
!&GZ+u(gez=ɶ01ɣKWq~=ySW*h~R=xA @=#P`Z4vܾI.fk#)`㳨'R$"Czfu<;.yu;i=]ǅrԨծԚwQYS\~S_Mx;n0 ]^(XA#eRXd&@oYS"Ŭ>"/48y4#$itwnZrBJ$2c}0ef1dAO.{-N? ˲q}v0.Gw/݊oqYپE֦,47=Va.S@UȞxMN0F94B-G`i!RTg'܀=Yߓeg钝kC4EhM	KqɘPV0\blhl3&cD=e<)gZ=/v].Os__kMzxv(]E&yۖI~i#ޔ*#q*%U#WN2ax;n1 ާ	y#Yk}Ri_
j"Q¹V\D6+Zgҁ)EARHb2(I^}\n8{ܦc]=E
zkͯέwbF~M;Ի/\OHxA EbF3J1[r6`(6&o-`@ԙ7c	J©^MgՖƒcjAv(]Ҳ=iۜӒЂ^畖uvl/m
Q4.+p$
'9mU|eN8x9
A yE}O0]Q׻?*0bTI&`dR"FTS)XhD",Zt!,[\	|ۼK?Ou'3܏X}(oLt';ikk_Et .tua(7.wtQ
x=n @SL((mrdCٍr^of@,Z|TR%zLId	9&,RBqJzօ3racۼjd|u<oV.8xA(NEyt2pkVg8hMTVx;! ОSLob`gc,MDؾ*ֻ"bgHHrOf&tR	Zm\ei`Ybh0	QH$&bMV2'~eXqyyiO`цaQkylM[Tnxl ׺]Mx1j0F^>d,BXe">.rT١JeΣĂbLYC1cYWE¡HRq*<΢qiF`a/pe?V+~㾷Yvoo"B"xޝU3
{#B˾)}Pj_7Tx=N0{b{$f!D(E~bIhi <@g^͢N1Gsrw;wxJPBLSD%zWξqһMo˱םD_8QD遅]vw'lݏj^~lOxK
@s2EĭGp%==IGfOxA9:S04l-5&N!do]:nP8q/Ph5(m4d9%E7o>D³\=Lt.vZvF9
[8XQ7Vx;n0 ]^ ~fTE#-SK6,&@nA7<=D OaH9 gre JLch&!8i
Re9
bđ0]oܖ֖?L<J߹VG&BhZUl1EX	γνnub^5Ux;! ОSLobfcl=%A7`X4ZxWљYo(Je58%6JfйH~*1K\\SikqT"<ǵu8:ӥչ"xY|ߦ F<a^iFqO,x=0@=Ȏ:?+G`SD	j7`x7h,c<$#-8p|dIԮ$3EȔ18<8`m7e{[_VKէ&be^<-gQv]JE65I+x;N1 >p2·-Gt{4Y%قоdMVmyJb%FĐ٥*d͍&
.dbKq)ՂaΛoydԏs;}o\~Q᥯A}x-:C:k]GW-F3,%+=9Ϲ@yvR^tUGx;N0D{Hȟ8yAѲk{n' {\9#͌P2;"EX	,YZԝ quN;Xk'=$Ƥk|\޹~7W͕@>^|Wy!3ŋуvZIK8D?AdD	HH4P笺]HxjC!W1BqƟRJ,GSQB>;Y}k0Q'DkQIx
O2I#tJE'ٓNI˜,JqKY.HxK^? Rt^RZZ\Ed~rkoJ|7qI#Zx=0@=B#0:C+ڀX?齺c1Ĉ*6PhZLK!rlfE
(XJ$j]J8fudUi7\؏p sҵ^ϽL\@@!,Zk6Z)3U:Tp5Ox1n0 w{LY*kБD@, 76U<嚘'rżc<[yn91a.kC#R2tֱ]~sYz2sdB$ns3*l ^^MGZa9RxAn =}jTE]#r&z~=EKٹNR)C@\,;KLSBv9;OQl-8){[.ar1z躟Mo[?`rF^6Lcgo8![SU1ژCCtBP_V2x90@ާ	BrbKdQb=)|o+3F0pYa,:b)9)Lج<![A6+<hۓvT'|~
.Iб][|M1x;n  {ND?VQ=B<Zy>.rL5bxeĨ~j&{qPe Emk0ojѫ1g(L$F6>hup#MzԎOP\xFJqcg]32%&3R<Z)4&pyCm)^x1n0 w{BkБD@,[ 7n:L#Nxʀy#8<ƻu-%<%5Je%E:f)ǝ)y]|@:		Nc]V	_U`]u8Qx=N1@>p8?dBC$Ye+=+螾!zE}Bd"UdEZ)sNgc2&PVu>>z%$"D|2j:?wno[o䘯[岟r/k4weNŨ|ɟ~m @G%y:vYqx̱  Н`71\Iq8jM{7h4ľF5S #$&
Y&9d(I,DIXl]A@p賋|d?}۴qmSӧ
'e\xy]Q_]EYhlHxAN0E9H#q9K;qiRɂOߺ*~21(1DʺlSN>k5EHq5"ec^(%9~>nV
ן?Y=>'nc7l9C:{kZUN2H(Wؗx̱N1 =_\.
ؾFjr"tX
,%ՈִDMfIlPdCǄBJټ!'ERC4CǏy7˶6Ecnw0ƘS{S8So":o
66RxKj0:EAal=[,y Ab rH$.Kf ">iLbl̢%IPO<v&!l@1Ypl^q_p_Z*~ ̭;}9O0g޴Z+J gYKŭVϲ~\x;! ОSLob[`°fAؾ⍝Q<ZNɡљɋI(Ed[ة0UH>c^$.0DJ9֧#qo;B-}	Oέ
R˼c[ k\qξ1迅mz+>$ALhxMj1@O}XĖJ)YGਁ޾<"8I',HLjH3?*9sSv/q%c9,,©ĹRr	׸𽎽<kmoyO@BdTS%;L)M7cQP蠷)=b WvxA  b&X`<.eAښM=oIfNml\bڇq;Bht>H{DJ/1˂^pnp+\g8~"Q_Derpz QJ۩]Df'HuʞlYN_x1N1ާ	y=؋L䵣]D+i۸@L*SNYo\x6@OsГXN5&9(:l_}OneJ׿d^dK}N}}pB1"<Y18gV[4Jo.Vs,Y`x;n0 ]^Ǵ"()Jؒazf!ؘy0&g謍Nt&\͕`Ad<!YW6qvt	LYNn2OpspaN<`yTT! bm*SNkc6JSx;0 {b{$BOg)PnO
n)iڢ
mFJ19)ZۡT:)ySɝ(3t.QVTG=gTׁ_pS}EaѵG1XS=X[U̾^jS+(Odx9@ }{${$!Z@鬝CʁIj4ت
9IPK(u$KM<a*ɫ*ߔOBZK~"i+x~Yn._nena<eO)^LV"`,=M8P"xN0~UjBWǵI,nEߞxf>WfFɘI!8嵌vT&Θ8OvNJ)oI^b6جV"
yNki˴eir9m9tZjzWt),o\;F~Xq3T \ԟVavhࢢI3+4B5iVexd\RjiahljdjfbbljffhffbbibUX7YQkbY*@JA+-JD!-H!5R 1= FxMN0@O1{<,qj(q+z{l?齱@dP:aD.BMQ%7mHH!!=
2OO*l>impVxA,j7LtkpV.mEUq8f9A;o4~Ux̱0 н_h='8]l@!2oxeV
rM+	(0 F#jUHEN6@'B`#\qCky>hJ@yJ|~u)~4%WTy̮c*E[Lgau1_MxA
0}N1{Af&IEĭGp9IZlFۛ7pU0Z	=ql;E%$F$,\=C`ir80.J0jD}%ȫ<
7m7\yf8}~!IЭ\>Zk`:U$%H9>VKy|Mj-Rx1n0@]^ , Ț#t,K-7
F/h% jHEb;qF%,È)L<ʌrri"뭲s<9wKjٟjpYR7pu2IYsֵSLt, 9^Z5*MAx9j1 ssQYS?aFeԻ{iAg`}LIe4ɤBBt(1}FfBЮ)qg,cy}m(mP_N2D/RK).::s_EJT
:Nyh}.^Sx1n0 w{,Y."kБD@,6 7٦
\%pZQP@!Fq˛v0&O	Y&e. !S*c*>gaum.׵κpu܌<|?]W}6erڇPxKn!fDVme78H3`cl)7 z]df9ͥ-A7p$B] CF_26oc4k!/VtrVKlr_	YmZD5QƐUThjK\4D=VxA
0 yd>6ٴŶ6
ׁMѶHֵ9c
əLC9^#'T[F7h6޵,]}ů:oe8~ q'[31!mZ<*UT'`+@$>6-ZPRx1n0Ew{B*kIh,R4ܠ>.%!YY)ρSA1Cq"ҩ]jH$$P:>N'd/m3/|-O0s.Ҷɣ#,֚AwŨpg8x)߹AdL*}3$XNx90 {b{$#c-O\ۻRA{Rʙb4u!"FnY"[
(IqČ
T1ydYjtΪh>X:nTr'Z18P(;8H#k*$b܆
ύ~7cOUT9xM
0@}N1{AFDzdR6)m*z{|""sܐV%Vh>%i1q)h!ϥBe5hn$*c߳ߢ`G[O|mlT8~0گymJHpsTz.,	fK^ZضOxAj0FN1BGcK.!d#d[9XEnM,C3}|oش6
aQ21^ᒸɲ^'9fFv[7k-N0.rrnp(CO_YkɊCHKE+k5õOdxAN0D9S8cB-G`oC8"nO77i aNZW͓0zgnCM.fXAGK1N~4`<|Fnc;򶖰ϱWRVji8iD?ːL@H+:VʉBJ^W:18	aG?'zL*	e> Shx=n0@]^Џ%Ed:$VtysRlP"?K)qjkP8E;y$)pp8hBDGЫ?c7!4oJumK9Lak]ԿQEaS=WeTxAN! Ｂ&^x	g$ف̀F}s^+:<T!,Sr.IT0V4w>MX*HGCZ K=]E~:n	[o:˶s=Jߟ!"]5'Yۡ2ko~t_&TyxK
0@9I2ʹd2~$o o-^-Xd,I!#5d\tHÎcj)C%x$W}m7u?8Vy::_:g{$Ek^\w1r=D>Oʑx;0 =[+G`TjԆJnV )@c`{N%9q6;}AUZ싡Dĩt&O.(|G]˸Mm˸$[3ӑ|1EA[W5oQE`Se`ɛ p.Q?x=N0ާ	!D(g]K%Hܞ-+r-XxZkjDW2JR1߲cLjK"Rt-K ϋZ3rmOImA?Dq*\l'k[dе7=NN/R<x1! WЛcl}I"wCvY:e	CbvTX<2$,@L*}*^R	)F,E
z卖=-E>?yQ}R9T
N Į-3UFIx;
@~O1 ~Gݙ	*x{Sxۯ+3&5YNNJm#ٌI,r&*#|IQȁZi3Z?7ƹ3o:NX2OPhRH)vj_EH,8WMx1n0 w{6#Q
kБ(W- TAb@8!G)٘2`viZ;QEe4O91!:5Z1oT@Ic^,縭w@'$Dsеc_ARo*hkG._RIx=n0@]^ ~HEt:
,ft;34#ySBqSI}.<sBl&39Z5պ`y-lWߴccm+\PiCr*_F)w|G4oMW1¤ǃPV -|TxM
0@}N1{A&oEĭGp9I&5`Fۛ7pxmcS@LѲ}N('#Xi 5Z.HcNOzmZjp Q]*ڨ
QtKkEdvJ	4jXib{MGx=n0@]^LXEPt2R&f͐dlWSUEQAAb!֩$	M1܍wi9s	UN2$p>?U</Ӷ~Oc9#| !wqMپE?[0]oDQ%x=@@~Nie_<ZmO$(Rp'} ID	FIs*Xjf^sDj*EyWvNoDEkܖoCAѽtig7&ݠ_ٮLŐx=N0@>id;F+DGOHbHܞ܀+1r.I\(d)IN9ll$)tt&zF[iT<X>#sB/o^ϕᱴpYO]6}04OC.ݪҙ?*H㏫FvAHVx10 ;r6NB<uRMQ=ʦ
MuF8Q6޻M$<y\@9$g"QNbRLB}B9[ïX7sp<e8~`^r棬wHHp@h*]RI<s|?PAx=n0@]^  -[#d(at}PI*Ɓj(eu$}/ n@$JABA<GL'\kznON6zY3ܖ7P8WOΝumf?Ue.&5P._Њ{<P_x;
1@bzAfv&[`9ܬQnlR
`bȃL1
iA띷yyRZг:!E)y+B^<yۼEZ}jj=:Io<FFhѬt*F=HΠinMÐxM
0@}N1{A&.'Iڑ˘s.{zc.rR/Zdnl$k-$wEgӑco^mYx\֑p\f|~(nDe<rA;8ATN5P;IVU}PޝxA
0 yIWqljII}=3̴U:<]ő#@rɫl-ً0"A
w.۴TNjN|K!t࠭j9&]TN%"_(P)xAj0 ~"ŉ-KOQ!vǻ79
.62Өd)0N<;7g4FU
#cr6TeGc'|{B8?y{M{y
h=;mɽ.Δ7[[SH'{X	xAN!D&i`̏q\6'0A7pSIUjtB#G$	sDh1.mTQgeH<(zj/uLv\ xVk5Qǐ"<s];ym~LSxK
0 }N o#.'IMISۅ7p7f;t^x=XR YÌ+6^Ĭt0yb3ȫ5f7 A:${&m·|u)~~0e:SoRy/ O` ġs[j>/uL#x1N0 =;I+G`tbTmZaox~ekjX8\j8U垛M-rXgFB"\1E-Qe6R$|8]xfl>1SI<2b}s-a1'UX>.`9RPx1n0@]^ E"Ț#t$&5`ٍ!7f0`P2[!%6JNAT-&*Q֚y(_$䚼@Ng[iL|jMPv1'KԻ6h>{o=WMx͊1ydz2*"{GI$;o୨CU[b^#Gd$>Jp*)"x1Y17JS,!Yldݗ2:?ޖt~~JDm?IʸOt!:;CO;mfi'UeD
hѼ [Rx;0 =Ȏ_JrF'qJ6Em@0p7hpf(X2()f,aBɗA=xuld`rΓXX
H,1o>K_զOd˴pi]1~0 @}uJpS{J"xAn Eb`REQ=Bc3$H6DDˢ7ߛ*D)UCFJv&UꑗĂLsf󐦥OcBESb0y<6M^}%8(z%ok/@b_I*$FHy6@F飚?QxM =`ob#`$BM&ޚx0Kf9z`!oNGăn]0r1
}=@y6/Jwz4D~*>$NUMkr{OPJK-xn0 w}eY\A~BFRl(̣_w
q8&1e)qn`7=i1^;y(:zumpZ7zeP0nK1]ܬd07ԵV=
ص)	</[Tsx;0 =BiR6Uk=܀OW1y
1ZrrjR«
sJR*]\j<w}Mzo+x:yA,^ǾoltCh:bKAcPbx1N1 >p'!t=Ҏei;ChyQj`6Z$9!X	kn|ZP2r*4BseO0$`*:N侎p]vxe1/\^R1d|i[\3op;LRPx;0Eޫ	3LB%P1D6';y)4DOC97ivՓ)4bH."JιIW.S[-S~emfqNkjz^TX$C hPY*Sfx;n! ОSLoɂcƲ>BaHXRnAW<̀xv5)mB]ŰY,bB]CƸz"9/y	2%>ckT:L-Y8iVE*Lrm9Big(s4hu$utPVx1n  Wl,`(=!>K6|{N1z2ÅX$t%HKD=vs$T:&iFk|/($zmIc{umtЏmyKhO_ŢWMaWh7+üTi~ wRۓx=n0@] (irXR`3Er@odcbMè}t>dǡp2\b@]Ƣqd?ztƤrE?N)g;eԖ=7P[<48 Ļ|͕#	:Xt&Dp@~."*LrZA鶫7Px;0 =Bi7`}k#.,62{mM`,ԃtV\*#s~yG%eP+~k?Ouҏ\}7gdzr-t*}\WN@NLx=0@=	B#0S"X&4$3eѱCfLȦ&K%FyL1ף9=ok+-u.Ӻ04S:6i\{*3L2U5!%QJx;n0 ]^EE!#IKXNm%EnA7D$R
#"evl.> IL%'M%IrVAӺ{|[f|X<uic.v[+y vLxA  ＂Y\J!'x\`BM6f,FtŃB
p^wMI3&14*	#LWOQHoy<}~"]By܇2sZ6 ْ[*W.q_7KTx10 =M+O`tTjS$~O~z*0Yt}cSQ
Q/6
92O^*qԡ8>;"SIc@Z2ǲM۰ԱQ631-opϺuUa=(/NMxK  =5Ƹ.g`hI,5M]xoZe{:^cd"aFݼV'V.0&i46%"dxk
b
AJ6-X7ƥ":ΘǰPH2Ůsn[D	x 5S[&NVxM
0@}N &.gڤQo-^[ђ{삏'	=Szj{1¥IBA[HP.EPC-${ݡW{Eޱuķ=jE$$^1aN!-` ĮSn!N2<M|pMx;0 =$v	!V$n~ԦHnW7U$kC&XH=u}h3LMh
U6+X9Sj
i 6Hr>#܇e.3\?ua<eBE&'tSU[̱f
e`:Mbx;n0 ]^LIt#tL1O`+rf$:iffIb$Űs<6 ST$,}5k3QFᔇ\* vvu:f︭
Tg\d?mX11| !.Skܤ}up4-%P}xM
0@}N .gi4i+|o"Dc#a쑁,'B:/ya?z"sԓc7I!#&RG]NX<Xvr&8 @}俋Z]tFLDxM
09L$[rLk?oo{";6$\ CPR!^72Hl}l6x򒷉x~~ qǙt|m;$}q=	;DkVTy=ڿ}T_Lx;
1 >H/3IDl=$~d7+x{-+^_k^:kCbcA0$Y
'u*ABo	昒7hE!wSlHXV}m#uX6¹n2LcY65z-Jj6 :IxK
0}N yDzәi!m*x{n?~ڈ !$h舉RFAQ#-:UˎDGIH'yV2Ǽ;Memo<ɞ??ju~2y/֧!E̮cUvOV1_<NxM
0@}N d2`H
.ۏĔ`"!jl"chX'^p}fACk;Z|dIm7e-c2X#,!*oAĮsienOi+S_OMxAn @=}hls.fpPl\98Rn_/rl~D :-3FSƌMZ01읕#G8:rA+hu_j1j<eZΧ.g~@C0p@T.wX>}~B@+mPx;n! ОSL)>6,9BH^6c+}Rn_tOl-JR(37$$I-s4?4e(TFB.XJ)%Gf`^Oѯ׺>J,W={ٷ#&LzD[Wӄt>XAwhf_j Qڗx=n0@]^ (9BFd8L޾rotg\B#ISI"$Oh)pbȄaؼg`+ЯF{JEs[i^N<o;%x suVӄ>J*v--`Rx=n0@]^  %EPd:"Vtz7ASä$FGLk~eÈO(Dg-\rh<x'-|,m[?P[y9խ}!7Oحm{g19z[ yOxK
0@9I&"#3m?Q*x{2"Ŗ2'F.bޖErYYhIAAT(PF\=WTpNp~w2p)6v5:VUbIOXZRBo3MQx;0D{b{$Arʵ,Ā=.oF3S6f"O1J$mCKbwbD\"al7X^5Yw>n2ΟHx/a<2].vGZDUKZ0PJP3HwI}NT^x1n0 w{,J kБTh,
)FAH]H$SF$Gq2Ьi@"=xvI")h-M_m<۽R2Oq\GKcp##.w>tmPyQOLx1n0@]^$Z#d,*`˅훡7?vU ;[V*%p"[tGG 8SL|ˮ} fp|,Xꄙ$)۶Ez;"Yu]-~m`roS6V1~]PWʢ?8qOx=N0{b{Ŏ_"OۓL1hP,)}/1q)rE$u03+F{q.sB$}2N{l}aڌouZOTc\0/-J#=轻2*{)g{<jCgESjQ/KTux1n0@]L["Ț#t%j[4!7>[Ur-頡O@H}dOeG+U!DфB}7z8ZO."w~#]*|ɖE2-oyAIvWG(	#hIRRnjgOx;N1 ާ)gm@9KAIh_aI5H3M&X>mYV-xnesHpBRqЭo}Tv}9}}'1<tO]5
Z+}ڲ_MxMj0N1@4<	t#tY%"	BoPݳx۪JN{+>p$dR'q-w<}aAu%y0JVix}YsFz[:2mBi>E.w5N5E;rj~ NEx;N0 ާƿxB#Pn8^9Ch_t \	!䂓X|!%-8yȡ`cbH5.YFWS"KuhC.L?;۵Pȩ4vhrW۪*["ZAoC=BM@wV>6Ux;
1>^<gd}(x{-/+3hb4[d7ۜ01]#OA+ˮEBv(&*z}YJsFz}2orM}Ytڠ)N;W.]TcPiHMOx;N1 ~N	9#Pڱg4$о⭡
>fdd qqKyFb`aܾhh[)2&om#^,\xVĆYbAo6>Z=z6x!ֹo'L9'tۯu-߲JHF/@Mi5q7Ux1n0 ]^)Q 'te!`ˁۡ?z
sʱĩQ:qDjbR04-$8DH\UQ4:s\|8S=6u^_aTT1n,X77`_	aPx1n0@]^D٢#dE1`K!7w3TďSBa!2iH%at[j$q!>cF(19k,uR*ɲ~CD>ݡһWq
Vp|'XN=x=0@=Ic+G`tlTj7`jdJ1`T[J-ZVH5{js諜0P#jT64b%X1;~ǲa~Ο(gʵxLX:wNC)u
«/Nn)xur0 E|L@m 6;2A@Ml͹KƱZ\t|TR
S4
yӂ3Ux N08&jLIS 4L%IxКrNZ`Qn1xfMKQj5h~-,kk7 LL07]s=ϋn3Ɗa_3Z) $O5+h>X$xYYM٬ϩ}lI$bwLт(7^i& װ U.dM{!u,+w<yZkmSh$6?w?bu+m12V4%JAήBMwɉɮ\03(LǄ&:U*}W֚!YvZi|卼<8n=3lsӰAX5wzCPFa0UpQ"V>~o.0)c|xm݊0F2,Ad`BkmS
>F"{9;ő\vdH$y'xsDQ\PMP1_ʪ0d6;+Out&[_۶	s}ף}c~"haZr)Ұ=Eʌ8bZiy[	߬p"nuyZRQpr~!;)!(lf[k%ext/6%,5' 75d## nx͕k0WlYh$K>
e؊ő$]l9KKddNԃ\m[`fƠ)D[|b͈$
aT[>)%~o~Z 뜥9 Ȝ+(IѕҭB4
} x`Ku!UH3U'³çB^M$Ma$4ST癓mI1΁J!<hwv):j<nwW~OpП/a#
E/e<|0}3)n*KKѓ煂Cfs5۳Hhkd-*k8qn1r H 	P$=ix`+z=hl)UgO~[,▿تIK4hG%=I(Yd#Ǒ01ҨS1N١krpo-
J
{`$My.Y]J̳%.q"?y4aGJaw,vxdVa)^BâG|k 0]5w%!F8`:,eԫNkD\ޘ\1u:6m쭘e)]cG= RUpdn#2yżz2Ydr+nbv}bYGm\,
ChuEVWuM]_Ee/nd*wjeQH!ֺUG!6DdH+XM%w֤Qȳ|5S1u\_9׿U.x[.xPpWFI((J-I+MI,R0q3 x-1n0Ew@H;P@twlYH QN쥜.!~>7c&,p)P`3b^:Gypk7O1"05v,p^UmsT y$t#;z}{ ?I4;	h7p
q2,Q W@U9tk7RoTAs.yt1F}%-wr	^Ng}nxsUH*-Lʯ
vRO,(rT(I-I,I-GbBr33B3rS+`0S2B) ƭ)hxkb/XP\ 2
,xg`W\X ' c!Mxg\8!P$($3?X_!7ƞ OFCx]RK0Wrڕжco8q6р\ah}$٪"!{M
 !$uɞ O3~}=Z?On#!{Fz3N8Nƀ;Bd3y\pMQNE.G'h]k5AlƠC;xx
U}X=/$#xjC amH0wQã=س3% OPAԙufu>Ff8cqI2>	u/^[fb>#r_'֓<%z':-Lb%*?aphucg_-ݸfrJ]^]h=0xi͍xxiobT25TRe5W	ڊT~2K$k9/|ָW
+U"3@dEd9Wl*#FHPQx˩j'+Q3F"+X^ky"temlE1,*ݨTS^$тEuHn`e(REmT	suk l(DG+%FyCd戅)UlxcFyA e7xKI-OISMHMVHW(*SMuu3s=C\| ֋?x}SMS0WlJ$&pb:lm[JrB}W-zվ}>FgVe"vOҦRR6ݨqeSbBph:C(,5}f*-AeJ{hyw>/9P-?r#O8:;z&#T6LV7Gp9f:vV _iN7-Q&g^ew$IOy*)촯@99Y#w:QѐQwhѡ]SA9ef1WAځD;x:&L
wN;fhǃPTm^՛!>/,Zi\%XƓR$ǭ	kfBׯ_TX!)[e] `s'ߤ<}jTHBxKLeFxuqzZ~]z\ޮ,;#n:Ǧtf.뵫DIFB׆wŚxwm`9='l<o|4*ܥ2fdُ^N qT[oUm\F8gѳEz?u*qԌt89ǳhzI>EiFlFy>;dB>X?Ox340031QH..Kg8exP'e~kii \QxV]oD}%Oa>@[Jwa(B3I3ffV{IV<$<3i\Zt^lZmei2z"ud=MSĔj7uF5.4LB8K+YjaKZJ#*͖+D-U*ZwkٽC!vNl.$&OirW&z#zsFF˷p<Mcgdq#\gz4y@ mqh2ѽMqi9/'Ila?'4FdH<0C}K~Nm+2_E#VZ9:z	]X?6H**u~tfǃ<kPbcR*B_iyԈlIH'&QĨn]x^3X܊j#f+(x  %XC }V
ݼ
y)
HB>`̱dl X ImV~@+.jt
_4a=@B*8Q߀F1Mi	T0`g 9?.s0G}kT.V<<
l-+iYHD-zln:%QbȿnFooo=~|w7?~+8';7IL,3M8Sh&nftx*l)pxṋ|4SYj.fR9!8><"JQȟ-՞{ֈ;@(%FnI+j^vZN-$[{,iqMA4mUhn_"~w6KGn9^{9z77A^
LO}YAM	Ё,v;]_P9g\%t/y: -1/ A|u"b}b>>N1/Os{H':;;">8}dcz/1iSGx*2At53fkfNFF.,RsR2K34sRK24ueR22)Ovd՞ϪYZRZPmh˵y5) U"x340031QHKLKgp
I=1dgg 1xUj0S:9z	䒤"mQ[6uH(yҋ~wv޺/[t] p·}$HJ0(>4]z<׵Yj(s'W[JD*D9'߀D;4-]R	o;ZKgm;huww*DDg6cYn6Gyǻ`!@T{y_>@a-o"U=@Mj]E,F} KKls <Fej> Z8d/%b'u㜝F8ڃV>Δqr?}lb0:MM μx340031QHIKguy˭~\VwbK xUO0~#B(J
I<5Lem[bgﻋc⡍};wN_|% ]0&BD++LQp{_LЂ5P/Z>cr~.Ó~RCˍ2UJ"Jt`~z?ң:Y7pP[#1fWreZWRٹкN,0o8  tdވj?-*6ɏi<:WΠ5+ؠ&- ",̓*p(FxT/^.36>\}0MHU6څ+&]lȂOgve
0y;T
{2\ ʡY*Lm	Rу"WnBzti}FANE&)M4=+ndz<Iѹ2hR+*y>`P{DalP%.9ByH,j&t `"yLOi5CD*ϬU*B[XצRXC.S*TCSJ?چ$EHv&wQ9dl[[ZB~~yO!?Ix©|[#&Rnd?;Czٔ0//3hd|U6R&(Ǒ#'YɌ/2Qa՘ D1Xnvosv̜ABG4.-]V~ӄ cZ:n)Tvmt[{	aAߺ6Z!]~O&'0"s}C;4[xo,ӓcC׹xUKo8WAQi-$nؐv{RhSBRN[>'L
]|WjB(!u&Kfr'iNvH0g"Ilt91TZYP$նXs]'T옒"¸ uM[|F.zOʦx2A0	&YÄ~ķӻiqpn;#݄?Ywxݟ-z>[Damao1r<Z͛x*Т!?7~쏣נMТ!ow뾷=Fi%^YVtpOZǶɿ<z,tMghF{'y7l4TRKwe%I;MMɾ1BL+s"eRIBk
)Q	ӑq+@+)<]ZH1ƺC pN9ӹ>tR)L\HΒ.:ApքRپdEy/BSAVҼ0O{dKn`Ў	<3v*qUm!	Na)>}zPҔ'⌰m鬤q4M -EgE g,p=!SmJhMx7h~aώʑvMC'p74hS^ĩdi`v֨㗊FjL3qJw۷hNLax_WX|)^Ӝ낱ܭ;_UR^8A"^3,RŠ\$fC<+7Fpc[w%l?X_9=&/CNW"#09Nd9y8NՑ7TG x SWՋ>x%jlQ3đb)Fx;)C5du}lEiMVfÞ\1OX:JAI"dCvq4E
Ji9ũJ\X&'5"= #axT`FSD'eVeM.d6˹ɛXT'ױIo`3`ʩLeLII-O,J-RPB3 /'x340031QHO-OI-̋OII-KgpohoQZEy\{gIq ,xQKK0>7b)ޅޤ&"Mk0$w&ɮ[𰗦1Y¤b] ΊRV5(]Eۙ黈V)Fգt N|Z@Vdjj{ݘ>y)3W4ke7H9j	PAh3VEDA[($'{9*44B]|rY/u*9aD߁XiF܉UeS2IO#{xNQ&l5FH@Q~<Alg/0O$8W8/O麠x340031QHKM.Kgne])S>>-c!\UIQ~NNjQ1HcU"6K9tW0.b1 _ x]Mk0ѯtGq`Be}uǌ؞lJܤыEAeJ >&,tSijkr[}[_-j_7gLz#cP4vyjwc+-hU;\ W͜#jg`S]oJ}WNթwB7O
UH-w]Q34
yq5x}r SY[Gi4~ TEge|¿v*H4q-AD4MЯtalZ#RnÓZtLXI"|
0 #	Yd>WhMɺM6tCD7Qi)b7ʤ?D[ޤÿ.Ogf^nqsUp_#zW6t"-ƭݧrG%0!\[!px98l\RzUYƴ+?SU`V}	=@p	&XCzmQO
FII'C'4E&*|G@p;I<y%WA&;.YWwI]3%@v8ndB[.xْȲ6zbcov.&@	n~c1Ϡ?@ٽZuVU{NoAh~#0oi+u? ~[k|Ќ/}2IIԯ'H< s觇mʰ}qI J|~J|xtӪ5ڍ
jj?✢[Ą$1Ixȴ͇!xag~JzS!XXM9v6g7|yX{@{"|ObNM֫Tb/kJEh}$)PE}KfSu^1$q\ak~B9sɿ'IHN"$+~;Қ3$zZt$I@y{]קXaqSnPYes[5 cߓ:^u<Ln{Q| 2j־?z~!۔aة=G;lx`hp-&:=[d{߯}xnDG,"MVa⬙YJ`/H&鏸<>$<ҥyqOc(I2Z{);9]P;PŽCzJVmo#F];ݙTHdWvB.q>+\1.۞K\xWw퇳u|8.G%@{Ӗw~zsv|~%b#}}rd}M*}K1~l/I8k<v0[*nᮼ=Ңv>؉msߒ4FUR<{w{0Jّj>V%37w _Xajn%vu@]8YxvsҎ٬Y=ӥLs[PJeﴀۉwߞK2vy?DhLfa`|J~/㓁I0LXqJd|ޅVo'gZkd$zC}RپY^,ɢj#Y"MEأe2<ҭ%[
{ݰ	'Qi)|ۂH$
quWsCJY+1=n0oZK9ߟ8?==ff?˛<HgEy53%$/ljWwhf#t59ѧy7&E->}"7-6i:YR'vX%"^V*m.k):s3.Q0t/USa9ӄ_ls_gkG.m5gM/LS`SJǸ򛑞vy.M8'6A5Gz*GBD7
<#=:˸!U]l2IЭ&xw?lx
}Qj+L=aڣlArC9=.D{{Y78=WmjKGq,Đ
SEoRpt˯G纙h[b(SpGHUK778 U/f'ZOEk׭9aۢȚNky9Rۊ'Q>x$be؞k6!<ߍu߻'w#ri,oOcҺy,%	XTǯc	.^ܵKcKgv">o_[A8BZIY*bu-I`lBI?A@uЂ
:)l_:gmir~*-Gczf/&7)vv+^Bw+]oxVw.2vjks湫WlEi
JewI"eW4O<߷WGɘOrU	z]M:];kJy 4GR8n[BHηIR~iTouVV2ݏ8hѴI^< 0((a,cYI'2}izXX֢%V,$>R!HN5ak2*kmFhL"9}t^F{YN#Ć%!,ѿ%<p	p"?	릁gV])zKU7zO"G5,)KKJo5C(N>f_A}о/OXc<}sIOgˑł@9vعg'w^Yu=gKI'%'c,킫G/j9{ݚ|
L*>M4($$ SXMd'DBwoSnlfO2J<*s0^Fr{69bAK, mYz?x	'Ḥ m?6.2cu55Ce'#p|O:	WQh#_[2^> kY(*cs4ݟUPvI[/NNvWZ=YOGrZfbk\x1!ftB_{L6z삯ΩP. ;A\*g8bܒG/xNUfOnT,y8j;xnqJ]tmnd2S=crN048ms<o4EYԓϥ!@`MѬ:sG{(jYܼ=w{Q.,{PГ|;׷EᐮGf>+wa[I')jWyD?n'u]'7ڱJ_iԞ66%yCIki}Gt`_e-)["iOv]emb{icq{:{E6eMZMgXW4u۶X,K$
h{g~ى(oo<Cr֟9ƁcQ<|ضm85UVpiwlE?Z˅-*7' H=T8$p$?|P)Z-<JK#ds>x7&<	|
msTB殖w$g٦BAhl"&b]wH$g<[ޑuJ۹OcG !47?JwL=8$WF7;׾UpdVB#)jZ/*c«3K`q	ssVTuJmHi=VϨ$a9<|N~ujD!ܽ>?NuWJۅBCȥYY>bLõ/kϊ=dDfy]nɓ0[^Bgc\Js逾CӶn,'!o.RX=juշ:&7jV܇pn(Mݒ^?kf4ǰ[Da{[|%F`8ªP\p,o
ECsV{ʱewƳ) _-+ǛE;u=}k`#yd[.w>HaӨm7K&=cs?1,wM!1_%hȰU+I 4񸝲mDd+r(]`$NCV l\ڤni֒esg(-UgfwyK/L7IpϢXs9gϩ2A񤱡Ml>tx1y]y%~-4op-ӻY~0fϬ9Aov*Mfݞӽ!\l$~|<	7/LF.?ѧSqu/!o	
&kx4jPas+CZ.#{鷜%9+
mkF'uG09('0	О]󙩇zKkkoФP<Nf^<C!1w~_r!x#)|Ǉ6IO@(v6vN._hO:ov=vZZ!2 p#	1⃦h'm!yp_08{N):yR6̗;v{↶|睜U&!o ؜#3qq8s'z3prwf6be~w>\orȑ$,ǓNsy~7_+?CL ):3ġ*A$m6IѸ?ՙ!Wd>,·>⧎0w*/ɵQ _eWH7	Cpkg\#ɦCzZ<ẤKq	]DfpOIsy}zϤ t$[":}H߼2/1i"ʍ5jEUsuE7uD)lß{bO,Hm(qCv]btʫ)ڸU.rLynA_eqPGZfO/c{Yd$Ņ:-LBs r/L޽#+ڠH]"ݽyɳ	MIQ=gԝ{cҢ$X[mbk&ފ泌ND+y5:򢳐17+Z21m1U~G4|w_&;BDqYGF_Qvo2IBmb\ Yʬə΍PR=GӎL}ֱP^|k	qhd_Lav]frjD]ʚDX4M|˕gR!Ա	n2W8XAHLIxO!?5OȚJIQںƎ=U2|q[pGB+oɫ}6N-;7_łFDY:k71=!s.kS+#t^{Hd4e{I|Ֆ}UQ:jp,vP+%$ǅ;`,XwʥYx{?jE>puDIe]>Bt<@<ʓH;H|X>>u)sq<]-wiE\#~{ ˀ	sFfI%L!* IMg LNWnқV0Y
*Eodj׃oup{Cz]*f{ ;'1	4#,*qߣAx&Bcxș.EaoxE0d5wE&s2K8t	pH#G$.}``Pk%m%d쩏&pv,{KQ_1vI˹󏻀cxU5ghނ=نŦ$Ӝs"TJ'O^Qϐιu9-UXg\Lֿ\PK&TBSo;КOB|K?i	?:+ 'gs:8㣼r!'JV

-@^6oo5=5aˇt6p#T(yԶHiыȫ~`Bɓ7!hd1nDl$U]T>{#:לYesjGOֽ+U;$rH{5c<ɚ7ܱHϳz_v\:+RP0mn6?~NyQ @6YVBQaH]v\C'
4C@Bia_5_gy#^;_ {~JA4mw^DxDJnAuh"
h%?^"QL`Cыl嗇`c"rooզSr_~Mq"'!3C -PBt:-M/vy "Y(!UczU' ~V]rJ&+t5_ћ,"\ǭ
R쩵6ja/"H Dk@Ǹf9.3Ogv'6|x#']^.h֋32"3hT4G0=-yݩӐ绳&[T_>n,r%s_JE`|P>t_pxa'<6!MBI NМk&_ۈzcqma7{L$Ҙ=2Pm]{X'^ZZBL7y=.&cj(/VVtr{_Pkӡ?YIu~)CxDʴq/<\FZu/x6ew$ky#
߹ AS_}\V\鳊cZhˮ*HTHtSy<"$Ek?Je6r?7q\Vvg-v 0ғDgE5v:eDxp9ٶ/QQӛrzNfJ3-$A>}1ļfx\ܭO{w~/z9v&Rc+ٯO7qB)䣩,[ 	Ms5]+p񊜝%y|^|כ;oymGPR^
FQ3aVI[Tbp}.߇1,pi'4dȠ]jc&HҢ"e(/=][' +10o,Q3&ۄnLqPnU2~X5btI߉\@vL	_@rȵ3>AX=ӂj~>bYpproqV-%Ū+ڝW->.|9# Vi;{v@FC-G
zɉWJڵ@65|Cx󱍢k?sbމ뱯RF}jS]#H #p$|X:4qmf4Vy;EG쯛9Qݴx8NEJDuJf}Jk%./gny\čg-<<@X9|p?ښy,dO2>gKGLD *ng0@W5ڶ_Z4~^.\As_c$e,VoL\2=ʓۄu;Nm
fTZqI"4dE"`
Qɛ9~>1&[',@ccm~#;k+]:+no05*D
B. /;B3/&1h)qpʞ|Y1"𯉥ƇC86tpshik)ϾP>}Hlf֑ʫKe+$8y*u@x+Nm&+A;d,U!p{%=k|l_@H@ʁC<~t]BpirS(l|kZiP{hDD]dqW{4XٷS]D8Vq?zҚiqsw5[<e*1lc|+zAɂL7=eD_U?fF2S)ʽtR Cw3;ye50%5.rz xIrW3jNo]yh!ht:'ks#VL}j21eyIwS}pm*C*-'sy_Jx*bA+9J͢&ogtY[~y{L_JxZ/cT`>1-R/%уGr}:<3ӍgW%wQڑ& ,G
\<ݏ?/	I1.$6Poh/nF'׭6>v&DuK2ߋpV֣va|{-t^`VTx~2Ǘ  %AN5+p;'>򋍇~-uiTxGdaQʀDC>rmZrW1=a}tV]%vʘW_~wB[6_tIG<iaYobQ]殏[ʩRA+Ƕۭ;iPթK"p+_Hx7ř Kv3Uʒn3t"U_7'r06³clSSxֺ-Z,5O꡾TRtez|qԐiwv]~;ve${YE_Qș]RW"+2W
WrVJ~~ԙU|HyNȢ`ÈKXX$(=PKXs}ҟ]w {T$ s{\JiY,<cM]N&|iY{!]*$A?ŎՉg}h@{MWi<w\_difXY]j[B;^nQmg{9
\01Od*㗑s/>lXrN:Avly([<{Ε/$;_Hv!d/$;u~!$w˲	ҍ`=(p"fU;×*[K67U+$PܘNGԮEz}19j۴^ϻ"~i\UYP}5sc=KTy%qy'7":nmS_Ԝ홎Ks&W?H2rc7Yz­*ңuQ{@ٹ=u~)i؟Ɇ3A2v0^v!IQ.vr c}5@*fE@gdDîma$<LsZA~~.OU_r1#]Ր&cq05GQqE å|
&xN=OZ~-/2dkPڤğJzI$ζ˔|WjJp}S9<	?k¡}ܩn)%;ށ
%1~9GZ|!HrS.POҿ#v0PSɁn:ƉuzF`i䃛<TIr^WBn$2>>b/-`6z0O=R#A0GAVl
N-/ ="rIo*':9ʒl/F@!/䍍v+/R/l=ټmCuX@qyxx*'s)R5|{hi"~^\Q{!(;3Wsv[{t_^,(_D" ?'8db#o]W|FmHW5}|E}*1VBlSI[\oZ:wmWVg>)Mwcp,94WWԧR vsGڸJ< 7[X·g V~SQc2Iac;qP3 X*!'^g"hW* 
	}[d<  'ۈqiq|܂|cm<$C_#.MXau[x?G@%
.R/NK{UWsL7ho9N D̀nw[1*;"__a ?46y)'7bP,S۾MTާ$];7?SJ4nCFx͜sZZUgB4&#BӋ0&>o6b4zG-n;2M)(ɯFͲ`_y_B;JӶ`XO޹`0ʮ̦6sGK:Hz)˼ZKuP|"p0@KOU+iEN-E4wexI݅+I-w+6Ǥ-&N/T#%Rck1̵O]hrA~+݅Rx5,ik]C3_gE/OSj9k#vd=լ0
K-+]q ?	 ė$M/ZQ^B*׶1|G9	<Tݧ+[o.Zetu?[g]゗E ɟۭ<8"05_V Fa,m@ ow7nW$p<y+9NѳYI9Mn[vQ^l_AHeMɛ.Gur]\L-r>>~sӵzSg-ZK_J{q\G.w;VFd͍9_}w`[QZ]$6ɩ%G
{jԅn=H_DgE<RV-;ߎ'Wfu1-9uN7
n֗0fךg&Q/B(4o7}{`)_t[6BFSmk|X[8!x.5rYͳ<ޫ3}|2L$RRv! ޡTyB"_3L2Σ=ufߦ^woO;m%	dښNJQJ;;iBbx}Ul-rL
KW}...gѼ3wa~6";ɮ\2FT=W{_Bٳopek10¨_/@^,05OcahxêTN]]nJؒ@eؗd5FU``>	6aS:{Y[4LWι6t5e[R1dB,iZJ@Ud6סs	,~MZz5:I,/EdK xTO/=hNӅQ	WRk4ީ̄lVvz76^'FS9e)|K-ՐO
T4).ߎ6oDgIq'vK̡ʣrDEO" Qşw5	r!mMGg}k $Bo`~q밥f{V/lئ/8/5|	820 0Ma7QӬSS$,K9F^se=G [f7SoپE: ^S_u"PGt<ǡ;_[IV0l˖=n[0T[I@?vm7`:Mӿ⸼r#;tu=OQPmZ~t}t9`"POdkxhqqiYRG"0*(wAݟ:cmJ_j4襫җzyD_|k8׳6l=(b_¯wR's!;[P!m&F9WiE;H6S%m,ߚFA؝:%FgRp	ܪv
꼃b5 Cp½iAWJaA,hP֤<?d,"<;b?<:e
 xr?ҷEOvb/֧c:MFo@뵁U=vJqXuA\eZ_ٌuG/O9C1-G<sY2*[9fqުDNQKlFrz3I뜚A{r~"xQo!I
}4xE q!E!Q~EJ^ÿ6?N`z7x-x[vrMW~}-~^bVRkA`?Mk6Lp`\,6	;,ilD*3:=Rbx7e-$]/$ |YIYpeH!xwX|j[[ܚkڞag;%\nۮǜ ¨oW0Yr3 Lg(#xv]v%814>
j`sqz[2R^CoZ7#[;nv-K嶁DՎ՚2K8>bm(dsý-Lr! C}a `aT504',3M4d1X:T}@$8Z= P./EZjGUT%~y,*:XL#~M&'8>(`;xC	ݳX;mS$dƊwuPSR9I|X66gcwZ7nr<s_p%_	1g^-iI,z撼a. gشi;ֹ$l"I1//uA<AxfFSd)t^ٕ~}Xw6^nW+T:H>$qeCqq;aaj	?DCW~vi͡?ShXF*o3:9O3Q#("(8P=vI!=r{¸8>pM?
jAzE6yo8e~&8d@&ߘɰrv{-*ށ558qsC-M?@L]g *mCG,EWUӄl'<<zlπ!ʺ>NQ)q!Mp646>̔_]lR2`fZH	d
%w^.5{AwPԭ+heƔáWI"қ
QMPJA=fkyյgf6_m]w{S@xtD[UI)^=|{l%Z*w"_,.av@0n8ǜ9y}c$ KHgu~Ǘ9I~ρ:zDsZu5JD?*K*zX9)9H	<qӱ^R!'gOm
Bqw=S[xz)dE^)<cð~Pԝaپ:>"x5wBFq5{Z5}	Ql{u,K[[%Tuٱ|ĮTMtzgŇ6Əڪh؋_RyӿIM
Oׅ:sUaߙaϴ#uVeo.˝*v>YۧWǱs1[޲DGy5Hh)
2:Lzb*LG4J/0mȟ`
p2b5P	z?Cfi"DUˌ{)tjp):[]i5f۠2>&zi1kQ[V,zC_zIB藞daksK]V߮ag/
wFTܜ.hstN10LA:m~(*3ߓ8ں_s`1x'â_Fn(}',>T6CF/(c3f5M |c;㞙T'ǈ(#;]Wt"1&wk;cMTzKN{x2,8Fx=
U/
,lCW^Dh|~j	,tQg^N/f߇em6}[6&ֻ":Tu-M$DpPg:|$)YJWn)]hIʀal CfnzS;EwnnAj^#߿]d	E앢UQ<$١o甄#{HίjTEdHUN$*WF_[Wo<rPKHnon;*uԵoإ~ܟ-hM ^.WHge=[c*4'ۋs͌anb$^=9]b3t('^obBox~&\xNB&!/}W$=oʳOk)|#tGhVR.*# K
Lw{ics|6m%J8)<(ݒ8#y[74Y* .^8r-0>/H^S"iޑouܤT#_$a}UvPFu0IOgJ(XODnRn_'d fdP$8ـgC=:C.fg(>rq0-ׇBУaѺ}_rִYs/7)JR|!7`{zPڈE+@MQ)2ηckCL>pwY9zKԳƄ9aZZ4s0ٺyGo~J1"ƊAyӨc%Oe:LۏV%eQb5g+zxz~{nTI] ɗzX7ʨ\Z73ӳ?(nOCkE3j42i:B8V z/
¯Vsk.@},|(<,ܙ
^%os=uͯу򌓆>55A:ᝨr#̵w]h~{8ް@rʕ][
{{ў=KH	Eyڔs-o'\֦	l4?C\xT|ѐ@'[?`#5U$p]L/	O3h5مElϜ١1nLtzK	O]_Jx~eHCEsN(a|R귱ցqBҧ,¬U(
ݟ>!kJnZSGuQeKrgJ(舾vFw9nrMɩ͵F}L%VAua5#k0yOZz<FsEx-{b:"5냮RYƃ壣sLp(B_$џBٮxO|<W"nNEn>@J(yy}gLv/s_+NP+{o;%]·xOhoSȋ?INwkZH)ۛp::ؑ/'vRm&8Skk'fH<.C4|EpJ)AI{SxI|Ʋ24fs%u`*עXRv ~*8Ǻ=$8>x"#k =hzLAȂc_{n	S?2ħx_3C)=q/T-Z`PHb"KM9mEyRk6h
ݭWVց cZ}94X<7]I?RUFuM_C޿5;ܯ_Sl6z[P%1.vyTY9tP&9`A_#_lN[A4FHޢKSc\ybS:#xSv8) e^83(P³!W;,y_N{;+4=ɬ׫#H=+\SQ[yy/ҼP5k Pś"Qחm)H|2CSrLC
i2<[fHڝg݂ˡÒj+2;XK~Y//x,8ribsk6Er0+C+.i	8a[_OK~c`4v*cGY ּvآ-rx %QD"J}}`	pxPj4AZ]#E4?}*FtX\rHKsUUa3XSi,:$g)WMs/ŴGXWХ65^6b^ssОw7k46`e`ww5&}!H* G♦ˣ[^_8kb_>U= sN[s=P<-*/ڼNqd|"!H"7}b4֞;-'	Usk%^EICX^hlA q6Qೠ<Ğ(>t[N1q*Nϴ|nnhdz,ԇfx&X{k͹^i>KoMwgۄF=񬸩ϵk^q[Y=!{ZZү5 3	+1nPZ[r3s:<f|йGfq6Db\̡;OLݽǗ#?^Su<ƽԌ%}	h?Ȇ@ϚyvN?U
_k
zk|BNdVMEk)Gx@got:E&>Y<#^ٻ7nr .fF4_4J*X߼?|ivԋ<y@	!+16c	]#ENlP.Sqj53K򻎺uE_[ _ Xr	xPalbIo#r"QbDPqɻ@hXp<qp1{1	0'\oq?o,Xo`r~O4&OX:9P#W: pyLH?=ghMC`;V8]9|.s5|6ҍ"l"FqxâH?9ȟCf0vʡ1ܐt(<M{5Kn0'J{'gP{q/<QK|5xˑ/Ξ城dPG/ƴKڇ@I	HKIAg
lWF76SMWYzvW8Z׾?ñt0a3fz8	H|2,wnf<;}hmNʎ]V_^GWg`'aOmw'loBΰF\:ω$n3Q	wp ``TC_UL*sz\{4ӦΥф'WTg9,5DY\!Hnzhߍ}^'y_.42*cg[{bh_q0ofju@B8Gv[l<3WC^1&V7<>
G);Spݠ}/$s81tkVha=0f/ä<WKv6}uXhݗWBݎ@yy8}gǥXXd庯>/fY_~lhL odtm|%\<bYWdJ~Y9"ь;F&;w-waTVT+ha.f\r۝hʠsnL`![@m]X=\t.=8j:h7-8.tfwhu֬3܇C<mƱ3#0{"q_wzʎ}jL'qS?p}6smr`Jy3A].W.Bel֛9j_mPWt?)50O0 ͯq'jv]ǵ!) c"QF+P6pi+yySnͫeoKȟebWvz"LkvsGg=CkRN]5<t\TDپ;:lY1mÄO^{HqP){ HewꧥHQO;c(;)=36e,-p3LںJY_o!p0tse&9mFWVm$TyK̠rG =ÿlEӘc$ Ǽ,hD'&ϱ/V:hwה{LT3Fsm^ylV\$׷:FH7ˊ+e#w'8Ô:~:h;HBe0}zqjCY1Z'mT?oʪҧn? گ;nZ_ƚrO/OC[D?~]wk$+Z'V3.1GqO>dwk"[|#gs;e@a!v2$(Nv Qq?m7KVm}Ʒ8t؝H)ksJ%3y*wc|{G rmz/BW_Ur}_^#1?T\sz+7)\_nl%70A'{:7]vxP{e44<r,XZ[҂0hsVޮ8&zMmhv>)kߍMdX1Ͱ>0ޮs,rINJ-br*^O_r3*q%>Tw*歓'7n{>:}r37sQlƽ^3w?u$z]>]R_HLFh*K|R/ѷ^uMgnG'iȯs3YVA5K'ae<A}a7!gIfUEѴŧ3$	R5§T'\Xb7_Xv{<(b>F2wp>ӹ]s[o!xrfTh[7+CE}a@f$ ]/
r!p08>O?uEcU=7;^o9΀k< nܝR彻Q拥KxD.LǇݬ%?Z<{)cefgh`SIEOo>UzM9S@c6qXYU~U*OƳAoX%#x|?+;[}N Bɔ؟0|zb]j~<,T EE2͖<\c`WXk`'lBW8Jc-!nz9ƯcGI⤕y5VUD 8I5I@0K]KE 26RЯח:voۅk?\=	w{r6bXȼWD%v__9(nfVF5rrE0?cz;??_Ynr@M&Gdjkq?NJy418#o.0ܬ?=$o&j`MOiڻuYQ՚ʕvӰ//9rFϓqzi
	ut FӛzW<6b4OݬuÈ8
{@ W?SX _{J͌p3ѢU`7eWOq<u֖e_-zw̾{ҊUGw?,IweB,mv/B~
U۵ 8Ifը?/PrW)Yq݁mL4.>Md^ 	ZPǶvWŻaW
~OqaIvoӕ|Ӣ?@]| ]īm$EȳM/wzyBuͺ7c']{6M2Kr2L<XJΜ41Iqy8*cBQ_H- |Bței@Gz㓟Ey4*V^hKΝ?~^t.ÛӘ2f^`/7_:A̋utzB%XLɰ,OxwGxsEb1&6֫CXd?-LW`l ;W/Tq29_=o3	9Z]>?5W.ZY<H",L9#.E^XpHHtBl\\ߜM!eb4gl6\(t%9[~LƩ{ASU(-jj]`5*3rcva:OO [M4ڇro7
t]_,̔ZXY{y>:c3Yt4s}?TyeyćW/ldZXQ<m/¥o@ty]fL/۟2QbsBGU\ON(TVW^:	y⫓CC.ds_λLt8p/όJ5ټ'%~}kb %~b;%iCYc^ScOvW?x~!4,g~ҍ*T%B!OK[TI'bc@57`4.n{ǃ7Ut7StXƼ)#fa
ָDvk/=ʯ*Wm7~\X;">?W#y^_l0=lgGpЎ+C^2cg[~vm;=c3'EU8*w.kR{nEyߋ~(	#Z Ź\BPHV<4:sVb̖j ߮Ø)^E[^K~ko(
Pjq-mu>}N8?ZFw)3L`D1f=Ki꼯[՛$ IYeڮBjty05LUx8z{ŉ+{xoc
DF-oR`+?h6zm^I!,_oRk1,?<ԕzU[_ m11-b
6T4koUkP,7+t ek2ӎG#TSVbސ:$%<Λ$:o뾧g#c%%ӬW?\qz2R6@Wé?7i%isrAT
q7=[l#s3r2y3ӞDO<={ǓYG5|<¾aLOٴG'kSwz;45P	bNGě4#T٭ZvBPeN$~Z%ApG1`4Ph\Hm\ΰc檼75<+dLx7"~;LXKe\}g6z|@dGx{)h
W[hJwOd<z"L(sQ<԰ة'OF+NzoQz& 
h#
< Oj,J \0ŀ#Oa5nEgfDH!'O$ 2xI)x]^3cP<ҵ;sN/$52'H5]}!yϾMnyO/裏zQg<»yC]$1zX
.ťI)Y{\UUG!_!'2<PaKppq )x|VLn,Up/,Xu᤻׳Y-69Ho]7(GPWO48x h$W`ӬZ|,Y.8x{MXtCJp2:	1)
pS(C	2g3PB}c\NvwJu^&*Q,];yڜד;7>|~kZx<>lcpRu;}sh=n;bc13s}n;9]w xJ
񮈜K"{=_x;4` j6L兝+PU7\L
 e-pC> E`nnwMPr\-nUfG.^'[}AC@M
Рe x~|u4Q3X_w
L<O8AEy	-;l gD4p%v4=8=ne칋$x]/# 4l-M(s!5oF̓=lYYjtm5P	DGڳa9m;&Q|}ox"nweՠT7lTՙbhj짥uB"xPICU.lYЃH(Arqv|VԺހ-"LaYIhHCgG\̋=Ol䰭"<>xTk]+=ۊblXbQ' 0m+$̺W'nٖ#s]TQ>~_}_XC &0c9wٴn0YbirI 4] T8M}|)IV"pS	"&"U?buGD>NYd{Ko)ޟ!j5v:lz&JXgL^w/UoM}g]H	Ǭ-S7Vr{Ti~p8__~zwjWP"\95^9C2JfwSjh9Z~yfw|կyf_.A㱾7)\xi3!J̛TOFFny;Iz#fs5 eY`2}^=yJQ?MImDkY>ІTOKZ35.y`<'홢QAu?L:y][-iנxA\L"ZZZ{PChfB3l&p}D%EZDy4,<ia&|c-I̮ )zo@Kχi:!+F=S._З<jD
!%֞)"D!׮6MA-CJĬ*F{{+B[a5(ºc_ZtaH*ޱ˹q9-CHx؁Rl6Qo"5
jz/dc:2$0%~E\[jZi
D=<
mѬ"z=SDHBS6$F*7@	
Dα9!$S!I%"*T]CLa}JBҦ˦Ezߒ)8Ae$=$CӬL_Ƚzf{V=j80LM^D
5iJ@&dm4Fa=S*zc0ɌF{B.ǊpLDm"M=SF"N3svLS/ٞN4܋i@@r_koRj<Z2nݳinACXzEES$qL{Ǻ[4J} ZOӮL	F+cVqG=͞yK1/ʂeֳ2OYO{i1ALz+3L!7bqFHk[354HS/0O:<2	z@L.^W5v>+~Ta?S3	X%p">e5y3EF%iYl5K'4`B,#=tGo|'Cz{JŮ̉b=haBSѭKK޵3s՞)1xpߊ^}:xJ9^kԩaƋ¡FXrKnVs`OR
\&o8a*'#
uhKjepXXH1闁4
1
-N[E\RmG%z+  
w[wY~yH'HAí{vVjxv_|ZN0W)l0q 	Π})6gBDҚ)vRDXZHh6Wc{(^p!n: US[`-8W蠵$TR![&zN۞{S=j>#"b^MIL8spjƲyr5%H].A MGt6?uoFڜ0] ۃ0g?Hh9ZdP6=v\$-ó~J~aM w=1e hZPmZCDTz͘gKV9Ҟ5"<u$ˣ@ZǬUkшh8dܔUs+(	E;HﺮNWs!0I#;4r?s<j߭Uk?ufE)Fb)B{}	[qb6k)!wZ4@-I!yE}׳c"	$R\곑*
(CBm&!
aA&|JGPB곑G/ AFPM6!!b2HaOH}2)
P!ݎ/ɫfn"4ܖL';dw7LuvWIA3h-HXk~ppIN#Jh|?PEߚ@(@B;\ܦ)om}RA myMmg
6?|#ćyzB=j<>BcY7bSixm!3 (p	x~ZQ1ds!<%pB20
2Wjo/Uy]S=KsYJC3-i_\uGͭvv0?'y]PdV.EVO3)%C|-f
-,z؞)-1|+ oqc)x]|))ኤi1no멈'G)Hw;8ht`sM nʧv1|/>}Y-W庻Q숬a!xؕ[4
A#QEYg~-%gmyԱMT#婀d mcY<:Od.C41l@/%y	h]n[4E_H-!jhq[n(^t Ylv)[y&!T26;elvĵyIy{JƷ9/?@)a:'Et'0/JH˱1y(%-LՆs!.93;>l09xou%xv2vB WN=nHTQ0iƣhד6M	DdvNCѷH܌~aD-eo2gˡxeA6S7x<:
]h	|8hy 	SVh~c4XAi2#b=?J	"iF2Psۦ^RYw@ݽY	80)"=p¨S%t*U{%x2bvHn6m8[\`^#5HP)@xݾe[8Ո~G[LP<n8^lP0II1yLY`*7E[3 4i'AO=_7a8[@)K`$ `
ܸY]<	|3o
"
\"?*gHPw	c!.YYAZ&W#\,&%6+q-U Y1qP[=]=`[21ozGl!b9Tm7 my*~Ȕ	1m"oERc S\\8\DPc,]ġ?go[7QD'Kqx֨MqDJ.pۛL!G*da-Z489P%WE5]mB5/;5-7P#{&Z#ޞ)3,!`¶ ,CmTcZ4,G$(Pِo0Ԙ<رzӞ)xuaC,Lڱ˷L -+6ec=jLX)p0#5xZ4T؁8L;*hT`~ӃL!'.O=l"8x
#9@"YLܖ)Cí( HўLg ?R0q]taVw:[:|3ݺs'E+(DB u܅k=So/3^McL/Q/ߕ&}xɵ?$E}
Bq)FW%75`*fQ+1ؐB-ZG<Ep}^(ֳ=HwZ*[yCԍ+|{we}&+ܲ>Ndqa$<Iv[x^:w[:tabUݟo;s$hc?Yv ĉ orxP:4k,-sT.;,$WYg;I1avxUכgr)+w_Ud%Kjq~ox_սmկ6֫XO$+&ǒM{O+?6Ǉ޻'*3[mY^N jV10SsCǛ@^?} aV@ؔ 	&JHd*eE7q,^qwߨXjm~p6'/-qV}Cgu">0j$^w?X=Gl,BD`M$M+wwoګ|7Ӵo+~qO/1- 3z Eǔꥄ6@.LΤWMtK`ೣxAc=ukHp.T9M FXLn1eƷ;=hZ"AȐ o

ݸo8R	,ȂQv 4~%ܓd!9ѹ8qԿ~Zz/YwJyݏ1hX!PAVoP\%cc,pqrc7j|Hy4hc.q|iADؒu7uxz3=n1ݬVy筏~>@8ҍ]cNFpہǂWmiτ1? [ԳVpz1#uЬ丸P9zg~_#^"&EM&d'L=o$VAL:t݃jd+M;q.ezd$Ӈ=i;yT1-HFLɵA`Y m#T7pS`f:r]cbhO b !z_1#Ƕ2Na}ã`Yih> ߵQ"CF8b4Ll~d@ "&Pp(,1xTʙF?\Oi2.}<1?%v@Y)pZVAr5f[3AQL9[Q@\ #t`J6vOD;
w=i  BÃdo_A.84.O@Ѯ1ܘ,<NXL5"Aᚨ6{0hĢ'C	>6qH8-s 6jdjLFzDsjX8s;U?Oc3/`QݢaZ?K
磇ccN;V
\) -	Cr:64K}-;Mn;ӛ^vs7vH˽>x2BӴBhX(Sˏq>^>W4<ouyF憟}0(WNe֢mʖAj~`YKpd߬Mch'4B8bB9k9|9!m6M7ehh6fWoL2ac6k.ԯ`yAZ5Ff ZB?ضMc$ >
BP>/a6P|kn{&_ی644fa^sI.OHN@݈DHUYʖ{[Ź{ysH{=&ވ6R F1S<5FZܸ=ՃZ~L5gS2K)@|h`r5'a SircMFέcnywc~5λ+Z6RG&nhTXA3=
utTp莢կʂul`+֯V,XG4zSF~]_dt_]39rj盂A!Y(eqV%NH-L1abB^7<//7Y7;噞ۭ}Y,yS}e6L$Щ]s`q&苛2ĢP1[Z5W4@F JSN0$K¢&-pr~Y
$132j4iwcһ vX+CҫCfH{q:?_u?_ک]	[W"T	P) ]ڲso~gin>Ol|iX/׻;=Ey4NT{a0;fI%25l̹N`2k{:XZ
Lk7ŚMv֤H`hO~2мQhryX>s{7ͯҢMQm~sm豏x1$(6\o)?(~E_EpԎhK6DZZêz*kHskz[E/
nDqD>eEjj߭Iv'x/_=>mHoGwF߹VH{$q0:̓nr\'	ƀaO~یx|yl_3*;EYn{ܽbr^_ъEjdyvKt~,KZ9cDBw'k>wm5\]ΰWku5/қA5_n]/qq)guQ+<2v-P2eۯmShZ8byImt s{\4y[ W6z9|7i"]ճ8)/û;E_<:X^y*η>zVqT~)P5IaSWKxIک]lz_7?T̉jۖEQW{N w達>t(YSO/?Wuq!7WyXyxa~F`-:@^g7OTK6[^SՏ"'c$7fhDBD>N6;目/0V38)O{J9ثa[~݇_\Eo%-Kf]+S5RyG9z\* M%yzE%+84qoRƕsrv_W;TNS\~k+7wlcjQY7iRãGyvو]/lmmseQ(!uxi'ގ_8=^gמ׮NK>e,QOf2^nh
걸vX=3] >P+q{K_G9Ȋj*D$9pZ7	⼌{aF\vυnJpʁ-0JliIl(f^41n˴Uv6ғhy2_K:xA!x»F[޻O-0&z;&Cޑ՞0
K(j<@eeBUzW~q_܌s0|wi0|67~"?1Ѻhp*vw%@\LQmWthؚ_J?KXO3U6́~?3-e%n@0gy۹7NVţ|UpiFQG0s5/S?Q׋焴4u 2(恿(Ly"3mL|Ǔ)n2*F'!W?E	zZcd[)1JzhY^+L0`{'񤤆	=26g7 $׵4A8q{<x]wp.OlF9ԕ\_?;|<)Als<x~Ep5pT3!,Wl?]y!FOpC #	jE =P6v.=n;teW=}Q2 -Q tX߽a}mhd? (St|AFEA H2]f-黟t 'H(ۜ-؂)摎itv12oh4; UrOzx/џ/q88`	նyMP7Ԍέjq46(_:VUǗ/ 53q`W5u]9	N
!ܕt}^ ~EѹL6d5kFcU=ΦyBuZZLa|;=۹OJZWD),!% ҷkb"qF@
L9aSHo0
π`DaH_e0"c0JFo
*A%-FHU\Jm=FAĶ ,P1 s@oF[)aMc@A&@$ FlLPiR*1
\m`aߣfDm^,>tP`Q-eyZ5Ɲx-k9vqV{ŝ]O Wtڒlm\Kv5xUVhy;ui8jaWsg?0JX+4spL1HR۽ۅ+Y9R~@[3t@~rle[2iEBؒ(=F!Fă@Lm񘸃w?)rU-l7U֯ש;ܞ\ЗͿ]_ZX13?:˒ j`pR#4 u2ǈvޮrEݹ6?ύ#~yQ$>@`ba ^=DI`=	HŌ'pHy:J,=~C~{߬#ᵂb#I2" Õo1JN)x!]gsQenw~)ZXָ=2*w;.OF2qlc^̽4A.̹C$`W;r%UQs E:b'Yd Pn8=1v)Q" dPF{k>LLLA/~d((!+Pf=f2&'x{6f֑k3
HSYHЬ#}Q^T{Af;?!
x'EBL0My -e|Qļ %#Mh{&0TxHzݚ&1r:aBQYEL_ah7R@& J8X6w06fQb7ڬ+OI_?Wʭi*,Lk<	+wסŏi!dZ^m:%k*r9UOilnqpA?~}Z:ժ(oJWϴ!=zvoZf_G7ހj4Вe
iOTGﰫVvk&0%PZD2[ xϣ$StLku תMdJ{@[61TYrѹ\`zh0I/]77 7VPT;NǞ_چerfa߾O9+{"N{g;n6v ٗ_	wiojkU^?>K}("kcq`oZ,Fh77V&ug?,\5nhgM>.B;/"T]/iمcPBH{<g}B|af+{^ONufapzn܎S0¯kWhmh66 ca,g?3g_YZ]Zy.<dky?Ẑ뺑q?A5:jcyS_^%F7Y-	q	x{]Sdt :y/=9bjk&ƣѺԱ%#]&S,}rᄗ/V׎e %8=B
4-;Zg£0at:C՝2`tmº{!Ew &"#fvp*:Lyzہ&
cؤR]+__/zv} pxBI:<5P>U)dbU>FQ!dC<|<W	SGVKh{I(*>(EZAfvlSrtD681)ۙz}ڵ踴;ˣٰ08R3&יy<*`'
.˱mz_v+76LzL;;7u;ttO$,\p޿p+(7
iq{P6mm^Y-kǵ<]xPTn;0,_ƻj"x rGUAU/dja\2i#3b8[&|8\s6'\;{T+D3vSjmƜk,`ŋU4=>NS*̏i9xǝL7މFp˒in|0(O@Oac[}ui4Elr9ܺյ?̼{	n$`σI=:/9Zl:68/V?E/Ju;sqw_08HE?r~:RMz[_DW	U05v{z{՟l`J(K#Bn(~f~{)~ĆE[উ-m(!I5aڳH@KD"GPct9trOr;O[1{~a/]v
k#57
2?zv5O]x>JB&c>7°:~ls֎+~)>,xɌ}7IzƟ7;~> k|?{ӑZ0
(9eMþs^܃LOyO}r4(vF8yoFڿmD!/O=i*0MD	!/%W]>  +Y LIѻfջ-,W0\=kajatnxrPU<?5(*G927.cPir'ƣt%eu]as>i3R0պroQt0m1Tpi|x˱@IЉ<\`PdCHFE|}E[wA(w//16wvn
_2gdB1ڿOzl)n<
0#ļo}]^F͋GǷaX7ʟnA]',X <:#Lo{^ϱTFUh"gJ6mp
i4$CEm*2Ȩ65	hcd@k	@|gAqR
3y]%mR&DV&y\cCwhF犑|Dwjd>?\wYn]+YgLH(C*6Ayy^\B	qGRbzx^i=7l]VS[P\1|`3SI\-7fL6<QߚM?냊e,<97#)W&xud喔7*TW-vt"ĉ_^ŉq\PH<-dSuiaC*DN1 $6T|>o?'Nx2Y<$6ZKY/BO3L._8[GB,̊9Y;J藉h@uWІ1<N/]amٍf>M'?/S,:4m͐cE(ۈox!	p(+$qS.4l>mU*J`ɠ;?ܒٺ|҇\ZmLB'msV2V4Z(H4vǪ@ebH9Hv'[dϣ[J,vЃX3;̩gPTdz>W5J%vЂ@ diH ^ME#czAXaRhsoz9}L
SD?FztvIfjV`#nkl]kh8osɌ0bz=ӕF͐9Ȣo/cDxx_x qMmA˔=W90`CM)a:5aWo`46sJ~'K,=\96:E[Щ4Qu!SUCI3Fs@rZIe&RVVVq;>{v]zoݗ=,7$Y5n7=<0hi4ͩ2Mvѵ݋;y04|-wA;-NƁ9JG/~})y*zx! Cd MQWh}0d[&!TTfQj-=LgAuz\D=?@wwN $$ IPD4*)e`2Rut%	z*kvzk&U_]kڽsLS} $kѰuS*NcLӁ@<)x]-AC
;v+
F}83
-AlkOfKɌj.XZH͆iU[;,َr+'$w/c{gl?ryxU]o0}N~*d$*Z*vurKؙ@k;U}hL! ⲊOUHLT:
*fm~ʵ*YJbH.iiyCV%W,͗YʒÖ*Q;L8ܜ0P7֦i5+-Y2^F b(9(=|P}KFjfbp`;s q0\p	ޟt&0(U
Vb)y:R[8؊tMU PBiŭյؐDe[&E]{ֽ1(EFc➔NJ^<>`܉aɦ*XEG +gSaG $J]R^cG3,!$!?#4sQMc}p𫉋w[="^q%f+Kg${+pNC1G3"|2	1.XW.ө,(?ZcLJ`aetC^mtlM1v(!&>o
ژbM#*A#{TBKqt-hΡD9atӇݟ{߶vxA"8}4:0Hd5z;Gh<3ʍfWteOїMy\KC6.cOtmȷ^6,k0(t[~u!0pݎc#]D
sNGl58'Icj"d3̘XOo"qOoJO/^Y]a^/QyxϿFf̴7XX8'o`V|YeOfYa΂Ē+[d  KC(YZRZ0y'4''gMR05 k5jk7Nb Zx340031Q0,+.aSfdȉ_^["gBT'%gd%d灵4	M*/n~V>P-ƺEe)%)%)i9;f>v%xA0YR__YK1WؕoutjRn6J{h wV2xN0)<.ҒR\DJLO/eQ)a\?}9	P/$R!SFC2PKnmUڴ7vB0)?Af9ĘВg;?z\'x˒w<F9. r{N_}ӷtQ1_>XJW?%7,DHL׸#,~ojI,<ev͚~]bojxGԡ#`I,E>>'.'~@=P%x[vumz.ĢԼ'WG??P,D*>3E/D!55X XA#3EbTJjNjIj
,W7PĜT$K2Ks&;2Mv`4Ϩ9OW(	KӚkGoJA!
!N>
E%y\ NlȤ6IK AiJxzu&F. 9xs	qRqtqU(/.)rtqQp	S,O,J,KMQpquSpqus	QHK)N u-q
x˱
0=Oq>Gp6'gRh\_)]Y(	ʫj5s9heN))Gp^E#Ѣ|͝wambW
:Uԃn-w95txs	qRqtqU(/.)r8)$&'(D*d$TYsA\Z[3 '
x340031QHI-/J-/,/KgЛNzD:W!D9PY	rt)X>H)ʋSSSAj֭iL~@Tr
{ϵ>:+ajJJK'K]oUF`]sI Cbx͔]o0_q*AU*WH"mHh*Ng|v9q%qy}>NɊU.1W`30kN.R70fp2DiZmQ\:a40k}-(-7~}"Ma,)^N;p&y5gRv̲  BFơA8h"O^5~o`G/˲\6\nY;bn<Omݭ{NiLU\,욲br7Jb"Y
nwVIXUѠz#3)xq}5ݩ?V0B;`I5|6'H:-wЂII80qz{!a\`=^W 0fTk|LhcneT㓻LJDd#t>_
s.jxI}-oq&2ks:@bL24=GfG?ev\fM"{2c7acR[qD`tU&1}RUX*b>͏/5гk|?Q@zx[3wLfBA~qI<PY$S+J630x(Lˬ­
ylȢW2YI|^ א ?O?w̔UE%)n@-
V
y &gjQH(\/891OCI䇬&@qqrqq)63 )'?xX]oF}mUf:MC<pv-UEY`!ZܙM%mjx>9w&эBYȬHDi,
ImY*BV'K'̒#s|āM"o^͎IQ~8nٶR{*e1ztumOiLNA/VV蕐4%ҥl2)$-r..yK(EmsJ?;۲FR2vI&r*]I1$&o	6%>~{}[IyGH%$u	c1XM_#a4fcF~Hh	h~g[`"+,mde.{Ǹݾr	*UjвdJi2eŭBy׶,>i=1ٶF94g022d[%lkN8)<ѳFq:_^uIB\^*cfƅ9s'HU N=&TD3Z;17ֻg]zHZ#2&yY"Tн4xJ0SI2Qhi"Fmr}kvynvYBNڐbrʾogi-ݦL@1+ bdgwO5ytM%;PGjƠ7!}WQtmR%(b~s9<v@}K~G1a/\jb+&d`KeʁE8^/:;w#5˕gr<c`zحb?@bZ
tqni~(j\LŝmH8x4f񰆓l{dx,9DȞBfHbOL63!꫎F̧*dXT/AkչB!90F^j3?r|}}e\|[ml;+_W
t
+s놫|unE`p U*U<΃Fl^mvlJ|PW}Q.$d.JjE zD5oA.P.&_˅|_cQJ.Vն*BTD"։ךּAO_zj.I~4sTj
pZ;2Ahܖ^dm z6\7;AR#Y͜%ZإA·`	\M>+L^zP&:g.4ij_x	'AQ"gJܨ$iFU+n#m3.Kd.u1yMX>얌M ?ue8ؤt:KW
''{)׼:몁لgECSQl	fxkjpUŵ"5yDaiޢԒҢ<Ԣ"Z. 
s*xkQR9e  IvxVMs6=%IKGi4lWJBDY;@rdPx([}k50jQZ@6,T7TsYЋDaW\ݰ);	qeF|ږTgݘ͋^^MϿ=uۻϿ"%K&IXckOl2eBL`4<# #L@֚$apNK'ΓYy-JE1`x6&+vQU d	LGÜ
8Es(^}1mf$*$&T:"BܴgcnxI\d@siʜ=Y[f㾭k#1a0E.4khܑPcK<h1\j60+62)JR矲1BfP6pshWQ4s'Wt%P,b)3zG{GcI262;׃l)=wzvLDeu:ǵT7 ٷexQ.n(FrĻ,fmmAOt,S74
GzRIcThҧr.Z!V-Rj&gc[zǼ}H9_Rvb	v"lT֓N,[%={ws|~2'N$,tuN-ҔY="jpuUhտ(tWT& J*=:?_ќK,e>"4nO@,߮ŌD<>bS@)aƟ&¼ԙ%ݣNsu)A`;I"##zINv}JplqrIȖpO'V¡G̏e0
x340031QHK,L׶}h^ltk֭:1z1ϯ HI1C;=韵KT>71=%nôXzp?I%9@YgIzf-? *H:xhTikT^b?FbW5vqر`]T,XGP];xMcｿOggƲY)jMiY-
Ϭ-,,eEaYzwoxP~c09G|68o<iٲ>gΜYv!K.K~dڵr<x,^Xڵk'{e˗ˤI9O<')_|Q.o޼Pټyܽ{Wnݺ%ʕ'JLdʕra/k֬rm\?^*T >"EHRׯҿzeN:	 חիWKڵFRzu9qℶ=~XVZeȐA6l(/_ƍKʔ)%Yd
Z̙cMV&O,Oׯ<3f8L0!yDL$TؙPֶ3=#ߟ5ډ_oXk袋XR%ٳgo{:ud̙2esǏ/vSѵkWI&ԬYS6m$K>UT;}<yrww=wڌy@tt̚5K^z%Nx,[L,Y"eʔ(}۶m"E
{mׯ_>111̟?_߽{'ݺu>.\P?ڹs|Y:t -ZPwM>k^BBB$K,W۷]tk~p{)ɑ#)?Moj6m|sΝӶf͚ݻVZ/_>SJea >ކӧ֭ζAg6{l}w_ѣ/^\J,~ߩSV?`M>~!'/^vwfܹsɖ-={Vϙصk>22g0>QZ=Wo;;~Q/}g2d%27thԨk֬puӥKAbWj&6_+V`t~1ڜr3lw v_lCćl =WƍU-w֭>f!ੋ.4L_38IYqI,`ם@Kcx,͆Qٜ{Rݹ#3MK|w0).袋	$?ݧOuխ[7θ^bĖ!1cF7$.lӟqyjUj^1{rr
//PgϞ1Z<LM|(y#GԘ:q-[(ӧ#Fhω3f:߉kNFDDh/M
{i_ܹs@ǎk6d>/_Ը3Ju{̙S|y,}s%k9Ey_D	ם;wM3q@j""##0at&MܖX?5ľɃ3s#8K.ZGx4iⵯ'Oz0}=r>ӆN} ^;i"n:{bf}9vAuoc^sA{pG83mt9۴iSyXcxIn"we μFЃ~xRk}d{ȝ w l1C'e>A9|7` qgUVMu@?c)\9uV[ryT2p1{͛9IrFy"tC3r@|釟ӦMS3kz1&`ck2@މ{9]3?^ -ɇbcOuB|gPhQG:a߾}CWi(GŊ5o	p/qO2hhؙ5gϮɽFڰ[Ա<rq;Wa:+@vޑ?4:9/eGa<v	Q9K`?8/dQ9sy}F/cx.RW-yQFi~o!
9_7#C,kȾ7#	d; O20}tb+8WSc_`rGsc;YRsadGbg|9ƍ6~F"z̍=UE]tE]aL9HSOtM-DRHg\p!֦x340031QH,(M+.KgXz{N_Dd(Ό Ѿ2x]Sn@KsIC	lm4;\EHKQ9}\nn]WZ^w;T,i>.ElIr~y8,8^oKz>,_$>FMZ⌨vXHN#ѩS=@D픕Tuiوm<s>a[.Bqn@Cg iLlɅ;+~	PcjÌZ6R`QEJ"3ZQZZGtxyFi}ՆC#8 @m3	Ĭ-Ń?ZU$*zܠh<oBlY;Ӑ.0*:#
oD@O`vӡX⎽x.],i,kxv^v}?{x31 ԢboSu6OyigsNz ٮ	x340031Q010/L+KgHV۽fRM6y%I!pu`%a/r2ŪwǅiRN|Ubj`05pc«,G7:
綼XPVr/xIc/vx4i{tb5 :jx[[_XRiAZ` Tj))Vν{|gΙy睙͆=SS ħ ( X?[oQH-5T o_5 3 M{.uő2WV3c
gH/ DNF{rs+Vqoሕ>c_9 	=}]1
ٰb,qçO\08+\bz9:{q3#6M{O*vĎ%Vmwx&E`1}3>`ΨN͸
u:ы` Yi-lHO98|+D	Gu4)=M=p6+iimR&O5<KL	M=!vc[l6S|mznd₻ ŸVۗ|BXz@1fPnRYqvC̕*ىx'`TJH"ϫ3xv-1łx7L>˺G{S>\`KJXˊFuvVvs6fu1&V1Hߔs3:w,Pf*ĿֆꤜJI?U5ǧtdCr(F%+F8=k#JҰ/!GZ%}[*>S\KmP3T%G\l|T!Pb:xuF2ɽj>&ߊ,uCDn}'rx pZKp ىކ3bst)&LW+@|\:Tz	ޅXZ[zI˥k8(1K+3SurքOے)oX>Eȭk7֑cFdT+'Ӥyoh(3\XFo/(hC׮+:晸=s;llCu^(jWF:QSLO_V#%Wr->$eA^?dEw(֛Vu6]|)ݓ"j~tJPsȾ}MXJЎCE8X5B0 '`Z*e[3zk}\jV4,L;qTk«h-FРCZCH5{7s:';3
+.|uuȏim~5@<`etPT 6a*v~ ^,g_aaDl`t35ԋ46v$ya-;a)YqZ
P/}ӝzxA#.[Nnj7I+@{V3TRrA)³u-63bZ!R8a >^Th/7.m!?_*Tn'GOcp0pKyi\sR=o|{B$NX`wT߳tpD,8?v.MGV	HR@TT,#Gb=͍ E٦ΨW\9M]wC_voo}a9N6IA2yH%XVM&
=䝽*XX99
LZf,U6T<v6R?\/a[Bm~4תy?K}P>Pl!jcO!b5Xfg'pQVIX|0׮F|Y%{!}!B2P:}D`I؀sW!6	踑z%:ŔV!>2hӓ2z6c*r u<(=*=Ҷ|x~aluZ7y͒KxҌ		ݞӠ+Mɤy!BRgAʸuǽ~yN}h vlK=kFk|K2N>ZoiɃ/xG}#T+,Qet<2rb9>QzZV$M`Lي?P?ܢXYHs5#:3|Z$0g䲦>z}9בM)	VpN98>iT.)$G2+-?`<CHMиCۖNcrH_t&B+5vP[HMj:HLys?`Yo	{$ah,_>F-?.6fƤЛ-(gYP:w: N{یc[X7^B';K$ED-OGI{2=cɴ)0_TT5 pl82e<W	䍃Cf?[ SC]Ϛ@N	븎Ʌ[ًKul MuiS.	ShJ|N"yyXI© n"`$HF(,5(?snztO	G܁Z,z%&i&_$JnGF%V.8><ʢ:>Cv{EN"WI0Q~xkPWE7?yY,zs 5M@Lď\ ٪~¢ji !)zeӯ1u @ӹ'#,ro`d_Db]̅sͬR&ă-sO'Qlc{{JK%6FԲh%oqMr TwL7:Cƍ/!3M!=],\S=Y+	rqgY+H%,NVnMs}U{F{Vz'UQ /Y4G/}|yydh~ѿNS?➭ÁT`9~Vv;S\nՖgC@Ets.xbg&|umayKl8Ֆy2ѫcG8T?WF={ƲWb(13/agVȄ?7^/XQ _+J{F1U`B?/GPq߫ęh }x*ǐťEPɕ43
7{:\E};M=Vvb;GWf>gH{(~p)ȋ.q,>DG}5j+u@AZPۇRbl6΂iv""3&F~Զl‣Q矔Kx[uX]_HԞ7~+\V)sNk_ǲJ
K|\UN,]Ly@vΟ̉_>~I(n؎5횗GR."_qs{z/GS$5P Vm(<'(/]P3CInZ9\w%ؿ%&$Zexq:IbwbʦHtbi=V-q7~"Y82f;ը*M;Ɛl6D&Du'U"Rdtb/=ԩr m1f({֏^dǾɃ-EP}Ȅꩬ ]r8zpyo5OEWgJɔc ֛G>X-aJb_сKc"RlSu/k?a\JWhN!/~d͋.k!xg8i쐧+j䦿u"?9xj=w?9ؿ|{\p/QSSz`A$Jzu-cI6K"z)QTcVl Csg͘=0\	Ė~v''sT-`AK-ދ*ה\ߌ^Dj2#C"Jg۷6GkWb˨23>+`Ũ`Zf̓D{܅O]S~r.I ϛ4\5#ʾ_Z<ӦfІ)	SYMzMFL]L뤆>zI7zFdynp̀ʌOԴ]F_"SWǂ'!֣|з]~;q[(B*es*o<1wJdaTAE|f|+Ħ[Ll4E>E:~cA*J僤X`FƿNGnYQG!2[D(ǰ[r D\~mzz$Z>Ai=Wt$ aIBTCKhV#f%{,HJ0>a'c4u:bhEbgxvhXK|g`Zteni~(̨Qv_XPBp0M_vTlzr4|5Ȫ/y]Ys?2*w TMJ&)ńjuĝJgb(4ZF9Q9N?<T[;sc9ǰ;ٌ+A#DGRoPeFn9~Sޱ~|@3QKesZ[(T(ɞ{&Ƅgz`K^+H	mg"'	:=pPo?xv";I\Hemƪ mO@A*)$+XПSS,]W eW
BQUGl_6knҰ5፭@\Y~QJRv)`y_4B4_ҐAx[_&8Erp# oDb>DUE0[~<Xh\p\X2]I2vˏXZenNb
>W!XQ],Gŷ
VP޼!'Mn-A?ǅ&$PwBs>u;:*:=k]X(D:²-@s0Ad|z?'oCr2?כ_2yCg:wobkCY^Ht4KUgcr3l([ڒ 0FYcc72V8<xԸKwQ3Vr	@G@q^ Qd|b#Ñbc\l'	r5mqHU'
=(#]mbCcWxS1HbՈ.")L/GMɾF"A>Ǉ+y,.YCSenM#+qz&@bBEȭhr\ ߂i#{7Jb=9IO4{ךW(K~;U*˥X-Zf%G<nF搒G8h,oI>7	 f1f56V^T\8l|}%A,1ПLV
 ZJκ˖W}k	\ŰzzmPWDeTk0KƋ'AҧtڮE OvF3-e'Ua8GP-1#mvDDFF1+>sXg$yoŔ2%f	ipqkqj[!͜Tak^G+kO	8R~͕55`lSHK.@{MPkPp,qaGsȭx&Pڎ0+7RVp^\^s[	UCu#d@$ZqnǐT&'m(UhAP]-0鲱)S$#gsE7n-DkÌq8,:Ӗ׍T>8[CqugpfbS2=vmoƎ5D&};\IL~IL<(qw-uV|O;]$q6Kh~bX;RԑCϿћRLpޫeхɣ!G,oFja**\P15aޯuzn2`ڛĒriQ.ӽnP~QI<l7Q7c5ƨMM3D-1isFѯ 0_KoA<"u}۵(
S_E([?7hE.w<^kSPЍb/Ҋ"ݏ۶}FtgW Yې9ۨHV	e7NleQ1߾02rͱZCGPlHrNK=vrOA\7.XY	K#U
-LU"u(/﯌n0HC \%<}<-oXLo`X[8"ԺhlzZ#f#PѺ`
𙓏N{:W,6]pbYÉHgz)GO\X^wsH`bg@}ԊI9WI4\γ;w~jCFoZݵaV+4Y5hw0"NdaXQՁw)FT$1}qCV%JSFy4RgNy}<<ZC8B@uf|׈yx@?@[fH_v'oaTwena*'to릋z̰9ѸƲXH9#(e_ƽƈ"+hDSi_ fk4	<^g8&wt":Ⱦy
n	gs!b{ 3Ǯa5`snj ʅ$ręn{F!/٥dZa#D&)oLm[5bv)산,V܊)^K,[Ep}.L[v^°s;ZDgN^wNSqg`L`x8V/WU((7g!gAE1{CX)XA7a6u$iK0oϺJ Amoq bnSy5u">t
CKa(gRPN	QI0]@̤<c$2RYr;(d$}	m#iVw2Kyd0LI|#icyWx?TВY2̓q<Cϥ\E,np۫?Nj4cm%<]ȶ5*PZ ^lz⇣Kol-q_nJCW|hOJL.$nxNo%HoQ3f `R
|a4Yk֚Xا0i1HNN;H=u}{t}U{K)m-7brxGHGkF=]RGiӋ8Ɇ&h*MֶIt->͸G-ۛLĽ&~?2-'aCm$G. xt=R cu\^$\Mg6r:\FcRtk^XF+#o2-#C!1.p%k0´sI> dzϊW/og7#z'R-	̞X'WȮ.'?cg,P:fv#oAOFG#Oe#qH;!˄
68)A1n )*UQ}.'vVh{,ӎ5 H}m%ȼ쥩-oO>T#j?RG[)0:dK#7VYͽ&IwJ Tn/S+&|Dcʕ6K؉R \ai>y]3Vr=D(R:Yrw#+?)3-alEOSL aw3#	,-wX[HVjLgǞ
Fj_[6c}~ Ȣ+EuE8PiKpߎr|(}(]c ?2Grg\gfpxD4b	k ,bG,=!Р$i3~S:8xa@<طC\|~Ai3]$[\6@F˛zћ48p*	,ɨO"UU]YSU!l*{&|40}\Q,`*$b]ja:܅cA#޴I,p>{ha40駾UjOmA]RB|IYw5d
<NU)?y2\m̈́2e,P$[a1|)UDMU l,-Y0on	̀'0n9)x5[g)&/MQFRBO'+2 wrT-<0,+l9چL2Zج:Y`U'e
AP*;>}99əLlSSvN)}x}ϜksfrAF;D"mk辮JQd;no+!4i~!]Yy!M3c>^ogg0Ga<_?L+oQ'%˴	}eTl	3~3&>ڪ+04zr 8*R1"|q}8/CTrIegڰ ?lfV0	aܬKn6mqӋ9ġYG!md@Vn]5Dgbyo{KW](CGXuæ0e*;5[6@&?*\
Eq_Ȳ4*/ǻ(OGJp^\+OvO?3ɦҡ:+N6%3M z!WivsLCo/oQRx?܁2__5C&O	LC7!1cW]?GS-JfnGO7,Jlzv"%ה)=RgH.qb
:)s׳sHMiO-bk3Dޛ8	IVcJj^8V}~$34o˔8(o̱0%@$خd=:uFƁHpW7bS5Qs\&{0_7W_ž6cpzCRMˈ1~(dYƫf^m9|..kG9[0ÑU?$K!n]ifӦ܌7R(h4=P@a87XV<@s_`@阄IT!'|KwaTн,l*Sc'Y'	׻Cԯ} ,yIyjЉx^D{໐Ҋphźv)?L1upvǻ>}2MĜFz4K1TMCבUb	}ji_
 {1KSrO%HYfpN8jR1lMzQs/wMG]čNK*f!cjƍd&fU	w0Gic V;%@=ȫ\yW*Qcj*޷zz;a39o'9J!zt27V?.JϦd}hC:X.ne%;m w1TuY2*]x
w
W./3D!&iț-y%n|XV))))ZVr]ܥ׏@KTĺµoֱȨ:ܠO32e"f=]%=-byaъ0ݤ>ցCmZe03V?Y/[@#PYuc3<	Æ.F2Ba5!+7a[B/Dϰs`>rlV	:"%7<|t_#Yx@3'&?Lΰ{i3B]zN%-7pLj޵n68ej,<Dt>VOvnO 'ӠJk!e`E	~}8:C\BބyGy)d7ڤ8aLX>0!d(RKD	D_vl֫XD8Idzfg[}[8tzs:81qZ'<5	(Y!S#_Xq)p%pIf֘B@`0KngYѡ&AͰwԃ~ג#_EouNɪoTefXq|,CܺגE8?_e7xJ?q.LX [~C%,gF̦yPm(o{jEV7ly5HkBO*#KIRl_wEcR70ѷ7B{<-7
5x&,"_\*91^N441|K e@>u_bQ|yR3=O#ݢWx <SKPg`6Efx7MЇ>#L0$BtiВN=Dݘf!qMMfn#㊗yH}vm'9Cgq3_fzڌMXc<?&eqtZtk< %g'q+BAɆ8P]dd˚=~b^рŧO`֝^N{_t
JThqA1J#I,);ܶzU|co "Y 1ڲA:dJJA,^8T!t4
b9ǹZ"K>x=+.M%u%{Gdψ*I1I $U.!KK!D}:P7*ۜ>2ᰋ]$s)4<S'lf9w}_bo_!~ᔦ+}-׬S1X3X=p]ә&lzW!8;FVt=F߇2SQn >2Q זi_zaN6;uP
MkWе<_N#?[Uɱ隴Rx<U97$t*KOX@Hgvs#ii!H5qr כ #$$~w{}
~w{Kϛ9ECz83M//_OK}C`r Gv2$$eY9o4Ǯggw<J|{b)7RAdԫCJXy>_gsʧ?)#AKߎ*yXF5}ׁz>X	D=YHY*قoYJ挍 2 g0ɬ+F銷%y^LWxafF~:bzaU}yT'SFAaiTblWYM_	HDW0YiJVp80I!YA)"lݻ~</ 4X3[adk8'e]XJ$T Uq3}?Pao
BhPoԞJS,Oήòa@Oqh{驒NL%˰ܲ/C"k?.n4YZv
lHsxo}Iy6ᗍ4r/M w筽lhqGs]KG#:a	1'ÁMARL	!ٓ<t7SX}aVVFj;$Xj*fڜsc5pv+=.ϯi!m/'< Al`,zRM'1S-֖5c,B;'6Z6 9po/{R&#u*N2S}VwcӗV"Q]B)Q[rAX0Ui4Mom җ @r~*J
r~%VL(rvŻy&D'ɾ%)V\Ʌ+q٦(A/a[g/~Mہ4nptFԁI弅Ư0ez*P:juj)FfVl`lYslUOǣmX|ɛc9ŧG2\0`.v}qo+9$Mcy{M,Lfǈ)U+=Lrcf-o> OIBqNԧ$=cBkt|t2:(ىY[w 뢄89IB_Ip:Y4=wih4z5Htݨ~IAD2C\CIPgP)Cj`PIә,z{ĥ?栨H'$2\!E%V>^Ld(C( Kb-q$Z*=	xf:[lt(HQ
kpFL^/^0DꐛjQ@<=G{cCoo#r =7e_^?W5
80Kpz؍N2@kV~DYȰ<DͿ7&خ~rߤ吞Drp¤gKj㨖Q3kYW>G ̤*(uom 8%WItYd z[,q/>>M>*Hs\oLxr>gulx'1G&r'Dk
|S(vvԻ{ze_kBZ8ZUA5LOE} !"V@NL-.dArxv	a#!7tg=NDP15U=-āzd,Џ$qMxZ6,6)h?4}]Gmb#oUtuP{	'dHr?HCI^yHdI[\J*أ9ųnŧ\!N1Xk0'ݢυ,~	#Z*G:f(?/j)u?nbg-'%܌	CT }+^{{N,?d) pTWc%{ K/ʿ? []?>N !>k*֖;sb|g9L0ؐS9NO5]_kcLO'1D$m(v0p>;WR$ʮAVxqmG("3@7[kMCZ.̧W\s,H.bh6kvjϯQ
%{=h#Q|s?cH:&Mk.'K$wgb3Oc
ťX->CX׏]LͺPitn8[JwRo,-M1u
*v5dWb.}CG)Yl,G`{=w5,m\ ~73rW
4'Y1a'M?? 79&R@yN^2"E<4: =;~|jW{tġS!'6unÙσ0S(	w/Sչ}Ȗ=lF~?PDDsH͌x-vM&\G0vvK?,HxrIWpzxR_8,n?`vUiNzd1ȦճDޤOZ]NquKj25MHpnc\[Fbg|zD/«:El/9ǅ+字t߲uS7甒o<=SCv$7c6=aPyEϛ?-wnD5~E[ƁrS$Rrsg}bS@S̫a`fFw0p`i3*Q1ݍ[b|oT4ޅN/~2JT5zme{tVӯ2bCm2T^:z %aX}kE("WF.#i
H`a8P|ފY5;#18|֮zQI.hX|vwH@VBQfk`9U(G;3vdqtg<(\5V8kvIt<o1-'&:![mTRIC76x/&-L#^ȨWaXP[nj4նimQmq	bRwn0@g؀ys0lfIh
N}@?{7whM~*jdWg!>iVdUru32 W08@7VX$H1M\x}Qo_O??1Y8%cu/&O[Ȑ,g:p$,dac%aJ|9
rжpPnZZ':ew_\xX/\=ߕ:n7>(qg,>\miWL,#)8#Y6]+D+_i!iX04T||~+W(	cna3PKW=+U܆/}WVܺb<{(oV[ #G|?Mpg~mL""IYr':P+_RQuoꉩ{sO}!hPiә1_#`JbJy0M
e$6nM78P?4ԉ|FSLג]/¢YgzƇeu
I.[ JS2CP8]CQo6ɻBZ^<fIӱSIXKiY9?kѝ`ҷ^kk~8R`P
b|5"OJag.@rzړ&ZVˤ-b7T8ʅ{?|Wut\].%(%b 7w;[dxif(j_؝8=kD=$	J^~-yn3_;vYdP5c7&CY1B0е(]\1Hu]w=I'ipn4dG>2c]cE[r)!RߏI2_fblPSZ8}=ELOƆ,J6
>F~:Y=Bda\G/iڂ lpK?ꌲLo Hk}&+*(g/WdiJk`jP*$=-
&xiEY%D݃H})QpO?ЁTIW.dD]w=0F S}eIwo,Ց H|ƈf8fb_2(eO_թ"{\j5_<S芊$u=Sak0/M\Ҭe
IJ_tq9;e"6kALU͹BxөEb>eګ[ys<1#Y⛲aexOdU=袒G.#k<IyȈ<s5|sg2VR~bұLCQi{KvY>v0		M_+MLy |t/p֞߷eR1f+kXPTj'8mʷ!Nךtrzx3м/.)n=N܅u|%Feguٛ>}NaCMaw)`bHԂ&aQloޒQI_'?&
GulJVqj]KcޅBf[Wܶanyծ,d40.+#(kM	Oߍn?LQ?WgHOӷ 2}\L~`>gx">)ykOh@'t_pj!tZdVt30D2/x$A%Ѐ͛=& %ZZYOv:8^
3)TXwhB~~n{V7D1{ z4uECo/$J5{EydF{O]z^YZcV]Ah5ש4k+>'<]M%!-˂	Kt&z5F
{pήyz	G$ZA:1"3n>+>N![YBK,oeK\cŃI@WF>7{$cRh2+eK<}ݑ"yR+pO7e/Dt'I;as.Pv/BEH`RK\/Wϐad
kex<37gzUhn7Nbzڮ{_>ϥeny !L' ,9BFY
~1l5|}i+˷դO=Ikꋑ0HCmp=F-fZ7nۭLB3x5׾7\]
[2b_2,k!AF))nB`HTDTDCTFC=]3^@9TJ6)bm%~;'dx
>Ynaޏޱ?<4WHh/xxh y7GrgTuImF3
,n^EFy#[Ls/7ÑBsnAUȘ%(Ľwj,I=yF'1(oR)Wqؒ]L3AOGҊsܲȹtˢ<Y'qJv(OrM0l~vN_'Yu n0t-+?՘7}r1ϷFWV?NG<[hwe*e\Jܗ	'/po[kvj|r|u@*5Z>oXsǺfQ9ǥ
Uf< \YO::86_5I=!0ܧ'@^~҉5}4Ձ`c/YIaz4vx}2Tw"vCO\5eXiV C\t6̦GE)US=Qʉ2+X2rdJysDd~-%lyGtΆ_znQ9Tz@YN}pn21Pb^ϛT!աMַoX.50~l A?aI =`/]O!;*pq\oVq{`ii0y^9`oԄ\~&+ ;~qY"9-]*f0C~TꍫaѻV{TW± w# +z8kk g-Pxw<]h`!TvJhl~#V4dgdf<j*MPbjiUM1G|w x0!*N=Dwȹ0W2F91anOqdt_b1Ig6+DZ\h5U#8IRUyL4¿^^):b]U9EBuRg8fMd!<6;Κ5b~Sʢ.H%Na4eo9:q̦^*_s&>@i.m~&DI`X=)căqG2Ň҄^-6w(WB삣qƨi%O^̱_{k [X16F1wސt5[Uޘģe[a>V[rc@(W=ȧL}9-0"o9DDC
|'ĳ~H"%y_P0R<*Z )̳&j4x@5LvN!584l9bE:ǰ^7sbpGi,{,w85ӃP?vVY)COsln{;GDuB*iaCmKIZ]R鑉(Us&߇뵐q-b?%j&|=QGEQi|uFerg0#3q#(5TC5B%Kv[|ɶ$6xOl_&LDˇNCb!7xS6u@0w^ő( )yT~VSb$3sdg݇P}].e骏ǣO4@&3@>*ӜSr5M+^eXbN	ھ$\T\Tҡ)=xXqKsyΔ]p#<p*S9%3v|Ewx^lV
`GZG'O䮖5M}BS/):YeR`xBh%+J/nItJX}n93G$O1G&$i#}nK}.6D>
,K'q1Y/=I0ӷ:sdŃyAshClr3#%%-փpiHa~```RGuH%urxHnt	@4dmf~7jMyru`,1x
:k%[Ϛ.nJ:cĵ@575\4*#=o7\k|X׺{?o<t	'`eWX}Sx^jY΢>P8xK/ C^M e=I٧7 e%ya%mAš/|O<w`9d>QlFF?Lj \p BAW](vS#,BR
x!?Ї)UKt9'T@""^IZl
YBR?7T#@@œǾ~q=hN"1.vZ~v>.7S';5/,
6{Y衔q-~?`lm*(ҽ-vcaWX	5]4tҠ͐e(	[ۮwV@@BM|qS}{<qA[B8@B5W;TvUcȏGμtf߬YsM's[L
0"uJ&ď}eOGY26<Cڍp^&lD90ͨAxXқZunw*9Uف<lFHNZ,3MGq%`:aIȣ~c2)s˯Z_1T*ĸWH3m'ueFcR(+.+ZK|oALn򢬅`0ҋ좓8U߹}'+4sH8km;0}jݦ9M7y֬PZtU}vB;j#2sV>AeaCaK`{=|@b!OCZ>Z9w/TxT>K՜+mv9rxPTӲ4.V DYxǃXJJHj95M^7,5ɟZ:F[RL4\[|m4N86VX|5]p)ݙargsyvFom`1&c<(ڷ>+'vPqC=uzfNɂ6:% (0WN'/M=4[3lyLX"l\o*S}I뫶m{^OU$>_wгݕ9 +*Kk[(
o~?2٫irGX܌1>/${W"@7o__~ڛ<RRQOq%B ͈چ'ǵ|녖'LwN5n7	.-rTBD%(j ";?l`#5G4;e*4EQY!`ȉk% d\NN&?
9gx_CqKI沶ʯ'-JWXN]4ΠbCj-5g5{z&3+izz{_O~ 2+fc+*Уm͢X#b?eseHi+#lk2_4/'wzpni,'*oJyz4Hq>)woʬ'8EMwzA5K7r/S[yGf2v
}7s^z/6s^:̦MEO״ayPS? I_F/ܾ^39d'O㐑25R6ҿM=n2D/K)ȨvBCSByC&TSWѡ8`CM4͵? bbsbx{|,_^8o Vq(cה;EqШn^:YžSl?pX!ИMȨ'`CKRqI/ B|ʓ4]rS5{\'<
9,agW^Oدeci<Xf,2Y_ci5Gϋ7λgطEDrL \UjGX-]Ff׾6yӱ%ŏk1w[x4kE<8k0l<hb[A9-٠)}{mEn*3=v6v9a#!j8;P-Lѹ:GMn3]=Al~hTc|rm8>;)^/~~pilS	T!|W?C{]J[7߭Q8smލ/MxcLt J(%'"+5)=>>8Yms\˿4psqub!S3N'aGq3,>EK$#F}3{A{_FijDb\\Wj7:4k?jI'&VH>:]lMZ0"<cBMj+xmlN_)\w+2=4 nb2u
qDrGGڑ?Y!kGoZUQ^_rC;%Dt6+MG,o?Q6v~7P3"^c5#6&.1*QI=r62Fe$<?Vew$vf/|_`BaBLA2p_k\w?LwCH1%*L.1α66S%}&[5SQ6jݟKawLS`Rw*3~aJkݣ{倾/q^FBR7d2X?~<_^5Ŕ/X"OO[wV^M{EgO]gRT/Ƹʲ-oxOG~m}X#F{?B4kn QZ*_:1h(YPzǇXp6/iOuQ.]"q,b0>6o;k{4JBaAiXlR$>M}6n14Sҩ/yF2mz;=QF 0eSzuulU#fr	M[srR\NdkǓ˫lNBBګB*[cAkrՀ@Mح*8.@΋)ws,B#_XS9exnyjumfK~j4M?Ae
l,.0 0'ʔ*ZFE}jem\4WP5#Y+	Gv?z6z1\ҢcܧB±8՚K95/T~;4
z/49HkoBWd-lڳ&"s36~[d+Jĸ]?b"CzY==S?Mv5Mnׅ3H,#g˪/.4uee87@ݩ/$hwfH[Q4RR4V#EB.?xۇ13<ҏ^,t}k2iB旣/|1SpRG2woxݴ$w	cycj=iM-&OYgr'MxU ]r9 U.\7u'uFI-){9Z*s0/*1{8߸úKqyŘWZ5'GW?uu3<=o5纄t=Mٻe/^＠YQy3)v,|-Pj6!ƞ(QVqLV*]k⭚%n)ʼ9,^yuā/i	<{BܼS2_Do5aD<Ӎ$iE-_}>K
=ljabQaưbE.iin/yS❞ҙ縵<SagL뷗/׿98hnfY:w>.z`DGgt0졮pb5S*aV~t% dߏO	xta\2h$23Yῃ/F?/h,ۺS^)pei"OLY[]j?fnzry緁*jĬn1+qpK	VA]y\]lu#i8c}¹[~3?'w6-	U%H9Asi@w-=X11a*]hU4-J<?S? 2i͐k$젗{)8!pըչi}מlI͗ѡnp`W+y˸.X^Bo|($**9{)v":'_;K5tpu}`e&2w\.<0G7qGk;ӈ٫U&|i ;˱ i]2|W-!*r*exrfQ7ʿk@mLkSr4J?έǇqkd::ڒ:]Ǥ"fʧVxm^΅z%=*N/3@^=m3R#7ɢ&1Nav@fAflX<bhۣ (ow\{#sQ
vFZCʌ:g|ԫ	zѵsıPEr)'jT%i~|/')K
+}s'xRԮzʤ2bIaix[#岞J_'c>hI84xx4-?x?k1Ciq0{1J
8[De71g5|5:!؛-,[,D۽4;S/T,m:bLZ15i'̌%hViQ4(>ZFgpS7 `o)8^ulL4)k{QW+[wΡ̑8#YLRQ<N}}MI}TEеJ#̃G!D)^my)&vבaP<C(1!LT3CScq8dJSt@@ۼض'@[LM^q$fDj.m;3$# ݐe4\ϥQkJ4^tl&}rOܜĵ2h5]5J62%=K%hvIuR'村I!@`q6퍦tpt9h6ɞ .l׳ɺõ@eCYerMQ.ݧʳ53	j|h;XvH1TA0dZ#6?rO:<VyB*ǙƲN#H+?\%5˕M[r@CaJ}غM=˰_Z631L
F[d(RP(Z|p&eOirGm2dtl=2;=T?93*|G]	\ώ/=S)
=9ou<?zQ#Y^DE+d7ʤhp8|Ũ?2ZL]& LgF]X5ֲC3X?=ց*|u\9?S?߆3`	إ^,}1J`$eld焥'v
v`'	Yo7uwI~O-st_h	$+W\Du#Hd}ԡ%.!It9t?ڲi*wro2eJo إ:G{\)}ێ.ʷ't}ßN3T{n_)RդEҴ/Ex!	_b(ߐwm;7ΟD'~!S]u4洏{]7oqZS/ެvѿAZ)vQ.Gdc~+,`ۣ-zpFTϡaIc%k VƔ/Uv6}c\<&)QV 7\雹<#_#ԉ-& ILV`Ka|l7mϟ'_5JX^ZĒiZks`{jj1䝤|zf8)l*͠:kb OSA0f?SyEmtV/Ҙ aʯ%P!y>~jΌXp6*A2WV|2qPooڥf雐&㸺p<oB1on[I֯=ԁ/uBdg<>ڠTf`"{UFvRUX̟_ ,^kuEC결JM1wUҫ.Ɣ4KWnr*+B{K),ՉA@nEah]ƈs͛>	S
xO#H*~KMtc2U39{bM;xAb1r秉PXi JI?M64taqPV{h.,npR4-v[%2Sǣe|vI6eVܖ] &8(ܗ&ت1,H'qTh
{&;YVƋm@eѴzʚ6[<6(00>UߏɰbaL]jS/bgJw5O	Sч.yx?>KHW@TOib*|(+e%viJ Y8V̕Q
a2v-m&ȇ$gz%hd(`>0<*mqZlNqP1S/I57b88VX]~Pjb}(<=brM*$<GJ h_އK̅A1ʋi:)?Y}nc@'!6.V
jqPNLytEgmN-pށר^3q^qcz{gzaHK$+>U^zq|mKtl==Z<Pe}>qe0azlN͢(- }9$3I`.ʖ􇖏̼VUkNУity2|oZbue(ix6rjp 6Z8/N/R!R}dҏJm>Uݕ`\/u[+i$_M~z*$~P^=H	ĆeI_H}]DCHS3-gG-B5va\@cn_> Ukq:j6s0)3BenK#)m)Ud<iA1_Z^arj->ՅHz)n$!YanҲyՀOw?*Vd߅1e2Nx7hH7ZP:b&%Ᵹ>_{aLҍΌUuXXUUgL px1?ݚVl->GuH^dBWSJ^'n.^U/?	:m% 2̿2@b)magtߙ>n*	q
`aXWLTƼ:0Ĺc*Wk@/nmcIMBXk,h{>sۄei:ˍ(D_F=>b.c|)Ucr("~HCqïo<EtE8Դ*UTVFgR}b֥F֐Dx_{j)b{e31Xvi0L/^༳&KDcSI1{z1r׾[@i`"l+~RD0Ϸ5?4ˊ2i6Ie#S욹a>BM30䰹;_OSS' j$vy=0Тobʴ_fM|[K>>	66`択#JCq.ҧoS2*͵7g|/]l|8L|,Z`xW3bhx3OzM~u>c?\vJ-4i׷MG\ "r7L`3Wd'Olʙ}MvWM23@qI$h^XQPx=NgUOn,WUi-R;7F7O|SY0 \ť|'oUD`3hw}EJ<=4gD|^e՟/Dp=iU>]',&=oX\)*fRc[x"!1霕H9Bɑ,!Ԣ.6E|x+W>Yw96Z@4T,ݻ4]8Qم>jܹ'}N"YsS@7'tʛۿ\OKZy\^z=ea|S0=؝D@c1`aZK\|By=^\׼Qo%3	?(ILϋMuһ#f0gmEk;<TxM8/<jK'BTׇ\?hXX){=W#bw~mrb kb`$Ӿ~wlup~eX;YON6?Urhfd"_y·!lCgk8W#X>[;a]Issd8$f*>XmЃݖZ4W;a:Gpt>vb@-\\|\GzG#J&4pYe>0PZY?>7,2p)cԟBؖWL,LI֗S^4TlN}JKhi鸤$+lj퉾*mogDW?=y^ýԎ	MU=}~܇P`)$p0בO[0gVg7%r|ջBv;-8c?|Vo0"_\'Z2__TBzCe^ ec T;L`\OiKwCӶ0FQ7OrnaEp<6~p&Y9Yχ\RJneBc3n} 9ݟ]z`0AQLRaPkt7jTBC-gQn`XYTx+}l4Bl[-cB].,x0u"5co]O1@+~lHǓn̸j *HV#+'z/l5Nب'XPv4TR4y3C)n"3^jF7?-_|au
yax;ԚNځ:bz_
)3 e37>6v)E	>T?Ơx5iKKt)%{`p`jwc
f</h'[ !+8!mSaE`5'aw0n!Sc1BdM5oI]!ڠwI>\y$}@ӕ̝W]2{qřI,upd]f6.TC5} >=<&|{2Ksoh(v"1z,MzL`1L}6JM;	>VBJR|OVjmf#Ѽ<{oPեPOii/v]{a.2,fA̿l>HϦy9qf0`? mX>,tc]ŲRV5!,.5>d7Ie4jq8׍)cC3$]y~	H +@Z,U@i7(3	NV6h4h sYK2w_v>꼋7V@iI俴RÉxfk>iZ}o6bVFbjK=U5MIHm6zfQk*"ɴDs\}9D}w(%cOCIsȅJ,B"AۻY̛ E
\X݇D/i?"+TUŘvخ
k "\:)iU&cENeuc76h!4q_P8\'52+=s:(	ň0ëp)[*%&7ml9 o譌OeH+;W>B!dD~Ư#SVC"{JԹUSF&
Dʚ ҬuzյY[t>&872ya	h$&Ì*fL\ekZ҄H!k(9d#K'+|uJ%8w'A}6th́cu7̘c2Eyڃ SG?FmY Dh'Fqa2>m+}MqRT{nP	 Z*(@46,sh=fEb-ȭM`5ZKvVH[(%CNEL~YNr72@9)'xj	<♼v@;
viV58cr!8氇Jxp@vf`PzlaeB'67 CN%.r"ԞEvoFeΔ~bN/d<t@U?$
_-`ι}oRT :%e$j>%WX_CZiU|^]sxMR`F-H<`1zW	ۡ{QJ1HmA"ZJY	]k^퇋+]BPZ緓eW`dz K#Q<U_/?ACԓnv]Heɂg@Zѽylx~ ZJwr)$;fR"q`@8	PU	E ?bId܈E/HL:5@7ƷQ.`?ȰN?!7Ov>xS/ƚ{࿂ZC颼`>ò;Dd /'P.4DRU! ~*"k`_isvh%V!$W@B~vE3soNO%$TgƇ]`M|*_no)՟obv	%ED.oPڣm0ͫ	ro\[ iV`r稜 4>ހ![K,T+_gs&~<aM
tW-),s	M'S+ms#RC	ȡCB；4~n^92	/~-fa4=Ll[zi峞M
6Lh,>:ZFbX*>nO?`:<0;%nWCPTWn@	үe'8H RH3;B$sq
i7H l蠔pQu
k#2z}`)#XWQur$\CF_}<z|ۍ£+i+Np{~W9A*|T7^@e̻3ՀZx&ф_*j毌tj<^,Ev7k/1پs QJP~X0~S:|q8ԯ[pBt&_FǨ,`*g<:F3o׊۳8+h3uĭ iRa6IlB7Ms\:V{3OYW>@Gfc";Na3hyMQhŌ'
K(qr7gI:*å,D参m_mԖafIq-OW'IA/e
J\ۈ;E]& 1iy/eDY3F3D3m:l#$Wߔp{.fӬ7])x%Mj8m?iu~Z!Rw#=# .ބH(rD
+G1c|#kx}e-J]p|RDC}D$L)aGeh4fZ|>yx<=!RxxG`&rwwi!ݾ:GA{#H! eq@_0sifOQ{uhQ隈dFj5@|;KSZ?y:q%gG<haMC<%2DH"WAtr<1,!"5'T|ota.͂_u;=;.,S-Sbi8m.υB&#'K^,#!Z!'ъ3z^mesSrɶ
 C4aM.˪p"HɇɅQiC}h\/^	`^G)xTq5&=4EVōPli﬋ߋ.s]LMF7
}/sqWm,eXN9ʏF=:4UXQ3+#=̑bl2@᪗Bfnɜ*YBm:xB{~?p2{7Z4FІs.^J<LЗgàv%^KJr׸2&!,8Mc'-p[{iY,L(ZB>ɂenf6(M='0'm{ AM/#L_rSS	9{ڸ픋Eى,2xym!mo	կ>D6HG-?g3-݂}7j" UDȿ>D)'9|, vL_=m+WF0Kb5Zb4}ֳmI35󻬗h<e{(BphpTŨ X܍㋂Dv6;>?˺6?lRUi0RUQUΠAC6ղzv 5KdqKuD$4_Tm`;:E pL򿕄zk~6
 Kˉr]Flq{i=:^Ryu[dۢ`MbwW-_[qA
S~\q
O 3^~iMF$}ofJd#R-ҦayCrY
#j}Ăţiz/~X:]E~j^'>}VkRXh1	~
̪E,hqJ6QyLd4X~~3ҷZnb\9aD/ Zf+*?F9@Us׮Z]ҰB^XvԛACφF&"ΚT/t;iRD.ɛּЁ%߄|(C13+- k'6$A6}Q{ap1킓¨!ߒ-)$q 0"jZ*QK7
4;H0UJC
_žc}C
~LP1_CO.7,ɶu!|ZI k;82./K'D2c i͝mK}Akf"<EB/FZX+6Q=[Eq*L/e(9uF+yow&*a"*re?< &n'wpzXGWZ2~ӨC `Tip6} 뺈AE[5R6f''h+Wy~H1FTA_N4KHZ_s`+:w)6vp3ɞ$G/xt3ۇyw
	:FJfloT!1A^q] {cMƫ;^Rr0j+LخOF:&xH]EtcA&.c{WWE~@BTDDJAN i{fbpr-e7gΰ%%E_$ F Ej:h_wRpl6,>,Z<yxPVl7oV@+@usXjDό}(d񨒭,?{aHg&j	Xf+Y`&)Pż.ayRt;;R1=ZRHNǪOɼP-'Tfb20D8𐮷oM@NogwTʎ}?Ry4ʖ<JATEѾNTʇr{LDډLO{}2{ƚ~J(߫soOnȿF2yB6?~s/!9z8UVU}+B,C"9@hp;Hs&/זuNz0b'@	voZcB͸hl&4QX|0 ^],[bE4ɖSeԵwKk\kk4Vm91Qg`V5Vф̏y[vQ Dw%ҮWd%Kffz>p4.<Q@˺wG4+Г' 9vX;K|o2ώ2-A.:XWQ|D32s:uH`:i7$~hg%7l]
+Ct	{C8]1*[ª{PYn2'}YobK:32|9a̦.!d*sojѴܝhmIux)V>hijeR\af!,a0an"{k*FQ~HJ~qe]􁧡οT.BeE+3ގ!j]Xl2&Ћ}?3k'XD0H&-/_K"!J4v{͎@2nE>k>=|m\kvċ4qORDO(O2WP}x5n3t3h:3eӷU+.0?K%zON8dAmI̽%[Nl/i^n@gO
e/Ó1)9Knx9BƋ;G߹@g8ݽNK_mRNQwqwjr+ hGG(*	%ztDLxȒS	NbޒqS|cW8ۓm˺6-j.
gSk7*+PRzrpjI%j̻״?o^;=e*e:.8st]w)&)2.j*+ 
='eM/c|mnB
lJ&,#r`	Uwϥ+O
܋S;%K`%R#	ڃ.́Z{}ȳc}>SwZ.{./L_d|M	"`GEü>9tSbWBkz3(A2U#o2Ǥri~TesvGq4je$ơ8gqW`7 s~:r֦iK,]|<W~mg*?$KD,8\BPhluC(D<ʀʭpd+@h)A5N<[kyrĞց){}s hTe{@7X?'(>'̭i quj^'- [nO[er[l͙[iy8A=>L&)`^+S )^,Kf0$5w~4M1p@&˄ S%g8s	$"rY@/'IGCHFJ>~RmOl<߅ɯMh{E<^q7tW4ЋvѪHh	.> :;2?Q 0PH0MTy=JY=7F;XYn̓oHm3ܱ{XSltLh  Q,KClL.~`?Aɠd}+C18H
]Vk6IkY}k8hnX )):_(ZFNkhMkV1ǽ^!HѳkWA~tJ2~[#o4R*s)ȔQ#˞	 +s`B*A
i#kė(6!6n\}c\f/F˰!;tI[X&ɥ`Owjo;%gvC:G 	,7tB^^m-B,=+0gI$4lSih#]uReOQw ɫ,g0{}	Exbcj`D5{>lMqwY	yHWB\1"rhCLԝN.x=CHINRQ^"j]4=<L6eN[|Amˌ$xN\q10DZ3|ZY:\\4cSxL}Ufc(no9s*!ewMڰPo=HCXG~Y~gT' A~PxeJtOs'è!OAٴ)ʶDP8xvNԺˤ?C?D^ =/iQJ2\/.\'c:9qZ[ %tajp(4{ ]ˢֹwJۮ-UzPtƙ5GgJ1ӯS\@a׉S)m|kʷgs2R*<&t4}PHS>adYe!&2(9O{D7\YIWMs"}o8]+Gv[hq1m6W-WT]\t~S/\|Y@VammI}ZW=ÏrXށl^!XggS/pX5dX}/(I8tU$: .s
fjOc1_vv2L;!|?muǦ<5Ӛ7ܙ	i-|!;wMH&]x0 eEg͛?#LnQ׮KdƜBy0}Z,?sk=bo'6Gjr{0:VcSgbS:#q|'+HSyɓGBxU5ubh{*۷̆ƱXچD>3^2hT\0hY]az$`I;08&+4CbR~$aUS$)ĉVGѰ u"9(S*нrق-QC^sep䩖{j
l;r(yۚ+Ã\Dh@ś),yV]K*S磾zOqL#/U`8{-*eIMOwPr$yGG'woX4JqvS0\qӪ75gDYMG܌>Wcff4Kf+x֍;̚ƜwY_tx{uAaF	m>Ӛ(:FpYY[ v0;ʒG^ȯ*x=g-q;b~vp,{u:63c0~6wq~$ypDd~xx{&y]c8^ aBHB|X5XNgjȍ}P.x&O%8C";SSEy
'8CszQ$"7Ѯ~7@m_<|84-0*IJuh]	';$sri=2/$Qk4?Z2jy18	;i=Px+fRreVlJs*}/bb>n:Tؚ"OmDjߚ2QQ{_n'|&i({#_u\˫=
fQ=	GZO~ rc1{|N7n;`&ŪӬZ1ڸҫww+Jֺ(;I6K

/3=Z2ޣ>wjKZ}5u \|jKIR&KgNxȂ\XkY M"?ʖ1Dܞ9=WW8'9(9
Wf\^=90P9D_'0xo&Qpn dEfQ*'oi"j}^,?Pz~|/O_C)JPʿ"3;6ʹ2c'8^+UZ5?\_tEA;|4+ߵށdxzTp7hfd'hiK)riO5K!&8 XL!y͏?0[_VJo}`]U҂bĠ	·[g\_5Ҙe`+Կul;zEkO٥htonRpSSoQw7^A7f];&c`U@(;֟]R$> @4~9Y{Ss O!rĻ#ϡwWe|3aǿ7 i& J߰ =`zN
M[mZ+guJٚ;B!ح>DDDעDFeI` NcQs<;s+	ʞrs%a}	\Ҧꑉ+}3װ첬cjfd)!*oUOCNO3?*#c)DV"nt4t"@neKj+/E)B_plGhFgLm?!r5 X#1QW3&i{x}q+`R$>m8̈́n5?DiMhļfJlяOG]~qQ0?6mY2+-_!sug0$/g]}.W,HvUNҹUpOX64p"ͼ{ש续-\>`vzy:3TFtX7	M>0..khl't:Sf}/cisZIĉ4\sو+ދjqD%Tj~f~Mf=֙3ڳhPܾۡc隄?#fco:ʾvPVYaddXHCW0̒cD1}la(moCu˨L"pbfsZlQ'u\fhZwzqU>3k[F(MG{Om `QG C؊gM!!c:Wb6VTP$@m6`)1(y0-8Oaszo~#kfDҥAt P`9yٚ)C[Hvz̩GJ
'O9` \Q]{_)%Jk1M?6{7z^۔g焖#2^䈨ov(!:X72K bBz5E0Ei8~2'{ӡX
k>Y/5{WzbY>|T`GDle8V`時olгE
{gǱEVau ArJmW_g?D{90bMx%M3&vQ,r	rYb=%W+hK$7hSކ=P|2o/yx-~<}PwHP!@fvC(-Zi(]:o7=+UUdH/ȷJ'I*M	ķuo)~HL B؉q$!sI^rzl- w /lR:	6*GyCvGЅZӚL/9-*?t}-f;M,Gwi VmO	oN7fvc.ndM:kAS'ݚ%VoTCŃ{'`]cp:z}Js|	tǛVq피-q8K
9>^*^_!X775yWQczdˈ8G:I]ɤ}15@g%0r/2'#Oq1-ξ-Jꏩ`  ֽ=a27A$Z7mEIh_ E |ݎS$=?4`ޓpVlKkB;9%1	 wf6Kja\A̹637bL	75簾o39ak{w4aySNQ&"<Psxޭܱq>wE,vejv}.JIsƏ-j%Z,w͙x*]-/XwD4m;IcIuu~C.GⱝUIXi`Likj[-CTߝ]|Vx.u ϸ{}/8T%ՔF:S*Z-.i]
3ǞINxJW'ڜ*&j:'|-Ϳ@8l<|OsrxtO*.YZOQ
3{Hf\'oxӆ$O;M) swMУp4c C(`{6~V)'L#ү~v8<>+O	6kZ qOjD"MW˄T0	)A"%]tc	$t4,e'9y,jr7*N9\{r2(^{ZZZ.xw@XS.ϗze?ef-0<w˕;B~ ewۚ̆	Qq%ysE0B1dA?erʚB"?9	^>h"ɣfyw]+Nx,:A/:ƌE]%,4\=iyE-N%/F fҊ/!}T4(NY@ʖװ9ٻ)L ۿKhZvdx$QTw]c7/s4`IO#	U]":]4âZ?$LybP-M{mp11h+#P//2啕ɟHo=}	l4l}د55
ѷN"
nQ660,͡_s#8	&}&ebF$%fy>U
)Fk|GI@kى< GMlG?W?Mop'8_3$*Q$nJ9OoPΰ3$}*xK:SV2:򄇑s[n+mxDҼ+8x~Nf~jo;?6ᣴ~n#N'Ľ5K)*.wA7}Ly "Yvmp-h
T"MW*) 6\n]Gۨ&hA(̔ZP	*>އOzu91g|l[Y/ov :K2\/^Y$S
LH)~$Sg:;vG_oT}=i
;v?
=cل	Y..c}i{멈>qdsĖ&xO-Ϗ,vnҊB	7etΕ[țdSQ&TރIrUd: ˚ֶ`z3BB͚tNAM"4EHCЉk@/ڒ7I3NF6&,dS	h}y=(Gx5K"}3P&Q]C HWlACGOW?Wۼ }+?̬OZWG:P|A_!'K9O68 +U~ÌܽR@^yoWWVfmq3'.|9@	xh[]tTqKW iMs\Xbt[0OO+D	_@但rY|dS؅*kƌۄ=?يUȪ;2|!K/Љ.{ky*-ոL[>DNC1X˄_V.Qڍ&t Tx[VfC4|q6Fp::Jfx<<sxw/vd忊/eE=@?poMc!^?CĀ|lZoU	)0s9տN&3_V>|P%,_X/,Su{OgwFڱ7_R)s!6ɚ񹴧fo5].cI^]CsQ6:wZǅ:Gns7/7p'6nbzQYL=9:RE<1qv8ww D@\~>/&&8`PcSyLTQ-wނx~B!OThYar8DI8wEs9I	AŁߧ=_SG:,g1fqofE~H'!WMƟՏM;НWeQ*H2j~ɧ_ci Xb^'Y*.X֐35e7[J#V^m>YqO`	Z/L{F{0C}S*\F"6pn {Tk@e/a#w]1k@Vt>IMOF0$) #-~N6V]5~nm]uf7-S~0to'^ALSKB'Ըtf4zޏ7+ݷmL~xD>ݨLa궺ٶINBߍ{ʈuU@_{4d{сy6x]^eu>WSv8ŏ'-d~d1PZ²e`	ɺÉ61N_ϕ.w:J| &`);4s/j?X*JL}6u rO ovgxkgVr].Qq	!GcNp䩹f ãvc^*!{S#s^7
ڃj3;Oli"TE1*+΄S^4}Nݯ=<%`]+<~ b8TC7M>Q+3/	W}sl]m?aQ\@vvq?ehjtnIN ,]Õឈn^l%OF[IzNLy}b1ԿcKB@͜cFaEeUz-ϧ*@	=6MfuSՕB{#_̬N籄< ]gLaw:ݟGq?lg*<+-7DbR|9ݴFs%9 Hpߧ
GDlv	0+<)-عo/	kܒΊ6Cۇ0㖚ߴ@>e5nݬ|;+U6\i/SN}E].s,Y"!1D勏A""BR37%[lSp?;Z'-eŞ,ty!!-$Gkhj,_m<ӹ>FDWkǪO8b=%! C%Ey
Y	w@d`oϘ ſi
E :-0~8yNF;00\۲v.dH|a@v_e.#6yox
aNztei~_NuٲxJOH?H;#4񕬛D^:bϧ>6N2ڶ(>CUė*6c6@N5$O#aM۾P7G9|SʒzQ2m%.0_`Tg1J
|7](RByl*N}}nb:pJOv}߉9	"omn
w5>{:d} p4\W⁨m; MSyS+	[b`}êv 4!8Z72)l7Vj̆翖{XvoZ]nnfTɟI9E*MӤv]8xjâmڨ#.*m;cUfn[	ߦh4`&|J:vpgݿs>$i7v"C,xeX|w|"3bG2ܘў{j`-=3rI)9mN(n+~ѨMZrW
KNq`!Y~e`=,#OBW!&+(H(QCb*}oK5l'!>SL
C/>ڔ:UQſ'Vj`JW/]L:EQ!BSjܔ5ʼւ
aA	8mHZ k+nG(އ,'As/-+JafO7np`p0e#8q l5TvJVKvk\kHzîi&sJ
>w<1"SaM5_IJ}R=^09WwpJaK_2][k1]¾:Ąo3kü'~1P"% u<6zoZT4WLp0 rN/eqr(L^т_&GM!TI{¾mx'}60;H6Efv*}*5Q)=njNÏB~k᧟7Efu9u;<Tim@Ϣ_,6^{Z۶1cTG<h@n{rptDmGRPW$'hQƲ*'x)vWv L~-'ƥ`hۓn]ϛَtvV2i_g}y$_N~򷽄Z;O,~lpdnӦGeN_IʯИ1!?S6BʄZ/-@Pg9Y0?~R+6ҳ+	#-#YږH|,%/;	㛽o2!1~;&SnM'27[Z\]ō6+xk+׸/-Le־֖0mUI=*Y1%28'q݂|iD5T+5 PhY}yzrβ=UD2F2BϹ{:"z1و<ۭ8;jyWuU"DZM je
	=X2=]Q+W+fq9gW"ИWvw8MҰ4N9f$	ŝI$8ލܶLÆ!1/o=݆=x2cGi_O8Wy*l
4r%q@߈mƋ0aCǑjrd&Nc,h<r\:θ$,UVھ9vX>S	\XV؂ܣȂ͂s\GK,DŠ++:r^Ȣ6OG Y@B^r5*VBW .λ$Zr5=/T1Jf}r1Wf7*w["u	I((uv,[qo~yO
× 41i};̶XD=cS8Rv7?pqA))bp1O= [ÿy:
$Dæp6$)cEU<'4^91 )<)esdm4	wɀu6Bh`q욏 B94_0Ϡh΃GT5FLrW:Pyiإ7?]]I4iu"i8P21Mw:}7Vpx$FKXչ;>vݗYW3?w--=49gUӍs2`r}s:EwF&{\g,]f dܗb^w!K&6cM2?Ѹu2Zۘh&bt8ɴ6edZ~k-ַ{].],GftiUW>rh!S{"o|&Q7_% v׾P
Kg7g'"?o(,8?uE("#ퟭ0_8[wKgmci<Y ւn\u`?>	cG*xnCa'*X9$dS:0>o!J*?1
T?źC/noYnR$ `ƅG+#a"<lԙoxp.I\ٍٔ|}kש%t`mFJU?{OS#R݆y.8x7[\(n<,6ͯ޸GDkÊ~{
4xTا,:fe?
gt5$aO1J>v!I\.V)oQeWqښĩ$i3;^P`,~AFV?AQEu
"DelA
SE$[EZ83T[{#HDH7QHWʂ7B{>k0gyo>ǮWSSZW:7%ZUCi$X[0|}ґSu&`"c/wGˈ_{RA󌬸cEQHbrs!}3ܚG6c\3oR9V]]=V2	K&ޭ'iP^}"_8brA6iǂiGG^o:$׋ۿ}%lXW+>^)}2[bl6ŪXLk8[VG5;-
0"j?2Р\FD@zfD{ñ|SVrQh"ΎZ!!p1r|r^E&:1$hbc)ɑpv2]:7UWGU8:ϔؓ3*zޝٍˈXH3mڶQe;ofxƼs`Rc*TwvK%׮nuD&WaN~I$f*ݼ6P7ύ<oEA=n#jD|"Y<yPu~x?a'VD쉏Z?t?.+ |ogmuwR/UA($߇.zBdݴI{!EN"-YWV)ځǝcD:lpeYK| aۅF&ܧs.5ZxIL ?2>3>u1|I}Y0vŠI SSU|0d7p(K@ƦR%	&?آH^tN]p~u= ,;d;iѻXXqWzxP霆l.=?JUb!f	ʋ::r1#1 G9j?DU^qcrJ[a,׈k@Y5GU{)\^mk-.S܏c.e[qpF=H٧e_0>Ahñí%ϋhISc>+}PZ&<9gß;WIzI!GY8=Ӎ& $ZTGAa;6*qSTH?.6&Mmg7Wiʔ5.\*r[vMX UcOF8"bo`\#^X]7a||$TKְ\2 7BWq݌<{9U2s,Ho8Kµ[(xY>;L	Gx@DNSBtT<.fED-Ŀ[I7&(nԢ9g:7p=f--
RQOH]p^TɄ@ǦwL^qՀ|ԍvJNRUU_W|'$j;QdݸaχF'VĻVZ/н\nhҝbK\u믎x&&.:no@al@``ytq`=:e覸ԣndz(ghQAЧ1\'ԜZj'$J"?(s_g_7^93]bnY!;<6/S]iouߢԁ>d-v`w/}'VyB 9gmn)[:D#,++蓳c
^_#!վƛtj~fP
~C+-{hXܕyFiyVGldf	3Pdz"Qf3Ҿͻ}&{*~(Fx9>1?KEYvOĭ	Q^
9障2f?OѨOIYV[gS? gOEZ|bbBO=}M`iLP{EQQVe[PxuP6..{X-{ { wKp޿LM==Nt
"!"  @Q 3aiM@[		 %O&T h H O9 3 @0 sgVQQ0 & P a @&ph{ n#]P0jV߄&	  ag@r^`eAKWgVs+WkV?g ':[{9;x
PC(^"`ur)Wkr^VvVvJQDrrra+AMi$Bi&a!  eIFikOK{7/{W^"ߎm'	_lYa`eg_1?/!6ߑOlD	L  q`|#.%>_:juII@l'ȶ\XFC T6WO<a<<ύ>×z&KΌ^RTXۓ(е{񪱱[[uVӖgO2ܠ0Z[=bGzѬe$%Qf[OJ%4[K|TkcezOJ!)x.P%2?CEkO?53AT-Fl+}+"dbK/sǖChZ4X<۸t)6]s׵} Y1/ ?1<s3H1K޼PbTBv0NmʑOŖ{Gڅݤ|0@[Io}6ڶo>.DQ*vxlm0+tˈDӑ!+?qK(5e1Qᩄ(I_|vA<Pݚ"ʏs-(_２bՄxz|$ţgG%OMx|ioJ5F iLŹQY$w)XPq6'D/u :;Kc뗂a~C9V֔'8_)<0P
V%5sK0稼{V<Q76qpwHUҡڍfM-$G>vg7֏}5d	؈>J6l"_ѯIvJFuTg0	R|6Qw7pXHkd;bmNxnҁ<'5sgMor.EPz/;pU\MGFkl>ӹAW1N71\D%sqZ3:!^H⓿ϲ0vdY8?%1r<Pe6avרDBF^h?\ľ<3|hY(2
Rxt*o0?Pk>jM{PyyAVh7p'1Z8/Vs_< 8BЙI^ŋӬ6JK/ʇ~(bNp]"Au$PIGYݰ৓Y-LZJN%,,+&lfTP0 &OgBdՠ7sqf TR<jz|4%O'\B,ȗNt"Zv[]Y1%C+☨oJGKyck"a|b T6^OysZo.Q	PmGM͐ke"V2W_BvO=?l&$(x76=2YWtKϾ]uAW&E@8|:lU%[ s/y [ bAdpӫ0||-0Y~|ѫ0brK>Hp?aF,﬿ֿ^mw%>ASTQDϴ))TVY!ҿ=m2ݚRV&
3"Vկz}%A3evq%&c*(gZ|l.Py3 ʼCi]hJ58eW"(HIat2Lðӌ˪F~Yy *1;hh欿.O=a?+ xR^<z&ӮM7	;$1W#X!59AĒȉ#>(\/L鲽YZdWr1a>6ȸEYz1N[u6JA_>Yq>]O'9Kd~nllt3hcE.9[5%-X`8ׄO{ZݦBL3?Ym|Z<c`b􄧴g7g;OthYr4fVc-ǵű{dc p[\ɦ[o&Y_OQg🫬ּR_xO>{0A]&hU3{:ʶHʹyZdJryМX|V<zn溥*lE(2a3n/Ы E`,Gʑ+Q7d92\jz ڌ	ķOc@6w[MFPa^+Yp5faf᪒~6bo'ofUŬ\jBKp:!CN}/V.0[|L-"Rl'n?~vGgAUm	'Fʕ`Hj\X^H^n [Y/y&)-;x3J4A/wKe>w(i=jj pGPk*a0g"$mMdRpPZz? ԥF8dd8t}-YH8*$b[н9qqw&l)+J^22z3ܡ< 1"B^^H7	g<OIE=, #);HY<}P|v7{fZEG\n07C5"zH7hLC11~_S3	`Zsض'.<5U2I
WLcO<x%|*퍤4IUJSNgǡp1e|-2xSQx
\
}VjCl%k#fD}GYͧ{ΘZ3)ym(P3}-扭ӞIpa<]RIQԿb%if,iݫ)yE.Ur笚QMi'j7z\;@VH|ޞq2$[zߣVdg~8u\@n#a8~pg6tQ51YմVqlQM-vD[Is%ׯ79I~=#I_1"NTjx *ckW<#Q<[.QIV{)OgYu+FTov6( [Fe! Fw	ٮAꗭSR(l*Y}@xŔzvёedR#N\y?ivHnbow<HQb!#/ZXz/{_	Jl-.4.#-ZGQt:9@IqFvHjA'__"'oheƨQjB6[Ҿ=l@G}:BWe"q?I]<	oi50L!]?KRnz䰗<i8T &u1C/Pǟƨ7e$jjKK2d.2u/:+3*dZГ#@IӔGE2%3ϰƎX׌g :F⏗{A{ƙH{N_Ƨњsd<f3:ǉb\XٌgN@I4B2-,Hsm&덭D<r6Y?/ 2Q5ANZ`<2|^?úUZ1)y_)7JNP"=3/ :ezڕ8*CE4;A]X$#1
gFyғgO~7?Kg	m?4mP8Y2il/".5o02hw3`[U]0ѵrjM)X1m
Nm{XSE7VA(Hň[!%fZPPnkjuFxQSX_܌. Lܓ4ܨdurlx\|bUb؄lOgF<)WA^',q{:8fcF<R!YQ$86Gp-
:; HS?1n̋Ty*~;!hG3CY[lJޣv/V`g5{6SQf/lkCǵ^qNinϞz]i*YP͗u*Wm`B.Bu[/jB<n|yUZmΫِmQ]u^tbXM1}pdLE&d]XKC2Nw'0X*ϹQϵl׬`U[1n35`+FPT84-W*.T9uWj]njo<v}T1sWftq:3WN"?3^rxN <^iem7L)-0 Ylql]a;.>QCBGrEVn`þQ }K{$@	n9'.VY>Hͦ,3ثrCMG;gsya EuLj񘤇> iʬHrOjQQEcO|!R$bLR85e0"`wF49n?`D5F,2KC>goʂSS[+ۑ8'{֕dNG!>;۱ /ByP`;:f:HBhLJ쾪ek5TSckK-6Qɺ&
:Lhqyd8bnsN	Qe7f\Ϫ[uGzu~7nCd=̡pblYJRyh L,}u20)RTb^Rψ4ByfJAe)F_LBai`%oRkJԑ&fR	a`t˹AF!Zd,2nk픣Is*\K!۟Aꀩ~Sm?>h"T֕i G!#/΍6~:߇["qݤ;c[-z3L21Χ4Phf{K:EGe8Uyuwou8+_MHqg)&mmG`/㿇E
K2`S-~>rgSDǝ*JqU2Ȣosjf+DUoa7yZ4n=bˇ1oVi;	$Ug_wK^[7`!$u%͎RyGrr^nԀ&	$[w!Fkҁ8BgnNP釵N67<v&
Ȭ'v^`«*b'M[yzbߧUNa;Q&(-x\,4 ߿UNFH	36+IRm
NVԟ`*ꠑz
]19$mF?X[U@A:_κBN%Lm&I&JyAr<MB^ɖ(`kj]oCz `Q <<Hpf=&~*m?Hxٞҗ
mw/TDւp˲jj	`VȊjшA[7𣖞Vf%M'ެfiv
^fk7:2!ykVx*!س:в-m4¼e2R w3jn3_]iFF7h3[P!dw/Ulik@1UAa||E"!|Hs/iߨI!Q"Bq@;&=:
J<^oĞ/y]_{ToLVBASgl0G`e4ksuxSuJ F(z@KM,WS-z>7GeW-2heKv2 4ie_.TּOYŉEeP?ҸI:ɗyrFҟِcJBb_f6O)os *DuUxX`J&el[?gFc@OiʠLeN*$[#k{|[J	~`V:߾@\$gɲ
`2avSQ,
aQo0;m-}6>6=@0{J1dHbāe7aC*uMHl)v׶}dϧSUMJk=ؾU8tcTDo]>;RMGNݠpM
3Gz7hx]Dݿj9#]J%Ҟ3PpTc/Ӻ6`(Ê4~`lGq=BvBU	_hFƀi|;ޤ16o;'utU-nOIـhԗ៕ -o8jhKҸ2dus[NlQt(G^Yř~H0odz}hasg44sFQPk pwFQڜځ(՟䄆$+8R/ΥJYCssCxe[C+W5˵ӥPu_}+|;bjq``ᑵ4i)6IK2̰[R>ErpGS\)Yr&1O/Ctp9/q%2>$߼ڮ4ZC@o`vro[WG *FҨU=MC*:Q8~~ጦUx'6AoB@b;QuM9Na=§w'.eCIe+$B: _,i3.s꯮@ڸJ<fcN;6&%WMY՚	Wݭ<OŞݑ EIz
x͋`DtVQ";z%-qMd8p!J肪|V!M,vx"X	BG;*1I6;Å].-B1[Z lR5(#
-qo0*Ä*5$IwxMd|4o3Ll4peB$ 6i_0FLb'٣*DQh̗q@NVDbOgg-(ϳ@wJ,B1r+}eOBwۑ}m(qq6Hc\drHwPEZ" _'GС	C43>%B$*RNxS)0@~N=<2gR'nCr̌ZHħBl33;O+aPq\\saF].rS
Ǔd4+SFpf{"N}:p>/H^4וL'^Ru$[gtw4N3-8PZUEq5~;%nTs(bPc5U}Fs'F䊀qo_s
&,  e MEx-ڈ^4	h/i>N7!┣IǷXF@G'syGg6[WЖ܉tm^ER6zC}ݜ_k28p\A4jY*=5&MtSWA]K7uثwxzOӭIpYmۏF%..S}W>1֕$" eݲ`xB/wO'UGggl]ήwe]_seX'vttW,})	=,s<ߋ	}dOG\-L+C	7l:2,(-iD}8#g3XHo&?]gRc G*)iMnc]lR>9Й.2EG Ahrqzf)<L4$LD(Omen˃SWe|E6]@Zin11J$꿖Mxh]3x-^R3`2Xw7Z,0)R<c&rfSlu&.`I[=ߋe:&##<u 
B6b7ʿ\\wH<յP!, 7hX^+-孖0!hg?aQbԥ27/%-DKvgěGIW_/bdܫ)sP&/,.#+4U\tR&2S|z#JH3ڒÁ")CJu+U!8w"&FiDAPw_kE&B4A!xYr))$af:Hx&E6+=ٰǦO k}: ~Yw9]5l^A^潒Vި-C2%׀U~_<.ל-:iatX4cHr)%΃h 13Fe=~| i.򺳷2 ON|A;X/f;$j+Z#>SqmD{_4B݂rLDEeMޝߘXb^UyMޢRɱLL*jV5[.,a6$lT,kc3pRo>Cr nƄ#[DOc"b֝՜GBN<i!l|ho g04b,*Ri_uE&-ĥL@lĈQG$f2~	,LGolh<sR싵S=ǻqCT8vkh \XaKw@R1|RRK\%E:.v27k׽bIkth,φ&CtvcʸJMej4'Eb2w}ץq`GmW%F>D^)5!̬ɫeY/3@H`C}^@x^xO_sC6ҞvuϢ~H1Izd*Cυ]|QZ̰@´}9ʑ)zʩ..@Sͪ%NsO4;兝v6F^^+0Y؈9ړ@>v1yvN\3j(,TK$5C<]<=|ע&Ǿs,|kÁ-
XF`#^^uAv,ܭvQQ5_$'>=y 2E~JHE9BHL|S>G<>~MPnIO
Kg#6^L'ך8i.i)<)MA⢀-Bc)g<H0XOqլΗ-6H鉘Vmf+kX#>^G94^E[T4B=·dg<6Hn,}ψ=(oԖ/.Jg;FI)ؚڙMiЦbw?A!oXfD{&%E5W.\4\Ke;"RDfmq9?#MfU:(!9ڛT܈\Sr2|̢kEh;p1ҙZ=-aSg<j\	8G02aUdPs͑f&:4#Epqeo<!o?duR<4Q~
`-#D0zJXNh.RBcC+!Y)5ܴwi8C㍠ $W+ٕhbI^@Þky݄B|HҰq^qƆg·Z2rUe"V6y/N?r7.XF^gej`F^\f՟L-a~y
52HfUv[ ]i@9z(SI
|Y>Obs[}mӿ(NYfO}SxM}~n[
ŖbAq	nbD1|Y_X0xxA`Ufa^aWF$NXD{r!H.Gk{!1T)2)Jy@b彍E}`<-Oѧ4K2ޟ{#">gZ30\h^bgм-.ˢ*B]=уE*!],̥H5);Zzvj-zZZ;F<ʡZx#+
F_> =uCP*/8!#M>n,3xʰb_
NmC֙;៌YVƢ,7c7ͬ*.q9+5eD
ynV\2*-p)Ǝ5Av6L7_f1T"h|pe&]/0K\F?N}Ps[x5sśbI3Dz36X3"@a!s+D3sjŹ]q/܀؜ݩwXw|N	
Z԰iCfdA:)a ɲ>12sf>/fѮx

ٱuSv[jx {ᖒQqY`PKlHDI1`ގ!*6CۺߧϺ'םB17GױQ&_M%vtUl_n}pxD#
gA P.' Iw[C;$$\.hΈ^ǚml޷~Pu\]Q4:Ig v߽ψxhbXb+Wtt>QȈBwsPIR1<EOH?PYay<.-ivM%kp0^b4]]lў 5@ZoVuJX:MGNJb>]ݬ
%Hs 'y~hU'5RGZX@;6Ʈznj1 ´uۥ~֡YV0>
9Lr
Bv!F`aT$P~v{4-қ׽Cs!ȃ~XiV2)\@hDb^)Յ$3AY$TUپۦt3Uc7p[A{VqG@gɰX[)֍m#c'y_X:b\J	~|TyKø)-WEk\RfZ41O'G2loB_8}T=sn	_^@dݏ
uo.pkjvǫ4nGl9Q|0&:2I&H-4j3oqg̨6%V9}'2E/X (1R4VdF$H-ItAs߇wycK%{ huJ%H1w-X1Tl~k7'm{O[_pz3w""h	7oBq/\oG?ù:&(eo"	hV|DXcա5e]5ѡ須pRJkA۵O*#GlJ1Ml*E	En#[	7:#0/0Qb(Z2/GBR-& #pW'/tmf8;83_s~X;)YVp	յat{	Ddg׫M+Gq+wx!5|LG<{mG.ّ
,9ApfɁR \g$asD2f`Y<C|l		A@=)
 cDs7	E:9+rJFAr~qe߆b
@_w{!V\󓜄sIn):X'Iۂt.IC<
l	#-C>!kAje"WCclJPlzbIBfnb
ˉ_{rx=]8;QYjm?YêiL.9qNԆnȷM5v9/6%_0zKӒ>㊄Lgu0.X%+>C|'Dt˚+yh`*F?[oolg-U>J)'<fukZ;pk9*kBC*cNh6uqqˁ:+wC/3@:g]jNB)S?B.d('U/(ɔ\ոߡN07AX(3s N4ĭ6GI	A0_A[\XfD
AT|e/9 {/]Yx(H$KdpX!>i̢˟]ii#Ogɛ̗8TT'Oו1eS%e}G6؃E%7-Vb`Q2H*m0zFR$z>6pcsʊf[ӂ52,=/01B4!6@-H7=YD1eGX0Mق'O[YVrt/}]$Vь{Κ6MW7;ʓ~*G~vBjeh@DN#j '.ѝn)8%*@uQMJTmȠ5aoE!r JٰWs>n-4&2LzѨG.WD}!Z;iCʰg)th"2'&o
xٷmbĮڳ3P.֘ٻA>=:83;ޘ6=V_򊵘I_$JSo1tְ_E4;cv4&xUbMN@H1ȴ}AD@; q0FTo|p϶Ac"Wbebƙ] <v yL,b7ލ}#B~Wd cw޻B3@/MeZ\C?C&TΌ~vn\jQ:D,4 TB~/F}8Բ!7E&g4Ky/W酞z}o8_L-BVG</Jtӷ8]E-J$ȣ~-ncݿuDZjZ##p:PQx5E"T Pۓ罜F>k|kWIB:Ѷ9ih'0	a\70ؿi
GzԣmF!yP㬻Bi+~_^J[<~dcg^K"Ɏ(8="8%0,9@F%^:NC)KITq&W&}^>9?aRn<CW)Ƥu0UZV1vC!Be铞9[!3P3(bD,<aWKQ-k?*Ov[?6>bKE3rm__=+= Ӳ-p 5|1lW}m`C%JwDe0 ̫ NӒRfio	T~"]͹+3G=2䰃{S6z+;s-1H	9vz]➅ ᎰT&=}1UxroDJ,Axcbح ԫW(*v]EJֻ?e%x6\\חkxֺw;tE{%@<{"Y։CY1sO,DC|Ũ,I!1q)/*=
+N1XS%7%ǸF,P6X~@ e6mwSG9n3yrz=!8RF[֢q!uqs5q
Pk!-q+0y;CTԪus$ YWF7\Ium?sM7lC|^r<2C;n8}X>Op[vQDf|1iY!W|hYZ:	?v)yI~T*7RIK3ͺS\Änr3P4Y3"tNVRJ{Sc#/j	]MPJ0"x/D]Lĭ{hmMM}6^&fŴ0lF
Wq52>;WzpυܔFISHϟўLȞK֎Ua瘠Sؘ(GŖAkK.RPOi|b]fB^seFR
cR˽t1Ryp-ʬ!9lJI%oQ:6kcIfwg0#/{
)&t8{n̽[õG-Nb7|m;V@ſ;G/b-$YEY=]' ep-^>3r\"_icvA9zB9Չ~ޕ7J2 )J֢C%%V0$T,DK7maӑz3I>9O&5leOр@X{8FSEWA6|vWȷkc_#6I8Ю8!YC/=Djd6qKcj؋B
+e'3d ՞_28 ed׼ROQ.%8QB)8~V7=u.:64 T2jIہIMkV1wFΗO/M%]"CY'
8mbRNuzaxJ{q7Y656)gRV@ۻ{ltA<B`ƶ-ᛊpdʶCQ)אO,5kNq.0UFVWoSƇ,|OfN\|eG<09/6](c0SB5cdOjn<B0qԾ{A*H,im}Jy4&v<ܱ}f;|dm8a!rV!r'b@ȏ=")eHs@{h_r=[-
|Zb&@h.d
{>eMnk7EYtO1(n68DolyLtcҙX32n[4;[I}9q^HA?j	f;<Q9dK M8%	9/EHU4R	'7|ӚXIn#tt|nzg׬>h#1zi1S2z׽LjmO$zD"I- ;(khڜgpF`2c|ʮYLtb۶L̉mkxbۙ6Nl۶m~]U^u"-?1G4&QL~	o='7Y27e
e9'8&0nHjWHf`4YX0u8g/SzxHڇjq-"Osq{y=b:.btrM}~)I	'~pF篿-d

3]uՉIk{UE^5σ-=S|¾BY/NA%	8 Ib'~1َNp+M:󻭢b^Q00fyzz^Hj#/xkH#'o*ˊ2yAE.R֏ܜ>oӶ2ꆕtƹdw<fԽU86؂A<kdOuiaaB`--mE7pMI!DFff]nث.vDC.TRkAڞ O<K,SD3Ffv1*	oXXѥqJ
`#_;t{wjWrߙs~w
{t*&:Bn'O)CY,VQ[rgCܪi!y
N1"5fLt6
 mZ`A0pIhIUsppoUL\{9`7''q6=q)~S͌%e&ٕwR}B2^e	A5,YCt6 r0NaCV8Y.TU_axBI*0dQ^B=x?(qPr`o0_dgov΢<R;%:X{2UJJՐ^Y{TYiUH`s53_~KYqU݁-Zy0XwQGНB\T$cVs?=BψdQI8`4[?^)A]OXY,-gဉq~ "Jcw8 {U?R*oЖZR֮!Q>FTX
zdQͰ *m_M̍Ej+׵KsDbk|L=7"+r>^M{@d"PUIymoԺN[}ݯNFz8t^Ώ<#"HJG8JD[1|\|@w^\Zcr~3>f1T5TGcX\Ec< !>`zԫvւ5 &*n+9 vVQ<,"LO!5;"32J@␯rx(
A5rQxԠBP]C<?o6O(t(󚌨+E*`Jb7tԊNMX/[:YrڈB}(E~2$6}%bHW$$ch9jD/ÄWƓ^bPaON*M^Ֆg3̬H/Ǹǫa@_ê<zseg9Eo:JaN2\G~V_=Uشqǥ.'hx-!(B+@'#y(e!]Uag`y(x{>zګk0uyV&<A[<U2b;8*mr<6
t^PK]x~@H,opUU>5;Ā<
30taT "Aˊ)aʭҝ4f:gǾQHQU<B~&mm_#.
A;4HӖ%a8Vg?K/j2T"ᐹSyV[A2	r&="#Wbǯ~ae!iAaWuDRew(3Xؒ![f~]nyڽJg~>9tPBl˲^fؕ50R|SHAb	&!.҈폍[*|WUm߿ --ݙGpB6g:9;?H2
	U}nVT(=:Mć49eNu9^pr=S8;ݗH	R寤OŕvLrCj1Mt-rȳe&7e/ϻ}P^ᮯllQ:/v<~TRiɄ2=گC0P Hbm-vb^Lɰ	eF飯Z7 !E/v5ܺi3t`n3ΊC4@Q f?_gq/`ᷭSfɮQ0~SxkY koah)zrF?u!Ac"Jbd}a6P+aR$Nŗ6B\ `6#i;s4-$CaW;L$.T$b]6) ?	}]t+ϳ#$A9e"Orb?[FR7_'FXfPE?rN2t{&$j/!4yD&GG0 W:uKl
QT-J<l(dj(eR?[,8KJQ4T5QҠݽw`F
5ΒEJ55ؑ=ykhC ,VEW{mSCsh [Ӧk(8(c94LrF!:\\jxy~V}xc
DMzH@	@t
 x7̂2]=:Q)UNvބn߫4Hq>A%"ee$adfqu&Q~_qVA	\+_ݣ+Bz+~#yΝ9hp^&jeG F9iIֿá?P7*K[̨BM\qbz:ި?$޵gkTV7FF=SMVAWɒM#ϟFRo51,O:J)߇W$ׂQnB;b|Lǌ8(uu%MAxSR28mp!~8@lv@ .=04Hޭ貒qàKG
Ѳڭ=EɫDPL"N(i"Q?LQ;/(Fcr#4c؜8'fbPMZ#tC		ݹ~߁Q),qm˞:>##gj`j2:my;Cߚq+FkH|T$cNk-!bZH_sP}:2[Cn-v.{JZH3&&7UyBzL$4{VDΜwq&3[.q8@@Qȩ2cnIF: wyzV911:2~_fvNz|狌JS<b(5jU]*n_[0ЃS:T\8`"4/Ep_ڵShv!X7@1eyb"Wd'e_P%g0q+X qHhkߐ+Ht*k%Rxm)yр)~KYŀx`DBnxR(STÊ޶KB  pKP=(jvEZ5ɋƷ«	-g1X DrseASYbmV#	^Hk1 jڇkp#q'9qg^B6WGOl+8ZVN?pbꕜv}<lvpj\m
,좈OtVJ3!ƯMHJEf6Ƭ9*'E~C&tvZs i8q2fnXe-I(\UYzY~x]вן; }X-X_K3zRT#5AKpeuQ^ UQWF;ꨖUGC=۾-8e~?cP&!Ў)q>F !uCqg\hBNp J1=	PD_KrJ=[M	a6kQm=g}?kgE4g#l5N5<]HX**z&BrwJ?J5:h	z4g늍,d?#!1/BfǀX7Dܤ;&tqI3ɕv=4>1^0(N\0uᯑ_4FtH#:^MKeJ=p f'/_2KA'Jo=ȇG@%[nnޗ7buhELo&"g:O!ln:pyΆϡ/SWˮ?:;A.-ŋEt$CUDVXbK ׫Ќ͌Q]v,kGl{(]<WOʛT|=%߇[1QApGHtGĪ3LV)XU)'9R{m3y0~<Rrw-ӓ+y*w]XJ}*cezr'ˉ0-n6)zjw#(jEK<O1LwӢQµvH+OD􄽖iD7$uo1U&iKS7t{IG8u[ip~bw!ӯ9{fqRsI -cqRoҟ&N??v3ݝvXn'iǎ:ƫ7X5Ζq}鰑{!Fd*&`oy(Hl+F{V-=]F$j~h<;:7ka~Bۡ77=Njk1;qj=F9WZL&/;ْ +KEcD<ځ\E2Yވ.:e?	'}אQ:'^ɋ4CڦJ2Z@kg9YX?BO"@4P@Su^luU33hW=5nrFLRIEGɏK&ϣgAJ 99,hzZfz~>N?LTWB 𖕹嬖3hj	)=q4ăW*z\!ozE+4RFFoq$M͛ʧyԟ!H4{&R0m{C`-Dzs&F9Yʣn[\|l,m \#ؙJgC>E|Cs'jS
ӟC-2A-Ou/}Wv}|>РkgvFڋ""<E
<(Wˊ<c7exa<ug6˭-KtPt~^2.9"emyPhQQ~2զ	kcϚ5&KO}xuʺ7`{YBApAT'寷:Ѵu6V9>T^wVo^^t96VF}UP׬S$؅˛G	~43(\"nJׂ ř32H0;9,=#WܿEݵ}x55`+|?Hݴ~6K/%JCO~D۩Wĸgr3 tjN\lT3Z&Zi(somz1p*ik"YULQ=ʞvw%@^]>Ej};w`tcaѤ!0h($s7AS)( {3*6Y=zP!J-6waH6
4ɖuP0`"t%s*ӥdLdxխĐJ9m6ehK)t-b4eDzQbAt!h9`moQg͹yCKf_B")Y=yf/tkO 
,m@qWuvjiN
Ͼ-xi`ISE<~^Z.~~԰YouQ1NTHε%d9^?D䃶$S06ݗ-CUhl	=%|t!KՒ Ck\uAE6({[OoeZ?PRnH8Tpƹ]x;LSYr'yO:_O4RF8%pt.C
6fV_fohc5iX
)=kll&{xdV.#EV")k%f?tocmxAk@|&ZmKr4Ѵ>!Uϡ#iS0х`*Ju$\/z6E%T6(.woD%\F](jU,)OS)N
>,^hI"CI#,Kj*d?>`͉t-Z\=3֟x}KRӾ4.:qi.y$9Pq=	mD݌bQξ|Q4'p84af)_Y{̤O>wƺ^hHC^rVH	dkpmj5t:Dm0t{pk::`_ad c܋!<)|IIvzØي_B$.ˆ("		&~BpC*IkQ*dqԵ"	z~Li ?Xmt)XzFzd:l爠#IP/?a8rd߀ϙ`\`NiԸуPoiޮwk}] $JU&qE#檥djb[PK`%\^ջgT.csv-jJn1	j=Wh8b)Wf}JMRdJR9qƽA_Q15OS^J.*(9wA@@!kYj=Kܤ;caMO>eæMbS7aKD.uF>F9'7ovLmFѶ<y3OFSrN'DNq㏃k`.up{Al@?Ud9g1Ӕ64
N>3L<_5m>fmjb5+bXbEp\6]dnlӰ}iՐEϡGsk+pm\S$-E.nKi]==%9b!K8z^01#85-
m7dv%FZFm)
.DZhTD}``S= mٮRtnX xРW겓fK0]j9վJni'LH	) ҺV^ށ'D%s"uH{.sd&*S5`3|,,G8		=`1'=H?}
=\5[wtNqech-\[q4y]";i0*ׯ-{I7`j;he]5؎!waIX3U, d mCFC Mw.c9-'@%o?zaːF=[JC@{I̗

L}#f[WaQFks=hoC;J!$Z$zEՠҰ<%IA_М;bqԗ.4 /y&Jt&j턦n1<F4
@a{"\ڇqqz~|?UY1"|=Z
Zy2L^y%5HgrypĽŴްHT#hHnpk԰aǱ#OZmR OcDVp [pѰ kWne0Hֺ+gpOXӬ-+]
ZD4ԔtWL
B	v*A7sTm@+VcRp DiH2Y~D 1E=>5oZq\R[	VP܃8uw kMXI7:eB09v!1͞`</0ᦷfwM-g^6 
SDB\&9ȕ
d7(T<9"fgi>eDy|5<8)"+6{_b[>DԹ<辪$ɽVٙ B<z8!dE]tjN)ć[&Xc6S9z/Nūxة{(eocooSXme@yeUY5иzGI|m<?_Q^ʓnh+ gK4$~Uyo7UYc#!a;X{Vi	0#QCװ3cWcULSr	c˫}b%6@KoS4'	 틞mXiҪb$533܌Eh'ϗzfioއfWqPCB䐮+׮&
Rǫ7!P;}ݺN/oDωJ8|9CuT -''"gjO	^l]TJSW^ĬH3|Œ\[ze͏
 K5.Z?3\&m[)Q㖵/'Mu[Ȝ-՛/7ҲyӾ]YH
TxZ2&81C|^X6g&^>5âGul c/uۡ:#vxې1Retp.ZERJ&"v0݇t*%MR2+=Ō17rc_#I._se=m}͆SL&aԒ)v1["嬗y=(=/ѢpiAl+ H/EQ5oQSpu2zBb43-6S+PbfLTSKJP'OaE0gj2t+̿aFEs7n 4Bx'?3/ݞFd#9ת'@Z,qc-AG)2w5-h>Cw=(OiٍR	ඊNρ(.4;ֽ6lr#hlV`T4;	=tW㽺
؆YkUa|` ?KP&v3)Cq-4h9ˀX~Fo[QϲAZJl!?f[v+r`%2	D]_"UX.˭^,&j4$wťbZoB6M!EKmf]
:& &13fGf6ۡ_G'QK92Y NS>'-X2UP#UΧL<:sYt/!=x>@v{(>e`Uaь9m=nVp6w&'sȏ}~Ikg-ȾiUvtJ,uƀـBeul,$PG^gС!̼X9#lmWt北uOUw@s[6pQ R\\}2\<@W4צ_qU\x|OjA#U*i-[^h1,[|GWkHٌ\{9	[,I&[ݗzGTGw8#7\Ib/RCIX\CB!~?OuqQTS<j5A4dY0Ѽ.{
`rՅ,Jb@mVZ3:'ҔR_Lk	FwVsR}	޴^1ҫ;9yDlKjzhM@.:Wwx(bϚ*|ԿtmTva;md0/[@AG,	+X>x돔wݾ12E,g'|$1TDQe:^
GI,۬w!>֬cUZ4N6>	f:5>un,D"T؅P7(h#r#P-7`;=Q:xUU YmXn\E7X?uagc5B!f7x܄]>=r=fZ"ݮL
 >#D
#"$T1hdJI'zC'%/)zF#14#Q'k˥O]ns=O'Y_sٚhuXf8҃*)oG]i(Z2:/d_UH~铳@ll#cӳZVX@)pESvًVEQG!/-'4[ɞwu|fzhc}[+KO2k;Б67S7a[I߫,c=_2#	%w!+(
k{ʰDbGX=n&<6~qK7['t芥D< 9|Cnn; ͯl$ǌ|y-oBRF\MӅ)"0PvdNJ=ZqC8:fyLٝtR|yGY䔷IB?݁Oxx+H]͈9cr
#uPPeхz]Ԝ+LDTc<ZٯzI,op^d.;]OKcN :.ؠhv7,F8(7GTm<>|!潛XAG8^]~vgW૫I)Eڹ~L&=&NH9/1@ҊU#gpg(ArLRXʈUb7HKByvۦZ&8QܸZ*DUCu	?`:`C&ȳG% )끼UkYeb>DVP't߇>vn|^pRKqo1]#%֢cssf?UͲ
<kKt+!
;uIJ"qVEF\ZLp zj7m\h[_oyJ\HR<Jˍ"SZj8;=>(%B'eiMc8<	l4jG'&͓ᕔ,db7,< $D,a^əczfݞ
ty;s-ԃM`d.>{L_
(a6l]?udV+%=O[;=@?#ɲY`<n1rY>BqcHQi\_N?u4D9ZyIo=:+UR9Ws6_hgfm(cH@vWr98~Knnۣz';Fгخ[`[՗ĵ^,?Z%|Ȗ5]P(`08p£yE Qu=|I*b[/eRt'A93LSAZשΨ'DR^oRE5MbX=E6 HZBcLR	Et٦|>%j#qˑZ/j}GfM`M+/M\~ArGvwZe2^'K;=d,q@귙G_'KWRS]+\Q?5"6Pv̦5PntP,.* ϐ}nqvgEÉI2ixwWq1"@UMB=h+$j5z"ryv%vlR:eS	)J}*0
ZR;?r$Tü_dA1DT
0J4v9it+sB`r ?bh7$R]Fib"pt$x{POC*&M@THAzBB. EHo"ҋ#J5Wܙ;w{f9{Jf;](ՔT  P e๢5 hh |  8av MF%o8 ?-7mp-7rR/l=m]XuLQ3@v q)
!3apv,7cC.>-B"bjJ 487;wDܢ~CJ-E񴼍Fg)--}<|%$e)*)70|edaiemckg7CHhωI)_Rsr
+*kj;:{zG'&gfWV76wG'g程˿n.\||<|¿pp
'`u6W*v@"qYmb:n#$8-s!Bٿ,쿁o\s<xxxnѭDDB'C 87#<Ĥ߄sYF `:*;Ɏo~N"k57)pH>%'i yNbăvn\H"mtD7.5jm[5"q멵]lsn#*2(
Pf/=Q"x2֍ƯqGR7A+('Hjurc^pV@8bx_qx=Ӏ&`gvl	x3ޝ*OyKedK\,zLLgyyC[Z bMֳ;Y_G:t݋1h2'7ckLӛb%t糯7bܢR|.)><$6cE}ʆ7Q˗a7dwpjks~.Ֆ7;9f
S^'~e+ɢ);GaAq̀sODfRhK{ͅG"Y2Ԝ#}Y[DC.ipk#;q-+#EQi?F˗pRs*`$Pcӵ8~20<u8Ct&K!\)ܡcwmyI	cceB[X sF`e\*bdF㳥M"ˈqcTaX&Iq&02杭AZPS+,TmRH` ˙2|ق7(e-6X.j@^2 k_/  n	-ˊDl$ߎcxOJ'{&}FHdi
CBTO#W~x4+=|TgC7mB)Iu%AҼ_ڏ~sa+tpB'_wEhb""^)/eo&i6w7jNW Z~Dq)xuPOQM͂i{ON" mKv@";:۝7	Ov_!fQE_1$3~(4@vz?Nn,]N%;O,f$!s6-u6zieޟ7 ֓SޭZIX CRɭ2[e="1g1=0Cj4zmRVONjkpGsHq8ĸ(X,(\߹.]"T'8d7<{X&/F/F7Jv?1vjVL|_E0m볂y[ѼGmp5~}|1O9~4PoV{@Tix9rѻ,W9l~$X`О&x.[kY'`Lx, xǗMK}ݪrG0+w-/9T܃UM;[:a?eQ^Q]9twĉ6b~\7/z4M
UkK:jY;vLUקQy11(\+%{gϱoE)PC+03Gr8,㕿VMCh*])8r.|\|@6+p皣/)3nK¢=R2fSho+)B-LƪUfOEr*K?8,N] Xxz:	aGm^gy~JDZu_~ Xg#7w}ʂs:=Q#KD3ן,w/^ڕʑ3)ūWƘukۚ @x2gD.-ԛ|QpkG]&,1J,v-:Et鹸s2Bd/>6 ubMPH!.3~^<+MZ.mUzǇ\ۃFu1yʅ)iS]#TXWj»|2{;|<D&86ޭYݨS9`%s"]h=N9~Aٴ
͊f@Ս$b xe3ma 23Ŵ{5V3w 9iR$YuV)9Jm7/`'UM秄L_gڿ]{hp"$h88l_z:?U.)^N{fWr!ˇ\\oOǲ,S"^ԁYfe9n
Wfpwv=%|0ZiE9v6ɲP@ÿ6_Iv#i;29$ɍ%dU:LLύm<<Aݝ\`ET,'\ǒgݢ1].[ŰU[ݍOux4[rZ{70Qq̿9m:%>D4y~A]spWZyOGj򤾊>"@7ં%n'a-etjX}y4j{Ko_n>_nj@"z
(lN{uycU`j_1@qSHKVH#ȄV"%M?mwaF~Z"bUFw<k!ha?NX~,[qlg5En]S_"O	F>3o8Pwb],@Z!?} 7^M}|~	kF-k' ʼS|bT!l~fm^Rh{sZXNX}Qyc4,-CI$K<4'_Jਿ&G~ hSg
[/y'x:5¹"k?KftLuњ֘Sܝ	U
1yXN0_C{(BmcKގlVcBi/=aLhP3!HEX8k۹ۙqlY2I;ƸƍWG;fM:uяQfQY{n|DpW
Jw{-2,]̏%o<{vZYocd|t(h!+6f@;[*NÄz`Hjn=",JE_gVe펐:_F/_
ssӯ\+\`wp4v,fzkpO /T1K0Cip*9mqT?(u:B&]y>EOEM맭e-sgUrz ])M9j[R	#][A?8ϬIuG-'T ]lp͐bⶹ71*L,@&h"U{)9{|6eaXMIvZV<_nnS|PHpH3ӶdWdY*C[D$,Vb%к[bFq~GgvrtJгBfwŕ&!skxTRӘq=(PHp$Zri_Llu?Y18r2_~]Mgb(D5	3|q!Ғ얳`UˡmE4j02L] ?~g2@v`Hz:1W76yn1}(!Csޢ@b[֠N脲QM}4#npD2mV?w6I&rD8iZ[7&NdQ-.<il4ڻB*s#*{}H쳋	XJS[03Zz$F>;XtSBv*IR0`ŋ"X]6q)li?z OA7 ,`X6\/".A;\:d
*\JNbIQNw;]-	\K˖aFPSM<	YlI7RSPߩn8֨tz:|L%T{V17JwCmbsdl?h=
3H(P34wyOҌ.04#Hzs%Ioܽ4L63guaLgZN[8y0ܸ}Vy+;}Ѻ޵6X*ӳ<QroׅPv 3I	Ggqη|IשG!g4~PǯbIRXG1VoFKfqEcs[~c1܃ʙoRLf'p
H!Fyy8řgEtnTt{Z0ۄa$<6v1,m,O*\JŎNҾgd,C*gzv\b!79ZVbLwK&9*t,u_.^gs6ʮ1t52_SQhR&g~M5HLlG>bӷ|KX{ev^݉L]4a'=ڿ']12şk#ߕPΤ 3GYHA+rLd܉*?8)!4(wA8Uؽl7\m2h;5]::8q6^g}b{0ɰS %	08K(v%mBTN}_%㡓TjàvܪSoq~Xe<WO:oe(|MNf#hKMMPƞȯ b}[-,CR|y26{i-FO E%,ͼ1HoUOYhTԳiinQ&<sZRlyEƽvc!2ŜN4rXݲ]M gA>'ʊ*F/c_ai+:.zX5լI3}L\@yH![e{7r|(9tY}|B!UJ;5NRl`lrNL|{|$]e!h.,J[1gڽJ7	9qOz8kɇ%y p`g"gJ S&Yxunq|)X"qNNf!~r	)vrG@ź5z6,3KT*h+ӊwHĦH]h
Pc$_Ni>M6E'ZKEx~҂\G|@n嶠½0LjׯoPoX͖җ7 T?=czkҎJ"~kY)Hت_-ؼ[E@wl)=1 uDw=,:	[SN?J<s`^vWҪ7oZ2;U*P`(ӗ>dG|q{OS
l5!6u=2(1K+8WM=N_[W)~K~D2)pC:}p!i"6bjb%KCnCdE]rǞf{癛nhxw7y^	~O\| < &lqhl.c7oq+O쁇`{STq9c-$
$n40OPQ؜rY$O@rw"U7{
uzݗHqm	R}F?h~U]WG%t\Er8\Ҋh;5	ȁPns+NumysS3m^jt>@w̔^XҮ&i<u{\ɯ}M!/ׁq/ƪIӅ+#0y܊1UI?c<Y:3|H7jyi|88P
dXx?7 tC hC0>
ɨ]g	]xn*4zC{f4W9F)dåބg4_R*!+}|Bp>JUQjvycfxok~ɛ(HȲk^Ո"YFFS;}=fk{)XdeR%Bw9QXtyЉ/g-6ΖX%j\Dj5iZ/|Iξo[Fyv?پ ɘw0w_.ڦpxq!nJmEj_bCx^<!IȩAR;xAܯ=oC1sqw(nCK8 5ݐSk`Ks_{xeFr=SFvuReX7d[ Qy`$68zbi1v{{t0X9p?yǻ燤V0O@󗦨$4e}X3)[L##4EFvmp0$Z@߷TXOW/{fŹ'ܴW'6k$S5Z6ƿ{6]:K>Fh`{9D{(HΑ1c@Ǽ6@+J8h_*Dߺpw!mRpvL'{ښw09긻J(s9RJǏ*OE0Rza\v!ȵl}m&bWO}&&iw%__2L-%LmѨ0+	iQˮnm^ƩiY.2}Ph-q'kbڠ= ,[0zlE*_frnI?9qgLYdGYPB(;?k%퐏5}.Jך.YVH{
w9-Rb`kðO\,e0cۨ'|ZU;n/5ߊEu6N>1 i
5, Iǰs5W(.%%	c>I=^noھ
Qy|)owc<8bZ|fa`ZhtDKK& uGee;r8tʽp_2M?RH=Z2	ne&-Yf3+SXnUc{k
lrx^C·`yҠ#}nm0C_nivW)IX$ق2np:VMn&~:rrFXu]\.>mU`p<`3'騅79FQ!OC(@)6嚫y-#`Eaej)WV]aW(wy_4*;+m-D}P)b |X%ևmx}Ob51زV#'}
\3;r:yWE$:4
.z'[^d/ unt=,U^ey*)9Yw?2hh.N:;	VQys.ΣSa9jb,!MqKs9\TS0P{TJ7QQ7jt"g!0!em߫r)E".z@-E8"63kzA[>Ũ5|	s{ CYRd{OEA(%ER*[12Kee	Gz.ޅU{#jC\0C9ƅ_c7M nog˄gE&<7%\Gmo'tU;S)TsHQ>K~Jj5r·d-?Ҳmf+5QQ6m.ps؈v_otZ`Ag,,rE&K$_W2}5\ժM8^݇Us(uf({㞐}js@]o1* fS_9~-:qcD]5REOǽ$4rstme7:$ A y۠_e}WGiZ`,*e\4ofgNe0r}v_ҝg9\
sk %f.UNy}	$~.v~TF-k,)YK	n;I{PV}4,͠uUL?oiے(Ӡr]%[lWPPl+iJcAB;`Dsj^;C$͟/#Nb1W=d`0OB8؟.h*!"r)sÈrӀ8:$Kܯ-A^M~g'F_B,~HBmz[H`oYfΗfe8)0\+gkME>aQ੢^+xkrp_IyP8XNǰ:\4f#ė[+
K;cla3O.K!>/4VL-^ӭS6O4=L%=͸va(w(sgg,4LD"@Vy˳yrrcq6Cs#V{l-07,mn]snxAVIƫP`t_}rae#FiA~	(hW>t4$v()u۴,.ZZ"S>Ega&̦CWIor쬧(5z۞-<Gæ^~9,Uiۭ{J$lD~ׄ0oB$>Ya0#<:Tۓ 9aJ{&#K?}ͦ74K3ƜChʵK6P\p
¶EvN}gp1,ڐHnkS^sߢGr
e_xǾWTv`LxAhZiNJ
Fƞ?eW7}c"@D;DHj~ߝr8.<jwozNܫϨY~/\(we7{VسnfY;4`>3M?$_Fʾ:x7;i$t [)'ꀚc2
Z_y2K	9G(Rz4o=8&ǝ77_2zCf3cJrnwUEPԷZo< /0';ܝh^VQ!~DUU~~Ӌ!Y5(H,`^HD}Sb'_1#$33<tөgD!d[y5zsJEaU _5>SnDJ1FC8J(1Z(["U=,YBbkH%Z<r
-pxaٹt{tʣI/:q!.葽fzܕ`	Hڡ6Ldn(?WM3܂U}4[y$_!M}8V[mwYΟdzk樖hwpF[;wO0J,eAf2>LCa}尪qkGCa-]cO1ƪ'5c󑓲00])87.乭j&,(V[1~5[㘻]{?_9ש2*1bzFNVғȹ~^788VC"т=jJP&9v[Ў}9İv	EgR?=L0.;KTcFѭ)j\f1fYX=nW"/X>sdBCDn="OgyhёI,?u5l(j~6PQ8a*(\%YY=x
㱡 G]5/EJ[LzWt:bϐU#$[b9x)2Cx'wF?@9kMKv
<`+?5lTp^eT#{V]_:Cyo3!2AcPF7uoXҟ!Vfwvx.XR';K+O=Pm+1bXy^$vJ!/TR	GCOeXhKABǫ9@;Tņ}g$vaJ;Vv~݁<<.X!H%29L\Є*~$JճYrww~)]-%F\qb˝; =cB$;e4ȷc^XU|SJL>~oroc}zߗrfoK'e!.>8e)F{r ksOng|N¨-ƞQX3$:\2x 4oСQȊ3ao#{%	vW%ԦW>Qg;3g&xϕTr`
|U;Di+) iўXoU¨J.-̀m>kuh%ΊW`nS{W-<_JǂF.o|n\w!Gtq1#T"i̅=]]fGEDӵ|uaF$H!o9nm<|rw}q~Y/2!}}y[>bv5֊{fQՋ{nX@ץDXq[:.WLnuu
gc$EQ)xEЊ^f̣w`KTme)CI{a%PϓG8C_}֓RO61w ]ca`7kUz[%hS!=-Z,+h;~ha^Ff#LLuSks zNqtd\񂗙N%cX>YEڛ̃;Fv)~:c'}aB"B﹖©/t-ټn^'Ś*9pZA̜{4>U%\$`|YB9lQ_	5}o\c;{PFe~o,05W>ypsCҬ,7әH#V t]ƶy,`tk\tZt0JP1򊍲#zRUbYZg	%˞HW\h)BHro`a*#KQ\֙eYq@NXDkͥ{Fzޓ?	kyY&$yZ5QكrѳH_3[	"zz
4[4cNwPk's)f"AF5[6L{J3u};>b?c.R򑁁GA/z8XcP	0ө噉9PD0momӰX~_3߰RMֹWԴs~x}D^>,LD>{2Upmn(Ǘu*$V#;1Tay I.F	6<=WaI
BQhk5:NѳO.C?v@BHsK3|c]S7,|8Cʘ$epq4V]55HtBc'BpBjuy-AY1*GyF]`HfQC7Kˮ:Utj:2T sj\L,ӛO3Qh3TH -0d@nڍf8)w5&d(gU[t]=lv=Iis1~Ww諁$\=kY}"? v9.q-tI~-ZPӵavI+SoH7Vc3I>@27mFO
T;B]5Im{ͳEyNL-.EF'"f-mXD	QZ}"ډ?YŨ2n]`;NzWUdcyM6#;!P
,Qك]
jK}AQMWꘞ[b!1/}U׽|tV3+W7|ןNHQ5O6s	&N*җJy2o-2U샗JFú4_]%DAa(fDL&6_+t$%.Qϥ̯ʞX폱r?翘-/X+K^[T,2K.^v4;_n OCz[g18e&7s hλQ欛-3Vz	y0eߥ~
a־Hms)p?ɹ/;Fs-2,~٥K7-*BTB\m=F'ڝ	ͽܳpS>spc]@yvqyuf9H)S{*:do+ݺ9lwy'BS(Ԯgj:eFY$46iSk6hG, D5wdJ8Utw*)Nb접ϐa{YJuwu897MeܘV2=e0.U)s{`zі7U~A6SPtnS[I)ҋI+oT'j'dIp#D)>WG/ɎI㌦ֱV2e)fm}0ǸsRbEw|w5/yianQX˶3̆ЯwAGȶt^ӯȾuǬ@+pv#iim=(vԐ9:H*1Q",0޽3ɳVp[x<zY%Kk!}nVqKYRTL	,q)'vU[ЙZ&Ej 3%9-5Cԛ7IVE$TbClZkHSa(vy)lbb]WLW8V5Tz_^'z7ʒItb]W8LUuhIO||tp᭓41A!RҖ;)Y*m]=NiSW-(VfS`Tz
2ހ_1Ċ͐G9^lUp89%N֮z/ =gvbXSmwWi+2~_2@F!2?a$rhh=׻&.VE־yOҰv#.29_(>yo>yd	oC{xz Nn;eżM}+]21'$q5z;O\gĨ6~BzU͇5l75&?:Ye(>֢1z}"Nэp6HX$ 	xJ4KBH;RMuIrwSer}j'tK_٨>.B6؍&l~,_n-eNes5l2Wi3mmFq2Tז'FFQuqOad0K;+sJ'W^ڗIq j7\&U!|l:Y"jo< d\_ͱ@Oe;hrQ:Č!ɓXih,@T 760I1kU>}anP8(F=whbf֗cQ==̧w}o!>Z
Ntޫ	xVGO;.3l^Kh	_5
w%_=lvݍȵ`RY9kT\űBFo^*5aGN#% vX 	-A#R%WlbQΎTd +.nu_Ŗijz;[XMW2W
.Op0'#c|XQ\J'~/Y,m>qE4\j;dWn_rOÿ1C01>'SHH!lfq0Y=7/wmb4zsf6z<_*${tB'3V&Wē-]?^M#Zm8QH.JN2n*:o'`27ӷA$u;f3ڧjGcߪBߤD/m}SV]^<k-#*5|[I`}GDY4ywh`Ƀ6caIʟ]UozB=(C:y~dԟH)d;<d>Zh&ؖPh	Qw;tF9r}_`338BFgR*ButAUG:yuHO'WMMN*i׸lʽfgmE1eD>|d	͇'E^{kqDy|am,m(=%q?^bzy*\i~:B;!2fGZT5іq	
e^&^Hah$EΝiF}=j_z36	fj^o[E
U`&kxyǼLj&GӀ8-(sUW{UT3֍~,6	L-Śٞ6Fʞ&AƑ+YKLϲ 0Н-㙙&'S`ċBL.Z%L
닛ޕ=:Ixe m)g\Ҿ]/k8`_+M&kgnOxkռ# r؝F"u[/uoe?d+j9q'u8'ʘjDƚuhRF<p aoƿu׌Q{J~{fL^Ekp\=ȍI,xkӫ˷>dzLrALF, mΌ,#<(h#JvijS@1@ɍZL1h'3U,n4\A]Oڮ
y׉Iyv\yLZKzC	[R
]0
,:)@~lGUSF .sFy<wDr|e4".0 	Z]c3*{1esgS}uwIC~}"|ngi@/w5uݽ@kՋn-vTLVd~hR~m	ݟC͹}T,`>o!gbo³&24c664vckb!aɺMjtF2}plHx6ܷ(j+ZZw"U[J֪;ĨhE^RԨ=Bډ2ss>yw^}w侾Weӽ$ ٕ/!wROct"ZƚuM/ s'm8E?"dV9|i
|opܦ;qw+\M,x)Sd~nb$L;Pwrh2*R(4׽Sw%ɔ:If,
멶꾻K[{ I Lnh:41X.%B~nC{b-Mޘ'=7?]N
&ԯvp>MA8wN'DCVp+vs?i3U]Zv_ى̄-70(Y6b:G=6kr 9xA?Ho̶3iۗ#U)[#5֘~.9PzeLEe6wv@Ig>?KD,;U b2h%`J~
> ɭj[c:[RΧSL3&,h>^A}|~rG>~ww^6z\ڏ  E>}~}X#d#	/1NdqI5q3wy
<J3`儢#GS
j۶=Nr* Zb;fYg>hK푓;",D9J)jYVe~r<638[t?GƩĆĿŶ;򼉨Yu/f<mcĢkbz(m6Lztu
@AD5u	2RĿYPp(x6[u=~QKuɛSwc*y41+L;L[-wn64J
5kY)WNhO:Mۯ5os}
*!kxfzU:t'=UU,횚?*D-qXrntg
f q><Wuc,RVjGnxK:˩n[=xA=\D~+~'Z6YF[u9Ug5&VtMK+bvG15)@Y@a1v4VmU4l-`(qZ_vܓ8bS8FTGk8,Wo+q:l[dFo|]ܨ|#lL
[tJFq.$w=u{oyyL!DL[],nZaLl v<~?nô8s?W?]
W\W [$in¦cg-01F3_إs'jz~r;O|/Qm#U+yT>(xoA:HB'!k-᫖FlΆ-Y/,8SK^{tE΋we_D:2XֈUXWZ'H]Iyw|JwI8cn=)~V|ibIZc:T}ۄa~>n0LtT/t:bnT4G-n#"xӈ wŒe+ӜNU`T^׸@KdzWF_w>APp?Y*7a0F,{!Q[8=,*oM*v-ǰ`1AgrڕĶt@pҫ҉&~!ϸvbƹ._ﳟ%^2}vzyn0[("%$x/}/U\1.}5=%MpcHOAogBu34dcwJhudi)R(\53ueϨm,d=*T?񝘴qI!(NU3ݺO5c|(>oHG'iڇ67u+酋=o4&~	>W)uUNJFԿ8ٓi@U3ki)t{\<ЃrA3/%+d#~h:\639w \Yje:-x?ZhLjZj[vaFy@qHW􅶸ZeeI>Ɠ̾gvėRO,,ArG^lgZ۔f|3MlTCGt8v1k-,'[}y'>B6&F.k`r)pYN_
sĀpss3܀|3
24bi Wkfv@G`y9Մ7nL9v2-sY\M{";ٜg<2Z/%Vpdݔ_;v}PۓMqз9oW#}'|adZ+u6[+iLmxv
=/o|f!O{nX'd2)?E;5~RLHII%֩'oZoVJ@v)0tK([K YX2|fin3?ݵQ,(Tuv\oRܞΜ&_P|/DN*{nFq<8퓣ET,fi
\ܬ4}?pp8^<#%[h~9*C)I>Py:P푻y}L/dÇpP{^SalPk3ڗa)iX|sƚ?2Fx:ru*kA7[UriN=rK7`ݦEؙs,ǚ@p_m8P^zZL`nk/XW:wpXPbS3J\G;_c9wN~͡|8J8>XH~\ wK9@sUV?푭}<siuPYDuj	rSZ93!jXaofza۔'.N*?x[6E)kSn}HS`/X|$QTFJG%׉^D?638_BR\/d	+@vc.s~tP
P1-1JVzyPd~ɗP|" vSOK,κW(;dJ޼S<{?xB!MFxܭH[Eaj=g:`sMmxy0G+RfGy7*j)!|@,p%%d`j'%sm	 Q_ ܬܧp14G~˳|UqzRێeDŪ4Zsh)λ?rr᳣'aFaryf9kphM&m@	h1Q,9|fh|(!I/$w}79q׸uEN؍aO+gO7C:#ۆ-dW9܁cbaGJG
Ӑ2Dz~Euoַ=uQ'7xq7Ԃva0.dڟ8b6p;=&o3,$	 <-gnU֐~y;)S]lr+FZC1ILY;Idq%,QXQF? TKcLK2F"Qp>	GUL]C~#l'fٷs:,SB|#W`	 6z[OY#6ߘm\fF6n̯@D,Q18YWk1,_%0
|#=k.j닇@)pR=+°N6MXL?V+'Eې` cl(qgCtuTXuzeK񷭯>E=^?#fwWY?D'3Y_?}4Ȁ|І(E[LC+C'Tl'ܶi{$^qP я!gU(K&oǊDFT`λ0VbJE.ey[Pe2gWyOq Õcj{פ7'<','']!tJ:v?v&8hd\O t+pTQEӈl&_JIGج@Wqf^كB8NuCo?w_w8wc/ eg>rH
H@<YsXU0![xLÑTWo[C#FE{L4t'D*iʋoGьEHx;
x(d|/3s]+:NMt])_/Ϋ	e:??D"X	xX;/8BEnNsG;E7bq6oz mb n*!>L?\#_ja{ w79d5tk	NGp?3ܴٲaH|sCAo 96=#CeTA$~|\m,WAu%S)Ɇ=XiT=ƍD+A#/uD2}!qnhUxBE37((U酤܇ݺy'^UG? z=fCO.G6
9_&92Wy@aAibDa5%PWŏEN7rߪjPѮT?׷%ER\d4N&)Y0}Eew(6|k&[f⭀"#kMm燉'mŌJ[n'66{$5K4iѯfV$X>~P8~heWJf:J;"SϢw| hb#$URWa X	{nH0HG[~V6*j{+Ηq@`jbJ)@y42Y̯⼪7!l+P(xmV 
Dd/$}p0{>Kk$]>ca5zc%jg=-5H\s#9ܓH*S9>4E ~H"Qj>XZhjȚt :mCW-!VFI@V*ns
azRiz
}\Q%`X]~=(m\Yoc;1*gt}\HpnrIQϼK`p!f@ll~*_9YK#B3Ņx͉-xO;NC_y* 'ExѝTLi1Jc7M 'bukn9sҡt2M#١ZK4Cq&Sl^8,jZx5)tm5dg.!&B$gWm*XtEq{
{M:eX`Q%j 6"]̹%@|Vrݧ\}K?6>:Ĝ1"+7'[;BpX,Qdp<w/}~46iDrSL6$IN40]cP[GZE҇.l&#~D@ v<ֵ[^ڊj`_o G^R-=aM\ O\1$i)XŦ/,Egg&5Ђ$Zne*XY{ͩ)Wgɀ~fK`&Q&/5Ono(YID(:4AOաD6\"Ypi!/Z]q'!p,ҫ?>(^;Ϋ6ȩ|x8t޶PmV$	ry{[ Cv^LCTF>Gw9}6X&I렘zHEf2ykr3RJt4X&׏Z#F=8BLS w	)g; k5*`­o=|%	{E|,T+)RaEzB~knM:Bä9c; 
R6BrxU yds-Y0ZrQ'QЗτ:[ a*VY4g|#1bZ/S6nOǼu>aQ}KǦ(xeѳUSL'uA49 s+u~PlQooJ>FXaB^kďǨ;AEK(o-|e'n.Ueĥ|&s6JKW'=˥nt
]Q!3?]yFmCGza`Oo*ޑȧnϴ5'<,"*iFFx: z! i b(Ox=Chu98;eNuu;c[f)YX gXJYUoP5ƨh_'W		ƛ*1! 8^vǟ[nuDwz1j
j]ĢWa 9^"nތHkLsEă*6) JQi5jC*Ʈ|FLkZǖ6Tb9a²z5aOϟM:d{hzKA>O^.@$WSDvZ: %A鲢^9*Θ24_. ϻܹQ`ۥ*2?sq56^>d1jސQBF!=	'/
]f.5O),U`)P0ꭜstҳU^򴓹Q1O8PY'N/.gŷdYD1>|Tàu}&i \ %_hx˸WuAmiIXȳ}wBv!,B/G 8$O;n\böz1Y8%+mzzM@K<`*9ʳa	>iur_O"cCczQY\hbejتZҴqJTVZH/]k-%Kaiض"˶=a7"NiWtHN,M;Hq.rVϏټ.SM97FQ*ޢ 燼x鿘M4hRP.WVV,bs]IOC9ʞ{FqFz>	'~k^hUջ]SYjlkܜO:y!gt #_})
#b;9	n8yq[*\̯OԜxQBqb@(b|ح-Z*R|f pOee$iT
*5@ŗ|І{xGoܖ'ԏ60ތ-sZ'T*ô8c0hb^N!o[ͩXӾ
'\J`Tܳq@l0m$}ljȾ-by,jH
.sNY9lw89}	 r- }bzӻqƢw8@O3p/]|b.@.diOےVHN㴈n~M̤vMDκNiiO9]#4f܂
c
!=xtV$s[wW[1,PfK06=4י*`$TWA1͘>Kh;ƻ5(ѣPiqkn_ U=TYRAWIzX' A"2"g\`'øxѭ݄u@u)ߖK1m"X%V"bTbN0;pm{@q`6)0~g72$m|?yhVQ=e\ })`*"j/;f]d>2g$:
:a{W"aטG޳DW`xljˣet,K燌ں<iuOZ9T(uL.5,sN+Gt9"XR*jqO q&x=";]Nĵ;ފG$ƹ.M#\%evE~)̽:	oX$	섾24;wIIƪnJ%R8Pzc8	T}xXa4XǼlZe!gyPlJ		PNPtTJzÝF%8k1Ћ[ϾqqAC_^Aާ;trgl'fQ^IQ~M^<ƍ3B{<hx)!2~m1	W;/Orqٖe`O3OHÇc<KWac$	7$+ߦT`-6eS{C跳](Ĵ4t p;iv:fx5	FEjR]-̴|j%'; pC1|	rYB!. 2!6E$U.9
^rzNAǍ>;"=e? >|e=%Ϳt܊TIE˧.YF >e:wO%4=]bPj^86y:LmA[rJ*_:c7oj*5Zi<BzUH=X8zD9Ҵ9>FV[<C (Y+\;nLկZp)̙Is~;0=.O<	|!rݣ:ET4O'5jZ]E֥O2Sq9q=mN<cXAIMlYCHg)nYŎYScӧ[8g\FLsIF(5J` p-ȯv>&ܬs8^qZ[]^Ô-BȅP6I>f~XEZK>wA#T/I՟"F!jyCSABy}!MC׹6>lH=|T
az_/)O'F+j+mƫ9+̧vNfwc/ P)*ת]]'ͣFxu͑*1sr3zu,vņ5nKEkfdS(ԗw~9"9
b~
́_ P
M!9Nأݺyxǐq դ=Jr؎'KUc
٘>t ҧ$_z|Wqx"PQqA>96n"ϠPJhjDuF4{^?$RTe/iMz8rhcz#xǸP5іSvM_3Sl6'BidK7^9*.S0q%4u.Tyx<{D>[ȻQ2a9ݿ頟Bx6jRB~,=w쫾Z_㨾QM9&Z4!j.;itsG܋lȱ_tS	8^lYR@.crnJ"=9,HGp[sssM`SoyH	V-GYahGB=]թwii50^5yf;Yjm9\~$AXFVޞ^Iݓ~5b%44L!/i)8{0ט]wY_xǙ/Cm_3^vcfHZVٔRwBTN(ݔWi%%ğ[̵zt˄6[P3vZZh,`3E9l~zن݇?WzTN6c7ħi61'warc|NٿIkx$b uk`ڿx҄Ǯ1 *ޝ~"Pk::GVTyO.Gr粬Bh޲=:BBq>ұ(e0idb0.ǒ0탷(=^.Sic\3fy'5us0nyHxuJRG~Ք s"iqd'5x<(\U閲g}=[:QALhϛco,p46	
4ﴲ^[Uj$4N%;XLbD$2^[]9GpTvuU$Eٜs2B'2@ނz,@@s:Mg. تfQҨu6<8:iO"[EL~[e}$*.4vzZ;p(yuK^Ǘm % QFW`AyH[iUzT6Xdtel0~VsbOZ]+ۑ&K!VPl!\JFǉ]A٢T0y}W9ЇS-덺T}S-p.rWMMjt'I	fUo zB%?qOuudltƛJ3MZqJ+Z8{"G5CFRߓbMQ5	v5ۗcЭRNg+ &n}r [n:)j썕s.=eQxY^8#XF&D$$|؆_I?	Jڔyc=ףZy2<JX./g2\IQ\0GC7.Mn'bn1F@ ~!UB NDXSY.^4V@,Ș"&lYÃw;-S4ՈX|ꟅrAZF7<{z9ZщLPi, $ೣ>z Q$p){9%u!ZQiH#1I;Ϯ'j9?PE|R[Ơ8<!l3NPѦ*F`."f{Kfu|:;Z8=Ei1]h>ʈn$K/X635/KG	{murhhg̤.-/.I㯌tIL<80)PCHoR[OIyCk*Y%|އ?7;hC?9~ZJ 0v3^-sWeWd%Tdm!,C_Ow{4[!  8q̋`M{~9&TB?Vq*=үRs(5F3j+ѭ$
NS5$m~/]F[ZNT:뿾~/e37'\"x٦
6$(dB 7q"7Ima\g+dk(D7o[|nbV	e9E0A]Z3-iEj-kzddsV
>BjN%wJT?8SM]]:/)i?   ~8W[dmz l^ yΝV8Upl͸B>⓹,;O~Au(KiE\wi0cz6	2jjM)(UAq1#Phς<Bg$az!ܧHQr2Q!'oH'ь;ͭ(=O{GMxUXVϾiwuޠ^m:0Ǯ(ox1n4o/"񯖙7Y_wTAjG=*I
v1MLT8? 4ZL7'+-oY$\oz;ŏb#S$9LheYϒbP+Ӵok`]T/r$Q#BM)zd_~>4]fn7᳒pWYj~LN$5a`ME] F^}A˧lIHrh0l~^:өPBo-Z;PSĊ,6$r@PB+܃ %"B);}# л80N(ٞ>$ |~I$\*+"h=[>J?*}D˭6ls]L3_޳ƴ-lgy<?5*M&bo֧ED]Se~Lz?7-8ȧ:<øHii/#M{nؤSkaa|jxVw6T<7y!nC{Z99Q}˻ J fl_	8ݐɪxڝ<?h9"Bbs*g36Qv +aZvKҚ%<DE,+7yVZ$W `L5
EoF, 禩.qh(t=Z=A {1B '&ʆ9䫥',5J4ᕁq[)eA%B˱fb_OeOMoH.0ܭ5Rx-O
lCčЁK^"]H뺭oBU>$1wd4|N{I`.y7ʛh6Gyc,c5Sw%X/`$*4)@7Ӌ+@_~˩%V$C쇬h*7R_A
=ac#x-?<!,OBǤIqڜE=~aE8]AMN>>ZBJ-j<(u37[)[r ju[ETO1o1B@uvtb	v~pueUs܋{~}z꿚Fyw#?{d@#"g'oqxS#	5۰vn3Z=LKmo"xkZbO۟>2+	0#H]fg\5M} yW>{`zsU3Z:4~o4'Ayu4LhCF_K~	!}H4M-T	hFl>|a8w*{[qTM}~4b@,jҀV 1np &^bG
1(˹*qXR#c+Vtn!>NR*--gE߈F=oRRcуnrPGq8kjw\;⸘ɠTްEư߽%-+`B%t`Gr$_-GU)uvB,ٵ|t9C(&! ~Pqл(F*^|vG^A~ќ24}-aoCV*Fד9?bI>&ޡo2;!<|rLjɜz0Wdh_L% ;o:f_dޥ,z|uû2?8_Շ"w. z}tY_ɖk{: j?ODZ00%928,6c. `\Gr}ivYN)BQ^cKuj_B{O>.3!1|S!S}me?s&ǆP-+D3	+e%밸G<W[%`,வֵ)
0"?e*9o;x)yF5g!hˊNf 6;l&uSy9AJGa p?0F8$Hܽ*]=,tp^vaX2-WA| _n.zH!0t}"ؐY[q=}=3"!i{aID5-Z,N"^;ۃ- &]ou&x e`u](d+9C1MŖЫMbOjercxpӘ]EDs@+ح-8ʖTUo6Ij
ύ=:OyoEУ߃՗Z~#cz__{`L-qQT4dc|Ml$}a(f ]
mҩ0y2)?Xn+%mA__IܧHS(E
ļ=+c6
v3D.xRwkOߕ`}J06irUPӱו#϶Od\X	>zۇMifј̰57U溣nMlhcXfBi
%["XBnɈoLz^"X/"tӰ0W%8ބJrK]c8*W=!:F8]2Q%uSu	p?,&ݘ\t]PbvA	GNZ6/W|~VI	p}rmom~Kc6;L'Ta|N X;_UÊ<rOyHuM1<*<9tOp^f6@0tq̲UTSGp#GgCbnc vFU#:Isݪdu~q+ƽ.u&zrmYCqxQM2kޟ@FN!D{׽dߥ
Oznp"ݜ>E^_R15RC<M 9tZ>WOZR#efĻa1fKψ[֠xBoM~uQ+~jƿz+}j;آ'qS]K
::;ƍq\
2l~_hrwgLiʋ`m	lkL! >׍k|, 
5JZ{\^Hmb
pmoO̺idUKIGPcV`p71_J)Iګx*P-[jlTMnni
-P#29d#ҵ8{Sč-?YTq肉nKZ%ojz/pSY2QP PN	]Bi9yO:yYZFGTmeRq]#Bqq({!	^f|KCxM t
fg\*5ڷGbѣ7u>[<<n"Go/ .>-}F\{?^ޚFjFD'Y~z"?XzCɣaÓxѷ)M$sOh[Rƛt4lѪ *Eڃ2E¨e?%?4to;	kW[~f֞ckf]'JBagy8@''ݍCD4FשݎT5Ȑ-ޘD}wcu[5r4?h .nڨiCeٝכ)
U8s|Х!Ws*1(8gXNVP}˷4zv
dӵ3dL59"_1^ <,N3ٕv_l:$2K*Nw"&>L%)M>Z_֬"VqYcC/ L
v0%a?զQ:}M. Wrӓjb?QM~]h-( M7)&b HB(I""%ґzSzzMBs{ss<+#cg֜sENǦt*i.j/)aeokzw۲T.Ջm{mnoB%_G6M^y <bCAw	НLS /K=듶bLI]/SazqP&.#b#~|/lc(-\4cxWWgQfX5<_6s}VlÎV+l6DҊ>&/Yg8&6"3!Cm/ukK
cw)_sA)}#(|,o]ۦŎB+M;.h6eY/.J6,"8Z
X^
hTAlN~'= ~Ñ*efq35'TU%ğpu&Z=Rv%n<K0uL)%񢈘WtOju;
jR	:'3DH0VJ^q̐Pgqujh6{%?+7Hgו%AeEj^ۊ~#冥GJ}B[gXSddsq]ۂki\AƮr/x8i`3.FMuw[]o-/:~䲦ok067v>Ԝg.iOopQ,P9W:K{?e0鸻	NR*k,]b#)8ui<
#V(qq`3t"6W4yU`0YZ,ƣ377QaZv9JZmʹfU}M+B]jjRq'%3P\+#^gn	w+".[d zaV
EecpTu ?HˠkO0oV&vU;):I'npk?խG1PROXQl-@2pjF0RI]9qr;-n	jY&%ǭD])mY2;J]w`rb='aO^" NwzZho3:9럭v/J&3>TeYrTJL.ja˗n2qe7zƺdMtxSC n;1N%010bsP/f<{5&)3.[8N	mZ7,Ȟ/5odCztO|oAĄ=~&:pK@H^ŕt5U<g%(+iYo[tT(*WuR#s}f'y;(.B}3]ܲI6m`qp55\h`}*AgAw3hJ7zOT'ܝ"e%%nkK;zQ|SN$\1~sxzoK ^QsN4?}wX%"rj$F@N|ߛq']n_<F^ҽXQJDnٮVTb 2m{(6=O:kY;^i+,>$Rg?GIxd5K1%CC8I#QqaNܪԮ[z/t^4"@C|NyOQ*_re
l(Y9l)*OeY+ǭ rz2D|Ku~3;}jjbuiآ1e+n
˛}`5MC*wj$v_YwXm8C ]׺oAV9_	v2Tk/>pNy6*U|%@+cUu@pɸSU.LEmN	E(B-pj#rZDUPvIN:iɚffI.*FXD6h="_8[D	غΓ>~a?^.GEDޫ,8ok 9B<W;VV
-ô`Z+P~cD2|pB jsڂ\ =y'Y7rE-
wn xHMLrjڊ\2wB.974Ke4yGQ̈MD:6"	Hqf|L֚˦ n}.r`dKO:zIo5-Xθ &'JYeLYPkd':=/QȬtDDr8 D~'&2Z^~-~ḃ*6#}S@+T+JSh0`)0>[+T&VN96^#H]dPRNgjU onƁy]NU(R&1)yo|6Ӷ&;1m)kc˿rGjN7w^K$Z~+jL`CC	-Gb*I6Ḛ̌*W>$fJǵvN+q<dGˉb(F8Z]~+{l'e {ϐWQ( 266Rum@!#nklIK5qwyOOUw>1b&&Z8օX!Nv?'g^Yi1(jD\ k&lѶAvڄjWYTb}|byӢ?G-P]Z cplguu iBIS?cEoͦqM/f:rTm92?|_2/Iⅇv2ql'2U?\oP,E"Bt.r:17pLtl	M=))$R`Hջ}iQVq3xiHbt4U <x!;	5H٨-8rʝIn·0M0௤z|	}=iiߔ41|VUtu-øVUBȟ׶	fznxO)bgl`6xnj$=H`xO@o1g)B{PFs3_^%9&Z88~vO8C_?
]5n#zjAjONUt(qO3kE]@"6Z6u6EQo.]mG-9fv6ǩ#:LG͟\}цNx1}y*(/KQЭk	Yf?sLNߏv]9INl|T-83?8n@eKsXs}3?*T|Ux|K?Rf[U'3\ly9:U8Hy`8}7>Bgb4&¨~@Pdn#<>çB'b_Gq_b1WPg?"(n_ǡ%WAsb_u|ڵ^Ss?)ltND=6De#$*HvU|:mۓ>ZIb'v'R@PvϹ;|5Wdaz0ŧh=ʂGw wc	բ=k]"_bL{qe6'QDU>?}<>d(\	0fqsB<ަlP]}u P6O^Tlh	LӳN(Zw┼$^[Q<uZO7l6j}iHlCFzKhݡ7΄{\5,80-{G1]=Pr>'p})qW~{3iK`p|eRo`Փﱭ.=YxvNN.ɫiEjq<` <W~4{M	x9%aK%+"x'pjːRw	YA~ړaA$RBinV&֮q
|z~)a0elf=v/g<pcE(Q>)_e:2\*	5<
w~hF9>wOcZr%,Miɬ^R?<w9\dmS~/呹
G߷n$y T7^3DvSQFAv`ȤI#oSK,!$ߊI~l	yg	*W!R0TM_ΞsE[7-c:2csK$AwT^wAØ;Iq	!z
]u<|R[> ,36xh{:m"r#uVGR	;MO[&aymvx}l/D3B"͂*i&뭄m5^"*/]Zȶ,,۾"~&esRw߹V`!3(/-n.q]y@ҋ&d18PApTן.0Xd#PisHxm_
ԼW3SJ]%ǄS	>	-^C,cŅH0ҺqNܹAOďK
'}5>vOP[!gisiJnAHzibE̃!܍bYUq]@卹blBʷEp6މ6|62u.|Y4 n&ՈE&D?X%c;:V~oG'? .QsβƉC`R)ٱa|	xcňPwЭp}*itIL{7Iߏ-Q'QRo|,,Gs'!܊"?~6|V*/bR.ASи}K&']BAǮf=F8gQ0q\Ϊ>G۰d8'p97Hs\n?,/u-.[LlNΛ/ggWC7_ȭADyUb2D[u~R~UG#[<W	w)<'nynօ(k[u~Æ\sК(ʰdr]ݝK~ʆW}_<w$w![YA#G}oo.3&|/rH
ؤ"H7d =HsLƬ"ǲz	NV5rgVҲ&%ŎNmz/چ/LHf~@۲q75_šL+~'hxH'H?ɋ!~M«=Jpb 0.¶kO }apqw).8>>ŴnͶWu9225t#{(sfhwI+to`TI=Gqa)gQ,uj0?T\EzA9iJ"^6(B7ͽ(OF!jqD_MA[|+Jhha	!}8d?%(z_tفYILLLHF^a+1d9T|4rUkh~2DkNuL3~j"AM՟nTa̢ i2Ng\ZHGI2:y0;ߎ,g%H	&{  AA7x=zfW*}ߌ9X}'G؏\fa .P:8]>t謫wDݱ&I,Sfo򄄬_FS\{52?:шo1 W>o&P
a-ׇMZ94S_5ma.)~ǶysԵ>QZB2K̬Mf-Ԟ+:@G|	eȏ[\Ș|<tg5 ? @:lJF3ZYWyG+謤Suif
Y2t'kuϔһzq{<}_`X_e34IRܞ=ZwF dS?n$ 6D&#F+D΋rL?̥EZz_@tZ-qxvL
NALrml%t ٗmadʭʟ+ȋYyu%o%|-r:+K=/qbwZN?M)2Ř*_D4*]7De`T{#DaRᙝ9G7Yy
vhqIB	}
._ƅQ܌?a_#[{~"Uppvs {4ed+%^3P9͙+:#K,+;Jb JuS5Fa:/a*_,jgF1Dx?=Wt> XHvq݋/0E:!1	!b	~JVoe=haqd_d)%hӈS
mL4ǹ/[x|_%tbiA5E4"Ɠ$ܳ
m`6BZx=@gP)ܳl+ȸ^f/+ {ZQ"zr }	lDu0ހft}+{A&XR0eMD%>־_THhw4wxpX<ۈQH#
\447~bW%F'Ap:	M/_Q"i^0e{0$RʓQL Bi{\uqκNK$=JL&f?ZSf.%^D_l4F[^UjFN&'~%@u"78A}[I]g0!1]Wj@fv+NǙɃ)c*  e'e% x VF:;z"q V eXFmSa@ Rd~:e -f៎N>7tڑ#A}{<Hޡg-7zىH2!PTˣwxk?ľwB|
i4V~z<l{^=&;eL;Q_l޾B( za9U}%km$xɝ0qM|\HN?#qh~lh|+4!-H6-&8P%}ALwYϵh`%=M_fALd0wOpd||ylZw7-aCeaYltg'!nKXkH^Nlimͦa1,X{d:=R~m4Uk1;<Թm)7z`4zjH~9U]G{ 5OtFȏ%꒞$R#X3l-]y*Kɀ&Bb~>`+*5=rlaW,Cݨ?ve6{jx~QXJT%$+|͵Y4ᶢF%o˛m.[-n(In59/E|~l7,5&:f$Rx;5Uj-&`CsgA1ZQu%?$oT/j2V E}x'[*k6X]ҿ2T5IVy>lйXG$/n6T%${Y;*$VDѱaF 	 X3|_+?z*ؼ[JWX+]= g1jT#Fjbb8tȊ~n*3{
 Iܱ%@Pg		﨡6$Ul"rFp~ʱv^ſQQh;S;=pEVK	y"XY|ylɧ{p&D$..{1l y~718	+%~ckj9"y/͋Tƀ_ՋK JI< ѴBۃA([Yn]fDy2~.[TCPꍢۧYF`ɋ"B-r~)%9SF4T=A@"UpQnrI'J|UCpVVjc(?0x,~cP׺`454v,gȹG,Bh-tlbּ 6a0AtoEMoۘus\2KǕliDja{IqL,zʇ*12N2|PYxmV@"M"Ʀ:kp;:p@cܑe<D1'1(rI[U4^beb^ēv`< 3ӵW}]o|B7%˴nIyl"	9%8M8`diis683kV1
9[Su~h?Ϯ{1$#eFwg:S\JF~
'&/֍ Vq榋UI;^ԭjdE*|
zpQHgW1HbV۠=i(fZtS*(8	^WO^:9Cߝ?^<*s [0RPCat_C㘎yx/[|X;\NkԘkgs׿Ӿ6\L9)I>B_N_´"Y,xFh֢hW*P8Oxl-&:m;6ӆ'YՖ ;	85ҝsE=D%%̚B-*xC4#}F2 U7;mg9\F"KEv7kdY{/zzi9>߼ЍL)&	s5Z9[؎ .	NѪ |h9&Wy],;4@·k*~p`q
eQ:5GPۨ3%Iu%;eUbF)?{ oStܾ@FEyدYWqй06tSu#ĺax2KB	1"TʈYE6}{
Z[GVY
P7~<uZF0(z_\B<GP<Dﳻt8IsTARE#JsbXb::^LؼT2w	=L^+{jĐZsSAgMn]y~Lq.L\=ol[]QqRKn(^FRn⍴;`}6iȟtm̱~>)LjNH30T5"基nHC8~H<K}ZSQO
}}Z(2c" 	p[PUbK W!r,xbcssat^t1Wi(iGbup,kFݟ]8oQHb !d-d% J!irug)VX"HChb8?Ӂ7=NCmŔC]jIX5du+VSgYg$|w3~FiaZvG];4kKM%b!+=_:+n7)h_1gQKdٰA~oqz¦4<ej0(MDm<BdA![m?a f<Ȇq;:fdFP%ucXt=HHy#lAC{I@*{.D)X?q&N@T&K&+o*ɵ:yT.AKO4 <Il^T<-ig.|]Gd Zpk$fMf@gS  ڋc;U2pת]6Od ]\1]x='&א?*ea>Y3 Lz`DMܙK =\ n2'5:vd;up57 -ɦýCc0V1\$]U1}PPa&lW^ᚶF/fDaD \G&}+`۸`Kt#eG/>Og+s!"/dcX9n&^SRY;C3܅Ui*4~S4I|TUo<p(p_MdMnb-<nxq.^
MJA0$:-$!ҁ'V}y!&%'y/R}z"aօ;w|Ald[AL/lzIa찈cW<+ֆL +J[?I-%H[/e*yGNwqv!|Et]|ցS}fskN1J8;r-u:eeY2b~mh8v%dDaOdJى!BAT0A*mc< YHtǞ9򎾻7kHw/E69X9&aNXUݐ3~	v0%:+lUT<Ÿ,Z~`l6Zs=	4o'?(!ha^L09p6QF!HO~q|
Ѝ+J6l6L|&˒OxT}/͚~]R28Ej=v]TW:$Q`a>˘VAs|9>p{a':NwA|4<PՊ?TjY;$<IG)c57Ҙ 
_5U?%ofNuljҭH`iUP_3la6f㯧nQy~QO&l''4=*it1Eh;fB+zF__l#TeG+@E*+,[h}KrfܢP;qn7mL̯}2R=R@V_[$?b \0 'HhZh?憕>nh)(xl.3[+<>>*YTZfPujpUv_SHjc+ A!kGM o|ʤ0#aAA$ڱE䌎^kpmR?;%-K烕$m-ؠ-m{OuXu=M
B1'aUŚ-ձiH쵉y1bdfFJ'?mjO;G0c's=_J'D&ݑHؽ,	hTYS:~}!(z5(@\!B/g腧FL.HޜIFl[<s-FQ&i'UEďMRƿ򽞹oN:#NFkv/ -+^3p˒֦$,24H	
cT6Y{cx3^KXӘtD){xʚo'I
xͪJy=wF`l
^dgקOoK!ڮG2[wQbs~ ւfФ.$02)q|2&8	_WGs;zJ虥Gzq%tu5ZZ9H	^H[w`QUp&48*BW}L?9NjTv*z#Vyָ8҂0Ygy\Cwn|VG|}:c-ԭ`Xh/n~mgcbZTVT%D:(oFEK +Zfi{ 
ct䅽T%v9{}	H/?63`F!'BbennYLc>hqR⺡"tx3!ߣh^z{aLX/×.^dSǞpVE^(RZܜŠ%Ӥzivaw@=v9sH?6m!))$[<~r#rs?gK'I)PguTφ[ѫEp'2<8
POE;ai!%Q?.҄Cdn16C珁.ft\dB卯(PlR*i{(>1yÍٍ+QӁº@;X9S=hW>)ﮉZ6JHM:/7xª?@ȉryEiG#.3A>&=uj[|G><߫Ce/!ʤ+̰58C9QmOY48ԨʺA2mTJ<qF9}\&5֭$1{ںF<b#93zg=yK|Bk	<Rʸ#LqG/Uft(^$qkmQx41vMgYp:v3G?BrʽOI{ {_.v[=-rE|N4Wm-}/[?N!yT:Ap±cNebXgx
SCf2U}2c2H,Dp}|TisjRnxL	aL+@>DZ}8A'_p
(3J&uWs8!Ni0ϡ;7cCGӓrfZ[b}L`Ya%
aumE=CV򕹏o22Sb='F BSC;[[-5U_k(,ʅZ IfISѝvSjmԊ]V.qpǜȷgGU]hz5^6n	SPsAde7aMe#cs1ɳrC??|+b]we?w~mXγhoLLN:jƓ̓;VgTkѬ:FI Pr'.e
j&+|<Y;tFA`;Ond׽'Ú
ʻZ<>lhWpdqxFЂ	M`
]u`ub[.ԗl 'exsm4Waח4G9Zǽ<z7aT:_ݶӒءP9Z0-A;p{M`}>09;7#Y_ ^8ks&A u^Pl_p},U4Kzm-xlCl${V;vgTp cz7B6UoZpFCXARtc@9!~"rgċja\xO7sԆB<r. jOC0qqdi]Fl2wVĔP.kax4/WZ,&E"v>G9NCzIUdXI0ڽV1˨lq:+>os*ʸ/4I%#[H,xhf).8vv6N=ٟ1floz(eC&O,n%QGWfoyh9zWJ(F>x$%?HmJbiu<Tʝ:b `}3 /0eg!wI[Eb3*bq	24MTȒzb4|$_WANSFڂȗywGizjlzJ{ջS_>TY{8bkS&WcMܾ.aۮ@XfpMZLz~Eho|bWhvxwj㕵t8@$݂6R]qGʒZ^h-vrj} tjnαcv穛Z.iT,SjN4qjm,l=}Y1C
̲-xvArLӧ=:Q<^G'ء8+jWr	m@C!5;JJ3z+UV{ϗS Pif0ǻ`blA{LC0﫤eV~TU^ꋝ(n׺ӫ}A*HlV@|]!6ݕg+jKR29, qEFFUdϏWh0P2)IRj~K@i .l*+L%4wۏ=pr5yuJG>o$1D 0IӁP2BN{m\	ײ8n^%4(X4sqIy(PzMg}5cXa5OQ鬣½DH10c/-зt@\ﶝF[~ w	ݝ7;+MMIat	Rϴt^[P06GTgϤｨnHU 9U'~I_ g;"qov]0٧"ƳjKU[ijSv}J搶3.Ebc/
"9Tn5/W$xnJ~ƫ3cDJ]$?)}<]XOs--H 97TX1ϟ59_MuQGY7X;8h8%vw*vdDo3гxH DZ0Iϒʵ+Y}	`oAQيM)= 滌_ퟅ\STB{8-X!\\`|Um\]<3v6i!̍7>襤L|Rsvؚt%0琥쯂g꾦\V6P!s2;.eDHfZ.OuW'dVۻuP04Lyb+q,{I4_@)V?r~˲FbLHn1^#9B3j2ڪ^%2#Kfy#jHAJ$&4~yvi"?ǓIp1MD<-ڣ`Ӻ:ҤGqTv>֚FTaGzLTs^&lINU9N\[ŗK/Qv`O)%TkMn dSl3QWJ7T4Uhd}!?`. n!/ϚY}ePJM4H_mNިu1$]VWgfa138vZmrb~2yXi	)?ʙl'_cm"Ku%8Gus	/Q'duW)
wCVb查9`im(5}\c8ǹnփw=?A#69檕g}RɁY}R"߬옷&}
b*jN/y"H~t$RL#>" QNɌ]O~IƖ~g=TހB?̲iQz>J7h4q,ȃ&=	\(|K8beN[?5dM^I?aFK
q>m5Ew5ѽFA(EH.DRDDA@Ң "R"]z%Bo {yνw6{]kYob,΃`p+x6Y	TpQΎ%PrTZ<!a,4~*{W8FBk#^YteƐH.2w( k╧&ޤ!#i2|bv6^iFBAOظ9_΁ǞHQ3}HoOW5,gR=Bks@M\W_L:S&i5<ގv1/B@<9G2s|'A\|Kx#m̯Ƣ/cirtTEP;o%:~uFUY [-Ê̼ia[ٟ0iQj8|bB!eDi<R~vqJ)PN!c[l\A?*I6Go:vBx*N_8!56l1'}7bE>c'vckÜJhfhNJSQ_&&W 9dV$~Ѫ'|6$O]aK2iR}rS~tb~ehւ[:2&\cn|Yz;epAb=͢M8Yu>*kOyEMW?&m{,v-q=g֟<#Kʹv6>O=năQRpM8	YiS:-C~Xӛ/9J-*)xMmċ=l˒/Vih2+PAzxͼcA[G>jkd:ˡ4ow(QT9ED{ju^[~z2^;6gI4<0cSH
$q,`Z *4_u=3p8{ӊýHx<tb:VQaՅp߸pNӬ5aL=?L'0Ez|wa12MqH}9-W'gtC!HЄ1e)qς![wx>x y(2ǉCnj
lU	|pI(j$uuD㐺}אiR6Štcf:h|*vf֗tƷW}rF5~=mgPΜ(؁.%jPAv;+7C|IB&zxarPGE	b͹ˎ.G)$&/~sEhڎEԅٯt	Un
-ǔ-*t=ֺ).xwcH_|d0`F88{h]lsMcٮ\4R"U3IBJvJ$eTQ Gy-:?zzʫ<߹ 	쭻ҡxtSeZODכ#OhmLStf~	r'^$;^WQx.Xo	NE]05XjmΞ\fw@¶Vyh)cDԩN߿ۚZ݃;o+eXWWĩ<,qp*%@{5نkh_=ԯd$ױM,kͭ2l6Gum$F"ZN^gT俨FF8'@6 םF%>ZѼ1t{9v&B[l%>Sp\wRRAtd+TNµ:XB\!&Zr'},T_0g^*	)܀u]t׃OZPSe%wz'+=f],pw8bW*ɣ,Y[({^d5~wBjTRt;@L]ky!>0ujK%8L:9{ ?zsKG3bx2[0:z![i|`S^Cx6ƶ/콺KP+ڝ>Yp<(xXsdv@6˼K?(ahBܤt&{=Hyz	ùi<*vI"B`3'#I[`N*x ޝaS}Y̓-@arxDӗx?H46!g5G$̖~KSDke]qb3[7['f^|@{}_Fi>U6s:<sBLൖ*jjkQt;v1>v6];EW}kӪ~s5Lcu;k]/&&lYV*<Q!.gBu#Sek<"VqDi'&:)i4hՎw= CrO"b	!5sjrO펙/տpz{7fMzGo`*acMO8}}s	"$SPQQ AAw֡h^jDj?Jguڿ2Ւ"E]<A=7Nۂ!Q:B4^NWfhH~v.Zu^>Y _n@p@iڨ:9]6q\shWMqr@PreZZn)<{ G~+l!8t7?K>[AT
yʹA[MV6̳>+[%X2I~t2VxD^&lN=a`/C3SAcqB PR-i(;`ygeழW-ۊ1+vL^cIJgA4S5@Îqv
H0*z?lv/p%lmg>U9DR /SiZן۫k_Ve_]d_PD\]lp+&Di}RUKU艂[7++>%/n=GAÿ x
ERR5o'-+Q2{|@8<۲ӷFx.ơ =:>ꩮUX[rϳT
#<ZH:6 ;$&]~hDFY1$
1j+	RZiWAɴ;T`L]٦ϸ^n?\AF+꧙+V/_ {mCӱ5UvHjrP pEbҪeoL%DNw5p2 挲^Wu 
tOf]xn嘯҅+@AsK53lP t2Iݾ(~RJSۢlFoX"߷'1λ_4ŬȃX5x,x PB?G<:0ƋhM|?>
$*Xi\g
@#|ʆpA_P ausn6$@=OFaMx7@F"!
O{i݋X#B{jG
kMiȔ&<s @B?zHTAG }xt=́PO n991ϓ+NΡbdd?{~L3,x
sS B$2{/+4ms7Z wJa!7O%2[՟vꮎI%C
-(8@gk,[^qOmF|;|m֢ks?%:G՝J}""[ȉ2l,3zVŕۡh$Kc:P֐+Ψ|Q()^f=$Ŷ_Ek~6(p΄]߿	:{~`+?9SǳPY;n@ :}G7h5y}˼hh^8
q+gTUC	5+OnsqSy5'G@0iv`]
fڌz.|Ze;K[%IOBx'BCuu-W!c!:sk>x|6StYheBQh,ފ=g^9O*7_vܧjR&B-lRP%1qW
Uzzw!b{5s*"\t(A$ADO.PV*1g/x	bYR:9 57l~iYo,X#r0{ٵP3̪̑%
kY?Lp2ӪܨD?LfP9%GlK7ɼA}¼\BPPv3vEp=7y#K_qu;gv6}.'K94m;d6
{:Հ<j̞ű'ƵRi&c FuoEO}bhiX}셽~&ZJAh6۔>N-ً}i,~w֜\Б%+y&!UKaHl)BZ]VˡVcP.
޺{Պz⁛Gqq@u_TxSk\Պz)Jb8#juA -t.$$8˥ǉ=WWPPTL~VKkˋIm!/<E顺ځͥמbً. ӠgƯOh5WrW뀮 YyK:PrH;ƾ-5HMuآsޕ&Ywγ\<w2П+=γ 0[ݧ=*V%jTyf]og'<ZSQ8|2m;GXBsNGHkzly;CZX( IC!&Arʣ?L>.՜hZ"P 覴X@oԲ/4ʴ~t|(ύ.Epb* TBK%`ٶ}INQW'{wo|ྈVw^F	:zȱڨI1QM99N%7;
bU7 Xht%>%nٍ{sxT
š߿-];?]ad:c\PQL"[:	*v2	
SQ]nҍmHX]5T`4$1(ے%E5pz=3Q XJA~S
wUtUJ|tLMx֙L$>E8'k1^Ҋ+u.&M>"Ϋ)[EԦ_Ne'Ujc)֭Pt"sAQ3v<NYm\=qd9f8Ng"?ϺHv1GsMG\ʹ8T+YAgY3u#~PrQ0&q?|/dn4, ךIzGџItc]*gc[hȅ%{|XeT!(Ct	^$q|p-/YK!$br'A
׬e`zG)iNe଄D%MP)6|&c=HSs&aDʮ.%>|#NeUfw@ctU,/bb7ߦ8:%E`*5		!Ryŵ)}m7
!ls س0Sgq<7L٥($AGb48tƋ	E"ćOQI' cO?"GR*JL!SBϽBT娕d]lR &'_2kBK~//U#=AK@'㢇Y2\H	+( qg9_%Q wIo1o1*P
.|=xrB{FhɝM#pb PICW;TDS>,U9$iQ$z{Mn)X$^¹l'S8E[Jy9CDL|VY[\uXmU_:vº8 ªR=<V\}}xT!j݁DVRDv?|tYᰡ'gJqCLy^k"?b[SGt`#̋	g.AFrxy
2PO2ʢxn|豹ke'{,>]I'ALS߽/.a]~>^ȭKۮ靾z`.˷S W "-n@+s[JO1ݦR=_4>5`(Ҭ?Oȯ#^o`Ŗi7sFȡ_ΗbM<PpAfJbZϐ,z2듗XC6dbv*n.8W۽`zxڍJ)kHno<8ء75h\e?e.G˦yyyu>l+e-)^}ZE#7(;Qf$iz͜ΚL̂35	Ң=in} Sˀl@pn/:F[6bz=5-s-L\iLE-qow8yw=/>N/
!1*0ntw 0
mE8O-xa/PIO -c*[|Z|aܝS
7jJ;0ֵ:^v>	pPf%xE3u`/׎?MB%rӀ(/..Jz6Hd-Qeo%9Wj}Dej+g˖kfid{E'Z}׀۞Kr$yE^s4-[jw6SY$E*EC]V67:ԜbB e#on|ι9ecmqo}Xw?Yt\ǢQ0%o8aLDC{J]lj'.>"L@]9/XBnl,ԸNmmB'223/t2@QPyCDRk
	A3ecXڍҗ^xp0[y)6m/!ځ9

ł5>V^v	R4Ae,O}1~Ƌ^i<4Asgob@$!_E3_^hѢ͢GTY!.;^?Ӏ( ܸvaqjG˟Fbwq֙/RG3A.=Jr FBhj>7B8uMSgk3y%C1Sw;[h):S΄%??HfwشFeݻ/qi}ODЈh&fmh Y1M}!JCۿMXdTW:]uyZ1D_?l>Q1w8cC0%C*)"'דx9;kDӹZ|a- #ϜD{~6fK*SLQ)tHk,4{e>ãΕ sNտwЫRlCߦς~_PD(<O5U<G:[PoIpufzda;.`/<b17ʦk&HڠSR.Q:l Vj%[=_[91h4˗O~gDSmwVJv;alguXԠt@;Rrrr|aeӡ>\E{qLfB@jIj[ëMedRM^,4?g9%i淏:<ǒnZn~\^qr~YE.by}
e=>(ݸ(g	MEru¦^-O}9~K?R=5(\EhA]Y]efwj}QXNcǁ{KҔqoZWSf}k93LG*B{=c{h	Fm,=]#ߒ?$7!n?Y*qw_[Q v>'(
0G#4;'ͺ|/RW4w:{J} ElVym`4=t|R`}VB҄X> 
_)#z/b{Gt)5st|rxLuײ}%}c\xilD,Uεn74zEdX\-?ӄoB+\WFjY|\Y8A{Dp
9^U ԙM`}y1!S*R;Z㬡N/ ό8t]~mn1CtDaYVFA/TVb~G/nm>Uتx^+-&Rm	< j%f	[kJgs14BDLw-/5
ڄL:m2m*
]8@`7m	*Rh|*>+!kpc71dR -ˠڿ15k\|3xA^uv):%"ױ;~"78׸6ZKRxnP{;)]2<o[JR-2Ӗ]fk_3x3Q(y0wja@C0@qbjzhrABh0(TӓOs`>-dCӫeUQ00]9͒3M3^W
t-;Yi<RU<ӱCA9f$T'?N'A'u">/}̋ ط*r=~o2N&5ȱ0]Ysm\;!Ճ$75RĜ9,K*e췭V9{!j.38T&\p

@aZ0-kc,izXJ\]#RqZ9_$lq#S/}s	sʔ.\
pdlcE,u*^	#yOJg`yE]/{׉џEpsyʢ> p	A?2#~?źjQr"՗n;nWپ]&7);W;Qu b&?+=Jm31q9ejbQ7	7¼ɾBJ|)SgDiZ>=P*40B9r64}yh.D(#)>Uܟc)Dm聦uվKS,LĭShXq:EnPiD2JTD&W"KG#r6@rȸ Μ[ =JUOdf~armEw~]!}i =|SB,rDV#_8J=yK/#ӆ)_L+_㟸6ԜŤ\^A;<nOR /{S%}`OLH4ӹ΀yT/~U$B?%ΤaҢU,e<%F+jMx$ީh:ڰP?풱^/esS8@1?aks	9?'Xq5ߓ#Xf6o졞vY̨K.Տ( IE$aմvIѾMcJ\&|_	Xow,y,-AK<߽"oAHPgpA _nH J{|oRɧF|W/_ D%ӗl{!zPĪaaUSoE#.T㝖gZcTx
vܷoB0H"S}iWe
TX3zl?xw,"Y#q~w:_]ѐבvGd|BtPPb?3ru:^GRWxV6'򣨭e<TIV쑦No;ai^MᗧUjT o۽T̹d --R-#F^h(>l5\
%s#d)AB[2|"N<>MCYW7xl̀<}7"Lq;)>>v`>)>nKKnq!\o33+^x<e$YB{V1Ԥ[<QeVq3zW?0U%jb4C/"g?j7Q|~3ĝUM;3ݜTwWi*s3=	K~Ǩ/nR{gΏ3bVGKismP6
 ^/M0gt tGCd[x] 	z_Ήѐs0b~dܗ(UW6A~H[F'fcIYDS~C[nɗz7VvұS-;ￃ2_qC:g~il_[4䎽d!_.wSIUKnbm9ŏ06NS?i)=no
qG@u6<
l:%Ϯ(@jZ,w
-١"۬y})gO)Fx}}=(*SVCUEc+??9]񌐅^Q0qy1C'GWņɧ8Aep
 *4M~h3Yh{*6I!~}yj7C 7~pKoCe{|+ j9wK_>ۂ/Q?潵?㷤rG+x+KF#/B/Z)2*I'D7WBD{?*%H ͋w7Vt)F	Rjléˇg!/qO$ Q
Hzk!Y[Gȸut#U+VlP=VDO":p\HF@V{K=9 ݽíUeZSB"
0Cռ0~lg\6P-xhf|q*ʾR-"@BxN˜ӄEeLi	IT/ SV{*BѬk ֖FrtYl8j/YLVL[fNifBEſk-2K"JO_򘫊G[mKC]s^+Aǣ`LGp5e%Ue57ǂ- t])uЧwca@#h{C/D?=Yx8qphwBp}J;%Y+JrS ;B?8!:G#W 1ݔ縻t>7lZR:7M&"ƾ&]P~s=l9tpXLqkgͮ-ިbWY-3ꯓ2UЭִrò/퐰Xwe$6c6_] m1ϼ_Uҙb	QEwHSPcگ~u+RVX79~/ߦ~$}1fRض^M|MY#fnLB,Ԓٰd[.YqPzdEP=Yq}%; 
g?3Òd.+1fWQ҆_@%asҽA3ݪ\|xlR	0nN}.zt(oCp{bCfL'ƍLl"[==6e Q{ $pC@qP(7?gv.+m|/N;L7q4{X0
P!O\Ώ?K 	ݽQf*byG=[{/X,wB7G`^d20Ҋ< I_"q921	11oLF;56<0!HhĀ[`B$y'wc9"XH8("K"([Ƥ'.͊qdg_6,| J?L团w&Oz<}+ҧ4h[GE<khwd~эR{mzOtZN 4;P߃jG*
Un1'$Cs6"Y4А!<zT+zælʙM7/pYqΒHHy;)'E$v>؍g8GΊSQ"Bbձյ^ͥώu֫Y~R "ޅnw<Cn3w+blqݣWQ_㨼6ԲˡV2jBέыS<DkB?GAȰ|Dj4TNqS/d۳dr*
;g&۠06uҶF^4A\*lTh9$;8oc6V5L}+ֻ/Q{Kt^? t|ݟa_*ԟky~&=Q*8m<jSMi7"k	rj+3pTO	gr7+ti "vH@wjĀ2W8-nUceﮋA?_Uڦت'`~k%V-=I8![tp̛ղ%Qfuq/ҝ?Þ30"KR !&Eh2D,=Mȡ*\l1Ls
9*Q x?ǲCy?O=I3Yk9+xwC)Se5ˉFVKM[PbNg%k?y΀&MqvMa4ψy.ؘ>!6x/  %}~hH
pInj.7ko15lxϟ(n%:#? 晓RA$~y{@UEBx!s4wy(LW=88Vكv>n~KEy^VG]F/ˇMzcveӼ{9FLB,:႘li酁tu-{w,ݎtJpEBcI=--&'N`}oFw\Ẇv.=HpwR<[W#.މY
ڽFKp(RDK<s1 0,'QS0Л?xvi/cwc<hZ	[X%RC.^_+k([cȊ8r ?<Z3C\dy4[%+8?[񬽇i,^ͷVOyc:Ky2b2,6Ȱ=1|sgePrRs+8pOBkphjslYjI雹o\]G\uR'+:CCK1<],<)(	,%ozL?UZ"=R Lh=9/M]Z)qK%=69ʆ{MOUs֩-@1k'Cnn,r8+&:uOh<5!pR [JJQw0yiH5)p-U=uh~%}ԓmw^π%UE;]&/qC鸌v@RewV'al$ӄ:0Q-Y}pȬl9+rtQm6kX*~B;poSk<Rgn3?iVgmQo覔Rhy
f#ոS Խ&j
:&?,U;D%x0voC-Td$r604ioyzve>/nx'dUo+M}RC݇3{-aN^&ڔBrxoA#zg2NUe]3qbTBybǴ~EfGSiy욏<\44udJGP6A\6swZaPs$%QλQg]S޼9mNfnoWQ<UmHQy.i^CBAX>])̙z4+l]Y{U1gwc֏ n5G+h7z/k0fkpyrukH"|+8L<IGq UPcxϘ<u6=넙ؽ$ږZc#nem
kKp\؋L;~fN!:M{UeNՠ)÷Lp"lE5R<[V>扎'puEܙ	w8uLJo_'yLM5ec5D? ",=ėJO.?7W?VVu㨟v9&<^/e;Y;8cLj_<;;\Ϧ]Z+~|	s&ҹ<Y4Z;7ҕkC%	Q|RBJޭݘ1*V_"Lksp4G* Ŷ^nliT"bJŴH]S{pyf¥iz%i5ޛ5^DrRS?A[0آb8ݐ2W'"6\lB:|jpǓwCLP>+#Y!M-CN,<oѶ-yѸ5M0.SSS?]TرlK>ňWYH;"qFx&2!	_Zs&_FB^8Jg\-9q	41vTCVDwVj)_X9%)h+/vsI<*T!_]܃~ԑ»Ej2_`4 [tD[J,F4%hP wi"#g
}k!x;drSا kQ ey}𝪅 rlr$!`XsF,0[
Y^x%.u_'`u
`QAHY{I˴薇&3OYsa"\qCLy/T;m{~di

(众Z
ٴ-Xu|bؼ,QИ{rt'*%bU>	o_{"&mnB_f	;ri؝:v
r:?yPw~/&Է.ë~d|b|Vh![ʧqbJvG k6A9E-agȂF0oEXj ~Qޢ̙<ʣ=0]E};d!9Ԛ,WPĭlH#;~54-/jm6G*`TWAD-h慥 }lMl'|+[ˈPuUB<҈k2Uv8ZMTN|nʛ~umڄP Md*d+$QQ]潉p4UVXVkI=?l/	ղ)K xqH) S(Ȕ!g&rh	bv4r<MM=cjqfQ/ƍ\}
~Y| 6c\sS͂3tldPZ:׹Sd|?kwso?ݟ?mfҴI?}g}Mڂ a$ٰ{\R~XUh$65nGID3ϵQOfh7	㈗?oVu5C
QRQJ"EPti"%AAZ]B:RB/	%Hw}3ͼy3̞̙֚=g\[a'ϠiZG&siogx@:/&/Kl:8-z($v3
>/f-U\n :AbZc_Qb#UB#$#HzIH~JaZC;u7o2_-Mjg2moArlSCAi* Y_6F_V
762%q&h＀m~Rk$ٝ{\6KOr`b5JfH洀UIЀ~{ƗޛG5ȈGHr-V.rRՌ3#񍇄ˏK.m 9	Ns%v~i?@eL&645ݜC w	-ۋaq'e20?2|ųBrIfL8hgm Cge@ Dݩ@#56nyS(I"=V+B3J\"=2o+O=W*#lXw570޴ګ`{CV_",թ$*M(jٌw+E.imXt@ fRmkPF%ש4|+r܉A\w)ծϼ}M|~W,oƋXӹL逬tǮg|mM\(߸Fv;קzwu(鍽c"ڼ('n\	+QF$LƒVb6"GFɑxmV#pioh!ܬZmABvAa,ʳMd⽡iNY9I>oPKA4Apm`\0>j$<G1M[TJ|ĵ9o&k>qC&NZ{>`r1ϯ=ZY|mA]a緫_df}Gx^P24bjjv\SE7JK84Pn5%NyS?[scNFg:aE?&Ƕ'8᠄Ug}
	Ng~F=_~^1%Z;bD<qiPpфl	,GTM7N쾷='k"rvhvP<;lS>;$~dXс{t .G݅vl t@rߡcDvA^MmJn7s6CZ	Ö!lZx\Lw<U]BcC#q,J	<Qz״JQPY/RL}DH,;`FbvS)gᨉ؍IY^I?-kB=xʆ2^yOK9_ dgZKۭRN b2BgPYFCAb$w!)+	'[b|t(mhhX&*A"V鲐gS2Si!)/mzs̢WϏvs[CJDjLip4ȌUs4KI\DꀃJϝkk7x ;⓺a:0ɴhoLY=t%H -aEjyq?))x8͕!)k0?o3Q(hy3\u,`޳p2THMM+T`T$k2,\\.td	a'X ._ЅX %c1(Yu^ڔ`c#ԟ?Z{z-,"=ۗ5ot8Y(s	,. q s'Q
<ax>"td~Pz_b6Za^A"֏iNEU~!lYaގEPA"mMWhh=DijU?}"ˢΎσm&dB(@6֧>e&BFR8|=	H6s8Zsyu7o۩i444'ͺM#T:QrjK$G㦬m+3[$+I=Ui8d8yB`Όģ@o~{۝y1|a_Aܤ\a~*IѴqY?"|4 <(}s.H?4F8/E4W?Z芠mդoM<C3R$l3Sjf<{dgJJ;].-7R5cUW e%ʃ!gR6Kle5>w(7ѡfrP#WOL/4%(kMC5Fo[󂼢kW7To"MEVeݮHAxpeT
w\x9g*迏O7+[xP]*>].~IӅ[ p)?bJ>ûex[s0f׎02kma v߰c7J>C(1d*.i_=};Z@ޕA?},:JXatu>)A>U׸\ݹ^7xWڝr;p?Fا@5SW{ML)f+mlMG+Sj=VxMe?P [v87(5QG1wnD[P_@n"#d7:S'[R5q2YPof\u"Otf{9SNXnehğ+eqCNX=Vf[_y˥k1{K7it@Փ3͗\Wrwell'g7KLCyV\ߋ|]fk>'
6V}`{p~:ӃX;g`JAXx~in^tvo
2TQ}t: )dx\C1-RӆFgh7?*
_3O^H"݄ce>~6ƭu%צ.ȖX,XyDD0.:PCF&.x cA]%YIO@-+va\Qg721|.+vGG>Jpxz3W9!Gsk?SʰQ.bh&>oH=?Zr3
M\:{BjJ44Yd~c;l^Rm8$%Uzh\.vμvЕsP!4C	\B,"].Dm˵9/ѓ/T㲝]`?Y\n&$i1"Lrɏt2t\'K7\C}VF"qNb\juZgߑ;P$JddސZwĺAo-=Z0	]9'vx
`qV}UhـB2OD~xuG}@jݽMLBVc3_zɄO8ƾ[cm|T
!UѽmmV5 ?;ٷD|))O:s'{}=x*lC78N`/HY@'=Mw<QѴt)ΨV̣^PW`b:]rǙth)iojemLw#?dI]>?rxSQ ϧ'	}o\w1-JIle9p7H#Mv+;	)f ǲ$N1;KT(ZbC3v:Qo_fKvJ9y-EF-w^Ɓ^a~i<P0зrҍwb%,Ou&u8sPZg4)gs2Mn;ߑ!8*"ZR?'H&tq
,r<g9
67/S⸱l w11¬a*{'Lcw'ksui@t8|0g-µfAO	G?]lΈdgxky1/闛!"3KxpDϋkO/J@vD*yVr%6]!4@_mtbׁ۹0Ĭq=u!_C̎:1%h{}dw;)4J. 8(> 
XV(}fn	@]Ԡ>o:030
+%gO\57&^T^#@lJPs4UwRHn68UZʑ28j?K92_ם	||{O@H⩡G'h:䏰{ؗװϟav-IT bGɜsz`Eſdm.WE_
Ɓta67Z>bA;qxww;jX:pRvn!PtDE IPݡ!%(*zwdKJs2>P@ٻ1ہ4ĨF#wZClYʹO5S2-8bkSqrlt%3xx_lՎO8)tOKLV9S'M@S.QwGW-ARFY.ԩGXM=Esw3jc{C\2Oo!)L4\R!(4X~)ZܫDCmgzax3A14~<ZF[Ũ+kNBE7+> 9;nr5faXwi0.ߺ[yLyߎP*VgFy|8ĭyrț[M_{>pD!t||xAf0[_UaKtDn|9yY	7V%^ok)i3(hlXKS['4&(􍪽f|Hw6=6ƀR\JJ4VWZj^e:n6MT
Cj-Tozh)KM6̕!1OhgJ]Qq`ؚ%Moc@ͤ]C^?0J"&ch`AK0M9zp%4o)#HXKbGN:VkBQ.ظJ׍m:нy8@ǫ!ꜵy/tBZ>KR*B'-yu\<%j10@H.tXl5~'ajk9v7=22BXirb辊m|v1&4٥ܣuB۹{Az
ՈB(0	U*)4(yD#
{!mVܼBҫ[OibIwrl[fU~1d]ce7ѤiH9-#OE9d0Q	x @濉PNG

   IHDR  ,      s&   PLTE?@?@|?}|ACBF=GXP |Czǃ?ŅÁXZTƀէKҡ,>К  )$V|6խɃ=^̒PqJ~Kh+*2#?55>YYaÈǋmmuJGM,M&+7V4dŪR}M>>FΪ$?sYzwx~OOWF2/uKs42Ǝ@5Kr=]'Y,@fL@d.ڶbckC\;R;-*׶9hxT+HJ:6ŠʗqY:D`(V>$0Q:'fLTq}`HP2 cbSLbI<vO0;p|as~hp]D%tରԒ*vX5FXam`Yܿut
cƉRwjdhFUw⭆ەix;aøotbhZD7ZCXb  JIDATx̛	pWǕrJ(֤c:F;Vimip,K$x%*g⚱eygA6N)f)UfOsAk9ڊT[Yj)~|i<*Ҭi;Ypu{?p#'Ze6RTjmr2[bsfc^82>+yaesy0g4ؕY#!֭6kٵ΄gl6+Z|"_vB떁I1/0Dii~Ɋ'cT*ˀ#Z5Om~ۍM5V-3[-x|?2+DzC1za*0^y^,DcNXxOJ:nYTp?ˆlVʿ-dQpJ3Lc43x= ,Y^{Y4́ %C[O96l$9QQur+JY~f-Òp<g#Msosݛ>o|rp#J(恅
CĈʺ/GSYLiXHÔ}M-(/=R`![CKήT[!ĕ?98OFPս#fZ
Lfg˦ߌ7?Im]l9aYmeWڣ>Y@E+bxPh&-&bJkP2T	k2?;VӬzo+Mx}lpFR@0X-Twl@`U~B`ٶB? lk$Sy%'R*	T@5pq܈R*Vڵ0VZ<x2eGa9p;Sx;xd.A]]`iiD1btYdXO'/XP	IEOCgղF	X)qAǂ \?z")ƳsZ۶a`F)/
ߵn|y^h!&2W!D\=x$FQUi@}ɑ*g>R/Д|Jg|)S\TmJ,J'ba^+X kŖ;=d('ﰠUEz!3+(K'AN=c1GxkL`.5.!8%н7UJ'^JϰskYy0
 aPbl՜yoMhQAnJ$ǺBn0T_OsZ(`i36G>uc.spoZek sD<yE>ٰU`ڬG\5 ͋?L]!lLh̆f>)BWn_?óۑ(\fTD@'ͦRY<)X3`bɴ*|8[ЭL+5AYw^DDrH=QdmȘRK	U\;Nwʕ٨溺fseWCft=]ov$ZvZZR0
6AuN,Unsn:=,Nuu$kqS۩7_@"(S"	^TZ7D@Ω0)<6bt-_)f5~<¢~;S^-93ZG`,GRxAǒX<1|plBdzˆ_g-4xe>򹇶;2b,#n)X{T:oQjo1q2$:=~j, {d]|Z(z$Xςu򹧏{	2ou:^i:\XU`XDM'*qz;7bm8/<R+
z|LWgl!%ٴPz:/_l	=paVlCc<nqvS]3Rǣ	m(> J*p7cs%"Z}53iv~Eֵ5lǒh&iTj
]N$щ%YD5) ˥aa"!I8$|-db]Zf3\־Ņm]'pFUfq#aQ:O&)D,uEe"oTGrXuۏoG)J`ŀUXu|OK0SeHE%#"پcXz!Ss{usSy$2`Wji!Y(C*JN2X[{s_ׯ~E't>eQLB{ˇu@-u`u8Xi~`&$]mե5X"a1iCƆ7vn^Opr3lWߜ&C|es"TU`=,gx[dm&WuiiSvL 3XyDmNjݴݮ˛Ο	Qa94,v^Z8Hme峨YO:;PQi;ejv\,A}`Tƒ~I215մW[Wڨ$X-Ұ"UQ&`I6X5,ZRw7@:ܴŎ9P&2'bQT;\X|_U&pld[wd
s=vt'rf+qmunIȚŋϐ<hVm>Tca}[dE<&]Ԣݙ>4NYW`|gj;ZǦ ضQTbBwjG$I)N)G{d{z7|1Dg4*/ߵݓ~v
=Kk
TRw疽
_bujIWZNKQ)\/?:o̫?r
wМOx}#n@s"CXAԺjp:$VXU^s4"˩)k17)V`Oh"`u?iwG4J7DZ<,,*V/N%+
xr'r&KQy+}?2*' ocp<ei&ɮ[|@RdA/u:*,8Ka_w3le%YvrޯᎿ߻SE#vƁ	Eh)zbQ]	kW`aisXrBF|u)9Wǿ빇KiP\,+<]D8;QXRpV9t˼(vǫ@SJ\5g'eZ'+Ё֜p6yR%ZfQs`^Jbi1Xz|}gfi[c2M%w,rgg3gVޚRj:}@JQQX^V(b{}T&[&F{XV[{ЗN,_f3U;r_3WN}MmVqVk+,N兀O+F%[,C\RlQTZ|VM}p%p2.fd;H ~@
TP26ZCIZ`g`o8,VVLA#Vtӷ6C`)xKo6"!	VB3`Һq->k3Ui\9" 
JߘG!p6)xL-k!vk2$oWEh1XD"q씆lW {sX
xGauE;,]VC2oN2Ctw{p?xpAJ`Š=fyE! TX9HUUywu!	wVݹy_L<RɵhMf렬@0p[7|xwh)T VBx8ɨ_ž$fJӺӅ5qNuŌOhݷዿA>Ig*{E4%"HDh-~UUx5o-Ͽyʅ5eby$izI-"S	gҎBOW1X&Qfr=yDͩJUfd1`e~=u
U\JN)XGQf2*N.yU䨑N#-29rCg_o=Ҭ	.fEqojv'i׭[tĢxRhVQ!WZU$FadD`?|! _X[cL@ynX(ltŶwE`Ʉ~iXL`ES1)2d6帾.m@ASk֬yOGN;5UHd'JαZ][9nWjf8=" :\S5X	tG.߱׬]j-i^:t$wjt}24lE
o9Ytҭ[-
;5AQDv<L< 23Ϩv)<s؃%E(lFH7XHTp>g윐\w=z
lV`M$)<=?--YduKJ-D3@2beNn,s8|FkLb1xIh\ڞ9MTr9υmsh{W#In|;0豮0싉pSǇ@68;rU4N*/#^/tȃGg^v@rIW?hcX{8v&ccWccCDQX!aq'_ޏ}ϑi}<ԅg홸>``wK;ޤO0B[_11eA6aGg%(7+O~T0k]Zx<q}dR
ajh"EC04M\_aU`i/?>'/xxşYCe}Fg(߁Y+?"#V%<4)XQ{f_Lubu"
ys:,
V`
Z: `XPsW~ooÒWYfb7Y蓆/{@2=HCv,v~?r^Gv&M_yht
~xDfɪ r4a07Io1a)c<먂.,?//?qnKX`q%߇sm1Q۝jFPacݍXτ+,n*
M"@/Ajl+]zH̾4:g8/~I$Y','rZ?IZ`Wt&r}w}jQPXcp)? V䰵9?a!oaU
?wsw>J#1Q˔pmK/<#&R4y! 2  ;w{<@#UPq%D!<\#+VS-y_ f	2k$'`I_x353ņĦvr /]`]t<77Zdk[O81@rf-Gӏ?/X}'p071F
`Zj%I[>J0/u |Hpd'$ʣe먅۸u	QxV#^˵h}wX6&'pZc	"KW|nאo!>ToPhzzflB簽m ,6^{+Hwӳ\j_֯V~3s2!)w&7FS"͆f/yD*8?<`8Cف_SעSN.4Fv" kkAiXN'cb',hi'RBeti͟}[[~D<{JbD%`gǚ/t(;4\fdQuRM ] 866\xO׈S߃˞gSw5qYYܾ >?Zxv+_?{'t4\ywon,I	a'>^xWO¡mo|M,Z y"gZAIF7LZ_B{XNo/'L<A_h[`	JcHWE&ZUĚ{qvr
>֨g0\9)͏rZ#_ȧ*4|Rx"Yj"<<mč쪔(6'f&g4"mT)jX"MJ5fRAwXjT]H}b00&a#E`}1ii9K'4*1t--.Qdv;jfmckh I{ga
Nm[tΤcVkj^&M3?iN;c8HFָ0zLFyM>ܬ[_uNVZH<4{jB_N$~]S3EQF9`lo.vs ې3"f/[`KGhB+$q
JJ.˗A=SA՞޾135n@BwQU̌=["-F ('>n}VnÒ~9+E4DVD"sأhRHL0ؼDqt^r pnzKկ@hGؽčѡz|Z)l'@gQXqzP@:(zZ"B:(AQE#Jr'=z	oݰb_MK.SU,Y{!p!ݾ LU3EA47֟Ásg|?0;X.'yJ3YE2x7V0_`	e4	
n⚬\Yɢ5a5;'ܼA3{/TT]Y	RC/ o?>M|q9z"O
9,R\Ȭ#YM䰰D'DxeeѢՑH/֗1 @DhxQ[V{Ud'u;M)a\ߺ6E<aQփ\'5}1	ut#"(وiRTA>	W0A܎jR
&&\KR_޺aFX/v3ҟySEohͷ5E>y
}d"ۋ?EJ~Q~`Bk'l'2a_-C~a+ri%`yxTG}9/۟\4 bV
ugPi#[}&<L1U_
!빥*WsZ&ȓ!Fpu^HDJE[\ixiP\պ[[מw!c3 OoMXd| -g!S2t*SۈU tК9)lGxbkX0,jLEcE?u	MXP2c ,EP%se5gd3h4k~#Sdz;J$29PX3ն1 KQ?-_XR;^){+|f?+񯻂P4EQkf&Q)ed̆
ߨ$~r7	ȵZyG3ZFWHT;"`dzNyk&&S/v95Zlt_|ʂUlGD>Fl&sH%^Zh_`3OZ4mX"l:Me@si4%z)uUdɺcxi~ۓ k`cNbRQt0Cϕ՜i)xDe..,`]T*kILumr4`ݰ(IQhZ6RjD,`A7h%-+48V\$g AG !v'UBg0TNȪH4umZÎ:^"MlEZ̂uə٥WPE4g<xK6B`JQ`)g/EhٰDIsP/5RV4[^s'oRQ?XX (ݢ.=\j4@,,gYa8NL57rՕv!M
BrX^?õ@4ѹR{!<)ަi'9ׇ˅RsXZD69~Y"V>8e J-Z6UgXmX3TAiχVCxG 1*}:B}xo`5Je,)XTHa`Eh b1V`(s(g+)yS:Bs>Dkk̊|(4*\Z`)ښ!ɸxZr5"z16"JWERĸʄ`o/-ʊz_:X\g,е"X'#9?r5[Ie͜E| !W+wLN*t4=43M)Esyo_
y`bN4	T}MƃQ{։
=XiOQ}t&x!7zFfnj*]Z(vLՆ+3nsQKUmXPZ}aqRWh$CZpɢ(J"XAjkt ,xZ\4LVcni#}S7mtMZaVKt&Wڿ
k~ƭ;@	͠ƞHMW6Mxfv:^q{B@tk8812@a? e9,jmn
ieF5DZ2̞4P{2x3F8FStSs#|o5z5Osdg"#1+<Q:>̄hX<061!,H!dj`S.|Tal-D5,j QH7ÿR!l|=2tVw	Na8rl9uxl]z>t3":,Z>@=Z햨Uz`ei|zW3V]
y8SvzjT\4p͆Ν.ת] 3Z+ܵCnwp7"02w "̑зFSk	ӦQPr~:m2lzR3Ϭ//<X3VﯙXF'<PK7Z0=\_`w}h&5Yآw+ pX3Ze3Ce$}*_^"0@ MCysz)7zmU3̶V\(nڹx2g]5@"`0F1xTA6,Xu'tz:]|v_bv
(̪n&B3σTI+%e@Lӽp9Xp<@1XNnܛʢgE%jXgL`ʲ4<Pw;&NMᲱB [Amvb,%EU VY+kDTfȈ(dja=V5d`j%Ծ~<b?G=sվ!B+~Թͫ%هn(FBKYampvƘ%qV/.ϭݡZA%pc-DOLr "`	Zw*=F9ӿ;ꌲ>+{c~h xPzMEeԕmJ+N\Mdi:Fc]rAF>\EKǦX_ACI#"`~I+$_\zۂ'#?N=wwPchaqKZ,jظv5!QA9#N#W1c'߅PV've%rsPs{^i,ɩ^O91<2gUL[>dTqN9;5ZtȨb#`E'K7h>@cΈrJjZ,/	Ca{Jپ&D0=/kԌf:p`sB#UI)pl\"`+c!C;F,VO/\;? 4k7Nع@u|MK%[T)feU͂ǒi;,*+_{̾əP~)iBZ=!Вa{eX`m"IrmZgIuz_櫺t	96鬱wrlp_Xtԕ;X80,	VRZ&5[\,O^rT%oHRkȊJM͟:v3ÒFN!ԮaA9Z6w[3)CAsSggvXHqbjo]~kW]
3D
a*Sj/esoR#BAiTi4F8ﳘB}]IUi?IU*aRSIbi Cjl_ДQSSVxX tq_^/uâ)i6E|XkE47HX`Uh dhAz^@&BXw\J-d(lnrb-Og
!NjbPw89 >+%>l1V*@h,, ߭sg{{:=Li:S⡭8B"Ɇ#5߄ٝiauH65[fuH
 "_ŒS\9tð$'\(|O85_n`tTM%H<ipX,=FTѨ{1r IJZC TE\m i-fAŊ<)Q_+; $/B&	퓞MW띀B7Jt?s bd7v^Iy=A*lVbQ4*Co-;4JX:
2|>Bc2_~vIτLE*Z*w^ʕ+4!neEVqLQ[GUv	""+z3j y!MYf'h9-'1*Z.LdA[VaK"잳в&Sc7H 0;B;hv-iDfi:d4x*1ҦP .]ؑ,ZuL(U
K>bTZFX°
X#;贲xUx1D^dr؊ND`ɉ1=)@r.T_sO8o{aB9I
%$X;:5` ;RN`u
5n9aal<hE p8lb!r9)W؍]9/^%68Ⲭ+%(Az)X(Kg喽L3L=O`+#X~URÊ~)!:P2Ir e{oXW=qdsax可LQѯS<fbL5,>LMӰqjp&K/ͨc	%KWgT,- )[;3!2o'̏Fz]'{J]sSp5^TL
ꬖX25*| ,-j:|Cj+cnaOnCmApZN`틇KЂ(SaṕZOqBtt{`dlY#(]-K>VPTDVPhOuG֣wQ)&HУYk:
Ϗpk|/碯~Hg,+YEdEXJɕJlLUY+%@JXt;>>X0,^$J'78Z(<Wn>f%@X~??Q_|jnXQH.^Mk1lDӏ39	"SU@l)-agǎeє_a*3Y/nFm:ӚR؍´aZ갢c3q"_[HvnO8U-p
0/%/YW[affT²6Qӳ$ڛURaw`86d8PoobzJ}8S}}#Q`Ѵ,!֒W"a2m+
8k#`i_}nkRE0%G` ugbh%:pGh{C!<S̐c]>`(fY!&uu[¹wclNr̋VBJh1♛]]m`gɆ2HXʇ23c8DE^rPV2ڡж:ԙêصwzfyfQ]ۄP"kܰȶEfl逤LI!,SvSUANmmŝv1خєVL:Gp[bSٮxllo<Z\; E52#跳Wj=Lŋ*?A+%[k ~ea
ڎUք
/OCXxҴfہ	W1&a;jƩd"tHŏ`q@ů	K]\RP`@J7 J5ir:-Uýїnk`t!rΝ~ɭ[H'⬦Q^լKm߼
P_~=uXZjրVZFC}9\t"$e.X߲?,NkBNjpUY֭I{'S78L77ܖEZ&.gHu-%aMBzbSƖ I5͵P	H;p1M?/j֬7`3u>}uo
zDz&wA~C>lbճY\F|X,P(l
9yrBY%
|$&*YraeEQ`t-u4*j-9H0*!&p!ꝰoX!:+^MVcx²0"ʧ#=cXr7&h(n/]MXTzHks`\du][6VO`]W<CwDJ/ڱ,m},U=TllabyV\RGiˏ+|`]Lp6/ٚ ٲ
熕V\.EBǇrh~v]S(]`"7nC,:f+?ǳv@/ZLkOzKt@<lDӒE╒sXI-Rt$Iqn X&	#Ғ',=_X-?SXV8sE\]5`ҿCotwròqh'b%w~(Ioq,[%c`!D3xSPVRtW`|X]V>^Ogqkvp8"*AO]1*m+P$7*wgT,Gǃ-dPDXTV@(N&SzKniTayr4cW$,d.GrG9P*x`(**Ʌqr~X]9iJBE?*۷`#9vGGh̬=q.
V4	o9l`Em=m8I:3ǦX`1F.@1J=JS	OL ?ȸV]67Vl^Vl9h()8r[4w܈`V=޿{($.L?懡{=bMMᾏGW}:oJ'(`-hlmr8Fa% %$>&^,JQjkwNK^Bo8΍AfTl$%ufM/vݴh0o]ve?7D޳z'[Zs)H!>٭ǝ/l8!\4-2nU<
-Y. h-s׽=yϥҺ>;2<^6{txlBleݳbNY-~&㏊_]xL?[_*FXof*D1i˪[ןx/k]wO -Uzω/þ&
`aR-bi{onosRd&("#[wP1XAZ0T}v!ImUKSjԺbPL7Cb}w[e_?ܳdW)cX}$d<3jdx'9 s5o YZ)Dvy*JcJsmCqͩڕ )s>v_Lm*8cf_»02rȑt	Z"ְ]X/IL:xEA`x
0	"v$8F}JāZzj,Γ@6Zф`/5|>n<xѪ۬7:J)w
K3#%*4-?i9y@:fc®ʊw_}O bdqbJ^66ҜMc&PS_hOZ+#!awXΤ8kq+01S^Kv2^XÀ5 TnHA-YłBǢ!aE;t_gi('GZXg<FJ=mdɈ$@etT <(t,*RQ0B1twa0m# $Z4N1|,/	AecM2S=GX(G83_yt
mr4JN<Lrkz\u8/ g3LULH@yR"VWUU)i5jod%-%D+SN {{%KrwV!x/B?t9<rqt9A!O=qpaw	]]t%2! $`؂*Rz===^ZQ5:-ӺĪ^-
*>x*"uQEl-!>Rz03VOA BpHB'y<>+55yл⼊zr]	x8aq٥5F8gx,`}lo#Zyw=?>p8vsq& .v{zQ(FU:LemF#LG3^h/;:4;U|*ɔHXH2Uu}͵:6GkntfA֍JƢI6
'NPv8*Xb7v`~$K,[z.J`4F?X]O@bcdC7]w?z}[v]F|UMJzkqZT[H`\mMVt+Y YBf|V#.~0<?
yn`?f].z-[H.Ԍ
7zD١"vV`md#,umV5k׮]Ç͈,ֵ_~*@Ah]	AiZٹyPfCG޷V+|U	ȢSŨ/:|.찦L^~.""db'㺥)++GmCV|J۵O?7v!`ZC.0P"4(]pI%#%"z	G_ @yMـ?r?qi%6԰b)sa>Ďn`~}ҕ~It!Z΂/QH=,Lӫ~>80p6BA#M'@蓭z7/Fx uưrB7ymp[+J
AΈ2m.I+䯬{K/UeՉmN(Lݖ`f$VCwFXTRໟ<`Ͼ@r 0/D/D:=`wlBt{Ս	V@ Y顺/.LMK	sL8'g$C	->)|Q'ɐs1zg|pj.07@&|fm4|2?=>7F`G74#{lA7O]ݳK Jae^?4r#z<G}LMXI"&$_I2`()QN־"=EK.ϋoʊE "{Qha*h>}ez0FhɃl[	L&<Eb\$()+
*a	hrKЏ<&|b8(.)apň$DPfſ嗔N%K	)@6aFYZYddLr.C',`l,&9YC4x}3stl##_ES ܝ꞊.b/9WK"aB%ɯ@|4kR/a.V\p`D}/V"+k.iYG&/j<X"#J$H ;eΊ3.|45$8r@NL>kMO2S<b,keUaT 3ѥ2|<i)*k 2xp?akj7Ȃ%dLjx=П#/~?1{F-_W|l+(hB	$.[~eɊ,I#GKOAPˬ?NZE1r-|E
N4mH+%(	W(ԙRV'Qz4D%QCԐ%b,Tva,7LFԲ	,,d aP1bд0hUBs.á$u9p#oz@lZe|iF	X=ntY=IQbBθg30v%E Lз:*,rb|U%i"ONӠoңpW<
鿋#ȗNaR嬗˒68Ȓ|ևV,Nd=*zYw1äoi3JV8?t\U_\,Fh;xM%A^U$x</NoP	F^Hh6>._I_A˓rq3aX,w(#8m,[&H)?⳺'1#DknqLd+,_I&lȒQ40Aܐ!鸰w_ZeP4rL1_'v/Qwp |mGEFFQu$܉,ĻH'TK ϑ|UwYB?:ՃJ<&W>v!23JZCl0Y]|$!Dǁm'Ix:~1Su #FbZq/ݒ7>°Jι?*UCA1adW ]Wv,èhYI߈,nHŇGZlz)!2cJ:t:>,${kD֗8SN0aj+&heApHOfRZ:~޽IGK`IV2T |e<T?_ч2AbvO۩!Yh>"yBN*uK sdTԖɉrjpV!
%5āBHor-Q0,m@?
_Od[B2_URx/%Mh&([o9Y\ԿtL}w,3%]bl,ͩ2PU$=(U/yDJ)@YAU>AZ[QS'}*SJ˺;ZJmߨwV{o|W~q<BHZmw7 dG;VKQE
,duu神Ɇ3WNȢ΅,,@eX)'_>:m6I=/YHG&@*nqƚ!xɇW.Di	][iiiI[ЕrAZZKbXׅ!)WZGjNl;Q#rَJϝǳ\C    IENDB`Ǯx340031QH-*/MLOK..fX7AԛI;-(1(M/I-:}a=\!PUy)`Ej"V<}w&
Ktr
zO<vffkzB~[v#*fB|{P5%E)`UNаZ;\-iG]WBUd}%Pif7JҾ ^n
x]
0D-!`6$Y E/s1ĜX&ҋwx+VNu(ًO>jS柶szWG	5GZWPәJяP;׫4QxK,(MLSRP(L)ɰR03-J͵ g
xS.HLO-,.QRPHI-/J,R \\ 9
xS./.q/USRRPM,JM/)ϵR0,J͵ eܺx+(JML-,IVRP(I(MIM/J,ϳRKPo_Z]Wi^JjPV p%Nx˚8!ːK$(51E$$'UKA!,(-'\(J!	([_bU FxKM*JMVRP(,I-.HLNR((J[s x31 ܂Լb@!U??K}5ng^_(K	ٞX.d6tAbzj1íb|/340031Q(I-I,I-KgXd:ᄟ_ZVnkZ <xVmS8ίyֳ ghr[`KBRB&V8WfHoV+LU<	^4U`(I4$:
wf)REӢ+$nIH`1RqAgP8*aQTmD8cĩQx'ALm%,7+fݝ~R<}>;ΰؿx,7݃9rr3??EGƷNZ(3>H.:':ULGC;g%j[|~>7ӻt7:?ilvwO>?ӿ6I1~QFux}]XjX3w
R1ؐq,<~	CrXEՔY^\0o9 	/8&,}p/Y%*#h00f0B!" Cm~1hꔖ jչN.$&G4EsUdR		r\{f*K0{+#Uě{Y{\pjq6tv[C2F#5'2d)hN0|:0!0.""\M1LR$Osge?ZU_ـܚb"K+6HZR YiA<0*B
dVתgl[QƭC?bC:B|n;L6U,	./<w9	Qi/̨G	4VC	ʾR(DJ&*ާ\
lTk|>5j?x2뺍p3{3؛ɽK7*hܚ?@/0wd/!|0^>
s*ܢnD-ӮEfٌsSXSv#&`CXOk<SXΊ|Uy38Lf%L>bb5l!bFfPckR3Ri2cHV.b/i+VWl7tGm"GvU5GɅ|C<yoR'b`8_(F@}{1mp/V+̧źT,b=mZqVr!xU[kA&HJ/NjIAɦH%j!h7&I3tw'mc	>yߥ* R<3I7ha&g9g}2ʤBMaFuZ	r5Q%6T	a
J?Hpb|mZgp4lt"q\lwi|6hJƍ[S+]K뎣E,Șee|0IQf<7!"3UUTiM0Tj>'kDS$tddT@ӿi#{3iG 4/_i]?/V{NφG/|K_YoRƈ-s#S\"zqd]س>ףw6֫nePX;xrhmHr͆S4NД\%p%(q4EeCy*"{.PaE C](eM$+LMXVt1rV--d tJN(,|	wK[,d\
ďW`=Ξ*:ӫXf6b&Ol%! Ck[ȱuH݃H	+C2~p+ckY9rJ>7^ղv  ˋ
hwujebdK׹֮O[q]CI4KDVYoԅduuH~H'AGO&.E*TiWX|,r+#AiIN<= NYߏ/$'۞PQQ퇜2a֏RbbG=ws:(ODI\$x= DLKO_""f@abȲef`g }e=Q.[6wBq 1q`fhpYS)2qhzNͬA(X#vׅ0[8xtQHXCgL\-MU_SrXҹ"[k<xϴiqF# {x w;`hC|rѴIn?'&3{ץ/70	hOiE3YG-qk܍-٘z<-ʄ/>"3rI.w m-3`uTU 8^d5"\N.Fz!uE9r4N4S-Դ7|c2x;ti,_~_fF}F 7wxUn0+R4=" @葖h-H1{g)ɒ=Hp~Zx+,YIʀ'gD//TQIӀ{FMI쌲.3QLQYF8)܊\Ux[SjIi;1g'RU:ʤUUUL72 L?ӪtRǇ3)
oN	A=,	_S!<"r|'>P:a$ˁnPEGҧ%+3cv] <@x⢋K4W6:H^E3m?ը
ka@[:&vĺDImm*Dlw}υgw곅`>4.	y<QSmؤUFReQ|'XPGRԕ]uåvtSϕ}9a.Xi{rWW[\>xcxxhYOY$ktzS0?B`֜W\<eߠuJ#CGSnt!Ve18a&&A"\nɫed0rQ`R^(Sk37\g_RU¨kL:,_	^UDFF|иGz~LQߡ$=	ie<"T/gNC±hB
r18>5F[܉dܷ?p;Vrbx. "!_Q#9f
:j7wl=x[EaC?߼K #D6x}Rn0+c(PTRQH?`1U	%'3i`<Z0f1iA:vm/-RO)Y 
MUI=!Cd]Qh_JNa4y8,8|,>
pŨCKJsҍ3Q\oaC%+kd(2u^B.UMEG9k!C YLCUAӌw7ئl4&(mϪOQC@SsrwnP+e̎A(rHA+(m:붅kpzC U̧T1OC%غ=҆:f],9~x{mBfRuBmFS+f sI(x
 {b^Bn%ɿX$RP{,o6g8Z|$2NZs8a9(9$^+zк5LJBِF[sAR
 RcDɋ]EzrOrxVHIMKUP*(JMLMN,J-,IURRPVLS SP
d*$$*!)*0hLK逳 ͅ#CxwoD
BE9J%9%Jv\{
'wr!SLΓ?0Ob{s03+BNf^nRQjbBIjE	99%,k'N<[	 {x0;jzxwoBƺl x340031QM-I-IL/MKL(aXPgǹOEjEgM*N(.I,i6/6G<>=	YيwH-;̤ p7uxbbP&oD;
J< 5x;tZ!%5-3/UA)7$Q$1X72/173YIB%85371=5(GVA	,LSsI-@J2K@b y)0%@Eʠ&򁍴U((+IS!^ZR_$T<]FV@ݓSp
m&/d凩Kmr5_l6 +$g$*Z(qM6d_&+'rO^,	m&cUY'/М,PGwCmBHyfIIj.Ўx.rXՃerjmi=M ~4Vp jNxysBT Gx¹sBuJpjgnbzjhQBm-X*3MA-3'"2[}b`ԜTDPѼ PtrB@QfnbQojIBHbzHDF	& QD]a4 Q,L ʇID	2Oc1W1tڣ6$	0YMj}HyfIIjsW10j要dY䙠,>7 7Q_x5atFIIA~nfrQbr^fz~^f^Jj)L7eeħ`^&,X o'~!x;CZ!%5-3/UA)7$Q$1X$$3y-
FFɎ,[9 L\
Le Rxcd{83322RR&Odټ ,-x;4u,SUFQj~qIbIf2I-/-)K..VR(JͱUg(q)(de+`Y_\_KwuBj^Bm- ]-k`xκy+5x340031Q010(a`?9V--;&"<7\akeUOA՘1R)X_FӬm6WKIXkڗ37
sTeG&TUIFQjb
D˩w+-1x׭1B UlG͹!x]Rn +	#T5ioIGjmZ#D{찳3 _ֻ~&Od([g- 2O n7 lFHPF_a11v5:9[UT&}"A͓B-jgRC%+q8Y3Fys×i
%^IWW^t/ѵ:8fNmfU[>I25ccwDtoRALuG+32{Լ+{]m*CvUw儏f!b2lj5x2eW\Nhx2eeƲ&+3*UW+'*Nf픘PZXZ\2 bbj@x2eWvnx2-(5Vib`QjRqIeNjqFjj	Όe/?1	 rE:xba1 Q
$ 3!W@x2-(5Vib`QjRqIeNjqFjj	Όe/?1 q?;x`b1 Q
 2Qx2eeƲ}M&+3*	xx+x+8{MfR +q)@AbNcNBRQ~vj7: UjVx2eWzx2-(5Vib`QjRqIeNjqFjj	Όe/1 t&V:xc2!Qc@,#䵌 3h%x}Rr *וxԳ4Y:* ;4r%Mtix5)jAN4E:!MS"2QTָ(G$R,5S1
dk1X43[+9=1J.aU9J/'7m>@Y;FI?h[Y>f/)̑q1U1T+OHK*o{ *mȦdGJ۹mH _XlBGo
"9}ʫ2	m_^AƻEJdu'5Y>Z 	2xEZA-$ V!3/%BA/$(51E@kB[	?qziR03H82/173Y	ɐ7<̒La m$fMȨ2]Aa"jL q3x-N1n0W0::]򁢃!ɐN^=ԉ;ػ#-k0BYĔ*AJ)kWK`9 6뮏t6w4T4Uf]F_GvIIޚ~3	38
؇ðJG\c,~qYx340075UOL+`Xfֻ/"Q1F= |xu=0j6MˆT6CH&(q+!qxR	g}R9(O3("mkB*'ge#%`	I Mq͸^;;t=)H0.3Ev.PP48ܣx l%N
ώR|+LSyQǳ3J#]x~3?Zof35x[ǴIQA!59#_A5D!J_?'?91'#`# 6x[ɴIUA!59#_A5D!J_?73(19C/3=?/3O/%l"# R9x[˴i"5D{%fh	)ep)O\-5Q -PƤx340031Q(-)Kgxe5=g!{Sx
?z1 x31 촜b1MGa"},+W] x340031QHOI-NMM,JMLL/JիasЦAm=+$U/`SPZVcl"x淖{e?:| iy!ôxUMO@WJi%lHAr"J"
AZۓxGq=ϛ}3#E_X3dh/ XERG;46LЖYv 
{`VDNG9a(SALu:2.JY9g*bR		난J\8$8@,sDW"NU/Z6|Tg6_$4J(l45̐O>ۂ5+9h,HQQkpЩwc%̱Ș&)gIdxnT/Omê.7~T*>bgN#.wZ[`╣S-7l	֑jܾxO4t{rc5-{{iLS	)%-e's
ƮA^f1gkL͎]R@hkvI4Wvw`ӻfW+IrUHEIMAptq_4<ަ+O4j*ɢyj8I;hDcJ'bLe'ФB9Q-K-{/\8Ǘ?f`g?Ѡ`SZbk9` 6z7uIJ#xdF:7q4~Fghpu}\/JZz~j:ٓlrg"fUq-gYfח*ow[16jQxu9' ͤx31 촜b܅W>UV5剓  ;Sx340031Q((-Ыa06a[K悽Vqt ݚRx340031QHK,L׶}h^ltk֭:1z1ϯ HI1C;=韵KT>71=%nôXzp?I%9@2^S9:fQfQCA R8x340031QH-*/MLOK..fX7AԛI;-(1(KI +b遈W38\V\] UT_\_V(s7Ae33[ӫըsݲV13sKރ)(JMLzpՒq$hI=꺸$3h.M3)Vʕ \]xS.HLO-,.QRPHI-/J,R \\\z%Iy`5)%V
FzE\ E{x31 ܂Լb@!U??K}5ng^_(K	ٞX.d6tAbzj1UELξCG{Ovp($3}{2bhp/-+5{- n:x340031Q010(a`?9V--;&"<7\akeUOA՘1R)X_FӬm6WKIZ2uż[nt4PU%E)en~9.7,:~7 TG_x}TKn0S"[IuU!y@E%-m"䤱a0zgI:$uo77ke,=Ԗ>doeomݗ{8PW-eVm0x 8l$aIʅKqqR"ɈFũ">ժzVD2rhZuDnHWbvy52ME${	r-D`Hȉd!\Sb)ʱ"40b }*T"8]	Í
 _p-z0|C%YF懑H?-ԏO^W$U=eWhWR@Nz.IpHE2p/s׃MطlSFYYg+NqO|jORckw
ǎ{Y2G>u	ifeЎOeaY7|kۤ{c{ m4{Llyz2*g<YU֙ߐ&WG±,74*'0^/npQ|94L4ѻKOa^)"7F[~Jg#;qoҶiLvRڙwS1z|~wuώ;$<hs2w.k}x{C"f #x{kD,'s1.Qg}FɢL.c<'`Ҟ|Ik? kdsfɡړuXy&1N^˜0u:ErNbqRZfNBbNRhAN~bJjBAfrIiQO	LgEltVɢ@
&ɖXXJR+J&'*Ong y7#&x}n0D|h0R$z%$鐔}rA.ɝ7+695j{hE;RV+CHldЁM^>ަ
)[k>fFlBAZ7peUa
`jDΝcy %8N	_=lX֥PL>ESH?8_tjw#x]($T!/YN"<t*ݔ)#.|X-	I#!&#1yIKjk'mH\Zrw$0b)h~B;
G#<IZd^Xo$S܃+i~+'ϸx{SY!73(19c"F#S& Qj	!x%1
0@At\?tU7	I8y%/)\lu|{o?n8@9Ԣm䄍+d|P6R) =<a`)p@e Lzps̝I[2MbuG"-sӫ/O7x340075UOL+`L|.dGo|# Cx340075UOL+`ػMZEh,_,'ϸ8Z  ʱHx340075UOL+`~*S쳆+%=+x%1n0Ew@H;P@L16I$ʮ	>8T!R9PFיc1ogkyj.wϓ1'0u~WXgxo.V5Uy.̓R33DFBj!D~Ѥ+%"8d
z$@]H^WGY۾ZPFC8:<	bLM^+Mqk!olx;ti#;^Rf $a)x340031QHIKgP?xYY=1})G lxTMO@=ۿbPJ(IH$$Eeco{m֛ Ǝ͡7l.'Kf<3|L[j=,,W.ck(jZ*:יTF-@Pf3^bY2a+_[/ʳ,܆.[|n_krI}aU)Di;=pCv?k3㣥)̸,7.悚ZY`<lF*-,7IuԼ<$@D^$B9eyTaV!0 -|?RJ*udUL4ۈE_/)#ybJvIhYIZ~;jRٍ݄\5{Yt`x|C~yl)u`RU^THl:Ӕ3
DU8R*ٽ1%X*u.qSP΅GPZ͞nϸm&*VOgC7^yA'Ep'Eī1BG.X
/
?'|Co0܍7ic.,6ߠW7M:xb"c!S E45E̍GgwgXbapf'`HnUK7t{7oiLRzTqKn8q12x~='pgwby)$w)&IBik7	EKlH^iFoI!
x;ǻo|f+[̜b+$D#W473($3?O#3EG!/17UG$=,:(r3S2Jtr!sAek*TsMǬʘ;ydnɞ,\ 'f,ͺ .k5TxVmo6,
N)%݇?yKv (vXKBː;_0LsNh+Fd͵TվJ*MB

৤:QT0JIPL:Sj^|3U`Z3U!RYΖki]BV7֛Ϸw^o~y˯gow狋ǟ-7"#tnBAbEk8""[JE8jJK/q.2-H}O1Q	tDVLy!P,=ɑD%sAP	LF>XBh|πpSɧTCcewOmu0,06daWp86E1R;b1)hVPq>"zfT$)fHڰ=ݒpW<qN nM]d7$A3|`Clu4{QdX{MXM9\kALJ)^f/:	Ad9&'4IeR*J.r%k+
6B\+zUtbuְdpmzf,?-l]4,nJ#"ە~iߓVXC'l]@;CDF33(?-Qui-hMdG	a?v\]uؽ/c{5/-^<{'@=!{^6<`h	wK֜x|~A&Źĸ|5{uH0N.sA wViA0B!wC3&w:~ҕ(Ld!{5f;1٤Lq]?
ۿ!bo	Ô"ߴ<+DZ\-8~c0A!I.G瘞k{=LMGS0bu&H3ovTooIy'BD)
.XB\8<xJ@EՅBS&uEA2&th:	Xy 7\	.}E$K{a76^>g	FG)YMᖰzWLJz@>Q)گm~`4xW`."4c|ĐrZSGZ%eqT*e.8Էckun)<S4:ĿոV!pVa--'c)uPoQ`%^H-^˅,3u.2QW)<D3{ 7\::
\0ZtURi34ބʣ%w̟'p(Z71ٵYi)_ׁ}^KsLWXU#"Рeu)	,u2:۲,X.#N0PX<ߐ'9	0x["<_hF	̾
I
y
9ũ
99
))
E9
i9)
iE@VNj1''PibTC&?cNb,IR@V(UPœWXond=Q⒤9S	 -nx/@h3f۬ "\x340075UOL+`TվeS*$ xK,-ONS2r2K 	x340031QHK,L׶}h^ltk֭:1z1ϯ HI1C;=韵KT>71=A&tBsA	wfx"DAqIeHxN?'gYYPx @7ax31 Ԣb3:^Ų'wV x340031Q010+KgHV۽fRM6y%I!%`%'k^e9W8 x31 ܂ԼbO\b#f[rN?Fg^_(K	ٞX.d6tAbzj1UELξCG{Ovp($3}{2bhp/-+5{- Z8}x31 ܂ԼbO\b#f[rN?FyL%DfdaBED 1=䪢GF\gzᡣн';LLJRsrKR=pN4G8痖 b78>x}ݒ SxT׿A@]Hol3&ҏt6r2y+
K.l6kx~FJK7Q&(Wcj]&hCv:S&2wV|:+e	~s
%1Y%(q=:Cx;	gF4xAu9/@Kx8^oBK/`; /~ā06,@_7W>j/ջF?ɵY2X5_c'ft8wrA+7ІjR#Q2f|xN)4Mv>ҡĎvVcAw$þĜܑ4׬bTmϛγƺ/=mM&v:@GO2L'erw֡]$Z&
ߊ{=Bx{~}¯ɶ/r2
'1JNVez$fidhhjjh`k`ahjfnjh99Yz A#x340031QHKM.Kgne])S>>-c!\UIQ~NNjQ1HӛRw] T#HxMAO0>H'v8l	en&%uc']Ap>M[V3}Y no9i+s=q2YXm:(:mwfJ&y#TٔKyђ>R\oQh`Ֆ:qk̥Wۙ:n? ׌gi?>?	t\	pwF1D\K?1H1BݬVyCi2-aortYxddP*|=|G)se2f  hx pDI@+igxK-*/MLOVRPM-L)ɰR020(efg 	%gdY)[sri_Zn16\(Btt@ =nrx;8Aki &x340031QH..-JKM-Kg8exP'e~kii ?lhx340031QHN,(IHO+)I-Kg[fIPYcrG5|B4d&i"ʲBXs
 9'vxA
@@	WA6J&hQ
$häB!A.$]{?<%0QrmqhuZtA \|k(RLyO{$H}̗+QժޟSr<$>wa(3*rhsՆ LXaثP	*L{W$zB@7JxXklY:r8(K+g[mܯknk-uu_.s30R:'Ѩi	ݖb-?(T4Qhc$`ԪkCa6{~;_w}'W?O?,N[_ǂΪ\︪\olNfBsG0xoᡦQڹ8H_Y@𐅐!***
H=amշ}`Vm]ҵrl
!!cky<f(oR,WsIB iLVVRuaIv/r]ʠ)&Dz\kvi3nBȎ4Iu#e#-Lߋ! 
f S4=:]}xVab8Z%:ѬVWUJ2:us7]~:/oGt'{NlQ'ELEC?
RN,"}C/B"u|H):c͵\|lBD[;psbzLe.㦲OnyưPgy*}CxL#\G"eCSOI @*, @_uJ2RWʬĦZO&'Ł,hSSН= gx`z,P2O.N]=bmzwoVG[7޼BJrRPsRGZio& fIRPmnꑂ<1#;Y)ptV9 O6'ɫEW'<H;R$AVUhbXQcRxXPR:h2ksKdG;5oyU-ѝrw4A\fZRi]T4ȹlH"K*:<Qh[1tژv;-qi4QHQwJ#|HF׻4ٜ5omq!{\!g*G]#tBGcU~ElB-TԀdh3[.e@	ZK[Ǘ%'2w`OhRՃ$DV4]2ke@R՞R;2,\cN"P{~6cs<×;xXz$s+/UFJ{&UR3tb7Ӈָ0=.|[p<qR
I]kpgrEuu4@S:>[(Bqt'-GkOG11
=RڠU(`m`ܠRmrB/4o>L]zgk#يa!pWjhE&7
zsNX1C_l	szx^"{*$}]8hh=ƽ2M}dUfsf3p;p]BKL79:#Dg[^8s ىqIHSPS|6=®d0#N*7\Žo\yHXD.د3EOfJ SXu̬b2B'S8R?T)=	%A7-OJ]H"X9zdwL1a7q|ov qc{	@qDct`d8ȳZW%U5QH,Dx<zRD'h CxF|ϞmS$5u, LG0@Q9Z(yAxÐkL(l:9w*V8]􅻯C?~cX pĝCnWRfKBDayCGO*W=s;6ӈ|Ě@Y	cy jø.sG?~#>!uGpo_sZy9;}6\b&^Em /vj +X]$cp-ɉT6ּ,*v*n0 zū"	5.w(3})4/i閷&˔ͤﮊb+Z[͌FVP!q6u_hp^mc		˨O@R`n{|8b5"
/V5C(w*xsNw=t}0#TqB[gT\uaAN<[5*`g,\fder7#Dۅ<\ՖjҰbȯJJS67(
,{4͵8wQ*B'ڷq,<"_tmFЩ(	Щg)rM,ÄM1:va1GXMc n=|7H܁sww<^>pO;t!E1Y%MeuR~XnM]\;
l[T^E-u>,~X{4M - As鮊9XsLWM*63z	rYzU8!{$ntC
(2>N3SZ~KPRQB]PdeN%NW,rV(+OV\V5҅rkyD7ˎU18/ƪ%~Ӝ-}S9ͩ6Gk%NnPcPNr='~ΒX,/9tύ^m)CґJVѴO<oA&!?+2bȡFɘ?@KZLӟR>E^0"?-N2m7_gb(+ge,P+?hCn>c9qaUGjUݚho8HZbk:\FH|cOBЧ?^3=*WM{0IɦyRTx調ϦnG	VYLN>cgg7 X<$ɴ޿_` MR4XBSI(LI.0-ARrDD?]׻ҋw;_
=u&	
Y,߾HKoD꼜/!޿=sxǿ0\(HS,+2Iʚ$cpxPYISiRXMQDKu4OqYYH,a{wP34!Y,waOja˱gFtciQˤzApVaaZtwfvWC;Y.]witVڭvػwj{j<=\ܩb3Oܐ}Fٝ	{v?a;H6rb]`]cG~:خfblm앞y~lhL]Yõi.vUyYbܴr:JUlЯ0g|ooL3I6&dfJkWڃ{?;PBi		g73f-3
O^O
u\ &v6]E/[&"8AF yEloPO7Ŋe/[,
~ux9x5TTIdVUTXR~:4&Qky%FA5)163vϹX{w	 ~k>=/xLjx4-rX6qb#:gdNwf%Ci2c=S=̼܂Ē̤TC s2gĂ 3JR*P_g'CCtP%q;ygqXhiAinDQaV{hggRynEQIkPex6,v,Knd|\IdrMo~iq}{B782n&ʹ=`SA;y6?ʼY>őq0ɏj6? hx ¼#&_1v\ck`ahUffg昛QV_W`m\T^X>9XxSFIif榆 =MRͣJ#=2MCK2-J=B#*|܃'/Pnf2 :FxKJ'R LɀpEN }5
#x340031QH..-JKM-Kgf,-^[
^5r |sLx 'y3'f7/6 .x31 ܂Լb>{$2Ȗ1OL2RSTkL-vP]nSedw]/D 1=Auw#Z}gJ6MSLLJRsrKR=pN4G8痖 49vKxbbP&db=_VZC @x:u?U&0YNc Kx340031Q010(ap.+vyӻᑏLajL jT_X/O>Y|ߥjLa~+l|L/d楤V@T{|s|=*(JML([tlmaqfs6O mKx31 ܂ԼbA'nN
(0+HMLa3'0O&uD 1=Auw#Z}gJ6MSLLJRsrKR=pN4G8痖 P}?Yx{mSC&0qmvg` ^pKx340031QM-I-IL/MKL(aHq)Y-itECt%%0kcU_VϮN韙-T'VjU_
 \z5}x340031QH..-JKM-KgH/`uܾmOGĶg Tfxɿ%f{U߳ 3gxɿ%d{5&s= `:x;)+RZbNdv,<Y[ ibg`x;)jv bxͷa$Vɺ٬BO xϵ!qR&ײnzZ 
x31 Ԣb3:^Ų'wVf&&
%IyzyݪR'5;vm Bkxsb``p	
 $ )׈ĢTǔTԠĔ6*!%>Vz 5z `c_QZg~~%[pS_ԌL*d%{;
+%
9yVJ`slXIIQ
E
zƺ
ffz&ff:
FF@dkhbejfed J@ۊRҬ\ܠvyJ%%VzzE 3t*t+J+ta&'ed)I%JJ0/+0+WW]\_uqHeA~Pjq~iQ20ҔARKBs`___lᛘ+.IKNtUefX[89ZZ:%?4757	^PbN-,KMq+U {*[,p7[,q:F-aBb.Oy^Lس[v򋧋cHŭ#s3z%1mpQ#H9AO[+ϲXs+}{[E4?3]Ӻ@is3-kS}9#*[O;۝~r脊<] køwVkp4X8JrXq&q ou'b6nsȌEش[Ҥ͚P_㿲lZݖ0*]RzCXH9f&NVa[zׂiܤ+a		/rw_\TVVjۭÒ7ǷTfpT鷵N֪gj:C\rAfy_ˬS;-+r*Ks,6Nw|AS㭪FyGY]F~f_gC	ZV=2-KJn{ǳX!fn۲'Mj?^w|clB*ƽmjyh?55?(cLs>QfrЪy޴.>u
NW~G=5fvIi~m
e<EDK#OOf67_|VFiKXx%bᢦɼ&g܄O>hۖY?n;*3/;6ULaנd澺|u_\Ya4goM;v+K|{ZU>䇾j|.>Uxw!dYx2Z%ߚ`̨ؾOfvX[R9eCezSq.$WfG=i#d+4lP1rPks^{oY*N7J`xfĞE<]\9%4 Օ*x{qH;Oh_|I 3 sx50D|{KOp	&X	JܪoضhffaI N)d׫i¥t=5}ƵaK<G,SV.DAm'VzrԲiHQ#3م`XUtP']9H:(-^jGzp8Tw8 R\UӤx31 ܂Լb	?KO&\8[j%-L2RS4>0>r+7՝e.HLO-f8"h7ٷ^x(t. a-%xbbP&mvշ5{~Z%Ȝ J
1x;teMNf^D[ʜ%hw<\v\6E%
\'g0%$l!v\3ASP(JMU/.I,Lև__\_\\RiWuBj^Bm- E4x;e3BFQj~qIbIf2I-/-)K..VR(JͱUg(qdeOfaRVHKQ !gXx2uMNf^Dِb#'ޒTP
'eeOaQ()|Q	HeP2f<xʴq~ 	x340031QHKLKgHuk޴M.,!+ x31 ܂Լb^N?Iʵ}9%7W>L,ob1#ʍE=}u'nASH*dju:
{D$5 '$X/=a}ۓ	Ds~~iYk! q=:RxKJ'rLiCuۤϞ6E߶ &xKJ''L8=>6 }$
_x{qBHyA2~$^!_lS'gĹ xu
0}\E/ijI;tvB)?(yh'bxvfC+Y|iXSOגނULcw6)ꭣcŚ8h?Kߤ,C^'d˄IiL2l.ۓraYLާaO2|8Zf.x[tqY Τx31 ܂Լbغ{%5z[s	XQFjb
_yƢ G$W?25:= ,w,}x{edIFNSU&2*iɇE'alT`mhǥ 6)e0NuBj^Bm-Bbd^fa̒ ,x340031QK+KH-Ie٭Ia'Cpfv01 ̒$߷4זfh~v!$TƀO]?ǆ&U咟Z	4T '#OD/ؕEGY.LUU몗Ts"G չT`quRifN
C	"Ao/Y9uL]rG|r~^Zf:CTW;dʮ$w+()I-*fYmѡ:])aJ;ɉU)Iιi֧3~(=usS*ssRĽWvt{z|mE@STp7p({	Դ|w]6$MS T2Jh}XQɭ\ݡ*r3?̜7kJ=E%y%z}]n
ݨ(*Jz($(ˡ}V]`:OIGd\=&ixx%ėX4OmuJl̼!jJK2s{3^}aqC߸o ~x;zuHg7N5;縣/Ż5sy?ߍǗ}/ib 
I9)/F%ˠDͽǟ^x"ΰ|۳{rjT=&`H+()I-*fҽ覺jUfq{4PHIbQ>SηWgEFx9k49q?<zJ3^L"kO^.''3zmb@kp\do6P7sJK2skVOhjXYVyQ) ]Q(x;zu?SGldO{ڐ_dъL exʴq{KD 2x340031QHKLKgTq0;W5 Ҹbx5aPKJ59Kz&OdS\˺HMngk [xO 1s*<6c>vݳE
_fCCcgo]s`ΦcQAh8\!G"sxkz!cr>nZ \Vx340031Q(-)Kg06~Vc|&ĥ~ yx31 ܂Լbw*Jo~Qν&`E)cbGzN2H$3\UԈ[/<td P-x31 ܂Լb|	sSZ^&`E)cbGzN2H$3\UԈ[/<td +x340031QH..-JKM-Kgh3O%7Γ7.x17 8/Vx*)<?((X!1'G!$7G$5 '$X $X!(?WAOO!ZǕVZU:S,'\dI&vL7[3s22Ova9eT_YT\✑X4: hL^j9XfC&ɎړY58W(6ڼՒIFU \\387s1 X?&x;;Y[2&%L!9'V)E7-'B!$3R79?$5D7H)qq)( +OQ bݜt]30#7Elr fnI&j4=bĂD̲TSyL/,HU*IQR(H,Zg=y<3m?(eݎhjj^
. B3fx;tCZ!%5-3/UA)7$Q$1X$$3YIkC6ɿؤ%l@
Eũ%J!nJv\&eR%=Ycr%dCk%=!5y!#^FQWW!<$HAWhJ<d9X0SL?a
8[lxkC &nyx{SY!73(19c#O4 =Jjx{4x,Ƴ ,6xϳaLN2	oeIb \)S>xo 11نÇy D40000 db l#j,3YX|K2b
 lRdc1\8ϛ:	[zP U3f`x8 Kgx340031QHKLKg*k{1MJ+ W0x-J@Q
vFW܂J[!@v#U\6C2&q&LMev;%Q|.Ys{=o'_I;{o|V` ,20Im Uͨ	,o9#=nn)<Y\@лkmc{w\xBd.E!sTAk<r!G6.+oiӥ\	`43E`$	$\C(E@[V1=OWRNбKژ~Š\|nx?ngix9 1Uj[#[nVFb#El[2u;;w4PGētN1x9 1NQ=ѳ)}E~	๩y8<yyx9 O}Z,!g]6.c1n=>~ˆ,̞ᯓ x340031Q010(ar4ܲ*FVK;cajL jN+:N-7Vz}퍉z.P50s˿rf῞ҋV.I/I-/~fӵwsJۉAe楤V@Tq9;NڔyIOM-I-IL/MKL(VU=s}!2Kb(.I,iPr5W	.j]w服TCA~qnZ~Q.-|:[<=Jd=nܝ?KaG~ͺUVQ1aJb[ԅguTeiR Bx;zuH?t`<+2{YIi __sx;\eIV,Rmx[ ;wx340031QHIKgbQS%;Rjѻ7x;zuC^ټoS_3fb 
%9%S˾˝6t}+ Zx h hdj{E~&J35xZ =F'eW <s[x;FyPg5\100644 thread.html +""@:"H(fx;zu&-Z:DV.uw4,?e
& x<yRv+jt]W/©h Pxwɖ,ʓwn~ X,`x;zu&Go/'H;jtAG?+ x EM=@{l|x[ûqFaV px# C~0x92Qy6n>xx 6uট>3Xg\
JC~0x92QyY81$E@6BͰl40000 templates Ż[*j"׊ 7x[u\[kKKx3OW?_;iW Nxx{xqBCɄS2o"g<\5 fx[q7 	 cx<yCHl]oýiJU\X& x31 촜b^Ŝjά\S61i/W x340031Q((-Ыaxp z@"gNS tx[uC ־[߿.uhEUN BIjnANbIj1öckl1YOL
 T
x6 < Bn0iSeȾA 1P9g6r<Y(SxHJ&fyxS.HLO-,.QRPHI-/J,R \ I
lx[qyĒD̼"jZ 	Jx<yCȗC7N,;R>{Iwx{+JbInr~^Ibf^jdVE #7x8 q7w;vveć[Q@NX= },]"ÓCetxEK0D9HB.-mRVp{R@b7z_$0KqFd#$Qu.ƏUT.dL1p5hTEsd _ x[$mہ'ab#+vΐJ@=x;~NeIV,RmxpqrrN xI}x8 vNDϰޅuMZ]8؛"ܤmn=}=3Tp8^ix340031QHKLKgnMK:g9}  k-xs͖6,  px340031Q0,+.aPbL8S#zR)"|vO02-/.)O,J,K,ki.dT%^J| Z !x340031QHKLKgؿ]緵ZuXS #hxX1nb 
 x340031Q(-)Kg82б~ӻ>ǘv0 sxs	PqtqUHI-rA E 
x340031QHIKgxv>n5U(L ީx `昦`fgr={֞ٻwBrx<yCHyl˜>pY al(x{{C&2J #x340031Q0 ̼<s7M_;߆jX7eb/- ^ȰNqW3/|/ "b-x_WW!4HsmHc2sR'2~ s'6x5 2ĮBFiv!&9F:x"KPkB$
ġCL\FXx=ƳaĽ0M>$Y%	 |jx<yuOo\r6R+Ix g.mn}ƝRFr_ڑxyc(FA}&1[	R1_ 2RRjkTx31 촜bY[bB7Ne(]s6]r x340031Q((-Ыax"xdf~XMD5N
n Bm*x340031QK+KH-Ie`\pC|ME|VM@A/=$4p/]!;BM*L/Je`lm]slh!PU.٩Ei@۞/5vK?޴{ĪZ=|<]]\d(}qబTP%A.z)X'޻n^n\V2uؑh2~/ݘgȹ	fp%E99Eq"di+c}9
{$͋d}pkXIH79? 8U27bD,'iaqTuz^n~
C~ujrN/| f;BEqi.%]$<\Õuc֧R*r39x7ܮT
1ijTf䤖'3Lzx$uALe?9aҋK2NVl0=>/Y7z*N(*Jz+$(hOU`ny*ft|QV\4)AZթ/ū~ro\.DAI*0% [G_qf|.' jJK2s&[45oʴfMfӿ \?mx[:ADĕ#[Z>/[x-]/<ػIop6N&@S~noRЪW~1zM_ӛqy"fC3|\}XGjq{G\7*r3}XÙaSra3T;&es[\.铎CT\Xp@h}o?Z Q37DAIjnANbIj1猢j^a#&QSZSPqB26^tTO|{} ~~1x``9CʷbJqq|پc($d&3ܗc=co"ss|A$5 '$Aߛonkͷ-m& pZ+ox``QV㏁m|撏Z^s&a kLx{}¯Ͷ hxqkAy7	Ƨ Jx340031Q0,+.ap-]cX* ZOxʯ$K&pq)(dǧ椖(8:My-3'xr*7].?܏%?@!U!$m,R 2 gxc]:U/gbcOBZbNqƩ?PLx```d3}Oqϝ)F7]qm41 ܂ĒbI%^8nH|L
 Dx 8ZҐt!UW	+Ilx;qD=׉ Xrx[8qBFjfzF5W- T'x<D@/$7aO,sx-e_m\	D͒?O񝚭k~Һמ_šjLa|\YÎk@դ痤Ame  |1.x``$%%$8ϰkqWĚ|3 >
Ȥx340031Q010(am|wuڿlv
7Cok3HqlOzKT)̜g+;3''Bդ痤A?3;z9MT2RR+ |(CiKrSKuKӋuS*s3!:r-_{ln}$Aҿ'6\Y$Puݙs6P%iE}iɂnu
f)YBU"2 ڿO~i<TYIFQjb
Ĵ%=	Oy/ Hf%ͳ IhxŲQ	 NhzxQ	 .h xǲQ	 hixóQ o6x{}{FSe, 1OYx``$MˮjcwEL
 Zx<yC${_&1Vw0ucɹ !kpx;redi& >=x```d~#xj.ftsǱp JRsrKRvuU_u,~49I miQx```$3}Oqϝ)F7]qmӜ Ȗywx["|LpF,YO0s$ihNnT ,	x;xqH_6"3 ,\Rx``$ҽ~x>9I cMBx<D@/$7aB[p5tϻp5&5:#of3\{}޾-0sLa؆)v.es7I)aJsTMZ~~IjDzQF [0`x2Qwb%W ׈`P?'WW߀w>xkbyϼAZA781=Uv5q t	%x{y/[qIeNjFŌ Bn4xyĔ3]  *x{y/[qIeNjF Bxn}xyĔ3]o +Lxy/[qIeNjF CD x```${ufTf?.L. ix;xqȶR61T>bD }xx```dmӦJ~xw[M@$5 '$oqpǪ|fA& sx340031QH-*/MLOK..fyUGwmo!DiZbYfr~`C_g^nՉыy~ F3ȄNx.(a\sZ)o&fnN=ϑpTQA~qnZ~Q.XW?ܼlMBRVs?ѬHv
^P5%E)`U	f,KHK/n:nƵk޹	 	koxff/+rfWJ'R{d-Uv~;x TİxK-*/MLOVRPM-L)ɰR05PdfgJ3K2􌊭jЍ/K-B7PP-	`mP-=0~- 9ŭx340031Q010(ayc6ws
z^`ScQ/p6oaь+s,jLa\Si#>>_S*P5y)Ҥ᧠1SWӄM-I-IL/MKLH=~A݊^>K. WseB]ugx@5B>Z%I})Yf	Ul{_&1Vw0ucIiڶ<ݘX,k_] '%x{4yB[Z~~Ij^FInÿIN6{i*m'gh``fbZQʬmGtES/P8cC6S,6yn 
(FxsgƐo2

\

6)ev\6I)v\@FFIn "62xg3~JfBuBIjnANbIRZ~~IjBm-~R~J%P~FIn 5J)xĽ{M7?"`YfeRidd I6x[}{$V#2;..j܂ĒT"%Z.J; //Vx`` (rm*Eqk_$bc*c2# rxN 
V:Is}h%AI>X+Y#Ql!`0HP/<ôP%"Ѥx340031Q(-)Kgu۷BcC1曒N xN 
uN_W%39eHn+0#Q89575<6S%]xN *<=ﾅYb>3S%/HcwVUF<;#Q{([l~0NX#x340031Q(-)Kg~a֊Mo*8ݾ x5 ܜ}=U^b/#QJ}N,'gKPSSCMx340031Q(-)Kg6AOCJ^d՜M x340031Q(-)Kg¾YA|hKJ76	 2
x```d!jU?~v}7]. JRsrKRjr1DPP4%i^y3 ƺ9f xfz8) )x{iC$T)%)97ਗJ0 QGx[kB)d*$d&%+)%RslK*sR3RSK@_+LVe4`jۺ91  [x``$\GU\3j*s|?9I Px{iC$HӣߺT^ n'x{k#͢, )AJx``$z5r6iaiJ>rvYN& ݏ?x{iC$ȻTvWnż
 x{õk͉&0Mva䮮VH)NU嚜(+ 祀

60` *\`xR Ĝ#c*Z8Ĥz%agNScy#1L<2{T$F1דh 'Jx{i7HKBAM䤾q]t ؞[x=³aĽ0M>$<Yef; m
8x``$"[ou?_lٌ辶deT ܱexR IE=]K71z+
%Ԧ0I6LJzdﰓ#1zT6)MNPMdy#4h ߗ"/xE $100644 400.html P]"StF 5ӑ$iRw
߻Nzx OI)S %ʻ)%YY ] yCkܘe100644 go.sum @,^E<n_X4*100644 main.go Mc|i}*2zߓ8Ԧ0I6LJzdﰓ#1zT6)MNPMdy#4h HTRx{~}l$b2= 5204040441066MI652137543UٖQqR&g̒$\Ғl<4LLL,uMҒ,R-Ғ7?ebf })Ix9 l2rWh%]an`(#15m $mMYh tHx``$RuZ.Ǭ{ _єJeE3 sx``$r^]-|OU"|uL
 2<x{D@/$7xU_E^J^WcQr;&ygmU| f}m{Rߚ^Qس/L#TMf^JjDՂ e!4?xkb<$$3Y77$qLF e/xMPKN0"(=@XP쐌SR%>hX\MS.^
Y܄ OofG=x;kpZ( 똓fd'x +D?0?N	z'aLHwރE_hYr<W
Z;G=t{ZVζq<N
\g˞zRVE>ȿ2藱tIX,N]J\&JBw*!+2 U?kxmM;@,*K>>qZ$$V^ΎCXDJL2z\<~bYY
4.ٔH|GmUepU*uø|\`I2F kRTp8=`v&ĕ*f	v $7sG4;,x{y~ !~

NAޮ~

ҕ
A 1V1'G!(?;5oF Уx340031Q010(a8t×~+}W+Ԙ@Ԭ{F	fY{[1h_۞ԷWt?UZ1qjiEg[8[垅PU%9%Ee['r9tɂi0E)e7*i!.BE&U XBx M#>IΚݕ|I$ޑ'U6xsgB+wqIbIfnnjIƩXl	c8x;t^yCGnZNjBViqIfZnr~^Ij^n2H-RR 2b[ I53rSt-&hNnU@xr3ܮOQ,'7y>Y<b7x2b*y&M^ɫ>72}mv\ q"V|_Mʧ
d&{{Mog
v)$&q!A<4'
x\  t32	E'4k_A%jԼZ ݉i=j%xǵkBƲ, px``$xP'wtkg̮O,6qr BDx: C
TN˲U%/_=5(h Ix``$xP'wtkg̮O,6qr Bhx  K 	oTzđ'vJ"x``$q~}ǽ5Bgפ)]<9I ψBx{q
1F"8:NQ	bG $Xx``$]_Lk?uw]\N`R  eWx{q
W|B<nh8u{lxۢS~t͗x &P7hxR ?A1}併vhbq	%LzPSD$6	-s)狓#1.d/!i#f$DrKFh b1 x340031Q010(a8t×~+}W+Ԙ@Ԭ{F	fY{[1h_۞ԷWt?UZ15O*F]pQ9ͳJRsrKR!*:$?ۿV}bʌ+ZfX  4YBx3 ~Tov*c|Ujcđ=ym-9N]hH?2xsgB+wqIbIfnnjIĩ]5X
xx[xLnC2&nYjɼ<f

@ffBjB^flf|,`^_5#5* !xǵkDYe֌*nE%%z.w1%楧*l6310 xx< 	ĴNv^YO(\wXνbR0R';BB@Mx340031Q((JML)O+)I-Kg`a\4gyN`E͝N..9o bjOx>}Ƽ,f n%xδi͕5 +jk=x[>dV d&xH סx340031QHIKgJ4}ϬֻE׭Y Ex340031QH..JKg0=UuZҊ/~fW ܰxW(HLNLOULII-O,J-WH+KV  
Zex[AQ`Z{9;{W]ɪ&ꙇTx^]yWg^(2hV/0nDFǐy?<|~Wf<\!`m\=/F K4x340031Q((JML)O+)I-KgXx+V+Y{ gjrx[m<sf npxK 8$	ux oTfQM 7`#@ӓ%Y6'ޥsleJ9
<100644 go.sum +SHtyަFnݣ.R46Nkױ~4@'{K40000 utils 71i0:&trq>JxV Q@¾5f!?'%/4E{e0%' 40000 utils v*!֎WJ/-$4"͡x340031Q((JML)O+)I-Kgh*|W:8%c,c !jx;þqƓ'Oda S$x[xq25̒$\ҜҜT̒"2c2c==.M. }zYx-Kd`LeZjfJU+v$c;
T'ı1ABTUEKvCW,
M` bbC<{}ڣ|9^=7xL_y5x~fJL
t!ʲ~@G=)n,	/mŜ?Z)1#lΫMqZz-aJ!	d߮hP㯀Ǜ/>92B)a8I.z$ZZ/x3&'>׶Y<t'pKglxR,A}
q~:89_l@V]7@jƼ;}Q'pti%D"ό\<|zJa*@yY:@S1R`61+(Ǧ@vwc@ۑrn>
)T8gֱjC"y@VQ%GAWZfGE|&fĥJF49(eHGڂ`늛_pjPMd8TV7}1Ƹ)EL$PYk!%vx/bj4ayI-	O5diO;46kZŀ=,#:`('J\ߕ
H\2rV69E&z|c)LPtL]Ɠ,*Q1k;`VшKɣ=bwVXEq5e@0q,a<Th6Kr	ht,.H+p鎺a.8sۨlflV~2__[yNKt !^[
id͉e^Zo%t[3+se+f@fnjL~fʔOjB5En%߸.
z[3IG,JFgTZ|ڸ`Z^nk:d9
Sn3ADBEV٨4)pﺑѻ
0n*1>ɲe7.C"$ڽXxE$uʿl^ԅqة I!U4Q.01@/3	ܚ^ Oc͕F6I9	9oч¶Mé^VT``2"ą0xԚEE'qHupbqi,ɷ
Sx^.h`CU:l&_-{x3 ~DJ3ZYT=->@
	`nu[l9xsgC "nx;sgCcZ +O]{x[εk<dE ټ Bx[̵k<3cd9R0)y=s	# Yx340031Q(-)KgkZbMH=s |Qx340031Q((JML)O+)I-Kgp^/i",J#Px340031Q(-)Kg]XӾHȸwFT @x```q{xU_o?pܽ JRsrKRL31̿K7mƶO,!jJK2sI(:b7i (aix``$rg}SrV>C;g	pN`R  }fyxf:8  :jx{qyb)9'8m#	x$]dCL"%%9vE6`sLu,l

6)e'`RPCq, NΓ7rM~)23d).\@mv 	\@eB{D&粚|l270nA \-#nF?)?Ҏ(ͱ 05%xkAqd7mcmc&C"Biw#۰;K_Nk%.(x@<x͓3-vAfyuiu<^08bGOP4>l!Ͳw-"N370q;J̵|r]ᓶRJ"ҚEz"r|R^a8[;xJO*F	0ߟU6_j~ToTbVRiUۏy;z{+X}\uB*Fφ/(,!\X
s#ྉc(9H:8<0bH~$E2"!U	`Y_Ȋ,?
5>S>UKqJb;_4&<]8W)uw}у #cN|0:Z߄oF~k[?{mcS4 -spcx)}UuBIjnANbIRqIbIfBm-LnjI[fQqI@~q	PdG<E@	ݴ\dz. Μ:
Is9KrSUjjk'q- ,rdnWNtj^
= NB2x!U]YT\_\beZ`QB.R[_]Q얙
Cq(4 d_x340031Q(-)Kgvv)AXTw=t;x' ݑ2xB ;/Lkux&100644 thread.html dlK9<IăYx;&7Gn׸7[2 ;\x9 .5%\"Kg*BbUk&koB(ƚIx340031QHIKgZr=kb'xY /QOx9 .\wXνbR0R';BbUk&koB(ƚHxV 84vRʶKjLƳ%/4KWF  40000 utils /0}L1o$Gx340031Q((JML)O+)I-Kg7IOKmnFT |FgIx{̸q~ x340031Q(-)KgX(gowg4 ϐaxR v;-0ul=t%DP+rxGޖGKk#1ʵiDUolQDVq%h ̛#ax: #R퉁l _%/@mx0BLomh /x340031Q((JML)O+)I-KgX|]_a,NI ox4 $Z!$ a-cŶf@=LEb:+l,S\	oCxϸqjXU'EK^dh `Nx;ǳgC7_bnL<olrx;!/17us)tF 8Ix340031Q((JML)O+)I-Kg?}OZ}O\ﰻ߾ri' Ex8 @Xs] _{ōM>i%c2Gx`` (R&a[Jslg(<yfUdF `xsU(N.J,I
vRO,(rT(I-I,I-GbBKK2a4D07hTr>_HPd_BD}R, %ޡx340031Q((JML)O+)I-Kg*6SWB+6jaN hTx`` (rw]pLj[U.x``(.ބ^UUϢ%M]dxsɖ칙E;0 w'	s x``(2#hqZ괒s$;|ns# ׹[o7xʵsɖJ1g 5q#Jx```&"+zSYZnc Nx31 촜b_*EvI0??s> Mx340031Q((-ЫapoW>h_׌kSx``$b۶>{FtL
 ֧lxϸqjA!"ʵOH|ϒrSi Ylx}fsƽL "rxo 1-ɽspJkuy/]?F40000 db Z>c\w|^74lBeoYoVp1#1j/uP !{rh 30%~xR h;S9%0Cԓ%g'.Med/,a2(#1@3(j?!h 
"x340031Q((JML)O+)I-Kg{oGޝiEKBcx340031QHIKgশOf_fES d

x340031QHI-/J-/,/KgY`3pɄ,ӒyUcQTV\w_g5~wTyqjjJ1ȄuR4MXw+ԭ&1w:LMIQir	XɈFtkxM vEx ˦<2+y9g/y{gXx[ss Cx340031Q010(aXo̼ϳ*>hQcj` Qh_۞ԷWt?UZQ%W}lKOU>5.>{$5 '$rv9ڙܣ'\n}/LeFQjb
DG.._lƱ6| ɵMP*x /Lkux&'1xs{3'1lyB& 
"Gx>}ds}Ob hF9x: h;S9%0CԳ%/@3(j?!h umTx[ͳ{C<Ԣ"+[$=̢TdIjE^dFfYJ.Z.ΔԴ"nԜTMX@B;Y}&_c1D4E<قi1͏X m3>x}k]s6afe l)x``$&j,묆DC@߹*N`R  "x340031Q((JML)O+)I-KgP<h"x{$ &4x;&Hr׸'[l/ W2x`` (]z_(;O1fUdF c x340031Q((JML)O+)I-KgP*PsuO׉J]])  8x9 uG:^C*%:Lrװ2-M&>~}{x340031Q((JML)O+)I-Kg)Xbtv}l8B	x`` (rNy«
WtZ"b*<ޟ.YrXQ#yuFN!g<;ܴڳ1rU&@P\X%Uw8kM\_q$5 '$$@K¥J&z<  p =١x340031Q((JML)O+)I-KgPXwBc[~1awY 58x3 J=XBVK8GF^//^6`N^R4w[+$1,x ⛲CK)wZS)Q0x    ]xϸqB.v{ް-,1x}6dCFYi%;.0.JKOUP	/.QUЛ\88dKiy)\@2JL,2y+ Wx```d)x_|\4 JRsrKR-ec&)_>1O`R  `fx;8q x340031Q010(aXo̼ϳ*>hQcj` Qh_۞ԷWt?UZQL!f2M۾vw܂Ēb-x+3.8"
SQQy{$ҮU2n~ bKtRx$kbuBIjnANbIRqIbIfBm-MNf^d'&%[leNjqFjjP% S6c ")1x$DTZ!%5-3/UA$$3YIKA&'3/[kblPQj-P2'8#5DIkF'1 ځ'e 'oa JJsC&70D-KKYdonjI"֒̒T;^чduu2s*|BӋtu&JhۀRKMUQRH+I+UB6Q	?L*|`Ԋ-nfA,2K̚< e.PE,MX`F7t-K !%%E`N*5ٖ5~<VGTAX1M nd]v&'3{a	!=0m"lBvb	Ge	1 1ϵsx)5¦Z$5 '$UA$$3YIKPrSKT2KK6;` PGx`&Q]P[XT\XP[˵1h J]xh zbb%j`(,(3:0#b
Ar񡼔fzL?UoV8?G$썈^˻:Ws#e1Dwx``$2)dAgV{>f1\.j2S* AxsMIM*M

5600
vuuwq-)*M
Ǉ[''d E Y
xx340031QHKLKgƥ{^l=rN 
x340031QHI-/J-/,/Kg(_vMz=KUk܌o*!ʁJЕ71
_jۿBW\]U[B$ܕ|hzƺ[n5AajJJK~\HdA&ѿ!-B.*x340031QK+cz5.1O"z9Xՙ ^zfIFiD1NNfүk}'3	$3=/(!gO#qC&'۞AU'gem۹ԙ;ϯO7/ؕEGY.LUU몗I.C`
{Q)elW'e3,[A#[O`;	WPRZT0CyޝilRqp*%Ӫ(;Ĕ/3f.g!)`&U0ZV:d\_DNOax37i67fؔX׿)BEqi.eOzW9g"713O/=a팇®M䕔LQ]<YŹE%y^l'+6vwWm|=wAY_Zs99N]`C)ID_D57AOb	А8t[ʡEʳ.)-)fhԟK2>\k- 	Sx[u"mϫ7/Vω۪Ei?OxuWa𪴕nUKYLve|!bћ&[{($d&37},sW9?((I-I,I-f5򏕮~ <I GB3"x[u+S]7/n.+[:MH{K,xj  zbb%j`(,H3:0#b
Ar񡼔fz@jC*8?G$썈^˻:WsCeq0	OxE؟$F
#23.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I HJM(,V(328.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I3j3G4j4h;*?M@?#	pI]Ll5MֳvNQiRسT	<^^:ac|d\08 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj106e`-frfLx``$!bћ&[{deT f
x340031QHI-/J-/,/Kg(_vMz=KUk܌o*!ʁJЕ?:mີ>!nweM855dd̃vƬںg½?ajJJK~\HdA&ѿYCx[qCl|{d~gHnV 
xsMIM*M

5600 C܃\C|lKҋRss2| Okx340031QHKLKgd6wjuq WxSVL.JLMrW()/-SKIUHO,JQMLO3 0x^ 1=|](PEnXE8[Q3ӲMSV 40000 templates )$P0$ +x340031Q((JML)O+)I-Kgnjzwr*-"mx8qBՈɴ{?pŪ ³qx31 Ԣb2s~9?y!_eFJ{ >+x340031Q010+KgHV۽fRM6y%I! mi^x8qD Hh>x[uC sӎ/ͺ[7t($3X($uؾqfoS  *gx8qHQu+:_k,psix;ȣZT_:Qkb> \	x340031Q010(aԹ7*rzڷvja_C̼
g\6Ci\7@U$CT?l\qm4Qʌ}P#vp{ 1>x{y#Kfn:FMZ9%J99
IE٩yJ\
@0,4 Ofx[uC	H%ߥߴ5#{7J}r ӀA	x340031Q010(aXh ~؀OK`lQZQ5v<n2]KT%푇*I-I,I-<+_<Y؏}ySQQkK?nqgIu] =;x$VhquBIjnANbIRqIbIfBm-ؔdf&%&gC70iMT|. bgzXx{"w[F	. (JMU/.I,LKI#1, 7X"x^ 1 y~FLu,f3CqqE8gضylL)40000 templates )]nqEq ۅ -'x340031Q((JML)O+)I-Kg8Sww菉߻i 6x340031QHK,L׶}h^ltk֭:1z1ϯBe楤V%3<hל5וG8'x" "/fxX>Q @x  tXR$WXQ tx340031QKI(a.nf9qs7$(51z+.	N/	^Wg f=px ]9O.ۼJzI9x340031Q((JML)O+)I-Kg(xo棣<-yxąޙ  =dZx! |­Zîw8kXx5s3  ;Hxk 1Gz@	vʤVEHFVk)(,QG ̓8f _Tl?V_TyC1ŌMԠO 9O⼓ 1"x340031Q((JML)O+)I-Kg[|sA	4zKɞt k=x[qkE/=	>V>Q`o8/ Yx340031QKI(a.nf9qs7 x[uC K&k5Vߖy9L@$5 '$sX-R_ʊggL
 x340031QKIK..fx6M9{wk+qIOD Qx340031QKI(a`1q˟|mk&v<Ζy=x$>[|CL"%%9vE6`sLO8 #=`x  P&*Ä4hax9 P&*Ä4h8A_Ix|09o˻CES3x[qBH5\욒XNߪjb  @0x["LxGX0n> I'x``P$"s0m\Rr<bVѿ x340031QKI(agFIN5` Tx[`h``fbW]݅IfH\hVq;VoNK/8[+i#o℅"m:Lvb>ٕqHߛgR-8#6Ooo3ZDZ`lHΊk"3K21 ĒdL4P5j-7svA$3}z[9'U 7exsMIM*M

5600 C܃\C|lKҋRsss2"E {Hgx;i# j
x340031QHI-/J-/,/Kg?c&ee!D9PY	iNs.#M#VzjfPũ) 5u
2v^)j놏
))*M.qY A/?nG 3\E	x}kB"K}620 Jnx  P&*Ä4hAx``01R9ybn.ұ0fh``fbW\OZbJ"713O/=Y81]4x"Sr}eQ?+Nvfr 4
x9 P&*Ä4h89BpnJ%o_CEei/x[8!bb Tx[ ؟Ya
	1pI!"$'x(TF)\),y0LFO~&8
x340031QHI-/J-/,/KghjREgxσ	gԾ1(*+AW.Uj_?`n)uCbwԔb:;/ՍYur{Ԕ&U, 7Lʣi Gj3x;uyVF ryx9 P&*Ä4h8\Fr0/ILJE	CETqx[qcXI\=n8/ 6lx9 P&*Ä4h8*G
}=E{EփCEsx[qBȝ^Tn>z2_K $x["o͎L̬eE
/+*$hL6deUO^Ϯ03h}AbQj^I PTE@;SGAEP (WG!9#3'8u@*lS ګREE bN=ĒT㶰O6,  A%x9 P&*Ä4h8mW+eYJ ғCEx[qjrLWYMj|u8/ 	zx9 P&*Ä4h8͵|binV$QCEfsx[X9Q i\x340031QO.Kg(\ߏFgЭVt7)/.)/Jҙ%E s˕3_f5P%E%`C\HdA&ѿ80x[%oC9gBjQB@~qIsQjbIFəVUQp$e&i @j8k'r "xW  100644 .env %w|}Kk~] # #Q:irN"iC1hBԬ~Mevu&xs-JIM,N

5600 C܃\C|lKҋRsss2"E "x340031QO.KgHrM?={_t5q7)/.)/Jҙ%E s˕3_f5P%E%`C\HdA&ѿ0ݦx340031QKI(a(_T;Mm[lB x.r_x%bF9ma Vvx``ݠ$)ũ\ksÿyZdg&W lhx340031QO.KgHrM?={_t5q7)/.)/Jҙ%E ]o}fڦ'JʋKJK, 7Lʣi TM2<x``U040031QK+c7w5M?;QAQUYk5k1ɸtMve{B&q|,63gb 
E%yOS>yk8 R3K2Sއ6do[uy1)d(-ʚbuK|Sw1xu) -8PСx340031Q((JML)O+)I-Kg0xc<qնpv x340031Q0,+.aP.){%ϨZԵ x340031QO.KgP8b+Úc'gdULdQS\RT\V@$_2)ͧUUQR_Z_Y_T	P[Ǖ8~܏sG} 8N0@xSMo0=ǿB.8I/Cer)%=;6j%AۦA{IZL'")+Yp`Wh$ơHQ5&]KQ~UT5J(Ce£SG]2p$k\Ew99Ac.)SIT5DmNٵR/}tB$B1yrr{
#PgzdQƅ
7MIzU k{]ү#Nn|s_}6|zh(hBصœF#h,Z1l2PL.z9#@Sу|QڌSXa*y4Q\NI4O,VDu?j:,GP wQ:	ŭQxϦhK2i3qkO[Tm;
8)6̉1G.f-:1x:8RCxk!9+4/Y!8557?9XCS3-H!SVH( immgHFQjbJKBbAAj^\HG!= hxuN1C\'j`a/8+$ƍkaey]1JɮcZDPNS֨FPV[%.j$}|?Uk'KѼsZ/LH<SC7@ʂbV`NDZXkY\UjBwMɔ:Q҂NN"{\ϔl-
<Yk``?Mi;5O]f/W'RuOƌM,A!Rz6xycco՝2St89=RJJJSABODKjNjIjBZbN1XMHfINH&E
QLZL,9<#HYbB@~qIKBt,=9Z!S[[d\: 5/E*Zbkdjjrqrr 9{vxUKo@>ۿbȡZq)6	GBc
NQ̎NRdwޏ[Gz)Au(Sk%7۵w-ӼY8Mv_UBG1x/(Օ2!EH28uCꪲ"x;xue׭R[-\uPcT4HbcY{Bj%ZRo5uI9/K%=b	ω%g)<`FTNMv8:OQ{j/87M0u}n<fpCWu(jTVtn3À5hcO,\䆞\P#x]TZVdaϐo,FlR7Ň\PWѹ{2/8(wF04H1w͐Uzd13A 	a ڂPI81ZUmLa:ü+0VthM43u*зc-LKYL=x#Ql1t%i1ȶ=a4tGlR6	dc=-훱sqJOw5	aM;GߙDШ߁A$!3YW!ŝdHls	UPb;؀87~e+G7wbQW2:7"'E!\J7B+3be.[x{oBK@~qIYl\ 
	}2x5 /weϳ<?)$ڌ6ydVC15ŏUJIJIx340031QO.Kg|;'uI|`QS\RT\V(/^AsZg^޷<TUIFQjbJq|QjA~qfI~Q%Hÿ+&&꥝& 3x340031QKI(aqˍmAzڕb|8[ "	kx.RdC	;[HFQjb
vwj̢⒀+[̼

=hAm-pM!Ťd7YCE
O-3'Ydwyq8Lⴀ8a/ y/Dxx[)Zdf/tFҒ̼8+i
x  򂵩aϓn֓lx340031Q0,+.aV{VI0os:m `x``P$rXA=C֝qa) x340031QKI(aјZvm ux\ ;򂵩aϓn40000 repositories cR*C1T|DC.Ib˟)x340031QO.KgPOӿϰ[\E7hFB&U91ʋ}}yꙗ>UUQR_Z_Y_T	ɱzi'=F> (06ex``QY81]4x+-x`}β1H~Mr{V~/bsȚ⻵GW훷 JRsrKR:;7%Vсqµoj&ثx340031QO.KgphSasU5%E%UAoz_d^8z}CUd&gU4bkr^obk w/"5xkɾ!9+4/Y!8557?9XCS3-H!SVH( 9ΐĔb$[ĂԼBzj	YU צx340031QKI(aXyfvA+=5W$f 
\x[)Op):e0Of|]CKlR2smRK*sRm3SJ2-Rs&s2rM͡<y
L@Gj8-'rNt4i1SRjk"6I)@; [0x`}2FD-?̜Ql]V(,?{Bb?/ardWyb<ğe^dY}ٕ\e BnfzQbIf~^1WC.Xu
}a!R3K2Sj~
ˊdO=p!JRsrKj:;7%Vсq¬ojVFx  򂵩aϓn֓K]x;iWnfrQbrWiAN~bJ> onx340031Q((JML)O+)I-Kg!$f}C?\7- 5x340031Q(.)*M.)Kgpb/z 93/[}$(518( 8$A
߶bQ|b G#7x340031Q0,+.a3P͚;gN%jN# b	x[m&vL^3 Arsx{eC0HG	Wr淯xq Ϧx340031QKI(axvlcˍD95Aޣɶ&j[ lx's)f.& xx4 ]S/Lc_("m^jfH_`m[ol<g
xJ:1^ Vx{eBHPZB?VWo4/	ߘ Px31 촜b>oV?VC}z 7x340031Q((-Ыam74;Dc*k /x{eC0H*)<FnI B
Kx340031QKI(apR.[:E~ǖ(xݷU Px'xs)f6uF	҂Ĕbj=OZɌ /Ax{eBd\mAGN>6Ƭ F.x31 촜bJK?t汈o' x340031Q((-ЫakȐFl0 	x Dlyo΍FF*t.x C+}RVO [Upxkb,/XP\ m`x VӀL8UG3jix31 촜bmm{b%0 -
x340031Q((-ЫaFBv]ZS ia	x "/c҇p[+zW*.x v~BqіYzر xkbld,SXP\ m2xkdd\P21N `-x ̌g|@-Y?[x{e"`m>56}ԕqFF 3,x  |p	P+CVC:ԓx5sY,&/`۬ |Vx V#C,M,/@jx31 촜bغ?k>>?TOߛ x340031Q((-ЫaFBv]ZS!jRsRSo5˷TZmO= LҶxUN0}+FbשXi%DmrQ[j9КK؊q.Ĥ>3>sfKa9R x@ձZ D&*"5 gܬrM<6XS4ڠk(i.5M4&I#j+ax]ps	HnO
feGo׆9d(gSzwR~8ܟʹڛĲ<[ሙ+a._JϺMv6e\Ьe+ʰZQT3c%u:u
>wZqss;SdӍ~q副j d"]33V033qjFiMUeDj'ѻB[<?$pTӮPYԘ*4:۳xz}]ص@.fAsD*V
ܱgG`$_'=U$lBp	Іʷ`&VnTI}y9JUr<+Vw2yֿR昈UOocI_mȋGd:4w~_^F!x)̅6ɴݏ(b'a|g9\uoƣi_DmNNϟ\b.ͩrؚ#ul(a3egtR+3B_Um3$h'Kx8 V#C,M,/@jxw,rFpυC$x340031Q(.)*M.)Kgpb/z 93/[}$(518( 8$0.fZ;Ң> `"UxkXƾa#OprQjj^qF~B"gghgdWəZ▙aXQZXSU9i%# kx{βeC& x" VDo?sXOfXvj#¤x31 촜b*}➖yUx~a 7x340031Q((-Ыa8m[A	o/B&[jJo=dz> Lx" VzH/B3.3Бj&äx31 촜bEW#]-Y I|x340031Q((-Ыa%M5ZkQSX
Vvovg)]j} <{x" V!Qbq99ujjҤx31 촜bYn&
YJj^dpci \\x340031Q((-Ыa8`*]q}JU!jRsRSo5˷TZmO= P)x" V21xJj$/7x31 촜b#*+~Y t x340031Q((-Ыa{Jg~/YR?B&[jJo=dz> mWx{2eĬ3^  *>Tpx) Hj-L-^9dGֲ1Bipw<8xn Zt=[L٢n{2@Fi}5vyǑp(ڟ1; }R+templates a+A1폙P0]٨4grx[Ǵi
# 
j,x340031Q((JML)O+)I-KgpR~[ЩPIJ׶l ܦx340031QKI(aPyy?;V72- *5xe+MJfk, `|UxO Z.'ChބZen{<E0vVo"/u?}ޑpQ%B)&1!,-K靓%#gqx[4i4# 
+x340031Q((JML)O+)I-KgiubMO_0 ,x# ݓj]d	>	s%:g2xk`ʹ! 
mox3 O>3n\MPߑpsTh*4<j5ȥx340031QHKLKgxV6˷5/j"EWx340031QK,L/JeH+|5W778BTx:2wP(aY?=
sJ\]|]rS6>tXa/[r" w{&gAx;˴ 
Gx;0 =8_+G`tD	N7`}k.Bv(9SJ-z̨CK^is̖wͅCY#9n
W6.2ʲ0QL'Mɸ"4j:EB l-P'dSNx	x g100644 captcha_controller.go ܬjl>Hz100644 threads_controller.go t?($LLL100644 threads_controller_test.go .l;!ޯYĒ-,RE8?%x4OYͶۍK*> F0x340031QHN,(IH(ap'Lۻw3l
\fQ_ZQVd"0kpE#k1|p5*HML)K?-6gkϖK_1C$g&dA6:j4}-_#. m	S_\_Q}Epg0~xR$E6IT3Z=67AdX[Z}J7#:L62/D̒T]yM\WݱٺuuZ9\||wWeMT e7xr100644 .env.example ha/Z1 рK T240000 .github ,هNn,,ΛF100644 .gitignore 5*MxUh.%100644 AGENTS.md X+uF©$uksgr100644 Dockerfile ߖ%Uphn%100644 LICENSE ;TQC/1lA_-z100644 Makefile =.>֢nYH100644 README.md ?>R[N?o0_!140000 build 9m9@wMFk~*X40000 config IΕ\IGq6R40000 controllers O-l{c'GQE|a40000 db <͝/$I81100644 docker-compose.yml dL>_+4j}~;40000 docs 83T"xn		40000 files 5׏3hv440000 gateway r9*k ֊ʩ100644 go.mod ŠKFoh=100644 go.sum <
Mmk.nky100644 main.go Et(uً`oݰ40000 migrations c⼇m^F|40000 repositories m17\f840000 static '_"k
pt40000 templates Mla_c\=/40000 tests #O ^0DΈ40000 utils /U6aL+)`x{ ww«Co޶k o,%o'-:]Lnw#8NVg)940000 controllers Hڞ}PIٶ^Q`|(yHvy?Au@5
x[Ƕm;K-}.9>ZL:L  7xu 6a(t2Wtiqȇ{筒Je
ͿMb"bV8]97>=xb'% =v40000 templates à3+6)Q$@M/x] 9$"Zfw%4]ǐ 8'_"k
pt40000 templates Mla_c\=/ޓ@]#'px[Ƕm;K-}.9>ZL:L  x[Ƕm/&LBE]f>q+œ Jx9 IRAB1dUxTK3{]HRĠ{W ۮHx9 I:V9EELM37]&Eju̯s rOx  'DGb;\ǷpÓ ?x[Ƕm\[kKKx3OW?_;DA/=$3=/(1 uSϱvz2O,I:_WPJIoW|u:l2cH?t`<+2{YmE&::M2L	9='2Y=Č"Is5M@$$3B~%kMZۤ%9%R/36k)wf_@bGY7HyCW]3Oa %r(x[Ƕm6&ɖl+2p-c3S
 }
x340031QHI-/J-/,/KgЛNzD:W!D9PY	rt)X>H)ʋSSSAjm'}NWo҃C`jJJK'K]oUF`]sI DZx: Ud&6 $
Niq>X@|^^ +$[@ۗ 3xKJ'rCeC^2eVMj; 2x# Æ)L3g!{D!x[Ƕm-&k6~fW$Ur K-x[Ƕm'?O-Zǲ5hɱLD'Yx[ǶmSdIwkxpk^Bz^qi.CKw;,PuT~W?TEnbf^z>?O-Zǲ5hɱL!)0nx[Ƕm'kd۹X{m?=9" @Rnx[6ADdW7y
|F5|.5z}J"6>;[i2gfe뮸_XYѩs{QH\i_4C3|w]6$MS T2Jh}XQɭ\ݡ*r3TxJՄ5yDP߮*ʫkRk@
%9%׾=Xm.vIʫ傓 xx: UW,*Jveoi,9F<KڰkOĢec	x[qLlB%+&Ԏ tx: u:1YҊex"y1Hr/ba{ܓ Hx: M2	/;ƴ uj"[Oa ڴ|s |?|BxiKP%mHU>_foT͜߀ zh<xcc(̨S{-37^ݬ ͻNxP ;Ry=TzL h)miOpA&9O$"cqj}!g)=>q+wQ=xcc۰Q(<$8T`(F _	kxcc۰Q$-7bzó%MZx(F ގxcc۰QIN.wmzIٞo IGxcc۰Q$L]xJ[uxcc۰Q"Qoڿewbq(F 4c#xcc۰QdݖƖ٪vi4!y(F  Qx! %i_NVFΚZܫ?xF ;;a:>+l%719g&100644 header.html ׍V=	xv+Xv	ߩx340031QHK,L׶}h^ltk֭:1z1ϯ Bfnbzj1C_˙])J푙T-DAqIePD¯J'9)ڣ> ',~]xc;:ADxݼ+,l\[AXlƌO6S׻	GͶab 
y%E99EEwʭԙֹw^e\˟h.s|6?=tC-
1z)~c3#cr
Ne~򈼛i[,Z$$3p,[xVX:dDAIjnANbIj1CUC/eW\ vd n1x9 _#.3EQg-T}Gu7[ݚھ-Ź5= ]xiBHiϵ9K_6xV]ڍyc'# eux8 D t]hN9ye xz-Т'16^0rYEGx! 1W,*JveoEC
vx;zuCcWe	ycy腉($3zmb@kp\do6P+ (x̜*2cV9-uܢ5]rb&5 Y0#x# H߃Oʾ?i!{U*'x @=7vǥiDx[qH3UsTq[ab I
x340031QHI-/J-/,/KgЛNzD:W!D9PY	y\cjO콂iPũ) 5{fxk޵6UR64J7|WV0b{o3 SHx[q<".9]vÍ"FU<x 
bH_V.Alݑ(@=7vǥi-:>ލl|F${H1a b40000 controllers s*<6c>vݓE7dKF]sFXros/'6)8m܉n-JcwF>3c14W)L.;40000 utils Ah8\!GsUnxiu'}"]i"dj 01 4x8 }R:@úЌ~`AlvY+Ao̓ #HGx Zb- $|ޗבՉE$x4i^FInTSQ\f'N4R# e'x[qKJΚUs2+e,; E^x340031QHN,(IHO+)I-Kg}~Dd$~ϙRq!DCIFQjbJ1ҺBY,Xx޳ ~&I\x }}R:@úЌ~`A3NsIU3Y@=VENgz_dV.$f+@/G?8[	f/"c16EI?`Q /;zx340031Q010(a`?9V--;&"<7\akeUOA՘1R)X_FӬm6WI/I-(?3;z9MT2RR+ _sNp2mыkBWBU妖$$T%f&CtdNO_X1t$4^w+r;s D7-(LGU>h]aUl GխgI~>lȯYJ2RS DR)^3ҩ30Z 'Tx;zu)j溺׋$/.ԟՔɻ+F F x (Wbՙ@!.x sll*R%?}`4Kx<y>ezG-M]bd7F? zfxKJ'2bZ:=)_ 
Gx3 Jgt']"a5^S^6f
i4Hk.NxKJ'mbYS/^`Qh{o ntxKJ'2T/4>nV #x[qɇmx^cSBxKJ'2eB֧<~Hb; e#x3 J((yO}f.^6`'eJBKƈ Y		n0@>x̜*kaAouKP  dx̜*V*;Ʃ}+Վ_
 

x̜*akqg͟w
 C4x[q]eB|ߛ(ֺ7uH 
FxKJ'r`|}:o 7x[qB,[U]
fdxr}8/ *x340031QK+KH-Ie#qȖ~{^|w 3K2JJ,W#?i2T_ۺdCr=[\S2ݟ&qS_BY
d䉨@Ux:2wP(aY?=
sJ\]|]rS
OOwݼܺle4#W'e3_1#^/)?>2sї
JsrRghM;\w3N5jJIb}Dp%O>qEP}[_W`Jw͓]8b,K=`z2@MKOa==}e)
_kߋIb4kBEqi.CT˟ۇ%%	_ܺ"713O/=sK$rѼJ3r3ӋK2O_hfN[	N	(̒Lk{'9]::&e%@usF-Zv$Kl;&*nӚԞ[;)-)f8ij/:'=[_ ȤNkx[uBSn՛v{XUiBL .xKJ'ywI&T<ߞ2  ^hx̜*չ[ɹ.{M%ׅ3X
 h(x340031QK+KH-Ie#qȖ~{^|w 3K2JJ,W#?i2T_ۺdCr=[\S2=_knK^ixUzBUx:2wP(aY?=
sJ\]|]rS
OOwݼܺle4#W'e3_1#^/)?>2sї
JsrR<ػIop6NU)I1&~A껭IH79? 8U27bD,'iaqTuz^n~
y-0Sl\skw(yW+ȒW.Pyz>0)0A`*If%d3j1\Q+un]CE@ge35ROsttM!ʊK&%3ܗc=co"ss|A$xK]wfW8LM jJK2s7NZ@ƋoָW Mx``$RjЁhsC,O%8y+& zx``$4F٬c)S|xO`R  'x``$75k[ᖶor .-x```&rJ8\K\sӗJXMr7z1 S
Xx8 6^97*)BTt56mJվzsIX8%U#enWWx[qnF,áR8/ !qx``$2CʷbJqq|پcdeT .x J;>λ|$N^J9ox̜&ĽSr,\ke Rx[qBHº])ɇgV;}b &x̜*<᭷hJjW;vK  
&x̜*zc[#7YС~ ]xKJ'Rt7z" C&M=kq r0xKJ'=qs/=!Z?i /&@x[qV7ï6)> 3
PxKJ'Ro嶝ʓO?~Z*B &x bbNީ:"%A㾥=5x  &ruLú *x  G_7HxԱİ,Sx TҚ;ui: xKJ'riޥ(Ox/G~? m"x[qH	/)8/ *x3 J=wZ.#L$Hv?S;^6zWg%V02Bx  &ruLú xxKJ/\x3Q!\wCaQ{w |
$$xKJ'X颋Uf9 Y74x J=M#Xx^#+Ǒ^JӧKxKJ'Z.G'铂\ TqxKJ'r.W_=&^!1 yx[qߓr V''x[qaCJ_ݾ?$q2{f?Q h~xV[@~_1%i"qM@\R]DF:a qmp	Rqzu$^|\s@k׌7~
sSћ[t,F^)f[w{Ck	lG,xJ^b3CSlm4"r01'̡xF6_?Vz\'%1+[,͈gF*s݆*@M\H݉FhO3NNdlçO! mP-[8wHN&HI~be޵QdDť#,CX?0Tvi,C!4A4.x`
+L(}&PdhQYNT ayۏCGT>'Wgz33p/ڛ@ɾc"6_W.M][hnHv|sW|o6t]?'0 \`Lr)l-lRe~ JlPfl *Xj*%ӳnL|NDފZbZz2İ4qSw۱Nb쮭}zPp.BɜΥ{h;l;c~0rT:5ngtXIҙLa{2Whώv_^UgG<\*.K!m.HUisY1Vtݹ<K"6u)Z:e:lˌvgja[YwLj3JҜ%㇇$prc1ԭUQ3fM{S\s&ehY/Z,&m/?-xNH9<68 u!Z*,˒TU=NfxBaW33%4(T%Ğs̹_RaN$V2".v[D*[%15TSX"fJK(IF<j:d)TgցoMX;8Bg̟v}bp<M2)xVdeΔ*9Ҷn'p5J΂K3ZpɿV
iHoހl\^;Cujp)ӪD8%@yKb-;~pPH15ώ H~M,c $Ws[7mMw}iEb&n%aqf_-";OV$<Pv(:xwQQP%G5UQ!F,qy;~^)V!dr0=."'~{h)\۸ni7_FC6R;PKk[RhJK=q`W"hl蠂Dΐ`~"^w"%	qrmmPDKD?91ֳa͋F`toM&J+d]a ˅srky0/%!x,hLD*z:ߕ4护a7'z	J{?:>ZQùYlu:᠚Nd3 hͩNa{f|{AІ8p@v
0Ϸ?ݷ\/W%NyC?/L Y4>k= +ڭC`p;,R&br|<8)M$hD8(Hu8?"<G9ճ' J/q"z>,Su"<$ւ,ÄzBhYGCbWP]SU{?߲:h˒ ]R%=gj\W`^d*2ZՐȥR#nbYCZTpE. '΅䎽0ZwCI<!xg{<,8!xEۛ]bnX~z+:dWL%Q F4>%qAۥ؅CFvҟK[5}̜F7=ZN]-B]yI]0[Vj% KsTXOLw+.A{*l?(JgXiJlna<rPۦePng-l*za,H Ou,t-aa$\<b3c!zOM|BF;PN9Ս`ש@.uw>F`v\wMҭr-dxɵp3y݂Kz}yӝ|8F'F>UJ e+|ޙu{#v(s!
zس|v3~&ٍ>D`lP9
ڰx\B/RʹSl\v|h}U=*U  1+`L3x(wt~IFaa2zX<Ə؟N(}oxo ћĠY^STB-Z۱K*H7/.5\DÏ{S2CM9RzjL~Cy4|GM;gSm`nxWoES$7i~61vjmH/&.MDhC"P6xxםG( 	!3'D $ĥzK	*yw^a;3{W/A1qo*,)5SM薹A6c]|>ObD-Zݕ+sHWy)G1kPS|Uv1t>޳ؒ0ZƦiZ{f.7dI2+|"&|`#w}?`H|h4ur.攤=X`)$G^0cq"<ufx
F*m-jLs|,Z*Śas^m#G-0l7$@	E gKJůc{EVZtW J:#ҩ<u^W̹[[fxFMFu̜:_ F]iT~J
$rHࡢ_l!S8}B 4}F䅓$~	r8?c<h,ⱢYh )>44:IK7Ze
Q؛b̯F'Y`'krK"FB:SV4/-cn1'OWSo{و !40;48E!s(й<</@uI{Iu6x{#{>UD2ο'vzûh/A'm /(SN,ఆj̟| |ǟ/ͺƪPʌ.!Qq
C"fu,j?vMK7jHH$r"z<-sX^y"O%_}JΟc;!/Bc1OkWf)^N+t,'?
ʜ.R2W;My%}c}QKjzJV a0mR0P?0
M,# wVM
k½4"WQxnrw&=y䶆ڃg1<1zh=tO{">E	%19OS9xRn1=bm{CJPj8 $kUTwf)T"H=Dma3$Ő2Ԣ) ބmc66:~cn~c w$m֔!C!9<	kF S;p0l &xձ*tSXi赫w:~r"RF'`V1
b](wH*19z99B"K<7 [m[ \pGΆky^6@%(ո`ueAvS ow٩q/
zäcC4{$~io.a3|v?ETct֔J6Qq luqwYޏE8a*i/$W~&@JTBGy/9[ni2իq<OFX5 ~,uxTn@=D9EVBamoU3C`ٷі`E.g0ȅ{60k(q|P?~.H3׆3U==|yv;	F<O_\^Dsyd*L&*ezlA=U TPbСk&<eRCshCXET@9CkUՑg1 q96oƅ3AdjgF~Y뼉Z7T;BeM7qϣ=iB8uNK4E26i8 d"EE9b?ܩ}Z7ŧ	.ّ!NoR
c9
1c:Ώ<ϳ֡0iDW\_2*=<@wU[mz$ʛ6ỡ܌F-(Y&U<CEn<=a/-9xE{cCX,azN tl/B;c/e[;rCiR8kqlx;jZzHT'Q7vM53l5ʡeD=Yh/';ep4xmYL9F*͇&o߽]P]?$1mp0Խ' Kxm
0@u}Mv358]TdsdBLQ	@M^i/ w2w<4Y^cR/^^ULlnmiЦ5HgnJMK$Z4:ty={HoEr(JLɜƯ|_bx10EwNayEhX)MEcPbbK3rI ==!<|qt9)YM/IҖKg:<,Wk>T&]=\戠",	! &GFRevXkbBj$'->Gm7y%믞 kxU=n02R
dXv*tb
#w/%Y㓦	jY;FI܋yOc7lbc n|c,
KAgۿ%փ4N|K)J0aL4SqۏH@'gn቎aY 53$
\j^@7-K>g2tūocgG7{*I|*[xTn0+a;С@O+lӍ:Yd:KGvb;Y̀"iPb-h\Krp: R0m3Q޻tud?fW7%.R~eGG[zfǍeY=FR l&5Wh:43)	ThZgNew̴m:YqɠƨΔ31جfIyTb/fKx6 &MƬ
Et`~nZ<*kp_E%BS*wqSEكfs^^փBMup{?Yl)}(rSc^۹mX/@vl<]~i%.tYx}CQ춤wDN=sᕮ#÷l?]^kjIun$`}E(6ۦ.w꼺@:w4xRn0+VV4=TSR^pVXةR!{Ρ,̾8V u/%9 r.T̘|4) TEd36J Df {c}-YbEeS˂:M:ۋsEXE^9&-gP,D}swcs8(-vDf׻(zc#\ֻH,veվ?bhm|EfYTk
υXFRLF$I䩎VF%)?3>)L'pɶvLt/>hͲy{{X~hx;ȶe7燕$*(d&&'d*)腀hZ.(V#HOT  b#lPx˲eF7R"xVmo6l
F
dgM!@
$j_`ö0ȢARn}w$K~_,w=w<]EAgpEbM2Xs*ٌIj#3$<Q×+!5ˤRŗ Q~^fJq1b+3E%%-YE%_2K4_QqGՋ֌'?pCit:=z=X\TR	p4;b`=Nxȧv848tƓN8o䚸*t
]xߝÿ?3A囟%?ZuYSIQ/ngbDS&{$aO\i,p:I8ɔ.*#Ƀ	4&MHPXSm|!dJ`;T}jʙ*8v2|br-sey}to8) i Ɠ#DeIo./-ʞ]n
v-Tz{Ӛʝa@>nvVY&xsA1}xjvϾϾxnMPM*[FdÓIv2@Њ-CCJ(9LN>z5fO:MCPAzY> O&\̼U/HRh׮2 LH"Dlż1X p>,e}Y:׋@=q Qy\Wܐ{#}i>hvaX#quxv]K Wr2[>Ez9%Ma"@H+(\x7ϺBUˌ![^,U3)9k=>idS<Lz)U|Ria62UcblD
"=BKUVjE5بM{i?z{Ӵ/\p`n8ɴ@>L}Ta,[:*Ҩ1mxgT2@xsQRVt(%uT6x3C^m(xnG_
H99vjlN1U8^2}VA7}rf .iB9_:V"xmRR!+VƖ\cpm".(ب7\2X <{u|}Zuϰѵ*8C#ȋ; {`@$FZM:(^Dr-"7#1J!+qU+fdOSj6$}K^8k*4Bb<.Iqa0KlI?,u.Gۘ$'<6XФSt73 ysUmnE6|.K1ՅӇs>E]/#l(x[̲eB K l6?x[̲EZA-$ V!3/%BA/$(51E@k:qʼd%$BK*RslK*sR3RSKlr2@R%@p8_C a^HfINca -$fMeT9P>)I-I,IUP)<Qm{F "Q;xòeRFK7ޏe ;v~xUKo0>ǿB:yKt-
EЮ8dɓÖ>i!ȏ)'o\,m#y6VţԍΠpB5f;p~*ݖ?Z)yԼ1+SGuيpX
)Z@7-ʵkeq#l%'g`X\/ǷcN[c8ĳ#읐((lի*7/ȟlR{2T^ݫ:/PeJ86v)/l.&bEqױs{'W0/Odg_ԆfvF}V40kPy2c yZ`<x؛QB2mJTRT#x:_cvw9eDʼ)f:kB%vWB'w!]"!G	S	nIQ</5SEL|"jr}3%M!a M&&;5[GOI(5Smnwh{-lso/mЂ{x517	9³<l{/|"C=5 j"So0fxo": T~]c61-Řn.!mWO.<٭~~)}hH;QvX`L-:ܱ
*7,0GQ{O8KG$Gy>f _])mq-QgF|REI+ph}lo|d5x{Fs48S|3ӋKR5&[2ymncb 3x[wD%,%'~gWWpc3=6*fdQPR(J-)-SH,v+ONTԜ,*˙XPZ2{>k 29rx{o&'RqIQf^zDe9%%'Gs"c;̪YX8993]Rl<݊s}s44Ar%  "YZXZ\_\XRQ9?$13XUGAIDISCQ=\UiAN~bJ1vepUɉ%J`w)`qjuobY	ԚXPZϖ[PZ\9	 kfExp5`Cd!%}%zbw
'9h(g((((irq)$'2s;&hrr 1"gxv SL?4Rдo?}&9ƣV{-<])	GTdY0
Uy1h/ұj$ǍdXp 	")BmTG+mLB*hu-=^#G*wG؛;MPU`R[p#GHRB${rf;ck$3*_C&H<YFW#D7ثy_ B kRjyfx6|2{ \ss-hQ+V鳾N%ki*4ktǲCp0o˰.k>[mb=Ѧ^ϔD۳ަۓ*!Mtچv^f0'#aU:'%'>PWÜc# ՌBvrkḞ6ʥkt>T-qR-C3:k`U7,",f|?49)JUUЊaZDQRO{_E0x=N@IA4HA{$%'3YȲ-4 gA܂5fh4}ᑹ[]#8f[D<1E-rjATh%+&JF{XǑ~cB]yTr'	]akc!'@yy2aL`4e;:?A폿7?w۫AUDEX"U-U0"BLx( limit/ax%<CSvxUPj0=_09aK6clPgU	R6F}r[;Y{zOu@8t$Ij7&>(oF%xjqC]ΎZ!x+%R!98
ⵓ<2kv_T\,3[\*1f55H B=AsB}#d*?{_giZF>٢x6BeęaKTJ _">jd?S\c>G>Dr:SZ(c|co1*i*/xt83oHFQjbJs~i^FF'Oe~iYHLK,ϳRJ-/,/L-(AH$$VsqNbIR dNdC/ĂDOt2L ӳ1$hs~^ZfcA<JwroY4ir&-EFnȳI13&GLnw*W̄)
KL3<QF|b4'_<E	Mp-/̢(4Yxrd{eaFAyQ[qg^\Z\p닝Js|2s3KlP}`gr \gf1B(5d3@``r3A}XҜ&f@7B2 D

Htl 0YM,|,& xVr6=[_
h79!UlG3vS&ӁHHB T߻P"%mOv߾],VE,VTB@Uu]JAVAR0hfˠ*bºYVJ+kT+ I޿+[ &Mڊ`ZU*HwntezU@tj#+UZNTn}"^; 4 8Ƚ^YCg,[\B&[T+B+Uo< <3Y[HJ\
t`٘"e}e|bT`&;,KZzf8`KOuojIz%TYjvAgsdtMb|$F[KXbEػkbt]>JmZ.H*`tʖ#rE	j#B.//)SEtI7#bEalgC8Xٞ1s [LF֙,,h{2hUy(9+6HF,4;k.&-I${u@<6/(>Ks'Ќ
OA*Y@J) c4>/rvÅn7,;9n7\rG	6JJb([Ⱦ˺7yDSLB' ɼ/6&eo*GZ|BiiM~o$\mK
&)YNsNq/F9oE};J0By:%&~ֽ#Z؞κ瓥g4
F&+M"uy8{CJ0J_ JSQ_Tof)DZ]n\(8DA(		)XQ5Z:ZQOVCI0#J.HO$l=Lx"xo*SifNRnfrQbr~4y
{bIjyb%B."0THjnA_.MffrrIL/*YPZ_Y_ZLSpKLs,(s+SUP*JIM,NUW/(5/17չx
&?ɓX.,I٬T_◙dMdSgך\˶=bBr\_
4X5DCI? S 3/]IG: \f#&F :xx8f9ru.I YDxEn@D|{SEo8gcx]"7{<~YWeP!%~ aRZ\^	/U^rH\3|{6N1辔/>>cH3شLl4&SYC0"8(b7PsCT]Qhr\,"T߯GSjm<^rXW?KVox.?a3Z1mƪĴ;,fSN&F 
wx"o*SifNRnfrQbr~4y
6.$=ĒnLYFi
yizzye

JE9ũJ
\`RsS7`c<;BQ~iIjk~bAdGvIfǂmz M.^x˳%)855%5eS,<yٴq
1x;ɻaTHjnANbIjRnfrQbr~	DhJ&gIjɩ_◙dm^Β + )xo8f9oIkN֞l 4dQi$x'_+=1Z6s%gA\
$nYxo|yF/ 6]b3x7+855%I6Nudf+s'?``vuuwq,²QJ@Toú sNLx·,<yٴLxwoz̼73 Y\VYx%%$$'u7KIjEll 	K\xwoz̼9K4'_e,
 (A&x}Mj0= UJW-L [cGD+))ͼy|ofPD	:ɬ\tr,4=z!~jLMmxK-%#S.S6$5g-G-{tR)S[NŅ@15i%S8i kGlZ 1';\_BT4z*>v-e&WzR;fx@/m1^QlnŜ0=axoCBIFQjbJ'g@bzjs~i^BR ,J 5[~\xwwz̼7+2-d,²99(
<+tRg  ʔ6ac VlxƷ6f^6mF fxƻw6xf^	sbAIrFBqIQf^2f AAxwg­''\ _Ulxtc_J $,x4/pdSV͆'4|SqwNUy 6
bl,xomX$,(xgCf.΀bҼ̼_V,uL dU(xtu_,0MМ³ف_$9G`de3bWrG gpxsg+ Dxw*fFl7i3 Q>x1AifWpjjKL=p'B}~{jIj^_&gf`kP	)(&*qqrqqe+X* 5I4dA%c`	Ԣ"%Eyez%-P(*e@LLL\̤Pb:4%	V*A.)*zyɁ,*@!
,"'g@J@L|prl` 7)"39؛ lxα{sN~Dْ!E)žy%
`Wq#7P^@b^frN拌9%K2lSKR4B<\]}#CB484(%9gj*Q/2jIau&Ђט櫡{
4]Y\S[=xzanpOyo! j
'xcpackage repositories

import (
	"context"
	Config "micrach/config"
	Db "micrach/db"
	"time"

	"github.com/jackc/pgx/v5"
)

type PostsRepository struct{}

var Posts PostsRepository

func (r *PostsRepository) Get(ctx context.Context, limit, offset int) ([]Post, error) {
	sql := `
		SELECT id, title, text, created_at
		FROM posts
		WHERE
			is_parent = true
			AND is_deleted != true
		ORDER BY updated_at DESC
		OFFSET $1
		LIMIT $2
	`

	rows, err := Db.Pool.Query(ctx, sql, offset, limit)
	if err != nil {
		return nil, err
	}
	defer rows.Close()

	postsMap := make(map[int]Post)
	var postIDs []int
	for rows.Next() {
		var post Post
		err = rows.Scan(&post.ID, &post.Title, &post.Text, &post.CreatedAt)
		if err != nil {
			return nil, err
		}

		postsMap[post.ID] = post
		postIDs = append(postIDs, post.ID)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}

	filesMap, err := Files.GetByPostIDs(ctx, postIDs)
	if err != nil {
		return nil, err
	}

	var posts []Post
	for _, postID := range postIDs {
		post := postsMap[postID]
		post.Files = filesMap[postID]
		posts = append(posts, post)
	}

	return posts, nil
}

func (r *PostsRepository) GetThreadsCount(ctx context.Context) (int, error) {
	sql := `
		SELECT COUNT(*)
		FROM posts
		WHERE 
			is_parent = true
			AND is_deleted != true
			AND is_archived != true
	`

	row := Db.Pool.QueryRow(ctx, sql)
	var count int
	err := row.Scan(&count)
	if err != nil {
		return 0, err
	}
	return count, nil
}

func (r *PostsRepository) Create(ctx context.Context, p Post) (int, error) {
	sql := `
		INSERT INTO posts (is_parent, parent_id, title, text, is_sage, updated_at)
		VALUES ($1, $2, $3, $4, $5, $6)
		RETURNING id
	`

	var row pgx.Row
	if p.IsParent {
		row = Db.Pool.QueryRow(
			ctx, sql, p.IsParent, nil, p.Title, p.Text, p.IsSage, time.Now(),
		)
	} else {
		row = Db.Pool.QueryRow(
			ctx, sql, p.IsParent, p.ParentID, p.Title, p.Text, p.IsSage, nil,
		)
	}

	createdPost := new(Post)
	err := row.Scan(&createdPost.ID)
	if err != nil {
		return 0, err
	}

	return createdPost.ID, nil
}

func (r *PostsRepository) GetThreadByPostID(ctx context.Context, ID int) ([]Post, error) {
	sql := `
		SELECT 
			id,
			title,
			text,
			is_sage,
			created_at,
			is_parent,
			parent_id
		FROM posts
		WHERE
				(id = $1 AND is_parent = true AND is_deleted != true)
				OR (parent_id = $1 AND is_deleted != true)
		ORDER BY created_at ASC
	`

	rows, err := Db.Pool.Query(ctx, sql, ID)
	if err != nil {
		return nil, err
	}
	defer rows.Close()

	postsMap := make(map[int]Post)
	var postIDs []int
	for rows.Next() {
		var post Post
		err = rows.Scan(
			&post.ID,
			&post.Title,
			&post.Text,
			&post.IsSage,
			&post.CreatedAt,
			&post.IsParent,
			&post.ParentID,
		)
		if err != nil {
			return nil, err
		}

		postsMap[post.ID] = post
		postIDs = append(postIDs, post.ID)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}

	filesMap, err := Files.GetByPostIDs(ctx, postIDs)
	if err != nil {
		return nil, err
	}

	var posts []Post
	for _, postID := range postIDs {
		post := postsMap[postID]
		post.Files = filesMap[postID]
		posts = append(posts, post)
	}

	return posts, nil
}

// Check if thread is archived
func (r *PostsRepository) GetIfThreadIsArchived(ctx context.Context, ID int) (bool, error) {
	sql := `
		SELECT is_archived
		FROM posts
		WHERE id = $1
		LIMIT 1
	`

	row := Db.Pool.QueryRow(ctx, sql, ID)
	var isArchived bool
	err := row.Scan(&isArchived)
	if err != nil {
		return false, err
	}
	return isArchived, nil
}

func (r *PostsRepository) CreateInTx(ctx context.Context, tx pgx.Tx, p Post) (int, error) {
	sql := `
		INSERT INTO posts (is_parent, parent_id, title, text, is_sage, updated_at)
		VALUES ($1, $2, $3, $4, $5, $6)
		RETURNING id
	`

	var row pgx.Row
	if p.IsParent {
		row = tx.QueryRow(
			ctx, sql, p.IsParent, nil, p.Title, p.Text, p.IsSage, time.Now(),
		)
	} else {
		row = tx.QueryRow(
			ctx, sql, p.IsParent, p.ParentID, p.Title, p.Text, p.IsSage, nil,
		)
	}

	createdPost := new(Post)
	err := row.Scan(&createdPost.ID)
	if err != nil {
		return 0, err
	}

	return createdPost.ID, nil
}

func (r *PostsRepository) GetOldestThreadUpdatedAt(ctx context.Context) (time.Time, error) {
	sql := `
		SELECT updated_at
		FROM posts
		WHERE 
			is_parent = true
			AND is_deleted != true
			AND is_archived != true
		ORDER BY updated_at DESC
		OFFSET $1 - 1
		LIMIT 1
	`

	row := Db.Pool.QueryRow(ctx, sql, Config.App.ThreadsMaxCount)
	var updatedAt time.Time
	err := row.Scan(&updatedAt)
	if err != nil {
		return time.Time{}, err
	}
	return updatedAt, nil
}

func (r *PostsRepository) ArchiveThreadsFrom(ctx context.Context, t time.Time) error {
	sql := `
		UPDATE posts
		SET is_archived = true
		WHERE 
			is_parent = true
			AND is_archived != true
			AND updated_at <= $1
	`

	_, err := Db.Pool.Exec(ctx, sql, t)
	return err
}

// Returns count of posts in thread by thread ID
func (r *PostsRepository) GetThreadPostsCount(ctx context.Context, id int) (int, error) {
	sql := `
		SELECT COUNT(*)
		FROM posts
		WHERE
			(id = $1 AND is_parent = true AND is_deleted != true)
			OR (parent_id = $1 AND is_deleted != true)
	`

	row := Db.Pool.QueryRow(ctx, sql, id)
	var count int
	err := row.Scan(&count)
	if err != nil {
		return 0, err
	}
	return count, nil
}

// Updates threads updated at time by thread ID
func (r *PostsRepository) BumpThreadInTx(ctx context.Context, tx pgx.Tx, id int) error {
	sql := `
		UPDATE posts
		SET updated_at = now()
		WHERE id = $1
	`

	_, err := tx.Exec(ctx, sql, id)
	return err
}
,*xmkAMTM/ aC֪A16[<hi.3̤"e`x7'ŋMD&9Ԛ|}ߛso{t9zogDvW_T8
ʹR"he֡*PL?2m\^/9׏Y\c|9voQ>NLfQ%>1v2'$5F lEo0M95"ls{sa:ɀ 8B&$4*7=0pЮ(5EiT@^wnaxkBl<[]B+ҢP
~!|wuԫ3!J¹kMZEup0׎ޮ NdShPsc 	]$in
,~ F'6
РTx߃1tRN%_?x%uCr?kIfINd?6oԊKJ 	xUO0~N#B(%0ee/Unﻳf⥱w.XuEVJ:^K%W*W%<OSs&RN2ZK2Aoir&2)=5#G+-WvdD4aE"Y4_c_Ep*kH;o(E.V@ƊzbQoy Z瑆?  :Ne*;zRh?HP(A:a-+72vJ3y)RJ`S{1lJ'fj&E>&~jl݂ChAugDqxd;t3Ms}5OSP<eO^i̕jYE*&Q	ҍvOVgDCYBkߕ*!:މaLĶ%֓^\uĸcH4A?.KDװ7q-; \윃DrY|Ovއ'zpYL"T9j.QVDceBypl+=嚠;[yl+%!bD\Xxfy4|XF-.xd+l!μ<SvFnaf,!g8<
Ԍݱܼ0_M"~̹zJvѲpuw{V^h彌[4Uz$^@SľLذ8x};F1oR!L`dlQ]@mFLGY4 ?}ی5l S	&L9UĮR~cr[?b}%)t;S$x$={\ћSxxYR8r`8:qC陇Bf
_x#<AI>'?]9?/-3]A)73(19C?W⚸ZdQUҼdϼьb@y%@u%%z!.\@<+T\ivj^BYbg@~~^M=


\\2Jqd*irr ,6$xc>ɴAqI̼T%MZ. Q@xw*d-1md˼M yRtxa8&knNe|c+;'K<%;\jvKgl$f	 WGxpaGjbJjRPjZQjq&W- Բ
yxT]k@|Xh!/\҂HKRYWw>4'H6؝ٝ=vR`_s|g	m06 lɒV	VE2$*'$΅Y@-wL*XF0ŇɧB,*R n: eV ʓ=|ҩ~VS4xhX_10{19ur3B1'>&f+`wĤzū
`!.ɍ=7'1G͑:\(Ɖdzc-I'S?9%$,adR&P$ȹ%DH~h3a%*	Q{Zzi7MAsjck
pߒ*-A	s,|}sn5j|u[	[iQ"2TX$ea9!Yu}LK=Ԗho#ԏp[SiuM9[ik:*uVgxCp=\^0-nr=?Wۘۄ_]]S7,ܣ#-&[&dWA4_a]3A0ֺe٭C?r_MB7:wxsk%?PT*Wk7m,Sȕ{`ϖ{dޖThX;VӑvC46+>Rx%(CTS?H (5$>3EVAŐs>l 
2xkkfSٝ1^Ͳ !'xsX6c»ف_q&9e&U,/.	KLlΧīř|?;$$'տ($d܄<95b̜b׊b
V
%9z0I43/(4n\3"vpN̪b|tlńɷ9@ Q$MRzyHdeb9P[%'?Cmu/,ݹ	xkC6FHfINQHjEkQQ~ojqqbzRgBkD,ʓYL'7L>Z  }tdx%Vty1E}&"[)$(e+楗d($g&gOeUTHQ,J-)-S(,IUUPRRPSS(I(QP4jj89
QR 1+4/Y ̜͞Y 8Yx[e6&n[Xq  HDkx{εkg?Xt KYx[+/4`FMVY}}Ҽdl̜b׊j..+7 nI_x{5kCsYbd70@H+x%degVN tpx,h
9 X)$x[ya:Wxx6g˘q  HRx{usCsYbd70  h4%x[+(OĢ+63cl:{L 
x[ya:Wxx&gLa))*M( 
do]xk[!aռ'/ 2Xxxk%!W(J!-B!%D8#dr:FBfbgq@bQj^B5'P0GV!pqqU(/.)
( KMh_	prUL
BĠF()X*pTUjL^&^q@FgYZRZ` 6"VW2]ϵHChm\\PɯPox0~RE4̒$\Ғl<]̡@:$?;5OV$ZHLN-qLPI+UU(((Ŕ4BjncLﲕ3M*:8d/iɋĂ&'sN,甘ZXZ\h2AZnsw4zf}}b8MV,-a oNleNxlvҍ'r'lriV{ +
I$x{}GΓC'c POk]xkkސ;	, 	)xljCd{6ۋp aKxv ?82	data := Repositories.IndexPageL0[log.Println(captchaID){d&&thread?R
Q
?T	(x{uuƀ &ʂTϼԊj  O1xeaWWR??kUb]Xnkx"S`;ɚ Exl6}̓7eyfX ;x)pg*i+'{3.Y_0 
nMxlI^ѵsɳxLfd\#J"9WR~, *팓؏o!4KusIAjnl W]xۤH^f|͍b*]g	mNx{sD}, &/fx{¿}D}w&g$2*L~"ikU 
&.x[~}C'FIfINBIjE-PSKU ̞kxc~ƴAq s?xʳg73KjZbiNlWL UY8xۤߤ!]]__!J!1%E,1'3%$3?OA$$'U!H$Dsr.fiR4L6Pl( #gox[Ⱦm3 
>	bxk3!~cGɯx&H1jNp(R w58993R"x'+
L.f3ys"46^'D?9oIFQjb&W- *
xۤRfB,{f<ĔbY6p43Ov@DJT3'?]/(3$'O $Csp׊+ !TY
ǣ8'6y=eWFFII^pIbIiBzfGRQ~iIRiAJbI9J\\ +7e1x{)Hf<fҼͫs Ljxoֳ \!fxUP/AA$*^f[	&DQq̚"g4?q7gG'j8}oo>2wpklݎ^&fة,UJ3OIyZPW'2VDFDˡ.ȃ&G[Cic&;āHs
|T Ǵ9ggbMĘyWĈ\׮:ڤZV6#!<*TѾCPk"뺁9g(١x.C(C\5XSDx<N*Ne/C$~_~񆵋 q+;hfD_Xl(qBq)rI	(qccђ%e,|v7co="e3_pfZZ}Z)}?x;!K`̼t+[d=ԴҜԢJ%Ƈ <x%Ip d9!Ҽɲ\i

6

Փ3ϸtrdgFjLyP,?'H[3PadMf	iv
H*L~ɅP1ٗ1|K/,pͲ hJ@Uxc>4SbrvzQ~i^c	Hrd*irr Lxk{"!3DAprkNfnfdG^x&☶ih
Y=C2RS\+2K5<]&Jr&()X*$9&fj %KR+JB]545@2m2sbE%Ey Y`Z0Z E/(5'58UC,SQbr `@@Gx{"@bC[k!''i49ь7?-8DG!'37d;Vy&c9i#{js~i^dY`WWgP-D&K1p&pqq+XM~"lWZQ⯡P\YX2L!33HVK/891OC,t/gQjIiQD?/ Ս?Aox;!"0ac7gd <c"Hxʳg73KjZbiNlS xW	-Yx;!cDɳսt483Rm2s89B].콰¦[/6 Y.lQtb/lJ6M~4
ܼ@򋔬JJSk'۰Mae/(JML)<_n<0bdI0R&s%V q') ,+|5.7xjACf!GJ툰d񲰢!jtCFrhwjv;cw"HX <|A 	<<W{d%~,}_~J#ۗU7doue3sCg<kd) 0\YAΫ ~)Sz50x4vAuq:%1Q'Ĩ0k,gxËtԃhS'ȅb)#ȸfq~в7s)#0cN0̌рQ*fE^t-:!|Nޱ?bǢݝnMpx9MF&O_4=ʐ*976h]]d3y#w<a0]JuRO;Hw%L$'oyx֪³kGRM[Fy#\`1:uJDx;g*|&&z%9J:
y9g3	
kn> 6x3LݘEM&3Imfggvc 0KxkF-EfԴҜ͆,*L iL}gx;eC y}xqmBTqIQf^:g@~QBf^	gpjjK͋'dQM+*)  >DB1\ x{ƵkDfҒ"T̔ĢT2 3xk[)>FTfK^@~~B^fB5'gQjIiQB@~qIKH39?/OG!HQ14(U(YZQ⯡9ّWf|.1ΔԴ"VԜTM&xz(rq& .//VXZT1y(kNfnf	ɯ8mf89U^47pY@bWOe3qj'/'|76Ĭ0ّUJ=ĩECS!3@Z. ]x[)~TbC97d]v)A␌׊bO%Alza@33M!HAV!/3G(($ւɔԴ"<ԜTM.Lqa O${x;*1MbWY'plb| RyQxõ}DCBu=6o`a ]eDxuB@qIQf^:g@~QBf^E%Ey
yi\yeV

ye:@HB\ 7vQx{>Asd!WAř%Ez)&2{l (jx{qe<G^j~FIIDĔG';2Lnc|Y'=D,T;y)! kZdoCxrez⒍[0 5vxcc߰1e&C i BOx[)~o.;d]vӹ :>Uxc?6!ć=w2bLH>cZ I~xc6a=
.I
JE)IJ\@Rzy%`ʌ1eLH>cZ Wxvmª&֘ws%-F i	x[)oI٤&+0+Le<[ (xóa:ob1Mݜr	 W-Hxóqrٓ:'c|ilv5@q2JwV3 xʷg;"9'1uN,6,YXkeX&b<U9/3gJ `=,Cxvmj>$+'>7vI,ܬϨ mx}ԒҢ<bYǘ 
MSx{εu*wIeABHFQjbj&0J3N^_\R ѱ 6UgT RJઝg1EA!3Da⭓3 ;=!lBx;Ŷm3<Lv  f_xỷd572z0 :l9xu&Ma,,d T|x?oX'OdFm zg%xηc. 
k<k6x}͢ =Kx}ɢX`~f96 	!o%x~}C1DoY 5>x$jPZŕgP d(&N!Y\Yĥ E@E9\\ CxegKMR(-ϳR. 2uRsRSc'~  {iUx̶uꉗ]<2K448'3Oa,,th2'
gN~rbNF~qd]f5 yxϼy;U2s6>f Y lax:uC=匢 P0xϼy܌JH3 VNlxeC匢  )Tx{ƵmDCe&26FԢ"+[Լ2=%= Si?u@ e\'c,+/-I-swPOO,J)VQp+)I-*sO-qqKirq)(JML)ַkL"PUU}+.49EKR5&s''d X Ͻ_Yx[϶uJRzfIFi^r~~V~F~z~J~Ij^~biI~N~bĄɪ30 ,(tx{uCKJin8N 7xK0@=M~($B!PI,ۗ^YA͉-YSMC-l٨IQQ,cHB((BDN{NM뉴wyN<(@ܺ)ΟHZHpx]C|CeJtK.*Mq=H1hʰISxAj0нN1B,RkƩ%YI x>D@'bYhlHF8b@gڒΑ:SMnF5^eM5zYѥG*˶O,>4ֿNja8 Fծy]^[Q\{^A, Uz~Эy7VŐxtree 75dc7c34c8b2b7743bd7f38e2ce5dca2d8ff3ae7
parent 1dcc73407317052265733f3a34e86d71d4972c4f
author Yanislav Igonin <yanislavdabest@gmail.com> 1784144504 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784144504 +0400

fix(deps): update vulnerable Go modules
ۡVxtree 17eac77b81dfb0cd56b99360dff9e249d71e4be5
parent c09684e2faefaba9e9122bcfbaabba5ebdde8131
author Yanislav Igonin <yanislavdabest@gmail.com> 1784144348 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784144348 +0400

ci: replace legacy deployment workflow
<eXwxtree d74b19080d497c25caf899e88724a471f4b65ba7
parent ce11d6ff5e6a38095035672a600188f4e8287ba3
author Yanislav Igonin <yanislavdabest@gmail.com> 1784144118 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784144118 +0400

build: add multi-stage image
jMQxtree d6e5122ac559b5abf5387a0e4fe009c3241cd4c7
parent e3d1c05558b3f5bb84ee90d4e93fcc6c1f01c64d
author Yanislav Igonin <yanislavdabest@gmail.com> 1784143910 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784143910 +0400

build: add local PostgreSQL compose
uUxtree 3be888d0bd68bb19f9a363df0fb5a9a84a05e2b4
parent 2b98b9a55ab982d2fc8a39f1de74e9fd3c440a6f
author Yanislav Igonin <yanislavdabest@gmail.com> 1784143661 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784143661 +0400

refactor: replace deprecated I/O APIs
 Uxtree 4e26bd59a07ea5e5399b7040c827d64cf23db11b
parent 94adc28e65b4bc4709e98845386088fb0895f5e7
author Yanislav Igonin <yanislavdabest@gmail.com> 1784143468 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784143468 +0400

refactor(db): migrate to pgx v5
R*xtree 85560ad411b8c89358a6c4f1ef5942187aa32cff
parent 35f0ee85100642b2f977124106bb61d400ef2ef8
author Yanislav Igonin <yanislavdabest@gmail.com> 1784143107 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784143107 +0400

fix(gateway): preserve duplicate auth behavior
hX<xtree 7b61a00987bea5068c1933601575e94571cda225
parent 9e1d6eb95ba11235a5dda9e306af00a0eb029c46
author Yanislav Igonin <yanislavdabest@gmail.com> 1784142849 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784142849 +0400

build: update Go and Fiber v2
9Pxtree 8f583e2207dd0cf585ec51f49f260c7841a032a4
parent f82177e878ebc99234f229e3a8f55f6e27064a21
author Yanislav Igonin <yanislavdabest@gmail.com> 1784142515 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784142515 +0400

test: characterize legacy behavior
a S֝xtree 4fae49d1c2660fe9588535642c00e1d4def7654f
parent 0980fbc94c08ef66b880eaf4ec1a99c431fc27a9
author Yanislav Igonin <yanislavdabest@gmail.com> 1784141465 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784141465 +0400

docs: add Wave 1 implementation plan
Tx	tree 66ffa83a0aa8814968da6e6aed3df073eecc7625
parent e3026e99f419615f2e1d93552e7d0f75cad2bf33
author Yanislav Igonin <yanislavdabest@gmail.com> 1784140869 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784140869 +0400

docs: plan project modernization
`Txtree 131cf5e02d116fb65d8f2ae84c45b24d749ca482
parent e28cc97465eda3fdd0ba9feb30dc54c1dc1adf95
author Yanislav Igonin <yanislavdabest@gmail.com> 1784124177 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784124177 +0400

docs: expand repository and setup guides
EX1x tree f9964b25a4edf40530478dab538c0857c56a2fdd
parent a967ae8fb6e7902fb5ebe89d9d7f148f0f356da7
author Yanislav Igonin <yanislavdabest@gmail.com> 1784123687 +0400
committer Yanislav Igonin <yanislavdabest@gmail.com> 1784123687 +0400

chore: add agents md
O9xd100644 .dockerignore }oLAg100644 .env.example aZ?ahB5-8E40000 .github caC;nٙ100644 .gitignore 5*MxUh.%100644 AGENTS.md sy~x4T100644 Dockerfile Z%nDt&SC.100644 LICENSE ;TQC/1lA_-z100644 Makefile uz~4Cyd~f
[100644 README.md lLvkrAnbc40000 build C^ގvAVкķ40000 config IΕ\IGq6R40000 controllers {Z5PtOdr9ڤ40000 db VZئ8]>V100644 docker-compose.yml N!m<z~`AV40000 docs 1FRlx^4?B-40000 files ,,ߗP40000 gateway JyK4&Mwc/100644 go.mod U5U"ׂP:ȘzT100644 go.sum `WWeR>â100644 main.go tomcdaB40000 migrations c⼇m^F|40000 repositories 8U5nفĎ@)%=40000 static '_"k
pt40000 templates Mla_c\=/40000 tests #O ^0DΈ40000 utils /U6aL+zxO .git
.github
.env
.env.*
!.env.example
docs
tests
uploads
micrach
*.out
*.test
x]N0EFl"Y0GEEP$|LS@t5s5s>\K*m6HD4쾑BZԄ%dyHEvWuiYw4uF?/ͦk=yN!OO|7zQ|RafɥPE(9rP[yh\x]@Iz*Ђ&V$p-Uɢ/CaZxN 100644 dependabot.yml "vUb@ެC[40000 workflows q(֐+Dl-G!xversion: 2
updates:
  - package-ecosystem: gomod
    directory: /
    schedule:
      interval: weekly
    open-pull-requests-limit: 5

  - package-ecosystem: github-actions
    directory: /
    schedule:
      interval: weekly
    open-pull-requests-limit: 5
Sx$ 100644 push.yml T~bd((8o?xname: CI

on:
  push:
  pull_request:

permissions:
  contents: read

jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Set up Go
        uses: actions/setup-go@v6
        with:
          go-version: "1.26.5"
          cache: true
          cache-dependency-path: go.sum

      - name: Verify formatting
        run: |
          files="$(gofmt -l .)"
          test -z "$files" || { printf '%s\n' "$files"; exit 1; }

      - name: Test
        run: go test ./...

      - name: Vet
        run: go vet ./...

      - name: Build
        run: go build ./...

      - name: Build Linux binary
        run: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /tmp/micrach-linux-amd64 .

      - name: Install govulncheck
        run: go install golang.org/x/vuln/cmd/govulncheck@v1.6.0

      - name: Scan reachable vulnerabilities
        run: govulncheck ./...

      - name: Build container image
        run: docker build --tag micrach:ci .
b йx	# AGENTS.md

Guidance for coding agents working in this repository. Keep changes focused,
preserve existing behavior unless the task explicitly changes it, and verify
all claims with fresh commands.

## Project Overview

micrach is a small, server-rendered, single-board imageboard. It uses Go,
Fiber v2, Fiber HTML templates, PostgreSQL through `pgx`, and filesystem-backed
image uploads. It intentionally uses little browser-side JavaScript.

The service supports thread creation, replies, JPEG/PNG attachments,
thumbnails, CAPTCHA, rate limiting, pagination, bump limits, `sage`, thread
archival, and optional external gateway registration.

## Repository Map

- `main.go`: application startup, middleware, static mounts, routes, and server.
- `controllers/`: Fiber handlers, request parsing, HTTP responses, and form flow.
- `repositories/`: SQL queries, persistence types, and template view data.
- `db/`: PostgreSQL pool initialization and startup migration runner.
- `config/`: environment parsing and defaults.
- `gateway/`: optional gateway registration and authenticated ping endpoint.
- `utils/`: post validation, upload directories, and image thumbnail handling.
- `files/`: shared filesystem read helpers.
- `build/`: production CSS cache-busting rewrite.
- `templates/{pages,components,head}`: server-rendered HTML.
- `static/`: checked-in CSS, icons, and error images.
- `uploads/`: generated runtime files; ignored by Git and never commit them.
- `migrations/`: ordered PostgreSQL changes named `<number>-<description>.sql`.
- `tests/`: optional Vegeta load test, not the unit-test suite.

## Runtime Flow and Routes

Startup loads `.env`, initializes configuration and the DB pool, applies
missing migrations, optionally seeds data, performs production CSS rewriting,
creates `uploads/`, then starts Fiber.

| Method | Path | Handler / purpose |
| --- | --- | --- |
| `GET` | `/` | Render paginated thread catalog. |
| `POST` | `/` | Validate and create a thread. |
| `GET` | `/:threadID` | Render one thread and its replies. |
| `POST` | `/:threadID` | Validate and add a reply. |
| `GET` | `/captcha/:captchaID` | Render CAPTCHA PNG. |
| `GET` | `/api/ping` | Gateway health endpoint; registered only when `GATEWAY_URL` is set. |

Static content is served from `/static`; generated files are served from
`/uploads`. Thread and reply creation spans PostgreSQL plus filesystem writes,
so review both paths when changing upload behavior.

## Local Setup and Commands

Use Go 1.26. From the repository root, copy the development configuration,
start the PostgreSQL 18 service, and run micrach on the host:

```sh
cp .env.example .env
docker compose up -d db
go run .
```

The example `POSTGRES_URL` matches the Compose service. `make dev` provides
automatic reload and requires `nodemon`.

Common checks:

```sh
go fmt ./...
go test ./...
go vet ./...
go build .
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /tmp/micrach-linux-amd64 .
```

`sh tests/load.sh` requires Vegeta and targets a historical public URL by
default; change the target to a controlled environment before use. Do not run
the load test as routine verification.

## Configuration and Generated State

- `.env` is local and must never be committed.
- `POSTGRES_URL` selects the database; startup applies migrations automatically.
- `IS_DB_SEEDED=true` adds sample data on every startup, not only once.
- `ENV=production` renames CSS files and rewrites templates in place at startup.
  Do not use this mode in a development checkout unless that mutation is wanted.
- `GATEWAY_URL=""` disables gateway routes and registration.
- Uploads are limited to four JPEG/PNG files, 3 MiB each. Titles allow 100
  runes; post text allows 1,000 runes.
- Runtime uploads, built binaries, `.env`, and load-test artifacts are ignored
  and must remain untracked.

## Architecture and Coding Conventions

- Keep handlers thin: HTTP parsing/status/rendering in `controllers/`; SQL and
  persistence behavior in `repositories/`.
- Keep DB startup and migration mechanics in `db/`, environment parsing in
  `config/`, gateway behavior in `gateway/`, and reusable helpers in `utils/`
  or `files/`.
- Follow existing package naming: short, lowercase names. Use `PascalCase` for
  exported identifiers and `camelCase` for unexported identifiers.
- Format Go with `gofmt`/`go fmt`; do not hand-format with spaces.
- Follow existing kebab-case naming for templates, CSS, and migration
  descriptions. Preserve current server-rendered approach and minimal-JS goal.
- Use parameterized SQL. Keep related DB operations transactional where the
  existing workflow requires atomicity.
- Avoid unrelated refactors. If a task exposes adjacent problems, report them
  separately unless they block the requested work.

## Change Guide

- Route or request behavior: update `main.go` and/or `controllers/`, then cover
  status codes, redirects, validation errors, and template data.
- Persistence behavior: update `repositories/`; add a migration for schema
  changes rather than editing an already-applied migration.
- Schema changes: add the next numeric file in `migrations/`. Keep filename
  shape exactly `<number>-<description>.sql`; the runner parses it directly.
- Page or component changes: edit `templates/` and matching `static/styles/`.
  Check catalog, thread, error, empty, and pagination states as relevant.
- Upload changes: inspect controller transaction flow, `utils/`, repository file
  records, original/thumbnail paths, validation limits, and cleanup behavior.
- Config changes: update `config/config.go`, `.env.example`, and the README
  config table together.
- Deployment changes:
  - `Dockerfile` builds the application in a pinned Go builder stage and runs it
    as a non-root user in a small runtime image.
  - `docker-compose.yml` starts local PostgreSQL only; run micrach on the host.
  - CI verifies the project and container build but does not publish or deploy.

## Testing Expectations

Go unit tests are checked in across the application packages; there is no
coverage threshold. Add `*_test.go` files beside changed code, use `TestXxx`,
and prefer table-driven cases when practical. Repository tests must use
disposable test data or a dedicated database, never a shared production
database.

Minimum verification for code changes:

1. Run `go fmt ./...` and review the resulting diff.
2. Run `go test ./...`.
3. Run `go vet ./...`.
4. Run `go build .` (or the Linux CI build for deployment-sensitive work).
5. For templates/CSS, start the app and manually inspect affected responsive
   states; include screenshots in the PR.

For documentation-only changes, inspect the rendered Markdown, verify all local
links and commands against the repository, and review `git diff --check`.

## Git, Commits, and Pull Requests

- Inspect `git status` before editing. Preserve user changes and unrelated files.
- Never commit `.env`, credentials, uploads, binaries, or generated load-test
  outputs.
- Prefer focused Conventional Commit subjects, such as
  `fix: reject oversized uploads` or `docs: expand setup guide`.
- Keep each commit buildable. Do not rewrite history or discard local changes
  unless explicitly requested.
- PRs should describe behavior, config/migration impact, verification commands,
  linked issues, and screenshots for UI changes.

## Agent Completion Checklist

- Requested scope is fully addressed; unrelated behavior is untouched.
- New behavior has tests where practical.
- Documentation and `.env.example` match config/code changes.
- No secret, upload, binary, or generated artifact is included.
- Fresh verification commands pass, and final report names commands actually run.
'xtFROM golang:1.26.5-alpine3.24 AS build

WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /out/micrach .

FROM alpine:3.24.1

RUN apk add --no-cache ca-certificates \
    && addgroup -S micrach \
    && adduser -S -G micrach micrach \
    && mkdir -p /app/uploads \
    && chown -R micrach:micrach /app

WORKDIR /app
COPY --from=build /out/micrach ./micrach
COPY --chown=micrach:micrach templates/ templates/
COPY --chown=micrach:micrach static/ static/
COPY --chown=micrach:micrach migrations/ migrations/

USER micrach
ENTRYPOINT ["./micrach"]
!~
x U.PHONY: run dev infra-up infra-down

run:
	go run .

dev:
	nodemon --exec go run . --signal SIGTERM

infra-up:
	docker compose up -d db

infra-down:
	docker compose down
6xS# micrach

micrach is a small, server-rendered imageboard written in Go. It provides one
board where visitors can create threads, reply with text or images, bump or
`sage` threads, and browse the thread catalog without a client-side SPA.

The project began as a Go learning project and as an experiment in building a
lightweight imageboard with very little JavaScript. The former public instance
is offline because it required more moderation than the maintainer could
provide; the source remains available for local use and development.

## Features

- Server-rendered HTML using Fiber templates
- Thread creation, replies, catalog pagination, bump limits, and `sage`
- JPEG and PNG uploads with generated thumbnails
- Optional CAPTCHA and request rate limiting
- Automatic PostgreSQL migrations on startup
- Automatic archival when the active-thread limit is reached
- Optional registration with an external board gateway

## Stack

- Go (the module declares Go 1.15; CI builds with Go 1.17)
- [Fiber v2](https://github.com/gofiber/fiber)
- PostgreSQL via `pgx`
- Plain HTML templates and CSS

## Run locally

### Prerequisites

- Go 1.17 or newer
- PostgreSQL
- A PostgreSQL database that the configured user can create tables in

### Setup

1. Create the database. With standard local PostgreSQL tooling:

   ```sh
   createdb micrach
   ```

2. Copy the example configuration:

   ```sh
   cp .env.example .env
   ```

3. Edit `.env`. At minimum, make `POSTGRES_URL` match your local database.
   For normal development, set `IS_DB_SEEDED=false`; when true, sample rows are
   inserted every time the application starts.

4. Start the application from the repository root:

   ```sh
   go run .
   ```

5. Open [http://localhost:3000](http://localhost:3000), or the port configured
   by `PORT`.

Startup connects to PostgreSQL, applies missing files from `migrations/`, and
creates the ignored local `uploads/` directory. Uploaded originals and
thumbnails are stored on disk, so keep that directory persistent when running
the service in a container.

## Configuration

`.env` is loaded automatically and is ignored by Git.

| Variable | Default in code | Purpose |
| --- | --- | --- |
| `ENV` | `release` | Runtime mode. `production` enables CSS filename rewriting at startup. |
| `PORT` | `3000` | HTTP listen port. |
| `POSTGRES_URL` | `postgresql://localhost/micrach` | PostgreSQL connection URL. |
| `IS_DB_SEEDED` | `false` | Insert sample posts at startup. Avoid enabling repeatedly. |
| `IS_RATE_LIMITER_ENABLED` | `true` | Enable Fiber request limiting. |
| `THREADS_MAX_COUNT` | `50` | Maximum active threads before old threads are archived. |
| `THREAD_BUMP_LIMIT` | `500` | Reply count after which a thread no longer bumps. |
| `IS_CAPTCHA_ACTIVE` | `true` | Require CAPTCHA for new threads and replies. |
| `GATEWAY_URL` | empty | External gateway base URL. Empty disables gateway integration. |
| `GATEWAY_API_KEY` | empty | Shared key used for gateway registration and `/api/ping`. |
| `GATEWAY_BOARD_ID` | empty | Board identifier sent to the gateway. |
| `GATEWAY_BOARD_URL` | empty | Parsed from the environment but not currently used by the gateway client. |
| `GATEWAY_BOARD_DESCRIPTION` | empty | Board description sent to the gateway. |

See [.env.example](.env.example) for a complete example.

## Development commands

```sh
# Run with automatic restart; requires nodemon.
make dev

# Format, test, vet, and build.
go fmt ./...
go test ./...
go vet ./...
go build .

# Reproduce the Linux CI build.
GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build .
```

`tests/load.sh` is an optional Vegeta load test. Its checked-in target is a
historical public URL, so change it to an environment you own before running
the script. Generated load-test files are ignored by Git.

## Containers and deployment

The `Dockerfile` packages a prebuilt `micrach` binary together with templates,
static assets, and migrations. Build the Linux binary before building the
image. The checked-in `docker-compose.yml` is production-oriented: it expects
Docker Swarm, an existing `web` overlay network, Traefik, a published image,
and host-mounted upload storage. It is not a standalone local PostgreSQL setup.

## Project layout

```text
controllers/   HTTP handlers and request validation flow
repositories/  PostgreSQL queries and view data types
db/            connection pool and migration runner
config/        environment parsing
gateway/       optional external gateway integration
templates/     server-rendered pages, components, and head fragments
static/        CSS, icons, and error images
uploads/       runtime uploads (created locally, ignored by Git)
migrations/    ordered PostgreSQL schema changes
tests/         optional load-test scripts
```

## Screenshot

![micrach catalog](https://user-images.githubusercontent.com/15846431/237027105-481f2d55-541b-4c3b-8dd0-db464c25102f.jpeg)

## License

[MIT](LICENSE)
Q֚Eax\&&1.26
- Fiber v2
- PostgreSQL 18 for local development
- PostgreSQL access through [`pgx`](https://github.com/jackc/pgx)
- Plain/C26
- Docker with Docker Compose
- `nodemon` when using automatic reload

### Setup

From the repository root:

```sh
cp .env.ex2ample .env
docker compose up -d db
go run .
```

TL matches the PostgreSQL 18 service started by
Compose. Compose runs PostgreSQL only; the micrach application runs on the
host. PEdit `.env` when you need different local settings. For normal
development, keep1
 inserted
7$hFor automatic reload, install `nodemon`, start PostgreSQL as shown above, and
run:

```sh
make dev
```

K by
Wr/-o /tmp/micrach-linux-amd64CI

The multi-stage `Dockerfile` builds micrach in a pinned Go builder image and
runs it as a non-root user in a small runtime image. Verify the image locally:

```sh
docker build -t micrach:local .
```

CI checks formatting, tests, vet, native and Linux builds, reachable
vulnerabilities, and Docker image construction. It has read-only repository
permissions and does not publish or deploy imagesex" 100644 css.go ŊX&mv@vjгxVM6=KI:rzvlm&mFAɴͮD*$wfH}A܋%3o]oYXV6%q4-W,_T[xMx`7Y`5«[K#
́1VEyM
%ߡ})K+:gmR)܄na`KF6|BDKHnh+d1
GDܓ Z2 .[J&Ǆl/ٽH`D	w	~G#O$aQոbZ'!V52B,rR5"^ p0HI;A
g=}%+zypX-N8FkaWz63;Y+Y$1=	}M ӵnk7RLeN3@J<OA@Wq{酘TZAZ-io{'Fk{(a}t>]DĈ|o4T͛u"4chY$T3o	)D	([zMt'DHh ``	'ϳ#4e;}Hvy|%uO`5)ڂ>R!*V[BPR6t+5h\Fdb-6۝硬?@﾿~˛oWx_tcbiSFd(ǰ>y2Ժ7U`n@˾sÙSMRbKnSc70ug?O'M^
;,*75MVN jG;WoEUhYԫv*۟ک F4!No7uK]PG^>tͅ%A 8[t
UHH( @׈sH/ GzD1'鐗ڊc)Ic$|f'5iΞ~ٙ7j=xO 100644 config.go Ex "\Ph-/kk100644 config_test.go 8 >rtG}:m"Z?{xGpackage config

import "testing"

func TestGetValueOrDefaultBoolean(t *testing.T) {
	tests := []struct {
		name         string
		value        string
		defaultValue bool
		want         bool
	}{
		{name: "default true", defaultValue: true, want: true},
		{name: "default false", defaultValue: false, want: false},
		{name: "explicit true", value: "true", want: true},
		{name: "explicit false", value: "false", defaultValue: true, want: false},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := getValueOrDefaultBoolean(tt.value, tt.defaultValue); got != tt.want {
				t.Fatalf("getValueOrDefaultBoolean() = %v, want %v", got, tt.want)
			}
		})
	}
}

func TestGetValueOrDefaultInt(t *testing.T) {
	tests := []struct {
		name         string
		value        string
		defaultValue int
		want         int
	}{
		{name: "default", defaultValue: 3000, want: 3000},
		{name: "configured", value: "8080", defaultValue: 3000, want: 8080},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := getValueOrDefaultInt(tt.value, tt.defaultValue); got != tt.want {
				t.Fatalf("getValueOrDefaultInt() = %d, want %d", got, tt.want)
			}
		})
	}
}

func TestDefaultConfigs(t *testing.T) {
	for _, key := range []string{
		"ENV", "PORT", "IS_DB_SEEDED", "IS_RATE_LIMITER_ENABLED",
		"THREADS_MAX_COUNT", "THREAD_BUMP_LIMIT", "IS_CAPTCHA_ACTIVE",
		"GATEWAY_URL", "GATEWAY_API_KEY", "GATEWAY_BOARD_ID",
		"GATEWAY_BOARD_URL", "GATEWAY_BOARD_DESCRIPTION", "POSTGRES_URL",
	} {
		t.Setenv(key, "")
	}

	app := getAppConfig()
	if app.Env != "release" || app.Port != 3000 || app.IsDbSeeded {
		t.Fatalf("unexpected app defaults: %+v", app)
	}
	if !app.IsRateLimiterEnabled || app.ThreadsMaxCount != 50 || app.ThreadBumpLimit != 500 || !app.IsCaptchaActive {
		t.Fatalf("unexpected feature defaults: %+v", app)
	}
	if db := getDbConfig(); db.Url != "postgresql://localhost/micrach" {
		t.Fatalf("unexpected database default: %+v", db)
	}
}
_g0xPV errors'u	"github.com/jackc/pgx/v5vctx := c.UserContext()Jctx, Xctx0ctx := c.UserContext()!ctx, l!ctx := c.UserContext()	txWPctx(|ctx)
	Qn(-ctx, Utx	defer func() {
		rollbackErr := tx.Rollback(ctx)
		if rollbackErr != nil && !errors.Is(rollbackErr, pgx.ErrTxClosed) {
			log."rollbackErr)
		}
	}(+qctx,  ctx, $Fif err := tx.Commit(ctx);_| ($sctx := c.UserContext()!mp>ctx, tx|!(tx|!func() {
		rollbackErr := tx.Rollback(ctx)
		if rollbackErr != nil && !errors.Is(rollbackErr, pgx.ErrTxClosed) {
			log.Println"rollbackErr)
		}
	}(ctx,  ctx, l!Ectx, "ctx, $if err := tx.Commit(ctx);_| (]x2DxDpackage controllers

import (
	"io"
	"net/http/httptest"
	"testing"

	"github.com/gofiber/fiber/v2"
)

type testViews struct{}

func (testViews) Load() error { return nil }

func (testViews) Render(out io.Writer, name string, _ interface{}, _ ...string) error {
	_, err := io.WriteString(out, name)
	return err
}

func TestGetThreadsRejectsInvalidPage(t *testing.T) {
	app := fiber.New(fiber.Config{Views: testViews{}})
	app.Get("/", GetThreads)

	resp, err := app.Test(httptest.NewRequest("GET", "/?page=0", nil))
	if err != nil {
		t.Fatal(err)
	}
	defer resp.Body.Close()
	if resp.StatusCode != fiber.StatusNotFound {
		t.Fatalf("status = %d, want %d", resp.StatusCode, fiber.StatusNotFound)
	}
}

func TestGetThreadRejectsInvalidID(t *testing.T) {
	app := fiber.New(fiber.Config{Views: testViews{}})
	app.Get("/:threadID", GetThread)

	resp, err := app.Test(httptest.NewRequest("GET", "/invalid", nil))
	if err != nil {
		t.Fatal(err)
	}
	defer resp.Body.Close()
	if resp.StatusCode != fiber.StatusNotFound {
		t.Fatalf("status = %d, want %d", resp.StatusCode, fiber.StatusNotFound)
	}
}
^YgxG 100644 db.go 4*|"f!G100644 db_test.go ckqq,U%xPpackage db

import (
	"errors"
	"testing"

	"github.com/jackc/pgx/v5/pgconn"
)

func TestIsUndefinedTable(t *testing.T) {
	tests := []struct {
		name string
		err  error
		want bool
	}{
		{name: "undefined table", err: &pgconn.PgError{Code: "42P01"}, want: true},
		{name: "other postgres error", err: &pgconn.PgError{Code: "23505"}},
		{name: "ordinary error", err: errors.New("boom")},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := isUndefinedTable(tt.err); got != tt.want {
				t.Fatalf("isUndefinedTable() = %v, want %v", got, tt.want)
			}
		})
	}
}
uxMservices:
  db:
    image: postgres:18.4-alpine3.23
    environment:
      POSTGRES_DB: micrach
      POSTGRES_USER: micrach
      POSTGRES_PASSWORD: micrach
    ports:
      - "5432:5432"
    volumes:
      - micrach-postgres:/var/lib/postgresql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U micrach -d micrach"]
      interval: 2s
      timeout: 5s
      retries: 15
      start_period: 5s

volumes:
  micrach-postgres:
~Ux& 40000 superpowers /ښL)G!x@ 40000 plans KPMmj竬40000 specs Ua}>^rxwab$r%g:x> 100644 2026-07-15-wave-1-modernization.md 9^ZsC*59G'x# Wave 1 Modernization Implementation Plan

> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.

**Goal:** Establish a supported Go 1.26 baseline with current Fiber v2 and pgx v5 dependencies, local PostgreSQL infrastructure, build-only CI, a reproducible container image, and focused regression tests without changing application behavior or architecture.

**Architecture:** Preserve the existing Fiber controllers, global configuration and repository objects, PostgreSQL schema, server-rendered templates, and filesystem upload layout. Apply compatibility changes in reviewable slices: characterize behavior first, update the HTTP/toolchain dependencies, migrate pgx with explicit context propagation, modernize deprecated APIs, then replace development and CI infrastructure. Fiber v3 remains a separate Wave 2 implementation after this plan is fully green.

**Tech Stack:** Go 1.26.5, Fiber v2.52.14, Fiber HTML template v2.1.3, pgx v5.10.0, PostgreSQL 18.4, Docker Compose, GitHub Actions, Dependabot, and `govulncheck` v1.6.0.

## Global Constraints

- Preserve all routes, templates, HTTP statuses, database schema, upload paths, and minimal-JavaScript behavior.
- Preserve existing package boundaries; do not redesign handlers or repositories.
- Do not add database migrations, Redis, a proxy, a queue, or another service.
- Run the application on the host with `go run .` or `make dev`; Compose runs PostgreSQL only.
- Keep Fiber on v2 throughout Wave 1.
- Do not publish container images or deploy from CI.
- Never use a production or shared PostgreSQL database for tests.
- Do not commit `.env`, uploads, binaries, credentials, or generated test artifacts.

## File Map

**Create:**

- `config/config_test.go`: configuration default and parsing characterization.
- `utils/utils_test.go`: post and upload validation boundaries.
- `controllers/threads_controller_test.go`: DB-free HTTP error-path smoke tests.
- `repositories/files_repository_test.go`: pgx v5 integer-array conversion.
- `db/db_test.go`: PostgreSQL undefined-table error classification.
- `.dockerignore`: exclude local and generated state from image context.
- `.github/dependabot.yml`: reviewed Go module and Actions updates.

**Modify:**

- `go.mod`, `go.sum`: Go line and dependency graph.
- `main.go`: Fiber template v2 import, startup context, and contextual startup calls.
- `controllers/threads_controller.go`: request context propagation and checked transaction completion.
- `repositories/posts_repository.go`: pgx v5 imports, contextual methods, and rows lifecycle.
- `repositories/files_repository.go`: pgx v5 imports, contextual methods, and native integer-array encoding.
- `repositories/seeds.go`: explicit startup context.
- `db/db.go`: pgx v5 pool, startup context, rows lifecycle, and SQLSTATE handling.
- `build/css.go`, `files/get_files_in_folder.go`, `gateway/connect.go`: replace deprecated `ioutil`; close gateway response bodies.
- `Dockerfile`: multi-stage non-root application image.
- `docker-compose.yml`: PostgreSQL-only local infrastructure.
- `.env.example`: safe local defaults matching Compose.
- `Makefile`: host application and infrastructure commands.
- `.github/workflows/push.yml`: read-only verification CI.
- `README.md`, `AGENTS.md`: supported versions and workflows.

**Delete:**

- `.github/workflows/codesee-arch-diagram.yml`: obsolete CodeSee integration.

---

### Task 1: Add Behavior Characterization Tests

**Files:**

- Create: `config/config_test.go`
- Create: `utils/utils_test.go`
- Create: `controllers/threads_controller_test.go`

**Interfaces:**

- Consumes: existing unexported configuration helpers, `utils.ValidatePost`, `controllers.GetThreads`, and `controllers.GetThread`.
- Produces: regression tests that must pass before and after dependency migration.

- [x] **Step 1: Record the pre-change baseline**

Run:

```bash
go test ./...
go vet ./...
go build ./...
```

Expected: all commands exit 0; packages report no test files.

- [x] **Step 2: Add configuration characterization tests**

Create `config/config_test.go`:

```go
package config

import "testing"

func TestGetValueOrDefaultBoolean(t *testing.T) {
	tests := []struct {
		name         string
		value        string
		defaultValue bool
		want         bool
	}{
		{name: "default true", defaultValue: true, want: true},
		{name: "default false", defaultValue: false, want: false},
		{name: "explicit true", value: "true", want: true},
		{name: "explicit false", value: "false", defaultValue: true, want: false},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := getValueOrDefaultBoolean(tt.value, tt.defaultValue); got != tt.want {
				t.Fatalf("getValueOrDefaultBoolean() = %v, want %v", got, tt.want)
			}
		})
	}
}

func TestGetValueOrDefaultInt(t *testing.T) {
	tests := []struct {
		name         string
		value        string
		defaultValue int
		want         int
	}{
		{name: "default", defaultValue: 3000, want: 3000},
		{name: "configured", value: "8080", defaultValue: 3000, want: 8080},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := getValueOrDefaultInt(tt.value, tt.defaultValue); got != tt.want {
				t.Fatalf("getValueOrDefaultInt() = %d, want %d", got, tt.want)
			}
		})
	}
}

func TestDefaultConfigs(t *testing.T) {
	for _, key := range []string{
		"ENV", "PORT", "IS_DB_SEEDED", "IS_RATE_LIMITER_ENABLED",
		"THREADS_MAX_COUNT", "THREAD_BUMP_LIMIT", "IS_CAPTCHA_ACTIVE",
		"GATEWAY_URL", "GATEWAY_API_KEY", "GATEWAY_BOARD_ID",
		"GATEWAY_BOARD_URL", "GATEWAY_BOARD_DESCRIPTION", "POSTGRES_URL",
	} {
		t.Setenv(key, "")
	}

	app := getAppConfig()
	if app.Env != "release" || app.Port != 3000 || app.IsDbSeeded {
		t.Fatalf("unexpected app defaults: %+v", app)
	}
	if !app.IsRateLimiterEnabled || app.ThreadsMaxCount != 50 || app.ThreadBumpLimit != 500 || !app.IsCaptchaActive {
		t.Fatalf("unexpected feature defaults: %+v", app)
	}
	if db := getDbConfig(); db.Url != "postgresql://localhost/micrach" {
		t.Fatalf("unexpected database default: %+v", db)
	}
}
```

- [x] **Step 3: Add post and upload validation tests**

Create `utils/utils_test.go`:

```go
package utils

import (
	"mime/multipart"
	"net/textproto"
	"strings"
	"testing"

	"micrach/repositories"
)

func fileHeader(contentType string, size int64) *multipart.FileHeader {
	header := make(textproto.MIMEHeader)
	header.Set("Content-Type", contentType)
	return &multipart.FileHeader{Filename: "upload", Header: header, Size: size}
}

func TestValidatePost(t *testing.T) {
	validPNG := fileHeader("image/png", 1)
	validJPEG := fileHeader("image/jpeg", FILE_SIZE_IN_BYTES)

	tests := []struct {
		name  string
		title string
		text  string
		files []*multipart.FileHeader
		want  string
	}{
		{name: "text only", text: "hello"},
		{name: "file only", files: []*multipart.FileHeader{validPNG}},
		{name: "empty", want: repositories.InvalidTextOrFilesErrorMessage},
		{name: "title over limit", title: strings.Repeat("я", 101), text: "ok", want: repositories.InvalidTitleLengthErrorMessage},
		{name: "text over limit", text: strings.Repeat("я", 1001), want: repositories.InvalidTextLengthErrorMessage},
		{name: "four files", files: []*multipart.FileHeader{validPNG, validPNG, validJPEG, validJPEG}},
		{name: "five files", files: []*multipart.FileHeader{validPNG, validPNG, validPNG, validPNG, validPNG}, want: repositories.InvalidFilesLengthErrorMessage},
		{name: "unsupported content type", files: []*multipart.FileHeader{fileHeader("image/gif", 1)}, want: repositories.InvalidFileExtErrorMessage},
		{name: "size at limit", files: []*multipart.FileHeader{validJPEG}},
		{name: "size over limit", files: []*multipart.FileHeader{fileHeader("image/jpeg", FILE_SIZE_IN_BYTES+1)}, want: repositories.InvalidFileSizeErrorMessage},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := ValidatePost(tt.title, tt.text, tt.files); got != tt.want {
				t.Fatalf("ValidatePost() = %q, want %q", got, tt.want)
			}
		})
	}
}
```

- [x] **Step 4: Add DB-free Fiber error-path smoke tests**

Create `controllers/threads_controller_test.go`:

```go
package controllers

import (
	"io"
	"net/http/httptest"
	"testing"

	"github.com/gofiber/fiber/v2"
)

type testViews struct{}

func (testViews) Load() error { return nil }

func (testViews) Render(out io.Writer, name string, _ interface{}, _ ...string) error {
	_, err := io.WriteString(out, name)
	return err
}

func TestGetThreadsRejectsInvalidPage(t *testing.T) {
	app := fiber.New(fiber.Config{Views: testViews{}})
	app.Get("/", GetThreads)

	resp, err := app.Test(httptest.NewRequest("GET", "/?page=0", nil))
	if err != nil {
		t.Fatal(err)
	}
	defer resp.Body.Close()
	if resp.StatusCode != fiber.StatusNotFound {
		t.Fatalf("status = %d, want %d", resp.StatusCode, fiber.StatusNotFound)
	}
}

func TestGetThreadRejectsInvalidID(t *testing.T) {
	app := fiber.New(fiber.Config{Views: testViews{}})
	app.Get("/:threadID", GetThread)

	resp, err := app.Test(httptest.NewRequest("GET", "/invalid", nil))
	if err != nil {
		t.Fatal(err)
	}
	defer resp.Body.Close()
	if resp.StatusCode != fiber.StatusNotFound {
		t.Fatalf("status = %d, want %d", resp.StatusCode, fiber.StatusNotFound)
	}
}
```

- [x] **Step 5: Run the new safety net**

Run:

```bash
go fmt ./...
go test ./...
go vet ./...
```

Expected: all tests pass and vet exits 0.

- [x] **Step 6: Commit the safety net**

```bash
git add config/config_test.go utils/utils_test.go controllers/threads_controller_test.go
git commit -m "test: characterize legacy behavior"
```

---

### Task 2: Upgrade Go, Fiber v2, and Non-Database Dependencies

**Files:**

- Modify: `go.mod`
- Modify: `go.sum`
- Modify: `main.go`

**Interfaces:**

- Consumes: characterization tests from Task 1.
- Produces: Go 1.26 module baseline using Fiber v2.52.14 and HTML template v2.1.3; no route or handler API change.

- [x] **Step 1: Set the module Go line**

Run:

```bash
go mod edit -go=1.26.0
go mod edit -toolchain=go1.26.5
```

Expected: `go.mod` contains:

```text
go 1.26.0

toolchain go1.26.5
```

- [x] **Step 2: Upgrade direct non-database dependencies deliberately**

Run:

```bash
go get github.com/gofiber/fiber/v2@v2.52.14
go get github.com/gofiber/template/html/v2@v2.1.3
go get github.com/dchest/captcha@v1.1.0
go get github.com/joho/godotenv@v1.5.1
go get github.com/disintegration/imaging@v1.6.2
```

Expected: each command exits 0; Fiber remains on major version 2.

- [x] **Step 3: Switch the template import to its current module path**

In `main.go`, replace:

```go
"github.com/gofiber/template/html"
```

with:

```go
"github.com/gofiber/template/html/v2"
```

Keep initialization unchanged:

```go
engine := html.New("./templates", ".html")
```

- [x] **Step 4: Normalize the module graph**

Run:

```bash
go mod tidy
go list -m all
```

Expected direct requirements:

```text
github.com/dchest/captcha v1.1.0
github.com/disintegration/imaging v1.6.2
github.com/gofiber/fiber/v2 v2.52.14
github.com/gofiber/template/html/v2 v2.1.3
github.com/joho/godotenv v1.5.1
```

The old root `github.com/gofiber/template` requirement must be absent.

- [x] **Step 5: Verify behavior on the new HTTP dependency baseline**

Run:

```bash
go test ./...
go vet ./...
go build ./...
```

Expected: all commands exit 0.

- [x] **Step 6: Commit the toolchain and Fiber v2 baseline**

```bash
git add go.mod go.sum main.go
git commit -m "build: update Go and Fiber v2"
```

---

### Task 3: Migrate pgx v4 to v5 and Propagate Contexts

**Files:**

- Create: `repositories/files_repository_test.go`
- Create: `db/db_test.go`
- Modify: `go.mod`
- Modify: `go.sum`
- Modify: `main.go`
- Modify: `controllers/threads_controller.go`
- Modify: `repositories/posts_repository.go`
- Modify: `repositories/files_repository.go`
- Modify: `repositories/seeds.go`
- Modify: `db/db.go`

**Interfaces:**

- Consumes: `fiber.Ctx.UserContext() context.Context`; startup uses `context.Background()`.
- Produces: repository and DB operations accepting `context.Context`; pgx v5 transaction types; `toInt32s([]int) []int32` for PostgreSQL `integer[]` parameters.

- [x] **Step 1: Write the integer-array conversion test**

Create `repositories/files_repository_test.go`:

```go
package repositories

import (
	"reflect"
	"testing"
)

func TestToInt32s(t *testing.T) {
	tests := []struct {
		name string
		in   []int
		want []int32
	}{
		{name: "nil", in: nil, want: nil},
		{name: "empty", in: []int{}, want: []int32{}},
		{name: "values", in: []int{1, 2, 2147483647}, want: []int32{1, 2, 2147483647}},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := toInt32s(tt.in); !reflect.DeepEqual(got, tt.want) {
				t.Fatalf("toInt32s() = %#v, want %#v", got, tt.want)
			}
		})
	}
}
```

- [x] **Step 2: Run the focused test and confirm the missing helper**

Run:

```bash
go test ./repositories -run TestToInt32s -count=1
```

Expected: build failure containing `undefined: toInt32s`.

- [x] **Step 3: Add the minimal array conversion helper**

Add to `repositories/files_repository.go`:

```go
func toInt32s(values []int) []int32 {
	if values == nil {
		return nil
	}

	result := make([]int32, len(values))
	for i, value := range values {
		result[i] = int32(value)
	}
	return result
}
```

Use it directly in the query:

```go
rows, err := Db.Pool.Query(ctx, sql, toInt32s(postIDs))
```

Do not keep `pgtype.Int4Array` or the standalone `github.com/jackc/pgtype` import.

- [x] **Step 4: Write SQLSTATE classification tests**

Create `db/db_test.go`:

```go
package db

import (
	"errors"
	"testing"

	"github.com/jackc/pgx/v5/pgconn"
)

func TestIsUndefinedTable(t *testing.T) {
	tests := []struct {
		name string
		err  error
		want bool
	}{
		{name: "undefined table", err: &pgconn.PgError{Code: "42P01"}, want: true},
		{name: "other postgres error", err: &pgconn.PgError{Code: "23505"}},
		{name: "ordinary error", err: errors.New("boom")},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := isUndefinedTable(tt.err); got != tt.want {
				t.Fatalf("isUndefinedTable() = %v, want %v", got, tt.want)
			}
		})
	}
}
```

- [x] **Step 5: Upgrade pgx and replace imports**

Run:

```bash
go get github.com/jackc/pgx/v5@v5.10.0
```

Replace imports exactly:

```go
"github.com/jackc/pgx/v4"
"github.com/jackc/pgx/v4/pgxpool"
```

with:

```go
"github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgconn"
"github.com/jackc/pgx/v5/pgxpool"
```

Only import `pgconn` in `db/db.go` and `db/db_test.go`.

- [x] **Step 6: Define the contextual DB and repository signatures**

Change signatures to this exact set:

```go
// db/db.go
func Init(ctx context.Context)
func Migrate(ctx context.Context)
func runMigration(ctx context.Context, mid int, mname, msql string)
func getDbMigrations(ctx context.Context) MigrationsMap

// repositories/files_repository.go
func (r *FilesRepository) Create(ctx context.Context, f File) error
func (r *FilesRepository) GetByPostIDs(ctx context.Context, postIDs []int) (map[int][]File, error)
func (r *FilesRepository) CreateInTx(ctx context.Context, tx pgx.Tx, f File) (int, error)

// repositories/posts_repository.go
func (r *PostsRepository) Get(ctx context.Context, limit, offset int) ([]Post, error)
func (r *PostsRepository) GetThreadsCount(ctx context.Context) (int, error)
func (r *PostsRepository) Create(ctx context.Context, p Post) (int, error)
func (r *PostsRepository) GetThreadByPostID(ctx context.Context, ID int) ([]Post, error)
func (r *PostsRepository) GetIfThreadIsArchived(ctx context.Context, ID int) (bool, error)
func (r *PostsRepository) CreateInTx(ctx context.Context, tx pgx.Tx, p Post) (int, error)
func (r *PostsRepository) GetOldestThreadUpdatedAt(ctx context.Context) (time.Time, error)
func (r *PostsRepository) ArchiveThreadsFrom(ctx context.Context, t time.Time) error
func (r *PostsRepository) GetThreadPostsCount(ctx context.Context, id int) (int, error)
func (r *PostsRepository) BumpThreadInTx(ctx context.Context, tx pgx.Tx, id int) error

// repositories/seeds.go
func seedDb(ctx context.Context)
func Seed(ctx context.Context)
```

Replace every `context.TODO()` passed to pgx with the method's `ctx`. Pass `ctx`
through internal repository calls such as:

```go
filesMap, err := Files.GetByPostIDs(ctx, postIDs)
```

- [x] **Step 7: Propagate startup and request contexts at call sites**

In `main.go`:

```go
ctx := context.Background()
config.Init()
db.Init(ctx)
db.Migrate(ctx)
defer db.Pool.Close()

if config.App.IsDbSeeded {
	repositories.Seed(ctx)
}
```

At the beginning of every controller that reaches a repository, add:

```go
ctx := c.UserContext()
```

Pass `ctx` as the first argument to every repository call, `db.Pool.Acquire`,
`conn.Begin`, `tx.Rollback`, and `tx.Commit`.

- [x] **Step 8: Make rows lifecycle and migration error handling correct**

After every successful `Query`, add:

```go
defer rows.Close()
```

Remove pre-iteration `rows.Err()` checks. After each `for rows.Next()` loop,
repository methods returning a slice or map must return the final error:

```go
if err := rows.Err(); err != nil {
	return nil, err
}
```

In `getDbMigrations`, which preserves the existing panic-on-startup-error policy,
use this exact check before returning the map:

```go
if err := rows.Err(); err != nil {
	log.Panicln(err)
}
```

In `runMigration`, record the migration with `Exec`, not `Query`:

```go
_, err = Pool.Exec(ctx, `INSERT INTO migrations (id, name) VALUES ($1, $2)`, mid, mname)
if err != nil {
	log.Panicln(err)
}
```

Replace string matching with SQLSTATE classification:

```go
func isUndefinedTable(err error) bool {
	var pgErr *pgconn.PgError
	return errors.As(err, &pgErr) && pgErr.Code == "42P01"
}
```

In `getDbMigrations`, treat only that code as an empty migration map:

```go
rows, err := Pool.Query(ctx, `SELECT id, name FROM migrations`)
if err != nil {
	if isUndefinedTable(err) {
		return make(MigrationsMap)
	}
	log.Panicln(err)
}
defer rows.Close()
```

- [x] **Step 9: Check transaction completion in both write handlers**

Import `errors` and `github.com/jackc/pgx/v5` in
`controllers/threads_controller.go`. Replace each bare rollback defer with:

```go
defer func() {
	rollbackErr := tx.Rollback(ctx)
	if rollbackErr != nil && !errors.Is(rollbackErr, pgx.ErrTxClosed) {
		log.Println("error:", rollbackErr)
	}
}()
```

Replace each unchecked commit with:

```go
if err := tx.Commit(ctx); err != nil {
	log.Println("error:", err)
	return c.Status(fiber.StatusInternalServerError).Render("pages/500", nil)
}
```

- [x] **Step 10: Normalize and verify the pgx v5 migration**

Run:

```bash
go mod tidy
go fmt ./...
go test ./...
go vet ./...
go build ./...
rg 'jackc/(pgx/v4|pgtype)|context\.TODO' --glob '*.go'
```

Expected: build and checks pass; final `rg` returns no matches.

- [x] **Step 11: Commit the database driver migration**

```bash
git add go.mod go.sum main.go controllers/threads_controller.go repositories db
git commit -m "refactor(db): migrate to pgx v5"
```

---

### Task 4: Replace Deprecated I/O APIs

**Files:**

- Modify: `build/css.go`
- Modify: `files/get_files_in_folder.go`
- Modify: `gateway/connect.go`

**Interfaces:**

- Consumes: existing file paths, CSS rewrite behavior, and gateway registration request.
- Produces: identical behavior through `os` and `io`, with gateway response bodies closed.

- [x] **Step 1: Replace deprecated filesystem calls**

In `build/css.go`, remove `io/ioutil` and use:

```go
files, err := os.ReadDir(dir)
files, err := os.ReadDir("static/styles")
htmlTemplate, err := os.ReadFile(htmlTemplatePath)
err = os.WriteFile(htmlTemplatePath, htmlTemplate, 0644)
```

In `files/get_files_in_folder.go`, remove `io/ioutil` and use:

```go
files, err := os.ReadDir(fullFolderPath)
file, err := os.ReadFile(fullFilePath)
```

Preserve existing return values, ordering, permissions, and error policy.

- [x] **Step 2: Replace gateway body reading and close the response**

In `gateway/connect.go`, replace `io/ioutil` with `io`, then use:

```go
resp, err := client.Do(req)
if err != nil {
	log.Panicln(err)
}
defer resp.Body.Close()

body, err := io.ReadAll(resp.Body)
if err != nil {
	log.Panicln(err)
}
```

- [x] **Step 3: Verify deprecated APIs are gone**

Run:

```bash
go fmt ./...
go test ./...
go vet ./...
go build ./...
rg 'io/ioutil|ioutil\.' --glob '*.go'
```

Expected: Go checks pass; final `rg` returns no matches.

- [x] **Step 4: Commit the compatibility cleanup**

```bash
git add build/css.go files/get_files_in_folder.go gateway/connect.go
git commit -m "refactor: replace deprecated I/O APIs"
```

---

### Task 5: Replace Legacy Compose with Local PostgreSQL

**Files:**

- Modify: `docker-compose.yml`
- Modify: `.env.example`
- Modify: `Makefile`

**Interfaces:**

- Consumes: application `POSTGRES_URL` configuration.
- Produces: PostgreSQL at `localhost:5432`, database/user/password `micrach`, persistent volume `micrach-postgres`, and host-run development commands.

- [x] **Step 1: Replace Compose with the PostgreSQL-only definition**

Replace `docker-compose.yml` with:

```yaml
services:
  db:
    image: postgres:18.4-alpine3.23
    environment:
      POSTGRES_DB: micrach
      POSTGRES_USER: micrach
      POSTGRES_PASSWORD: micrach
    ports:
      - "5432:5432"
    volumes:
      - micrach-postgres:/var/lib/postgresql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U micrach -d micrach"]
      interval: 2s
      timeout: 5s
      retries: 15
      start_period: 5s

volumes:
  micrach-postgres:
```

The `/var/lib/postgresql` mount intentionally follows the PostgreSQL 18 image
layout.

- [x] **Step 2: Make local environment defaults safe and compatible**

Replace `.env.example` with:

```dotenv
ENV=development
PORT=3000
IS_DB_SEEDED=false
IS_RATE_LIMITER_ENABLED=true
THREADS_MAX_COUNT=50
POSTGRES_URL=postgres://micrach:micrach@localhost:5432/micrach?pool_max_conns=5
THREAD_BUMP_LIMIT=500
IS_CAPTCHA_ACTIVE=true
GATEWAY_URL=
GATEWAY_API_KEY=
GATEWAY_BOARD_ID=
GATEWAY_BOARD_URL=
GATEWAY_BOARD_DESCRIPTION=
```

- [x] **Step 3: Add explicit host and infrastructure commands**

Replace `Makefile` with:

```make
.PHONY: run dev infra-up infra-down

run:
	go run .

dev:
	nodemon --exec go run . --signal SIGTERM

infra-up:
	docker compose up -d db

infra-down:
	docker compose down
```

- [x] **Step 4: Validate Compose syntax and database health**

Run:

```bash
docker compose config
docker compose up -d db
docker compose ps
```

Expected: configuration is valid; `db` transitions to `healthy`.

- [x] **Step 5: Verify clean startup against disposable local data**

Run with a copied local environment:

```bash
if test ! -e .env; then cp .env.example .env; fi
go run .
```

Expected: logs report database and migrations online; application listens on
port 3000. Stop the process after startup verification. An existing `.env` is
never overwritten or removed, and `.env` is never staged.

- [x] **Step 6: Commit local infrastructure**

```bash
git add docker-compose.yml .env.example Makefile
git commit -m "build: add local PostgreSQL compose"
```

---

### Task 6: Build a Multi-Stage Non-Root Image

**Files:**

- Modify: `Dockerfile`
- Create: `.dockerignore`

**Interfaces:**

- Consumes: Go module, templates, static assets, migrations, and writable `/app/uploads`.
- Produces: local `micrach:wave1` Linux image; no registry interaction.

- [x] **Step 1: Replace the Dockerfile**

Replace `Dockerfile` with:

```dockerfile
FROM golang:1.26.5-alpine3.24 AS build

WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /out/micrach .

FROM alpine:3.24.1

RUN apk add --no-cache ca-certificates \
    && addgroup -S micrach \
    && adduser -S -G micrach micrach \
    && mkdir -p /app/uploads \
    && chown -R micrach:micrach /app

WORKDIR /app
COPY --from=build /out/micrach ./micrach
COPY --chown=micrach:micrach templates/ templates/
COPY --chown=micrach:micrach static/ static/
COPY --chown=micrach:micrach migrations/ migrations/

USER micrach
ENTRYPOINT ["./micrach"]
```

- [x] **Step 2: Exclude local state from build context**

Create `.dockerignore`:

```text
.git
.github
.env
.env.*
!.env.example
docs
tests
uploads
micrach
*.out
*.test
```

- [x] **Step 3: Build and inspect the image**

Run:

```bash
docker build --tag micrach:wave1 .
docker image inspect micrach:wave1 --format '{{.Config.User}} {{json .Config.Entrypoint}}'
```

Expected inspect output:

```text
micrach ["./micrach"]
```

- [x] **Step 4: Confirm upload storage is writable by the runtime user**

Run:

```bash
docker run --rm --entrypoint sh micrach:wave1 -c 'touch /app/uploads/write-test && test -f /app/uploads/write-test'
```

Expected: exit 0.

- [x] **Step 5: Commit the image build**

```bash
git add Dockerfile .dockerignore
git commit -m "build: add multi-stage image"
```

---

### Task 7: Replace Deployment Automation with Verification CI

**Files:**

- Modify: `.github/workflows/push.yml`
- Delete: `.github/workflows/codesee-arch-diagram.yml`
- Create: `.github/dependabot.yml`

**Interfaces:**

- Consumes: `go.mod`, `go.sum`, Dockerfile, and repository tests.
- Produces: read-only checks for pushes and pull requests; reviewed dependency update pull requests.

- [x] **Step 1: Replace the workflow with read-only CI**

Replace `.github/workflows/push.yml` with:

```yaml
name: CI

on:
  push:
  pull_request:

permissions:
  contents: read

jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Set up Go
        uses: actions/setup-go@v6
        with:
          go-version: "1.26.5"
          cache: true
          cache-dependency-path: go.sum

      - name: Verify formatting
        run: |
          files="$(gofmt -l .)"
          test -z "$files" || { printf '%s\n' "$files"; exit 1; }

      - name: Test
        run: go test ./...

      - name: Vet
        run: go vet ./...

      - name: Build
        run: go build ./...

      - name: Build Linux binary
        run: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /tmp/micrach-linux-amd64 .

      - name: Install govulncheck
        run: go install golang.org/x/vuln/cmd/govulncheck@v1.6.0

      - name: Scan reachable vulnerabilities
        run: govulncheck ./...

      - name: Build container image
        run: docker build --tag micrach:ci .
```

Do not add registry login, image push, artifact upload, SSH, environment secrets,
Swarm, or deployment steps.

- [x] **Step 2: Remove CodeSee**

Delete:

```text
.github/workflows/codesee-arch-diagram.yml
```

- [x] **Step 3: Add Dependabot**

Create `.github/dependabot.yml`:

```yaml
version: 2
updates:
  - package-ecosystem: gomod
    directory: /
    schedule:
      interval: weekly
    open-pull-requests-limit: 5

  - package-ecosystem: github-actions
    directory: /
    schedule:
      interval: weekly
    open-pull-requests-limit: 5
```

- [x] **Step 4: Validate workflow syntax and execute its commands locally**

Run:

```bash
test -z "$(gofmt -l .)"
go test ./...
go vet ./...
go build ./...
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /tmp/micrach-linux-amd64 .
go run golang.org/x/vuln/cmd/govulncheck@v1.6.0 ./...
docker build --tag micrach:ci .
```

Expected: every command exits 0. If `govulncheck` reports a reachable
vulnerability, upgrade or document the exact blocking dependency before this
task can pass; do not suppress findings generically.

- [x] **Step 5: Commit CI and dependency automation**

```bash
git add .github
git commit -m "ci: replace legacy deployment workflow"
```

---

### Task 8: Align Documentation and Agent Guidance

**Files:**

- Modify: `README.md`
- Modify: `AGENTS.md`

**Interfaces:**

- Consumes: completed Wave 1 commands and versions.
- Produces: one accurate setup and verification path for humans and coding agents.

- [x] **Step 1: Update README stack and prerequisites**

State these exact baselines:

```markdown
- Go 1.26
- Fiber v2
- PostgreSQL 18 for local development
```

Remove claims that CI uses Go 1.17 and that Docker requires a prebuilt binary.

- [x] **Step 2: Replace local setup with the host-run workflow**

Document this command sequence:

```sh
cp .env.example .env
docker compose up -d db
go run .
```

Document automatic reload separately:

```sh
make dev
```

State that Compose runs PostgreSQL only and that nodemon is required by
`make dev`.

- [x] **Step 3: Replace container and CI documentation**

Document local image verification:

```sh
docker build -t micrach:local .
```

State that CI checks formatting, tests, vet, native and Linux builds,
reachable vulnerabilities, and Docker image construction. State explicitly
that CI does not publish or deploy images.

- [x] **Step 4: Update AGENTS guidance**

Replace stale Go 1.15/1.17 constraints with Go 1.26. Replace the production
Docker and Swarm description with:

```markdown
- `Dockerfile` builds the application in a pinned Go builder stage and runs it
  as a non-root user in a small runtime image.
- `docker-compose.yml` starts local PostgreSQL only; run micrach on the host.
- CI verifies the project and container build but does not publish or deploy.
```

Keep all existing architecture, upload, migration, testing, and secret-handling
rules that remain accurate.

- [x] **Step 5: Verify documentation**

Run:

```bash
rg -n 'Go 1\.15|Go 1\.17|prebuilt|Swarm|Traefik|docker\.pkg\.github|ghcr\.io' README.md AGENTS.md .github Dockerfile docker-compose.yml
git diff --check
```

Expected: no stale deployment or toolchain matches; `git diff --check` exits 0.

- [x] **Step 6: Commit documentation**

```bash
git add README.md AGENTS.md
git commit -m "docs: document modern development workflow"
```

---

### Task 9: Run the Wave 1 Acceptance Gate

**Files:**

- Verify only; modify a file only to fix a concrete failing check within Wave 1 scope.

**Interfaces:**

- Consumes: all Wave 1 tasks.
- Produces: fresh evidence that Wave 1 is safe to merge and that Wave 2 may be planned separately.

- [x] **Step 1: Verify repository hygiene**

Run:

```bash
git status --short
git diff --check
git ls-files .env uploads micrach '*.out' '*.test'
```

Expected: clean worktree after task commits; no forbidden local artifacts are
tracked.

- [x] **Step 2: Run the full Go gate**

Run:

```bash
go fmt ./...
test -z "$(gofmt -l .)"
go mod tidy
git diff --exit-code -- go.mod go.sum
go test ./...
go vet ./...
go build ./...
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /tmp/micrach-linux-amd64 .
go run golang.org/x/vuln/cmd/govulncheck@v1.6.0 ./...
```

Expected: every command exits 0; module files remain unchanged after tidy;
no reachable vulnerability remains unhandled.

- [x] **Step 3: Run the container and infrastructure gate**

Run:

```bash
docker compose config
docker compose up -d db
docker compose ps
docker build --tag micrach:wave1 .
docker run --rm --entrypoint sh micrach:wave1 -c 'touch /app/uploads/write-test && test -f /app/uploads/write-test'
```

Expected: PostgreSQL is healthy, the image builds, and the runtime user can
write uploads.

- [x] **Step 4: Run manual application smoke tests**

With `.env` copied from `.env.example`, run `go run .` and verify:

```text
GET  /                         catalog renders
GET  /?page=0                  404 renders
POST /                         valid thread redirects
GET  /:threadID                thread renders
POST /:threadID                valid reply redirects with fragment
GET  /captcha/:captchaID       PNG renders when CAPTCHA is enabled
```

Also verify JPEG and PNG upload limits, thumbnail creation, pagination, rate
limiting, `sage`, bump limit, and archival behavior. Inspect catalog and thread
pages at narrow and wide viewport widths; Wave 1 must introduce no visual
change.

- [x] **Step 5: Remove disposable local state**

Run:

```bash
docker compose down
rm -f /tmp/micrach-linux-amd64
git status --short --branch
```

Expected: no generated or local-only file appears in Git status. Leave any
pre-existing or locally created ignored `.env` untouched.

## Wave 2 Entry Gate

Do not implement Fiber v3 in this plan. Start a separate spec-derived plan only
after Task 9 passes. That follow-up must recheck the current Fiber v3, template
engine, and Go requirements through Context7 and official release notes, then
cover handler context signatures, static middleware, form parsing, redirects,
CAPTCHA, uploads, pagination, rate limiting, `sage`, archival, and responsive
smoke tests. Architecture cleanup remains excluded.
?|xF 100644 2026-07-15-project-modernization-design.md ͬB֯{{&U¹x9$# Project Modernization Design

Date: 2026-07-15

## Goal

Modernize micrach in controlled stages without changing application behavior or
reworking its architecture. First establish a supported toolchain, current
dependencies, reproducible local infrastructure, useful CI, and a minimal test
safety net. Migrate from Fiber v2 to Fiber v3 only after that baseline is
stable.

## Current State

- `go.mod` declares Go 1.15, while CI uses Go 1.17.
- Fiber is v2.31.0 and pgx is v4.15.0.
- The Dockerfile packages a prebuilt binary in BusyBox; it does not build the
  application.
- The GitHub Actions workflow builds, publishes an image, and deploys it to an
  obsolete Docker Swarm environment over SSH.
- `docker-compose.yml` describes that obsolete Swarm, Traefik, and VPS setup.
- The CodeSee workflow and its action versions are obsolete.
- No checked-in Go tests provide a regression safety net.
- Parts of the code use deprecated `ioutil` APIs, broad `context.TODO()` calls,
  and unchecked transaction completion errors.

## Scope and Constraints

- Preserve routes, templates, HTTP status behavior, database schema, upload
  layout, and minimal-JavaScript approach.
- Preserve the current package boundaries and application architecture.
- Do not combine dependency work with handler or repository redesign.
- Do not add infrastructure that the application does not need. PostgreSQL is
  the only Docker Compose service required now.
- Run the application directly on the host with `go run .` or `make dev`.
- Keep a multi-stage Dockerfile as a reproducible application build artifact,
  but do not publish or deploy its image in CI.
- Do not add or modify database migrations unless an upgrade proves that a
  compatibility migration is unavoidable. Such a change requires separate
  review before implementation.

## Strategy

Use two modernization waves. Wave 1 stays on the latest compatible Fiber v2 to
avoid mixing framework API migration with the toolchain, database driver, CI,
container, and test changes. Wave 2 performs the Fiber v3 migration as a
separate change after Wave 1 is green.

Exact dependency versions must be rechecked against Context7 and official
release notes when each wave begins. Major upgrades remain explicit; automated
dependency tooling must not silently merge them.

## Wave 1: Stable Modern Baseline

### Go and Dependencies

- Set the supported Go line to Go 1.26. Use the latest available Go 1.26 patch
  release in CI and the Docker builder image; keep documentation aligned.
- Upgrade Fiber from v2.31.0 to the latest stable Fiber v2 release.
- Upgrade the Fiber HTML template engine to the latest Fiber v2-compatible
  release.
- Migrate `github.com/jackc/pgx/v4` and standalone
  `github.com/jackc/pgtype` usage to `github.com/jackc/pgx/v5` packages.
- Replace `pgtype.Int4Array` with the pgx v5-compatible representation selected
  during implementation, preserving query results and ordering.
- Upgrade other direct dependencies to current versions compatible with the
  selected Go and Fiber versions.
- Run `go mod tidy` and review every direct and indirect dependency change.
- Upgrade dependencies in coherent groups so failures can be attributed to a
  specific change.

### Compatibility Cleanup

- Replace deprecated `io/ioutil` calls with `io` and `os` equivalents.
- Replace broad `context.TODO()` usage where a request, startup, or explicit
  operation context is available.
- Check and propagate transaction `Commit` errors. Preserve safe rollback
  behavior.
- Limit changes to those needed for supported APIs, correct error handling, and
  testability. Do not refactor package ownership or business flow.

### Local Development Infrastructure

- Replace the Swarm-oriented Compose file with a local PostgreSQL service.
- Give PostgreSQL a persistent named volume and a healthcheck.
- Use development-only credentials and defaults consistent with
  `.env.example`.
- Do not add the application, Redis, a proxy, or other optional services to
  Compose.
- Document the normal workflow: start PostgreSQL with Compose, then run micrach
  on the host with `go run .` or `make dev` using nodemon.

### Dockerfile

- Replace the prebuilt-binary BusyBox image with a multi-stage Dockerfile.
- Build a static Linux binary in a pinned Go 1.26 builder image.
- Copy only the binary, templates, static assets, and migrations into a small
  runtime image.
- Run the application as a non-root user and preserve writable upload storage.
- Do not add a container healthcheck until the application has a suitable
  health endpoint. Adding such an endpoint is outside this modernization.

### CI and Automation

- Replace the existing build, publish, and deploy workflow with a read-only CI
  workflow.
- Run formatting verification, `go test ./...`, `go vet ./...`, `go build .`,
  the Linux static build, and `govulncheck ./...`.
- Build the Docker image as verification, without login, push, registry tags,
  or deployment.
- Use current stable GitHub-maintained action releases and Go module caching.
- Remove SSH deployment, Docker Swarm service update, registry publishing, and
  their workflow configuration.
- Remove the obsolete CodeSee workflow.
- Add Dependabot configuration for Go modules and GitHub Actions. Updates open
  reviewable pull requests and are not auto-merged.

### Test Safety Net

Add focused tests beside changed code, favoring table-driven cases where
practical:

- configuration parsing and defaults;
- post and upload validation boundaries;
- pure migration, filesystem, and repository helpers where they can be tested
  without a shared database;
- Fiber handler smoke tests for key status and rendering paths that do not
  require production data;
- pgx v5 array conversion or scanning behavior introduced by the migration.

Tests requiring PostgreSQL must use disposable data and the local development
database only when explicitly invoked. Routine unit tests must not depend on a
developer's shared database.

### Documentation

- Update README prerequisites, setup, development commands, container notes,
  and supported versions.
- Make `.env.example` safe for local development: no implicit external gateway
  dependency and no repeated seed behavior by default.
- Update AGENTS guidance when its Go, CI, Docker, or Compose statements become
  stale.

## Wave 2: Fiber v3 Migration

Wave 2 starts only after Wave 1 passes all automated and manual checks.

- Recheck the current stable Fiber v3, template engine, and minimum Go
  requirements through Context7 and official release notes.
- Keep Go 1.26 if supported; otherwise upgrade to the required supported Go
  line as an explicit part of Wave 2.
- Change Fiber imports from v2 to v3 and use a v3-compatible template engine.
- Adapt handler context signatures, middleware configuration, static serving,
  form and body parsing, redirects, and other changed APIs.
- Preserve routes, response codes, template data, forms, and browser behavior.
- Exercise catalog, thread view, thread creation, replies, CAPTCHA, pagination,
  rate limiting, `sage`, archival, JPEG/PNG uploads, and thumbnail generation.
- Fix only migration regressions. Do not include architectural cleanup.
- Refresh compatible dependencies again after Fiber v3, run `go mod tidy`, and
  repeat vulnerability scanning.
- Record any remaining major-version candidates or deprecated APIs for later
  work instead of expanding this migration.

## Ongoing Maintenance

- Keep the project on a supported Go release line and consume patch releases
  promptly through reviewed dependency automation.
- Review Dependabot pull requests for Go modules and GitHub Actions.
- Perform periodic dependency refreshes rather than another multi-year jump.
- Isolate future major upgrades in their own pull requests and do not mix them
  with unrelated refactoring.

## Verification and Acceptance

Each wave must provide fresh evidence for all applicable checks:

1. Formatting produces no diff.
2. `go test ./...` passes.
3. `go vet ./...` passes.
4. `go build .` passes.
5. The Linux static build passes.
6. `govulncheck ./...` reports no unhandled reachable vulnerability.
7. `go mod tidy` produces no unexplained diff.
8. `git diff --check` passes.
9. The Docker image builds successfully.
10. Compose PostgreSQL reaches healthy state.
11. The host-run application connects to Compose PostgreSQL and applies
    migrations to a clean database.
12. Manual smoke tests cover affected pages, forms, responsive states, CAPTCHA,
    pagination, rate limiting, uploads, thumbnails, `sage`, and archival.
13. No `.env`, upload, binary, credential, or generated artifact is tracked.

Wave 1 is complete only when its checks pass and existing behavior remains
unchanged. Wave 2 cannot begin before that point. A failed major upgrade is
rolled back as its own isolated change; it must not destabilize the Wave 1
baseline.

## Explicit Non-Goals

- Handler or repository architecture cleanup.
- New routes, UI redesign, or feature work.
- Database schema redesign.
- New caching, queueing, proxy, or observability services.
- Containerized local execution of the application.
- Image publishing, GitHub Container Registry integration, VPS deployment,
  Docker Swarm, or Traefik configuration.
yx2 100644 get_files_in_folder.go 6"ME'%>dwk+xQMO0=_1r*	a&FoƘ
m춤-~w*xK)7ｙ7MLFgLfpVN%~sa_<Vҁ08gi:=xzp-CT1]Ts7+9ike7H1j-@M'82VEDA[($'WVzP]td:xӶP	s
!$|bxWηVOs'WUM$ev\'G5Gr#&l5GݣI;_lD{<E]0?jP^x 100644 connect.go bX=N	ld,z100644 controllers.go ٨B1H>{100644 controllers_test.go <-]kуK^mkcA5Ix* 8?defer resp.Body.Close()A%yCȽxeN0Ss$R*E QǢcʻ$-bM(%<}-c+-e.)BCJ22i\Bq3V#QJ83ٕ@Y;$^&P)lNޯx%΂/kkm'@d.`C&8\Y`T=q<7: GJt|G>8_xC[γiͳ>}'G	[IkkDg-.xpackage gateway

import (
	"net/http/httptest"
	"testing"

	"github.com/gofiber/fiber/v2"

	"micrach/config"
)

func TestPingUsesLastAuthorizationHeader(t *testing.T) {
	previousConfig := config.App
	t.Cleanup(func() {
		config.App = previousConfig
	})
	config.App.Gateway.ApiKey = "configured-key"

	app := fiber.New()
	app.Get("/api/ping", Ping)

	req := httptest.NewRequest("GET", "/api/ping", nil)
	req.Header.Add("Authorization", "wrong-key")
	req.Header.Add("Authorization", "configured-key")

	resp, err := app.Test(req)
	if err != nil {
		t.Fatalf("test ping request: %v", err)
	}
	if resp.StatusCode != fiber.StatusOK {
		t.Fatalf("expected status %d when final Authorization header matches, got %d", fiber.StatusOK, resp.StatusCode)
	}
}
ITxJmodule micrach

go 1.26.0

toolchain go1.26.5

require (
	github.com/dchest/captcha v1.1.0
	github.com/disintegration/imaging v1.6.2
	github.com/gofiber/fiber/v2 v2.52.14
	github.com/gofiber/template/html/v2 v2.1.3
	github.com/jackc/pgx/v5 v5.10.0
	github.com/joho/godotenv v1.5.1
)

require (
	github.com/andybalholm/brotli v1.1.0 // indirect
	github.com/gofiber/template v1.8.3 // indirect
	github.com/gofiber/utils v1.1.0 // indirect
	github.com/google/uuid v1.6.0 // indirect
	github.com/jackc/pgpassfile v1.0.0 // indirect
	github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
	github.com/jackc/puddle/v2 v2.2.2 // indirect
	github.com/klauspost/compress v1.17.9 // indirect
	github.com/mattn/go-colorable v0.1.13 // indirect
	github.com/mattn/go-isatty v0.0.20 // indirect
	github.com/mattn/go-runewidth v0.0.16 // indirect
	github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c // indirect
	github.com/rivo/uniseg v0.2.0 // indirect
	github.com/tinylib/msgp v1.2.5 // indirect
	github.com/valyala/bytebufferpool v1.0.0 // indirect
	github.com/valyala/fasthttp v1.51.0 // indirect
	github.com/valyala/tcplisten v1.0.0 // indirect
	golang.org/x/image v0.0.0-20220321031419-a8550c1d254a // indirect
	golang.org/x/sync v0.17.0 // indirect
	golang.org/x/sys v0.28.0 // indirect
	golang.org/x/text v0.29.0 // indirect
)
BγWx: 

244nc v0.22K40.0 // indirect
)
>x+github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M=
github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dchest/captcha v1.1.0 h1:2kt47EoYUUkaISobUdTbqwx55xvKOJxyScVfw25xzhQ=
github.com/dchest/captcha v1.1.0/go.mod h1:7zoElIawLp7GUMLcj54K9kbw+jEyvz2K0FDdRRYhvWo=
github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c=
github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4=
github.com/gofiber/fiber/v2 v2.52.14 h1:Of3L+9qVFaQNwPlcmEdl5IIodHz8BSE0j37R7rWu4pE=
github.com/gofiber/fiber/v2 v2.52.14/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw=
github.com/gofiber/template v1.8.3 h1:hzHdvMwMo/T2kouz2pPCA0zGiLCeMnoGsQZBTSYgZxc=
github.com/gofiber/template v1.8.3/go.mod h1:bs/2n0pSNPOkRa5VJ8zTIvedcI/lEYxzV3+YPXdBvq8=
github.com/gofiber/template/html/v2 v2.1.3 h1:n1LYBtmr9C0V/k/3qBblXyMxV5B0o/gpb6dFLp8ea+o=
github.com/gofiber/template/html/v2 v2.1.3/go.mod h1:U5Fxgc5KpyujU9OqKzy6Kn6Qup6Tm7zdsISR+VpnHRE=
github.com/gofiber/utils v1.2.0 h1:NCaqd+Efg3khhN++eeUUTyBz+byIxAsmIjpl8kKOMIc=
github.com/gofiber/utils v1.2.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.10.0 h1:VhSvgU2jSli8o3AqIEOTJr7rZwAEUVo4E4XhR94Zfr0=
github.com/jackc/pgx/v5 v5.10.0/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4=
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c h1:dAMKvw0MlJT1GshSTtih8C2gDs04w8dReiOGXrGLNoY=
github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/tinylib/msgp v1.2.5 h1:WeQg1whrXRFiZusidTQqzETkRpGjFjcIhW6uqWH09po=
github.com/tinylib/msgp v1.2.5/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA=
github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g=
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.44.0 h1:+tDekMZED9+LrtB3G5xzRggpVh9CARjZqROla3R3R+I=
golang.org/x/image v0.44.0/go.mod h1:V8K3KE9KKKE+pLpQDOeN18w9oacNSvy1tDOirTu4xtY=
golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek=
golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs=
golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
99/x #100644 files_repository.go GWN2*aAx100644 files_repository_test.go &[/ΰ;tt100644 posts_repository.go U^O6P	ݏѪNl100644 seeds.go g#?m60HO؇}U100644 structs.go ޾:hQ~T0Cn8ZķuxWpackage repositories

import (
	"context"
	Db "micrach/db"

	"github.com/jackc/pgx/v5"
)

type FilesRepository struct{}

var Files FilesRepository

func toInt32s(values []int) []int32 {
	if values == nil {
		return nil
	}

	result := make([]int32, len(values))
	for i, value := range values {
		result[i] = int32(value)
	}
	return result
}

func (r *FilesRepository) Create(ctx context.Context, f File) error {
	sql := `
		INSERT INTO files (post_id, name, ext, size)
		VALUES ($1, $2, $3, $4)
	`

	row := Db.Pool.QueryRow(
		ctx, sql, f.PostID, f.Name, f.Ext, f.Size,
	)

	err := row.Scan()
	if err != nil && err != pgx.ErrNoRows {
		return err
	}

	return nil
}

func (r *FilesRepository) GetByPostIDs(ctx context.Context, postIDs []int) (map[int][]File, error) {
	sql := `
		SELECT id, post_id, name, size, ext
		FROM files
		WHERE post_id = ANY ($1)
		ORDER BY id ASC
	`

	rows, err := Db.Pool.Query(ctx, sql, toInt32s(postIDs))
	if err != nil {
		return nil, err
	}
	defer rows.Close()

	filesMapByPostId := make(map[int][]File)
	for rows.Next() {
		var file File
		err = rows.Scan(&file.ID, &file.PostID, &file.Name, &file.Size, &file.Ext)
		if err != nil {
			return nil, err
		}

		if filesMapByPostId[file.PostID] == nil {
			filesMapByPostId[file.PostID] = []File{}
		}

		filesMapByPostId[file.PostID] = append(
			filesMapByPostId[file.PostID],
			file,
		)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}

	return filesMapByPostId, nil
}

func (r *FilesRepository) CreateInTx(ctx context.Context, tx pgx.Tx, f File) (int, error) {
	sql := `
		INSERT INTO files (post_id, name, ext, size)
		VALUES ($1, $2, $3, $4)
		RETURNING id
	`

	row := tx.QueryRow(
		ctx, sql, f.PostID, f.Name, f.Ext, f.Size,
	)

	createdFile := new(File)
	err := row.Scan(&createdFile.ID)
	if err != nil && err != pgx.ErrNoRows {
		return 0, err
	}

	return createdFile.ID, nil
}
B.!xpackage repositories

import (
	"reflect"
	"testing"
)

func TestToInt32s(t *testing.T) {
	tests := []struct {
		name string
		in   []int
		want []int32
	}{
		{name: "nil", in: nil, want: nil},
		{name: "empty", in: []int{}, want: []int32{}},
		{name: "values", in: []int{1, 2, 2147483647}, want: []int32{1, 2, 2147483647}},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := toInt32s(tt.in); !reflect.DeepEqual(got, tt.want) {
				t.Fatalf("toInt32s() = %#v, want %#v", got, tt.want)
			}
		})
	}
}
dl鸖xVKs6>%KGjG<($D$e] (Wvrq]-_PF4a(Zi0J1,՚M,ň
0	kY	ƀn؄]^靄8z#>nJnzs{7~7^_~?"%K&IXckWl<aBL`4A?(' W#L@V$WapNK'ΓYy#JE1`xMfV"+	#J+M?莂9pBQP1g$*(X:"Bܵg#|Hv(^q^}."˘76'rlܯbm$&(ЙΦX{iiw5T^2}f"15sM&ʚM&LҲ'l<T<C*Eɕ*]XfQnQo B~wBqoQyO[A=d&'fu񑻷6ǶT7 ]ɳ/ʒ`;]"PＨ_1n۸(1`ƘgYP]vIHR^ξF/3ȹje`ZNHr%I$te?59x|l7 4=3.5.Vn2qOa^VwyEgo}8x>ƄfU4hn\	u{B7XA/ah5_B(+КY6]Y?A&k!/N:R,K#neR.٤'^O6i	Mn", L-BKl\rBbͱQUh.$WSrd$5vHOӥpWvN>Աt}~a/?/xM 100644 utils.go 
2Z`Z7ޔ6Fq100644 utils_test.go XЗ8Lf} ͽsx=package utils

import (
	"mime/multipart"
	"net/textproto"
	"strings"
	"testing"

	"micrach/repositories"
)

func fileHeader(contentType string, size int64) *multipart.FileHeader {
	header := make(textproto.MIMEHeader)
	header.Set("Content-Type", contentType)
	return &multipart.FileHeader{Filename: "upload", Header: header, Size: size}
}

func TestValidatePost(t *testing.T) {
	validPNG := fileHeader("image/png", 1)
	validJPEG := fileHeader("image/jpeg", FILE_SIZE_IN_BYTES)

	tests := []struct {
		name  string
		title string
		text  string
		files []*multipart.FileHeader
		want  string
	}{
		{name: "text only", text: "hello"},
		{name: "file only", files: []*multipart.FileHeader{validPNG}},
		{name: "empty", want: repositories.InvalidTextOrFilesErrorMessage},
		{name: "title over limit", title: strings.Repeat("я", 101), text: "ok", want: repositories.InvalidTitleLengthErrorMessage},
		{name: "text over limit", text: strings.Repeat("я", 1001), want: repositories.InvalidTextLengthErrorMessage},
		{name: "four files", files: []*multipart.FileHeader{validPNG, validPNG, validJPEG, validJPEG}},
		{name: "five files", files: []*multipart.FileHeader{validPNG, validPNG, validPNG, validPNG, validPNG}, want: repositories.InvalidFilesLengthErrorMessage},
		{name: "unsupported content type", files: []*multipart.FileHeader{fileHeader("image/gif", 1)}, want: repositories.InvalidFileExtErrorMessage},
		{name: "size at limit", files: []*multipart.FileHeader{validJPEG}},
		{name: "size over limit", files: []*multipart.FileHeader{fileHeader("image/jpeg", FILE_SIZE_IN_BYTES+1)}, want: repositories.InvalidFileSizeErrorMessage},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := ValidatePost(tt.title, tt.text, tt.files); got != tt.want {
				t.Fatalf("ValidatePost() = %q, want %q", got, tt.want)
			}
		})
	}
}
&q/x! 83T"xn		!zA x& 40000 superpowers 'C]e+7Cx@ 40000 plans wUT40000 specs Ua}>^rxwab$rEx> 100644 2026-07-15-wave-1-modernization.md sg|p	2QJNx}  0 P  $ <% @' '{ y) *  , ,5 / 2 L3 45 7u U9 N@ (B F0 I  J' \\L TN4 O fP3 \Rl U V jW X 8Z \ ^ |_ y` ]a \c Ihb hT j l m n3 oE q1 Ds$ it v w x Hz }gyH=xQ X+uF©$uksgr~?>R[N?o0_!1P83T"xn		!z#V-x!<;	"Create a PostgreSQL database, then;
E# Edit POSTGRES_URL and normally set IS_DB_SEEDED=false.
go run .
```
KGO111MODULE=on >/&.
```

`make dev` requires `nodemon`. 0
 6
 ((The module declares Go 1.15 and CI installs Go 1.17. Avoid language or standard
library features newer than Go 1.17 unless the ;task also upgrades the supported
Go version and CI configurH	<README config table,
  and deployment environment forwarding = note that `Dockerfile` expects a prebuilt Linux binary and
 Qassumes Swarm, Traefik, an external network, and a
  persistent host upload mount:7There are currently no checked-in Go unit tests and no 
5 
/ disposable test data or a
P- ~>:^x tX+uF©$uksgr~?>R[N?o0_!1P83T"xn		!P6Z43$} 깆^[ޞ100644 go.sum =^8֣RK;0I=t
x|rJ|E3hc" b%	  a(]%em"dKSy2Qǃͫ
ڲ?]@}Uo7 Eշ{LvKjmKaY0d]wM'Xu>h;1h׸_Ddpڡtp~)9ӺL!*ֺxﮓU^@n[yqA?@E6#JZFvXQ»Rp|yG/Ӏ#]xwMe GsY6X-Ni">~*/k+ǋ}rjiQpd5,nfA82Ic_@|*u)V	Bi ar?:} n[}YxF`@( 0quI,xر1\vp4͠1.xd*.?% F:I]	@;h2$0` [mxP1&ؾ3^ͥF"mLd]T\*|3PXW.8t
mʑB0q6CWm&6@S~wՋ<yw$1l\t(]	os}4Pr\t&&wx)tN3"?x4WܤK>ZOJ
'JO|CPwR>}.b/	(+ׁaSf6D/=NmaNMDŷM<wY,顼;e
.FW}MMRm"#5:G/,`?PZ;	~#awCbwu7"QάauFQx ?]׈|Ño {BTYͅwt̽s\+_))J5ЧۜǸgV
9hstܴA"r;}:w2T't$wjY:g;޼_|AH	"Q.Pٷ3cC#2EAKL_4_Bͭz\AQ>Tପi";!6Ԅ^߉RU$"sL]Y4SD?H'yUs,]o/YW׺+c枅T!ОQ*ƼZ"aH=2*)Kp[xmP5B)SebO16b84W~@=Mgӭs1:B`,h*Zڠt ~CF-ݔnc48P:X>>lĩ0n/U]*lX9Gs@Uo]V4G!x05j0j)!po.o1	~>UN+vlqcsӚFhk[W\_+k3,нv6:SyK:yoJ"Y3ܪ(T3VVI($KHu~,_!"lM0 AHsH3N)ZMtm10(.0]lI+7Ƹp}q	g٨VФGgC9ekd[Q~a8FB,TqВ;#:p13f]텈4EjNvk?d"G%ܝx5alZf O#ьw"}/'E *3YbVB,H`{>L.+#8J}(}fdAl߲ZT?eJ%Sj>FH-#'+io؝w4|,V;u%h_a>"[zE ahc.3NIuzS4j 8yEUcyW&#p[Z1-\Rp	wPGE~< uK:8]IV50^J)UM!%B{a,^e#-,e_c2&̕)Ho[@Z8i3G	0b9>p(&CPmR44=	"t'-?x}vHir	VMPT]흣#Ո65|~k$"!3^ԜwF"DW r789Ny;cK17n1;/d"}V}(Ԃo<0#`$(iHlwdPos܋qk'c1	P0 `@ v	n}uksċ}g^EWlb*ޭ3L0J8HޘQ縄]/F7w{(+@Ov}o{nLoP&bU1R\ϣ):evl5`8ϑOf(G1.RL܄2m؝,olM
˖upDhUVL_^¶[X]x&x;6$EG0DqBuFV?XK
V.tQǮx4L]?c|nKt[,%֡?*Tw̬Vo&hV[~Yzu߅Zcٸ:\`&kG 
$$V	\RϧCRR$/E.#U깫&39> <}¸? ڡ(qy.U|@"ƙʫеƋȢ+\%2|"ywW_5  `x";z&˿xrv*k>AeSdxA(a!?9_yOTJlOy=%}^KѐaM~E񞆩piÎ}yL_FBNh$Ć`ޠ@B0t)W<]% p~k+Β4`j/#iP5psmsA	ۉ`'Ʋlaw$uJ'-"R~|)6w{t5AHZV2~#ꉔ
<m+'O\/>g4t2 &0q`=Q^:.|r\ɼ!h^EǐY/*[Ti4w;֋V{|k.|`@i[hV@/.fyPU7Nvb]v"j"@t :'hu^bk16% z ?tb#+ɠʬ.O菌?	9.J >'*ހD>YF|3iN2}=|p,<xj>(,>J2Ph%v@\rT}06G2+/=Lٶj	6ے6n35/K$ȳZeRyL<C2MJ*M{z<Uk/~8ǖ;Z˰u9;pP1C34EAdS$/9̳rɑMHw+}|ؐYUvUq2%_M0]Aw=^W@몀CX*C\t<'D~a-FG>!hAPm[8ts.]%NG6y.	C}y:Ԧ1g'.8x* %N[W|o1^/\r=@yqx}p0&j+CJrMoܠ;i=%AuFM9;X)p6m8̪	x߫na֛@rXnmEh ΑVA<k 	 ry}Jv~
6WUiձЅ;&$_/̕he:94Y헰e@!DTfU!~i0Uҹ~mo!x׋*Ӗ
 [ܸEg
F8#f{v[堣j35pK>O:節bdm0t	z)Unlw
Z&<܄:$i#>'Om{Uo/ ?;Ff"G /о
|`VuO52oN',˓YjwS^R]ir@>w9VFy@i쌰DvQ^?An2[go4#׎]cY]O2	?kB7'{:~PH^ݓ4Fq+fߦč-tR4F5qU0u}o00<!{Uq\zD&?ag;e_#j#
7Z&<4ѧ []#?8i*$I.TgmvQ/Н
$6j
^PQiZ|/L]|F VMuz'	k!6S+Ƥwf}n$DԸǶ̴U*}ƱbU3,fP_}p"$U|ltީ	*܈u}^&ceojeAմ:!a7"`SKH$@{+Ĕb.^k_^RgTS0J)E;h|%-m*bGE>
RFyۇ8\56O^~[:~K|[mZ֒nN;et*{	y/xsVo)(Y?kgnbպ`93}#l].CA5)ک$=f]0\=䃲cR+RUQ^7[
%sُ5Ϻ=UmRFxIO=
&aQ ȵ4 vpcK÷>U<v%/ю{Vq7ƻF+ϊa⧠u|[|J
a'"+u$$6Y;^UcC-UܲVa/>X&)7b:U#ʭ46X=;FDςW!7h]]÷ȺhNL!=uK-TH3{'"j'BihrDjnꗰO.[ôP3)}@۽#ϜWRݨ5㚟A'!P%.V1|pN;dG;m3}!x1DN;Y;wP(q1k9Kd9%]PB#߬^aL|Jp]QxVKn"-8u5+LͺCxVqoD&_LU흆YmtJndECA%SkăI)p/ʢB]B5~b;ףp"M0C9
9vrp=+e{! Aw?J֢wg{~@։OC̜]ʧИLWpOg|G9j޲'S6a݉-y]FN@!\fw_k6B0 ri~Zmц!L{quggpOݴ]ehS9_Dż!ԇ+f;SLurQxK`͙ZLmU+6.M987_|#"V[)\$Gߺەk1z9]|qZ9	T)tyAdRhQ-OI&'= u+o.K/ÛFyL7'Kwz5̘+!Ū^;3?ʨ4yW//δQtfeFCpiJ 7:g#-:oR${x|ʳ}GkgMrLX%LM9ԘБkTb0{pvy"#Nt=v:]%t,Ot³/62T$[]z.ѥ%[b8
sj*uo8D	ʰN|ՒF>9n\Z޹WXPX4=6^!15> ?@ڣĝw]Tx`YGTQ*W٩:6%a71dN0Cb;lÖO>uH|c18-SVwCģ.3	*ʝ2zCA^{Z{|庡#k"(a"8W@3I5u"f  4@QzMQ$J8Aay'Ew:rͶs(R1-Wjc{0xPk\uO"ޠF턣b8)K3E,dů٨;`&`$h7K(Hߣ86n(kwZȜcde}هk3Vo#d@Rt;Azs+ͣ_LvRZ8Dɨa#WPhpnXbG5`slٍcʜN?e3nMUz'\]u_m\k6ebIgG\8w11ΚM$
`oX$+ZfR<P#Ah'3s}s}62vm)ی٠+]fmT8*[bb WipXB<  Nde(Mѥ0VAwϓ3
g0CGJwq+kZv|ǜ7-s܊0$գ7#ˑ1dy98B+XXSk1瞂"6%z+Kl(wKšpF&KV6" <2lcb31<EWxw x(Pr#>
Ȁ
+vb~;CBoc*C	)B>x+"Kئ *%kQߌ\/̼"*ۆc(O'+WKe}jH$ %=ahaׇp@Gھ$"RRtWT!(.(p%=龼}T[^u^.8{^l$$YQv
vV$z*
<]||eZA@"0F@.^	CS~3͡RsDE~j}bĮV?އ+( @YM	Hyp(tN/!eHXBq>n޽t[S%SEŢ~q֏v=q,=8{gz.~D!bAvp}(P!$G>>0b?B@#F)c!>Sh43ɩl>g+]@2hMk$Qd0Mja"Eӭi|ղa0 [tT&&`FQj]~e(7Yr$N/~OG#ᵏ?A&a:0P=t1RӬ	(D	yzR,eၖZwSoD-"E>4帿%?!Ի泮H3GY*P:lyR|sA#đTͨU@[-+:=GB!R-Ω
 U]:,g8DIaWqca#(\~@?TBrZ=m	X~V!fqŎNW^[ F8` L3	\'֓Г0~\B5xзUtdtU)7p9ʃS/_Y=>
mI{gm]axmUgÇ/߮t`f8M K%Nv(џYCwKyv<Lf?f5f2

Qw^9;@ۆZ#|h8t
x%gco][ԕXDU?(Z"H8 ?/s"n!4*KgD,x*۝>0`O>˥(5"bkS,g8A̴^n=\fD=2Ao.y&ZNUG^:Arxtl蚦GG2->9(J! knوvlMu+alFDՒw37}Kp?ĒdK*}AioŎ۵,E!xp?A?#c&I#Aztq|N-oucNPl׳R5Y{=+B} }'I?ȢK@h-|"Mu%-;Hmea0`ZHVgt~.l^	ё9p`q?EŖkb#ߧh-Tz,EQR࿧[RB^xٷ<M #x,`+"q/f.755K{]{Z\O<tRQkB0 ̵Xpfgjfe}Mac*J:Ãx *qq%~6lZxXcJeÐJEBhvLqNJ#=qߝ"=Kq$Ҩtz_F`5S7>ޅ>
f: _pșdXb	Gid6xدSFv4]
h7ofla^|x_2mLÊos0ozs(tP7$uCJJfmyƏ~;%xudS*TjU*A5):9c;;,$->,}BL!D# NL1 $6dA<#>*w?s7w >t]:r/G7|1-Dip{KGU8l	 Sfz^(BtOjHZ%xO?LJ-՗O	"G	D{%;SfE-HNUsu䇁<2n)z_N)8~0$OZ%2n5EN:ٺv0L[db=IRQ9!!K,_IwFRx+P2s ZsɄ6({	yyHV,+sG%إ.kvcMW޸}:|rãۻG+)r>B.:|{:Pűk2A\I.j%QHXPY1=1vNፈlNS=g)g$ޖN&=՝~ ko`7wǘg415IŁwPDv>;sKlUmkn&@LWE!DCBcM*:w{OTgq{,j&'3?Xc2	:ك>įGt}Vzi+b@9u/v=UAEw§l?k.|o;ńj/`I2
fx \_,هNn,,ΛF̑s7X+uF©$uksgr~?>R[N?o0_!1P83T"xn		!P6Z43$} 깆^[ޞ100644 go.sum =^8֣RK;0I	Ix 5)6,هNn,,ΛF̑s7:X+uF©$uksgr100644 Dockerfile ߖ%Uphn%X?>R[N?o0_!1P83T"xn		!P6Z43$} 깆^[ޞ100644 go.sum =^8֣RK;0IW0XsxAJ100644 .env.example ha/Z1 рK T240000 .github ,هNn,,ΛF̑s7:X+uF©$uksgr100644 Dockerfile ߖ%Uphn%39=.>֢nYH100644 README.md ?>R[N?o0_!1P3dL>_+4j}~;40000 docs 83T"xn		!P6Z43$} 깆^[ޞ100644 go.sum =^8֣RK;0Il3ע7x340031QK+KH-Ieؚ!<Q?PbI!rsM@A/=$4Κ٬l3PJ2R}3=[ѽk?~BU90Dhtk<ReF?翥A'getMW~	ee*'UbxwG7A&fh-gE>̎'TM+EL|vAkXg~RifN
ϖ9tΞN+b/D>9?/-3;-a#WPRZTpdۧQKݲ*%!L0Ʋ7nX};nVXƇPCE79? 8U27!g]{ɺƬ3{AO.fxla2DO8oq^|ĸ"
b~0}x_CL %剕BqڳzVAebv-ÞW;Eߛw4BEqi.mu{-ݸrUoPyz%W(%ɉUf%d3{ўuqOn+v("%E@OYlh5~?o͗79hS(+.pNѶxlaY*/#QP
@3/p?'qE\mE3(_ck?C.=oȗd3<<,->6}- {_ͯx 100644 connect.go +.
8*m؆h100644 controllers.go ٨B1H>{100644 controllers_test.go <-]kуK^mkc/7$x Kz1O-l{c'GQE|a40000 db <͝/$I81YɫdZDSkP#100644 go.sum Sk^,Bnai100644 main.go q4ڍޛͮuF8m17\f8=O0x! N 㴵=3tx[}.1{kx %z1O-l{c'GQE|a40000 db <͝/$I81{gٍpzg:100644 go.mod ɫdZDSkP#100644 go.sum Sk^,Bnai100644 main.go q4ڍޛͮuF40004m17\f8^xP 100644 connect.go +.
8*m؆h100644 controllers.go @=6p&rب}ǆ9!:x|iBwjB{jciIF~QfUbIf~d& ^ex\ T:]Lnw#8NVg)940000 controllers Hڞ}PIٶ^|(yHvy?AuL'gQxu T:]Lnw#8NVg)940000 controllers Hڞ}PIٶ^VB=ƽ(?%'۬f|(yHvy?Au}m2tx& 40000 superpowers ?cT"L 	

ux  40000 specs Ua}>^rxwab$r6x` T:]Lnw#8NVg)940000 controllers Hڞ}PIٶ^Q`|(yHvy?Au%(	&x o2(BC2e֑~«Co޶k o,%o'-:]Lnw#8NVg)940000 controllers Hڞ}PIٶ^Q`|(yHvy?Au>Gx
p# Repository Guidelines

## Project Structure & Module Organization

`main.go` wires the Fiber application, middleware, routes, database startup, and template engine. Keep HTTP handlers in `controllers/`, persistence logic and data types in `repositories/`, database setup in `db/`, and environment parsing in `config/`. Gateway integration belongs in `gateway/`; shared helpers live in `utils/` and `files/`. Server-rendered HTML is organized under `templates/{pages,components,head}`, while browser assets live in `static/`. Add ordered PostgreSQL changes to `migrations/` using the existing `<number>-<description>.sql` pattern. Load-testing scripts belong in `tests/`.

## Build, Test, and Development Commands

- `cp .env.example .env` creates local configuration; adjust `POSTGRES_URL` before starting.
- `go run .` starts the service and applies migrations against the configured PostgreSQL database.
- `make dev` runs the app through `nodemon` for automatic restarts.
- `go build .` produces the local `micrach` binary.
- `GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build .` matches the CI Linux build.
- `go test ./...` runs all Go tests.
- `go vet ./...` performs standard static checks.
- `sh tests/load.sh` runs the optional Vegeta load test; review its target URL first.

## Coding Style & Naming Conventions

Use `gofmt` (tabs for Go indentation) and run `go fmt ./...` before submitting. Keep package names short and lowercase. Use `PascalCase` for exported identifiers, `camelCase` for unexported identifiers, and descriptive handler names such as `CreateThread`. Keep controllers thin: validation and HTTP concerns stay in handlers, while SQL and persistence behavior stay in repositories. Follow existing kebab-case names for CSS, templates, and migration descriptions.

## Testing Guidelines

The repository currently has no unit tests or enforced coverage threshold. Add tests beside the code as `*_test.go`, using `TestXxx` and table-driven cases where practical. Avoid shared production databases; isolate repository tests with disposable test data or a dedicated database. Run `go test ./...` and `go vet ./...` for every change. Use Vegeta only for explicit performance work.

## Commit & Pull Request Guidelines

History mixes terse imperative subjects with `feat:` and `fix:` prefixes. Prefer focused Conventional Commit subjects, for example `fix: reject oversized uploads`. Keep each commit buildable. Pull requests should explain behavior changes, configuration or migration impact, and verification commands. Link relevant issues and include screenshots for template or CSS changes. Never commit `.env`, uploads, generated load-test artifacts, or credentials.
?Ńk7-?*j