From 4540bb166045c537b5250fbdd945559bbd089dd6 Mon Sep 17 00:00:00 2001 From: yuanqinguo <121817294@qq.com> Date: Wed, 6 May 2015 14:52:13 +0800 Subject: [PATCH] Using boost an asio simple encapsulate server framework MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 使用boost asio简单封装的服务器框架 # # 仅供学习和参考,任何偏离此意向的改动和使用与作者无关 # # 目录src中为服务器源码 # 目录client中为简易测试客户端源码 # 代码依赖于boost库,在进行编译前请确保已安装boost,作者在boost-1.55中进行开发和简单测试 # 代码支持windows和linux平台,windows请自行新建工程并配置头文件路径和库文件路径 # # 在已安装boost的情况下: 1.修改Makefile中 16行 INCLUDES 路径 19行 LIBS路径 为相应boost的库文件和头文件路径 2.执行make,即可在当前目录生成Server文件 3.服务启动的地址和端口在main.cpp写死,编译前请自行修改为相应的地址和端口 ps:欢迎大家吐槽和交流,本人CSDN:fly2010love --- READEM.txt | 21 ++++++ client/Client | Bin 0 -> 399595 bytes client/Makefile | 31 +++++++++ client/client.cpp | 48 ++++++++++++++ src/AsioPool.cpp | 62 ++++++++++++++++++ src/AsioPool.h | 33 ++++++++++ src/Connection.cpp | 141 +++++++++++++++++++++++++++++++++++++++++ src/Connection.h | 108 +++++++++++++++++++++++++++++++ src/Makefile | 31 +++++++++ src/RequestHandler.cpp | 1 + src/RequestHandler.h | 17 +++++ src/Server.cpp | 98 ++++++++++++++++++++++++++++ src/Server.h | 49 ++++++++++++++ src/main.cpp | 19 ++++++ 14 files changed, 659 insertions(+) create mode 100644 READEM.txt create mode 100644 client/Client create mode 100644 client/Makefile create mode 100644 client/client.cpp create mode 100644 src/AsioPool.cpp create mode 100644 src/AsioPool.h create mode 100644 src/Connection.cpp create mode 100644 src/Connection.h create mode 100644 src/Makefile create mode 100644 src/RequestHandler.cpp create mode 100644 src/RequestHandler.h create mode 100644 src/Server.cpp create mode 100644 src/Server.h create mode 100644 src/main.cpp diff --git a/READEM.txt b/READEM.txt new file mode 100644 index 0000000..dc45249 --- /dev/null +++ b/READEM.txt @@ -0,0 +1,21 @@ +# boost asio Server framework +# ʹboost asio򵥷װķ +# +# ѧϰͲοκƫĸĶʹ޹ +# +# Ŀ¼srcΪԴ +# Ŀ¼clientΪײԿͻԴ +# boost⣬ڽбǰȷѰװboostboost-1.55нпͼ򵥲 +# ֧windowslinuxƽ̨windows½̲ͷļ·Ϳļ· +# +# Ѱװboost£ +1.޸Makefile + 16 INCLUDES · + 19 LIBS· ΪӦboostĿļͷļ· + +2.ִmakeڵǰĿ¼Serverļ + +3.ĵַͶ˿main.cppдǰ޸ΪӦĵַͶ˿ + + +psӭ²ۺͽCSDNfly2010love \ No newline at end of file diff --git a/client/Client b/client/Client new file mode 100644 index 0000000000000000000000000000000000000000..e3410b572b619d350ed022f8f2f3ad1744019033 GIT binary patch literal 399595 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�DuK^{ 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 i(2gtgGd-OtSZ85O88&3#3UYB^VDhRe5Ua{LY2 z5EXb0Mw`}&Mxsr-L?h9rqiG~2$oY4%$Tx?Ep(ZwCTv1gKGzF|?-?=aONfy-h>^H^ z3ftiyjPZLlI^5W3uf|hIdtKQVhr$!2I@L@$Jt8$cNv=ia^t#?4)1+sBTrBCB8J5w{ z+G`@Md|F=(DQw!zk4!b_>RV;ZmsJ8obIQlH+d`Tf}eR^^f7|K?2 zMZZ%H@n--=VzwaM69AE4fI&lQjW>?RL5>Az(6`d}xIP8tP&6En`5*4zDlJ9JZ{)Np zv9E)D`o5gO@>Ih*2XRF%kEMe%u)g~YU4wqPkpVr!Y6hd5vW!n7S&$-c(Ms?Na{)H` zjNTPdCkI2hC_&Sp8!j4ki)f$mg~K2ljaP!LP^$4AdRme&LYS3&EX(PMmO zS8(*1Gr&~3N1?o4oaQti*?)%9_9IfsH;@zT$cWz4Tun{VA8TPXrnzZEk1^){kcQ*^ zhaE>SM={b()3E>OL>l%VW705B_fqyBt8r@gfA=3}hPCo#VH1EUtbIVqWUi=c)3i0f zG)De-ULF9Ek1&GvV~(FMQOd16-Wi}?+V*?qTJ_i@c^)Km(`a0{=v<7MOGt7JtCLx& zhcyKT0;Ux5KliX2(_Hs#75u7#$r!VLBfO;xvUk#rP5t`|(tVvWoKT~2OgIcvI|F1U z;VBqddjT`@(4^fvj?GkB(~8 zd0~!Xyzni!1Rp-3dEVyYf+tOIOifg9xG^M7?zkJyk+#OHrx+AG)zg@D=Ca`F`C6}; zQx6KBU2M#Hib28AwfIKN=>`SQ-DJ#K>lHk2Ydw>Bj%iS+>B@`%ct>RBdyX@YE2`t) z`Wk6~52@f+BE2a?Ss;Rz|Rv!!p z{sBmi`(6lYO&w0`ySYxDIBV2vQWZ)@K#SB?E%vRTV53aFK`EVp3lfyTNAwo-;D&;i zr7E+N71ceN3~y$@^%-x=H1+}3F^ua#Z%{^KoDw~@Q;%*a_)wneNX=|0dPd&Cgc6_f zg~X`}td`e+-$`gG65StG@V#7xhuRw@KY;$8P~tKEkW;K+zQ8al{D=M@m*-*e`Gaqv?p-<8l-WKNAJ_#^beS-$tnd_Z@RD@at`{8r$myh@kX zD!Kr)l`?D=EfU?_R!}br?qZ6zxJ;9kW0eBFDk|j{ z;J*V3y%PNlNZ+ZsYyFZ|`2@4RTwcs-4d^RUYQcRen0d?6=y}%3j`x~GQs#gs$h)U*MohmZbAV1<8QY=AURoq>M(~ z9BF#Lsw;pqKEX4wmWYiZ(w8}}z76E%ZmM(<#8oB8rf*jyx9-4?Z@Hc0w)}?VE_e?s zH&JBlelI*gnirgOU!z_L$t!Snr^VgsYSfhp zaW~U9@+mxwaaYB;TI1Bst9S3m^!asKAF`;o1z>iacs&nC{G-l@}7P2 zj!k(*pOTJE>H7%{5LZ<7l{hwKI`Rbp78wPDW<(eNa%{@)RM2$*ng8LwQE5|*is0Ck z`V|?1H;f0lKc39+j!pTA3VV)Pl6OE)D8qUqI5wpvO}NGt>z_c+I_Wd)qu_^kUMeFf(P&OyD zc{K0XlqE0tjy??KnKQIKeGO3=PANab*LDKR=`*zT(-<$E^2rfj+gW&~99MC_dB>)# z$z*ESL~0Z6EdyF27nws+v^EIxRUo0CuCWw%CtxqE`HJslVVAw zWFF{ZuBhrOQA*Y$-x6SvWiS$@7i)Z7!z(3K z=|0}1mgH~HR9@XYZv>^}c}Ctfu0*1sjRS_CxlI}PCiG~wuP6sfK|o8Ck}F|YMUz42 z1Pou1S4w6)PZlxmt%b5lX(m*WO*ZgeDVcVZS0v-{hoC&2(B{#+Qc~w!4(~GBK7jJ& z8QQ#3(zTPXEft;TbJ=L{9ra4djbHoP8bfKTv|@hqO39_HZqTF>>Cb&=KuhGJ;3%OW zUj-5hg?gBc&vcj4+;!LvTYvH`2*%tKIR^O=Ri_ItcA$JUVA`MU^O#Y23XD#@r4qujYMN#Va6e zC_$QFHFTq8+y!(X0jmSfVg{lsL1CdT#Zij0OfDWC?4vGJ!$iNvtXm9TCKn07UzpBP)0 z_6+EyEd3FvhXcAM#)21d(1P+d$jJcp6QkINaf*K?huBxEaraz;8n#Az*9c}MA@3$} zH>RL9wo>C~XFJXlavLeuD14u6PvhN&_Gyk8HJ2wvlQQ-E)DG2BYqL{NCjX2F!w>Ma zT9*t-roJ2<8@Qrs%iHZ8yaRd+J zy+6WyMfOxS*}yfdiGb4+EG7)@=E?gbc9j%&wQUbu+h-b@cd&JmE2<2Mm>^F#SeW?+`31-Y@!(Dvoo9KQ#cudQ zCR>1|8o~wv$InB>r#v{50&3jt0WYlnI3&8}q*6}i#3`&`V+3MOB#v$gZG4!B>ZZ$A zYG!T2c!`Y0PI?;D1`xI8Be!>+i>S>1{` zVLP|k8b)4mR^%Yc?ED{dE3CN6x#h$%f2wdI+$;Wxe>lmKt_#T7T9+baXJI#D;V!lG zA|#2trk=Im3COwgWTx+xBQRbsq1voqC=gu%kaMqgHP#YlzW)I2*Wy$Z>MDSo{d!Kf znH7|BWbv9@#bZEM0^~gM(LH{M+QPW7ILi;b&gSPF{^}e*9OIzPR%#*~K2_)IbDq<= z9XnlrJ+v+VOw|eboR`->?t9=7Xs;;M<^@ft$bXVzQ)k?B-W>3h&;J6h^WFdA+X?fW zRQaA64;%eeA!n$CgtzI}>AZSQX?cNMZ?i%-D1%GrRRuPPMWXZKIpw7CYCk$=L0)`@ zUPG%ax8q5x_f{zP|6la#40#T(2K=rzse26a@#1=YKj zY3`gRGU*xLBX!`lRc=y5>y)^)K!x|gdTdOUkFF$-(eCLwC>e}}k%1*`oqnT~iow{6 z402_FdNoU84m_A1_YG8iYLoAOVJU2lx_~Y29#X-4gB?|)X5lnLi@R^Dz|uZeqXzv6 z(dwvt`sX37pROb8&ryRTN9Ce%PWsQGnN(0zC9`BAX^0^Tr7>4jxe{5&ow)=B)4vIc zbm2KS0h=m^zK> z!p~I+gjc6#=k$4$R#xlO>|F=2Qr-+hWqZ}A?yb!3pxbjKPy5T+opsSS;nTg9_)ci8 z%5X(huSBllPL--)c7M=XK#dY`Qk9xLEVN2BbOX&#FxII8Tcu`?`R@W{j02r<216^9 z>`D18m9Y$TT?vNW?3O*f{!Cut2p01{Fpd;wMQ+A9n-M+!)pN6a{&Be9mEdm=_|Msl zo4sk?c-vpo{b-U7UXja2hXY9u8_3>1N_Pp+<{MH=2wek`J#&CWH~U2mf%$LX@d3q8 z^fMOhCx)~*1_1Zt?kX&WtxEz984}_Okp6 zZ6>l(W=XjQ##c|E{FwSG4Ub5qEO&CRf)6&v)9(X)k$_FO=p1T=^b&Qz9J;!?2MJ8^vf+iU z|F~1iMko%?D)aYOG)%Aap&7K>mdwE33&bFy3Oq55ggVuxvaR#N>0R2zs7V0k=2GSR z$07#UNN%QHn6-HfG2RN|@xMX&ub@P&>{9yh3pc;A9O&o3@)yqJBAW2q4=SZ-g;{Nt zQplg_vu+`Capi^2Pt@4>0wX3#-MtMq%cwTtd*tO4lnl<#$7xJeK##oU3Rb}Drpn7S z!BqrTXo7R#E#Cyk3W5|0YxzZ7%QwNR@ZVCV&S`?JWI_Mu-%D9Y`6j4zddtgkkZ4)< z$XmxXDQ6v)LeUR6jz{+s|2yZ6$@aPblDUqR{9P)kjBoi!Vds7XlO-}&9T7W)J< zQc>-zJc}BR7ExZcQT+N}!!dFvTUu*C4M*8Y7@dw3>X$xwtrYwC4z%IfAMzNr0ReUa zfJ-ZY`UD0JhTMW?QC1sGwG|Dao@7c7-@oFzEUS%+A>ImTcwurt7|jCqYjB&gSly%Q z=c*dcXmdaq&H}3HZ)6t+B9dUO*lS>ZmL-=N`4;+*!1+%!WaLpAK|X z7EY&{@G7xic1agvw~JBCEmQWjm;OL`)oZmf{b>=(f0qIJ`R|Q2yuMvqS-*s0S$Spq zBCKzH@@y5+Y81ugl}(th8!kG-l{-=VTBdC3KX=>k{$z7*zo{#}fkh1!HdQsLSsaKX zsqFBJuUxC=9hwPPYPWUd=DvPYjb~j!Pist!g%&0@z?*T1)#&K zZDg5M|I?$ux3Biz2;5)DeRQ>>Xj1jReD7lB`)Z9CHS4d@VzNuM3Af`e7EkwTR}aQr zvWV_Je2VQ@tu)*Fq-qsX*pp~2zn>D%t0^c88nGThv$IU=y=$uJOjyBj)&>Q?|3>NW ziv)tQW~IThpxe4jz%W<_>=EFO$zs*4G)oo?ds%OyGD`;3Fc71&sLZE%+EDogH@xUg zU?$qjvj~RN77K{%=CSQKW}uR^dr&@^1^DmIT3_qM&3nOPdtE?-bm#}bHkLsZ zSccEnZ$Z)i_C5fkcR%eS?%x3K^=Br-<**(>KYNdR;ripg1jX}zaP7;m*3XDj1^B}$1pV%s}Es$yB=^5;q^efk|9KnGLZ= zuY&MxEBZ#b!@#u5;-Ux4z8r&krG3vFuKXH7n>qASu*q6ZiGzmQ@D70fuq^{Q>NgY6 z1yIZ^qZw!~ECo;{ao#Z~Z$@!%R+%q@XrT3+0HS*0vt|^+^Jw2JLyU-M5d&@T-5~yv zn9KILCN4;OU z55o1dViVT#_vKoC?tBN;r)BD#xpO?>P<_k4|7IcO=T0Tj=gu4l*^njAzlkd;=TcJ! zk}uX{D=)f&lLO(yKa+1^pG#9Ju~fUBYJTxZDfy)0o!S7?Cv7a^AaGQ;Wd@l1Yf&;V zN%`;h0)Ck<0<9YepF^{m3fN~EySSk?0rL{2?RSvc5iG@6Ubv}&T^ zORSWlW|+d!yH=^X19U8CyQs8)wEG~@wvUEd=ACZG9`QV8p{f=Xv0IBu#fa5 z+VxpP<_7Us=FP%;{I`z9KJ}j@?bpn-p$|8=M^Zh#%-<2u*+P2HE9Qu4Z?md=Q zm4j(Ws5wS_&3uJYlcFo**}(UQ_`x(C?uNJK64yNYK-0Un@f>Jq+GIscQRM?c?M6 zNP+mi4E3&3y;7IEr_pnUTSC>hzz%&T#wXDoh{Ub80)C*?rJ@U$+aS#xZNPQR#lpA` z`;&!hZ8`&vSLYBAXIDTCv=JY{^POG!C7GRpc3uSpH*F>APoWpsomq7}_|aYyCukng z`LCo<)!kV=uLX^{N8TtpR*$^d$7zz$Ad#75rqSptOfrv95>{@HV0R$rdkv9=dQqJn`Tx#!n?v7KYI%2n{DB`L&%dwlg(YXAK1po>%}Ie29@P5Aa{cLD~rtL?n=Gm7!Xz)j*yjU!aVwWiqJD?Ha1!lR$;D3p=q`}4Ox zuB>qY-@ifguQIJ@m`i0^<3PUuh~}MKt)B_ZKnhuuqyDx6M6DqMIhg%;)VmXToC3dB zd7@lIjm_$zZv8iqoY)TG`$u4g{vFPvoN9L|;fI=Dm13#}I4cW|%eSvx%G_O})mz-P zXoNPq9mu_ceaMB`jc1Z7#-sk=$wj7J2g29OP}GXT`0C?-Gyv-Hb6#?ueGcMI&QeYO zjfpK@tMZ1;w_Xzo6ni3tLRkKNTxox?vOc~>S!Klf(w_rgYhyWW8b1e)M9=&OtiPa- zabfWiKM20g^z?u+##6!j4`?qegMDn)^l};rzkv~Gu9MD_Qr7gO>5=yknxvf7-MQ5K zfp7AYrwJd%F4p9&+$P4ktN-g_NO!Xn&!7bAzsUVqGN}^}oT_Q^E7$7osab!~(RgZ@ zDxbEw0|MjsUm+_%3dL&qXL6<8NSXX1VTa@Gkkv+H;9HUG&7CO;Nm!q(t}Fx6^vD~H zCMoA9c8S-_UE>K^%qrt4ZMoOTcbZxa8E`=dRwr3OaA-ZWIXe8*WkcmfJWv3z46>XnEMu042)GBcsZbJ z%YYZy>q8-2oUl6-=&33z%O!**W!59_B{}b-D0}3+EvNF&c*}^CSMBBZ30Yi=5o!Jq z%E=~Q_C&UIOtGu+nAx9TYH+_>C?IQgb^omL02BvhmE4*=1#z`kO~hvUmCO^e+BkXf z+*dbf#9>||hPltG`x$zuOQHbbf{@5dQ~u-Lzd;L9tZn%Y!aQnmN* zW_=P+cUC~q_m!R=d9P4aJ@Q^gom9XVd<3Q$)pE|ddsKsb#CUODvH@a?egd<~bSsmX zAFZ}C&X@>Hki`7F=u5Mq+(+2C$56V$H*uSW+yJj)dF3`4M;;L#f+D#m4LxObxe9&0 zTXaWpHu9Cd*EhI~=+@Zp*TQk}xo8w!@(`A%NwF8%FErM~ES$RAUh8IZ!9R&9yVxe; znFja8&c7Jn(@5H60yPY^!6n|nn?lMlthIhGMiE0jWW^?{8F0*Tp6&R4Mbak2!1IoH zs@G=FLjsRnR-Pw$JvSJ|CeyhP-Roq>fa->%P1b?zE_z#H0Nyi^KqeR2VmA*4;br}R zGt9zw6_PfY1cv9ua2wtyka7&=lT&Q6dJv9Bo##D#pCW0KVc=2UO_bpM2?;!M>$B}Xj--OI}@yYp{koztsP$uVM67Lnx{QHcECR?I~LXR=7JI+YD`o%Gi{Z09ynk?XdnphF65;Me8lWlq<-3 zho!7G{tdYQbpJd|ZmnphM6>}W$R3ZVSv>*dwaPH&KLV3lCzn`NCPbl+c8fnz#5Fq2 z8SY^h=2~!d#|<-TW93vH4zpyybdb~~WtzE$U^?5)&j4`= zlG6?H*4e0On#|7lHueMQ>Cr7&#$n9-K z*)Fl+00lbLfs@LBjpPQn#_k%x`zDRGYV#tOU6E;>nYbLtd?d7fxu^{-K8tM{o&j*) ze6C80RzWF(b>b_hqv4?1m z!tDFFlC=xWIvWus7n#Zjs&#gzd@`n3HxeyReElc2lXv^_KQaHTjaHY?&2|>6YSVHu zF@GEZJ@S6VDydu75^KzKtT_JZ@zi5`ewFE})Fu^ek?DRl(TcF{NSuFM4AY}VMl}xb zyVRuaXURX|Vk&aBQTQ%I$Uj#Y({{8w@?h1SY~o71k06y;3&r}az0`+=YN484fMf+xi>9PI=obU(Sm2&=o=5}QG<5$-I+Uu&pCXC-=S>jE_z5S7c&Z;0G>{vD(Cv0_5O=#$J2yrOq^GdmNWo z1avVH3PCOkQhScYCKhr2(|O;)_c4+-nS_GW{v{kG1pI`QmEGyUU0o|_;n zePgC#6QUp5^BmC%?NK?15*tN9O8coJCZjF2sklEz;(|Q&79MZ;-f7h;b>f25ru1h( z*1Fl%nB9(qf|M&1r1qjyrfq5AX1$<-d>-u=6|tFu99343+7sX7w8TcBKOmtHUu$LvB$W9+p{3C68sJ% zB++l-w%PY~#xZR0HBh1aM-$ba2m3@t-o<|s%pZAdH3}?hg``b9q?oZ1#S_SO`^tmH zZMTi?I7L4c~r6vDidin~2`@$f5>(z6?p5xIJ6@p_qwmw|6~gTq(b7l$V^~L0@>#Xy|^h z`HE|Rcv`%ogr5V?8k_JLp#$ZHZH;|-EZ#xm+{=yD@oak*)RA-zXky1xHLs?A-QH|SazY<>O;%XhG9UiB$#OC(l*eWs4@z{@of3=O7FeS=w zB)8J&&n%1Vv8fpLC2SNDcK}@4#EACUpJ^22^_-X}wvGhPh3*EYoQv-kByBQ=Fl|HJ zkw-^Z0qKpvmN@ir!j~d(N5JJ%M9Q`T6J({szCf}5?_hfny&#(%_8X8I4Kr+Vg$d_o zP$f2zt8mp{RjCg`yV@pR5be|ENfch`Yh2-~!iY{flh^Zy`!EW;iVH=TQrY~9u$kx=SYwzt9blCurLHy%lwEWKXaxQuGGK7#K(ut5|XjePpL&Dc0Ap>%S8r6xMl<9zoaM5e3(O=Le z8&|>>S<~Z4+P-KSAR%dTflgkaT*^ok2RKbfd_9r0$wY}-Z?|5^{xjN!j!4W#w8}+V zM}uJR7mt_*JKI)#KO$+9iPE~m4hL87&>`rzzOG`a)r2(x5>n@6084Ezw40EfHvbYV zdiSOf67xrw+S9Ru`>Bypy}_D1eE1-Jw<>+Z6Cyks|o^&gsdkla*~o#z$h`0ju%a^Tm1zW+Pm=K@|Z9ng~wOg3dsMsgWT zZ8q8^$WGhEV}^PcJ;ydU`P*q#=0Gt0DDSc3R2yHD#sm2QQAkchLT=@vHh!4l;~pNx z_L|2y9p7b0+GG;)c^bF_yGmdE4dwH0G~Xj3RdR(s-*2{X@o-UUZ)30<20QH~PD~uw zEhw0`K0uL&;yard9oSt55UDegocsyr4!cy*^{xTnRF7_tW~3eY+vs{{qpJn@WF(HR zZ#KGp2<(S=bp6Vr+hGqYrc(!?y9KdD7ZA(i*_gbPD1p^BVd4~U(lD5n+AzR3We5ib zLJB*nlT$lvg-C}kM8C>OSIX>=O!6y`4wc497Xkh}LwZ^+Y03t7;%9`=Zg9%_7#)+P zlq*!gMc;BZy3-@x7?{;{M0c0z2r4huB~Af$E)tr6T;*3OQBsFkxfdo}k?i}X3S=I> z1xVUtt=13_baf)F~3tO_BH$(3nf16ZSLT_mFjR;8fgkH3n^m2y)#z$fLm~77;uS|zm(~910}PGC$*Sl zZmpD5V0!03kZlgjYssw{61sh+JlEK-CzGR_br7E%t+CrWkd9jfWJy_SEwSB#gbdyn zG8hkx1rNjpSZW=C%t3Zq_cNfoBjlVL)+nj>3{s{u|K9_+~(gmg*^3Q`nv?ppU7slj^pE}1k}Ggw! zB;?_h-u|Iqa#-d3J#ZE2pBkrs(Uf%|eN#sG56r)+TGN{4I?G?kC`OI&ZE90t~2wlUu^v=i! z@Er895`G{&qbqThS`mnR5Sz?vZ~ug9kKrw@yaQr?uek31naGZ(DPwwy#NN?km<{_4 zm0}=Mdh14bc#)x?RU%%R&|=PkugD5Jlg?eh zcW<4UvgERFxN9poDlwJWAWH7XfLm-EK`HWTpQt37fI13Eo2-3u{L3A>o9QUlo@hrP zVIp+a+=)=;BD=x~FT!^zk~SG?BHU%2I+5t1iNr00+=m1zUv-cmp=G*)8h-N!<@V02;#|1O5qs#aOquPQUaQJ>}|KR`Cy*r;Gkrmi>Ic33sgGW{jW4U9F^ z7)0RxHW4M2!e8tjC4Npq37_kU|7TkkNPc@;FgKwWe97bn)7Q4}>s?=}oToALy-O3q z`aGZ;Ui|SLZ>hD1YBmxNO;;w)bHj1*usJU-1LoB(F*2n1syGI9XTMo4vfGX$%EO4L z8xpEUuH3a)@*ALS zk%QP`ok;$EixbBZd@2$m^xNdzHZMD|?B`75@m+wVO@^T$^vX=)3cQaXfyZy$!xFY| zh=RYhAL-78LsYAowX1mchxKD;eh=SzByFOCIc@XZp@*RE&?y7Gfb$9X8LO19-w1Et zF4H+Oy9FC9X_;kY;n*-TGWkWAv_)7@Mun5~(nWZN%z+0;MObgONc%x}{@;)ml#yPN z9d5T+TL#^O>L;$iVgVBJFBfa{0(LEmO=Jf`eVo%jf$t@Rd~#I@Zn55h;{yWLA>}x7 z>q2%NVY$Sae!*9zy_jSurj+TOqM2y_^QE$)Pj_F9gk@o-e0+zg@CqsDe;bYeEV@6( zzVHUUc9EFhi><^r@ZQ+|SWW4d&HBzpPQ5THy!mAOiTNGF61{MtilNH<7g6)>(rux~ z>gGpBsl4cCJLib%ly&cTAxl&6o8y$}6(P}GQKSrP z#^%~1D;B{9UjXvjkW^4^2njsN=DR=Xqif;Gw$QybH`;B)$oNQCw73gwvU9o-|FE*v z<&$7WVz9{uU5#d}4fR$rh^63iPw?#31hdqoGqVjH!)Dksq4B6t^!8CwZ!5*ylzK5q z`Pgl(^70Ji+mPIL8RzAFlgcaO7A)RJHrd6EiSgsIV)qDArgxZw-QRiD}nWqSZ@JqI||_M_@Pmf6;C+sh|yc#!H{ipOIKd=n^FKWx3*8`urKs z;Nb`=?JB;Bznp+)iRufF?h}0Lk+g}!2g3W@k;h2!s@Ufxb`h}q(K+n7BZUY=SL&1v zfVMzb`UFaPXFiShJGB3GL|3$@Aff06^N7Q@DcKVP*5Kg8D0GvMkR7=w_^tjlMrJ=k za!IkO_IiA`A!(CI7~b|}ORGWa#KQzEL&|aFCR%ngVR_e?Quw|>(k4SO?XV-n)L#0( z9P>MxR>x$L?a2aIYAezHf%qMEgCpa0{dcUO8yuA#rgqpcGSFaLl+H`;gV>@Ip&C+& zj(8UdI8C7D4x9?;(#pUhYfEt@7NB_q2^sam{MJ`N4Q4AiQ|%%U-595Q58oOjZ8G<2 zzsnt3o}Mh)QoPZzIkdUuC-bq8-Q|RJfgXgUO@=DJViV$Sv`ZavB-$=Hh?Lz;OwzvL zh+$}_BDu|CmBo7`r0natr0h~4cOW6da^hLO2v5DwSXy0?{7x2A-q)paJUWx7O z$16x^OC3?;xcG@p!v^J_*fjJ9;ogxy0=FK~6Pt!j!yO7wY)WkJ{(LbW#ZOMuB1_aR zCL-bbc1hxBG~JPq@ZML1^VY)ujOG4ct5FQcHx}W<7gr^;$nf zaj?@Y#`iSB`FF0N9FGyh8+cPlIfmSFl$AI-JI{7}zapG}=NfoU6HoO{+&CcRcyv?P z=ps{Slsv!_B~uZNb+Tj7^g}rR&J{9FL%BnbF299UuxlMUn(%v(P^g|!@Eom<8r^MD zc$1t6_G)CaO&vcmYILvZ8#;;kJl#yT!nNL-(KJOk-${2_U8dN^-7WDR3~3~!Uas6e z^c1*adyeo0ST1(!-|$uKtkla|MUk?v!AbkLBkG}Ti-bhWrE$INeTd|rz}MS?&Oj=o)YVFYz3SWY9B=mT`Tm)>n=U_r62k(^SK(FLAeJ4&wxEaMO zr0>}c#qeDuPVh&W1QU%Gxh2+{7{q?ldX>?-ObkV3G3;?YF%;REH!FdZ(M#N_H(eVq zp27kRuPhVuDWZ=cn-5tW7&aeIXrf5?sT2a~18cspdD zK(@(}4M>{BxBsVXvNI31sA(e6lu}L1XKar1d=Dv5?9DeS1z&gyMw}frJ-TWbf@v7~ z?YXR zPN^!D7xFsJTsEB&6S2A6sR!|A{53b&K$e(Ir&iTBn-lYEZLq?#z)!6j)&_M#yPaC~ zVyCNHYKIf~ z618_?O@V1X8$v32)l@tbP)L5SnjKtSr_|O$KMDFxAq`{VG^jvYzL9NYkCG52;(AZW znHY0SeN5DJdQBx%gKLr9OkYk+LUkn)Mrye@Au}av)@%X@2h##K?}O=SNSH9>@*9EVKysC`)?9@< z+OgBo{yU5Hg7Eknp*<4$&gZ~pr-Ww36qvFhH*z=vRWB!aMaEeIxx%yA#1?+Db6^@j z%`Zx}W#~+H%dHuuy^yeX=KAbx2XEiVIHGHvkMXO{y>Pfi*-|Yym z!EyB(9^sBWZXX^LXQRgeKIPzN(7cJ{q+9nlZwc7!X+ZBea4n!;D*;0Wn;#;L7m$*_ z!`f4}&HF9Ku*X)lg#CDc+#kt}B{uFajd$*^FgPBAoj%Jp9};esv<(qxXN&fXoIq>T%``EY3{bT8%RBkpq_$Ck1Myu$LR6A{KGorrbH1#(EMO`LE;{Ck0Rwtjxv&k>@RnYxA1+4@R}c2@=R;~ki@h+`wH~0I%YGP1AAA@;Tn5z zfN){r&MUQB0KbCxoqx-**~VOCdpg{q?kc-8pkh-zuR-#b$29*Is@0LAkm)SzDP*DT)A}5GwT(bj1Pxu zxYLcpHw{UftV2cJCAvn^FL2C_XzoEmQ*_<{d|ALl1={@wWz^q@>RS=G+E?_g4prg# z_;ecv)iK!Vvv;djaW5^kw_=4?b*m%dO&*$iiLL0t*I=<3>=AV#l9=}Bu!v$OvxLIj z>8BrC9XnjbtKHlp>&0GZ;$#fQBB5yHVuoieaClEG1)}7eUNoW|LIme~Bv<0Q1L0K| zuH-mvr@KQ_{JCO%81FKq9Ba8Lp0bwtG|298!W6!55ca>gstAj0|L5TO0dIA-%>$2I z@z!GN1H<;xHP5T&WP2}6k2_l%UO$=s9oyE`-twS#sEu(urAAJ}jtRG{-K_AS;Q zSnGy~N$9RZLi}=N;%^k<9dVaG&Y^eOMwlL_)^p3M2i*7c_a)<|^Dc$96{B zzcQBP9xy?sIcyA&3oFBl>=a;$E79D8gvyhPR-t>EHaDop@2EBGg%(CBWaVh=yqA{x5K{8EJ79{flsbnzSqDN zo2-9?tLBetG|%9B6=5rkYe?S7?^2y@5+4z;5eam1<nJ+(|1?F08wYe6+)zkS-!Z!*@o9y5t-|o=&GyX#Ycp)XE zb_T)MA>~q=FMpJjJu@3uaZYsJNASIhaPz~}d9QSbYWwz8e4n;u;v)h!A~7Sb-2ATv zM*ayG=cUe@IF+kOkGV?RnDI`i*8Y5BhMh_cSzZ%NXWKa>|sqD zuDmMImyyo}p4ad3{fwkdCdzA(%@D(G18DL{IfmT9Q&!@5z1pdDu2p*if7z?)sD3+&%c7M$#r@C%?cQYV_ySV6nDO;w=KcK;p94Pqgw! ztg*!?`x9V$${Byamp4d^vUA3d+#$v)dytM#68Y#GA%W4qN02Xnl+?GdicR)U!}gam z9*=JTlIC|6V#We@ChmO{@N-^r1Y(Qs z#J2=Vn~XiBQ`{lm@e~%nxRqE&$Yvz)%2mF{ueG9|`G}T6^MBwPCG|sFN&UiBQa`X& zY>MDaqAT_&_Z-Y;kq{2^5$;j0bBEsIK6W4mz{dTe)b#{*c-KfTkaNozRXgq7t6`< zoJxNcC)t?Fi6F@NGlVCI-*TNg%Bm6ZTC`PuRhjfgI}8b(-jf<&r9_tpq@}~A0=cv@ti)DQE`m&U*y})e zuPr+EG`+tAQK_{-F%j8m*PhPP%rpLpLA>;Snu1Mygvn+kl$D>n|IJ5Yeyb+lcoD1k zZ}B+(!dH8!@+4C)q_5neLV9;5?1gAsAc0aYDsUl#FY_Lrh0rW@s-E~xLDD7@<(uc5 zVi<{cI#P}yx0q!mjyk`o5EtNEgz)|g*TD1A+3-Ay_XQ;I$VE!NVHd8L&kk?{kM)tx z@CClK#AFf}J`=+>ytRkrFqBJ)wh1|`*RhY@5)-R9#CU_VHp7r#8G}_cu$EdU6r+&s zRuzR;M9Tgo&o>fyhg%ItF#!op!i!G{;^$y5QTv%fR08hvyRyCz;7X*)=Cx7u)J6Q5 znSU0`vx?Pfn-q1NE`ZOq_hMHEyPft4@QyQ-Y)?Z{5pukPN)qn|=Po6z>S+}d!W$>i zaiii>v7~C-Y^7=djZ0Sh{Gn7e$Ld6+$l6s&NQ9D4)W7b{_TZ2|2BBy5Uy93GBSa?hEv!^rkzR4bg| z6O6ZJ3Cc=tbkuQ7C?MUk)u(7yg75XGGMIO|MTa1{byRAff#?ZBXWouGHGVTeQJzGU zG9BvX$76a@)?BWTzi&Ym*^T5caW;XIkjqxYE>j^wc-%tm(E&(?@uIcqJfn)8j8n}?e>ZX`JMYb4TyW3K`kR8rm~^- zU zXj+j;kv(uMO{gE3iAac4E@o@yuvVJG^eXhRtXkpD&8-Ua*^d0nRxDi^=oI|itk4xZ88k`Je_u*vJJedQ3B>5 zQ_xal z(o3V{r?^vgB$3X;Y?Vj4+enK#A^&%zhYI46UXRu1*+>TvOr#}8=SHevkM!~=c>-?E z*AVGy%vvT?yfX-U9{Il`?I4Ipx)#gkScc+VK`@batPrV!J<=Pa=Bku+^3?5h7B7J#X_HB4*~d(x0*@weGU7cz-!nhF6Ne|- zpb4D*DT1$=Dmv}2K9L_9ybf4&+FvLwFZ7XuP6tk>$E)2dn$ASJR}~e@B7Cdy7e|IE#VCD{vJ}iXkb7Z@nB;?Bv(~w#j9th1bPSqY?XM__!TvbdZ_Er~u6$tGNM_fX9lLqu2ZD8>o zh~Ib$-A8V~{*b9@UqPti@bIvD-fOcpjOa%X68EB6DuT?KBc#RG9N%!eQLURVH}dC# zA#L;cr&u5Ln2YiKQrqiESkVqFCuPgU%*?{W6-A zt4xeg_#vLv@o^EJuKNL%)$wr=p04`=mDTZak(yM&Gvr5ve>&+!klrR@WlZ0;3RO^P zF_ro3Rf!ewTwJy-^3+Q9IOl&RYFvCqf<*b5h;bFpL}dJ#GZEt}9N-wAIlw{Z(G#H( zJDsQ%?PQPong1R2n-!vdvqIDve zh4E>LcVlK>w5(TCS%KwdB~2x&Z;n-NDhkas73D(txzF>I9L?c4Bx{^D@p)5O?GBpC zI(KN+sl~oc;%M-LGB)~xS>*^7nu$>K|01$aJ;ICd-BR9|&W+b2?B)(4JjoqeGYx-= z!$KIYb>qhgUy6h_BUe~y?gGWl7SB}@pAfhS32Ac3*S!4RxxS7Y(^KA%4zf}w{1e|^ zW7Laf=ZPqChi?D=6kh?_c1StC+$mP(-$7QZs+wnCe1nm+$q+(#4tg4%(RgPffk!UZ z1xlAra!1K_&nR)S6i+?px)a|Lg#8b$p13LQP~tj?^i{lHAmvDN6DRWnA?xCVTk-vf zF#mH6i945w6II7D<|Bbet~haeiWenkKdZ#aQat^gt399-k+jL!6IaU}O5D{V9fEff zQjRn?aWX#%vJ0K?DttE~eEo&15|^^K$)vOoI^t2n-$O#}dl3TTt1MCHV^oS7NmEvj zwjlhIZu2$x@3S`97L&5$fC=)l!>XOjgoRXSSbT_yoCxx^!&(42It%l13JF~SOpuQp zb_$S@e+S!xf)wO;hg}Th)=IFD9~FGa&m0mee6wn5Ur&Hvk+sR>C)lWk%cjV#ll6LF zeNvTHGl68dg;&Z zP%k~=>L`-oMmIhk!>f=>ZE$pWm*{hppMm`VQYNgps)LY|LwQ9niDu0 z3C8~L>svoObHsZJ{?fud8-z^57`Z9MdjH$p1z? zT?)0^zI$A|_0S#;XD?62FnkjbGQ%}w#vQ8N-e15t6YniZV3aGjb{7CDHgSk?tg}9i zZz+;CS*v<_}g*SipJtC@Co`B%z9SyhnX1td}C8 z&w93qWP=~2>yoY-&eDZ*yj{Mo8dkwtDjqkS??}S%w6oj^!y{Ri%wr*7U$Y7kB;~L- zfqY#F#*oP4qt;_#Bx(w07`yi}_{oj-o=7jlEgKp5M{=nmK50z9)Tp55%vud6887cKcr_Q(^HRPdkW7ZM6g#)CG;VA_@r=q6yj)98rk&kQ_vj-Kk~Zkp%WbLd;%0Un`vr6&NM;ysp?}DV~weH6Gt= zByBSG4$;*e>JSUKVN2YA_f8~`%0q?Vl%tlYpkd*6UHU+Hgl=n3-}GhH&*9lH&#n*97}#Nt#h^~U~00Jy=`sVX{Wkl zi?Ge7F0bv*61yG)flJ+>Bx9hxbKlu(tsv#f_r!bT$-cy%!AcfCyH(4nL~}CRT8gI0 z>9K?OT16cjONl+c!|`QykdqssEwT0Rh@;9LYD=e!N6F2`-a$d-VpmQ}tO<#e#hz|; zv#gF|QuwH2$mDS?LV*a{8>nFWIrQ~P(AH(p9%-#0FLG_zme~8?g}ux1HZ9Ihpa$PTL0Npt z?wiC9P=Vdx_{J#DkWFUSGjxK?hDoX259}M{yRfy>LR&k$)VtHaKiTQf@cl{dRa15X z-9@B-I`IXN-hu=^e=JHO!WXHJZXF)$X*J(qDmVXF)Ywxk>~SoXX07B3UGXYV9Eas9 zTph=Lh4$MlHv25HN8a}YCbc>5{wYe2OsM)Ej0!i5_Yv~S}NxLcZ zCNXcZKCp z)%l59o%3^5ekeee;yJ^)p2hbbk~SH`m9}f$p<#54*3s+mR=F@|2_E=;3I2`N-{<=0 zd%n@)`&`rFnB7w)3-C?PB{NQ-0C$k?R8SoFa z%x?IGAbbXrt5?ZE?ocD{^Ismw0Gr~_$%NmCgmRHfjW`^v?{?-bu~l-;kJSDGE-71p z{Zwq1xc$>0wpFx`PrP?KPa2lDYy5msxAS(mH@vpcZ9-US@!EoTlecl%Vt>tzqJ!%v zlGAyDjD!sPOSqK!Pnav#XFTTS=#N0sCUhvRovb_)UGbiV1Y=+Ch0^MBLR?xhdlr(f zoalUf^ALUphO3uWKX<4B_xljWTk$SI0;62H3*(cCmTgbM*TDFTv#!9m3gIL0T$Q{M z`<*4RwDW7JmJYj^9{&GW5+5ND4KrR6x63Sveap6MyUb!W8P>fMNbCZ*7dd}#Oot(% zYCY9TM#`Q7Cdfk$n+oL8zk?-rM*L(Mdw&kQQ;;l7E*c7}XdMpi-qO+pP}5;m-ThFD z-%#=Qm+)rm`W{G=PjX>29nPIK+zuc9c4?2<7S8W~c_`FXzVkB0@vBl&06W?B!C>{}e zfCcZdU_IR#z9;-rJH_{%*ka=TuW>Wei_e(*mQypI@-*p`*zUVWk<1pk zX_r|f|BO>6dIt0xaU-H0(-nxRyl3L=;a<*o&c@^pWT!pxIV z+sO{pE=#hQ*3Qz|*iJ@5p~yuo_u*f$ox)X#c)}BM1HRi4a>ZU^LNO>L4 ze4Ff{OJ6QU*2>3!2%kVgf%!;UVg8+m_G!}igQxR7d}|QKey-kL{^btMzrS$@zXRAm z_EDC05MFCerZnPVHJ*RF&y&VWLn9_P|L>5@g9$qf35oGj)l^(QA+=y^;jG>9orG}e znQN#xO&z>c@UD(#w*)oNk(1G1jfB4CY`|BU!aU|tr>OT1r@m!ybX_I7>D>Qw=4$dC z^WmKf)fCv(IZtS);wfxGxhd?tv!brCzh<>Hb|<@sT_?zpH($dHH!;*+osHJSYwrkN zi|sl!P~67Nu1|cNk06RY2`@6+ zO8i&hd>9FZESHZPy>7^i8@+B=LLi?vVjf8D$EDb&6EKKaFY%aH;M;~sDU~eM-?;D&)meJ=xZgS#5ke-7CKDpF! zqGX3RG}^8JD_n9vRqkbIZ>o$<*;T*-h=MhKUvEzCl6>p1mo` zT{9J%j74>_)BTDs?=lsa4Ao*wtRBr>+D-c_UDu;sZ*ngW;fG?p2IHNkcGIqZXg3i*($+?Hr|L(b6Z5-ow2m~cuIYL+wxsi!rQnW(k9UYYzHJnE*FuDpxFM&RfKyx z=>UAg5nlS^s>qA1;Rj@W0^W;}z#tb4udP&L7QPPFJ)Pk;eE&kyCKEBF>?=|z?KzHk zneY@6T3Cf~>?~=@jbpXmB=W6<{fvaj{bdv4Ehc0%j8{5qttuaTV|@ z2j2(qeI&bI9jp`-W}uI7c?(Q^LQ85G8d}Y2QBqOF-wkU8LAx%C&7@|7y*?$1 zx;&kbih>ELdnOTvb6%qU_ZR8{ThS)9I4QA_jD%vm%~>1ID>n*e)|Uz-&8w`rJ2LCb zO^}q>JnUt=#_dlpZ(nhJS!8Dv(E!JTxd;gjP%aX)lo7GmWGkLlv2vkr&oESMyW^QgGOqHZ9FMOzk~W!y#130d?V`Qk z5u*sd6bWtEsepyIkNd@6KGZ_x7vh!03vP8M7LQc20ydv!{UVSZ4to>Gwk%98HM3HC z4efR$WIXR`&v?gEHBD4A3U2s8D%C&Gw!bcet&rvGrSTa?pC9Ue!!hm+_c+~e z2qnN)no1z~JQsd+@dv)P2JszEJ_P(N|BHOJG)}HjyZe`Slqdf(m%JEq-WdIf1rXo( zeG24qB$S_AxjSPgfh)Fq2v;&b^rURW_a7u}vZnZA#7AhiI%2o$*$6?(5L>J^w_`mI zP8>vV2P8!3w}2J)KTwM0FK6nHZz#h42Uo>aWP5Nsniz|BE)sbBE;QWIbvq^AB$Qdy zfGt(T7TtmGaU^ZB^g2J^9on0jR)gP^KQZwd0jrR}DOYY`Y~yQL#U>VUj&a@{_W0ADUBryC}488H5g_L8+Eh<^f zgk!z)%)oaAk~SFzo(t%iiA8vyLE_0R(0On6t^47onT=%0cmq_&9jpTT4By5wD}D?T zkC)p+?ohc63bzVB60qBinS}c2o-cot{EV*5x6jdcg!EA-J{V0qByF;DM#HO-BxP5B z$q)Sk`^%wy37>(4-Y1uOpYHo6M*Yt{Z8e$Ged*eQ2(MzK4>0e*!71r=WU3)UaAW1> zc9e(A&oE_1`wdpVOB9{d%=XoKLWhSm`s0teezb|q_3N?SWDg$?vW<0MI?!i^`D(*F zbersh*@Sm8k^8yIcMiaReC+3Yw7u9eI;o3orsnyjpG{WnRQz3IKhLs~-H3aKo$p1d z#I|dq1owpR%xr?aOv(DHIAtoTo7VD@GT0%GpAPn_EI!Vl-jTk6z@+YaN^CWgn9!5m z;sX?ZqZ)2i{4jM_1$sOmyCbti6LX3EhP`Z`b$eS-&c5OjEoJ*Nl?eEjgZC2{2{oBn zR>1kMf&A(MkZle-2MDJWv<5r;RR70!ucF4^B%~l+>$o|Cd=IHb4l1Cox14rIt>~*9qD-EM?{tLw0Irlz+8Vk;Pql7- z1HKG+ zy~+_Mp`C?5EM>>mFp*V1{b4Aa-o933o@)iK7w7(Yjab%|Jfmh8JWFU*qT6hmL8FR@o` zp`z&kd-rS%<)*JmUXGXV#cvD&JjTJd0BrI?gSZ@Dx-#;aVuNj_(odaUMQSg{{bo4_cNd<0>4m+G_qqM8}EcKpjd@eZe$FNw}e)uDYuYi*?Cw@bE|Dw{9eh5#1S8&u~IQ^jgPYT4$oh9sJ}a5{44Fc!+w&8DpYTKS?yf7bS;Kv&rFHicK-D zB<>=QzbooNNZLd~P4X!Scli6AyTXmjSVHC?fnToN(dJrk#U`4ykp82k8rj|W79-pP zaD_NV)I!_R5z7ewAP2!yNvbIE6@fn>Av(Xe3uA5fVewciGm%{8MAh%)chHfv$78Y*}s3RQ(>|a2hbJ$!U^DD!O ztiOiJd(k|Gglza2O&JLPJl5|!!`t{iLOAcuRi(tQ@oK4EjCU6jjJ-AG-jB%Y12{f* zo|=pJ;x>{t8Hy)mooSw*pk42XmS|5!{+kD)wX7|dlZEYI7=whe z$_&B4_N7Q)1o9t;%>lAF3oGB_&x`sG3?)ft4c{8pL+^!TL#DM3Q!(vz_uq|D*)bp< zr7TknVX7LC@n=S%`d@&qB)e{fcWT@hhg@9^0+>9zl2x&ef}Zk~_5WIg+(y;w8MFB7xEue4&5$=@s{H z+4q5Mv@@3C`yEM}ES>RfcZl(PHQ3$n;r<^f*IQ_nvJu00XE_vo2ZURHuIeI1w(vWQ zyW>3r3C42i@#Te4ug>1OljpF~EjF2+2hmMVHUr-cNZMrWNjljbYTKU<LYES*hGV}#yFQDRD`2bmEI*n&33rHNPq^>z`cG)z z1IFjH?~IrG7On3FoENmoKdcs1O%Y0L4;q7*2Rr**u~+CcqjE?G#$L6;b$&yK$zmil zBwttMj@jZI0{asl!!mpyApG7HS2alP(Ccwj1nnP=IQn0t;eV}R|52f?GX6|mW&G6D zbFlq}Z1$!5iF+m9VFSd!w^G7K!=p&CO+8$7^`K&`v~r5e^n{%34~V^)GVK2qSrj&-`Hm>l&uM1d-ZhtfCc=*pBbl90WgR$L)T%#);h@Aj?RI%QvWVS%8M)>_3 zuA%#$HtS z6Y>fYsQk=JE|m;dLsRNhpW`b=(k4Su{bipFW)jqAEdP2)A0OIlvDOAvc`Vc6u%nnd z0j;qWY+_`*y6Jh2sq8x#qa)M=n_|))2@|j{a73N5B4C2la9BSeqbtEynZkUxqVp9p zs=*K`gF0?>Im(+W83F6e=q5-Thdl=5l`PB$xsZg>zyulYu+M>PuLN6dQ^!QT7D-Vq z9k*gBt8?9QkB4dcNXTQk2s$wGjRP{*VQqjMpN07V7}9Ydy9En?Y^ewurik8YK((|jCR-(Ag^X&@dHb-?Vu_Jndz`qKsIDynFF7| z_GP3Kv(pp56YP`D!r>+-r3$6j-*ZO{~vd60w>p1-3eFKlZuBWFG!X#wlT6Tyj$H> zy{IK*;jL_1YmZtswn(T{S66qJ)ZNvtr6oBT#j%W?FGIjG2?P0vB|^TiSP~8}nP59W z2muTZ5Ek1cgg9V3Ku7|%VSo_${{M6Ceeb?kOSjx&hTlvEtNOhA?z_vmXTRrQ4N(kN zejps+M)~0!268U|({C<`E?v~$!^1Bzm{X5S?V0UW6DeU0)@WBJAB@lc6tbogr_eZ-<3LwKVFMv z`uT6(oqEFr{4`BTjM?|Nf%{D(`za+Umd0HAscSgcHW!;ijEg4)6AKt3Ok|i6^0_oArPahv%j!D!Ss2lak57<$P_)d3ex;7EAdkkvMsI(mO>v z=HpXd8vV+t_HRBsE&OC6@sg9#5kIxe4vbBfn~5yuM^9g2KDuJDjOL6BvA{1~o791_ z`I&x#V?Gl&D0W!vzO!NdTj7H9OwF_eCg%EkQZn1{d3PT19^oR9=^?S ztz4aa^-@{Y#p{=j;=S`YieB_}e#&%uK`Q8U6@SV)NT;t1`+D_Ke*eO-x9k%3$B|qV z2g1J6g}yoYOM++IvBBl~Rw8lfBKx5w?BcSE(f%9=zb^w zF!sW<)WL$=Zr85Bj;{;gKt=8NRRSWuVzU&qK4^vQ;>ujPI$`%u``-Y}ksQj2U3(@*cO4%4;Q`343o!Ef<;feCD@yRi8-hP&<6a}f zlPLtB8a&M$w~fKrWy;X_m*ai?3e=dC?O1x+5*~iy^VVPvOF~TB76RpK;gg}rlMw!2 z!o#Y&wLL`X0rZUc=U`#*Cug`L9Ca|I8zbFwBNX*-ioh-OwE>i9WT7`lpxOuSv&5j` z(04|jgz(oj!8z(*i9q$B5&o;eY!s#054cU(+72%tfY737=J#s>&>je#cR}Fpwkv!j zXdfPTj-m(_m>4yfD+pK$D2?pGSok7GXum%mf;mnIJ??HL66KJLa4*4%EE(6m-0gma z1DUk+fqzT|oh?ozrh`x6t?5H$;&S8uCCm7<%8lWXnnRDI<-A!n4ag;rogg$eU!SkWdm*(tQyCUb-y; zz>I$#MAv82-*BHK68|+=MPUN_IXh1MH(wg8E+UCxS+uM+k@&47n2FCucO=8HVG2sK z4kSr;;Zq48>dAnlk@O8oCC|Gn8GIWfzB>sPD2u@)j*))(ssASmvM1_yqF}o~|1B9Z zWv<~Hlfm9{EP5_}H+(ldF2uVxB?D?D==)}EXm`poHtyj)VIM>qc1-ZWC|KWs{tyN0 zFy0dFU8lfKe$TY-1vl0c_xn1H=s-}nH5uZz9)TigXWA1a017F~Ue5e;DfreowYACnJ$K6djO@?CkDv_?XM+K29Xw>GUmF z7B0~r$w#aV$en&yaz&Co{;_?60g@Szq5pqTEKqd)6FU>IEoBn#jt)j?(R-5Nfnfjd zwHSte-__eJKpXytod|yaS-4msd4~@IXTy?RMTI{P#~I%{ zF4Tw3s7U)i!prsk?7;W0O3y(4m*JphLAS@XKPF9-`$sC)|32~XPJM86hY zP$YN>A1f`5ulMJj2H^_A{~WG?8R*}JEfw*ii}po*9MZt(<1a-YM<0GU-t|k8%aT`} zM1(=kU~t^jNem-gY#5RL{dn}H@DVS3&c7m$D-m;S9Iaj{aWSuUw*S zk@?rOrR`*OG85?usTUI&8O}eloy?Y}_DScP9QHrir$7vT^Bd0Jh?T_|wj*Rziy4n; z`*dc&Nc>c~vv~2J$t4M0 z!Jj3?G=bCjbM)h#(z`V5;r7&OOvpkYb)`5#vJ&!T8ku^rx18z$`GtW}yt^~_13UYM z;16(_yMjOPy}Run?BKWUACTK0-3-%A;-|}Kf%}hBPNp3Wy9Fy!BH7ibRl6q3BVFUg zVpq9;p#O?$X>_7czhbgH-PqgJySjgMch~CG;r}mB7bhE|rLN*-m+8|)*FJ+;Y<``0JPj?*(21J;XlbM|-Wef^mFcna9Bl*<#!J(sYPmRn%$ckd z3zPG2K2xcc_jVp@qh6jY*Y|a9G!M$rg+ts`Xza~*?rF}WUf(xU%Gav};Oe~QIa;Wr zeR-X`K=t*CmYSc@6?Z91->Ce2B#~PPw_3A#`v7V4F$auI9Rn6Br+ zW%GLn`lXi_N1xfA>xJ6xeArFCGE=G+$k*C5u;9t^6v-@h7b{S#W1A{7_L*$!*eI4@ zvQ(^Nb?R8u#ti;Dj}~@if$G)#t&LKngnsI)4Y)K@nViJ($R~r|B0$?gbYixH_}PF8*SIt);P_J4CJK;jw2AbKJWr09yGW}L&YWCX> z#LUA$CMuJo;rht}lxMLtIx>qNE)I5VW0!M!bf$v+k!+RI5zR>PA%e zg$n>FQL$H-&yGF@L({X1XOMFF;IuhId=uV6(C3j?Q~#)suk z;4`iU?x|Eq^Y!Qy?D|G%7ZxkBOp%B9+*D;2L@oihYs=R`>mjJ;3zOp&MNYPK4i9Bn z85RymbeHqkg>XOHV6(hxzA=j#a)RJw2k^66o*tK4k1}us!gux}9 ztaegsjE$9*@gwG8qA)!=38Km=+7nu+?VA<~*O=5}ilY?~k0PQ&6PE@Rz#i4BAzd+? z!R#~epQl8*MMV@>dvxSv0p(@WwB2Z_R;-q1l&gol2{WE1R}Tdn_Su%n6R#|9LBq&l zd?`ZnMjGYG`W5Br4WzS$(NWNkT7I@y#)ZRbAokD5>u^CkW5nv~I=)Pi*?ts9%XCt~ zp~2M7!f+L{D6t9XY_^#Ml2)r_!(Y$Ap@YaWUM=AK=IaIE5#D_{b{Rw=SSI{ETPcsa ze@_>JztG3NQY}AS2{-v%jM)nDK|3zsOsNRE0h%zTON|RB($ED^n$Pbkm3EI7R481T zNC<2SyFMWUv=F{)0oZ7g0}TH>Q0hXxIFTQlER5@S&d0aS4)G*4X{rkOalBb_?hekF*+GmXe*+H$)KiQAlM6OE&CxbM z0kgOv;^b#ldR8vzqQ4bVoT&wPh`Ay3D8+y@@0mn$eQGg`U;tb|z;_5p0k9|q(8UD( zB$3>eNG(czpZ^)he>@bE&tpsy43Ew+;7=NF$M=sT(81{vBtc2u4_s-LmV zzoX5e@V%4Y2iOl%$*bkP4pUmshVS)~f`KY3^P_#5VNSvQCMB#z*XH)C)I^#y}0d~~sSG!eGGo}hPl$;MG%XOmjJ zEPeE$haU27^EZC5@{QCAZWPLQre1m!E!W$9LM6`BIfR^*Y{+*~uUv+IQ~pZ)*E^ER zEKBA1Cfj|D?N-`$tJ=2vgJWp7I(dim=Z~c>UY5Gd_ObN+^2{J1d%cv9^~r|+dSq;s zbFne)-y*+KS1e0^z(3F1SN~_Pnz|&Z2)G0|eF(5mCS>?J zCoo6vK;K~ z{}Zo$E#Z##9TwC)+%MQiddk?rzY+9<_TxPTZMOe8+Png&dA`5XKje3Lw{7%?QfY4G zsd)T3eLU`O(9=)YcL-aRoH+Q&_bc!;08jrgfcGuNVCm&qM9{?q{ncWeT{+D!0q81% zE(=)^VXr4FlbkT5il8b%YXZ?C z^+Ra*P1|rRZD}c=ZRIoY^oG9$Up;U@zjo4*qyBP#`2z$Ap?Kqm9y-|YrpLTnk9g;Q z+I#&Sx;`t=!|cQ8;lkvVTqH0q{k_=~L;|9Jl56XX5EjF7)cBqtu%ff4o?VK`ejum%wbO?(8<_ma2> z3Y`Ve*#y1Y$ASpUKO3M63Bp88cjo}Ko}jLPK%g>n>Ux4M36P4Qo!ZJdzj)zYiVsAMw9kyT#w+XLO=`^Sd8KXE^2-YY9ty46vsyY8**F z{rI6rbb@^P8b1A3JUw>kUNb|2ZzK4B0sOfCj5aFlSvn`61%~?=TYZeetgrSnp*?@3hn{NktHL|FyqD_ZyP+dyhVT^l#BNnHHf_ zWNHlVw*~ZI+Pm$k)QxBACiAr?J|VA7hU5GpA)n$2-_$t9w~qM}2mMdU`y1288h)jqmYZa>T3M@ucD{J4=5OuY#I44j+B|&}aC+ucDKK9Q85$bJ2?T6T=RUr!HMy zCboIAz8u8#J?U?Hr>0gp(^>XuboFM)2nONV{l$d+K4AU@{>0IvZ~P!SKYAc_(em+o z4Vhr8e`Bj-spKP{1!vqa1wOuN#Ziv_-qfno{ae5Q&bi!7#yjcAL-!u@ue{fr@;8!H zo%)n_>r?(~ybD)`EA-aSpugu4!}Vf+we*t?<>s5yuahlGDvaXlB5vlQ^s7FQx^%^N z9`+A?=;-9J>2VCw8xaXEnckT8&i9uc#!_r~0Bf)(bwSeG@|4%(k9jBi84*Js zw7e?p@2tW{pF8)W9#qt&OXxRmF~Dd?Ben-qKgBIlj9Ru z*2De}bY0KGIPTz+3z8F$`VT+)_(2d_vrK%p>`QpIJ~{Dssq;_&%x6C9&pz(|g}zDp z@gY8KOvxldh+x9*&msuS-aAQD>vXE0>zqudUbo^mb?9vM1-AMY z4lGdY{oRKnc4ecq`@yju~cS!+?7lo0#-~Medp1m6t>NDPrD>L<*v}z} z1PVM`?jrOJz32t4Z_0sJ1uA2kxN{Wa#185BXkMiBOblrITlNRW=*- zX!z(FKKc<1QtvX)3^K5*U3~V3UUK5Vp#%EHMS#AM&~FEeO3=LoeTr7C(|GSgWI1T@J>5cfW7>E|%oc5M)Z1`_^{#X2u!rElEnw{VH4Rrq3I22G7_S^#bH~RR~ zeEcD@ zOzMi{)z`i0Gn9OUIsg5yOss0^KPj^3qo*rG2e8_p-`B^?}KXAmZongV$-aP++*Lxqj zJzd5ie4799?!$i;jismkEzxoR=%4Ymcb_8T_Rgq}kHfNa1?OgD49@MYZ=ub*&IIY* z^E{AO|L^1e!}!0y1kV(qn(e;wZH^r6f^W-bQzBNWY;|SlM~l3dNju0T9B-=Ubd{;t z`>%foz5nFQq_<+sVBV#GzKKwp4ZC%t2zwu4S0rZ-ABBK(a>(KM?2LcGvw=YKB4{N+ ze~W{B;GjX7%K%+Z=wq;y7{*W7X2Sji)=2-*b1J@H4(OePo(tSM-<&xDj}Qn|Sw}_4 z2MD<=dF8=I2>Uc)_;ll4skNscO|h$YGN-su$6Ww)+C2XFc}bg&vD zTx~3?1b&>rUQpH5%gxXU{Sl$BN^WpKiGK%(HZBL|69)BT;%Up%`10k1LbKdpR%bO} z8wfi;xheI^(+?axl=4Vz2)~PP_#wvc^$(d%?gIED1pf$K=*o2i^a+Aql_YM%_`lKc z4?g*>d7?5FAt!wgZ9%cL@jd>{+D!(JvV8Ok(CNQ^AO!vzffpvnp8#_Xq4yHn1xEJD zApdtCDyAssC?x`RDpOOXGg+q145vd$-;5cd1Lcm~8d&XVI!F zIr~0cBOw=}Sf;=Fo2iYq)$5-_t3HhE7U*31zn%V0oi=+(J&)&5><{>d@f_mi&BOjq z=`nT9GXLhZe}Nj3+4d>6rJ2e%79s){{Q$tPCz54zka_`oDPg@hGF^I%2wOwgx+v^s z!l1cZJ22ag5C%)C3!5bD(I{+|us4Cf8P7l;-o2Bs%dD{756IgHxiD$uTg)p(A@?G# z4msiv`8ec=YXDmMLx6g0A8fRe5NWiE@3GNF+h`>r1AxpBa)o_uEg-C)>7AbEQUC93)3tC&98Ik{^?kRde&x(>KKaeBd;^;4M#b>^ z7VS)XXMcK8+Ive9hW@JypaM5XL@Ak#1Oj7^Ee^c;L z;2&si8}R7Y^-(I?a#5OQZ@k8q^7}>l+kbG;+O+rK+wj(EV{fN}Z5cV)(IP5@rldL9U9e)a zPaJ)3kG5ym_wbQ(D%t!G2>UVn*m=mGH~`kQ+&BD(ublByJf<(=5H0?x3(wI1pw&TT zjp7Prqpzf3+`Rx?YOx*O8UIOeNCfz~m4y90K6mc{|Ga|%vF4*HA3=cz5rRSI0qa8G zC?4gbFXGX`aewws|2%x%KkrV1gnW1N&(PqvlYyg^uwNl8zB+dh*t|O2z$f?!76#u~ zQQ5~&2#ZZ&(a!;EJ%yY2sP$rUzrV=G?tT;aLjvC(@r2-bK-368)G1$1&{@ez!?TH7 zU|GJ`o!kR?!SA{O5{GzU_~Z}x1ogLJH4a7tGLbPYjgCf^|E)2Bbx zgG-eEsPT&S6VIn5*ApTOUH-OvQhmfOzP`-E>#LF*3}++VKbN2{LS6DF^ve`euOtu# z?q7!}W=wg++20`elPN48ycB}6YD1lM*X4{_;{GF4MyJ3(FKX=6< zKtHx5x$6KdvsPe2~yTYJy$^=obm?4`?qzUnA(;fO!)19fDQ`R)Xgg0r=#! z#Z8URC8%ZN>zW&HZ`*h;pFpC*u27?T?m+m_KjEWGBZGc`pza9h!RA(!4#W7?Od@zy1fz|T)zzC1V)#Edub$#WoxGH&?n<=>;frObpao?(k`*%m%IYBFsb zkYi+Dga!e}AWmOTNQl#vXLb^VQ#Otv2<~4CV4Xlvg;_{ptBJl8p+81o5O+h#=aYmW zB4(eCF}E!3Z$3a*puhYO{+~B{hl)Y`&VxSMegj<|rJm9C8k~L+Pbt`BUyNsv`hziC z2jFG`pI!oKSuDFbfOZjdIlH)uU8JsEp?$FV%9HTyAC};BtmiF1jF}8~n$Uns&~)$l zfdL=7`X*!05oXS|WSj>anc@iof0)AYI#1dvJ7}H7V)H?3(63W&~ttE@EUcA(_3VXYrpjFB7!)BD%quD577r?@% zTS(Aef-c7DiBXu4HxhD1Kz_)j-bT<*K}5U9pTnn<@A-gsKt}R8KD#^+un77mg0g|a zM$oqjx-i1Uenb%TV?*Zn9q(l6%LSc65c)E$*w@PliuQFeK`Vpf$iA`)Qq@$X+GM)x z&8cOUhfnc&blkT`d*Qc!hoILu=MK)z2c^ZA~$`SSs!eEiMIP)67SR$T5LVGx#;MlXUy9iPTts9Dm>6DicikL4N zg=9vAveLSv4G_el=-$Kdh~Z2uhHF>;NnLQd-?#y8OkJT@pdBlngITDkPxF{Z?P<|{ zq9?ERpVjCKA}uSP1GSZy*VBga5gl07Jc14cvQ#;7$w(SX+AWfEYgwKg8sr8;zAgla z<-@(VCzEyW@9|IT}{F!t~W1r5q~cxkz1Umb9u3U0saf)%N@F6 z_`^$G&PI#C@Yb`%m?*Cs)9-zNzUvDa!|IW8i5#qdt%d{OvF3 zvtfrw)taTMssE3|+9h~EAgfY~QZ6Ag#7vf)_Wqq*@J@*m^wOytWN=5IM&E1vnCfCr zT_Dp;U-`7RR|Lak`iOr|8g|)@mp$!wdo}-N|C8Qn*1@|8y|YZT_qWO9)sNp|)Pl`` zvV=2D4rBJ%6CGHiIZlSie_3Lgp>#ZGqGitRtlK$3FeDR{w0cY4OA7io)@K3LL z4>sys-qOdsnWvsasK8k(Q%gBCVihYA$FPdUhaIe8>>>e+@p^xab+SGwZaItYVod^0%`RCr*ZUFt z?K0hz#92bn;$K(Zt_Vnq#}c{T)(q*W*pKg|-j3?8(03NAcL-HKvk7-&99CN4zcLVGhyW~2+e9Q-Z?-Lw*oL=QLzbI9t}+1U!lJR>zgn4*)GBo!6f5y% z;9nwfC_@h61(tS&k#yXcQVC)$SMR?Q!3+x`kfmDbjGd9d$Cwhh z3ao^RZQh$&fBI|uStY6*HH(~jA5JGHp7)RXD_}*|Bg$o94b%8J;K!G(1pGgN2~R)w zxE=&9{boWDoNW|53_`;Ii0~Bs8vZQ}-}KJ*f6n&bNMZvsD~=x40dX2EDH`LhL_byw zr6qq)>OyzF3H<>&K_shaw;UgfcQTeLBHyx1r}uf{%PJFJ#$H*FlQwyxY8SL*<0RlC zmecgU!a!!rdQStCl`Y%E3b3T5Jkpa*;>_BV5D84Ezzu+~$RtISJ*jT&!{%@wSS6AI zh-u5MVcAFT+dPLNR1(Arj@}#LLrC>6SJjF>HXTS-7i@bVhw&CG3epK;1V646s|S)K2Kd4c zvJ#;8VUU;9x%?p8vEUz-y@}Mt24%^-uOc+UyxErZ_!yGXeD2seYwCG_wiumDI5T-C z>*ewAy22Lg;(2e23R^6K=N;zBHxeOF+G_?h?SG^Q^m6mnwLIP;zY?^;@iQ&vv^o3com_xD^WVXi#MEJ#N27qriC zQVx~1#=OT~jH7(<@?)u9QqxrWSz;Xj<9!r9>h!jP_2sz55XNFq-oX&YO=o#0k_a<;PKcG7sMs4RfgqM<@}3N+6J=tSP@>nb?!A~Y z@%btf9}Tyj6_dQTQza0JMr>eNB=3<$$-BtMW#hTftYzeV1Yrou@cBK~EuwoDr(vf( z5ZnM3B=T-2=AF&0%MU_C3}cyEeKo#k!3|G6kRz0IB&PMw8k zXt^=(azLyvLmRs}8JsoC$S@qnJ88_m%$c+P3tN&Fr6k7Hze0w$F>SmB`~+*bcwa+k z6?v%`fVmT_+v2?mv4nirCx1x!Z#FO6fM9-_)mEr$?kRVf=Xaz(bM1c(l^>Ey7D|Ea z@M?2xIW|^8p{v7eK0&N^;(b1m{5|=Me@FW1L1>UZ_mQj43MHUZau&moUp`@F5MY@QJp) z0T5Q{fa*!92f{l0_x!P^6gT;tH9GLzyupA%*4l`@k?L9YRB8>Efelz{BYcGh5thsl zh#VtgH!EK_vOYnqVBvuH9!pU~-(y7yrxD*{Wr!Gv6&@TA*PG=TKx&h_O~4dkti|Ac zA+#b8#!?HegM={FRq)&0d40v^|q4@fgBRFRkmi8m^H z3dp~KTju@%o!Rr>r z>?8G(;E0)vMWL*l4yl(ZmUI>lD%oN5*%T%DLa~TD`n}W0j0SYiAFbo!R7{tuJ+)#07Q*l?gAd%(luZ~~=rZLiDVY*nF zOyqINduCsrIY@AYzqp&Lx_+!MSu0(>()@!f?(5d^j(TOvj6cZU!Mpvyp2+#JC$ztP z5~H=U_)KWjv}8E{+3r?IC(EUzp)d?$Fx;Dueb|tW>})T3Elh$yjPB$1RqMb-AWyww z{uxW;2e;*M+nvNkpX}CuCWHJX(Zi%fXWhCmA5HWO*ypj$j2+1~t@2I=r49H7@(}<% zE^W#N6aAz)_0H;BY|FYCtaPn1d2>%c&kOjCX%ehxcXn(}5}wu#oSa)iIhxLRwkNiI zHr0!>gYC~sd%_;!4r^-IIuHSp+`fDpdM^wklbvoLiICDc5KUU-L^G{Lor=I z3O~th!}GssxYkz%4;Up$s0rD#i`yS$o&t?$Les3_`jTvp$Bg+fs%xsqzk>WH{PIYR z+yq21nxaOS#dxW@zBW;*)>mS6++9?eraWU7X}}_tWp=ud$2%%;N~G%=b9W)6Qr@$QT*Qtup!-)u z*N;>-M$ROuR&y&6fy`9(C^Wa3e@{(o)+F1_zb~#dWxQ5gI+JxX&SkQ~E)7GQw ztbw#j_!@*DdlIj^_SzwvClQAXg2{MEI17+g4y7Xl%}dx{Q>f>WaCi5@H?l1WKQTng zk)K46YMN~*VmasXGlRqRfa(wDEg5WLFLGeOUV2@MzXlXP zw`R0l1O6GodDGf_etf!-FYeu&S<^&;1|iiB*K*)%+c%XH6ks6L$#RC-CiB$>*hV#6 zgeb*aQ_PEM5hch`9=x_uD}nnU_orz!$DlYS3KN{eXo*xaKUJPaPA^IE1q!ZdNTamC zN(D{gB2*%zQ!0%HEM~X{_QcLgIhVJ|T4%CK12o$d7C6+N<#!tjN(H%vdMz55gN=6E z`(ml5`peT8Po2ae15L?&szf46XCRbYKA6dX!y{LusByxs!;O*&*-u8robG(4JKW-4 zZn+U{Y_37d>d<6b(YH33pUIBNLDXH!ak<=&WV+?CC@?KfLZ5RIIOj~(Fl)(O2}CHA zAuqx*AfifiT<&LjfUd-{Yr#BsP;g*y25u@s ztGNw14ynvmrpwUIge-=rV8)Z}$C8?yXhwn+RIE>wYq{IP=JUqFTuz1GRyt^=+ZZ`O z{nw6ED}~Wwp=PMbaIH7Ly)?51(?D{(5gvj96nEGh5&%&X$5d>})7CU2D)Fyd=ScjQ zuMFr1g|H?WbwLCpkhS83!o_Ggow_ubl3DRkmd_VPAU}g{Hy}diDRtNTd$E1BiAH_2 zvS&K5ZM2|6-Ad*l?*R?QAD(Gz5L3tsKBFPv?usJXz`t6Sw53($WIWbK8e@a1fb%co;;@Vee)BXVRn-B$AgZBMA`x z3Ns#;ijfD=W_#o$ILib2>L6TyreCBEpwiR~43tO$h?6#h<4D^M3`tWsEtLxB6jGGx znKIfFZAQXj9Ddgm$@V&L&92At`CJADHzW3!azij>HSsWGvl*DFR_c{vWs-DZmKl0u zB(}|Vbcd%!_n@OfJdx|IV<{Yp9y#!VXhoXdvb$U^TOP&hVDT^>iVPJ!q{pc)Y@pT2 z>g%!}&g!=kf#$1R2U`$IXjpw}+WlnyVs|sT6F(can(qgiwD$pvWQMXsEw`3N9(L-g z^#t|w{8+gP(vA~0iqxKAGWtZJripCF>ZQra#Qr^{!fqABkbky@oa`gDHb@XRp=SFa zQ`VUc6h?j=D4qo*3#KiBqON-)=QhF0uEfq;+<3%Z)R@sb1Nw#)*bMPB9IcgW1{|cO zg(g2UIyf{7n^Oc0T|$?gt^i?Gw68*FBjF4F1oNn`6+;N=AeWP3h><)K`Qf~9T8N-C z;ZWpD^HRw&JrT3>f_)qDF+}NBz%!y`*X1pJ6odmlYQ@m4bDS8;=eb=J6sG%;HM|Pr zj))R#ghEy!R_~(WC>&i>WpJex2Mg?ux_i})(UC_XH!v)T6Xo*IrrBL>*^n6ALo-am z8d^+JWU-OJqY_;XE6xmvK-DIDJrssw3D3A=*?d-%6EO%j`NLY-N88&#^Lg0GrjU)g z1mU<8jx5s~&B=Y7T46}4EOpAwf_2I^>57Lt0)J3oB^;Zqz-VApu3CK`@@aEtolOF7 zY0^dGrp~o0XR0n;pUO{E8jkuHIhReUPNtWqk>Z*tK`(^3j8#je{3KFkLs;VChN~){ z?h`L%R!+T@ZfJ>ST@s4W$RaEnaATSXF~OX_u^s|MjWfzP(S!~JZ`7K4wC02Bn#kpP zz&#Cl*JaK$nOHMf*etbl2DmtwD0I@6R#)_f)kALvTk{mi$quW$2e26^Z@vVT)W6G*}<}x{`w&uC0Zp zfmG=9YVLx_7bwx-(k2Ugur$rWP5fKUEocXAvNp!0)SlU1S45?2AI1bnampozw_Up_ zPm>vtd?EP)9Ar2>1Y1j-c~2PkxCB)hc82mTg0PpmN6|fTZ1)E8Ne%X`J77G*Ugp7U_z^{dkX9mo#G zB_pvlk-rXKoks@oay`GhB))n>r|mh3_?0qiNmpTkLvnvx=%ETqfu!T$JX1KivN%yn z?;ubA+8|g!sg={R&FODrDsxS05Svvo+%Vd38M*X1*I6y*rmv*L0)W6nKjy_9R7k|L&Iy@@sj?yO*zwz@55-wq6BgPqee`)$i)WTgH}1ytwT^^%6&1WtRsTN zGP>bwcMO^Eh|$D;M~49(l+1%k{=0XqIz>Ac#99Uu#a3-W)~EhLjYol-+XGuqdlpJl zaDF`s#*`pDZ-KH2@l4-!Fja)B1(AZx0BKY-$_xm}GrzuPLjn&=(_$zC?W4611(6u! zWVf(98fBc;ArNuX#-)FdI@Qo?)vNU*KXdHyE%6) zZBLBDpn!w5sX}zpk2u^s^tk-7OHuZsN)*DszSq$#T!?p~JBnj(tP|wO8 z-JvRy{>kb;J^D|t{?pg` zi`kBJW{uh0IqgZEG+WmyU@_}{5q}G`p%boOc$nZd3UGE?~j67W*xYB`n8#K_!#AzG%EGblZx>0G=5_=G? z0qZ{`*V=@7T5F9FkeP4~A_Trk30=4$8D1i?ABXG77o)VYKWc~qt3vzXJeCC^OE6-g z)*fUI+ytoZ!|yt2FqZ=Uda>{uGq-Ad4Yg3gs35_&x_MOYGrcx;Rtp>t?#lJR`$w8( zMaUNHwOeE)6|Dlkz!;Jt%?0-^EtAOvKMh5^ugQ4Uus z;`-=C?6bKkW!`${7zCXGn*fc!{{ zCWE@&kEVDB2x|aEws(JD$>dm+u$@xGj$;(-#_tZ-dX#?f8Vjr}V1|xbE86o^e$NC}JG##n)jG+qCZr_OXKEwU!2}h& zjvEzlxzLnsX@7(fy0-3qHFc{Eb-wm(5CP#bvHod0Am_4F$w)AuP;CtTBAST1ysghe zC7s-k3=tNV)@bnUj{J^pMAm?YwMAze;*=jNOqD0&*3ot&i?|^AH6()^XF>N&!{xFz zdxv-xhOulKl41z3nW}JEL{kXEv-)ruzB4Yz0MOsCVcdiS^=wR0%*uhi8qJvW9gRj9 z&k2$p#R&7IzA2D%ryuc3+od+&PaxpEty4III8cfbbcL(C262cy9FqY-PiRmrkbfFC zPZJt~G>Mx)dGk9EIA}OVs59gs4W=tk@}{X)r8d@#;P#OSK>LGNF}>k>wx`wY%6uU^ zxOt=-tk9uMpe9XHvyGb%1X%`e0snw$SW8;;jVH!R>zE?yy~kG89^dFy*eqhP5qjVd z0KMm`90TtJ_AZ69(-YvhF%)ROYcXTjMxYDD9bRx+Qw%PvqRAYzP|RjigYCp8_6JFo zmcC6Bq0ieWh~X`~^{hyZOPFB4EGo^r$x_Kah)e}nQHdAI3XGqvZ(SXqA#Fc|cW6kB zc7YB}GFJvzUN4XBLu@o+;pO-_wy|jNx^?1QH@sup(2n5{Ia-|jY^HhIaHOc{ZnjA1 zw>^;>(r|oKHrGPJY9|2%G-A56(5NDum|SjzZtAEMOd3V#+WeqUa9Wf>3h3FfdUbH9 zaa?Hcjo7Km)4RZEAm>?B+E=TWrVy4b|0*fdc!=TpK>j-QjJ*IQma)ULxDLJsQ3nMX zYPgjVp6Xf;vpnQBa40tvL`cV8jfyfcEfIvRElUeeuA+s5g=-M9i8A5TS8lDDusfx9 zmLUBC?h|#4k3@VqL>_nwCL#TBjv7rhCrdt?6#y~3mFXT7`We3 zsTRgdiKrSJ3iM)62rxUccX8hY;-{gKH>UGINpju!c>bkX=Rhtw1uf1$JS=%$y~QmA zOEz*_uf2K*-YPM)Av$gn85Bb7v3m8m@IP5Px)XXm%KT2A!lo-@rAiu|flzXvGb)Ga6lNq5#4%Mi#i4ltOD@II?lf zf|Oy6 zYS^JJJQTT2kWNd)ZgUGOn-v2|=)N)c_lmp*z@0(ER0nl z{@O|JG6EE=jE%{a6?;Igehq-;)?&EKvW4>!>DPj?KwN0xKGTAw`YFWaLM5Jt%OB^* zk>PM>CLEhtylgijIgF#9mOdTC;Os0yhad$ubIBp_M;-yXv1t~-PRs4YnMs5;F_ciW zJW$n4OcRgUlR_cS4d)H;Ch|CXW7FAIJBhYwfZPLvTtadbgIRK^+nIDEQU*R-b-fxc z7Pm~<&v$g3W%_Bu*3>FCd}XeXYy_Or^$U9}{n?1zC?nYc)&_wX!Btyl8Rn-pm;?(j zq+|CcN(kkegz;q;_67EVsH=8;fXp;n#ghR1U+PbRb z8hdd2B_bwA?8naD&EuMM5Em0%*O_N{jwMOgZ@>D6ExD~b67WUBD*<~$d9s0s{jRC$ zdY5b=J)K>}NdzU;)x`DM?PB6;;2u8%|MrIpQ9_S<5h08kxl(N4OyCx;N(8v<0DBzp zX_mQ!S{iv;T&rqkuyU`eP9q=vv<%KR92wLVURzM!KuI+0(aq`-Tr~=WI68z^Legq8 zrh&=`#dgRYh!%_IWQt{tYLN{J@&Lkrg;GR^rGk(_m`u-9xmFBp)@!B^Y7D_pO?%Dw z)pWOTep#YGE*R{I@d$y2dla4=H%*JEv~cc54zJZ@f^Dp=Tj$<2lHfU^6^SVcaONeh z0X2H)&@BnCnCL`UH_e{E9{$%NH7Z#Uzu1kpXOz!He@((H!pv6|}Wc=v=%)S{8ZT(!1}v>p%R$DV0C`oW$39c1DA;5WCgThedcuj} zNWo>E0#rrNU968pcuUF=`G|8&sHMi^%R}#-%@Zd%%fd?rg?&(pb~H-XyXOqLDafN$#1aLmVF+W1{3>@ zZe^|-A*c#QU65jfD|9u7C}}@Vfzr6I9D(xqm|t+1$o!Zi1m~%fKq@jblA^#7BsV>o zx5Gi4h%gy&i4%mqZWOw+7nI4`dJ#f|?Gs8(Hx=YPj40ZJ4T+6<>?yG!1PJ#i5CzE; zi=wPs)04(89p@F~7+*Nfw>3CxKBifd>QBgS9uu&k7{_k~H{l#x!#>)Cb8Kx)Z9$9% z5=;ewU~0xy7D0#m2=3kMMWgH5gcw7Rvyu)J8$A|#s-#!d!E!DKf{)w-?Z~A2Azmur zeR^uNHDN){vc-b&W603fGZ2W1IY*7;J$qmk0;%24yNLr%sBo$qYa;DK)Qq9@!h-E3 zJ|>h2!5$e@5!hU#fqTx?nCQu{GLJeR#6wBTthi3;ROaq5pGacA<3zGaEOh5-waQPF zCb9drZ)+!X4ZfGJ%;?F0f*iePjKB&S?elWI$K+(>-Q@gjrD~o8n{vrM>(qtegia*?amU?fod={*iyBn~ADB;m-#hHPJ3 zhjm1W5=lQQQbQ)LkB)SdsqHr-X)tGude%I)`NoAbUx#mJK_Kdbp{qB1lg2^Up4QU@H&$z^n5G$>RihKVHhTLB7Z#e^NfbgcP_^OD-c zroRR22<=12z848Mk?>ihr-_|mJBVl?0PLlao4EFx9JpF&yw-#-W4NJ}>4y?QWkP-+ zzQY+t?0a(ve3EKG6g-EJwz|qeJe`_?+SO$25Q9)OX%6n(;~X&zzEY)rte)!meF0&q zytI1V4cqm?N^Gawl5rb>RzxlcEN5KE)yM-kel8lEruSS2k0+6YT(K8>9s;CsuPR*m zh{R;wwGQ#al4)Evh?RORjs6^VA;;DrODCgAFT*8~7N$oqJrsdynA&BS7a2+-(`&;@ z@O9j_88@;;a#|`Et<8>p*r)F4uxJJWNdV_%IF?V<&mgQ&A^9U;!Wn- z%ygnK3iFFBM)U*DUD#fR$B*o*mzd5qp!|(Gy!vpP;HD}q@Ug91kap>Y8(Q~Jx6vk; zB0I5P&+{w6;1lJs5$wo1^A+ap4;$nur)w#_4r}qQ*;|)VJsisqhjM5;)Zn&SI{m z4%cQjE057sXw=MVlmlX$YR)4vZ=0|_iQ=&&J;Ez-|CLD)jR7tyYfwK3!cE$?FgXCm zuz1*%z!Msn^rA+y1>qagJ6jG1bjIdc!wK%Jf?7x@cf|5#;^Sj_kD>WS*6%p6*qbdh zCL3AaymVZc*!xy0wO&m#Xll^vamH;@Neq^&is$u2cmfPvuhb`CxX=^Un8u#t@{s#i zHu6_bLQki;;R5eDQ`u#BogBA&C;?JY%kvQ=-qZ~uyxV( z6`6(;`(+}rL>Z!Hg6+q_*O=NUQ(+8czlJX2J?8Twb0QT+Pjn~+C-27VhBgoG$np3E z&I4u?CxEx35Glb3zC1ofqaT`vp0FCSiB)hV#}EPF3#=NMORTl6a~DjP#?^7I6Kr`OLn=V*H)Ia^Yho*J zKN-(Ae`k%+jz+9x|~J(o`RwizCVnB`C{AXP!!2|e%R-x{ysTx)j@OfYUo2#}S^ zx|wx|zUqoGa)k+_gwmvLp>Q?k=nyA>w2vdCK|ECURq5lEH5R#G*wOwlt}KD=0gSar zC|wvIJaY$>kQ5X|hE+9i7Og69#E@&7&mBs?tH= zuc%}8j&dLFX|`}+Wt^+I@}h`b%@$?nQwtJUj>G*zp;q$BmTNA$jUjJN^TP-pz6-7aVB>z zNP<#P8jkm3|8Sm}2r*-m;WyA_<`o$jwYfwSy&x$bcncH@QKgOlGRl9fkO|VtU{#z* z*e6X591=(_MlUl`azQ5ZaE4~ktNJ3b-PaFprs83>@PK^Pn7S?jBRj9PspLqj`Y8Sf zV=80nB_V?d3XI(oNRjz|lfBEf-4T-$*swJMYh7rKEGOqoS4>KsYCyG@xFTLcu$R|D@8 zJ`4oG@t#C-RmqFY@4A_8^ad$2mi4NXD}$aL+XD;AbiGY(=+0Rbkm-VzsKi(%K?&5q zJ33+Ire4OCvqnb95h!#xb`sv&)#64b$rvWnyoPfOu3rad)EgYN7c#n`O#{Scp7vcd zqB4=A_*4x0V#YmW-(%)M<->DWRo!XOY!<&&E-D|S(ZCB9+U?-|3ZkdXrI2a~F~`t0 z0#iyH+hPo$b&0y>i@VuLT6Bse?14b7BvtcRo5|aiff3r0U{KW2(nw>Rq7rM9MK_Ma zS>Sc$rWJGU;kWf!O47Fl>+gs+l1L17gBfCN!d-gRGG@sdYB4gULjlqv6X&YQD;`nq zI`t#&%UP{*HMN^Z!diS7k|r!MAuOzeXKJ3_pCF*RecUKSei%eLWG2J*!q(U)<`RjS z&DRQJ44f5n_jXApvm+8%(MxNGC4#Zwa*9zx1z?U*@rx3%-n%3w0a2ST;tznI(4x-V zvBH#{Ghn|HVWq`c3Oq9~&K>>8E;U^+z>;g$OAxB|_fO@S zt$Yf@@2tkPMDEilA(3o;JS1=wA>*`GnJJITUCTs$7RCj!@wDIot!n^f4Cy!436g$c zJRPry3o66Kp`qV%ZJhNJ3!dXum&HfDyU~EjUQ^=8B#fWo{Y-Fen}vg{g(rXsE75C< z8P6{`ymv&Z$8|c{Oi?D|SpF4b+pwV^Pz!6oyD^meP3_k}JCkw~lAB@2;FjF> z{MFYC^9L+`QX?rug%*yY;_T4%au*?iJ8T8lAlagE5LzpxcSza73CGT^+6J1EgBa=; zbys#e13B?tY61|R)-3K10v~WWxeEP?)nKDqjlfZ{7h@BlUjD9uJ+><~h&^|ir%;&% z86JWfYqN>9`5W?MP{Lhv$ihDmbH%hTX3UKrt_^?_%H@5qKyH_WhW$dV82m`hrawaN zKo-6g-ww4+wlD#9_GM{a632B5}( zCM14ze?XgI0IiLm#eT$@FRujIx*;?!s8gU>>Xr*VO{I=yjs8z2f1q#_MiIc`;aqX0F+82871425hta1StcD&P3Hc73pRt}{ zLYi+n+Sr>fh>!7}Sx7M4gO_Pa>E3jKjrv&UOZT?+7=7~5+1q_M-oWL6xXD;!Tq1gL zfNZ(#X|mG5WtSOb&)tOEgOVyFRLOe^BemS#KytY3O56)m+DTbAwr=yf`3&vDmi=qz z)3c1ENl%GnoojOyKCV+kD~kF}qN(Q~%+**g4}`^}%d$ov-nu|VPmMuithSVqGQkos z+S7hF%`9ag4!CT9qy<3=HnD#O&JHbnEr&MhZ0XLS_B+#t885MQ$tZQPtMCg*n4#Jb zYI8_X`V217w7oJJj|Es`m>=%^`aJtwPb##7%P$0=`{1+NJ|T&oKVB~d}-h1*w5 z4(Re&z9=OIE?+6>f?f#rTjav2Tu>@6ob1j85y;D_LGRN$2cgJ!#TDVWV?u-RCxU-n z>xBEN&Tz$*0TH-j16BEbxQQV+9TJPSiS4G!u$7m|1Q$-;v?)r^=hikvk_+bhv( zwS<>c6VftPX{3h9l1%_wE6kQu*2W_2i5L?j%p=Y#G6Mxhe8E^6cr;%~>98pEH%li; zIm}HII~|afdL(-yPP?1)B#-2_4aC=sK#5>dY#5vvv?2y#$5a8w1qHS!>uSMhI|kwj zo;Wg7oM}*9%ZW@S99k@I2TCd1$9K>mlS+?k@~Tloh=8zXiv8Q(f3Hnroo~7U1T@Pve2AF{ZAL0O+&*V`G01=5 zic{)tdz7?7u@eyW@`(joBnvB|1pb>cvQ`CNuh0_DFEpb}#-tCH;B{Pvr2L}%@&qgp zhRi!SbDashK8fptvOf~`5jqr%o`}@3=y4LVvqo@R{-zfitO-B_wa_pZN{D26$n3() zZ}i(>^~%$banwJE%ba33hUj~Ou)~}+mPW?54;N7A#t67A2wUf)+n!u^w!86;C~sxe z>OEP^S}UKB&S(fMu&=Ziku;oft1-3Z01>l5rdI^bAh-eANe4f0yKDY&I|j!z4_ay> z5s;=}n7L+6T`N(FP5=UD=wFlacj2Y{oY~OU$0@GiYj&1-==V%MBm#2iJ_Xvq85&)O z1t&QOZ@hrW%&OUC3dWj1MMG&FezTcW%z>iOJ7kzjN7QWZ*kl<38*YwqxOf@Wbli0D zMbIqfNS6qC#>s24zTuj>YMN~h<~o~|j6*9N?f8+|8!=UC6-F;H=4NxSkw8Gh&4SiT z29p4Ub&wXVR|JtccFo%jI>uyM1{@)QX^BbX=Mwn_>j0ChRXJW@|xc=S^}?AC+D9P1BeVRy%huyahhn zO$akA3Zl2)Z0DnpiKRyDB-T~qz+vHMXdvRHVsYT0ZOG&$YL(mzG&^(hCvZ20Ox9d0(fSm>e9_X-GUa+REdlWh%2vv66VcRDXutww zBP}2$2YHWyf{bsG`s5%RwJl;I$dA@|&w^<)vB(Qc(`<4yBLt={oTU^Gi|6%?mLw_@ zyC>o5fEwsS%$v z!6dW)93B&T@`1ATure-YqnfH*a|UL>xG5365`NT}p=G|Qw!j?d(#j1{s8$R6!UM@~ zUcR!o0Rn5Cqf&OJ<%)FXHT@dZK!Z|8CeuNOK{7k$C~vbL5h~rgtD;x^jNUIRMw`Zj z8zR*LaeCJV1(1Oh7%GBWTcFx}5?yJ6An<5Xe>Iqb@`hJyLVKT<(hlMmZdm&N@p6vJ1o#m=OQ6^-jbFR#U1q|CYGZVnU!vEi&JU^p?*CqelPI&XEKhofyKwi zTW^l3ZWd1oE=fE{cUeL^(ULG{`bnApkJv@5LWS5@@n;QdrWVk;8Emi?0+5S#C|KVx zp;_TYIir~&1Qb$%7|wYeiH5Z(A|0QbC7$c`INz3~Y(~i@+LcA+WL#xK-U?7q$g?!6 zO`^J4WqKYFZPYiJvejvf*8fWLt`)LzryAthw=<^ zrE3LgQCqcEG5wHK0_2t%uex^(YtQuZ>IeOo^AXy{mUW#Vm(AP~m-S|W?1 zXSA{p4q$o`12$o$)7D+P45eMmfnovYPOm*h&p1XrFA>(%<1^I9-at_E3J9Oc)DxJo zjUa@J0HT%CWZRNZx}u65d?cE5ZA9D|pRA178|cl1D%;mKg-~%4G)wApcABkor33an z7(!c04=m#rEFzeK5+WNvkM9I;#S5#?Zr=oY*u1fwJZeI}XGt+9^XtuxLTf^I#$gxF z2FDkMMU{ooD!kI)3m2b}+8BU>9SMvelqwncz#GZOHNF8`)Q?i71b)MsMT=RuL^3ps zyLRYv8&&msiC*&p1u?hwP3V%nYyuXB3p~&SHE$`H8ESv-q9=lkjVaAI4)whAFBQKW z)M;_wXFe`irX~}UZ0(PCdVJN{Q-mNK|QMIbzih6$y+G%Osy13*=Z&RsCH9>9+ zQ{^8M$rrj>u>`FvzXt_XOcDQtF6ykQ!x$NuVw(a|J1T?|D5V#-qy$HJK1ZitEu7XQjn0@?4YCxE z5c7t`(0yLH3CSsQYLxuTQjR-yRnyP^QG9+Y`0uo@c+fnCJFzp1a zLwoUOL4u*ZXC<5#iG1R5F$}e7FBl(}l$&7YFIjt>BwX5)#U6<=m*doO=e{w}A&`+t zf`hBq&BKWEx8@cm)0_CXnH5<|it#V`5v9#Wc4*SSVOU`%C1_7Z1DQ{NB5Xo)T~uf* z`6cq#X>F9|`NTq}IxXFT7G5L3V`6x(@qikl7Re`}VPOCT*K$E7A*qS2HxNKh*h!;# z+K8;JH_@TwnLfRE6F2||cfppirC+V{JM!gn8D4I=8mkgp$ZlZt2vXpLaS|-gqhUEF zi-cJx%i$gQ17=@vN1OkK6ju|s%}h2#CvikXi+)Y+;Ep0kP9$&!kC13mwywfsg~CxI zyeTd^L!FsxC@gXHPXL*NRTRP5n2QZI8yb|P6JRc_D$>cG>pbV1J1CnSEfo%@1cULgrnDZb4CS*hM#0D~PGfo~>0*XG3Nn;C z9yhqZV0(vAz6;LtQ5BgH+F7pHB2hH9nUI1YY6(`orb@RI(ll%!*99NBp?dm-9fdA#!Y0$ma_*s;=q)uh;jiFauzG{!G)gW z;_MbwLmFZw>)FIMxxx?PlL>!j15at|VsADiLbmzR#CF34hgFoJRTg8X$Sf6VBrBDe zLR*IRtPRq(k-kK*)?!CAey0ceJSuQg014y7L>!4DO&InFLjwaH>XqI4k0K%ndOrp^ zs=4&&`bW4qU6<{cWv}7M@He^!C_7Fk1L)cyJ_NJkf`Af6v#XeZ4*D)p)mg=Uxj3nlJSq&!M7$3IdxX&xrjgzO`%J}LWaWSxZXdo0wa|d68c*5QR>%VA zh>;1WU4y@LLVWiUvr9G*?)M2r@bKDMD|G7Y6U{W&XXzMU5l%q~?R?B$L8hRE*(+Yi zjrW!Ztn-Svl&|wrz;<>U14<&9PNX1_)pB^o#z^V7Y%J(Fui$7&{KPj5>j(u{8p`^M zHqnO_*mA=|0Xrg^MX4_pytv@r+`?#9xOF3?#ZB}z?Ym=6MP$mpa5O=yMCwGGAN=?w z4usn##Yz)XBMcLD*3i1)TN;AHN`vajK_kl!~`gmtoP9p z6FE_kDb|Qgp?6~=LdBX%W6=#snLT#7YiM zUo~pr(AAVL!Yx352pBde;vTB`@U$=;IV7_M@io4VKr~ezNWSM?O%}OS^5bAW2%&*S z2TMfBc#3WGEYyOkmrZ&M2B9ObirL3&9#`F?RV*7 zj6c~6XPcnmCSqZT>rJlwJQpt#9KZ~jjsZB(oMEkBJxMu+c{JTOj+6_8H9Wwg=n4jB zHA0unB6i3b5{Rxy(~Y$8;TEb(MjXYelZ0QkTjMBm${vg(<$n)vHn;HM`lBg@$0Qt~ zwdgdlO)9~9gV@F|2zkilgFn#;c4#2#a-u8bg*lvzrwQgs@Xq~i95f1!w6bs_O@E|v zlO&REEqur3YqzDcxt9G!r6bM8eW- z1pe!OwaxZ6c?Tlb5Rms4u@j)l)l#FzOmZfFnHpnSnsY#QG&s>ZdsHxwmii7ffgpW{ zu~hJyj9v(ar@2X_gGW)}uixel}xVN`U5V2N+L?AF& zZ5s3luS)WuAQKT~-oV_p<5~zAmhEMG%`Hx?hX&ia8!y*FP+F_nyNFpfEoGcfY2@ zZ7~+tw~QOj*k4mxtT>s&-5k5$QAT0y9j;FUB}Q?r8mov*Q5rr@{tu#!>yjLXhSI~F zCRcl*eb&I{T1^Um>RtxmfP;&dtOX5(oE%kvGqI|6Fvu5Ck#uYfu4(P0wW@9yhJ--E zb5ugQDBRxVk<1G!(9jn>2{8-U8r+bcLZU1T7Pbx82Ejw>BEGr9j=kh$VUBx278G2Q z$xc@GAld>hj(sI5)F_2|VIbfcz-?j9#T}QGv*x;%&`-msxoQ@n3rga$668oWqAH$= zspxQB+_i;;0rBz0u)~Y1EG^x=kUVC48IwEP&zspb-20C2o$arwDkg87TkC-o#vDQj zMVM)50ujZ;~S?_DAa7$G&OD z9?!Rc*u%Z%a!Hi@g8IV#*TFPy53$TMyr2hfeYH}rK+TOgs3KG~z9rfI_R*U&C{Y2vbg;_`3V}s*tm8_=J&A64rgFu2?n4|-2pC#!{0j~=?>n#&njc^S^ zbC>nRh=*RD1oby|F#*Vn`&k^!wEwB|rgSS! zg|Z&NyE17%0+WK1V=CF0yF!WmV2dEdU=13N?PMvy3J+G)S7Tl3vQbvF;4bN=_7`Sw z{b`gJ({z)mbTMCx$Zupo3=o3%ghk1LgY@Q#48V#S>evv&Hr*HuVgsAda%$)eAL*;o zlAWWVVIuYzdt|Rq2&b0_9yQfk%u-$%7s(vV|N4_@>)Zjt*t)nMF>%|RY9UoX^)f$KQk!Xi?zOL*^agr zRGbs0GPCx=?b~kLF}U>x$pNh1BPpDXiVBd(5@LnW)3lBCw1dD5Zf$61XqgfY5~imlLz_f+Ck^exi@9D)RQBtL#RnZR$6%Dz8z05G_-KT}#M~xr@{qaiY;s%^61}p4<8;e?d+J z!z``-8&h(F`-|cdFl{5oSjT(+f`U)yFMIsHA#{o8vCx}^TAh&h^CzP;NEVr5f#dFTBUi!+f zC8qTvk4t&&G@}-smX6I68Qy2hQ6a#Omj}dvi(KYF243aTROGoGasNvPw}RYdEfxFv z*2WOnPB7~Vd}{5B??D#%(UfXtyQxCNrGM0i?#}UlxCzzIoK#3>QYaQBm>rnTjIgX> zpUd<_-k!g+s?YetatL^}_oA-J53^9gWTk*8BZ<1L)%SsCytXuoOl|GcQ#M!cX!71- zwS&Z3;bqBqJTleu=#g!scZcz-j%PGNA6!#izua4J>Ow2Wf*j9MJcx0?-}_tGgJI!p z)JH3OcnMQ1?DH@Xn28z;pneD;JdgdFg2?XLltQjY8=lFVBLUgvsi_j2gpj2SucDL# z<60iBLlzf9RwfMFnqbVeL$yl>8V05om^#}~n`Y9%v=`*NX7D1~NADloI|NcAGl6gr zTk-(P1=6KTF;d9#g4xE=#d56FpKN^qtaT71MtyE*X#2Ju+wxnkzFE&hCTr^sa594~ z0qG=_G{vytWVmrI;8=Zm$1dE8&P6M_&@CS&x(mD9EIA^hd9jIyv+7|&P7JJ4{DV!! zA}xuD(~~y0#bIz2S3Z%Lw}Ws9n@bX!K0C*{_R?BQ<5b5$*Onfp_HHCBuM>DOmoDd2 zIi*YR`f8aZi6@8Wfh)`9b6K!mtr$7VW?QFO2Ew<>0~kdD+h>dP_q{OG&$goX&7vr| zFpZ9I9?b@cF(U$p-Iacc>_iRX8UlcdbqTr>NvBlJtZ9lQSIYJR7L`u8L7+V1mU42b zjCPLti93vOO;AY1APUmAV1D_+FN5VvmSIg))>{+&qY(2tq=me zW)`9btX9`ruTPW#9^a+g1=$L5^;7hEDeuyty@2N_G_Z6C+PV zN;-Z}96IYbTzJcRM45&V$GdURj*7zo2sH|qucduT4xFjkgRWW-ug+vSC^<{Y+nF?X zh-P$@I7{B<3O8wC3yEqCy(UPIvyvNNy|e)jZZ1z}Sc|Kyl**lO?0v@^+SZQ999J+C z*!x2`Ml|r^c-7@DtXTNXCtAb+xXyeDLOAZA0OkpVVHRxMmMbDRQv0k`6AiwzxY_^D z+pbTq-8Besrk}N?|q*)eaPZy4-$x&jY&MljIO^9x?z9NmwRIR$$a#a=8 zFj@)(0jb?=LJwohNd)WQy&*e+BaPErsVxZK>?}zV!o(o9&PCLk6JcT0wAo%5^@g&= zWa0IW)AQkGWb>S#>kTUDgUc6%UYM=92_)w=q}A=Os}Q^^x|?Kk4h3{Cvoz_rRJAUC zN!5{3za?Y#XqYgsX54TX#=!~F{F9PUK1oIL)U*|*RIfmWEh9IlmR?G8*v=@vZDT53 zQlViQirs(@6~0-#C#WuFH)oCHq|ISB$vY+c*-GlaRZKzRZS3;p!Tw!|d~LR@3K@)5 zI!v{WDoZhh^wKXF!_-V4(__8p?*D@_u4Ggb~ zZ10A?dg7Gz#z=KZsJBgmRV=N>_L;rXOwGcOkh3Z^3RA4Dop^N52`8;Fn!R8wnQp$F zv5GQdRpm({sQm!X*7FfMP#^)V6ZW4oN=&g9VcHHqT{LwId zvjWf*D8kF6OJ#x}NqM84Qg54@h0;R0!uPRz4(r4Rv;>jcCRivx`|bSpW@qAdCdRhq zuaYvJ@CVxlO2clX<(T3TyuDlL(j+GT>G98vMsN9Y`y7LeA6Yp!DqUbq{nm~pYsjS`v+Q~_m+6rM9VHtZ_6OMWKLEm=X7CCfzB1d}YZo|r@cr8nhG zr`eT+Je|oqTYKry5UGIV1>@@8Dan-01FJkERvY?nYl$%=h16qC9!2TCt8D1DP(a-8 z5W~mPpIVij>KEvh^F6WA(mp&Kw`YPXZI0Gph&^$Q8GZZWQmwJGafZHbW=m9X&v?HV z6Z~4OV7C{}x6~`KbkebOvAKw;P#Pv6Uy&$2SL0`tTVhKe+4;$aWb`EqQO)t zB4?HN%v)QluRXyGZ2^IpO#shgW2A!0X|{|L51X~9h`BW3&gSaM*3vpdlAM$$IX7y0 zRM2`J;90JhG>n4Y2u2MZ+g;Y(kCxC7_rREWhYr$&k5N8LPnGV;-o&6_PjI!AQ zgZ}j^p~)IW8AD85RVB3xle)w>Rn%)~H7V`Rj3$2LaOfOtbicBnn>Z~D$|J)bv)el9 zaq4Wa9GQwm#2Jpvk*T?IT@P+(X#fZUYFai&b1+@f4bsl}r4b^bCgXDHKHOeR$^=DhE?uZP%*6$Qfon+)Ru}^xIh}X$k3%^-DH%oiQiKr!65APIZ3hk;+$pDY@Vv-9fQ*iXSLnDy7wc$cK2(x1uYRJi%gEZ7o%23Tg%;3f;NRxNR5NXS7<#8OX`plrK+ttHNkhQ&_U6Q4Gp4E;^Jg@# z{7dIisLaVYLgt+^s%<`gXK;kr5VP>K5=@07*5%a1`pwdaIy0VU+2$Epzstk|UBqwK z6qa@fLQoSm8&P_q5Yo62sweY?Qg_B(Tw>4jN;8+PEQxMGsb^ko?wr@|MwPjf&e=FT z*@vRacz2ide^&CCR&&uHfk};xJuZrfbrtIq-fl9*Hq|q!#y9XDOeqfjcqTE8RU9I( zNSSYv938gM(3M>3f5c*E7K_(%H2bn%q2(6QWMfzJZlb}`_v^ON-ZRv7MUv2ztz4LJ z^8)){^C^iIoAR+H1azJzl-VGgdIE8Ibk#p2TnGm!DL3r$V=oX;(u&k=N7=^=`-V+#WUWiB-tGbdSRv^7#%hjqKW1*|0Ri{&{~!-2ys!b z{qWAcF`?8IKJ20HGD?mQoRgvBvsb2Mq6KrCJC|svVLgkYQHn&Qr~q32{VX|8`k{fn zshJuGCLGf^i9}*RQ~qi`5r`GA9D!&rH8shmTU{0_u&v6@Ebw4bX@JtWjm})WwWS9I zshva7yF{GPy&G=}N_>!cXwXDY4s-K2h4`~ z%tdk2ni{)At)B>Zvl%$lmmN*${zDcpjfV-|G1-b;nqG}v0+HYm@FO>-+TfaL{I$D? z|5B|Vr@Icu)|)|R=B;2FS*ip!4h?FiUnYxv`dxOzO8%lv1%4XJy5)7HqnXyk|;I-AaX+Wt+T$Y;u;Nax-+a?AGOi*}&t#xa5Jtjel5$0TS zC#&qxpZ$mwR~lzs=evQ8@roi0!@MRc}`-=;4&EmtCit5S(Q zoe>ohuug0mCyRc48>Zb1U!AocCQ~oZ$iUMBLb9Y2GLp|onk$p&WUxvNt|j;DbKOqeqsSk z|M|on&dM8h0TPH?sfp8IGd|*J4)bvndG7tLqdbgOb?9vp)oQTCCr?PV9fw@|CwXls zqpJ;dTU}dw!b$6_qJO|piQ+K$4tee1mpZ($zPfickD)v2M;zX^watC1M^>gr2K&u? zupHI9GPk7~-rltgL){FJvszaJjjBS5IK9l#%E1k0%&JS-D5tl;&1!PUSZ|PBYt{+H z)thB!NGNKYgHyXC6N+jAP3<|eb!y&9ow#?as*2kx!iQCEBiR@Fcg=>CCZLj zF^)LaVxe&0Q3|t+R?-4x)h?9dD6ELJt@N%}*f3G_hNu%_GhP`U*w~wvma_T#v~6^D zE1Q^oWSH#zJ}s*TDUk5yW^Kw85W&Y%U&eVnDd zp%K<6LD0JPYb2lt#&(9ZVe%SD)T^Ck$tFao!zgu>q-jg#G61k~4s{}(b_gZ<`Sp70Dtu8Fj5f`Z7L%TZlXu^u;km;p9CR+Uv>Og(pW$BA6 zL=|2-uM-e8a+v5No=+};R=mKxD4Nmk&fcEtZ=~+T;k|F{&LmL!tV$%pokcayf$!=Vwo4lhkcv=BC zu_zk<>*dQ+23lsnlkvDW8^4`&zRwKmayT&8`_6_vlgukSE-ASdKSzaf{RCH}n_BTa!C`=g&#l9(^tke90Hu{aQt@L1G&2%bV zB@JAbY^3ktFdBa97UomF`uS0{kp^Zc%i|_Y;6BR~NsTFytUd_48WhZAf7{HoTS|-* z%0A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 caj7OpRr=@or-Bm}P9~4^h +#include +#include +#include + +using boost::asio::ip::tcp; + +enum { max_length = 1024 }; + +int main(int argc, char* argv[]) +{ + //try + { + boost::asio::io_service io_service; + + tcp::resolver resolver(io_service); + tcp::resolver::query query(tcp::v4(), "192.168.199.146", "12345"); + tcp::resolver::iterator iterator = resolver.resolve(query); + + while(1) + { + tcp::socket s(io_service); + boost::asio::connect(s, iterator); + boost::system::error_code gnoredErr; + s.shutdown(boost::asio::ip::tcp::socket::shutdown_both, gnoredErr); + } + + // using namespace std; // For strlen. + // std::cout << "Enter message: "; + // char request[max_length]; + // std::cin.getline(request, max_length); + // size_t request_length = strlen(request); + // boost::asio::write(s, boost::asio::buffer(request, request_length)); + + // char reply[max_length]; + // size_t reply_length = boost::asio::read(s, + // boost::asio::buffer(reply, request_length)); + // std::cout << "Reply is: "; + // std::cout.write(reply, reply_length); + // std::cout << "\n"; + } + //catch (std::exception& e) + { + //std::cerr << "Exception: " << e.what() << "\n"; + } + + return 0; +} \ No newline at end of file diff --git a/src/AsioPool.cpp b/src/AsioPool.cpp new file mode 100644 index 0000000..b297dba --- /dev/null +++ b/src/AsioPool.cpp @@ -0,0 +1,62 @@ +#include "AsioPool.h" + +#include +#include +#include + +AsioPool::AsioPool(int iPoolSize) +{ + m_ioIndex = 0; + if (iPoolSize <= 0) + { + iPoolSize = 1; + } + + for (int i=0; i threadPtr; + std::vector threads; + size_t i,j; + + for (i=0; ijoin(); + } +} + +void AsioPool::OnStop() +{ + size_t i; + for (i=0; istop(); + } +} + +boost::asio::io_service& AsioPool::GetIoService() +{ + boost::asio::io_service& service = *m_ioServicePtrs.at(m_ioIndex); + if (++m_ioIndex >= m_ioServicePtrs.size()) + { + m_ioIndex = 0; + } + return service; +} \ No newline at end of file diff --git a/src/AsioPool.h b/src/AsioPool.h new file mode 100644 index 0000000..0184bdb --- /dev/null +++ b/src/AsioPool.h @@ -0,0 +1,33 @@ +#ifndef ASIOPOOL_H_ +#define ASIOPOOL_H_ + +#include +#include +#include +#include + + +class AsioPool + :private boost::noncopyable +{ +public: + AsioPool(int iPoolSize); + + void OnRun(); + + void OnStop(); + + boost::asio::io_service& GetIoService(); +protected: + +private: + typedef boost::shared_ptr IOServicePtr; + typedef boost::shared_ptr IOWorkPtr; + + std::vector m_ioServicePtrs; + std::vector m_ioWorkPtrs; + + size_t m_ioIndex; +}; + +#endif//ASIOPOOL_H_ \ No newline at end of file diff --git a/src/Connection.cpp b/src/Connection.cpp new file mode 100644 index 0000000..6e0de07 --- /dev/null +++ b/src/Connection.cpp @@ -0,0 +1,141 @@ +#include +#include + +#include "Connection.h" + +Connection::Connection(boost::asio::io_service& ioservice, boost::asio::io_service& work_service, + RequestHandler& ReqHandler) + : m_socket(ioservice) + , m_work_service(work_service) + , m_work_strand(work_service) + , m_ReqHandler(ReqHandler) +{ + m_recvCacheBufPtr.reset(new std::vector); +} + +void Connection::OnStart() +{ + boost::system::error_code gnoredErr; + m_socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, gnoredErr); + // m_socket.async_read_some(boost::asio::buffer(m_Buffers), + // boost::bind(&Connection::HandleRead, shared_from_this(), + // boost::asio::placeholders::error, + // boost::asio::placeholders::bytes_transferred)); + +} + +boost::asio::ip::tcp::socket& Connection::GetSocket() +{ + return m_socket; +} + + +void Connection::HandleRead(const boost::system::error_code& errCode, std::size_t bytes_transferred) +{ + if (!errCode) + { + int iret = 0; + //m_ReqHandler,󣬱¼ȵ + if (!iret) + { + std::string timeStr; + GetCurrentStringTime(timeStr); + + std::cout<resize(m_recvCacheBufPtr->size() + bytes_transferred); + std::copy(m_Buffers.begin(), m_Buffers.begin() + bytes_transferred, + (m_recvCacheBufPtr->begin() + m_recvCacheBufPtr->size()));*/ + + std::string reply = "Wirte";//ظOK + + boost::asio::async_write(m_socket, boost::asio::buffer(reply), + boost::bind(&Connection::HandleWirte, shared_from_this(), + boost::asio::placeholders::error)); + //m_work_strand.post(boost::bind(&Connection::HandleReadDone + // , shared_from_this(), errCode)); + + // boost::asio::streambuf request; + // std::ostream request_stream(&request); + // request_stream << "Accept: */*\r\n"; + // request_stream << "Connection: close\r\n\r\n"; + + // Send the request. + //boost::asio::write(m_socket, request); + + } + else if (-1 == iret) + { + m_socket.async_read_some(boost::asio::buffer(m_Buffers), + boost::bind(&Connection::HandleRead, shared_from_this(), + boost::asio::placeholders::error, + boost::asio::placeholders::bytes_transferred)); + } + //else + //{ + // std::string reply;//ظʧ + // boost::asio::async_write(m_socket, boost::asio::buffer(reply), + // boost::bind(&Connection::HandleWirte, shared_from_this(), + // boost::asio::placeholders::error)); + //} + } + else + { + std::string timeStr; + GetCurrentStringTime(timeStr); + std::cout<begin(), m_recvCacheBufPtr->end()); + std::cout< +#include +#include +#include +#include +#include "RequestHandler.h" + +#include +#include +#include + +#include +#include +#include + +#ifdef _WIN32 +#define WIN32_LEAN_AND_MEAN +#include +#include +#include + +#define ACCESS _access +#define MKDIR(a) _mkdir((a)) +#define SLEEP(n) Sleep(1000*n) + + +#else +#include +#include +#include +#include +#include + +#define ACCESS access +#define MKDIR(a) mkdir((a),0766) +#define SLEEP(n) sleep(n) + +#endif + +using namespace std; + + +class Connection + :public boost::enable_shared_from_this + ,private boost::noncopyable +{ +public: + Connection(boost::asio::io_service& ioservice, boost::asio::io_service& work_service, RequestHandler& ReqHandler); + + void OnStart(); + + boost::asio::ip::tcp::socket& GetSocket(); + +protected: + void HandleRead(const boost::system::error_code& errCode, std::size_t bytes_transferred); + void HandleReadDone(const boost::system::error_code& errCode); + + void HandleWirte(const boost::system::error_code& errCode); + + time_t GetCurrentStringTime(std::string& timeStr, int iIndex=0) + { + std::string tmpStr; + char buf[32] = {0}; + +#ifdef _WIN32 + time_t t; + tm *tp; + t = time(NULL); + tp = localtime(&t); + sprintf(buf, "%04d-%02d-%02d %02d:%02d:%02d", + tp->tm_year+1900, tp->tm_mon+1, tp->tm_mday + ,tp->tm_hour, tp->tm_min, + (tp->tm_sec - iIndex > 0) ? tp->tm_sec - iIndex: 0); + + timeStr = buf; + return t - iIndex; +#else + time_t now; + time(&now); + now = now - iIndex; + struct tm timenow; + localtime_r(&now, &timenow); + strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &timenow); + timeStr = buf; + return now; +#endif + } +private: + + boost::asio::ip::tcp::socket m_socket; + boost::asio::io_service& m_work_service; + + boost::array m_Buffers; + + boost::shared_ptr > m_recvCacheBufPtr; + + boost::asio::strand m_work_strand; + + RequestHandler& m_ReqHandler; + +}; + +typedef boost::shared_ptr ConnectionPtr; + +#endif //CONNECTION_H_ \ No newline at end of file diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..915fcbb --- /dev/null +++ b/src/Makefile @@ -0,0 +1,31 @@ +#bash/bin + +TOPDIR=. + +TARGE=Server + +SRCS = $(wildcard *.cpp) +OBJS = $(SRCS:.cpp = .o) +CC = g++ + +#dirs := Kmp buf +#all: +# $(foreach N,$(dirs),$(make -C $(N))) + +#include header +INCLUDES = -I/home/boostlib/include + +#include lib path +LIBS = -L/home/boostlib/lib +LDLIBS = -lboost_system -lboost_thread -lpthread + +CCFLAGS = -g -Wall + +$(TARGE):$(OBJS) + $(CC) $^ -o $@ $(INCLUDES) $(LIBS) $(LDLIBS) $(CCFLAGS) + +%.o:%.cpp + $(CC) -c $< $(CCFLAGS) + +clean: + rm *.o $(TARGE) diff --git a/src/RequestHandler.cpp b/src/RequestHandler.cpp new file mode 100644 index 0000000..207c28c --- /dev/null +++ b/src/RequestHandler.cpp @@ -0,0 +1 @@ +#include "RequestHandler.h" \ No newline at end of file diff --git a/src/RequestHandler.h b/src/RequestHandler.h new file mode 100644 index 0000000..88bc77e --- /dev/null +++ b/src/RequestHandler.h @@ -0,0 +1,17 @@ +#ifndef REQUESTHEANDLER_H_ +#define REQUESTHEANDLER_H_ + +#include +#include +#include + +class RequestHandler + :boost::noncopyable +{ +public: + RequestHandler(){}; +protected: +private: +}; + +#endif //REQUESTHEANDLER_H_ \ No newline at end of file diff --git a/src/Server.cpp b/src/Server.cpp new file mode 100644 index 0000000..0a8a084 --- /dev/null +++ b/src/Server.cpp @@ -0,0 +1,98 @@ +#include "Server.h" +#include +#include +#include + +Server::Server(const std::string& address, const std::string& port, const int iPoolSize) + :m_io_AsioPool(iPoolSize) + , m_work_AsioPool(1) + ,m_acceptor(m_io_AsioPool.GetIoService()) + ,m_signalSet(m_work_AsioPool.GetIoService() ) +{ + m_signalSet.add(SIGINT); + m_signalSet.add(SIGTERM); + m_signalSet.async_wait(boost::bind(&Server::HandleStop, this)); + + boost::asio::ip::tcp::resolver resolver(m_acceptor.get_io_service()); + boost::asio::ip::tcp::resolver::query query(address, port); + boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(query); + m_acceptor.open(endpoint.protocol()); + m_acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); + m_acceptor.bind(endpoint); + m_acceptor.listen(99999); + + OnAccept(); + +} + +void Server::OnRun() +{ + m_io_thread.reset(new boost::thread(boost::bind(&AsioPool::OnRun, &m_io_AsioPool))); + m_work_thread.reset(new boost::thread(boost::bind(&AsioPool::OnRun, &m_work_AsioPool))); +} + +void Server::OnAccept() +{ + m_connectionPtr.reset(new Connection(m_io_AsioPool.GetIoService(), m_work_AsioPool.GetIoService(), m_RequstHandler)); + + m_acceptor.async_accept(m_connectionPtr->GetSocket(), + boost::bind(&Server::HandleAccept, this, + boost::asio::placeholders::error) ); +} + +void Server::OnStop() +{ + m_io_AsioPool.OnStop(); + m_work_AsioPool.OnStop(); + + m_io_thread->join(); + m_work_thread->join(); +} + +time_t GetCurrentStringTime(std::string& timeStr, int iIndex=0) + { + std::string tmpStr; + char buf[32] = {0}; + +#ifdef _WIN32 + time_t t; + tm *tp; + t = time(NULL); + tp = localtime(&t); + sprintf(buf, "%04d-%02d-%02d %02d:%02d:%02d", + tp->tm_year+1900, tp->tm_mon+1, tp->tm_mday + ,tp->tm_hour, tp->tm_min, + (tp->tm_sec - iIndex > 0) ? tp->tm_sec - iIndex: 0); + + timeStr = buf; + return t - iIndex; +#else + time_t now; + time(&now); + now = now - iIndex; + struct tm timenow; + localtime_r(&now, &timenow); + strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &timenow); + timeStr = buf; + return now; +#endif + } + +void Server::HandleAccept(const boost::system::error_code& errCode) +{ + OnAccept(); + static int iCount = 0; + if (!errCode) + { + std::string timeStr; + GetCurrentStringTime(timeStr); + std::cout<iCount="<OnStart(); + } + +} + +void Server::HandleStop() +{ + OnStop(); +} diff --git a/src/Server.h b/src/Server.h new file mode 100644 index 0000000..1286fbb --- /dev/null +++ b/src/Server.h @@ -0,0 +1,49 @@ +#ifndef SERVER_H_ +#define SERVER_H_ + +#include +#include +#include +#include +#include +#include +#include "AsioPool.h" +#include "Connection.h" +#include "RequestHandler.h" + +class Server + :public boost::noncopyable +{ +public: + Server(const std::string& ip, const std::string& port, const int iPoolSize); + + void OnRun(); + + void OnAccept(); + + void OnStop(); + + void HandleAccept(const boost::system::error_code& errCode); + + void HandleStop(); + +protected: +private: + AsioPool m_io_AsioPool; + AsioPool m_work_AsioPool; + + boost::asio::ip::tcp::acceptor m_acceptor; + + boost::asio::signal_set m_signalSet; + + typedef boost::shared_ptr threadPtr; + threadPtr m_io_thread; + threadPtr m_work_thread; + + ConnectionPtr m_connectionPtr; + + RequestHandler m_RequstHandler; +}; + + +#endif //SERVER_H_ \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..c07b2e2 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,19 @@ +#include "Server.h" +#include + +int main(int argc, char**argv) +{ + try + { + Server ser("192.168.199.146", "12345", 32); + ser.OnRun(); + + getchar(); + } + catch (std::exception& e) + { + std::cout<<"Server Start Exception"<