* Job类init-->prepare-->split * @@ -46,17 +50,16 @@ public class GdbWriter extends Writer { **/ public static class Job extends Writer.Job { - private static final Logger LOG = LoggerFactory - .getLogger(Job.class); + private static final Logger LOG = LoggerFactory.getLogger(Job.class); private Configuration jobConfig = null; - + @Override public void init() { - LOG.info("GDB datax plugin writer job init begin ..."); - this.jobConfig = getPluginJobConf(); - GdbWriterConfig.of(this.jobConfig); - LOG.info("GDB datax plugin writer job init end."); + LOG.info("GDB datax plugin writer job init begin ..."); + this.jobConfig = getPluginJobConf(); + GdbWriterConfig.of(this.jobConfig); + LOG.info("GDB datax plugin writer job init end."); /** * 注意:此方法仅执行一次。 @@ -71,37 +74,37 @@ public class GdbWriter extends Writer { * 注意:此方法仅执行一次。 * 最佳实践:如果 Job 中有需要进行数据同步之前的处理,可以在此处完成,如果没有必要则可以直接去掉。 */ - super.prepare(); + super.prepare(); - MappingRule rule = MappingRuleFactory.getInstance().createV2(jobConfig); + final MappingRule rule = MappingRuleFactory.getInstance().createV2(this.jobConfig); - mapper = new DefaultGdbMapper().getMapper(rule); - session = jobConfig.getBool(Key.SESSION_STATE, false); + mapper = new DefaultGdbMapper(this.jobConfig).getMapper(rule); + session = this.jobConfig.getBool(Key.SESSION_STATE, false); /** * client connect check before task */ try { - globalGraph = GdbGraphManager.instance().getGraph(jobConfig, false); - } catch (RuntimeException e) { + globalGraph = GdbGraphManager.instance().getGraph(this.jobConfig, false); + } catch (final RuntimeException e) { throw DataXException.asDataXException(GdbWriterErrorCode.FAIL_CLIENT_CONNECT, e.getMessage()); } } @Override - public List
+ * Job类init-->prepare-->split + * + * Task类init-->prepare-->startRead-->post-->destroy + * Task类init-->prepare-->startRead-->post-->destroy + * + * Job类post-->destroy + *+ */ + public static class Job extends Reader.Job { + private static final Logger LOG = LoggerFactory.getLogger(Job.class); + + private Configuration jobConfig = null; + + @Override + public void init() { + this.jobConfig = super.getPluginJobConf(); + + /** + * 注意:此方法仅执行一次。 + * 最佳实践:通常在这里对用户的配置进行校验:是否缺失必填项?有无错误值?有没有无关配置项?... + * 并给出清晰的报错/警告提示。校验通常建议采用静态工具类进行,以保证本类结构清晰。 + */ + + ConfigHelper.assertGdbClient(jobConfig); + ConfigHelper.assertLabels(jobConfig); + try { + exportType = Key.ExportType.valueOf(jobConfig.getString(Key.EXPORT_TYPE)); + } catch (NullPointerException | IllegalArgumentException e) { + throw DataXException.asDataXException(GdbReaderErrorCode.BAD_CONFIG_VALUE, Key.EXPORT_TYPE); + } + } + + @Override + public void prepare() { + /** + * 注意:此方法仅执行一次。 + * 最佳实践:如果 Job 中有需要进行数据同步之前的处理,可以在此处完成,如果没有必要则可以直接去掉。 + */ + + try { + graph = new ScriptGdbGraph(jobConfig, exportType); + } catch (RuntimeException e) { + throw DataXException.asDataXException(GdbReaderErrorCode.FAIL_CLIENT_CONNECT, e.getMessage()); + } + } + + @Override + public List
j)>6@7G9eZYcALttU6h-J#8;g4N*;mc&E zA>KhDmeOrj*VuW^>>9`KE@Mi(7eUQJduA9aX4U$!%}O??sE!qZrn56+D(PN7jSr?` zo2ve%%e{$~qZxzaf7%=~t;8ZQw3X4MeutK5!<4nE_J`;vo@#Tdy_)*yA|89jZ&SU1 zKI7lj^lTvC#j9!N!!)RE6vuYCh$Xw#QZ*rr1UUJzyiIkFDLdb=08_yY-_Qr2F_duL{Jr$iu&xWir gopMtEaCUA08p;=YSMh8zZ`Dl2fjY m!sKqiLrFpyKlTd}Pq`s=;B7!yg;i-wNp}mO2K&65Q*PQI1Xj>I4@`bOx z-|cTrZNfDx^ygVvjACRb?8aPRr5N9BvnQb1UJ%$>vof S*tKLV77;X;c zmYwD0G9zwJB$biu8utZHwuPakD9KjS*GuF}Di GDl z(*4~}d+w_y8QI1<#)--NX3Q;R&Ktz$v&D}TRj#+>RjQ9-LyV@m%Irg8nfWRf1sh>m zrP+sp%8-*qzcZuj0$unV{L{3^RMqv!{(i_pneY6X`G+LuiqZtZVGjAF@q7?n7DrtL zGl`S&72kTLlH6vNm1Dhv$LB0RU&7JDXdSD+HvV=!`j?pM*D-MwqjO~Ceed^3L-7+K zA>Y2+>M$}sSTj5WB4>A#U>7<E|~@3wYu zXg9sVeeg(^xJprqwaGW)_WN5_-U4DBtudWzTa1r>Ww}Djzg$<3&4u<3)=>O2=W^co zw(1NoHH8;F%v!|ZTUv(@J#l?jdM{Dp*dnkA>T3 T5Af|FM^VOz(y{C#)Zx z>@Rk+<)Rp|mR~mcwhEPL>&lgnmeb~=u(xGi>nT>mGJdsV72Qt>4T9i)l}*wX`;5Qk z3r0uraC2h@HcCZ7+w^VmnV8&pHej8v;-`6iJ?U@Xa5bAsd z`R~kFx*Ts4%O-XiTCJpMmaXOa+@DR%iX4#qmd*&itdd$cwP;&3ncCjiI9#?3CmM%q zdKvMESp`KppM4{P`CA=xQ5ZDn#ld^fwhl*Wn{dvc=*3r=TRdK}>yR^EwRmVRa+xrI z4H20o7nAK2LT Bgn5&+NkSj-WeVc1O)`&2cCPU1w>_dDizDm1IsuGiyt7gWPq!HK(PUF)x?E z371nSQ`~xZA1mOb$TMVq`@t#A>3m0S9&@z8QKxIzN1?#d-La^6Soo~ @w4xCj6Et$cy5AmaP<~ZucWnmF+Ebyak1e@W<|N&aNkr`kO#B+|C}#!2tHz zmv0;Uuk5l$>BjZnHC!|TN}H%Eqq}19) Y7qAgR&tKjsF=t`|7MUyV}HGH5gn#;bxYq&L*r`mQ~+YuJBeCebH8 zOho$S5mMMX4jtY*AI2uPw4aEgoa{7pHh&x6pwKNxS8wcRKK;v)Y}qEXPWpY-i{6E1 zR@k@T&}VIyw~t7AHXQ*|xc8zvdIYHStpRNFWTxcD0Oa=Iw4~3hOp>=VWgIR0GrlIJ ze-k{<+1tABurp=RP&+;I)obeKbl#*()f&?{zx*_OZ9|NT{m<6l!fCoo?x}gH(X%5Z zyGB-?l(oASAMc@)lLs%FYyOJ{-auOOtd=;?qt`;;`P>RuXXSuA9*$sSr4;V9Yy~?i zX+uScp`PN#r_CHOnd2 &g+$CWm0TaiN^Sf$QZOZ-<%j zi2n=mKn}myMPmlG%gOe$^LZl`UQJ{kBX!)Cv~WYG9b!thaH=vYy(`yI
NnBM(Y<8f&D6@+i)!)noRg2Oja|GlJS-Dy#`dxd*7A$X7+%<6 zE@@i|;kIU66}% sDFZ;^u)pXU8?X#wzO?o|Js;xw5N*(ykt@8NUiy!Bn zW6zETq8&kMw2Ip(cQ-D~qMpdVPVN5yt6!IeFATD8o(G{G9QOD378(3ws}t!q+E}~O ztN5>K@vXgfT9!syX>+`SfWA (oB%*FthU%djy4f*kLIXXBTz1MQg6oC?aNNn1yb=u>Sy%IzKuw z#0N=m7ShCR_2F?^7{M1eowbSezE(mi<%x-vfC&>_*@oYmOz+izwl3ERnWeW80R5ar z)`{frNm#S0>Iy;3pz)vHySs;Wgk)WZ#-VJjmI-!aiys%VycsDcZpd7hJ>4Fp!V*!4 zJdbrClY0g(^O7rOubMa&7?nafKoc^=<}Co?SDLq5gtp0UzQ<$yb&8a;EbWFu9c+HR z!rtAvt*lpzl#`mh0gcfqIPMV>+`(|cB^)!7pqZ`Z)-$2)$eC@fddX-uw+ZQGd@7Fo zJ1d%Tl2vD&uQ=m7aV%|3w+X{YwcD2H>QytcTXL(E8gb2-;k2^-v%`6571-!^qGN5& z**E|mqFUn$iHH8cGWj;%IRl^O<{;SOANqL@FU&O;k(p<3u$LSyuE?4xV98|djEUO~ z*lTQAF_``KOjcqRR{P2^*IAdfV*s)Xw~m2w@=#tia?H%vWP+-$qi)%wnT6 wC?2edni&H_H>#@R8|oi`7VG8ROG8C0L!4H&t0h{no +b1|C 66CEyG sJ(t+GxHD&-fpO|By^PYJvy``^ng z3DI!$M`KU@?&kjhzKd0e>c5>CYfkC1xKd-N3(DHKEh*OdXEZG066S`HftNuSSAwfH zRcP5(%^oC^giKXXQ0SDZq++O;n4$w#1Ft=<=Ub}B_4a?_XM0Eg05sEo)K&igf+kwq zwSl0vkEBJFwa)09mbUGj*Sz-DH@K%@6K16BTou(ZZN !9=pNWxtrh>_;~% zl8q#2D;FZ!A#RKr@hyZ63g|EKk{M8!awv>QGxBPn_+2#m*9^{*d+r?CeUG&{9XDy1 z6R_s5$#UO{XZ5Tj%6zxIChq}mYh<`$@+&_k8f0U^V4rp03fvtEO+`^|oSZtZ+#wX@ z_s;%h>!&@Pvc_cPv8?UkH!q)Z5tmK-?AuZMr)4PmEyr^({hhnh{9Lt<@FwTX`O$9@ zyJh>s5B?Taez*qMOtD`dn+F(1zjY}cjxOE4u$W1{B1t`wWoP27!*4Zy@iYLaCh6J{ z$+&PtKoTOV9I1d13Kb~6d7PL1-7J5L7a!@qqPwH{f1fMy>Bf0UNTR_XC0sjcf1VJJ zMnsV3ym2O7xQ!H912tkV%N{Z!(62?4F?0xm;?=mR*%G?r)MKUB{rSno>1W&BI;GCZ z?*48~t}*BR`7E|t32Jmdb5Y9F*WAQxj~&YP{{T3aef)nPV@|q@&NXK$d?@$C#vVXA z`F9iP{{ZfkGbG9%{u3AgKlF&yq0~I_`MX-#oFI2@RobOUvKao zvP3C=q+=av!t>-EQjiX!oRT5LJnofeRi;bJzLdZ1B6sx<8hhWxHov4K%5ijXIH77k z4Tn35uGC!jZMGSe4S!C>8(PSmyu0Az m@%~n;W6|E=^Qrtvac;_FJ)n=s(gBYz>k`YciDh1=v|1o9E!mmN zn9oYyG1{-(t=_HRAgZt?)g(X>NQQ8^)UkJ(v%-7-09P~Dws+tBgRb7a^tY?I>K?1T zm?`%5Y~r{jw> ;U;N+WMgIVK{(tK)^27&pi1@zgHxZq4!8qSoF8kKvx@;`g=J&Xp zT=@Fov)Z8mt&4F$k#_GU5lt6P21Z4yV%Z@TK{FX%T|yXY$~_uiLsqN)+SnidsLZQh zAM;jtPk-v>diKuy{{WD6H2Q(5n2SfX{>s*j6x!iwj4T&7ORIUk(>8mGZ8dKTvTpR5 z?{exlYNMi_a^R6WU@|4_8yP0xCMrN-YV}$-qK1=8-o!3eezix#jQ4XF^F9_ndGIv4 zZB%uZYPCI_&Ys>Xa`L5KIFjRtJiPh#KGBeJ9fyhRtCJ(->&Dx#EE_&8%-z#?-SaFh z`)&dyp?c0A%FD^F-IFv4%%mxmSfZk*O%#CYs6rZrd}8`Yx0cDTJE=T4++9}gFS!;q zopxs^*!f7@otTd*uaggIVyJ}DB>kajOr3JEG^yLRzi!ZSRt*_jF~Z>sg7VuXuQ IHb|bcYE|UFJ_xPkWvFET+j%{TiDt?WmiR-IM&Wt)S^)r3FA&gC9hcr zukHm@QQ8nkw_@Hrk9SUn%@qoF>LV*}gI$_&`nKOHZTQSudEJzgPBE0Ri*=Ri?r^4w zMyh6?dffWf8uX>-5>Ji3aMYz3{wmq h75%ajmcGaVJyk<*095%V;V`Qe<9V;J1ilpC4Z-pbvnUHZT z!8XyIO55>qmhRQtu#x6f+xvPoBx3D6)F`zms=4j9L}_T>js-PLg|^< z?hcN>8F+ok#1Pt#u(xY=+g*mO#MoO?Q_=-1y!DJ=8g&`m4V^ns6p+YPbYcW!e6li& zKbehc+WARGhI4ch4`*8m>vYxY;bg6G%rzD9iXRwN!7d=P%WcX@#%=R0y81cCNvNKN zaE)o=R9WwGYs}>Q&R)qS6x5*=!p!V%4oud(KdJe{B5m|k4Z*IK{gUu )H2V}7_F=Eu4F z1=#OcUYE`vvu5rFyE&=yeWKFQl8s=T`9CGQwj&mgc;Y4V)@WYvX+*0a+1=$6A18H3 zbPq_oio31z&Q_*_>Rb5>=MCd~`GjoDg_L&^rO)~O+o882A?>Eoz@e@?TFQ9+Xe(UJ zyTe em|FPWdAk+!woF~FOxP*Lha-~wxRQ=R1~y9v z#S{049CHo`+l-8gg2nvETz4ZxkQ<3)f^~1{dRp(4 ROv9jAH4c7!;4Kll9FrE$PD1;(sXTbD{AXc5^1*4 z(<+M#e#F}0M2(|mmN|&ggjRE6)gm{Ee4)i86Uou2rxf5$MQ=#xvm+yRy}KHzHhkGc z7flCj-Jo=qMN%f=v!>1y5-6I9oDP!cE|J8iA%MxKnS`bT6v6`ySAPOM3A#7OA8(^f zex0*++A`1YJC_r|vyMX&WGtkb$UL=jWYx4S`zXtT-joLu(hT9jv_;i%B@;O^$j{qM zD{xHZbM>}qEV349Yn5B0y4XA@Ld^JrUOZ*A_O#X`7Nm{+95q$KP}I&gZI;@mv%XME z%-_GlNi!a>`{jxXAQn?VO}ruVuJ%z{J^kD8zX^dut1I8bet3;@}E7c_WBbT+QQb zd$Gy7<~^3>W|mCKh9E+%X}d`6ro8VAD}RlwzXu(&X(y1f4V#qhh^N;6jX_@abb9+4 z9OD(t3RwoxUH(aG;Hg^oD8fo&?0m-VhF0sh<-$@z-?$)P 5GjvEu=_S%~fTAjw znYb_UMZS2d;GBz?F716~gd5|#{iZfTN+SAoc);It>D$b1JB4_LkL`E|*78s+=B?5! z&BTSo3!YrPSrQ$xsgBCkYbT*nvbyf3o9j`w)d@;24l?cSlg!k!6xvPfa*Ugc^y@u7 zmKxU@=VdotO^#Jm AmfQiCem_Il1fX}MJVnEymandl3dKbtmJ8Yq_x KP*;+e2{IA+p2~xTh1m$Yh7}4^1d|ts=Sv#*M4>&N zHX_gkfCT9ueJzM35$E~JV`Gf4^rhwbj8qjld2;~f0wG@EmNpANCDNdZ#7r}eU~h^? zYVf>jn8mJ3y%5KyidPX>l5$a|veKF*wrKY+PU-8$V;U`-I#qWICUulK%_JQxtk0Nm zzP9R&wjIj(D-+7h=L@bnUQZfdS4D{-D;|}GyOfwoJ+-A`oW5q0l9j@3T`H;sT%}Z` z1pp0QDe84IyG2Z)qHj}7Y=ot!oV!t!Tic0R^W)nK#|J(deLN}E+^4HcPi(84V|*jr zagvLd6))*~<@qAeoEdsc_Yn+P&B(~j%DDwKiEwZJVUPnRpb1Wzz`|N&st`&dQ zFbIbu0F6gZ$aH?Vqv%#JUu&GPvS(xQ6s&FAD>1LR7IJGMV iUzoW#8T| zZdCBa%K1Bm#m?#CvujQf>S??rvX6}Xu9G8zxCM$+geG)HGk$2zQ=9PHGG*+cmYcys zYiL3@$(Q}tej^SO4)dyV!4#F#Eh?ONN)dw+NP|M64@k+OT=t;Z5G8QeYU5t6>}j@X zZH0DM8eBW7R(9Sbr1tr5ElU~j{1cv&ODXAU&ZB;&w`F!p)h^Re-m@1KyTV*J=N?xL zSbu~zYTS(dqd1= 9R`AsjLfv>u#c|KDUlw z2Zn4HBUso7`PNWuK6A#ei6!~M<5etugU6WS(aIB7UVODN1Dk&Hl9`K(YZq|X8A9-0 zT?a5{BeOql>cV8vBvcV@X7Ak`;o1=)34O1M>~?mr^@{^#y@biHlVM|F`wrp0=hQKP zt2;&wg031v$COHOUS57fx ADg}I93EvcD#46BfkxWW{BwdZx(aqVrpVovFEGRLu) z?@Zi5K{Ia6R${m%ZvOx~>xXxT&CCA)^e+c~JlChy)|Xa9Jk z&l@7#o*U2R&pD;BzV(voD^ELYdz7hDm5F$qxk@?Q(u(ni&JiBH4WIn!Z-4d!1byPk zmF=7D(tq9URNU>C*9#X4YOM90h4S^^kL|gOve?UxZdn+J2?Moc>T$$AWQL1gNko7J z(ySt*+MP~jNumW1AWvTn&O17##N#mE7-I@!T=8H}*f_3NE=|p4$V_huZJyhPx-C0V z+h)%#JePSr2_SoTFm?rZ9@T+ZHGZnE(^WK3USfvyvBY_e*=h)n=MkQW5g-2m4|=XW z`h^{B*6Q>dosg|6Cu>_8j3TAJHND%Ed~I0WjQsUz)46Est4pogp*gp7Do=i7-rcTi z7;;(lJp6NmA_@K_IkMv7GKUjKwtg*3Hn+-F-c}`;)+X&HEE$_x4l3P`jx<`=n)hhN zEgKNn?*K0%x>51hT?Z}DGHlYEt9zy0#1>+H4kdg8rwJn|F&P}PsaiR+wM{3_P;8=! z_4BET+7OC~iPkBL)&T1OhcK^B%G37heJnV+wI< U$s`ZV zurn1Dk~tVAPS>n=#w${QxG)fOMfquC{{ZV{sr&XL{MB#kwK{6!r0!@VZv8ECf_Av} zqSD1{6}`$iT)b!D8hR~0qH@&i*2=A#nZ|gnOS>f2Y<{)1$@?t)WuDhc{ET0)lWa$k zuUbenP)=0cF>;Hx${8~W6ap@R)JVcZl*Bj`!X+>XO~^n(zg>Bg(27!&0+giyu2#>P zC&{xB7865(McXB1r4<8*BdD5$2 JT0vg0{{ZwXM1UeA%c$JAMWc1yI5;NV zvMRV;Lw~ZGD3Ho3asL465QQ;^{{W;F7*}keZVSA(Op>NdU)(*Qb&J*(&0T|p8a4ij z{{W;`sVLnNk1-J{A@uz`>$}i&iv3fzYcQcFACByvBm4HHDSW1)_~7&3Xtl3Rq>V9c zPg5ruHRV+dZ~pU?WANhUk9lu)It0i)kdGo11OB)}m;eVM5bVS`^8DfShd=v9zZ%!@ zw^2T|zbxp=s=7uN#O*q!MNXiqaOwvnm*grSZeS`VAYkhLYW~f^xxhP7?7&DIxpj;n zVdcmNnaCWubNYFJes7>Yo?cN!5^8}LDm|%D1p1-c7@dB%P`z${(*Obd;mfW60Qs*% ztB-P7;U|pahSFc33-_!qgUeMrR8x*)C%48w4r8B{<3F1DJ%N?j3ZUG2s-g!?Ap{iW zRZ;5@f(a;3r>dfTZlQyi@-PT>zKZ<{+=7`!awg!y+{INvDm=rp<^(YHx$^%2XyxVt z0t5NKKj!``$U9`&Cn>jR-7|_L70i$-a* uf=aH5lM)X#5D-mZ>JR?_Mk)vakISvp>WK3Cdc)NLA9G}O zat#~0Blh4bkct^F5iyfEhcl*cq&|`udZIkPKmC>ScN38g823XQ%ajsKf(0lStYpBw zLkBYm6hOrTfPYK#a_9d5ZGLD; M62SN4H$2@|==QbI0*`eE7#7zZKQ3tM3oFYVF}DXVK54$#RqP;lDl?4Erh# znvX8J$*IiTgY)tb`T#%vWB&kW{{VbBkLM5Q=o+Mgg0V$JN&r%(nqa7ihvqLXu|$Oe z{Q@E*%jgfxJnQ2!x59)-?^z`5$h0UGUTFz=0ZdfH06@dc3Ou=e0w2);C CzlGtW zdR<3Nw_;Ig@w*$6d~=nb_3e|}pQ!>0okbFOkQnCVB}b3|iHvSQA|M?8fgk-ppO6PS z^{2+Q$WFLEQB$1!g#a%#iYDe^1BX6cVu^aE0p A)}56h$CJ3?(ohs$dZXiXYJ)Vfndp{{XhVc1py8dI$dis!-x$i9}8y9d3U}h>&{a zH$VP}rXF8N{{Tz>08f#6^^9|oIuND>3@0AYg&__AVe1bu01-Da{NwZoFz3hyynDN; z%A!FAZU|BbWK!}09;pC2zfbgkFn{R*9$)s>#4Nfpk7`m qhaqKuXv2iXzNy`xi*7ee4;;tsa$gRv}6fvXa1V1ur$2?f( zF@yvN$ }Jg*hG(6(b~5RC>!5>|%y!WfmSm% &BkYdvLB0w$=_5R-w`?N!y`P0y6zBUcPBT$Y zhUW2y$I~fFSDQT$r71uuN>BQlpKXl)02Hg#>gdz!YSJ&h>FRXVhNU=3w JA$9h#s14*ONMWjMldNk&uu0HG}Bdd5HXH3h%&Mm@zAyq)iqFRMQs z*|4qEcQ19{HzYl&ZpOAjGb*yrre_{8k8GN0kjF8Va9`+@MziGU6LG__cUhEvn(9R3 znaz5&u7>v}R?0*{+ @ zwNt7hS^441(K}*Hi{p;vbN0Y@oCww$hQ>@ru@&R=|4gvc0=f D@j{QEsjpn<340)wW4X+3k#{nJ?LMlwzMa%1vKw z+WmZ86=`Lsu6$0*cPz&%_N5r`{{U%1GLu|*$?lyKejgVWC&jrleR6fYv@Gs=h;5EA zYgtAj+E6h3T(T2aUFMf=P+d5Thjzw5wuI{@fV+*c2{zna#Lq@KQ^fSZ_D=b-@W!g^ z1+ygfF44`mHbuyJD6JeQ*tY{bNESOwI^28-^6$|DIeR_0-ZEHw0G79H$Gw`1HAu+Z zaw;k^3Nktp5;=rCG&=^7aS;)18^^{)#z(hJqX_8c4HHGHCM=qwlV*(@B$IZ{(oGao zB4jB-4tVhJn3dv 4<0@i@ %t=JXBOV`$CC1;B8G%gc}sfS zlY^aECk)t3L88g}ZKI{%NwCwWSqplldaXty2RFm!HKhj{v&Za9YjVQnIdRFgc9K FKojl++el;#M~`D{=j(?n*rIi1Xxz{)|rwZAZ$Q+T(chwS#JBJew_(?z=+5wy&t> zcP){OB5Y&Cqz}z!Nfp#2rS&f^s`AOqPO^GvSYIHGzTP$3@=xS0rq!%Py%d{PO`~Ap zB3cL}-Ks5PBBK~KOio};6pDjJO&g?B7(k^>6q6{JdZhsx%I6M5@#x`6a9#FB8OFPT zg9~s;BKqWmg2M}C%vo?uH%KFsos9=}c1pz4Qm1U)81*hYaYs*GvuMeh(hD|d%_O^8 z-ohOv9xnuKjk7Jsu$E>OnOG3I=JRwS8o7v9i!nfot2bm?mVJvUlURXHAl^DE$h+H_ z*c9p&pd_ot`?}o>wHMD(X1`9f?dC34HsK5}Od!1v9Hq8vbLSas)Y5AsMKGeh74G!0 zB^V^9J` -DL)lo;#&vbtPR35$Ugxx} z!Z5g)MNK9^j+;g?@r9bQaLymaEafHAZ25B_s1rqg7G8|*A0DN8!~Xz-7G+T9f4VjM zg@N*RHL LKE =gZvRv(4xNdb3F_BqR#HTfVPR%^DIx6V4Hb%ChxsP*fVYNBIa~A#@UP<)m zUbVWrE~(b$n|wW+r8OrQ$>mEK_H3+=On3hPFq%>S0KM#|_cGqEx^zI5On7$Z#6dy| zsqU5RsnP=!R3d8N+yGRRF*)^$MGT6?Ou_(DnI! Kd{J+FIPi+SJ_`$Ws znQ$gTTOvT%t{$?Daevz~w)^NCvf6@>l5)y1waiYmG~_~ZF59+|EHl`2)GPTGA{1TL zrMTAU1<`j~`rD0ncL+_~E|Es?v|_Lw{WA+T{wT^fX#Mq_b67VOu_YkYGpK_J tg{`$@v5(d{tm87njJT3bWi|7P^%I_#sy$4qvUN_h zlZ11h)u=o^7F46kZ9F{uXHY%b&2swRr+Y`At>(!)xbWry%Q+g`YPkVM%iNZoku@=I zr0j+%fLWSls~~yIhveI}9-;YlM=-7q+LLMVIpSAnV_lZJr{-;&pt&0}<%QInbl&gE zZy=jExTK)IQG&&iZvN|^kV);yEYVPy2o$H*jda3H&7_&%V}$juwEIcJ0`ReToyBFR zSt~loX6qXMiOg2Iwhi#(6yGrETPz!;Y%d1{Hq$j=-#-|HlY(Fk*D>A$ZrsN?=}EMl z6!@j^$JjJ-Ub|VjiznMwCCYj1J+eB_6FEI|F=k~Pwq~WzYT2GsysU|!jBqiRODQO~ z7JQNqp2oJCo``nsF~?2q(zV)N{dMYPm{)p|*zp$>;U|pko6i`NO*FkcXQ*$r==D9D zEYrnrvaEWenMJiYtmAZ2S>-00Z8;f`y(-;PSKIH7jIQpu z)BNMJS-$4EvxfOx?=kEAe}gT1)vfJ3vF0z^T0Z{(o65O9?S3t<3&Dky=3&B7u#@Y< z$0r)I(YkI|3N(*n3UpQJbv0e9*3#$QgM@37oaZ+rl&2{rvI+A!wTvg~Or6@f>U8!~ zrP17?>ynhG1qi|^WvE6jTcr6>ifQMat!Eue(9HVNh_C7zpYIzVS4hqIryOghBFK5q zFI;VHJZp=sX-mHEo_0N8X%!ZLs3 `0t8N?95uao2i c6F zmT6~Zm!?8pn
2{z{pA6`Ht{o zj5YTcD(p`ejj^*QFBOA|eC@hxw`9r|C}pplm2#0Iwg<}HHwcj^)R1V~Ow9_=95td^ zduM7zr4JQzL8Su!0P?jpD;C{Q%eS@L9!A*) J_2ZV5bsRw7`s7~J+ud1 zq;UlByV1(v({t#}mvrq8(pf=oZB9x`M$oma$yFkxpW&=v(fFkBhjkd{LOnaXBR*!7 zjH=9^IvDFsoD5oPv~?$QF+HSd)isc^P}1p|T5UQ>Y<`)}D+#8tVqQd2W_kab&t~ zmT*(l>Jxg4^4{g@j2q4xe5pzD*RoNL78)|F<4wb6_TfXiY_1GUt;Gw1@(sXzudEpY zIop(EEU8FImeUV$`DW5NUNyS$MB0&xLdYFqdivROYfcNrrIeOUmGZbK@jZazX{j*x zZ0p#@dl!kx6=Uo*s>~B?BXR>X`5PidM-)I%wem|QPG#8@A_G{t_O~sxfz~7uT)62D zC0Y%QxR2_6{{XI6=~+fizCdnFPkt=S9lXZbQXQ+J+V@*fCnpDBV>xpPbTDqBN=w?3 z(@}}4gNG UqZQX#iz%%g28HTo?6Ih6YJ0A-PYI~<;TQ7Pm*Oeq^R+$QcCl&U zvcF!U)rz4WUS-0YOW8ldyvkfIGS^{rTD89P*&ZX;{^egNyqkvC`)c#MrSACzkJXvZ zIms!jW;GKSi6qU#fM=+#^e!(Tu#cMYvqvo+5gnJJlO z<~`AsG6~rx#!DsS`F4!axURQ|l*%aCffHoT64{DTcPECm;$kC}bn)5_pS$mxhf&on zUZ!?OisF@ZEMw6e^N(%Pa+Wy4X+H$?8fT`{#uDbqH)WsOl37{z+LDWY?PT~a)c*kU zFYJf@;d2N69^6$yK8PozcRPBL-~Ryk?XH!6&8hzY=3m(l{lexC{5`m;f_)HANbYv^ zCBOdw@!MT1Z$tk8;hjtOSN{O1tF8Y4pY-qTS^og-G-jnKTw| V!7P1Y- `83fWDI2_bWyLQCXR#1*)@5|u z7pywvMMlRF^wrSX=~_%-LN8sY{JBzw=f{~!RsLSwBhJ}!QtDc)=2L4$Mm_k%@%xlx zKlq|odL=lqrX 4kaeY%VRg(mleI5QcaJPaq>O)> z9^6fmew2zC3gua`U~CE46yGQ}1+5NAdu3La6pE3}#ogxG>7Jx%F9a=S!nrAhn|;`J zd 5)?7z41;ueG1{ww~2d^re&@R?k;7^3x-{@n7FqL)3DKdA$E2S zF}?8bMT1yyJQilaw|;NWTb6~-bY_g1jpl8pk@oe~jvLzNX^5LhP9~a*+ZJ;R_)7xi z6?(TE*xq*-AlbXN%ve)xP`kgVaE n?FWN2oN+P26JC8ZTQ zNzOw>Ft+YAU}s)aPm1>tYmbc%>0)b(6JbgFFv!`~cE4hrZlu$DvhKR)umr$CON8E0K_mcZ-H$*q~T+huxVi{`*W#Jl0w z=1%b4IQGrblZtoM?c*k*BwDtbx29WmZ=vQHFq3AYPMV~0<5Z)ir=>$xRA<{)J85q| znMxngcx@+?n{jejd08{2-Kn>!%TH^Ean;(jEM`$t (+6soyf>JL6ZgzTs?g8(xgSRMr~3$?p(N8K`Ln=f+?L 7f6+7 $YP{qflAa+a1Greszoz3 zujl^&L@x`U0D7hDUd#Ug 9Gpo)t_xlH=4?q z3l+>`nMkRd&NkV#+nq9^VoF#y5(@UD?1Z;YtGceHOIGTp*~S!C3ULX_D|C66hO*OY zE&RvwDe0Pc{oA>1aFp({cIHrwnvAfbxlN?- tj6(_J49 z9eO37_*&r{r#@aCJrSf f5?!N<3XrK@M*i1|N~ zmsQUjgf+t4ev6W$X<~?(2eLDnF6xi%2v#e-Y4VFG-zpTK@-h*-dv~{dTXH<=Xmp)F zcT%pGrkywIY?JVuQ*c@Exm%yaV*damf2v>G)4F4qZm0E7it^KGN#pZRYWZ?snQo4X zeh_(!xL%hbNw!@VdkvkkPDze4ltmMbvu+~;iDJl+Oj4ZfPbrTs85YYQm@HW%D3F;0 zBx6}>zCEvaM$6W`8HqLj039|vYbOq4>sKCIfVa}^%zdvA)-1A82kRJDl$TYyvXZV$ zbExV` unnI9A)({#P~FS&sRX%HeUPU`JzXY9Z7^_tv+PMrEY!*>O+7 zLqMq6DY(}F*ak{f%Vo~tj9avuJ2QHNZ9hvlcC#9fZ4FJtmJYSWORTh9UBc-z=DfbC z-7F1bl! JU8XZ z;paGu >usYkWSfb;-wxc9ttaFMT zM@U1>E0NzYEM>~k`!!oXwpiQFNa^+F_EnP0H5* FzUaco<=>7?fVM>P|O;D_5(_u(MAhw2F3nN!MQ~khNA|&f_5@ zitP}XTp7V@jAs@r{g!9iDSU;Gt%<&>&NDvT%v@% $Xdti%w$=V|kepJ7sXq-AS<{si-@>+h+}9t$VrDYrA6Hk6wAyo47}ZVJeQB zwq5aM w_oji?@Y@tL1i?wp9WB&kQ zxz%ZSkMv+QOKYSj@|LViG}NrqDx--P@G&snQoy%-qQ)wUs{Y4fX3uf^*M=`uNjnX4 zLLg-qc;d#De!8v=RqL}(xae?KxaKbGdX93iY=+KNc_or{-f8|*z}EsuAVUnr>25P) zD+bk}6Kn~hY` tI-Jv%w{R^Ib=AXVe^=$Z3l1S8!m7Y$v^t?9y!%37*&0uUxuu-TBR93kx z_tIEW`&}^V5!=}Vvt@c%@7)PN%c9mU%eC7XQ8FT`DIAAF@473taofqOSi5Oqajofz z;4-Tjc{nRZ{#GGtfU$8?(r^gOg0QaLwOSr=Sf%8k9jFZ)NJB2lM9iC{?GQIFRiM=9 z(v{JQgO=FNGmMj#8^T#rTqgO7I$CXZpH$pxlXFSQ!cmfGCYD>nkCvAbWl}m}8&(Y< zHE&BGWXcQ7$V}{RNMeK2Cc1IaDaqsPScA5yfBQojH}7(5( b5G7jXY)HFOS;gY>I<|rdR3TS#eb_>4@neOaO*=Y`2?_v%pK%>b199 zCE6+}_NSvhVwe8_rdOms#@24Bt~^U|>}) }s0luE{RF;O&4QCQOmnrLAM$ zmwRJ4ROJa9#K5qWrv~J(2Of?;c22rlxeH13&g5%yY+SQBYYQsm_yvk Zob)K5r223ahdJIYAeff#3lJDHrh#$^{W>OJB!k$lF2qgW}37j z_J=fGNlmpfZde}7!T9p+wqWjXaFNcKMbA03t?-LmtUaQWv55!*i*-U(`eMKQ%esI6 z0Kdz>{{RmhSJV13JSHyPOUD-$>Fh1C>e eFd%<2xR0nVQezj4tup8Rrr=11Bkw z%thCdq*y}8s}8vdApvYc#5a5`WanohBfeqN75@O{UDN*n{r+A50Qh*~v)!(JUq@X{ zO1(5Ar&3-d;R)_(^TKa$9C4K2l0B)zrE09PZJwfT_aAtv&b%l4(%p}2;|b)HJxl)p z=XY#R{utMn{s&zZ1l 0z1w5_%HlU6Ox&^Ys=H~MuU0oGTlQWfw1PbD97(veCl-#m zE+{2YE9bWa_B?Rep;Khp#E% Auh@2EVW_Dw Du50-44#?nyMpU-U+lEby?1b*F zB;kSUF*9=@anN7>hK?1U0=28z%vb*a>ZonMiS25=A`OHlkBsPTK<4* bf7^M;*e?ZV=#uU1;{_RHL%!}o6R)u!e^j#Ibo_gA)1$96;#?~`DIr-{SFt0vV) zBxKdYk}_^`wn1e;iJR=+XP)MGrq(~Q u-{jN8S zwA$>Lx$(r(b64c I8%L0=)JPUhL$^gsr`EQ&sN1L2 zShTj+C`uJ>lvFHEQHDPkE01-b-e058ReqWud9KLH6Sr($>e`H?pE2Xk7C*qq27iX0 zT(@|Xp~D^R^NtnEE;9AEiAjI8adRIXgR7<{D&UWrF_yPbxk0)xvh9xXkU<$l N!jQ0G`^6^~%HF_*Z0Biq(F*scNW>k=Hn
bsGX?P_eQ7@Jsxd}khC=E&XQFQs?K4~-VZ8mW `xE%6SHE`*w+xT_C8UWfBq`WQvrpJ7to# z$=NrV*(pvq1xj;kz0O6NdN9p{)HNi57BjmS)6ZU3FxT@3oJ#YM>pq0u& z{?LE0R1AK9Pd=w152u)N4@lc*Ge)FnRh^hHj0*Q0;|-d|aravUqvakZor&^CCQZz} zbnXpi^6)L1$ic##ZUzgHSjB}Cs#TjPyLDqjhW8xoA+?cF)}{LQ$QRh8n|ILiPTQ|` zv`ndg*S|%hB$H`>LbpX!+$%e7rrzXk+@^DI+N{zAo)gye7aH`le)GCb{OwVKOX{2c zK2Hz!nlqlNyr%1oFpguHD9O%pa+;1@6HY61u%0uLz@~D@&6^97tmV9bwm~sLF1K9H zdZtZNhhP4wGJtl1ZfE3RDLH>jtRK2IRTWH>V6l=ADUTeZfo8E=0*N4*!BAMhM9zW4 zL;*q^N9ZYlrYXLU4`s-(n7893V%)WT7U8e|04rZHaFfPQ*(4+*cdZ;G0+NWVm=xs_ zh=D-BP!SGBA97|@o0-pDK1m%yDvG?odrsLD`sL~X2UoH(T)Fj)*XwiSPF#nzx}{v# zX-dg+8Sj$DTK%1^H;m_>gmS8lt|`Xtsek!>r7W&LZO%U5lE*7A-~1MFqM&G1`$b%X zF({CGK}1Z6NKq8mGDS>IRXG54di=^FA
4k28!2-Q}6MhUJRp#f4A(ne6F zIRF5iVh*aW=`UNCTdX2Hzc2vu z4<5~u2XOrbk|KgD72 #qIx8^vHAo>Eey%pkeuehSqaLZe{ zUYw^Evi T>Il39<`6Bp3gwZ5TXp^nmApllQ;B% zr*3}LG`gS!=hOuHy S`_w9G| z?a}h#j8Xf;8hflg_MUsy+-uD>=l=&>&`Pow7J7s*A4JAUK6l5lcz(0U6WLH>&npPd zP}@mntpFsv0(LnekutYQ{SuF6EH(~F?<>C1GSNr76Mpu^3p_JO#h%9~d{a>q`tC=a z47lwx&0QT~=2MXf(Q8O*E**{q>SWqEc9*h)VcMjMw3x1x;DUDD^q-*sZ^H`?xC-R_ z5pMsh1<|Bhv$GbOUFlrwry^oQ&`( yC0RbX6Q *J#fzhpk(v`Rp-54;ZPK52KS_Q|F>b`KbKv z3z2BSGt)dtU&uq>-6}%VwSGm8n72rava(wk1vUT-DN!kZrH-$SJ*=&+HbRJ}bbt z&sFh;2ZPVy*;r4J*M!8D^kL3l=w&o`Yi#tBbHnB-X`-UG}MB#XG_QnOXThTw@p=kM*xl|Ko zR01PbBY@b8(Ug8Kge_pZhmM|~`t n)Z&WmZO)&1D2wi(5dnr7v0KlEFP5)8y^41+it9I;p^&=|H{)-g0u &SKabC69UO6 u++4K6k!TMH6oz4>V|L%hz~9q|N`l!GN+_v?GH=mfJ^B(39@TD~9p84x-{g|E zZNy`A*aI}F+g_*ZnN~50?sDVm?{Z%dBs^-MAmiYYOsIrpAJRMe)M_-Kk)7sIK~o*f zZUn nASLK#>G`s zS@Opy0qGUysC4?$2Q&yq%Mq1#CKap-OD`Ar+aRhWQbu1j!Q?8oK>qrR`sr((+L@6Z z*%3vut?aqhs_ym8g_8+PiejM2>#N@XjPyl*!2Vyp?|;-lJtVD8w%hiX-L7-FcOW>2 zyS%i=@;YeZ)Sqv_BSj;sw0 6TX4kUf6i4b|UwN#@&Q40dQk6)%$e@HHcv=zzovMiB+yn|Gle!j{}1VF{B`XZx~ z9~zIs{ijQ+;M~a$5cNz|S4{_Ax6|!Taeu4e5Xvo~mu&+A iEceffnt95n z*Tmh}UMm;P)q_3cAiv!(Xv?0(>Z?!dif^ow&Zc8XiQ+Qyq6azkz-2`R4yZ)j2|Gdz zFK8XTag1qZvDQHV$9FB3V`2dl%e79C{wY%~tTEB|s!}EdzDI9%1DP)Itu`%IgM(aI zWwcsi!Hnuy3&4AmWJZxe-WXe!L7z2Zrb2d~RcPN(vljgZrXnwleut)ynP`Xdc6k{w zx&6Hur~wGLJpl}8>TQ!~B@U)Mf5>(scrWI{Al^{DAhh-s)@WH~Ae|51DU5fOWn{#; zTm}7ElBbtTJkhiHSs|poA1`6jj#`rb!rX0se)aAw&gkeJd+ysw2Wz{Vk90-{DltYd zE!zdf?+!x(Uv;AuHEio_J6F`GF^oF{`gziZ>l`*Xdy7>JgfGY^xE$lOGyZgzQqyeM zH!g&y_K?0*I+Nle&@_k&DvnV~zDXgWNe-QSvFS}g`KXKa)okQoN=>|wq@lS?L|5=b zyQuk(MHaZNm{9h>#jf#wYe~0<&wh((y=y)08T&=0;YOpII-Wm8@L8BkSd$f%5=bLm zbRx8q{Jp|gCs`MoftC!rV?oty0Xm8rI6B>&bSPcFA`0(Bv*VG+skaUpBt!~^~|_S;^jx02A7?L`qCT9S#Fje@8a ztrB~AgnAMTu*K5(H;{Xw-4Qm1;7M|WX&1~>T0vC;_|G#Q_eSed-VFJjMV!s!^f%v; zd=(l $ry_od }zllas(SNv_mn@i)zOYxAiu^*{q0jZJ7D(HP!U9iddi zQB}aP#wV-L8E{B?j28rzt2Hb+11N3?o~+U8pfbOL{e_Yq#yx~jA|A&dT6auF>B~XI zhtFWOa`nduyXHV}Qvty@j*E#i2lLfTRoSXbIQmYPP2M}CJt!K+eLn|G4S}ELXpZ)N z1o}&incE5*4Dy9$1=wz#GoW;m2y4P5d-B`Q#$Kd(R`rreJTUU*vxFnlek3J79=|$f zC$ILqtxB1x6f@zj;qFZt3x*FX^lgc;KAUjnqLscUkRN}|KoYGyj8Aiy^bV%80xv*` z)I~#}<2Fy1vejg)h&g5XY-+($sfC?u-bTn) eC`4^N1m?B-MqbGt ztpwP9s-hr#_k*ONQtH=N4xjpPOyMO=!Sm@_sdbwQ-5H8FBtmjS!eg+Xuhn*?NOy); zEphk#(JO83Vq!*eMOG!JBxj(U$O<5r4Ja;NRiMfPjfPn=lcqI8-9GX-Be@C!VaSz) z!oT@m)PB%j-*01|I16D)E;x@K){5qG_fH5v+r5-=SC{+Hcuz}0yiTP^Q=v7HBk5aQ z4n{2TwRX%_NY7%~)C@UO72r(}w$?^!!5h_R9f1ymv!-y@Ca~@nQsY7Q_s9h1pQyaA z@|~+{>!AvsXgWHX_9bWE+<+Q3NeV?7flG=lU65LMb-hl?J<`uQ--3Y~dlzayc9Pp2 zyu6KFz05hcq96)BeU5B5NJ_kh88Saz_T;;3#Ku4?b7I2yU15wBXWKhD&jhEkJ>hP8 z&h0S5qT|cGxNH!gyF-CFKC2#9x|aiC2IrfqPf;IMZ(80gwc5VfdXS6Tm})s `+Mp&h z29orrWZ4MND$QVw)LkT#;!El;CMyQA@6Aq+?&YXK!!UZ$M~?W+xv#jDcxCF6qv8?2 z7E^l3$*YVGq-AY*#OBC)je=BR3jB!2#3JRn1)KB~`CU3`5iF+D;wj~xmMhgWtJhSh zVma(#GW1-!&yuFvPB30^3seXEAo;9uuCfrI{|hb#(hO3MVwoad0n&$Lj(Sacg5|5( zc$yc*dq)P2Ja>7M{AtpVuN&(rK0d%ov0}TPbpudT0*wl4icuQc)Hk{vqDJ@YnzS qiDT^p|C9jbxIb1 z8xIAx@llacU*c?WG0ADL2`N8Q$PEneInz)Mzyt1Lm+I{@I5KHfEoT+bBGP^1=|dqo z?>BA>$ZdWlbe)H#I^=xl+?nG&zxLcmE-`l6ic>|#@>5{hsZCS}`6_E1_o!Mb&Y=1U za0_3WTrE&DX75EBLc?V=CJXcgERofSNns=#2~c4A8cV}5KqmCc%#PUEi7J98=uNYp zc66 Ep}OdrbY b9)@{wzwB6qf2u@C8{oVz(XTkcnQ z|8`PJy-Jut+i^Z}8lDQxmV*5)^8sjKANivrgKg1VpCr^cGYn=G6L5-#7?OT){N%-< zP0=Oy4(3@Wj?$68D6 b$|2^3W2` zv0?qyhp3nhLlrM+16q)D&!4kB;@DMpXrs|#QCoCAwO5OrTO9?PO>nZBF-*5(y1c5| z+FEL4a0?@`m3fwIgYb-FI=Ry<22S{UPiU d1fBYK_?x(+J_s&NF! zqOe_UtT+Vzqa&bRQL{i^6PAY*fPT5Pnd-eP$XPAi`rGb(D; pWs*h&b z)MAd#yf_Y>i8>cd-I5-0*~6M5b@p^;ky{h;%~jq!JoAs(UxD8eSBAV9<8HUyGEx`^ zu_NodpuH=JCvUv&JSX^tYgtF!lDF`D`}7gcjSuYNweEeF2V#M`Z$g^vL8aveEMPxz zS+Dm}kF5clVyXQFf1%L#EhZ{~w9n2L=o{L8040@aWmdO|&FFb{X<1(8nY&pU>M6sr zN4 3Z&~BW-VTXa&ev=)K408;;BLmH*%YfS zZ^OZdY`~&wiqDP8As$2sRrlw^H;Y)JyXm~+i8{f>G!h21ehoW@nH|Lpg3I-u`hK3( z^*11s+Wf&QLfaPNL;5izAm<^ik-IWpLRuG`L@trIGau+)OX)SPXRw)2qt6==6Wvm< zgi7o<9Xqo#;tB)p_#bbDO!qz@6LNg>8i+Ds6ut_2 1Z+OOKmDMji^0RJUSZMc~ 7ChJwT0RqX%d)LT<#u=_?3!{_c{jwHKNK(CKq>xItP6T_qoI+4tSvQjv z-K+?q >@d1R7MZhT^4RZ (0fm-Y^z2ARC*7n zJhzGU^CZ iajI*JcO1@RtfMLM{;YbHFVAt$PhBRXEcL=c z^OcJ7)UzV916ZXPFr+gIg?an^r2%`$$aEK64X|7<(t(yLE3)j8ssw*OrMgJ$p!a&( zxFe-f$Pev##gaM;@w?dpYy*&Uo!fn5l4E*V)zIlp3M40RX6wi5FP0gMqDwXp*E#2} z*09s9kle`}UG$%gmN^50&T%Kwgs2Mjs?yQ}+9SjxI6r-hz84=-SqSq;mse$&X_nkbA1C0~AL0hXXO8QK)C9R0p%EBqtkkHlpP*(O0Xy=ux;_RNhwaxaNZ9#8eU2A>q=+SDdIY3h(`La^=*fmM2AjBS( za}EUnS=KU)RC3ZRp8pFaOCOTL)4RnMy2F2K|ISd9s%g-AhpBZBJHYnhBKbsKHo`6M zTPBZV%iBxO50a~x&6055V}|UZhA;ynP085WXqQG$piOq)=acao424O{>&i5pTaDMV zk@Sw(jz)^AF6E%EHt0$1QO!VpCKd5Yw>2{}F71T$1gHv*^SXiq<#-};R<2%uEoqc_ zPJMB|nlM#>i`H21PYn9+mX7s=g9ef0@6=KSAQRdI>%pWI!+oMY7cB#N^Sfgp~J0=dn zz#Ctp;s8RcD}uRscB6Z?b@gksBMMAAA5Y6;SYdLqSY#>vTzh1at`tvNQDR?JYx kKqc3L%%tq1LGMhy;f+av^rB!t6GiWAs-5gLVXyD?yr6nP-9!jnp5( zzfi`IBFKY5YH-f4>lgZGYuOO`O$;I_42`U{e5g~}FL@i33D(mlBc8-~S%C5DBIEvX z+i<(216k?^&*!UpH-W#xBs-h~`xj%Co8f=@4GP$gKKmDWbL0-n@+%)78DzGTe_kdy z3%95DYF^&+JECp`S5azNtqN-Aje38u8D+#ct%@Vj)ynXV3aDj+JgmrXcs>GLrU!4u z&WfS1LTQ*$WzO8&k&>c3BzO0WtQ=n2OfqL+q|waUzp&V4>6YA7ve$_o=Yk-d!sam% zADoA96cMBk&mZ-Ur ;m&{Px<3tZZ_0hJ?W;v2hUPPl+2D93OTG2Kr~r-RFUistN_BN z#DLo3CG@UzxV|7E`4$tYc1Q`;sNcOKe_{_#0Z2){qh;8UXN7v;1$!obh*h6~6)cxG z_U`;tL0F%XbksUW(C31sZ_rYiFs4=|YGf3V>=-CUJ(cQ&e?sFOGD0$E%>Zj#Yxdh& ze$~ZLj+vr7Jn%)mtgq?)udYKeg7E5{PUeWRPIjTtQAeQvPL1!-JBx}MB>_F*o}v~Y zIF7O3sH7g9U0f()3peCEE@Pv%*$_Rx+F+DVz3{6Glz?aI2%en8%jIlz$+F2f@|~5m zdfW?ZG~>jDU{_|kcYV&C&^hl>3ZKa>nljw&Y7CjceUIjlyhD36H=N|%5Ui|F`yztD zI_#_+EVGazW;Z-o9BpK}qJ^tkfxSAS*lDxDjEIuu4+j@|n}!W;=vAz^m0igiY#Lh< zqJat1qf>M@JU>xOAZJCE7Aj*{tDdAVP_w}iy-=qPoED)E2kSy*&@7jSOB9}UE3_cd zXTn~mZWDsfDHSS&WR_xTlmk(PXM(_C$Gp`mm`OPbiXlw}n@b7t3SU{tp7B@}XsRDc zZTr}cii8DqDn_O^+9$ ?F(m}q6Fl(G`WB4c29b8_CgHvVm3t$CHPfBKcqCO7GEYjNMpY5l9FL%VEg3|X5W z B@S1}rILmgM;Ry*XZ5?XXyI{5c;vd!$=Wzs99imGvXfRN zn6Xi1d6SWc)0w$&vQvhq#jM3Kgb)kve6 -1p;{ecdUVf~vbcFy zs&uVVl-1H1;5;Z2`Dcz}b_bzt)X|#G%{yUAT&Ku7bw6>vcKb#~wku<#MZJg=GcRh0 zIK>q{p}M%b41C F|)V?*oe8rvuN3(C^3y*WdE zR!kU0d?G_!09F262+<;Q@AXD2hgbW1#>d0}l<#P-BC{BL>%r+1f@b ki!{&PJl>aoFvuvFS7h3STkG27ZxVEb!kIMp;R&g# z;)ftUg|CE6SnW+6F<*Lb7)e8@<3%_2@`S}ewzE;*37bn3>**%C JH+i-zf!SjuD z2Jh%5i^BQ&ix)hC{-j}6v&OP3PN|}j?peE=U77<9+YjST((jq>w>>McPgWytM|Y4? z{9>e01O!Bgv`>W#3uB#r^ E;49bw~d1_VR;LQev*T`HVr=f<4Au=Mfo!lcKIrpyCCy&%d7t5}$Fz zk8#xDV2>CCj!IkMT7#mxV&fs@iOvk-kE3>ukhh4D3k{~p(rrsaVGUYh`7a1^dgR77 z?uuh}^CY&|B9$k?CrQAHV$4|mWe%#IVmd}H%kiz 4YSvYImbyWH_f9iS9NDk0KLPUaJDuQC{_0A>&T!r zZyY6tHjwUoXsQc76}l74v9_f)Pu$22ANY)4Y+IR<++wS6OUI$`>)j<{zwxw1CDYrr zev&K)L}RKaFjr-ew0A4ywUi2)rOa6O;Y=^OoRWcakWs5ZF=;s7E7!%vdtC~ro ;?>wbjJpQW*K@u*Xz9OiKW5erjq{i=9=kR$Hkwgg~<`EtzGM; zBSrU$Ws10$w_!Z&i@VFKMQuJ8$&B$8V_9d<#z})P=Bhpi>MN1QE?3lf^^1>av6g<) z+(~vJ+qEa43|ITgYf+fXR93E>!Rx?lw5?qp#R|dT*pLXWRW^9xv5Qs7V6vo(#5P)j zqr <>=|BwPWB7~IdY1P>rh;qjk z4&>lsa);DsEeWobtkeFoTokW3!F XSD`Vs@lK9o1{V1ky&R6YxIsZ5|IyenUfSI z_Y(IM7lPQmfC4Jrg~!KzNzDylGY>tQ_4p%kf0q^HKXrxg6+ATPv2yqdiX|tm!jQ*B zE)<^9VlX(sS~t{|(T2L(ivt=GWPLZ;M{rPg+~RABwU)B8VC!7rK5=riPWmU KHMb;T1xy^*Ptr^bsE1ccH)=@*`NEJjf6jInVC{eAzOp?nRWn^8tLtev)FsJ%W z(ZD$BujSIXuBE~*i_9$~^QD^soF?{r6^Amon`Le>FNrveMff8@vJ)pox~hsMz@!?e zl=Re;n`(jT!^kVl5y{qgvK`$QOg5K9W8 }^#?1CO zYK}LVMc`VSS=P{3;&pw$M7!HubH~@iJ}x487Tw01eimW3m`<2_l%ZCGaK!0a)}L4K zI;km6@%J>vNl(KWySBPE^R6~zMKL*Drh?l20#KcE1*)>wibf)*4nA2s9PbV@VLKK_ zZ9yF6Z+{C<3|
M9A`V6Ia)(JM=fSxI0=5#qL|T?BQOBA_|yeU*{V-%w<#R zMbkDmJ2gjeXt=^@ZwuMpJ$STH0n(%7RPa1>anMOoJmgPfvOfEJ;E6CU=XX0)Us2Sy z-Tc W8#!Pt}&)w{y zHHxk=sqF@)*se1VGYAV Xwu2-f3K~a@r%Vuhr3{>JyOJ>j%lO4oHNORbO|WE?5lu)fo-MNoj;V%BH1MQ{l3>;zm#3Cf<*$!ig=Pc>lb|>hE0=4sA!buyRm1!WVS_g!2 zPd%9^?*f~0e9%g7FthqJiSg-}dOD9q)Vd1uDNi}G#5#H#D(R7y-GI{9J$5dKy-rVo zxRa*st;`X8fx^ oU93w|RTG*>-(2*eBp;R8S#7*Cn3$3Wq9Nn{Qsdgu<99Tc z@osptOYxC1U5#MiZyTi#$BbP}yej96(T*xZ@51973p%`o2toUYOd}uEmZ0`2if>0u zD`H^V1oaKjw~sg_Btup?oJRb&>#d-qfRFZ;2c16eDyJ^rfbN&|wK&*|at{d=b8RtO z8y~voM%ZsucH9v@*YR-#El$N7yhQ>db}DjIp2hVZ$My8Z<6z@Y9LpmqOX*fUeZ-SY zHkg750)2S7Is$EpA)po<8JGP15}yf5nJf5sx|#tk``hOxr%Ap!;H<;fa1xGD^IJg~ zW?j#sfu+po$QD)ArSY%$szpSx$xgTv2aIsltuK}r?7E@3EIrngl|{{KOPrfJ*4VHb z5D5oy3KT4ZI57~GNdVhhlXrlZ cE8zaGx7|%#@r<#o|AKBt2C`&_&>Ch0GJ0^cR%e*I}e1dQ+uPypyJ&Wp6SsM#r zE35!sAHHL4`J-RgwN0e1QZ4K-6yDAuF|VTfPS@*0*n+r?N@M17eUj?A3+6hOev}@I z)yi|zlh?sXwAEr0zXtWY8CFT18$vh_*Xfz0R2Q1olKa3 W^xugp0pXZ*xgz-a@xG{WQx^ztrPvYty-zn z6qH$Xe`kqiB#9*YNOxxBF9&BFIg$6RkFLJO?y$YdUvh2zz;7g!)ihcI=LV3Ze;uqN zw)$3&-$LZ$4)xN5e|b_A3CXbX7$F6}s?=rH9~-sE*PV&Ej~~5p!CDs{LLi=SN1Qs& zC)YbFg%!F7h*B|S^;OyW6l&ZK)FxdQV|P#NNxK2I>5>RpKI1#iot>4HvlC75PQ@z$ zUzRhE{0yd2AJ#_&Z+mWIoBb9QncRv2^rx}7d82uq{+zc6QnY$0OsU56arm7oC%-l~ z-nY*^V+K~e;^pqF5EalZ_SqEaYsBl}FFiVrWtr)Hy*?J;(iwk^>MD7gW2OX#K@q0W zV5fSq0vC`xzCCXge!0+rKmy;*OhQDf)q!}iQm(%KefcN&TK4(Ga|TJkIMik@Ij+@O zJv{RZy&ch~kQk3Iz2!1=EG>36qhdC2maKizqaGf;Vwuxgg4M#1+;>F}{`?omM+-e4 z3Y-PV6$UnJxP&KoMt6DbEwP!Vx7bphKssB|#|@4ZKXS-RS%@pk(!x_kiZcj!_+^Lz zrsM?a4SR7fH`)rVG+1M&lr?!R>X-39Jh}l)IQvIOnbw$Pm>u98R8{-$7A5_5e`DcQ zWW6@$eqm>=y)@5r)q_=NO*zN6DsodC2eb)A4;br=<{qX6RT;6;GJx(f~e7|2vuL zmFI3XpFzz0^Um^cA&a>UhMML|;TWU%*+eipT-EfvnKRzNDVBdX=zC(&7tFB+zYb>C zXioR4@3w{dEh-i~yb5KhAES)#KX`sK0(`^CWefTXMP**9eC^G2Qp$08rHOEG?-s7e zDIC7MM;J?@+mLR}7|L`yqcI5ik$Vm4+`gT=(E#lC@?bKtYZ{M@tQBD>%))84Db^F* z6cUv4m-GKZfsUu&!lVy7T VE$-~+O9_0P)O*=gO& zJYz8Efr8*Q;#E zdYP9SM43b0%&*dI!PMk%_7ssh4-}MEMcEEV^xWW;N^y4m?qS}kU))JKKwZ<3#E4I? zxba52G;D!9lBoQvoEY+x18BYl!B(Iqx#HQo8fd9qUiF$yvpQr(>jm+P6qr*}X?J6i zb7`_*^ZTzxUZO5aa|f3kWeeC0N#4uXERRfJY_&V7LB z$Tq@aW}j8sG~&4)aTa`rD$BII0=Ftc7M?H*@rbD;Gfz~x3DXYGs{_rirq0dARwvD> zUIxq}BexLf=;P=TW3RpfAn}jrVW@hj=YT9;RE$L@Acb`I$7n!H%8HXFtYReUzf9dk z?ae$(=aI$e=XCM!9j^bK70JQ|S}efXZ_Wpka-LWx5hfyKQt8J>LpGc@SqPE_rH7L> zFcL!yn3Jl})(iV;b+%oD#FIvrfX`be+RAp?YUR{4=K2G|4sx407qcG0mj&js_VZ>*HsYho2aac6kR41XePapjKlY5YEoIc)@`ecDPJG z9@=A?Z5cAzfAz~(CcN?dHW{Ubh|SLAVMIQ9W4E(-wC$*&>JssFidIgnOa~w&+fy@{ zEftdu@3{02GyowVYs{-31=s<==%T1MJeR%3FTtaRda&0z<4zNeV&oCP61(o$1P3=@ z2Q#)2-hP^V{!2J3%Cj=g45d7ec@@4C{t} u?UU{{F;;JlobNO z(QP?yD?`dj_kofPKV4bQ2_rteR8XyCtLb1A7Hx5cSrn7Ys=2FxqctbPT8DDvk^6|u zqO(?2E6GfoGf^7)_TnXNeLE5_zOl1SFk7@X!-sDSKC)Xrn8t1A|Bgm*@KL|oJgOFp z`=QdSmW0!DjswPuqUHoz Yr-&&z8 zJ(ebQ&1+EHZq<~L;#@~BY ji+#>1!z{a2L@iG_Eu3k_+ (BbeWhjgd}Of~VKa_HV8sTR zjJe39OYB1te8mO(6s9X)< $7yICX`&A3s@e`9At1|ds!SrrpUGC%Vjqt6 zDuS#?RK_*KA)NtJ8aujJCwAPx656Y -KPg-3RwerI(aYG3wqDI8)_ytmerlNaZoCo z@hZCgEZc=>lT!SF0L`M{lJQJ|X!-i)7R6Q4ww;pmFq3u@`D%e=7ijV^!p0>l`@K0O zE6X;+K(AD8iq)%jxEA>HhYk;2+G&AYyIEUdS*i;7=CXUHzL!8)iufRYKw0zoZ9tJC z4>T1r#spRW;;XJUVcMD7ahm!vhHA7=goa{UUS)HBagt@*pPs+o*Q>`VsYDI974n|G zQ#5uNb|{`4W%flugw>w?R{jbf!t>Lf!Wt^~7+KRn6)WgY%{?r f@o{ zy38k)M&)BauaLEwR772$-X*Wvt5HV0g+4Fc%XmNMy7HC`&Y_YKv3R88xvJkdG0F5* zacI7*B(yvst3%-ftv81<_?T?2?^5i~wx82#W55o;RF;4M)G6QQ5_7m>*?$