FactoMineR/0000755000176200001440000000000014610700001012226 5ustar liggesusersFactoMineR/NAMESPACE0000644000176200001440000000564214407317227013476 0ustar liggesusersexport(FAMD,AovSum,autoLab,CA,CaGalt,catdes,coeffRV,condes,coord.ellipse,descfreq,dimdesc,DMFA,ellipseCA,estim_ncp,GPA,graph.var,HCPC,HMFA,LinearModel,MCA,meansComp,MFA,PCA,plot.CA,plot.CaGalt,plot.catdes,plot.DMFA,plot.FAMD,plot.GPA,plot.HCPC,plot.HMFA,plot.MCA,plot.meansComp,plot.MFA,plot.PCA,plotellipses,plotGPApartial,plotMFApartial,predict.CA,predict.FAMD,predict.MCA,predict.MFA,predict.PCA,prefpls,print.AovSum,print.CA,print.CaGalt,print.catdes,print.condes,print.FAMD,print.GPA,print.HCPC,print.HMFA,print.LinearModel,print.MCA,print.MFA,print.PCA,reconst,RegBest,simule,svd.triplet,summary.CA,summary.CaGalt,summary.FAMD,summary.MCA,summary.MFA,summary.PCA,tab.disjonctif,tab.disjonctif.prop,textual,write.infile) useDynLib(FactoMineR, disjoMat, disjoVar,disjoMatProp, disjoVarProp, .fixes = "C_") importFrom(stats,aggregate,aov,as.formula,as.hclust,chisq.test,cor,cov,cov.wt,cutree,dhyper,fitted.values,extractAIC,kmeans,lm,na.exclude,na.omit,offset,pchisq,pgamma,pf,phyper,pnorm,predict.lm,printCoefmat,pt,qchisq,qnorm,rect.hclust,rmultinom,rnorm,runif,sd,step,summary.lm,vcov) importFrom(utils,modifyList,flush.console) importFrom(graphics,abline,arrows,barplot,contour,image,layout,legend,lines,locator,par,points,plot,plot.new,rect,strheight,strwidth,text) importFrom(grDevices,colours,colorRampPalette,dev.new,dev.off,rgb,col2rgb,xy.coords,palette,terrain.colors) importFrom(leaps,leaps) importFrom(emmeans,contrast,emmeans) importFrom(multcompView,multcompLetters) importFrom(ggrepel,geom_text_repel) importFrom(ggplot2,aes,aes_string,annotate,arrow,coord_fixed,element_rect,element_text,geom_hline,geom_line,geom_path,geom_point,geom_segment,geom_text,geom_vline,ggplot,ggtitle,labs,margin,unit,scale_color_gradient,scale_color_manual,theme,theme_light,xlab,xlim,ylab,ylim) importFrom(MASS,ginv) importFrom(lattice,xyplot,ltext,llines,lpoints,panel.xyplot,panel.grid,trellis.par.get) importFrom(scatterplot3d,scatterplot3d) importFrom(cluster,agnes) importFrom(flashClust,hclust) importFrom(DT,datatable,formatStyle,styleInterval) S3method(plot, CA) S3method(plot, CaGalt) S3method(plot, catdes) S3method(plot, DMFA) S3method(plot, FAMD) S3method(plot, GPA) S3method(plot, HCPC) S3method(plot, HMFA) S3method(plot, MCA) S3method(plot, meansComp) S3method(plot, MFA) S3method(plot, PCA) S3method(print, AovSum) S3method(print, CA) S3method(print, CaGalt) S3method(print, catdes) S3method(print, condes) S3method(print, dimdesc) S3method(print, FAMD) S3method(print, GPA) S3method(print, HCPC) S3method(print, HMFA) S3method(print, LinearModel) S3method(print, MCA) S3method(print, MFA) S3method(print, PCA) S3method(predict, CA) S3method(predict, FAMD) S3method(predict, LinearModel) S3method(predict, MCA) S3method(predict, MFA) S3method(predict, PCA) S3method(summary, CA) S3method(summary, CaGalt) S3method(summary, FAMD) S3method(summary, MCA) S3method(summary, MFA) S3method(summary, PCA) FactoMineR/README0000644000176200001440000000055611432224603013124 0ustar liggesusers1. Put any C/C++/Fortran code in 'src' 2. If you have compiled code, add a .First.lib() function in 'R' to load the shared library 3. Edit the help file skeletons in 'man' 4. Run R CMD build to create the index files 5. Run R CMD check to check the package 6. Run R CMD build to make the package file Read "Writing R Extensions" for more information. FactoMineR/README.md0000644000176200001440000000065413417407554013537 0ustar liggesusers# FactoMineR You can see the Website dedicated to FactoMineR (link for English version, and for the French version) How do you install the latest version of FactoMineR available on GitHub? ```{r} if (!require("devtools")) install.packages("devtools") library(devtools) install_github("husson/FactoMineR") ```FactoMineR/data/0000755000176200001440000000000014610501665013156 5ustar liggesusersFactoMineR/data/JO.rda0000644000176200001440000000155011432224602014147 0ustar liggesusers Z;o0fh!ѡ Pd) AТA!bb=Il L-F?֑x|E:{[;[ !zIhT{_U?zqآ|w]ު _!]޶a ڱ+j_Pz#{] m: %˂M~s\7HV|F~V|^罺RwO]%ΗaȟquejW^X槬jʶhjj_NVv)YOkߒ-hM~6P:_sNlO]U]q*oez}~Ϻp}NRjhg:/ܧQ7Mmm5]Y\N~SGUm?}4aq.zp.>NEh៹C?$.!oLQ Y*W^? Ein^@tNxAH{4`c.KƧ'sDi^t>SAIs?ޅ3Y~ Ίbs8|A\{1K+ ƒz*iQx#Es{pWLv@o1 CkH1!@aRdbY:E11x>B1g ~fDv;7[1wCAAm 1!bޢ(D)N1kQ'18N0{> bߐlΰ[2xk,o/FactoMineR/data/milk.rda0000644000176200001440000000244512073037325014605 0ustar liggesusersX]hU7MKRZJ?i2g7жSdiMc6( iJ%% ()B|h-XT(<Ba,1LΜ3ι#O>M:pwG#쌔SS+c^o|uǾ߲}5ϬלdW\'#^3zׁMI;(:m%gvn׎vq7cV}neߊ׸*롓RZqKJgeqE=Cbt-zfnRdGwDɼW\)5HU-}ӏxL\/"$z_@kqqB> xb!s)%G>9OobX:߳_Ҿx3g)Bsn/f__kqɼKZ5dW딃k< pz p8WNx|ȯ|cS{dη;޷{k7nKxU]qσ!;3jXu)qzf_G`=|Yoț{y/X^瑷s_V^?^?ol]A9yd%8[!^cߣw@\{8?y%>Qb_ܯV[̾2%7/;ǹ=Y{WԻZWrߝ/E܎su_Ri_nl~C_F~A~qvCw)j]7 )VBUI/{?Uiq3\|\2$iwu~xU#My՘(.0/ + =:J: ߧBkxW"0y8o)|M9q"8bnjOs"JʩzˉyNLNקvT+s|33{znrjj׉J}S똘eHdm®uVɉ\%] ۰wΞ~9 ~C  ̄FactoMineR/data/datalist0000644000176200001440000000020314610501665014701 0ustar liggesusersJO children decathlon footsize geomorphology health hobbies milk mortality poison poison.text poulet senso tea wine FactoMineR/data/tea.rda0000644000176200001440000001112511432224602014407 0ustar liggesusers]Ys^\udKtdI[rȤ,],;ɋj .E@@Qzˏﱳ f_e؝cv }yI4f'mfH ,K׋\>55wz,5$8^ϵZZkys4[=SubӲ{KIVp$Fс೒#,ZcZŬUGq絭.4:T]%"r4^Ձer$,?ɆtMX%=+oyuɼ#ΕdI-'*MW-&a^h|-/ i9oNFNṾOmt#rԯ,h ,~[>&9q:t?dI "u4 fH JsZOI=_.Xp8Zd>Mz_ gIgڄmmIO5Z /4NhpbPyZQ E[V w\pyFƎB쥃05}gk6xP ڋhs-X)'Ϣ6prk^fCpL/O8YX8Z26 mXؑ,p>bO&TkyIw.v).V6RL[Asƅg7œ4ݭ4 +pz{87lFNHJ:Jb H`фJNVkIzt[4<٣;C/aˍkEMͯ+)aJOrXX ELo7Ӽ%u(8A?uxQ(] i-t܁Fc ߁H緙"l$XBеԑ0iwnؗ7-_(A^;9y#u1Ŧ2NcId5T/GԶOm42+[ye&} :}_E{Ƃ΅@ƻGݼ]o?ü] 2_~{`ۗ0 <ޅ9"rh.WoAKǯAU8.k0) .k0c"k 8 .p~xl)0 \yEt;`u*t5Y`%hW&E;p_D89A迂 1wydt?Uy{\C2>з|A-xy.mAۄ` x 6 CüA@Em}k]ZrǷ@ * |>Bq?aƵ-1N^Ue?sF{mvkuIJe 2qsĮ'Vz'௥.>:iK o:Ho&j#/<mXh frB cfn3Ƈ۔+ - z#؂7a*c}]U#6ǭޱ?& NrҿAvлA5P Tw 0U4ެ7"荎@xyܝp)DFi/338Fh.S wwFoW:Yؿvp-ů?=ַ2͆Q8[aՂt/{ѳzV"iViV'/V/_Nk5VhɆ޳kl0b@-O%+eŸ71-F4ccвWGt^z*{Xi񃬸*:LWx7/A|Fsܦ?~PDM"AxиvQi(xn2!8\ XG^!2̣ =19W ƒ%x>+R}p;0G S>X?|`ᰢGsێuŲkC9#o{{/N?X!n?|CRQx(\< Ӹ688!aN7F;Yr{+Auk C_Z˴~MG ث'WFU_j^]8ZM \Fҏo3\G^ cd{$kci/gٳѬO.^]߉Ok<KIRF^o&Xz"ܣW,R[Qgz.k5כLcxjyYY%Bdҟ,\2=W;25<(pڹ7* mVfh<=1f'v`ӓU,T[^Ue,#~렏{J&5r<BU\lwiK VixՃwDRkŜ.Lϸ%3^iƿ*17VNJyhoKl'Y=i*gWc/:ގ[GDDȫjgY{VO2՞*SŬKEd1թ?j+d՘ll5<{0?.p=WmZtNެ =%Lw1bYVOZ}vw9Q/?i%"tlU<ߟtk:g/3^, ㉡j7ʬL.^Z-6qJg̉]MGA骁GˇZ|/K'f\Qkˮq,ccŕ{~oG}>o2p*)snVetF{ mchX`f-U}? 2kcp믘sjx?{l:H:hcjGe42_O?^]EZw9BoL0|KG%ٮXK-^g>TRRxxɒܚ- $4ir.Ghrog񨫦O!JE^-8VbxpY N|]xYΓ-̼Šy h8izZ~F4aQ& } ΗAX4R%*:( l/b]F&&OVKQ vzH WB+|og'ͺaydI!8A^6@~jkOvi6fyj4` jlã@KP{w.~-OF5¬$F wfi8lt񟂵vvſ?tƓ~/Nji,~_7ůR;?ٰo^no^eoD?)ezoqDV\\\Y3I2\&`犐o0ޅFactoMineR/data/children.rda0000644000176200001440000000101714610501665015435 0ustar liggesusers}ߋ1v+U"xȩ/胠_JLnR{_'75d2$YXG,L"X†RU +5cԭxB<#mkĘp rn z/{׉G-EP#ӻG| ΰ 1 'U4"=xr=$23}hA;,#Ԋ`S9Ccc^hNu=Fݟ ^1C!fK{8[3 33pwx}[mzTZlQwR b!W0r%`OK,( LͱwZQ~fs^3t׌Iex4=j M QY8\T (?՛D1LRoX|zxm~MW9W#WSy6'tٸtxGdw-ٝtŃj,Ӯt.}{2y xд4K$84|ı@cn.hr4]L\nHhea>ۉغu T_+Cg1m3W?pXډzҗk1[BH;GDŽku :a<.0}P>OyԔ=ǎNԶo-P'N8aHԸ>*P~_1ssoH(ڀ$A7_77>ZZsouރ=.ihd({F)c5tv#}qr)vbψs}=͉sCs]s? c)JףXjkC7> ?HB#*Cɵqjm'J\ [kURMr|uGC#$~Uc>]G HiAΉRZc㗢17 >ti8Y1杦h7pȺD?r䯥5d~sKӬS*}3sьPk'RzK՘~oWf,ʟkO>t^wOK53'ctZk qq|[v)cT[IE9mCK'G[[:e[cwjQc~SH%ר'-,{ s?_=l sp>Ph!f1f-{26+q&(m[.9C{i& I2t 7gie0v@ƴzE5`ܽk pq<0jC|S^6Ԯ Lq ̫+0rQ9# ;S?jkC\׆/\i]iL8e_^hc yUzJh`l7%ަȕsǏC3VxҴ5ԮIiCJRscO?H ۗoFv{F Nڛ˾=\eUc!yЎ5>"7('b[c C h[F&/29ZpLy 1/,j<)i\4}F͹/9d"۲1|c9S?/eo#cӺI<\EE\c㉐q 9M Ĵs U Ժ3')Eb_o9Sx:WHYǖ睦>oX;Jj@|m|MHmkk'R:f9%v.04MԺ1eʜo?I;)uK)סs)N)̅ S_8v ӒcDgyZ.meHהJTX{y*M;kCr5RXwnɓk?J>4(.=.}9@z IOSV!gwSHy7l{O>i>=P /\v{G>Y\b\G\~R3o{G\/8Rz9\mTM+v_M?)mL?^32u_ 1q4mOs}s1bB5Zښ>LN~q|@6kdq>P:3 9ڣ}e㐯!M?.be]MBdxy 1.HvLg6_ҼW6^V2_Ph-jfL^j̓{8l1Y,R5Pw\HeM0$=$R}sTڿHWrġֵ^Ei?=clbǙSk"?;or5~;W!0ļN r2}|O3Te:w1>c9{k']px8ڼ㰡(Rګ1ll]`J40z9ԯ1/k'RRqbywr]i^T}ޠ^/|vN?K79is(:f^>J;>&V&M&>Gm fnCҗC^g5-%crLb~hCoO1vbm1b y)aMv<5ɑk4?McbrU>Y\qJj)7u\,<36s椹re |Ns5=QJj%wPgZ\&|tTv+ጉC`E7 ? r18pk3̘9^1ϝEC; `Lqxs<9ڒ^~Hv?{/7?\SJ&缓鹺}"`t IVn͖/%rނϚK wtJ/FT TG9tV^ҏKW;+qBwnilhdAccscmBCkcNA-9!:+j7ГX 7 Mv<G֪]q1{YcjJCI4gn8d~O҃&C̻b_s&1Hh]:̵ҧuE\s\}YxB)mH{+^"s)}_^wܺ)2{M~ɵ 㜑?Cͧq|cN剖ʇwE=HMi~&PR]m#|h)_)oi4@_#-;M-[)7xw#UԴ=0{S9//\v$Yr!f+!xM4t\NrYKE5VW ر@ȳ!sRz7$b:uݧGNhcbhc71>e(1H=w5&]s9J;iѡL S v>\F19S0<#t=~VN2:onicNs)LǥjNrЮoq5SCj;C<@ Z>~BiO]G>Դ^6U%ߑډԾ$tC0xcL9zhcc`ȵ)_}fʾsvSTQ|1߳k)\,8#wwJwf8?QF>7Oq%C9Ma3 5 c/Ꟛ\ ;=J5y{sq7C Oм]<$1]NOͿlQB)hΛ߂hP[qM|Qpv${rCJ߲ik?X9(]DŽlK<#Gy'NN0.a}lAP?lRCW6.ofw|+s;"Ѯw| Y/wQwOi~}y\X9^$H?ի˔~kh^nH:ꏸr?}E!->mˆ3r|q~ίdoߧĂIG!^ND·7p\gFW3+_Fm?@cw:edm!MN\~]zBGK晋f5`{ŗ5J!bUz1e4mwS;~CC1](c7r.'r8}ǀض3g;z(~CpaițӖkl'R!񹱹o;]dM\vMWZtMHCW߸*Ahߥ+W}<ל/˖L;A$g7H<=oH<;0v{|۸96׆έk ?O>E:\; oZ7qy3HOWk1fТq }#'7ȹ-WvܚCϭN3HBk7yb{jG]3l~r/.5ə+ѺʳơkH\WjΟ65CT'8_elNO]/Ajj_)] / gl}h׃4eE}s]2IyZSBL\zMr !L[rយpNUR_$oM݊ k˗/9k'DAXnRډ<ң4=6bR}_|igCRmX!eWƚG8AS i\5ABBqYJ_i9j\icw97WEߓLE,b\]v5aGyaIc vmAK/Vhㄺ1zA859غ v:Ҷ%1\1aȾ4gBNbL*e~(v siF8:!p6'~Cűs\~LL?կ9)Qj/l'cD1?c®;I1rpPRŬѺe=_~=N1^g&=!>g#qg]@\sw@{chѹ7\+)93sCh?])=>x> o{&̝1$3Lu4=ʍpgNqk᜽OJ03O9hZ{+W@iTT24y5s\5;iϏ!SͳصܺECG03dKg rR2OZWZ}rOX]k`P{5~( גJ}+kJ귖[c5:>.܎!FγkC/R)L9bHըHyҳ)'wJzh+^R ItZYyK)뾏N4z5: 9 2d)ݏ[5IiQ%jN38v}t^:;JTcOȋ}^k^/<6Z ;D[?;'OȏZJאk~ԗC/"{v.:(F[>ןXZ'8 ]IyBL}Cé/<&{ˉ1aOWރP+j-5v=cb)wʲ׀cU+j?LP?~"4di~.w>LgCucly[>rEJ~`DNmCļw-:o9ߗ yhtVC{R;AקKg/tb籇 ٷέgNicg\]Ds$c9Q=9;!g䜇\Ԙ@9XK5+}?[Wp9N6p3OPyg$.a:_>fnj\sͅTFgͷy]4_@Rz7gN P;LmeSҜ/ěxJjHab<:Fh5ߎhjFJ1.'9=gt<8#©<8jT\?/9SqG8 ?W 9KJKKגN5:ŗ7wdW>*7}:ٿ'%W.?#iz*==1#Żͽ ۽5ᏻj?4CEsxnakKڛf7ۛۻ{n~> ܽAy =n}׏O&͋o6}x׋2铹}ͭ davӓ~{B}|n7o?tg3"͍nwOqCa(?<_mn(/~e~\Q;뻝Qp^|=$o^e7ݯMEOnz39 Kç^}mo-]=cw{ҺKbx8륞7p_|9܇.>nz7o6ֶ?~~/>m?|~*a_q<}{{ zŜ?Ԑx|&d bO&o\ݗ7jbDy;/wojԶno??ckK˟o~ق?W½tjpywxxi~<#'zb6>l:\z7_mrk_ ?uL_z˾~~7q»a.wL}H9{wod;zm=.&}vӻ&'hc'g֙ }к}]޲\޲-{z˞޲2?.mpeklm+?Kˢ>h]Znۥvi]Znۥ嶴ܖ=Տ\6 ^`mey[ټlV6o+fhe3ZA]Z-e,Vbe,嶲Vr[[kbmY-ݵ%֖XkXkVokZVn[귵mR[*JmR[*JmW귵m~۵fUݮ-7֪][Vz Zo-ֲh{ݏ+^VVVVVVNgmYtv:k;NgmմfY3l5Eu֢:kQZTg-YEu֢:kQZTgͨfY3lEu֢:kQZTgͨ3j-ֲh-ֲ,β,ꬳ:˭:˭:rܮ,+rܮ,+rܮ-kvek֕YWf]ۚumkֵY׶f]ۚu׬ž+!B!gE8%^k i6G /!-;_AVȿmeu |/%KKKK+++W C٭@ _5]x^-jW Zvo|;Yk5| vY~`?k5lf0Y [ ZyZva+C |m i&[l;l[;l:(ʫtP^ԁ_/u:KR_ԁ/u:(l W?n!A \Aޯ5x]ku lXhy+!B6t.-%Kh./]^Bvy %Kh.^Ku .%ϗo F= FactoMineR/data/poison.text.rda0000644000176200001440000000153514610501665016144 0ustar liggesusersWMS0ulJ[ECCpS;B :m5U鏧]Iq҃d}i˲V\'g29 y-ɕS|;7a.ȓ.JV"I('lyR5Mu n#y3_ڷKXM 4XJO}M'T<yd_I6ϫ&Y|$iNpZm EwYe.E6* D5S?oL 1ժ]&B\ Xt-2 g Iʂ_nO'Q/ֺ0@tAAqE<+ l#K?F(a1 ujEu:%Z<|"Hh jpuʴNdHub'#zWj'`^#2FBX(y` #v/R݃l7ƙ) LT4V}*K 1rQv G`ʡRöqMS-&@͇tpӁ; DvX Z=CkLYМsH3ƢU=>3 ZŃ7 FactoMineR/data/decathlon.rda0000644000176200001440000000375611432224602015612 0ustar liggesusersXkl[g>M,Iwi&N:&OZK)9N|9oӬ[5Nčs*T~2i* mݤIh&4m1@ MRy?wқ/|dAMz~?4m+vj՜O7L4aD<=lD.]Y%#:x}t~nǮyy/7aܑ L#R~҈\WX.ܝm#?Fg,9Wy+zF[FĂ\;F炏yb'rv0Ǎ+r6G෬w>'xSx-ahp1 αrF#Xdǡg~? 14zhyCaFp.omys弍^u47F>E;؅gǠ?e=~訋wX$L aC]t = b#ӿ41a'S~!߱u(a_oF yΧv~O#>$)exO~Mys}(<5`OzA]kO3nk%j^!^ w ?pS||z^gvce;#79^u^i|6^Ӽ7K'>51L}Lԭ 1 :W4WNL]fQCDW`П|5̗}q+=ē9NK?_rIŤ/k u:[؝~я0.r832oT9&<Ccq!p%Nҁv?Y7'N[.+kKF~S|nBf_dKIc|2i;#}2!_>Ҩ$HI?W֗L??oRT۾ssd?,<|kUr]0'E0Qo}a{u΅orOVѷK^E.9eGE]zyVdFƥt\s#G0g<0ˡOg\r?>>+䑗Xs1+z,pџ9.ܽ! 3OX@_cSSx'u޻zi,޻?a>q.{{|{F=s{q/xxIѻWg|g9O}`!wϽ9~xb]ϳ_ob;xG(-xjUn ^{n"DCDAjA n% hCt>"ѓD_$Z! Q脦m'"HMKD-"qD_'(N4Et;Q42QoJl1Aղs>E\ЯGbBl,fX'\PfSb{˹D*/ `gwDURXSEa($ʧTbY 0IlfrBK@0[Z.gb ޹| bo)-aMoT׷;P8NM@*vz`Yu|c7Y-ZW[k"ش-KFծW:qE%}__svcݑSo mKp6|>O7EhU7Rs궳ZsrmRYMoZ܄ο''5NFactoMineR/data/poison.rda0000644000176200001440000000150714610501665015160 0ustar liggesusersW]S@ݦm*#|d`}@P7'ۆIʟG7ͽ'iGܛ{dOn&'gyf ! jhJ2_CDWa0 B47Փr$gW9ޑϤŭRN'F14ugr|$_;!Zt|OxNs&Nn"xBu9oCd?Gy9a4WWz4Z.OyE\f.G<nFCo`\e*WJ?2{ ~|Xs+7DLw 0.'fCqa*TqEVP2Ɵ9G ӈ&G@];W5l (uZL|m-iJu]U(U| GA ȬYVV KѬ<zxtREٺUQ>ueUˣ=v5 43/r-WnFQ_]pwOaU{+^jG*jSkqŪ*U UQ.uuUػSk9E-z8olHE4SYuy{fW?nFEUU3A{lrcoiK`s0N>p9͓#|/.ycO~=ӝcv1cҫ']pwxqtxRD#yE$>'G7 m%Ome{ 0mY@6 8,pXa68lpa 68p8p8p8p >P/( FactoMineR/data/mortality.rda0000644000176200001440000000677611710531011015674 0ustar liggesusers Yyeﯻ+p1@BBMv@. @RHAޞN%K)bQ-KP) ERJшh!ޢVQ zĭLKw]wfF{.4M^nM(P0:T 怖^*6;u2 Ƀ^@B#M9/'zc}O?_yh @~8q&h;h(u>6U{[FjN9f9$wtkv}KvTa~upa٠XFwA|à%6 ׈ dw%FO|}qCuh " ~Ϳ4r7:K@'%>Gփ"=|?+==^c~IVA!_o!:@2AºparnЧ@r| ۋpncfkǸZC!\?M|Mx=۪-ؖKl tQ8cx"MC#}M>xFr"݀U9/e}gRCbqލX0rW>^=aiEk~0dc*+Q Cuc>_?*'|m$<ԁZәz?jyaq0z(^E}ù {}i{Ioii߁Oxv.ߠn Xs~1C:FSOV_d#w k~τQq]\C E/sb\vc<@N⩠|TXoF ΁/p|%A]ou3рEb[\aۜWTtؠG˄s9@C X_Ƶ̈́;䫝Oz8/· 6ִhp(py)j%cۤCW/A9xS_zo-+s5{u4)P-U'xX{u#asZ?{ZVyޏo*< 2$sЇtQ# P 82ї ˏXȇېP|^a֣Q]ͷ/{IϴGo3Ay= {]sQΧ^JTԋW45ُڃrI9`-x(_(Q~(:"tȞ~!O32_8ʙ';y~sr͋}9DqLSm]|FwPYڳ:?L;__ Eу0pȾPD[֌ƩWɖ+EAuc(}!Ki4ӄ tMU9|f²6q짹p'a*Mok<.iv;!6׍2ߜ1>P1ܣh4/Yg?X:$v_!kc?) =zq:K&1OG^7%O^Y'cΖ8f<]唯:_iN~DxW~QN3/ѫ2%fP /QiǠW\i~nJjcƓz_f2@ A d}7=lf>EA 2Zێʂ㯀[ށ uQUt%.fX7y2ާYWlrrOi0:b5wkTg0^Q|4th%; @ZZMb+8%|ob|~[?+^ Vΰx bƛ_.C,QiʔWi>]og;G$ׇd/ԨΕŞcэUU7tln^8V^wU7uln^kL/x#?5xRV$SS`|۬rpk\fK7pPM ߲I13l^ "U8Aߎ *R,vTTXp!"NSlqyh<̛7 &WI[)Ԯn}4TS,4]eZ%Įq4P ?*4 悈O}"B¯QgȓX/]lĹrthN) )||S_R_Q>p.FLw~oZS>⨳S8}C3 9)}Gs~YO]}v~A|5y=9ŷ+"N\#G|$a B׈>NWA]lI=*k{p"]6F\ Y讈U  z({LT5-uiU5K[sSgh~V-}FactoMineR/data/wine.rda0000644000176200001440000000431411432224602014602 0ustar liggesusers }X $Ww$k0!" BIvdل dtmjgC$HADAE$C4A "!! ofzwέkf^߽w'+'*eٖ,ۉ?];F9r_ܣӿd3f#s9Coli?XDUfAt t߿=CV)*ǡ+~&#˲ o1e/boC `%^;@;ۘQ q(Kƒ%7zeU|r{Kk_'gTa_|DCXGYƸ<| 礽}J%Tr/UJF?;Ux'>}NWG}@ R һT? 7W9DNu,`YL?-Uovs'vF9w+Uy?-)79vUŴxrNKpzSΥ#V5UxpA[=5ʿxro9Vnamߝ/Z>38of{jޖ7ȟT9?9z_^{;KR"W; 'Y9N7 ϤMmo+KջW7ܝ 6agGU^wd;/kϮv7X.ulUO`"Tch`?^77Ơθ8B)x ~ q%qWCXQ<@[VvU J Q Oc/OiVu} p8k}O˥d6/EG=Jɮ*j9u]/(v9bN=C.;'zȿ%bz9Nxy%߇SBST~da<1weWE?ɛf-}J>lk&#咨EE-~Ɔ]$_hPr*@y/cos*1ĐY 3.*9C Q~mo%޹S_ބ:Ȼj.xyMڻ&u7?.S>./5qb}51;n~"|%_ɫ%{ qKyퟪ Rg{!޸Qe=_+z)|&0yLzٗv>ګJ?`>2|uUsAl{pU,sƹpc 6;F?yug':8'_R'/(%|"Q8qF/r_+/yw7q =P쌼Qɴ/Ks#e7_-'EiavOd^q u9,B7vE]y_'xA-摂y|)g7Ǹg3 wX}59/yy4(y|iwډgooՈụ:ef؝uS?oıG*!ϸWU~H;sS=/|M=cw g_ y/B(WhP;ӓKJ=k}5Mg7<DWܽp8YNv텹=/ ?lεQ1,#\ CyA.H-ELu2Q+] za&m+.|2;qW%fLJ,gjsWlvj-C°jͼQ/HӧhXŃ~Xompc]QxjrgM5'Ǜw;gZZG}jy~82켌?uu|-5;a0ϷKũ}kq:}e+Ql&K?FactoMineR/data/hobbies.rda0000644000176200001440000023602211726150422015262 0ustar liggesusers ݎeŷ嗕UEHH-~?Fl%$>T1~cFXss|E?O_>~z~χ?/y}7OON×g:fyIw=1w'z5?9Lp밮ZJtZd^cYajLJt{8<[Ki*(];ъUT.^UZs\pܬj#P~ FT3J.7Tgt^ ԯN+8O%=(ާϔ{gŷeZUxh^R*NVTuԼN|PNy"}$OQeN6}L1'{ƧF;>(ԋNItw=;^gD\aB!;QzRK7dwc6jM~f5M˓Lsc+\>\ޓZvH WWǎ7]Cҷies+D V'GoZWW:#~]O c9iQϭP خjz|G=焎5嗴WTNST]Nǩ6OߔWBqw_N;ΜO(']KT7yړ҆֜"e gTo.K::h?j߮.qr$ѾQ']' CaAHQq=9*;w'ŷiDIt봓D1[S՛hy0y2BGyHqc?^GW:~ʼnֺ֡މ]RLv:veW3էOI~qN$w˦=$*>_Z׻yF*JIwܐiL:݇O<}.3\.L#Y%Iޑ)>wI;54CxXT#D:3F"IJ7 o}=i}‡c16/0^d]x }GKzLav](6 䥪j&K"5d+IF崔Aqd7&w$xT7'}>}HOzqْMrfIɅ'tLJ'%k)ʛۇx'#{[gUn rA^{:_TR'ӵvrVIӝ1zk g4vV]^wT)/:)'TO'^aҳRI9LH kO3gE |:'%=̥K'Z䝫[qH3;[2nG &L=G|t#qn,ɥ.U+yTm&WB!~VuuD[}&W5&LQHtDftn{DɼTOwkqLt4j*Mx\t=Zn?_; wү>q|S{UT: )Yq4KC0&'vڢ%5%ڙ4Hh0/jo%rws8)+V^!=wUΕwi4w; ~y2ww] W /W˧o߿~^O˧?>~2V;l%x }$|>BsZىd]}"XZkw܉(Ճps"WGZwZ[j/j7u|lZകh7]ӳ1v37Mis>C?9sQڹtj>;'RYuu$y=ɼT)^+}INS+ %=^(ѽ@I0H!kuLj8p>TT:"<UvyjM2OCq .6Hp0O2WiN ̈́=W{s.LsoIM)D{iN>.>I+w`D!]IױN ՞\''Y-Zcz~L4ԝj\͎Lӹ+]>;._&z8`gɼY4ɓSzgH<>$ȹ{Wv\Vgt&|S9?aWq7.9I]“)y5oc/]gd^KWNjMz9CqKq%=S)  ^S\7U-D;gf\6N2]q4 {҇MaUڟ.=SλY@oZicڝ;'1͉)fSArvz`E3|] in]XN:\O_e C߽ͣ௼>GO΋3ӉވV WO4f;T n>N7J{JJO//:×_O˧?^~MT#Td-⍤5FcɎW7FɎTOݣ0jKe`ճLpp'Z$z!{) ~T]tF|qha֍Ss;T$ߧw gKߤ3&ign#W}ǵ՝>ӵ^ZN j]߸5]z$>qv9t8z חQODj ɸNiM5N_N7zV6wFRϨuifbLIrI6 G4uTM8_W^{Ƹ.S(^k]eKǵˋD ^F}NxtP$ӼXH֮+C W1ngٮ2>Ŝj0ՊN5jMw5Q̩6Ow 6.wvd-[{ҳÛ栚v^R ߭Z_=;OzRl!MNB3AfGNt 8%yD1֝eȔ3Do.;W[pbLפcHOG:t4InPwݽ^)c8\u5niR޺WC7|&}u{nSzR JT#nɣڣ!:P\ Noj$nT.Gi?:O)]/I.oާcک6&5&N?N4yIib5$:Lt2qj^r>aAqr3k2.͖dg}Mjp8jz!}/W:"}i.k.M),h;#8}7}VZVzp#!HV䂪5'ՒN[7aA|t2d;ŸBTN|@Pͨ1IN$pxU|'L{V{( !zO}F{R{ ~׮wIgVtuQ$!;^Ԝ>Kפ{!~&߹:HxqN4?e). I'9KaLՒªӂ+u]2v~]ݸռ$ OrFt#]KKuGRG\|I3%: (\]o[zMJ; ڔTGc2yVi8IdoQ_D'N;d-VR su+):O8;U/N.kʑjqQZjMpQ:v^98>.'ܾDW&EW'ۄ oڷʰKkoknM7Eq4M|4xpF9LFBHHǟSzڕ~o&x.NNtd>ɻ).:Β cTTlu;~oWzeҼZyӌUyȭA2iHR>s9 &89N|&R_8?:;]8V5OU7;mbAyW7d IPp"H^.?|~_#>W?o鏗<=}i*;,H>v'w}ޝ>_ʼnRN"ZpS}'hϪ6-Zg7EiU9RIiiOiatzpX(MQ̓|\vRLIݝ!kw]]>OWV:"K7隄3fTu&ZQs'Ņs{+'xV{3[crFQ.TMhԞ>)Ϋާ!O>՞grLL}p=T;I'cnMzwR3$ljtX*['ML5ΧDq ;{Z&pΝ3Ct*7&ɏDԒI8L4bjX1JWO}GrJ+^vr)EkpxwS_'uӱT\iV|~YS ~O|WpwZGNU;m5 $&GNNYatJӽ9?hS%5W!Q\?u]t=ل 6qd‚=w{L{剞ũ')W陾/8S LGI9Ͳ]|GL{Ot }L2y\.թq$9O``9yNS=wxԍ%`6a>\IjU;w/¥Z䙭$#?g¤=_z׭sfCᘞ]47O辫N|ܺ]J$s;^='5&kNn_;WOg'n\I-$D_Z.Uoʧ ;p>&Z}79\N_ޮ' D$y佫IqWHAHLivSu;|;>Vi/S;/X JvÁb[ո- AʫsG/[qIq>`E./tzODkpR:>W٘H=̜'v(V_qͮ?'K9W^{=MjqvAsoL99;'8N֠UcS?9\Q Tg.StwS>v"w'5t^jdMTzKH%O$UG껣/ʍY4RNxRDpht-Agu>?un׉ߝ^:G3%]:W8qtL2fΩͪDINNK4CwgT?/{2J$::I+ ~TC ݦX)~Od*=p>$w'M])o)TSW+L=oK]Q=:lT/JN-ɓ5$cH >6]C3JR}g|~_#>W?o鏗<=}{ug<'-ՍQ"kuvr8 Pt\zjjN =޻!ZU^ 57'ՕPq1}GC|#=&s ' Ngd^ZCw׳`76Q ?NO}ѩ'n-t/q1eeM7jWgNJi=;ZkQԙfL m\OgG7hYrI£Ed=KZ3Gv8dcL;UƩԺ(twU~HvODK[aڣæ=9\ݔt?͂N=ݺJOJ۫5GU.7'2AN λFI"^>&8:N|.ճԩNF\^t%8LY՟?Ai4իU:Tj\aNuO:GG0Q~I<\rSe)[_wGISݑ:GMv`G񡸒N#ΗO3ѩ8`g]v$%LMwW3+_;?Yw!HmR9.:d4T_v׹Ss1'0"%g=\h9T7).OO{QQ]OiM=z+VXu>Yq^ӟĉGtq,Mǝ3|7~vh s Rk?՞¨.DROSlUcd]fA_OdoU*]:L;}jW;]O39ӝ%U]OO7Os;)8 ^]8lF^HtL1_n^T 7CGkM2έ*X=WkSC2JtOtN;=&O ӕw%:r5;,TFNx#XHKVefec_%9ܻNK>E0w~hݚ`r!9KϩgsWퟞ{N/.OȹJ1Q9tzU0M9V} 'V&9Ot>LI\&zJq8jNRZUZȚ)6GN;3:Vi;ՈY7OOrC$w}*v|J$99ϴ+}Ruz$pW2hX`0Uխ$8;<`.D? LN{n Vv|GsTy֤"G4d @vW%WhN?ŹӊSձ+DI #pyrR8֗&YGx%&:=tZM֧D v|O4|鲻Ө^һ2zjf׏;GyBjs%S#&=tEsL9$kʃUq:nOC4jQ߅{iT4&5ӜPܙԝE*W& Nu/}uć//ǟ~חO߇H[qqIj_@sPlG4:w]wi] o_4MNRM^']OJ#3Ѽe$ wW{v=!Cij@aqz9O#vPk+o'ޠz5O%~QSjLϊNC*w+-\ fs/9D4g6dM#N#±ӭO1R8;M/98ߤFɈtNIoI?T#/RS26 Yz8eңۿHI*kXU#w9Öda7ť4xw3/.;'n'Uv$S(c7^`i&&^HGIحIIsRae[G9q:r}UPnV{*v6\Ļݣ#8ow\R9$ÈI ɘCËdQ}vH=ŽnuqW8޺u\*N;>(DWǔvSe/0$p0pcH9muwt 'Iv%{uUu{utw^P\:,H:މhݮDnܴN{ 85'xJD7;z':/|RPZW|:]8/7ѮËTS]+L& 3х*Y/|@jZt: KtEk]Ciգޭ=g2gr$4oSݞMH$߭iG4H jI'X\H8W^&<)5g| pqBqZ]`ptFzJً=j~RfG4).;5tYS*n|#UÔfՔʕncӮ.i-Tc ŃR1C8Qu?q^"xJS(\*8yO˳*7zuć//ǟ~חOE*,pPT]݉>&~uU_._u}җ]q8)\P48tQO:)%>Pk&I$XuCzWvx螴O-Tg D)_I^įKgPcOgj e]od_7I1NMq[W՟9}UO.K'3Z/548_QR-w&yd;9ʑtLr^OKrӍISpqcwxX4[~LMk'rM3p7gZvzR{tOR\ "YN0!>Nۋt5=hDT/ ёiӵ;Vpjur{%vtrI#{v=L~!9ыCiӓ5ԟJI] qS&xL}tjpЇ5C0[hjL|ptJ==}G3h'CWů;iXAqUZNr$ hlgk;rOBT VjZKLye pZj])IuG_.ۦVPDDSMuPϫwzvjp槼$&*Ƀ8ݻۿFG40MKfD'3OiԪ8+m<(g[D5'u,: ~.SL{U)Mu\v\iGqՍUq!!9>Tm>ōQ;,;Q&:M\$^%S.Ht][nFWC'iÈv89}R/9M]Kzi{ꏄ?;yaJ4vpZ 8vN)>HS8PmN]qm?_>?=_^|?˯/xyw@Y~WAaSW іu];}GH}rO<*Jҿ6яL1\,pYHNRmL&HxHAAeCxqS%}~j}}ڇRo%Ѵ#fɋ;)jwf=k[F¥N+dM isd+GSONoNW/A}tI!U/T#3gćd ZKrhNa|2Ԩ8c׮5N}O{u$M?1j[iOWg5қ뫛 s2b봨js(RuprVwTN( nCWK?zIN  W==Kn%N.CWqku>L7fN]}N'|[}xPVڦ$v+ n WѴCJxP{Cz/5C~O渺n^IkU[4EwjL}DxRˤ?;6j TND]/6nTF¼ӗAꦚ"*)_ Yq]UO]һӫZ'qH}FW(_n|Uã0R̜idoS%?ok1כ4wUWȎ$wQ~:lTS]ONo ?;Kra@j/eƻ\ΫN GO+#YhN2[Kp :VsHU>ǃ2Ci=yGW:qVZ"^ww8w&>vz0&~t:vwj=·ZL&RT ^L42xTarq5PiIN`xL1SYa:rM4%MWޜTwʇDj廯uć//ǟ~חOMM7{]]O5ȸsGYdCoҷRaq꥘uzM8&>*ިwooڳӲ-щx{OU6%xtH}aUeҌÞr|ݍ%zqة;t}hBxPzT>tz!w%&]Z$k9O+|ڈ]4'hn<}cW?DTZt쉵h߉]QMP;prfT?._R? ׊ND#$vW:$u* I ;rMƓq ʽ [%7Lz#+ov:t; {⭎ORW[NU<'s:w6IK;½{DNJiDC*/n?5MwsEe#DI D;UڇGT: R8j ŗ/h8sP~ TgDN+; 8< qS\WWyKtFu8S{)UT׮fiG7n`HRܩ:{iDZ%+\TO#EM18ߪǏx[3ՙg 7/եZe{1#Cy.azEէ8I55rttj!ԣzu>wNDAǵ1 _=ΔʯǛ4'?/">ًjcU_չBr%R']o7g:/}S_N7+mZi.Td/SA'O_w4ZN}**1:NOT?#U+R'хҶioM0y])n^)&ۊ7ųI~RKeCp{׏yucKaD3`yJSX) {Nqv^!*zvv'r5WVT?W]m>]cj$vSTS/N/'+FqKx!<҇r1EiT'w@IzMkN*4S'*L:u>ZaxS&yEM5M=ryptqYps;|y?/|7OOkt+iΐݬ]iB#2Ʌn<ݫ!O?39Wi]VI'@/L4n 7weGj,5NM?j#uM;Y9{8ֺ[wʼnuݽՔt'Io) ^ulr{7:LOax Sy39vyeDoN3lG}]zu^O/wiN+wNK^s#83tgΐ/5v3\OGKkNݵSv}R{{]79fHJw6^w< ;Lj9xiӻNmw;{eG]^uk{5WMiKa<禘պ:zpYO1uL>_2Q~J}zNnKjLƩW95oWsD?NjLwg[ﰫWS wIk>w]W 4pw9rwݧIQ >$/N2'N3pڇ$>;shwg] U&n)I"ܸvu=cKNg$Nx Or<~+]tt|>=ϔ+θ)g,!5Ϯ7l̄{tݷvODjqA{qiv'R>OJ2hh`krtx#=i^ []ɝÊ/=ӉwwT 7/u':Mwz9W9y>{z1);;Na9_D{HI}4p*wo}8sGZND$=wݼ[7~ʼn{IX{ɎGֲsο>xv?NdNqdISLv=wR }zwOkZ#'J g&;Ms07>վlL`ssIWgjIvWsS>{h}'y3}.񃫑JT'ONsdzMy39'ھcͻ0=WNGrߣtS|/}uć//ǟ~חOԚ5;~߉i%k?bw=M%AN6-h=𰫫)g1w>>=#:Z';O&W|Z)~Z';\>3|6~47'74Iww;u5NfdONi1Ń1W=vvcwq{;G'95͟n#wMӻ89d}._OԼn; rVz.SwLk:]Iܣ9uNrZH}Ly.ߔϝ`;gO矜sI X}v'\u &'svOOu'Z'< xݳ-pdݻVXS؜&wd=zkњ7waw'y;q~8MU;IuI~k~iwqH/'~&?Tw'vg[aԣ==s}[^xVޏfgL[=S{ʋS5'#Ԛd[uz!G;]}Y'v{uKV{]w<{N8dn"oWmĝV&x1;7o{;ڭQAoƟAo{g 'ZKރOƤ#~_ 7r|Osǿk>Tv鿇Mt]dix~khΡOy6WϣyoooU[2~ד$Yuz܉o˺|_~{__>~1VZcq\=wdϣi=o}LUPG6Ͷ/nno [6>qǙ;5ɺO9w-P{8ϟyz9ԝcLI5pu&u=v;k9^#~G8Ynޑ TW;8[=H_-=7D_]9#sNw>-~gr's5w#>YKqw=7G?&^~pɼ霻ɏ8}twÝN3OqxμSZWEm7wkf}+ޓ:&ZI;=]cݼ.3O~iw ~>;<(;,3j3:_wxLOgzpwO}D_dIӚoBDקxi}N7f)_='gt2_?,O'2NPNRNi=$/I6Ojf ޒ>)O'?+1wzL1'x:h}9÷wgVLf[s2fv&:=ޤ.z&M1>~^:mM=?VwS9yZ73 ).6՜Tɽg#~I;k)7) QwfN =wd)'vJ~s?lAwq椹{%=L3*OimZ;'պNԳ[dnS>ܓN<_SqO9en{NlMƥLKçk&g:;w紇i;uןN;~{Z;K{]yN\]&%zO|pH1uÝ;ݩuD/ם3S֝)tN'4WVYB&=l=eRtNxzD~N#]/Sy3a)'r$]=U;'fnrZZy1CWZ.&MQw=).Ozv&wF{KQzd.>F{qWp1ɟ59wOerIUVs|y?/|7OOCDIo^5;gߔSw3Bi*o,${%!}3(ʧyYy[Op\exyw%];9 M$5L3E{O#8_uCq 0q2ÊzVy4ՠa2=ѸέNxVQ}M:( 7T=d]AWRD)+\ݾ_9+JɻNON3NCTN+үjҒ‚HN۽SN׽S<(NnVvΓw7N`J]mwW#iPa4tq39-zNoj,2}qՐx 8):jya<}':"ܫ'DώsX0Suv|'sWSO&v?~6ӭ{)ѳ){;iݮVzOpsޝ=.RTD:ND/iNPUzXդFW5'#ŗx/ըÒhU@=@t|L0#u9 H֣YjCeӪ*ۭU{9ND΋+ W;]!STFt5]xlZwZo?8r^aN50r^T;qxtOj&ZFS))*_:)]zp8;ϪL!u:tl5qNݣJu:R멾X)Mkv5;LvJxIp\:+9>U۴'5WK52ՎJǨ6IoO=JnLUKM>,ѷ[}^4(F.V8SM>]C纽 W)J;V'خIߩO; \UpeɺY4ᝮGt֣;09]u&:&^9G']$r\;L'Xl֢\-S,Ի & W]Cp%S~Q:KzPvJޓ^'\)g]ƐzUm_v$hu{x$}M2,j Tt{O~{S/|scoNnTwSKxUuXx:*7Wp2Ԝ+i ҍswVt|]_FE^>?/߿~_G|⫟_~}oj!s'%i&ɰC#YHeũO<|`9w;TsRӞ^(g;E'x;MN& ys;ts$/VxlqwcUn4_T ]i~p/V /ҏadҗҸuD3NwzWs9M'S9rCM}Mկ&R(GRu#+-Lࢼhy9w5aL}dN.AqL+!vsҽ]_Ng^:^>OW; ե:l+=UQQ#w7aKzI$:!&9{DWq]8%=8\+N4kT|H}0s~dL^qHWsFnCE<1W֧Z$uQ:OWiSP:&c;nwn Y/h0t|uC%ZI=dRߊC3Zq%*M+WתʉʫJGW/  #ZKۭ۽*joC7VyNOu*n *UVnU;CaѪэusgnQ8Vw':tx&5R*}; )nWvUJnYqaG"$u:~(gdOUŔ/wˤvTċ/ל+Һ6J{DD~o n}W=ŵ1 Ui8./%WwNr?ѵh?΍O5zIGQQGe~WkW"ͮDG6UOz IVu=cRgZiwwp#j~kjm(=R}Q6j<՞eZhfťS>lǡ;٭OB^K{INS^ <9vL>G(ot5tܻV:\ܺHohMHL5}‡SmXQw}(_N MkPkzοJ օj[iRl~;s:Pu Uߟ^o|_ᇿG||ˋ~~/oyz>#<NԡOrOUC΢#s=Aֺy\[_?nΐ;SySnN3J7.#$w"wܑ\'u!zn~kJřjrg,Gdũ3Qih^)'9FOy[J+T ٖ܁t܉O8I{$#'9qy޽Ivg߉zvf2}j]z;Y \p7SO5;Dc=LwiNsOLjHpYB;Dp 5nzgG;2Ԛ_;urDXGZw8P~7`NkYs=I |zwδfvy}N!VX&wOqtws7̉NӴnN D+dҺ=){}W1.+u]L9N8J)E1$'~Pp6=ߧI׺TI-nn˜]d9|.r|vjOt~"{HfUw?j|[razgRkwY^un.O$ot͉gұ}q.Ɲ wW{V 'SLqN,6:+O{xzwi.{AGF<5':wg@J0^:Λ;z);z#c٘p?œz~(Lgov1]O)hq=ݵ6vrWki.3kVyݞJv}M9pBWɽo=(nx/3-0s7ę O:vלwzԓܩ]ҳ|rӺ6 wv}QPo7O[s6{r^9^~_}߿~_G|⫟_~}o W-\:/Uwut~ޤAr7LKqzQwZ'Iׯ~޹cLU~T::w-(HIi].8u9Շg AŧîdګӀBDS_^=I]֨ۮgUD;N*H;ljN_':w$xTDn57an(;3`ZXav-lpQkw8:9)zoo}ҷ@7GKqvOx);}: qv<=w)u:z]~U^}w&١<"uӿW'u}:,:M9\N>;9z;o} >)^Dw ]VUJ7;R)t86 a[FAwR_īEꅝN;JsMW{;;U/Aa8oi/g]?j)O]SJI-G1uK9tRv89NSjÎt4HzM u w" q}WVOU2LwYS>hn'LjN^N΋$DTDC>aCqC2~wc5i[WhAqrw:';H P599;]8^8I#!5+֬R~V5bNKC{u5_(._ջML4}Gt}8=_(~ZJSTgTՃtjLCyeK(u=&uw=RuKTHQcSm9$pu6&kvT8MQtZKRzS89/nd߮?%L0v$9ͩ>dm;Y׽s>j%{Rt(]BaH0uz8]] Sv:p}&vIpR\P\N#;Eҋ€a8}Gtr~u[?5tՕ4RZR:u#'WwU򎫯yK&p;:z:~R/&-Q;|]J#iv}'ؒ^+(:G&\=N{;I%S\6G%JpWY>tX8vt'nO瓕v{O0=>[Uj)/&s7Ox;+חJL3P`DpKOwv8$QNyr{t>H}C5I5;(9KD+J7INÉ_ݚw_N]?ɐ ԧjD{D ;VZoa>Q68hMqE}Nx:v=|*ݩ=wr0$>=WciOIzy|w_?=_^|?˯/xyw1?^S|/&K?;jG0kGyk#<2wNn)qgtOKԇX=jG=oۣ8y/Do؝QO|y uXV}<=ճZ+]َ;sW՘ydnM'~SAC#|w3mݝ~Twͣw]4n5ߴwrp giO((79]^"{Nߧ5֝h+<Grv+|t`GWkz?o̝|ѓ|ߓ;Ot~8kruywb7/wwx'Oxl]2^O;{;ӣ(vpi w`{)WnplOi~);>S~#9$Ps{{S i'qyQN8}ܿNzsw!=C'q;oۉZz{?s.v4p\uwww{NŤ]8'G5[bwWLq{IZ'=7' $[ UGxλsz߽NAqz^vM1K©>B]{&]뭳&~D']^;ܹiQ}=.'[w]6pj~swr-;&Oyp^qw9@O`Hr.ΦR[çtu6Gw2'=c={PciNc.UrL~Ogj[p2?y>j;[[kߕ&}ݽO]m\kw~O|k=G~E']魵p?&}V;n]gnFxr~ݤV}'οO}Ҏ7-᭱HR:|˚_~{__>~kO/?^=_|2Z˼Zϗ˸ϗ5}Z:cru+vW^5_y>/GW|\`==_]~uk+ϺkW|.c*WT\Y\֫5\U׭޼wYͤW\uQkt+vW?\{ֿ֮rk?>\u}מ>\}X]Zku늣=yyŲ掺'<_ֽz[Uu{=/_uW_\_=R1QՏU3󿞧5+&WZpou߫']mz+ 뙸f5G:\TϚyOewUejƮyUU/_׸aUϧZU;ךWgu߫*\iRk`^1jUv}~J:|YeUCuz^nW<}(VoWgrRr觲[j U>~֜ w{UOR>P:+ݯsիUC+NUz_߭άZ3F:z/k}X>w}箾.*zu~{]ZŞ׽jVxW?+U]ty{3Nq\0\GWsw];l2fu~=nsͯU^\WT]2sYrc>3窆z^[,Psfsͅk6YepQh͂k^uMSϭz]b쪍~ušWN\?5W~*kfD;Ns:]9VϤYm]yG:NWwkV_T\{X^Ϣ8e+׿k=\UW-ֻ@}VIr/OsXn5gWj6|hYyꗺGm׵9qxAzL{~T,,59{=V븚C+̯VYV=_ϻfo+]՚>={^O[^qvgy=ޫyZϾ]]5êVVg* Ú+_{uj^תw+]f ѵUU'U5g{tx?y;MowzL~iwgXU>]T,YWeljf**^UL\fܬj~V_\ձEՙgkuzϭwzGjb:oۚ_w5fWgu ZR>]֧j[ʯ+vVYuͺ]tuNp=y;cꝽwAӊzf\w2YVu}yW__q\XeSV}_zzkzg}]:[_@͍뻊,]y˴k׽WֻpY䇲k/nҝ^ij^R\E]\zu˼nکbv峞~UupzWW8bZz^euݧsk.wYS3bZKQy͗_ꙸ~Z_yrUCfSwt~Cy5çNW\wk?*WT]yeu3Cs֊znUl_u¤7v>\TlPYTϑkU+b| WtgXZJ/5*].ԌV:4Tϩi_kf\f߂+>*ve=B]T3bV^U֬}=7=ꓚלzWVyRϭ+vs\@eL]kOZk׵j]5eb\e횳ꌯ2fukj/Y}VϦzǩwZW}ΡVԧz˥귫j5joVhu\u}]g .r^=XTRGR3}j빺ULjTLWus׾ʩzbP^Ǯƭ[S=]Fr՟|߯TWN},W>qWM}*k\|jbCm9Qz=׮~*k|,cjzp\]zάk֭8UboW_q]Bg5>|ZuݟYUV\u]~76khUϫ1j.\{\;B+5|(ksWXͨ3.#VjwaV9׻A]]=eRUuNꜻQ3luwŴk+VnbuV Լڗ;WW~gχky]X}Z_yzx\kj+W꙾ϏeYʑ]b_yBvK;qzs[:ï5\ͮzf2JW^V]k5깻o5̹jf\Ό7Yvݹ\ڬ9QU=j5VS3jZkMŭju굏k+\S^}=k>q:C^ǫ{tkW|Vw.WQXyRV]~575kw5̹V|Wj쪽z6VW^bznuj?ʸ_}S}^kgJͽܚexj7NWfh˧:~W;Sp:WVw+.WroW:W=|Z1WήZf}\5_qZ=夞M+MWV+Wj&U?{W̻3bZxX_3l懲Fwu|ͥUWT ^׸5#uV֬?jzW:'V8۵k-nQϘU^ky]޹gxfͿ۪Ú-sb{ޥj־>+O,= sV_tŷ6y:fI\3<5u惘+5'+' 1qwݳ1Vw9u՝ku.U}PU:{{tc>W݊c\kp:wUΔuק~qǬrsyמ?wV~_srRu}ם}:`oSsz.cc+{W;I\? eeY 3!)*") *Π2v, M:s[Nyʙ/eF0*KOa ゚Fk=s}g5%}@iWO̯O[=x 6c[7.9ܷ=n\:Y^}8%<Ǔ>~KRguM-Q5le8u[xMǘ=Dq=(qI=pd>Ҟw݆>v<8aqs=W8 M{2_cZٔ\o裴ׂ.꧆,ҿ1'Emc0c$;;.8e1id<guڋqzף֔#̞ƙ=NlLyquC^{ Ldm)# 3[ii5Z,7;c/=Fzq݇;<'ϟ3ӕ˙2veؙ~۵81-d0s ϛěF臨e+;ȓc&:v_%+\5y`>&6\^2j+iYc,o#18.r.[xa &ܾܻV78C7Ƕ/u?23&6s oq2ѽ ?Z_/cq__އt(ƿvUgXJ^]x?1FC|O.tϯk}wས!\]xO6t%P=a>پ~C^gu~Ӈ.oظˎCqe>Ud}>tWC"Ϫ8F𸪎t|tX7]5yp5Ϧ5]335;ubWxU5Glekl}jvۯϦ]z٪ }XSϫC_xu=bP㷋Uٽ&q޺Ck>; T&kK?A35~VOn}ս/]zlu0ه>⟫q*2ӫĘw\ws>χVi}!1`o.j4P0Z5V]>}v=D>T C5ZU!zÐ}xfvhbzϚdWN~o}׆h m6kz_E}< Yg.l W}44v0 .>ENlܥ!< ʜ>?YM}ik2tŞs^]~?jxf>D]khކȴSM]{u 5=uٮG:D.wzU >VhUކoZleov]t٩>\u(^>kXw|+thu騦.{t:Z3Կbj>_e]qVװu2 ']sՇ}jz>k:_kOYŖ5ay_Xd}zӇ>v g(o5[b 2}o WIm~n]]\Ŧ}ZׇV*{ Y׾}>1X\UUԥUlUU|fJv/xT.*gѷG.:CjTܟ1|WEWg:}gRޅч!|ٸ GCq0ڥ.;*ZS]8?6%ϐeU0POC}&olه.\}P]嵦. sCe!]!*f!C*]6ڳOo]{vQ_/>ux|_F}b!45 kM>??:Yjj:?>0D>?48/m k\j5T5^Gl}tۥ}~ץUuyyoC04T֚]0\s?}L[C|ZM~؅!V[O]v]?]FC/}Og5}:(Tm05#C^E5T.|O]< }t:đ1D.=b!~e>z}~=Ծ]~10:TUv_]Co53~C*8مnjfߺ!Ou`CtzlGf.^jva{}8ݵ;v͹?|anuCFl4}~ݧ.twUZⱶCZ*>mhZWx]*{ֆĎ.uٴO5|]![?lم.w>Pg|ٸK.aWVMC߅5}TޫօoTGĪ!6uVew }VE\}1lU3ں+^iWg]j:Ut%7CS}8[U._g]bC?xU]X%Fs5; *xWC}.nn[_}2j뺰59}!}>K!rgW.lԧSm]/u{IVV;bˏ]{*sjg!g g].W]/}{wr&x*,UC.;a&w`a򑊞'975Y_1֌f~cv ػ/w7r-}c2g c_|&o457 qm8I2o3_;Z~e)L@s3O6#u5m}ֱG})#y^S\_OAyɗR'X/Zc<{K[v Vrqx&mYiJ4XCQ{})i˲Iw71FvG0DOpyvm:ҥ,+=6QJ=4cRE#"ƶLKgrط]~cHGߝ1ta``^d~f\>]$P~?+mzw=M;%w nk?G>3 χcc#{\q$}[+mYG{*H,{y׽5ۇy\p;n3~azglٗ;1e&FkTf =ܯ%1L9+Іޯsxb'/>wxSétjcggr{w_ӗɓ׫9k7/?:?M2gp?ƔuՔd=Nu]kw-x|r`m9VÿY p#f% @_Ec1xa4O+kiO1Ǒ18W9ȟ dq^tVAy 7Yfuccv/|)veyg7 CagZKu(mv:Jß?V3?5~;[jr7xmyN?ԃ#P6]ΩxK5g95bF6NmOK[ _ԱdL#s ;>xWLT-ΜEL36q5:eb*9+;ѽYibp;e؝ E=~z<3Z3[,9Ϧ?ڛ輸 ?Þ;!qPڜqv@Ve/#YʩEx=æfHkƙ歗eu8p.%Ac{8O8l ?]6`-0nY.s|x=}1vX](qicoĊҨ*֊ħk5g-Ϻ|fyL}XwYbζYx7*-}9:moΡEW^w\!:/9ݏZ(oӄ.;okh庈{}ⅹHuMWOXS܏x1klV`25^PĴcLFz#?Eh.ソ)qX鏌u>fLSϥi+^x!&~䗲J^Wٗ8/\7}Y_eqUi.#s0 31Y<=7g>Z(?cSvĪǵ /k{cm9qCc,#Ϯ!̇Be8`qhήˬQdXE[Pf}}yRM3~',-~\)'kC֡^Q[㽲 c]flϣYOEc^30g(>e54F>qFѷ `ϩ㺡Ͳuu :c<{h.k3jyd%>YTs*)pb00xz}fF:f-K{lIf?}]^;0&>|a|Ky'uXy?!,v!Ę1.Cstx^a[ڜ iseug|7#۟qxȰH{皩xy`b@=R<7y eu^13@ۈacq뒾 euc~y^7H|u *#bX1žzgj\1se~zu)ۜј6&,vZzWڊ>uJK[ړ蟾?cs ybbm>n_CV7 5}S?ѤE[:c|cW 3Zez}cu]xtcPV3Yu21J,%/^Oz7s秔{)cHL{<^\Q>}DoFgӸ,.s_gd~^^G#3 8o^WpM4 )C{xܡ5t<.]gԙחܓ0:ڰ/e`} sI֫^c1zCߠּdbrxjq\Pqoj۝e߳e~xe'>{㹒:˯m=WS'ZKey7C{R~B]RnuAJ[:zYeݛճCC}2Wy]6t}=+\_yy@>]?8}~F>?ϑs4 6#$[SS!lҬ/O1gVu~!m^OxǺebgvpRc緩`<⹅kkwU'`]!Hcz+s :k_Ǥcvd^؞P'}զl??;{ j;cZ kZ+d o8wzYv$Y4RֱļM>2_Mcw5=NPQiQWmjX2u$>!ӳ(gAFd?xG~/5G׸7%%ڙry &12#ue+/ ^w\,*kԩ﹚fMLl/סSdb]^<5ۋ<߉Qy~5c1s1k_ڞqu5rse5+mۉ3)mlцYok}CY}?cc\e=/};O i{*Y(3:ެkh7YEGv|eچq;?QvgX 8y&8I,1F:6YL}{YޠYbM,hڌ:_}eo=zw0KM)H1I͌A+|v*ȷԵƚt׉+ql63:.}@Y t[l/8_.I le8zqm}{̦ԓӠo;g&a Ϧ&XM \Yq߱oYM9y#3=i/(m!/ q3)A qX1˿XS2oܓ1J&~q?~Ϝ|YM3-\œB0J37&qH]g&f [ǚ;frwV?1kʮy,63Nl.s \M?|0;zElzmp|ꤱ}om?W`/H1#}^ zm:eOFC &dd1c#KjD~5ׅ{z@#Qlb9/%3_1O0n#q_luu?wGF'=kڎqz>>=/yjsclk^cb3ǘ1A4:ԓNSO=4<ԓ?',~? G?%_gd,Fم.bvO\q@|!%_Tְc% B҅x%|'mG8ϯnvhץe_;I5ɚqǼLfv`:.tSy9RLG]zX8t:^cPfjN;2F67wyaWfqߧjq6Xh{Ż?~NfkC˱^ԱﻜYL-^s] wκpzpv3[BMg.|+>iS,33ltW}~dfLsڹEW5|tU{ M_]օ!s54^s3ݰ6u2ll^XsvwŸ_ B-nd=]ɵy}>幏6QMMK@[W,qdg5,7Qc#9̧׮Ynj^yblޱ֫gg>ku%ƊLva&E2ߩah԰8pg =dh-bFc\4n^2k35ljZ']|)i~^GBy>V6l]Vphj]0_;C3;k1W~Gtե]5*30)34fll^_폳\M _Wge112z?w95<#q]ǟLo{8U[SC%>;u0Qњ.B WCNaKytZ|33j49{#ٻb'cXV>IeLNvs9^þcDw=;g]|>j{] ,t0Y;maj~鹭W1~\9f3s6۵ nOss=_e|Zac(竚w5ڮ>$~h}&HxW{w*q-~53~ve׷׫]^\}u=s9V f;%OǦ,w&]WC,^:Ч>g>Jua9ݯ2|W`ݟW.x=aIVj6%tծ>uYlӧ'Y]хcb+7ٹZ}\3[dsoXed&__2fbfvacq2 =L%Yuiq[e벜[=2jStV7܋6H^drwk~4DٽlF2lemY{Ym ?qe==O5jvnugYGW-;fJF-,6ީ{'}p'5{X{Sd'*V5:>2&ֽլ=$.!_5l_} .rpjutk etyOS;g\tJN'z ⴼF~ڭ kY=RàrS6/{\)ud: υ^dο+\^Kf1$ò;bGW̭٪jsדwxB!'bMVSv g}iNxQ<&÷?e]S FVA ]zsr~Z/e'e~4$f6m9nW<뱴LG5ݻdYyg]uq\3dkx}P YX~^Rjuh U|u>>vR 5~aZm/WW9^sD=ft)$zc:'jfqX{o'Gl&975kC/Kw=g׾}~~}}Oʽ.ح2?X7]\{R7lLf~b6ܩ͛:xX9 Z`^K9[rU1&IK=>:IP}}Ƀub73~Go>kڔnj/ї_Kb*2}VaA{x[{V\jzt;t?_ptf υ,FOUtKHsAl=2~cc$Np%'55R_k{nH6a`CtLfl兑]kup/k[C$cГGp]U4m*coQJO/UyMK6l!a}ku+>~/$GYnSuV}9ߣUoLf_oa&{PW |0Or;q[B_&i kP_tFs'ӦAa&'X-tUZjwN1^s״{"~}~:;ǽ\٘l̅Lp9g g%i0viERژp|]+?rYd?GOr8k&o&e٦ɋqG !G blYlkA֩^Îyxf[Sr6Z^i.=79)%tC77*e)XϹ=_ ڌ>z^i5[CوUuGP__|UۓuAg A?<^6v?:e bx#^4:b|`5:H{sPB_qjOָIv:Z|kk|{C\/^܅|.phM?͗A>C`lhѿbO\#Mgؓ=/xucr+>ØN[Ks短n#(Cョٕg[gX&Aݱnb{Oͮx5Ÿt1}ٮv~Oa\ekKџBc&.skŸmӷWUFӱX(Yu5Bf7u|g4~'d?֪e|cNOX d5-}~칅pf'5iIOY F#ÁtCk-׶buiin߭ס;)-J'疴{U4O2^xLzYZMN'{x2|B`NovE~8G\+W݀WsZkZKΟK. #wr; {|_y8;cb7|HwFvѯc-k} |3k:v='#r42`5z ʮ\L6$[hܘ<@|3xzh0WwϺx=k%xfH]W|?^Y e g2_xC1^gE /x`?:|-d=ӭO"f>-a<(,hۧeM6gM\rq YRoZ]6b5BvKR7΢uiaCs[ԘK [M&?[3=IuՓ|8׉?-m`eo|c7#qv_g-4`bhbxj"b |ߌK\^,̂:=,3_K\53A-bxm囲ǥ|m~]=dmX_9E=kb:W,7:c^g/}y>- }#oYy{s,-r ~9K5q<̘ǸǹyS biZ_[/aOy84ƺFh@5ܢG3y[]{j^G߇a,<|e>]:^3=x-ߪ9ΟkOFn/mAs~}'WIAob g^+F籶\٪) :/|zla{ ~EpkFycˊ!#)|'HZg}{OƭҭX.ޝysЇ3:uxKKcل=Ng Zm@=!u|L-lff|_;Yk~u{j|ؽEg^YwW$;;a\3=1~麖?C{V/zg;As鄘ޣu 2?soUaZ5顱 #3q3I3aY[ޓu%pus h:BsZ%I-'c{O1>缾wvK2b:nOﹳXC5%9s[5?xmta[uywvg f,=Ϟ _zXu.c,kV KdQ b碾Lض^wJ]|ko~kj+Nhe~൸[g)%Zgln|r)mmխy TY`UQ~͂7d csmRm*{sa8^ݠ[2cGVegQF]z6f]'9(gb"~^'RGΧc;z_<Vu;+vn~nH;9;k-eZ6'7tn[ӊ[=^y~Y+d5·wKN$< bLgzQUUc7kɅym80I燘T@Z YO9w1kABТ>Z2@nZa1S=#u"uk.73&V/kok y|n)ޏ/CjkL5>3hvL gM`3;@gͮy\Ə&ժàj4~T#,[KKNawu4} .4[coL=fe]oN{ZYв!˛Ā:5}f;鷳aO9O!6)1o0[cɨ"!t9#̕|K]@gv*&9@c2]s\\Ϛuj:q_05Xuq19oY0Nxs ^s?uE.[Tx01о ߵyAEF+%V:Ipw$x\NZuFǜ粌}.[8H/2ܪ!X8gk#Y<=rKggh,2Iѽ9 p?t~qڻv_?9rץ]ܷ/h\kY{lscݗs/{ť{_{t;co.u{Q'R%>7iiY." s()_4̿o_߈u8r s^6~95|o%%O^At}Οd /#s$>k;ɷa>Jil/Y%ȨxN#}~p yG``6ʎ{H-X/;I}(b 6PaoCs>dXؘG@M76~66cGā0}FX{ҩ=CQxm'{K9iaFXslJٗ*nv=ͥ OQAz0Ŀl!Lqfo*ְao,o\תdO~tZ~ :u(Q@x}J>C]œo,5;ٲ'xcpw7ZiɚH;ڛ/7߹/#}ϊ'{J9}$E6`0O KqYX ek<7cRjhgio3uY\}זI ꌗ1V'SsSٝu>_X{MJ;ޓ<b$6\Ә 6`?m<֌GOV&gRu>q]KvtOs5}5}hrk wg <{>GO<ڂk<Rܔj焢M^oK{vGdgUVH+7s~vf/M{S֎κf6?6\_=dLfY^WOb}!_Y/9X??89Pdw+$5+mL2&m! bV e~1Bv1WL53tφsi G#{&Y9h/[YGs:Vg>*sI#F)Fßok⓹&Gx.: W3K1KQKTr<%?e͉ &+lY㍰(*Gt}qΟ/ajkGXR/~ةr;ccsPW/rǬ#c:0b@PY(N3$ڬA}x|#h+̉Yˈ{fBš\rl^T𬈘u),3Y=Toh<"2R s?;Ei?S0*1~6:gZE_\+,۳#-nci ^{n^c웕}침sҬ;1Qs3$kڬ}zӸo%ԝN}{OįE)ηV.0ļFT:}/6`=G|s9tRx)6'f{ ˉOOc0ϒϪX{'v@8s '6Cca?fzϝio⎹|CgK#88"zcV5 硬iԡ=Ez5u%e,Έ ogHՂ =6cy2cd_ңpT@CrKWޫN-/[7{`KۧK7׳O+ړ==0OGT0'7v|$e̳=0𹸮)^k]3>4Y&E2koQlhz+U'/? ʃi3tgkл%đM&)q(ayCiۚgI(>ԙU37GР\>c txϼg̡Cְnk醵߇KXW317,Pvf|T=iHRokR)¦p5MOϑ}\>TDz!07zi-|2fNToFsa:1d{sUyf!>I\3 =-}H1{z\;:0&|V!뙪|lʺ5z9}78ȞefNTh{ ﲵ;30G*𽀍/oN:>_Tڱ-c8W6`}w/x \Dy\y!G`_?#]\!2&J'|uf}?G7ksY#0֧N؃_gu>-O3п7hG-~x1?/U䟒U$ARy>e{d $ߒ/kfŦii<{3lƜ D{2QW#)=00߻]ŧ; |&m5ɵ4ċ? He/ΚRXħj 1yGT?>cl;t'(鄽 O=uVYdR~O?3d➲[>3,]m?vMgݲs%?}s >hc)f>3tVF]^ɬO A1+K۷̕u 7>& d=*/^Q7_N3\s|1t\B&}߸1W23@CqK_¬&,u"*YMՙ?_cLŃ0ɾUǀ&a_U<鳗,gڃXR cA~u[>࿓ZAXe,3H׬y8+#1O>&3G*>џC6 ^g*l=gu, SYXC_ĩt'kV5I+Gsysbv s[ǺYiU϶`J:|.&ejZ3g8"kr9?dBf.tM|l\qHX XGk0F[ZB\V%]:Oijhm)SSleDP.g-"S{U_cbW}kq3^g&ғXQ]gMk*nyg^7 < RTW N]~d+]ϘXx8<*^so]pT٩b[V;ی)ec Z ϹnF">KM>#23|I>#?݌5֦r839:~Lts}'{?"<"- kzMzg_g짜$\lz7y&X'e/X7Rd36 y¡d~g@%>[Re͆kަ-"GW7{$};yb8>a ts&ʧWQINb?i1C O @G R<ڔ(ځ6ⳟsiWџao>IxxsRڱS?a5 OdM~P\3?\ ׋W>ewO؏JVDÿa/{S+3зy3><;X Wę>gxU t(d`cC;0xo>콅bCRcf#nI:݈=Ous8.(GҮzw_3{&\#ȳ ?!I L<bN6P3De/ڝ*mmz <o1(gOo|َ*s!9CyIj/$aExلO&aOVo*,ctsx%})2Fxg-k/,Y{kb0ŠUv`\ENd?={ayŸ2Jyo&>c:\ڱ&,ڳ=5d)9{YA@|J9Iܯefͪg@]KhOÚe ĻbDc5m=h0ZbujAȟ(2F âd?l4 `}p+6co.{f ًƳPxJ<7/}7s нfQYίq*l_qśeX>[5uۤ|g_|ą.{_ u>=/%E=OE#[UZl88qa9o+xqˁwGY|(1oq{9mg~tb]|gh}wyHxhxh8W;'ÏrA*N#?#)N >ub9p1n('yt /_;ˁgT<'t~Na{w-zxA|aAEA =KBΗΏ / / A炐e!ya{aн0lpQн((h_/ /*Fпt_ee!eOeO7l!,^<]<:t5낇 ~$t}U}}CǂC77=99]4~"A'* *l֠wmg?~6d!ۂ sBw\?2|6.y]к.hנ!/\4)hRˁ_ z+p?0v  C95Z¾=!o~6\ ]c埂/O!0ϡ/ww_ =)WŸ }K㫡 ~|-~ }<<Xn91Ƶ7G^~1S~ˬSc>P~*mn-rAbb㮎qG9sb\_Lz}f1n.zZ{ ~n*O rw ^uIGP>&9)cC =<.iӂ>\>>CO>1==}R{33_[m϶S]>rg]~5ೂg? ~<'lclǸz1qG7[pLl}ÛN4[f뛯m^}n-q{'ǟ  ޮ ?|ll}ۖb?)x >ۚo>|\sk83F77[!Bпf ڿf;C'-ˡ_M_ J˻4[~z0x;:::\ 1x|񟂷/F񟃿/_ 1t|gK/_>|~%JyWxW/ >[_ ]~-x忇 > {s֜ͶѵͶcl=Ͷٕ1>l[;#;m461nm@m 1fϋfccl;rK}1nmuzmta7ێ>9ۚm76۾f۷f1xm;N|~=Ͷ^>(x}P]G~+}p75ێ>><>$x|Han=<:q#x:1xzdȻm'O'O 'xgxW1{mOO =6cl;-;-{| CO ||=)t{ <=%t5zz{jӂ_O|u|g fcg}{V9smm<=7t l;7tnEa~ l ~0%ggfKÆ/ v_]Cw/ ^,z0txaC./ ]^|_8x$l}IICKޗ N/ 9. { 9n_r"cY1BCWW ^:u5?HUUaGg7?xFw6?4qS?fii#W,x)x)(FO//l91oE׭grc= :x6?~m'qe.i)1~n ~n@S'!٧O_3o }6tsw5?<~>x|O޾|})J+oq{4|}5twvwvw=={C?Q5;c\}1>1yqcz|cv}cfdžovqbkύqCc˃b1͎#ώfQov|;G_7;fǷ_hv|۱1jv|Y1AؠQ cfolv<(x8.lv<jv1ƞw#=͎`Clv<<>,x|X#<<>r#|M͎NtwQ>89>9>95;?:xm͎ O rk!BDž ?fΉ|bqzI'|?%x~J5x;k(ƅy_>9b՜:>1hsb\ߜlλ{c=1nnbӜw6oq{=WxstFw6;dz4;5;g'ĸ&kϋf1jvn8+ƻ5;7f6;7m-76;<>ΣΉq}iv}f7wĸ`;vC>  = ĸ񻂷ク_|[fCG1>!tI'|=9:#tF)Sjvn _g?g?O ~<-xyz顯Og#vVgz;;;;lYag?;tۃoov~>7l_< x~as/ _ x%jv ^w;ח/ ^w#>?yA|Aww;x^^~y`EEϗϗ?<_<_, ^&_EC?z:? m}sx`=(֣X q<7yq'p`}Ia+tiv=ÛtYL%9<&4ѣ/7+̯0kvooomU HR!B)B"FPRGE8KIQėHƒj)3/+EXX,E|NK-)"IߺL)š6Nq;M[K%Eɖ"چJ :rSLJ'g'tND E8G*)'ɑ"K=݃.t+5Otv cF0H}G:{<;`")fQؒDA%LY"b)&6I!Zϕb,TH1IB&Rt,$j V%)fɗbTI1I9RLcp%RLJDRIYG 4[R/Ŭ1c^y=R& 3-8܂s+mJ1YێolL;=_1#R.lZݘvc <{b8؋cnyxZ?o=_/1x!|f 0`|G1+0a<D{ _xw;w.=_y8Kq^/a2o|W +U,q^ckXckJlM[V\w.VcVS-U<OJDI)R"PR&(.EJRD3_)C+|Er-Hb%|"`R*|LIYb(|#|aEIebY.ϕdJ)_)kbG olIRxR0 )֞`n-vXajRڻvkG8;x:yͥ.x*t w7qꂳ'G0؋m]ֵXJ鍷7u+Rq}wb?ln@̃0ʗRwNJw(ޡxzw88Gm5xGbOFc/xφ2Y44K5H|DNq}HG8ũ^LyRe:uKW8tK7t Aq }zҧ'}~K/ B^tqKoKo-Ч}ǝ>KgEԏNԟ7ii i<2wL!Bʻxŋ.2.]}g]4tE(Uze$]Fe]|CtMtC_{cyo11kqj~O:'㝂5kQީx : 4Au:Xgs&Ι|CXfᝅwfYReܡs=C8p::v.#<${=c|vOY@(B,b6_a1]=>YB%YJwKXg}'>qtKo@tXAtXɷ+HUtXEװIV`Oa]=s:tǻ# &̛0gnf͘31oa|/[1oÜ7 ox _nv`Ύ sI$GĿw豋C쿛o쿇it.{/}g}'>y tO:S>}soop78D|OU@OI?vn|G~{"EO'_t(C1p9ۜm },}ҧ>%9Gs9Ot۔".orqet(tWpW_7Q>xt{Cx TnСob[^ sۘoc;]wqWثyޡ|[G=Q[Gtx7ocޠw#'~< ߄4ofv%ט_c~s 7`~-wxamڊ}dKFH2v$Q2*>QX*ɨzJF3s#CWIZ%GAD2Bd̒%ɖPR&p!-R,-%|%W6$V2~%w%%5>k|͒FKp~{Kpb͑mpg[mq]*1IX;!y}d#F cFإ@2vY1vc`gO?6H^zsa;KR/= 2@gAl'l7D ņ^ls8^!G`8r$Αl97Ş0`x:vîcK_veױD2.~G tOh颥$LdzL:LCA=c*=#q]e]=>}:if'E|B:!tC9tC0# o9.tm'O$߶Nz:ͣ<:۞̧zE6QBz-"z-"z-S4鴄>K賔>KC(YF8'>K}e9]Ve=V#r<9r[1ʑYrPR&GB2H#ˑٍrN_R G+GX;KM&rgN\-)## r^9r_4#tC>;}ӗwK~OtO @: :x.0C{aS˛e$F(\>|'\?k4|7co8r2w'nOa);vSn*@ bXfL,ffc~C9ܟ6al68'}twE5bdH6zvNi>;ϛ/9 sl"܋p/½b<7fh| o1lKecx ؗ^{Ľw"D܉Wa^u $I81ENk,i rZ/u=Iɜ4V91HNsr"&9)ӺؒR/uՐ<9ْDi<h;/V_c:8q~8'`o">lش$SNq2<N:it{:{>L3ip9sP̡`9 s0[[Ƕ#pe߹o$Hz㟇y|?鰀 . ;`_{)X̱c1/c8ql;c9xW]w%ޕxWc['G2[&c1`1`1`IőJőƞi8ֱe:[F,d&-쵅-nvwNi%]qd_qS"nol\2swne}챏>3Klr;|b:xQ=tV+QU^XX/r"ĤX/#u-IPhHb4l:֌)2Hb@x{:@^nCbIbK^YX',zUbbdGIbXH4RS<TbD0÷_:t|Ƿ^ހobmM.fl2HbV[1n÷-WβP%`ܑXg);1b .|9rro`e\8;ν8܋3cxvAlUO=a#vQ`+dBlǰv;$N:v:43x(=Ks9<= UE"K.Ẅ벯b]7W0^xc9rk͊u:pgo/[{o%J|F4ɻ~ c*C[ަmzܡzܡ]zfХO-}SG:ӧgz@z@lNNNtjMiDtzw^/Lfz+kK = [[;=(6ĒjFUld R(Ib6+6fZC;H|IbcIrỎ+6"Hb-I ͗XZ(bTlAHbubc@oIb-fk֘mp{g)6?`M'`oSش{;;+B;:3Ibɉ~G;a3xuv![n{b×`w!]#/we{RŦ3СoЇpG_: ѡ?ÕÃxtHADOzxÓ17B!t E'2fg8}FEC ]MjH1*G=HPhFBIp,(HpQq(*PNڐXTWPN2 &glPbGs>$_q8oEIp(\qIZKADqDL߶$+W4$OqjIpckq$ zWzF 'I[tEN*zܦmznP.j5kt+C:S> C:<#:o>7i{(ْzQ֐Kq섩&gҬ8:jIH8;+]vVbu6'xv kw=s)T{bɆb;Wse;7}g?lL0 A'O{$Hzp/``b^Ƌ0/Ƽb|Ѹ`^y)xcb]5g[dzu< x.ǻ +ĺo7o"»W]w $IxN1v |/)ltHş=OǞ=zoFވ=7a߄}3͸3qgނ{+Vf»/l l3N;qWp¹ n|ƾ{܃3^l{>|yݏo?=`|X<Ķ0?{yQ6=Ma=Xuһŗ(ؐXR~~gnu'YJ2 V>p&銛%ElG7Ň+nJq33W>t%UqDq؉7B[@,7 s3J/2He)V,I UܾUܬ,HM-oK7kl͊ 0}+MpzŭNqk-6;\v[{?:jHf>NيN89댯sWq늱+Fg/ŭn=dՅ\pٓ d ^ +nWܮ{cvcS7n[u"_`Ӆ`CqaF``f?o\#q5 (\?{:.{7{~5{7&rӟg+-4?7a jmM1ca,~(CJ9a cp<:<X""`.7W$H\zLzLxy㙏gao6Q(n-·EƸR1k,{]^0/x8c<;&%e9]e9]Ve%=V#LK"UYž鳆.kĶHm tIa#k鱖kFu|賞z==6c=6FɍɠO}6gLLLzlVd½TErfw$QB{ BgO_oC| 9$`R*4BO9fNʅ+iABSĽS{ M17Bs&Thκ9(4 .p{ܻȽzR!4I\e_~I%EBsŎ$ U/4Bs?FT⹉&[Ba*LUm6w.{Xc pUxy<;=ӈSLOMBw1 [Fh{<c3Ɨ^{^_ |o;{vﱽTx.%-)޲I$ [ŠD o5Gx 3GADx* ' ^x!y3KE"[xnFBI…d/H_ o+ R!q okL6xP%wVݎw[ݑܴ^'MGn8o'tN"»KjCbnzݝ=d,{Ïl#7{qӕI͜`pc>=ܱe~lOdal1 4 vo0 6xL#=4ޣ1/_ l2Ήxvo3DțLd#`ڊi+mَ<;d_b ^{\l r;7wwڏa?;6A,r)QO#X8U)sq9>DZvw*❊0I:${N_uigev:91绺R̥K1_d/}]*c2el7o7+د: <_gI¿ރd {f$ .'d  {$ȆT ǹ¿B?qOeLJ3gNIKS"i}Ks\I&iK ΖTbo[[R/iVQ=3\HiZ9 bOH _UmH~hAB~,R5O'BVh?# BZh;ǷlQ"l-ƶ[4lK-Yo)|~8_aM%\qƕlvBV*k[&cMfC)XSb]{a:밦xnFE}K D %"K8Y"LJEHWgNEH7; BzDO#Bz]IDJDI%&ۏ7['O[~f$."#$o Aa! ֋!d^8pz%E"d8xG|"U"Hs#GOGcWC0< 8'OoM6\cZ a:fr&*Bfq;!l@Esf.7Fa>;,΂ Q[ MhnF} wrs)7cÛr;{y9}swWFI |/xUXV^[DM,Q,j8fQCE`+Q3S Չ$jFBQ% ^xkHiIQԌ ٢ƧLB3&IQ3ֆTq^$WԌ zR!jED, "Q50M5S0M5[@J2EM` q:f`m&؂ceFBEl|3ƐbQ3:L:Lx"hLJEM$HlZQ3ۼQ3c\qA¸B-·U,"8FK3o XXa]5kxXXQ~ *o55Xk&aMš/_*ﺖ Kcua[g l#&vv&3i=vp[NnJ59ͽlM~6\r7M^vwtoUG0alpy>*❊xN9K1t?p^HKܾ.Ep U W1Q\c?Tӿtw1&F&[sm[W6os]W>5|#58kqc:8`l#<1FL;\qW\1uP"j18N8:]DmW;sq .N=} GvꅩWu˕zc fl[?l .Vi k03mƋmpL#1p'Ľt˝gG {~ܛ l*jܛĭܚ̭)0r/ E4vb `z)3aL7b٘Bi0<܏zynGq; 5v1wMץ\f,7qs7ǽx_έ켂o tO*__C5Ob$$Lɘ6qĀ-o$_*ֲZ|i|#gﱎo%n` |'i# 6 &g3L,}lݶlž 6k;v`ƻNb.|9oY.\L~dzoe/õS;cڏ;cg p!O<3nmb&7< /0`f=^K56ia78|-w8|ǭx[wuȤTI$4:YKDbGDuu:s'*>#zQgaID 3JDݗ.$:R,gOHʗmH,uV^$W}c!LKcGI0|aZfE)ΓS9ёraJp%´| 5{֏5LO0= 3MĮM 6}f"%Ir"&$&Ŗ$&!yI$Fd!>4#L4}B2DX4ۓ$(>%S+>MzR!>wM_/IhԊEV$T&+O8t5,UK԰jXΊD*5,ݓ7W6dV5lc)Q2I G հmIYmVöa5lG,VòsհDO*԰_԰]2 VrհX~kPؓ߹{հ}að԰|a-հ, -j؟X ;bP1/58?N0a(*UNIpbb, XW5[glq(eRl]u)J ++Sv!`jiT٩50^xapV/]%JFFψ&{w?[6lx ྛJpW\7e:ujXvm>:<`z<Ȇ1FOp? k&M8_kff|/{-VV?%ejB2Hؓ$Ҩ6$V 7R? z5#w,`R;f5-)R?S?!j9ёr5L5N$HunQÿ"F55>\j~%j->[|jxmrv찵O':`ꀩ#j=N:E*5!G wɕᝃHc]9|jx7kw= ޞٓ={q*b^]b7pPݱm_}ٶ/G?z<Ѡ@: bAt'zc0=`  Px}g}g8}g}Fg}4Nf^It[*V}w}Fg4}Fg o1N|3KqtG;IN3Ny&Z:i4N4N4NS3>Jt K ]2.AG=c:=fafa&o3,zmf6Be!aM8=uD}"餧>ẓ<̧|̧,(> 鳐YDEtZLhD.K賄>K鲔.1I }bKXg}'>qO]@XID:$!UXEtXM5|_ItH]LROżwHÜ9:݀wލx3n· 6cd-`ʷoe;oߗ,|mǷ/|/`ہmlƷۯl+_·s0nݍ 5<5Ғyl5P5 5*@Mƞ$F5[_R&[ǒj5ƋY=PwW(Um6ZR&M$ j]4R{IѕdV5O''5OMvL jFM3.jFdgӹEMV&wc.]0 _,5U&kogw솷>x}H׊9T5yPiK0f!QjP|^i8444qp']_n8Qgd-{h7{e7'ss p3MfSiܝAܞܝaC=MfL6 f`lXfEPmG'O5 d5YzǶZ_Mbb[{-cƶoj %R|1bb[;Nl$rL+]V&lh55$I1W [S*촖' :,j[NcZ^pmijOMX63j3Lڂk;a,|;+؍a7﵇=r;;>c1p=NFElRs]Na]bblf3r],x9|c<۔,eX/b\{7+0 ovUlVkv uױoJgkzM[XZ;Vm6ͷuw1\=k`^s=oz= C̏>&lM^`yoa7z˝V{t ٩%TIrT+$1T-IP hHjԒUg$[5XِXRR _[+wIj֙pZ~ܵՑrІmݎRUw UC{nW ݁1J5sS(ᶃ P Ūj肥 .Xn8莣{jKj虨zYp7E_Lء8c A-3@5 nT Cø?B5 0 v͑ aW >M|06'2 c/2X,q&pL=&b7#x1 $g K`-7+SLgͪa`|'04]Bp + tOi.Ť2g>B rUC4p{),Rp?쳌m0aǰ˹MVI"Wq57װn&C2;ʽT-P iOλM6DMϼfe3} Vnox|pz vrwq7p7s黏ytͣk]~~o>{!v?L/|G]Bcct?&O۟[5at/i,go%t??R1]s e<٢ O2 +lrMu,`K ~Qx -8xX٢۵ܭe:s {y|͇lo!oMc6yG#'SxńńX4cixۼ7{>ylF-l[yc+ۼ\Md))–$))z)PR|AZR`XY FactoMineR/data/poulet.rda0000644000176200001440001134450613160162101015157 0ustar liggesusersu\U_5҈" (`<& !Hww?7.9珹Xk=\SNRNddddT۟ۛTdTdt4&:dd,ddlsߌ{O_o E(/ M.-Q7U1g/:`{S_j"( rg5UtTE]va MmA/:fN[/*V~ Zras#֧{`Q 'űqI~>75gYapLz>*#yjzTzBC2|ƒU Z2Ȯ:7z*TE-dCD@+MLy/~2v?2㿘&Bnb6*pV5"- ް-IZ(IÈ4wAXm /._uߗ[}A+8߿i ]_@iS{(X!gf\xԫmsa+'7+{j7Z|}٧k6m1EBfΘ Մ-xN+6P R*N%0toeK=v 2j~|w<(#~[Cv'˖P^xPv K`t\hc+_4Qfe,,Ii t{P$c飙˕f0hwJz4]q)ZS_uM5/C:2pu6;hf5/N=PwMz*|:%=oD}=^^([*Q}sCO 3.+pQ`]X935o'8 %X*ͽPԗC|ޘ ڕƘSO{Xb#gjP-R`jJ131Zoޣ {b >s{u±2&Kd&$q~P.7M8}V l'eƾQ~z`ˋ]B/k 靗S+bx!MZHu3OXF׿r $Wd'÷-Y5TZn %D/!x'4Eh5ASmAؑf-uV*{5Htaš (9Z^O0X k0OcQK-}: P8ƞJGeEO@1hʧBiN]AϿ*BMaAuPP~,w<:^,;+G_qn..-隯>b~v?G&~CLyޅ | .Bq!Ș:~z8ruCbg׃Dp,cB9]F'|2J4@O IK\ KZfG;$ X3C^|pl59B-$*cߣ,H6rQy6"QҴW/,^kCld-/Y$&|'JU0`A&6:CO |'B|- Xqi0ug&u&0l5`mf.yFߕ%`hU'n,|p7TAr<<$cG-X#0:D @KF8_~B&Tjö_+{rlvo׿XoAXҳ!p)NF:G[nafq~+3_ )8 mvH| pCE AvLi3d5 \ǥskp)E,9}%g>,ńIi~V~V?ɒ6o:8Lj(Q|_9nfb0&Tn4䩏rާQ@`=4/r,SU+?Ь(Kv?P^{Bq6= [Eo"8>iňĶÙK]wsae'3ݥh?k  ǔa_3g)W&;?z˞VGW?{*݁%z_hR:_szft =_>C{vϱ]jn$ my.~Ō>`Bzvޞ ͕m>P.j)L{U=#X?ܹ*gzMbi4`#^)~gmcy'QlwFX?'@O' #/_5K Iȡ~^ > tVlx.zf9гs3£dPU?Z_=UyF'c OYn" 2P:p̳ܿ"N>ԢV]5f"BNe~ U7nշ\1*ʾgGspϺq=RXqIem֭]'N??6ˠI) a \WUɏ`flaZ¨e Ǒ ;Sn&O,#EpV.m541J31c4/I#(PzÇ"?`_cs"V_p+~+$/,U';A͇.6\ Ϋύ?У|t;f]O@!3;2_!hkl}ے~CKD;|&&2 bSe=XD߸r)8:,lC ڇmg c5+ ?>?E98}_u E=[e~kGnժpzBؓ˩:<Ŀw걷;Pg XQ ldSAcі/PZ{5ۃ45org.۾vJf2}J=>#k7?&b5Svʲ}oB%cPDaq-)Af ``b[_T&;cS\/P&E+*!d.KƚRyZz>' P=5.Ճ# B^mOYHkd@zyQ 'r{CEP?!(JՍiRpb%Xғf2aPpJ>Lj/XGVi d\-`$h,u1'F$78 6-B7APgd%mC%S5HqYAhvr *Nov`l[*:m3(%{`q, ~~||mOO#zIJSN *4/gBn`Qٟ8k\L42]X^>ny$?QȘ} Y0땔-Imd;p6aq3m"dEqlAnӍgPlyw":{)rάrلP{aѰhȍ@ʭVݩL x>9s)ݬ2{E)iTktbc[qVh*bqB߉ p?rw͸1d9p=1O~?:Xa/LU0TύXS{,&f/beoILQ{|qyӣ9QaDȾI%@bŠ1sC~Ms'xְ_=+Cn&U-þR^[x:X~} 5wrV\Juhi)l/!׷2MSFj77qV{\=,vy}$n z2ؚzt ꄪ* C| puZLkغYqratKr> ˌ+ UМ}uԶŐa@*j=t9we m\n[|Pܻp:'DV` FvVT**5=vzv p%\L9d[+R%'.ae_^ #Y6TY#z%o8D&Knz`=WVbsWl4cG]<줻4d;K q@L=Ʋ}{賌-]1;bmԘ)&|)۾6,ʐ;m"ڂU&>xc^xf^lhZ#g-vtc.zl,,n|\8E?qݾO󹂠fk{Ng4\,֛O!ǶMlʲ-c ZP9)zC'8xwɧ8Ѧ8U9ipi]?eus ؙOe$ɂ"_ϱ@Cȥ,=h7o_V1X Zʣإ%,pu8 K]_X'm(.yn<W0uŚy+ɂ oY4mK&QUɘ[[ ;V }p! ]8?Hz4}cB/0Cۮqbl0Yd|_V͎2mgVsYT٪ 6xYjU,m7+̽B8߲>*37PU:h Ȟ,^̳?z"yLvטÿ".$8U~"j lxEMCn }8;t0 +٭{nN҂mp ۏE}hdG.WX92Sӑoz!.7z[,L6 \VciwcPۑW~U6;oXC|匛-0y'+){ʔ!~ f@b1g:` Ac[eSajz^GVdق5c/+q}v%mǯOշ3hAuXU/MN,>v f/rFő8sq_M 2 #X}T l Xswْq/5v Z/qipem?VEs\_le,ĺzM{6I_ERy1gʿ1@r l2ŪߌLG'0m'm;t 5'pěeʗ8-ms'za*ћ0՗[':Em ʓB8xa`/tlщu׮A sA#,,V.NN $,щ`;% <8mM>xj/÷y>JWlf]U@ wڎmvޡTZlWo>&ı`"/on 9aҳls8Q9B QT|n3= gnTd4E!stWpڹf(rֽ Gjz9Ѩ&0CtNL*/A{5Cj%57 ]LxbNZnnߒc:*nlZʞQA(=|uU[Rh .%Dq0D=!;x7 't;_.( qvSb5 ޢaфEyW2 '^XG d^q;Qҧ")=Hw Q?]w{մ2t> I^9d)'`@R.lYeɻB-yH2k)N[pCw!s#&.t\>j4޿ymwlbdZ{-آTwcM!/tbA;v^vxVJϖ@cX͎S`uFA1,[ ^78uImGjI{iCш {C$$EjN,ګ!HXoumLW[XxA/HbI\L :] LA ZHv{AˏN3ÝO?S.=t2j QBgE-}?4{8o|C!tWőf1Mg#j[1k?)&wKvYr( Ӄ;p:=mu} 3Nh!@:CE{^e+A=cvPd_pz}< 7>}ZƂu*e.ai~Þ!v/)x>>G7Cڝy}q?R짘S*5]'g= a, 5b>_g+i;Ul$*]8(v(*Ê |sZXXK zJ 298xkxCAȯ?%%uCX!>#Ӿ"7.ȋ췧F3v>T+x&BMZ첡g&  O(0^7, &O$[lx砚ؖUn:q]w75?|W<|p %Csy?=R'[aʲ!ǞNP㪊x7hדF4k{(cK7G֕BS4%ib.TC(I1CE97,{AS3F. a|݃=EaOL#4E"R4ߢF_`EeojIH"$[ wrbלϓ+Ƙ C4BNbpS}d0cX T25Æ%#:la1jx埌ݞ7"a,0,\+~mt9_ 0Ga> 9)K2rF &ho0 ;}^LaȉL*F;YߐeUcc$,!ןwR HC1خƹwJ4Cl1HWWŸйW}xT_pYgw!#ct[5F c4W7U/O JzwbOZAhq Huxzn@xO@ >T!/ynCz-Qÿ7XP,ٱGU۫1UpEL,Or0ݐ,wk\=7D m?{dCʎws.,l`|"@Zқ}[G[.ZOcZ#].!n,˚~S9lU,*V;N5i`jrN#?=qx1c `%}~Qz#!4^h<]mJ*7mz2v ֑cZ!\^|avX16q%_?T_?ecgQblmXņomRZ[ej\flk#@cMnE9nh4@͖mϡs& (|:aC./,̻(5n PoKcNga=4?|+9?]0WJRM@ k{$6+}>!5yo /:]#"8){}vqogn |u[P%):"㴄xcơ{&t ɳEmJ\G{~XEHdU/׵G>\,rx D(]g&'d&bǕZE&ʑ"vu[eȫ(e:~߲ʏ@͞qxz~J)bTIƤu KG24Xmq|1 l6mB!m৓[D̏by +ѼYGc6z~KӬ6fesNLb I'oQJaHU+|W9E:њ/n|V+ց\ JH&&Pg2֗ XV&ˋʼs!1~X|:BM,?ǩ=QxQ,P2{c4Nwb]짟XTRXe7?켄uk->+]BU<Ǯ2KinD9׵eRߧϧ`̊:E4XcW$̔>mn`r{r8и5xM\2/U'Ϣ&'X$i@yD (!F4?Z%tFmHgV]v`rs4$C=d+8HԶ2?{]iSs0b'hQ :t^Dv@YӚrtRe> Oo<2229a W:LW|!ۣO:UBެ kWk{jA`l uQ^ƅ]-Pk(jzY]W9 -~Nxx gwPqY qiЩ]$Q ?q~uEd[J/A;USaH>:Y!BW_d0 M(=}$8O> ޳mj0yJ`:=%I 0P|Y:BգO  Uf4J$Wo=ȩ>}NFn@9e,h-gͷrvzH;+K]JV٬;*]IΒI %d`1B"]~d\?%JU՚ ;kZ& Lb~ EZ~IB/<&['+r88aQ%,.\$yWlRN-5.hO !^VFay1 (R)-9uOwrJi/X5<ۜJ5zbNC]Ř}]fˬBe6Ƚi76F~1!__\1AG ;gʗWվcO\KVܤa<Zy`>DDΊ0߂MVR }.wJQGm!F+ 8FQLRp~1&Q&{MRAiuwB$ 9'Ay}#mG%0x b݄B[G<<\ΩO[^%c{v 56g|$Z@ꖸ+oU`ީa =|So f7M`ddz+ϱ^mI9> Bk23Х8~ ?k2Ba!،՞n<(jcZwdIs_:rnhb*d%AlGם.5eCHyo 4G/SqYg*R}0eFm:ǟy"VIcd㻲;B1˰AH6ImwF'eX[(|=n_(: _bKP4a7OLE\qO* PSFhreg~)'݄v.cɐnS 1&C;*$Bt\;(.-O&l%hkV!K F>io}!mr۫bko $h| ~aL$G{#Ww Z6 QW~RD~JvǝPEWzOb֝~P>ŌɁ}1LM=Hߥfz--(1]3bP^oftAћYw ݛ +#yk@h^LHχV9HA > PGBxF6K9%Fmh&rw RcНoq78q[f_~K],!S? SHCEs _^Cqy&t.bhI ˹(_SYPuD :gq^eg:rA`b AJ+GA[y湩8h79?eIn?D]ba"+n(~97Dje6t>oO+3(CI4RW`w~Qx>̋Yzus9sۻN@갫@8(K:/m(@GbqwA w?@]k(c44_gfo{*!咻dır$udZ>-?B Np C-rXh?%)6c [{j>f0k/ jRM]|2g0d܍lpW(4~o)pL2CX8qn .#55u'3}8$+юTXfM NiEsӗ_fIY@bt_0+ZPi={9NO@I'ۉZ(Z=zHڝX;#z3Ӧ"ySȶ~Fb'R#Ÿ9;lzRݶuH%ܘ I o<}Eut}j}[p5+TLR5t?BP$52*jxZ8}~,v3ڃ_âSHX+Fn~?7`U S=maSDeVO6 /5Ӹ?,u9n?kYhM o>w2(b.{Ly/ov`D;$R?:xH؆SL0WїBn>١'%1y,8}UU hSit E pQ2sNL >N~^k傓h})LcV{noaiS2 9X dƾ 7&_ ;%n`K7pLҊONǝ=E` \#h H ?~[ԭx8KBXDʪ^)%[ %M^\ޢGWK!woIܶGgǮM,`3B׺?6{zJ`BrgbVJ$V2 PLd(rm)jm?Xy (nQ14 wIb,v$SbzyŠ"f+-zSHE1 ֔BÈWNݔGR;zf 4!1[,Ng%,QfuZ2O\1uz'lH=t|{V_C"]i~CZX,J 2t12\:Z~-|+nyXxBӡH'9ƶ)+ Gw_ `2^اrgs_41_k%ࠖ3E즈\Oaq;Řqzh&6t[쿅?S ]aq0%a@>(?oLV?F;}{x95>`sb)PVIFA>.cuch=3oiD`7"̪&E=`ޅSvG?/l5x *)LތX^2jsy(ad [/a9p1,Mx}U?oX^>;E^cC(01\-`Jabmn _#Sz 6XC1@9^eXȮooB?'Sm눇'%!skh"N|5 >f?kvJD8.tΕ(BU5F0Pq4px}/$+C;F 'ENlb?$4ۖ{)B{QЗ/@ye/]" ] 3r0j$(u"oIBRg3:t8biUT=ZλSFƩxp d|+8 ӜV\\ W$Oa`ٚ?|L /_;cPkUk$0?_aQC Z [ nO}=J3`v퉨\,y^% k? |7/@{p95t'r`׊)' )< \ZeٰEtpOf|w 0k(ڮ|L%W&aUwFΊac yE7p)Gr_7K.'cҩPo0F-^Saz iMldoχ/Ԟ|Y-\*YIН*^3c~|,҂M؁عi ]]4VnaiL1VÎh/o bu۔%\:ٯ4#gvM%cl W]cB5kE>/;~3e*W_!aE)hvl  /,NN:,\گ$5? n,2c"<$zp & <V"Oc42Y'/‘^z{b藯JjV<'}V{u\PY >kMTDT$N~\$_:7> Riˌ)Tf}88J)4\焺 .J;EԜU8etX]Qa z,^bHl;;V#ӟ܆/z얂 u~UvRqapyHk/zw2}aF6ϲ2f?|4""E 8*ϬC۲TqaO#2oC*]১_9 Mb#_edU"PUUP 。Te #[Ut~LAU H5-ۼ2:z5q&t\(a $?۩im~U: ޜN͒ͣpSrco{qJbNknyrYZuվK+! | `]u jX'}2@]~h2Re3}]@YQ-O W !i}Q~|Ym3oFka 974V-_斄dgQl싺(4p $|(IB(/ޤ;ޕ._rsۡ0Zd8:CÜXg(f-& S آ#K:*b-Zpꄺ~  E'mhO@j#v>>nt6ڬREmWfmetjZ=CtSм,=x:DCĎ4re} 4c<>KuCw9<6 EvmҼCR#Hgck>)y{2g ϥEQ:Y$&:fRg0Ӌ2L^m) 1` exEtiOOL5%mVj ]I>`?v˴=6K-_~gkl^?Ϙ8 oBS3궈_7\JPCPnR§J3W|˜$.KݟNzxv Yzo'~[]{OQ+}EGLP% 7ob'1]\]* r߆ #.2h>}ZǬRnfɷo[~XYQ_L-:brno]~ܫh;6Z EtI/_Bq}WojBs4LxΟm|iDZT6圇^jaM7/bU`)ٗZi +|5]*\ᆂBʂ`TS\/'0C`L\Ϭg΀rĘ/e%H򇥰Lli bwv8+~X݅zed[L=Fs/bo_Nt\<}C-W yد IJyg 1/f7 ӜO<Jfٝy~y;Ϸ86 -JU$GKD|Cxgks &q4¸ѴgKUq_GF@ǧ5.{2#ZPurih8H ߱'ziRS7Fu{| g?ЏV.Sޢ>oh鋤Ե}&<.<6 t&_;; yfd!ţ)*THH8 QvA›i$v~t|zPt=@y+onY8}C9Ǒ G^K1`z2 kw=U-vo> !1FB':of%`CԋG[-cCtMtsiw`NAwFZ!2p:MI'WXg#Tk?&jXob)_"[!owsdnn} ~<>IlɁ>Y;ߟ] euHB} (=G2_Z`CVɖNL@?:|d7FMS.r,zBn<{O(J}NÉkXn=l;e1ri FDQz)MhM}lŠz]vJjKkX7(qU Bt]_"7$ZfAcTmTpw)VoPw<+̪NƵ6 )?InญK,O.SIѱF8xx=?PwyKS6&P4SQ glhTS^/x6*NkUs%Z_qJb,v}+!̌:QԘKgUPUG^j>g dO>lxY$Y-=}Hol̏c:px Rמi*m!Pz^!ӭx` k|#FCwDr:F?D4?ŎNu`]KfiU`-d6$8nѰw=3d-޻P)Cn5aUЈS/d\ Sil6Dߤ]G13^mL w~XiC~˅F; O,pP_VM?'cV3A>Kqo7*VL K'CyCXC H" !!G)'֏x:@?{`!Wh>B1DZL/{>̲ŊGDv_Lt24[:@K]֣/*;Zl|ׇ+>5hp )|M~AJQ}|::ޕ*8-驃Oƪ)&yU"(sP'jͧq7O%C.fny- c77@I}wt\<zΞmg& oj.:rU+Jl=aïS DҶ ,W>X;e> _}uA_l#-!2D1gpݼXghgg .` =1k}:\WsLs?B /\΅-3g(U` 8Շ 1̴0E~Lmu[>) ßTP޽c,gIT !GHp ^n*Du`IԡPg&V._FA`}17kg~,rK~zygUI.7Y>/K`Q9Fz,8Ӄ0Ac7E6;jD|&n)~;/s7LF;7dX2lq<6q勣P rWq|gL64 8J)t"$~ˤsۋ5= HPf_Y+xKzNWdgi @f 4uݠ&L9=gR?7K*PPNt9Yb8s̱m*( ђ!S蒗F 3D@t[]i/?$eޗ@Ut4HHMy*?Id:M89 9N(ڊd-,OAJv/0Sft~fɱ[KL eۧM5i5ӱ7>pYۀ{_[ ڥH((okkǖ~m,t5H~R֛+t8I@nBe:r9$1D|?JT3dٲ@B _0艛SM, ZĦ݇0B,Ӹc 1;pC8K+>tƼF2a՟׍t!N`3y)dJmkUZg$> Af3֐\^Hm>Q-A1wW +H0%-Jζ%~%of}/g#!}$m}y! K ~`s+A~yw;_x`tljr~V0rUAQ{c,[*t"`WP&.qx^-  uuA'sCh+8DY2`>z9 `Uvx S @=%οc0%Шn;*2]EA[_"4**@% 8}H]_uISV3Wlݍ0m4%/>+,"n,5j-R 4e/݇R5;"ǻ^! ʱ zϟ Jb-Ry˺(2](= {ѱ|RcpN+>(>1 )&~V!hB-[SJYBE].D6&P\$/^jdulƖLn2O ?? Ѭ!Z1Icdbj5F0y]]iF,=cfZ 7vmcKBuGg ~=!ݪHr9tOs5C@ }| $+rfEɶ:OS5CI;ϜV .2v :%z }{/RzC:ru@po2F\ } 2OxNeu]"MN sTCӎ #gϡ#U9o^ ";Vz%֣(mRH fmS&v%8hۙ<'{ ]ny2gD;-Pwge9H:m)4P@(<8It YBc㕯eg!2{eV9 cKK"[R56)v3zB,TlAC>*crPq))Skh:!-V#=#9yDM_|Q\y.H~<=лƢ&dW0@Jҁ'>PȋZy^Qh_;4P89vń hy}<CG]C H^aʔ[}90Wb@I*'3t%F!Dx͹J 3⍨˕]P,0&ZV T>A=st{YĞڧ?.8ݯv4Xswhg"Wa Edٌ/q}NԁXl&I=XC>_|r]ˤB娧LXľq{c05?S`2JɁ<P֩7PŦjC`peX .rOeO< tf4Qi &W!AMz0[_@pRw*Sb1MoJH4+S'c`/HPf9 9\8R׏vf s`'/b T:`%;W0[ZzH#*.h3?x+lqn9!s H}jّZT Ule! |_p|\;G( =oTsP3BuNb{A!VlE /zMXܻf J>[AIۥ!x,9!)`d fc r;ix}EX|Elq9y-ĮEPhdWkOŇvÜPjh,2ljUpE)_rPKiCHT9Mn6XSrFҬ߳:U7\-MB)kePHV ~+3oy_4a ܖ3G(a+a{ ԾkbE<&ː~Gr1VnDeFB֏VO E_Z}Rҹ'b)E6i~SIcYm1T2ʀE0d*3k. pkźT wLWh~](6 "˴͛]; ߹bWV%u?\8\o}Oso %2뻀G"=TVC$>K'̝m!gӢ=-/?1(m:{/{4ރ3 E\%)HnϏʳ ,+5\ = GDކ\A WR޳ h`fRfjI<ڿoS[Exi!v~_v sbsIoHp*"ha[z(vW]ly+?oubd(z$_Vdu[fif#u}[FvddOb&e6-h~qWAjxdWÒcb)eQvY8Upcm"=XIK;SH]Єe@NR4|V]ek>G#)IeɢS 2Adr0c=-ZH O] ЂXݛ2 Rf0rA\{65~ aGݒ\q _zA?F$jތ1v, oab]S\A8k*r3v2*8xc>Oʝue0VJacɩeMes[-9ت`;y' G"!BH;3U˃LqKAK#bVۃݡL~#mj:H73t^({0G8~y*Zr mLqI'C_˥(rbΫWq.ߏ%B\ &i]3UCr8xhRhOߒz_qsSDuD+5[\yw[ U>L *tz׏:NyED? EY qsAΖm=[2 *ϹUKUH.cL + X*cҋ^b>[Lëk _:s@>Ѡӏ76&\99 TSݱ~cN-[5I t-@̣ Pi]s^Uؤ u5Sl0 @bh\;(=N۪|HfĿN'm'#+=]R+^\i ƴz*LT ̿UWҾe1EmKLԓRjwX tHT!M+9|cnnXXa(ydL18LO-Ē͋K]} Ŗ`7\axeF#3ءH ~Ą̿Pl[u翠̀:{}Q5UTI!ɬVty]<) ~/D|VA[܍ӑݽ>&+Ç!~܊ȿ RPzyUFgRa܊ۘΣHHbu犰HcKLBuF'WZcd IqUbaIpԝ|qbv}SO=sYU7kBCSM~t,~J45;pVIh\4&yr1046f:pC j bGvB'tCS FO1'j r6,T3[yx1%ˁ9*N@`Z 3<yybݍ֬Eq?ÚUͦM%O0lqX$"V aד=1$|S=u屑ژt&RwwϹ4WZ4Ϸuha類΢@*.\ߖF^[Z~<"穹9hlr yt),{~y|lxȾW;1]Δ +o܅9R]|/ XG\!XkbzHPu( /k,P :gp& El7ԟ#M|< ! 6Zn!@OGڴ=:G+MUi&nuAc-#źL@]b6!9" a;t}pc! ;Hv)&}r.$~ (tVu7[&qT8| mFKbUOŗy< ;wB`b].  w v9펇 LArpjaefK^hkgL|X<' Fz= 1e =+I_!?>c yרy OBs`]_y:A7$bE_ sp|"wv<Փ9M?f|C3X4;/4zl3:K0i9.,v':QFl0r:G^s"/~ͅ9=EGPέ:/>y<,Xȴ#S~: F:cWu,EȻq:4mGi_K6zgwn[Y)Ju- >8}3~wg"3Рy;4p XpxBH9}:Tc@˃[{OY@wg#wÔ7Vs 5DducĤREf˂LBL%ϾlIJĶyE,0˴Z6/ Q5X9+ym?_r¾$$(>UkɾT^0Ϗ?>ll5zl{Ir_=u٫c!z OƶT]ɂlD|O)M9iBgYUhq4޷ ~Ac]iwHbd_ڷ3QeMwMA"%N5 |rnIPb.!9@[yn@uvj5 j")'OtVL?RuF-b#7bifaX4lu\"=6&LJP*l<-vC}#|~% v~А6]sX7G90!ϓ&]oO/7a|0}rl;4$X.CShh6KQ=F;&k*S2,X x2O ,Sh!E hX  UΟg=$r;M8ٸlmrTf`,Ԗ}kn=-EjP[" S+[>h)d:S} \3uG\@ '[8k[؟ ess?zcVtWuaX+6Rm6۞/6= [ &{]T( *yp_^~]nyMWVK156~t f)M=qb T,M]?{C)Vؤ)d?չC}оWnV=-O6&6 ;CI9vsPW Ks1dxUr3b?E]kmUڷ?#-{$t}/pMJwC:՞ {pD艖4)ؼAɵg̙߅}[A9PVHNOLJ)L[EXC[ <Z$`fঈs$vZ~ݧb/bz4- j'nC׺6ف/ d`,ݎz5l?5.?<ǽ"5D2qcmb˓ ҙn6x/RǛ]%qfL^|˻M를UbQ g!nqhdŔ֘ya(غZpJsB6!/ x4dJR\ЀOS#1-N+x6<?8~ݹ 6ݣ汙?zt瓖Ү/3ى8̩`Z.Ɨ*]kˮk=,CZ}ޕ@ ɿDyhUz5M ~ Of!SaJt EQGwH][qc@HyE*^#v=Z[xi|,)3/| sߛ*?YLaa4Zk~eh*ǒE%.wZiIv VOSe5!s4e*|;ƱYVQų MTsؙ<PAu,TmңWY-9l2z 3i,D`rU`:3Liۑ#_ }k/K:ĽMq>{FL?L)͎@ôx[;5DIYJ]ۺMgiݰJfan^Ξ;7ёhp~k{yp灪y%岤#',{j! {]* NnQX2/@^9ߙ*>z@#urw~7 :w{ݧ,`'֩ջEuN)A/37LTICKyO@sFӑ駭Ch8:Ν^mdr)s,(]MAalw\,? 7| x&kI,Z߀SkGYpQ$m;7<c2|f86 ;Rql-_B15N-.}}^pz\\uB D9,Ceeзݾr@. hd'ֳCNs#о>ߒ v=qʫ'o#/ qQ(VPj~\]xH$GZ+1ɍF95yom7J.0=:.i9}c)\s5{/ gno|ȣ"-i&%$ť=?<cBc9l5\b kɱ.LOGD($bvO6lr 6cpbn4[RRv;Y]V]C6㕭N/h ^%zՌ#예[̻%ʩSj!\ TVXK}M+Ɵs}5+3.BrlS GˍPw=# Hsmb<뾘㘘ny,:z2BsP|>~ ѱo1䪤\+?]R⠁ڈpL ٘9-ؚ|Ɏmb1|i̇w^KՅ_RFBsqXF;h0^1F$j9/"\cb1^4#ˎi2ʘ5 ,p⹨fWV$/{/3%.-3X:ȡNh饦<|o>cg5]H0ly I}Xx=V2lƂGB~ 0ߧAfJ4͎#ULklB]Fus/i6Hrglt]+?=:Tbz*/ xDOgzL>-Y-vrG,_#zV/ (q]H6ݔkxd4uIчި$eyvf}^DX%vxv8<r\Kqï8pF02Κl`Ekױ+]vvae94DvWr$$W{NT 1D bcK䂃u5@ahDZlΓٳ[ߘ]b.!kc7`9f^8+crwdZg @E䐑M.R ]_OѾl#Q9w7 d]`wHַeV{yf3bz[adoy?!cemnzL~u߇twy;C)Ƴ-3|1k\. aXc'^@|DRm3H`*(xT`ikrybQ5ErBU蓾tzK YMLaPa -|2@F N X=@l cUv-Mo(&z(~ CCQt| =hO ^^.(Iİ OYCSr ۆV}[=0ۺY2*N&o7 zPrZO㺞/PyA. ԩOGJ(u`.^?` tGޑNϲondGz)b)tM=EP.:~8CYbM[L(Ԛr~*;Y G0he(ϙ=[ @W'\UcrP >NUz^5; ,%~J#T ܻ:}>n=(zqTsȌ{} c;$Urs TщߵG' ¡MEZ\yQ!F:K\<7 БCqOhQ/[zcsuk0 `_>{3ڵYnC.O۪aآG7PG΍h>p̔i JͻMCll_6հ|ü?N%)bqet" <_o]V&,zv)Z '`l&y^ѐ2- ,Ld˰i}WBD6VeӤOeB@X:9t-ޣ8-G}߉a};~v2tB=)Me&:K]ł6dB SmL@ěΡ~PqϬ 5:edygF^zɉF(}0 ( Y  g 5\u@Ç)@~iީ jFP/wV^"P -AwT*Iy9댕9Frʉ<5&!^43ZJ̚B:1$*O\ǜyG!Ιtz*_r/C-ΛM-iǖ#5#Fi*CvwHL׷tWl6ʈDq\PQ?fsCpgKݖ\2քқX2q:<:_^$Qy'-'/8Z;Aޣ]fw@mW4E+#eja=V^kbбHXt~ޑ6wZ %}-&ZY~+XAE?J'qɔ\!.Q 7 ~HFB!8ӿ%*cCk㻎 aK2KOLA~顳G}AWٜ0 C0=$|!$t[ _b!$^{JVwߺ4 ?_ ~&/6t2%ʜomd۱l+ &CZNLc8>tP] I KAK_G޿!N1xcT.=%u8ŗ~7NEyE MK2x7e?X\) _rӜ?}%+9^ 򧆊M`YƈDK➎NvDkxtU86g? QIh$S6[/R?zQQԴJn rKSa8rpt#f9羽ŭCY88v=^޼Í5 +vp5cIA8@VltÑobY雴No^ rj!\pke3>_(J+kJ *M,qC 1p<oP6!Q}՜7W61@ǦN?;vM3sh!Ju9ejD-|q}&A4X~و`vSi/`qy*~8L {`rX;9P۫2 |Z1H%L*_x6>_smR!S J~} %Ei1-ҵއ.cyXRjKs5BX X egUX|g~$ܾUc9Ðiaj,Ev`bgOc<}1j YLTXfmǁ](4Fg F@7FhJ%E fp'Tr_[wY$f^>^}gi(/me9 "QSz9OԂoܯd@&^] 8%g*8s>`ω6lо}rĸ}栮ii9x6qԻũ^Cb!uQK^{ 5 StenCsG{o&74˫wJwWql?Gzy[3'tZ4t#:k'x4BDGի#;9Fiw? 3\5oLwW̡xݕ\f[' ݷ0#eE'f΃Kk4o7eOelXkKصI+X^ uI%@ͭ[Iw+[ދ'2%?l$|f%'5DƠi,M a~P*RlOG@A9دɇ|5r<ʃi>%^rJPPژ $aʤS߇&_}֫m\Uo*/yuFu\%wu8i}xW푂bTZ GЋ&K9%\Oބ5mk!|~ӄD@#G30%L_==m!m {?t1(Kт_Q,_&z;PDI(ocêԇa??h\w9<9O50w$T+et3!KPjf慿{0Gj~CFtqJS=XB@pv O"s;EPfW{c$YdķeKTJ^"/VaBآz֚ 4a?7%03'cۄO8_&673wbű-coT`*u[eتOK bwer&z2Lb0*Zŷc[9sW8 :W,wgXd|?U&XbC[y"T) Vc}1a9|mrE6oIo$[ RN噪ZqC~=D)ԁߘAmlzX{,eb,xLf'B|=xnhnɵߦ&8X:1[nA $Ƨ4"O^V?~~ף452O*Q8*f:τ ݊ϰU=ov6\Zc=kul#ClHe76`#3EHi,g 3a ?8dt!/P䡧Y1%~kHme+d(s݂)Рrb/@\'^2ۓkbq45^&EVB<3!njSA=.n4kt;Y]{O߬./4oWLw!8K[a'OKUEBzբ)UHVj(C{_I]~E,}eι6u{1%M>C ;B{a;_DVĉ&h`s),f}J חb䔉XNfu,8147SLރ>>.yZ |o}GqTb/aMlf?{2K1t>6 b~VxoAXVCK+22Q׆aOOMj.)eMdG]MS$wDH4o,i}\EI%y Vr3Y7Ǐgj`toE>˲y:sFKۄNØ TwȻ>:qu* r-ND',3qhI OnCۋ|#YDui.裣g{׃Y!XxiOUZ&a =PTචV?}.CVJt_) 侭2 }-{3@ ]?s?T[ >v}GrUZ<>XW%.-辑)dZNߔMAh8D{mU(s62 lYi]|]z3-4SĶ=k#X'/y~Ncʫ[nD=K?0yb#PIR5:7 ŸSp+A# @2z 4B V '}; &_|Nimς7m[u/!d6FHWbn 9), *At;lHKR[~b$=3zɔ?3A+#bcmч k+Q,nTfu>i7g%[>kv!PL$GC;3sVi?")~r#)߿ իj"Ew_M ɂT٦c I}rhp.uٽb6ڴ` {,=5;_="WL7F\`5%L^Qbھm,W&䢂& Tʢ1Fk )FngiǾ]ǰoJ>ʰ͆?aK^ST Ae? -(~[RWC5()v:i k ;fu ߷[rj.?>3O3=wi6q$q @\r I0F&0\=.]~8#^dBMK;*4"!4Ƅ޻j  9qvgj1*Ko0tbObJ჋0)+ilÓ§EyKHM;*xf& eR Ž(P [E>bC@pQz4yX ȯowB뮉6Qey2%LmUrI `i!mHr /קQRtA0t`?3kiv:GA[Z^0J7W5/3[mqPzxfm'G|-(>\:gC'v_p2~SQsCơ;rS$}ec51t[:AD{h-It =+u x?{V_PyYgHRA+c|T0DDP}&3>tqfXPIv P͑a؊~*}qdĠ–185,܀_MV#\W}%{O|Bl>n=遻X:|u7dְҹ/U?Ef<9Ȕɿ?:] J v[߁&ZgYV'K* Y&#ϘYw!nG7#ˢ3!d-I2Ck=sݿ/$GK\\{:F3KZD(U5UÈVfmxֳ@9ΊQsB u]+i`x"|sι_>:[v kRiokoK?jt[I򧚰c. Ĵ~b׋XZ][4̜0>M9l=ZX^6bA< I~+w+BO}>ڝzZUq0.{QcdP<ȹ8Jisj!aTYe(NHQp__ߧrHb052H"G<\Misa㰽'?A.q޿$P‘Z5 8{m:x`nݐݴ&r|Zn:_I9 ͱ ԛ\N0;ˌJ#;dH"BKYlNuwt|eGN-^ۡY6JWL @j>>{2 mJG;jx ½'?,lh4bY|Yo$DSlĂڞkőbIHn}/S,nnNScE!{nv\CU7¶ 7HI(/pO s\E]V3|eTu(WX!ݞmIh\.FuWб$MC ȏ4Oa"y7?փ&LG0ofF48a1WR|ǛpxMj^*# ^8zACa3lXn6\D*z OBxym H|ӡ,FgcN5˜%,NX?mZeWrqY[s<|88֐Q6?FuhVPXyS 7Y%^~c6!=oZcw/^.q9P#ixa^ȡ ͧYk^fBIE*||bPPzjބ> S.f)rgnVy`elLɯ0 Z?#vPdيB \~&6RWj{˩?>0jq~3v +-#+OX|[гvNJ ZNUu Ӥ$l5EZvIo%> ć؂D0wŨ!c{G껂Ż>N’=WyA;%;?bF904R_tÅhgJaMsz!ƱW2~EF֮*7_ܥX[Iq>QJJ>bNy⛘=fDۮݕA/c<Õr1},-`.x-ҡ>:sj*vP=dzI4q<'9z߂0}->,{z JR!Ax^nܬvw[g*k/[Ls~:ʓwJwmr7Vz-_(@%#v@08#سr0R𻷞@:bm {%)dڥ5{ƫi0a %ίj蓘NO]1J APnFu/ 'O b@[Ĥ:;cGTfYaaq-D.!TgphkDG -6$88sk:r @-Hl4[R>şq1˱ .;]sNV`@sN5YaVzFjI[Af.I\ ~"y(qTIy1i|)w8:x4B8B̚h0ۍI8(Sr+"cQ}`bG& XX9" 2h(CLf=O1ӆPC1 L? 6ɉ$,&هqZC];Q4|mƐ/])IS]%5>f 묱 Pɣ%/BD.U(kqM5fJ^ m-@hƎ|W '3Ov7"Q:d<|o춢iCNěX?*jLK*۷c(Fl,;ŋG(n9`qd2]P RK`Q@yY%mi ]Pc>jF2D0ѥ=,<KY0mT\3!3g%>{.P$ˏM\z$S}8=8n7|ZAopF7-WLC %v'7`@N5wP8wO~?8:8pj>[EWJ蟾\ukZgH |CNH=s9S_SZ¤v\?zO07N[܌͹0H}G~FvP= d~::b: V(蕳CR >F}V>~W r}y=st'`x_WD 6ebWK8yJ N3b:)Wå+8(xP">WcY#,8udbBdcѠXNr4M4 (G}8bD:$>ٯd|N:mS>و8sEyGU'Ĉ:]$/izI0~TOŲFS H͝<>LU?2/C^=vXZrzX+G2c~:Rb-jءqG66k,gu c\WdK75q +|Rs‘{{z\鑍(n>6M15=!©{I4+ͥ;77 *OՄ3{gJSA:E( xL)'S 3O4֛NS'drq"w߾s]Ժur,;1l7qu!}P3_Uh᥽21n|o>@V$}E|sC%!.LJ` O$TrL0~|MJziͣUaNt{\-FEX+r<ѐ]ǜ Ch&f߬ǪWo陂]={`.O}TS)}8U8T+%K4}PƊ^ncJ%_Š7pѥ*a!u m<3*Rl{ U}퉥B ] ٯyt?EjѳZN&# /lcRb4E ,e7S*`>ՀUϓELҘcO Æ34}ՀJ${(C?~Kk?/c'$H=f:=+pceb$IJrֲ=:%d*_Sc٢z`;a'Kk4@'2ݶ1JUJqX$~G{tۯ`Aҵ2Đ 50[;2ѻ>>a?nPN9@:S#XF *,Ar|*PE Q<^`\X1qSv\xZ ?7m0Ʒ࣓X5xr֑ EV^Z܌#O|'~MU4yyH꛴^*b= 4j|qix$V->IT0W'fE@c}*X7Ϸ }Iז5aQ֚@n,x2)"oaC~6,f+q6:Fl밞h'źgXdO ek-}[%,0x$/RWAxUg!$x1NF)vu%x.BflҀ+SpZ@a#DM5<*oY_F-}()`u:C % tGIC9|I <  ldVh|V!?Y0B϶:ey B>PhջςHBa*`tAU zO0ڱ4DBwYwM]moGDZRc4&q584T ( ߓ Ŭ-{xkuum N1Rlt;'wQb(}6_8-j79"iKw9%h-;tpAAHc {"w3|mv`ʹ>WL:t;B^CB1m 0ٿL %|6c*@0 NN͡!7Y&(BxhNUWIKMP1Lh{ 2n5PBgI43(<^C&(HPUQ-*xy}I\, T?VaW{1RITܛ{ yrONKA <9ms> #~?5™cT[Pp"Q9d_X:9|o$d%qn`RESCqʛ{7!@!DP0z!P%a>hRfxv*AQ;b ɜ- 4Ie00ř0xcN!eHSvHRh@s`T|Yz*0SF{HQ*k"H9dr{q^9ޥ o%&IƃX z5UoBUN\d1ôLX[ܹeq/kzoc 2r^控 ͹\dէ%obk[{{b|Ė.Z&*fdލ1Qİ/F >*/=cr%--83:-Kbvcm˥.^vnz FNBa`nc#_h>tbԍ+u~ZC:OP1k_]rt?R=HA,}1p|cm=C8?Y&Tfm||8hcCA0j9,)|s2 0}@ 0)!4! UW''ء LN`Gfj ,+;aoT?cw4GN;|CnWs߂rg)F*A?{E*.^Q60|6Ze1t7Fi\vqnmhWMa!u1 ϖ- gl+XZU!#82~nfʨh]#p |(f;[|HY/V:λ݅ҥ6g:PdOX Dcf_z.A&hO}(tT-^K*2+PQ[3͂zqmʥ; VYu FOvT-Mxf埶 *Ͽ98ec3{_7 ,,%gݽ4]J),gC5ț4;WEn>Ŷg@^n&E±С|N43K~9^աs.}\<.$?C 1t4:CȶʘO9@ﻲE[/eaӳNbؔpo',ǂ+*Ø~H3gcPrS?Zʨk[^9%;ur{*o=rF+̲" @|Ad#ch7g4>-c»-/XNdM._ v5Ȏ~1RûNiڜʝf,]ϽnׅG|XayqY-(jYlN&q" )2}) |AYbCv  JL]TAe=&|# {@n֊Lw;zHA;PjJޣϳ˔iD%6 ?A*HCAgt")yG'K@dIvRh @YE}2o/qX*~>RTN|tY9.zAQb E0R\8 [-y,]4?vxRdflrލH_6u,3vAF)_" ʻN8 ;X`oai~ If>rzS1Tv"UKtQ1\:_6{ /d6 4{1954 *~>f甃TX;a%[oL5[ mb91$;k%` 6/(ce" ߬H<ׇцP "BSgmY BBѪ@O;g C'DIʫ-s,S0=s] x}:)hi,2#o7b!21-bN&~L '-8K0iױnBooY7k9ޝ'oZ XӺ5։' v#{88}F <[Æ[q.eb lW')bqܻXPa㪼?lu=A#;)` NP3gW%S;V ~ɊPRWVSpA^E\9[+gFcrtV HVLy%&u$W꧙ۮ:'sbE#acGPBC[Nd9=YI_lZ`O*?'6=ګz;k3ە{_aE/:@&̟eF_+HMm_=¢g PXJL_9fQ9|\AB­q,5 lgU{oߩbO~Tv_w A, DI{B;_GCxd)1}Ԉ͆NžO:+ ;$ǃ`!Scr^p  ܮ?aWsw= A3 B-lnhd1}7K6H. O+*|ašw{~ IL}~>$znbvg>X-,TL4؃A)7Zq}R"H,xw7̣gc%BݘoWh~q93|rcXyyO Vs+Uc{s]m$2Y!؇SP&爛WWΉϫaכW_Ǚgr?fVWB_ \\@bbhú=W1Q\y#:fIƪX:zX'V4Evk:cC*#<п|aݎzKuX/¶ѓ D ;D ڔW2&bVJ3.X`m#XyA 5_7h~@'cjrb&w[ae~!zM~=$ RȠb a4};mN*|5C'Nϱ6\[g{82ތJCP>w\ N2j`Pl=o(6=8z;v73Ų1Fb vێ2,8`nNHl2ѝ쟾? %c{ڢ.ln0B법F۸@A+̰Mw/Fb( vS&H4;u 6n[J/zpE.G-[AYNkTWZ:I`e%5q|p>/aեH\j,;Yepvr O&Y(cˇU{P(iDKY;L`\SzTP_$WU WOb;\~v7?r yeap+{^\p'Fo]ƞb'v9ǭWz $:J~boyIխmS=}s:\NG3 -84X« MAStb<{C[\ޡoai5+u܇6.ߤ՟<}[ŵ2Ғ`ѹ3Уrv)Y>a8VGb^h?IH2h,8baMTi/K^ Q5k>_ mCK륰v왌97+$㤆IC\|+mt7y<-RK"p6"{lǬA4,e3^4;uvLHg`ήX/XuO])v.=8VuU,*wV&^FWyNy1`HO TG?PqF,3]g^3'mߒ?޹o<Ne69aVx`Hh[l9.j PWŷ i\xwjNz`Ux$CmkW♓ ̇Щ[ 4Wn-qz&&Tr $0tᏄ֛mwlx)Q!c`S+fG-ue jJe0yAedW60whM_o'mS a406Ky?0OJbbwᑟ fP\!:ng) BTL=~Xc8UEU1byg4;m9ւ0KC48qܰ`cd7h5[O|{5O㶔?wzgF&e2J$-q O8w(_ޏ\2,!G@fCnl4pe1oϳKG Es͞Qxsק7cXkK;! *O@F$ 0&^SRe)?ϞV"ƾ]b/cpP-1b']мeD3P0md!%GVفbT1){!y9XuY,>ָ4Zc~(M֓vNcҲެ.̐|m2卟"6TG\0%!猪A4vtoeG__i+r4) z:5"V-v{ !\Lxvmʋ_RXrѿN ⢯ė0@US)4ЇoB*}ہzq:g=ylM1 + (H[fB ֏^#Yf!bCУ> c w',Šy}o-,YT4;#Iw%mpbJ'[kAa'- e( v7ghc@`+:$?;NhYb{-NC'aƗX)C%`Y\Y%մ4 \zS(Ə__g'GʯB6rD 5qPzj+y7_b72q$abȡ*utjpe99Gu`[u =nVl>Eiv܃8882ŝ}$fwE]S\[~a¹Ϗ{Bf@rzd5bvz*&ޥ4;:_1}!ɞ'߰ iaNB09̖Hj$>[Q.C"47u7N]<]e*w'Bׄ_nPph}\g^+@lf(&#E!cjwF˞\Uo޲v Hȧf#nGBT}](*lio^`lCWO,;_i3B1簷x:D*킾 bH!Py;!VW5r* ഇXjJ߾O#d1ĭWƒo@ٻ_!Ao|$^692SX-!ql>G`5MkM$Hj25IFC;_nW$ϭ4l|'K5(vE"1 WxosIt0t{%E};iA o?1_D46uZ c9+I[^7GGfVq[G-֞NNl_Dzв̺sT؏35o sTV ^V7ظ̜k|7L/-yeA)Ag㭲J@J}:g!cY:h^3V_ O}S?ha3((UĀ3Kҗ_`> vsoZtÔRCi[+&q 4ZHa˗oÊ*:鎀t>kP{e7يp{讀HУ.NIH\H8`dl-E)eҎp<҅77Ǯ `/MQtpC.[V9Ѝ;?; w͈>Š ]9~c- NK *Odv͵‰ΉCHKW8meg]"i7Ld+x%|wwv; WS8HR (Oo!>?/飸'>v"_\(iw>>GZ'8=V .e%W'.t\_ ׂ>o?N7ĺ6nFRS4K\)` ztuG%I8Cٯw?WM?U]6O4v3t\ngaHD̓ SQBi8th#UYh-u^z8O9-t@;=۱=.Ρ12z1GޱRsz4k`4g 33RYZyVT|OͪWŚ#Q2ߌ|W z8HBWN1hύ=7 -N@[&^0a_B  o[B]3+4;uPnZWX~%͑1:x5gT8BJРh}E,tتXS=<.SA^,nyBVrEY᪟!!lq*ǃOd-⨤'ʌ\AZ 7D_p"&a-)oAםlO筰/K/1ϭ>%sD9}_7펁ʙ;ob&WkviHުszoH(w׿ZLk`'WIJKO9' QE)ybR1 'e+W68p-4j=Ë8:q)]g/FȓkeuܻL-Lu?ƿim^YwBK\h;RPI%)ӳu }5y͠E/#*Ⱦ85@ܫ#t:<Eh?[ Zm)?N`IPkuC1w?gwYi`.==ԙt.˞!Ȅo!7p_1{,uh_"`3π,hQ,_/}ohX $R`i0!w,C#Ŏ[ S d FxdV˖uқV|܀_^=M)_HgXi,㷵_ vh؟w2*NZ--$+SA 9@~`d^g:+x56?\SxS%6%gs>`S=~n#WŶ/9&dg?:^Z<-8BRC.,4s=$7-TϤ@zPFθb~l;2Bp Z+eb@NQ#`;> ai84e/Wk;Fn@dM/>N^._[ >70K8A̮(}ed^bnkȔ|οK_?c"!gXLG;;n{}zPBvKbD-?~C{yQN?ֆ eG=-ߣvbil"w ƆSA| P'JWȱLneY(ΘQ)6i\b«![zl aê&c;?kW"4>g_ֶz (S>V'.QjNxDh>̏wMc{ZyU#W\͆].RUs[oaKi!oُ dݯYU. -<@O0B2Ixq22?Y⃎cK/7g\w f~P=zq8yla+= W@e%T)\ ߴ$T(CJؒ].d; k,03TΜ: MnoAOrDz+ĉ)roIϯ`jlvpaų9eNZ\7Oℹo鞬?6wڶ:]sH߼SACtpo(?y_ b5z@]8C[U &z D7yj|]i #\-bmgΊ:]lypWB}3`T* Q])H+WndB6Iފ.= N~Zx}q)S}V~x Ig34BFPaT ߓG /̫:/ߘcAMUcH3Wа?R)(HmCzmo+`2%5 RO a16wu'W>aE)?BbpǿÐzK^(6 O,:GCMTʂt!OY|]|wd]a/" }  EKZ&c:} kd >-A/!0HAThPՀ:ZŇ1`BRVIr0KNe(=)qP;ӷE|re3\o|Uiղ'1SgFg򇶳%@9`b*}iDRŶ>yd"fu[Z%ǏXEFԥ_ ܾ_ N%wxȍɿd0Aj:]1֩5z'l­M䟱J3P/2w1&ymἵNRv-_pVοAZ9C, >ƂK{NyF VWH@S XޫٮɤOb>㮹Pͺ|yJ s9SXyL7:9_v0|:wS]00V? j8d.s7Wcڝ.2)sˠU#,*_?eS0&ƌPەQY?*Y6kk_Ԕ8W_E &nѡ"2U@i# !|ɳU${CRi۷a7̑ϰmd +e,*.e_/sO~A mlfi/gŠ8trG̞ș.7]q +E_܋}9[]3$[K5HdlL$'z߉Ny+o[UR)IMxI ӣ|¶ /w, =͂ 2}eT z!+Ew_^^͠uRW{6HJB$@/I/A٬i3j(8[P?ņ䣱hE""m؅}tI2|(yKi &#߸AMnwc, !M^b)_BO5IOqDS3߱O~F&ߠãPk7tsƐƆ&R,8vGm\;m{{8.*20=mL}B\Pt,"_?L_haw&|bQOۃOk!if ذ2<_:u!QV[;<3%E .`uֳ/DNb-\']S[-2C`vu|{qIxRaͻ}EۧÒqvH[|0ۯ3c5ƮcF@aEѪn]7..u2'ވ6Eƙ2Qև%lꗰZĝȜրȚ*KhQ8ro ?tL|yl/c;rvN?n$>k;[G:b;)i=,[$MiOD*B#b3 6MDcK;b:62v9z`kϵ&ܑ=`鍫t1>("Zf0M/AnԄg#]M$aB$2vmg}C7b(=lUJ1Ze йqLj9Ɩq~\=4Bh;!WKO[t&O<ȃ*GZVAؘ XkBEi!Z 81RRx"N$DCYiDW 40djmIY,7OZc Zg&?x D}D#)ї2W0􃟍NU%C eI=ى<4{m%M>j eM z6^ %w䍪 h"wyKr6Wd 16!l P1|!TiqB2׫|(|WoR \gڎC},$|r="܏q|ca. Wy/ц[=A;k|ǾBO-EO^Hm{v$@,A <+)DilW4* 7C]`R5(6F3%Jz-Bݻўx=+?qTNdgK!rSXrJ/p? BFUXYn#ӾZ'|Vۯ.z2jǼ\Z5ԪWON F Iȹ{PsL#yU?kmȾ\gr W0ۭ:X;K?'`QձR[Gu9|zqL`\lbGySRF(D$Fü4)"#TJBVf{=scsg*ǯϿu<}?_t-A.᠘o քXILުGz5`}U6*= []rẇs}1TC^XuϹsAz5R#^٪74Xh{VSrZ=,6Q`[00[w&Bu .S xIo;}C򘪬fV :Ɨꐘ5=-hy` `Xs3P3E~QzB7uafm7Nys$$%F~Io7A^j?1?1"ݣ9'-g;k-NvӫMkeaE5H#1Jb,>el/-p~IPŸk?ZBVȶ⒮^Ů;pXoM8cQYnx Xޕ7 KC{ql_&.5A&Ǒ­ܴ~kZ8.~FBym`lOBsl)lp^$>OV5wbǟ$2/ ? ⵕs sm8&{Ӕ ꫣnre¥V\v;'fWvKA7)#nN}̴j|mhw*B/ opKXq9g3f灄Z~>9U~B$3$zl3=]^&(ņXCvQ3IsKa\4HW;&rJBQ| g,s:C!,.]3 ?)~-oG qslߛIL/o!/B/5q8N@BGenEhikVߊ}@/M@zbA5MIX /WdcCI̡_ 6X}+zG*ESpUMah s=6jױff8CC.g'b@trN<'ږ4n/0[ʕW1f׿*& 3_]RCh [|95ϷŴ2bjĶK?IwjdJÒbJ̫2]0Z]bQqJ F]im,P$f@#4=yr *O)B!@faL_=ffϋEܬX}M oJEbzt,ڿnjLiT:KDWɕ@բ](z~J0krs݂K [^Koױ휍vl& :9aa>vv~e=m֫*J#Q5/aM>٣8p4z*sL Ͱc]5&ak{h$ ɇ@a %'1wmH1ay>Is!b}@v^%%-5RbT}jHͤ7G]Bqh+8]!=\"FHٕa83\7֖u-ÌRe_o}̛ .,%גc' Pj^Q {,r;J`LI rC[>.3UȄ=hG-$6,K. 4ڞ>7_ʭ$Yw"%s|KCғ;! "=M<u)FA%oHtTj+:~ "IgLͶ- O x\} g!P d{fl8x{M|m?1,eKڋ 1I?vchA5oOۭvCGp˯Zr0CVm^7 ̆@hO!x3iۗ hn%gF2_ 3P4w=h$]|yyrU,+ZS HGh/lN DERI8#Uv]SH ʯ7ٜvEz,-OjƇ_@0A6o_CŅUOߏ CYtdř,m!Z7¶j]sg#AXx_L|\]c;ꛄւʣ9q ƊH^I{$ J Y1M4h{TوmZӬe+p731EzLRD-_E' b'-MUSdվw w~6q}Xr!+ؐCn(6ʻ)>`moP4e6):º'bFY)H+m* |MhTMKPR]&~ԧ-pj=!82]+bn{Q^>~2flRYTBzؒq[9h;?W?gN)ܑ;ビ!=ar2~ HO"7SObuX}uzA?]o\ La@N=R&/a+Qj8R뤹Z iO:=qnu+8Ջ>d+)WثEYoVp/wx\ %ˇ}Xx]&%R)& ݽ.l֕Ș/Qz蚐GʷsFS,.} vޜM5=\&rɴ["VڏK{y {pj*C#a;޳.8$ VJqɮۘx gD4&Z3{ $]ҫpr@2H ܹ4]s2s}h6TuҎ_4aU_%,oZ>Ɗ6;Id)\cl1sJ,eE~~k9c"%5* zT& e {i~bMu_^%nփ&sOcsx5^gĨH ct*Q"-ƕp&bs %! ^ZC,(s69KX]zI쩵tice VB7s^Ͷ(-74!,,xX[hWݗ cm*m]`;mq| FbM SUҀV=VԞtWUHԃr ]Bᷖ\0ޤHtTю׵_`|AlT 3z| ϗުOjt8 UҡGBNXϳr߳(ģ>Pv1@J'b~=QLb_r+>&~6&G9Ur#W4tw3 z&a+Gx(3q,'|EWRPc$yӐH_ *qנߋ39&=~ٹr"F"0L2M*@bw ,a$8 f,ʿ˺ٿ8_|HT{AL\t $Xu;;Mթ& Zz0:&F}X;/|{ŋ*;`q>-flk?lXKf:uM`[]4)}GX"Ym"0V]) XV8s FF|a 70W/k+Sa|F>PuKC)wm 6t47PKiޗ`f4340nLz4!Uf+|&Np=Q6gE]S ne&*ʾ13,+5r&}lݩ&5GvXAzQ!$Po8$QgVfKuwAE &fFNvPOaL?v5mTUJ=Blki^qrT 3jW] [7E?uCLetB)4B{s)&'BWzILV59>& ܎nIK '`_O;EwnV`ZGsg6&!>XzzJo,๳o6,'Fl;PDZy6k@ QiwlH$ d6Kafli56b>bGelh_7nÐ `W,Lv6ǯNK]1mI Si٠a3?ζn{?T0qH \Zh8GjO Pߡ }c7br.X?Ԃw]v!* ̕v F=rb\&L#sK+qgt_5v{.ŞG]ml\9ʷ,ٱZ$C8~^sC}X/Z\Jn,y6x._-V?cdawIe ^O4LX<+7M@];ز2K"{7$68ZZz`,&)otn񥗞w>Ҥv r]Dz}{6 =z[$mغ.5ŏ#d~\O"q/WJ==I~t:سu&ǒ3"iPf}@ flܤl&_Z%Hg}\%& yN 5[ ' {"5Bϋq׻O+`قo7sYd[ P#U)x?`ナqX4]"f%J*:- s& `oϘ|뮋 $ ?O=v0sA4X~rTZqm#Y갺fg8r6}";ό/py^ƯQ\IԽ|m ح@m07d8e'h?LYF4tZUqKP#H)=ҟZ|cT N g+ö$ǩu%e0FWC,XIև5p=MۡOs݃*{Jb'˪Ϧ~?m3j֟'(H\h)EyW5 .acp)_&Ho@8X# =Qr+a83:Fzq)8]o_#Xeٴ G 0_AB^K0闛8;.!UHFq1_zy0': [)EbϝZ'_+ߪzΥt6 mYغSo4gH /pTD '1rGdߋMO3AՇꯝp-1f)P܎=GbL%njQ_IzX96w XCM{x(˚p_W@ q)rWPbV(𰅤fQ}SsPI'G zl&P1UQ(zZj-E(P=ސ?sꥎBG*ܸ~3.i%^WUCwRSjT@d6 /á-Ba<^[*D]{a>xG~UWn*A/?~/C-11(~OAvygPA9#P%ZڷxCޯQfخYNZQx6yXpŻo˥{aAmˋ׃`l9s_m0 x껔iA^IגPQʥ݄G@j9Ww܎/m~ʞw΄Y~}9+_9S լ8ɶrgVmxoX)(W5d0SHUVv扷> vSx> S{T[lTZr5qRz9p|ˆU7G`>I3ȕ-|6{Jme|NbPuiMvG|S^-8[-_0ŨzTݭ8)f|<='oZgybgy$ַo'js>ާe2xFsfq $# s&Ue8u;Gts=f|wvd>v;Lw'ƶO|Ne8Y=web'SľqkzK ĜHPo훘aїWX}4?GOhփ<77fvW7Xu?;_:q0QigIGuӼ68$C53nSYW}HEwÔ"qClc޸ƃyb']]S caLWX!49p[|]+&|/ƊvEHNY;EQfswS/e5a {hVl㿩(xaߊPg,TN qf ~IL%^PMsQ|Jܺo\|;ퟪ`q4aQȾx"F؋y}eUtۗp,#%CJ)*9BZ#B(PW^քwX}T7Y7Ei9Ao>{~8zI5qw]Qg `8{ w6:^@hpgD)EWҌ ˆ}o3.mv҅'~I?PúV>y |X~ZWG&PL-+ců00#p[^U>0첏ihX}2 (uec|~NSÄ,d#*_ ot4]0b6N}/콊0? qC,GܒMރK؀t[!4<_ҫ&$g|Fun6:,Xd5@tŸB6ÕP-¼0 oX{)&KA g' YEBk | mr1l{FՇ$(M/AL\<)#\O.͊@S;0wLG 8ZCZF@+<|][KnD9(k_޺ccK1|ܑf!f,ר 9h́{ b;\}]]] IV;Th'7lp㵃gwkXmا%I1Z)UxG{]Ѣnzi&b(z{p-߷sd^zh_E\jv F8Hk\G9hߗ$gp{j޼_5q8<C" a͙G`,}B>`v[~^ʩ$]V h} +:7SZxv?ĚJߪ*x׫gAm u(Zl@>ig4FR J- =x,*; -׊Vv מ~kBKBX:TЕAY-~ٔq r.t)?̼Cٓ3Z{jA^.R ̮#nhM<‰+^h ]{B9]uC8U./[6aD-ɾm8Bg׺˂aQkϣf lKw]0ûlpޢ)s4[LϨf Xߴ h-d#oO+HZ)c}3sva螪:0MHf>g&_MsoA]&Kt:: 6n6B9`m3 v#iNS:VԸ`c( |Q|,G]io&[nF_V/LQ ۪1r$bmO=BhZxj b P *s X{]x<,ҪP*"GlvsBѝؕE8CA*a_IzDxlc}Ys߯/Ѭ+bC|7_PU') O~Fe',$IE/@ك?.&BA}E|1%ف9~RF7@¬b=K l F@ݵK-"U6X;%H6~ f)g.~@x. UFS`nJ%F1|EP}(HP9 s5^|e t-wl٭h`TsEq!IU ?߻,r B=LwǏFO/H:? 02@ZOE_V?}3wa9ڟ=xiG28HF>6b"kylruY S#VtKagT_nł:}{tH[Z"E@$TS M'.-hA}L!Bq3z1rՎ $n}  GOгB7B$Ak0֠ͻ]F.7awyq5tҕ1 ct9c{5a/]q~hiv+;mn_>HBM ^,q|vҿ}.j8 3AE>?ҩYhv 9} s&ʫk,XJ:)r ;Щ[6 %"ܾH[@As %˲=T[D04Op9jr4&yLqtmvAΫPϩrޫ󪞸g Oaۗ:8Z zg)ߑ_P;O;ćP-wavGV^\4.B@3nræ:guV]e4$I0|L]A 'k: %89 o|eOr Ճ & yv'BۇH H)Ԛv{qpP#TȭlAٟc]_Qbj&_͆DoӸnF-Y @ %X *rr} E$F>'<#! y/H`$NjczvKzp]skvbE DZce Nl JԹ.x_#@d 8we>b#ӷ[>B*TX>mݞ g٬2 ¼D橸+mJl0+Д/- ۈ\,'L6ңwy7Щs"JO] vAcg Yfn-HyI8gHl%hgct&E<ф5}H1SD6$0oJ+BX_Fmt{q=͹N̹;qCEmǦGc598YNUon7*qh=__aVK+7l/dOwHq{o~~)N/!hy=/c?fmj=4}^v<T*/3CLbK 𗹏u%S6_o _% ^`1uǟbq؛90C[/\aй߄WruԔI$ﮘ4Ac7%}Vd%tOA&c=0U mVS"iPp5Wux2 >;xK @'Ǿ y@cZeHryb‘G5! ''ش`쏛{%3w$㠈cNH >Oi&٬5uPU!pi 0"Ni"-N)*Cmkf I]mOW$\{o K|;]%#0gn|)*u[|<*0[ϵccm1vՇ'\%?L1ޗ;YROajYqб>}~)ruЇ#ٔ8{*:ľ"rؒvM|{'Vw1pnPq*W!ߋ߰6z4-,+:ayN4,9}'l uk/tD#x۵38pTLf=y{/;qk8.8r,(  ^.wű;п +Z2qkl4 MrgwM:jISv}sc5g/_f(pwK]w|د408| -~Yw+_I5(aASÈ¥Sؒy4-aa) ?,̼ mn&IS-Ly͟ -[¢vuG$q\ܻ"~luOF룎Ӭ')-;$YG_ vLOS>¦- SWWwd"uƍ-.B=ySNh;45)ooz4.}( ½a䣠*0^#ڑV+;u":MѪzWcg㡂05`$lɃvW b(\׃Eaf?/=?M% Qqf&WC pRJ|eDio`mYv(67CuWrf5r-Y{xICR߬Ufz@f5cb~ Q{⇞;mY#V8ĕ=7_`.{HҪ=T"|1!KxAK59ާUu#߃` mŃ\N;mC|%- /"b3,P_~H;elnP|*eܿ|{XZCw̛ݦ%onwa] gJ=8^EM #C~!t [@FۧMZWi;Fjk[YV`12VWkb5vq'I7 Fu PҬW,QX<3:}F k#Pdw=e=[JkZ1A&vU1QBI鵶PhB `^bed"/oþG#+@Ք|g |%%PRrICx0e)oI$N @d lxa,8g}p,'x9'D Egdl$Dޓϡ4;bl^̴*^峃3:hM X^6t,(>(xǪ%(T߂n]!Ґa 'w&˞v 0y1z@7I{hQU?)ۖlb(E$}/$Y;%wBTVST yZ祡QqQX3C;s2#f6]ܼLj>MgDovF1:2'-2 QyNnt9#5-+1M7ݷ-Դ.QA{i(2.ζ]lX+ʚYbIџ 7adhW3w|^m6/CS!˻f,o ⠠=#-ej 04r7$r,2gHP^H?L΢m^Qlt+E,(Na_iQ,K>QoJxg*zLiR[醇^oBFMj^IHtf%ջ DFb{_,&6V}/mNv?+; -*W )g{@I<)&t,jO-Ą%,g1TaHnVg3Ї~$>LJ?duUinb/2n. ѤN/`cOcώ)!ib [c߯n%]"&ղ@'SYuɻqC8߼z Z2x(5cr`!d}9#3 gv4/B0aG~[Ei8޻@x}1y$"^"죶fw[þg>]^$e[zm;yeTR$_ٍ MU.` {J]wڕ<Ƕv/oöӥ1Yn e2> g@LMG *<wĒ :{ ݲK4Ŧ$W<9Cy08M5@I g<:ȌAGϪ11l^3&23M?G;jJ.̰#vU&FE_+º[rǐfHfTc/Dg;6#)(O" r}r۹lɌ]@b.ac61XYC<cڟ\|Q֥L (y(Z|gi~mVAJP a/Π'I4f0^<-FS':!ߴ m\06ddkBXPz(rX_*RaSPn`2-g&~Ja77 Lcc@YYS- రVnvl/GkmwoԹIO+=*~/oG1tȥeq.#Ӟ:^KkǠMugybs|/7}K>Y9bɕ>!2 :AcسlL?6ZtC1ō4Xer HRpO}?5%}=dH[Y[@&!!el5NDT 㠯J[/fV3gcM6;<^dBrYhnJMX_"}8h~D2n]iׄ>`͌ ) ?ud6-Տo@hFk:@ﲾthG%G.*Cw9XM /@ڕc12a$7\JK9oF/]0aЧL {\y.Eg(=_bN > exhi1jg. ߂KBEJqp{6K6rE2e_-T5w䄒X$o(xyK>5v*C%ƐSWzOa2K|(^q98 Z/$P)MƇ0[F-"vȈPJm$^R[f^Ik8B˿mC=>}v!:^/qbs?T膝a.H21*YH &/OmۺCӱ|v Sʼn}p<Crs(טCc}}& k^!ɓO .v[v|Ă""ah7{˿ZOl†PrM{#{~ ݶ]x)M[ww0Sm>`}\y@t?0n IO !5E;~q͞PYA1xMvjZ!ڻzU$V'ho~ $y}w4l DzȖ\G4[|AWz\nBޜ!FqhH6B,h{s gUB@ KB%m^6+p}sk=EgbC&tR(|7lǾ'@mIݹ& |ں-FB6r1 :^Θ5VUB߅hn;s~*t/=_T<1]YM|4̀qAANhrBJw{gTڬ& z.~;jE)(m[KܟB6*Ftpc;"pRI|]j=qZظeqndI",6P!JҾ\>&#@d\{WTC`X T : YJŔs_dN2=نfBZK#w*?pk ʉ^}ڠy"prkb>+LCʶ>] הBȪFC0%& u"`x'?롋0zhmhQt!?y~4p쒊EV=/OW4iP[!,_bjϮ*,B =&S{=5=ڮ^][ t'}?і("~WwV zs;:Y2J˅dF&_yrV{֕fJI2U(-?ƣG DX3rj~~ivnlQہq ş׏18=Hf4w2E.r\)Jf3X?fJm*Yluv.be{bêҪH|%K)v^1OA(j1sY ]É(R7>䱄CeZ*n^:qۏRuHB)3ME,y}GjN2AÑI'btv|{[V=΢キ&,/!EЗP}hw?5M+f }I3l]q"=?]"w̟8 O>CB*Qశ(܈ֺ./Tx? QW::CN 3E84}Mp퟾QJ{Ui0T=)\ڱoz,,W,w++E˷1~yZȖc|SD _v`fnť<zs X>Rp^PB ALh9;[clWWi2Emy^o=+Z' lJL36y%?nhcuʯ1QN_[9Z_ح@oP=42tÔ tK"`e5; XV3eL{lЬvB{A~tF,b-3ʮCw۸Gha8,hzY|.?fX'DH*W Pn%شwD%d0v7Y|dv3&i3a"5V1HxS7v8Fc0z ՗-Ux>s+aa)Thm|tl?tS|PDrC H(_w=fr2$2+xa~QHP \F.gڵ |Y=3cÏތXCH$w 7o=9#wFDC#{|n:}SuF:y1ƶ5[H:˽80Iv~ uE/&G61vl TןozICЮ8s,Ķ^Jxǩ˥}KՋ >[x *mEB4%Zrڲz΄ow~_QdW?Ca >?lt0׫#9a/yG U@Ȍ>4Kl*kҚՏa9ጌo,P%n+t7Xxpu ӿٞY6i[uY*Z0 g h66oIؤmwX'/F$E<CuPrҘ3@31ip#˛_ZWWUZr)(WI -_'9(YeQțto~U,РH 0{ RRB͐{.< ~ d@@skl2^5? 5?iƏA9gU{ۭA%U{(LO` *9~ 3ࠏ!;Mkz 5lNں{LJ+?}GR1

(Q#~%4g׌FƲ 4S1=vW@_Yt| : v@c.╟P{^qGO覶ga+fl 52'p2ʹwcVth-&&Xp ]ݔajAB3LD)|=-FKЬut-n'QG@WkC!wCbmr%]فqRz[L6wѳL~iJꝲgШA m7N|zW/( k[2dW7Py N8BN؅<.(짒fC(\0QЁ%Y#ΧN1׮٧G@vIheflۜ!䖳譶 Z59~gT>rNy9 *zb9EWld߽,ċGP~9?r f^dC{-:~f~P4j R":"ktSC!:kMJ&+4yrwsmf(vUC}[>z|ZY֧K0@(5ݡZv5ɶS]]@q{'8 ;>LfB.FDa?,Il ^pA|Z`Vj9_:_7@bÙ)j UI_|؆~vBE[S>\Ro uh9ʻi+W-|=n]Ɂ P7nи( rs[b 5{lhuOoѵ|,n'a3a8'QMS\ec]qAŽN||m<,Rt=[(nuO<'ݰ.\g?R9._Yz[[%T3;OZ +גqb~#῾}Zb)8^N|XwIF6l1`*,#r۲h҄q=TY7_9"6Jgp@NۿV$|aS4+%Klz\&* "(C]Xq⹔UZ v0=8q>.G%_'zU1);ILcBl\dul8i?$ލ)~!(~ެ~UiVi_Y_ &֛ķ@GasH$dqaLYbzUkEY-n3m]{,]:ׁ6lݜ}A]~yz D$[u'qxzmZ 4o]kE9 K9'~ܧ&YqBoF' ON$xȍB!o'ޤ~1h-܂x~_{ob6ObMf/  RV .= x8p}<.LwڋJk3@˃Jf߷ #.C=xo;ΔܴmnfwN3M X5]^# RIV\GٷlN>-G+Ca&rܴVQ?:*Mxi21w*v5C(5Km3y=G {Ik f> 4#r|bk?y 3V9A]IٰE;| 5y]U#a-N7iMBJϹ>)WT48fESi,̀P1wyXC~rAkɖ-ȪDv:,"^k5 bK]yG،T?Xd-ZaBA*?_vcLZ&(ZOKa(O^Ҳԩ?l!{㹘󉔉8Z~?|$}bB1$ nl YKSH ƴ$?–89'!QwB&Txae'ĸIi:$t~85%5gC}~A[m^?}[keز@#WL> nf> r 4 P27N*8}_eVKȲbǰC[$l:02m!O/{Hv|Ѣp3fI`} &~)0ʩMl,Oo:1I2#P}/m a|o!^(eO_.Cf H)6vM3b6A<u $_/G`(j Jٹՠ$Rب*T]ytMjeK`_%l9^תΏĐ{vXuSoFЋ>en9U]Zc{G<,.ٙ`QGa&镆b;IKGCx,(b H4;o@U0MNq#hhv&]'~ly >ba[cmr//B㚱H+t1y"U(_3`]t- a^y• -_T7Jx0fM1ТsGn `-&/dE;kvx%'KIEAh$2ϳ^]L,lg煇{{!3u-ϟgndM@˻&3Bw_bG,t97rS 5`r -y %Jz^o@HU= V,ǔP#Ga{]m:m9nC|Fs븝Ǯ@y~ZԜm,Mn(bY|~seYUDb[j6_|JN6@j# _HBZ?3RJV2TIc(W@Gՠȶ+4?MZ [\s+LCL—ǟHZLJ S\HΥ:#g8YĖ'{B3Ӈ2!^t ?NYC&|ULy&ԟy/z;/QeŴzv(QQ6o:QS"Є4in/9NnվoW*h#^ IMjUMw\] z'Reک/kc?Xy>JҜaxIh;/J_{ڽY:wUv׈#4pQ$rAf倽9KݳwOnfUܿ'4dع_u83;d<'ULEJ [Ywν#W^y@Np?T;9m;/ƨ?VM,`iktn_ l`e \3,F 0K$(Ta 5GHLo ekv2x+BdыA ZiÜb$ ]ȔRSrUh;PBf?e`o |-,:LV1L$޺"+2A=;]L9[.Z wŎtC!g@l, 0E$;m?܂TB 1t|~~ZW - 2u~-@ۑb&ãXŗ,cՆI2t,u(%|?r,koòqxbvl2GְvQ*_<C%/?bߓp^hI0ଥؿWoñdP\VSa̺|WhE",R *(VnV /%jGJ(p hCg?o}׾\[u ؙl˖ޟ 󥋒F let9 Uvtœ]ue+`tI$q `wæ/V ƷYYl^j<Gu|DU )i^)ꌇ^cɃڝz?NI)k/@4wv2)3]ޝ8bڇL/iNoqhIr:[vg6~}_#J$lvػʀ]"W~*W(?0I`CH^wӎy`}О ^FT $)wԉ q-[Xb!lrOvOPԻlaJ gǍ9sFh_Ũ5 ̩X@D7{@L_ډCl%-f"wi滏 ~g|]=O>9uLR`S,7=&XS4?C YH5]#֯h+ߥG8v `󇥴e~|KtlKD>I ZeHY{n6څ牝Gʷh'{:]m&kRb7x1 ZPVlpMچ[[٢nk~l㺶;_A׽}s -{X hדsdz9T3+A9F!־5=^P}5n#&c36<&OVbol|Wt~Z`KހF6Hy7@[^;?Tf-\R7VQAت;!<>hFQk{[Z*30in۵tO0WH0(~-Ou|EB-@ZTZ Nȸ6f '}k~|AIR,L3]oSOسAPn~V^-7,kdV|jxw+x ^ 竆pO_+0+O`MjA8Zw'v.Fq n9%ʡ EǑA˹{vCA7$WXV7 mn̾ &IkpBh&fptvź|tHs_$~e/r>ԬOFBUuOBeG[- $70$}kݯ(GV Tiϖ14>%C۴lv \x@)GnGbGqP{5lJؒ0sLAgG| O Pg21P*zk Yj+\C; jBr6f蓎_K=,{׻3t34 m7\-kY26- PQ/5 }_=8/ꄌ6vKIn),cT u,tocQd Y}X#VA$)sa+QX9+,P!D΍C"?WܫXvEf2F{=Ey;?.l+i~u-]m0]b+ԆA(`xUcmvoK;)+(6g]35=gq͓=ð!rHŵ% ~%Fi*.CoV.C.9afƹR}YVnKTD0^[gƢENX?V΄1.|(H Ǹ@K!_O v.&~: Tc ǺǗf7AkʧE!&yܻ/$ _\hy|t"L뎚^AMHP#FޭA03y- 01A6 7}I7("]vf9nJoxB!lqFwXH_$goQa1l)+u|NL[s;[a84opce$1ȹdt;^ kiwka}eǰ:\ElHl>|zcyVT+Ǧi:,eZ?6PpcZ/fź}HL. eh®Yg]Yra[2E2"?d]CPqF8c;W,CVA iG;vxI,rMkT]gveGzh=NQAufpz:VOڋi]CB/Zdso̪z-z_Qtt; 5ނJaR"2f9sp]>*uއ-?;Ú֮]OB{+gt gv3]WH~O|8 .Kqkn@T6j̈́䢂iTni 3Bj7W׎ D1rsA= l )a>68sKzrm&ۤcȅ۶g>IFci0In3|3uI-.Jvt⛇~6xf9-K%^$׷S`r?gGl/uV)%%-y׿mp$vJՆ(0+ Z4衃QWk+J3ɟ4ڀWE+pEUZ2E=wFOp--\f9[EWΰ=q2{b8-!Wp“ldsVM]JyeLO^x}L;3ng{a8 䴹ξPHLqTNPTh vhC ]}3߄ejYg`Y0wV,)yq:!O{B"a;6ȼj|^8kF-?ȀћDϫ_0ba c%Iɂ5#L n c⬋/Pʰlm/ I曚. T'9@pħc300,4lUç&''1hlUGVjk0t'&!lF|[T}!Es]HefG 4r=PGi~S}xQRs܁:.].י3<, SnPqn0K8M}o u(h$)Bi侒w!/k9̜~CۻݞN{1\u, J d Ni6}cX-mc?:Fwci"'1͘0~55"s-Ն[U-qi87fߓNZ8LJdAk.8@w'~KC&~g$٥Dz[0;: c;Y'^?9%~eeBש2_P,xdk7BЛ$6P.8%,xf>:Shm":)Bfi֑Q0MT:C) 7Y`p ]yrN$&˷_\4 nB02dr.aW*4k^|:'K Qe>!ޫdM./iwXMѻuO=n|8-_ؤ Za 32쥗}qT& &JTq$nH; gevgݷU54s61Y;!^y~/i1B|4w0}-򚤁-V;%g0/䉺JHغ]v V+L ~Sٶ AHlz*|pJ2Xʸ:l!h#1\UL?]!\IVc7Xj׭;VqћllW&Fn/~YD\$#~(pF|\ZϓOۯ6` 1ڄއ"]]0~”"JS^Ԋ7O'wjk7_!~_ e,V7’_0jPHX[WQC3u{c#P#aS15vL '!6彇X-z@#V!}ns-AtԼouyDN28EbtJ}4ڠ(0m`9AOۜf2M uYtu=~YuB^{g {0MlH{ -vW6 R9el}D hoΞ;7w9žr@XLHM+ѴA>l.lZ-rv?.!Sӝ<~.{ =w]%3:I}9,o-VR"5 |1DDU1fZ@fd,%=K?t))ZCbslЪ Qʚ wHt/E[cpcH`0lnޕ-)@pϒ-WK2kRgZַ ^oo-&|@A-zP#A9v( Cy7P|9و ʯ8ni`y_1S`tb/2ŏF@÷{y ?͍;4zhDwZ4r ^Y9 %O)Ïawm{qµ+:X^+&HoS.!)LRHr?Qgle2P*I ˳kbƒ5 ~w wolO**Cº)ШN@}nRCn?Iޡ=AuL&Е&xP |^)P9YQ CSo%} \lMB| EZ0ٸc:Q`vAb%K8"oYۅnݪg"\x\~U@lz|'W26є{^ۼ0GZwYAr ?8y>e?/ܮ)1=ӕkXH]p;cYPp8UhoQFCJa͗nquU-ۋ?|>*O= h@qdbnGBQir))R~}R)i!~.uYɆE\P*p7JN~ɖ-ʪNE.9s/༖lo!EtcȫqenXĵy WUjH(=Mk4Ω{. ;߉r& (?. z\~_:>kǡ)5a tx=l\?+;>a:'䞒rBɏ7W[ДwJ/Z^d"H)Z~ );Do78b3 z a/3(YlmY;㇟"„ԕ->D goIJbjٲU;Qo`-y3(|&K7G '`d74+CQ&,KZZkuVi#ڋ\PδϱVGTb cGD i5&W3V9ne?v3$ 1*\H$V?걀aX*,׆]O3*R;[uM=_<d4#&'Q=ʓ.X#&Mk"̋ДH[ 2&[d˜G]" ` ; M PfbnkHl-:/amسp5+k o`ȥ> ݱ_xl{qlycJ vQS6aO=Xءqqgȱ7c$~"pżMXmΑ 8'+W}10oi; }Hr?~(ݘ[!@uClw)v&5a4jȦnnB{CAfJ) JS'< KB`O7Na}=\T7[Bhz4~z \,2WBY+)khu> j~.IL+Ҙ+N25h8*RoS<m/eEC=+3_2m/$gJ'7/yr`yL935iT6]_UjBR]agZiZ 5?p1z.u/gBpyOT"$/vcvD?<ZGVw.An$S[*=43,r_V mvk jǓ8B/1#\>BXbh~>T>eaꂐŞj\ ھYm}O0ҿ'QԆhA[ӏ@M ]7BL*4^,d{cr܅ΨFz yHuq.Y}6,!n?'mZJWc y:/.^m?^41WqjAt2=VtLZjH'fg8S8Gk1ǼWXa5"KnvW8EDM& :Lc,L4v"J+ b_b'gY籜˒ +Xij8nǤ7QP(W[j'r=|7lLq!0NI|jdM%ߓ{l8~V 햢,ĹGߤ{)+2vg1o_Vy\dB1hsZ_9-ҽ7§F} Xmz7br'- `/is}wEb1fԾ'p*t|.Ȕ8`YIKbJ xӹ0[ְ٨c.P},HelmñYԫ|6}+NX9"[Pr8߶Ǥ仟 d~/X$3ơsWu6j*/$PKU3;uB˥ &W0~0XWR3q ,L)vVT$FOYs!0Fm5xvUbNy,28D_jWr2( L'7UQ:0[QU.PJ?1r]y抻 9D'xe3i®]r,t+t+*k{w(;:h_ybhR-Wi@>_Q.5L%:ce҈vcaU"߭[&U0.E9[~kSKSJĠ1CX>4jľѺwJYw-zAm"#UP'@woKM'%ZALg*}N2o|![Nb?ƍAIqPuN7?q;6>_?;EʉO˿Esb#ϑ`ڒ Ɋ;=aR(X3T"Gɖh\cZ\ls uM–кirJap^96ݪ ٶ4aZal8I g*g* :k`;)v (r3a9l֑ㄠ}\iحQlJ2ɠPƬ7ϞT3[L0{e>b^4o8?HvnZ"BMep>~p ^a뎽`dR:t4ա9=Mzh9g^ Jd)2Bh;s )ktV9@| _ez( r[sB7M O08H$Ge^P6u)#46Hj?Vp85e.T\V$PXb?## 2*m@E{wƒF JLkk: ř'ˀf[ U;ZAa] j,s7F v@Zd<:7 ]< ewyg8۸i^wKo/`]zym2K̖,mq&ŧU.p0v7h@æfPӒi:$/d*b2>w+[5lӸ;BS'qdD*襊CSUY'A*ȶ* = _Ah5q;QG~s LHحAIMc; F'ä,(9xIc^1ocX:1y/>5 k@9ՌLESLN&{+G\<9lՏNUS0T58_K $ { &[96r[s hj^`[2R8-а>'kޟ.Mv%G ؼ!h}U]RV>MsY.]gAX~o0M5l1|4wG>CCbXͤ1l3oTb'ʞU(v5v 2ߠH*v:ʄb2bWVy_+TҝbC+fC8E -={G gi_(xH4aOykm ec v_Uiz|Imj% 3B;_:h`uqucm._*K^J% +3 {'NaqQۓPR ;q}; cڨɅd)!<9OD.]( RPQqQj_IG1,1a>ECK<]@7ױ.u7,~?Lj}QD ︆>CEΎm=ś_z_Gvh9}JjIC}.sPW^ ֢5TH3KlVE_ ks"zknT5Nqkm$B8Qe9 y:a8GOّ`؄i#e"2I #y@&i:H 󫙅gREVԴbm}vF~P-^w}D%w'0O}*(}m61"zoMǿi'V !l-n _>R,XWgsFuh 44%>eY^GeK~H(yp$O SM:z[{#Bi%!NjqKʉC}v 1qyPVģ1 (j-a0ӆM8Qsr}.v7Π5m֡ռ2fXubqMHs~v~Mz?W79g}FŐ׮ry!(y1F -{Y/@{4)IfS cݒ'Ծceb7 EECa=Jn([0(L gCuDc_N#$}zJ$boMNX*VW{Cj9xQw\Qa@:ZZ~>6Teҍ~XT7}=H}#t.V(㸨#>Y+Vk2־VOP6%SϝFGCqL;&C_,.Hn \~6 9~F )ې! TPm<@3I@ɕ?,I̵c;.;2keS0kC*0?- JlA1j˓}|$3Oi״)fy81Y^:~"L'B?ygC@s {4 ͎O? `bX-APU1'wkCap?>Eh99uleCtT걂tC%Ng4p~*7NMSm7,fYB`[0B(zr ٱM({W&4 P2}ʆz؂h餍my ܄oڄlxuۍ|%KmimkceIQ< &PnƂ57@pQx>1ȗOwr:SlWFZu݊ (<\w4%x%!"/=PF%TJu]+?#ð82b|GX& xU.Nc|PK*2ayˋ``9Y=FL88 3pㇼǺYU094k _s,v{PU(w~)PIVzqbhCNDunĢ=\A԰}5cP{TTaDq\ g_ôS_!yZCu;[bcNH+zW{5r2 D1,Ppo -7A*cM#hR㒃/TNۻbY 8^AX 40Rᇷ:} 7'*fgRʒ& :|m-zO@Չ= ^OCĻrSs7?|A) r+>1!b>>:.#Y_ 㵴Z7iڶY5Z _5,= k~Cz{`w h\Ş/gpX29< Ö Ƶr]Kb8̐P$k<7EV">`׋`]sf ؓFgL^&Ԉy_qQzhcȬ ۜP5L,$MУ*=X$=u,~ކ ӹ}@dVֆ&G%:U*h])RzA *x|{/n,D{RjmƦg==͓&V b\{VfB"F^Ou]0᫏g=0WKscgt{r>.:!̅y?@VHK8udC vzOha+ f8l4rKQx=,MrS&혰+[_k}[ӱ]8|iǕp&劌lJ! ÿG#~ 'bY`}:G$#ʋ?D8/ɒ`8Ws=Y'&H1\K63Ǥ}ӽ>GpP!;V3|yo,Sq_[?b=#h3^ µ#|S+b:nvy ܊|w)2wq$P.SN⚌gCeʩr\>geo/~mt-LaА-F=9 maJ7 kMhw{ aqW{0ϔN?X z\^csu7| hnaf?̾<@PnG0!kt5ZԔ]DP=P%v svA.MgvPSI(HqIBemnUsz];l_fuST=h`xUhL!Zĭe0~Ffzd髦Ǐ+Z̚Re 2>}$ZBV kGB& B)+*H 8rlB恞=)B?M~@0P˽Ź-tR jtߔ nN _)fl Y7B4U9N:%ރޗ$2ǃ;wGsmʼtvd[qM-5*U91 q#xccJt&t[^K$#ghCT>V'/[œknɝ~ }N jSĒo)U~j"W6if;ɐs'ADfE*1 HxDscxHne/thJbKq`b QP9p,F+:$iDo/3vo!6('E^]w5F LN2OUR =Yg K}:LRg9>3rR9Ruz/J?V  /#?Z߄IXMF1XUhqf C4_"=x^r:?I:=4qW:msIL$$^qB*ɻ0q&2QA3!b›m(DzpLUzaksQ>rՌ`F@a`WN Ʊ`b_qyyH@RSl{ճ7q6 }Ke+~/fqB03g2K9]R˩G_IဴN5q ν{u By=VWu!z7kDceΞo)r1f6\Cumecޟ Y8ag#3q,a2.0X/8^, u?nV"8K{ "]M'7ݏ-NVj^H;:[gpZcHEW5\QK*KYtS˕ő-טQ̏cqXQɛR oJv1=\Q}%Y1,ݡ7ɔ7٨ HEhD1>ٷq$9d>W: M.& *;=5ڟC>Dp.Uilrt{;m5J/諓Zl{ " ;zs~= "ɛ paKE?MԼ9V?p)Px]_3g8Za0WOE|xMyiLD~ō/upf)~:RL0mkFh.6hܹ"Jl pCiq重tֆ%Xb-vAUPhfϪ \*x}_l3RL <f.W򹋚hr=&Vbuhc`~>3`&W(V]'PT;/h@J\Oc+L>BP$dX{Ǯ_Y=HP@ޓwk-P~pDBw6$qNd 8$i<t<>1 \yCf7W2՟' | oaؑ˫?"4Z$D1,2E χStҤҩآݲ|kLˬANۈáVZѿP?of<iq<}@ v77悦C?W(uv|CJ@0yϴ x]w"2mi1bbenLTiU0D,ή9 J7@6[-(QA|W1龲USFkicmVaٴ8Ԙ(gnᮧ*9WLgk,V ~!Æk 4厔x4& G0'*p`k:xyW'N\ +సR'mmbHJ8 A,o,YMQmLQOWY35LZ<ACݮ{cw5:@W#*t^l<qE"+Tك)b!-ߪ1;`iWWgF"[#Fz`:{ir*%zE q0|_ oG/B\pZn`y[WH`>uB~ h64f UqaySXqU֭|/G *bYgԍxڥ^x7b7TOR^GC}/?(o(1* ߂VvqB9 _1ڇLY ,nd4?=n-+p&p.M0pTV\HM|t?)f9@ 6B1=m &[&'e@]M ;cwcGt<չ"CmllDe&F8XΆ φ{@o/8UT;䞪Xa/O?(L&xwLݻB W:TcbgyL9g)fbkye-ƾGFT{&ҙ@y }5;c-/A#bǾ=n%k /]iAK? NeT} B{? %NAK;_Hf% ׃.3sje.Z6HԺeqSzcULIҨ i Re<'(`=ëf>E=]6!h= 27^IN Sd÷74zAawՐXiL:\%I;# IGj)2qjڰǵ>b]XT6piK2!͹.ǝ'KZ0@yOc{w]T"G#Юx=gm) ?;;o/F V^3k5(LM|2g, aAuM V׬5`!F&ʃWr۾[6_CNkZP>@YfCMj!MWk똎:zO# 1F\67^_7T[q6dH`&'r/nAGWԊ׭:L*e^o`az%wkzq̣&,@6ӵ݂j{BCӯCwS4&3 MɃBW7H!|2:8kxA]{`^G+R@j՚#@c|1RۖoAA㜗!+APϼOeqC ^t1/ $Ǔw`樑YF \ꗨHS mY|' PM INwX (E=7OmV Rhf_\q> &PTĒ++J{1"&l:|{;kFl0!2jzĦn)p Rh~J*FzaP{u>}r J?ʁ܋Vf/C0o PM]B,*=mf7:~桬Ŵ̍N2;"c9]b_t/b[>咳lyR^=yibjy~n6fPK6A@}[Vd,I4"i,cfOjtZj) <jU¸KΪD'yG_u)~bz?uA$,kĸ_0<`N߽%_2vtzR]мu:@7/aynJ[sC >!#tGv@Cokj w1mEo*cĭl@ReAt=ϬKބ淗/M9CƯxc!/Vid:|Kʷ¶Do`f{|s?6G|7v%]oA+njC q1ql.=[{'N,m8\/^;,Z3rWG1Yq>JW k kY(ѡ.L4&NjA}\&{72pA@8HAjMoTjŘF1|RFXҪx';` $Ɓ+Wkf Rc+Hr|*8y._xwo5|dy_m@Eխ&LLnjY6[d}˼j% Һ.u+%,j)̔d*9܍ؽEWTGذ=UG8 Vc/Eb՛o#AP(v|?δεJCA+Xd:j~"3&?;fJSe]Ӭ1[+?dX2N-^lDw?)QH ?﨩`^K*t fZgf$^Ky%e]o ݇{F[Ah}+, ?lܸ UUp^ޭ4F⃗i @; H7c,;nRj-ӫZ8)&])+RZ=_c2/%Yˣzjٍ,1T*';TE6fIb%b $hrNaPҺi&G~628)!cvZKzPp84y|y4Ts3sƇP++7;Qa^w{ZYNwδ۞m47ݱGxS_n$ĊfG052$ԭ#G"Š#g,3_MXarAe^-C5=CWޤهcޮR)PZ]GT3O~3>p6k1`x[Xʪtب=l`3WgǠZlT˖tU%3^vdr%nsPɺGN+ NqQ_7 uT?ՎoҷǍh]ϋ.1J12鳳2-pęd6$]櫊+\>|{Is,}1"vbKÏ19$WXI x `ac:gnбw5' e߼y ^tfV_ l:* 7pK3 +C=G$T:`A1%0ʱLy&̼Q3Њ'/m_e8beTXe+MvDcL|JJ g㯌$ؚtlۼj"0۾M^zY L/cϣGx+_Pp7 tH ^`({mm?$Ϋﵢ[EC"Xwt_5Ddq`m{Q7-sJ[ۭ<6wR1xDYS>W nSVZ+G҉_9pA,'-q&QaOlɦf(m(I^"_{M a-@$6@,6p9|q~lK.:OFkQT "X$*ĝ` Y*M@b}˿|GW6WUe]Ҙyŭn&v}Uϲ+bD 7W?|tj{~"EaÈ_ ,(}·?J\.h}>7؊=HĊ_3n?3V?aB| tˉtO{7orrjCkp@oC1ϋPp;2#lbNlY\$:n{!:dP(}&Ԕ/=l`<&= r7aȄ spbg`#̳M`Χ}kTR~W X \!q[船0^Ddv>|p b`E 828viJ ' Ps q+dY-^ ("n,J%yW8#>b?Bzl2#0]D4~Y\S/>aN7Qn0ʤ:z]q荰LUt/Ʈ=?$oS $~ngm8iA͙I7&h8mL Mj}iqI"4$Phr/?(w|ٟ:k(ip$\P+0qct4G>'=9M$P2$&J?~ې}ԟ ?/!} "r2*sq{gB({]׆;߶@My}+& ^B" ت+VJ|^c\ZàSzHU:%Ul..w~^Ls<߯Faݟ |Zw3K-Q"MV;CqzE}KXU_ x:VckǺ U[S:Q;*Y tP%@&ٞjisծSiD0ձD|Qf J & _\"@`4|ʏ_JWOx٠s9qX,vȬXȺA)0Y 1<ྣYYi>ClɓGO]թH8a5"4vu=MMX砑J;.K98/toǯPu5"ʢw =r0zJO#3$?E6IPf[߸+rEvPữzf%t[BL;Fw,Z̀{vԆ/-(:bW`4mW_SB_ه CϠ(c0 v]L ^ʬ5O0g/Xo*1 Ӆ#LE0DA~ lgXaDWO-+Mj]bd^-{aFύ;:aDzl4<׎>;aGU 1WòW#Nozy^rc ^7qKjn_ : A'ݳ.Tx.@ҁĞhR8j)vƠ]<\|v$yRTO'0U<hW<̡dEP4_azcKsf7ԏc{ŻƦ \Fh5(ҝ] e^ONP~>#ՋWz{_X> ( X{X@ׅZCеUv ;J};f+$BX9/5 AɩKTRA?yC=#ѱ!p!Ɍ.4ݨHʇ@vH,orrC]z[{/ԵEϒAݏ`RLPe7-̘x:͠,ʦR==.{OYL_; m ,HM5{wGOp`w$be؏mo7T[5d%S/n@'cFPh1yJߤ8?5G>"NoytT$ ,2߬* %1˴C8XOzf?3LP'~:Z&3GME_S?XmDZ!&-uqF6 Fb,e Rk1.P& gUg|;vVdqadUGXaw21Zrc/ydwb毕UGS;\2XPW¶ &rXB*J'1eBZu=FBT31\MmݥŒ`YVy }/qa=g=֨|ۮ>qYƩ|ba"n'y?- g_2Iḳ rFx~SӋ"{Kh߀- ?mgBfT{-_as߅]NŲX=mTg8>'cw?3ҏpv;E$BuJvحsIBw'T=z}lW\ѾSD>vZ8N 磭׾U_1$~0eoe7T*|*둣Ě;u&k=KO哖;a .%\[oL}y䦱Aɯ3-!|X.~J*EbZ@v}:b }'tp`?80%a2j_'э,B`&uY7ƺ2ޟD/LuvWb¬ص]MM]M:Ţ?xj;=8 :vcMUn[AYFޅ?X%Zp6MSCrUǯ@$R:tJS4CuG#k^/y?(VMg63PNS\r0\0"jZTqqpS޿66|ls㝌s*GdxM' KBJgܜϘ8}}ؕJ. y Y6Ndy|N# d?w|=_j."My>8R\kiG  $L_^uw@EǯG;>;:%(>aP$ÍTTG#e#@")ҁ. ':O2 .l,mijtus}uġxߡ6G$ ]7z \tbĮԙ7݇07f^3ةzL4ζMQ:sc:7kF}PVfxL.p|"5W-gӻ`Ɔ⭍Y-lI:)AfŽ7"KK3$:|.G)}czvgqҠA9xWrLF迳)M$0j"=Ps} Y~sep[R-`e2(9|" :Mݣ܋u%p.ƻ?+^ljǪaR"Ig?vIK,qbk̛]l;~NS1C䒢mHNZ)~.Al1mO oXff* rMZB/h/:N#+~rh,.u;HföC]9nIwyBrιVCgodGbΏbVisf^5ڋC|1 ǕJrŵc*,QkJ‹Gp͎jD=qePm~ ׌t\>rx-s#E$Y>H*༢J룩"WjSqQK|Rwij{ZRP/v} uXP MO3^C'Nuk]L4 ҧ#'0D=f8xEhJ7 J׷!aəi:t}gܕ#mWʟ@U&Y;MߦAeɳe~ݫdos3R!kO|`[WȢ`EM|Pت@[ , HJ\dҜLD">F[W`kC,JZ:0ɹ@].T5Mx,gli(O:] S)űH.dzح iSw_?V:KNJn\Q* x+4sCh|cJ]4%Cේ:RkS=*f^cO=$g3 _Q#iެ[X[fZI5#?=!SrN:.WZJ!e{Q< +3 3 ;z >h5?=shGYArSAv Y> Muiy[Ldz  _{PBA^ hyt9x\`7y6)]1?4sgY!21mDaor*Tjh=_̈́Ss0=^ش",x+?4~B]=݊ ?ΌzR K~3OŐ!g_f5S'P;ݻm]5e5PɑTZV<왼d [5hE,whӫÆW$?#}vmM;1 <JJf1݄ebכkO\@weNlÒ8 k[&(B<-QZM>OB-ω{v0kѿeU66&K^cg4tPJYex?Jǿ9ѻ̰t+Y(9q-5T :B2S;V :n`ǭF+ ?a{sMX|{l9H;̧hY`G\ʼpc,_ 4L*s`ٯL:&@l oOl9du|WCmd~X5'Pa yTX)fB$%xK}LaMh#Qa$NqGc$SNϯzC,ZqseJ aLl=fyFo-ӭ#)*`C4z Xmnv>WF+d13ݴMcvP ?V JNa: z*0{8Zk=> @f͋7~n-4 9Cʇ=A뷡h~- ݆qoXwhH4?j-{DeS'iqj;EU9 d&AUf0]Uft(,t\PX/G"?[)dx w!}^6ozA}P9ٝn^Kxᥱ]sߺR=E P22/VSnUQJC m%9l~ͣW%l'!4p5= ^8%?Ě 1Pj-)t~>_*>-ÎnF-l@q'2l0[ 2i &hZ!*&yCAz.L]; R~ϊjDf|?({v@K O(|Ysh*S{g<RX'V~} szLňcOs.=d Wz$\}3_VS1"Y;>}]Z}H|c݃8~ @Nyja[u5Ha!'C㰧c1+jkQ'x3gjC&dCcJ 53foflxCeM.ұw$CtZx"C ID)J^%ʸU|a ? r&{+wQOp-+4,9,:8#L[gM8$n]AGߖb~\د~X$zv U;u`c_Tlxd~?@Rz`iEvt]J%n&=RB1RILruC68&r4|xFDB6 ^bD eb8Զ }RKf G+>2H7W!= xXZzߜ₦n~ljϘ((E=L&v*J1oq\+_aUTxlŧB]9_abMl?Y,!fuxR]5hB3Jxɚ VR5{٤bJ׷GyGpX>UB/5T܄quMas*b>' w/kbuz )hW0츖]YKg-o!ݒj^!ZfX'Kq?)ņ|kY/)"!&2_Ӡ;:zH\>^@:νVTnnU}ܡ]&PqlB!8G[žgsJc\%S* k@5n_pB.2k;r堚1 C7R'UOc) ߖ?uwJ l.Y[\yݏ_rIڽY_:~!&6c&tqj+7FHJ19-zFw[a^)ɋ^u܀Dl(i{T+ y|P~z^珳j 0hw/6/b9zۖ豄$g Þ=XoT=K+0_7,Vҿ(% ,HX;\=|.{4ep'>dZ3tl,h K[(Ȧ\|r*+ljXKYw+4= 'm/CdX{,;*>d@lۏ͟5qrTl37ANX <,#K|P._Z@Bh/%GHUi{ v^N$drWԌ5̼@:b k}aqьZ1$~5}qxiBqOqA2lf#xl<N//fēꤐ6 B'KaQ\2~t[9=t8̽__X{TҏتƁio}uvN^>إZG=[0`&WIrw7H4c :=`iN3d0:A4_Ix!i`[hp>.12x`gJbR?Rp~oZ`G꺭_Y ǩۧDO ={@Ϗ靕3KLܾZEoYQl`0gS%3sIqn/)8Pv#6 >4]cHN_we@A7|kt"JEDCYթ"Ӷow?ޕ9_BN (bZ/xI7/XuS$Y?zL "z`݉+<Ԙ}8=.P:`a;T߈eZ  &xWlgtx;7QȊJedG) HB6{gq{ ǯϟu:~s|&oN-Ji{U's(cb>.XhjrVoIce@p(wF-Ԇ k \Ès 쌺/e8њG{q":$.2Dsbtnz05̣]_a=cV?bZϹQSM0Wͫ~R:OHTzC-6gk>N*[)`iE*ޅ 96c51FS0>Wt <I)%h;fhӐ٩agT亥ksu|kR7߀|td.ֈefd ZmPL;i6>[ߐ D͉dX:ɺ~kik6!#Fؖԙ`AmH㋝=ӊFs #)R.h!R#n~Y;ϛţ$Y&f]{ uTke0L[!Cu=,cKv(x#ߕ{`xXlhvj= :0m}GVu쉪a}c>P[祧8֥Y jذE(bytheƪ=LaOwacuy FiX GyWrGn'dRܸ?OT`:#}7{=j?ئηy6={7}{#Qw^rR`ܴwa P/!5tF ?lq+.%Oז8d#gzk?[ >?z ȳD|ª0!_įpxN)Fm$oH`Ah4O1p%AEaq4lJ4L¬ Ǖ©HMAӭ07Ж,t&~/i3=Ĕ/GP-߳4XJ\ V[SLAꓳ"4ܭK{%EѼlh:U?&ڟ_{AUm)_ڏmrI`,ͅhhUh53|8ŏ r3dNyAձsyPwCyt@X5vj{oGF*hlm&}o<7i+s:~~_}+%aI/+=124 VX~qAQ3 g6%L4\UՅp1wp`VkI_;׻+^ B,-*q @6PChRg^ZAE ^R&FRec>>))(@'K>2ɨS!pꗗޱXgSד虌͕mה7 <|A_ögW,a&0U;0ˢ]Mc-%>!S_E|6j|"98R4ھЗ1`q_Š3jfnPAQhʞpoPms$>2ÎX!tV G6~:k;dNm1 0ñ:p|Zs}Lya1?͆/7@>q1#]/s}Dh,sJ?n?9웁 #mk])( qLA#X:Tm[m*[,3 Ħ[T'.^њ$F՞1 )׬ gVy&}[<>bXKr"1nnI+m!A6 5E6]ߖO,'i+vwI*71#:CJ׆sb[i߳ŔPA$=3KpH vȾR&pb8o %; p===ˌc.Bq>Z!{-L^>6쌽1Ŵ6|>.)ޗDZBk0;m+G)>"/a ]eisTKG7/%i`yaWXxKF~"[2;aosԍa,<^=S8bf5a>)dWU^.&:a ;[{o wþؙ{0U4ɒO1@g%Zch]ffflUAh!5z l5P_^yMIRfWop%:odzXӧAv"'ߜd!\vW0ja3X-cҼ0|T"z9P曷~g,}9t-JNڜYy m9n:#'SvyW_o 9鬌c5_MYܸ>?ϙ:\Թ!-:cq"b* (B=jEXSpOG W'{b#"J8­Kpk,=;uE0o ̊~rʴlϰezq,V/Ĭd\ &l+[i(ֲ̭1IĖڗ8rs7M @z*xoVII$Ħ'Ʈ>WF-: _(^ AAdA,vYqڽ3Y\&O!WrBؖ,,NHB+a(>w^fe3C ϶VqH9A=Jh?N,`Chj zժe+鐗&\ek ^0$ ISh:<_AmU2{mSV#5<ș;]%/=#"8nzEvFc2/׎`WzW{Ў\bRIYtKDPuX R~+܄!`N%=^ϯ鹘B~DYLT^^oplX~0=m6TTtzVɸ>]xɬE˻ 'fyyfaA-|XH$-|$0=C-)4oI)!Zz(u~u]{ <`kg 8HtڟBsab _ڻ%pڽK2a_/l\VκPU'(;BgZBY;5èX9Ml5a0s9 ʋ*˟vu >` e9χZ !0m<[jLZiMŴC'6@Xr 젤3~zv{ypʛ5̟w[)N ,_lf3ߑkva#ĉg;c ?eGL~X]z4嵪W;g5KdϯĘ0 ?>ѧ@2UPJ<5i,ˤr}kKbyqGInP 9n4lƵ z߫zkX2R%C ɢbX5$ vIJl'%<(g3TQm2_UٻG,de q@t}P-{ԝx%I:'G3J:P~8^Q{Z^`"TL#-Խ,MA%n )m>yk@A£r#~Z}G(2fa3P"MJ߅fjz WwQ݂b!{(SRT3Q;0\CuʙLN#\ѝkX)z̻-&H̋9bbE81[XhO I8>JKXzǷ7 H+T71H8](;cCN:s%ypѦ~h 2 !6}*@׃; |B# _:r f7*tH+r|'=pEo=ynEl˛sb2Yơ-Rw$`ㆈE ,@Ԓe21'сv)ҊnEC_YV?T[#}+ P#mvE7<?^xbG T?~19=fjyBu6)Q,hQOWWo>qw<̭I.Rc0 WZ FkqdQ}u`/PKt]cxY_n\{T:C_1'%BPȖ4y\1 1X* oM&Şd=mZ7%̿.iAt bfc _CQ?L 7/rm~J6c=sD4.wg 5cl~j㵛jOQB $@ӟِMc㜠;d%$6a 5rCϟ]S%8ŪQA56 mMůÑtÿy9U+Pm"/$`Սc/.Wt+6iWhH`u=h_MLU9-MeN;lmH'{jjC#6!=RQ\*sh.j gqPsTXDtM3 ضX s+Ӷa9uLr>]b35u2"\dK%zcc@42*9k{ ӈH]Yp6В_ 9]DZ~LWȒ0 {Kľte+"kZx/ֻj iG{ի+%ovv=7tVo>o4Tt.}]7:a:ɱ&涞ZI}Du>H/B@0]CYyZPdU.ԥc!%0GԵ@ M럐QL4ĉ?7AV1g}U&ТgwhL,yzZP4$u]`\CP6_CG,ɧǶ2.Gc5#G!) wC R\ۻ!{ۮ0#NA1 s0HnAýVnaжo#ŏB_ LTBs4 w.H@Kh\YVleZ5cM2 +=" &Z>%&jijz@Vq~vbuBTD7g:7 $AG'XTFBP:4vOK/" J,9k%{x6u9nND6;^yߕ}':_z9h뮢 (t?H|{r=Nƣ_r!Y؏yKن~Xa%$}OӻiyEBHt6T*QƩ隫^d0p˙aW8tBi-3Cfg\ѯu?\ o>Tε5({*:mO0j蛾Uz`1"" 5b,ˈd|Wr1aј*d|kn=iT2F6+nn@MmmS/ ^l`MGu,{txϮ/ X%Bى»wV\ޞ- vKk=|Ps"MK=8>oVNF5Qq:O O62)0C5QD| 0:x9mzށCI((}BsbWȍ*~MaeqpjMBާNBtK]_hvn > {8SGKϠaG}t0+w`s3@=$ >K {L,%5D7e]0zR*Kc3a?0R嬲$t?=)Qmz`g Ҫ0|U}Le -Iæhћ"ܳq+Ԓӝ4%*D\>SgA;Ћ{;L= ?}Sw󝴉M']|P.-n<pm'ncX>`o7JUifF)@eFDVL)l F) o6ct KW~c1‚>2$IOCػ8 q0AB{ [9f&$Ut*-h\wQ($M2=tYa Zyi|bS|v o*= -Y^haN&  ӿa&D!f?ה _#C^ dSǙ0ǐ}|W肾guo}abC?tӦ4`y#_G0dFLDo[{DWٿ`fnUtjΈo3_=;Bm"Mh>~=*6~??q8;TJR&z.$`n[ݟcn&@ HQah8d=]Yo }L=0u5Z/w~-uasHbӜ;ZMrJ6HwLx_bsCƴh"/ ywZT``vŐjay]wه5 B[P/gî <Vƨ]{-v&ɓ/N,p=CGͥoj;+ɚ[8kÏ~x $2Mۻ.,aLvQl`ugl&êau]cC?eAV'ݰACu־Mia!Njv"[X%'80U?ebifck^= vɁwuYw?Rg-g;jO]]nz}'67LV`)'2kU/s:+y包> ^HW4KCP^|ST3i@{Yݫ绺' <%YoŔ7FX" jyڔ_{<ʸ'>Ɣ |h^VFچ9wMfrbI-f,K4?BJ=!Sy."7,픫皹Z{ 8lԳ J eCՍa2ih#[4%y$ J*=JAFɹbqL,I[DžҐ.;٧oMaQ3Z_H: h٣H}RwlgLs)} ҶQc`%%*lY9=( '1ջ%b[8W7 gPl .E 2r6$4CS>P[(o g^Cٙ+<7Pv-Uj7=.bohʾ=0KB"Lھ'+ .MUA^R7AhX9վ6Ai4I$)mu6yrw՘(u{7NɱTM^m?k̤gvLwuS]sXc,zN5熝4{7պ*p24><{qO1h2rb%ηR Oߤ xzpp'h8; '_[?/Ynhq+ @Ư6ptTC'8tsJ\5%PҰR P%H,xs[".ӿL_!>7_&h^>Z^ɍB`Xk~hMǥw|]:B};VA;7C<;i)K=_K"JW!hvƗ0d`5لjROktؾ3'Maê,48oZH(n}P ֆ+yʞ5JIb#a؍,%_>{aR=UVu"PvDoaM83wŕ˩zӏƥ5Fu&8}^;R|ȕd[BtANU\Eu~xW}iĕۏ77Ǐ2s L_{A0+u84E@iHprJ̀ o!iJDeR4!ƌ/!.繻%$u^J2~AxWǡ-.2 cb65Tp07-&aFQ\f=L8g:)[1/{; 8S PFmiG.%HAXfKƛ*2\ ʃ|8) p7Yň L}ྟiP}: D |"SVҞ,NÃ-jM,f=2CIbWO(g~?Q7g=bS7GPx5<; d*Eٿ[oq>f)Bf!/s#W:,l9h|lpeu(;|鉴DhqyN^zסwW8Ԋi,.CZUE0$g8*}diPɣHxm" ɣѦXO*N6&WQoMzͻY|7Vn{!W8$e]X~OY 9Ry.&O<q ʷ<Ω/1Dؾn|i=vt v4ڴ.]M8@$ԞU# R].6v;{;+)OKl4ή,L)/Aqnחgqp켏h>v}s0|M&F]^#0 w ttPX15%?hg $*|Oa"DtFEHznVfΏ!uLJFyckeÏ6>)^Q8?lZWA&ϸ}{yzvH0dn"ݣ{CYEAP=w"aI\)Xʑ|擸TZg*qH[Wiy3wCCorjCV\2.)2rL!2v tG^aMՖ 4UT3@û I Os:ґ~c ϼSP{ib&4MR 5h|64ݬl dofGtUkS`sc/@ŠR- Xr<4G.QnJ(ii݅f䕠H! f_ rZe'@ie-L`Qڊ? ]R*HUY^-37 6y%ָbVK[Lcyw澉V7 HO3|nfazص뷝Z侕jyfWOiÐTYR?9|kK'Ïbۉgcg淂0vɄUkU*=L'b1y$\7raƦ{[󳠜'k^՚t}S"9vm]OtvM:KZsvߏ9rrP2Y%f8 >EO+G>a_Qhl,V ^cӍX$#Xڏi}ۘxA`oӥwDAEhv.P˷ϗ,"4p:d ݦW8Aш:)3h؏Idb b5$f/ϱXR`Re*$>K{[db gȇ:кvEoȚ)ԁMgm\+t|y"dHVoO[Ǫ!?<=WmT{9[?@t 3qؕ0OKMrzl% [uu<'ש`ğ_pTO<vU*c`K=kdžؤgsE^g q6y1-7~-^72!!~vroUgadrwlX4I(r4@"8؄ێEX:7{lbEu?/wL%΃G1[ЭbH~Z\yuA!H*h{P,MI1usǸLY~bg^)CY%t-V3㯰gAMqi]qm߰ Otj4o'e@dOzC%z{&7g^͂T/Y}vHc ٧6}ym=D UiM5{@i &f# !kk8@(wEPw8V٫LXtR7=k:a=Fl`Y lh #,N Zi_&80zd86Sx,ReBw"}:X[+fFUQ}wPTjahMX\ |sLaU"C2O[f$9}$8_}遾o5 4놪=W،{I=?s(rh]$ctv'&p5_'<i,bWZ7MX0a m?{R\7 Ź@f ۗ3)ru0c#;4{ Bti3CDӄim赡V7W#EP}p[mԹeUA `q(.`r1]PiNc֤={ oMsj=l.IR6QK-6N' 1U6S B0Rl]w4oIPEq5'8%Jƹ5sű7 !:TܽsBKZfVNGQgd֎ج֥CU )IC;ԏJ{($tNa..:g`cccj_~HAym}}"OpͫAVw`p-E:r_777٢of8 : 9#/C'tp0}(~n}/#֖!- +T6ֆ~5&RG1ys>y<҅j0txp>ÀN1r]1x,c2Tªv2,_ \ލ 5~}y(O*}56g,6tv)<ڃz),=HsW!  {wի ,=yG}>Ɩjņw]y\DqgU/.C]<;x ^+7n)N ޅ}XA![Y:(Xjx lv+Ib{!2- T4ӿǺ2oSoyڛ\a?t- ~Uoj= ]WGL_ѻièu"#Iȹ(1 CۆŠ.$èsxVN? Bnw\tن4\ aaJ: =QTT#‚m6F+=Syy2״c5 >yZŦ bĘT.xvoo$7*{z_o<GCkN{Z.j:!zU*Bխ.0e7{fA T P# s#_ %57DjʼFT͛QgO| ,f\9YYְO]ۘEBui˭ {xXUMb0_n[,5=y bg籠.P|[q!`xJ-)xgNs bT>'eN@*=YݵcO}5k Uv Q?:!ʇ_g Yah26* tWB4bpmtPmw c~w"$r佹!]Hb e %Q,'u?`B[^I] wrguIx1c۴͠0xf:([r.,f'NlbeEW8?95'^,@o͹[I, ն ^5wf+XbܾumLڮ`;VnXZ k}m3Eܱ"vck&yx =)i CQ9o)H"PpC=)|$zeswucȨv&-_HZdC"=uP_[z3oGbggνĺ)XG9r`;V G&6Sz؆/BrbQWE|*U=mYP=ꈋ*RM2o*^|]z1~̅y@94OfnvkO uSB4E;Aƪ""?BS{^W.cѦاii7IK?`nЂ#XU^0NӗZD}UwTMTn`qH(BBv3. x&7mLZٺԤ lc.wdt6q>'KQ\WllKMgvvyY]6si Ӥ+l3Bqy= IKQ KC,c6J0'B- U4Q~q.a yﻀqK[ ji(:17+.仉8),:ʳ1p"P=yC/ocxV/e&r"H4ܱLiwFйbц@1H?ORYhѯF`ͯjM@mNiqylfGo˫Ӹ^c[~vR6' y7Bٯ&_6&%m^ t)Ԭ @{ݰVf|n)jTo$2@׋SPqmʍTlxC렌'Iz:O '~BCB0G߳P)mW?*M@1tb0iC)d.Ȝn? N_*@sME,BrΣh֣ vM),X.s}$ R nr@,YHh"b9ljI$XNb]htؿU_F XrdKH/%hMګ\e VsL ] (/b]_U}h荎P-t,gfu(S5U?I2~W|at9P;g|לw[׎<|G%2 B;E#Ԕ'ђjI{H!cx'5 R:ag9hu;Q;5v,ˌ?պb+ڃ*퐹©h%]jBh)iF1}@| Onoړ-O`x]q(qCF %/.vcWQ?@Ju(1ԘOB=(z"TavNhԦKӡAQAC,P CR 7^oQ1eb.x+e-՟n!Hon]]ه?RP*TL\4ڹ8@`X].LxHOLwCsJ;ױă芲F6J+۾|O5fT,Am U@9 ?`f02NxΦNO?f6UIp{'rJY. wTK + K_J.qx>`ޅYaa^6-x"]nMm<W[@B)_2g̏C-\ZPg=0*pW; zEP'(Z.l?TNuݺ1s3\*ж[L>H54_VR=5G/ 32bs&/f h8ZrTĮ$P"Dzt@*P;90 ,AB$f?ԻnS8;T,d4atDQizy"urx. ǥ{ yȭضOD["xmٔ銱+u$XvUY\בzZd'r~t& ݈|;q'r%uFkk|-סMV-Fd: vMPDC' < ) yhQ>0LSV;U']=|][,6νK Q´}A=,5N Xw5me,O~sh3[O-XyJ&6424bN{ސ>2g-dLQօ6e/;LjwԮBԶmGUS[y/pE? c`vׅxnMwPVaW#_p0 N}N# ǕS8+\}~{J  ^a]N|_/{7z?¡7}4z>soxvOK b1E(s= G'[?ኵY,K>f 9Z+?6.oE,ru9Aۿؒ9`sr=VX;%cj1z@εl@v(;E3ao0T86 HI﫵a`h.?8-]}NM8NC" NUױ0zsқjF`5ŀɛA s{w}P}Sh0^: O=#n0WVLq˜n\T;&M%1ҭS0˨DP05AҦ]o~lܛl hmIb}"7 d<hU l0YGwAlC)g['fmh|:xn}Er9]wr0V6챒ƒSd13OWl 8!>/ NBӍ(e|h4c]e̥f#h+vT5ZfK4RcT[0l;pKdv ˁʢD-(f l; %!(>'mzqQfn|E| t"P!So~fH ه "wBa?֪ƒQ_dNxK#e[-ޥ1"lx'qol˘8 ;.fb&C?-fIVU;k^JM!G)VNQI:? &W5`S0mVO?6J_CǑVX-!\m 5OR` ,́cθP:qΎUQ>[ܛ8oS,;up) ͝>Y/q4esk)nQshrpm8E8m;W.jCl&c+rȰ6dvj rMJEB)(~R35"m?i,no=Οo/B ' ma&e<kR+*y@N-(vq|Z9G.tC>=غeS;4{%*zECwkgЇGUn$\2 ĥwŌeq3 =qЖWC ο̺߰4S)& Ȟӭg_g 5MX_f{u!mqb+)~[!탻U7&mb)#3KKpp85Ί-fJѾRq\ϰ83~F>@J 7|`POGuNO,WB2)R;9B oیjY|_Acg~LSPj#zFKk2S*m6t7~RҸp. [\ȑjvf8iĂa;㸑\mvW8QǣaaeYm$y-ʑ|& y;ƙ8CFw-n|ztG)ɹ)RRIVWݯN6K4pZvZphMNgr:> *E>B¢B>!$܎-CPHLR e{SʁҖu+7F=u$H@3Ku,͒,GrALg\dCs&@(=yr>޿]ж: Du 7,kP(3 X.=6~ _O\-P|o/u?ⷼCs8Ebb"7cjD8*?Rĩ>`+uϰɰXIv ,(eY~ _q. t'/]F#1Zl'Ho`1ouptvN9918e:)i؞s ᰟ}\WJۨsDTdL3 Ƒ#u=ڜy:3o_*'DpбX3PBzvO޵[:|^y' X_ EJ8:9Vɚ5ڐ\j}T 3@FcD  G}dNXlt:|Vh0^$=,vߨ~ Mm,rBY"PrFp%d8_Z. 9d'*)I(_ouT8v*?kbMNgyh;9TܯLt:1AE;o U3&yjwس(Oq!) S^ Wah[^#RsWuAΉ 6+GgR@y;ЉOZ1>RhSw͂.k[H_*M/(gm^of~z_8rj;;wFElf+.π.nC\@~z\!шQ;f0pQ0{V \A#ikݖnH[kw^Mvjt\ںV# 65M8_ KB󋲬 bqoD#9HaG Kh)OCsfK[VVih=X@iZ>y#j+>Ҥd3PPk$ &ua72l rMc%^P4ktwqr ? ]fӇSt@GgzfhLѡljP>zۗUU([XS3@W^Ͷ+}J3X~4)O)\ } f>+S P,p40>gR*#ɄGK<Ͱ*űl`Ay6Cl1uj!`vیȋ*ڍ)gR ",ϹCQY|SD\XPsRmYaէKTasm|dD[$GB&b 0'fqbUϝhYU(Z5-0T?|oc jjna͆8OX*5 =!^Y-OX^Ɂ+73ckjHk/37v2T겖W3Je.lLO q?tX O_æ7}Ǧu:ݸWO2S"zY`[R Ѷ *⛓6Gܘ~}8 na/G:SvuP.4FZf# A%,u-^1_ UDI=A#F5c /,w[ehڿt3L3EOZ,Ajba w}q rs2㇮ 7 +#Tw}Bֺ>kˋy Yg\:X@WS er5ǒ.Cj=y^A kcG ۲kЌgAۣVZź8p"IKrۅLm놁A׺l*MM3kz3N3 i~bXCl >bجd|m'5zaw"|X#w4T v7wE&K?̥0˦l8AӦ ԛ<*b< Dz;a9"@1Vp7wH+I0]|# )]i!g>/U=Ep6l)ɤp؋_˱`%{Af>b93zCP9?/2'6Bb{g4}:FW4](&oXmyƎNW^*y#NDl%Dd)Jxmc,B{M#-jF:,34GK\Hl sYڧZڌ_y?[PjFJDЧ<_*D*t[sy-{ql8i2N,v=$0g+m%LCʙ_ 2wGfWxOG}H v1jr-_5Pͻu>4*b|q Z;@*r^w%sRo9Bͣ69]LZJ"BױV`(sw ψBki]2Y*N:bC0zj)d[_ߏ [cVRѾˑu\UsAa-O!A86=|?6tۺɆ>?roCUf6 )wzFm0q(p.Z3C9(ym])XٓڈU^@G~k =@qLCO٣- _Kd (4(-?ŹGͰy Q"s P% &sNc32@9H1T\Uog ;uTCd !htѧ~r P.W~0: FC*Yp-AU~wH}!ClçhN@nT~bI1 -K_ɄLzF]J}$I#X}2FK,U'ɿʉgPw!TOW\A _PbGb,? a'1[GbSn}s'cۂ|zѹb-tύ}/M_Y)=#uZL',rS}0FD(4 Jޛ~0Jiϵ,,lr7V}a\ ^)R2H4Ly.gUe+KfOЏ(#ĥj:Vy}edJU|oS2#hS//AQrm%MasrgK f> B !fF,jZvoe׫ۉ1PŜjX &>:j};_S>Ǔe>+~*M!d*9,Ti8LB%EkVOZ?6R1]>~vS#7nNGἷB'c@TO/&dѭ(mU1?AO*47G0 "*?s8<['L ꎀwh¢+4{ _>E1c%tC|:E<.ir蘑b nxŷW"} CޜmbcWEN -v I e9N.?w[Ȯ?,7?ZU]k~Pjf+Ϟ1l?^#q'iz> ETM}&1 V.lrܲOdzSb)Q%V)4spANq NF j^~!$fzo DV_(-a'u!3TAm fz*T bB :S^&,?s:(=<eCGBä⏘ Ts:t ?sacG*F7,>"o_WsJh~@O9eFXoZ?P4'D ˗ce[~'U?|׻) 3gcL]"zelZ9@HӁ>Pc3~DҐDN;T>`_+MwVQݖ!u"U4tLV՚C*Mkeh}8ndR>D\{ZfmL\z (/ŋ7>MK0lO>_KܧTB黗PvIil]粱}^ib9~>Wqv畀c_.cf1kmjl0w =lGC2Ip-̏7%Ka,_'Wb/aNFV$ts_c)=al.21Q:t譠"([)1 `E?烱GK;{FcⒿhk!-A?Qyr[ò9H`ٙJ:nB9Ǐ-PfYtn6;@D6,ηV 5nBﲠm$Tv#7$K/0#Ē;(?x~JČSb _>wZBA >iZu'fGb mz~."L,S [Old]ꭒ}X>cFy $6I օQ:e0㥘)×R.SپQg¾:׋/*X$CO{0G|ho r4~ԏ@wOw'Si݄}=Ѱl6fu%0S-!:nwCO%G n@1ͯTNA#=*lux*O6MM&t@iXOUMlev@Vhb,Z L'&.eZ/ȧz{@C%VVhAQ{x}LhS>v{A6k]&pCؤtH8|w]BN= F[Kc_.,qGHzqlO۱ DZzԉXH'?( Οpi2uHW_}TyE]? GgU}tr7ya?K8CtKٷngphbeէ;;i ~¬G w<,YqBҏ(aEOӸ7a145TdoXGOi( Yڵ^\>MqsgA+ aQ[7y:ѓk33yd`۩q[`w}pj[91l cYl`}y6 Qbuwř_o+ث\ V]87=Z3!}3Zx/[ij FowcBc4LĎ]jo]%U49qȦN).i9z'qӟ&qЫ8Ix, cc9:\=o.w?AQj piD/PM\`w,#\Sg|ůqd N֔ʼnMĽ8OǨ\8sq6}o+.}YK;NJ탻ޞ&͇`m^IF 2+v̞J6<'yI[8YS?i3^~ySEt¸!^qLX Mqw\ia![|j S3{٤ b%bUE R+wO;ʂ#"^#Pc"x* n@(Z׽y+ϫXc;Vfh>۬@ yMO,SA3 '>D=3j+\@˅hP)]Zt"NH Cx&$u,>5k"|X>%>*(L,GkI"hxZg+lڶ!_)Swn7gݧhRGi*(ݒlMh%aVP#]8?} YWu@Dd]"(pʨrC(gDc|=4S hvZ>-3Yzmʄ%r*3B!rUBGO'/mϏҝ݁~H(nt5 BUx.Ԭg8?"SVfX0*`a(??@&2¸`ӳN{(~:dh#OE 0ݥ7t_c^lhzXSiM &? ( ,;f:*4zwj2|0YwWġFhãq9@ʧ @ؤ9ı{:L ܮ`]˛eX«Ӗ{6=4a~d*409vwMAл%qlHیṉ% ޞ$ټ&)Iq`ӶIwG4CE0"\ŬEytsi gϬA֎`t ag;|p8YTg{x綉 Zmq?3$G_8"0u[4tCǜX[~Vh}uņOX4XE2-5ޔ6 nM%U@hǫjvPn[=mdZ?4$o5ܲ7)cfj4tәX{f7r`v3W' ϯҞo6~B>I6 |+wAuT39] ֏pZr<//S.M? xHŬ^QP)I{4OkADQ a9 ][Lg±yR9T,8WAޫk{((V+?l$ξv)Aj$#U}[aޅWK;$.d;2!y0-tD (/6x%qV_Lwgb"@\VL- wѕ`E î_1ذPŗuJ?TZmV8p[\lH:X4<:ڨODۋUw^^S0_MS:W9`YBtњ*񜏴ôsq"D,uh6"*qދ{ 05"2:65iQt,)^=D:vYCA>-SwV͹=0و35Be9_$%U%b1Ө}ǎ?q/mmv~K2}~Gol94GrA Y_cWNYO wc}#t_> SqaFG:K<|= N !;a9vb .a*:tllXBy=G _5;ɂ3{۱rح=_˽ӓ?jambm8]%O3ٯmvřÉul}L =>ź돓|J3:CEY|eoTJl_pIbӼ;8eNcCbKj}\5?Jpj/c{j ݖ$ZbIDe/t&z箏S;~?uJ|_#ϩzy6GX5sw"S j[f' S֯h\`Z\; ۛ5%d!Z辢]}e-iu- .>e_N+ΚWpq2#ռ^?z0};E8b Ob_4al5'IRK.OmşVV?%Y"'7 GlH,) =Ln8е 8>A8I&HPb kD/k|Gy.f;'; }MoL0O=Fs?6D=:ԳC_P7}dCܭ"$B[w^CE[mV2){"o(0s<6UjQV;!ЪtR7*J]} &Z/*w(}jʖ.u^Z3gCA} PZZ `P(V .A^}I_irgib_o`Mxȑ)׮5lv2bg2v8N`iOuۧ}m,q F!GsG-JjPUTk?GPrDך{tS %pӴFnJ܁)v}uT+tbzֳ)y<^sn(TR@Nc*7ehi/2 X WƛvYc6Y&3T}Oh9> \Zd[[:h/$pF@i-'&vb!xLsa7nl ^K◃3h4Z0q96]K  Pe/4 ªtvktwp%ۖ@Ou!T72d܄Ѕ{7p|2VsAo&Mi?|]V ?mBfacmi&/uwv:azkSR"u.xwŸ+vq6amv}_+/xӯRQH=VM ~6l^}\jVl^Y"w })O[M=?{kCg>k뗠ZpLPOMsB/KHV54Wp$CT9ٞF@aGOF}PY# =,nwnd:EN%D5 .2BڻcާO -ulM5H2L !F~o}k~Gkhu^ 90 @Չ{UP|{-hy㒮n?{K5oHKՋQž99bOP!p8dYJ샻>W%T= f¥* X@# "M+f(H1&Tr&S۸km!s dgk;/DR)`>A dZvI Ӵ+|_ YAwؒ0Ӓ{EK[޻̌]l _BnaY a Hf8%;6byXlFޒCu7ΘPɭzÕ8F2x c&b&F-=N@- M=ZϾ@2gP12|%s?~;V> oK8@aX լчe&%a#O7 N[y":|ݞwsw4#P]R]"KN=haS$cШSsU Z%/:A!TƠΝ>7E'XG Svʼ_ԏ{oeѿhQ{o3 DA׀@OgD7$YS-W]Utcq:e_ĕ>De0}}ﻲy}t|3w)hz'‚b }!%a I7HWϱỸoeU}-hX)*Q/ow5.RUbamȍx5JV}:ڂZ9^@k= kH.t%vOXO&U>mC1׳;U"k;B㠍(V,t? h^`er2e 4X1N9 xt+0vx~zNy/H=Yx=9^SZc-Ǵupdi盖htAW7_<3x-E0 mDG#i_zDN0v7{jʴSw~A*h ~tR9Zկja8/7[K2x[9mϪ#RDB讎1&v{-F&+g۶i=#9W T{po6fk~ &߇oT3y9ߓC:<@c F@Hk2 wDhJVxԽ#7B»L:w>ZzBr_tK<{R ?ٸEbܥȓ]:Bٮ`1CϘ~ԇ8w: 5 {n-rKY= s`Nx-+Y<d,ims[;Ӄ"f;۸F 7/Kb,̱k#66 5bghy#? *ԧ<>X@;ѕ kh!wAZr@s72nHch?^w/~ 4=gno䠂JBK .Յ8^fϬdM9HuZ]\:}HֹsGJ!NrPx,@A}2{Fc^L6F=Ķsߟrcy ,P1گTH(gQ/1L?^V)FO>Œ *3ۘssrV7 uG .n> ]Rrl 6o(r.@Aɩ yYLs(7zk[,3 }#k*'q<k 2RI(utH‘fK0wDh;zO@^)g4جbҏ+Od` Ƶ8Nc/l /pYZQ~| /0XJ{E`c6T1ye;`ąf1a|j IǑ{?ęieg{*9R=0N)+۳'7+f?g F/B-\8Ʒ|W} \k?b+Cd!![ u[?}OXA3s=i-[3:݇BPLv+d/gf;62HּP2JH>cH(lLWw6ѡkOe uW?fcITѶrp6F*آD|W#y(@^{ZfBeͿ6!GvN|!h>$.XFlPaЂ[&WgJrCmV[oCɰNK.C;zخq:\蝫=ؖaT5uL!a䣻P7֟ q[O{-c&ːCV5Zsi+ՙѷ8[p56>%ҮQCtw^Hw6I寻|FDg!mFQMN KupYyM>(Y((y >[ev, !oc=ԦEc0ibOhˬB[w"WBz釟A =vMz]x Q臥EckXa޽eXO*QaQFuV͋`NQ2-9LlT1'uæ$[%GȘ $0jWA #.PbfXQ٤Iw<)y62XgBԥwq吟/ l-2(=f eRӉ!|Swx+ĩ@\z-גELG%d؎₠W39`_9Za9+qRX]bIaj)8:[ 2e1\S7+’^o.cW 6<$6W)e͚}] Ě 7[Wg ?ƭ Z8KK@Cbh0k+C\xAJIV'3@.1/aU٫S]eLIUhA\g0|ߔSHà_z?ecAWi}֌tV–l5}b1^rCR^H &DŽc?Vi`=M.-2m]y Bؿ'¢8&;Lb)õ/ $`}p 7X  hzE9-gC9'9n>A|ڭA驒̡;mIRSz)؊^惹| P5c7tot5 7R~Fz}ڛKЖu8,#tRh@K¥C0 OxӝĦ8X dOnЈ@(,UJ}vygte@ ɵNk=:C(m{g4m{$ y%QU_'ę3/{;I,2dх d׽xPR_r @q 볜dyÎYKfdۿ޸0v*F|NoJBBgX׏Ѭ<f9V=U[F1BɎ_r_V\%B֚6RƄ=Q޽P Z ,CO<7!'=ãJv-sg:,?&Vv|{am}+" 8J)-U*a 2iP~gDz|n$ӭ,ڬ醱_#@9Y}E C<Ŗp$d7z}drg˻DF|~:DzlK5fkܝ{ T0:Aj1 wՄ;faB ZTmX?Måy#P%TT6f{2u~qh\Ny OE /-7TvC, 2 $UIg!{,ڎE >=zF U;}<кrBh5(qT -玲#.P} $qPv#DT3B܉H:O2ݎ~o}?>/_4w; x0B!u;gȘD8i3c\(-w%55p({'{?/&زB~ :dQׇFb̻[?'qhL,]\%Wz{1v,yLRUJ!?TkY|!>fdXklc>en*ܰ8i7g/Y'B;W8t^?жx 5BI˜_{1pfۭ9h9q9fe6۟k &CLIٓqLXMI^Cԉ_+9Wo/w7|uܞZ,u+|ѱ-p=~%ńnP":uPQgϹ"!- >$yi~&ł_X/|[$dIt5A׺#%.hf ='~= +PCR{N>;E,sAP4bTnCj-"1!0Av,o+\&pcrPMLMyxv3~r|?[{m+ Aڳ{tluny{_jiEe{uPce줹S5@\P=2uK?}#7ݎj[}r4/ ~^q&`ko֬=>1l3h5yo{Nm펉{pjyRJ~"_S˷(F!%RQSH :=-ttXl; ;qnk$n4rwKl|)@. rEt<>nD싡j32E 3 +'AS,/reYĪ57:Vӝd;=DEK֧hGl+D;,G`5C@h{uXv/'5d4'Q-m;t /O|zdTȜ~A_'0r X Fr 1/WݜUcq?|8yqٟЄ-[4\zY (kUCB>aZvs#* @(X7FOohu=o$5<&k#%]| zOCÁχͮc g4=hc eP|‘͹cWQ;/Y 0gcϦ)ak2"eg:EZ1';f1R핱ާm^ $G ZiZ 0Q*pH0mJH#+d>Ctàp 6h /@QjN\0 cࡅCf 'O8NY _\ǦTp#>H#jgGt Ug' `@-MC R5 ϵ1]_MrE{JO : C[rg*@ꄓPr[*t4Ů52(OjPw5T(|̈́&'z@U@:VRS,λ4=_unjAœҪj{}vsĕQR\;&s cKS/f mť'Ep\Y֭jyUZԨ-Id \" "] [TQw%n q{Zq"ܠ*owj p;} ,:D@?"KRHf1KT#Aޜ!7F_bw}g&I]> ?jlV ;X3smHԠ556~PؐNgWv4lqPK 3/Rv7b׽ XFC;+٭C\V:AL?֗U XO/oQl9-ޖxR%q]}fq@<ZV A%8/k˘W!pa?o$ R1p͒Gr5k#چfOq!^/l,[l((J vNCz]ږmb1 HM,⭥N44vHDeh$`3w]ۑL7S[VΥ g}7x'W̙lXdq RQKrv"m{U1Dސ# 5E5yiI {GF Md|'EH7Aj9?gH{Cs ,Wk>\5 8'I!]_7vSH[Pnoƫ +1졣1sVH'9 l_2cSn:WGhVr="z/%ܫزH6L U*}Rf:A ؟0iPL5q>&~F)kb7td%ݰNFsk?ʒ7 Z'|H]@ *18T[RH*`2'I[- }D5ȅBKbX2alefiƔ1U1ݏaBPɸ ͚r3ɴSI]Meȍ5'4@E⼮{2Xxcۤw!CA%ߨlFsIx뗐7EtX4iv6We HyXRCE34& eX‚RP#hyrM*}nܦ7_T}ք?eGC($zUIBf̶$a] YHڀJەz7ccBe1ʦM(Lg[Z\ CP~sJӥD #8}R;n p1mz`9srvB1_^/SLQw+ELml73;o `Eo al=\S7ga/ߍب:YMH>0yF|Ӗ$a-(,}!]{"3Y^E`[kK&ͨWPBtYmvpPn^4W(ςG#qƑ/UP0OHM쇬>Cѡ?G_Cm+h` 9m1ۆqe }y` T?Ty yG0/67\zdD# ; ;P\d1/?BNʗ%P*~> #%v(9T1"`rѦ]oλ[]1ۗ {]y1h;ŹӫaY-gX =?Fצk1UJIQ($s) k{*8#e>.uB3N1o?? [2ě Aw.av#!_cc |;;sɵf5.}fSΣ瞹cWbۄvV&<‰1z8:~_]R v|`ɭ`{8KSGTN)l4C+84FVUżCXR:BXO/<\ )9sbÂi1hiTvZe(|%uߟnRcsZ2`ރ^wM^:O;D0IY`o{twիIAzUm}PȮLvy3;S%g|/, zsUCUuޙ!r uR fy!)>fT'Ja72B9$o4e/<{,6<A70{03EcMK?P{ίu8&2&}6n!C=j+K(-)gߊ)hZYti*ƨ,%C[1 5JtR4WC,E/̼?@ Ҩl/sucז'?Nj/*V%R0 IĤa S"eƪ0'66˫wx=O-/~.}S?EBʩ+s⮯9R+Bhq̍aU4ΔtC}?)S1DeyПG;JWbFK#H^k>CL /:bOZzr~.Vu}NF9>Ëb7CZI|M hB>@wjaly!pHsG1aZbU4c,\HDW[,!PtM{;ͪBۆ<ycrY7VVXd g{<2C .,&arOx{**5wOaֻS#ۍJA5 3]= AHb蹳]J0=M8e[}cFE.!16ޱfO߬yXgl_"fP]g@֝nr2W_5,Rz)6x?WPd sR]5-ql_cuAhq"P(0\]OJ9]G@{(jr3ys3g̕:+Š(ɘ8x z㭮ay]}x$[t%@b#0zӺ{0 k4T>0&oǰe

c 2wudUS^B/#G(]#LFB [ukidˇ17&Gf 'PT|%NXVנNj!Ұ&炈T&W׬ @|V0O'eCKQCU3"L9g #қ ~]}̚W9neђGGWvҍ{ ev*=Ҽ;PeV/̗tPՁ>VvFu|?wYX7ھ9yx0a]J茟6'\e:$9T*l{19FSgPqq{0w|U2/JJ H- *&jWaKaŇ>y> .2_oY'";`ߙYDPҒ3:\O^e[X3H_xMS%C䐠.ͫ`:T_^=H,Xͷk ƴ'BC7DzrdgVrbz:.[l%T~ bC2ӳ'[ށ\ hd5*F5<7yT w0q9g|OL&<P(XB༏֠J]0qn iBjJ)8?Y 2tu@sތІәo&1~G Z( zm>œh+W^4 p҆yZ*fZChU5 }+=0u6(\`yazW(ؙ̎ҷؼWfϧ~'|# ͗MEЏ+{ d7l_p:k7rYX0 `}pN" (|UcQ=uѧ// ߍGm| C:'.2`4eNsiL=,vrt-1qZa.@h?˧;1t`Y@ up[*W5T>y_&/>lٴ;#혛&DUZ&AyXSBpsǨ&`ٱ)NW/B#[(9BKլ,,)3ajTo0/FLʂ-ByE^R+?)ӃzǔwO5(la }GcޓyJG2-G!B9r +9~jOBmK) Rz{!Tqn&j2wʠ1@d)4jtX\Jn!O+N@TꅯTN2{N?DrX 3&#jO0|k-`Z.bbi7u'`ԎJ*D}mt(!ۺ71]"ls U96pc`'("P@%<Xt"+ϼ#.y=֎`wĬW 2[ S@|BIn(2l|=X}]; Ոl o'S4d;}}"䓎x0Ƀo,%ЬW|f͹71%*Pm8#kV0y;ˀ+(?w~M^z-$.vii3 ۼL_ÙRaZ-迟qߴ[Q M*F r))/k _$mg5lt+® ;WY{Xl(r5HӊRrXO|1{~EE#.MHaéWz$BjM`?|zC^‘g%`Gk=XA~n>޶M ɏ<0]+HpqǷq}b~{C5 (WNʥϥ~5 \êU/uLY%aͯx%rG ću7$0}E\2V]#ZUX/o*2(~N6`es}(};eۏacls/,/v=3RZ NBl.K.#'W0}.VQ%Wcw1 ya Xx8&T)nkvؾc:Wd)vq) -wpE='F i.9q&8Rp=~i~+-{6o] >g* *w԰o=9|XQ]~I[/vVP.bimWH[NFBLl2iՋGb3G$vj=ˊ:k {_2$4lj4Qc͟@Kyq#L?u5u@[tg闣 {x"'X,мOM2| zFrK~6~|aH3r >*Iߺ[3{f1x(8o;C\@&aуLX`/2lxA9݇bt`yGGwnz^&)umjPaF$7 B]+ug:\VS|rAho'PQugX9{EZ2»Oyn. glYU.7 0+,{xQ9ӒSyb}sfԸP44\g%zD UoQ=Q95zvRRVcRo k` m0\e P/Y Fd&^lѻsR3tοWoB$&IK;/).dq4&G0sRLovUwHd=?%~o<͓; rf3Fyw7AbA%%=߀>(̓4Y9em^@| +') @)18򅝹P }K+MĠ_@TExw-H=`lvRv#@/:WKTOţ^z JTB Spi$G?W] VXA*~lh>wO 59L3V曭 [KuƠ K= ~AuX2o[Z hc]!<#" nK[}UWFBQ@+p>eh7z* y׼O7Ųy ?x+l({cz&̸ SjX$];(×2ꅭr:xԵSp[6N]> 3Ji]3`dX-;ٕ|x,'s|0U@*yCt3z-G{0Bы8fy֒jŖSF8eFd&7́Dg"}U(VѾyAEr#В/LFo!C|OAgթxϥF+_1긁29V1?$o] tFFN7cd*-4BFA´5lﯸv)ň8XMP0Üc&tYvN4F+_^s4(}KЪDtP|lo(sWP եۼ+~XIzrՈ_J- RvUʞj :Ƞj *EL]hbVNv}8K1;i{2zU{Khp5 QG/1+rbdNmg rKsU+-(o/Ʀ-bj7gJcesp0#S jwbC6ѡ>i$UkU3n]r懺ik1wN!lzj}ː7mĽ~$aj5ؕ0w–Tz@ ;Z}J5z~S[%b m@l$XJ)}[&JAf_-:W&ձ8P]<߁>nrKLզd]E Gsxf\yBn1=F$v?9T&nCWpyҾY|DZ~?ȩ{V]d 6)}l.ճTwCXm[ TǞ 1I' wC="[Tߗ9Bcv Cou{>CD7_%(p*#(ζXLDž}8T)U\6hx͍?H -L>=kJ0bd':mRO.bLz?:T<)53U}IG[(M[ 3}ge9qԍ?*~ČXv㱿9 '{f.hu9iP/ldM}ax%PK+zϊFX8\6z~O~$_l_[bXr=#xՃwUeH6ghim\T>an$òN:͆1q翾[=@ B٘ k{K;_*EbV73=wN=JYW|[*ԱܺE=]'4gz+&:-%eI # C98yldӄcJ7{I?rB'}:}j1JH礆xUQ.Q:,x"Bqanjg`´efW2ȏ*g %Mǜ!{53$EFg~Gh];w{=5mH#Lyvb(4 EN;)H=}yc}imё4xܓvҔdP\ -T'ay reiv;/}# -N_TZuHxv(1~ ] +:Z-hH V9̻ZKYbnBI^{ȰB0V ڕC9.Y{$> _ B*#ۅ~`+eI#lHEa@kly dz\Z=ϛšFc,~C}Yي#dDul]~zۚ;r9sX8 3|x+ZaiKO$>xY%AJ'\5ܗ2_>-4ٗUSDAѕVlI<|ڻP'7V\dJ~WO-`mn0c17NF1|$FZhz;[Q.Wg)]-o'5u?N*)x Fff3{b9$o>R)CGmwnFX-1ZcQP{6u,q54TY _BeydA O3ZC|u17~3-\CKPHH ϳ^tk ^PI-h6x&Sv<ޫle_O.̝۟km8!(Rb{y} ۾_s=l&}aC7!8IM;~O5_MphHco[^zUPbR}=(FɊ@mXˌ|*ԅR/Cj2ctAw]l{%O~ɭʃ'-7sU16 :'j>*Y. PHJO{8M CF!bxBwG3i'Cۮq|}>Ε)Lå f5K񂘀< 3,8l iG5@I<);+g9|^'5)~_JW3?ٟ~Owa.!s/=*uƦO\n>87T蓶42ώ0z@9^Fu-NP @}?Ue@ yX*6-; 22MS2  I1umCk_(*1R2f5Gxh!= *.dܟa=Ķ~ |ͅ7"{,E*3ORZa1*oq0^(. C˂/F1¤E=̎,YuX0 r~|># oz*y?!G<v L%+iϐc&y}̽bg*U Hֱq+f3S5߿<yQXB4TZl)1)b265-;?86֗8]{0[˸~vֹᰒY;"~ ߘ|鴃$RمԽX)v@3`{3ͶŲ^jyAYU <OX] ~]~rÈ33 SB)t l??B2_Kpkr09GvPOG8RLGv@#6; GN.ê]&(*W;X]'Uw.j+df@鏤hExrhIw7_0T,Q저pـ 8 UAJhv>|8}*-Ik{=2{jrr{\Qos`OEȺҗQq K\򇮣'A.uFS3_.@]IIA~ɆrSbJu {Y!On 顸tZyraq5TJ5wf.@6rPE7ȉO-XMtrGCdo?Kf#R8͒=ڨJ]zorAq,a]ofq9n߇ՐI!T\jw+^!N6H(ĝN{+V4aŸ6lGͧaRi\ɔ j=T5O%ɇE9\X}\9??N݆nɸ.GX%jeӵ{f{R Y^iÈ YKQh=QcYf PvyF9D,C 81IۄAAk5h# F<^Lk⼯˝j&D^Tq^1;!%hdQ +i7% "OMvu*Q:@[އC$QRUN`;1zlvwM[^t5bWdײ.9.OK(N4N昃IhAwH ?]: ==_Vg: 鵛~_oxKûxGD~E*^vUn$Dpai,T5 _/qHmz6ݽo!:ΐcp:ivs[ݘ:7ܽd3O5k^c_VAEFwaޢ0{d[6b$!06 &nrC-|S lo&Rd[7oRȓ "+GAE{dZԴj Z^Kh1) K|14lu~W51Ia~g" ̯ή bI-؎ Gg$H63ɮp&n?,qץV5N<{yVJ1`G$7k?L) x7o+au۲S #te+;&͆^?7R3Y蔺[~>0i+Sk(&`k&X ս4[+m AzPr8_>j·QnCpx?q#+fJ>PꇩH")8Xi}0>5Lc@G~TO r>O0\a0̿ndc!`2S[v&hK5jO/@a-88KH{4N;DMCP&* wdAs4y:,d`pm)|WJλ2B dInwh_D g5Y-9}:b'? COAUMvV `ƾo"0i|o=-(z9wW\=U=> tThoŻ0VN{t܏u =3 +J=~[~T>= q 207y|e1o%T 3.:esn5S^^y:=?mXd ӽî۞_0SZdaH4' ,xU暽YUU0spNJ>MXciN6=q+kkN zbNhmvu_ x@+8c:7z~߃a,>Y@: (?UyN 5yXU1)yus.ʷ >*D,2[!b ZVc &dt0kso-<Z[oqMua=)[c^ޅqpJ7sP]Dez;6月|Hϲđ[ 2Oug!M}x?"cВ=EcӒg޾fD-WOeUlĸ<'@HOi#zs8tZu69C4VYvPYmE5DSdA5(8  nNA7~PT)=ՠO[@$dS-^p= ^M9 &,y.5uq ڃRx2?iCڞUhBa=Dծ @( A!9gl}}dUԠXsr¬bm8L߃]:7 RJUpf[@z쁆PU!]5OIĦ2s+Kp˯rf+(ف RbWQ8eCYA˒/@a^D)%[#uRc#_w=+-bX:Me<R4 ,쫵;[tATH~S\E>H0I6Ycub^(n M~r̀=g9Dv|u0{W 骷mg u2c֌:=л7)~hQbZdbO~V5HsH;L[S9堚2SoB kgo$tjle8sgџlYFV RB3\"Ry=u$ߪQgbqZI^$"; 2-Q`ނ{^H=({WE}*4YAfQ{$6 4,_%1dBUP͞?jv-zcJf{yKad5eㅖs>@8\ ?EN.A1Gs-\ǺM1fa#$ހϪ5:Tώ8fiPF8| yq!"s"b (sHZ=RN&s*eŚ{bW0[N_!(a9Zt " VtٵC{qvh&S6CkPKT3t-)|S@kr*Dž~4]4zPHi(!9^Tl[MԖ}r<4z*JZ&nɤM^PqJm4L;%4'GlF~/C#pc],;Ddcu܂;w+z_.,XYazp"%-Wv}Ǡ= h;?|;U=} 53ŭ3xL*9,} I?:߭"Y /qbC;br#G]0@6fυ'掠&k:?8G{ϗ[p t^`#-KXNw#sh]ZhuۆwU|s]}I̱Ge0IX@rܪrSn|yvX"TE?-OS (_:wYjoIB>%7!kp73ʮ\$锼W@:6=, c HP i˖譱2RU6a-]̓\y%dӋm:N~.jҗAgKg޷`BGJc8A4>P}>+11(Ci,乒?rLy~h_X!sA Ov1YAG׼ϵO:#LD1Q?ML3ؑ~(B/W?KmτsOb]tV+>U|seuv2q ~3,8{3GR`c{CPحϟURZ>m1QEb#O9D74gMb&D]g &+DE (nAVQ!%l${79{(^s\<@KyPY3׫X~ F7\jcvA|[Q6IN]il؇[4z-xt CiДsv>+@xh{1rj{ 8Aݮ_E_w㛅;V!Z9-%+7H佗)Y-砥8.ꐕ9Rx ޗK#le()N$tnsWV*m P9$&U?VWU+),BCӽuP)O1~NĭGlF6}v T} _.Y@3 k(=i8_Ną&AS-&.GeL SD+yCm2ûDݪ [9r0 ȉe8N?:ʒ +8.i_.+6p)S[-؞Eu ۬_W~g{~؊I;WbVnY~?iugn˽)^MJk5(%ē^W4oӪz![$U.05s ͏L:7sY}pxyCӓ`[KZǶ\4Tw!FEA8V%/Jv}P>Cy+=hQ ?MweK4kTZ̛P\K~|.ʃ}mU19HJ 9dfcڹB0"IEv2<>CKw/:Q7Ly;S=RW¾a"+4&#GG51"3Y,(힘-_ਬ7-f-kR+ƻRXСu_Qyt|cQ4gǎA^N!ut\zkEh vs7xg4O}Fgfʍ^Yp }h\Uv0cǍǛPkx,R<:%r@΂i$]az#z(tkLWڞ OJM7aI36e7̠a7Q->OwAGh䫋<{H5,o)s(%VbWޭa oSOhԈ\/g^bh> ‚c,ez(oj9hySk0$(Pܯ;"ٲB=~SEQƋzZHȔx}8+Rp#}Xdp)lmUj0]r{۝XΓ^-}s-تכ$ܯ=Bhj6-+J}=RWmh5wfƶe Ϩ _NF w¡gU)l?OaBc7/oӢR8yb (_ d@.va:S˳:vc[XN` 3ڳ]w>.)Com Rۿf&eز6mrt;79ـ^7݃+tsК g<}5Ƈiߠ?V( ;[~kx!+FHVC#vldKϵ>7h|- ]ݻ{yh7谶5*Q7o6BKs( RXwi&D?g49Dr_H._[KNZBo2Vr -pA{ Xq\!X=u;vqf?ێ/t{˗B W͎od<Õ8w]DN cKJF,SPF'} zXON%h?E}oUy#mvPmE ]~ |h5m^VtJ16wZ^ }x#˜wKpQ9@6~֓u7ZANg@>M7Vst$).CIK$h;[ umPwMLJɓ3ǥvD{64ޑ*3M]K7EFI[nf{@6(:uOCOvթ{⹃w ĠEBQ.uzxv=eoO|>Dĥ$]m@$Pm%  {캡Vq9]T8hſz6̀(o"e Wj6Osff0K@!]'AM#guMj~v\ ,s)'ISв]$Qckg˞osC\Gƕ!wh7W|k7Xe^9&SJ^S3oɑPl9>$@(Z3H-ڈ=E&Tm!}qP5ձTWU@#'e.yƍ lխo o\ ;0g*`퓖AF,l+ЯBlڦN5 cg^#5.dWtlE݅a!|CPVonƳ)wŋ0wlc=Cnr N [0=F_iǮJCC/u F=)K-7 bv=Uv,BH84>mz?b '>Z8'% d/EYy(uM 9oE갦3:u=yҧ7Fq;B6o¸7zCnO_o@>J)I!7SHSٞsK3__O&4뺐ըRUi5!HuEMHp\۔x_K 1HZ ^\szM CQ [+q'.ǓYLty|9#A懧72\^h:{g<4 f'_@Ӧc37u6/Aho2FQ)6=$%LBӪnlBM4!4de?vY_ِavEg )ucﮖDBK/$><Է}5=7vlrsNi⍜[$ ^UhQr[6!P}i-1_XC6",o;c>d Zrsɹܱ5Qz;076&c,GQ Uu>ϐUeVo7>wX6TJdfvтƏ3(6B\,8KZ)Q's桒IFx?]w5s)<R6"臸_p<S@8fRfeǂ'ԑq{UnMm_S3KLA"h~FLU?cCm@,X|S@TeD:ӯ_Vڙc7"!eD9}HJLѐ%= LռͳwIjCGhm])eX1o~5s`X +|2e[ܴv8{r /K>x }8"c(=T--${[V۾JZyYI<2d&[AbU# j۸æs[13sF3Pbl|KͲ8h&S3E $A* d+K&A,%,4z}/]Ǻm%ؐf@-pl {\1yyT4fW %`ϨPm޹W*2r?)ZA_GUhQ0_:c?\bBs*֣|{ޑ9V (:q_FCKtX̽Z6t<J\tϋ@\֓85"\#]tb_04YeLQUF{ÏV̰L5>{{#=h%/'tB%eП8^m:z*O#H z3>Yk.[\Yܷ YW412\dCXN/uaUle,^H YWT!gZ<|U [E.::}/yܯ,o7r;:|+1L8zۇ- >AM|R*LƤ~qXbOE![c蕜8z!|h/aĂu>衜ՁǠw@!VjM_O% `Z%<%Ȱb uqHՅa#fU>qoCeXnΪL*>x 2%!ܬɣ-Ƶ)Yt@ߛ//i/C#_Qh Z"O -)1!Re? cpXdp$j1нRZ+ծ5UR[t;$qp{qZfÙ{o[toA$ ФԏGNʼnD<}M9 AOCӪt}k7(?vL [; [j~f@Y 40ո BoTh٧l`NMj|8#һw̕H<2z LAalgҠd͕!]Xx`zkM)().(36qu#$F[{@]ԘG'6ڟ;_Z'qfcёb1G"ςDbI K 0D꽲5oW@ 㣞5h1x jZKBaj^PK(`4x4j]P5n^7l~1yr}\`A6_ Ϝ )d& fѧ嵉7ۃ|sP.9*pJ4o`OPyhWN$IDٟwJD˲FIOplٗjy{?z_g ?|iҘ5)7bH}ySV>z"&>'|;-&3psYl'O%"HWNh߄EÉXNϲ_7Pߪbnqůub~|c/IzWhM/̟ʴ&eIw;CXa/,0҅twU/*1~aу8;C+e? qE< Z#(TmD!X5hщQ^|)2~jyӆJ8 zVn!@6#7WhoU.>|߾)ZK$+w`XV6 ~ /X7G kٽ6hdaߜZ/Pu~7eQuvNB)ߦ,a8bQ1/fFh'.k/ D;!Vaf*K3/Hn?!:%8CܬnaG۰^&p fI=: i1E0|"[>P)o ?m.fzbPс/!'nf;eM`]M@B/9KjϘp>+N❸><:  [>Y׼ OAl@ݶ-!Nq^Rm;&*_m@ӧ+b@h5 PA b[wH Ugd+F1FBu^CD?[zPi`=禼R!J(hM{} JVA;L_M&OyMDVNw>LՠgaޫUx|WD4sq9AيMƊ`Zvڗ"C)9x3}mhsv MFUHK7] .j_uAmmѸ4 kDr0׃F] |y6rɓ[=z2 >( [*MȎtF͑;[ c\?/eǂOxo)V}4Pcݜ\>q-Z ҝ DD J};0t_Շ5_Gt6g}{ s22_"Ш,ͬ I1!탰dW|RfyKُr G %I=zM|k`8w7Zwۡe~n;zF늯c"go0ȹ  S T`~%x63V\(U퍦C's_#<>wwcS34`c\ThO: l]s@5O/ӱܤ#G3'L8; t`Mڍ56uJRtR󰨿gQk{n4x>˃0zM2mZ3c/$EsB!_} Mzǒ%}}8,{X¤A`z$;L,273zkb +j3~1gҢ>YMOS6 0[/|IN4u($S28l׮JBq*< {[Izּ?kPah2n$q,hV:)[!Fric+JkĐvag1}*ҲE7;jHz!`WG4{<1=+ c(>\9< 'B&夣3֔fQ7_5Dy4Vȥ|Ȭ=1im4Eqkལ@H~*抑n˽cl:׀dm-& )Eb`JV=g^ErFG}Kepn#Idr.Q%Km3- ;ei4#ϐ)Ư{^+ߌj2:p]N[We ˇXg*JFC['j.Olhq Gb3Uໄ/S K|ц#37Y48tG%bVWylԭ9v}+glVNK =& LH|S /|뺚ؒVp~t-!¶3, +u~[޼0CDїӤ5sbL BV-/nxgB l˘b13Hrz{ׂ ִ0<@c e-HmO71B1S B+_I8rl/:>lG'Ka3ۡ|bmcީOJ+۰ÅmqS3mOJzDz÷W̹g?2D=ط2n{]kgvH8TI&:X?]f-kޡwS6~媊qGK(HWPCg@BVj=aBbag>ՍP6PT@yě )m [U1̮w-޺x b 9wS?rҡ鍶)RN?"ZhARiS//y*چMARiGhul _A tHc#,֊YMF&YU}Z=P{E)9ͅ}E/@3V^kJ'hQl}[S7@Z9hY; zr])= m.z̝gֳ0kRs8K)scAR}VfAu5Vj|_zl_ l0X}hVWǡGG0[uޕ4Ō=Go ߭ K2:P}-~p6tKv=oB.JxS  ױzg+PZZ; c{V͐dtUC ig[Aq䔝[l{V}(+2mg_~5`Ghkq{#uT2XfU_yeZ͖nш>܁o T~P$o8`X],)Kآ].LQP \Gt,UQ4׸l>aXeCelcP 22X*?tkFcwA_P-oy?OHW}ʓ;Y\zudxOd\(2%䜇ѿ7y{,Яda"ˉ{fL=Gȉ|s!|wo㚶-#Ѱ` PB $$0:3"#+>c jloYW [^ {#9)1ZbՇ=ӆѐ)6bF'&r!_WС#nqG>VQRxȟ&Bb~oVnz80Z[?cX.>· 2y_CGfk0"ءäOl#- c7 ljޫY}M{HtJOi`v,Ub&^*cm)%aW"^%!GL24gE]'5E!/-uQK߱ok&#aU?~ٰ%GTl1%,#\ؒM^:qg`yIG[2$pz46̳MyI<4V9T>I% IoSeA[N a)r9ux ETI Hx";/`OG}WpUɎۺnӻ2ZbSTJ󏿕X*(nhMe\<'z{ݔŲ_s"i0M.kv>'{wA"32ȵ`Zu6@~K z|+~Fk'!U1i&( B-F!Pf@ƍ*tg}iP@Գ]yM_RL,17i3ƶUaF ^J! Ɉ )Φ3Pa|q`Dr-e__y~iRfPU,{͈PgE :^9<|b5Aszr!7~œmw_)6tmjNf9%٫ێ*[Cy,ehJ3tEsV~%y5C:ߚxM f)vo౫+SZ^i *d( tRFf+@e 9Hh#ev C6!l'ƒBK: B O勤;`˫c Z6?/ޞw65 o.KB,SbT oDڨ1#iG/$QM@^xl<|v[|rPǐK؞?6VOR`ь[8]Z lOiC@G0Bǽ{tj}%FHulcle~;Fz~@UO-1){M[T ʄ'ۡPȢIua17]ytkAT|~k <ˇ\˘EOb_ORy+"+oJWƬˊWZj.bNAB80=q^_+lW72u?EP_U`Ց2rnj02hcJOkF^KX}8+A%qN4bpe>"#ؓ;􁅚[iEcrU Z=5%"Vb}HOpbyh*%7c q8BW> t$Xq=hw L]kp"2z?9 ȴSf 8is\Qk3_aY)e[p/I$nqZV{vcUZ+ޙ> g9ZH`evKЌXfq筴P, նgCxkJ 3G\ttWe+ PqTT5ݗ]Jr e]9sP~Cf|b񻼧}j'oxl< @M܉/tlHFBHuC -H{%߇Ƈd0ⓚ jlFkc3*^ :l_0}MO2P?_FkR͏zG[yGf2뀍rj_9eW- iaGnj O z8J%c/Cy3N0޾Mƶ8kDV[HK!C0gc?Ha e2D.KfSD =[zyw]Uر8, V%6aeIr0d97Q?k1_k]aYF\C8jqAs'ݞIf@>/^{.s< Nfu[lOk.Сg&뇿 9Ba̧kdƙC|6̮9+$oqRrhZJ]pmU|ЦznmF?6fZC:ضLl:<+-?Fan#0fdM*=f1ՁeNG:>6]ur{eKW<Qo|EЙG>y1㶗dxX{ax 4u9qmcƜR RqW}aS6/'z-@/P[ PrGEYeIv\W|@AnX(VXݘ?IYvN{*pX7QT:։s_He wzB*Xt'n'/`Xjдvv.|)orfbs@ǫ-LǡShm756E'`KK3LTP-c bqc,9Q{V{yymL UF9,='7]ø PHU5Cc ;:f;I02k?yk0wuGKF\O#976/Tc |a$$=K΀Y1|\w+9~_:KbϛC ] :I9aPsly8E=r Y5F0cH|1.{F>kK O4l*fobH?j'wzcYV:g~@7C,$YWZvcjlt;v=48mF}wpQ6i,zN3O2`ፐA?9c{ƄS/C+oa5}J̇O!ĘTI?3¦S}Ӂd 1ew)_KarK.O;;GzJe5wu+b[gc{s-z]9Gf.b25$[vpaDRQꖯ[zr~WQt\3T`#^|:7NFE5ف)^q2yC$ar#EE78d L!|޴ΛVr[|ȿÐS ;}Lc{'~^g9]?b]Zͽ 2 `,գЀ>YFO-Aˑ_xV,@vT7-q'Be}<H>yZ>IC iDZJ"$Пl;x~2_AXJ,$=&CEƏ:Cc⺌S)s PCf-ܼ0t&7lXYUִێC $1œҕx>!&A `<:zɈԚrF=a;Pj^[x:p]0e}_\@v{7paXx} $icG&<J6"΀{zT@<:Μ>D4.3Ph&}eW_P[[!vE DBg=]-D$eo2/<xZ?PFeɇX6D͟v / fHݚa+rz؅'c%ya/%0aJK{/a{Ϊ$g'=kq%r%u [~H:L?Yƃ +/ZA$9U$llo3Anvx Yo BS}@~@&.!_o B=ӐG7vBIŭo59Cg?‡MCO~[k6 |B0kRbg/ 1{A3o3Ï?>{k`슁!=u9j?;9Sbʸ` |QlpÌ:U'{^"iZ1s&B׻MFїQͨ9P^^QvM005zoT(֗0%t,RÇ=VpwlF]&@S3F2ZYwVe@%v-ԍJXM.g( {{ OD;cD^v$O5ǒګ<𺋒w,<?ݪv4V@6:1~{&H@O}iZh&!`7#Ntc,HP| ̖iDU谧} 0n~G;Cˏy+X9*g.kmtBLc_d(qtnH\7n ]wSm;`*wŴ?{ƭ |b reQ.93^JvZu"Dk`U_M$cwyI ϡWC}W:D8)hnYxBg$Kw’+%/y+0PwO[.9TP}71zS>+ hB'4LeM7r>)hGÓjXj+Ω׈ڇ=j1:r47V`-o}t{߂{rdw2Fhi OgR 5WWjflK(dkVwKۿx-P  ;u.Qt r! `ӷal-.i3UɢW6PؒcwCXJh籚)KA H  ch@0V]-= fy1zi&rw|9yF&C?^؃5ot3k*=ƬOoa վ{[yjg3vc c%W2"0^;x ]RRȘ:|k_p~z tdӂ|u'>$ib(R  ZaGKx;͢evbncP30~8r${Bq^׀2PNR@?!/im jxxʻTs2?O硣jh,5}ޮ3x >+s2J°e P'$ma&f^=r]#A$q^蜟ý<;ʿ2Vq4Pt*먓|o,o亝瘏XbvvhHu*dO`™Ir>X4M>҉q_E75BF py8f~̗3h+֛Kp}u8J!uOu['opbqa\H0_+JF(ϛ(czSbɴu.l?W5]<$<;` 6{-Ňi6V @|rV*;cԅR $P݊~]b0 s Omr=E T=6C?@ ̟!qcKKp`,_1ar] x $B=[ O3<@<]t ~A;w{ВRooUpDǓ4Oetm"~:)1A&_l:A#_%7?AޡWy ҥ0p\-(LNM)@ŧ: ނq \O/t o'(J ª$,N^׹6ZSXt sTnRw+Gg_RB^}>>!.kJV闿BagWv+.=CCu>Z(ͽy(4b_PE&zA4hبNv_C. ? &S{a/v {+U- PF;OCC76akI $o7nܻ}qΝŇk*Hazcͥ-8ZSȇvCE=dl禍T*П &n v(b {o?p ]F.ݢP^!F*[y{gvh9ϥ MvlBg0;l&M1Mw`E-{^mvBk.@ۂΡ=TI&25x;؞_;{(ھ2ӒxкK% 4,_=B$9c  {R Oˈ5#bk+zq";-{}8 턍e.Zrt 5Bne4sgYfo\ge_N'0cF9(SDmotzUf{WJ1gSxnAt[#PʭPW2v^?eh>-Kуb8'11pX:?|-Y Ac_>wmwEӺXW4d/ MԁL#Z}h'4Tu$t%CyfH[/Y$§P9ޖ5X(P+,A~uvs>*}]<(:VLG g܄a?e}In dqq$4Y0HvM..\nɥօ7D,->MYy֐PNɹOD!K^4B"VxdǺۘA@|2 (탨;'-=lxK&nc<+IB̋K !S[!*ysݭIus0HK]b Q(a3Zk"3Vk9:]*dӮcΎ׃._9J|5[vy\lgߨ!UFC2F;=$Ȕ`Yr:&PL-r:{|zʑp ]Gs P $mw`eJRd0slm.:]mV p#V 5oF+`:dT{afk9$3{Z?xHtG[됻*(t%MZNո'GM4輲{*~h }h!rjlcp3 iFW(ٰh+ }(rfg 1׸0iur|G /QCFGVg#ݼ4N`kSP#;/@ƢWP`v cclGJP5 ;a) M9 /Bu[]m: ,CݧeuP~) h; #LhedgfcIůIi{Eߺ0Bp|+hXTl, Wq%Z<@!PHίr&UہU(W}w@fNضba3'~2.BI]mo|ZR4ޚ^Ncpw"* dKg۷'"t;x=x=$ߎ.< wT߲KXl)rbN9. ѓKΊD.^c]]aHglչul:b?2 ح*nbر09N+'b~u&I85CC/;ct|U۽wǫ>J`VUq2{2Q]^мqgʘ G5]ރ'UB1oI빍Ϭzn!Ϫ67A.K Ⳑj{ǦwiWh@wm R(bﴲ,|=JXaqU 'N=q SSs3A+ck[D63N7"Ƣױ6PkLAmfI i-2'0Vp"cޜT^ʹWwhY%гR,@oEAm/uɗ6@p+@v{L1slnVK)jKX\v[&WRv @?t)i˺ mT Z^HCcOvD@0{سLsFX_w7TUmuX-h،3M%~Bˎȹ}tZ1tw4ލ}; HggaEznU ٚnrM$˰8b65lyR !Y$HP fܔMɤd ,-Î/}5 7ec6kq]OHK5e\h\C^IF ͯnK@=k3!/Kg% ~_oym.Ύ>oCIuXIp#jJ)ĪagHZ:NjDّ W *Y׾:l1K;I}En]X2R  mX*TӀ$رi矵3uC[cϮ#DRR~>zH/ ]/3ż2u0([ _ ;[/K! No~SY>K8X q{OCŘ!C0);ل_n{a7~ 小 ؒO!LUlBo$,Gy;5nwaզ/lpV84iRAF(n XyS&T=*+%{l=zS%" H0I1gol:Ι!;N۔BxNUm! {~* #NШ2ff؄OPC7o Cw,b * <+r r5>m܆D尨s6^9Q3vv/:t>]xqe>VLXqx |ƜAa?&qJ# <RMnj̶i] Akxd1o:fi T'IiOP`hߝwot|O$Y}<"_r'jW߂sݖA3KPZ\4d-ãbX1G cd?fXy۵g0mX♒5F1ڰzχ-^,~ިVkPU ~ˑ~5̷ĪF:iMOO5CGS+*8:ĪA¶r,LcNcC>7|ڂr6IdE-^ ,n]}'1@t1r¹D 3d|@Ύ+mI,ĪxE;>3<>j0OL_ Eŏ D?; oJeV`|5` MiwA5q֏:a |?S:no~ B}4ړi3˳Tiy3 |v̳nv`ޠڱ lTFFgsi.^/1e51إPJ㰈XPW/NRO\v_`Ջ&A?'/[#w$ ؝y/UF?g#FD h W"H? s^o  w((8ȩ?7p,ata]aWH3UIƗ}PύRngfnJOps?{#OKJ72 LicE`00C:B}e-?@"˄BT[6>z=K8F-uꂫaXUlDJ 6W">$^CgbdP\L>Նʞ7K=zpP[|*:71_Lݘ~5'h)"BuԪĿ &@=lu(@$sɄMq1n߅=%3,ry13vއT1 0Z-ÜB2="ЬW<)U})c?@˒jZ4?m\Pi'8UpL_<\R.deE GųIhי +kHÖGS,՚KW-َ3c]p??yNJg]:(,^|od9Ym*`U*s xORov_>5 ϊòQKlH:y,m\b/2jzcwI_sd"l~S( AZ!X&cw|vЍkXt3tYwۀk/΀E1Cͭ/E^ ./vcDb65y쟟P=J"hr FZ;ga(v.tmَw~j f/a𒆌{hyY|bY½;DƁu\DϝZQp.Qk6t4 tPX)kj_v}A'_ )BZ+޿ jUgs." ,Px@`Uڋ.wŃ< *{CbHj YrOTʃ~'TsdBV6)i}؟9} ba]} ~,w8ʓLvZ;Ƚ YrwJ9r(vs+Ý4HƤ }/6ȳ'OzA 6H54rAB6˂(+<@;yC> =sÓ迒zv .u_ei۽6x|,+HH9s1hpUDXIㆭ',Cƍ K2 lL:ϋcly˧Z> |١ǙpwDG0og,9ɘ!3MY%/\Jƒߠw ۇ%#cg' 8 u}QN~ӧ=鈍 󙪱Q_FDFsFrIgtް'/{~ӡY lE{Rv@}|vUN̚~87GOyۥu /4NU‰,'࠶v}>a:ޏj=TRU\{D:$O)7sfЍOŶ6Vq6oH}"|m_ N}[n;۴ؐ'Z"YpTK7Xa=ljBFQԳ14 kihw 9oظ\6pN?U#؛P^%sC4 H]y?8erDq9ʅsl5`ڋݯl~W>B[)~{_`q s&G{pFąø9Qвx*T o6B`^0@eںY"U/*]٬5s^AuͶ!G_tYjJrB?*ԜrYBJb>PB|Aj|wWAnxd51(|gx ~K]b@[uݺWa*o,IyVn^evGRz%cכ}$(d/L9lhnCUVxwgN2@*K]ƬeܵP!+}RX!ڕ.ބQkڑ8{rR |f#|ՖݮH3䇏x`m5H;t3Z$~)Kr%CEsSW^u|[ -(q JN}={E~ANW>cX _x=]ҷU%nemrBDr%IEa o4٭b=A8T"FVZ汨LS ;T/ :_eV~cd@W!{(~[ ! 9J0Eexlm7֫xyM@ۗ;Ỹd5 Z|%?B҉hLGޏn]?G.z $J!wtz ( ͝ڈ EkqrxxOX{lN :myf|C B8&8dn&* ൠ*5(}AS$Zx'b,燱(yG5dmSyd4,_VFb}rMwl j;cWi֥tǁh5ؐyySQzOҁ8K|kU Oi!~b5>=w\-#< rjU.8acWUO,Kud@qްN~apq2]Tn췅mF\U D?|4ں~C]Fw栂H/p V[꿙/ltŒ !3zG9曏|YD:Ǹ z_ lےc,̟k'c]eX'jlHeسY!+=F<1GwI!pp(8ͷ|=t!Snq&ڨw7B/BPC7͙ bT'ч?;` v1bc\U?a4D}РE W⣃#wB;޼Z~~x TOJkd.U~pgf?X^>vF\ZO!F\YBqX Lhm`ьն`tb=$׫QAOSБuJKE hXҗ]ic_kH]ۈiQߓBsy e1`5 fx]#ME 9[ [l0x/}.J^tn:gM{ bMt[v;]zHv~6KY6sNCer3 # ~b05_ )/O'Ci_m&os–/a<?~KzPl,#3 )1s/!bؾؕL:appǡ"s Qpt2AeG[tyٱM LP]lK!?.ȏRwwKZ9'+|[.pOPߥoMm@n!S )^ :^otpm[Z@T_y&'hxsb񡛐jg+ F~h}o96 1Z 0LI > jO_Cҥ^BtLʨ0S#4$s4ʔ`t[ݐy7Y^Ӑ ^KC`*ݭ5^j}~.̼9N?tBH9veKY?`#OltmCqXwRm2ƙ#GE',U1uOyoM`I±p~0PW%ubxZȬ\ =黟MChel =_S,BƀĊ$9gԈ@꧍&n0 `_]mwP}1Rr"C "+|^/S7.A )^nBZZIt[|c}#{4-u.–ZķU1:v v]t=ɋfgjM6\ >"&#ur*۱2vq^e\Ğ|  c_}wV1)|cZ  d-ǯ]TţFxvoyfX8(BGJ HhPYil{=u]Y!;_?>~vnyݟ9yx<נi}uvzg *Cͫr*n2 ]6V'.LŀeK@6틏?*ſvL@:Y0(ٹWilv:aFka)bCtq#0l3OL@:7yX/a15O 3>3([ SOLdR,|#ϓX_C9hBbm]߰;bY5>OzwhPVbاwWJ;Q~Vt|۾f!sXHYê⒳0lH3%e>˖ϰ!0+tH-?  Ifz.tžtԿ gnU7OCOΜqX)EjUP(. MCCmuT.Og+UF@o/δDfCgߍ9s,ۨXL+!CuGTxY]v̧`CzLX牧3J_9BdL$ȇ!ey. l蠈n DXyV"ofֲwc$K\{GH`x4^_B8br*^CWV^brGZ/ ^{\sвDT(4[I aT}Pߙ]P;r!p c ^H @j\8'@7y9cG1H_]yj_,ߣmsb*u*8Ay-KѿPS#Q bh;eǢ ޕ{a.J高(+h`$5Mt|vAε]NOдX2(ɳ%yXBkK z :. *Lxy@JO@iqkKi$?oTsnɋmO b57 .> z9{t aT8j3V,="oɩ}Xl,K2l<˃' Owo+pɳFDiD [16`]sK-=6Ƅh@[hs%!7P#=xS~osF1qȱfdBpZFԝ] ~' n*Pힶ ȷ&d*3@>&wK9C_I5;PrͲy5z.BF{(P0%oPނÿ]*\܊sbSrE*Ƽ6Y9 u=>L1|q2P?o_%rltݯvu:5w~FgJ.8Q%:&Z)M=}oV1sGC?=̮4*wj]SPքҾ3@x6T_SfULZšD`WD#85Aϭ]b ފKEX"ߊ] <_~~{ 'U~O&4/vPՏ?)4C!XWw#2Ăǵ'U 죌BXj"4|{r8 %g;,%/Co 17 $no2GqLaѺ1ν ]M ?uC8y4GO Wp*0<_mWqKӂw\$o qpzKr5vbArrr?|xI7ĺlkwaS/~qP{,7/HfVQQm?}>}'A`kt?KÊՊ^clM㍋!AyXemlXĦnX2 t]BǦ4#Hjkh͓UkT$I%Zώ'7_03-<v91mҹ dw[BKѽPMiwָSu mMC I]yA$ݨr7ϋ PWq{:L?Ԍ_f2jdd9; uTkՔcl*N>vV%f tM6Q8t04U`}+m]vèH}x(ԚΧw@JR?Y]hP~y~~yjdn a5QIsDslfXu=f6-X"+H;RH_"wp xګ85ʼn}"=<*r,D燅ZDo.EެY60Lh蜲NvX k4ƼLh.{Ͽ.mfۚK~vda=n\*^~ufY=\%x`zhMZ^Ł}+e`OY>7ݻ?'@s71>XJ^Mb֫فrp~r>g R"d7IsG/֝P0>_W9zhrpǵ _!/R=%:~c·C_noccIK ׾-uMR/bZl&7FF DUBֺr&xQԃJTJ@ z{n!u!sŽFWg#%c< eb=&@lCuaH#?Ai7%RJuzHU{ BQ2b֧ԗ1ݮ2+fw{ M(w/)CA#34tr&"] ksFvt^1,Ii׵[,g칫48 D}_'iXLpgr' 4Y۸`?unũOr2Yj=< X# D|_\)=G1X<< ͌m":œ8x<D6߇ YٕwAn3A6{`ŧb+fK*$u~mxIXJ,=fǬd`EnܶʣwVj|/asyWvjY, ,C '1Z۟Am.#8 >:#PvD [̎}WvA^CM }/|Cc,RÒ_o;!#x U*yTj+u>&!TcSjtO{Am^g4x&UUPqoyR?-5bˇe,=0- 5FbdZ,}JF]~8̞¨1 {Pb=ݍM1O7Ḅ ˚0y;56~l<SGwb/x&+#:~sd>%zafY$qw/QѿQoBh+MS { +E/h6IߊڔA\$;/v" G\(b_'{eqbf0 _vL|DOw-`R!Ɔr9DNRݘv>}(0E s-d 79ob'{Y?F@}<PU7ejҪd  8Rܑ1j(8Mɀ`P!rZ")C*? 8-͏j6_c,QOƦW¶r:rRk3ӽpAw'_klyw>@:;×X{"$7]9yܦ<,9s~'nK7>zCyoQc!ziWqX\u]oÚ3L6%b'5>REGl>s?{N@ŬŖ(Ф7dţPaL4h mb- J1əQ Z~II?z:0+3~&_srh ~1 )wn3{7fwr0%?m~(2HߩKꃯӕV/+P;[) eqtwH@NC;5e&_;,;ܳSخ70G (@ O2(IBr,!ϥ@}A*V^(II}ԔL#G,X(1) 79AvJLZ6PROY$|{wxEՁl$ :of Wڑ{V.2Xr8{=+9a^?TQXsN]=GI,ƞS;j%>ƭy"N$#,|'+ { x@3K!=&P,e cXz!]BYr#8):ed/qށ+kW037VO]+Vg\/%Gvf-F{QLِvNj>sz)szpp!+{v]t DbZxzjlzw5K׍^`-ǣwG6vRtw g〰G .|]AԹZRPҨlo |D) |782 i+\Owhuo 04$\s_WgD1$@X̣qMڋtAR~XeH+| H(# 04ɬa{ڛPu>D8={8彟TAa%k,>r\p>f vvaizu3!\e#c/Xe?6'pSl3*h[ן.%]Gl-^lǑnx{D%]KoeHfbEʱıVQS4V?Iٯe_y"PiSoڬM]ˌ_aG8eIQV WnAAJ/3'^?hڋKPk`|:{*7Aq6Gh 5)vwfT<٢h?k.(={/X֡<̐|z9̉ 4O]txI poT8"cBb(&Y Iy/ohm\) /f?RAjN#=|6^Cʻxt{J }=v\ÎXӮմPsV-K^@1|[!-4Uf ðबͩ(*& z;:]'^Mbg3hΗyrZ ;f!C2K *§-l걸7okL3vݒ-gu Nno" EK|wU۰3;W TS M3?q$^ ^z4BR^8iLSKjS\13es(E6,~N/Z gL~;< u6v/<;,6tW;VR/x.[y"Ѧh/,= 6vg:[=/gܾ'W+bKo^X*D҅WvhccF-SP~ f~-P{9جaF| B1~ؕOnxØqC^CLX[gQ'sqGv 8v>t8rIGuξ3$2եyN݁7붩k{/,S<^$y;1zֺZA XaາXtRkW޹,}Ί+cΆ"qcGe{)?3KآxEtX9bQ 1ܑWk-B6 pxG'=/[J]ϛ W/=BuG{?X%8lzNB)}C(]6rfVrPs/C3E"sЦPnP帪t}fqG(0E}36=5 MwdMivBE#7&,! +gTMcUt4tE3Oj)r."N7\ ͞_cJ)J$ſ5ɅQEnހόNN!i1]2B[3~4#PQ`kVc(h2a1y&#eT÷>NqTl:MvmBDyFhű!aH,ǭݿ?  `mc[Z^wY;{A~$eC0W gZ`DxN4oJ>rE)еŬ i|,3616}}hl}:WrWx0aQ|x+%g8ѭ<aQod'(,:h:*vĨg74w]jYn~ moIU#b+͇&Ov`‡[XbŤLwʃ,^(z@tp^} mgm݁Ps&K񝲈I_05|c7HUv~&-nmyV?`ͭ]"ۺޟWP,$֯a'\ܢc չaia,1fX|Fh4N_"۩PX6, C[boщbQ!sj( ]iޒh-MТE$5-ggXIRg$BRM htofJΌEPѴ\x$P[}Aa E藨Ĝw]ݱ51n0}FzO.^rTMYp+ht9Q{9?nމ9?Bka߁ˊ^2G`ojJ+ u$}/3T{T=`_A%!ҥPyвTh+%+n1Y.F,9 e͙;LVyo=Ev8+̉}Ϋ3$$8* m]:яa;a7Uj.TSS,$_Uzv$C@$ZC9]v\9h MJCS68TSSA vB H^OV'v%2b4߻M藺Oφ} z^ɗED,iA^Xn9 +2\X#Z_C{/ŦW^2ױM\:ஊ Ôy+5Xmgc$8 :i0+a ƪtq ȎPɖvCRdq7 mcV:TRKvBkpO=fSCDV.P`ٴ9*PV*8N1Kœϗ><E 5%Ň4ŕa̦u} &7)>]y|= e;}7^uLi:"D( w踤J)cKhճh=-W}nƙWػOֱZy\ìQri`p h_ٵCtܥ5ke7¸TNg~;*J&\ pjfuHhX'w=f?tZ)8jUZs11PPKh8,[v=tM ~Syuq& 4r6|29 y[?'jH\\ņ#ݯ3Ƣ~u/g.V#B^H%_ |61C? vV13Ի_7b@'Pv+.:Sq6ivQgXcj,˔ K[V3r+p3c^H=wY'>V7#bQsѫ>zT4y7X"aWwsXUsh# Ko, cqՁf Uw35>q߾#0ZB2 VbT~K`'_͋ 1{R@?sIUJY&J3Kn/Æ?JHHg5RkQ;p+K}Ш.ڴwC<ݶU(?3КB+t޼G {Tç:Bx%P/)(X,]^Aog waf+P̖' J9.\8dŚB‘^PȻ:˞Pk|D-:opY ZzrCC:g[H2v (LI~ؾ}31DžΚY]g7iɎqyp0d1!rLS&^,|RŴN.kWiu ){YiV}w2,pBߩ4L!ͷzv k̋zCYݩܪW9]au_Zur?#ulBX>SA8 2k.aNξhsz 0 me­ Ѝa*L壵|70aWH,+[>nėEr"䧁\ &rOԀV٦1 t,֠1+I{xf j*6ai<U&R &oloœ5X^tc[>q;֖˒Y>__"#P|I9W,VDig3_{qҏ֐.8h~!VMO뾭 .`s|7IpG$&8d; rAls) DbEF;=JPyÇNyڴ#}o^aՙ*3fضa^Wbo!$l!_0Łao/v,">QqĞ#["8O"qp8.A637PL 1{ЯUpI&T|dM큾tńm`KXÑt>#i?qXS!v)J.Xiwu? ex.162EETQ]XQ݀>NrU=f)Tߊ)T+}-J/v^qGlS`4wQPF𓘃g:-#gr$h]z-y;ZF8DN-eu&2hS] ]u"o0AӅUՠw.+›lIn>CHJ Yx}õ\,ntyfF N_ÌgNͳ&cCw:ٟG1nA$fKf 5rK0~"} yQN2L0w9ǹ;*艋OiQ2lX/ՎZ I$fM$PtS]o6ױ-,Rr}Y`χ:gDc1 GnY=͜UpW#9}Z=[JXALfV&DZ>M_8C _]YXVp]5#wʕoS|;mܼIm~rwG!3lj|qWX]_rkĊAAM=ԨK$hwE-l #ใfο()xbIӷW4 AJSdﻂKU(|*om&s]>,+#t{z3=L-NJtCG밻6}Lˠ*aLjָ\ؕE.#^fD&D5>^St߉) N#x, Z)<lՐ=q#j2w\3þz*a!Q%,2ʡǸ=)C/f$9~,s_/5Pn~?)~S>ۄ#8)OWl5vƴ=ZL5 bmx⏞2] |6GA?sLkB7F{.RBEhqYAh)`8GYTk+;?uZ?'rb_~V `Xxï] 3cB7A/uJQ6عoK!sߚ|&3 b/|b#DpfG%alӔx{](Rz G/zI7hZnD`҅RVGd;r> V|pu ?!}XaVXbԳWvס\_rvUh6LR.ǃ-!=6h™҄iգlE3tΗ# #m[\K gw 4CaQ^]-x1g n`!-dp'g .o%?B3~-La".k~eaF(qcb@7vme8h^T Gc[u{fe\Z= 05rnr(ql—0?sR8Z%dnZIӪw 8hGkcRs|d6,M;/L6^7ܗaA*m{ԕ7Jqj0sZEBv@4o}4Q_\|KIA>%HP Y)7_ N.?t3m?|S%2!=G;++<>}2콓e20gR&Z.>) MPnbRCO7NB8ih*"*ˀXP&U7wQ,;+mh} 8#׭}Pgn(Վė~ j]3X"L̊zwcw|"ϖ du HC/h0ǾDTZ=rR:`紭խ<=a FȸXlK 2琙= u.>*qn[_f~/JYfgU(h3|Uvs&B_u?Yp0!/ԇgO\j"1ޢ&S(8`f[2!,Ihvf 28ю9{ht8,ށׅŬ+uAүb& uww-$;R옞WX!7X3ԼǁsynS|HmL=bjO~C-=f#e2?U j5‹5(y/Le"٣' '# >EZ:Iŷv?!MS~ 喺|t Lj{SК)~L5jbJ@G۷``_ukwq"_~w>>;鈭g6]>?´5PٱWk%|xSDh?r)FۤVԕ RG<ȱLCȗEt\\}Β!ԏ -x&1*' ?gVÜykf|GJm|"8tw],7@:rL E|STW6T]cҭK,=čw>.fY{L1D{GQ~+ +f$ð;5bV\m}O@Z-ZFWUSUjqۉ/~̑vVo.ZH"~Iz]b%abR[ Z!c^Ql ̽ >2TGO=-C+ɕ+6y><ڞ'VZUqzRV'op=p-A!|f'9̊wV>tg,!W8шRٞTk2SpxYv?|ݯA k5l+=*}ۺŇr~`$tsNi9BbP- wKj8gL}qۗ<Í Wo׬;KZ+PcFBj1I2f5H4:0;ZQt a߹`*YVf)OnH3{c ;V (c.#crqs/)p*8?*gKߕEjbn`ÀE\4/Uk.}L2] Xwpu8H1 Kh9-y1: Ѭ_".Gn'T 5bV byCfFӠeKujȽt׽z c>׌/[A:z1LP|Ƥ6KdC1C$鿭A$d[[ 6ɼrs:ZcOa){n59/unPF#$oWYAUH89 ɵ{3qͶhnZA^׏o~ʫo)(GmiR y d]q^57ZEJI|4nz k [0 /rDUs/m3JZa$'p!pUDdlآ;UDrZ`AގZia,H4E0Z*/h~ᛦSQLlbX/owϵuaOJ?DŽqz6o  sO"pEPdGhՋM?wv5N Q7:9̺T~LpA"7^v)7ջ/?l]n\=[XGVzGCBq|r>H)7E1qV;7.aYT4ٹLQƌwb>[v>G,ߎE]l6P@]# Zq`NDMU[N_!.ke,1 Jqň -TbO jf|DhgM{ ź ][t %z.ߢOC˜9I?/ yJEDg%Ω))CUgb7/ 'ﳉt=f$7{>oOBo/ bl%P,2 PT]# s5|qF}15Yߗz'`4! Ț8`?~b9f(VK[.; ݙSs9X3T8<|=2w9<)&[P ;3[A0MPԵ)B$)ιjBK粩EL:\lVoX=7>Ŋk\_AΝ%X8;#9Fͩ/AEKשȽAJagfamI Ό@'9UXP*FECsa#/SMX#BrņoB3J- G.M \8HKo%ζ֢O[8xV"6|f8Iً0-閉aluYKZJ<兀

Fka)/gdZskoHSJ{`m?_Ӎ8U.e~V<6̉u/㤇y6EH)8W϶SaqXvN;҇]#w{CreB&+XPA}j$5Ï͙C۸w 7^lxq.ZN .cu}AtnY#wNwpk+5e,.=[xt/v8PG5yS<\YCϓgw4y GOR睆#?TrIaYm⥉*Bn|vڝk'*rJKƟe`Lܫ@H? &>3cC'Qey~2pzWp}{sAoiC[eZ|"$^,^:l^Gͣm Tpt^"i B{'V2Gd)ϧB" $Lˑž磚"ii YYD\>^Өΰdng]ߌ6*_ɗ0.Cu }VS~s,^9-<F/() zE-*qraKv;Lj\{!ra[{"!S/ 7.%(}Ŏކ%\v[8ZBJF< &Mgv5C톽|j:bןʙ<7HwyOe K:w:m @tז%)C  J(@&WQ߆`U-#:Pz|i Ӓ͛9>6#%Ӑ;.psoYW퇜J_NA 3/ *m{>YAY!eSzI"2Hp-MY~,-+Rڹ2 Cӌ<_1!ђa{U~n@vyP{jnY@gg%Y XHoˉCC e,!SRuMX}̦T7`) z 0bpb}~զ*(.&?#;7jsY$?MȾfW=MTذmB6 t={O--qe秇dPokpڿz[0@g@b={sܐȮc $VmU/saXl, vF%aБGȀ|N}a̠5e|Y:5CUPvUͳeB{s噑B~\v/>bS;!^d7Iy'O[ @u87+ԛ2 ~C]RA=7svG.zY?ڰ*1>q'^~{>C "Z.;5P7F Z ._M,cekbcH0 urp4W|:Biih(6`Sgw N~H[:ggjLNO>U!Cf+!PvI;OYlEI:q? Jx?r+͓u 2x,)g}Z*K!ԓ z^^ 9!&֗Ryj(zZq֮;Z(Z$3 e=NPxO3ypXW>--{SgCgs<OP[FROy}nsFX.ԑ3*]V1m<D1kSMP (C}?ZVz a +)=JwuBJ3sH:'|'YNr ?*=_6 Zf舗gY1r/Q@Hnq˛KJ>Vęj_MAq"N~_Y-pLڛVHdNkzr¾#+{iqRxm^pe2g9PMo 72.ycrΉK.gzKO]o6 Vု%$EY.fƂݲ}'A{K:LÚvuAlqQ[*9̇9˾7݂F J.ǟqa b)J=8}JaG0'e N;>#{X3pr;8#[.&Kk 8?&1 G~w}[L>+XLʹFxZ_ߚX,\+nwG^ex*tw؍wGڬfoG`g(ԈdֆYPhlXY ǿBH +Ef?V5:r=VvbnXv5=@6Eƭ&סm*#4ix5BK1 -E>1k!`08X xW[CN4 R +ϱ+&*4yQ{~0Hmd(3A)+"z=;K!py+'rCy%I7Iښv{ Z/8v_L\? ׷5c?|dl郷} [ iЗ| Ѓ̟.ނС/톚K_;@n~a(iE2k؜EЉŊvi@5w"3t:(B'*4dƠS>KjZ0wċ=O ~񮎟yߘ:i6wV@]EQ}%S2[-ȃ %ػ, pV9x%g܆%ў=z5twPS.wP|3aPrgJ!,/nmdxa mĭ=гiF*|"BK䛝'fI5*Q^.i!@ .P;$zQ"K>c,oSǫpXIٵβHz[qkVq˷QSs'KC"|Ο",#^rJo,ka=V5Iv*T=`X'@I-/h=~}reĚY#+|R~VZ\ }`#wb9s'zqځ慃wPKB.`D2Ho+}Vj WjtaL ;Xtn9>-d\j ϜDmuWeObdX-g8?oE_Qrj}cc=I?FMbI}sM E'K FF+ мǧʕ'nY5/vARwvV)ӭ`mPZ *Jq̝WrJ'Lธ˦z 9zeFMꎐBK DG9uO:!f7da.v/5'x *_1fDk&z`Jg I'rzT[J"aX@V쟂mƚR~b9ʗ`ġ8ml;E d5Ĝ?ҹl`nHf5^bWݢCSPHGs ,tqaaŏ#7{`2 IOX !oI +/eyZc?M@ΨMk8}CTI?|wһ:CO(v`vh-f w ;'}1V[{aU S=MX\d`(dtL/@w =x,Gs>4k.!KOk(f5v|&ywߞ?'^_cb3MNO W@)YȢpꋴkGCEK,t,VT ڎ7]]E:i|Cb+Ps `33J}8pD+ 2w\`fS*עDEELoh*IW=mR tqس/RLzM)h=i 㛅h뎿T[ߊ^9F[zźWn୻q4)uF0~UXݿ^7{hB]u>[c:Kj fesa)-O\FJHh.'w2cfs"o(=%WV;-!% WfrtД1/8è0MtoAͱa5,]y F?I@2B!OaLޱ5bc(ICE|A3;O5^2?^RF炴qH=Kh:>BNlȥ( em8;,|Gq47@1tgW?"_q fCڷYi}҈BǠV)-euBɵɟH|9-w/ xGBAozu u@ v[w .f˄X8 !ǘc01ܤh< :a}xt{ZkutwBbcJ76nLMj-6Dgg,ˊmdn<\a0?Tp֬y'HBzׯ\?j4?;{iӛ]?v`EK0"b]w%.q3R<Jy-~z l/"1Wl!ۘOǐo =M"|č %o8]Nʝ \7sFrMDד23`,M{O=9`L=̞bA`]:\+c[OmR6;oMd{7r5+3Ko<rca/sSaYΚ)˰gcTS-wenĔ;) f~ h$Kb TμQ:#Bz% QDΆ~/&%uRKMd4ShӀ.!f9K8uG-Jyq ԋe@ 7˷T"zaG@cq EhIj׶1ԟI4ެA=rPpo[?Nk=<ɔٹUV|P9RL\qa-;k'↛lW쟛Yz Z? $#qo!/4v i%E #N.݅0c;Sg-E0'gS_4Xs5VZhv߭0Y/XkIh[ }]Oc gv{#;՞b* ߞxG6L}0\,)ZfM3$hyXX]J:0z]bSbf'r&kch(߿ȇ;Js. *|$[S8*暻K>)MH#=~rW>`c Ka'I"؏nOcJ]lo6T5ayX)i8 ƳVHB ;&0cđTG$tt#{Ōǀ>6mhv섶U\݂Mlt}٭KFvy9XyNʸ /baױo-:X!Ad~@HWH)| xC|ҁ(g[԰itҍFb3׻:YM:CFE[=},#XHlcd ʄ"16}IcR)ƚ{2WEa#qP}98۲quBl9̉Z7UA@\,VS ?ёs= zCU@ҵAcQtDŠ{oaTxpǁOG2o,J@|w)G `K~h#c3=VEhA76Yӱ'lA0\Y6M|&r{iL:m6Q¡ {VHY(PVB)aPGx}UW번Ж3tCk S~mﰼl&mJOfS?gэ,iiVلZ9ߝ zpX\:VHǭ?\踄ސ]n+fgFmQy9 ;P9Pt3'"^RTqNK3ؤPAm;E`R<ŷrO BQG9$ܣ{{Z|vț;E8s 4GV޻d۾\h0{[ib4 5'z`g_=R!1C6O`x+lqKl Sr2ƪ!?w0j~&iJXRW.gP@GFZ:'H稄 ߋ 5~=v[drΠHoغ_d0xBE>796V!l%|}AԕPp+H{g lPU$ljx#wE e`z"/Ȏ Vzw4CYr Z~|_-iDEՠ +0h8 KȞ&4^[X)*G"2÷m-UY(!d c߯g4׿JqŌPK7Č1azto^A ["#oob`/7TYEn u> Oi&8wnJ00AGwncJ\݀5t+ f;e{bOGbG`-%2yG7 NgdY,*xd(|ɀ.,B v] ҁrgо6f_}l8繋3PE7{ȘBލ.U(D5 M ԡ&O,қ{l~&n&Jր60&H|2lMBF3~VV^-׋ `?tu]\ʈNH/ %h(P{v L3*'5y5M;2O!·U0+sHq.ήo%CVIT70b}1&~ѸbykFË!tϽ.vJ譯 ONJȸ~N_<2mӇvlSp4g2l?+?t|\%5tUZ̞|*X3yW~dWyMpC!jbT 8,Ĭeu3HSPr n@%62PzSbph3ub:fgσ>k֊y /נWO O՜Β:G6cwSOi y# lm{ +IQ84ft FGICp=( 6:Zf`ۮVϡ7qf<6hZL{- yá; 殁][ @!5T B'GBM]mR_.pﰫj !!A'>+Y,pƷ%SYN#EZo3a)D IOl nk7[_rOF¢POj $ݿzF?E*UazM"K:E(^fiA'ׂ w?_"iN#otA՚K!>i5G!D'R5BXJñ1E*T)^$hYL)_Ǫec,^|jwx1͕i >9~ZNzZY<-+!}8I0v==R;~θO HiPu g~AиOGu*K'/ɆU# "{l|CoAꉔs_ʥD]z=V_w;킡WZE~[LPu(Xy/0sc ¯[?"ૌUP7zYM|{ 5/+̡i@꣋X,np#zH\4_5Lp\SW8t C 4s )J 1|J25fssHrO,QWMD`Z{tUu ~؜2!62XM@Cnh,4\W}ΌH9côȧPbLL:l ĚXtʚT;1tv$@'ICD ` |':ږa}RXSsW щlJ@t, ÒEОp4EV~ *%-+b%AE)[f!I^@t -F XAϯF {IX fmW9U;<)fv]7ĚBH ,_Ά-\ց,Gi)Ųz׼t0O}0xW'q:/?eBA:?Đ/#g؎f6;ADKXgYC_4xϝ}8 bA։,+cw 6o9뭇皽$9)_Gni@)#\.Cs\S<*,E<#B> !xFŎM{$z4'Ȗ^wZw Zh/ʄp;U3=-27RpX쇨|$VdVME#սj.:-"@v{hpN ǦF7 ~:.*^ {D\}( 8uzD%'o;y[-kS 0_1әOlPrR6K$]DRXwV"uX[EJe4 ET$EW Y{co{$Ƿ_ϋ˸s]>`q̙iLo M72wn}ǃ=tЊ#w+hys8hL-YjER#[!{zT3/ * uGhdKfW[G;QBJwOW뽔XG¥BLj ^`BO{d&;%.Z!t`M5W=RvGS ]e˿ȸ2F l)#' ivXV?ç"9Pp ov D*:WYo}/:@Y$}p'>Mâ I /+|J>lR_mM,aṴ^+`~ґMcsZqk~qKmnіjY/\a;O}R đ.e:˭lv.(y=vvXʡ|Ds^*AC{?S]4Py6t>s(ȁ/׃sqr/$gg<ӐZwN$&14 B)_zCH_Ŷ꣘Jg9cQurD4[`x(%p[j>`t3 Թ{o~}&74 05FX(p~c8PN;j]k7`YszwP>; E/W!Zr܄hkS.Oc@)hnyfV[~4hpS&<^Pv~b$ >y@^Q X͜Y7_Ն8.Cw/Ygc!$Nɾ-o!ޘx]lpP:ȴAcGڿbSP7! KtB%, ^+?zf=Ζ6 fPBoJWIMX|: OsO<# +@H4?jA)3V H=;ylW,ɋIX{wHl*>~$Ԉ`،WWp5 -9>d{; 5ҫ<jiυ3pCω)fl[$+> _?u±ak_qu7JYt.h4-ezPk6^* Oԍ rh:p)*ycGȴ{j ~xid4 ЧZ|k| 8g s\YPwB"'hqW+'H=u&l{su_=Ê>&gx5 z,ˠo骗} Gr'%6d̛@OrӭH2{/AGﻄ1XِSϮXE-uN5u$x@Z.0nA|'@^F2I, {'0/_I9Ogb/opDU1Ėf!kZ^vЙ-?͖>- #'Vqe1w^)s|[ZB;l1p +&>4bt,Nq\Q smYp**3E{Z=L6 ۔O$ljJ$-c:Jov uW mW[W&|ͅௐPD:VUb[iكXm1W}WxOya6$ s  &U=eE 5w=Uǁ6_jHZyZ.75cCZ}͝ӿb|>iݱbEY0>D&o8f>xBVxXymxTm/8i#i)=H`)хS}XZɟw[͞Cփk"CI=W> j,X;AQG&,\N7 .vRXp17p0gv{;vf$ Ʊ[r_q$Oҵ!VK[0'DRt8Mv|wS"ZpC#/#rieja} '<29Ią64cxIn/T<鬈K"82qpLu*b8t8'QNh(puSBw?q&qStI̒5xt+N'xCOKnEܫr<9 kU+j4Rx!<6L ˷e VD`R {ⱙwcmԉ8. G( :F1˲>oٔ)8pnVjRC ma^8Pf_Ċ\Pl.Lo:r1 Jm arŅ ܧOX< ~i҈;'ec᪀*lNPr(źE.Hzu4Ir~9߭V1g&+V|%g=Rb5;%GO_<~Ka{>դn}y6}bǹӺ8hpu;6D>Ֆpl*4Y~l)co}0G҃OliŘrAvK?Hm}^_KbWXz?Y53OY{l;ԷHw?%PT HёuT"%{Dp|?+NA8O`}:*mKgDq)H.i)>:nZ8ujv&[&ٔ=n)ŦO#G%jSӟ6GZsͱdzjy ]TvI7pVۘ5F.|}pFvD+k ,dVI8?kiKq2qN+-N?= Lxjm^*`co^ϡ'=nW2>~"s "bˡ<`3.@i! 䘄ߴitofiChkh98s*v5AsXz?˰j/4*Hb\?C(U=w݃eՈk +ra1G< 8V&[EO^BEq>McJ} !Xh\(DAXF?J¬BNF~-`@ mG T`{2d{=? 'j*6Lg>Js[PuwO)t=e,tSS++n|gf[[[(Ɔ(8YCrD~\>Q%VX/w-`bHR=9qK yE@ w֞BHzmbC&D-8lî7_>R(x(SH-_ 7?K7]v3*j>02wfcCtWܧ׈Ӝ[O^ |H}D%1m rI֔H7?+~g@ԞwK\!iQ_}V֮Ln^`svq;=K { aC5h_Q{ _}a]Fl (\K8* {sxdB1 1zqrO)EL>@_|*I}jkgbAd0!>qgK݁'ۡ;7:P=/"`sd_dL;E܇_JWM^f½i'h saq*J|OZe1a_25o.@OFWIJ󖣂NmJ6ż=P\x +Q$R@I_䢧) Z r V;?,Lͯ"A36.Ѷ:!V"04ɘ =ck=PxnR:0s^0C{55*K6dFc4VŰq#e HmNy 2 }.As_~i,?K?F2:򶅊Z5P)5NJ/#{_ x;Yqgúoia>%${ig `dXw`t_ݍR.urx~H6d*eʆKVVnYJ' 9l>K`ęL:f/PdAe~-(2dS,bM+Ԑ)3MNC91U`R/}/6w~| Z~MUQwnKʒXΥwrv;IVY F{9.jh-jxR%X m#aδt\>zCQp hl> 9ȡwb ?4E}<#[0 RJc70Bnoi$ܜ0 y f=Ẇ~|-Ue} ;1,7vHZ( ]3BCAB'l )gC(Q;ôo ,,3u/0>낁gˠ?b;-l0sx|;o$-/%nYf]*BE_?P1kWDɆV vȃʣ~A{9 r| G觡!J-$B(R~:}}T8#}2۠;XHއZ7]y/;XC+Ytkx16/~ڬ?`ck]<?fz:sGF74b}:8ǜ?CS4CPP}\C~;yo ];y6 M'_ +q$u B}l*'vg455ofA슗7@b։t۝E|;BCGb}5%s#k:(Nx` ;CZk/-_i_I 0g5Oh ֜h:[mSΝQeXΊzI[O?O`V.m~cr8)] hb/wuL㝐# UɼաI6G 3-/+֚y|8 '䫌8A%_S@P LSݪ3ͷ`WcJ}bdqBU+b>)s'a[{;\o&4g> SϮög ¯Aw}S;^{_ڪĺՒe#Y( SM3\ނ%xlE,:tSq{ 4OJgSq\HU?Ce;}fPsBrUk %S '4#x֮?t]V/@VŌUnv|¯[Mc!wyg jFfr!z;=Y/HEZ7;ӨP=Z@s7Fs 2(2:O{1J980VM#M.jJ7PTwʅ 'h%i |v~+t,YjC 0g[L|! DFC=ut$NckٝBP.Ԁ=[6lm{Pv!g,uKѳJc˹ ;(` bN4Ybj!Il' :-pi]K[*D\Lԣn NxSǙG/4-7o+\pjDZsAf>&?|p6n.>3 UA%wUO &=X)Bp^o {|Wj qg\H9v튐8?" KdtK\N;eGѝdXBrٍ'6x> !"7e(2{>?|]c~(b -O*7cΦ+spf vH̭9 ROBqlRL G/B/'l=չ -oEjnIFOy2v%-g:Ze(;s2e^h򆐶IVRoKjE~@ajP&EyR3ZﺉqD4^<V>m翷6BZǃPg. )K7t  (McHi?J;u0ThlϲwFAUg z@nȥHܸơvm"Aw,{:~4sf%g$Ȃ1v):hEl]n꒿$lf:$)6XﰨZ?r3 HmYyy}+KK,*T5A$ +9ǭ˩-C0k{Xv=gzXcJH@m ;CzcH XčہD =fXWuf|bBɫ{;k3}-0}bN9VT*4uk ֌֩2Kbֱ=G+sR鴫1W+3}^HIkO{쉥'B̮[hr8*q~@BσL2jQh9F\2yJ9d+-bn6M۾IRAy_rz:D<,?zw%\4>+(5fl2y(4;ڞשּׁկ 0CP(߬ >&=&nNM{({^/D N{}($^#[|T-JJ |/)֯&2"E*D?>HX)Ed@/ht'fTK,S g3*賛Qiiɟ3XM0mT^>R/W ,,xnc3]>8qHqH( ~ʋ@!f=.Kq9WEfoԞa޺?SHzr.!VŰ:=Mg6qh_'$+Bib[~ W{=A^:;d1Wן,YPtii&:u]A2(ޢq* K'ػ6v1j8 Ca>&Vl w gt&RoU(C)r_E4&V@8VL vK뱥aT}L߯S^+;y>`[;c-^S?;E:񭲈.^xMnx ?- ^z 0Z0VqλV!]G4BL2PZ/OLY9k}WN{/"np 4d|uoJPg 7&y~=sGғƐCDUKLQf3{à]?B1&hźUq;5J`ڽ_Gg(wmLʊq$AW=Cc`@_++h4lQZ˩J =Lz.Nt;i(7g֐x!i߯?$e*H"AFeBۣ8/YEaO6;3*NH^T2bŊ+O!u׌l_}-x2alJJ x\ht94XzH1SaO\4Rz2=.mQ3N3x`Nl9-qDŽ3wIU@hV}C\(::HJPbLFG5Re>kw͙/y5 b:Z e~BF߂X*< o1z{gOA@q_EkK7pՃb:U`wxidk2…MmXz<=G2ļBY;hkƧtZm5#7G$Lg 0G<}M,s*ƴǵBW)qD ]>|/d]{<3gSzCD5h-٫闝CpKܚ4]ߛs rc{U^a/9wd>=|K>p>6?/~v1@q? :(k!Q"1"揉1Ux_W9({ zp@O0Ι*ɎZ5z#'A33&tzĒ!‡A%m9!.Ism!ۂ3 Uu>ϊU=ڰ|?T{kr8~FtLN@ 1O/Dn,2'z!S n,2L̩]? d.pOHΤBXwa V_8yM[]uFcYZՀm%j#1 ӻ]hqWE $Q# 95,AoT{mbR͒UBde48 }h@zߡz3PtT l7Cj$-T9$*5X튵Wh߱YzwOwB{e ԢT2sRTJ J;lBL`]HjNSTƄ 4X$ :?UVO"ֿxKK^4OB>*omLhKFH;ΗGOu*`yE49YC(G0Ai@{ dSfi{Q1ZNQy &2q]Xik횉mKv-7vS`W`[6f6=p5,iӨ/+ņN^8ѕ'N!#Xbu_3۸>s(gĒYޗnlqpwۤ$⚾lh3vLy BlapD(nd؃!+ p~mhMl"u݄ hp*5.|(h#PwbOL&b0.V)R;*?=M[X844iΣX@zKlR2Z*ގ>xKz4_;}U1Vؒg@-(~6.ƛQkD|k^ êRFNX{o0 o?cm"qbӭ!!$Ij3:B.ao.bDnFC;?1z̢K~G^f7IܱQ0o7ٱ~Eʟ/͛F1`L PxΧݬS}SUrNj㇥OGu 0I6 8U cT ^܃Yfg%rs9NiW">cp6#WNA2 Dע/`1믛t,eHv9=Yk?H?=Ä*E"- _:i!ҒM+lºB|sv<3&v 9wͽ,F@yՇ&;SbiYmu5x%Yz*?'-gj*t-+[XdzfA]1{K@wzDVG 5Hsw|qr/k抋WҌNdŷxʝ ӆ?̫m ߈T,cq}H; Axn.,hb†Z:&opPgbxc-:' ɏ>; %+L@=[0-=pfw=]SIƐwO^ 7r \TZ!ζe(BS` Tf#)xcT,I| ,Ư(q鈀5\DԳE+Ba5f|>v'.v_z).7i-zu;ؽ܇9k琴NoqvTbb`9'*8?5w0QI.χu\f ^yϝ/@i}P&˿}2TE痎B~U_?UA̜!Oc;=T5LBk<>gB.u "Bۅ_PM+*D($ŀ(MiG*DydrC~LZ"><4X2 *JκQBK8q *5l06?[{_`Mxu  ,H C݋:FʤD*3;-X@tC(Pq'5hO"[ܑh75M : JgT9lXz,g붞J>4ǘ3OqMM̾<b0?wqNa,;!z}}O{X{ktհ4nXkv YT&f?@Aڍ:T$DA0w{Oaf̴)+?6-}49~B|!ZO @rZ̾]JEV3qPuǗ\Z,܁4˴u2 oȰ uRsWcХٷy|7hä'=dUm#{l@|b/ ,SN#[ -Pqtp3A7o5.bQtdHG~0BӾs/a6(]qessު: mTns;3=#K6S?vlLC@Ը8 d/9ZAx@JoQ'ѡ;CdH! oˡd,v%k)m.e`S2ff߁a4%foyCW}b%a¸L~:e2:A6lJ6P2G=ج }+c 2pv ܩ0!`˓S8QLs'Jl0Wp>ʌ¤1$Yb>[eI< //9.#jơIs#$hK+)*,ۅx^gtZXe{u4;sK-Q&~+-cر+h!+Ǧch%c5QCɬf{ #:h#S]l}M0SAgg†iubqCcڳrM#LG`}_qa&hch^ $nuOY=7BqowO0zBwԛaa] 2(+O۩~[tf#4:9iW+B߬!d3 W5qV_5tAzt~z;]7őژ̼7BS5-/tIu#3"j}@`ku oS7\^q<|z.JbC(%{ ]|.͏8-h]cӭWiBle' 6"7t3 JoۧHbK7!b:v _,~`NܔCUQpFtTe߳-9mph*#=fk 놣ePR73rHMbIX̹\=`!9Qqb f9}ϝ z, non@1CB@UfCf[)blgĚy6;8WwPaۣe C:=i;3;BX 给[b{w>/M1%65o;*gDB҂F:^銗< +4TEՍ$6U˔m2p;V?;߸G甌+!T8¸ngnl`*ۛa^1ރ Ֆ.G-ɴbQlTN7S35Sz-ƒ\1J@2Zm}W̋"ܒjqӉGn͏23-qMFrT8* ;QQ,'z<L{5Sd3l+CɃz>ݰ#y9 o ÅX҈[yB/z3aRchp¶?A5/=Ԯg }4lMM(裢;hRy!Хu n4> ǺVf<î3/c& v/ЕxXJxl$ ebPf[/ I;N.gTed]0]oalhx87}06āTzU4~'{b^-gPq+Wh5C}GGX{/b!=5 }({I#ΘVe T/"0T~ ^'y5y) USLqh SshCWd / 0^#\08v/ }sڤ%5-꽮BlXTgl՚߲4]"~\'C!5 6?[cj mj2br:MvJRZc[%)tAEPk)d ;Ym2~0H|T5ioƆeOS8/ eqFǦEuqa&"vڷO&Ad ?r3B,V|' cuBϫ@2ߧMQHЌX®yBIƳBмdlaOyץZq۬5|6Aj/5Oˆw:wG+_!/Hx>诐 g\>_ӅPWGqXWA6e?~x n'8 .k^Ĕ2$i+\kr" 2Mq{ kv%dH3J9z`$ŰDcںS'i/ӿu$wީckR{b=? 詠"ٲpϴ;T<|Mȧ ~+eBSQPx ش5U>471r]i,[Sq)LUkgW9(5`ZutJ{AcVT^,,w֓sBk퀴a!3\5ړƹ q ^# <_œ \E{/ZgLK=K?l1PNIk- s yh]Zwm2PWy-e.Ճ8d`ȠgkscG6j~ "%V12}EӼ=`9r]ُH~ 5[AsL6>ݨ2IN@ Ú~M?i;~O8^R뎂Q6>42?^IbbePTR I2QrJ%0lW7Ol%4XsH=zg_8nHUL\NPƐZ3ws8/{椈CQr@DuV8u_3(1hVĚP#uo"?Onɻ B(&5;oR#ᵏtvϝۺˆK1UhMB!OW`Y9 w(y|笟7&B˨-Z(jI蒽n@ U8^,'3u1Dtl(hIxa%}8O+"vBQNY5R=0Gⱃ@aÆ)z-ی:Gf؋~JY^xaϢ0{[aTݙ84\ȍag!& @ɶ]R@D(K'd]Fq1ʆ)~ԯrSj7}K 7xr4WqV-(Xq"EG꼟t129{CHy.pbzQxK~tT99ci /; Z!*xA:Ul? տzR2R}(s|l0czFq|zܷ-x ` Ƞ w?ms[qC=U&w6+|R#s!kpVB! T撅} 2iڡke`#$i@%lj5>P)׃O`ܚz[ C׸+vдGSCkp@<6xp%<@b@RP ކ|ҿaOuLwmwA[>u6=H/ƌrWp+jaEMz VߌpЬJ_ +ul{FTEab[v,DGyd2L}ΣuX1E'\z{'9nlB ғyWau>zçtJV fU0hb@ I6w1WSMId򧎋 ç4#$^L45m}vݔTsY+ۑh!|;j};k+η.h5Wf[b]`Ч;cj ԓ)ĮBq}./ )kC~o~S7%p2 n7ނD oW17g؅جxBR(`ZG7G 9TB~߼%us|zO 'uQlw.G)-4p{WYA%>V<ٰJ8OIOعl>l{Ƥ,v~kAwDZkZՃ9lK|YAr^̑>FumDL/f&v9ѩ^ °-U!G?$Kyo",jOW 9E7V U_KL_؇bCD<@E6zb|JF"g dDOXE %mHRq J :A=j+ ;,ba=l<9 j}]Hzb]lmkrXv\O }a'w0ٷ|,LRt{cm PaHGj e#mN`Wm+/Uzwߏg9D9qGx@֧sbdcj nsQx!y ft&e¬D&ai#8gjOh>WE)HQΩOfRG㌡;lYgR85I~ YM0` Z`JޅZ?]__( Be[Bp1T$ɞVƻw ~&P5}GUw͎@B1C=]ԫ̙Jj>~}(+ӮIBcnj&q./}_{dӲ71FHR < aR6\̛g22_k`c55yxKe2_s#>y*3m B.O?ڨYȫ{AFcvHC K7 ݵ_:j8gPRYs+T)rζ#B-(8Bԉ]* -OպbΐrB~8f^ӿ!:.a$Ql>y"$&1Qⱅ)>§\6]dPlm({BO(`׷:؊=Ӂb$D%6{ $= &w 3PB.3Dn ;2BU8m݉T>Hг&KPyNqk@)D ?~?WIl+=˸A?k97CjQ7P<&}a2̻gPyiQK23*?S dv̛Zڼ5̹X* 7wHnxgh_70Fj#bg!АR:>H~j̩q'w]G8@iJ嘚~,>_O=~9RWUĠC, 'HKUw19@zϙ6U]hRQ_J3/{ ) L>m ~xQ>VpoGN\" ǔ:ww +AQ7h5H:L;-if_u}5v}q36:'ݷuuV~*n> ?eubܬ<ۘ[j3ڝ|\_g5XfQqaFmm Xߠul'- ĕsV{w{E荬t:[M ,ӥo$NϳPׇzT?, Doa=acGa(T1hqk v]u+& ߡCL |uN-468@Es-Ԁu#@YM&z+Э8zCv]#n:O1 )/mj3Q 'N\hSt~+`鯍r i&'\MHt ?јhYcn%@A5W E.8ڳo<` }Nq6q# R.Ib{71xjdC)2@]QE"XxQf[ʮ\יx>w6*]zm\6?(xoU}1b<3 #䘥)_jPӉMR~X"c-b%ְ1)+vNy\|6)dr10^~]ǝcFdZvSw߿x9i'J=+]ep- ""zȶ}J;@UB6XE%cы}g\>:CW>[lI<M>='rN߆z尝ץrO~l$סRਐ4)'lMզ]"POIh.](VǞ^r;EHgt/XN.6_ݖࡃL?3-mjd;dK2F~:6gr:[承Ts̥M}yAD]ǎ]}eI<vȷ43cO:wV.JIC^dgE,vT1c..y?RTM:u-dS=he=UIs ma#xlg\eW^|,.)聳WsHfsжWR6V$T˵"8Ű9\"#p折9%a$^ D WStSVG#ip-]>u\Ҷ0e qʙfg77iJPqo4qU~t+؛u0z:8&pV%EB{@_y2>L )3O"6a+:33hHzG:Y=o{長CʭBgh:NHz1W".o .>Xֲ371kXa>GD2#h܁vSq*G!琥WaFO{bbjLD<̩.C# 

kgG;8?MeEY&1%4T[Ƣ}٫Ro]ϏO,ݱ́{tkY] u*Y4m>vs^?4/>M|쬘Ǖ88:b[_M!T鶦zn%DųpїmvCǮ4)0dNdmRYXkEίlk7AӧqQʽz\% -KMYz䩹뾌.m(AbWrv|Ö Z[Tچ~M>o`gAoAGvc1 Wz}ܢ.Ȝ&P%Jlb쯔cqkǿW^GV~l]UǚVI'2]K [o@R7]°<^}n|L ,q6cu&58긩V^nxK"ǴN&l`B(г8Ԃb¸ؗoW3tkp,+ ^3jܳu9D~Wȏ{s^29p7+I['kIqgq5;UiN5pjuONT|a$r^c@C EAu,s|w@ Q9b44+"s(~aԻ Qz_4 G/bXV0is3'Gy@k%/bDJ ֩xbm 5{_XP̲B]OЧoS1 Z[Ct=j!GT3Bi.7AϬPP<+dccFifF<7(y`„ 4Z2_ \6f\8z^k' %fA觩g0NU~JLpijdaWYAu_.CRK(.Xs/yXr^'N+OcmmJl)~iۼyz6ū[wҮ`Ր#HX<:%:5eq%Xa մG|U1Df^K16H:'%Z&tʠn#s|69w'/~٢a(έ8=3B>lZ;E*X,"]>5@A%K}R3+ןOw÷::O:둊į<8e^I8a*[ ya.$Q^V/30)y祷VTԚz3//Ssͧ_a\BOH:!5 4Ծ%Ą܉$q_X` ?N E~y,h%>.wSaR(ޭg_6$F?E]gM30Syގ}rMHBAsXW{Cwv14XNCƅS+߱tbVC%Ri(:WH@s @@bSO2Z,5 t6Sf _^ =c&_Voe@ $hUW0EF[ YNc뱔 l2u،2bJ}Qhp)StX.Qx En$ LOW.|E)=?T}af=(| ~>N-=21E0r3Y &obl`"Z R4$xΡ]) 0 o #a¹ŗYlHOOW5E.U(0=qӀ0|jAUԖB҃ !M @u)mVC9.,ʓ/llW[!j"7+v@c ].KH9f {^7~Rp,z[8ju,}b]Ѡ2d `χOň~s΢$ =e#dvJkݼdFwtGfz#޽D^ =.kuP2 _ g3MTUDSʹBQ_6Zڠdk*ha}܍rŮ!O<5Վ_&8gaC{>4Qy%/aZE6;8H>ČI8Uv, HHs;M1|ƶ+MۘiZ4ciK1FVc 2&3v &]D>G'n6hVjR5OX'ſsǍ|ۺ?ڱօ}G#Xֳ}loVIjR0] zy[o\n0(gK<[oÎ7҄[;ꟆC!Db$ؓuqà0iSlwhG*=lb=8ڰ ֙_+opvG&nar-,$hL L1۾.$q_jڀhaU%Q>0;V=N{}Ec֐^ސ7V(Mg '88ҁuQ{)qbI{^ɽvщr FN8B%,#o'$DŸ X/jt5&GXo`_:Г~øX4_mr"AU.#~TiAeٟd_̌ i[6FCRXtD*{4CiB{+Z7l8w xx,UHq c \3+]kӀ_w^kħUg>*QcEwv}l2ڷ9.y?uFE3ˣGBxΠ_8KX ,.]o:ƱUCVIXXJ7Go mbbG#ܘ;N]4 {ɷalCh y3ԅlo!+B<]%7(%҂eWLzHfk}9s{t07fϖ͛L#Pw+_ogeXB^TPdTƘ3%;LQ@qR`0V^&ẘԩ^I#D\P&UbȎ~)߾^?3p (*}ip .Nm]% ȹZ7Y tqz>a&"/:]u*cװR}*Nq7]Fx9:fV_x'◜rna죓12Ez3o͹؏g/g|/Qj2iO~=/jV-d=@-p~ RtDcPύYM|=ݼ4t!Ij4|/sA.]% y쀞o2^as{f3` W,pmYjө\Zeu 糗%ny~ =qy-fN R1}4=p@~qQm3LTLucɎ]8L KU^J9Ǽnb{? Is4JX.yR3 §4{]n!'$pI@C)d?}?}:EM/Nm S'GlCUuv4ȿa =S ,Zb?ڋX߫g =|{]֤g8b}@vZ7OTs0q߇l٨tU24y o/BfŒ5)k:F#>mgKF=1/;8dWحu&t\!ML3GsRc^{M̍`Io]:? uv|nʦfdOoQi6q(U]@6 CdLr5V Hs 6i#iWě7O2YyClqNVׅoyY}1U? 7OpƆqǽ]1/ `Vf ߱+Qf1 yo+Wn[XNSR`6ޮ>HR_3H2oM1{c 5֛3 %fŖS@bha,RBykDF=R5?är)cbë88vh{HǙBZo̗巀Н h@G!X򩂏'R%/x1lO!71=l)Qi($N L_~8؄d"' -$c951HԈr}`h ߈3/`u f/߿A\į"~Q*2?Vаfl ~d?qK'PI/ݷ eK DmE/k׹%(NjfY/23ޘU(O\@1jw;ldm?ifs?$s<}ǝ:oZ˳Amg¤VDXh͹1uȍ nA^MwH5L&P'B ht@];>A%*h4.5 AqʏJ55MHt|=gz- Jdwn3JyG4Ҫ}h,Bw?(l` nzdܨ*Aڱg$lWCv\/YN3q 됇1PXAX`n¤|̽O#K}G|bYXf* wk9Z(S dž!P^p*kEᲲ}|'ig4j:׈z((/QT;Y新VV&̧:ܵ2wz/Nȗ鱿(l0+H9z 2pWM?z(1#uQJ#bω#Xx> >OϜ&AVǥh$! O0@]U,K ڇN+y?HE?NGȑF>j=MF|?aZ#0Io@i0 =w8t4*ٝ)F1}̢D d-&O^="Pes>) '\xrkW TʻkN@Ɣʋ2 LM4{/<N\?6y(.9XP>~92 T =ψ 9>*QwW*rJ7cJdPN-< 9"^u@7湅(d$? '<`;mvvkG AH1􈙦>{cocK LG[kPs^σw@Ԑ3V +G)"`3~z@CRgKb,0_ǵ`zcXFl7zeRD'f0bK^`5v].MAR6RJ)@幏@vœm[OLkz"\lI<R6EL"IUgH;$a2\25asTA,=E#OЀƍ[ǿe8p r\) W ߑQD/I62PsW(Cj|+9z#Y72V)x1T.)ؾ U̡mFb}:Hp7_~؉Jyo1)DؔdcnlkY'1O #X̶߱~\RfR25!ٖοZE3 '!hk=C0/ v@2APtjW|CWPW"?bT>{ltc۠FS2Gfv{h'.lbnb(3  7Xn}^:TB/|PLQfO?œh'z߇ڥg?&:= Wϻ쩀%wctlc LCnuz*#|,(|ó-axjs+bSj&)~KD w ոFX]B ǿ2C6ime|͸+D5v +N=C6vbE"KOi$ 5Hr s} Ҧ:XRD{hdMS05"6v~鴪_xob/z1ͳײ '80s6VU3ba#NRXd ^!.о /N/$ΈKKgI,TX4Wz'' 'pu|˩80[SD?h;%:gg(J8|EY= y[­uPO#Bl>4bk Ak '4m꧰Z,5b-,)ۊsĮ(\w<˂DW7`{$h3}(Z'5ïĝñ$S[LyKSئGȲ_¦|:7PAEnT?u:UnY@kINӗ:_nޘjP|Ɏ ,2ɲUAwzP!շtĴ$6. |ڙ=,oqՓlP!eoO9Ti%kC0c~~VSlgիk@<I |y;AT,=ץ Moz ܏@87Cy#UȖ~"@`fj w%D ?K# P"rZF0-C폅'tyn:_෇ BЀ "^62Ţ "}$&BMQ35PEL݀ȯijb7&Psyl-ȰcK~|y:Z Uh4m]:>3kۜ}9,P%2ڛ{;25[{nּrghdk< Qcf詨?XAi2K 4NAZhY˰dct3_ "H-,=Ya~dC˗7GIz+ެٶmQ2W LifhR4l uP 4ɷRǧ‚a+ķw]W4C/#Jgwk$#q!DqZ0$;| f\\Scq%7qbnPH=D;-fwMA5+=tRdras8&|\ĪtM b)-Ri3 F 蠨oo|VЩIs(fĎQ[>Fֿ n1(zCydAl\σ Cߢ#/4j *c &/0ccՋÂX3s`,.ƲO{}keH WId԰cPckPdNZ_ڲ5NQC]޶'X|\?lӶ[z3%F R`c)UOpAZc~(^6(̤)~䳃JP"MR6#Ն`u+^cˤ?GL3Az~N/v Jh*U@ׯg SPB3aK҇ ۋ1gw }gHe +2ϑa@Ặ(F?J=zNk^n,+ü͞Ȅl >*muyg4&Lò'3 5a?xI'hڱ$0pB˜ŋ]uOhZo/7A/|LP 4-kli}v~h:o/1g"1eC> > :Q)Q԰<5` ?&ę :kE<3Rܰ6ٮ-^w ',Eΰ^ 43;&)V;-={6RmD]!ʝjXx +1뱏"QNmNxMgH?旰&1#d-)C8n3( $3OgQ$g.1b5w |B HO?=nQhTin2kmmkn[fǣ}j0$29dbuÁ%[s lO%$r}]ؓ1_rvޤ&sʟq~߻ ac,إ.qC n;v> vFQh 9侓tUή(YkVW j!"X"j`n v5b2=J-4Wsm/NYph(cԞ]aY"6o}ZM+[ifĻy(>f9oW}bS: i;@`-׾N{-,9>}-^v-@:7sot  }^GOAqpCfӝPqKӚ$mB2g)%EI(Fƞ&׽cY1Z]_(+q 5:F>0 @A &{/@L2_|[΃C6YDߓmBӠx@9hg5˿ؠaD'i.TLzC[3@FCoZV[R6%i;(q:J&P kl$PHZW%$2`Tl޸+yJ6zh =7c}I̮y3s/V0~HsK/]} J_%1o}VMؙqvN*QT_HXbdLePc/aȯ'/1Zy=4䈂6CX`CD܎K rñ.㻕0TnT2SՅ >u,PIô*台xsoZY 9^tSH|Ք ş4rEW nڶw I7f{,3#)0gM<{QpTv[G`d2<8ҟcd| t ݐX{ gXpE߁bK.ԓQ *7>_Y{':e{+a蠟.X~4I'_xdOB$l f<~v,Ҋ%j٧&o} یSN/ { 䕳yWWJ~f8@k:/atO3}&iVCj =PqUS0D54sAu,䒑8WY0}Ա/rY.ώv~s ʉÉJ@2Ř}Olȟs3W c>Tmou`B(&\駻xF)L}QAyv`lR ˗:2 Fg0% ;3|My"/ b6}_]PL,_ Sj \/!ឤ1A"#h0c8%+u9ϗZ:xR5@Xڨ&Jf D&Ly{?e]<}1Vd<~;/q:Bo[dFugzaI 9I=ЄfA$lk8xLQAXRG݀U NBڨ7ih\ gfY'@V~bnXF("wf'A.{){5@B^Y߫/cac,1SP$A;sZ;9nl:۾7K[q/sP'k7YDTGV'3]~":=5%c(fL\JR_~o`*+`dKƞJb lۏᠽ]M ?,fUm j~4;$h4c#;|@!FYXq\MWt)_raGD16X'x`Nz"ezϻ>Yۃ>j+ls8~"+.-%_q8qnƜ+Z%'$GRS:N@?r#BscKc9+O Ę|p4O}RUb-3c/P2A>yxd:tLx\$ַ3ȾWV҅Ur$=Yj1 zYQkXE$|v  `Q ]iez/|2a[ji=.ul2!P#CNO =\ 487~OHs=LssQ1 ;\@ͥ"OUu昸Yy<ɻ EnG 1C _3amyX:w-< wMgw`燦vgp=:cG򸆝QT?cs? q3[aqYDIw{N$, ÁKyU4ޗsO iHvơyۯ8{Ilmhށ3K>A&cdL%ďva%_GB*pVkޣb$= t[g跀(C xhuqTva\9{cT8.khbqssEVC:ҏ  IrTCkt\K# ym%br[FI;C&Et]R<+a@> SAkEHid_״B$vagl\1yIjWVOY-! vw x.ٯ ǯܘogUN#M-pR!@<;-E)mї1#ݏl/_9A X<nY*@I/5h~#gV`(WUM$ȪaؽYʣؤ{ 8cixh*Dܭ #oˠXq`"~ZK<_z,7%mv}3Ero$)!ubR]:ơ O BP Cm,ݓ>ùd%F, ˟:Ƨs77b{Z ȉxI^$E'HUf5>2p)i~iBa*ߘQ>_}/f4wX[N[- mcXؒsP'w4V ^i&M541xbzJ5oM,8ZY8(5sXaMd[ vX\@#§gY6ncq= z /cXcAQY%KP? +. "$}KcQɭҠs kY1+;t[O0Kzt#n$D<ǎ#Elt|W^ VܟV{Z80:qa=^?pܯ7$X|ێ;jQnvsF'·xs2!^ lbm|@fN$L]l&HK #`w$.cIp+ $c6S(k|yw NiɔY $:cY݋ՐyIh^}q}t9?{xc{Y!,gP~զ˘2ި {ko]XYR0(Lg@W}J"xgihp U?\w]PqBh#`'${ 1l|f G .ACZ/Tw_#Şt1`jV'HQ0YQ "?O3SXRgB||{ތIRʜ[q=9{4un# h\,dj cВ>Zi W ߪ y-͋18w]z3u n* E  8҅KT^P^lqIl &8ዃ\F@9|_c٣x K3yl^6y>.gj/Y3ghg$_4^z7Bd0"ZMBZz04IĴ)kc=y;lis"䴴+bnbN(]ZjBibɞ?Zk:8{&\r!miJ~b~w|}1/%Csf Xo~ȦՒ;|XHX]i{?6FG~~?)/E'4_Ua$FY!g|R_HT^qjAdVXu {*L֎x!9t.eUMK!]LW"m><[&鄰 fO>%Ǫ*Rbade|UdÌ?:9"(}x[w20M7YJ3ƫ)LU^a5\ 3l{&bN+^ Sk/L:#β퐘n{/n@W:_sim˂I L{ބXz6l>t,1"Z`gawҰ1U@*`ɹU7 dScFє8]h?g`C$ Uy ЬX*+MŞ8G"x['DK[eT{|?  -=gwR>/B5_g͍=6_Xùx%ccG ȍP_[&FX_{l XeBUt#6 }yZ(4E}](y;an!IZ$=i8,9ڝW#Qje~d$cYۙE :zTmq>7w%LA+`"Nv CACOeT7iQWmDze1D*]I&Os5DMÄ'=^l $z^K="BlρӑPhRtB6~2=ZVm%a(X.f 9_f<!vSX'7l4 &-6bYRv7a~A Ln){CNW#x~}/ `{:B>f3AHGߋ% ; <@ChC7#9xX iy̑{vSz{TnbgTy T]Y7glDc,M 탽V(PKV:9 U:Dc D oIDI[pHJ# Uh{'qC_V]Pع0`)z)]vR #<0nP%mV{HCRmntg杚rBPY'NyeQ Ի4`uoh/̥ υ'U/tmID;a[{Hj09d/71o֛`ڪob0A!~q7 16\_0(vz&Fö}㤝?f%zSEU3XA 7\=r޾8$$:ԃ^ǶdžwW]mRglrNA3L;?2aBDlҪ< 7ZnG" &wlʖ|"{~Al@.0} M*LЙ~\[t} #ob|Vsn hSmǶA)`ՌnL ,c E}ђxΦݪŗ1~ʻt[>}X{}2]=}*7zXmnmqRT[)Btf]l\s* 0|,_8pʘ❚Mޯgg0m9q܄dƖ?2.@qP^j*C [1!B4F.H "onڛ_q<#dJU=LK@|ݨe9XNwtyx?nB] 5mvWDFW?Xd{jVCHcXԪOR\v}yu~ m? h@煬]knao]/?Զ7z|4= eG"U@yxM9Ih,|y`ȅlU(; IpR;k>+J)#r\&!)+>xc]4m >=h87,:eTK؄.?ZT( & v>rϦDT=@:pU#=͏2}!*en_h=:|dq[Yk7է SvgjD}3p2ڱ}'yĕ ?J.Y,:>ːsBks? Ҡ[HlFvߗۍ=HQ`clp p_5َMJ&J\DACcx8LTgU[$' ŕC;xДI*ugh? .$?}Jczx!9?TP>@ki<脹/vOa.I`Rv0Ĩ/9y_#y_tUj M S)]>ė/`xa-(?]PZaG+yT;WBvI+ȏ][%Q'6e{AuU=#5\hA}%P=RHR$C~_m^0NL %=i&":r@Л5S}.KlS{ '.Ή?}VuXD0̃ҪS֡Ҫ8=>hwˣ\>['8;:!nyD7U=K+BJSk8 4Twt! ,֫t3f3BDZ%y|O@!BPI[gpzZ7vةC~wW_Kx`߿y39~~F 1a~ļF[@=j"Tb0S_A~-FXMb?$ ֿ H&Ͽ4[Ԕ)p!NmpFCN^ o~_ZgXJtNx?¿сW/?c'oPj?jfbًUog@)y,Tu(N>1TFԎb٣a8,uq^ZBArL;E*JY3CW>|5|R:v&&w[Z% B6v{Q؊SOaBUr'T:]viK 9X|o^0%*C۰]N&FRIe9x7.z%ph?ߞ/S8!Y5'+GzvŽ e,.q$r:m1&|kLbX`|mjL5~{݀pc0^@YeM -we>mUZR%獎AF첡2L5p9^Br3;ی%ڷ^r9E>(P‹/Bm*(Hbg Ҽk*qUh m2WOt@`s:ĵmnG 2x~t_ ɪ'Kػ1v=fvQ[A-eC[l[Q1/_Xqn?p} .0T3WG;c5bdߪx!ym9J1l(o{E衲uH2uM@tBxx"V쏁'=<#Ւfg͓O`shohH3%E'`QnW?y@eǷWl v^%ZCШE zCHUީ DWf]z54u2B,ATn/Jw_-=86[l=m'OTeu~-O|R;-`I{[VDU]|&$^apmO@+q>-{*#ME?'4m8Aq{?};5?8a#!Lї_fY:? _ư|~Rǔ'T {`&/wdfJo,yo F !{HG"-KypAHr9 y<N1^\ż,`,.&i31Hiq/jK\C7 1̸H2SJ.b<ɫ8U__ruS8/@t-sMfC925_yj -g$s%`Ͷ| ӟ1R bZϷU.ʜm1N[P +YCi*&{$d%4p( )vJ{8`aPC0^dowCzNt?"4G_@==:^Pr[WPMv -)IPc)+f1P!+ꊿu),sB FYm$+on%?~BFƌ#~V)<9y4BUg{ j}UcPᔐZU'l$۟DŽ+CwBi7o}.:02cE%I4-9O[4oΚ!쫏uwp[ Wf7#aivXEH'd$97efihӀu,L@uf,cle*??Jg`>6dt#./VO;>GŕN{gLtl,%8]kh{F*'evzЛ,lBUJ+o>u9`Ո\-SŴq9= ?e$`/}BV;; t+&2f^X@{ȬzƥPN_-vrT3OzEU[L.,B8 >5@5]Z(=嗘O3o=W M@|5/m>#0r`4e7 onC#/%^Ʉ PZg6m8/|swbcnmv$> |ğ_Q·ɲHxTzoZnQL0r[%YG^`IslHEqrſ +X&mWϢKy VzS(%w_ĈڣIPfJ皠.٢}-XzU.Ko.2rOP5<3,T֬a֜1_lO,TT6lZfR}Eh弱.'B>ř*JgX{+ r`zk KdavF; ik<ȧپil}' ׹/f\p>< ">=>NjcϚtqoD, pA>rHXrbHʺh~lX?CaPJ(xY #&nu{e踋D>ʞQ8 ur?QCf!=?*~C&P~a$+>ע =X,TUkj@"&bnD~SNMT /X\wU_$F9|1#Fۤ J3|8vZOE"]۹9hQQԮbD.Mvj(+>dWASq) hyLʃ.Yv&Am~3,k/=ݩ-鍎D±ǧIƉj5HK>RMAM.ޑ}n^ tzoV!ujFEh?e7BK_G V$.ov'utK!@PC< $g`hC;%:h(U+4@~Dpht);KAgGMhTpA/k^IVxi;|ǁKkR۰kﱒ3qul|bʄf^b5l9 C3q\Aht? 6AnV~mI?sS2nPSM@U„b,n_?q&_bjY3tq[ LSsf ?60zzy (O={NOw."YByjx {b<^2W{= 09v06r?ߌCsa2[gŇbdŕS1[l {F:c)+ʷ~ɭ ?޳71`ma-F뗦SQ*:m  v+^U_b,4JS#L =+4 ȞZBYd:N`bD6)-s'7Jw1-w/NͯNU߻]Yp-gal;;e).l*~D{n>þEG8KyJ#+V`R|KOZ[v7_bNDPO2}sTҁ8XD) <owC\kO%0I}`k2fH䳘)s{p tL?gK^-};E{ z7^]R:jоR;Jߏ?'M|ŶXu .נˁ=vYRCB3͜,df)}.60q(:⧚oJhW:9Ck`?6)\(l Ϸϱҡo<s5w]FPd %xd~hcX! M'm>pނ>PKmO`m&W-|RTV}d}ڢ bqL5tyg ǰ®sVQ(HvEaڣH8wR,v.J.vL{XL+tJ/1DF C8F/9S[ƸW2CN83C~qr (<֠_g֊릢wx(E!o/3@Dv:T70c σPߕ诿0rS?t7)y g?z Ce! ?u=C9++[:rrR4t>:dh,; $e!?BW0I%Za$9WYWb 0)o+]OqR7l5PLw-ssXopkdd|̘zIqÒ-8|Z;?¹t\q}?Llԑ~|GJx (#ʓ2ݗqvn/mMA}zD0T 5<̵M00HzY(gm; d v3B@41E?ﯫrcWB(xdsvշȹ?ޓZJ2M- S@h|óf_Vq lk" Pyn}d6mq +Xuϲ& o+[|:;.Jq;>@~_//Pd*%, dhћcDlʔ9V CjO#^X}boRJ"}!-Hq$s>]8 lI91.X&4yG@*{.O Ά )k/ۆW\0n[o'oHz0ds3Y>1q*\M&_+b,,l2H|2 NT0aZm 똵xJfi&L oC-@gq6*"}&(BpZ_1f5W\u}Ze 1fRd5 Ey|J1l:EmjU*R)[a4!dWEF7#XO?!-OU=Դ5G3`aӲ&8 f%Ryiy$sNz8a/0#F4qzHp]^d%o~*v]}hY@;izN]+?͠W攢eVxaUSHp;8Ү ]xз7{/TR" kmnBWPDLA-3{KO`{mо<(t |no(U6x[cоf)-br>zТWyw SCmݲ'B܀u9c{q{dO),Mku7y+` C}o3/BmZPIL 7'@F֫؄ QP9Z,TB{B3\ՆPg"b. xnE oǂYf'y>{O컲'36No׈˜~}8)tu l煔ݎ`` \A8n ?΅)˛7۔!j;H UA٧E %z/Wv/&l<ݒ'0#(}1-ƃYOֵͺV EsQ׵YgAЬ+#G45)e}*w &[tc/Vnb0DJʈjSbZᅔ FWٹ;v_X~? _j'dq =,G *ϐ*v7>`Tu^ }lX"D|m{+r7ȁGL׈EiG:l;n43 y#XъG[h w{G63@UUM%AHaQhf4 Vlt/4Vr\EHN({m6˶]KF=cv?ޓJ<|7쩩(?r$'0`1ΟincxzK>訸Gs(JhaT ˇ$PUȸI)MPAi5fwW=-3P_,K~#p#uFeOG)\oQ%]Zt*:?Xo?E,BiA[W#e@sd3}˹/~~]A^;-d81qﺽ51z  BIɲxf\*{kXd+`/K-u?qM=v4 ڞLΝՇ<;#:,~bg|p\H+OGk|uz0vao!dz`_R-B ?b~W ޜ@w]ݎ[PAԈĢGI?l_^iu~h},J:Yz94xs/ӫ8濡Kqql7Fp,-f vUR%]yA>X~\;noiϜ8!#NfKUS,ϽqbRu-mǑgU,n8B|$O}~ WO|9;/&b~ ¶˧gS0ΑBeDڶ歯uĬR=$:t{6bZ9gcJUqlsXT3$s |Y|jt3/04t7F+KmX|[ۡLN(cRQmy!KߨVtaButKxs~?O9r.Xow;V_-U{m5{F$aIF˚*T.*:;MlK ć(diazO8[.<&o3qRvj0a uP?6U e'yGŠˑGvU~ޣG&DqDk};Ϯ>B^J[Gc-U^oshi)YLWZL m rL7ʘɻ4?_r%s`x^Kk8z&5.u9WmǬ#XVH ̥FqM[ɴb+=u1¥Z;2lVZ]3V]23Z\cWT?ӭ.6l!mwn8\͒Ǿ-?&_]o6 '3[ϞI ƶT$tl:U4= wsGaʹ}hmf,'Y?X߮Ax,|DKڽi| wRFM?$>r7u; 7)y;'e4q9ć)YĊ=ίUn?OW ;ĦFGU9Ѡ]jmr;{BJJ nKKli}Xhig;ez_aaW8􏃓( h}؂㾂X4Òs:$/_|?wef;>B1c=P-V:Li%0*oEs6~O., @t U3%7Ŷ/2AgelK{.{ ͋[= {׼$aݭۑ`zѯ0w3lZQWC.o[P=,R. zL6XPeAZ )mfh6|> r~q3e%-wl:F$S#<Xŭ++ָnRւip|A n{hUE ?JW쯦\9?|Wlm;{?Nt͉ъ"gGb'8@' ړt]Ml_=j~4Kqhgj}NvM>q7٩:}%cͱ9?"cZؽ"C#]ߍX AjܶPV[Y%2ekۏ'Wu@8YIjE*pӧpLܞ=Vq=-'0$6yCQ~>HP}E^b'8frS^SƖ1VK=(NI0Hɻ?>a|MT?Է}-:`'55>{*W5b!ybpÕ cN:f7 B!秬̠-Z8"WP޿mB UtAnj`sXc~h|o=XUTC#sً+)sP?I \6dS?n8nֶjCPDW\a 4n*ȡd%΍xh)-D{1ktyp0S(M/'bSg8#ܰe:ljJ-@b֛/?Z;~0y~I4S>< %MLbiX5o(;.y?`_|:oVC;߳=EO~il/}X‡._2s/{BuZv{)TG0fitCe}i(w{9H6ADO )pt7{LyXnYc9#&ezf@%1=V% uZÈڽ _N2~p)߃Zֻ._|UCbɯ ?!7A^n@H?@JR ^x| ԇVSq%LCep-P3jX_RJ a*šVy`? ħNp'\N҃T֥Pu;XT}%\18k-K84v;{0COhwv_1Џ,7q_rO,9҇Ý#/AV+8d<ɐ5EvҹW0_q * xFaybiIkH08) b5F ZۚJT??bD CoOsҢa~P~nT*8~ƗN'g结rB;ڷbf¾I$+S`[P-Wf'賬hd}8!Íppui2YD@P%F/B f~zN?8厙 ܭKLhM0VaUh\:ٸy&{A*oֳ)|ZO|PJsjwW Y:X_9 l|YN~%Q.g!])( Eѹ1Ȱ|qoKok3Ua#avl <|뗱wۻ}0_Să\bgQ`e\#nuԛ/BbZ 8 8y|+qRo 5Ì\!kB 8&XnYRb۷?8aHNҳ?yxŏ$.cKnAl8AOc~*֙lRXĪ[[)~9JhmY~D F;⟌7˓+Xw0 61zxFo1,X-jy#,X9I4m߇[`}$&l=claZ| v^| ΌRЯU:mU╶Z15K?'sJG߂Ĕ+*ѴX]r6w ֭|hc?U㭅-BK+cuӛXޜ?6iBae*S5mkHςec=}Zrg@Ƨ+O@o Iw~P )دwD=E~zt߽B28-icT]qf,y\]ZV:2"ےƑ<]!V~z'$*\\Tel!)"vMn˹LzJcF:SH_ٙkŲX7AFxד:\ǼH4f}92k }دBIZG{cS$U|4| Q8y9-uP vOeH %2;͋=U%2*'R+|ypr֍h|(\1>2.Ud+'Iick63|wbU%6n B]3yc8w84k\,I*ϕ z/6.H yibsg߽c˿YoUh!FɌс.M!KR,(Bn 6 ,P; ζIw^Gx_E UfubC 4];h 7Lljhڌ:/Kۆ DB@I8rY]D`_Ws_k.6hԟ6n1kokh:c/Np߆Kg'Le) Oo!A,^Q*[6y2Kr*jT{?QB6P%;Ӟ/Δ]&$HKzVɟIG'sdciMXc[u+j瀧8\KbhlBGvۓo?g0N}/#*9`sՃ M+,]iGqcP~נ}9Vcغnh9C-±՞57sݘY^arK<&ωbG:+C6s]TĦ{!Y~U vOɈQcJfV}Ze?fB6q?^p>+mSD ypPԔ۹l92[߷ ǹ'9k*O'8i;"ׇŲpqռG@%iȰ mVfzF ÷ƏS5 غ_qZ븋Xc?Q 柷32ˑN(}KTCOM' Bu._SB,v^}XQiNkpG X`Π wXqnP SO_N-9ǗSbHlu>5[[_Q#!ʫ%c!TDt`֜"g- eS $v7t:2/89Mi< XD `F/' Gf,꼷UJ'h@se]0|h6CUѬ Ʈߑ->$hp0Q $u;v )sQ6t2nS5lȿ,q+⮥DtɄ $ :xC2lăiC]XwV !w޻MmXȿh| UմA-Ӆ6SJl 7X!˧5xRj 27o_NG~u6v foDBvGcXj47c-zkN=BUnC#Bia3H׺^L_vè9GNl 5IBmOX4}ںX9>rRC˳f.jeaon2,{gQIcIB_!~e(! Kov%{ -Mb4T7bM:[@؟r[ ʂ3{3H% 8Vw)]R 5mV?SzyUB]3w^(_w|9Ɓ[H#**'t*i!ۡٞݡ`Ċ B%P_@5 p= q̷?禛(O#V?>%ѢN^0# ~#>Xγ0ȅU+ )NcR;vG΍d#ΪR/$^J-!o'1^ծ&N>Q+W 옗 6ys,tk&> "]u1Yv*H $RĢ6[HX&d˼[._&z!1_ZS߀%{O`Sw+,Y=^i-q6·d_lxG^ K[pR9xյOq1x,,aRά-q~bY:gPdp?D*#CF&(¸ذh cLQ=m\3 PWiɒ:Z%/+,sX&Z>Pb5|"wfUV> , VGvC᪥QH;TM\BՐs D<)6{٤1Ow9UHZczƲ<"Z{`/R$]TP8NN^z% K[ڎNY}y E%/X@7 9LR(6NНd_ Fm)S?sX_d\^+Ep>odA7P@8L9#{ּCz1ّ%(q%a8Fk<;ه.)n"TZXg:y 1><1{̗ tۈP ' "M}Fƪ^ (ܝOAYS fDm|jC*⩘{訰~_zLmFo YL~hrh~5}l?WAF#FYD~` i]6c?t^"|YElQXU" Y(v(w@iA 6wB^4j˵IԔ c6CLD 7Z҇4Sg˄SޏMNO*b߄$1ޕXߘBU|a+l2uʧRsrXPR3LQDYUӖܦT(BcB_z{@:{6|kn} ƊUafOv /R좉V/3 #aww$s`)tM&f#5KCٿ_Ay٬~ --oP9V"8%8@ڎ3 5Z* լ'=J}M&~B[pM4~g%~Р_L?}4@e5!߅`ٖ EU_k1Uqdeu(8D9@wźWnO}iu yu=H#(=-T A#1%dQjԁ}'AkYWE}K(+) 9 Cg5\'"H>:< 3! ZyU`lt=\Z+-Kt@˹:}?a&yW7* G?3F-CsR9]؂۝/`[j)N _$aK;5z{d%{)~ J6]f{ $ VY?AznOߥ0Z1cvX~{(pr k%_,ֈ;Ֆa#h`28T{N@JH&@.w ]` %+4B!'bn3'DZ\H8%ܔ}6tݶ(a twn|/ZH^,}| XQ:zC-}3vB֮1(u9e_@+sF]ܚյRk/@i3sPX/>:|~K`W+Rݽn~Ajl 3?;{mle,gL qO\",U9{}(3ױNXn ]Uo7Ha82Y}Z DVJ֗u+sqla )<i@}MkZ @)#}b}ʣv |]ڵm%'{tb|1.lO{;76ʚC ۊGF™?p]]#rRyqf[s=ZYC˂J7}h;Ig>2t~ĖyW8p,lP.>.YV*8rAVɢ|T8#īqd,P?|̀e[= Ϋ|UAf65*iX߉}}'flN~oq3О^Bw*Ʋiɪ`?H|3mcoĒҰ-g\!s _ IҋǯKBaDz'T&pz{|#JP1tJDG>_MSȴu &DTAQ6C_z 8C ry'#nm\@b3=8hz^˚(i»!MN@3Ȗa$S|Y\9=# Ruw@}htnCYh~24+)@r[Qng tK)SuiBnڨZn|- AWEu m20Оl4|%tVH.H}~{ [o,cx0Jm R)&rW[ 54V S1ʂms}{A'D@Rc<)|.1r1["6H\ҿM䝏ǽ?&z&n>}yݢ GNäOH m\)>Y\An v=7?/byfO'?> чD6v,0xx4vo/_†vI 8Kf~οihiɉ?3D?f`¸Ù;'wu˶b%/S=ˢl${(+xS-OurfyaXa_t8 t<)I{#hRE+s/v`$ $**nv߶?KaGZ3z__+%kΐ"3# ;. b4f7X4Orpʤ$d<ž٘9uG AќPwzr L 5lƵ'Ӡ$z{}#3XL*>B:E_񱌃N9~.m!gMBN@h8) w?HZm(˻۷Hr_ :n4qHYzVQ3y CWuhO> l=^~`&hcb@僯_PiT#)+LWkІ곙.x>|-#h*h˘kϺ'l;8d2ʴ z6ջDX6NcQC̗`YOe:n##~EDAɬjm(#_|Ver胱SI!>xKu?8@s;`0^P}Md9I_^.{j޼چ\cz"qto#TPmAYA6 ҥr#r\[BẆq[&NG]m-[Zc;bw}XN"LJ$Ɏ^XE- jb./0Mu- z8t3\+P?9U ~*?;AHⶌ\נq)a̴`!}B ;0b$=W5AxJ5thf̠!fR9{6!7 - sǨ9A_EP^ {GZ=u;Ŏ2`[p+Gn$/@)uP)H1P}O >00ȯх!l| MEOCi%?la1e賒^o=׀Bfz:(-5ZꎱiẀ{~|eGYSIPz(ԘH\FG`+[gM- mŤµzPQy ]8gBtS~6=A ix``%?>V4D_`/o;7(gVT_w*4rմQ'osh JKK;v$t'`^cnGPa ʏ_.<)wT&ŻfGڤռ E ܔQl4-cTxxs_m,buv]F 80a߃i u4G9&Q*~zdl󰻚~o Vs!#HHx|$ܗ9rX?$OhW1M2P?K(NxOb YvEg 3(DB[ fW< e򨡓4zS\m[X SW:\~PT=fEqPpH[GnaO]&١< 6;F-xbMCy16a ͷB{piDg,CFF?쬤dr҃'>F2C|Ǔ㪡1?!PVP@vI FuK:ҼcK2wKN"4Blٓ;G+k&҆$/ѐ M|if}09_ kBjyBW7. (_>$-6ݾRe[بsؠq>p iMPm[/.^R=7U@{snTh?́eAI{ u3!d9]J oIutσHZh9ս˟mKA[HL ,9{YfrKW :_M^a_)f7RSckc,Xv"'o= Ef@쫦6OJ,`?{Iy#Ͳt4Dʄc,cg֘3 ),>{kqͫ׿xcyǛ k,7uo""s3TUbl" ?b6PlL <*en ýW8 @ص? T>V9V'ԒOp@D@V%50~VM| 7|+Ho:t^COXw8,:^tbo?Io^Α(VY-Hѩ13RayE,QUÊ.*,|&1'6;E WSSY:}$MeFB"4{ "yam $yna \؞pȣg{vyȯvRũh=‘PC͚G^'bC lq-}W;f |px9.Iv :-pcЇ7=A.pT,ͱ8J~Cg]NfőON]}o>ho y}Z668{pB|^~ tvC?|ku KbNƯdڏzw?O"Ʌ?L(ġA#dԟ: |PeȻhNt&]<sQ،6s cx3u`ǵHYqmCk wǒͭgs+5&T(H-] !d3PK3L NROuBfQXcvKy?`+v /f~ >d,+__)>6 ݇Ve? U*Hi!^ebKYNy,Gz kt$Zu%0ȹ?au)$QP[>,-GM_є* \Ӕy'1;vĕ6nk4.wN`;*S9},;ģ3,85Id3gY‘7:՞|1n1T-%A-n:HoW{C$e<7{Ê|bqʀ=\Sn69)d&O].eOdV mس]w{o?-iukA(cQLg2q"ڽVyk(7TxWłG,غ&BjLu",[m0>ms_;M AhOx^cXO-O8/k a=UٳyNo'"=&7WBTKm:d$98wn#庯I0Z} SltJm ZbI\[?4^Ar2ݯ~ +4AkMqlmvԣָv87>{ڕ΄30h~_$ԍ=4]ZP5z0 )?x D.0 |G;7!9xlu(QBZg^DfT?<?eAv (h:xɴ SX'U=a%Q2t( KOџ"@c {Ӡ?i/0_;vD<Җ!5݅ĵ8sk%S_*rB| rRzm]jmҏ=':|xϛiQC3cIFnӵ/ Ǜj$3YF_T+)j˷30ed 2Byn'╨Rl~C2ps~0hkP#. )we$Lڙڴ?,*Ʀtc Pj~@ZZ~qexy:߮5WRudLO`AFY@[mS'wUpxWl)=)n&Ic+K1~9V 7{C7Ҿ@cTԎZ ē_̖ڙG1+[hkIVr"l̝[QU# ޝ]e~%l#7D<^`S+.!=ՂhXUƗ:u5ͨ|.a()n2hNf a`r:N%yw #OsU~ylm ĦJ~/XDBeolMrbуa=UUg8UbIc Bݡn&5#5D ,s]:'&` h2+uXoUt}PqnIv9JU'[d1mߪh?|8>ZZbbVhWfqP=́<͏MJws *8p*oblޡG!DJbfP us+BX ȍ%]IHHk3m! L7\tZbGt=q:1 [.6)`تBpRo_7\mptS+Y ?ĠaXE~uk2οxU{KŸ_:bs"4++jGq}+mH_EZ}>?V) m+}%9/ [ߋbwHWgt{{J7joZ!‘;OCıX5T4~$sqhINJhzvedy!8g@-kliNÙ1'uvszlټڟ}ճ$x/2 ?(?’2]X@bA e#MTa%u2\=-+Xgq7T⯩}1&86 qJxk?(5iCsR&oMm0} owG/CzàǏ(e-~r8_zOd=/xNbȭ@SϷܾy 5W/G81׼>%k-3ȝvywx }$M½lR}esR.@оlHS+r}thv.[žW`N|j3,D{HóW>nBn&.^ڮc?byU3NLNb+y]2{4OB{x; 6+' Cފ\ eq]^쌽vkt?)Z+Y,򠃼),:T}~iV;LW~E'dD]NeZXŎ7=PsJ74GϠ[|Ud}c>Jg*4ds.7;9$jF/bD_6k~b(IұJW\9A (p7$EPͽP8=]^kڧPp.M2vX9 s%򛋈=odG ܂B{)T,8 /oAKc 2$r 1gJ{VF&NboDB(e;^jWӎ+c9"%V KɹDXឱtJ2%%a{/Ic,<<{S &^. jA}:L92GNSR@IAIIRg(RpyfڣY?R=Re =&]/|58!|^݋n>&FѡCuV@0P$%j rO0.bf~qc,e8MR⏅!ŵ; B@3߅\gƸY̱̼GXA eؗ-\l좭cc}?V 7}뢙/-hqEQYc|!%=p~}|gDhY/^`kT G]XR(b(86bgİV-Y"k*_߻>O1/DL9F V|}HyoC(KTYM/̈́bZvDy*)7)y6~d`F9s҆ePw-۔|5E4!M-5,ywS"D2I~y[KP8'ty=7RNx շS' ,ڝ@'`ٌ[ǞE0B&$*܂.ȐV <$sQOL̡5Ž9x⋕mORI|ל}vV[8Ei0#Ghȹq5wnZX(3ЬڞPؒeʥE_iAoA)#w'OIԬ^ wC1#縟!}s?Tb `FZ2>&yl0Vz,ߜ?YoJ'CQd;zE|JfK0" #]B;y_ L3+j+̾b_Ə)Pe7D8SRwYZ]t(q>tԷCI䊠a( z/֜Xhe(&_}||?+dEjlܶ;YNAQ{yU~y9?3R$W؅bzx絟Q ~.ks ӯlU/rB#*̿}zW,z1]Ib%6aU_}lEqcTωD;}4zx‰F W)^KJr1,7dUn 蛓AJ,60.}FVbqs^pjD,=w&6? ,8'xF2%>=sXzkǁ`tu]%2Z,s g-sjh+e5 ~%ۙ2%?x}{u Ι%@Q02#&=rD*>ggnjk:V,徊'Ϡk?TҞlʁjAhCg%ɢ=:Lb7|#r>5TRCL4]|H; Q⾔ӏ? kDmF{ ,/ AϤ%*!›^<•n@Ёo1I1Ml`{Sml1[gk&Z]7$ƊШ{d4j@ ¸Av2GZvb09'8ӡdH?)S|ȼKu:TpXY%>JWmgV:P}id1z ? WWfKg[T}Wb+.=z1lRM7|"!hI7FbOhq# $2RBBs72}V  uJ\Qzab}Xj|'jskN>M\^AyKRVB/mރ uK˰jJ|1?3gS䳏V,/WWkvj5p|sh raXi f7Jy1sHI Ω&)++ZP`"R7H9]kgk5L^>Fehiej贏wz^u,N<xw :ZR1CϵBUwjO!HQ|{ C< $zrS^ހiۊck$:J ZB+'Z(ϢuleO qČ=ݺ.1ݘ| O?N3 U@E_ i @HgHsQK5C;Ϻc+^6> mG0c9'u6c?RV48p*Ty/7p-6 <85Wct9tʒ?4.M`b%qk.P|`M2L >oŚ/Y{+X!d-kRu'vw;'"a3S \YT\70깗v Fy9NJQ=^l|4W?6`خzگkg1$8 iu_3bMZm~4򦒬&xJS6|b FE;c$W;R.pUYTĢXeOQ- [ 8 ҃IiPd/GrY=`HM jQFkr !gҔHWJ'~ޱBo:oڂ:"#/ M[Ee0~e/d jcOy9t.?/f5{BLPtΰV"^]kӕ((nݮ gcj)qlf3IZ"$% r(LRh5}JΈ 2_Gl`,/\Ysz3*b顰 W 8)ێeԪl ]8Gq~|/A(C(MwnYPH5 ^L[A)_W _돇nЫJg'eӇFެ!4QxZ^1_ }4M/A2{MTG@Y X8"|}^$ h}^I o ~OaXĬͻP|\̶E%(x-d40S= HT r MTBP@KiV\=hp .92"!Y`FoudfBg>mh;ٓAz )8NdcA,Icc[G/Ci+(s.ܰm_Bn}JHYI:j!{E}k7? P8y,w2ŧA[ZlD$AuDӓkAS* Y5- Xm=uqq 7f|'?tc?b-{L$Ԣ2r\ca>D";Ezl Sj_)>O {.ʥ~hx,ĹDi?:SA /GQT$8('bm+8# rvql= _-tkw󙖪AQU@¹5eoF,"Ktf ;qC|w Ggھ2^KVU(NyA{ *"kب,j;ޡypi +?|p xopmI+~-mSr ƿR>2 )cE*b)8Eo;% V<<6h eQRj7>ܦb"krayu{|dČ_gm$.?sn?נ2gPp;QP$ XtUk+%N7 ]R`v(wwٸ*}sՈd؝C;ZJB*x|$s5?fA!Dz$ݽsߠU=38r G㐡'ПR.GR@PxU7~񐚧j\}cW cPKո8q޿PKy, #/5q᳔#],yy1auek]/"_c?푐{ ,r>† }QPȥZV,!0ք'xrň4So9k!0*#B)qJ({ 7Տ؎&` qs"I 5FjToG@uw lˋʣk&լ1j^ Oa.(cFsu k)W5 45qe` j_.Bqڅlb"t\ KCO.b+4dӍl\rarĮΠUŔ6;_*8LǷC6L1z&]Hq%ێB=aP>LL]w 6YǢcTū7?}'Q,|/ [g/Ł j_@lHM~4AKKla)TRE>WmHp (eXze4=T'8{nm-|(Lj9|,bR?m*4MZ {sAƏ%MȞ)}"m !C;eׁzEP {( u>=#j$.]OWPɹǛ2 &I}fl?wF@wsf wae{79SM@+HU8o`Z B}{kn4 .gҖI7KQ9ڟbALiwN$o֜%tjs@Z3xsOI;(zMy۟]!ԑ7LIX087  ΕQ&԰T$/觬3b(&oY mw5ol~شS(Ɯ}3ڑ80Sde v9\VFgF%1\W9jpV{GSZeܧoz]SFƤ:o7M<†\+rۘ?8ˁN^߮G?TjS 2>M+r~}/:wW9P(Q_v]}G4vs[_`A9~fg /P*kD5bӃ:\ML!(7) !#V^]$e^ d:JqoWƕuirFĆ-Ɔ:~lU[VƖv-۰fnt8]ł&!آ+ZvQZIaXu3\ Vp 4ߓ3F,WיAd|d, a<*޽ڳd[JE cn"ρn4 9X8Y(3Rvz.(yj"}YHv@l{f6.kY3{Ǖм]YIs1K;A SV;pX[Rj8>!VtQo3矰#RQl N13 .tPgt2K>fӋo@0<+ob]P(ﮣՅmyǩPhsl߮>y+ޫAWAڶBXMz{VVb%gUlm(S'޻urYt0R_(HPQ߶%jM HҰ_U܏؜wbY-xcֻ 5Hyrˋ?A.xe-e2\Œ}ϦBRy`FtmpfM >ޙPtSduclWx+OycEu"Lrt5󾂌MYa0z3,ƒX<#CRϜυĒ9*SL #nNVV;z6`i@sKDzׇ-k—ë握f\"nQ%"6Tyte`?يzޑB-WR/ <*KZssh2J}HzVӛ]׉]{7Nˇ,AGB0LPJ 8!A9N^t'%HAZkکrIa!yܕfCeY!1iNfڙÑvwq%e44;_f̦2!ܦVyl3LяD( yxH>cr-_l/`ϯxTH:RyϜUE9dYpD~@!Bro5}ץ3Nഽx3߰G!p!e4{WLCi0cXQ`xl+Gf/iy6y4*Ϡ*ݎ0t5+(o6v[<Òmr9t%ԓe~߆ƆϠiW=7E g#5.9ER b 6 1( 3A&%qiixoRe:X>Gfįأ&0W.u;y&e VbԔjY%ȿX{F]h/~fɌYޑ-sNPm-grJ:~ V x.w~(_g_ɟg~Pcإ& yHS,ևyn^'ş'g_b*׻stX"`qVdi5AHŰ%Hzڹ!L/C1Y-,"XW1 뛮Ϥ Aya$hlQpAThlZ5ƶX,+?'^9| Nc:6U共C[ڧASeu# sf?bAMvw!Y7.7am*,Mve1$ȟ/Po:4xo=9i\ /0d7ڿPи#%h~Pjƅ7,Jn^N' †sPÿy4i}["3r%5H6OIz.>-7Őaׅ5nRoy5tZx_R;ؖohĿN 2XO3=t­{lFRyZOx+Օ-tubaǜ_r:PKz݀58>YH>y?=x42q3~)NZC]|/KN,=R.VT7%# X洎bL0WIv^+J(t^EPr2~ϧf+pm؟#{_hC|8dӭ^OX e.ZUFFy%%"֓?s&ǛPDS \N}z8nN; NETdJPP^CXkM'Ob:_FiZOŹ×:Gme^j~3MUZ,Z43TL޽Yξm=dQM.#Lcl.#<(Y,{Dg lq}V+g''qY4=x6&pYnY@4pQog;>Xⸯ稗#Z [nmM2%b8EǑ1 W Hj[#,۩ZJ_{GL'Ch{/l9L@\I <$-Հ%#3o`fT?:};3Na*Zr̩`=f>7dzMv`Rٷ+ bp=rd(+i)cR+\5 \?{dq &AYSd:zݾ?Q_P huR?mݮa|z'S7i!~'= H`#պ;]tZ?{8Ƴ5/\GHD]U{E(T0so?P2R,Qd[SN@pɻCEXj_<%J мNfH@ Y\dcq΂ 2|^,> ֦ '?f#"t e:w$xڶAgGR.tѵnBK-BPvpv;4\.>S h;(J80W5W>d a‘< &jg>gV)bxF!|R=j@+W(8 #Q4UG *?muy%,k`i+Xv̞gߏ{ض}b/2H;.CCvI (ovhpxga!(3y?iNz4w *Sx$ȏ|Ò[obvy-= ՑfWG7;@=&)X U¤%P'/ ⪸Hm`(&LJ3n܉d{p`qly3M.C |;;pJ)[S>Wjq'l/GlΪzLYPbi_֞== ׃1`]k?W ~>ۂ̉"_j'ƻ䶏 -`j>Ml,ֻR==wv6}P.aUk )%G:ɮH CJ+VtbINU 5wmh?P#Ф;f|%ۍT8,`[GvoGQϵ&)xX3w{ӴyZMþp3m2ȒUà뵉u(WKgJWAe8_(wS2۹9/m`imFaPJPY80_:橎c%&1=:HSZ0ds rzSnA7*WNmY1U>C·*lurmZKUA(|F78V7YIJBW$_v ʶ􀭪0r5"F$~}^sk{uY.]kŔtU"S*5!aRL~gzfBYԂXzH,zv{ dh?Z9|3 J=-w'[3;)E3(buלux.[O2$EeDSNaQpmzȎ5qe ;& Bﱬja OL jg%f Y `džwS1CɰYZ|fpYl0/5,|U&d' m.@y%(ZZaގnr΂*,$ʹw ._ur~2}䃿_fae{"}'Z|yr`S}.5f~{i,mV1Ḵ'?e/lZȣ~c*AWiRi#?N3{qԜe?_{, An̂V+Pfd#|1Z/20AIoc2lo>?9.2`V]E _7ֶ^Ê'%Gpp8r }nPT#֯Z~gut-QnGW }#l)䛷^O(uJde{ };vwMD oXbҔ@|6΢"殝}K}r=Ƃ?%BWteQk;_(ptkB~9ʻʢ β6` 07[f {܆i m̷] ;غB["L$~Jw`}Ft$m`eNb .E^\ph轭TvU%hӵ)hVuJvQO_oրUH=(.9/59&Mda)A9َ@QT&'59nb@qpVw)? " {۽c&$ [qJWֿdN߾ P讞 7.A)Qu?FG\`pg\Ol{pX+i`dh+IBzHU/x 8lr>VtY Ihln,a {& D[ndmR0йFGQomi  b |*Q}=Y8_o/ s) g͕ .!0?#W,B KtuTze3qn-ό֡5PH/Nב(6;ipP.ey8]Kք'ЊH9>szٌi#t T(zd2C^$G3B턻b,dЉelAϤymJ+4ם;9.wK1&T#3#V8_I0F>wJJ6)svvǻo\kϺ"1wpͳڢo/2<9.{x;G1=tRw~: >P9E9*dVjN;sm3RHSe.ϭPeabhRz&]A'rUU~.A-4)oAe_ P|/hR. G[6c/Gɍ@BceA(%͏uc;E(T?%W 7'yXdK=}JE / ŕҽ?|3aZVg&AJi < '}cG<\`l3݇pj߇mh>: XQ-Gv WͶ"/&fSxڀE>Pq)*A zuAg *(9uQ Rq`NY'ÙSdKKr(J}^RЛ.XoۼB.0@:9enX)p?Bbq]. P Y>KeC}{3F[T7kݞ_dAhNp &֟j wM!+A:c#tͭ=C\A!p;@b"3?7 #Nj)4X1`|aUT`͜PX<0ߌ_<<@0y\"o`۳oGJ ;X=Y_ȸzq:d]cmҹFC1_# \ff"5,ڶͳ\v>d>MVf {CrWMx*.i#4BL=z-r" UdIpVףOKuaz9UN5jmWұ,1"9l;G'lBZDJ,o%@v}yL,.s |M egŐٌU ?"2P@g h)1 GwcG C]KVv-ћ̸)(@2>~}ԯ5#啙ZmBWrj0Zo+@hf79Q=$iE9kˠA62! ^ܶ LF`. ͢ #jPjIeJ*;rܧXIIO֐FqP˳HzX;APٛбfo8k Xl͒ ]r_DAu;6scŻ>r"44Ǜ-bb3hekH$%cݜ Yj4^UoY)t~8D'I!| V@9]4yD-PfU<[Fe $Oɤ4[)(޴M:KWc=1z-VEaɱJ⮄tM$CabվQ$|2 8']YWA,#vgA/~0;ƄIQl+!Ai8. 6֋Y#X(o5T_y PA[_v,꘻ 7*,gi_j^X1Ǽ苭X[٢IBsP,z91$( M\ym q[zdz+b_>m²@݇aIFlr* Ja߽ڲ"KS>Zh9c#c]+^FןIf$>yo)Rb.{0䙅RZy< з.蕼1--2opxBh6/+T0ƈ7 XF[-cdqumbN#[P7E†'bvROSB=jB+\پJSvP¥rp2F^s%'\nh@cv u$/0wix8Kkb_@ v0`2 s~aM6MPsQl~%s) r)̡erat1J[]%^bp$o8n*Įd:?_'0;Y 0.̚ GRXd7k,\3կř _,:V>lusTE/ƅ$o0AHvB}^OP"d;Q~n~] 8.j4MkA{'D㓂 NΰĆT=0bo;tS,bohn8ǰNsΊ0Rp/d Ⱥ3BYu!0M# HUw2JTZPwQG^>Ma;!װEzqm6X~c(Hq ~ ss@5{y!_KWZ ]U h:g`~GTn}z9̹ \'KVkx0fzFjsoub9.h36}Z jKaQ-hPiX,L{yL<ףG/JI(s-R )BƬ}+7xDX>ǩOw')돍mVұ2R^Xk7j4NjOHz9J=0N/i ֏cDXzoPNnt֟' "k(;۰_6 \8OCO]%,봐]*T]l݋):pG&YHsA CCy#F| ctL f>vWE?N5T}/V8d'~M4&5)H:u&Gs=]pJy1Tx>=q |=Ω@Y)ȸ}qLnbȬvW B>yh~0X uB.!ەz<i668@G4_G7~[5RaS#j#4q7+>tPyՏ7P_s߀<>-7uP6|ٳw˟ɉ1s>w#j5?%В*:gv }E[Pw:oBs%qsYG(:ZeAAׂz1o~6,%m>QRX]5E ߝ7AI1HgnSDŽuГ>9V%`~f4ךQm䆰ӜQmy:,KEJ~(]-DXgvqOMb㝪|P|yo!"sbU{7|'2.-faPOvz)v;9!Vߎ>(?^ח+]»ܳ=X-K̻iA`=#$w1kcfS|5$~g_"W^Zصpȭ "E} eY?@o_{!VL ng<{Zgv`m,?zuBkn:p`z lvAb^;Y)r7#:eEݯᴠA +=·0G"<<-ڡt >w iz(`~9lשiqNy_;X4L,/| 7f^6CZlзǖt.Kʝdt{wt\šW":@Y=,/n@}qX5^!oFGaRzW SYq(/_{"Cs9`y+;>I)0wk[L`_v ڭ(q0aHݺm\1)`'G.xarܿyԓsKG&__Žeۅ&4w 3(R?2 ډ+yea䳯lju&8nfU״Al4vTE Qc[rHEhah\4L0]K 4rƈ!bD*V<ɌCcG` kiKWF|0,Q.<R:f*65 v#7"A݊q #Z -qN|ol`R9:I'b}\\/03iel -O!]_6!^2Z{<̾J$yRՙOq7uկV` FߕoS^ێuu>S- GR^`-%/p{\rvZT×8gcBki"ih Ui? U)lo~bʩa6ՄLZ Q]?-u ~[1׍»z|22TJ>:} @.ߠ%&8aԯO姠ltw2FURr1t?x"h:̖W KuLNmnx=qbXD슲0qCGTqo)h fUņ:•ХbUTw_^׀ӊ!mR1ZT|.> #{ꊎ@OSo&dyY#V田iG#)VLhT|ꭩJE3%_f9bDlY|ƿӲbG1ߎbښ+a6 k2Vb_}XB.bdb\]ǖ5S؜!ry&[zp9z?^>'3ll5#El$pؐ | ,pA!} vqwO?ː+h329r 膑/H2Me"&Xl"=iZ&/UD_}qQTW)Ɯ;#u~`pl/~ kdb|繰L{KRP=$.zu d'y.̤zsjLb»u;,<&Tsmi]&mi]=B?6h@J{Nz-ųX`ylύe(=üb_pŮ8r Ц~e38[@,G}LВW+V^$߰.!vH ;1~b¬PB@G0?tT~=vʞ4~3gMPӓn41jku6$ꉱ>ױ٭6pgb7T0ÌΘB;_Y*l^Mу^_!AZI#^;YۊХ!J2'(Td_ҷƲ*޲=t\)ǜgu.DAib?Aeb%.a= ;>ɓ&g{,X!Ds舮$=Ny TA'5Pœ0o^.J\?Ͽ/b k,?Wl2<,Gd2%3)7U-Jf*a^!|5̬7TeOF -Lj&ҭ坅0a蠂)~FFC[3uRㄣXnJ{YP;}Q;`kS(=Q:NYT6fh|]E,uSLA+]o g FMA_̣}9cdԭ&l/ N-r=ǭK6zDf \d 7UbФ~<t* U偄jJL>/0Ka,cD/E3 ԫdPl"n ީP.)ӼjIu<Ff2Ƃ(1;)m~L`)T9ELQ.N{[#g;BUU~h2af n$J(+{y

ƘL//x4ٟD'n2hW`)ur36УsUL~z! VSxD cHЙuWVtQ- ?9~ld_ @S1 lN{OALC-ٹ_Ҹ=9GJl%)? { ĉun3aÛ/ϼ\17\Aг|+;^ ` ("y(D5Ei&UiE"Z:p>'Z [=вCaq ~%/{h:XmWfe <aȪ 9f3,>:{Ӗfk}x_C}FYUN?kNˀYBZ:Ml#< &{`H{W&J=:=q$0|Ono8ht_.Լsg{0WÐ!.^P ] {#mh2ΧUsm0%nyȍTXD.hS)}A-cT. ;|~x:yTZ nne Q>r uxgN}p@CByEM#Hyl"%thPvJ LСUG] %}mmM?D5]^q+cO'?@aSާ^d40DEzA(z] 3tK=tx7uAsد>hS]By i;I 39b?|~KBI~ -WM:ghYʸM^WY9 |Ǡa]j?6Rzcuda$ >TI+'uXu:XLnc_]={GfUށrDm VpP Zt5AY?Bc|Vcp3s $_]r˶^x=$k>0}bmBvgC/g= ^n*oר@75j|O ,YR*Dr}Qk aU2̕8;]!&>i%tQx|vU:>oP})AɞxQM[ȾyʖOF\ԁCġ?#AH-I uK]Jv; ihHW)~6M`:i{%/\ Z Qy  z@^k@P-[vR4w1+3NQOeSfQ*%DDHRHLdfgleڛkMFJ6|>?s:UQcAS`fg v lH=e=ekXN.ؽㇳYn,8"ﻩZsF_+6ZfUǜ}G'"sV^u"G#ܐx˘s0a'yş|PӼQ r!.*Z ԓ,o 1э.KcB{,c6CG0f#Ԛ= .-΢:Xst}%fIgMi>68ByKybk0TUWu_`pbu Xa39P%y^PhjPdw_.ox :"c6P~i<4c% S՜IG%̥SԛמB5S܀%[{ UǴfc)`ɻC=k%؍eTR`Mj 54 UsV'ouDyb %7wCZ2m 53wUkGN C=!d{gϨYWlo|q{ 2s vCV [6QoaR>yI_Ώ7[pI7 %*SŠ:ʹCtʳi.FCI .Whrc<-sJ?n ^_*/t jU8T`HmN! Vgo>}C rZb`1[BmFe̮Q@'_nc!ؑ@n'W1|"dCЂҙHr(o8I=_YkOhC;V]=n_`s{ý[yu8{Z fòqwE|߄c^ |Zj1/`Qt~;S*\ h,^!l9KefP_ 5*Bd &8]ޜ;o  WzB`E%$;ޝzox1ȅ!FWp?T‰c! )د羯)n3œ>0|*g}ڷf;J࠾CXnxl >m繰qiyP` ]fObMd2+| ɜqA_ V5v<E [7e^!g5V^zD~Q€Gw>dCA?7,DL_rk1@V_͊,Hk+NH3czO/'CE_tFz#6Liam!n; c t!!uW|d4$x!Dga *z"E(' tMlK)6V/~SgO"YRugc3 Ov[ Ca(#j\ކj {n;[vw9+@!~tfji z:ҬsP_)1j{iFbK-e~ѝ$o(~>mgGmMzpOcn'M9 VGļa4X_T_%Ty۪c1wڡ:l)>惄QM`33N1QwGmNOsb+jO*[uD#JM@ѡR+mc^ţPUra7v~8Kڏ w=C[b{~,R;>=B1k2L} ֟\a%Âm-l0b7]ex0u ֫cL ~Yϲ`p[B?gPÆ(WvQ9`ճuԟ+ yt y(ϫ}QJ%&/Z)M*Ο>+r'{\о5twgxgBbBdf;km ~aƯu'_/qʀ=swt-Oθ)bf 1mp NZ;. %<4T2>k ׷Wtܼv#K u"B֮.04Rۇ]w\`{Zr#g}g"ESfXKc ad67;LH3ZƫԴx'7=y?Jz2 %7T~|^WP-Ah7sVry_I1t}?fqqIcF* Zm:Y:W.e3)1:#m7{U:B9nCăX3&jܮ϶ ){Id`ej]+Ao8fJ"72g@~Gʒd?(\e@'S[·g=&wyC (&-x5+&*bNa G|ֺw"WLXh2MBn5a>PM]NXcMlrW9-U`UDs.gV/$cs791{!ނ<\P:UU{?{h D17jM$Os}piŵ&yQYzW..?_ߪ'cWqMynt60~c%[Nmq&mG8\$LzqQ-@rc+/΍d1™rHjagj.+7S1azB!%Xe u\]HVBU5F3^R/|t#)0O44 E|Bh>.~?5 7A,=we uu?D`9[4 Ém H +fJu-;z Ͼzu[JMIjW-( %FgG!I'2^t0Vz* W Y6Zn砃P]D 4ؤsnbt]Lӯ%'1VFKo`պ6G=yI[uEpbQG|trV"^ԝDZ$6ʚPw}[[0i>/֎ˉb&V$=}yK>H|dkN끝K>0]QLdxn^ƀ!gifVlcN.` FTWyK$s"+}e)@❮K5;i{guY7=O9%cMgf2sa{;C1cF&IC9rOcb^L$vRTR+KǘlJ XsTBo7L Ň"$!-#RfdR lܪvXءo\Qg[Pq;1 zR>5YGw9ݡm|9ң W}9(TXz .s*,]Z73/4s4P`uJu?LU˅xJ=Z)`2u>W7'F~=_D!vܤ:6>;ͷS#GX{S;z63nܽc>wUF+h(Ԋ{;.愌Fz\hYHٙڌUۢqD+#tU~*p^WnOXVaͽCm{h%,9 S&v~m!&[ 4ʋ<_5@w1s_WgN-5=_\tIp'ĤV(l-dΚMޖ2̆bƙ8g p Q{I=Wz] y0rbswnJ7=_$t_K]$;jb8R CEPصV|ʮI[ dzkoi NF3ĻPhJoӨe:a+/ vWm X̊Pv0/;N4x>[zxDd3fy k3ꑊ,bT{ {14c@G#p7jd2K&0+X䂎۲+O CسoжG Cp0I.t{[ǎ<6὞$݃A?e2/A5 dSd -7rUEҩq€-vl=-i<+:ua7ŁBӄ_؝;'B5v7tW@X>Uq hqlYcyz %n&@igZ'r&QnΤN[+_AM8B:^/<TSF;8:U(%{# 37ID,o8%,1B8{*&df,=@ܻzn33SW}*G'~QV_:9"ï,4aЉ6OrՒylDL|hA;éF(< u$OYa}r#jR]z}S/C0j 8uA-M;1R}V5 K%]h¶|/1HJncG[뿡tk,hU~ߧҥǘ'$b^&g!γƠQZɳoIBC9.F |ǩ)TDf9f?g H5a~jEiO l>FY(yI:&f )8IAqY\ _Ss]Dbg1Sp,LE(3*> 2b^&\Ps}nB[{-4^b 2\&?>Ӳސ>o;@SXaӒw0w3z7ZޞsTBw@hu eίƌi{\;ǎ=&GcF~W=-rK$zFpb!ND HX7{{W(ZO^wG!2u(z¿+*D$ 3n<ƈ3Q*9:Gh/SaF iɹ?ؼvp*,P}B5 S_aū[YP8͍qoy"lwܪ#ؚ6ѻc/o^IBe*erK] nrlK إ7W?]b#a]15)aUX7<%g%s7$8{v&y0^,G ڍ1)S!e+qc-ƆCS`{-y+܌Fďa[dYz#{Eb5Z^/Wà_fHCq? 7k;aً1~L9fOX|RC! ݠC=T6pYLxv*i 8xv vk]{Sqh`U{5lr}< ֶϫqv%J(])SH#'Wd;il@oDfgF<ä= 擄qoD) }{`~{ O~QC땤fih=[|*a_wPYc7|{ܽ/{a{*u`{E-9^Y7=+9QltD=8}{s%FP-8Nex>o_Eڱ3*/xYzXm{Et'_ڱ\"pR6ƪSSzaEb_cOlP-o[J@^P-$4֕82`%1FL~t}ua Y^ f/w=ELR ͆bd)Eu?q;r AwvPr v%f)-2:{_L;B'ӃIVf)Ak7Fty39l-+>K;zS`U ծpoXƀ_c be;>\>/#EO@Ae>L9)o4TR{u\0>q |UIy7xޙq^Qo xcPr.e5IV]޺}nd܍iGƱJ0^a\|PyOľK4I b QPUluj^m=݂&ֲ SQ>%**4wt"(uD' T7p8ɀ웵=T4;.T'pԍp}_"wyl=\.ΧTǎ.AՙSP|'=/6$pyyu6+7ϩT좽H0fjHz5iG=r:zJ&HOl?]Ŋu c0[Y2󎻫 ¤21Pn&?R 2aw.NB Ico39;lV]`Hku)t4ap78| G[(E!yjFJ`bY۫?_y 8zS~ۮ. Cnw5:հtc?cgľÏ&.cU9wYF/;l{ODCj lYfr ) Y$s:G.=' `]{fEҽX=fPrud-aV99q]y'ѱws`c!-]VѮw^薗k^Z!}`]=]{k H@+]!4˃сqҺ6H3yNz_`=$l2%{12uB_ VcP#Du 2H}|_NȚųކ=oøyKwZ]=!6$ Gl@1R0QSҋ~DD+Vhs|v}/asN9W.4]ȧu`Li1Ԛu.]&wk`LՑ`X8k189Q' R<WfEm(=w CT_ _+13eyz9}6HTIaũ$j!w ~DTIN.EK_]a@?F? 3NY,i_ w÷Լ\? [0!,W>lO?we>`bBȠMLյL&872o3) MŔ끧A2i_^e1U!"ˡ}v`hԑ __ΆZ6n(,y*t=b h`NB.vd EDKAJ=5=q]M,g'ܰzM>85<}ǪoXKbZ&0xm} tb odd(Gu23e| 8# 5Uo@%τ Uju$\VJO᛹`A+>?[7r q;@LP~2ɖ.$ԟ @.\-CH(nuj%+O4YGetuw͓#q+f$Nu <-xug<QCZsTHyY>,o_ߪ$@x_06Y<WIh:×cS5'Q kH漰vSLQ~Np`8 naEhK#clsL`}d6{qwͫaSgc&:wNICTFSS{ `2^"$nRȍy^E!{.Hٛt!P^5t,־DbL.m}!߾AUßmUD@`9V|a- X!fD! 5%S0^!vYEmׄPp嵷csʌG'ѲTW_~SƆ}4Xdh*⢄k?~߄&&C{}P->[R&TP: ju~AY6Ȕ(4`*^GJSrgp=<+}h<$xurO@mYgHnR9;o!u3+>xCJF U<Is30Y|pv>kU{)c3MDLo(/^3,RAES6flm/ $09彧o]J *~AƁ? 򰪚nGE%}r蒺~\Mj2v%A߯勞z'JX)ޚX_򧏙۰:>c91cgf(1k$a_9ӓPwc5ftHEB۷cSx)_06~DTS?=ұ2![6I#aX`k YN~*aKg4M#㮄sk5c1Y*Y-zC@ÐG09T-<" Z=[{CY2/lA̓PIb.= լJ2dn)NX}Qdtb:̛%k!mwA+)o^C@rDAf=TdaAR>%J,+ os1!p=,+IՆ!/ݞZ(߫'5ڲ@OccP8QW<\\@b"Ʒ/0wfdyФ{s5 џV1W^^b>%SUO WTl=dH{v$IR.Y1V?Nqh1}NJq$G]w 81Q~fqZp ==$NϧCwx/{  f? mQ4_A{,5ˇ(竣}Pl?*Ȩb?CCո\v.cT),;ضXFs.7Dt6żEg_x)0<$&,F Wse.Nԛ7&#WlSO:/`~'ЛrLaGUogaGѮ0+lS-xC[wx𾓗93G.p^*D%lcoaY&hhK[_ugP}v;I*`GKNyJ(o @[8`~ h4[.iZ0|yLei*)'9[ AZ!xwuTƷ@%wz7hhn)J>jRS尌c~@'0) o^vsm3T?yJ]Ԅ?o[[-.#B/w?Lr<6~ Jk£=!Y^}t~lzWC~.JWȩxo*;E䡶louLOK3K ywsYuh( xY{ϙ9CKMlV] &נ᫇ԾVIز !iQjw1"w'hٿB!) V{Zw t.0_*=A;'vu1Tz\䁎Rql]BD 4zs!#Pp>(CPu!?O?azDAٗPK^j ĹaRikGPnw2FGAy~K4&bpG(r;ݫQ(-o.]xfy@͗ uVѨ%* $Цv=62U3_ASOS_4 ښ mY >2n÷|Ӱ /Mtxcl/uos[7h0qPtSDW458stiҸCmՑ5Lql(ڿⱱ ~i?sHd$ff sY?( a⊽OiK-zqTu!9-Xr輳 M4ϚṆo' ͵x 850bco~Զʼn)eKy8$dMu9 ȵ.c6{űɏ7O^s3YNg ʠ_\ =װMTXs~S~E ckne>'WAZa l`GgRLONڕ "!#-3ii85 4`e3*M$;WwRWYntʯȸZY}qEJa+ƽMygn3g6 a;+dB͕,1Dmy=q3"V^aV/(0JVbt?\dFbc !ql;G {s3hUݤzq3kM0HyP/TH2B͛P qtsQRlϾ=4 /\}Dᇉඔk7Ҍ_(vr2-5 ×u] 1at6$XF߄B:`tqt!jS?}?jVt/ iYr׉Y7}GcXS$`x+=Ju~_-VvKp9 W]= >aƦ6kl#Pmo$w>W5g4;3؞߈{%Y~ßbIw BeaVVz=9Ӎ :L"C9K9ğT6oFkm(S>gx^=c  Ic!,Vo- +[$ Qњ#nYb3{ 3#DnQm429y=p&T^5j#7t"9ZQs|u~ ^![l@Tg`-B‘_G^A$5JW62JEz2e %0~z5L  $!fjyOέ hEi9+={P,U!XD<.#QjyK/-@x;xݶ6Z|' fPz|F\L?%<'mA|{P|(1 R=t(so1k}ED3*}QxUc=]d-L1 9IƗޖC[$77kT 1OR9k7ӳ@NI %QaemlžPA&{ _@xr%PեC0$> Q(9I#ݱ`]dwr.??+]΋Mls-cPO4+I~Uw X* ~$*̙˷1}/9`EZ%Oq(6[5Z+cz̍X1# ꣫bi6=9ՎDMg&1 s?bO'ƈBC{2ͱНP$ЀͽU`0X+C ƾi;clKq, )(^X!8R ]s/3Aqd]IX` }.keb۱M(  CܥiMHR:NgseώCw ]D~3Ц$*~{_4'|y~quWiFbhW:[+^c'^zUOdvV@BM ttLAO#?m L01>|/^@Cf}9i eO3oINSl? 7b P.+Wΰ'A}=KX9?f= Ɇ`˸vh :8w%nCɨ0Z2ZPeڧB)N~8(b[}_4:<7Ũb ^cCыN=c.%RoxcV!m]߃)=}Y$X#bHyGƻ#}?jV<,+ tg7?sO`rZc#JV~T29}/ u\)eݔX,0XڮtiQ98BZXhlFẉ3=?Al4׾n`2SZ97r<~= Zu%OW 5u(bJ|5Jd9|*s)9! 4!QDuLId^R g>Jj?Pevګ JJ(Y܎oXZ[B W~^ y7NBfOyg8̅A7@}U%|"k8t|Nn306l?K n7_8RsAriN@+B&OY0.C3}-rnBۯƇX|:Y Ŗ?Y  UJ÷e]EۑʔÉ/\jwt{{*:}:jTMT CJ;7.^囆e'Rc AZb#>޳i0wu PZ3"9c^O!nDMtb ]`Z,nHh)gkİ'qW"!xǤ {Q[h%ط!RQL: VH#)> %B gmEg eG>V+uTuolOx u%gr`cK^&W)ee[z`T\}CFi hsr)SF[,|ohڴo,Ӂ_PD8QseA.~ v٭>XQݣ0|CN>V@/ ՄNi^rhǥ3.?mNl3ewWxvC %,{^Kݶz /u"o{PdE%,:׶fүzA _`lo;Aj>;ؾj/G5 җf Xg\0(?.{ PM13G\fcRPU4xN E.u[iZFC1ڿ=dawWM+.6T1~ nGGOz/}' .]^Q@Jm6 h3<1D~bCUhaw=41_"$^qhוV~ em$bJ^-hR5mq:5nCC824\j Ջ08q7&dYُQB{'PS _潅38cEsUtZ2ճHP>jpK/}5{9a}tlLw(j Nˮ2ef;glEp4P^*,Mƾ1U0F׸~ӝ#ʐ0s9"t'F_ v0Cb_0e#^ Ϳ<Ʉ-i o-]i= m?-_'M˙ܹ~R8ګ~NQ[ONCK4^= (m`}+z<Ψ<%R{pI]HIP_ }[/K>**ch^s5+P k|* aUmv1V]fmke%οӧse_ly TZe7?IeR4+:є uMCZw}1* PziSYC|-4O`M/C'tKlzÇMG۸cu٨v˝:3s{_o\Y{|FX)E !m\xh7w y Rdz.`tMG1sS&PjSВ9?̼d̢}KecԱZm Z]*rj;6*5:n=UxzBȮ3T`_Mw @;Pr3NMĮ:&{} :o3Pz4fKE}s/2AW>g{;ZBLWyWkBUԃ[iǠ]J$V5U@:>T)Q<b#>|\wZ G-K<}(ڧjitvVZ}X]F%$t *ïBk+~CEМʨg h Zl/;J͆]uo)cNl/8dRd_D#XHF8 Q<}WUOybҔ6,zGwg}<wAuP<^&ԃNhfP}# OH?M__t'}qSUk29^ן%Hvm%jz/;M:kTx==``:59o9q cbɬf+90ĸe{Օ/[+{S}_`PʩH,ﺙ?F]\[Hв E2[,$:c&?ݘf%5vF2é Iy>v<&\S űN|V|XN:r2-s*3ϟ|fN]: ^*WɁ%{N'&}~h qHa9d>b{;yDL6zyԤgI K,iί<6ǡ9d}hC˘ $KeBɤ~cYxzk#(ߟWWCPBc\Ń̷lPRfL̉}߳a$E>_Nlu 7wk`TM絶T?z Zh4BޓoAC9I Ey9b7˷@`1Oiu>DK^Òn; >qeѵY~(`Y,IuO>0s*]$z@)˘F{Ea?72a$4;Q~| dp{;ѡ}N+/|ix/9`(cN;hה+6ʣuW;zz=BœVjvioXBggmC)lsyڈ.RW{YQ}[C%7'A]8yAZ_WҘ}ƃ n7- Vx%AMD΋AdJ+m4|xciWfҳc)m\{n8wv[&8sK6^}s?2Jbvje{hW;Zܼlb;G$WoHșߵJmDRV}ޣ9DyBbjAoӚ\"C)m𞈶cJ$-FSzM(v\wVkZktHc$ {l8ȶSJ綮cзfh,:y\ Vb}_)p͍mwY1݆n}'K%ZT3<"-N6{<<$!*nx ڇKn_{g gd gqފ23IH!'K^= ڟs[`˃YIޒD}9й.kcS -6  T9$gcH!vRJYI(p,1ۙU6Җ;P::Vpn΄PmP$Y/t Iյu z}ꜷmH:׉- x-^!Z3[#TI5ߟ_Uχ;D3,qh?n bm}^gI7dD e^qf;9[>|}.>uхY}zUdgj F8Õ~; f!ձ qٚ}WcF;Z4b{.؂<g]]CAE{ܕ-=_z#s4dzt㛪c3sIelb'&6*Ls :.3;i-$*Gl]&W`M cXQ|ogfwE֭ˌ-Y#J 7~~UK+MgoqR /dyؙ"Wa 'ދ,pIl.n&dZF 5O_ Kڞ|lO6Gv?ɂ{Z>} îPɼ<=X>Sg]jC W }]VД!^x++bw|4!>W=>l+!,k_ŽŠ3?}*w rcu8M+IY ÿr*qTxlC59`L.SaUS1)\!e.f\V͚FxQj-c8tħ07,b!qrRVtz[Ο?`7Àm~ԮX-KF`y~4yanZ,<{lh4W䲜Vw;SwP=3v5J{sl&R&iRblG}8ec^p 4ocC0ٱFK 챏KTk@~Ƙɍ#W_,yBqGe3JęTF#$u8g2y2LsαSţxvQ԰1+J5f̻D /s?|?"?}M"9$gCuu\tvC2xQA׫9>+7:Z֗|qI6Ucau&{˨L)k%߈N$W}4\S1&N'x`Z/S~ ; yR(;+7Y+0烵MWXwecI[@KN,X5No_<>e ={1ozԧ8v& Btf{7֧{='騠&pNQ8QKN>1̆'zfjfb,nJ=_tA|wU#kUWF7Gț`h ze ?sB*1vǯuh#v*a9F8w'yn2Qm#Bb@t_i8j]Ml0d-wcϼkVtR5Ӕ Ww#}a{*_Tk"oW9u~\ d_8+5eߠgXCKU-x_̠Wtk{J9,|:ovІ͋NUW͊;%T.2Uʧlvf8fuB[‚sBB/Vݜ} 3j?NU+Bh"D]!I3NHnjɹ=[a黽]!Gk2nqn= 3(]XgO ڢ}ʻ#X*~:"jg8jR0ďAŶqҼ!4|4y㫻6MŎ,Tc6Ɵ ,{@mHs*FQ`M.` Yďl*nCxNVWhJn~r<60e+u T֡T#37cH}bns,VtHH_֞}YCjY|rB-f28\ tOAElمR"K ضM&>pHaQbr  ]T4mj7"[P¦{4К@/6N.ʑڂK 82](u\ͶЫ$>2yas`;>_Qr>*r}=E\!TqצV6KKHpD)| o/kKAN. -B"[_a2Cix(wwqqh9m?֎q Ja(֏Xϡug5*ʼhOp ]a Ik=Iu_=s4 7Iυm)z܅^ flwwg3Q1Zy?u-@CU&{.B77^bo'оLk,w!qi5@y~P('*f՛ivXRF?Ҫ UxBaSwCm67 S}%6 XV´_4)$1UKKŌK%bz5{d~+Ub~՟ٲ!Tg0͚@e֯LFK\ZO hhۚGj=h] s}8fm9n_5!GGcQ;Ԍt>eG_zma9{Ji;)ԏ`YoV?)Q7_w^-܇y9B _h d;IwSa%%?u*C+MTomP9YG xvX nqF/ާ7C9CY0q.h9djp&>J_|8+hP;} k^gD´ϴt 1_Z)6Ix>\a\sFg|˞"hg_׉$Bb1e:c(q[Tx@QWߊ;΍ DR㾯DC5%26͹P"W+0g,[r@$HWnޏwBW! B`SR;4t8l4.0K!eV܁{d?=t^{m -'s@ѿ4#=[ ԝ߀rPsi )(nhk.ü1ې@<ӷ:TWN9$]$2ȟ? |/Ct]IVuBZa\;14|*7g{PھsPpvcL^S:Oߧ\Bo{:XPVgAvHݾ)pHW;M %s(a\\~Nn'PJ`Mq}%xGG vQ`Ր`H=&hBBh:s==|2`٬6.n>H9Wn.qvN|!"Wӯ s?H*u b?8Ɗ+8;(}_ۇ6GA%}'eAؕO1NE&JZbF 3-nl Pz3k⏽"!$8WYu0'hY4Ĺ_,j'MMeruZiMxpXt]'iPP. CA.68^vR/1Ow AW`xVkř0uR˥Ir^;zHO.%9qtC%pd5oqd0h_4"O5]KUw7Vu"z:vxLNAf"bwY3cy59z$K;`EYa*^hnbE]J|Aoe B34Zme~L|՞ *0>W% 7TP1j~||:$P]:]9/1BAEX q/+Xw87]N?*6&؍n.cB E~N~gg?كMB\dqkG#0G|h۽xM;<2# )$v'!\GU^ ~u型yB,T+wQ BlP ?~nf1KY~7y;VI+!9 J}|{]^߰4 WUjIMCA֮SYB/O2`eM{ t}]LKء[S|hjʐ!],#C(zƊ]c$K'ـ9 rLHXA3T9v{hk_˚|MrS4R`:7gp<#q~ ݲ Jԡ2B\?:mS Ι<= 9Ԭ+fw?+W '.kz~h{Ji!:tqgT@ joÈe DL=FXxsbI?_EA#4A6ts+H;-lvp=Z@#\i0[;Ny^:(HI ];-mX(2 $8Nu"oƿ.AmaLZ:v65V|Ks!&ڇC1n-|q98z^(`JZ/ĉ(4cm@߼9Ga˜礞e tyGa5ӹI`u+gj @LDPŹws倍ADž*C}FEOIf gg4oM`OWC2k 5d/cBfZ~G%},"ҠNNN yxR(# V]Bck#k\:{981C9śch"7]Yt XХ.CoA] zȕB5NRɱy|!s+u=ƞQ(^JXٰnn%t9f9)\[IP"˟Gԭ8KB)yiH4K_4>Bi3%/" ' j>_{,hxy2XRƞҩ}X~) g.}8O$ tH̭<|1$%]R3n _8<&K #h- |Pz *Z߅gGB˖S׳SۼV3~vRʖI؜w.+|繚7> D@EileeO:zݹX{gv6RPɵ1ү }q 8h{`,;#M8܁C0BGst?S.-|sMFD"ĈTј/O{-ȥwB($u-8:Wu3W87'f5MЃbi,zri4Kн?Ia O߶״O'zl Nji;>і֮{*,.cbͻ@Mj:+izEqqiaj t.CX2%Gn v@ȿRbKgeocp~Xpb'bm~Xs%541{!cz(h>[=4u_ON6cw`m9Q1{.4CO1Cb uߦk?E5:c,u8wdӤ/E֧4cm=zhdjU)m2_ y7LObʉ 3f_Ϋ,la)׊?f󌞟m*1YL>'q͟N6,a]Pl !s֩jAj+R7}.rLN`Žcz4 *AL+(\F,/" [^` u1 {#B v@?cbyb{om]B6%!KRz@2W>6Y!f`hR%Ծv;)jn;#;{ c*yT{u}GMrbG^O'S?m^ szTUŎ/v)"p@ ȻK/M?0BFTཀ?o3-us0|1`Ժc?4L 2AžsW12'C`zՎC9b+ l9teO5w{>o?ABEޭ" 7g"\? :W@5>XBC<͑:輛NE\!׺LQY`+WƧܰ[EЭVPx6 7Aׅ{EZ_$<=xgAO|5o2`:Q*kL}U\]լ,AF>MG8x}vaC.6 [7qx^ߣX>FџYTm=jEa1+8њg3bA1  HϞC/}1ٵ@.%9|Ȩ؉:wu8!;hcEzACgo2N~6.}:WBE[Jw y&{Kl@~8C^\ ưeǐ.2#1SDT<:Bd8bՆ+vIVM-n4j8`<'JpP7$vK ^7x?2T_>V`ס%;v{NQ;$ 2׺kǦ%VJ:FDѺ?ڿ[8Ls'}p2s9=ғ͔q82p7 zJO8-tn/}vHG-CiNQ&!"xG3 ,Gv+:[a>z9p<ㄽ֞B΋ݖ7| *HF&D~SW4(CM Z'Eը+wZyDrtXVPev-1H\HGm9ݟ_h zu[qX{NJY"W1c,ZT?|{N W0B"3 Vh`d& M$+O{`cJ|ߟAxa?Խ5yyX͡sw;7J%#. cF\pѫ~j NBɋo7fI0;.h$cLI8zIٻ^h{(0mH-O^o I vWQhIj O3A5[TX*:A/#TH,Pʁe^wb̑y5[ %QIG8e^A& R AȉCiOQ@=M1&"cz_H۾ڿ!?ȶ7]W,YLڨW1HY >f0&2\:Zk9bM%?)kcy|(>6\'%=`fX![j{zUBN'McG>q4h\E|tUSʳdʡSH"+8q5įWBv|{ej}&1PD CZT`DdŸa:=Nl8ӤSM@]}ß:f_{OdeKįA24 bKԁf\$zC<5r;py0\);]?+b_m_1:6ē3M:n.MXtG!HgG2Yδ]u=eI.x’] bocGv DTؿI H Pg7NV|7+(o/xmP6в.dXi@SD#- $Pޓh)S&ʓa諌R>x&-dU7럴dJYϘ^~٬ v,Gpba+1\ns74U> jo}aPCxp4r_?# 7v,Gm}̺6f1\IQ PYN|UB yDCmp&\5_;sdt!KN 7v wǔVtXc N*Cp:.Ms!,7w ٟRhVЇ> yقv 1]x޻EdŤVbnj7ԏjiܦ/5Cqb[Uz%}O|tycIxГϜ [_yR̠0 >I/A ?[țrXO0%d#$46 J$_P.92lIڊѺvhr-6z,_9ӏXcXj=>HSg$bCnz,UUY}; ub9b-%%)eM(+W $t{79C.28, yaʥIhg~n(TL7œv*oXtF59$|>_lacgɩerm"ɕ76ZC([:kE<%aXO|2_IMc'n"j)(K:@֫B?ЭI񯶫P:$aM|e;BBcE!= l>'G)"z9xA }'H.s. C(DVeiT!2RR"Bee ~޷u]yxG/i1c)N_ r`+>}()dzg?woƷ7z7t%ЈzEW. Z2J淳2E/M,-9b7m;LM>",!>GN',ʱŘl ]שN2Ks!TP+CvҦ5r*nXb$:H t!ݟHpˮKTe?>R5~΋Y2i\$W }%n:tv9m6pDH,>˾׼x;J}Hbfqn†ƍ3Lרr>q@9Zl' ړqNEAgpC_(OdحOkN`Irȼwr#f$];sPlV̺i!''!ޟY)i(OAܩur_LtM'6/@mY3/38 =6 C9LٓemxnZA_W2ۣ7t'V ?Fb.߱\lTEGfX9c_[8Z#Dq==AzR'irñzPg`!KPbW/0!n6~ѻf&cMX<>e[%aٌ<|@P0#3WYGre!P2Pqv;u?[M@VX2 <ǡm6T_ M9pJ\-P:6B O&¢-P7vD$F)WZ6upqV}=#Ղ_j\ C 1!aE75pUW\ >#~ (Y{$ A&I-'4~8>W)||* j$s wO@ˮ[Ǐ%qY":: b=yY/V? {VO9;a΍3+}سWU&q@VX|8EҡUü?E!a,.t2:k3o k:TkK}ٮJIfþ)lД0HIZ,`~]%%Ӊ),0@%si]$-PxX4tpuѵӦ ؽgT9v 7lh`qjoDZw^fCSY0_ cَB9TUk!WffObpҫ|3'&߳|lfJrve&WFORK/Q?ڨvk=[Ā`S 2ῥaP[:.eżR?_.Y 6EF3095]~ƬÜ`l]&yLՍ=ϝ2a NRUl+!:w[X~}_ Q4*8~:c*}^A6~;?BlT5B$` xu*&S(}Na,(_^R{qjq(x׌LFM#PYy"ݒ{{O@GNKnO7_;uMKb'Ň 'n..h-¼Q} 8Xe 2a_,8?}G ;L}wc\Aכ0&v.D,>{y̹;IO6mv㘳 -$]ĔGX N0Yc!,0{8pQU z[°/pyBd *y>.0rűNP6 b-*amymcЫ N{B~RFS,r h95KJnjiMGEM~.T!m?lHZ<| ωoĹ BDmY, P;xd5EeNAB*ƜRJkF"BiE ܰ=>Հӣ|Y' ȷUo"~p> o8DB"&wm}0&.)aѴ9pDáo!*5u?$uK./]ð{)ŭ/!4v1t DeS,7C#%(]p|xl~Ix)RxX+voxPBhtXSS vSw\[qK8BAz/ş A߿a^m]/[͓nY`o鄏:j9n86mO_8MR^/Fw~4Vx' 5Il IN2?yib(SP}>=Kڟfhh yqMnCM3r 8U Z8(۾7mTb~#*l*?Qɳjm50\,V}lo}6k瞝0; yGF<5ٻ.t6?=w*o6JL!fa(ع$+żw7k!h|@sJV@Lah*Ǖ= gɀTC|grs޵灷7= Dq;F7[Zk?40uxvZY&SAKchNvzO-cv]Ӓg(Dqb[I_8.M䋾_Kᅬ0d?-ƻ8kAGYNqAu'6X-a't+%/VOk\&HUvJڊh&D/@QωqĸF gϛTbMu7]x"R8EOs$=zpZ]P#eM KO8v?os4l@[5bGdCO?ͺ[)\BkvC玏%he3pŲGñaW_# lcހN+5HX4L9Ez j3Gڿ05TXV)P*Z[f֨_]ڣ惁XNlƦqck^yL08VsS iBIa 6QGPq֫bI޷Ʌ1Y+\]8#+w]ݤĎN2]se )KRy?ӘȀOLZtKmMr{D^ɌǃIJq3ί)(U 8kwl{F.E'TKK]ӡmZMP"lagd…7pݪ@T2+R| 5Vץqø}3w|N>\hz&?s *9;.0\R/Mx[%4z≲\YSUo&qr?uCg`$:>}*?wE5vit$ɻ{7Unwtz #nu/A_QPקw>q>C vśņXgph> mm7QyhOW ]N ZA,$`Rn13XpˣҌ)eljWPՂzRd!j*G5/߀r0Y&+JfE Y#Hd}:ȥAŶy)TJ:#>δfO1EۣXfk% IO[$z^)gMzFܒ c;.bGgf}J`V*7;UbjXcrV;1i!\U%{uKSto+NsTNJ56s Njh2%9FI1.cәvط f'cu"I]͕['AG'1f1ԈXb+8_ِHs=#̨ϦYܘ'}x.VlB\ܛuꝪ{Z7]s!lP|ZU t'c<]2NnφNߍ렍?y#_5^i0"L~A,٭u@o0J k {IIn][bL YYԯ{0/cF1`OL&*`,㉐YIE=l;# hw9Mi?|yeS2nc"# 9HbcMd8\dqb gVO ˔wn0a__ٛXFr$6SI'YnvX)5R}Zv-aJsوSĚG^HX ҳeޣEDТ, /,ԘiYFas hs8uخ@cA&ji}"nl|VVk|^U<$1.'ztdң&@M’9.moy圽-jO`yQ`}|' Z5XܝY5P{)- IJrIpeԬ~d U>aLa*Q4u uz*nJ?qJ,9 lz_+ ԫce_7RKN{0m1g5cQ؍#ʳ !pp4ƚ{[3l y3_|.WΰDE"NkzK7&]CL#s ^i9^T+r-GCu멯ÉW,%Sc7e iwv}p>d_,9{b.'~A|PA 3wIi!RIJPrpy~>2+M.dJsQЕ ?oo| 32ք"[Ǡ*>o.5 )sAs(TxLeȿ;股ЎI?dع<} jh$ub1c0=f$X(ͫ1C3^MLPzW1^Iwݎ!*D! [o5AӀ{%zwN<|J8 @~% >woTrwE8f Nf;^3P4C.._f;w:+dV@EuVMLu]Y>^7VtI|{Zp!U=Z =+q=9h9~if@D'-1[h0f ; ُ`XQHw=9aqA#ʹ\ )*qWNQ8'M—7cmkh$.[#'OTGخNv!&N C]3eWo4[a٧ Rŝ`%4}.fmzBHg:fϥh6' CGo@\]&  ں=qA%NwB'`h((Sdv㧼Aizk[--o>hKw-؁S[085yBAb^)ϐBBA/~l)/-|sҳZ9%~L:¦^b? _K'b&_c}{Ɔg(~ ]¤ dƊ; _d=sg9k6Ha=_0#;-Wk/~ÎhŜۆ0ir9v~h;c 9{fthD8Os^lBfHK^9_Lc_fhbAẇ0>Es0_ Z2un\kuhz|qV ?׊͚Q\{d;y2/ -*GW1~_C̨[r?!:KA˼A[sMbwB߇gs33K쭆> @Pif"{IBr_h {Xֽ^xaޕhC/PpyOtjl<qC7YD֠0Ips {\s| K]'-i|~Zvq ncJU<[[FC/#i,ITܠZ虛V4 |>QvzEs_ C8nb ˻~`= >$3hR}i|o~͕gAa`&6شxU)cNĥ<[y;fm;QwDCՏц {;L|j0iٹlX\c6jwdz G.s2w>bNOK~h3?='Bɿ< :?3X)= [nv+ؙ_h76l:[ٗ"4%`=O];-R>jW!{X?O:}Ͳ:~>{/iIJGxaf{u)\}fK7uljVT,gt)VX_" VͿߗ=mOfZ^۟Wn]h$y)3y\t:DLu<**4b;zk3a4Njӷ_d>~\L[fpb6]O}Nջ-ByiOtLKmon@͇hza+ w cr2馴8 VE,SW*s̕pm9+hϲA쭉Y~9d[ ca!퇠>ΡO/)Aʵ3aWoQy'X8`sի<sy +>ANjnLX>~Y&;?+X{TcbW=8\ɓ6ٕcݷ=ςL&qbݍG#8 7W7Ɓ$\?Toke)?~r^+gp=y׾W^|q9Ǫ Y>TE#!O)oaKlY&[i\1Qs^\}&H9-WM͚;a!$Df>'·WŠ|H_4;1v.f-}t^Ջ/cV*)KR:Ǝ7eyaGXo#?]ڰV`O#V6x7`Uw 1; -6F ڡ J:o^ǘ?r_)W(OfٳPv lWVUO֊ڙrQ3{[=0 zmzd(kJ0]Xd ]Y_BE06(xqcQxk{2Ư0Ck` g *&6& Q#lnBa>sV>R8tg,wQ.Ky4Huʝʛ<{T8Z6i \jqBXL)ZrՊmD߿'Q?]ƊئKղM-o.;A[X5`u46Q-:ч]5Ǎ؄0M>vѹK c]e*_0+f}9<>Q$_ENƘ|Qza?mXfspkI C@7nn9~X S }MueoR12 }{Bo|I]?8q N``Aq (*W)MYI_RtD޽[ˇAtNm{ dv~Ypdq2gI'T`7;>?n 'N`ѳXhy?># d;83cb7'^QIG00%}pǶmح^,ג+Yn|1SgaӉ+ؑ ;,(owpJ6}9gQmTϺ;7;*Vkƺ~rC>k;Hד!a6.f33ԐEB+ avYg7۩r7mYMUS#;+a3vJbeAW/\v(W5•9OTո8G=n*~w 3C'9Wp 4h@䉖൩}*=h,+v#^%K0"xTXuž5w!vzE#h}bX,\q9[!5ggtf,)s7\=- ͏ Tp(7G+П3t ]}6}ʼ=-/o3fT󠫚 W6e &wƐ&˜I("qcr4 *ZY5د3җqAm">޿E1iȒ~Eo|.՜7%RNCC$k]xD7:59X&1&' !ܝ6jLKW3 qeXCni\sT ]854 Ϫvע֩>B3.PDH&/DZyP`,t\FoQ XK$a ~!h*%ǂc"n+7ë9 ا;/ 8WNa<CֻW♏> <;{1t#*9D?shd4I~AĽUI|S&ow Z4Ч'.V ^SkўW1MAۀ$%xAz?!?+ʆ _ q!a^(ltmEzG!yFBn_5V6>ڎX gw1,Wy*F> !'w1:?:I I,!V7Ӯ/(B;(fezt\Ya;.Sb,'לznY:dP`N^pڳ?-ƕDTŨ߫ @:Oɂےu扸; UMʟlg:Q vl-Wz"+#8Ie ]UMQh-X=j2|{#nKu`DJt6?Yh<{[(ֆtf?)/WJ-T;t%52 ' AoOWn2#X[=Ys{dPښR}:W$BRc:RGJ.8ϸLcP5DPs,,PmE?|&γא:]E׿X*rڜ <).>eW9k~0 WqKxu"֧>;\ 7uyEoG 6 #4, ՄvuAӰ2n{_.W0SͶjI^-"ᖫyHx{ Rie{b.$ϾJT B"B.z,Lާ3/O`;Ͻ]_Az/8T7_T>6v~O.CKDn5JAT)g_0]9QUoM9bXgMfͅ$|s 飓&dNqbw-[ -P =ߡV5g8TԞ-nPo͹mu0͊%~w/C;Xp/1ԒBAwY&L"Nm>3@b(T1;1R#̋X0,blVr8[sO+I~c~长+8FN˻"FMLD`` v@{|' bGSbb.si=_!>.L:ѹQ] v3@Lfs/h;Cq4jZ1A0)H9 ߀e _b0]ոYi>3u3fdmGH+7JUb/Dc'}i2;&bwg߅RA0Cz&Sg =N?\ք=88j5$E^^܁pәO=cIy"rRؖ8q+!Ƒ=yή>SeaE30'#@Bxi2$uӓC"\W>EoE'3~R'hU:;rl<N`o8?DkyHd=캱8$Wέ)~IIױe۸VsX7km `"ݯro(Y]#>`;>vjpS)Mz(:6Ww`ֆܸr]Aܟր cbq>Ah-b&u Ws̀iҠ{Q,/ꯊL &n&by'v(4_ wnp[&d 4x:eU2m1]/!4S;jq7kRC9d@(=HK]RUN̙'@'Y9Dh?f/k3?bz|+ꗦby4Wx +P"ZXM aPQvK&m`/ E(i-ZOe8\?:B7VW}j 3y<a]!34ͤє%%~k3u,jnְgPbh`j-Io Xr҃c}>8z/"/DbCأ6{BGPGR~>9#{ne{*<h<Ɓ=WǨ6+ϫtvYbt4XvƩrQ,/‰C{?Wtı_q..d| ÁSNeq"&`7N(uyS<;q.DlA9x9B]xy TX| uВ-qPBnkSAE _yu25hE̼JZ 9YCUEIuۿQ`8y:uf- 2 up@J ߭+rZmJ7cτDƗCVRa ^ {+VL"^|7U#ک'K6y'!V{%&"K#od.oc旉 u12&y+r3]i!5I^bl4p ydgAF :TIq|(*b>y.]*[>ɿohe i'Of轩)Lh2oI ]V?@϶$מP/xeT%ALTk >Q}|6jS?ֻדYzV] ?EcL C.{tmA֌Bs;3C7t\tt?q!fҰyNvO˼ я HДrN w}w&rCV)Tir]vXVYT`N#5#A 7$׉*{~Ք77G^!ofX->ȿ} )~J?B.ݷt\9~ZQT$3WYH5vl&=}/ASPyBlf*0WΓ+H\& )EHC95홪T3uAih<".B/!ԕxuhyq :%5t mJXo3IY<:9݋+)P{zKAƕҝqS~1"G':,ξyƶbvyy(*({ɚνŶg8Sm[a]gl.2)έ橰wP<jzw^CkK"i=Do& -rjCX7 O9`+iNm:BHHt>X6==W*PB,2Xu 3*.4CwSO tqx.q/VaE\ܴV2 :]c1qNj7@7vp>5@c̓wEUkg|2~*WeQpo{ȠygJ F%Ah 3zs!VR#8C.<"Nޥovq]u(?0ͤUTFUBS١h{@, ÏZz)AKsasT?'\ ndsAxMPdϽE.Зb`t :2.uEԺI'A- RPڢeI;{뜽)V^{BqdP)^|!t9D?w%BBsԺ)vcOz~(!{bm("Orž^rq"[Q&E̴9F|޻9_75B =+{)^ۅV?[(AVtk}E%~ hF&@ F.U{c NT=o@Wu(w5Z>^/}X_>_T\S[x"+n1uׯowc`v noU`#v;b 7¿?/]MTW=Mqis0C?O<\~CxodFafgtOHT­nͷ S.%yZ@~P{)B0OW{ ެ _^ï#cF_ȰS@{*XY΢, |._裹$n^ <&x]bOB+vhzr棫Xlr/*<;58\*!:G`NJ-K>C"MMバP{9.ߝÔ=>xz4]C0pЫxت/Jꝟg><2y Ub'`CͶG?csgc#>փZϑpаF B#݄<`: c5`5vnte>zcU)ηgpP>Vj"^҆#dl޷t gќme5/I $Fd@EBdۿ %ޖcV!cK7aK+R`'\K[gIPgVӵPf!vlܺ.蜇 gБŸeni Pji)^QA֡رi ZuH 5Tĺ!S g͡-'e7>~%Gy1w vՀ 9*T1.\*/ ts~)Zƙ*R]B Ok0/}-[mjz-deJ+UglxRk\ĬtNwz/cIaUx뉬><\ZO_!H6zj(GN_KǍ_B1w%<;kmH:bO%[u?tnBCql?qzشC~`b}u=b+u~^񗯱vgضq ,ծ>'y kC;Nb۾J7U]\6ki*\1)בVG]8ClǩYZ &©cqtܶ0xgPqD,c2S;gKyB0E$FO{ozn8Ɣ<&A ,On؏IϪ /[ސi-ONWji@>"9y{Qq$ӈ_>:CEMg4 %'ÆVajr{斗~^TJt+|`㗊5/GO?vQ[SxKO/\=ɑڻ͵&**xO{J/{0Tf5 C$S:<)j +|'ܷ5 :!8]0;/O !Zm,yx&@]vO-,pYCf*..r|Q^E;X|]|oh=a#OBW.!PhFga*?2ݗ;oq:wUsI_~wI=NGU1#<<`N] cJ8`KLYsP%865*~#SbWs; ą9̖7`+k4McWw΁0"mO KŎF[fr{lV9C7֡mw.i9c-S~Kn^Ӫ&4s@HT]\ oH`Kf!j(r"ķ [),(G R3 }RXw㰯k h+%U󧡖s] f2tȇN6(Yu姘߃{U۪Jli/4^C].L:5OTF\b쪵$z G\E 2WDsR+%Bn};zC;j~vwR>1!Az&Hݛ=D g h^ⷂL.I mkƚ!U#9H~EkWsP2w?óU^Uuy6<KTW)Vs%| >ltVs\ -j}3OOqϞ渖5cvjV7 %kM0ꁅF3z&-_8O\0=1XVK ?5]J25%}MY>y "뉐D%%D4OFwm6dW](VK|!P6?R" Ci)͗-N*k@R/nzړ?Bq#+alŃ1FivO_ĥ_v6T&a!0i8'qrajc>G*'d>f$ T<I6Vg )<1sgǧ 1`2'(As 㣍 11"?68a뙰ublM{إɤ0Mq[h Uapw1>]Sn^Q~±t[6Ep"ї ήo»Ϟ0"sy_:s5Jb~; moDZE~N)80u5p*3|4kj+tsi C=#;$c/Qfo"2'Sh"w!U{/."ƺ;&ո5z$dF)cm1[ Q!s L90GC =|_rz^s.ua{yi ;h~g. m97_؀QnwE8MF]`bY06 X'6aeAhy$Rs.4S^)BsJVxŴ-Aw mk0q-3q_K=xk'f?'-23 |h[XmW.~SX*SM)@e%wYBd֊ɴZRD teuO|13q;2#MHMi i _y9(iV.xz=ٝ؇fhB]l7LME̲A>bgJsh]{yA#Wnno>"UH{FIIG+5oRP6Z(;RdDЗ{h7=Ԯg҆4ߺp&5IhS!#?h9NO2"{ɿ-B=3p䋕<f qbN{czPg^[T/`׏N9sߞq&O)NK(ifVStz!E(a%ق;5[Pc?#FwSBbVOu?4q2+kc2a{{:DZ7&3SەxFp()\)4p v٥FMYjү8;?[_yy(oRmT1FF!ǍÝUB,qA&zM/~׿[)8npP=d6F?}b﫮ȷfuNFO6Ƣvf]8U#x0ֳb^Ah%Sl8oR;V#:BǥgK ] U:aa"'ìqh7&>E;/bX[&A. öŝ;tXC}cQQ;+s $QxW,t$tF P8Jh .O\؂LA"wcqh mmrjĮW \\{aI:͏ ,-UNA, Th 8W̗x~)hh]ߙ CQr'qEh{I]ݠfD}9!Ce0]P1% $@G[d+mS~G:cY͛>9+ GLZl4V[@%rGg9Y05^b@M4w %'C%/!;hء %jCVl< kw.`v m[Tքci|s8; q6}w?GeXB$~c ?.JiD9B僆$iM_!5p,aWgMً$2nBǔ\B>P8X_soJc%5:U F>VQC귕s0j* m)"/Am@W}v')y}B ЫJ KzaZU.(g!Tɷn@ëG SLe1x˃Mϰ4>chw& k98\/o:]bHZ#/c?AލvWq~ o8,8`E}P.jWXW&:LTB7Cp'Wv 6.7!;?+ ϙ&V."SrvWw5i6Gz XiǛܩZꢳXrn2@V*6'd2bEz SFKZdw4 j;س,^"o ?*q f*8#VB!z6b(o죟3ِ~yc>O26&p$aC ᡖjmVOM ],-Sgm8>T-UpT~> RӔ@Rwɒ"_]=j':] QM{,ֿolwc] 3G{H+exbWas'=~"}9$|~:\'\!|$)=d:2~RUqc7TƠGrziܖ c9Ky0w_}*4/(Q@|#u+A + |dc1|3n 9s?΅_RTEj0"2lk98/YZn˧ +ibs5,*y:bRb746l$R "_X,׺ Ckȹ i:4/?UIǰn_%γJt[߁n_z*{A1wi4+3:e'L*0tF_!V_# 3E"װ8r1t>^BWW07V4n`lmd+|474h*b)J~lV1Kr(gbܒB 3=w2Tb=:9t4l+"-X.֚^U{Ǜ?9mWl_P/d@YnpI}0{]12cf jݖx}\ȯ߰c O acs?N82{琬u 49J8^f[l,[lK8ת#sP7?tFjdqC (CбJRn bǞdd9!hckz( SӍuh CU&?/&#eq@pн}-ϽL]ix\6W 0Ga퍖@>鑤W(B*[ah H` Xe]]ʾxR?eւڍb(X$IcJwCXAiy4u^Y_՟1RG>)zmZ>>7ek#CL,?pKV1.{)^-U|Oږ#Њ4˖5gaCEqF'KK nժy|&d{"=ntePbvԗ0tZS荍p*Pnsg /<,]z۹XvM3,ȋEªđ8dIsKjv(V^y )Mzʞȃv}jH%-3$Zżr+W lAH[ /x:p"ӸR5 G}pT݌x\ibt1 *cimPE y;bb;r%؟??S4m+?=**{3 ×վX,&ܴQ*%qw1}=DAFtndA/ l:0`|KtS럌gi'`-qH9(HDDcmB?>L𴡪 `"թoI@fցq (P2fpCd%C@JsS9$ ^}N|;=E2Vqkr6\}w +/b1ը3bX;V\B/D/`Lrx3).đ(Bd5-Q.ŜIFKXo=^7CVD3HAe `ҭIt'ԉbUΕnY lCq0Fޤ,a ;^>GP3f꜔HCWtc(ʵ`Y|פ; %:XB9[Eտ_!ʅ;eElRXȥKq zN51ܭen@t(:4|mjbJ_'M 1cΙ3}Ad?eKJ_djA-Z\҂=I#׋7DSXKw$ ҧ,:'Nbi΁O I~Ȉ:I`=4MY:Ԛwׇ4 aǣO@u`o%3WP PlO9,1p6bߓ!\=3E9eDPp'?w=)5r;8"saM0N?Jƥg]pNyF,mkՉoq$;p25v+|8|Կ^* lͱ)%e$cw;aec?Q'_V%&hY^$Ry7q8aXg'=(=r,Q k>}g{rȭi%: 'I=Lصmnl)%%~-Vg0z/~//vZ4c%daV cF5#}'*aj h&r]-`\Itnsf:7/ta7gvGq_9bedOD+['`5Hן#<йeulCJdD?Bsa"1'OitCו vY/R$|o}UR':2 چX`tV$Dk,c'@Rʃ,LS\XB>+oRhL@D Dv^-,ռMѥf*5kV@1Y?'ꃭ 8\L ŽbtuXY`#-~[ e+KcwAUr󵎟J/vHa1~Ҫ?F%}~x2It/SbX|vVtd˅/6u^f l'?U*0JtDt4Xql>9l{lGyogm+TQ4p!UsČ9$u|?} iLT+Pįy|h+ыUĈ"sDjCUv6L*awW?a\:+eM:4}|8TZ>7j6LЪg)++ !F;컖$-8߫޳D&uhd(1􊖡prx=?(Ȳ!oob &[c- ݲߐ,o* "zn/^),*яWpK"$a]t/069vI˾cvʪ&X~&HHTNJ$3c Pz "Dٿ3!g)}c'tm0{;obo3ѱ@ح=T2Uk;X}=B#, d^saZ7>]aO; ?m{8X4{ x]eN ]w?1}_OKT0MXpJLYw M.G`|w$P,ubN֏V/QsY.˻8vRcfGA %2p!6ΏzB"D[}kNf/N9{8ѕ/&( < 9?DgK^UT5&.Y=3[oI#,貼&;n_u.[ 4PrJFoQ8?+hMrüť{]\sPcS17E>XlS64o?nA_( #C/?a6N5 ?7cyTHˌ~PFu%cP:mGَ @Εc-0wbБ^^(R_ڼ\P4e|VDxnf%%uWx}\L+9[(&\hM{߷tT;JPʫ;cΑCNq8E֟q~Xj*-n`Ӟ,guzpl u,ncSqʹ\>u}ؿ'0;o5U@=E~>7,#jH%s,2wu-De_zc]7LcףVglHOs*Ƣ8A_C2jCqtԙ,5i)!&1|n.Hzb=wN5@F9.Y_&Uܬʸ)em2dԸv$rjK+ $sfvW(x?eOnPAs-T ;Ml P=Z!Toml>K8w01.j%?yo a%$#Ӭ_ 3-_7:lܧfdz (?^H)Ѡ ˄8&fϡt",po/gZKjP0N{^w~v῞͑*|s̱:t~`cLs8\ԆE!Q-b: >0D0216wc"`q#~P SfO:nc",-bsl1uT'JT*TRJ*QBBF%Ȩ("#*Bw{=cs)쬯?}~.9~5v~8YDt0G)*AG*^LBκ_1DavqLӾtl^@"n($-Ir[.~#k=#>s@\g|1]9D3i:(UJ0fz?XQ%:J2"A=Tg"x"aRjM6h 9DH~U&-)OzCS]$װXc,n, y'{vN,8q* x.K2gO`vM<=*%&Lr4'i'1'J7uy@YL &x#cD{p x)[~wC>ja(W- m[iXS OL HH*Ǚ sۤNZBhzq0/$ͻX~i*&xgO-xwSXMj__1CcBXj^V2dO^Ow[3fNna0,{s_N+ V|]X|3MjG,`+ɡZ4پܪ>ՇzvPFgm2XTq#(]bYi?#~10#z^߼z'#DX7Nmb_PqUkBE |^⯏Җe;~Kgp򀻋 CIAXbf~Ft%]_ݣbo։jT%S8Dpʻ]2rn;q0tE/= WaRt/޼$Ȭ_k0N#Ɂ;eDL.kX! W׫h 7sBsG$-_w!NvCgMiN < {PE;, 2gA7 (q,l}߷{m _u|V>ET 60L᎒5հ.l@)5hHo_'drȌTaԼL4ŽX\T|'Ä}L+ Iܸ]r%{v[aTcX}h^$p0WѕLlr+qPp y#egps:>(sȼ=9 ;]jhͣ"zoC]BuSP79w-&Q%pAVB D~,2KXByAA0?p2{Ĩz%;me=MVBJʙjЎ@ad /<=5}B\ۜ<ݗ3Ov=] E;%V6z]ɚ5Fc{)>wWoxoai:lmP\[("s4H/?\38,Yq]}O{#2s5$?1 ;"b~Up_EvUؼl\5ssߜBAbLwr;\Y;r<SE>TOe-KR$D}WeLw~2o~B~ }PyF HK\nwu28rogE!քvom:#eV0O/M ssc_cq/KyGr(EcKjH\FSRwD-~*[bf(QC{;ҡm* 2:jHJLDZXí}0Mlfn m>^RVSK_9zY=g05rM7Ԑv,?|@N qx}Ɩl] M؁ ԟ/tO \tg4λ^=HĹqv2%̕)X3V"NB楝ˬe&ތ|폖Ē2&}69zדpL>Z#7&w{xwoÆpÐ-5X!|m5ԕYRv4f nef b엡?J7zL-&aL_^[ 4'W1﮾q*NH1nնzާ$(0䘋xʅ0/^E^P8甃EgT7 K$llPg3y݆"Nƭ&bqJyV96I0b&(cƣdOF{(bu*Ƽ)ZB+3tÜ= JDC.+z_/$ Qz7 kyS,=ECŇ1}{_ê)5l)SEgWK?.bmPLIݧލ-[xBw{#/'6~2  ٠~΍Uۥ=݇%Mk-%tYEj{PθpdZz&8}O&_x܋լF#WS@w;D^H+9 _(K`q7:>`Gũ!#p4~ !?7RGː>*^;^>gBuEZ2Ş-^80  ǝ 쐨%x]5(:C3g͟kgCݣ{qH ٕ=ʭc@c䍿'[?7(.-nLBqכ[>|#KU=PkjEI[XNx ̦OңbQgvkȠǼ7;Cl8i5'J7R(.C:ା̾z8/w,힬umuD٘2!dLB뼜o=4.٬"!! ÂP|,6wztr ghnazړϦa3ߟ>tzK^{N 7:-kҜcI=Fhc^RJ.܃A`MsxyV]<جbopq둪<[P?i})RXo?ןÅkgz pd9Jwp$"CGȝrAiM+=t)[Ək ayAI5hLR9<ۋy>}mG&U0ےh>FFRsiYn7?G޳Ӛ &rEa%/Z p`2 _*1Pj_ E\,n`Eբ\t;m2ޝw 424Fa{k`ӱ.9 !n{B|eΌVdrMW^$f6?נ-R$DR砌#{" 4t235?пژq6ICS>)OȠD^CALZT# @rۙMu(7,eZ&wBI:RBPz_߾TX{!rPYTa|]e4 0u46$D*Bg䐮_X*;cR ;r󸟚mҒ~ߞ&,6NIMV C&6k7!/k`>]r:5.-b@&0緌-BSL?P/ 4\4VW!+s ~ lbV'B8fF,!K4zp(=0"ARhSϽxT)4|}]VJ],B{w.p =6|zvsPqo")=h)IjzXsRȤ6><;ߟzE%ˁ3U3lőX*Ssh?6yc|(/݅Dq_?xHH8x#( M;^RTkȥ@]8*`y ql<,:EώȷA1sLv)hnFG#Y]JzȠ55CIz4طP|ϴW ILRZYk)^eKlwZHtl ѦDmJP壌 s;{5# ~oB}?~ۨ3O7TH䀾M=1 otyIcX%v۾uIJg.:OV-(7ށIubB)\kXT" ʜڶ:,&uV IR9!ޚ)XFlv / EH].}*Wݤ04羕]5ΓMVa`k0OX1~nOo/[nwy]X,Y}KG aG?P{jn첷TЯ.';$ܔ[dq-k¦|Nx_=Xz̟5Z keG(Nl:huk=.[, 7ߊ {J|AX11bR.j'\afF*m֏diuu|*,]t7#qR|ԡ xYɇ`p1zRVw0 ˂cQRpWyˣӲ6է=5yO7BG6]]ws `fFEX|CSg37ް2-0B@#H*ڔ?+7Bq(^G.?z::GB_;Nb)įI!Z @<ԫ j).S yBדn/hBp̃|ߡͲ@;A章wim4qۥgD5{E7|$/*,2,*4~ :uNТ[(hkO@Kx[ƪi sF{߃˳j?0Cb D7Ⱦ九՟0]XrڟS^MAڤ&033{m5R =8]O\S^X<|vc/{/~Haao _D &J5l34SIƲ_j~{޵ɧq~TH=9sֿ.1X_B%"?cDH;x~bAXi(>q٧>|ZPX ν3xoqkґO!ҍ^g8@6k6q5$& -8vX=FpjF,sӓ}4 ƞY6($p M2_B|ct84y -!O=e_87ֿ1\^vaykGbv$U{V$OGʱU"A"r_:G4֬8̩PV2I"f\Oyk%F.>}OAjdqY!! dW7CU|\²PZGrw8QuY$ X d8v&Zh47PUn F 8{COivCorvdjb bw K>ᙛש1\gCM iV{YA`DT܃z$Qs\;}qT!UvS9bBEM~h|P`Ck 8{ת~h@eaTs~޷G4kwbA`YbWUӪP{?c/ tvlqb@wÞ7-(W 6ZfeYDRo^,yƄه,NB8p|ƪgvzZc SX+{@;T.8S>.J7XbL+jB[W!냸y l#G-Ű!߻%"X)Mz||ݙuF08I_DBrH|v''cGϯU2.tG ;$:+qb7ɸC9n!A8[&Ig[͎kLhhtĸq\e<܅r7X&vlXz'~^$oqcrټuXLs))~L)*¯IN^TsT}٠W JY wؓ|`3whA<'rcc7;zmU:QةB[^c-T0o&}#uK,UА+kf<[,^vy$LLpǮxl,:rwR+7]x"9Nv*_۟ YE"ְx^ՏRQ%lK6'{ jW{~ 6̣ϿL~ݺY/i80$4/х ,.VuNe7Cx #oOM?ಟ;d^u*-9. J΄ jkmn-lBA9Y6hP{m %@%|JKN{S@'5wA1H٪Կ("q-^'t-TfVe˝K1jG<ٻqVAet ƶ)qy AlX|z,Gw^Γ3BS׎ O(SMČIt1QH*Xɳ M93"/ 3fEG,5:F|VZIVPv_2M[jN ~mH/ YSJ󰛝 r e&"vc)v6אbVCX-/_v`cpol:M 7+(D>U !Y& :~yOw`?*G[20d{;[xI# Ai]:74^U>G;ĵOCS_4Żsr$]gaǮayƁw)#v+JG_AY_y"Bm{*X_fDluJt ǾטEY47FOwdǪ{1yba=X7Ť/Gؾ'"Re>xA!HDl`kd%MX;5j@l۞qs~쯰ųa':C]Wc۰{Nןft[KL-yۋ JX%g 0opA.>M-(5x?5$Ơg"P9XS5 ϧDHNHxef3++@t/gQV WL#{5٪Ͽ,sP?*H{P}\)“_oFg30e<918!i:X/]o;GL ؽ߯x4:G #nC[a zѧdeJ ]$}.06Od' ٩ܯCvdgH"mgFF1NjhbT_G#v&Aۭ(pjշ<8 ka[n…8~"#1?#ͧj\jp1307$o8Łaՙ㏨KT} x^j!s{]m%]sc~DbRc_`غг.B}sP<侖C u$S[WTw'y(h(0:K=HgEkvZd ֎߀PRi:?IoZ /MANoD }-k),CV5%O6JsY;aNJq1/,>pIwpba I^ [XQ{RЫxtlH> (.i&RtB{rcy"vv`w@G~>6AxWDA ܨ|'Y̔/AtetPumЕh E@D){FƬQsYCH7ӼMѸh>t dN j}T0IO)n+ ޞtrSTqV;.* i 8R>i#) ZvB io}j"<.ܽ 2 p66 >fCd@\ce(&1`'ڧ\&lTP$.1.Jo G^(=R_@jUJ L ޙ O߼;^h.f^ +iXbI/cCIM/l'3|rS[W{m]nF%Ȟ:63\u|,6;_CjP(3Rz-$.9B"kGy!wQ TܷZ$پ3nXwp= !uot863Oc MJ@(?Z* %)K߶=fxV@$4IME׆P$e9$Oߖܽ Jۄ3Xh;=ܰY xyryGoUwccEw\[8-W27AQj0|I \׼rpA2]'.(78d/?b^t40LRpDL 8j ;s,\z]ݒuX 3F&q~ ۅ::8|!H]@(VϽ \|(+.K=ۉ3jK+ʺE1#E{OqTWDhWTywf!cL3d0zflm/~ǒa@Atm1'@&EhI ć#2P.  )+\ ǒj`bgd8Ӣ ׬OQ c:0t>$4nAYGbsoݤ8tՇ_C\m.g͉⍆)yA3 0wmdB<~) mܶg2@m wO;< #T0 wWwZBQDk^yG >?)^uQ;/cYHn2h?qp +3ϥ.LWd$֨ڤ?gWh6,)bފ9h/nx%3&_滑UCl \C)xF1L*3 ^o('?}<P`m9]w .Sâ`OQHT|&C8W#lơ Av9=9l#B=ZjgJrrKp2v16?Q8tdbGUJ&LDW..2,R?vV$fH*bH SWOĞ-,XJ[HOGߗ~jl9l F: :Y = PAq ht]M[wBl7ֹxGJҦ94M_ ORrNd:mb4ωF c]Vrve}cإӵik4Cl¾=9W@^(H1W)3*&=9 ær@{~,.q2 Y˟k_~Xc ,~2-,=!W  GϦa!5.(%{z {#iP$uCOYߨ_nJW_`X/c?9ϻaAf"K"^!yg>)6p`WX'̥$c.مj$=JS? nmފ9h~M˟ٲ6GT5wRF躧-W G2/ Z ]I6wϖ wpASo%!ŬhY541M3oA/t59ڗ[nj8z2t-ͻ~z麫/~ whD!v;9S_~/~& B3TҜ_3sJдټ# r@w"،k[MBT]6Q|yNy߂썄{g2GǓpb~V:_,y7*y*CsWjyi([oo˛{f=J!xɂURqf۰D8C丿+"A[CТp_*pυB' bӂ8rc_0箒Oͤ.PR-1T΋C>}ýPM`wNV#a&!@G(=43'1(M:ash Ɵ,ezkIbO(8=6[!\0F(U!]8Slx)FPJ~x7.F+=a['WQz;VPQks/ܗ G8"!ivG$]>DrZ98|!zљv5H0wQ3`2}"Q5)A{M Gy(qZ.;7Khp;OXQ"rHkMvEAz:/lUO`QP̓%([S\ Br+ 9{kmp+8-,o@vM(˩`bŕKbj-pJx|D UtSM0W5pKBX?֦^<Ď҆1 ;sd)q[{NQ!f޺X@[o|oRbl4v\R VS\NVM>cN01~$5 @{WB˨FĦgL!iX,Vt[(Z9ε OP[$=CʁZʙDcw/8eC)R͑®O_e܀k>lY" ?+qZ(dǗT釸1}yPJY={}@طp1y/f@`z>,|}&6hd~+K r^ZS.Cmal28r8BC!u?Q {th vu"kG5C(hR%k-f|9uBU7*TS:s|_u\ ߡXP} F1s*JO_T:ǡ M݆ZC#¾kaCry)hb]/4_?N|Ym>oOL9z1l39/ͷ4OY!ZA?sK>;Q|=K=9wɅלؠšZc35 AYNuna렣J3xdN\b1y&Rz~["?њ;}rkAP<, &c%oOyvr:FW@c`^}(94MhWCۓ86 Jt8!ΎC6V8p.cԊ;zphܴ]-RngjXcRn:Y)Xw))?y__mi=9@vVY/ߢ fk+TOt "L}PRm<6!Cobƌ J,w\lo$4{ޖQsVՃ ~ց׉ ;UWy߀][ջs(]9ΔP)h^< tW$͐zh 2? ԟCl]S O& gl/AJi. 9bD8 S<=Tk5!}~Z6V;svaecYEcEBxZNB⫋xaSXx棣K  qe*=_]ِ:p?& ZBWٗ"%r0>_$rek>GK`qņ;8_ogtդ%Yvuq`uYuڰy-f0 n=>y?T/o i9Z:9=֙m/q2dę :$$m*> z쓡28u㟾10ȓXWu ZXc֮`?_]G+ X7*s)7+1a+уؼXh?}Z/_̕Nc&_hU{{j`KɐI]W~z=YƘJHMQtbUKFlC^+&g:Wox*SIy_Wc,ƟϨ$8 J1t'I8;7 O ?/Ո8Aj*\׹D#_&vۃsu:6}rd+\wM^f'Hߚ;:Sls|oiXADhbO]/FOo;hlk'u^](-mv]593!0EESo6w~t] Gx _3:J >,0("J~\P$ca\+ Io60-- >PL[ǨPMCh2XV}á0:. |g&ӛ}m~ }{>L:+LV/T^N0">rwF9"^"胝KU[l9`Ln_X}*^F5|埾eo$.3j- @:tk3Q[@=G@.T;=r O~ux!ަC!+ЩJMŇ@٫Xvfx*KB Y00**2OΒ'Q ^Lvfa^@!7<*4i \d+) ,q~H*صYW;g@ι # Vf(R㬤[ G[;`#÷PAEȽaYMt})w|&TAuGi7#D14~|UY by{X/ k:cFH*$2D}oOTqQq rb _R{؉%N;cj 7= s=W̡,h,z0ׯ)Ji] 9Hݨ#aqKv'5qa SFBXۑ fn/iyRJ uocU~,f^ax:z⹴Hft;-¼1|])i1^ _JB/mv$rcÐUW$P"6_:&s ]{A飜xA-ys>%p@٣kqL?ۿEjϜjx36.Թb]?jӲ LPӟv> 8*9 eH21tP󂞶Ao~+I0Dϯf[܉)6bY&AY_IЛ/=jԿmƆɆvgzW+ (U4A^: ,Qmħ,75J+n~OF@Z3m#S`߂YǗKH82mvMۓO>)f_?cMfp: o&xSg߳k%x rJWwXCWũ-s)`hH D7˯C0.jeT~Ͽ]I3aݡ7̰z]ncct 8rBEE+ʸq{\:*쑴pryK7)C˧u^bL;Mc9Q7~NGlMn!9 CBtt9lҞzt\4&iZ vF^@- ؝[n#@WŸa03FUhTuT;M@xZM8A♛{q/if`;gTo:}vr[$[?x}&A{f8q7KK}'+#/:2θ&(ZlgM=}s8%VNw`ϢJbx8CEu7ʃ^"ߤ|e0_(;-3En,l,S0RkoB\/{r+uuVDk#¡M yg9EF7}oǑb+J0¬l羈Bo/a0,whA 橮vM\E. }eM`?gu:UFHր/36qT嗙z"D|zu  tOߘ\nlIZ6lwkksHi+RNf_{B,襹~DO : t `;:SJ|#@;P2v<0 Eo_x&CI}=P_شq%[ NMU~#DRg !,0v)Wrd*F1Qz )Oz0YW[} aTgȡEdž9KUd -'-occS,* jB]8HnMFqGyrgi=KPdPokO_Ϻ zvzy } $]eaP;ns6Mؙ.TߕK+bs~]*dG fY  ióH ~4iVj(rzaQE/ Ly ln֔6bۭ_vbSm\Hl8b[eycQkدj']X@ e-7ovAzKDm͡D} d~tTbgw$%|bELʚv*V&8{R;9^ `ă\zC,;-p,,=C_JMO|eWv@Ǻ\*qLb?E[ϷK!G5U;vkҌ/,  UGNL`BK9 ]W/OW_ڥgs79$|Gkib(U#@4̗|iiMBci'3|_ajR'ya?mXl*rCFKb'k!O8laR$Fj@dY$lSw: c%ŝȏ[R j%19,~rvC*z\sa{(E5zҰ5eέOta ި?nAS0P;v 4=/z rnυR!yB ~1vD'=-MJ{iYz*~۸N_.)gWDx8./Kj0V|M ~X8vvF'4C.=̀8~{2|c4=]'e]Z((6R0m,wnsײy45ju1F{nhIk纬cerH0fu hE놘A Xma%Ŵ.h|yZV6'K,Ycƕ>e34Hox\pM?N]f_!ǖ7Bެp\;W*[2uq+eFW~QV sR^Eky;Pxu=Sߠ 㟧Ӵ-s_ \`)qW Pɗ皴7~X<  (1\KR/ vA+ є#.RF4AUÎGI:+vV;F ؘY11q-s( 8 2|W8n]H[Ͽ'73b)X#ʧ%;G!lV/mcmT?W/Y׌߃Ηwa $SJ-Ƹ;oicK!Qf>l?B q3MYS3K$9g($8X `2WS;yly AC Sl߈Рz[/l!Xm([>v͆33Sv%#) {1qhk}Fk =F-,&wTC+c졛VzF0 /aJ7 A;!ϨSP]:Z3kBWɉ]\州 vâ]5v0jW,ʶ SwB4hf 'I戻kllc57P&pc:Zu Gx; t]Y.ƾ+Xq2148fUso&+CQ ~h~{Yi~0@2HtZn(Y4cr r֭ǬkNsw9iX5LmU JvÒ8|-3as*R0<7t4 reP w/0J=ݻDܞo0&b+ދ7mՙ.⯿3㕫qF\,oE֡Ԉ,i=UPt2:[~-dL{vAKD~7L?0(7;V MT+3k6 1c{@S_lJMBwb y}6TȚ_)}C\*C_ coo-e V4cbOZ9t%%Y_g _$FVP8z$);6sJ] رl:EeyYt37vuv?8(㠚S?}3n*˝`]~r~Ƙx f~׾}\fDcqr2o[:% ծA(A ?Qy`g'Z}njhB{*Jw|Un$M0mZǧ)fynn zppOt8͸Jzӂ^{r9?K]+awrE)u\{(ѽFowƪ.;crDWҏ,1cҷ~q1~(>'M#wb)EONSRDe[XoU/H|Ynէt.z2#.s~ܚNgn<-Ty,VWGA8?/0uaze]z.jCw/ mt*Ζ]1XzJ&2pxĒ.~GY,6;\9Kb0M2aDd G0Š'7Q:!CX-HtIg̳w7N<7;~jO{| $WUalUCC^TjeDJ&\̈0 rYBPs{c|utGvLˇгi_B`Ν *ǗhWG!#}b 4W~i Q/L`U7ͳ0-|5ÏC*OTx$Yqކ*kʰodt., >B+u@|es?~\mn^k:DxEKG kwr~L#AET"w]*8hZϮ1'̏񷭢w8tf+ZL&g_t츋ceկ@2ʺ)]sԯEq/kqL컮RRF]:+\B/p0珸+X'mSJh.Z{}w4^a[>Dyp?&#Abg(*C8K/:)?K,3#CZoP. v>S ;|1*uUˤH%z U!Ocb(c\t_ߏR-|أŎrOG!ot^DQ'([' R+Q~8*b1\>M?K_5|_/+K%)bjޘ^_H(B0)]5DϿ:r \06M̵U".R:$ҝ \UwIq723=&GFH 4S&DJ·|Y}[Puj ٗ f`Wx_.\Qp}j'k(0;S#qɲfQ%%v}K}:-)?{~N2Wxv4ک 9VLWS-5ð$\ cC. $op8eoP,OY`+GȜG>⽃RO)qk\Fz3U:(H6Vph@P685lR7۱pdWux.(?iW!귓/a^772TW"IiαW6xs|bb+85>/saM/V$V?rCҏ`A])Jq=oKL IE#Y?)l"/ԲfTKΜ709ZGYϳo??|~U?،G lލk\=L+UJ*z=o| ٍŻIЋ "ϮAjn!λ714=l(H te YΑ"M:K[b91ͬՁXeExk"`6$Msmz/f~@à5;[p&ݿEڗHFzCuX%(6ϯO8WbC+al*~zQVm44v䝭YkϽװۃMFh#?5\Xہ^ 2܏^0dq= -Q&TF5y(*r.j[QT0k T^.<F߰]5c<<{(2?$G78!عhAK6r Dc6}Ԓ|HM˜d-!]K+:eTASd9Ƭx j#aVlo2GяK ,ҁ]Py/OdVn|gNXnI33x~!Q] ^SQbCGnנgu[:컸bI#WT˳7m-eԥ*tF=f}D7'#GpHJ^2vݹА〕?K˔cS|p=O"&3ˠ)W;*x1[KbnCyŁq*=[}bdu^j =\5l@#5U >0?uՃyնHs(ꋑ҅R'={o?FrWCVծoUaV.OҌ0z[}Jpc1UjG_vh4iZ=b#aв$([8djĉB7RC(xr)Vin 4';޷(,7Ee9FaZ B[5P^,&{23;V k y~@㣇>CA2[y(RgC[;ނƘ9B44}f_X~?zJ6p"L-V){` GY_iÊOuLf!ů˭e5\)^fp1v]wR֐9ܐ(屝3]]uW9A\Uk,^)Oq]xSVys$Ecr.c|a.r]o,GU_&[Jf/˰rΕ[XzU.l"zNosPI ^:{42I|L3 :[b ݱ]}XF'1!ގRUAp iEPP5+ii aX0XlH!Th- Hp(*o#%3o ({ 16-,8~O2X =[OZT5C7kONQ+ Xj)GyQc` yH!.=ɩ XQ2<bocLŜc l("b޸ J'w1nj%]L9qwKO[H\=~xVf%!E15Ge%WGJն+h ʟ &01Q RHHBx L)g1gsaf%Z֨oc'k}i{GP_ ם (Ⱦj;Sn/A=vVo|`+2}aP.=%H %LlPNS DZhegw 4?+jcuDq%СJrW6?n9@4N\x6%)'K Һ' qþX*x"]WAN!ޙX ݼ ^3{FC[ӓ;°ZΉ{5Wx',2 BLP9S?Tlw0Iy%^jQu kDyT (YOFȽS3uTl]" 7ǹ[Jع(M-;VriTTź5VOrRK&Ԝ݀V+ATh=&Y|D[g~t:ij] ~M jKex;*XAf*wL>et T퀨tcŻHp<π>?;;eLBB6,9M*B3[x{ܜZ9$OBFDu4V?)w!Pzю&`(AR6DƮʳ:Ǝm߇?nvXc1#_]܈ 5}p&J;M4Ob0LCJ^ ;> N&UGW YyˮYO~mx&p B_P)>H0.w^rݕtf dhh3o}+N WL6^|>ߔ"c9;8},9tBOz3 ʥ< k\*}$,SlE鿯]lf[ePZ>ua׸up +N݌'u!spHXR ؂<ǡf=eJ(],g2Cf o5 qR? _/Ӓ '{|)p[ <kN1HnǖKk!e>+Pݼg^OFA6Bs,r"yCַ-d%81x`DjCf2W]t'@;f%ſAq<"Pt"@\`ه W 8h()4&e~L2eR9),֜Ef>gw5 }Id?*ˊ%7/YUA*?k+C)jд1^m1$Ų@@>8hmh!"Y} p;P*E1N/R_ :@%L?\cN&砡B>x8!bz@'ä ?)(Ta8ނl ȓ @|+o$?rO cMQw*^̵Zž@k;P+-gś!1fZ>)YW06p,z8;eTTH54JʅJ. 8~\Mf$KWd U$f@9 Rhה9t'U'O7?jeMzU I'K+C㔏~؛AoNW%@-L;x`0Y={>8u?M.h?=7+8s$2F]P㍄ENGzee\ >WUO)X}4MOƆ{ylR X."ta;z*բTF66RCiw fT/zy g-`@b0=X[lR}:+!UtA~nP`^ HM)sv}&$nS,vºaW$vF̻!n· )>wR_˷E/܉o~j6-[2;4o!|q _/񆜹#U$#ouCjE{U9;;nPXfMkrĿt:y9@P~}h35smLWGjͱﬔV0f>= LCXbo%hb]g}ƅ禪SB*oڗT _l!cOpy{.36 rNmmᝣbe8-ҨZeWd,3|(8s+ {u$+}b_.oپ-P;Z=z+8e Aʖs$-䠚IJ`N+erIJߍ bP|m$$9>dyOuV C1IqV?}g>a?ͽI;YPӧ.ZYVd5cs>=DT16>cPxZdH+Brp_@Tή?..!!}qO8东vD'QkasB"޷V1z6_c;Bes0ɡ! q?=lǁ<.O!?6ZR8UbnEU>JAV*Na9qdpR$:ɛV{Xr/<$HrnʿiL%@rj& Ic?_*"p*UFp |o57XaJG +:aQ5ʚG ޢ48$ZFv}ĬCyZq]``=4m)l'D=xR{[?eVE5*|ccBv uD9,-9dBLFSܨFq~5p@kS|(ygw+dȏ.beL*1M#1 jwo SLy\oԬG;h@]'jD-̎d]i5@ƬnWeȮܻhfay S8rLC d+hA1yOiã!B]C,:H٦Q' 6hB4w"(*: ;05L{Ryd kOS-Ը=2$0G~L(Kji3,.@ɮo#m\ţhtƩ#'..L0;ue7ؤF{ ? /_ 5;8ӫ!gL Yַ+=m[P!s b:wQaQ pp}!PY>7 `Ɣ7#9K-# =yM_lj"r(_>J&(rR?HmbCW >5Z"#DNXL,(եJeotBk6!@,/H: ,kP-h;b Y?]^A8~==(} Vƻ]mK7\8K=bŬL{S ly7A)X[aƈOlBߡofꉘv^BW}r;շ 0O)Y쨲~8ꏝr4!.EwZ'Aol GyS2BhX!%RYA*MW:{M2JqzQXy5 LwkVJv\}<6DڀsF48YDV>^ >w?tr?}ltd,S?61ة:Rrcݔݜ._X;/OƖï 8b9#L AC|u2yw:9:>| r3H ܠNHF~}nsf6(C͙#wC֏2<0}CBkA IX {d'm,r =r9-Mޅf1*6B_2T%4ޱ'ڋvnpwx 6Y Aщa]ϚYr㣿 4O$+4rD̘pQcx6$0g#u qţ{yG4:dMop;hO7\]u._ B}R%- Zv_?QvF!:X({TT^wOZFwXhoY8{Y(-\pҍr1{\^`hg~b;?S}=tW9jD \ qyp:F kw4*kGЭ|kLdͧ;ً3!cą$>rڂ2VnElO|⁵>c}[$"J9;6G Gƫ>CˮcOҠxıWc*e7X `x֫/yl2ˬqw!}߱T੢v c'cLcM%TD?ŕ[v^1hi^] "578<]]/,ȺP!QCDgE,`@X:3}B&| mOYYK :Z6 =H/7ܚЃZ6L>%cN{G<1g!aʃbϫw[l ?ֵ{,f.pJH>l6G;n1qj9hKj>:&y#J(4 c&ZBk㽻󱣒Y˝Kf6~oCį;|B!Ԯ޵ߌhF {*lr! ~p5$VޣIvWHSd^Tim@>#QJg&g?Ǡ&"nznr/ԷpK:A/C Ђ;Nm>GLbr@s܈!840RDA p@Z- hAV#Z8<{N}. ,RIM@/+Pg9RpՇ<,]A 땭pc ؽx ν+.Ra hݷ EaT/LafS\a8+ΉfLR$F܂pϛanmw}Ɔ٬ة<ܭi>؍o+"ی.!~gp=r:fO| |ĪjbI(6L_#Z8  *YL#ܶ3ݏ[+xa ԗCǾ WpM)9=fvv^~TdggrΟaLY"W p^Bgع8.>98dw<R}`c>våO,l _ywyƌ ww|ae?:Plķu_'|1k'{Gcd0dY7#Ų).J[B~f s/QVDr|܇e!3HR rw\#BW0$H<`+qv8wr~L,s~ n)P`/Ďv=6xeOMa,VF.f?=> kb.?A>ݕm݅̋j»b3=:.i̖B2խX t}+ouN=髚oOE.CjA&(<ߪ\'شB +E&YIꏚo@aB:7<5~MF DTɽyz{BB/< CLY^u-sFwkv`́: Kܨߺbx]G^A ( l\1gr8L/20OD|#J揼pɏ/էao8ڽlO6h$X=F^[;bg e"pO|S ǎ<56qϠWRCL׼i^ǴVE%7A՝ mj\F3p\ix]l|'?L7cy֕`:?']kƮdw:6@=t =<ˋܚochUNGB%CBr ]j 9P,˵ʆh >Yn{,_~py9HwK=_?BJaՓM=w?]cI1}ך_LA57E?ܒ(H15׃ Y(xIٖ1<t5 $?L{|B;;nN[X~<)V~~)Ka5d;qFaI8S{L:2j0:cc;Ɗ!>s,x^oHC,H=̼U d٪7 "T>|&>DfBœwwCv91T{O.Cl9{> ~L|K\]&45\%Uoa)9;ĆPX.\!I+ x;} 7Ȅ7类O8ʇ'Y>YH~o+pPٲ'i}Hv'BEJCľzUlHwn ۚ/b[gmZ*Rvk5h?6XsorRBs GsXÍxR < z6fcj1 Y 媡cP^]6W\GSqa-I9ʕ*\fhn}b&k*pJi-si^;A^?f+$aָJL1Z_-g,o.q< 6% ^bmbդ[_ocWTG1ljgF| {'Ӽ︱rӌ\ u ~ d2:[jv{uhm" K4wvi?;qF m3}[ 5$ES%PR4[u۞@oWKҟ{յU VG)T< CjYqZU `>u6*#Eqb626IypDNZ{"}o$j> ->ZH^Ԫ.h_NMA̽}˒pR |~b|R!F#wN;ϲe+ cOޔϋ!#.} 햹,<]"< gk|އhEH̦v$ |60ʢ=9t6h<.s)`D^ +nB]ID&lm6D=nOe,+|gh\ȲGsˇE|/5kZvi)p|R'{b萔eL7Q &/`ta\rn2̿xC;+a<_R_t+}h3Gt%v(T<_6t~ ,,O73ܥD;C:a e4S#3N)Oc&I] C]͍X4&'F[q&W!,/h:{T:G0_0ڳΉJn6!#$36(afRE[*3 A~١|ish8\MaS_3{!BFX\#t)Q =Gơt]g]\#B'f`6WTv /,n'o@k.yXnpwbbp&)f|w@[>ަ|!Jڭo /*r9FAwy&+4rRGJؠy-:  oͽ"hc$Uj۟k! )N*:M^hy䊍o6eaȡ9LV;$y%D+nOĞגVNcK𕦥3XVNN)>6^o3RO'!mLJv6oMZ~4*)x*cd o.чCzmX0X%vE2GRȆa״510Ny=9|l)f{Z5c ؂r6J<܎=D60TGٺL=?sgX|`tLs[ok=j==0.W Z)$&JCwm; ۪U3v?~3){> !]sW *b](t n kbyZQrjT ]bwjGwh`c *̡2jl˂$Bf*kIHϞn  ?Cj6Br#T_f (~&E5[WrŤoVD-[29,xȓv > 靼?$EjC71UnX'VWW);뎻'gPv# ؝I1?QfMc&m7M}-^Ql}vy8m/%,1GDǴ[_-gS`tb (2މրC(v"~I$9|}=B+<ġ1Ja7g&tфtN1Il[ $Ah ζ6jC݄a|s 1fE 5r,߽!_ȡ ӬPnƯfs?}^i O:0h뾙*9xg4μ2ZyS :T*}2M ]]}#[mŗ}_H]o y7Aeթeϗ!] ;j5Ec <ιyr( 0kĐtx4KeBؖ}#t]S@ rqagUv verD+b1l"ߌ٢]Oq){=([{ko4~UTG ?mTxj}:.}v#o=TTֳLz?5]W, "HCj Jz!Z˅98jk'rk(W|E*DA PB_~+XB}sTH=xy~?uBj}P]%LuwGZ&/7ApCNH%QJ kaw!NP&[_hy$nah>CHL@t h^}{RfyC>.9Rz 3fR35}q$.ڜ3Yנ-;Q!%a eAZSڀW tXV4dy`]?F_5O{a 4LM񠩵3?C>0]сEU,I0 R bEPꚿk׽WKdf`R"grbhXҎ\+CD" RMa S-Wy4a?za>HٷOcv Ykl ZMo /`!; -2^ȢNb FYOA^róJPyCiK՘WEV"r,.`&4|>֦s}ΕB{aȽzx P7sم$Th?t?UlrA'P6%>)Q|s~bemV߹vZAP_va9LOYR~iZs6_UŎ[,fQI_:3IXiLaU.^<ŒӯR^21u@\x1J./p׀1KN:i8\&G}qZDɏg7糮ʉ@TG5]UlfW }ʪsw6D gYcz ?(RJD+&wȇLPS i={rAb9mØ[$| ۍFAí oKPCde#nNo|׀aNSЬ;+=RQL3ъ;P@yZD4߀x0{ux4&SȐYӞ`@/[Xq8fTQ>vT˯ {!~sPj3~Pߑv/M]ŒS, ga{qf :s/){46L~Ai6'zUTgMwC9%f^ gK^uZ`v P">zoEļ;9 3ǵMB 'p ʑV:TQSϖrج{0;x +1_pތo1]\o&s*CҾB9:Zc{OcpaQ} DkLu2c(|qwՔ郆dXy6|znb=>yv2ۣj},|h{J1GXƤL59CVX,,+4`Y]  tq.Q7!^(!tۥ]"W΁ϱ(^#-5?l)ڧD8@Y89̼ϖ &D*O~Po>%Z7 c.߾aS|VmOܮrʋzcMw1 JlB)c\RX/W܌";F&J[ƃf^ôe0uUozpB~-'${f⢬RM\YT[׭=p3LNhD؟.`N 6Ȟ,Hw@"^z-9duRV;F O6w{}*$Bփs@AZ*9cP#zI?B.?djW͠Y8c8"P)ahŕ#uفKN@jۆv(3~Y"Ōqwq|hVj۷C$G98u>G~!!)lKذDQ;ty}nm;>˴tw=r6f&Ryv9XZ0OX| va>u ZFSpdE`T'6''Hqv9L/vΈ=ԝe{&k92Ok$={7+HCg[\&h8Wl(, )yqn8~8.zy0T)My21;=Q:_xq0sE\Tպt ;37N\ !+8gK\tuQV++g_ː k?w~:$@J'5 h\lqFzd]7_"kW˿o.lEcïڧslXM#.yÅ~ kFٛnϬiDpq-z 4Y4aFXn[~%b%PՂMgcǘ;^s;Z{@ĝc[NJ8x!+0?=TMb\t&-(/rQ ^[ꭻA646SE95lyu\ V9As[*]0!,xN[o(Eګ|$@ӥq+:=ߖG;5x瀕p%|ѷhutκpkVç6C&޲QV,_u8!pw.&Juq/QP8CG)C Ҩ7Ogp[spb^z=Ez?9g c߂襡yz!/e?CƒτM.gW ԧoP̃&CJaky!mAțtSTd9NET:BG1ꇐO&Gmn 7'qV\J*YeRFጞT%5I*j2e hRt?0biRb-Pk?;_(x]*}^ f6AH-Z˷JtfCc S*Hbf!] YK5XB%Ë;{OA"Т5"ŊC'b}(}bȚ?Vy)#KT ,]g=f,z˼ `W1q߃PGZn. /LqQf@f> ݃@[oՎW'/B`p|z[l9l ҈=P)w^%b0cΓ!!dY=,(^ l~s ;fPe Z~U?w?F?a啤o1'Ĝ) uJeRxc]1, 3B--ؘU]2Fݭ;yӗ K-(b{pa?}=UXn ّ-.yFt RV*> k@XI_-|WxgGLA[w)3!Rǁ?m>,A?% uDR eZ7t&PkGQ{S%޷V,9wlh lؾhl 愅 ~%"x dڸޯH^'aU8@݅Z)/`PL{>{z ` .ppU|`,Ok6rbe yktͻ7=ʘD/*R)>vKDžN,jL{$SJcK L ̒ 14zؔp,Z3,)RrzFA,!UUٳ#XuįayWۢj’6{y%&)]g d;M:Ae ;_*5}ES R'L1P=tҚ'h7;b%FX{L`#cܥƩo+ח_3 qvֻ "+b[K[F(&mv y=Zs4nHw J9gЖ0j-V $njaRA3D'MRnJP.-3B ܗ1WBESIa-z^Ƀ2wws0i'AfToj 6!í>^Bc[7|K 4_&0W;0wPJKJDX}6+[~1P$~'KMi!ؼ-l{(1KŬKjG9;/\mzQZ[]_n=\RtF2@nQhR<&xŬoua왖uh֧AL5 H7CR ;nBt替߅ӿ-< jY߳ڦԿ3P~~WДTe󬧯AӦxӑH4?mō6?+Wb-T큶ٞ2.;<jwدpOPkJ߮E_^e^zg CZ)[P~-.츏v!^B!Z,f7\4s/*`fVslN[t ?/qHIB~>`iu@})(M)w ӚOFڱMS{yfiHJZU]}^,rg㷭&g]rȄFrnS1TdYCAu!hvNlӫ˅9E4e\* ^ ~XԾ/qgAyZ(P<euǧpUt`TNUg_:͎M&GU 2?f!DKuC\&=y%:Bؼb*Lyf+;ڈ3Ad׮`w|358?ZW9{?xE*}!URthi\73t?րxrJB扐bNM彮mg m nNz^[|C3rN^*4L*sL2vNabKh&^;R7tARh!ci޻]FjU2P8Wb7V2նo1WU鷍m̰jl/ỳj-ݷhW8et1t)> źyMB}خǠ>X&COesjMJLg `olq#]22:`xwcs:=6_60*K:2L6l-54&,x5-aJR\i[rъ8AaLAADw>[u>NEuQæEFqHLi~-/J?&'VVԈN3ϦYCM_q}PG2ۅ E#@U" 9^6/M r756ֽFKa;vmЉaHqk ^໘#h]5>Ku'00n><ϱtPfN;<ӇS?d? ޻28qe*7mЁ.1J4g5<,? U*I̍|Q„zfv?V,ݬ]ͼ\PfzGh߁J_PLl}f<#τyBD3;f";dYΫՈQ? 탲vʸxw(i;F]6s~|D "(j-+ Z@5/A_%(GS}9qW^`_zVdrܮU#-}:"ҩG`:9繮qBuκC𨄤oO^}M7Vo/^˃.G`}=/7C9;U@ws+a37>mo=X36͍'y!"=zL2 W]Y~j?`S"+ڨ5?6cHe r깥ت=P+SX!HyJINֵjlb.tdO&y`T2eM,9+cvY?}ȆL.X"`z:WoEyk].c BOt~2B 5 Q #J.,̔E{1Lnjֳ,Q^PwǸ%)hr[@x&U5-L|yقMu-fNJ}jߡAr)V\cЖzQbHV5۟fh)#7xYT^ϐC؎-TeBL[tR3*_*d7:X\~ʮO\In[1%kӧߧض* a$!9zv1W]"9CzH<i^3s*iŠfi#&X1(v_ .봅`×LJ*$Uic@Dv/lO9ynj)@v~o#P_H*e:9F5*"LMY "ϻ۪Aق{zoӷl:Flz;'2A3b8PRB o0R=ءʆ ;DJ38 "w&EJɥ"!I.sl:bz3Sb龙qsC9?Qd#Þ ӆHTٻy5 Z#1,˝>V OR]j);6[U QvVavZs,?&[tӬ|~nb֓A AlY>.`%hzsO9 ;K<#V/vc^*uiqwMYg<Ê6,'8DRS5noQd5_:kc6Ĉ1́X} )>L2jXZ]|Х3Yo[LiϪe8ED|84ԇ Lg|Е?,)kCbڠDl n~(cnVNS wH j4:͒M^2 ~:5U/@5gHM-mܝ}>Kf4l{ o[ݡ(>b!F@=evwAܿ\Q)֏^s˱3Q =e_ST.:aי]{n{~f{c{ס g˝k!}w$+2γ`͐͜z+LH`\<7̐[-i۠w|^AyheRAG$KP#}Z$Jt"B>r(KJJ˶B9J/JOBmkvV $rPCv3Psټ5x7i6I OucFlbx:88/:ӷ6/),~qOY :Q h\c? B tP@~OHGh.N9wJ)^zp_*BUNT9|×kȬNA[J@sA>t6U&S9 Ga09trzd]K7B1!L^Z/6l3 49Qeӻ+x5*,|cZ/ҭ5bh7ؐ.CآOxR̺1~T[8r=#\ϒ*(U!KΓO3] :ی2Ŏ#Qt'!*'}y,\7羏ɽGpIPF* flp6X .wQmN }Gؖip3Zc@|{O B>9ryAP&>&IP,}idly_ڠ;$~AokFS@20W`CG])j~c2RH3?q}Z]k~tSevX-dҭJ 5oP!;!vpD|!aؼ)iqB'4fှcO8vB|vn3 t+Jel-ubg_)6jblT ӧƩuB]*m+oׄ˲*s:񾸃KCnwPB _ rHk6bGW9PL@. _CPKI;y7\/ B,0?A B~uB-Xe^蘒z@$Q-8I~PfS4C^s^C)[1F735fg7DS3IL ń =Z!Kns"=Nxbdch>Blg7%Rs_Bmm&bhY y_܅6?#Rg%RYS.Saw¹ԒꯋaxkHp (&g'/J>>5\_եj2&дZ:c&\X?M sXB<Zm+n_=2ؒVzl# cX38-Á&e70O*yƨm?mJHrus^Sk~TaUR}=&1s2V@C] =Mj'XcgG"Śk6XƎOTMflwqt{A P(WTnHnYjIz'eY 83'}5ɆlGdlga¦nqO.X  gAKbj* yׁTs#9Ԩ˾Ϊ~EƃuZ)|M8' {rwSANu5coN^쑾A $r/@ϟzi2Av0 higCbL:u(=8}?db&|R0hy揷gݏue=X*]'p~iiryx/)1 /}oXk鵝|joHJǧr ߾^l.Ե.Z2P@B^%Unji!5ܚi[U-8 C`\3eFIjutɖ"*1U%LH {_#{Wo,ᏫFUpK)8|m&V\ mq`? %ؕI)'uuz_(]Uݎ6)⃕WX k$>6fMw)T2#ZQgرvPrP MAe{9bIyx[+člsN,aӾ9 )IJl.{rZ fd[8@2n̻@0tr?}x7HbA;|3g:i>0\1Ї̗p L Dۃ[>GWpԎTVLF˧ژ>axyT@T 98o\DG[O)MCL! x5[DdaϬ!pBkp+ okNhSQa2pQzuc,ێ.D" ]\>zin e8!nWd 6$(uYCy7wgMݔ^C -6Y HZgj=s#F }. s1tgfK #L@~4 ɠ,ɗ8Y~AtQ Yy'CwOà,$&d"h^@)Uɀ.L`XByf66x&*R7 *o|8nXH2 9!~Hc;0 ʘدPNCg|#DgV<|=(o> Q<4 Jy?>ނD އhHO)4l=wgj l$'ݞɡ.W }])`+KZʄIL݆2j\B3gw^_İJO/oM5y}!af@0#4±y f N 2;t>qh?b.JvŎ9 f<0v<T[ uzK;odDM%2͙ ->=!`cM2Ƿܩ,#S[Kb0`+wlj8aRx'}R؞aa2܆`*M,Y;Eڹ2!, K2@-|ǘ%݃,(UPA}*a)-#wU =l?-zBfz6CZhZ:@MjBPcKkoT#E̽l1|[D*DDފf)!L̰[!!pLOOSZo,N?UL2kw!Mt>:{``e jr:OsAŭC.'q 9T2VŇ&3!o'Bm?ۀ]{eށ@<̣z~SfBRAli&Ȥ$w[CGCƤd-ZJ 볂sfj|prR@;'C*?#Tg>P5$ Ot>@U=Ӝ- %"|t>tͭ4X(pv>@hy~ThrjrYv/0Aƕd[d*9;}S9 TC׿r^)Zrݴv8|RS Tf2c9@nWŻb}y+F\o |x"-@8& `ݼ\O_ziLN.`hv3e1,2}e29w2sfJ2I]濉\54VfΧOCuᗕL17ewM< B<ኪ*~{Bʵ<"ڛPt8%@->M\?@m9Pl|ǍdÙ˿AO6%pop>;8!| ״H}ұ%,\%ğZ {%(ny &PG6uѯӷBd@_ޫi "aj9W KW S4(Y-TQHpOoڔ{c hn5qeWBkuŕJ026hۋr+(0o_tO0<7".z& 2į @2QʇZ"t$5#OA󬙚%t/x~(l1>3{|nwR&yWfF v4t=W% q 7oZ=#HAX_>ROT®7}H EUkзE2dmɷ;F< Gvɛz1u#Iͮ\V8_K6oڵk0Z?6p,1*gÇsc1KxWԾ:]ګ5O0A}tanLJTyoRR^cGVոV,çuTN׍q8bÛx~OQ\^>?.1]ͣ\|)'(ܚ @M9bv =+ܸն@vNEW?}5H>e7ݷX+; Kr:X8zTeh6 `CG 5̹k'seb߀vtd`Hh: K%B93b k)ޛR6g/:/-rebV&T;߮%?z3 8@4?G>s?ʇK3_b~K?Ʊ㌔۩#BEfW\:ve^wA{TceL~#&N^g;g{0в6%{WIO9r #k4_㞄 2!ԂVXآ Ux(pM(N&YHvc{QdcV cE px<ΎUhkۈ8@ޏc|vb ¿P挞9/ gۼ=f ɊY"C5d\cҸٚx0]ϰH71g"{{G.Gu&N&Y|D6G; Pw/"ZZ%uC0otPOu<\ު͠_/({]x=7V橻]yܶ i-o8ܓ9TA9FK߉{X[re7{YUaҴqs؞4A[*%6;TH% \XҞ/.fSPR') eJf`ӿdc ݚ2{(68ˆctT|^Q+S]uY8tQi&6Q~i/sg}.3bP@o_}G^w//@lJ!WZp [{K.eLh-RX 7S,R@n 6t2B9w:#ؤ%"OSi[A`j\7S/JDIdft>SŜQ_St]AqH˿H Q:E/iKbIa48"J=Hnf[3Uaފ|4*LJ~'utG|CRz%rb(ƑҮt] B&<|aRc:G"KTN`cbˇ4ظ5g6aBk#U;ױpUGefvYC>_*@LDQH@ʳۜOd$QRq8L n9טѪͥk T ^~5 Gދȁ6G V/\ $]{צ5AA2Ͻ.Pqs36ڻ1=n5,=-y|Ok 6r(K5 ĉ˄b7| s$fd߯r X'އ#3Cc/+- ڟ:uyLvoøL+0`qgt_<ͷhXΡhmv#sNG :rƊlߏ+{r6TozgqS0{b'$mRűlՖII`?P 2a3ѯPW⹖;_"*Ml 4ɱ{Aq0<9a oi @W4 _LݭʤJtZUPLlЛofj9FhjōS8*i:ZE`]Quho& wy1^ê.ڹ27% ,%ALKUh"r{L "vd+N1ЉCunf1rTˁ?FMJwCtJ3Z5W)S{,=Ms3έ1mܳkAŹ =x˻K+@ph":I ]`}e= J-W ޣ5e(QPzRz 5hr % O>=p"=zmdqڳ@+Oȑh(OBPRZ;|eAZwZOӼ~K8QAEP}5uHo#s8 oA?' $6eS1k瓜!xffԸysCgPG*)KX5!+{6] ̤`Ey:U1bAPz1⏃šY:Hq(*KX2kF'd߸Wѐы`x?~)۞N$W5Mslj慳䚉$d:tXb# R ? UoN~'e7ǕV+Ye)vB1[o2pje0Qq$uߣ) Iґ(0II?E1O|`eHwh ?[8G;PqNXT/DRxނqJ3PJPTbE\y])huAor{EmcfY$*a}#aV[-N>yRLP̗-CA V~V`9Sʿ>X?7$eZ (+e$[TϡxZ7#97߉AʔsPw4`5!@ˁ}PבPAT*TGn,<5s{^hc]4W_/UJ .x)X<:c.Na퍇-_R9_SAD!j1V sٱ"yي5x,51*(]]c2 sZԈ_$X[59%K( 77/%.'0$̩ ̬ 0Y5&/Lo0ϹcUճQ`IRʧܟzXPxO>]C[iXr#ZIO9 !i-YwKGTWx?{@pZ`S7j%3Z/ni{[^)쇺|jrW±&o&7]1yK/o0@@47'$n7܂r#164PhqF_Lؖzfj?ٍ%Gb,v-@ s=fi^so}twc{_,L8a9n|yDhڋC[CwIo/~ xYK2wc~@u<pz1 _j&ݠ v.i41ұ1g"BlhM򤺰@TK W~F-`R ]$x5]b(B 7N>tR( [#Fc"-WBXE7([)_k)_ !,4+j &ST%P9VC3/v*ebNHԭH)y:*X'A F{BaT O>>uz<!цpFW:Frh: (LN@ٹrX'"^?v9*wwD̺AA:{x-G^Q aS _ب [$cσ^" ڕ2|9 RˆFb,]e6m|{_Kju°={y`W^2 &Ծ봎CB+XRHإWwfZqi`0 Ñv8Ub8`zN˻ٓLYw߱ +|e[(JFc͑58OihzX|? ?k߃"";_sPIb>i3g/u 2ReS!ߕHuh.Iϥ ]WW t (}c9w_HQyVȌ.-apIXjL1L~P+,&4D2_0v=ҐYS5$߾`p!(l[poIJ> ZmI;Ⲭzh+ nڂ2Ԍ/(Y~f(r6*,z P.| MmLdgyD'`Qߝ~iw:ff* Zo@E1g^w- ZOPyl{"P^gMq{ Zu# _vJ!rcxٛyir* 7xs bTQt<)DϧF(uЏ129ź#y5 lg1͸d'=?,/μw=+$S0$]櫺k]XR" ]se޶O0Ch5\k5ύKɊb8sš n:vj}>|.\n瀳6ױ/^P:AcdPdH~6I~r/粷wLǥL枰/8v7zT*Z|Wt# /Ơ];}g 4zy.ԆGDk8 \/]?}8_e / !â(]ox*zQ=W(7ݷ.cZR)$PZ^q̏3t-{P&7 pAҰY٘"9x\Y?N3O 7qNh,np1943lXm4E*ǡDj oPBN ;r˶rƹE!H5e^Tyє=[dxsXqOq/38y.?{K mHdfF:Rf)R(EV(ٲ{;/{Jox>繯s]}sݢᳮetB>r_6UZUPh,TR;% H?u(3ΙbH}V9Z<'6P0RF&CIB ݐCDw bZ_ a8Ӏr β{!#c=rw^ȩ֋= _^(&f9%?+-%ണ'+$St#ƪ3mXc50L1-b}j@اoH >@^O,ђ[\ɜ]F%-Tkltgꒇ<}&ŦZ{?C`ȼxL(q{+\ >%,hʱiّ۬N]U}fВ0R+.;߄BAAs'Hgڛ0BD]PDuYm^~x\ Z1>*,boTmxC:h9-Ze S -SS,NهwZDv}mNՅmtGH[t&`A!*QfLEo{?MT;_4K|-qP&qfQ[opCluWLq&W}ص#d- mG˱DYpNsVO3,c*N^=t\go\]^E_(>EG2^r``e%:a&! \^qf3t.Gi9:tT!.$&Ll-W(p|WGu~z*$Ʋ&);1ܾ~}o zk&6kzJW{8Ǘ_`8!2#bu#MlNz*_<+5xTE"\ /b3ה2Q <& smafW?:PGҏoX;G ,1͙|߻ϋ~:`I\=jf|V)HOu2#5a-S!.td &ÑP;NLxʭ}QX r6aTLl&J-t4eaړ~)!t ͐*B1(8zĒotCӃO+͗~},alH-)U78DY{9 Qaah >(x]sow 9F,6l+Un>yZtбVoܑzUģAZ~͗2l=!yWG- J5Nt%s9&2HBѯ;d'WM>ݠ)*Eإ$4鸝l`(y:w. <8哲`4귰ί ?X[?SqvZ-إ.6$eK9 c5bI"LWDɚW~Y4Ҹ`Xձ(mG؇}q)ʠNWs(IA֪uT:jD*k!'֡BWLwu sRa _]VHM~ Ơ3x/8r] b BNb R&CV2A aQe6 2Bz]pNZ \m݆;%uP蚿<~S{V`VDgo#6=fu]WY-ׂ_ ُ- ltv2C8 X媝[M#MمXk:=4CQH{w}?~hL"?;"Ok(Kh>+f;uHth,ߏCKmuFZ@3G=sI G_ˣJQ)}hK=h>< @o\!הYGV_Ax3Tin-ېߋ8ᝢA("tInrBTyC-ݭcdGGP{DeA?v_<ħ)]]K`,-ǚ.V0'Iyv 3J(~5ODCS-i;$tfp󜆸?X|h\Tx(FP/ًب Qg~@Fߓmn5Ȑ d`I_M%ܲB;/sv3{>d0~8Z* bmf +-{4 ?+-< bUN.|c/d6$^UWmM-PY_T^#_lvC92ޮ;$w/15kr)ӣl?b[]./x X*u4&锖9 bgb}?I:a&:,jgi=HmKMRlHcci!$Z#wfJx?n˹)Fgˍ>bև!yr~P}Kn320}{7,17R*zlj͕qx*Ҽa 92V_?6tuA}s9yIh?uAB6TY<b^m v?Upt/'BQrWMy)3rYNVݾˏ׫BluH/TK(\ʂRJVNCP\4<z9 T]=K 9%`sN1 k-BUFaqBnRRݐ[6MiwW`1XHA| B E .ܳT4PS_<1ў]_S~:;Û[—w@͉ܘLhoiO)^ßZD!P* c^rV ^C8cѻW,oB_H㔿cUo(BKR{J.^q(~=G9GQAXV)@Yo&S̳S1ub҉;k33P h+dTcu7Ӵxpf>56/hvƦS=IKX6v9 7_zE{+W3CgGCO4>9BJ޾t ׇ?1ٯ$n-y'AV3j#ֽ{ 5NlrnO%Z`3E?h{9.M'^qqB Xx b?6RІ_}4wSW2iߐ/n EbAi(QPֻKj CR+T\)9"/ ;ͤ:Tm]1u#Qӝ[v7N@lPVW弦@O6Pgir:ӵ>*j'LueV62r0@9Z@ןNBEoP^=~XHvI4b-Z~HXr !3WCKe~r%p??%b!wCDV-m9<ڱ !CL{W۹/TJMwj | iƗ׿037x{|f*XuQ|O26ęa !nPI$,FҮ(7>,Sؼ>K҇o#!Wq./mmCѹJ|Wze@U/]Py T:a2kvdS6j{XMulRrͬJ8#G +짰EzԋXɽuo!ڧ}ԇل}vÀށq2@WvJ Dx>ku7t*p͘:5 &SO0Y W㻦_RNBj2}~bA}J@N -S˂P4Xr YmaZvuB2S^WU܋Č4 Uɻ(+QpOf# Ň.t@e+P#6t\o !WbQwӮO"ڄwrQPbXbi:4e}r?4?6}kaf(R'ϝcNԌj,|Fk ڍl2&lOPH{&#BP"#>N:b#xo^ıB|׸$68pZ(FHG[RcKir1lNNҳkm?'Lc&Nۚ;bþ9yg*zC9 KTs\"0~uqKcN@'Pk%(#^LĐoڹ'0v]'t>_xҟrJ B@5N9um,\z~)]Ū!yc@E$eLOZdVFi/9~O)E/}㫱_k{3a%XTǴl,v}lxn&}"I`(DzX#M ZiVyr{Ņc[#?|~?,itg⃻'@+\ (٨o ՓTwKV# 13ֺ݃grjPRR,v~\2yxdh3dXw~Z @2PI%qerkLL%9y7V0^;%ޑw* !nYrɆbk ˾8ܽW0O/(;-`Pb~9U/ **?X m7?Ȣ.SE,4R?~A emO6oz#7;8 [jL]T\/*e֝M4w,m#-trA<)QKXwovS?4GM?ΪO?4N*F}8 ⭆gbTмU@+P)ϘIB E*}t?C J;(/\iFQL6ly{"1HW6 Q8 Ʒ 6O4.-{](8Lv oČ̗n􆣹Gb{ލl}˺~ z{{1' ]Oeml"Ie枟x0>K9m.ۅ\0!gv}?TG|7?r+JBlج.ɂnhTRK_E;߄֌9]'h'jWGn(_'(}Ycm'sBa7+ҳͿR `֐VVT;,IBOzӁ{" iP#U~PO"X ߳e! *dZyf^ MsŤulyodr v σ&+ M5FԾ Ff9H1nljUPX<"e%B ?d)mn*tClaMT cXjE6|{s^>>"o5q‘ގϺBL uT9zmMӗ@Ϧ4"U_%LoYh~ŜLma/;'V| 2~L%w >mbRLl_w46(޹[73ekASiꡢB -< G$LYQ&<>EP]"vfG3f=W46VLF!'{# RւNvCm;|" o7T-Þwǡ8!&q9W뚡|Ns Amޓʊ{m1 qSzķe5Q(-KIb֚ΧQBX)VnOZYǏmba'&9gI[^NhstcXYb j`B XMlb]>Sʁ= WY$S*:,9UI@r޿w7By!94ڞu:c7رP/UL)L=616(šޚ6YbM³\-Hyu)f~u$Ou3~o|tMֱYWhNY[5j23_ ^&)z'G['փ;RWb>/zouCgn%#h P1:{kN!Lă_w.[*}4{5zBЍ~.Kα'ATTtI 7=!Ja|iL/5*p/Rۡ,9 X;x'cCS[#b{*Is ]}Lj3bY2 |uwXV?^qP~0A躩 ї(V|:0y{>贕U1P/l͘S:w,Kl:I9^ԿT8|)WI _m֕Mo#35D2ͧ/*=]\ɜ4}w/K f֒ .!]PQF:; \wOY@b曥Vz~邕"Ccwn|ʯV^sn`wՎm/k7ZH~&HݰObN2Fί1[`K:H>T^g%]y/gI+҂L$ t}zޅ?Ou.@?T:ج].uf>W6Ma~ahAGs~[C桬Kz[yW&֟"5ʭ8Bh(l厰f·$G4@4 >[E݈ca6ii-Ai䊕'b,6 Ǭpg!N좃W-Ѡ;lo8D/a^ZcXE.`V?K|CzF~b&ygLں/bHJ-akpmbc*Y2 #WBq*N~K=G~Êα7\2VV8_~'.AΎyRV >t'SOaWo.\Sk '^fȗgJT-me>=ZdeɡgOm<+s J/ ^8fߎ=<.Q rw*f.~>Gi ؾAGny?ՠ Eɽ11gPC6f j3"'A}\WxA̗*2{M B'^b}9LHK O,AlV&jΗC%NQ9?w +T^ssaiveM?烳*_Ip*5:J#̀gɊ¤pQ\Jm {jXi'w38n<9kzgp󉻸Rw2V.:rl 𭢊Yń/ 4i* 6K{Ǎ ƊtC;&-66mb_T!A?I&އ9qTJ ?3,MKyY{, 3.=vhŴaNֱRt@ҫO/GWI ,Rd?Kq-Ljogs26' C.?cǯ2&%c\QmګC/^ACaNcP? :i/ߏ G$`ٟN ;Fd c9 d K$-Gp_(|T J< ZV<\ALF-P<Æ@'t5+Xν2':ɡAjq߳V=vg ~lGaᣞ/Yz#l)F8JԦAĹI85Vewu`\iy:6=pz-G 6̫8R*u;ZgdN#:`N˺CBz\0]n8:*zsnaӞQ*'C85EɎ0t8πX]Y>O}w#!2(p#qS }FD@ jN I,v.wEn\9V[Iz\>Ӈ[I8wvk8w+S^A{j?}uz݇. p!,ro!ySa U4)Ipxe0Ļ9rCsVԐ`I^QatBP LA,T|$2?]/0.xkhcm* '' /Z,0 +d= {t O.Bp_Ӳ` oOT=}D'%'l=hU=Mse(]u-lzQ}&U^ Cjl̽w=?Ӹ-eqqm`G;,֟qT7YaTwyY, Z77!:\!똶|QÁN cd߰vr`r Jil0ڹz'P1a>}WM_gd0 d* l2 7@3U=*N[K *jKJHixH>72 ')z#yLrkDup)u:Jh#+7P̔@v> Xo&PME35i&9ס$pH;l qakH\;m90S]U=Gw24_u|ST; َW12:>9(ws[6ePpր 79E [wv8 V(D9k6!~K'T%һE^q:wRRܹ0%Wr<'<qB_Mbmj@"H=فh"2ERZh>9 Ԩy/ #}>s#9T>'E,῞{^s> Ŋ+ׯw.ZŰFXU#<9;[^(x?;50 žKTIݫ0'f>ⱈ+<}Gz+eqĎ'tk}XʢDə3I4`{6l,iBynyh/Z*8RK}sY5tv @W:Uj yORP8CѰ3}?.crBSPjM ;2w/MH?c9 t3wN47V 3gk^@PT>98s^gS@sd1sΖYŐ}{yh;/'> ,tIH8 ?I.Avޙ+akwqP27áX$F870C*S.!:tU Fɲncj.IkܔXL|:Yu\UC57:ر/j%ؑ@硒Vz M/(HzUh04yH a܏\W;~h({u:P"k@iȴbMVE\tQN*իL{$,bI}Z1 H\*nAQ:Uh|i3\Qf{j@vJnx]¹~iP*5CJ\ovW!?xk}f}W{(Ho [,ʱmR(|t7^h~1TZIshrˀ0иkbs^+WeBJb)D-rPpkZ?| ^k@NJC,dXϯE~Ԅ":zvV+0Q߆-{T{^ˁprN ZGEMvΛXgq09Kb>k~15~7cc@M"o] 'P oϞ?kSJ~iZޤ(`JfUk;h4mƊ VXvfkte?;>n͛b9[Jj{ F(c]7ςoxu[e5إE!_襪_X>vLRݽe[?ammN1|9^ICZ ptOh\j ?U˂ ILgU}c s)sck43#4=_Ynd^TrI؈K"?(mr4~Eg+/AkCU ⺸"u=_)"|^A{hGlP[G#Lj2ȋAsu2RVjV= 堒p\J+g>)'68\`TX6zqBq.8iulUYH^}rJ?~4šL%1u˫>xq$k׵ L &;ʜ23i{T#<}$n愦>ѶhhpuupɛPj^xghL h '"4uwP=NOₖ8 R3T4̯n,A--,u)~:%e}Q?Q*/D1Ξ86yj9WaqLa;֝ۘ f究bD ȋ;4ޒ !,ސ!ۇC"YéSSC*JA]sX ?tD1a7<" 0bscٴ[^r%0ؠNɍ~M.b*eHJK [5%Y'kRI)WN.` v3~3syK)lBofw*Yt~qC"Y^ f{]e!o޲sYsZ|λ"I%@^z&hfK;G¤0T~&蔄7ļ( 5QH"]y #e,ESykVN<ק4?/)[]209FNYd~:"0yǿ+4sG#o]cH 낒C7 y2M./W* yh0_OxKY8n1`(q\ $i(1чf/Ƞ&q 4YZ}vrzEtq⺅0(~w6i6:j=1_2`=Kt>?_mƊTDxix vJ/\|K 3"bL"Vy;OC>]_uCoS]h {c]b5ƽXX:֕S aAGLe&";iwy!Pqc~^4 {?\6#7/b,gΑǸ_Pit%8#F/vBnюӏ/ϗ65!pIl,Fs35@ȃ1+-볹i`*!ɀ9@%SZpq!V7qq5/>X>xm1'~c"0V}c[so]~%y:0t&ƃ}ν\v}X+"4EQobm{ty摘+* g˲`![-b`%ku~*Dc'faz,# rp z kƉZKBhGҏ+oݔlO@>|yv.isw&wn͋SDZq_ݐ DCrHQ?~>#:)  !5НC!w:| u|@}q oD7ðyZmW94Y8  2uw``BZ hJF }} qJ rDBl?EpN9ZooͧA%ZxAV'bc+[Zb 4k 4 d#'ռQ64ڪ _lHr++`),y?L/ND#80! PV6,黉Xߘ>ȪWPDpxn sk8yj-uIr0Þ=HI!yWFPwF2c/筲HFau_Z)Vucܢu6/aCSO'{*ⷭ;g1yRoaWj6]ʮ1cלV `~+ds v!(fy \&ЁwY`DhS]4ǶXzW.W"QS-]C;k38Bώ?|%ủWw=򝣬X{_N`:t<v)_S>70朐ĠdT!ddGm(#ec{ӆ 90DKN kҿt$7!۹uO&dWQ }oXB tulܡpkfW+z8I챷sa,5t)H ѹgh.4q (oy՚XͨOXCazϺ;Vue܀=~9=d1ۮD P -yOEG+>P/qG3VxcA3C0UJ\{;.?%)#$8NxHΩb^P\s%M*,<ӿ˕%Fp@~!G,cyL!5|Csrv֨4]Ј COgġ \8fkmpv3h5/9׏"{vF0 ղR_R nWp(’۸YXxhN츰\5ݼė/T젅H}*W]<wlՑ9 h)?9r#V63g26^24]pDU"zZ$7x͑eԸ].Rd7 0@\4q dEC!>FVTf7/MXوS=򚌸m΃{ީ`h.лr*lP}dA`.jtlQ* uHss)ͷAn<]*TW)ż?A;i{ɥQ)IWV司d2*X`kxUg$YQezV64uLdzh3_c( za1~Ǡ7)Ta?]e?'e"C6|捆;a6ǰloV`AJ;n*e%Bnk,{05"^=/׉J2B V=%a#5ұ X ̽E2_b4~x"qJh$5Pq3>$vj!!'J̕q(0n/+& Zt=ںW l@_c:Px\'R%Uo"O֌8O<`y6K:qo D탆m㋄wHEq|1uVcBpbQ=11Lv3PQSBfo7̷ҿrߠ9ouZs̆FsLEƩ =R^_^P:E ޝ?сڮ]#^nH8=n'>` >i E.E'ږo]ðx+BOyR0Ӽ~ZfIw4ȳ`4( /8}t9 m^#́zV\D۶vpCv .Iaac4pj/_ַ~ 4#*XrrbłkX^J5-kakqb K֒)d+>F/{~Y~kћ(SI?9CRS!tKzW6!t_^rDNAեJRg WbݍDX9b+Vjhѽ{)cʍݵ{^i®"~Sإ *Vbl},=_icp:gW7Q+Ǒ#O}8zi\HGh¸/,'D\qpۃ)XѤS֜rhC_ Nss6؟Q::}%DH +gl^SL$,=WϮ=(Ńv_q%o&?F->E8,Č of/lꟌ̸.\,jpzRF,8NM*b?qq5IZӗC P'EktZ,B]%fc7:-Bt0ѻoBvu.yUNE %uj txL^T>04? OfQcˋĠ;c(}Y`I)$|ޅwF)B#Ȱ2{|vq*{wb0?tkD"g{8Jnyb`@/PF`< eYwY^U;?zh>BekPoU! ~  ѮʇH/BloJ[[*%OAH5OՋ&%X59ꣻE7d)Ṇ0K[P16`ԅ U6g-pyrlB:ZC Ca*(;釧P,>Lt8}} >,@3a:]kb 5F,y _!& Dh BYh0~?{ oakG=gRġC#NX=${Ux.̳+4Ue;F/f GZۥXZPS M Sw֞7Hh;bhoxj'i >|ɱҁ:f/6wBSZqV)M ?.ßsI0l<)bJme؃^;A҂vبsaQa8ګGe(0o26oF7FIӪͅ'kώCTȯ=P&4tI .8֎ 3yݗ4eCz޽hqVPϜe-rzac~/ß3hl"3G ƕ#-aj ӷYc;LKt1= M 13qk#}:#l"Ir{}i>yדx[Z짧]Be`ȎSb.j[nrjVi"5ag=ǩO쁤/C'NPɨ{h 2JVSͬƴKCn4d4ᕸ> \\)#;VPqQzHkmN8A9G!Ȑ>ES5vBSt݁wn/A ps?cެ[ gdblUsaՆFO _`#RAX~v\rvBM̆M>vZ R`4w^A৯=ǧy_|$ qX̶ĻG!y.6h~9,4>Ťe ߍzUN&g-.=GYB˶P48 q[W ;Pj|C=*:H?F}qh)Ջ8'EA*gC(ԆP6~#{A,!&P:,g<ZR /9H->OSտCBz*%m:˳LO,c ї0 e}b>–w]]$&( s[D J>P{Cd?l9嗠Py5? ʗ |Csҙ4z;[}?CPEm .|CPc} :p4P/*To-? o,SNaN\mthLߡ/mj3' ^0f sj(rz@t6̡OM_,p_ ֈyYohgUN9WazCT\|K0 Cl"b¯,25dSӆ?17,,BCg!Ll7+"Њ>&$ON@ΏKG _%8稜E(9w͵h$־`݇Y䔶@ИAn0ߜ""\%ⷢߵVg XŰS蚺-MC$k:taMeQ&I9G!8Tk%1تnBcrʊ[!f`xw>Lf̣CZ'EiV' =y,JoBʵ{OC\ω Xw~mKzVJ ZV3PXGBHulmhۄWx`ַoa:\]TozisVƏaZZ~uC7!i5mj3ݩُnA!RFU,]7c'Ae.9R&\,pp/ S<?èf_/y柠 %R*3epPq~b4tyK}qc|aӮ~?¡<Ͱ"W`T3K,}3{g.Km[(((R-'/gŊgn_a EF 콼ଂEa㪗ovuh1}ֲ2lbi_ZK!1Y%AO߂O iNu‚-̈́YlݰieLDEa9v v`Oޛk Z\!6760+~:gڒЇ0tո8{DB#F22_i KOg[3ړːNuH=IhMl 栍] miClٵE _}#18T{c?:3<k=G!7 0H2k;uJlйlBƵ =_:Ad*mre'p)U1CagĦwGǰ<,(v̖f.lG$P5Q0V4F CRtMVz3foALx2|*ݒ0_kd= "J=cM]8.A1|WXIdGKAC[ sx&m|7]N Y4 D,8CO]$-M5]N[af¼S}1C`pC9^H@tXm+8=E#I >qbdt A+W/T"k^<^Eh#žGlwuH@i h|sJ?u{*{YT=9KS`xj .tڬuR W^/tFj2բ y 0&9s}oqneb! |P}(zҎ, +phV>IL u%aClb,Ƒ?ڲfj^,\gcϖ㰃n?u^lQ:_.w>CuUE.>X=t \iڠKݒf*4r),J@ʞjLSg >'C}a%Csvlfzw re/A#q-R  XfY'ɴ;rlHIPIJ?y^;k؆q>9@$aESΛ(>aeB0p0]Fx[z$+@0/UIŎH8x(Oq`Kuv}McݩmV,ct$ZoQ߮ҍ;P7#˗?ч{%\ #zpd蕄[,q-uz6dQ!CָmVh:vBG ](&N W)>Hs{_}4ƸЋ'}VМd>~gq4Җs rհ5d/@NMBy˘D6-CuEEnYBEŞKXdžh~bG(/M܇:Ӆ2SbJ2sRZQASYC%WO˹8O simIhȏQ \E/_7.k#˶\yE>cP{ɋP};PV.zۅuseSkf}܏mРV!S q7nY H4_IHNI=Q 3Tx>Qc!S KBlJ+i61\(ØfaI,*B̎qdmasѡFg">`j;qP%3kx[{-=$b9!ې^2)V ce]p3\٦L0"j7nߥTW裎eE!e!By^nݩTUD<D@*Χ2'1hґn%gr_o˲}S^k>D{0#]ϸէjh0>"ΖM¬Q@1h~/RR8 I&khum$Ҿ`_ŷjWETte^?0B7O^BnFYn֯?H|FŁ6]=I1[x&Ua5 ݽv\]Tm7D\HJWvz.Wu⿮{*w5]rLƸDuggX+Xk5CBV;->8PQcdU{L5) qf`8:VqEF?I\utiToC+ۮzظl)Lj™2{yxH[jNKVP'Wad^m58J@Qݝo7EAS\mY(iV6(Ŕ=p߾ xˁ b{#0X.|;5@~v,f뜯E$q>vsx$"sFE>5T'U,NhȳreTs43ߓ[8˔L\e$ٱ V=ES&l ͜yAl M~㽂x4}Jx/ct f\v4ۢ(S"[_`GOa{U#KX-:2E=ҊbQl9"ld+9(/k}/ױ:D7 ΍zW)Q!-l–i6cwGhu*t6ե c3xS,E1K*xbCkJ vl!2GH-g]*BN61rg\.6Ļkrv՜~YbC,~z 4IJ3OۧMAEag+>n+|pS㽾G/ob#דh$z,=3O^M/#5U=J.on+K}LrŌGX`[c=!I.}`Bl1° l.s瓏*U5)?!S&t? sٖE؞1%K!>;O 1$ H a3ݎF/[c7dpHn=xpz_YA{IkeOogWB^P{hݱw oKo@[ɣ2BݙJhlҮn^EקιwBZ=V1<oBRϫ!=xcfׇyP&wWl,4]:PgYJ. bJfQ$'dOB-W;~XsBeW E("`y\_8AR燌>@ׯkD|8όR.>+¦I`9s-G`fr.q@.e2+`NPVE)~Tzl ո[,S21ݱ2Ruq ~r^DNEe ڟFF&/Y6d\= ҙYr~V5|UWw> CC׏i;IIn K) (F^;55t$=I˚ѥ|P-ڛ@8!ccl!3Ajf!M3aI(ϜEcnMܣPZ:}[REi%-T*V^,距{]0T1!d')"ZPz(|=c_4g]}+RU3=d &s8gD~RjU ,8Y^1'hZUepvҐ3`mY +Xxp~ܜ'%`YcB ΝJ?j SdRKvhݣ8X8O;eOm.A v`} 3fLUˣͤgٍ.bwi[{uU&@yBo7ļgp/X!)pn "IUQR[:x1@ eO C'ބ 4/ :w׉Uv09vE㲜ݥʿbȁFFz.[^.tufcQsTqR+D{88YA𒢬|!;o_{dkd'W`3S_AN'K6M0s0käXgWq,]̝<1 YYoΞBM $o-R%BQ,t:.WIiwq7 6,UλB)'|k;_Eo J?!Ԃm[В* I0EV;`~&?K{|LM 3 |Ek`9y;O'"d6.l>de' no']EpgDȋWyuWàlku1zb_~=W@h{zD*U2ص1ag&OtIdQxDRRN]X}sB*ګ!Qpa lҎCbIYWdʺJ >|tf}&1$zWN\2C ,mbV|yUF.zy8;$;yDOj=6afgs*>$L 5dPw \BȵQC֊M6ZCs!*m(_ɨʁ[e3PKoBqd<9Vq151C  0Ua=7}^_-i;7'RcxƜ.=J]!Ka(:K11HI!ڜDzʢ2|LwBg!k2q38UEF ׋{0*LR+;@} i<0e@ל%q-&Q>aI=Y3{R&+v.L9솗;fh͡hvYUc]"۾IE+fv>tH. sG[ϣ(8ޗ‡nw9,alj>KOzn,jDŽlФ_ھRE8 +ʼ pz5zl/ {m8瞯Ϯ;i%AqGbV+!xl?Vr{= C{pd[߮ۚy(ivMc-76MFrA1K]zIa#3dIwՃrOezgSs_Jr6ϴ30a:2>\ …??U:b}3"dKnk'<6X hzT*җV |I! Iez\zsWuCRn;÷Ad8!5~>`rcH_|Φ9y4,XZ? Y#c]J1ʄu i:L<Sg"祼H%RJWՑ*|_%f}?UQM<:A q,>C ߈*faSȱ|^=z=h4Ơ ɱOy2X ?,U(db)%} >& `?T$GAQį}ФX{غ*ed!ZW׾!hP="J?pBΫ+OB *9p0|ɘ~f?b@aQÎOЕ: X@scR 1=2n!:晴4Tؘɔ3r ʤ6o`DrmW+m[#wc 9qʮPĩ<ٟ[?gB qf}8)9[t늻: -fk/]`2੅X*z¡© 9;.et߰Gh<2i6L!wڱD$8s荟5!:,F|w{7@'mnLnc ,,XWAwB9:'QĨ"6IPnzUhIjYDž!Wݤ(d:Ν0hӘxX8PԆ{=ˠ+Y8&|'뎧}I(IVJEMF() $&{ss3٥_s\z9uh77<9Dr\y֩zkC=hE p(3=ȃm4dWaiZѓWgI5Y]|DTV9=_YXF0?SWF "{%ڌ puZR'HIõ?u-xu)IY^¹^"[^(A>~oXIH6ɴi厯đ07S~aƌ0ga;{wޗ'-,!-mmu&dKiCPP}R=Rh)==lvTJ4:l÷#'J'3R\VZ&ȩ+ ȢЯU6tTsQH1mČ@)&% jzC#$8eİEwL%iSN+7*va3$m>lMkG¹<C ~wPz 9 9wդ QbjKNX4di%Jt R$1{R1(+ݔ^5|l#D 3c[c]v/dGNuCT?pڮ3Zs] *܀ kImU u=̽^ `Oj\àie٧G;/pJM]+W5&9xoׇBz**ͺF47v'5mEņ 혿{Dzw?^,_boO,V8R\jO#n26-(y+Q8x%0CKkpÏL77= j 6w0a)%6? 3߱¥K1kwp>QTW"οU+{ȤWY$\>K1S..<^toϪ$Z'x+V.}b*|wt36 959k@t:2)KBSa~h.W-,/%Mf5·sM՚ѥ%hMp2:2C{ϻR/P~3 wz6BВJctYBO㰛($i&kC=л@)ݗ%7@S٣gpԸ;4+Oa^ U(a"nN csPYe+(|qkDQ׹ GsMWyCSyAz5"hL0VI'hũƘzq;>Ԝ-h6RPv0 ίnOU#Eyg:"Tʰ]e<61C2[湑SkU*¨d8pq40}Me7Fw/hUՃ(w3Ͽ/g81}gmFàlaUY&B .,aꝽ8nI *?og(9aJT7'CVoF$Lr'P+gP>kX{T5 Q</^(_ X #7A(T {-*P ~f3]0Iዔ$.j4|h c{<{&xRPB{&ݘv)^s*/BeUvLz Miʔ@oS_yڅ =\Pelgc_ 2IOϤ@S56jx_w2}._\M÷·u`I4y'y,\NόQcoRN*yc]]);,1h מ:31©,1L(~޾$y7'HB=Q}r$nsbIh3!f;߅AtG|9 ! QʖO)w !bҝ u6k>Bo\l1Ajt8|NH~yaۣq:~V N/&:\7ޫ3 HƳWs DRRӠdFs}v$~ iJdPag @m_Vvjh 0*%h?T,y4Unyjȵ2SRw*b.`jl#v}X-aZͣ+יwl{Nb̦?u\% g[[iRqo?\ioTU!o_r_^k12xTu](g[.C\M54~×C.͓95I濵B{,1y *YF@+MŃ-)!=0z껏hE_5Re|wڲrEY|֞ek> QT Z{u[mujCl~Ƴz mtץ~ ;.Y~ MN06OE,$K22[϶ss{> \֊[{>ZCެhS;=$Z5/|?l&[Xı^@MG|oOm1DP#ڑP])tOp Auݖ'tD?9%Q7ʚo@[^GF"if37Wn9 s!n#. UӃl%5w;{j}6I]qKg..$6+~z]|6 yD woyEO aF> l7Ն~> "PB0JOܓǏ0qJ@rmNBwNcoW|T!Fb{tS}J B͋šJPph.<'6_JˠPMnB2n9rLj͘Q$|5KaI -[wȚ 8>XAk#oPat{ dcN`ؿm!G=Q= |n\xSVa2V8܎}w2:ji) >e@J1fyxh$J{@WB+ 2&RAcB#ծu@QQ+Y:DDxG1Im]Zjhux,sC۔t(ZjeK2sxv8/ׅ'aVODpڢ͏?6X?b6ZcqAt;}qX,Nӯ `8FTᆵJ͘^s velyU[&.{^3"Crv3N!A5R^nfe5d:^لPt?U&`~SKX+$#r~bzչv! y(Dzvd/I?#:'OHtԌ*3̍/0*D|%* U 2`dLV{?Ymbw?87-/Zq} ;g)2ͩ+ؐ3_ws*qٹ\GvcTo+揩۳S`{`466u8R/E?`Y9c˜zQ~-s[Tƪ(tTg/3_$x? y9Nt 9w YkQشA}a\5mJnHO,uUem/W.2X;Hc?V]J]<t0sj0dܞ8Epv 9|ü4JVi]ʱM Fy~ů5c"Bu)(ym%@e V H{2^udpB)#2?:A{W,n}Xp0=5S ̨Bq­ gIvt1Ns2I_}750&t{H TOYoBiH9MPtXE 8_L2/qNtՕ:lv씏;1?rkT|ұ?U4$]#2KRoybzۚnsXGq&,ѿs1hyX)b/tlx0 *Sn{f}[X8W ӈ݇&_Î#˟?co jYeIl\ppέ[ZH,8K8m5s6.FR\H s^ܙ/{XR?[9~6vi:hep|;h_Էc px 1a O^xM=-厱qwCi+8Ω0?\ܪ?65y}]׊ ّF,YU_-=W(0vo/%Z>S 5NCeWxhSwly;.yU`ϯ—:IF(4}~:l,̣<9K 7jxmq COU7{/d`ܵw.>d8~_!~<[RO44cwbI::ۘ#+rzβ)qT{)G' :x<>&8AJiܜh5v7̬K*Q;  L gVwqtd0 ?'ǼLMm\[C( 1_$pSRݡs8ķ?}Yj^ n똬~PU{n[?0=i>k__˜?)d`Sqm}Ls`vn.pH X.3s*Xfykh`;vfi'ac/?Ql޿eu h,_my%9^^}3&Tib[ZmpAn>Lf'K*t0c4qUM U^fvՆ'MrMZUsy>i-`Gh91UOaœK顜M[] :.^π:&`g`v75 2շ&e*AY;,d.lcs}|-X_~}QOUOo7G̵?$ԇա=)XiBMNm!SQ%TcB!RgDP޵|T} Ƀ~^PGHz$9$`o cO,93y*UFFB\Wnߒ$ɑzgЩ[ȕ(F{ph/8s\֒8-4:vpzӭg:Cű7O?#?cVwgɜCB_^1->(i?>4(P~+ H'Af0H Q6d`bO1 ȓ_r,/,rk"C[ U[ﶬETIL7)RbzuV9ș8Ϸjm %k0#xFwc)?Ϡ%W=e<?e.;c|åO^@ϩIFL]L(jYcڴSO>@v3v6иL`dQvےi,8kL({Hi0r8vһ Z?0a_ v~j ƹ>##)(::`X;UuEC7cq70 M~﮿ Šk b!i%!ob7yi 迋5ESKϟĸί0uEQ${xݹ-+ńJBŲsh͑$B]ǨO VXKE*1}E3ĉXn&r\Ξc2[LUwlvWbo bczu"Z]eς 1ryL@ 6z&XWSR}2kK`Q.&{(3h#L}ezqq8b* #W,j>FFCPy]9RX5*?dXN>BO}<$d}O_Mh=zzy&UTiNjQ;oq$WuAs=@~BVWhPʳgq]R??C&C|3#r"ijaZIN]X[o?x[:WfNMW^xGZe^l&5u=xB+$K %X5SfkۘbqB`a=cD!%ذtzgO#j3Q^>x%f& ONn^- Ӿ7y맜֟-1YRd,&쳱LOn7_旳; %ՕNbkʅ~E5\-z?+/0BM~a'͇SPb<4O~^z]\MF[ȸL1T]ՁV[_cq,m-p8NCRvP{[-,hfQgG6?28,;^(Ej6l@`JsB5FczSh.$j_ZLK?j$ ܑp}-v)r9ae+BN=:&0|7X3{ cmA3f~[<.뎜ߠl4=FEBDB9qcxyvz|2-P P`Iͬil5OW9 M$֦q$+';W UC |$3,T2=v]8[c*r On a_EfX" Q`-6+i@*qJ~o|2'A?z>{r5STˇW+XJtm69͖>ʢ"٘X0=}biq WBh>@H2< A;&~X#a9љNنS>Y^Tലnt-3 _f`y27~ʄ#>:kXHCV+4o7LDۢ>^i{0U;獋?ƈzʿnGIo@cY kGO5be^3I]<{+r AǺeUE辁iȔWr<5$4^6N1>˵mIvM Ă4D: n糐g`6EN B]FY!U>-GL:i;b/h=uRe˄[ obVb)씜Hcns,@q#^CJ؉'i%:r1EJ?v=P' &{;ikW~O>$%ȆJ/~>5ĽVc;u8z؟]]&^}ë7|7z׮#}:kq5=}E=NzeaћaX.pm xk|y_,2o\X!,KͿ%;Su\P~P`oعxe3d{пy4Y!*[=]#ugޙ/j`~ή Av:O҉:`5?uU<9'x?sn+zݻk~ *3NaUC =\/[F[~8lWH5|\}.OV䲷ЖX+F?He~?+V, 39l>+n-)+dOZ̘|gK?ANfE|'Jt}Sߪq#AddMxEdXqگKreBPG=5tq 9`Խ5 1=+|PЁ E2S1h9v Zf|j'} kr٭h[lETaW1Lˑ5]V')sov[cNbKiF|cn]I_5Uџ)S;K2|$vt*i.%Bw\ݯJVŶyGcifYVL ~|wC_ 5R$ɊKN__s wtMJH&IAv&ΧCR4 Sq:݌O,|DOc~!̽f`SW_K:?W b\f?i׬>{DfƄa'D.Cg P}s<)&WN_ڃ#ݞCg…OB=e8p=kD2~0Kl 8=U9ciqCV˺ICjAw/p{T/3-N'NbMïߴaJQei0a28;],cjt.Ksf;PÕS'}zc:ii!;yR=I{-ד PzH<=_fD@d~+jG`N++KOr~k u\a Z^gBxյ/1AR~Q T"jR<:*x8N{cIfɓ4WA؜i 4~~!Tt<Ƀ У:DT":5X˔R,(_a{1VzE~Sl5jAsH5~/W^ 1;:ZV]nk; - \b32Gw!hCJ~A,mj9-F^?OHA9 DRt$?o`H+oh-NC`\˦m9aԒ; O@}`Ѯ9} i^UAø.W){ 4uf:t`&hPWf prDB׷D0e~:>쟯iacP)sĶ1joÑ@~|G-ߎ݁+.Blqv(4~.Ho ɇr*\|r7U u)JDd0q=u^ML:^_8J ^lc5V8\8ҊMo{ټd^!c79=O#k OSy(5N>~9)yk]a"AJ>K|I" 8wXe\s; 2DFe MAV'28l2uV]l 852P}El㥢xp-$~?4gT\v Qj(73D{j3T5f%biX~\c`n J[?uxpĜwE OxO3Z_85$ʊ'UcDk1|:`uu%~aU{Ó@` M2 GtgiaE3ϾVQ?Pp x_yZzucPIҍ>HpR8-(u>Dݼx's)_w!@iU5ma>+8(VxYl$51ٙ5v rb4{F@zv+ -"H?i"Xd|+SA%8^T* Y֝7)r\bT[Y79 aئբEk^X 8j5'ER^ԸK큖Pb߻]gL#.\W@$-tyt FƽJ!Rm&>"DcoS8*(³AdfbFBg(m&@co{U<;^V^Vwa?*V'T<"p[":~$5{F9-Y<'V82%-juXpy8x b44%;GĘYc3iiuf]ќ c: b+ϘS;Mcթ~z4-vڄ},|8IZ}v 86(ɼW+θ/ cS&C .CKՍkNB;$6WY\"GU:ͷm[Od&0kE&%h|9y0R` SXyKf ܆1C2ݡ"'HJ*YiϠ'ukc-VC Z=5V֏=)Uo,׎0Z>ktxJN>sȌ dXqE}u{T/_iU@Ɲ 9`t̿_V+>aEZ %C: o;U_Gns-3V?KJIvG+%ļ59ΈY5*(DEC{Gt-ZpLr9V!}Tt[ZJ>PπGDR JbH\)IrVi7Wz7gkNkâ_Ao[6Li5h޼-0X4'Tv> Q[v+rU|A"^?/ ,< 9nM 3=^w$%Iy;vaK$wWv9| 6%0VȖM9eBmTcG>*kl9q/ b "Ptƌخ?PY{>@i6Qm$ py-Lz;_۪_ߋE43T5PEP|[;@UC :->)2 -?|Cf }qY\SJe>bJZؓ^acwvn6{.!7LSd1Ӭd@2Ń_VHJ.AԨЖ$1豆"h"zAT0Ŗ}f]Vw9V~g Ei{zV B(㽒)H`Εsd|*,]Um54BG(](a[Uy} C>2[b7[t 'Q(t&I5B+0,46VR|u*RT Km1^P/C-Sa~3 BoE,8d/RAdmzM勜o( -.BzP!S}G'@ __!JʅU X1iE\C>)BYEC={vd{/^ʂ(OZFOE>Š{5YpHle<źHpt,>=ԥM<*'.BIm{ r_ȚƫB-Qg#hnW4vlo3k{q U}5.]!{_TwϫojEDPESPrfĹ"E+n8iz2z&qeO1n\u)o{# eh۴yx0:dW*}$Fɒ&) [hCϿb wғ'u!;ܼ&PW;}J=^BA: :t2`vC̑n7MOX凷 7b51Խ( v~?qElh[Ôuj 8@|AEz I9ў&Й?1wz|ȞJFۏ@ٵe]4 }HvuYACP!/s~h8]9kB/Pdg$Ļ1%)`|F^zn" >P+KefL`dBXFЪFܔV?CGbf>%ʞ2J}ة] ۝L|q"͑|Gf*cy{aCb[_4?=q+l^ӃVKFЕklFZ:ЬJs;g>5i4NR2>Bq,P?DOO>ΩO!nKN')Œg:~LTe +`QGO/fq$uB*snXd@XHL8U0KET!تkH@F)|{0 "h ^_LSSCXG]{ɔjJf,V] ׸%ϥ`itۚƭOxC擳aPI8m 9{Aʟut/DaTimX_-R V|KYNQz? mI̡Pq@Hs,3SǕ!=zO:x0[9OƼ\.=V]̂h.x`; {ϴ]zvFtfnBAtܭV<`ob':v>v/? PnIF;)):\A];l}uy3 y"DN !(+\rˍBF2uɴܬZي N=z*'f_әW_K '쀗!u#5>LJ9嬠E.:K)>~}AWPINk`o3\$oC0H{3sn`+vm7Xt τ oBgOz^S,_"\Em\i3R]SҮS !(+6ʿ$ߑAEu\\;Wu {^Kfmn0)?wBoTVrjfice$K[BcO{]gE/Eq B=Y[ޙx&n8pu8#Va}Fq"-K :^#Y5_M$L>Z/=oذt*VOڏ$t~޾>};v(V3gwhlpz%-.${[26s8{sc5su)Sg%Mz i[B/= _ϋ2yʄiÛ;ߖ 3].hdʇW)QuO޷0h"j ɩخ6@qZTn,_r@MŐ͵&hm. !.ȗBk90ts:_8W=͖| -4G⠓VjzA?L8jD5!Tڌpq/ؐq"F զ1TQ-ڿͅG+z!5Quڵ/u:@ Laqztu%oA' T2f.C&ٔPt !-W֭oE}(4JZg2RrU8$N-06$c2Z4)XAT-ݵ[3}'۶/90L` 1嚻yJMD^L˦o š*4QW[M3 #6o_Ġs1s^tyJ~Ȇ1AOܜQhx .-(Yw~I޷f7bדK6=EyG׭!8 x{5/ ʅ΄ (԰L F;lseQƑ,#Jc$h'SU%[A{m[&],fS\ЫW^| [F&XʞD=]aú=13=zھv 'lXhaM߽P5kΩ҉w_P{̧ki!"+w#=ʮ\ EۇtlBKϨ`õ.JyycUr&vXry$=Sm(%z%d;"6#I[ϯ˦pLIڅec{N^mc7RBvfvɉ 8[v( 3Pe5Ě#nn!#aIT̘ւ(ԿBr{M@m;I:*Q:DMYCêtO09\Kf28Brpm{)jUn\]K NOSn_Źȗ5םq3_f)=g}o ޜQTշ_׉<7 \%{$ulynGa҆T]X54B";?eM!dI8HezqO'^ۼ9z7Ų{]8&v; czwV։jZ Js"X S/#]⻂Mjl޹o(kxk It$G%8ڐƆPb)_΋t΂RgXeanA c6<%mĸ#"qQLEEU;g`P˸ћ 'T3 ieԄCX^p=>ʲC}OG_A?qT Y`A6 !meZvT׿!? M&{w!;꫎uu_Rl~cJo _iz:TmeK1|B#L*? /*,B?{&BqPh,Q}Xr;.f ]:\Yd:aQsUqFpkAI]a?-l FKOF"lY8l%nVVTS{kCcېbTVY二mEvާbq9ɰDmo᠛dI9]V߱q389Nv+ΉOLtxllt Q!ЅQ:haP_}o'5L,ጘuԭ"#Ցd7c1m18y1&@f(L2LpĦ_Ogaס?rVFJZ*A'y6.Aw4"MW=on_v#Ə/!/uA}ƴxx Amibu?ŒoTҨϗÐ%/O:z}|cW񘆢- Ϧ\v< -)j9۾XoR!1 E餒jÞJАkWqqY͉;c)uH> >#(2)17_; K%)b_ۍ~l~tB΃y5i8;߫}obKؐqS1LEa'u5đwt,g i]?r/U!&:dH F3M7r|;|{ASۚ4SkU{",,=VPvCVt JҬf׺A+=]:h ZkC%1{o>>U(:s{WlC݅eS3CPf7.Xa-`@̦PQGjØ>A-XoC^ *WMs[W| 켋wD>Vh(5qG+!5WYK='I 9tꭓbv+N jʆ?qw$>w'7o>$mȤ8=|, "VAj۱Xu3>0k9p-lWY $\-ӂwLK+D}tjxsFup]J}<\w\/Hyo<=D] dA;r29к:`$V&3,D _0?!t}!R걎JԃN^4})v{-@ɱyM5= -cB9KH֕o?+m76BYϛ)60Æ7XQ+]DP.[ __]6sz~>^YW͐Uc/M: VGwpQ{%ÓK#@8 Sh؀sw)qR}F<-aV؜QZ^^{ws| Lv3dCK\h U&<îk6u6ǩ[zŤ%\gg;/AQuZÐ連u vB %Z}>'t}^m,Yɮ,|c_T6mA-R T0?$ψ_0rGt"*܏͸ P`UBv *CWr7yU58u3췼ۇ~iMv<ﺱBфOc@IB&LseP_u&Zҷ荩ԙrѡ@뛑ʰ5Ƞ>ل<*Ar0X oHR?%g\{ѻ`=&&gDSӉ>P0swٜR"ͧm1솜K2PY@*Pg1Niٙ|yxY<y u㏯AeN;_|6y +Xxg9ۇ.AxH=f1 .:ФIvuh):ٿmb^Njq*^S_f1ydFqX$x`*"^>|:jIQ`ŲQۚ?.u48<<ū)v@Mo&c1K}/#]'fޒ<뭅gm-DZsϞ`3G1m94yN۱se&?S^li?NɃ +'^tw""(0Ͼ7 '.xߨk%э}nh Oa\qtC(5²b~Z76!\~o0ȅ%OMʼn4q. 8.ΡZJTq  Ō jJghU 5sߡgQzI;ћ}~B;K|ǰiL?Tcp~Gj :҂W( ^\s &T0"EbE,ZOlʋbhJom㢶|[櫦W·澖O˻[:4iCwM v;bzBWFZvhU |u?qӇa[Cx ]3ue3v)Վ[ _wHw9YZ$UrekCݩp1|ܖ#iј-ws دLqUg0Akw6P4J|&\ 寫$. :UоўOIB37@[C*Pz0w+Έmc٣m׵Y<~÷Y(%8S6A\Z -? meyS 9:m/3ИB*Lc- ZQR]b:rm*)a'C >["zWeq_!Ȟ9Mgߔ_Jٜ;ur?ݘH, -Qd1чʜ۩WJT<+SKPBS HVaE6Ϻe&6#wsB8WқsPZ%U)tT8 G.@x{HG,%8JA9cRs~'9يm.vWLlp>wԅҙuOrVR, >H%s_aX U~\N[nzyy[ҒOu}%Vp>6v4986+nq MGeS-&>K}{?M_6{6}udI뱳QݭB[}~2Қ#c;B(?"1rX\L`ˎ(~py߇-,9\D8+WL} ep*" ௥UNSlݷE87'9Opao)7ҽ/J›8S"E?DJcsOc#SJ%͌.XqÌ. m{>rs~,mI`n~2S+L f5 0b&+Og=/!XSr-چUt̠Z:C+ OIdE`T%¾!1t9J} upm!TPRT'3ƥNY{piβy^Qd#]f5%j.>L=vqo@~ ò3 &RLOi/'j,c)g o?IrvBp0HdV 0hm5wT bЖm/~Hc7Me_:9&9M xX|wtd~enjQRK TR,:ͧZ(Pw۟l3=zیF4y`%-{'-jS$LܖH.|8ƨȊ~T޲4a#HS[e f_/@4nrr)1h:t ]jm_kl j*`SS|jhϠ(>?/m|PI'(69r|n= -)cǰjnQčP@yAC^I0aA1z^*k(7?6؄&wMgZH# >P1'rF{r ;OZƆ`Q"ysy(ܿJ]"_ZUc?&π.'c{Avh}v,#|$lHhX5oFNآcN}(ԧr {uI׿2fOwj=+O~I,%xQj|<weI,:cviN~ [#Cv"L8Q:v~ht|݃amsܴƥ$J0ށcAX֐%t 6CbH1V`0x64sKX @Z[0Z(/ڠ7ĻP3tN~厃7K/p[+7, !vDoO}ӻ=俁l#iۘq/8r3֬Wgen[pc%v`(ô9F)eL_埱0as)r J\\-Xeg= Itdb v/0dzn\Du 7&<w)3 Zbl>q(v 4e:@-Qy>}|#!xX3TԓI:CQ1k*#jRծb,e2>23Wҿ>ӆṫwoB] Q)Q+A8ɯwUo* jY)h̠'7"\Ut¿ƎGbPgwPuJ6Kd ?'vlSҽ%ɜl}κ~w[|s$~z7xZdÅnj:R8v8k<V58Jg(4Wϴ`Mg}!XmDuK.>g[VTCC6N^"Xyb/uCOY'*@l3ݠ$I4EnberV <B0SM&Xc4C9B7R~HP ?} PG'wQGO^•&t=U`aD 5Tj B))$ Ja rF=}Æ8D%> ąׂR!†~Y%r1+]Y/D.~lXg x+I[^u7MFaYMw-j%S 1DZ 4W\ a=ɮY56*1ibwqѭajb9÷P*W m*OVI='槽X%R;EI# /"~ B$ +el:1JaIkc(k+i9˝j p߇ʿYO!ӵpyL g "N}Ϸ4? q3-tK:m&8'U)`tjbzKs򞅱~6PEfwEڷ =6-LCM`ʥVlzε:G&I1\(x% ~<^] 9ZRbY]5*',K;~Ƭ#ZG5zXl}UF p<~yy4>sŖD VQRBGk C f9yq?̖o_n?=ZpRi;Bk "oN+3QzW51OcS9Sⲻ1vNxY^(/$sN8 "/lbeA>, ;8<  W?xD¾G>rܩCi'*a:'Ha{F'j: K%E-k|eT#=]| !ɾgziplC&N\?P ><[PL̜_]$+b̺󳃸k jwf}Lg})e\E3ztsUC#2%]jwW"JocEᬸ;2-.ǣɞl݉^({-ἼFAg /h<^~ႧrބS$pW׹׻8'Ld>u-VGcv:1gb\E%%bv̯z,w Pm?|ݔ(цu6ZکB|H JqZc^8lcf OHx+FF@Gug˱=bp %4x# wÃh.jz >y BK~ȓX9%9&dzE=gkRߤUaHYЉg_UiJg!l%< qR?@KOґ[j<=}%t$}oj^MPD fzhx>xsej`J>2>b/ Z!7m =]wd{zR 7fvׇ!bwccZt oZ`ʅkWO> B,.XI_@eߴ5<$.m|qD6JCC={ta$QÀNP~ߩHh]`W!/yV ʺnpȗ`Gv* 4S1*fM=c_uH]m~qA]x,-u*1$߾BP1q>-`حU~H)z@ukL֯h[gDTW"C wJ6ZB#OQ6,[hV)T$ѻ|u/WwaѶ># Pr$@@B|-FR=>yNM[J)!gMF;Uq_L!ڃl ~F&.tQqCDÛ f5LQОZl(rhj(B3RU9 &ތ m>+3{(vȻ~) oOi=8 0IL ~rM2,W"$560 ej~d4@ȟYŝɁу"=/uPI`bjLs7ws\M=J'ǙH{1Uuk"P`2- 0JpwT `'y}c Dڳ8ZaPBX0X|;^1lXl%_F"SFf0z2OcvE@3LW# Ǝ1$_|!P{ >ҥC:-bG;pg! ;}qiTPqOPGTގ̖9J@*xعSP`>}_ P(Bߏ8^h~׊?Vg7wߗsowfb5i ORjnz_KC+P!!Ѧ&Yc_E_SODWռ =|8 >34LfChQP;zjF];BVmPIЕ DggRj,o5ߍ|} oExQvWfKvu^?&*ܼ-5jB߉# 1vDTi*=IHf@"%j!Ybi!CN;7Mӧ/.3Ōn 6)}+z*wn^Yj/ i{vO rk?ݨ䮯qV?/VN 5l*UY{aVt\~#j3O;sw ̟PO˻Rh,es*JkBm1)"_񿯼Zf*Ƴ =8Rm$AL6Hr"KQJZ5A^\[OՂ;} 3_S6#n;<qx$]}uV~YzyӇX_.++uա}!u:Q]>xW=vd4p'1IO15΋MqŊ)+8r̀'ʲYGFlP8 :XT1u%lVH7ʻ7B۳P Ps,&b7aRǩpb.g 6M\*_ {xp+8|Ň?0 jr#:}GLo.kƑSwxIYօqWH, C Oƥ)qrnj&F_ZVQ)﹩)[Mn?d'٢w7)?w>HwCJaMKK`U/OM6@g.[AWlG_܂NS9{~#4ViU߼fgAa/fovB]Nh85_.h4OԩלZwxr) W^y?:e+@nuwe5dN?nk\B)ٿhWU֭FY[RTP f6p9Qk&D amG/b`>3(Q8GA\Bfv >8485Y|oFe;Gh(˃m/K@ S &yP TR^>f&g\w#w{h }_q130=UްD0 yiI&Cۭ-vӕ, t~𻃍)=|3*ls7P)ۖEy3BXN ~9IcbM )6ӑsrOE;E׭~0Ş@mŞYwaa&y Lyu8bs'NK{ -$/}e;u$ kn#[eHyfNb v{@ZOلa3NVcE>;Z^4ucF2UѪ?B]L[e(۠teGj.`2Zyk߮oM|%A餇 W؉WA?/v%2XyOI 2!a\z z})VZ7LKav+.]e|+exp v`*>sd[V.;!ظ3W`6;]]{1XvS,k8W S[ CۏU0s u)S9 j.8'gbŷDӱ^olx{x]|'3X7׿Z5c5YG]?Z;Hs8$nЌc'CNu}HhB RgT"!HDY$3{i{Kſqsyumv6j¶cUmpHAкvQi&[ ΋8-? 8$͞Ŭ-YRWDm7rG(&2>\9y7;/p܆?ё(ݡ>7VE)t-P--Yظ^#,m!9Cy Sy $;z<ʇ xV#O ȧfsB>(v䖞5`* a'teI&B5V,xA-U&&!TBG~{/wPF4_RZsz_K]Y— ,ʿ!]+oiّЭ$7hTNA ٵ@cgPٰԿgdsxy(bw0Ι߹7ٹ;Fwg?^a u?gjzR+rR||{g|!.Go9s@h‡M,?8*ϊ >*-D6O2b]g*6Ϋc_Y(ּuLo7)Ž?YT)qLXul?N@t|hY}k0;S5NaS0Dl+I:4?b:C"'qc*_{2Noݕ/dߦKQt$4)rAG>KO*)Ih.{bgvVڥ^aލld4yOñh?)  !hWC\gW=J%"Ϟc'nMG`k3V~y&St~s@`(mV9AZILz /d왈kL% "}>05cv+ UhЊip*4ic ꟐlWCFNDlsሢAjuBhF04~[a5y+۷avi)윿uf?1_UJV}8oØ g?w}>`CLlQ|TC2;!PL.v7:w9 wXj"Voy^,ӛJwĦ}_pc5 V,Ǔ gNa9l|B,=9h~&ecj 9lqe կ9ܡXua,}i8K͋XY둼XpNLat "AZXr*N2A 6wz[$ +=tQqbko?4?JB%#ߤiO%/1&sÎ+R86%v:2 *oƁDZ]p0O+*EXa\o`֙=E|%sF<2[x[8~y^NÜl1Т=_+SHǻ{qV(=𵮀(H?/o9?匧j 8BwN*.PmƝ|3)w4EHqVw^B_\nYQծ{O~ L]~gowD Bc߅Xm}]x{)6saa5ؿ+πydoVP0KkXB^זd, S?84 zu/@,E[/"N7Ns_?up@, j9$@asZ4zVITDH]σGN6y2.P$@ي1hLױѼ%W{SoxSJ*\<E;L \-jNȎ}hF6)%y1G TGˎ.nagGڛؙJ|»s~3e.(/( ~d CЍgQsA%ŐQrR7hJ|  nAcJV WH:`s lF=, rk=ۜ;ǮAS~ c5OMx NaoT-rb*/VҊCy"aK]&sSBke-'A{ _`$kH!Ykd-=lEط|&?nB4@?+ sUn\ y 5_FJq.3gb,_/1N~Azvp|2GM:7}.PxtB]ǟ97lH J\m ܈2l_lI.bBL)Ԟ*N ?ޖPa %,NWWL϶^SÊ>ПFNcbrۣҢZKf*4a:|=M?ۣ m.lTw<"H|Oҳ1۝U(S9*p㠀LV>-c.AOi!~էb_7K4n# B÷9; EmGJ>l=&:|opbfele2~2[՛NwzNz{w*^XpB(Ft,+6񲾡V(z$,O~zD+gC] %􋉞$-!ҥaxٟğCݫl~pG=,N&f|Ł$=gy@"Wt>2G8_Yzt?-&TLZi9-y&6; բ1~W[$C!mD _i,I&hqSjrok5ZC`Y}#T-aI.md^Kn|}yd8Ǽq/˲)( pK$f1}l$o?a4\sȈ৆Ƙ6|ףKEW&?/~Eۊ',ScBHw(jV HgMtŏV}+%gC;&fxv30 kB@ wrXyl҆>/lƊpj~6>ÿ{ JLxwzţ*K!I I+3}?+:NXTDT۬0۱R̈ ioiE^ťl!* R*875M+x#:1FPs]p,+;Ȩm/nL snP"=ÖDnj2`Rl9(6gN3c6ͮ1XA3JH x.hxm+ [⊄$S2Aͩ2 ,6mztt*^0Ua?-#ѿBF_3^Glʁ_75'HEUp+bkk*Ea-=\LÒ KłJ=KG-hMdBO8o@.GWqbƎe]hҏ#Yc Oq`Bb0X@:]p枽EOU?,B';1H(g -Oh`2çȿ{CȸA3l1~*YO0`Lg>|}\ۓA̯ϓ;Wݦ4&+<`.b?ȍi59C=b:6P?;M|w+8Z rH0]0Q;W _F]P@=:#9<8k禢:/3jƱ|phv6V#:VR حıptwȳBl*jouNbXISh9 SPywHN1>"/+|A#nREוC f}$[tSuP@#q 2mP6[N^aEp!` [N1 O=M ]@&1=}uzK-ğ*簋|XwQ$ j39>BoU*:N-ϬT8]}mq '&:LC|)9988{CˢPH8qu9c}sCju_ʢ+5^Ͻ5~ʛ-,?L/W&&7eM J\\v'Wp((EIc¾OrdganW[3T7^6"6ː,J}* Qjf+8tv\l;u%@sI4$<^ێ~_"Y[΋o[nzZr +A"Og@*\SSHQ:km9YJ/ueCDiC9ȱѱsM2.:PQ.\?j ^ߞ7Ǽb~v8Z\\JiG!$;Cfz!jȁ/``42/dZ~h?늴ho! n{d?VA%@?cQshلѾN>U)!9ؾ>Hl%[I92~G0Y{RjKR}ҟ)M*S =\T”$pPfeL2.KM{6V{Z1's'11u:3-,%jaP 1W^_ ޿_b kׄb'i:CG)#C7州!chsp`^_%^e%bLbiIHI4(,aPznZKH\Ir*m`ul(q {]%4[u:~!#./N|[ߌ`M?r4peԅlWll\ζYo`6 `MHͧI q7.8UUi5w+B_Jl-> uStc;˯6{#EéwUks+`kjы?B飜Cw!Vdj:p槶% ||SX/h=o4+E 4vڌ?-AmùFh2`*u%ȨQ.oo w>:h> E`! dM-Ђ!Pj Xl,8Uanj<֖L-S(|lyim媜ąL-vJXgry" ?YJ]h[#9 _J· =5|]*, !JS%?ps1;Cm`K 8G(Ixś u/y`RўѹJD^}SɊAni#& uK@Mַѵ`DŽY1 x] AHx*G[BTaSqy5;_''s)AZA#,8Y{s/$47N Fw!-k8.ip~ G)`x>UIT=/Qnz2s?HzV~ rn=Ʃy]f 0J:$qF^O*x#'.R"ŋ00Ǭ }`ຼELUiCN2w~N!/7".kAǦKvظ+(o8ep[bC/ 1-` ,RL ^Q oU]I, Q^<Է HP@w'}+"9tL@΀P*' 9u =! &k-ApvS_!xNͿ ;AJs>!\sH_:seujN?5E4:Jet.qKx Nk>@'Q9HyǮ窒A/t2r$+4j:CrxLտM|[teÄφ01.Omyt: ba\xƥe`a~ p)_Ԩ@y}V(MOO0au`,)gB_9yxԑ>~)H>y1 س0x0 /"8?~$kU",_ETb[נHDng9w;^e3E@h.%05 0MS<~GJYߊ* ޲--dl=._и0(I =r>Cdn(t) l^~ٴEO{a󇈷-0XgzÿVv# +r9 մq8a;CGLK\0fO|]tKuUSS l^iKY=J[tտmE;ǧSκ0 zFX0 NAs}ƭS"v[ A-1Oh:4Ӟh m\=o]^zaoJˡ\"-{ΩRZ\0c/\(S%ڠ)v0nOk c蒚M#h!DQ):CQL/?VFqϠvt RZ:~pg$Ey:ץ|08V3^n:B֕D6匳š88ds'Vcw]‘? EV8Er_YȨ''z2-c ֪}P/DiMfq61 K'cWx{rޓnW˙UkIgQe+>yǏګ_619Tyu,PrNՍ`M[LCuD1!1qS)(AkNRWsa}K[%dǹ䍍W8SX{O+ViH`QKnͣtbDCՂ *]>;ѧ`z /=#V)z[2)4v>YJFz^~u:͏܀KsYNP~8' $i$BՓ_ˡPaZɚ+P,T"#.]onہ4c`zWA =÷T1=82joh:%a:=;mLp[wX}̀9(p|]׎MCz*N󹞑~3g\Py=D?w~ WBg}1Wa)92D0cx-".P? c~< `,1&n < kbyW=ײI#`Ur)kmȊ=ldb+XLQ病qke|c1-~||GDK!,|Xk6/^8$±"#%fm:謬P̛]H7I5Z2BKUUUyba۩gs͘[(j0JC"ϺDt p (z{ k J* =Qs M.e5ZiX3-p5,{+ MGfa<_R"VP$O.Ūމ+X.d,sϝcԃWaJzp‘X+| w\9yW6u<2>|MGX y|gלRnbmjiġIP,D˕C!5YU5z;cx7p^Z ~4. :{R=?MN¨[SJԘO8m&N>_4@_SѲ*,#~[5iF8%bE۷3 XufR^bV 8Z0&lq O#JP!(K$egv0_zagf+l /, Һ<1nXѢܢlnͳɳJC ?MǰTBl,Elݐeb;&?ak^)KtާVam5=5wҾ-v/_\p5,ìQ.@]:|;D2 *|ڞKW D"XJ9v]#9zDZ5\x‘@lK(bsgpH xTL$_ӐL"b(koX,[t.cCuV2>9¥- -ѸS hBgeTpÇ~po> 24G.b)^b47q0#.\31,kjZ;v<%?7 R?K<7lqd8Ոi G;=i.+XZ.8k.+9؎WkoebqԱ)[O4:m%,һ*IьəɓAoakkzul2*3Uw}/Jmo^r=ÈkFo04x84E>9 [J;kO nUʗ/`f=*] T:z*C ?CFqr L* }p&U@V49~n fɺgrιa]-E,q0 /Ʊ,Srg \y'xa {-{432pp y2N&::ʕHcŰ`NszYqo'aI [R@\UitP17U8CNɉ zס+U&f (@6.H^xMya%@:4SKW6FE<Ц6#;طBuw*0rŽ݄KL SlB6 8h> myܓ,*:j7V3cbas#3hN d&@]g@!LレF?A+gYΓ>=]歟2M (9wۄg?bCF/N B7 Hʔ91]7Dp`Ngm2h +0);;[ߩ.ѯBJ2B&۹BîтXƚeu(=tÖ/|l)0~8ѻe;$ aZ0c#bpe3ٞɵ~g|ɘ(If撣~l:I?La' }Xrn129 ~vڿ!/1ˣP2skl|>= iu6.tS. a_3T<"vuhMr2,?AFLqSo۸~JڏuKj)p}[8+yU8y'}G֛+RjNg8FXi_( M[-$^JRXs?>. b z^D 6 Bij01ʕ%l/|},b#Mq5Qla7;dlWl ?c NN. e\kie P}V [oxjMo,y1Q^WBm~ S!ߘ?dCFz>\v: ˺:.PUvr_e1{AVĆ3 i} MӐf:urS98#| tٱ\2ᮣ>\(qo^?gUaGhՏGw}qACFOj9}c' s˅!hc[faJB< =;e.B ~6uhswODwSTڵ%(svl4 E4 `+cL~v+0{}W}?|"~})7 N`΍|,m},%<$r[ձڥ+W<s{? Q0A5mja_Mw*YV Є%._߰< yUϾgIu-r]=(̇iK/W܉1iZS, /Z뉝? \@_X> Cf-Ypc).Y r`-&R.~[>31YAWupCc9Ë #0G8ئ7 10ä+Kq6͠S0vq ]!i7DNSU&[W, Pgvmfo nz6w׬bS,yP/xz%Ɵk%\OX-QSGFƶ~AKtc=is"kI[`*֮3XZ%F5YVpE1h&we) KnMasiz+IzY'5Mh}*}ܿZNb-:bUYPsroAW2 Ä-0VR!JX\1$Xh\lrب"G4뱅AeM웲^rZ!sRX7Q!32ŞO2 .%vy,u7>.џB='acQټDZ}C-K-T&B &jkhzI_}s'?.>U"=4e顓=`'ONT|)b%%`Po b?u\z= ;ag2;8fz/ ??s :]Ûj4"VFC6Q6IYI$Wf"6fq/Fb_n·İ+,*˸y|e}\/8c38l~ h2+|:‰UÜ8A0^a[mgj~FWܖ<)}&lyCT,KIPhCohdx$9u=Ѳ}Pq,= 6}JGʉ$N.9 eGֿػ_sO=E9(:?|L(;D@ }@&18󆌁|$3g7ĕ|48z5N:u^6~X<\+)*/eQ,Ѐ_DL6؊Jgf@ߛB-BL.AuE׌v0GRnYl\O: t?ǚO"?OCY;z:M8gq/pQw li^<pld_q(c^~CNa=||֢wGᨹ9.j \}ަl_{]+I2|?|#eD}cSF },9"ʭÿ <cҋbcӘ!;&H*;RŻz#G7!Rsd٥˜D2D8\a)T߫Č5vPρI\~I0 #_o;SfΤTBϤ o@i䫏_2"GtA[bkEDqF ӫDod73W72is޿ KrT9dFA[ǰeL;?lvKq< 9NiĶDu_2uW+A9R"&Rnx[܁"Ɋw?c{2}4+{z[8V%fWT9hEKX㈉SPxE>}? ŽJ>w`-׆TMf b]mEX]b|6m/_^O!I?Gl`fW_t`61ɳW$;3*~J:rԈ]2_*/f>5x{ o7a 'Xƣ<~N1QGbm %llQjzR }`UEj ceA[[ JzxÔ.p!=7 /N:hpOsd]ځ`DxJ f 's"ѫEO^CCv»oǓeu\ظmWx; =%d`amg; y5!ir_lX䳖XV3x ڨ GZR;{M ˿)e!t_}U70)űZm6Az3׮2l|Q/qၽqHM'56.r)Zew_}.wfߞy/}оse0rK$ %^C֦nw%ǂq?㭠M3QӰɦڢ gOƐ;/UGDkΟ CWpOn՜w731 Op`שp"ºFl\*߷> b& !K!=VV~l}?qٰcԲTv!GLk~xN0&zp5k_Mز,2,% `j LN= jǝYDs&ESuexh*}0l!)j#0P O(ZDXl4tmݍ NCnkAUya OVǗ?qCطg$֐ƁҦP|# =xb +~bݼ7SB('Ŵ}SM !OѨdceW,pwo,IadnG3To@ך<4DǛGAD1֋+44@6Etr;}{hH51vw9- >P$ Qo ߄ʤ37Alm|U\ "GեJ^X11m& hmO"7yjn xR@e!9r׳[G+A"]\{ 'r%Ӧ f٧ 5:iTWԆnwu!1)EjG/M}U^2dx%6|e=tCM72O^?ߣ9l'H` t1$+߶9pOYBvxf}3BGVjsXwuy~Pq bɗωq=E;l9i;w;R 1&y,Vש5>]}i?DΏ[\GI1w7KoaY˜*$]6]MnoU;`0Ѻ|ҽݶIg07b V-EC\,ko:JE o;BX / vs B_: ]_I/w]āo6AᅗU.HlubM)3jEqןDSr>PB*F.X{M˔@ۮDL؆p &Ұʻv3XX('I M"FsbN{|Cњ5O9h1Sj5 |c|#0$;f)nGCk3a{13UcDc/1zs*fk,Q白gioM$_W}M 7ϥ_1mx<ܾftB6=V4R̅_D,O+lLtȸdxo}vDnG.bj8F8HSit&f*P2]lj#ZsL1Y{9DdAA|br|9'WJ~27[ FϽ~#4kzgeȎm4t~SLWGQ&w|;uE-ØXgМݗwB :4KU@_Yw#PvP 8]jm΁ǽV%נ5CjHx xS 70FUyC SGd,BÝ Qq֚bW3Xо~N ?F_=bY/ĴFFm:+e'`iP!vB٪̿?>b[cObQ+Ux 'COTw??Bb?O_ֳǴ.C8% 5Yg(R7\4ԾA1=ݴKRl낐9PU@kW~IC"w%(DgjKƘןwYvıo }\!|Y~Yq, 𘲗Aq~8UV({ksz9_ţ O^"v+-{Szk m_5/:H*|mw}Jdž ):7xn*pr8o˃4"ܽ͗ө j K|4m+u/]00 ?kW3-L\g0Bߣ^`ﴗBF~vQO@*M~F~=U |׮bjq ȜOn }Әup@ò %a:Ċ+@dϢ"I\?! gXP\yM4eZkghxi>#]S.zkT^wBET}īw5g֡aȈ:HuNo'F9_6 ,p\a}7_8qyx"T;0q^W7t5ȟD^;0^ bEh!s|r{Ul^CGŋtP,euX"n&BMp(4DB׸#Г=E3r˫x% A&yN !v7CC:bMM/=4DЯQ'E +3*v:d|'2Epۼc"Td: ׿?jМϝi"_C3,TB 0·D0ֺNq`MӓXm}ح]PCÁ/1__t[$96H{4^]tab*B44CI+di=-"2o?&(q0!/'ǒm!NVi H~JVp J ~CQ7 s4b`< ;AK=P8V/==]BtOO~<[/ne4\wFQ,R B$XYq3Dz&b,װ;TmFwAL56K[f+DYy %fLcs kIhЎ yةe~h'lx48zyװ"E;7wP~..m~a?=^d WbxlkuTt<ǰE4Gi̙&_ }YB7$E. k81c26w}g*_Z[ XҦ% cg'4~f0Zr%e:HȎH :k4=m0Fa{vhC'[2|ۧv7mFZPSP(gbJT X)@|2\4 {@ɯtAOJ 3K_0$Ys}%zȥ*H^⺘/w Ӑ#_?$X,tA>bU< l &іPX殒- t|<qx.-F&/517hCةWe6tVIr-ajq'Hi I>UL14x)q5[ݽX5);I,rp2+.@.\0yE kG"FqL:(_۔OaƔRȊ(& Qiv GS3hr'~ c3*b: Ҕz׸*ps һo^Dcs'0Ơc"r2`BjSIV@YRmpw?ӧ܏w…I!>%H%qS;<[fj~^j;Kі*LU!TܑlD]͙&W v WE'"(!0lv|.ngS8 cTcL (@96]OC^1wߑv3C"ԑ3Xp;lE d< t}eZ1M‹x CuYcAyqF}_gbi]ǏP/UYl7s7 h4UpI%QdT$:DIlY *dd@-}= Bǁ_P^_"1Yܙ[xPja)JPVmJ']X??_c +|#CtJvחB|dI!Ͻ㫑'׊0cѥ{Krd5iFCZeh!=2jD}?hB#WO`\E9mx|L6h&܁ک0:h1[gib{?,mjJ Q&4  %Rbs :՞A> R,0FTŷiDbTJBa&uLCS&AZSgY MHƟ!ӑa9_xc\ΖM+D.s7׎YbcBj߿8wnoT`_:+i!76蜅%37%0rcf! <E' | &@!YoRYZZ.L7`ƈHeQe[Lvj/U0&B9/X_)b1N'8G|}-[8I1"бEwzQa?yut}}/qS'oC)-*~3ZWNA.[!*t~i+4xu*O?Oq܆ty u gmݰJ _Wރm(JCFPDc^?=FW1Cm} tI&akbiJ}!6 M,tGqc [2[!-Ǿ!b,~,dKb%!Wy9Q.>ҫC0r`7M>߿wC)`jϞT*̚pOۓX5`ck*S%bc8ߕ<W)/52 $bM( 45,z;}G^1O}^>Ea{,RO+ifwa1.(YWf]|f#KQJJJ7d U9$( l`;Ӌ!mz4d845n@iEC wi"5P4ZhzCO_S^XEvrxvzaC1όk^ѐި.- y$/ŏ\Gqx֫[P,-)7 | $C sИIsjF/aۻ_s1Rs'm)?&>휂~ҫ|?V)hw񪯾O3@cu̱?ou)=͙ ͩYY~4cUǗwj^[Xxj^YbCj,{t, ,^.g~Š $n~W^Ym\`ţ'CGرgY6fiW]XX5d{X.g ~{P.oO+3t<"éQ$gh@|]U?66e*%d@3OXe KLw`Cd߯9SPDB؆buGnyA"bh(Oo3ȣ.+L<&X cYBUQ*a~K^MX|oo؍>cN!Cā X|!9(3 HV1kChgK0~}&frrnoڤܭ.T]{oi晍u> 9FXl/;Ll;!),N:5[)>$z)Q4RgO(n|~ >]nEs<ٮöN|JR)7Q Dd(-z݋^c>7J(+t|= ٌavWC*|4&is>+UIßC\ȧ8<eg1pڴ^^{( >?9E}?0?K >#orstܳ]ͻ} Uu?~ت| Z{`%^,=w}g/h>DS]waI !KPW9& to@2vR(>h~ɐ*B~b,ý4jVzf-+@$ȷ ghu]/!ǝ KGr{wxYW-8/TAaؿ[l )A7*}=zkH7*33y1+q`CHKaA; bE'nxb'חʢ߰vOL\/aNcdJ-E(ߺW$}/o)/'X,"jQx0ƽ&eBF+R+5CC7;`^o$Y(7. MXԛy,qϊ05)ڜmtmp4Tͼ?Pc͛b{ig0T3?҃U\ XHyBNY?+lEuw 6n/2a&gg6{lɥ9w3W'1v^wS, /`:TC qȚH_t!P[a,ӑWLKx+RDdhw.A jeSc;?| [| j42h@+ޗ;_3SΜy)o8!Z܏ R(ym_b%?pf?N0t'>Kɲ22T8c+O_{yPꚺtO|9OB&-(T6q+>#&PTDpڝsb>W EH 9`GMg\_X Qn*t<Π }V5a3}K94l׎@E+kj(Y,}= hw`TG~h߸I@h<@҃moaov;vL|&18q@[2vt |]a'ѨF]=)A (ߐ*Pwc*70fr$S0&7M86dٌwτ9kɜ!UvkCA՛Mlvw\.$"QRVpŖN1#j'{W N҈=\,`* lCL&ĖU7`ٕe\>u0.BsH K?r`M#`rt$J^VRj#,`DrX(e%L V>sG&f)s}KXl Cy478]}wA;Dw0X&aÉ٧j06Ŷ@Q3g: dLA@lZWg*#!6RP 8Azzb8IvԄcD8|0b>Кcc)xz{.n H0!JI2}h~- H0QGF`I>!M/bCb}LHQ;+ł#43s0'>-8ϵ2\?5C_PU1J:;\g1R :_w&94|A ԾhcV{ev3 dVͶW|vO`)mu˳ʩZ+2*HH`<¨CIË+0`{Ȗf: X7Cqأt(˸[@]'4?Ѽ y/#j7:plcceWLfvʕM>Q@* _^!9:hc* i⃂Ygݒ$s!)ƌw;1$=x3u}qgq`f-#gLw`&nP=b Ma Y͢ Wm{o$buKLP(hW*ʥ /(~H$(q^g.k id^z%)D1oƕ H`b7}_@.ļ{%/0ך77&.IB!+P}ꌘ$4LE=У _0-{HZ7zaIɱ0yS|.zWRƃ1ˏ9SIPIC&JR=w^AIf<[ Pzmi$?㻎@aI R_?%0SlUbדYL$ZZсeg`eaΆ[P 8*-Boߊ8Bu}S>0lrZUnZLqA+yHI .s+~4FqTv/} FcB$6 优^RK&G#VPQ7T,65f}buzzV,t /[ARo5&e~AӋ"%`xwaj-L ώ5Vc a䙫3X4~RZ0a4=%|&ePے̎t2ey36[6?T},[RJd64/qv9KMНŧ0h't)Ƞ,R`y1#ﶶ %g!qK5TL$`@~ZsTVB4!*l*vbqW~c)&]P\,R~ Ya3&=W8ƽ]Pӫw M#+^&PwF\!k^5C(љT:=.'ڝǦ,~Ec؀g7u HDk쪫ɇ7OSƦCr 85`F$u9MyXxv ,n37 lgUr06jXxE  Io'ilAΔ37F󼛫vOo<[+g^ۋԫܧR:;mJ:|˱Yneͣ|?j#CaҎK hBkc[hU8%.3\̍P1I=S Ah զ;-ߢ / {ala0g~Ft [) `VC$E+ p(o[4wSa3kWqAk99P[ˎZ{Z;y-XBwql6%nۣڶq8e9 {3b7R{VzΓ_ &|c++}4so=C ïp&{8j;yBBrW\Z2IȌK͡}"u/q,hm:q9>u5hj\M[FJqVc2N;37n&fWp剛@ҿV|.qacDH *O}%}*X|ލ̽;Ͷ&{{Cbyf8̫mj NV&1ti cXC@yR$Y2BZ;v<$c5갭_Cu]fC2pbW/ԚBy]oq7N"E ,gpA]IL~80n7ث11RRZR BTPBT1ڕ o1;G'* ;Bo0(R*vدBiz}Oe3=/pUXRy볿-+FU #fadO뢣Q_r!YnV`f3'B̳kU`> +\э_V`T@ˁY3ml>4lj!jBm Ik(Z~Z)EfBY bCQġ [~rƴY;<ئT6Q`9N@![ 62ǚsfR`OjN~# {wrş@yocCc1zE;\SadИ9>ץZ lktӆ2].MOOGz䓽~O90ӓ Hh|fd%4CNnۡPa;]= őMa2S.4'iQ絼B͔vm\ݞ]F-ӫO`{_Ju<D]g F!3ڔҐHRR4%JBV{}<{BY^|<}_\>7$6J_Ĩ=-,8#M4|'GA@{VJġPnm42wcq(.̣c(աRa$P#(&-wfMsLukkȜi[|v\߳g.(@oL՗w`iθяː3C' gwͅO&\#gVСk{t'i4=UC0<˳g w _8B@Iˈ[f\gġ_8vECV/s][t@u(3hfՏ,يPH*}N\Lj Pq0hd Is8߁~'vXz(%#n~Y";(B1}4P1rX5&wW/KX'r}%:ԧ'>J3Z'V\x`XҭwǯÇ:;߭ */b%kؔg}6 ݨ}Fr#h /ln*.cNoC^ *p 3KN {~EXLc& >E6lWKqȉWRXx!e2dBKƵ'7BCϜXi+X=\%+yW2n VMq$q@]ىP觫ljtq i$3^L_&56'/fvPƸ^V[ MnK"/̦OF\\G;?-džM/IXRC%"X:x7 bY>U"[-߃ͣ鐅Tr@Aߏigbͷs#6 YJzӌCX4l@mNM,$懚uNpcS 6gec,S: Mc?`Zޖxt|օ,ňɽ_8{1#$'z)XX o*z$6R'VY-b;Y!o;bo.1Ne_[0݄b7PĊ<+Dk0cP>r+C> ar!ۚ?ޘ*t:e7}6B|u]83~ SIafn/L@&COS1 1+md})G0Qٯw J=fT>tݶ 2u,?ӟ UᲭ ("ضa"8sMb&8*A w³vftCu>1ٛBi_`2LB鹿2PBrZCrDo WK-ϕsfGn,V/,o\HEMI3+ zpG➯70>)G,з+g ]tdڧ3 agcF0e;:z)?4Y$j;va9D̿~*͏ϵ[f#8Zd &b_}"-0p{b$>퍽ML IoCkҫi(r"D,2 XjW75 )5/'2x- xsm@EE@{5@R~yGL[lkq z2oU0Az+&66b0 ܤpUL_C6 (ezU`;fWx(U\I݋UF#aO;o2Fxp2hP G+銶T$,n{q:.U"bߒR%7n4$tHsv݀X/җe胞< cz c>:>F5a/6&TNxzwaaPZ) X{!';gn}c{|lidjRg Ɓ{&ذyт^fa:ީ/ѠuU\y5W=u_ \6=`/.C VY9n.a8F k H(&J 47$^l2}5i,[ޱq3+M;U(Q<{60ĔC ]PXΘe,n-f,<J]p?lYr#Ǡa%h]IT='!BT0.YFPcu(Nz唗B5]~P/|G/3W.g|C596Sj H qevރکSV0>^M5e wYD85'@==mj,XoMƱdk@nb~{B{c 4fbj< E3/`WCOw*QC5ՋML!bu/ߡ)Ӭ[T3<d?e$׽y= P7,bzbδH&AyEjԱA5ݘ !k%=庽86+8Em+!lߺqtEqדd8sd+9v (bwyޙ]B(_g^^߄ \RqTqnaI1Y|Ÿ^Ʈ ا#~ *O_ [O%ʳڐYQva+KK^45c>PvSX2@q*6Vuc'p."MTN oh%c+c }>m>a;i:=vI-\,ūR4ʗFmfP!{>1q=F8y-T{}|F{1M <כC}O>P9}* >^b)yОtq4g ׽d/.&>+c<ɹp} 9(|SUKm7Vqd蓜׿X:F"ISu` jYz%nkjUq sgmQBoCG^.dU-]kmkɍރeE\Ksq3ޡ2Z"3<}%*U1J"&r 0 gA3>)YLJ;m{ zJqYh|$4K*a:[A VQ(=ްܸD c?T/[8z$ֵ~{p ۬kydنW?y}3!5Y[4/[.0Co:羓 @X|}nZлe k2cgNZ@G kNC.HSr-,YcVTM$ﬧn [-$u:M!D׬"pҧ*Ko.|4GJd0Y~irWh 1yNz#f hYog(&$1{\mE/)z‡2 ?؄QV@РI*Қz~y(&>&bF^d:PI-R`-#!5lsI CkTuu}hYMw6x+輬ub'پb_߄R;#8R"9$r:=͠ji{H?C}sW8(cı!}pԝ~1-{(JBJ̑r#мZR.Hf@J7 q*2 ]Cg&m9ҁ>$j,4Ɔ[*ߣ^@Qϻ/u}Piyd#9_zK6B2gKPo`tf(*(wa ܲ͏-ރ.} f(.:]s F&_`{KKHK3 䣟bJPx:Exqg0ޑCOO#a|2Ы`Yn>x )o6qB4eSO:,eM%Aw7<ʪ1WCÉ?,gwI'2!+8.6- 4CZPS4ִ?`O mL&&-:2CkrNJXª_=Jٻe4ĒԎk1T);dݿN`zV@-/Ď#Gk{8uwV?|sKֲ0A@#V v:1`a߷hK,Wv cnl&}6j>(X F}۶jsȜo)̢d-e*',9B>bk*ؔZI5O (4iDoL:v\lDYjhdd}{${n MV: wKنQ u< %~=tScd{ukan>?,*B-$i?|?`<5~pcte 2乘`Qv -2,>: qKhMPY%b.Ưn@$]Ԇ ffv]ſvo/!o+{=z \>FUlf6I/ .4%)zNKX4YCbJ#ЮcrIWb$sqGv4tZ=gVq'Gyݪ8F%EٟyGnxi2@;Gṍ#դ8^=?9 WKqI>Bo;KVZŧ0Gm,O6^lj-~{{́VVWqsHUbb7uFv%-8,cX^PYvBk&N|uG{6d/] SZ8CDj=aHp.p@CHS6dЭ* +h7-~z(}LLV{Oz:XjMa\ x@cr ؜ijq60qpzA~%z-qx`QaWC \de3I>YlKHTGY'h}' w'fmB-z }'Q G<Т~:# ~)R08\;SPEG`Lq&ٲok:0tD֫04!ܱ:C#4

`v~_].)u2ZWwʺ r^eCh9&]WGG4hF-΢7W#0@u4=C|? (n{UF TF*hT_]q.<֏ә6MjhFE-ٴԖOz!'eCj Z8TWsbsOȴu T{?Epj$.$GCk2drmU47?i0r=;IJ2T֐WqNc]I 9j-|~ 5Hh@_6DaR7;G_7kK41 O 5G!_} "GVwtyXXFI 7d<N=wA@J-(;/> -+_ ^~K|#W.F<;u *)JTG>W]83mց??ܷ餕G\Uű]t(p%W.p2$1bKI,cqE;=J0Z}f)aV`~fBqv6GxVv}sWOW+F&Re< ?m^oteyГ|Y?|&>1IJu'|50_, ;`-VW? N{E~' cOHqHU[~/: j Q!5 eY^]rXmBC,XoFNBwMX|h~lp~3kѢ#m_]6^ic&o?&s.8xzҷ\fDA=Y#ʍExɖ"@}!wo<Rr=J9($zR2ICBaj?X J?O01܀7ʐqF3Ԙ٪R@^j5yp4v͘Єq&T?!([7G>sb%OZ+]ds:|\U;gT1{ :қ%NPF%Qn ATNPJ)>]G_N1~*[* ŽZۑ筠,w=s$Rf8_%J~>dH*Ɇ.j40m:@i`*h&UW-ְ\z#5ukgd/daX6-a?HyLad"7=x D[{0! D_(n%>]>]@m0E>]|U"u᎛tGPW]bv͖Ȋy(sq0k{* ӅվCzNHdfehBA[HڞW18(r!aJD*8bfN*$ɰFuBo!SO1# ^/? bxI`91- lE`=ރge]SmzȔkgY @+!r;6!F:^cE&- H嵫ۇ˻7IŻG/x}:޵ [*B+[Ð8"[%Z< BpZ.BcFzRI2z977]ك!ZMr+~^/b턫ϦR0=]xհ9fh[q@r\=sế }S=\NL5>+3}̤) N.ΩF Wk< A.\3la5w÷(:,ܞ:ӈu/J ȱ8gR:_M>S OΏ顩Tʛ|?[k@IRk(if{es!=xo'S6kF˩ൡZ!YUz(I ET^zکx dJ!k\3>46<M%:叓0== 3䪶boMZK.d\6P,?QlCͺ8fvXKƜgZ5ٵjbY_H!B&;o;|B9Y%q [,BPf'98l\}ޝ3cB[P7C䇧x^ C؁$GX>M4Q%st25'!N1{xeBq *Y[àLYh}8A_ 8rTB/8G,| ~ % _-B'2:vS*ai/F-@sATsSBoZ7u{4ݾ6!\ǷGIk*+sи\1ٯoRY#:U- Pq^y4kKj||OC9g2޺ߖf 5j/ġRu$}ϵ~}IuMQ3K.-f|sNU]%̑H'e D滋U3u(6˪9j Ŵu38f~c2+svB%g?g~Lv['FK|Bt J7Ԡ|2%{ [s vҪ ͻݖ^] A_7_lpA9֫|beMlBQNfX$F-Ί9Hu6դ5)O u ,9.4߬K~nj8CmvIԜ *}eC'*f R(V]24PPRC{aU'rH<*b Aq0V@R xu*mC3]VU;lek-Y^IuNazåXW1ѯ{M I`#_2g߾ Y$F_{_-[Vi0<2=H|/jwGLc^Ӫ2Z+YO$>Q lx =ϗ6C9{jj&\YruN)w@g);_({n^z,{C ȥP \s&lbstLiXP߃DW͌i"(+i<=.It*e{`m9,}($wT +י_nV7Mstf E%l6(4;>S(bX24䍅@MVQt=T>v-by2p/L_TXA;@E\!4j1;#4!OKVEMU;t7*ߜnsn9:{Ko{~F/sVrl"_ -6pz|u&sp_6%_ 2aR[U7 Ƃ .ckjmulOIlsԋCPƭ_[GcwS96$Wq`5EqR䷼3kⅺb>_t9k>ȔJNW}WH*Iz)³+ Xybzbg v > [Ɔ4xBz,dv[_knsT bdxXcӎLj)$&}7'9i?뱠KԆ1>_=Ywrd\)O &|Y,듐~W0oF}w+VlxT;0]9l5;1_QcE ě}~gLW{IJwCu[5T2kO :K ̂ vPַ̘۲p\rdAy g֔ :]?̵2_2 K83)eJ7> rɣYv{K]ȸ]nSh۝{f%)_`SrXc̶-,(`{V+|g&F+(a_˯wٌ;17Η+l57=:Iao 4%̓Rw ?|-~Z'ȰxI<潢5NÐ+HV;9{ ە_c󵿾Q,MO݆|~-,D,f#tb XA=xW8F\ݛ/KnKX2KxǖLU1vJ!K7 Co͙Mm(^/@s27gD׊Մ+m(h?6uW}l6@w77h՟ }3#:߳YBU(j 4*!*D3)OL}of}&W䢿mХy+$Meַ\g&Аmc]S¡gn3jhzs(Be/ayzTѽfD&b~h"Iո]  :gåŪwvf?5Z;>W~*NP)xi|^tڇ߽9 M϶81U#r~ &mc< u܅и/*5tf`~=Js|k6~0|,b'ͩ9hg#Ti_+~ CdFR`H1=] c"]nq,8Ys 狜? &.ll`׷f܉.n9th{s:~={.LB Y^)uȀHA0'n~qH@ٮBiSo, ג 9-.NNvcC]Q ŬsDe_U1VٙwÆ[B }a| ^.w H ʦcd>x]9hS^j~3ލI8@ 7-$u%GvjE@ ZLYD}RtOS\ ydx6ڷ )*m5IǕŽ5(1V+~@lk?.a(y}y)~}#3a?O!Uɿ_lY1ej.,Z'aɹ{CL~9S 5-!<ЗPBO_f*+@]MO@8z,OPmŇa|mtM,!S@չ@HŚ>KKDz~ꕦN$zT!aBW\4=ZCR"Ejՠ*۱a15/DPL[%,^atnPf۲[c}Z)}Z汊vcϸ"^^ cg$R}᧼n wC@v)7􇳖Qb}V[2tƞ>@ Mt?~5xD|Xp)?T} (:}Nqf˕0垢0ru%?.iiScp>ףa~`S)/ IŃW`[{t9.c0ђwB&GPA _sҵ^;$C.F/_P4qaf=7>MSP?Fv8jdBqZ!&x"v1sT2,o`QzP n-k:7_Ѷ)ڐ9e ~R?_}Tv-W}ۂO1ek֘=;#j<{ǩ*a>*sx?PtVU/V;*Ǿ!aPó#&iN_N?aUr$ԟ\Li<@ RZ5oC!{̎%(_GvR` |d$/5 o\Bc %t:La G{王P/n &{%c-Ѧ8S[܎5.U(~GeL? üᜎp]Y\0hpX/lm59{tpϗБ\C eَ^O'k>{-/R&.:k^Mx3>5{OӦ)9Z6#s%0,S !t$tAT%|rf-0}HLHRFnbeṡ1u&p=]>dD*CLnCmPP3?o ^@iqGGވסy(u [JԎ9NR)1r(M~{96*Z&Q(|u ,<WZT{!3)[.k8)l]|G^a8ٙ^dZ,|N{D`JYy)8/L\qCp G(c Eo ;8|#S;Jb%p琶20T#_q 7f/҉a}gc+#89gO?mo eL9{5揑A@FhXd QCY0ut ȰqGw|)n.\るGVt&hW9'lpyy,hv8@bL5͊F䙛oCb_ 6Jӿg[@3w_ZBYg *l *G{E?C{5vqz {/Pr>dحR-k޽=/IT"|<8kIՃXqqH  ^r.MCQ0]*PWK8ݚ[Q1g%h09_ZE2rݪ/S$`O.tvwxaqB2TYɒ_i_IM3l[XjS ߱^*xm^ж"wZ='y q`ɢ*(mXp(b?V6f@io%Am/*(z8KHƻ@py0RdN]\x }=RDCu/(KVnAJ<t?|?@QoPjӳ ^{}tԼ!֦2o]>u;<4eM-a8r%,ԢjsѵM‡iZlkȔK+',:WȊEr px5ru=kLYBGWB1[wj &t~Dm7i7r#"fC^Xdh{+Hvi䪥0мogC :4?2_/CDϥ:XC\r*#Y v   AlqL?}넔"JY;{1-u8;v$(:%!"ΛzXF{#@1lTq"dA Gi2#?RW)_c/OgO6~|f` ;'/Ǝ'0+ޠ5աR{IZ(5w^Wc-A?| iϮX&bQ*c2 U(m:)Dq< Nuv4?>^y߃BpA[\|s1_R5} 'nRF؄ ]تJ)S^/ U[ac4VfE\_sƾ[~?UZ&]dX$ɓyda;zʔa6d!# f=o& ׇYp9`Cx)LjOdՄ^\5nczYM9[L¸ui;,,oIC!q>7ZPv]>vp~Yv ;i=]~bOsX g߯=NA Wv,{>,U+4cёj&lF $!=OwP\7dIc&!)nI1( Gyg3cmvY;7& q^(ڹ[~l4-ӆN (pM՗9Xdu!V u5Cyv)U͔{5IRI@F*N~ea5|:Zwx}u06b(M 7#D#2>zJ#,+Ft'odٽ? 8YB{J,'ӁؿVT$yߜOiȄS?epumjǩ wJiS-i8Ip˜3?cw=: ޷mT;?[{P*\IM*¡WcT n$[>} 7rи4^Ϳ7 2 ;5풀np?-:YJ +XlξeG^K B~"O x;ACv u:} ׸.]9ðI{-=ng)Al'[_6,[TPby/xuc]}P'-]9{e}K]Ly /-tIO¹cm'Q˛:8dn|=B7דZAHY!fXfWZM%p |fSOpAOU^Cd]ݤv|s.ZK)3v~؃|UQ ٍa JC*k>eC  --$v P]zfz\7&9^ qL6ZP>\s@D Ig׭g))!ҁ ? Z͏@dž t%u/CF]*bO5|nR,1y1ĆSoBÇ JH䬤$y]N+D(`W쫤9hĤ!sEA63V?wa˕ .w3ͽиu+FASа'dJ5&`BYv}L^/6qE%zW5A|1=oL8f _%O=K8^f&pQ8"! ϺCf)g P]q7}CZ)0菦3N+`im\.m"A 6 @é%8OGv;daے{~2W)-MbWhܪv}"hA#=-7B#7uG8an)rRKl2{=8ozGG|o[ XǬ70?Wʊg^ TS,Kߵ{n=R4J25CGIt}. 8^dŦї;?+"dJZ<> uF1(٭d J<܈Ҳzb [B KGobiLA$ʸf ԰JUr-;'##Rjh?a 3 zh)6:8V*8{{Ry%ɇaFZ]&/=cBbe՗#oء)ˀM W)|.6 iSO_W峙;.XEwnjmoCi^dl|[:} MϔQߟʹo1rܧC"^bҿoX`iov(v6ܥ= NKw3GoMjAbX_1 y*XEY7oAg 啅|1B2&Ԅ3ѐ-nr54 O|E{FL0 & ,c#+eD >}}_"^,m.s+I&2OBE ΐTmr7O?RQv+:#t ^‰bOe.TrǵqJNXؑsX=Se9w2R$ Ѻ%|70^'۶L[Cl#ćW3"Ѫ~K+lz&ĶfoN c=>7OX86&sXefRÖ w<];mndgﻬ1~sx Gel)ucc[巘ҞSXL)#?׃'w}J;m.n(KZ~3jqd"8<9⼣n'BtK.r"#$2B>f>r $wn$׾M7/A!cPy͐“o<|DY B(3I{?)|.ZnL<=g-[>҂tՂ{&ѰɞW1)B,zesbHuAJ$Q<-?~{m? `9HR})i߷P^j*oA19.Shb>⑈9tWy !d8vk_iVh}1I5v 'a"^h%^YhquNn2 3gYߟc=fS` tcW{yQݧ]>"TiσJ7."Nz-;|u)7K4$< a<"1אi&38lnR`VfnXog,_`cXHu9DGg f/A5"ʁ{*XaJoc9DZ{>j`5:Wm<=Xj'髏@!B#AtP&)Ś3mrII3 j"%0Z%}ZO_r)*lމ- 66-:e] #ˌ0bLt g5 O-ۑXR5V>g={sgVK{qكw ¢'P엇Qn# "x3+Ð3^5f"P*x<+jpakT,sR;t;x|CO6)š-:k{oQ.< R%0#ِ J'C԰C7eܛFro X@uYk+E$]J:67\45Gƛ(dU CߔVQskL?5rxZ~~=~#^6|7ɄJ_NQPssD&xFm*SaWIP:t.0iZjuO[-s3f՝Ŷ &9w*G_Y(pz?fypA6V$h!\9QPU2䆬bĹOtϸ0y8^]}_.b]9+O66KX:cr >I?^ۯqGKA'KSl"duC\ӽ,͆y7р%w& PN|8au_zΔg䆞;Ʈz,4uj7#0ƙpd@ G.cqfW.cD%Bz1_Z{v39bC,4?A~(}mJHҕ=cY ILPAwxJ$ o~[r5'zKdՁ q ,c<`ǓBM6'eUb 3A<6>? ?{!KєknNT,H/nL\ZT': rD{vy9kW(7ܵz?I}k~Cf;D2N8#,pЂђ*LX&p6XWV#59(U2 ВcZk Wm *(=$"Wq$'I|=TzKH͞6jnĿZK2}Pej:Kj2ĜjN^\\(J(Sz {-PDfEH=#K|v IC藈p~B* S9oP񛕫 ʹCX<(0s>*(rAeέT hzNT(q33ϡ'y; 9>|6kёX4B@^Pɠ?mlkDm0VEgh} TfYɗ@sBY/ DO'FW!dۘPsGk^C9ʋ;}沨?|{e.>IG}oP7)ԘtK47$<5ޝ ٳsJ?s㡐1~Tk-wUgva iV9+a\M}tN= 2's/}, w$P+gtrCh*`ϲ\ 2|_r-%wɹ]P1桏0pD 9GԞD^lT6Ê mo1G`}jLJ1n!{ v֥9f0SH/A_v~30TQu.|{.Z[N'Xa*oo]O lvKѠ( es:IsLs5n9]={h\a$G!ه TeZ #^ޜOGBEEXș3dE"7 oƲ/TkꌯZ=2n`~]Q;>6T3p3 -Q-I~_\Th3W@1߳e:(sNJ!i}AV S t  ~.H  &O^G['pyo6cUL~r+6n8F)OC`0ha9t:SY_1O/HU C"vۅJkd[^S&hswۜmJ9tFV)mlء`z@9mͥ/n`鏛Tvqt; 髃?akfH( d~źړ@Ԑ2= ۿ,mZX_3Sgu`qٜXklb!azݾ'Yߗe~ LМÿDTT.D?*9,Il մՍ-Ɲ-CXrͬO? U9G =Y>u`J cJXbuې5Z컌5d6ޯg $ ;ObVs yT+ 6^D@8Gr6 S/~{iL~EAGGI[ 4gYኳ}ؑp]'qń8#E簙<%'rq%쳩- C 3Ͱojv1G8|0{ӜvM ︼QQA֋;)k+h,p^R;L i?ȳE% q.yr;M.owhZyRlH$ކf48zF1TY1x.V~ʯb۟P_*ؤ:v"ls^ ZF|P H10OR}7(5Xa 9nD wo[0|1h{|F$Je[]YcPЉvTw-{g U@ :D *4#}&4~1l}W*{ۄyP Z40FwOvtY xX:w4'b5y̋vl%)W4RYaA6śؒl:*(h*s|- +5jAaX/M/w=بteE'0A*UmrqwΕz̳ƮvҎ8sG=%DTg=׿y6B{t^Ng: /AQ~똶KVEXzmc?q zz@4(aA,=\;m` Y,@qD@f. sQvw`vu毫z+#r#L>nzh-kyl_?/9:ճFqzmA1i`Ssl;NwpT+8$;\׵^s-bZ!OʇH=i}+ԹRzRg v*X)G_R}qY&[ 񝾩{~%w4Q{a!NaSH#+:J=/ݯj/wAϲBXѩ1 ~|{:$H )'/8˘(Zr΄kղF|ŒW9gա,;)H}P5IeА*g!c ŇUB,>Cj(wSޖLڀұ Y5, tN7`E"Slwhd6v_6q;+ Cn@}|w My /7@g8c.b.(O lzkZ絚š-i.\.|]7-3(n@ɕgŴPvD=h9#M*&^L DhJθuZ JCDR p.US9ˊKOdB)nlh>7OhSCj#ߡWXFMگa\},ۿ|=p*kbIv։qP!kH\ׇNNuusPظgajZ(6;{`ܺn%$`d>kj붙 ))XR" C mf.<]߹^"f$81w1=ī,$T]\B"YH?q( "h>A*#jB9>I+V2^?,-FTɡrZ6 *Թ'Þ~zU얕ŗyB_{y_h1QL D%-+s]QIԀ<$#ܯ0q3W^f;ˮ~clE+MHttqn-lJ[}^ N{fNh&zBñg^[sْX!p8+. ַ j,^mlsQ"KcL} kOhq!sJzd xfaSIBMdb{Ue1{e3g.?qS.”gz5ť34mk'd^uݰ*=7p)̱MQ.Qnhsx}Ti#^>Vz VCm?|F_?.#;<+5u'0wH߇agOp|2ΫY^cƹU*IYX7 ZȿT(o_"rdgυnO+|}V09zq#` L|Rok;5%f(. NL M^bfL;K> h+42əDgK=90*KTOM U6Gj\$5JIaVhy)@h:i %CGoA',"F32εs0r|@=?&?^t+hںcܟy$ۺ2 MQ~ 4JXaP٥XӮGe R\Udڱ0m֟k2sL;l9LGYou9-!͗MH%gtL0s.BPEYh|zzQ{7Kdu'p 拖 +w9pbsww\21h\jJ6~1jqsT&rґ.`JSFLAQYY..[W~7Dz@ajPaP*y .,Sc }򲇲LeulUz+'8=7VG&*w+HO@~9IX =~E7m0dOe5wc]N>FB 0+CKߖ|q {l^JЧdѶ dwj0CBc+L<,3! 90"P~m gL $P&^϶aCǻ%p,dUy@7pQ(re)n?]c"}HoeZu\凉viy{mf1|e.%"RBk c^ߢԌܫ6(4FpB1nWP=6 ,kL<]&c_뾿kTMBQBԭ3g-z^rsCS]=APfHx?vTHΜuT(%PiJRRHlUFޛ콹{f_?缞~= ?B¶'T\"y!>-$}t?Ӭ3fϒQ> /hvJ3ހwRs0-$#y>۟y?oFt!f -FI#aZ$?hV /*f_p6F_̻sGʄhr`eƹܺddSB0JSq!zat &خh$7`:H5cNzI2 tJ;\I@uL"hij{53_OrU?0&k%{YSRI[xKC ~H zyeW6>Lן*yvE(rcͫ=CԺ2w%H.fEx&#:SJ tm4Oف6MoϤ;!Pk22c'Oc eGmm64t .H?8k҃4!bp| t:7+oXbUq5l2͜sΪ!7c4 -esPf(MR|L]j}r_>D 1/;74m ,9dN @p)| ƅ^AKÏ'J ڣ5Ҍ8S2d0չ}pr82>@#$]G rwYAFZpfI"Fw*%ZWP ݥs{1;R8t[JGXot'=D"/VaO7}GRi }yA UL}wEFx4[v=bΊIdظ?F!ۦs LVKJ =:#a=0^&nÀ|Nx >9i #'ҚERavqtK]jGu}~En^~uFB]_\ n0xa*):F[؄4`@2GڒjwzAױSPyEɘ*tXCus_f)9*Z<|>?c=Qe]wFϞ獭BPL3 55lVCDd}#1`6T2z߬f٭V cW#fR#W!#{"j-<_q=*sX~ >Qn,:H:t"w4pS?0g5+PtxC^ʮE:uAY'4$ TB< W}иtN[,<+e ;hx:PqCy_ (40gh\8XY3[K9Gzm5l<k^u aضY%tvs!;-=\@Q;` g}q(C牿inpzUeaaQߣځrbJ7fgA;џGlGv~ڹٕQ &_7? I CA!Rm1[__/aݴw )H!+# -F~XJ1 SIQ=XL 5ҾiGTPtm籜,WиX\G1n&n 򈸞΄9k]D1k +D2N`U&8/e &{ʋax8ŷkwvQ'.z_GkvHhMOyj?O'Ν5w=!RuO n6_õ:k8AvBn%>MsZwe.w3h03ш\&֋P#*/st}|2\>ぅJb٤T5p BDbtYQOWP;Bhual Ԩ-iꞓZ]], kj6F6ѿo'ugX*h1T]S <8U%l)%C#%9E֯[poJjN\+19;Zg#e>1jOQ}mC(h]/"sOHf'a04ՐA_RP{C;rǜYC{`C~|9f_,TDK4o%kCjA$x7s6 1.>zocsۣN''egҐ~l5%¢J}db"?譆BkKak3 {)GԃQv r2-sV;ܒ0 O,""IӀ:9t>:{62ع=+wS_gKyFR'~(_^m'kfOW$-X 0d_6Uګw꥘((O-1Lԭ! e ]yHWUfh1 ~I"cìõ LkezGqs|;T.[@#/݅UPIޖȿ M6wUQ33QtC{0$ {î|Xk4TWu^3!z"m8>ig2Q=XU 8"C+RJ3Xnv$q#IiCuC`ܗ׾38-oTE;B =Y؛LZpgS,QV#u!LcB^N7VDȉ\P1&7 g´#t N'o @. );Jy7&aQ. Id4;[ ٷ}"^lzHrV_׼~?L[ R_>/˃L靆?ZO71{% +_?_LzWU (b6qp! AgC޷ݡPپ3{7/لqi(C-H2`[>|lDlT@H4; 2kӦaJLH:wϘl*pRD'Lf.V0WśP (g.{Y?ǒlTBPsIt7 w[ N4ce{YH$0TN[:Uu%A w^9" vT' ^|-POd(]o$-aغugHQu|ѷ `~ZPʣDϣ!/@su:,s,|sGc x* fԛPCc0B ֳַfNC%FPŷaܠait\lWt 2қCD]P57U,H1A m7k M@oY(6pՀhBSVglM)!zibcoYy9]5f[U5°,h:Xo^U-G,tS9Ք]䆏D1>Xi4Hkacov8]6I;) H% {Xp@UVX~1TRmM-޼1y~۫zȇ Y.Mcä"XĞqxVnS<޽mI{;Ώ!Rt&6ٔ `GE79)p3b^Zt&*bw1ܞ^TC xg\F Y̵[w^/;BYGqZOy)^5~SwwCmH63gԔò513I37~mV/"p8|F3>6dgxb4DGpb4]|m5^FUvߙv"m{)9^i& (Ӈc2JaD^t6?Y FlXnMcY!#<%%X絜c>۬l܂ہ6|bLjb>߆ߌ\!?|vNf7=I%}?+O@9i(}$"릶9v0O/$?)1'0d vF4ޑx9yf^ŊP !Mu]:Y~KO[yǓcU.ӗ$$|f*S(vԮ!nȏji]b߃gb96mP;biZᗠt,1Q owmgaG~oR/-3eJ5#]lR@J%>lu9~k?*Kzյ,Ycf?: XNxRi[{Ric5oI-*6(l8u/öxTQѧܰΫ\b#*2qyzLM|5j=&7vsmz834!ĤY8̑:X#F h+K1&wc/!,sAcG샰٢Ge,۞w$ize'kCǿ[#@#j {mCNǬ;k+L(2eB<rMHl{gG ,b=d6]LL5H+#NANCs;Rmfflhm(!_9y+$ƞ}~ZNXl%) }+B5]U\1->w.>?}x?M67E,SX ԕK!DɎ~Z-:z$P 7%* /0sPv|N[#`t_4?+E{BF#1a?LpGe4ː^UvCqs,8_NVp;Xwƴts6.A|5)M,֞J>N.RPb {27Ā tTWջS.W sxKE)%k 7SŢj,dCypetS9=xE9K 澦7灂j ҵA* =)"*1^CˉU_ 1 Xp\ƒG0+NZu ޝܽO>MۭW/ir2;ݦ}*NRs}ϕMO"nX}M,fIuEx-f_0/5'NgAyuH#,9D W²B6'6 Yr<ԏ}!Rr3l>0c6bHk$]$f126BP5JzpYɃ6XἤUlWzײUi1HF5衭3 AW3,0ْ8VT'ԪP!rS>ԌyLv1qFSGC-#7}h>~b1)-xt!(aQQDj 6Ɯ_hc59MH 0/. : I,$8c/@ R}M#S%Z1ֽ"CsʖB3Ia;ܿO]k@,l ͇ka2wGĖSoS[| ^辛 E\f]]Zu]p3=u%4kؒn{ Py4Jx}\x7*BUȑ[+ uq܂,ΜPwNˣaŅ'o%Ѩ5!yp|bkeU__ceR,1 թt'|0tA8x-}yu|P{GT1剰DVshu+htJnئLe&S%}gCfG m3¢k:: ŖC/PWf?Mn"aqH_<|4>dƄƫH WcQH!J/D~TG 5Fn e2F FRkcTWz`0Kj 砘A I-5 ݤoo~Bz"GW'LІx)/<0 eo.AA OL]Z\J%(>Ɛ@ek^ABVz!*F⾟z  ]CՆ.Mh$lP+eHm󶳀Bڸ_i3,s ^a#?*(͝E,ԸZ,X=wl$mR0Z8z# &>}M/NvCGm4Чdj IhyZ {_;/HO?6|tVa>Pw&9nBޠo m4?_O6!Q:ջq*zSnPB^5n~ #M8^,nmawi MGeFQK,RUD{$1m pi1_ʇ"a9Ɣ^+\%|=l|h=s ;VlʱW 늧u~o37VKQVٞOYdxxrIkV/ |+hy?d"!"Nr_|٢u =/TD: u TBBW2Kh~}>\^=.O1U*"T&nhFEY /f2yRY\>NzwwԜ$/ 8DN@ݻB!jr.QBPy-pj3)Ɨ] Q w^ Fl]Zu^:C[yK(8TM]?:pj~ [kkڴNpE ;%h/n`i߄+}zO1(D~L]Dw};Œh^^[K]u6YAԹ3X)46hvZ?łni޽XԔ2&S 8N_R;Aǣy |c *{gvb,'K_g KڅC&5H櫉df^V jc{!iXgWy(>"*aתβ,H{/usn=l 1o~C{Lb=1ޞǩB rTZ쇨=`S)ώ6~ J[zD^J|Eok|%D]{* WQ=BݺVhQqVzMi4:=x%gfH ,:!lj A)Zh^w}Vwu@;?v(wqQ_-?80*@ɀb];o @vO?z[VK|3R5Sz|=ė7LASs06Bx[li?%Bv^3GZ9 9u/ 6HH䞫hۚ\avo+Gʥf+,)[=6S0 իVLǗ@"W6qbQ7YD59lTsdP[4 +MN݆fK>n^0XO]nUj4&Wf2{{P[Zj o5}Dl{J+gumg ys5>1%0[^%rq}AA!2(n,\ϴ0f`4z *SB_`foCh1t E:'Hw6g?C&Vjj (lzpVe 7_bZ-)lsϑő+Del'Q46o:j?jef:|8JChS 2g ;&:EMEKnrP[Ê?w"Cغ_xD>f28<[!1+{<>:57>R U箾i)g.ZoH = mBL!Sl3,|3ͣw/,~?Ō} InZL J10w9Ooe8kPc GRMV1Trc@F4ɀ0& ƴ_6QXqwejjE~H|;z.-۟R2Gx4K(As9rXw,l zU(y`i.yXD:) nN!2ŘOas8V}п{P@z`Rԕ(l &[wMZꅄ'^ñ?)hBP7HgM9MŴ6cq=ۿas {dLbڷ`\":⅝ wc /0s&ia4J}ǡJ\ pY{oF2ދ.߬B4 >\_sg;a0Vs( vKߡk1%(RlI-;78Oq)L,J&?`}|6Rg, e'9̤XoiPY-so}Р} 2?}_U}!ƃ$&$PyѦ,I^f,e}8nOز,kƦ7$N+SoqP"c F$͒b <*].pDNrdۭ$zĉP.)fsӅ.flfn$%4hk݆t¿2ll |qP \Ɇ]4fZxmway{RM3vWd)h[^$GqIXZ=uP8ՓnxtW/<&=Fu=CD^%֎E5-/bߵH=t u ƞ_tBj'+<{L|]V1$%e2 1w<:K\wIw9+#0 wH5G=J_>j<7F랒·gn`+M[wÂ"8:[7$Wee~&oAax)# %Dx% (ݮ7rk#j1ը+#b0ƚE$,v`\h36&ݘ\!O9̥qν72,aՃ~mX663uSxD]!VȞJr&U^K\Jű4d 7.7uk& XlC<0-ew^ >6=H?y_͑#SwOP0E0; A#JJcNX9D,V 6Ϸ_YZﺰxKg7KvKJa4%u[P}wH*d{;MԞtJ!LKc25KvT?߯@9ybY4 VHh0f\bˣP%#_e UǏ?iI vRfCEķ sTc7`֓ `hb"f䉖\ EC\XOMYOD!;Y1SQn,;YŀsuG;A^HxhV:sqvJf00$Yհ&{ВDuUB bZHj;2J$ufP#hfz&4s~Q.]Ӈ'4ig=ېpE7:gO%B[՘OKF(AaXB/ bKg- i+u<*M5P70XO#,PכCRG@1< m]:aw>!H:A ӿ2d#x-u-̨13y].!<M]yl{Ҽ\[]6pch-'QCYƌYS{v$~V-f7v? =QreОxL,F1 LނL}-!wUP"5pHH,2<Y1" _UVMw>'_`t.hm?aYw6ht[r+Hbš1v T-_ZOLZ|,=u\zzVң 4Nh~B' Au=F ||S +gܐ?:Esh>%4\?*^JGh)%uI3%?"قF6h!f2"TJb+ܛ4/ QL631v/6E8X\IRM>ֽ|Mi6G͖VҷW|8? }i~J>aQ( zv 3Eoߏ   iw35^\;4;5`+"31)ux;i*~VyPJUpd26W)ܳk.nC|"u]qD'+zAV7"'h/AmR<%䅢Jihhpj|6V'r]// &^`mym,#;U,zR".SyS52(qDEewc}?q$~֥!Rwg1kw0~-~QMZ-Ʋσaօ~n@巷|,Ln[2+ Q޶0"3c/dB}bkz~MNH(<Qr2Lq`@K̛ el\@⣿D8/rd/ʾck =_ Q31ul+64]3&B#t] i{.“%!0ߨ\<>0ny1MR,JCcd_*1k0| 4wZBYEo8N~05pz%#yb*Oĭ_qO jl6 lt!)g/ =_ַ̭>̛J} B>^ڟ@Xo}+a Cuw}w0e&*乻:XΛ/Z-+>%@jO,b`3=#_;E@m/U OBb\xe( 3M ha#;=k8bg8Φާ J_2STIpɉNǎELJI:(9<+;:\)K%vGJz]C|:!EsBP0oAhib0AԊP6@e B ^mf)j??C{D֋=6r5!T+ąÞ͞'ڜ >-EbCϛ`lU3_T90CÄX$l>!& k([S0pHL5en!tguj$PXطu=hخ;; S-Ӑ\[뫿41s9K+b'[Mq(u?0-WOFM1R 9 yzN냁иyTYXHΗeo 7;¡'l-,848䰸(^vgv@]tV)tO1֭1TD^}_ Y*yPԵl%B_ &vp)/K~ҧy˯C;ﱑ!~^lTc=.IcplVBBBQ:L41I23vQHv !UC"ݢ[,["33Fp FWٙ}\A,a UFh?t46(%PLrK^Ph: \?{#9kX%K 9IJLHkc L[_jD:VuGa/f}su3&NI'A j 6d~; &cMaP]}.G5J  Zuv3ovz(;U%at&\;!uhU(8xFf 1CPoI=1Gے+VROA9.IH{>qR>MW(C eKh#aDNw>@ z|T~\.Q'^I@;d݋h64)'9KZgpAh=n ïκ#@b;#ӐF/fǠxK'-%K2|,!ܓ0{}7])QV vLP -~_#\!c^hF$LKwrƇU2h:ǺuILA3畸ĽPm6mˎlsUFb"0ϯ؄^&=ƨy)<-N& \<\a7r+׎0N;PMFMUhJBnƇ uco@f|@p1(0v{M.9wC܄ŅsP(Hg7R>ӂOjʫ^-Aln8e9mww}i؅g)7U!R+Htjڔmai%: Pbd!7I}/uqӳC NbFD7V[r3/6U^c >0>U\kK H`tgxK8'\f CJpr% Ч甆ڎ,t${_ dk}WzN3E_e`5~{d6 R0{,>\vj lȦ ﹲ/͇_j\$_ʪ>#G9rqUF>| 0cI9~U~h$cou.Kel?@'DޕJ.GjǓ8 ݾc7_Ygquz= (ۤ+6G S2\P&["~dtWE3yf\1V{`Pl6r|_l {f` njm>ZoSK'7[6 Kb}:Ӎ`g>Q亃Ejd#;:fX/HA:ՎEAW^]'q1(ZLb-6!HQ-!̰ٚ!N*w?4Bt'`qb Pl:5ڀD{H @>Nc׋O$I񱈛C Z gL=n\6^1}E( ^:֡E 6& Ĝcp6L_ ;BY`M)Szj%ĆX\]6ߚӞ].UƋxn=[ڱo!AaLNBk>}f4pܹu( L{J}9x"f) .}Ԏ:}$Ʒʌ-7PLw]-t3ݘ_] 9r-qlKhf7WSFG?av|H/")BޞvBKIyj54M - %=0 M,_*Y૛JƖqfduEƎVXODQ,G|zEEpNtxmINBLWjm&tʛMHJvgz9'̖ez?f",C'sꝹD~ [}u.{M?wyhct< t4yy[C A?;ʝqubTPL4ECY$TbB/^ (6MҸpLCCOˠ`* 9g̫X|%2K3܈$ڏ,t22m Tr1VEƈ+PdTB٦`Ӑr{YBCmXz<nZˑ[<(_M&k{E&v%}nJoS&J}QzԞPOycE>tLqT&V 8rA >g{.3ooOS|gT:tk9Hu}08s5|q*DkddfI=h7AqvZ^!Pה ZE9b?mv#% Vq~3̂`e܁'!DLM7o6dP #諘7.Ɵ BEF/[0++Z2<`+ޕ +]~ s7L /T/)7CT8v!a|O p)'$/ 57BMT΃'[&jXX~ς%nDv`sh4E-\ÁzobFC4냸lz}"n3>9@Ȑo G94/ *< CC]m<@E8*Y3qVR` %G4bf쩙%tHV͹aϫ_QǨE@.]D^n-20qj9 9u^Ȍw`GZ7O8z8B+G/4="Ю?b.9P; Z'k8@;}`Is%DtncLgfqr**mH32Ѷ'@' -L<^L3{[G >WoocԱUl+,.B>+%9h5J,QtX| #Mo'=8ϳYbmrCna c/ci`(v=ZOgZi)Z錬pɛV]opO,tÍ +nZG*[q?P/?pba{shVbS^hjMQpa 8R("eb4V BצFtX&[«p)R1a8F빧jƎd8/rF^u;+ [8g(ǾAd|gvŽZJb:}!OӁq(Sw {Ү~cO&yuEm~,o%Ş䟪8 FDv-Y&wbirkN]#ٺP0o!$X۳o7Fp̟ϛXɵ A2A{?ci{6a@'t>F8:WJ25Nכβait k()z.J_+KS cz(j1UQ&B2 +OÀD!1unH:eGXs0op켮~(kb:ϝډ-_e`Luɩ5O޷]p IЇ.(J57.%L+k[!su iuy.Fl%@E3W3?`9j =̾+in)|C !/SF700}?MtQ x?+aWRjb. S`[;97+DjulEFN@^_̇VAbŏ:wc! 8B<-KēA?xe6p9@U 1*kTf9U.;"i@(*X4ɾKiQe->v*D>5ŋ*\(OE\<:Dc?f})?[ 7.åӈ_u,wqq}J0&gne5D\3Q`Lj~^~yWZ#*2[(][!&G M^f 8ZՔE|#ol.{Mh~`rT=r^t~\1_BFRe`>~zٸQ.iU{G@ɝSߡcӃͫ*P& D`7( /~3l3=8 '!d_WO ЖƱm|ֱ^:4g L -5w?:6w}Ss]?h JxsJzk`L\/1Jț Ep1t;IU1 1 {͎Ӵ<_?/["t.Br &_:!޿rLcZȂ΄zPYMr)Pf^q:5~,0BggC tةԜjSZoGF;Iv(|-?|oϔ=WW`DZ!MS>9+y&'eMe:xCX~ \<~X4Tm$0`hL]@f}-> >D@{SmA>X]9j )yU ,%P̣e MlJCvt<|#l1㊥DgXNa|NHh;Ս_ݱi#gmwoX̯ow0Wh#)?jÕ^ X2Zx(xa kbm3O(8\5G-0| ~E^du.\^K,l9jib,zo=xa&GR Q_Êt"m_T8+,ZYZ>U ~;ٖf[!_(n;Z*  |%B tv &O|>lٷLEӠfs\I6` h8wϠ$ qoxNk0+݂E=ha*bے0m_)%53)R>lH~|^8̡VPp[\m kcD?&qwޣ"%mXtN" hC-b-X:Pӗ͞*›~{N WA_cRhUGLB)0b'a}tEWX99 =T\`!OUHzd3d@;w9 NPo헀OVV!jD,4M?)l k)E@KK&6h;& LRX*xczAN}iX^?& %8 bN&S5ֈZ5_sZݞLrhȥss6E%_ٶ,һ~7hㄙ8dWA_>NFf+o0لx9>iI| WHRr=B>LnQsPRl6b}؀ 'Sdq+أ |:s`0X'l2.3-Y`tB4c PH 1r[#)h{$s&o݄#3fW/Y^{}e#a{1.AV$@\=ņ 9&/vz_ȝocW}/6l}":ǍO&>+}`úGaz8xc"v}[YuqPrJxem~DcZ1!_Q&0f>/"¡꽧 qo/a_ṡXA$EvxioZ>séu-=iF_6 XD'l'1|@ey͌A3U *KGKJykzeBԇ4}*xۮFF*gʕû[0TGzVxD˱o圜;͙i湻]86]4񿯄!?L>ca۴v3Y 6O8 pke> u-dï y?i!{k}KiW=icRG7C[0xoš]]>+'[Hé+NaR*-0,L>M={`IllvJqȄGsf̻SgNse}J'ijJr. (H#J k1AwzT2d } kQ?Hú.ha>J3eeׇC  hz(nM \q(c╚6LƃGF9Ҙ@Ź7NHC 8/7-Aϝp9ChcJsF+2Ϩ+mY ^1}3q-%؎~iL;s*T?0W"mi3X6SX݆6G*!EnI+~7K $ZmL !q8֏h_X&&Z#F,ҋjQ7nX&Z" DZ2H`vV Gb\ܳ{`}pN';Dɬp'S"A4wng/)a%es[|44tH!Ι67h HaG7ԑݝ9Gf_A!lCM[N$ޣ{S_`&+gѯ3A R2EwcOK뭒: ;?B+}g3Pf7&f ]n^ڡXaZ!^aRayL ,@[CWCAX!cTx'ޯ*^۟*b=A qXW0n+ 51Y8KY[<^^e豌w.X1ub;ߥNo`uǣXmV{9`3 Xި[z[Ω_ڼLļ$"d%n~e^xS/]"u*[lޟ]qj6\wqE-6Fj v.*~ź۔4%LUVL:YbrVH8`dʬn+w>f[0`)^MV}:pOX&#vW9|O=WUtȅjY>WŃPXgITnu,;'1Τ* nS I2~PTM<Ձ̏GNdՌ[ضI$(w#NVd\JY=us'kyF` 93xKVE=BwzK͘F' Q0²+k {vC՚K@ߐ ^z0#r1/?^!Fa-OjZp囻B lyծo]\Vׯ&5v?ʷ_΄'kܙ۸}u!5+Mmfy98a83upƒ{F_d3a/346wf57yKi OnIۨOAX U|Cp ΦHC=+qC,02L=^ })CӘ{~tLD_fg)uݿegE@?a_P~-(-qmFRSCz'v{)*Zr] ;)/^IPm{FuQr4Kjˍb#}ĐA $*u^Ƀ mƁPI-?o<蒄ɿŧLZ[UV<!&aeKCM;;:ěa:"+ 8 oU=z7簝DT\~}5 dhv($@3v}S 1MtRi iN)Fe`L3ȡmwsk`ã&h#w!@Zu aИCvs_>y)*7y0HbW5ƴkc?%> ̜?T.XZJuN7<|R 7Gy`$e8@l#4&Uέ^b( I|ҥQ5?Pw\pMJ^>OJB&000o0~ }*cN{R+"IwĶ%&›KFS|XyὮ%T*6%EC!Fm4te]%ʭiwbWꤳز8Aă Gex=1D?7.'aW,j}c33g괢_ݺYen̅wXx,Wlw) ؂uL{u: kuau_>fj*c7Q yf$*ߠkh@91]eNSOL!E{ 5j(=gc 4Ӵv%)薧aŸ& #%,pGTJ9d\Na8-FozWdzNa?ӉB.`Eodye4Dp c;LJa1=Sq/ktc{xR@}h'.n2S0pD3co0#q}.Mh~&?q5t&-`g'Kػ*P]oI +20,'\^pk)JAhjdgNТDQL)~_ ?G+yA2[Y 9ԩ9g0Pvt >KO)mOˡPf54qަ &5~ݐ7{7%i:Ln1AS;6Ƨ7 Њ+!dE& @7[d%D7hB$øKmP$CLl`z c!B/|~8=Sapi8l]~{SUr(}z`495z_U,e @$Qt̟_{-> ֹi !!> p !PqT=*2f+3NCC5+W^$f-~7!w^kôw`^jhM%߲}aG!Xͱg5cܑTw+S^Rx&̾M%?.Xi))UIʧKo=ԢCOEОtx{KĆh:M =bUo_ݝS&\R1|r6mK\Ybe7ټJr~km#9 kBÛin`[A DZ|`>.J%`<[GVq]~I䋃6L~%adW/s tbӰmR;bfBn;X"P}L_ROE\G!K1F_G pdOx{Vgrqq"{#?T4xN}/} ,oJo/pQZ#?;֎@'c}'w|s|{2SY Qz8814q'B'B5a+]M;~.mgs5o9f ƴo!ua)8ge9O1$uӢ/睵m3ic=P42?\Fu0yIS)XkφaHf!DsWJk&q7b"X}Z~*Qu:| Pz 5_pO:h_^(b:!ŇDفqׯ}2m@ӣ fLzŋ/_tH1V,OG %C?֬n!j5mA)sj 7;DJ }OaOwk:(wUr4`e=~y:}{}W=!:s8}fFǞ;։yAʂh(/㵛ctRs'EhZ xIs!"EKՒwAJ>Ϊmaק'Rp"3jjU` E$6;+dñI\<+T=4TۨSK:t!'CiU?ya8|P?k6|]}wȡߗg#;1w\I&8TyWv<5VJ9Gj}WW>\.7 ;TbLIay7#vЋc--Snj>",_9k#sn': ?{]!L6x6D!Ǥ',J=h^nj9vmD|TgC֊}$c]/r 0EcT#$v?ύɋ `!(vҽZȨfw@U=*=(5zƞacҹW|qoVTacu,-N`^a O(L~~D"S/Nc;{|5oG1ɳ6P0|v  kNIG:ECq] ZiAIgBBp ه[aҋlPg5 <`{. ƥC"b@yѕuRQ+x9d]Szz/6K?H/>5{:QWvgپB'oY(&..> ҘEv_^$2< %- =f6$*N|0'3H|iw,a9,seNJ+1ԛxlpsJ%v2j&gaU;g _Ƌ١(-2Z_wG%dZ!]M<\}&Xoc!HUP~yfW ]#7GQE[cNo_\ii$H K- '_ܩk9U eh),4|ٷ{ob,c%gPkʢz~ GucoH$ By@"B(̒{cG"\>ysʯ5_QR˟gg;3C6Oy&ZBa^o)@M+R˦JŹ@ee ;l%w#VPjуm'a-]!(Yb6ջ@:>, mmC:fXM˄lL50BZ]$=w+1pϸa-v q&n-"hu%)I`x <Y1D7BR]%ۋ>V[$$g̰DE$,&Q=/?5?O:WcOIʐ,'@wF-lތ5ͶH!1e~-_aϓ˹Xbi"*Z}._۠od'kT(T9̥MOrLvD֝%Y^(0\#Ǹ(TD06=R?&e 4)9! ھLIt7M*13QddNmoQc0N^Mg vDpSbT͕b\lOM`>$l⾬u 38fAō}u2u043zCtHA%.d;HVCk.lxg𿷡6QONg $rI/t}g:f A Iʸ{ر\jK> Ť俷ǔ!'4=vE9.o2ыÛ?'A.=-XiXt!'_ J Uƶ̲ +x3݉$# Cb\%i)ep/Dgo'gzObl[Qth Py̗_܎G;U7-wQjzأs,.poLXH3SȲ^$:K(v)^:`8/5T.IA fPEPu lPPj !TOpFhYV 4VS =앺)P 4^ UxI__`+i|׺KIf 0 eR*Pgyw F\,QنO_؝-qj-pY[4G nUy~AtN6u9W'fay=\{'mEyu~) Kyx ݊R{U$A^PU=Xw>j(c/i:- =qjk8}tǥD],ՊUMq&Щsآ9?}pW R<l" E<(&|9 J7NKq}P~nLjjZ>, leXh?pWNpy'dZ?@5NOEP<6M: {A~Yf zXBTo\Ý} tݫs8cuG0.9Lm{vQLԧ:[l5bay`(~` J9M7>uVǧj@ͬ6 P7; W4K54^p^V˶P> F>0Oi&~_9AVlsP39|O4wC ;N/ EW$7MgNnbUqIVf0~jſN q:>UM7a#I,1#ߠ"c rC~qWQ \|v3.߅I,sXDS2QM%ACyh*z\42!}PɺW"n˔f@eaI,hz*e$rMo1 Z񘃪獟DWOy󞵟/"T걍V&@ުDa*nICk \}$jZNw\$=C>h^<%A3k7y@cr/PLn\X[Nх`G1| :m7=}`͝80[7!`%/Je">o ;λޤ23BtcRxL/|7lm X;.s.a:{oT#=,8Ro0χ5)I=/Ǝ S,NlRKj>1H 8o%P> u*|];xw#o4}=Q܅uڊ9&, '߇&B/N;mlty:G kۑ?Փn$pYy!?U{xv[GJ6]O0KMoK_5k PZv1g}xFLշd(\{pytW송wSoiW$6R!3Mut~w- -Mڇ_U'%5D%wSէ3c2% !e8b3WPP;| kg{k^ "7rĒr|o2Ɣsb쇆g/83;qس^6kq8c.0l|]]Ǐ@8>_-S 7mPil[GfQ㻱qo1EDaV&lZ5y_JE.`.c1_# io=-6&yMvbd+ەqV8:9fg-vB$AyAnZ6*pxuʃgj!H_Պ0!]W9b@R\murDߋ_] 'Fϒ}F^5l^ׇɧKcU,U N@bh-,=hiot0̞ s9³,}i"Qt$AlXqhp2$n]̴͇ePҵOM?hR܅=y1 -T<1'o%&\2 H}ԱxYN ߏd5=#0Ù]6s6ܼ_֥!V?P O_G/|CcG vc dj>劓t5S*C.v[t.?9o Uz:4@U\84ht~C0h(`oa^ x#e.^`oBcaWIvl9#xB$BN3c;uJ3*\{ʏ6 Uv0vR!IE e B\++lRMCt쵫*X XML*yZowfV0FNy=.+Dw$mF ~ M@;mGzP,Y|bGD/i,% I,YCHJTZ?oKHyV{!BFR|m|ӡӐn $._6塋r/|"w]s:&`^<PPVAfD؁ȮuiYDrޤ< S<1T٪?asB-4l‚8-},ôEyU/CVN#*;.ld|J䒘!o* Uc a+]E z7dŚ;gŽ'5phg7v.k2 Ucm[̃uꝒPNlhp|j(BE7 ߟY59σčyj z'ULJtg<drdCHpZٝ nh.ܕ.V_/06 {y؅ k2O=5]м3&1Uzi5o]X;Ŵ@yc¹1^oCA^!gK\Ibzv4C0ų@*<1su̍u91'$#Ÿ[ :}.Rj$'!1195J=u$K ; 2B[P5KqRIf?5ؠz|0M.} g%bzm{* P];i>< 7KC۬G7)-ծN}փ27`uZXegZJ<ki (*/L;Qcヶ7}@7{0 N *-_be',WpQuǦK^W Rclr 3D j0m&0΁U raqer~ ą[ia>|F>d|wp^Y\;-ؒZH׮k)e+%?=[Mqovũ4*Vq5?w Ră[z(h4I-b堨?±We318N' $|<#Ov\>Sa>#wA6I>*+~h֪X.!μ,l3s+4pN #3N^yas/18MKy%@ϵ:mXYy 2;͸>arkm_ǠUM*8t6VP=gf{lBuڏ%42@KA#}VM׸|(OUgDvyN8#IϏ%p|'4+7ğ?k;!k[X"ќ(?=]/M1Mxmk aT=HpJ(7=WhcY wS AXoa?涛$:Gc߶qC!'qmPqUch Lzdu¢NBÑYӵ&*{xZHn~es24;cnɡ{/ D/dW.t؟rئ_ _SPQmdn?+~?w"_F‹cǟ߹Ug;9? m޵a3XUc)tx7r{?@ٞLC`"F\ylk53BX(''Ӌ{k|=FO|ǹ1ŝyPG={ fkD2g3WbjӰrEsqN(KkhoLdϳ sG.@߽N^#BVaw|!(k8K23f^2cfhDҳ,>0V]Oڂ@<_q ]I` O3(°ڞZc%C9mt9'_*b$::A} }jOa}W`}SE hc-E+۰uc"TX:.: c1S;߾=O\+#i>j+ւNzbdx ( SN'OXk.TMvӻTꍝ]>?Lqoo5Îm=r\0.82p\愾teNK8ƞBmWVV]lr,!z꜐ #e8L:iAR.Ndy؛̃8|X=R |̳ 8+ ._zpIŭX [u'h'I<edcW7|ӌel{ڑ# S~XIړ^QuBٷIuCpj #f5O\qFq#ƒmrt~+ib.vװogC2fJ?$a݃5WwOw.vFO;gnp mZ} S}W=iTc+OC$xv7 QVg;1iEEk_tzl5`{1P ÄE~B-Ű!OUh ]4FL`mb\z-,Οi/4nb\4s* MC15,̗?3x x0x?z9<9 oA-0T$OL@[r-S`*Sԫ;eFC:^i q1uh~sn:?w2xeQ.²dC<~P+hLZPcopi*,ͪ ?|?&'M|mQ{nU}?A)#qށ ' W=ڋȺX|E[$AJjd1^ \edu+ؼ{C@aa|0?3&63\毝ܝ6TX{R. +/~,qƇU vLD'V]W>9rPqi5B;V9F7cY-vxJbձȓ ;!6myK%H_@oV~A'b?3/1Fada.= Q<޸G E 75d ;- l7)Xbj[*>e^ 6 t ۾m_t.m )ւ=6KuLQ%1Ma?qC,>C ϛ.3Ia ǶJ4o  8]RK&5+0PpLdQ[7èn”l$/X!qU1=3u+wQaƷp#B)t 'q⋇;2hbA3w󶟾FG>N+Cvy*[ŻgMR_cɃÿUCgѐc;y(m;Gӛe& *8[B_o/ Ybz~Vw $BAͪ%O ;=i*91}yj !$LІxC!wXRvD?rpooV?PEqÙBf⋴`F`>z%Z(Gpq:F'Ln,rlܛ_YҢ TpQ=׀xLa,:Ho_[Ae@ʽPs_|1 Yr"IWalI& HkTh InBO^NPx_A<cPJm|{;u[+ơ!ϟ>隋w>7 -l(l'qztZ# 5ѩҝJmktY?JZ24:̐ qW <х נ{1{,9i7+ӉcMϕX^B, ;L4w{Cq鷣Xp} $`֯CPh-6Ta{-57eK*g_I)R&na@T/,!k9[_ZKe`I7-_[X×0G1Á Fmܣ/Wj91/('pq VN9BgY:;[Y ;ƯzL%B+wr!:?\&XA=,7|؟h<~U[n&-`ؿbp(}v3vB@<$ei⏃}^5qKCFw:27S|An/:vAue]TNܫ93_ lc(lG j!UaVu&]mG/7&ðC s v7&}bGECB+\| ;BOyoX*v5Whu:kAFOIqo"$LS<62o5OXff,0Q-Mu0t򎈚?薋>e}" XFFt~کyC՚;=;<~ j#9-9j(kKf x}.4&YZCqԒ:9h:P`[GD;8ҡR.4Ctۜ}Vzg4Ji^ `EtUiEmQ;f8:#Y;Ȓ尕ڞ{;~C *hI*_SLk2 (4'bDFlcde%m"2wT`ޒ L y=\7߂ |hHBSUcP8b>:|t`?|m/3|,%`sk;J}dgͅivQKGoTbm+ пTh7[dեBOg)5 &B5lU0 ]J}P53R\K= aPjtqr8 m;XBÖ6c 4XԇC)U%iq:`j_ݱ0e5#K7WM7Pz[eN̛ޔJoȞr_!R*{]7x|N⿳Z%1߱ߑ$=w!M4DwZ;ᤅ5,cU @0ywcI fȥcWkT;4pW3Q+(#pp@Zz@o$^c*P~R| g6&H<^y(4UU$10UL\yrq0P j֐oҒ<^'h :xFJB0]|ά'n`eaf +Wn]R1(C骼йwaA(pORaSf.$+ul {9]֬$ \*RBqho3 9+S/OHYbp<ۻXFDSryg9^L,%<>.z'A/ȝ3k:+,Ka^4K'䄫zA:I;"W^ta*/G-(P&>ឃٯM/X{Y `vh˘T7K.'G0*BMR84;}+[M :atJ=t9npL)yC=mS0gAI+kgdgqbtv.PS{ICOZPt[a[-f6Bص=X āP/~,p1;=zْ|fx^;E/BYb{|S; 10_Nwwoh@rLQ;@yzyNr< }4uL+bXY3} چ?f 4oH?V;@qX1hm*_g@w7PKK^ U)`9c8Ps[ğ,_irD%X”?׈Ra(mϐ6]@?v:9c-O!Qӥ<+ "Wb^A&w9 Q1z l#{].m9sԆ6%Gbw5t|sVU\_i Ρqֵz5"* NB]zRxnYtU h^2<^ }8/ԡ‰h@ =$ԵAlMs5r%C|6e(JݹGv $lakW6%rwwp= 7,Lgi;a% 4td<2Gs2ޣG͋thG^U`ċlCrpo.vG>~LIf?&ҹrض?yx[D}ZGO%jt!!ـ;{;>b#=1X6©^ylXxa*-ͪaˡ8 zh:[ 5hEmuJ9VZ|=h s+YHpa2=\;Aظ42?s ^E^=} ZiX{kǘYEoiZlX/w[Xq0ܴ2D\+ C)km_Ǿxwixn'e5 1i1.V8<;BbIiދ:$įKCf!sV#XT>oKd)aKH˷B'/̾3'@y ~y UKvIݳWmdb6ؔcҍ߃MO;VïbR7FJ"' .Xut}g NyG1aIz~yfH!+]3s=T)AfxAvl!BǦMTĘC6j}0ΥAZXz#MNu=-baXPȈU3U_tcYcWlrkN8>EWZ;Y.giA7I0)fV.v"Ƹ@eeky6:/cfW1sHS֐bKq;%31k/> vqw\dꀖ' yۼ3 prG}K~jNZ(<+ *>'෢xzkkT?t]0k\T=ߏ.,GH?a?|^& 8rcݳ#X[Xɭ؆3B0YƖͮ*R؞{(aNj u $ 2;uaO@UXZ @]*̟zb[ͱ+_a(^y|sȍL'hCP٧9li_eeٸ"zGz[{=ac x;6/ 3T#k zK*$v][:PZNǫ\ #c_2A32QѷPVōd QAd_{Xѿn-=x8u?|3e sIYD"!h Cacph57]jQIЩaeknwZ4Ctng='cTலߏb`= |l]`.m[M5$XޜN|?_S kVS5!Ec%M!rgT-~`Zم~<ˈߓ 5yc˵&oS ШPr+جh<-dL9y.7YicFGt5x4 u}?++m;פ;ƱAV2qg O<ШrN=UZ :O1 _t>={?J*jEo<Իi<꽂hBnڃIsG&LmCk~m9juR(6p?j}6t<:C 1]!?绝*/na+fl:!aZf2!pX5#>OԅX0d-ć-wjCD P7)DL<%~:C)t ϣcV:;&hP[& ASo;X:qe+_؇K;ty\ˋ<W9=\r'N1GaU Z|Sw]Gҕɏ·b۸7_>vl =TxpR*tibJ)ٱS=Q0CbtU˯/F:5!$m3/k[x_pM8 0<}fܺW\_x#o)OB҉IXOc8[+hr}. (ȹ[Ұޣ4|j-bQ/ӧd؜^$:]o[3SDp` ڛ:kPa*iw,V ֩FؐLZ(̰{97EC~mQ_4AP!㞗nPJ#iʻ_D9Vz%ԛ1˕=~_Y[ˣ -[\ 'a6P%z|~]K &X#e%c#bWu&vAk. <צiWL5q^#CQG3:4>|jC峗yB|`"4Ggr P2[5$[qW0G@ѠٴDN;l&zBmT@/q]ux ЪTZ"m7sIZse447e5^j0<:3z\M! ݰԬpf~d  una퇾ݼqRn/9];H ~P=o_SU蠼; 'ąraw #L@ iM7TTAzKP.T+rL7CO25$adb?P˨}#rqüwͩGݱSV+S?^rX|ƃ DGe6gIe'w4vD ¹qF6Le`At[Wm82d)w߃JំvH0bW֯biزIz>p9< X$q|Pg TZ_-cwj} JwЄۢ["1sFp< J#+ ݛH=~+qV{t?Nmh*zz}e3'1 _^Qg2xH0ٮ|}D{)QJ< 5"f%w!!4c2aoy }j_46!SkIٳ;S  ș]A1dXNkvJs:DJ3y+" --}*aewx6q'H%S@t5[7}ǖs;Cʮ+sj];p\3l8F vKy( .SKSNrd4K8-0,} 3[Dޅ8U|=e@WjY?8 8ywVbKhsKYʄ>V*C3 aRJwяpAџ׺V?٣|4.7鸊 Zaiznf2۽Qߑ3(c ]$;~'ڎ9u̚!ބa3C/WXbݪ#Xb>Rzc-$22)]QK\C>SӱqcP=ԗY3N?,EȘvEPow%u}0̀6J,콆 2<'=1hOwG+2D>D1dP6iceo7{I< [스oIGCu+qPmꛑ< .Ž _/C}R6_X}hq^Y{wDуqd|.|DZ%yXuN{$Wi(Mv n]!He,k2uu0^DW"2;5ȿ;o[ ;%2yew4iGWžXy=N켪Mc݊߷r㸡jy2EU [zH%)*>]ǭfBxx&e( {YNjgWY#`3l?V(g nEʎH\l1؟q~is,QI.6Ή t#!/#{ldߵad;ub#}Ĩh}ɷwXU#ݰb[y;{͋KХg` t2B\RIՎgڿxwscVONK!csk T X,NE<2JTNAEygI(zFJS9ZZ+[|:E8U4NfscۓD ̅%ӹ͘yc:9B&j+@tתAX_&$fʙAM) ky?)U4OHϯY 8JqH,α^T {V)b@&,t- JA_u{wӴ2drQ<J:أ6OLf?]# +4uOw' W(UlOw1鬖(+U2@*gpf0\3FKAF[ػ:Ř]OCGZDڎ9ѹ|(zEm%+˝xA GVs8WdرQq@4 .T@?ՄmY>XkHkceaTuζ/g_>}M)IЦVv9zi s<7J,WzOԵֿĀki1'%[]3f=]܋clu*~^lwзך,kVnUaM[ѯ7/w!hc_tb{.6,,b05&ep|0 5Uox8FgUny٣`|3ܿbK݅XLTknFnkR~to ^v2{UyTg|ZS*0]{sX퇹Tg@tQ#h/#幅U_i¼$֯]~d$\oԉ4/=gҮR1;ޞmOζӗC}ʐ8pϱ1PvP {ŊFnZSlVU>WV92 $ 4T9burbnAKg:L.ŘGYKLLJ6LTnvJjtIM,鵃pldDE` SH}ɰj>\uCPS~F&'5I ͏`/2[ %Cwaۓi1r!v>3ٿ7q8aRΐR5 ;d4;ݷ)ljğy٠ 5vǢ0)Q+" (. U@e{ݚc+'(o0.-&Q$%HOJ Ij)JН뫬\6r铳/ly ҧ+aZtz[ >YDYO,r:sk_.NlR9{]Og/0}y-`zR Csĵtc%5ݗ@`M=kpϢdgGmN#ԍDZY'Ѱj}8gfoA#4=7'w#VW;6a} m_(Ӽ\:2ՃRA2/]Ԫ an.Lאbz7j qsgK0rf[ev iŚuq(v'U86s ;yV"qG ; [{ DX3c+QAm<͠; NeUW{[ a,Y747_{]!/O]G֧?w2B1J F7²W T.rY{%RW#] ѷʴUk0~gY7 CϵߡDL.:Y7x-FA!ߐg~F?:Ll^u#gCJ֧2b@/qHHl !\WX6Sd 7űk].b[+٩k#-k.Aii:WSO= U%u=8rc}b%~nȠC4z]/@g>:P:M:roU:mWLYo;0taҽVPf;*GCTuEDoZ/vцPVd}7`sf. QLٝ.&n|rHI(CŐCO)j<(V.)|h_(Lj9^?VZ >+s/W>iΠ깗!`*Zd24yliWT) ³ ˹aՔ'9nX]mY1=9ު%LxM/fit<wjk≮|Vk9HvlN:#:[J+Āv_0yq PgW^ڀha5wB|݃eo*/1ٞHB=~L'C\=TEU\k QòөlE 2$̩5Ek7kݶ%Y/BaE -0zu=f^/W*i |hrCG;yY+Vwp88udFr `JcR̗htQ'Z @m]8 ~ugٽ)/B W/%"/\ 3ak1Ʈׄ+XchD/Yꆭ.׸ð,IfȪg\_T"3ꊒX)yY)f=e̋U wprF!KlicYvc:=P >,,6ZnnO+Ǽɻ.+aU=@¾ߏ|myl\}]/ fL]Tʍi|{f ]o# u+VE&h G\xG  ӧ l'vPwn_8՝w>X&a0fOzz-\*5Sy[OAf!Ya;q' 4JWB"A*L*e5  #X1Uh<vV޾ bFn|DAN4眷Ĥ;r4U~ jQ#^o_aQ68[xS4LjIXTFuS'{w?,q!-OFEht`#"+ H:A۾w6tY< N. J{TCICmPt,: 4d!ʀz~\jli+P0!I b _wv{]U5G9SQ0Z} ul]`l]W|Q.苣1L$Q&¯aRͪx.ؐeApX|9#;6{gJ\%HX;.BUw0\ut\W'c V[k25῎"A2 aTIe,O6^z+!&x4!n?3fE IYWQ=$N@ WP^@=ԈO SM^ϺbuWi] c( M lՈk\xp~aP?`1Y7Sq";H/X4 SoD#6|_更X m3Q0Paq#>ݭnOxZ'޶/]k:ϼ'J]1%< Z&~edK39g /NnN)G}H_QqL Ē ߻认ExG/=f_u0V(wyӊY==(=tl$"i-=[;BYcU( \dݎ2gkgVjI;GoA#M۠qP(j -*%DZ!o[7Z%kn2[<:$jGE4)p26O A1oK>?kH4773-:Cȗ6ZܧTobefKȽ5t+ϡ60EH+AGc!qpx彂BV]vuĽjA+בYiwqh'WSccS$+ԍź|.;q+0ܲoӠ)ᙕ]pd1ݟ] ^N`K\,XѦ jFX;yaY_y޺yga{RMV܏Yuc eC1ȺyJog,&5bΨW&wM ۹QtQ&H2+ۄsӎ:7 RZ_taJse榊w_Z`JlM.ۜn77?]olgf͈S#Oe_7b{,gIot4v+%qX{IKدNjĩ[w1=_s~/sVl5M(CoƝwo%a`k^R4֮yn<=)UuN/12oelaM>LAE#s>g){W0C%Fs%; iCbq8V/֊|L +;űaWFX{|FZ;zlEO`J٣Og>C`^txg͘9t\x`2 ioՌ#BU*X_>lR?Ի%ݱ6*Y^U:P@Y>tHӿK"8U o# (uf!9ՃqTi7B\ǡFj:,D:Yh m)I5qW(y.Onׁ>%IM @Y>º]WI'X3`-dȔ\C4@1ѻ} ^!E;Z[{(Oyʷ39t՜.cjϠL\-h+޳χ+Vn~*]_ލ Y^&Vh'[Te3ג61zm-e;1-NJ'\.gAPtBWY ƟY+LwtOfX>%͋G^z4?GoKIˑ 9XlX)sⲗ>fWΞ0}'F 瑼|KXv+hgň񡢄ǐȰpc%?w@c/j M!/9?cZh^˥2 ~P40SUT].@쁟o|0rH86'ލql1a}v|Txӻ^=MruP(YG7VV|d)C F uXg^G{n"Fu!L!_3rMձ|ĽmĀo Ŭs;#`쭿W[P'+TN.xcMzli$e .NY@TsC+(+Φ9Fb*@s{\ZuGMؗw |G??&λkW̼ӷW!/٣3Puc?4 貽iS!.>S9 &ؽLmfBmFP)xS&m(j.9m,\>smLJ-P,hŭ?|Yjfvu>R2[-$!I_̡桬7e,byܨd4w'Nr}*L`ݻD(>f#WڱTY;P30K% 9lMCב/a46?:[Vc"F`}m}h,nD`j.F\dz0jUm6VL[.HNkYⰾ<ތAs_VBxdmh~q~lK)Ё& ? (+t=}H7DŽ[|yO3zt,kZ#JG V;?F wFmcGsGu¸{7L87JA+(gm?Lln=8%jZ KZF6xtOzgx_P O[sO {gEa >LLҫCn},vutqrg'sBŏu^0

W`E;y9ٗ Kk ypI_eJ'bs(1?Ȑ>&N}@ΘIlίBĦuXJq70$R`+!F:;e;?v+"-!Hv$ڋz;wkb# HR"o:q`}@6qHON jJ;[-糀7Z};䬙o:hJ%1[ZPsV *53{{}^1@y (ʿTyvp,A ˡSnOUk19aN_S$,hzQYRVandr?c U3sC`u Td" rR5TPk"D&^߳"jPNY 6M)%SݮTQ*NSU. ?b.59B5q̹µdMrr !EOrB YEj/]7>D B f;.  Bkᗖ1M9oi#Rj0zX*xATL(dM;ߤ/v+&RФsjzWWAGc\{dZ0j{5.%==7h癠[]-St z'c-@,1<ӛ }c@Z_Հ 7KTĚ4EX|2BOUh[e^B3Xst[d-W$.F݃Q4-&hOeقω22a6dҔ3(U7$*wkzNLuu6MoO,u/;xa 6vEʿmK6:v93xc UxP? NI:Lǚ2ىQYG> un?jj2@*^ , Gdļ dA3x^@2 GO-X_̐Rz rݶ)$1X 7 h'*4'u1D] 1n4F/rXsGvL#gĔ/ϴ)`\=>hCcЫ5 k{V@y-2Iȩ"_( 'eaE[F?g"(}"TW Xè}"V;th "bzf|ҤL܌n ĖFNIx! q^Q۾-$k[8j ;N/hw@kcH[ rRiu.eyeJ&*>Q'->;m^`[q/Η?Pi\:~Rbg]Mj&L_>W[A#czhL2f~,xd:SA y^,zbFLn'72>⧪kf|'^~ u2%d ?1n1țxmwFB;AvhM z#T& ڮ[j PKn :Vd {tOx3:NLka sOBe94tuS;_+$M8*b^(;=C_Ay3e~Kh+0 OMa @8?\{O6 2}b^0sm &U1wkh1 GWV!nEZY?Lڇ0@~a8m ._263Y~ˬb A,K,9XuěB1kPPF/4sy!~g֜c|A~OYez,%卛[ј. 9=jo};~ehlP:>V.X|/^ŋ>W|H[0>%{k+3baNV26Rϐ=18 :B~%fSik :c"k_B1 G]P'~$2~p{>^w65IY;H1aRycz`sOӀ #]\FjcxʂːW5K'UQ==1G$Gx!%ʄ6覃Qܧ\Ҳs:~6d5ǜScjI?:ch EOQZ( +$|Gpf<7M顷ekx 1W 4f̍HMHH'HBUDz6^}UzNHoo~|?=\L\r[(Bu M[!+^)Q/>׳A_fai`3c]+x eؤTzvd^f϶a#-1@ ۣ I X+҇UX,%&S :ctqߟu =Ίa+'wR.w?Ce/ ?⤞lʽGz)U#~*QB!@.ޯrFTT qJBeww7U< #?^_#A~P}=\<}gGel ߽naIbDz?pm&戊[7[eO!Й?=koR1XFdDRECi!,!]ʮP)3콲ޛ{eF~>|{z^x=:::/ sKrdYԡIT 6Q.⮋txծ55[F\Iᘍ58X"/ÌWcdI,bc|?zbgZ̝݆砱'K@X vU|+5 ~l7E?|8}3N=p%)}OpJW@jŸ*4 #_"A]}͒4Pr@w|hzQG c&/Oq;n߯lR'&goD/"Z#e2:5߅Ws,m. zs3C'g>`^ڡV|e]ΐeb81&h['3`SqA6f`6׾ʩCg rqƍFlyWe#\V<;EtX}ԇM {r79 Osp-X$E xw끈!jjN[6g,fj7Vwxw7;gֶkrEap4dWyzcئp5,JE\<\$駽#ߐbT\P6U-,ជiihܓ;6Ż2t[ {ئdp.fb/N#/-ѻ 0`YzScIScFnNX8>tEZcD CsDl`zϳ#Y1_G LN ==/ 5!>IÔtS\s猏 T Anǣ=7sَfygt"2 J$cw-u3zPy?;B8rB;k1X.e$T-:\+A]um2")P^9B\aӉt//] S3obe0dN{d6+燋?s+<ؠ0$7*|ʂvBv˺7?F)8ǣm=ܧYgidA  UHq /򸄩_kaֻ&U[İ%njAOeU~S;c>T\%R93gs7 i^]N /jZbY[OёyX*\ӟܫϨ#_s-` a Db;V(hC`}\QDZ{V y]~,/z>˄K}_\R" ׈x/FJ+=m : dk5b"SآiIW MXS11CKunTQ7h.SvMX}; 0N;rG# $<7L 휻?f=eOlmZ]?~(e-2{ ?wny ޘRJ0#ܔgJdVhI*j_W­*B8?(KdvMaۀk*XvDŽQ#;xv`KŝW&1zXӐ8)DM5v1+%;E!ݻaXSV/ly`42z~0#_Ud`TX NQ:[{dyKf)|4wwگBwUH>hs+T>fUnTܾf5 Oqj8v5?ŏumefJ1YO~_ƻǐ9 \ܸKy lwxF|]s!Ftҝ-xRߓWmd%$F浔qB~.[J5}Iy/v2Rs{$=m赠ޝX-8E} 4"O 3:Ml:+*||K V|P21Ŷ:4mK *UB7d-Ϟ|gF8w_WtLmFPOs :$ECKl)awɤLpg^ ؽl^fi{v+Nҡ'[qjt /A(s=Ώr>яG֞qV RE,S}u_\2_-e yݹ2qfh4sߘ†ځ %lv<=5LєHEl fǮZ7׳{΋2/a遚s8P+/1 +N|mb:o}~1KJl@?+V&[jd3eXnE6:u',fGh?|$O78CKKuO@KUOb!)CՅͩcFRľ{0l18fTqI7Šs~Q{e!>VdY9pL6L&n#3|lചV;1ITgɔz1$5(Ȭ)`><V< R~ Bص4!ltJqW=RW']^\3p]PXjP!5> QtQ5Cˆ\_>(XR }w|?1lmԳ^v@d1/Y(̒ڊJPW `YӐ>'lѥb.G2-CIJRjr10 {gʶSslK^Ov.X־lC0kAǽ_1"!dػusں#K 4ߠz*f?$-Hv$\o҆؋CԺ8V|'!k^}v>X_:WAߡ J1`,Ҏs )% JiIiqKCO )C\:ڎ`Sqi0?G폖X`-Z?)T*$gHtv# ۡ7@ڭ*2$D-tsRzV9VWg(} @׳|\Xw65& ͖aKp[1R0]d՛i5/Ag߆0_ln^Ii|t Fotf+Xsг͍vgQHj0RssL|> )nxU"4Rs?N,OhvueVOzؐqY #yAdX1awb+e"+s~{ f;АX^ N,<`7ԛsdPߴeT5?MTWu6P!:L/ DI7,~g=g%%c]pNmJ$Ct{A ߬6eܼZ_ <տlZmqu rrwL6,.V  `3aYOTs =HE{tIue̦ *xcΕ@DkpFEeQ$".ppWa^yh)ڡs- ̄u}?`vL3t}QfƜǎF/(Ѳ&YcV`ѱl*Fq#n$V-cft[cn@kIĿ5\=ջ P:r/̣sG-!/Z ^ {$C{W;Ğ7F^@$)=9 sܲ @Hj`Lj#^ Qf)fIv!N+ojl0}z-쐧 ы*_f^W K8pcm.%3O1j`m>&S[S|*_sA[[E7~Z}zjΝ~Vk'^EbpYLCky/H敇&hEf\OQ!i3Vj,T|eO /|Db6!CpR~rrBǣ'lc,H(84rei_C6aÕr)Է{PZqSb{S56l͏rtrWqف <#I " _lg)>h7,mh\~{1 t/8 7}"ȳ˦\X҅yH̺uÜlOX8K?ewA߬I/p=^\SelDkxhM9aM8 zG#ZBtuPC>CYx`傤\7EWf@r0[%(Thґw>+{V!R0[XK;{JR]o.-%:~oQ_\i_+\~ĘݏզZReDwc򾸔;z0C[f2]?_Vg\ݝg着x]S Ƶ0x9ǀ^e Roraޡ|z5P _ҴU=Ig? ";nwB_mzV -|OL=&SG$5[lU(L>9g揂oC`cXÀlb=rX?T:;d'++nNX@"Yʎ|ݯ̓YE׽A>z@gIG\n۾H_IAIWX{YGUIm -')!J|*˨MRIP ]=OSLf0T-[!L)%HOĭŕ}96Xn!&]=QDq4ߝ'N\h. Sq0"TK]inp]4 -:/Chl!ݲ)3j&wA(GUwTg"T'E߂d3Hr8ώEA;!J V͟8# 5T%z!u1u Y6j?؏ӞP5Pû݁ |`Q Q hٳB5Tra{G:-s̰XthRzo<uG0=V$lTQE4*Y(%x ?9/'ޞw,}#BИn[ڞ(&gC' }Ag.|jzĴ-ɗ TRKoa~ŧXTi_- 7uP?dkG)wB`jfQ/twO&5/s%S+._Bi77?!QO6  _t2RɊ &f䟑{;RV0f8Zw^7MR9-$wp[͛;퐴hVן~sGb/Ε lY߻\W@!V n;m@ڇzYctN \=oݕ^l!y<]ԑYy9uT{'VHZy\YhHx-t-DA۱7LA v|AqMx͙!"m"~1973s- .3t;,ݟӿ5()CApݡ;SnrFi\3\¯34?@)$Lo{ 0{alSDG "3} 0KJZg] .soO$E;<[ *b洡~e!.~ЇUʚ0Ʈ}zZ9yn]|1^}BAymPQ/"ī$, ]e׏E`^Qne8@7#v:6~2[j=cgsW_gj-Mo R`sIpH.֝uXc1ljes:&XC~XM4%YZeL`ea΄/O, {c\n|X .P"} "?87jT*`{E:ǣwrًEBwXdҷ$mR/ÄLѪTs8ώ@FI0 vsϿTi~g? k_E?Цp w j^f -C{ūۊ0pWogCNWqw/WB̤컫|P#4D^N0 Ǭd͞ߖ0"K昗\&avTmDDHO&Ý@to{͏S]Q qt=TsU@ZS @!TTT4߯y?1+'~=;ac'6c)~Gר\ dpE;ol9%OHy'qO(Kt{ pEªf^x6)[iC 8V¡9%`D^ACck~k޻N\#ʖk8quI_FL(Quٓ=zRdDBؽ Uo!D=rW ?H|@ w2߂w YdQtσR5g/:% ~ U _$A{;OI[W[XAM̌r*v=7c["iT]l2(,z3k߁zѕV,@xHX> n2tR셈(:;QIp9eA|,[ۧ]PFx J/%ڿ3ȁbXBg}V#y.3UajL?!2ߊ)|>J14K͹be^@:W(;<Δ^Rɴ1L`RV|Z|K9ISvV-2H=JnJ~BJV$L(yZ'VRzL"sE7VdՃt"6T唌~`\}'}mbgz >0(nuyc=mUU;[o=\8֛G? Ճٲ@|RpivmieQ}g^O2_ScVY"_9pR3CXV#_틒Z3YٟG|lyߔab? r ]ZfqY; ?᯶?rѯ^ 㶓d>Xz'/c(0I+du-sh P笯|!TT|o\my.C=+T)Nream>e_d9xan@L'8.b+HUќ睔 p4[myH%l6tN}ħ^oMhvbos3;vA^̐#L,_P&UjIʸ욄E =wBa7 \K֣y"$toe:B͜ЧeȺq̙LKVO}Ĉ/.@060pU޷a=زiDo` (;5)oub›A'zr$PGZ|T2?n)&l?пZJݟK=["@pG Th: C[Buga8ͻ@s_{XΖm_p7Lfz: cӿͰw ?^o}Z=kW;9عk?{ʝ/%۳6F*@ʐox8y6%^XycA')B˥/w*c8CQ4=*p w&82[p wim/8YQQۍW|ǟO^~N:N6m=q)ƮW!T(Q~>g!IwPSG( Ti[Fݩ٬,@?\}VV$*()h\|S씐G}#p T4Bf @m}s6 .ҕAB~!d4sAmTdGgzh8BgLj'G_ !? XX}+ ֞,-Pv8V[Qt/Hg2!? 2˰@f}ovSГ+S')"-T ]7½S?~ӟt/gb0F ;-:@ua t~7.ri( b?a,~xc#uUl4/}:OJUݾ.u".Z0mP{4?t^rex7>p4@4&/@<>Uhw ˊA w)!8*9׽>c]4_!ʩ0£6mε~0W [#> -~4NpYn(pid }]4R7D%ϝ;Isz^gBIHVQbeH|yA2g~$g'`<5)AE7~ǹ/ȡ[9|Z/ʯY-CaGl¯L͌g^&;xUI4f/$hq޷ӗvB=SOA;3cP=U" th5C3(\[w[ ^ ?րUKK P%Jh[mЅV9j$-v9D9ñeP6aR9W+1Uq_\33 ?;_E-J_=mxZ8u /&Յg r2I75gZ={˟YJ>6&ƶ_mw㚭 ]ɰ@ ,>_Pp ՜[6Z`/sPF&̅e݊h]qЌ=#ѢEf(Sm>FAPbmWB9vy7Pa FДV PpHԒE+5D\7e8\JL9^1`u\-ңP@d֯}1? {},yw5!!p LHVGà@vA&qcդkll|ѴX.ƹ[p:c#\JUu};IEtgŒ:G[*|KL߿@D6!f8ܦ\lShQP1vnY) u؇ ^;{`tJ,3#ږ^݆0rV2z 2s:N0Gvf7BM 7Ik0&wB>:n9! Sw>2m,U0*\, %O$ oZ%a9>a|q:h:\6 j/prnl3r7y xXѽJ xhbnd=shΆؼ<љU(;iGZI5[W۩)kfahAZMpp{ !3jtP?4@?qI H{tރU?P|C䘲-h..%'Z\C>h*^B=1(Ӷ?n'=5ƿ"@I#_=kxTϭRtHzW}L^@ޏIck>P30ڊ-´3.m/ܠA=zTX) >{^`V߻7w}GR<f>Z;7~Q$%51ڳ—aÓlh3RAL2pg~,=.caCĉc \iwtݴ19fVͻ͎rԣ'?AHMHHܺnf7αCsEW=P޶ڬ Uϡd't-f=87d3&=i"p[b .(gN.l=uFB=I[ȪVlYY[ V N2?],oƒ߆''Ûi2 {F=0TVz@kRfq΋Pel|5̴dps1yLsMfi8#c@* mO.X]7 {R#Ẋyud3P3f@+;`Ͻ?8G*ιbqy]sPn^C(̑i埘xy2kdAS2 (R{jlUF7܅ ~Rs{n}Y6P>!My?)T/+*nlPm|Y{pu~>}fbpPhs> +:Y>WŤw8Em<69TI 48sFIf.P;8u a^ ڹM`b:O[j /7k%C r`:a ߝc&KΦaŦR?9k>W/,:_<,<۩O&2w֨1_$z6I/brWLt?:2 Iɀ irytmHB1:2,~JTg3s:Bw޷VzR n`YQhR^*ČbFMgd mfC_jҠwkA`+d+yؘ zt7{5j/T)_DbD?2=G8'Iq_#ؖPQ2rM/} AK*rMr+S8@?UƼ^A)>h0ȸbX< 1&) NJzP/Sra-[x,aMmr7r!Pe9X_ pЯYmh>$3piwVmSNyE=Y}u,NrAQt"|iDZ?z27eE6/w8 Mrhtk[w -m`EwOއ܋\`IkeOUGVı\g?Iq9dx{zm3ntz\ro!\VE%B͝ZK,ԥ?PSPmvxh9RPZl}IiM &|Pݤ2$uB%ΡV v'`lyN8Fh7CKna Zx`O)V sCڹ7iX/N#ߠ+wyv Iz`9?&8lǷ2ȈX˗ l)usȽH 'IIzvHc+HF8`+z:J<5+E,.DŽ52 m?.L:A1~u~d)a) –o&nsI V=rƎ@4Q aoƎl*>,_NxG= ˇ䄍ujWBq_wBۀLtT#“[_q'+KtOvJSscL)*bdt!n.+eny+XnT[O| GH@a7ǶD#X(Ԋ׹*bn(sc(MOl1 =O+RC->x_XׁAՕ8!1A;#7b]ǁ4q4ݠ_.?wrwQv bu5~q&\eRCЫcl(d ihob8js=}0&J}煇,;yi菟M|p.q;2zQ"2ERbQ dL_2rkv*=J^FkthOlM<[2W.;hd<PyK>< Sh|R&h8gP)!`2CHi ;-dt(4ٮ[AEϗK`8Υ]7j*~8w6ľCez9*U$-ƼMKdV_LII',.ʉTG#ElߟN~XNtXj¦9y cig~X~vKq,b;p> >OZ%)UO^p@7r{Kycçf^HySE y),]H{C(~;UrY?qT+ae5z\X( {Ծɮ4 7۽<RKnߚɥ'a/y_tSr$Pc?>6"kدA6޼k9Py/c9 eqȄe;=g?M]W~"u pZR6$(NAYzzd[a6 ruЪ[ fђ*V5 >,>l; '~Ϋ]];T;K:Q *xtUMO31Wʺ \y Ҍ{g79v.Քd= *PǗp7n@R|BmL.h*? ZM^.lx*' ua_@ǃenNOSdqq\!;yO$dA;XXESZ|IYGVQ-MUa&p r.k+bEy,ShTLIyLܹk/XIX3N f5`N?yO.К]R#goy1E298~Tȼ=YϞ󋭩дu0?n} ܣ*3(w?+ fe5IБ ىM%nC]ŠI@xpq<ωpSc6=A{c3VB#O狖Xvw?x&-|lHkZ& Ѭ9l©zܸ(jtfr lbL@9F 2cWE3gG%EtV:`1C:na6x V+A`[hK,e:=q&oxz`%@/3Gŗ4> #%l%QG L79i mCnN|k4R"Bߝ,U^e2S79 ӹq`QL8Z2͡d#([.Kր3_Ϛ gQivO, T=NaɁ`'x<LIOO6 V^>=e3<ގcN$fC؇jXSzM ~$Ñ[y}Q^kV)]=k?i@0ɂX Zuh`01K11D8nqj7FnL( ڊB6!QCS;_ؽ=x r& m yFhn18*sl#h&/+[%0R}tG/YI'Nj>UYon C[YYp'd73Gtdc$<}Dz#Ȃ1;@ƾh[#NJ"B` x)n{`m~s4mٯb M~O ]VwugFL5 |JY'<;D!MVi(ہgOGDŽ@eӪ@--=2&?ū`ܤ^agk{ gH_A ҎĞ(oB24>5zţ$X4kδFgb4g>lcАwˎd&qcbܯN5.ئYXr $Y_H-*9^-@uH^5KWwmUUlK;Њ-2 !lzO-:hɉ-⃘$!ӓXCe>9 dg!̨KѻQ^ufn*뛏м;Z. 4~rI,J!B;rbB ˣ4_t ʴ0nƨ~I O&,jRH1^=G?[;{EơЎƼ ݔ~ݠ+\A ;GqFЯyU.ɪ]C._cj_'1@Е@rܠ 8Kڔk8]e/8r@&d=Ptbv㒀x&? z^yO=e? m"Q'amj1'?U;;$IHf>m'VܭyL5|aIé0vk~V >4#wZk $TKą w>H:c˒|:Y!IA|.l8O=@#K]"p*F< = mw;b3I[V\=D^mnr\˪"݁'o%f Šea^ <ChhYag}jG7t1dԨ6a|z~ɲo>,H7EcPA˃ l4Ub! oy0>zL!ùk,'S BEdI_M۰ڑ=^bEhL MvF$qxH %:?r؃cK/G"I kY`0Evh9xc[_lAkbCP4D Hz}fX{h}tݏ|mR!ܦF>rS,J;~;tMfg'kiSV=w]oS˜MUK*|k]=_`/=3BCWX(`l GHjp$r Xe[儦5(}s|&+t5hc6nJ6x Iqfn'[ov÷`XL2T(,9}c k(3$y[Þ0oD91RPG%֩ k6K`͉fix"aI`M߶l~TŒus }PG)^ JTu:4{*v*DAޣѿm X U_(PٚYE[y??EfIl`M,s=q`}ڹ;g_C8V٥ c/0s˂UHȏ_OH SQ.Sn;M|" UʚS;Yc wû*cwC Uǝ?#{ 3ye!ʘ^P ):@R}%\zCvˡ fsL/(S?baq$m&?j_Toi!,7x=m /Ujг厃 q_T%GoNBk=,eI-W2kUAbjɌ @n[̓_[Pq-{( h"}+0]D-"{)c> ؛կMVGx ws\^/F447S H.>='GUA=VDZ Oާ/!$trX5(w˟䖟irĭ[>LulrZ|c t3;wNrP>Qdk_ Ԁ꣩" "y%Dݪ%Bou8p1~ww :*z9DC~J5LjJmNpdrXØD} 6'`&t5۾"No,VwV{\xJAnkTϠ2HiU7ܧ'ȱU7Օ"}GXu/uXr~+7bYb[#u"w>M=ڧuFVcP.;s'~`@W [f8F4{uQys܌Ȓg*>?4)iEexےo=??򴹸_\c|d%>+bm<tkrh*AJ(Ĺlf&\_$/ū*:B{2]̂&.q <1z$`+=H6V+6bchcEعW + ځp}[5OA=aD, vp. }~RTqSǺ{\XF֖lrƏ&p$={,>k;F7.LN?/\0C(ڱ&2_=j mNwn70tU}?رkN`  iܵm^9cVF^,hl* DY8 n}| m\zgco t5h;*ABr~fygY mb!穚7Wh/Oc͙r%2-*&-u㋭`-EW>e2 !h/B˅NLа'z(0KyhuݞBN(0k/T SHe\;#6k6o`s?e?z$rX#b_t"vbFBs,!7Cf=SШ(Rц l&{+ѨPX| ̹C}+Ie {Te=Mh0xHy [nBԇ DOHp.$݇M1 ԙd(4̨,_lk9uW +Xwלd.XYF{w;aI%`lH8ݲUMz҃]Dzq,H} CR'%:ɺit a4OfA"줐VnB5rX>~ҫxd)z8FO6&]Oc|Woyȇf']O~FWbL"g Kbkz~+V@|l]I>|jv7ar qDӤg7~S~ zkGZ19KrG $ z^ʨ:̡+3g`JW½/,}Κ/(b P׶n3c:fsJݠ]'ޘB;77\5avƿi~]gVa=oI@+:[3X}]3M.b0P֝'nޠo$H_5y{r%^7.]vef&̾E8ɁmL^ {+uk~K} `8t|*Y, &Vn!se:_`TBBBI5ݫYasVG40qn$,XCE cݗ-̐P^B:_𦀴m}Too9:s| FԅOm0)k[8&NDIA}i*w^̣8R7b5t=،\XYhg x%t5;sT7>{En?kpr/Xq,ŊTSű7*.g~@yK6Nrև]zq}=M\vo?}L~q7z-ߖz>Gj>7`|^1CurK=\j PMrf${pbV_^y~(P-e2ߓYgDDA yi`̷~5LM. nJ1”4o?Y.%DxFc1bd,( DN\0d48Y@@:[<}U %VqdXBcdU>a_խ6`Mژwqb`C à$ u" L;'AF˶}cZ>'L+JйJiY+E^qSY&.V=4_C''gV1EGVMYl ?=d,^kҰ(/]eX|uKßc4{dlIu},WVx$*w5Hyufb N <5>,E7a;@#Whukɺ:-.3nSBn3l칍?պZ!cB{2x^r"*n%M?!mT1R.bw0X L;!Օxn5 5瘎2@jxh*,'&8x'KN8^D wDl`" 5we{U '>`AehU Sɘ?- sBJ~6rMDlP&U@c{mJ9/W6Mr!庆}i髖%X]q& lD3 +ARPz+oLγGr+SyJԯO{1+A?HWr ͗ G!>PKR?};8 HGNUSemvJGm.-U#"U-J!f<OV6E1G0{#ϞY lNr_خ B2#)7|/ʎ!^`֓g T&nA|iPo{rfʏI}?Y?K<c1 |ViuA'C y(pb tw0ck[NLAFj9 fvb_:!,6ziS9k ;󘽼6Q3^j1DovzD47FIz~GW-QCy-^ӈSo.4@NYH j՜Eqf/0V 񾁽Vs;hI~Q)GoB@ApݝS2xlu,i>@R͈UʎU\qiS 5 b6G}#q8c{J IC\~la6YHX %g$h1yؒ}yf|#+%BƾYb*>Z-\[GSȮ|Bx orNcNX=a_!xMLTsox%c Mohİ!16g)(frf`@OTh9ŮuNjx 2R>CH. hзJnIqMNVFNW ,Kϡ P \uMt(_̻Az&,W~UW-܅Gu_-V>FzkxuOFbBRHfS;yV1i_1Q|xiO|} aYo@yе@L2 m^~5HoХf=Z{߯`Y׋h o'j@CdfDo$Hv(ª`)R>'&E:ǗKBrcE>&14snCT@xxޮ2ƊWo/@cyOcE䯇趜'ܡ>(G|yPakl0M;0jceKqH7|B_{XlwftCm߷ϡ92L|e7Y6􏍼yH+|pڍ~Jzl+s>'rCy~Pl~G2$=`GN)j %l'E{Y0q-L;LBAR7?0#O$xCE|q@R[-VOA10b6 ovw=7`Gg`Lނ*'&?8.omRϻnBCnCPX_o3-#@kŕ?x$4N'ٞ}4|@/~kk0mYak߳1C4e/?{il OQH ,v6bV7jiOܻz0{vWl鯜*HM:x+ˍK+6ߍm#K-P]۸(W"t6o&Ǖ s~/Tx(<~2dnL#m&*sp ȼȚA١#TJߡu%{49\P]?faݾ.Qc}9 v}{_ Cj%PHSB+4<m';]M1ti踩c Wtmc5v"jբ8ufGQarav. ouH:?)~Fl1FGda&HQp V*^kzU۸hd=bH81݇kƶc7Q)ǨxዤCEXQc?؀=ZbXuЁ_yNPk^yAVm .`9YjP-D,ܡ+68?N:P8.e3}fwRp4<΋x QPz'7}m̜)E <Ԇ uuM96wo Zm} l~V;՟ 1DdIX@]C 4JQ&CG COh˭䃪淅D?ay+,/ͰR>$z`%jQ OYz$J^$ⴃc¹k8Mv}woxzGN:DB-{0l|tr&Zii33hg.r_CC޴/J9P{K#mтA_ؤW/K ׭ب _ٛ[a0~v2'#[!tVg& p,pCo@~Zz&/9mCz饕݇ʘ!zpz8"|{z3΍PvdYmE ~l UQ|К :2mlty>:BH/ڼ^̓l:ƢGy*&b!xgD-F' BÕ?Cš7`H=GDUkw@do ŷjlc,:yl۽0)^3w u.0a'|r3=B#QSez T #oW`ͧ XASr*W|:TSwjY'$~Zc -$ ]Ӿ|tvVBsxτ] ѱͬ"B;)k՗2Z!|. 8M:IƮRmFVY_ hp; y^;~` Oc{%FhȀ:vPl#ǻ__;_YZph~#Aj *s$zl&biT7|xfɲ ߬|t 84gVNvX6 lO ثs.KU*po\l];A;vK56C_W`V#kɳsD%lb{ ,W~uڈcNiuN.+9;l/73,|p 'F cN%-KϤ`N֎Fj8ff,8dڇlGT Ȱϙ*zOb3(8 E?kqј$g+:5MqVSM_CxoFaKXd n.#BGyy.6MwN}D#; iq4{cB,$[ |?d }dyd;=b ,dKXW`;Zh~R}]g-g(RtlvH5Yn煔Q/!EKEF4R W2ZVI*$( 22g{]ޑ=;o?q;u^yuC̩;Ge$Vvr'_ Flm[${"X{! (NE:55ء?feV0Lz~^\+ymgg׿݀tBkSY YJN:ϯݟr¡ʤ0I#'TҾG!?OF4;Uxe'^Z/xX&sLȄ ,ys,+;xghN2uZbl! 6ZcL7V"oK!,5ϺOR^L`51Mb+%~0hFk\2a@>"J?PuAE͍0,!_pt IA%600H)9 DB1Q,7tLf$Ϝ2R^o0p_KIޥ*vO%`ɑ08e,сL&IX&r.|{,s7營2!}IJ!G$#kRX %']cElB$X19% 2{bd4~av8yW_܁(1fW .̓]䈞WM!(}!r`]U,* c=*# ?^pR/$ D4 BpA"$-FI} vR 2?XSCgFn5rKIO=8⇮Vh'|LJ:Bޯ@?_((ͺΕJ~|H0j=ejntgBΥ6氤]c#ͣXj-Qsɺi7!)go(ƈaOϠgjnh|R!X߂k;'k3Rg¨*|FJ8 %-AqXdTZc[ iU{{}:ي;C_/ߓ:}*خ`qOO=e<ʮcDhuɰ-VD!ILYlx@cC?p{3[ӷ ʺ%ЉUUjf9y_l|H۝- D08s#G ,@D ]P׈"Wܠ`^5H:J2SܝVQI>#oMOQbs݅Vds`t:w!lϠxACyZRZZQϤlˣ|?z$޽<2Ż6d+R>8Ăs'F5+_ Y*@ҪӶ7`' yx*%2?x}?}acmZ^VG~:7CY] )w 0HT b}WOLboX&{zFY_ה*VbTL$ ]Hhƛ'qTvۺ&z}d_`N~(G}Jm9{L|=/V*nb^X4&RDl=,A{28,;|6ofǦOuO'6[Չȳ0&>jHO2>UASzlIP9kfX:Oq}7i >ϝ}Ccq\J/[ѢrM W EkGq!Iߋ[3pH z/cw \#𺐖3U +xp:o?횑g)u u1Jy۷>ᢝH  q㯺W?< :dsg:P뛄n7? fVh~5 Dzeoj::)JiIR|t1;k 2jcv{WRfbbXI1Xg0% L{k`93{R;qQH8z.H GȠڀtڣRl7צM$AxL qtKb=EпZzs~]]GdFwPYiU\ߴaO9#/CG BY;CYe >Rs ͎%ĘDm +}5A7ۡmn7XSbf&&, 콷+ VN/#1KBCodNC7q~-_Zb1l @[5uFTY{Ui3x(0+i勐YfUw @g'`~K`J[>٭yP:"ư&4b}堕q\F,jrEnBw&ڒ[`۸;Ns7}t5yvj64]xIM?W؇ܴM(|42)T烞S.{o,7T:')9£Xhѳ0i#Ak%#}* (_펄֗PsL[bכGÊϦFMn^?O|PYH׸) $n|謧t{EKȠ63ʘ ***Hctf zT\;"誩 ~*^XI=HUMq L&p{ci*}T6 X}=̡zuSI^w|MtH4nܯC_;7c`4ȼv^{;} %2sځWEl}l؝kHWR7 f8" i?dBc'xq|j %kk5(9F\*7@_tjHFڨ꫱B_sP]^"4@T@𾎩=rSL-1 ڒ,ß2[ +Sثa:X۪řZi<,YtDZԠ J3;xmXG$9>XtU IG@(\Oޤ9 fqA5Kia`vwP 0@h[^e(Rb#vUg5ۚ,x l%X^9@+ ?N5^):q3o&@3jF(sCnȫ'5ȤtX3waX7vjkY҄wy^j!'B a: jlڵUuP>8)Q?q 5X9~OHv V2ڧGި#zW L`7Pt`e׳o@ @A7,HZ?tjad2WW`3sg䰩&}gVC X:,'q'xs(usq+8xUS9b}{2_~ ϧ3 GKx.8:g,HI!\zrܿȤĽW]Fu?,讽ƶ'B'SUHt=AB7:j14~+9s-b XfxPDdFn:m&-wLÕX^sZyr{8/;H5g>m*MA׫\b81'<>?ChZѦ+JJù}E pj|=*Z"a>ov(tPڽjRf-:B#n=g_ʡZ{.T}c*GR⑽#M cXҖvCR`C`7PzY{?dh."Ojߪ#Ú4 Klv"rC= Yoa&EAJ(U˗ lr{Kӄ %wlx9Ժdc1ɦW.2:]|39 1=3lZ}f${8@C8O3umP 2xaj $X8/FbLSAcFl0Id6FF3y\d[e{[H@?| ?EapR.a6X[69}EJ(֐$4Cy0+t8IQYagj4Mߘ!ԣW7}c턀r6Z fL  3Z`)]ͽ8Hh>جJX>,SM]P\6l\abjoC5v_ىmghZ2#Kw 6O0s꾤aƚ2ꙭ aKm]?|G<$`={ b֦M|./.`أ?5^N 0&Q:a " s:\?WHVa:6lcVVcYV3ضkUEBC=+(_vIxѱ3X&TN<*a9ֵ!쉸<9׉}'v]Bq%AUxr|]1 7H#+nOyUWZ27!/\ Ӓ`pۦz$.fe׃J;F(pͤ?~kMԌ :+@uJ~m ~. -8A&tO xȬ~gaMb*>ܜJ"b۪I,`Hx{\n<> F`סSӻapum<]hh O?qb1,v Zš= Xdޫ_Sk?,ϱ' &f?0}%Ί?^BOH_s9./9;g@+=";qԚB`I=,RYqTà/w0tDɞ/x1Ɖ*V pr_3daA1L ,w{k߮Ghy5rbȿ풛}ap-'t1]&ϥxt+6,kN`_ZnQ~}襔\o$`V~dP@[m,^,?Ppvr|Q]oI@i%B_˓h[d_Gk yCtw!Uny{" <JJCנ2lDH~6Nx)]ej}qߠWDg =p`A𷜐sad=A14O!zoݢ<hIcy ݇ ,"~^hNWVU}mYKka<2z9{Zi;34b#q5ZO[ eO{ᄂ%QgHWO{f9`]^2k)cqv1?|^I-f}|8+ _~#As{\=MpVHH΅:E>?O'-;!̃"Zsv8^bQG!@Q>ƃQRߩ_5L/!HĜ#7t~-PuA0Ù# ׳HӗC{ ^F/Ȓv`~Io,j;NI =.%MY'٤RpcΟ zM 6g{?y}:Кe% 9S;(1~#d#֌n8wdok5486E\;$g'B)onf UMZ24%G-gg< @_hh%T'\WUKUqX{5B5>pvrg{כqՈL圾0:<% ,W5 v{NY!8xwOYLEftkn (O]rP|l)&=}K}#4ا,M?h/ØA̋V8βnV(+u.hX&g&X_E!lnJ &' qq4b8L=gU`/ޠ|J" )8tQʸG`s釦8vVra*d]#єApA+ϗ$;O8m@۝1oW?[܀XҰ@!V>*j3 P\Fa!f܋{wpyj> }3S"XV _Ĕ!.هXwf8oĂ|߽z )< .|wS*UeAZ'=џ:3'ʡ3ӪJ'>OvoIdO{x0+t/gE$}41t/\5RFY[ !w`a& ͑5ZXS3Q f=5uq1Vh1O?cE.^;FM{ljb)aBq݊.bw0j pwg* ʔGXG}&ًX$y@ A SDzף7qwK?|,tȱ%sz3HżQHJiͅRŜ7~<”h5o׮7ձAO "S=֭Ygge iy#U|%B'Kl.Zعٍl|ͷ&+ .|l26rǼ}RX8z/(FkDjs1؍$m9ww3FkD+/y^z9MOQb ޷i rc6mB2Iw-k Rٰ`ym?K?;3oy{[Ўݫ/AIy 3w+| OXcra B,W[XgT$_uhځhm~~pTjaQ/;zr,EF}q/S/ը`%Gf[t`տTC! ~q\vHX|1?+K`i., f`@ ];%XfE% e>/c5/"}w;zcV=Ua5!9l3xxs~O`$-1H=֝p7!_U3ZlJxNUvPB|z,gq]vnH$ԪCTHzFㄖXy4)+ }oqMEH,~$: y5Y4 %$ؚʒ۰VT$v󢥄8;xeP[|e.t߱{z =&eS1S3- >m*Fr^s܃ E;a9(ar(2֣X3sEr bUpQtLdO7XLA Ώf g^[11OY ?g<_cېϤ!wcLIstH:z,wK؁K:9A-eY7ҦK =tᢚu[Kb-P%-k h[)S zJAcSl+7sw%Faƃ.%lPTNE J?#~{Ne%t6Xxf2y6IL?#vinl{}|;YElk\im`i·iBsζu3D̓b] '9jCbMr&6/qbЏaEA[,Bfy] l#1v /C|AjۋrFpU8Qj-QsќG*2{ [5԰>6(s5+}N[/_uN>`Q2m KEcc韼.Jw(֌|"\oqzO,g)q­UL:/"lsJcԍ1#qK|!M(.MKsgQ>rFNVJʲWPk=|t.`` ns֬=#8͉JH ?-Ųمiя1ڸ)%S_RؼO).VweA P/g;!J:P Ox Xв/pMlAH |.) Y>,^-5Q+|(" _( q ǷwBҴvОk% )ΕwJzed/f%6ةj6d6ghC$M;j]9I)ӳ;!g ?@nmUb uBl{UgjȐv~h:u>(VZ׿fj;‚DGX^ W #G>Ƶ?"}iϞpB#bКT`c%T;V%?ETK6Bغxk5Vr*y1iO|&3kA3CП1P]T.dވ]Qf7oBڣ͗@D;3͘#y|$uwLc?vȟSۏ b\sD\}K49䊼 ٱ?ZOa'.sR_A(%ڣ#]Ņ؝& [P!mGO7@ˎ>RZV9`7R5&3|,#}#>>lG>l |۾)6 7b6ꞧv`]κkbg"'%ubh${cYnxZtظ¯{|Cc:bу[LU_rQD$J͵!}^qof ׀Rཐ(t?, ]WhUțs^,n&4-ovAav+Rt-BnsNY^W5hqzH BS|Sk1V÷pYSBy(ozPq`H1?f?^ZiPL"ԟ&@CK&Ýf2[;y /S3td2MݵuL橤 {W1 !Ȕ3o,9OaplE,*’dݙ9}*3&$^tVQ89;G2Jd8z2>zE9z]`Q_+Z_ i ΁wbGGحM K 6럽"wt;_ lt%2H5,Џ6ۺtseȅ/!U@~ :3rH߼5|3z R[i~¶52yyV99;OG疄<9L=͖&=9J-N/.Bط$.d u?ʤЬ6ZQnBӍ?fO>f y3O2tV_j+uCd7{A;Jsk[+Вnhܜw#-V4P7T%hs.4̬o#pL' ."I[6.2\1@?p{?Z[=> _aoɰۖySN5cZ8pMg!aˇĜ x Mr8 P7ɔ:Fϝ>0U;ӯQb5Ǩ t~if{ />Ljs 2՝`o{bv)~xLb5k y٠C7i5{71uGj"d?4^x{*-uKe ՠtЃ^HDwX\^Ij%``$1t zw~=__>RIYAyor)jC]塘G'R4|e "FۖS//4xnr>䊝4q[k[Mv9ч[R(ۯ,=Jw_xo>#KfNezT %rVNԣQ$u~\0viA h>}1C:L:ד*k8=|߸oSsQ~qQfLd{sds%܇*M+pXttPf$0/lׁ"_Ow/9w bI{zg0`sHNmb&.0?ޥC%G ncqUj'_9hÐdH{3&6Az㢟,f-=dhCRJl!~-RLpGDXE L\!Db&[) 4kdW160T3Q+CUH|ws8Tq049ϥTbÿxs.?s:s![r8jXb؜iDz#K˿τ+vsw푠dȡʍKNi\A*|W,#z,n >r1:|"tP IꆞuZm*,ֿxVgԦ^bSwXxQC> +5 :kG I:,SF(uA//h9]]ɓ.7p#s"G%4~55BDhp=wH#aVf|]n_Ŋ+K,협GC~ދlzA4aJKdPGo5K8w6+صC½@'#GR>"Ýf%w' ?tN6]6 ӓ-<?ZFݏ8bYߞC̽XۡGS9•l_tdm?|&|&}7$:9[F;p5Z<*;w (^۾N'ҿ"dnRҗu`'0ƹj;pl$m4׎&EOqZ4pia!.ȯ}GYJSLdO?Ա:b޽ryxIZ3hkZ8BVjǏv "Ep< `su򛉜"Iup[؆=28O㑏,+B w:ΝT,,i ,拾Qݳ,p\:%}䍫.qQ.vfwYt=2 .8Us E2S@{ES}!ZxTjyv\]^va-n[5~WJ=j'cY58HOӤ5{7agvT_T_꺁i\J+8qO.#= Z}Q|2T bD/ȞN~$J< 6>Ղp0*uo>vΑtR=E§6 I.~ZCYm:TР6j|9ؗ{m` 6m.e~>q ϟk8ŧ׭a2iHi#:>Qæ[Dr25$/![) ?|\x݂Uut.<&(f_(r|Ol7[B꼩`Kne,L>?){O0~vOw.4%ը/LCEή6hh1{&<łObWz}XI=ʺ~Ze<,3 b{{|ų5ze{W#3R`16{_SB'i^g&ūܜuRNʒGi &.>~|녭xS5gQ k߼q"wvZFak~Ӟ\8Eg\"<سO82z R b3߉Y+'?:{[t~}%Nh_% Y{>X[W^ &ǥ$Lv\r @l/p%0[^'@%yP8SNf0S4C~ ]\bȤʑ|;,֜NBkbÁqw?;9X&e18d`;%vnb\ɗX(v3PQ3C gOEu;cS!"ا S'cB0]D?>MajtAEIR;ǻb|"#`n|Y*Ǣx{ 0Dȃϵ+p[_a{T0ͯwhxXBߐ\ǜFu~H5vsM$ii/1 2O4pP`=m"$1oh-IGL?PRrK2CnXbB?nzMэ_gj`91C~6\XZƀP\ u*\.ShL:Qk@Eï!&JN@B:[H \*󁬺0gz ̫cymЈ:S[аwUn MI(q]CUbNBL;;1i2i<Pǎ&v -=W簱 q:;(ϞEA"iseeԅdWUW,x\g?gSbܨH9evF j: m|~-/Hd N9t'ݏ9?3Ub,ݸ瀞;wfSX$f \ Ggj)PTB$r7==y޿jTY%t _V 7<_bӋb7rD{ Abn -fsm~hܬ>F1cR Qpְ#?b|gQe?IvrG`Ͱb$ TI#a+P١ |\tN}ܥ5?j h^q>Q ?YpX-oo] myz|;STzdkAXx<4&3 N.{_{~<"8yDXp+9 CFy-&k/Yop}:7#!ɔy#hD0$4X:<*W CCP2xN Z'xQksіSiP{ݗ n&RK(}Gk cU>H~2Hl.)-JvJWG~0ۄNHHy<> //GC{aLj=f7A@C%d9f "$3Hも9J_Sש> B~{u#YfqW?o[ashșg:$lAڕ"FGۗ`DwJOވf \" ^q+36KݡЉ宲W`D!+TmOl _M:[)t%Bk.w.Taq%+gcb{ ȓAL0Ĕ"OsdK (0ĈJMf1ܐuJљ9Y:-`Kt._NJ/(dʟr$bs/6VgVw9IXjՊ]WA[[ËS ~BE' *k'`N ,r dXgPy ;bZ韰N37ȿitv 0Mn7 7(EJ<{+{I7W߂Se@cm':Gϔ~\ xB:d:^@Y{DCimȖ=48z܊stG"(!j %OB?Bq3rٵDn{ Xd\Kz?wC4frKL`|*O-9Lެ t΁94ëj p|i>fkeo fKuW!/=}xlm7Wu8!)o? y;QHW v8嵃^X2224}DK7ߤ]irce5l^io89\*-`Uv TZaR[Ehd y֪jJOՍAJunY8v]}WrzY$īE\ֈ')7V{>dE~i^ʟWH\1ܚb<&[?y`s:k}(a;p"Sժ;~Yt]Ca潁WǰD,A#},1O=E97rh0@L6[~onG\. C9FYL #ƕPQr3uI"Rl*MpeJ%U.$*ziAt?p#xVzvxNS,eWA֢Vt>~(VwZk%MnB;ߺ@[E;i4֔JR:QJ53;4qQ׼H c73?)y>{ zγXKǯ-bԱU إ~q9:,0޷KH9nZa?PcԼ_XI[f*-S?| 9v,| t4Rݻ?mbj'MXx;ƦU-oוVsaiOWH Ek](B@F :c/X@-\vzw#Y/ EJ Py5hsRpgzHc£+u]R]3z~Y}O~_'Hٱ@.Wֹ/dŽ[cv|}{AsB0&0qK̘Czgz<@ :a:*e+DuGjS`m-(%۵5GM륓͟+H=4G, b}/P)f[r }?z캊r1rOFSdڪlb»کVN(-T8;0SP~cY=MS>$7^'̬D9T)*J|u0IUWѠ$#(0&Œc*P o@Npf=l9UIP_JN0˔Nքjwq*H|i'v?_tΌbZ}mNVg21>M;.刕GN@]8 ؙ\πk'wFB)[uSwx{z +ywC m'rn2h)e ŵInn@͜@9VM=}_a)n~cusCF B/wi1_h*K< uj;lU!BẌ ]$Vݻ݉4Ɛ%g-ZwE.VgǁT=Y[Ik- ˅9d8}ESdwzhfUϊz%/ 7l#gօtݥKg!}dYm'6$]iT>^ B7~Eē顅*:AR"d"1zj.stt]SBXsd+cm(,ffT;ĉEMysƶ/y\HZd-Y5IPzYdZRpdz3Zwl-9 i"6m[g9Mȥߖ8Bli|Ϙ d6Q /B~ + pT A0PL:d=nX~ŶSmK{Y6NUOvLb4r7.տOXZ݀ 3raq7y(KcDzdɓݜGTm$Lnr fPpK c /] '8S&U0@HS Zs& ra7G'ؽbRwh{= }t榪>y{bj@|X epPkRǩCe~$0g/W9=;H],>nT9U,OlۙN0,bU 6!XaڰךW~n vtDg`_#v+f32/@!e)=?G_(ؼ5,.A_+ZzkXe6JBQWڃc^dw&<\Ҡ:z;9\d?A19a_i|XvYh <mڎ@5KWB 3zvI؂&1ϐD(} ם'p=j9̯pI?ERu(0]âwԆhqwaGq"Al1AzӮMשT#xٽo{s r_X Z>oy9)7??c9Ͱ.da3ψV򭯍{A*Yn/]ȢcbCO%Y4}Ҳ NRbD*)'wR`A8]Zq)Q1hgxl_3QAg|.@99bX~ypgj)mzϳae I.fG)!E==̬{קyb ;pF(oQ䔐Zj[=&L f7w(s:# ]{ݷ]<ݰ?cnHB9ۮm&-|V?;CV=Zs9X@c&#kj?:w:e/%BVdᯄ7P%4~j>VI%H+4n\K/ W%#4AK)/BMdmwd[e7(C\ }R%~]-%ϔCȪVL>4)[ s^y*rش BnsG=gzUSkQML碱:~k_.]Q{95ATPrYd==SB?wNA^kQ|.R\72^.o2n&3\/ o{,K7,؉-f3X>Ts: (?KTLGFNQ5L5]&8a^NW!Aھ.F䩽 x!c= Mzn(X";ރl̸XBͥ a<0}<U,j}c,^AMOVANĉQP3x֦OBQPt^s7PP݀u}0 2ġ!nv]b"qbtH)T^Cm{ t0*P~f]Lq*kq8D% {҅$Ƌ@qۘu7d8,#pu ]F W.1Bn w1Gr>|^xCky>c%avYpɧङrHD)x5M,cX}`\Yz|y;z0-cO;!Wc0xZ :xS V,г. 6hDQf)Fe~i 0Fl19^g(]>"T喙t3e 6mڂ*dUdm` ~+|xfcx2 v6ݢ1\bǰ>L-p5jDQ27b{}V0!|_,)vMyVT.Y`C7 &m+1vg;%$iaZAÈ;Ŗ+2X$:VwHcsV׿GflHt̄|r2Pb:^З W ֕TC8A艥][X'T)$p 46`NS?mlcޥyE%(}lHJ.<;ynof۲TkBNVYXl,:x"KXϽw[灲߭f?A/|~?V)`:VU;,AkXuOنgaLPMW!< MLg1VT h5V >YX8b(#9|0FFfK͇5@ҥx^L]'$( T]?' wm_oS-Jk7mǜeAY]hNo/D,gM ]n0K/+J\a;0>J!+5Ծaxѡ-Ev|>\SقR- 19%$WxD\$@[Q&%u_۴&sd)W?omBR9ә]Xi?=^qfSn_Gb+}-YlL/2GtZvU'AWMj'>vN.f*R:u2f}J@s&T5(9a/6 2"^@egPz>b/B Y[XچF.Nԃ@ڰc1X1v]rbɧQCX ʇ>!aX`2zzm ٸoB{܀ްZX,фrIk!TP4dnrouIcsѯ)HA/2#u"$wqɤG$~;jilm1e/ׄ`_g~7=\6VJalZZ襩LsG$ =Dpn];-)ڿ a>%X}yOA3zp]*`ld3܏i$ӊ!̤p ̼tS3؞€,}0/RLݥ%P*E#V<# 4?Bԇg@GٟAGR_AiK!>N ͳ3ļ0h-tj'`Kw0@1`vz)w.AxSAkO^Fi$;,~|pj'Vu23Yy_v[zt,H%݂e惰:,k"T&T9}e[&r:2[ӰK0Ȣ Cf(aVwTw鐣6f(ZB9_f/}40sn{ /@) )2C]baxU K10)R8R()[Gaǹn# u06>мo {ʆC{0~.FwyC68w8 csDi?}R>,JVRk@ŒQKrwԢ895& ܮ>{CyhQ%\ e~+C5 /;+X7BW+k$= R!T,Z7u<}vP#g|mr`W.Y<1Xj) bź!7fSB-*\X.;1Ww[c?+fk 'O톜 *Vo‰[H߽a.οe|f}:\uo.BKYnȀ uS>bIԍ?Qz&8p{~ go{;3 b{8u<\4[$# TP:* \7/0e߯7aX ݪrڛ j8AUSH eydRqs呟C\4u,Tk7_'(> (k6l}A9cŷt{G'#s@)QLjD֖fSo1'>Hy0T; Cw BAŻ6oyGVw@$zӵ(Zᾝ-Μ7e͉Ֆ@Ԧe Y4 @QU0nԮ1r9뺡RH:jyH]\AmU1, X9삮7ӡ4ǡB2Ҕ}C@ݛ~[ҫ$[o>Гji{ttằj3f;)Grq/GQAM2@w|wg ܀oPq/.ˏG]m"?|Ʊ/hF ajۏ D i&U IT!םjV;$'T,Lß0wFу@2d17R;q]LCے{SR@Ej"QhXkyZd n *:$&t<1UF%!K$/Wl?8B2+t#"". PAJQ-? :rVFvCגng]lvj^wVH^;; M"T/-+"(= \Mk(3F$K-?q_Ų M:U/+!]@8A_f,V:Z(T 3 z&!;Z#¦ EaRSU.dR#W!?,/Bɴ*JFPѧܨ6(Ve=mm)Ds\>NX@\F3Ad8UW϶V#r\P+uoxQ[Y WpQ7akWM9'5Rɞn{XӬ7N) V m1$L)^g e#0]Jǵ vZ߽ Ꮿ<]}U[ ۺz!@ݨ D )c}@ܯ\>*+tձh_j518H+RZjB##ݧSܘ3/[A{ی=i2},I^q}Ks>*,?MpOLV %vEW%Z"vH :EfdWm}tha̓c f'[MXlqkZKŕDujcxhv. AmT6fuaR+Lΰ:bLTm}|w57?E¥7eo=?a{ b[1,,x?R\[<.?0T]dp=J 7] 4^/8hR໊ 9qWϰy-yb$'YonS-ܝRʯ ;OAWWD:z ڴ&bX|ȹea g|ذu&(h+u{_"ρ&E(me^7 z:q@#ZL25cI@n BkwIИs@Ҽnmq#|δ+t֘er8R`[JH9'+}6˻yJ^Xa)lwBp!Rc>_T{E J2t# ^JaCJ.1aVY;OQY}K}X4^m:*2qkV! ^Hg#aPQ9< E#!D-&Y"_ېm":`= eeƚ&m?P"%_W ZV6: d^3b 701 gQo*1~\ e"gۧ4׺:!EGGp'0o]Eon*auaMlnدf짓Ʀun%me w\o@SkʥPHq2m.ht6*:o xl$e)ȭBɎSܐHy.R4>w%cr3 mx :e{^KQ bѥTEpk=IxU S_|M b&R"*`!%!]tòtwc}3;\ ؒs@ԅE&@,'k~Pc)ZFKnyxA=+ [FuX^2}81,Ty))pbgi2JwWq⋘Mk ]WoC%H+uq2ދ1عӈUmz%UʒX@{%qvSt8J`q}XR{5 `uBF:fx-Xu'Ug8Lj$!a0_zk[HbmŴ|\2B\c-HjahŦeg<{^Yж[Ϫ-R^i ~O| 7lC_gL+sj N?ڜ<4 ç+W|Ss{huzCG4&fnkh2~־T;i6@:Kv)&hmקoϠh!bVc!ug{wg%@ߧ|QjL.4nl-yut゚:f Uyit-0l5֫Bl0lFLOtAuW_EZs*4^i(!sr&(VIS ,reBK0rbtF%:Y5iƽɐ5vi VD]'Z3O`K]G7]}%f{#4_Dȣ{(~ǘ##442q%ՃlWWx*v]N2?GDgO~"ΪCEiMo&7LX1~MߟƎ .иQ y(ПM'|w^A 7z$[Ҝ,:n]M%so[ Ox3Ę~`+̧n<B^?;UA&f{9 .NT?Aul-3Nw?z@ d۔ :9D0\o\r5$ J_53.S0~9H(4օWݤĖ$^h'S֔-l,Г9vY!LT:} yi%+d$}ӅPΟ<iY~] E%_T[ XB@ī?s/ ̱9M݈ !@n=2'bD |nsm|;Ķ~!C.?(f _AsiG>@[j^/lB!mo֚qڿ~ť̸yCvn-cH@HgQ ?J {BМ|64HȄVE!>7j/RA@l|{R)jKNP\ƏFR#Z[0u"-^uE *tp>N.C3ǞPAi|rz4ӏnpxDHѠNcC{1OujndG pu|IMkr7D$cԋW<OCTlbőfphxRV(.bYZ!?~ͧ1 &K 11ߊh{I=RK1]`s>k[NEZPX50}-6G0&* y,TwA&OKah,tWn]9c D(6`UjlKfܞblZEovD$H!eaW5N2Z+,;T/'.`gX8t\_?QJkԡ](iWF߹JT27w0W7ͮA tȩI$:ME xUjFdq D&yUr=ZvB[eoO/ /`i0 1Լ8,GNޘf %[Ke{ⅤGV@c>wk|ߣ_|-JBP'2~!T֑B>?$*r贸~z5;!N W ˦߅Y5!SHK M˴>"J7>QD( dEFH}q \oٯ&_s/]S; y{${E"B jF1EzUc++u eVJ)/$-Kãu+7gYؼ޷LE^/bќciW[`B/?Ғqw| ya#theHjE+xanAw;8n݋ӯ@ Ij;18 [_r@MWCj@y%34IJکTҠprg/y}}9cuU)Ƴmؾ?&ƛ[ HPYT֍ F;g|I,I~ph<ə&1^c0 1+\ޮU| 񈊺z.F}JW1G|lo,P|N;t&dȍ޼ E$1#] fx1yC>=#ysdVX!v߾o9iW(dR[}FCl(ܵ37|ٖ W\܃Q^/AřSP#7cg[qXmcOQ<*fߍok@Pix3?Awc?dIș29Rz'#KZ<ɛx߱N[uZĢUyM/G C2ÞOٽG~m/,]T쇭Sqf@|dc=-ؚHIR]o ĵc.8qhC>ce5誆՞5*X>zؽ m w#IHDQRM&Sz<XCح@P%^َ>``c3*MP(6^͇ΔNKcOCVy{{,.bɛV#P"Al#y0J(e UUp#P~t`_*3|مak@>R^+1C ڄF~^}Y\CSgl[ױE~j.ŝ8PE]a3b|Yw\pZנּ2ƛNfP.T:95y,zjAۀU2-549 *Л[;|ua!*.RʇƂd;e<PBrڟrnE'3%{ԠaI(j=7s%0KwHlu;Mykw-'r({ |RD=JCE]VvrWrh5<= |k·Ő{w-M(Zt&᱐0\SyT}y9%X z8<of) cJf)a[N+{cͽRw,\IF?xI܃wι&1̘<:g]l*`M0u~}]_}q05_S6oWWB.]dQKc+k׏z{K>`V11o+ְXl}tEzb=%<4b1N+{$3[Cx Om=X)fh1G7YegǸQEww`y5;@/y oSĕ-7!-#@#r.G0ڋՅ8Sx^y#h)/ 2#)rQXzRx=d>Rͮ^n>EH;sC4Uէ[l?]vVxtܞ8'=c:iK+ c&_j24?*tF hh͢=4~9B!/⳪3b#w>rۧ;Cڀ[YhKXq+6wg,N60NMn޾-6ܞwbOIQ񄭷,q)58:Wuh7<\we=1ۧ!P1>R>]?/oRo4 c}B׮ۘqNgmFgd\ o9MB%ZVKPy}c}+Zox +|h.y[6iL"=K:̺3YZoteu^$z "~==,;pH3H6,1EozZYTUrzP-H~e XiWg2"J9u_3*%'2 M gB3s8XxK8)Ϸɿbp(j1c z̕ 0>,Uݬc`KNKg1,K<|e6^V訢ur\??{ŌGC)JDfhk p;`"((#"p*aI0f',f?2ԅ$VNz HuՇ:/mK.ԷP_V.'a,Ჲ0߻Tw RpPiQMPbamn]w,N1۽a;4 i'= 9L4>"8i( E*To~AFIvc;w-s\%RLu*] j'%/tZ ,3՞wmcoPA%-!ʿ׊ͱ|[a icax@3rʱnpaܾM*.˜&~*(8;5fv?ǽU]/yYJ0щ"0\y^ VQgƷv+3ߛ@7kli/ @o#bcU4<@s> uT#lRr'ng)ra֗$^y χ0g@ͱwS$ z3s@CWO[Y_<C_~z5Cw߼NHN~6Z ocs\ ~=ҌQF'Th 6ZsHzl%@rL y;QH!k.mw΄=*Rm<ִ?.y/acGo)%@dz FDX*.4Ro~ioJS3 H d bꃄzjo>Z/)9b7EXxl%T}6 "̏@B_X=)85[ngV0 đ8^9yR7νB*AwSr7(#%QBf{1u}nkx Ɍ"qd=Z*S@Rv(>>󳟺"Ƴd@EQҴV`y׺(0]6HŖ1W_%㱅ScgH* uTޤmfWw[\r뗄)wiKӕȢg<*UA{ؐ84DžtO^%/|~NRb+?^{ؑPW ֦tnƝVY&}جq(Sr1#;B˚\4zλ/>_KMC'yF)$t܄LWXfч̨ 4;#q֋;5{L\Q0SC|g28[~|wFXFS6> #fek_:cg$} (3nm;OAi/ή>l𠍟 v^*kOcXzG4:.}} H?=MbyE5IiZW'UAnUπ(-DC )a2#Pe$h )oŊĆ ciU9x{ @)WtL2D]vq(cg]/kꎿv\>v~KTֆzN1A?(t2Hh4<%I$|u(u0^yGo?"v-U{N]NagqtyCr(.cv)V O/\ #'z_ sƲ:C` L ɑ9~ K>1i?'=s "+;(ľG._l}fA^iFRB$^@}SKXq@j>Z>T+,wb=#j~AL1*C-5jup&CF_cx,Jp惨!YRޚ!P]Ix+8V\t8<5h %lT; 3}.ȥo^V0*U)0o ]G_T˛;UЌtbr^ug1P>k 6u뫐SUyh[ymjn]h9r7Ŭ֬ajVE,JHX;Dﺏu#t(?~R2Ux{ (r'@[w v 9+=j*DeWmoz'_C(X QvP #9900eHJStE+lb1=xl;Do3xC|+,TBHߥ𳘮N\l;O>_#q"}[㐊>8v/Je߱ôTgGdJs4z i9!HOy$fQ٪PnJtZ!<)˼,jcYP{DO@{T u1]a6n:`Hs%VQ^ x$5^T 9bo,]yw/_믘g[32w wjI"eph؁LsFTX-S³djlC lwp>o|ޠm}*9 _}$`EoԑQ+A u?WoklH4{,J[ .M$%.%j91P1:|&BǭW\&QDj)j{}QڐM1V\b;&j Uls:fZ5áLtgG4S]4uXf5Ȯ. NA!#D@L,De1 Ժ7BiY4>Chfʧx ?I y(ۿo/]Ă_}q]es$'[规Kz}Oؐ`<qmz`Eʂ{._zT<*tR.b]"9]ϴo*m<7K'^TT?5[C UxDv":yBD !Wbkrf=TV| CA=A> a$'BKfL_Xl.Z~O虍|k ƒ_/-NM*{uosD4Э̮jO_{JTٞ[!]ܖ9p';Ӏx|$WVd1PC2o1 Hlot9gь"6ɇ+[9"QxTo Hu=fC)o+Aמ8Hz=rAbqN>G\;rk۾sW,tL4U#܂{CL ]y DMh= J Y-/٤r s(,**彑Sr֬1(Ɋ6#øv$$IYC*GvoO[ghS qG1,[hn׻߬?@ґ0o;l m*ngiV4V_nb)>79nBk.OsVZW톨oFSPC` Vҫ$_mn<ZL312^,S5"$7 e JXhs3l29t+x9z¯ꯛ?y=v u{IztmW^mKjk2~c]s٨hpb^; 餳g"+y b:&k#'}<?||\jb%_&1zK㚺v[Pǒ#%Wٰ֞h~G)7ݯ119О#_P3p~\ ϑQAuz a2PU𸃭 (Rtxvr%4M^{bA{bo)=CNLJxC7L1ɠ`ЄyW6sjK~b.w&ò݊0CiN7Oj}2h?}nK[!{K)dYc}-2<VBv$cw߳QΟK h%tUyٻǁ|& }CrΊbUQU߫~|_+aTVu8WxXxF%䑥g∑W8M89Fh&67]4TkJ7+>w/2߳s%):72Ol~j.anF3+O\fw*i1;qHؿo[yp92$FOq٩Q{hn& $Zsԋ/o@޴KaXtkټ{V٨2cAjhseJ|7)e RVad!]]DJ ࠄv1x4-`'#A/$WفqZ&5߯nuї~H:$ְed> J#KVJ NP+C-HmAyPZ;6~Ɍ%fna\_ՉSu5o6G.?6e#rRVq}u-[r7۷CK 6}'l$czs>Aw5[=#]' XhH)/ koA/h Up>2YhT=ܵ 79|nalӅbOp)$0u 'sd& =iQoo;>=TUl1;E1cF:X9θv&D!w9YT%_/<:n못/YB~=:b e. ou:g=]yP6]5ԺUdRԷg>a68@>zP6}+ Bnݝ'<ɐdZ/xd핮mڅߣ"PT{j+X:c%uc}6lk]Yl㩊/X~rtqO~6`>;oڐ~yD[{'%~?=_D},7PJ)巰Q)8GK к,n`l~ąUMJ ,bv伷 d0D[d'RM]Adb.v,q:BR원pl_,ZI5b3r)Pzi=|J) R/^ͭ1usZs dH(<1q1BYH;w%Dg1o/j_`.w_\N׫>DꃷB$g';NW)h@@tH?t۱}8T#Tσ1p ͌6_(A9ML>P'gyե9jB<#£2}ET~٥+ YpwmR"%lj̏S#&`ы t}t%O\O,u4=Լu [׫&)+*1bؑ=#>n вwĕ%,v"aܚe OBD-O\#v4Xhx5ҩ0c9wpcpk u@}$,4{uT+D9xe:a>k@.(݆"XpJ =F4Rm!y>_VCޑ}Y{i4? *1òP D)Hԫ[BޭsۮV>G1&H:_bѰB9paҙˑt@7(Q躓!jG3%3OVq9fMw3g5"mp9{!4u[e2m~iUy#A17jT1c'w?KyоMOS|>.֏ ZcX@)L-n(ch VܙYٗgqfK {;s4v|d }g?GW F|nwZ[}7gc҂+q ?Ь@^[Z|H8FF\oAT㱆hP-*k{Ń:T&GHx ɵAo&9hxE9.A6$(`: (ҙ5 مr?@uifQn/TОbzAvB͇^~NI|)lo>Oظz[N3!Nb(^r8Ӿj>=,/u[sAI;UPlЙ 42;̐Pwug$]h\URF M`^XD<*9 ?:926ob4<b k\c.L rLZ,*+>X1 6۱+$֒!"agy,n "{l,6`u _ӂVH,LPeo>ы>eeX~}ȶKTv~TA;lfؗ~Kcc`R\W$e͞fnC7zZu:;ع '֖Ukr"SL2ˎl~"2 Itt?OZ\ 1iWkȡAlm[=ЀR5" w92(Iq⃪ͻh_YsSvG}ZVf+g˟2_utnUtW-;<ZW3M L%]&|snAj H\jAY|EE(!9/[C*َ 8'{OMv|E Аt'4. j-iw)#nBnNI@aNp,{NLAɣgLcJMl6)mk\O-^B7Tz71  5׀F S)['Gj/qݮsPBR]1=/p!'#]0%=֠pbTSwvMŸ*y-Yn:w 4w]ж?d(zTXFҿ/p[cځ`'/ksCLs55z~bTϴ5.рobԈ&yY J]rZ {=-sȺߙ5dCDRH, ֗ T;fq|K'B|~ *SOJ4~ η >Ce֋t\c3X)6w "eQ sd|KX嘾&[{3͎@96) 2Tuke2w[imcFZ@M6$wt bcԫHh}.΂_c(Vy7`Fqtjcw9V}Ȟ\oQFl۩6p_==GH y(4t| {R~~tqV-AֽSMކܾ@ʥiȖ{ ){*0ϻEyBC^'"N)\vz;ͳ7ޡSjmAnoiL9yo+g_9nȊrwr&fg4oB*%qA>) dKD3 NUX!.(|j/*r+1rvC/Hmpnn3iwտ0f_+-)g؅po?=;"ϧ4??BHP +͞aUBn#<,namǺ6KSo \G8tׇZjy>sv$޴u`ºq+Ya}=|-bs358r/l~?욅ȋgJG~2`áj#)O;sJZ+byjb5qgAd8u`(NX(Î'pȃu gw^Xr_3+v|(\V>&xa7GS3%+ټ7G >QۙJpUuT}z&;h %sKN:UK!G\vE;{GnSO؞z.Hi9L0;<SF8?}?K |:<ܥ(2 kUEv 35* GǼݦv=u ~-3 qF6ϺÏ6G׉s&s4X-ZC*C E"1HCf,ō 1s;ma&%&r jG-b ij aFgx~,,4SC;Y `@Ιhie,zadMs*98‹g% k/6Lnj;. %0Y;2c} ر Az'$qYRxCюucZ3yP2'-AL~lѪ?bߊwZZ9д+wE8ʱlEc|)kν'&Bd^pLS)jH Լ|X&w>'AKFJZOYiϖUvH3mr% j5~貐I50 *K^љHcy4:1d..L>- |"_6b;(O5b)q'54Zé|!'dhtD JP-O:AJ:h/TLߵ '#$É똟|J}7i Ձi/߽Pe5lB]+[XrA۸ЛHlV¡1YtNEF+:`tk{lQZVT=E1mj̘=VɌNQS`wtx9#-Ogb_m2}:wmR>^^bA6Q<4#9Ztf whuok3Xwu v^YWmy?1]?H*=e`osD gn7e>M)LùPd%y/Y`2GvTIA&;ntmvb&N;D߫t'&xwdD\SOp("}.>O*m1^¦AW[Z.LOmȱlhJ|7&4|1Q@I*z,[&Iyf2wOkB)35UuzEZ^$(rA3^d,|Y VVx}$Y٪7q,Se=uDĎ77͡3=aQ>{^` [1)ɟ+ '~k?G㿌C&*7lO뱷Oɔ`p_y>{rVƦ|>tlڐHq0@*t=)crSvGDY}S?|=sr@դ$p 5;x-OmZVY1.+ٿXYK lUZ`Gϼ*E (Z IRRɫP9 HJZiX\c>G Q8UIߋ OʿCN.׿E> Dk1nH? Qd\%:ѷ.&Q 3U#ْ-Zu&YHjd6g↋/abFt ?aJQsoD\2 UHG&#Z MpZPEʩ8~.My0/JǏ" 9*oka:Oda9SU9X5l+7B]9tq~'ۊjS FآTl?aV瑄03::4tğ~UK"X^h|xG.=ZQY?xplS~eP?=YT/.sk;^ f}ut}pͪM_[!.<|Da3o NaMs8KJ n= _7z0C/; jL߳#)tIJ xP~-JbrP\)T_ӑ/ Gx7d}] /]eWԃR)qhcM1UE '֋HM1Aޅnmr(R7#m+.{t)W!JnjW8zf} ׶y1n Ȥ;c5砼!5vzȥmukNy,G-`Ԕxx8~r65F٬+֎.ߒ2ݯM5A3yWMK$Dcվ(egl4t愷w8#UsV JbDS( P$z.+0N4͋iZʾoakb=L28~ꮾqw?$T$9 Mga\-69WmЯշFJ!T&ݟh*iP&IC )[ڄҲBQny }PzMq v׽%|q3@'#ttWr;F5V,(Ra;^D7\! ?b7upk̺³MxۙS>0 _Y}  [b+|٨"v٤Z)>|P !éZfqigJb u5ABR+jJj 797XX0ye6ugK|@$H .ot+{Je"=(R|"kP]Ȯs덳]ݍ>4E|o8.ֽq1p} 9f>͌o|䂝>PXotZ{EY?ZcvTHh<)nYu{Q]}/C.$K a`:9LEUg$2 {ΆO4C\6"٨uV쀪 ̭Pi2`}Z.L`Wib04KB|ה |iek>ZAN酜M䙶@cX>tRcn} Ͷ(cvn!|B$`W>hޱba{gd${W&QZPlS_~ ߖ ǎ膴S7,>}؊JJ"bEIA)L:Zsݶi%O#I>EK.l܄gB]>Hn=ӻZ|M"ڙ"P$/@GG!*5QFJt/1 EU2t$Q74^+x] &le=2Qpta}^y_^pQ+*ݗ^%exDo!ȪF? J˃X}+q6EKn=ꅶ:‰Onq58 `i?ﷻu,3{4 >Abqj'T\y68R`1uCXy'Ͳb ^ mFjF8s>|&^ ! +-uT~`ajUҴ{%49E1p;[_WFP*(croubYX`Lu+\w݁&]_!N,< / +B>3u|) #ķye\jF! G6/>=Jټ(mRKB Y(}`6x#EvppS2Rw7_RNWt55xL9y;Ø䔘8 I=Sz ,`i)f/bzʼn|:vAvM 2տ 5_常A9dq舊[g ~ 9ov<~᫙ kޣq67rߒa4։Pkxc;SјGgۛ#fG{ˋӘήyŋBYF7Ø=4w C_3ho\y3~BCc>]%SY2CtӼ)`͟Ň2: :J(23x ڎ.[ҟJ[i$4X QA{||anhYl 9^CgUu*9]  ߋx}%E?vUrƎA 'a*N8;&xN5AwwzV-E*trڲ&^mњPGoTt,[n\4mN|z=  SfW<ݣ`f.tc߆@ӀБ9HqXkز톳%hF34>ϛ1uN!11ꢱo6 hY7e'.a.-}Hc9>;uIZ"@f'܃_{%vu3kؕ$Y>2 ҧJ2?~S7CׂVJN@ݕS@5TK؂jܮprӷD~Ev.\>UϏysß~Ca+մ8?N`99JwBҔ?LF=Ojʨ~}ԆR@eE!?e cFAsA~ѣ{ ,~2Gʇ֠SXڟ-[Z2r-Tf4T2#%נLu c-iaM }^[a7"}|36h.oisbG5!ZVjb ݐ- 0޺&;ls"Oi(>l8 Be:TPi 4.X6j~& O`N(9lN-`pqk6&e~cC=qDl"+ :.љ$KT?c>-͟(E؃MQgӲ?H $!(&[IjkIlO`߫Nm؟3aND=Xhd9gV1leHq,_"gKV gT%|KϧsN|B ,ټu3is걹c$pKtNX:-GBp([N*1-&ئ{`Y*}e̗"=ƺq=.؞wۧ~asI$SwX."9 w}儎Gr?\xkmFM4B8<5b:K+q3Bka_; 8ԿMGBծC =PKHQ~oZs1L5x;Lc5 1}TOIPF*1 A].`0i% oo t,ۑ]%@ƌsȦ\9wZyۈ7Aazɍ _sJ髭?![ݽ\g\w&̾xCz-F+te1]qt3r4kB`K{Ԧ޼%6X81价>~FvP{;[?qhx ⮿Nݰvtx4x^3[CRXa:rrvv{Ne,y-XyƳH P.PEΜR.6ƋL?U!'Z}"]DRe6vr_1ާqcxX56~,5c֥}KF֭/)Z.6Q`3P*heZԕvcjS~!uE ȱ"wzL #A̐Hc nnZbkWo@: \)8G-[ozei(Qv"y]~?vќ9]/C\V:T,p14E (a/]EwTyhA6onj@Bd}3: ñ5}WU uCiyo6$C, [ص-"v0@\eՆ+yabݡv6kx/>J1 7 @IVq(ohokܡ\譼UH.qt/}_΂LCv1*[(O%$Kvph@xN~ 24ڕ@Ə8@᪍8I79QC^ދbM؜]y} JB&5Dƕ=w} EA%{n+[&AV7T}+z(Tq +r&k^! Ʒ)sr'--(y5v84K,4Rolf Y4 z%Rv, fvJՆ\nÊrX{^ =)FgfG1<Ex#u_xbߛۣ)3"P-ˠ W]ڱ"bّ18gJ;&4ӌ{:NZUo{UaIxXSϞ0sGp=r今'v۲٘Bp#XMRl-SOM+8u?eeI.4Mr!;8m9&չ^=gkk~T $?x&['1͕,( i)NC IQ,g1E{Z~K㥌а"ʴfF#EӿpUE3WFo>,'}uP-%R+IapaPh3r>x 'Ccl$3=_ӕ_,RxZs4%.pW1^<'ML<'A:b%rиt.ԯsP_$"&YxlML?zq[!IlV M{+`f+Yȝxܯ9uáp3ʲ"<=_9&%5jTg1Xcq)~{MZ `bj5Hji@z~i +Jkf  Ȅ6C)3[6Zplk\R~oe`Fʽօ^Ք=fz161+fѬuwXW4Rhn(h{sx?HzlP{x`v_3/YN`77#յ@~_ZMH]zVDo~0=_ğƦ{b}q@brǪO5ͱjf' 5d7^S(Ooǀ;2Pl)~5Sim1IIn ]q딘z/dPUPTQ(;e~OǼXX T3'fH p1wDh6M8lݣ׏ AL#qRP a[QXH֟z#vx-+Яꮛz|l=8h*-˜+|Cf~V*$~ .EhS|Kt w5ﺳʉ}BHU"ƍvAhT6l i'7$!jvIu?4V`$jV?6[ALXCif\w|(Ŭ"^wA56^~CՃ9pc z\6GGͪhV^ou255K״[9d_YBI{;l>$ˏfTD;V}>M+>:+Jt0~ݷS-$[]_y+b Izu;OH{◂tPJRX!D/3?"?@HЭ z˱P߁Wn`JqKl0RIxh̎U;N-=eƖ`T{'_WC^ cJ"[BnS9 XM3>} =!)Cq&RH<͜^y}U!]EPơ?,U ##;^f *kdA3BGHxnpTg1X&o&VZ zp4մK̤?;DS }> sp+ p_TjFVP񡧛a+ sldm3>QeNM\*)qHV0i:M%O#A屛o3L/, SRplo#ׅ{p\*CIoQ۲^him{>kabH=Sx+ٿ="ƥTR2&LO /ƔC[/xrlSȰvӵFۈ:mHSw8js/dSlzkb;R7Vo#~*Ť^۹WP`c']ul˿='[U:E.&#h`:a{^6dG4ba67h*ȕQf@j"5|w:]Kx^sH7N;$<⼾0$W웥,i!kf/&{vΞ^X8u+USb!Ud_Ҿ!?2 K3&+< z_ċnEZ5zHz\(cy[T3ln%FQG3Ub/ 2[3ވB`U{C k}BT2'P,JƺqCb#Nh`<*ٿ$!֑}\=8Emq6&rRdc*XcK/=˝jAG? c%D;}"@o=PIMd}{O2Ti1w{۹m0dWf%!rtLs1Ij?lƒዂQ](KF̅U&b% v3T,]:~ysȄM1CmH]P}'~T$a𮟫T&wA${F )t/K(Mvz!ׄ^WI4ЦO_?\} /I^3ͮ' b#s ,r{op ĒC p=s&| L~OҶǡz}FsI2Q)Mo@˝EP]_ѕi;ׇ2u g-#_~r:rZm%e', ZTB,RkKY$@=똜vȜxY,5 m>;T1UVn A7kbL*0/χEG%R!;`^p3~h"b 佒u`OgAu~`\x'{P=V1o%-KBw/}ˀ`;yoYm!W*,xs-#(W84d_.t -Р~nP'"|⹡PbmY,|wCh;^ o5VSX`B=r쌄魻=`He7Ʒ+S,̷[i0&F6}v9ůG-]pu/8fHzZ& C/_PF^}jA( 4eN<>,Gap| d~E:V/#mq33T9>tArb*l7J(26Fo1O'I n ۤPIT~]"@ݑr />X F3w *(-ĘQBL,iݹsVdK[?kZE?b^kI6VVɝ3l\?^ YjܝPA} sD.w^' rTH&δVVd`]g#ڜB@LmR=f/vQ)>*4~Px #?nT)~|8a),y[+UeJkG{tL à>@ԟWlk = I{"j5lgsg!9uo.pu~ fda].^'2ũ smV^a!!vn/7.H0VZoڻ$MZ%sNxBo2bfC'$=~}Ӷs>! nb[~+, wai( i]Dw>(4'tܦJ@-ןڗWdqndsB-(~AbŹBlj[I{yL%֠ch7 T)|I_(N3Ѭ]aga ~v{<}Zw(X% #~wBQP*ђPHJi {d{MdDz?뺯92,BY!8! V]& 5WK 04G-=YrehPx+$4G\:Ē Zgwr&"0pIhH`)}#d8_E@GĽvD{kE F@1K_¶qZZ! LTݴg&NB0d]̔g UBIo`>_{KaZ#V4S aSZQ Mݦ%1\q1Khl0ZOᓉ\HX i>Oy.D|F Gɿő=}3XH]?x)urE &uLeǷ!{p"<* w} `𒌰 ق6!Q$9(_1;^CI5j(B\*sYJqc{]Z6[9%<Ug%n“OZLpwLe#}>6x ^1&cno+XIc'H: $z^8D_b׵LӸZtN)nUF3c=%iu$vSm$[պԏˇO\űV=|6ƻ>Ry)psc<bks $L܋J;PzS:船מr(HZǛe6KY;ʳg\6W 1r|ɟcqָx;8~_dƗlWp^Lhs6%*=ހjGq{0M[gKVpT8w0d­{wU_E&=Sc5Й@}Wᘶ6dj&}!M_]~py GnXIs:ܛA ,ֆj[A@!BӍY-9IwqA֔Q?R_~/̣ 58;>-Fb.bnc9x 62)a/ClX伧s/K~_lAhi(> /'wQtBdȺX^LMk0ք 芕?#݆7nvX&Z8oVJC3"K@x:ʵ͔Oӏ_934*+/XVm?wF8ŐzWV6,o OatNXH)bwYn)QwAS"ї,3$ qC2x ~!`ma"oycY<+zsa*Yr-K$87.]^, Z8ǂa5p/sYbC38jIy5 N|he0\5܃mk"? ϼ?8F' ſ.vo iԶ}k&3Xg}O)-rPqeĤL 3lUFaI8zQ Vc8 ף)$/>ZeֿBic+㣺{mqwfk\!|iDf]֡ٽ8H ==A#yf?qAQgXFx>,[hюloXq3ah*ٱ@}~@Y“Ͽx!-D/ d=P<鶟˜x :\7ƾHψo< q޾r j'÷& H.Dz}%[1S9fpMzS=Ǡ#nriNt/z7`GnbCv!V1̼z^ꙻ.'ATD12δ+;>ڟ2߻=Յ{-C[!`͗NYGkwj[g8I l+ eɃn5ּ~[>JugC`I-nS4xYA+_|%y~(TQ:LKuܔB FE(6<6f=]+XgǂPST肻J7Y3C>C÷81cd|IMK2tWտy]ÎSѳk~3gA@/z.>څwHG^*;l9<- rQXs@h9cټÇ;@jƅ)l?O=|1xvjā>:|伃yXjc:%~ 26Q#ŐAh`FK=\H#wfȡ2}U[~>HiőBb"\} gfR8,ӭM*-}ԏTsaXRu/6lQ?7D0ECUQU(Vz~h96)C)ֶu?_ xqr)8d 7YCz6Hn"9]z}T ~tNn0]<-vga&j[$G͚e6c*GUl\cGq8{L$Q=p<^*BӚKe,wA 3a6¼Mi%NЕ/o-RO]?sVڍmGhauf2լ/vsH݀5woa[WGXF:A׏̵bA9G 𻳘N:2"!?7Qٗ -?%'xˎÜ['4) JzZ܆<[s kgWbKʺXa})kSrUdX,voLAס|!q())Y2]XQ!=OhCZ_Y[<-+@:E&3; Hn^Q>X $=Fؾ2ޱo3~f?mX̸0`TD΋z6vKaT#]X2==z+53|0ڒC vmbً#V.jyd( /AFM vNA3e f{Ch[9l - \)˪ ql?oc ?Y"@Xn\ zx@"&\'>*,r?3m'":6خj<'C̡1.a$dJMpLJ}N#* ";y`]o%:j{CD̘flR5."WwW!+vWice^`ɌQ,6a8%ɂwm륛 Pt̾{~3t:\FS%͡& ۹.'A6yŽ X 6|w) o⭅_3Wv|U"iF|ukP{̏jx5/AዂA|][Oޕ2Fz,>2x@jx$Q^_boB+٩6 烗I ZK 9]p J+nK9zT!E¼﫲;>߲F"?o0 s*-yR HԦ]vbtY[˿-Bdۏ4ƱX`Hڅ1M\ %TΘUVTQ[bбgoso32ғ-ua-"IB~RQz vȠևDfz*j{^c{9?HgrF/e-m mk/SANkŒ( pG'w2/Lޜ$s ,tYX3?~z8]m.bz -_v;O;)jF ֝/Р/vpگ+WvF>?ly]=TM$!XQ&*rv|'[L6Qĸ&-\M}Q?H1iLߘ1^ ~ Zbx?pIo2˔t6J;p]-/S0*g\n<~Y0 q_ '0߿1m Y WlC׵ffXRdc^>5`R+V{?|ӧKo}َ5{ Fh#;>βwTNYط3:4d>yH1 )09iA\׊l4sf/MgM #PU_snOJnJCYɽ$X1uD~9<ɷ!+9?he'Y~>]d[+ߋݠȿ^ Y :OYEWRV-XB_p|!6T޶ -9 o$0s%eQdn-<} _G̓mzߕk]}N$COh}oӢ'~!Ͱ8V|ѻ:ݤT0WmU~SEFQٽ{|J [hm1fXĎ܂ݼ4CXp;ay:[&f~¯|̟oaK $ <{U0Q}HNiSH?VNJ>- azL=l~m2orPJRpL0LoކV~/wa7f;zldg:z^PZ.q`/Fᆢ9^}# 9e)6uC+PՒמP8x.gE}5Fbli 7;y`{aI:9(벓Wn[ig89gEZˬ ;qph6蒣\ Nt1+3hMs + ;hbDG[⺗dVoƊ9VdSw?vu;{0WXgZffqj2Z&O÷yIi4b*]zܴ+ӵ/H2ޞR׮auVC w,mhWz)6,Ct_09Fnu 3}TuU# BU-Ӡu=9\Q/W(!Qegl=vr,FnjXbvQޮqAْH![oy QĤ Pkrluzz;v_oF82у?G77p;x#ѽ3װ։W"Nh"Y&OYYTxTJu v)`}a8!oUg~&ݜǗ&xrG &;zGgG}{ 'N)L !i!еdSZ``^^ %Ae`,;JKMUWܰMgM")]YgA[d;=3>9(<i{OCUDiLKlE!a[U5Jxăm t\f7ICJմ\F?3+T//c)yɅPl|C`>_Q+Z9@6-[5NJ}td,=᥄Ċr(9zK)׾&{t%|Ty-M|T$ %g@{<eV@*t&.)6g0{'o(k{Ͽ=0_Tuӻ1BǑP{di4{n]<E4NSEyjG/U T7ˣdP2J[K/6kJm+L]-Dx[WqyvP@_?7\.&f92$FH/>b m_Č{I?@G=GM Ț;)A^y%|cZ&}#P&yiN{um`$!-ϹJ_%3=A>NCV5 v莌5Jʺ }JxxhiKůQ'ofSԍ(>⋥t_nB> 3Mj+W&~/dA]ڭ\O2hq !54a*KP~5~@S> t~>f`,GWW3Jh\Yb *$U4;Ԧۤ&uװ j9-wԅ,"rȶei aSͩRlr9h擇鱜cBBsuoH5,xG lzhthyհ"al8|y*~;}xv򩳓 pR0$ixd|_gƑbX93R][ݧqI[XV)~v$ uZyybᎏbi:]aX2YrZ*ΐD"Z(=u_Ñ zZYr)vә _ Ė([ޗPf~l;K .ƑZ`}zlMaۈf`5l؍yrcٷoc %ncaQ[5veJtncBߓgp?n O*YtbNS?fg$V1Bfj baeljXpT3{ڽ0|_[gz/|nhg[0檘w=t;\2HM͗\p+MkW-ܶЪNՐ\~qW޹B٤4gP~2_wk}=)Bk"!]M>dQy" /'@kc*1?n/,C<;h`nR߉(%sZ@+gc$ }ށz q9F1((zO̊ B ށNi7an-'VPae$KRGu0&@Ɇ8jo;_O*P,ϺJ|Ct3I2 .wrSBzej( U4%OviȗM"+ I AVuFN!ĽhG{l$0ISo0T_ٕܝ7/vmrs4R>,/W#E99z ~Q M#aSw wtw@NX* W5Nq3XH|TfLl7B^ Pbvŏq'v(}2ȂKΗVhlP=:fEL/.f4!L 3;7Ztd>6Z &yGX,bBsQ>K{!(I`*Z<$!`Y[gn;PD~8d7<́ʤ{sK=5j: C3PjIڻDI N|BS>%A3i`o4=Da82[뜗zBzРw;_ QݞA:ϻ{bE*.m|y{O*|[@,yR"|_?K#T7NbOIHQ8~c٪ XqƥbH ~jGY 6?wJCm1(fޜ"FyK&6Muz,GO `ǫϟI5 )0‚|=W^l˜[ ySr1[νX ȳ,F 㐩/TpGk$_eť˷>Dv92}:XQP )Jƹ=6T4pz+=pQYǕpW )HKqnX_9LGM{& ?,K&etݧ\ƮXaB/w ~| ٫m'N`Rʯ_OHU_̭̻;`\XzWx vr2Z BK߆!:5O t{}qD8pL%G^ ,py-BGu1o<WD=niO~Ǒq=ʘ_WB8y||gtJ^8|w8m 'L^skWnxrK@;H7ˌ5_KU 뼆J\ _7!8C_woWp$(GʊU{ \]LRZF` )Tu0SHkŦ{tﲆc8j ,0f9Y.xHQA')V$IC&9~h'ܔ# D⤗,j=y߽O\]g~񡄕5ɧ']4(. ^L@gy%Xf-4b9K^>hLEV:-Av&^f6ބOPUiXzj6qlA&Sk=-;xa|s7 CoEN 4֮3|2O {`Z[MA]=zLz~@_jcu&j(?W%bub.O=X(QUj"ߡ𳩇4 /&P*Q?ẁ(T_5wW>D |}om%TLJgu3lzC``ONL3d -r Cydj9qHѤnѷe+{fVqXwdjǫ[$vS&]b h9+2}v-ABµ돰vQ )t?=.J+I-XkdNӋagLJea{)oV$J1CZ!$.$/'υiKM9Ñ[,!6\ȹ >9|{c\5bubRWh/5Z{ f#SF ֽl!K㼼X 묧͘eOUq3XVB=rS X#@@ MAV,H Q%,1M))4%mWz).H̬[*ն<â8DXq7&nvlшn|-:19%,]mM1uly{.p`oډ1M΃b_"1zD;b%&g|+֣lu7,RJ9"ij]#x SbĹ]qOk_>λ3_3#fzqd"''8Nxm֪lUȸ rn9X(%w۵ʳ޳0kjJu ;$W -\} G^сsAg28qj&H|ǁ3=bp2e>em)߾{ih]8QreApS['d]vucᤴr`HOT:WT|ԾSvu1v=c /ڱW/wg^\(5IņkOafo0Ζ+RV5ꗀݮ ,Qb>ɀU"X,V3~`trnz09J511? ޿¼2ؾm.CU^ARfiȠRJ&IA0 o{s/bo| 5q=[Z k]L0KtX%Qˈ|Yb?a6;֣X`" Y_*7bCŸ^"Va^z)>"Zk}ʞ>{QʬhM(пLDZgݩžA Ӌ4ŭY`j,wG%m8|5՗'SjoǚS_84|709u a"V6!y*k~@|. ;?hp?qȧ {%EfRk­״jķGU= f8 ct8t/t fe5 j='ο]yuK2 QbXߠ'*X24T4'~9яWaXjPrfφz ?)ϰ0ePkFjGqF8iW 14-|7է~BjoN`b#iXEȠ"U_Zm 2 T)ӘX+~\>]ܾ am_%aH]bl{I f[uPv`t#"GDfg`폔 ʱ}%6N¦Oĭs^lN# DWaEay;6yΝ!##7 j+MZusZFt~b֫*>/"QX2 1 ؚ3,sCʐͮXa͖.PA)n+NjƆ/}0;9r5=~Kh82ʺ?uQ5⇲)0]ڊ /D@kW9UhyI-"]= PNdQ* (lc{yh!Irr\<辻 AuKcaNZ2>Qaߓ젵<{AekX H/@gd MjodDQ2b.|Vrɸe !ڒ,$3l T?pi& lJp#= spaO8[rto|xRiv8;LpQru5>huKRJ(ܱ/ Ic04ҮAg̽g[yX-udM.ưOB>UL‘ ))"qU@}Q;u7s)@!BK1=dqmPy r<"z# w]y:tgLeLAke&Po@u|YfD!~ʯPH`#@m|+q Þ͗ڼx4J ;* =Y' Bp6G塔~T 7І Զ` \#,ZeQ2n!Nwa *;Y z-h (xuھCث̴6k< >/h1NI(=sbbֳg0闫Fh?e|j ,;ʧ շy4!f<+omX@9SzCP>6ܿA4DA\@RFOy9>3bUBx0~: ^oo■qz 8hHu{ >%"~Wo)[}9x=]x ؄Ke!1_uy>*5%}AYO\ U7t+֦ѣy0M!KO֩>]{,/7Q ɿSaX#8Dm.au¥!"|nYd9ASa8Kx.̛ZbC_,+Xh7 ڟNʮ`1淭Db;)\Еj1ܾS4uK?% z*X:OFuZ Hwki29;+Ö_M: ͝9R<8\$R dkqǒ8Xr_z[6xG|(5LxLG2W=2q Y8a+opU 9H5Њs]ob ئ.8YV_brIr̟sN lPT08|~] -!f8>l$Fo>sx/xƽYւX L;Cai7%V1lSZ$rJ:I6ySkf.kKLAs}{/{9ʚ0l1nc] u,_{cĪ%50C,O7$ )Y+X93r.VPe.c'$'&, bfٛx0[wt"e,Eq߾E[U 7 Hugr-S>[Yߴ%_ӱ2VwV:_q?=jl 51 i/AQ{`cӱ1Pn p< {ܰR9egûϯ'bߋ0涽 i΋'Ob2֘%HeGà,}]0{/&}6U8~ܪL~ jg*CkQEאhB= "V;drękZ`qT 7߂8J[-PL$%HM?71+ C9ʀ)4+oBcWB)E o4OEl[9]Tr y ݎ'/dC͙D9wf[%6[{8H/H_rýP=my4_cϾ/j_nCX.Vl#x',u`}}ܚ;wFJMhnG'\\8K~CG}U5 ay?i  m$bߏ:@,\< ,*/׃ C0n {cK:Tq}d*e׎O5qLiM.ݶÎy=+ߦ ppߍÜ 8I &SٳBˉOSD[N4붒( =/8̜7BEn^ٱAg+ZM9ARGbK-ġ{ zPpùp 6 EǃD>$=kvA#r ޳<#2qb ^A6]PH:B8g%ZƝ~Z?U4>}Ϻ-~s_%mz8տ_V"1cBg=-O9]~]y&t*߽||eGӯtڙ78"MKCKMܦC>7݀.S _|{+T 1JNpAӚT0:w?>qCȕsoPCC: VuC{(ܠ}Ϟ17h0_gon- F05/lY&CEpM xe3>Fw[d4 7"jӠPb+ P՘0Qcω{ɪ1~2Kn>wK4~+y\!Fy땽^'zv1 gJg~u;7A?n%#h ՜; 3&^9cM}XhݘQ aU+rP;71)XA4d(jzѪY,Dcrp%6O5g]uO0!cE͒ax'0/b(~1L=9*XK"&#9+A_hv$s8?u_YsF?H鍧3鮝ȝ( ࡲ d'-qœj*?{,\ BL_s6z w3ֽXoA5~K*ޚt3?`"A})cd#Pn$ ԝɸg t vcx+ wF%3a]{E^Q~Xc{԰F)دĺ#vXT|/; _(L5COasB.';#7#!„G_.؅5LAi4FQ6Г@+RUlP1M< [ſgC6\z= ŦЂ\LxMU@6fqȿ_`< mQH0 8jw J:m%Kmleh jwN0cKylxfY/)(7лoL@y~rl(c/$곝5SI.Dbߦ0Fכ_}b}8wtCh1ʁl^vh+|v 5 ȒX:6~}'/nedZ\uIm'Ke`5arTb?<]z]!"@81L D:?~ nwZ|Y."ww[1KQA( *a3>S ;2i>cWY;&G1y _$'ҫM ڼ[ʔ_/CUw09 -J=e̹nx8- Jyb+!ޣق8h1rYպ 7ٯ1BO.p}l.ɐ 89!|?d5d&txo^6/Ҥc aGpBȓB,A4۔ ǚ'Ep@vSz*xROẢ4gc/mh ?C+pT/+rzP7Ql cvFHH`z ~6?>#wQ(N#U |iGt04IN[eFL~; ŭdD<,*<'*Vdt?XBE)(]H \c NؒJ.f\^9 Mt63ӕ:CɅRZM.rX]]W[oޏ#~kz:RW['Ńy +ğ]nf+F&iR;k~9=O]!8@ӪyLϊv]Xca@A j1km03d歸$eaͤfXIH7jfOH}-!g[´v;>2V.$R 5gyFu0cZZ=̼ p'^@qT2jtK˯r59V8NX[tL^`۾5$ĸÆgyL.@)۩gF)q,<l?+mxCl#-q}E 9߂xMېZ$$ Rٿ7-eiBWTe6a4fxfqѥWI~uң\]?@QgM%tq/{e>Cq_ZyȚrn 1ɼ&]'De˝Ʈçi`QOi^#8׸pS÷:M8|s("c=;Oڦ1Wva~j6„'V{eD3vt|=s`.I_0L9w '\ #uי ET c̠}(MٮP[x LI5퉼|< 6J_=*V 7oS:;TžU̽8$Ѵk >*Ѿl`I0u˓^hm*8b9%u*~hxLL89;]mM\8.Sj52WYqenA 'kNJ'G?͋,nI2TF׿'DqBr ]tR\PIƪ^ g(g?R-7&6cs:;D=%g}I޵{zvU3rMRNBC*6p(Upl|勵lh>nثw~ŋ"WpNj,.Oj^l󛩑J((Fߢ1 2a0 ٲ÷(i:m((v矁~jGsjhB*5&Y@Sǐ$:| J.@޶m $h?vT*(<";:.gS$$q熗 Iuj^ h?{e'thBv[-oXJzz 2bvȼi"5 џ+š9sOޠV+s-'eī%6&ޞrtOSiOwN8.6RؖA,3'/OށA3ùKJ '悺qϖWwzfgtr0Լ<(҇gjnbuϏ'+*~b#ɲl0Hz/Y2My؟])mp"X^aR;zP)63PG&#~ 鐌NslDz,0R8 ?tNiZՇ'17*y ;aNX[_EpLa7dD;\NxW,=^ʩ 8B!? TNY1'7 Wܗ Y-o2(kɛOӅ㡣{}:;]}@5%U'w]+!/R&T!V}jo?"Vwu뙣^b>hc(y,o<L ۅ+!U',"/F.s} 8^{vx_tn)8?X.Z)^i!Bq0JR]Tg{uV+AqkG({Fj ƛ8CfXs(r{OL\U052e~,-mņ'n AϯǚL k7jmjIz] ~o5sBhH/%H*rJ@z۟[LPs  YeGꌴ|_ťyJ VJ* y OΙCstePA*ik}DYwrox }o_nnCkC57,͡We6vY3B> ,|Ǔk,5q-`ޅM:6~CvK7/ap/= < ׃9yUlxR^T%Nv|hwHƻ!c::Nse$Hu>n:Zh] i9)uǐ_yě3=a3_%6Lw+ 8 cj Yym~`1Oj0m: g|=Sߌ 3Av?)@棍["hQG*kdAv1ps711 Rk q ($0EӶ"R$[1Z;bH5@ls67$䝸ʋ\=w_lo̳s, }MkCb>&bo1;j9kZo\揄kՄ5VXPg\ETƦرB5ѕmsQvퟕr2|'uDt3Up!*7bΓ8H ZIHwПee:s40|7 E! 2Xwz[%ڋB0g<]OpeCq$ { y W3 6$Δ#VA^; Oܤw葉jwyEr;*z&")nkKWCJ~BO{"[07U {Yo!/*}x~= Wk2S1i30Dͳ*JGUt49RO"7 yy\<֪}[ԯ*+䇯7Iq;'4_©יUBP;'yf{&N X]Ni/hRx`Ar(mտ.FVvmA >iX@ɏ^}sB3ğ>" _oT7qzP#hο6hcJ:5-xv/˹>?`VoHA.CIy;{w^7qڙw~O3[/paFwUc-su?*CފJ7%?eaW9C 4~Џ9@# #j6Ppᘪ$vlp=Ub߹+v|^x-o2^b7Oz:;fX5߁nWm'Ԝqx6LX[ 3H> f5)߹5`$ ut}A6=oKhP?yD?nM\)cM/C~;' RO%;)y%@>"ao^ o-Xe^җPHm+ɺas&+ykލx+`X䩁Ƨ.YC-'ŶKVG?HZW*G3K+аʱ/|#$Zggj*6T4Q#PP{=9s>}rK V( "]Xuy-30 GlkPO޻ɢسZv\poLcO`ۜcnlOsK -+ɖ.摋FbykO}?e=] cPW|g -ό-B%1O(g)N!cCr Zn{T)ius^W[{!﮲om17ț M}NJg~7)qNjZޛ3Z&pB׻c1Ц%zlH<HZGtjT^ z_ͺ%gCخNX=&"-44 bZ7?L2JHh O~h-E$؆XZbFӡwfiKwNRpwƺg)xb - U{U.@yoeoBŕ='[w>s)DM[?K6mpu'̄]P˫ksrR|bnj涯IMhd|#gL1gsY4{Mmo 8h(T>Tg M~Ԟ*9VOVYBy("4djj? LX7h ܙ޷ɏJGrBo{k䅯XP(pB]/Sb9X{&y9G6ZkĸIPf%ܡ/ `)?kƱi)B1+M, uşhU'{C3iGiu7{.E,nBr?|MϞ&´]*O /GI7/j6~NVjDp,uL0vT\F:4݀۫{\fc5,?35JbꤻA51C|kۺֱX$l9p %F/uc?g&u0]n^{),eS7G215W65^S~7B*謴89ܖ -)ռΡ^;z#/\(:֖fAd7!+bWq+N}x $V@}p` =uIJϸ:2"0lcc ҟS^5\*# MW %~9t%撐RITb̠[iAh#iI:_0<^kĨáHΠ ?фTAG>{" ]p聗fv-i˘fmoS616BkyjGF@w^j%Pu &uocDuWm*LeWEK D%9ؤR9LI"NC5m`dHH7\Z<+7?Rn1qw0@FjzRUJb3ݯi`1) _)f 6_^TBVPJ6fo+g/)/Pf,@J96he[} Wݴ$UER/ ޅ"*%^#h^co$j׈^dWWf)`]n>2MXy! SA%6*>0ž̛-e\$+/7=t+#:[pcjY#~=ưo,˗Xƫ_bۑ-C H6P-Z~ή΢c 7 :MC'f=I=y׳hoVuN`SRW;윃z\IӢO!߈'4@6lS|Ub1i^ZMӇKç94kGWđ(((4f. eO qNt|S1`"A 7[eXNo᫘ߙ}r]ktןlF!xC](6ퟕàKki]Ђ;GW̱gYژHk1;)ߙb,2i /_`f{EixC+~@ CT.c!H#sN aԘwՊ"*:Ug~12C׼gAKf m. {h?c1Ӻ9"YX|F(C4(l Œ$JdR5/*tb7/Faz#Yut 4z폅# /tӧw?á/h1t -z#8}2x((6`"@݃?kdD1>i=C a/Mz jTP,7FС?/lTZcTԮB̤`tm@#[:Q[5cPk+p(%X(/pt귲!Xg`?Z+LݒK 0阆gTCEa]P]`6-':@U|SǦ?*BΗ :]}|"a&i NJg_GVz_:ӋDyvS>> 6 63ò-~n1X׽NK bG)lqb%T ʡ93B'tHF[#}B"+N\ ,$5FO~W$Bʒ W$h=*bcWΕ{ @..xHrSQX%M~1xɾ:WŅ4Up:B ߎdVnrv ;::?`eSZ|UÅj.*_̊:~+'|c%̲6{^RzxpN i':4y9Eϝ60tf09áqhl$=g)yHdo,5F¨Ƿiv4}wwth TYsůmXOi?ιa\'u;x*WmQ=:g2{_:g֭lO]~]CxTΰ;-**p^gIIQdJĮ=ZG2b^$˯3}8&Eˊhr碽]sqlLPx7u Fibk6Yg\lQ81#yhxE9h9 r-_1<ԛ?LпbKuċu1J:m}beh#>g<*S8:lVc\ڮh7b'%ZG.j1Q7\f#K܎8'.'Yo(E"m 7goou0i177IEް~ۯͨ;`&+)VŁH}e/ӿ0;qto!O4^ZgS V4gg1n;,;7q< rw͚{Z"v9מ *bˡa1kʃwPaisq,iZy"6,v4>.{u{b6ƺaIYlX-UW9 G_AY[6QHHYߩ[0V =h[% #v%`|ľ$A1^9dcG>pT>pʾcpeN*߷{÷q20/xU[Us7)] c k,;-~T]9%<Z+U^|#_l_v37{2unqtxC5w'_IC3[{L]P5yAg U]"@h39 մ'>LU@oo$Ai`IdIJ~mp2~y7`TI(LyͣvXWz δR*UmfœPil`URy grDޅ<řK PJy[e(mRS,6%w!?h _Rc԰Kn?|#e-nBn"(wVj Eu mC. }v<ܳƼ͹1%, icXc>ӷ.Prįs?AiH|v;Lҭ? o],nf.hpIF B1J4:9e{hٿ1w%CzX@@ 3Qșp=2=aE˳l ʉ!E8pdKi:}NRq5bM3yM ++_Ì}"A4p[&5v|, NMb7B#'JH։v1ILuaJ4V_Krbɀ?*' /X<)61u7M%y^$<0x0W]G~ acPkr>$:{iY$̶sP#qbC.Zs.,9;` nUHqxSHJ'5L3%bO^[cfqXà'߁7N WQ.U5){c)"8Jtbu],i` G~AŒ {6SDC/*R uX=U E8bY)Lo&#}w:U>jxj^\xD*.js[% ̶/öKŸcG;2 )T⾀Cy/jʎg?v/X[Jrb_y{D%<#ukأ,j  n@g,o<7mOoM} {]1+X+,k.,dce зKZwBo ڜlo=ULP[GXoǤ!@[(v-Y-2%II,"+{G{u=<{l)7gu{%㭕v~I? a”8uZ"Ͽ{EFT/CےգR|!&uz!~-XrQe^y4朰ƥ8Kur(3Z}_+a=_;pQߢg?=N 1o7q"τO\3. mh-ۓO#1۸lد=3ovbe23 ވ?oF@YzYO#FW1D }PA(#;u2}5!@+#!˥h=s'Fo$yڍ3gpF7&e_jlA[@Ye I'oD!_^~V> C npkK[$X+S" bW5c9%f@8Qvr D4_|sG_D*;ї,qk< s7pZ0y;:c= Mȡ}ӑq;eӆYℋb7W 3/[s獅%|lym\S׾bƾZ[{ ۢ`T176@f|9=k.h|mQqm(CvǢ\ᑓG#v)qStt )\WJ( j=Ip: Re1pCT21fXZq, _8 9 ^p{x`rGFCH0MŇo>W\hteF{q$__~*g}0!AdO&1,@~#Ka%\ʺ;J-.Y ub|+rw¿1?fbKːxě8Ӥ) :Gb;Vf6} Z?qR]1RK[[A=PD>5(ci`tw,ٮ8,w :OBB. 'N-2lu\MkD %l/팓d; ĔmS@Ha_v o)|S|7KB{}yPyċ?tAƜx{"Y\2˓!Qՙz)5-J9| խ!zj 8=v3i(bEnS*s_v hV{:qɫmzӌ t4ٍGrZ¾m~# zrK)pXɟQXb~;krB i)E6rҵ3bߛף?~Ah2g=ۤ ,^Sw}( g>3C=?~pm026>7o*Mruĸb;+evp]xd5ySEnDT .6|2f 9٥}8{hz}_NvLs(8$y:0E9!©eόR@UAdz}&oZ>G0۝ao^o,<\x c+*?3Vv큊t0sfXx_1JHyWC)5ڰBXy(/ jڙ0#6ky,O]z⎟߭(6&7MkzY;q<s&F7Kwk[,gX6d"kk7:^Cɫ-V1][L5siYؖo}~eWE5oxCh;} h{ ׻ˢX=c }W2mɋǡ깳uNЗ%a;d U-KY%)C)[D% w=&G软vv:W VrN@#S0CE{AX^)~!防Xʷ3Ԑ}ӆ^tyZdhBŦ! y]eAͅReآhw+ob]FuNI9҄wqjvǨ fڼIq撒e^|;Ի^ĉ !o@UnTm3|$U$]OQҠ4֫}۶<Z_f6l-(-GZ T%{ԺiLEwN#|ggn6kv~~yB M| 6Ol! 1(uX?}#;r@=w.B*`VO&9#t,ת^.W 7T2[h~W{p6<#<4f&&Ϫ%hౠ? N>mP1*En!wA1CEzX:h"ee):[ cX+h$N@g1>Z(Ƀc7`oVNw~σ &+Qh%eJs.Kbpw/HU㴯/yM:|M㶼K@q Nh9ƞ'&!93~B* {"6 UۣR.(," 2Vqzjy۳A7~V_ uΛv^O. w?A1O8YvL+TԿ榇VuDND9nbFmOBPx}_*TaO(36=]7dh*6eȳTXy\16ɄOv*mЮϫGMɟ,A֗GTiGagIz%=8B c2] ov: h CaqA_|N1q @<77,B)RcK5@VĜvoLPX}s-̒ D?Cjm(J#%.g9ICŃG>CV~$Bh*^4&a»c "_{h9|CVqAP$R=Eq*4 ZhOB7Ǡz;!h <N\wƞ_Z!ig"lONH]}oukשj#J%{_,cAjcsI֑z޽o'E3%ts&1uV+Jdh$%Yަ;$'E@sjY ~uk{6yJnFzJ핐~Bbͷt`EGx1^T[jqgw _bX:[dC>NɲǕ;>Yu z t,%*>"CFFvr $Co%7 ]̨ٗ;IqW2nw F_?)_Tf]@jkG+03}6AXcrwWp$0[k>k]:uAD6}r7rf#jőFh~Cq'u S j>}RՑYCeʰ)tF r|dߍ{b$0yX"~ym@hWv/MؒyDanP;ocRʼJFTl_PG%N*\mAR4Yڞ4,;w˞:Ҡjd$YZNu:Gg@]ZOW庺;T  mj`xѶtHk/Cl'BMت^6,h̘ɝƋ|O!L$K860(_k\ކHPw!=O?v"ѵO|mFuƄ?8yq{aۣwn ozat2D53,|&BIX<_TND"[݊){?y"s:8f#C5C9hrmW:ʒ̀As+\ga|9~HBIM+}"g!cZ}>[׋(߬'aa,LQ}m~=X|4DZ5C(-둸?Ty@{5W^Ä6s>6(m'u΂Lc.2ڀLzH J Ρ?M:O=؆/uK<愖{?|o]]Pt{ X9]/M宥 :ę6t~hYZ5R4^oECT auBPf|?q) kf/:ѭF0O)R _ŻYwcYk3PZS <.(,^WL7~'%5Fӿ=[i7Y`ˍGl0ANE]>dk9Zab/Ә(qĮb/|ގ|%J9v/BPM4 䳵JLͨoGGm _2}q>NSwf.몼pݫoӆbȅ{_z6^j_S?(V?u`/f6uv0@ݗnC %X75Rz[ xV\9̲&?οV;{L@|ףLy3~?@BP. l;rr:|tƖ,JBPz2k kx_r&"o4(Zʟ?lq ch誟SOyya^`# Nz}@` TD-=.\Xfc߄;(vmR|ܗe~c0un,^SgKV2u{ RK 28O o.aAOS\w]&ԜlrPc 0>Y_ihF`I^aC]V7NXl]/` uwcYH`{,$!Q8Kήi+۾1w[0,m]mJY[>d{CK9{|!`tT6~3i [Y62g g(apuV(CJekh Z׶F/iQgh>rWd%kH |X8)Y= x҉$pxcլIyY`Opy{|H/.R$!RʹuQ7}-;Mlj0cԐ#'՘GAS}2Oj"$}^ҽt,)mc<"<^ʵ?)z~] z, n,Y71&SO(<%B]{;i' ]wqZQ35'x9Hrpv: ԅ)J9.PWh ܠܴsB8V>ܬyl΍~|4uN_Ԥ692ln|lD0b:tpxC_B%  ݻmImU0Ds=Q suJ`P#[6[j]q^e.:IqH9-cI՟["=;,eq[}{ˣ_eKJaT,8mi<8( gO|KX,9qPLOw,y./ \`Ҟ4[+`eяt&+PL@XP7Qp T'yGg(C^׼K?vty(=y*pʎnx Kyw>%9LN]vASqmw?Ѓ91JP6XI% #e`wSXRt_%{S&f0GZxʝ~+1Tٷ˲/,{h%zKnڦx݂&sPAbr kӬD٫"6P''šLdUz*ZK ;zcw"&Kɣ+McRћĒ2RsVNblnzmB&*gձ_Bb*N6N|2ym?I%S\AV}Jp R^XWcѼcZ#נl畴y%RnUǯ+c-6+h39 4mTth"4+qcQq\æOGTv rgSNʨO*Aah6&cֽu KGby l.װu54}b)!É5p{g=o8"2)䚻Yơa~ *ԟ{"iPp.UzD5y3>=b,C>kA7Ǝ̰?d+|kn>j2{k.}7>KWԃzظW8ܒHET*(zBuMbLCvNJ7^ u.5Fe¾^r .*9 lŦj 4C~"|(xs"d{"ғ'n ms EW,灄E'H(w*bLC~V( ~~.K)#З9S dXU--amuP6֮nkkgTah㽺XIYjzrШLNKT(:=)Ytƺ餏^9!Cb+k:Au>_cJ68jTOaչb9L$c_Keq8N9MRm~p[GR8MEq~W8c{ݐzSW$jJqC6a 95yG@{< leuD` VWH^ǔr:bli-^7"6:Ƌ-\ck`&h(vW|JqTg/*dS"qֳG8V1WKǻ.^N-|o/v%7LhhV!.6 $=)W{ЋR I*gW\z,%q}DDzs7=_qbr=vk[Cv:>5t6ԞYI|;lI oe[yv`gÅO q#Z^l9K#sR8 ¸5/2w#D喛?cFX=zjyicqUNz_4usiO:E$&"yP QڏaϚ6[t&@uaw;O.IM&8iP=tI:[,;jwaD hf \ò'.WB_).62t|Vt *L}:oQS Zh1i-aXw}բr"v{z!P+$guBR+|OIІ}&6R- 2.BK? !OK.Tkcj>w5Y ?2n+< )Wᅲ!^d4%&9O6n{C#~í@'u+Q39+ "v97:oug)a/tLTHֺ^ -@\f:?mYn쥢OJʁn!_ni^˟ YqZjvwu 2e ~k\#<;hV7')o/&"c!]d`Ӡ[?'!o ]X:^]\Q1&!lfu*ޫS#OACI7mޫ} 2v7RR⭼&Z&wILr j-r/Q eyo<ֻu 4UGsG:6Fxp=x]1̑H".CsM֮toTrۚ߂Oip Q6zć4>߱ٓ/FzC]Z#0ˇ|m? 4Pǘ-\~:>qNp'o\7O1* vCت,ހ28w=5]TǤQ㷻b{A8;nlrbg}, ?Kj ! }J0TIfbd6]H:Bo,;o̵q̶_ &N&pf= Mil09FV'pAG#x&|åى8je+˷w H1Ӄ(dzLSl.tdϻm8t ~anX]~"p7avCU=PC4G%]ʿa+I~Xjx2%Y( &?oY?:hg\}%J~Lzr1klni<<YI.`0z)H[zsȒo)%% Y˄[C#jx5$vk;^kж] y^< =g?`Ca:d?|t2\mHDJ+['Xz㛤4;eWW"TC⎍xPyIAP֘sA G#_'K;:kͥסBx c|Xm/:~p:""\!@{WongD43o?c770ah5HRCrgGP/6éa`B4.yx|:O _&T6-grg-ҳw%bf BqRby"!⍫6e|xk!jI18}dxE|#$]xw?Y~GtK,>>6iʤBj؉*`(Zr oxC`'qL_`ˮc*3NhaڊXa x(wfn*qaY//?e CiO{`Ŝ qLfǂ {D<6U^XZ!M6V0^'TM{NGj;RVQ)J>s \TLlfdTٱؔBh*JjE}`hm 'N ~(@b Tb^}a (Ki I{83+F )!040r5oC"hFVBj򟃏KL@s|@Q)zW_{XùϭSl83BY ZõkJ(eaZgd޷޾i:> ZMnW;u*-qOfr߂X/ n˷5bU85$,NjL NcBsk"ٌ1~jR:7D|(1&t#V4]>l Ͷq|0fes>%_=rNG0i0XND?{xJwOA饷@u۱DWÖ`fwBoe}b/'/z ,~)_F;v"w3eʲif}? %DR< eN찅 bD'-**'s,̠D/@Tp:/\-SVHHe^Mݱ]^9|_- dry<żf |9PmX$Mp;:%z'L!o&3-7eB;r[1zg}ܳmݏ0=&r~y;TxyGh}:J)8XOc~ŠqQ)')ҹ<%߸!A&J..K >ɂzxs*V.`%+Hlh6EFQ5=bB* +gpBt\ɴl}ڍE i/=䨒30<7~ʼn7̞~Qvb1-?1Őۋ`Q5r cズ&!Y`ؗf6h<{[&d1iC|.K3pqz=YPSt D[*+h$; Au`$'HajqKTLg C#ul7GBɨ]-~:S(l=d5aWN/lZXLE|@"ϿaJ6ӡ|6Aˤl-©RY021 kX:haOI}X~F}?~QGrWF.pv^E̚VuDZ2 3u"'zg =}WǒGc)GQ_n0\&}6쮄HW}Y ZDCU챚!y({ֿ#aHԇwBpD@\Nmñ[bI*} y<MltUq[2A;I2vFx(S}[#_@Fi<6ź0!"͖ 9={܇37~aԌ L6V~)qWBb0uÌ;3q@Jl&1x sD+CcIxU0|uWp3^~oKB%n{ &gl`zY2L7aJ0=,6u^Rtj(a+8PэUL T0F"_6徯 S=X[>;k;:wCju6(ߨ(aݼuWl)Fߣ Z%bNczҒ&7"yxG?+?_G;`{)4آ,mq>*&3.dc|SXlaK񚎧XeReI bߒ!pآn XcS>V0#FÇ.zQu )T?OXFvA^` ? 0PHv5o r -6AOW2 D>YedJP1'QtX>9ջ k:9TJVᙒޙ'T~V}ŶeIfyb0J3K' bIizFl*zqH-{dOq{0fЇ `={ƞ (:٘Ւ-kz.C@PM{GZj=iz 9wACۇ}VX^@cmYڝKU02X:% 6g G 0)VHĜDɃ_ 1Ln0lz#Uk/&I 5dԞPev AF֭lgFD>xY=nX( w1R]B "!ud5j[Ic`sZ) hu1>w=֢ͫ6YM$]cJ B_0,,)Y9d1BfthZu,uSAޗV[%rg7b_a߂986Cij)mH^ijǜν3`j(_~g7E!l.HUHyFW<[la)^j,PV5%XӁ5,' ]7Xٞ*u{K"W˯h3_헂{]tP]Th{屫F1w%82d/|$IonIHC}Au>Ohg{E!=*@l4/9n)(pq_&|~|iVz[BZR`p‘^- {h8*Vg?΢a)KP糺:#Z \>_=XIqK-<gΦ6y#J/z7<0Wۯ O_?s6 hա(2d0^oT|УLkTp g_@a'PŐw{ɭO1خ-MQ17S73KpjD7}jC p;!;"?(aːC2 f1]}-p#;⚂J vRUO|fޙY7S O7rRO^h!K;v{9*KX aգW+ ?y38vjN0"e.!b7ZKo8q<7H S=?- iXA{X-o?ZcO+`9 Wz Vr9ԂAZ*iq˦-VIN\*$ӊ囊Nzm`'],|ޟ4Nҧ0?N< ]^MCE#1g\g_;}V{ˀ 3*Rr Hݑ}Tjp;fo`jU¢/@!ʆfZ?'C%SKz y!|Mnb"Օ'! QU9ͮtZOEM1A׷Lq|P6l~ޮ]yMgSx%O2AdoL=?V09Ѭ7O8>Cr.zIn6 ٴ˄xE~sX|0ALp] dY.c]uLc \i9ϨC|@Sk`lyr PƑFo}R%l?msDF'OuAɬ(qW^J "łO`Q[Y6 E{㖿BABP-#u> MMZB{et,awho#SfnY_6e:E76l" fU=%ҳPk%J"]] J0wTX( \ QbYw)[:⻱aUhQir2Mp74 ΢8&0r7rh8" -a^JN7eB+kFhߌ%=]nS/ы?9*r|)oh.Wߛqї(ak̺Y6oF b; +|JQ(qj3;RXVFLũCz2o2] tr,zq;Wgtά@C8C,3V_)1ՃGqۉ8uj!߰%2Zdr!c"u.lV9uȎjp+$in09U2GbEtWN(` t-)ZB9{2@W!ijbݬöD$(LqKir(0'~VM"G-յ=wRڠqK;Lf䆄%nrY8 *m1za ̜V>|fa>b|1?&;Ǝج ߣrDEhq /B&vUL^w,eڛJ=~,|'Hw'0%8;Aʝ II&o]z1$1Eaj^/᛽vxUc_{diaؼ9<Ң C‹i}>WOtnD,Nkױ7?c>r;FV2 ܬ~EjekԮQ,Ja3,Ğc gIщGVѨI>Mzd ZެzO_#)ǒ/n|ՊH}qF/ aTyټ K-΄c̷]sW9nd`!#)Z)&ノE@&l* Ŕ3GC`9fjJy +J`"C†̂p)ˎ_:6fI17MabFnsQ0t^W̭O_H'.*Z}s5OOffM%XꗻTq>F#4h56~Yպ`fnf~0I~pĚa)Ɏ۰PtG!LȾKsoAN~Uuh\1s)=^x@ߒvǯCѕ7b~xTާ$>Vk[xt WTn;?X:QH<8ŬTg{[n[5!Po{LF5tfi6 e|7pb$Wh;߼2H{wfw3,D򿐹`^ R>: KO>F_˲,yP%UPyŬ$wZX'GCYjv;욻1}Bk@H06dCc7F:bOee W UYlu،~MӘeuCA/VIҋ)OCs!VsJ{?$k ^rYc"-D`3ٽ/Kb/ /hZa3u϶@#a%a^mv0{ƌ>5BF]Xt]≌#7ptw[Ĝ,}a-P:\.[Y9>dHe=o@_tu; } eI0T)& 2fHMS1l6ReES˙a|( 藩 gB&v$DZ{燒Ͷ2A~ :-] ] ?XiqTW$ɏưr86y1Iݳ aKn//-9MeV]%?oBd_?T^Do">DEjj:,@'zw߻ztL|M =Aʖ=yfD /۽*ێ,L{hyɎ|?p(ctӖqL﬇Ic7p[Wy 9gKn'g]pF_'X?wJ5nłUX@9Kyuuy ,܎?Ey_ocmfmӜVV*|Ü qE㤃 d;/g9]ϝ$lX③yNS@;X? ۞tPbBp+KTd?Ve x' UqtXg@87DY@?_q Vy[52c3GP`=|Q5/hocוu7P)ϫ,Cڮ}ŚC<} W _)JCI͔<4vN[KD^jIua 8"EzN'%A[{ЏU*m!W8 Q*6XH5TP <,.GԡHRy:Sf>@47J(-X 6;5WfZVM3GOӗݾ@eF}Cp(ȼT{ *V{X j ~/2RAsdP0Q|!G(W2X]o \ݩ磄YAژ{g jJsȝ-$'mnH'4> 紣08* =U4GGꉏ+tr_`^;͸/`cg¯l}w[f oA =^3G$sh#VUX){Xn$oºd?lK*d. m ;cٶKuB\k$Z.%n":wfj}Vn 'aMe7H.:j#$s˺΍ON`F7Cv"7}Ύ5GLTCڙkSHl,M75.0= _-6#J 7tCa/z)UW}OaGeDU _3!DOZjlbS[%fa{O`|I XoObmO#]XqzvgAi'UUyK$~: 8ԢAmz) lKDjw7?ZcoB\I3lyvuwbIT*~bMakS&m^:Z\Q߷* .ƏI/3d`cߛtiB"F<܁/+=V@w3X|ODFw͔|Vz giBc!ٯ'!(5zѷn4 !vܫfcLeR A4;i6G91n8-OǒHZ⩊F?bba?ng`9+={wR,BwwٿQ`L1gvXd&B\ h+NH8>+\ϳ_!7 t!PLؑ"}@L3|B$C߿زNyk .8>Ͷa!"X.R'z+shs8\A:UOXAs0m3%+,rJ4~[j-T:Hzo 4݄*yj\6?}Vϫl&4s (@7tbhky{7aZF.BǾ$vuh:^e߯ =\8CqoGOiK^$飋wF=h6?p Zr4C^; UwTwlh6#9K?'Htt{Pݞd(JK5vCC[/!-L,Kjz Оwi9 2^~[$ݏ|tK7)N|9"z_b%M{. Daje,(3rt\/9Vx>ڇo/a7.8burَO^w!}V7EjgWbWϞnvdpl[_'qG\9 &6( ь%,=kvaW3ƟѧOɇ̫lL0gl&_y}oL(]E:0V(X y[9C8`Ԣ3Q_43!s V]:vGoI.\Ě&nm%.Y?R- qT11/x;]S Py | P3Z~ʃ8Z[BXBXY3'C ՞:Aު*u{-z^B^}XbgJKgG̸w]ThMDߺ =EkqCy{NjId6?zjuSM[D gS1;]23lkR,~f't|nX4r+.q}w"EV+Bs~o[svM f>l,I@s2T긖 BϨ= ;>snZu !ƿ8$/=tdK 9٥ɦ ź\"($Ă[+.l L {|8@D?gS$c-kVuM$$ b'q86nQi]Ʊu%nlmۯdv0nCAX|X=Z7B6x%'eaG \ &Xu=L8W;,FH۳-)K _0 ^>N p}^_-sq8mkعpʄ _O"3>j :Rrjǎ:w*5j[hJѿ%3vaݱ(u~=ҍvw.{Hdg_bH~BFWm\ZW1sk<@>5_3't@ fv+Җ30|Mp7>=J"ՙt$cnF1 S5AZ.ڙ<3_qWٛWB/B!'3>Ի4nSZN>+=A*aʼnӟ w'h.?&% |C׃-nrXq܇$8vA^LH?|+\+H ЬM4jT ֗ZLM>,!.+.4Z$BUOh}KTt/x,iANݧ״kk _E)yq|M~AG-`[KY3XZ5[+H:C/|nvZ h|IoNauf7!~ >˦ *nHpmvƛ@ꆗ ]X$es͕ZoW6hܚt6g ƪg-v,`ruR9w2H 6U p <+;^&rpxx9w#3D͠M:pֲ]t:AOl;4s c5jN@P@h|"|j/)z/Izѕ Z9, cENhC:틚(J.-J sKx@<-l ž[h-%Lo"<:%= Ӫ Ζqh: ZA}wn-yCy|Cݴ=3GWQcT+6|OP3?ܓa?WȌ8h>n,AcnK@i42Znh|+nڝ{Ŵe=G ~'(4zeB#GVCd#xׯѤ&CRi6 &Fs:yQ>w*ձ^u؏!H<_$ np>Cƶ_;HFB) IRKCf|*[,{ś_Wp ^EsӾM %)raec :6,^-aߍ;-][زk'XѤqHh;u ktiշ0cz~&lH~*u׫m.Q$:6:+%jc Y1CXRр)Csg;ߘ,n,opρ' ;@SIgP^K fP6aYs,Y)q㽮 1>YO d0J!ɭo=Ba7M &3k_о]J!竤G}[N>M7ۮ#joA<qzރY:ibg!prdY ~JO0 h566@GMcUNzC[\ARaCUh.A;Es(~wuQͦbA.gp)Y~'K<=ORGcñ=lRM ' /fϲc%Q#= YM((bBl8ҿ@Z-&ƌ}6'n;/U¢3Y#]NE͞Blqa͌CYiXYe3_ꆻ5u@K$<mǃRA p%{)sdM̠¸3H@2GlfvGgʨa(pxEi/_0>q6?#iM. jbE?E4/amM66,>:G^v,<: $'o9z͆?p%Aj)]#\9.@ߪRe͂29 P!tR SsPp48<eLCqh,g2=?fC˞Ջ'nte=[ЗԤ #D `B6>F+fB(Ϸ}0`aq:9jA[GQA h?ïUyUO֊́;lH 0< {#%&8ʏĩ@Gi}lP,@YFg$@Q8 a;.^e73ǵrP7rNf';Ջ[T2w08]Ծwf6)Im(+qAFw0yi5{7`b9XAm 4Ud_ܡaKg='/u`VǍ|,׸k|r} _eV)o^3 \]F2o[)os.G!&m>mHKODzf*OW32.hUӇH"29hJ5XO׬\@CNR¬/˝@{Q8v%v/;/ %fp;M,R|fA1dP6Ve0]cIP#"Wqk T_]ԅ $&1)J )0t+GdRo̤N0ty Zb#E5XKv9>ej#zB >2+p/;g=ng?K*Ӗi& Zߟ]?`1F,Y$^M<1'C(ym3hr6ݐfi*(bY5~Z>%Uq?j0iP֭kYAؐ3sb| BSuzAXfDcjoƱ҆o1a+ҺW`F_x1ZjD(]Xl(Om ;-;w~Pr*Rrߒtj 'iR+kPCMWj]r1@}"Z~XS.gϫ=EK'Pcr5xha3&^Oxͧ)ʁew31df&f\)n/^cqُ H{CDeJg(>NCaL} `̳ o|_W=7lgJ&vآ'ːM~*6bjYv%hx}E阕L@UPumQT_3WRBEPlk^,3`){V Ϣ*b0#Ƙ/,T3 A/cjYnPAX[vJ?>7B0\~LSڣ;|@l(ўZRy-4ˋ΀2ys5t$qs +^zNE}\FZ_TVqt@$gof}]V˺ϵ)1>_3=| ң5ljM"¡x}#QHRIC(n h #!"#{=n{owdfxss=뺞}x6ѝ%cԣysԣjT0ƴwRJ{4˝Cn? B}Yϲ:~V<37qѩf)E Q 4q%tzъ: aA"SM gܩa'n^ʮcLoF 'rA: vhT; 9 ^}hSdӂC!܍J0}Ȋh t(eϩZ U_Asf2M6'&ਚK醲UY΂OPaM0 lĮfv$e$Zi%WWAYLapyrf5lzL4+jNSO@=J0֪"_ ZY ڸF$hk~Γɐ@^{WLvO@g{7H)4>~Mi i4->h (,"ոeޱq}6U"9,ǘn<`<-e*ؿ4%ŕOݫʳW^hbGW~.dPϬ?>52*/?WQͪ?_ESzTҒ=zr(uAlIovf!?CHUZWvBtr,, g5!%)m?6K411~F/w"D~} B^u(Rſ΅0 DlcLy_o,`ǩCw$S|K-|ߖ&_ Нw'deXX)/k.\˯-}Jz.ذIk>d AhBOl&bĶ_MH8ތmp~YsHc =&eL{[CksS|HyXBĖOay)$5 2ɰ{0V- {(rnC:dܹ q =v2wןy{"wfV@H{Vw1*lw֏1V,nP57 Ewq,8 X?~6N2ŷ'ᏆmcSDQ1 - .k֋$\-j$Sjj]{ 3nFk5_w(Ϙ>!YWKAy2kO ?J/.WoBԏ3;'X1g묻~$nahuѰδM3,}LŠ9?ϕIp4x3U+>1I7d;PZ+?1]Z<3lʧcG0#[PF=BllH;L 6'rjDqhSUC%m(ps6Kg"4MZ>^󾚔`CwCx5ehCa Nbі줄%??~c53[[f}›X*zI)1ڗ ?|w,}JB6YG5uYY#O5#a8★=d40ӝ^ bZ S@xw>Ѧad#ҫTдI|}!{QTvwqk[Xe9w cOPˈjKEwKE1s K(1`PTūܡ~~LF>M쥎% %+,_S?f=ujg%lcBj~gR > SZ DhcQ| %Gmy@H*N ~ҝφ5W_&)VAX*3oį]ܞm@!Tj_P/|W@YbXs8 q) ޝ3rsr7_ dkI/ VjkO|󱠛#yTBm"zW,*} AGum0tFպ/_-, d.ip F> xJYLhl?'1|A',|J3s~齇+ *G\N1l"gl#܃42^HO^*&HS^cHf4g*pwy&BFD*9T3kqtv*5?n@!̛;2`%.ؤ^ꏘu%r0Kd{wD!B=`!8Kcу  Xozֶ_&<1-X}ts(maϽ[c-Y-\7ʡvҕj'6NHid߻7gVozЂm=Z15IraHR@ߔ/^ Bg/,E{U6*Qcys~~|Mc}1]/+Z&=&;{ŝd$㕕'ق4\*<G:5A+`Ÿ~ܗ LW=L~<_$ _N}l~`N&tj~ɷL"PuJ/EH2eKte{Hh8;tXES**áiG̪eACoAI)0>?<2R̕4 BNjR@Gtjy;,e >.}oOY!O<Z0w*k:oZ?mIxViUkWQ/a~ 7-B!f5h&TnW0 cm1`+p,5uFF^Ng=@+l^~Ԏjm xyyW/oSMDm$j^N+;}JAE׈~Lyc~]7*U f&ɤۆP]"o sE/(G`ΓNv=ld4%D_xkkmZYxV|rUjNBnP,e-.SPx))/KAg5*ةb> U]IXQUH}viV!TU^68mGDeRNE< -m"F"m6lMvş3ٜy+|`g{l與̤{ ;οRB Ưѳ/&F,? ѓ+VˠJ4݂Z`Y*QAH}xiyG$*  蕽AP>\G138PQFC8Qz*\9QΖb\(l:=ąkΦ[p6NqWioF0Jh@mul j%Pz[uTJ< ˆɡzK~j޾P2is2mꅭݡ0ΐ 1ngGPz_ӢߑwǏ`̺`k>[~ Ҡnӧ>.p;bY11yzx':Ҋ1M1MEX }gu#=!v&hg89lwV#f|5J»NjhE/VQVo}YDA~)L&j$򫊽X6X'r:i^Š%#JSļc6s NOU6`v0>0+P:IS@C*A˩N'ζ=3mCUtcGg& [Oa@IqvxB:@!v`mFG)̧5ܫƲ/}HMl˘X׭.fd)ד`m?m;lQU?/u9s>z33k\[Iۀd;NV beFp#!9V| lॷZvp# $?XM{UȻw*8ݻ;B o*{nHri?dt"6 2L< Y2 cy,8YT=#rveCy[acaξTYL]㜭Ю$yd%.Ap[]l63.8*T( Z3!B%R kr +, ?R ůg/EªȦ.oOE6.M{⠖>uRkנ;-6z;Kg]QDh?V X J$5h9K%1 z7QqÈ=i Q:dKB eurZ/e[< cʞtB&:Z5hOjWFH&Id^(χ.T^!_`\vkVk=ͨqB} hKAGn hSվs%*I9@!W{$ե 'o=4O$qG`u cԨcx,Mp\+ei1W<ȶZR[3h)Klcқ'ߏ"U/zT`E,kKܬO]tGWI_GaF/X!OZKiLu`HcPpMU\8M6I). f~5;!D<]1EM 66?8M0z&փg;ưMO&T+_JȮ+3{)HUz$c}Ϙu$֜֞^, l F=Li!qpC !yHġ Scܸ+:p7qNS ]cOI^Kzg[\֧[;LYjp\FT&q~?`ڭ-ٿܤabs0foFb4ӲE=QV:hΰdbWB Fx݋ ly2 vhc?ШF$ V̳c*Oo#+;pgNA;!jꌳ\Ib) =%W>F*d)vxCjOJ2np)+y,bQ^!CmQ y}/$ܹv>3V$nE``v w0w¬0eb)\ʺƅqo"bZ no0'JVI)1+?>tHડ"dr $طp׎ p LKS(%p;}Emy!k}E/Z-AlxwWvNN~^41ȶN칥2DD'KX,/Ľ< Zt Y?=(ƓXgAvN},aX6Viv˗/f,#'.Ph;.#SYC},/=9NL ~6?7!h S;ǰ۱~mg6s7'WD+ft>B fwA%: 3N:G vp,x6${b84/AgA7WS DY"4mDEX.OƪV=c'N3'e{i~ 1U(sĽ/Sv̞N?8huihk5,\AvT%"^ ᦵ3 &+_]SV~GKp6I")ŘF=q:1%j9vjqdI"tO܃3UNL0눛`s[}*&lkC̠t{k iK㇮O,YCЕ'G5كBܒ~#_PYK td:d taHHP}8[w\?~2[6N@G ǹaznP9kԮ݀{]~rMt5=Jb_8|,v9X ]m/cU,=sK]L]^26ljvGimqRuT^ $9Uw e+el %0ƐPA>4Y laU/86~ 7]S.Ui-÷o{ Djv%]_t tjw m" P5Y~V` +^*AfoCX^E y^^}|tsހblrwY3wzAmH\}d]tPHOK:Լ A<DťenLkx9-\O? wNzmڄ]ʯQr*Uc\_Q`擅^_+Md/.aU$M^<>˥*%R؛# m-p2,Py1ZD.42|Sǡoķ÷ځI).PEn0γ`Ym=㟟1[jSYʑl|vVje~|)hv5 f4NϕobMyz$BK9$`hۭTD !,Uc;5E©!6{3ݘ?$buGLv|)Hio>}!?ib5azp:b*& > PW5G#1' MIfWcc?%y+i"_4^찁(rkıfv:0KXl mR֭r3б4E787:ӏ UBCjU th,~";`m2b&?P}$c?X9lo%F(RtTc إ>u܌ ĝ~d01Z!a)J67֡6HZOF?l2kڰM~G,Uh2L*y{,k¤ ^W.xK)n) $M]?W5cד.PF"#uXm'δ}KL8[B7~z&x' uыo}RúHth Pc|򱥩=Y[P$? 6K͞io,5P;luǎ 5@GjNr1ؒ1& :OJi|'Li!BZeW&81e/7LJOϜӗup*IQOhUqw҄[=<<#vs*=d`p.ո]q@['?`{jg5oHES]k2hz4Rnv{NmwUmgBz'HszE!q|?RYU[5 Pr83)^x;[KTjyZ?% \8:9Cef~7; Ȟi.yrXSs.S0gF`<^ոcb.۾AUn8\pҬP5 Bw6+/᠁ |ޓ.g~_6,~Uɣ;2ymE^xz-<킪 z|~CNF t/"@'~'l88Nbϟ;=FOBMqO|HoAs 1!/pz$6:)*`LOPk!G5F|ͷG޶\vs'?or?͊b=6߹JM̗R>6}6'f _cZAZd1^v#A}cAG.CÛ& B&˽f7SR2 ݦS0&~Žp39 IxxzI)Yw]>uj/ͺ4z?b0 ?*=x kMHyi Stg`cRpo>qsbU:쓹:9 .ːk皥Т{"W5炣q㠅';xJb9wbMEv~w0`RJLKE(S'{۬T3y4nqQA_z3@G}e-fƮ7cf`Yamjl k g$* cdIj8N.pZ%ߟdT=|HTGG&b +=p'0 q)RG>hTJal$7g3p~gaf;%``k&ZV^7)W~-$(Pu9saw[Xg&60] sQy Ly*Pqx#F^Yƺ#jo`# f۱W?s4GDYxu-5D\.U[slGrJW)0c*$4.|B㹪׏PCVl#رHLkSyZ .GSzeJ[b&d0[W2uI"ӐZ=`)H|߯ ϟ\OhuE2CK475ԣZ,&x^lXICͭƩ?@r,`ɯKGϴIe??\A+U+mq̲*_1Ԙ6B1 L@ ǡQq(MS RM{kJ"d0egGZj_abgsl3:1*;%lBX6)̺VK5~tdL!AΚ 2=mcQβ`]}[x6ܼF ]Nݑ mA 2>%7=_6'F[yBX:SssjAGGa>y9F j[j؍nB37)zU~(`}[# E3:_C0FK0Be)9W~pXU+Y߳]HA s}W/@ox߃;0zxÜ!}UʃjMf? Lr֖ö7yB.8~)s?$w.gHCVB[/HM(x{&T~pRl(B.n:–n(cӕ++Vب74қ;¦NL^}NAl 7߂2$ja|82OtDcq ӣ+7TP1Sڶ@[МZ׬?zPF~ld㏖ n1 Xj>,`VQAȩ JDOP1@ OL yWOc,X)rz3?6f@cZZP#nq*<8Ȝ.+;bIS K/p@y/# ͦ Z<^()s$k,GGeJ&ϩGqVNAOK6R>PNeg[(b 1}X|l+Nܰ>qq~ڏUfOmLicǾLbдΦUUA];~au>Ƭ`c??Kfj8Dh{#&÷D7hUp%c=:&h62:dd4I)k@IrhyUI~;/'VXjZ'6Δ>qj[hT (vpXUY447 5 PuL9Sי*-*VcPy]f{.+qCuD=Z݊SO]sʀ7JYkg1'XLO0}FC;mFOBfvr KʳNZPwvwvV 7:XNFd#ob{KDk7|h:Lw^Z=.p0^8q3V?49csXFha%ͯ駇ݸPPkRi6W$TPش!} Z7Oa!1=plۧ硓Qi tv|MdIRh8|tXoh h[ zJ8sy~yb-hA"m$vpx/-H9UJBĉ la,j;OBjce:&H u qljs#^Ї~gCw͠2ay06=YvIDïm`% Ͽ,H} Mʐr_(c˿ O*sg@SGrP:5_zV@$5U,47gxo]1xptO~ۘ r}b:fIޱP[C(!V>t0c'T g`[ /iy98# #P~%4'Ztm&' L?Ut5Z./b|'__. *|" >We#Lt RI@&Pf]v&ޤ돕0,b0LE0bc`L*f} >o U]B u#6U LE! KOr![l9ox\.UT .Z,4oBӔ0/pD;^ |={KobFıBgR h#Q?'[PCm!hk m8tKcTx_Ps*9D|@ ]W}g҉=[n&ۏhY0f}Zn.wxu $I\9&x_yˇߡ~"i i+VYE#@0ytF;ԐƊ?!Gn Hu?Ǚ GA X$1>Ś֋*@^ZjWT@ŭ *:3CoѕwAzH9>6p۟[tYc'0#C; Bn}\*'>P%)UA&+YeyM Sq/#ji$TJ BcmX>&W@y sNA0mt:XR`5i:NUۃ?}D8ov7v)371 U1Zq!L; v(gKa!Ι6`.נDT?{ޘK’ksǽ7ؾjݎc.sX>3JټTZɦ2 52!L}]> dmH_:/zNN\i>'r+MFM s .إ9IqJLuL~whDu1&{'?BxO`ŤƤk8jǚqLQ;& rd CK;۩y _ǯ.P#A/0<%bIC:\sX@|n9"6pkHoRsK`Q!MNl}'Qh 7=nm3h4G\e_n6QOaI01;9oZ0.T:q!vՎap4M ~-B_ǚtJ8C3k}[X6.ԔRj:C)p?˘6%}j4Qdg}иcJGO I郲K)9/1CPנM;+hX!aS-?ae)_h[^A1:EC X0itA5s sp[໛sXE0`raoI5zm&C]l'^czȱ8"_O31IgoB9ZwNH~ٸoisXR|PHjO5Vֲhwff[qro9||,8?:#z+]bW+73qQccF&1L)8p} ꘓV }eLg|o ^6.R Lyءqוj`嫫94&@~al65(R qH5A׬~žC6lh{1ʳJ8qHp1fHҩbU[an,_x3Ƌ]=Ͻ[B ] gɱcq O_=*k5y}eolJYļc/t$`֤+p孥ooŜRݎ̓.4guy0I簩MlcyK1˴Feea-~f4Zzؾ'A*S9o2޼Q~{AOjG`Ls+9!yT'L*JӺYYFfEר5;ly;C?].{o[ӎ3y÷iʚ'uYiƑt|q`6 h_H\Zxۿ5ُzLi237 .>,N;g?ZDZL_/{xS !_aZh:P1Re@PjyJl[0_nјC&Gn[k†k˗+CW:=U8M;LX.] VOAX7Hg {0CE#oX̦m)Mh0t,9# PhG:"5ew޾ 3~uh֌=+Vtݕ2w2x T=8g*U1''Xc CoKq_x.i>%p5# G=<n PwkDYKxJ]Z~+&K/qhF#Xs76nc͛+z@g%P+5},p2\%\27Q Š'#=qz%F)ӨƇZɕ}4|[+TCsi芖7=b߶be{0/~RT)-{c I;{BokRh{l'SKuGg,RZ6˃`nA|$+gSC^ ^vPQ_4 UgO>|1i_?v:2#[ԍ=L Sbo_E׻U=jѨ995GHv+RL5&s=ϡSB._vY[+б޺Z'ie@D'79|j(Z>P~vaQg CKW dP٩Pz+H-l2Oݡ!>(Ml;JuJ͟lA?n;ТWF )^Z<ä7 'VB fAC5 4)PB'W ōPA$OFbBBcmoPȻcwhL>C~\w0f7;}xQ ~fam;5 y7n:}&FыsdAJ8ODƒ nĞnֵC~AX_q&S$Ѹ,\a*k<<fD޳_оU9esF}g zBST}4) 8e_ 8,YSvʷʰwiWplcaN݆.͙ݜp'k l4^^}ގвS9 6E,vh+j={pfԋ;lQx #\Wcs\mXgD1=nK; $l(=cp{v@w~TЬTƢZFhEpݿ.^TUֲ}Zlu|ݗҗDZ;_0}mFP'{2ȿ~Y@ZB}[·GSb@L5vh'>7e[bդ\H3;߻U%-C)vשLn#}G\Gʑ@ !ʏ!U;"E0h q|w2]9,/0f^jt559C+> ɀ'`uQfmG۴>[-bp.7 gr^)1&9}PnM N8߅*CAWЃ|f# E/S~a$kΡ^Xkl;;g:0wB>y{88ҾYuxEq x^﵌Fڱ-""`vyC:L Y#_!;H8`pJ}~+<}*Ӷ3Ek^l5cZdZ aKejeֱ4v.v-܄B+sWWwsᔔPGX%xQ<*6-fOJIͲ]sQD*ȋΦsShPKUcb.8eQ*9 sF5A<1hbk҇bm!vv{&Okt Cͽ;@`?K-t<^?] { q/ߦx֒B~qPI%rJş{9MN堔sP1h6Q UX!X[-T,.z#_&ogoxr8aRG-!M6:+怐O6_u?Fj<㰃ލIn<,F[:[7*sd Vh0ܺl ''NӇpff5`6.?2^߽Zm?z ډzʠ0.'4_Pغ3<]~򇷅m:nl> +PÊ O 2:p~Y`*W`Ir90KXoU(- ?<23ӤЪL{t%!׾Z{CRC$I&[@v4!Oy-ni.JqnBW(׭gOCÃ5L\ %-q*(7B25/0Sia_Ex\68x\J<GhpchZ(}utI7U/hE8Օm$G&qbc*7LPƝn_/Y~C*NL̇uګװO+fqtC)6v+}!zyM\>lPQʃNF b&x)+"pY/9Ĭ<+{~th$j7򨺽gƺWOOm:똾Y4pj]nA=6P,wJT ͥc/V}s1c*\Nyɍ̇ ':yv}3ID*.~p&*VܮS)>C2;=t_XN%r("'uuP3%m63j[Bi~St۴ \슇 [Ş}vlxחV@w`TpD6h9M׳_d,5+X?VG&wߟNY(xha g!t+ B-E,4{oBeZ^2$Kz&قWǡlj:D9 PrbRuTu%N:hq?Vd&Rՠ>b_ y0vCkɟ [osGL`𤌆!vaTJ>%0pFIeS&,vt~lz_#V/}aV':0Aȹ`YWc6d~#p6D)MrRoCe˥=X"Oy@&4 mˡWw7' ];^cgжϲ3s17G:~܏[ !G۸jʮ9xP"'LL,0'l;q6 z3C@{@n? c $@k2o|pզbnf_L_bzj\|&}b6!SzSV|ӷ6Iz z&f$=vBQ)9!G`ুNo)G^ A b{ea{ą):/{_SIaaZ]  $OF!ч'HZE9tlt%Nm?/Ǝ`91l1f)/Z |!#סX]b^ ](@$3!DJX#r7y#I{MB -}vR٘ypl|;_@u ݟAG D0ksRVx7?LzD}97Z1*h70ٙQ23>]i0DI dҐ̏ˤXisٻ"yiSUު=܎?k&{d0u6;N:d#g= b;k'$RGt531 s4"qew-fšK/UM wBK`h9viC~||7 JJ;K#…a8'q6}'$sn؇[;GXZs N]/Q5e\C#VشL.(C~CY) G.cy4 zHvL7~[c[I)iem3rZn*g(liJZJ 60e'(zq+s Nyz>xSkMGXpEҍy֚{ pY_?L?.&퇦9\j|H9G4$K&)<+ 6#e1m(k_} +JmTE q57eO@繫O*ǀ0i nw.gAXhz Lr)֡9}̉U^?0J/Dw}}̽HY2]Kd5EwwuLVRWQ{Kt<*<uG9҉WTvԥ Ǡu/V湝-ps%bц=e'4/ANpU@%vmsĂA(m>ɻ~i̤ބ8DhgFj7GӅ'jk8XGƶD߿. %bm+1OnV5tu_7@ղR`jI{`u Y =w hw ` *2E^xh⥵A "M֢4 -,>'~%zUc#+ Pr~.sRlJx@ɏ d7Q*_J}n~L IJ*+{\.7~$}MX[JdA֭#~YH;m~s[.H]g>Y;F{Mc̊eR _`YwZG*;/\kD7-N%A-䖟.`HA}[=f~ntP\HU\X{pJ%Gn}HJzlYS{}/z:aSy`=wt6Ldn⮟ >|yj_D:W… lcWnUH]]A˫c͉ lJJfžҋ}3 ~jLOnZ.Lr7I~޷N^҃VĔ!:g%loK!J@Y{j _Oz]E=H0a%0 a}[171 G9!<_|qy~w(1N C\W4#`řOJV_ [7AextBxv:VlCƟj֡b!Wlb"ZWx7Mu |%-ot|!̰5˘*{ciB,+dL8/}TViׇ ӽ/~9~G_  ]t,ڋ.୘?XK-4}TD]6/ WL=˾%qa%dFxP'd;Kʷt ܘf ʅi@zپ6)[s)scv!,9bJ,9XN?@ETR\cwkbrKK,V؟ԄdpJΖH 78*%K E$܇r qxGڳøjknh$. fCݸyQW]eԬ.c\Tc~vs?ܰdV8D5\XEE"7ȌΕ"09\nckGa۳۫JZTSF>i=kƟş$J^Y_:p^?;ٰ׺T8dq8=ݎnB'&gFK:n)ލNؾe2{,-U*k:׉_ؓ0ͫm4W}ogL# ݡSa}ҽ/Uϼ#y?|+#l(2ꞶӊXq<v+40͕ D^lB<2#ǙcRm因ti^it;~pv߹3vc$58tz>s$TfvMk/| i>jBp }}QʟKթAخ[T5D>. a+3?aql-oo.`%Ml8 塑8+$Dr5xx0t,m2 -_U]P[+GeϭCu`~+!}ŅC bkERxx#T>v[LПp$7ed';n[6&. AU$IʖJ9xa$썽i&YcKh $(NSݹ|UuHחoS3o߂H.IPq&"N:?qn@[x^NdݯlK\Acb?ZwD'C}j,xhcZF^ .īAO0gfȿ9"T}彳wJ!_fiE*43->͏BΨBD x޷۱z `Vܩv!rߐQ oØ2q?j ~$E!U=Tg38,j_*$Ti0z~%t;NLtCPS6I[m  GT~w̦HyMwx b%7D{dTq Z,Lnt1Ɔ%cd@eB/ZfR&g1ro)\ ~}СF6(:Bb*t.؟TnPZlG] B@1_1 nT5Ͳ /c=eiLq5giEvm\@,V5a*V}RPjCI)l;;>kMNAHxݧa[( ЭՌ-Qbdu-pTnr=+.=*A`AGfn8X_G^;J=peR|t-eH嗩&y)4k ^e-A#.@gyFkPd^t4ĺr^_8ǿ vhAdrvP)^~Y x yrjŷ*T:KoolʓyR:#Ц-:t3 ^nڨA8u"YQؾE?gzJCs`8NAG $ĞFI^8ݽ:f(OښeMD3#td=;c?3F*pHb}3}ocK.L[=Oة`Y.s?|nT9UXcr1!Nx'Z Ƚɰ&hc({PP'8N_݈Ģոi P<*$H^?ַ}Cձ~Y]ЙWP]K.ᐹz(9~a_ J{5?MIG.JGFN1#8%!Pne8~$#?RTN]E<.T3 QOjPAW}ܬ9GCTze 9AkE̼OjېD&8-N& eG%A/ecGu%yW1%SGr]UzU{cWS{/pL="A"g͊x0~Gls K)gF?]xq^W)*qqz zBz>X%ߛ u>%CU1m=Xwθ%V)̑u 0#,*1NԾE45|JTvH"@#IINAY˂_$+Tr(>'@eƻᘗTi}]h)߀C5[5E# sF=nRk9DKwC ;oc;ًN O2rA0$Te+~~/CiZ1%~=*Bז Zg>h,96TlP%vhou(#7_Α20]}+f֔u q}^hm$:@29s!m?aHMOW4<'J![ .UKblF<`|.)g 1bʃpZ]AB]?Ϙ?M}Γ*䖿0T\Р4ee|xQ#mzOVz:<3\ARb1k&ᗁ!B}yPMk{Au4eڧP{A$<=s! :P5`;-H-CztLWVW}W:MܗX=>Z4^n m܃3؞2p!v*~[:J]Qn#лo;tK^B}'d_'df:vPxk"pYGprPd:LƑ~382t<>b#//腼ϰ'ޕ~mE*1qzEMg4GvuG9vw.D8u8s??9A{>}i7 iHP=8`7e'PwHz85O[0C[%Mu7h$iw'U l,b泡Puvu,P5G__BӣP(9dV4*;<8ZQm  ߴ`im9lPʉyӿq6'YL-JS&XqWRh7v͟RʆXwU6LY=?;}Kf"P2 ERR(#Dd=[Y??~}~^s}뾮sselu߅i)vrf۩kXu+VmK,wf Pn4/VPt,˓8|sQԤ?U<_>JyRES sN=[}@$ fIs]{I!q/:G ("OINZy.Dرa8v'Ģ' Ms@1l 9Z)NJMS;dFttaqAJGlPa͆qĩ~oZ1Ul;MgL}1̾Vv~ʩG0m(m4T"PuM,d}A> Y끐 #"J)vH=2:)'ֽjj>6TƾQh(slT>- o<2$<"(ps8'l3bi3Tu-3 ab(6;AD9uovRS(C ӿ.gFFu̩?0x ~/`Sq56 cC]UMl qhWOZј#y3-93o%vlx< 7? *2 )>lP.r} scsb]PY a>WP 51B Sݝ~H*:?ԫVkCϠ~]Bgj F> MfA 3/ ]:Xa].0]p{ 몠itdl}}Lal{jgVqP!EBI\WpXMc_ž'}qx%3Vv'zEb {s7pS_Ʌf 6(z2 >{7B\jht8; ԮPoWQY =/AkOa꨿}l!M|5A0=hS=:rӇ˰_P{-\-[ml, XDŽLj˰07o,{4Wc.@kȾ#Nې89GtQHsB󞕬ؼ.9E*1P릘E[-/n],.UQ i~4߭e =Jy /ՄcsSC;(O>Q<4c ➹@Xb0ݶ€~hY' u5AIS>]-]gQ|a!d ^,7^vvG GnЂ7ߞP`r7\Z5ꨥl$Pi]}AEDY&:X$WFq݈ʓv^}&RǕLip4e'u%d@aR+l7?NNo8uQJ8^Pt(FJ*"B"b|zWDҾ:=#.yjx4oiD0x.| [E|Qm/W޳?~P}T 硅+٢~ʹh^>rޞp@>` $MORvwhsk3i(fU=kF h^R{AMC7UI? ]JD==qDa- -WH_ݤK0Z'Z1=ڲ6Vу>ƗzCA"#L< *z@UC0dkX5Eï~*[w,׿3HхB|{mӏҕ]t~N*f .^E5L:'{ -#= E{2%? tTq|>70;]܉0"(@x kǪE糚@#Λ]jpZXޣJ $MDaAwX6po#&AEϋ*@I(-#lȖۃNѳ'Fy9SI5mI{+oxEd9 iR6_[[zŬaug`[1XVt6F|^!r(~])i*WCSNH+T2/1J޾1v>8b#?nLT?VnۑcX7K7q>nV"V{k3?Э9}P-Fӎ/a˒rfm_6M,@kJK mgnvC2iXX %IQPMÉ4(zjW3%C,,Jh/CVLe۵hK=ȗ 3k9Xzv;_mo {|n+LS?l&?A2G6셀w|#]t*d>񏹷Ew?ھhK-=.%L۰toIZTL ߊ=wlvχA3_n@*PE[ Y߻33WO ȪU7gB^vjCif p #$e@㽣9y [j9(w>щ ^5kXM>WoVf[$^rz(/8 6o@&sa T4y }wĠ,*$#M픠at {ٝ#$JcThz} LU& ?7)BFxսXY}Vz!UY҅70;E vJ/Ҥya1bi,Y xC5S#oq1Miș壝1&sl>V Tf_{-R$!}gDT3L=t94a؂bdg>m quYq~h={&G JTzϯ vc!DX=5v?8ᑂJ ە]!t %wb}(^ yaTn};QVB_DL! ݣ nTj]QaǺ_\1ӥyՏ7kXÝU$Cw@Hָm=hoR^o\ uat*y4 PliV:nԚ~weop*R_1EOziguաg(s'\E"{JNB73[ER-Kz ZUjߜx %Y%MOO`iKz T*^M|R>tN}t#NΔeӏzoK{r-ѹ/5 $] r{ zyt^8]a[LoF2w?|=U*m\,Q60l}3#G;^ʝ|aƇ'P*>{$y &݆.f]]O"(b)*]5ra8t/q9 U)p.2]엱$~峘}0aEwoyk=lkm-kBq2{xC *vřM\iB*ݏU^AzZA;UF V2]s^`Vੴt>)>p_g՗Ay%ׯCw.{/Xbiz!/ғ~Ɯ.LHzEmF[éZhYtaeOq6ى+a!{eͦ,/,50ߋw/WAKGqr;TJ*ٳoR)bG?&ۍoUi'/}»,lm!+Ҁc[X 7"mkǗhld}z| &{i5$N۳=m%EGG}A])a5CHvaVǬ31b">,'a>9;X18A}9cdNZ2#-O1_@.C Zͫc;C[~X ܸ̿c?6QӂiDewn2$}(}chąMbmU&lju$kT`W3As~1G~n8 ƕ؅÷2n Ƚ>{f뷂;8Bv~t,)0 e~;LĘ^+#( o EQC;D_5T & ?,y$;tx.ZY}7mZcxDh#_'nƥ_7tp% ?8oOnUDp47fVKŁY*CW~ze#yt˽PjAsHyzÓoǵ}dl8~A֥[4Yw7jqxD2v}a"I+0nVN[jC~:E~J㲺eO>@ڞT5<}thY`3׼s1=YKXؖC ɤm A)C|L '.Kc 8R kˠV%lذ*k@[ sh| ޔbD83Zl]w} 1_ٰknGb1^7ZU&HK[ Io魙@1:{(nwl$QkLB=_.-ߡ 7PGLe j,Yn2ފA 9_J\7zu=,Iݳp?~3yr?qu [.@=x=T*{n:K o[C_ xR$I- ; 6P6i<.-9:и)߀%s&UX5nu:گg0`m 3Q.8X *Q2l/-x'wR#3?:}ՅoOӯJ['6\dY+~",4TRZP۵I.T0-hMXy% tr: TP?ReJ]Py,IE@CStØImaw:XZO3 InGܜ'lIt@h6xu /C5h<.7iDU{NC6:0\L> ף>T^Fu.3zM@ϳI{>QZPXgC4O ]'rnXC~{hKǿvbw\C,9,.恉 {AmG[(^U[l_!hN0Xy̽cl&rʹICm9=OcI~J?]s&{=̄'uWO=e2{T^v`Y-hށg{v$2N$)>/.T,"AԋB},c8"Ǽp|*s ۃr(㈟i_7ģSf $צN[S_XNh"2_?Fe|+=䏭a J:}ؔz4 =(} ֥\yԇ#O ?tbQNP:I#tiOr lb[IU7lXJ{.NF 6]v Q`OVdէ DӍS]n4>CH^(tzy>>9?49f'C[ 'bdO[Y <(8&>Pc߱G2q;rKE3A[5l@7G ^"7܅d1J^ V%\݂W/cC+# W C1y/1yzHTYR}c~[,t1Lw>b׏By{ Аr+PܛU\_8*[;Ɨ8DUϳCȖch=WQ}8?v1" Q'o}L*hF{ b]y ImۿכOIwJ*a ZeJ̙Nci6{ mu("$G)Fo9`n$1  q|u[ϫ`N.R,ߞe.C-qOv3v gb'0vSMW-iZaOg}zp}VلJ8>jaӟg^ k&4P&aטS6C6([\ϭȾa:xV/qEX >4L2#WpdfW,ʑ\^Gʭ8X瞚|4fj)͕XDK!X^K&h0gb@7=U\b6/A1տDtwㅐOUDPM(ȶz Jb*߃ߵӁ CWoımP@}^X6Sj߼"Vԃ.B] L#uۋ p*uԪЪ0{;$OS !Xf?8NۻkK!/ hzFm6PkE"QPP}n[J2Œ#0;jc p;?ܚoqu+k$71b>Pzbg9w k g:+a=ñ{0Fmz4c?kb79uO0iw䀥ÆچfX tc۞zJXW; 3`SUASG tc.zr5bOWRd!U(%SkϟLT$aKlLk̯]i@3”nL:(;h?91 5PR&/;OCO>BgEh"뽃~}}`.&ѻN1(̎!ۍ}}Swo &!lvH8S5~kh9#PrtNtG#=.)Sbyq1lXw 1TmnL"{ѱ.i?q5RWCzyBqľYK7A2r$%1X` * vt栨6(Ԟ9: }Ē/:f\,,zV[.qKɋE+{y @Uvu7,9y.Gl 9#)tnHxQrv)$j P`zw- 6 q68"9~{%Mҍ$r=إ_3dXk6txpxôcZ8n? 9$C3?b,][8d~! #=p}]l%}q08J_<?ŋREAD8#}p )s-J#,~tE냛/"'a3S esp̘:i c`}XLnPc W?\>r48--a?s>F8?2(]3ǨqݚɧNY6b%#_pX!8UJv:_(jGHcK@)7]h\Xrpe%Uf]/7\i++R.Xخoi|3 0H6X]y:ˇap\&1timR$fck,B۰)+vvZh7a)FXxfFt`P ,jqJ#뇛h`iʚr=?35$9k<&pMaϊm(E"[% ozt,yGcu?{dx#{_.W%f4 n[c@_k5âuAv6K4?TRX/\΀k ']+ݲPed)Hգy|]64*Uv_GiqιG@bp{[ 1칇 zB8ۑ;1 ^y>l>sNߦ=j~7`< 9E-]T7XAIrA=A;Y>ԗ줅g7@mޅ`(mDA"0FSIpm)HU!}ht>^5Z]ՕAFW5LiwU6rwP:r,_b9.[Tפ?`8M7Xwƛ+V]uY |ߗϖv@u(yc4 DA^!՚~I.?cLN /XlzfNª!it}Iw7]]&?;}@sHz':V78Y҃̐;y?Riƿ^\?<5~h T(77?CNA!b%'IP쀃Nf^)iwG8%((Lr{y#T_>#6QC%>)N׆8Wx!N5v|ӭ8 ro>da}7j?`a -g^dx;ȼ>z7O wP_#D6gt/$T|Gz/c{9c +w. ̻q;+.8"[1-2zӽ_NknlA} k $ 6tCДja1 ɣh/@U"ևdж[o>a4騻< ;T't'?$OeO)#n2@8qhP-@GkBͳUv_(=ZcT1W|{݅ {?ۖ&KkPaV ZȧơX* Jr~ cccc]A^K2=AP8ql33}ULTB6is !O|\1ur_lƊm!`#4ۋE¡;à*j?|-.)d~!`,s *]K`%aO'=۞|lJ@!NӳBY^܉i1qkoFT參ԛRd %F({Bq 3gc>iL#s ([́r$qp뱺ϛa)}r+@,0wi!~/l X^? ڳzov,:G1tnȦtk@^c^LB3(Cl6C/gLPxJe(!vkH=\wJ/$>iQf0zP6 o@ϣn7~V5(޼+) iO ?CsYLO\r7aAM avpy Փn0L}VGV SϾ?ĒH-Wh.7xc.x+ɼ>yG*w:G\D)l{\\k&)DcPch:*)F >f"/z0i;nlvsv ŅaDz /2eS\NPcLwO.b/'bL$bN ٳa'afE`)TqRv>Øp/EY~- ,b ] 4S@䨬o% y:B>KPK>ߦd/@u3jfBcn.P{"8>mڄ0Hdp=b_qfAI06z_? >b`u$ı́cCy tE-o=7{ qm f}X钢m1#/b_p%,zgu2M0U{Xg /,a􁿆Kձer⮞Ȗ9 q_út/cGoI[ոw[vܻ/T3bݤXqX.;wbkXb%Q*]e6 ߕMۅ%Z@:fIl+ЃE*SW ~g_?eLPl3O6*3b d;@єI"+:➀6Y&B! >KtEA,k.U#پ7 @ܓWT[m|TiI TIJLʑ0.%V9镅al=~ڙG6 淤Jy (, -?z%ˠ⊊e]xsӵ?W0KQv~aX26^ I ajƚ }^['ÒG+秈ZjbI]*S7󨈮>4c?TP^?]_C!$Ի-lAű3 XCZbr{.id6M\fghd~N(OEwsĽJ֯ZW*ho_a6y4Q@+|"GpcfC kTH%`{#eX A(ɧТeǟ;; mڂiP-  FFVY^ ;^(+bb7I&g?~z]z t7L셐@~QńIA!"L|w wYP-C%6^1Awoz~b ?Cپ(Gi2̽5E#҈axX }p,GAә%SǫmitA1FzQnZ|eU")r(6}|\A - o>mmj+_biTh\eG7hý9(,Y&ڮ 'Rm ~y͸jŵ`RYt%! U.^##|[:Vʙ6NKPlm'xS~-YQ]eq-smM`GͿ5_]^,@q ϯ^[}/K^Ц to͡_Np0HEB!G/)ZܗF["02^AA1v,~dyo!-p(r7B̀ tgx%z L|Q/onTv/A8S~oAdO5>*"E7.4~B'];m^hwQ3DIP kq}ҷs zmMp ŝ=D2])s7Pl|I>i!{%O 'BAK-:?#Sֆ pl,|YǏfGoi%_̾Zr5q,uqqix1BF)1/vbSئ19qeOtBӵ̟=51q./"#8wlT:1?K{)ʈЪ孜A$-ղZ?zE-4孾9 S<%pUjersM>\:~R[|(އ;W[Xm_&*+2^*ʫ\JSs-\|!GKq]ǚ<8O +y*9,}LeɽqTO׭<'Jvq^Lfp>u{(鱽鮾I+.s+܌ ~kY%GA{j N. ~:GA`*/Jҵ8L&.Ă2qV#lM1?2!vP1' Xp;,;#,c_r:6"+3]0u3bIx]ԥ}N<`͕ߘ^eiz-ayR'֣y~ÿlg@&t4-Y4n٦a(WnbK{^ h+He>"Əe>s r2C Z2xWOQra><,sɰ-щ%$_Ǹ/B°jJP$a[u ync7O>Ń Vȡ\Ӭ+=0hiṕ'_Yڷ,XtS ޸ɟƘS2XLҧnՅs"ޠB* wY7V M ˽$F#!rOor㏧s!#?%2\']0zrp ,@…h+JHU.%JbU0i$9wFL^s34uL_dIlXHV~>fr}!*x;,ɲ%_.E5 ب9E/Rc XS+ CbV!GKW88V׺5Բ㞊X8bc9M"+ j0yX7IFhInɛ_m7ʶ90/*zOT!&zɾq~ ԓ쑇lF1W vg7ZnCJf9gSt 4^V^P߹.\-)>Y 69F4ojIJ3-iog}߻; .H@%@!צG%Qa<?uokKҩ^}gpBؒƐ (uǧu/X?mYYv{6,i/kBxW;BP_ΚcoF'˸tTb[n:]:x3*\iBx^ ("I)߅CckFgK1ȺJN:c߽A~f>[HlRrbMg*&جp;4%Âٯ$x\()aU埢𢻰p~'ՊGmpP*=XNK#WtvH,6V8UVwu-1CӤ%l}ֶb{0Kv6V14bW*H=훯~#t!EqXn`Z~:R!i_?;?{.N)=G?(`ƒgX0vn6?6\j{al+>)Jvjr$ZAMsODzaK~@J6p6H {-fUX+JHȝ|zJܭյj"uO{ap|wTy^(T8 BJ?inz-53m?7[Zc{N^/>;Gv@?_' P"YP-Ҳ7!W4Bh~ +q폛4vl1z׺R] dȈZw==1$i91_現%kTup*}@SNi @ӛiWBpnBױQ U»U߯q4w&bW4\ a!Co!a56|f!(Za(EM^߲|Mok_4G/,k3uv[̷QH#/>r$ߌBzyO9!4㩠VƆ'SȰˋZL֋ʻD0p¹L)Vιɀ>Fdzؒ-#àOm"0[xV"~'S F}8o',}Gsԕh=8Ox"=9ݼb~%M)8Gy. ͛v`(m3ul]Ѝm;ѷYgw yq]t)+7FHҔW[.KaHbX Kua^;6Z!}uܑn] ܯ˰ XwXL7R3`-lB mrO*cU'_;xHň{.͏xA5j|>tTK7xgeӆ6بU=5 卆ALP1[]nD^0N}=%>;<b":o/ VynR >8?EbZV{].|Z LV&EJaֱl0\# iC]]/CCǺm3gRYC'IoODzI@]ZZ')Z:w5̼#;Q0Jx>7Qi> 2k ͦ <ڵ~݂!ߌc6#5`8(L_"o0-z Ȋ \=u "L(L a[Re!sUyf֢A{x#-k/ Z܆ɖWonEuhb.:܎~L{e@%Yjǚ46>LTv>PDؗo ȇiTķIzv1 cz/Ĺ'9r"$T};x-mSfXbh%2qk2)ojCRC+;U۷IbٟSZXj%ewRK1HgjLw=K "; aRz~3!Mu!8)-)ZKAQTh7^8audצ(c3#)eMRޅcۤ}pr3:HEQcqL_K cA۰+15 ? R\pceO&toiO&VX+xmRfñCU[q^ۘ}/ R5 c} 5%SբDoﮔu2:3]WN SO`GW_Y"{C/ELOlH+84M%5.JMq*p"ieND̛*Rr1վ<}7KWKƠ'ї*k}O~il3X1K/nb=4M$XÜe[@Eu E|\5z@H}$h 1EU:*o@8P%3L~e.ΝԧsWai=QBH / ">Al7/ǞWs,;l~0tɺՎ~VeDO7l1L՘+r>f),C\5!t틡튓if};os9d#{ZNM; asC(Ч߯zdU๢v1 a=3CG?g$7Zw$RV"nSFLYauo>n+[TB ݣee 8&ئǠ6=DH2RpqLP'~"C?xyWHz!c޼ sweFL-P6!U].z4_L/ꠛy7{^SWpʔvAhaWoUl))Ps'u/ T3W\Z,Ux][S=O:~J]}wWY7Rgl BC" m.PA{=eu R$q\Vc Bl\gԃ҃e[ƂаbQ ͝)]p1(;k.]!rKi2REONqWrށec "'+ƁUhtyg}3帼4æ=h1I3ڤb$H:1? aKS/L淂-ʯ.Wb|YN0W^UP kĪx:yv*ZY%S35N̜&ۿMqӟ !IY79bM{Ͽ=-.[桥D@)٤#DOM ׳2 cJaI"z`'$XS􄪵I XBch̗~mG9 kG ڝ .LX@˟Py]_!r<qO0&X` qAY&~F#u(ή|_Y%T9`Z< V2(;aGt?-a:OAQ6:1{mf&1wUG*8uhx>}-4cU[ ],*Ē4OR]^Ԡ*gNC/s!ϮH bG],\+&}CUPR(o\'?tGqt̨]˴X5Y qP쉅';cdvaJnH8i-V\L׿Èc?Ysb gF +ٮϥb.zF&;q*RL ^Gp{:cOsX,$?f]ofK~5~ÂEd!fsL%;VDfso3AeGIO+l.Gޣ%ԾԽ݌ǵcCNu8&[%8E`7o8JAon0H|x .cѥXcw]/_$|Ct&QmhCVeBKulҰ-9,>ta(/\"m뗈-* g&u, Jº!^~i9-L} ?Z/؈<=xL+ioo`nh}ۇ9l=w .9iǜ vktTi;kl WYOuf/^w5 VBI}(_Fx47oݜ[q="<8:!qۅv߇u^/AOx3$m O1L| ݀! =/d `: 33'_2[bqt(bčkMH{rwde'JoᯅX09obRh=i;+=?z=HE`'6tיm]ޮhKeorIADQHq}r(R.fJ3CW30IL :d>?Z8aLKEp$P_|҇g(LKM/@Vem>::htQ*DzGTVGD}"7Rl9XSqg}Ȳfڠa=3EJ6Vd)B!)d2b` +ȁ3TPBʌ3`͔ :b?T9թK{jVJ0h=p84~hQι =~<)WήA< *Cuh -P1;Ϊbܲ[,"?yڄr^KtAu< Q-q~ϡ3YGP:x˦hƈX$udɹߪ 7GC%}nٯvn70b3&?& LCLف]{9 l5yH\4Ӈ{/4cm? Y9+O36}2;y84PG|$V-vlţۧ8CY*Rhj{dNdI'>WߋAtC Kq=^}\)}ߦ@fY:<"> n/; BO,ڱB: \C^ Żqz1X<70;,k?s k=T DFX:j)>9 }N??omFZX,w'!HʞWF~{ߑ}wKD$bW4F~E z&B.%*y@ +u0ĺ ?|ߺ9@s3۬L$cdc5H :v#]H_ Ir`dCJIh&YvTȈ=^ϼ>l/mΠ-fx: ld#7Z8/A[w*>Vl|[[JL zh6mbo6*AGf%w̿wGĮǖ$!S_LyL(?瀞03L?j <,/*`M4CI?-l>e?fr!<v2RYӤ3nG cǽ1 !ǟBŶ [1BB{Uyk+1c2EWp$$zN\ ?u uiQu;ޕ V7|utA=bc#:q=[FE2~x' ozK08_߁Mcvv)tuC"a ՋUJNX7 Wj(y?nϿ ~l fg06+ϒao{<],NP:fU8Ng䀤<74=9q?|3[Ο:nFRPvL`J5՘"YB'[в/H{7-([p/"riyD9#Ѭ=y|X&D  CŎEiYDm:()B;÷].29dBMob.e_iAW?n*w\0u>Hc(VIUn1OE2[',<}2=ɐ $>-^ NB'NCݳK&~AaKfԓ/>6v PzxFk^XB Q 7d~Н(x_$چh_N[X@6C3+lHuY)dm05@()!> R޾%8/J~sKRԵE,M@ \iBuA(H>gÃ]P#{A"蔜={tkY|ߑt(BGw |q9 5}7 d ZoC?YQy_J e"bQuH+stiJȯŠdf|cְ<rHH<5 *jQHZOo^flnu0ҏW‡x|xWD2f1Ӵ(UT)bJ\諞d[ܣ LK:sVVl14d`?[EzUuRPtQ\"8@3oWTѹv mWw%3MY[U.{<^PB†p9.<[cu۔!ãC-҉}7^B͹Ьx/Nrey#X;hy=ayIGp}a| q+|8@_'e%gdCV'}V}# M *Ք MEb-㢀"E a[)TҬ{^N7MЮp$1t>[TzRӘPtF ҝt10xH:4@BLv*d\vu3C%*e!LKq_]Bq.4GKg V~"?େW5_cH+Ibbj5m+F0|* Μ&u:ِs|)F{N~MO3=VGCnn4z, T^M@to0~:d &hv -W5鄆.ɴ/c懰nMt:ǜ& MM!9̫?Z4%=NB{ă!C8U| &2k0vi5)Du,dCMX)sq+kñYn7I*g5|ic?5-.i>8`!i6#׭=9`̦i4dž/' z0Qe#P–mr#7)ǀ=&9CřY, 9lX]Wy zcejؤ}Mxon!~1Syq-UJͤ\x֡Kw8GSZb?_ &x%nefk" @&6Ou1Kd^QMM>q:~%YXihK-0<_5Z~5):vdpWwuȓ]}Ho l`#I[m;P$A7KgSdǫ7HgS49υyL{y.TIa30N0?~KbyX78 .݌тR{%w AV?#Brj-4,P?F q>*ʅ|9t_!rrTi(IVcWol'%, soQDR}p).f _EAzjpǃbHeKsv/;p&h%ܹ}J3ߕpE=>[b#&Q"(1s0Re j} iU֔`B^?W?{炕T'Ұyٰ7lU( Nuϐp-9%=kZ~u8@V>o+/Dlwn{&l[Ǒ&0Z]q^v^Ol h _%ǘ{.bڣ8Olj`YyXs( gqke{W߼WH홢8LIxd>r[Qa,c  ,r Q>zj͠>T5oa &*>8ƛǖ*OѨT>g#Ӕ8bUܞ!15S>m}__2HL"L9)g}HAF!WUS',w4C;/XUB>9;Ǐ-Y;xXldH~c?@,pg*m 8-^0˿ӡ~ca?uAf]`}~{$&$<'+h)H䜗K鋗'F] p R#.JYL9g>zgar9]Dsw/ `^בC!?uy ;S._D7$ PoŢ'Lc$p۶0'οc݀<4?CVV'1;yFAv[,G-=@ʮ﹒vm YLP3R  E~C wNbPT4j.엓MQR P"Xn*}XFBO֭vblt"iM'_B&'bG9é#x')qPCT^GXDEJ8?BN̏)EGh1~ p0JaJmD ,%gG .;?qnSb4XjZ=^gKn,·xDy0zܽz8B. z}z]H  >Tz|| Z\2oAW}[ C0{>Us773!i 3xkc6 ҝ!N.wODc u9gPRsqH~tk*SGuo*oVX;aǬ揜yxpVG=X;){>1+*MʼncմE=X,XwVh5%ZL>kJ-Dj_b}EfrhH&^` Q~W,/ٳOs=6|hD%jNb%3%%a4;:Vx }enb[g6nvgC䶛X)UŸ5'Z0^ 'wgG@4﷮3EbGx"V"{95ꜺiٝOW\nŞο-(B}}!(* q2}3՞СU/zShn%b#\P:~˅ydخw*Uׇ+f.c׃$kv?4&Ì)^i/GX.{;/kxQW_ie58 tkotm0uoptg]{tGH Ju2[JĐ)q|%.7rQ>2e~myٓ 3day&~4q! {{8a~~gwJkt >a{GrUtz7mFء3wC |OFfSTLt2c/L/P"lڛugb&_< 4JѶ`GaU:چ}IƾS"~l/[~|kX@x.enI}ӔjrرeON>_xG^]Į!# ز;SAAHsIHj$ҖZ谤 6*/&{ɜkC١]0 BKkHhwI\"?-7Iy $Qs'Eq^8|D>~۲Ԃvgxly. m'[Jcӿ?HZj5\#8(_J{hzMG {V[C[2 >{!T/Y6a,y*Yr4NJn5 L)03qHlMH}e>"lD3`[T‹|&&#,B{?AE1ȞY+X`X^n cOIbF^;T+Ïws1sT-ol61F2^ι-O^ڄy um\BJ*ϳx.杈{:cd־W^7Ƅ<_jyX\}8q>뇱>WYȓz Š \+ ?zFR#r1FkZ)9w0< hz+ShF  i+’0 :_zmX߽ % ͱ ޽QQ-PLtdGTŏ&$T{KŶsʌD1uL)sɊ vޑ#5[Ie;//q1UHM;yvZPBFPMXJG>;ĆCa WN8I4lzzè>U=?xFw, [?i}_[:1qsm}=˂19ʄŐT&dj5FhP2k5!׹d`3? Ydck L{a,Wݠn3l]$<;T*9.G5 b0^╅D4UDQu,T7v+ ^]4Pr=ߏK*]~`2jI3lXVSSAo^JYs並%5 v>"#`]?l+54b{c`1#9̝;Q ng꧴wz,u]|z-cф| KNޝclO0EwzSh4(UtO) ^QZ]X?,R$F{8`*P%zV7ĆCB~AQ9uUU h?QƢδ<:d.$[ 0:𯷱H,Н-"j!y6*%0?gUJ uuWR ڛwI;e2TafN&$VmڏckH0CiѐaM׆;btPck 7'W /܃ wJT̯o;\:̢ G=\*.3&= 5co>|].Èxg]hH: 8 43WTrvvg dϐPMl ))a2~,)=k\Jğ<::1g@%gm!zHF]Ic0I3x 16|8E[z~MC09rp)rFĬ`{Ӟbj'l^C~!/Vnmrj7iQ?F{ Kܴ_÷uB|j5/EiDELN,W yY,"pFHdpUKq"UG㡙[X2ϔ[hFH:s2SɞCzcx%nFlnS B6,`QBho9.bILYeq!x-2I+Q_cE«e..X) \*ϽM3M@ؑ֯Cu4y+~/pqPqMs˯?0{zىXT(SGy:n=U6#N/IK}Z::ZXpK,( I2NVڦ N_C1#t$~'`(J* :d]_C^~OH=rzK*rN.t_ !gvDJO\3 =YPǿfՙ͔#? {ޒ4A]ohhUgӍЅj/ȶs/;Sډ2NSl(sf6,KamrgɮΘ|;}G76{Sq6vїRP'$R. eUI0-Wt86SDAw!5ye'K]a)WFU}ѢH`(J* @Ť;;c]-%(%}{}cqϹ=g6&0fFw~mA~6멻;uN:@7z^=`ᙤe4Aev<`va(ĶwK.Tń\6LЏHE3JճCkV&{kY!I0Jzz*0-mɿ)@tY2!ZeC@\7i6. ؠ%6F"Kw}2Ld"R3v{%TgfL`u.ym̩3"FZ7vu|$#41WC{ȭ-&7%zs'9!k{9Cv ZiN\J?t><}/] ks&.F\"ϛQc*>]9Dl}zЧyP|i"@[s M5ydJx, &T^ BOs08i0#U-'>BfipSle;7w#)^ ֏*1 o S8mTE5{ ˹6hn&[T~!G밁~~wpȵ|h ^=(kFXrc7^;GB`/hs 0u=(t$]ކI.Iٰhc9S1t);YmB9y%IKA Ù=m&yve%J,T$*N"q}Vú! }`Me+*ߘ^dc6b@w_}H[#XG6o<]:Q:wΈARTq꾅An v;ooE ZYej7¦Ӛat_)"!ktH *^1‡ױWW?E=uVF &Sq.4+Rvx;3uj NϾ,Lk߸u]O_i;q+;׿ıǵϚVe{ZLGDѶTݵd#ؠa$\;}q27ɴZ2XqUKLsf;|*u {\~.b 3l%{7Wjj"b#xܧ""LL"aT S,RRmwN覓%b{@g-;^9*_gX/y^~wP~ #$(tX-=;n0~%(٘oBO*+mk6=1|:;) \W/.):iΡU}X;vQ I$C{_xg"чSE8Bjk+i 8V%}2dKN̑s~p ;~q>W#L`ft{Ҁi Tu%Px}J`B¶ MC,~|Y bUݝ,h?nOY2aiǑ3 Xѵn8{XƄ'l~Bm;.rW-thvoH p?ǂ%&*}Nw%;%X51g8 D)Eۯ u ,$cL"`njG2`[d'|PрѲToŲa؇4@6_ &ŵH-Sԥ ˓^Zò&aPGJiԂζGC.%3_ǺOAuXTz?&襌X<4T ڗ& !⑬/cs|*5WP^2ac܍0 㩧^J4 "Q_?>t Tk+~*:a Ɔt޴+'5kTaRiԚ{naz6Ud\,v.ahS6*'r3_/C>m{"t,{l6WbiIGT60QBf0zb[7|7%zC,S<p8T}j˔o^ 6"M Y(WyS'&1h!h3-<5bKncEnfOᛸ7zĖEqy20̜":y&Y>K~l z^1՝T ObQG C_W2tFe˥܌A1`M e,6y[${ah PLq>f&Htu(mߖ$s+ ާ’OFߣd: uA4J/A;Ö#m~bsoAcaqm (L"BtqJ}Axn\ r⋖ݪP>C2+ͽN;ksH''zPÉ˽ء!6G[PRo sjCdK(3cɅU6!H.YBegwAALJ9CIoCΠqJ?ۼ/y+9>2_}ߩU3 b6L/BϾW*sA4 ޯKJJzi:ySThr WI4] Yf1u{BX_O|LA]@b=4l鮏ncv3/;DǽfXcdG:4cکH])NC}}BU+5s!v(:u,_=vMk1\Fnr*<=۵ӥY 7-L 5:~ދbI T98jk~63h톦lo<_@CԑTY$M6WMF>,bE_bCS&XWgwZ90|e>>~|WS jv@Ki&6|DK5W0.*G[*ۨl1*X;ƥz }dv^{X2ά]5=Nw0x:4[(bskR37I[-90f#+վ}Gʺ KoݬŽ7^J`Ga;T$iĚ;˒M_5L=(.7?@*?3P&q~ >h,uYt.>2HX0p+q{jK\A0WZiY1Ô@x8ZD1 Icgu4ѕȄFy%Щ zeb5zl+hNKrf݋*AP8EA.ZB:Ѭa;hvu06FWBq)-) Q 6 `p"gfnߛ˚gE5Iv9e'@2ygӅ0wd̈Z>yV.u$/C9D{F0x@W5̌xޗMC{. o[ X4G"f1'H?1fOαbw\ +:OyRd'aCAR% S0ywYs[xZnݘТbw6Ur#,Ck471oz.wCL+wyQ/mTq7hk x#P2Tm{oK_d2trjevv}J24^$g@01M-rnC͓$ew ywk1F1U\l긒 Lul) ƚ;Pe5t=N8$@y⧒{G꘢g *C?Pd:< =[L!_z/DQ`Y,*3&f )к- .Vi@euߍ0XYa]&i1hQʛŜm=kAɰע6r PE\(ߗ# O=zEO^S) DWaH~ m/؄Xnn_h~; T?=w^:fˊ@=}@OКT]b )_"5 [l^j-SP[Zev.n%()ǿ[3ؚr2qC)9>ye{ktw;mSdnqT[-y-5W~TA g<}+ayez,r[}s2v^G?YPWô-wG[/Ctxu9aE0񉃴ċTGpw3,u^!lUd'p,]߆au̦6^Qh/=@I 6`!%tPql)1:Xps-A%EW߬8{}IN!*f_.p>DKq4]aEd1A,9Hػ(܏rI(WnfV+O`ѿS,7%(· 9;Mb[jNm!W8ꈮ/^waavX6W/}͠bD 8w j ]rܙ+(fS{R3f b{ff}Xh16# zvcO/$? mn)Lb6A#y%ptSBkX\ @ ثbG kK?|QfmCg>Q=)#J/{@QѻѰcKsӿ {鸎TjQA0Y𾯃0DWë*tx .I\AФ];"9׍&d[\n.}2͝y7J *Tq_mvH; źB1j0:vwp@tb.T%Օxi(RC*U.A,#zV7jGOn LDalCY:;žk'ʱTR(ѯ]ć2ݮ{^l8$Bt%!AYyxT`<*8ng3imv|SQ\:~9(_ބK'6bUzO9Ag*ˮ؍$ t1{B.s?| ֯`痺S3uA=fs xidV?=y<Rt Ǿ qrzLU.w}鷻n{EAwNPua+_E/ac~uW0@F¸?f{{#M4`ILU"Gχ.(}{H%XPyvf9v7$E/ʃیww|5H2UX"mL3_ zO7:a?6^8]o.S`Ʈ?{vr*P*T|K%P7W?)nt(iB0܄L;~d#^?Xs W=dQDo?6[|*& j4خAYo~0eb eedd5H&Ps50=1>%CD6U0ֈY,TY{=ˆu,m'Aɓcī.,|Е V#D!.LWsU.@!2ŝZYY _rmo}Xmule y-oAW%!k2#xys|K-  \>@$)]Z49@,CR&4{, :̢{q*v<9ڿOߗ{0)ӹ:0~~Iico>[u75 'xhEC9%?Ga$\:91%U!7_Ql'dnP5jOk4:ѱ+9OKy/T@iB'鋻P6E*׬ŰMq6|h:߲S_ɒ&;6reغ?a_$5/^tDY.721bǗ,'sBuDi& Б=(φKqI%ޅO]., vżDg{,  9Cchh%{jNDԭ`+ 0Lޜ١?vk@gIP-ŌC ñsY@(e;tu<)=ZM%(?d \B-ŰlH+)<)Vn\<1#{HQ|%UǞCiYimHu4혉$N&4`^\0l&WG +PQpG)tȱxArK.Lo}:PohQϽ)#KJx+XݲYyhИt.h 1Wc1Ym{8y٨xEj!++w1.Xf;6PKJg~8ajCa' )e7ᐕpվywz0(oawZ['n./=.aYlqhhM ĩo0T(g̍+_-㗄ֿ²m Trӷ:nk`8r̳뻵.8g %q B Ԅv9VXy~V?n&G(3d׭B _r(||<:V<.rB2MסJtah )z9S2?5B| ~ĨQfq3~ PT𽕄Y(WF;N, df3.kFM~%i]#y2!Wyk&[iQ\ M'́Cf2zp/ p2#a^Ug=y:X%bS cB&FA S)/Y h6W/R̰}F _=ɡ_?PlN.yiHBz jYwב!f h`>^-=1%"w!c[r_,MwuV{t-j~ = b_80agϜAأ^Wucސ-y]9}j1b1'HQ2ēTE3S{!]Y7 87 >rFzfmsLP'8>5vD&WG:Owɜ,[TjԾlJ;G?,r uIrORK= ttk6]c-IBo;i¿0/vfƬ;-&JY7`A61[,,U=%S?n[7t?!,ToLEzaYxTNv~ӽ:sT= bl;W^6Y9#-#FPNb[#numYQ ̘Z D\Lv:?m7ラ2C˓IPqŵ$82%`K\ra9̠m -^x߁'v p{&$ V"ݓEW[?A̔*$>{UrAޟ=#!S#|-Ͼ]o@tOW=LsZ*4C{zC]0R"ړAs2[4LxYcz{ pO }PZ6sdyz.#-NLd|g]‘}AG[MIo_觚?&F;XcұcVG&9vm%t7I)W+ÕGʢпz;=``FmYl-ѕ \Bʭw|CX9zhxEN]̏w<Ǚ|lY| ӟr Yʔ/07SC%9yPh|)"$}~ws!>%&'M&6S$aðv`ƺ]3s3a]uU!5 I̘zwS\ Ё,za2Hz>,qڇbi+ԞReY!U-a v2\!S׈֕^̎S]OO9byWiia,/6={ A)# UO! =5r;ʕng(V'! 4/g1 f5=c虿2Z+m [О=;򽲾|#~'4/= Dg䐇vt09ƋfPspY_ke~9Uz!CV\1GO=J45q]*_!TI!f/f~ABr}ڍ>rM~^ѵ=.' H{Ct$h:j H \ gv@Io6T_xU$_t_Hg8ӟTR!,Ͳnp$M4܀hA.1~wuT0tG|<I:i =C)xGHuIסʰ2$\!k7sU>gÈB‹61?[YVHgȓG:cͽaB{d 7bb;Dt ,ש ^RЭ4H)r$'7sw S_>J 1/$b4(@ 7T)}hKqbj˒P͞SU\Ibkar֠.ˆ#Ћ)q@e=t̻*}?iҌۑ5P~1LJq*6 /Pџòe! _h mvM`nUS%+ PrOyi-±)'KR4Z'^lKX GёH|[FÀ 0f,k?6s>:E>lK iuI34 0hvlu_5K C_s!ylNd&KټEGK4&u?{0Xslz/D;jX379Ԑ8l 7Kh>sJ/.Cٝ,zo~NV^Cw786ac>;4L#k˘+i(A%^5|vi }a- J]&n(.#PNNNCyetnx_ X٭.,K#X_R :G OC[# 7??n"|/E۟}ʓԂט/toR4<Q\#onrͽ0$VzޛMm\f-+o̱ey %Ĉ徟{(q G(o}~7)J[1"YLR;pX ZW>3W^ZCmw=NZ% E.BGBϙe~L!,rAwٳ>Q9aqV=@ZGa& Q.?WLCT_m,p2 2i=xL7)S%9ܜbXEq\P]Xŵ_nbnUIWcCB ~^s:jjP_Ve*}7o~9nv僀עJC݁Q %iȾ^MM_R)%|*c:oK*A%v5 Ӥ%ce ?ODcNZkT#N6b|<v~"x Uh0 G9P~}{ԎR_v+ H1E1=$Nj)̧eڝe쑦a%V2b;)-VxWXCBi;Z>HO6.|;, ʖEBBÌ_OkCL~--WpҐp^8"r`ҁ"ҋX.u؞ ? !:͇ ֥x! :OoӇѵ%Ȯ$c6ǷXTS#0 $+|1+tT kSd0ǺҿJ[L S*}}Z%;ߜ!@D&k4]fy 7TN_4MEf͝P0W sPq΃X0`Y҃n;&tq" D^lwXb yoBq9KrO0)_Mᕏk0IACtbX^Kxcfډ>LZ6gAҴ-33 ZGiO@~t-с0(/PZD?[g-C.r,'2;Wu\0vaJUsL)su%IKnJ<=eG!T#̏ ^tɟ~/*=Yu@/H8wrn>r76-_ŏz0d]+ ӭVD? K잔uE?mY>{̶M[zt* =-1];v.o+eҚwr0}NrTbq𫻻 c ]!iY* ծKɪXŠ'w g c iZwaom&:]wz{3ޟ\5$Ėm`oFvb2L母n||b<^$uUƐl0*pS5o!eҡGMgFN[,t˱8ީaiA651~]T{GBCQ-U攚N}BT~}fUnB繗]abhAB!MzEoKW(˦T(1:ssϓȯBVQA#$q"6cR߶k;%V+h#4{R>tpfY'hֻm\< Y WAmR[v(kU,;y)B_x%3Oy )tXHŪcF=?ecR,UFrAwwBH˛?CkJ+W<h|Do:iV^T7@2zD69LI!9KBM!=p#VsȿG-o7mB^D;w_ iws\y#K<=,װ%tp^'|nT4i<[FP|V&WEwgMgo= *qz =娚9DnXZ=>kse8l~J 1w=O~ aۼ8ºÇҍA Co,bkـ"r(ao Qr>ecy록yB: [WJ3ğzRi[l daɒܻ8DxhNzwa/xV(>}ތ ʺHC%5x?2*w{c|P0[}V'u[3Lao:`1)ZW*c{E֐lH1I Xrv 73/VDžŁv>1ף V~N2Z/~##*.AVu6its=|#BO-!W32|dD8Cرө%ӘpI& p+0uf@!&{%B$VQI da px-Le{Q3Ena%yC2{uEE]!A66A7/X``.ҫTW eG&1 "&$֯g@ԇץ1O,%ܧv^]T; `P}=#eҢ{*Oopz+ w${7xfo;P!cfm[| X_q Cc>L^˫H}X..@5csyiAPtꈿvO85Z˅brO@ԓ'##:Y_xbK@'רLݒq9)Hf,.3^6Ӡ:Ex%po9s8K!Ssڏ=h#X陟 Cg1b|% ,;#*RY M֬ XGbD?|]TgHq}y}WnK(zTrf~r(e(83ET?xY!ʷ4Ǡk+I5M~59|=2O=ȷCD $dɹ垄 _Pηvq d$M ۞"Y2Ю=xe׾%Uj<:2E ξPݟ}=\kTFnb:-yUeQo*1rKV$w07CsJ0_b;R,1bnɥPV\ *n&`˶MWAeJ;oT_.#T}evy{C`?cڡw69F!Ϻ;yT~"gĺi\TBkP17;W&Sv\=){UΉ3VnkpB /[ޭI1.{ǏQ:?B`䕄az8=, ̞F}N PAz\C!t<=R/ sn-=fD;h3JjffϐpOb[M"*wHm.l_p|u ɽF|E ,2|K{IsBN W?#^Pgy3-x~bN^҇<[<{CÙϗAg]Xq@|;=Rf;%ýlZM8IUF 5r/+BV4/|21#һz!C5 ,ud 7-<,1m LF[LKP$P9Q3$VjV`>Dpϊ_B`q#y$i_&1TtiMe(TZXjr0(i!K>%^‰ Cv|,JJ|Y/#S٣CU㚡Xl2혥L:CηCяB[lc4;^KGh=d*1ø S jnm?¡+{hA?nwK$mZȏ~c ?G;Ć Ƿv߯b ( 0']zErq"hOq,ωH{}洰W ئߪ7~b*'Iv''wݢ8J_N|=WWS"$XU[%k_ LQu=\ıˁ߮b0]˴/RtC%0{ =A$C -sqzbV5M'繪Dw( _ U`CyQ< m7tıX82v$Gԛ'BB9XESJ]|]̰d_$p"`[bsn -~{$w}L}7 vb+sqoWlνz,;$8izs`fW޲(lc+(x)5Ý/[|D9+ÇoX葽5:ښ6!S">\iq0^i၆C郚E,TԵp ^)< 1,u0{s!О|'Wl~6roH>m7{GBU6iВV*N1F[^lMī 8|8h; ;-CJuFҾ= DB-$= cD8 xуam\DK<vayFor@'iR6vtn7Bj[;2ѷbB_WpZ-yzECUl4fPW՛SPL yۯt\ |O^Xd}H$dߝAs%ˑ5h6iy5#jC̩~RAPchހMs&Mw1%u6I6 Y=.!Px ^ :m\ބ.Y 9y(7&k21A5ߍF`zzx7ְ@¯*$ :|K| U#Jׇ]fV4תoT!]n4PFA˧ӯVk du ``M %fSŀ%J C;BUS"Oa `O?}(qP6+n>XǻEUE~:8z&ƺ_s S47QV]b7 o0kd|#zFUfqU.i% ;T TϋARW5Ȩ7j *5EF't_o~Xz$Q"?ʖmP1CkK쩰F+Lq-{q,޽}T+R;p& ٝg 1v QH]1X:XbFR0U_tzګ BR)i&/t= J"=47g!UM7ܒƱfJ3ā*tJQŽ_t&dC3KN*2AωohW׃ZK~B `Ei#55{ODAޙwL]zL?}nQ*r㻑Il&$f}\M¯N:c@" [#O ʡ-J-G4]A:,s3 ;c*xc7>cr͵XfG&N*im 8]pi˷NaPS*fRK;0KC7mM cבWUҏ_!딩o}Re!Aa hg9Is%N(R}7=FF΃ɐ%'y(1O-,f,?m,Bϱlp`4J eAjBȶ4ԑƱFwMh/^?UC"PyoY_p*xWqr#,m:& ]-vlv|2*WcFBÈ-3`&6{1gOG!iJL\}'7qVcior<2]̆ 'S!7Vg<EvtP(<GL@sɆ|~~15&H03|8|"gD? >K\܃#Yw/'[8zB}mGuҏݸS5ObYa lʕ6$E^68fv&T3M:#l WF]HYRXdX `sul],|ctź=k`sh*\IH 53d/lB_TtU$^Ž. f}a*?|q&2-BΦ2^6VK7!=ļY0]4|`DZf#bs,Eާ߼ o>Mpۨ`fySˍ%P{>C=Hx^hCx*3oh?d--ժ G.sUCK~zѱ3х !،Tqzsuu>F\"!4vO"`X; ljc.!u|F6|[Mo,^l{{fh~,*UJ6 gz.A._q!$7<0u(v= k.D%Ŧ`Q٘cþbg~eac"f:zD QĀ]D?IBқdU |_>Ύ~ux~^-j߫rY.1Z`T_ɩ׼Cl>4y{ Bj(bm䳟K詍'?D-%|>pf#DΕS ǡTK;+cSa{Ěýľ`D3u. Z}slo7 'I^r wRA5MOZdu bVk֭z3s-0l?NDzk)DRVFn h7C߆cF9pt?"'cɞm'Rd}td$=8;N!LUx *k[Cs|wV0s&Sfc^)kMUlQ &fU6O"Ɛ8eʏJ4< ``qAK%KiWy7h9WGG`Rn[6V'Ʋ`׋"B6e'te*: Eg眿`뜐V ;h(+ <؋f ȇV93*`$ ZKIFsl)ԟi`Td2[?i{)1g0̺q[KemȜ;WleF%Wl#eC-rհ]-LjZGjASHJ3<4&;9nA锨AR(fsv^;OM۹x6gA MO.6c/]aa6WT5oꑟOAT# , T,ѿКS"oLKUsg 4p _ R>|8f3S0rIHꙒԾV@KƟbMhfӠDV))3j52Qk- tp_qC>R{֗@yb>^D!A>:}hW6G;ۢt1 \yV'8/r+eH0ePYk$&Gt<pQ?\;3ath {G?jC߄/dl \};>-T灨y. fex&]L1TC.̓w\/oZ' S'@1=`uM|y+? cCQ%2W~k]< GuȆ!U髄(Zڅ7yYĕ\8}MK j*uK\·&.t2l{?G7_)i{vƾH=3u|:? /7cD»utײ}&V~$w-xoEmݥ -vkj*0t|$$ܭư5I-x2WK~m웴Ґv.sb8k]$0i^E/>/AƇk )ؙ)Rw;WR]&QM۔ ؅4~#/k')?KIrIeq"|T;Xp9nb$k6dHih>~.LkZ|c]!߲ʼn0.ڿK8}8<}'Kh~dnLrӡ')J^잸ph' OG`Z4gqtVJ6ѻH.8F8 #a^cs fZN{ ~z `a{6Xz[6F;VOb0y'%,-cYF.q[\b7#ٝqzzDn_V4f0πadJRû]?lA'A LB3J~P{9(5hx26Là1&iYrJz.f@6r4>ݻfH¡ޅɂ2||ٌ}i"!8ay?RK@sA:oddiU0J_=-h،Ӈ$YBC7e.0>;^]d %/UH( }PK!Ҙl۟ foc顝ӚīU1wBg]Yzis"L;D0bz&Au.}7)+)v.c7*&Rx*nvl63oGGznc1ou1,}@vՍjc/RKB!d bI~ (1ӌnLfyUǟӑ DavpfLU49=.TV0b75w0%4g[wUz~mD)Q1 DY%aIջ؎yؿ҃^Ƽwo셆WΗ(Ǒ 26jX%mAmcAdȖ*}_}5ߵZ34J"$: &zr,%U}t4ެ_NMcY;w؟cRZsR8db3Tk:E 9Ț:VCg5!]*Msy,SaőTl< r_f {I]{VlN&b;סX ٣; I*6y]: *9]*50)פګ_D:~Wm{\TP1Y4{CBA7C&&3)'€0xs=(`x}6c9jh!73n-`nӧ0m-yx's&6;Z_76$_B7ř&X! G ή 3XHq~esYϐ>oA2{z*txJ/3c}ɞ]`V_,1)1[WO q`˽/BїIIVlH(y+IUaKt|l~O9dK:.`dThhcg#%Pg)v&uѪZ̺r>9FO.F:1h.aWe20\\_QRvoW7tm4:}qL1X3C-<7 ȡCǓrG0p?lm gn6@n(Eh+ipm% Tr8}$kiENs[xއӹ~VgZ4uڟMBWѵ$]GhԮ(zzZ4VF~QpI-crGjJ44k@(~p(x_t} ʿ9z4>d8( ڳmv-I3_Mh(>j4=E||8b DM# uG'S&%CuRh)0{-cvns {&?T6(lP_~k3ȔD0B|Tܣ3R\ydz4>c7Ti1k+q~ P,LJjOA[ `+ d}>-}*Ż!ݒqUYh='KQ'dv&DJydRTG\؅5l'žlBF X,/tG8[&?v{ڇi"jԿ=E\fF4iZ _ѽťGuL4M݉ c9qj\XC5l?/˗8+~tYuʼn7gRcdaq̯ G'„OI}W°T6] 4$v@f{~x#h~z`{"tsn&xӫ8VPR^Q,nJ]OuG"4'$pc^l%w]UCr`75'.9S$ /2,"aVb* 5[☈8eϛe/6w~bOVFqdyDPm|LP=D#/ę0*7sOVFg]ZBk^"3o^^yi!Gзk. xm3`⣱u;xS'@F](8S/h vӽ \(-Iby';&ݵqE:X+,3O|/^ &.$hQ|v8j6-ǰ'}01䈄/,l#N\&s9,&B)Yž4hx{+5poF xAe]za0هZw{M; a{ݐIͯL?mp|ۍu_OpMWr@(7Dxiׁ}jy_ [+s v,ZW Ps#>:@̛Xu}ۇ8ޗɎ̽49]BP5l 7B)AICtCA.Nn CƐyw26 皐$[n2QWbd>}qc 9oLx+??6y4ͷŬ-~=+'Č3Z/QBdG  zn.݇gZru%tw"Cj\4zd"!QTo ʗJ?<D'*ߗC{|C0̰8-OUTy'k-:cqB^wwuOSi5Ǒ5Fkq*XVާx.$s<|x =1G2G=*.W5|ߘ\mp&7kHq 50V";Ci$LS?2ATnS?.21*?o.L|$kZ/RS^ɭzשּa>V@Nۉն5Ȳ \6'u4De,WнJCVB>^+|N$4W:ˏn֢wbБu y( AZ֗e`DEZ(P>={J<cF ?1;߈ltP(@٪&]a6fɍ ;YEusW]Qre*Ko9 cf&#;歡0޺a5_!9pOwHÇ>ዎVfBu  %L'v|_r̄UWKoL'0(!<>IG jAd=evn1bn=(62]FO//S - q)4n,` y0ax kQWKTQrV [U|F*ԑ2;Ju,ò%UVLmWQY*ǜmifu!ÜrF[0 Z/`N{dJw!p,k)QfU'#"b4l |6fsjeԶ< sJ.s`xkbh8xŮ^yN'LvϚ%K1g^(=ߓ[<ǥԭROy]>XdƳjb-UӾF9u20(*N9qqW1+yo*o[3IM) ҝ^)y*ͽ{GUhF?ogb1\i2)V>z2QZE"ycU80"8a6 }}plf[xW}*Zx!OlvTS$Ui=-7N[h<[ǥ_1wfYhn-ApW~_qjs v<|G8U;A*lS\t΋*gObģbU/vEd)?DʻB B$ '_.Dހ y~O{\)N+N]qgQNPB˟g"ތCX`B29;Vٝ&{vnah wwo Ic>d*.nٗulU ^ha^0vb˸;j\غWeZpi:ƚk-kg+ 7pŖ̈́PcO1Sm+T:ܦ\U6tD۴8\-w37N}䋵kG1+z!5$h>?/h'ͭmlR=ÇhBv a3Sʀlq!~8,Iom~%X:9*|}9|Nβ1 |sdhʨCȿNJ/{])l~PVF^}G:9ԤN`U2@YXr/oV* aA cKRJ4kx3V}S ǒ5i`?[73'4]IXe:q!;2~הLJdFP6u=Jc#hЂ{eOSH @ȊqK#1C}FԖSe)>ҺH܏">; <=6Mt(bρc0oK70_NNa^C ʮ5Xb PE(䌷8$ >]TX( y>w.sòvHUúV՚l1Jͳ\o.jcs^^뱐4V\ >#eoL`І˪,G='w{rnd"ڼ`55#̿Ѡa(D%ɨH$̊RʨJ2,dedyc+ o_<纟_u9! ʙ2JMy;{["bpG@j6FOcKDAy)gm? 4r|0{WfO]=0u6Tn"fXΫ8"K[űnN{uƌ Y;BSw?k ="oGOw*aLI5Grs>4u52r1o ^/b,VNQ_Yaqʰcghvo0*C6_p!(0%Ъd (dn_ A՟ONnP~fw!|j TJ&#B+9,TW1W+@-1qF hb?]w^e__? bҧ@$0 堀 ]>_~an^d>P!W8캫΃]W*jb~HT+M@fЎV+X it1@U+<fXOFO٠30I$ƶҜdfa{l2~nꎕe]eּvo,P'QYA+V+)^}DvA'CSԕk1l>LY߄9͍z iLv~:T@ V E/:t1"vAA? %²W764MnoYCU٫g=*c})f=[ҫX-5~xwW):7. Vm%6շe#@sH[tKY1x)e;(pŢA>p0~5P/%@}BQpo{igVZ H<_h)aWĨUbX5YIgUXxY*gwbTɛ |B1:mڹZ(ei2X-ϹGS ooZN\~Hio rU^ ーb4g)RCic/i V\ {xm[Ьї9߻N޽ uOIa3@ōG ELN]}0} (M/Cˁhd(fT}ӻu,a`^*+_hЭr$tu=Zz: 2~tBճL{B% |M\v$AJ;ԑ.3tPNg 0`J;*vƤEhX}<o B+_ygh{\LCDɿpC0Qn 5==ɓM}C"Ÿs4Z}B{{]D R=O;6T-԰\}| KHb-tܿ9ښab.^vLQ}},v[ա$MXj1:n;HNYJSۛo伃rmyeDdpB0z,hdqF]ڮͩUL:c Ke? ZqO#Ø𽕪PQpOH;”B0N67ַk"reBSîςZ~ kZjƂSc5ɽ %|?[Z_atP'OzJ;JU`YZ<߷]RT܇ݒ_Um#nH *tt8pD[BUV8Xa2 :L*'xjSm"_z9Nр߃JU _tzR=GNCgt-%c Jsߡ"Ca]M~2ԩW `>>Hf]q[񐖰Cckwr mbh38ՓTW!Y|Oy<#8~ 3"4LG"@Ėb6,Mr!SQo\A [=Yޱ-o(WD$6?-=""PC۪T j}zE. S^YqzJNZodNIgclMG: id [2N["XԕZ*EZW\j!/'Bo(iiRy㿧70NIP(qqC5Ņ\2oCeH2>^*%j 2H?p8P|bs E=.ZACL\!BA%>BlTDc^g  Zfaz0o<]:btʹ4w5ǹ2#֪{l˾jbNα>f#olfF_ e֛̟',/<' Gܕi$G.?LD<w>Sec֒)(Hx/A1/dٹjU D@uӶE<yJP#^ -z&4 {?ǔ9G1LRyg_CLy7t=G/_{4E[39qu@t]Pq#"ud[/Y+ڹxPv]QlY=M$}A~X:^nރ}O(`iA0(S6ƭޫ MsE>u ~x _ 2Y@"9c:to+kެJѱt :d.?ҏV,f_Պ/$Z`jǞ.x2qޞҿ3bU#9m%t/aMd_e8^7bdv/"7`}շd# \"y j]u]M:L+v s!3 )^Sr,Wi8~ka0lb~ie!7apv[xuE_tdezv~`ucK8NzwEV {-iJ/tELU\ό=Pa[h:&.tcێ ݽvz:>GMa@k T%Ϸ[ˆќs#}x`H*='`/aͤ?Т!+ C׻ah)~*nZq։rn 7K&f::V=8cEơ2BnO NJ#yR> C7uu(Jv;;KiG k}U})5,5tK S_ojW2V?~= \צ{r~$-C^CX'%rHʻ䅰yچvI{*>v גw^k%W]̕zCKJ"FDO^9=,)\+Lw\7HwX2^V#bˇ3B٭X?>_T Ym܂/hFN6ߍT~=>WF(*WrN<+=Fivi7Ѽ זcP36kp9a#klf)-Lyc~71V% =^?H]>taEO˴i 413^.MHx>fm LD4+hِ-zVX&ܕs IUg:A1'uqx$_^s/!wm"ghxa˸+\ag:Q-d) ף'7I\m_r6tߩzѩ-64S^y*ѻyN%$㇖S~ԩi|(ԊNWLvZY&^ M],쨤#D.+?v/$wBY`T憰6Ӭ%' WV*_NtRy7 -T|In#vO􁐿1΅{ɡNIJ0,xpjʏM8?߃#RvDoAkk CIFR V1MΏ8"#%N&#{(*oztGۜ3@yβVɖqrA,[@я#G5FeBpB͖ۙ߰Bakl7: _"& }œˉ5;u6u 0ZdVx%ƶ\%px^ZBro-PIl%-TDϑAxAϜ y>| eɊ@SOβo3 'JhU4 +4zαn f)&'_êz c4!$A p*a-9m6;;]:.x˼XN˦)Cm:O o@݇&@Jpn%5F#K/m,]թ-S>Ʀ3gBhtX:|}*N|ͯ'|ⶀ{WǡXMup@|5@S[Bkkh-=]s,(= Imcv0fd3W %) &Y\ySTWfwFu ? S17.hx$x[̍rTXe~/0Λ]ЪʱQ}H-_} Z3ɸ^6Q)Fte'bUy:X]ۄ){1Ԥ}*0z*) l㓛Psk [ -w7y%OtKɎ_/yTo+^j4 NM=qĘ4-fjsÿXpRt+%( r?S6^]oآp(|v(5^5aax{>M_C/d$q`)p<rEMjvc7Sí 8uO }=j8p{e-r"i=n=]#OA=ᴙNK8q1{Tݩ== 14"JWk%P4( ٩0qN  'l CX"YF.A(:I]:;0+$E,b9lߜJ!Ϡ(/5[4 1IZB'5h0PSCT_b1Dqڿ$YvE'/y)*6\%KM2{P kGz.PwfȲirhzENcidž5]r18c`я L}w9Ǘ@8RvXX ^%P=){& UK3m* } h[@ ]  QAV2lc?-x D[òj~ʊmOAMX3q,3vU=+%YN6>"6ogh:+t^Ϳrجo汋UpHInwS1Y"sFկP1Dqj>Z?jMǡi0[,eB߶R2:umBsYu迒3*P-4޵skn.iO4?s~):a3CבgoQ;CiD ]joܹ9 8ȴ߁쫅;t^+).y5l }b@K4tto]Z7CuTvczI BxuUozQ}: q[li~oM;'*(D_r%*<1@֑9d) dг{f|Ԡ %AVsaC8uh$q߫ AGGhiXr#}6DQ"ȣ|VX=/k o#]0ioErCs'ч޾YV_ %>ҧs^鐫%JbJa:p[.0ĉ+ovp5l*<+>]X4g_\e}l# ꕳBT$kVgmQ$YT>.TYeĶy1[X;ZIݨFHۈqSI3} -TD> U|. c0󙤷r,\iL(]՞9|an@5 xU<߄G}@[_ ۥG\Gi5MGËؑ~W/#{0wtz<s5`Zjoq`×@unN/,ՕHI{ޔf`rbGw5{g f:;jL]J^ǪA^ :;Kazc|z;@ԋ PvܒIyUo߰2]wc%$Xݹxi}Ֆ2S1-W'W+FdX*.K]g.X2EzI!C}F}ǕUZ.c̈́^gkWFP=WM_>U+6;6FϲOagO![;ָirT |uG:7'Γ Jj7PʣGw{{zb! WѸ(}H/VYu4_U1|^)%?>9cˡl@3bµFB@L.HWdvwy!C29~] &ÆI+Nk(%b(^=o63K.A,W$zg~_ ثҠo4aq'!5cS> &YGHxY٭B?]^OR!yretg*iC<PwHjuR"s ^Ok͟9,t_qw@ڷ#@@"NJ}u 3:N`|%±ېj4y~i?Ϲ\>xfoq:tnCz62dFؿ~ ,GoDm}tnr  @EԠ樧ӂoܡ}[WPSs 4P{QtCvg^cyk_x]0#Q,do4.^&(2shR8aoiv;n_ЇZ,ûG%'en5kE[9z:m9t}U'R\F~wm>.t/-+q9)g<4y/4oy i}ʠcx`^-1̅[`dKÝԷcz~orV [sPbw;q}~P^r$WR*KiMġI,k-u,yW1>Gk~Z$er3HjLiiUfs5#ehY (wZzUI+ϳ AD)=$;>{i^9睗? ZH!P[ozlS&`QD]U& ?WE[UFGRHTzk! j78џ; ȞY-hæ]D(&Q3qoby*}.(ηܳΡ:.q{o N2^aiZ&7wBmBT?]3H?A&&7'߁dNu#]pqޑ)/z '7+v ݮhq?${ط7t*7!$!q(%c*H }QyKh߹j}XrXH9m|F/?A٬?'[/Jᔀl\/\[v{\R*' d6>*]55:\1 >3]8ԙ!ݍclt {m xQ\xL<~dͽ_m:naȫkqXgv l׌,2, ^?rP?bCkZcЏ/%_úfcN=C g`AZV Թk뭋EҝH)g9#1iQzNkاh3ܹ ֦N-,;XxKg.لx)<[X1yЄ`-/&ıڟժˣ}ذi n>;&F(!gD9K-0)?NBi- ެޏ]37m;J8m*MѕmSv#<}j^'b 韮ذ0\af k8?ޮAGR_H7_bU5-TfȚuGRm`'W<3e\`Wwa~!Y ~>GFsJ+? -yty2i7ӍҘg>Y@.Eirpk:%2/iG3aXmNKƑV3?[Go/z wb]qy[fvnl(nmy}0IQG;e\5ǐ8U^ZUNCD`tp\[cRK|0;,/K+ylSbP uW֒·BWNcmkCX_ކ& 2;=IXC"b[}xlI%ww]+s,Rk?>b-De*32=Z"TI.vԥG挃_ ˴ݗ_B^ЧOqOpE*t>va]$B. MeFU_lb:]>M$qضlƋ|9NMA[GapS+{Iqlm;/KO=>^J߱^Z:[Gؿ`%["[1$ ߙv+cd!&" PMŎ?v+o#wF!X-lt2q(*X6e?I3a݋&[Pp;YhDf1awfTau fG`r!!(PzÜŋv~ ur_N2߀zv:NÏ?VVCˡк`XpĹ1,=%,Ov;]5c͊|CSv;!/Jeby33hl麳mw)_ğ6neᇙ"oF58 Ga3guv^}P=`o]"p}wqUj\}@Z/v8*9^]W/$8I=y:6մ2U]f?l#꺗_`)偉̗I /:@͡9'<Π0R~#N%;7y)Mrjo6jPk|+yLRg꡵1z2'B~c71eϞPdyhy.3@1@z"8Fvn*sfkƗE?G2~LrX{1Y"Ctzy+QBdu6*KaFŽIP:3JnW W+>ĜZ>hrJ?iRwM%4s&xNy*45^*4Aja֣uM(|+v])hqSh\9:^4rc1=1G^(pQ K7u/B$Gs/+3@vޔߘwOt"!\w9(,X@fַOAse{x1x;]khȄ/­Po:>~ Ԍ,CWDF9 &εq'T!wTߞ~z%C3[n:?7nM`Iy2?Cqd˄  ׎ϚXJpeMu`:7)P"/~O~K+z ^Ca!X)IvlNM@(}rφKzP)qj4Ku}oo+F j%;mr ޽>G Q LQF;F7Eqf4ǚr0&An?Bh!HigF[;P:^hz =FhVj\g⤍#*'m+{GEWwږ]J ~?o>"N+^xY ]d%wA_!inۼH H)bAfOU6pre1 G/' נ~,oI̞>G[>̝uޟQ4(]EqL}I,+ :%W9Ay).8?|sOcs ,B6= aFAr($qcV>Kָj1g^~Ca4#а>,>"Ħ- G(z@gdsmj-<5b : ڷiyXy}FI$pIB?>ϡR@5>=G:X5] vv[ŹGIb{Ӽۻ{SǰaMQ dɎH{o}<xpV@CQ}q}?_Omu+bEj8TcSFߧ7w)îg)jc-1{k~P_IKǪȟBODA#:@ngÑc@Y١gow187oEҏrނ3Xs[#&B*GґK"aזkhÎ$Lz5e݄gW.-i!,3mbkerPӃ1v VBYr1XۗJg S u!+Y;0T*?]c~sXeջ[>kJR+Ɂ7(/鉣߯Da^p7&ϋޓ}7 zP*s۹&F Zbr EeŤ(>~(:F(Bs9 ^>2h )/rK֠lHʊKzw.cߥEC0Ԅg(ۥ}>tA  O2҅HLs7׃VKAq9ŀ'`Ϲ~ˆUMhaLjKɬFR [\cy΍>U#N|ηjU H!#R{ w(:LkXAv 2Y`ɛ7˹V^ ҖG}ơLx,:rI__/e<'?S@FkW7oXp'A%pH YLoKJ.WIa4bz~ t||g#DZ83it+N>h'tx+ F'~@LSp-=ǢB\hIֿ ]E7D.@dvJ(tIB]/Z(Ԑb!V~o+|kGy^9Q=W5F_vuKd;7 ŅN.F$belت((ou;.<ք Wz:/bHpFqUXƺ[vCJ4/:F2iǘ˔ XaqPOI7qIsW].\$sZGp[U\kp_[ qmtg{_1- ް @ݷ;yp*\Mz;,~&pSRDV;؈k!&<Z}Hg?Lʮ*Cҡy ?m1b_/t x[a}MWa!5d[l ϥ`)Uo`-Zoe;/Uw:WzϹA ҍW4VQۇ`vr*_|SK0ۺЃ9BAgÖ.x{+A?w#dIQ /NC}J(йXRT~a˓?zܽY rr밼ۛܥ/L LL"aH+,|t:NH Lo1sf"PqB.woU^NYt6UE+] ~睋XAy. "=;{v̧ylf1ŋuǰyGV=+h ^οدT1$x7({ n& Jaeu}%wuy­O> os):~aiiЩsI BXX旞a<Ii#e<܏ķ>)Ƈðdrrg>'&Mf\2u@J-ŨD_g|__( % hw M[J diBNSbJkM 3/>ZLMZf͝rؑ͠fw}! r~.yګ|SGK:y[Wտ!{cč*5a@ \bʡž ߗSo[aAC CPy <3,s ̱2$BKF% ~epCP;SЫAg##HpUħqPY[ 8M.s#XO{v-64ϩdñ0kV Cwbel pvkĵobVsbpz⮋Y۽9ucّCI%Yw q;y%:Ӧ]$ظ! &[&Ke:&n P_?=\xZXC.0d[pc˩9dAW: d+k8=AG9N>KxmnJq0--e%l8˲y{<}[U]'1S%?k*^I_ gm םz]"WÄCش#ϱ%5a50A[j4w+roo3d׹a{gYz_y*B $e밭i%d5ĩq B3;`Wt#ȸx{QYxb53T pVs?d 1=<{ot1b/[R(d8fJyAx'T79xOЪOPw{_XVvޛc7ñ4{Qm=QyS,k𕒏BoG99vds;Gk?)3L>qy Te$.*.5!C6㲡ꛌ67IBc2<$h|b(wew[N2KSO`͗0qG溶gehn%! 7n1u:_Ӄ`h`դFcddMsNAŔh6h8:r۴=§riH+3z]ꅭ JQFp=ljInYB$R^M#p$w7,`w4*܂BI =@j~Ocw6avz/_[`lō;n翊5 :sҪVH:d 7m1i2^H_s7=d5~,exu`>$G'+km]|N0#ƤuK ؠjő: eԂ܇E&P+F4S/bȼ:7?f!ؠYr5 PeT)a1omQ1Lfx/0Ww+aHI*f\Ur$WCjXkם0N]go?BNT)-LfKg¹*Ħ2]i7r oS ?#o~2ŤF`ԛ;\};t3Q; aߧ6KHۿ*DpL(¾ qll||JtǺXHd*{F,./a[p@ʷ%[51t]e]KڨQ}d/q;$n?$rF$H ^^ +EEbIW'vx4 繷\[HdD>GNS$(}vP'5D["8i4iRm;[$d*ENPC sOXٕcn^l?#rZw:_,|{dXෘ+di*a0JM?"Z\S"oȷndn2xoDܰZ<luXJ&MyP8MɆ*:mdc'%C]5:nŠ]N5ޖݎ|^9e ~Xxnh,5xͤ!m<#(7Qa݂,CApHN )x'1@,EԱqЅ7{קT.BSBlkMehӑO>)5ܢM%Pz.1L|?MH? iϡPoa??|Dqhbod;ne|_S|B\ W4aVo| e yv&-=T RqHߟ0*.2y U"YPBlw~T(ȟs׃f{ytSp%kKt/a|r5ʗZCͻ[AA87 ?1MXWFlrK$^87 V -5нRlsC=0b$dqĄ|v;jtwh99,QC\Y,埗= B_qya ja- [ sRM>/AU% +0COv(ICIp່_-)Ĭ *H;2^(NBJ$Ȭb1Q$l ч60AIaǢ9Lݜx e|9Q/x!(l:iV; i#Ox{fŲW cډ,]Q{{ lgڒ=4>"ð;ccQl(;;$E#X-Ag$*uAt9`.+!'~8\îFgiqX]OC^vQ)7sX;I" *Ov Abi(C?Pu\ot/lAřlE|u szPW֘et养M({V0 -2Uc6uv#8pmJG9,}__3삟;byG/krqҗ~lE}hHE볋>q`ѝվO[~]A"tjbՇ  &PR YtxN%rU^6i[g:!me8; lDl6_@O*7$~ u1~bվ+?"y%l^A ؁6S1SbiUl9qy>>-]_T1&v۾X:VѨɀ' ~ׇ%0{n?ߙjc.Beq*hsk5e+C278@sTG`^ #־11[FB_XrhXڊ;-eپ]-,'}?%cq^7K8*UIXY!jz4xP h]h|^Mt מ-W@N񷐪VaiYǸ䢳hCG(ә !vǶќUYq;~{ y˭uOB{$Ժ;Ex ?4@,[86/i'+CsPT/=ew<;J_=8%C:;1ty(^g\ЕFfMH#!en(WFˬ61X+GUo g+7ǎ3CusAsyPw. vГϟRM$57Lrre^Eu]~ fZEQy52?LP?4zs\gEͱ#宩6d6њA~1:]}5sby'^E#*PR{닐~3]Q! 6h?r}ƌ%OFXxD3fQ!P0~ҶݼFs 1si~FX`߃-1oD'jiF{|rv.[ am^{oOcb5[#4uA{%xo BUeK-jER* ,$o g#WkH7$V\~=C6׏a?S(LX׮CՃ2[r6H+ J7M`7 SA_*Eu[R@xJͦbȕƠ9eК觳Bt&(6-:n jM l jӽa 8]eQeQtv%7X?삢)wř{x堏lK/Aٕjjh:@ԍTwOܲn/ =sC^R]dh <)?"񽓁c\ǀuM(j }/y6/C+ToA3}OXTG`d=a. 7 KE#P%gvb)ԩӉдA4gEBF)TR&1szb gG~''.@m?ggj6jfRꃜzSzlub&Kɀ3:ձ )qf=91782yA̸T{4 = fA]\(N9pk!_ mh}WC16YrG. NW|Ik޽zBnBۗ+PUY7BuִEá-h:Hy3M-.͊0S$x'x9-/4#~ G]^~{3†U;`<^r^9j5R/˰Z[&9nAƠMѱV :,]߄3` Vw͑y jK^AˍytN[@ u*#BE>rڐbެ0F/oMB=Cr`_.N(PC'1;74V.^} ̏pT.Ir1 "{;D̉mwg`Y|ďU!>u +k@SVī[ ~ʫA>'뗹:YJ'^?ztpujD6" XЩcf/LN!?oJZf}yH}>Vqڛk`f$$?3akM ~U _V$x8o4A`ѱPQ,[KBtk$b3W]7]tX^!':ʘ:a6,'){uް|2bt 8]zU>BК}| vwFZh"G힅1Zau0vfZ{h^v $(vbvquzsUfH՞S @/Ӵ) +'a"Az &kW;*|>ʯ 2JeCEkаbzR:V,x~XMĺklѽ#ZLEMsQzk5FjefPT r;"1K5<z\?35jKcvsf)rvaG}冼zުf,y1 ےdfO1a +h~as X}ex? )aW?%EFhlh@8Ǯ\;`4Bd>HЂ̬X"Z(Uo6b4~5+4Dew^EػE|{\;'4oq\UV&:hxQ" UCQk!ku]KKc[/}0SޘW, G>q_8jaezS%D=L +5:4Dѫ4ch& z߇81%ޯenT\9}%LzEqŝYwti_kW֜A6tΥv;WQ11mi?M T RXBީ}oh;,GA." ~ ׽ݴ6!"z$ol9b;E ѽ"j_`әɗ' # ޡhdDD}fX%cd/;\ 98#VC <+ٻ%0]뮏Py969#YzYrP!A'L7]lmdRl}Pבke E :V*0L꬜/+LGҺ1֘+NԽ?.3~1Xzi? 4}oX$LH ʵϚZӀwAK,w _&_ݙt*KꞫđ?E"^/>Chqy0S[M,Zk4>̲͟GEBE.۬ 7kh<[tf|K&|6kͦ,g=+s22.btHo/Hٗ/ cŎW1̥L _+XQ[ɿzs?֝ O9!g+:i'1-ȝ=:~*Ʊ9 [K.T?q浭D,NxG\rRei:~/*#UE9/0rg{Jou9$E?H L&{>'a){$ƒ~7E/B;ٰvY*S,͌7 Gt*Ē#8}LA#yٻ 5 YviN`[}קИI-cg>94)iOGͽ}@XRv+Kt=>#<*>;n7@ #7C,V+],߉ϫh!n2XD_GOrr'VW/>F}~b`݃JD.h~2TeQ+IkH_F6TfbRk3fDSޖF IYlr;1 _sUX0Pl3f{zֻ;tqIJ/ă}E>]IŪ<\^Wk|'dUUoo@Y:Z+k.'q0%2lRxea^4l[s=6c?>C"{GL[Tl;zY8Mz'^'^1ߺ96(9A3u |Cūe![nPcݯJ{Q Avl2ԚuטGBJz“ixad0n*6uX[eD+YbTL}&6^C4#LgDٹ؆b{j[MA,e+=ˊΓGcYӨ//HɂK YGZ'at1.X;9Q \T.Pa*PCwԍ~p:8*"CI;{jeg? :8 Z2- P7vВVڞZj߱K ?Ϟ"KXR!)h7z;޺) UBv[PΣ[b 9]3wi١Iӗ'kxOk$IV\0' ЃSE*$-s9$ 64&0bMZʟJ\žVbnɝ>f77 ?"w=l߫'II|1[I(tiQLY {'J#si7}i>N:jZ?1q:q8U"Ԏ/c|juPiDqZF ](_oiB5M][hRwPy[x@-`(B0ՕzXإ-{*fzWׯ\>*B&$ǷD"Ew f[*h: :O8jnmC-gH:fdV<T!CK }쾓ݚP$qP8O>>ftb@G;fI] 㚾yTW)U&ϡtB7n1.vrE,$2ӌæK?i\id趘tb=w-jFDY0cnNXzQ(}1vm k=v8eĬPƶ8t2'}/+{]ŚY-.-r [D>yEa+1/ZڛJ ~1hwv~߷uRX?e[?oCSv7? WT^'g&A7LJT1ߓ!in'ߋXZuYџ:n~(my(1L_\P=0%KB}Ppx-r$o< M?ORBJObCQ"el"LBlҪw[.]Xfو ry ]V-Xlt2M_/Y`AD.$=<|06xNӎ]7"ayqjXO +OPQ|lZm3."pד*?E n-:fպnͻImAJs2Z~ك/ {<`Z;128@U)7'WvĂX{Y123%>v 4g^53̵@81/3XMcXr6][ta-zݒ^zf)mC=lli. ;*d7- C%߳N¯=!>0jޛa ڥ-f 1WUp7{/;; +X%e50$CԂ ox(K gP|LĩXp}I`Km)VZT jtKۯ^O=,MZ?!Vf:t4߇5;>TEabӱe?^臥ӷŏÜKtH91-]?y5"0PyC\K&,En]Û/ha]:\,`Kz~C* j,'͟{;+; ߽&ȿ) uܶ󚏲rZ׿ն})ɲ)(O8ϟ*SERC8~l[F^,|5+7NAvƗ{!s,b5t^Tw1)t P\5zEsSl*7U'X0npG; ZNOAc[O/LZzN+a‘a%7Й3|GKL )_HBSNȞvlMF{ T! lNP ҙی`l zvJW z 5w!BFN:2tD+ l oו:No^¹؋$%㶇kg[qʷF4 87m=B1Yzi("vN<.35eP{A(U= ppÐy^u&:eEEmc鉿6hx11?+VlA_˴n 2'AqsE "f:SHtA20"XW,e sZ693{*~)*4NTkJ?sC-Wc|J$%Ui!‰ De&e{^ >zzy>cܮ PskH(S= Qjr.8])'@$>S(H÷v bdVglnBpKUA;}]9 w6by7CkW|h\zߨ.w@_BФ$H.wOssߟ' ʶ^w5FXU( SU:~ǾJc$[ۉsPd5Y8$_YƦď6y3 cOlf?{!$О:"MSWn@NׇѷGoiU:s@n4ΧVw%ک 3yk:?niՂ05?p+=dZ v GQk/f;t?/߬o}]Tt%,ҟO%%eS t= u"TmqY;Ƞ0ns߇HAlڴ]?ԝY!ru׎yCgiNB|[,Ldz4zXO?/5 WF*wSB=:"V0I;+?˷.ƪ鴛»9wPMjUTb͐1~&Wc 6 @\W;8<r:ۛ@o߭a,΃M'آR%A"t/3%lƐsY2q+Np:B o?;q";,[[+t}|[:[D<]drD|3K=Eؓd/a{g\5KEy%2ɡ0y%t*!Dc=Ĉ:$c ßE*ȻFS$ QS*ὫO\mK4 =*`s]7!|.6QqKZw>cNXI SLΈc vw~4N=X&m|LFp2cU \;`(Na5^,d{_}O\xv;Z]9EyǞ"SIgq=HSw׾,n|u*Z)Zfszu*ps$ʲ-U(#-Z &~('\fe /YCMVOd&e~ZW|ZW9nX=ף%/xM t?+ʱ=9;ۺq;5ؿ7T[ EzHc, jܥR~݄PgpE~%]w)V& Pb^}s1Ő)r7f÷qm >Jӱ'ݟ&Q1_Vn`| '+r\5 p7&{~yl5yt\4/"KЦ}D@vC+t`+A*RzB8Cf!S&HX.+ xM6+`^QGBQ=Z1 hirEf t[ѦP`O hzZ>9z9N>ϖvC}λyg'YS t] 9* M(S gZD}I >j>5F9ЃUub 6-,Ǫ2o1cel~̚l=-8-xObYlG|,ޮ''nfaRhYKTk+s޷YO, %-F̗Aȅ5J7: 2!\.@s;?5Y7ܲ^Birt@3:۝Gδ!_z]3~#c) Խg~߯A7&eE MVG~k.B'[YUF&~ D߻ Io\b؉l+E+ouסSQM`\2V?/zτEz0IG\2ۣz|+{XcL;n,@GXc&n^ Xð;Ӥwp$1|j˩5cZSkp쩽SB[=vkKx$5(VEB_9v8|%Oۗt/t6\35b%L`U踨OfPpEc9y@(N:iu@~GM-ѓ}==3aи & ={`3e)Yhea+^7?Cƽa)R⸤ה=w/D\Z0K\LtTI߻Gt9쵕}T!s"ʜcӿ aYB8Ɠ|WgG2r[ӌXb[p$Q`-\V~P$ÆE=V]^$w_~bu=!tLC & ,k|2 _yw[ r踲&qgy|[=1~v 8QׇL6돏pakϮ}$@ߖs(?Njݺ3Džcq5 ~MΪy]k1FXͧ,Ǵ-OY s 5[%C2ӳ@=P֣iL?F"Oh79<{!ۧf@ '/9',6_b6c_ >8w.HvTG9/SzgZ#[~o/A'+ U71le1?]DF{SEZA7:ʫ0EN=73Ի&!ouӳ+= mB͡#._NyjH$ܓQBXp!$5ʉ0RCSLDiҮ+=9*p+_x»RSmx@n>|qƞX[R(b !rOFxʓbH\'ƕ_(?e kib,7]0u\pgsF`j,m` ٗDEs vmj1&/UXiq1>AY({ ?B5sؠy}Q^ y%dsTQ6x!yXg̶VQ2dtw(5 –ge3$6%J;aE](0]=EFkY+Kp:,b)gK걳˲MLӸ#kOB5y,K6}¯F*~(ʼnB5lz'|㇢nYA=*Xf` >}HbkPIt"Fks)Q[FLXq۰ ~e5G.^8uaک%\2pQ k5i8/kaZWfOLɂa~2HbɛQ3%sOBQ!Ccz.S86~r x b8 1d5O1&KI+SAkΆ֞@&AGr`;ZMh?(̡QO,X#;E6`­#V7_'p6uv({<0 i3,2'I(jPI{и ][uᛗUۖ߮ beDveNHocfXVƚzE2^$C߳-]+!I>q df> y@]HyYRY[tp+~Vm7kaͼP8ZJ Fm+տU#uoˏ!Tз ?ǠHcmCg<(R 3Ǯi׷*eb}M jˣ_x _՚e@{Wx( I1fԵϘ%>]4q[IEo1*z$۷ ^?n?0z鶢QhKJ 2F&I\8zESg¥_cYzl\džQ>ȷc Tf V?̢b<4hKd[Nr,A寲˴7۟5"?*f(]Qd>f x|$wPHrmrMG`ԇ.ZXdVDc|`Y6c2;HvR}7y+~m^d0)d:krpKWY@Լ\$19/zKdh+\ L6}RЗ=;߮@轏!;qM7 ]N3COz:AVOw/00 XDŸ`\xKL ^Q>Y )Jǹۚ8?7633^,.t.Px+|x1% |lBbځgW|pmw KX 7kCsY@_I̯d=Q'iҵp0mVL.&U+ʆO?gwX|3[^9Zue K1h>iB N]!Ǒ;>hb=T>,1 (V1 wCv߉a;/{s?4MU`0'Bh:̾hF-,\Pf7C]a/T 7ᴡųNh0 g54KCJ%Ga vSP4O6d2f/w}WDZg;.#ׅ`*=_sC(ckC_C1¨g3ȓ:vI3<l# 9Pds](Z"D&8YT|5p'}'..!Zw#ɍpAo?8׼\`ۖM :K @Ɇ5;۫; U_H91PsQR66P.r.vKM6Rřo@f_< KfW*atFZy[d`z=?|*˾XP9=rpؿ '=ڴE0IãO_c>@gX%an'2tMKOOAy)3!X<tjx1ӯ;]@R$t\5}94}`νR_e\[Ra-NyO3A㏍zp s*.ɭ'D&~]3uϱ@eS;}2?TAjj uT2Giކ  XџϖFnue^QތOC~;~Z{F[ochrpd3hϷ?b iQ-UlaEqwem|9"n$ n¶Sj?-ӱYFp f~Tdy]yF "[k$Yl7HˮJI@F,6\(2G)NcrɏOB)ߡf[Aj)d|a |!$](&%_IoKB N 9kWt^&خUfcC`Q twg*snZ̶j3S|IPuՇ rx|cBʺ>5Jڛ b0Tވ*ԞڲُHP4n2YS?v0G¼YՌ'GS <߳hK.bO`=M<7 NFDʃDZF?Aj-(5үovONl3~M{sV=!KX)X5%z0?j"9gM`eMP:=y'30΅xP38l*侃 _4xex&v\xׇ\v.zqpGg =U5gYW`4u$t4z3 &'ѹivT;|Qwr0 &;zXukhS8QX8Ssc 4̡S#0ou}- ]Wʜɹ{]ng?6 :W||b6OcxcN B{s8{u ~8o}Mц2cw/`}AP_#i B\㐊z=YB,J{~`1g_ FO)cΖaݶPiSw>4ξ-}Cq>SqnSͻMwTϻ~GbA# v/E~:*q /-p}D[͖Kcb)#Sa#O܉#B]څCqPz]'v\k3J)wyyH ; q(Aw>1gN8Cl;=dݬ,imZ3/UO4aBE,ְ=ST[6:f%fYr /gd0egS܋" y+׫$k[Q+Y[6>iXD/&$SpQj `ǼU!B{#wŒ0z#:lTf#0K4w<Xtݮ( Co]2(c}_|UQxc-k*&TmmBiv'NZi,u>UB:X."b؞\>PVBۚ~ۋWg&arÇXV@шf-a>r("(º⸎@VLjXnR6Fצ2^Sw 殝NjM*C\^c0WM j(] Pub#\#@sܬa9X>WA+99u:py٣{\K?bpz+{AtCdЏ}|'ﹽq,"ԚmFiϡ P~]g{Y[pr&gycoǢqeE6~noyk^ĆՃ0Zs=|JuK۳fMCݾ@El^^/RE&Jo7p [#J!x1U TTCPc Q2Bǘb^ãAKޔYH ..>IƴUϚnJA]͛D$LfPx8\̮qrrWd֬t<%>Dzb֕zG혠$ɍDŽWC]̉^iyuCCb*{ QUYΑZr|uasOi렣"7հ`}8DiZ :xsv*TP(^عN:==fD!q>/Lo!D˽bx6݋Jd%^_uD㟮R8qO-T=6$Ģ?)&KT>GP߸2t*u8q4g~/Y`0 h 8=n5qqfZ ykZb\毿JΩrk8ǺUvuYrpEwz/E5nf" mwL'4-o>%[حrɑ{g8NœȺ\Ш`'Nz5_0Jp0xF:t".y5.c>Xѩؙz-FѶV%]L֏X Ǘml~4 /es>?|: g$$ņXx>ڌMZ(7<LUEQZhWNOJEF=BL}Øc[ďdpAᣦff®jLJX7n,tӟGI~f:1gn~#uXٛ3;<֓5ב85u؇> `i84N|a{rm<=F2_b S 6Ϋ;]5Ëݾ3Ms⢏`uvv__:9?'Ǚg.朐ށUceD. BUΘ|z曶0a㓎Wti(; 1|p oJŌSSY1oa6 GȘ ,dXVAP:>cbE'{{3-YJ`s 5m}iXTm $!}^v}ՓbFX33z4B6W]t|m\j-O'ġ+b*(y\UrѮ^_š26"\s}%aR5i3TD I|oCǿY3V>Wh_1!Na $H׷Pl#k 7K;u4Pemkr&1&Hs C -3F"иVI:<-HCCo\:h&-pR ?![1a[2ō[De//Á^7] oe>jC tLw|qQPyp}Dׇy6&; )Q=gݨxf+ŴbEj~?9*Ʒ鷳Ǧc*-֗e$GC5 H@_W$fTThV I*paѝ5f(! /: !)"muD{^X?}H!?@ eUGG zx"t ]i}v͂0;Sq6ncFݱVr(n Gҩ}ap!jD^C˜7 d?!p){e̵s}:ftf!g8N%Cdҍci#͐!(yнfuX_ Vv%ڜ|D^TfR8R+wqyC0~2sz s2@ɷWwO3O'ZELљJ³7o,l?WOޒXz]<v)~c6Iqd勤7 }Avqh [bʰnVE:6=8r@NJ"ayXu!,zxMRAbOs1l*nz\+]57K4c_Z/,HёFhiV!Ւ-5?94Tف%kP;^)WgOt7 y3g gЏ4}7#6'¹/FKˌ.|=+g.ľM18lw˫Ԏ_g(oI*eHסnyjMON?W(vGܱʖ35T#Tq@և n6 nÒ /xj+6okICN3j\ĊMC֎&(t9~N:q82>=*O@O4h^7́񱟎 fCs(3 ,^&<efBټΘI[Idw椱 exr?}m7-rN=շ: _x/'z(ɻ$@t4?(˖)a!b~0Uऋ_!そl׹6]pBCbJkH$~?YuTZ ޷gzD̼v6k/?*LTD}{.׏0&o[gy159hs) D}Pvsϡǽ|lur~uI3Jcvؓw Q6y ^k¡RIh^TMI!U4G'G mvbl_F 13ķcj6ߜ{e 5TR)*'/ݺSQr (̀4]oT_};yp45n&ٟtaDm֘K.mei-|477peߢR\6@T*>+e /Kޱn/BAvkDq(){PC鍦lJ(kW#v )7`tOgKWWMĨ1;J[,ц4~ůAFcdY(MZ/͖K{:PP&sk#'ާw@'m@`pn- _'}ޮ:HZc? HjpjHXyC{t;.,EDeXT5\l U+!ĐLiև aPyuw6b&Nt®B\pD+iw{ H'%2g#){a#9 (;3M޲S>Lfm?ipH{4v̼;yJE¢ Fq}'p*Z-Ñҳz>%lPAIkX2sJl~geo8X2r=.ˠ?5A4Ca(͚9WXnLaWP2pcT(J`#m;>g7?}J32ƱPFcM!Zn?Q̟{o-μ)_\-B36h /0cE"7u+AVy")F 3e 0+D_R1dƎ~6Iz""c*F%XM1aQlp, KDžW ~fRwHfk¾B6^V.[*P<(lղŢCX?*?KW/huMV_G+Ca_v0zuGm猂$Т%Z7\T\< $=\p`u#LJEc{#4+@_B:8_S$ҐūC$/ g"f<0KمiU,Pq% 4 ۭ1ۑ7UwJXMD}6fKȅRR~|~KfV;iv$܉ v,oF.XtB|%Z] u!G/AՂdU4(2EۿaL^Y΃_RAԻ_qkeG6T[o2ᅼEձ$"{JMP]tjQ\;Z)$\WVqëeoFbZ z'_G"):h{:䅉~$D-ՏmRD _)P3mk|)M"Wx+?`@LKTN In?}]*),|_QpkwvΜ^% n|.HsBIZ1%VrTtaFɱ0 'jh _OV9?qKM7tG7$9s2dfHM.) y\j^[-63{μٿɕT4WרU6*ƨ^Bo49 ]tMV_ʙOmT=q[17~|nMXj\)|>ATKheOBw eJO}shq#ouKzիTXwaF [EwKE<6hsَ,n޴@jl~rə^HGG~Oj1 a+Ƞ\lZH}R5҂PMɜZC-MOa?;uX6[vT:LKcN!,UNNwYYgl?g|_` -;Vr$=еh/GnY xU t 2B]Km:8~D'Hq/_PE;`3SgoM%qC!H Cm̎UȱaX5h"k^vAGC?]qt楑g듊83X{هTGL[d3 1/ۣ6)/]9P``x/Te@ɐoJ$'s꼓X.M 3Q|]<61`>Xغsg^)p 9ֻ8 ;isi(IJ κ?zs׮춴(ZcIH#jAJPBv[R&# ǟ4nC۰,Ts&?0XL/,kkP-TZ<O %1*t'g֍y iX~CI7y瀠{m'kYX:f'V/@p^M%d; #`Ѐp@M%gM BVv/~YԴ7;huc+I yflz^ v4ag†X)ձ_®;/4G_jKkO.BLW,mdwAՄAa"jߙ@|&/18 c~>ޓ f*6!zHlP xsm6S#*Ybl>='c=#Tnj̺)2a~dK1@],[ t}Ww0l{:ݰc"#d]: , LP\fј->u8Be J yBCo0V\"Gnk•OQo:||:Sm~E˟6eKl8d~ISlqΓ>Iڄz>"c8/j`Nl':SP2 1;z夞A¬0|t TجFӇ׺.˜PY3uW );r71])XaZPy&\[̇@7'Ȇ Ix0񞛡m>+tj8,khĎ#o WE{ė$XJ0{?K_Wg%#m|e)r¿?ϓ>-臿.o<Ⴜ-y( ~蟙aRq;?.i)-iݗNfx9? ӊ B +Ȅ?,QB&9%AoӛQНMc}V / &?Wl = V "wW\0zoxL)^4RV>mb[0kL(Dyŕ 7a[}VZ;2G\.az3+';I|2+u} +:j~cOb.cؙRЙ![u%@LWT!}-gÏE*N{[:]h+>?wy6׽ǞXIQT Fw>Bۆxhy Xj_ c/T.<&;ҞLPؽ*OBWʗ+}o}G#qRv|$7& JĠ)Ҿ#Ԥ&fdB:X]yV%s-k`K?@x;('1Xl\7y`w_x֍ϴƉ]L0gXнj yM[߾w{nГ8`1)z\' vdH>l+)7nU>/(zI~R`e,7vQNԇ:KAH Z㌑_߽\tkɿ.P_7 ~QGgqb{I$QOtޱ?9*Eiɥz`=]hrvNzM-gnbL6isytE=!~o.С&m:wL9=2x5avx$tqB;#0y6/R? Jv 0J<{#U,IOܠU]Yuhb)~o _hߘ;}6j9^YɅu6qd`$d6oWK7# g?(4rų?-` 3ٟwW3jC$۸•{oUz9brd pۂ2QK$b$N $&/S)!K?l\V]JGBL8]=o%* Cs)XQ[nl8?A"4)s;}H,W0:?z음=uSg1WQ+hTډvLUCow5o>H*Z3U gry=Nƾ %˘!%S,R-?x[Zӻ"3R "]w5CqeDle&FUC$Kr:t[&K^%Io1[̡];KD Fn%wZYL#!K[q8y{|Z>Hqۨ@㛶=QW9aB_寷*kdAW 3}觤"^FQue]%,]dX(DAij^P8M5F]FG~~ˇb=I _AjPtËsifd([nJGGj]Ɓ @.{q:~$=ʑnW}hSK 1ٟ HH1-=>ƲκTw%'^k^}?5@{)W=$(܏ތR,T?*nd\wc׋ߨ'}!n9EY8ycS8tńAm}tgmЌ]9c*e$Pʭ`kqV9$Yx [b˯ A#gAOMwUv`üDdf܂ҋ)u$]lʨ:Ҍҧzm-}Hbs>]Ӟ!WЧ1r 11~t[_b\HBcisU=\Q~ tS"4z,[3@!+lv 1,mc.bP[|A:'G@L@F?ށhڻj|PFv7ɫ!9(W3fH;.]~b=6wH|4Z9\b`Ş2ucq ɸn:|28y R \]'Q4[kX< ?NUc 5ę*(h"Qc,4c]#L^ݘcAF)87~I~4o_y X>kJV VB'>n?9U]\Қ+~]Nj$ϣC{0M`ښ&k~ ]48I{- aqB3$9%?@&XesH2go>#g5_ v-;1Ԩl_o;=R.liB>s1j E[~Xm}+ _Fk/(-r 7o=(pڊ_c :LF'aV6h}AM6H1Ɖ[U&ޯn!\t^ ?BVbPݑ8 *k 3KYS" 5*.bu;'F]|xB%ݥC!vD1:RY`g)IE'(`&捆:PsáqdN em({i'a$-Jk?,:*gnZ |r_nuweέM;!8>b|08hSaQR^k*n8IET{\V(χ|ijr_$\&fӺEH۾毠6oQ!{oPJG#A$MMTX.|WF^f$bؖpG3.= uZSDكѲΪuȳK~K-V|._g & ^zȸ|Ϸ|%X@.iOUʍRי0ì_Gnb Md=WT%Fb8yoWwY|ϝ͆Dxْd ˎ!lϔ*<8Hq'dΨv,PMv1)d7J,×?Lh0%gr U`3-k+NgAɧ8f>Xx[+wٞWLdr{i Xw }.*# v}l Ǫ$JiOT0(t( iFm8K+zNz>7{c!QI%{7o1 <<fΏ. Wr z}o'Z1ZdD^v~;{ ^uX= %Z4u-ܷ1W?y ݣuR=+s)n8_@|1,svz 75[UZ9J*^aڻɦӐX=o=kP|ڟJ;=5!ڱz~u_'ac^A(`ꄪΒ qH6,UO{v}`3>u$_ CTw3Mڥ6(3~fy" [+EpŵEZ*#lp).XCg@}FI})t 6݆ Qc?%wKRl+*qlq?&j@-fxr}C:[>'C u 5WZ l\:'rXXUR;y \31VeVтpH)ժ7BaBG:X,+B|"t 9:JUs?=(&*C(^|?w#OzKJsr Ud0yFaǤ6icW97ZY)j*s wFzWs r|c_s t ip% g>a&aSffq }DHQS)dq;3n`Z! #yn.z:"7R>'/M,iO4EO~30~MW*Ӵג 89>z;?<\A5"Cps}}Q3 Ζ:@@jlkH.dl4~cY>BRo|nRomWݍ_,ygދi6U vv„] q%a/</W;+<8K}G^9[s<[Sdjyоz_D 9*bA'Pf;\!1 e!Kr/<{?aEk;I>`b%,{s|Q"$ pXR=ExL\zHp- ˦aeRR|>9 fu{qZj#,(!~&{B^olrՈCNO]W T]Lҭ0@N' riDڣd1GDD3 -5tڰGrC 6 =Υ`2bwNAyjoP`}@s;) Tޛ3/lgbMQWNj쥎3GxXRM7]pOőK7fR=S^kx_8=bƾD@*'il94ph2FqKsӗ!t4 =wV#_3@^*H{Cɸ; ,ky E ߐ&ڲ ~F y$wn6.]jU94PR鮬h )C9ū 9g>4#߸~ ]o<²Pzg#Re\,,.9*{+nNTzwn !;>:\W]Z1Khe>.qT|OBkPv(PM.NR/q}EJՖ_Y4BB~~S$/M! i EnČpz?e@3J%``U|>;& f]/8XW"&kzn8CwNYg`dKXl4!]N#~ǼUsJ{^ǰ, :ylm]z޻F)Gnwɏ6+LkeX@K];Gkaܳq$P!~wRY P6qP!=~a3>Ac"%=#~$7NBblW/ t>bnss|+VP11<9XAQF[K?dg*aҀ 4+*g8ewÇ -~)N2Rq>x=7/_+L;*}vˀt}0$6F qEP+vn~]{/XmQϓo0ƛ XMzS{r`X?l_טNȥ8&],\y} M8ܰ~z, \6ڻ!R_I41ɯ+m+>VGci$mq`@bhw2=Gg5ɏt&Lxcq.z|QY&P>Q܇T8QO5V,,LgĴ(1t#^x)\ HqyֳGm!|}@ȟGVOju lO!6v wCQZ4L%Iw1ޏo١ӼXʮ;*n \Zb_]T^6_V}[ ?2U*\ʷSk^AN"Юf_)O,ȳQn9,-־ UJ3ba9M(|ҷ= fnAPFzB|{Pӻ:?b4?|+zt)~fa~$HiQrt^pv<߿23e?Z#H/ʲMwU 4]|keͼY}…k7PWybmV?)06{hkM{C1]VUwXw-OP]iy&4d^lSZo9# ٜ8-VUTΈqŦi_aJ6E:1~Θ#//`w*Dl=Ķ[~/mPq%f7f,sHa`/4< ^<3c@Ϸ&تh8陝z͟KL;( <7 )?ɿDџj[TV?Z-G5ԡX稧W1ą>J)l79IkΗȰ Gj`~.-%xH"i.rM3'O@1LBܩ6_n1>/:*6|$l7~n->'\A;FkDؠw>\y zjA+x&toʠ!Z>Mlп<>{ϝJ/ {Buz,z->~҅~!?0{8 ڋ&Þww1Ԓ3 ީpbn~?,KO ٧$!->y#PaۋJ[& p Bf }:T84$l#yPt1?4%Je7<0+iM-Ӄh.Ob:K!S})YfUdw/H" O#ķX ~3Fpk{fu񕳖EyM,Vbz3ْ/̤1O5=wjLGj3Bғ54{Ӫ:[9Tи9^_bH=FC@Z1r,Yp K4'R'\f[FqdG߾ȧEHGQ Bb;n.b͋%23ƛ46đ;*g1=cKJ`PKTɕ{$j ʟ(߾5y0֚)7$-DoOͳ15 X{]wyvЛWXzL0%' KEt,36ɑFmHR7 Z\~ ٴk` zkim<9v]W6G!o">8%ڞ.^΁/'v{kcZʫ Uv{ߴIl+WÈphvJ~/=)yKZHTru6мLE=moOP"mXdp2J(YA:dB=I1&H݊T%G~z&B/dab2 =oP4۳ $U$fTvh$WKQcCʹ|BW /.9--aW]l0݁]֨>(MؓΓ`ի@*Ӳ&{=D Y/`1}/Wq}*5Qցd> mheeZƋ]4%fu۬de׺8_I.FP<veCuu~0N1nE#dzDAӱxe^qƸo Z.LI dBȻN,+ hf:dS ŏI<^w{3@$Ws VpnO8wDT_@\(7&- cr-t< UG1ENR!k,54L)L|]}SR2g7-%?r=ҩ݂JVEgy:a@aL6f{x5}cw/*&Ayc=Ȋ1h>qZ4tm2T:Y6%w7axʣ lJ9ȫudwy}CW;T$~~4U}-Z7> PvOm Wn00!75 @XbUt"}F~i\2W@I%}i.RM ρy zo2V|>tAa >&ʿ2!>.4oBh塕VL `xtǪ;ZoކS rSc 'Kڞ-+ɢtYC#2#Xv1^Yu9q|< e;V|Axq|yMlg1~gꝒYp3ԗ֑ZG4b:6h\sc\9g-3 =me7ҰGR.RZסS2xFI4۸ǸȉZ;9LN0v>Ķʇo`xԁ \htНs:&NpBp#w# +R7w}B^"Nʆ%+vDZWΜ4Ċ8L3^V`]_J, ϻ%)BB~0&5ԓ_~8FczBa48 5!Eח-è߽Y0ȩ_>gqL9\cꎊ{P@N^bt+ ҄n wNp*A]!PwdVki3l/zu9wb:P8N t0r!оu Y d>'ؽMĽR) %H/DNvO1.eɳ"Pecm=Qt! ՄJkCoKFbV`a|eE-5]TѰ[Cω5 $5Z$8}ϖ)ˣ8]hvF~']z?\ q1u9󤤱,>EolG#o,MW_$/.paׯk40?`%: Rvǰd5}=SGފes W>8o}I\is۲g/ToTHTwr5 3f^YAz4 E,Np٥~U^ k_eBRnˇHB,ʧjҹr{j)؁k>z-Ϡi߸?P3vOIvlT365k /a0%\W~j|硃f֒P>y$ypR3tI*Q"36BTq Hcr 0zﱪK(ݣ]?u{Z3vfޭRrM˷bx8uvXЏ8yFK`Vm,Aoׂt~2GJ2ǑGc/}v3N '@IGQKV?ۈlj٣p&K64[1G5قEߓrMIww޿FEo!c^zVqZfbOҡk/Q-=J쥍6lDq4NOn~|*kKk7V7oܙϠ M3+p z)1wpܐ_zc&ϗCΫApRoa?;hsf 0K?T  x26k$oefQjYN+fDʿJ*G^cvyzX-.CqRPw*uu/Q⑓OOdCb2I(O9So~;0$*ov-to9\fP+ +ϰ9d6=UF^o1JG_1Niw $͗k?-8 =`RYFu%RՏ`NLH:5,SPp<ٕ1`S|5}EmPgZƏ&$ijJF nd:ROC^cHZQ'^@exdJYM9}[:F١n##z/ev.+(zjT TArmG ?q >s8m{\'^=Ѣ!r h+j_nC^rǠg0ިaOT a a ovcn6S>N#|7"[(*aJ9!)첋TJٲG^{޼ޛP罞u}Ν+wsz>kti}6G(Aǫ+k6no*Ll#oc:ei? ~Ɨfן#*GS%8zv\ǵ*-U9Po" }F*qtXplܛ2V<|\1~.l B-FyGh*r9٤'">U,#(k1$SQ`Uj?`a l|JGLRB| خRmiy[հ,0Aߤ++qŲ7ױ늃]![Rhp GƏP]}FZlq }ϺiG52*-0Ms+;>'5Ku-U6%q!z*! ړ(|m*޽#%߇*?Mwi.a ZZ6ݍQmq3d=O瞴"{FP|D$ ~<w3oA景JySy m`g~!4Yx6](NdN?R%D"oLM_dNBs@Ӌ"A5C'rg:V"5|U%A;=uP;{?S2oz&'8A¬~ğG§qR[SZq&#QOgTcoPfw@=kR?$W@RQ'N:w;,wl=l i,UL%$jc;0W(1͇طqء+jcg՜C_*/2{])R1jGiJ듼v,;rk:+|V#d֤%UbsI c.;OP}LJGUpgbOϲWP#j_u'ljsY]AHL>;~r3X,㜫y./f)|aA+ ;z0=4Q(_?ib,"PM\B2Jy{?),> ,Pj4$3`1>`epHrOO¯U`uㆢ]ӘWddm ;:ҡd|O;|+GAi 7sxgM77lӄ7Xxsd/4%3o~M$$HP5.RIS&Xoms,fotsgF`,.i<Ƃy65(-'JH|&~!n$lwK̔ebuxUt$ ;JO .s!oE_&s *ꩍꭟ0|oq0}Z:&xMЯJ0T$TzvãfnŘGlvrαd"DlM5ms MG,,K%x˓1rZDU# reNa1^+4 ղ 7+ ӜlYb/ZHQOP:5I2-J\ںΚ[uhk?޽m~ %%*.7A}AƙF} D;tޮӂmv.3Y)߽9 e6ޒysP7Q/5 )"m-p;!g"$ã>yBfdAzA h Ka:T I#Jڡxu-Z9yaK0-r:TD{3h7WYn!m|?1[܆4sP8+Zq|Kʬ]_An~y?pMtkxjfond޹q$Kq*rAh੹>bV8dI{'zv#Q5y+o,k8m )$3ӎ A#ӎ~t|'K$n.1x!܋I =Of!K +/Ns De\@*LJKp)SeP%x7 dVfIc^I؛-4ܼbpӂjƟ,D!#R%k%NNƬDzh]8Ƅse8/nX> #@%ˋ!kɵtj~}_ -dw]X^1#$V)o19 Zgo`d,pWu~}qJSX 1ﲺQ˨ۦ-y g7!CNS*F&[~C[ "! gq#?9*.C6]w|=Al>)2E֝kgoXx,T EBvT@- aQtŮY]ev ֹ̾ ;{`Mj"z~Y(ˮ`x N k~t_PKgF:(6&M(ӯQcg$RS{,͘h¬t=uTȽp3> ٴP՗jғ!o}#d<9B)ZEș|LJ; g.|:괢`KQ6:b́PNAe>Ԛ1Ki0PT.Q] 5YnvL t \GEa [c6HJ 9Db .KL^鼄agaѣLgcg fٔYy(`0<僲*D-q =‚?~=Tf5o'w]Vyl7.tꬃLnIJfoC]zGPb]}!T_"YGa$YIH6=+yX6 ҫNQw}p-&s~&sPB35i5,%x;3 3~H+a5"mƶrdZ_Š_BBFxa &cPfѲ~ 9vOCaGy| elC4t>` :ا/@eXNT2> {qX kꌁ&zF'\gp@58_ :قo[̊~9A.Hw]&L>#wL۞ef ߬΁$ݍwsNĜ e}æj)j'g+Ae{=9.B0ˣM4ZWA_umǴV\8vo%Bxvid2Ə&w򘙯A>a h9y {)V8 av=Et@7V1Tp"su~x%L?|ہJ5T׆ G{_O&szAՖ{5\4`/x_?'as+1 {<2۫=R%ri;O϶s{}Tf ؤE@Ow1Yuh |+@s=%s"cI(nٜ!&ažbu`U[ʥƩ= F@6$RQu̟&)a)*ܑxdI:4uBqTGz4C͇-H.Qu-aSIPG Ԝqz> C(*ӇՂhlzyEe<| ˒cڥ=XAyYL;krq`PB<{zڸkkdCOH>wB(~lK+:{Y6Xߏ. ap)$ݠeJXǢ(L2O9\g>aCbWה{B#)/ +.l`^e9lp}6GvBEw)*{_[ñ?b vz'.&RDcwfiBVF+k pY-y,iJ"ug$1ju5>zO 2Mde*~q~?M\qL_mm͏6h> wB~@ ~;ğ"P+n B+UH`Zzѧ3u&F; L\❌{P~N;g rYF.Z._ V#vhK3\|ugmjSB=E؝-l3v#MGTdކ֨oj!$ȋ^>d7/jcd=A:,gCuP}mוRa)Z଻dU+N+_{0-'Aͣd%Gevf޼҆j?/C?=wT+dލ0&svr~lgCa;ނ:!!}kr;" W~PHe }-TwҡL;Z%*Z5AG׀,]Sɷ,ƅY'0`K1l2?) {'dl58*?3$+H٩Υ8C|%RnP?Z8gG13{m>_q8"F^Z4Of$y)NŸ-Y5VamW0)z-93BݦdW[v?r{1ヌamDcrXdbSQ{-$c[{a-qfL&-LқBJw\ܒ T[5^cZCE)zq BNsyY˸th1r°rhi-}hr= p!;ywU$3H??SLe3JB\(p_XuBgT_qPK.21Z ͤQ+-[s#tcKaϊYeSr _hEHaɋ*5/z+bk>1Y*v9p7ۇ4dq@ Vk/ѿvIcPc-wȄZCwKM_ @}Qbohhw7\ιl.U V&|š?Ǝ`M 2GF5wbMg;m,{|e#;.󦇯o1>y'H/ٷ8 OH(>#V@fqQ!yʷY9\_|9:.FXQDN3*ax/ɳcv5n=/T ʩ.v7do6:ќľ !SQB@Sا_܏8"?mu}Na 0ˌ-- ٰ*~m3دOr)CC3^@#Ii(m׈aM| VP)VF'<-W\t ;Ju"N ]Sx3F'C<1Fћ[RG[zKfBm6g%zϵn~9Sߠ:p&n<,ab˱=̏}Z6R;!oizα֌5$1E3咇,:kjXߖiȳNU{77sPHW -|:w31=V~]׀/m`]N1"gbfd +-ST8φ(4,vpXj-͋Uuq,vM#sbˁ/Tbplub~lx9%-we*v{<.=ڼk#ABF>l48B/}f|/{V!K܂ =H|K7_ 8=npو&ӭAgϞ'3%̻9?E5W/icwo^^`#**m9s޿|{c| jK0qЀ .m]=_XzfB[r5u;:u% :ƛ]3Ǎ^_Er^N \']j5oƿ9L2]Eu#Kw` ܦapu^:\ť*.O8pɠP9"B׊اOb(?0DdȻ -`rCF3ߦ smn_ike]U@}T; 1-Ƈ;o'1175ǚNe(}gtn NWaVN.cJ~$jAX&.d7A\Qޕ"s>q.!3Qko?@h:~,_ yx[c[E7 cW)4[OEbTJHּ}jP5x BM*PvTGv{UB4C&a_8YPrFy)PlsWi2]9430ZXꂮLy oȠf0z:jO@rf5$|JMWhenPte'|8 5eNN*3"IRUCKj9ӱ8&=eBL\D}3sTv3t80 g)CqŽk G ;/[ &qz#CApKeυ[Pā0cCS:^aHW®Kf)ps8V0QMlm$8-#!oYc0zhd ~319zc?xdVussg3 C o˴Qy7c'mj_\," 1/h'Q3 ;v$=i |c8)MJթ 90Y2"1)E/rn3y1q\T5)g>>* X; x@)ӹBih/R 슠e#+hzy@:= ;Ww 5i ^!5RP30T$jSBjtALwܳ! ݟ2&ɇ1o#}Lװku6Z bmBؿj(]K:Fo~܉p#z,ov4㷭FܦGYr9tK=ӆ=2ԥ,4ڦ -7L*:s$5 |m!bˠڤʆ-eiJi3T7yS昬ĭL'LIEbK@/F? [,51Ҙ4eZچo&0*c2e F_Cg-`C@Ա?eEn{&g%P@l!@hS R9.U@ŚUP$3} q/~%UpFaّ6<_r;Ky f5M>ރK_{Y3}))k28bl][u"ŅoM`gY&H蓶uhtp'; Eoh_aO>mKt0aׁqINl3/v)J ag8$L[ܫ5cÃ~~[Șu۝'GXʓ7!N:v,}4mIվB$ XE|{ *{}Os/$`uӫ8ůwP Vr穪a%Q\?:e K8ʈEFIak>?U^+{zg/ԷǢ)U~OpaYX\2_65?y,8I["HOb0XY;z=Rm>)ʓ[cpM:~xN煲AgnMmK68px}1SD>K&ۄŗ]]@9G০*]| # >I2|]l`: h^pwrl9[c?AD.Ca{63g-$!KAJIdv#[vBeMzi~y5|*,qqlPX.W%zcX_x33H5ymVX~ԯBFOP/Ł^y;),>z۠m7ov:Cqw YI㈇K1PIMs:E+C2_X~-[%̱|X+=7׊d恴/ &c +> (TMlaLB.& ]{Yœ3 HG}.08j8`1%݇jPʑqA d;r=h-_ Q 7*SŰQk;T ߯MPVڿQA)?>34Uma(t:R^9`.uHiJa% EP-{a/39+=?_C> R_/e\64'7hK3V6OC(P$Gc !aM+KM >oCZ+)-HRxnJOJy.5h10cU{Nz ڶe;y89M6:3Q"$>9O;x'MtH<G3hx!"aԮ/aY=yh`]J -tdb Wy+Y(X~WG 8hVTؓ-'>4NBGnh1=xi`*HZjzf}ޥ;XCٷ׌!hʆjǠ1O\1稺͢fMHfK,/zPf\ش9Zcrs&i܃i[P55x?,TT@o;|,rs<)wz[/~\[.2 ÊH0q{.O̡[?K7?xr j\#BRSp(DdCM3M$x\,ӆy)W?9%!!)QCo:酫c<'`h1C"AχOgQeޗ(< 'r'؃_O=h嫉6Մ[g栽 gxVx]EH_0\NM!D^E# -$+mP8ձ BM[/BGϯ2]9=s[ *YSM`x*y<؄anбu@8:bk#׷&a8zH2=\@ײ=竚oеtΖDQuꏋh#z #=n#qxWyJ$/WakݒSK?qdͫh 4A? nє? xnӇ_G!" e!X)X pʔ?Ib̠{zH.L|3d*Sz!*47 孲Z o:u(8rBoMc)Ǩ:>:F)Z.Sڢ!l}[KLgV}"_ c.&OX3X0,+cȢSa*v[$ Jb~+fTw|+#[j?mn/.\t=WŰpbk"Po *J1Wl#nM/Ky/oAܡoހEF#%JFXouݵX[>^u瑶ejڎAC8z!-mfW+Blk>^\L3 {6lX /iL'V1Wg"q~{0ӭ/˓߯`˽jYa9fPPn-&tJa?ԉdYJr̲6cyۇ |\Uia%g-TO)0vQRZG%>/ɤ2UˌlկEd9!pSI'L0 ?׷_?L̲#;{,iA\*索So8ьzHO/j9'oΐ_ifƬ5~u7Uqce>^| -ExeؚE{[u Rm(,aw!HzubzFQ9LK~,QJQJo̅S~sQ]U;6TSa{B2e=7\mɠ(\9nj|J/9OTu;lD_+RspA \UT[*'dw?2:9#Cx P΁~6,No [@nRV H }iey\!ixk? .bծ ;n0lEOqdT퀦+7_HT'v%U[>ʮ-9G4m;Jȃ.@3VPF>gKN_ 隧,2hj-{Gh80~c SCc{Th$OW'#(D }|cZVю/7W\E6ݳP5Vyw#JwH0a{oceH ßcrtwS{ZI '*0U7x/ˆ*?n92v:2X"[1Jߍ놜m?s BǤ>aב?AJh3@D,RD?NPmk㋿'GKãu6Iqk^yN*.3>mճ[˜;9`F*˽0 k,a֕/E}x9Jc]F| h'mH .Cɯ/juit6q;:%3mk~ *5*x Ql +6@? 3F)~>i'4ԗսGeYŸ/ݿ8f0:<$C6#]՟+6w-%aF5O+oc[Tl{Dau c/ "sf<6/)Q?Lcj](mpR,܏}EV#p:\^6%_tbs-͓Ke8?u 9_x,ԫ9kdA@rN (R_C$Nh9' v1{,Sb, W} xF`V=_ý@Gl##ǟ.gW_췕?(9)BNam-wxdk젺Ps˾/ߔĎRi ,~Az "6^&vGmY&촑8BOzgcƒ-MU̒1i, \ؖH+U2f+l,kM-XwDN]JP1QJKXԖ|CLװRe ^r~2'(dx:f#(t!&݆4~r$?x}/f9bz3Ml֯ϭݞ«X!QmLyd-zDB$NQ"s(A|zK ~%y6P]+,[P`S=f`EZK3,}n8TΐF$ѦbW1r(c x@J6WEC,Rt K&Gk+d|f)W& gP@X*FQfIAEb9N]M MAD!f`6ϠzKlצN[hJѬ kRl0lm5}nݕ"uk72xc3[ivޱb{%KjnՅ ZU |&7&/er ʻΩ[ϧ?1=dO[4gj$N]iqkeo0쾛{Y&fzdS&L0n-\]jny~4{4bH5 (~v^Q}7I`s\/͖ wo%n ތIlA= v4*Pkt\k74:dtWTԺޤ9h07FشvWp ֊'f4P}pv|jG?L-k]{l0zg= y6qa~f>~Of:0(V +|M aBz tX u,s2QӇa䗺tRoRe&0ީH[bZ8#A͑R,W&&g7#q^Mj@R&9U!dkX1B;s5lL\$OLj#= CK蹛դ*͛91<57]Oþ+td,' ]F~_MIhJ W|9)UC_!XJP̺Lmʶuٮ7D|^ V"jASE]F 6vS E ~5g@.v~̎%JkIqCP=GrӾBoف'{bY̍u ;7t̔y==u>PF龗 {B`IhRg=O4ηA^aT@q2OUPR`{,ZgN.h4Wą$F8Kk_ƽ8Ͽa0Qha4l $PʰBꦰ.Vz@ХhM <P eTa.0`д@KGL<&=b!H>Iy-OAgZUy(xR}J^rP+tL~ă?Uk,MP<λN[׷[3P7~?FI<0`2S3^嗣10+?:'ӌ$zApI ?cI`<#m#pnLQ}" SBgAnK|pZ A X5!sj ~J1>C~61q]7~CGהX &PMxlWÚmmBю:wV>{E +LXZ?H=yPh{\-+,I͠RD1xFU$?s;^~_XEU.H0kD"tLr Ha47_|v=wCu-^BrfT7#N},L ? Xal7EY>Is'*Nz+WFC*dv`A.QԩЅһ`剨ppk<n*ZLBr ˢd2񗶊NNmC3tHlyzzd^'^\ 9Z>\\gvnyPyliXv& e.x{,GCu+0?麶қ¿yy-dܥ9Jnb)?8x?6Y6mտ#6a@V`x\>6W{"ϰ=\M86Z? Ir,ɠJ'P-Q nam\;`Oʲ|dӞ].Pô:!Pw?f>$q矹1a^TkuhǞImRN.+UB5;]-ȮP7O&p`hE7EP} >K~:OF#"9uS lX_/G I)9wvS{*^Ut$Ϟg DpGAm"7̠m ز-m  s*l qP$H^#G42îE`i ΈL4lܾ}?oul0s\Y2vAY!w][)4o]>\$آw/){1YKPSO٭7;{=a,lsh$%W+A2ĝ0 wF܏94kei_ُK *-÷2x #*{aњe9Q%6+-Ppp>ZBmCA贕j f)b&cr`T=RH\Pr+t帡 ]YцBбòS=tmiY0"Dw5lGoeY 솹d8+= /Sg$Q29vCzZ]?}hnSN8Sڦ XZDÿ&މ8R aOd#!C"^H }t*/iXx؅2$: N`WVJ74I>cŒ/ &.ReNòJ^g8kյANl6SbLgoq+ ?th! BlwMPt= ɼ?d_E  ^$,ry`€ }vk֪ 66hc` ַ;0wYڻ(n䕁4NQ* ѱ/~{kNl^Ov7DǀY,sQ8. {넡bLLX %fK_ԌMqs<8GG~YnâKKz "6 n@ nmRҥ.?>I]%P$?`}CB^ȹGg÷EEU8|=fܢzrhlY9RA|:RfZ-, QVuH0 >](ʽv/bHtd[ z|s&S?NvO;Y?A$NH0 s rc9\#V+Fm=#cfܛ,c19s16=|:Xu%6FdϨGh^o"z놢/>k -jZIʌU/~ё:au:*3m|+2]ʉޔU:[YUG:ٸCن-esj$|~/UW'O3 }͘x{6ETp6 nuX^h$9g?e0#61%z\x}㇤xv^.6gBKЋFSiZV~mD G*s̲[|±8ݷY+se{)w7UVUj^ȇ5 #P9iUI!@.оn(]#7Vn lC[ieFOgc ։vCor^haubn9H47 CiO.RҢ+Yk$*ɣŞ4rlW=|Cj}4KL\[RW˽;dE*b3G}X^ݼ9a3f!Dt_:F͡cJH6N ?2~I,\}P܃~*C%`Eh^o֘yK|&|;RMg0y xp~E4v+NIZ79vPnaun(DZ&Yy >ˌ|BdhBwGؒp( V)]xU~ c2dXU`V2f(ٓ:_ϫ勱kcU :ŒM)IFh깅2pYN`~['QLbz]ų[!u%=)ZKB 33'?l_Y4';urӈG+.betw()v!}73ǢZXUJ #6U~am`R+SȆ<_#k`eh+~vI27dNAAm[ՠa>tecCBЮ&|J} kj/AOћP1u >\v[VIض?9AN\Pr{('s?绑P~Κ~ Ï AݮFo[\ې<@d3P/o\BWԓ잺Æ㛁sOՀxp8aRtU AeXxR ̋qһ )?C1ofQвs:oxgzXʥL\dy Zt-Db w_.$U\NTṈI_LcҶ7Aogid_\2ku+Wҳ$Z|eԔn#nA_^ ޿ m~QjNNn^[h?hه{3\ Ҁ죟<#I|7̡ʗXJ{d|| T!vu$z' iB瞽b e7jǧ(z 6VKPrY9sXNO`=Ѱ <@n=x`b\* ?!Q\f3Jg?T!+MMguR[KNSlP#|?rU >"{6fS׆Tk0dj{Տ+Zwb0u 6`{fj!ϱ9ҍs$(Ixp G/7&KH>0>8|グ;Ϩ~vߗ طI ǦoIi4$OBE枚uR.SD91{2WIoS⠛VKjJ3ȇWߏJC]0,9R *uMke@ǼmZ*#._ߦKOY+?To/L7v92DtΣ8ȩ{V_ROױKo'kh(a8_ҰGX2*7 C({w`_ڝ,p5֠žޥWɝllհ$oe#яPAMmM`䛠-Hal*)ky>a[ wDxEr&J;@<[7b"g{JB5B}r5'@k0dܽmk=:g(*Nl=9~zK(3#pBE++@'ԁ8opjsa۹sgj -JO&^W}Kg~o9 HMňٰLֿ[a;$VpkjjUχ[8pDͨyGVG+KǷqJE k3ӅTi&r!co]&avSuKrAȺN%K IR!L;*NQ6+r2XwZ3kqwt!FL1ִ3St8yk&'/͂g>ROq)>Մi )`@kXId_!7k跗9ÿNU qUXǒ ̞5`0;mm>2ٷ ;ZGbKKR@p #8'7kXiصM(O="IΎbIdduHj[5~s5dX={z?3~XN jPdJ<,ڐ~{> ׽4 ޣ%b_h1Ɯ{^Z[~'U0 Rz`%1ВZn8!w!X/SȮ `wGN?o 4K5bOâA,W6!dce^,1؃{Ҫd=c.V&f 1e޻fPcI;+PyZQ^TB&toN6-GT`;qb{G6[9uW1~Dz졫"5:cվ !lsx~TAI h ?w_  q?3/hӹz kҙdر8X󈯚;&g?6Cyj*P߾Q=3E{ӠuNm$P^.U (@׹'"cd{eT6Ow4h ~x", Vʯ.N ;4c#uE,n{5?b88]gdJڧa4 V`ի$+-}ԭyt&KիΗ;Ehb=J}L1?tE*ngb5Ag$%V}Xt_er>Ud)}NQ L: PEtTg. 9k]0F *9!lAZצTHww3ɴ`=5$0sDe@,,Dz zvYw9DR~a4Vx~#c ֠cA?6~E e-d@U0ȾhfZ WBv;f? Ŏ[^:1OKŅCQ3Tjhhmdt !5C6jT׋e@ m_GD>O@T$Oډq̎uXV=wS.@ZO.C 1b[MwZ3!.=UFW]} }bWLo|r"*X{ߌ$}U}A/+He{v colan{$M9%L鴖9uгb9uiUo WxR=yg% GaO"|58*skh6+.$5Afoh?zMt=w/vAXT| z$i$X i/,!X~cP-&}zvEez@ןB1WsdE}>C~O_Ul~!wJnl@KCv :W*U!Z qmOPqzpÄ NqAwit 8hϰ}T&=v-ڼ܂)O|/LCOqPjl jKIexM0ju4$*P=>FuV*) O\LWhre wsBw3d$랾,J#1bF 4sa ᗒ]Vu 4 [=\2ΙCn[i X^~+ .Ac .YO1 BYԤƘU ]ItD ΊPU MV mX M1Զ A7rk-5I+@ӌa$_4pNBW=uYcv~|duh wS)1nA^he0''4;]ntz{aWlyUv f`޺ҘfښYg]ylULwz5# ju sW~2:C<,4# 3Ф|;zf2#5}mʓ"05{BA)ֽ_¦ɼ>q &SSbfzZ 3?g_"T0Ҟ; s9w ÒJ][Kxa]Vַgo/vA}8S8?0-Jx¦!>Y1:HꯖyvdȽ 4C#E%Y(nɸ"FB!E@80 /N=^Y kR,冡4x}6Djd[f,AD 5TBӭbz,Զ+̼/f]#rϯؗ?$'@ғ6MehT4ԇoZ8X,%e99 éS$[ǯb`5R!Ms6M,rs/oFLKB"WzP1{m|rb-?6`&~Xzz܄۩tHRpRGi). C+UXrY $"0BLr(M|CBMp=R˽E9]ڬ$؜4+*C4P݉knn}:Nj!3ä@,sxlt'FgnH5,[~X~/p  5hu?mW0%R7-C<NJ (eqhCx>etSe]6ِ~N  wh 3*aݓ򉕤X=yN~o"YU*c'F_M#1r)*a< ڌn&}z1~eޫh# !7bgZ5"U4.8>շg~6#7^AJUV,Or4~ڑ(1S_J }. sŽ|ϏO@s˴g ȽrZ">@{buH}Ags_pDbr?q\xz9釓 #6Zy=I5AHLT 9r^t=yݵi?3@l~ӵ`֧ijwi,3vUF,XkL6`Q)[,G^'j'7W49]lJ[ՂE 7!_X1_ݯ#u휆V'Ot_ߡۦS(1C)rSLUz/*>Ԁش(tM:nZ(bȷ\4?c~}I4\&Kbgܒ<Ԉ#˱\U2ۤȎA#qǬX(; ku2gЩ6Q(VX+s ˂`KBl5JFmMtEAgvAo.=E{ż<&$]~9F$[u YlJfO@7mQ}taEme1v-xNf}psHde4^ CD3tl+䗎#@0i Qb _p딘ShiJ$LJV^B(v];|n[07[l,4w-@V#,O`Yy*.̘)d EٞA%DvOM}T+&ZQVlPm~-# Kfs{O$8~5+Pn(ci(T ,C+z];H?}nv:eZ@rw:O=?4&%`|wx|k86zfnJ@֞pH&lEqxOKE TVolbZsm~вRvP%Ļv~]sV8[croSSdΡX#Hf:";Dڃ~l=_Wo3?BF#8Yu)2r= -H !cؚGȉW‹8YKòśc~Hz2v^b{Ɋ55{&7+#^؝_~J)Z^|q"nʓRU|R)#^xծ'@[%,pԹ!4K8zv(+Zb/噙;XJʺЍGjsZĄgC~GE--2O!mgP}7G|UGóȱA[Hv #DsMxWa_!V|%lsJ_Dwm("MXr^({RE'.ta/"18-xT,tdPjbHG暌z[3Pːj[_pS{ W*%T:)RPRPf5j/=In=}Y/A jlgu`ZWءDl񜣃!^oTnv(x歴 ɖdTFTk'6bިR\&2?SXgF>F߾YKG$p Kʓ{ izEBIw7c䣺 _lٞ`jn5Iga  )y(ZY3葱?+]ۺY0eKRo1v%/?3y?1 u7Z9ї{_g, K'n@CTeUq aT?j"^}۫ šӵe4BV-4P}?V.yGC߸UZ;T޵wg*}2TN$JZ}f$-Q%P}m-)j-iੂQF$Uf:" v:z큡_=.ƳeZ6Dn-)xKeV+G}xix9D݋ī98DsGۉI/WIDM;UDJx3x*yG^,b?~avr\u;8EPx|p#^UP Owp[П&9UHz"re/LlpKC9:EBjVK̯ƫrn6#Y9)1oϲŖ73ae#jGwS* &2U]" U'lQ+%ްX+x?i2hF†%?*g \R`AW'V!DڀT7,?t'Rq/fic'۷+4SD q,ma-~?|EhLUUo[jpHf/k|4CKsK!/77f;C'/?qfG珵s bSDr$ T/3\ ][qDaB=6hD( x KU+iY<"fh m`s"zJ OPE[hJhҔ0 |7U뫃uƟĒ?Kc >Vȴ c-]%&K 4ΌqC1g+MX{n%5g,9y+HVܭsZ:-``Y>w:Øَ-LR+lqnji-ﱎ|U$=(ry֦{`] 1%}l}u |V3 uSj@ WbM_*xoFC Iד.yN~-ar0` lߌ㢟-εG+7c]9|p!.^>^9>w$ b>NdG5|3%/L rZS oq+ScԭaZݞtvӧP~*=l&ۇw|>jyx:2o+쭋mVPˀCbP)ƀ%Ƽ \=:fY;?^.5`.l˼ޱ`9Pue+ =b]g֩P&u&;F?ۍUݿYvX`m.Fd#VޤFu oLF!o0Dݣ.>2j@4ױ_wG&[5@|ݐstL>9>H : = JNan$*%',7Oሀe f._59mo?MWgyHױpxcuON gִvf}z?`Qr[uoqyD?$ D_LSπ:?@Xฯ"%obA5튟Г_e:^,}`qi\#|7Aʈ$"e$d$"[vfJ{x{dl߾?|z\9k_G'`Wcv-$ws2C5L%ƾ'tjo SXm|0jӤc=XR3OiE@GIyM^2d|!f k"l+g$ֵ+cH,&KrZl 0!>p~Tw[CW2b|3y' -:)%e BV.shX _@.8IxՈU鉘=nMt4^0Z! [; ~%/?FKǭfֈþf Q9XT(H{~OEM]!k$\眬gg;j!mpՄ]7JT:BmKPu1D떬,Oa{6" G4&ͩ[gzME.~B/}}swW'pP(E2 @%h=h(Tl< 7ir[r ՜'}$Ѿ y-w!XZiol>~ sˆ .4WBc2c#/_@{50ޫW$2a@c3tt|@%ħ*o-mnEo80lvi"ČX_#գ|7xm_!| 7x4ġD7tg _,V;fX\:" FSi[~]WFir62H[弊Yɍ ;̯1Z|e b{YC k)qꚢWlq~" vqJCz/ŝs:JvvhO<ˠ9Q969M+`ύm?XxA׏Fp Wuz|dQ 5Oxȷ,1}zx~rJ&~y܅NESiae2A}N}46Ͽ-Hn;?ل yխic1~;Fq/k='nϲƳ0w;sܶy7Mw6g=A1.< tӏ~E@QQp 6'94u)s6bHم=s޹bdi-_6oͻG*RfZ(6Or2j';ηl'|g:]OSRZ"X>Կ/=i,П]f~&/xtmYq|̋9A90yĹ']eh3b\g@r,>kpRD2Y%NJdʖ{#bss{SمuFv`uai8]DE m]\VAr Ծ69oP+WDjKҫXZ[?Ԉ '^[Vq՘᥆$]y*ǭ&Z,~clu1Y; `b ;NSΣmVp񐂱?ڗ$_!KfR0_s2x>9sG&iKJ'a [Mv ޳;>e^u(`ܨ4c k+yZXjʀ$r@coAGw԰(i}crW܏1׵@}>UiP!}>anVWur A,O6K'"FF+[:XI&2ՋF)eaR=+>.$Giׅ>#뾣t{~T櫩fvưUEe hO!Xu2{1a =N> mstnc^\hd^~z~zV"Mf=LSup)$ )]fĤ@וyWU"TYxZsyb0.23Xz|,&~WL1;/c'SPyQ>sC}o"yl gWxËI?Οi^ZFr:'%^*QJiv*3xY=x>$c ͏2؟[S8iZ xfkMZ ϟ=RY0縺wR{Jqf rwH}rGv]q?谿"'q k?9D; Sm;&pn9ll<--cmR#$9Enc?ݥ/!8tSA"bG H\Z-9bXX_`.7c_X3YX%toC] XN _m X4EoW'M3owf, Hk>bg^թ \8J?ˮ _9a86T>Mu#| ,nߡ"Yq8vʗ9mhi8|㮞kxn_]]$^TCL~s <29Ǝ@ӋJ `ҿo 9L&2 o?Q6ԉ[33Yb>ґlmPq\R!l%O kRA_l0^26}埥YsČ Xp#ifmtNUXF6Ǣs:I0̌y1vK/+jh] ڦ^] ;E'1F&NOÍ}%@5)&Zbv]'OCR=5IH+=s=4P,w2h}%yJC ula$@ho!ths[w,o$/H6la70$i4?r8gz!,޻h 1X.Aaص #9i:k$ZqFO'(89W=Wuk,fXs*x݋a.I&l_KmLq-Ha]&@"fě!1W_YQ3n>{awMQp?hj賵0Njy\/q|C^yBac l%J8m1CPbW Yؾpg:kMWCZ(XvГ[`-^fZ=O@$ ז ƘjuukA8ppQ?ݱQPƦG62R "0c S= Ҽ'u0bn9e ^8S5 ]] t Xl2uh+bR_BAտz)ȼ kOcj$mJ>BQ,']c"0y\,/>S ά<$1ʽI0}y{FzVU:*iy[9X0(vB4ɧ.b/'h>1,ؒ<_ {ɓmv&$iIgkq^ 1]F7;X^C:$7=X2g17ݛN <R|ҰF.u T>Љ#8x]^)ڧ7nB;XoG 4~ଣFyيl&uMZ ʊ/swñEp\z<ľj/=yD% Io,L i+2ޏ dծ1-o!f3!lXm`!'b[+oHCwY \/dϟÄkA:jQeu*WPp&oݓEOn`^eKXVW3::%%KjPwi,x | ٿ+Bd٣1sD( a88՟ [!eq7ux{-T* gXxmhzȩ9B77iƱqp)( r/ ߛT$5t1LEpZd9~Kg߲e`G*ŋv_Ɗљ8U7}~HS nbbNkLHl9q-ݚҔ+gn6 9XνDs B얺y +/[0@kwPjJBeK&{fm¾&T?o<\)nA\/XR;iYtGbY絈ydY)_oIU~»NTf^ڗJR$yks?=Ftaƌ[6.眒3}V6ms{Qgj. #OU^mf =j:%K=FOcp] M6#-Kt^~qjȔ[CmjpO@ecށ"&L&b <>nzRI@/eٴ4kzMPa[#<ߖ(_N2̹C̓g>x9c>\3ʖ t?o7plJo^vp-zk8fYAlR߇0׿6O>zvZʤ LqfUk?oS>C.S0iuf5FW}=բ'MS7QY\nICta{6h{daח[t\`aAàJRaDQ f˕,*=T)It!)2 GTB0`@҉1GÛH> sЕĭXr:u/жB9۩0"LJ 3'i4Asj[l3s3H(<qH9$}qbK !=,9kPJ5s ^o>$D|WQV@z)Jȉ>HtQo< %B%q?}^2 x{5nAWW˰2yxU]zOϺRe84V/M] Z!b̾jJ7VaSdI`-E ߤoGbnHG$3@+ZiXT#~id|S^1C~SPp/ZhUWo|0݄u(6<+ʱLoc)ZPt2zf|+ïǡ詂~fh2+-ZT6 ٨xưCme3P/T2AiԈ,K'$rP.C3`dX-KӠ~?.*:wbMVTdG]ƋVlIjk;U!yql@W4F[M ]0aUN| 3ܿOc ?,$9ۄ\yX@!131R`ҁ7;Xz%[m>)% kؘmYLEuMzX"ij3)'r,:>dbci$s*3k)"mѫQbAeۗsa9!f_^ˊu5n2 X3w+Y[mU[gnFػ!(|YYDsp0`3jN zp"5K-.X? D¶og8ogT >/xpGT$#i;;x{^Qb }gp§N0&ռ5& PvLVNT[VBq6|lCm.<Ё8Fo67;?cI0ϖz^~lZ<:i)W;Mw'S$7L+zI%H7k#T1\6KghE8$vjVhLV>.㥯בsv1".nsRȩih>&h0ҏAZy u9{ke]9d0v%6%~Lwoۺo3$<6^,b6|qiEij7_{ٟI_Ŭy14Mo G4k+N+I<1TTrn7iR~UwNzG!%V]-2;;_2ز0ݰ߻ __zAaCdIo jֻ M bYz6cYYboGB&&^H&sAmw.m(r%ĵdڒG}|cj.,WJS&ѯ]\4VuA31JbKɷ@آn0y1S7Ď@MT/[#A I.ͩsfx7j?<gy8D~)Aƅ_#gŸ7Z`f9/^:idj’@ 7uy d:d*[L1C)9MCВ"|H0?V( =үt<`Ď< ġɐg/1|v;%) *aqD;B8.\Ng3YCk)NM:(ƛ˥[$Pc]psvYӚCMBEWLg[8(Q B9e~?7"4hp*OvߏCړ7(pYqsx:d}Osǰ~3cN2.,ֽƪ)O.b?lNcOX~qgl=4W*u)V5!F%cżLl[(*لŎ BXYi˫49Lkot3z.cOt\ԂQTğKaOqV 좜f@bs‸5qyΆc]Z/]Xl=N2 # >ݐTx!7doEC7uqPX2Չ.[[a^|!-n"ae\q|7l(u䕓?9'JbQ6卆蝭KK> +̠>Y.=PM3K>߷U&6I RfЍw;w$$ VW%cP腏]&BAѵ U,y9 ެ ުWqb-ϭ}e+/g%@݊3Zla%5=-gI[*#| sc y$ JO@۵Pezu܆)ӕ;\Fy.hx'X B15[W3|A #ܴ'0dUjDE`"6w "y0_!vi a pYl>{_/{K7BbiqHR*-IBՖr/sHM$^NC1_;I!je:c! ۦ`Ғ:;`{ccyBaT\ze~M~k:<'"%k^U |ء!W.;(2ӖI}Vljwbɱ.'d4*󽾇Ԗf9X',\-G,}C+iBT!(wqh]5mz>lLH*c1Mu|}̱=ϾAOi1Ħb?Ycʒ9{H##Jes3t8l~H%c._ID;P'T Lpi{#'?k ITҎ`wq l>~i#"3ՋkkeT`,9]G{D(fFžY JM_ lUrR dr擱/夎ml!pW>Bmiq ;û;{9e=G(0W?*8&I?s Ǔhop)?|vrΙFnşWMjKa'{l3t( s| 6AflPٜkxRm9c8_5ƖuZcnX8j6M XqՏu|ݧ{RpVX[jѵ<`;"-~u%ssGDc hP4f/EYW =3P_b@U(ϱnAs 6şзil욜d0(G<#~ԭϿq=Ti Y L9u1M TUzN %Tl&dLw,{Ȟq<: Qgn'0㉮/g`J>Hy rH`1~y tDrGoĿbta8tïj)GFr-\ĉhϑbYZ)a^]OOM>FƙZ:37%d$p,Ru,I^q*'ǔu{/*WaOKp-f7] }.DZlՕ_Eێīky9G8EpXG{O1)3cۗ 8i4|N^%Wܰ<VO^Scq~aWgp.Swu9.EiE%FHiUviΚ=cv2gR/z1;pOݛ֤ZKފ޻태?Dn>gbk=) wn)BdPض7 1l»rbkVk^SJ;/~ bN8Ѧ.="ʋ܏`@.1Lt|tH Y-Fˉz9.A, e=XgzBHzLĠT1PUpű n\43z^Py\b!j^sMdTq3s'V '$X.t T8DcW0^mrl"X%ϢK=HBb@Q51Qp <A;8y3v:K ,cާ_ so| ǻ:_|\|z m)UgAG\ׄ 3V8(˕-پK l?Zզ2ލv ~8fTJӄotr6X)zuvr}Iay1Fr7>cWTv^ \~źz_ 6xI$<hz owBvE+gB?1PIOsښClF1q},֞^ ɟ8~+x)P}'x)Ŷh @(4J_Ǯǫ;nۨrj=aA[tc/͢:undBsK߫@ ɤ %%>kG<|jaGrʫ9@ӄ* ?hewȋf3NHAFJ%L]|j?=P;$4- Ѧ@ߵNNyM R?PYCP}ߎyߟ_P(f4O|ڸ+Q@ə}1m%ՑшPyř#:5`̉$P6݃nX(Pk' _m=2t} ajOUHrŁOOZr}P"Fu ʏЏh,>6@˯!eJ!4ǷԬ\xjv؂}9+O>"\q-fvnuN'`xE"ҕYhFPBݛXsWe9w? /\Fc$?G*m&oӖNasCݳPA46(T%dRgRbxwغ^-=+G1j*Cz11@@IWh,_ʛCr~r$V߹j/ttIW;T[s,;=HZτo&@;Ȥs W ), 1:A"T|3)qo}7k߱k7wh,3gIcEZ;>] oN_XaY+.uԷ7}BWMpد#?i܎)c2nI,3>X8Q"ڀyc(,5_Ňd˕1D߈I9tX:$ YizK5C/=LX[[Ċ]`3VX:'8·msL@hq()ֱ,g C!Sd)FOL` m(ѽs3P$nCC5Вy?'/ai/_uyEZ[߾bK5Vfo@Ʋ~ Єf]` UjyISt^Ng_/tyH) C yXhA4x99u- "_R@bƒ`8o1y 0Kz:K< ug756qɹ*68iϱeJڑ"Sޥڈ]_/8̨ԜWcm1\}I )rpS.1aL|wFbkȫ>I6A1VM`~9?٣?>|8lqZ(#(lM-UF6>LsA}U;PC2[ԙ3⤸V܎;[I!],ixILjxQ-izQkn-3]>j/~׵V'Eڟy:l C~5F8Rz9U =,saK&:eI [y cb8|"7\ysHO)ܫ/-E6݁_0S!.3%7p}*V9b=|}gggL$2D|pSï܊c IPA 4hTzgP%m/wpvkgT/7؇? ~+TK hMޜ{v'p:O9F/nN ]M9obZB]GG<=.=fl iؔU_]A_$(fLIg13zvt?|3X+Nb'n5"6'&e;!/O5ʂ?A 󇲠Z֨4ߤ,jsLG{ԑأ*&s).,e'_M(_Fj vyEFw-r_YJ=Gg#7]jG% ?} coXKeM˜B8֊V 5{&\~<sA摥y=g0}Ocؘlh}b/F0;-/g2Gnb|f7##*9L#9Y5#v%>,گ'?<Ödch-9>^:ÇO}ƈ7zBY1|H?Nί˓ؖ8y&*uqXh)!#1>S8|K>@/(V?g|VZ^8cGLn,~#^ icyoJUO-fm`6,t|m {2IL;R}tu. G{6>ᔸǕ.svlύ?*ІGB5Gȫv`ӌ|i1n,#>:u8xE |{)FIh"Q[nzW֛XA}iE"G^p-b^(`V?|=5'㚡坊&5pD&mn`u[k@}z0߼eB:pr&˦?P@C1 5%z)k·Qp ,@A>[E̍6&5PӠ%";Gܠ<K,˂rw!Ұ%zI|~$XOuk(KGEWtSNPCK?j ɺ1h 37db1k!$@XॺkHKiO? vڪ<лkXp \x+?X`u1#M} = UO6Ah;6mO)5c=߾U6xaѓXҺ8ra r%or1kVf0xs݊BiuW!#Wonc3U9tQ3uH^w9T WbOF{XD+3,Ci ĉ{[, Z = ]6EGhO;q=+M55(wG=*Jl?gI=6)_m[v*U'Yak>5Fq\~H9:?l\M#\Øc<^)vԘE%<MR@ C1>;Cwwt%8ۋ}I'0Jb蘋B)fKpUao79Svl$s!Su|8TZ,!uȃ'dDv\ l|I ._Hې6F ᐧ+o+ٷ F_`3,%l%_JUi!ļ ^w Ɛge[ 뵬Bsh53$t>ui`'u}oB89ɠFE>tU } ٽeƥr)R3(:yIFEBz~Ѡ **фVӭP*{(MVނb@`ȝ qoCinEN>4 s$.@;qȌv4-١ӱ́5I̥ g|ڇ<)$?Zaj :TIWb*Ua(t1ΦB\e>xYw~vߟdPeUNsSBܕ\u<?'nZ><i cOmd3H ˗vae# }9w"\xa;'#au׆)(Fz$Nk'F<&ytiX*`e'/hrJ3pc>>w\4=եfITbX`I,q"ܸ\%fT5#GEʟ,r/lìȻJEX[RTsx2 k#E= i+6]8hʙ&&æf7cgxAN_KŬy[@:բ*qb>%X6a&gu|qlb)եȒM[ʳ3!xMiiM`-6291->uuH)C{zĜp~\ɢo=V%z~H; CN`D jN=^J$c1W`hM^kBgR.ܢ 08 N^NM |$? mofY@dZPE0ix5!Hgײezk[Pѷ!F6luQwC\< HS]ל@]AATZSxҝ /|iY8 $ 9 !H)7=;0^c;}a'm!ԓobvFs y9M?CEM4On"Ծ}Z oA[۴(a(K N@dp%)6Q0Rƪ^.ثs:6G˸ʔc]j$6{rAJ;[urig6w# l\N?{B' DT@Ehj}JjǢ WiԸSٿzy>f ׿N>{WsD=Xk&ت~h&-מcU8ك$]܏2c'Bi}| Vz%`f%oj8d4 x^>_T4,& %ǫ,g@GhHI, leD>pixLEq0rqz\. ڍ:zaIfٍؿ82UL`;ţ:XCy|?@kAqyPHeϾ~bML"OYd 6<;ceOXŧ4F[0g,#[UKg+pܗ؇wjc݋/ŸXl1{s¶`ptu?Be,6&m%j>w(Cw>(^֣I^^~ws/Zrqw>~ -9Eiۿ7iϺ[Pj.÷Xy|F8Xzd96}[  UBR侮4n~cC NC! ^Z8|̽wWßo1UVZrv* eNC<_g o A-i7 ۗ~uQV푁ֻSocW/'oJE ,'͙p}!{V !se0|:~[WBM$ȱ|;+^YyȴTa_30uYV $m|.|۳PNB36qVsߙXOO'a4 Ƌ(cdaxPMgb2xF†scZCJYC>JgPa3jֱۙ~(?i iyeݷ:D>t02ьP"j1=dčXj.6?T lʗH4{momAO!wc^'LqpszU$Pc݇Da͌?v>;BS+JU;z~IVws*t߲2ҎWooaSO=mWryV&ig+m++;ooYw~^?àN7u1H1?%/flҀ>~.ss@~ ~n|',_K˂ sVFis t8V'ڇ'=7N>|G܂$[W^@5וcl< ~t5LZ?G6*=}qzYec}ξ.mB4_/'S։ bmp:yr;+ nKcu!X/vt=TZ=QF,o53e`LnyBL;W_PaפX+LxeIaRx8?}(3> + %1-b?fZv(d11NkE{ SlxTCa9nO}4%eQ yOa׍nzXB4$Vkø~q_lf{-2AZ:yv5-.[ҹ;[^+߀PkiP>MP-{XB?) }6h; v*98Us\[۾Z,ޜ8[hB0Lbw*VQ{<1ǟǥn4]'qqq񾘿>H( Ĩ!ĘGJ,^8^5+Ifhk*i{!^^\˪#S%ZÂ_ɥ#j]zV$$]qXab6Ma9|o6Xhx F&s4C.p ƥC|:YIbxXf_!H y^ cWE 39. =ʑnRU%ӇkjJppdLTm=!P~6C}1n;Mpυӟ76BgI|T#Qj_| S:LЗzqzUM)[6st@bEv_-+&"HQ`eOK{TބyBrLӎ*DqxRAC3_B04[~_foLtXRi?l y$t0+*A4,Ҽ{F>o>*ܛye#Yw 19jO5`Bouƒv?MM.sW@HPJ^a7SŠR({z皪">tiV)/ṽ~n'1Dy" 3&OI.APn›|70w=7P?HX.,m?] DR="ЋWAKs4m g,xVٳZ`hh9*ti 57b97`ɧaYZYF&_ǿ{9w @~SMg/N:_~\ ɠ` 57& ["B4|oJm yFuCb|@ۿ`|, 1+? %1EuH+ ^̈́oМ:[== ߕb'J-A8ox$$~x$=q;<5enr]/0|u2/]?EOzsIB۟e() z]FBSn0l}dy|#akgȑ`5M\RbӦ[jGϨР,װ^@TVT м i(uN| }Qu/=נ'0RPJn9 R{[~ʠP3ٿLpdsB*+Wka/WRVN? AfZyV"|؛,m8ɼ?P^1WO /8-f!ݧ[ϝw7*`9*st3$@.f$tjZۣ5~\R^:io&Dxuv [n}7J:x2kW5(Vel!}Uǜv UaL d hP K;t09B6&轰 yM^ QQT8-BmG"P-:3Bsk=n\Rs4}XFmcF,G^DYJi9p?x[F? b+=pD1>缾^ .lt^tR't- hyR !< sAc_1\J) ͙зg[tﬠxl&ϛ=I8~n2߁" ҟۜ&a)ѴmjG AuO߿CP]%^h9l뙳PQ:7z \YBȶ_ᩜvD$\ d!MWc찊!Z$7W2aD=P%UsC輑X;!x){|h(#\:R:ɻb@a0935mH1G˫±0C__3f^0xl`MK)ɷI=5 ~joܠ`֮#UKPXENn:#f[b!K%ِ.ucC BGm_GK3@K;'|s6ē1d5B}i;ObjP5H>h/*61WOUR 2ebLZgvМCBǢ)Lr&d!ژjJ`cUscs~O3Tw\CױPY]z,$=ӤEf59cezbK< /`ά}l %X/)TF߂8?x-1{[*\:1u\>:}nݱmMy櫤?ۗwREz>Ƽ;]˛HhkMw@Y_-Ip\Wis mT;p:\JJm>Z(aǔEatP^Qb只O \V;;SNz{ǔoM?,x[u"/W N#} +6p: E7|uK8(9 2ΔcsS 1K.څ<Ljn%)(1uQ,Zx^6 GơD0#=,-o2z.|h<{c1,u1tzERH^\rĮ/ iT-}Ćoo SG}ߘמc ˥o15. 9h2\H㇄~S0cZi2F7 Fya?/Cʕ?PcC'u<.CeCPO;֟Z<Ȇ~!?Mia|Ó_0B ~~JfAFO`yjhHm%bLlNLتaQeul}1Mg g|UdƒsER:<,`Fׁ DfNr"4 Dzb=SHШÓg&G]:O}/$'=NcY{i@w}6*t2E LYwi p8760/}CvYf@2Og a>l(,3-A y&3R ;uȸ+LтSc+Z)錠Q>x>&\CkɵoġMb?g+{ce-Y.H_»gC5UPG# NUh6 Zg܃kb"!qH\tOa/v{\dw~35ޥ1nN6pZw6,#7ER梽E!+3X D6#s퐺nTCZW`S>`)? sĂ=`VS ˈmMdSV)ES`g/{[G ~Pq'?lnBI|~ Ug;L>Fϭ>JrfHJ'g oѡʄj7gho|Ɂ`/İݱ|rvJXzv)キ0OӱfNmJ=,|p塾΅gA_uPxq) ;ڬ8x$JncõX*][iwQhY.}FvXztK~d =3voB*4Y'>C{5K Ne(1Eg+X2fg:0bTE7Ԙꢺrp#5 ? B>A2E[%q)9l|`5|%IтC3C%d/} V|+EngF:9{u=¼yAGA=+PN#{&UѯVS\9)6TM;5^\qw`dd$O'$\z6`Ǥ6f?׀u+g|W>rsdnz`\&OJ_bjKC[ULb=?e 6@yxwX_1/_@FlrΕCfY`W&mL)#ՒVgMj12;܈9{9e䞏Z;ۀ:(;}ثث,WvqHLwүp}ۆ-x{ 16Bm/j #1wu+Y=fm~l%xp7)IlNl߃C]/ bd%jȧgU=jAK(Yt"y?omáJcKΔױ-R:Cht ֻ=V gxNxlrʩvJ_v| \,6sǼ@#_"7n+ynr| fĵ3M濱+}/+҈^ Jr[Nl}:<=vh[~̄nQizK*eq*'(UA',v[%c-̭g)ܐcbS$߰MGzƲUԲ_fD!= \ض ovӄf/Ul%z>[y*|)n5ofp''zf;g34 `G8%/86 rx6C5v:˥gy/ɺ鯬vރ5rZ|8Lu3,e8%yǝ]8,vc׹lA q(K9 mVg6bo :,OHJځ?U$qq,Y$N#=kL8MZynx\ʚ+[l8qǘ'N^a8ԋSVfkMoQ28X:83d.yՓpk﮿#$eTyoޠƑٯ_ 87r=^ r*rpamP.fO="XC^韍=)den!k\ewěi^%Z´*{ Sp'hLx{VN`nd݆+OZtY dh|V\Oc4EX6.7 JE d>A^%"FqjGDZw4=2YŔK ' fsj jEgޠȜF ,E ]P.!m\Č +[F6cy)]hĦ[ew{icOTsUYrgLCw0x;H}RnAAb7m9u%ʩ÷-T)lmҹ 56E<=ɚQ.o.@ӑӏ*8p)|J/w[aYqyUq%sR d3N Ġ4s/]lhx2>>u+`i`w#TG.Nrd5G !|6Ð_iDn7㰌aU4~I"Ɩ|"'6lg|s& stp8p]i!tiE6ُwx}m@pwF4d[}gOGM 0T ^6L3l:nH~+yQo֞}[+y *ءu{$sCeJEɰ9_X*kp ۿ:+g6~o#{5 }y*Kp;,]+܈ߴx9 s#v"~6KPd"2j}܆<"4#Z$#Јbu r/9, j}1[oLc1j*گstu.9Kϲ0XY}Ϭצ JqM͟T$uIxYC;J.lKܷbyAY,/u:PG/5`2Ucl>M|1M8N;/;M|o+*=1O1⥟*"V?KTc|s&6Ȧ BrXh^au `o܏%v#SFXܠ!J7f'1v%A,9bPu-wUQ k3s|E1oH:n55b9=>ah=(/u7 Ofl9ޚ'Gj+ ^BTpRqc ,~<֗X@+ԁYS#| I5uU*NV qmnc{chTB;F„$QQ ݑ(;>S÷ZS_<;L"uֱw<$.1(tUؙ`mgQ1Rzꞛ<$Zp_^F6'@; vF(?uAms]a&i>h}>-턙t20Uh 쟗xWԼ: ioXNu!>|0hKRbcknoؓRג+c 5fN,.cB/IPp7]̀޷k~X:Vu| !sl^> nqZ"}M`[7/aةz R=c!e\ݍQOEcn˽w#`38 _zn;~ cZTَ;@k ,؉wԁ%Xp"(w v.Pny*K5?b5`e uw uv]ZͫkH?Y <T"{u' .mNaG3zWne uUs;PO4l<6޼:\nZ?c%l|r~};.HJ*^UT r}VFTtlN}iݢ?/QUk6W4.Cs.ggx|hrIwM (|DZFfjV3'VG=>I{bc4z %tgne-R&HuP'<8( Gx0`iU[XLApH"[`׭#Z k6͔Di^GedX,vWzy 8rK1[^,}t:f. biu%~`QNU~z`u.Qغ{/s vŖc{pڻmɹK |`XA΢_o(Z/# .G%Y@Cf>h\|y4]r)U}%ȇ?GIe-ڰrG\Hڇ'5E.Vs]UTݓ15/( fmt';D]#-4E%8-RU*#ɈDe{o޼_q}:ܲ+v#osrjɠRd` 6Z<ŇӔa՞n U}:4(<\7;Q)ס}Eq)dedQvaM#٫$O)yXW杤hhR(qHR-LŀD{~ ;lIf& U1qs%~>lA*̕ ,#aSd?ݑxG'tx`UEnz} S>29 '+AF͎PMk@n ZUwrB,6vA|o6}.hSU=vEzpkҼ+.7ƿ?N}+4;98v0g$ 9߿Xye8Z$=_KSJ?5,/!>|3qH1&o4Va޺*1*]Z~vRC_nl}?~BDHҡ=_gy}=X)Y+g tgrAçЈԸ)"7p0_NɝDyiuo0 &Sy5~& /̧=8{Ɛ`OYEICrpǻr,pB*xrZP*N2}Ě^bÞ&(.Ll+; nY-duϼd_඀ë,T1 qXTiƤlz1ݘM}ޤaWՃX-wBTB7? Bqqafoq< Ļ=э6cI(r$t.`1,ʗ6e $5 EA ⻧}mlTgZƚ$8vS.ȷxGhLƮe)^[XnNr,ILǘq7QLr:q?;lN7=%)"yEOX13~+R lcEQ#X} 5ShgƐ,u/òpI󃦵y٠ǧtYZ,k1=OQ]οBWZUǰ ?NpN{9Fe9֖eh̷EY7_PgX(nʔ{3&O,h!QPdb}9~yR_cDP~ 3znffQX kyF|ֲ4h?P.\B FP&`B[Era0UPRح ==݇/1%<nO6`<ޕERlcr$!]vK̗~:uXFʱ:5)dz3A8]P2^*+:\,uu$DY\# CWVڶ=d{~ -/5d'`nkPkP:`2Y '#= *`H ^<ڈ9D/Rҳס`BI!J cG_Aϋ=ΜD sM3ep.mA?mo-ОM֗o@ 2u*{]To7_.y-$'Z+CNa[2M WĆ@W]8d(d% rQOD?`3zP؏݊ދu Y%ȫrU oAG4 47<ъe1ɷsn`BE`墫QyeƉ%r:Ƈcu6o m J,ѓ*8ٳOwg1k6N ?^;:V%U4ψ~DATV t~(,u UڙNX}imL^EσGApD_X}<\58 brUz 'Qw!Ơ&-sĮ`WFL,y0RφWLŻl<֏qΐc}g ?ݞgGsVe1dGQ}'>sk4g,J_ 1! ҋ2xؠk4k+`` \RIfР/1oI EcIrwO`}%E&2d ܾD 3+:+vi<c Ƌ̰h(alzzC Ƈ/*]~ԉG)[}ۑ`!\+=]S#10{1at]} *V/XbtbF$^ڋo÷g]FxWؖ aT{)rIhFɉP%y5svXeۜ o%ccߺCuAh U~]z·dE_AvUK͹ H*>R*2Tv ԛeUbqTQk?ZA䋬^y+y34>y5=A_hxH@eR&˽u6AƥJ?nw\A6ީC>Fq=~b.u>4iʀT:xڪ,g4?9|&EXeh+d2+e@aێ[t@vvGnC1ߛPRd^2A5ɣ⟝P|g3Fe }$E)tF) ꮐ;}fxB% ƳP 5~U FYA1vsBP{ɀ$6A틖_oj1ޥ~AQ=:I2rʹ;.W7'Q8ݷSjФKla܃Ƌ?O{Ak]ɅK8}cW$o(<vW‚d]w#SL=@:5zg6jjԡ&f7d <86ΙZ2oVR\DŽo1ѩ컝\v"?1 KپDsq $DJOaAK'cɎ6`wL̓sfE啌◷gh;9MTcC}+\icRxMTRg=PC&|&75 뛯\-U 䣦Pr^Ȱky9C8.C/[sj ĢD_{,ЀEL6Pa)e &^ZPPz yr7X7ꞟv.Whi_0GIzFN,…)3o¤+K-3W><1,}cn&prKCtb{/gr8{|lY~Cqp/?1T&1Όyf,)jk]@}oIU/xlx8IL9}ٔ{Hvg8 /T,SARק+-W?Zc7fwr?_'川a\'JovC0fjꐜE]=L8d%10-"c_&MLs-Cs}:hMQ!Q]7z,\x&7!Jj1gt=݈::D@ӫz_P!˘29D=Gև؄qd1>I "CG{1_V$Upi!`Q ,Lqs? '_i3s7DZ Dnv|4i.y՛l8k+~B_v9J_1r98qD@;UwfPD*3yb|n@qk uxܖ ("CЉKyfP\E 8p \˥rSbSnC(u{+ʧ7k o!G1oXy~ ̍VJ=~1}ۦSIhrrL|a/ԇ%ށ'?\9AjFKnI](hJz@_7j:!̔d^r*"F!&11-TI##clr;DGʤTDbzE0zxLi}išl>SQW}$҃F[ (>#h?vԕ܋uמR~V!JlW9vW/bi^?ƓV'Tݏ<e?'̟+T}N8ޤ>q:NRF6wH70ptU_ +R@T f וguNy/Bt#b u}~D4&Q }jL1'jF_U,cHb 6:[?$;M- {MzJ * xLYf=ykGSfBeIq{j!Q&Nd 4(X:%!d*WF@1a', >Za%r3Nˬ Djs6t?e](=| OEavOaOvG1y?LZE߆Ձ6;G"&^UsD+}K CXwgy6J9C w?70SD̈-Յ+nb+i :tQ9 {Z1dҰg#26=t_X|JgD|N]=vXbt荷u⇖_^QWn(0C<'iX]RY-oO& 0궢DGmT+gkieNZ(s*ؕ3=ܚG1fUB6=e|`6xe{~A{ډco 9V)~> Jvۭ"қ>PdC 7:bOr+ s9" ,?CCoo{P?ۢ8埴3dՄ#q#`&wwB]k#Vm˂EB4ÊZ6,v:%+:I} Rh.#QȨ4 Αi!^i | /"=VX'5ymv\]|+';nR^0Rwn60ՂtK,RR3{͛R;V]"3} g@ElLz,׷#+F2ءy[qdj- )0i1w $>c"шs\[u۬2 D+֞:u}CWbi v_?jjguLUMs]4j?B/d"P8 8H]lzذPRp%qO\nK݊ m#V>xC?1U.\)/onJNu-Vr鋗'L <*=Ba`Έc6=\dدxMy+x)J}JH,+t7Os[?C]VBђ0rzHgIĬ9 Z6bP|W@ W *; P|'y#H1Lm 뫆G5t0pUm{>(+xuʩX"נOyhN`}iɭNArqz:B q?c ||&*1`cUN2TpP{pa 4U}JbS 8^SBk| G$keܴ=C#lH%80ө0;x|5 c^t/)$(ȭ;R[hƔlRpE8$J^^TmR 2uOu\q,~7>)%M {w9ݠ{d^R!EX9wuz&P;k"\=,:+yDAcmD-B@LA_|qq Il \¸xCxS,6Q( }z0T+zUM!ʑH'y$ C olBI?k*8Ბ_pb4ֵs.tTsLvPg}ASr9j"Pxv#L'ͤ,K%>`0B%|] A~«v;Fȥ;\ E>Crb <ޡL xg=)gk< :@=sCla(t z!*_b3٭Pv?BªMe.C5E{PhND0'P=h|-v-ȨeT-h]* Lt@#X&%mH-mݑ.E<ݬ~M K.AUgn(Y(g\ٻ7|%vAIWм5X}nkYw-& uaQwfWy*!i9 nW4uCL/));jrAJ'm@rG._翱Qaʇ{[0 &&/D>{^Ͳk] 2IuFb zD-Yb Bs)Go(`N9pG #^0~|{Y c]5%n9 %^6=RԄ`%ij`T9a-"%tpfM-z\ҚiZa,| )lYu,5㯌)ifV yh3Κ !>P6 [ͷZl_(7cm@t{gbffCHM( c IdXx𯄉6b>s:ȁ:zw M޴n݂o%˂c8F 4ɋt|ė 6 ˀ`Rrmi*@m&|h Y( ݗ]OܿY:Py)^ˣ!!4 x״}*eq[$&3uߠ<  6Z-yE,F$!]㚄|ϗQnm@Xk`wMUT^e7!^HH9q+$.V_Mݸ Ɉ'1[ruHTbȸD=jb䃾{ &Rچe]rY@`G S0Bq}S6ȥq{9? J CMA <ƭ&?R>so' Brؖ=X=zr/(ZJm ܅DK1Uǹ i AsƩ- M)E$СP9|WPy 4?] kH!ReY4JbBv9(qƢM _(ztlX;x$b#  fX4Wx065T|5}jaǼ;o[luMI 5TWz>=0pڸbgMC kg9K U:UfF!,_ۖ0{.Y*S~w9;ϱ [}"#$^͌4N4*3rR+ra++fbYꊤGtIig4J[ެ(+y&n(=tӌ0u.䳐>Z$gg`ִ,7h1 &CX]ʼn Hju [۔x`ߛcipt,:(Tb4+J8,hV1Aʎ,;&fZ6 2P k:j%T@1+] ^1cdON:kHo>y'ݵ[*Vp~jr6( 5{>ٮ߂"^+ӆJ6>bMڹqV޽{zvM>`Ը3HP;"$뷬7BK{5R`ULRd*BAϒq=iPH7b4;0E;mC(ބk\`.ޮ6ûOG7|4${Ѓm)X^VOL0\kX[rב tK(z~I+E|DU6x<틅'AV]lEO 􆼋:M)!=J\<,!njQR)i& #1⨞{T>\"V~jJ]êK'@JxB%赒swݸ8ˤ-͞>g>{9\_`eb858G j._UAm/oqO\ ~,feDҤYnjm[B.&5H`=Ïzȷ/c7%M:E_q 8{'\ K/\UVs?WW\vU ޒ?sÒZauMX@1VJcNډT{K.q4pAbꫂgg25N17>->8_W XW$&4bUa@ ,G0_Ϭ@j'p09U t8&v}ɴ {"0.˷$s|of:n!:LN%tlP{z>pDw}8c ޖ[xB/eS ap!qS[)Ȫ⿜?lٗޙ,xlna=.a9=ɮ|bP"徚=;Ǡn&uۇg[e%wtPk#X`DmkxGS:'谘tY.a Mqh5[?_S1/@6~0+}ƏD=1ߘ> ?O 1lv`bwK7"ls:OAK%t$VR(ҳa\&V?O~C iǽסh?uS.t:"fGԡS& ÿׯ]+_XC g >a )EH ?]ؚ4)פ$jvHl>`eF?&%.QBmkM{?}>(oH@J:Rj %!g]yߕy,Y; Q&P(P9!Mr00A9Q!ĉ2ZɄC5la3>/6F }ӿPMVK?g_~6VʧMJ_Q*& Pa͵XkUzU%or8Bj [^:~zpBkgq!f{$s&F Ѯ&;ъÎnqdݏr/RĖ'Y$c 6la}"Eڮr} ٔ8& ?FIqgdM|˥/Dgb)̈́<7;WhtR, #|IN.Xu YT1oNގ۸8/U_u9J+8i_@_I}VbA-Xs*N]g) Q >Y 0oPOZ9&k?lHC'fV d?\orsݠ^b05Hߥ R4E'V ȯ/6=Ku@K`K.Lg{-]ݡ:3u˭it[FRLV-M;C=sE(x) ʭWؙql1TBVw`NMMVE *:'Ug01 /|L5)d ao6q$v|TӴ&v,?5%g=,FaSwO|Hט"1W2vt'B6 #<پ4 `gFjeH>W~St+Сt/8_Ekubs{;VEJ\c֕/\n3vW:WP)T{NhZU*_{.lZlP׽Ue" )0ͯg٧n:'CCMȋ[YHWF"mo;9XAlVY9O.Wd XL=hƫ r;aNT4ƾoM|+!HUkqpd/̀Dϫ<鵘ϮjE4L|==_&^Mr"%N.1/`€PWu 8O@[ez݂g"*?Em"%ËWMl@ܲg:'\.ÒX;(bD~4q=L [D¢ctdc)1]χ:EWCV2(ƾ 8p2V,]/Yw|")|8JIӅ[*}Xvzfo9Ϊ'kDтjpwŴF0i6_XCjcO0Zky\J}#kWTa跓[n-!| y ^_f yoGjU͸,{.^\ck~Pl])Շޚ1`;U+QlHԔ”{=ŞB֠[eVEl%n,힭3hmz1Bz*3x~qf1[XQ20T,K,CH2Jnla񋨇->̹tȃ;pZHy4#_W BPWMtkH_өpDK___,rxWy{NIB.{$| 0wwGC[zt?jelok`}.7a]ES,zg2W{ R>>zc--?TbWT-c}Hv3UpM$Gc8㋗gM /(YξxFeHf" erмgi2q/>S֯n€lL_خ 3!+Ж7h {U-ޢӇPb2,Sݿ*X8guA`Nhw91Z9\Z, ]"v0>+N&Cyɝ]f1'ׇgЫgŞ Ub]3)OXlVO2w< UֿʭC0dWk:Τ{>0@(?}^#BfInRacoo03KP^J ćAc6d1:@׍S}i]YBgT&$Ӥd@Q~^Z 3z^5pnFf@Bs ^|~ bxKCfTC71ti0~r! $FO(4iaIo@σϡt".(e=K!@zzկ-sT'Ԅ 귢1~kpܭ;}Zy[$/ִB&A]4r,*PBb*7Ԅ܊sZtMy&}{{X=?倃ﮛhct0ںט1-/;y/ ªv.m>H}`nV7f {U)6J/B{w?+P?V}V/BT {xЙ5$j$ 1~BZb($3KolkW.sl¿_%#_Gm@yM+ md]y &@"'DEEu@fqW;<1N2=߼Пu m=08CS NFchK'۵sOӯкq=fC e@U7@(o^#@>'|ᏋЪl^nUF@c⩶Oz(.5lۺ=B≉jXĂcA ˹阐>8j?9dGx(iӄ8Rv]fQz[r ") Ad{8WJhmlq@)E5w*`NmÑX@y*k9qX}>dv F/| o2[HA侜N" ֘PIB;H};x}z#nUFH7-Ωh׬D UXnNyeWHrtc{4́|I&}L0bYW@U.z{ >z*qgT>T\g><GV@(e})/jg,Ъ2;|3#so@ ~'Ea]DYF&V81صC2LK0H~wp3pawt{,X;Ct7>`@!if 4TYΟ8Sݚܦ7BXEAM|Җf\p۱ O t v62+/`"h=* =n$PsTB/!>_#~ ۧF≘$y+SN͇#/}gԻJp4Fd}ӆI #vP۳RXAp1w6|fڄRK|;XW{P%~蝼Qx)[bՒsNo(]۫+>&]*Q%*9Ha>)t뉰|O޵ MJ{?]~X >$ q1/1lP̟ǘ:ݷG!K EgL!v!KHd TD)])K ٌ";9+#9J}N~pYU\?v\t0Of5.VɌPv(1a^ 2{'X^%YS.Cyf_d~5O@[ϝ<@a PQcl?i$ex @^WuK9izxx RVK4ltwǙ}7+bӟ`kp>څж+P&8owo*.ˢ$Y]@;,iq8ӆ(bۓ~ɉ8Y{Ar[;?HD2c2x´\)>Y-PuE$h=w*5"Cl'%EA=d~kѤX3dH{}6^ZGiRmZ #[PW_۟9NUBmV z5Zu)bٽ'o#5!z:?v'ʪo[Zgn|ʠz#Ȍp80ͩ.zMd@UN.AunR5) ʃX0;8vkJ!asf?\lEe ^z^]#tۢK/G |}+w'{(d q߀Kf9$ܩБBuR3:Sy_/sW={+m+` "|w;x^t߼Ԁnˇ98&Quغg-HpWo^,dxa>,+`/epqg;v=Ƈ],eqܤJ]俅*Bîͽا)CTHs=4<'_s$Ziw֮˳_B}vÎO1G6kbr9<r{[{aÃ.zHg}RMavaC;2)`#rB.x9N,\'j% 40yE*G &C<0gU &'0r|/^Yj-QeG\C V֯1O}+8 3(o`߁#Х~YR懎ܒjb"kn~G*÷-z_B[D4-ͣLnѴ_-D>Aԏ拐հAhl+c﹓X7@ͭȓtώ~BoRhg(?/Liz뀖-9_SX!t'4YARbV)èRn@8'k[  1t%PVuhV ;Oӏ=g{b7A:ҍPpk4@Y`gx)wo kv܃Z]:.+6hP*: 6ǎ0&,b\ΉSzF^3ՐM|ѵiyZs5Pr?bMa?E:C;5'U7A.: ˟s@qދtB9?^zzm/X'ȷ\qZ@yKdG4ϱ DD1o}y=vc!cgC]H, F?|?sdOq7},v4OƑKz:0A^]&6*pҿGa}T!,,ޓæxwvSkT }^mNSq|9Uͧ*j.1?}e ,#&97E[ݼ )/}Z yV'^B6U( @SO] G&AQ}-гL馯XƗw?Q;t=(y69hCEetOqY5T_zW.A;:_i˼8N>qòsP)eD>] Rievk{xgQ%VҼztሁ@/ԛVm'Bx~(:w[͕j;=S ?R4B+`arJQ"7v⓳o=kF7tnҚA#`_hsѧY(sve/NWaz L=cRua;ԍ΁kD^6|7ӨMaS.h  Sx-oMG"`uͧ0y/븬Mo x;i|-f .)Աj=~ʲ ?t^bOo=ʆ"gtc&WcN<2њ?"/$n4/r,XA=x`? W/6R3],G 85]zkAW\L}z+3 ss2||>(M½XkzY6Kſ'tawt0>h-9X}\[݁wM}a :wBaZ^U4kkj^@Wif7 ?}SKy@}Oda 1c[{<~ZV]=6ߑ9'c'v^L~W P }<곃{x'H,Wؓt_ %(]: 4(< Tbu@ gPKWc)SIp.l2<)Ȳ%eծdTĉM+4pPsd NU (I=۽7pbج]g?7-d/}J`sefp<^yU͠c : [qdZkWuRؿ}Ui3!KO ,Kpc*'ELBYBwp6ڝx}k Ku"T(t]{BQ+򁠬cGwCO\3k}U[wCQ ,&}̆]SKx; &6`G xs'k2Vv-Bi2 ;h(PlvE01g)DrI1W@*׫$Xٝt7IvYcdɊEqg)# Px,ڒǖ?0`BD$y͊@*w hGr5\],i(hp*S⻪_Bo|Ģ 3O#$pYN5cgr[1I)Bp DgvjB]y'!93t g~RzqΩ|;d]#] ~٪pmt Ev3_5GŖjݖ$.\҆jXdt+b(;k5/Z|&LJcrv@=TTqk[ܫ\qԥw1X1RO;͠dwԞ@U䉳O0d X[۸q+P+biU|bߋdbMcH,}V_ϿQgIu@ Փ;[^B= חWY@O-޴cXJdɊƦ<ü{C6 ^X [yYX%Y*N$3EBV"Hѐw=7owA{W/bޡ섢 `d&O\Zl!'1US Iw|,iЏ^K̈rX$"|s+Eރ84uZ EYRqUÎ3XRGV-l(4[B~Ό -ǿ}_ד3W@T 8h?!_8X"b W׃#MkJ4[軼q VK9da/xv]W-\7ڱb%}P")a2~{󍖠-xQ _QBi}.|m“X>coܟi`\zX4Q,/X K*pj<$f& e/&cB C?1y}G8W^a.9 Ї˙Z0YӤ;#}l0DŤL^yy3$5BѶ+)XhCUbsPS?_E[?Z|˄Uj]U}C.ҝś6/ԝCR_^Mo1)sv~C_˒KsyXs16cG.ߒ'ջCbUES$<Z4heWEi,KV8DʹlLqNDAf;.| S49K!}! HrN I >Ͽ AS䆏!$r(+LJk]I{Dҕ>l.[0A$ :rcuؾ7B)mLЮUꯤ}̕X;f<yMIut s$=z}Rf014 Nbt}_ QYlh m~}@W0 L1FZr],` _-l fK +#L~n̬}ztw a |:X~뿊*/maHw0ƿe&? AEYhgߘۆVvꏣW%G۳kГZydݬ뵞_;-ީ`h3yShR\nn{<&aQx!ś y%HO.9Z;A&i턎CT: AqE'l 4bPZ 1mS?F=]arN.?H~?:@ ݗDf +#*'HVO~ꁊ:^G-5hL!y:v= :< Ԛ3לDAKg̽L"uzT%X1DɚV} SHvcYKXh 08K$Sf KRrv?׎0֗l4Paxߵϟ =4} n&B_`Ć"4uE =_C.CdوU^ A5{m-ЮSP7yH0$ ("8|CѲ9zZH_/C%]c̎;"5*[BWh h_T>530th^15 y hELXCr MӇ>-cV6u ]xVMT.9ǴaBR0:RsoGsUV~mT oӾrsuȒ j̞"[A{K_)sډ:H!9[61ᝌݵgHߞ1 $~2;{ޭ J%1z"ٳPKZP&t u_[ޠ0,h1pCeDn@CoXT[oÍu{1u:bc{X)b:Z{%%0lՆU&ިldaOҼ0cIYdc/dRBUǠpfD?-f=` 3- (YKP:%6(^B+_0?^nBH [s*20hhUr8˥Y>ԳF+uUH,t:E=s_-V<|4UapKsjUd }y(ɌҙٗPy[-_ﵜG{+9΄kL,M2r־%(ūڸ hk%K>P4pf7d(^7::Ap\{`e[ĆfjEXuގ.S9 (GB?vVc%Ţ:tѝ:T!=K 'f,\2Y#+{t0q1ʑu˧wb=<#X2^CS1j]P1B,dR`#22`2ej;D?b(eEmΪ3ͱݪaF,^,xcw>김NhYUկ9kK[Q],-'Dž~8c`,ga/ÍH 2SW$D-_v (FKX 8EƖmI_[z>,׻YڎZbOU:tٺ_vxsSvrB_H1{ &~gql` /yXqD=w3;iL:aQ2?Ct| cH:6PMy!{ RD< p;Qb޻yn-_@ޔ_ )%x%׼rUIY-J q=c_s_1 c=1 :ňy#/`SFL3Tܹ `< |B[,4c;睇cSr)mޏ u"5&=Ťy73&m\L))H<ƆC.X`MO3ER[`Bb'a'tI ƽ9X`XQ-.ZlM=RξJݷ'jC&zz6&NMq[OA}/XJs$ yp N*B& Ev*Ƕa8Ɵz?My(Q8"승HӃ0RoI2YP-'JU/<&C]OBE7h_F>>uYn:Ao!tڒb7T߱2ѯ Pw+ FUj8u< u*IW3xXdl؏iΌW hCiE1,]wcTr!60H1TB!=c/)Q>Cԭ>HȰYϭ ^7UNENBϜ ^p9,=bb⃪SN/jSѩI~/+(6_NM7ܺ& -+@#UcX9ŋC*so7ߺI#s\*/0䇭T-aN9XpT{,KC+#fN{'C,Re0xC6Amilڿ~|SG=ĬƧS ; O[Ƣ`td]Zc8`LT:7` .K\?;?z_D"Q")%RRRY%Td$;YY{ozJQ=w7W>f{>``Pm9lVy[HkJ鰉^],v&}ne!-PM <̵[Nw2Hsbs9t 4|]%ΰU!'!*I}T]KqZf(xm[|*?t:l}"8a7`Dž7Ъ@(N^PpC_TT%i1&72o<`;oo@"lEsk oۿSIOZ@SWlaZh_~<8mP9A#u'ɋ˴ԉO5!wʡ i `['w$т ok@<\P|>3URU ࢾ6g`|~}r&B U?ߣW0&y8a5wn8 M-9| gT*ހq^0xB*/'/@38~8῏JAkލStac ul@!! =?U4~``- qوPB7gy. A-sA~ w |9›jgx?*CN3'~cNUAjU-g*=&"u+o*Mj>c4Vh_*e0߱JI #J/G>~9)GBL0/۴+VQs(-2nF6SM/ Ʊe1?!qsYR-zzW- %sky4afW.KNν`zp7Uo,o]d8%(O\nkԳaړ_l" fF5wSȫO`[KPxz$Mͥm8aVӽ(.|r?/S5r P}aZnCI͎.h`=8EEA㽜Pq}Og8JٜR(Ƕ)8ږp"vlSJzaϤRҷG.!U]bK\ګU2M`#Eup%<8ِQdKv,$n c!8#N ;Gz8{OfT4HetcEy_w;wbCHFX:-6:k ÅNQt5&{":*rQ*ɚpK_NeSW J9pވDbs+[]V4,x-=),O!,Opuwj/(8a q.'Sɜd21R on1= Jқ2C$PPWii2f Y,߇^;!W?l3*6'o,z'VT֧%aٟ8R>H_t~<WmRpt5 [Y,CHU(FK%JN>ecФ6G qhI1z0_j NlД 2$pDԧh% >q5_a[!Ju{;&( \UOBVb%hXlptFOw@m1,+vH si0rߩ܃PwU \̋_cAR %\_:JΟ;.&aT`m Wa%KՎ±q0895lܫne~(Dcj1JG 80a /nNwFk3 _+H!UQ&"08KK@Kc>?rkcֻ ~Пr-}KByMCka,rT'z@H&F$n'K`Zكb{+ 1uFƎ(H1=x|Be@e>/ƏL$,L*뽘b?06O(?ܛst|uZ +18f'ÓÔ|S F/f=4{Cم!~ɄP}1FӴ Cwu:%g+6 P^ $S,x4r kK5.t`! 89)z4x|*:BSlm~(nXsϽ\r0mƒ1Ʋ510>1Hz={Jdl3l\C?|~cƵX!OxI &0 XL< y'lyнj}\$p#sÑz3K #X PO$F1Οww|\C8}|OAŴ%) )b\Ed K$}Fnm̳ؾn}1Al7rɫ{N4eL~74?s& W.,S 8>ϝv o8~mJ?.Q>õW6wҫ .;Kr'sIdz/r֨0?3!3Da.Z|=[Rt0#"StSBoB4nbUo1`L/DH|קÈ{(샔(:YR BΕaJCL +B@;0쯸bDŧc/>| 4VG^G|N{|?{6k $B Ow-@Ъ5+֯,TuWO@uFǸK.n}R:C.YК`jta u4Buš8t13<)8}x&}g3< L8(1n,'r`rU(Anzh\sJ=N(AnOI }X l\Ɗ*(+PE:]{̣H |]=R ieߛʨ;4;eSZb`Tg1nM j Cʟo;*7NEzgV0[8P1l0pw+W߰.QBցlaenxmj\Lߣ6 ?T?ܖRrⷒY}PI5= PcxYOlxA kk&P련=厕OK )0V؟\c7ޡy(t2`mr~PU+ -!# $qwokAԑpW0 e_`L:x-FT=&ye|Qγ҈&+?5䬂ZJa#^0 $>_1Y#nT{"Pu*wA(9ј1U2 Rp,BkXX{ۓ2q.;:رh÷-BfY,+bWb z4H1p9u2O[b`Y!I.<#=}%*DZV^ n*Wr88Sv3?؃K~V!Ap +Dӷ}^m>XO瞑[*zNbkb8l*5phYtf[~|7Tƞhbr|V8cx*w}ZE 4 ~^”%\ = G_AFM}|ɼҬ"%v{`HA@#w[K=1$6<%ncob4QU⃂"Yg!`ܪK2DPxu]?S+!GyD.R>z燅7s@+GH2&l:b7XYA)΃1C><6 M?[R6T_lu~7o?TH@o"$˟HN>ЬԠ 4-9 FhKe 6nWat:^r=on4 If~!gb`V-Ȫ!{r !'!Ah=t0nN$A_2Xz$aN71SGg~FQ)2#frH[ $GCT[q;\CuAWW8ճe;60OݠE@s"^^sAu8uϮ L3ʲ:1D F~ԽuSg*%JhpN={jC@_9#u#h1LZ^ZG'|ukJzC]Rp03*b\hҫaN dkI ȯIüT L0l f兾u;=.X,f҉j_lAgO/ {`,8Iu_,'~DY鄑 0eǤ;̑K`Pz99xї~:I"xWm',d%nkߧW1!@x"} ~9Ob`$|$bSsl!-F3zcp2A8Q`j堂IwB]7rMumr~da$ЧV+v:-ӊm r7o4A\sT d Cjڠ/nZ eh?oim`X| G"c9/Lf/&1B}h^rZ}%nfBE|W->n,fV^у$jT] N3ކc"[rgxwLZA rqbҚOʄü"0ԚV~cVuD~hگsU҅]BG'_t[ٻVs 3ohT3o~7b3l6q;wR~{K#/ p>ty?;uBĠ͟a"J >1&}tvǠNKD8`aͅkd/^A"/އK7=ìsw|a5ƣWSMrn vJ9֌+։c/;םo̿*!"I%"ؑ[G .-_y!p!I .k/ZNAQ2H)?ڋ [5lpV#yE ȏZO`7EoB`?vI;xBuD7'=pg$>:y1KRGpNM\5a}TFߕ_KgyMEؗn2hR""-8Bۄτ+2~i?|+Yqvcq | ] \Qx)T>\i2G5!*PumfFceДn~-\eq7?g@1%qۡ/iPQwi.Epz#@eq~p*"P"['a @Bй|XA(JGB H^YaD!Lau(;=Ly1:WNes Pb ޕ0}V9"IVRBHw{/N7 ^>c?B$!;,Z}T$Sc%\ lR`҆h !PNQ/^}>H8#'ۮ8lY7s!a_z:aMzUXYF?SUBU1&it4 5)m1muJn;62:k߇A]m0 2n"VÑ%T ]H&dW]bwtT鴼1ޢiғ f!#>~g;PoMqXiEjzDD𿬘x 5 ̮N 3PpڵeNlNsߑ,Ej0p[ȩc6 F'6Zݧ9WZ4F 3OyǸ3ir3-v_:[T_Ǒzls9Qzk'l#K tv7boPWAXD:G.X:#c.|vu3wd_eG;Vʪ/c=X]Op}:;/a.#P(9y(c7 solM;v.#o< 1|U+AYnT)K- ^ ޖ ꔢ?lG rOsC>{P lxsUՃrGokWf,Ď((bRYq]4Gbͅ>CuZͧ}?-;_mO|MANRE4w8+_ ] O>,(4: |:p]HZTUm$|,s ylݾu8'\\9_莈ziI+EARJm楕֥YLvllNxLY+mQ*zxS[uP)ÀN{9 (uŞ#eg>jTNy hN_‹y}}IPAӻ'4/_˅fɚ[X'7&,DԾ+f}?9mu o݁>fy #0(U!Lx~t?$I=ru"\'H^jݚ-*Ecwqg:&Mokda(ϥ+4|P.3T,WwAOʏ$^H/Pk+W2rl}ߝݿ" ~'1Kf=Y!BVȉͼm․Ƚ ްk7l kq lu2T]u Jk[TaEÜYjxn|Q.RvТ0,r=T{s?X7;VcaG!Ki/K~ݜ;=i_;obo4XueNJWϨ,`(!,dNX%uX+Ɩ\Ab0"y[c<^#j ĩc3ۼ j^-Y.`hTQ=,aHdD`kR}ɲ q!}iz9NS{b.vzW0*ZFVĠ,ٗE4Цaꗑ/دwh OvU Kta&)K=LlmX|W-?Xz). Jw9p)97r~=z/|h\LkK `ktf)r~xnyUtxo 8T*=z8SjPӚ10&Xa[3'MM-_`u 6Y<83DD*O=^ɰ9 zh4]xtjEeioG۠᥾~KF..Zxf*;&:=56bŪK]^dܲ7=A%,iHMHn@fQsrO{7\DXx3d ?Ms%vHLUM\6T9MZKehǿI!Ʀ w8mv;BĻܳKd0]EwLvWNk7bMH@mj~0. b9!ܿu+(qL6o ^ i4_S~l n;E29X%=7/|eABr2ŕ7CW+; p&$$ ,FH/Uwu_sXC =h}c Fg<!'jwa',6_$:9̮-SA8eu >w6j<[`GڇkhIq2ic]+\"J $S{} (55ON2÷FĀ"ڍ*QA#rb:2t1oy٧ 観3ntjPwzc SI`i9ܹq-SVД4m>kS{.P5quۮsj˓6xGɑowu n$&l5^Šg\3{'#!<Ɩc2 rG8mV$PJQN:83%7KQ*Ծhݣ-~/j_*o7h'N·Pk/ʵ%#z>@`lb&hjǺם㣮@Ε;M Yc Ҟg7̠\%Qh͔2\=b40`N1 (VS}$AFSY![kB㭗L=М*r_jeuǡ|N_KH*|, hn=HJիZr^e~V پ}qU'xeVeޠtm"M|RVl}P*TS<^e}oSEz\\Oۏ>lWզ7wq󌽀kG88nku*/Bu2=1hvx~Z/s1䂲 y|t_ V+,ncn-;2 AӁ< ^g6ЬtpDאL`5|xʚ~4Dە40ՃD_?znA_Qāh 2|Ry:M[9!a<˳_slۡ beC~Ge(Qb>Z{whDCqD0t V_'aQk0̘]٤)#lː''˴ r }duNM2Ym=(ek쒇ay;01-_i1m?4BS&`Ѣi:^zym'T# *zb>8 ׷10Fb ꇴ0, @ͳ*} P-\il-̕IsnSr;/A?ͦ!_W=ț_g`ryqtep.,M=GB\0ˈIs%LuZ]vANq5g>ejh]".tJyнIR= m(pTe;|~CYB [Xom4v{&wʨ>*l{`a]E \/%_5$ÐB+٘N!L7:h:ud 0/v,ס(b~KF*Lо2oc|?~Ֆ:%4]~5J4[SVpXZ4ћv^V0$yc pg|Uı0JkHP[o=f߉O3lOC3j; **lK]2rVs-n_O^6.g4Z9Q';G\sz9i1Pi~f/^էr}Rq^tV 35ݔ=UPJ'J[NYd?AN.a@rK/Ă>C߿ٳ`㾞 L{yo3 'ߞyV]_ϱC֖"f~[5fcSoN`ڻ r@cQij^^̼r T $b:&( blfP|Ο/h8&{L/8jǘRW$ղ"2K+_TX'So9R W_)$I~%%vjUG ڡ7}X( uht< __Ov}vlƽO3%'>T.5u'!{f~ce'w7p(]Pҍ^ JR?ޚcip< ɾc{;k[!L9_g+{H>!] <0}p ݝqa {WlGa.DL#jF|n'7ȡzU?otovÁԊX/T >tde*` n|–8&G.0cm!>rF thi~>C; S [LZ] OG#"`;`#0/@p(0nbق0ٺxM VU0b ?co'r ћ0}9sygΒƳ8˱mhY$v \<:ʕ[=D\Qe\FosIࢶx<<Dz]lm}s;af K~jק=c}Rn?|m)ـ|XW?k+qBj4D<ނ;!Ih~-k jo@Lϔ{[:e׹0C/A#U޼ t_3,,{ZY*\n{/B_/!cht:dQȧB{Gԧėw?ߘL5a.2\sޅ9\t~.bN"LdBԫ[^Jl֯;U ax'άIh9:~؆IF`&r]a2nv40/ic,pC6P }l`~p9GkFH)ɀxb0sS}ǝU^5tX4UXӿđ_䃯b_gePẚ=z1{w=  0!MOK2Gf[=lG~bbG-{jYzW͚`@V1Ő}2a$AR)׵aS"mf)y6# sDz)6DCq`KhmYK12^8W+Ҕ11,4ܰ~:CGZ#M:p(һH_76ǁ'D0+f IE5Rc7inD_}!w1g@R;m=7U:6?"(t! >vaxiZ5H̜KGm_X٠$fԟ<>jgwcوi lf60yNcX i,<2dh`]٦{jk0yc6;笿s_I~æӞ^xkYfhޤڄA1 ԇXkL1!w~'v׬zNA]U1erl2 y@ m2ߛ$(CҞH_7?~&1~r_}++;u: 0##] H.܀͞d|,nK3B\Ż—*V&be5,zrK=nxhAU;9s`NZb9wJ<;n8'ߦ.:.7X&DGwD dm݃Qŵ3{B}V!;\̙"5B.|Rρ;c\KXLbt㳋 o;7W״Yi_h?x:֦un]?@V m+ӋP X9fʈ CymK_/- 8TX _EvG.}vFXM h A;&cga a^v hRtEBIβ8C(6wwGԿC{fnG&ǜ-^m!1$' >$qHW$|IP0F$^J#)l`ҵ_WCT̨*K؄PR/ O\a3 bSTO1=re|XAgDv,%yD@-v>ð YׯpPK{l[,*HK儹q8.Ӟ,aMM3XmM.U+"Ǫ ϕji0v6Nܽg7^m.h@g?|CRSh乡"@$0n#,o&R lni+y6ѧV\;;hgQĊPZ4egDNԴJE?o@RjY)gx9I09/_+rKa-Ğ@YɌP,^Ο?U֙ ߱Kʤ%~ؤ$ ̓h;f}kYnbYVuFcCyp\v'K=/Z~P4VC> !1+g h ۵8R,Զ6JL %V|ӣ|Tg 4>=#('r,rOWY.Fy/f<`aZdž]Y{/KpaRX/5rqY>)Ir{l9I%λC~XN ?*عpfq/w1}#SA 'Y5MXKO̪"D%AV=@ms[3mtb/0F2 =nCU%tj?Uq2<*8cFY uC$ecjBDUUHD ۓhBts#as rzrf̿L}8ƅ6q "ί~†SK*MJ|^2uco޳ ?Aa)lLy>ƺX-f h&x8 mZðSГΪ>gm$aDe'D5DCkl(7`P%bV:8_G߮%@˳@CJP3֤>)/~mf/6gT^=ˠC>k BޔVIS@q$a ,Nb cr2N'|@"9$;q%Լ;_CXq[ِsМh!{G(4<*kT~|^X<mfoCJ-/]C b$>o-A=Çz1%`K ~Ȱbyd'鹞A^xuLh%,+``r4ۿC.[%.мiZ^*`cU(3k'ԝ0SʆE݀aTy w-M^5v~>4h6f9hIƶcj-hw?Įmv0pq(hG9;Mz`Փ/ߠ]E{ T=(uLbSkT^c9n_wPyS`X"L:'!8y,l_*p,Sx&u ۬K#H?ZނrO]ˌ/>؅MkYGHw`5=1'S^0:Gd*cӑ(P]IƲWl^a#6 <=-*a c!wgqH" sV?~2I?Wnci'~bGJ` GS]mB|Ҭ${Z@Dup"u4$-:BI%l+䞰I"OѾ> ҟ @QbkcFxztΡ_A#:geو)&ܿ0f׀+3CW{#6@YS>_>}TM@9ҴAcWAV% Z6|~RU)aYm}9͑+4? |jeν}l R~*&L6w5AS"-]قܺY]א|X`X(% uA fcЗ{,X,I/.CX`(4fuN^}|l4;.f=R%UiȓfRս-ADl#]lN _z))Bkꡠ:u ]|v2Cq!a;D~š?WE4)-j*v w%bX瓘!\oڋ OlEc2[~8E?Ǝ)O{-4evQ:}-TM*ǘj]c.K"B YS Gh`qi[UCX'MX8Y;kgz@{GJwBXM0'8 Zi)}TǖͪVݰE%GGz?!L훫nJ ]w; ~s ieA"C],X\l u"J4 H]fPɳtmJX{zYbi?q\Đܼ6qTq`""9L4<`۶[XF% JςIh JȈ:%NKtcGےA!VmB+׬1e"4Ogl=|<ڂMMH=2it.ooӂ'&JPuVa}IO)VB V<-ծDi/;8x.?뻯zaWXu\E: :{76>Lgēn8Ksz-gLhvh8}q}7p'6.モWpvJDKt+XþփEC8@CI z yº`$M{?TUsg9c?q;Rj]X4,{S(~}u^%s0; o(XG/>vpk$ fF*#:[0_Ws>V9Z׏0M *B1fn֍Y\w7˙Ro_jgX$DnpC49&XDŽXkm` H2PLj-]l*0nH͕0z 2g R@z7g8dϒlZQ:,<q2r Q%^X|wZ- /AdmU{6?ٚAGƹ% !X)3r}fDy(}9AJ;M@"O_)Тޡ#P)@z2DFTSHR>K,0)UQ}NKt&Ca2 K vj ˢd<,Z T礄6<%98a҈@y̾6oĦ]yXwG**})sD$DRw0 *L7 "B@G?te%,Z^Y J0n qSN)r揢R1 9l95>Ѭ VԗE$Ó&;}{W"UFo K|w;#>$Uyjn쥴X\>GXfN) .lӾvo/`e7G'3lb{ΐ#\c8P(׆4؍ Œ$,AO[|~2;:ܯ9$4q SY9(΂vk;J^4^&`0 w_d획8=w#ꋨփWb & f1_R l72NN,˱'ltz]a!m/s0#9U| ՞*jJLmP,Iu#`aߣ?`YZ 'l~3esw/Nq`Ck1dǨ˷'L4lF~ B0umh2ep?;Y^m IZR${=)9Dx(p`[[/I,yd>WJ$k96ko+791c4aY%%ٽ:x'&z <s)@b֓wfɹe1CHc-3r‰y?Ps' I3zN1_0ds#So5Ҳ^jkɥ{:fE7r޷L_c ~{ 9"{C]^43P$GCOh^vy.׸C!F*k-*.d4D̝֬~hܵ׆zg#5v8V¼0b5,w ;݊ծՊE]f( FuFv+8!\tnX4ڦ:ܾaMZ͚d,;PA`!Ƕxz`G5挍+BK0= jVξZ Nubpˇteχ7"'/#hGCw bY YnW?~B SK =E_KL& CxO] + EAd Ժ Zw{߷bXhCt J._1 q.T( \Q g0º+5Jx#E}6ٸ 8[ݡX~ӲX +Oz T P nk=AbZ5l揻ssHÌKy:Gi¤Z(Mq=)!ayfXz!=w3(uuw!kؿ-ˍ"; Yrm sC:%P7X LO$Z!N/Уty'< %>,!=ꙉm(3~ɕʙzh7I( ETlr7u%wſ;ϖ{C} Oz/^q~; 7:\3C9BAySl_@Z2p QLi J0&yx1Gd!p}lbu7`6vk;2(W';Ǎڭ "_Pχ/7V{Y+f/N?GLF!C*+1V)C{=2o毾׽CHxHanHڰ}5 Tc:l;(XKg.ͺBX~'[O۳[6y!3>-5+ɑ}'MX\/?c1ߡJc=f2XqQF_/yqlݹ&v %P:* ʙ+XCOx̦(ƬkI"0M>bW{2=u61Y6@{)Vʓaw.'B7$\jeVm?>jR^aK.Öa(Tm9ԉ5u\ȁXx6><~˚"O΍_*] 藹q.=mE#pRkE(5tN'q,I(~j x*{uBy];JSuݺMMBlLxhb>[(!w;& eO-cR+Q Gڝ2ZzsXl> % wl!}ѺcnL{O_G5EFpW2>MǦp ]>e1R[Ow8?7JS\ZEܪDtѫ:6TD}P{ ~h Cr/x+atm$Ih_ Bзxj ׏d8PWd ]a3{F~=땻H@>OAɻݑ lz3>8z ,A圧<U[>dPsIP{+[z|g)#7j `ԉslZ#l%hm4a ռD:ej~{:U EZf1[>xu("aq|lDBZaG `A jȺx @OefwȾ," ]L4&'<\,:'V]0YWg,<E;wa H ;E~o@r:{ޚ u KjN8͠H PEMhA)`>!]7WqoR w^׵V$"+f Ϫ(þʓ@5RA㌙~uZnMKY{0fzhm$c4X1oy+>8-nS\iavK'nMT@8Q[' ߋ1Ybneg'ٍЊCa=W/ RQ|aBSn2y:yg3׌AqQ௸FKOmu+G= 0+HS!nP[ LVBdpw0,. ;-^H 7C뀸 YJaNƍg Ź` z>fyy?P vbˮ}σBSg/y'AoۯXE_ z$~%Z]5;6i9CAluj6P~SIcr _$-7R_=mYR &e9-c›G۶_L^O .Yy2R(xM. iEؤ{q ^Zv>H3H!}bt9 +2ol\KXMf\W>{JdZy,;rm+4m*g bg6>'ܘu\8hnAnGUnmtx>P Lä+צv[;hrИ`vØiEY+bߤǘ.ua^1Az"9ع\O YC =^b6o;/rνQS;A];=k-7BaFL}LfcOpjVbF/;oȚ{qPP%]WqKR.U^{i<sZXh;T3ډ NPL5B7\uBKn;g Gmaq?,;pU 3+S4 XA>]V_!>nȻb>FSbnOJ#}2#^fa#BMʃ||vXq`1x/vP ꦘ;s19Fݸgŝ*[qvX,)|OVgx?G] 6/AsNUgLsX$z;V;>ˮb~ s8K}e^5p<]oOB4,S!U$:@mw}I 1v~i\[>Uށ͞BZ^wn j\1m\dV#$`["A<W}>e) -~$|_ED- Xx:L\g[$Ç-byjY {SaM!iJů7d(Xd tIۗnOq,q2^$v-HAi~j͈euџJ pP1-QJ κ>3£mqm컅*Kگcp5}, e_:ݤ+FS~{!a0*4֨w9#8vl4EI\{8'"ʋ͆waQj&D O('a gpWd*"5c 6D{qsyc#&  W«)XOga~eXPP6+0Ŕ ?rn;헒3}~b&)2C (p9B .1{iP!0,nA6e1[ z9- mx_0Cǜ\0ϋ[NO5i5,_k]qj'|s#@G?Y M2<ʆΥwg}rM՝ Vd;M.SN8 Kr<ӇIUaӿYA܆YH맹+\mɠPB!4dK6|_ht]5QY}%ySڤilvMcЉ]+sSڻرnvy9VSoFbܠB OߝҞy,qW<¶0njNcϥAW?PA}NsH¡j04Ƈ9"KuJ{Di)T.ؕ;A'V[H)R /F/[)(ĶGcRXn' DuS,n8ڐbZ]|Yk⣩DN'6K1i{fB`i}%)snKݩX;LajOKm{,ˮ-`JYHWM]~anPVl^Sd}"A($,v |Y?ֿ Wta$nb,5Z'& ~g0Eaul@ i/zÛ-=ɧvZ;D{vrV~},s* J{.X.[`5lX6S柹7&ܼ Bdkܹ:`MEy!, irx=moC_ctoaWTXyxbqxGX)*_C Ds@{t!>~a 1>^eW/Ol>R7ëd>-~ oC42W}!&C繭Km94ymqx`{rvMXx@GlKetR6ODvcr 4k?|/Uv+=(ju;P~Lm>a*} UjgvbD+PL%dX6F+v(4o$]R-5~/I [/7|38"VIm˶.]Y25VwaԞ!dD'ɽ[Br0]|\F=ObStǞuG@)3K8 zdgmz ۓ_EiCwt5-#;j5#^mEo6g9V8*1+t!}.nGj^Sԍ6Cv˱j|,iv~2 4< a'.֡kD%~T 4!}ǥ7ǐ8.W(qz^-l㳠7b&=yɒNJVxFʾ橻nΙirG(n :(~H@[M2 3~ /ذFSB jLD򅵆`vj'LXq{"6)>{N[UۼXݧ>Vi:iLjB@f>ˢh^\+3PSɆճfq˻Ov`N]c[SmեocWs掩*ڴ#TtRGu1jIuhr >]Z~Pg*y,S "$4Ŵi;oq浽k %#X1$gwVA}Z'FP[^gvf+-<-{Y~~Ërroe Ф_Twep΁F宐2k/߿eo][/N+5ԃZG^ٙ)@R~'T^͸tYոv򟟅gK4_B[{b/ dWfI=Z+؇лXu|$.r(mg Uo}CK-;RkME|Z;+;h:r Zx$88A7[HS 1O!˷B9 և"ᇪ;RX_$|ܷ@.t+B$:&K[J9 Wy%"7rsޔj;!Ͻ;BxR@ kжǰώ$SHbr~cO 7=Le 6#b|\`-5O2Ba %/dKPflĺ+ ^%*!'}Фk)CrP~ Wl`~g.rA2Vxr-TXH]ԃE`z;H=s룲?|#E, ;OO.A"/09hII}]pCI>noy qalu a`W$I^?)ƶl+BtAi-g®qgu\pjE2LPiaO{. 8I9U;Gvv-T)=Cg-i:v'̎j lpmtÊRL ?|{: r>)#bg^U/_KQ{A榵PMO( Q&w)A*ߐY{)¥%CU3 F 7`[t "_X>XOxZ|=m3`[_"u)>r=1 Qu.cV1pu :jnP8)l;scvoDRz(l}{w8\iùgu yc7qcH>S6k_-Z/=C騅e*e}W82Li(>X;ZW7J/Zm> =G2︊'Ckr%oe(#u9B,(!'~+En}ejc9SYc(<3!Mg-21Eh{E Љ`EG>x23NVONq}X/>K=ꄋ'dG.қbtϞXuw_W3hMM!:EHԛx]7[&vԃ8 9BNmab qe/Sf#o7Y^LߐR%hХJ}*GO[A[y~q Xh7 irPQi b8BXsxrRfN}t28qYvy0z#k M?b+C#pr% .qwy#21o>ˎeIN~͡+itZZGwsQdh=EC){rOl,EC:lyH<@1;s?6cُhaMy6d܌>FrEr 8fp/{3]}^n,APgJ=š/M'1B-:%ǖNC(?3'o l>WÀ /};v羫9 8ߙ߄؁ صT%eM-͓Oax7|$%oB d#>rX՝|_Zl?2XCӵǐPU>tYKS^z\ ndS~Ź,MJh<{'/ @ tѿzr,n}kxٍ"-mm[}p_~'Z堌'! ;zl(KahNFثu6Q9cONmMٶ f-DȎآ]R&Hs =OS` ^l0bYx7O|Emͷϼ;JN$R!Tx}LTZ}zeK0.-xy;Sa w D*B޶ rN~gA۽opQ(q!.~/Xn9`$~΋Ok{ӭPxu$jtf[)9XD;P.Py@zq +F;7}}RY>n=3h`aȿ4- ^ N/돴t!b +`-JHtau jZL?<wK$e1ZGV>c ѽ0񋳿2?K =砵JDrbk0j2c}n|rN0p+6/lXFh?'Bh_/EĂMlM{; i}jZR}i'S!9/2~_ZEBLW4*<7Wdh(k$ lN5ʾq1@O1Tv-rMI-mj|OiH^zvaS\'lwvߝXԥA4ٖ<ϠƒNkju8vDT%lbþ yһ~Kb'ñny@e㕇PM 1OO?XKP %luQ, ; ُ]MSDNpAȦEB,Uɛ 2AG3Z?|s RjŭI\'Ʒ.&SP9/>x3'6\eλ}4F)1ڨutQe<\4~(oYK?uWթ<غ^|=6:洧>RtXh?X9.e86 0QoebW_ieHtEGW3 {nHkG+0蕄Hl6R.s/mе@V 8*4ٽvněAaoJ/@)fsH⠇Ob?cE"Isc1v%K!Kfy[%}Rf()ǺVdb rヌltN-2UC PVsQ44PGJm9+AmLӲ{R2QB.w!'dvcpA3Q=$鱋 ,s0rQMۚ'vmAͻfʽ!9X:4tߺ, -ʩ&;wH29,PoJ*4.B!KOhm{hCX_5{:rEb>sܩT]Nbݘ>V棧o߇5n!PUy{Q1>wJR/@|XӦ6C 5B4=`uȤFhÝ.g4\هcj6e=8,QE̖ gt% YKx@Wb]^Eri( pנe2&m6Y~jvyFbD48Vֶ֪ڃ_>%͡j$ENU>rPbF%a;)r_GN 8bY^Ëj׾ A~pʋr!o2(m J9뷬BkhNŝeİUUz4QúQj X}X$9^BTXћp("FJY|FO[WW` ŷ2X.>4sF8͔sJ JeX˘fW!:k//,9[%vZ+3gGɘNr&k=:^!#6m$5FܑQƸp2O1X ,ggSBzjjDw2a8$!F5p~~zc_:3^9X¯`߲.04}cu'JuߨĴkT폪JkmG7g.GӋG"!S}2lߔ`ǰ#[9QìSx%;,`Yׅ~zd vP(̌"o&XC%דؔW)4L+<?1ݸ~-eag<׹{Pblm R )sU iK~ ?U<5>g܎*@-( \ !mN,U>&)M JR`Wvss_ƜU&[%[?ƾC>|wŚ_O)"4>wJ)H~kJ)r 5{R_pM&d4y %S:t\7crcBXf8oCTf;ݦ%qxG-zxYgBO&asPOҲv/;u!c\(43gCu0e >X~ ]8AzPo^c~h(RTF" u$RhP"%!+EVْ{{^{]vDx=x<|wjU!YLɕ3} \&R->3#օb1[*V> 7+C E`Py0u00s2Y 9/5jwAEBk(Y/ ~5'DFY4y1!)F Fr4퀒)=t4$]*!\7CrʧQw99{@uƬE0xrل4V|caǩ>R0;.5}dub ?.B[^lvǂ(k'OWfAG锯,Ò+ 䨈HblY7b!>c /9:/\7 jEחr:6 Fw:c)qS Ţ -b]?B0:X.te5R^L %,,_Rf.ѦCQs]̐MEvoJFzR=oox=Å${1\O1->K3?}UlzGEai'cA0&DS3=zsk0t1o7ſLVz8aj5xΓ6]•]Ȥz5>b/$}AVp(dǸǏb L9& sƬ`x3*n`2 //gnB5-:(p`#jנ1E]wð*ЧĔW2Lˠ/Io3 Qކ L2.KO=W5ymZ粵OҠ~ JE9jc;_elׅK%E[H|MGAe.:3:6gһğ=u]kT,R>Cñ?;L@pС_z!8I6+C̓n=Papu>1Lk;Թ|x̓oٛBVg9COx3C@{sC 3!Q*}Q ̅CϿAWˍ= tO#u7쒦wg3xqyhl[$@Oz ;$ьG(u&JS ~P㶀ioU~c>UK\ej^%B~k^^> 7:ncSDBt=Va Z`ǯSO@̵׏/aA $ZJCSz UU,{|KxG{`:䝖Ś?K%rijt26BugXҦ to?={e@AauN ߝSkʱ%P B܎JX`/]|xXpkݔ ): U_@B7aZ ־6JеoKa[Ky#Pa{bUtH #!ʆú*Iܞ/ƌ$^O=yYWƢkeG 0¯-> O~TCڍe{\9 _|f)ߘF@4 \j%UJK6LYźRL8z6^UzݎS/.:"ű)ő 齭[7b1?ӯwH)/T IWwcKS\g­_1( irnjU= 5t>44%5xmulEv@'4??zʉ jAAPK7: 9 ε ߱660=F|%n\\??|bC]P7DWځu2+`˲yWLm i)ƹ~aRd$muVm0KA|GƔΣwZx7s/D=߬=._=ʘh.ߕK$۷ F#mH/|Rm4V?Xߨ<]l&0hNy>Td* @4,767j-1I4U_ ,MXmN'2GMXI/i5J5"X# M G/i@/^!ʰgؤHKϣƬY˳V`UkM,Ē qĈF|^$pa܌gQ'H9H3fI%)N3Xpd2c5dσ*L8-rrIfO`/{i;١7sox}oci sagc9%KR|vuIkзl0 Ko>A[]6 :DYQWo 6P˰>knס{BMѮ`$i&j{9@y8ޡ Zl.:t&By-E܋$sM3߱$1l~%_m!T0_ݔ?:nY<֭_v:zލ$UP2Ǒm=[\E *ר|Ņ̓ճ8CYx96R28p!]\.>tN [ tp7ʯl.Ǒ;%\a85z,SG$9%{;p@"CNh.qw?rY%C_mP/茢>쩅`&) h>$ WGduC8Smb'EV̽K& t$iUmc>~L+Okl;9W{hAMkSSP_*>Dxiܡܸ1UM5rz/c=Ǿ-oՋbߝ9PvI .4RN<}5oN4BBѐsNu5Ug: u;'7yܴB(T;km߭H\+ 2!֠; 9{1aҲ:ݎ@AcG&vb+#J9LZv$8yrDm䎑{vE{OOdt gc #P} LbO8- z_,F }Z͜P'Ѯ!<(Vy%O ztz-Qkj %Po!tna:_쩀t[`@䨐8hBi怅RE<{m@ :e٩B9˄ʞl6rA.Y`˧綅qVHx=} 2m(Ak>"zemAyC.Ar~gg*scJipg Ug\Wɗ Ƃ9,06G6:mySwƊuX!TU,D?j;yh0 b  ~ykn9b Y4b>lDz'QIAƏQ+u^bުSׯ3?O1hŪ~zlbΏjCCa5OV%,{m?)MD/eD8 J*|Z gꌞ@XaKqhci\4:8ca̗ڍk:._MCX}MspHiA*/h女5KXF%Kt9/[υ %;~c˘YʘPA-f{ La܍Ξ S_yzJP< o );nqaB)cQ%X|RyQMbs5O^yH+qxu8`y+]= 0.zNo㍊i/uV&L8Ж/?+]o{~`MZ782s4k›H_ʼnE7p g6]rGd]t/a!jO2X6pU'gyD^ERHT7m{&tz_9!ˬSy|L'm@7/*35Ceac/: RA abm|[;_ 6Om&+?$JU{+à`GW4]wn"v{w$RBy>VӭO6~؅efJ Js}FސzߪHt[F؈!1C]S|m_zw.mJ1cnl/nMQ.@ΕAei pâxOckwϪH[]lƊw|/gYѯVƤmv狪< qϕe3˭m[K.hh}S $UƧꥡ<vNXʷ5vTmVs F{PZ Zi DDwuȾ/8_ eW:ߥѳY!^hfJs|qs :Ezsw|)R[LBvY1krdJB䰀“vb ǟA)U")L!Fn8N YViH׭-_yB{0D[h>})4َa+d99OmǃgXI,yxFu_x Wf.` [Z74;r"*q([ryuP[ljaD@z(be; N`{+o '_lZeԼ"/ivt\ <`jLGt SOc ?c|,%FK_cM]:\▷Z@iP_$QWw>2V  .'ɀݍ^a.=CqTĆWG@sؑz3˧ O$VlCrX)N:A(f^9 Ul=N@~MqkJ ƎwhJ>#3e;RGt.኿{aw(Dُ0x(WabaÞ BŧM(e=T̏ 3JjXZc?lN00†۶,P J 5?4[CHd 8U2}[u2k*z>f#J1Z0B6cݥL(ּ+mɃ҅;evSB3 ω@f0-W)e2Dbce̒)~{vT d|nD`k[ &Б%Ii lRgzH;ͳ0X39oPr  n'lO_Y 3:To! -A:- Qm)/B@9c?GJ>C8yS힮|@f{ne|lw$a1MG9wsMGgcOrYq*ZY_0-L7xm\+!yMg; I3$I 9Gĺ}"?a'I-v>S=}p m 6m߹h˖OhtyycfhףmC%ʱJ,,R켙{?ǂ\ei~' iu"mb<6>юlRsn s_:coN?Ȅ叕֡eFB'm6uAXђM VO&BȠәwI}—-~6J$ދ4{>b+˼ntP]n$y!g+=Xb^`홅ewz:09bs;ܑ<5 %S}r{8b녏qY=Y)mglB(Ͳ$,'nkܕ8S|PVr@sC`~nɤ:&s§`y_ޗE0B|A ߃T irX9lJwte?tF1oivs,evwqMl٘"=-Xuڕ)~Xp5(cSo5tUnt4zDj=YSV [^|^<};-jߡ^;AC[tCB|o 13l.<~Ν_[_\lBrP9hIk*-?}la+ .Mc΅Sw;|K>CE_},+M)(SЬe&Rp~?s>bF?ӭ"PjGt'0nՋm/e|-Mp5v<}f~5"EM 8{i'bRvbsҸX;+o`b1K{>CXƖ.ݠL'`KI{Bv+_(?/d C,?((Ε-$D9c=yR:yK-oaCk52XvGCzc֝Bbߵ-BOA~QBmU$BעKGTj6COj&hK`},a$CZ7o 7I5]YiW n뼵Yha枡v.h1u~[߲4 sG g*@zp'#?O( rAi[5>z~p;z4ng*u?m%g<..v2Dh|;1p?dОSB`̥ths| S? ݻdظK4ed:ORz5UMB6a ׆"*h[+s*ꀹ3G4^>WaZНO{85!BE\Ċ>me݃7ѷlK@86D\#*d!za 3nEμ&!)y/-.ݱ>:i+c|i&ӕZ DabUm:5 ٸ@3kwG_?4{Mⳗw11WaL 3<5VF5 q?\FO9CÛ),~irL)/? r)rfYڟJ1pNj\4w?ozTA(gz <O B5M=,uti9{֡oQKM6l8Yy,Obry )v298,cߏ|^ AY207 0@9L=|^QMHYBo8M@.)P}G|A(m8g_*Pﴇe-1}-a…HZG1mGSʻvaj<A=cQLՙ8Z0v|[j?;d#ap!y-, 2K[NHc]Sj48% ec)j}mU)NzwK:E 3f>dg?wj a*;k;w$3{&;(cm5CfXx8y|h[Wű/58mOw&]pjPzΦ}Ecsq'8'sc%=@.']`q'Zle Zc.n>[!#"a([ax7Tj`uCC8;#SK6!QG5 ]Pa"x;nW=aťVС?2o}y\f8V)_Nr`-;ɒ>aߤ\X%o[ 6w{v?zB` nRhMCq`Juqҳ9~c^0|uHP2"|%\_/!YZi0dN asOi5+8lƠ:w\)^4>kHi?Ԏd(W~I1"?հ6(;>gŚbQ eKuv.l~4+ iKFO{fځ^,~zVu状 v$˻ iNy0Z.,JWbuE {{xq7'0NaeV/;(xs1E Q+y"v]ɤ4̉Јb*h m,dBX,IodAۚT CVGbf(3}Ȼ32E\BT (z|+?`*xkd+TWAÌzmgl^z1P(ܟ[3veWaǩWf@Ys3p?D% ;ce?jiK E%p;2yj2-!\~ÎMU"Iw`隮)!_|D,ev!QT;bK]1,݂is_!3mw*N+{'WbGH .i *L8EQn:}M#PSG0o>c؉/eH1OGƜJY5n^U8t6za60wi `0^ۋ"R"g^?_.%糰vCCZ"a'Ӫ36'6䧄Ơ l,h,flaulǎ_!vKT8bR7 Sdjq^ȭ,^8uj0 O䁬A0K3l @lYM% Ses93=cm6m>Ggbr쨹:?0{)TGJ$ sb6KE4&3{܄mN&蝧|ڷ"^Lh~zu mcRywA8B`Β{VB'\{7[+eF| Vjxl8eh;k۹~}MOZ+MTaW:>2ĹT&;JqJX@|6nQY$75Dl?lw}%rߔ>nxB"uGaw\cv  ľ1'pzo8u"7ajȾI߀"w^\'&h *y~q_oc@02zHU>vFBsӺrZPlx&Bs94ەrMBp㥇^0K\cGan3+Tf't 4N}oztmgquhd#ҔC/'yɉhCze0u[ >J׸aA_'1>T K>c)H_[9qW+n߇˗Iy`R\@GZ&G܎׫x*m4z`R7pAgH;P[uWZIpyEȮm|&lg w0^Fv^2ӛywU([sT@:pL4]2lDvF7,WE[{*;@ (/hO<Õp䌦q\yPKxE|߯ BƸ_؜Ŧ|S8<Pc*H"D=><%0ƥH&0y:E $-XyA 2Pٻː~}w[*~ Voނ`g㭜MUn;N JB#(xh(C~3nQiJ)Eįg @ 'I) cxjP@Yš%}D3%pmMllQ4卹eV9q˷;#,k!AyOXG9@]zذNQE4OS {nH8R즚4F~s> 9&PņOp47VǎCOP~0_ ^djcI4tfi{mߧ?4`vv|2="z\LJ*eTnͻZ8o2>ƘgP*_3> N@gaa1S x';+jNMl{΀E{=_`AZnUZ\1p_1c0m޵2go[=L Wp4VvE9! gU4/87X8w=T&(Bm(~ W~(>`qR=`&@0?dEe 'QW/[}u{b>ApWݸ .hccNc5uֶ؋'du~%LH䱺610vFz96SБ{9>cP,;*/;c#/42pᇸNU(hJNٍ];b`χ.F" J 7Ҙ]zc}?:y}]泔mI&;&VA{1ϑ4&YWauMdf S5}G0: k/ctwo^1| }k3a!Xo#96 `-EvH#l 4K,V<C5U)QH~xo( U{_:cn Hz:KwIWXJ=< ٟ$rاF/!Y!*V-'T8--uDGgԅM;@Rj{@\ߦ +2t/o: FQ˲,Ne:ҧmf4 +!~2?g~h)W ӊ܄k0@q!wVFM4|23Vrl-ۭW1Gꣲ {x 4d'Q*`Ne5 C~A~`땦ewAM;qmZOLh^7NqڽQ zqJ[ -p2 ;_|6?/?ͯk;*9L 󚥮 lV훧15!>Rz;U3-?f h^9}%X Mn{>7^h9(qov=u ߿aj]TxR.PUa_`Ǒ={z$d\=т|ip7B #9nȈE.+Viwy}f!.dȠrPZz2 QjŒ̶XZg:|oM7w[CѭU˘;0>Ŏw%E*yA_aHoަt!>-L_T^Be\ӎ%3M,bJ w_X2Eu&❟ 0SAQ j1]Om6¸䄻*Þ繱Fde*VD6>X`˜n*؃XihaA%_ŠX#y|frJv$6xчnn[^/l|#{': \J1Ok4qҵXNn E*C iG6mV ί$J!JdlI%[ ނ+kJoHf^ ۥooۏ} M rqO0YiLƇ Rs,W՗yL4^=8UMX̀6ۺ`SywA{ҹ݊0`2>X8A׹~Nӣo>zKHBK=LVcflpir <&"%eߑ.H;* 9Kxsc:L֎! T(Y40\B eae&H״?f{IV@n3&Z3C Zm7B랋,Y/ 2i廧Ie48?!{|!k-ݱi+Ue_AB^[A]YeT 6r R^yf:we9 HQ>qK+K ]%]v!@V0J\sQ`_Epwݪr|EJTt&'Ҽ fbX+j@4/zRhN'Hy^bHls gQ*K{X>a_n+XdU\ *Yj2M)wd`,Š4w_8u1{z6XLӠe>pnPk@Y( YVŠ_6<:D.ޯMW!JoaĢ5EȎ 5b]_3i4l ˓ʞBYv7ϒ%CAwW$3ĭ/Ťgt'ļAң#I`ӝ^ڞ/}xӘAV-]6U_=/_A]Lߣ@a EiW!ٳr'2k<,a^ !<n:3AIڄJ݂v w5tAV_>@ ֺ.`qlh[~ zi@20 NbroM,ky@N?9'(;Jkmp1?EwmvL@'Nܾr쑔_)?# pkIͽB}Se`]ǜc|Mp̑(lT5MnOjBq^s0˯ʗ& Д+,Ϋ4BKeDž `⥗/Tu,q"+_wd!PAGMšN )*vcGC5qⲣ*OhV5o}]2pTztxu}nL<qAZ2=s>L?4^?YoF^=wX\ iNKXtG;^{ LWcSo&0 Ԫ2;#g >J35!ϟ{A37b(]Gte2 a$={u/bXvȝp=ʯ]]Yb! "_ y)M+(bn cY4[>W0Ndocg򢬜;rmx з#7,/&r}i6Ꜣ޷c+w$;!n@TܢX}D%)ۡ_GU;Ǣ.޻%#qswg1~u0O@ࡀW|[:Bk8Ű15LHw=[@'jЭlVi4:G9bm7aNY. {ȬۤoBI"EhZH%ڨ+N\ɳ\9})JwE~vU~ɺl;TSl7g oX8>˅UyM&Er96KίFkjG<ʼnd *vjoṠ1 sj}NR$VUkay@xs⎱3p7Qa~=`qMj@:Kv ow^'C/t8C.v*QŒJE*2TG.퇲[PV\`MB?}l0ԢLd :tL: ʙ-b#I㽎ul=G*褳 <-ia$/=:}&悡`hI-.mIZظMGR)Ǟf)nV̋".ieP"{SU ?Ҙ%K`b=Y4&^P඘g1ȇZXzCgQF t$'8AqQSRiNbz I]dA_!t^wC]N9@޹LAzv2CK[=a15,]f6D3#Q8Q8aǞZPӯj ? 0\0dfƵS>>ƝPp7~V O̍v$͙ űmnqB0\F^Z*Li ushot)$6 _v,쀍G8VR0' 1DK&% `c OsX`xcJ| #N'Rs@B)߳YȽGϖZcᒫ0fT5 I,7*wI|Y/]S0FY'pfpC~h=˩ :Fa(O6 l=)@sӾxƄO|y(w1ҡ>-U)[s^"ME'hxB6;/ kX&Vaam,>Oat?H| 9EenaßwBqVH <PBן;Xcgʼ?z2i!퓎Eۄd{V0kZ'dkIzɃp)bk:e[NRkg^ua eL^g(-=_{I9\{;P^ϹCmbZ._h(]>gDj{?So]+.CΜO:^AUwxmױB,Hk֜ jO KsK'j??m*%aG[*}OX$nWmU|UGޟw{cQhgK?BܐA֑۴1xM$f6=ffxQk yd=(g+|=n7,1"naAt_8Z'LZg$XM)g<:n{qR5swI$bKsK6䴫s @m/cޥ):NK,6z*xR'bP%%|C ~"8i?:]9Ds*/?ReTgxbO|*5SnRXA*w✖Wsaw1\X6= qW^u,ĕ=9Ub!xpԾp W;V>!70r)|Bs7čyGaqbzDݸIgOai k0fѽ<\O1#w>',cZIH.E4%mW0{g6[>5ZBלM; f̄t!}Ug]<_@t)y(u%dZ]uUy?E4ջ{ ;A.*:?r-Agޭ<7/ sMP6TyxmTv덝 M;.QbY\ejy1: zIb6ro]܀DePlpr!|LE,4^Uιr-hv۳ Q0|߃f;"3 56nL4k\tj GpH H[#Fs 7i.Uf;wF i޼ eomR}-}ȶQXHCV '<^}Sư@ӆ;(wt}qBei1 Zh2л r;s+"ad I@5r_'$IN;3r)|{~s e8YRSj43zr6+&M;_te'Pʎb TCQc;biyUi-Мrw-Q!CMת=r 8)53XHH&=I VuZ3)䂃Z5B\p$4H3!pPZjĩe0zjl,{GNU m~{{{-jZZ`oNu2c'e|Q[D>oh_z<&n \e﷣P2_*y_"=,I)=Sahwgng^?D+/׉)!w(nkpBe7H/5?kG/#!sA.>Haݳ JW_M@@AUu60jzc_ %u·8󵸢eTX$zW \yb%,C6b~_X͞% BoХ@񪰧1T.!L=)&euiJİ[> }Ÿ;8j=T>a{8tBb"Fж%}vW\d\pƑ]e/~mùn\̉KDP=ڴ'·M:q GY1 8rk ֛)>1M28_rUoG(ܿ7檄U>slb9;7w o^@ޑU% 92n.DV\7SS7޸AܟOZo@ˏ{?QsOn(ͨ`NYN*3`&yJ"Aug@݂5,9`riғAn5n3-g",tKQ}HaG_DLfB^bL6L|reӋHmK:z˹T۷o$1G]nN1%ie @kv:/tZ9|PYwkw̃6)7@h ^xHmyCn[524pjS6P~ٽ|=ț 0#_9]HpN3*/9iG!Jxmm˃ GWG-Gz/>qzd hBNW@\0 Ǐ^ Ω2r`<~/þ,E,8aYd*P% XA uWArŖ4̳X)i$Qr_Nmi`׷. X+$)_?|)NR2=,!sP_E6vqL5U//ꟊ>%! P=Vjm_9 #L5r?$E%@OK!Y\xIG&P#=aiڷ˅exE5_wS$@j.9a%5n3e@oMRp>mjY\~0G8>iK]5پGmFF̬R7<0#uAV1_B-l8%X 1V ן2I+VhXYF0lOUo[}e/0gòy[J;6UJm0?bկkYYZ6Ea~(هfw+/>i%jh`vft1럇wGyЎE _k z5XJJza"ҲkNJ^9&'r/$aR.+_=Q4@nK%P|Bwsi) %m!#=H JC ><=`8=է%@" h%AH)OL.p-A?q$5 O6A`|%XrڕYgѺL3 ĚS0a]m9d8gf[Eq\ u.Akǂ<m`"}'!rV,z2-2PW`|kPx6?:\{ē̠7N ͺ+qw3ul⧀HL#tSHXH:?[T#RmLoׂqۥtA-kYA$쮵>q#^@xrP1#VW&r*3m|wQ@J3O]3izSʭKkIMSY]ezNjd>#k?œò<1iz`{"KVm=ۡX - kmP mex Uss|)7IlBhc)Y{G j|u==kpٺ"֜xBə>,̱[z j dt#3N%%cax[sgj9W!,3#8 !:He8z|Ɣ.!qɇv*VsVoiߣL ߫ ܛ0߰T(+6zv_^KefXv3'Zhs^\-7W92>N=q69H9 g$7!Yj!GeC- σ/7}zBΤ_0hx146rj n>6b8%YJ sJ 1{|AE*// `خ1(,0\ս DDÊW&M?_b9ׅmV/4 4Ӌߜ+ m5ۏ| V{Uoc뽜vߌxT0(] =2ݲvJ.py@4T|Te*ǖSX0\VtgG3r @`bɇ}¦~e4fܲ\؁an$ŚWeK@>ak]rY9%u-)R+`ha(%h_  rk2%;cZSZ8fap^ %Z\8F/ӚH{ޫǞGNϙycf3a1!"`VCTaʥ(+Tľ#T'Tjp0f"LC']FNGs0cmI=m]! xG#( U vtYX׾K9I uHܻY]WBF=+-wJ.bC_i`+&w&i+hR2 LN< %RjlQ4(GhRqjH{Y\|Ya~8h`h|OQIgfϬޱRrG_pPy{o pwS 4Ru#y3gG[Xq> ;twp{c]H7NAB"ޘumy*#I6@!8C|,3||SEH? JGp@Uobvnnw~d$s PN2Y{`2H!n zr՜"թž n3Ec/G ^+-JIni(;d)%VA׀4h~?(_k^Ţq(XфߗK͹7zMTX/H{or>f/ޗzS\Ŵ7N)`wt1dΆ$g5&яƒOr; {ey+RͿ, w&a#;>lV@uښH$BRYF{ꩡs\f}ˠ=ci{}*~g@@@S>,|_w5+fWdcɉXLAYZc^ {,O2#0͝PC`%=ܿ7NxcFnYTm/L$8+<64,wbǑ{h`ǥ( ]]"~]2|gaI7WG.}S=E; 9tƮo gf4>{ڷWnJÅ#Ocq1-,.{JW\M%аE7{oಭbk ,hkǔDk%Qދ-hCmddd"<قC8L'?pGM:aӢz1Jz!H2Qt j`G[rDux84|27>,#BӗP1DpXtÅI1+?m\:nAEg"6GysASAc]о&qWm.џ^k Ľ0R̾yu>L5^,}o-BgW'_arJ /06.z}I֗+ZD}E$V\xy2@bY҉C!=%몌0M5!Lܻ^#^@81ENa }H?b"fP:MANx~e_cܷ5y/? : uğPqE#{ywz>P>[YǺQk>y6I 79~5.)3A2Q̔☈d񆨔R v^{B _ϣUO%\׹ULO?`xGQ" +v݂:G s$)rSo>.P,R~^|kD]GRllZμN؁]~ Xz;> |7rwBCܢC(VM:gKG$L,qO$(6‘C)6{a-Ub>Fk>_Uv&*qcz(%Kl⅃W>U'V> &$ZVܻ,q ƴ%U+9#"|+{6 Ng놓i8|`->lo3 o ͟@/#WF}53"`R ?H&ÉHHsϧPjk vބtש;a&&˘w jH̖MR)mLߴz_=$]S݈1}m[9`ro]̱6b/›'@j~N ;QP-MG<\ƐIDc3 2^0lrޱʾ7Be OĠuߣoT:\uCkιyu~.%۵@k[k'QӿM&y]2O@5K9j [7"eCrP^*hI #ُ@y#%/@o@bh慖?@;X}:x+kԬzCEfFƓah;.)GD\L!a[P5൚ ^&C@Mmhn2ө搜SCOu;ֽp3+Kk҃RGE,scm,"PzեF٬'= Oz)Dϒ=t@@נu+#=QFm{㕅 !*'@^(ʄ&f y ~:[ `^ͽMsH(3LbXymlPdxI_lF| ~ e%ϕu|Nu!geLYǴ))VCF5b];۟(;ȼ=bShd z/(1%`/}(ݪo.ra͹i(q3qA=]Хt4T0 ZR4C8cD gY2 SoQRB߯`1MBvb0Iߴ{V.#>L`1xeנ{W0w$Ww(5_K/rY>lqo[g~rS$ZT,{;m:?m%C-Ą, "\S}ЭuD07L9Ӌ: c^(_/QҴ0}aRg_'}Yv͐kmy4=vGn]¸Y}סHjp/Ж*g۞C.ǠQ)hzg7`%h1-/8w ØkAamVzw֙bJ^8R÷05 ҖO?HXjbm0x;,4;dUe?sG?ҮЙ$c(OW*֢YHhy%4"uu;2t6"ZV @h{u }`v*T,_ݠ>I q1Nv mΞw9İDH a 瀺, tso]=o}'d1B4!]R  6Hz~fH7Zx(i݃Ku1QM\T^l`sfhm|,D@"Mh7x sW8up{v|W/ܹ0K`GoqE$3m\y?秆cudF*vl{FHnuN'=+ s%% M:ضq4}[kl_ ~96jSsoŹ#uQ]^>>`L XE$6ۏKVnG>ϑ~}KLB7ɺ Ș:ˏgRïJ¼kBւ UWѡkPW3G 50ٞU{Pl?Cqcu =(!$?dS z0o1\ȜKWSb=XrbE@W EEbVh/0tT[&-ӠjDAU K_YU(|77K{$WL"Ϡ]Y=WBzuX-.0 !1I,DZ,)Ny El\AFl5:_41ys\ټF8OnT=2QjfɯBu|NZH\mowadkwa I\Ap3w0 HaxWbpScK$:ƀ~cvo$]Qglϫ(B^d.|ּ`&,~_ gzކk=g'=,hȟwvAyٓWjӉ _ ƣ瑞B$Kd"2ѶV&ReN.;Cj9T@M>-.qжBwf//6(c e+Pr:V{̼vb\k(TPy21<{RT*QojnA%QqJ1)mt˂0A :b BM#z߼V 4Y5d[AKL:֚ 1@|$M"}{淋GD1Wkb%"تČIs{7Gg-l-l ~yc>U(d`hsX&+qBc%VFž.r+ B!l+eGEbU(8/\3V^*9'^z4B98X!zf~Bi&cg> .XA;V= >PSa>K~#L*;PO/tJ!Rvx-b,U+2C]{/SQ,{x#JZ-HM? $tg*bSAҲ3)Aӓo@;/I(OӼsF OkAfI\eT U-/#R.^6]Ss&dVg־,EP~TR) ˓XB{0RV%x̕)MaڈzaPL@q$Ą/TC{W9ㆿ횞 - -nn4+@x94 X"c32`=A4)_,ύ%CWj>zҔ vp9VgޭNaIw/azI V(螕s ZmԀ&"NP\%ynjKƐ,_BFm- Nu5[fwY 1Ep=~uYY<\El(.SG:$-,3"6׼_ /Ca*M:*dA=cܛדɇ l2}?dܬQ[__›*^{;޸eTA:z#*tTqC e+:S5Up2/,0COe^OVR~xu+45<ҍ4Xo2̎}9{mI]ձ+\S} *bb]ud,))˃j1vGnr4nrjԟ ϫ++q5gsu~HC8˲$R//ڡ,P mOy]u `i VZfc8C]!T(\.gN;5Hy5)x߲*w,'.5>̄Y?X>bTY:'dhNH 9w`uJk?|k]E>r`ŁI,hD{QzM= R*^W`ō/^{Izȱa0 WQ8bcwcSU3ARY`_fT`"6~dk^A=:^}#!/ yae]:頋r"t?φ`"INf0:=>u)X@ERL6!4ö^cXm{PNYp,T(e׿. OB%_G?| *0{;xmkq#e݇K;{t`Ԣ 2sX5 >_WݥS-@Syŧ0Ѻ*J(ސ~v ȓz;z< ۳4`2lLez^As]3G VmU2둕AH$;F5av2lG3{|i~ 6u?ɜNI`$r V:ENֵت-F\sGafmg 12Ǵ|}lJ"L˨QS ]/jk&6mh%n9lp&4e/keX(ėV._Q"j>en s- 0e@Z|)c91ΗKc[7] /]I1T  ewVq@"`!Fׇ~bb(nk+h7<;n@2y>O@zGHsI:blɈzt 3 ҥ߸`K}?}95$F;YPx*A^;Io߭qu.s6Xy2V$hAg1Sl}P2Hr[5h)]@Zyx~WyO_u~ z,PMŮI<6݇g)h%B`ꜤW=x˜Roԛ 2wT"C8J Ge-> =9|_&0'GcۢWeXyV|RzƖ#Z8J*E.JF8̗r ;a;N4%+ct'͕Hd=cŢeʇ8n"_hK[Wk\7Ԡ[T˛U^,S lL5mh6F| l)"<ל; $[s)_)iC)ҺBӲlOVcI0+O?| H4zaI[Lڕr 3~;3>k<fI,*napt%l6}M m~*Mm3'.^![4Œ2S%"&&qUǜH6+mVwlrcкŜɗv즰fb@q;h"GO{B{)ވ#MMWlpW`-֛F+2JykTle7=?ẁXomE>Pڅ=De->B[_Pi< rjE&OC? Kڄa42L\#<]*0\"zl,m }Ihyrݷϥ x 5L+?>WLBTj K|Ց.N2p®"*cyO?Zfs5yņb'p5sx oDAQ(d@)ml>a%Vskn{fh*GL8hpZN·`)0c(>@@P8s5 + M =oj"ktWh/pB%[Wȟ(0-2AY!V e ƭ}xed<ǠY+P,-d- TiB%YK͢>in%z^"=T[OACK2JAh9y|<7 EWkb.a7C!o^o@XGE9 N{Bs&ld.;c[Ӷ}8U&k6V*JźS'Cc5+j{acל6`$BoɿSg;B ~=&,Ho84ѧgqxTt5+S{\u|,\|{4hm 0y$KZЁU&?Ђ{2=' 2SnAɾ9AtQwec-+>] jvP`3Z KO׶.iH-'+v T cgtyi?DžvK'D1H';xD:*`jO7$"%i BW4l-7 Gp:Ч5SiZrsXWxk(7ٝgߘzxJ`/fFvd )y$u.YR<yeJ??s;pb7o`ߝfȰs操=;9:>X]fC5æVok߭{80=6Z/xsC1hV%0Hön`qj#5/\*ASbY%| +r>ɄL߳)p ֬ /iG\ZePӱ4a]w(_!,-B)>dОj~OJ\C)v|z0a^91+7M8K_n O im7:@JYX(wmz6}&u4pvPW[q-𛳸.AyτA9 hnaX=]4T&="",=eGGL112{ ~y*@# ]= ;d:Pj @8rm 5Rj% mP.DG}|FB~h2H1 :b֎03a6-crƎdz)!e_|{pFV|"3!T W&_du"0ř$5ftcw*pFVpm#7_nߋ;!~e%T+l亞G/aľ7RVZ7'tuxƒADyG!j;ty:?d/Tކ!TW,oM8e=lQQ|ޑwX+9tx>mZOfeX. l쇟{¥a.U~g)1kM/Ք/|yPX7X譹0G%!L*DžaqQ,%cܛO{01T6t/'P"X1:Pڔ< 8ELVjo&ʇŶ-asFW./AẀX<4Os|">zUjd.5:2H0Gr]ch㤁y$ P4G.mAOo֫^E=k*{NQ߄6:o\29nkoi?VF$͐v|mgsv UJG0΋9g%֦9]'^@3́~AHk,is/[?mV=8r $Nԫ42<yL'J>٤%elLLĥK.W!s;f 6W^yDŽYڠC?|T48셦7 E`dj nf#H e = 0x;l?|c%$!{d*=^dbz𼄍I4} o@s6J=Z:H%To$t]8 bgj(Q=kޗC ;E$ы nޯMP򂋃6>ˈr1uo*(^]0h):S(}棗<|⣯*WrEKžk˭AU$ۅ:kϠ ?_kxb)#`(nn?yUp"=5AX>GP.˾qy\E;#Q8d'xYVB~f ySE0ʕJǸhgATW)}:~b _ 2k!]?B_,6s0I~a#Csb1 ;h=~Ͳq::ϳ`o+AUϛ7.^OIO{jPATTgmÈ=;)0jytb'LmbuZGoL|Ck{+`(P_ө ӏ!LPD9җp@B]JN-X}5AQy"<4oTXb/ E "q&@F,:E 6uN[W@/d7n٘2nqlœ<|_`d̾ǘrHq K ,?qx,LK/wbk"UMY2(P*u$[RB`56hp(X|C;Z5D1FcoΣo_4Ð9P C.Pp;zb_2kM*j;уKlfej>X .cǥ ߕ~{ݾSSaʢuތiz3fF`yMԹXm%Ŕ Z>?sƱv"XT'̣S!O1USCd-.'GKف䞿iz6?}>7@Ƈg X|۞oͱvRu\ \QR~_8|])<~;ƫ1q慹O |N3:*a1kuhՔ ݷDxaJ $ў;vڎM[5auvin|^ q Fb}l2 GֱXR.:O YP{І?gpR܊kiL˯[wpYA%.c \V $yv T;ⵈl}STGLA0N ]M>]u9Rqk/+BPZ] klcgJCiN9kY5dʦQ|0d ķ^2\;kn+O`[ RL9v$ laΦ\U|ulrׯv H$ ݾ?*eWJL|Ha7u[GlCz{w뗞7~KI &˻;ÄRIf꾅Qo?"`ƽ+)Z]J 4jT.(QG8܅w2# g&AE%iHrC(" y/Tv/OFTˡl0L4AeʸꅺKN%z?:UbGQQt:y&I}I'dHVV!2SŠW΁[ :n~Œʿ/@ wjG M\Z- -:0!B) J6]/CG21e3h2y< BNTP{kwoթct[~A>N* N"T ڶ_ET" X:e> 3D h<)탅Iɟc'Bn[Ӿ-rC>:PR9= ]E88`0>,W-ӤOnCioC3ÝmTl}-PEF]'̏a ' XEXrQ1oS[=U6P .\-,R :pR߷ ʺ$ס]#0_]G,:N'W#Ĕ3L|7Oģ uf_a~HUa0U; t˯n?M-WX'=&, <֜o d0ooC?p-4Qqg }Yh#:%^< EXFhߍ/Z} oƲM㴎z揿~ʅyϢ75b^%myA[&F !)RʩV&zQcCOcݴ99Z{[1Gw;O7wRmlO:{XD| ~~ Z_xc0_]_rFxm:WH$՝A[iOt~;U Cu4){vij+cCNZ5RR'l!ZiZyC Z`AS]h'0{ ׊߶("H.uxT/1*6fުb Ƹ/Cnd&nXUN;L]?~Ȟ;!# 19$Ͽ YA aM TqD;-C"Eh0Z?K4 P9%Ch|X8 k<(+1E FTTu\TFj {S]]r0D'|1~ӫ{6":Uu`ޤŦu(?ik b>ͬBWAaN ZPLےTI(lUgm"W{ /TK$pH9nM`?|n]Y픅 "t_,W?]ztA}΍5g kjlviP%еY`y{1F:xrEc|HYZkal֝Wi=g@t.V3WMs `!qͅ6il>W@و}I&9ŋxl3 |9zg?C۸)~h*RKlP(&&=J- :t0QXG/jL$Ià}*X03?|Ǟ$BIOY h6K GNϓ9BkKmҢPgYr%gZ.R$Mձf"GA;+!)L傳@, M ѕgn@ɓ\޽t &u]NrWdPՔֿiZ1p-9xjTߝTSf? q I CHP@=v zB{ΨAu> 90d:+dQ}0y)xafZ1,Y˯ e9pd +_olH4Rq78C} 3>Sg]^ :_?t‡8>%rTby#GzNaIkT5Ƀ9bq񖥮vfV(_|e؈&AŤ,2T4Ǟ!j|aP3 @̚uð#0@؋f%Xy6++-k-I7ťQgDnEubM>LT} *T箻HA9~0(S87Fž0m-~]4U|/vӷ8asUƓ|f)ƛ:RjSeS9/@l %gIaևUW'Ut{5m%x1v}:dz+*m`\{4{6f Š_Z#sgis+;`|$}[+#=ÆxIugVlnc'3eaM,.Z_ԚCĐc 8yv"XXo@U,[:يS20ط[?rG~i<)hNoι E;ATu/r(55wSf&Ƿ^=rl@g.:x$U7&5Cw%:6hK6izePlM3sbL__&5ôho+ZKxuj> b-~8>{l>C}Y$_ \򀗐;ל6iktQiU8U4G H dbVR*$X]  ek<1Jd~ᆍTe7$ q\1=}3K>HD+&-P2KI\ UY~`7WBI}l}(>eԃTdwkHwB -j6- *h X0EP8kB^Z*{=+/d|8O?v#2UNp@tb#>Z9G+ܕu蠠{N J֝CaCP\K;SKnjJ Xhצ(Žx_20!aKjz; )Ea!X@ɋ>G鱛":o*4qDŽo҇sg!Tp^r3H^x.9ݝgI.y3xݰL:h/ !YBݗW1&^(nLZW4'~ݛ5%1 r:*];v3l殸@a1l0}*U gߺկ U̠TșP_q.R C7X6m)!O$=g;i@ :JP<(34>NiŠ*3)}kO8'n`1[PIk%?3fr.aqXs(d2 ?dELr7ӥd\$|$ o~,Ѵd,Hdr-H Eɘ\3_ Ih̪18uG]xeϳ^N`ӋέDžӷf//AXaH\$$T_w!wK`S H|aF8=~?sJBݍozx:N<dwbKmk~д&x4achьl qڸޱ>$Ygd.z,O(Ur OݳsVhylʊ;yVPuz]Ny\E!qҸyYKoƪMKtt 8,<[xGM$13w [ TE}+% U'+uL$BNP7 TfcEjAkACdAHhk{uod$gjBE 8c$h7{Z3JRQydl።,j2^NUȤbX=~bH=Z\nſѲ|c&{1<ҽ Y/G1ܓ}:,I1~_H% "&D}e8}[k"#98,M~Yt~SֱXjij{=I# wA;N*}5j}09]g(¸ͣg3Yt19!;zq)"1ox7o=n꒳jxɘN>wdx\v4ҸH񌴅E K>> jh7}ڧItaረt9h%L}ґ9нbx Ft 0C}rȳce0ih,Fcc/$G',/eRѥ+]дfˌqlѣc+Ym0J k5즼4۾.5d \.n93w`47Ԕ2߳W_=9a4;HkM|#3,#PCO_.O|z{ {ߐ ye<\{^YCu?N1|yZYzlC_Iȩp]1$ΝdžZw")[w`Y\((;އX(k_/~Pi~#0WX|J+?O @7@%LjsIO 17r&NO\ԇݱ서8sMz$ A!Ӡ] qa+ fT&S;{jf\6}mEXfr՘ KyXXXe|?W40+-ڤ=r"lgZ/>Z#_ߍZݛ7>(W{$#_//"*jip+XS[chCOl! yuZ !]@ >f㋤psv9I(3w޹}aeVq zX@#[&4Q=vJ?Y\'Ñ-=Qs2Kb)5@5WuLkt/ea~D!|`qwۡŋE/^|'M$F-*[(fx?]M `Dl2) 0&O_f]r VEKPLM!U)N\ ܐD2?&m6Ae#+ D|7s(D:ZCjYo~v}Ī uWFVʗf(WUT.r>N@ ^T#u-UKCg.\ tjT8+V8шi)T5\4N jv*'vl` ͬp:Hj56~5S?7Ck;Z!13\y׸F./?*9cEӥqD DG.`y `*%JBewEB}@Ca {"(< J<اޜ3 sՕc5>BU!҃U=acZ)>4KF#Y{ PԱqL1/~bxM,FQh ZFop2Yĭ E/S>c/;;8-~d=Fvdhd?Rc7ɐlu?r|sm; .'!y ߹5쉒vʞ{MNH:ڒng@[ڝTx?|kV*4KgZ?ֺKMAX@gc \,f,ޯa+JƉJw7O꿮᠟8ɡG%j};yis'ce_CC#T#锹|{p%u_OUBփ/bsuT9= QFYQMyb%tY) Pg+x[#)9t@M䭯ș78{RfƟLX緄S-51fpKljCRiR9|Sh|S+5dM/i䴎FǿMB[z@Wˏ'/ X/ ; e9rqIWg tiz”/ͧP&1?qIZnZWj3C!ᾀ@:D;' W(Jΰyʼcw`r0FLa.KZQXMw\趟V9諊5RA51iJQ=ϫ9={{Qlql滇! uL7t8Nݩ_GYlfU6To_ߝa`u31PfQV '+TX f6|ô ΥwLR ?]a] R+ߪb@(viWn2bi{8CNn>]  ? MjTgkB?Aی&TyCu!@{]+&15Jr. J Moןvyrbe=ؕd{=ᏁBB|!]4175ڴVPd\:,Pp B(7sx)HӜ>z3N(v.X%R?5 gY |\8VSŖWnKc]yx#+U޹Sэ֭c"x)u&&J~|`"fc{(Lf&} &w+\~. 2E s!_B7-uބlob*=Rl}/mxDx1&oTvjU"`9z~{ߙN4_}[(/\f/)56-w⇒*7Fz0$(1t7nF9+|oc %@AgXrM)2R"蔡j;拡P;Ƚq}yc-[g`BR݉5Lǰ)!a̼{Z/aXr$U9a72F'5T" @{Mߣ!XkAa(d` C f06=%)Tj7!jU ]BU9-؆qR|}21\T R=^ q̣'_Xuy b#쥍x|ftGi'*aqev'([7Ao~gY,@) #)RvjYt+l˚n:;Y3׵ pOpgkKOIg1 VOW~mPxG#3O_E:Efl1C ͛zFբM#3!qϤ`9FY_44t6l! -(k,!~~;u/'O@,Pt9hBObügGraJnשR?.?Z°6C>S+^_Hҗ^0% P9*UWQנDCZBj;C-&ZO÷ڸV/um/Kޱ?= #~R͇CK<ײQ#G; ܶwXDeVcMg<İı?}as+Gz?){6VM`4Ճ ;B5,M!K+MП.[7o8E֔&ngć˱tۜQ 4#Svn :ډV|S`,oϧ N9!P@EE\UvB2c|8/V<6/Y,~B+> zEtAs솖:HmȢ?,5C>Rw|z5><ݩ0T"~4X~zb͏ OHL/GI1Y :yuy,{&'6@Dlb+j5ƿ[~=tSʈWڡnkOѤ`lfG+G?`B5js0-',>z(s# E,kb_KtXeI4W졪ndZcf\x{*LM!vKeTo@kDP, Tǂu@VL`0!ЇESF[}K͋ $ k(A/i_1+ ?VHs|m F^>s K\}qsLeRS/LfV4e!똯ww,q[h4gy y=!<}ܖ;' .GX]Su!^?.}Ii n[,S&!%,/# 4լ姻}o*8$- eqȹB\7"{"VSENC֭a-+eq5tMi 0Nhg}9RYjq`kޟXetU 7\@ӛʿL0R2y/LnʽQں\| ̱`;,P*=.dr,z6dś*_: p}w5.f4-IeWjf,Tzk눛,u[A5SsL^t/D5ZZ&F?|#*H?&N|:hό3S$[^Cvt0+P*ͺaT[D{ 乣R5sLg:_*(M6]5uD`&fH0}W=Č?1d*({rϞ}W.rKױc!XNЌK_oRƴ1R=g1XX8qAs0~C `V)cX&jYQj]= FGDQ+d;uLNCy_6 T4y7B3(sGK8)YGyHql 2 }?p?K $N01#q},xT4uY8$c.G']6{= u:bAgSqlKڛ|c= oL=& oNƽĕw<t[_g&Y 7WPSl?6p¥Ƽ:*-8eBX%j8/ܝ. 3O2vDlA^ɐ\h;]E^8gù̻ȎöLeLFfKʨӟFb}#$VpLNcAlWfUwäPGҚJlš=4C.`;KvnUOĨLP6pR"E촉R,sC~]Y:MBp{0ykwCsU*$e#MW} LhVaLab'g9N7xL@mjN\ 5) 6щkNP2EBZ :,;B-<[sECL'/Ps%l$/~4 oұ:jlcXsK7b'l0ͮ;FRƑ#Y1i]I;dR7 <1chÕ̶İ9%Y+ؑKGbobm^̚K|VkE^on|c1Ҝ6,@‰ M=3և^{s#gv> n0\Ñ ζ8ԨR:mVL5aOžf3]')†}Q( ?Q)`#T'Z~G){R`ufuSc=l f g.LO+Pֻ;|LqNf94 c_HKcIl>$(n{PUȃO;8B̒Ӎc#0!<{6vōt \, Wgf*Eij%l-z14΍CrqNuC> {%֝;? $*=SX C~(zWX&|Vf6P]Z2XZBiԞr E%69?IEfwfCrw/i6z P.sGR~ qBž..GrGMe fh%o7s!:Mox_Obfԝ)0Nƿ_*=%@WYd4:2kZmoeX1u+oq:Nʌ% p JϞ._ϪFc;0hw*[" c7 bOV6M :o]=S4^E~=vs"78~V<} ˍ<n@)-GhoiЭXa5OEdvG")t&?<BwF|vfo=;7J9{9Sٸe%EqZSɡTSIqjX:rW6^ O'|ϰgh7=%洷/? .a%R~7ׯ%`o=ʃ-`t.(zKCr9=1!sH;\K4=M|n>VjZꭂ}cYy)93lgsA|`Ws}ԡ128ѱn} [?~M=r-tРMH:*Ż^w];G Ƿh}ʟPn~UyKdəjɣ71@GS&B鱫y~Jn}՜[??@NegIyeKC>q:BwcTym}g2' /V2Qϙ2s𴄐u@e "u׿seծ E!_g;j1M$+fU_LˆUg*;RYCPk~b2RBW;w0Ol1 DElBe͊!k٬J6=z7kO>A]L?mI ª?$ǰ7cNXGBɾpu3ϡtzT'ؠu^EL9̵\+m#4DMDȻUk7 w[[xe3X@nރ/k`k7_ұ'; t?"vӔT@wD@H\+}BLk'bDJ>~hYZ]ݞ&w[eLw8S2&d:86Hq;La$~G$f5V﷞tOƪϮ6ZX-|بE,L/ȯ`o#oo O~֧*(r~c/&ڳ=ZXwNF=ݴ0OXyµ4b$}ؽ [Yl!c-(FaO_YҾUTv3W.DG ISjPC~%t; ՗BSy( F(7S^NЍ|vXuz6jo=F{hwS+*׏D#3't4wKB-"i"?f)F~}*򂱇<78z t;Pq l\(oԍ^b$TiPJ W[>*30T&י y aPǧ&@sW&=/L(K1*f/0QR"͸;L]{/V _ҁ󼧡AJ+t証 /EwA+#"$JzUdIRT9PŴg|/q ?X&x' žũyn~o|CgEw,G<o>^e26[)Wy櫷!_U:]/# [ "J1;>ͿQGe$SF寢!u8h+io0ΌAEw_hO{.v(jIc1y0u)P8 dmG1gP*/0*@)16UB\\:!92kT׀w)'!^fl+wfWbdTk9dL5`}ty(nn` =I:]~B$~ Jbl.8~kX. fn;{1 cYocl(bxWid2ox|by()̶#)f.ĿTnv` ъυӁn0Hdt #:o\[HV1wyByPVF$tκ`6k'e_6A3}y>_`sJ knucI=@[~d1bmhu ݲ-s}!cDŘ]5N%*OCJP+G5h3ssܙ%+6АE8KzyW.'5@Ɏ \UZi`4 ymg}x&$NO6~be i*%L3^AEy%@{>4{ۗ7꾳K8㛧Mz?s_% }CxŖ<ǹ:̥=9s tޗ 1 z7#EH(:y`uA{גS$9z*/}΋6ql|/W6cGa)5>>0[ ~yCYZVR"V揨bOn_6lVs<^jk~eʠTyotu ݹ±ò}&'+2EU c ylt?^O`og]>'B2Eim8LwAc!ΐ0G. ht3Fֺd}G#.Y%ױxk2A3Lq@Ez OE,'onƖc&f{/) Qc]*3?r|9*Sdc{ NLmńE,)]t7S@K/cM<W8N}!,y;5#xE_z0YaupVdr|?kcDz&+Pm=fjރ*n10]"&:"i OMvőKo.cJ<:s[&taX1GV2,QϢǡeCB.O4An_]׾dνFnlYBx N`k?vQ^lX7m^9Lb/G@3h}*?mhc"t˽l'$F˽'w+:&~J=;އ6,a*DJ4ؗ; a鰈+± hSMqR(j_gE3Z[T`=TOǦX>;)ẹ uyXƇ6+q;cc2IW.ԩjX?L4m>2;?(`ov=F/+8a\7ͷhZY{+ȭݲƐbPD5=IӖĄ,t:[$Ҥ2ԗEI8 O٭6qA%.//߆_ ?/'G%j ~D,/In\^"X@M;׿a;1 O*rKA]A)L ٺ!A\➗pltl afGwUH^%4f ;υCC@S'O(,fO]C0ayΒ;-;Ǻ6SvJbuĄ;V{}9]ғgxX9eMN\lB@75]X06SŒQ:5Bگmh5,}-Ōþ+9zo].w_B;ua-cGo7)1&_|:uzW |/g؍*Yq^I'4c^bcОc'WXB離/#% [ƅCi{ J}{$Oh 9x]qI+MO"7mt>-e`T8":2˗Lы^h"1DUP[/#Ҏ>a њnl>D-1$O5jek:'N%'O(~ 4\.$QKN C5Ȕ8b/Ii մd55!c֨ I&< I[欙_N4V6:fj Xpǿ'͢bqј(Lt{2XlXfòɷ S[/0d Ǹ*ʸJ!ovID;W-f`HssV8h06JJYPBq [ ᔝv Vqb—d.xº5SnW[y` m̺P镩t%cycK枬]l-=?AVFbA7 Sfo*BÑ``~T= VoUc٫6o$tol2_7 F[agVk|ceG4<Ѝ#fHToM*i}[28vYu*7?اAa 6$ Yœ܇ y:w[(j},|G 0'/85fg*^0"voPL \@Bw [v"PQt,~% jC)i{T@Y @A9/:f~l//DWa1kՁB,+T=Lih| ӏᖖfc RÌhQ4Pa/v K|9Ъt#{f?+i7 `_wf8HRnfyqWgeqCeACglfM]iӥ`+yC])^* E諦=o 3?;m(Dy43_ʾ΅LD| 9>_|w dX^Am)qš ?m>/zyUi,VAvj$E5|{zK䩙,j1 EVPіB^.O#;tȍaś\{1*>Nx|% QB鋑_AsErKH}yCS~ u9trPqM7x0k@*GtŜڤO,/,㬃}3n@61%H3 1zq:/fcBZ@ 2LlSR?S>)-zl8gB5w ;2oq$:QV_ Ia^.Co7l58p~j"7YrQ_ؠBF`/cEc[l5 s =xS?|Q2ކy?eWؼ%B,ga _;A% QiW[7 )xu^%h:j ʘCCQlP9|il6ʎ}Sy e_S&T8B*uya:CpjjFfȮjaϦO3`{k 4k֓uxS9d[|vR${iVHgPn̩xnm1) s2ZϕS$O==-l󿉈y IN auAvHG?IBDn(1̔m?}%/ɸ) y1w߃>ʘ)Z(]ֶKB!{Pb@u#;lŸ銏(2M y1Ɣo'$N+&|9*+b7(Ϛ08e6h4$`&C$8^6j\;#Zw?njI夁|,A *( ;t ln9q.2|/>, yw lNBIr-}3yUI^BMU&(C43Ҝɛ Ta@ݹI4<*qrWgCuBځSTͅ*h l~D1Oe3W-"␗9\ 1_ŭPU |t ODAm`)T Je(dέ_?FܺVQPhygO_H|  \cO@u l!)Ō:YWy2NC{y MCT{hhsB۲ 4h#qb/Bڕdv̕/3u@}"eQ=$62 Oδ7ͮRk FHaN;\p_jnAӶ"PVgn?21vW۰ՓboNπ?轸Kkfrޗyyƻ^:X>.- Rdd_"!~: ,Dc+s^V:ѴA6;A_gnoni:_v8M߼g$.4?CVi7sJ(n\+OYtM\h}Ppl$R[7sZqմycWr$d oՓ_bwZ _W \mlMLmxJw3)4h CًkaڛHɿs6 H1CXV꤄6Y,M Zlq3Kl@;=ң,rb3Ի?Lj?{͵O%U]({=GZ/A'[ $H,L>` lZI:\2wP#=O(.m0@f_ߡTbYx}^^)h;mB Tw{O >vlW%^oNQ^E!58nސlω 0-rBV>0'tBkqmX9Q$.,ژ@o*Og@C/~AfvS_U0f^ӗ.Cpɇ* S \#_F))s?/SX&ɮo?8 $]Aᾁh%M%h% _qf%P庼myZoIԱAoNЫm1(?:R lP$ڃgH <쬛<$JAnҳ|yfߡd0.5_m9_O}U/>ATȗ=,P, X2d?6_-&}u1SGF_;h :̿ɀ ٍťuJʟ tz3?4ӕ˯A&pCܗ|~> ۿ]uW堩f;du4kWیWX ]tG uߣXnv)6 ω+?)K?@Mmj%4(j߆o<3DMk@΂yDKcČ#Ycܰa!*ߌقKᢽ ]a+$+Gf%l>?ՙgezނ 7~B{Jw3?&#,k/({A iGvN?ϵ@Zn:UۄR}10\ (Yblb=e䈸-/@qPr^\]slw} ZgO7\&|:e9-T^,4}R7Xoi.I~`& ~ДA@[W!㖆PҐ1|tߍSߍl1@/-4}PXɫB ye 0 O!V6-xpǕɗ) AǏ>=Ǖ'p l0oعW"*}'"?H1w=`\*ܭRN ߠi-z2>֢d0bk`8HL ļd͚7ٱЗ$W#Ťf{ҏ :=KqJUs\Xqˉ ^(UQCqtL2r}KI;D:*1Y3lHᄞӸٛOyLoaW9']k8N)BQ(&v_W̧Zݼh h*hkHbj_PP"4oQ?qg?oFVϷ*T7@ZJ#/4{JT2s^W]/ |qu[3+eЙ'v1f:nPcdۍ3w-~Y]tӷK >>0\R{z0UݬKhi3 tF9ӆfwa͗> %l~WJ-}Mm0ptEYwm0\ zJ_F2[ʡ-jK=a{01„@ql Χ>ܠTڟ6Y`IboؙuҀUljؠF\/~?q z& ^$}kDcJ_DK$Aũ?(1-fҗl[}?hշLL=ET0$Dri@ߩYl(9t {m A i1Lr̓RϙNPe18OzÜ˼[E/}V|Mk j%aSGW/`U`-PwX >_N>TqTP湐7eJIūO`\,?;<+--:`n#%嶍!wuOAZn5)1̱BU _cܾKwڪ'1coRmjeU|TZ'-aNV"LSl֛vXY.5ñ>$#4]$F񧨪y"qtK0gmhv0^a,6 @g*i )vU|K˿UGoY/.;# [PKAG σ-=thJ"i [JqWZ4n\ARlkFC5Ņ>17 ћ2E.I4n\>fnG10uk!k&"A[dkmŠ{o`P"6ڷJll6rCjGG{P{!Z@蝬WtH!uމgW5?{m/M:&LʓGV ]@L ('pw,M<2V|@٦{}亵};t/Q +GY~(9)]F7G[ۂ.Wbc%k(mY*>^&W@ɰWL-~ R_b5QlvRUhGe(?:>(rOަi(oBIvf&U>[h خX k}1$V ESy1u0[ /I+dy]V&ɯ&0w"xO= zJLdmPU?@;XGys@f qy=qk8@SmԒ",е^_tPX)$r_[z-dlLtʡsu-{.%/p4Շ]qtn50F?~=%t92y!7 mivLDBa #k>Ds7ϰRvu/!X2}rLSI lI6:'v(Γyci ;3by.S 6mmvbR_^WOq';aE2y4Пi0z>N}}Tq]amea<,$ӱ%R-uH~#@; 4B:7& s2-уNs+K GŔ$L˹$2?nԮ Ce޶ G~ 0C8\b b9'KǪKj̑X}eGQ+ 떒~cBcW}*v[?=po  c]ηMRԾZ*5zsW>rO^ś!jX뢘:rPK;嬡h':8'7h=1^~FAV:[&XcHuIȣ̀x(s&2(m;zBY_3Я]?L1w \\ώU,U/v&5c:c.db߀ nt04EF~ve84SO{ }Ii=>~#&C`DR P0x+l%G>TnkhL!08 龛6"I P:e {B^v` ,yOq"C+~c 屦CՐ{^ >iįNBk+$ +9j4 K 9N72ȇR >̎MGFF _[ԌU)P/˱uB]A׎`q?x'jh{mװ&<׸Fz P60e֝+C#K#wێgna~ |Fߵ cK7/ޘ_pt۫3^S[Aşb",pԺYB;v N0#uj ^ݗ$ߘ;6ɊI/IT uO8$8faswSȱeψJ"7)egT>r2uD8PSGu<f_lY_a1S?sַ{]J |e%Ck ,d>9OcTˉA9S f,Ow)<=ק~.MU3վU_^+>kr3(-pKs+aFT][{14+@?ɛP̑¬+@FMVdjWAY{/ul碴vӀ=d-U[(+qZ;VT<"Z*b _@y '?6<d`SCowfk!4[Jf#ڋEe[ؓ)w66윾>+ma^) e^m4RX5טJz:' 鬙YVYu`1~ːmg(- fyo" 6F ņFVb \eחXpP:bӫ4lƍ8Ne*wva6 M |`f_ 5GUg?sG!}f`dq;A!-3sJ0/ISu&:w0 ֜Vo@,&\ r5U E]s5x~?|{[_A_7 vnܑyi ˫AFkԻ\f#z;zBzPU3Ye%[hrϝ;1@/28;oO&mK'khܐ VoAdG,Dgs¥6Y3T'Efuʓ%Q}>45)N-pJ<-仚pn_σ8bb9݌#͟nuJ{gxnU~,ֶ~,ULY$=o.Gxi-~kh(O!??}=(Q_wʆ Cݚ0v[pP8TNB}`$P$úY8ZRTosv=\3/w}GaC ArrG 艙3ЬʸßNQ @MV q_|կmDTj4䇑kHRĄ[P8?9Y.KTTOu71|319 KjjB"yFc%O_+tמ8- 6'7/$~ ~JQGcV|9E- FC1ӾO`U%I%\ IƑ\cDλv_7k|XӅ ylKعX֡i ="&Tʭ>X'̾Ե:⸇:W9 |d! Pgpc#{F*I~]Dv,OÂĥa:2Esf"J{s'1FךOW~&+‡46W\WyetK:_xr'o!{tRq0gIӝ| #I -^1:!h&:R5㎐mJ53_.|>$ֲ~7>J y*0wߖ L%~wvr {҅.xod4XYQ7L^K _O.cXh UzZ%G9ca_gz^(qF|8"1ܲ:Ƒ}^BGZ"udb'L"S1Clr8o4Ex"H.r135g0\qqf64`$>[F-y YhߐA_]J&߸'MZi*dbOH`>]8B1+x7ɗ&qfWK^ߪߡۥ`>,Kp"u?W>cY&6X0&( oL 49!7o&>Y ]_ckىw_>V݄6i`qhA'TamD*7 *TKZK]?|wWRO 9Bl%xqsZr8'g@Fg C2J;0AiݩS)gu۱il4m\# lOKY:=$;6Z ~n[R8L^WL] Gtt7ᛣJD<O $b]q ?8*;u=7`)-9tYp)6k[}sM߈KQHbWRCCv{GY HLF!B4@/V>_c qw愫BȯU(#m$b&=B"Xū~4;:ZbEU}Q$u^%ҁ e(W}7~SϞ::k v`%n8"xbdDmGq) +B٬̽6!V 7h{(TAZ?:mϟ1?~# 2*߱R)0 W?6UTBDOD 611w\gܳ/Nmw. B#$mAz7p::ySWcoO^J>JUKM3@⎓f2ZQYLI>ZĩjP\*dݏp}@$=Ki5!>LD~[/1N5-jlt@2w%|~1{'$i+k1'sx %+!`Ts>2uZ千 axZG1jyr8Ew" 7g-*ʟA}jT uNPuk - 5a%JY罚0cX.^vRL˜KL4hX̏/B7W֪VڷO0@9%6ۋ8kP19MhHIGoj#h|*Gcu7e?hHY"0/(c_U= ` kVT(X0mnQ|Kʡk= rМ +_Be-!Mi\aN4ȸF(5z]4tr퇯5"|H$mBڋY@H;cH& E~3Qni4)fkukw?.3J}Gbf-(pZJDJ!P\/ lǘBG5i=S3t4S!=(?8%MZS쎋CKRk k6+I om}WK*|E>j UB]Fuw,dX Z1õT[=5;ɰDh2rculwP4`1 ˇ`CĻ0Or y.2CUݗNٺ5هhia"nZߣ%% :N`;#粸q:|sZ -]]}ؾPیP[N{EvNxg ;N"غÈc*ߛdGd!C9K!"Nx\ _~" n]6B=փ@Wgz[|n[$)H耪ȦSsdt 4&<pڈ d1n9ѷxSRVʞ؃p==o4d9wN:wW.5{3˭6ֿWquw}cl#Q|[D7įŏ2bըq(>կ?n>㶄T{|m9{+ nZBFK|EX7i^>[C4+k` #bڮ}A+:$+kypSh:dܥ?<$tSqć9I Ips +L9@I9@#IPKz݃o Nw _h@ݪS0d#.p(L I@>quVbS-6^/ܭG@JtT4(C12hd~ ,sC']s&^; 5#3N5&C }n29T]1BL(9y*wWGq UW*rEaaљt(d&P5~|Q[\y%ab͗`يoLF4H:ހeZ [TH5U8)G7GůQk=k O~fOCٽ,TӶ%jisSLwf"Tzv<;PB|oH fA}P֢L3 ڪnA#ٝ/]Blc s5tiIC\ߐ3^k1Sa\#hGDmNCH-gJ톊y+ߌğrnl?߬WǠm{~L:dnz2M!cT/nv2KNyu/a Rq8]VrZwI ,>fzC"P2Y{,m/-7 Dښ'9zWG}uDF\4V#8|X6Jz4d(?$ѝ=<Ǩ&\짶9 g%y)*錈1s|Xby+j eat{BTqޣc'T=@A*lq8(w7Ķ fa͔,jQb\7STݓo)<հ=>{tsf=ZDC/5c| ( ]֥2rFr,}3u F0ĸE@~ԱiC&6NZt5e~j8!Bw>~!iY\;҃qM\1E'~KJ[w>`U~Pܰa܃Sp^U)|V|# ,N2%*x[Rw3̵l\]9U'4Y`:m%i;"ңm$;Ҫ/̙Z?2.,|+)/&aR9y+s7佱`'bŠz*CBCe>]tr6cs!vvo-2V,*p< fgC}ДfCs=P@i '1_֐_d{}1#VDN#Et%UHSB7)W1k9 ׃)!96<YڐetD]E)擵'Yg5n]S_!Pji!gdp{bbɧqڽ^4g} %;t[D 9|W/u|!|0c-R01DB atp=IAȓԽQeRhqxIJ .9C~R^n7\cɁJCmlxQQ s& \>~P5([X }n*]2ah2 mR@'MAPlf}zqtM!wS!,4K A¥iK):(B<R\ Cm6ZlUv^_»'7{h6q'V۽=7g=gՃ/YWQ=`O2A4sD&(&x¯ ƣ!$-'BƯǂmX XS\&3uf[?L U 4iXsεL҃@K~֯`к+rjF[lcG;cGe?aɗQC/ I 5 14;^3nmDS~B^J73wy/n{jX@3hѤxKRj_0heSY}vsgZs EwX/k ǷtѮ"_* LWy>ӳqEOT[9h`Z f٢^h3YE!gMkOv@tU˶Ω8<9\R(#;~}>zT[C|M,z?yr=5i*osHXzoGˆ?~`j[LФꄎ!>уfcsWZŦߍe-+u \vޜƬذPG2nԿ7ɱldE璦ӡjl4Ŧ5㧱ikci~ϕFb 8fln#u7;D\nڌtz+8Tg4yےb4G8 "9olՏYPpPo o`ONnބ? &P'i@ fFć g& /d˯˿ ?/rܱ{B)P}IQC+.sYЍZ/^0;&د'BuZ[MmP}[5lP}@IfT ֡7~v†+Y`u|:a P>4M} yڤ2lykA2i4GQҩn؆/YUlqx0%XQƍ!Uq\tqz7V3d$BSWr}彼`bs#'܇yNxu!׏6I1 P7%K6^Ip̯Bt [nGI G~INFc5c !%—j0V@](?VP#^Z~ tߥNaBX5FkzpUAF[7 o# !,@` n!紾[Z Ž{FO.`<ᶪ7g?45dIӰ>($2LGKC v<;;MU*#5ȃTqTkV׹Ռ0D_F.$cqV 9ۈ=y 63̊ HJV5b]λ ??t=UWoҹ %@`qK&>Dy1dI$fQPS]o; bgXn.]z^({.+jw8h=uP dcۭ^X5Wq$rR0I?`w5L5u86-MP@d֎Qtt}<'^_AݬI3]y2z68e4`P;Rz~VL~g OBy؞|v(I>lCL/;5@)>-QV61P|jc 'lʳP+,b}?[<"sF$j)sǞB1YSů\#i=w At>`@82D }d;7UmD ǽq7}}Ҝz2Аw.@)lxJiD͕DWA!o!Zf^>KRcsTBW'#СaT`f4,r8Ͽ;+zsP} [fukgaXhd>f{$[p:qvBh`34GqS,:pv0vYװ-9^HXc}4,χC"ebuXЮ)zV?=Hcqo(eel}Ragm78ҤzB7mH~[]_ld2{){PS6nBÜ_h%'€?k]5pށsM[|m9 y12J\aI!'itNN̳s|;VvP /lИ>~ |` K.^opPe,x-cqn^߁I&t%Aۃ׹s~9A|%Xf1YMhNjX1vqu^A;*-N<;Iw" b22El4{K/7btYk; ԩlTz a93?BXN ֵ`»uԮna8?E2NqN7X~F$8VD6i8 -dznXTxLγP۬knb+>xS}=F^|Kb*;:ϡٱ懓% ccRI<:gFrL4?boxqUT14kohXΞ5#rjRπj]5A3!rTjG;>H>b;k%_DM` "xlϸ8gqqbٗsVg2!GMR,vQD"*F 2]9Ag@gّ4,mf+D[cޞIDC,÷׈)@VKPTÖ#ƴa7kxF+|ۈ&'F'gh8z ˮ&c"a0-  TjJ c4,40Zn:@} rJ i;WԷBH K>1EM ж! `N ?f32 boe&n_!cu*z=~}dזzT0ӕDwBeE$ /O}m#JIooh3'E;+DEcldw X}?#4P8!Cb;`>lt缊}{Nk BƮPuۣE)VcUL^C(Tzes"#8Z9K$S *ٯP\8-Vi ކR…0Nn9uʤ:m ,YkXn5{waӴ-_ds;= Vۣo %, hMC@TP\?S1]|EY_v=3p &e qBSG`x  =|]zz\nayV5uUڬ+h):5Gl)60<]ɮ,s^\&R xoMeOdTaV%%R^B{njlӴ1֐7kO K$ XMXB )Se6`%D2|2w%W .Qw^XsjyL^vNGR?F㲊]s~]\T' ~*4)o L 8铗 z{g؟jryt0RǙp)mS#;ss݋dn¸ $c]sL ='1tne[r2NֳPS57Mg6,YYlv?(+;n[6ƅ5bCjjXͰ\ͤj.1>wJeǯpJ=Xſv09Eí0L\tZ 4om2EhԻA"ӄ$ngल]4p} ងW(UO}omlgC,ssn_ ݛxvw'У?Q_םH&l p>;o~mn3<ZeB1'3PvʙA IJExi^Y<},T:mI~4$I|) iyT׸%- /nWRC uRא5o .tR ?#OUT*BlYMꪡ?5Q`K4 46z8<ĞIcw>Tc#{LXh RϞykBVwbWyXP&47r&_pPr̰"^sqBMF$?|s&.==YI4iN^Xjq{Z{֦.:a>~(=4-$?7[ڂP6ksj6bsh'?cvZ҃3ﮣY՘ln,kph _(ML~FnZq$.$aHvIFɫ/B&,;#q簾 WƹY, oO0d^VX@ Ur(q7/j/ލ80\V,3XrGp?_4Ibcl:LvXl:@EO 8Bi`D_)? %zo+ua,}pq/.N^'GbYXlTaÙ0(WX%m)" V҃JNzTMX@GJ@k:WH1WW0_;q"ywĎEs$PU3?:JCmO@(ȹ@SX_/7CQ٣ooC6q"ȎGnsp4.^Hr:JX(SM 5 LNffp3 }e,y|=z*_^l*w[E(vz[/l/;UrM| eرa.5!%+-bv0T~]4TzEEgh}r3Uyڒ!Ƙ>w҄ V,&{ #%LD!q[o l<J8dAa a'M[ANbg

.Hv 9giMk9{RY^Vi'~z<` VYSxT*$ep[W_\#̌!ѐ.l͑ROp?X؋ҡ"Uxy(*F~i8Ϝ;Mvwf;Byl d1 ]+L@/!з?N)k-L(0g3nJyR+j?uraS?ӈ_2O\O%'!}䔴S|˃?2hsI{8 -g))BJ贼si(vCײO AP|0;IPkU O7[8_f 0dx[ɩjbȉe,VO=!7PQ vCqq ,lw=E/uAsu!ğɑp:Xϒc@%Țg]a i9$!zUFr7^[?`?4f%0biaec5 >scUpF̦?bx;[FEwVF3O<&_b),Y_BM!E+@`x(T{<:-2a!G(p(0y-*Ҽ H0e tFJ3d# J˗her1Ը3\Rl|# _@Y/ PٙRij^RV-T cMG.ils`yRgGB-U '2vj(Qϸs"=N|;~2*ZJh 4'@w3"b yDQa+üdG]1*\ (nejAN9٘KGklQ-+&rE 3<ߡ{I<0tOȐVSd_ǀ ş,dL@`w)F7LaowX`!L `ĶC1Awb Dz=m*5Wr?Jh]/)bI"Xu~6Z f??9d@!M9J=bt>MX1uSjy!剗;g*U,xA/X0{Պc.vdQKC@,ȃ: +}vl66q-\E~x'(7Lڷ 37a͞V}*\1Xȅ UBy_s~tt`с& !WZ5pP,?qZ@O SCHS?{Pyb"e}D1ĐJcM,%?*tmv`N K _}2t D@^#%}AQ grşZ@ƛN範SXl~zHvkbƢLwve hg=tK95P?^j6VN&!Łf +${۲52 ZzJꖘZYo TvVܵ#X;w6]?; 5> +cb5,O]۷=3Z'ԮBC]w3U~{H폯VR~tƸ'41otK? *޽!=#uowsX|3@cVR8 f~=N<<1ـgĠ &N]Ƿ ܿA-ƚ^P=pdx'k=6J#}C_&><U]wOCH-[1Dzy)C^crmE/p@5)[v0U~r&ݞ8{$|P#%lEUJj (2巷o7#d)P#pcH(2ePB#~ݍ)*<Ɩ=MDH.2l>e_*߬(fŬ'[7HβXm,!V^˪D~kcl_;liA![, |=чh1YERXSφ;` +7s9b˼Cݛ)XCA (|>W7]?.}F&t 'M2,ݟ>6o.!m'<k!M Q㤟7aoϗhѰS=2z~Yh|8V}RRbIw6~a~L9[MӅXzI*#f<6Fko %֪q h]|}*5du`ɋsz1D6U̬7Ӓmk|$4T&^D2ҕXkd7Tn*<>Xy=R¸kտLa ?-ކ1Wg ms+ 8yJ}nHT4p !t>MQ˯S`'k#&mX(B/pF;DYm?BZ RiňީMZ}\Hǒ"uqp?V.I-@̗7ǔSfl;ZKL|?J Tnȷߘ8kD??agL|_n]9# ٙ_6?u 6;a {B[zҕCݠbȴ 1;M yh8 ~jiYJDm+{۩3<32z*J;?-Q]0 @{̌*/ ^ܼhșIJBeyl1S*Ȭlqfxun} Qŭ#_> 8VtK{x`lliMxP23ޅ})RmL\'n?5;M3gNc͓_#8w&^ vaJaӎ5nqHͮ38LU K)5 oy Pt*7T).c/n=#ݘ<~fB-zƳMPLy_poG!4.||N{HDF&$C[T]P Sv/'J qgi`-/nh/6wavI| {NӔF{>%}PDKbLԂw jՕ9} bg%!#Hgù lo>tǢ)KPYfʇw>GB םΉ&;/\<6 쬤‡@nnZEϤĎqt9rKS LSF?x)M6sˇR^})yO8t*DV=,9J>'6[uߡH +x_>i/84" 8(tTqf8U*.9!C |ǝ0qj 륮QPT *hNՄCwVPEaN r=zt`s'#VJlb曍8kQeVLM+}ߕ f?8).nGa"B9;" )~*L+F Y.BO,Sfp#hXiU-?h DL3V!&m_gpj:%;xu񫻼.f6|s^g=ꢛcdq~v_ER @i ::QgZ_;*:+9$nA\> @Q/y,[s rܓ$PlAOPI{MmC~NZ*.#@_+7M8 V!\|!ـE̼lxҭAfX2Rr.PBd:24A]3^V5J8yWʨ.r5;,$0\}Gr8)YQb9Ɇ|D)0j9AAGXh=}r>BPz~'8En$jr?ap]on~</#cS~4(:oiw{`w/ܭkPS1ߕ5g^^GW"*}eo]=0ѬJ?MC\<+S#n!|fiu0h,~T6*:p{-þ]{p *oUIhE'B̩P"͸:: =鸫[riAu|m/.ᵉw(B\|!ET)GsNea ⷉHd0ʷ ȎK C3u4W P's6ЦQđqgS;8z؜~q>Iy/6;+dő\gKakVq=Z]dEAm{ӧ9ܱd>q9? BTȱ[{Lr#͡SMl x {U (Y U}Vv *sTB5 &+Xu@YpS7!ʜNg>@텴|s:Auh8q-(sǶ~F\79N.qA <@ptdH;SUP)*;Wl*F$ȡ(x2xJ_'tLBCaLu] b/UfḄq(Ǽ D́[^szc/v~ R5{NAN73MןU r56H=¤@hu˞ϱҕnBAb;b_,N)AGo 6_,#+RԌoA8,(O?_%.c=] eShx=ҞD,RY16Į\gGavG.KebK{q޳?Ѝ5]5I:MiX)k$ `K@߰εOK O=O?_/݀߀&e$gM,ʪ5tO }uḥ f?s{GI}Tk></~c)}ۍ.oA (Ah%㗆z;g'Oc)r~r /ddd f8!NQ3$ٍoz!ll>`9{ ݦ= ȔQ5KWw>@qh~&x]zNkxC5b.4bGIk_-fɣn- \*^;6g(t@χ'ֽk!1/X!lJ1J{p2\řOaՖʟaXt*8u;yM7$@NgJKp<3)tx,/{m TΩHoCldT(C0`Uoы Ű3̌7\Jٰ#*PuwP@E -wӠ"i2442n"H^ X2aLx/CzvOTc tOߊ]KQ[e^3AMϣ+g||J\;K1@w3[9xBFnB,l/t|/'aS`"e4*rPmk}rA=}C}k4X,qKmw/-I wT"WPgC䷶Wzpҭ) Y 5k(VҵifC^Vʼ1T,!}40'Ѷ5$ 4_U5A`a`Qv^(rmn1TzIBK f:Vn>Ɗ}OV_/͗E cLu<f> 3\0w^W!k2d*)8=oѼrG?7LU: Zun=Nz;Pj# EYl0tq;~K:o{;60͗ &x3D_:jmCw))lUAPh/J.f'X[[nCW`7 w,P' 2nՆE9y=H pӏڷSót14XC9r>yT #T2޶C:SL^\u9vh?Kue%8kʓǸM *P^HYZ AS}N%~V*w xo7TTAU>e8Q6v޶\D%'[1H3aIL~7fτsGC1oeoiE jf^d|MVսB+E|Ap vM#wݾ;XS}Dvq7,40Cݛ#5frk\ZǠ”x_(d ֞ 4c o'x(ϛҝ]ȩX< @!gC0+="$ *QaS5$CS>GбLX,+ B !o!4VYiT8dT26䱙-bk,O֡5+װؓJ?*N[Y9b֓ZYNRzmYE(4yB {S^á[DAV*a|P}i[Z/nnڌM^2Z GK jf] *fT[5"7 JBM\p0)(3- ɽ*cʼb7WWM%LF"8}CN4}?~h Q+eyK G݁8t9|f/sL tq "2Uʑp9^`r&A{|Et8aGT&t ā7iׇ%oh⢩/#=_"dali1,qIKxhWº+oy1kBG-|^ӳƏ Α c0gEytb[͔"Ȝ/vyy<]@D\0쫸׾sk !ISغu+}4 Րo۠3 P'nz22[(ÖmLX=}6H9쁵q`clm26)(JnކfOáǘޱ)aҷ_Aw;M5t5. #Ko/aePQdzkƈyc,UvlsQ]8ylRv/ź+]PlJz2+ҋym uQۣ,D0Rzݕw`]Dդ|huCį>Aa涟d i1c˅ǰh 19=_L!kDתtA'C2cƳ9xrU.?xLX=C!FĘwǕK[~ImXLwE68n}x3"7BH14hb$I xgy?oR1 zu@Z<~́ͅ)sUХyl{`wwΘ]TXyly dl*FHMI >&cOpZ+(wZG Sr7c@M{+0wʁLq`ZMCv4;ug ve[f'9''x!OnINc^L{:NbW@ 8_acZfX[FV g^% ba óZEj< \@7{b0K֊EA2VO_{|O,X۷KgUiԆ_u>4ZT.`KC`W|/A-W0Ii qyxi_W"`>l|g :4\0L4iC-N`1U4~{ o|-x*|8$Ć ۬p$AY(& 1ʨ0K+>RaFP٘,ݫՑbo^Y[O6;?8;.R,uݣ+g2yfBc9u~!Q|cIn`dQ]&cR+k|#[LbD"~POi)6ǜ.²\M8E,-_o-B P1w/_/!a?z6}jo N2Ӧz@Dp7.e֐ IȠж9TREK]vuqb.$OM)Bֳ7HeH S_˸ !fB Ե^1V$X*&T ~YBlYPS?|{թ >_x}V6Sw]"ۋm OAT_:cR`!wlNa^PaX)! J:xӘbbSZiIY*3L9cL^(9A)ql#x}*_L2bQK0mN:l8Hl{HCř?{!Yv.4H(&egp}gP(0ivS#é~߰dTi*OSEJTfQR[{ccef:>{?y,p$MRSVu\}nzB<Ȃ,K5B8.2k[  -;o9*_{VJ̿ey +o|iB9&6[nAd-$IO`KXL_]80KH4ƈRCք=߰Bqɤ{ ơxuώ 1[f2F^mHaz )$WP= XLQ%dVsL<'v #[↕.-"c私YW# d]HZs*=}&ѰF4a77n.G>Ȏ_ ݀Gű H^']ٚ53փߑiIMQ5I2Or voNOu$mcُ9~{}W aٿ!q>NuF,&75 ŸOjź6(s9@G׼KW uDct\B.6˂럾{Y'@0wHUվ` e#=<s̨Cx(nItDIo& nAd oNBGÏszy $*A) ";'ֺHrLN~>y¹8K|t>>5:K6:Ki8tAbgs;p= SƑ,9aR*Һ_8/a}׊`ԗsCcVբDhc<i`wr7$jO@oDZ@2t1`WL_!w T^tǤ/]!mU,#t[fg0=Aڠb/PW\  ipuՙ"TXquxFO:X`^ 9CIb6Q"$[ U t'K7QQ E3xeԻ?ޯ^1^./mXt<'8 #_ oB!:i3 UGPlkWru2v}dӵPyie 4o ߶ N@y ώ[+:"+[yt^.bӧH,u"s(zΏAY[ZQ>3L"IW4;tqn@Lr9bM~X{oSx].8U:KM" !)k_v#lbMJd;/h1 mȷC5Xԩ 5!/G5OfAtdrd^om`ֽٌ9)eoʟP v?sh} "pXS]]dP,AA^\f4 yEv,p^*cp+~;l8hB ?~*gÿMg1W$W|'O!Gak^ށ+%H>ޟr;ڂBo'Gj aǹVv#= ۮ#GqXK.dZ<}lLF,B h@A}7VN C7pKcZy\&O.7C##0(UE!%1>ͬ=5.CjS[*6Sمaڹ}[,MMﺉů5{!7 _Wݏeܹ>b&U;~,J:Йqs^K$BL3-\ǰIbN85qZybHZ :Iub{$3L B7&pi|TxB#wR*rC 4ל5w_6>MZ )Rw2$A#K͍bp+|jcSvׁBSE9]W0LxKٲL7o<\ɲ̪X̺NS1OzmYY;AՒs`2n A7nv({]9:4W7sAe;{Lz+dմư'A+`=mLVTC*?5 >}+um~u:R\jۺeA[Ano@>x4: UĴ߈zObʰy+`O_1]XXA iׂ尝O1(ϋe%"&]Z'nPO <:F{ =>-rJ#Z/wEaIi5(Y*,w3ZwPMcӧ2hzxn.> zZ BUkN=l>I?߃1'9o$`SPPm ]ݡ؀ߊP~GM_^b&/w#yXjG;6EA\n[l6QTnB %VfUn.9H'ctlhEKռbY`tp*+?ObKֆOf]޶?6S?)UWw @oՂˍt-^ǂkZo1phG%&.'|,ĜyÍB͕ G`So| 2oϕ9] E/!ZgU dIwvq:BQY 7yke盰6n_` m㇂cyyɖ2ΎqU|ۏ9UZ8(ŪGt~7P 4.yZp+Xgǹ*cZ8L$cT ^qЗ{EM?$[=`eTc V0|?ٸ>؍r@L9my} }ɲj hak(ZPu>,|ū_ )K܀Ϭ-:HGe]m: R ]N]EҐ АbFz 7?Q8 -ʰx6*oؑb6pп8rC4>Oa_/ RoS)K}EĔc1)%P| UYW=0'4vmbߗ[czc;2mhp[EŶ^}>, [fH;K1)8R۠H\] EcYH5f(GCH sF g^C#Uav`/yE;C.  TL}7u['å4FziBlc= ~qÚ<зO`Yhh yoN'aV,]L G|0ULEwA/xwp(/Rg;`(y~n\$),~EClW\ PJ1}4aO=3i>ٳ>:N?Q6!~祖oHkn=+z_!muu[~ M:Oa(Q.,nT+v}R<Wګ+h2 `é>+qlxݯ3 [$Cf!sZUS(-Gs#3o`oYU&W?a m/%K.m}l#z{GQq7lHS2{bg_?6_`땷L |TNGTE.w6l $$S>XC|p$ag: #{R2,/N.sPXYl4Nf?9džk$(q~3qk:էm"i_d梲oq([jq76>\N?^ƀGa bl?]V.D@5+gLier&؜h 6ZϗCWL}+ t?Pw@Kuc\ VK$9W#b Αaj@x^NNz)mCyG(dm 7ҺJ_@JBq(J ڎNBp*8pԝh ~+*R:P Kw|{Nc! 12EbOaX.r 6;}zPbOr(ϒLx^ㅫ8ߓnd Կ}jZb,Q塼ɂ.=tdM)Is5]kE1a4{HIKt3;j9ABޠ)lt CDK9͑Tۥ@0|o[>_^O3QzG?NkP,9p>}v?%I,H6b3Է>?#=A*f$WjQfj=!yf;,ZZ ]ذKr.T6rʲR^LRua.ptNe)`wa Yet1qFl:NFx+/-bmϱMfJA®/ < pV軣4(6^S,{ިuWF d&92)?RyHPk,sy.SV_&;}Q9fL(;y?,0z\s8Nܷ 3DF]'LnT< ~πoW]I.AbDx =JoN#sT1BÐ+ç !aۄGk{qؐ+JBɨ,{ P1(.T[n>0FuS7)0*rytciƻ!I}ǒxX.? ZA*$ℨ6~OKFUO]5.h!N  {ɠC7Q,ݒevC _PHhh\+zD|aل"xE#mg n#zEESpB$%a2jD%Cus4%ZY}47#s?G-"2pCÚ'2 +_\[ C1}v o_1f߄ʴ?Ǎ^F}zd yMVcK߬xs 5CM;bׯ=fs+tZ̍Ct#nh'F){BU- 4fiB ]g)XUٙ3찀(*P~B dDTC͇{R9jTIhp9)11gҝ4[ JoKlquL9ō!|HN-5:LV 1;~,CJ^sP-q)r̋V p:Cvȯ0r׉qPwJ^ Fe!F&]үE`vV3*"XB25ybLUϨcN@VZ9n;܎\Ǯ*%Y{Wcr s_mΝ8'˧XV8._>֮u&UX>$xU&KXX>a؏ڬHzugKn\b谵7ok>vF*xG`Qg}ժgCUympf36Q1AXdN`‘˂.'*;4$qݼ8+vkߧa:~&> Om[ƒ 72EvB[ej N:xre[Z 7{"t9mttzB`_0?2eg伜c0b#uK J?t ^ v?Ͱy0|n3$zέC~l508&,0=.5 ]s%v&  ;TNNR뭉-԰,qOǍv_&jt}v.\4M|j2\ <}"ҎY2ZnWſAT'~蕣JSyD fPAhfƶ?ܡNf8#c*d vXbABˮWUѣ´ dD|NREc(\M8!IJrTI8 8W$}i!}?"{Ucl~P:L9>2뭗O߮f//`]jgwIˑ?m;l'Pό+8dTPsBi/Rjr/)AفP4< 7gyYAs):((w}{B07Q\v.:0=ie{IP#smWVbͺH370wCh-汔gƽ a⧀TYSPmLR@‹׋Pz[DS;h Iꐿ[=5 4 JܗnW,$=wjJ7f(9=@ lo?/fFߞ-J(SdM |~8X Ɩ^{.j i$K#~gU9|DЍGcoXB 7~uA[|P@b1VNMwl0rBu V'3&p ]c#IGE%Ѿȫ ms"UoH rf{Bj Bȱt$7rԠGV *8>ѫ3:iLMy[|9Fy(m ~+tG1+'OGz=l"Ipb7G{g~ROv/l->팛y{q5gguNrNÙC٬3{J0E(p$ X.[D уAFW BGEmObRqktm-=v+< X[S !a~Z'Tx ?{P AG0xds 0-@UU,ʞ4brUj$X 1cyF"؈,g0bfճ(x = ' ﻌWriO`0jr,L]/Tϭ'>KHv <o'Pg 0tv"k\'/]\,jgCs-+]p CLzV560 JWj[Obgo}{dDl buMel1j?Q~HR>4| 6+, 'bέ.'w܍;`ľoE'r{sNf{6s+ezA83|ρ^B厥00|[hhӨl+*9iōYEQm%޻1g 'ZI^̰?S֌A8_|Y=ΙLTZȾ9`vҮ1RqF֊GaPVb7M+c*O P>rAQKpy(*8}޽?J)á i=RK.dc@T}.sOBk1^ebyцw*\ҎauwFbAiT)?AFZ "]Z)փLQ<H7B[ۿBMn@zv,x(]tD1*Z5 MXc+;>i6~%a MPVs=pPbЋLnb%=U\.? eᛣ~< ޥI.bt#8SzXPaۘ>ga K}ŚᤆREntMjAi^-eџX>+w>H噋? x_9Uxmea '#Ƈ.M])OJHXW- 2HbʣfcIu\fJ'a=aanR^D:ຬ$Ԭ2ݠZ0Fȯlɭƿi~*.OH+5K#_+!XzR ]|]+<\Shbg6fZWF.p0 b\#yE"4n>#ZD,9}"AzF4IU f2|{3d l1ONc]ŸeVl~#۲MqzYbP_ѡG.dgh[?TmޅKjE)A:'UG>)ƎœXmPt "(%{{A *8k "XW%8筻}kC(!#͚^ZUj4WvTeI֓}ONTĨu1uE-iMex'd*w˫h7xU<ۺ[P)I \6F?&k=\Sݐv&Ej%Tl|t׃]vFm-ExzLB?E-4:HB(]{q* H9C:XɃk߃1bՐqSJkt߃oX0Dۗy U^\0E3[PCٞfޏ7vڗ=qTmC8?$Gô\Vؽu 6Dq 3Db&gjfXڌ>܇CݱXy~=OrMjlymC ?2^CM(\_YNcۛWлʵ\t>j8 ߣvȀJ3iVI~ŰJz߀[fb˺Jy"3C!.'6^U5[v5>E^x^|~*fڍi{zbKE0x鷫2(F^9w)0D1k~䂛'I]}mz,\ɎlswkMRXBjw,c4mj)OtXuu],Y2yDhg|q#cͼ'>)Ir^w3`vrUDs4#2/qςڦ'6հ۹#hpaEo16xw{~ʑt"kWŽꐱΞ &|GӊMX=rIt; n0P_W)`)4 4ԋji4<\R{i(09C;#La jظÙ$DWcWC[Ad 7{4s@O`^$%jT]{9hcavAq#7VJ:$U?,6Mt2+@E($-51iCf}d-O ƈ ?]Zл8ɿ,10%V"-|nHiuWnokoaԖi,[{}mfu iǑ*Qxm; =ly)Ltz;at#YսWJ%ogL|f::oĞ^~)9!f84eJ^d51])T4UP1d{yGzV/`;OV#R&#u]4seMD}!wyxQ.DǟyVmwgQ; L#-]f98F&r 73%X? ms'QM;C ţ^Trwѣ'o < 1w0Vto_tEl -ݞt`Ϲ@w(KYs bo&oFSмC}fmx~VS05=e&h @< '&w 2Έa*, e"_, Mߊ7uVQkBm;^;zkXxW= _H*ݛEa]0xB4׳›jbp"<5~nT`E"WRm a"pdQ;O?>".@㽴N!۠hXC|+^DcIcOnzn2uTғ,`cv;:Z,6k?u67=Vq!;UT}"W:|`'|Tkn6:vk~~~Y: /T6e ƅP^ŴLUc*/{8-GUJp<~](]-3tEj|qn|\lY>[|#8v(MwRXN;Vʁi'BUcmOE]NzB/l,U Fd;e 4TNw#P(*gwE!4tY˪.+Z YOFm(.Yr>~H,cxs ymt>0Oged5kQ隩94skt&8w; I;{zrʾ^|?egߣg8y'\ɂ ;,bE"6lPꣴ_{_Np])?k2'PJ/39\U!.z8}T?|BOu:,?ثxtO[WG?^bѹ>G@ڳm=S(oU#D_*=B hrzMo?ʓ]3/'b-&Vi1EqSD(Y:{`ҭ3oA/0yQo[jB}VIu;x#9BВtCJ1BE.kV@3\JW!˝P^_1d`[)(ar)#X(9!b!u +^{XL= !؀QRS3c`Uq_Ë"ۨHC N}gcff1,vh͠Yő}0Q<]/b:D-3d E/rMNYUIXe±k8w2vuZGw{ead~>C1muR҄4nr`yi4xᄃ6r|j"m?#q̙/GYpIvզr.a͞!jlrӓ(E~(o y`і~ӂf4q&'52{u+qtЀ%5}1[ ^a9NO7c77bf|#ągnK+labYUz#?6 -5G+E }ѯr( )x ~JRMLk1!hZa XC,:M;4N~a^Q~Hw<=rUy&$ZðZ+,~ γ)‡u>Jh~r9k5h'+@m~,p9+$GbzU&$B.q<jEߦ^_ra6\naظJЯ B 8U '_9 i٧iz{}ۣE?=߆{Gd*N'lHؙ\Su Je]=ւT XR*U%:6TPyK 2`t Wdd;7w5M$v7ڄ2E؅v\[jSJ+W \j1ڣa>$]f&1#MPf[gdY!/Tvt/&Vkr{Ces3srNfZP]mi:Dž^s~\;Ck&>J8oA ŀ.v?L{n?hn_f*0O,KG2"'<#?̆{墘ֲw C7<\* .Ts7mM۸ 5BBM2 ?P2'[sK)Ҹj]|.({mw?iIk4UL2܁  ~·7*F97k 5E&I:p +4Mlco[r7}1z|A]@s54diHKAh5߰POTШ<] L~KMXĭwRH (9pc@;9ZN.2dW:qo-=;|dc(ɓps6gҋmj4>Pi'$T^a+aIVXsΥD#۳v2z0u}C;X*',|}pu?sX-"w1|ˡ/dO]{.tgcsTcm>; t}t]d? 5pxwz(}"8BZhO )yUPM (O~ BoúpHt ;4l|SL%i769)4c'?>4bI&6\ٽ9m߰Uk$Zp뻈IWj"T pYO%AFlehhҖESjs|yX'K^bu&φ(?$6P]/ېd+r9} ʱyrE,r>T ^ 8若SmUgbUkA `J3ѱC[CLch9q;ն g~kЧ2Ě)== e}gyaR5v+13ioͱK1ndQCn?uzk,+ M⢩́p#nO^ԯEvT)B>+EYhlw3)sLX;ck>]. ^FTi!C`hP0G l\s蕫sF iy6j(+^*O٧tSN(^ Jpt stP]ee[ZK*}#MY[,GHNևmBT#ٙF* B)oU),O_ة9"+#CtbFJ6:f0;*B!]/g$~s|7T-ZR͂T`eYm,~bC UrPќ:MiE=8ӏU;@j;Y"< }ѯ˘=N%P3$֙޸'81uܥkHJ9`## M&t>/ޘĮ[cŁH2$S\S]F ksWU5 邥}WPa3{;z%Rb|;"S( "v~c V;}; *|:^|" u`X,CMZ y:zIYW;ޔ5ubȦ{˥m -ww(_(wQRn"Ež/2 mG4SrZPR7袝.olVpb@9ogR[s.nW#3 E=l /JDŽazҰx|T $t?zR%4Ng7!.#{%'BеLtW ŎsBoM;hP >wȳKϥo' 4Z ,q=?,p޳?ʠ`u2\V| T'Nٍ_F@y3O*(c%{"PH2/dZi7[+»H >4ng]޺srP* R>z'c :Y;B0ѯ42!c>9,`4i~N?gqƹP+F ߌ`vw0lҒ4#?_@J^SJ;+^K:H}VKAˊ_DuG+i z]~ǿd#| ?2Ƭ&g4|HeoATtB[1W⸋KӷkcǔG g^%!n@J$Zh@#UPlU[im`LN?KJc 77q2W0"9 :UtPks/*EdVBmDOն" Cs{ؠ՜b]=GZA?j&3@SbRתF앒 ,gu<Ⱦ=2K̹#'eh>6yN ܨ>^T:VOcc|p'D7ߨ@"u/Nr}@ _f?8`ّf"_(@-q?]}F6#)nEXF6{+0d~2Tb3=2IѾFwa} HK݉ʢ&H}YDqgS6se5NNmI6[T,QcUn3< bcui >~WX*28 \汭(:1~gX}dEX@&~9 b](}\ ǯ#ؐЦv8]%y߲G-r'?'B^06[+VVr4$"*^gz=֎M>*ch(gVV_-L@bsq[gB;x*4l|.CձU))k$ɫO,C./$p|%$G߰C7%1CX"UG"Y{/y Bi2}_P3zx췘(U\wx?jMeז8HѢ(`GZʓKL ?h3(xx ۺIz͆kLhgy רw?YThab`(=fDI2YşOƼQs t$ZC n*"Ԥ51GFAnT=P dOB}KH42]34Xi'c=hUu#L E]2jhːۭ˒T>I)5⭗K^wwCywǓn,D(p$me5گ]aѣʷ|_B ƫ%z5ce1|3zS ENr eX\a+Pw7mYn naތ FLt\6q0kB\C!q_Զ)yzwBo6w`σmS+~'zKe!;6\~E&$u* /@=E(tzIFWb_. {E/\r.y}NG7TLO`3#r?g c")[ ̛mv ,晓c.װBkp6u Kjc~k`{Gu `ᶷv>0fc^M[ ygh6\E+.T}I]4AXE1y\2K.,yRW vd~EI,}1fƉI~۾׼!dɽ '"U n mJ;Jm5z2\Mc_Նt*3^*V^M{ azDL a(~p$9BwVm5pr|{nb"ӭ4 7 Iz^H;AvJ"$;ad)0 CЪ4v* AI{^pr+C}$"FA r5]\${ѢL=E6ahL-9#7z7+XmBvؚi9 j_%w <ƐTKmKE:P_9dBd2Sr=:]-" EۛC$M' ;l>G*֟r1мLkLcxrϚ˜7\X̐%4?嚻hc.C]CJ 2g#9A0+qDAzF+-̍1X`Øz'0Z2˧T ,`ql~ʎ;DX\RїAuPš\E%:T&]^Ɇ?\>њJ,RlS@4?N؄AB^b4(__ oOlcvKC[n/#إW[('j\]/-&}1Мl N8 w# &Պhh@&M%Ͻ/& Ԓ)KUo49x<t\eC?{,B0 !hf1LLSs8]+7N3"K`<{|v w9oz՛h3;2 _ֶƒ5ϒ9lS|Wg! ڮީQ@ciP*ZvR5l 3I8ȿ#}.(_@Pѽz _vL<1qJ$CyS/)A|-^~p)0za=_dgC ?$&+K @$ :od@d,Oz4B.(&0$[#Ng"*\!{ Sk "e@'6:/HS ud!;V3&1ft@wNj˞|_>,L/%^C(G`3awjS m3;8\¢6^W-^l ֜I6.Qlxwr"N McQ0ȹ0~8{jsca Yح\9F[yS_@yW  K ]SxhaX|sS^] &G n?Ki8TryZVk[w 0Ţ9[%1NZM)3hb?Hvz2B&zm: 4Ww~#cHSa!}ኇ#"r#vFh#*qus!&7&mӀ37TĪ<0}_m-H w"BA?UB)Q;vr_Y sk_zF$Z ‖S!PfsVv׼gշȡPtudDgiyc\Nf?rh7{"8~6t/~Ss}o׷JKډۓXo+8QHnB+]xZD^\aǬzU(Ux}u 0P~,V6 9@Nݸs$jJÄ}gke tyގlFcQelIzRy]eNH/N0G A'qʙg5]Qݓ38kؑg=3Q\Lx%:y8-U1\n)dTη1a] P /Vgq:3i[ضyZ:}ƃ+OO5~Vu6~@. wťc6qaa \! xD _bUoߍK7 Ǩ3,q=ZH G]Wv2; =9?}o*$nB!ރ!G}=PIgC%cwS/G@ɓ  Ois*).@x__%N* IY'J?*X穧~gÜTL@{HsiX^dNBqųjuȞUM@aC2'al}iP,"-S 50/1d7;r$IquCB~GIY/k,gZr-ҟHvƝo+P"r9~8! Ndv#1P *IB܇rL$} T E7_pZS6_pcGfQ=Ɛ ÊdT=j[Y>p_D_bOb}`m:w^C1-籗å+>qVϵL$ ߔi2#gq'G7"-`NZVs6!b׳fޘ클z-/!SH2 l5xK=2*^ ϭ~o/T3lB^yj fsT/hAmXJJb0ºnV;8v++4 6KsYLukJhf5VOP+$lkc~J"]FY+LP1D1bB=e&%Bu h`*Uk{7t+f0_zcR?|͇H,^df'ohC6)Chqp#0iM>z"o^c([]F|PL0*Aepd?~m7G:҆>oJz uBӭ;&^l藢n ѓ[g3RQX Dά~ z[~;}0CbN\ \q-I԰.J}h#x9tg! eVC¶(l[ʱ;=GZ_gjėA,nKXC}!qmW%婝rg S 6-yYa{TRV)R2׿A…[ÝUoCҴ9WH^LΣ <4a,Rӵn@|` ]2 ߑs}O@ލ"LN)hs~Ms3o߮s<ƻD6Z0g) 'd#Loj$~з& Z$<"4]Sb0 4ؿ$`BאHxs ˬC:߆#y!=Y) S;/fMyїOVs3%ls<@C;)OZ@ ua>AI׹I ۴t~gA=s XJK >e5Apwd[HꟵgÂB7_|0>׵rZ̄Cڗ\?| 2ZK`3;QS|ұOSX#pkV|`[[^co1/FE`[)!Xs!KQ r *ҭPQ1OݩtwC0p̃PLN=+H+#+CCLK 1:ϟb 3^^@^!ṚK >db{#ޥ5=+*馒&{-<4?Gb%BU y k \ *VF8L[^mݺ7B**QI+yOqlF\c~LP_E/cqЦ%+d!nLsò1zs^>6EtagZe;elwy .>L}(B7JnPwMY6(gݴyн?;;Owx'PLwƢ/q@e.wtmqc(tzەP?D%PՇu(>wCM4`\H!6dfN?.~ҭrqQ0t:}5sPYrԤ__ʄ޻Š >ӅhQ_WLܡu]SZn86Ah?4;$ j_~?Zeb12;͡qeKy?s^F*M@*Pxu#k,G\=[^^Q<"8.A 68/8h{hvf)r,֧/XpEMPʌEc·fg(hFvddX 0"4hy +lRЩ'x _P8o=ɞ4V:ݑD^$"V|Fo K7^+XB3Xg+,_>ή醚)W0=$;;) "hq|[wE}+~YI]!9Sd!-VUT 8H^7%{rE`+˵K@tqȺy9F{T? |yp ʂ db*ǻл#v}Ebg91a+6 )c|h@OXL:0\b4Ċ}[> CvP<#~wy ibz(@T7uP4}+XѮLAWO2XlT_jйΖkn?}Tz5RUyEV"IPA@}:'`'Je/t=XZ;)?3U(뇈q3LD#(}p0CQu׆y]3 4F/&AQE:epa3k qK K߉3J¼w+|1M˜NL/O@ŃJDžY,uBv+Zebg܉Sh0D:u+KD(9bk 'Pǀ]M2H(+2PĿ땧O`\zq6J(slbf.jlP2gvPH#;f~Mʀo1{ t>Jb[3WHǾ>cڃXʹdĎuAn_kl}z R B?غF#LNE|I*77HJLf`C5,GR[{AT(WUPnKطZB$VJ zFACN@nHT*c: g>]BLJp423iߩ-&"vn O G}Ҽ0cXfsnw1MߺU$4#82]v0aǧٮ cg{ʳ)Iص.u].}U "a12vͫSC/y'=x ,(B]5>z64?9:'f]]wي !bAIF6]ww13'gx+)~|= :\P1F 9dMvGŰ-:H|_ix%D;oA@x$>:s3MO0GsatR_ȅ Gʒ@;]iE !,"uZQ Dnu,)Buև v/)62~{ͳ;FbL3ٙ tI#w?>ǃ}o?eĈRz5(9}t딢tX>)(tJd'JaECž6c|=Uxr:C yfVCSWlʬp)ѹw)!xO4aț" ͫجh?o_?E|*W(=*2k2p1{04 l*QȷހZahE `@RV1IXz1'/#%ZxC0sj7&?ZX\~Tm,QyRe1K;yĠL훹oh]x-.|ޙ`>Xi4z}B~lzot3:d"+K֐=+Mƾ=t:CU|06-!÷[O"u5&Tsg%?!qɷ}~H'UwOLmps6Q?v)兵6e,odjG3:jk0w{P&GE4 f,>ʿUqF} Q;uu-M8l: ʪX S] £+IJw9 tJ캐3}41Ƹ=gW7@(6ȗ}]2ZvHaOUЈHsYzRPYO94}tJbm0?a6cNQ~ZS ur2XrK$$sT`f]^ah$=+o]BU G> P0]?oBKؐi!rG$G/cχXDZ`KkHѽU XXik8?o>Sy?^QnMjjEL5Yr҃~m@dEnԘѵTL;U' NNc32G(T- ۇ:doxd~>T |})6 &ϸ@!w*ߎ-:rh(J6oo|.;nw|ϻ|%PpΓ?6˩9 *s&иI';9*B|G=?Wm2 @m}lM֓ٓ(і -qə>jZ >uW2 bu{B a {jes֭mvߨM38iz> [].8{pkh 3X2f5N6?%6ZrZS;mQL;Ohøӣ D+x<l &SCVft"zoU=8ŧDM=ElTԐ=@f?nbu~W@* 4twAG6҃?1?TJaȣayRumv=$(@͐eVU: ?6ELPuNפ 45KSQYHz=AUo8qzE@;q/C+hg UܵC.1VoS0kS_Hi @B"/P#Gf"V]IJB0髉);˅6?آMBʳנou26 .}uu Pn?hgh*]L5ډ SODZ._2Vg&Rq|xxaAmɷ6N=[GAjm Z3H`WPgA @DR.ԛ .)>jcGEmkK.W=-Ba'h1êė:\*L0M;F4h=*a,yaME|P;hH>QEBÍŠ j"?AL/ݿVxVaV=nMQ9dnY_kn?TaЌVr=Я)yڕOd C!hfPчAYޙ=55?GCjc}wO:4^񶛀zrO~BЫ\=E0"7k -mw0ENJWZ-ōgesđ5еL}w<])%N*JZ̤L{7/{イ%o߯k]9׹yss*dCoIy!nys?|[u;ӠLE3h7-貔:K8[7E,}M!C~ zeE.JyFʏoQ[\‘P%0 ;?(8W^)Blͨ$:+$6'2bV8#O`(ws5oJ}yOl3'$JHؗ$:k-HBz,?sO~/$\ %Y]9M=b!/M{w UMG`92%h<$/0‹4;1p"k˦_g?QoE h;S3 yNK)4RgPRc[4?VZNNV&T,jCU=)zbOD-HrCWrhMG%rGA#鈧Ihk)bsf.4΍5&ɱ97-h2 xf5E'* &č ܠ:361%TDZ?>V-aO1Y#u70nQ=P YՉ^wX`PEoeF@74|$t~ euڿpzy;`ƹ93n+w?: ǕOѴ5"(ن5&ii`}5F͸:a(["(D`ѱYؼ^[EBE)nhpQ55.$iXz"&8֮kzY' _H5 `gyS%7.6G{X+vWmG`&$r?|?%1CV8AsI3 $]}yTHe[@c~F?}rj)G3K@[ 1ZOHoa!::\B=t:=Z^c4A }bJTciT<&l~5ӎ(4AK,3tH9DqԚKMXeqb+O+-`4YwK6zfePx :H$W' <ؑt'*Pbe؏B-2:":D-Ѥ_{v f|hwGN./VVE\9dA:(ӄ6_=o{[0 ǡR/ X*+O܉8{X⩛0akzujo-\c>y,W?8LjbqkN]x&Z^ Pr|S y\IQڋߨ.p h:?wޅ]_V-qWd!&3WR#FBl*=`sRL%I25FbO|MmKNcW7-K>,\N3n#3+Ě0DlѳS&IH`ѕO^x!*P9ug+\u _16TwVy{/a*x[a> 4p`oQKS3@նsjF7ZGqQGV~RY5$h=^۟ M rwE e:Խݺ\45^ᡊT~×P}Izu4Auy!ĽӼXt %N(-o,So:Bv 7:R6\Q6H{ hAM^f+,0.ߦC~!)tEc‰6FykA2CCȪccYْa7dDnVOhW5k%cȵ=VeYa%z?  eBOȳ|ϡDxZB? g^=嫃ݭ?}m%cPIE+!sTF} g ?!mh=A+y+ZyCq.Oƚ+ 7q1Ŷxi XFށ;g3\ψ̱FI;df ji]V Y(,W'erDk{BA< sWGX` >T;'xV;bȩW؜Q,a.&9'Tulaf?ܪcPt`?v #!uXw^* Wl߼[ [w=TQ0 g39Bꫥ*qhS{!LU?=w r&^'2l=%>7“feP\ڨ\9 ˟2Gn@H_y~/T*h@W B:,i^:q>ur8Y^ʫ,SuʲWq#NV ʍJ[Ww[bCd`z) l72*eYwR Hb2Wn}q~ZTOO+VYdʯ d)X@6}?0ubؖr/Z6@C{Z=h)29BZof\ *[( 9YK#Rz$3{0N HVznmȧz}eJi9R \%l&jG 4+2h2Eg>=M9baEIU]2!S( o03ݲ 25bz+Naݪ&}ߩjiWU~c31D{tmZϴCP­zd-jw!ˊڃw5+ D}fUܞPbҁKEOCozvk;h8; D|9An.?ls|<^'!KO;U$*AryH)He~E"0D?)ׁ: %m3StWOK5}`B[&Id GˬKCC3Mw=(SPw n}_:!u4bW-Cj1k gQl2\{W #Q<+<o?zoLQ1LDX;.~YwLHb yŤ?bAS;P UO(?N`ԣjf"q*֮^%o ^B"GHM]O^䐨o1H%|I#'unb|? CJNg2aY=3]PsW<O\啸VgRL7H׾b8EZeuk|SN^ʍ_ag*= iA蜏S2r~xQtyQtKzb>Jscˇ#RYw(iPͧZ,^AaX]>*VyBnB66[%+s!yn lv(f~z]M$gz+p[? X|ۺZ"|r%V/;Mt񂊍RI,^U iF-,Z1b+cQ|m޿ k&4,lܐHj_s#gÚ/zn/B})ZYI$U}8_1䏘UWO\-qva98^V*L)gN[a ﯇pnibJ6/x'S߶ C z_4_ӿ ]qݎ_x3&{Ocα[R95kLBRCs9n:k]u~Boz E ֤uFgܪ?JOgMA! 9'_l8̌K@+m;ukw z*B/^DOS͘!>(?]b2s[F]_ -MOY90HM{F85t ϔ/Vqt=%h|DJ ?k?@۫4ڏк;mj ڎ4οB|D;q̳qYM=bOBmDd0g>:j!Po '!$x!C $n*ABz(Ry]_#A.}W0b?sG>)/ E jGBTP,,߬ 5ő2<XG dL/ef]ԻvH\?"2aRe:D|Ӂ%0s5SryKŠp`^y&gy1\o<:kd͂H3BfV:bDlsѻBjVZcyϿ7Lr~yM!۶!"*8n_axhҾ8%QPT#s!sGՏmiOm\bnBB1}Uol):067p 44N{$A% %\c'aՙ=_b* X2(T=B,_0BEQK &?ypJVrIy#Oi4@ O.RgY{LW~~tϻRq ̷=DIMiZ_Jqe˃{B 7M9d7x5Sa(]?ikYfd4h])qj.kCuڎg",6^l(}k5yM׍۱-k1 5#Mg[*aAfoE&ab'LݞbHa\UW O@CA&.EIO\0S=97P=b Dz+!DRȰvDjh!tK`l#t0l#w5MqHl \Ӹ-y'譠'*z9k>J{ᥲO-UoYoUP}-CB)nUZss$^wXgl4w8my ˆ#C{с(>LB^$ZO2 2yvm@ yNζ"w"H -Tw!+sDGjz[ ϧo@vs l*cսLt=)N<9I5dFUk +BJiCz#L:'ԕZ1hb{dGB@h&KX2UOH~7m?AwN@d/a9?m%Έ-;M>ySrn=W}E oïw厎V|̪gz_GF*m^ }B#-iU~7tb17l֢PQ>AA,m(tѼ 2ISA>UW,5e h1FSUo=ƿ3L9fίnfZ_k8 DZ6"tGh;<vsq{C`b1%c&/Vj^A _ > n)#{Zg[MH#& 俍rwk##0߀Z Ro:o@4v0}ƍǰC>PPMC1@ͻ}W7.̩@Seo6haW'Fו<}qLN$׸KP&6u5DB%(= ^G (YZSUGeYz/ejqPR{f@ꛈk` ^x-̜^[gi*"AɍMJނyvwaE0*f*1; K5mu9߲j z9O=Ώ֘B%č2IU4\Ie,nw,8ZZ ,!wa|.3p_K7|ߞ֮83>P#0ѧ_Un@?X Цw:gNPy({^w>Z'"ȣU:1%&x¼IQN;Ep<>A;>v?5m<|ӃXRq8_2Ң!V>rbJ<U(ܫǎ76vR3=D4$) ۨ\H9!2d1B4q0pb G$|O=NJAӱu 4>ű?|},J+*0/~ı2qKH{2@EYK(,lZ~-)SRP"&Ԇnp3!HTZʽi Xui}( ?'TX% ƉbCy7!Cw>WΰCqOsǜ]}GQ!Ya$_K; oQϸGGWm +}ݥ; H^u%SSe<aaOѬ͋8sN_1)~י<8kvX+=o >G/DY:p9Rs7qHvRοU+`o1>U 潝#4Oxl~`E޴>l='&$6MƸbOM…iOl9 AKPzWrg) EY *(3, elp&d ϝ~E@"~ڂrMû@31gdf7^h? S & + \CcPy'2|5,_H{-Lȥ 2}C \+[9ߑ^<" gI$Rո#o_Mx\K)$>Csdӂ![ !ؐ MO! oaf~{#3ȔK_p{unbS#X@xb~o:ŀËEV@rJ;IML9DCTih"T e&٫H4B^,c)>QؖSyBJi I'j? gQad'G =0af>B٢62 [~hXf[י$!׊\|O*榡u9S75b!oNS;J+b7f> $9Yn?͍%3$x'o=MG($⸄(*RA(4ij3{YYzԦH<**Mν}Ep1n[;9ᔗ4@̭rM[?Ўu"?NJm^]싥bQ} ~,Ukq]}cv+PQ {+x86:nj`# 93Ʒ fR7ýཔϥ-%CɾCV'sl/BR?2JBJR yCc] ~nɿ*y & _ pCg*'ğ[bl7&}n~\L/(Gl+yv?Z[Λk@cfϳ`E[jcǡzߺ谖!1ܢ]a VӖ%wkX!8Y%i2{"6Sd8q^U,=>aLژlh~2{K*:ʿˎ|_™ j)~ QŚ&scYko[?.]u;m 3< լ/be+_Vk]cAyOFo{}&b,}Bzq^ƁIXGzbnEIނ+_f}GəW,X[~pr~=iq,8m\gw?ﳨT (@23 ?.H}Obw*uOqʐn6;޶*$2?љFVymIryNRջβ`-OK=D9p. gQo1"' *Ҵ gy^aFwPt\ee)d>f%)6[P _u;m \p*Tɞx^\<7>oۭml!JCM iy~=X̹#"+Hdυtε=,97lKH &/|:z 2CG" 6?'G\2z֕'{j?%صйbY =:~` ؝*Ө:]u Qt|/SݻNxaYR;Vz ɨϜ"id$^Ty[C oL52(>@ S[a& _tE2BdӴVo%w y|^:OʿY57d((y.b[_Zh+i8<()6Ҥ$YX"G>H*qD\B%O:?. ~Q^ȳ^=ເ1JֱenxI |rbr0%'cG.d/Dsj1}0c+tF I3 _xBi3ZI=ph^b/S\ѯݶ;L,w{c)9-:6S5}|.J'aa{86|LnCMn=@Z?Uo0šWh8hmEШ+|Th loa*z6& #+ a*\^ȱ2'~P:4ll"{hʎbqR!+ ]}m lw CuЄAyIxMWBNsbx%%YNl1ڲ сg0Bͣl<]H0u̹ d,??`>>݌^y>i#VVy5)< =K%q@Rl%Oxcp@@/߆Pىrc4M=ag7ISɽK*:|0?d$a1$# ԶHO?eir]%?PzG0œaPQdEҘls}Sw% )kHeYP1DHK -ROҡREZI>"n h+4 _;S骕DxP6 ^- ;>jݐm5^0mZ=J ͓ZxaCOE1#':s\?0]GBHsܩ7Y!(5q#>d\Du*b/*c[G2i3AwN.bӻ$1XǴvhY\ĔS J`%2>0T+]3X$[ U@6ib p6>g,K@R+}QSӯ<ׯc?rg|70J1$H_ąq4r5r{`\?){ ))C_q`P2_&!'G4 <)"1/7{tbnzvx!,gδޠ&ZY^ m6E>@]Lj3 $$)~ꬍ1r d,lB_5;쥣9>P\SuЦ=#|nGGBg;9>_\6~%6JWi5m>va5Ć6 Prh( 0 Y]K!\n{!yL>2C_BOwE=ٓmky 鳉-va-.J.3 lE8puЂ0RI`spTIv`*@B{{۩&p*Y=pv w` p@/!LȰH1IFműC_Wd\ہA)lY%ޙ =hg簲}NCUTZE5j⥸e8idiڦI6Nݱ~ dĵ'[*(E'ڇqMETi\ZuSE=^.ooc|ɼ&bImþoBwr)q/47ɽ+ND>FJy}rI6ګAcfkx J ?'ngXaq7S~t2aĿ-UҘ^`M*Nݗա1wgB J#FbDr0?tWzݰʁƅN_Э5eK]&;:AbOM7@ن'άy*W7g߱Si^cU5ȉnSصPYZм:.}v^eyb;t-AϣA/Cd6rHyԻ?55P*zCh-ߔ t;_:$iK8Aq'<'UxGJgx˜:Жq4{vր 1Oy 6O26XڔtCm0${ef:G&^R bHk)Q$թ2+jm |L{019ebZ-$:_3+ĎތC?;6=&Sjs%\:-fgT̂%:r-@~/[l|X,eI.zXPlz3) u.U Ck~c6˥S G:ףshc߻0ځ˧<_RR(<]I+?Dۨ;qiln:r͙kAkvg1Ň T3IVB@hm^Lȵݴx MwUSAs5Tn'i1ecަ9aEoԫLVYf%pjC91'r4*! *^K7jջ00ʱ7{vwc7Md=lvpgKJx`fUf^X3uL9QaCkf#t]4nQ?~bBŶdc?sG"{]IP3?-pFML-vr [ֻ&XyifH&'NJXaE7Vw0c]`6MYB.^XŲr/pazG!.#Dž3.̀bMH p(3'FNZ*1Cb7`HPWWār آ~tg==R]L[}?ٳD[ E\BBgH|bրmEMHLYvRTE]2|0Wlt؎8L<㛲9`cz]2;^^|*EoaDp{>nM)NÐ7jP:,q< ?kŨijȒz64<|>;AODjQ(mں|j?T~~)5|+C!(i a91욵?+t:b:^첨ݢ>=Ar{ws[I;A]PbݥnG#$Е<8i`KY'2=棄1dbdZRCKcH%}k8$UWcsȡ/y>}Tص>Wy R_B;; 2:'3`D87b;V<*;:ˈ _ d _[jmy܊q-t ޥA{zGodHKȯP#nzK%!=p"x]ڃŖg@fQ%Tn6qZ_O{VO^X;hn$<o L*s>f4\=~全c%->rNT }xyV8Ce>@㫺_荊矤P3d կHݢbmHߦ ,Ce RUw~9[Qm}#1X/Ġ7UQY‡ ~^9S2гq1oj9^i~Yf<'o'7i->֞sxXd>?x@b|W3D=*vog O,oZ3Cy7ɭ( 2Zgn4'{^q+]TN=|$4׾KOLX{by6WclKJdSFZe{?Ela~G 4n/Es9r_4OtD=6"a i>=Z6MۙEEwC>}e$ > ČSGBu-PwxJ6Qʙ jhw +esw"=q֐qUȖ*Sx|"wt WT@SXo+tv _aCҧe rl=o?h@{;S.PU WfUB{벾 6"םzhHK.={}ceWӑPC>gtO UԪ0T],: ԕFD_fCg}E $ Q fK[Ma!Ŝ|]` czշRVҥћ|7XdĊ|ŬZF]Q-Y b|]i`=lYy`XÙ5l X3\A_TB h0b8`Ϲ$(;8;3.zs0UG{0%YSy)c0*<"{QN z/73z;T9Ftus"(0`Ge;/M@N?9Gt>YF_TUp)̭sJڎ8ÓX f#z׶8V[z;cϻӇp.7hlVL-uJ'8e;GKnlDg)XR/.h䧖ȩ[q޾(2ۀ :2}orIQsd_W"ޫ(ya/F:?FaU+g\! j[G;t;~ 0sP@#@\}:J .Sd=܇ٯWT(ҜJC,6'6pjۼVNg*%iP:J#;pFi$ޣ;uQ}_5L;舧SZ@O_e1S,V~EgmN8m C /W|&4Q ͻܩ`d!T T$AG6\Ĩ84 d4)Z(+?ޑOsm;z8rT aH F\tFg݀~"z;Id2q +QHƜro~WoYb+חSvsfPVa׿;-.jsbZG{>̧a:g/;9Z*]s]e V[8~̎R2IG /< -~5PĞ lF-t hLo|H"T ZIرCLJMQQe1ƽX%W 7 yˆ b(Y|ڎ_Ֆ/'AVs֖Ø#~۝ZjM0p䘪 _y}9ƿv|,z@UCuj3qc k|":A#Rvbq'dci>611xE'?.iP\\nBȴK25]ϔc_=^b.{E24,7A3.;!%%}_1"=[-4)nZcS&~8[{p~R)j=ZQM9QIad{ ]2lBldW%E6dRAv,4_qƔ1kc~ ԝf`рգ}r2Rb.o|\Oy?͓U  dqHo@:憤aiZF`E$l7nAjޜ#JKȀFG kEP!h'!SoaHv'?}5 RQᇎxqKCFW lj)!`Ў. l,!ѿ,u{Kk ik|)1_6ma٦ifx_$=J mǔݣcW71ºy C|,=??G֯CE@ I U/f1N/'ijO2¸Nz_Mn6-EMIrdߜ{o`L5,/w ó\7kƒJCEXv\542~E]:_HE8tUiW=s|!Jc!Jr!?h-9nhV">䤃5F B㏀Gl<UlY:cDsݍ/zJ:)oM"җ pIqp|pVM$5g GN8vFq3?l;vITl;c7PKM\`ǃcS6?'+DDvޤ.n: g7w@GϪ{q֭ĸ(ꥰįukS bovXe|rGvਹMXuJFSiadnsF,>|cj+B\ Eҳ~z& ][4}pi[1"ElH԰9g I(|Vi+m|1KM \v!״'f:#={Pt;.VhP,Ep]Ou*5+.e{]-wҚ8Uf\L:>+3Ro&L38[4\۞P\ <݃ʺ<g~;?z33*By.t_yxypV0yn(|!KK r$ܔo݉3Q 8lN/H[ YqBVr/w_[Xxn\RpjiAXh[z;RZ)a-񠆫N)#اi1SXac%栈႖kv ,V028~!^S}T .8q'9MᛙPę}O`^r)P=wgHcj0r6Ŗ筅|gUi]taGL!XRǒo:&+_'#XU[ﭘc%`ReNn Ҥ\wߦfl[sE } uS֖uXt6N'OBvtaFe }P|S\! TeBqYb2zL2}nR5㩹 mhU<.I&xR>4]: usvFH \2kLi'ḍۧc]Ժ*Pݠfc`,Z5X81k_jD7x O5GD߹wg(G2. KFä6'ȂY  ֵ8DAld=~ΐs:NGYceIK dRcgo*@yUAϖΰ%J^l04/|J\ABƎSBms(ږ^\[^MJÞy巾㪛+=_~!3)~ȋȼ?J%(܍Sc=püW Z>yRY÷ZzcT/]ȷ-KZoA^Љ.ͧ5j\Phi^/8xIÈwdJ8 iptp $S|PuP+e2Fty< UE %#YI@2bQC`B.- B$@A? Kn3O3-f>W#-{kN k1j)yX;@bRO,|qY6WFFv(& ]SrVgY,Zާ0\t@hE[G

r[ToL^#wqڵF;Z;$6$(V#ŌBc(zoE̮w6rOkޙehZQUe-1$;qAvl Z;?!dAT`R4ڵGtԪ_Re}#P`mr뿘pv`ev7+}$tB~n~~Я-2r#4iH3+LJP! ԲNr 4n:4jCWb糐,T OB:^@ T4"j?7,j( BK%Bʉ,y)>eW7{ߕCM0Kúj~h' ?ʡI7sM7Ģ7W LX@3—\-Išj7p'ӆ~L h-CS(ey_6g]- *O* 8ʂ/ ։`2װܴKgQ-B Œ%C2aoceWjְ7|<|ZC9)G:X9Wmf4Ͷ *ɕ?C=[)0:p+5dNbӗ:`y5u dTkǚ[ڴVQ$FilG/Wu qZ#oHy-S=DXqR& `_C_ ?Bga}"?XDJ<=E|cۍobqIZ܋wbݹnBR☶ fSqsRίvI/Aˀ(%?Ѳd:5EՈJ0YE$L8|㤀DaK[7WIz_C;~0PrdUs׈n.A[PWݕ1yTIy[wGaeBv ɿ?ʽSC%H>sky|-3frzPAͽ{0bP`C <0ͼm49}]y ]kgsC`>=_ fd|p ȶܐ6 y C`ϫУ`hj ?OC W:ANp747񷁦jAAw~ X=i)/0~hLNÞoXCv,3;J&.[?qf??-Y`PGa=Y? ؔYVAy -iHa: ͸U~ or_cY5#kؠi\8w/V |*U ϵhpä[mXtÄgc5bۗoZcmKn\8ki^?m QdHLLJ/J@y!Ot57!좴֨X dq }VV֙(/6I'>Ξ_cÒ31X]ӥQ+MAiJEq$9e_b_Px 9CK;>kCe? 49X<߼*ee{To qKjK4`j qjyTC!w: }h _f"t/W_\r]΃S'9vؗe;{/cuR'mc%{hƂ|9:^ -Vgš&Vigۀ/m%u9 > + a|Pq٬\c ơACLJÛ(:5Cd3/-_M nNuc\/|z>K踬S1wnV4Ѱ^?Rb$ʋM?|(C!XS4, Ib3'`7J\w8Oő&6@|{q0_:r!KԳ[ivt^`9n>1 [u"[.@4wj\|XPB%4o< 5q%8[:j蟨Wu6%l/* PH17s:.P%&Ζzny @Ϟ-vbr3x m9: e{%KqQu8D>Y~ٜs%,!_+XʽBl0L1攭ʪBWtФaJ-?B_%A^x~l'Rߣ?5L|۵}1Y:4J~ywcSӹ]tpgtҦ(`N-i;tO3ll~px'.rK!@FJ[ ]ԇyv-sorE0OiˊP|$ ,ѻ`}&1h_DA&31,O|pgEWw}:'ɱ_|.n J)Mt;b@]X_2UNqO[~=?4%BcwؖytƷk®{n[#, $XlZ k_KCރ"hX `ݼ3V(}/)VxfujKL!89h 3 ~qz#A0j>4#Jޢn4%9I'S"R5C;t*[NJhޠ. tюabQוtGB}N < T_9RW">C;%p2oa=FNTs@= 8 !Uknp+8ρ3?ptԶ DcXpl÷./-%m?|ȭcâڣ8Sn/-NeMjToŅkYcK߬7ȝ-Eq({g#!KC. ՑE^(e\I]a%ݐY?wd]m0^z ! O&UiP߫=[ߥޠ]qeDE$-Ax̾!џ(ټ0,ٚ#"?!2(4 O,Ŏ]}W-Gl 7`muی|Z{{ K*3Z u_|;Nn6Z|4`Źz^a4 XOUp&׿Cx;`̀Q|Ӄf. iGz9lӞG{[(w?s vxz=YмN<E<xR D(ț8Ta@VxO\(r9jiXG L'i iqA(1V~iEl|OYzB`z!I<;(>ȘkW6!Fmz|H"2?;" I)eDBBԅTaQ!TR";2{s={ʌ$>zyyp>9[:q7)&=_J'r P[Ľ\nߒRibEG9.kwW6܊م~u{0Ch+$Gʏ5tح١gi7~3'918KD4y$"} \XDdo34 P*w[v儶CwZlз.\\So`-ǔR|:g7[A!\Gc]ݱ8jOݢ\l%lxn2;{)6TMnޜ:ҕ;L%Fkjsg.2V?ٯ#ݯ-Ja3AI1LǛJ^z(*Oc%#uɸߞqZhD?N6{t Ȱpg[1ūaz(BhZʹ6 k#wy)m0|~m!x v!<9%l{3T¨ӡ l zI/64ߜEo1>+ya b M|,m{*Vj˻| %~VbH>;3 "&k`~TfLpַ,H4cs.l#m-y`P /%ok Ebix q}_d'F7W`LJX$7͍ &j <6.Hغ= >j]o_ a l_/Onjv ~k/ҁ)A\j.<ց~=Sś;FaM,ԑ ¢MS~KdzQV)}cwi*V0 aen,2;?цu [RE"(bľljSk/6^ز!8HM  *p`l?u٬4)]&11* n\y?9RE&2QƆ^4IƷB}1X )&Xi9Z,yeIk8FcB#ñ+X;5ʃeiubiG~yjojk[ܤʪcBZW6ޜS®"kI+?6~3FZr"Ehlʐx*NCrw`28o UcN5*vu`STpOZ≅=/́jn=&[a"l/rk!KC 8mYў})>z$ VqNRHR|N| 1Nq۟!$ӫ=q$+Ϝ:QC-eg &5y3o!:!G,j9˰$|gsSͪڳ^O),@A_&N:7x<T\V?|+Hz0o5@hmr$)(:ⓛ冊1ps= KOb=p8D-Dfƅ\&}hL=;%t>\Dh;:vn/KBtǡvuG3Md :i!}i~5v ks;jw5ytrM?03q QNLhj_r/O+k(H3b(MhĜOȝ`ɢV%(xOQ믫:YLWVjY'?`7Ç"DK*5a_۠`j9Fv@UߘN#::r˿ĦF )[f Xly c MaiTE>20'J'J(ZAsQZ[Ppk~zz(^}$BjXO{~9-buy,xnN)j*^8w+XC8,~=dU,j|Q\wSROCM5LJXrT:xn a^:YdGjJWeg;ر~O%ۧL;4q_AeoG _(Hk\z!xhB1r_$8Trrzh|OfkoAl71=Hw9pM7MjY5?Ck=^6zp>Kƌ]m\߱s)B"$D(aދcQKMV.a!:א䩷M7ve|y6Д:PR80?È.c2ƫ&@,Ɓ%k;թFnBIy̽fPJ)*f@F]͋Аqu4.A˗۬P7}ScKj UAyn@y}cp ՠI}[AbxIf%\&-W7w5/Fk5yNRl`[/g p6d~ A9#0y+CFO2 ÷Əh4.  VB)n4Tg ux_]o /kV vBukH XY۞[!Lm)Az;F[XZ~BTeԁs9fC|#g^BS ` v0X%|60"gܭP!L+aQ_Y\.¼=Dl->#{!s|'O<>Ege\b+ܪC3p(Nu>Z 'Z~3H_- EƳrE䓽jz0X(m $g(_$l`rŭPz"(Pь̢MD 1i[ d1Dy@`%$uC*T9b 9Zb-\ ]3PB'ގh̔gƜq!R@P{cBe܈=rz'vsH=7yR >0VzdT?N0gi@B_.Exğlt'޴a) |%ukĂT%iB#6_>DʊUzf-|a@{W?J=z0gиECZ-2hG)2݄cۏR;.zN2 > K0suPeEW?"A}͝ Z4 ؿXV.A-7:)RRUe/Bk~x)m VU`}t"o}d?fBTGv5O5&tP#RM +)"S^8eW&B}>AZ@3roVj:+35FwZUaݾHIP4%?aֳXCXl~|4狹<6bq"{^L\Wq83l]ǺKw5)UZ7pų6띩ΆCrvJOn_}:#70 z!k6bּv"1Zj]ĉUm 05}+Ȼ!;mnY;@Fؗc'9<}YZ$#!SWB+rhz=7Tې.:cLנ`>/)|s&S1SPHs[j+̓=VL1FK%SI߄ f{A%j[1/4E,[=._ D0L$1~?m] C|ErGo"ay$^ݭDSi3Od(4 OUOboq9VO&^gߔ VpVx:; 8$ppu}w&vqOzLqpVӈ a݇o=碳tޤ}?Һ^ : zۋ_֠A!эg`7]a>4}LmUee>f$b H,aBcnLB*h biE׬̱cڧW{;V<~뜶^MŰ(sٌg_b~Qv`3?Wvc m8|$i>6c*I!4k&KX_0+”JzJرLQqK"#G;y]Kpr\G33m/C:8'~յXcleoaɃZ0R~!'@8n&'XM4{>F?Naܣq8NTy3N^\T%FkA bzO 27Bz_M`UA8:+v pQp6h+eic+D-ơ$g-9v s>LɃDC10dt<8CUc,TKÈKW_ʙ9/PJg1J̾E/ӍqX=XuHG_o!;^~|q{[,jFrόذĭXA T:JcFpR,} T3 xAX-\pkخh Ļ}y&\50)ȼJ%:YdȂE ,[/(aNIJq*[u*} fUvXlTK _AWNCa+'%1J HvQsXM"OyN #W<w8HՌEFF<];^6\46m0?]H ur]S^K÷LpUUxʼ {>}%a{NᢉT9_aO|<3|}=cɼ'P2Oso}jصd4uO;8aOTqO | 6SO=X_cMoji,+5Vr>$CSmOm'9W s|mNc2rn@ω5vu"gE :H!+} ?Ph1(2<:}l;t>|:K]m牻{?.XPyc7$ 5q~NJi7AX? ͇C[r,LƇfJ hU=WV 5Mv?WT 3Q{V^7c"о 5fuD~?|GIia3=aw;r(dv'窹+TqLrЗ>-B~ \^ў0~+ݯp'1$C:RLq81Ǿ~'aHc1 ?cw6?Iƫ7/^(x,uʕ;j&堭GaZ߼,y/ |HjOA0G"2,dҕg-LphUӑ8C5tՎܙK9e䳃`ʫ`]x&XyEF|. G 5"5\>1Pzk9|C=\ǘI|eҾ=@H~?nL]@٨"ӊRYoQy=`OJ+(g%ϪDS>;'aGp4qLn7gXh;z,w!(_=ܕxqꊵiߜėJEq^l b#yjO'Tr[qB,I)lnrHapŇ0Ħ u/bKjo;\=;s*Yd,6cJuH_7E[Pú:Mk  }`)-LHY*uknhzr9pՒ f?į]nfzI>ⶣ4~ZXž!;ft i'rc>> D°a`qSY1AXTFyf^5y4޴Ά&mBWɟBXNQe 6^P{%UYwﴌo+V(3((i߾ci](y>QJ`Mm̜2YXcbXmk076 7tINBl/Ɨ]{MN~Ԙsp 56|Xã qXq{=Qq;,_?e[(#|1e5j/x=1}1][[i7\fggR*}w~XŖ0֖\]YZkv~F|ۍm{5W1Ƕ\ZG|'d )1N*7H0Xhlj͌F`I_~*K[C7{rLl'cH=Kc %a+w0-pFټzCeʄv^:@š vh*TI0]E c<6l=d[j3L>hl*jְ}̣s{q=r*[1.kKCr@m/2~ %ﷇ~>E1ĊgXG%7KރZXzO^ע-_i1'"9>)4`xq:nrD_k `XT#~׭JhGIUTG"?TF!C9=w[hu9r+JlG6vۭx6TZP@zR]%+?( %/\P2Su";M>(_Ai `vZ~hZƜe: ol޽S;42yVMLBS޺sXV'KfHs*`cAy>,ő7}b]\e?n!^` (M[RvpN& SvS~ئ)/!uܯBkR'01,'t/Dz|W3Ud`b [Hnq>w -뗁U'pe{p|9`7zuxW'ӵǖؒI:]U{=9|PYUrH6Qxߖi-wӯ({TU#[Z8&OzB3_w>aϚ4p&WfRo@˛1j0.w9UM/)nTmA6}Bݸh,_wڠEHKiCع[(e)-oS|rw-:6h}"+Xu鬈kXOeq#dʎ jaI>VwE_Fb]@طrFR7'~3 | cGyKI?ֆhj>TFӬN"~.di ¾L(VpS6m| J}n#+LXm'XU~浫?| pStMR =[.~Eh2WَUӎBӅ )ȧaĮs0]gqR0|0 ?c535hRue}?\Zy4HE><#KNL_i,YrwCotͪB]U~>Ls<}i,a#Ȉ" *dL¬|OI@|jM4Am^b87(1r17`ݝsS[ eK~ »oLOm|Ǽs AiY:GKh ],a8 ! 3*ؙryIk>yVJ+Li{q嶢v.|z!Jaa67> z3!VFl< *>]iQ,ĈUlUÔ7]S0!$ BK%0-#pȰnZr΁'H(aM]!wPQ8w!Vh3 +`6{.+0xMAw>3yw~+U8HΓtXfnD(O!Jgڽa-Z3hS|/j>c:e3,Nb߆d|>|%I$e-yM>uD,qq ccԧWcTp}c+~ރ̦n] *TPt*LqfBoSݷ9!ќAm*:gȃԪgi=iMUSRLgP&<2NƶvC|+?=Z oVbӘ(x!h6Ç \3g10u3 5 Nȷ[=/qTϺ!-b240|ڕcs;nouآl)qO8,a $޷sZ 1l9p 205C՗8 H|)> l2Ёո<4Vzr՞.An_X>x 3>Js_qFx;P>ǸA g3Ū_N& gԻC5u_^,}m8Ӿ8?O.+BV]P}z{'M)+Қ( }Gs7 gW*OoK_4az|9hU-5|ǰZ758{JE.6JO*hGKXe:羝zb߆cYɽ{b) -sZjLJB hFĚ71ﭡ<)lȾ) #xVxml!\c +"Xu5,X"ݗ#d6Y@]=O;ى_֥E@qT\in,wEkBtKV@ؓF*74W._-+_CmjP7^loAX%Tqo2js}m;'KI/ 2c߈<$lZ=?l~^{\48tx)zF3RcÌ zflM.ڋa'u_8vL6~142jQѫ0m*Zsb>aN=ĻѬury7拌n/(V?5zlɴB>2aMK" qG-VB`nA|c??b^-XowK N`cVo ٳ__?UN}YQoιĥDGF/#Ʒ=>Fcbe CGf(RQP;p.ȦWadZ!LN?q̍}7~G+ 7\iy ٩;u 2# k#j`Nq>>]{gwZ {YT8=.҆o&C59}&mNx'!qLXs?UuCřry Rv 1>V`y߯oёAǑgK2ǠMlIq4z%~Zʜ+M6aӱ)jӇw%5΋]4FB(Yh{n/^|boT\oL ]wZ/'n=hr)YNj${7~{p ͽZeX #!{k󡩍Q'cpA2Y/> 0`/U CgG0/4JHAAlO *@}Vt~^,NJCFothGsota6wв):h2NJƥ'd0,k)a|m</;\rc׷MO!гhGvDУcsG79t(?e[\` |a!dYgN6W#Cx@7h]T]v֏ Tl۴HJ%$C'P0y5Iz ?5-zTrbSAYYli7h j2bǍ(P/' kXB#I(`I|Oh¤FW 1 zі_bޮ{_9u572};zSJNǝkPFRtj,UO6Gǡ-oNֱнuRBdcԻd5Swd@EF:u6N-4x*|lK?@AUAcrսGb e@}=7Ɵ `XA>~Z,FuƵ&| Ƈca;[Z&ح#6ዣYzkq\ʅʖ5K c=[EgAƋµ@bbPR -1S+18"]UDR ,%XNwkAQв(k6`Ǖ,3s2V M={X#^.`=mw_S^/H:vҶ3ޗdʫ9{2£p׸R|/2 aRn"cjmἉ!k'la9gIPu<]6iRa=@Os& ѿ_C)]VHt/kMUY12Y{̾~Tr.M@z,6u|xAkeƃ?}fA"Za .Hacm~Miicw|]aӜ%h밵+*M\ሇ Qdʃ^,o3|N\-m+֢ :ek )˞sP%U1e7$ ƪĐw-dX/Zz L n`= ̘gyjԃXt@l<)zLZPO4Q0@&l#ԋRMks]lӇֹ'@R}NAF!rd h5pQ3Ϡ52F,(,w1vYRf,wblV-NhAVi{V2t~9'?P-vr*'Bfݝ>0'M{LO=GT Q& h;$P):rm 9+`Kzfag OQ2^Jl6+^VsؓmU0kk%O0A]&re0Yoa'y$#6h8 OVdtyh$ xuQPjE0* -m<⠾$n/E|sYgQP~l{{,^q}>wz 7kmh0|wh UQ,p U P&*'dNV6`LȐ1nяQ]O@)Ԙ%\y)~QV:vK`5ɍR4~v:W;t_2o]SڡdJ*>G_՗ uվ 5Rdx7$a9A߳K4%~58TRtS'=pZ"u%s5S%xs=EJ{nmKzU_pGcKSn$ 3r~wT1[Zs11?_;wź2+:e>upU?~|֗z`i2gױXvVF[jO6CzV f:{4x_bJ|df atPԽT~.(fAe3Q$B`=+s~x Q9{b5t=YP:|  vj8n]. +Pfvt0X 3]Fˋ!diR?\zxF4`{~8?\G;M&@z}Y9 M}[tmPrzXN@/ZvxZrNtxΡpr\JMJƽmc/З-|}dو&yNcЋCWE[Xpc_ ~>+H$Mjڊ1n/>DXWǂ]a,;_2l:y [vc4_( GOkc5.)Fi<\ױ"N$d8MA K^bŖG6AbRs B%\ۙfX7 6vXY9c_FaO]M/7{$+o,ZkFۧn샐+gNB[^whq(;zT_>]ۻqޫ<8S"l^7îFAb>0S,a12_⚟T&΢դf5P_fg3V_419eqF8s"g ?v)'+R/|F1amg6dYcn%T']ĎԸ*K:sIK.%ǁG.Ť ý34#!`fc\bfm {ޱ)ָc1 j%o;_M3Y N1Aש 3('21g~/B#.Yucth@=15,C 2$Tb;&Af1'2a,7W^*9gXńw_9 7`z \Kᄜ#v0Ur3VşCAk7e@9%h~i~|BWѩ5Yj4KQBHmG UA\@C~Wyu1l<YߵY=6$?aZΊOjB^? ޤqtE ?1>g @u3̏WL]+^[u<_X9A]rY1{s |l߂ kR#Qz[꠺i#הRJ sG=Y+:Y]t8s]"۔?Ng[`wV82zoF?<.r^æɮ*-Er`I;ﮁe&xǙ8{n:%:Lġ_ _vW-[o>$[dt?9.M^B'wbW(s<6pʜwEBӸ`g;6["衚y )^Wn98+i[ң;,8$V' N8͹bVab7Nҝakdӊ}8x[&lpK}ٶxH1݉u >TNF`oc;FbQ~8O-($L BnѨ2TC:`0< Z 6~†s ;?T~\ġ9qj(S=QLd{~/+U۸Mg,QM/f8&С=5V_oiY 岩|vȠL46TLUh%} =28ݎ=j8͹ إH;JF9cgz^F݊Y]LK|-y ?^F9ku$f` |MIy[(`dUUM}o_`Nan {vȝ#כ㱟d/8cza]6XO3tBע`vq_H= OfOiQUE s^;I&c5oWM^SNVlQYoVcU=]vKyc[inJtGXEnq`N7PWź:ik\QZ=X^(aɋY&^-2-12m T}$o|L}t$ J75d,I1ij&> ȓ8Hr]lH/qշnnvL_CAl?a0~P,]4[6SoZL ɘW\%~˽.B4} w}d,[qoP qG2NEqi C{]#ǟb?_= 1#$(_6X4M{J7AZN0\~@فc3~9!/}"!u3LǎPuD8Vkx ] {AaΓlX87ݫZ~V5g^bvy-q'xv,IV@mv-fic03}B-d20zHeCUO7CE7&񫸼~VCmbW}/D殓Rn dOZc0Xׂ;q!X'^Tz\3>E4`_ jPn2ʗ@͈hN>dUz!)F'd7.B:JlyMfetZ[oOmiuKKl⡕6dH'4}WaiLN .qSCAYmPyml ?]xr;;w2^{a(].)ߑi 6)ϋ$X]\Rr; &м㴔fHX< Ŀ- 7u'qCy~-v0P@JdTxcgP7 4~IsWFׯ q߃c/jhD\TV]@A|tfwtWASG)r(wZ` Yxn0Pby 5 -*W;e1z9|q:l}-4vBaiu)p$%J5dUb̛~ E=c󪬿ܭq >C pˍR c]~;Q>ajQN_5#6驙Ή&eM8ccP3e=8jNOtHglVȞjɕ&WbT--QZubFdShZݷ0LuX Yk,Mk3!\|䏰 (3B47Gj `,s%ʁB Ԁ67~x=R{-?ǜpϢF!Jv >aA{ =Iwc?lϲsŇeI0Z)OQ\1g6M+1#4oD 23PDs,/[5oOla{uM~jH 0xkLAy5DEnZJ^7Yz"V@ۺ ifn,sP,LĎYPE^v9fzMTFn1}8?Dmf/`8PϨWhurgg\<-ɎlZu15V2v!u5qA{ynI/;\p忱O̺BG7 K d䡏Uǂdetz!?=9MAy;F ֎l~&Yce 7>#Ԝj!(,zZE922CKIйy- j0nS3uAN8}ԧTm6ᪧWрpʱ{ߝ+hp8dKBQb{0vVE%aIߏbGhxl=;ggdB"CXJ0  4ʏd*`,Lc k1Oq(,j̚cfxSP52TN<"#4wpf5?qX@l7v.p{{U1anǫdX+r1ZcGtJ,j^^4=;hA3mi!v1uqi9Y?i80bkX&+~,vտbF-0~\ ƇoS(gVeskfAo.BPaylDjĈ g%Ed[1Ih8! YvtДXyA *;Iƃ}Ǡ]~=!x =M 8 ?:WtwACޭ=:w;B̲V *R[jhЙ{H}JwsׄiRgl{tꇭ39=)yw2sSYÀFqea5>w/Ăigt6:U3 j H{cƳko!u5E'$uiVcꉏ&cz(sg14V} c?Zfۉ{~h2ZSzuv_ʫvBZ  cSՎPM5;ube^jxf4]J{Z<: iٱlCP>fh) ƾ1 M| 7ȴ!iSCۅuc(jzaA m*vboQz~Zͧom* B㨇83=]T(F'_Ucf%)"qOa<Bu==>C55wp4D,2 5vyxz},FϘяk_qlDj*Ybf;vht%l<*G`LqT2Vl]b٭rbKΖnd<qw;7Cs}!` |t8DZ3lZ& y7( a;ηS#%P>'Y ݽRނF18~e;F՜o+fŨCDReT[Il-C)%*? L?(EY[qfQsB;`r5HrKN=Vp:r[{ p%S= g<1Ҙ/Y_nOW֡29ehJ*ѓ3߅`^r&hql_T及Cwha(|?зF2/H C*l Ma'O?@ ːhKP(r>g2۰-b]04%l~Æ}dyI>{K;q:wO9QbЃ}XSw "KOV+s / ц3"(?ZЯ*'\[Z%*\waWXknkUnsޭ/j"g=l؅n5[c#㓅uLG1k:{k͓P~J8z.W&&+}&{up<]Ad~oSEԖ,Ƒ֪'g[]Ț\Jr±olz}*@}2Ɲ*ul7tRyD3#t+ hr9`l_s ^Д *;:"^ԗR4*;q V9dy =0pz/~kXiR4,TIIfN__A{^v쯘sl AhcƎ՟Zk%Q qgh dts5G'75԰.|w6.UQϔ30l#<ɽl/oЖA} l^;}'^hdiP}s95ͷS/]m9$xY"7#j=yF\~ _:ގӫpͨ: ?.(ݽSce#u"F) -{T"ܕt H⠫Px?| vj]no %9kvȊml$<2]Q3 >0WPC)cbS d*CBvb^@Q15f.nD'¡yØ9ِseU6D3m:M )Q[r4Tǝ|d[3eRX<bӳo*X/D,ccv'~hH2Vi&KY cn@ W ' Mv/39NλxxtDe5C3tס|0 _}˫ iM@~eF?~QP*ނz`B- ~A+֏.CMAt'-:-Ƈ+{[SeKL8Qw!Ш.tv#)XQw+`y+&JzS,D'L9n>$NHj-X[쮖9-6}7U=W8t VO 2+m{Юw5Zo@h:PO1SUI6BCUsAh~A{|73iyv}Ӟ@V37yRaJO-ܤ6jf30aFh'4Aһ!м2PlyT ʳ]K0塂0| ZK=w Oq'iLR7l%)տ4 ^@z? kdRʮP %ӫ@6ֳyy@y!|w$d;= !)lZ~o7WyUa~J'>A_ )yx2"c[Nb.>$/&jT0"%(de7=@*dO@.ŝܓj_Ñ)/Ad}$ѣ}2d0ZRAqkX3L-ʊCzXB3L?_ja` `]Tuj ė,LLiVaH6Y+ ҫϹ}`W})}HnvǗ'xDiWC9v 8lxdP# ꉷP%z噯!V/F2BabL+FjpP |GEc7@~`SZ 3!t=mC,P~(d{ܱ滧&0ew \SR#'dt)AwuoY( 9aDQ&#=tJ8$%VS ʊ=R~|$rhs76nb"9ÒZsbrUS'/;›]##>P&e:Tg-bCx6>B!.g<҂'>,iȚQ"hX}B{<UpCiG&g!r~? m˛8qG]⨳WRolLpӳ0m>nrw~< śHˆA_r00#RP>4|N'g,1r~64a?\#,j.>P~&EZ^/Y_a4?AgHӞ=3QO -wAG0GeL}'%5]c`oA{*L3d>^0$\e._K@eA(^jKwS60T//y#Q_펨fh`Ppf.hd:oOg=ւ쯎8&Ӭwǡ{D9{|Rt\8qRUW\Zjtk;잴#f 0 aUZ2U#`Ơ%5[|G7 C^O?T$Ltf`'MI fw׾-C>1"h~'vεgZ7Ry ;4A󝅽bH;^=@;W8p꧘xCݱ좷Z +8vӱB}3\!.6$+¡ǡo?nT)(nX ⷉB[PV Zc?.C$RKhu)? 5mEsC-3[Z]B~37>l.|nf&KrJC(:DC<շ{PZW=(t`%rICzc )Lhv7t<|e~3 yFyV'$U63B]9e?|K^%ӈ> <6zmaa[Y!fd1CroVٶ %&N|3AN>3uN:v_/DUtlv1v<TlG$Òyg.߻,ןNl ejkq8p7P_gѐw%{}LJ 2+K02ybUD=4h;1 63pMvV5}Ş#$LX"oy. >z$,o6a>}?DL/oan|m1' ʭ@fI5䄿\VWOwrHzެfL>"رLfߩ߯ H9#|յc{iB{=M/c>\Jhڢ<(|Tl^i(C['@[R8~J%qh/d|P&\{Btyey_sK 䲞`2AJb#̿8 |.=ax+sYN>vk&&x򹁕}Yc N{Ζʪ{p|޻"8';=DH6K{s]Ы'sOP]PRN^9})ߥD4&[[:8.dt `Gn \kJ2FN^=I„J@egy"f0TD%LmJPͶ?eidj:%I`~n )NPq3=)ԾϞԶnWYP)^l[:+kRpmW׻\{inxo H<8izqq3^jeg;R],-yqo :KL^8YlN"+|]Ѹßw>yfs801 \V?<:(v֢Ofo?qCcn;jo0Ԝ|~=&=}ܡusյy4ݐܢ^T?|rGmK5ka RMqg5,#\Q@ /0'ز^uY f2@1TZ!Ne`$$9RϜ!}{ N CI/ی=$J_jbs"CϞgК."jr+.""KLvçbXFILq)J\CpIXkZ[iyu׻Pzd}9 ~^cHQ%Jq?;V0Caߪ+J9 rMA$ EOP{v1's75)x0m(5%V]yA }ʼn1.%BujX_g<em-|Ф6ZV3rѺ]NHͭ3WH#R?|>) ՚'UVS ~3xyiaݯL\`ʫKwR"%2~]>t@-[(h Z+-ES02RrmhwҬ.*&hCu_|SpP5/ [ PV{N.w]}.S|jaX$1B!|Zc~[qi+>@ov5X8|C%6n կQc+Gi}7-H !s;>+ʥ"fVe-_ԙ+ GcOظ/f>tq,].PMSC4 vtH=ck+D"3:1sx" Pk#()gd`]l{^>e̎Ibs>u92e|y8F'@WF!m܁s`}w_m3Mdޚn&_"K~ {aC"}u:N+> [ /ze6%gYfYG ;ͯavőRBt-8)u$_xw&h}|]KER_?Ƣ)wYPR,[ Qm(UI bpW:`0t枷O,#q֌Qqi!t(?B%oMBXhF<8[EL?ü BLOA_z!7aoLGu?6R"uE$ɪ4TZ󪧽{{osuk\/%Hd|" Xtz{}KY Ekօ-==򉈷[Y=h҉Qhu=Xh >ڭ) go@JXk_*>jZ҃T@Cȣ;y/+Bt/İ*Օd޹BBv4T—qϾﵫPl͐5/cǴL9MxAB%)&@vyoЫ@(k+1 OnfA P뮽5y"/6qLżJ9! ,mؽK(Xy2v{ۿch!6L2h&Ş`a8$~ga+Pi慽jAl9Ƙk'W#f {vz|eJ5}ɛNoDN}5M %K=0/[̢ۻ&XbUtXsW݆T/*[+6=?C`OšPt CiX4xWf??RsṞ@O| וfZudԞ1Cl&a;#RuƟ >aS,mx#HC~;HdFkorb)Thxu@s_M&/VoIߘWTf٢սr=\ȏ +?\Qq|2&,FF"GBPI{r3-;Ix,kU3WP: BU! I4ݏ5<>C^GtPO?k{'qwaYb:vId 2/t5%第^ċMg7tbI<\iφT(8b?kb:p-au1*=r)W\y1?MC}3 Q˗uKFf:j Zfl2#MYMZȊ!-d7u |F8UH\ XNpuF @97h!q(^'CM¾_Pt1Y";m<փ; aԉlO }kB*8 G8b<CKN@#WƃߴT~H94p[mPU)r(x^涛Csl?AT垽X,7܁p, JDT| 4bGʥC{ l˹}:Uކ\1&S94E(h0I÷{mV@_¯m{`(|XӅyO2 V82qo3b:N6ydB_G y" ,8A- B86)j4n|V[GG>0`j#W̽\O<|jpeq2.= 4zvO" dq(V/glsA!֑͟;&]4|.%2yḾ$|a,:=@g:C آ:zZe8Mȕ%:>cfXڎ$u^ EPAi׻冥&0ge,wMTfᣉm$ [@yGy@~N Hg[КvNշlPۚPllxy'W> E#ExgUw0QG_\ؓ.xVjb,_4tbXFk2RxJ}FP&~ vs&&NŪ_SSXֶLh[ls4\vͳJl?e%^jceo6q"S4 l ,}U3~ߢR 7^>bhr▒~`鉑;u@oV>ldbxD ;sKKXu9>O}"x`U ȍv# cВ#u"ɜr'j{xdө⏹xSAߟ_pǎ`#sWb e^_fH_&ڙ ,Tqw{ ۵2IʘbCH|@.+qJg̘WU&CTېJdE>Ėg &a3R] zyC=FPEۦ>O 5YR%QX߽Hps#bb+^? `6ϟg%1c!2BPUIh{0?eσ; IzBuWsp^_r9 ^wa2injHeҡ" X'%"m/[eхzYcdcGM2G]|2M~kc_d9 76K@:%o]f=iHXgա} HXL> v%|ceַCXL4`*m_GpxiuZŏGCgYؠ}l&t@ ZR\]p"C;3o VmnքL{šA^aAJlRv`} ހ-,`'brlK3~bc*)V1^U| 1~QxXxB ظ2_NF`S)Io=)mF Š?NzYcGgo[X w:fI+%r.;~; |RO5*Z$@wĿrPP]wLj/XY4XBxUrܺgiF+\g{?AJfBٝOSrc@h N1leh߳Tt=2q+9# z需9|/0/8{ц \]"sN4ɽQT3P1)!ASPHαHȆCicЇC-!yåߔdzbeZ8׺7Q,uታes~{+ >aS#!\i@Êa+@%0'ċR}Stg7=yHuy̝RL k9PRm3rRXhnhcklvCvk`1C8|.mLn:./5*C1@c!T[s OkWgC O~ق1IQ,`_}C6ߞ_ϰ žA3ctĨ VP}~r$+baR-D0>8%JX5@I`t C'[ߡG||EB@IK7jhI^ΔrR{q WPF&w m$HOm,Ha J/>dt ͌}*W`X/fnA9DO>OL?C۞}g c!J32]Vz fzaԮ;IkN7>x-ϘU?Pس3z{(:q32_ׄ=)owA>嘭B|퐮?}7<t>hCD鰔^%I/X9Be>%v } asR9ϱ=Ͳ[X솧jn+Obs"aV #wl:e6)1)r8|JpT6ZtM(Y$jߍ..&6];VycJX*]v'ؘJv/6R]V=Q߄ 70vh8*bYY4.Kwdg/f 1`yJw _hYHnEa=ۺ7F*J=pƪ^9xIoy`Uƅ.lYk&ɞX+uW%,-}.w;d?vwDze,p!q yNFBYW2=N| c"Q ̥/P)yZz煅f=]V{_U{u?t2 XO<+ gՇLmro=Km{5>oЁۏ#jߞXa CB踵(8GyN2a3X!7Eo1<ƤU>¹iEGȬ=1]{`KH'ڵ&kL2fN1 P䴹ʐ9rOhX`v8vS@FW5` @emD3VyZTRedݤc/b3NX%vy}"4q~;4h.b^ep*n·wyTr^:)ݻmd09D(1M<Ƀ%>ބF=-,.{n:=\x;cb i%i1(kI6JH+>yâ]\k FPLNT|y<#\~?4PU@^Z]Zw <*ǖ6Wdb5hlf*r? W9ԿYyWSsw2/c+^TyqӃ#U!72><2ȺDNEEaE?p|.q̀LP.'*8?n;{ "nyYBۺ͛=|23P Ɍ)}zWt R}u#>D=RY Jj f/ҁx3?녺g\ܗ4nh2 ~Uz*$C͍-1PխeB]r)Q~U.i0JgeQҨg "t܃`s16[~;DJwӎchhg2kXiݟLjT@5^9˖>)Ԉ0܂eq%b#@~047_Gz65*gox۽u7IwUiN9c=rUB8ɷhbrw*J٠]}5XH< .@]3S;>8)](ȹLr k.c-L}\h^D ylvi#m"K'Q͑8a=}jue:01L>dR Uƞ(O{ WgdaЦǐ!9$g.ƒwnc8~e8|W yD,W}|swv8m֑0FIVlگ{gZm1$rXgθicvY,'o>c| %_7p r'U=Gm|2:I/e]qNs8yjah<&}7 w7~ąerl8koQEhc>`r !ml|0%cI'A/v7{ , bJ:Y7O;? uj<'\Ja]h:U5椰M}4>lu6jop2v,HU w֌!"خQc;?U=ǁ}Z8q,(>&Dz1f5m*H8J\ 목T%hD% 6o8VCޣohQY uWfSQ+uT{DĎw,MPiZyC'TK+H9c NB%qנ,9@O'6}LY0~q,P4xI%G ԅ]KЗhr[Q8 L(`k2o 99wCJ}J^4R>ߺAdԪ@*$krm/1mz@F1XzJ3yZnA,HJPesgf0؅J _9A*:/ʱlzEݯbF'~?Om:_\6Z7O(SI]n~9TgG#$s0$T}umk0Iy{g߁#s-1岴Sʽn^%_-CqcTemlh P=QYgu-pnl8K)lVٱ[RΉJƋ[8<|t>썫`iڿ~8R,˳TZˠŭ*/}o 'tg=t$my5&&*|vZyg{.LpiOu٥1\5…ҕw8OuSa~ ]=j&7{sCAǵs{qS_\p}toT#C V9,dtL{E_?J6ңv2:Hs%3%AsˉZX\bG­Uڼ_!NKbq;]AB"].V[sk޵0 d &U0X '"0(Q~=0_HtV;Zt!̦>!aa'{Tu@IB 6KI:1M0uyk[pPWXo!-"jr?K)z!5Fc( p_8޿fbK&j8wO۟ٚP} 9AC ݮq }[S5s؝UgA]J jv ^(9is!,b%~DiK3)wk‰Paab7N6 .hdk~ V2T1 u3tűQ`w EV+7[Pb652ܵ^ s:9~';.)\a^&:pM~G3,n +/`dr]X+rxD_:GY bmwt*3AsoıSTr< i XZZ^AL*5{ML?+*myURjXSi+AcHE7ѰbgvAvN6!R;9}[Ap ^a5%˹DZ#ceTA-N`|#WU 5\=&;O[x zJKY^+uC)aSoUpy2>ϫdƎq*-v)pE?6OG-} 4 ~4MNκC狛. PVZ za^}VsTo pF{oc:4P‘-=`_VB@T)b>"OJї@qR{_{w s2&6I h86ˆf ;[MyYmPù؏g]9\+LWѫ>W0I #5&b*s[lAY9cLh=0,D5-{M(~\DrU5MɔΗ7C+%p7 'l$=#T{ppY:0ϒLa؛as,|xD?FSܧ\ {ۡos7UM_~ 9cV7᛫;>LDR3_ag3rR ;&EX! >/٤C,~NKt;O[ܟ羵@0Ƽd0]1r1 (YCyN@PRw+͜/a{6bnxhQx9/ìQ7)t&@kO2.+qUЃBWG M`t3\S tAqMs^ls+Ttۿ?bu2iyR.F̼Kd`e;}mP~3jeZ#5, =w:'_u' 41N TcXKT6q=JŦtr!+n8uȽCEEO܎Ğm}k)W2*; -{r jw* cA7Qv} nNCg)+"ůI `TKb[7&zgZɑ%Gͱ:L͓b~&cX}:pMy,qޔa?H2= bids6ږЦUC .D?Ty-!tpHu֢rX9߹\D@5!S^7-.olTQvã)VfH5..LWOr}?l̓쾦 q-Ջ:8rEȫbǖ54g |o@s*0ޯddͻf.A`钫%LxID)j?}nW[˯r~g yH8|HdCbay`d(敼4IO'|\'t1ǬG!>x̢2T䃵ş' }U$+R>[5.~Á|`~LHrOa~-k0Y4ico6 ]Vec f@Ԭn e[:.{Bҭ]r[ JWa ?CS"wRUpӺw ȩra_&l1x>0wuGj1Gن}5PYP%F Df e!1('rިU7.W]XBsTSjSC} o<&8EQkK&u9Fcr,Gz~\esGc WUݫ^#7=,`66 }!Xy;eF+AP?Z2Xy1 >mr[ŅW6aX>(ՙ r{nbWLg",R~{?1Vͻ7600QQ ʤG7V1wyRhf4fCis9fӒr^ UF$:;jʥ1?fĨrWd`0q=.}/wdd^y\$9)=}(_{.muW6\TiزǹYj.e6O\fo}ǷΆ!C­&Lk5Ϣɕ4qhWϛP/m&}Q#g&W* wZl5*ο0'@08}.@Xv+0 ,i&)DGTǢS*@81 0q_؀K™l]=0jOTƺ &Zs`#j\ 1wCJ$qBE;8~싆w +K Nnˎϔfkt3l`g&=JTpŔȞB8zp"NVr9<} :AH:s/ ܝxs]{_}qI/Y%b4n-A63vP^3tDvU[yaup-$N*aܦH*_)dŽ26>)ftIAd@%ƾPwWPmi\G~P~\@T. բ yY@PY𖦿'_ EG29ܧs;Ă ,'?خі6=,{ə9u@%[`3HynBwcJ$4^x ͹gza5[5݃;9©e&0 7s ĹyW7Sюm/mHw*6ue|:1r$Vi:)IRĠK.1ueVW Pb;:t mE̜ݬh+LZ3:c{NY5<\3+xh:?=E*UdT}6O3?-LJ$.EZTݩnM ,O^4foS> NO+8BI m,4Y\:ϠrCJmpb5?2\#TWP_wwIȃoS =yhHH\CBq[8ݙ](eg@u3d欜Jb,0ێnw@;gagʝx`} LXٝ^? Eg iT{ǣx߮lbbܮzuFT?& ]oYKAVQ zQt¼5”zвO9 + |ǵXg[|vI`NF|IP"4J e?Fx[Zڷ X`hZO9qE_8W0؞Pͯw]8< ~g+WKқFV\r\a}44pRbG9ztبyL7MR}~H4<^g ?$ cK0E_ɰ3W*7 `o.t#g rේ.U >F/a''q40YoEWLA6ɇ˂ ɡvXN?J!T݆;slv44]wMHl|077Sz<bKXov e8X'sW/nbZ椉$ Y~T#pͤ_>k~GZ/).9ՔdpK~W16_<ʯV}ʘ5oYx?BB1[ͭT0QR_gAVQaf˰dXO~ R{tmA}=}K]IOm͇%q~3Jfji_^$(wZ,v#./FH\VDϮ)NCL&+G9~WŹ1?MEG'b;ݥ`F=,Ͽ[q'71)wjb<{8YUȠ7܋bx!T)B͉ NPj,HZ<;j6'Y.A3Rhy Nc_ ?PUŗ Ol5bl̫3z\ +9 ,<^;zk Ҕr³vy]FOxXrAѢ6'+U{uN xhq`әx[J{ Er|6Avx W6%EJ@y ,eʧrinF囧{^Y=QR$)Q,;|'2:p}*GT15,~pT3-d}٧Bi>g$-A?5c-u4.@w$Cz9IvdBcK-7 ըD<PR u".̾mFvNapQW`H/)^ QOJi|hly|E}cKtK_\/0"Y*C Hb()=@ hڝ4|_ axch.8cAQCǚй7?&bE$n\9zc1L0,@ZCӗ"!P d& ^Ɂp6h7nٖTХO $R6U[|RVܻ_E f œ̴@w3UTdāPiK\=堝'=*N֛>5 o+0V2t󓾙#z\zSrw,5H%CgFm<tݼp2){ETz;S?`ӯz@t]v5|#:8x.=.8[*:>OܼN~Gd3Y_gSB8zN=zקΪvT a(aa`}}0?COpll'X6ɐ!|[k8cȍ}-ìx2\Ҝ[w:q4=dXTLNv[fe% VG`񯅩\ʲNN>bm;^u<:z*JT<&eP*ja54:mb /<7-9FAg`8㵉la_bCws'8߅,rdDDjffAqx} {#46LT!m,0R rÂS᩾c3\%Dh'~b+@8Vn RXB燼MR g-!s94bAܗPZLٝ.ć-{J0';ApL HRbƋ~Hр]&I7$vb޵^Qc9"98 doֹ}Ƙkٟ̚ȃKX}L,_ª-kV1Y(T8y0V T~T[ǯv Vas/'{ӹ [&}ǩӑwݹ=dW'q5󍦟. Q|+8|gczj_OBM|=.%0S8i5"*loԐg,%uD̹KA]P'[:492"| z AnRU)Tk*jbr)tFlC>:YH}%'g#E&}O'@WBNASlĚkàĹ!5taP U+t~c-}A30?A]8߄ a{>]U 1gUC7czi>/~̨ Dދ?xFpF!jrJ12*{{+>pm}Zz>ǃ^5p 6yos}PlLZ-Xc,LLbջOyx`§Qyš%cEcs=[C0!H+&0sJ0`?y$Y)v ` }˱WV0nr5| ]L~N) ^!?ʅ2n/2/;[b)[VXT&)EcKTi23Iy23HcjE2ʋ`U'to|3GYTٮX<6eŁ+n^vX)RRv yEL)af,6wSr"Uc-nXv[8WfN\&0#i#%_V둋`ā9w.`FyE\}鮲QrxƠό* lWH!J4 Q-)cbO]g#h`V?x/s'`Y;_~L<У|u JDžwt;QNN7=Wn~b(>p$I:<_c3En$Z3SaӒHA*B7;g7 GNX2eCè`qzsl.4`KDa;RMl#rz>`oڻ߰8QH@Y(ѕ4 -`` [-~% :SU& Yo7̹-ݔ~mFP~%$ڌ75lCύ,GcS)"_}3i=\oY- ki hNa i7Nw@[( ~_XRpИC\>x:AJT$ͻz4(>31R-#wcXc!gFZZd 9ļ؆oyHnj ιꄩJL&曾l$4M-tm#C&Y~Ĺ3{qAfבel=Wl-Z85C/ K.4cꍈi ˙_VnyX7퓆_AgצPjZ?vV OP@*f<8UiTrS8TOvWiDߜb5}׽A!(uЇI|ژ OG9^ T׶os>A!9sFw"T|8]W(^dl5IGg6{o} ##>זI(䊑c?s'VJ& ='ԳJ:Tyb*eG0-[iKфBLH;;Aģ0/xih4οn Y&̛G{ݟ}3i%eDg_Q XFRTq oű뀵F&۶z<ʎc'xTd60=U?'_9::MCźzh3$^} ͜O葳2/[$^&]NƖWm_Ma\~`q<+_@NܬΈK\ yWWo( N=ox &FB".v:mS,БG^妫AIi(cF45}&OILFTjE'A籆:>;rPyOhNLei>}sb-:_U:-BB=%T&w֕ ٟ" Ŕǿ4BEé x?7Sb{÷2\!SE.6 =mSUN9T}w#TѤPTAﰨmXZLÀ9dK0ĿuMPz-:ΝH!}myEdb:8G(5z,Ҙ@r*ha}E0h]ꑔ_ڛrzwꊶ 4iycd2ϗAӯ3EӸϗ~ @bhzC 5ˣ* hʟZêPIsae fhyn)?s+ؘMQg [nP>ieSR<,O㴮z'AHjT~,rJv=~RPS$?|3JcmZ {{SIenGu4 $i~J;rY.y{EQ U.,ßҞBٟ`1ɠ P?ƩVln~]U_m^$ _1@PI|Y3u^SdG? J(d:!eb=fhdBU۞X˯%T$RVVUk0 TR Cqm2)dJ5\mm][QfAg97A9)hTo}>G;M΄$wC{-*̮z־w+ڱ_gmf $Ü=CRXqDVJSmج`6 XnY+7Q{kV +brٟ$$Z|;ѤŮjBls9X#e_,.$"l?2pȪh*ZF b9ǹ҃> d+Rn~]P.-F “)$"Qz861һz=0f{]/ X}U|7⭦"`g~%YĐL,<9z e@NrsgGϹm1P:o1EK=u_#I Z:2F- k̜>bEWzڑTM`eal_h\s]fjZ'xGOՂJ+ i YϷ{b Orlnjw~)gNFi[_+;G_#eiE[~}^LђY*"65  N"+Ht|a{0KOz==w{0@&5ˏn+7Vu Z.ȲY>) D&}*! ?'jlnC}kg-LY~_zgmB!SF>fZYIÿp-d!r#̄%m1VhsM7<UnRevb_cX9ý6$ \Y@*ZUgDZe.~YΕ̳ Kd28|Wv(e!C C g q[ǎ%3M܆/Ya^uC~nһ[frnGw B#H0O,(x/ɡuP; qBi9=x$8ĝ{ZNk3ia$]gz)DB&tn_;㯨0S?HoQbn@еsv8 (gG $ (1Q;p9Gx5`zylm lû}^0[-81|Cp"ҽ7H(lt16P%!Oš]pS_6>⓽szkP0Űn*PZMy" YчAI"ؾ[ y[㿁R(plƧv)t'Lޤ3Xd}TȰ95 E=O+dqie7$jz<#RG;IuJh^ܪt̖k]AYql>\uKU+ԝdn ֥a/swk oK\W6T2CQ~S^a~1D|+7%we ~]n܂j*6?0eep?n讘't RX*n,> ((c-]db4oAsaP%1 5=sщP!X%&UC)yr *E+!q 3fż<~ڮqjWۺ;䤺b~ a*`$|Kxy ;]ah2LoOAzc퐣S8|NĪ{ g?o)[_>[rEԺ@C{6C+P,XdN":pf+tB24&|ʂ\h0p~\ oEAmGp *+@yeU;6R⚔D(uSN L#ާY [dt wCO$PG%|/ꡚIF崊 .$s];MU.H$ $ zm[ϑNjt_x]H׷#i;HlI2̍f";$ nyNd٠Rdu0c#I71,SEqd j<kI-Ѽ?(!ζ-lLޥK b A2ϰ Bق+ `bBfS$?d.hA=.*3r%J:a˹rV d Ih.Qϖ8'=ǩ1eK{þB4N"ƄC)ʿ\E}K0kNT-U=xT]8|~rNqcBEH-Vd,\ QoZ(a e۽<9u;<.7" raHq&5rvn' KxTHt2z*Q<_rd?15BR&ђ&i4nCh%YumkuF< *oN=MnOB9v!SR[1yw9o!Qn7!,c(XH1}B{+ 8).?9l?QۓTy]g2V/BOKVT æ9@\ހ?[_Q|J fYvzQ)Lv]uF0k;+L.t0*]ʗ1U],}sޑYW#@\r< dt6[j:5T^q_[hSϻrz.zhL` FtJ55UL!@$rd6|u',}Q`u *HQsbѱ:wAۛvPz޸ *(}BuVR&(oW|13!*b y-8U%r՘ ~r> c]ڞ@Gu'm~.8U\j~Ò{[Җ &@sp8j'=߻~P ;OB-7= ok.C<?P.asX~GL}7׏Y{m BL&BWVh~skAO6C{BFRU4FN3dـge/qƮLC+g_@ '/V^Đo,R$7\va\뿓'#\6A^g( X*8bCP,3EjrZ%8)!j}ljc&NPM=. .X*ە={1Ckz((W+R[ `G'G1CJGyhF=C>vȲ rR6 Ŝ꼼ۍPT'ySW8YCr4bV6l rNHŲC=kmoHSs`:>Bm9Y(Iye mI]'1}$ƍ߲Vvc&YX>TxrEjVV5 j/ܽ!4xLktY\l_^@=N01Oiw/-b哑g^abȪy%-B@ƃp,ն#_}j ~-SAG4PiZ G^IKK$u_td 8JTt1j_H*m/F>byfK)]bL-*$*9i[L!K۔+de.%M6=-R&~XH[L 最"cerHl0(HW]VaOBOLqPe셥V_#ɗaknѡ\랊o?EǤ],(Sy0 dtcؠ@?R| 'Q2޾xYxԓCuhOM-@+ƦGd?=/(v [C8N)o54j,A^"J&ueOxb{gGV,YXJޅ}۰Dh@ *,믡T"$ R^vky$u`ylT(s[5Օ)BT}%/Ckqz硍bT]9~+ms8,Hϒ ё3緀8}|- L E 26@ ~\{ا-0u'2x|shb- [ϟkۄbZHcGҢ? 9N`%KY)(:PWZ/91l%ѥ]D͢@4a̦+&MCҷ~~VR9sɺ.B8dj@UĐUyH_?39:6 d k,zH+WN,a&1=N*WӍ$&A0 GVsAd =7 sXCelBШ#_E/o[5gb-Ӵ6"tr;`+O.MR)<[+(Kvw} \ z C)L O"I ̄Z*3ax?"pm8)6>szɒ6{ϼ+>

yO v1l9Qj=u՞/Қod!*C 2&_ !`x 1K0?ل5NPf_[l hr(Vک~p)u\dVʢOPy"-yhQd w3SbNrqq5Z5 7O lYgӭ1Aj֏btS ~lc}ySFZa徶2{,;2zϬe")FȠ11<|]X/XUw2WBӍ_[ؔFwv/_i|m1o ' b {HKX+)+]h?,1tHPy`!2<8RM[_KT) _]Gћ\ *7-O! Yǫ8?j> HGxs) Jw Xt1B`A]zXTώd`@op"H<8^#%<_*DtϺXDqfdϗn җwyJʱRZN8H([!ߴ=06Cԃ-1> bo: ^ 엤fXcA6X"CY|1l TF]U(5yLAI7OC]Ʊԧ4oT;8 _}[$ W※1P Wn(RH H bJy`:;D+4^0Xy &yC+epY.dh "W&zBSEtuy a9p PƷ@ (Eб/~ۍ.})} N Pu$xDͤ]XUɗB6sEݏ|XkeMϛ<'TYVY o?O>< ɣQX+j%}Su%7pKџPy?ŠYkoP'ca1ě RtFJsd$,Qc=͡{ +6,UQbϜ.R#l] p_eևFx:{i,bPT=ʎLpIlG_Chqo ˞8_>'~ L@I@+hY1 \{A5ANT}>ny&=p"瘰'D$O{)6ag&Fv=qm~r0#+z;W伖2hgYnQtBgiY? D$RcE셳eٷH k'z!3%*ϝ隀̗lZj9]i'Igϋ$ .j *jUPֺV$<ɥ zC|nMLM8ɹ6 G`SjKHl;lVmvW*N#iPvʲ}mV$;᩾5ջ{vj3OӥA`eJ??5UپGBb{[+!{O;l$Z1ʚU~r:њjb/Sjf9GAɵtֻ[cF}?5(ɦ%:>7E@{-!5oYshf [Ǜ.Aff«d׸A0r e5cg"u'\VÊخ [=}#PݗQʈ/[q"f|7~\Iӽ4X0<0 MWNgc\|'Er2dкMl;?hsCIhђ Y~q}4wul]0DU<{1VV$D'רyձ._nveٵ-[gOog_1mtC |$E`)$]\-be\S0Yȫ~*| j:74ao` VVҾl3Z'cw |75nxӀ^;h`C] ̶!:!@w[S۽;ՂA|"dcd?f;#.i$88Ed 1=\?Ga.+u㧐SQȷQ5/mU/A@otH(\ZHFBPM¾L qRՋ|tfsOh@ϡxn44 ecrf-EN,lNʫ;iwc)AuTl#V:#?5`Q黗>aKOym NL/_7O**ӱF!OJwh7R`n&RY ,sdH*+?aumm_K8 :⤐i:Vnh˃m 6ˆaAoByĞy7pjB) 4\Џ_)xDVf1읥PY7mqW >C5 k5L!*=/x?x4D0qzT[X7ݳ3 Ί.ȥ65}Hײݣӝ0G*+,/LNOlBt!ˏ?9ƓԞAs%4iA1#pؼҝelb 9{<2~17-zz8@݅YqreHl}ilhV1C,ZFe>̓:nK î7&bUѿpݬӰ"-j Eg;?8aW;i[ r졼`T]&?cz_Pc@e7)|kƼՆgOohKL~1ToM/$Sʹ_܅J0LTWHlv( ma[G ]K-LEl,S!qj>06e}{V~Z[ NDb@cUԊhI['(w> .AH숋{Ԓش jFkS*ln9 Hw< ɒEϺp/1 _ t;_L$1ȝ{㱼Y eS0`m Pb ׀|}'1BC L_%DrA/$W!> ^ZSՂN@IK#( h@)eYo1Ҝ طTpV$ߐX|jg8qVaa4VO ag{jغI}ݫ3{pKdX>l~:C 'X|S]W5+2KW~a;k}ǎcV.C+8,OqpӪ`'ϱE#GW?p ☮ݖؙOx2v-2h)`]챥f zk[ck]c:@F>ةxKZuK{7ϟŽs7kKNG$-,`{I=@.KVS P(-7f:U*vٓE2Wr p:`"-Ϙ|*0ڈpM`-:7X*?-S \zqؾoKI6HXG49PAk/doݕ>,PQu\J%iͬ`쫇w9$=Ee6׿wr4t$F%V9c{Fx4/:Jr ;!ZK|7ji@3+F<‡LǷXd07J !rZH;7{iN/L4j f2& 7Vdx7=,c/@I;y{}yo. ]k[(Oԃқ2 e'W/6ܖK|Vgf8`Y'?Dİ7{Uys ?Mv#ϳsK`Iꠊ=o_u; Io&2`}vPkɽin<| /oA%BPZD(y4O# gK  `SsN =|nBl_%Aԯ:|{d}jޫd L`Ezl4#Vub0$ի~3PtWu):hU$Eq;FA-r$3}?]ֻٺwػ!eO H?rqȸКOI^8jĉTwyqF#0u:={ ^߲7;طU2Ei%;V: {tV3e-Gy/$حO`3ɏz!WPP+2-8t\w'9 6?>;#0@bm3/||W]_ddn>{`!f{O0_Q8(gT*olYWC"GbeCuۘQ--M\|z tXI4d#u/(VJ4ly $mrGNʣ'tEm 2F^·RBYEFlW'?Lj*0L(:u?1 #WxwSbU'vtŷj9P`~]s }iy-_=\ @t,Bp\~[kIP)+ѧ VJ6gs#I7 ۟mX; {)m@WDj[FabKH{ghE9˻ud T˼ϧf9qbHBv. ϑCnn?k؝lsWG1Ɂ >Y>:+h wMZ 9)`i;ۚF5&vĒB!ZGi߸ȊǰpS> ,{G+Jכd0[ ^}i _Ƀݦ<0xc92#w9-se15̓DYOvt{p:|6]c!wXd]$^DZZ߷7yڿ;_.Y^//ê \^;wM G#A[sA/XK_ 9 n6;gCJ3WyY@Fy(WL񌔄bJuc'WqC_pՈ k;7aۇe{m.aͮ[BuX^ѱ>A2Þ'cNua(Nl^^Gۜ 1 O?}8 DQb"~Fu\~_)&5݇^ }M_R~gN[Ė {^pI7A&w c`6G0J˒+6*YJ8`U%85$hiý}.7:DBJ&Ԏ` b4߄c|{.ʯ'H5;7;Xkb6i&MW`W@M2:wfbCIn\?>{z%~z /TvQA}A*U. 8T{EYC(ߚhh.d%D{^ 3w CC0D8ԱTilv㲁4_BS=N#gѫ / i]-u!>J;= $ξ| B"(TQH8S`8޺l׋\NN ֣G&-# Mz@%O^ {oZEwqKL`DőI9Uv& *^ډoz_;+̵ -}"&?;.xQ~OQ%K bzr.;kCg|r ~ s8u(%H&6!~ʵPR{qg@+* *aNZYS+T/-khaz99e T36 u XI=.h,޲R; /nja?+W٢ܥrNk6_??~ݾ5 ;gS %8T%zʹ8b r nje^b.0LAkGP{9Ȯ ,qJh>Ct DU[G, [r?]٧yǞBC=O;{w8Lx T~eGZV].r*?{QNZgMSyP)VreniNYƑDSΟX%q0O#^L} z 6(g-~f?7A*?C^NtgR60e/R/ :t߸Lj{hHAE]hH2yO>Ml. 4pxCB"WsǠ&$}03]ej)"bLߚW3Hy:@ ?.Qvcx8 YZ]XO|zUZ.5r2+s"{@M"P)QJMw 8Bpʠൺ#L?˜G ŧ'&Ե+CNm{Иt,T4뜏q{ausq3Uu k_._xU!h޷zZky T/+w\v2'NZCaXd8yʺK,MFĆ31Bt ˼U7r;SҕVvb{x chc;b) chԺi( nץCš^=(z# Yho`Gocr}P0Th* gjN,wR~:H?n,TxbQ;'vH-{ te÷=Bej[!ȷg$J=%cG([{t j:-ئR+Υf@ãW fR+bش!k~َ^&{k[?715\*>j+gtׂMa _;'QIv1gP<49T^1Ju.ݬZ;nhvSX+Qvg&Aًϳt!fsJ>bf_XT SJ Hik@KP7u/yn~|Q nPmb`/X7ͧ`Z*"¯+q<-x*Mw`YAe-x)=z~%pIhu`ɣ:'! Ϡ{UPf(1 YZn 0۹QR|4: p ; r%"vN{./5 .kđN<fJVe'g,T}SfrP/g^,FN @/x-UiQ?m-\c={j"j蔐2$v.61bq5_\~˟ұo39nm.AL7;]Pjxacr@eN{QxtJ%\|v TE39Yݧ0 W4m FQ+֜?[6N~_"-%mh*)`HV4 >IK:ps?h iuØ;~: \~ *;@f8ofCրY 4svվ߂sa  i;7%~נDp%c VZ! XP}/{򖳌 tfϮI)R6+t9~r~cwQb[PZyй˻{:dJ25`etEE.(Bˣr-艺.5m?O!C<-*{;>9 f>\xudƅrnV | u׫/0%b*t~_Q9$F3FYXzrb70DxAcjZj\ DQ/{cދMܬK46TQúEGx[l9co$䇰g4xqa"[T6pM6ƒ˻-CkkK_馃"ctb}l*$ ǒ«ԏnb7݃;K /ұ;c1S = oyaE]EĄ_+ȼaoo9{q[ XG*r vC-@]p%<&:f 8]lv̎ѫ ?kq4)U8o'` DV`Q dĤ~Jo{%i|` G3ؔ[Ac5S)pYhϫdCš'1Nrz[_7w~JBQIa6ieN >BUl{`Tnd<mKT~Ce A P;zejӠArd`%!NӼͪʵNZ+^ʇ:TCϠ(9h| m3VWtCQn04z7wF%4sy ' q׆cSGl۷iѦU9lz$r;re 0<J+Eו]<5GW]yt~$vVǷ EwoD5b<̖2=Nͯ@ds+gz* kQ0p%"~HF9Q@J=,nxW+[nİ`HHKB v5K*k~ÄKcQװGd6=TSZb;\ϻMDzIy9{/4{sV$W&`뭞X-r)UF0kZ o66J\TCžv/+XPh1qF/l|X3%`Y/{Sst#!c٬feI[uVRPfh7\/r݁,4|uyzw,@i{y#H1=jP*<.!FiYP kIUܞo?-e74 B+Og\:d'oG ٧M4}` R2)zeBa4(> n[>On)^V PJkmp}́#8R~kkM\,1sG-qP^E,Vym>7xʰe&1Yk0D6}9k B1LZ:p贸9u\^UAƋq{Pr'[}l>m iCFAAM$MgmOlj/LN{z2D͙o 8T9w+QƂ$-<ۑݑ *>|G^ykᇟs\"&> - r=UH\**R| VT7ڱ¥ wkh[iq`!ʋz@P3[F*CY~Cs̻oc,K[iknW+S@sw[r IT J;dPONh@"]d׊ bN%~CrB&aFШ> k>Ոߔט n׉\ZzA(9.l|GJIl;"Ҹ> ɬυi*Ct݃__^RNN m75>D@YoDW}zo"t!&=u#n\ѯtv*J 5Òu'oH-zOZ+n}Z^CO h:ഝu ԡC PGl | bbZW&_EZ?*L0e;2 \JREC 0+1ߓ,7xSёW7hB-ih ӝv:<${A<Խͥ im}~QAX. \2F<{XÄb{W@9QGIx@XRjG`)pd(>2oog QE]!(錔|o8%}M=gFu_ b/%+)uao(*Y⼑s &<{4ԮXPH{ $vao6֛߫nP ]/JmwCƯ2gC"QqeNl22?E>I̝޾EBVF{RیgQ؏~OA@oЪB5ؤd w/ 6gPR9}m"2ۼ^li!SuXqeI~5?hm#_ &.K)ϚW2-A2EݑFG?-%پu7KTִeȲ%~!gB^ o uY/*cԥDl8ClŢ iѤ),uٸfsƐvjC;ݓ;vSCyfA8]Axa TEol!g8޾+I$Fjs٬Byz`xuFW/GIa<ےwI[/(z3M1J1c-bF=s{w. ʚ߰ 'Ovz)wC'3v@cffк|IoRmAPwjݧ=5q"xIW($a4m3E9H*\ևJ9'@O PQJFL j?`VBoRAi7h*_d! [C?=v^A5ܞsD~)aƦ8٥/^ i3%%'ِdS;EZF`U8[#:?b&ﷁKR[Ʊj+;uO9:A;c *}sQl)* S&BQ,췫O߈|Ci&6lqHB.,W?UWv t^ OV I>l+a۹ݻT*2'lO~|TPYDz?ߑ+ECԢw|[?qΚf?Mj Jǫf!clpp38"#_ΐyp50枢Wi47"9|64a"wO < һv))sb!90pH[|mB⺱z]̎NLw҃~S߁saoF}46m|2E/z/][EbvS7vVjI˘Ӿb":+#.lWv^c[XxҰyvBi4y+JK33ꌅ?N/j%>[ɷ L ƦJ1$W,[?M}9*\VbXgK;e?ajeyՎ n/Sӛ3 JMV-ʨxzDFSᬐ-Su,vXxoi\(Pن{ He0';4 ; @gsLp5C dv.+ujjs!~$׃Q%/&'ȺjHμs>{L ٠TF > e/OBca(WXy>R,ɲʄ (g < =9PuQxl7d53٪,j),!ʒ_&B%'iUD8ԉT І# ТI eԗ`ɂ~ސW* ADQւC?|n#+X)H鳢(VZĈRPbv7)ZnmƱ0ѐ6'*/̅7\>NIiTExR J<: ʞvNMvY#:!0:蔒 &Gg\a' vIbmY4_h'91n)5 ?~ceRL:P7yGdFDZ h|-Z,t-#;+W8V,vtx0bTٵجp ?S+0T)!Gb+ L8*{<%_D}\7?|׊w*աvfԭPW0^o 7݄2biP&](. >noЙo?*2z)vn8d }烋 PpMHS}TX[|\!C&쏛e ,VmSĖ)l7\g,p=BۗkC麗.Ш+%АaZWc}\q|_)Da} ba:w0wXGb֪Pf,TǛ WyND*VPtϣ}\g1 Bmq0b֯Xߪy}(}Z:,{4'cV`_$p_؊fg]Hr.`2lU6Nw?PaF:l\\*.ӿO~I9KrN֡XFfǫPۜkbp<Ԍjh퇈,5jL}5\Ď4jBπii56*@ڞ k90%6X4Ye7FVBјeVƘwdWy@N,l8_tbPh)w/{?QL7x*yB$ほD|d_LylTÚclb>`ןp,쓴,m҉ufUιa hHN2ֱꞿhx au_ /$\31xWźfEΐq)6\Q{뾨bH̰^ὓR<)n A#y:nk %W͜\1;v^1Tױ7̤cd|m+Q,]䫆QMFxs%n%Fs5lX3)Կd{Qu/)&=H8wI,M5qk\EAoY *FBq.,˸LtZ2z=QwE కU$qh @qKuny'{?"|h"CPa}34$&O~Z3-1#J(o =^DvR(l~YeJC'e {wHo>l6yhˈjK#fߑ#҃ Z.\Wq2/-@h~}jBۊ,0b,nv X4H2xgm'n3ːcq)%C^9k9P^?9 z W{P@q&NͰ?-y֡|0#,+{ĴiԽoT2Or>(]d+]j{k Oto߂S\&P%=FxE}B__9̩~Ia6ynh:4&0kBcEٯ0WAQ@ܗh}:yhsձJ ? q A3K@`A/THb1ςt3aJ5e|+/(p>n;^ߐmzf1/0S. P͆!ݥ)Q#Y j'{GbnnS$=>0+Y=._94gJBfu>ەs'±zN_~R?z-*w]|a_XC0kD:[Rc9Q̾zaDߵ&b7\ֻ4&0zYNM fΕb:ÛH?v&yMn;_{ C*,&,CQO yU[#"˯9c< "zIICC։05V/ r*{Nc坢vsZH!,(yXu,1Q¶2XqBͯПyP: Zl _#YPkw: ݻ׌F7S])~5jˏ%v_Si|C7tZ:H`˛Ґ&SJ$驶BԛvG-C(M »e/yZ@u{̣xJc3JF h>G^$ߤ,|7EE}-(*}rt3/T4P~AZKF0<|&+Ԟ([RCw.')ȐO $bWwߛ klW}QD\0`s$sː%cV &B E$ }u,4t2])U7P;ƠssַTi| ٴM3?9!iw]ye)Yb#nP~:xezC^LJwBaԵ P~Q-@uVqA(Hrq^ 'RGcچoY9HW $Nr WJsE|aHO]&xyyL2Z\oLg{lwMPoW 4_d o5b0JkXw`m;sަW~'{2YJ:[`-cYuKƁLwLs2v>٬E^%.&@UE?  h I!M7[.7Z*/hPʙJ MO:,]Ǫ`]NBl)4W ^[ZC<IokLeO|oӏ*lc|awqρ0o5 Ct_4aԔtY ;c Cw9r¬ԤDP *WP ws`Awck4݇ eX,lF!t-jGX9e'qhvš|PA|4VKcϱEakk/I^h'r@}Ȫ` CYD8ba D| Kt =KJ,cB7{$<wԯұS0;/;)7pQaulK15}̔l#B=]2a`+OתkzNAiX|Nc9`9knoag1}1ZyhՉUc%O쀐i)Sabqf,T|i Ƨ텁ަ栌632Y_3ZBVȠAV3 ?[Ú@CM_*"bcvibu;\5p -)T5/@##'Ͷ+o~4mytr̨)qP+}܂JbNOJUHy:z,@UzF;08}Ra8ݚN÷(:~<8 )̂/ldϵG2Ex $|| bgOA-z^=s 螖x%!?T+c,t .;kC3Y~PHizAOL<+wa9Pdv9Y# iB RCyF"+Z?7KOC[kAc<^55Q*RY"[.,9 E搢jq'Z`5àvmkPs1wR 5tCo}$A?sheM(W'!.QC&=_ u2X"@' -'̙vNB4E]9yS uT>XK uGcC$ҶW/*w`E;y\ܔlsV^)?+NTԪߖGM> uSv O"{GN儼|z3w;v@r ,/r?N_sG-mסcp ~yBV|aϊ.[P櫢־vT$T"v1sV8+.<_Lߣ}?/ބpI8[m(ɬz )GY󒸳Nme$a#/;M8C"ern68iӱ$** cB2ҔM>EsJ[fhiQ+RÚwf:DKl)TUJY}cqC{w&ntLFӪMսձ&fW rjƹT8?u-'ϾZo,s&b|RNb#84ߒzʫ9ܸ_ [b*&5UGG =(To*E/-EğcB#'^i HY6>U ٕC/5bɢq@AbV=CtYrƺks0涶><@U%!+>#Tg9jgL&B1cS&>8CA[igeoN(W}}r=#iNapgAK <;Nb>W-D,cc= }=)>H((u=;zwYNl`05vJuӁ,t0TR}}^g@Cwv|/9?i:qMi|n#{ UO^,~=ށm!)wf~'&0 l42$Ox~M ւ EP$2xvކ<\g9"q_K* K(_4/G( *p9\)F- iM4%wpwp$YH w> :EOXe{ cח4ҧjLv`s&'"Bmj>rrZ0e%ov)ӎlNsH&uz@䗓gr,PKQ{4cU|Ub2U-`+ $;ozZ[qB٫XZ*팄7\x!^#h*$F9եo~-lKC; -ugrCV/cžK, +,@odId# = 9W[FCf!H஼렖 ˋ 򚡒^(yZD<1խW8pwqC3ÖicT#)E6уS+ǔ!*֮lg'i_yJ96g}knյ@W},^tR@/'ߣ =KF]8ĥ;kӉ78{B"Jz+eq̀gֵ,CX;q~m6ʯb__\Md WX|)-7BqmAM ڥ 4bEcX,s;=<,P`0g5߯yBls6 qf _ ssCuAfY\c(f1Wgz5&I2U3@gO $\1}^F _Ϝ7 _oqNzGjygb{12V0-E.tŘ( 22HCN."l^3Y~{O@Y5P-,F7C5jAE_aϤ4x1IH IqڄOhߟcAjZ?;3om`ο~-X'ʻ=wc=eՃr,GEfx d;<ɠM 03ArS.!ƐQv;dƋ'E"`bbYī;(}#5cߩX"orMGJ{ra퍒e_T!;go-}oqYx+2 <[]hL,.SLwŎod9Iý~|M%Y:_dKxKe2;cT>4E5|X$3]n&+ؿrBy,|:F˼sLn=ՠ$u $ >_ƴR㓜y^?(W | )^, ϔ!n tLη%۹Y|%+~yc fkW1bS)k5P'Hc "mL{,Tsz"&XR-cA(D&ŏIx E;/rIBOO_oC-ہ< FɻAs\qK1(#Qϐ'g l«5FkXaĹw+7vs &n*cU}Mj܆[`Cˍ}l1.) sd9E#[qtU?_S%_ԝ ^zzҚw1eNrż~clLZE7X~/63 A̩\d{RC VJvjKbNua,pm6r:(٭Mo#bE1*RhepeeԞK4U3o,J8g70yxQH{j?e@yhpJLǬ2;j#XT^.L .;p1ouX]DnqFeR8ѪO}E|s8hd17S'-f5cH+'<ɻf=8cm&ւ^T8Vk$ Džaw;z6 ۧ9.f{h#, z7׎qo>^ މRvSCU!z,ʣTȇOZ p9ohǹff}r UR)HNz,%[iҰٷiSeG?t5xWg/pe8xm`T'MY[W>w׿~(\y)5F_;;y;>< j_#==,~-u4iX{3"_8Ndܩ_R|sXA>$(2=j{MAnX0~={8X'Gw Υ[u z L-(U'؋]l=~ 6}-!{Ҟ-1nOT<+NbtK8X) { [ 8gcm| w?R'Ԣm8._^~R?8H U|8;ԥq:nCdQFlc$ </egpdDR{p*yo2)ALbuЙM\^XV.,:!,"o_Ĵ !fЩ1Ӥm;vʒ^s +_IfS|):-1HR COaV` #M9-VHG4qlN8-D.)yxh.Z'/W,L`zbuЌlgjCF8ZG'V2I}9=#ZtJ]Ҁw=!W%;} w[蕉0Áw:ctQSnXgk̦%a 9ʊ) ̩ObOX>lܹg+, ֋`Ԟv_d;|VǘiE*zb o۝2:MO"Y3߭}Tv3SHx?ڱ h"IS2?~x>H㴍_S{0$"]V%gƟw(M`wBh,؜bL(ƮAMZ/A8xß<$n(+ gחup&LV1P1O!CmqiLK]I^;mhZNMX [v®.‰XX56yEú.z/`Y߯1j%8a`53Uѵ۬J; efյO5k? PBX!meRfQ_ş|ۭZJl=b7 $Hf_@]kv iWw$iMl1|⳼dSX2Ar "`苛F1\[خ\M{NM8mlR擥$"DkE"`Dsx|u]>eӟo*UX;Ũo~t:biq,Ԑg=&XSmAFK{#?N!Wm=\ĺJ #&qؕzdV;}0V<qx}kyv BcCjMW5C4j|i^aºͺ0'<qbf},r(dW5yE) $r|'8bݣ˥8](p'?__=o0$enM By ;Ƞ!}sPcvTh-PY\["H]:X hw~smόm;O&J\svhAq۱a;˄ Td92,N4J P:JFs%&cZHIRMV IjSP[rLSh%Ul! y/! y;,{$%ّ:u$8>(±TK(wch 0P~/iekhw%rR-HXO9` d !Y υ_NBdʐOQ1?26j0tFGfvzC`O;'U) e |>0p}gM1=,LH2D~`v>."NGH5Cs'C/^j(bSu}0==N(5m f1po=69#js?98|H>?rOգcKd!x ĕ?;5]zCKЭRd~7Aoq.o }=6LiJϭP'8+&q+> 5#ҟ0$ָ~74N2;6+F_ƇLX!xG)6/RR8?Z]ALCv:{ѫ[D& j{%,l]1c3JGbUyzhj^b o;Kt:=ؖi1MH ;fp\;㷾=Fů7#ʳp+K~};NIzCZC׹0%2(_;r5., b,BvN>Q",O=B [ ÷y,~K̩a~)_\}<$4FupKc#@Nfe|[҇^2yEEX[>r(ޓ|c1IL4z[E0*wXtr>N^IeucC ѹ(ǹF'Cm}8ۗ'T!%].;Z}4l+vʫW?/cYea~&i.d"nE#е Y ܻ>$(qA|U[ ?NYF^6b~oMus ?+t_A(b =J5׸Gz`d5*%xz2B TWʙnf̍X*6,>g'{LYi?9~xϭ貃®@3qxYW6wun?h ;a 㓹qXfkspJiggܚ1lgkVh WP^iu Oobc |4GϨ 組mZ!&#N;z Eه+/B|l2N+V׉+3{pBkw?bէNJBsqJ۲ڑM8aKd@ #IhK5iF _Rhrl+t@&Fg#:Y; N7'E{yK9h}!蹫')C\>9{gɮ3QtЈ?تpEk'g+pXoCT"=_t.e*mG{pT'W,v߿0dc“.?I»51wy s_ aJ؊,6=|D^% M]TCoM꾯Ш T0ڨP%L$.FyY@UaPwn \OD;o5%ch*CrPjDbcq,&sq&hDt6}ior `϶~܍c &Yix#;z<͒NE8:ҚO#÷᭿R,NN5slaZŻaa`k2i&]`Jrj$%Ʋ#:+ mN%4Hmt3{n`3ї Yz>r"~>jXlTxE P[ #:?wN r2~xga7QUbn>U;2  g ,;TkoScis@}XEG&k+-_V+oǣeCOPXtyv/3C`&wvxmywnJ=9)7o%G=cȧfL`;ıCc,9tVt%/=KB2h4vK]{X C,젦[,ѩ<i=,h尉XeA"0[fӟAڟJ&?R{ BijWؼD#:XW^WL Q}<-VwF@cEКd]Հ.O,b%rtW*aP3ig $wcͬRA 447xNGCmY9{(nz] kڿ/֞?la'֗?rHV8r_2}gx0Nws@`o?"9_o,ҽCMr엱E/*Dڄc5gʎceol4oXև^c^xp4_VxB[)L}Q;?:2*LHxBpmOtC4X'}eHeva@׭}^8Ac UތRPJ#/k35l?.F@2-"o3EߝaH +\epDDB >[o|'pwvnZjDp cpI/JN}Ffd[8PhC;D_3)a. 9G9 (>Hg1hq )R.9P+}w9uL?DzHɋ5I)H!2EO6RiuٔQ#e|ۚCs"f XzF{wL_3ݸ7z1M'Fm1,Jl=)g{B*Ljg &t~)MO)bw7+/Xxg:{ u*5#qp}=÷OE#?2]OxƁ+KfMnSL1\w8P$ҐJBJPB"PB#;{Y$??~}~O|9zcZN_%Po7ŖОEQU#ȌN:/aAo5$C!5C=,r}ʂ/]%ZƼ3.9{e\Jqp0BbLS 0-x?̆| `YFuĔP","#@_;,Pѷyu,K-7^o» maO<¿mn͞eVM(Gb:O "Sq9:9^ ;HT/ Jp^x78<[ѣp,vTzutdbp(<ݍ JłذV*p~/uYn5.|7L5Pa+8 GpԭyUUv'{yK䵿+ma* Z!/TE*'@*H?ދǡgLH[N}HF]G Ib ڦ 'WM6USo<:mqZ3MGk]Nl#RFIFkFI{ +އdrHY5/ 5nXKqD̽0' S/>uvL/0(ͬ@D f {8:޼SIf@S_WCv;t+$G6J!x PG$9?6J$̚7|Y,[PtFm^Nּ24j_:]Q:ױ?^;V#?.ҩ\K+͡Fe4lL#Y/oݜ. u $]҃OS T}ȣlG~򚂪6χ4.0|;)hdpO`?qmޅU&EGj{+ y̓@&(Y*Dzu>sA-}W2c {$ChSi}m)4=䆊vD/ɮ63.-~W!;͋H)&Սi)azV:]:73BD] }Jͯ(GU~t]DnsɱIIVp%Iil0_V^'o܃N&tX&,K_r RfoATsD8o?MAB6]:E!tO/Cv('HoR_V5efZ6H].nM1Bk1/YwߑͳcK$q$*e93 Hn +7Erxl"IKoD¼ܘV~!Q9f>I51/Tza _خviQ LxGc.۱DZz7^ώ~,&b;WJXHcVU3gVD>>P%fMy}Wx/}78.B_ÓYdCRՂeJMO0yq7F^SjA3QP-Z}Jo6|Oao/)LaٛK8|(|65*lcM PEˑz_,KTv .,H6yҞ0T(_h2YƠJ*k5z#EBoqvw?~Br C$wQ󧤤g{::| +W覹6P>T…/Ok2QFa8u[16Mh,bbBӃh lSJꂿ]Qױ&{&()4 jjZC3o3]ek;|0i3d4rM}v2dbtf._%!!_^Է|;sDtB*mŮ-wϡ"Oiք:׻cOxb.55a]HPK1İi'WWip6TR4&Z0%p0_[I\5]ѐJ7}ƓThZZW Ɗɷe;Mgvќ^&-f+f7|~*w˜HkUTE3LnPvQH8s0`+ө|}@aSk1z=45j_FjuV?CH4ck$^8l 3jzos97at^ecƣEc"3!} >L~NicJDbc.ĻS4ݱ.pA>@=̯x/ϡt=^((Ջ Jz;f^rׇ^&$[bvh.93WHw?6E< YG711ؑXv[-k>:roio0FƓcwOSy+uJZ¦kȴc}RRJYAMkb^̫eI{fUk'p4w "Q& :<>'=ӭ6@NlpgX-$TSbC<=U $DA+7؍`U j7&1/ N h!E'ؗ$\c$UGG~{Y>}+ꥻRfKlJ_oym8S,m=N' .ؑ)MQ.g-.wvXڋ3Ώ ~>kp:Q)_uڱ[$+!eNI ]-yAMnljt;>_9_2칯vw`iM[zОs!opam 4Kǰm3`=+KwOU^\R| J%4-6'p҉*1kDam鱒2Б~QaaF ^]eG4g5 7ǡwnn~ \;Mg?p˄DEw{w:[RB˙1"DCFet2$(^7|B ac) vrן@R>5oG`$7Glv{}!>#pAOJOtT 8## 9׻4JдD}Z4cvsi.kGE7u6{ 4q|I;7ӎx5_zEcg4√vy C2y`ipI_+(ּ>u>[P~#0ƒ3q/nz>^z]imq<;LpZ~:)Ycz W ι&-Ih4U-ۺ`_|+ .C)C~hi~k?' ɢokAz+{u\ߺO,/ =55C Pqr@uK7mhCTDP0XcZ}v=C ;mI=WT=Q= U_Jݩ03hw >}-+J!#Os%{2ZR¾ABx4۫8qnḍp$ ,{? |D!n`tb)uDWg:O\0R)TL qFODL0atNb'QwNԗ!TZyA6I zOY>aG?ZUGIZa"ֺ{_̢ `TD&u(@ϊ*f^yyn;[@=m'@K]|ϴVԽ9 ěs]{m'Zg3E03A&UN8CY'sbprڋ,+|>L KQ5)eV5C34X2rq-v0L՞xxh7p@zCV|)CK<{ı>H[zvKMFǿbwGɳ,.)D $xSF)H_@MQy'~;<X쎩9j0mvnzw>cZLomE0\tv, #v[cļsPwO2/7 Ci K74d$-q9J7o9h2.D7;QHQY%+؃צ5Cy1zT2Ԭo*՚QŨ3~!4Pg,xEzE~k r6Z{CuxvF'ؽ1'W^C~]F3|ƐMUS =^/B^<нee{ w[iIKA/Yxτt1/mMUʜh譎|[Z/׾ ƅ$_Q NJcytOf$m>?(fDZ7xR˃ZkT∓G3F\xDM\`, *(OaϷi}8D_m-˯qWt{:Kށ/˒_?B7|/ł!G+Ǻ˞8u܁f_Ķ?nAeBS2V\{)l~㻇b.=WX{ }Ufv8s9ɛ \r1[NޏN[k4סa8V^'2KgLk$"u=U} 7Hb\~|*.=81ԆdSu/iVCf^Og{ȇ^n,e;.;sr>H`hloϵʺw?3;WnK3C>۔v!{)3iXgA:O*h$χ(1T@'P~үQaA 0jw`o9l2̺ZT/?t-Y0Dœ:в9i _ӵ%Mv/{!yN}dLddl>vJ{nP]=8eOHh p6AW^-;8%"óBXW(t\D,j"in]/3~5gb :V$r*{fߦubA[kL4)pntV yKoEb)GY]19 wz/25=uZOrH0zA9=fy\3ZHՙCIUu+D qjS Wso>$׌Y;̢9oo`ОXK8`z+C% ?s= ͳy@@w-F]DμbPtNquqbp%N%[roNҝS:`tCKjDdfC{6e5_e$3 "ɒE5fO^o>1Fƶu, 6v3t s'4aq:][TV]!oZYH6(֗nAiKxWz>#R^z>rX&B`O]Kcd.78 "b!oMݿ tYS ^R*(0";ZewP}ׂ^ L#gڡ [5ś̶:fƒ_c e22iB+oa_k(3}'Jh8j8 a]y'x`txx/ 2]iA9J>1u(TiN{hv1؞,h{pq} C3ToAeZs/TƢ-:_/: <$Xtx#3Нm; +sGK{Ơl K94ٽbmG^ıAβ8<;LTE {Qs0["R'Pany#m>c1 ^2{ 7>f.&.lPI~k$fܻ ]BpAzF'N;9܏S5$۸ȝ K83s,u_N0aTSf8~=.QRE,ŮPJv艚U9xx۩NH4N6Q >Ymzۘ , :y͗eZy+joK>w)p}6烣K5>O_;3>Gv=7@KoW1>ҵܐ"S}p/ݭ5[C2R,KHN+CW`ٮ+۩X=Z+ !OD3OznIm ͊W`koaab7#_4>^e{.43=Oˬ:fd 4c[w2(~xF+ľJ#"qVPnFlyyqr7|L)*®/,Xςa^ /ҍ_'q*1q78Njqzl8y<} 6hKuC֊NP)ϩUO иķON=~c!Tօ}د:MG"6G'Ru74wFGRQ?!y[0.: $΅l 7X1/tgts dq9-|l;:#oR*r~o(Oה" a6OmL{/cXLyD{ y ڢ֠& J"@U6N1 '^]Ong9I:a_L RΚVcS͵yʲW)a <_;sT;-통M~hɛ/ӷΏXV,n9 {PaˍِA62RT~B\Ų;hgR&tj#s' ҋyi~B֥oVob>NQ5N'(Uqo!! ':r9z3T2ݷ߀fCzyJ𠫋de ,kI ĩYɁNF0ʖT] ӌ݇ܓ3Ul#?b3B抜N9@&Z~ iZ\#V]S agA\N/k#˥#s &e8mEgŒN.}j¾-8jr@xn G] ɟx3C+*Yfj#Xpjg|gvֈNτľ%CNBl;S]TE5Bz{؏ R0 P7\ Ά+<"*G ?|Uމ*yq$ mdv|"X83¥|ë'tp#-GۜiWZyOb@BXnս|\Rؿ (Kak16Tw-[,o`W٘or-}0XGXnvN.\0:(YIcS_NB񭿼$g#tw &-uOX/cLOynH >ghL8Byd-&P%BՓ=YPƯ *>b2XZp!gfe|7{Gp= OJنMr)\|Dڇz|SᴺMY3Lc:pX"LpZPuWidOUkj$o?}3M>b&r0,l Ԍ܉wӅe<+{Zs"dⳗ2ecRt,*7**;Xz}nyc|l'|2=t@[Xv`U$'dw=KDyȳY҇_S^zv` ,^ONz<O\LTy[/C@;g 9?XVv%G p7d{0^<,}]w AiKl8H DN:rJf.9X%5N$WeE /.Ա7$YR)b4=.VNe0ZC (°=?1IT#K'dg`vOfXF@ 1XvN"R--QLr;ӗ%c1ǖn'h"E{y=v`DAar㳈7|m} #rg,|-Z+ir{;\?<2|9{5cމP-՚) ts0FjoudbKnpfK6h%!aE)azZI؜cGwަ`r㔸_C͏O T,4.Ꙧ m =0>@dEd1ðDv?A(8Ъ-UuvICkGyZ!fYЇIW*<`ʎIByQh wсfӴV=gw}~ZէvO`v|\@_'@H% W>k1YB;fd:lT_ E ~4zZ>K7.`?8AWEYM4ba͒ Ue;]aijEYcsƣװ%`ABh+L4M 5J ߹˹ed5hgaօB#\8-wz4S럾X鰔t]76lY>cA(͊%P:6%TeWv==E땉 5\ ri$U _9 Wwpvgf@Q9/x {Ğ'Ǩnr ਙ}{eC80=닕 aTڪ^%' `Ahu!Uxdž%'>ŝ|E݂?H'-p#|ס]^$7ʈG\6WqsקT/h+m!sK1.wB#8טV7_*&@'yBV7%F?6Zx<-g--ɢBg}u-IEbi~lfJO%6g77jf@C9.:a0 5q7 -JW(%em O)\'߃a E m[wCSui1_*МD)]3Fi\HUgA!&V:L\S,cj +~A}a\1$ !r+/<'@tJ\6:޴ ˮ< ;9 9[B.A͆ISshN]( =9%c5Q(XDk%sڷ˗9atǯ}>N"|+Cɩ8< 1WNn"L~{HciTDmN? - onCOt +H[Ikj_D]jT0QќmUmBϱ1Q{;C=us:h ^a_4Seǖ`ˏD *8-2 #Q%Fr^ġowkJQvyzd"vwZI܏1H Yx f)9RĶ@*g۷DזX.Qc/= 5 f V[ěuqR5 '&75Dy/n ;_yWXrи.޺3s>j\-."3VԦq)8ʸO#ܚnj!-P%R'GS+3woq+sH`/sبwL ؚBC9rZ/aιEuxc=?7ΨG>&Y˿0ޅJɰilVl%>[Nlҝ;O '-¸_nU}O`)~%>e뫁>YaʬМ@zTzVNcҟx{n-Ťcjk&r,*?oO·ݟ_/@Ys`f<J)%j(H : ;ci;&*GC{ !{OoBrP$^$/6&e19o%SQ䣰p'+V%@e^H ڿt>Xד@bXYF|weKmD1ґA)O}ⓟ|C^Hz@K|Say *^<"i}RZ¡WY'w:}f<ɡb8JztAO1ͫtWU lgC)0, xY h`JySR,yzvq?zD{/`P=-H gâ{?'@ᧇI'(0wW \/sc`r > :=mAzw. h,d&f(9O7bڻ\$h aƒRн mxf'&gܥ".I HU׎Wcf 4^N3sWX,T=(2!BlG43D:Uřа"d|p}K+`C.|fg ǭ5%9v|&m7*(}~lJ)]&{y9hm~l"{i+&6[AC, ]Mu@uv> YrTݳi$"싅rNJuPg!? M>Ϫ),hJ{| sj}vPXEZ{3w'?% +Tj7\eimBMoyj0S*}v<TP2&Whp^2v_j?|މ*9 ?~BQn!]1jm*6߅Ľ;q,_O>F|~\ThH?g5YBnB>#{.Abہ,Mewy|3c^FQO!L:5˧UjJo^${c5o p*nX %`LCwmq;'yon[^ߡ]/#ɔ6S^¹,5(v\Ap4Ы.%m9TTS%(ջ8BGy/foH=ߜ$H5.[o܋B7a,)p%k+E}h}>p9#]aɺq𶬱vID4{~szd޷,ê.3IroK-\9 ġyc[&ya%/>5!=9rKNyջϱ~.l& CBz}Znҏ=ecq*fOg-.< ._9D%b㹄-\WQd3Rty%Ojd+ul")Rq9^__(}Ww ty"f^ArƙCN; Ҙlس>Ô%]>P5jQ҂MFCGc"% ߞ5 2@*=ɲԅ +̮B9g:3)'K͛zsz-ǖxl :Q\!||:/t{`?Nާ{r`~COiv8CÛi7F7 Og:bD \"cx7ZqC8[K/mCkXb|%8Tww.DPnbR$|$W|U*1=RUWJ DacWsf&Ԁ񰡤=/l^ K,6σu9G `Mt`3HM|~76!KaeU/( /}ןJ$z._%v"zqKB}P]*+aLZ9Һ@UOBAeե#,@TiJj!\+V`ۄ.\j^S>87qPyEQ<~l¯y^8c0`Vć@2u20eejv+c-*XŐKj8oa9c! ﲃ2dw &vs.HqDR`t=>nlsېboM(p 馓jRy6@[S`M``q]vWCJ6]q6E3܄W=g60Y~m1˰OޠnRʰg'GL1(D6L֌O͇˾,[u/[d %xj&M 7p)שk-σw~_WMIfSo*vNP4´{NǪE̡Y ɀCk5s-W%YHL rT_ۮN]{<Ш )L@U!S=Cm&I%U{X݁RBiQ/h%Z&!2qĔT? ,aV-tL>ct2xo:RGUr㪵g渜+3=T}3lN3UA5Hu {UȊCٽesR+(+W[80}F=aJ4Ve$jsk]GBރnqhgJcG7+ F;d5 i2F/iԠwtscvR5D3-K okx,$**~K; 2=:X?}\ "Xk+9u1JҾSہl[D_&Td^ -uzCuOcff*ɆL͡a~T\I(q$޹se\oQ}zJF0lewZNXRλRØojZf&DŽm Ɇ#JrO=xU|#(1jEw{]Α3/:R`rJZ*Zt %GX_qQLäǎS#NG; oMq>aIXh1|+VdU1QfWo0.d,Zf{cۿ0vk6e22a+oOMX3K^}%JUH1km4VP*놊S߉`o``TYf%AewO!ˍbگ|vtC1T7lq HK(Cyc7˓>{-]/ù R!ޜj(髖2/.Bר{X3PV>)1#kb=*[*J [t@s5)t4|_^Azi2h#+l3g>6clˬ8Hkv{" .;FR;|k7sZNjNɨ¯x@W}fl{ k6ٱ/ؠ2cG;^.?\1ݪڡ\ MV7KOC[ʑEM)A7R&Vo 1KnHa`ʢ r=KXXC) r^=~}\{RvS0ŪRѯ\&Ehn- CBEI(0h %+ IS~Fz$œ0J5$f{C ~'d8nt88$ 9¢ |NBI Ae̮QF6ZuA Wa !MA4]hP;W;(AKH6 $x9NA8ZJ඲.3 =kФ?\*kFL});E,n; E>;?R#C*eַG'b7dP>eg#`PGp.h9|g>Kj V*$0>60V^B',32p(JvФt'z0{zVX߅ߏjˏV7c!D 9j8`GbdǏs`9| V+<EdlaS1m~q=)VY|@wN3`<7(QUf,.gl52=AےooxcҤcܐ{$~T;uu8D UV_5—tnܳ;eҋ2STr?_WMZV$d0,!ɟ3^g!ΦvĒqIVF~'WIVyqn#ӿ ),{ܙ㟭oO,k"GcAo ?;I |%Z nh( 1m.ϫoN7c51]޷ O췣rŵ7a!JIþԎc4]s;uvV/-m/KZ[qKVxͻ]\C"Cv+8,}EtB'$R07WjF] ,܎MՔ޲!P_6HaȇI-F|/96z)r`E8:GtIqX5Os]B N8#֊J3B±nu?c>maWSȋ2M=ਰ]R.~7= >cBi݄+rҹv|DuҠ턽 K#ҎW_k CP5,o60 @6u?t3`ׂh2J3Roې3~[Bj45 {^uf9~ir=z)9ncg}s;+ݽzrNiq߯1aPU_7zlj-Ԑn*8b0YLvvO>bkIFXv3bufn71aɴk Hm> $s 0u''j`xwGs֯,f%^6ROUgDY$EU ,WyPkM+G{~Qg/9p)+tM ?;"lyPل{3}M Zh6-MŮסd* DU!7HW܃a=|3J #$;|S |t$29{㓣ݱ:k1e< [XO,5;s cA4 ov_Y&a&~1ƎKV3əCW[%Ä*ԎHL'G3ɍ@4=~0ImBt(2]\Z OnN7A>g1ksp߬]gy@#D#s9+Y?xM{,T`qJLv+~&Ĝ”aE>,}(,? CZVoC$+l,~."cq#us͵<ʁ WKQ0|ԡC8u8j*=_2& 3 F H-pш/ѺtĿIf[2z{?ۉC ˙F\g'~S,.%iSiH8Np \7~>dz1bBwl,-y)b..C~J;S'3>D} GiܒhzӃU@0d K{-g!aݐQt~|c9ņXo17$I1cXa`SŪ9ɣWNbh: Qux}6m-hS 8kƵEʆj7u0c3]Y 9cAn}7,S4'' 邮($T 4BnIL:d vs~1Q8U&5C/R_`j8H;RTB8`OrILoRa_Jdf3V^>T D?FDRPcFlS\ßvR"2Xx9xV+(e}U?b099t!aߪ *PH1oy'^=ʼe'l><%w'X&ҩ+X cBi.Ai7W1:fϻX*w/ڄ*v2k}PQ,T^L5I'nr;& ĥ?GQw '_!@RcF쮱w4G:Lw3$>v6rW㱮O75K.=ZGfStvK]w=kRf8v!uirm@ vZ `ldiw<KX*+w+~VNn`d/6qwbٙ1PS2:G-c,Bね7ؑ)Ń{?{PB[ݨ6i2N[CNfI>|Dx/>oWMɏdב~ߦ__1gQ @91F3lu>pl/~7CfkʁRRA̕qK; %cw< bq}rTvyrkc<콏Y$Hz_9wR˘I1{h Gm-#$޷&AJ:hxH"> <$%#++& ?9d<6HX=t+}jXV!l%mfSbo&:a,q9yl\C2_Yyw#? *b|cJʠ|;7n-,l7U2iXH٫9~xNҔ_?+q1J~Lf}n6 #1$ϨzE'1\>Nrv,H]gKO/H_O?܆ڈuO6ZLVda25n}LBU1;Q˼*zzh3(~ώ/TdrLN23\݋a]*kb b=] )B}haT4~Sw;\Qk"UsZ_d`;[qXs[|B {Z$vE`FZZVdl/!s*1z^:A7bTU/TEqN '!=j8-3g-a4yx~P&hbW >< AUHHȉ>P^,^74@K~„S5Ibc*dLR Oou@Iwg{0e`0Pbo]qm^_0:b{@s^7C 嚋.Pő%G[{>^S'<]QX%j\.Xx;ovCJ-(Z<$ц P )rbe `I~Jw4ށb>jHTa7!Q4+L;? +溺2jF]l`CkA)w^|V!(~`eOob= )X7pSܸr3&g=_V4=͑N fC{6D]Z2B`r`9[+Y)ko "H,ByU%(TxLz~܌o}Ԓ8QbrCEa$8(Ynf(_*L ^>x|?^R6k>J%'lp6WZnuBoYNcm,q-̖VZ =&ׁ~`J6MJҭ.@ɪ>~'BCٙ)v]H}l5W]|G:/&$yZdUY?׹K8]O{GwA_ۯu>ԋwG`-t~lzd4/bŷ28E=S+k>(s GUF\M7390N] EŲM\L>7#t*q4Sp]66yp2voa!YÐ^tk>8gzmHgԳm:V~\ƶvѬhȼNA5i8LjX]H*GX)zd> \/Q&@+p4Al(8JR6rh.-"’'ba;7MX*~ Adz{!{ OY &`wk[~߶ͼI^4)㻻1[r\O"%R`V)Hꡍ~5.B!GxyKl C;E;h,"oM/bS_a{mط1"M'{bk neL x+"7<|]Vo &nBD͊5{9 Uuُ$ˇ u&:~ӿaGc.osNJ8u!ja2z nQU~ O KIu3b쑊M53|X,<'qx%ؘUM!ď_zIA=k7ݜ*f1h%=![g{HyF@5Ho":3)Hlzx/ӽ9R>55jroR{v7,o}'4 f:Z7up0b*B܆ʵP0.EhUUU11*[ЖPMR/ nW1 D|t-69E9r*b~VH2Hɣ.C㘱m-4vy@uj/nbE[iRqٱL!SԵҶ&-a{[_&b S\X4k%"G#y(=8 f3LcQ>5%Orwocv186EsqĦl1T 8+DėJϼ9+!QPnKT B15[N2~!2v:Oy3vHfy!,Av֦y&F6;S@ șب߅=;K[P9.23zTd<eԙ !#[-TNLsc5H\"_ΰ忄e'}a%X K8I5/hbyKUHXbmu.}POml`EһO,DcҮ||P\PFhq E8|6)gӄ̛w,A7a{Gg|xrE͆d۠F U|( S_۵ }: ܼkJXMyS"L|UpNoyo2W.ZA׉C4?<ـhԺy]I$9Nc}UyXA\0;+bӎbp?B1i/:dAmG0ƈȰDy~ 6ĐdaQٔF;xX8;QKÊI]o<3['_`}]tlC[T γ &֑_*v2By BV|QV|yJb3v|J~1-_(_Sqܘ߱1,]GG4F,BBѯKPIֿ b5:򭽎ÄX_"8^ZO{BBjIPrͺu%^^oE ~} Z+ w?os|KJGzVU|J+ Eı۵)rCC;EтͺO[nR0B }PnoajOn>~Ar1q|/qrNȰ`2@ /<@r/sCPț}Uy_ׅ]zb87xrAo9~j(_<Qwz54T8 yTq!Tj(hڽ7;BA~gRT *tp>f$>k {UjJ!CM!y>:N :wt9 )Brr;,Xvi" h-6{,4&yZkE:Χ]mVL0Feۼ(LGq1|>!300=V˕גe7Yx1w_} Z򋜁9$pO ?̩ }E1\Qh]hP2 _섺9m@&7ܘW|q#1݃Em £*3'PYگA<Z͸| We?q;cW%J {ͽr6sp'8 ٘xG XtQ@zCٛ:4&/i.".6(=OܜYW_&i`DT^)l +:~~]8.KEO6{>I|f;9"+\\/+BZ;G3&j ,[5]Z6Pcn~%Aw{ Rh{kEs}C{K^ZPk̥4 Z5XVPW8ԁy%tk~\ə9r6;zҩ/ tgQ-BE "([#*NtX Uw'AmE < m:>}౯5L>i3_كf.| I`uF:j η#υNA,g [/~+ AeEtԸ]^}b<2zz>s :AЊO3;v=W9RA Nbd)Jޭ4j]rrdEq4j=2alHhU88`>:X9Is*Dg(UL0",,kW1% A9-SjMRSMS\QCX{4 tMtC:=36⌥1LhDk~ %jp1*J{]X݆Q>`VlR|هbVP,ُ 5(⋸J<_YB֔Plju }f~Fֳ7҄wXK V.^Fb_a¤QM=s,֟JSNSUn9=~T,H'Ƀڑ?PV.s)J~ŵ.@r-Ɋ37N8z{hRc}|J0qTiUJ? mF)JEtA4*..-wtc3DS&Atʠ}H$?o)) <<,@ ^Ϙ}1!QkL 2 ~ @^=/$CZ1ey%-62u1@hMs3o!.>5ÿY%8^[ώepUD-ϭڀB-5shLaK3lfU&w% B 4uk(s !Jݔ]sڡXgO֫_0/ m< aPNc9+Bn@v_g=OkEs/ (c0C3PO~ȅ !0ûc&o<Zʲw乲p.;KA>ɽɭZYMo鑳-&Ԙb"3NOgq2L_CAޝ[ؤAֲ}2J:eh*=:8^2wV*EΆP4()YyO<$u t ݐuQ"g.;j4?fBQ@l*[FnOcn-hWI$u0֓|fVyyʒ2YJV Ժƽ0T-'zd12eP~ÂZ3fLNazzVg3h EU4X\wR)% paҝvX>l<<˞YzGlo*a y+Ū%JtrA4ؾK@C ;Xk UxsaQ+vWǰFO}UIUKc)y(E}zL6EmRSlma4C) ,DwO`n㞺4/5x:>4~{{>Kj]ۮݥq1,}MGO1{,Т+'4Mroq1H*zدý +AHt?Z3#! {Éڮxjv{ iԝ {KhV ^EP^vH/~0t!&B%D?m'bgEKu9L,Dhz_l&!Ƴ CfERj-`c͘!/s#޳Z!W? Eya` 9_\0H_qلjnwF=%:|2?.^-쇆 /B?g3ߵa@5հ{ mXyeoD.Cs!ךhIYVT)v83oH Ѿ=P\B(w[NPڳuZ)F^(_UL͞\7M/4{&⅛5A#m׏ a!O^.Aj쐻l:vr|#n[r0ĉ bi>1.By^^?"#?Iurutq,.DLaUҷEM_%J* 1&#?}ߗ=x셑˜ L)Xvӟ\4)T ܑ%- u%[У Dcc?!tV>#}Ɗ%_yAJ#ӯehP` )+lEv%}q<붰 zĤzNd3o,`PA_hR~~5L}gΟ\còAmA69kL"M.@ #l_62_}}1qjoa9uc({,9 9?#>iSyg$D04^̺!ՙPvZ%htI?Ne#nvG;1+7;Ls/.;Be9"S@=f[¢P TVL-NUHk!g.zk:3]k.x<C_S)L/hW9u%t UЯC.c! huI9Z)erC%t:9FmVT(EPiQ٢(%Ji3!#{eキc{ \uu^}sʖ:Oa\IP,]iĞ-Oyr1#wAi!d|)k`_)%Y{nvk6O~a콷-T`[l~}7FWӻg58Ɉ0׾,tXW0&)dFJkuf^{li VՎ|7G[<*%JĮW⛚͸-Xz-Q&6 G W f ?Iު#V1qթׅSyl7$ԳERewo܀{8<ӝJ D.}₥Su$ =u(Pi{B Uo7^EVy|C(.)LxM'P2 ‾?10vP~lWm¬b+zZ6^FcsXdyWڟ{aSWI ؼ0gGi'H' {a).0B%w@U3 ̲QWwu_*QY v':zfaG ^䜾vH*qSCq&|3^~rK?*\]Evڡq?Vk$H8?R|y cWX8[ ~ycG`ŧf#Z7y)@X}A>fz >mGUR`nz$mδAq#//tknph*'5JE%4,`) 춺/Jgd/f-4[;c#6gӦo-;8<kV>ę`\+"kbr5<ceG0rKNܰF%f)~TΊyy(65Q|=کCAPÂ] TxazqXY4oMUuWr`śg>Qb?5BP̿dȮgn5-GgChn$x\<4y\7Je1p̘㏩UZ9{= ^_}D7*,J~-BǮ͔w)u'VazJR],ה*I>Ğ7H1g|2]T`| ;u =SrJNcCHxA~WTtJ(YBuQt}'u×S0㇃^ 1gˑP <>> ;q 2s,2xVy[kO` Л@{==HG]<).7[; Ƽ0pojCcX#ɷ~,7&F<sWCGX%"8fjDnѴ`~ [Ptf!u侩9(5;t wbfeΧ$nGXF]-~afZvgb1,%/u2O,էo`W,UfNl iljͩ&v%y-1,y$ys钪-c辆K-a9xӆ qpPFb79AgȨЮ~[0/U;e(1'pz02_q\d?K,~^1Z {Q}'0i /lz{󵶅Nΐat,Y3$Sg[Be98} avOZh^P}lğ},FhjĄU!4+GI/P5vY7IZO],)4#q'l:'K:hnj\*dݱe J[֫np?Ԋ| +n{0@Gκ칱*tZUalH+{l0V^6e`vIcd}w] !*r<]>|WP%k Zt|n9|&~Ds-lM]y R9VuBNm0XH;zUfM4 m)Mͷvвr(m܄VIN3PC%/Lo3Q9}O^tPT gEebfue}MK( ·[T-oE%&~9c˽Yh>`(QH!x NMgQEqgn 62翕l}lgsp\e>4:y1\OH &ԐT^Ȱɏ^W(q,;iCI6J𗽛z44~7o4I籞≴ 'zZ5m+d>PKfXÖھӑ(aȣw<ÁIgIam%Lt<yvo'bNB͎jأzt93wiѩX1M uU{̆ed\MT*cMƅ[[m*tj=z 9y7΂*jk2PKT~i(6 voʿ_o0c d;Qq_  ]J: i>!?R!U--efezG a|g]h$4tpSiTF+(1\wckKn:ՎZI(F)CdiPaT%3וA/^ygs[Y㤮F=ڏ尒+&w OOCQO}%E5/L枘}"/~)WAJDB+g7݆"v}SpW!1DݎqTꗹR2$]!إ_Mb͎_Vezn,4֔:C~RUHy;6dij| u BHb3u} kg%|Z*{83CӖK\ֶi!MCwiÐ6w5&,FVMeawUv&d_@)XQcJ2FKyH`m9']'$r)[E߸n*6&0~:iu 촪|P6؉zy v<>pҟX.a*t+42dL*^r\}2D_'`>70臭7f{~PWJL49fJdB;.9Sў,sg uX@]@6Ao!*rOyP֙˺yb {Ҁг`>VIB{7:m@m bJ%o2;~ &Γ$ۆQ^B: ,"b(I'sWVHS9b̗wC2wA~žʚQ(iDǠښrZ}h1x oZ5B PbU 2<)!sA27C s\e 1hƽaD/K`rn3'؎I̹d%i{`epsQA]46_ceCXTԔuC'}R-YQh]NO^|jtc5{ m?Pu,[]Vxɀe> ɥemCNQX+]Z48Ha#M,Y7÷:f6e޿vCg7XEI٣8Q.翁C)6LUxj6,E7 ✂^e%[~Æp,+X7 fJ[^5Wr1+5 }6dm KAى#LbDwD'bz{pBȠD%lCq)LF'Sy9\#0ƵmI3 棷"t3ֶ1 VgE6bФGyN`Ve从ݚ?x qE̦}-4qꯄk䵇-l >{+4'hRa.8m\^^,{s̸%G??:yWe*NxqV 맳 u|kE|`RfK|()h 2`s{QWX5W3ER H7xnc'~HO)c޽Cˍ906hkNSfFI`Wff'V_cN,zD>0A$ۭ.SʭhRRkc\ͿA}bv7o6v2/"Q/eKPy2&z]ǽf]bB9v`&AmBU R)\y !TK}G[1 و4*a lM/bH=fX$t~XHx'FP ӱT@FQmB/1xbYQKrIع@)]Jgi, Z1IRnxЌ3Fn:bQSnMlL i\EqӨdT;M7R Dc!Jh) lY Ko>s;`Թ;V0]ǰR(p&YQy5^+ 019T+DSb|R_^;%X8 K2oO҇ߔ?.{sbaҁ aM/}Q|H%pg^6kY"W"b&,*&Z}C­A'tp)J32/]U8`-=w_.[Wd CɯtqhHY +٨/(6$Dy)A|"ϽҧsaqVYS}JR6enfv$w|qf7qsm8۸qN/ Đ1Np߬RmpVƮOAS V6 `ayyQD"8H{;\ 2R)W~\{?@މK"gK*b6@-龮8pF*7֡U4>4?ѾF!-k6xL y߿9KmfN@_zHLS:s4`2}Y> 8%'\0 (|AA-#nXB’b0χg\X?ᴂ?w6pW$**!Aaz\,Ŭc#YtԎlJ>>b\s]2490ǽ'x9l!.w k-a!=آ$dH_~P+g0B`13ߖ.}pcfhӱ3;ER̞ >L 1!eKLׇWX|MۘyFV w77>=ɍTuΉB6)/ *٦MM-a7z Qmq+8r.S~\f^Ø#Bꠓ6֚s׌P[MĐυCbeQ{U{{#fg0Y<١#Z|8l1ƍkXtѶZ*4rIDfN{ ~ | .:{9#puKn\Y9ԆE3qw =(ZKe~ o)/aC`faY6XSuE?c6^v3ub[0{sܞqDۺ7L0j4WBl@ȢkGlxGIA%Qc^h>d:xDx:ۆ5>Ճ?S XT\Nו t$e1Fʄ?험YIaxW{ˤUC}Asb2ZM*/di%YBm^Xt^~c։os2áϡ~e9+PhXPq|S4X|-;ZK.({ѓB/vod|Ћx/1QHd 3@2@m)(2qu?4ETsk a~pr wՂڅW.0.& 2ǽ`]Aâй?f 9WHA qqH #+ rCpKBI _(۫X}FҌiV0 _%T r _)W 褃CfMWȸ<ڟ E ~++@O 4/sVO-ů5u]햑 Z:i!ڂ)_xVEێTv<>ui da8$(BU׬g'KBQ2hz1S|I aw;,zy'?4ƱH鐲jboU6N٫,Ï[] qfrfeS'9^o~Ɓl~߼zH|n ru׉YcV9*\ mgRw]Iɞ-S|̶B3x -}CF+Zƾ 4[)5Wٖu"S\N\ (kQ8Ӕ>9ד_ /" ~NƂdq[&p#}qAhe^7A-H/KCݛ+krAmNDKԇWkIV1*Ikh/?-p>Ɛv84h7.a]E6=W lkPkJ a/!hv 3֜ ڮtJ8&jCvBmSVS\bZ0"ڧ^?]gzv,0ꀨbU#u ~3nC=։oCAjlcz~T =עu= ibh(ǹG=j,|ObGءcPFzLfrRpqԈE[Lc8(p9>CQaqS zBCvmF;OA[KN=O{ww}٬<_Y`|IV0} oʡQX\Υ?|YjN ֠5h%OℝqW{l<ɫi8vNu]ݸE !`K#u8p/Jg+3H9NtpV]!,n.@Ț&is?|s8 `OզO X呔"'=%g2LC* d\ uTuX8E kɾ{ ִ۵ ^U}8IWcz/mK(e^{AO޶QbUӃ`|~G:e&lb3FXGzg>KN? MȰ0ۂ9)-|2]}PNŧ/Bvr~&})΀yXwX1%>2~+/Ѷ{~>B݃Ꮹ՛?Mbv;^_ 9ߓŦ ;_1%AVY)4 8f4Do@U:+h9|0D߫teq"j>/!Krc Z1}QT CLtHHjo#]m o’]U%&4_[IՍf=Py>z(#ή/9Y*%ԂOOr5]u,# ݆54=(w["2Ƽlqv!t^4S(ε2Us$ǨGo*=c A" ^썽w:|`b2{~UopG=d?,l4Qǔ/aWbf~~{60Z9G[A+SX|4`ņQuWkP[SYNAű׭t ²\iWP"ka?.Hmu]rAmlw:.%5z;-/C4+K22zryy-@%jNi3cQK;)T&>cFtO~'d+F2AM_>K8.7@cӡn{B:E|`WN{uYߜ1\ԺVޛ[*VJ|RCR}K9 2BUʉ42qC@s)YT%-,7x@v\8 !T\X;x;D21RKO1Oec+ŕ:P}B4(1Iks? Jrn C.ҡlRD0D/ƍWQaՉ%p:fq/%Vo1@lnm(ϛ~g6ͅԥJ nc2aZzq Q$ս0?.t~yq,s-k?,7{7]v6uq/0{x0}Ky7?uǭLGb7ӟgcr8KG63H^;MTtYPkߊy bblM)>m|hx9M$)j,03Qz& FDJ GKCq٧9 )mJ 4nK =5S( +ȲQ[K ho˻E ͆Y6-{׌qG1Mfh( M{YLc8O &P`uCvhl`BJ@vpJҚa HbLGvŇ'ӝdCMG@g?XMxЈq]GN9lfhPi=o; bZqK":xy;e;Af^:׏mpnn{`T(ҏ"IЪAh c @=,R2Z 9r*a*-xt/MWƕ&_Z}Ǭe,,13p)q>=l?mUS`KʏW︉\k}jT)|y'v#?a'wkpEdO7%- 1@lO:NDN"-_x/I 5`6J2.6v#ǽۧ !YV“[fmgTGh{DNmBvHEMW ""zJԵtyvvccv:m\%4P7{6jo` F@, LwAgț #E5: yc,W(? 9!ﭤ6fy?5O}:1}4~@Q&-*]9 anbgfMn b+ h <.4"X6_ ZXu$VO CY`AL[贄*yõLt: Tͽ!CsC_Z]CחsՀGkOר5w`;zn4UC᱉AQpPuuxCgE1\ XyS (El4/~E*dHo+W_&>3 mN_>W,%"*:ZH-N|4W^oW&#Y .1%v,CuR^K\{Sѫ¿sɋ'Ģ٥MN2>,Vl~r 5u.6,bAކ}>R6Q972ON|1]G-7_n:aĔ7lVw%=4Nf1/ek9aGbi%ݷdXTzw966&}پXX9{z[k/+Jb} +$l)ɵKow:fgyt.c9Z&mK?+ʪa5 >yGd\Yx0MLuEg_5wo0xmǰ9$0kz #~~"Op~lҔ9FՇ'r뷥֩ZE u_O`8` jeg%1tmd7U;X*:{ O3nRV8qKbx.ͤKy/|dG|C#ʼn/3!E3ṿN<!wzڡV 9V w*V2F+$|}5)f ҂E:غwonS%nK_fXJ]?J ~g͵C/ےQn0¦Kcn|^q럎Ge_7r[JxV뙁%y 3}Mpp5 gih{P;trмܗ51 S$<vʵC i+9Wܾn/5C;$UhHOzÍ87YdVJ3@JU(ɱbكY#IL"R a+=`Cmʹi mrZGR/[jf8irї|AipZOb„t-"du"Nja<JsqX{|\}8MOhx$f@=~:xўV8+#O ؘTQk̎/Au+f~, C̟gW{ח=۫LXśo4Fy1ASS۔6 '95FXCϬOيܐy~Mk!y,Xn#IA`+MzbЀIV=&WA҇b  [,uEN6h^’G4-z7+.3;a{(A"H;?+^/+[kbŞj2At2~gGftcֶ8J}ld'^j^ve{'7q}*,zrį }?=KoG[@"E '۫9Fsb&A WH6y?XshOP~< ZP.mɌqc2&2~B+cP /)\=E-?VRBMouϷPDe U <n<@fshaKX,X-0MҨKC 9KVT_yvzX8w[q*9Ϡ} Â\3%IP*Fp8t{}N܂}UygqrkSAGʛZFgR$*;~Uڍh~|tl b&6{QRulk}qka0}إYgFI9ä akfbJۙ $`=X^L1[\;G]p9j.m9I9t)PaSupEq=7bXN@otKMPojZbԸMwV<~?Fq~psRne_E,bU #9AZ^XT7z?qDȦb̈QI ,~OBF;ϬHx"N~V;M}h9M/.߽-ա@WeC|-b9nK`y}ڗgwO:^Agj1Cj0PC$Q%G'֏LXD)1qzAfg0s"Ԕ7&]FO4,:#Pmv]{6řl(&VN[m8J朝,,Qk; F]Kt|e>'1U!2.RT^Rmor^~,η!(vY ԝц[gy҇bېfi+ %V7'+ wl5$ώ= H/ !2=u٤5uݧ`̂NѨKx{[$.}O{J#>&m {_je]j}o`0ꯓ r`bֻb' vd (99kPRz[UoֲߙªPbӑ1&W@e7=%?jXa,a a]ԱDO!QiP~*[=UI%z^Sw.pkP,GZ_Mp_Bk-SgO-{uSПskh]ْJy @pz>N]<ݚ04;Oђ#!`̵c<1K>IF(C@soCZg;wgj/ܽ^Z҄J='9jspe(I]%/<"Of%Y;L$>dbf(˥#/cMh1ӠrKƩvך Nl\)tC)o żd"(_*_ GҝyOTR Ա\h.jǔ2Xj+hO%?8Y^P T %/ȱ<p~P~i lW?pZZ@H/Cd(=< =bo'Ƙ)ߧɠ[>Wuz` fGdNy`Q%ѓ<~MݿFhCĵ`S!EDP~S%%0b@Ү^kNzˣ_sC&s@x2p-]0 l8r{jRD]1dF'QXu"lP{}?.)eʪ5{عw)HLzjfMڝ&y t2tu՘oEW(Y V Jo?"bE2K怅">#ٖ'g(gQ-K&xCK,2Nwk# 5N5iwa:\$>{D2bI`PZ<B K|42dyLlk|N<2NawqQ(Q}Ӄw;h8-NbYgEس+p %FL/e.xuctK=,Y ql#mhШ:u,|! [2_E4K[xwak*ZuuJC)U &koʅ,m5O!|6>e}M zz±1G:fIu-\W=>@׷yPM?]o6N\*#I !qGy6#n>D;roHJFNԞK\[8DM2;aQBɡO K_ 7dWn_H̃/cjD3rH. `XVjϳ9c4@Af[/~70^8H/Ic>kaqr9t-y)ޱ=6]v,b2SM=~zy-:N~&]%L9 Ak 4,S|G%̼p[; 0MLm){1#B)SHCd^aB}U,(N޺4jJ1jR+ "3,1Y~ R˿@dɋ.h4JxZ66 VՒ%7Ϝw"T7I>v2n[T{9{'-d/vMF2 QI(&ȖTQ@qو?U?O0cO \- òMv=钣0yh Dk|ak0- .ixt*cs;#KX_}"kbu +oBv"lVA[עpkZ- {Iu_O0$᎛]F 5V1$!!S8XBeӫ-3H 3!bg~odH ( >’E!Club3,lTC@htI+ì`3;J>!ڏ9}2ެ;ePې`~j$eVMahzz4G?TL,m@̶SQh>K*_<<mϐƹa,{gvo_&AHb- /f?9,omvJᇩ2t_1o+OY8 ᔡ3К1L2{:KF'@Y/ iЊ*/ԁJ 0*yiC- -v<"i!/AI*ϗƄ0ťUD@]doAύ,Ca̼ ZvlH NӐ+R+ժ'>Kw{ކsLvj<).ϡ_gۡUo,5-OPɝW A[/TYC۝w5RzBoҨ7Ξȅ&6tZ@͕\|%^rWWFdχ~R9EF(N}gIz6; (/,C_:1\+xg; [ gA+eGAbǿ:Bq=u Ki^<: em$ĸ}os%oXѵEPvBAXsQ}oqM4;2C?:}`N<EY+wRBo#Ȯ~u|ޙBX4>/$9_y\g3ToơRygzP/%6aiҬ?aO+T_~+f+<:z\&Sc>}b缻5O/ -6Z!\j@ o9]GoPAՙx/&9ִ'a_ᯍ-P12`䃒C)PWfwi3$dI#˸ div&}2[ 8,EԖ'!i'yRU']$tozWsaG]^L`='6/U=ƓyBȱ`b?'`YLц~e3vKv s2_F/"L6.;_Z|=Tڛ:I7Lge#oIMT$QzCP¤B5~^Si.ZBb\ua(>>>6j VO)BO3Ľ 9hO S #>t{#6QF4vŌV#]+uX!H;1_)|y_WN&pz껤R(iĻ~T aO Ƙ>Q1J|)0yCpXe Ոǟp $zή? >#-=Ṣ UR#4Y r4Q=ZA{{zDkLy1#)m?(a`̌bwߞ߳ug_lR<_~jn(!hBǹ{WIoޢ Ţ_H2B2\ DZ|%=7j/ #u>;ϯC_= x8PDKYfA# J~c9A^slTu8ZKq$Qf^x  >LðTQXXcl<ߜ 3bo17^7mczj}Yvn,P"[?z.u\uLFǍP}6?p;Ƀ wTi_wJbbPT.~\уm݋R2}LJ a-0)>4;S,R#27ެ@ˁll=5fӊ= ޖKu"NS~k5XbF1. 9L|S}g_> bJ=h\[9ғ|N`@aWWG9ʽ#TC¾bO(jb\<9u̍;B'cv-C١{0ҰԊ6NV0`3GHa3]j6%Ҡ]REhN9p?|kssV _t:5^ẀaH$'\tpQP}zK3 0%Ie2O◴?7b{-Nh|6d_UAwC_i%6pſ,P-WTA7 ]M+C]Tq4~,d!u`5;R;Xfx߅]֒)/twoќ[fn(gC=[La>(LVlO >@[ hB|xciٚ$Nt{YhuT`zeo_%W ٽY?llIACy5#ۏ$H1 ><n}ThVwT# %LN}Q{λc`"{F'*Z|_MB/%P~J1?S!aoTaV#-/wkalkɧc NTm~,(|> եgBG|u|FEb=JY)qOSW7@CK!'>gclҥ{߬B.W9[z#Z}W5 KF% O_oRGP! Xމ·w'V@H{οۿuȾ -۹IomBFs%kHCٕ &$!ss'.F$:ơFzB)4{CEcN،`Z/8CQқֲൔ7qjnM6z?϶1i(8\Eט kA1N|NH$ԟbIKjX~|FOZzvm"W6j˶J62{"x vSZ e5RK/-rtRc+e~;,i)a{{ - rÄeR6٬\~g!!sA09j'0zS;E_oҴ* )o5 VqZcX{Ŕ:Xwf1c˼RqfnZmژƌ-j >^Ɯ"?\װ~!u,Vdq>?㟭~BrXdL56>t Kt+Bee &Ԁ-rU G?32V<\DkarecA>welN^`ˆclmsX&)"JPJ{J;n;yo))aze6=:ZSwq+4`*mG/huyq:殊O_aŢnBgL\+#"T+iQVmP|$WU>~{: * 4m|\ϺŇ=wлLM.BeydP$_qa5P<;GZeu͗G4q>;ZԆyP>Z?շۘBӭ22x^豸>vg6B5*`+@ R68q K= <1w@= ]{Ʈ8Pws"O%ɭ=e&Y7 ljhuzge) 2]1*XX=G BLRfmJ{O_^lE.v=8抚ןxӱn(JȤ;77M5"xh(s_yOqC!QSpt"w=Hb_sϤ&%O c q^3^)Yr{%,JT5,˸˜޼[^f>kўK }E$šĸfWHY: G?gaAsC-\p(^[C#v˼nBqⶤλkLxX6.a398Oz+"GCc"۳ץ>8I~+2溿b{r&.S {6LU$nX\b=.fWp`A-0SӡCm(- }t4!:_ߌt#T?KL _&* aF, E{1/oCwg} 0x#&<]j- 5@ߝ^~MHG6n>OWc={2c6DOCW4~'Kt2eh$~:,>`~҄CjC0A׍u$ȆyI/;l5hM}q}};:@iʎE:qXjIwk3O1"#B/*.Qu O-#1y0I0@ _As] |^Zx-!MOapV^([|Xm'azI3()sObRi5*gU|t4t{!u81^O\X253h~z&d^3h@mfq5g/mX9ؕNKFS.k[SDh+6=ޗD5Lhϖt`i+*"GwҠs:,do?jlYIah[eCe33IB}/Cu sR20UrDQC1N=t_Wc1QXnmyWarw~LT3gﲊ7V1EGٵ+d(q\&#z]eZ"]x[6CceBP$CE;Yb11TG U=#ơr5#>zu뤱fjV7M LD`vLT=;Ɵ_@t=9!V.$W8Gbु=tv!"k5~_IJNyj촜zm St,¼~S+ 7r:}1 Z$&:)#iWnagҎ4WG`DjR?HaÎb2ϱ=, E76xC ̝X_ e1/$ަѽ7 'cẕ]Eaw7psvbr\L$^I%=)W9ױPIy  9%AeǞ˽?Tᐣߑ?M@{VXJ ?'a!wXM ax(V )كnÉXwqWGV÷Uűge +P)?"Nk3{}LĹ8FPOy>ph7UW .Amq5VX*sqgMP~!u:8*|z db/6m G4h2`吣Nl7~Pl+eٖ0V؞]0H&4<"_ ]O -Wa[:L}&gW 5ϦCː́ i:^ ۠ҔnH.rpp1==_pK냈3wvc4.1NL8ng(ô΋S?`]=WWе tGeD&1L6> :+Ch(102 w/ޤd<8Mފbv0BgMlS3*E|[!n UoC b8X+`{7!!ypCפ< z0C[Dޱ!Cz%ttݾ+"wRu| /6\>Y&5WÛ64%!}©jH'~VI gx*S%P #y/v65s#jJiq}S =tFN];]Ņ9IXS~\a')ZVHd-ka{z .U<+MٮtHvxByOԣ,7[,k/OxC]rL 됙'4-V=z+ѽY-[H ԕ\ RFΟm0}ۆc,n b;۫P>YCq-1ސwjwvxwwI'/q𯏟 5y1E}5us25T21~utg wڍ 5%% V=I8Kc˄=LHp( g~[Ax֌`w7xкHGgz` =9jC=42<Ƃt`)-RqM^j07*6VB< /L>uo5̽辿>yq\L= 9GoC4Չؠ[#ipF:Ӆ7]'-wSp?0ogK~BaV +|gו qV;Tm=-E}͇I+6͒0]kSPnq)ULv29t6ɶ;z}k 4X6ꦇZm(,h }3K=ƎOn2Ӧ̦wq*X:) up(KC*x/<(]GtCa&!d)$S(5.Co/hW*0ou)!}=2RfRCϦi6G~2opSM| )J'./ˈ^r"栮5x 648:CKVv'aflOdL~\XCV7g{!#78*Șz$V>b)׏aĐ9e)2z՗&yǻ>-$̚Xz=! ~M r^ϝʑNet_p7_hO<%'~`8yjm,LN+wJcRPסvDY %'#lBۂks?~òmc')X"28d%" &|xy7ho9E2f){sKv|*p(ZfwSJਞOP$/zkѦ!ǚ\9QP皼@ !_ O P_O.~ یVC(CTՑU(Td23Q~NjuQ [X=4H =C WPwv?u}*6 B8aJ}){lf V^>^ct5uc h]g b&:,Q}L&#缱"}SBϐ=ۿ2~L; 0c? IY,"vjc?:̢T4oCoWhY7._V C0, G2Cܵɟ%ؽmm~=˅r/|e5mr1 ½,3DZ)]( jSh/Tx y< )]5g B]čЀ;۸LO1Ξ`s)Yq۫ hee].KS Q|\+Ñ~)*\sL:L؆V(_D_P .[O֖e/RiجssW xEYa9֑QbL)"d^28>4;\NKjy~@hlLԎbːGq0OQ+;!h6>œ:b%g7, ?J=KL>vn,Έ,|]ZFĊsxǩ;[Bǘkbݼ[z9n=]BwЭ@zW1XU: EK \-sBex5j9lWoa=XώC(?vң;XܑEà5t$~gAǗ4vuMAS6[33M+PJbiUf >'DWB'|KB=D4Tx;eeb)sV#JԑKQzChkpdk\VM2 @Bڹ1h\ӥ]?X' 5"1L̿6揵?rI͎t8֖qLdR.]wج?M9X3 dvn!ɃX$̂SRسr58NH&9 ߧw~];'e4BPq#_*Xv"-'0AT>O֤af(izzDkhR_d٠m%IuܮNz6%SB?w[,雥(Ňp4lzty'#pX4ʒAN~SCB6vS;h @LeyOޱ4ٖr *3Lĺ>QsIw*x@QE|pۊpRĵ97f [*}5cάI}[tJdg I(%%R IJ%dUFf*Ie$%Y{m{gK_G}x<L?oxs5?*AJ5PwL_(s]jCFCV!t$V\T휈m~jphUm"K_yybSsL/pMuIb_L*H{PKIILi~7"Cįsh .EBoNX~e@40m-ek V_i.`qIKt7L}Љ ?3_`J ݧ%.KXa62VnšgXq "ЋA+KGb-Yux; [c Wȅ Ihn8d5jf5 @M;:˩ ݦw*Bvćsh^c^s7yj5z9{Q2CCjgۀŒq'"q߻VHNiͥOߦuAL:HUyܒ9i%sCGXkﱥ|tم~cW#'n%oޒ,J}Xc@J{ s|%! \ӊO]bF3v٘ۏ^bE* =LbErlb8)ρyo m݇,\<8e%y Z-ƦJج1m'Wce:N*@e ]}pP,\Y*t;胄@Z9 (Ifvȁckd9~<ͤD!Z1N'_?X%Y1XB f?6aej +d~aە@?֘d=9eQ:K0o@T\ 9fͤ<\^U sYDDra˩L:ta,,^瀭)3v;b;^@ՃYjx6jj Uk};ow[&iI й", ~9Bw8k+pm6FKE Ĵ/w.ui@F"CG^ ?Y[224rg3 JڎAl\s;s' Dۿ{_Lـ8CV׿SI@|FѡX<&M,-ЇQ"O;<壧EL fLT+b e6}?,eCOxՖ"_⮛_QC[(?6(;@?iW=f=H vzf[wX}PmVỎhmg{p0܏lG8qLw!4\2܌]I#Tt?t.<> NmR;AXh:LN m xHV/JT\rY }e-IWPI5B \'@Y/E< nOHdW{/mhL].-\&ه"R̕x?y'gzS*of6L,1PN*XEbu3Ȏ:OzWI/C9Q2(ROmYG"s@C^ <0=N R{EUK1jna/;{K_Unr'MN߀b *igOjO@2y深0<~B %P9Gk&/AЫ}ۈ#!%" ._ kʇp@gw;j1"vu>}7s.mU}Fcoc%Ҵ-MH$Ёrw[pЋqL`w;P$ʦ_4w ȌCBaRchAz4tJ><&ud8 ݟtvǴ^A=f̃P)PB3uoXRvRϝOe7Ɣzlpým<V)\ޢǁHuE9uN}ʏC}7"ۨLuJYGG3SCwFt֘(y=^jo#tϳMTu K^?3!|:F5\ xhb)_ono/ zϑI[ka\jwiq'ɏ;k~(IN}޷g46)81, %2p"[mVPyW!|K<S򌪆ќi5f}Ɏł5 ~)U9f<[c$`򩄗7ca~DD p_}Z%E>60%[=XY5"d;\Loӂ Lr=jXI?MI+1=ж`RFqR(~ ɞM@:{G>4f "l Mꧧb:T8v `4שXNb%"ǿ~>=x} 2bܥ_"hk7l{Lb8C=y8/U*./%Tlذ^9B48mS#6^;sfF | *B~pcNP~c<72i^kY$eWbcpq+/ gZE^RCnt;E$xxs$#]¸SϺOꖫ0{bLU!TEOvjAVȔNh+ zpbKS8`Tٓ }h:&&'g!kh1ט\ ;m2G5?ꁧQg /Qs(O3xYZ5`hc/l|.E~r'VʨF(x'iP j8=1gyFX':[P{/i~VBevOk kgʶmUВ~mφ@>QuLy(./Fӷzɔ3$jla57,$7:_93S\ ?ԣ{z%y6Չ$L qpp5)V{[Mgnu;"4>jx+}H 2&ˆ4 %].Ԋ]Z@E̐,˟ܙ'M {]hD]؇*wȽ6uƻ>TV_1΃3o^IE y:T`c;D3`@[-m\ABo1|ُz |/>܄lD6a 䅉P'Eo* M#2ût8Ց{AEosw~Y,c~*!Q_ ^q^4a$A3S=6t73W"um;lbfowJTW hRH!yڜ'J{0U.GpGys^Bðx+tmZ-]9•BLr΋;28S "2]]S;d)ƒ1,):?__[+}Ivӓ }T(Tq7qAgF1AQX9}sDkod~;gە0k)q){ǰ=i ;4{Ěȸ?RXaHݒ%1F cr kX(V꥾Sے!Ijf0޴v<udJVh{oB-jQch7zZ.yS.!HNhЯ{}"UB昽zp4% UMVrVh|!D }.xb彍^.0㥮LeO\D9BLc<?;aȳ\8.hnV"(zwTt^}?."mr7 ;09kZ rv^̧OK/3~ NW* D:\o&H("Xu,f5Xsʯ9$UT\p:׳9PjuIz8O'r@ԥ[o|\ 4I8*b[( %=.uz!ް}**8>cUF7R:h A=QA o@ E\nik:'14@$r! %}(p*Rt~lϫCēsoTy5~"8H@ceYQ-(E\~+F!ĮPD]Qw|:"5R02״&?t)[ 0yU]44f@dPOwZ|<ګ\~ZdGcC{cN[_t<x4Zrݥa]%%}uh0;6 Uczd=sHj6/33^]>mgDş CycHxA/ ,m]~ *vHB/vЙqn</I(Pu_*l`ru j(-9zvn`O4O*ѻNB *O}.36I](WqYga? וHp~PT ~ғH)( uׄsa 6{jLNF7"ۍ}08ZzK~7^I,>ƹRXxݚށ8Fp(:D.Gjco5ReabӨnot1(s!KT+ZLJu2Cqr0a׳3)JxwO^ŷqZ-6Y\Qcapm4vh2U;Zc h pUI凒?P3 p2sg&^ѻUEqikLv8xgKOXk 6L&9wEo\Ź9? SΗ:y7e䕜ęT> -.nq[5=-o9Ϥoȡm=XSGTtB>M+Xie"|7 *˲mn$ e\dvCBs4>,Sv^L/W ^ 1A*Ә)r4KyTlGBO9e\7i1G<%caIώamm]3}_fL#9?&R61Z,3(#5@ vC4kji-r$~ 1 k=ɛͅȰRsh6i d.wbP==Db vZ/aѐ8兽RǍhh㓴tFJU;O_Oۡ՟F^{(cC;w8r.M^XceѵV 'B͠12PtJucKcv'?/tW_y }2;T4/i)+ݐ?V@ȍ2ʟiFw/5.B7~A΍{zY{CZRX_K>ň_n-Ymi o(3eVVŢo8qSo~8`Ŀ} {͒6aT:;͗]hEqtvxf}pWa Z.%$l_Y ]޹a遹^T=b%-9s8:ꟾ%#>LGh\N`WS JOm0xOuxLOur97ST/51*X݄zցZYc;LZ2<9)(\z #%.jǠxA8e{Тr䄂^UBzEߎw*\:/,A=v[IP!Eo}K~W ; Jkǟ6f+p7`q5.h~XpkIdjOnz?v}f8fgTS hISvZ0<;<6#~+9/uJRogirYJolo{_U4kP_rh;qrΗ3wO9Atͅo͏A3Gr!4~8oI5Qk{I;@u&]#hl \Pc0߭YcO>ǜCfUۧ 9,X X(\9ubFMCs݋M_ަ n(K.\7Ѳ}&r,Zt8׭SmʼƱ DiLUj ЩzqiNN5}*DWεU@{wkxq⿿$GewAhmrh零1TQ mZ C'ϻm-.,4Pyarj ̈́V,\PnrCvASPv:n٬$Z`mkh6֟tƏ+zb# Ah.U]+pkbXC7&3jPY&V)WMrd႟1ݚVϓ/L7*"ȖT5diZPZdE.C'~A=]1@dTy1>BwPn^-#Nf&WBnRO_q=w&n+BzZEA[wqass'߾u*CU K-(=?u^<=&{T~_ ͓@˻5Cѧ{ya@o!iVV|s˧ M rxvV T_`iP}b~Wf} 9R'!q(R9wPd`NfKH? SzlMN0?t&6{jFO5KKčlSeicf{0G&;H7\\Ūx3LjQqj8Kcs]0WsPG fM"1kxrp⋴fډHc2cMP*)m,W}2DSQ~hiZWٝ$3=JqY!n/ʹelj~hs &˫jƌ/-BR[a[y5cr I\ >?N^=%Y7M)<6"D.ۑ8r]j ]lL^C`R(z1L7j*-B:u4M#>aTbBlluaj>`Lw* ZN.2P(r:n`DkcNv[ R29F͊]aGY#76d8][̇6w,Jסm]V'4KOtTwn/}WIOawsxGEZn[L>e'XBE}Ic>@q?>F&XNgu,P2_ut`rÿF`_["ė36)jV:WqU%CR{Aɕ=P=2OX/%q B48ޓe IN|fA -,ԽlT|+Aky%'^'n޳Q)G*iIkUvF /^`RwJ@PW^^zwѝ=9;_Dk K>y+GcR˳27Մv{Bɹ5?4ֺ2 dޚ|*.(}ele8r7)&]tz=1)[`{_Ԭ@~P̆ O_!H!(#.y--zW0;U{ި8+A.\qToIg0?e;/8"b߄ll(%V޹gAQG#!־rnr,(BԟZz#.PRō'N8`_MH!{l}ى7.5ވ- $iy5F@щ*3u)^UUtU$p h_;1fl=Y5f_î͝KGpahywR\?%vm=iLOX@-wATVi !`1[?1#Ѝ.ن 1r浗_@EW58y`L24I:VZB7V9&䛴!F/fzCs=,XZ|ۼ (KqF\ {04h*N1CǢ+,.VnfaS)s6] هno\TUjKFsW_ăD} G!Jc#PlP XhfOa_-טE&h~ۏT|~ a ǥ&&V-`1>COU ɓLSΛrqn?._ʗ϶+B7 wD-'aI- 6XTiiEFT\B}ozt;3'TF9 l m܇yǙ1bRcHXv1䀨 >PQX#~{=GC4ֲ(Cv!̕?s\&{Ж`E̜d%SQ}VsXq%L׍FR7ؠB3!=DSӷiL@wCV;H>==GAV]vnlg+zswS$J)]_jc@t6%9 oUWҽm y`&qQ)/-;)QeϪC>|&4ON~%'tX[ vʏqt,?JFS~ G '-Krۖ-禺c\cOpa~27W׳8-4}o1'cDq{v>(ZS+IPWLrENxy/smV9"afUޤopvǡJUR6Z,Yaޮ7P~D4XՁSٕ݀vnH̊unDwXpXt߫AIGx4c-vj–]]ZBb_!RoFOBg]{JM@%i޵cc1\-gf'|zD%FیMՖgQgcڥxzLq4vx4؆YRiB#4 |kĨ`ٟ^~JXkrT"T)?LP̆ǽ9Xy].SpN<^6i?5tO0얌8F/۫ 8#U}{f9pcu| Yx.Lj}gın>3GԷt),4}ưf ߃Rs&uARr$eCJ~]ݶXO ?jUq0ÑߟTD G6ChY Yn!u+k0ӛݚjW%!3 &8xT6#PŮ1 /JzTV/q7>j>ÌWSvDT?[J+ߦ| Ms$Y,zВ]ꇇ9dr+`5 :W.ZcK"7R"gglnPBqj>bķ_mwc;1)֔M1]~b*׽k#o[?j@SuՂk3}pMݙrmsJ-p-n<o iĩwvouy 9Ai^wavH =&GҴO|Nn c??@B5K |zC=sdZͷd7T~i}Lx'&ńG Sm4c1^O15{T=.ʒ31,>$W%4Ä9I,$PH*D9,W :YS̏9M+L Phb11V ,2\XJchK[Y!ˆm%M&9V*e%bb yN{.c0kc&,ࠕLP0Y-%da%ߧFeawX%5b>/`9˘3%N_b^xȷXqV=n S={g#n ^K"/\qYnn$/ĊGfPvI9J'ʧo[}yk#t:'׉yO>%/!%<[=s2KjN+euxU}-'Ac@ B,tID|ޘޞB6hSؼHEG0MuOMH%4_z{%WR.,ZҩʠF.Zl!=~`Psw([Ni:$]xf܁&dgxՆ9i#=<ØYS[c,Zf۴9No{cse%f`oӯ챉mHOm Bo{tȵpv7dRzU hGdI9ӾQ߅hAhP޿FI?7n[FknQ&yA”nhmPabvMd 13S"F`Pu_IЏ?Dka7W5Wo]55Z8(rr!eJ!3PKA֠*2u rB̻ܶUxv~7CDy}$RD9[Cb 7b{ε2|O `\S_5%9\o6ߺ/ aC2s=eW7d؛4="֔,F~s0W( HO-yl'oIkpGbN^zȒu .MRCka(yYFk(<1=C(4\L/G~|5)LQlk߫9C_U'AJݏaOR$;Ip+$b$wnB}| tO&C0?[YoŞc]m%kCWڼUU瑘R5X2|: V9)U+oF(%(xzkR]6QMcO_eY׊UŴQȼ<7{]쉐rI9TW.*> =-I=v7킕́@>ּ<ĠM{h$P?UAy(JݯtTiԋu˪Q}VhQ: N@ Whu3y;!ߙּe''mղAm]{kw +֟0V-AÜ3{zf\uԚ5p&AS WRq n;lP=AԂt)rmE6M\fvh25ϴ Bv}ZT_JiqiY0X( :!9Fqǚs-8qqNo74O(RCu̺>(w-֑~+6O AƝl6wy. [R5cP}ƥ@^7?]25yP,TmmAKͣRqPs.&T~)n 2+iN(ç|3U&pbZ:\CN.fxG] 9R{~A2_ xօdߏC )L@Lwt,Ai̓)CWQWk55h8?5v 38Qd;}$(~2y7ӬpkC6h Xf8O8TncuQ!tvQ}"WpunH`'{sW@O#z$s|7_dnNcO!'{7N~W'6?>`R~G>G&cl޿xM{ q)Ylrp{/NxXGv``)zW#هt" ¯`lm'tYXқˍkhm\6]_>1e. CÏ+{U0`HzQ^@ prÂz>f3^Ӿ**uǤj+bU(}#raσ5,4k&{Z] l+ЃO=Jxq? 9ikf7ͱs,jS@e//bWIJ6s,O)x4č*71IX"T ߺCSTbMبWc7h:6g*)~}AZ~- }wHXIDt-Ø qk'8N0~ z'껗O!KIeK=D4s;ǷxY'ܮ -9ޗV!Oz@z!Q~kr9r)PA#p{MeK'm*jJDtz910jkH&ӣP*%ݵ =q&CCksPj @5Wwd~%(wso kкkВr^It>$NH(Q8l~Gۻ`K-Dؽx^+ >yx_ޠĀMpk E6|=Q-L * Qc'F y`IЍ}@ ݿR_`m퓭Pq|6T/_݇ZCYPõdw_hE1%ipOU9 YŶmm2<{~8Ę 4GGޜŦlJ/EhCxSܒ,-ZsHvYR33q0\Kw?>F kj{Bb R)/axq J{L: /*bQY2cI2)WzSg'}wto+56KP XcMi(,:.t/_Fگ^?ct^=È;TIVTτV,АNO{ :)EpY@}4: }k6 RJe3lS19u6i-;M^0:PPld[ ʮAI}0}bD)I1rP$r޸IZG@7v`fk sO@kyz~l坩wĀU_1ģG|iHJ)%qCyz :TUkώ ́,_lxYJ)@31 9w̝C+%1>q;9C_<sktG*m`+=) }lDkc7ݱܶ $p4b!̦AjCc+fgјXh%:ܤϲB-xyleHetZ! ^zH N9'4|u\EhP$0"BqiP6IV~TJs~+b7dN" #Hϫ8ΎO<Ӡ$!J J6Y`}"5E:t0Ȝy $NdCغ|/őlnY>^x@/m}*ʋ.,K=SbPv|w؈wf_8?D!Ӧ[XYL&'Ss/OJ ?طꄭ"g߯@ɭJGWtyV,QHr[Y:cgV]-/gOkGRClTcI*>zWW3ד=x]l=sx-V1x Yl Z-$C?}{b[|r_㰴id]u,oL'b21S޸Fki++X]v3*ys!qRD.(:{n}#t؜U18`P>-W4c|w8 7$4pFǸ|t|r+P>23^IJp+^R/G^2>p\ao,,)8׎-#`gM8KM;CC]+¿$؍:R%)}n< kGϖ yVZ2W]i2b˙&}kv蟾;~bkKsXkEu ڥ&b뀚V|+F߸bSmR1$*}>Л2ùf1+afOitMs _mNc*=:\ZU T/a2?SR ]㺟(W#2ӤXz̀~/L;U:[0i#nau_ mLyNΓrC'M;|-36y6St>խ1q)`Iաq òDӖ?5zb*姍8UK&2/6e@/|H4r2)y؝XZ , HǦNXqOzli5 s NIzmE;Ѹ _Ԫؚ~ztf>LGCCqлԟ1'{vj} ч?ḣ՝=_Iwt[ XA)Y!LSlx,\+ } Kح?s%/9y3C\K%:X,e`IL82<+i4u1}ǟB}la8oNra8q 'Cx|k$#O1mo(C71C[neoHA$יMnƓ}ӐiXpp8TY&hnats͵(-,j,o^ u Fm6(ⵇ\xU;B>6,O<*~J}XNk;{EB3bŐ`շ_wl@c/z&w7Bc r84bB{BTDeo}_ˌ2.@[_uP=M E ^T=HUvqCȍ=?ȓ : ܚ\hj+U1.>5(ᵧ7! nޓ Ĩסy"=P2H2cP]xW1Ja~?%Aڍ^Wefrl 31B0Pgr="ټsG@cOhx$JaS >X&ftkP2Zu2<<AL%hg"߆7>Kt&JBҩW!?]USߊu'>6?h)yu|B>Q]:d[?,\a/goׅ{akYya&T6t!K$\ ~= )"Nꧠxk,Tf><4+A.)wL׽_bd/vK}\è6b=AX Zy qؑM:VaB x܅&IGe,Cߒ3d $(S ŬeOvdcI30ܙS@jֺgD_pMyru!FօWYɗ+]=v~ +aˣt!_b|֋9ğ$bdU0I,f5ە3o 輄xq`);n:~62"w8SoPYC^e%]776=5x+nB&g/vb덧E@=,2lMQBׯ?G:Nr %_rt?@j"޴eEoCiMsQ+60lC:JLy (Wx-'3 s6V,1|l;z'j@h~.&w$řqfbpn鹂,HRuQnV\yW5\c*0puq_Y5:.]T^.kcFqA$%dAx 1,!X|矲#AX:Gv;^͉ mfdbe-2co[K͗_,T_=v7!nF 6 B_( \#E(0U#;/+A[̓`HO }-ӿYrCTYӘYYqҲuuP2,xfWփ.p2 &:I$‚?ddP:ci MTy;NЫ7Շ /A<YAPOi T3;F~ج@wn,d: f;l^LadH"MɫσOE!颐V-%ͽ)[Oz) Zu'aA/F-gܴ!iYe^Z1ȿI6rB2~ ~M+Hü#]DJ0g#P#視WH*ǫ/1`C$50Jfr R>%=K YgC'q/EyQ'}?mdژ$j< oq~ *輲T4dВGZlRG5#^Wɡ, H-# u#~[PW|KR O+b}QE;&:PƑ2aTڝ;! 흜(&,qo MHGR6 Wu<)%/أݫy_>{=˫޲ }c;J#0gpBRhd翛ފEnFWMc1?ʱ҉Am E%Eg(+mr"uhrΝ^fB;6 95@bzkudc3x=6o'}> K]~бIj |3PRmmSR|}fc*U,¾C 8ϵ~$m?q/8Rcvl W| 9-B֙l7߰s好=\c ^Ḧ́%f#l:R_bEs]5 3Gk +AjqKqVenZ㊓]7蠟%E903۩_{8rCT*L:c3ws}eӁ+5c{ӕ>l;geu,)BĶ\w1էrP-I*}"^kFbq ֱ"P҃'VK+:uNr&6$6y<p O39%'TA'k[cg,:xV$05cW塥+?6N?_Q3@ q ; z&$PFwFn(d72xO8IÊw)J@5F'MSAM̮{rj7_m4A̅*1WKWq $pMBB?C3}e*֫tK[hcE".ɃaUqo/ C}5vP(+ikkXunLg`273ډQ!.q=A/.qUtGFV K?E*;zT#]`҉g#.o&oxZfQ`Ȩ 3*D  E?ϧ*pO=;\N7*?ݾ RZJ/Bvk9>HiRwY %H<3RNKlkT'd),1>%ﺅ%d7Kb1ui(E9Ί&r'("ӊ Kc᠙K-`cŸr`o9aP_'wʊ?і79i!^^oǼR+1mmo=RV$3~񇪢۳\sPzpo -p/QrΥh|ya[<")Q)뤵ywHxAXnә@ABARzhm'r^ğlmKA Xr(6,)v'mīΰHI쐳?|] L.uV8]\$ wi9ZhD^v="!v.;Pi{Nyݧpq:I>N/'7_c_{X[2d jmqM\֟*dsC8.i%CipP{i#nG׬2ƅR=Jl%d e=;K* ƙݔD~ҔW2ԑXޑyl~ucj #y?+ο?iŌuP)7wt,~*sl&ҙqk7NJS*o:Ci$j?S^kܓqwj)-!s.2F,\伫ˁcw;8ᤲn/H1t r,X1[ep&])~" (N_QK䂺č□7!I hɠSMG#D^>担óWzx:t|P?51tT pm&(ks t A3rhȰJ$Yf/ch;cqC_l2Vw>Ũ۩S:^QP~*<.V.-aD>HO3~fþ@HTSn?ˎ͚_^=W9(NaqRoUvz v[5Ea´uaԂB6ar(TxxebjR\K~QT=3}DGؔ0o'w=f-;hn&iVmtj tBjSF-JraL W3Pћy5ԙ< ZC Nh)w;JXb0;E!?X,l`WRl7]bOe֠cZ]TOGVWi2f] +62: @{L&8H?t^܅is3챓^^`vt dCU}Yw Iݐ%Cq\Wa ~=/tӷ&Q֛0""y'8uT_BqV/h{|d/2x~:ۢjW]ĵ'|9`5{#PEl2@ȪOP%X&^h*y/vaH J/Źn"YE?@Ʈ$ï.g J64V}wAbVZiX/K5806">#E hԤb>#NT;wzW8p^zX*pzt;&Z]>/O7][ crR%8_o>} Gб,Up={=L[UU륥qkhѝ81T(F,2ŞRA2;`O6῜ÖǬ=ag+80j%+N]4Vo>|a~7J~Y?D\#)E,c>+= ;\\?s+J]j-: Ou5g\j?nՅ rCS|y<23qDx`G<)e`CO%xUFv}8o&pnRO߸ꄩJ+s }C8^Bit|Ն{Pz:}1#ԏu:c t2Pp@F=T.UB'7!̈ naѥ~yPt҇R+v= w˾n lP9*0 rϤ^nA^.wWHxX7u. gK''WW~ yj'#ieR d<3yؚul {xj)2 /B!KkPihpN |GisԌE ^x7컃wn Bۑ!mf04C· e4>(W [.O߰[& L?g_bw{I6QL`|j hLc 7$ (b f\] fPW#@)++]{Mۓrg:yyS NRBa虠*=y5ُbBU6Qr4(!ݤmy}iyP!] 79Iϔ&FKx9)Cv\*"u=^nro Zʳ@J6?8!ډO"–;y>3he7R}i]!œc'T.ijZ$gH]]N)')8 ׾?>{C2t CwI=uz {'3e0?Nm&a^G\1K (zaLU^9h/8ۘJa7e'薞 =v=YxKv3B"55*H4v%w´-ccTa k~]j3|P_4IR/6{o8Hs H ≽,]tH_%p: vy ~qhByhNB5Jc`XMU i&JN+X7+R xӼ i6'b龛Yo:j1UΈ!B uv4 ;zҎ ׍E9Z >6HOV>t9в_B{Y}jc(BS Rt?@MQJYΔ<*}RְF8],`7O_^AZV{}=}uTLQdJJHK%DiE*Q*#D)# I{=u'^~9 6|Vn)RdBWP*Vqv]V;~ڠ692?7p"O[6Ua*3DZzIӱS?i72 *2ۚgӺWJu 6% ,_2x +LO ٽQ=, X3LpƠ*n(DC9V_!iZ'5n<Θ;)Bye~6's1~Jg5ecJԆiߥAo*{- ͋z@k{ !PBUex@p89qcھ@|h#oz: ,W/R,Vҗ 9KG֧^hQWm[iV G0mavz'dt(n4e/8|F,3-u TX;[2@̯~}&Ʀ+T:hPz~M " .UrWѭ6$$ vaH{_ e)sOh0N@=#Ȑ3]ٳ%7ˊzW5FL\W":DM`U|Ov26]I&F4Jmfޫs ϰ.ѫbRP, y׷o:?>IX~c9_rD/N|yfV.3|%6<}>z q }IN`/ե# o\%>s6b#CL*XdYӊ^! ZeFdq_۟@q,Ti} xq泤OV=L'A9ml(1s8>ę,@aA]TLj7YC*1@3ʪ6M!3Bjwf$H+KZG,]!0EÀ𱽘 ħ4'@;,~>ޝSOeCѨE V<huid,3^ϋ}ѥ)"U07p|slG}NCoۧ-1ukrI :TN2KtHYXe:YY}ZВz/t.񓇎9KU*=_3gMRu^AAJ\rhW 4DrCb捵vhёZn:`vh<|N>g{LWl4\ϾJ2oFB'q1*ˁz()_ھE@À~$T.JoC SH7!Vf юC[\")jk^ąNIkhakʍ Ċso'NAqF]ؚ:>Z1|{:ߔƐH9yHx:۞1Қ oSCE9;2wv0C!r&l'9NRàKN먑YCڡKNTAws4!`1LSjpZs TAųCH ^:K65>/aT?R 'NcwKLKK4{bhAaoZ%:,w& qo7XL 0yct{[( xha{'aGƒ;ZKP;D^n L  nXaX#VYNGC7Q)oOF^ǚ?>a ,Kv8鯻8 !C"#5wpА?HfIŁܱΞ텘Wǟ"ޫݣk V$O@EI!gt؅ B:̩+kMK _㧅̐>7H=ͤ]=c Ȥ>d"^]; ,Sٹ /m:M5"+6k9 5`@|?kSW%v Ȗr hɲ_l&Px VXB_ʅ ?fu:,+Pw_E텼.ǓU GfFoͻ">~8/~{VRna# /GPE+]/g!lPm"?O%nB\CcP,:|tݮJÔ[$P|HW3Ύ&at\)4 CvE>wRk=fC] ;t ob]6B]1qzqܸ֊w-C768 q%U>O~aÄxl&08$jU¬B%("Z$EWVi>@J0'(ٛ'I>cĂ䣲=؟== >@cHzuڪswLl'4D>ڻNS@!EpQh[|*{Z?l[bR2W|t`? 6HvFߚTtkX j~* QhO}L9W}XΑ C Η"+f x{<o$|UJ7TϾ9.2}>~.jX#*F-Ms4xW\i`8;-G}k*IN<۴DXi;~-<Vg5.jz  نZ$Io'M dU#.ͳ'd0v%g/^ej$a./wa_xulLuatvt5Dl9.CұϴtǡQn_r<mf~^vOu}.1^m@B$[9-ҙM*X4zHc/W-:M${!&M9CwFPLSGo-"+4{!&MCO ;x@ӛͿB˸( &Ba0Ŷo*8TԎ6B;z.# _OgV#E&,и¨;}1bB^5z,֡48DSς0ۣvB2¢1ϋ 2S۞@Na!!Y0? J`0&auzzCDpjI{⮉PLby bl >.3!mee?*3HbX֠X`Q.|OhR?(Wu A(˂Z= ^C]kcoPd*fڊtsqWkbT9OQR[:}C4t CRbV!s9"]? f,ѯ魫1h#xH3{soamS6^3):wqưQԱ˝6BuHhq$9v].PLdSί|҅ؓ?LЮ1H!#C&lmVi쥛Buh.)=ޓLK SRHzԋԪue?9UELSO\.у~I$P4]h{/^lF2nZ7%>}Nzl:K2Uw>_9HeW/5A~?7EĤJК%iY+E R(Cֱ|ֆ!վJFs!ʩX2 dǽ/:X/WOBpOvw.#5~*l2C.OB3KmIߴ')fDv8 M'ė Hb+gڙ˘wYyGl_DKp s͞T^[nMɺؾiQ]V5?,F=`cW愇ƜbIѳ9th U9WUw. 43_̜m`TK. N=^5Bo_4CُjsuX~~6"6Xfs/d-}*Ր}vv ,af[2, \ú }bc׷onI, Ϭ86v;B4Obv;s=+F4ohmpŇPy=X1+*EƬ+1lhso% xF(ev-OCޏ^ritd ?q7[A V/ъu?8](As qwo|p1A M(B@&=!woJ݃*xvNV6HnpS]h1_y2@1v_2 9CX3rQ0|b|LȽ.Y%o"><yjcB@ -K% @ [Z]96—bܨI~ 'Oc>ඥ7vR2?b/q]do+qn=Or@49 s2IT1hbvB{[O!7WC^T0P,{F)?@N,ya8eEUdKHɺ`Z@#Uk:I[N7&(}uןNCIo(=_6+ 5:$&؋fAyWX1Z::SMV 6ŋ%!×/Bܛ{ɖPorwC $Pd]0|Erm~O+-k|;]r(Ⱦ# ʤHӂbI?0B9i9\@/ i{=0dCg̔B \r+V1z5 (΁rx!:`[/!wZq~5_VSk^Pw:6sݾ=֐L2x6طR< &҃3VS/ׇaY (\7u$գouPt9>JCKc>CT r(SQߴ6w b//`.Cc'lIy$ȟֽjDc MMBɫï!ʬ'k3ꨠ_܀jh! yhi1=d$C1~Li1C{sJ!;: Ro7.KxEvH]9x=c(+)1&QiZ.蓙 冄L(z9 f t7@wJ>(b.ZR묍5-QU-/nK#6=Qrg]`v:v^S<0]_?_2|Y*NbY1+88?42iJQ>sPL$0d }I͓4jsW?"+{}BX{wBaT6Ms@ @x)=hv;+~lYW=> :q*@3_1jqz ɣGbݝW׏b"p}Ra 6*G91vUGL ԊY_b%XwOƅJlNy1hJI qVrZ-U u'N8D9eO*Y2' ջD/Z >W]:$U?w>"gX7z]Ҡ Ӭ9VybI.89mdbԕدSyKC_3CއDIz_|@ _r \q.`EGf] i_iEKH iבBKy|_= UX}[dRUn,!9E;'*@oScxf.B=3r8k5AD:Sf ,Tt>TĂQfR47?GoTO-h\j`6?kZOu3Ĝmޒa,H;IS T|رy j-1GW^`Uq*l7͕x%z6F]ϊ#(4D$vrRsawØo^{* xiEۏg:GS8Shoⳏ'W:vD6 *,[ls EW$qbߚaKx#+b`~"-VCAz%C.@_ Rs Dj B^yFF!P >ԽbD]w^/ XxI_l;86X.shZc%w]_Db99Hx@ʄ:EI]rбk q"Ṋ[I*a0`#.'t1H~Tr ^5{yN,n)gC^%GbZ\I{6OZHJēۯ)\_\"Zt@~ڶ Ps8G>ncuoy.+C$)v[;\uN&qv:3f+F09T83cw b2dM(tbWd m_;AʄJz=~,f_rRnQar*%} L#8` vcǢ[`\Xw|)(;}Yvv~#[sA+XɄ]}=Xtu1{U I:{x'78Lƒ>VkX_Vek1f#'b4\y RFdzb{b!O 體$iyճF30h՜u&><+ ʳ9ۜYLī#Ek&y+:7 C]h>>ѰN}?ی__ ςڌ/yyFGUi\/ ?)bW9'i? ,Mz}oz-u71e/tkEs;>*;}.h[9-Ldﲩ?`$HZ(}, ۧNhM:=.x ċWT*ww,-(<1GB*nA̵wgT16XR5AFyn^n}!# [[qetpyK-n311-$a2;`q 8G{M . Tړ38 rL' [q4GTmBҟVΩfr|wkjr8E{nSW_D%#W ug3$NaQ Wȋ-/CM8N4g7eY,˽"ElX" *D<|ڂ{䣾&~S,} [0٬:w^1}عK; 4PSO7heM v-hBzp:k;"kuTkOrty%8L?bG[m?+Y}vZ8\1z71Խx1GWJS+M' [p5$ EoW=je M0>0t\0]jU1lA8}۬JaLcaA1R%0&K%U:TZnSY)$.k~P9j[(<]BϨgCc1(~0dwe(MBȸ #U2!VVUm0WWa O4)S({D"-7`"HNZ PT~M_8%NatPE2PQ |.҆_2^&J*,hY+˂Y)u51ۜ_o |jbl lkNq@?Z=͢[8sH?tm@/NsK1{H;Yک?<еGk8CC9'51hYz et\qlo-XſO)ȡsk>tw({O TOT7\ڳZm@^x OIz.X^>&=Vڣj,!q)߈՛}  &rE.D/㝿d; MaN:S'bIq~ (G&j2.CQJ, TKZ pɃu򣟠VOi;-4IBE> n$sCNS*ѕӧo`F'tT{~+|N'NY.Ø%{Pzn2:f݃MkaXOQ)E$JM<,|ŰνªNBbuk>1ayk)ͱ-,d{#/[9)[84SVPBnkנ, u ,>`JN$WpBm%GFSL)=uX8ݲ,&K _DN!Vj^||azq t{1+6cz*GhCIaPmiLa-vJk;B0J-]nߛr|nr*V]Gʇzlbq OMj$3|-͖~X_{u0l 8q ]̈́/:;M]" <<2BJޑFUhH|.l_KU'n48oLŌ •KIR/~_ 5ΐz6v8)8xk{gnG+8AyB7w{Dv fC[s@^Q(ˋovJ6"yո2;|Вx$l^Ѹ$gЪ{9k<>$ j륦ԐTQZ5H5]p ?@seagh&__+;,eUVгm.>Aōݛ QZf#(\^%lTKkE}8? 7{!lX F/Y1٨KϬC⻏JAKM\)sl;oSžQ,T'HB:w>;DgSUAVuO`v$Ƅ A,}XP;VwںĨv|KG%\l z}omk]W!$q৫`,9YBCwf=&%dVt"UܸQŘv5,+8 :?EuRm{lOG;ڎ".\O?IcfJ6<BSAvVP4npQܣuūnfmGuP/@ !n߶|h|dL"K)=rYԉ\fF$Vs:{fB 7[8.P"nj 92uT&,[bm&YYoN$Pt+l`R8I ua ͿA3~ux0kYmSIUo+)7{>E i OrA/|1ufsH*0e A0^h+w_N"%azeݷK JnSO^%v.3EF.ﶊ[@FkP+(WU75Dj1p[1۩KaA}dwtu7BaoF_:|E]lmsk;zc{sT(\v)K*Ϩt~V,o{qhj'Ŝ`J碫mwt%T=+Tm\:zc TϺm >Xnf</4cK#zg\nɕHU!n 2WgCݥW{1ca:=CeVS{}7LpgZ׎a2w}gZ& /3ɚ 4dZބFm" E?}, /1GM{n cbqE6MXe#ٿ j`/8y/ 86 ={c"VK =+ Uͺ-׌qd*}4lO߸G?PQbsiZ3jRE _=?u~r`HßcXٱoSMS' icGK3: iñhVQ>+Vݏ_VWq>N wI[_//c#Ug+#bƛ@(ŝߜ?<Ł#C4M 6=.vn<^ANhh}48{@n+"-dձZE>'UIa)Y.آޤj' P sy*O&^uՍwmd *݂ՠr=po2dHsK9&۟|ѥ:<5Vt4L}nw=6Tm֖CO~ MZ'pRmӠ@nڌ 9֩Uih'C3cl\P&-^. \r!5WRmlRaw)sft RZ I˹,`Co3ߪXbڡh4KMc8&)W],hϬf&THrD"`%y&_3v9`P3U${X݋1*uAm347HM|GY|N)嫾}eXKÀ!%9Irbc|.0hl C ) ( 8فDFrJ{3ֲ<9(ƝG|4:wrپaL}DTڨI2"Q]?`hc0 ^gv_2{/Beٻ.mv@8uJI͐uj j(;NN#1La`ӫ0AWd -}`m_qE(=Pk5i#O[)C'Ȑl-o厭`nu &]"@/AP_簢?`,Pɜ׆Ēc5+ PP;1)5_0teRM0<$ӵ E)MR>bҊob寜=9yLײhyFΛލFwA/*&-RdVP/\.ژT0ZvLeNN:9}Dz%,+s"9bsv;[m\NyxK=} MHtQ_8ZC<ŇVy5aj$F7XSv>jtޞ<ģ2 _ȃ⌿_׏AYu˱F!ئ%} 꾿ZϺ Ckjh$!丰YBgy]h,`s)[rxJJvl/,SƺtU+Cb\Ͻy@VVNlr?ѥ3-ĴJj<Ձ3Y:U5 4Y7S.P{SU ZR8;0zP6t&ct,d_/%ݾS_ǩL>XnJY[M~QtɇўC?|;?IV#sō8S1}n{{j۫%$6>~ ˶caӟ8$Z#w?<%NW"oLY1kV58)"$|)шUȯaov ,m"RnaˁK8(?djGoC&EHY9\ҕk>-/VԼ7$+ԣN1VOoǽ8=T*>R{Ul~}2GmAqSJ.v^?~ui^5bZtwzeE G9e"quZ|v#3($8/77 e{`v\z ., ~n*le#;<8%`_}l7[;5B\sf,<ذi*o0(>M i70K ͣ,Ee9\y[3 jZM E*^ڵZG:sPH8T~ʬh:ޕp`8nTzjaM-m,_:¥ b.֒t/UaE\vxbg!Ghݳ+5q*^e*l՜J40:T`>Eˉ]~Sf:eX3 ~cXd(&8yWϥC?G.'+v_WL~ N\)aa8e\* ZLy+XWz}֌Rx#vAcLGѳ>}ǫߡ\XNruR on8Qs іcG ͝}Xp;yn(~6ܻN~uK33B [D0|!-N>z"Kg\+ySoq蚂&V)"HR>gyf 2v@5GP%)7_!v[//KP>П4zʨ_ ~Qa: &葙cc~}vf*xBG7a&7|8]{l8)3IRš=dCFl'YkwNjb'CF܎ކV g=R1+*+gO&ڟ܏CT5 ƪ|f;>Ȝ{L,q4f>2su\@YCPVxM#|X^âδsk91o{Wmaa+2ٚc:- ~nᠳﲵ Đ 7:cm9h ~hy9 u}f'^bEfEF]c6瘈.l_p`FS8.>30(6<ۇchZ=pDWCXY=TqBPd}W,D}b1*  _{4)Jܻqi1YLy M7O@s'/Pp"ER"#0Tvi|sءa rTR 6]B kv@Wme λ2eWƠA8/hKxeTB+ 'ħ01pz^4 /VxGVwC@_J=m1bi5GnHC9o3h9_4.{247Jm-bx2/*:O_q<5ײT\[SPkL0a!7.V3՘܄aLj3 `NQg)cEl/¶Xngka϶CXJ\5S <=)pcV#o:Vл ?$1Z\wzS~ۭ/^<%K޽E?VPzDbvinXXe|J5-/~kقh#Z>":6{uKQդW`$hb.#VFX"ՒLҎ1 ˝壽% cHs-33Z|7␟M|9Ig̿n w<ϒv?E }9>)羏DIǾ-& VS7FH}Vh.rQp43U.=ƒ׎N}½kebLDG y@*Fy^eD аAyjo޲>!No{Tz{`ߪn_W}zcP4EޙcМW '~b7qS0<{oBCB Θ 5$;B)Pn/@qDqș4@Bʾm,Db7W3Ws%N]v=_BB5v'9 M{~WݳV֎us֟DZEtK#6|;ža^5@;͜cjQq0Uv&&8o>63C73*3}K0-|\vÃgU`isP[_nn\4`e>@Ø+]+rDۥ[O!H|S6cc$X}vfv7AEp~ ֧%y!zU^ ▄6?вp3[q آ5r 56N AJ i tt'(?Ze1L|sBKJw]P<4@*y cW1KA@']]IMTa:miUTzsϩ&9%nwY(ʱr)u>{:AU¾\P5cyTkZ~0bsUQICu)7Y!*{@KDX=pR< CUhpJJ{ {lB`1[h@ Pq)Ь)2$5a5atP57^w%H^ܷʼnpJugX-0%l9}yOGw*>]8q;Mw} ?H_lAkUg|UMRd"VtgXUG!myնTy ::eۯw"0nU\EH̔Dvd\#- pnly8!&T΄YDǚ=u ,>vή0Rh}gT 2s^J+WO~^ǡ.oIS8ju?yxL _i/a3Mc!dE=d>?&Bڛj;85Y 0u_Tizg\5~g#L1@x'LTĿtm ӀUi87s?5?KE}x!7{컩\v/ ุ>,kd?g{bn3AJ~gZ04l)#wx1{}{:*z'00͊}K~@Ҩ;.踘UIw_'c4V03/TKu-k1\>y\IfzF&4d~S_ nTjh}q+#ʁxI(o T_$p7bG_Y5Hi+o#2H-ͼC?zrJeSB4QYH9΋*A4~"&y[w*pqң+\7?1L2>Tm<^M$\Ieo7?륬l 4+D)`QJKXN|9\)O| qA?)twZs\Ew!,R1W@z`)̭Th=W˷B׭c\Xm95.a*GX H&yNJ%3X+&J0K,CC\a@jPQ3 E헂SC=\7~ʔ7$L\^~ =E. b^ƞ0s;yȭ}9@;޿ ŝ;u|!Vpw /g-=Ya# Zn=p]7orb)t.JnPBO-|so{̴TL=j;X>ޖ+ö{E/@t-d[DQK)@C}ӟtR'~Ѓ@r*9'oAbYo*LJeH/L෗I^r Hn4H `oWLPT) Af=]u,4:B-V47 -?Ә)0_g߾tX.mo3aϯ䧰1|,~uf^ԆzKޅ(G>)ǾRBj6Íuewa6͖2֟htSzxYw/(>^FM }:`hhݜ1!a ZnD'2*d( 4DKyb<㠐'j^>9zN8::iK`E/z|}`c X1] 5T&:Y,jpݩϽ}cŴЦl&xf`ico-{~Ma)Ѓt/:W!)&a+i\PO4?9rz۽OHwG/Rۇ "qdvqb..f` m++:nx01B+VIc%aOmȈ4Iq<ޏWq nʽ'.#7{~̰ع5bNSʇbU+&ݭvWq~i_{"=T4^>t/4A£\42eq Z1lyw3ybdfscro_B_ʓE!Wbp74gǐВ3tfL:4(nxJCiP|] V)mU?urz{ ƚ f7> M!`~4Ž>}1:_v 7`e3?)oJgB--Džeݢnb>ԶxW[9ro_<EAF#,j8Us jH3`3a7 uYdtYDzv4QYWm)(NN+"I] W0{QlrќrikR] R]yXZ-qb/Mj7G ;t}zt7a"K3ϸ%2A7';xJ5aNכy:~t<@ۛFј~ƃAs(ҡ;υscJ{+ <0-[,, gI d{:ň qq)iF)&sMZH3Lh$qsnU- el'6~zO6jV8CLtY6qUf7e M?49D0} Mg'~JzXx8 (0*??/)AiƐ+$v,S^(2 ?!ߜ6젥~(ax䵊QU6]<6 1y.:HΎOk2yKy?+AgO '@KLyCwcIH-up$s[˚ak!;[ؔ|j'Zrg\ '#2J:jؚ>6dWo?A>0x#  ܢ*!:RƧ{I,08vOR b$@񧦼n*hzW}LQOcU\-F-4@FQ%j\2P=\*wA[Kc@z'qK h$ @?G.I{nCR^tb!;R {XB[KiY6%1@Ӹ/~mǒpւ,!' к9$+D*2D`y;(Ǿ32w(kʍ)B ɀݕ9hjD.V%oF[K5ڇE7aΈ]^$~KW%ffAXub c9Dx*qF͟ c_b|-xMBbB?v>cb wY=;3uK&HW[̡Kϥ-ԍT9hh]+7Ak?yeoa  /@x(E{tɽNn*_aJe3 5~L7Ȋ c.6ҽE135,xggOC&07КH؅[Pι/ y?*HGݙO[cݖ׳!K9 S>{t97`I س.6;Tc|/ۯQ&$8%T#)Pyz8_INf]İ+SAqǧ_a;#j*7C[+CЛ£v+CzH m҄*4Z>AeD6 wܒd19wBćWr8E d=3L4<eG#Fg-r&͉Tc½IPbp6"Tn4>' -TG(a@XL}$ySaoKgoyr'z)M3Ρm b "fb ;U9WD\ނһλqNպW$9 @K~׭wvy cdaKp^dy;j\6|gf_iao M~˩/c5ѓݚߩׅ3 XIOb뮁E< ,6 %?~EQkVXK 'D=q%V,:'ɷ^wtDv'b%[½l?K6Eln?E,*$:J:*+sW=jK ?^ ͓VzP\W@o^/X㠾֛Jvt?q[= eZK"ެZ-}ҁ[,f%Yʚ @Pv@Qf(2!̀1Ӥ"-+ʷ}50zO CR9VPPM8DaG_B0/l\}υIfWrױA7*[&<3Q z-"VȾ:Q{^ }@:EBh1nޮo&=| !dcSr%÷M쁏1kZ2> l1kVD (3|+(J|m`_r*ׂO^i_ٰ 5 1暴TK^2N]! zѐŧ|JHuytuAyI PԹ60N~lf> -AW0^AT鬂I_ }v/G4)Lɍ005 PZ3S^ЫKX3@~qzJh'GNީ#IFO blQ&9էLhrp0<,X07Ӎ:.5jbr4.*hvw>`i["pճ CRJ JXw'jzMwW~\QыDSK&1$H=HcHEܥP^U b9sscInh\>fJY 64IR`c揚sna< +3Zoamb^ +ϊ+N SޚgڗsfX6^)bNr]6Ccg']մhBmieW!GodU6-Iu'(1i9 R,8}ڶeΎYceaqZ$x'N ԝuT n? ơo{C%:x}"0RSUX[FsYo8k0LwS|, >s2'oHo*Xoa k02♼wXr-@LVW\^rg%Ec]OiEOt˸=^OBEyR & aۮN^_뾧|t4?l-dI:nMu" !}mF+mPW9Hy@a# }ຘo~nc3+X׸ʌėen;SU3v\&\|s'{6G.\u'ipȗ.$>O{ΟaQ!$F6gݵ <~8llRV6 ;2Sa34,@Ozy/[Q7"A9 0iw$ZK^9Y$+JP2 Bq aڭ]K9J(NyjۯZÉ+.5)Ӭ3txU@3~B4evԶZ\|vBW4&j|7%e!O(Bw=;M1yؠ'rEsܛ{:o*$2c [p{N櫩A!H}LbF!ӱ5M r/2~}ُ Z+Nnk=J.T%c柗w_x_n20uHl3zG0׻? )u6kUj~(W5[kyr s3 H; J99& ϝf-!xw){i04{v'׸ >'ק/1MJAW=` BiQê"fj38?x8_'7bg+-UFlgpC4=|])+;[ cğa,:XBP~e2[,hqIVCd E6Zߎu03nꕞ%g{̪ z7O~ [s Nd_j d,tsF8-$qѹd>vmp'&,a5u&~g8GZwK~Oǭ!H]W\!@WӍv~?"W:P8bnމ4} ,A,iH,&Er@LP(ߊ|%YaIw`9{@fj!,5R$[K!e``n|U/`mz_H;9qs H?:kgvFĈ*^R*N"LsyRX}j(XoBG0cwX`rDi+>3ZCSrf7`@-GebO@ӿ/&4gN`?2 " YE T! \WQCoMj#,2ʘKjOA g= À>3!'I4蘀U--{3~Sz0MT %ނXi(%; -Z[1UK#<ЧVN"~ψՇ&eq | #걓*| 0p{iK%G,0r הLL-7_N3hFؤ^} Ej!䦚Uv-R{R؍΄B4cu}P>^ʨݟjd]&L;F~^ O<Ԁp?i^j&u53)kz6cY&)@%W7f(}g sQySP?uMVΒB;PW(DPzI?{Mc-Մ_k8v~ykKD6OI? J1|>q,ا1^ xJ1`0G+ 4%CW@+dP}+<~WjhtUHhfP*hPlUX͓ć2F3H0ҔdɳAo>,=ot0f%+xہuSt%20Ć 1#2E ^U*x I&mcg,.~PءOYkZ\ژ.]yDj%ŦFcːJ2;5 oKhȹjuh%G9MT.k,f &- [_md^$=4p r$S?s1@ޭ7lȠ-IaZ 0G/P __o97B~? =*g)~v(M1j(N A{9& 喨=]e7%nhQPk-v;PsȽ.,jG?M C^i,guFݡ_cԍ3OLBW܍;P:}MN]frl( u94 L&uCoQB>-4ADW+qPXyen[ ^ǥ5խM9gv_ ÀۧUmp|D]w0-^=)ՌE]Qy>WɃכar|ϬiHL_0,ЕZ*d}sOGⶄ1luh;tCWe+AE:z9V<' =nCש MSØ)m7t[6 P'@?tob9USې/0-Fvߺ6z0w琷9d-l1;IGJjFʷS_CsֲYoV j= kdF]aZ%\&w()4s0oӳLCNu27$I7|2<`;KY!$ם%?cnjKi4< ľ֡m>O>w= L~c.nS\ U/o!vݶ {8hxBimMEb8I$ZS0+D3xv~x-D|A">`P`Sww?OӐ\ePh cY&bK:m0u U^BhG5z[X 4M/dh| Ue+'E?k*׵a7Xa%' eABEjkX_m7VdZfn$ ;L?p|=~4oU 68ej^9Cm3?!@6լbۉ2i#ze-d}t[T&-Sz6_?\lr(RR(oCfF(~ 0̀UE+~|Bv}5TbμM,e̿Gp.`!7"s+60SM–7"8?|Tǻ2BpՋ6=YٯNRO(ӫjjZOeAaK|qb|V t?H|zOB{ƾIyݔ1Cdzki$d{C1"K,|\3vP{oL4e)lRR2d[Su!;!֬ }F%BX‡(;n@#ʗcRlN6eԃN/IR 8_xˇv5;K{c]jߴ7xJLnQ3^:ΫZ4/Fn[Bـ׎/ MkagƂ8Zھ͹H q-u]7ǘҝS~V=JT*wGV5/SGq+~2qY6 43Ѳ&BPM&Dշ^7V:KVmP[i&K(S֛-^X}^ffA|6"`ü{?Qİ yȯvg7_X;{ۉY"sq?vT~ ɧrSq&Yk&?դWjazq#+ )#CYCp13N=A{iڵ`PXxT8t=1Y{=$F߄50{]">x>T.XH?_8&N@)A$a/tMކM#UyP-kD߁&~B햮6Xn#:tM:H̢_~hn0ZVQm'58h7$e\tLh+|.*= Y?_n@KòP~'q9A{Ye4,ڀh&_`H$w8zI|jm zif.Va!#'iN7oq&w4qN=ʫu# ry%1c YĿ 18X M^ӑ\qTq'0l^=!_}8/;bLť "SO!mW*tнVcsL/9<^ OhaT9@YT٣ 0y-ݓJ zd@G fw-OOq5(f8e[ȕMEսLCB>ßE 'qzYWRxHgFW1牃Ş.bЗ̺l:IYwS ϗCK gJPy! ޾+T:.|FK3NP]qHIYwX=?|Kɉ`,=l[nT++mUēإ= zbhA s8Ny Ǽ4kEˀ32*Xj-"wG)쒋>j]T8FhPPJ= ۭ  )o.&܃SJzBC-Te&t|1wkzgϾwIWԎV'p{ K\a</?9pBƣ,GԾcA^`R53篫TrCS{(~[0F^ BS }ITZqg|'HEQ圁,vFt36ŗ?)MV]Yo1ry͞.GCˍUC>PZlS}pQd<"V$-&*2OIN[VH^BTxX`"񩕎zM=7Kmv}3w:Xb c^XiX )'D9zFhٻMJN}aJ])+O3Uy$ͷFƴSg'ubgWPi`f/̓4K|71rǺq yJobQ1*lP5")O*NC!þ=Tx]gZq^|Ј]џZؽF$=-sSRX^J #OkT5X"<4,x'C-z SvV Wj\쪲S2?maQpz,ȸ{|a%,]oyyckƜ?Xw;PᅮvGv2Q~3} i88٩WyjCgP(8 -^&ׯ"ū#7P Vh삲'/dW#DZZm$Z+-#Budӂ 1w3puh^SwwevΤ2R}Ro| ?)>Z`ΑĽXTPQV!ק5)PNY<EM#tqOks~eM/{jBaLab} әEJ±4usK \vLK /jBLЅG_m|[ f7dLZ~>)B/gk@j&GkX}?[U~k}a Kdl2jgp mO]vI 5ּ.}K-Z:BOSXԖAPIeu$7_n?qul`a:kء3 Dh]5z8}$(SlO[/|Mv4dDi~zxm"6mY先֙I}BݏYPf@Ce}m4hW% Ҋou_\:GIńooEDAFgaDLWcN ϓ+yi!XFI (Cc,7q*di)0a𵻯3n@Q3PgCH?(9u JC&_ܮmH=g}w}fJl6cEୈ @ { Q? I3`6xX^:.ҦtJ(+?ZU%&=EzZX1dh s/'IJH yc-l<aE7m$huC}tv|(DK[`M`!d&xCs5e Ԇ@3QH _Mҏ~>+ }~,P y<ǂ(+G/WymeRDky{bot;?I+ r'ddylz5PܼdB ^9^ҕJ7 'Le\ӻC#'VzI`%57v`śi9_BvܐP=zr}u ywov?8B~nq ΘvMت $. `Iz>XupړA9%<,Ϻfٷ`)? q[Ͳb6La,G:[|v}3bs;}U6%ނ淉;N}oB*Cz=V؉*w=NkXM'VkN+@%a/yzaN|O¤ Pz{[ChqH. Ǯe Mm||jIYl`nهr b,uz +o Y:8qC;;w!6g@ۖP1|~[-Vw.Hf`z;TL71qKz_XB?YkYy)6Zjfo`^(RQVYbhԯ aYM&-ugQ,*YI.:s*:}êGtA]rEtԠY j+`%Cc(c>5<jSs[ܙŒnyl߅ûD@75Fe挬hBѢ(I,X}V{Lr}(v0wq@M |>?pkPqڒ Mƾ]tW/JȹI\H֭dwyqC8U8!XumnIi6jQh0<_˞VKY`,Kr7b;TP_+*y_-q^LФ%PI< s!hgLM-ro<>`sÆob{vł?#ͥ}18=-s)-FjX3-p3Rsc._Uh+3Wx2b-숭p+V0N ۋ,t1IHfʚX<{Heg_{C m~"ܙX.7ٮŽTX@ro9*"m 9 !1'ՠI=i㖗x1ѥg\܆[~MnӞHWwҏByڹ&TEHszG!NGz7SԹQSQ5>"&kEw6[Nck!Tqd6|#4/^CыDGkU\Ƃ MYLf?1!LK <;N]2rS]W%CGsc9IѨ=Xs9ILlLor %oZ*wBxQ/ :N؋ɽyH5Pn-nh22LP/\  yT Xq:w4ғ<6ktC_:jME2tHVrW?l=[)"ڝ@pܠx6O(L#!YXսr!,hFEtJ0^`c+Y֥TuwF6\s I?onGبR`|zP: 7aZ7Gj9#Ylf1aYtX%9aܟ݃m.ٓǞHiˬ0[0Ct/ϺJwUħx-̴3U?Cǃ.Hʘ2i lloC>ĉ]M."'-6%Tǔ?+)y;0KJ;n2S~HJzvSbĶ1 Cv|Ubq̽"_{T8T7*TӴކr,z" ͼ%e,Pz ^h_Mܕ2ϡ;GkZ+37gҾuh$Y8dd>㣍,/ŷGȐ5=oE ҫ>P7Ev~P- MH{|u>4.[+\0"Pu[ڛ\ys#DgaEE0,$8} Li_U,Dr>ckZ,̯ XQSwfb cӴjZAy[}bnLSfY3iEioaX}U"7z~J3+/|F!vD97$ ' 9O^sMU1e~Hhzg4Z+[be?}M&gaujX3S킅S'߿˛c̎׻-|lmssj[LDZ~g6 liu{ fhh?5ݯ.{a#[kh<(N}ٲl2;Lm4?,-{ :;Q?;ߘ|$$۷ՙ2#8ۑl35[Os_bkumM_\ݻGZOk}_S˓ P":Iӕ9[vRKA,1X*F.{Z ANR&2Z47esu36ʹC9_8ĈaLCidWp˹~nK)33NF}# N!aJ.4뒘TsRۘRR@> B^mkXc)vWP`FRKkov9(2=BNC,Y`+{7V-QsPK$w̙qeEW7.`E8xUV<2X -3z ?rkW,RbP6])1:İ<:(^=zkF CqByXyx8cͫ;D(w"[GؖH~iJ |oЅJG >bNm0Ԧd=U+cHtֶ@¦cSq?Gp.4R- CZ4X `` L5Z]%cgXpĂl4iXAG;mP&'f=UJ-EDWM(0ci~ 9>N q'秠?s~=%<]}a~J$16$M3޷B+t{*No}.amE}L,+ ^.lϳ7OEoL`|C:s/V]Q T…=; .[W4=v _h9m#Y0D:UV~ ->A:8ԅ8 z(NBBEs dTaGE!,_P+5WbU=~_ςЗPK |ܷt[iy6d_>qA3&ki9d ΂Ss띟$6)BΫ!g!=z?QӰ/u<})T"B:pBXg{U?ԿV = }׾s<FWBcN 0ܖᩀH 6d̴ujIK7إ&lnKT͟G/t,Dt_g2ۦA質0ct3?_{- U_rRmw5+=ںK;]m^}po*SfY}, X4*ΨeBSÁx#{EN~fJ&݂zhIh<l r8$evq!U%Ut[f|5W6ߗzd=-߃j·/5(Ƙ$/A9󋛧B@?fuGC\_{jR X\D2а}3,[e ,wAo;C҇4A/q"/thں{ۣyKZ (}aÖdOmuWX,6;6%}|fK2;faS}~,ZC#v~'aXhxSG:l3wCSEdPFsQIr >I;RZxU 4E9c㡶aJO|jr2vEOٌ7*e=7]i^A{~i:F]L{9tz_t;KYysJC5ˡ6q{Vgd@zy3P0r<͆ǫ/BhWmH%Ou.ƈ 򜘞yƒ~atYU ~f9heb1GM"@ S $bri g:]OytS(,=뙶\ןź׷r!\jGP~=u=_G5߽-=-) 鯛OGlGU ,_4-,B!(~Cf[ s!NQ+@vT)U}~m4& {WGEhe 7.⧄ IIu^q HqRX@ס[bn},BiSÜۧ8®B;-@ѻV۱ޝ}PMco߿tE 3O{ $; +7ͮ ѭ#e@8-7F:e#'ȵJp,H{!wwa()(WxZg $j/߽ơ΅N}&hI~°j+R; 9,Awl$н؏'H ؇}``T]HV0$s? ;[N'_?ʊ5hjAH&nZV4{HjcMfC/s7eo(xZ 0H=ճ%]Ht^m$0)M…4 &%yi:+9~y>,<Q*{6<áŦ뜥w{(f^E͎ M)2}y'r>%naQtOU6 XtfTIQ%8iSz>T})OIo K!d=P-yB 脺'oagGTƱgF5̈́QM ǢwKg0-f@;:5X0W71bVW2mK[ N:ivRR훳k_Asa/vi#[=U> >mYD+TnWjEɋXE-17J;y_g}>BQq;[&X{ UAc ుw]!!$y2s^ l.9 i(.Y;SϟBG[_!F TRDB Va;|,Tܛd]u1}v[ە[K?( )ttcMi9jJ ()儚tR6;(-[m>@nuDr$@;C@pg6 ]?5:Czbp&o& Msw{ENXֳb*k>?CoyjH<4XD<9ׂ [-sʙuAL͒MSn۬-}TR9r=5DJCԡfq19 ^g\F:-y?K]f gB3#?@ܡK}еU5b/@OP![!`v2mfjPa^o{k,~91+t+ =%*X}}x(Il1c u hH27䳲n; N8ۊ#7HSA՘/Pұ" )0Պ$ӬwY1N>j1hu5Vꖑ_1EҲXllr R6mFG%S}˅".EyPt5c,a?A"% 3u]dO>r}>d76|>=U1#/22OF(Z`vyM,RϡcTt+k< ano{5uH{).pTxS.D{\/ s8{0'vmls!MXE᪌#9ܸ4NosrsBS8Gu GNk1WFts ;'Mp_&=qh"Eg2-9q+ِ  )=wMQX1潱8vcH;F_;JB)kT 9 q,"9Dcm"-< Υ{&oq Kg?>F?4biP?f6i=BfLAQq]Obz4x94 yWn76Pޑ?U~FEϼCe*YlMz"Ҝ/ _XzB!^$W,ӿG+g]ߣg}Ι&-(8u ե1Str5t-ߞhvs8}te @rm~zJMfDdW#n($Asc/TL\hgTp&aX̱9T6늬>{mm (۔CrsK@~>r7,xWz@^@;Ȏ%m.XNߍv? aT|hl 68z%=Xv||B' ?^WpԞ(t =?6rwq!l)VQiՆ|G{Hi}4ίp-0]:40Z\my$]W|ǣXGZdjRŠq/v7!s K9> w'h1}K1zEӴXxIUlej+(u Hc?Fc_1y$ \q~xPS8 Xӄ$ccuVn(vyy<t CԟA3 w/:ٹzBUhᨘ}WZӛ00KY2\F#ۨ-N&i Aޭ==yj+>8fli_;G?| xU@ǟ3-z]Y6>ɇ#qXQv|=zGyE>WeCO!g#;] k'L{DڪoDΰ+>D5{k!f>aӗ͆beAhjH V~5adz7U?-ːE(/=ޓe!W.Dn`LPv~G_uMtN}c\:* ΐ{OD L$v(Z|Sf4:u}CP7*#h.CUЅ>`NQ\8. C ǴRȞrԽ.AH+.d/?+–:D BHJͽO~s@ &'zh-Onm/p[I,]&#I!;U_)ED!KY:;t>T?._a}@ZJt}!C]Qr-133rБjhPɆC\ gaY ʨT('#PD鰍6_4m5oi$y25/t|``s:[l+HA礪 >"pYYo}V6 {BC]rԶ.X~2=MIȢRžcƂHڒ#kX-(z3@glûV-Sb#6(QF;Y«le܈ܙg"1ߔ}mHD`ªR-vYe\ n]+P9 hq m BB;.iк-fORu/gTu9﷚|}pcZhS8<0P>il~RRWHw`*cg$AWA'S*$qPW3Td/WNK¨J@c<+-k ޻^SAo00~~qav%on=,O44\~6 zǧ0mӢ0jke׻ I+o^GXO O&[nMFA[뻠}zOP9Tһ ?~?Z;}{Ցw[֕F5꫃~_{^gIzt*zJ (݃)N^pZCm"1ls+ӑq:$iup6.% ^JaeD[Ҏg|C6Ru#3w nS5O.|zZYBX4'dstxt'߹U nt ']nᛘ.lr;2Z!cb9Յ#cYo&4gޓ֞ViIp_y-Ί@oief< HO^Y auY0U<ndtJzSv^[[cM5e Cz@R{6qw 3W!6QҏzDoJibxpPYqBRws*ڜR9m{ &H(d Cp37m{w4'uĸ̲oc!xQpHԖP%]p}kkG]R (1y0~:hmC|{~K>$a )#̟ɉ*kSlRl-3x 6&b񅅈B*$NB%OWI0w]CnwCHzu0ܭIt GlfnlQ Z{^3XzG|n;q6`(D${e8,|!Q҇8iUS4jwo?ǘ!fz $w߂)DlZ[f^׈ޮ*5{Hk~ģ -/BʐVǃ=ޫt-Qy* gbO&ՑU8w#=>G*|96vDCؔ-RfQ ߋ|-q4R3|J!: >V55dm@Z8ȼy2i^bg,kV4+sy7]By EF+j ((.7?y!ƨDjWB!~æ 2 ?X5$ì0)C ݴ:kAo:>K>,^1+!Q84}:l?ZxW+`Wm 7z8_UXsFnYljԝ|at;(@N^OmPސi}^KfenG[1}4~ պ»٠1vl#mv;nipºۗ6|Uu@1VYvU"Mv@0&O=QpF2|N̳q2&BZp?i tOFg ? .kE\L>VnAY}'|!*F۝/KΕ(Ί@w3Գxnb7ݥywaÝ Xp[O9Sou 8j'Lyun:X7?|PNC,[A@;9\>ʑ%O&CdhOāDh[xt?ʳ(! {.lv}[×_aWl ٦Msgy9 )l~ d{4@< Wh巅CyvR6)#4ktmXmaظC-f ݢThIu(`1nQ#̷ΩgCE,.lܚ?i8$Usg]θ=(C7vo6{O_s\bbfMi8={B>$^.0ztzNɒN8]/~;xvQksaUmڅǐTmc{DFѷu3ϟ> O%90_VGSH4m倍|mv(a(oą/Q(Q#dM>U{|B=4%?+&~,*tyw+#F|۵,&ny.7,7O7>ݶX&u\h8oB.ԢP N{b|X7e>-bw!a+=jqMI20ҳ Xbo1zλfH./VoET \;b~l+L6K;\~i7]jI/8^UAKoZ3[ec ];!VH5>f}FgC 1ݮ F/Z2`UHv&94ؑQ}Je¹&||Ga,U#S TxBrӜkc{'(sz͌ni-\ltI&dtƱHL]0Cq9$IܙaU $9NP:CYx ۵/=vW^)8RD? ''pODxj|"߃EǞ?Sm])=FӠc*$-N8wItvsW^b38\a5'tcWzD]P}d`S|W4- rAm.#-5~卉@\?7ݺH6'QX::y,w<\ rc**|*N'zd=ES?IEQC'}օXH̵|K:F)›kn+ע<K&'sBKB<"\ {ޝ^LUގSaG7[TK)`_c,I7VsˣѱSyXmw:GU3pǻ(OoF ~nɒKjGcT錊;u|~5Aѩvb.mԼpbɏ-3g1M}4{p(4Q}с.*дY uڬZٰ×$A2 }%?}œ3GOCkJOx[q~v'un_pA m̮7 a׻hoL'XiH)lrj W;ҲA;Ga\+,f^|kR۶-&Du_F[5SgDo~,Z|z:C CY/h0L[3<r|ɉyо*w!1r51Fhtt Ch7()+#B}6mڳ.[dw`/*#q3^)\m;.| }j3}|]cGȿPoZb34I˟?Fr06a[@ve>,}6B?s%&Eb& cɐHp1:8U1[>޿s,e[XMKX-WVwҏ:v#Dh&-c˹<gQ0š8\F/tb a`2v싔 '͠Z.N*\yՊ"uF+ %zU۱Kl2HLA^ٶ[]!uŢ)CI.H#_𩹡b*.CuivbM:w:$x$JM Sg)F7hNaSfPyad*'A̐ƟPfdJ(/,P}usadM9,~䦨)챱BX=[-ȴUS@b|fnRڍiX~.5i,Icʺa+ =IYn7 7 *_O3@>uCwl 13 5 ʻny1CÃX5cW&8AF{y R[nn٤2~2Dng wP&e NC&`A?-T֘rg^Ʒ-FkT@oנ('8T)sb@ z&dݳO*{@c"% d—seЖ,ov8Z>V ֨nR7n<_QˍrUj@1떟y얾ұV"e~=.%H]* 170zyf*p5Bz}QU TVo%+餽.3}%z%T.91jn"3kr(5/s(Ԛ^LKK&a9Y\^qzkO!`NZkC MauÚ3 \^fr1ح݅Q#fJ,»Yaw*h`z:*CȱM(1oϩb^ء[zпhw{^.Lv.Ebō#e 2(4o˟4ss[{L6f" Rhn=sg3ք`wN{N}j= >NApRq+ (҅Dƅ8(.bu386V{HQOP,S"KfK"G],4t]Կ*d)s4gqHS*1:}f7@}eq'PשT]dA7r[ %^ ;&|З7d:wJF0LLMA%:̒ l+~,eZ.y7a͵ 38z 5ŦS6),JӢxpJbq%B͹eCj/ getVW0[iXc!H,3o_V)⼚Z !/c Bw!~DNv&BsTLl5j $*?\_fVi~826TKs24Ig'YSCn3`ls'_PLkچ+lR%hc&% ru|ńKZ*@8P{- DܣҼ&[3!]{L7b{{̹]5E0凈x*Lt\fCBUKpLc ^c,ER[]v1E,T^[:`l⏳sQJ|#mSV6*aC%;3pq\mTǡteZGuhNBa|^%2X6|$*Cc}BAαkоm0U]a71.^u;rCK`1PgWm97@׻'Y_Ŕ Wr \A^7QϦև;;RMARUޏ;&:%퍘 Pȹ }˅V(~!cY8Kʏed&a*ï[w@"@þl.BAyYH)1=9vw~;F4#۱lhٮ~ي~%l=MNq Bf1⬳L?d.=]SN$u.g? ;8= w v;^rK* ߃z(~j956NAȖ|c) 8ڳO;kos+k4h|{7MWsGO0SzV )_~Xu"QB rK+ U'o?{2 l38|R%R^dx+7!A=6">v^,Q.)/bƴ%,rԼje 1;kDb|!<(2*ˆWRP>d~I2UIsX#?M;`ˑΌV˰`.m1ڴx,_؟Xf $s{.t&na0kkqJq͍_pRCFֿ}NDE֡)LJꅡk wqgn(?a § #P`KwKdC+y&F~{„_iL-ܲSʦ'Mt7K%I e;Po@#4si%Bmţi -h(scEjhא~לzGᙶ[-$u&;_&AHZNQcuɛ`T.v|Iw.wCI8UBy*f}VѻZC{%cnlۄudhoȅ.#GX:~_]{-7`tX3['d.G{Lg,`kGo/b8^ﮄqT$S߈MjP+;*`ge6ǓJ ~jX ڬ%҇䙶|9X01t}l'[79nk:tM> 3BQ[zX:>f8ƭYr ZHΙ>_ݱXod}W΀*ZR{f. hۉ֜Ow<{.\=)/RALyʄ t69M73߿_XuCuۋږC/`5VV4C\XS:5 ԿO`)hHӴ?!t ?q B-*i %oU ?:g`9b#BwtetokXaM[XLM|nsG^m$sDG¬pJVcp]^9)% Jw⡢+zuLj>gs'@/ӞX dм2ԙh06&@Y;,(-te ^Snԁ\!uv,n(R^Y\*]E.Pd"/c[]Pe&I]WC)~G = IdU,i之X%GVmW lyd o(.\y =]jej&:B~6> U7]> %[s"]Xjp?CY~ IFijz.6TC>܌v yRMgéEW@"ڧ`i 7 aA/׉=Ϡ0xv(*ey7ힹ|O?+c^ Ðy5?Fރ+GH"kX YwS) bʟ;XBSJ qoX3K6+w嫯6ff ݡ['!lGǰi# S^ƪOjBn ly_V^{ut.|Q I'Ê5{XN*WCkgmqQs$li}mGlVPoIՅt^4?6Qr{t}x${)X[qSP˷Pb1ɿ5  _xw|9-z~nȼQ|uI :N~nej$-fŇeWU* 3wVH+XsC:EI {*8-V)Wa lˡ`ZN ЍN$VpWs>'Xu=mk| L!UqEX.ޡ3gspp/|1_^w-n@fԂ 9թuCqf_%CckVCk2-9N6Eh3RbCna 5v@X; 5S" lgčힸ|( QhH`xU4?Ki*. 5\-ۆ]t!|2N86UT&v`sN/^Y2dn\ μ+nԮPc%Y??+cuDAn02 !m2FHn(.BIuE OLAfC7h2BC ˟P)xuK654O\Jĩ%j*V~+;1HoXb>ww-Beub+R9;d(6AHΖwja8 }Ss4z }2.PdHEMC @$teIA^&&yK욍\]:gNܪ5w:Z4;#2BI8H3d)O9˵!^=0Ϲ}jgS!{~,Ź5TEԃ5yDL{M6SAҍwoȚ_5 A%uƍ!ZL҅y׿owrˑ!:!9(F9F#Oeג@,|mz(\RytqhZϺ@&^7a׻sڛ v ʕ6aFG zvEd:+5jPd!5>6Z($Lj)ى{\IGh)G He,Ёg{jcwHR&ҙ*ưԶ{K(y렋K(,XqY p/cG= x,=2o殶HcoVM3umUl`}2$CY3_Kl-mQ7k ';>OZH]'{3U &k[r mvHR>ʺBvP{. ;w=~u`O5_pf) ?QJdqv2d M aϓKz v!9MBǙRObK:Z7G9=K3CQ3jlI:</t5n&2unA̜17ΟS5ϺPR*+㞆5h9=Q'd.rcO#.,QK3zhwR/NyX1ӦIʩ\dNɏXBk:Y~v^8u3ecev(c|E4u"BI)TӔz,k,47mblX6F ՝Yb,Zp me0n-& }clߪJ-0eOh'!{yY/S?ًTWA?Ꙏݯl2ش%ȜųOogBOj=J`V,+8) [~|z !f7F5ϓ }4P߿sjvMWCׅ{,90JjOv4:T!~0 1~zٙs/`䆬"gwĴa詏X?u3qʐ'ø4Zc ՛fg@Zl1:^ga|M 6*ԭ²ooJC3q7\8co9. jC>D#/AleyhWޖM{CҜƥK\GYȜ#COBcX‰wRFGHq&yjL<'^LGoBȠ><YO_b7!ЭWYVdF:`x 򓺤bF@|f~Ӿ#XSm+ߣ)v3S$0$_H,Z25$0m/Q4ݘ/ajAr#̬y-9"0ҤC #29`4j[<@3&1XyE.LA. VcRŝ=T. Fä7]롺T9m6RO ͡w)q?XPC&]Och܈Vbg.K>*MhmQ4s6לra-k{+Q|fF']t*M EVxLj{[M$|ՙiSﺘA.AM2JVg3bmk] .l> V;2?I;@,O!$A[(Mw+H6dnS>5 ݗ膏GUVEt= mRP.o h\)fGDQa{/Rai|3clg11襤;ThxaO;rm1lI6+8U|TdP/E Ip z44#RV\0pE@p2 {NʵpAtJ=֖]vhFm{jԉRfʱySze!X ^U}(;)\rJ=(<. g!>('dCYƆWpwNSXֹb@{gmaVىFX^e%R}y?KP*b w) ܕwe;>'ʟffc bwE(?%2 (5(S~5G|6"3,4$ H*'hƱW0/^ǐ5L4wi>Uy HMYn Ȥ~zQImQ(B}S‚h@EP40z`Gfk\W;4<޲ i,,M~ :e?>Yy)D_2 5)۠MQ >ahۼ _齃eɷ '?߱ 1^K Oݟ1=hD|ر4x3U#ӏLc [c][/ո@i3t~)1F"dBJdCyY(n"'!mEⴻl /PB4EI~|PvRqN$GC[c}X'Hy#x7d?mr#x%v3=z7=}CH8cyh1jfwx?_e9܃>Hp'J_؃凅"=Ԁ*J/ H VHÌߖcO汶uxj CXҹ2D岅_Wr*ű쾬e7>C9 kK^j|Y~w"fwXHQKn g\^|K Ob_<91`~xhPĆ~;1]֛iO Gś\V@Va"͙wP2Щc[ 9X' ULJG1Er>ĻvBiK1U:EB@Fc5.jmD-gHM8"1JlūhHhݩ R9 _шߩ!Wll 3:R5ӌ $c9 Iі_vO ?8迷 vlCOӝ0Om zfͷÏ`w-V-aLY.)̅Ͷ]}7$3+Rq59hM}"NZ?BZ1˪;Z1joY|A 5r)M@}K_*vBLcIy sv0jjJcwqv&G*[F@)`޾80,T/da`O_|qz84q}tg붒r@RE)S8(>fם}Wف7ja lԧḅ_vPz h ]ʕ[HZ˸hMlFyȞal9TnbP [cN:dL=UaA6/C+yDK(F&)\ݭP9j }SCǢgB~}iBJM|j!\dI9!e,:!~ -)c+;}[:씑fo>VHU(fKl7V`o|ZۯӠ}E[}ckRʸV&,<|٨'NwFjțum0m'6vؖ*l1fz;`eʧbO>UCBȉo Z}Xx@a(NfWGּ쓟1oMN v8yT֋ˠ1jbg.qzCwXGor]/K\Ca+='Y\pAipzH@8a]@ fLmVTkqq݉BaIfJxܡ^yz8z[ ]`@ Sfm=͜ ߍkDCX7kc,S!6*+4-0yCUl#kP<j~?-V+(EPAνL,kPzV-OGcqCMEr&W[6G$+^Èu;CSoS0YlW7yz&-t 4%nVRdX 1 Tuh>f~!E1.(7n_h !b_7gLzD0 YQ &S 1vN+[yԲAKR5VQZOAn@hidTojeeLsJZlU? HXPr]|x~">xeXKTv-JR@HZJ'da\Xr+Aml]U) #iVldoA}}$%2<-g1!+[% >]t>Hnl1}CGy3_AYߪ >EoH k*ӷ2_2`*E"qbK\dp[L B`!kC ~Ҿ9lH::Z&Ϧ)8:j4&}-0vroQCw25[/F6úT۽Zmv7IvKoqh|QS٧0Aw0ź Llh辆xIrcs PG=`1||H ~Kb>h} OS{ ʖw]}r a`f6cs:tWJjw8&P+꿁;?|/SO 1< ̉Cݯڏo3Gc8$6m}۞>?;].YeƉM7)w9e[zd2ua!l-ѢSban^M&5̿,BVYɈ:hK<Í5^f\X6wY#ܟSDq ®o<]rwکuZGn[XAH;HeAqg.GٗFGNa۞{E~'O+'̟%z Ln?r<Ɯ>[slڌMZH՟04PX~rcKFB֖ #ĕ`CIe PJp\>*OR Qo@6^p6kݎ߇F}΂~=ʙ NC\lݭkK4)X!HLD˕dkEh2 #"V-r +D HK'yP8~s_xUE/CyHs̔Q}Y-txEMݗBpkCcClMri?缺sHe8PfhE,IPpO9 vN㇖}rd;zZNiEH^yAvZҲ]:BkB-uip/pP?I:߂\2jeiX5].*H_9w\|/%}T!2Iz=X/)/BÙ yO_U>dmtrH&qȏ?H?C4ӱd{gg`6ŠZ¿ڣAW#0nb#Eg3_fbړok6:Zxv>lwOf`wMR>^Vza8+חMCH]QsKх>qc)Q:W_|jtA)İS?݇MnbEavt<249Xj* 2X՘Sl[%&$8ob9׶` *?b u3P1=tyXc0pFUChq'Ȟm?{76@ro%}pvZrT츜F--NHXuPcObӞ{UzBjh/VޛuRF˛`EZ-xF'g 8k(#5akLW'$٘߮Crv/yk%֛,SY>]ǿ{ywǏU]/LMb J:-G[p4SR*C-mn(-]2S%e?M-TW_<9EW!Ṷ,|ä݅dKcjp.j7e_?8F@UޟО%r($ؾ;n}0&E#ELy?۾4(k%OA脋$֏T(4(g/#qUsxC"6q" ?3/CV&XȆow׈{jwX06 t:Jm~{]JXcKKh5N am(PQ ƒLjA G>VB/?ȬRioK,gЎlovzaIs;=tc2E[p@_\v__>;? f)LyB~;ˡ4uۣXv(m{Q\6GW ʟYC\).C<Ǵ-wj#a^G|o5q)߰ 恁{)*e 1ᢵ9_zi*,XYŚ9ybTޘuIbyxW,d()njGhۯ)[:f_!ʭY@ÍP$tNa0Ieܥ瀠ɗ$čYJ_.݁')Kt5F|2lMSZ`M¥{ ( (tw,܇zmX0G(M nIeKM`-'#ׯPG<ՙI{{Ï^w q"Ąpn뛦fu~冺䶟)8i)JN[>U?|;Bztw·[(66B.2z[e\6o&39JL s beʟSG"f*^6ٮ{9 ԰y S!b[XiPc+ 2G|)X(p7X>x ߘiy,v{`#2b8*bfytS3 >juf5V:RQWPjׅCJ_OXl}, _}OBϢÐ{^{)ԝ=qTe?HO]wOZ"߇@\ h6OzH”NPLxt,ȅ9ll{yEH>jWcԋ:a%HpV8 Z4'~/I siycܡ - ب9PU+/X:E>7>t`릠B,mYk% ;o@IG%U Mش0zѿ3ֆlGTi YCHr>uӳAgACKK(^ :>ž3MАvs3Q^z83F۾23Okp<ΉY+êތ Iޟ?aJ;&+wm^峛+y72fN_4=:yO8DHe4B] Z"R9,.oj=yZ?@YWP|G}b_!Y d=Mv4&IQP z:ZʄVZѿtuvM">56t̲A;L֪?}Ӻ>w/9Q,?l\_{1gҺ /!u PE^Ja8fתJ_gEOdc1n~tf Xx/ϫiyAhOTIX+a*$n^&;m36{b ggA@$o ^JΝl)6ϱbF )6360b=F<Ъz*W(&w޿*w?Bs[CދRGH|bXQ:z솖G 1+%KH=iCϠj- 7e+@_8Ac Z)erz!?J$==H_M-nP23 jiԡ9q *vͼ^U c~ @mw? Jk"A3hP:O!,~ckN`+L#vVpgrVt[dH"[kx ^Ve kAc>an%3s{)VhjdTwƪÑLGl|K_t; ]4"烡0/?Bhhap&DmZduG퀂Y+S[<=erj9x;EAE q(A⻎Yki`֌/Tr^BϖiPze*ӡo^`v-~~m֮B%F p ꋀT+O0R(< W=ƻw bXTHr!~"kh͎L7#" ,JW>Mv=zBgG|(=\) #Go劾\CWvb_}Byt~hůr묦Y4 w~6b:_J<&hgySF0L'%? e? ~4k)M94]W5ywfcږz )|GOj+fz<m2f< 喇 : R"a_P{M-XMW]!)tX s(vBSDʎe.ּZk]s&Ѝ/ '^[o;ޘk$V:u=*#\:[ \QI[?.ؔD;ǔ*Q;,`6A(y'ICf.nr'["N\iel9KW*DulR4!Էu.w*<$oJԭ|[Z$qySw!$!Lm때B-}v!^Wդ Ee?Rv?ȕsşp$=&2: ;M ! ps-gU_gz 6ܓn YcO7ф߶>%0 ȰG><II0JE:#IlT\向[H҇si阧Ai" e.˻}PBIÌak 淦{JH7)5:)[ϴ<:q=0uou"R@ UɛXޤ UJ3ꉉ֧<͛9l@M8 9˞}݋rl缱Х6Hsky񫩱 d13L>h|Ss 6Wҡֳ2 .ԆDOיi] gBTT5ӧANao 3c.(@=iJϿŠh!JD6cM'g LY'8*b>-˝LJpF7;u}~m G_ߋv|ǵcߺUu:Qr$]|v;#-D&AY_ݳ05qڟMy޳`Ceu.e촦yU*cˢj:cXՐ!Zl~}=dL߫;~j f8VlæGXlm~{Acv,̍wjsnB]l0Ҽr :( r}{O8i 7`O"ES`D8a&4a>i/-v:J^hǿ-ͷ`3}.| E4pW9տ_Xqz\=bn΋7?'cjcjϕR8F!Jdn>fS&} }ί g>,mp}q+N p]Ty 6[.P&=6\; G'f؏KEGpZBMg7V#w{bߵ{Ǟp!mL8[So`'(Gޗ8UyD'6pjּߍ3ؽ>[cFv13Wphڔ,wkر'&sm7)=Wt5+;ynEx'J ދ-=:['^ԭ߉=|G80߶6 kP>{":X3`%]{>f؁{u[c 5TM)򱖁a\UNcq*3lz6鱝[E;wH']+)[Uh(+9安VCg*P<7g)2La_a7?Eo+D|4=%pѿ{6a?xAD0VdO0ƽ0ùJX)0[ބ!m] ) ƎhSv=G+T.#vy8'{m^: cpu :))5h6Ϭs8RC>ǂ"#ݖoBs9؀!е*Mus{".gjͻlY}RsT{@N3MW4 + |s,~Շ ?ma% Bdì'ǿ3e/`Y05S\fxnLk4ո"w<4\ngRG-m|4?tReE+y}͞7:kMLF5cg6}nT};-1ȃ{LPl&j3f)I rtISbuߡը]m s˅Z./*;,΂O"j,8M/Y4VR 8\{v8? ҕz{Pbkv94Ԃ"c_уm+dY8շY}\!>bN  ̓/Ԁ8 EݓC^*3PMgg>%or(3Z=9.?^V=8]Z`K|U0*b2u T`zK[SU-O!ic 9'ӡNS8i]Pmen< ܧz"߱IZczհ6+|(lh ` !'+P@0L->{_G׎p;p#kgbKߗ>.e](6%"$_0Nj>t#S!L=U+׆v1Uzt|$*#fcaA4d `!Ұ '0vyV4 EQ'MH~fF5evID!8f|bXxM@ç'#9sujۯўgR(xb;/wޣTݖY(g\~ 秠1AmecwFCf1!%ػe fS!,t@VAc d5SN`jX}9Cڀ$H=r٤RjoA7GSW@yuC'稻O!pƑ]W][eOb¯`s_ѷ!V|ؿ;7Boɧ'lۇ)Cf^8;hxƪjUc:"A=Iy3O "1j@bA<8~?|Β qMw/͇~?cZ4k -3COڜ+T0|bz>ױ0#su IACc]w?v+ sd'rlLvj XZըҏ$u Gy[2pLuo!;( -'T6~AcKYG{[ ,N5UTQG忥Cc#@ Xxg :ĝb@_jAE(\  LB~D$UkioY*VwXm}xb䚉K? 56Ih/{895}?`Ͽ9y0}z~׼;/m>%S‚8:mW|CMCsYs:+(Z2\8S/JW^^FޗE=W 2NKv["!g=RO) }E~bL/@(7c ME#wġk,fڥ8j՝ ܜ{8r3^>ɵ8d  |BKnK3O@MuZf8N^t9k7(r!|WG@=T. Lv$J&6nEal5lݦO Kv@Wڧ-ØBjvd@;eg5{ZA5ȷ!ffFAq}j^H~;c9Oi]VYBJҽ{-1*#1m`)"BCهa:ךQÕ鿻[!R7փ6g/1e4n( JnՎGY1JnE\&&~QmО}wF*3ĞٷpZ t o))rUhx9ʬ~󂖑]cͿ}87us}^όx3PWhf)H0a}=O)hcMq@ C$f蟁5D{X4]JT yGujmj<|-/;*.@OU575? FN{c4:յ'b)ϽX^ulv⒟cB^jsX^$ .aƱg7v`PFY3sPshF~2{'9 .d'~RPUB orVP١p=2;805c^͎@ /5aӃ8= ДjwsQVrN&@ PY K1˹bLϗFvoBQX,ĿS^"(ڂo]3|[fV| Ik&G<5;B ~1ќ vlAL` ΤFxa 1Oe.QW^y;\o\92#m9\tkCb7zYK5]}>ƪꗿc͋FXCAlO]OO^NI` '_sHPca=CܦA&XݼeW1feC-$n1L}=T6XSmxIhvU zsf ))a$]3h;> ocH'bT%tiE>}~di)oT fYI lymivRzo"h`agVoXCV\~Rј ؋%u`YECk7\#iLqF/8S~R뜹ױ<'j ,CݡC:b E2xGh͇dHP9g&P~pmfN>R|8OWՠ TRRz%MlbePQU1NV>g-:BލtqZE?94^ikh2b ,֍peL΀`,/& 3vҾL\*jمu(t8i0a; i%A b?|jbwKH]$u`C%']{F0e8m8PwL.$^qv7禩.Q.iŭ+ågjpJ]nؗAvzc" l {> #XfudzY]18ׄ4p[|Nrľo'P“˲|o.R!V:RBF]@4iV"g yw%]>BLyJU ?/(O*itܐ9MnEKA,yAE47YC0;q~5h Rfrx_{ٹx;wb1 L$)8X,5Q]MdE6)X&3FH H`EGX'ew ^sa/Pw]*US39Obh[(8f*d]`2&_G%\n)6Pï)j-~AoS% y14:N1iV LF]vrQ®W(T2)I顬Aء?WFڒ}P5#l qn^+f6r(O?P%\GyMٕ(7OS=ٺoI(Lb9A8jK~]c&dխV򱜘X~.TKeX{Y4:)~_ώrO\uх;32hm&!ZϽUUX|8g!'Z56K:۱lkq7\0o o[Ѩ6=u;Ѷrdg!ㄜ׃^"WGJ@Q:vzp^ }醣s,qQ@Pmt/4*k?؁׵{mZ$< %,s ,R5#Gw64}?F-[}e *jƎ& ־h4[~~P3> /+&@sًރǠ&>] iNCk&g0b{/jni >Fd2C;:vдM*2d7֮!X]v'æ%&.QCpaӡu\sne._.}Bg2Y%l}{'v<{]6=ƃ+I}aSIKUH7=ͼM_,V3R [qP2ͦ6Î&wHdX܄q "!t{e]q*,wN hm_u~?]Q7z4j ^K0*pC3>=GYB԰AhL˴|kwe M}:h"+ 4C1F6h~$LjN5jtbcTHE#N'9}Uadơpbuqf:goƞ^Sh 䭶]#8\~F+(;f[֯hp<< Lزv\ cG<]|*`=6}N@CԚt\9=s(:sm~-x_B j~x:;J1Te45-\ v9ga fC\>T~Z rD۱_TTe2?i?h[N)9 1hD?]!PeW vSe gψ)ܽ.[m)t3'Pz}s({ Cq|hPж;9]%_ܡ%oX p6;M,@YPh H =tľN :ҰSKkt@JΐB-ە}/#QX\x?UcS9&~B<&R?V C6N7?j -)X)8NӀO) 0 ?]^;ȅC*L;(pJhԈW뜡b7~A}F'Wņ)-ZJ 5M`jÊr?-KNaoH%ͻ8;}8+.n]Mnkx)r:؟ByS7\$ޏCE-%ـmtxv+1Ic) ,>tQDe7÷z-+W8f (UR qM6}l'7Qu ;iH҈id b]>̵YUde@Dĸ顬P3K.L >CVԽ1Ji`[/1 d(AiqӯVkg| #H^`Vo_qwH+3@(c/~[iA2ˆ,PuxMvV}V!ie'Z2ܟԡ^ߤ7"t:qn@-חgHPZͨMsXDMPcyQD. S`:?tZ|`| ٯ]+ѽ]/֞zCny< OS-b.uxqO9 s8-NjceO(~RFl6 }T ol̥.$Hfi^rq9ܘ>L,eOz+n.Op&A(ϙaq|k{l^By! ɑ4__탐ݩ}O!b1~dɕUD {~7zLZs&ǡMLOjsHL~~Н2h!ҠyYr1erWCPϝ0hkr C`k}Pe] Ěo51g/|6=3@{]ܠWXeaXtbXTvO/BJ˓@8>yWchX{ +P0̗Uo$FhlTwЪ5Ԩ);{U_܂h0AY VGwx?]}Fh Kwg}º߉F!xHQ}"OCzaׯ `6͌!M<̩He7mfh;BU͓skP+bnCܺyipvqz;]7|k|LfD̿_zil3 .WB ]m/52*̰\R!36Wu!-&{^2jTYS=3"y:&98Aov@c p xu:2.,:q*w?4d `g^7AzE%.L"dhIguq*?/Ogg^L| 73B{Aœo zVj DƩ ә( EP<7x.:(6bX7:7ٌgCť1Xh|(.7ӨfB|bQ(Vb†'&S Tػc#˽jn bi.NF1lLJn\y$l'(K~yush1񠤴}1c3sA`Df0xR SP4n<dž>O?$]k[a>orvc&bcOl{$h)N>Epc*UPgQHK {Uw)6%$~'bonz;y[|J,v`w#bwez ڝC% nR~Jb=׸D<-0^-Wɗ]85vE\̝ϥgM l.N>OSbYSOߔ|q3/7g'g}}8cUx/>oN|raHzA%_cF:n}Vʍ8 cGOXaXГNE \^w SF+G)^}LHDfu -zt ZJMZ%#f-Dc݊O-ﱥ8  tHAd_WUz_~'z@&Z.ߘT1S S4t} 7Q@fy.Ȭx|5P#-n8̧Q7 'U-98Cu6V=8yGO˺D \JyR$5-š27|>@Ϟ ?3 3Z)?4? c.2BF@rsh3wp_kF9R?C&!:Ky(䔫U/9`Prx B,u1K򭦍K(6=v|=E$=o9>MehL>YHZ5#CwvfQh7*B:ǃ\&e@}ҴJ&úO~l NÊ3E@4sF}i:_A=6, w38ow%rƣ>찉R '80/$x reMrZ[XѸC?YtVb _rOPuC& &~jgtF'8;G AsǷ[` %;\4q$7-,yv@4dā:1ء9U{R@5I,PJйm+0,~B4_Q- J>g#,T&i9ryvpRtUQVK_ %$%7lOdhx UsJY+(|Lܩ3c*J{*r>:mVŲRS+5q:ں?>x ĉV:H,AWJ?<W֯`j&FZf/R:/x} :5ς),aq==3 ocBFZ{<_":@|`Xt_P?/S)+?XODiy╷&tT]Qzo\(XQgؘu=@D p|lQ[ơɘy[nؖٓix`&gOӰ9ASI*V Ms'ű!~ZT"ZӯBR*;}X"3dP=%^qXv]n8+䟹q~8\ sފLf0N>ƒ&.31@bQg1@h۞1[StD|#THl :DZ¿1n"ȋ$]֜=H@Yd"vl _!+8 HI:srFOۜCls̑#)4%}6xKr:c](#˵׏͒?䋪c}5^\-voa72ˢ{oۍյ%W"A|AԂεcË8 ܬZ#̾3⩷j JMEJ7]wxqT"N?7h ABHZܻ^в‰i#dRHs g 5@q@hV#֟xe 9zv0]އ\|\8m~;$LL=ȍ3=,.byK=`ڄtHr޹bTxT rSriL L=&zԖƃ`ͱ0ze]KN ӊt>40+Fj kgtmw?AAhhW0)8?G e; M>5 1Mnڜ6)d8tS .ABߢSh + f& l? [fïO䃗{|haA'-!e~?_(%QhRTy-g0h),0}[ 2Oʯg`z==׈Gm^; {%683eF6UE`ffL,{0,'މus/ A)XR togWCPw]=yc $T1ן7PrϪ.C(<^S{wS _GcaP@riCn1ӪGz&]*1z9dburߚ@H 迸 i~u%sI6.-ooCF9"|^GhҁVC0bZ~-a(l}[h:sUڅ5{!Ց7/l/ϽbrX-;h>?\V 9 BV6GHb4l"qqWEp;om9uW~%TBvA7gN/Y\H/XѬYǞy†ulvvIw8a+,-_b/ 1FKl; :o؅P{Yա-A'mZG62ā Zome+)m& 2GvSCSu^%.@lPTO yGT^ΦMi(z z=T^H)q/,5wXIW%0X:al =G zbXWN(h΁č%vetI< -i+\%0#asl~w@~R't9$ӻd1Ͳz<"@qlר;qSy/tP?,p WﳄR:aohD_Hq=-ZOܲA@'ϒ\}w6-&`Qc Q]t2<@T'eZj^ޏ3 wiaؠAӆod'AUkFsU%bs@tfH:;QRwS揄~~_oXrj7$\#[ Ԇxj!Ƒ 6 9kݶ8 9نMZ0gw[k跫F %QM* ­s$CP6q0KvsI#-GL}{Ж /ĈcP6)IXr=IBN'3sCf9+C|zQPx䑁y7 ^\`yRir^ 3IHoN _7>E/WuH,j|sԴDkܱ,_)춨B_$vp0O"仪,Xt;'PYWTdeѺŠ˯~?sm.hgnk4O~Q A=a*2:eu~3./aFXUrŇ㻓t6p׼D"pP43J4a_Hd=μVҨ#1OX5=v׹(u L j8$Pag(k4_Lz=s]ZYƠ#'` pVxZfVlV< {mogĔ3NE,(BRh_Ď6*4wv0~`wn&Op_}WW}~);ϱ%X'k)oq9Rψ}ǁY5dc}{Ì9n2ļݶrbI^{y -ˮNj+.TM;Q c7rEÕ7M@Eva~(O qy@(G.iYxzJ2,U#b}nn]:p[_8&s g9[wQ!Xh3oyj#XEwY"m]M>fkg4Tt ]D^Z:w{GbIUv[ʬ1aqu ab1!$Ϲ$#?!Ai.QKJl_p3l8ˀ}-ckmJvwTnƐ:?g9Y񓒂NaG($D2LkSTH8Qrpg^rp]J!n~Mc~yc%.=gj>+wmNҾ,e:K2\ޣX?iw|xc <᛹8NN/)4;Nb[drJɚ.Zt ϯ>L9)Hen)_aR^P>h6+ỀQ٭9]!EyTN(f;a?@t\h1-\PqadDZ6E ' *#,>9$SjvMۊlh.^&ImR%'b$ZQ X3c,au^EIŸ|U}MP"΍gvrGSkPU{큝J$|ϟ8R%+vP~8;G^S67CE;ldf?RMkyn۟z/\==nrBr R4hNMCˎpe2HՏ|ǍdMkJ_PAmWPl|Ykѳ²?[2UBh3O20S.0,3xbd bT7 +lNuIqaq {`I^֝"]fDlrxNgn`z3_԰zďqm6UZߜ0KǦe1"f`yV?+G:İ Rk:jh;E<=Ap}:PCԅ"$a-s|/T< <D?zB ~h|DLfđTM= N>p8uYH*B?1V ~= I=lbQP#AZ\ih<UU}HZk|NK. ֯A÷![Y^sCiZ )>X ɝ04j,ux, 茁;t2TGNc&,4V2{zSԅz;= $:&}E7Lv!♂?}~7n?fYF}ZgqŦ )`3f,%?~LF㸅Em=.- 5Εб9^l.UXE ,}M$x.ؒsX6>ҳbYӠ0K]ج<ʜn$,5b6ɗX_l >3@\k,V=a.uoB`AEhq$X]@I4hOaՓmױBh2v=Pߚ1ZUr0{L6z r+X?aS1T31`YQL̻͜'۰vY{B>6f`Yb_mm-=ܿݻSb;n7C2TI, ;g^tKm |1A*hX_s,H\xkiKbe0xLhQUy>>*@ۧG,7}xdW(˽\gѣlmPdy堄7.*Ї듅gb?|pA>l'#_v#NAl:S,^+9@mQ }%U]bgb W[>5Udk$#5]]7OOMg`qy8pdWsq4g?=f8.-6cEvmvoPYVn>qp+`sXL:( [f0XZ{hI1dJ:utXY0IF$ߪNX꜎x^6j7 2̣s>;;W0F/>:q{yxt)j|)@+?5*u)k_4fO.pBu÷ AMz»!w+|dv˳}4ՠnfq?h)y61d6k/_=D/{'9(a|Q7b%6_@e {@Q n;Τ@gBXr}q}yf9*סgh41gLf'cU%9l~;.\ʠ x[% [<BG!be* h ;50_G]bgY41:?Jx1(nl?|HOy4,\͆eK[O* b̿;\D6:ORm%  USBPq mgچ1JvL(~l~rhxϟ| gҡ"Xa KYX ?=fw: 7fEM0ALy+6-ǺX~\X_}fBT۹M;$e!s$! Rޕ؋ͳ:@<3D3 IsaFq,E@J[^V@Fun Ĭ×t ^@qeJ$?Kbw"1}D owª٥ӻQ?*0ٚązm~la3cQ#H0퐼;820AWickr9b+/K{B92Q'3hqf/Tlo>p༊Y] z1|GƱItVbw Ƶˤ "1KvvVdy [QtǘYTWXB O}##brNj@ކX=(|=fQFa㹎"Ͱ(x%:0apM_MirLCdHP"N ES Ti4M J;g e+^1&p 1Mskf0~~ ~&nhK^Qg~]0!ryi;9h2;Ԓ o^X xgOHY}{/>Wʭ3kMNu#1Rh@,}REDSe$IIRHDY"egT{s=ʌD???:zD챓_)nvceP,G6ok}dįdaƑǹUB\v ~F#h.NjV\|'r1~oN`u=X> 3n1ɷ|kͧM?"WӺ *GL+%%]υ*yl,pFb Rs{ǃmA? ]&w<_4Y׳ѺpR~%vҴ/qc"5oXcL^kZt3ոeCiRYO@jg@2p:xz^|jlQ˄k^Us-tuUC]R^hޤU(w3G_ˠo)&TI 8w]뭐_ZC\ $%}yfXaI#q|طhwuocZ,P5 >uc_buvPT %qF?{Q ݴ]U-H&;`6yc| zit&dǔ],xLӮb9j:f"1L9^My5;zS` vXwkX,a;/e<ҷ pu*'.) 8:|xw%_Vnϗ8 _boA _,~"3[%*om۠<{b7*ƬAٜ$eWX5.٣S0&rPy@ӟP`CKZEmܘEG*kMgK0ȯo=N)A >}1H@-~lR=,\}!bAZli0̴fjtUOhͰ{'X?#f֞W uq`Ԥ`14k|8ǽ(g{:}oZl_e(әw+ߔ*S2& jC&g%Ԛ\u: zІ=Xr c(U CP'BkiVԀ΀l~BCEAbs#BˡɿNBUιX tނPC("d$k%RjGOMei6Kl什QNK ߭g { >8*[D0oȥ,0Բ(QE~ZX={ 5\"=IbRJ=*҃zwK͓=!Ps H>ćS9p2kC?>x}g]IޏѸ^ C`d1CT7~x$(؂?[Զ`1!ykr{}ߋ知qfױ]J2- kD6Ubɓ#gG5i Hbw]uC8GNDڊN\Hz' [1Z$=ژ_P~~S~Tu ʯÙ<O4^Ӈh"!AхH4>wC,2+Xjy(׆ӂ$tyC>% 7+,Rrq)-?gNiL:t"7iүn f%7H˒hJ6mƅq\_Ob=>`pTC>5J҃JhLNpL;I~ gp#>Y.B?C٠"s|Xc@~f{NaxսcA?{S)lXaR}%tNz-_A?'YZw+bj^= חͫI!-iq79&nj?_(*ܗ/~0FU=DnGΥv?~c!kW"8!6tZxmQd7GE" 2㪸!cpX_!1qgOW  fA1*H3Rݱ9س+Ŕ: o a ة4'\==1R%ئ5Šw&yY` W{8SLaʡ7ّȞuKvsΏS|{)JN_͹W+yp9):k,lqi245?.w {a2KI SOnaiwsqX;5Bxil{"LRݐr(ȿuCOhK}@MJv jMa}"l#/!I_lۧVS&#Y0ѵQX}KN% ?0^.٧=cbvMq` kv;QEvA╩]7ɢn#BOޚTj}M)o`q S.z~oI#}h$ O:LmCP֪2XqS#Tш>RZ}0>o bPI^Avc% ;:,@;|# @5fAhZ-O b y[,E ̀phx5zb3~ŋ2yQ ihrͼ|~5ʢ .b!VKh=u܅C=_q16s'988mzf.8Ehn.௓D[L\zE4{_43aG'vU o9#s"ЉڕuH3~h.?*`uBYAAS PyӞP<5 =Ϸ𖳦b>'"@1׾SԀ8u?dޚf2*[LSXBIl 'QAӱʓpGP}AL OLl?cMk!Vdj(\P5wC:1AL/ЛGߞk@Myf5E$8닜r#cna g2T.vD%@ڨUkHK:%FɇcmM8v+}@Eq卐Oб+^\WoRC_hԚfTG Xb[HJyMeߴ|q֦K "`3J{i jz4β C鯮&׃Vz WD_̀'Lnp&M@_ Zo]a NK,?:'E%hh& M!{6iFO|P]L[R[,;<"y1t$CPI':%T6F`̒(U,/B}@%!+Lv>@ܦ]=!4 NS$0dz6C_69Wî *5(zte`6a{/_6cN5՘LfIBnPf nT_WQ䘣\Īձhi@HȞ#cG?c~Ygװ̕P+,vR!w@,>N9_\QW?OM >?Ytմ<#y^0r,H5ss8&_ʻÈScu¥{B?<uuÖ, (m/Αk8ɵsqr`o% mP~`3W6#gIp #3 H(!oX;Bގ}D{'DbaCi^hwx3NwUJl#`%i[ vܱ> >i  w߷cKMagָOI;R ("o lj0P aK{8^4Fۑ#ͼdJqT];-d\~挥%?BMZ,TU|[cp܏]*Ev8v$laǑ/T {{o ahC`r|0lB!~a0XDzU9ٵh-b=٭8\~kMHvϱ1Cּid*8,. vms&)ۗt`BtV0|$5Kmz8`zE_L/?f| >UHKbRLˉXQl0+_EY{Lݯz9gK˯kΨX.zOLXUJs{mݤZ90G<scE`rƒM $WyÔqbGb)c&~Q%)oPicw]l7A&/jij^?R_;_pkIo;TL{ahN+o?^h#~8Hc Og=s| řs&DxGjc&_:l8]+,5~{z0 /`z?GFJqZO_/0"C*ן283s.;LxJ&CA" 1*OeڰHޠХ~vK> i" b&1j!_X؝򤽁Mhp\~󣱚v+^϶Kp@C ִ>}$17)A?qzvn/4iK78SL熻&#Dy:CЦH=Wx֞e*SyG7 Ь~0Tv@CءQš49<2 U)+\qsm.(m܊0DđU%Ϸ)y_)o-ʪ|! m2\H7JPCVl2e^@ͳ saȟޟw:\-SwuKK9D>BVcYgmE)D ~mT@1D]9cΩ Ŏ;@!Ȳ9%yO4x-aF1I T+F] oTwMo@9WCu0yZ+],IzZpoyPoj~"40NmCi~H?"z E:x_c8y->!P) ʪ_ց.^_S' bS&VBa[gJ-fyv+W"(76 ߷B3y][‘?KU`y,>s{|Qh|ǞL]>fWJ57 !1E`,/Z5`k_ax(vGwP^O_W:/w!x*s/LJfI5e??0Ԍ; ~/<o[z7qN佐4nv v@BRzDg~,؆EB@WAX?ւI% J<<1+?]_aջ׏:CIXE/̱.̅ =LH=S5!s`[!.e:#Va{1'h¾?P/`\k(u{(M\S=K ', Fn? iek@Xp܅ +WiNp*̤hՆvCVA[Ⴏ$;6NjkXeL K[?o%bY??VcY$po2jڐ`{iro>f*~=. e}l$5q#? Cbp>~/b`uZ ] IƔzw=߼HNc}ߤ'imY6z 뻂Vu[_MvX6~6=RydnS)FRnCP y퀅8dTmrcͩ2:s^o3{?CaK 2.N>%ggAvˇ8*ruF"}­ zB:fM(/ِ m#{mF),Ur›O@e"(sH}& š G2Xsu7nwp)}+ִϪL8d1yǔS߮tmXA0 9% |bxڎ8> 5l:NJS?mbcJ)D#K?C&TSbH}5tpL]Mw!Dy 7 $ܡ7PUwO8_\dxVRhvhLo>NhҎ{伟Xh]J}|?dz \?EvKC6Y=LlqK6@Qi[ΏF#^~f7@B2ޣ؇`m]X䳃նq"ii$HlQjͣ0ƛ7f }a1}xt cGgb^5$g3Sx =Yȓ^pwFΏvߴL]qaܺq 9H*yBa(|6҇55 )|Ԥ1N@Wϋ÷z8^04𕩿Ybд_VSsfwG(2M żd|;>b?zZ8Y' Srzi|zX).){]__D _H1Nc1e.$ܰ>%+xe·X9:as JNe pbbKNZlgRQݻRkc8wv6>f}Hw8/OuXz0v[ԹJCώ_Γ;)C/6zHUU2QAmlӻo G?B;dF;9$zGS%!NNWqGA"0>\DF볱c]c8`5F46#ǟ8!ּË8`5(^ш>J|i7/DcϜ/v8H]=#md{,SI{PHew#OfGXz݇ ӣ5' [H:CB2Z(<Ϸ..oaq%[*o }1Rޖtq<kP|unˮ1-axCC獃~S')s3ަ쀴$!c ml\^6f~s̬=38byGL In,NY4a`ZW`|vܜo]9Ğ`LlX;2-'$N]Ɯ:wyH*.y}ȏ;k>Ήo-{ UiB/ՕP4zhXjٜE)TxݗWLeVX{Vl߁{6P~LKDg[w↊5(d6_L)2 {,D-=E%Sg~u1V:OsjWLû GevᄁIMf|('$~| qXbYn?:4B7m~N=+y>b2T*4jCgl[@@[˟XMIA> k@J HȬt6RܮK'c)71>FjS$K#a58;NPî48~/{C/|.i᪐W:K} NElc[wG=eQHuYq(7[GT ݉/gj.Ȱx\ϼźGvas% k }V<"0;k5`rJ6SMn`dLjR]Zg|ndurؼZ* 6=ܟPgؽǚixD8>}pֹόv\@=7Se3dLû]t L.9X(#Qz>q\.Uˇ*BlzmqSz|y&0[;cXݯKX|jXY|r5S)8u;QgX-͵Ksؗq7G7kTS-FTECO#)?}|>:<8,l :03 }vYl k OMXo=`,21< FK{y4vLcð]dT=mN7.d(Wv4al-4fYa vĎb>3ީ[0!a7 < |xj\ >;/+FbaWT5 'i~ W2Xpồo6Ca)ߴ$hsa"'/*1ZD OvavS߅;<ޢj Y9/}noFr=G҅d}Ս ;8{! 0 G,؉wDBWZUop,"V>Qp45Nc MQȒz.l::Lk)2X_͹ݺv@H.8B_C6(Q!4{ִ1P=FקqN着.%I`NeYM (%\ycth%IeB/\n`(}|l*p~^P6ġ+ߴgCn3<~oXiQQ"ɍx wR'w<;js{Mߝ:(.|їCHuTRWRC>C:+)&O=bm{>d𼬀Re?P"# Ղ[(ɹ(ijگ#М\@tMx)p4jD[*Bne7܁ ⾤8fqǩQߚe۝g@8:NOwNF_PV8}yU+ڐ@׹r* ΏU'De|bݏw.CɯkCM[pQ;;}yM^; "җ<<pǾ Җ"Bߪ߈o|G4T%!J CX5e3|ln:*AtW ,7 er·B\+,hs+*Z:HՠLx hVo3] @asm7vb@IKP4K}FM@WEY%sjAEw3x0k Ot J߃Jiuuwf}t <~{xϸ ʀqs & @Gd-<Zc\[5,?bʃCm' ɛ;h{*&xCetAz4;'`KbjS2@1 A ZGWt6Bm$?MRDS] ^tǎ-31 TYk$L_8^/nO@_3{Kɇ2ws9w:>~xܧZ|}|26Gh?׺dR2ZKEBng9bd "M~[ɀ#qB}LHx(g$xgK GSӬ1?7*t+/!hc3GZ](&2h64yK Htwd unѢcw}BboоhF*{) M'iC|Ê  3>tg@ M+v>gWh⛊/7>kGpowv|}Tt:;45qݺ^)1Wb)oƄCeΧJFE3X>{ֶ v;Vwz8,z,g?{M:ӹI{_?tr7Q~9}K0jPUG p =wqloB!Ff_y#//Txw7i`M) ,ȼ}"FŒv/6IN&*4`"N5d@سbT̯q6K=!?jOY64F<vg:_&L\{L~gA2Z*w*31ga_a2 7Xpq%I7RG[iu{4`+ySN'!@-JZ ?8_";3,(`q\|=o$C@f֖`(S/ھWSd0옽%Pm,H|~/fKzg$CJ[~Z=-Ky<^?ޅd?p$dXKAz{n H$@\hz~b .~x]4T|_OCU؛Xl}=ϖ͐WO^DaJ@cObq/hqH:DAƞkoܶ=1hҎe睯QwC/Z.1h }jG_<&ߐ_^2,b6P~ >2Ջ` GX_p?k}âEf1X/3oufLJ58mF~_?vW϶j sҐI{,_zk*f㋾q: ߰4S98;/V2|9>;:Jvxun|?g= gJ4N%/t?.'C\ }7]:9#9gae`Bg5y@Ş1/FVKm[8GRA2'oy).\ʓ8%~' 'CFJFΉnU3ᄓFUJ6B`}fS moR_ Ljkbgfv*j h(Kހr͋[{)!3Rɛ8mgn ¼/r$%r$^nwqd|!4$?vPjd+1!ά} GmL~6{2H az_JbRltw:oç)B @ʏK+{o*`㯮yծ`:N41η} (?S^{j`9l&1A{sHx}G3f p1vt %$ZҖ9nloknJY-2A.>C3j"f` >gbhi~."soAٺ6\W9.8|cQZ:'7f5PΆgֹ5X5d͡dSp4i¾*/L}U A@<}{:dDqئu'NxW_r@ *5? 1y]a+ Y>_;H|&idqk)S᛹gXJxl *Wy@lw'qE,%>/- m2ÊAy BsޑMz mmn_&~ ҂$~sׅN9Ԍp֗ܒ%* BnF3k>} pb .n>0X9|?I[o_`@Fyk ,AF3ӛPBSEh ޝk\́߬>k+pګxb`"=eXTa:RJ$~kV_c>5ؙ?J{*s<ބa8z~e[ `mԟd$҇䝝rϾlY<4ksr}-wO]" ,_bC8$j=j^}1KMO޿͉<8 ʿS#[QEYD[cT{͐8yL*rnqiXU:bRC]Lٮt*o=?PuzN9#ّ)}*O0_`Z`ݩP"{a38z$m77X'eYyVCp)T?:%/:14W5IK Oc:ARN76/++BX}) p$_HQu6_XpSGq(:+3N'C[}{Q/+o0DɍW~cfW_ ~$ q͗7 1ZtiYv|9RqGXq>oeY7-a it fG:${O`,MĕE Rg"c]M+ 1h.ء[/玎4 ~+-1FXYZ6۰$-K@p&?t;P=i`i ,kGri=T |+껳].zZ;gdGmCzljAr^)JѹQG6|pz>y[$6Ǟj6X"Ib&mA2{&HH ߛ*.ɻ è)~a@|x@z{Wײۍ,sKkn^V6D9L.#Wg(z/Q rڡD4Q6N~#-!Ĕ֛\Yg!f8Au-ŌX{i)EvT={J=䤯`Sll(go⣏Nκ-K[K} м0Z<> TwI-:veYⓌǼ<NhNM@g?D'^u*61t6drKcFmYMtoܦ $ |Ρc*JuC\?ɱByвN=> :{)oP ;m݂ g0gT ,^݁/j%@˓p46͙8 ]&~ cx JZ({+4xu~yleՃ$1Pu} T6k@&K;[`-ǓgDL[r; Z!:R~NXq-&.܂9TӉ%&c$F /A3ۄnv{k gߘ} (;d>b7vrs5fOs&K.FgȮ?,62EyvZ?%: 8A='bgiE\-`,u?neкT 5#jк`N06 m>~YF?vf!*;*CZvĈ{)9nZ}6?D7ɯ} EQe`!kdFXdux\[MPq- >|uγk{/T J҅P&.7CIuCa o-2ZBg'Ywrz.5`w15496auK,5iݷ }kLS0|b)F.7ғVsƎ?D]"bj̖כ#Q##1b{3K P|l=:}gI@]c7b]4.w ۼd{. 㢀>|5*SB#m6 YM0`27&|'3+\r^ìOUR-`@'Vt.aF76޵NvZ_pEJovcWmM_,鉳 ;vkV5ݰ{Xv; lwO\$X{/ px >.,u'',㹲߮|;e쩷,xiY:U1{`8ĕY*" GعL^m@1= j_ -%WpDB glk(t1=^uq( 1t H`Bdzek{Ś\"+NKw?>[ o5i*90n7;V0ghsK#t"p92$xpR V}8ff_髟=;.[pP6i~Sgfa.t *-'os!oŕ@T:y Tz oYtS U[G2FS([_t2]V{I@e?lYàd}ZId븛 })/NCgVkP-ƞӝy!drPh Uh͟Lo A;inh~vjG=4ޕeZSw|Qa)MߥP_Z)U=83Fet\d>ew}Ga ŽT{Cx]?4>+⭌I@w= h&yvI{] bXLO Zޕ!acP-P3 5dqą9I NNy^A崠/FJٚC`2`7mbH%0I=I+hI(5aS>V Rp>m!*4{?[褸ǃqBJ{0"+2ϛR `ĉr֣DXw :%]z/)'I _m&TeyLB!,|X( 4/B8$}S1ջnΊv #աbk77ԛ1Bzi-}jrS M5_oOOC-W RZLx8?'}>'ò3C /O4Th(nٯJ??˂|lXjL$:4(=o~_U{f+d\0* t{-Z a?PF^?-s1AϝE}SL;EA߃4;?X>uk~t4~e;}H峐=0Cg[uhԏk]Ŋ~tc׳Phds"jYwCQ #-HUmuƎ;r(y s!s:;ZRKשfqX~yfkX}X̕uXh/D~󽣝t~u5NNn V5cz#!`5Kۿ6O S2ABF:W>~cIϙlqodm=<|{|ұHl:.-~{9Z{)ye*kآpJ(8 m B.-+5He^fB >j/kX>Rw`kPу_wx;4>IZ GW<4`{{4|V [7KaS![\ 9#5&V鍆?I&׮]?FKQ7ceۨNY}G#r kLz@[ m:&\S~2ǍJ?w+Q/pLzRR-k8 n) >J [EM黸пOWnfdN x}fVi%#A ZzsDޞŬcu)w:a=-w$U>pXTjCa=@Mw8[z9]ƅ$͵s@8Kx.ڀxY  j`kN*7[ y5őzVv*Bl?kXdnШO˚ Klo`y1*H,Ǭq-X]09;o/:=V|s 9e1M X貉4SOdo|'g5KdWK24rloc Xw hLuI^ؚ~@Փئ#PqnQh븫Zoі^{2[3R)GILK>W#qiX[KGJ5'Lkl~dI,~ ONUS:gM.au/cu o_IVοrh4*RG2&c7A瓊u#Jo͍!`uL5o9*?R `wP1q!IS _^,9֙ Ơ?X\\J´y[:t:4fz[ :XET0x"2%uJ/6ݿ'xmJMɍnͷCiYe]DŽ]=.Vg]Pbyo! D<4 Y%_B.}ؘi07>yk+l3_gﶵ)lE1rVA%T k]7~BΒν&H;` m瘇 DޏP}Gi,&%mt W?9Yur 4I[~̻$$XGn Kk󭣕!4/dSbP8{٫<^]vN031|QZ +m܄I2cUtE*\pNdh|DRj,xg Y_¤?Qi_59\~M(>Uܣ ڭI{l_<ĝ"~=y8 T}|v ;HB}Ɩ;T q5|տϕGSn큦!;79s\$L>z%S" ֜R/34И'<UB:T7TxkCKSiS&m9QJ ^]ՂukWؐ-38f_R܏Iόaǚ^i$L ,>j bX$Z۔ci{Lg;y&Y*6 m׵܁ei;t}1~ mݙǿ-%]]0ڭʎ_PJ Ĉ&b_{_!c^nb=`"/.'=2Ȃ?px?:~=9[U&IO~o)GΖ5agTJX0jk_?O sֹ;Z~^QCs%&K'V:/_u:48 S&CR[s R߇0*~ӅS{/ ҞPɢ笺0[^($w,H ̀(B֐d2[>U:>6=y6ՇsWmE)0(5$ {Y~;zbiA6iۘ*FY{5cӚ_Km,:鳟) s[BVI_;e>w%:v7̋aEC Xһ+" rʰ*Ԟ۬3YB2ë?0a_CXPbZmb} j}[>m}{$Sx 40˲)d6x[R X>O??.ǎW_,\D4zX pAz; jߗDrlCS=&Gt4+~hڴDŽcMo\ꄲ[v_بPYj%rrCo3r'o::ls.85{@:bXi1!Bœ DHnf*ҝQSEEh e7}$-ԟ8(R5+q쌎)6ylt5oX7+OEm1}:veQvfSF9tèaG>Ns:H5{,:pmW$|U8'x;_'vY [A/Ƣ iUǰNUv՛Zp,Rmcg({u0Fܰ^A|j PnNoZ oK0rA`E axYhs1# '3Rh<8Q2y`r\ԴOԱG:i?+Q+o NW1k8*[Q'ҙx^n7aغm#4ۿ iYe[`#OiF ?_d n3Hu|XcJ4nH18N}.q>  &ClPY>&~ }!aZ8zыu@y4eQ[E,q_h-rB9N91uN>~4|"H'{1/˱P{]M-JbNfS,i9AR`  {oL Phw6TЈv;QB hdt4"y5)gX?wsAꍁW0_ց$d\NYӡOcV=퇉KG# -K1߄JwfL(y<=7KЃќM9whT%bS {\Dd`z3' Hޤ9G >ă}MA[}2RkI@ywοxe[EO63ZB5VD tY9G xC1KĤw%g1"b+5nk0V MXɧ\8| "r{BXݶbEjt9Ï= yI'bܝDile4tav1!,+W;"1#Y.YS"5N쥃VVOQI`hJ9r+:𫷆BmE y-f!%&k@ѣ 7Q8'O58<(WX9VEbg5F* mǔ[OI!qDR Xgto͑n i=IFt6}6=Vb|UzO"\|ݠ /& yzpOh "=]v(DPE~Mڢܤ@/渽yFZ_SИ=y#.ޔ j'1 F'OY@$IHV5~&o~k 챣/[fsBmCz@r۸$4v:mT_Q%]u݂!eNq1;} KDQeyZiLG+'~ś@^ڹ7~ku- -g1SliW'[:&7umK, 4.!4v؀Ld7Q\aKT4-7șBj -뾀6kzJe37z0'mQULMy|rXrc5EhV7? {K ҳk7 dJ,}wؕX{D?V3Ӛ FRI,8y2BoMN[y7G٪f|^Q6־|_ɴO|53*e~ѹ̭} VX9Q勄-V\?*(հؖg/u+Obw. ;x# &ƄBK``!7Kw|ZO)HV91 7%( c?-P{K_K6ՐBUq㑋+\Pt.vqyR<:_K;6ȦLp_!l n\O1QI,A"tvQ>7ڼ{)NBaӻ\cv,6?Qɤ,C;O폷HwƪR?q?>q&IƎ3.s.տ[i 1ibح?[9j_- c.-fJ>rILt'􄘬*pA"ժ@R+8>Ո ';c::\,TeSU߁l4-Ά-|zX`u;f^MŒot['[k\"{jηd xBHy #/ B#Vy(K_Z; cՇIf/!aA ܼ"|zW]{^Bץ #;X74RY9h%Dvkۛg ǹ(=tȊ js(cRGm!ec+VDSaV͏>,~ =/t;7droMa_E8gv):pf}sV^+ /T7QE%f:{ 4\~%&|X%&e>_J5sg.)7X~ bo.mcJ78ɣTB_m!pԌrKXGȩ=wwlTOl*i@f9J\[Ok4lTO 3ct&'R=0/8 \[tj!Kx [*>ړ#*X,-UVvrJ,џ\< .8!QLJ$ +d#^}b7I/]O}/SAJwhqLtw#QB^N=)ذ!0[N~ 7/N]{{ }A)BGCcXOr8 6:PIkX{Xi ]baK+᳭(Yf$U16j?k&/|2ҊFQW1fk{?Kϴ=z--?1o`j %HF"WYR.4h>j C/cG̱ޘy0rh$qCaGx\N8Y!M$ f/}O\iB6m-q9jF)cbʍO)¥$w;U:iVqc8r١&@pL_{CR~F b݋Gs@d5J>$N -6.PEu|U p/-#Eַl!Z=w|f V$Xs[RKpN҄6XZE]Ue%!y؛C!` YP%|D,J6 dh @CgLHFs63K~]e$Ė(aߣwDXә!y ƭW'TrD:XvJg ugC쩈IMT-~0W◗<RM߱갪kD=1vHAC宔"hxk(Mrj5Aos!Rm166v>R|C(9E>psmndbOt;VZx*QA4c-+>w):%skA$Vnms.8O! ^RACc8n$fXlQ{ n{cZT#;=16՝_wHxA@8( 8/m6^ Z&`̃=mjL-tcu&?Э>yN+ BʝQպil; `m6pІቱv^LZ)& GB8w4vIj<)oѫ|b3Ŷ7^a7 ||v\""g\l4fwH!2`\ fkwJ?2t@ro-h0`*n7}d;~T[Q =ڏ~?pTu.b Y+˔<  NLnr颟0߼j6Pv*Lx QFRm;$H)G‡[6ytRC+sU}zNuUeT0X .Fl:llwOiȴ>uϩ`[ߩ<'3;,&{'ĎU/oJƲX,0D =>19\~_Cj=yM[x| QZ\ 胍$4o^D ᐢfO +/l/n jдfIP <һn["*.J1G =BAwBÓP)yCEX/(Cӽ÷TYCe&<55rMwRğG : LcĄ&#ᴠ+29s1zzjw}?0eVBjݟx]:}KJbU,D$|-z5 EYR {T\ej\j {Q^b^ρW hS[蚴8 ޾0lH\(ZF%nDcKs:x?xH`L!(^I+9qZJdG!fx+~ym"v|59sksW %B.E#!i1h|6O1/š)_du{ Tbg373~];%-Pz_8v;]+M>t6k>?w~'xFsۼ]ؓ]Y+uɷCk2F!G-  "-# Z.6B.u[$?;._ѠPJE*()Ir6mBJD4{iuw'-yy?5׹|]9Z$4c#%c<˕}X?ow OwzaG炉Y<=/ž\A=02$w& |x=̨2S'A1X-Dk.X:~*x;э:}6i{~1'Nb;M! fX-R;rb<7_BR#϶zNjۿDhg0B;T-%@ G)9?==E%UӴV5?>^SA\OuZ4aܵc PqSZa:,Pc_aPzX 6R Jxn3s) !ZAoC0䶚 'E.SmsOr,Mj *4=U F`v Y*uSsgLy>B ZUl@ h0vǜF*e/` s>P5JaN$8yMIF,z\yva羈x, A(tV\j=4@z,O`{meRg8" w\=*$DtIQaQ|iA!g )itCtѺ_ݥh2:%o;ảsdv}ic (U9uķ𰯟 W+L} gGXʹэF̡K4o%bWBn&MIJ]ؕl写 lO,:v] Bz CqCF?'fձg#&O?YV?Y꯿ cVy9ALM :e H/AAA9NqMwTĚs>AqD%F]g e70݈ doLߏ>ƨQq;#^|K=I_=~ Xι 7־{BҜчXxT3Hἔ=N=9:u(]*~3`fif,{V'Jj6l_ܿ2-a43m>Z{Wqj<* f15@P 6 91[SXFj{TBOaK`=VilN_Ol:cD5kdf劥~2cWm}+pkFZc0F̋Tٲq;Wul0;^s>MG[&rX]vۺUx Ģ}v"lPqXBV; $nٚ}HTwH{ D2o)`Kv_2v&\k4 oMWSol Bs"Ȯt -{uG$UIlZO@^ TͲyﱃP{Xә @xy?X$py]KN"aM|L &MTu8lLb8Uf6 g6.wE,k/q/RbcA`)L6WA~{@0|woOc'oC[Ư󠊍 <|] dyz3F(aPꪌ җS16J ~bg;aJ92o#eKsfu˯z7g P'X5$Y+٠u_LKo~vtc8l8øΏ٣H?yW ?fB9֤ W=o] JV2J=s#v)c6KI/ibzfݩj\ṭ~ lo]BGA--r뼽1Z_f^̖'ʇ kv7((%o8x=2[cBl9p >'UBnռm}lQ7-}^ F~2`ew|$$z̢ >H;'ƲؐkyRlغc%-0B W/':N@sRbK@Ҭ1 >Tǫ8zQhmt*ԗ2UM6 GT74HYG$̱]i_nj9Z{ :E6RNq@BM6<2kK`-5Hԑ}XmoH ッ`M %Ȯ81ØkO<an_Nρhi>v|v.-k 'T~whygQB:#cMsC%]0u) _= c~x:|)ZMZ3q81Gb{bJ'||La6 ne(·mxڦnHM5c`ӄ~g[>eCצ0~R:a @p%%M| YW:na_^]%0L SϹ)U`鏱E9BI-$x}x͙.?4 `aiA^ؔŒ5 VH}ˊP L߀0GvmoDjh*ŀ'?Obd:^e #M.ا#9N0Q:&aUf9pxjj{L1H  MsdWau[}I@ W):l7w%Kro| CC:aHeF̑Ю; _…w\4?h'`e;x /OME. :T=]tYrk1z0[|ei' 4)Y#8^M&+mXG8$qG i{H5lʹ\W!VF-W<ՠʭ=LNX5xr-̪5鞆›;z0co 9T^]t/ 3Teijn2.(gxi5_ $]쑧vN8>y:M˒rD Ve zzqapLdLtg(p 3Ă~_;2#5r?d/G 2"T`̨,fl`γ}h̻' 4J:I P؉1*h䠌Ưޟi'EК1kpfISa2z][& H۟ed\vkA?~W0- %k;8o+L+Լ`x ƷDLOݳj)Wp&U\{b!Q_*mC_槀awV9(K'I{OFcb *XpOT Nс7gs.̺wFDYM^/9U?2Di= RRTD_p:`ki9 ?9ZIT5T <3WAXK4-FYdW* 2:v!tZ@`{g8_R$'u[7nOawZ'10ZlkK/~^Jkê/qOSAYgmy'owbs=8R6닋ޏE-a-Ilg^Ɗ&>p9lxULou 1wQ[F??rN}vj(3bk"Sm%퓝w{nႤαcGqXOb)NPO}߃->#7]SNRzsJW}z ̀}Z( *LY C(]}Kщir^ R,z~=Xx | 7b ŪݭS3Z钯ܠ5$i~ȰD/HTc'#ψsk4ZqZXapy(\yS*!VE-~3g5LY]g^ШrB(f`*vIa7-̍yώ(,#Ay%F lQ oS`cF)m(fk#z3(q~ZUNJAEc;t5vZ ИY# S^jd?wtɃdr\잎7ʻ_h5Sw,hsUE0Twj!L~A5sǟ ?*mԶ&@s h'Aib'Ȓ_2&;_ݧJOV> I ;%Զ=.h5tOEXY;(fJ+`p$NNLq#4?(ƪS{W$J'W­0䖌ʌ4хVoohq\Ш V3ԞC}2 VRrC(Cy/]Ro7䰢EY n"j9;t])7WC!l%.߮~\ءG륈\ )}5\u z V3pHBϹM#jZ!7aV@:P& VI>-2K/vȄױ07`a v\{l:Ki2g&VtbѼ$xvI,O2tK|q0L#݌ܨ*a|%N=䏼zIt6BC?][%(̟jBqhc,6sw.(*&E&(í״ܡ{9cHǩu d*:_uR<]T:oK!cq?mS~g*բ8 0'PKf?TSuJ3p`p'v3hs{"- LKw$<_bЁ{ʶqo08L3VkjR#ؚtB!Z̳`K@y66R-lۏ&)/׵dP~衍F}VP2}l;ϼo4׹1E lH# w8/g=I͆G? g@V'ِ1WE;kﰽcq,džZޘ`XU$/|"?kvuGQX8vˉM+K|4VM-n,Vـ[ՊI=5;apVľm)5lsɽڥZPPcğ\3\КdUʖʱ6}zbz:zsRfna؎;UGUd'%'-ljD% },e_U5fw9vHC _[`~ΔZZ߾MeQP gi2l|?!H޶k;h^Ih 0hکKӤ t<ܱx@xڌ]SeO*ꌌL.X u+]WY((L~wZ۟0TA|MOJqbv˱)Oq] %X(C o;fYf}b55 k4x>.L-"##z:CU K$_ĆBVু1OI$2_’s䷫ޠwH~H/Cvcch^)ya Pʹz)__R g@ա}w'5vQjh-QP 肎2IA1 b\hT"_hЭz@=)TFnx e7U"QH, U#]F+06+X/Q׈̡Jx-[=G)e]b |y }lmeNc:-y/D/vr{ ]CAq5>t`Ŋ,'ֿ#h]S iVQ3 -b5>wH ]=18O2R7\ο+.+aG>֦Xc=M$y7jڗdA+$ 2>L!d.bCw?|K MpNPўfx 3J5aqu$<ݓT٬k񘚾]Sj$|rOa V$egL:tmA j|-Xے㛼ww@%|ޟ90>6:~9nPB1U 7Ѯ]F 2)$Qkaȓf9?9U"K?T U1ؗ [xuo~}#t/%69sC@/}'1"@>l1~bOWu%$Vvbg:>Aq1!"4뗧硁im_u.3)g2 ם1pvs Aqh4 fHٰR5?f]TRtlH3= ,]'FE3=_[Xbr5'cюŪm?]UfYB._- r#=dY} A;N/C(ɓ^QLTq 0}NL}Xh[V+nkbo4}g0FXvK6|>}zRF` | ĄH CT: 1N@/9q̣ ,\)W@Ia':%^ s?#]ˍ|0f |ݗ-ц5D-O {ﵭ]>4kHŎe_vCBW1[x]%c5"+QDjJTRG$/`q^bՌvOX\ן[XC鋉RQobx"÷.[?qy>jճ!wf!l S_#4 n՞Ɖ*T$P쀜IXo>Y%/NJub#ip{;P9٘"Y-*ו5e!o/v2||l o{/!Al';cyi >g((đUVδ7Xʾ㕅X.0 H -<(!:/]]a)a3kK8Kc7YyHPmJk\n:Y63tm89q| ͎,ӏHJ'U0:͆\(wP΀* ^G2;~HSg4<AqIkSj3fW@OP$\AGR1$H[b|Yz2gyz =dYTꊚǬ1l6k *X9mh۰L{UM|zIPz@HVN$2%Ia. PMzMlo^Rc J]~)]o\}gOI9 u粰^ $iaHEMȺ֬Jтg'.B.Fx$aHjQ*Vz3 r>Zcw>0kq짯Тq["_u)*>I5%Ȣ3}]X@;eLKŏy.J2yOM\%/; *ϓN8kX񋖄Lw'[_ &Pj[x=Pѭ©}'B]`u,.}(\Zmx?= QkNWŝgZ.d[u8*LcbsZ0#03?vA ùʄ_#Is|\^QRV5]34~rh 6 6!]~jn TY9wi ir޾^%؅|NSVq"󌫕fJ^j O#!e먝yl1|r~d KꏷC0gިZ|z kh0r <غ/p 3vCbr}hLѡ[o͖WiiW#;Z Z4ew B{ݔ~Tp9j {MFfeߠMXͨIJɊy3th2xv Si J<XJp,hB$2pbM7toxU $w1m? Y8( gx01,KpB%,v|=8С=;đ{i+8+E}{EQ,֭SuJVFV rjm̍{6DhpcuhN_|Ss sy\.$8]sGn+hZAb2*oYzQmx bj%e:Ŀ3W]~Y <4Ҷ=2XꩤV繌\JXY',݉M.߬OKUÐTTEEA$cb:<7tb']>߿K\](ѹW,fKxepcD^~NPny Z+gۓ *0;2g,dGS,hΞ;1<f6\f$+&+:5!+Ck!kgj^yMATpAٍzwYO]=o'EO_/Ǟ#_XXAE\I ~kDcϑ||D6!עU5Rτl%Yy.D4FЛ}} (,\U^3kPKj{%6<wlFUoQbxmW gUTKM5U t. fЂaX(s/`OwX#U*%z W{ƿY6{ "֜bP0YqJxćsq}[FB߶{+jIIKrǐIAsP93cw+ZIj6E;M¶0Oor3jj_壇0aBB~,j3 -O#;݃H=Y-}X.Kv,B0G"d e`zplNlko}{5=f>_7#q(pdB *ݤf1w>z>=OA?|K@%E{bA7!#UWRzZb؈ӭF0I&, MU&|IϠstR o }-e$eBrcl"rlQ:=tid)y ;Nyj`I_YoHx~iVǷkƶS)l͈#?Qo+gA_I>U5A~'QAꝥT|yHEK?Yh +NJG}Ǻ!Zڊ;KfS>PymU ƿXP܉>(~9;&Ǡ1gs dk/3yDRM8v+?iaڪ bjium'-dOyCʅGYm1G\wXK"ndA7bR_$( 5~dl,搻 Raibt!z#ᩰ;p1!H`2Go 2ɐQF}-%4ZM/Sn턒Ҥm<mɌc ad»DVMJJ{ZCz > ~n<@5rʟMP1V-A{]Pbwcʕ&jƲ&]`mWK!>k<>7QN{^Ī>S6Vl` *'3`EPl0uNՂQn8mҥAzPOb(iE= O ﰰį@F7c:tտ`$ĮdooP_?6kR[T x#E8p+ aCXsFX$dK Dz.vsrG):2a._;uDr7cw:XqhInq &\ ތ!lX 5\KkSD,q1yg`pi :@ vԒ}d _-9KolGon}N }SC./rjOH.dn_↼;C=&$eȳOZU5x5!ogE76b˟mU)&eҌUcY# :Ardkܮ Μ^e[4lC.lxuq2`=cW OyoZgk$lxK#=^E/g/靜][)ݝr 1H_ۥ0"?pQzH%v윅ڧf=!L Jc +_s%e>xpJdڑJK#8*'i 5d F&*<|爻.@Qen:ԙ +ުV8efַbC4NQ`z3MiCϓ&1V6[Gp_`eqxMvȌ xq .7ΊJ[!}z;-K>.8 /nEC9G0p0 r;O߃L;we0H^G{bu\&IÑ]wu} G8Я~;^Hơ?`nEoK5t۲W(SP^|mZrˎ| ,QBZ4sm"-c2t{FB-{NZRrw@M)Z-ߢҧ%z,df췳\WF6"^`2AvfNH(鬍yԭ=!h.?9Vi |#!.ѢBBcQj=knPp[v~;RȩR"}T-N`_Ш2Ƚԍ[PH}y ̾z~6ZnǨO65,k\Ug!+N3fZ?}ӗޒ4r$aGﰬ1đgXS6s B0n BO;M_}2)ƹTşsIYx%$KSR~A5 eè},.2T[\{9`G|8t<|i 2y9As2fF[p\9'Y? C guӹcB z89w=2{N om 8"6j|qǿ9~l@ͰG!Go|2T~K$myg<<;}x)-oy\ĸ;Ð-»#=ʏu2!k[wX7Qp S[H@K);\ qް6CWt׽Rk:W>iv}V=X^w 4+t[h/O>W;S 4%T1@BjyQ6*%j9piU [ZE1WOe&,X{msz*ΟjPg,>f q{ [EXusk+?nB;-Xѓ/ :Pcꁁ+70h[P1d&XO UyK-#]zN Z~CX:KH]&:DD9"1=;T8+70OQj!Ov;:vvmkuEg~=s.I+wUJCPԇ=2~&d$z zX@Hi{,V?3pw5gsCхfhe"#iLa;k?~P0{RgoYMsl J"n;֪-_.3M$@9 -%Qo$/ߧxSHq+CP4:x/jB4#yhlX"owi =!ZSҢƳqk硭.He8Et-\I\{Os7CLf 4oy==ۄ;+EgE^_}țoJ=&5G"UCy_㒟2}j1ك]rK]7Ƃ^KS]s_SfB+jM í7ohSohǯ1Aox" Zw̮8u=6H|gZ' #ɚhm.zm;2(:'TV|vؔ_ȶێ 6I"O%j4_xv<F)7ɠ<{<YU{ fK~"G'>dl '~/<%|ȅiMWp^6q?U4 wAM(4Cxߑu1L%wLݼ\5i%] D<g1ZjNw,^$ A-nJ8gWcӋ!{Ф|R^3.z3_(xv|o+T):fASѻJ{Әi =8&ס$ h 4h#˒vACS{fਖ਼&L2!?ߛB\7OW҇oq/_o+0dzJ.nh^ѳ RtfsIr=Ukr$_+8@RMb?)AZ}u3^@x H_f;{^^y =,:+BT]q KZBy~lxzvRu ,#F{|i!萉Y~݁>wgay}/ud2J;K%J וA,U~~3#dmW.$fC+0rݎ}@̊:/0BV^}nnʿ<08 ~ 2՚}Z͙6h٨S]\bC!'e0K+#& 2_mCWWn|L$0ռ+md^,?tpVDZ؂>k'%q}8=6;<ł3TKBX!ƿjb5_YW81!p ږA^x$#nߜLq CO5JW6FGxuB%tw \ޞ2c!ϼ!WxtŻs R3^^IMw]} yzCyOϕQPgvL(OY$p*=e6 ]=~IW(qƴ@9ωwǒڝ ! ai[owQ/S{hV]~#m-r}྄@ 2]ײ|ugN9H#%:t3zߏt%pD$(1VVB|beuOY`ѣ + BXsMOؾID݅-/:y4'mT1Ljɚč%c 1]"l '`7Ǐga&Yfb>I~}Ч bβ_w JnǮEP]=WXm^tV(a4lÈ2 @hAg(V+=Bf1iC Hw?}6~ АKz@-僰>3w_~,}d%p Ђ-[i>A)hY>T Q~#] 3>DƮ,p{ϼhnR" p>9#m'wNl}i41|Rr"#F;e &?Rˍ3G'|PCrοa3+ؗs4 3±̆MDkU2)~ ;?B<;>׀j$CN{LHqI٧~ǚΎIXCe#B&cţIS% SExկU*V}{(+IWzaͷvi>waVU>aVg}-d1W|FmU=KtҊqĭzsT68U>-}5Dh*,8Á˫l}fx BeRm&VuL>.@.(!WLs~^ !tB (&<Ydt nJ-ONa}/WѻzlfCmqq[Wwvu2E-w h䪸O"q*5گ4k]eq91AX/;HPj;̡tXVXÎ~. qvO l`I~70ƅ%u,xup**O:Hj~]*։7:@vɯ#ubؾ aXz_t&=r  ֝*?N߹u4𛬜Q\: r6* >= O484*89~d+ ARNPzx<4kNg8 C Oǁ|> R0L)&d&ݔk.DȤ"Vz4.e~vS1u{ $Nr8C{|!hD`[n9R sga]im, }Oa|#4l@4cẄ&?sKаf'6/9AۼVH&}r-#KvlwxC! ;=HN7t/XAmb®;uCL(AMwzaAk=N۾aKНkqV]f0N$} !h(c grxA&wb3MuFmAI=Q2:w4$i /*Jf߀+#t>H46c9qʋr'CM)8GՐ~8 潁=-yC+ hrIW}:R|$l߬-wpk'SgQ>k SL 9Ķt~eX`|W8̠֛%ZP6Ԕ zM-'fnޟ_M޲60XU "oՊ8@w+vA*H>7`%oșKYX_ l;RQo#B5PgKc/a΁QISh;Ϸ[ "yK~?8*6)V1]g@wL+A-b|ZqL4x M;SţsGc/A}VHBYey.~CU1x K}`et('c#/:-ߦD~r<~H@{XڷawvJ?X2uCy 8\bpW{[_(p{qV8ax۞GM K$Ad`D LDZK;NakN]S`El3I7ϑ9_M&V^ 0zp7V?=QV+-Cindk9I*.u6w+޳\W?m.fJH):x E`R3qjicQق$Q˙XMr9 δwοH#tP6Ex3`}BJ3qlj=U6kme13{;뿃ʾ̃q陋=]3 vX0h![jX.SWF}ز'ٙ37o7do~Q`~dNayS2/w&T\6]HŜEƐ(37{/naDĄ}V, Tjc/b^Y=b19ݏG1*O`}cVQd Ö6]>U,TP n|;.|ŗ^w}Ǘg'%zѽI`=F7ǫ˘u?(Xո{-c%T7X7ae u;U^a@k_X*vYNcvC9Kv~^Oу}9b1Øcca=DQݴ;qug.(9ӥ1wj(EOy`` XηcՏ}q3+1 &d-]|p;OSc iu:K=XYSX6&I$DwtU&FR.{M EFz TG&Cla~-BO,^c@Rwm;R&6Amk@_} X͢b<PF\`{޴g\"RqƎV|Z)QEgPVQ,dS 4Zu#cx9d}jCϘŒ? `ʣc]05Yآo<`t? ;|A=ސ& eډ"qJHM'NDlrb:ÞR-`Dh.a ?|8x<{ ؼk$D/zsE]x)j&Wz0}0eq/y^\<y7cH=c74Р wh>LǏm3Y[XyѫlKE/BAdZf$jbވ7՞O .c6,7cqDD+'4ٯ 3swK q~T⟬u-w34af!)9=ua[7|ڤVQ@a1j;c2|ڦoyk#u ^YEr7P=phsb>0ܟؠezylB]շ@(H,eE@&k}X͐vpbn>zRCyͷ;~EPm+ڌ?ha T7bARMBy蓗Tͨ<ڣ?iJi?cFY3KzOsEF qy6NcZ99g7\ 7V% p~؞?z@9~VJ2󣟽qT91$qwёX^/o[DV{oYO.!IƩ``ET^HgOfPWyUM` NO~,7Wݷu4tT6hx#q:i-ѷF{d3 *׃))ֱ*3t.0&jA{&wo38{9&o )a;y)G6:8y@m9Ng$߃F❡i٘ M.}ouөzS@!* ڕ5Wm,K|h?z63(ו 7/b qqe} TTWx ̶Ȟ;x[jUg.K4 G"#hclCHNIQ%vuN\P􎷪7ʾdElaWYKOVPHz+^U$|!!WkBL5hLf((-I1aPN/&<՘r'!=90f {=Mgzנ=rzH,i1dB#ӷ05ah"W {9>pr@؇GYҘ^*M^dx{]t _}!rڥ#1^&6Zn}FbNoaZ_y6eZX%t閫CvѪ'>} WnZM'VrAvCq>ID6,%uv)٫Ƕ%fA_Cs0rtߞUl_5huwZ=6-<uD1Y1eJk臬v@<~'㇭$Ȧb81?^qԎ&)ڳ]Jn%7jBF nu[1[Ǚ#X+-R^'ۖ"BXh1h9Яu[j~X5+'M1_K<_Oy3lQ☜pYk$9!R/tmZ<ªS/ b|S6i+Gp%A^avxm%]WnȞbh!褢4ȝ$4&u ?:{7ɦLY*I ]HZ΋ze2C$e; azcEZT2||'~d&aۈ<u`aZGX:@ =m,8);H9&Ai{XN"W_+bt,j$Eڦ|\ |E\A˨ߍy =v1b;=eJǦsEUb;L8 Dȉ%Ųp@1  5~x'ax x}`sچ@h }n&=st1L]?駏Oǫӡ>`G8VvۚwPU40Ulvzќڇ &Z4wTߦ}tᷙ SJZ)鄮W,Z 0탭 %J /$w{ rVeRO7h TEBXBBJcPCnu ԉ91%@n\?[ҩ#IȷL*z&G-CpuCyy[>gAKq6@#rJz@b3fB<ٻLV2u6d 'lj`6#ɠ5˙lNyK'ֹPB-~G@d/$8-q oE,SLHH KmHD{T 3wb!lr_cތntZd')ʚf޳ډmFÎi壘?俾|$ f}Oi@SA!F^~GivACL0_2~#F:lE}w^RbaĈnsاQN.ZħEp,ȡ]eHO5(]<,r+0^eÖL8eB:Q^U =p{E9\\4APJX$S-S)ucCу-t>vkIR] 5þ er,OqVx|8}5ӽz%[_<)E&TJD_CO1FA{Ύ8jLG*#\*^` ܃%mhؑt28#HX(|:Tau]P*}-,^;aEԻOl~k=\5[cFml/q'g \KeX+֜aַ m!duFah=^- AXHu⎺Fh1~+-r Yk;dUe' =C`N?g ww޼s~YaY=PG\1B2A&g%KH{+'NA8(;d;a;E*,ѩK* mgeRALHhs\XC[aP`(^}>,byAuL7ƍ7CgY;&L/^z! DiYI=[e\zɏW z@š4&@h!x{Jd⸟/9*6i 7/> 2薎[7i:qtu`9u!/# xPuMQ<ղZ+ʋ=#>}ϒJBb d:CBg6򕐝1ċRԜY{<ޖ~ c_*~0կ0@Q- Z %~́Akwxkc7336e sls38*OE{=0s`ew06HXĒ_ƒ"y&t0"SB" qj=Dew[SVcyX&xg,\i2!֠$Sw+_VLO;w1U'zZB(?һV,yvA v,^?BXJoO}# Sj T]*Q\~cfD, 9D2  2]\R'jޓp#bc'|\6ňHMB)] Q-8iu{^?hH?b.3Eװ{WtwS: @t?g6RRYrRBY$2EeJO?zEX[ ʒ*Y]U  LP(>AkmO83HM=u+@'Q(.Tj:%1/(=q)h`m4 |USPn[ahଵi+HIhdGxPAHfZj[`BiSkXkJX0|7cs%86$ڥy)R9{aܞ̚] Epb C.;R7{Y/3 $ᗠo>n^Jc0wwm 6.΁ܪ݋]GŴv__LzI@z5fƹ]ܿ?ZZa E=8;N -/ȗ@~aO̱_Wײ%?|T[K O? ({ݜ45ʔ y˳rRo Q",orLս(DՏifq=yy>Xd\$RWkW6n}ۺx@Y{4+.1#=XSѿO +Κ#xlyMN:adɔi# w}ov #d9j$SIXG̽?tBVºy5Ral|uܹ /Z-\H'˿?]ϓ3m\c^CKO4|鍙dg#gc"xAS6ۓZ L$0f^ih}xH>?5êkMB) XWi%\mAͥ?O@j*lflzɢ 6 \XHGq7o!|zu=|iO2ӷ@02ތ<:WfB؞?P8Hf5yi.L2ЬM( ZB[UѲ> $XIX Jg*K:A֬{T6r)\uDR47 9F~-ʏ]?ѽPs4<'= ̓(xlS!>zY0zfɓ?~PcߏejH 2?d(qɖ$> Ckteh7֓cӷ#oQՖjߝaVJu/SPC:n Y~žTXǠ+*U¯ O%T<\/m| aJ[[f+; # Ԍn+' BǰK2,OfU4fZfل;a%uD7=ڟOp\ ~GBB(/^4N{\ێȴM(|Y';-'L }P&n='1OĂLbŗTk0Oȳv㈌A\/FǐR/yNr.t9gx*C}NWlR>8^*~d@64845iP^ DH])^\4@|; CY3#|)b] |2s`>!iQdhbEEq#,y!y+Zzjӓ=i7$ ܧ~ q?O\<_Rk#g"b)b9x'=>Lk`A]Q ! ?Mwȷ8hh \K|FSq~!k^)aӷ3]AB7\;28w9sb19}[>OmXSY, ^e?+3FAju-3&C|%^jNT_ݾ^Pr5 TᤣL◽ؼS/;L8cd:ip?:OxKD g.)oINgsfAm4T4h^_=Wc%a[o)~sC}[ߩ +4+å2KZt0Aϋtn(2bߘcwb3@;:qr7h ZÜCclUݗXQ؜rPK2h6wE(Qpo9QW̓v|F-&~S]hD J%(?}> (K B[YNJ@el3fߍi#V7}8TRBny cV6L9Qxlqㆋ/W2|}^p9 -{{)M=#ۤL,d~^' njLPhB২]uȦ/=Ly j q,e*69CLB%.K}&k- 2A(c<ށ5Q7e< 8n[CַP7.}W«{wrY;ш2R}i1eФv5h9|ZN"4qކ_ůnCEml5Jf8nyfϩ{_ Lnwh{s̥z 3w-Sfߴ8K3\#uP4ޥkC؛B'~_n/*ҬpPD872^8Y2Ծ@3̺ !h%Q<2'RNC}Jc64 2hbc{uvCCtcb3_Kf zsM6aG)圆* r@KI v/-|Ľv|֎鼸?;uxXQ}G*zK y^,S|)4iH f<(7v3y&mbSNly7#ܓN]+# wsA"638mR$G58w$ Cu `/q١W8j$\1B KtˎjV X >]~lpTxUۍ6밳4tr9H"@ߜJf{!ﴝ֞\9y]k^l3!ŷ+S=VcYl;,LBr1W%ĩw{6OC[nxaY8VcߡaWbke\m؟smF*ܰKƉc͎b a:. %|fn@zɐVU9@7roC/'gVKsR 4N-EO+ž-4ojRJCoX=( yuM4WH.pC[Y(hb2yJy<(MA_g/}ShM΍9+}jPUUY= U=[ciP2'C2-6>΋ Xts"UJ - 5@bf-AeE,8*M̀ŏh~.*peb)?_,`^V㑟X+* E1lRB:s9j/FAn;H:C= D٩M'`‘R(tK]ez3x9$DM9gb F'?U"$P7e`S]vnCl_0M?occ9j;>j]:Wਝ\ՓxrdAy9X~~`kq^˞2L81W:ާ\}w?@R=kIոa@q7?I!˩U5vYY@NG+>òCu>\G' zǧO ]j=}b %BlfN8PS!qK^ALRf| $n-c/Nᤆ-v˯Ak{w,y]ٿw \0,YJI:6Gpr\Kٲ+@f9Jt,0'bsz'd6tLZCJ|MYN+/QLV/iÆvرb1 ͷZsׄ~_#y)XְBs ۏp vKRFÿ`pۋpXۏ6^ʞ~ly[[&"rXHRMkaW* lqa־aUjG*(TWcgxBPQZs 9g D}w z?  Zz{aS4 >61˦M"@dMb)qL޴}J*F]C&9-2ˀ@'pj^l&tB _#tMP,#;.gy}kˣ:Q5|Rr~-S.6Q+P]<[Ej){ /BI- (*8e* )x˟By[%YiޭQDonbnK:WXoGeXA `,5UNB=u^dA0ypH(VjpmPkx LJ/v{Cy4A̸6a|d<.p5^h هeʛc毳sFS+ŕ?.Co])Rm-VI߇^)d@5]uy1ctu q%jjɏSc/`L'~@a9ɞ 9"ZMtC6zV(U}٢ROk߰-G}@^c>Vh-DaQ*aQ'\3t7t PaOV)4#l MҹsJ^XB~,>PZBy _2PQ;Gm0%f?s4l|*Ko݅'ۯO{sq>o8^4k+}9q.6Nh\$_w5$[X]/MB3|Rg/U,It}d KM9 `{߁3sI3)c_j{36O%s ,lֿ1~d*@E7/]Dm{17h^E('V=ҁ!ID`T\Kx/F2Kxt=|U[0!Bz"c*$>9S̖邶2-J_%Ȭf'u ȥ:w7`waqF[qzY@)uc^*x @Id4S6XcMsͩ}Y>yR?#Aŏ|J(~~D]luJтz+2j%WOmQAM7ӠN5yGuyCa؊f5*SwW);Ǚ BWJ<2İlACp'X1)/%zp8? Ƶd?yAI (E -. .3X<~zoVDa/낲W1gE;UC[/0N[Ֆ(zUBѿIX2ޏ ڜ?=N _(0Ò61ZŘbhx%'G_6t{BP{ ZH 0T3:OcF4VCZ$T^&T]ϓc3~MѮ1(I\17ĭ)(=k Si ]&^xgA֤ެP]}ddrоRG:~n|pi i d?#bQ֊c+/є9%X92Oy\H8<~EZMH'YŨ`#mhr w?_\÷WFwp-Z W;TάIy= IuLu+GZ.alu\N{ɡ]igːOjl$IHyZBPF4vb%*L_\`z~8lصHr zp-M $Wm&XtDxQ7Ϲp946{_xb@^]$/L{Qd:lsBto% @xWvTsx*9LqӇ"!jqAy3g Um8dfur J+Pj.rM~GdiA}ӑwyl<ݾf8{ӐN3Ke+oŸ>l8g.5Ur*/b"ugw>xiЋ >D2=8h+p;J oaΰw4 T$'>ؘ}f>aqƭi46rKdKv',w9Ә6;x]" AC::?ٶ;m?5ŕF ?01b?h 3~iKv+Bդ}P6uY{J0U@we@XILO1y=V䚗S`Wp<6ލ3Ƕ/pBꛂ!U,.ל",dn܁`;waH)zۥK-OJ/C"$,u0;#w/U褽%Eo.FYS'1wEo7Bcd'@](Vs/m!VV3T|7)0.˙htlu$UQ=01al;7s.9ae04CB@8?qV49{cIç^It9|?(lD2 ugb[enA7h-~c7/o?blP|U:UmSF`Դ0Ĕ Ksa>; y1K\) \%T^Tg 8 + ap,,q|xqs0nsn= np?VaA{Qd!+È[ ] LX%|&^}i:0FUBjcJ/qU\{_ll8xڷe++*6_iJspr1Iʄ|)X@Iֹ|EeC#EQP/ͳɷڱ,EgpC.<;᳌-pTf  5 *GVEf|腃>|1PN!ټ_UqdEu5Wb^O9lqcM)7MK9&_=#tDd(̐BKy %UƵS>m&ať#R50y[ Oeo}2*K} p2_q')N].B~RD~Ȝoc Cu:joO&g 1iO1[ B9yO̲/Ay(b(SxF1HZ6zPL=lzۖ ,x7h;ybaELRiV4!]᣶2&{%*/qbʖ ;S L93v{vr=E5J*ۘkzG2X'CI5pi+F=$oFC{[е(aPHH 6#-q+ zxn93/6]BōsTrqoLMx膙=Ix@Yܠt~BI`@3@iA4T/YO_B"'s* :ś5r b)/_O M Vݮ$rn/. ҮZ? Z=P.n$9d?(\]lgby9@Vq{V G]iRN-`LSwf9a,3۴Ə֊CNRX|oQocBS/38-?trE@ǯv[?E=iZS F{=UWh]%'lXCueek~_>E3缶^7)Q Ci@da|yj7(RO"76r1ɍQڽ#RPLLK˯&<2cA*z :IBemQuh}y1'M%]@yMYZ_[4[/ʪ̌֐*x ^Q~5 U`H@?|o}*YL3w ;=$KfݧC@h|& ,oUS@'?~v~3m7r]<Df3#LX%#Bg7RP̰^aժZ\czߗa5)Ўoy{_[8}sكM6gzAZfP\"フSm${x,N}`ߟ-7a/s0L]v%0w(]ٰ lbG篬^Xb-Xv> Ǹ=21YOH*yZa}([*o߳ -,#&rR:b7<{Ŗay#,h}Gj^1+TĸBvN;^鮿y(孳 &"(?q)V: υw0U%[6h12=?D<$z &K7& nP[LXIyx?5蹬w"YdkNGMP>~<~|NF=l:jPwIaS& mD!5J[KwQ,sw_Pʔh623TQ9G Plf2ʅ9Q&ѺPzܔy(;8gpou -3@[׈ȹ.hUF)8 DaM*oj(wY%{:7c#[S;~M34}O=xx:EL6P\J%) wUuŊe/!G{&!OuHC>_=1h3b5N o"wǰR+>Pe wd3Fe5*yu+c;޲ (b ]8} e@!W1vXC2&L c߼w*I~,O9< +EK1U^!8~r"Ci?QmvG?0Nǰ9W?ڿ,L_Ur+~ODž@Zg Ġ3P1d$^ꯗcg5[zM)P+r_5 W=W@l? sB(xd KĖ*`^:M'v8ĩcba콆GX\J;Fj{08=e2dQvޭ jr?/Pc eS9('s sZ]Z>Rߥv%Ep ܿժL)ɯZqx`F]<5mb>o:OJE=nag\%ߕx}lN)$/#v~8OAŪGʾyO2lUGgD1%.,0x^ʯDy"WҾ 2N= L0hҨ/uYiEOےq8}~D DlBdzzf /,(M!M|2"faL*C w.G^ƫOO{˽^5#Ǫ:}?!HpGO:6&^cU9n@9G(>Q `K_*-ډ%_\Od}-HS7amU7~) y/ L@޴j}  b_yzX@yFiULbeF7aXd VX'»%@GdgG\waU,b;ACԓ",-d4<7^n{Hi͎ $mgc=ńd,0NE'xRrgjN`ٵx#E&VIb<Mzk%orPYNX 3bK-u,!Ǹ ǦClEmSbo6aNxO$2;vti9K#K>jY,T(bs9uAT'Lo8yb U^4 x2Ys7 D hJT ϫ-u\uPc.yX!T;9ԕŇLuȣ yPQb$ ?ud{ob֙CSS#t&v:S uEPB9<.uƮIcؐkx)r߄A͒ǡ4׃r #<mwv 7|oA Sx!Ov =Ƙ:e RVPaYh"n?u(<[ -LA?> zݻk޹(Q1Y19T}yş K8agNߟ !GA{lqD'ZZCYْ== ߝ g.C1J4bgZJvr\0UT:>3`!"<Ł[pQ\ǡAYH k̻r}{ Jߡ>ٷ'vLs'eGSFo#ӆW!+Wؐ՞0Lj^f߉!!X|ң%K zxbA ?cocjᕘ+TLf^u d b^{)̧jb_SXࠫ[2ak; >I΅KUX)y9OݴDPlYâL'#(9"W>vH*g52O WtPM?v# ,M(간sr@f) ˜k7^-2݇GjȾ`Ha.X+ كڇXq( K-ŧO솚uVkƘ@/ncH/ PЯc FJfat x4lI0gf vڧJY|{g:X0x<ƌ>I!6ut.YeV$B@G h}%ks!@aS{V'1=uR3(3Na SO60u="rEkE迵xS>B[{q+룡۝oG/HJK{ɐ.2ޏUIa ,g8_'NXJY2,rpu^w+"G;~cghY} Y/cms[pLElY3\*vŁ9ෝ2DT$!8d+o)2?S=%O8i<(,?#)Zܕ&h42&͢+]:?vhW4R Xstֆ٪\p˿naUgJV&j;އD#i4!\6j4D={9RBl A2*^H>zFzSǯ=!*}1ҳrv3WZ$\?F+Z7T @}\-oTn8eMjOWeL"h +9!.=ڗNl MnS iEsFHg-?ZjѴBFSK ćOCy+rnl6Fek#,}3~г-Ua߰;D9jʦl;0q}/MLMvO|ቭ_?qSPGu霑bnh||{ ;xm~q:,sf-1g9p\{G}C=]PJ. Yx8uEtG[gm nZ+{a!";~¢r|s=uPY~$=]|TUiBBڷg򋑘v$}*8M8̻8נi"|3i3#oIC!LL54w n(SeA [/ՠ+#ѶXp9;ux u "ևrvcǭ3oHM7|[Y7 Ϳ ahʦ וI4O;Qb=wv|N8] oCaZV2Q :d' eM9Va]7., % fL~&P+}Iq,muEt Z/;5qd 6`ՅD~j7#UqAժck} А iyqLC^ĹZ/̧|vq\x0QX^‚%/Acyr9°iy #U߲4a1kbԞr 86Mjcظ/PXАxR_ Y9fM=.zRp~k?lC9 VߘNWL*Z,uq')H\ y94 &-hi}|j)^`| n_Y׽2t ~ d~ Xs3 ,K <}_uq?dFpb/(,[wywaM"4(ٰxync.C.Ij:^hxܲON#\ȶr_zZYO 60RPpz Fw_Hփ̏zc՛]] zs:"]bAqz]5?(AOݞ2RZ#aM=u4fɿ× ;Ky1 ַ #r!Q,lЈPBKf(~T :Qge>Fh}JYQ\6"…0|ibivW+Ǫ& 'zi<tq@|.s'cb|CS;XfN['6e9U4I'գL^A#4^`'yw.}4Ts}6N҆ 쿍u{YpGz?|G#9a8( 2CB1x-m.X^GC S܄?ͽk-K#O<u.h4.:#uN~!!BY?$ *VUAi!^` 5eR~ԗ'9WmB$;B+gml b$c0tXG>)o9i7cuooܴD& H{G`we ̶.Bgjw ~yͩ}P~unHNG6#ݶ~炩(Ei/ǝw\Vc5Io~[q>F4<,V: ܟ]pA)Lx.>cKXgM?ULJcG[I<2:-JaZ, N\*dGdqhS4bҦa=bF`UdX1x-g&ԺsQI` ?拴i8vP[_S'CB'Ph7oO3jⷋP[< Fw0,{`ZB-v3'tPFEm mB]O Z\Cf'g0+tI Z@Ls+KO>D/0iyn,j1PR&p\fX# ^Ywd~_Pvc@ ļ0'~ayxJ- qxXm5d?Я-M$3G-#\{<s҉k6aeYw( z=C2?:+xսB_;:/a=e NEOĒDgj/|2}E4 kuxcDZV(wc;_t; %[T0B $ȷjᘢnkhy$^z :8yb൏ҵ)P&bEe1͸R$W|9,սZWJ:Mlܯ/z"h*^9ϨVıCYIZymh7KȲChSi JaMmgUWFOrgp?>=B?g$.7j &SE‹qD# "L+(6Hk}WKX"v`>k //wA+8yb[{HxYW+V-\%T Sv/f MGAiw擐sz;]49!_~ˀ3/-1ljS36P 75w=$ݐ cCj7cytzL7 {{^wz2t&gݱǠ)$^ ʲN譽)C ӓug<"̰\.h@mWc4Ӻ^f,ﴂmFTQ&ј BNYӯw}!u=abhE=ٙ^mB~=(/ݏ.hNdփ:дwp JɺV54[ь?t|R?|$oލŒ-&+T^ǎUc|r3 x3ZHsqq,o3$@Ѷh QXPs vզ[2?_h:=s*xF֟LCsPMy}:4ܙ4cUP:sP_c^f8i~ j?aVըe!ڼ ly; XYcLZnm X1HY)?@͕&h_x 3;mX:: >bM[=3Ca& qjTo҉MhLpӊ:Gj XkQRV—H(P A㕉 +BGT$Qh֌6TDvj{d<0PxCL%Td)MTRKBhG.^zhS$Ro-{Uȡ8Ƕ2i "A._BczoU"˦^N_CPZg*To-ŰEʱ#H<';h?~3]Xxi#z`2 /zqAe"XǽH*(cs8Zտҥ)ա^9v 9`-Գeu1T*p -ŮmQ;urL9ŋ5+ءt 缦yb Ic:DςX=2O&YW?E-lw[N|1u{|1Q[E"p+iX{"0>I#s4PYdM  (l#,%\ Aogxdx<mf ~5dMJE0[%l䣱ؒ; v# ssgei^ĚnkPX|JXLsӇi@|`[u 켿Rz5Г.V tXGK|wua\:\+"kOrG\[38u8?i*']Vb?%;~7!fI>? ~Zo@< a(WˣJ; $\T38t/;f[@pg#`0]~9ĈW0OmY%t-,g_1=( U'f] ^Cw*>wGSw!&=*?;|BҲlhF%x|6Ȁs -qh()}۲;pJSÿs}X!]RgCSߞJ nw2X:{Nh{P2tȓR`I&0L,gtR2e5g#ϱB/?ߵL]4ʮ| -e,V{GݝͽAj [\Y#k$W' ꗶX1ɥmlo+Cۗ!i]m.εTڸ!x2iu}wɇjYC: U^YcAncܶҭDȤ u5y^|)G:Mo3hcc"o4< D9@'֏#mOP&M k}G-.CGh그CTp~x3}dzן.AvFs_׀@|b&iyn8%f jd,iNa:!É[Pr`] u-`jR_lгr;t}< ȟ/:Fޓ9&1Y#/)AEh=]_u* sC8nBQy7\Ne飥q'vXV_,%L\^o4K)lǂz2~ =»XŲc=SFD't4/:_M%tL[b)jk`q \ztkwYsFh?W)|×}K^`ߗ'cyKHZ]/M`ɨ35%pԏ#;_TqPL%y^ԙj$cweBwpD|X`f܌H9m0 C`jИZ1p4wkj5'?M^EӒpO 3J&˾jWIXn}}ή:^Oҁ˗.ΡKh_RNn:MZ{EcYc;})L8u7I(K}*[Iw3&߸Zb,\=AZF.#׵'2?< Qy}4O< bA}Tr&4YSBLi|OGbǷKf8~__bǔ-T H6䂘4>"yU80qc PlC؉*— «g0{>zzH~ K)"3uCς")}T$)Xm[Ч^gp+sͷ_Jfw}璎WJ$PФ* ^M-U$y!ԀgovVlࣺWdCmŇ@'[I&pQ Tww?|S{H SGnw*nQt݇6 !.P>nXBBK(4gȤ8I*C^(d=J&Bx]u#faһHؐ V,e :# =#a(1T9Kܨ7$N75ds/k@<:18 ?3dCșP2̿jbm|g#<1.ҋk<_BO@i"zWu/Z2l !{VfZ8=ZI;s$'u,t|?~gU{!^X tFh t Y+we-Y% p HU8}j4\n”wPCsa05z GgvĺDs)Ф Všq50xg3a=?)/QbCԓV!iu 9aVчfe,Ik?W${{n}Do䅎sln7?{vק%o3O̵}/Z=Yl+ۜi@7G ߇m5:w1µ *:اmWݱVu.ǒ[>zZupHk^ѣeL=IJmC& Qaґȫy&!G#qTs\|H$6~!Gg6 Wh1oa,ه3,c>bh?z&( mn2C,7W֫xz۔qB8N;6}TAjzzNAGGf屛*o@[$T8C2 Th.9eQ3g{WUY&y,ϴ`uV okw"ܖ+/uߦQYix y =/:׺'l"TU*e7c{Flsnw~a>/|j>|L]q$k -0&%ΉQuW"Ҍ ڥ#TǬ~PPn+>WwnAr/lo;pL]SgL5X0bD{XzcbT!P1o7 3kgA[O5X("a3 (/v..z;eȹ26#E{# ﺽ}WmʗĐs]طٝD: ͒z}'&!qxP1Խ=v>Z&8u~A}j-O*7y>2Aۜӿ&HY]q7_+: 0f?YI od/)ڋb5pEESW3T|zC`bq2ZNG#-F`̩&7cSfGσS.ARy"Sy5Ɔ+beJͅ|kx;)ٳz^=E/_{o{ HݺsV"Sf) :+09˭yT7H(KS%5Y1=!ɺH+=K2n yh\C n>eCyۼǑc8! g ?bc~!Ȟ?G>sO38،koOtҹ1F-^d׀f 6Wg]-f,Z m/׏>%Kk$+sp\wmURR"TY?eooR Y[k[^OV0=9=­aQ(84-lE5P%#Iϲ{煨!pb4,<6ۂ/!@!ߋ6PJo10DfTPm+K~廀I ֗֫!261p4rhH{=u(rX~c rϱ *|0[xL#w+3}S 4 sÎ5<޷Ўzh} DuD*֡3 MWjRVYy,iˇemkPҷh-*8~LΣW4C} qX vImy(&93JMOJc~ [AG +r9lݴ4qpkN]f)n(>tLi,N>g0۫p7Ʋr}jv\o(`OH8dUP|R86k3 PTX!k[M ] v L%CkQlT8v2cVk0e}Кլ&Y^ $>pUê4xI1- N&zgV 41zc"+S2`KG%~34W=JV7P7w>wOsoa}Zӣk8ʘ| >b2)<^C3\}Tiv.KKԯ>|b2\s=͡[n<꽨"TKr%˃[Ј#[r~wd2\qH' q)`;2s1nSŹ%}an_ ƽܲЃvW4IQo%>?z@jV)_H@^Zm2{KHiÐBU9ȇeM*/c?{#n.zq<5$+<s?5q&8CͰ4X6K=N|C7{FcwHE>u7<5?b:mP_sִ!O N Ҙ72d qg?}:-4e?:u:.$X$Z</(!'[s._~o_kj z /g*>{YPdj_)9SؔwnO7B :0) ƫ 1?d[]O;ߋkQNs4vU ⫊wêʛز_kv3BKY kl?!\ң * ;7CiR̖sf^ {;QKWit!0 }Ɇ ƦTLSd?ʍž$ Ac7-c}.,=OAGڊIY9Q2u&MXNC &U^'zAJJ`Ù7daZǚGF zu< &}x;bN6 xi]ޠ ?v,">ܒ"REu*$̒Ũ뷗AƁdZZymgMڧrLi@/:pΚx>~ /(LB;'C<^cՆ^ Ҡ%q2ְ-_l"(4.s0tC=={,vŌB1'iLI}fbO$vt"::qZg]:{A3fQ%#ǾU`mG׍7OoЭy`3> ߌ ycDҝ3{BqMRȍx"YMǻ.)(Ӽ45[ڵy9;<dcïv<6R<{69_$z ={n`# FFHrr޸)~ؘ ~v) YccKSPY28 DUtbx㓴_l:ņ-=0LgDi3\bbߟ]G#;M{+eء(8&l8(ӱH2TpqI5A| >yXclSCud-P$md}F98\O[t-[ܽ%jt s 9&RC IhvxqB詽XvPhԆ%yVs}2C`׸w׃NH,70ZH6:VwUK +yLÕVp\ Og+M,?`Dˡ)b8ƈ#*ߜ!-O8WTljƥZ'pWax5 $1X~>U''-Rc ׿XbR{IƉ[&_<~N\ߙ EU{9NaP2L8gG?q$ IW7 A1\GiROj [5@k\y^^Y8w.  iҵ~^ SmfV)UH˂c%aYd 7q7|{}uN¬q+*tqW ]n?|OcJkye+;"WS*ہ{T U|rCv_hlrP $\w@gkS[EJZ1m `B%Ϛ8>@Ѐ>t>kWnOJEO]#uP=wƔhNS^?!_@wZ2\݌qNAe)g 8e}*ʼn>.d^ F,k0g $WY(] RXXt.ثz˄ cc[}ZK^AAi'@1qwBbQedwXQ˻\_ЄbYxꁬ'<|WSd ivA[ka.vPT ۫f tVu$/?goO?HҐ+$dR)Wzg/L c/^9f`?󴘗,~R!b @un kwTV^J;[/yq;BUr 'I2r=؊{tWiS] ۨl\ Un\}4Պohq«~$57/)%_os.l=?-QEY "61ٿ }'-σsS{dAe Xo Lif6l7^z bdm`KgYv+X]-{}WyiIpm ݰOw9m>%{9y??4ի=fzW9}P+ o#Aͥ~z58 f9ؓAk&p GrĪu#z + =q gm%_>uZ՗b=ZԠEh)| e#ĚY!r|;Xӄ]EU#C6eikDZo7ɞ>_X[n?<"coI_` _8\/iIwpob͂?c\퓟87ZYX]>KGsu4e~c0+loVGإ?T-] ] L``:+7‚w*1LU54₉n6Oܗv7!Sk~; `ҧ x [{(mm$F &zfؗB)K.m]y!_7<^Lz k_oŲq,@)9)ƘtZDBZJ+^'?Zё3E|qF0>rB،*N5 ߽_Pb|LPYh #{P$S#\)KD7S4*9 ѝA>;BSdK[`G'&9}XGyqsPZD~N,GLT_V,|^ѫ>cg XY=48{KeB}~ݳ %6 u4<5S~RIϥ(->}AM^Mzc}x; /kLi97q[~%*2.pM5hK0It$0g2=հ}Fma#$D_->upn`eauTc2X~.6D% >Mޕ~/ai-{e!׎Sخh쥛rcKG){5j7yP^s$8˷).cz?#Hh{_aejw =Imhsz":)UP;@VXeŭs F3+Q *}~PB",!Pv֭ʩaDJO-xU[r>bm$ʅ=7.s `3[l^lmو-II(`;Fiع" >QF5cΑ9vLc { )0|v/ضl'~|M%Vs>+?cfa4{V[,., ök1ɡ`gkǨV$gݲh8! R^N1f=!HPy-AX@h6bZ@Am>ە=P_'Skϙ :hu 6f.OOΰw+C?̻x'}5( )TAv62$u`?}1JgBeOhV_QwO8~;m|99(~{EAF8Y' >|qZP.|j.&W|L09l u:_1wwzb.?ދ\ a[4X)֓NqEChۃb=P}afYP=I^Oϙb4:rM\??u sd&}U;] r/GA8,|wDCO1fh0{\UR0ᏙroCWο|w_)CpQb] d~I!Q* #XB[}f'`UE̶ p!E^ M ٪m iY0'޷PI'kAYߓJΜ2SI'G[B|Sqguj 6@EBܧD{>9n%a/)R珅Ye&jXsh}šRʥ\p ?T 'ڼ\%2PmrOH[}!O+dsaGS=ݵ&\ߝ_kr ͒v,{hqKKoΥް֠=؂'8i z:6yz Aťsx0t4} uIoqa)ڐ!|3 SIyaaOh,-D13ҥ#V~s[ٲ$J(pKpg-Uyv9 z?~+ t(pɼY՘1Sױ{l^MOqP97rGW9R];OtwQK~ö#݉B ūDLL- /LSH,BX{3}VgTS^B'4; esP헣9^4Mњw̰d-[ʋMU_Ua͌ 9l#5B_UAVOhCl,Lڦ ,PO Փ|sLͩ;8BO$g W`j>Ⱥ2E%̲,߸WI=iǣ̼!ڕa胀Jɮ:D2#9Blqhv|ߦ8'Pga986=6S)}?[,F!~Gyj?)(YkeyK =WΌCCȪ#m!L[y󲳏!nUL22?xa^ &3zv hi^fx KoE&6rKk>~ߖ"&Зf#VlR bNw4r7.p7㢷#i|xL>e([w¹"i\ezspu%M4 A<&R ]rV#&=m% |Xn}`|9l&#iIߥ|a4qX;:'+q>i-*_X"]Iuɇij?:d=0+D& /|9_3h@戗;Ϙ}e lW@ 0У? Abk?3JAg]j0"Fnr7, G6݀aD:)|ֽO0 U|zfvhgq$ prjBWJMiז ٭4jc0κ> *ŕ0Q>ÛWɛawt5z8(m8`8V;di<+n1o j v~8kU^oWclb5w9]b/Z?Lz9>}b];½as1#n&ΈxyjI(R>x|9KWvj7?;8hz\W- 4]j#c㵣i/AzS1_N4s0dB3xY'a}zU{>?m!Ã.ra+bXJWSkXD;wO-^e),%opTTă^;>=(Y![C_ל;̋J{-IŋƦ>/1ЫvHrqzY f^5zQF6zQ%4a%#(K\ B}Œ|k/ (OK9-ðpЛyYErC~sicxTLb;+ 8[l Aa)Xh }-|ZQ~bɐϋcꛅO̜X9q|)u3Ip¡Xmp oC}*4$YY{f/C_8OLU 3QW+N?D1KLcZ\XZj b̅&{S`K-jӷ-vHRhhbާjC#ه"0Ye=F{>-aDR%i,:F}}@k/K>fD|*qy=3B:>{q+t J'WC} l$Ɖa>?0)vbu(yslo14 Ns~e0}C2pKedY96|5U(HlP!agw_ٯ{X$%>_&`(ϣ[ 8|R'7o akM.-e+H@z9jΊp_g?j= k?O `=#QXɑ 6$PRB.> ȱZ'&K-z\ٛdzbf)*iV\pUFBSl De "l;< uknqmGeoQPp!z v>L f./.:ݡ 9t~~ P[zfb@nS2Vqꃼ >/HP{o )֖]0о&F9v _0۵$'!s.i|&Jm9SCke_8릭(ihȃzLM}ZB~~gqr1ωr4M3??DBPq5oŷ e$[_ߙsEt͞40` )&hўWX&/.(; xJS^Lxݑ *I^C

?tmWߚoQ܋ 6v,y, Cюc>OWqd'3v_fTO ;'E(r eS7e7q8fQ FrKjcc.!`J0} IJ.BQKw -"&&n G/Vu@gZL)Lp;m}u?<PyNZՇwE?G>-KrQo,sl⠭j ǠOrw0[ڶnkB1Mow>(X`D' uZ9EH=jz"qz6p nW YN^b,/=0O.cZwH2MVy Jx,8dCaw' ɇoBսFP~%mY(Sna_|PzrEHzL f?{+IHWyZE5H (җӗ MP̗%kK6tx꣧XdvroKʠ <8ڷbJr~XcB&qwkBR@3Ը|!4~&N~ކd:kx0n%#Z6~݄쟜 M.UފTNF t;> W^$5Heh\4l.߰jDv$l.\ņ|>4ap%6TY_ Hf,Y(űwR)n9~RG^ۧ%23u;)lk .,{9̍;Y-625 ˱ozd:3KK)> ˇ X64)&4¡'b_cV9C\֍D\n,XA/0bVC)5 N\ѐoj|b!\uv'ș} ڽ:`&`nO1YlJ3A;߷Wh8ܖ( 26ߖk)wK>d Wi7BF`TiB]G') CA9~98 yCUW00|x}P 'D~еRiU_х&9}!vp0`XhF>ކ\ j B9e"2d 5=K^(=&??"_xAє|]'tre3${R҃LjP(azdJJ4F)lΧ vW9,MEh#4脚jË;.K\DM^T~)Y5+KnrF alݰ)8<'`Ǿ:u"Ę9?J%"KatIC x>jRЇ'U=j1DYnOlɷPu)G?^huﺰϥ{ܯml,rעh uHN@ю)X'1dtex?l O[8ϘEA϶Xz2ai,kDcHQ! m$ lv0v~rM.XZZ6+ŬLj^Ӈi,A1m8؋3k>ZkG;Zh'zb]e= ?q8l^t2Ʈg[0kPƠ10K߿:C`Jnsg[Q'UA#ԝ/yԀH>jSl}cQLE#6vmcQ"4鄙hԋC_Swחdt]V0 qBԬvJq6A7,?ي5rvN|Maq|ط b#ƥa {n.1Sp:_đ*ձ!d.=  no-غ(2'WBwZl֧HF`Z){ߘjkС/;Phb@ؔ:?=ĭ(T}y0&V?$Q,ƵGC@^YsoK3V:S?R:h_J=;OX%Vxn"#)! B}^ft|yKF䌍zA,9Os⋳tlMo}c6|es=KDWzZg$F<թzU)Yϕ 篝;; ۇ~|*qBA3R.:z3zjPF*j_O`P/XFLKwǪFS s1K 75Ci_i!=M&9}Ku3,勬3Æ_vWlC[mLѐ} #~56m|;J+ouĶJ"ZK9}wo)~آL oZvyS^<⏱>հRn]`Ϥš^9`ko:,[QR)pkejgmo[X%3ptf=Y'a+{ +f<գ}|t+wzL mgV1o5_1ttUvdc'J>#)GZF (WXlNGaL T'z,~V}/|8V8a;%.ױJiLW+=ޚMvXm*ekL`klOYdȤĪ xx Kx63s{T1uB}}"Tj.}IY4~Ӈ7RнY ;#Uf|P##Ջ<]LO}6噎~-ʯ;阮׫e&3XْSUu7,r>2„ifa%`b.o"Yxu`m~K%Mes|5$64~2MEGo iVd [d{c5zuav?>:$qT:tt##Μ*|4$(N[C<\:vY՟_)f1e'FI] $c#Jf+~JĴ֢'LTrB}:;``mpL !~t" )kNzWV5Hr|WsQJ`,)xi\,Kc;|W:XI$%pt򥜼9}9Nԧxa%W;{5}D$Pe e-OUy}8߉/_&[р+,[B4ҩ&7oT5|(.A!QBz?6󮾀2fܢ5L7x9/tk81>}8wm Km>] 54BJY+v|1{} {0֤VwԡsH ]ߚVs*?:2YVx`~{{ @H(3y/ {Z']`T{ t^ +6_MkѐST7W3(;Kp}P}T}h"۩߂sO}hVg_LY.} ödP(_^@;HvAYqVrmz\ʡ=JL(g{Keo6c龼L\P 7*X~c "lcHRܢOIR3zDhi?dsŸ0ey ~zor%kyCqQէz`nچw_0L]Q}  ]α+k\=ݑ{+&ẆLdj\}+ب!nЀ)ggKl `ZϪ\",L\ 1j'YljFXc1l `Okl7~to^Bȡ |mpJ0wyqdf<ϜnI* iA/i7"G{5?^vobό4㠔m;nA0#'@ƛlPN> {7fP]:cߣM ;Tezę_'X+ 9oiy$Utade76ZHŌ?z2\/ 9Fk`Sy:Jc#Lv)b( Klvh"cTA Cb(JVVԽ' ۰r+t+O8.sy㯏7_lNe|7@K릺5[z74}Z0~ 6mQqYj!va\}jb^zVwv)T[.YR`kC!&tm Ci)穽.Pu}64?T5'QbË PxiWoO =ώ ,7 KFt(<ΟS"r>nOoqEӑG$'`)ٞ2I|) ALn=, FZ9nQ=1ɂRbkV8V93՚e1]xG%1N#źmNsKݯ*;gwa n~h3}}4r ,4׽ؚ:a%"("fbѤZg_@yA8H(~eh)K|R?.Cmꛩ##@ps7#R d6%uz_Zx45NA0zjcǴ>UC~0,%\^́+2׷܁0J,V ̸ds Ps?ZC_'n>MaIХ5xoIy'sLt}ho>q+阿3+BjX໪8uMĵkXaUC :Ldb"Mk_#hU)bj7q+MV2:ݩ ,WRMu` Q\z}VV ۩BeaYO^_ > kHe =Xnڋ5T8`=YJ5Trt>n5]z)'^Lc۫ ,CA3X^E8t ~?2?e BKNΐ\*%ώs.CՋCl w^]P#QGB\(Ai,+< &}dB j>\~.=<?'q (X2 bD;?PNXk-?f?r'm!ijlСÄ s;c%Tidg e/研͈j\S-fRLjaRbp?|b8rwޯ_0[V=' ɹ737]4إe,zl]n]+~++Av]&ұ*`24?1gR~ Gg;;RLyџXIh`8)?}p.>T:񼹮s#-ڜ1OctW.V֋f72s7gT : ?s ¢S?,K_iy?Ĉ+ Ioghdқ[ v!1ժ>r(C5#pYO,F}WI/Ḵz, v*1 Oq!;䮃}Eҥ5vdrc˅eͦ©4uKG}0 [1v5é!꧲O~/̍Ęם{bU, ,4l?y)p@ۆxh7qhv/TLYӠc71h3*|{æS8YcH߆~Wrp)K)] ]!lqG%͒luHrg>l囀2'f+*SwGGgAp".1Ö١Pl\g(# Cd0펇~Ϸ#hKrh+V5Ⱥ:Y} _ 襺bԼ\֝SfEFxihl }\ҼA oڽA٣[j 7\tr53zth_5 ^n {w{LaZq%8DK2ϴ"~e`ǂYnVoZaFrazT)YQfz hzl%>oyo}",j=f:eߴsX=}lFUbf0D(M{=^FA僛Whu6WKۯ3AB˜gNL9t+"`_UP!#XW"S·!]ߟo"SPxh9# f]DZwmG4] Y]9tW7؆3WfL]yxRϜEڹvʉ8%yn ^m*M8Z@ՍK5.dN_#Ŵ$,k/Х^>1]<-kL %8c8JA&1b-] ? 3u\O2mBcw顾%| 9ײ}iK?nZM)h@/9t1?hq[ 2Mߜc: Z3$&MH{dCL zlUyD}i<{>H`#|eePw>obY 7 4Kc5Xz~,19Bs&-/IUX yHѳsRAًobռLiY41V18ߛNWmf#t]/SK\8A1;.WcEs)ևʉ^F;Rc—ܨCCG͚J塇SZ.}.C1|- k4QKcRRC!AuNaHx)[DOnbhJQyuzBmiZ1»K$Y]Ͷ A)w(s(:awr('~U</}Pz_R-52+RA[3} rc @-m|&Tx k3_FWyr(> yZKjӹ 84j璏>fOô'܂–&pfr) c'B[X77e* şW 4,pruqb (4iȆ=ӕSڻqѷ)0+ן\tbRV*U4hyma~zh#t=o/TE즡چV+cSI|Sfj6jN/|cY$%ġ[g=@Q7=y(ޜϖ 6Ae|>z>US=^E}걎}+U?1"|ؑ`LV+ݍ:16i]ɮ[yե8>}cuEW]YÉ9.+*J=E,(2=B &Ajv@Œ|rĄ+wg6uZ 8`V`,٤3e|=l~]ev[%>xkFK< Nw:]FjX}<@ҫbzW6 bKBn4CK>2La ^V% ZBiyCe>Xj>X?Xzm "U`ѽ}01x|aPԜzC `}˼3y[GVAC0r, aO]CKS텦BGc//P}>ch|g%EoQ/kIj6Sܪ:N%BDTt˽<ٕCߊ4"9#6.eiƹSX]~R5[%=`/817>)pT1M7$(hG?\ˣ*pUa1MB E.[;sq- uæz6AQF<5&sn wQl O}$ B8ӺrÝt}H': ߇`G1j#@ۧm G%c˳(Y~>s$M'6o[j!:)L1a-]R  (jB_1nhq=T"́T '*@ݖq mv|IĮga,gYh@$\> d ¼(G]L%uz"w%0$_8aǦA.nMM搘'/S(nb[}5^B)%ONR Nh`Inj'bx%w|W`\H;eVt_TC^H4Q RCM~w\> ԗ?szOS $B\B,uHFۀ b#y`-l fv .]*0K@?Q -sgLmtWg&:VwE#D~9mu!>1@ՂϭyiLX,JcOhX)y:z_Mo?u[(R2 ?,V~ ]B=3#8z F1 Hw \k0;/18.F>_.BΌKJ1&rOݝ͇;]s)oT&۵k?|ʖ@ɶ~jT+S:ˏv-b?B[^(z15퇕|R<S~ދgQuP(=#Z|h?gNނ|/X0ySRH6gCuBzW‘Uױ' ܮBuډ|AZqBEeh  b9@}G|_8{8,(mUt)+,&aUWRv݌S8~VgM5>1 stԍI:s|5\S__uىK; }=вBmIcViR j߆(aMqAˏNߛ EqWZletWlMso֠}\wt~x %&{@ml_cv^e>OCq7*, 16MY ~X>b,j4rJE#mؗ-h)R&>ׯ~YĎŷ'nFlUAUak쳘rK煟HR,Z Oߟ0[%kED@JחPk&P̼=_ WM {6ƾύ&JL{#`8;{(5y&6osjВs yE^xeD@ۇkrlq#ʵ/7MvPi|XJ:ǻ.BzhQY]etB鴈 AN8̦d] 3,ӻe-dn==㎶iLR񚇮Cy<l*Jܭg/w<_ccgV&cM>z‘).3 lٞq;1>g[fB02:bi5rh,ٌ oJg sߍ|ܭ1z㹮L羳~8f{AI~)I>_v1[;2M0]㗢fL5KxΞUxl4eYQ=R̚v3I̬>jޣՄ91Yqp+8"6?.B!BE&W8 ӯTIn7}YP=h[4 3qw &1:<PIKrrOCny:)~4?Mbx|Ao l ^+balXy%nOyorSB$`g\<,_P!ױΕײgc/!ELa~A9"bBU1d@m wrIM _/wi/BoСKfNmgxs-_%%PCYZ+O<~dLw~=7OoG%mU!.(Ԝ9̝ K5d@MPTEu,.AYlRl8gwVy|}==54,Y:1Gz T٤P+yxMttm5s`e5ƙkC56ۺ!c Wͳ|>Arin;(}D7\mcQ#;AH`p.<.O @e2I84CҐLZ^K䯥9p,dNqN)))pЦc Qliq*.h 'eA~ZNCt~gAg?wB(=5KP;@Íg[Mp/@``0D*Yw}$ mr?P!LAY=8^d,f_O{4?G ɶϻ؋)V[o;Tl\Zn? KEXtfL-``=VN)%`v\oֻÛH0aVاeiNjI %k]v$ z^::goi4s?|FPk4i7)m?| aEBvLT\OٛltWKi%6) Z:i $MiӰ1ke a[XhVP|4Ŗ+6lZlܳgv=hlj1=M;@99RLL-ҝ[g’F.?!l׸P1c;~g^ uT-rMoOl׋ˋDP,Ζ?B :;,vk<e^񗙱}9-c&8ê"v=, L$xk#Xr6q<4bψT6qdB#~]:ugJmD7e$fDW`gMIgU%jů*(S@(KY'8ڌ?wuk4_2Hg*WwRtD0 ICmT%&Z[v>6D yfMB90_NvHΔXa|p7͝:?V3kQx2?!O~ĥ m!Hcۈ̓>VnWit3 BwsKe)só 0ڧqFmL>G4g*cPʧVn%z`?|ZT8>~Zb 5!i%T9-< J=CjV&h{ExXg3fAꕉׯW !;26>$*CI8*1#mE!(Y|4*Vǡzf(O/CӬWP˟0 Cܑ/A;gCK9\Wtڭ$!^hyBlk -\ .2"o453mzlj3}6AT}2JAi(l;r8:9#ҲA۝JhyaZDt)%X  `W]/0ђRRwtX?Ν^""]v M4;??^|Ik{v̱Ӯj*#&Z4R4{͢Auq3pm|\wγa[i!5}h_#%W=߾uXYC(ՍX%!^6JN[ B_s FƺYP1!nb4mpK _|x? :xLi][0X08I߱:c(;_ڙ48v0r<®_zs1KI(ɳgۭ` YSiaOK6]x2&`qg㮜BM7cUКKd_nԡ*ǬWbg>&oBAc]xPF!/|Lbp7P?G}žA{-(|v<2~I;ފF)[:+y< `lW( G/?Q&q Q&1Ju@^O]Oy%MF&P''(?@8<al1o(=ܾH<}v$a۱9C7ru3ÎeߏO+bYMdV?G#1,n;vjQ"uw'Vx[8 a3#1Rq 󼶬'v"+fp#{w5.Ko~$ݽc漉w/9_ti9I p֓~_Jlc7'!}6:ko2 =|n Xr#-1*MbuJXqWh]2YG.`bW3Wq4̷QKZ=1O~ކHKa*<\o\wRFH0$?fDž~\mB݄E'ש/~+װ%jT,4h6IT8c6=S[ $iɆs)|kCiqJ{r2,a |5jc@c:-zIu؞,4 'ul3yЮ`k͵iJ{: VIc|Qqb|Z(6 :NT`킎fMb摗Dz钐jH/VS3L0poҶԾ~YkO7ѕmhi4C$)D \1t~'+u Kn\1Hk˂E2$vd'O"z7u~͉2wD|?$,!!i~NZ>#º[ ٷ/1%SWmq BI 7mzMͶOq6|ғk-% %l.Xeշ*E@jد4E TICnZcUk-NO['BOa3b6ZA}Kxc߯kGkA ֨p?;M<-S%5w zz'.`Pܿ {oXehx f"J U.:!;wI9S'vS^h 5g|J'gz`f"QlqJfpTf;cmFwhK‘̮4JH 5{m˻P`i=l4H҅)Ez7bl/1"1۸y_]xˡV~n3nVE(#1$^;Q,ׇ& L_q| \6VC,Dp9:7m|)z{k_ẽVȠkvl>Mh eeV@짷60~Q7￰iN{M47!4cȊ)y ޟav.|$>jM~b6lXS94)LBt{Tu7YB߼gÖ¶ک7̲$on{87{$Aٰu2q2 ^³ ٪9=¹%M1A%4 |s3iQk F%{@!wR].1|CS{Qg ֯PnAוSx4dP鿊6za-"oͼQ!Eb*߷ 9n~m hwKLC<<1Xrö] ߎ'*';@q caۈEs*P/g~`9nZʡf U_~g{A] 0kv,8Ke4udIk"aon7~@]1&=$PB*ʤ=QkF[v! U.{'aJ ~Y~ÿU~?疯ýc<ٽIRaοPpaQߥ@ 8NQá}uO+0}YWc^BJdë0QZpw"!z7FQvr:8=UnavCnu.ls.;By>XៗաnAPN [69@0{Go|T4;E L 1z z( zB9+hi8qrFrH[n|F24mjVPIIPHR݄1űHU,lXMɀ9~`WHg 2O1N͋ky+p> !X0Yav.$_`oMՓࣚ(0n0òmB'ŐG䰪sZBuè2/hx xם4"2)\0͍$^@ֽuJM =ԅ x#np T}%l^LwxBQtOW(TF9M ]2uRHhrIfeK-6*N-AeSZ ;R=EFx}Kq9rQx; zzCtݑK}Z5*`BHuω=- '#jGa$Rzm#`|qX(LMUp AZ9(Nh}h˜ZC+ǟa;vד LZ߶ܯ:8* =%'J!{e3"LF&$kc5o-LcԾr7G}_A5J/)tZ, "]p`6GfQ=xh1G+܌.(PѹrӠjk 04 2ncw|ju%o+վ„EKmӇ%;t#?h0M7pk.Y\EVazpr 4g`*˛ w L8hE 5IC?aw>BѳȖ4DycAGJ?Y:_NPVX7GuL&{ϧ\|kGbM}.hF}o= z2j+d@*~ [GM4U&X\Y_EaSĭ=޺Hxtw8++6U`Mע- ԦaUbµXp]$dDa3*eߝ~r>Ōa߸d^:& | Uej7 %0r(X-5}1_kg.$|L|kYKlpq5[ʩxN1K( T\{,qc@]!hNxˏ-G\b'acجS9"!h)׳֧Sv{(SBY$aIg 5$< tnL~st_ؤ B)CZo@7̥qe׿D?8gC{l?!>㪈_^T/J̓.\~tƕg_߇ f#e0t׮`{EPqt+&3Qm%=XQQ.5GnJ콉#JIο-C$?p ;p]XK3";aHߍqȻ/=R(K|# K;t?EbAԭ`ИU_ N,w6L%~jh1VWļb9K Wsƺ$de E˖E.ߩVqbX\}G@ j+RY\߾As a1ʿQrG׃od-bԞ{U l?Kpo݅ҝ) EOfN_Ct B6OakM]-(U =X^S WBA ? {mZ dKI ATm=e$/eu2tY9D7RU/_or1yfl l =6DZͦ#o!ϋXZmӲ~l>A:KvuUecKpJ˗\l6QВxdz0e {b)s/qW|Ct9'BL faͤm, Dt:-tmof*GhO2RJL'smC.GIt_[!w<v]}l)>ėA{.B/:B8e*)?5댓csMy. v7VIWc+[r<6s&S p垇>W!A+&vpCfزmlS|/r WtKCOr;֭mʏtCa$O6D1TDYa !8I҈aJo6̽qI='!q|NV^F7GXc^ڂ-iW~V@4p)|pB' LaȆ Tl:J&zΔgpsh wa s.nV;b8:go(˽~bcF0[=;LTe$ɍᗒ1X"]5_Sًe,܋b1&V#}Yc2:UlZK-E^p uD2r1V IM ,\ʲ+ eBFِ`潖X&5 B韐4t;? 'LS9^pc̓{͏cV"`'$i*oTX^l0t?&9CS7J0K*yx~8G te=%^,3%&gZ(@IàrǭXqf?fSK- =֚ XTyDoqz4z w»/oFB@c$X5}$+$2t5߈ '/^^}AV(IxJN\K'/9B$ۧ{D3y窧4-1H<ϒȅ/7'(1rޏؒE5+Y;MMK"[ju)XBce^֯^(۱X&CO Ihʒ#&ۃaMnuG'1Rػ}ݹ1c?ݑw]泮/җ?9%ԇ%]n9iP1R7533CnOЂb{sRB=e?Gbgk~{,xa;g 8g+"FXsNVwP$3H}ljQU5`⺿3Ts0aƦF4V E~G8o*_1l /ǒWt"g7!n{;J*YV7aSɩ: l.=+5/\GnoB7f#pj]?DC%G#;;ߦb p}^k9:f'T`qH,?t?|F=t A*gp6j ]Jbg%[be-?;W$J)2EIRJBdW3d=c^Nzu+i [,#mBGmʩ-Q+Q Oۅ֭ >O%s7.ŐQHe,z|6`;UbWŊR繉`ոrx ϙ c-HkQk0|1o@@3loH_W/ 1+%5h.3t8>7oH\DCt4 SI`+*tƂU3?q.ѽc<dcOEq@ִ;&Ǩߒn92Ոߡ'͡Ƹ슮Ȏ6@+Vм{iPN%4uC: ͉@˞h9UAٛ?oܞƾʢapgϱUec.=iIL=U %og GN@)a(߻>]ncL>HٱzA‰9?*ֱg6Ð~Q*ջ~\ռyr U`հ{ @ue/L 0"%SM>49Ε~Sͩܞ H)S6!Rs W1/NT!#10FNY }-^y:\=i顗}ԑ=? |_T':[V3) ;2Bٲ@Tr4"tZ(=\b/Skk cKnAFi/t NWflP $O#|d>; <{CΑ[0kAt[ָ f&?:_>?IiYn#zB$ن>wy:@o }n>8D议P`ݪJ!H&ˌ ;:qPR@)Lz9!<:p̤k#mCÕa+!vsk`2m,Ʀ†8vxG?pUƗͳbǯ7 ;iHt(%uðX. '&M ҏ=LDe(]2SlCU{/&]ِ`}%y,I45\ ;9`ES%P]!C%@LJEsrA{dN@Aw^v. 183߂IG YOu7('t2'65P{2A*N|1f3i:Y,JvcjL]f "TlO@RZZ:tTӋnM|Ű:1:Kku-{Z7<}9׏y_= ݰe] 57}}sBcO˷/&5_Uj!³FIֆ ZdO=K\lɳƺTgP44=&uʗٔ7w%yIs60 ]䛘Cޣ H D\P#CIF5wDl|S{TB#Pri`qR.ޮĴ[B6P1fVur['4* _5L{ -؟ܭM7m#尲Q] đ]!ayRb\lz.)LUg; A,1kDm8!J ]ojBqE? IS-xj=9v߰V߷޹?Q8W{ YT2<3m;Y4Ns ܆'X~;%ol.s+>)wބ u~`6jji?p?p5bʓoB'3n qէn$x(M?vG!\$El}[fI7wpF6.iƍ1N.n>YkqKyX "}XnhX<_s;ľJqhf{c%'7SUYcH'v$ MZ§Q؜#Q<.Y_`xߒSW˯ObA9YHx̚mr#ʷC1@}9h]4fu rs)sjݸ!fQ-n>~m\w| !'(Q\€iwsg>;%fz>nLE`= p 51BXLZIws`#ӌHx6Sl`xf!DyhM׹`ta +4Xƥ?N^ l0e웃*v/e".GS4l`_@ets#0@C.S6@:MTI*F .B;41mo@lmGo =M~.i:r ?{µ;?sfjw:hgu,ᠹ=%.=›so^/=:O-mXʥdA_|sptrx6M->k!(9*l$[ǮxI[p. >;]$OEv}7GH_&CEP481 N^ym|0ln+45zS).w; q+f -i1j8Sߞ zajF]8pf3ߨ:ݼnjYpޘb[+Jp -g),1%]ގq[*Xk%{݇A=jM^}jsžr~P%u%CjօzR{c/ MZPşsLOcZ=H^nů#:u6PO5t13^DTM(T=|C6aHrWWl.ރZC_{NzYhVw5c ɋ5oy-Pg{=EAﵭv7f\,,*]ރeFS`nL:ž1)@-#`EPmc/lV:=tX*MЛP;×>eBt* Ģ^!P4,jbRRďv(# ?ּr߶Cپ˖zPB 4_Fݐ:nw/8'E;X|~W_,Y(3;Sب3}s$R1Ft$.,ΟC.?k8Vh ~!Si3 HB g1] w^'U@U;Р_7% xbHіXx^?̋a'_  a(<ض$8u"Ʌ{'N| dPr緄/A $dfr͠Ю0 JfnC{ۻɣ_[kj&UW,/Ѐ]V%ꌎ[ꗓA&Sy枼Rd^}l Q=w;;1'조:]MaqԭaJs$AvH0p=]^jǫ&J)|"@jlhUu=Yk.tVJv@ aV4ώH\ }U_C;)t^3\Z#Q6}ZQ1ڂ M\!KԓiCP-5K SE[kA,s=yx4}8A{@ɱɓ6muԫRcWʖceyRmi)UXBc"Pz3nAGiP'3N6SJCt>/=|ت/;zz|&} /i8cbF]F WN0wil4Ja "j KkCgnM {#O(WK6 O, RJJv짔/(\{/kvH+^C~]RvE\_He% ~ ϕnCȽ()3,U1gFrw1~-ژ$R f-|<AA3_B5' "&(ToGϼ:[:_7a3ŐBYJ ^if*@޷JEvy"t_y.seLMǝ6)KV2j|;cãr7޹K+6 "J_f q/'~YfEQunC!_>^:'4tx1|x1dA5,a+Aː-HK"V|8ָAIAA(@+ڠQZҿlR9%S~XD$D֜Ny+ X*nb:Œ!RH׼^bү#+]b_5W+_dAc-2hվJV1kNR6ni"TBn{Aט{eie?#ﴲΛMR r#T7H紛&c5-ۻQ-J[-FᝤsOaZ&O\bx,},Y,F(ǟdېID, @f].>ѤurI̡} *6{.A3-]0GWՊIIqIh>%Fh:/%Lul}եi1cgt^Cjޙp(YgofuS v8>ojOV/yw칟>'] (Z+|UaHj~?[ ]v NrYLO|O=}V0k -WҞI,zzkv6 –wq CvUM7olU/޻_Ni^|LA4rt5 l#N('Cc0\bU؏FO'MOaut ,Ju~]/>.`鶊+r&\kf1yrRhDᶒDb{<(ZM{ņR݀JA7wݡ;PsZ}"Γ4@ñ>gi(qC %Gw!ր ܕ?&F>qbNJ8$%E@ACW> -5?RCKHg9~^z9^#OŎK[c|i.z6jΓ-yBPb4-]jރ%1U72_q[(2}:3.@1^g7 ^ZAd[/DF9(Jȋ%~'N{!<͙?R۴ּQ?.TD˾kxG\ta7P-fIAX?0vvf}hOg7W l$n۳CM/0v*,v̏&eJt$J8C‡E'!,͟A *95 rҾdZBWU-bC7ڷ|?BsQ`șʼX'p>c"kh)= Ym?TU gB.Be58%e|` C ف +OS7BY0ZzUa`"3c-(Hu<HU[r+i(%㖛s~|{/Աhh5_z,}cXbfZd Pz|n`F[g1.Ȃ1l>t)]bcrXqv{` QZA8?+ybMRTb7]97 9XCj9J`GְXDws>ü>ƪ2owZ,i}tUu$a xl9GAk7=Wߣ"Ew^__@_,<ūXg]/qFۼGF6!3 [s_v'9ـ`X\xQ< 9 'C):#chQ+Di-?ӌ' Cy3 ymQ~WI=56uR8tyv$v|&.`MJ'nS74/gvy:8%<\H }`XcjUJtWCO6?D|8ğm.xz` %[Lsx>p8r h}.To& q}C)t"f3E';*9T@9KXr=jU tѪ2i܂#+GA7ADJG6HmKfט/`G͐sx$e{xe4*y#JV`RR eg>Na H-,1!MkԓN06,J^̒gk;R|lw+Ʌ);̜% 5,v?0˔v ] `Q~{Q|4DBkq m7o`[=yH6jɗH}JZpiFb&J䶭ڂ--6gu˩S{73=;|EkTk~Zs3Zu aĢS)Y?,p[q͍cAA_Gs ʼi3J{-nDxrʴ͜ #_ԂZԗt'6=UfL}~eu(א?8?OP9Շ\-1FJ YJc}ϱg))g1x85`|&d!<E4,Y4-w˚~$Q-}2p-M:) JZKay7Uqso-VԎŗ8|oSEax{Zӝrse06ʹX$Xh0ekW76`f3*fOj>FSlLPjoBhPw*cVW'2+5{hBK_qQؠ1k6k1vmcb8lozlqrg ξ'izIOpr8 fDt" /屸7c>HXɟ_Xq5LF5xe]Ro}5#Pm2e{Z@ncJZ.m$={Shy+qh]?%vK /HWL!v+*"gYh(\xs1[zώn꽗;{Lj: ^?فN/R>Pos:Œ6BQ: TWkjB P/B_sD8D3;"NmWVb.~j[Fl6x%gFY꿠̀GsݡT; ݎǙŝfOo\uZ~5կҡE`箯]9o_Sjn`3XҦ[lP \" հ`ǩKXԮ7[=ФJK_Ƿu0d4YJnϚ#EBwdvsYϣ ߓ>?74 ypU]{=ll0P T Jb,7n=?Kƨ6ɱR.,9s4+sEaIQT`F!v$] Y?.V ߟM rECm9:%-Tۘ%^H]2TErQVkܼy mc:E?M9gu\R\@pv&&Sޜ;GV}w yk2 x{$3"OĬ~2-TUyi$jSk-A7$T-SfO./z o^:yPTdOckCRذFV- efv7pUS^yR$viֽ<#T}vL ]7e>>NJ% mQ >r9 ^߈>\0IX2vC! -%~z,〹/ؖhz|n.Fo=G(zoZ,`jz$–Sχ`|D@1 .iCjw&.H۠I2t߅+/`%Of38D&M/=-cÖY^ dpj\;C˗Wn`;4"hUr滊6eDٯo5Ҥz%8Z;!`:7!ocFt^jYeet)3O ]YQmY? 1U:{I<( HSA򍐧7Lc#"SR![mFr}QD)ݝapC1$=7-4lCINi?S2 Y3~Aix ,g~#jP( HlBQk-\3{r찜I)w- ݫ=B[oS z!#?iҘR8Z_w_f RTʯXzIp-3;c 'b*I6F[zXe+n, o͏GʘcmOlvc?v|909UQ9z/M>4@rPNd:h"mW9&`͡O2ոs9lٟz?|sZt0/7BPz(nRS#|9Ai>{h3r}i G~Kl[!Z ᳠"ff h[36tM &ga˳](U˺ -)n BkuQpy(mC/n]ح+_[#P<ÚmwBW4L0c%4dOu꠸?"m6MM폣Rx,ZfMFq^W$x}3HuzVLa*1sWbQɜ{X [R^!rRʜ <'3;>֎k !?|1M'v ~1 Fo.W`s5] g4=1*b葰:޻qfcmh"xkh ʓ:7 uQq K|aers־¬ʨq Fi*cv1U:rhz95L%9AiPB{/A )aU>}V= +\&1Rk~x)(^lͳlN`zn|?<I pI]}k&U9~qݡMRyb[UY3Ȱ*A+[_Oƶo k?S͎ j>wJhRvw fJk`wo5Gt}t-֡?^0#F|';V'nGB6ʱ~[&4sDiBz М_7*4UTlN0K _&,9I?ɨ_Vǥ?-z*xCӊ8}Q2.K۩řζuW\`_525>Ya?'"{gv/jīa_i!aVXRx¨g|0<׌}TQ:|yoC{g!)5o]w@Ze< GV'Gzן~M-6UA _W@)SU4'j Zy3L؃ rݹ(#Jws1a\)8ہ_:Pɏ9X.`Q)gn0wUeYHyWCA\Dz-I_o40u9!v{]fL2,Zgri_lLruڛ#z4c]هOu ?!V[/[󵹷@L55ɓ}*; ,xCF% gZel< =>-.~ՓPiK- /F]I-\E:zX*Н9qJch6-g4'}|+Ħ՛껬ȕPM[~Ip`2 7 zB)2uw]}~_H ~tA# ^-x=冝7߈CȞ5,vA /C0$?"跧9ED (Ya8$#0{Hh֞*O|8y;NSư{_;8chan6Ϡ7ҕB[o7sCzL_R^MW-]s(!)@dW6itܶ1(Y*}RNs{v^c7K,;gA][w;^ZeC96EWoet/u )kS cŻ2=vV! /Ƙ;XxDDX <ǽvRtf܃7W,v-zl¯61_X&-DsL>*0v4mJDMfjSY JRF>?ܦ҅f"(f&FBʳ١kВ9*(}ͱ"[2qa灅FZ Joƚa:K5?`>NcԞpC!Fa,lR8fNQc['I9]uYg YFC$f7, F9Q5ܛ |x9#vs_VQ/XhwвcI{ԴV%Qh[cKS/<1nO-Q(g&JxG(:bYgXO4t}p5V=`Em˻ &̼K_t%$~һ#hODGb}cVO-[_UTcqdC bl[T 3tȎߙZ0P^Z3'/b.^"_tzHk+^}}Js[{na5C([:~9ۀ |]v4܏}&.Zwk30T7wTnC{@ y*F@^lƏH I7܀|;LHMar%H6OWae8譿f XKg-_da+xDkfO#P/ן!x>YIRcSB$OpԿṣ2NAs;Ӡt@@x(0b3igVv Ω&:}g^~xm$^p b{ހ{ EHu{u P_}V veٍ:hSQG ZcŒGR1>`L(DŸ.mT:'PIhrӱ@ }u>(WʬCŇJXb?@?,>P+HpR<>*#X'_1o9ۑ=}}\‡Pv90^<:&^DGH }6"ZWGNOxcoc̿ǻqGQ( ۮBu~sP V &N]gU<ُ>?4n O}D`V)@#L~h#e%#O{U? 0fY=8ȱgv3*(B |O*ڂU>kSyat(# 4m0~MQB,j_h:fW[Yb%-.U!"JM4K"0v"bot{,d6;=u o(Uc$u72@=d=i@ggj)#}m'1\"j6xXNd>-b+B UM_<(.s,X޾7eG]9)1 PJ}'N ÖXޡ\}h";ħsF_ASq̚3 dCoxFԔG}䂣a]D"TIhžsa=kys%X#cuFG&|xgzC#fV~J՞k7`hF)ѣqRot#&[]]=]J}zUd_}*~[M9+\wJUOߒgi@: 4uM|]:TWtFkF[PnaoaFzTIکVEQ7^z hה /kz[eұ6 A–x~Bڥ4_4/#FŹ9,+mw~ h z)wr5?Ka| RqQa-"uQ,&}?j{^g4,{YJls̾R{,Jj^u׶>&YxMF(sȚc,Kl_]<`0[{DGȩejaQX5olT-XKWo Ҵbe' m<}K{H@Xj3v]RulnDI(ooc-.2[}o&?a@y^ f/ǿ.W]*IB{BUа^PRݤ! Ci&{ǯCPV*[Ks"^]kk[3.CaOBAO(1U ڔ7& X;zWxM6kInT3Ad_E6c<O)Xa\() ƹgBV(0QN&T2KGvuUy7(>sT+7;0`ՄqPa"47 8!궂GXTѲI ZaĴG 2S %`*%3dD-@״p--Bwc@l0tcY* 2m.#:0 bW}A=㡛2JY};D =r$’X|[,MOtHLܤxt c[2NQo@z}ˆp~ 4ObҘLw"?Amy䐭!f湻?AQ]%(sQX(F-F{X{BsmLçCz0Y%%sw?^~ 2&!߸ q쳬Pt6slbfDOHmAjP*;^xcwo_ O?'`AsCh]&Z?Qs|sbU0(ǶzJ~N )}dN]2%`ܑ9Zń,t JsՖ]_0CK{U^/c3 sݼDˈ]*Ć3aC^#Ve| +4&SZ>U[gVƗ_/sC>q: {|.'% YD6{DK Ĉ!j6y-ԯ"5'IydgiWaO]K//ǝskfO1'Z]:Tr 7kgfc=@Va'hzCКCWq}kli=ugHhqBIOgEy>8SKMM3Z^Pa# -rBwݛ "ja+qlX>!iU{Uğaͫ$S*(+/C{o*bm);|'Py3'/ 7dQ:1Hkl6yqC w71Ycl 0}O*j6y9Ϳ7NMcO_S=)sOuaIR.>8q3ˆ8@%s?~\F _$HBZDhڹbf }…Cb|R3͘2b4%eEB 5}_zj'#O[q!3΃G{H> 2 #ztGsޮ|G< oYZiQ¡LgIB2 {/ap8G.V ?haa6r @kO13Z¥w[6aFIqIQU5`YfTIs_}57ï{")589Cˬ =FtAX|W$v74KzoUЯS)P^q>$)(¨A,I),zr[]Zv=Y^[Eհ:܎){bޛ=T?zADpT)!rʀvǫdR}өe:G٧0Q&,&(ZPhCM8g)]3L.48$M$JQG~[ږK|QJc\T<<Ϭgf'>sҥ_}X64 30@.?JAVsPWQAZU?Bӝ.iT>;{$r*@礅+eG"A=isV]ԌFJ=YceuFn`4]CH65ZZ Y".CZ=.sKfo| :KU6-*_afQ8c;  -S>J_1| |p3T s݀:%(qYAN:q%d. k"쨱9D$+h\Wǖع3]dQfG]n=$_d&eq^q 'l^c}d.:8U=<җqN'?QIm8 q]NNS94 h[Vc&>=vcן.3bXTqa'}Y*MbߊuѢl՛T.~{ 1R䇼`hB7ytW@9 ]yҽ0<^3>E\;%y2{^d~ [#oV 6Y.tFCTW]卑 n+!7`еϛF|͚=wB:MVsmSLU HvyM0<2Ag^;`:&p03*y y-hV.t[ۆS;MɑPϺAeNƄUKi{!BqD} PD{2o>@wM#(8'[v,mKkC/ˡ?#s5יT^0d;j\QeIv`Z܊Ch9N"Nk?*8APn}:ZCv BciTr%$.uGh9oY6~*@whr $LCEY^*k(SVNa%Ijh FR{!mo7s?](I[ZPIsd# =/gD!n|ۏuL[^KGEfyLlD `[Ay%Xe|Nz_ %t_9lL $-vĽgǸ-|,}d%&n@MbB/\>q 4ʉ݅?Bz-[AHs{ ATݻٝFU1'gL.41w= ufA7C»#!Hdma/LFWEdcO?Zp%ِ;Ge?$ 3f)ŃhUYONp$&,\1TJ+@?uv7szɯ 7|KQu{" ɚt6DxDS1Cik 3ƽҹ'3JuyCǯlTP_2>\b(UYs/:{ҟho2h}C)-]' /o kh.4UqϮw>+qf2Gb mr^/vn+f+WGݒDpmnhA&E/qN#v{$ 9'݀~v$5q٘eݮ8=qcXǪ҄RR)ݝxV+W^?'*]ЖY33i{bfk%amƐưD̶1eB.\.̒+~M#2&v+:簆eE҃'҃y0$~<0P_VI _s7:I㠐C[g¦0hs99"j=6#GG 3WEHw&d$@iO503O5Ybu`M~nH5 =iԠt^-83TH@/n02З_ݧ x}(Fr=>G5 7X_fN]X8 GN,p2c3i1[]ЇIlC`vP^Y{nl:nG)get~bDؗrxBQӾ*V G*džin[3;`,BZ56WE_׎bA!SF` kI=ágS#vQޔ5^_q5d8's~{ ?ܞC[U&V DuU3a z#+ 4~MFۏ縘\zW@ `;ߑ?}9[kP+vOwC RfE[M6sV`SkS&}= ~{MSsPlHU:;Ok0vfvːksnb,< wWKZ'E5*} XH#SY>5 MMr"7Svl( ΈCJϠnz$s*]/[Aǃf:hr 9L(Uc `(/dKZC;I/IQJC !k3Fv*%j {oƠUfXNFE~l&&ȅC]jl9iY4)9Z.L|˅vqZ! 4zqѶ-~.iG_{1K@0^؜2/=>*r:ُ{b)f wf)!BnvlO /ُEJ'b)`MnΔu8 ?Wbz=Xia~"h'ِ-Uۺw{N)ytذ>u@]y3JHᐗI]jC2'?B55;7Xq[rdrO~;n*g(415SzX45ȧ֎%p~^q}>L.WÑ%<}*vd 0MG9Djcw9G{]İcIGf}75Hi Z ?z{EqR+EXW2AWӴCwž~nuo܈AlWʹEt˪> Xنe̼C5DxbΜރ*a6H^O:=1&9 Cjd%8K}o6W;#20qpT)O's`jRK L;n+%o\pٌt_&V`Vv6hŽÊ?c'SvM)J`@Ea!3RhbPMj} ;'[ݹ:8P*5c9CzSr=?|-(-=v*=+̂ŭ?krCCcUNNg: z!),8J{Ab,×T-V)̆x+%Jer<-O8r ?+8|v(2cFezB٧PShz/ w]v_b. =3)v=1gL6X^]Ew;AoY)-L°Ztm۫Yt7~RTQ/)tD{0%m^0[VWm1¡X<|GghXTՀ욃ibXUL쇦EpKͷ;O"aWuhs(|T[O+;X˟![_ ?t<~3_n`fҐcֳQRޠ~xxg˃X:t4:A|Tp2o4ܾ!~ B>˂Xt(sH,A$6)/ĊlEPpA9;dUw+njUU|FY8V5߻)uEʾɥ%얤v8ui=[90T,fwy`yʖ2Tx4]hk!{l,Y(j tRހmkئ' #TSekR>q`{Qujg6愢i9} ut(c>\R 1 zA[w.}4U{0RQ#=.pQ&Nh1¾qB/Byre(=F+F+ZPB ]uxwJO̯@A'u&gf:}l?@+!qWOJn}cf멾82ܒx +NlͅơOx0 G"nX`!%T[uHQǰsqROYߕZ+~ϠA ,|#M/ w)Wޗ^UޔTPbyP_ ,Xg⚘ZXO(>HkT _jlH3A,1INI,Bsed9Sb]sV]?ߘh$6s2谛>Լ|tXBTS.]nLjE:%FdjO/i*8Æ=tc"y{suYGR0fҮ^^NeĚų$zW3}V.;%}VbVXN c?U0TfpN !W!Em~:_V[g:3bznݘ1N(^`e!lraeF,lD@]E$fLtL:'e|:o GO[`K񧳴Eh͒a%c.5o 3ϙǎ9uU yW 0Nxܾt_n7n*},gK֮"Pj`b~)Gu?u:r >^o1VΎz"9A{Q*YFgc>uZidڃPƞ(*'~ !:`BZ۹f*Dɠثx,jMDYYH:*MpkX?r2M4){0]g2lS Y/kBh]cX wTvF2@ +.W@(7ٻ^le_Cgg,5݃kB rێ7zXK2*,}36ؚ{[W<;{os0]N}[3K1د}?r2EbŇ vD+?Kjahjd>l9 eҷ7P@s[Uwb#=?:RZ,`@+6Sɟ8š{-s^k<^B}"G_u| NިC=Cт&w,LLgS~ rDe^BJZ6_){{>?-?a2dunޔmU&ʿ_]Āa ⑐xDF7pR@Ry1o7m7;!?j|q˃KwHfqopaC`='5-e6ϙCЫw~#T$( db˜hiQu_dR.}+PA$VN ;!^{߆fZW#G͊*/hy oSe ~V&a,Ԏ{+aG[`{^1l8B*pɸ|XQ}LbϙN6>ҠkUO\9y)nbĂ'WoB־yz>3>hM$kDZ$9&huhcr{9n~'-VgUئ)%|Y>"(|䃍ߦhr`}ɠs%RM hZ?UBϏ;_}1r~5m&TUHN M[~}LrȚ<3b%/$%n%ihO~ \_)CQ?rpZV>]:Hն&n-q@ȯj_ry5y> F|i*\dWҺ]+vW`4NۍPw*; hHs 073Uj|. t\"@Ht}<̏')eKs԰ TG@g9ne5.]?t}ce'!ס-/ h>3)h jd2XmzK;|P] k0LrI2 ǸnFCX~(e*dgOFוVN ,d$ubmp|@ 4'/w(ck2-~ ĶL 5~!l~:;6?NӬ[sXKCSuweq/La?{:U܋*˝Z8"H[ e3`Ӑ|lgi̎]صzs2N Bߢ LĖ5[Kzԗ X\?X%Pv|#`Y"VؤWUɋRE؛aWEU8>)cq Nq^x.u̒8)/+0GU o*Q-8~nJaue;"WSKW3_`ȓ>L6~ a%'7?r Fo&0Wbl9]U LˍSYrs2)[I!|k#U~;rDW|ȱ yxJ ,Wt af0٪5C,}M*נvMdn.Y(xzB_tN Ay ׫Q~ P*|!)u=D;JXI'R\U>w2U2lڜl)CڃyE!.hI (nw7)%xeSQnvOYWm4up/bBu'28Lo Yy{VTGr$!J:oac~:qK&zt1+H/וA ʹ4}e5(ǂ$ X5NӍaWCg=ٵBz'|mgփQ_cܱc2R"8'ɔp&=,k`x6-h\J3լ!C|>//t$q~ 7F8>y(Z&ԋ | qO'Nxx#Η?gto&ڿҘP)"u I^Ѳ_(n.͑dPF]ߍkəA-TZ_ \>ج+ ) op(,_RN8⁡Zwt ᝍm'eyk#6sM$8=۵sfNȅ0> m([?tXpcb 1Ԣ[P*\`Rj/ #Af){^+7u![u쬻Aj2cIϬ8DImMum\^+S([i45Fez$aPs`X>Vv*B'&3NoRlg餝CE](*f1֐/2/_r$=~=>hIV<Btyge/j`8k?=Ŧ?xCnHٍV("]IneA~v\ 4ZlA3Ce= s |мn qku-\ۉ֊3n?RˊVFv'cVJXFvVwүa!<8QFz]ME<5h3}GNS;0ޫ)19F1T})\-V?ӃBmi-3ԨhW&)DPzA]io3=߁:%qh2^}ssU$}z?,/kٰj$CmIp>jH:7+~\-(學s̵\hb~]Of@c_ݯ;pI[;%t<r7ij6L"ؘ+ZN ,s's!x<Ԛ_>xE *.'~9Ӑb 8FO/O[1szou]c:sX#sM*PƏ\¡WC^o$먇 [SqZ8Bc 3>VqLcyed?|ɣ^Tyc8TQq5e11ճ0w; E׷U @Ӣ &JK&?Uv0:Tb"+c\mU8;zd_?KegR/`xBá׷bAf]9i*>pBι=Pi7 $-HI7#лP[V0[olp<%پ)csfq"5PjULQj F"rI=`{ĥXuCz%rVV^17ybXq貣]Nl e)͕QSG4^\ B T\|v=EiJCB'kexC^|Bרuf CE'B[_TcۡqfIj{1Dż2wO`g1dyq-~E\*N]:הu]6,#݈̋{ƛھaT`L^txZ"n-U쒭ީ{{OgfX{.t?]%eYyZ]~ 랬۩tr)v0> U1 9X _d@k^]v8D6Abh܉BAYKn\L;R2?faw90>p;wn^/KN99Uyb=u_Ev4){Ko3D| `;6+ 9t`}r Ȅ-V̑"?&`Wtv~i 7`F/+w։oas@>X,yª } SrScXqwneXϦ7>_BP  '+1Y ZwT?'E֛iXկ_?4_Y6:2`aw`EȾ>X6{6O_//m;]Ͳ@E{ `T%qPLͯэkݐVWkIlX PC^3zis2*67 {=ZYL! mo~̹9ﮥwgP @͛f4B^LjA60<N8AO^+\s~}9}q9ХK,>PՙZBŏm~|o!8#זޝ]^^p7܄s\gFuG*&!b^go]" }*bi |LV{Ӡ}0zn9I9R)70%kΓ-+Mڂ+@D5_PW[.e 葜̀ *?C_3]^,FѾXL^NZ처NHCA_PN~4Ҙp3o{RFTRHPTRDD6E{=c3??~}t]5T@m q&C̗ nĪO,4?t꧅0RUq3U40P?@凫&P௙z#xy/dqfrX2:jYOOCӟ˟rjpY?| b~A靨mC&rRp _"oH<2% o/c Ug,ڒ4[Bn{b*/kNB=WQ $M|E'wɠ^R5Tn>G}*^BoQdr_# ~xsLYjٗY CW݅F],"P0ZLQG;T\(B@0n͋A^:Kf<ۃFB tn7 'R.1sAO!fUg%bxtOCcb>5V{'Wv6% 7݈k=|mF*-f`՛bZ؜:@| ؜F))]vXw,ZY),HCsՐa"v^TN m{_ch{f,32Xt!"5ɏĔ/MC@I ^^G9^#^˜y!#f{  oOcëϗ׆YAƴ\E8a&٣MVc3CWO6lpr*]:_>8ӔBCiX!HBd 6㝺w%E-ϑklX~7k_q8w[sq} ]ܗ0aQ9f,R:\UG -`~ZX0?e-9AAyؚBL{_3)*"D*mΨ^_,_m[yVaGwާrt!̰c1X'gZU>9gaT䡲bT68܋$Y8ɰӯ+WA$>}hsjgV'Ӗ{# Ľo;K|Oov<8nIg۱0B3.Vr^ SM6P,/, ͭ~@u]T/BVC]]:"D;4/;AY$ޕU"Aw!R?~$cEXE߮bν+Hl3Y+w@{ٞ 6`皊بLOtܪE+-!FnyrmbAz\j,+m|EPwo5eU=cP97g;f;SʽODBIyluKy~XqIh`tg ].k?@:c︪nx?<ז'YJ ~Mzc!uno8ndCLM]?qO͜<ޭN\V40c3O? :G2xadRZh Ixd $ާ(ěG8=8c*!$x7w`+Y+*l+%_Q=‘%8Njeх#vvl1>0qxz_agspa_"忬\֜85g*CXp+@9,yG-&E¡c$aK}$|.A|7hW0F:ˍ ԱڽlPbK^o"VlIv<6oZ zп(νHXTK]1Ǽ 8;jd~ZvHǏj/p'hHEYSpvjQbZ$XN|h-7 s8TUhRk5 t5;O%or6TtW tp~%J oH LDM!Z!CʐHlsR?EI45Ɯ3W>3ߨᐋ*kyϱ'j/09 g[vPm0< C αat53 ߴmeĈ[69Pz׃{/ʙ =^P6$ݦw %-/BQ)a~d;-O{2O 5)aLZlN <4J]Pd9Ʋ0VBySИ~rcG䅺kM^L#K:F \ ~'S@jXr>sGbQM ~./" v˟? R.Xh }ƀȓ]g1t)\PS'WNB٢]P<}khcLbc />H9k2veiFWf0M>My'B F$ivΚ2[E$oBGSq 7$w,=>NzyoΔmQ"4,NLQ$楏P{5k-Z<| ⏆+mrպJ1lU~)d9c]ՒB T_r؇Mun jO =Ӄ.SګHV01hNPwsl-@O/I] 34&|/6{Hbg\&!#΅[PJI̸K 7ȓ d]Ӻ[bБ`˛v|IM R W!nwTpU)rq#I}E0.uX+D\L2.Z~v?s1¢uM&>49h3SU=,kw9؉,7;d< v͋UB~pW`$ZRta^RstHOХ!P_S5h ׃= V̷Yh_-}yActS w>p}^,d"=z.T)Pf;̭XHX1}qvޭJɮ+sa3ZVX;THT#p*u@X`d)S_p*O6~,5ψdiZ=ٰVÒŮe'Aq3%hNrg {~e[fmfoglUeHΗ cG%Yv., a;gq?2PQfQr>/=܀LuW.BGBɸ]H;A?BVa鋡_LU2a7ykCٹoz%VzV'x KT0Ȁ͂*͢N&9C͵$+CV5ґ[,KEb~q5?J%J+K rIQUJ)O)sdM@U}@ G13hQq^RA36bUE3QH#leU9}?^c(M,^KY9aA|2^|U m;T8{L}g<9 xW5lZT?0ū{NB'rBQUMElѷD׾S!BX'<~;U˝8ou>%`$/idžWa>TN#씞*tyi IiI!]Xg[ 17inb0d'(z;>,6_Pw d s}QMl\ <=hʍI!?8t }h&Q/*}zGegs׿$vu8Vî F7E=tԬEƒ#ɿAQ$iGY~_Z.ɘGOmCcrړJ$:6/d篟n/^)/09] tq9H!ϒb'搒/WDlҳOsCË>@*j/Y;Aa,4wY8S兯;Cbά~fs؀̷K#j^skq$ȩD,A+ K+lU*9l`h}];_ <Q/A{cY/h%#r{þZ*9WУp03YvݵӤ\N}W_rtg\rxZ>]G+-X!\MJML4eRYjή2*xy:ΎA2 c*8^s3Q^EP29Brg+PMK6f y=.[@M_е}*rp%ddȃ`&ӟTpp3 wU孡E]9pp%ǝ= :8eB=DU?>(<₯>9F-md_p@Fʛ;y7}T߭J<%w'7Ҷe :,SE @B͡-h$J ã9{uׁZjiN7 -;+!*f/VQ{-^B[E1$4%, b҇<+V"aƵZW/Iy'Sx< rᎰ|: ?2]{? A|%>J纓+ \e='}Qp4/dU-f͓I*̼GnKXܚPa,|㊥fOs3oVSBpvDjt)$ (68lv7ڛ dFHul7? !*GTC=}e;Bf {agݶ 8 (cpDf)O>r*WƮЙW&F?!iy cmG R)sA"`*dЩȑ@UgX[-q5~\#jtůtؒswbSQCڧ#0`c*_JMNSጦ0`N @n{ݘ(sww N^ {jDq*qpU(zWFrǕ 3]U Mjd=P={퇠tё(2H]b}ލ́݃8qxW + >!nhuþ>:Zm&%>} '<㿊15XI7j'  ͖Pӓ<M EXI10h=dx%}@g }.gsȚұuWΧi\I!,SGY8zS=1GҰt ڸѮlg / .5̿bbݗ/s5gQ~ W]ڃ*t!QG;%TpԑBH\c Fi,bALuSe(Lz?K{)ɞ|O{ZMtuY~& 2(P-y]/OY[>NϮNڧ^bVOyj,:k[tu.nN6xmN<Ey 5rۨ+T {F'O_|+ Cs_0Zu,ajⰦ>'N)Ћ!|uQOm c};{8:y<սzH(ޒY_٪^g7y޽GPrg@MTiOwI@a`儣c ޕIX$#C滑J/mws5MbW]d~xLmD[gKG`Ӷ$v+),MXW; - Uz'÷|n#5.ŪMf^f8dw.i68gQc|itW0X↬56n>†NdXY8C7q`E dua?B-Tئ/1cn+ j׸,.Bџ>)|ۗhHұ%6Ab(uȧ]9y8 w":0x:B%x?vrv?rlXonAȔ5Eڈŏ ~XB4lU ˽oHo\ehlQइǡ3Wro~^Bt BkDrq&Մo/e87ê/n ΡK/'y0o/| d[qb/~!)Yu5ݑe^/͙Ls*3߷>Z C1I d&F6"d͠M929Uf!3|-2 6gi rze~qj/c$.^l3`F=Bjt[$$_0]NjeG:Я:",{'IN ڗHsjr1T5gH@̐RKL¬֧b+PCiANwçˤbCR;S|a7I+~0|D)Ӝ <_rX|gK<65W~`CbwhJ?n'k,oy ˺}(193H+\"߇ \+2Xo!T؍%2+sGrdDe Ƒ?֦h}!>;;gYwgt7/\W9aw<2\{ߓџ,χ3~ndX5ބ-cI {%jsVG.±qo~5nx~K݀Rx^; |C3Q<,fCRE(PO 5>+N>z;AQĖ.M<ιcw *eC}@w{bmb~&jӦ_Cs(1yAS QA)GzL _2M/Iɯb\)Y+`kĽgc!m^o ': ^өzQEbNPrtVjme[P[8֫ny* ,L,G)4f{w AHSae4iNUb􋴘0 IǪ "_^ClƑo#亦 ?U=aUN]֣oY^^6ov]`i^=5rCU ;39SSCnQ#/AÜ],B2-cK<hG=j%rI^vvzo}e2Zϵ/D OЍ9H) ~^{-LBy^:! ! OwـgboD1ѷdo2 bt[~AWف~I Q~(BYuzj.iN[L#Z6z[5O)p -X^^SyEDW?b᱕{!N>kˑŸo7f,Cf;(?i`Ɣtf0^hb ‚3!#1{8ryYQX`n_ZE-mӈFy0/%F{u32Qc1䰩1\k( I iÐ.H~ܨ!AGZ8hd;ah'8 "ę'T #I&3 %Ӡ|8*Bhi&;fW?~͗٬r:t>hF =K9`YՊs~\$aw6M՞׊3Ą>=N!85uB!pNjwa8ec-<<=[2٠f.}OLC,uHkT̰|\DS{y_0mw !m-ve%%q2>zu߾[±893 {ӻQ]PWnv?=ԝˍ뀣RZ+zs2Ur8%Gbsw:u;w”(/`"H{&-?^KՏs6p(:F7PTC 8`~ݒ:$0 ۩#us?ĕ'bq}ԥ14V.6iӸe\v̌fCx)Q ag-ؤ;E;lY9/;Z~o*\Vtu3T>^ZwAݏQO]82O&)H`W|[!ΑѶ~h8z^U1'̃w\bwѭ<i<8|+ !sY>pbl n=W 2kvC !#68 lEd+uܿIgCHs7-}>Sc)MZʿOHG]+YgN 4 VC`tD-9>p$$iĿa$f >ݫ%P~p ]|GloQde:Xg.SnދFf05ZngUR,`%g*mT ѧMs;'i(f>oyf 46}e^dciIJtn#R) ɛzad~Qt#LZ,BJ;G* e6/*pC]x6h{q,$sмn}Jbn5|S9Z{5Ǭn$eӐUဨ:h\+O^~DŐKZPsY OUO;5=-#wy)Rڗ2Dm: Dl>"F={X=䌧 mWP}P*}K0s"~^(u?OO$JBᣄcP$C4>9wm"L@ O!®k{/y+(+ fe;p̝qլDy}Ne$d&AFRGaB+1K, Q =cOk-"ͨ&8ԱƐ`d1Їٰ=!KS tuȩşoˊ& >rS55VjjAݗ *MM98ph-"`_]A[ac`]ᄴ aW}4ϻ-KsJo/; aO=(la#W v~v\)S-,PkO\%hyc N?#ѫ&,⏽֧>6mYPW)~ ' 5dG!ʓwG0ۘuZW"~Y~:g5<.,<'í8.elF )%$yuX\ΗP|(+/yCbu—[[;/oMLƩYӞX@㞎E5S{󡊒m*|4^oVjU/|ܘyjWS5`JygSzz(q*.܈Q9V^A}s"|㱺u'~Lly:w]*0]nt3'd^: Qͧ6I>bg~{ V6}Y_ɱcFW$;ј;^x>GB3g0He;,,9?b7@\A0_WsAߏaL_~_!&s;N2?25+2c.RI ID2gЙ5gd%VXI)<jvhh`l'쇑}?v1[fGɋkj;upGwS/RŔo^LlEF:XeMHքgu˒cU0|C;Դ\W3Cc"A"xa; <,>-v4p7|e,+nW{+6Xv(1>%}X &o( ÷-o5B;(!M?` C1W'aŵ +J,A (^Mj6W8x[L3vcGOXr!o| ɻ$bgVhIpLod8 yӍFlKǼ8rkٷUCޖd9mp|UxcLd=>~0FH>F-hzwqĔ(mџìR]IQcJɏPXu'ڣھo^5v/iy}B鄐ri6:*M&iTGb^G卿yɚ[z'nlz;j:yKa 90~: 'Cג-݃;jSn/dݐs7aX5~Wk[%cqF> |mT}fH3$Ia}0ԥ`(֨.mӿ {zi h_bBL5u_ѳKJP$ o@Wۑ3b<btϯjBg!|ôNǦ-æٙ䥀Mk`x =J Ñ)B`y >KjڝMJHh ܠ^sσX}sdQﵱ ߲_1"SJϸ,{.k)HخWk߆Pu80e&xA|H8'#02ͪ#!ͳ O0{=c/=^c}L_p#Enֹ~B{^t@7˞4|\߿Q՞cMrE,>l 2L>W(ԡ'ߧMFϡR9ǝO< Uo %Rc.܁H8?3 DgF>U`[Xgpx&ýnxk?yGiڀ{KvዃAra)2w'/fcԈFCSpA ߠ23Ygqb݀xF#WV&U|eGk)^l#hFz=[8\bhmC/?lBϐUw;Z3a 1Oi:N|a HfècTئkUxx[ͽ鮴u^/ʳoҡPO 7S?(qҭ&DwXXBXڰg2aKu Dw7kvAVPqN,f J+՛zSaA='we&UȮ =>*}׾; kC<|NXu78_aʠjd[)Y90Eݗ,/bI˰O߇a9iA!, ejɵNc+ 3λP"bH$CT,E*@#z0SI>fr#}vTkNaܲսIxZI@[$:!Iyv^:t??ZyFD2}2Zau=O_{]J7# v[2"M;+~NMx瓘Ό΃?i/]kxÞh~37NMKbL0(H[:DEf<:o}n)24@$L|MF |-Ak=[i-^E uo95O8$G]5\gMP%cͿpq;} V?h1-R*='-< z.)8o N^U{D88yiZ=sΖ/UO;laCK~wY>Ob[1 $n&szX/{cjN?}-K*zUlgi<M 2)il_'-Uw^c.[=,= k,¦ܫAW2 ;u5v5F,y_zTKZP=@[>دNYy9u!GwOz/&fim#J1:q=aMM M|s?>6bٝY;>45o[NҬBYh/܏;D0]Rþ'r wuX>V4\sJ֗Q=XEM*`ȄPe} |m1AFKQe#%({B3qc\6 ˍu < IcS{qevz ȕVaɉвx[n948x.k\P7Fߤ+)r%BJY~hC/^ k"So÷U˹z=2|?Z =_@so7٧zohyMǣ#ƕ+tzOGT¢-Po0o9'9bVf'q'Aǎ!LСr_涣4;k*ç_bg ocvLPM9ybgAyK^>x#L<?5o+CKQjkaسy',kguOV^=,uWYbM: Hcn ]C/v)A֞.TrOz1p 25^Le=/Rl-[*}>՟)߉Ѱ]ݿFkl! ߞ~cAtPbDi [ǃQ9Ehy~h,5?REAz 87JЅOUwbsC8^< jE?ogLL:@ھRrHQi*8j@Qj4 YBbT2cx}-$:s|4Ɇb&zܛ.Ӊwak#6#*VHpRQAe~V%r!PD-Z+cE6s[2w12se\ =UmT`,Y8a9b{ jYAQMd*$>rZ^XPBD-ݩD.jо?%֚?Ё2ca,Vz -+NĚ :f $&~- 3}֡!ݟN{q{KkDOO\y^7qW{wCǼt>b"Yñ85{feVDG2[y,4 Xhzd(!A.|"1c0-mz(Q PI˶ q?5U/.(T#NlAkw4p{vSvːEAUϷw ae?"Е9qj.ȉ^0}%nPnDxIUL/g $Pa~/pMZh,ey(}f26ƈ5j04Mc4yہ~h`p݋Q>n UwB컷5BQuRRt WP?\JBo o^Ɋ˘Q0tU.Ev job7?dP' jiW:}C.+TdtHSjȍY\ }g,8:2=zS9韠!2TL{ͭ=9[ӆ 3diotMr_sV50ﺗ&YM"<<)U3WFgMYR93r*e5A9}aHߔ8\m+I;lÖ%ˎl:V CkG}OD+a} a &MEuGuαewF q?p,p$Ay߬FU;nfHǨοD>#=?ˆiV.`)|k?ASrIɯ5kb͔A 4_/0JL@;Va0LQ!EV ?C;Kɑ:h{to*QQC/`ŵZ hiL_-d7aƥs(9ZI>+-yQ"Qtr\-CG0rM:?$v溓g4Wzb.g^+GrLyj>/C%1j̿ar8Չy7qcj3K0Mc.t|%?7 o7ǃV:yGLֵJ1aj͝z9G酅N^4'T?t\lڴEݩώ=ws̖fS/ūrLiWO5Ă7ᗰL{~^Knۮ} ׽cE˩l8ap~?(YI!:?_}:#2wyWG65<2komY#' EvL<kr @$n֨aɗXMz`8Df^saX%`37\xy\J5I*%67 }* H XBk S/-mSp6@D/o¸Y tvwr5bT'Thק_v|Y^q-/nBė-hlC6|?I}I#.ߓGqZL?$4"xS6tBRK.Q_H10 rdӑTso4Mw|fV7])NRu;9 ;e nXB#&\x?7J¨*=%U[Vc1+a]{zP_7r׀'qX}i+%sbOl|UչP#VСw~豂Qυbry$AuS<e}snl}~ ^gEf^J J`HC̅7ZrW̘vtgvrk*!d+̴綧{fd0S)x_ڐ?NqBӖk"NNL#&:@»ۢy;9{n_3h*utuɠ){wGկ%fvڏBi(.^8YL?thUjH'2cS&=~>jY / Y鍐 +&'X؟6J*B;UPqלKҥFBA>Qr]lS#?>Tje "yIˉ`= S 6vXiۏӢsg -ſEal=d7y[ $v2oWX@{\ob}sAΌcU$#>s~G#x.\$ ?h>")HqBI3>hIdMM%"g/©KAn߫XMª<ɽo7c/F6y\وv|50Hba~9آU(jQM+0E ӛ)XO` P?OEQnlxϰ"5FɿBmc6ۘ^'>=JثFԔFgi@Hh܍w~^ qȲ[ Nm©,λ[Ҹ"h_&okZ2|?b;,=+ܘt`CrT//bfFlq\S|W~4Ǹ[" $ǞA&onBCn a_Al7TjòOH`pw/4ǦK+G"vB2 ghĆ(4h?tM;3/;5G9cOqY]6TL?vkOLi-8!Zk_NC|@fhWUqxUǠn(InhjҾ '8y8Z$[whկϼy" ~kJ>u1TLwWNҼ22a/7G03[ _j†/t8*TMR6USYna2fJ㏡Pv,*5tr\is5j*? (~NS{*Z<l8ܷv4qUP [lr ,A-[u(p4 7]aEy*̕ѴqvX\\ Of~CځGF9:͢O^Vk50Y[^W7?/s Mm{5sC&] 1hdncel F9Q9CyP_6(6fȅ-"P].ek'u B^$h _f _ uozF0-I\5Ffؑ7ri\,Qr@E^)Ԅ. >I~TgzQta-}.5H-8LJB,).-z(DALJ^pj$,yQ'ߺĂ8s$©BAq YoRbMY奆={u 韔:^e9Pv,|'y&_'q<=$Pyth:!vT^#D^f!O7TȲ07 bo䅒Cϭ1Uk.Ϝ=s9"wM,߳E}fU.W//i`7ˑcR1Psʴ<83j)u1 Ձ* 59.rS:E.6 ,Uu$&vh,8迁Ţel@SjAO6űFBW&/D[{ﵧ??˩]h~x,Z2 ecDXl#Tmb^|l !̌ ɨ\.bgOVbaL{,kKC>2cq#rl32h AA98ҵ{^nwNb1a:jb7Mm&]9ݸUYVm o+x\NcZknKª/ra\˛(X[~Dh4#])a0h2?P};6ۭB7jo 4;װke:5אMyMwKd] & ()Ua.-fu߮ N}UKgyp\uQޙ}ۼmL1vۮ@wBɿC!7H}^09A"c~aCڴCrM&$4jqȁ!$2B):zQ%.߄Q߇07gC)u+o@˾jɢ\W I>l4FOx{-\ÑvdXu:) hL,G%:;̣cCݲT_HBƙoe%bY^&圽g41{ lrQ.LAzOhY id F]G!^I7Mg!"N>b"@c{KP~h}?~mUi+|zÑ ̫tk{ø /=ίAg׊{(mV[ ϱCIQ 1}N>Lۋ+rL/t\о5IS; Aݤn60-e(ຠ~F??'B:[ && eC0hRvd`vôUvG%|w~ Zۈ|,P:C.tYΫ@iїIAPyo~ݵU JBJ=tx EZ _5S"T>ԯ:@Ǚu1P%?EW=:6o `'T{h =ShTlX@ha'r2?Gn A|m]أ/xIo!#XK .~6^ahӸ{-Pvqfu,uZ莁d/("Ɨ #:n÷1x umI%j$$п)%J^(b{R/䡚_vC Q>zr6hEp:UL-TKTޒn\ɥ_XAԹ4TH[@y6눳eϩ$8NzIB1ʫ KK ԸG-ۺ0,)[BE aO:n@y vl:@O UwTSC8'fnXAEݧ'3ĉm~ ?X$k8ojVܳyVP^_lZ.=UZ<_\DS4= q6\)|stּ^}UNثBSWQAcz8aEVY?OK]?,8N_VTGIty諳xxF&8xia1E`멸nCXZ9WC]%3O~zhMqq 9=VGP^ˎP~7n?? k!M ƁХ1wTGw $%NђL [/' aqW( RUH;1Ǽ q# A<+10+ņ_E-Iֱ,W^muUXo${ToR]O`Mʩ_ (߂ 6}'\a3x7C8[&!9F&9=z}:{;bkӥ|cOXduF$RƛK-7FNa֐]Voe|߃*~plfͣQh=kB02"U0EA2nh W5|~x/,-{a*KFlъPS$L Oo?5 y:&oϫW]v ivr_Eaq%$S=H/uUL)( +֖>aċJ;D/3E pv_*SoM9+Xb#z5Ӵ0͉)[]x9ubKq6q~ԅC$'%)QWZОgpІ,C\8KXQ׌/o arɓ*p@Lxڴñ5kqf+~R;/q;,GP6/%\p]8m.M Wla[G]̔Ů;d4{3?{Oogm&|&"a_/K/qIg`nMz :|'jr)_VKkDHk!7`heZ" _;beMOE<l$}>L^c{'Y֭'#cTJ֛N݇D!f4Dm;sN9ȫKX95:X:R00W>.>'g K{ISdMg3f`aL޷y, N)vٶbo{+\8JarGʅ{-N`TlZXb/e5H 2ʨj][%S/4O]aEe?mȡna׵[5p04e3ɞ@U k5:f|Y6RjzDhqv !5X1q0|iGd41*44F:N'`دOޮ̆^CiGқ;`b_P&Bq#Tޙ8s W5*;bH[{J :7vQ7z!K?Cիvcа?ݎR/Υ}scJs|aIQ!0%4R˹䦒c`^P~t,\NNo?ZôG;@}ѹCssXsoƨvSgA#,/\Xm m}GY`}sXj||lzxL_]\O4I9MTi̟BYnuY_PsgjPP흅&:Dς@61Ri](}mJ jCC;8=FНL^΀3!R&=7}f-Tz>aM¤j{"p9fSu0GS?ql tyHj^jM÷K$-·Ԟ#}e u4t?CɔTiW¼G5~m!ЧOAmo?uuX"ckfţLnآtDq ~`7eK(ӏm"'<"=)B6lH`y|F;dWHu(k*4L6,!>@3e37Ϩa[ '߽qϧm T6%:^ƙ))QX,4d*jp:3Qe:+ [CI*s*w 2iUOE^Uc+^jZ!TvnaA[cDm%E/i^R#1Xpo0t7o>ŗN=|P=ut4{_UCBI70򐣠Vfۍ%;aI mËSv)8B1z^Ce D!Ageɞ }SVNRo;[T 4VTqaӜlLI{َd~E6W,tnu hj&KWtV̛ukb?h6{F, g^\Ũʹ:Pla0lw'uU6Aus iO~~ȍ'OBS6g4߰wЉuΟszIo|=b3IaAv_!!`M2e^[wS9Qu)$2ҰѮчZ9z TD7n@Nz((^d! HNkyCi$h'soB2eG6uhcу_޻b?؇fri0Ck^Va;}Vf?gUK@fykփR{p`?M oxEHC?$о?<坶#[z$mDA,&fcѫ[HZ}<.āD.Ӏ0qYAO'mǒ1i/_iIEU_q燲T .,[:u) n]MtP3{Ia8 n\Gs\TKz?:MV̙ʖ rK_zu56Tm~9>+~cVoLָ#O aQkl%lB< w\%UmI1x\Ss(x`[nb1>X95sE6juBELvݾi Õ8.BafmW$ԥ cPɑ9( ߓٷѪPo]3Ɔt$i[U3`*@R̺|G|;Qx5vO O14(#Y3BXS)PwT0a̹d h\0!-!2 f Q8<2KRw /bJ,k/c>sC+=Uqhݫ%Y^UĚ;vqS2^¡y-{q!"Eޝ>>&M|{C(ס@اnyP~Kc|j Rk^ֱmI绱 !~tŪ;V)b3=嚇0i"dzU`IFߠэoU3bNF~%[XmjWg?X$͝tfi^zbgNh1*YɜgAK_@c#Y]Ix޳_t>O^d"HrL _\K%Ɂ9x[̩ ̧4+ yRkXqײVM$0<, 0GU뫛|69o\$6W<Fn$raS }"lf %XZrz";4 :/è\~S;Ԗɣ)+jlUp:/.-}/'T< &kvXHj`U5׮u`_̢Yl,ImPyQm?|ik}B-9Y<0G17&t`~o/X%$4G G`L,INܶ=@ C&-Uv Y&I.\ڏr:{`"1 OKzh,`c NPRyFgޘ}fa&0k~8(FWc0Kt4R1_S4y{(O'€_r 4E4s` Ma8/[;t#aA}: \t4˨r`oEF&ÐQd7)pj+D*V-LX1.G>hN!{ZiZa7FV`0<aB)'sޔ3'D?BZ[̱-(-Wϓ9A%7?iyV,^&hmtZj)VH`Dvh 1 I;TFOr;$]p J_,Q`W׫~^@i+qAQj7)LEt|&N{*w8KbcuPnAkBmQuP!2tYR3l?2{>&Gx1Dl(􈈢Q S&q\Jͨ,[zS"w ^mz3~;#NY?[9/C+$ZآjeoA-|5~&O{C3ǰVݔr/'G'[b= ~ e u.q(r d7²DERz8a >G3n8Cl=s%ϟ-n"Ƀ#"As@dh^Lq4$dxi]P]G_o4y_ۃNHxi1 .Njcƙ*,:|yI9GsrB4>A2֔}htQT&\MŠMD;_@v>L%6x 3Jߝ̘%hXӎ(>E2(U>\2v뷼0e` Ғ²v^*dU=0:&\ߞH Q h4KvGe(xZ^Of7m4N; WDiE3EQ7=z۠Br5Y%4 ? Qxb U${ipZ=d~$xb:Yء?m.oŵ[3^b[Cy;KQafOj\Y7`6ߏ{TKn ] 5Z>fSDB'PYƓKA)χ$\XҸ^{z1x*{GHgYBmLmB_QJ=Mꃌ#9od<̱3PP,ǹMcbx&mgAse{m[l A$ԓ*~( ~auٛzS}h -}7_Z =Ŏ šͼ Hm-h Lu,y]ndK^@Sr78˗|g}aŽ:Y(1=7"b!1BFd _9֊) X̠["\lRRƜg)O5+RX1(wm'V}{Lr&Bd;H>xϮK bId So='ai%>Eiͻd6erUd؇v~F}5SӪÚU i Ѕ&V`t./ŗ1rZkjܽK(&o$b=޼X^ oY`76\4o- _쓺oVN~GhᮘbeCBuk8-Ň}W6@KeįJ&3Pa:śjVR~T {bR ^/"G8vU0EbOy- h}ȐNM ^R{TFTl#i\hV3DIf+RJ׫ԃ5iә瀡'EǪ2g?]5MKձ:MTw' ckdiȗ%NOB՟CI!a3|İ} DO rC]3v*h~7hj6mHHk5 %O8<[lp9%v?3eBG :g&D`W A_2d/a1? ^;-ոA{дner~8 8D[%:-" 5pQ\mt'}wZB|a7Ϥ?RgQgPRfs[J1Z4!WbUMMn^?_KO(}]Vd**~&77A(@sEhWEh:T8|q.{5%@&~β .B3t+S{)"M'G_qϵuBK-u zt1o_W?fBzP\g=uƦ_lv W# v.cr*vȹ~oW۴|v `y.+3~- IqqB H>d6bWǙ Hafٺ sk߷c~#?2˱X~ U\ǮMCG..KX&J?)Sg>͹#$ #lg( 5J>({vy~Ty5 -}~ 00L& 1+:4vLD-т^ N\|0)hϊxzм< mVcM1EVrG9&Z/OJ^gŬ=qx{IҔ[:dPʄk1f->,ZV ~'bس]+7( N:f0y,clF̶tW2pvhV[~>$nt.7rSCϚ"R='3ʼnDcݿVLwo{j̔OA٫1is#1pG4oŸ٠3QBy‘JT*q|TV Y=Dgv뽾$\+'I2<^Pr5k]L)z_3P:2 Zʏ]TrXchQrk:ڤ(|ttOd,=e} bRI;PHaKܝsmM,j$[ ƹ7¢B3lO=*-u:{\h2SXSqMIV6E:灜KɫԷ0xy+b8aԫV vɴ<+ M < k`3KjI,x02Nnb?g,?j SzΓ@EP\ڒD/wٛHיO4 W7_P婛1$͍M }jvx{0eJi>9㈁H3(|pHz*%Dz4O3C{*Pw>l0}@+qW܆L:y؝C؄ mf`bhϲwZ SJŨEv?'FO|mLjB϶[Pu "c6 C &9C$!bف8g&Uzg$ߧ_n=e-qBߑB/{ =o^>0Iz#XTh?~edeh :NvomCbNg$&W ui2wa诚},fWj*O5|.s!d Ⱥ?VCv O sn Ï`Wm,]P4'/`!nrFf i+N moԼMCxEXTpv1O9(r}%jPCGrO:c9CHȪ ˥N`ˇ-6cE[DoOp@ʻB,cLW7.g*E'^irZQ/Cqv{픤$|J4VP>xeu`^Wf2úvfPr㰒F:K4>q=GeD黌OXz_Lwuwr!J7z[1M@^jM{a "_MB5և aHeZLt1^9}JibOj)kl3h jߡ%C:D7v(.Bh`, d#@KgP0YTc|6܂ ;LPv/>͝v)Īݼ͞<yb nC5Eʛ P ;H)?9Uv+4OԖ~ӟ3".]w9~ph3aqS5(.AW&Rdt3[qp}^ϐI_'9/^{֋8Gn*uC5$kA#+?y+B15cǡRA;VrX%dV] 5 o@ۡgRK73f@ѭܰ !bGi)-Mʎ-I/u}Awu/FZ+%ȵŧtPktƼ*Hkoc!L-Hk{4)d 7 : ٵ U3<߅\X,p FB,ދۈ;q'C*nK 'U9) ^rݷ7RbԳ\sXoK|(ֿXU \?

a0uApLiۯ߹*yHYap9P.+0[-Fop__.نN xkg#5-BG{`4!Y8 j>a"R|/:G{~ 岝atŖT|42~AηUE-waTAq"e hZ-(B3.#lΣ]70eހpw({_0g'y L|etz?%ae~^0&6P |a30JRqO2lW`|:%iLߣ迌EM<п^\]M dm0r%ud~ .o~ݴ2\y1ny j乄fa}{9zd=#7=2cgp]lRL ϛ7\:ҲWwScy47ZB;:~˗[w]ό 粻w0N&{V_Aw-wڡVH\ݎAC/ׇЮhCT)`6ipi H7|M߾ Abhw)~ξ5;,MW|P{Z_^𔣅n@ >ڋ'~|Bul^/la!]]RFd*M̌?$e k+^z Fs~kbu&h?hc@RqYX{OH,fJwi?&O߿Ў'IjfPT@XȕzB|,IK^ :11B_M#бZ- %M 0#I_zUɕ=Ĝ+%@ڗ+.XwΑ|76js~ĩ,~XeV(pW ͮ>後XaUըf3HTcF'aI+q3.Uaֵ{g+,C7-'K]òU|g?@-cl ?# 5D$gNz/_d4[@Cb߶qbݻgCq`g"olNWKa?Fxƞ/9ym4v%/Xmnkat.ds歄كnAo%O`ܔ!.1.]œ?[<(Ȳ sB-a8n_v_ ddf~m՘/2tkFYCۢM {6MPZ“+ x;ɡYhj+vFGS91P9f  PCBm>?˾5L/#ʇ)Gv1˄e,+6i'`AٴǙ1VOP:7nR/QslM+PrOa;;yxSbVTt]H$NaK*l{(?Lb*N/-pJ?\@B4MhR q1=hkw nrWH 9S#[Wdh&jY)w*|0}D2*kzoKB4=ũ D{/im a1>1^SzOͷI[0{WmQQP8,?ݲMiتр4JMw)4 l-146X!|;c%s7@:(<}- j͞\/'Mмsm'8ΰoºVivTЫuu4?`gb-#rx'Gb˛ؠ;MO/[+ɓS_N!+SB!=;n"lg)#g/xc^fjHkr߭#/ٟka߶cES}#f= EwªM1;`mkV[Vw'Yq%Jg5c0?ۯGSabA {% g'X~ARm 1< E*Ր q.L`gX_8>yڅ{-n%ϱF`x 4}@ϴo{V 'Z<*ʌU`,(ra?t hB[u!mNOۼm ; B Ʊ`GaDRl7̬ w1I&o$V>/|l;CQZ]lp=#<׉ }ۖm>dz6[^~>n΋XI$&z ,XЧ㶢iG5]vt|28z@8)Bk`ee?= gYJ+t O6㹇X爛:)~zy s+÷SUyh+bC}fgn53ݭq$ڨT x|Ui}$q_jlsNl~pxr w?"ԨD*Xx9ت;{~h'$,R*IaikU`. q4: ]T{ c-)X yƎT~փĀ/ޯzCWqϧPv8+f'Bh~ټ j7_Q9GDs5 JC|A۲[}t F aRgLPe{7o͘6؋뵦7w1 n͏j$PNYr#dJwc=@qgU{a 菒| q zy&یaڑe[EE}WnHv.cҽxcV6RoVa4^D \li' LBkۣNNXU@cI#&YMUq` >K(JcDb= n^nij a\BPhK۩H0ZkA%)-TX@/NǘL6 Hfa[[Kٳt7sM42fcץ*{3azeoaR}3H7xgIps@c_o|U*з3޺a{ %Up-G:As'{u7ՃtYa\@ʟ,|<"ʗv0`1>#pQNɵ gRhzunNƒ ?d۞܄jIsdǷ|@_D[0 zByՉvx5uUd"\הM6GW~rd]~B-㉼'XRlOdM 'HS6 eS-"_c-|ψv`3/J:CVu#W"jc @ϧy j"i>}w)W f p;9x8~T^k02ZH r <}6w׃$s.g5'R B=-hysΨCӆ|ADGTx"2fVԂ3"*ԶMB)h3U]\VFlNy gT gP訟j=qސ4R]hö[N@uXHz l*cWق3IA>xênvZ:9_sr}&Uw8^*Bј#'W'y ]FbgNH 9{'CraS&9sF"nZ[чzIbS>Yz[gUjē76#T񙁻rc,QV>:L)uA V ;~z 0rQh`վH J2JOU]b&^+SEhS jzJoq>{3PHqM!d0q,M`:$]]7ZKF7_/B̛+ ua`|W`V- G哄UI's.Q(IDM{+3 KttݯݥV=Wvab| BKdTttX1m]ژWA,o?l. f"0"K[y+d`щp0'UdhZZ $IT:j-Vf.X~@@=vg_1,*p;N0Db};%폋>3R5hi2:BҮr=kt:Vxa+_ȸ,2gHNa`O;v}nM)~赸 cWlv)(Sީŵ]5V wVU;XFgNS}N⻖b'~z`%xm S:3kPbK(h'wBNCLJ5u\B2-C@u(Rکh-sNi\ʝ.aϝv7LcDpaJa_zZD6Mbh@N6 K]+D4`B<(9Ϳ?|׉~Q@u(A 6IJ-5 l͖5d6HLƝ6lM?ڏd޳8;ZEy~mj0"<%f>bO=IA4ŧxp)):ɽbdGsq*4b]]y4,SgNeIa1VJΝ;5]/ _qͪ!Tw*N-iΥz*f:o ǀm4}(E-[\&} YQ:TNiC2L= ~ 1u,3ѩIN\9~?}K㫫>w muۘyq/V`g.K`M^IJ>Kѭ PL>qy<= X9p QjNcrݫ.kܭR~Crb:ſ7o~f6o숰q)uau8_4&[lg:lmn75BĀus7`^c"k~RGfO&Y.k#G˵V;fIbi ,RPXmzmv _m9d{l@UHi⮯d~R0V r_2ѫc \F,ǿJeמ&AK4wbs>s#[nZ.2u}# 4CdB> I|5V}ot0m\3=AB?Iw38j^yn%pXevc 6yHH19  tmo.݊< % N4Aʹ! q+d"cRʗnîb;Xs*P N?y By CEh%Ry)%af@9hg1%]t/٤:vgGNA*v[iad).[;@[:]sY۰RƠbtٟY/KJO_p,?Ts+X`J>q0LڼXPA+!jO`HyOױcR7i()7 v7)"s@aeIֵʴ;[ERjBqCKk(ȣ24 2 ͢&鳰B٨6'P/-zl7?UIWsj~mDm_zK47H ="z襰Mݓ!sNNjgJz'\< Zo9}ž}ъ89a&{`?| TbI@+?Hi ,Y}CR N7lXP59[G<.VeBAFOeqLFtqvT >K')㘍͡fGƽc4mC h*vyQ-4u+,&猪 TeS'v+ǓZR:-MbgA{]Kt~uf jRO@Mzg ?'q.C|$}yq:= .v⇁P_L3 |>wN Q1&k~sjuN-P /O•:DZ@$۴CN/a嶻$;H"rɃ"ORaMƫ}tPE24D~'{_lhtb(36rFІ/eXuIv7G-* +7NBI@(p{jn:h3sѻ q&@|>XX`C$#%h|9;h0ryCe[VSK -^ۈ)R6ߎ*` s6NkuNC+P*=$/V`O<3+XBE; [u7.HekTk/9pBXRxӾ7-߁Uݫ@Ծ54f0VQGY{O7] 1mFh]>lKvx 㤄{(mN?:Twk@<籲*!+yA^_sw> u>*2^\1,;ǝ5~&ܵ"δyUC?qŲM_DcuK"d>KۿEf{8C ۭ57+(RXd8Ia '0Z|[$2$SBsGi/N]2i&#춭*"y>FH?vI)Nk)g^/(f_#^ڶ_]/|`Bލ96{#[jnŜ "IIwjsm4Ldg(id0Vn=ɀm;mWGjcrPƤ)Qw6D-g, JD|g7%Kw>i#&66>{nb3a"}XuT " c\UQaw+< + ؋sc8j֛nO×df^}DE)Yl:$2ml;1OI]5 !W$M'O+ 7eLD C H>iaX gyM1<ΘWi[C%ƽxegK4@!۫H&<];_K"^]Jd.Pvd+RXAyv>\jTׂCNr7,EK&~'эO#8oFEO'ZHh`·ۻ-l슅7B|p/rxz1[`BQ vX'GM8m)Xrm6Ҭ,n\8 %_*HJ$T\+xj~PuI@Sk1FXcґბ}E1~/5 x\̈́m1yW Ϲ}vceƞV<4R/ھĞӟ9שXeڎ4 *OC!umHM(*mTرW_O'%v `IW*4S.!g%SVCSBjVZO4?f\kJC'Z:"!Sk}T,C}~!1hg/AH[kL$N#D0e@}oǡmd_y]]!jbH‰|*-r˗+О`nN>xb^2a2rg2%h @bNKg r~&M{ mht{s5FY{|1F :U|ubUNC_f|qړCB wHXL@[յDh2!|~*Ð);|` 'pY8 H^l;=Ts*1qt Rꎣda7^@i2 $~x }4@ҐM)5Jn36`9)!z2'%lwL(5X؂+PZ >pȉ4ҦAxm[ܚA@}5_Ip՘|pi=#;2k%?8cž-'p3S/|Rhoa!JS3ky#1k)Ql ܴ:~f̃WdgK|tS0ZLB Vײ/a݆s _=t<>'׵R/B#* .`} l/ HĖ^fnq֓OEA__/{cd>wu5t)0 GӵMJ3d'ڱt ]2$>0$Xǧb_3dKЯ~ v%C`}t<p?r-r%(T:N'N) CAz~K=!xOHaUBǏ0<&p7A9;ho*x ǥ?E|) X.z MSu-Œ[r->ݱr :+h=VX*roVo-._qf 3b0/.כXbqR\zgM8;-/[5)'ATN©[q_`0b_LWDBp9 j8?\r4*O\5+OÕd $4 3ya!M*;l):昺c+Lts:AmFqu[d(I{9QN|+So^yKWCnWJMC>![J25͌q |YLq'>I<t`39:X AObK/ɑ`q($KyE͎U|#, 35t ;xXcT2R w_$[B5I~!TPtn]mzdQI3 WkIn jF,3Sȗ;SK4Kw}! (Jٙ,c1ߥ쯲XQDr`5&bU6cR$:l >^ A}ح2G;'y wNao|']{ncse[1*udJF򣃘MhЅ3^i~H>ՕcZn!v VR\?pW+OeFX.KKd ? =C%}X,?s#2cG+2;pU.ף}Q0;e7Bv 9g͉ lPzng3H2Μ;욛| {]rΥcg`5=&9V[=T{wrc$IT S] =ϥGʠFM9c]@i;]sUabG~(K9!|:[@ЮX{@axa@ƅ_hj/y9[?aCJL~%~"};[3{4ćlPuVkҿ[/!x,]+kWiJ 3_h(>DXӨ-MC;.hw{E{58<s=t2;n/&DrYGAHC]{]0P[ѷI?K{hD(ޤx"5O9 35 =s " nX&~x %iS} I][[S俊d8k Qgt#RVhx-/NJ2PAq{:{Qq)dC@U5O/VvUq,F klL{eW_PPuo$ ]7e;y~US/Z?Ƴb46ؕںU9{{@sxVJ(]2+a˿ډGFAS{j I Klcj?altXuKB͂=ġfǎ^o3d9JS&s6QUD hkLaC֤b)Lg⥷_Oؾ$]lZ@ Bshi'sX,P44Ǥ]o%czbxI #=>+djnvW505Ar*!r o8C48K5Nq(R/Z sa>j{nzT}4{Y uC]@X^6c+HFCۍ/u `(s)5KmR~F`Y@qθ+~qʿ&<`+g7i0i^aϬH3|}*X_^G7RzB ;!bHyt}v( cSToj8'jS#,|{Կ>X%,VEPo}8oYӠLMl>pER{nB姠6@(`b Z/T:>8lEXN{~",?Q?>{[[EaUul\S aƩφOf.g+3H1MeI%Q)\)f/`JbeqpWN$z.e\{!CNXyhK eJ т3( fȖrV=MSx%ADN/qȹ^<I@ׯ)jU|s?C)TӌH3O@9}sPӠrc b 'EB͞C@g%tɱ$P7jl>Չ4F}O!ב8uۦG G!z;]> `3YОPW1+ʙ58bV$!fqxU\wƝKkI[ ;I\sTñCLp8ӱwFrgGCU83p]iN ~&.%!m4HV1Ab\\1?⤝9 OPy_W~9Gmaɂ2)e;Mw&]}>vSj"OnBɧda+Zq([.l'FiZ M\*"7ц{z?LSEχAnf9\ZEKC=n\c\3 ƣLFbhj8=TH \՚&>:`n]^]Vm0:2ڇAfE(""dҲ0,b ޮhĮD;[|6T?XJw~%ֽ~}h/!d'tyWita 4<*|RSC5Ϣ[KntըNށj4/z\~獇sTbpErj@x+}zKXaCKa#bv<-b@U3bF(2<-粛 oKC\S I0zu-po8싡j:t#bMl}%X}biO3Lv}OFQ' zT5"{[ _jov?GWSB?`ϓ0fM;7cM:|^m%SdY2 @ِAvY}:Ɂ#RjE" t?=i/U[/hN_g bAM):Sq_3$j-߻yL `0JƳQa 3{P xks6+Y"R|C)F{DY[UJ/~KN~/sG}\`l)z K]~R*Mg1+\} )Ai%oBnk'x U#tƗڛGN8{f)>mb%4n?xF6/ @۽kpr|宿,t4[BX1oESyJ XF=2A Ѫ!٠ ʅw)=@O~(8*C#u̠Rlj U΁e'g|Oy#4|*d FJu~<Q8f̣q`ժ>t\AZe"3eHq}@oq(68Y} jY$ -Zy_G\Sfu)z?>rv~|( K5}GFe؏5Rs^J+Nm[qaT1{lc-]iW[1o l1O*w ,F+F-*<FمXPC< Spr LCdSuw&vZɼtgFM^Qt0 B?Rx~>f{|_#zbط6#966'ʍrNHRT*Tvn`J"Bh'&LW^}XRbSjL?i|(RԶm]LḆj f'ױ>5$<.S{zWp#c> FuJt`(&-a [;b ̶<4b+Py44P!%I*rKEfүnGHG@b$:6Y%`WN.Jt\\ߓm8OkX i'^bɾk+K,Ö )۷AuH!yRˠi(JD-:mPE6Whı1M`)ټcagQ2=u0u۞X3nj2O4Z?" V=`v8Ƅ$q@eٿۘOqYvf1wrG阌%*6 n6OCPuotp.iKA*xl@3J)O>&!=i#) ~^e{tE99}1kX/Xꖞ{bYEq/&^cy_fpby c5(5p:/or ?kz/˜+‚1]{QJPiJibFL >ѳfcVNڿ֘uT<=O M\{DZ–)eWW)*ě+Q!c `-VN J>A7nQRdcaJA-d)*lQt~&22"PZ"x=ۅ:Ycrkzlt$W}X7Cg/d1#) Ozo2}SO 5+)ѧ97#O^܄226쿘pw<;\S(}#4/L6Mߚa'=(r$ a1L^ ;S(`{! U2T _GqS{f$7#ƚw'9AW1[Cv37~ENK K F׻^<U%&.+W*t?Q gWvqELmjNefܰ сK4o,?^ Woʷm)+p%% ޛ ]٥aOmhCWbMgs. ۳3avaσ-@,U*XY=HJI# ğ χN,(: ;E`zZbƹwғY;>K5)⣴E mm %,JWV8Oh5.Wx Kd!^wK"۽ ]/A%-ij(6Ii_vnMcO]}?:5Y>XQojuUL bgQIfs8^]NV8tr:#%Fϛ\En6x6XΝ"K'̭I]r;Kb*!'d4w> kY*I@HgT r}s̵H;6'[J50WjbD1X3I] z-p8Y aeUQTj͐=yݻJ1!eяVOXby,{I:[9Ŗ&1miM\6<ܗ, J7acu~ű c4Cqu:iq/OV{9д7‡Bq]sV$XW]8»w{0N^wX,S󷿌\SJtK䓈xK=y<#W^|5>1#7T-많sʸʨgO={OǷ(p(kg8|RR%/.INVb9܌w &F&l}li^mNʼgE`STt/[A/(aoRUX߸{*1aEO}~o^xX9[81"}"Ywqk20YoHgֱ0P0wFNH|ݗ *1={SZGC1 bopQJ0N=+OJ#ǽطHV12w,rgJ]܋snlPl+$dHڽ&wb&S!x#fsk Â2$p"J{UA_ujR0~wVϴ>Tt1|'[nBnI[l~DkɠDF]{3$.( ҳ>2Rj|Xq̔& w;2B㻩n0dyzit vh I Kk%jbBhQ0gtm·Cٿ/4JCa{UK& MNW>#Yԡ<&CD'VꕇodfibeK +~|Yas ˑj>>*(  4JY{3p`[hZK,(>ȽͰV᠓rV/lm)HuKG>6{鮿RD hw }<;f(SnVY?=d@a(xB4V5|ӁP&U^8@ƵFCmP{^>YȽ>c>een,%skL6RZ_lm .| v=˸xNv "TX0G`[XWU0CVf098\vfLE݃tVqFgqo!eug3pt6v$`Ln - 0}=j/LL3CWEsJVC9\RWgA;W;U=6Ҍolvc}h;,^L;Й$O թ]d1M֤fn"N#}}R\Q=WmG:/l.FK}P{E|e.gu3]R:t:]:&JGbf-1yV4}:RʜwSݽ~_\d sL>_$l[xeWl h4Bu%2/.R*bt揺aw.H8w0l'V>H=U|ɕz2Cc}ÍH JG4'0Tp#WroCV&G5xsl(yN) ĉ\/×s`QߋJB^X|;4`}R폩PB~ RJ(L{iroD)Ux05z+jd'`A#DP,(ǫy}+k̪nn:bwާ*/HKHyq2,>+kVi0qMDXXr0vTLCzFw=rv=%YF!ifZhv #*/EV`` $Rv-Ap{[dx],7ԝ/t>Dt-fdr X٣Kon0iWhs&dA!1{q( B!l{m}jQNeHJ@ÐZ׮UR{?^&;}zGG {wEBq ѫXy";Z/sӀ&XKo)?Ўb{`>[Q~.riR_ދ!=?!WM7):cwbB[hͺbq˷+ @{i[H~Zesz u(r:B=q^E[_\0se4Wp[dYCgH7C2W5OCۃtELC,}{P'(1syeAW,I-֚/k%;O{[@Lԅh%!RQbZPϸլ9 h:O8 d \ORP&;Zu)S>ڟ$l)xUPnb횴]媘{(4o^%e'Nu]F9IrZeUٞį/E&?BvR̭;y[ +~ un@l8E<I$?V(vEꏽCch]&MȒ3UڻY3>o@'A/5c 6p'8{:,n8,VyБ`V#さ~&>btپg"ŖWaok㺇ŽZ3lN?#?CzOIAL:58:DP0GɠaL, !cKF.ØBgl K|_}fyEš0[9[ؓZFCߏKkAr؃Wj|v6v:2wc38uw{~z͔{|j޻Fq4E@:.1ZXZBb yc#0w/Nވ{B q0LL֔'pc7V7$~<%扝}y,ȟcSs5Npa}Cj >y3'Y.|m1ܔkK?Cp!s> 7NqS=$\,^% \cu|;tͰywCEG& dO\AB%߿h:ݾH A}oy<[[ h8%C^vEsZr {;ò7/6ҷ NX9:CNJAjychh 0U;] k *ׯCU}|m(y|B3T6S@ZfBKc|[cltP~_I G)0o֭%ܬ_Oa S_OÔCzApUWiL6Ptwn9 k>FadU,rmcwB-U%;썚81(#g1,7%,aDB`.ہt'-r{0>]P_p>U{ y쌉ghKX0 BYw Pj9UY3L"zs|1Iэ>Ԟ %M{f>z?[: f>T;0^5U@0c9#/^ R'kO@)%MԬs*aj(47)%M,\x|?F %jPkQ*$I߳CϷc^O?P슓Lq̺OL8_ؕcNy0䣲3jy}8D6̡bC m\&$"ղ_۱;*jV }DA g(4~羸) " ~X.ކZ`V&i=N$= iRFp!I:1\Me\`K8-OŬM X[tԍC? =f /yШB8!O)R="}˦;(Aa/YܸGdu3$jAkno+0vL %R;K'4~5ܷ(_[bѠ=I e@h:ܤz(ѹ@kqNEIWT؁MCJz5X޹\yG-@ }&2 lC,/C~HJs}1_zǗv\FA,??iX6X.6B9C1,,.z>߱ -t7G nrpH==; t(=a_/g\?>]Je=ߌq u%(A#U*OT6ix7, a|>9Wb ۟9 /`6R,Sҷ7̰eo (|Tb )XJ68)_ˋej\2\lmޓm]x:[ +bߠql2]>Y>RuC$()گ6{ 6nsVH4Y쥒I^f8p'2]n?LҘv\SGkuӯB70t$MPx=A ؠ`IC~J+64IH AQi {~rؗ;R5h7JQDkHM{4I/6ReZu{$3e+"8졸)ua=n#Oz('UKfz8*w?{n^nhd{FVmp|lq(.۲_3'{_2Ohq\i[N=a ]m7;vgsI Ų}{^ *OW˘n,DBϼZ5(K;gn u̿XyuiʫEh~J{c'21b8$v$ȒdA6SXa؀U?`J#${D|a{'X2~GtXvAyt8t2ЄԼ2+k-/tv4^<Үto o,n6,&/csh\̥u.lߒ>^RU%FwgM#> y~y.NqC] S>jȰ]&K-4L"@!A㏿z)pq@U -/hI.KCϠ _gkrijfSCڋ!ceHޱ`baWЗssL9_,, PwV֨ɩrClcx-vѓlCIt ؆aɑg_oU܆(fFf'A]iVyh]q|`3hmn;N!)&D8bxC鷡r0Yl&="o}߉ԋo1x i]P&S;P^) <K_aT {7/iA ,7W-+c]L-jھa.G l,P199CqCE~-O Sb,nBX@0𺽨-s?~@ Qӿɉ; wAƣl d}Z ~WݐxD?ΪQXi}u^uU#%XDmPkvNa o^Vc5ahqx yycm4`]hr/ b)G⽾CSߵÎ/<1|IjE.c-EP̿*ҋM~6mꖻ4\:3<~ӈ4Qֶy$IGbOr>~- [7MPbFuݍ(5|_L i*k|)Ʈ>21~E{OІ3i9jq:{q9[DeV2LH^CGS >1)cHz1538I_3Lׇzy$Hce 3XW-.5?o=F.38&e_:~pVsArZ;xa5 xh Dg1꽻yŀ>qh},ڸ/~DswIvzh=j;y mBume_LacLkacXoc)(֋|P\L4 y#/TaZ_]?j6pq;Ngcn7!,:cE9)ATC6%"sm^)6V2$2%^cwc۹i?a^d7~ !`}[F؃Bok!0*DFMsWҿN<+;)<v;Ool8ye5߳RWƲ }{CAKLJG [8$;PcÇ2eXlhg=ZO$#@n͋dPf93臢c {SQ҈Z/n_ g~ڂJ'gp= DZL'{}XMv[oG/]#?zko/қ}P^mjk^}I0O$P@wQ[g!coDc(]v r> _)P/zAH[fٜ|@ǴE˭O VlUHAQ/H.ht?|wY&bUӵaT~/EjN`]|i4|K&r^"V $+b^;+r>5‘~ gb1.N|.(}q;nDbM"Iߺj͚g3%rSŖF=(8XUPHvЩtD[Ve$MY=b^qNW쑜M7/Xy&: lw咯 ~n|rgvwTsE- PrC[bCM~E";fxGϲ0JC016bxaeMgB~=3:|Z碌boh )Urr.L(hQ{y*&5(Yz U+EȐ!zī{A׿t"<20q[\y@ ~{fIO"Wh2e.JɎϵB*k~`޷z@tR;M4ܸb|O,\M*ߐ}.!p:J6-fY') &ENT_[o Kw?ǂ$K|.Y+^<[ mcJr0t=<@wo-D??&/BB%0.q OZPݻ^,ק +Hy(gT;ǓS9`*GɃL*ˈ |^CY}ćKк/HTz}7#1Uvc?zx9xDp$Fݱ *C=éEh6S [Ǝk]R̨ kИJ6W U[7kc&&'ʡj*Jlb}.~Wbbͅ_dcgq4ёakX.2Ĵvp^яs@{ C%|ZiN,zv?R3 c5 "Ox'jxK ŎZV#z_"-h^4GMhILcyx!y:HjXcC1):Vw/%DhA^?3ag89_@ ƬdO<*9tq6֝i7fg$] #ϼ@3~hBсy0pڷ,Hɷe"(lCFgxd5FvXT/"›!g% ȕ?– b 逮 7)Mv9?ZeͥMGBvׯp2({Cߞy+Zh;lእSVB]s!sr0==aIeK"R(#wFl# ÊڰP7eHf"qjRCgGbX+ߛ-m} #P2O (Vx~Α4sH: ;Q7 4 $(aHs{a4'wÚgL]eS'1ecשޛh_^4,L"L @T^w!? *^C;~=aӉ2ki𦴄^¡D- ]؋{d c{0,ҧ}3E^Į\R43~&E*B!0̿rh: KyX&{#x3t:d,Ah&\ܼN?Y}Փ="J ^Ah !Bx49=(^l4z;|m4!JGiXq~9dsbyPo l}ݹ6_噰SULԣ]Ҭ,t,x )y)J^S?' %12c焐0m~ CUu1QљaPc7#t8,*-vDvUͫD`\huZe%͙P~rz,Ƅ;W;Fapo*ϋ1DSA.ggAU 2JnM: ;C~@ XYG Ċ`OJF,[1=_n!BFh֙USRj`Jx VH7Egܾ_%=X@@lyB+Q KNX6I7Y moe~@6ɠ$]ESeSAZPZX+,ư26z!Αci`G~N ]CP]jOϗU$Ҷr1hnAy/0tT^AlB-qr&eZ: 'wbF^PǔŜyv+=A>c9[vOVP{# |3H@~9St;ydg]9J$X 5 6<z*6A{UY 닊dN9|*an̽ -R!k<13o u=i37?ȳ^-ϔ8g;drr- wR,M1u^Dz{9#8-?ہ>X  k"C%޺0 [Ug8?NrV?T_,T@7!%#x=A/wr/WY~D'Pa,I6O!,6B ay硆51*/dFB夜Ȋ::`Ov&:o2r`xN)q B YKW(yG^`Ƨ'Ra47!&{^ZB~|R+.3A-7;#ȨkFаg<1nBoEP6GJ5 `tXhB^#'H_&'X5Q1q j>_c~US P66! ]̟_vKW@_`(BɶR(.Ҵ%> #P:[yO'S5@Myf(7RPdsG-c L( 4R1Ԗ6fī W+c桓FE]X$W {8>y ;k)Na0@Dtg7lhCH-xP=+BPdIy5j3@ߖ7 ]]U"_Uk5Ƿ$ӱyoM*kdfs4}}Rm.9r<Әbwқ0ĝ|)s5(V`Pd{ 뻫N`fވ+)+WȀxc!PԼNu^3Ŗw-bqd\Iٓ(\(_]8B&z^H&FsӸC\z?zUls&ԒL;`C=$ja-IЉLU(rVV]A?,|G|3G#F@o%e1(va(WZgYR F!Rm|(R"/| tJ}XC*4+ ֱBԶį8e##kJ5}z e+QPi.7F't|൴'3݃B;ʚ+sR)g>x>c޴&D 2ѿP(?Q 94+0h+i:~ϗ}h\LC^T\P_nbχ0{bkE~dȃ?/;AOΚTW>e1"j/??_ \V3AyaEs1^-/ω}S6|l: ҿS"#`d%^2xX YH ݝ;Tt`*kΩ7\6tXUʳ:0%UbQe2|Pn_fE7DY,MCXx::i #oPhɁC KίNߤFB%7'B~ Ӽ1\FȻ*2$GB!2ᩃG̙O4P?@Y ;-e (sn9)Ժ<1J:{IYb bAFX;3S |in^@9g|U!˯xvh;y#'sr~~_-x,% ?ie }fti ab_gW"OJTaLiq [6ĩaM'B ]VBcoo\yӱ\c̟ X_v)':ś:Ek+QO2K~A Z]fARiGcV zHy:{D 8>Qfx!Wh "/Tgư̿4GCVCl@:쮮qtgUZm ہv"Ԟ0 HɅ<*> *^Y mY}ofL-M^cu:^Ze=M_ྕ|,vwx8b]x.j==]_ +?:I 3~#r-vm,h ӿ UߡOP/jnyTg@͜q:CP1?<.ú֫'!VEjqе7zG0@y9*Ss4}n]{n|5#locxX(a +kri$b'12[-ho{5d, FX]  ]h29 П7t2<"8Jm|FY25L[]m3@G\6ME*m5 +d2eh8T^28vra>o+ 7 Dz/@IGUsr$hsb8 zA,Y }*;uڇU}С\L$&Zq[ǓH.wcիw%xbk\f0܅3G,ޯ@ybtΔI5i" @|(ɆYC4wn@Oviƽ¯߂U<# Bv&3~M4 %y\R#Ob93+)? j6Zwށp"D (@Pn{)qPBq·+';2%$TbKuqX1l8EstNoǞ7c;"&ޟ:6jѐA\o^?ڣ^*tnwhgX^ĦW%ck}CI=~#}w566O^յK߱a UP%Io* [ WxwOEk9Wµ[d=~o;J] w%W-\;M 9WAS#xYG.{od҅ X;Lp\/+w\%g|JYwq!~=p6/G;|ϥ/lcm,p5")d 3*1hU۩Jaв?|J[ObjG]P8N i$/մ0t2TxS9AT]cRf ΊA]tGPJ2o{ږ#~alh1HQg/SNpX{mP|4=6,TOH0l2>iAOQ~8_Hxy4x \#++v"NߣcT6,y<ČͼD8r),:MmV^ivaڡgud#9% L4,~-X>mwVN CH / ަNn "(fZzWR+cGǠ[@:fEG|͂F7޹no[ʗIؓbta*av^ە㐔rfvyQ{ VoPvm25OrjAs=iP.:m;QU@P} 4TS0Ny,nj {IK}|a)xBa;b+gz7a(}'>&zB1it;\Z.@SsD>\zߘ?޷A\MX4R( د#?f0P{"l`y"!~cpB3f׫ n5biPzW ERNAEv{ʗrӖowdk_{`y;5CL:7LeP$H`v-&Ne Y93@krў#$<.^UY3տ=,X%<-O[21!o2CM{;TJ\x|,ㅖhHqx3#%`GޟS4]'EhJ j:g_—=j3!Rqf^$~&U#u퓳 v^xя.cli> --!iъX=4g27B+X~զ/l?%dϠþ>M:ʑW}-y\ p&ljP*duGUlՓT:]PE ~dVi fjN}kV3&]L;^R;:[1Ő#ŗcKP^RUR&2 Rcc̥q zW)囉gKHP44gP=ls*E~3?'$^c-iPyu%u+d E*!>i3GsV;>pPsS Oޝ,яjzNЛ%݃Y/&'q2#%Cf6n{MbŜJq ǷkB.vŞ.}i6B!:35m mvDPp49 @L:Oƴ}T>'o@X/l4F|reT=EU J}`{//цtMe-R<}YHwQXC(€@HXu'?&OԾTȽ:SO=Fduߎ8RO9vp:4&y u:LlCY;Z #P DK`y*hb}ao=cԷzq(9V5 cE =ߋX!g!əWwTsr;qL/T]De'=l ˃,zy@]QJw/(X+V! ねob6h;%o^nbCrt7Q$,*UV3AY:(@ށڕ 3h T; O7&ݴU笹_JN h:ς!zXE#XL7 GqV-ePImSL + B*f*~_z!T7| o eƗo5tn#|jٝ}Zݵ'4(Ot7wә/r@JJ_k+dMo=glRXK%ĴMg!V@ #5ާxS^Ph'w5{lAXfY]@+tt}n')L[!cNC0t Vb$Q?K 2}۸tF1(l! y1EG0+FPto},so"I Y]0N|P\l+X\-iKwA%#аwr>aJ׵\wL0~shͯN,XRtͥ ioӚ㎟^战3s?w~ ڟ40ЅGhaەH :&l3+1P14J[߄)B irۮ(2xxRߋƬ)z⡳:)mtOm TՁ;+?LZ΋ ݫOPka)IɆY/aD't5:uħyk`Z$~V> mNE< Q0$F*Xi:ø6%T<*=0gF,:po t%, uKjS݅i =`4] ՟00Q_ #qȜ+y/_ِîJzQN;P\w*O&nX $cd3 sq(o3u $㱅\bLS(2hFx/`{l8Fpf[AT<9+vT3ӄ4XM&$NZlޥe"U<c37lER(ս}iܗ2bv/M_NcG~ӥϣƘ|>Cȹ{Mo˲IBM]h[t)UȰW[wK( ޼:}oGcπ<`>֊el_h%36N|&])xM>s8Xa'{r%(ܑUةoq{ ֯tXGi.JgY2L] B[DJWT{ǬJgmJtƟgU 6{6\WyGicL0adW26Ke #LFBeKC܏Go`Ia6Ց$8NP5[bLOyXq麒Lt\u;B{ijt\=(AYyHJ;dtw/>l$81ǾSI|Y_E)e<&`gGD `mA[h-ϝӻm, TǕgXpl23癄܍ RM='*/\-ԣجZcD/}a|KW:wdM#v6edjD!.. Af=>āQM%1{$ekf6/Д>ބJiyG2^uıR{6_ {Ɗ+nrPgx&VYz%ow- } >?k3GwCC4c4L-qTda6 pnĨ|,X/J~X9y# iU%{AϫҤrH+=`UNMڲanR>B%cӌEhd}}Zkn*.^$ES9޻` fТ-{RŁw|5O~{Wp~_LBN<=.ގ{ 5_IYV~Dz3 ˜zA/۝UɗNIF~0"ҋT__rIȰi #[wg]>MXr_4+h)Ty' l#O,- .Wq;CPǨ +X% $_tc@死aߡHĖ'XrOޏvս&1BXz%4#|uX" X{ÀcK x) eOߑ.~;nQ3$lg,ĪC7DKB FIJdXW9h$Bw@sks4]X-~3%/|4.Zyǘ]=ْADD)^o4f5hSMǏ%>F\V@:jCbn-<1į*B_j; n*L3CZ)JBȾf (V &9+aݳ?pXUY=%}zr ۞;#(ѱPD ݆X1J3Xbwp =\6hRB W3DMnX0zdEK-8bq (fy+_ޘ8jn3jCoMU|}lǨC)`׹R,x(Ի$Ů2)Q1YxCm!7TY!ޘ)bgsn+8TJNl]YuWL ˹+p el>;S#NLR`q;٨cAb~F W~d`? I׾>.Ŝ\0q9TGku_;O)^77[نUʸyPadfPaG^XZ[fk x$` :b씾()fHTΟ*;8==ŏ*NXҤ6kW-ܡCeO飷L, 2 ƶ`e)#scÂ/t. /;H"'5&ۓعĜ̓ηBGS8t1|: k'F oU׈6m%=d$U +0|_B.߹'GTNdf J;׏Ѫ7>(bRSTFXwL=;7?i8q1LM[>WS[K|ൟQ-9fZeZU|BۭaC\έln3/Tz8x Hb(Qaى~C[XNBX202an (xYB-C&+i*<ZL?fE >]LgxMA~EHTc=#EL&OGm* !W=j< ߤ>:i`g*υ1\l8 vknYR56{O`n&]Ê5`S}3(<ûi'/W֬˄,_Z~dH-O!"2gpZ{ b)2$ $8E VUU3oUn8BG d䩭)S% I)X*>(OaO~@*`o3L*}0"1m^AYD0Վ)̴%=}NCGc}Eh tv__*,uÆe"U|GhZ3$춄TuuXǿxEe̒oqq$FA0u|>6-|NEz9%0L!wYuRH b=. #+|tT <\c]i-4k(l˂ C׼IKHt;!(NsZc -v+HĎ\l.})8mm^bsΧ 1g6d&kߩ7u7£XHs2 NvŧEԴC΋'Π/ms_ZGwY&؝DX]C1oQ9A fli2cP~\D^2j!<Vz I4}=M>%'5a#yG" Lc%70鎀o w=C+fL)][Gg8dRq|$D;W,6J6p cu++/c[w|Vk,~w8z;oAl(z_'-3qI4f'k1B$W8]>Nl8rGE\o Hۀ6M1ܴK4Dd9Sp?yjX| UZa-0ef/4Xo[yأxl~eCq{mh10p'*U5ZC8, 4/]<E?,H@ Z*ulDU2nZ R:THzM֩Q3I8Pg"L!g6 r}}>Г/ k8l;d=z-)Z qSG{'Ygþ6waM'C: !NWF=['alƜƟY>3?`&/VùE 3TI8\ Xbу*بrĪw{2JOKY;a'z$9ԎZu5N *(yʅ; X\pD)ַĆ>w8B6-romZX:60ِM 9M:Fn[nNGH5|X% G ?pؔ{Ps^AicUm Z?B]-̾*կA F- wc=h ;r@a<׀c@.&HT ;0#q*9nޠ`Bk@Twh[w6.`Bm/6ѫQL&8k~ i1ߺ {ҝKĄݚ4e$E瑹әt[⦏0ElwU>d{;o3=_y!˻YZzD1&f"QPr>u*弳x`ʅ%^ϛHy U*̷Cb 2)@[N((LyS M$!PIy>hTIv*'\(ۭ4O3o?ae TZ.)JGOI .\qs<duoL/? :Paɭ~q_Zo5 tV}K;CqS뇱pxDtHc|#/=aq{ .h5}E_3Ci$TylG<}G3<'|CRdH2wo`a]>@L~_@!BL 1ᏼ{Pmא*w) A+I'Pyr*ԗ̌1l8,2@8vouG/zˈVƁ 0Bm, ߆֝9*-Z?ZT}0#G;ϠSˡWJ>?Zm~O>,~,LT Г؁5T?S@rXZ\L;.A{clg_P%AN7;fC1gաAaoʆϏ0H`ϱx5(Թ{EkN)ac'ꁥtEhnqt,K{;*  N묽`eQ!e76/dYTCa!/vӚerb~trubz%i䙮vz,BͥɅVu1i{=R)dccZ?Я#1&u 9WV0V!zg8΅?M _CX3LJ0Ls)T 5e+]{#1o3F썡b< Ĕ&g9զv z=6} Ow[n}jP3"wu}.S7j0˛|Zufkс., OOfl{7AuS8ˣ/hVT EX?srzD'ԶUyBy">`v1OVh |tl,7d̈t:mU+vm3 '\[`~ ygh0k9U=^N#V?t4е N{}䙧QGmXw"VzY4d{lJ4!њ%n&*$DGN>s,k%܆нNjg14H;~2Ŧh?ǾXҡ2=׃I94?cwg~Z$ rETúa_=T/7bKYxh+OxZj/G̲נo)?|Ozao37vy2~B>U02ڐcP:]3ZMe(2.*C{[^,Tx.?!{vK8:O9Ӆ3ڛO&!}(֧=c>L8!./}k=y]@k\1Q,9U5Bq|UF ~xe>C<]:غ{2rdhZE'ˮ^XGD/CפV5Ȱ㍂] +Jriut0F>E$v=ugtnݚ|yh~Wg&}x?}6,e#06z"_8I[no0 옄AƱU\ t(]aw0ԥK¢?J\r:!awo`/8|2!u$7}ůA3zƞ{tLuI7q1_̼9|7嶠ɏ_y.,g’2뻱_SonyK:UtjG ~"oӶicR&Qd4@Ʊ,k快}vAzC&y }/ cUMR^^p\V4D>@a |VCCSaO*v-Ba Mi3L`>Wπsq+?~Ȣ@lH?RJRh'a.ů :AMΫeBϒo~Ü]::<_vXrv9A7K=qaH7Γ0+Lao!/$nl0ѯʃLAug_Cg)&'ڽLaóG O`[h BPDDOQ74f+sur 2eXv4H[ ~IbtZcM^uF 7_ 'ۗ@xSiC8oꙇz ޾8y=:푀PHvtYz={J/\l h#a NExZu@Y W"w$/)÷Gv;>huBfH(gRBM(?z]hw^`pK'rیA`')*9oN:֭Y#UpgsuYƚԟadCĹԡ]VN7<([aӄZ&ȑê i{5ا"*!CA8DtS" HñKN_+o$Ez/; +~Mv H=?\IGJ>dum|/@_ !^)M)ģRc~EqhNH㔽7?md`$&E 6&`DiOɈa%UwF(/srS^rh(+[}BZ}^<I1To E;w^{<.[-{t1ln[ha5qhӥ!7&!jA#v)b޹س,WqHyEW ]ԥdX >-XA/M_S 1/QVk=~2tf=+?ϋ B2`s K q9L}ؽ7Ft?|- ۘIi慱G33>D`IJ;o>aΏb+Zb-Dfy># Q*e|^vx1Cvt8֥)lׇ-_Zq76tPA\0II'ciCY $;e C]YYgiqfPFaJ%8¦}Q)pm`1-zϺ@:zS "[ mkAXbQgֶ$R~O;dJL{.T8T [v|:frn>I'zLSoq'F8y%;6[])K*7Vϓ󤒁֏t>|GL6q`qsG3$ S1@Ggڬ137=(λad.uް~F!նPZgo}k^?Ibq݅0d*~OޯfP:_.H.?&h y-9_)Fyi Ħ$C s둒e0_fUV[b?q4n,myF̭i\i?둇vOUc4*JآT鿁0ֺ-o8uqbՃ]jMzr^4Ӯ`Am {F+`ÓDlI3c+rrbft wֈakUO1kX}Ӷ .g)ND@iEGbzTQ'.~+woB9%:9Lȶ&O_9w ATvI!]0s^~c휆5pYg2;br;v2zppwqROB>'m*'VԘj'~?~Z29*(Sp\CB%90JjY1Nw% wr|fS#(bB̠;M"-3O@Qk*:},Iļei-ua?벧I#7T1䰓G➐~ Z|">cs{#lJۘHr\uQ8< C<kXucv$Q{V{p,c-^+Qg&ȂR_ݫOU$8[4GbߊWRb6Jʼn4/#BW|C˾N2bH!óPkp>R+\eTX(bSHT;uM=NoEloFvKߙupY3C-|oSMgp)\ݷ2Tje ɴ!5s+lܥYs^|ZޟmэZ'cҬ_Kx/{ Wr~Yl3]WKbӳ]ȷObka=Xw W̰-z/HwN [YU`s^^}!jLyJڍI{:f0_*hv};W&#?s\bPYDU1£~(Lqu@ʾG@R3Iǘ)e?C{`R)Q ;_=* TנGIewT*/@)_IJ~?CJLJA3e4( _5Mzz*wYSrHI;R~7 y!Fd |B#*< EF}SK8QKōސB*k{%yŢ<5z or=ZRhHѪIЂA*!yh{[\pbbN9/ޓ NCEሁZ~n#p+E EJG )HbyXhӽ7p7 |A7(Wrr~WB˧YP$5jo((Ƞ>ʡYd;ZY~.f-h"= /3-h뿃ҋ C<ݮ_-/Ɯ㼸V)<.h2QCB/*n(нu8% Z9d5d%Ӧ4((mIq 9q#-pOÜ;[ܡ>yV0(utcH\qѨ'ݕ̐l}?Z<jc3{Q­*FBeD1mOv#+E2k ^W}5'-nP!6nC ˤHF)gw ^WJiB{f|良DcC|yz?|?NCՉ*cM(=y(I]م}Cbk {Sdk94q 铄$<<ДY ; cPyl-ߦ@8TD{|OE9hKr N>(?a%_ZbӘce94Jy:/a\֓[L:3M_ U1x#ӉƫoHU[ۛ8vOvsFp 7 >Byn6dvYmڂ+,Ƕ $rӫw?m~Clը,(\QsIjh_#s!#s xT~s{~<IB#]Bѽz]/)fN:|% yg>M0cq葓E }PB*t hiCyZW?uRPI:_ooj~~JζvG wTZQuпi-s5 +$6cb^ `ƛMJey:m^K7a2zY1,)}̌{uXZa`Y:iSwh) ѕ)AX<ke8 >M:`]3qO&QAZ}$zI@œ^'Π#I^ h {*vA}Cُ5NDT04)_v3Q ?VFRjPIYٟMw1~5y<d5McJE((,Ny;SGe)PsHHڰawWtALB6\ &;oBGȍgP$]< ޝGc!?`R ;Xa(X?əgXk82>c uL:"U SdW휶@3^-m;Tz@kIWV%h4CKMcIom/pz)6<#C ɦca җ#G%_?m2tY_C ,TzjPu#VZ/0Oi?+XZ ]Q8^+|A'ZChf#?lW1A> AxLc%[>QlD%%>!{ lǿߗb LB'FOy<;WTʠՂ10xL ~-$ͥ_7€-9@kY1a_t9 yxbO;P~xvoܠk!W"H;^#@C3 sƗ_@~XCYv7#auZz"N;}՗|=)^S`(G{ng+dR΁v]櫒p ۂ6c9pв''TUQ7+L I {3xQKƊEgV.ʸƟM>#br&Ɛ-&rwB?|WaJ*;| q-X~".9n9|ݮ2C*@{_^SX۷(}G:_g~-̦q{~;4u^?Guc~oQ HBS-QDB%dʈdT+{}^{{H>u>=9Ncb9'4Jq? ޙWWJ..5_Cp`PtUl aQ *ǟcAoj ,}{V lCm߄6c4j-'[>@_'3ݳ?gy!iѸ'y~/p:tI.zM"\vQyx@r0n Q\&(z~Ů5Y!\Hyq?_ ^S)SXayh> cԿ e/1IN5Ǿ{Ǐ' %=9wYhHqL^RxOCϕ'wtnFshq"|xfEo/=0@ݫ&hcz$SuMFɵR>|y.zﰋ6Bk(N\' #ww҅^A CE TNLϿ d~1"{:$j9m%Gn-cm}AGmVd/\4<UG=qW {,aJCMRoءY.lR!wb xyZU5^4Wz uOBߴ?MCutC7Зfw&_o;8t[J ô`CHpesP,gۏNaiBu(o,F*/kɄ5ʥZ%rP9(9tE*D*N+(^vbfR,mkPu/7ex;  5 H3qvn_޵$SVmm'(ENgGL.NoiԱAs1b#7P s39"QW:P鋩bo:̑衼9q2Vٯ@(s4s; C_r  -a퐣? {@Lim:p@饔c0™7/zv#dVx= =X;;9zkܖ6~H3pJ欄0o4`tHo@q#W{⒰f2w .=6covw ,C'A{7M?tFa>{)cAWvL"ϯ'[Tr/r^4Mx&L[3+*;$$3l=-UzՑuo.^ؑA:t +A^HuX!˶aٽkaMNV}tsp]ȀJA Hv: &җ!b)F k$ww1BgWt~nl;sW.Q>gB(l[7m ?@UôA̎Q;9T1zcGJco%{oa/JtWM=D><ǂ[gPq"\x]){7bBEg [))6y7E>c<4{__V|+ԝa~yz?ptuyh >MVUl(w\24Q023N}7aZ nRx^#l!mςcD7joz{-#/%VeA_0&#MZPCQ)#wO93nu9_ژߪ]k:uDҔ J_-&s?03!k}Wsdja8s>rY:oHq pteY;7Ǥ?At*~$Sz |; =nOGw_zJjPLߜQh DSCc6Xe^bB< {MKz"`j 5 >AkI]uAW8%_6e'KA̓h荠4|?dr˒ N tG|MKz jML vSmoO9Ƀ[J\{-o<#L{,uܜPU}4gk@fP(w<ĥ!buL ~Co}#2"!TżlL0L&EB ffMPN+%dJnF;tU mT*6C 2^=0~NΗ0:y׋##*Tx>j@ƅ@̻%.[;eR_1 l_{-"t9_ǏMrPcNk#lM.v.a͉+pg}i[O MϬCp}3j1⻬:bGp_B,r2owSϝk Ujϥg+_뇿9?w%?K6 _u5jyLN28EcN1N$jqR^]͙6%%M xE{N4T|6J}ԣZ48-1'T2(R(cy:U~!q$_P& Ҭxƍo8f46V J[–^TϠ+)VW,j*}=l9#-8OrVX6-_[ siZM6ǺKMPoWar{ǢhxdaMS"ZB tи#~-.Y'>ꮖ8hCO^r0%AJh4K.eN cJY)Ez+ͽ> kXɩ5W۽6"rUJG}RO@W#%R?̐m_x)p䏽̨.o EnSn3Sj|Xr~-xR ͋b\"ʯV5Hm^:/Z&,01ېbI )ߟy!?x=Xj;sX:* On0Gc'y ~l#ijs吩!\2oq>@=gOL  XYd+jrf3dt)+$ms(*ɠ5zO]Az=]yqq"ٲJx#y?6)v>+1tIyDq ( 6^ބ BzgH`9@07gg]&EǟNO\΃[0Dc]T YO)_ԜQ}LjzzS㌿n;aBqX~qv{ ]iJr^&EЦHQ M}YTP1#O"uhGչ~r\P9*r9.[O(5Sj^+ۖ1eA Tz|pJɇI{W XZ0V#K, xjㅅX\{ƿmAݕ*wPa2K5e9.n@yUc%2#r-2ĪLW{*ʊ֞yǑgcBPyPA%lS2:".hA0[vSA`e}0C"TӫgYK*X9CJ,Ibo: {K: Ł$ {'}l#EQ"}Ւ~Z0ٴa:=:}]OVUG B'=!t;}=GK:WdEgCܱ03]W h^&|9)T 8 QI}L7W# n HLbx뇵Yl~̘{w#4#nhռf&%} 㤞gCCA@8#yk`&n\k+aa]umKw"ii#GzF-0`k|35N*9X3勄puGat0xi/3S+zƆP[xFZ.||4-޹DCE)}09ɉj~|c0(aDad VvWEz4 .>&+L w z9h=W %5-|g/';Asai왙n/^ }` l=9Hڠ%U7ܥF0OuwbC׉ۆ)%h/`z |.ix@¶ʛd輵ĵ7WVdJTlPz7n !G2'@Jiqf%{ vajXvo>XDty1uzݦwP8\oH솠őנ8,%fc7ֲ0xm\tN#!k`+tP>>_SK?nZeyĸ6{TT_瀪bFwR ;&u01̫=jT{޺v3OnĒa^΁Ia޶?qgr:LL1枏S~&a+$M?`I80`{ Do] jVS6շr,Q0aIݫ?Y@n=t8_匀u[sR˄݃G8}-RP=-d0W'bkNfMAkv{AWʥf@eݼ{-km,g ]nFcn`y{:+s(s*6N;nAs1|H ѡ|OG6*Ǒ4.Nq ,/;aNoR-h|ן* 5CxaxlB% ]4s3O[)È~}u@CQZtj̢߲iX4 '\}aad)$&E&bN޵ 3k]Y7XW Z ?HFKzdLb| jr$)$wp;PCͅo~.  4*1nD0%*J_bI(-{rxS,zt:DXZ=bGG 7)s' ՊEXmQ)LqZX}=Cofy|!V74YKZGb=I#78 R9.(džZtT-ŗx2ulc9bʔ[*nV7>RrTw IlVE4C^Ͱ[v9{BM뙲(~~sfS(^9Jѷع"$$ ocﹿ</'Ao[&H}*R%2AX&VWiNK``T@ڦ9Q2 /W+%o{>#%{6Tـ|hmWc/cǒvᑸxgu)6V2m qJg^I]V+pb0E<[9\j{ϏKmBIꋯܱ e":KyIĒڊH\w fJOeIWCޟJ_Cǽuj`Pf4a8;@G!h YH&r>@aM=cR{e w.oOBd r-q T{[Bў& v=%[t NT& '[n}r{/MRC;M8TyU /ocS2FefMa#)@h|u؟╆(;>jqv%ֱ=`cmFہ>f$|yEBnkc0 (XC b ػ/]i0M'@B7>dGh 5>R9.w1jnUMt8'/2 <.x2@3=>uKiL\ǒ++:R',sZ9\PB~#8O_s|Mٹcǘb, ?$殇9 5(5HaBT5i%\:Xmָ˩h8(b2M2^f%oڋ̱:ts%uÓ ՂpimԾƓe#y/ߋx ɟAVx1h#8Z]W#]Xn嶤Y%W3WdR( P-3O6!̉}@TӘ{,5q$Bs8`)Pwz(݀֙TwT/5Ui/TDrBUsCZXq΃c֝=Xq)OgI]OCʪA4Ix 0q]'26 ޼ .%kYՇ_vEIYi%ܸvCrwD?䔙<ɋ2+@qVVDs; a~]uwrv_~oti|LMy4v&tYw Y mzX(`8/O{$=TeY 6.N,|7?0{ECؤs<;s.)dCS6xE /C~Y9~/le:^R=03=o]˅IxΥz3 FGm`Ŋ'1qzc{#Q $ߒnK e{h>Wnb7QNHdp˯d%h-lZ,},B]4w~I* G ~p7)lv؎Ӆl.i΁}G\x)l y<R"4ph~J[>y9T5h'sCr P70;Sx'5N" R)m`E^>L8m` [Ic~? ҇hM15A=RLϠI ]P||qFbлGʇEЮ Na^UޫtcMz!\Ԅ;4bW߱f4S1D&Pa)L))  9~/j(pW}{)(,MŐ&{!Amx-8ܤ(NoS*l(+7+ #/LY΃J BE㢌Dh +;kC߫i'7N5E6 N/OW@^etF\J3KU"4n_EGo@ƄbܫѬ2FG^=1XA ae Тz+F V=u =z|yNlfgπ`U#s#ԅN.B?{q(OKՆ8Q6ǰ{ Mx:[{ʈúɣ:LXY ,5\s3RZ,f'mph. uĿMvTCm\}(24kk,cūZQ3؜eʱ÷biX/OR' KwaO *U %i;3{Sy-Y~x'LW粼[ms8riKXEon sg&v={]f^HA!8֢_6.R}98+B#eQș)A`wlj#ȦjmAl4k ؉^׶K9w|_r0?]7].`󯾛XIߤ@0\8u?7*N7=Y;:B*!d{A?T|Ž[/uּc@bn/N4y% ȟ]2-\U*<Rz4jׅri6݊3aE0,:gA+_S~aĹKEeވ{2MG iKH} kIށFp4N0TmCm!Zö6Хwv=kb7T{MHAW%.5țOO -%o8{\QPvߑ &%Д^C zC[x߮@Jo럓fB闊i5_LD;U2ywa6^ Vv]*ǔo}0y  )@JI{(|aդo"@SB?5O`5sMa61. D+XLMC˚߰5/>4|MO*ܿ\FثblH*6dvSo! P?zQԔX[|w]rw$M_VY€:ќ=t$c)lvUX  C _#gc↥ SK(u<򾩈r~,ze=Wsë%!j+;͛Kvpa'zڒoA<d;@<դ)lyelR+U?@{c Q3XiZ-I9x8K}uF37^U"]- rxv|)T * =Ygi._<^D: 5b<欱%®{* ># ].oTW#%So;oDASVC+qJ5AS9RIHL   RMfϵBtcy #JΚ,@־Y]uE=\4m7`凓l; b8b/wt| <ń'PܢKU@e4=H' o߻|?"rǼyb7a :=Z߸)[A'Q;:ޞυ&p>el4p#dr9_*Xβk MCtnv 2l})lZ.W!wZwdhkȠAy%N}nxZlбcM Z7NFعpI:TJ{|,5(vW`};gwJt' #w-;1('CȒ f,?80 r,zKo[c^ܥj/N/cZVyAljߤrN8>rink;^_fs }&9ͫ%ŞK>c wS;V\D$ X@{- ,lx _مy73@GOHgJ2*71cz0]i|Lf~r"s4e0'*el$V@@Cbuk7W׽ʡxlONJ] }WH`sqPWt֒-B{=PT|^w7Cn׳Mt? K9z^hF>_34]^$B=m1݌3PeHV?& 'o>䂺igWstQtH=p29Y#c EMr;gaΓ}=@ Yl;0PP~K9rG XBˣ]C0Z>b-u GEyױ/MťJ4o2+sEb َ-!2pcnߘyOX.x 2j~a>l 3u; y2,|y(>K-, 2M[Wm>a!F~f$I`N^ϧM?Xa]ٗ:eѓ= CXdmhkO"2[o}11lS C\e˷1b)ۨJ4]gZR4`uݷv O:2VQXXqWg<%f9k><wb|Ê7.&>{B#-$JJCh!ySCU!z/+^F:KP+TQ|g͡vV%7rӹO0M%ԏ~颸GZn RGznCKgh^4.}5~⏡P.jPxZ-'v|tW=OBeGϗhFc; lrCc!2)/s`vh͓D6MCzH:YgoA&j\bʌZͪI_r3}jˮ^cQO$Cțcb`At1&eu{o_iI^?~P`뒱 G;>o!XRzeƾ2⣉h`on{w<r)1'F$'ٙPެD!6 5K .> g#I%_W`!ᢢYh0ja lˊ~PkH˾!fWb6[xLcfA\e m2Egܰ\ }+l`}6DzZ%fE c}k~#&$<x{?5r0߱~ʅN[ ԋ8TOqTk_i7F> Xj =s'Ox<&~;nVr\*|װS*Ot/}/mǛ:?TU'>B_k\mL}y]#f S/co"{!u ӑZL'.тŃ@" I5ȌT' qT♯=$BIGzuoϿEމt0 ݘ]l(5&mtnC ő/m 8kS V_f->ptoE[.=br{%:7o0c|l(2*Tޕ@DYF&o2aIk!]$}~K%0̛r0-syJЁa\Z%EHP4jRŕT PQ$6DƜ߶&U&c vRߜ'@7Lob>ѿԌ2_s+m@d} ]̟ ˼g#R0@@酗b&P~}5fFsR_|ER>!;Гz^{E>[awb孆5j So('n(-:yq$U+3Oh=o>Kxwp6z[?Z[˙lG|73ft櫋ŕ}WIn.1͟'vt}0q̺DLuG+7߳sN9J|XN~z46/U?}5$g3+e0?92P)۽ÃP}3M+%^"!Xf Z,IX%,ʣy.S'!'ƿL0M`:Tҥ-)<-rt}Niio$ >; "N_R]<١+_|դ͞юͩ[+al U5ĀCQ -n')&l c,A}ƲobI(3%L ak; CsVO̫9[UAHlS.'AC e)V,5M/J4]2y[U+ gdu@_3G|t#4Y˄wI =>rLJ(naDC iH'sceyEAL=8)S6aQwL_PRFv-~!SjD%f-VY҃kd:?Ecl2Cfnw (iؿv +<%qeP;RM Ic^y |B]T1t1~zau+m*A_N^Pj"VIj!9'wz/V/ӆbhHHӰ;%xg0]JL &=J}Pv6B Xs AK@ t]?`L{;,(nbsJ{1zT)+mگŒub~j 7}?c';@#АFL[*ŀvWVܥMdZt:_+$&@G&)T1=S m}Wb؇K"VE*?c)VHn}F%nAs_!m~J3Jg=e$?;;KyM,flU{;:q gf*9dd3 O!*LCHf h(]TL#6i~^j  X";4Cv9;a#kFE5 `xB*msV:.]"+.cW/l:$[8>`~jXd1~j WO[yiDH${vȉ }ܪ#:=a/MI]Vׄ#@*9 ܚ$[sGѯtb(~_K㵣C*-.7S\!un{9q=xP>irpTФN{5h\&>@q;3|/ٛmV5&!8/wf&^axCЬ>ݼslyte8tpDfqh;WoPiH_L3đWoSScfu ,|kFǜ vds;xI&Vp$-|?k˖i'kpɪ}0(]1"δ%{\>X厫4KnμƵj=;qH o&q njeɝ0ͅ_SJ%F^L"+{ȴ+ {$·] tB^0/piuxc߾R-I+;\儂\Ȏ_!߀-:*Z( Gu-SV"Q$N,RAg㕑N7/?&gLY0U:2{ 3M/ʏ)a-',{Ҝ|]օ{@u>SqGX$Jo9\`C7VW-:Iw_P`LH>hC 9#u5k$(ymg>ܖ+:ŷxGc۵81I͎PaOtF"^6uBAf{k7Qh4Y7: 5Ow x!6Q}/B=(ZM6G[C͙vAhmNn_e_jVCBKҞH`z{#lVBGݕf(K:ɒ"s=؟=/)lݮ@Ǯ9QP7L@RU!]3Znw/mEt批0i)4刘z'?ڷd4l_YnXֶ5g΃1S~`lL^nSJH)Oœmr޵S]bXxno2.HƶGI `{w#xF6Vܜ*>PgOp{e$Iu*aHׄ3t[$94jY_ZECƧ!%jdd `PR:08_Xr/f3 ٤a:+pm+i!rYHhh MR3Ȉ7~L҄ޝs6TIVx+ǜpT ]Omԟ0D]RC (4ʷ+vaŞ~u'%?@G&{>WI*Ŕb23RJе}+`_|[#;;6p0tIq:@~q aziv?`c/srg"9Sx&$ַˣkC~Xw48t =ıL-/i7Hط1/) O,~Ud ;o(&CbU:+x)ԭ5ZS::uP/k#ןH iA̪nl[~MQaua}!G,kuEwt)^,r?]32t:n!8wNqoV-og? Lܟ& WN6-[N,SKzD( s$1T,퐗18fgov˴,7QSw0P{MlVfC{e>P:=9@v"Km\<ha$7lq@毟ҸkQTaw]yTF"w'r vzˆnkXxItq:9՛W9wp0@uE;soYI;:6\ݻΤao@S['mC+(mqCbn6̍c9ɯp"x.o'xckIhϊ?m1VRC0e %%l i{){ z8$-1m?Ħ!ɪk< : iL4J" jN4api'EK9T&Npx#0u>*w5>1-Su f3T1ɽgb YҽxYLX>w+6jوx'Ɨbje@3ћOlFˣd.oTqY|$̕ /!'ĄF^L?~mYlWhs>2UF+C%j $(-k'֙ cٵ@S%7MJ*+"sL_7:_HYW/7Dmiu yFI ˠBcl쀠D:-vm3uє_1<]j[=Fu^l0\eTAJRy5p)BF?}&Vc@}ߵJoBt=@(>$Nzջj.W=TI)( ܆6&^KddC)Ǿ;&0<]8;tp}t V+)1swHm=CkAwj0L-3r|9Ipl2dNK&:\4eɫJBVܛ/P_=Gp eQGQ9k)ob1)655һedsiĶ/4^Vy1nXw&n+.YS=j$TH(=ھXǔQ7XT bl.~c17vuAe`t}] Oa7gQ)5[>v6*{$}| jLm[nNb?i!EqUȱ}AٝulJ:j<8gl ݔE#ñ5]mNѥ6#_BD Pw轩">hL ,1=KjPz:Za1V]!~6Oܬ|zۄ4fՇP/6˾aݲ}oHT;/$y:tq[)Bv0䭷y7)t:h>zĻG!2,0:wx] %V=x =~eӮgӴ^Dvc*Cx 6.eT;d12}ra ?/^ILVvMC+-qIWǨSaCxxDJ$wE>S7?ufcXP$ZO?-ߨ{{=`])>aYG1@x'߯m}eŮH@crpjz$% I}vn'C$7HHS)tlS!-W$`Xy_ |an:.6cqŽ̕S߭bEv(}:@]>`-ߠ~]9w+#MMv h YER~)^TC׮=己F4 MPCeIDۍY‘XB 3#Q&j_Xk4fz5x>3&Fʀ6'M2{h}0LԄJ;3F]x$ݯ`KI2'>WWϽ5t2 y\fsф/.us &O`>UDHmptyܨ:lG-)Ei 9mg*{ٝ0zxpYz4_xD* Z`{Գҟ^l'? l2}Sܤ/X1ϛ"wSӋB>OOz`e=Xe-,:D7!δ^Z TԚm/,Կ_(u6[u?j!a!~fl0o2I␽p+>9&fy"41:ľ8vSlد ώKjb|Je- "T=PI8I܊ry˔Gyқ_C"#(WR g-C1[l]#un=7Og+c ]n݋&9eH`tm}]hm`?A}SbzJ”ȾzC@ޟ T\aGmߘJph@r栅5r{,;iP#f`7_Y?J1d6O\%#r]4뿳m.r P˳ P9L:y^~ᚫ l`_uN7{ܻ/> ] GNeP̠mF$"|Ua:׉.US6+ 4lv/UD!Nkj;J'b="O`淣WL/'P6WU|2\)iqLyQTB2 Wݍߋ|Œk4be}*b큖r3p%ou'OE] X{EV7V;|Iάa?pٜ[ߏ|B?Ά2Y,\%Wj~2kCCvc0w/V a \]R{d=w kv?NQSƙrqւ~oR1X 0ɑBnu%nB{+4k?[a}9ED⛽Ұ#vd'JT ==;$;\$(jp4Ww]_Qb /C߂>bkh)( :|J]tPEn:7aȚڥ%YZt hJ6V@ hf[$كCNByRcTH H4%{k)Ӌca-.ljDS/+hq^"@퓩( UpUZe'4q9]= ]1 3Q,-o% LgƱ071رhs$OsZj" Ù׮@}ϝIo0*姡*L?Z rJ7:NŐaC櫖(YBٮ9Xw'%ӥ.QVWmW _ aBMx#\`(͌G*5˪ BX$>cġire rz0y|?aϧܝ k~?9Y/;Q-Yci 7=āٮO6h2i fiƾ]z^o0t1acC85xd&fQnHd4WZ1r;ӥ$(BP)vMNޚW*˖٬AY5> Zxh|%<˃ ,YF91~!_ݛtZ߄KS?oW]W&;駡}zt;& AK!MZ6%fݹ}U(1bOKBhP}IzC@aAX"3KM^O^VZCP|&4L~J&ɂ ~nmLPyHo2[4E >{xJO>!IEplHt2(LBGV#*ٟmZR؟FdcѢqs`<9svzM :8T}]q*ֹ\L( vX4"N_Ac,$9Ke~8͸4i0p %VU)O7d?rZLsTD(hwǕ6-Zz徫96sdh*q|}>_MܙpҧކCaɩ]"C2# V~u\,lyJSBCJ6o'&-> jʔbvKAeqvWUj=(ƒ?:Aw@m KV4}1 ߟOh! Sǽn寱fJԑȌ>2ƚ ߡY)q(P"W5fZP@Jr><zåR VCKP&H[q<7Ǘ:faPnxkֹ qbMsq36D%by=YA%z2}89SL_ouC"7w3?-^ll ъ֟~nQXuNŽO/M1.)ai_GX:FIgcmPӘ% ǭ߮IXM(֏|?`,c9OtK*U!i=@= K]Wi' *BZy8m{Dߙu#P9sY) - sy Gcq85ԒP'Aϫݕ'ᜮnjٯ,8k-HG/1$>nN4zO퓻UfK5T"\{zʍ;}݂YO&R|-k\/bLl~A50t}W!r?HٱvqaI *B]C">D5lN6DKY~ )v'wuG&:?iݱLZTr3 C8bHҕUJbZ+,K>V꼗?̆~+[ߤDI8e6ze%S 7Jg2w|j}m ;GO&- f8.amsCX|dغAmήb;)w[z$ kg|J$u[DX$2;|Em6_ N\ !faҼ ##'Cu] S&M/>@鬢Xw\WߺiM DP-؋.AmU.37ƌ75DFAcM-խ̵-a7ED^Aw?J|!1Q=DܑQ)U^} p ~U)6ʃiSW1@ x*}r=bDIhLw}ˌa@@&r@w|45#daݴW~ێS |,zlxb?a~7'_aC )!66}:8O]Pcymb3sBKޓA=Q=A3f U:ĉ5cp2"mxo뵆fNͭ\A mT}&"#K8@}s҈ gI7}.W n)Xad40S; 9m{Lapľy|H6^Ke0T` }|-}8~*y%Cv--PaƊM,b@euRj;<b#{ UW%O܅{2Q oCFa Q(xhM C%e"2!4I]ݥvw'WiAG!ŻPT l;~SR4شw`Xhp0dٓ6yL>9BΓ{Ý L1'T¥kd"'5LCL(U!1)mOǽbeI4*qHR:}ɱXly\8+Q#y:8I<u+Gc PHY"Bq<|hKn 6y.V̕m9[^G1̻e&D]xy!1I^z Z޻ͣ?ObE$"yc}5nzҢR'B#llv_ bR!VtV 9.A7E f'qSϏ _2/B  K7R #˵.rx6J\0}Fngbgd(ebc,HFJ3߰E"EVTyÍaWXz*e96H( {^\Y20F*ZU-bNw K<8 iAQ#b/!sf"M4zݷJɓזw|꾿4~u4ERd06)ӢhG_b%-̋cOiΣPS-Vyo/d>=ooqwM|lH2=Tﺭ8kmm_B͢?v.[g+'n]}SlQ(ok3xqP->ul@!i7|a}_7NG)FrUV':uc]ctܓ~!a[]p7>:uzDKVbЃ#L}Ag/0x#96zZJ { GU5TVHX[ EXe)&vEnuBU#`G/֦#-NNxoKvլW(ݳ;z2_zCM)ĊOU\ٝ#s041軰T/NPbGB9حTe^)=+Қ") zM-&P h-D@˛-+6X3 Zw۾>`/~ɲ$՘HLpk48>!Eb?*…)k^1qwdނh֌{ȡ" r(;vmAyA tоa -^hDcӳڱ2OI (mZp@1L3m'Ml?a̻H0ZNuBƃ ʍTFIL/@y@>} 4 ȵOb=ux{mGy~YAP%|a7|a {f~-?^᰺v~ |&1 ,͌ 8 %>͎ZTW3F6:1~.ȘnsTȊ>'.1`[/2C@hcK) V #tv^>6PB5/n]vx5US4.ǛY[ZLIPƎ;, #oלZd`^[ce&y|L]_焢]/BE9͉4;X(a0gI+p,uT;3"J$q QBv(!!I{=coI|_z_u_3kZ0 czԒE }$x mr +vdtYgoSB+r&y0UWHphE)Փzhn!о3n.^B{ Z ~ jOєإyo6O{O@߱P('G @G y%> ҁI)L0:ƲuMVW7סndhOM U*;vWCIBQ㶯 ]rތ+N8vA caՕjH[7c얣,XKm"sokp=u-AG3^0&B}.=]lwW |Z z-\"ng⁆nJT_#0˷f@UhW)lJ1%ɰDAY*fl[i{y1bo{pL Ɠ_]rgAɚbG'}qi# LlQ^8pI!N^PK9BL TI~P[¹O"b |y/8e!L:zTc9,Q|#vO.kBUi0aPj9{GAmJf@gB+G C!YIR[UuNLK|m+|P˔pݹ-b-2Kse^P~(- GA;1o99@l~"x6&z}UciD?h+ ze~o _kX6,q(7 '^zIG+ ,!oJb=8D7-gwbyx]]XPm=i8P,+)>VB(+:qYZ ?u,Y_aOrE~B2D4@\i6/NXʓ¿$c'1ˎ.,/aMyxSx~} !e)P[8xT:J4H+ن% i8z;$oyS]KJ}̀Y; 'SVd4v_͘lzO+8@Gn t} 1d'lP>Y9WF!rI=ȃ[dkrNETXOhI:1Gpsv|66{a=?~>ךzF )O݀h=YNd dU4uІC`̍~? n?z4;;SYC,԰)B@ަ|ڲ씵Q~-If8m O܄nnl%ҫB$V ]{ܟ:S+ O`"dSћc}о6xPk\} EQsv;>B ٪0x }®!U .qa 9JyYD (~2P{}5o@ CiJ }mbŘna"cӘ+aY82j(%bFV^̤+r{-S{ĚVr'#牗'to(mSp3%$qٌ؋`vá{i *8:&|{}㱞a]SI3أJZ|}F7##3ȉ\?Y1gRz+zx V#A9C=k!,n yS:CDl⟯Pܟ [Pv1;a(QP S̠6-AcKN񌏀=d6g!"C-$Bm5*eFN { }o솝7C6#_. pBlVڛҁ6']X`_SY߯qPٿ[,8oKb`[xoT]:Jtey~uEϊ㐱ݬ/3_a4#:pФCiƍ[2X)crl~^6@2%j-Sb맿|09J{k &%w_-&y(/XJ\N#OsM'(sCϖ]|o" Q=Z i~XomhS΍hqS(,͛c@EY8Q(}T|0;~|JNœo9ȶ0K'jj{o߂dTp2GW C8*tp0l ČTNGa,D/_|s3q1P/i8II?3`sPv[j@[-:V@N4>W$mŽnrBy?"yO=N;#aτՇ8he H9m|$0b?rtt%z`)e5-jsl[ΝXٲw eȷޏ wb7.LT^\P))pʔm=T^÷&d#\֟s/o]NƢݪ7p5cF.x|rĠ %W4YFx-Et:uJq (sqs%EԬK* ꖩgu}Kn%)t%Z-pZO)ֱڻ$|7=7Fal:ƠE lhB\N6WGqi? zgn;7%'A蜵kr\I7V{]8a@Y.58`=1Aw{C;pNݖ'= kŇct[3X%Gb?5 v#G!S1-hqv8xJ4dV dȥa?WyN=ކ>"vB:ݱő* F\m = > #'(AOZ&GtcZ[k@jxc#浶o(/Gx^jS;& '\uJzqҨ$++h/1oدuNpg~ԑQIؕȀ6cI, tip7,s a? ?6/.VU裶DG&ԻfԸM|5YfXȃXXx)Kݔ}}OKᒯzu˖ଧԁ˼ 6aaƟ'EڷYaw+?X2nT+$y\!QO$Џ6?ηG[ЍgM R;o}byL HƅӐZfi>8j1C0t;!~u }kQйz䴄%ċk@C1nI Gh=Q+u}:_ˑcjFuUhb- vKBMN:CMVMP]8AʔAp`ڹ ϩ}n硊Bḭ}%M/cx ZAJFԾb5ip{kJ*oJhGrh m_@YzyMO3*(w,#uݪY׊ŇK~SmM.P$o{[Cٱ^/Mm-yJ7 S=.Bʡpʗ|P`K.58צUɠMp.,z'Ql?S b1,0"?KPhf~ ϫ9eBl~(ZhZ)Ϟi{t0riFd"'8~C)GSIR)W@>gб T%M{Ţ̋]`29dQ2܂2fxx>9{"\ x(5tk WkVcE OˋwP/!N8nՙʀO_rƶp/@`m[hc '[1aPpB+J =+/:<5 4AַϝuJ,01} l'VN({"8N['R@R@8Fr-9h< JDf S!N: 2DZ^/Ti a9穱٥(ؼýý(z\!v\}!K4?!ois_dR4RN(CQϬ' Qh~T$) UvL!-8Έp"e7D0Z ./=7,K7p"VT-d${DpnX,Q9mS0Xq ꑝIGѣ8/י|^x7Lmk4e"e!3%FK$Uik;΢]m/7_E{3ИC M-RcNcA!,'kR|ݡ {W^ $_|Nxfcjx&I0ė,()|j0f7|dψlFbzj+Wg63@ )bq]uwt^Nu? :+% zx8ѳ+l:cAIf M$b>E}Vvğx+=t㑷u`pg~|)~ f(i(xJ+=8ge>L`VBrs;aYMW}9ӵ ǀRrǰ'g?8y:6ԙn +v?~S,Xɬ%ʏV'>fC}f)6xV'O TX3G@ Ө N;rMK]+Jpc]Ҽ8rg TOqNl z?s[\O6K:vE:a&Lً)EY䗊_Xhcݐ{%/Xَ/n+v&=;lFt {qt…Z<GS~rbWQi;8$^[1;}SjA\м+Y4wz4:E* n[UwpU`{](ʸ,Ru7ZJ[XdB/z9rB .)@Ȼk50![؋YZyeZoa-Owu)7O%3Q{C@}P@rgD%ҴXF9ے:uB雮2Аvnqb&&ϸ04qL"cj-5t 6TkDϕ_5e:qBpveu R/j?ܤj3BLm6p(H3 UfAWrV.TlL_R7Ʀ=7[PCKZ@3"}^w>TI!DTJ,.]0]jJXFfWQS/x|J1裦tM.,|i^_W$2ͱ;E^s(bo%ij9m/Zm[73@LRI>_TEsBQ? kq`鰫-t< } nWa) y!7 ? Lm"u3J[X=Nutv8caZ;y68z(c*@kápN*DZ0謆vt%Y!J9DHi pύr4rVl}k8,U?%|Ǣs26)r#!\P%8[[.`kX)4Z߭ g1DDT#Uecf 轢(wȔs?!יËwf#v d}Y֞Ndrv{Ix+mߜY FJ Cz0>^CE}glǽO%-Z9(5'FC#w}|K )=+O=P]Wܷ3COͿ>|L= *-a0`|V8T{iIHBٽ1pmN-ڀܳ }-GwLQZghSe)eʞ2};L5{ ےF6-pĝ]l0d;)A&7c)Jr?x\ Ӡ)_pg:jzR_|&D i9LUh>U_1$QS2=mLAAHqXE/g͍W! -_7,g:/ٍ, y<.3:,u*PJ v&Xi$Ów JÇ!_{%[ȤblFdLsWvl&9S>M"wق/UX &O U* SB!,4.>!>%u5j(!yK$ǫ$, _gHWaDBa>?j$Ӆ[k][L֑(;X v_{Ȍ+ܿաOK̒?M:]G8K4P3ؕ)hl٭TG űE4[Mz ^BMNlT~3&r+-0di;;?=ҽwz=!c{O&v;N1!#r =S={uEI50ZrO (ٳv[o̥Њhtz`d~c:en]4N/{@aڌ{X8^ քZĘ'ik8dqH'M~3(U/я1`}w 20t0Ics=ߜ`zUz7v00c7oav[- M`G6G0M8xsϻԀ*5 SPUZS(CnRRCc4)@X3fJ^~+%a0yL<^4;wo:' UG 느suW%t4o@뽰ؗuKM u]i_^^lٺy D9%J{*A О%")I˜_s1¿ӷsB0M:KZIO D~QlTn~d .CWo7XmM>MS5w Ю١j_D}r8 W<dD#޸i ڨ6.i/k ~d9>ꬰBቩY[A7H"`V>tL' ڄ^G Փ7//`9}3k4T5u||fJo*+_)еDmŚ@c&.9 wCwQ T=f:v5}K N7]y Z[r8C߾\F6Ԋ7X}b' \D+ڂXQO70W#0]İiԀ9Xhw ޽GRƍ9M&h2<{Ѕ-_"II\O"m{ѶA yrC}2}>>#%nՉxEo݃MIؾOf .<#ZHmu(heP~gԄM{ĂGx3P[ٿ)G?lp^Vn"Ξrܼy+n\e!HW)P钽1Yz̏xÄSuZ p+l2i!7=KҼ[9dh+J 7̈́r1l${4|7?z*qFBCf53+Nc58rK-QG[U3p lओṉC¬;wxe;37yw;#ÄJpkS80x/[%.-yzQiO$d;ŰnmuSmr\Q3]M~*%>[iwDpJn3'"ԋPݸSջ]e҇qR݋+X`BȻH4 q'0hJoUcǃ܏[2'AJ%#Ȅ [˲xCQ=Ό돞{]z9t~ݢs9jҠhp&CiW&Sq~_"ֵy$N67?]mwXl9ΣW~ 'BÈ.L}H g<qi7}|" ~kS:-aE4 1&ԩ]|I[f 7NA6M?gEU,-#Ϟ>۞HJFr\nK4 K?*|e GyD~er}k uXsV<%_ F: 7Aj4; 3]HLBK1y3׌a2{"|./]!61QtUTʉ^0@+/Jl4J6ِhʲk; 7II xHi:p^ԍQᢃeܱ СIV _g=~*m{A{zhAUVY5aط:tR;qoрi>EY=`JICqF v~p?ڒ^ I (/h%,I:#oӆ]e D=>2oz,b)<~dz/@ZBZp*X4Gˣɕȉ\:HE{SŘzKwDTn$j˽ʼn:üjbܯot9LEhWN.16YxYaAS &+ Ƅo}˰y46J, d[cFX.yB+k~1o a. |tD-3C ZY1Smo&~@v͟X8w[&˝*Hy×X}k~&ލdžԋCu|FN ʡikw??5:z_UUpTpWqRVNJt_XopA "UyVa+O3d.7BY|pqj> 3tsE,ed= %.vǍ@n$[k*\Pʹmj=^0+Wŭb/> v iN'Qp`xCu2v0+Cy&йֺ98ظX1_w?Gx6Psbx =BDR99QO+W F->B+r;{25ސs 4A mu "}YXK%_ p|u?hf!^.q;6,DXϩf܉9l[vM %ka<42ANZ/r{_`&3 zZhX\S$?`*kԥwWA/}nu Sɪ3⠱W#HU\z]k ]?uڏ9tG޲S*$Jx&~qZ&+'c]<Ĉ.Jwb=AXphH=ƞflfs5z`9Y_y^8@$H Csú: kZ3LV-JOڟD:0haqnt+L1Ya M~ϠML*;Nj4`Vu~l9bO]M/n7SqYཝ[zlȒJ|qTi Tq*:䉑#l!Lپ_ >YA!NjSjK2e8+@ŃXs0LtT? ĩSn+uuvs#[}=5)lOf3=W)o#3{21CX7H5r[CbUX+ ^K7lUja¦8w,LuP ==em7ρ[Г7VO˞A5[WP8M0m'U2+_M.%c !XK~RHvC=y-xٰ3t`V\^|Eb1! Hhcc7氟_7:b!aasL3J6(5_!tPվ ۖHLBs{=fXß!牜<إLo*b]iLT.UlEu$6QY+]7wއ#O6n_ٽKl'wAUDF:DU1D~)ڶ+ Ce kRsW* Bd0A͟0U8?Qe >Ha+q}S!TX{# G ==6xEqId@Gxf!NwB %P}Ux{.\ÆfwY!ڧ~c@S4 [t0̒S: Q_W[Ah1ܗy꫘19&(>N=ک,{#HdiA,pH$Jm\yc>mS{(YH^W 6gbԅ!;ciU6/`ʆvC5d$0t!bd mv.GcnBEط^P/Fnkm }9;Tܮ\9wm@G'2g#:0i%!b=tY_!u1$b:xkfx܊(Feų~W.B#'46'5YcrHG62VNe*>v&r뻂Tv%<`# X&N2A%'G?7f$b۱)f;>M7(쁽Xe{¿.ғg`q36B`Sz7 f|) u^Ï#@ͦ842Ry'aVu%G?} ۯd\~]v(Maa$){^N8|ɒ*Qc,YB _IMüRTXڝ,.RgcHCd|N~IWDw{]56z,Gɤ[$eZֹ8cKωdanra\ WP>T9RmƀbA:do%2lC1@&Yz/dwS=\x О 1D^ï`{uEl1ۯ-hG//կ`_zX~9 ᰮK=ؔ!0+4H;WĜs|J^Ɗ6FN`3לbJ#4B jHV~=NCuIoybx+-Zܧk X! auUm 6L98OOAXMP ^A'~91)vWFؼ}>IrێP5DaEe1q~(hb oA<9>\x Tr..86c8Z)#$lyvbx)=tp_|HO9͊M=Ň0r?69U8-¦7ʋ7>Z:cƫn7x^4Grc1o'柯SikRVeXERJF7"tc.g9̺RH;wtV.+rqqMt;Ցt tj5ڽGxX:g6V(N_'\)/ ?? FP_uXqgh7vg|ooJg`%sfF ~ԻA}+Ɯ^C&HF=4tbdʼtA' "VDzAfOYKKX?v1lL<@|[T ]Mm{N4ijWyr>Hv7v*Pkϯgjf=IpA -7}/ߒ/lxɹĺv LY!(Iu /qmNB)Y1gHͶ,Ú}Z-=!f ؿZq_/tsqmiVu#m/(U5z>S|J0\Y$KX c:^-uAD87EY4v%SDB1 JםཞJ*$NЩBT#K!ƕS, GW_ * i)EٯTCY0NKiiן3M,#fb)c$>vH].Q>![ _!")J8fvWq_j-0N#&e ?=]_xx_`Rfщ#3vu։b##ب)ui{ Vx!GҔ:`@26-^Rc1=M5^a!R/]>$l1 [>?Γ"! lj낓ߐHa/oF> -C'D qz᠝s{Xf1~ "xcsp§?6|m vA[OO`FHٻbrm}Z .Tc^>qۀ+zgְ|:iz'0%fҴ#[wSElKZS]x?3{w9`UMel4 {~;m.A_ LTBB]͌)V}FϦO!KBs":sNTO1]8J!bk.M j(h5Bz1oŸN<D}yoEU?о:y)a4bÿ3bdV4nHzqrC;a!ą"Hۿs="#`޾?İ8Lv.s$б]<α|4PfBF@Ϲ}_>अS1l2׀] L4ak4_?v$|LnÆ^M 8~H%6KnM`~j+ČjSeU5,c#t^)BumK:s85OA hcVϼӝy3OO7~/.ʰlRw1*8#rGM9B ?eƍ|k_q)I-,^ŕR֌7k挮C:~$(y[5dS`lG*]NbIʽ&hW\_{ o4+<%T)w٢[!g>ZBb7?b%B'!̹}~r ?xM|"pA5&F_ܰ58q{0>$C^O5Ni`t@^0?JV>`b&>w`0S Jnv|CZ X;j(k9r ۿxN(+<b4w[~}LJP5byx95Dcw:&#ZwGuN}wO,`דo"N~.׵~+$Rf f'pX {98 j޵@ DXy?l`Q5wu+CٳTIʕ< Ahzf-3^C_s!\{%o뻀d>U28& ƴ?•NCqrn*C:tԕ=p>D޷4%ԔG`xv,gp\}.\!#.MGNwT%t6FٺrbJE@/ܜ.UBPVe^U^BW Cn(_ jRZa̠nh(=pIqCabзyt TRPaAG cIҁ[#N{ɚ 2"I0kZ _h5 |qkV3ŠYmb\ﺒ:Yȿ1c?UlCx$==Օ;9Gkr,|mĎc~νĠ˂~ޟoaN4l 72\,WÝ1yl$urg_#g+WJ{FתqPJbQn }\<~uG ]{;s#bfjT>10uy'#< U^mpx\hdrб,.3EG`}oa\v k8Xd{KBE t(Mu&VߍR| wJB:%Wȭ,oMn^†1Qx>/,"QukI|Orp6k<$ QvH;够m&ѵEJoWc*1m!{cO:K)}.DWIR,i1S&Pū0NY"0B 6r#_cS%{V1=x` K(M)DZcџ|QEk8D')!){/ptq#b?/rv&Ck{yܹ8FJ><)3uU0 U㒚uɜOePeg*^ueKc`%쭿ubk'4 /lqFz!wh$ٯT冃>C+V]/3]nQa8ߏ[sUZoؗ9PRnvR7;M0me @<߿vR˚ns.gPrGW19Ne2roZ?x͕/Sts| ozuJ)Z",ѝ7MrXtb!5IU s7J+&">+gT}@G9=ʸۚ걮X܁]v`K N?$6K"(\+Ӭ=䲓$A"oD/5]P-o|w'}8bk8n83G`Sg'\BN+xxPURҾOўi<}cQMe)|6DוC1{moHasD(ۖ tl&1"JQpHiMIftO| -+$7Ś0^81hj]@4|.v% KogMbzwd ,K?^ 1עI! zȚkWZIcr5zV8lV3 ĶNȗubu;_1oW>b)=7&@Ymh u0h|<1vQ9CC5YfHU n䢒1H`1(l(ConB{e\^0zFs:$~fnDz)ōI·+˘^Zk<}ϑcӳ[}oO<9'9I~K/"l~& jKV\r"ZygG c}qp1 ֏a){)y경V ֌_\ pRQX";&jVrSS2 $/k oTb>V|{K4ݾ «TP8h;Ljbdp%Ve2^5GN#=ˆSL 2<_FYSAX˜znv]tek,ގ78W$\0zbN>wXN{(Vmh[BUUϑ1ou ״a'{U@^>6hsut#]]$c{wCvr" gͳ/GVPY)wS􂔓F7& n1fU*z]!ZB~Bxn(/fM4oZlU@^Kh^Zd!:?['~B# S`*XM<__Uľ~';a⋋x*=.W11sS,8M8^U;q+~;NIvI9ى=7lo7͜hXP޸%+tY]b&E^x~Ƨ1Lq/FVr01 o~W-(Ak QR&c|*V5ºz ?p şᙺ7b{}V.kYX$ &ѹ\'CJU+_|Q1?FiwG܏ckgΟr㯆(yiSNZqo#gKAJ**LMӯ5[bhDac7 #IPF }Q|O=aBy-a3`]6,b7H':C*417aXumF^${{32P-/Y #r|> gu|‹+4/-wj[+oqRxcƍ}XYJ>-wćE[n$:n5#I"9}rh}oKA\LODIB}mױ\4:ÆuoR[7Y99AM BUWXJ@wt/^7%%.b,wKo=߄M_AɋgXg}$F?ٛ![8eUl!1N{1H2gVbC]t>;\]ӗ;MmBKg"t9b5~7'S!_fv oֆbps:hw2"`?.*Fk zXpGLG 228K<, }i9e~5La@<]i 7kZ!bkMO ؝2NAm S#Й*tipzFWv<<֖2zP{ijD$ epnJ%]\{)v[^P8ug, rLGf3N[T&#N3"A/AVDy 8+ h;1^V+ g !J3d|X1xG^$V%Dm:ٟݐ[SUz l$, vx[}Tzm~T}UcvhY# Y1/zY/}~Dh_ ^l J3HtZ.EpA,X_;* tt$N=v}Ƃ'E}+ס%2:N/eݩE(=̔S_rg(C [= dEB[>Z K^}&336VkʸYDaD@ //?ˆ4=L;Mݫ3>oNpBj.:_|5k/S0#o޾VD߶RNVS( ~@9mG< 9&UgMehh](f (Ah weT<È,}V BG.)[2)]7&$HT(r_-[P)zDz#D^^+ ՠYyL(P`XFn0~eiG^k`f h0 ̺KcukP[BAX?YP1&:)x# zD=8@} J}`8<%4z{Xx?tpmP_ǡ-?V$աuɻ\P=D!{2ݢE;(Nhrڶvg@X>%<7fv h_l⻝a 0)pD)qwLP t=d ]ud+Mg KB惤XV^ j$c-'>XDk`~ in48@Y0IϏoInŒ72;Xq,>^ln0kܫ^vHJs޽W. ߺy#Gb|K s-@Ym#(Ε4X,7f/ ~Mr1kΜVm8$C]:9BǒC/i8`W"D^ՁѡT2rorlXH7m.v¾'ʹJl6tiQd_׹+혴{Xۓ8.Q)iqп,n!4hk]~At8nvgdsjd< Yf15`uD#fz$))U`iMlYz惽 TgV~r]XX/n%h+Fuu]>!qC2a)7t!\=l!=덇2QA0Sl/~I9't *#\؞{_,V\f!σcC4lY krBҩ'7 ]rDhiҹPa~ꢩ72#qT4_O E/bI<}Xro FB6Pfijde0ʄQI\)/qCՉ$Pb1,D@еbӑ h[QZfD]xukWvGpۺL %ѽtWjbEeepE(TUW#5),*,fOG83Fϊ\R0;?[8ڡ[MBO.1 L75r(fF\rưў[~Pb(s_PF7꘱#|"2♊1X}/w)9);rZM+ d~{ M^AZpwV<Aq{nE:`o-_[G@Ƥt}[+49Iv U- YP]jC %Gݭ!r곃FZ9Ԁy74hn$U,|&|,/Bm ȬR;a"{co4}N"Z|h!(Н:yK(24M!%rb'{vB>j.X_Mpg8t}j09gI/Ǻ'` Ɯ= u]̄*ڏ{|0&\>/={R[ʣ.0xA4Ii?@'7e7!X7Z4CG">4I1MBU +P'pe~(9 1<haY5,y- 8rEǎbFOsʐlA-ojt-bo9 @G⼞=4AOȩ*Z<=WgT1rs>qd ~Գ`It&b~r n} ) \%?}LLݖ :n厎PZ*KD(N-Vl(5ICw6_13ΰ.'}* P.pthtiYz!he{e)YܽPO!\BnW3C4M((>|)zf%:$Z\ߛ,k3$]-E{a$PCGaYr"f.8 ϋ߆۲?rk;9JJc T(9m_zC]?ۘ1G,W_o4)*6i]-.qyMwwAm9c>0wJޘ6/{O =f{ҜR}!XxvI~tZ;:gM?_!Pp|\l?6w)hbtyD7I/ w$<&F{3vŨa֮', aP걋t'Mvk(>Q'1{_ˋg*n% Μþc Ce,{&hElsۅll[a+Ҏo S] *.AǴ̙Fz gnϻb9c|M]f:Yꝼ? .Yz^A5`@S@sܩsrP?;LI"R!INZ4PJ)Udvn{ޛ$??ݏ羮}^ȆMH=|C51,&6=T|ZgႲ{iEC6V^I voǺAI#_4͗箚?O@hxJhO+9%G^2Q|HSU4O `tIغvHXUXMa廊Z94ߟ/%/Cсtcy7L|9<;oWWZdo3 \kq9>_ Ne6?) }re0tyN*qӂ얙<?\teũ%>Kea/o o>6]{&\0\%Il$]x$ےgitEwSڱ(I ,~cs$|꟟)acu+v'ɐN,UbmOE?dR(z(>aJ̕ȷ;8dpp #D/06=Q짫7\^wcۯB}K/sCDug(U%ńyv B3ꨤ Y?~eȽ,ܰדu8cdL%6aXFZN$ף|eF&DyV{˯T{,?2VC-dr^6>gbQ֋,eZL[᪱"6~s[4ma4c9lHRv ۇ_WV`5W2#"Z 71uܨ2{_ 6 Zf`w|ί*n^Se٭OⅯpVbS. ݨPQ B+\uuREb7'\Yp[T9[N@Wg)\;릭#+Cl&8P29˓lAZW2ݔiR؅{DR!mvm)o|>:+Qf?wɯfpE#7p+\~`=? //*\ Z[k6[^@ecH:GY(+$'jeaiV\]ˣXBC8ŒsW"ZGqdn\S}QZfܳk7{Ǝ1`{1aUq΋GyIƹ".v~*L2YoR<s7M :9p̦:ITK%9HCK4uޘ1;*1y4FZ^mAn\޻]DzJH(V`UKU \ \-޺a}ƳF[ڪ)~ Am-q¤܆`&.0 W\ B:qFYH¨qWO|C(2˅ _gpQX9m [\xBnqj[ f=VY(SPe Ӯ~O|HU:iYX՚B'b9=d{0ap8&pd̄ س Ͱ1>jBBݺ-K0,+~#5#G`jIb=T\ .ƭR͹šz?Tsb)FwKQN3u7r5qĺM6+EY QܽbT`wHQ|F^gaݕ$P"n8^ xؤ($tO!ODmx"I+š_jc Xq$V跊nby%6lp;rRr Ll59k_ڵ çq7%hJ}n" đ"Yvul˟LڞC_Т.Te`M5]E3{ġTBˡ {|Abn:>]PbS׌Wұ% b{ۓǾX4] K8>R `k&,#m#oh~E…œdpP%FK^Y>_C(('>2墏U*J;TGl35t;6xQo2$Ū?ecyV=u0{ 7s^ g+6y1aTF80~.xMbfDۛb+8z\:[1 x(be7xɷ0ߪ`Y:8x)?ǐQ߬Yk)uAc? K")hɵ yG7vjXy6ìsLH䱜9а!Pn}͇WU[HFތ10j{o,^GtJ fw}Q}d3ɍ&ա.$.:ssxA6uҹb(JỈxY=2SF4 &;aVY# X/qvMrW3@mXLQ.6MgbMs9 Q6W̔TZ+W99 E/+EbMT?6X%[rG.J)a@ ){-= MA/,~W{ocH`]ݻ'`GӖ-]8 3 LHdNo;5vҁl؞xsnCߦa~s ʲ+@!PU*C;]*ϺBL5x$f V߀}g;n-Cax* E,E婗7Waˋa(Ш>ύPr~B&v"`fQSHbaT-{aB0 qHy>Tc콗a;(?[`ˀwz0jcAL4uKۿz=A q%-4OQ\ã0R"k_3)/ٓ<\cOY3fM _e`ֆW;IXq B⤉6"@1Lq ?X M0@Ɇ9|Ix*fF.-,bɼz$d6KE`w ?&DΖ%'[Ǫ z)TcscU>"-$K8u_ )Kh<01P;ݯnU3n7oz6tz#RՎz(sx <+3lI߃,OLJջs_FHɰdw(wkLCtw ,i/$J J-ĢznaFv4BɢvL_1?iT:Cjو8(h8yٓ.BRdn^˘T็O:X{(l'Gm |Hm~au% u F5l`/^Raۈ 3PbO$]xK?;Xb@i-H/1x -_gT%][u̲T/?X>94D)MzKw͖^V2?ߥbA ~+tS?T[kLޡo7!v*Y f]t *Zs|&x!m)X r5wXsla#Ne"1(Ȓ}w5&cHSwE!,X)'pبrnEm9G*LhCtI7])G3kO!厪p_hN)v1< }D1J[j!uknLީmVڃ2Jɲ ?o[u*/46Wry2=C (}[.,{x4%uӬ3. ίA'ːvt$iC]B̜WVxcx>R|ڳ|ax&omrnjss9ofSV^r+%}'^1:AhQ҉"C)I/y8węcYsŖ> 'y8ߒŘ$5t)4Sl SD/1t:9֋(1wa{z*E4 j[9B$Y3uX'ցQ?s6c9ۏ*:Z7CL䭟>fWg&v8 DTZ :AQg0xhT8\Q^=w% g|k o6wbLOO,?{? )7O\ e)#~DqPjf?B!j$WrqJrz9ND_`bc&Vwbb bhu" ud|qn5=p<0O%shr}*TBs3b(59{gge:~r[_d SoBA{Oh/=$l?.?e]zUmy*M\ݡs074/2^4wuMf=l7yI6TUdB_p0X J9"^>j6*R}nJ\de"l֞u0r8 o w]G{gL+oS(jIϳyjŌT?`l@дxyn5+jY^U+&=E|2b}YZo/Kh E!%X,2ܦU(⧧s途/1_e_ ƾ+ا8`jXeSq\VVȞg~iڱJ3!$ Kjȉ[CR˽Un>p"V%?v;\9vFpЄ4n! >LI[ a"WIkإmDq#:G!kP˝S0*1V!U _F.qz~VyD਍dM:d<Օ0me1{yh3Fl&5|vHF&|W,Dc sr,THkFWvrtɈ -2]cCC뤢1D{|i_~8{*싡; F4*9J?rX ZϦk8+̸,3kn 4*^H҈vi2Q6Qր1C}Mtw+k؟r՞RO:frbɻgy b^gԺX *o:~6brW{0p 2NJnG-]qĜB ,{2*C+#M۰P1ۓIcuX/$v0ߞu<5<ԗ{Y]}9K eseņٜgN=:{7;A"E#Үw~SGgW2|Jʩ6nu7S*B$K?K-6Eo3@2>lG QpME G‚4N=? 7&V q"gy"G5_.6Ǒ?/<`/wcn9!9=N4ğK~7:BSN^:NJW9Q)~?S6٧!l&15iտ%]_i^}d~Og8>c: 'vhYZvU?RWA!:?lJpfB39q %I{5)cE!lF)!ڝ"p0~bM|`#qd+4cyB+VV{Sֱ.tA4r"Ԇ;͒_CR|˫Va`925tv-fb5 }q2ۛrMiep!ǁ{9|O;cy[sQe@O>?m{1-QON{D){]NR;{t=N;qYwR?oÛLY|運-Cdo=OԌa@gC3e.0:3:o`uy^ =;'VϭAE#G,vd㮹YaѷjtoSwª ^D^J`#s} 6__avFKZ:p,,dmVHgrgK+p ۿDɯCi*+$@Cåmh`Z95n;SA$d]u$B6m m֧$E)4ޘmIW22OvHd^! /-Z?f_\zRNUp(y`yz#pgMk(+} A:\bS%Nnk&h,ܲ%C^=YI05_oXuߜ,-])'!SK%gS>=7VƬ9)(ߩi{*,=1p]6V$p`v] OŞd=ZP2nc~ oȞ!o7aJS>E0g5J/~a YqRۗ( OH& фΛN"nfBPI8qw74]ۄ_%B|ua+.w!o%.Ţ&* hi"[/Ma t؈®PK⡓ܟPssq EX@ h -zA1Cz'or&)[G i ݮ&#Kng 4kn>OA۫^||iLC n#]p˶b\‚^̙1_)3x~ ^-}Cƭyn7Zy<~y #oLz9G{_X#p#aum( s\~, Zy.!E^G 5_Vx2Pv#A-=87 .]50cd)?aխsdwsRnLRnæҲr߃* }85sfLڌ-mT5b=MAKZ;60%rr ?1g^"bW7ſ0/w~: Wvչ?{8H*ϰ鿷(őCK> mؤǢ4"~sAۯLދTAߥw㚜04ڪ$v%M^嘚/< ud~4կzu^)yB}+9RBozx # *)GCE'"\o=o$AUfĘly)R;\I~L{h+!K#:ES?tL+">w!-cxiPĒϱ >P~I7 yw|lwHn bG&?/ 4_e۴So慻 7x(c'q82ZdQ94ܽ7W1G8̅S<{ lPRKvLFa֟I i3f* bA}?W5p%jޱ1|-k=XIZm\zGf(ɯt?8h91TyB{/c!c LLj{e2W6B]Uifl=X D٠M96,pՒВ@#;}Sng*Jjw dɑ nzߵD(` hمT`b+7Nτ1}|>߆ KxY/viϱ݄_sCP&tS<7*'W OtZi q3cIk`o+$% CP"zC^q/qa}X?7duvT{cG~Sa6Cx\ ZuCivQu,Cy{ aT l:XF;bL-mJzyz8)1:Q!dR&Ҕ Gu-$O&9Y셤C>'s&{{lMM/ KvnQ;'[hpd? OLi< 6v6% I%H';d>\r ihDUS 3FEƐzpKt8MoNԃC!HI׵@Vȟ}T= ^;58cYY~Q{h8Tߋ &0NK-d]{{ }4P|>k661:aa,`$uX""ku0-:|@2ze?:=43S!a0QzE?jG)3' ox^" m}YMаxQ_}*bع6.!c[(rEYH Ж!$GP:O#7m| Zh( EEm'n@"cj'^!)['*o3u[($?7pڂTvG'cÉp(;hJ*ϙ#=1pi@؁>W$; }.%;,V,·ߢ5RUE^9s<k0fB}=j &n._QE^I| #+&(͸J7;g,PRdGH:BI#OoO;Fp1hyxLŪCpYGP ;>/ϏgKqD(tm_ u|W8zw&J 0Q܀uCav ~(9H￁^5650|zj l:CZ۸#Xv=ɩD^pv{|؎`w〡0 y7EȂj` dŦG_ q"4h~;CߖzK qP|'8V;MucMx֯l.Lɀ=KU hxn]ǹ^XQM8~WC*jX|<3 ~=zi& 'mV>C0p64p{ 9%s|P˂{CCja@Ai%VV?vyN;Tͅ%\ݯRvһǻ>lcuv_lKsŶSKhub"h{"C-TԎ_' _/1?[]&L>c]`qepCn6"mbr ќ%t(BngVޱLbkoĄve(7sU 2êk5AB@mz7&L^HQw φAu(` ODEPTv& ?e)wDLa!.M#&wӐdD[p WYwr[^%,w١򻍙[UEv`EW!=b-m*gA$tv -1EPDA}گ :bEDFxmJb#ǃ썠;/1"NBmPʨ *bd* ŠM?4а Lx<X>/ݵX!m}MX~Q{ c\!Bu1[):8,Yi,@S/ca0 !?[g|( t h43=+BcuBqni(yETۉ$>~ڭd 8xpX5JCjPޏ}:)s|!Ըjj⹯fdf?Kn,’ns1TZb #(Y Z^'5O@H,oPEOfXc_tJ-z 4{WA ϣZ2Wy*ǐSכWm`zj#zr 빐O$5d;Q6m5Pus+_(7z$g<Ce |zSp1yW(ۘ TPM\ 4AkR+kxV ԴM-f6x(1KA:Pyӷ,T>;s @iqQ&m*=˲bK/'9P -}catqp+?D +=;m[}2I ]=sO,|&/~_:7h|(UHh`Ofb0U즖5TlB/M蘮r1/m} uԹ,Txs*Ty_3cCEcCE5,1ep* Gv-K W57=cm.Ë E^Dbo4ن;&O৫l!dMn])b7/VPēz'%]V']^GAW«آRuYG\)H@!T0ŲrS#;`@kIĬ$1n\+@x/:@!'nL7DFKoG/='lu:hN:b >]*gPC(1ƄA qx*aRI/B&V ɅŎtar\F$$1h'Ĩ.bCpS{ g7"pO?*v_ _'ql>GhVJZxj8xc|qAzdVZ TZrb&J/<%wmxH,g֮-om`ѳK:vc 2 l¬.&bSF`de?| şr狦=K,jYb܅'h._) <ڬȒ  t]ao uHP,UiAIn_u͂A2[>8Jn,iYQ|rE/kk @Gl)P5~aÒBo2_[CO?5[Ȩӛ \kQbo/l&pFFfx N ́ &`ׯ7FgIk.4ȝZ/3C-0Qtt) IzC$Wءn^ⷭEЧןսuuKl㵺Rc ,&ɜŚ:P' иw vP9,uO "<ƑϾ7+a9۾ bC2ߩl9qD%|мtN,YR|&$/M2Tz%xE!/M8gxaYh2-p]rk&}eD.e⯸Ʌe\ቯ;Jvo,OGyIalÎ"X`jGV$ZKuM`o'J*mLGpCb ʹwO;*e׬/s\NJt!G%ezKV~^/@#2/jaf9TuW|{56v kobƤPҗDq aJ zt:c)a,T|ى-bo^>pfn?v^Pżo`u^bUTlO%rdwI" 2+?3P:%#MXB-aa\RH8YqwG0ـ iI{@'͞3X _{X\Dzg$t`2A-5 0yvkh'\ř~ ~ߵĿL2&ӌ<6$cƱ_DQ]3rZ:ICx(-جy4[ h>Ɇy4_#+Ym9Ri\BGNfcv:R҈/[Yr aྈۓ牚f|SߺE?hLOxAWH8Ll ,jN ]Q" _{,4~AC3|jCUd*7ު@Qjc)CH%, 4|1JT1z7[C;W |w.>&EEk^c'1<(O)k~AZkgl7޹'MH],<4kl; )$~z&lWtoAi?Lha,j ޝ=$@湪9h AT*7>WTҢ牰!v۷x#ݻh=0EXዷPtՖFĴt!$iA0 ?nQT6P6, U9|wK)`E(>z^CS2P%7b~(e_C^eTk*܄c~Pe4O89֗`B'dzjR˾WO^@h4hL=mkQ*)TR:̚ -!PVۼ KZ@1S3,yU,]:bR-t ~@K+|T6'S E lءc7 {,&T7RRF&QTKHu1}Ɠܽԃ)q$CإR ,ĕ [{m-iqjY.D1av0÷Xyү øLɌbOv-27S!Ap&~ s~%U%l*,R"4fcBDRШ'w>uZG= *:cĠ}BLSPMbyx0cj2ż~7 ye) 1'P#dHt@597F8Eĥ ]Fkl_81zë xjd`X Vk`\TK: .sqAglOczG1,б3b\uyN}U9D/U>ak A7:0R2f͠%tK_YZ>?9?jW9\,msd~-S~+Ȩ)4mʈys1Zb*;m/Ҧ׀~lƃW&BlclX0akqAasyÓPxPZV꼇R=9IJLۼ߶їÂI06-BstLl 䕰4BH ;4N BM3y]}<P*^.eHo,b3qGH2kj#OIareqcjA`"6/jvohy4|h:jdhdp'5Jw UAB*2>wZ R]}ѓ 8%IN{@;N*66QuCICS^SJ+Y5cViՐL׍hg%Y8a{@3j1Sט':{m7޼\#v%y,RX ;/fV*6_yM§1u&ْDt͈CSBN4T' 4WPgnM Ol; zx!?ۏ*IxO;il^n}ʘBoctXWeGireI84A X3> ܆4eeli̡*rs,IH~aiz>_]}$H*R^mB~o[U(@ԧ7Zң;?iva7Nq=y6Dϔ˪PGOfAsvurN*h^~h"pUڞTyTާ<%LQ_[52J07ӀM:K'S?ò_2'Y_h<'9OhO gq;z ج(.쁖+PU;m߿r?{f: #"nvx;jǵD~l;w!՟ejB{ʓhE۽J }|?tLtMB}۶"7mOSz8Xi+S|M6 E݋h&YYbh8% 1.wZZ YVF%6ʵ=zhnb%ːsa,419A)q㯣q֝V. r # a 6P9ݰXMOIC)+%PrCϱ1a1ApDSH_% lմ6EMMnVNlO-e[g֓K^sZE7,~Cy´';O;ܭ,\u݃:ߙC$t"~S`_i*,ZBG!m)hS\5 KӂVЭt;](_:9p,lJ\FNtCtG.o:~GuOGg COriOu19KRJA|~k(~ jR-zן m!'*b!ؘ0F*t댶[mAc*h53tۜJ-Ф*\E|' O_z^Xr9S K+@,c.*wvpPa [\??+LϋbI7a,wN2<70\!h+}囧׽E\/UO{ ^\*pF( zOACgs q>~6Ϭ+ll(,sn,f]%W}⻚|10=%,hWftΠ2u3v} MV :J:kXHyۏ 4\ۛrA[~agc:r0ɬO.v)߿`H`ĞNU C0ToIaq` t_ʚN`scԯC_%Ѕ'wBG5sO0MVJ?RP~ ]_dZW--XH<.aZ~y,LܗK[rw/US] .6,W4Em`qX5s0Si3~P94=2<[O=,:M|C(x*K*e"hsO={o4^,@m@5lx/^x~BqZm;AC^2l俋܍CzAh0yyYW&DAO4f*^rbf#^,yE-OۍFw>֐B[Vf7,n`Ģ2Mpb/{slo~.ύrr291oZcx°پ&H0_d ~a eU;M0+]W78=T]PFW&!Ezz(7$>L0?V~A/>av@r }iHt۹oz S3si< K XW_d2 -g)-"T`M%d hRtjOfrʏulbM |?agP_]5s4Tx~zd?bjd!ag(Qt zbm";}˱F0%Os-mBA1$8h0c9}-ާϐHo{(bY%Bqu 8jo&$qI*e(xXz DEH@Fl*0#.4#;*ɰHX٧ xu/擘$yEK^"[g+R5噱o@ig 4xKaeWhq)66B-IRt, %zD#Hd9+?E([èz&,熆l5⯐LzTz:2 Yolwuljq%{:a/PEy@39&i_3@GHs B?˝ WLy7,L+nAQړ wc<і- LV.W(UEXjH}3N6b[bO/2v:߿ȏįIr[Aᖒ\  l5+dXIqAu~tX L}۽ eJ?dɺԸ3B!oŞ`JmjLd f^Rea`!7Psv:e2$rzWH.MALo,CM}KP)L' *j=Y7oY6Ac0?4DsCov@]p!Yh3L=exL I[槳$w2!ΘA(2֖] [-&ܱ&{7cLjgt~$-K{%D5T_r Q\A7Nv=PKb2`BUbfP[zh?]hkV9mܳ tm3!FI |g +U|mtf!e'6xNb:Nj/|j1nc8xMQ|P OV6`DŽ˺_ISM: ù~fXz@u\1Ë} =S}E:ZY,ŨtiS2tz>;"F~ǃFXpp8%gIS'_O/6&NU] \b( 2~Hm򅎣`8d~ۉ+ĿIU҃r0|n)QKۮif8/GgAqB#{М $XJuG&'6`DJ,(?]WogNvߟ%=I`t6?~ jEH![M<BR;@A~f (&9)%[]Cy'fg†¡CDl2L+,)Si| }!3#? 9Gd, hբ.w8ͩ*|ưG0"XjF=UŸmv-"p0ro:{To'GkA?CT-Ȟ90crR=cYØ3GMM!H?uRX;¶b27mA9c /ƍqf܆/Zձ`֊h*fHO>syt.k[+Uرza}l O./TX?u 3&{boeGX{9WX3W7fNzWaK]_t_%$?>X=jG-Xyֵ7$aZښ'#~п FΖ*lq#фzq0C]LHVXĥc{]蘦߯}~Ȗ<U~ߩlcpeAVv`ʍlA"_u3]uhqE{?Or4ԐD%̬\Vw+UK,̥Y t&km9uC 36F]g65ns;~G<|ߏtG! z[b+ ܨJi/*o~{Yo1iO'lX{q ZVKUw+(O ?[`STӅ\Np@ZN& 9*jq"oHYg| } ^JG)}|[sh}k^Dxߣب|O _~n}D{aJ*'|YTVl/W`^ 2K TNCn(y&'gunNx J'WEŠ_ 8>>GQH`Hb.tVկʎm^Q1:C }%Œu0#Lu?~M6~H_VyrqD:.fhd^/i8p|K\02?KGp4å=k$68?-aK7{PC o/t@1y, sp'U8U ֗\!8pNuƹQAs[8/I+s7L}1B@!\xރIKøh7\TQJmR!wUpiñ 0?XJZ,vys!.-eTݻ$DWN׏VTZ@c]+ DZǍ_=\'pDZ[j% `Q4tBj!{'f 'g12ݝҎS;uIPqn’[ *ӡAɅ5H2rrƢc)cVm.;`g bob653z{a߾/mחcnO\Q'np><6%l:dcYoydXF4gYڔbA91w\L`ĘxelJ|g+ˋqQM=_kYCB ;ޕIoȽ̯T buf;6} ܟEdȰŶOjx{/c9T÷~g#XU|w2W]$̰fkI,c{XKIEXʻ> U AoMͳ7n{$C {eA@l7d3tR=ԊPVz˲ [ ϻ_`ItM}ayLf7B‰{7vDsCUql[BNƠ5Yȹidd^!юPM`x /_\x-f+30= ,j{cށW:QS"5T戕2%њ?-}}۸zEm.iؔU[l}>޽Ȇɶ{9.*%Y Ϙv3vd`AZӪ-N$jJ\,skp:NLaxy( [Pf'gܞlace͙Zl Uȭ7byDXbQEl~O͙-%X- y9k.&4GC{\f6lI&`~ע ,|y3E}t62!YdI@{\~{+|ֱ"]I,ۊi ƿWw h{P͋IY^7sFBx r-推~+SEϾloߋ[jF qGbo)R0C_ER\,Kכ$jǶK.AN75Wo#V{ i]Qņnv^'K~u>{VDbe :-=-Ģ$ĦfΜ_0TP放rAp(L ~+QaȋǗHCaP*| -|X~CCwgay,Nƌ;jbsDR$/6B;(v2 QaX'KF# 'A҉lĚߚ<oHY=U>6֋ 3ZUIJ( j1RYU/,6 22 ks{B89Ԥ}`>䲷Rs*h=aP[ť^ sXj~Cp\{?ewb1gQ7mkDDc9/:hyS}:5Ps=$zv:u`^5}[ 톕JM >ތ/;XRW??W5|qCyt;7Wq0RKM{gqtʟ%4i_Cek .;ꅯm%q2ۋ c"cqj JKc蝓+^ =59L9m:?bpYL'Cb}`AzA@/6r 𴞢 ,zfe?Z32>A0 |d~&}#"7lO/G3g&\>>ŭ NC}§ߠSxo9V|E+*gx?[P[Xh/OoUarզ:oldQԹ?1\6Iɑץ e|鍠QX$xll־p~qEF%(5 Wl8v+BNƠyPOpx iqCyzG읎!䕦'* d/B;ӁжɏuǴNg{cCg]ț!#~?8.GY"v;Xmƀuwgv͏Aqt{kOTb>zΧp랡8\u~~{["sъÏ/ ej1? F]G4.Zy%zWMW45c/gC_Q[aǸ:Ft ])?< s_3~y׎Xa薢 f9W/ |0q7wW(p0dE7*cF]׼Zўt2c0Jā˧*DD8~6"_,?='Kh$1XA`H[c:;!eO0P[s{0XcU\2v󂲽VuS (әlDei7zCFв"0,9]p;|Hէё5 Lb/{㙛8?rE'UVLUv] @ki!,i!6!ZuiW$Е".g>hT . uzk565qh7xߧ" Q5d8 N2&}p<F&aFg=;PY!Imzi,'?CHZLǿ;7\Ao'wSlD%QR-ʨHRFRȦU{u{ǯ/p}]qfOtҼRv~h٫U4+3&';tONXJ;ehG:;FEZaP:Wh]h$?ӑ]nP{&ѭ4omQuk_P7q6G5Jt!cJ-i(1{#/fҏB^>J^lei@Q>X°ڏkTYL\|@FXh{ {_-r|/^+@5el/K3Ǒ-n='>z=d#5O?\m9aNWf`RPL) cI)_LhTY*-Q,:?~R0P)xhj]pǮ#XY%Uwn^ zyOյ_)Pե\ '!uO.A:s"'G4IEv9:1qz+;% BA{ V<%uJXXAkQ E|Β 8ޭUEIc@uȊTdg\[]ǃ@四vXfUtcY2}z)䧾>E ˜z!U֋{8n}aOYؠHe"n]nkM.&׿Ps4>设meOc"Z6Pr{H'w|o1+k\/|sh~2u, C߰gsbޗ վ6P$0 3/[_HA {%tKnٚ {JJ@WG]v:P飫?!Ew.. ҭ+/#:[@ ˁIZ;!}?;3Xp>u ,\:TA > +䊵 \z R<=#'2+0gc0[f 'Ӄl_6[Qݔ9 ML' 2qW}t]=1[ImTpE0!`q?#S"ej_>m3?޽Twƾ o{ߣU 2GFo> O[!jeU(,ӯ˨_(cG1cjX <GlXM7#G%Ѱ`L.|%&gF@5ɻ1dv,zIK${nl[DَBj_H))V&zpyߣ:{^  F|hWH^]~WP6=v KV^`i!Qe2Frnᗼ)Xt:;C7gAHr c%B)hihH5 m.]֟CFM{gU(˙r/d }f֐ ZP|ԙ{M* ݤ46 E<4ن`r]'d M=4mFx)TEnu'8 >,WF{f%|%}J ?'p݁g]*& w|E!x1V\)7_]3ܩ >&0:tTػ-ayzE64)UL]UVN9Fݮ.dJik/z_=F #g:Pcb:#l){-7˓G~H=i22 sd0E V6u 9PN)B(48Mlr}9}NS0| mfZ!R+P(}`^'7ZS TRXyk7DT^oCU(G}=j6 z{SKWK˖ 7xMߪyװGOCn?|%#<  NMFQѢ避GF/S\%:X@^S_?Zmmh}K|BsJa0~xsXw!0 f%A8?3qECh0eCS'a!*5w6?*^BG5fbK_7v$ %#~*(0LI3)[fP3( c݋q̸d}(vR FbW[v1!sww:0U`ɟXlBmE҅~f1D::(UN)a_%6%(gX0~\aݿ᰿%(Uy }4AI17/CXZ.9}|n<ú *#Ae㗦aHA%+pKR Ox7A /-,1zNsqL`,١xu!m 3EW r_!}Gʎ% *̃bF4}%htgrD hB+wPew]CNV\|| VR`ﺮRrx|#+Wc'ByZx 4d."(!M,4boul:oJ#3qXPww-A =c'XM7 lgۿ,cAOl3iՃs,+F ,Xb~alç'Y9$\nM?J= db=nN|F]~'IrmT+v>^=8S-Q_rO$2%P??USKO|][;CzQ$f0Yjb2?߇>'%7'qռƩrп@!_$dcsA1KMџe>=ތi!@4A8ICP0W?uۈ@ 6E 9OFd?d gD^n#%17 c8U1tc]XfE2 N|1k_vtN9G B#T+Ѓ#<6١T4yߞ`:E Mp9_퍤F=)z2Qm7֐pږ^?:YjPaǙKTۺ0[2Oҹo Pe.yWV$J1Yǁh܁KQԔы8D{&~SliCo$CUeh7QS'enHHa$ _=6J2m8upLi^9苺C4tlBYN( Syd|c0taÞE#*򫖯;C\Sc.Ij+`!awђD,ih4sԽfgIjCQ Fz>eTiu%c [qGMW$H$3Fg At}ϳa].akJD"8Z_L ۔d|l_B6˸, NdQ|k ڐL:VNFf[gйCI+s`p$fnr-yC ^4]LU;a}vPh! NV * 7d$g@Qz'[5SlwP=|KqV Qii6A㪕Xp׶Jt:~_R|Ua/nbypsqY)2^4;t\7ש 3͝Pd}k)o{eZ3}Ր'hbm ^ײLb,=w?r/R)|T{U1lqS^UϿAo2'$,yQ|>Fاo{L=%*_CȰw~j FcIH +8ׂMTBaܫX?|&4rk. !a\{lLZp+GiX ޫ:H{A#qRpoJ/*.:klu Ȣ*r,V˒caoX=(nG$4|g sc|rR_#P"zsԛd;ݾ5?w/#4_Ct;xdVW1jrϱ\>Jw.PA~+MJqϹըL*ާ܁cUa}0<5kÊ6-0eqfJt&@VCev&&G w}kHyYE]LsuV'v|Wrzzn}XC|U-RW`{he r!jAg|n;3p;C3Eg K[Hڑe}:N PkSXBlsJ~2L ܂sI&*XrN/.ٺ^3%x{wKӶuiQg쭪` GM@ɇlVU8r8}dy\4ٶJswY5#}][| h 46q״..[utSޜJedCwA3LչDD +s# 94tD);ڧ! ߫}Vac> .[cXqrN0oq2B"陳Zm0Qj&XzsMpķm?q*]G n>$^kE\]xëSMs#01XcKMCO ~ ?Lw[qxdv` ^xJ 3;h Q4ދ*yWb1) \uY6?|ǣ +љ.a=+K=$^~&;(ցu3>Fz*WKo>gcii˶RhP/u{,1ݸ|C7ʪپ;@?ox,G-u̧[99bc/ kGϗ!)dvvJE7f&aH ҋR5X!O׵[8k ۆ@`K/2r|nW (+) "z\v9UmE>~~W|(M/$xCɀrTɼ5t~ %x!5/?+fߧW1pAC >uՁ1 ԊHrC͟8R!|{!9 =2+#u]5kwQ$K>x%rbSϝ?{6HLWa }c4n(ځe-[yyKZ(dk,0$L({.TRy3r:_}N2s:?zdwǜ68\y%]Q'$aur9w􂒍r92VXbESC_? T7r:[Fx. x DҦ҉څq80p/&1Dɲ<ݞйSc }*0n(9{Z \{=IN̚玽PM)~t?P_Q  /ژ7c~gss{]Kp"I ĦvKCmZ@ XЖ’񱗏z@bYc&h( eY':P*!Yr0md 9Ћj*[P2Md #߾н*O,B/f0a $|HpԓGYQ @ؚIl*2U9? g=F~@)hb 9×=i9q%<҇KCm*:%yp&@oµʕsrh|N:~άyKA#3uPFgcxd;݂%{o9Aـ_7(!;eLwmvDw]@.~̄!"3Gp{=~d@m0G*ypb[L>e|j8UcƐ;`]뮮p*}y1-Hx7+S0v3^ S:ZƗfw6&zzX d1(Q(vxPJ.HԚ"B %]QM UT%!p {.b|-ܪ†q!R? s`aվTq/@ " ċGCy={ĻMr"y" j+y6d HC^j"1OgU0,.q%Ÿ&@W@[:tfn÷&8|~ K\$}4àTLVR_sOn!jscf5,*^\MEBx*ZKB楷;e:Mns)KǭDfcrtg#B2 ~xB(֟ވ]5NXDymyDىv$aKl඿իo+틕&.!^w U\2;VM1 Sd0+ڋcJKXSoD}}%4uy@)=yx tF!xc ~gNyw-7R;<70QṴLNY݇1Py_|H܍iF6/ UC[\:ɾ+ zŠ|Ct~¦'cR#r;TLD(ϙj3!QI} $DscP#uϠԦwO iLv&H3[BiPVcfH`fb2 6VL){OpKZviH24lgl rG Lϟ',C2͗vƸ^w/txg9 ᴠ9 wLb=3zBUZ[. {Ih j׿ܥ: C;fXLtD ):!;az+K`q*1?%~t6N o+@ٮ+9>@TO@ ,If?L'ZiiٹM]):F炍I(6kd΀ڿ5Ǵj=^Hf:08rr(T5K#@Qܣa(=lW_s  b̋|($]ΣQ'38LǷuԍiz*PhcݖS0/Ьsb.~/ b`f єe%gFIXSH3_NDy>kx-d zk62W2Kn̐CǎN{}'Mj.W 8Rϙ}ZZG`bL8R#_M;.op浫SntRoa/YLqu4[?힣"r |fx*ZPcPas$ (,M=8qo9 6F ο 8z7\v_~FϪv5'N:#*8qG/ǯq[B.9Nt0Tb_ ar VKQ-s/ `{KN3 H87ʎV~i"?$3wVŌgOwN]}M320fR kV>Ĵ )͵.x CXH,Dkv=]^{_<^-Aﵩyu _t@T"7|;jߍHY`4XT+Vf_JO' z?L>U.E#ܣW-&W,/Z*B6~#P~/To*C %PҗtF2~pNG ?Y% Ѷ]>XJ; _١# }t:q TE0Bz◠ybb &:? w|ipkEoXʂIwWeJC`!$Η WC Y]3%w`IS(S֓N'J@ƀBcwV}J|;!7{IA_Be 2Hw4w0ˆ<3T {Fr߼w`H]Ndocjωzfz:R 8N⿌h.aq˖n/AuFRC,/ĿocEh~ >>=KOA~gW ۥ$_w}/~kQc Cmlsi .xP ?N>9;ƐK0}l[.ǢFFQ@lqϩh9]^܁OtӘLru4$JrC? 7o0;e3xU&``+7gt8o.WL@"[Lm]_]i8^Ż^b7=_+X~OMN=l,E% 退ߏsS5%i5f!cj/ozp$RS'a*ts i$gZ;~}MAⷦ70]WĵOsv]{ r ijG;Q2ƿ nSK`AgǬv_0.:ɑHjzwzމ ;׿|C ʦPW3bu zydM!+izz3@^ & KҧJ0)Hnvb2e({jSH_VFR~Oȑ)+ƿM€DOP|W\" OY 4 m÷TjySM ҍIPX3=gB~jf!z) uEjXJqMc27G7CqϻJqL*<y(5b%I4aaܡ$90$|Qلh'{XRm[ӻBDZ4sRrQHD/(SBl^C% ]b9Nx1ő5B3qt'fi^ޱ k㝕W0l<8-]OhU#:l.M5Z#sE9KS9RRд)'516vjG@k3oFlbt޼Hϸ78}i/Y<~] {ElkqDQe",05Sg6_KB?UqQ89<3~p Gg^bߚ1+Ħ߬#_+շCa')7С"- 9?שho?K.`Ggo&=(w7 2D.1Ɂ8$޿Xnf=n>VƤU>|7zZ>̆2vtCQoقҥ|"趹O! ԗeoʃ !v'.sJ0$zVK!$\ ʘEd! z@<үhi/y R](ᄨW@;vr{ & ^Bˑ'GBx)5v~#G AM'20?ʊNӮ*_tJ@bq7_js Y]Ov-"*  !4#j=0ڮd;n΁l}L4Cn 욗^; E1Ce_i={ꝧBe=K04Nz҅kf F=}*5jO(>S3O`} +o3:Cz$] }yI*/p9qcԡU^t V;GMDs ;UL4Ye72}b2ӑo!'lOb]T0?4|{zPzȐ!'d' fa ͹.<>3y7}—̆ o 7?$Kr>M;{iEOZLh7FoUƴxMOz}\ gwC^u9s#WHqX87N@\cRWhr/ Yha^=* mH79>. ]?W@.w1qK! f̯]#6ڬ+_mnC"}!q>lVZŒ㿟‘0TTE͓40ɥD1@>ϊ+;^3T4kM}Q4qkr2!vM B!nc:q=nQ 8?'S8tKPsP^B|n|쩇zaj3Pk <ωAbBժ>S=#z:9)۬p~!(_r9 1]QB=[1G/zm6{ Q;s+&E V_iه5v:DHJc)C)rv`\!nRfyyĈv2V`CF2%vd G qB'tZޘ{B{o  B]]Mb Ԑqԥ-̭c_Q~<vaUf-w08L ? Ǻޝ;)!WԽ% o+>86R;}bkjha|% ژv1i7F:3 5 ;;`mR:g= aMs Zl |ۧUʵw=IQSqiY+}Pօn֠։X}c\q\"G.\{&nhA n?o֟'P#tEMEUR)pt* ryg#8n?n\}1H%<܇!taq4 4hl]hO8D܅MFWXFKB@҆]zY ֠ɍ3KenDZ `^KSɆutV&ݠ;>놉i= >U Ls,- q[[~4n̨ =q!94A I.-gڵB"@3Oy|b]'0㞦QdvJ _LSs/PP-<|1mɧH/1({=+tEsdNpƣzjn T<,'e Aso/@=3'e= />|g)cpvI 5LxaY϶s^#ǿ=ُ25cVVy:{ 40p{5.4TMCC+Vm 5Iښ^ˍ oK_'k«fNJk@%}|ʆ+!^ Uf^K@M^(˺,XobNO~k[^(@`ϣ#1&nFyNL z Ng^JJyiUz9Oc䊙DR<2u%*RuE>a!ܷ>Tg7 ($.."zcktzI{5t`M0!TI]-?[\ڥzj.ܟo[yv`WXv4n&F֯xٞ2bKX#'H39^~`K VEvFݛ۷])RXdfx H7`Rs#!$h4Jcjz, %Ez'|Fa{cXUn8MƇ[4dPﱯWW.a$תgo/PVV5<(Mͺ~cefU_A^!=u 6\~ٍZ|0-WO6$aОocb?Օt۾F<ξk 15 }\{Ǽ?9%mcj{*HO{b'7bp69Qd"aY)Iy$i ~mk@/3֏O"ȱʽ 5>ycyٙY1X귾fCuI`IaEa@o^ b96+ι)j[dzQ6$jEs1o/l5O!yW{|=]/;GW6Tp\7hQ9R #aIu)Ο8eO$ PB6/MLufǿO^OElNXi(qY}Q[ nuj dsPy  vA᫅+S(DxȈrΎ_Ϡz١9##0Un!B5ەya yvQ9##My:1ci (o, d&T88/t`ī䦝ϱ @aAֱw86Ԃ'-_`lHb}l|^U$sa{ d Jҡ.>`WO8=!k,Y `v37 P+qT_5F;]mǺr٫J=gI\`H~v۝(DH9hu>R,5fPo"Sb}qʡ!AS`QX'R("Xko(Qe3n@Zm H+CP-g\7f}7mp@u=dv ~MKmM(~$KpwX*F = *6Q~W/jβiϱ?J_pQ ]"\b|>*[Ә]3;!G3bx eS[; [gh!Կ|ǏyK޼"qR//@t3g,"T?xTlf%{+&bQ~Pf!; /!EyʉVMja͚FYFOgX1x},ݳO^ۥ7`ơsu;{$,W`FQj)\Y.5uEHd `ĭ!(^\ q/E `...zkf^c13p-#Ϗ1]@y+3+Naý7#Z<8!'Vo?4ŭ2&EXPjxJ YEr gĝ өAZӁ-GP})ܝ<6P4f !8J#i{4ICîk@$_#X}%T_Y dCnS0 9~s9ŎkHR\:P ' ~;M8%ᱳN,XuPR> T6Nb up<9$ܝ\%:Ӑ]VXv.&C/ƄQM< Gx1$qI \NOo4`.7Cw÷^aksۯblR{xj.Pڤ&DFAm?\gW(xè@*m뀔K)FAc'e_RFjnf<I\oCcSF^hIi{W8 m?쭁P"Ү(L,ldШ;k- -Ƞ&mw$t'RGxݎc"yz0Y$K3!'O.͓OM$ӡ~Km)CSGlŠIiE $oO_>>(]~) Kh03{ر8&1M jo0{SMj(]]@j3Hjka> "/D) BBqoa{'FsN6竾Cύ4N){r HwAf> 5|F]$ǪȬA3=:%qH̍Q,-t4a6K4Fм5pVZ LAK/T@IJWrJI."T_,Zcp37!x'|Rop /` 0Ϝ <:agfc P'۫B &jT?gUtTT0tz ^==;;vj`7x{Kau&,X̓X?1bQ° ~dmݳKGIډ5<ƏHz{9#$L\["d7{%*WJ?b3~X 9kxXFyc˜]>d=>uK}{_Q?=W ]X<}qЮ!TܸY<@bS ,毷bZS(r=)L=v6: iA,(LY 3b,Crʙ@|~p2 0V[i@"抜FS;I^Jue30I T^yƗ ï[݀<\HX\;?=dDy41\rYYgőLmlaZra X}kXsWOs&bMwaX-m[q n# VYy/`_:E` aF-[${pafZ̝Ǣ#'+[ r5H7PcuNկQ,aXws*.xIG "-+Cji (~9^mՙ9GX`XrS9.=_~G0Nޘm=qS/ffvay5$NNt2TCJbm*N,urS&'[w{Qx  5gn\,F9T?\H lnƜ ̻mL5d 9W2HJ!Xea kl DM3vt?uF_ nx)i2$W>˾{J5tbyǽexɉXg/xV} D{ІlZCأs1; gE@v= Ry.N/A^c~O`u?mTX1C8$JE>3 2ȿƲ@p ,l+!Ioq㓀*:lv=+ا݊T'Bo˄J4E)Vf8dۂ·7?\F‹S{̀k8d7_a I-/zEϷ!x˓)\VZ g$-_-n]52D8ǫ ^uEZKXg1:q5/vΓ%#76+~c |'>ICq74W%=炔X̒1+/R\MUWeM7s ~=}K}Qև/jy[9n}u+aS+>u h(jBXZ+RkMgLi d}GBY):VQvÆc+a'#2̎f/:/pS=L"|;:uo3NܰEk.Ɯ#Wn7U}^,{.61cg錥a|XA fV3E[fO~A綥c* PUXAmf?yw{ `pa&DOsb{gqfZa*jǨfXGF?eSkֶ&Iicz4O!ECj?o S;Oݍ{ı_iw}nASy$[с@c7^c7<]y7Pp)zZ,$ _ѣӁ2Ƀ.\EIla=ͨoX\a"K9%̾!6NJIU{ktxFx&"DZc v"On2 0{hxKR{.6G Λoٙ/;Զ -drͰi-X*ҫwc q9Mv/IہbQ0E!lT/r={b.CswAvͶPOgJ6+g 䧾c,v.Uf\L#(9H0RmSē㥻7 |j]Ō^DZ%h?g|oԡ.rH.|%݄P~:zdƴ*ͳX Jvdd|d[)Ǻ:T tXxuY)-Xj4nY^˟M*PAt =dk仁[~"',%3!EdbrTq$%|L Cl۱0թm,Kn e][H(&6z{}ޣUqtZѭh/u[&4zz{btw*{%d4ZosX|ٹnJ= mX'lri{\d^s`SM~R# 2C>$jm55xy*$61=L3 %yж) l 2@ڃ/PBݗUvXb+Ύv73lqww ^R =sQ(]OI!ɫ}]]/XS3U*ų8e2}qqZZy<֐P$r9C/F4Agsf@ dg,AqT)8yɿ? mmyh *uͩ{95{z:9J|$뗗4{2X mUeY|%n֖╨Lù\6XR.CƾuKhՎwo?yJb?͋ҭ5YYBp B?&3LH'ܯ%|,ZF䙠fJ)X,\y@ʩ38$Cy]ωbVȭ:%ѱNM/tZO$Sǚ`dAM߰<,aKJXTko\ >1"VI^r"ΡO/NQǔkY]?3֗z,w r ;HsCJ1) &Fk&/mwB6{E-7f2T.[Cw~8+Ը>}<:h֨*=īkޜQ s [Bœ*^(}5b% !02brFP_᳊ut8wOYNH./4j]C[D꠽=Uae텪9Azc_{3XWͱRF)!B DCS{0tvn؏81i{ c*]}@Gds1Tdͥ;AM̷Ό:ݧy"^?NN%,r%hh5u  OmOj,XT@j.1R W#]PRy}$X)‚HqۗLE~'rBi*;&IUhg(1s%DKo~!AW,:r*R`h~;kY?Q "&fXCA)/~'k>݄sh)sݑpfr#Gk}e<ꭾ?.x bskRLGe߹w,`?sBbK7H\ګm!Er!y4ఫ5=hiFv3Gϯ/h!Aq8Xf< q׿Bu*aD T0A-dN3k|!vW@1ChXgw~t1HY \@f7{e ʰBv_k{⌲=,ɦq^ *گda/z ڸ& st=T3na񆡓G?.*d,3`c7NFڍ{̘2UTvV9aw7VF1J Z:,)|nȤjw!CZ4x0өJiI^l iqLIN:6 vQjCݐE#fP՞ҩՄN}(QN{]+~X+WSMK6<ٷ3QM/g/aSgG]t7@m~ ۉlT,Ķ[\IgЭgRAh:fx {}乩y:q֙X=x;V|t_66)M;w ndU߱*7fG5P!i(>* K ؾy\X]1tj.+Cۻ3V:-'~.yZ}>mA XYvC7 lDBOPJԴK_,l}C^}c>`0d b3 yZ-w\ a빃@^\YEP1e%KXu9@^uv 4.J`}XV0{:vr =y=t䏮8թ|_l {7ljSֱ kLC&mO-2?6RCYW~- 6FQNYקqg M^ @>p-އndžOߌ@m.#5L-9CeȘ֗:i@$TZ oB-`]63"3\ZXvd cћ2KNX3" fAs?;opJ(gb=: 7CsR;v?H8bU͡=C59{XZ?w wt~0´]e\vl;kpJB41h<~͐|Bqz$x͞f^ʲoc/3y/,( z|V!fz"6YY!oJWMfѨ''Lʜ"9}䑸{zV~65*^IY?EbN8m$$S\ѾsB41p&WmȁOc+㭃A̞/)LBSYɠx.T8_ wo˻]e c^Q V+WصESO+ Oyw$]NHI!XO H8ySJm3MZCΫaZrp[~/у"W2R=TtWqaQ_u%߄:AHiތ&@:M2#+?H?55]: ˠPwؽB W>Ex)_gGS fbaW@\Bz)V:8G`fc9L9OyT7Dyh8Bt.Q]l i܋M"ޝy?PbY@Vxfj6a>ՅuO:Qb5e랯"$XqR ZQ[-&1#pGt[Mz؟<><x;\, =9싯%{ vz<:.E@Ǚ 0žuwOFséK ?Ff.=ÙK6$=\{~>I=$XZ:VC؞]X~K6}r/$ - b}YHQW- <>O~O%;EiXܩ fXzWo7gݾ jؿp Zc-j/oPFQ l|i5 !GG$s2x4\fp%O^ 1T6sh00C}t5$t 9G-$o| iE|fh$%] R{?B4.7tՀ+<3 =N9"YfhKY BNnad/"\+ޜ;n[^=@0o=;_L>C"ԋ!U8M}/ ';w5h 'ɐ8),;@r^rKq} o_|{E9ނ]nk(ZBg"e.ƬA+Q4`eW<7{+HYaVO'gN);XT ,7K$ HTOZl@}miɰ V?$~|1[1Å8 V?-Dy+ DV~CX9(Ct[f%OKfK&]S"tc]\Xy/u t\6W`oCJvv.<3061Ġ&,$R}76BlCˢHo|j˥+x>ѳƔ[6GŰIl"4rs$2ViP $.t`w `ȗ-?Z|7%H>LqobR,sP>3zs^w*Ac!)qRjO>:E$|m#m>t8.K7~{ƿӖٻ̡ܼypҜߋ*? 7ur:[s&4O?y4\㟡P9H C=0տUc Goe1?I۴]tdl?F=H_6gVz+TS[Gݩh4`tYuL˧B6DKKQ CqRHI[WD^W;e^\PkWeGCf'NT 8К~C w86| .| gFpvY_$&Wɏ.Ξټ\GJߒK/aR#A#6?ˠ=J?)\Ɯ]%}A#-\ۙY*h%,#xV)z՚b ܠsAqϳG|M)5 6_@ѣ*;uĴש2`Fwv'6>5# vcUO *=ĤwtՖB|~;/{|HSc .3Wk0!C(Jv K<6?v«K^F;HۭuEtA7qӫ~.GtBxBƱ)(cwQMiY kC+xz ~tךy 37&h!?8xWƽ—4tn?Ѩ2ҎTca!ֽPtS'm߾H}vT=oa ѠhJKT(#b⢠=L~aY,9Fs G6jd'?Zt3N__”?78S#SNkbycLr<6L+ԏ&>'ݷ&);7 ԩc! ׿b]L9sɱ͋Cgn%/;Uc -bzz?|K/JYBuf^,g7zFl?>IlSc+UzQRܤU=…+P]q,3b#bXd82%c/<5ǔR3#vkCw%cbU,4"J{w"֗]kx :QM:%FF.:C^\9Y,LZ-8R#Te"KxrD>Ƿ}! S(Y !l#o@c uP}TSˬ@)=/jdhLU!ccWpH)4yVGN7Ĥ6TP65:| ?h8Y\ ֥rr?duPZa QRr> ڣy" Z,S;34Q0 RuՒcAÆ0f"d 7}Chj|i#й& \;Tǃi56XHFpޖbƅ7S|>yv8`ޯqUfk4a.w_Լr3KKл/Be6lEdw<HDO0,'КDUBf/(eR8vϤW,ųǝ0rqTJ]x؅Y SP0dSxYHnQl=XcLU@0>N,ӟJ97d1RI_+NmWFP] svu9e߄b͗޿:ֽ([J5>psKai,(+L_ҁCW݀ZJ OAoұ"]6k=lL) mwgx9MriّY{1ŕWJMi3̏Nf̌tR F']ʰj_2- 2v0m̻x=*/,Mo>ﱁ?#9¬ .YW}&۾@qjG+GF?j+[纎CॅriL5Ў5rϲVa)$anh?싿QPNMw, EW> C w|a%`M(w2]|(1;}ח|ew@lhTu<;Z ~ҒnaqIy4:h'0~p0G˕X9fq\zr]:g#MLY:G>>:߱*?W$Ҭ>amkb(?;}7(h*"3*ӒUEEIC4={ܧ!4}u^szzs?qnoc'( %aktُQ%PKj2.H`/?CNhRǾ5^ڧ@&:EQ&KO ?}WyT(@#;p̩vÑ!j8䓪p>"l~B8Pq/u\ȔF{&et|$|Q>/l=y(bXKG@)6(^qL_qYEL"i0]+#f|z,Cv}t3P ӫ|I  L3ǁJ2*Ys;LN}=#5# +p&gVV]<18 "r0!6M4]~KE̡sq:ElK|:_+AIUwkqQ))nX&2t~7v-ZGL:#)s\7!m=O?8ާQ|d|0~ϡ7{'[7&S nPO-Kdk',}tz1{?'a8GUXIn# ]i:@^OW36T!@͍Bٟsǀ>ouibK,ض"-7ݳ+XS6O'嗌_ᯮ3ϲIPъ0&CߊM=ܡK)Cj~%ƊgU.7NٶRpuי)>`أNj/=ڵ*f <0}^5ĺ0K]S4`UًXܛN`ݒb8Ø<<:gzo=QyPC5,ɠ5 w02ŕs.*|; w#$_rc7e*#OYp _L<1r[c1ոPZ×;6O:\M$T)BT*k\dMzҋd:pZ}Ԫ9e:ݒh{CjqY56XM7H{}X+*QU.6䪐xt\'b!ns*NԒp^~5p LѵCdjA:8~t_~ ҍ^@m[jEk RڔܚOORӷ6{C!7?09CWw|CkSI&2cyti,tR"tPywPzɳmTmE$KUCzЁ*Pf}ÁJvtti2ayk<Zjn@ѝYF9W1EFBl~Gև! dLwr<\)Ik-Ԃǻf0qfj=N| S(Nk0@‘WCR끙||ϠNņ(=,r( {hF[;ëϤoc4.g=1hxwJI:4ױC ț;"ۨ's`jG }.G𨢻CJހ}Vz]v$6'}:")7o÷ýkX10+X3(,i9L<@>_kN9޽rX70NSOҍ[GQ疱=2("C}+፠(5-;~>; Z@I; 8:żK=W Nj60MHZUAVK }׺U몍[:(csx$تH.yB]l zuD 伄Oa:ˡy̏ty|0 l=,RP0hd~ۼ 2Or@!c׫@x?|;٫aDB#8}>[ fg<][Vd=d]ZzH[w?ecX1Sx + QB*O{aTa,ԫ&ÌG#"oɯ1#/hAL>g9 #Ƴ+tX.{;ZV9]@9)kub׏o{-Y߆b.1޴S!RE) <}faϬ[ 0f(~_%bN{յlޗh~"BNA ;cwYhO/W!Uv9z:ɻl7)SFŵKG\r!c }YjvߠiBIe\ N~ZbsEZkR1:xS&uV)c wMgvL ]xt |E;WtL}sMAY:cSvIAt52. g71ֶ'fd }Ӎi7;ȳAD#X WykѾ )ّ1PgfdԾ&J%@9+)%D%?31ʉ#$}̞d~̺^r[j%UGH?cBư9[FЪ}.%͵f T^]|CLyȀ/7ňQO'R7mFi=b]e Rȝ?᯻r?Q|E/9t bht*~kTlR|'=:*~};uav736(`øK;{>w{6u֟CF{9g >.N+@u =,$M( *d8R}#{b$K^܍ty9Oهq(-6j0-oٻ-q70ٳƁRa_q!pK- ZoeCwASlj2'^V+~0M. U'@ϰLM2'1 sc\k|T}}V g,&03Z'S.ɱweQ wa>fJIh$?mAث4p%_y?.Njc{R㥸N]4f̽xG.7Y௧A:؆wrp:$G..u9[(`M/>+'p_‘Ao+f~0qP?'?`t:5%qL۽޴P'k,L R|7z!GgY #z:RuIEB/Ǒ= #&_hO䞀6I$t]Ć7PDLCG rh?oXaVv]H-#i -+qUAS Θ#`|$qF4C0,I}'AFվ864gp}.C$H{v1wș,[S&sgXQ7S .}xtZH=b*3ܧu8g*>=HnpRn>HiaZO̱M1kJ,F[2b62+vu tQ߀VK=| ]xCsS-fݳS> ɫN@dGXOV"fY*iVB-|<4_ nĝ4ߒSer -\7i65C#pI{W34?Lb[[0-%֝ X$FdC؁qL;>fĢӝR S- Ϸ~2MvPE}ïpO|V0un^K |zyGj >ev >|6)6>6ia]<*,J16|]R M^`nɩ>M$:[HX v01)x_Xo,=hr$Dmx 6m"ʠ + =cºv ~[4@0+d<cSq^L]VuĦMV; a֡QfLԶô0ͲE*<&pe,fCINt[v:QxEEMc{ql:D-5eU {񷪦KN_8eS( {N}-\6OBu1g1T2,ֵ72~ 1%2zswr_Ak5n[81EľqL)tʨ (ӗ6}D vIV ,b$J b?k=݅eˑzT  9-*N8!N9r@}oOCp]ucIF3i0yԶ hdOH(7og`ypNxy=AI? ͕$!>:B00ߪԪ~t ǰ5q%ZX1+T9nM@H`C5溩O}poW>&bnz9f\_6xM 6Uo;:6ZBi-K5o@F!G{P~ S]Ń5$!p 4noaAL)ZoЫ%&—=0c1:'l L;Y4gbr[L} *K aJ:%C qnA!_Q͘pZ"{*O+͑@ S지8zmGj6]$?y} {rKU Z gRf^@բD*.]{e6tM(gv$Q%_ "Gᐣ`ݘ:a=G>%hw0ĩ.*aEX<Gf?g,bFLK<()j/ؼ2?&ߜJ D{g3u_*ؚ}V:q7 Ϭ.Cioj[5TP_{,F[ ˠ{#dT:9*ivІuzZ*CUw_h7[NvJW|N)#+-yb}5gMLWd=2 Wk(J ͕ \ꑲH60v//!{%T7b :W wcաѠ;9 _- vI{-ef|e>|F'>k)8pkA-') MWgB['k / at_.ciaÜ7 Clj2w_(- O'kU!,5A]ȱtSsǑF_nwϟ^ WFoy웵.6DH|ƙpСb%t{aOK"SV)\9Y#ouzwq}5zPם,"xhd:{ :)J?4/4>|^Q'.4@`hh *6uaF,|ʏP+aǏaGk?JG[0ѫ8tmG$_{7[0ci*F /=>́vqbCe˗|PPsTw>=w/ت16l/Ko\R?u!npA]8 ȍUyutSEcʂ*797#,=dzuX{qzHmPm4˜;>17i5&vOk/i2h>driWN<;"!1O+D9?w|KNcR̛/R̦哲r[-Hp5BzDDz_ӉU yO,!۱ Hedߛ'ʍBV:)(z^+xJb ׊6ȗ}ֿ}}3/oATOI#JSBNN>:u ,?]?ۗ\Tx3_aL؛5 b9xDzW'K3r0ۜrtG6^úg|gH.AoiܫK1X`msd]yԻYЗ֓7]SpM-` l8rׄsj x XſNqþRPsVY04^CiXpq(TSNO`=Xy9k9S F|pl4rڨX)^f Y+ykO۪*a;išhy )K}uGR;J_ڎw.޶S{uh ߦGi?^?4@ӪKEs͟,`}gzYH X./Vb^o`E1#Ο0Δg9!zґrZ w7r=zރO`x,5+JRq/O`"]-{6Yǰl+̹-xʂҟfbxS#̽ rj1:_f#X*t.E,9k['>Ŏ񑭍CD]#nm%(m E\ذIɧcYCXw{3fe@ws h*o ʝBm= cd􄸱9DckQL;|Zi(x`Zgw&$7^52ivnqCcE3A '|_m; $kOp*<3 qL}SA`rAJ:mEQC{3TBq)5ŕwPw[|cȀmZ=Z!46ˀϥXH*wa^lJgv;;'};edulXч!c~ վ-a+Asà1y|>G)‡ȱj9zr"zU=o ` zQV [Nl3& |Ƈ0Bd|ԎjNY~k,`~K/w؆ah&K0Վ/8q?vg5 Tb_t05g|Lަ?IM!Bs+ZlO+ϚL3 TEۮH}C[8d=.XL-@@vqI\~bͼ 2H9a\Y{(I̷O)R66hevAe-fZ%nF#t: R{e-pbYn">Ě wv]5$Y) /ۊ`$Ѷ(zj|, ʏFV`ނ}QnjqI r`5\lr:MaѭXݾP Ed?Ɂ`Il<{<7vO;?(bWyWېSI+@m߹"v̏J{˜u:/rZ2X[Β/8ƊeDu{`Y߻py$yfi9l9F>1fal 5Ⱌ$ [4(! 먕ŽtGg?AZФE&f;cs29,^iR*`6cdQ †m\P'\0>_ )HIز,.@ӡДd1 {¦O~u$m᝷40[9m n! ʬKX GMʵve}V3)UmanX::AÔr,٫/xH\r5ÒM~.qE=.,>VtwN߇ lceTI(Pjj57Ĵ C*ֆH`)`JI\Abm݅-uy,t Nx V ja,#B*+4P]~ '\W'[#2o2b-V#1,v(Yhg͡Sho^!o4-F"Pmq, r/ JUW rhh('MkkqPL^nk'^ި (W=Ux :_sX:],=@ 3.7S./G`+;~"aYtI~hM؅ mwY܊ |Oȳ": q{ յf̒ADZ1dd&71RQ $׶"f/+1`@~gN3?k1bkWdsL%,ϩZ1?Xho[s4[:cѣor~am^C;X{}΋-8r|wf!"'`X\LK%ߊ`ޠ R2' JR6-pzQ$WAoX/(oܑ€;pN>.v1 r?ټřODҙqy3pydhҫ?W,/~*{q^v\ ?O~nӊz"A ~gx-7}``~sh` -j܊aOTIP-_M}Re_OCi'JI<(bWY Ja8t V^P6*j 29%J_HISs; quQ#\_!~-?^3x)RNBiz+! Kj<N@wNОL{La.W͏Q}2 i_~9wNAq6%Н\):4Xԉ jUnQ\oޫOc8[@?xF9Ɏ6;\ (+fߴI16yLnrz^956QbM(y9Ieu ϛkk?e~>j}+ڂׅ&s|@~"3ىXWqz#$w0 yL-}u;x\6džp#r{̕2r3QoRwY GR6wNǓ'zL晲B;bvv!oC ='@s4U<%wB,p[Բ*8{oOBoFC~L'u`ϧvvڿP|fjs`,]BqʒjkͿк 7Qf7C{ f["}P(cd!֚*:QhhݾEhE%{&1u铳 P^0wt~Q*"y\xx˨ӫ/⥝B(T~W r1gy hx[%J]~DDٞi] #h۔8ZyXe{"#*#kd?ۢҡ~Cyg{ -Eͤ:_C?kE ;qDo❠}l8ry4B \޸4:du&r7'VfrXCGuSPC jQ^dZr"=2՝3h떮bntQK(=IeV#k?:W!FoߝFwN 2ǶvmeHL eM) CkNqHL.qG?SՆw\v1~HaQleL{ޡa® 31[2ɂm2$vmf |YacBuo uϜ^la!\#4QR転pߒ>jtDp'Zل+c?sE9-(@{]\t,<"!X O2Av})FoQrk[VK{@1%hy9B}DA!VHuO9bU_ngHLtƂz1|Vӻ԰* Ykvj|v2š9/a{IY7lI$JZ{YUA}zK*LL1=ǰ\dľi{vV+btCErI5Z ӵ");SKU|[si|ųȦ\cJ0Tud!/{:ֱ>ӽܗ5SEOAeS,TG[k (0z}`⫤D([n|ߗODFǁ "V^-?P%6x% _.`}|KxcXӱ, & 6tY)%ݲFeOC1vXUi2-pN.*&9EOWZo=[vFHފzv` ĞeF_cYR<5ͷ/j5)'vM@KLS~1\5 aNϋ]@.~~> *H*Eϱ$?(k&K&ņ)mcWz wf+0>7%X$9x_p ١/mR@Ob{УϧtIlRqJ?\ʁ/'ؠn^AQ(WgK߰Aۙq0/8ZL5.N##';ƩoXCUv _ָn\}ƦJ^81NҙZ_k㏘y l3[]EXX$sҍJ]m0Ei{ ׽.1cF^HqFَ 'vpVEq+I*:iK6=嗽1c&U}wXݧLla*{OV$+2_`H)h*xcM{oà-.-(yٌ&LLeL:]`^o~49J 7Xv~4z7a6f,W- |_~ȞS}@<ɻ|f-N"0,Rp&t=M=xz/t>PĦ]&P/~*eg+B^qNgy} @c4]tF0 3nBVvAӃP&2jQ{3|DM"wAkVQv4_ 豇1Ր}P'Ɵm._Rץ}wqPOK(HܸOid֓ai7?U J8oy 5'.BeߏaXݙH%L;~~M, T.F 5ÑL@)Lw_Gz:ϝU.|=9S'xWO{q8pD}͇8[{m9Ou `oN]~MK-)} ='SԑͽX{z~zmdt[ ͆niݍ|VpZ4=ʼyG3=eRƱ2[Dv>iN]ujy$pBat^1Ep% wzYs &Jc?x°G`+jX+NM߻0Gcns(ӎܫ,Ýu?DZ}C48A(E]K54H1YxkLWY 5'˽g#y o˕@N.^Pph86BIǴi9QK6n(9G_MB !LХV9 3F-@ ~I ^I?ʣ4k|1dM([R߼Vpid8w`mh ;s:4.pcCr8uqv'ZjCޏhge~p{-ކ ŘvcGA?c*3ҟ3JcԞj@,e۱IJpXȢyphcӪ05IOkG.Ǣr%h{g5$|kINX2CKkPv=<$FoFŠ`}xuhbb0" eoW,a4ϳq]q9h_JLAcD/' K<#ʊ")[U4EJ+]wJCgvH/uri`-?Xp5:;3 X>F`7X)FqC7xyWeYZ/Ck/@xQHg[N>0(ݴ? V3vk\dMɪm{.ǎk Nb)8{þ/Õx D}~*"(y JoWVdJ=+NlmRK >EY]ۙyύE}ճFE^/uG1JvKNb6_ȝ>&T=1ʋ+u>ƺ{@ǣgO5C 1ڹ5BH]ˁ$} V\UA7Af.ݽPwyTf3lO)ކ¬ ~wXw\+<4* Qj5x hR+6c15p" TB+6dȍ ?ET:0HŽp lX6ǽ30-zR%v)nIǙ˴_Xq,=qs'fj:v=zjej(1CH:J JAM|#$3 V˰O*h2+m G[ݏeFn=t14"6k.ilw邂3w^뽑{aGB-ulCUS' ,Tae(a),p`vxȜb {9,D mC=.kp$vse??QBWدQrd5xK.r*W7FfH _CƧxqÃ9Xhe[=3L&p鐵:1KhχAԤ %?GH'.U`Tߏ=~Wdy(;|NFXY2;XA$2.E,Xd,Z[#=73OdainqD0trE ȏ%.Ҽ\LyyX:{{ Dq圕/g QcYq+i 'O վޕ܀G֘q/ߟ yc`I .{PhϻOΨւִy';B4\iZ+sU*aEvq˧,kL簑qEh>J Ġa@|q>?aph`z7dJ&ˎ:$' ZnugO@ jPqq1"4BCYH|Wvg jexʦYCyx 9-$ne,Bѵcz3Q[巁:K!kؒ.;3fgHg< `ɦӘ+ 2wTt텐cjRP'R~$^R,+4mP셾}s^ -t;2*Q gnNrc[vDQ)u '7ǰjy^aOK7޺҈,= z8D,{XW}SrGTX8wʮ]CiءL/6| o{?1ǜwAK>XXk<*ov]>R\ٝM5LhbDžR:┪4HxV\Ny9Ȃ#I>q!|0iIqW;LFhCe}M}B8G7;0BIG3=p%Z\p~0r/{ۥA&N2MlTʼo7Ε]w z 뛔/QCS<^(;BW+agHJ?nXq2&X?1%5`A<9VƼZrsUnB+13]y z o}YcA-iL<]g/Ա|=Itr/^U='6@+iG/?EuMΖ(u;Z4Bij7[OCOr~%~۪YFw˗?g#vXJbK@0cu T́#$~K:( 5 +`3XhW3?iY724:Cȡqb0ecB( =2R77:F3k═{n`j GUCr2w,\y(:OjCbpi2Y]"zK @>Jj ŖqTB^G0*" =wťk_vtyyNBWC,جGI~;{I.}ɁN5p&iozl(W9eW?F BQsk>;=bi qǂ!> % x)xԜ4S3mqh5M !=e;νn/BDNQ=_t*+ij܋D3C*C;](~NK}Gx]28(mpfٮ5C!YaQOoJ{1.M_`SXw /HK8[;Xh B,IYf N6یZdb+ϪEfmPfT\y4iM9 }}-AŀUKU 9Acf{6$T' Ao!W*> .%<:L/NF36ObĸD)(~X~9ɌOYNaAৎn?ZrybӅCrc+UX) ;ٱ,]'ְ>y=ǝ 0E툭6,{.3%v/~ک'?O`‡JPeeNz$>91%-c 7XMV@˼LAKM$mc(bimҵ=rO3s. :PAi7^4ctJ8>){{Jtw?v> f^K6)NFj'^,h!Wl/" bbGUuYE1Q| [_~h lڄk\jzU\#ыW%$͛rG7=I,dq3b0e>{$rZ XWQҦ/)efFWX[`하 D.C3~]?ݷ^86OŖ)/X!O0VdS QBxׅ/8E᛺ s ;2qloxIVm_ $˼wd063{")$P;}0!Nk^ǒ*p/'BR9頻,sU&8ҚU=]F4ץCqN\>Ѧ!Q뱛B:6(h@@|?e_0=e);:2HF(%# ~ېOVdtb!$a0/ /`x˓k7BJ(-TJ:6 oj]q"2u "7Pnנe1y`jd=T9]Ct!dH4 SS%GFģP_0 EhX@~kwsOKg+; A7oqڴ /jZ@w_AW /|&R~6Nmb׋%Hudch㺘fxiᘵ:΅z(@ ~wUߔo|I0SA]=d rE+:*$k=t /籔?&cu:p 9Ѷ:ՕO/h÷kW:+:Dr#xaZ4!WtjUL@!,S6v+p#c{# }\loe,3οXcG^JtoHB-Pc:6%8kdp1sLM7TY OӋt:JnaU^' %$&QP4&7x!gɽP`.b*N T#8x^-4ni׶1l[oŖ?` Ό{b:3.Uᑮ{SjcfؖBDq̞$yGߍq@´L[`9~Wmmm?_ 7? oD(xHi]v%@GL` 3: {>郾8Xa7JcĴqx:r1^UYN/ Ű[Ys hrlIG0Fia(t>"'JEq,B[~ C\ rVcwk svYA JlCg+m?Bc-6Ovv)k[^㓈'xpS}a 9H$c9n>4fU͓'WvƪnMaC,(h#vm`5~b/Ee>Xu,{S`Qn^OWfބO_j|{$OPEӲ1쪴er͗sX_/JT %_|c]1})|W٠+a 7\gM{"39 G=|>e-yXUԋwO{^ƐŤdؚ}o?:.dclGjO{ jqG/HxCuJ(گ`oZyB5dCKMI-HcH*W|OIry8 {0< (8Mi66%Pmp(, B*hF o b/M~MsN)E1DBb9Ix` IG|x͚V5/Ƽ_!\Ԁ@5k7gU뫷]١]_Tr^H7K[DmN ;~} ]ξW~N;w5(+c76PN.w3n.O,8PkvU 1uY4{vow҃Koq[ʘN`9 ^L =&C%ӭ]eʀuR&ڈL*V gkTگ6~uI(tɹ^;fgƏ@uG|re4Ο|+\iü3ig^v]C<$#Ǵ[JѴLJ]QB.h毴E6k}J=1˴/!{߃  :8& j׮C 7u/ݿx Bv^ lxvݧ ,FBR4 VV5n<۹'<򐙕4y.;yGG_Б6dmtH>{?3A"ͅlХ=X~Vlj߇';09mqG'/HQ87*xOm曽JOb#Zqg1& H24w!Y 3hZP\YAȫ/!g}z?=ZjC)dA$ O-rU k5:8HC7(t gV=uK#LbYMZ B3瞅P{^w3 Yշ×Wp]u<Q5mNP_,m6_sf|VN%(:UzaRqy,= j0O/pݧbCLV;O~g7} 6ϖ 48 Vƞ˙ Y1dAO\iYk(|1;xGߠbOЮ[}/^% 0?U1՛X 2iB9Z@/je&IxXu@ouQc_en>L.^b &: 5!ᔺt6t?Ra P,tIf%TJi|I@o 5b+'a\!L :75urZ|1D{Rj5Nm̽t(؅%tMTNػr*z:Np7_cjt4d m֭'~8cTѤ*T7K=뇖Uܴhߥy3{zkdA3 7,=Y C.P^oY aXEȗ.ah~K{ЀFƃ tEت5$ !IlHٍ@Аn 7H O繁hEa){h`a9ğ9Z@ګwkBj0BV&f Z+EyƊ>?T3u`24oK>C9HsL%=:^5 Mb'C>BCӞ>oļ}=Eb§ʿK)@sj#8>^z7? 3 v8d^+͌OsW(ђRt'68  1kr{8֜\:[UvbdZ%4xpTn:#/s19LC ǭIG~:KH2_`d~6== {/Caf$DڋK=}wb?o֎_b@붫IڤWF:e踘J ǚ{(^-4M'1ضwtC\߾M>;&gxⰁ*W hS6NVK f\5-j=x:ZkMGqp/↹p5d,/616hʌ>' fҥpB3ͺ_pM 2P`Ku_0D6TͲC}B%Az5 sJUH@cr˔c~y.A!QQ`uaLtе;mn *^cO{B瀿4X {ɍ[T _[8v+l-QBn*Tz;%YH@v۹;JV9ך71&RUꤵ"~>MqS˒ k"k`5Rq& p;IV K5:bsyAmpv=0H`y`M-~X_bXShgL>>wY^a0Eн83w]z<{+ cxG@kȶCP_=O?Y(?wMŀp\F'7F2 һ]t/@xt i)3Ќ% A7Gk(oeR}]| o79.g~$j)\ t\T"]Gݯ:;Sw#B;zz-Jonh7ϋp@sUhf$=^(U7 pCp6?;wު:$ rƕaZbv 6K=7,Lx&xSn [ڧ,B/Z2|pgFJ^)K-ŭ6T fهl0G/n(?Dw ܲ5P#~K*1@\&I1[bqZ;ugӇ'vhWIL؊%AR8 9#mSFRn֧Wal3m rz<?OLaFX֦5J>i=k CyԺ a0P#:^\&5gba_뤳0vٷ:>biO?z:^sFKҗ}a+D`H8;:YSϟe+ (]گm[  }^BŖXH%ffmvHPLKi0p{O tkKZ;c. 볯Nng@LQlǧDKwnc3lXZwgroxcw Z#4ycM+8 B}=??b'K4$0_,C8ڴ[@"-9x zVV!\)Ϙ~<%O(ƻ,J@|ȝpc,Kv܃\R-75sA 6YS ƛ`\Sxi%BF'xW lӖ"1gLkoQ[OoGQr!| 6r.wOGAjx !c{7HKev~aH#} ˢ8{D d|]اp;sǗ;&iJpL&8 }]㛵AvUV繗H;Lp4,Z6)2g̱R՗$ݽ#mXqnQ9nRr:!y_jC vOIQi/{x`?Fk6G|%A0t'ٕ+bcX(/>6\]zolײ6%kv2E#fN$ Ô_z/aLy3YR >+V;Bmȥn´濚~Ã%l$L'Zb.g_,X3y"+AH9fŏ 4WiOߢ~23PT=R8]@0S0h&pG 뼬̖ʥ*N M77D`&`g[q/dn  6b*և+z`k;dؖm#EB0]CKL>|y*|%]f%ii(O{@"+{vן}q҉z]7 ^?wC#wM\TۓF:'ݔjUsݘ^ilw L@iA9QgjX@h:g'Er}Į'cZ7k[Jbz&JaÕ;p.i}Pr!am>P#,+3B:ƺP~iݍfʨ5kt!;qkT.lZC'܇U- (ZINhI>y +q4*4C˯?y=d:b_C$χ0;e- ʡR~Q{anVTCcxjrR^VÀ̠cc,Rp.rޕ̊Z^kw֟U~@ZlJ$,Zs,ƍax$s4o+43R 87&`J^mlsKEi@EɏVs̅^{+ogv5基`x$i~|Y95<ׯ g؆,=;kub֫E. UwH5# 6rv$ٝUge%6K+QIozՅނig{"7ORu {Drai2Q~ߙ1"=:ضߘ*ԋrc]BHkb ð`]?`\]tw)[wvg\ʒ)7F޴6 MOb,t% 4v ߸)-vƱכW?\tO׹ML:6 7=Ӈ?hNa5:THʡ{2#Ƃb@4s 4t{ =-ooɬAc 'Ʀ#%v>-T-sJ(NcՐTgؠq4 nxN{2x^Ӟv<^YM̪wEP|8|c8`UcL|>]_m'1Pab^gŚ8\Ux,~ Jh'8ۅ!Mkg୳g` 6i 贀ŒVǵ3K,UB zN`:vtԹy쇖zT_0(e2o~o~YcZt7ս+HcvS^;$KgV(3}~%-<8-g+o@־++K'="5p cZbݝ t0HoФ,_JÕ1olT K3ɔz'J$Zx+E V(&'/c'k…Q(c&0BO)-}^`57GIq6P\&%/'58%hd c'+>`L9( i|կ5&FD!K%ӽE`xzN4D_Z<cN'gm?oJ`S`Nl-zr;"Xz vGxttz+^gm[m R΂y@9͆*OA{CE]"6׉(b׺t=kR$FrvKb'lc~όDVLHqIl0[ bnN;]qD$1԰Vң#J0N$4^Dh9aőRSc"w_6THZa:0yl萔+T]x%O(TfsS!Yj+S zOn÷=k|%6[ÁZhY,5е{YCogDٴB_,o>{uTo@cGcӹ+$\j^A{kpd)?1cc.6B>+H5.L}w H Bh ;di%() ɦy{oes]911=fHq*!|tXvTy:V/ .^LjMX$,޵l+&c*/U?K N#iITn>xVN֛dC}{-}`f;QY%J]4p!tlp6{6H}2ϳ #K;niYCBĦ=h28bvƫ[)%} /\8s=`{9 TaӼyؓ?5Ak)sl>*(UĒ+r{o00@n}#w7ޕ9+GuQ)h{| ENЬ㩮p HScK!7a-Gף)`C/>=A_2<2AϬ|;5ztKK:Ͳq$Z_V[jVf8/d`DŤD"" `@*oSx*JUmU8~왼JxE6,^Or5@n}@ ~B:tq6g;ܟ<{|N'9Q5a%rkRJGBϖ yxL^3_x]exkBB'(zFRà+=ftIyRPbsɴgcXÑi aѵW{ DMWZH21*e/6M{5Cfc2ːo_c *9~HqL@F>h+N)Ȗo@`GO-C[c!3huhWK%)s NqEyl\/IwchioxcEm.[3#T zb=k>p4Px q8tTnbTViWxrR/t o>bP_ۼ @%|\jPgPJ?uׅ-AOߟR˜<{"3l uWc9> r(ZAnFOuK-&4֒jKf+δaN*+ jbQf*M.:D&ʜ3v0Sr'=9Wmڤw HsFO݇md2#s)lC\t|8ܯ-v. ve3<'A'L|aڼ+#D >3ʟ̽bA{Γ}[?0]~?mbsom4; 6W0]nǬ=naضb f>#9()m'YdX(Nk>`ٍԌ-}EBKR} {8n)ªȠ턆|tPfC ³@,#Wbw?$NZ㦭}o!%K"$Μ&9!j&!aRNix:)fgNEإR<;NJ~bǍr u zFCf4x'EcLdh4W{K^?\ *\({YNm.. 9`û ϱ\iN*[C/Hj+vf<# K8̏z_rtPQgbYZ 8ޘI Ƕ[wR:g|խETJ`iTUQK9XBu~\x,>> _|cݸ~{ݾS[H+㫀֔[FsyvS}P8-IDhfHhg}%5o0خ(dP=ϱ`n0O-䝁+B6IY~ߨ/dD BͯXqh겥nU~)1ʼxbEGlMrtvZzR´pԡ` /d*vƥl 5]V W÷魸u`&]➎?'Aa_%tد*`ugm_E)]W[qkt9׍C<`Vl_U8.1 qޟ#aӉϑIs6v4 KP7B טtrZxZ ;;,%~יGsuLYcG-_39ܐLn>ouXj,NnB"JQIrl wh±G4ޕP; 29~#.0(MşܦFҾ@Мq}9ɊQiC|/b4Ƅ[ݛy(9$a͎/C;}aɰykky$hr15CtFR <ߠN>o)ٹ l_[!=zo̾ol~Y֢Ĥ; חud%U İ{ I`TСk&^FBu'?8 7erR֑m/S\Z8ʟ7+t!|g9+PhHMLeư%1 sQd?Q"n53k9l\yO>r`$oRц›j%nlx}rLQjqƼr ;0B 3F| 7ZoBxx+ ;< M,;1VфEHpe'_cS $ZcoJ9.Vl7F-HTܵK\e 1Q,BcK7iU`<-t Eb DJ;SST`Eг'=ޟ _7c'NP\ZwG^@e&rZW>,`K:'pDI bӒ *8 yVl#W~$K8f${FNbk M`Ԃ(+9H|(ÐsBhVX8'Rұ"V+8?AP4,w_Ut{ONAU^ӣBBM['-LRfO ϐؚ俇C70Hڀ[6֧y?‰]|pHde6޸; `<I,nBn"MWթ 25><Ų-+F!̍6UMb3eRB,_2'B"BVr^CJ8B wS2&pQo?4jxFhWzN&mήW]OBjݹbSH%;A$_:ƅ샒y ۮ(왰J9s[ s$6 cۺWQՋ?,_'$q& Bu- f30;5> @֘hZ,drwwa e.gnk62<"D\N#LacxN`i,"* Ϗ8 o~آ9fN?aA$ aMдj\.WwMu<|m"^-hjg#/~8? G#H{O%`VRX#5t9]E;5i7)~^HZo!O-!3j\ȉ7{JCfkK8??.hܽF Ӻhe͓ogJAhR蕭E P[.4nٝY1h,"nSsҗ.L&xcbЄD X(Ki  ;+\IkSu2K!o 5K*잜؁ա\Zkc',/\1-Zvqu$d,'#m|p ;¢j 79SAM].T̏ѱZf?]=wR5m=xIxEXRz|05$/)Vj^MSQg`UڰҿaȵǞ B8Jz {ti*^߽=k)ܻzͼ ӌ1Gwٸ^c90b<7Y,xU|9oqQUv׻=A2!B[^aBǎ2XN:.}:_ q y jXz|++&O'Z Rc~W]ZbbEVύU^bQ]@V,`bv_+qYCZslqy5Wx7OPc(t".%,g8b;&U{?{iĥwTTBz'Up$ ZhtV+!JΏmIE7I|JsFռ1'T#%8`eۆ߇WA?i\̮V!Y_y"ڢ!Z>{J6dEBju;x򅣡Lۧ<37>܏dždFtXL఺؇i ן?doT ImU\jTy>(։^-UﴄU7:1DG1֞(XE>Uw`4|6ܝQ9#΂mVM-XkR%=fĜ=$7,6JMޭ"a7dqha$=0$l {O"BYr@mS|:sMދCWoС=qh:T}q{ud0 d3w0;()7L }73U82)P~ys޾OX+01ҰnwbF8K=6>3pA:ėK%Bo)jmu !|Ƙ5=;:OaҸ7"XA~WGN#|e:>j$n!40a憪u1 ޯ.J:Qmub Yu 섕YS/gWClK9cFl;7 ] aC'`RG'ߨJ?N0![V\aMS9a!]ױNH5ƯSȊ Q\u1x5}~'ʮ|;I.{;Gi?|xG N@-^(%~ڍٗɞ#Lrt߃J{jJݗ+ 4Ќk^d?b=[ X,h !i//|Srm Ywӽ*IPvK뗑 )]wAYBفPLV f5 BSJaȸhhzSsScy>iȪ+U_%503WnXnI OYTqӴ/DBt <plB[i YhD(o'AW`[t辩v 6xEW6en÷9_gn7hc%?UASw'G C vXY.:c+hT3V~p[`6tߴ~u3I Tz,\zvQ᷉\QPhk.=:0H?ŋ@,T2'uF'>!ULYzܫ/dP(t_؍\ اƏgcOClIe0*7nSCIU):[-,=9v% tVAr~/x2Gbd *RKn>,Qy:nL1?bGf܇*L؃rʮ\(T)u 2='li:["EOuKS\ ī j+N ,`{R2[(R5/;_ܺwꇘO1@˳M=ْt|頃i W?p-T*9㙎w$}(|{fc~Q9j]\u[ݖGtU׌emOhWu4p$&^w/Lډ?dAR]DBE|< ,k rsքɱ :F=?w3yy!b TX@I= 4O30z:kh|z4SqrXat˒}B@$1Tnta[=^hwbu>MEuuf03cw€ T~(eXx$8em^s< -%!H1Z0"#`k`ƞH:ɨ8lJy]̞cW6*u;*ZjLjϜ^U=,G2LLɄW%w.vpwLvZ"ZtܟLǥ:%"hJNa-]<:W[Z{t9M mognC3Dhh _XΥXYSv4+/}5Ȥߝ~h*4uOK\'#zH3:3fwCi7x6z'E~_°YByiPxƉ|d1 7/J=0D־ouxL zߣF*LQN>egƶU݅ oX[~oN>vX7tqO+_ذP;ʳӮb /X%X3;?߅X:%G:эeZ7n`{W qM;u]맲)) bc_l5FuC"E઻*{ *Wۦ.݁*ƻHhU<M rY?wSlSbEFg\ f.^1A"ְZ^\$prsHuy f2WSJP{ǟN8<'za7W(g:[klzhh V9sDS@yr7FOp,ulLDq~oRݥpR,\;:Lruij_ :Zk(^ۅgLA]mH'\קpjKx DN:y;  z=7CYvx܊\>BkgcD-4T1@]u""$f^ySCdbXkНsцfƜta&w ،bBJ[_3Vq `֎sIF74&7YCf~B*O]&x}*mxL`íŇ,>\28ue{C7vMǒOVax{#\rn&L͜PnOޱ8yH6yjcBA%3Pv;o˙ymՍO@iZ_P)6 j[R/c!*W- m8b4Q5{R.]-Ž:gԃlaOKGNGj ^@^ݙ22S; Do@,1 Ҙ~_= p_Oְ͇D |ډJZMDYqh]Tz фbMhx=_/F0W5Kvxo' ]@-eHlWe(\$3)`W₱|RIW(=:u>̹ bWLudLn>;΅aܻXD;K)c ik %TaIğj|.Zk5AT-0S3MVS|5qgM8T*ɒQb}Վ!/8v  #} .5[eU8onʺai=fl{ <η [>`.+3>8κxG^SF4U [ס w& *_66_T¡U0$U՟) j a/ҵKu1^c7=}4d [edY@+ȶN-kom!=vV?L^<Tˆ| ܯ.Jy:cPA ݕ&^K#_?A/I^|%fctbzT:&_s ,PVYtBq@l֣kg,ϮBs:+t(ޝ,̾ZwWPBǺ:X5g{cc[9 :2~\]85[!m&z6%$w]7h(Kwj'2o@+V^P2z 3`B_3_.DAwlN -?"kћJdH mғ5_f>f@c*(D'"Ad;к BɎCY\ONIݸk ՛./Yu뤭LtK6V,r%z/mv݃7E@ZQa>nm^)KdV.fBx -U(x=,o>#eжYf CD#|\jZob!u'6ZAgۇ.b ~OIJPxã/tNlt\;\,P+x29qW,ب( ϶ԟ8_C}ewNh[-'Ǵ)(Й'>X{|X;^\Q3秞`udd@WL{\zjӜȍH'd|J5R#{|rpe=MNz.4=i+bySP,h{;F|}|qcKي\)j[G>q˟_AuPMЅ((*!]Sv0'L2a Hz$S@ 9onHi5<u~^D}\'俧Kr_]'"-x;\ivOZ1KεeeM'Y(/l z/%6Zaf)Ǝf,};B6q}*R<ܤtlVL-ř%!Yag,~uTۤ6@5YQD˦5 B'Ǔ9̫1 %6'=-C3!*; 4bDLiH8 eXq6~J[Y< P3.IW#nBX _.q1v5(yXZgǚ@__O =14zB˱߉N鸗iiEXYNIqL 4+d:#hUʂݯM;E̳w So1UaLmZWW/dXo9R>2WvOH1VB.s&щ!hj5/A#-O}lDžrM,z14m[R:W\C%Q'.aKO;,qghA Ԛ;eyMRT5" 7Tcx4ȴ^JHҼP>Pt5XǶW~>=;vaǩn灁Z;NCZZM;Gn2eGVTEjIb_^g^:9?+>i % ƇޥBq'CiNX-25 =`E(2i+``͖0s,gDBgG5Ua?&,(jtaw>e [\6KYK2}~}.4]_$W>C)3]j?-X*ƍ~bҚ1jn _9{Jrg8{ u ^ wUhiH8'ݰ(OdڑUMK,`a&L*m\MZi1\!'T N/ad3Xp$2i]z iw|WXZ_{[4ZM;|A[isO}GnF<PZ}\ F]#6Pu7_ M,\lzf}R'!?2ȶ `7 Asxb é2l{qDkl9xO$}m0SEG]?pnUti}(ӧ~?q8Zd־3XE$Wrӹa5٤Xͯl[ S91t˘cYw'5 K뗱g:|qя}'>or{ϛ(K3փ(G߿=6J|oI)J,6UL30Sdwտ`l+VBq췂 ;hCeSLyC;q̑QEꊃ]VRSϙc8j{^,] 9 o ]by!?ȼ:ٰYv)񱖔&K?#@G{K7f6fql`œ:߀Q=Ju^iCdU/X^7Q^f)3ayԵUj< -^8ozup_}H7&~o,7񴿝_ ?"(vϮA&0o;OϺjLo|<"aYʒHЌ>v&*nMDJg"|r*Q OX`<]-t3p`(Ąz?ԹrKk\uaF]+JE: YSYtW]r ;Zt U{=!!63O?~@4VJ ROS>z%g +駳*)ї)Jl#Z@ >ްK0w Vq{5=gh:*_y/$ ZL6k$e`q Cӟ& L9AT tӀ|(! r,̹+H #g6VaWx7 nj*tZ0U}H]l:u{;.D"O`ǒ0֕0\WFMTe]E8_ JjQԯNcNøWH19$⣁Oۍf1[(0;/B"c=cDik1ReY:Q s W,{WQ^g :[ZZY(EL?5N13E)f~lðo l=۔$sܱCױ.l=,zO 4 1uFE,OɽdPTl5.:~8s`e6֟屸-;?Ga ,WHe[ʞ^˲~OEcI4,{f)`d ow{q\L;Xh Қz闭8V ֑8M]BmK.wIa9{!Xh6@e ?gRI.6P+l6M@r9G+T8;;8rWaxZ3}\a˳cx@19dypbu5Q:h \9="vb1gaб#J* 6>M'% ,UBrӺ.)Ԕ8tXL3ƅA: wu̕JCt|3mXSߧ&8Oe#*+g%t/Kw׿'BF[zвw48iWkT0/~i]D }rhb ,~GW1B#M%7a\c>PΣaUٍauQޒl:]m0Ÿ+Whx|F?1N!yoI$?-"Cy~_Wk}s{SZLױ<'5`8o1A."0'Xh=c.}B{ڹ=#7:poG S?] WХCcu {!\UqHz/_ޤ^3;3t:> {jEGti\.A㣏˽3s#6_?0~k *ԠHfY4Սf#`Gg;lk&. x6{KM h꒳g&@ IMhgJ!IOq(٘ýnNw܁䅮6pR:DߘY+{sSU!ˬfsV+?žw/'t>7YNqҎt<[ R!Ub oz}yMו >}"΃t+:簜aaxx0?r,6fܠb2l1_ѝU4mHc=gCo.+).OKW$lp[` ?3qVlڒ95@<)ۣA긞a5Ge*HP.nN| Nmɠi %k0+[n_Q ,-m)RUi5|.?!"cz>6Va9?[ҷa z{Pz\}O5VLo0}cBϧNyG?r&wWqa zĨLBߘOQtV\9mgY#0湨CwΛܦgp:;znWq.I4֖2y}?KtqX9b[ySkcd ~g֧A_}ׯf_s}9G^ 渻O@j`rHjN^z| fOՠorCSY:VOKC!x`yS;4`K,ԙ/M|ϑGܚLs_u'~CIpt4 }:*=7͗ JKъP'g>,N>d.2);dRv];\3379OmBG(%s35d֐eNzߧ)7ZTM( r{ ӯKE?y_d:F?| KD `#MDnXr8O0/Kaıֳ8/n0庫D&fRdwE"UvKIz]ψG_Wakeq`5N]Q>G^"}~l  >ܐNw2LH;CC.1mߛdŠgvVH`s5 KQV8Φtӵ0ϟ02bK]O457zD0+ZC:(?Ji6ctϐpb2=x{S'qaInS bweMnW{_̘+$>%"\Q7 D-QCГ0ABճaRž= ,J_cHz󇙲Bof;$nm좠-€1!y}=ix7}-5\4VOTt_<:* lZFAL_١)6~mW } ׫^BN鳧 \ a~' 6KEa[tP03;}%=lSc x-.m6^ۼWbY_Җ4dU`27΄P҆?"?fa#7 1ŚS*3mgMA}K2(ݫ(y?~t$[< Q7 PrvHNp qQ|F:n̾pE)QAMl[t. ~ 0o{ [ HX*oTS,Aͱ+=!@1CDOZ!mn5L*cfׁ.zˍ=~ ֕>AESz?fԦ#8S 7o7oA{A^EÃZr0IKQ~p2b[TV$8$bse}@lOlwhɿ/}$#4p)_pg0~}'8LP?>_^y1&/Q\y {ɭ #'||o8(䥳3~:[bGCz ƕX3H0 :CŭѻlɆOj 륻(n`Z[V ϫcpid l+~#ɘmEƝ7İ\b0IKO7[9Xȡx(!d4`P"ŷęKT|6R94啇҅yg *SGQәz,,jQC~I:; ν(=GvMGKB'ƞ~1 a1m›C t0GޗAkJw&XM=C:in auSJ}#=qVk?Od**sΜ 1CU=Oq/;N;Zbe&VONΕƪbV8 7x+<5!( Ih KhR7UK ɥбmjⒶ?.KNLS@;N)uIn>\<3M\n< 5: Ь֞ !%jbAbIL4ӇGO)dVĹwR{4oiIJ_+lX㕪F+劶W`q# ȋ/4~ DB,^*ZDҼ 5_}IFPi :Jw\%AGc1fgSZ7=/'V ő]܋"Ф(ͧxs Ȳ~ kP(L.;Yn=|.CG+zTZ$Gؖ\&*'B(^of9Sb;0Wz?gZ-DxP88?`%o/_D².(K;Z;Bv` {ntĤ72_ϳZ :dJr/Kӡ)]hSm{$.Gﶼ;oVxDumh>U EX}/GpЅh? >-̳u;ł-+c>XiW}<k)ۈmD3,׵_f!óO/M(>,<>um}~@DMs{">xK%dPW O0B>oߛ0l#@}YvEWc`wS,H%d/套.ѿPq naxczb!{ \4ӿɔ=8d3yq;?*\x)I K;΍f&7H?ahrlml;q!l-^g QPtkgQVzuW̟,"Ks5 Xj~a.ةbb"Dg/c=n̐HgL{2 ?>n5y>کLL{Xn@pXt2~KYl ԟ}ώ5V׻eCɡ HE$䇮Į]\q_~Mb/ ؙ(-1_^c?!)mg'^jaGՖVҝzߖ)#mk$y(,قEr`99&fnŽG?[8w4wT;.lNg7ֳt:Z@yE50u@F忯Gd޿/ uv{H P2wʙݝyصNHwp341kGcVv5:lr/[ Ԃ\(iz;;a^e3|3foKԘ7@mn&5YrKi3ă!oO@DW;w1Sũtd~kt\aP˒q2j32Ff:tŢ J4(_%sk?nBD݇@:ta|T9!H 2!YqB9@k[=;֧-觹8NħG&nBA[͇''2Wt1Ie͡Y({E~mACe*D%̚٪%[qH;􈗠մsk-.]VܚYXwE-)35]2Jϒ(I) R͓ KZJМf@#ZvCWU-@z!qV牶%䗠-^ݙt]7"Eid"V9 [Aa'wwae/%6<`w6~hQLǿN^I֙ ~`箭0;+=d-CKQZ g*a,TN\oOIBΡX]PpGVq,O1JBm@"j.(̽@'KF^8΄תVYߠ.ky^ɢb:m!-ZXg 2ub 4"}a?8\Z²e˳J)&{-v_Z˘}Ÿ PZkgcyb/FTALQL:d`!ス'b2 kȊMW la˟o{"C~;WX,x؈x`ow=x비wfXs#X^w2<)5%S ); V7Hїt !ߪ6q)\cp8H<urZiDG#~BQ=8=T~b~±M(ǰ!gEHT):IMrcH^"A#7vCfW m|8A|IT}XY~AcڏGn2+Fǒ.X0:sE=EP4 ԆRXri8ZRSCjofט`|Mmpq2'&9_߅6tJm/ӏO_˶8%$~XcfeĎsu0GW@O8S&wWu͉zgdmϷ 2^a:ύNbJ6Cp=>ʏHA{.aǕB$WQ(n.. A^ᴧƷgKʮ(L{3lySmO=Sԯ=Me!qǧ_!6o.lHj:so$lP~ rNiƄau:.e jU3GHﳏ?J3E#[OMd_QggI`=(Dq?Ϊ 8j{c.qWaYi3y(;uaU4Ň4ڱU܍XY!D=u21D6g)s(T5O||;ԾAN_ԼMxQr3n%0!z}aS:@_Ƿ~:Yl\c j\T 9"oꆼh5Qe4 ɺPӜQAVSk6Dxlԫ)..P!x6@䅞Mh!~o!Y va)O`̝yH?|tUa }6#3a<oW *_VNN^17N+̸. E  Sf=\-cQ}ҁ[֙`j9‘p x'V6Ab u X(K_e֠@tׅEq`dbr] #=uhbMj,;IYQhr,fG QA% _6PaRXw,i2 z[)LiشUPnJvd-!gVN8LTN!9D[aUv=4mӣW/bGqi*,T:ڽ2OFJ'%o^!N9lx!T2B--dw "{Lyh8`$TIKq[y)@!#@z&`G }47F;Iij4e,(Hz"m}z?ar_ ~j} c 5/C`?[XayG|z3V]; Sg"T¦->yzԣ0ERכ픡s7ⱃGiBM=|m@͗LYɄ)]Uԟ-VnjݟeH8@&E챏ڕ/©Hb{a02&+e:Oܯ (EM;ݰiOƭZՀS_+Kꂷ7F 5}7, _1};-=S}}Cf%~_Ҋ젣RWD(2m?T|PR@(yꓱ(TKEUNFBXp?9ʼnx(k眆(SbΜ`F4Pb+H8fgw7 w/`vQ;ߗpOc05曟C^ ;UAӵM8hgnlTZ7Ŷ?q~,l7d7>g[I0窩(UqF#m;)lZ-] 8p#0T䷸[{|_edCaO$lFb. ۾<_ aB\y]~ZlE].ITjhKUე8&} )OZ~p=E,naŠV]ggwyAXJmc AđY>QӒgŜb6N|,,)PjLWT:1XևplJw8)GőتIT{˿`L Ļ|lsULJ}b8sc'*`S۸1Kw@k"-, 3|9*ȄWtHN*dY AɛfG QG., Opk{s\`H 3\Xo{(1]aOFOjA$pX&bpۅl?h#K[9`TdYٻ"Цfh铁XnzS)6j'e?5<=X}{;)W隲_`DE\dxv jg:wngB#z`prU(=1O!<Y0r,*-p3ݝ}ea\gӣM])sGWK3}dg:maS!7<D SDnS+r6^Ƃ]:NoGd;,Om*jhߚfHxp4hǧwY?|{ep PcP Voşsq}*O<%-Kar0=Fql7q\,w"FVp>[Xm;sK$XuaGKx&4ſ;\uyFk+D ƃNHHV';?K?ZM!i;lu`hR={{n6d62F&LЃC =~ FR{wbٟx>lgwcR4Bg7-e#p:rߊ7ơ3U ~_^P1bq:tlNVERȓ `S#0@o2f܃ Q\.-_1y/u f'&Hn$v:{=R4Q#!X\2{2N2?lʸf* ؞}ؗpi}Xz= ,"ٞO"iog+Vбsʘ"1V ֚WZZ iݔ@2wY'\P1 >l؇Ѿ[ϻC'Fz YLpf6A]2$b@fZMi=g`d:wBͅʻ>xEc .k)AdNאL TWOkǜ}jX7O$qu8c/eP4\ʁ\[a/!f3$P,AlUUF (h^,@B>V! =k}ETjy7Ǔā'#_K-Qi\[^qϱ9(qwۻ7r˰"חgpEsHgUZ9oDVgaXomA|uC><6EصO7lƃc5 mɴpdSj#rco[0:^BU6+7wdvRyH'+ htB/WT7yiO8I4ڒz ,`-tz]s!'\{8nXNF8e+D{E [f9A8wn-xcv5TB?o8U\WTÛSyC#d"wbmcbHU8%70`*֥AA{䍻WQU fzPMWY~Jr'\>rqG<`:^O|l;?st _S=ay2Y= i%@qrTn=/0Bݶ3Aa=XQHb(vָÖB3 mnϼ& ȿ[WPb|/j|;B[xp3227@vZ2crm]֊>ِKy,L٩('`ۉJrS[ۅKtbrΥjkn,9{҇<h <* v]oΥ燡ŶGFv\;ZI1Q@;Ű߇`T_ Đ r(3~[iM#"E`y3u;w+La~5nvuNsr$Ԛ ;y㦥 }9Ǵߓ7@vM{ GՓpx״F?K?^ڎN1K0&~6+9б!&N>B鉝Ã2921ev(@ᛴKqБuw$jj1381ïVaǢB59`(;b(2n!MF풗.dIq>jM3A| hӔz%Qz$]PZY F0L6:TXBW$_ۄFh0Tz_j=tpT@/y+Gח݂ cy0ľNH=- ۛFZS1m%ClQ[`Qߠ{G?`ega} dd?߂_,x[W8 va ~P}aC?^Ldf).<}up=eҒ)~4!<\>t=ɍ'J3 L9nmuܠ_)e.('')jJSqB_wA9rsa'>{o2qQoB;( =e`(L.ln%3k)oda1/xuC/~x{mH *)/]8R=c1Smqlav_B㗢@*9Jx:9N1|6wlcdN_X[ke& (e\ExAMn<@mR?cRJg];l%Tg\J4 ' *A}Q 9^CEG@PnQ]6$e$ B~ +0hyU"5AS8wtA!M[9bAkԶ9fJX@Xk7O#7Ӯ$9Ghp8c9%&WQN%JDQF$*݊A*4e*eM2JV{s{sp=7E_u:yz=sS @#6LIڍ,dK!~MW+A\PVmhEAIGPO͸(2G^q*j*ZcK[)%Vl1M= k4g÷TQ< 8Vjsg7 9qAc`/%LҞսŌ <^!!3A%s /Py ,Twӆt 8zj!ە%r mm*Q"_㊇GWhݚSaĔTϽz?QtoZʱYiVb곱S+>gqSr`Źu\M$}=5n.hp`t~^ՠM"]Im& !l9TV^u"1FAm@)c-Tx]NwD‰k̟.pS 8j@;96t/xEf .c_|ʿaz/BqT )~8/4_mèj˚wנ|u"U #h:y&b4g_r0fڎ,b "NuɤH?n^iNb-%RH?Ų((ԆpӇNT70a~x(8I<8&M0g3$p9e&|fǥkP!+3>ȍ@$1]URj? ZWż]&*Ȁ2EF$(;Ob-_yK&Ix Im1Sze&4Eh&#9Mߏ3@wi9TJ0nWҺj;ܫ>u64MJ0VC$j8bE>V6;~q?;m}zqװu&/#ݐn$ nԿ?'v+.Ba]WȹAx^GGZ2- ~vuQ'k(0n8b̡K|ϯ _LfLi~lg˯#` Jz"~؜AoZw DE@J#@4do 8}NUeeH34qUE?aiygpȹh |Mh6ȶj[^VFaҔX&zR'{\Bc^`oZ- <ԝ-{;ٗh,>?м֕ _/|ݣąB{e ث=ipQ_6;?qj4.c#PEx v}rA ##zCu_Jm<.h8ɅH^zAV,з]M>n[o.KVa/G-#-mr"4O,[;U%F@Sَaclg^~ Q/(2A\YҢ:6zpf?zI)Q&!ڶ^ }sx p ܛbjC'9t1(L{Gu*ɖR?ܮBʅA;[j[Q[BCR +?<漞bG:1YW\v_)wQRvz6~H]Wo`Ю2̯XA_thY؀>-?&DHnW,x}du {s+a~WFhiQq&6T#cwĺ]|;ô ݒ0!:EnrW' Iƈ"4jk'{+_?$[/RĆ#ٮMg}RyWeHp%_^7vnY%63;mR2|ne[k>,gr@K!eb=PA!Kk/z\.q~HTzkG3*B|^Sl ':XAsC;}_[Ql-p 3W`z^"7,k8va76~߈Gacx.&k #WtѼج\XO1dDB٩GqNb'!c1D}k`veR ZѽcFd)f U~={5PܚB%^)O@lρ@:t??W=XL!a%Aea1Z "<UbޞH!l!EUZ0KMaqLxgՕ=ƑGxۀ*ch Ku0 "˫"Zh`jKBm~Q9ͷ_9a(­Xmr/$wNsJC#~|A#Js{b>YCh9I-w+׹n;XLZۿl"ZcPrF4=6HCǛqR+^"Iɿ xW|=kZ6n^R ba2ߞ[BهbBd?tf(:D@Tkm$W?v%qO%NHlHu Kw7AFƍA u\'/xH6s7MTa7>`TWMuyJSCu_'Yi1sf1 ˳a器XHz]愃O,MF!/[9통 zR`UNpTzx"#$_y~ł"3_%T8Fhmj>S2_%-5Zqb3ldķe}HdM]q1k=s$q=Mzm UG\?*v><͟tZ÷dz5!Z@($y,O҄@mu*-'u'gB'VZY=xid9"/+sdxx8w jFu8+w3(< sV>ASR i%ibrD,hpQr,kl&V +i&uk̡T)(2T}ݼxY[l ~cjc=?]l.}wFͩMcc>f@ C”-<kdGêM}nu|f(&-=;+k?646kGwtk7^ .eI\A&Y3+;[h_+X}6 U= }o@d64Q.̎CkZl/h?haWb{qpc> t}И~?tkKR`R}@ru$e'.+MQ^*znQ܊D rԐv+si }8a[ݺB} E@ PBfeM9aПep7ܼj{qAguA^p*?&IðgǣU/hz) ^Do޽Ǜ\q&˻<,ۦsb(7ջ T'1ohr%QHͻ{Six@l Q'nIE;)DGvZ" .S$?kj8u'CeoM3~Ow[)16g5NW`]񧋘#acs}n0nGB)O |` +w.&{ ;KeCf1 ֶBՆxe N^K'+ b2n6nqh\4N ?^#)hc$ K>r'V_?vK}M/bM; 79p/FPiBŵG 0C4P soksC}/i C5c=5{Pk}5 yi8mA|yhbǘs>eGN/z-60$sWnD*FqX!|PfS%5OC>ƽ/e!xg+6P0zZmY!]݌,D%{'#sPJ_9­ a,p. ]ݯn$CBPy¹g7hNѽiշ*+&S`yFv|V$~cσG~Co$!irD-k۴~p Cʪ3 6*[K> &g@K$4E1~auɴe Uz7 ,T))sa i=^ e.YB 7 / 0 RԪ3_ |հHz˧,XWOs ~3*Ka&SXq.lֹT%ۀ M<Y>aWdžǎ@ȏC8sɽpTVzĊYMc2!Ch} z%E.xE~aQ WOLt ː#;yk8:|`g))Vt^ޡTo55+ڽ,PП_I'ȯq^Bm~߻e(,`&tBwRa=c}d#O0x;?|xǞm0,v۾m;)tj"^_G?OiShpF@H*~Y{?~CO0l<5$[=Otrh=l܀F*B}^y|+/|sWb/r="#ykv]@mR;0jHyWH_z/%C_@f`wz׹6,;|whU &Wj|+M<癎?K?yOF){/$}K قX>3K.Z 5pUJGs.AkB/{0@ćSc=7H;зZ E,7Q= !5ҪKr\*}NXX҅vIYho.}?e^DBHH}S@ut/ W7Fmi|0H==Mf6IRxٷFc!Ic Iϰu`s}04: q-H$GޑMG#.)/b;4`ޛ-ŠAqv,POyxI~Pl]-\)]Ijn1{q˃˸/΍UP*r 1݌FHBn$6S: N[h6nu$'uH O-9Բנ)=s3gJ/y Eo ת>ҽWU|m'܁Su7:Ҧjf}k(LxАT@M7[h%iI^!aE}ס.eȮ`"Y݌s>F,@\>o hNj/dvgmjԾԶۖ*/!srI(wg_jWz^n\v}XZGW3quȪ'cX:A(7G2k ܑW(HCcnM9='7iK~珇E+~0+ڗؗ3t6T /raee%0BBWoٻ H2鿍P˓; +h "zk=lIQ|\-}0qcyB/b˧s H,x)cs5m~"8 Qc+[m0%"" Ψ}ᆄO,ώgw<0cL&VYYˌB\V#L bF" ;ֈc,P"{+% !ص6c!{[P +JGQCioQ>B zA٦S_ECoeD\G, a IJ_1WC6S& `k>tVa=xAhIg)TTagYDgu~y҂?=+c[`٦޻749zr6^6>bw){ αgoXyڔORW|Ss}* g%>8uR%Qyx#8~i2 Z9;Ή9 _A6JLFC箯h<_;蝓Ce%]̍BVӽGH' CX1-[bC 4ۮ+FC|#voTqtiЫ(,\=HP,VO{C8xEL??^32ߵ8i^Q"D7Z(L=,oO0}4h:6 SSP|*$qKpT-);Y Pt{N⾻Wr mNYAmD^zP-L`Ye&hT Ft\S! G+Lbۨ V2J!{/]PH:h {辁u-vthx,˄Vo2AQ1M*s#dհ*ph=` {=bʪrY_ ֒ iR|aպ9PKr2&[5KM()Ôw5תW >(r^`T'ySk^MmVxEF"cVU陸Tp\s96kKAD>rޢ 2zrMkۉB\0YBݬIdki@ :)0VגL^Б$xn1VSc1oY#,Z;g3(J.4l(%th#6s5}k[!ʍ/cc09Yr3W̩chTjzoY 6R07WZ FV \9c/?bvFcR 씩_6EdW Ⱥm`}u Kf5Xb,Z&v\o]|:oOv<8fmӒ>7Bׁ_7M= 濲"%}#Ss=XãRe9e㟂Z}KʹO<ǎ|8?lE/:~ncxKӢ 댓 (%qD@'6L!N9d8YgMiXg;($x>/Ւ{r@x-><gJ~CC%AWʹG!؛r*7h Y1KL﬇}>:BX)brNY+z+B="N2u:{8tH}j,}6+3(EmoaE0"vٛN):U%}$cV {ĤC'K8ܶ7Fg2a\CEA~(.oV' T0i7?S aҳ/+ Cty0.⭪"0xIG(@ofHS@wi |?.Bz @(59zMl~y5U=4$=*ߦ[Y 1d+c:w` qcsŶ9CyM(-eaH.l?hZQC;BMČd.Vo8 ہomc#O__úG?:X>iE?]Ö֒J)xBK?%`C~,ԶSߥ>v!̵Si-fqܻ>Eoi@夵K@\l ~_J@.Zŗ,TUpǖ\_%Cĩ!ziHJ#z&ü|Qa:xW_ib7;O;VCN)X%VA 6obaЅPt)60N޾./Ӻbtb 1z3u;6m=UpO9EA7ՕIs><ČY'v/kCӥ 2PR;F _mpAW>d?beBPvq8if/9 -5X}43[G2enxFp~ŀ5 ǘnƏ_?6Ӭ§d|wWq2$><;>)gh]z.ZyvK-Sr(FZĪ>Lkp-鉶tw} &AJ:hK˾"}8>cD| J~?E\u_P~^^&פ0<5Ոt:B̮{1տYdX"2uqJ$!DCZơ9*RJjD`ji !Dc*#{҇ kJKڛd1q$%mqn~@jVLnB{>-Cؑ gjqoS#(M_Q5!awzB %eߨ3ܱ!n(Pgz#}xY7/ [@+ eʮ/;-{~Rڼe I{Q?d`غ#kD,ka&O\p 6vE3yõ3L&Ma]Od)r8~γ 2;"sS/P?Z|s:#){S |Û`B+tt0t%K0?;z 笨F dy~pҤ:a #]`/3 3@um;pI=g:X =Ţ#'0mCn#,<X'f Hpй }x9w('EIgO k=ՐGhgwQQ(Mɸ,xHjk(ֵrn12ǜByů,K3pMx[mr]t-mv0(T*$oF=ygK$s6&9o)F {~:=,F.=9WO(%WCՉxN~h4] ڗ1.{1S%WW6(:Ck07(̇=~MPIv(dwfd´Զz3@4c!8} máV*;vEKPb?& r/Bg*gmыc{ zrG>rjh֦.^!B\5ᦉ@dR|L/@ѻ([.x܀k߹jWZCk)|{dkwtwlzYC/J}˃)~4{f xT4c6ɐ{/@i:] 5Lv}/T;gX 9 d\gqR7xOsğ0VZݲ 'ԽϋU;_o\}ʖ)# + -.\3ŒNU-ٽ{5۳/W{a}I|;DŽe.u{]>x*ygCZL"kҌAg=*T!+Y$+]b8WfX(9a}c @OwD,lj--C3vPR[Z›Ew;LιAexUҮCr_v5Xn|ñN fxw'ZnT@+ IH}c^T$_uڨ 6ϞH%{*(Ekp+|{wg1迨P% υiܶInjml-bhE9 ޘە)]ٔ JLwl.ZouTSNc#%k gڻ ʕ$Gv(?YP_z$UzC'ūGA+[ZXa3;4vdz _8AyjV!*pM-VLՀ0*+9Kc%ct`VH'3Vd 6$ߌƆA ظN'#'7-AS$+(u6iyjly| jK}Lf~_9Sz36ޏɬq'a6%,bYircl0pehM RM҃ (_7Q1b߇sQ1x!zF,L<9-rI w,[ꌷ!2aC^L[ԦŰ ,v)w^,f;bBڭM| P`w-0*ļPE_NjäR TjwŘ #T" 1u]UWC?r=f,{\y֠ x]ȿE<r= ]ƈ)HX:?}S&pu)&)0WI?|SONg'1j8L0bbu!Q"ˡɥ bMw Av9io~,8΋gĶR;q̰)QɃIGdng夔.zx08U gR5R>mzf;w]aOѣ^8j̓Z$< .U::ֳC;ʰr™7f+)%26b9;O=sXTomtO)c%i+؂5GULvo:v,x,g8s Z>٨a;˝UNߘY[Y]Ĉũ !r89lLouN,ʱM U#6}|(nv@< [ZǥNVd)5;!L}xlEH=rH..tw&hBㄠ;DU9ۮ ya|X(6ޑ'Y]!)* 2)Pm3 "\ nv5BQ/PtcZh7T7?KAS&%{]hȬpko*̇éw/cVd!c7Ek3*Aus=9hڵ+ ?"vԲ?ލD2e(Ko=zf3&!y`'&)r-nAF# !*,#v#69m!IP-|yhıC'(YP(&F݈Jғ]K>xEP NMH!gӦ q^'OQ뗧toۖrT~ )ٿU*gh]H_2~LM+Y ɱx^*FFWՊ? cDֹ}X4U}!𱤇G-Ư,(s.cr皟P"/zGd[e_Y)bPgWc" [NͱkBUGƜs7<4tnzI'wâJaPU;V~vL%1bZ5v[&Td/3+ԟwa@r.b{2hݞJG{޶[ׇ2q9z ˰7&2~)a)c:k WQIA"}84~|cwxe:oYo@ɇ՜^Ny2.R~ # ѻOU jԦ^bs'5+g'(_d,d RAfyδd֒&)=rc':~_ s_ғS53fJxjoOWnA 0Q}?<[ =>k] JP^(;~~S%vv6%D]t]|! q*MDJ`ʘ`--I q ƌL>g[]X7]#%Lkev]a¶F>VYgKG"7',qa5j C+K`t-rH~"Ǩ͖!{i-h%o|{ 1Kj<-d$qnƂE#M[|G gfÄ+9٣X`yYCC4 EZ _D %6=LyCu4'(?kʜZϮn P[_$/a|=v<~Յppg+$UJ>QAo4?[IMJl3Z> Zײ^|]U֢u R;BP~l%o>|HEk*,PieE9`)ISYI))Qs$(g L=C} }PI]%'-ssE)UԱSM3LawzH|&}lT neNA ߙӲ8 B2?5u b ;}~sr#`zLjm]ǾԻ>WfH0$]QRL}-Xlu;D:FԊ LcerP-Go}==O?94LXy͏F`N;ɼh~wJ k?']ŞRC Go{5d'B MqX_l6iVs` KQ'"jrK;~FM$8g2PUڤg0cNQSR$x?,2U8 ד)YBhtC8|}F/7n]4 *AST1@/+2VXq܁ kL>*2ʧ/wg~+|ڄ=tnǵ|9{loE %{]shGM{( א?*D˧4h >L /. 챾 y/xc۳Bpk_ڎFdXzv}->Cָ%K1.4'(pBow.REw`mG)w!j'4IxBYY\c=ShL)xDi1|ъ/?yBYzb9~c*o?fMbGm$GbS?0f1(2*+)xgϦܮ[7|# syo+G5B0ӝrn XWjvA‹ۍH{׵GHx"+YcvuhJ(qv^ֆ;BQ!j \-k)1T/c|  [F?D֧%ђ)kt>9 gʐbK^?@o/c`bqb9zaMXv{@)Q0${c%b2fcvl9ݷpJG%jaObw?jFR[x)7G!jEX{v'=\OvkkVwna[weq@67u`7 ǩrAn5E<=k|LZ$J>RĜRYςv,i`&u3D-H˫[|07٘ɞfBǡSA 7$1bH{s8Ӈ4c;Y;$ oIO_`OM0QN)Vi,'[CXqQu jưE() :k|H _ Y`ɥW0/n=x=qvQ*Ʋ $$v9x(ɾg%ߋU8olRe58S⨢F|'pkf(v.KγMZ?m.!voEj֎#SH/ȷ"]@Z$`} ֋ ͛+5DI~Ct";0itJ3[3^g6З $[Tw5:v+bݏQj0_G2 bZw;kɀ?-b4I?!5<:c*>6Υ'_n%6r>l|Abl,oefp񧛷c5_5utS'o9 M30c߬ԩik|Sl?ɺ6O$}qX+z9NߏX,#;?}:/?|G<خ+AԾ[ӡF,b]hN8:H@ٴ^io?^_lǔFoNah{"} X}lB A NMX|<=ÎK 6Qy2>wJn.93XzG$,܈=q",Ǫ72%c|ykikbu]^q:٤7O@9R 恘d:%)P QMIW>zźN(N1E6|H MV(3*vI/@ٝ ߱5=פ󘏂8M4H-8c :C\1ˡ{ŐޑLnMZPJl; [468"z}#DV+PMDI3ļ숿w>:F[@r_Ae\Xkq+2z ;Bl~P!AT0Z/.؛tRG[Tk G_}dԢya (n=sj2J@]G>jaҗYg4zWgqP3eVҴʃ H*^IÅsƼTWGMxߑX}qit>z 2Oñ\޼˓%iM'^Y??ݯ! ;384%:lS}_xzr sgp~=@6mc3~rj_o~qh;e4Cvxxx]U(_{3'6pg5{grΫ26p8;͍w 3$]w/'Px՚@cZ0aՋ HC >xd7^VoΡLFUm_7}˰8Mʇa|6^8P &d2Ű#T‹T5"IG>_žwk@(6JdGˣridVq{4i75C`]I, K ơ9Uu"y:c{bL*989^{¸eڰ} P{\O3B԰x8LI ށorBNi,$Tcu_ C1&:) Z`EqKf6da2c%18m0ٞ&^Xd8% UrR2YɠDobcvmv92ay w~^qdC/ esmNwi`mO <5Ӽ#< M a$p^vW?ٵ#3ٵ1TKlڎz)ڔ(`*LU>:HW*iJ :J?Q]ut9[15}96>RYm`3h9(²og<`WWf#,>#ԏ`jXʡJ7nU]9z:L˶Uv}l \9]V b?h(LߚӽZ/Pi](9"5;W` $\F ~n*ڷ"IRH/}1TtM,oX1~,eqŗ=CW@Ry׬tC|F i ƦFhRW?iFD'(pZ}0F~?/u:-*F]M_Pw!K(W>r_<-Z|= :͠Utn6\ixԲN[44Xc!=ō)P覣3p0}'8.yiԘ@ih= !\x4I^k N1뢨m?sK}T.Ŵ{ڻ2+0#z՚6O[i_ v}k=+D,}"?G>O1g!ׅItܮlMQ| PJRƍ~?"gFآH4bO'kV)*O vCpJf+ ol9)hbqO{ ݇g4_IRچxqcEc8dsyBM V'o-֗sazE@*.v@LNsU{'Ģpz=?WfW>5 ]~yv䫮ENWs?y uAђ+M~~f@њȪV5y%oS"H8U;.eR9% 0]8WS'+bL{lb,lb['VxcdsbHBu˹Un/A6!`pU<Zb^c@<=)H\~Uqc+S,^Vb϶Pw{[mؘ/ŪaCO0e'Ž)#R x)m_X5MGobɤcKHpbMr./`䁶,֭^Jv|K|vVT-a'+K$ͺt%•#IN8vvX7aŶ} 1F(KҚ&Δ?MӔ/>e#c,*& 9.a K=# go$1 \0{aLJs]H(pHs3Y\P1d>){p1E~VX`7lf)anG8%Ƚ#cÞFM>'|oq`uhe|x ̄S^ąDzk1 ꜳ?YLv}iߩxjk68+3R$OS"}F% AwX/$_ y}rX9=D7ȖQ[N;6Lap%&e)cI=IU,@R`q!PMp;hkPsʗ '~wCK6LtUb0"PɇS:з2\ ϟ{7 oo+a*XIsܹ̋s o!Q/HJ,M -.;!/B"ue-ʃ'KC{ȣ -˧]PޭڋGI=zӋUQ)xF}hz0+>aP2^JZWSK{hqմht#{Ne)&HMo_)G=(p6bD9N)& pai(}wgu}ӔqIsp1n8mu4g;Py\EHÁZ^ ]ӈq]pԉs|Z뒩s5\oC[eq!8tݪ)?8w 甸;xp)ԑ\ E0+[uNwX<ې[u3U#~-{`vD/Kb% cUOhq.<~+-"; Gbt&TJa Zut!zGpl4zSl ?CV 7;9KB.aM5l;*w>eFC P@a 4UW"2S/(::]DxzAƕP3(==/} %^#aſ *D2GEƳsfP`U}W3!D3ʮEw O$'BQDp<[YfUbA(0RA3MDkoyCbжPH10 C?p&oY"鷠17r$ir-.=t &CEA8֟̏zK2gƧa=^C$"m61ol+8S/֑kѐ~gL?֎^2G/`A)l%XY|&U8/b3*Fڮqyl&?׬tإ).)~J!0Qpj'yo"VLX>H##ʇu.tLMOp. /.W*e*cAsX.{w(X W7-ӗ0/ uṙ8ᯱQD"N> g9^p;߅3(.,l'jun~|q1{siGp'_G^t>8F87Êc.o,H`t`_8^{ǁIݕr00g`= 0c?L "?o.^K8Ǥ*Se%,9A91T0@)LL)f7_rWs]{X4Y Y6 CP.(OP|បpq-iX,$ ?aUcP٬-ͺBUK)6uzZ - { <پx_ <>0j:߄Wڭ _̟OW]aN40Ww;OzFG1`C }\;:t] fRI[ Nsg9?ݥjC:/N6CD[gw\]o~!S(bK' hx?h/X"O/bے%jp< 2[s=Ax,OaHOgrjX&v  gCmѩ:q ":1U70{/xSrZd{ K ׾XZv1Lui $gfu): 1 ٫ رj$\? qqoUű^޶S0| :^@PPEO2T|eۀ)|g^Ighs;ŗk [)ݽg@ o7ѧ6z(x36Q--cJ!"kR}~~/|B V]rv/E%?b\< KRNDb%~̜]f/;3{E%OCPiUg^ӯ$ 2uİt3tš)6@wx+~tGUQÖW3 j55qy9=hˠu/p*UwnX0ʘ0c{W:l7/+<֨5y@4==m\x*l׼`Y#[Xvy(D?QjCǕnh~uo䶞0T k'{T $Լql8l\V!FT +NMe[ wܟ*bIp]q{+"?M_^XmvO\W:0I'InQ%P(%, zo~-j̭TĬ֔, Rf͇f1>N_\AW aF^&]ޕ= C}&+X4w<ԅ21`hMD5ÙC .8u(OP8YoLrEٹ&Ln&usWȪ.l/2DB:ʵ#qgBݕPٹ 9 Sۼb=I-$Ũ')ˆ‰u:KY,MlTCoj`iT1bEA>f&}#:`eG E[kHp3oARZjйSXH{inZ/5>zۮCu<у)3~ H9AGB\a렂3Yg!ma B,xEϧSo=CnAXexMُ}?` F-c78tyR?[K*5auI,25JƎaXxJlŮ.C o%ywZBȸBšAYV`\R;!3vSPj|4ku=s+&a݃ΡV@=Khbmۙ vXrO;əx_V-݄ |&TmtWȏލG׋R>WR;T_[vb& 0;XmW=O|BdZHw}# z3^?g<9 gj5c뙭!wA-sš*v!ڈ3f noXT-ߧ(\VsaϞ_YtygLr=8W됢?'X>:53iRpE% .(_h_q~a0<,`׍xF3^RDY9Ç64ݦizB _=*H7D&izu#)T=aHؼ9,ti夾gcxYT(V2.ǁE.`K_AJثgS"9\l BO -JS룔4V}VբM? Jᐕ5 b0༏3^uUàKL{ \oN`Įm,a s-ٌ0ˈrA<~=\f*}bfJ#tD&5񏿭t<|IS Ovߋd畣UrբbD R1a'oȃ=T_K-C|@·'1kRzK໑}f]ү%xW>/–ZalK܋$?v̬H|f9Cv`ӆW/b#k)$_(QV۷sj#qI*}?| KZȰO4LIil ?v!5)/,e>0O}K`S@-5e>O ٤co=FpMs0q 2El{Yj<ÃM`Ɋ$rlt[bηiawrEl'DkIRmO9,kRs\19cE;P76ttc/Bԗ㦋@T}( ژ.Dh(='zԹ[=.3ɋx&yDgEY [cM8r 0'U3^w+b/"6*!÷qvr5tM6@@k'mЯ(bSN)dzo.`\{!P`=6?s"梡-  q,v /,;N"8zibw^]Pb).4XEQ"5jB _}'w8uk"~tW(Xٿ[<[HK{; @4hZeײw@+-@kVn6h']Nl ql(xK}˽P2~+C9 c*t}(V,nA >WmJO=6߭M7~1h=SU/4͓X@m@(72l̻]M>AqS;palPMhc[+HC$)`?Mm!/Hg_p0x&U|Թ gn\P!v鍏ӒKɱetO6z?RcGO~lrK6_?u3I% &Xpb!^$>rɔ4os kJXڹ@itz(R17Aٜq]6<{PoM7N[/̕?8K{g(Ì8>3: 9hq[qq uTERa͜QE(ONWY-\cF؋?].{%K%Z"γL;*Ŏ\8SZvkugyNFbw5H r_{/vN C`r :8{GuWVӛFёR 29.U$Q&Jc^{?.SI?YyP)ئ'h BAz74[A Iŏ;%u * u=*~'A*~rL^>4LI~pɝPw;7T#HIYGg÷uB@k ,CF)0*zNc{:mVA$=Ua2 ]o},{$зPw;.k1 tײ k(u$i4aq}>t?s,uw`[[wla ZؾOqHVe$^vO&"JOA+*L(',kD-&6VPɐόT_B;IH͍jef ]qgޫAng r=Qāawx/$x\OE2'[qF:|HgȏbVLPYB8iClH3[(wN~#Emjag#ۥmݯթ Ϳiw6IK8K FI?1GJju!_QMȿa.j2W 6R"2]5(c*8|ŒPzѳ`S~z.lP@@ ~=Tp4~Ɋivi?:z}/VPi=SPa6otƸ=$qC!UmU.0 %MyF+%󊽅%x~sUFgBN Q? {n֟?;+## J %+R***QD$[e޲{^'z=\zEvwSb0~<$Pヺ[/'`Sb[D?-}zXƩg/f`7W9M qW>HkzV5΃:pm;TZBw!ޒ ubk˼X)} znh0B^O.8,bk(;>_l IǵK3b3آÂ_k"( &s GQ,ڳ sC rP<I" m iUìsL30Oz? z$S5&K Vw-b[DS^!K P]VdEͱs18l{6C| [_hvFC|Yغw[=3{x5ٱUOa/Y)/OuF)vLM?\Cz?~jo` T@/Bjn"n"Pe%,`BSQ?_=fa)eA,8Q&N xK=ZXҰ2OE- ?mam՘`x Maɚ92l:`z4쩳7xuORQRURf^T \}]ػ%5AqpSD{)^luf 4-D]F?NbVQL|EٔZ_c3 [CF-*x#h6>` q& .L_ԹkeJ.c?׵ۿI VJV}$Y?d}{ZI<[Os18'@ ] 2]Vc$Kj~g Bʱ9{2V5yÔb_e|k͐P!@ ^HF{W &,ScV<}(ONپ" U6W^ceAH>9Fg*\E:t[MUTɡX5Pu ۵PAq@`Zڽ,z*&蝹ښ&? C)W+G&z1fɩ4b瑕)h4*Yꔇ¨9i?~i.k_!GȱݰyrfkO"U_b͓/V4,Gpی~Rx@P"f;0Ka/#k"Ey>Jf-%X͢H+a{57FVE+g1"#H&$X,跊MB<˱ٰ6̴Nck|U.5k(b<{cRAxlr%uXC4hO@F!pe̸eU5)́hR/egMC?W aYޥX@.~F? ^Ab%Ps\!QFm'oZ##?WAl *h;;0+x*vS̿yBmOO}zt:URZi HboW"v@%"TS3هIeOf:+S3/ /4}-9y]d a J69~%}Lef&5$eT.o"{aͪX(ݿviL9[z`W']5XD 9|&);CRZa1  2tQrC~g,/_#>޴k0h$>) :{踧5*#\ۭ~c@4w7.hk7B}̷v}TE-ߺU:@oJm@9hv4 +R0p.R (tǸ5~)HTfҷ|1ix׫XAS~Ѧbu+z2;>T1W nU_{|1$0jFPQ (AuGơ3a"Sƴauދ1>Ajȷq6L 9?n~M7w Ln{oԠׄ68"h0gy*'WArQ&o/Aށ'IPэ*JPht/}nYX#AIjgXn<]IFwib^w#0aV0F|&{w_uOh^ۘ B]N%.ta^zp0s|m/϶CG+olSlD\l-‚R!;rG~Bա+=G2T#[~\2-<u]в竷FZTX++<["BvV\VB-`@Z"iCg]z.y\/&0Zk,f/eDOf׉b.D5[AR 4JM[Ѧ]h7&f_!~x ;y6!_/wDp៿[!e6Lw+ɵ9bf1sɖ!h|qKZ neMGrDS3pƒd%CL`aʇywCFZJk:9(D]g.؅BV [HVBH]9=,ԸǬ2il6~OpkCRspPo$l;>8bLRxOme'LplNQ3uf[74TR ؒ`j-d"i_돊ij!sQ٥y g/awŰM4 9rҚ [;pe;k6` $HT*#ZܶCLJ}Atsc3{QXYAv5!JV|!gy@-EPdHc?ԍAqC;s!H|셹$X6W`Md*Лt'^$X"A-i.m,)D9yzXhQ*A`tWu Jl(~" {a(Rdy!J]棢ǵj+bK^w-n"ivv)2 tb4 o{$Xzgi#(kڋaRJF?fpk׹^E(,k͇M JԒ %u& ˧M^CYOl9Y׎s2!%ʴGr,elS>c]o>9}qP<[wLx#vd+J/q0.? ;.a\fbw{.|9m>}J3[t^ `üD>l~[sw a>pf/ 鍾źS9'< (="D]=aO Aaaz~28Øl W?wafΒcؘa"K4O?칏DG* '=]WNc[NfV9 {6 /]ă@y6(iV M[Se.$dJ.)ZB.!jHPl7 %!|'<tTgRu`bװ:Z'w{TߓN$ҹ;2NN}B[~tВѤ ]Q(.A!_:܍l ]䆹掤OokPT7OkyIdw>l&*e5[uߡB,ǙG΢MŸ_mty[IkdVW["%Pֺ*$vXC)_OL |^P{.<q|{ ,MB4_:Xp,/ita}] -`A,[@ZCS*q\'Z<}C7!ԦPx1zECCGoQ~P#8Glݡ|<;AYi.SПt2س57J0t] Y-3ChA{n#6$n܆rylvhmaKجȏE`x+n,oz 7&\ yVeu C~؍Ϲ[BSEVl[9j@*k%Gzޤ'=M%su{>^l<2sq"_aWDzoedͶM9 2KQ;Ūkkqh ɌG.=*b{ˑ 6˞xh QW>bTr^:EQݒпϳ|'o;#%l%{t?Vg$:9>}-8%/Ay7c' ]e8ũ =#/jb^D7Ρ'$tp@^"]]ZA:G,|hH05I3obnA+7l.O`y}Z .X^BkU /.yxg؂_J&:CmqHN*7g œDeWwr*=]TVysg-NҨ/㌶7Ov$(S>8ЯFr" -6 ݾR@L9PdqۭAkT׫3c`<%-H=WUb*9hаbC|`03).&ؿ2Fu lP%3CSKwe5^}O;@ث=дX:r]Q'"T0Ke>Y/ݙX}jRy+i'>ENXI.e}v }hcjgXHLVHn"QyoO, l{Uj'ݾv# V `>v ӫg"A $X,I=? oE1(L ^OF%}Gqp~!a0£iY߰}&+UƔE$ B뗯)ͯ1]'nVC/peJ`ƙB4K5e@ ۘe ھxI@WanƋJ% (: ;-'hQ3o<([ǂW^g{(z7Vd.`HqࢩXjZ+i57~-8ReUg 1(y;_?uUxsage'l UNTfs oL~@cOF` dV;H[["75;bBZgB{A X%,]u^'iۦJ8K^(m@sIcu|zG̝ ssY>d]2zJL/ ¶q;e([..q#R2hSNm ej9 o`t-v{t ҥDz9^ ֑]pCX6۸Mr'%+n ^~w֠X1Ui֧ݥt11I$E>1˻m)VDv*dpQ E>ȿ]o&( gBF]9:+>41Nf a (bV<u^%@ܟ666H]W{1; JQ탊W2gğ@fє@ͷ~O0^jɫoE4b Y4e XJG/%&W0"WO doab—3T0]Šv,\#=‘ۆe" `N`XM{WyUs89 )˖̊bu"H fi]zNjH%co}y8^(t{[>2=+ܽSpoUfkǼ\.9|ߩ;jq;c#կlrkTy+&'{X +L)0n0c%-Vnb~!7)n.'n}8 G%gQ+6$I&긦縷MOZB@sC6ީ%<9;tv)>{֎N \[M0?D-Y[ti~ևzP;U.#˵QSz8E'8#q6y1<*;,43)S' c8$OO=ǂzo!7 &hPAAxO=)&=syE=saxRt^7m`ԀQبy B&w~Z,:DIDpXR/⎖%QCƗR˲bP)|Ve B-ʘ)* ,ݤ},ZҍF~C.rR8AMqF3L_}.2Co嚼{E& KWCɨ,PVV;Ǟ?q-N_GݧUY!#6-W=CTQY?gqC;ZϹx,ra-rD #e/5oOhƁgtNЎV;Jӿbg;D}D_?zٕw<_mq]#ڍ~~`_x&VQ֠%70!g*_%`Q&xFҀ/2"Wƾ9pr 2 O-Nd0OԴ*NodA뺷a~-]{S@ w|(ZD=cD84<0u:EM4U&:P\V\Ch8A1uU÷(OnLƆp-E5HZ=yj`XݼuTn{*0BaKH?x]Ġo~H<i_!bR}VUхrL)6wQ~ibMcǡI9[Wߒ *3< /NH=1 =$'ocPꅆO@KYp4Ţ NĈ&˅=ņɴW_bK_i 2-?|F_ZG/9`sF|1w͸ѿ'B[jUacb*P-2^JN/F`-stȣ1Pf*GEW\7 M3dE4PcoKG2b YGf#G;zoVAm SQ. bsE LXL*XqvY;V D+Bf@\*k&ZSKRP &';JKԪpsШ'u.? Q-x"-?oS9蜒+Vz>ׅi2۵QmH%bg+c`&m[m㌿fNyxi`S[ 8Es鍽g_Aa;\o^5Cgk>]h7w㸆J<.p$Wsˬɘ{aW7徂γ!ڑ]<ǂYuт1ra{"0Ƨ8nh7o+8N%/q* N8( d7(rRf N}Ȟl'~?%@ ɺ~3!{c3.fG2ZZ)c̓=D%@8p 4SKr] KdY)$j g`3'1VeqMx8 ^@l /5xHqhs; H6 nlHr#9H"wƻ &j|`=Tڝ PǢ'O[ueI!LH7c⤊S'ܔP(:[Z?eG9mC(PܫA/9`ݷTg'ֲCĿQj[7"ܣ}[Jd.qCUJ(=ETj^HgbVmc(.; g{ì!-,[~$pmxoCVCCܠSxē#ֿwQ !)>a-L~wF,-,YkV Q h<6)t:g:4l{~Xֻw7bc8=s7TNү"C7 樟 >! tjڂ)>p`I)1/F *'B>T3u}V~ѢU,Yh$<>ǂzhx_d)Ub<؆^0%S amQpK b=C/SwΌ <.cwS ]:-* ukN柠cz|n3 ~=k7B8.%/\1Di:a3=;[j/׶4 i[AiF Qh:prUK^FIiM_Obk,}f= BRZ@Oʔu3h\92FU^ ohR'yst7KU@e̬MJ%Q%*6ñwl^2`v}ԕ]*\@jmgttIPBӏ 9j;佣uB| CJ.&,4q?TVۘDs?i+a”eiF﫽ۂQ7AQ@v. ?d> u7V4o-wcju.&u#l)Zd/Aݖs^aA S5Վȷ?&BI,Ab mb6+H{~,T& G/Ъ jy\陰~4W7ؤ`4!Vau{Xd*ٞvlZ+ѯsa5Gvb L.Hv֞y|p2\3ڍ1A":q_ʾxhQ~S/톺CPy}]`~sqǧ| Z q0L{ea74[B{G N:3tGqbGua05<#gn5an>d7mswtz\Mh+xkL /ce! c$jy6sarSAbXtL VBW{q1cݧ΃6GӵvT_#9KUq@%Е:Xz`^- z毇V0'U`=kWf‹$p 2eR+ S-ؓd)E1b=53lc>5-NbRF=3t B?"T(WWC\$)UՈA;+ay^.m҂ KWp;eq2gMZ~GC;5pW͓T?MjK3넽}B h_3LgbWyuA?~+}+gYF߅ïu݂֐p^#_\)!/,^>.خ'aoo f5yn:h} oh:Uy 302q`xrTɼM2vA:x̰Ŗcm-- @.GO ]ۘ@X?%Qa,G3t@Ǻu4p d7gzBE8Z .+dE7jVid,-P5T ԕA#?FXp)j \9ϪXۚ cCI{y]p̆yncus] 3hf`=1P&LtXC3m(u)(ڕaԭ jNBQMVxj.5x$[ú;0LְN3cɅ])IPsBs%p=ۇ. CD$:h\uhJ*ar /qj憔M2 K߯^̧G@yL_Ձ F*#F7y28jiT鷭_Q@aye̢?zb oߋxGl&!=Ç$W*sr.@M?1pΟ 6ڇ]^a9@sSyq٪bd8][,nF) Yt)>=is96[ =ReZMr+0~;{:P5+;gz6T'>`ɋV`Gig6)z뿋Xcci3 z&}rޏb—1^q32S>0{-QbC [3Nm`mZ@{ :|DC۱b9vAĭG=xE d)q&Ŵ3-5[,YЃУyk/y'͂ mxnj:NH7i+x^bҼ.t*\+aTbꭐ3_t/s*?%zP~ᒀ'q:Yx/O탦-LARB0rA]gº;ihcqqB ݁rsy Ig,8c$ ܸv(|l]n e455J]}vgHjL5kwLЉwP35@xf0{|~?O R{;X!ExJKkR Qց_=Vy׹kyU.lS.5TukϿ!ˍ_4в”Dӣo;x'Ga(i*J1V/`1jR E6|Pp혗FwvOzW0aLjٍmkFrj\#OǸjKlr_ͫ} %z*r5N ~"58ha}hO;Gr>MPf| t'v>h^疋 rA}3 xZM@r' PyMAхiӚL0V ec|]m1;*@@[`O[0N?Vj$5s%0ypl:>O3/BMڔr!tǝb7Sk(뢾ާatt[F?N z l Bon㪘 J)45Z0s:4Hm>yR[ /P dvϹC` q]B^0o+l@Ɣg4-l*+q.G[Y $Ex.ۚA?Yup,,Ձja{N U Yh]j.}6_#,|w +h\u4x>{I"dBō!J? ;nKX}T7-.! _ԋ^SCw1~ b#5 òIU2I672H_J߹-·O+nʿr?pA!8*VȒq|?*R}蠊vg}[]S(RoKїn}öpH!k$)|ݣԓ>2l8z+ ^*ŏUP g/>uTT õH-S\V(=6>$xw%Yf/}C0KBEl#`!,[Nn/qyB3Pva@UUSqC﹗m\E:Gv'L"\J~z)cL>#U󴐏Ԩ &!HC,P^̀KJ_pe3( Lomv{VPH,nڹUrbLZ0~M~WE?} &Y>4 j6b0Y0ɋ]›AE> v"cP9 ^7e0J{B^n3`Hu:&77cƗr%X~_k-= v_R)jZkӁ-!Q93u;D':O&˭LqBӎ̿б 9j ᥁7@?T0 ]X6Mr߰4j:f2UXFVAj/ IW(|>᱓ ދij >|.a?l`ms_b6aR mu+G_ Q;x9Yy",CW6ب QܾA N5W^Isai af ֏lq[OSDTdU1#Ḕ96N`T,qL㸪[gDk>cs+E2{GH{g8$o~)iBV(2: O؅>>]!hcfQKqwF&NhuR0X+#uf :IT?8ZY]>ur#ثC-bMhҋ%V軍_H+bq;\:2oV&+U* = #EorS+X6K& :Įw>oMoPξR% uMLHFˬ xNNdL TVJ6"t{+so mnAa(ayͥ?"OGA*ؘa7Y4m4Ta~{]ެMRj3po[L9r%xP忰-JAf!_$Hc9 +~gOg -% j}D {>;J `m H<~4^9d72UˋZKc*@:ɽ`ŶRh~a]7 މ3ƦB3vtW}M?v dm_J^^8v]m;8#W}PߘSh}\RoZ=z˱_ؼLnh㞃8$Z# D%X=`;Wvy\4ìqly'9%6elj2ǩX.Xvl%HJNΟtMgU:,c;:nsm[.q3?~EMXT!v ;Lv]澴t}ԁm4x`\#; I <]݃{XZQ(W}Xt}Rv},_Ie |m=_:)$FYePj%l\/A?={B0͉1?ԋޓHKD>\t u4~lrWAOah68˕ 6,`CAx2IhXTC-Ӣ0@&1^bXu|^z 4/3/MF.!qCN|,p^)R-[>x {-ddv'c>*bB%RSP&}›ױD:ℷͣ)zoQ[ٯo:Uo]z?bCٝaѷsvv([>NաI|=כ g4q`JN#r`v΅ҏ9ExPۆ'x?o:Lt8:‚OK8ncCQ>l. Xm g<הfG2`ukX޿N¶M[Cؠ>Z6,^Iq_HJ1o鳸%ΘTN0ꃇ 46|x~rSZoed'=A3>½6'`b _^ô96[yU>(ˆCy,H#Vbd:yBa]XU*)`KŸ>ËR+gcރmF=(,}AyHXX3ޭiå׾bwޟ1Mg5zm:hv 4OMke),Pqfbhb fWݭ8:A[au Q|8&#2H*+mj!\_w8Iph*QokG F~8`kC7M+:].Rܸ5P=.p͌$5eŇӽG'8nZu•t?DM]5u >2Cyk+3$`PL2qPY蘍]AaǶpl4d1,k†m]U_Wj{ m+[`OW'ێX@fYՍ岡Kqp{62契VH8%-|pAʟH ;"iT/aЪ2xE 8AmJv32)&pD}[|*#=.XSU;{2\];_(խ; u>Ka<׀˥R% 'x,?V1:wQ^K]e_ћA[ (IWԐzפuvm N'Vս0W17u iy"=FBT፻`{(;JO~eG;/GAPOaZg?e a?tjۥ͝!5X{-]\sP|CaY7Ⴠi|'#$Z/IEE*ߞETЯv_}]&$@S i`V@ UXx{Ow/ \bE,%ȳNJR/| 'eQ'P"v0_cCBECmrzq4xyޟ_]} PJjr\x O)b~$^?]"1bK{R/D0%$CWhjFhk) ]{-q"?qFw1zƵy6rߠs '#\9 dbgֹo6zAlR9@{I4 ^1{g$웱eH*Bc'3/CKzG} oM71Ovǧi1ZʾPU^שhq_M*ެ-@rǭ{*PC"xP #z"?xA_PY\=gq){wV_7FxJTߜO~e, j$ort﹋@Q׺'H42iEiD+ik8; /6AP$M&xfw '>qP3ll;s~D2zpGi@Fi/K< kYN4&󆾗w!dCfp<ȡED023,ҽC TI#r1[{VL#K o Ħɍ~7BmJ9\z:viF~>J|Oc _O尬B)$z]iU g)[#O?ȇf]* .!S& R[AZ7Q3Urޚ+qp’Э.sY4ۦv'5v8?x?ywbly~fSgwa3UG1o4_ioft-X$E / NcPgG/MuJbT5Ӆ(ͱ:ܙWSކ =U!IhN2A'#qh Wۧ҆;1?EdǾ#ĝ" { gPEFZEUE\n .G왍AlӍ9L@ۻ+Ω^_M'lZ6H6,8-y]UZ]d1Ri#dQ9Ye*?/p' (y&KCӠʢ`u<;K!tWW]c#7iN#W,`sLe~GXgjrЎ?P?T- /VfVc'VP-s0*G(iȼ= |w}D9~K}Y^돕}Jqﰳg`nSailtfO7?‖쒸?V);EUXrBxP=1Ȭ$)gfυth檒9qQ#.蒟bvAQC8)p*W{G!$,u7T;VD"_s.Ćn} 7~^|g!Z 3*Yqtsb:霧9DwPQsR jKuA6 KP.dm4!DZdHH]f=9>bk !@W=},CQЙ@9xPoNl[cM"ΟʄnX`75:1Ի宓A;;;Pj3Q j;wtåh 3{@XR*bz5Y#(YtexWտ`ͨPk[qU M Ɠu6A;? `sY5)SLc4年Ƞ\ssNh`6ߪ)\rXr$oA,Ÿl *NZh f.R€dVN(|rW߆* [ȥ LE $S]mUڷ 3.t; 7c:ygi(Yl"g@B, A;Zc\>=|YyCȝ/c\r+(u\d SG*e ΀䳴Dz$HG(s1*|;.< vDv,x-I= :b+4GTwBMv7]pc3T2)NAǹuM:t<5C7"Jcd!^k4OcRӅ P?wl{RSMgxVTf7zB_S[BҵrNPw'`':rw|LGYh7!ZΉR=4ֻjxnYrr?ӝj^GTj:tCڃ+3t1Ymq'޶@kNm=P;A{Y\mFB  ړbjFO4vd2d”f&81A^ER ^ N5ⵞ z̓ׯmdCp6rW|ƨϮ6/O>P9.JחUoAGk tS|o~| OC^ҋ8'Axc1%ѮCl#Z]"|844={6v :ۣ.aje"d(|գ-SZō/ a ߡh+w-Gu:dxZ_Yan-ԋ.R+[gbRxXvĤ#=y]0yBV I]Ie(x$e"_'ǂ@xI{S1~!ם|0FA×.4Έ~x4MOi@w"!,bɻ?1t E7VhH0yuÎϰUKPv&@JdQMJd),*3>w^Ĺ=Vm.m똇oqv $Y.efՖA#}rskOs8BM+K&j 8ym.E_oc䥭IƐPã׶Mq,T94DnV%ϖ㌭>bц寲ZLVE#[a`ڮ2_D;>yέS7 w,wc_qF2, ]hQqe<~йX._cRa/y`d6 T~>M+wtV.Rug566k64Vh\qs=-o%Y_=oIYDmAu`_\euGl}|!5*]TţX8lȻ~aé;-Eg[3?@?j@GQnPo?r _[n URȱP0+pgٰ!O.lu{3¶-1gm fVZP5& Ck,P2憐ZY|# Wt 6;A[jɹ1 P|h9eFMr?0fG\ TNx\Í_gbc-;u?|ώ"X22MdSa8*+ZD$>>˅r 1*k (sµ]r;c\x~w* &3l$}Mj{ie,O% L6ym&sQ YT0= B'IӼ J~EqsCe&kK/T<<&'(F[lw%5ګik r ]с,/ō`5 ԥ Gr>QخK&5BӞ"ֈy/#=!+=#é xpmjMXݞŲx'H*\oB+wpU@a P m+1I6v ,?UKFvg\N oZDQc:*lf_B}\'R헉^7!(z' <3Q#mCe4kuJa[IX~H! ]BΜ]MX4$]:l_`˅^7Ւ- Vꑧ7%PToja_b4WfE_u?$&g c}tӺ{n^N~Wke{f_XY_Q5nk `z*o,)|n(2,f؃ g1X1#l@vU~lɎ+x,CW o!$::=iAtC {ɒd4g,saՓZ ,].BגJ.wbԙ_1ZDzjLic Fxpg_V1=p<73{+d@1OsjmGe{= P=Փ(!U:42=JW^ǎ@vJ}_tv_vCpg&}CW;^{LC,`:=e5_NwtAp.+l\SLƟLYN"wB[+o~-qi?8w=u * յ,BUw_`k3YMzuAn='^CûR,«lqkſ+P*{buSҰaL5= }xT Wiћ7NT2޼e7WVDӽ+||ɳ[tDeǃ_w 4}D18(+ .L-"ڧoX.ĻER[`0I*NnQYorNP, 6 \Aroq o٨+8}bǐ$5dqTu.dHcA^8}﹟X&^Q).έsdַ.廙= :X-:2 ^yx\߄x/®y^I%q~T# 82I /8!`{|Mv'.`!mpC>mx/L։R * S] >]"B&}Xe\p;8y%KKyi>ܒ'E+Ev?|sUl46Vx2:>+*Ud½)\+ߐ|*i.^ʊ4YWF4kDzH|_Q_ Y7%土HDN.Sc{}e\)gDvyvixe\ WaG}U(A` l̶vyl1wQcs8y>BRk0 _ 'w:UqkqcX?h4m.k;zV&EA_;"e_Yg⢂)<[uipQ5A,~ f`SV*@P=ڸfPftAحG ;ηnQÁb,|@+3 >=Sg% E޻PЅ,CQ E%1WYtfHYK0``Ʈ$ί^M9gFKB()6`O<|*1)9m1ɱ XO~i*\~p*讉P7)./~&婖NcxֺVmtL);6$9Ɉ6z^,wC Z9F';v:]4F-&q7_l%'6u8 /cn?Cc } YGF*_5 rLѼlSieo3't)^mH+s{kA -?R?>Kq"@(叅~"Dyꔙ.!:4P]OwZ֖T?d?TzZGQ"-dx|zWjoyVnR7jAn:'tadNSCw[*aM#Pu?`E*吊GgS* )yyc([pL ~j1ޗƨv69Ad;UZxcRd(`ͣ^Nb zqΟ({|V6+o,mn,7vѠƂשma*7LXO n =Nnض{l7gU-\vJS"6ʄ=P<8F8}c(Lf;Ld)Q{R4eh驪RDoХTNYj*PDɡRƟQ+ʌOM_#V:2d!s{dyͯaZ7" '&GCSCsTȇgՑ3иCRu9D]oCsӝcb^SA#£.~\Y OJ2㪷 c]/#gCJj?Z0h,+SS:%EĹuvj,7c)oVuhPakΛʾv'6$r! gE83wrN6T!92rhilg;B9!9g>wZdu( cǒݫr )KVsArl:foɯ$xKVh߂v_LDJ,yr M ogmBx;jy%N 3g9aPcSL ]u֓4uGs9)@}j:zÁ\H=Kt?!CG4P*wBcg `J<{OUuпB$˧^y`0U̽`PT b]޻;<; SJ i;~j6#yN?\ ~6*.OBp?)6}5 y5ھݼ< ~tXgoS*e!c-'?Jľ L4<蒝ׇU2j۫O\,Фv'n=ΞXs j~ድKUƘt,npY5 0wDQc__M0H`Ugh t%+~ > >SZ)?<ꇐ#fE(c9|i{Xu-UL8]4k7tv#ImȍO;t5+}2K5`O6 %-o'^`yǪĞ?@qś:g{4ȺJ7iKZUjSJ{oW) {0cg{T|:f$:' o-0Zp<4)5U2)h9uLh=\w,48qRѣS1xx mGs2VpQfQ"\G|yqF_}"CølP8kj%b$fIm55?@;Joʌ"izqC2ݷ?W!Ge8t'.QWBS|}ŦhpΩټRڻN_վy=-Cl h7*^}<~ f=tż~ifPg2t"OXt3 fD*XFg+VX[2Tnn2%bӖuO5w!ob|8?SMx>t߄a L,Y@L}w<>B(J(TB+#a5JV eYQYñ{ǯ9:y?5a oy0@6R X= cPZ?~^[Nhk?o /ࠝ'-!gIȄG:>bj)g~StNy%rncOaHbvǁb$65sl(z~K=}t[Imbe;XY.|a͡r@ VeDt'!w]|Z> wS0LMLF-'k`5^ 0mSˋza`X:3Z6iAř~)Y t<>h,]OF~@x{DCM f45fm{z3F ~"vqC_X5J.޾3\D -w7p$UPgʻ}ʼ5(RE HM,9g8x=H_~KB͕2Qj(y$n ݹ?߿&|랍aQ6ߋޜOwJ H.[g9uX mBHbi+Ssbb52oT.̄?dwOamdQ+\ uP$1.$CO Qwi7N NZl#q4uWV%$zQv&83_9o05c x(x sg@=wUj}e8-i^;wy@ۣC״ʆ5=Gb!9QО$x=zJJpuyw]rl8F$?U ɀ՝V7+͈mU*-!sAN ^ƌXCoͰ]jXyU0H<2&ؕX!#.BnW\*<#ork>h{5;s(<KkK#/黮 4 "aE֎f FBB< } :\ H(붸0\ug. ŪugV)Ÿ77>0˻8m{:Y8q1\q\|YɎ]>i7c+K/pdtީP\.dV9|Z6#!o^]ʫs_<qFi;y/ fHg<ҒØq<ޞIJt{\"YҜ?/DYNz>/:F@Sc$M}TRk$jC!֪4_ԗpҷJAD37Xwz/ ^-0i:i&xa*'1,> bݙI \=z.==~;eGyŗԹ\ meA5UB"">Ob1Bbl#dW9I%M=OFg].4^/K^0ZE[ecA8sB72wݜh;9tj4?C Pm|GwUJ!_Vw T^ՅQZPHnwcZŶ/]?^6⡁ZbbULŜ#ZJP#rT|N]=]z:+ѕM;9)%QN9w wF$d;?h_Zm[]_dEA9Ʒ6gM^Y.k0T}r]kT#l b40sQ_=u Mo@0N^{asm/,g؋MI^>zv#S ڏO҃q4"B8V ,j}1XԎ>*2È⤟# eGH>f4 %RzHXTaeRM2&YoY>: ;-1Os\&D>n*5Lԥǚ4ɡPPEcJ7=J2cӕ"aN/+4s09 ΂xO>a 1S *Ml ۡ_ } ^_DBblwU(r'qIGlK~DB:ܶc!9Y EԸkYNNbLBaב}rJ)7OQ-: t$KFر{3Y*rxH~M}Cʖ&c&%Urlqraudcaw[Jg;%hVM]GF}2ʳ㶖6hSmBU67Wu4JAZ,()6 V?lw(R4ܼTz}Sg#Q iYg؈I~flm&2`tWjbdUA懇]+Qz:HAQqWPw6?.w# ZH--AكPaŠ]O{M9T ;w|%aPdSt7E-@lm- lVB&AfhKܤbf;<Eb!"(-윺mtb3ehʹhfyF.P|^T$f:0@s0CG8yk~Umeà6#]5pNvkbɔyvrNUP[{Wt>ُE+ o߰Ul}5Le\.T9u3ue6u@.ᑵ ȍN;H/ڍM`P3)hz@bGi.K6[VCЈ RMWwBdBm*s@(V^hx;jXIE?P@;{M%$JBܹeY/ Ҷ3:A^~h`п UyƠa..?%GCs+P;i\\buG\=#\Eu"P$BanWE۵{RL/&k8~ܝ vq\bIN3T[xO샾"ƂeuN;bVҬ%WNWäSPy\, im~ܨwPjZ_Y-ߘKlPz1*eVr}vfN=Ͻ0}*v@PGK հ·E9Xi(Ǽs"e}d ?b'.z}j!+_$I)s:"q[vZ(4CFJ?Y<[i tO 80zMWoAѾ&nNzzb\:˻nu< c!9NduT#'7եy6~P'mk0`1 i+3FNLGrW`[%f) R ̃U패_!3n̔fڟs&1@BC+_ga ū(*OtV";'KUkzgi)'EQϙKl)w6*wBՑfk'P#uO`]^%H衫RH)p+HS&>#ЁE5ϙ0,͌M.~% ϫv1 u^Ph;wW{b^ŗrؖyn^0龅wCQ9* wKaGH'*)m^, *ۊ͒VM\^j$6Ȓ`֒{ ˵CRC;Lo*|zc[GECgl:Ozbֱx|Z~ e*6[E"[;{4VcAXՓı֨|~4 w| z p.= I#%0Cc:ײ B$/b-$S X^?SgG*~emqI6g 0o3,"^|q<C~*\T>d[I 7`Dua@dl$@S{}jEBO+|,ﹼȅgm.x4QA0K꽘'gsw+w.Z1ntU, /BIJMy8/`΀YXv#`S:B^ 83p:x 3Gb}>ZXycIz]];:B#0D 8u,?ܩ 6d?ְ;0J<SЗp?{ I_,<Tr6 ~BS;/š{ZjZ~SY4% r hhS~ʐDŽU- S){w˾ڧҦ"0Ե6Qnk3 ]V0U>Wr?_"y'4QVi'7[ Bx"F_u;o{@c^:SPmB^6^c?S[fW'ͻ`0pIVkv[7]Ճ$w5~@xQu%?[ʋ#Ŷ?3e1&v$g Hļ=ke>w dlHIVA,:l3~C3$KsVK! ܔǦCyiI6cUlI?xi~3yl"VF`|}l:2w7v.ǮƗ>#+~C!yцnsaoTkv$4ӻ b}oPA&#f>8DXT;>5gx xAdJwV&ěNB q2Jg'xR)vlat7s(ytB1h} r oola%c̾!a}gz8Eܷh\}=x/_L]_[O*PA8!1Bdvre%B5H(6V^_T]iй?_aoR~>28Ҩ{ݿ/{)fqfFv-NLҏhMoi:Ȉ3i0)AV 2KaLl,GcU We'BUL}r!yGdoa gҝ;>\v+l\caz{OAZ*(V0qh`rr}edn1R-L}zώr@Ups:w e$/i / %Ux-,]ވ9`L}(=1uH vw49Crg3KU,"xDz4(r(dҩ+.VۨTŠo*)f%ަH&҉51,Is1 ~^jΦƃ1@o{~`!+cI!ĩOH 01uZ(g%ƪ}BšiZԾX  tZ <> D.;+JcCvz5oo*S O\6٪*u>]>"aoJԠM0y=ߧX3%BPbu>Q *PS4>:2v]60~<kj7!^mN"&]z,?SCs|TMj#ʓг$>[8 {/k{ 0ӄ9j6 l-ie]hRDK*4ZLB;*R}~r6WJ|j66@i:qkpYо|~A ӗ9u;3:OElJz)>g骰Yb|W؛lyLY`n;7ء[gՇ`_٠՚5&|B΍ С)˷'Ń|O!~ұ_(_ɇs%(n~f>ppc߽NڇMJs\wX|4c־: 9z#59H~7z<; i^\sBG1ۈGQiS:eA [h_/|Ղ*zBRcM7BɆ hc'\X94Ix'_=,oS [~mhc(4`bGVp_*fd*lDZ7j9Q8qg$WqMk G.V,:!\h첍iifƞO@~jxaJk}qKwE12$ C([Y-gtz\a;"J q4cL{,gSۄщ,jqKzT Bs,/:T]!i-=)03:bsEd3A) $\mL{6OF@?e ̇BaMf q ,@b3PB9!u9 "bG_"q|*"Ru>DYO.~ֵ;-ͥB֐{Ku&iI7RB!E}L|U O4L;4i3u翘Ab5o^@ Bw䍢K-iÆ%R5Ҕ;{o˕1kx+ @Ws]D`F5<] {Sf'tV D6hߦq,Cr2*(g06i(,tRh!׻ %L}z5 v|˧xȽyrPU!˻Zq8(Ogxom ˎGp@dr%G&y/_cL,bu{/q$4bT!泟o0Z5x;_±"L)Nܻk&`@kl;=:8-$Teub}eك#QݯÎGsk\7ʿuv::.B)HAj3~f--VJ V$_ǚ4TN~wWLY :S|6unbr΅b+fΨ _[›?*7.S.e&Pyڒ@:Q'zXەq5X}g(;oj=OASY1a}g•bqLNm‰95pXg.!yy!Ŝ@vGKb0-5װ!54ܯEVzmO%1/H(Q%v4I*b 5/&l.ȹg[7NQG:n0^Ħj\NI(. v| E7bۨ Gy8%\€}/z3ġ}B5(5|}(d چ?gsj7tG4[مzQBXW!#~5 2d?b^vR)~}N FeN ;ً2rX)k惵le! nL@-ǡG(h{$N2q6+K.;Lm8$[ksƋLc`yt'ڄ{&- XE1$<  p/&v:(FvkKg[ >- 뱁wkɏ lraZQ?'&!S[sX'D4vkW^t1;|֒&qlPgy̌W%CO vQ]Z bT +bN)})يt;8au}#F41vGgY |:C0ᱩ6 N֬ZLT(;zd̤d4L^&x)wlq7t7=Io SVLXL='q\C$췯̆巗hC/Ð'P!Ɠ-{7X!<,6f/V=yB]/c[sRc)0Bo>||V ZQCM}q-!Xz0cN0sX)qÁkX̼QipPS 'OW eK=zBHIn!X\ñ}#;i$p\+UO, a~ ;7NQ:jtvK} ~RG¸>o<<^"󈌊QMq6nsFrxj`` ba T*0bVGÐd !P='5_Pb5pA\v6'gpCF}\xqt1KTD8PipfMCJԐKǡe}w iLZ&8\+8s rQ?Wk?3kaXr#5V15@[E6*H6s&nWu>J,5; _51w9 $13rT qT;x% C> aGAƖcXTw(F|wX[uv?NzfV'<)vg"Pk)bKHa՗6?5(XaK Lsֿaj2H|x Q>Ǯ9PKŸ^je,$pM9#H c%S3ޛ(ך=,WqA& - T< ^\sGS%!q{ Vp%?;c-wjN@ 33&g^~Exge|fhRx}.gK(SNNd-M 2D0,$c#~~ M=) 27i"U42ҔEnaW(o|jGx\%+TM9rA)7aMǡkL[F"F8OLֆBA!Ef5ӴzHݾ㳘a(E9gr܃Q[7S[ }:n_} f(|Dؽ&yQp_e`'gƁ[~j8|8J]EGi-?aG${͍4zp:+ohɍTSڛZ9cmN+êh٫EPdr`W6Zq?U4ƽY1 4.ѾP+Щ3I;Fs]J&Oj%1h%Vw:%}5 Ozj J0sH[&R3AOд{H^4[wM_X(/^W:Ű Pr 32lL_jbόlhLXv]A Grq>md ጽ|z;DYW>Y;KM2h)d7ZB/soTؕ}YFf*]~qP K׭upsv~mO/+ ~z q{`Dpp>j gQ&."-P;T[ϝ\[]]+ei.RbkHbE(uy}W:2}%G2ߥ9(VzC9lsCOI!&r -vFۂM ]&XsooR#(ɗgz/{ _2dUV\[5_/E匎~w>M1-%-Df0"pپPh?uIu!P[! SjiV 0RUf}/~yKT_qs o"} p 3Xʞ49^r,aM_ɚ4P ra*u 4r9Rc=Qx|< ?Ka)O%4 L=SR`7*Tȏ]V44kݵkjİt"}on\6~ErAnwJ/&wayG1fԕP,ff'.rʫ㷌Kq Α|&\Hn mi}?gWbڶ+%Sw*Dh ѣdάf Ði\֞ Zt;·0{B┍̞aјX9 5wEArMDqAwM(<-5z+T#y))hB),oH=`"ݵtD9tԬ`Wp˻ɮн;_/?ogVLb>Ϳ"g[%8(z[aw#0ؗ1[ǟv;\V}/ZU)%\/F{~YP80{D*P]p<1pa,E+d|'z WǴ h8Rcժ-SZ碱[E2}B-e, )g\]#߰$p/ nbkH=}ܬ))]$I{w7%FWQ֯"_<.OYi.gϋ>:52 =hF2^)(t rAQu ה\B}T#Wy!(1>^0~ {~eHֶ|UM{j0Sk5o"["eLt9eH7ZO+4݋}x wSCbDV k5Ot(C,"G#w\R(C":)4@錎Ø:ȅ?c¯az}Ъ"՟ gBTBi8>Fd7Q ~I0g`Ag9%6N3wF|#U&;&>kx}e/C9aicʙ$K:y]yW<$0 c=vq#y`1Or_BA\F5WVK+ nEg8ACM 7~ ?+oɆ|sb P5PFQI]N :jt0c): HKEcf냅t}d'B=k:^zmo޻PzP@cfEe'{Pj,{IZ&E~j>V ԩd%)JG 6OPэE2i~cҫRLw%'+f$VUhy,}zc6b$͟iv bI :U_1¾bɃ{okJ!%h7mHtt !|TK˿=gϚ:@dcT5(9W.z1ւK!'Epp3 v9ڃTFK,5m2c{z :i;D/@TĒ=9a.bd*qݏlyj0,[ǨΏ6 otD}JyՊyW=ǁIF~S2x;8J%*UYLfm}O;b 蓜ep#dJCV xJ1ʏ>mMfRL;t6 +)3pL>j7A% v媋myiV[bׁlj+Lhm?3iJWȂ-Ȑ( efNv1/ѩ-L!?{)f+ʟ+C8urx+|Y_1( L޲~,MjL}x©R9=.ŨOF`ٚ@v(:e 7+!d=G2(`{c ߾L #.]=~?0Gփxuox-FBpGHanwޝ#67''B· PzC67/i]">}I#@4sEZE=:Z Gnuc : Z7-nKA"Khb z{&Oco"~_n6cݺ~^Y'?b  7LEL VTr+,M*obmX@clTqt7FC.vnZLl*dA yog:$,Zޤ -A96C'cUtK sU/S`rASFʅ/0V+QcW?jZƎnAh:tsE}3V,MM* Y'., Wa J7W|G6f굳,`|Zhm†A`_V(GfG?}uE? Z'v§i$J TBMSC})3X:M}=; "sW_.R9/}XOv}J^$UA߰̽tܙ4ĊdzX!\M%Of߄$tci.,?l4K@&k1E>rxR@K`Ǐ9hL5_l&]{xw6we3skݹ袰i Xlp߆[5j#bOQ؏GRTrhw|[A^(^\n#!I)G2dtjB-͓W&mh̖Jq'7.7'ϗ)?R XG aLl3^rοFe whwb=l)rv*?U(d,nXPnKrŵب` 3IdDz3<=p+cpz f#KL%f{eM]W/c[R8v*d@׵ܦ )$&3vOzwd2Axuϐ1g#b[p%x%{ ^&!˰d!h ҌC"eia~A=*?'qL )ݓzt^>ϰJ27 .@T@tKwvFw$#^|Hp6\2 < OOz_NQƑ"OuTTqT÷Aԋ*ceVH#ʒ/[MXKʷa};$vʟؾcqRCL*b6hƂ2G&z~UsT%!FMr> MưNcʨ-}\?-S= 8fCb o$t׏HX~e`cfAMA"(yt%{ڣ/[r8@:=@w U%D. ͷ}hߓFZh5kn `- ya}\#O՝DzaW-26?|R^4/gy B#ݾui hG .qzz;3h1ƼC]qvRJt z& h}p ?~! S=3dNh90iZ5Q KBT$3wRDXȽ*HJBf6Qt/m4>TosjzDŽwُ0oPbؿ7swZT lvص2~Et\Ÿm /׋۠4A;Sv P|v jXHR|;|eZ~1kіFAګlh ixF-fyPsj`rk!ͰYwd8 %&lKX^גLJČk !mg,[X]W[A#h=0ח:9,F=J;|LPr1') N|i,#>b'h*O} ͟R둌\%7CY2C0 ܷssP1|N^K 5l/CSݥіtP4-Gb:W?ׄeSkP"|[%,.m{Taַ7]7԰_}u]p_,Wzn!-p.Ռy"+iMOAߒ6OÌR&=36s'q!:tC/zog=aiw!quvX9?Pghc#X71ΆE֖[t{70j]e%$)& B"XtX3 56@E@7ҏڱ]?NX͓Eo\tĈVT6Px]%iC382eG?V7_~}1i)z&q%@-R}i>P,W<>F 3.y`ūǎŰ(@z^en?|u8MYK~ov t'*}XqR|HƧ.aMyr?}NJW0^m_In]Tk83SIMR8uҞYVC_Ze;W8sPdF4N_u>A*-ȋ((|1;F_&TVHkܣ=F[$pd:ʄ=`s> ˙h<1'l"|bqצjAs:Al-D&_ NQ,>z; -$ y1w|Ďg  )Nٹ2lr.~_M'JHbeTd<;n_tqFۢ2v[5#ǻ H5*H($n.v+B8; oYF^ aW-M4 qA/ʶseqv^Oe*YG#۫6J{cS/Y1\MROg"{c >Ub>;,lIF۲l4/n?1XQ|`f+C3ggߡtQ,*9ɒ.A1ᵐbdh5́[+g2>5Dە}L8zm] { >qO_7PL1`pS/tkKZgŌXqZ'Ju ,fȰ٫3pM$in K0tL&Ekr eGfw/*vqDn,KP =.!q2$ C tOca byDsZ`>h0z8j?grR%8sBwјtO32YUOϕ ֘\; /1oQR@;48*㬶Hn1& &!&aB,kFlj 7z~wB|{R2dz f,a銣D {2$,R{7^VPv9S zꭰ`d8HmvTb1eD7t~k n1%GBTe\vMc+=7=MW$ SicnSnL;F&Fʯ`}x?~fcڵ. i,69jޔ@[]fX4jPe>E EZ#/0nNh&UA7 Cw ?Faɚ8il.ouO Eli=%$5D^w!/,(>ׂpz< 9sg'HT!)pkGh|6cp'vDgbb{vQQ#^%O_cxKÕ/<<7]p޺G1 6=X \Y?}z?X>pxaQ52S1RX5F+ Gο<V `Q cت Ҩ )Bfm S:~jTu=/ZO&%&Qv8ڼߕpؐ68ާα.WPz˧chF.Ŝ651*qv<ڳMQZ.w9uJ$NRU\۫䂢2w5ژGm u<[yx*PNQjbNRizde~섮>{ⰛRT>liɺSϓ'|>b*!l/mE5 &_lrdL]h=J U!b[/ϛi7 =.<uA[R~\:U$?͊K~?sAc9qQF/{N_pqbCR%{X reu> Fy}p5"e@>uu@h׺"_r'm/^N[ՠ!v=Жᠤ#sfi.+lɅə:fGb7e#%=5Ǻ0|mY2S\"3M'g ,ȉ˅fBOc̽.?S*qHe-ko*]H0*ѩ h:>CI}Y??\l_Zϰϛ]9IT=tz.-эxPf֣`ИM,̳Bҗš0ǰ2M^~5]GS/ږ Pn]5Fxe6C-|V?6( >Ŕk,Հ=!K5wlFJc+/ߤ}$VUwq*Uaf$%"|XnE>,rCY9\>ClSP)!7]m Yy 8]f֛!ƴ::x!r=Iȵ7C*X?8(@rB#8 չev<윱:l4.;5w|}RqXKGX.Hx] U^ ->8NAǸCP$m;S[YUOhaLL!V*i<-7:E-n͏\?ˉsJsG?UɁ(i+Z)K(H #A%]{_c7 of/Yy&I"ުvI5_ R\ǂO}%^WI *Ch~ʛW@Bv"h)ASњl0~1H J _ٜct}8u#l Q0y' |iǯᐈgyt/6Iv]1 FM?A)T(QHe5X4& :P8 ފs1GXCROXI;S# ?+ëגѣ,Al}On6QrL; ~Rߖ3ڇɘهQMFAױȥ[X][ 9ߒ8_r`fC|G`0^K!>|qѩ wC dyg5C vR!m_b?)AkkD?=;1u99 bsZsh/yf5A1.# fP%1+]aؿҫg,rrե9k!DhS=XQL-_2l$5R ߍ],fIS)ZJ vqV׵AڮA l%y(Q'OcoXN>C@Ɖt1"XwbERN߈63KU}>eq,)XNB%[5+^aZF, ̃όArǰ<|:]ʣ;gڇIp~C8'9.x-jSX*c'~sht*)iVjs BM"x$ƭnzu#ᚠZQҟ1b(|.R ujs7hL^>fr%2!H6 g8gKZ$-G@v0 916ph,4~qG $qp {9m6EYIcXG2T9|7 2M u u5p //k"IG|ş >r,rrJJi[.<"ErK2\8!q4<,]jʟqspءlUWphPy-?VF3nk@p3H~5.hAT]' /'@c}/H"o>C7:mSB!'ΊPF*EQn)=*Q.A>I^ttGderC\V}?MeGJ<z U{WyCaRun rPA&)(}zAJ;Nk ,:Bxo>4|y6j i7uP+&]j^< j[u7,k8 9|K kl_`[ 0rm*I|["jǃvG'8rTy3w.\}ٕE؆$b.i9 cPN>:)}2`DLR8SxMov 4&jq29:n-8}L{Dy`Xp.5hDWam6/+$*_=u7΋܀5C\P>|DG%=ϰ:} ] ߤ = RX$۶)Cw&]#qة2󒯏ݶ y {ȆɯMY_w7k;ycxsh]I2Hwݺ<[5څW)Lz!UgCQhVrԋ{,k@;{h>rY^f#^H3)vP3\؆֣1h|_/aW/׳hBPDѡ ^H͈HktNq:^,C*Out CO{V6`DåF$G W^qQQ'AkϴQ(b2qS lBߠOWB7{@ðL/{P?䃡=?-=w-quW߱8B)O7;z00uQ94c)~:p7EWWYrAx#9v-z.Em_BҵR9h_6 @4o 4ͫbyѷ%49{}8u(BQנ[#HJ(:@g^Fz~ȰT.Yf wS |QG!ǸC&PP\3k\Ҍ!jl@V= d~S r]¤ߧ&oOA?+;IB n4V O9 CBۍEJMey?;U9T[3Ё#=f//cƏQ52H>68H!oҊcw?T1Vak5o+ Ԟd}!nX8Um#~SŅDx񷜋4N.yD0Ǎ)t-\.0#yǕBp;6[/%YE:;oR3W4;?ۏcgpƽi\N13W^bU_Ugk,xS6;:Im œBסjYn"twcH QGh2jA'J718;qj_],Z cLMP}t-G8X|1ҿj4S'yT!]l[ynUȍ̦oUVS*1dQ:Ǐ&c+8%M[Ѝ=koHc`]8̴|3J_ (Lx- LX㱺]4-.f@Av (, -у&2mZHlsa݃rn% eSjEc/A\둖D^e//_NbrX̠I*lMH!Ò#e鋟_aTjXen]͵^n#L["Oebyi)\H%MX8 /_oI#ÚE`#Nn;rCͱGM P-\6V#iE2sfR̛.~XX wyzd.olʈM9^tZBj"~bָ N!LTs;ծB6BK%tez~X b7M7ۏ>@) z Îd/vU] hTϻm|l5s;iLĂ͠{77ۛ3g0 S;/1k*l.r Lu/KBO7C׳t}ju9nؘj+k-sأ|SQ|/Z 6g0aca^~N'ݧ>HЭ$֎Xc xw>6gCg& [1|4.u1#QU ?So{Ӭ~ v(/oGɍ(bB>vW.ZJ蔁x@Τjș;õj{zb-DhT+cS5p3'ՕB@k'f9?0J}PʽHm%·@ cs,}L HB[d`T*(呜Mv@eV3W>ZG/r12 ?J:tiBɕ~q^I*h.A) 1G[(d6hiI~', Llz/gbkМy-(=L9lsy`W/AGq-+=%EZ?,ݕxC p )~)V<)6;9ΫEUXԭREOA}g10c?gUm+D\H]d veal)H|mkmiBG)@Ke ,on҄ӔYŢ/sJG RxA9?9&.f}8[_\rM:8(}yʍvŸL˟ʧ-]O&%{E?yNu/!S};jEvGaLJIG<adcM~>/sHG0:M-OkŽ ` ;?_ (V!Z`'mb8'<[rq (jc =^Q[.pG]qжEyJs3t*CS;jV($fL/\x`{B&& Y␎kˠޫชU-41?qYlk 6^6@#YG:z&dYra;?H^v =4XƂ+-1ܞkxJ;֗d-_6!hd.CҨćq}$OH# s =x3՝Gԃ0#`2{)>.IrE<4΍$o1q5TVi[het~h|V3 mؤ.g?TMj!;Sq2ʚ7pK+9i\~M<)( AKyPqE_O+6QV_uғ`ő) ejooB8֓6*iGsM5/Jay/~k߰LނQ0/4<JWW1 !֤lK`o+J4BsW]9OB9b?teʽu;OyMOQcLhė?cNntPxQ=dr 7m6P]Go <gQ$({n|b>n1P{~xF)jK@}r(k9\^TbXhrar6HpO-ƆOtfc午YzL'cĐ+lrr X"2z2Z799a/ȱ̺oX+jcQ'↓DׇsO 0; -HFbv8k) /.S4PI%suPdOBXY [XVV{yʙe7QǁNJ2Wjc9 bU'ޞڸ?EBu* KLY}ìkW][? qxMjH:3RrCg@3ǝQL:(;φa:lx]U[QG0.Pe˗ Oalo+J~t싢I%9Z}|Ɣ2~BH=AKO{KMHŁ^Gi&icx{<|JJs>-潘~-Ӣ$0T7p?|J_އ:/a IS討'K.9k 1oI&C^?^VP٠]P,;6^R?U[i?Đ4t>)iKwŠI+P-;6ȿ#qބ֝)!<)Ēߢ's[bN,}L^bdὓS&!wGM9V} oS:BRXcWJӑ}^U&G3vۡ@pN:KAfX5qh u, ԏe`ۏcqz[m+t^3u)g%o!m"5$,WB >~џS496!"kHSsU6c*chiNTη*-kO*-vZ?T+|;R8F+>+MW?[ZUx }.tNƎ*nP2JOe}vzA˨PŖH%[┘9ΎUwoixcӥ)I,ʆNxcGs!WPY If,]$MR9I!S:@s;UhBbV=?sto}b%HbwIU%NVfHp^_ea,ߠdl"k^@/;޶9bI+ Y][Q#i*RRZA V9|eEg ;Kcp~A:w{DhYihZX `>9o(9ms%,jE3H2 &O-0l)TѭhG6uPz.{=#4 ML,PC4, )H+BEH|8]o#Qç@)_L84lpopVv1r:&M*M]ӄP_M.{ ư }3X,яszg #rBqXSbk Py DPtJm7N8-c R>ߠ;,ⱟ1Tp8B4*R@͟dLP2Oa{3sFt\3f!-KT47Ѝ2>䁴.h/ۀ4 ʉt'UUVzf\vǸK,^NI*b ǖoz*`eȬ&=ΪJ!?"M ;tS_l#)G)Ay.pcT%Xw)d4\ laE05NV0%+Ɩıg|ҙ&s}2ndcn(lm}ƍߜ}qD83:p= ;Na[_Vr?|'y2c;Ïl߰L$QƘIaIk//l"xi% bzޖΧMC~#l6OW\W{4_:Q$Sد(N9+~5q%8,Dsz[Žɐ`s츜˥ 8T37~bcϢi!%onHc2?#Jd2f*&g2nRrj1,;!4^#._/rnB93H"(p_^:EKkϲbdU!8w:MB4Cb̽7>Bn;tcJ֘])݈P HU<9 -9"捽Pb嘞' mhg [lOHw~q4? Us zInLqS6*Bca1H%HR;mB5nzu) Q; om~('Ga}k٪v$`4}{ _5˺#:-$:`ZA{ ;tf;`hh&XBE?y?*BˌѫL0F=^u;v(:W# X305is 8c)@ yGwxjNC4Y>m_ QShog/JMu#vi2bF~h>ZԁukB`*5d ރ.Ͽ]nHc3*P%\Sezo4zI^kJ{n;%(|$0+-kA/OQxH] 1&s%@%Dҥ qߦStX a#Å;W^/U%jMTxm0W:n{?u^(ɡku(eCびFvTѤDZ"UuYᾄ!HZհa=P|u} o}$?X۽pƸADE.pfiC+%lx&ysQUb8,DdĀߌ`7'q).a!AI@8ž=z.`jO8t37q `E[0l==;.˯ꛥl0t7KWi=*ȿ^t2+>Iۏ@ߙȎ,Af6?bB%}[f |(`OHRrp'.y8tS۞?ZiHd1}[i~=?jJԨ.bv5eLYHZt񻛇M$Ȍl91l`x>k >c6-*y2f۴.bOU^0v%S dka]{I$fb2/L+{Z $y ͮ%"#ހL3kᦿ]bUYw#-,9tQ#cםH[!!c=,Uf|de`K]*G쩎|M_]7n.'BáGe#`pm.̦vfפ۠r[dl>CK<*]&c0H Oˎi?J>GM*qGr>G6dnb0̴9s-'rNB}[Ԫ~ڽP!uXH q'B[36r;wfs@^-il]Ֆ6"8T<&ywW %T@Uȟ&틂"1)Ki,.lyr~t˞ҺGOOy/ƺ!%`'8]L~HmK5uXJ+ds1tG n2TЕj3/VVx>rUa&ӃwN U?ܢcjXs|qԟl2OfD4 >3s?'r1ۿ3Zr&j?"Cz EC}#ZR_4 04.c{9=3u3{ak񳘜ndOՖ3ed.]6>ο>EЕG .I(1uv-/gluٿI1a8ooƿꍫS|8TpmCN*nv/#}}=տJ| 569o"ִƱDucql#BcG<|ϧ.*R Q8OPߚ]+nyrl}&-%: ka!;D4> yld[83&{O$;jfK΢C@@yNC(;m5dWxDۏa֓Shtz>s}Zn&B**7-~~e޷|ҫDE[H Iu[c{0rvB^FC[!}TkfI_ڍ!Qڢ3T|},+kpITg2Mz1ǘ?.|MW)p]fw™K`L%u*且y . O4cӕРJ^S,K[n=Ѓ_rב鱲=>KtOO}BO`=60]_~xkBiql%;:~:#0y1'|+W.8ubn_[l4 WdcK V/)Q nk@q!Sܤ:M7vR4\g,fsIS> A4.rm(Y­3CME%jwNzde>F~ܾ}.򈟮siJǟ:+GSP` tJ]z'&A3 {y"+qF_ln}'K3X*Kuԙelk&t++3iSDŽOf0Oc1WhyEj].ɑ/ުNb#q|Shj>~viwaB5"D JBcNRAdZl4]o{Mʥ8/B~'/[jYHa:$] 1Ħ![+juh< xdwA J ~x94yK9,sZ{رdaU5+Jkƥ50S-c/+vֱNJvɇ","Tx\i݄7~V$6 $`CӺL!O.<g')1kMGPSun *tcҏ 8@22H;ՃT(ѻ 1S]I]OiF|8_ixތ_QByCMo;6S>p> ޿#˰8bQlT 5ߍjȹ6[Fod0dURbTv}XVpEt)mްaGMle,ߑqלpXl=4#Id4`U7fIOHZ>Wx 4OsLϞ'֘ۦt'N4TDmC 9G˚}m8$̈́KauyS S=n=eW`@@RM`5Oi?⤦F*kk֝S%ʼn~Xqhwud/b(,?ԭjLcY 5-=i{ya~k49tM :|_oCG^0p֠#z& Z8x'}PYcI!h9K.-g oOF%qO_HG /u^M,NkouwopA=fW%;^C7[fPBh6e:x&WC%q=?QCT%~q\5ӇPMx'%&"#1&g=)@ U,ҒB\uP4ճrt,%EA}FJ޷h@mVS1:K*G-b^ ̝!(ߒjA»ܒP.z:)l>$p3`ҕ0bݵ^vj=7};- s嘎cRx>A=C͍Ps6˭mˮͥ|?Nrì\ozqXUZwN_"cAjBA^IԌ%6hxG?2@s1 R r{j҄`[|}(.de*3ƙRL|H׹9 *_O|uך{*B_!hˉ  딪/h`k+:[{(D.7l欗9f*GeyӘNJ9&~C[(|ЀPU&RXd_? _$eN}|+ǒ[*{xYjNcE ZrQy}S7oZhA{8 i'/_&=)K[ؤDN '>^y*3(7T,L6"6i>t *I467ˏV161ǘg+,Tۅxtp7VJ`R s2X?XSÁmwft]K{}$ӹNT Ac\ʧMaWٻ#Xk^n%ܢNXc7-LS,㗿Pr]C5kd۰$tR}K,_uD&Ill ַ7;#8s +vE5Z0T&@lE\b{GB7-Um^]]/?|E80{5%x5%ņaOA 6󜃑:J쬸kwl}ͱEL3[$)r<òds_z]@uB*~9Ŋo$bZ`ՓtKcإov .,c lX-g\ cߞV3AryIՆWCU{ǚAj[уUvڹܰt#d鞏 IK*7Ɯ?ǎ$bêΥ:!?ԴNc9Ă'I+ ˹ǿh#Wש0;>:sE3L]<674\͊ߘarGEEavCbOv{>&oMIBhJ`BQyOi̮K a4 [ͪZ6O.O 7o瘗p\4YO7b7@فzh6HGI=%񝨖%q\XaTַ-,v-RpB G)Й)e(u*(8ŵnAZD6d/KCw\q=vSGW }킸&sZ婻{|tu_YRĢ_hŶ=6;/>3 9UتFu]/O<'P& 2. ):.'(-!{[[|oAk&g`Q2 G6s9CURl":d8M 59ރ:AiHw@BͿM~<ˢ._wM'GA h DnDv"k+0D"~!QI:M z--b^_POLvXŠ~R/5*f*sC0G_V8779Bn$giAXd4L.ƒ#װ㢘vq[مagX4R fՁ ^o{v._c&^ab#kgrFd?V 3(Gx=йuGc{03,%z 7lu9IeאiB:1%¤]&_J] w8aLhWQgő8T_É/g [ɮ)|"~f>E@m=xNVVLc~d(v><iR`Hrd`Z%a*U8oRr?͛.לyOw4d̓;pi(19?~QS-/( 8v0OW5.]s]D1 A}7G 2VCL X`P#/&u@ ZWV$l&v=l.s#Kbߗsv`oig'&;^~ 9yfGrǠG }:}J(ϕ8rAЅ$ \bEMS)&" %Ir>GϛIuvI.})s7xj c 81='}&G[KI7yrIӿaϱۺBٍܷ{ 6 OGq+ #=4^(:Y8YKؘ-N:{u޼ٓcփ "^o]\X_2igkMoIKL{X9BSay_떖QVHjobdl&l9_<? |nIVAC/J}= :;O Ӂ -\~ ʦER?⤯  )ŶQcSN)F7\xp:/R>aVq8_?|+[ޫ1|p;7-m[kگY4ZvۗhޖG X2CM204L. mRe1cg Pq॑L t [k>R -Ev05Wكe3sK2eEwP"} &)/ lȥrlrDBcCTHRbfd9=J _ut] ߁zPM'8UEJkkaFh9~&ZPj? 'bʗSbï@gT }37?%oއxj7+ǿSUD^3P}*79 8:kX.*\%)çP`š]ՏCR5Pm5xepe>y%7Y,Ik(-UPz-O.O >]-O&zCbP]cmri$BU9(UzEخ̇!]XWsʘrM(U  7bI'}܎w< []KzUēɀ !d^P~JQ8Tٚ37#_^#T{(_H~GVw!(^RZC)[60(#29[ !]8 %92.r8 @uY8!XUb]*g(ɦ_ d YfL}L~\Rg?7*c]C?ycYi[ 1U.x[J ?0aҨ|B^ ah^3aeZ잣\2W~4TҐm/VB|97SpG3i} pO/nwց\8Mz8gד8}υ/{kB %3X#~$ V5;Be`{/g0 ~9CO\#B4P}Ŷ,fn\ M|oYÈC~{uF3bPܼ!grVc14J3AW[rJvx몸E@TР:(q btv*BaG?I9*2B .f΄ɐpΜB/e(q%_(#x}w]g{k2:FJV - zΌ`caoA{Rݶ363#qP u/6c{bD'ٔ47I6yj ;C%`S.m6JkH`g9xX;φ*L+Q O gq}jE\V.|?pv7 e/lop;n˱̏b۷mpm]8"1_Hlԡ W2:ԇ+ \*"r_.q\ox̷şl=6 pdxgtA~`w'v[(:ie:6nw1jH1n[d8jBEKk1Iu ޒKʷ**,B :=ۼn֯^ߡ{%.=>|Vɡ=2y=LRv;nEzAݯeFg!NjR"z3ϗcwO!QSA21 Kg+1l5'wUn+E>2^9GQ2%k%WC:at{tD^:@6v,utJ;Ag~BKVuֹf◛Rf|_<,>г$)GTBYh!kfy3PeB%->D~0K- tԭj Nk,=B-Hѝe3O^L7bTHnY,V«kXyety;xyc đStV±_[;޴%Ib>_m'J Uy{|Tq\y8^Lk;:C Qc7ygO5Oq3)ɥJcE>ÍqvI qiO{Mwzu3Z &w[x*!B_?b*A|~E2]XDw(#p]6HM;9'ɉOEA STV6a:xӝݎAP_MT-=U/K8~ /:`ӿ UA\QHrt갏p98*g:6[^ eG1nl.0rrI[;h:~z¾d}C"$z\i0xCgHe]5%%ԆCs`ɩL~eHȨ\&r>Ւ_m)|sl\t&b"ޏ2.۵FӰ.g3fw;b5+{X;g0 ~ {n_hIؼ5omZz%9%LF `O3y=dj2mhwJ&tk=̎0G4A(f56 XS!K&hqrs4b2 yW’ҁ]O# %C0%q+T:K|ˤA'{dtu[{tD s(lbi U#E)c%~d1eo]@?'<ߋg3A?ѩEW&{SLЗoD" QPW04$ąoo{=B;3SwUPd{ b3 7BtCJ0ްo #əqE0^ as}Qgr%w]EYQՇV>0C5NJp)v'ȟ{_cYֽ'#1wE1lq$D`eW?lszϝ &㶱1Y̻>Ď|?x.%.uIH_a Gڰ]j7k{ZUs-"Vm._BWLoKd7O%‚6U_n, 8#oM}+*BৱدGpsv\.Li>3wEq1V}K jf6dT/{_sn_)r]^ =╤'dm2&g jjL m\ZfL3FɜycPUs)w}dKgn@E94;~قB a%> Z%l毶82F.gAWGJWZA&&@P-bz h V.%v Z i8t_A`&9vO;W%X+TLVzM 8CSSqd q=W_CNf7q):#Vwg[Z._[%x\]$ZT6G[OoŢ'̱WΓ2&RX](t= s^EqP㘛R:~a}= 9忈z1+lwIg[Cwf+&q()I7CnX2bRxm*6Q8*\{;&Wt0(w?K`!ú'GDcDw +ޑ2if L|W.B5XB}jLƤqW>*<-.\^¢nC}}Y|Lk.˧9aT{㏫n^qB/h:o"X}K]5kqSooKhs(te\د܃ /,ڍt;lv2z-u(|uK,Jn'z.uO֑w w[PAT)jAhxKfSh6q;J7v!͕zg7IE~;@{4]J(|.65Q byXjb [.Q `*W[XYxGXbxRȬ9v 8D_ßV!Ǥ&tZtD~pW-}`XRʫXn@ Us=Ų*$/h5FF>܅]pEKV8˿-ŠW29zqL~Gee'ya^)A/y2}553ddDq, W\SӖ[ vE23^<õprKI' [a?إwŖj]xex+_9ݠ$$H!, yu}IN|Ʃ#6s|гhM~VBk<4V cn* ߌ8E8-COnp;lrmbr覇/9斚EU{St>މ2!% #t4ɷ[Wֲ)I{?y2PI 1յ,dr'DB?J%B/Z9(+@k0>~a|/_tkZTSƱCRR[TSb6mP"\0y8C TKgq&^ غ->;"F~5B Ks[C5_'+BX&'xoJ ~?o\AZnXVjeY W)_$SQhYկUbDQi Pzj4}NY>e^هl–x㯞/d=%TyɚTQb!Ft)9?$bghWtCOE#jY]me~"cn}L>yկرU ELRsyԮ'l-Ty-mFAvƪw(S/nۇxμ8"P*//D)v> -oG3 8ˮ> 1s w,g6< dyD5uv }ߔij'> $e~<?wD%*9. uzILܪy%FBoqEX{^z'N6h؛]"Cvxн:h3|$va}<Y>?-lWՌ WiH;UHn:v ># *XH v_bSU7|ޕAŒ'b~P5Pt Ⱥ0k 5u(W`u]F0oj Ȯ{Pڞ?jscY+ ?`AǼ4ֆKl]\"f>֍eψ@ˉk 򚸷<^"Ƚ[i&Q;tU$ ,<;j7?NA'%*#U۪v{B#KX=|&ySLz'xC:F\_-o!d&{U2CwA0})Zw?uCdjսGJ/+KQ][_`>U #d}ظn#F5;!gzXNJ`a/G0%R4ˑM)v.,*.Z;m%CC.y̫ s #/ӫ0M4`]00 L?`,$\\aKB5*Z~u؂O[UUja EdW7p{29j,Bh:8aJr)ܭΛ<- -Oԝֻ>2{9ZR S*1ΆSnL!*b ]3Ɲq4\4zh/vfqtL{lYsęRwi 6=*V9yjǤPPFWqz͌:oҼÛd׏`ͫHX1㧫5JT˲7qfm!wuQ/߱v8Xso\]=} hpYڏSpp#f}qC g2Ppi=O'ya<~%H2Pۙ:w1~JMb <3D5Nۮm+ӫt 6s[EGBݡYY-bpͭ'g0a wWM_CD>B)K4[{hCw4'&iɚL(- $w0^q;, jk1I']Jt KdVZ'Ɵ*] zӯPnc fph.͞KPNSѰ'⟰ChcIYàR Ӟtl~: elq{m"̦֬V*޲{@u>÷2ndU 5;G6uR(pao$nRBWjfR *F噬@l1 )4Ƃ/9Pj#H*d% bV*ﴞ,'V^~(L␁<ɱ5[YtnA}w%qoyqĭ t_kFC͊TېpxaH/!޻ݟT 7]Ӵk]e @lqOp}VpΛ|T7'HYw]KS0ā~غwI4zf @rw*{Zs3UZ5##kZr? gOPs_H{f jC|a?o$Yo (y8Jkulj'.FFőIPy>79XqT+ r:^=Af_V ڵ&xwf0iGFOAOx L\ؚ^u[cUe&,.7r5?\Bؒ6y"||# 3Zw"1Cf؁a0{XRt_#:WO-A{6jPOAEқEPߧˉUe9DԟǮo7L!{C#Y  w1 Ο`3uoz:?NRBgwJ kd4H&^ڄ ӗaOc G{E-BjYlT/Xjt]+"oH0P%͏3UGh`JP™!*`2Pl#/T-iE;"}rorb>h)&vzp7Y`cX,>~9lnJKռbOOPBK -s`8]5b>ũdWwȀ]w?}ҨyY 6|9Xi~d/CnGvGS^Ӈ|!b@ %o6b^go=}JKmsD1ݐXup{l{>/oEGJ6פ=|Dq-ݔ1_u9~7IJ 'Nwi}T\͍J).lK|̻ H-lN(aѺ҇g!}M342̶{ u9U/c覭6z1]I]sC\Q1ȐGD5wҐs}ٺXƃUlϡl؂i'=Qoج_SsPjnGda?5bV+ij_4\50T/D]&#e˻v֡Ad۫mZCUǓ_qiXz@Er u!h25}dîBM(y&h|Eyq +DރK­L+~-tm~H4m|Q}L\Zt))^͏.6^z7gRc*I۲@HU:˼o<e'0ѣ/ thK8_bW`RηXCMyZͻxoQCl/&̥ ')AEͧ Pya(Qf-RB0sh,&_=u.'ǘ!ڜrw5oe4o.e qۿu?tVրFAIK>lN|qV=5mB62Ӄ4POL1fHJ57j +s,P\iOKEܳr fԋ``vn/g @cCwP25n&[ wPnlZCD\Zh{IY]a/PեW;OA/Ԧ-:yЇ?hVQyjOB]ɁOPHŕz=տ!JBFJjxEgԟAV6Ś51tU ~g)kZUqc؂ƵnBSdc|6J}={'zV)썑hSڕk'y`rTS'f:lE}P|E9 Ԭ$ow~HV?;]{.7)DQM!",Hvx?727rFgEx ?iM3 =!"_f]-7Ɛ3I:$7Edf!Ռ;{Ĥ:HoU71kX(hyC_-߁:n5j8t. ,\.ħlmXi~]u^ ;KeBב/:O6Gd{j+tuqJ_DϿOFNKN?`W.qwEthPfH,yN-cije@&ХR\@)PHS e >{th r )m/%,޽0E5W}ID YXtNEf$ 3? n]gJW9)ySL!i,Vq<5 &tܱTFT/znٔҎ9 P=t3NUӬA٫ټ zJ, Y_.E`FCw>|S32 Z~KW-65}0Jih"23(/[@g١/h0 Pmh2w5n|bb[#nC^6N] zIw(˜.zǴ.𚑚^Fd۟5c޳"e2N)񽋾2373)',|v{ҟ_}ȋ0XsŐF Tݳ{)|Ю,4 u@Cw`]YYǢq$b3Pq-35x"F $$ay{*$ =W| MR+' W:wasX#CCZt \T"S0*:=*M|0"ރJ+;^3`C AQ{?8oVcIޑR+ Ƶf&1(95%TF_Z7_,i!+8$l |#c$/ǁs뫽|w~wp3$%9rY0OQ7͌˾?Q T7,O; EkP# _?A} K?7=É f& "7]tN`gX Vl*,/E@3z0߬gɌwSN@QB _z]uQUY|~ Y3JGg{XcAXE4~OBFF6&mv vu;ۯةӗAZ-=j˧[}qan='tb.- Ƥ9 @{-,/Dk:1|l^=,  `(T}1ny'P%.'b?1YĚyTuV7I/AFfiC~V1i>!p~KGbWq0%a:1wQ_}-sVo責{teFx:i q60+YVbrDGo \zƪCJ )[!ұ$%AL[l>i_a !7-1UC8W0ʊ]P-n/%-˿9  lC Prr Ki7c+OB(z.Ұ^,^n;tGǹ"nxF)($a\ERfХ: n,dY]Hqn cqa.>}<0RZǍ ?.}A]w2u~?n; ]nTE釠J5z SD"‹e9rۯEh{tqxpm:0E{JU=W mGsF?nym h~T [|mbyڋi+Kj{ O{]Ati[<~^OqLɇQ /v˾P 5>e9C,qh]'>uD @ƚrS>tCczs?DX>/fAP2u QddcJ)1}A|t J4ݓǠ`֕(w;K_67d<# ]VGۆ5BQJ7"W"!B#pl{Bi9Oi_ɎH>4'tLAfq ~\tvl?PoezϏ9aRI <~H|\ _Tف1wa7w!SS|3(1{RfHTZf@pE0t10@V10$.gٶ%,o 4 mYk}(kl"y C**I 6!e1]a i2>@{zc__}ͯ?QtO;#įm3c}BS;_xFmTxdHd`"G?-vfο8=+2zY#/SL.g}saB 7T[ƾ3~ tvu/D}Uc?p4''B(U ~e:|fXs9!ٮBU,]BNhΨ({XS2| I]y8;`U}JH5F[Dp5/qO»UaZ9T7CɹpR}D$ mt)զ qY3)nd Ů7Rٙ^8XWϾtu\W"pɻ~6Eh<3nb*DQ㏠+尔*TtR)}ȃY!R2M=("N=yebxUe}WL^ݠq{R,8ZgZ^< c ( U0vwgs]C[c|Σ$gX&{M ~?jd%f/Bꩅqu7)=*=LvV,~{%x?{-_,o'?B6:H6aŷ3ɪ]1hۡ9<N_LfitSl24_}\H Nƹ[CPJ #V8yVmtOcZy>3M ?JN2,]EPQz)"5CC571}q+?L+8CHfGPu~ULc4>˚@䑱8(3 ܍nхq:ew<=7 >/߂4Pjz /_"~ [Z&0IfSjs4y{џsPvf" &Hy"TvX 97WYcwHe0& aWHG5AoKO0NԾ^9*jߜ+ٰ-R95˥,^#l7ŊzW/m@~n@5& ,ѾM{zй,_rSZ l87+ȡ*%6W lbیr\ cя _ ~n1#ːOnrkZC/0!tu "V(.{-\KȤwm Xe<[g+BeoՓ7xK|T[*j_CV(%J8bڥ3-˛Pf.$hTme8cӋDn&L^nrݖ-MIMRIXY8jnѠP3jTQj@zѠYhxTdRxPW:b5 Ʋ=V% ǖ$n / 37e gJ q ȸ q_ $aa$iH\T%؏- PT9 &c=7btrX>v.0;p]]{+pWB;٭п}-ʾ˶BϦ-,yv"Q[y(`y/i&wӮU8PMcwk~%z|9 mbgn:yQ>[ .6!,!}\AD.Y簜=[:T5aywD Iltb̐Q O^ oƪ JqI2PGCj{! y:~5:pA?-3('Uq΀Ae^@GKG3e$ | ^2P $vZ΋Yek0c(RD(sWɡ_XdU =jW0T7zvNGOao&H84Z SN=M-›2Ц"BL2DXl"[2Vg>aoNej=ގ]^'MpU|&ƛ-){,ēFmrWoO`e7?Ӡ*烝o*$>)Mv}DyK Ca0u(v; e>݁BJGmVUnBb ./(>qP"8&%LB 9iT t,}ô|ŏ6mX\ħ)а~U#?VC8}#c$=1TkٴXXի QG1#: W!KzFդLa<ګ1>OIuw8`]2b})@3m 7̵b3jyBYGDi2(h0PçhUhs'Optp23ƒֵP>Qή/ Z[ɍ!Nz<L׿P{P>8uPZVC\&, qqAt{-(c3j,ty`Ĵ&oӯ؜864WC8 CmӲېIdD9< az"K(?e+^w-eQtp!xF',߫0R"0Sq*Ͻd]ΥҖP|?{?4?k>U3Q䇑f@ޤUkB '*>Rm:g .'zB q8AJ9nLӥǠGߎ&v^{‰Ż'G0н;ajFX`6t"۸b;1՟mxµUWlD|H{_GTpb%"`T60킣 %{7u~sn5&X ̺Ү Sd!&Ft'}kSsUb녘{ǯ}kgz fFs ['EW+gFK!Uˮmi\g7p|^%3ǺNuY~lPz=@=x#71Ⱥ&rC:I(vǸTWed4~cKyq(UN {$&w(<+^+8+Ai~_.v,0i_ t}PFuݚ+0awl%vr[MypP4I=js{:O`o4]M;LN_eNk/pY9;:4g4>vx|qW-춯1W+ 58r08XA؏L qҲu9a9 RpIJPaUeGxp.*](.+3AaEgi\T]mzVE6x`̐H'Xrû/sVYdf762" *Z,4mNX+@``hR.z _yQ<:  BM& t[],YY0cGt"Mb%3G4 GFignAFJuݩq spk3OKx|,*gZ:eihK꟟5bֻOIXIS!*T9$ZcG_!`p96@Ūis.}̑(W|#\y{"~<(;ˑ"9o.t}U ozkYV'0 һXȦ1[yD - .,T  3n@\65LR -#.,5N=5bqey΋'X0p.,lN<+2o{ySs<>@hVo3>Xy/+Tk1_Frk&μER9kބZe->R] hx_2"6 dS٭P#sX G=*1au-hȟ2)n]]gïXS}2j8r $BB8|A3%kH!~K8#:Z'Ӡsxx>: V_;Cƽ°d^4ĝ)[dY ?L$0Dh/5USoj芆|~w@|[f2Ƃږ$T9S -RDzTw_"AќC/AZnpB lgTR7m~5:X%f8c#.:p9>Ib۶c!LIu_Vb81 hjIh<gT)Xîj9tJRNz 4}`s3%>-t o)]1E_c2V5|-FRXH‚+Zad13ց'ATqN;ê-ތt<3zy߿Kj^ 9KjUuʌ&/uQpۑ^dayf"T EK˦V@P-k%dgvXtI hx%~+i@_4<:Tp p<6tGYmt9KAۅUm7d+!\:F8Wvg;vTR͔gx$ yI9\aT5tLU,w(;gɱ $?vUH˭3`w_WE7wUȈiͶŔ_}YGI ìΊM+vvs bH ӟGz+ݱ@G wBڮ/yBg2ϵ܁ݡwOcWH) i3'| OG=|w4/߅!ޒnR$&и`q.| ÍWG("i\Z6=p2?:7ҴJ]ꢻpD]']M8^E)=C@{W zi Xg샥e\ȞO)*g-IXJnox_ѹwb'M|:T>iP]1oW!-R{7rW̉ GjʃuUؖ <>Iyؔs-PݜOtsxRd~nio^t:4g ľ >*.@C(Vw\#rG:A>!Q-ݸ1B/nik1q=I1iH*6"ol]zW%h(M9kQ3w+_Gx:4^{':4odIw2kue摿1YN-}W#OO|BS;a qōVN Jm>2L]xjYT[uPxN-K~9{ɔ"͍XJi5DGz~(93OtrW>#T !mi5$o&OqpbD78]1]a 6Ipys\.2G]T|.>Y(ɢu$4 CwCνq2yoOr7Z z.7 ?/,Ӓ}*5ZocSWk,VxNĝ=:RY6P 4<0wG'_~(Ѱ̊wt_x?~QB5S«Jp(K\S#{ͶKސQARet,'ٺ`VyaVMY?vwRn]GbjdI?649f7&ǩ!kw~5e?ia׻KÿAףndEAw[p,:Qz( t5MzY]F ߘxT2 HT?~[Ǖ>Lo d9} hԀ6 )iZAatfӎ󰂸>YE~ Vn J B\'LNc>^~UG#.@wEU&4ғIYVB@l(+,sCc~P{]e'xW@hCkCT/8[ `%uhs%ᘜD5t^@ưVW@ ]E ^dPk#j^jKu+CQتB{ dνiG%Br#3P}:T+Ee-$Pe>߲]r嬂)+_c#/VobugUn7po^[$9-unR E?mL+2t ^W=!d=}FP&[ #O΃'zs;n@˫$3e( It% .ZSPHw;bR js,Πaml`o l!/Dh3$wsΗĆ `v~{9ۛH8|: kUZ¹sn*G[i+>8/,Q=AEpw bki0[ V[]_c@p!}(.7d\y| (߹[ *3:U&3qzU ڌ?|+; Bmh/B"r 4&ڂ{"VNa^R%EQH(٤]S(bi!ZY Ҽ3lZ: =;J`)M]Ct Ʈjbŝ^amX.}juN38ViK Gj !9w?Yhᝌ%gALqX::~g_PB=`a/TڊDŽ?ْrVB." g|J^)G!K=7Y(B\Mj;Ƽ՜E6۴ X7O?~~fBvѲ!A>+wK 7쩜XLgSe=Z0s΀`".k; Q4+66h X‚Yui kW(L}xC/\Vܳ;UVJQMAwC V]_[`GܕX]לm嚼sB! $4Z'1"cf`"-I5ӽMw?:َѮwkE5[%VD(,<4|"C"|Y ){. ccX]l;jBRK9KXVǬz+,vwzX^$ysi0 _ŇC$?ļl2W3/s"[Owc`ݒq츺LVc Y_Ys;)|-KJf3 d( 2G8@+8ۆ㕟"67DA]}pm~s7oL'rpC8%S-~U:9L Z'UlAvm+HI85S+\$}hq)&9-%Y_M~C{F#\ g|b`W_%ǟy=ʗrw~)0xi͑!'Tе;J| ``r } > x XsL@\(z7;x"S}fW9FIM3j:%-Z>êv`fV{f,{*4ׯ0%8Bُ*rƨ~7&Td;x܄-Ƿ mk`؎ $oGj,?|_p:j+/Ș} 7T/| JGYIHm.ڟ5ZN0xR$Wsq?r*H,il۬?@K=@CNz?.)a ʤМ"f4ԄupdSOA*&MP0K /GlHS|ǐTFֻ)rhYwsa^FùI@.<6Β߯ 2XH)+0Z«%,9!_ڝI|47 =!PzܙM%,Zz¡t* ж;N@3ɛ]1@|s(& '7X f"PzyeGu1!بF+m^bc߾.N3:gcGa'r|.&,1޼KXp ^ܲ<+qK 6s*y _|e:x>}n'?*8e(~۲,k&B^#%yiāV ZM,)E9|L&_w3f @3'!yݯDWq[aO0Eq')VXVYcOIr@\To ! Nɕlא÷Zh"dH@#JX8=&Ѓ~'G1B\2ǹ{ڕw8q Jjk- _CM߭rʫqmokyc}3tp@iR b۟y`/HUe)54sФGm:F(O Z7d!'iI5MS辦߮'<̳C5w06c1+`u 1,4y+~d6P>W|"`VT8nO2nd%lD@ߕJ6B?z4 ŮډI-Y̿_LwOM=Xx/`48-R4_$瞕bcV䕙Ɗk4윥:ܜc.,&E`ħ>[nXʀE4 F04saXo4$S-YseN`O0LꨫU~,9`i\J!g%Tfao[&Z_ۅ-,'Y}rw kv#ͼM^l" awzy?X[6+Pr߰tT_XJ8虍:+_ Kz 610] m(4lwy; @'cW묡JMM^ YGWEtVv-^Qei,1(s\h8PsWҭN6u)_,:(e{) XӜFր;:Ǟ}t$uOdz`  |Ohhu+94T"vϻ_-AIf4+UJ;oNE Jژ8 @揅"'*1{W- 5͑' eRa"Rp>l>ŏ%Mbx)<{KNu2m}~.},؝V*r usVJ ^e7z 5[5Zqxriw>֖vNwS)w}ւ$Po[e7vѩܘs/?yQVz;@Yitp@T*<*MJE<^MW2yHC~}qX`43t>K5Q)'”2Yj_iOHnǔYJ! }p}f(WqpҖl*'4 UלaG);~Ķ>%(-'6} - ="} NBeg?`DĚ#N/[IAƞB̈ u?^D8<]K. k8?zw$NŃok_z=ˡOUs|fIH-g~j@]9 ?HĖn^!v !0pK~ e¸蹘B{ȫ)O㧁/8w!p)[0,v^,jmÔ ^FA)z @# 14ֲGal? ۇE$r@qa<՟<">6CgRǀc%-4|Wr0@h:Htnp%]"+_/ƎaeCSÞ#@`X%=~V-,-Oq( U)\/ >^PtNVoPA*G i#Yw4p*߅=VnP} /%|2T$oAµFP_Go4n}D* ?A{i[($ D(Alɏ'0ig={UOPXC=/}d dP&ȋ @{׵P( ^CF0~-~fʛ| ߾Z2b3GE.a Y>H(4yrƩo-`\< y2p .yb #m"fj"w%C˲݄u.(&YBV1L' RvxQhOQ~@y_ n\_]ߗ0Nfmt)y+ %Q ϓ?ǔզ;+mPhlGqhBN#wp) JzX!yͧ9vrx< 馆wI! uWh:{38"-{XjPqJ%a2 .P$Hevá#X2Ć9.n:;aKgZUv0WaW*ʅɻ!Won>Hj?8Rt]=cnGzɲRכ *e9tBm3Z rDkA>e@@ƃD%DjFy}h a' ƨ^Þ,*󻀐#{RDo|y3>?g{Ceͱ]3iU~=P26Z OVAiuL1Yݿ=a^*o@N3X>!Sp$ Bh9< 2otkB!פ9lְ H~%`IZ?fz^fdǐB6cgĢڗS,XgG9Z1+$(غ0~veu wz+bݏj&H2uueC kfN(;9+Dϑha rN \5IŠ M]R"( eӃFɇ']O`8G39_09GLfq<gF mX&!4t<;bּ[ m!Hn69E9<اp1#q1MQ.ִgCq>МdQǬ.Cqν^@p c(c,=-i@Ƃ/hrߚPFWe E/ȡ~7GO;T}5<ƅL*B·߰^5xMdbv~+P2\Aݐ9S\lRkS0 hLZ>ks_@vH6Tyuf@HP|C˯^/5xcdXIHmRƬ5IGw LOGAhz5MʨW7&_bZ|7,NU}|Ìuo.Aٷ1 L_#]*?Klná߱(mJ9{f] `ϰ6g-ϖ˜f"GS@ɻuC EY$H ŠMkmcY95ߐ8pU-l_HOKcX7-XŐow" K p='L_񚔞`u&V;YW>K{C 87Ay &mJ%3d1C׋ Z yiZ8QZ)=-<^nX!@dPl<:8"[3OKZz 7h,_8Y7Fg@CB|-ݜI :kˎAƶ4%mE)A[C&|Hσ \--/xA#]sïfXx9~,mf/~\*֜(XA"qMi#6|ʦ9)r" {[$wE@ctxL>yӒ ikTAv!_nֹ̞? z爹zYڼnb=40u[W.j*L|È̢Ûz85+7\OBݐ^Aa %"I8G~PhD͎I|=\p`Am'(NK I? 6mO>E6o L18Gؙ?M%Hô!y5S/ݎ] +1YaB…(a htR\E`?͇V!v iFb8rs\ Ǫ{f c(ey\y/gM~mNyM=-b"Be[8R6מ0? cY8Qu"uWޣOgg Z #P[P\˒5!4p(4Ju@]Um8:vVLzV 4`4p$tI^ޟmJZ!ZZV.=È5bԬqa-&Gq:GS =x.|z]JK'ؕ>@gצ0t%&@7sw4t0TsKl $?l)ǰJiۑ=M҆ ,+EZɌM -uĕL'%x'aDwqV5LYRǦ7lMuNd:,,2:댂%rl2 r/ZW ĘO=dox4z++o6Cm< aէCXz0đ> pE8Z{TR .z7 #j{Y{pKaljH?NWCHb;%X|>b/\` @l6mxtdE# KOZ#_.nk+30e;qD~~ *?G7/bSqH$,F gbk~M_挾!оlm^H+߆8qa FylzGB[<;pX)$07~??Nb! ?t1*9<>Q?lQ}1쎥dT| VڦK褠0Nj pӨ8\)J=!=ڈ /)R^ƺith}Ӹ)-X5bӗ 4z?c _:-.1^tO&e܍3z^ŒM6zYhF @BnX 2 ;yZ>$8/5vg0_2NhCݥߧcT͜n#mIu;:~7~aVo-U`3lو!d4;mVz(Y "b NqEn}I2||:63QQjD^Lo``P}N3Ӣ~~%i9l6͗=GcqHGȊlf;LS(m=Tw%!YG{cu 2eW{ŀ[_6=ēW\c1؟ՊՊL74WrY(?CaEZ$;.ݺ=)8vB'^U:WC8.w'z"*AޮDph%K8, gGS#z/k|F)FaIdQ"+Iw[ce51Ō[>UKW4^tߤ[gnTx9 LX]d#ڽZi]f1䞘zeDUM4yP=_^^8 ~[ XqYZi "pQn>E8}7zê–RL^:;T?.cHyuSY SD10[OM€ ٿRwF4;9/*8Үmۺb)k/ƶwv|S&^8gz>]~ЇUo)8?õ: 煉6v6LFZtT[O*\,3Svy$pEWUc/$KRuuk];ïO`Vu} n[/3?#Z\4l;"7=Et8[{eWť'%gp>^ —P[1\u3s9n16_irf=Y(ţ?ٲƩcjsdX%9w2L]Ƞ{s"vArzДIgߜPκJW'ptr Du` I:Uٚ0ALv9\0g.&kUoFn9+ q<ⰤkPSRODfOS}NAnmVܜ {~/&Fcwa?H8b}yI3}(KL)~ cbT\P߭݌ :̑UL;w?=uV Nί`UO0?B`2'SYV ŋBm餳/`Sz0BI|`4c:T]}'0l2*T⼧}ay$'i zKT\3 N$ЕVmϚޜ7҇Z*O@}P֜œ8Iâi. 7ŠÁ5jBn@ e 'I(hLa|"U&-ӏbY'㒐H8 Wd~+ 6QLT?2ďr_CZH.v;?վ:G)NK&iP83a A& >0Q Xȸ{H!=`%ߤOl^|Zel͂)|;v;D\zqyRь qH5n a "@Lj\@#u/]\lמ, K9& `L^Pl%͠+8tźr&Jx~A?isSH+X ij`e7}`e>iǩ &ژӝH^Pzlْ# ,Fc<l2zr3匕1lU=b)feUVJ1ys6mKSmk>՚3 [ߚi8`Z 4qͩ/0qk#G~+u ::7>21B?!p+}5ʐL:h|yɢ5K!Nqvщ (}o?|_tlNƢDKL0Va5:8CKbaL$\ʄÕU bX|G9֧$@z s_.k]K|y"x}!g+x;6 |9i"5%key37\WR tC=@{,71{9>Y צ _YџOc6 ôK7tf{-ߐ`!giNc랻E_al(MUP />{0 &K?2ƠWSCy!g6>tsKX?0f_& 6} Y6R3D@ڏ-$^|n"7!M)ع D/IsmbɃ3>?xDvE,ɝjc|7 `KgXgV%tZy`s}aW(X+ ܭ#?__/gO H0}eNc3&Q'e' c r|P8Zi~p_^Yp,LmPsi__Q( u$o5O[FA>iѺy &hzOcey oG G :d9зt]c 5_{s]bPi_i9BGlU(u(+f6QB:gn flֲ&,]#t1`e!Uj>"DzjLP^`$xa q-ED4MYM%= x\_onm`zJ':BP]Y4Af#MbnGb![Z 8|*= Vy7}ї~ւi |zͶsߠ`&c-PWt}zĕ$ϓ1ZvB37susS+gM2wA١(Ru߾OdžiZj@f0 BE^B-[7!"6Y*[ĆKAM^>#j:$Xz3 Zk?kʓn<|:*zGvb?66퍣ẍlֳ`K9&:@N0["0d psuUQe XG5Q`vX%ӆ$R(x!+c` [S0(fJ͠+YM t~h3 d6[uG៺毯XKOFT%`%:mU6/!O5y_M\08v feojYAEK2}lP]W==Ms $ϕp? 'Ƿ`-Vwy NŠ"ǑяaEc X\?CWtlrHSn?ٷM2XqlUᏭ' 1 -yY0tn043: gyX|rX+Mn66#læMKn>zI+UzrlY;IH(~c2~omu9vR.rjYYL.a#wg;ݒvU=#Emڗ鞜BB3 ١Jx Ƹnw{`V/C2$vg!~PFWH /# vc&-!m=$m$rc}oqT[V8޽γc^Oclβp:4X JO܌ym&E;P}|+jŊtڧ}8?.@UJ"Uϻ7q &(g^or1ZM: G|. r9}֢Q@]ߌ|ի/N儍{rOcsF̥al95$#ǃƕS4w( X"Y-t2,m` f(0ٱYmLtbY搮+W &s:㭂Ej9\*qR:+LPy<jy^tt0BwԳo!S+;zh}y QN ?vbeP-wk~XJ-O iqːɣ%! Jlujaݘ^!P1 6f4xer:oRd{[.TA)M aGB 9h94. @c0:8CL aVsQ0@o$~|tfASs=h}*|U81yѾ/}U\TNc{k+U>^E<{>Bkd({fH<=zcд J%bGYw<CW=ԗ gr+Կcաݯaaޣס-Ԝ}=zz& z_5k&vγ uvyر }4z(Z+O) 7U?bWoV+rkd ,N^%36ߋcCB]Hմ+i"z ^$>X4:G!Y`& +4ryP(ȨhbB:nh @nUO D&ѷz..3:1E!>oم봠֓-xG*zzaƍwzbTTdߺ3:}^>F[{LѶBRbX4kXDʱ Lp+c-uX~'6ܙ`K[!tQ1"2m? CP%4t. -%YӈVy TvAoo[LEKףdװ*Ui&[)mn`ީuJXCi:Qt5#:a Wb6ѺXiY=X;h&r#=~ƜY!'J$Ni[t6K=s$||!y4&^C:N>l څݖc mɧpSf< qZ7]iO_gZ!WSl~%+r\+"|ޡt:#Sy )+#]q\Z;-&S=Co%&Psxnh*=߉t9C0=BT 1 a̋W? QaPyR6$x r$=`(u*F_p_*Q]\@L ܡx ҶɗyB4)jdazIE $`d@q2͊wrY nڑ͗^h5¯'m>9yD b[L#lh֤ӉC'w-ICL &G3?an\~S|/=BykgNaߙh0ϨZxƥ`]х`*Q<c7GR+!u:OE⊇2P!8S?tH4PBS>Ӽ)4hAc)CQc˞8o!VPKzR}0gf] %yZ[|jAAKsN>}񣕧^7OREBb.䐣4vWzi[1YSʘ4@GxNNMJ{ dzp3QHhNӯڄܚC[3 , VFHY io|z" 5~:sm jMx[w`tGuOQ̠4Em3彻}[at"}2:ycTkeܛ?7fY%Hm(w)'@Э7_(KPià>|VO, !Pt$vޕ1열.$$[_u69$yBov{Buf?$PN#CWL1zӢ/BD7P7"~@xBD w/\9M7ӏ=\輠s/|ĉ_s.Vpy%diY 6 N>v}<힔@E$o= E<"B{4uzrw@=} Fh7=7NEa yYZ IC>J=[yG""vՎBˣ9CD!k\U {W* \K Խj4wQ巯7?w)jEڵ~]G#c R H0Q ٦䲏 @7É)l8G{J;ِ36|Yق7!'1V_ t-o[~i rհsBh3! 4i -_X%NOZD)SWA#}p.cfOXZw *q Mo{uvl1!C q9d*|΄(} K'AVߩV 2C JqרB4 !?% ՝z/w/⻿4AouO\t@K2,S9kMH$6Eޤk!`@L17rg$@˃7? "3,ح? )Ņ ? bkh-^%֘C^L/HR-:+[φh .d1 &vDJ.Ƕ1H'PBIgSj21wߒd.B\M#>()?Zh'gg-oeUVlr҄c{"-7gGshI}{\r I0vn&fEu"78f {j6KcrD9TF!h37/8lj4݆Ʒ n - @љ"Фi)#nUBz RT Iݏ:QCsЛ ٗ7$.ak8Sp$XсS6 b6}ܮs 횳9 Ve.,x.\.`  p6M|\3M_~qZgMSA//'_svkasc}5o T8{b|n]ֱsrL`DMdX> v]i66P`e2UfmH$imV5(du O=iY!t1A~~hgsu,$@;f*]2Ҋ8]xo]0#u krbݘ|)bAҧ(CHJh$Fw A+aL-M=70چxJ'b$UyIg4/\Tvxs2/T ]cvR-,3l?L;DRi(t~;thA}7"1TȮm' ӡuhvfr4W@C JOidڪ6~ǟǦ+Hc]Z拂,PVfQs:˺_swrͭ<]?G;U̞볍x*3uB VmuF <$`h6s=[ti_ӭ?]g^/dn-]{rf÷|6 8e2 rtBG&aPHr}|;t~$iAD}ݔ ]'_/qHryp] ,u'dkB&zުkiXƗz//ےn;ǐh^2x5v YR`ԟHtZ$vQ}m} hn o = nc_J)ݏme:r?"cC#'[u !->327+87.`Rn5(-* {W2I}8(# U!clFP6v3?3ʠБ`*qNl!}PY'oMHx3ӬAfZP7E&0;OP|ۨH]۲Z~" 5)/,MV4:S|/,kSPGx7oX$%\=LNcꫴ}=?Ï'"ބvøD  dZ_(:&E@]Q3ca1aZ._^bXd{-Mvj6YqjqjݐJ)W 8 i9ZXɄz5I ;Vs^I )?7gX3pdpR14$M?{gtSņK=Ul>N.C74'B=eZ_A!,Y& 6Įwag E/}^X`-=~\SC]*hQH9yGݦfCKj_!Gj6l3Wo~w)d˾v+aG .#FŽуl֠G Bʱ5@b6`ȧ #@`_c:C'F29?m5 %ӧ #௷ՖkL^| I-`VCYX TmǢ~`n9Sʦ5[q<:==ϯ`]Xh^ h%1CqtS}ztZSꂏw2- J]RW5=d^c6^!tJeтtu aU(:4ΰZ_dO[q0@w{6t˙|l[g-;LbP^7lҰ+s;p ?9pa[KjlN$qRn5-,W 4Y+\窤2&/Y÷/_*dj&\UT 3$|8U=:t c~﫵%BX.P B-'.`# &ݒN_"lʓM3|@4˻vs :773՝NN^"]JEҼPM|T #=nr N&jIHb_lM|:|_SU M/-3Zdqø*W(0gesReLKIOM?RL8IYK/?bsZ*E7~s{q[~Rmt(-Jvb .I]y`X^&tŠ)+?yES+[J#9e'|ǖ{گGwqlxY6ͷԇ8 y퇰9=РObJS0y>[ӕTn[093}\jP5YԢSjh|7gICFn6.;pe|^,3D#"CRC<+/%>e qS ONR@%K5(bm;(g/)K:ޘBՉͣ›PvPI+]J诇ʿA^Cי.($ߘěn ? ġho|3Af#d1)_` )`t/21ʤ$U W! ӳk/ 0*gqn YPxhgvnl|ϯƋ77׍sV=y|({ҍ@VLB4/_AV3W<1]OsX".fc7-DQ^mU$ło SQO0YwLpG7i]I@y~6oh²E71̙FW íʰdzpcjt2<<{U 9M`1#B!4p慆TVuCۣll@j2u<GB]7 ^`M'x rbyK",ucCEܺ9Ih1{W,.ZT,F;*leaT]%45{p,w 2iluqN=W+'be$r+t c: 7뼎Rc}oS#KHpq4lPn/gOU[;XF.Mdr:M6 n+vsH|ێdqB_V}YHt▆b }n k;:7Nuإ%@~o&Lap }<[}.s2r>~Acscyb}D ylh'Ol9F|ROaw>lyJ|/VM9ͭXj".D3u*A祋]tr|nlX.i辸_~}0JaTӜBumu¯ S%q!Q"vA Fd) 7DDk 72l}{s'0ti~B!hCahm),u|HBbTav'?5˞`:k!5!جʁrː1u+S_Q>=1-P,gu5s\: 릐Wy*Fw]oA:ƨt<uNGfܚ))n#?/3^ﱇ EUAgoڡƷ}o9y?|{"RDnW@S_ęiUh|U?#&SǹOԽ:YW ?+7iJ( !UIgg(9j}׽jgɡ+bKLA!ԞNJIXlȲѯJ/nSf54;c?n;GXB 0V,xh(?_u'd|VőͿ[&IY gCkhL=ϨbGy.>Yxl nN /3,ޑF/?bhb=2A#C(:391bx:~.:f oq!aeoHm81!=yy ? SRzquHe +?h͌CIk؋8d[MR8IsMS) B8[l6}Ԓ+6hֳ!Je*hUZM Sg@EMuvb66eQ܎ޞ[#Mdyq'e1÷tL fhZVRA{^Sg4L'qGn-b[ш3q-֪<{(h/|%8:T̾c/sBL\<eDd3] Ɩ _aם.A{|Sp&G )WW RsNɤݗ>0/3NиMt/I4&Tp0nOGSH?{ˏfhpJKq'N"^AG#+1t&kzhH HxFgl?ܫ`^ eng1<t9 *cҟL~e'oV%ˍɑbգ*=H`?El > iL`Lܐuچ/fY}K8C;sc]k5$4OV&o8u|y5(z3)wy߰]}gMC<[RM}zGel]g{ ~c s' u H:VF Kǔ !Gqc1:R' O&K? gCnr8F L, $^A®afϯU 99#ថf*j߰b$CƑ7}lp6NQLB{L|{)%&5q+caS6(+^ ׮Q<1)9s \g*Gc)(l]зUToR"Q4 ڳ#.%CZכRk8_E>܈O-k͎a!M6PBwp/;]V|K;6f jtuF\BjAp/e hK U4c1i)W' ?!\/f$] "¶U(:(|OD˻@d:O^?1nJ#0r s>o _:b#XOM3_vG<͎ tű/;!hLPn=C;l7H!Ie\ fX qfyF^ 04NrHwU)-tbl* O<j'D?cQUM[EfpjMF(/CMH,{}wS՜6 6Fj0|v$~d1 YZ`sT9^?;}THCRD"$0*"E*ٛ!{キs{キlQ~{^uy]zyOIui哳M`P"I_PxkKjb۷7`1g Q  =4evд0 #fdhCUu.}k/h-?~H14QňO½kw灸&z4vӌgIҚVd)ɼx N |/&2S 2hY;#C3tėBݘf37H8lՠ%.AH7oNE8Wm;ƿC) b?]lQ'{P3Zs:z M?N\:% C2l36 QӾ1Rrf`-t+@ꌲk*(8q&/t:x<; |ۘ?`_Uá|~$Em:`S0j].`׉c{HLMrNZ'!+L`p^u^*T4ʯQueqH@ ErWꅼcj)Ry'K?xoV*ݘԫgZybof,vv8! {Ee(cV[RXCƻKMqn06L?{~mn;2)Ј!c'|{V^ ڂ_xJ} +?2~aA9Sǐ,}+9(}<&tl 腢 ^=I{ lҹiuw(rP̡9'bBpfxTL1ܓ*˕Y=R~447m#8ej/q,tJ CdujX-5>X&QbCItv%;6 tWqRzY 'f%cGty%A5۶ 8ṣ> V& aR:ّ}2)XϨ5BG? v +|V KYN+6M?'/b=H֞VA^vg90 3c(u)5r 5h5`/MXyAN>qË^.TAo;ε/{ر]C>_.)&R{oH`K\?HE2=,ej9^_KQ eJ̰цx Ώ[FB:T~ُbv@ Y]-V}(c66*w߇kE;oTgJ^g':9sSo=a 6oVc ֘Y@߻LlVb7OgP.f;߶:a'RcIjGjN&,d(5;&4a [I"TOz ;Jޓ`+u<~ӑ<'I<١$13=N4%tzZh7@$ے*GOtIA6L*;Qߟ~N;G>CK+_B<ѽ`e]=LzNxG!e"N5D勵gz\pnjnNI0~Z7$HV_YIN)M?xM 74c1>*.pBKdmv;1H3ih*mri!l6Z OuJ7} DyĐ7 v"42(idn}J}݄ޒZ@փo#^VAIvbt# QZ_6C=N .hSP)\s09qHL-t LPpsz+Կq1/I^? %y 5$&obq9DQ=zҮO*^W>w0(d| w%]|Q)X>?>$& d&8v9IBTF%݊S5؞)L?;ەR`@&lyځ/u;Tx!5e`;Gˑ![K3iw]4}Vn#KL"iw؉h? "_<=|Sw<Œ\؜5Ƒ&܊櫪CW qS7e0JāW/;ް㈙S3*NW"p|bö^_¶Wi7 ]b`{lo);/"{өl-)л8H!cy)yS/w6&h60sd=LK+䤑X}G2(_y .<?>EzgBr,WۇV/1Cn;6&R 9&fcNu lM%ngyd|-~ VfT`eQ?g,e;|*\hڤ5J-){ˊiS5o-UvxC9RFg,?^ rb(1>F3 뽓6?毒Rh=Ձg%aYߩuk np8$ '_Q9$fJ ">Ԃk}!,@!{=~S!q xGg0`IK<:8?f-w@;i}^}7*!hDo/4"?q.(WE"Yi+R&ni'3$P\`;y4&NWCkV,cy<TZO= 4χGj02tO.?jCGOrhYٽ I Vr/^PnZH\h,`[Oh.ڦ{H|D0 %ng]NX*K zmZ7e!u"[-.+|Y]c+HBY1hӻM g ĠL"Lm4d 9<4^1jCϐq+0 [FP7M': KP@ߟr !e<BuI;Yrܯ;X6i E {2*7GnwSwv@ „7.I{t-a9t'wzݡwS純HkO!W4^Sɺ&hk]]r'oȂWXq*6uo<ڔ7_эq0%)rM~${|vt?`iaaZ ɱ[,fHqLQhSg'}J?yL`>z&/`.aY>QKsI.0>,[fq,[_HXϐng?VƆ>5Vq2*H8fX.J\#bBJ-Kp~I>rcR}O ۱|O PyU;VGCp+쾋Ci spNAv\]rؐdzQ$M U޷oipUpU;'wnMIȑqm-jQ ^y:VWp tP|r q4|~H>K+^=ʄ|ޠ%쳳"IqO=H_g)6_#syGG)(8x~0E1C*o^O]3uS= ñGJ&ō~gE"ST" z+zGCEwXY&ݣE/,N#ʼvkcln5mM @Wկ?8lǪIG:T70@sۏC5ܕٙl8in#x淢³n~lрw3Asj^a6$޵  8R\r!0%8]r;|<± ;qjx+w)&ž`\>-Zd,_@/a0}?!T H_{^qU#PɪN>gu9oT`Y ]p?6ge8SѰs[|\1?Šŧ!%֪Rwd07]R(d$܋cfu"-*(kv_ĺA=Ba&~z%_n"AѧpF|1=< O< &/ZRYcow[l( Ǘg@o/kca+! aN ,FYawQY}y92Ϟ/[qרsmͺK:YW?ѐ%c9uG !{FbAë mR_{ z3qO6aΰ{Gs!M7X#^.Be.1e髙 Iu .5;2d.bT&VBa3ueK6ffiI&.\p&scJllݗ3{mjckS6Q-E7)MM2TC }idջR%h^.B0ת4%27:;Q~X,C=>\do3qKXv}-QzPC]q];%aAPVVIi0Ar%m}J͞pSfip,S%uKa}{L8#gs5VbIǢ;,ZΕqAh,ty팍#gv/OݸyzݛjPۅ7>\ZktW_zX\ ]y#1P#v(geY-\RkX~zV}.6vWw6==>= z;%fZI9ٝ }V,)m&J}M8HX\)?)6@1(;ލY^{UҊ8ǬWHx@}m ﶼYVK dj߷}ũzQPT/9redgPOcDaAM+lVo(ϡoVRЙuJM?;׌6 _MtP2.-\7nA4;8+@hJSGJ݆MRZPyD3l9D;;uAZ_7Q]uqK3X6]=Ix2 ?VpN^!_4 'pb5$7k>>2kA0b]7 8j}e $,&-(< _"w~g1]o!,v5\zc%V/[aJM ?UhĢ $aPYO"(?C֝ӸhYl#57p`7> rnÖ훵]T{cj8a\ 8BuM9:㔚/Ű4e3ݢ5VZؚ]l N1j}/[57`DF/Vܧ`±rek|XÞ32̴S[D>ONنm;9/6jź\ a"+ȋMOTqH^,>d% HŴfkh}H*;ur^`Ӿ_zo=g鱝=l"TuDJDcO.tOƦ#x$^2 a>A`ıNޯ|{^-/G깫nӥ-R[1@ae93>) "OAs^$F^^iցZl9z~j9ly]bGٰ0* ; ĊGl?jazİ03} jCTJ@Pn%N0Z e]")zamLjŁ$ lؔ~ǃv5xcV#i[E(+`rFH:~ 3a;z4Py@X4^ny R@ :'E w/g6@:S{Qr+UT_|ψ)i(nccɞzߣsIaQeTݎoDogϼNc0o9qbx~N2;|b~67jNe` ޖkK,9Es}񜏅lS8Y*ΔI"rt_ aG 5Mʖ0wSO)ؒ1-SeAVhR=(sw k~{[yE6~K`Sg:ڶM$-2]TKK$r=z ~tآ{.L.X–dwޔ^0d|{R|IŻ;ho)JG">AC5Ȃ+;}\gϲ\yT}[L_7S+ bdS,ߢsDߠ8J&t/ًД\w*\@JH7KP7Gp zlS,VrUow{e5*O,6@Bad]j攝+ZMp/g3 q;zM pNkX9}Gsm4㡳1n MX˚;Q$ l9AU~NY_]0 }?g+t#$Ww =aS;؄!=t_ɽdhMpk;i(~2@3W h36B C ^ʀ0yPYjVsQC֛ny2|x֟%Aŋ]e{v)hXz}3ERZ][äC>v9p g\|VzM|E(plզsl=.ovfy&:3vH468vmCDv@,3!u"Z$GGHШzvH[X U||^m)krL,tXte)D^`x12ןQ-twݟD,MG5Mrؤb &\zV(o8RV?G˗?kzT@B1֛?/./$/ac|*H써;fRZ`N-}ԴOp Wܽ0$Y? zn0zMw?NĹyu+*UVۇ4$paªQ UVяn1oj_)[qۋp^4tga)= 39@/^|f7QyG(HH2>Gl\_ֶ΋b$aHɨَ|TW0u=7$â!tDsY-WN:Aʌy~q(PN^Eu7FqkH&{wo֪}7:FK]0S6k4q#)lR=x5w\ƶ?aH{)oU90yKhoS 5 V?qQb (apjH)Lj1wVNgc<u/L0o`%` sZc"D0Rԩ4;`@vUm}0dP^d[,!q4>>Rg1>҉mif@ɥ/f537t15^mI('.s+WE;7&_F|hedP;kUDD'ݟP̀tGE;yQxه*gO817j_ܝҚX09I oS\b ;RQ _|B(QOC &M\ҼąӭaC}k'vYd& w .&!4IgXyZʧq7 Әdch"n( ݹ y.˿/KB}Fa(ug#9zI?wk _[H j4r e>o.g 1O\Ocǁos!kCa3-*=UF/Lۘb+ϣw`/2@i^R`:8zVf%k`Υ'"A"h2\ 9 cE^]tHX%6OתcMa(j; $?뚡+n\^&٭iTU?]EDohagL.M#c+h{4۝9e?깋}9[vhR{L9Iߺ = ݆Ox 7Aye2֠c#w3I=9B3$1U>-: w|X6ЛWكSo^cˬ۹Icq$dB[.BY@F6*z (X`(k<rJ;*o޼ ]b̫x#[~j|a !*Kޑ%%d<^C]msR)ʟ~u7dIАR8}?+i*Vܾo@SqɨΪx/^{ mռ5r/`LȫD5;Х'v3iAӹwqnFea)'qlϹw0x~?7`9ţt=ef3N=M/wݔRxBV(_HjGa_I|N6tj#y;w@`w,2|wBpӳPtK(`g"9Jvvz yq0yY.Xvs܁'UQa t\}&x]VEܡyŭ(:c+ ida(gʲ( &HX݅=5b)-bb9`>=ȝ!?ε$AM\)ф2hn,~,.4oNjT'IbN(Ӛ~%vC B_)s>1<6#i /|W Yr˶!U_n /O`Ƕ65Rv|Ə2([EF(0ԉHcMdY-ޑA'L;9'j#"Zws}țsq3ׂv l^-9%mɜgØ`#,qt9)?FXBѻ>*wF_@_OortT-Zٜ;ݾc:yS ӟ,5ׁ,7-if7tEO9Äq=?׿׀t>=Ph0_g:lJr7`TIг"],I NdMT| ̝tOq֒\XAov3#+)ANJY\Wno|v16ɝ',9zCTBkG;/cϨzU= X[=+Fq)Lk 1Y _Y`hΓvʸAvo~K dQǰP59 iz^~j (>P5DGm<ņN{bۇ>brxųF5s&'#lGŠ.=5:Eޞ&burh.KlY3 X>-o}]I4udX{&R} U L ;5+b\˼.ekz3 -H!$'l A5ėPC6 ـ^\.&BǣXLuy*Ԝ~_ bX޼U0^H} *'xoi=܃F6@8cL4d%,ܥ$CQoiQ(0g]f ؋}h;Pf&<{|o@Wl׃_$g)z7^ΎhxHq-Foa̷g0ekĮKdŔҫlZȒ,*o? Duf 1H !PXa1܇vg'6T}0ߡ’Mǔ ?D-c}qcb(N3- HۘzkYKX]?Gυ] qѪ@^[I|4_.J'eaKXRlyI}.[LH 't\>37Ug.~Y(St\<4*+_F 濼XQk)Qկfܴgߥ1\aʎ)(AOdQąN\Y0*1nl-RqUeQULAS½"Kw -[\ܫZ>?\yJ E&YA5~ ҚM[Nq@L!rPs#J$-T)uVԁΟ.r;3W@xy/iB~t5QoQ@j8h DZ>|uDSCvFDaT4;>^dFOzKAz>_2+%ȻX^)G '鳞8`v^7I^h° ᗋ)&jdqP,SJ;FsR/%CNPtYnHm,6oa@ika*b ?_bFGktamtsz*Q]UD_iLJ!IcJw鉗0}<1;_Myol.8|2ѽsˏ. w)Ԥ*uɱM{&イ;vO!)znz[URlǧ)SDECC)X\\dU=mQFh ̢o5%?s\[gskzgԃ疂wƅ* nU%(,>3%D{;{TckǸkw3Nd ~Ŗe>{\:4*RQm KBHcnҾ&CQ灨x~nɑH0"@qaCcPhtd J81'< ¡g̏c9kqA/6ЀI Mb8+8i5E K>cǥ$vyⱏt CzO@F|tf].;A'{-;:1lS_iAmD]x-{tt(+wmy{$ml_oPuO?'ҍA0;N/ty<C~T^ - nA1IRp^H[!R̊*~@j|iДtmi;I X;@ɩgʟ@| im>ªWf;a@.)>l(M h)mvw~oRQ(~Xuoi)v p"_Y!#G㷬ÊAz. vO\A0Yf&v8Y>_g;Udx '8Rg2.v}Z"P@(> "dPAja s՗u9֬!15Nⷪ{Y`r"1ق?гYEõ&9R~ IUu}K@"?}ުM$W=g`7) NӲb>@tUoY urrnEHcSZǎe~T]=5̇\ rQ J>094ƠjtcE+ȿҌT/NvtF=$I}Zc%eVGD6ĝs>9 骅-CkVBШ;qR*yG bNZ3i[CZ|ty&Њ6fx?fJ+)\@d4⋤ފMPq޿@4n]Wm"ˀ:H9/ZބɅ~&v2t1Z ^zs,C'nk@xXBf';+G gd C !UE&R r\A/8fr 2)7M{m⇌g۾v44O3WǑRvoү9o\s1wJn<`Y5:0}BxYڥc»'wm#,-JzzW/BbQك[Xg"We|~oJpBLi3␹D 0c&%pY w/!eo>XGQ-X\V!#vt{#@u5brCO }ku)1W3mX5kRa]5g?7RbW sMEv!~R +ul9p~џ'S9o;zdͼp5!-,$fd1B«X;O z޶ǷPv4R"2:€};~߄B)z 8n@mSbP`% >1{gE/2H^[6i)DUo/w $;%ixQ`\Sdܘl^ܶFkәjspޚ q0bʵCtUtX=,2XVpώ*iXܱH<"0CÛ6+k>stْR(lL5Zwt7!G;52ydB G?f{q荀Kwס1zȲ|&/]s?q[%@MK-.|0+b{tZm5@lԾ7Pfs%זAar&g{WO5XiAe_b[xgchϡNay (r|fy&Ly {yTsF;Ki7w?}04z0'L <:!=LΙ=YɸE!@ȊbW)/A='h6 U{"ǪHHΓZnkϞ:+'x^]w#>;d;cF \AlܙLf~T`ylGQ{4:ij "LSaSh| ;dMoyc R]8Ņg TRoq\ ]Y;9GlNDBصOXrϔ98 w<|zU `:˻*?(n9n;e$U!T_}dn뺖$V.i[W)kOAn;"|;niz 'cUDșgPF=k˼ %~c)b=c/Bς^T΃rϘeWb\ӏt *3kmi5H&]adRnӵ\mhESKʈMs $jmKw֠- XI.kՋU#sEs<ک!YFdR7ź%;>r@n쐵 OZ& +{ޓlӣ}$%@WS<Ȫz V+#'DZA#IǠZ@cA4{|ÒϹdhI/=hݷ 3Kn =q^4|a& ho{ o_j8yOpq`Ě]JA1{=l>c3n,kY8| C4Vݭ#+7c#F#iD^#6l@r+x_ߪUdPF 罉y|ca5~D@ل),}6^Ty|(qi\t׷Ѡ)*:0(}PwR٬R P%|8dYiz KO@#EJ w)(B5vg^~,gd7iyz[@YM}gb46<s&麦/eA2(hN|D=}g0_ܸk"TR52M_d{Qplڼ.`?JiU|EhQ(Y1S!mm#ٶ/& o'wF]v?rL%Y`O<;MEX@ː'?Q#zpdmPTR.A㹖ד_#%ߎYܘ& §OZ&KW7J@RW}eyAh݉&9͕¥V%FYX ?pVSо%s)-vRVEnr΢nv* .X`NЇ۹NBkvq-ڞg1$%lO ڮ~yΒu7,p9T㹎I4%p6S?1ɝ>CK?c-/~xfB"4x 9X^xI %AF#Q@5w]V( H.dtMQ1{ꏗ(0(vS:?"8p m/jbJ坞6bPt<Ԅ;۽%=Sz"nՈQ섄dϦ#e$rkx5Wzy-~I?+vHEM^ޜՍ%.~/ ͽ㮷p~㷷*O1y~{W\6^D?Z  i`8^h{Sa.4GMa(Wh5Dz4o@ UePbܜ>hH { ,:\3{GfKBMU̻]g)JƷnB9+4}z% zC gN;4TaF:ba;V1Eo1vnD[ ܜ@BvvQ`Fr" ʽ-P E_BU_–7 Cꕵ&5Xbqv]s^KNOD=#U19goCeLaf{xqm̌})[RKwxɌ)#@` }-PՃ\֔ ;0#xQ.ޓ_O`O/;)IFΥ^fZ⤠Ms;y7x lO!T])cֳFa[0XNrd@tɖ](tΰNRǏufK 3$ {GiM?aY|C.`%ʞP&&K4^U' &)]Qd: Pany0 :3Cd\>B^)&˻iZ܃񜺯 Ws (.b~:(n ;E6#VH#Ok/̚)󅅱s#;deIAHFdQXEm%%9.U-46[7`N~2>a_ڿjX#䐷O27u] QÄ|4?q2OW!LxP ebQXκj4Y}T;ˤ n}[njr7kR+5 "C *Gaj՟m/Bml!RiI㙴nF)H&H>;>;{R[y]~XTeixy]&"¸w'c/dq9j<q廾Ĝ<{0_|s8ޑ!{~]pdw?B1ur#3ML;w\DZevz*RxZ[tvi' $'@e(ݯmѬjGGk)] V(^]%Wf6t&RN^(\u8FݺoXCg![PkڡzPM+Q}/k6B!}$Vޚ^bS)S|}* 9m7Waa*)jhx͝];f Zc!?$ӳcygzLکݐzF=RMu^'u>zZ l2z}`8sav:ˍ[t?! 4-RVdٌ.}΅8>M{3?a )5dU88!6 ڴ~u\Jarي"&Y|"XsMxL,^޹71lo:(`"oe?+ ?uqSuP9(Cm&AKb-b!F]1f|} ALr$xgr@"]3%Opc63}Oloq_ԗc(#h<,v^%c>x .֦V޷ɏ6E&m}Jynێ Q=۱QuMIDæIiR6DK>3OQ}ȠܚXf}B"{w-ic~Oy2;v s\LSbmāxp6ҷ[uaby1 /~y,\cˎ@Z$H#JvҘܣ5|U+X%8S$ U~؋%Ξ{RVX9PwVHbZFzlY/+XJ^5w$ w?R{ⰏIxEZ4Tf>Bgt"SSOzbʦP(gVUT Xk)j!6ϥPt~Ŕ'S# =l+vEwib{q{J:0VxSÊot_cvi60bOɱEI:.?>؇B<0mkmF%+?ͫz3ŋ)w@E Zb5Sr D4,E8L7'ہ9㢪p/YXFTv5QM&dǖ"韫S, H[e7"܂!Oj\t{ ˷ _9+ DBCeUHJWT $X^(6o0r>)"] f u1I?02J,JN46*<C~f!V37Gtg a@zho 7*:I_ ,Gh؝bCiJ3T(ɢQ xej0 &*X cX|^oNhxwY ?ȂuF1펐)Xu^.,[=!Aa[#NSR K7 )La![Q-Ƣ-g~/{uVB9y) %>5: =f:W.N4=B%S FnTM>Ҹq/S?i>0T?J<Ϟ1*H=#D7z [4过]ZXq.(_`>PھNArz?s&YY>!Np忉im?ՔJ8h/= <0C&.[KM9V=_nE_ ד}m[ø #[%vc.PdAς=UⅡaPWZ{ {c:ΫSxO`hQ7 %,=%~Z؎ ߮ެ.LR K_3P$Lv{7SF4wbYL]xH6\kFW0)6ӗ7Zm7&4{!F Pt$ mk[̠,4^Q"/r :A)xU!4^yت圣[QƧ6'Y4L~qKK(eLf|{[j&xG3A-"qu=vn!Q{@/ B`蚾jܐ+?:vaa)ZN2{h&Lس7>]ʜRC O=1u*vB tiğ) ~X]! hl('TVŹ ;vt@GuY f?IcsIE͕u(_@W!↌:5?F)K"' Pru$dLv{ +J'!Rڣ X.C4Q5F;/Ϧ2fԹ6ٞpjO}:x*W)A >X MϏrY@lӱИ744O -t4)0{JO*twZx..߷Tw]B!QY^b6Ώ|)~UH=}(ZJ'ELa_S.칺|/SjS0mR˞]/ eb,HMTX-%aw%8B͒އ.{R%Z+մLs'볹A=M(4sk9y&0ݻ9°vamsFQHײQ%=Um]0 ({ˣiS^N*v,ЭV>ҥ|.6.&AC[i'ԻvCwح/wo K|v]t34!&4)'gkrqPCl={+Fk|ħnwDRe,SBR4s̝Մ9>&gxv[0c/;M:q|}ĐYq=ϗx *qPN--,W;?TUTqK2ER&a:Ƚ.'mqgBJ8![oH=X-Uz0z۩J/D<#YiX,o-p) g l4OΚs^Ѝ=s0V]7% m~F}FFc(Qދ^~0ɺG"۳?͏X[lFe)bN=ؗ<8t Cκy P,t3 Ijvd:48ĺ} w7OFBvUe2ɤiX"( ZȰdVPzY^Д}xRj͏ _oq,@2C3S%ުC.C?˪PQw'd&^vb06&jq<^5eɊ̇oO_9tY`.f/W腌oE/&G!tkU&\kZ30>qlV B;6賛ٝ3*X-#Cj7'ۮ&ٞ Տob8)ƨd'бf٘j!+s5spi8SތyJ-O08,5~vOnl2ai|9#Qptq@jy%1ԩzGNrD(s ?$Ym,a/LH?@BmR8x~QߋBSObƍ/|nUy@K&mC S8N/Ueb/3}TJ+Ʃe1VA {zXDڈ3ObqŸԚ߂s1" N~v>fXpag|̔1" ߿ ֜s7 oTr ЊkS j''(-N6Gwp֣yPy,sL -O 5ZOUeIMv#b^MN.dĂsW22pu '>0_>'|tf ((!ζO0mU TL[C4kZY3]Жk|eYzZ u*ζ?ba5lӹ.H2=Z7I|!NnGnu<>{0|*7/v<<]ݹ>=W04iv7f67"%.cJqDk6=iY0=ˋyv0D 6g䅡«?q~ihu8_jXAߏڲut1dleFMhdm-ܕO%P&?WYWio.it{8s !37c;$r1;0xf4&o4/F- +osSa<;9# qXaLSVu؜ t XX)z2y?s$>JK|pq([k^BৌA۹IH&O̜oC :/:n᛭ h2Ժ|~FGᲥ\[\g#cC?ӂ8,Ə?L:-pPǎo/^Sa~y/%{z%bK0S C:]FϧŰֱH@w5yw$z1AWȥ6bJ8q+SU,i˛21ү` =M wɄ`S_@zߣH1d h*{{z)E.^17ovS+ nZ:z_rڤr{E f0HmK6AMA'/H:, yGO~ԁ}@xu<}ZN Z ~ ̹(8>!|z mPksiu o1{9HY8*!JF24"/10]8vf|i j1@сCs(xQ_,m6zxj>mwN_.Ąk*^}R_8k ~WD?b CKWk;+l<,2 nqF%5P-zJ_VB^oveDk{Ubhwq :!Z])̟ u=.ox+ |x2Mmff  Yϗ/b7+djb+!Kq('곿,A_1Ξ2ckC|WAhxJwu%tݺ~$Vm^^j_i}j2خm]2 y@c-),u *ϻO;r1Ԏ8?|DW_Hl~kZ>f5aWï)|f#vYݿpgE{bgX-'%-lA{qzMVb.7ղoX1{ F?J*,&LueNKj㢦UBol:4Ū=i;`|GELT"Fp=QU--܏3AЯ%L8\pr2. V7+VKXf?;%!}ǻŘI&N,mP2@pM:ufrJꅿ%Gl ;' DaXhD⫤;70k*=s!"vd!C3Swc˾ӟT5D,uOj?XWB IA"M~@-'1q* U&.4В;v Ív5_Qiz`3Km[̩M;$Jl<޹B"攗uu?vsʲ:H"!v&-6bﲩF-z<+/ ebcH(ӝUæIBU1[U5О,`^/|la!I=x~{EhɀFKMzwEgh`#hӇu};nea[.w&~&KtIfXR]&֖Wxʊ4TkBf=⨻^CS)6Av\v<9 J/(Uv+7l2׋cq蝺3 L9EF6L?ߞp"*'ߗKَſ5A^ůf%Ş5tzh[ z AG t})M<=U%9\a9?L~oMz2˘/0K`S9]+ l˧R hC;w I\7 -ksVTAleթ|G[<8 /2At8 mNDVzdQga;c$dDMH.~ ǔ}$Cpw9y*f]d˂f'1@hiw5P2bSؕ<'!8.ز)e~~`rۃPu}!V_kw۪=j'7%ŎjO~DG%HwrC`}Wި6 + W&42d^ rwP'^B h:4c OjhaE .VLmU`JBvp91^H, ݄4PtKfgN@}l< Fo;4FNFb˽l׆SK-4q La D+?{d ^{Ho Ut !}p)~tV0s)bGX}eyG5u!s߀2B P`:F̊XF?:0BJhu)/'_ӯbt2 ɯ_ASC}/̹ފBV_<`?ݷ׊kJ/|wհ Xyǭel"}*=} //=q4X6{() q!^ϻc)\DjEӴ* U[g7_ֽ{=f}87ArwHPaڈ_%t!R}Ne5p NxY탴2> }+/"BdSQOٕ`K6/^,kQWH =Ma̴0>R{u!,֙&Zтg;D?FeJ>Nm>F/AthoBYExF8,K]-$ KH4?%7^f)E2-u@;fXg>QbV:!L7xӮaIor%^96?mhʌY>\Ҟx_ՓD WOI4'vvOLV¡USM8dQpL;vX7Us䝼fؿκ4(6s޷3ρϫW&jw@?V+"qlt!+/K_+xbX5OL1dGOoޢpB^v<'P﹦-]NPѯbևWV""zvWgal{*B Y%'@Ij/T3aJ γ,*lK@՟lx8/b@D0qPѨټ?[x?CR|?^{QF۴m<@*ɻMa_QbXށA.; T N UM,uq^,k3}dZ@mƬB'^`CXħW 3.Ye^^V seʿաף]3P\}?QH$CzDJ~ڳP:_|BX8#_.1r堵Ǒb[Ud8N8/ޟc;Aޟ)=Wƀ y{P},:||ơioƔ0}^yE`݉3"S.Dd-C-90Ay2Vit%C@3 -KSD9Sb Wm[#6q\<  Su„)R7EP{P?< xqAqHaՌeMnTm~w9XSJ-̆j brN;@K}?ø_0@ 5)\,IV aYLF󘴼g6taqaGQ%۞xKOn;A_g-PԲZ5glhBQh1V8T;e72-z|m+Py+՗K,Dȳf}}#3saENo J7zOB v2CYƶ`)9 5_4IeVUI6~ C6zJŶ-ǓO7Yff bt)yN{Bw *iVCd#ӗOyWq趉0vGTվx$8[,ݓP R@NX$TK|!JAdGc/ pKfL*-gZA|C6+l^A[hi]=֯J_Rzaf UڿLо\$}2%Y6z?@){T(ĐcnUU{FE:g@W lA8; #SCztJSjgFc%CGIT6 t6U/w F1YzV@(5uG ,0]Cx+JlqmV\.+NJ83K^ \!L4d>߫(?o2|x٦>&á='z!bDHJJ5.a?򽓵(*ik ;(@..x:mi|ϴ@~Xh(4;dלuηQLT%8|䢋|@į·6)x;{qD #5(s[$ n Q=e&Rq|h '^YRcq笻|gS]%xiV5f;+gAzm(y|F\ts.z8}R{Pmk uET5>``Ts'4_yl/|#ͣՠӾ4QϪ3-t\X|{‰w'}4.^[AdFAw4HYVw=tl,_y5Tn{<ތ {S[% ڌQ kM7 A׹˞?:.ra/Aii[Q!jKڇ3-alIl*@ 䬌ʲɓmWLctJ K㾗cJ.KbFqj@3,q<$+99YtCEP- ň. E%@j >%wţKNG_r ,WPn$S筱@y ۡϖ\vK&Lu1_. C%yAz1 oeѰŠSzqʘ[/d&7<5>(>ЦQ;L/jΩ[P5i1'kΩ̗1Ejty^ڭ;_[kO[Crz4Z`ܨV\.҇`J/ҊNx[?%`GEC2s)4?::Nw#,vTmG|e*EGk'LOS{2S0WĉYP8ʞՂSz%;gc-J&<\F?}P-6'ZҏU6ұZhfWOj3Ƶ؟qu'\~{7?5;"ǐ GR奮F_ꇞ9Ne^er^Era\afW|˭*MQO;#GU^C ¥dh{LmLeGJU"F0N~>7zGGŪdvѦk3f~;! HC˓_?g+^DQf+ @]Oz‘Rt]tmME_'##y Kld9 4XF CS#IL8audE bլd7/^OZ۟.aAr)n GSۡ,Kʻt_EJr"~Jis 4dJ >:euSq!\(I%GIL>UU@ }\եԮDf)aGUA!Ei?%a'7Vۥ C9M˗w۴zcAK wQ$"4M{=)ZZf/f9བྷj5 J=؂%Ca/rmJe`X W5#džR6 O\(QbF {/h{qJ3F ;6XNzRρ0F |}оF|8 ,4+(roĂĝB !sI ^Y۟PPx@&]>v?F@ Db~S/rb}e?B ǡ-vo] TngPIs@]L)^RB35(3zl =/^K>c[¡0j~h%krc7鼣d d!yIWtV۸3 :>fֲV}tLlG xY*7tUJt!f:u'۰H)ʭ(A[P@Yx*7b7LV^S@aGLѻ-8wRvU~ҁwOٕ{R">r\"tksRoHw0qINZĎ19oCkSW)"}e)B`Vj@,}ܖ&Qa;oIEkk5LӜwh.co0=t᥹I’֔\Tt .,y~N#i~-)hK.aj5 X-n #HzonGvE~Dqhߥawuzqf#_Vw }jc8[46kLw$=Y"3l IM/NĮaɰiICgKj*vfO!{QRR2b÷".F <04=˂Aj&鉅ح4rK{ kZSqQ6:lYM ] 7A}mQ0x8i_kĩa{2w6Raݻ+Qmm{١YE6\ۿT#ZncL}u3PDXwB-v"h,>Xcy&=e:+u6aaU]<+tD=7FR AI!fmKܧGFwPtW%ƑYIoRzz Y OI223\ a5߱qM/Tkt7p őGF?1VT7'Hz`BO-?? >7 x^Fu\T_cߎb~cYZ*R[VC$|t: +nt:"/5ڻWjO}vvJ ߌJW d(ocyo P}^ ?s!d 4ECtDM)9{j 'U3هm0ڮ+($ܓ$K/QN밚~^YtØM6|+tu J}[!qމAג)v vux/3>~ZF$ @w\AuCCPjbSq@|t9ă&9"31BHIX 4JSbs_]v19KO1ڳT,Sy.T"Wo@\S֪Lކ.d`%>~fyy ZgqA߻`z.՚'V^^^xmψh̃W_=ťzKX^[o@ˎ %,AW߄ol)fˏmk1a9ao>+S.|?U`_X$h崤7p-FM%8"$.˖M\~0w'Jv%%tw:bG >ډ~F%Pu+@+^LfCFɎګK6,g OlYD %]]ǙCm{ҢD𣡫qqLwJɗ~lY&clfU~ ly*1WlΝ,2ntTV $ٹdw B[KK&$*ɘ9c%wx }x\Yl;}x k*@yu_/Rja0S!W2S O0BADP02KPi ,\ɬیN[swc&j>bhۧ6} .B Ō9!a^Mj& Y8s>*}d1 Q]KHK:H2mHo/ifPwun$8k}?m)$=Qi+ps l+.x #-RXzlT R_濃96iӱy7:ϞV 0L+J܍}[f9'vp9UϠ|濠o{-boyS1?t:0!VL 0OQ_a% ctjW;s (UäKSq?#T=_|/C_K`ݛHt`$mCk)%tO T@M;D-3s+xQf@ 94{"󱲗:Dx`%e,xX~ p%%A! m'qƤ $ ξ똮JjEl'1Xc9n`UqL^h]I8okzzDǴ7L⩟1.݇O>a kT9QXOs7߮Fa8*5+nX wĜtǜ9bm~8}SU.i|߇H6}gNJ*1^df-)5CvI`? '왜- e* |X[yRstVqԪZ/T4yo n T]60U>>0 SC~iCu7phQgt,dJ_RT8mWeI6₥UmGƔ,+G9u`; S3skFVg= -?:4سozGEvB'p({.Vi]ďװsӡsY3Kpʉdc"K?cKEϗAe8wkxPU[PyBSi8=|Sk t\ݮlƁ;SEl(OK*㰯~lz.l]|.8A+"qbХ$|w6\; +ZO4?O1TMpĴ  "jcbJ g슽 8|aEVgJJD8Hxx8wU %lK0f2C#_+,|54n˿[ #S-BˋAc\-rLLJ-ФL bW%ǃQ}njG@[GzGՙs+:a sOUL QfOKT E&kW*1e+.)<N6be? NAZQߜ&xxo~#kmX}4ݱeV `nqIԧWU{ &?/?*[4_Wb#0,2juc70W Y pLaAO9Pq`l_})Vٕ(jL/sbe)%_:?Š7[:Ih(危 -5HL eŴv6n tq0_YTÙ'()&&Y29&E!A*n{Z}u.BֳӦilq*5[dV /֊av`&ڼ#.mlJ÷go^c>< 4*dYby.A`t8Y3EbT?Hؠ@i;vҽ>i>//_wCc'yFU^ r;g?'t~Z$ol~ሟoVܕ pձ6b =4]&LŌe)U~/ t%S ݜvS^Q6А֞{!q8.O"!WrR fT3ijF q6ݡUg a񾼝CXLB 퀉᾵Cl88{/U|Y/[N=m~\m]d;7듲KZA8Me2=ҝr[ io*@GmQ>f $Z0zMxcm)\+F+^+=י3Xz.=|%g3"AӒk0=oY <(yG$^ӄrhJj<+rZta[Y$S Ef|sʼn1<&RC1xAGdz#켟rd Y(iݐX+]PtKFP Wkeӫ@٢(y)8u*>{ \7jan}o\lO`6ߑ]}o'2\ȁN_wsۊq|ܮ};SCkV>NX9~zV=b, ~9!' :O1m>,пUtG%e`PC.E$]leW>I$F~Or둪sF{l 2a7 K9v0!s$z^\} ;Άh:hugi6;ڸ$X4zWG}MگcGy+>f%WC-cIYJ\=} ?ZGBlWtVEk*$CVb0 kPv>^!+$N%NWwdǶ,! X=!ǔI cvWw4i&G2?8ǯ䆃-уf5X&zC2}rId]ЮCӝCī)e1Q[3_}# `ۇDE*o ˎ ;%Cbse\VoL:c>c)/%p-L ) S"[= 3L _NǑ7Bu4ž 'W2OU.Ǝњ_h;]YdVTc_P7 받a54VfmOndc⺔&hP噏FFaUQCY ]']ׂ!ΰ?:A&oX6P ]2 Nhp ?t0C+#N#?|`TXG)htȀtî[GJ60>}f$ /@^ ӚWȮƊHiRXjȐkagǏa9~pswXW\ײGވBjre[>kFaG[st sbZlNCwoN/aRDw}+۰?U[gc0)0#sb?Vx=2]V8۝،XZ?[u~KPa v~Q&UqJQ R|ZcRkqkl,amgcHuVO~B ^פ8!osaEGKG lTٞ 5w;`浪 N#&AmM=K m-26%[uҏЧt+@n+0 Ǜ1](u`dNO%<CV++;FB]]RQ0)[,_.wɆ4v15%ǿ%T\)]6IgH<iJ]]GıG|]RD ƘBպ@hb6L@Dp^AɈ/w[`k[WpcE@VH!GqOg^R_Ȋnw۷4[Ѹtlߏ7嘯$VOoGB?/=$dKhQZ}[ _{ܗ >s{(׻v6]ۀos ڎeN#rb-QvˋGPcF$d>.&փM< h|冚S[l`>#SF:Dv0lr3RA>S9~GB+WN}cݝK&12c8bG!}3:1 YIwU(v] N8'Ը! ?LxMG߆X{Q x&3^lSUݦ`g,?܌WwNłY {#-p}X[$ǭa3X:T7>Kf${:h6,1]3X8ξ6HzBoXrIѲLYXe@;VGyi`P~j2FUS34@8A}-h8['B QCEc0aUY쁵UFBۺ1Gy61bGP+P]toG_!elcI4V~ӎ,~BMA-+{q/úCMXб\m^ٺDm 3 LO>{}'`YWKV-k (pu83(g{1ЩI\%7 «.m툊4Ps"e1.j$zp_?.dAG+u G,0'`_]߽t17uB&l1Xt}4a?' G1#dwuS?t sh ^!)#UAUӸ[=q_b~li!y[?05G~P-<\ktmKlEV{{4mXr0sa7}Y`s&Cx2hϹ楔[LY8ͷ)'Y2V1F4k0<Jm PXZѪTA&JduONc# `RnѾ Õ $y0ѠVr=J=e8 s64}"8KWPveS5M?C5,EV\4Qk/eGO?,!3Xݦ; #ey%01?;ϴ~ zn(՘$QLN;QP.τ&2fS5[0!ٕ"zO/S5@70 y~oKXXB,&jcU?C%)/#T%inN6c5#(oz:-5FIA)Skڝzhi?XE,w4Pq_^'BCf e&Ͷ5S0=[WC}.ItmÔvw4ja{0g0[\z?Rw7&R\ *8 ʘL;`e'>AK޳;R6Ejc3cX5Vխ=hZ`gߣ˟1*];-EuC KV/)AUIn0=ecus&W=pDۙ kjFk9ゥ[N 󮼷?`En'@]MTGL{U "`]X-tU8%d=is{=wK]"7qT쥁86Xu'NDOi+U+s*b6F {~;+,#n}-Ϗ-!'f{,I+L0~ 'zOT÷FQo~`Q`ٞI#ܧ+ Q_dTDoY.k@eymhВJB' dœhI+֐|mU{fJ 넊d$}oy &E*lZ1S2e|S>h^o_1/L{\w6d(U2 ϖ?ꕪ;O* J&aN?Z8q;8bã^Fg׻G CkeMV,}oǢ ~_5Gw-;gE L}2^d<|w^~5el3.PgDq*BA .UW(|xIdT| S~42pSڜnx'Släas*{a!lai9 WNYR@7ACPhzgL7tO թ=PU]X'e[D@\"I:lr"H(5{b[h.M;[N..\7dـPU5@1 ȭQ ҭEX::xl c_Nl"b.SKŜ d4p!9ezb4 nuǡ\?tV=#CYJs8:T5mv~_0cV{@'Z>=B>7"V(ם#9S*XPN,I: fP\~Z:mr< ˗c7lVYp!"R^ #Lyd4ԉI:>JJ(//%!=,’v8h4g&u<,֕c[}h$qng(zs5P`  8dRuL[&|쯽TqF8(q}Zr%n0aإz}v)fK+1:iG0ɾR;gaVs~wO5[}_B|}&Am:ޓ˫תMӠb_i8_46pMrj e̫0ԬZtpZd^> 5N@Rr1 ]F $:^s ;dPvYǐC3FaNo'hc1=?@8 $ ([sW`K,FoxoyAIܛҤ&,v3N_Kblw^Lj ROoo]#0cA"={q4_vwJ֗␁. [3t?ؼb@48#8u0&׬ZN5DR'^W[dv_9~#N<${ytHw}PNKuCS;DKR1,/]d: MWZ6/3=g\W!4#Թ`뻨-?|جhHݚYjR}.:Wl5V"Îm}>fى"gCu׉b^\';? ri{ HٖQBǃmcu}Z^ν٤xAڣ-P ž_Ti]%Ͻıw"cjP=^M`w(HSV/][ VP]z½onjHڢ}a,pZ Z{: =6=rڌ!g t|5;vs'ܰ3v04-Į3ngtlB-_H8.ONA[](sN! z/0'ρӞ$r=_HR' v/w󤱄MNR#Ґ|c\8{cH92*Lײao&E8mg~g$K?`ݥe֘mo$ls1goM+tpUp :swsQ1l)) ǂ7wOS @JOcM[ϵXȩ(Ĩ`]roƓWXk(V+ RUN*!zo/,5{"wC@HH:(_r>G $ٓ Wu`4݇ݡdic-Dh4D~ zZ{ )S(ːِQ]l9W!1rC6n]j~v JK*B DPgl7 )H9y_}kc׵ʤۃo9߁q˨ j/g-)=^FUPV;: e^A~'X!4Q"qm 8\WyEh"s,?%UL\+rmzA ҟ.WnS;ydo݃ Z\?[rw=x$ GEJ/{b G}teg96\I Y:i·?^.B&Yu![H9G~Z*ф@\mE<?u v,  :ad4-Cw gϽ]"zs$RñI4諺zܜ ǜM^VJ#d͒uh𧝸BIc2o?o>]1]P-l[9v^>Sq̞t+y>9os>U./}7 !*GAh<S^݇g9ð[l')P=K Da]`Lr9~1g򭢹sd0~)Ph֒VuhLw_tC{![g4d?Č]uҌ\7S;Ju#i9ƍc%,q)pر7Գ]hUw@e|ۏKU]˗ 8`3 4p.89xʨ2f0 _8˿Rәҟ:6K'f}j (xr^ZHAZPȪ6݅z8R~)L{r SOa3FBSh u;lTKE0V3l.D1,UY>Ǭb4fL,|p9LCenw&LלKLIivw4{C9W፳g3HPMŌb?wZ捿x$V2a]`+CD_Cv2tҜ"pzՓ>Bץk.?u dixYn4{uo0-~9)\4ΰTb GlQbrYsiʹ}xc|)$p0M2 "A揆KP tư܇sё.&919PsE4a~ҳ/j4}]jZN?űئWvq !E*+`m#"VSi }/e@Py>hW2$0A][5v&<3#GtCͦң[Pɥߒÿl(F fN4ukRisf?h$BVܐ̚,g{ap]z,H$16 :-c1`F&J2K c=6s/u22su 1d+,@; {0@\>oyF)d:3J-&+"`ŪkzVUY{cC;Gc]Jl|A4G;w#ùW-:`OF,B@>%;1HQߌtڋ w:&$6ţ?q2ٿy%:~2cMQ MT\F̡*G뽒Aeѯ`m=c!\[9<^cE -X+q>3wyqh˱ҺĢ%WMM|IGpi% Phu9w>kɧ/wY{S;μ,Qc4Ԃ`\,Dpz%:$K[C0J;18~׸_Uco!a>l{dﺨ0+S@O t4[cE_e틪б5(x? =uzx'Z&~W=bUZsI<֯:Xz+h: QK#qG\?S尠#_o=yj{ aTµ0v]ȷ%/>%!sFgbJ`sg( PmT2[dv~4tN%ʎ=o`kKȳݶ>Ϭoõc7o>W,@ƻ(%3ؑbKOo*b+د'ǵ{>`/F}"f99gҕT*̾v,8#@6 j=UMaޓL,S Z}|yZ1ٯaN6K*_s36d90=:2c[- W}%>j'/=ˁ?*;֔&w4^-9ˏ''x(*j݀/yuځ==;@)9fhx@&m #4iAN椰#f(_KֳŞH qo Q ͏˫uBvN1.4n|h9)o꘡v#1uV!b:I H_0.a 3U}beu03b/_Ģ/9.F`& UBKKe'p $ I? '*(TH;̴!u<]ЁI /U2 'UdP˻FD1ROD?A}]&Ч0' #eK}#ÿ|F-8,Ֆ5]m7(dj$Ca KycK3,Ыdw%lV.Vޓ:c 4S^4Oٱ Z}×-'jb@ݏq?Zc9*QvcTH9T8GJU- 2V`ŝp+9Q~*1ܺ)+}|$>p7cu?F(D}yS~99@V8!74wA5AL~˄J [c!27%ˣA% @o&A6,1N:g ŘTt\{M:-}9yvRܠ%ȏCu=Z,RsBXh4kz~ֳ+nLARNKMשt:!̶vȥ5hE'DPV4}\rw{:JCi^BBbGɦ [SC[ëY֓c>YzL<k )^0D\Y=@Э'{FL^j31c^'g12Fs=c*zWp>& CKDXsH`$ޡa [<z",0,cS! #1h+q8!3K;s~$J-hbkPPXa' >FҜU0>%~ #_fx#-CWoD+ ؗAe=OEbQ]eSt:^YܖinVL>퍙^͞e^)xs'+keiy#Ei"U XNB#{:ۨu> V oCqbׂcwE.wp: Jk,@P tWɘBxk*T dM͡׵I#'8$= S1}n' .3(bsXDfa"C izPEeX mqCp kezO'^[l2~=[ DNeRrW7-;xl hʑa2SNnʃYbj{Z1h{5'@K선pz 4 6[Ŭ;Ub/bi#TF} Fˎg!6.$&Or̀FS.lju]ErT,6G0݌sKS2WAgl֟%ܽ4cɀ`fm؍cdBм=A@muqD'0/㵐ίd|,-(m~/7d`fWuMhi -`MWqL,cN;woDӼ5?$\fgG*cۚ+Uѓ=Oia?MyHe ^0!8Zև,LEgչ;hm%+9T(qw,) *fA4c.fg]IN~.0m گJfJ-GH~^lCXsu?v!ֶ%ps{WQdw'"errf <%seaKb+iP%zY#yB!SCw\z\ݭ)@m#ac +dM_$ z a˩ h13$t#8" Nau>zx_b1́[KK^uvHBS;2}݅cKXE{=UH"J&sNt;Wo87{r_vL1N3@ϐ8MLS=JӜ0]QE ~A>lPYKE]/ )5CCrD"4J+8hhVA-M^w[mjO v}5iʎsP%өQM^/\;Cwh`64[֡*_˗Sm!vܠzӱ]S 0\ڋmҝ \KMqRvy(^62OO{X7q#nϋ?{s9F|GjKqTJ|G5Sw~_g^%n[ڂH؛@:1͍"0UldhJ B XRRXba{9Rx]|X%T  fzi{[wr GhzN8 f`ċg| 5GEл#˱F,5zAC"fvX[ F̗6!*t"`HN4KJI (ͽ[*Y:Ob^ʮl[_Ѥ=5/0úHP`t?s5 U/aw=vKx?';2(:VP 3v*v.>ʃY~P(%!5BCA%YM[kpWȝyx - /';N=ћ,ҎV߃u jQU?qj'9 2o Nڤ+> včA]w? FͮYE4- _twC/:QA1מ=XmW<} * չ|&;LP܀~x?S8-QPE/EA˟ОS+ Ae*ϡYv~aW5qa9TɕO1 FCP/e b 9 )&"i%נfrE̜8ͼeQѡ%A@5 b锟ҩrA5%JV/^w)~=08*lq~@%1V ׍}_} VkCCfkmIu.t+h,LĜ,9_ z|-{NC_V7hz?Pi/t1;;Nw9įrHޠ1[(M̓bɛ z'L]N/&;#jއY`[G+l$9cjK<,) GڱFwгs|g)#w%<7Ì]_bq/X~:x>DKT.Ύ=Pq۴+ -o1;y6Eys#c?tHdEAU {XVNmM#t%Zo mčBwb|80Vw"nfCLݞVԻ 5bM3/)ۘ?[5B+#up;^0Z ǟ14uLqm;tzUj>4ymq8OqA>]>NRx ÷U]\-4;yj'H`ބvh-)Iu/ᆺĆ+I 0P\E=ٟx}& LA!轘1y=%lc`ˎ=_3@ ZgU O#`. ;^P8 S>اUz25 e[E/e7ϵ2U|}ew桥%q}tr<81Wʭ.Ζ1, Y0v,mkzy;^M}84 BbWEʪa&4N~f(%], s @\e~ LA7[y3~W۱`tb,/B@^G7U1|>=DtX nk!o0=IBR" [NJV qh3 y[C0y y-$V=6 vEyOQHm088>\d^w|JW ti2];#t1}CGiz2.3F`#W{0 %hcqAc_.ӿ ds娋J_[v:l.ϙ۫+aHȾ{ׇdKFz.7/lBk#Qb.gϕQT!]o)d\Ly\Wbgt@_W"7Ch`7"r5y:z 1cJl1(z ·#?z؟ubns1%=Ǝ{+N^t"] Ï1$a޽lCr'v҃ˏ k"ǰTgmo wEW1ߑ=Wa {uu!m:QOT2V PNRBg#zt44]q J{/|հ$7,^-ehDkc6FhM`.H#;<1uv n<[xKeOMRMG)c8[?8sLLrI1eǐ"3'sh")G`1), $ Fy>$ӏC^̞aA-Oױa?4bIXs=mS]Fò#;@Z_-92|]yfW!u78U5TwJkrf3ܿ{'IByWnī07q`brp)\ϵu4 \%Pc\g׻ŋpS#157~/)3-:4^L~!~P|O),i:l5==ŊU8c#}ooNl%p:ٹ vϚ >Y鋒%ñCF7v_Pi+bust8=Ųω-F P%4 ,D/BL|Q5i'hpl+ =M ? 9r-; rrۚnhfW(4g=~v/.qz Loᄑx:kZ_+[;JE2iH- ߎ f :I8m 5čMkBUNJO-^aOo* %n80tu×xa[Ɣ$H_r^ xbTgzN&r22Cli'+rJ4&YA/ %*=yIis ͵7Hc}{'`ڬ1ƄO*;?*NsK)Mf4醗*YF@CJbW<&"cg Bꤎ" I2rT‡%rz<}5V!ҩ-b[.MaUF`=:t/^x=.raw'+.z߀;H c&M1'vng2"}ۘ=f®2n-s8f l?p^em&m?]J*-e:KWN ՗L!RH qBaK BPF?yOEȷ2!|x#Y;rtZb-CrM'?|<=\M a|@ TT4({)Bf0h4.=IMg C' 7!AoQKOjHGAc|dޒ{ UZRGa5G-F7Xp a5_E%6~ 撺) =+>4/8@oGGhbp`7?8\ Bԉ[= ͌pT 9eB^deb!OJܔ?B6[ -H<-ء<4xVÚ/U_,z{:jC,%GbP+T wO<ؚĞ. ;O}r=$VGʈMc`[2+j6gTgfٚq=vxeL|@#69_ECCNH(`|$I~^? ǫ=I|: *kfLd9×DEagۮQP~PMG,>wK',VY!?D8˦hz(c?b(9gTWX`}M:)(ss5zdr:ҙ;!?ZדXHCT?mS /E8Pd#KX'6t\@G&]baP]}ןH$(D^b&nmq2fG Ӳi*x-‹/n`^KX,cc՗yz-pb`X16+Ś]w/̐c/&(%c*w瞢5'ۖ61a˓ǰkYן0WU9̳$:oү[cPyF+IJʏ aV/&Oa+-s {zYG<ƲkCA# 1>u,^HQ2)ި}eH++ߕ<+ lqޭwzV?z*Nk3=|lz@|G=+kX3!|ޟ ȅU2}lXz,'QތU\2K?R`1y1*iczZG [ܾXoOLvuAY"H]uůS⎃\P=B,+q7PHa ƚ^h>i:u XSH*cydX,tU^H"еէֱgw ':{l~1, w*͠ H'L;>dΗے0t^YB?W4vOW5tB0K5ŷ[ODwʠ}G TO ҇]WL÷p_$ HfsgH 5pML[~HS𗓵P'#y+^(K9eJP7w6ܺ9d'5sCN-rRL닼OxUc!-TU^Hy(މ s1bHj(6KB'υ<]L30B򃇥higF8 (;BBUQ{=ޞ{$~\xss}׆ :ٸwt &H5 1!PgU>vV-cnQn#ru%vCKTGMp0YKt!W @y0Ge 䣕ƈ]&{̍V`wiqvX?8e&ф` lm:ђ=\nK@)Ղ*Oiξ0ha]vkUgZiG<2qj[^mkjP'-*: eti` qg5֛[qt{ˡB]ZCN(0)"%ȿHl_%БFfHAFs. 7>%Цxym1O d:d\,ub|,3P?;1Su!l*| ,F$ѯH 1/!G3s==N>j,ӿNhi^&R޻!ZǘO2m& ٔe`dC9L&hpLkfjS'/ȴ7 [0k ֜ zޘoBא5.i&AɎUK@H4=̋vr񌥏/xwVeHhyW#uW#(4ɱ@ah`PJZAcCH0yb%?>^jB;a #]fXqPiV~n.aJǬ\-XF6t 7xBnbSo&82<}#}WmoAI(s*NƅDBE=U2EX]%c²x B+)q> ,t֙)IXc=| {$dB*qY]R4QtQıqŇ8:qCiW~*I%XBW祟q<5ȡ0/lDP.Y(T56{ :v'o\F!衢,d Q=:$ ia&:!#u+$p'w1jf-Oµ<{;g/č㍰vOMn^RPUZ X駠SA-QQX"CNֆmǞ%b*7Y >ZYN^hC1㤁~P 3d4Cտ',[^:Wug&cy-AtJU.'3{B{#E(+@uDi> /R+iLiPgw`xApAK,,{O &zuޖe*?K^+,czG:[ 9AKŠ<><%4sHVr^Bs'!avAŠc尊%D銦t6@`Փ].147rrv4HR`3ߺ??~z~}=6p߅a#Xmeq탖!\L>;fѰGGbfd811wضT k~ԄCRNx`Xn5>-B;!/\SCx*f3&k70iW]4\}_cIape3]gaRiCHnU~Fu!m1mNMǵ_3hx*=#up&b2Q쳑CҗwwA]g"FJPTVZbKh@NLm9 7ۮqSr.'$g/|Єs uo܁O7/ RIܫxf?%}|own{&hN_铏ऑD9\(zO3MjF67 ݱўǢ)/382^֥f9"~ Ȗ+0?e6+.ίrׅ' tUv,uB._[ Xuaod>vN\1nC gW' q)TZ;X5bs98,ߊr{e8"c?j/cՓXy縞;O.d[ pUm>9(-rΐkzc}^BZq2{_Dzt~l)2=4X(}C#3Լ;E/0Ot<+lMalb9xdt0cˣtoslSԹ& aUy w1a3hS'ύ=܅AzCXV.^a/;P̱3JSx 0_TAPn ƩZߌ"I?|Gnwpҋl1aXZ72bKv a,[V!V6" fWi2s(ar^{&Bau7ê0km ʗ[ ;m8XݫqŁN#ܝky<,Lcx,cNVk\.ɯiB<".cI}=Abn\B)bVGgkŏ3 G7WlD% <ҸK>kJ|;wk=794QzZϡa!/ŗPA5˯Xem_BEsǩ[()Ưa^!᩿`Ҡ冊b_BW^Ws8Ƴ[X @A .m/ ) \E\4r!C%̕wK0mQ/B1 vϠu_u)(P1uN>Z \_Bc^Pm D }Da+/ SfVr= xi88ٱ#믆l}$vob]Ƿqj0ha}{ XKbB^G_M?s݇54Y0)/_njbH *O&\ΖOg`>2MN?NIByc[Jiz7 a)xUZY/|mOFOr+R($c |#VScwVq3k/3˘r_3ǙRy@zъtǦ[@iBcsByhרF_x3֞0Za{h_7V`/0`^PFD$f麝ֱLV߳B柈{W_o?'=GO?(tX|/13 $a?PgΜ}Uw$cvLKKxE{qҐ2GlBCWhtI>duŔ)$x4X?"A?/WB0y?A$VvAcD 4mHnYMb}qlCFI kT ƺ1ew S#!@ $jM9C\ XSI73'X?-1wW95ѣꥏ-$zXVv{%.ٲ".lq`Y{Lux7T s \ܚWgRmA͘#Xe(oUENڼO t0 Hzc'C:tC*럔|e *l36&|2==#5:#_ hړcj>@Gm]Z@r~w=!hۭ+_Yn,gA g'ztc<RK?1${pGF#v% ^*S᳗|l1h^;,6B\)Jk ;(ssQ€*(ًఊCV]H@s̕5nj׏ D56J (:M ngH<%_ oS#<B}a R>]ߘ+YM?&ZȒrAҫ#ks2Ȉ8X:Zcyi5ĉݠ0\o?+&2_:D!ÏHm4haI@pE&'{svP/3 GcU_=P`bks?p;;}316$[n ,/ #玐P~W^C%[{5Zzdl1Ŭ)CegϩKe|MR +4O\hԗh*Xhs Ȣ%Wu@+EePSkMvp /*7ۏ$÷M Jz$i6^X܁K=mW򾴡p }eȂ=?~sW&?hb,YF~p`chby!% I?2}(O!P:P mi\\TU'K&U".pEά||ESNNS6JedǡFV\P:*J 62Gd0춿 3Pw 2Oʣ `` /g uBIQSDf#9cXyR!LʼKh~QF1+ER)| X!gJPvFcN{`5.j,_n 2L7+a9sѧ (xgF7|橒EL-y"M7pS(@VV 21m Mws S'ᅡʡwۖ׎~=r1˂fKfr-ppBvo\Ung/6}2r'Pƨ"|} _yx>E%./ʛ;MB5L13[3Ud!jbf1v|;|+jF> &ֿwOhv,vPY_USy+fwSR.c$Ke׉Ԡgo";O!'zkI o+CU8jp lTy1 .t3 a݊ݲV0O&BL4Y xB'F].!|kn*]Y5\:DD2<ŲズD5QcKȠEB2r*/.6Ahg"r|0DwW2L+H܍/J#HSK ~+8>͊e/gڐcm!O`(ןUX&ס,zJAl!#_TŨyj!iqfd<.h~/#?`V>ƾ Lc, F+$1h:c3XNse0R>K( nu8$)i9v,yRAƁD17~BɐAu?|kZ=ac#YZ,Ԝj\SW? 6{~*b+dhy*>rD>[\m@EA~ٛzp8>jwLwSq Ymc``\apH?39vM)b֑?XFZ 3x^*$*281!}`Eh髞:ܴ[PÎN_jfKXfz-GSnƟiN2'sqV+ࣸ󜵔voZDY;=ǭX=$0B=o&ѲII+G:(fqjg:RK~rv 8A13N9^}*L#8&/}#:퉥CeX5Bh>A9QlfH]1̵ZYZ[T .MJ8`WW%h Vqm NW觓[:tM}7ܩKW]f ς!9 l8tN28qOk"G>t4cSmt跞Z"Ə]W ҝ``'ú:SVZx-i[/ϖ9lkwzutN''O=:gC?B}_%S65߻M9ަ)Mk.zu<6Խx쯱(c`s>%٭4aVY.x|9 .Ɉf5KnCm:ɠ.WQ{dZٞX|dM<Kio=;Ak&Voj BFRQ@ K[Ƭh_r^M*. p0AWPXxِe%޹y#-Hbn׾@Ե1V/lwno_.5[OEN%y7@pHH{;:eyv2 F0Ɉ<1,>xG5) 1J~0]8~D]gBU8{Y'F;zAS1:8rjћ|@"yxA+~TEmy\c0~|:WiJk 437M/Y}Z/_7#xb۠4;cί, *^O?':X_yqel˓b2HERr _((7ŏozĖ Uo<Ӵ5ofrN yiz"DcC S Ļ`s,o'(>9# 6F^Bޕ$8z_4Dq?K+Q.n猝?>a"]ȖeHM<ovR^ Gu~ h`v*+“ o TeV0VB?J?ڙ:b"V0 [rû8UiUb7Jty97B62Y~2G814kU@+`| %$ 3`DC|Z]꿔<=cۋɻi@n譧'ߓ 毛J Yϗ0U& :c>=Gxew4``mƘZЩ%i)8(;V2]V K'1j>1L< UBoa+H:4pZ,=$Ҹ7絰|sxs#;e ia[sz&{=%} bfv2cM>$!=? @^'N>82?sg)q\H%=˴w/)'M{GkO듟pӽl:Td^C%׊2w .SoO%Ds![)~TxZ,yzK˘ Ab>Ѫmc6硜pueF8T,,%nSZ;pXح;6d*ʽE-秿/oW@ZSR^4[☡PN]CZUoBԝhY۽PnJj-,AP>}ǤZơ2[Mѱ7zU8lrL>-/YCv;p`a ]~=xlC[ 3ym!A2 ]<6?Á(ezpT^70OM!ۻGz2̀+TckNSyqlyj _bi ~uBޑHQk>d&.Cg&gxkwq/qڏǿDCD9: dlcJE iΒvkDGWB?ȿ֝qF1r3bxp[9p}Ѳa5Z\ aMYE;03PH*1x^Zsqa"yplxs;ܑTdl^K-cE5.U̚=)64bԋPS-6 R텎)5#4cheMM g8]&OA{=21{key/![a%0;F|n::;sen̬ z/Ҏ vEUewE0&+ez1,.c^,/K!uu6hW,5盫$nWק6?lh)yߛCwRDL!9!k1!sy0}zMYL9|>!B&MΏv2fIMπu|߅>TG[a Wb +^J6j8$IR,M"|.iۗ#"8(}+CiS;y)]6\KOJ DHϒACLӻ%0:It"EE6BNٸ:ެ\!!cP$o*_kd۟QՉI/pG?G ԗphC=5* 4vhCW{ql4bx۵J,3hy4]"ds ߼xa^ r.A묚^XT "K0ڜaQRؼ~FvI2{j9c(M&<ԹvaD`{e ^rxK;t;5]J"/_{~RDV]Š8f:I p[?g_6 TJviTa g9(>ʤgP/Dne$H bv9l;%6e{"'`ql.8YAF^bH3,#"xk ]wtcW)Kfэ>^}.mޜN볺gq ԉHlepo *HLvBfr,H<Ė%ڏ0dx8w}D8E@bl YN.(r" izbD$ Yg{bHvK((760~f)<$~к auH’d!/Dy 9 ~\TdWFf,oS'au6`TL 4Ft(<3+]~C[ޝM;E"?]&r- %RѬUK S柗DTw|1pJz)U)}E봗EX|ءMF}IZa\&=m< 3?=ta$c.|X6s'87?ܹډWGai UUkT\;8C]qYޠI*) qA6 ό M龱Řrݻma/ik^( z9As`$9K@zQ_z+#dN]+/])&y9KE 7L'cV&UcsXkD  ?ib+Xu˗&˄5C+8Owb훒OZk7Vz_-OxWfƂC=EECfJز.]bx]׉P|ft4]V~@Ӏ˵,G3#‹y|Y-yZU:ww֭m]K~-z b ,|$b8 ̐a4!5} TYM1ߡ ׳x<_՟s`=} X1G` G\ ϧfAeU BkO_oX,5 qI EL!Y5ӹҪ5>W5!vGXVP-6ha>9'J'b͞:Ncޔg"XڣSD&FSJONJ}b d$JO ıL=mvSjOz c\HV#H}vN(Q68:tl<;zLHFٚ)'PͯoEx k}#Bf\/ LPeǶ9 p7"[ RX(֟~OĐJÉDW񥤧\GҭmEqld+]ª[YdXF6wzkjTlDYr=ʝL#~uGn.̆סR)?&T(o} ڜr5h=ԆZJ5b` UeW֙1p&Z&X@W}hP+R ,:)H9 hOdG OnWPeȜu>`ϭtP!vPyNi~ q4 ޜY dpϽBsjش:Rc>0^s=2H*ۗo@\a4j$Xjp@aaE}pg\FɣqPϾ tTW*خnw Cݏz;?vt>_ C_=o0c*G) 0YE*kБcrڙu:NBG@`KՊc?-B̯T$G1ҿ pBὣ42 &+a}H|V/pxH,O^५GBB~Aحfoȳ_ta{D hNt;%_D!N48{iRĈ (*ngЊݑj5?8ܱ[ @;Q:#}(6 A. إ_|c_~V孼ȏgsW OZL6lKvn$/8U;W#.2zL]$|ScWb_ؽn9us7mT[wB;;zߠuHTڻsj(:FSwq^ݙE{zE189ԙ4cVSNMB=)8>t:ŕƔGh\e\m\(egIVL0 ޓusʸq%t Wv\>#Ffm3G!﵌{v8bGq Q\x'WK>tqU;6vw0d=|r OtliO!fO`aRy.2P,{HKֹ\EKhrmOfb=CrAٮ^~W"TWmxTvKr7/a?;3H52B%yϟeMoC9mP i 7fUuuax:5~tЋL9VmnV(WzBk~ Ux8j}}XP^m&|У~CW}unkeAYlٽۺxu u޲Ũ6O׀>3 L3(9?P9*u((8F}rVZc>bEG BꩮT\-ux90^g?⢱V(0}@KLAl6/6*?d97O,41#ߺvJ lU9Jq{-\?h7EO鮵Ŏ>]Qh:ٓA]ָ#^{]dD1 (`z񭕘 )NٯY=l4^㪽3"z;`Rq׭AuqԅEʯ۾֕H:rG>y[2kǫ k/YqH{w"VP_0U7?,E:awGg x= \";: .2=TF筺ܠg}uW-78vKĉwVn׋ h#Zl&okNqF5as*DV"|uŎ/ob> ܱUOY-4q/<]2Fiٙ}_ܻo"]VIqn*A ~=nrj]a'wm@b0);AAq?T+4C ;~DZWz8ZV2 }sX&̟?cǩzq߳;f_ӑNSd}?`>gCx&~GrP*cwYv9+:?#SAХxHp M9m{o bLaq roPbe̛^ugx'8/6ISA~q)w{f=[3)|u hHyX> l1N/P'@{yZX*{hFla6T9<=?<|Bɹ,c*50,,|&*S5nAaUt(=ۥVMrRgJ%!4>58%|콿CBu_q(E31>lG@[6Z"8+: "Qvirr}-*=i}^]{s=ʾׂz4,# Hkᘷ669(jc6rۻ)SNx %+]7B뢼5}]p&6ע52cU?dbrf}CeB):\ {^iR3C闐4 }40M+miV~TPhV0jIJCqV0X|]_߫?eC_TC:fCDhфZ'ć#PY47tG*,k:Oe27Z ĭ% 097hhIX<9MfXʳt9̈d}SUޡV%;bdZѾU.M5^TvsaYK,5obɟEv} ={ RҚ`qz嶤_<_!/b7iĞlD9܆ڽLs*(#f~tt|EWsN:I:)Y]UVce3 O mqKoIB \B[90Iq' ӗBC$R4>Dwj`gj n!.:7yC [}'#9BIOG##ۢZI5.*<6$ Z oXpeTѮ{B4eϱ@PK'SN*e6BGJ`djBiudXkbio=*YP?P蔢1/'Vϕ@BB0݅ e er0 4H?61sXt[[RW_Ôܱ&m]{?}lz  %bvٞYPcf/7aGGЩ֩wuRvGcߡBXA:O&qb^;_JC!-mSiwǫћ+oY})Dsl Nݩ jcMlt]8Ǹ E\Cș9FK"Mۏ`ˇ7n]D_͹A+Ekhzl1i<$2 ]ߧeBggRn};GJp_L|bj~` 1j{鱝i"2w9mk J?BLsks2`P޳6dq5/[2B^؀YlG;UFa1r4IUŗVeʿ1&E!!2oc39sVlr>]`MFcOcWOXO臶,vI}P:% G i?C8|3"4z:-mމnuFds+Zݱ j2ޖ=[ \wJ^"2ݫݴSL[Pzaߣסtؼ%y/w//Z<}F 4:9_7oF?|63A԰ >8C5]tb3[{u+ث~4h֯'$M6}?|JEW.g̟C9970bh?ŘٰP-iE+pm4?#&!eP/f}jA^SNLL)^.;|4O`2ć9Bh~9g/ 4CYjӀpI({Zi@2CՓ ]x 6ώG>o`UcK.Ow=KxO˿gso6>(jyN[aqF =Mr{Wћ?6O= "dVBhaJ|Ӵ dryD[g h|& }L&[<1VUҁ$zO&j٬, DrV#Ć.'wcPzGNiC;[S@ Zn6fעqG Eld<&tY~?.<q?t%H;#*3Nl y8NPA<#jsfynѹow!w⼉S2++Mgִo^rw\ O.;oz8ڡNǾ?>Z=s؃5MΓVܘ)(,DYAiدja\KH">kp?>-g9(NkE&v܉nɿ ɣPT7DIA_6Wj@7QQßlF1¬Rj [;TyXfI°0Y$kNF( w]# If'pnieA!Ha'.*qaDRW'ثa*zus1i?t}K*U^?}kbMȗ ސ/_TČ$W3nP׀V+/j@M(n~fs!')i7ȱ`߄Hp̐[lyA,?GeVIˢ .vZc=ps#w1BӌC+[A=!9MAU!]S>KBֳKzP$Z)LՖ2C?ñF`!;Ą'WR'FU$MZ@Hq4WR|ʀ 8b]sCoK-#uUV饂+:V`#"k &a%˷'Cs $֐xLvH;q#(1v+ہA_ bt#7;dKډ}J}Wx1M ÷XwBnbPb\iv I3VN5ib/3VlДLi)K8iG,c{h/V\9e+op^k>׺ڨ2N`L_aɇ?ilvgC./»T`&%G| sWt0ݖ6##v|.#|8P^K33U+ەYXd_y$LDL)f?`#|Kr'T=>i mu zry)obk\E''8:Su&ܞhs]Ŵ$L6PifaeupⓃ/4=Z׍0f-{`Ǭ3d РVcKwY`ăG* 5 T.D24hwqW;tKqT܀Xd~BgSREmX!4pm-l|H7W+6WW{:Trn7]#:SHemsJi @Sɍ럊ҠC&Tl*wHzݫ90zJzڀ_ j"z )7T_[@';>U c-thZ{7l}~C߱ jb*CŻF$eb RrXŬ!>l3q%vWcuD&rmL3$9[/於bakՃw܊e*^zG煜s 38G+ۑc' >Xq\6f]O%:: arS]`S!x_Ue%AһtBL9T/݁eF!KN$6^ I/lOb#X!Ҿ *(h{3m<_]L"s kntQ-c~MU:DKXu*< tIHl/:#zHr fKunUƲW$A?a lw)dZ]a[7 ؠĎoص_-oobꈾP.i$w_eC׳OgI@FHC L;b%md//Ͷ]H }DF~ w'"6aN e:XV&jRbS@^Egi@yx|9Ȋl;4'(\gΧfX$-ጭݚ+_; :> :Fh~= tWʰU{+6hU,m $:үMmϞ#Z:Ŀ%}£O_Rm!`TIsnPcM|*FGQ PPjrOגջ.^ALpHlHN3A,Dxu#;ZU@ ]UlZ~8uxf/F@:_ P͹'Z S8+0/mS#㨎@bq"'If7K++ jEaZHp /B ͬvGrG*u.{X]$+pr,fK[PƯ`jslx+GT٢m)!b )ql[w5ǢQuw6m')=5VDswE{,2@`VU\(1eG! !zavr'=C(5 "GGnPa*gr{O?t$?WT mAC>*Ko-ݡ|E}~=iS3#d_V4H TIiEg?^MȎm]+G忊!#v=cEioa먰o$^~D#;w1{!||FF9DgR<#]vMCkߛF'mo|kn Vo ylȠ<$R{G+р&)K0rm>n5&)Pˑ>nP#J?+M*W{A}1ggXVqrF tڽus|s9/:Y}FHb 3T "T]7Xy эil;RPEyr-_>4ϳ3wcsǦ^u}5r+\Gbp 68n$% ]3o 1ʃtIA{3S =G~8Z50 e5Ua$3v:$O2q O0vqW^H=7ڗ>Sbz-E ^*%fzh<9&Nm걅xdMT~A X4,o?Njrncā]QtXvԨ:AAAp-44u1н$K@hIuY~!@ga җ& 1/ hkpS ïK;乡1пw\ܮK Te@XDiB<$:OIŊe+g; P|0?~H;&.gɘC߯ZO{,t8MԻs.‡lpN5-IY!}Y'鼢K7E&z\xPѬy>'.>Ғ=Mfwp$' Pfb\ɶrsȻ^t;l o<ѧ:YYcۯQ`{xXX_[4\鋺]%بɦ]qũ;z8}UD:*ݭ`Ύ#%oy')qUʼ=N;4,8]?wTa"X[Gn@?Bwa`ȭQ#nDx;6e;]"EwS]aGYP' };+ ;Ĺ;f\%q;_]ӫ-UVs.ҔawR 59|`js4rr|/2eHC4S0dіWfR=u< _"eƨy:ةRͪ]a' Ǯ=òpXox2&ߣ9e;x>/M2X}= ;_ʰߕb9S@qRx<ؠWדjɝs4f,2U}}}Sifhrd{b9~fnݣӆrҸ= *6b=5dh`C 9M^ߠѱ[dt->1MR|H|o?}AlFpޞI\d i;ɵqE(JdE p8C2 @79i?utU?98TGRonkg +,x C"M3hse[ ;OM ICO6bs[gayaߊ_q@\xߚ܆n; S}pbuOV!)\wS/9* ͼ IvN2V{P 3*y_0)y^(y% j|u>W(Ʒ|kG4@T5JB-AFh6WX׻]]9 gD9ǣ2hj(gtH(nNyTZdild d]PNoك" 4I}L|Hj'+!f=R@κ@<+ ulrNZ>׾MW |'onyzthܸ#^!e "N.rߐԶ{ʛ+mκ?&:(V KGo@ Zę`s}flNo(ezZXϩXֆ/dNQM׼ͳ}BվXszi *N/;˻z@#)5vlfw{8D dE?%!}1Y$В~l՝{  2x(h~s("T˼K*D\.,E cj靁iicbǟ 8aGi'_nS,}<>$Cº_H a2<_9(p|z7,Yr1|[LHr-(Y*G7Tv נzňyoK7&蚞bIC3y J`#ܦ޿[T+AQD˜J# #0wv}}R?SH`әB!Q1o>@S]{\pZv9D7J fh툢} dwmۡ+~htyάMU)L@:%9Apw7'gxZhL&f/X6*I cz݀ڴ\ؒPlԝQ|-$D9+|7@7',vC'O\{M(4JW\%Oh,&a$` c/]RRϙaUCj۹?"P*YTn *}W6)}Pyi''2dx1e;ӄ]CC.GA}/˵(Tk"{Y- j$=oLwhz8Zu K[e^ދ9o>xD+~c|ȅr̥Ksf6t+DI!I6l7ҍs-D,23|ٔFXH$Xf};CFBҴ?q>n]=2I,H={/R:]B;~>\~z?дwUvPB>* *l. tA;'.CZo=_51D;iwt{b2Vų8X@aϺ  C?\ұ %I!WdWB"O׻E*78OwfWN 3%:(0+\?WfNCe۳hP7?y3<`GA]{wh.tUZ R|H$73_gǜHةe' />8%{n9ѢaE?0\LB=}}pzX"ؼѩ`woQ~+ϝX[$ޤYM2N D\Tm;0gIҫ8pS% 1i[g@G~C;8!a,ff!=51߾$_;v˹grMd9h.UBDžǼƧ-%qY^Wd,]Ff?{ƙbD?ce דX39;_f۸S(rI3`,LŖ//6_ R,EvdeYn~Wv s;뾻5yS{0+4B,Wä{#Y04Uc]ӳXĜ3ydTFQ:D 9T\?"1xcO{;`qdj/Q}\Ά9 X[CU<[7Gɰ'ڴ=lfmv^Gb H'j6&ZbWT M3NLPSnQs%>UI a%[|3]UXx4+7T -?[D7ڕZ{*m2!MCAA wMJ))D;9uH2CpLZRWR!֥~OA 3,b!ث8v/XZ%Xnx 4.DGW9cm5Oy md-cxpMOnWĎS ֶXIt|lgq;fwC~ iVX}yûP y( -'yj?alȰ*C2kʬ{>52(zAk^r1s V=3)͗LwAq^^::F#cYyn3KC0.%t1%:fYS]S;jj$pQ[du&ʸ>{ץlD0)?`_?BtES@Ԏu@?AxeUQ(=Y+)}X,AX(2UT(_W(߱u<%Lh*֮))VAk#5VH/O頗_ $0o©Q׵M8dRj+&}bO VaȢhV⹊=@0k1\ՃÏr?OqPp vΘb~|m,Xo~2<E)rҔ`~v~f]}{aoEs~r@&^(m\um T 3o\ƌ=ZOpB~0>6i:8|j8X5tsceeMNw>t g<+d]ޏP;¶+eϏf{2WNRĮfkhq 1+V(9%F;'_'wjq!?mӴxsPtYL׺ įU<EEŲFo7h>ܛZxЧu~{VD1ɻ֞A缙{[~R/~n7m9,F@, 1dyh&W.H摒-:PڤqA$h9 >I;Mu$WG(!V(vi4!po;=~㸃6tD^+>+ĿQnRpƪDݟB滰ŦñwHn_+xqƤG!+024'*?:ɽjH yoڠvOF25F#L4u0,[66bdg ճmej c~D2 "zig1a--2ʜ;:7vGzgT_+raL)^+fځ́m}QwG R"V@7݅{[gd0+ OPB럿4`+1ؕ+x$ߋy#ѝ70\̘z2F_MNg9Ga. *^vMc#{-U/ MN,̓E|z~B0[ P̻skMl`-)Y"%oS|+͛h96$H_ۓ'ZOB5MOWBɡcu=A F5)k{M<S< Rr 7! OY͓g/@3̞X][׀Kv{AR> uA}Y<|+oU̺:rq""&b)wa=T}NV9eteɠFްa6t ]s)}~I}Zh֍U7.#߹_Y[rVjHc{ L]G/n?;r/pcIaܲ?|')إ yxa¦<Fg{Nўէ)W֏FWOr1i\y[5&dx3U몞aphOYoRC!Kf08!SБ?MLZP,QcttO1Oi']m؀Ø*Ky^7-e:.FO {~oJ{6wR`Ӓ܏0^"ھ}Tu܉|$Vspq9)'M}WWnl=q +I'xZAO٪}ᄡX`@53O <лFGp7 NU! EъkJtaP*9 Z#!qf =7'jac)K ^jf#GM% p@"1qUQ‰Hb+R NUF6IYV6I7(t 23y98W?֋%U$3LYJDR- JY+=5<׎^m(-wY[:׍pஂvS&ܮF}_0=?&8hXl:A#bwۅg{ ۻ;xV}};I?l9n_%c9O KMG>Uq%6;/bٜbzW!:uaRe.ĊW@Y,$[8X%۠U{P[gWߙ/VE?/oB*1 (}'| $.%bI.(ls]8D3壧l,䋰TsMx*ŶCj]as Fhb( m#g$,%B]-c%>~sȝ:l'CG`vP"qzvtΦyk>~|'Fy+=&,t'M|exxe66*I@׋.MkAg>|fuGrOYnأ o?x);7Q[#2X[pyi]k74i.Flٴ`ǒK;lcx3gՠ!]hz8aGx<ܒr?C]9Y1he9/ ]n{dyR$vkg3~;Қ|>Cߧ97f+KH t%Ay~z|r a.}vih}mN*HjZ?E$(vRw`?b@_?t[ϣqʖ_L%'60A',_)A5YAא'\uc>B:[}&؊Jd6gBɋ rP!($}sRϫ%:wV{DϹc6Iv Ac5tPs9`N Y,ϵd@h ґ6`S&c7߾w MWUNB [EzPڔ tI~h{iBʎWu.?|[jC1~E],{K EwYmΛjpXl~u;QS\>>iJ9?#bw^ivHwHc/hiV(a9%fRA Lv:\&IFG}J0+ggr8xc:ɕC۬d.v5xX~Gψ4u8Ig7'LpY7mIֹra X(đ$ڝGj TO$шxj=>G0I .Nȯ 5ᘮK='.V!Ò.׌'p1wr\uK߳=_4߁C-G! ڊvAI~@%~GX$KlqȁK-TnMa_YEcq*dT=w5҅OAUJk y8R43R-CPhgLWP4؁D,3 iWx}NKvriR*=+3_dCu w4t#SC6<{[ ; jwb8csw0WFo:Nۂ0AU"tezٞ&r}n.NCs2 s?#Lu7wX~͟_ 3o0F:@&,KHpP˶_}jknxg~jY sTM]%;* FgGׇ;_<y,'3,Ί _ V3j+MhW(\x PwK=8*W#29ZH'c,h;"s'T{)Q@U:Q}[%@ ̎0vįŒ8|~(ȵ'=17wmv$sWaeujSbf|kUI0zMhWivzW}!d?SA+w'/@4-@h) v4yW3+Be@56;?!*W }5xLg^(':PVQFWxX 6뎧}f*JBBJqg$R)e$ޔ{m}*9s}]ٕS8h4lQP[K3TAKyO_N2y- 窫ݡpBq# ~OM9= Jo>)V6{ʈ ".{X0hƑ&HLp*9 5~"Y OWx-|ikaΡWo÷"CZbt" +2R1)k;`Z;m d쇘 5^jYHƖKIKmM3f ;YaԖ}H:%3<XAޚɭ Pkӕ|:3*|B Xan!$Z{)& }{[DyU(\ 0*sp"~I;VgnH/4*rqts4Vq|FZ|SM"MHz;. eĩPD,,|ZS{s@OYZCiP:)a'=qu'1p^_0D)=ԙ!c4@벲 D\ӽր˷TKmPu0F}[N<_z{/BuǾPL<˥1*c8J r%e"X^Y= 2vҧ?2C^]X?EtTbYB1~fjb!bJv ߏ{{6DkΥh`t1Vx%6vZfnu6fMPjj{ͱ|`u7%͗C^TH4< 9 B.%sǪlŌ^^.PC\<֏%D.ꀹE' kj׃;tD!V¾}rA5M=lS`zc2u?Cv"K c׬2+ P\8I =,A G펀6&_;/lS"?7A% Q;dYCίD$JɋUsjz֝Tq:IܹEOq3S.xWM~N)k6}+2ÄÿxqޙGG hDwՐ5ph(fߺ_# hN!&#Me-cwHc~#R3񮣧O{Q72l oB9I);!gCftwe0ǞWC䭭?0x^COV>Ǐ8\/sS@7žyq(oEcH3u*l@o׮b-u7uӟ(GbgP 4%\{&ң˞:0JqD7V°WTnP?)*:ilx&$E(-!S _+_ǯ֮[iHKG&t֦{:T\4֭ fM%=j<%9b ,-6̚ldJf 5\Rܿ%wӡī#f1|["a[Mg"5}.nYIBK~ڵS?`#԰_ )ԃ'!y*5=k|>FUQO2T''P,пtymCh_hv  [ł"CR+HzYy3NBɃۉoA / Ft7^v_cNb*gjA(8q& Xp ?~o؍nj_ޖx] OU_2E`eɼk'ڱ^zˇxcӯxCXWø1S>*ʘ1p9FX7A{I٧ap*9*^q83V4?@ ߣ{arP; ݜUnƸOg'UKsۂz RK!P`~%Yo+:^b]rcX_%2*:Xz# _5Gcz7 kP֧fX?2_챊\6 ~Cg$'yv <0&F}(oQ7d707R/扌O0`:7(@9B ID{)_ޒyfSi X> zqQ,!",CJLHT"}Q[}!GK/ހXk2MZ𣆧$1fܧBOAa &ot.U\^#s֗`#ȉ36 4-;ՋҦX1Ed>mI+KKU͡X2-֧}f}Dpږ ڸmV`Z^O1宥wQR}+~ {[7PPhF&9pK*pY6YMBu} +ZVg"=!ؙnq(yªUjA i߸;9b-SuL0`*tsr<xϵ2X{?v!C7(@C_IXx❬qu? Ţrͅwa.msv$ymD6\]kO1>D^JI?=0VT=rI~ XK2[i*)A$(0ĕ`d yAUf^rfBSUX[DJu-$?´ywKU=Kٓ}>E4akXlUOp{jo9MуҐ}?$k)(@Q<Gm1oƙ\Y'I'GV_*r+Ұ]1AABdm$WtGrNp.v{O+[)>Rz>}pHhQLfd)c*Xwv \ $'U l 4h)g'znvų_:AVu=!<>tR?| ݫ ]*0\~s_]_"iP`6iЉUIc);J2>~tQGtg0{_TV xӟ>C$'e쑙ǭ`[؞p u䡭z`~^M$:rm _=y ޸ּu $]% ˗Lnj*ԌT(dRHRa?r'EHB ӯWpGv-E{]>Y\K/D?3 I]OxBn*vtYa=UUآí?8O_cqxQkB')arhfݣx.JB s*:vLuy9CЃ~&~ub/R) '/GJlX'..{OmJJO4ҋu哑8 p\x( yڿ !f3e/,{QC*vi% AMVnOԾu :/(}+sR^/m˻BeB9Zχ*@hQ} &k9r| 4B Sr=Dt4Ά_#쒅̨Bȝs\qE|tX{a:tÍ\y"ArEGfCEi#N net9hw~O܎=(ZO1M7ϮPb.QaR#I̬l\'F1[LClh:CK.,(rEmB^4v4JH}xQ z/ZX%@Uow}K#@Y"3C FJ0h;%%W ngH}/MF~Ǧ{D͗t&rԆ< Yu;];zk_`u7HVtչ499FMA6Ҏ9)Hp2hG&s;cԍVI"_ng)$cOlB1۟87!&?ύ_%Jw~43cgCU?8㜹Ŋ) UXml&;@dŽ*枱1?vI&dS|GtYJhnчcJXMW wVӫӅ4W$E /d?BgxlLLE꟬G_| Xc551^T֓-J`HnRGoaA'Y{0{ߕBj=Y*yr"XL진CV*P!q(ptW iNZ;;u{A9"tBT:4N5yeji#PMF"eSWv\W[|0݀O֌>!c56>AGKF|6 *o;b>\척x:߮^Ijlf73eűH@$k<32y"šIR{;@]{In, xfbdF *1>tj~0[<%˻5̡֙DE)qj㛽>J1Vƛ}Lռ<8d 43tFVXg&VLqf䱅 kj؋xmxOŋמ2 <†OOJkp.d:ġudfCۈ`<XYdTFy2V9) i5BiycpX[ԩh-Vg V/i2*[F3*xOUOe.AQn*cHN/g/=Au/^)ۭ}HhIn([]FP RU$p)V_^Dֿ~΃@;v9(b}s>\){sf0F;b ]2Ewiנ]1Ї7!U-R' V mAӕGPs0q_"tJml]W'il =0Lvep\8U#\]+۫"|ԈkcÖz[XՀdJ=c$[ԇIE,P, -,]HZ!zǼr?~BSF>P9Mr\\!~(+l4-ӱ!LrKӫqibv9rə18u].,?t;#˟℘7}\<Ơ34;{,@K=Śe'nA/ /?cL`mˢ<(NX9Z|ߖ1S^nz}s s:yp' JY(Ӡ>q _: Wn'(?4w/*DNC%[poOELƪ %:Y:' Sl=" )rPVi3&JH2L ɦ,!9">чf X ċ+\_!A9Zs+0 $.b'waw-DJ} PJzzFJKrIlcTnpLz) xq,=˘QL&߶!ӐA=="Wk\D}r}c1o45#TD#_2nRWJ=B X}>ΥDrۺ#h`L9a߈ NY ԍ.P:x".Նp7~30<±5gp޸ZO By#O"6 G/<~t;ڌ83mg_c(%.␚RE 5a-ҢR.a&N$;uD?(2jb˜9wmYB' M Y~QDgC8KZ5HAьn ]l1mL!d66͊UBIM]c}KܣY7?;MesΗk1T+ (Z4}VВΚk~?6ĵWZdsؚ<\Plj{;g ,u ISlh…]MCCT8{bկ45W _S) n/ӉqaIWK8BtΙ/ Q\F!R:4YƜ+:*156I63z>)'`>>رxfᎲ&T7d}PoƁo̷N&&]ڱD*ved/FR`dկ1iǍ3 ۣ d(^cE氞 ;|%ua9'Ln~$>gQwhKkxiQ枣oddrTݐ-߄)QyZ )6|=g <ё^ o'Cx?Go_!_ 9E-X F}_de`2o"^k`3 ZYx!SֺaO>Kְ~ gX:'*^ZlVtPơH6[RQbC,I5bZی+,KٲS1n>|Q=̧.)Id\،/N#'ήôs)mgaÉ톿a e*0{>,=8AGתT Ρ]i1nھtC<Ĕ[%&7E %R1EuM E^ ,$ʁ;{?PsnJWM\kk:PALΙZʢU<$֢YD"C=b2lشAelysn)|yI+IyƱ ʼ[J Uiweu{h~$sL 2% ܄ 銐IqzU ْ!LdMS ,%> HA[:4K"`lf М2"??m}#=ގ `,ˡ;-_0yiI!57Y;ɴJkxq +3!تC5֊l[q6 fDȵEܸ~4+G>`M^qOiwtCo az+e,KץGg#UR]zte4^ak`J)Kh*՟Z_fW0%I.i7Ǵ-=C9tӻ9#bvyH T`4vgJ9tݜ36gPq>ҋ^gjEJ5~#qw#K2/ U!Yڪj c}C /ouArMܐLv?>N+(@sz7.g>mG#&9Pv/ہH OCB2H]p/^)9{Z cMy`A[!(_qIRSL{#ԯ8&yJc| |dψTȼ̻& =J19%yn ={Mpk?bǧJ6k,{| XdBiGF+m9UTx! 7FcNEehk3f3Dsa~ouy!Q6zo%JD.f!{Ycۍ_/@ݠVA!P:yj=GM4gW(LsO*~wP7:]*Tt?l c^ˉmy@27 ޅX"KRY۶?-;J=W|,J%# >NNfT͗G4BOCi|g+4 Ü_/ʀH=JNL~S/c4Hfl }~y߯|ͥ`\*E"4:UIei?Oto!-wޑAu!^?PjQ4qE0 VP:Z ؼԁ1 ,)BrZ= h3$ ߔB+ < UGŭk^݃R^4XMm*_b\_9+-ݼ2 n哻7 ̘}w\E~rC1ǫ{;D[B{U5e.\iy*ֿha& 9kAxc ^~Mª?T+/YL6,tC޹` " HB56Ad202I6qې_LZ $e*v߀ !EHW('Y^ˏ,FCOUwpu8,1۝IUj 髽NPߟ~j(S³qE[)G&qD_Tq\쾯Z?)9Jq6PC/d/8ZG'#a~:l!WJ]WEU'hI~bg-6m H11N65ѴI^?ңpm6/IƉ}TpI,Y\}U\*ۊhĆJ'?/s'9 v?Wc)86-me7$${dPPIwKP¢j u/@yE[e֟L+9U|19P?\)&=rԒϰSgRB/aURU=(D* E`񃨊3`B~ٽ#0ɭEضEP3bE<i=hyDk܃ [$E`c@|n=GJ h˻CI.P.PhxǗ5{qh*8 >dabWh":HtYwEj0UPZ%X{+,GBՀ<(7JyRxىpzgMh)-B1@D:< /9q􉝿{Օq,Rݨ8ԱONE&D_U=Mv遖ƉM)3d0j@@W'ڰҋ[b)uCDKw 7NJi5Hg&+qzn~yq>?]+Xrt#"ş:fd~Txޡ/Hjfʗ{~s ?qgY:9ܮP^?~k&@c҆5t-ZчBTA}C ; p\o_/b3e46Vq1a 竪r)MŦ9;:Pv~#xDHC< 2ҕN ?I]CgK!b{o4zHp-7h41=gt,*KNaPg ҧ ͏>}ۏmm,oWm5XAg58$ sJimlc[{+4]yA+[-tD.<A^'†1>oэ wS!$//(N[dJp&wfupϭ؟Zح[aE߈~Gg0i'\4+% ؠ 7C ǿ cV|`kf72bKȼdVO_Z-=$| R OW/mW[fМՎ!g2{aN-!?d"fvlޯp{[z\W ۮaKkY{(qWW[n\Gb6v٤5u;.^R/6dc)A';`gfn5nV00,l<1x G$"y#<\yOᐓغh [vq)xWC*r S4ӇAS5`8Ԧ] ,Wgqx!#ش4**]r\ ^~+%`EN&,*B酳.bdĉxcY\S@y2c~SfJF25\rf!qX5G|;KR҃?wVrXBLW#aiOe?N%Hׄ k2HXLpߋ}ϣ9YE~ e iZ; ƦH0at@P6 ֵ`^3< (ۇ/$UNyrd zF >}dhřcz-IھDI0}=0|įfS*#Ǹ۠ư+dԌuC)^DNfF,| /RyU%:Bq6$n}Z <=Ōt@!v2 9cH!Aʮ4)!2ӑ (9G_ń3 oc!|O[Yw 6_5o~aQ1*VH;`uV&W~3l#V[{$λ ;eu"hqަ[XyCzؘ!ԍ%VGuAz?1s=qDži㗧IzpjA]p oPZv^.%;?6e:#72ɡa\94̖wC˷ܚytbĴ10aBnlM#Vl\}'=` ۔7Mf)3iXgϝSBDkJa# M~VCR<ѹ/P5㐾W) ϺyBhi(k> wRj[Ν3؄(c]s쎭W<옻O x܂X˜)sd v:ކFK˙7§}ϭ5c!|{<5VQv¦S!_5'v?z>LgኈgRXDRpQ Oژ}cSt f](\gZ^~ H[F?xk=iLk KƑ?%K0Y,?W1/5n1;m {cIɲoZv&c?Uy]Ƽ]Cs~S2vaSW\[eH"˪ƒR%X *D&ihAv gϡj, ٱ3XN>`q=JdB"3q.aS΃8_.t}<5\bJuQ}iB#'Sp4S:[0vou5R4fTNH3!;{S ;c9g#t05A@j+*׏A3S1eJ/T+FZǡA; PO:0=0byY=igZ(`pdQd?'-C!7bqOj@ q:S[2^U!?$S::t%l87 mDg@oE Izzrw3?{ec8 ^Py=i!_v!02t- P(PӼ/1o4[8&ڎZ]=ip[HDgzܝgqz̋'\nt{\?wpq)Tf)2r8}g1E[) {.1rgRbI"\ji?ˊ\;k/zqG[f<@%N.S1QO[3/ݿחstcL8pTP$TIy`#зv&?`kY,\Nf|g{j΋[Fp|DLyt [)`璚"Xx4/qHD(Ν9 L+CƋ_S!d0&pydZɔyB бfMӅɿXן .},\2{x*_&Y- k~oPijB̋!2Nvd~ k8~Ɋ]/uZږ޲;ƆyoI`lTt5 OcjkJ &]~e9S@)8$#h#޿'V'0$Q3(#s +/QO[ M&5tnmTBse z6LΙ'X4xkk-Ƨ_KEslԎu>1*?>G UV#PW-yljr8ݟ}ߠ;o 6Ϧ7[Udb}!* Fig$$uŒ_Af,$P޷*3J#Dt{R$<u4a3_#FA,@S' ɒ"w3۔8$#EJv.]hƛ 7с*wnMwfn Hӄf!gg:5J"n;$ՎRh\j84Ŭ}QD|DJ\x*=u+ )VPq.sxƪʦ:d{)uOQ oW z?]{tѴ}wn"ƌ#Z=r?;۷mwVb AW{,atc3(ycq Kڏ1X c}8޵;-sDL'{-۔b(hQ3C}M!?f~vu(f͏=}Ynm dzXA5:'C@uV#I4)aW Ŧ%&!ҸR0 6ؠM8H^-vS+N-_^yCqmQHi-2#,2i&ku 3';:'û^\g+[O[E#X6[ˋdDԸmcM(3vvӶ: eY@O{aԉ+$W|a&Q -.8zIrGS$`Yq׊q$_ʄ~BV*+%^u]Gű4U}G 0<NEFrA̒𵠯O@&)60@8{|77YM%}@=x}4˿b#XzW;G mF܁{qf&mDJՂoj}wS o117q6.E[Ng%A~H$cj B#KTvt'F+,щCY(2_Բb|$+Zx%|-kȋ|^[Ak=д|%4Œ]PT?v$d P4|I'q@xqfLd^Y"Z ѩCGסWEE(e uV͛8r{W:r8DķR.,{~k["z4(Ψϴyxm<ưڢҌ폾ؑJġan`f  V8Yv e}-L۱,3}5 Uscvjh. ,Mnˏ|^Os_ AӝPz. e)mӋ#"Hv0a7S>A#/!!Ea{Xa9fZ0ߊAU=ApC n*˶adbnbbY2x!<.%)ZN_2oc-ic^ @߬][CHI%w~/L o>a2[6?!ʉM Ȟe9܆PN.!917H=_St׏*=V+>(\4c>܅,7󠪼`އ #>R Bc"6]jG L90'I71A(NgfҖgB!{whBsrrRςFKOҠբ.=C =u OYXgJ;ş>B1r.t&w_*&){Ts![꺂8t3}暙VdQ#䰞{C[,f*Nrfp}rS䶛{i`h H1jwcp+2JO< ~%NOJ70̆&xǝj J&XE7q(Z|dj?|2^-oMF{X'1NXc!Z#ţMtX:˖w1ƲU%~q`GH/$J<&`oK˧KX]nĖh;0‚e:Cj5z4-dv拓KC\y5db ;olᵑt;s xn+yn;~1"+׈BlĿlE4HϟIci2\)VϟlT;N50l*, uHu(0y%կ]C_5!RѕvW2KTyj17WunEAsdki_47CG-p/pΒc7N~5ȼrc;e<9ڂE-Ďwjx)e.PMp@Mdq'ENJݠЛk+-VqF̞I2-x:)w Qh&rb(Y21cS=!`^` ;?0;:8AyMV[?uE#,T$ -B٧5yY!!pGq.toƆL,r&3/Gp8bWO-2#$Pgﰋﴙ3HLjvu+p`oͱnIv*Ef5ЬA( 1+{w;y-6S#zl,ٛʥݡRB-ă%N95CWTgipa!ѲP/#ә5Y:] 5cj|؍ثGde}d:12:2Zj#_c;P~6 Zams"y1_R0ke6tp/FzD6P7Mg=Z&7k& ;LVhb"fKr0*t1(fuIBJ8Il_ O\ϓc~)b}nйqb9JV)=/0p ^c_>F\9*/~d/bg?x(U "ӻW@]zi _ǁ̲KUҿD܊O@,2 Êg^AI7٪ؙvc 9AV}ֶL -|?AxĻKP5 ZR,Ʉb@ZhqF8PtA-ՠGO.f?[K4řrwp1=נ\ܞd=¹=Xs! ޏ)8tܽAGnM?!Ck(qL {4|:!U6'n6o*o3'Ū5ؽj$Å`fεg_rTƊkN~؝s/ 7dVk+K8}_xj$@~G=XYc  tzI,K7}EZy,5J5 cˠZ8G&dZȌ/\āL3_XjxXM]\fY]SGNջXǕ!#yP/ΥQ~ vWVٱ(;օnU*v}ӮT8~Pa*k~_̳ǎ;'qQ޾cYB~N^DžֲFև G:/9y+^FOOebuv>L!J<w^W|i> =h!*8`,h1t3'I݅MI?ц ܸ}5탪ĝ+t02Tuhs[/hčXcퟯcey_KJ  W[96TPi~j.>?im"-96 ?Ħ13VLcWwm,Pz26C+ڗ@[z[۫?ӅB9Ǽ!|M,kɊU*;%*H gzx'b+uf(kSo )%i!RKtҠ>uQ?=U~?p_RE m*q@xV+(5!OEaL ;UJ(1\m} Y }' [[,^ZՋü&pދLuV/ ]hUĄS.XjՀ*  bSuRjxAwsHɢ:*66s/fT?ijw2s&c+21|:)wϕ?οft15Kh((p#=ikY?l$/s7u}S+0s'2'~ N_"t=g-t`A$pMi1'n y3`dMLh#H]TWM zS>=v bROf[Aߟ#R[PyV1GISP|{"ZyoőD!P-NB%,r?tb۟=8}O~=~ S1™sPpM(3?em Yy:i!{ I2D6% x:Q+<]ηp+F4wǩcX$g C],/:65 b`Z@[T=rꨵ27fnSn &kyeƣЦ4lB@&Иq}\HAy[7X}4- f\(m4IxpnW.b8ĵPvvmuH8xc>1Jo=* OA2 .lbށ/%ñ PRT^Bo i%0Ħ .<0"%c"~X$$'kƍ%xDO~r7^gc‘Տ}(|5Y,wi~IJOTBWģS߱h2Li3Ӕ=z2S.O[< kv%I!=eD%?|[Pv+%po ոHϙłB!7a,Ib@ Uݓ //텢uz.7tsqIeHyxf*q8꧇T!.lԗsM}{p?=)o\4$ %a{}nrAJ|D[^E@ZtDD8@ǩL ]ch~}yYQ'l(0 d}@|ZK|NAR a}Y3{:WLCnv4toTAqYS7'/$k @OW"P~4I79Ez.6R:N|†둨xHM׭R3.`ϱSb'J, ͘Ɗdҽ-P~Gp@g4CjX &=޳t/l,.CeQR Wk~i8 Ew=?aakb54N84&/30$~{~I'@>iEȐfu%y3NƌsIwi^n*$')nAjE=HK\8[$8D+N^zـ#uZopt_r鱫+;R[# dݦ=bwJ Nق nˑ{meӇ$wEd+ ^}fa ;ޑA'ׇk:0Xqmx.@1+C{A) # y0[hE>Nk s:!I)j~w%/=ToրˆC3q)T:vvwֺ5?uza5UTvٶ7гL,259$P^E˅ ݝa%Wp8]a(M3EIp1m !+oϠSKf=TXTx=`ޫUw #4wjp W.ΚBaЯb*ݗ4uCiМ$C |'p]:E 9W bFقBl4!7zc0]gdA#7`>tWz6Bh24 NAeѥo[/,}anf\eA1׃ 0Wu#J/,'셂?4Fث2itǼ~=wB_|sOXojXjG,3Fg]?KQA7Mʋ42M7 ^graTOw\SɰTQ'4e.bM{Ihe 9GAx>#Ȩ1_1EuRţF^0=B +}|;أae7IS>~sVfTsf/S;2Ъiȣ(D|[_&ҪnjrdEM ?_wC:PVZR=4݁{s |ޡoVm(!/@ T]soQ%=a<}<\=E9LPK-R2X}e?Hc,TM!KvK (dU3-Z"t(sZkŔ^[< #!2*-sH=G޲~t9>M(C,dӦ8b@ex+<&;0rqy]s&kɍ@!ZKlAy"%6VߪpV}3FfistzJK~ـcQgAx_+!RUۊN7c{)_M[X2eUu Slw"(O害Yz|$Sgҝ-dW{^Ou#ϲ(|lb'F $GWIIջ6Ǡp؍CPB&tE=&+ wg~R3֩D y3jR 06 xƁZssOq5BEg9{ƒ6M|C*[Ә[["8MFuA0_! ǽP감z .xrB3T^TgIbcuV}"1_a 񜇻>'e倦 al&RBޙ/Ð `i^Hc&7uyPpocǽAzQ wp g{,夀00otv_Jչ5qs{Ƞ3vj'9+{QTH[m{#xsNmi&B>+e>Q7$ě)YxfC[~0DC3 h)u|zR&űqجObiSǷ1"D~+~`/UV?:ci|P3U+&|t7&-~BtWGџlzIrӹq_{],CʨZdxV{I$V5i_n[&WR=$ tR-qB-ЪtI4lOY\CF㊐0Sr"'<7Q0q_:rJ0Daڞa m}[n E5vD/Nk&AYFYTȩp O`lWv"V Ķd,9}lK2&9'Tڮ F=uLd~LTeH Y1r ?v0cl3c%doⱌe֛MDcWWX 5#]'f 327e?-KDr&"1A`GؤRm}\r'q,q}kBp>nb-MLЦ6E^mO23kGXFD} }?|,X$91PCѓkt̢VB~}0T=!,f*]P+Xߡ/Aυ0q31fN|+k谤Aʉqxv9 1}Z-uZc7חu?:-C_—{:T z8,zX 4VW䋸 1P讱ۼh`oֻS._:[* V @|v4$_6O< k#ꆩ@l},boeU: /{}K.Q&5DQw8}\qigw3u’iBpgɞ$~Ni\cٟ9^v\5Tۢo3G*,仯f_ׅX8rpF4j29Fwe$[mVSQ5]cCi1ѷrMt: k/}b*YH29ALT{{TVBq`KKSŲ?l!^(ϺU -NaE%z}~UBJz'rC퉢g~\9+0xU:p{ah9t1,cw L+.@'L[OY?:%돚uBi&t?f Mx5h/1zssWqo|ÏcB:6&9IfZ0>|i3uIӐz&5d[QA],~PcfΥP\r gBa"M<-,[vuԏC;αڃ3;Pq:20RL{':|L:~ DoC_l=ҖH!T`Zİkt؞TRҁE w:R:;5ľ_|,/d`uS7F= kp Y, =aw/ʫ"<jPR6qdh3n6@GL>9׫В'IjFAޚnmj]M{'.u| =Xne$9Qƴ_ %C~`>i:V>^ /aw{,g DWu>T/cX|N4" *m#mq;U7'x|Dz-G 1e61Do/y*Hav_,ĐPxY FT24]y5BypELZ9C[ 2_9Ob;鰪CVX4iVrA~%[Ь!پ;-qںPvLZԎ}CX6`4, X]Km׷+ DtTFc]m)Plde}!T#X\5/_Eb^k#Ss'cɛF!*FQlʾZ< ׶+k^XU/N.YSGVo/c1M_Ds>;J 9]!b]ܢJ^󫫇Gh o,j]PnX6ӱz׭)/aqz%$wDWNInstgť7?ѶǂӢ%a}w 8&h'g\ Ѻ)>z0 T_,/ v-le [2 сz R70'X֐jzy>oǒTH^CAa_Po2I9JTj3緜&Gqc,|ryxeWqg_lNƐk`uBA x)dA苣kBDgF(u0H}a=Ϣ"XuAY˞{Աb&>}!I>g~DbSaR @L14Y$9nNobֵ ?Mf5.nG!v[6#!;T[& &:q `* h͐ߋ 5;ѿ 7L("$`uaot&95[L=-s49%-]k!nͷй/25*~H?*?;<T!4qG\m>ģD%L~T'>jUHvMAKhOfPqDC³]e(t-OpWbضzPzGα;c!Vp\WZBK)2,&6&`'j,"Se7D1#eL"~:_ *~i<~4ZX7Sdi a}l2'Tem.x۝l;2O?b+_?k2TNaH\'lVlag/|wN"I%#;Į={U|EZ>T%OCK%fkRP\cI&>܄W70:a(yn2yk}H$}['#B~BoK '$PwI*zsSח7/ i ->gܬƲ)iº2]q<:!q:}#e_ĺYmZOP/tlzo\ hH¡}{04n\e|ǯL0n7Mg0½^K 2L9C焒I(v7R_F[T[LJm 0YѠ8\>}N2;!icϫS#~H's3E_AwIO0HvJV)06@ޛj GePS CߧF.Ai1N(/:'Xߊk&/b;+<{ M-?V  8!DZfűL! 8E͋m8\p5[N~u?㦚pt,}@+æ~C)S)t]MaȒ|  \s[*K0au #YšGp`t:; #;?P._ͷp)\Y=*Yq36kc19$6-~Ǻ^Q52LV*|5@G[; 8a~Lv.FEtxHTív9&y~,2slqfU&~őwTtym o:h=c .P6Cj[rv h XF`ćVvdFn?{'uS=xsyq_u^'ڴaA!#^'qk&h|sWȷJ~]vO<d8r]UbRK:ld'.Ė bPſo !}J{v^k/NtBM}dfI櫛0EkRlZ~F@/C_MW(zlS]‡󭈌OO> L[/ڰA$>[z{ڷ~(*Cl6ڨa=1 w S- ];mvpBh%Plϰ+qoqaT7&+B6Oʥ>>%@bꞿJvzȢ{}1]L$IAh7}ZdM ]dgw ̼LwrG\W&ȷIDJmD7o}WM}1H*)㚁]/,uW+asUc!e~+Kwm+$;w̯'ˋb~$E&/^yXo豜 P#NS¿ĞMby-%>(U]8xDax5 _S‰ eI8##j2OxwDpǡj8$U~Kj1sRS| j8eHZxc65=܁w 2~yC8t< : 9#Ŋo7緭)ezyjK8)?L N vUI1o7#Sq< 9] ="?$F:Ew^y.`ej@1c!~'#n_U]faѓ8s߽{$gI2weBjtmUe}h| S1Q~-07?En:&>N/WnyUy${Bc_v aS?}Уs5qeΘۙC 1@8_Y׸ U1awDS2+֘_aP&{-}u;g{nW$6}{N'S,N7%;NbF~ߡ]ؽ1`íEްr> 7vҢ-:|"M}|(6p͈'1^%w !o59 7 3̝i3s{hMxcj؝^aY,B%o,U^2uV|t yeK֩AI DQbU\e40Fű/;0'_iFk}oy"JE#g +u K~k(݉:Yy#5(>ݸ'5kZs3Y9rXԷ/5ux6 JCj?%o/:N/[*XROU`j,odo]+\g~O}ۑ׎!2Gr7sJ5j{ k ]o[w2 Z=;p ,s`zٳ[7C=Xzal O8d \ft;-'7̩ tu ݯ aQo% y5Hn7\k1r4Hm%ssfX~e={f+ڠ[?޿"yU1!TS=;J}:oKVoˎӹ1Z|'CgnsGkâb2˥t7ltޠxy`qC7Jh0-栀rB_R9y& [p[5,^SĄN# 3i}e^,\ui=عDq&JNcg0)X崼Vo3vj7d6Ӻތu[Tz2}P{S/Az:~ռE{G9sZk@k29&rʎ,Ӭqe z*4JΙIXqVcTxzs.b-A/Pbۖn*?M! p,QVWUM"􋧶Eť kYZzRp*Y=[@B{7)>0 34Fس[ˌNbFSCa58[f'þ֟!7pJ*Й~`V{P}۲ &)aL<Ϭ!*WE˷5 j=Y"꺷 ˭ jL1kib.$beQgnA VEej(.__/E >tgl^7E?;\u/z\ZZΊg^9SbęYdLea3VςGjwlJY@RGPO dWa?g$}f4=?e;0wJYn\/YVpJ1g7b]&hzAD Q/X}(M'NX1r63YǨC @hceU-늤BFbDZJ6rzol +tIovE`ŭ2^LL7>(J:5OhbNOw oODc-uSZ3[6[ ) /qȦg~l6^uHח`h__{| fM*8dm߀%d#uVYهhJ2w}-Q=>)jy(4 O)1wE}!sl7vVo(v-{,Y#t |T+aWBKoaP85Tn< }kP91L vW*am Ӽ;X$SAX9y4  s`ؚEp[O*>kJPN~zY v{ĠjTxP *H)^58UcnbK:>Kc:nuNWaNl.x|޿T>΂_*,RP$&P!!NlJ |w׹oسSUPhud/wVԹe}B (-&/F[FPZVf;Wԅ^0iH?8ڶv >ډ+q c " N%T tPޭ$;kӶŸwgcs ~9I9#$ݮMAi,ceW}zյtzgod wa wOCF.: w_ F(1ߕ62r,,з ž q#χ=ɴ^]hcϻccwzimϥmaQC܍lS8tCMoh:m n휽Ֆ-v`f]uͿ ֮O F{̿B Bh፹*v}Χ3)f\8K(G dU^$9%ݼi;K1 w]%7 w3EzX^l7 1z&hq#] >ύ9C>,uu"%ԝ瞌=W$)߆JO.CͤZ5"?2ò;,5u}W?H%Z=_^Y 3kg燠?a f (mO|sy??˜]GOBhn z@r1JL*Z#HX5aƵU\`T7zՋ;}Kׇaʲ xYD}=MSy B&4D6^sg綞) a㍈Ԥ{wopptaxbw&27O,D.q7<0kmL'*d_ݷ?cI}iXWO|3_p;_?g\郇Ga9+Z*{N+ԮBt?TM5m҉5-Pw Z "m` Unn+\dc}a0T(|V|#Vyz/Q}KXW1/Z]֑tir3d|yآ|Cݔ:I**IYOc nā#ְ¤JjvjH߯'^XuMtp.v㐟{& b}XM/GYںMGc1Iֻٟ7K@a˶d":4Er;} 'v;=^p(O1#r}Dhgq퐜v%d)f}GTv-)bxתޠF^#?ooz$/V}IsƑ2Xf[f Qу+gȳ+I~Jq'7_}R׆W"2l:{*v /U M)soc0]U}HhR26x;w)L2[9^{33"?A٪a݁JWHIc ΒY^ϑ=-PqzޣlnLla\՜pXy(Lӗx;;ZcݖWi K3mBˆw!챣wr)SxH+4߱43fEIDӣkScM+d*e=|Ջw]9jh+:54S>1/S6BG4y?ĆS҇W<-}CX\g{Ʋ^S%V~]Ĵ)Ua8U]zZEb],V28 v*0 &L;k|G{٪4`Muq}YS60oϝKAۏ"M5m+f7tps?DxC0ܫpd= ?VEFS˾Y ~M?gƘbפ;y0e!^S C2a@;D9GqY?}(3>ezIBauoV ϕ5B2yQ++ y7 dPnt]N7H7wtjcs>1PNɽ2 r}7'W@Kū9 *k CKҫU5;%!ÃRA/MރO91D.Ӫ16w@߃8$Na*F;~՜źL/k&w%X,=ŏPbzp!2R"~3j깡7ۡtvfe)5_} C?BESɬ,djTru=ڶy&'qvZ{=fלq?XP sבhvoֵ˯Z\Rİ!Dm|5[HsϠ_?[>Dǚl&1j{XB%^2L=i] e|QogS/[sP$B\N6̻}jC0 ̾ yb,!+VCZC,zïSνsHGb٦H !ug!cz\,nPN}SVQWh'LhAX8d 8R|72sl m%z߱'?|ņnxE|+:^$WxfiɥOrf@sgT̬]涀6V*3ŜS짱h)~x+Yz-> 2nDaN^Mԓ&L8r!yӕC`#! .yCȏѺ@#2k00m=mestK8X*hia,M$d0eDo=PCS0|k 'Sq".d9~"?z- =>y];MwCftdR%NL0d]xF?ß]&'o=6X)B56C^stf\XS׏kwRǕ>ٌ۝CgZk#\7Tybz5ZG۬ڂY^g_- #9P/U&a(=&8,;S\[}bOw;FgB7q2ϊ DGɫYMXxׅ'.`3?"K۶K_^﷟X6Y3'8OGRGZܰHSNMɱ|wNAC.8;}VN` %GKu5qlO/rK=WeAaZi!AX}a'gw@aXrT$}툵?F+N,TBX)icW3L^rqSfSk>x>M5󯲃;NhɋX7 {>x MA{FXvFZv/Kq Rj;Bi%-4g砸eae1d۬Z]ګhA{v8_9dJjZ!" C/G {(@衐GLUآ5w|rs8(GAo1PBYb"+$LPh*D  Gwt`ZxSDı' knۄj5ԙRՌ!>^ κ ?l@IyAe~ժJ|#K8Wb6c֝ ;TIwx^3ɏ%@ވ]PU< 2t,}⽸J;:`5 j-uw`% Haڹ5>^ܾ_bT.@Zk_SjjapVPkHHq ++k-=y!(E*f[ ZCBL9ʞWcO~LJ=lճJ0r~!#aiRu,aĺgU偻?(0m1޳ @Д.nA ˑ+w+ewo|7[m?&G)5i !+BS>quy@ 7?@]@blRdLFϊ} b&Hq݄$[&̓>8S~/^IGlo>pS,n;(J^]voCjbSOϘ|\V$raS.x.!qG5l&<a6eKhȔ:o[Ֆ0Ll>ğy:dBUܟ~Cَ.|b;lk V9 cĦWRwm{,aX̯<]vkq"TC d<׿ZHT;yheuO }rVĞ'RM;i3D9-+J?CRFFs),kuU<}ґHHP;9ɩ屽4oߎ@0U nFHv|>As'F h9+(,VQwMԁ;'B^?:K_bJKaV)|oec@n$Wǎ$rL5o$JӃ_!jO>Ls=WZTe>En[c'@vWg '4%UDHḄh'`ʹ& f1(4@jW |Pj { Z/@˳3e?! ~03 D쐧g}ŭ* )j}Z!P]w5Di>RTpbʐ2av$!sDl]~b*Y;/Ƽ0odi*v:3@;jIBvFRcY2]j ?·uljhQsr˧ܠȲx.1 !+y3M}PẺr9Msve?&OfCwY7ZfU'd~,3nAfm?dO*!588;@7V7X)mr'4q%@"?NN| bac&!>?[dc ev$ i2rZ|Px[upp7g YZ+(]jthphh<+S$7बGSE>X",Q46tVr^9K ,3q֖sDŻ|'ߤ_3ݭUY7scY*31E T4~>ePCSj>UA*1[}V]{0+x₃?|3n!GMP!R7vczG꘧S!syqb]ڳ"kVNAG7MN^-)kwDTE,YM_{ox>>)8}R枫Cq% vbq/g͟ᩱ)ut@׍z{sNqv虣~3qh{<Ȫ걷6sĎCkm}Ob0C,֪mֻTKuP*k.c2lHC>f.QE_2LZ>?y\6ڄ:`cxЙ}y:D~|-甃v w෋/3 >~+XY;Mc8uy['+R)型ڣA'!|)Lbr@ Z{qKOetKb߬Vaab[kuԝܽ?a}{~ߐAW®F\nܳa,~S,2OGvm9+}(7z[\r@ԭiɈK?2+[p6o= p%C-mguON?(0ЦpE咍*G{:6lmJɥlHzaWP.͗q 9[sR0J-eS@a .<@O *AǜZੑmPs ]TFs+ twQ ;58T*Xܙ|aWq34]? uyf4JP"Wdy -DV%W}'L0$V)Hu(dg>H`cQs#vyŶv^\M'92̽ IT7GV9ѷb4*q~Ljb.8w-ZtzYU; (.{@2(4~`OSd![[?x!4).|JE`OwPڧT ՗ Jx<oS5x8f\w% *Uld(W ӡn>Waz| /\Rt@$jY;w<]Q=gtx2Z7PS0Lv텵R[q'KSXfdNaԡOFi~P;LS 8-W{?BKi:((?lZEs-,AXJˡ-z R=ԞcDwti1W,㫄Q γ4 ⳞUW%&=}3ɾC^,i0DdVq?V%70m^#!.d*&?(g>}ЇsƷ?;#FmecEvWN{OHc{Om/ 0B`FeޗteNJע@c9 wGLS|,x.n4 W`WA0}2/ w߂Os#K;/A3*#P{IX'2~цW/g-ɛm ꖋo.y~R_,NtvC8}ղ05wdbGυ8J5ܟqt4{eWؗgJÜnCZz̗dkO#r*<ٷӯ"N'CvPA вk7HySY%64z It/f(d6HHIX5ˇN@5zd:,KK@?+@3~&Ac1FUQ(x1F|@-:e) v#VX#N.| _= ~ct}+~!)VW^缏Be f!k*,#F/爊5vdT2-;I9JwaZݙG0l`7{+٤IJ%ֿWh^}?W$܃:+fuimiwHʒ+ʆC=VvT,!R|6M?Γg_eBLRh2Oqلű=.c*Eg_W\P|!ڊxĭCRr{V;d11{s~a'Z+f~hN!k4Lb@}uE9VϊA=NͯTy-udǒVr,IVsPyɫ+WX*P1* rR%䪏rMHԊ^7672\'1$" дj^QZYL --] ц/.o j2S2weOҞ\6el$,wү o$l'VDs8&]qU\CNR~ƖΖa)?;5uiёOb:fNaZSk, l>|i1<)<$B }P6ep۝+41Lg ^Vefԣ(F򘟘6Xf~PW'aӋ?~[׃E'wF5OBl֊axzn/o<^^Ƒ7Dc]0g1n.0vgVlƾ}‹3)/o5NMܨ>uGk ^ʣ7K>,i|c4O6Z,XvB;zG$NRbcKS8l*-!OAY_pȬI#h9/lˊ]{.Mvm#qj?bWj'kU4{CݟaC]M(I*Pc?)5 pLh% ?҃W&p799 <`΀KƟӎ\`F/W|5Mψ?1G6G V_Ϭ #9!m$܇l9#.Gu:׼ς$֏'cܒUӥDE7!M.-z':oBM_%#3s^bcjuUPxC+V0lVk`Uhv8sx1bY"3,l;ys1[?^-EC!jx0g3`E-(ݐ3+  '&$R1aKo>V =yC)kȱ5cݺCP*B"e3CL} mOr Ŀd3r߁b7kp1((B!.tss⽡CNr[{w=ex>Fٷ}P *.g9?zn<l*?WNı଩-;)BW^WB^ЗcqC$S;Ȥyχǽq$*6,phÎ"l@y]15_JtƣXr(Bnt^.?ty$)LGn%G{l1tY Cؕe9)M˪|>]U/)\XxS 3plxocƾ^R$^:8B߇FݥEhk]jj=S6[>ѬD-<¦A8~'#pbOvyN ~,qD!v"y˃#4ik~&uk~< dMa8Ld" ul-gs0"H%=Aw0,^y&)]u'kg砵X,aʯd) ֮zi7×X7! V7z@I+PBsm,?^lu&;ωf9:c"dlO[Or;V+?\QzEcYrI\,'ƵahmZ]+HF_IGbm ey޸خ'TL f\jV}]P%|c72ZN#,c9c? KEoBĞoС($7*눅ޱOuʏK`8='JCͣv~ʎ9xnfձ>=/l$4_ƶ] IH)g*颻ʘ>b2{~l.W?M*4qNuͬ/u)Ղx>\Ӏ,j{SPZ+/)mZ;yv}Ĝժ ( CXq@wp6ۼKhsAI`7k޾,4M!y ~*K6^U?}yfo:ws ѭ~Ieao{lܧ"M^|*\$u|ǰ3Uzr0_-Nӛ|寢y>Ms| ' Јb~ϋ> IÜ͏5E` VX"S$VQO>sBO[C,r͠6y2iؚP>ኽ<.&A(xrì7 zV)J6kAۿi %٫-c5?4UȕW鰀1;ϵ CoGߧ.h Y/2H|T:%koɐ쿱fM\_/w&W<F?-3bJ!Yn}^U& hi:Ek?CYAu$ hJ[PHCnG~5Ȼ>grߕ]i,Bh)mJ˒$e'P&@d*R}{x AW}(]?bRj^+FU9V\u" k! ҼLQUXs非D$T>lev.%l"]ATKVD V_;{iE uk$ؓ6XIJ71zW !V3SH87HM®Phs%u q1|Jr>{wA&T QWI_4%_ =P0BFV[͢{'1kChh>mm="McaqrxQ(H7 U>_BCsiIa؛vlO"@&m>4_0Pǰ]OmA8*KlGzծP DmB}V~Кz{TV;|FYZWxM2OBzÑ)@MHŜRP-sQr_&yjIP%tӓͷx)ۥ]8ɞ 00h ?&_!wY>;%"4jfg we5Ag?6xy_TJ/gdqwlhw(k)*܃P܎GOm QF~8C:yyčR(f>]o &@[Jl: QjʏwaB-i+տYd UUt,A44fx  u S {7» J껿.Ưuagr>6Z\*1dD0>&$'[QkB¹8uf\n<[oV67kcbۏQRtO3V|EQsܹrvdݤD`h᪑ "KP3/oi^H@sغ&6q4((Cק7SX6}w,מ?`q {G+1>wMrq]PrPVhfȂݧ"\>'a@54jIIX*ٖ;*jN+Zi}1'ev q7:# EF2i9!ݵ=,`ϢN฽|1 9Sbi Z{ev-롃T ȅIoy׆moս|*t~Z NgT7z,`\&O!H}8j Zhw~˱@:NE7ۥ̓ﺮܞˁ j+Q"Н?})!;% |+S'_߈;gWj Ŭ@^JtD pN@zRhV ^gS_@X#~Xgyc q2cv_WŁ)1HYCCHl2|{hcn .]M/."[Nx`HV[XȻ1S|kbEϐ ̛$&Ey{:f^f9<[hB3%ԗ%&-F~J]L xn`"$aj_׎eͭչ=G\+?(b^:r(f!w#Zrg9U%8(5/[AVWӃ{eZ d ~W`ՍP^+AbP9O|xxX%v^WjZ07JW>} \!a9PuOOwF;AXp#7T5dB yvIO7 `@Mٌ.hk?=zJj.~oۋ{0\PUx=(X?Y[*QDt")xBo@`+zM!6x\zZ"c{`ΟRM fd }0vy;;eN)0t9 'x)?zm;|ElOqC:^loGYa]qy]PUSd܊чKk'xBy :QSԇ%{}N@^yu/&uW[ Pwl5.*Nfk@516>GaWm:c]i C&l()%& YqТXyt?xlUKP)qz,d 37mdbշ,e|+)i/z$4n]?:Z㏱O [*7;mxϔ0t~xCqXu6"w>KL{}X{R^|6dMAa} ǰ&Coߘ0ĴƣǸ!qŷOĝǞ>4+idՇ=OZׯRmfl4U7{6fghzaٻ9)| /D@MGE5_`̐o(nc +Z'),Hmspy2[DH~u6IʣO{L@ĹD1ex/:,VM K&x٪?lCp4nv_ G.fEV]&3 wk)=2t yp@H,dzxYbm8A-\+ޘJUmOe֓:k{Lb2z | {q]{P#[FYpTk(ɞoG#eSHn?H*H xAJƆ|7$U[8>F.uHh.WKa; .|VUOȯ{LUA AUXNw$vf+&Dj dsf?y'/V |SHl>-pa敍95Vl;`p NuT.)*z|tvz_伂Nxc/aF\W}uӠ\` a 心VNIbvZQ`ӤΥx0"FM ;/@<32 4.`K79 5EG*[zaˠ.\9"rZ 2sL4O'Oa ]ZaH)W#.el*`6 1+XVv2$33UbݡՈ Ts5 :a8%kO\y1e31GsacOFuL4\O4vj#&^QޏU SnCsĵPLH}yQ0XJDTv/|ݮ"7A uCmquhL\s~?S|)4+P6RǡKYljnCa-M;|Xt3 ^疏͚Cremg<Ͷ3W4?@;;t~1|&WI.q(fdLXz'XkY]2Iؼ1Ʌ ?O)Kȃ3#s$6և R)a_HlK$';;1ߜC0~]tBi^{Fj @MV' qbxؾncmiz5 FclMOv9; F$ظ2a&Ptjc`@9:ʂΩeQG!X RZᓯ6ZS0M,&̒'cS]!rls\qC}2UMˡl3#6/8Ah s\8O*̈Ŧ uyQriؘ.̄~6ws܅5w[0EG<efiU),;~>w $li![>$,Z5u/b{m VV㼶)j1TaKϯjXbO)}Qcioj3!(awr1Kdu //ЏkduL'x=HD-& @ڡk@.>]Dsj,`Tlt]!*2I_R+cYknYL}y/yl_50s J|]Y \ G"-_}X5%"L%n벬Ւ<;}Dy^rbq )͡Vή#]˕5y!x5,4>To*[h>qC@2m4Vʼy4ԿPW|?+zxc))$qme j\yY]׵bm zn#+b;nKO@͎1Ix '/~!:TE!8S&~ @0i9 uzDhI{47QW3|n:՞v?بs:~:R>i޹yRږvK`H1i=ѩn^Sv}2ǘ6ZBpgmq4?v'Q p7ZX[BeFд2.QAr󣓯0B=]WNE4B)ű [F:=tDž%$uǠlBj|{v3g6~`&> kCSSn7t^[%o6vʳ7_$P`]Tv VɃ.vTcv}h9ӚgN ZS 'xKQ/^@[smNA0Re' (Yk.C]CS^OQ)?iA+j7 \p?ǵhC2Qhᦎ7 XìQ!z:zfExZA%߄,W/NpC qI'>-=Ac;mK3KC4i)'f~<_NQoŒ5 V Uwp8S Tk&L*R+Cg `c&X?q*HxqYCR/ ~5!PrP fG9b*1E4XmW؛@m:8M,\'mیY;sX}9l1mƍlY=nA~ rnPQRڵ- bϵlB ԮD]Q\y*g/chMvke6Hy^zϮ\8 {wf ~G ojϩL2E1rm|:KiNǴ@{۾K>vDrn:IoAŇ62?-W).P$=,)qb 5eaVam(/9Xсs* ݩ;֐aF-@pNGzg15-TeSF΢qR=Y\jV*2-1͜L,x /RA:XV>uv5d߄תoZȉ.Eg_l3w}2xK'u8bMw]gtj³8$>F?gk tXa}<:/rv.ÒDx,DFMۛ``@m׶tj =0pyJ*Co^5 MV7ȍqR?jhE@)1Dlx/G|~h#b^XuxscXXuh)+w< 9ã=\/eic3ho[5Ji[iG ÀfT;!P0TXU5Iy?g}z,f7rJH@3ojm ZVfR@M ~XhR0s6*f:|GRbmV 8hb;PR=#ދ[nu4J H=+d@)DDm-u͐))`ӌ=s}gkd~ `4g&r!E[9:1ydG;>g 攢0ܣM8nnٲO..Y:mA̅ƒ`+nř [kPM p%߇ăF.0:=m谖+Š-Hf݃W?6Kʵ)pd;3e~O5ϋyBV> x4sB;0PyEwX:0uN!L\󐩃Q_CnV~Cn>!gbA$IaJ֖0`ڀ\2P9X02aqK,'wèu~cRF(bJXHYۺG =Y{1'קSi`Xd}_ A۔xbS'42R=0_z?4XU,BE.s0k[',XKڼEڗnGe%j O;s-:(u3fC)ԌH|jMHk!5SMΟ0v~vHXⱁKJl޳ 0'+QxPo,LNA =Θ.0YB^ 1<&a>(!xG滘Co۹b-.Iثb15y"dxXsP@C(5Ezc#0a1Z;cњc/A<7ԨHsfO>^`h(|kfz[Kࠦ74#Fx$H$ކ\-Qb PL;E~Hx΂ jAɟϼM VpNIoD`0s w:(_XuBI#bWp4I$̲Sc既 "#jıcD 19vjSxo}WAk4Pdtw6RYX*]Lסw0xoB[$&+ {&Qo`+_Ŭ]v_jTasVd 4XVR~ga);pȝ3ž pM.aYyqrs?f2`]s GL|(=61%I5VN8{׿$&o"5[ܐzt S6Wګz}鯸 l&eAcB^=Q v~ފ|wXN(VB*t5^z:p^hN&$q!Rَ|_wf@Bۘ-p _lt{]✰'waVZ 54OB-_D5ܩ6v ׾ 1#KR{~\,09 9eiX9C۱^d0ffbb$&(NvSczC"㯋xC[t|cPbm6_d5z7rk.f3]|;|xnUWsb\']H6I( fˀ8o3 {/`CŌOdߵDE{>iʦ>q;gY!aPG0>*h%~}/4r+JIn] @ƛFc"Y,dXH6vUc׿d&V_~+جwJ A Lٯ'X'Jv;bE , lWœ'HE/,c4ӵ~^ғʘ$#k> XuBH]8IKN,W'5HzS0ph¾@(d oƑC"'R=X?<8? VDO}l0vރQ+Bķ}ؖݷFTlAUTjwAZ_ۃxrV&I=7HӋCV P;7Z J=-#7ӀIM<^vd-k2f07G;Wn]wE-Q=J_8}3˟OaGRb$(veyCNIձgGK"MTᗹ `P|d I2#xcl'z,LPCj{A6 2W$V΄RbNBg ,h^TzZRr/V!9/\+*\9ijrt2IwZgȑOzJ3K凕{^"Q*O|v(Nee2Bb`4^#yt͐^סT}i?d<"T,pDeG鱪 Y;N{b̽Pڄ{0 x>qKUm=YMҹR(r9e$1~z44'm1^\i<'SޡÒLGեГLq*T䇝S;;E1%ª:/Vm&?[3V}qT.Y/f߰ D09oҦcu^ Hz|AP-)>89{'V񍐗j1Pc :ԅR{GgZ3`$b- Nν4]fPI5΄_z&=D*3coq b֋yro~^M =Q3!߅t=[LwSYlP:17rMʾi`*p׉HV> ooo;,U*[U{EŲ8liU?nP}AQ,r9\/->HA 5탬WE(b:b=ifר`gY (Z]_uLN4j8DؿIu|=-ВOДzP˾Og} raR߂X݂ն/ayZW| 5csG(- '<@gvb}kHPהi}tnOW爛a#ue"ŸDŗUy\4MfwL95 lSS /8=|"c{@QW=X3Gjr# 4~5EޮTATl`w鯚y_gǪNC[A"/٧YEQ742h`D!^2cC )Pp8ϱ!uؚ \WZB2昕EJc G0 21 Sh$.[Eb`1s#_2~c=-XLjܖdO@T[GpxH+8 .rG?MĹbwTA`W@eU^ ;!M;gk0 AJIYEk?At15Tзo&GY(yyC(v~Ȧ(| 2-\}Ҥ dU}QVRA+qn} :0wm?Iڮ;LCheH~ޝ)!(d-#肊PY&?봚ɿTBK '*b*~L3I4rRTt]}VJAZN'k:fVMyl5!JiK,(Ky9~1 m@ F NJaõvQ*yU71cN/a߱Yg3 [:J?+Fʐ7~碯il1ZCM֡6O t9n Boxp6[E?! _}!/JQY`_(P1+bgc + y8`=a|۸]l '%@tdM4UdJZNJ~^~r] JX.`HC?m, ӃߧERBXnUA|1z`fB"+ Kǖ]^=et<>bAM²/=;_>򞥤$H%?פTTP`RD!,Tm>ʂclm cP+y2|N4]>JZRq\d[Y,=Dmи`M )}G!p(D {&tƶ/IUQS4PX'PΦ~ ,t-}CYos2HB."*w~HG_* ȘñK2ױ*ux{0F5Dm>! Ϥء0s@tY? ?Mqa2 f]t3fw;l9HH|q-qNO/O&lN T4/TMyNrgP"cUw۠NӉÿGӋۻKHM2;V[l s;H1$_=UҿTa #hSӂߌBq4}tVd1,ZN`:2o:TUk܂ʻAȖ] = VC4m*%M*5߶Ĵ# Jhmɸd (*puOrd!Ї]Fnqs>ܖ +J!\vkol̘tx;gXӱ׳t#V04~ ٲ\oU5ԍ1SXN_b8df Ucɲ}d`yfV  Td 5%ı2sd2 w]Ʊmŷ'p1mM]/8sCF&{իPr_?O]FB8I&͚|}?_?t 3S\#U?OiYǯd;D|^I+.Ua)r%,=7X zBcQj~Pr%2::u]ز?]qlNqy9 J|=[߿~ =yns=:&ݗڠ.6t~\jNsBV^MaQ4TM q)bnG,yڬt)9wql?.ZMv~(1ÞqnzlrxyI>Dž=>!ngޱkX@c('~ E7߹38E!_!yCw D-KS$T }G_|'8rQ}_UߠbVnшv7WW!M*ӝpQVb'Z=T*d= m) gPğE.hgAʭ=5;~Z )[|oB-| <&/>&-N*fj'oZCk90? &zzXMcoxq:IF]ȁ/5(*Y57'+ٟ (u)Zc7qOg&~{/д8)&&hx .E 0C?}cXu6p#ZǞ-A6bȭurt[qH0p)SM(HLLłzS搚#]\O{>Ml?k +dN4F߆X~~PuȢ k:Hi,O3)BӃC1|ƸT aʄv2D~Wpx.cğYPw k)0>䭄H76]4yQ b#D ֚xI_j67>6ЅuGZasD>omn~gPEhO%8p cfW f]S.LOP}̇ QO&Tä,d L_|q2-c!GNc5(#w=W5JX/Rub2>&dOJ r(C DZ9,>:!KeBurq=ѳ LX5] urJ a)ML߷1 >s62)h^ ]cA5.X*R 9^cռ*5uV9t.ފ8-aDba`l123N?tT_-oĞЩ*.ط\1ف RέFGnwbu|'1᝻ȃH3xR` c1.VSg$d^9b~-UGqIXjyy mu4W!N\vΏ+ f0>M3.Ǟ,oxF 6y! \9y~1S9S5oO:u38#_(` eN7!a ͏]x9mu0UYJ??p][;1t6F8`킙H:1̴F>uhzq'ZV )Ya9ht@6IUlEZߪҸwZy=Ԃ-{Xנ= fנ #XG3漎sX>QܣҢiO@)u<}kE.j:@w{+P5͌S]\~Yx8[#} ]HP=k?.KbOy-,Jgh?Ѿ;ȻpyyͲFaOh L lA1. Pz_Rh6nCBjKC@O(?"ۍ)C^ѡ:u]?-iMȗ\+x{Rˑ\ >hYK2~c3[C>BOb]-++B}fJ7"'#N\Ğkǐp}㋃=l S3o_Ž ?7V6,c1y@pv4"ɔa8sҖY"1҄Es#v޽U=pGтwl:bÏׄf&7Q$ P˯K@ǻ~^cc_vZǏtX  fRF8g-qå$ؽ*}&3Khp?aP]ݧ58+tI&G>(\ UjcGt.'l^3/S`< %F<{q ]3z ?m~2AQ8s;6A1*Z;& \ۄJN'b(R -\J2!ߞgbfC EJsl{Bڧ+^yPi RLme *$5!MI@y,.![?#NAsC˟ a[6 pB*;K"{ Y0&mоUE^BߓC/9.`[Hjk,^?̝39PpֿE ѯ}T҉;Xt2z:c)^柶gq89*; X,A(,/AUL s3JHWĚwkҲs"ߊpb<$lh<844 +˞ʙ@S d>t$A[\.mO\OI0;;rcXzE&slvyH{,ė+FBǤ-[PN&,1.@Im([]7w(p",Gx_lw0P1hv!^]kR:$jEK9"fW8p;V4fAVh79~~'36t)ÈB 0f?~`LG3D(7qA6CP¾UzG>_| C$b1x142ʋlYSGwf\̇!$B3qeiyZ+Vk *P;7@ur(7JlCapu\Y~ҨF- x/-Mϝ<ځ6z͗/(I,\RL%E`~ZF.b̘ ix JsBb.C5{ C~}{O En!;d)%#*eF+{vǗ3s,>>Thb cf=*uK(=|$ǴbJȏ!b^ǵL'H+ޫOB[vp65Uf(nru~2z1`o橝GeLK@i!ₗ㴊ͽPҧ\pQQZwUSGd+U-V%=٤Qx1 9GIcėxRBȋĿZxC%7-}>a~x>HsP>U1lT>ƧX(,a}/¡Q'" ϱlcK^)yݎ%ϯὛ~ۓ΂t8[3vF-O}b. OȰHa HgV&"A;|#L:_}{׎셊CmG˱/oBQϿ)3s/֠u_?A%1Z}±z;1KpcVFUi ڏKdl[K}/:7X{!,lMo~ 2>1sO` s5kw\XsG=Bà<6:Oe +,ģ^sy!Ƥ +`a+q7Dۿ:Ä ӯs7`-YӕXOVasj]LЖw43v[M-аUç]\縜#_r>Gmy,N(th6Q{$}RT&f0*+H,a)K4OcSDh:\~^\kDԿreXV' k>?-qJOAZ̫ǐc[9b 3suju*zA7W+0x䰐..[/႞ :ztQ:xVs;YT#t:;#c.0O7c'+t\\ӭۄD9lKazQ.$gK6n-kl`ġz]}b |O䖆 B4_%[0\Mbai0X|O{*V(B&B*d3мK YcyP;ZQtj~$yBYdͫ+bڞm='(]9t 'soCh*!qz ǿUCvin+.*iUd֚ j~~D}=CCry&TnH!.zU _ˮkB3xe~Pp,'Ā`㹇eQ*R8!rz?A>g#bXʯziۋk[0=NV|*,.,C?}{2ca~ҍ%>>kɘղ!YK4l^ϐpc[)u[Z@Zo߻d\vϵطʮ6KU -*R$/Hts`HbqSW;c}{@gaQ:i*| KmțD%g {{:CvH# FyTC=wuɻ;au<`/\`NpNiYw!xt5RIX?;S _ZB[iL#xCY(Nی sb!{z jDx 4x]r_`MAI 2P 腍M?`2 Z&v¦x!'QQ}#YzA}^$@H[>/.fAZˍG g_lٝp (Esik]<č  Nʥ'X?3 TtfOٝonst* d%%(\wT>s2!53!CRB^utKzGzGH$o[YWvE@_{J.m+)1+יQp?s|jO/⟫y&rjJ7ҐSp+6ɧtk@7Ek`˓ 07ɩK}Vܐ?H +iYqV偅qCl멞1/qi'¡+_q/^a\fa[l+5wf㝒Bk3ܔ%!/ gD?ϻS8| +DY{䕰s;Oؔ4{Dne`1ӵelz-l4~,D íP_6vu,:}^?exS^k9bsnlTvPRFcfg$yMq+Q~"ظlmr+UU~p]3o?੥C+qK#1½̨H5l7Nj cbukhZk5WCEo _ޘbOw[gk14{}2uJ>v-܆}O.B4haq ' b7@e˂VCsj [2x8z8z~z+HC1ˏ*ﮧ;O/˺7bVBC$o"mHx^n{KY>-J#4&\ك>b⻒gPѯi <S_:ߩ\QXs\p@3lX^h°D`ҔIj3LeT^fb_؜=(}8Ky.v9|{l5,$\W sYT7ƜlOPҵg3C}a+.bRr 0ń_F<0CJED .A_> hٟ!Z 5hfqH_\E#73SD 7 )cMa&p0&Tagq.M(0.ϙ뉬n;fxLNJȸB_MnpB͵@DP{y̽rȏ۞(} !|i*-!H^_ .Ņ,I,{7w)5x޲||ObBhp,Ig/-o B>!xr}F51+קߘ)8Z!I';) QwxBÂ- бTJI̅Zt܏CiC'C t[7$1MmOl&H`:k̕ B~yg1'iǫb"-\67!VN1v3_=(㴣N6%_if"¾Oz.`ǗʆSRNH:7dbHhaI(|2hZ8k/` S:HhzOxMkg/C|c0ma[ _wDsB:GG@Xɕ*}kHB0fWpS'{D<%e!97㏈~Ll ǿ78C?bN 9ٝgJuᙧ/!Xq8`ߵn'oMMq^!2j$Sčr֖a] /3GJRȩ2[6=L(:]&E$WBCJ9o5r.xa| uPD rpPɖO[ϲ,a{2Q蕥)}$95-V#'b>*˯1-T84~ OQo!ȚO _퍁eUt;\}ꇺ4%[űbo3]m&F}ۿibgfid̛`R6q¾i|%dSALΘlSiU %D(B$o$'TE'P%TipÊ[d`yQ݅=zXrM#,Dkⱱw`;M !sxobq+`wxWXq\<k^jݽak*Xay.Yu^vM8fԊ݇{ 0Mhio,NEp}{ׇjP}):lt sR(R$tdḣzxSh?N}NQQsIj-;RTnX!+CYy)4dtb촯@?o|ydLt]>%#}5i0>rbwdxŤDi\!\lB=Ԅ\ZOi0})-s%^CF"::{ Z5\o/Ⱥ u5i_K Ы\R]"Ky{q ZQ4/4_:kc='_ɗ]F~ѕ<˂᭧ Kkab\ե0b*O?m:w>v(`|XzIa\bD$0FEm1, 9(xH<ȹ-ob~T̀3ЅG]ar}/Wd_Cs}u+]Caf ڕTn)p)NF&4%ZØ/o_(h4fLK^cB|y$ (R])Dzi]i]p*;u`vԉvZ>Wg0o"v} ^gG?q~cnT s+:EC{sN{ tyξ7uoMg`Ch]3OOERn&uqܵ7D׸5] NeQN>/!wHN1 m 8.KHXc§aݲZ&N?ӴñhŔ 8wcv'6A cDl??YҎj\yxPu[&$;ާ=\9F$/\xhx &N\eunJ+r"Xm3i?r\,z8D7nA T`~72=.`T5x)RN\.bYeT~>B0k<-34^BNj"Ȯ>ra1<]d;=Ÿ*ŕ7AM(07X8ۺ*uxFH0@IY~%60)b=edK^qS}]aFӴGD3' V>a得= 6Ea,lL zŭwka q=sm]RO=G/\ 9? r#h_;M"QX1 (qr@5ڠ4x8O^U;esPy!DfL?^;[]f#EhzNn LAbByТdvV?^⇬{B9!@is|t=LR.g *?"HS,Lvar3MNwnK5G9R__wi~[;IlP`c@dG*'|^UaCd*<}YK40e؂tѱd=`P'vΓ &VAݵbmhktkT#[lpnfq=ÊOL mȬc촀]N6I?=+6*׵c^r8[u]"Liۿ$:7V/e@cRvÒqodk{:~(M_I*ӔaX8ߋI[J璟FO)}1Ŗ USt.򣿝 >x"LyS,qKݖ +˹gao+w Is{'Ot[bqV`ۉ1Ggv1za8+hu jW㇜siL W,{}vopB^sbI@I+nNg\SC3պqK8)w;X.Ci=5oP[t;μBTRP> ծ P!ߔ wq4V=PZ%|zQ޽3՜sO2D^}fA>X/4?)]͒Qј\sپUЕNۏ)8DzDl?}\\$vܨ_i¦Vh & y8 Ox24|jY!'w0dbN.6H:!FF)er~!&zP=i+twOTlkbPQ vn7hߵƆɿ*,w; eԗ]|DB%k۽]?^[@͓u ZV<[+VthC aCߔ' g[<&OZWpaٽJ7ooM_uvzǰUT44*a f,8~ Ѣy+,p BEkץr+FY=Je菿ūIzevpZoS%!`AWI(V+X6aeAxR6S<.bɗg۠ 2V>b–3 ߱׏^80U`u ͭ A; ١=]MZrsa(zu{f }ZvYP yשvbmBͭ^xŽQ3Lցm$]u[Fo=_ŒGdUk[QZ/m8qCWssW,LNe {!MYohFό>&}c2Q ==A4@Nk.~>"?s'+hVG7{{0&4g~Dg au}wǫLݶE% ?a;<8VPPޛhNb3 m5Kxˍ}z/E /Ha":qspym) 5`\nh,Gy3?\Үn6x Md3mh7b>e>2ߠhP -3_Ʈ+carxQܮ5ɻ\أw_Glv~p{Fy6ﳿeo8Xczf&Š|>{n[k^jYtCgu;pPD@ ֦DZt'z J! ]s`<5F9ky ;)?KqcYFO^rLUac2e0ŝ"צ|tC 2vn-&;"|P&PcGJF\PZc'{uqW5;܎>w'xl zCwχb;Y!쏽GpjNB|uY|?s3">9's}Fx;4Hh:7b}cs#}<14]υ[JX)t(= 'wQRcSbރ0DrR[Y<#2t 6V`֒ 6ȓkucW\ bᢌY@ vvM~ <߃fqמg8rsSsHSe&"6cW%'DS3ysl]~I0bIvop|yn\wah1nk5]?Ce *AӚu搠sqճ綥0)^A"}+M&N8X1MLi! i"o!Oe08N?۸S, \_q洘[99}mRU[ ZH+7u$>uGC bmpJޫg!)@=iޛ8>H*t':Ȯ_Z$b$Kr0CT=8vGh8GI BYQuwÇsI#0K|]^⮇.wݙ;Y/mbp_6φ7F=kde{vaGXr̺e&-6[Za)ZKƊfbјo3k4vc|Xy2 JY~@(7wH"CxC=,~] J#:wA1+2G;5s72GBIOo~Ti g€Kmj uUN1ѝaiG?cJ96>z{㘃jJi>𾙰J: |p68*T䀸A'>hѐ}=oG:%+ .P\ݦm~-B~ÚI(ufP3ޭaPme.FC+N8=vs2.G2MEl.a*g JDWYc 3_Da u,I_iquīCXbσ?ɋP9U=ɗkA_GIߨWIYnUHsHqP87H?WU$֩g oyYHB;xӀ=N4Ppo:ǿߖ놮O6q9Vl|Qls'1G>5&PjZCׇmsv+8h~<Ů1Ő@@^JjR T~K?Uqe>PHu~A^=Y0|YgRĐ4lB g-0A, ._>(Hcz ',K ~Msgu*Yb8Jҗځ!e,r68Jc[ k։!P{7kzh31o.:f[LS`Y)r_[]r Â5SǠBXxm+ *'547h8t:ΥAr_Οa 럣XF! iz)݇X1!ߵeC"| I<@JL[4k+ENuǢ>`MZp;x%d9vB5{ @.xuBw&F_wK) L{gtX {].ub#o )%]b+.݁Aǵz#Z#'љšQb)uTT"Ũ+>|M~k =B>;=blwc`{C8LKcF2eT[3~TC~H2V=>&}ѣYU!b4 etεŔ1IgHz| U[V3dRӢ7ID̨`&D /@[-Ӎ$N*YjEbW?س y2Aο]и#Lд32W|a L#XD8A5=0T<^x1\8OkNTjIm }/=lÐh6*kxi- h z(2͝2mrs99bD"mGv0h9&I{9YOwa= V$zIK8#`SKfe }z[ˬ"{"Ŏ cEl5ԒJrc眬ݰ+xd UGhĖgu(U*XnC"kE/Be![ܪ<{%*kV^~6{A~]P{NdzxOM^>ݯr7_e4 M.xߖ s 3IFT,NY^VN+'w>|v+GW(ٖ5PHQY&ޖ/;~H *U2CϩJMYO^DMC3!Kw)蠴;N %SKa {ÍZC3`n"s%>wyjUH©dPxŔ7eS&.|.IUF½nQ$ftPQ:c[~w*9UX]v=C'~t6o=4w}e\m=߼(c^Z+*u&Hnj=ԑ݀҆|ٱ&F#'Ղ0NK=)'%v107 ֭OL@Yg-/g)U F桳$Ne)ht}Dd"0i^G|=XXVԡ4]?T-o;7Х {3w*&TtZjfi6X=T"aԍ+mЯm;&Z7Ha}Yo"zSX:bö?*'&V>ܱ^h"ʅAɉ}7̫ V ۧF :5n셦~=1A1Ie%}s 1a ]arS%J'-f Qk=;pL(^ > uo+@1[!5;|@dG  yM 3̖>a7^ţT!ɿ֍:\~2WIT$ܕrs5Z-\1L)_qsKa6MQ4;pA_|h4@$={W.@Oqˮo R+j*@ waWcmv Ə| | igCOzA rsb PfC9cvCE(0ǣk̛[ݐ{ZkF99"bi5?wLn߉!6=t {^3؇MQ%%t7m^# /Nۈ@qWˡAE Y  A2s. gxE⯁h7n B ʌaQaN^ؾ*$N|J9䱂b[;xb 0ihl{=غo2T)0hej;A_uEOjL+L 4K c0@ۙ3L6wE  (/*t{mOk#?>e|X ͎ރ=SzF`ӛru >wZ%%BzP`?W/8߹>M~]m:fN0C4e.A"97hwgܕws,KؙytWn$7ҾTdT9FU]ۧ}"(; 4XU~MU&E myan4u܀?{!T/؍૟a{n@WqZSy4،B vti_iyQ=Iyҷ_BرR3 UMCS*u~z?5Def*;.H[VmCPǡ7I9``iO;F ˃M#-qyC6׻'aJ{ViDZX*''zmGރOJ=/6JnOL~z-[u~uOlNʏ/÷Ny~X$;4=5OF/w}aW}jzjTݠHN X%gߓ٩$|[6gV4^_ᶂdӼt;tgNpkC3n ƪAub"S^ƿ ]Җ#&s;LFJ)6 ' u:$;vܰ7QAnˡsCX'W<(s~rzjW:y%:f1_YB'eOAAfjMh7[:i_.6g0Ԁf }7x! Ƿ߇*CC)@E[L'& 𗶥_݄@:%X~E/9梙گG=QMgi!N⦇[# n=iQU@Ӱ"&@7E W.ESr?yLo&dQ ?7oLcӐ[]qHk52Ԡ'EADXX >\DŽ`PNOEݝg;0k#AXAs;X4T}* TZ7P=y-7<ʒO`X~b_۪/Zy>uʢvCj EB 5v<+bFSmbyqbyi@G8dEnˎ񦏄C_1{%'6[9= 9nXw:Ic;J Cɉ'}]Q-޽:1@|.KW%Ʊd bVtnn0`LFEfWaqPTKa0jqJbx%+*_;6F͘ c{eѦ4Ԕ9{ }IpLԨkNj(G-HV#}};.(P2(q+k-k,v$ބ/.oChqުB uٌ>q9ftlm!߾?KOٔs CNR'$ ܥ?of%Š\BoIN< '~"n^k#hp LɩmmNmU ߷9`f񚓉=6"ʛiYt`H&ԽvfC9ןn`|ي!1 Y"_?cS=r}֥aOW"<`mVfdy fG3`1zssXH6,ݔJ )VӺ7XljyXIGdְHOΫ.,5'W5IU?2|'q{hok~AVw$ŴyBjojSvl={94RY'şX,74{{D67O*Ô)$HJ0yDCaE^] 33m3UL?Ձ5";9^iV=nZ[7Ƕ2E|ݠվ6Su:ʦa3f }Y-LmޗY)(| ~O1)lj|OxB Ψqb;owъ85hI~ 3Mw;P%ڮ ȝ4mş!Y7qλ6L 9f\E'|hj}Hi2ΕJ$~3х `jubwJq XP1 ;_ŭp`Zc>j g\9 ^^dŶp|yS* f8jZ;Ңmg!n&Y]!?]X k-Z} 6#XޥyX) _%C#*0(m$)nrL팖 OdxT XW*vH g:DD4r<3?xVg?Ծ>]ij9:R=Y_aBlWo4,{#'@Zn4@̫+!ᶐzv4(MnjbEvI4h]Y# |UgzAəH?u)vFxW6kW_%n3\qo/¸[\@C-%:6v7o~2x̬l=ߚZ&pi[_fOkSsdQ|AYe>BפI]r\xI,yaG 7S_YW'>7(%$^+e>a-`,^@) )ipka*-ЅuX%?oB[idhG J6k( 3̨s~&^~0˶lx tU15;}ę ?-^}w`D+.,M@'ϲbeOQŵx]b9] L-n|FZG]C$F+$~ P]-@'ƴ>rPy̮Cb g:n*m:׊J[g&Xy6g'MOZ ֠Fn|5Yn.BKPwܯc`ϝ د[WL֥@Rڰelr .1zr%DzO/T}&+ւ͏%X/yn"&aקO>Phi"x_oJƪ<]q PAs@}eqw.,"sLH(=*_NZBUwZ0~H^Fn64ֆC6d.RH@EG'.C|)p{H~?gb3R*`MֺƠ抄PQ oV&+DzS{qPA(erfM,tsUB2#x'0r t$C,qu*Ȫ9r%>K uŪp[PF@jSc+Ec jX15`8 +decۊHL}BLK,֓> b`KΗ>cid#eNTQ^BI*3n,%s1y׌† )8sP6d?cކ׫@_P|ZC1[ӟ$13;fm&[lQ>~ J`4O~|OUKʯNKS5ٳF YIƮPJ1\6:ǮNgZXu5,]q/TlͮXw*3ժ04&]=I !:2*j6R.k})V,,:`|v&>f1 4Xs.[y(?)Y)Tp"yM+Uy>NJ7,nbbdbv[Hn-EAʜPWԡ+U<s\;NiC,rޓBKᓗ04]t2W>;zz+iȠ=Ea%v^3qF1 zceF7XArĵR&Bi 0>ܫyZo"|oBB{[|CUkZQzlK/Ů|H;Vy3-iaݕ=@gLLĴ m1fu۬R0S=CH1#./Î_yrceQ/v/8p|qGaF _?qD/0m+JMh`'I518-rg f5]‰]Ņ8cP|.9r6W[9;|:&:ɭCƱZmxDfUy$I+XűjpW.8ʴRܭoMABB0Is9Ĕ<6]w\& VK,&8Z<"893"#G$-: :< < 4fҚ`Ls{B弲^8To}_.~sf $omqUÌ/~aT l"7[4(b~6B$; *Şk{]Q{D%Θ?}K/;(O^7鷱ㅀp#և [yL1Kda(|`z&LnBEN؀lݺ_j3\r>W1\F1>?..Áyo1[ؑHN;f,Cy"s{sOs9Utj|6G.D8Xi V}=R7ߦ#vq| W ޘYt {;<<P=PK"(ci9d/ {Q - t\eRx$޴ճ.WS@z)! ҟq > =3!Yo!BL5Vt{ eZ?`MHK;%yNn XDbbBX>CQTk'֏Ǒ!w !`&u(ʡyf57Jjڂgh:ND*&')MBc_0-76'cd"-`^- ,'K&ǷOtr~6ZO7;Z ]JRr]#6̨<8rog&- }/f]r`>OMSQk1mXV$ciEw[o zLGc;_Ǭ,ح4 ӮYY NO$5ߎZL7FD,c Q0dgͽ3ֆnt)'! B?Cs1Զŏ}R5b P0f)qcoh2灰!mO0ڒyRpx'|7(.on_p|?tsIQiNλ0okuYb+(L=pկtZA۹PfP|qm棌l0 *tG쯪B)IPHQ:J7@$`.w"\Vp6Mo@ցUԲ,}PҔv09Z^[@D?cvmC w<#ȤǷn%)o80Y.ZӲ6;5nz5z{3J{ÌWì$c&i whn}+226}>wkic MlCÐ%j<*|9U*8x8-T ẆmR\=cUc,-ݘU_Vt -% ף <(7)G;f?z--Jl71챗b=I(緦ELVi gr, :Ji~l C/ 0^%e&+Su;q"s.ԄքyzTCkczhyf<<`jµ ;pɺBr2]Qxq;, ?<t)%V<czb/%a/wہilg[TƄVm,HJrl; $POu [Hu1j"I*4YhK-!OٓK0jWL>:ճ5KVnBĠ->1A*.:!+1nH螋nź4%T9u9ƛ@Go1uVW* A#ǃ; e., I]~.-XGrm9FOCv00o-1 Rٌ1f\E"Hd4y*5ǞecH+0kd5͛ -Ğf'"\ױОi3p5]k3n@ ?ِ9 U:WM` ٭u z'{4@U.|,}2^Eybۻ?n)b `tINWvMcE.S,bY+<.$޾ac~=gP? 9f*OIԍ5<-^>jcv[a?*{bAg JnQeq~A\O?o5&kۼME?fsfM[bȕ"m:4exA0 Vۥ0mZ թ\ԤYP]A#d_^a4VԺ@ GVڡ]GY@j1s[z5^u2%asi &;X`\= ?x+h#* nyog 1%95(V2XGd /#r[(] 7,FJ-%Oz z<:T6DύkرzQ5'lr?_`we*̶Q=޾},N7y&5(t9E z<Ԁ_*?EM?xiWQ8>؁}%'#ot='90 3ǁxȤKSXvrߎ\[Eg/1=?pߞo*Lyq9a"Ư[,ԫEX9VQv0+RN3NdsBC$$Y KƦQ}b S6EMLGrӄZҔɅkʬڽPE]S &60vze^(C9y4rK ceoFǩH#$CT>/񋽽?^}#,yk؝p!dWĢd3pڪR@=Wq$Zdpt-bsu/t(14q x,IAJЭMP>hgޛ'ʃ XɛBAD3w˔}! 㳪A4J"vR4Q.,ԆG=^,a-S8aOji{LQ1:指Lavuvɓ{fO*SGaKjw $,/P˴!;h5oO)߮ QU}0= z>p7/nJ)DwO[HG KFVO\9ذ]nps' (ʁS'>exawe!86&e㤍!L/(:jNk^6J1,=w~֔Wc9R6q"['nhYTK| DRvj&sA 9AW/i`'H,S39i+m9]7Nf(g9Q`hmtTO%D O-f,? yMΕǾi-d4Y[[Fo _26wM! [,bmLo])}SF*]=[AN.mI^~j~`?vg"וd\̃)w0ҩ"0Ǟm =FjiM u"S>.V@ʗ@0P?94\1=nUZo* .w楰ix zƄdPNPGEK4,bQ#i/! p'=׬&yաw.Vmtʦv>e@p1Бw8LO *uZ?(F:9kyos[C s`Zr,IKt"GɥRGDq [eansV!A^mNu󶥫yװBNIXM8Kv,?6a26]` q[9>}$$wF/e3-ҬbB6 vOSJ03X..uޅG-}׉1szӒJҦĪOٲwCtWY$ untoOWA ѾU`6޼^{xͅ?kLrE]/339wWv;p}BE$RRHET4h8T ))$d$3{x{e??u:\R4_t^0^vo;!_^5s: m].@Ag4/bSTid1֚V<{6Ben.jk(>TAI{O9 e#' B}Oе I,}s;\w =7*7c?a "s[ oγarV{]0֑}jɿ .@Y!֫חKFeb)GD*y=DDX][@x~tr xss!l\J_,7w/x]O#ſ1GB"CcʁU9pd*; skgiɿ%BIvr3pLL`< cxu}!bұc{E1r 60Z }5gN,ħ{#Uy/{ҷ̻N@&'KREl{>ݮM3\Bg9(ؼq2 .t[{O7?%1ЋF0Ѳ4o<{!.leLXln=m5v2MA*%ST]ex_u?>vq2`Ѭ F\2{UBeٞv(ު5c|MaeOK.S\^!WA `#E Jbl:C2p@7ĦvotN`fHYc,2|a_c6Fv}_latX#pB}TbB> pBgշN!oOHQZ.\]'jv*g^dd!ׂ@ Q3>l=I}&aPEI2{ia[_# yil|RSǹo;Vℌe%8ꏳ7 aʓ7qja18*|!KNkʚ~n㍃j|,եjۿ6Cvs{mqkG?}N:dyv}MZ8uSZzR6Cb <™ëzIt>g aIs_Vs-N+7JX!UVdB;=_mhu"pIӧ7pNCz2Nyv+ʧ?re1P ~Wbҫ]X;;[wGOjUC0kǍw@1o}vj%DeGB3=:}ִ1]Ā Cpw)V4R92rj-/1Js]lʁx}vf:-CYU'YxWC, ~m{fVƼqڍmXpϣyͤmQw65* W=< -m XhJ$=4; ?%Gzon ]J MJ& L~y-ԭ>r3>˿l J+EEl.hI?mSVdsbw'6/΀:0&,Ӵ}mj2,nHg8>rĬ`{sHx{S9ƹO8 I#*: W OKr'D-2KFVq-I vycč\v?[آ-Zd &ljc_u +rWd_;gELDp {+X &n݆z6LcuG-72d+o`} 0?, Wx<@:0cG i%M~ʫV3,h;n}Ă%[! CI,L:6EkFg<1ͺg,Dp}pmnըdoXƻZpT]w3Qpbl v*YXޙYIEKa}/ 4L%+TnW橌8>PֵvOO%0al04Lb=[=8/ՅERWC&GLxS>&wƚM3Y{naHLpr 6ޗPCs`SH#}Ol?~8p)T 6e荿~na  .@i鍛;ߴ|o_ 7g׋שPIj۴}vkc3US0TPEȡ v& O|F?˯h {Hp!T9s tFsl'fCa.'ddKC2yW13&OYh澂LܐnKz2Z 'cR 2:1:Kf$V xB*X1+֔"v(6*huNbWZ9/)}=D~'5Tb /yiHzyX̛8~IJ {_R7_n&eY_ci3v=[qcL1ed!/jBQgm\H3zKwy?a h& ceM CҐS1>Rcy>fm5kGk҅)Qʊݧ? ξ&żd_ӇЬ@ofGGcw[bVu ,(~z,&nvGCSuڶU`q3{_BϠW귰pQ4Q Gc;u$ 9叙X(^^GIEJ6OL}g-;4@i]JYGvC6T|+3Ro:maVQS-+mȅk Ȝ[.e17)} 7oczv7(:Zik= [n С }=FVx(&o@ 9I?Bpȫ_@y_Æ$~:ySyr>h#45Ses<5. wbyŃ5bPsyK.*g2귡Z=;9K\ kڀjr_k[*86mv#jP1ރ>e{L@!,QP._iS5^YgzM\1AZи2Q;40C4@E԰8zJ總C9.7_Nhncrڛ|3;Bv &ްFl|; .?.!7ndHlud0>Ia 3+ 'K)'7OPbspHzpqUCSݔΆKl938.=, ߳UbSko~Pl#0 ]+ǴNMklp)&=8^ C"!IU%p$dL4bIg1\qN.͉WVT@\IN OY=$[&na_k=y;ƈ='mo qlB=E0DޏtnaWX{e$"NO8<'D5C@qdd5r} 3BRvL(+}g`cd黸!Znpxm nzP@5kPqb=P >hI(7LM'_O4EbxۦQ3ɕĽ{B;yhV1= /{%䙿0{`\2 嘅 ee=#zxy ˝В¿em Sf]1>~f»^aHnuݜGw{2OR?͊Q7*)3r!yUF"G|1xQ1ePbwqd!I4WWۿ9%UĨ7g0gڎX\* .S?@xexcֽf|2_+D!SVm.]TaڏyLI!X Ⱥ3$mPBox SlTV%`[)MECyibwc}t߮_9wnJwtL:kB]V!*?v좀{@za5q!B %s0s9?ώoQ;n4н M}ޢp8\rO&7/=18'sպ-7 :{< PONX5'8G sܞ Cq WPi:Уu:N*vMoޟM]ȴgCs'o[q|l>Ia9K[iYyJ5P!10*6i}{saijcU"}yY CYJw~OcN6\?s9kD]}s*u/ՠp&>y\rq:^OW1ºkK55z:8[&]Lk¾Z'[H#sMrv*G I<#ފn ^::_0%b>9^N4rd$`^Ҵ0;3=|!^\`߱4lcD_!2 o?VklOMDFo/%]3q,f&C=[)ج̓/ ^QYh3dJEc#ly2Ex s{jY{lS ZȰqĢG[Sb=' H`G"T,2O>g0Wu9dNŎayjr3sǷS.13ީ$Bܕ;b8TyE%PG:^Wd^b!cOAO͙dѽrds!b){ 3(5uoe̛f~8*U"kx'CZ0^]$OBY&7]>>@{%Cᜌh/[ ((b[LJ+\9uKuI#(KůL0}u=7?bǚ-*,sY ܙx ao+\5 4H0@*2)Nr+[2pi yK̤Cԥ;XO6O av9IxzQpH~'Ȟɛ#)O]K OTC2[(E./ŰD5*e#h|03Δ[!#p'멭ےD -־[zuWwcLIK,#yP;$;n<}CKFBHO{aу!=Ed{U.OߐPBSFzXa곿 u[>%uR8h{x}bqݮ$ %;u\ȡ[!C;u^ih ҂Ffk&$Nch+\-la7[_*(]MX]5 q@^L>k/P~4ӥ5h+S @4ac}k d.砿$I_>{GT5 zBaƅ?4)ru5TE>IiZќA:hQq^<nt>GO4ld%s2}6h)"'hxC>&׮@~4$R.joĬCoGǂ/sp[t'#ļC]!D.ٓʇI7HBm ]\\׀2ӵjlfk)Im}]4j4*a;tbGArեXl`ĩ G/włPاU!y5gN#GG݋{҃;G0oՋm` i0E͂-a08Go`[߄Ƃ3Ӑ3$ڌo % K][XZ*rknF42vfl(i|R3E/Ą@gn_ wSbk&>b]`\5 nn.֎wF}=7}ჳPRR#]i5FAk[PD W^̦=L&s4:J3<`Ӻơ>YVlH9h֋kTV/8 pORcQK)|H/_J}-x,K7 3kW@CǮ+TP7aJ raL1fU5F6i9 c}ѦM0&1j{*W^I9PyKZ~xp*%ԑb"ϯ?G_!k^['tfYRV];9 E]|~f)e"[Ogɰ] (nWWiеzxS}W  8#7@7g[)Yy$9Zp}6XʐIT]16 ]e6L7K ,̢MKT~Ādm9Q+/mX'bigtܕН<){1OZbO#|9gcKz B:7i!kp({{zSYdpCHj }eu`}EUDQweA_oRYR[*iI0: Esb\W)~N#?]-1%{\!yJ%(K7K\8NxeL4mQ< T鯓6\yPjd'=i/c:ͣP_,ҬUCERs"4b~\okpY$SߢBrTvtRsDy="ၢ0xd]dxxΏfG7y1J:Jfflc|sJ(f 7(.E™YU}LX"DSo*%2XIzbON{`g2K ֻ?ֳUbMX6&*a[t]R#1k5.$6d7͝x_dx '^I}NoB5X`RpfͿ~kǼR4T:Zr]C=zF(4RQ&-JtPs:mg(9 v079ڮV?36!{ N^\Rҧ5NB3k_wM*oL<ϡr+uJV~B.P,cwd H+5.b 7!)q N!X9> $gEA@eyrq2_S=> , wvem]|ƒ÷cPϾ h"ϸ Q^:PHxT)h"с+(;ղj`t{QTn{$9MD K5u +bL,UF \UzjȠ(RQ É)x0-n2UYOZ9`s$翷RVrc ꊭAm0%RRCD[UƓ\3' ɽJIIɗϮJObbUbyyo /ct Z-q`kJCUƒ@hqw,nanz ?:"rM:(2Z~)#Hz/o}ma[6Cuڼ=xz0޿~IQҁׯd:N@N۞PwvY| *\2ZfOd|.q|$RgR\L~@4uP  :C!RJTrK<=L! ϮVSb^@g[Pwv!=4EgC!^A>;:|+ KA=7({"%:oc WXe^>,IOlOKR}wem7h)\mh%OxIpCLMnP]^ {?YSՕh}>P7G'':g>ՠz^h aKӀmѧ&$FJ:MTҿ~qC 1 lh7ӂc!/e/_<QO }j_גP3f.MԽ#jP9{F&0^|ך/jBMې!x`簥紻,Ķ9!3Fee1'+>o.f'86CcC'hC6dSd1XqXL(: gܡ,#B^h}v~N%Ժ:g3m[VDَ~zl q2+aH䚰l'7wEB^P{q;)Uz vA=qz>%\N@1-HUR1< !%=pڙ 4fwuWOrP}ͣ] $?0>feDM_:/AۭpV(7FΜ̼V0 rn|E>󇘃oH9yߑh!wMc*&Ӧd>Y$qs{W1AXXdM| |؄GFQ6` I`ISMd;LZޭ&YX1~f8O,;x:ɓ|2,-!ߕ̇-B3]߿5QӧՋXT=?Ū3$Zc0vzΛB{hʡx򢀈]);*A%pMbc$ ^^l9X(GXt@5}.U0GqG]ӼX@x J޷h86ױ$.U,4vJtIWA;#{_){\)PxOLX t,~Y_̭~8̲1v dh)4c#jLz͋{cNbs37.48m^SL~,>^2>Q;"d9M =0;%%{tҰ葏d= ҏ/@滦אhXb6?Zc^P,nDzEo7^`li"ʛ!pǒСrlh+SĂ'{vgX b%ilrxvp5vh4U ث>u 8R52B4_>ib?˟N]h=zUk9joaIۂmW8d{$aHtxe.uȇtMin>mC*I>rfS_Y)a 4' @v㥃_\qtg`O*ݱ)RV[߶|$# niKN|mdy m&;궝/0@g3(e?Ttմ!Ar\hT^{[% -RBAP]? LZ:CGCv@IԸ_ 3=b=цY^c*]ڲSFk3ƏI;;Lx/ şj׿[˦`z 7!琙[KAˏzkNV|iCJ.2=4 MVf-q⶙g@].mS$גwHkT=TxXl6;D ( R' w\ -sylJO4Q~EY_1_Es,n:Ik"_~a즹h>C v_ fjne WPGt_O{yX1'Ҋcrr. U W~ѥŨo~Kؖȶ¹ .R@X|@O/q5ۿ͞%LY>b79üjzOWoD~f!*, WQ1A ?8~`b옰u1Rɑ]GaDI VRl Z@Y)3'0{BSTE[ zv逰D+G4Ne$AXՖ1;Suaő ${W?bX #n(jy[0$E@c(<=ēaeQQkAq&F5fKmEU4*nbR/}kaGէ|}P;< 4P{aaH`{9fOM?ٳM-HGq>@&te_؟sE(oAׇ*ڊPB^' 4h}P]JҋY6{nf}C@n#*pВC߱Ni!V`e3p9q{L@u)T-ĘgxocbumƖn8Bfl8,>cɹ/~*C^kq0c~\m ru̚)L4^ĊkU28A䡹DX [(zi@MD!] Q-Ь>lctPXA*u v΢*#ǂ}$l, %XkAV`(dYUt$3+GKbqj47/D J'\waWpk-6SkTaqlד?o [%W0șd!ަ ̔ZUؠEMiS׊>uK%^"b<ܯ3_ZrŬJ%Pe1u˗#jKbŽ?OAs`e3rds {,Q;5U\H*M%Lk=nHS͢>zڿ0kP,[y;+A $ez<./KɁ6nn#3[A, rL0bPeJ?R wvB4nc`jR26_rHncS$ ٧ȐeIp ]j]7ǪC4^sdCz}Ǩ<0Cܺ<2G V$"ӰOJ럴ڇ]J'D2tMNcm<>[=u%}(I٩2š/$LaTWW*"硂_ϓL=@d) B²ɺxYg(ZIm 䘹%[RA9bQ$`wm)̣$~"]K濞܊3X_8w+}\&Q=BPr.-;kh@paX7άu+ +{~r\7W$P=vaki:hryltY]sU$σ?'/ca>;7eՀz,׷:0}帢;Ws2&r,AAjBlP{-xƶTwXŚZQ LVr|g#et{Nr]i&}W;@ F <7`_tKT}}j?N' u* >7 8l0wB^4[LJPWC* GsB}WX,pg 6rYy2(A}#޷򏯴}֠5}=,`ڮl_p(Ҡ_=f>JmѐSp*|R(*H{;V]H8ăwCqD~ } J+p!O܀Px\kو?MdNC #1YaI4H!w )(˚+ȟLE?U zρNwhxr"!q&ȉ |S,0~vH?Z&uQ*"#0 rNq&6 3 m@PWV(+dqtM8o5a[X0iuؾ]z G3'@r\njd_8nE3AObM 8h0Q㮄y-0I[vQ#߾~¤kN.P^-(6c*V}7&"Gwa CTd4nya[Pn? wzH4šzWa+/AC:AۃarPH@poj1h絜TH)k'﯈&i" W4-}XsCp f4 } bW X2п,~ zW$D]2_Ɨ`y4"wih9ENĽ!sJ!޽.(r)sRr\o:BE}E[֕_tvP/Y'CGezUqp4i #;*+dxYX$}G=@A [Xa_ϣTQ='C;$@%2zOk{?ރܨcW;CyQ67%~q[ácVq&4yw$bşK'h˰Nyc,Z fy5I;{bG!ߡW;MDπOttQq1տ)m-ٯ?~j~8kz"}n1blʌK|Ipx?8ןpFL.8.Iõ b\2]GPgfɅc!J曜 Quwبv*,_rs:p!2aSd{wkF+d^!QJS1;LyaD=h^$y,u_@!ϖjSSLC|bR3H80 .wj*ݸB{M t|+yl,u܄9D/!ǦƥKO@#2n8͕bUӯf]&6r uJG*"%L=mDf(e֔pˁ.\^, "aY.2azpTVt0 R5!bmqh ޾~ǒ^ϲ'28T0? bP;ev-9)]=ء/ܝӐ+ΫD2F5UCJ8Wm&:/6Cܼv.!M 4 Α M7r e |錭'Z| 7ʬ/?W,Z킐WHY0ULnׂʣov{@ۦza}h{N)lm4&|w=ajjHZb!B/χ)g9@/@hՄb4H k%ew.Uo~a1W4ɂt; &Tqgj^C&L{7G {id ϊ}??H>@ W@*=XnӗYנiyhI`>i]wНw- ]rHBbj|'8mqAcZuU@C*mbTє{Юav*{TAOb!ͯ))݊*Ĭ!3}krVN\(&%>ng5i@S=j}ߒ8MNiuCX^7(<c:zX'Cw󕳗= gcQGjh"/bRhj|96鸞慠=B 8 u߿pCmg( w,Q:xiMv~xޓjgTC3ʎ]~U xpMV(˫1DLٜ7B;ӢLE-|T P_s<P=%-ZEϙPc>ⷈ[__hHRr:Q9#b=&?aRdZQ –sX_&Yk7 ȾY:-·[<^ӝI'ǺرI:ycE,ؔ}#iqX_|hI= N1lc%8M=J64T6N7֎? 2^G'D[lіst0q~dMĥ{zC#C}!@-C GUy*Hؽ~_Ծobb.ʆ2cVᲪ{x^Aa8cOzʃ\b͡\N ѯ=Յއwx e w40x8{Њx;K8k([?xW֡c d bAq@'"Y7>P|TA;ѫX,zDn{ UAfБ7Pf0I"7I S?A2ذHZZ;3NbS&ɧk\ⰡcOVls8gHe[q8/E Y8܁0v4EO=xZ';pnu[9sӬ/Ռk^PZ.LoM̾C$X=CÂ71,o_&)O8> 5C.eЇ=hT$ ^\S4c2<ǠRxQL znFMW0JN lt9KE E+bYO0YjHW %DoEVrg,˖Pơto8O~Ƹ.';ᬻ`8qs9sAjoꪼ%S%q,h,U TjmE `s~C'P0rpnG.-oTY7L-ey?H=_χԶU!o6y5(X{tG25\r<^hD,mn8_?u$0rM[}~ /N4[˿Oy!樕j1_nc i6e[GV܋A|ą$Xywo!,ucne/b%@q[X(]VHGMPtFϿS0_UV߫@}AK|mY<}9  "  ÷[w $::a70$zP[buNX~,rYK^ C^?$sश!R݂0n)Kv=]bYUM\ĚV |ё N5J6L3c`hr3ksShw•e!']r*[7ՎcspP$xX;l 1IT*cz`h-ٳ~XrCǬ'._5}aG!%+&ؼT[qWڳ)dac/4x,잤of]]"K9Zu([>6Ao}Ph)Oٯzݕ!|!GN_ާ6\0F.6TVq@s34KGzusL6'ғ TӫP~}w9.g$remf[,+XLĜy=7\(ب|~y/BCPZ9eo,* 8q@ܙsDZ,]n }ff0y`n!B_#wBe:'v]y~[xT!<_ ~Y> ʱw)sd цd>%%#@)D4\NOdG~0}A5l]d?/ibS'䰮r;`wIym O}ŷ` F#&fhd[yiۜ0c'7,#x=ֺ2 nCϤ==IS31UD/)ݗ!V~вŶͬ'XOٯ>hŠ'7.b^Vo (!5 Sbr'/`#)맂اM479ꓝ!n׼_#iw]Pao p2xSi9(/ U؉-'80Ơ@{gY沁im@@w[ݵqPW;^S?m3EgDu{(;al +PS&עIo)Qb٫OȐm .ft-EFW \kIasa/v 9zen.G?V<7q#LN%8LpƗVqBW$7D <˅~>/7%C޻WpT_xI,;{>[ュ-urGSvi#$&uf*;/i^Vvko/Uc&9 ֗ePyC=]+,e=箣/zn)ᐕWbN.&3XO % ?CNl2t dI45|${Ť!fTiWP]e ޖy~:62. .mAؙKКYdEE3m0i9H9茚`}"Q$JbF!ӽ.:[K{y >a%ϕ FGt{_8N7EXP3+EOMV}ni`\jE9h;0:fX,V\OY'({ ".z<@ڐ C$@Fs}$$+:G)s; 6]iAXJy,\ׇu]y- Lf`?s7ֺuA2<\R0fR)) T+KiՔ% хq qu4p%m RP)Z@0c,v \ +IGqgE81  rPs(0~?O Qv}ȽIZUJͯK8sn)(^5N9=X&HLZawAjHcmNn(NCZLϻwN/)HIAc5ݛջ? dK= q_K¦̋'IygǢm([@Q%06 &j>]`Vn*oӉ&Cod#BKڊNEK wLcM]&p/*D 4}Ojë0h_nStc&CCK4^ J"BzS1?KY^_ ;MoQD]cF/=$*wam.j'u:\-FҺrN5E,ИLȜn^K7,7am;G6NuvIwKaɋB%_r]GP4nwu+q*>'3[)ϰ8KZe 7NHcш_@z!Tfbr_mB.;(y[qA*;އi!{- )ցlp~q#nnPU3 ڻ> n8B3r$֢B7Oل_yFо|! TStf`@ȭt(49u{Ӯ)RªYhb,TzQ]lF@%WQd1_;:.Peھ|>lJ^;Z͖/yӑ8HEEY*8rYQ;lF Wd0CgfFQZnعK+Ա\^keՙ^GB2tsbNBWS5;_ѥ1;Jckkgpnӛ VutԔ: \?KdŖiXxQ@,;f*7oA,qMRYfg'1y'yz59}NH& tQ;!_OY=,({hSn8M!7J,L,(//?}`<@ Rz jR؁A.@bzr.SA3hL}4_faC  BO.-p8Z48ϫDuhЗh!u{(m8/h8Nȁ2[ӧP;~4f5)7yCg_>5}rk6&d =g+|c mh:-g 6LvC#XMUȦ`[~@M#6b\-eKoˡhɷGb޽@e1P.vⲯChP|3'#5~5!!d.r} 1N7!}'O푧k TP(X+N cuRfs*HCᗢ gHns]DՎU J]" :Ю < R"šy|>~+ 'Ea-y8|٪y @C|J|{(3zXϣz|;&uݱ͹ow&TT`z!d?Iu1{ECe&˿SIaZi;X}F-%ZN8za6 >@H*+#N}s&?f,|$H^ @C-u}nތ+X8} riy8EנH~'P(-9 Ck|g2 ة2( @N)&/U}(~›h //]u)>Q;~ophjawF .%3R륋g1/,$eԺHB&ESrqzP6lɖ#)鱊-,?jkR[f!3әo99ﰌZF}>ZJ.N`v(kܜJy 'oĖoXyPV@׸Gj7VRVaL)_WSr̞aE*Lض/`(yJT Nj>džվ1[t ,> TtˑMLmC6ٺ)xC둴>>TJHqKݽX_>!.PX35.-R< ҁcGpzi@eW?5ۯ`} Ȫm468!7Jgqݼ S:Q!rϱڱeG Hf;*)[C@Te;j_\`/qÍcN'r@zOm XpX) AQrV]0W@bM"F/>#*/]>t-0?=k!hzsgk4u 37xrt`h&UU _{ԍe;RAٕ!IH(}Wiƿ{%Dv}}G1±WYlX".sCxFj!3j_< \ae^!lc$f:th&Q+'x aJk:0[[ e8BsBRSѡpi"xqv< eQӘݯcƽN8x($}iH[~DF;æoU5l쐂|782gn @曃3{{I3 3bև;m["4S}c߾ b8EDؔIơOCVU۾l )'O?SMƑ/"KPq$kZFu}$`בM[G}Ŝ`, m:PN?/퐛'q v R`{$ަqAˋiC_8]$48'X(PŠz+XՈy  XV,@$e&(ˮ,x(Ut1~-L tV2u[1Bͩ_c5qaGrzb0 !:x k+47%`s XtC&0^PVqʼn"}~W8YFd5(mQ琂*\~R|r__Cڗs;^mg?ule~,):rz'MGK07ԁQOJJ:db;ӝ6'O`>yäY )߅+cZPbٝ.p׷H;SaH_ WvƼ"F3Ie^!)7<o`}i~9KG! piic5~݈%=G$l>bOፚu,x6UgOͽ8jEO7PZI}9db̀&0q n*'<;mld;Jtİ9#+Ȗ.9`B*,^y2IJ:wZ:rH'vs =7RZ0To5keb+rQ(sjφdX,%-OFb]ލ\mhC!gYqL"o2Wec͔a8)~M甝zu0p.1.^8'w(/~N͓ѡ/A=5?PXF fŷXf.]$ϧo}k&8k\i7Ê2g)1+_Po|GI 8xglR5`?C- zj#<>QcDH1VzsV/d2:sqhˬ8)3#'-Do~b> 8~w ^WFkGPZCKLﺝ ;6| 2Gv꾎wSPϿuO ܤKfAbVuR4ltewCݜhc fIld@`u[e,8N߃<$4C,76F)1 \ANX 21*pǕpx@dtޠ(=t.vF ax[հz"L|?5W9Bl3:vzآrBeC(vfuwWhY5HcГc(}/L2ƨUM{|17I 9Br w2%1\,1vװ9I|cYHLq TG*GՍ-Ɨ`J sq(Y#vylQ HZe}y?N'<[cttf ʆ/dP]} w)V {3Ũʢa{3L<` RNnVȨXkQ/ /o^~3uhyjoLu*ʺDDA?J5Mw$8vΨO95]]Ew+HcO:Ca'-"hAu:.љ7P"s(T9 wB!9euC,rJO`A³OXG '6rI l`atf;օC#Ǟ.C(i΁\3Yml>,oOW =Ư" ,3%b=0cպVݲP#O`V B2F,4CgE ,|IL8m^I:EAJF= NdM ~}pOxIr=ű~D~b |2$\ނ$hGгיIվX|̲@C^`I!Vm7z ;HO9ΖA^\REh4\<|79kR}Gv=XyU ԛ({U{N,p &9;><%շkE1J *Q C} !=h*}KZk%i0%R77PZ.Õ;\b}~Ά?NO *{eCִG1M`,8\!BUk6yf0]i1,zwDxbSŒQ /jZ':kU$ m4}pSb(;{^ O}p:]qI-@}`m@j|??@EB~!9Qfحy탊* f$K,KC[w_ڇH!i|Az]o-|GUwCXVq0lFn$772 A6D7k̙1C b3_?!+ƒ%Ґ^=r(';x*nG3kAw5zν| dכcHm)4OKxӿҀZ_BP|_CTȾ'(tC+2Β4Q90RAAyQ(a? $&79j9`e0l'ihvSiyFuP]ِ?D4G/nFAg +^hMLy? !Ŀ*n!K_$1=f+u 7g2xA>VC@P#e : H+OBĈ,i;J0I/:@£g̰$(X_'Yf fU+F'[^HIK, SN^2|kG<>/E(%lC셅y<(8^ O,( Ei UPBq3('g _?0B۳Im~ z *I6~ig}R٪9<1ohͭ51?&;idD?Wө>yX's,< }  Zu>ƍPCxn\5I.,R*<V\?1dux^xml:3X@xBèjgɌC\^z+V=q%XtT|kRKآ' %\wU9b25U 嗢 3ZչlRMx֕E 焴: '48ԁ KYUq8s_<殃^՗tP/c&g/jVþ^v嫸Gt'>q?wI?Qũ&աqc݁h \}x9,\._ӿbA'-3BTjw+~{c'P }$J {v [72m2 Nb1"^D =_]ɇ޶^TcIĤ!|H:&K/$]ƒ Xm=mfeǼ2g^g Ђ^Q7b0vyl/=f;KDa, }h%%CNaNvs V7d<؅STJhվDzÿHϧaavX8McoDsu]uԄ@}Xs_$ȧZbsRIz cR߉M[VtI`tR/WuY怪gL_F|Eṫ`D/jsQuS~,#lskׄ]=Y2V4tSK=8~;*~;G^(ߘ"jSvHyUž'2FEIBBT!RMd{o΃^&P{|>|=u}]kZ4 ^y>lղ)|ݮ&5*bg5n]C,un铲ƞSOzϝҤ䣆8(msfPg¡۷֔C) hK:Gt:E'9 FpX]B0.*HXeOU!:8^!BQJ|bǹ~7bl evdizL*k2K%0.`[9@oQK I8:L.'u.)I,a 5~풡2Z—l$KO) d[2گaVo ;Eܡ^־v6Vg(VFA:k秧DzaX'y4 )ոz`!!lP͝>y/WޯSG#F!?O]f> JxJ&t9ބ ҨCư͑H bLa,h+0T`J}lɫX Ԙ-lXNk 62ɛ?RbG[[zN>=vH"\CE"KiBN>I칱q& ,9`!ZBn?Pa_X} vq5dž(Gfpv7ms*[j) α@U mJn$sTX -w[kC}υ0 8 EEQ*Yz םU1zgLM Hd‚pU#6}x 2Z>pv>j[_}p@"6\0=ߣ[<(.1/6sҰuɠ2V3ϸC>mxأJߎ^4wo*r/!JхWm ugp^;ҁeRzG0 G (sm)lTDC M8pR_zĝǘ_%lz)ts$iAo4+}A齿!yԕ&Kk[MD83zFkIH%Q?!r "e<j=`v6WHĢ˩}אTM}ow݇C;acdP{miSl=/# nBӃ7^Bw;ae398UJ.`nkSKkHbՉfLy$4 5"Ü1[wm-i>KAT=dqQŦN#m&86:T_U492!\ch| gB?@Լ䐰-G2^(Q-1eIH(3'[ѱSa/9 n2JAP2кIoM-6"u]q%w1TCkŊe$1 Ba\2io 1{m:Xifn2M*1-'͠52k&w:>¨c}#{W_dZx'w:xߋS!iDPE5$<| X-+6mx6;B>kvTb;6=֑ʍ/6XdƄ]-G18APP_9OI5nW>6$]*c,`g;9 BGc@&TqɆ%F0+yK>A?kQ)"jyD?l~`wu ZOJE#!AKسJPb^wPEw`ݫw1lRʂi1-A4,i $O(dB |lܗ *b%#cq̬{|QKIJ~ 2=GBУ0y@SCǨ'Keg]TF' P||9_n;͡{O1qđӦ XcQ=.7ìEߛ`\YGK`bVȒ+q9di]C[%{ -_w7"f~Գޅg9gbp!O's`η1Wh]9T8car]e -zz4S3^*Ş6pxh6I*Lj=&,l8s\,CMSPiPIX 'Wt bى@y5*֛;ުO~5{Zގ{CR!̿8[aء IW^K]P~(J yG;BO"5X6w0!dM@nP@W| ۷QŚGaA\Qkލ˟' iԗ!= ]K^%C՜Ġhd=Au/{]nb y'W;{oLj "?Y]݀' D >~>! S^dQ$VU{+M]~'nACJa@7,Z Tl-0ƥ^']03$$~醿0Ydv+ *^P[hQ~_vuSO{O<-9 ųiPVF1Ï$/n:c8pZ/N(|6C58EO ~4%'mXΈ^1|3*@? 6j5*.M 2^ |0fYG ?oG{q]o.yu s[ mIC?¨G ]H =zi'!N&HuŠ9*`\9g5,Q^ Y!}`jhإ޶{B9ɹ8hJvf#H/g?T\ }PPκ# t6~&*yY>RAfriL)OQJ^vj6P'uo A:RC#7\\d]”*Hq:ri&^<0㜒t3 w鿤þ Y㟰iF;!y?X؍Sg!uH1pIIWohw#/\gi!oAk-d+ F :+ao (8z_) ;`Zd($@fGShyʠTK ѵ._S90^ 9 ӌmv: ,DZ&,՞0lf~݄F̰FmD^[@~S3U3>F-ce@w5Z=@'#!Q=O˰( zSڡzb6 Ѡ8ɷuiT[tĔ Pŧ0͂2^% Ů!bW:su1 zPG-/)PbKԜ^x{+6T?=9lgDx״pu281,# F/W H=e@=Bك5ԃʨH()Rԩg&klPY#9x>в&;i""߅P?g{ RՌ~IȤȈ{f;l?TGekL YnQib9҄a=E0ܥKQ@4!A+W)7yPf Ou;@li/V6UA'r.H:N" ޷J#ZVoXJ佉%/hbMDLY wƒl=Ţw%X)ܛ-޷bq\v<3K߅G= ~3VwAۺgxUnO[ XL)rۏ5K`?ٚ>= TqfOx|z_vͿK: rYuTޣGNOiֳ&HIF4q{QlJ$l~TEIoq[C9l'Xx?ҷuHAq9{~+;9=80Gh}pV)ÜR =ZPG2sڃT w2!ն:$ rX:u < ŞzX%uvC9 ؗucK 38;/ rQ׷f}0$lL47|zWwoUa4:k2yr Rlz}X\EyM:_g^ʹ87Z}<ϛDr0&Xh[b@X2[(3=oѫ\!qR}:MFlnσ9agڛ*%ZLpCTc8w V!'Z)qX9_O“T Dş͟ ͷt咎uC:tH/4jEwşzk݋s-<3Ͷ~b>I0e2W=pfT[5 .Z]L{171(Іwx"2$~}G=˪*߀8l/>:` j,9u"S^bZN`HBJe>Wj%@xoNwtQS/} oOY AL[ NM0On%n?fQqhW5㇪ëccO1C s>%'zm -q eGs?E7p40_+7Vzš#U|om72{@>iN1 ei)A. LwUC瑄;nH +|pbnCeQ_.F{9P(!?CSPY#jR5iYID@+H VV,>5l(!1OƸcOixNU">FjܘZ(/̿Eٴd&R+PDkU<З*iy~On9Gƒ\[H'z\y 霈 dUkCF>HL 36ġǗ~";π y\W no駓 @ݑܢ@yŃ@rXDcxyk 54^gu~[E01=9 {06z0 Nޡb{-%t0)k`^K\k $LԴj:?F q>0yF\Z5NdR}?m/Z ݥ3C|qH"3Yy97hoH?Sdǰp=MW0!wٰ#h _^(0;Xh_K~r2ԿV;;:NYbх3ͱHJn^iSaĜw j]!{B3 fp!~>*J 577[eSYE:Wyli>;bD/5gGoA38.F5SJQ(JA­.`sxK{3Tf~7"t=q/ KPs:|3ԷuK6\`R_̎X˻³b ?Dݭoay [$Z&?)b :2_, ,ڋDȻж"P UYGK>X^vMϙsj~zU`}QC6Ul:bNKw{_$ahד!t5&\ Iq뷎 K?{ DTb˧wx^}8Baɇ =Űm~RfTjFB{?c|\H\. <%.DCEjsO}ޏ0׋D[.cmym[X&闄Y>"MjY,}z"K"3.e6,Ƶ`$>ֲW{c? Z8Ȼxހ]@T˺ OrG`f3gs0PoǾS]R|. u= `>e$%~B]GC2yC1qGФ`h)`JRMtx){PBw&FLGUh\N&*Ew&-/ȮJrO6R+"3NL'ľ;P)y J嶴pڽWQHue,/J/E`.Y2a_(J 9̒3v,Bܩӄh %ɯbjS/m*c9_Vf-Hܠ] wb@g vɸlZnPd("F(9}ߨҒQP ]xh?98+ʼn+rlc,SFUAffG6~΍h瘠ǚKz7,r#uotqUdM' ]4ݥٲ.cѶWG:+=)2vfׅPr(yITӘ)ϩ8(;Yy3)n:aʼ.)pW쓽&fMqrᄡC%K9{ҊGY^-F sdٯVnp&q΋`Sncii|v?QQ?KڈLJ x~xzD; v9ݿ[dbRFsTi.Kd&R;#7ٟŴo)1)l#7p؜偗X=s) }/p 5U\33V4l M5!gII:alz#li%aE3TMcBke˘t7 欘<S}CXkHݾPzڞ{@#4QgĽx)2SD<°e5f=d'd-[AO0T'.ӜkކjLpr[Dᄫ,{F9yڕ@sg-fQLòFW>b:'m_K+-4:}_~kLqQaW}16Ź+k/z@Ć?!Fxb쭫d>.]UGCSegE>Hм?]x]_?CŲO bn=i*V,a=uS~n6kcvyhM=1@|Ms^2"P_M [.7LDt(AQڑ4SCS*x[:(5܂Ȫڅg ]ܡOaY"C6OC/B{K td7e5NOA9o}As~}5pZ~q{x*Ve-'0G<jUE7cP#DZ9>Hm]Q?i˜#םÈ y 1fmOz;H_mJd;*(H"uNJULI(rB>{bh4_913%W-z"2ŔZefSk%7cy՗A}bgxnb:ФD+hzˡi8Se;Ct3[Vm=%?NH@ҙC\f_|Iօ{fA 3*Hu`ǼuzXs~ ?FT),ѡ1ONlmg:]E'RtOOᐫq>NV/eF`xe|F4Ws J~Hr!CzpDʨ‡X%*JKZp복4j]#nPs7UqMZ++H<3#db:Vhvt ;rmK wQ_ ~lLTT\i䍳;<_Ny L+`RSWj9x;8xw[;qn2S@^OǑz& lcBw䔦F} ]O%ɀ}7 <6_]It-'S+LKn =yNL3mW׉9qba qqAK6(m)CǶb {*=?r;+6*?D7C`T/ 9è ?|mĔKpWDM<xHwq!~s,$p U ߪ/_s#I9[:,knʤمYiMe7Cn]0bdz+ p>QfNN(bN8H9 ~զ@iS `c J\>{ DWH1Y]Ww 7Nɼ ,!CX_FFeH,u=[Ci^a]vk(]\%㸰ҹeX_@p{3D#ήC(c DVf>lDbe-Xy-Z4&v\V% kG #\) I|侴op,s0>~iۃi [;yLzk%$\ij]<|LRm8{}SF}8.3'%-Hci{#Xttq(V[kKYJNh buՋN/{9g#^2C)iQE;x{q@W6THYm:y4? wk+W!u] 8 e^7մ>v@eIlAlj\xAwwH]eGv $@ܽG1(9Ji _·riܡVa;^N߭ g~s\7TȜy2!bMf\ta=_})͘Jr+AbPv"Kc-uW2H ̹._)bkNmi\ +58٣&1%eO(P~T1 fsR)Wjps6T'}}NFн^Ao_@cv*baNWh:H [=OLwByu# LKcC=XaB +nkD|43쮶{nCX/5SNbs+I3[{n*9^ľ'soJ!G$:S,טsf8o8?ܭE!]wM,H_Ã?ҨahZc^ST[K;4"Cc5~R0qQg馊\clHt4k&ѸjBgv'V>u$ǿlӸib0}E ;ߕWNսsT>зA\'ϸgh|>'iXQ͔i(C1`&ÿ]"y-Uy_R‘u1V=,uROiVe.) =n8YՓ? 10q(XLU6acxZyRV86 Vj-n߉mL=c_)~D$Na8,i{°N)No#}I,'? O)nsB7̦tdM$Ca3sQb<%u~=x5`tj́zJA/TI?,)_ޱ#m<_YnrL=~SEarѷ=M,gx mtE݁cܜE`cj]cvu*4UyRO4pzli!*C6.Tӟ. goQU}T1>:ydr/M͏TtJ(9.~SMޅ( lIl35)1u*ïuVC ;:,ʓ?u%^֩8y|m#PvUL6b3>FĜįvW!ĽsAFRIUǀT>~z#hZ#[ɀVzG ?F CecoֺNښ+߅bե3~,Eț OQ"goN(w~o6`"ںhw3ahmմqyt ۬El2F x&>xO~*,$YnWcL;-I{3$S]ǸO9 Apw7Č?xGTp'T3Xk? =jsoaįϯuT -EyWvlQ5&p K[^r Bt^ rtڜw jtY`h x(x MBt 1y*lSE>Lo+?a/iwwAbi]jjL YB >%H8./ɫkB t{5$gP^?7>GH`XlhPξ˗Ӏ?v[7?ڑ&2 p=7=C{%19T9ץ,Ԅ2b"asfn|=3k:dd;|}a,xx@]%\@ht,r* o!,g}Ha"{"ۀh[X ' E)UhYz2ZG@١ϣmaPɠܶ a{8iaKp( "cànRb1%[p 7F8_5U:%z{ׁ S㵁xHV&5Ԃzi!7bPOBY"5;0Zo:D1IB o;kPo>1xדbDq"uP\^D>bw4wc[6OJC^%Sތ~>εC{|CVRSIGxG4ʻvع*/ 9fF!G!q\:l0^:%XH$VJâ~?X`tu=7FF?]g!ӝ")DbU$ZÂV bbV=3lΠ a-tV>RIg?z3*p@{ZjCM2W;EB\d |oǑs5{7vBl>4}>ɋנc+{HQ]TsƱw)6K..X,f{9D~PXS#C{s|R+l:.tˊfO[I=6"Ӄݠԏm.nrkKRuJVȋ>Kѵ5??aiCXCh:s\P ?S0+zCU) XмXe 32z_g&8p\Hh!|{u V3wi}cJCfg? ikO`9@)ig4Wi}^co4slN1^KkWc6ev-lr;40O#n|93Ig"iIVAADs4 λwDOn*edeaCE#@x7N} /;g ;hڡx_V8 u~O 3ҏI,hr%SC.J[*q88sZ*d-RÔU G!(~+4r޼39Qҡʤk+U0M&dݘlVkd=0\ 4;5^ҡ΄LZ&Zg5O-S_+8y R+$HiBUCOІR ANR7.˺)n٢ͫ0] Q$_ie,79>?AVU3ɬFp+4Yf3Umlb ʥZwZ($(%Bě$Jq̾.q!r36NfA˜_,ͥS0a*Cf[ nj!V]9WKr/ bC }ْު : _B  d^O?$=nZv`GVU4yqHEc+s[kH0u9"m<.MdYA"bJI8itoRǾ=e Z:{G^d1,|[ ~2^6*XRI7ӝ C6Y%dDv*vi@㑛G^j@9UE+7e C:|) 7X*ecϑqq2,<6_ "X e3ġ&W(Զ5q'J͠4Q_G,hbqRi\"gr}w„NO@N ޕZa71$t{ٍsרQن:x_ H~=veXx~`_fKa<0edX\r§TS/dyϟ1qW 7e%)V= V9s {)lc{o4 /ņ\kA;mZ n[4cNNuX,90r1 kߟΰDBr{N̜)7xp`"'*>u'j~mBuL[l Ede@Zi78G Gve+Hn`D6HdʘWX^>3FJޡ/Oل&OLWrx?\r>1Po|-&t-HrKbKf]}qTMa4uI,&[V[Ñ;e*BN- W^t&TQy^bhQ=Z}>`M75V4~Ox3 aikXF>$M7%_}EUSAuCeOz`5gIP0صTFLU b9H?a'C!Z=ulo:LGBi|~b~ч~DBɽhBaז^c^{w6"eRrsROPt"0wx,nĻLApH.kj7l{xN.l>5IڧNq^FS_oFwNcs{v\:!" jn,!\0ica_6*{~`j2^'M Ąǭ5$[D#*\0"|szC_9?eG=xo8=XqOs)Pc%p:\F(+ʆv_߰D9S{5-}F{4H5=xmv;+y;8Pj}o;䜀hڑGaXYtoaLM>b ~>{>GKfmmz8=| :+T<`2K\{tdl+.ً&W7χpߎM1ή<3Aʗgamy4lNO;؋C*ix遯8Mj-::q*5t~ 1Il=]?Wð-:R'VF48F87Foi咃#0]qax,TY*Lð2}0P(jT`H/ͳm/C=C1l1z\3gS݃w8i^=a)A쵿SQvDžw/讳pM ݍgoC.j&R/;B940Qn[0d0`D <?Be_YD: xgNqBY8͒Yڛswࠊx0M)7-1-Yyd]АNc()MUqՑC`D-~dU3`W7d>߄&Z$Bk1sϿBH/߳vt|b})JKjB}=гR FۮacuilKq'1X)4- L(%I%Ԧ<*t橀HЬlFmo#XT߫HW9YwC=7D9`*~ ~@+4XpIk@P+z^R )n `f. F3ɕրI?0G5)K*-^XХHy*+nrF:.>m.< x݇f/\yC{@׾櫺Sa }%ʷm哕v=5ik PYF: ?LnYaGjl%>sܼc*_#P˸cջomoA^1GRz)^>m&WP~7(sPUhCURҫ& bF[$5֦ʿql<%_ˋ.2Uu'9ӽ>,}D( ,9̛d{"yHb凤gME^B/~ -fH@ۉ_=ዬgs`_}s;  u :Bz*j5.UVC3vAA/yelޗmb顢w|z. Q񲕹8ǫ=dӠԛ?0.zj6*\Hrj[MMp..HOU-cXy T/?5.Ź\W2~3_p5ܪҰD#S RcA,<1?/z|Ek$2fv`= ̗figl{%roL#LjqVg g:;2 0nԵ ܰL6 &.cZd-y" ˩gR|^Pc^ l]Un&tql2"EM%)s HHc.V|bC3nhi+jX9rl=u&6~3jО.0t6;?wc'Psğ[: mk;F*ZS h+gFk:p wkmuDuLK4奢H .O?@a]ɜPۼK7d;@>X>>~H=o2p>Ly{ Zm4:e=\*b0*{%^N+ %;jZcD&ZG*6h'~w\`PĒC_C}|AgK۟S^!c!, 2VxnBNw|uщOA '5 (KJ A]SiuHk26R1o0hxHqCJ?AЍ/!HNH=R~GPF q'P{)߀!g(q',6g;>BN Pyt"1[r{ݤeB~ËDwcUG&'TRNA{'U L({&◾? CnFwUո4:ҟUKvOtAEQžE 9H Š1*[hR#`s!U$Nض*+d}›Տq!G[w:Z b Mr=6NCn⶘;D%2"eK^ÀX!c n) $0Fͻ5wk"1jT% R^]MߐPpozoM("(FxA6u' l/m,t¤]aeO,'&zp[SJ D-:sEm(9JL{ͮXnu!UZ:@-ۥ=km.kzqUW(+ N8mSGoTN1꩚COĸ?| JdbCmrt%dR{#F'92opuo0lJWXUwBWϜ2l>x .PCus` -K1CX}3{^Y^fIb>D;SO 205_'Jtq c] IC(>.ƒ/6ut(r_͏K'ABĚ.I2\?L\pn<\sxjNzYW"`o7䫱!"4 9:)/Vl]QVjp\HtZ ?|\wE"XE;T<B==w1`3a;ev׼?-4 & C/!fyR%7SA}-JڑTxy,ZS_`)׈a3sh+m]V:YtʯSG5,ں@\\S9j-^BȎZHq[l#J0Ku+P՚%i-X6/Z80¦fgE213c_@[ā_>v?:㹱lEpfgRpDv!ּ'2~re&AW+/|$' T\~ \36|Iş!&U}#)$t1/esB/f^Y|}je}y#0d 1cI$qPT ,=z퇃ФMz5;`vci+4yXfq mmQt`JrjGB 輋:Ma‘WcPX) ->+c +P|b!.[i&H@mғ.&:uAǻS_8!aJ7 dC"S6@IZ# mA<1_~yϗ5' ;U;b5f/ \.dZX01y1QC/H˝Y+x}v־|on < \2/ylZiG.S=81aȈ)_:qtfSP i@swԖh< dž\0+. LsPKo2-5ߊYbʹ~LPoU]ϭPBpxÏ#ĿnibQo3C}P}hvCz KZ~6#` ;.¡0]=1a_RcxՑ$ҘCfA~=cvwu [Z$uu\ G2xݠ1~v$pIǑ3]zXUu:[_PﻊK뱧A| [;]=N`d&9Ƴ # uع{8ƹf C9bW\O)~f >'{.,7&x5+6.g^`TȽoHz%4IJV 6SuA} w~VzA3XŽů?+AF\ N73 ~dSh%U4΋ @&7MmmFe7*GbVpoF[GV`y:3X)_*6Qzd} #jؤ:޵ͳ{ܣ9/a7-{v{̢Oc̾]ye܍8A=v:.lޯ+SH":zNº3o9nHK6!LMBs- i_V#m=lXM"UWV zzr%:7,VcNA,WW#;q0p8/v͒ީ`3o Y ZȵT4,qXvJdܡ^ۋW-0眤^7-t׭S{!%8AZ~8v9@zfW/+4>YjbsMEd549t Jnф$Nj'zdDa 7q#`B_KJ$%3S~+SӺӽxzx*Z!#8 Ebg2oɰ U6P42Ră=W/K HPnzA-2ZCk ر-O,B#!1py{rjYHof [|U+PLMuh8v'5ddN(Om%!bQ19Aq5{ 7㝚IJ~52*LE1F=/`I|'~_<:9qi( kqJ"!qw/힭o⶝ϮEݳo!wː!yfP9RpRbܐ>^>n)'AFmNfɟA՘hdӃ,%2r6 db;ql^ ZCuA4r;aX,@(n%BHKx7hb0 .m q##E^/I Eo4#fy*:NA"n0/zf}#㡽f= /Ucw̻!{=?G4AH4}bl}ҥF%M;ׅ/%@Ö1xz֊9!Vwt&uCJFgI<?x|އϊ BXqqN.RmO]=6Mo%b -P׍5]Pcf|ƑkeBҥ~_ƢXVJ[^}%Y"䜱+o0/G9frBKgWbxşJ<10̈uZB)Pg'C g4!wQ8NINłwWnC?W]~ 뿈6PF~04NYHy@#=6u)7_[qeѥؠ" ґְ,]@d5d~2 )j׼;A8@ g1֚ryʏ([F/u4PfP@RXo95"aPs,6'Vt *┄1u:Po0|w G a9\l*0"3~8]І?Z_m_vILcB9r7>uF=&WPYܿILu;wn55&׽Għ<"- x0-t>X\ھ^s^h(E⇬yk?3&~71ɐ.:|oqH) k2|/h*8Ya Y7f}& 90xD+WaJM`E ꦶƬMk2Lo=\ ±^oٝ ~q? 2zgP$E e.běİ*u&Nk虰`3]EOֳ;}t"#P~.ۗ&O2@5SB_Y|4PaL $ދ܇ =/3)YOKHc QBLd[%f y&4:蝳JJSkBkz͕b>? -4Ob{ټ8aWr(x{IMhb#8'uo {Aɩ= G SoQLkCYL\yW=*?qnObSM Hhu%;njlB>W|0ܹ3!2y<_}w$|& ?iݯz$c$Q=Vrq^ @|1RD2Jzm1E`QT'6fUrӫ@^(voFAn~&FRx` Dw{C z^#49ٸ^B 5jhCX i{ !lPP{U!r tF$0AEG}VhTX79yVt@âߡim'f7bðޒwߍͺ筻k^-L]P.$̙<bjXaB~JZk~n*܋X>}x +_8r:vpǿ>fX&3Ry04 g3 G{A(L|!I!i # U̜lXc{(p 3_'v+KgW4 1VUg?P^ǶrW4p9M攁5_Âl@F8 3?$OgrBa4wS0uid"aFzNR9=l(cI2҆98tǽ0 ћ1`s ٯ"5I$}%~kgFHbհ[6*Jk5'H(0g(ns;9;._:^;&$\Nv/~mBjo2^JJ|` 4$7w/@Tg#&V+b/,/,ztN̡? ".N7:b"w/XC!3ؼ}$>̨D[I1WW-%>W0ISoBM>r<s|9|]0͇b=^x/f>upĆo4#jh,,NΆ.K}p|<ݿR}ܧ[+sSRK+ "g1xSP氦VRfwھpj:mK/El;.~sB9"z l^t=WbP,yr4@^v|Dȶ@5>c1Oǜ3o ;kco?S[$d/I{q<:h+38Cc 29k?VO8SU`b-pU1md"ֺ2򓸨LFu[S˰H F$*='ذx[T{1 9[KEymVMƫsEGbCK xL#N3̿X^/2i,?ogsah3iۄCMzt,a:Z,H:߸L"E:A֐fUv(z"qIii7m^koƸ4؍+/<~VM}#u_CW% y{'u\*Tj*֙3 _ -@FV>xzқy' d^8 E\k :\߆ w~eV_<;6;xNw9s([:6-E*,53NEL?A6t:T0RæESX{܄(L^.uO]D'i]n1W?]~MT &hf&/zaEG[MǷJsK(6x<R?TBCGi3VҏwAηN\K~ѡ-K 0;7 mrBO:q2P.a!gB(m@F;tw1]/Jd&̐lfǣY]٥1j'gP1Yvܤ,wP-0cFQ3-oggFp/?Uzs]d?\濮>Z l[eYW lya,۾'_@h""t^lgYz0ZO Laqx^>;L7iϧ8Uz:^o >W3an *E Ep QbPÞFۀ$UZܿgOBЭ%_X},ư[sCۥ+ߧi!&\ODY XR hk?Z3L}>eI!L0mu.f]Xšȳ02sNx&$3-%p;Wfkw Qol{} YK e&!Yv ǭn̮%՛^aj+=^1 S-vRڳᾣ 1FoybtDH%w\ͩv1~V|L("C;jbH _i [jʟ+bi/L=rȃkEuӾ89 3BJ3Ck|cS\g}#_P=Ը7,'TeC?LptGT4.c:d܃%MrwfяԵ>buPZrLbd,\v # Μ]ooaƄt0TN7;w>1 | c%0|f^qh<JO(z{cgu*z*(<F71;X٭DL7-مGdλ6LB˹P1_w6n!A17C ?zD並`7}YT9g>TŮ;S*2&吋9KPN#M]P{ßɢo3GUߎ|,-eXIz@qWu8[0d?|.: N^|엙qd[mAF$Mk3B"aW*O$Qq>3C<U1?X/A=Al0U^oJZ~5ZvL۾K~E*$m S'iHacBэXlek;qwoǚ"$k}]5oH u{GuHĸ2T7zҳNҙ-,?5Ҹ{"lnҺAudY~4=5 i4آ9s/ʖcca?EB t#} l50s5;n0moKW0m.+稌-t:AZ][z,u˅#ᔫ]4  v՘Ȃ0g>;v/|y4as4gLvTؘM`ظS1X },3;+X_.oI'X>/>C3S:I?= Jc.(}v%]Z|1 a t|HL5'vcCwQ) H@׳ʷdo/lٰ=-Onƃ]'à"ܙy+/ؖCzhl۫Cbd!wHb5&}S\;;ш jK \4eIBZX[iB*/r@Kmmgm# ٙ +,G8=e&`ǫms'j?N\>tg]X#{K,c}(S+eRoXcَ,F4(M3:Ic +.Ӽ\X#[CTܘaI ú)ZOxr0Y, f9H)b32ڎIi|Ѣ\Km߄)<]e;xԄ2ctOuTpAEKgS%axrAkuc}.;X;wjYX/z$gV_}7P EV,75`VVRw[aְ;*M_Aa g4:.GQ\'ܽ!力n cauc[5L%toP"UWG¸Ŀ/LwaWhyc5݇8]i2bح'?:79.iau^(-|_}.e+Z e}BY"w9*Uc|PWTG5 ÿln ϤԐC[dl*:g~ ^B ,,xr{׿"Xޚ5lgE6$pWWI~3n8ڃAZT$2|Z nϮSa@Fr.2ӥ#6iq %/{?]8ӌ7HʸO*\#XD)J.܏U`}8%D1l[6'ȸV&;ek^ɓ]-jB+aAttAtyM>t1aHFv@T= $x!,y94_b:/; ĞٟwqTˆ2M4Has}i݋ޘC:= cK\Y0oXx.,ݳXi{ 1S|a?[}8 -?3Q'c; &wsH-n&>!*1IӉiz|G,0(㸄iVlr%'iւ1oxnz(`buzq;f t&O4A}z_֕ UVx%5@"ri 2;N ^ SҲɑP\;p(OZuA}OXk$€YgC0ÐR@^+mY2ߍImNo닿KAw?hv@ބ^d_웏QB EK|=;EQ6MNS4 [}RYϯ̏ U4bNxF@u,M~y G<iyd4 +=[ȯtBAGavIn9ǚ_F3ބX)Sd^=~"QIjkvJĖGam;桃\Uc%E0%ȺXCM߅vPP1D~5:NtV|.ds{7:: zXvA{r\U"=G=ARzچ|z蹓K(LH!WCV/[>'8z}D\9ep9xn n*P_Ǫd lHr0g Ơd@K3Lfy"эyԎC})9X:@$\ԯZRtj_6Lј/ş,m(6[q4ѭXt Re89ZnF(N?Ns2ym]o3 93NBE~*gteFm=X$l䂺+(]Lջ %gi?E Iw?)zP&oӠ7\;1nQa.XEi@!_5U,i"s)'08edk!Ȭ?` VU.?SJ!|wRKt Eod'iPZ[\ܰ(J:@ f(5Q0CJQ]}(J|sGk?tLO݆oxk%/+a㘪-p0N TYO^ߖk:CwT $Paݷ[[iƄ2_~jm<_b+Ox餥1RqhTYaL*c?M[39xa|w]4 |ЪEO? ,=~<8WT>;L_b郛gV;&iwk~a joz6l8PVŋ/@ƋdX/:dAFVY0=4$~Hن:uۍKOdt p lh9E+WxiV_OF; i 5& U dw Y[]Ů1pKϱ8o+T+IwH:okȑ&OP,py>7́O^;bt{q2_U\i^ |1ǒ?f}fWTF !^9YVV{sQ} 8;#p$  jF [x#Ӣm\6=s?sK]H3Rݭ4:}vHOQaPl|)WgC*V:~pf%vGAiv}د"=vM xxQоB Wg,(C f6[.C{[׎A-6ِ湶AY#kcu"?{~0^l䉳`D[tG)Nt`(! f[2ȁer0B[H!Ʊ;^e!oI'w3H_@Q˸ ˆ !3. |Am3TcxpSH=2Ϧusk]@i.YϚth*b`ve+K8BE"#a㒆]KZs8qA(0W‹zwc~Fw:[;(WWBL,N%b+GeW{uuRunJYaW"mкRޒcϟ9 :&XsƬ R1E;iz + RBE'`כUrQNuE6˿/iϟla|_l_ N^dO]$_Vs(凗X(=n{$7.v-/ t~j1Pܥ[QLsu@pm8:&e'op@CY_0vO;v2| lwR˃cT"DS,U b٣6[;hZ4T`oA{,T칎79$D`5/81D%s,T9晁3pK rlK㯛} ŵpfD,:U:@sh2Jy}y$+,dCp)COn8 2:l}k_$ؖi]k\JJ X'~s>X|曝`yTo -%|$Ao `{2,W~Ȟ;ÇWb҉v]X2wU2_:A"3|^lJ2|g?){ij6bC%}bU̽av4ָO|"pW;%VC[Trh!D"Ż:}m}AӶa@4VjUYunU y6 cݸ~Y[~АNb!e9 Z ZY;}fFU2tJqꦶmܞ mgv(HujcБ@Mᗡü';Юjt`Jz_6eoUA.=0xwh52bx[݃鏽 Whj㍑OP:;1)u6u-D٘М-DUTAMrwQhU.,u-էD!}$kƶ6va95izO8KhQcWz^:+RuB=>}MVW68uGl5fOCHzǓ}k8J7~^JYMh Zrh/\ͩO?P6A#:ȓ~T,ճ60L؀8ÉmFWEڎA蓧m吐z/1!}/=ueJMlG:DXa {AeMԟӘxT]-'(`zՆ$'X,c*.HZłR온< rǚ)`xՃ1cu݁ʹ-M0Nl &1SG>zb6Go@ : ,MEQ<u?OY^<|^ fx2gbP@e.u{# /釡e>X{(lmt:V֜a־*|e*-TsKj09$4SV6!hFDi%+ى9ꚓeVПKW!,lF2}eGa3CXRߖG+~ 5 J|AW_zI+SьCxX;4}*Hs;s@X*F~94\,>Pwj{K@̝nr(+xb?3&[ @fIem(]K G4͵k& qs['h6'Vi/V\2St'km;00?*&og Ҿz do|O X?Z&ݑsz'T'>{@|vfm$rh#X`fVٙݣӃq c$xo |UF3۠.Si}.A w St > ~M'bMwڹCepw t3Tma0?Ÿ5pFF:3ǃ:}ufhuݚz"<5S#oYb(t}fBiZv~.ෟ|V5ZO yAm| f P ][(.ғk€)!~O;foϳo> GZhaK'JX))ҘIw?$D#scu?EӒBQv5c̡'i`6G|{|ot8oDZHw9`SI|&nn-.&MXyEh2%GȻQAڛ<+$m})O:e\T!Xg͓PÕaPGQ,*4?IMKs< AײұvBqrf'vyCmϡ㨩(?{/on =t"PH~0mR>MT'2^3!BE_"@B!5Z-a*J.衸&jڬ ]ܥJ }+~nECkZǡTl|a^{4wS@H3?!%E. n.#k٢>2Fe5Hm:,zzC B^nf\v q;pFn=%EW|6M2'A+첫~2#߿d>A A39:őC> B t{r )R*҃ C* BW3UM2`Œ,B։,'b3PSpj'Xw{3ȹ~Sa13(8ʗ%gqS_zr,AWLqK:(k{@feg$?+òH#;[7Cza1,; Y%B3 f+SgXMA6WnXF|aC jićC#X۬"I!9YwI6}$տ|y>.XiCtn\*Baf =RI ݆PX| $?9[O@s/2AAL|?FHXeBsAy^Nh} ;~2tSN=*m0?ɇ!-(BOJP>t,j?DxUauRw;5pz,!tKx+`ބ9>(yL@ˎ=.l%' /`!nOߝ&(ĉ3Ƽl>Òkryfo~?{`x#XB;f]P%O{@a=ũ-II>F^e@.@h5 {1ϫR\71biR$X?E/ Q 7Wkqշo5Nr%l'G1?D43KWͣr_=7U$'fc5v  *S߯pMNίC*I+ ՝BC tUyV}kkBԻY;/xO_ΈVCmU^d2ְh6O{E Zo?f7JPjl. 6ƜC-r0^P/=CŴcԻW0SXS3i ړ7g;o=of4qTpfcZq^\ Saf 'FN\`3G@䰐>Hڲz~|A8jIh<Tp$&- 9 f9r6'E1b!鹞i̓MBE7nm*dn ݮ@\M2 d5|| Oر]x(2,mpQc9=w _7 ?ܠ?hoP]%gmr^z`:f S .ٰCMyV=D=z5O? }1>6`3"$Po{:A{NitCaXj[eѺxAuc^' e=/a4O4c7!V9bm=K(s'%3d|ᔺ4njtrS:)n,yWV+fL^ jo7ذqi8/ҕ_2gT;wF=z1_l]oĻWQ?4t)XyX} *>b®J MR߄->}#nuQcIq ,D/]KWĘKit:q`qQ0YP&~lꎽAfzX묠674QӫP|ޏ }'HOV6$3X7dDbTL{%w Ö/;HPkd~qZ0V{UuC%$We=$\X:K m~[M^MDžRO/8Q´D *j#XO_zO,a#߻si*2Kݺ !1b3y+L2V#k5hEм}zkDW8fR 0hjCF/݌wn +yɠ9{\89roc|~Irh2"yx A&h4z4ҚRǻ۹YON8&RBO t"Isni;d:\bקbPʾ:a4wӊpCE'Q[IXDŽb٥6MuaaF̏6e JJ,= ?B1+_ULwvPr3%Q6ϧ;~Ӏ\E!1PB&% NYYwn_aS b<2(J'CwIbb籒EJ2aEB酛[.9g ))*[ lh!M&UyM '+@Wahʏs-2< ӯbQ2NkѭYc" ^JzNTȖɰ$t7?~yH ]9QVSذPb ƇOH\Ao.]Ms~W9#bda8Pj=t .^sꇆ|"EE q޾!p`06ɸX@t_}!X2TSEkr0!zYmynʅwyFX,| s̙tCjΊ(z~g6[rS)R>y":DR{ ^͕f>,qa/Af󵲱X7X4g+&ͽ>ފ>؜Cѭ|%àD?4>a̤fJE(ߵ &w@њH1?ZvփڳZ @s|( I_càzcrv]nFxWvq:%-<؄e+pp8}v%$ y,3{e%? ->|˽Cʯy[c+Ù&/h\wS5`飨'p4 cwx|i !?镉G83^cCr)\7Xx|pbwNѾm'nnIq{< ,Al8&[ gSFcB}syV;PJ 2`Nj(Ou!qO4NK4`\Tց ¡݁.[h}ٰsh?iAۈR] G 7Ц۰J"n;o[RĖO-!ϗ`UrΊa<Dzj-!T%s m?[!CQ|pDʺ0Cʜ75q;SzPR'Eyt)pyaVػ';ә)ma[툕×VV `@x[. @>B0^scq.۷^Xc'~~eo^d} 9;??Z$p̓~HWlyFvYCJ8.zכB}yrK(]57+d$ 㺗|6&F[`'VV*(\ϏWjdnzp%* NXn-.L8"E ȷIwǺCBBҕ#|j߬Dz]O8ChľqI\\g鿤Ɔ.7!s(I`VI l̲ށ cbY\ˡbh/#x<lV.R9Çt[cZQ+\㥐Qs}f(\$)i;.5UAXĭPqu Jk̿-}3@q I-`RcsPk8}^:Wb4n^^NQg6ݳIrZhhf ed?\by!pwl=13P:q:cVk/7ФBw[젮񕻓2-6a< f4}v9P1VxTP%o `K$Mg4>z >oPB?h]{z'yw8-d[H'Ka CeW |vDXvo&zFVoIWSCJG|ȜZZE`ʓp=^∧̓Fhi|CI srԱ X -.(YB֮\!av-}C~ִlsQ(j{],I cg2 L4ԪAzޜ]0ъGX]0/pzxME'}!h:OQlnv2֑F`ϾHpN 3zXl7 oٖapd$L`2B~ h "69lp -`\{7DMpBQƴF].W@/,MV4S fc̹0gN^йIZ*K \ǘ])I=x 3ό`0|G?B|^ב:'k*'O˸g2527HLPo @]2T P-%@gBq'a籝ɔBG|ႅzڑ060P͢Jv~BBCvN7^Mٍ_133-^<wƻr¡,R5n,3tWܺ2s+w _;Op4܂iZqWptl2S+o}Ic՘5g݊SXo8r$E5:e'3ƙ-lAB8z?}pK*$0=z8u7xKN<d:z7,zC[;IƏQzڝ'n`ӯuסJ\#㍉ 4e\2irt\7h_΀+Wmn\: 9^GH~ΠHdlkywjz'.TLA஦v( 脔FPWt%-D^^V8*9Ɔ ֨}w$itcuV{Oy,6ߔgġ-**t?#Gvz0`_;Z} ӧ|[9)$s(.:E_ +uA |ʶ-}6sM~h{0tϸFj3^]ayi(brt"t`mH }J>"[gQr8q?1[~5 -o/CG oh&:7#ivC2m`0DSՁq]e{Y{Zܾ^du&G2GB^.1!ÖPچ:|:hLYu\Wmk|3?B,40Z\vvXsL]al~pN}WFf'tdBL*oiKPNYL>uzR zW| &; oq׎mXc)}]2)E~AINPSC'XA]ʹ28O#T?߮M]MeX~X50gd +AwrP?λt)i+j_1&{hE;IX?PT)]RuۧF(wːUol-9A"خ"0-~„tе3V)%쿏΅O2m3TH Q&-{M)׊CzppO m.6_*z䭊}!ESpy'-''S`;ߊsRɾI4I9(tskڢ{Mhn5|޵X7>)L8.؆,0CAm|yU,bɇ>n,,+:a:"Xf]u!_q;igٹ\M.5ęDyL:cl$DͰUkJ0#qbؤNRS,e-i.ǻv|!uuR24А4Cъ^vőy/NCkC$CyC}X2&U'W>O} RMO@W#<7v{&Cp(zX&#l'e 7B$ATne8 ~cru}L=RȡtW,ò6+WiOFꂾp!1$)ڏSa)_L~LY fvc@s,;1}c rmQzWˋHtL5ԡh \&]q5 &$^5HQvd\n6vaj!"S qS @:֦/Ls-q_xkd,A+.G`Vmȝ|Ya <juzzhWRD[g_xUb]_ QȲqʬM#2qC%مX{`.ͥvvȴo8}LPu &ME%FjgS'[谂wHRa'~ۿ8dh>ʨ%/]d<=Iaʟ2hn %5͗mķg$WU 95I/KVz(d0kZ眂ݩESCPx"#dJ5(y;CYוq)]Ύ/X?&ǸLc33ؘ(}L \ƒ:񫍮8`K꘮H3Jۜs֢vrU\;5*27jRL1=qsh>ƅj &BrCНTĺ_}ySI?TAri҄ޑNLP+K(\SP`?j_qլ;0y¾H Ѽy u!I|%VC;Iuqx# v?t)*ʓ]p@s|,L{.~iҨO 9۱ywzI d<02ug6H`npwO. 똻A a[,c vB^yש 3AtAah"tf~Uns WC׶)Uj¯)g`4 =ۛXOtß5.굍 D^A~_ L7[{#C/eͨ濘2 d :^`eO5 fo5(@qA^9AY//CnX,PTNGB~^Qߙoh-NJhnOzze 5C|u/.L*Ov.IM:);yؤ(Y"IjØwMO.9mLwm +_` %;OFtÀo儽~RcKtnu"6#ߡEqdK(y1fUM͸W"؉IV)C>a}`~>|m |f#%8_V*eԽ5YR05Za|^jo>Kuu لCf-7T{nsP^}1 KL|!w?ҧ_굯m%]^gLiS/ nyX:VJ{ޖ~3mlE:|iXC.WL jo6JZ'cgVU!DPr660)^P7!/-nqPǶVP4؟:a.[.(BAELةqB?WqN4jc!I3{ dz;.mOzaǧSAɷFY e7f:lZ,쏅#6 uHN6|Z~* `k%- Q~l8ik |8~W%<d61J(ݱgǔX]cmB%|{g7eܓZ1݉糦o,r;+䚂cй/vx%C&Hًb ,x6~G"Y@'x9|lv >FX'N=NG_OVOaSl(A,?'tcg"etذ̚8O D'/ ka0 _ʗt &Olԯ穃T܆陚$Wkm3i3O0.-jaeJ Xܡ=d;aNkP(MGytzyBH3Z=P?Щ/iOk1Q4& {\gNG^=e{2lOX⤈ 5u wY7wyyi0?g c WS;D8)4$GZOwӼV1A1,x'Dxj02&ܙc J?]kQ.~%Z\Εyvb]=ϧ ?Ζ:Ua;eh {.;'=ah?e⪎o˧R(@W?>wka<وN "gC߹E RUȎ%nX{_Y (L`*]3Ǜ0!H{Gn[Ƞeoc]Zw~:M-Kt. ZV,Vv>2R+{RJMAxIio!$lWXzbE>:?yr_`krԻ1^EG%)!Up5]Ʃ3xR?Һ jI'E6o+)1}}ǭbb/UMAoQa9ZߔRAf 񉫜hM7E#wPBcT)ʽ/nN5^Tzg>-zPu?{Pe 4hoP$l< _lDc!˟nΫܩv(oVsn]w ˬ?JN|\oَ'aޙ@> i Myba|&q>ۦ7~ &1_^BLPQ[oY{6!dA{ d7 <}5 Q׀z =YYרɬeH b 3s_nVF!a)!E}ro~Gj+|5|8x|k$G"dQ#gσL|Kh ԥ]㇢ŝP'}0$84앃ߪFP,WoTW8/| "Ǥ}2 dSJUz#`X/ DzB|lYtFc9O7RwM V[h7HV٢_ϼ" xkw=Rs!!m,Ȝ/fh JIԦ%7=(-H9Lڠ{˕84!iU(? *FBah`w6b3cW]FhxzM (_>b e-?*2,~j+:Tҗj@ TC1g7uWpt6OT0 !̓RپY(cۂ9has*92~P!2F|91#ft~C =}Xa[!ڨ4h_C8k> hIŞDBRAH v%}~D W?da݅\HoΏ~f`#cj^Qij;#sN,ce< WzMJfBN_8cO;@ʳHyl!3Y%6{"IQڅXG3xƜ:a\|6W]G`pVzYKDk;$()~8vZ^ dMauԊ5z w!%|v Q?~5*V|- Ǡ0>pEc )e侌&'1'MM{o{qBl9jY&~U{3VлNJ9n|ЦS|S9bG84=ͦw0˸+i[XGEXP4cp _KwU \nx`y$3[0γ=0röy=W* C).fx_QH׊=o"u@P 4_X/g7:@z/mݶy,.?S}_ó lF3~xͣ7iLLd>'z, ^Qռun?Z3k GJlH-T(4Q}~)2S?C]"$0]0 dłcV,qi+"]uMKr"eb65l`.T__Z2+Ü WV%37|dALnZPTS ;g $$' a07)m* tʢ %3ԝu)B]z0p:{q-a;FZ5seغjn7g꧅ㅱ;N s`;S+w mv_7zHLf=0jA&ago鯵{O79O[a{G톪S19IG29cDMK88;1OY&:?`W>xvcz|n: S^j3zdkӨ 9-XiA/=M|n=Y|W ‚"*}/K}d$n\?&m"~+1:M% t6=A|6^eBw;gE**(>p1jahWU!.ǽ,XUAV0YOqyJ odNc潺 1q@^(kY}k.2~`}zh@ׇVF_LtT%AaFk$d_{[6VEYjg;yn6 LY_Ž{M氶gf5%0XTY,bϖڻW@s. U~t+ .Ŕr^߀S= nW!͈9O⮋m2,0m;6$gZF~ӫXv= -TӝVfJ3ࡘ"trzEk)Et>Jx$NO;]E걺$հ=iC/Fޙ@  e}RBz~v2! _L BK5õvdv7ve;E >%MXh* -0[)q@U> +,mql}U b B'llJZw}1(̌V :YuIBޤFUkhv8.:m{eD Am6g ']=T{'TҾ{fc^.t=,7-Sѡ-ED~`xE豜y6:1~skl{}`H!I8wQw@sN]i?4aA?_;q&F%Ie {R"P9g_,Mj=mI.Z!DZQaR ge7 鸟RÀ^Aز{K;kE:>S|Vdl{[3Kn=x۹ƊɯwN`gq6Yxp\]It {p4~~Q\͕MbH0~ [{d wדSճ j?يՎ dˌ0B[#Q6DK׬`ZcE}gT*_O%]s'uc]xk;U{/V`.A}Al~ MͶq!$T'cO@ V,S*)y5&[Ap[i+v1>1tX?G;Ŗ$A5KrP ~ÁE3tg\G{$ܺgEaݛޤ[h,*coá[^2ԬiUXGs \hcTEZ] x`g%Ԛ@rܗ,%ȹE GM֫qj}_X&;M.+Rw@}LT tCBU tCKOen}CIcdB"+/ZBBp ӳL]H(^ CSAzsQ?S`{a<|ԹںbJ.)tiAދDztXng "nYaZ.89r? v7A[ykH3[2=̟^/ U(}"iѿ-oB s'xloA]{hĻgkTk*wkAfdzrrI>qKEΙ>oF}cb$fR59,M_H=źaS׹w y14*lNТ݆ ƻ֭UFORrc+vi%twqPDGH 5/؅:2d ,r( $.]c†og5U뤝;K)yuhy%^z?pd_.u| ~6h'c[)1سwBDL'c=/陶Giz }m哻׹a5{}!`wp[["pg!DGϤSc#L2!cҟ!x>⻆IR]%LB[Tzwۍ),5%:a\i6sjL`WU%cq$Y@SQS S .V`0eq7X OI} >W Lqb2Mժ5 P\Hj>m9Ⱦd?)SS$AA< K\=; o)v|~-4TNAc|R(#ɇᛧ=}I,4v0QqZÛY1cZ$:!{ #я7["34)>@|C,41tCO4+( c}˴S rƯ 4^f3>jjceڧW ޖY2('֞e ]bd p~̛aq3rܟ.n١Q!8A]~^pza-w" 2z+C{ f+Ș י9?Cܟ,'./p%Ե&&K+9@Ȋd@e)li|Qzn^paC%J"vAzC -[7c-d{1ҏ|HE9(Vw=1 Bq?i^׀+ẙףYjp@,]8n-#/=!9ECwO(f}  cа:r[R<*3zS(Fe*G{?m(Nf+8:ﴎkfcK"Yo2-`6fF'm~r6M }3:ǎ˅EovrpHzҬf2F' EMcUqb? sH {vrz?\.>W#χ_OQ5'y !$IDo$: ~~mIxCU;J ]V eSYPﺳK} nԑpuw|Ż s*SYk.}XT O>%CJ+^bAi^Ht<rCS|.5xG9Ql&(h|&wjXǙP~0;.\ê"k gUͦr#'ڣCVbڼ_Kc|SwQ/[`}fXy ۾Hz5?wpA_r]UQ 7t@E`ah?mO8^^\!사2a݈ۗ Rlֆ VxalJaiL El855sgzcct! o=YC*_@QË]۹V=U&/~S8} oёn 6Z{>zw!W5qFX5Ddƹgĺ))c/[$de5qhK91]l$l\z} _?c,Vgqt!r/9Oտe/ ".PBJޝ>Pz'UdטBoOc]Q{4D&Ej Cmg-[X迶caiJ.dRO@#S0*}3y}ΝC!L٪KPfUލ_:j+dBnCE`,)܍n}%t_R fw6 _Ԅ ͗_`8?$C杍]l}w55P,;9D*wV~LpGP |լ(S\= +m1-ߙ!;38v=&=b-r)5d/۞L/ LrmHopqn޽V]> 헂xaʼAYXUjlVVv)aeP?. R}[02*y?欩TWA'3~hx>ރz7# >g؏!ɍ!}cݏjTv)鿸|LE&t  ||־!t6gQ67.Cw z[(e"T9f=;=W1B9-&H)@j-ah/w~/q_nCZvv}(eu̻|:O" :mhQUY7蜱է3Д$}~s2/>fҼeEj(LN2;D^Im茙yj3y Ont g$cc Z*b^Ĝfil%6T*%1rwuWcl~4:̄5#ZF0cDG퓟.{^թrlxFj185N3\طPuRd˰9GAa*կcOs ]{ǂ;p.7FcERxo wG *1sο3rሃ0(!#|ٵ 9.4;B瞱mEtTBpAh[NchkUď& ʇ'6Խ3.mŖ &Frs>aG%Gw jyNzwaLcl.8Sr[K],]V8Ic[YbCQ5;J{osZ\!m; 7X0Fm`CLu|hzh:yz/$ն:ض_KFu;ߩ-~Æ fENCԱ% jylmXZAW $(6h.x)` EztL_x:t}=s}:Eoɔ ]TtÈ.sza{iyl}/ L5Hug]y=ZߒIC WEwi&& 60g@#N`X']"A 2!1apr zU kᲫM9(z6Z͇T23Ю7\z^arZB ?v'!d|3*+Y r%d8 ]^[6?NLMxD*o=b 1Qݦ ԬChƠ/Y~-ST4ݟLVtcFnjsӖZp%IKW4 NQ517LH - NR@G2b;1=P]W2P&Ƣ?H?Դ SXaWȝ$k˪ZX&4Y}$?yԻ!O5zC َdDKsXQF(|9Ճn҈{^a_[<-lPC|̲f"~PJNu 7L `WlcTѓ%XX98:9#b"͑ UxsWG5TcX Onߘ{bsx!V=MkjL軖Nw,CȖJ >C?š6UIJ/heܫ9ײ ^ ğgfIIg//Y?`?qB[wP1l)ҖN½wOӬƜm[^ͻ%{xw˖-[IKeGD@ٲq#WO&%!,Ia ʲ"fCMYNqSVR8Һ̱1u#j)o"›]7ATXDT"Q/r7qq  J6#)U8{S RD2Ǧ,K4YvJDr^VJn[# QBEd@lt&*,Ft։A{P!*R!> aEC **Ͻ1Sѫ<ɛl+,Y Ͽ)+5V4uQ" K |f EH4~E"YqE$!(:p1_Y2qD] TOuYJ8D܃)MIMCxBvİ9B1M{]7;۰8!81!vbTPq(O{J"LXLtsҢ2Dp71ׁhibb݋oڴ$f$桤mjEӠ$LTᦹ)JlvR#"bU*MNYHt2B*^|Ss6݋˛J\(tIm9Ho.A$$7-?f2fM7?$8dT6(B%TyJlyIQ"HjhnN@RifT& RrİiRǐ#j!G#MR$:e8~ 2KOf,\6;;\'͓?nSh]jvNm43Yan:dYQa s]_|D?Y:rq \v/gD^V(Ys&+A,sLIJlc(1q C4[%)@vD]7E Dm8 poƕdy6Cn|*'N I \C q?;>"u⢫WM7Rİz=!"(E܈{s_DtCIILh( "DfW%e "YHl&*ʜrsVܜNL@}SpE8qpɛWE,NYeIM)m4e]L eErHʢD_YI*_RV\@ʚ*bׁ:m9<*Da^EW֛4zWZab%v mG&|ߠG}&oBQ7mMPak[Cߩ@ARRQXrm~F|yߦ&|d Z,L4'ģ>ƈRM(Izvbӎ4JiP6 e3QMeUTX}R&'%ٌH3;3=~?/? mO>8_iרwkAqJ;J3.J'UZE1g)dW79gAVs82/ mI2H^KQ'k^#Ks HW/=ydT9U_@#F_ndhyWCLg`Db y ~M=d)}*~69 + 3Y>#[ 2TE)c56̋yVу2w|ńd ]~v^r?%6%e(&%7ϫuS2ۼoyboyW+@Qpw)(UĐ"V[# 0SQ("_H"B䔬W Y_$~. %HPJʧK>ݹA- y7Phf-;B\&OqK _Ĕ_|jًyˀoCh"eQ.qhuT -0V$UNS͎P; k0 Cpb@zn%Q=* ?"#XF_s4_03"~ ώ9E9Smύ<8<`tIpXsz;}89T#Wd<`?HHt!>~ _d̿O#t ^x+:Fchp)}ȇT?HaH \}ĶPaK'e;Ԝ;@j4sxRZ5iٻ/=$5}c4)xgn~>v6ZmhcQvX}>9<0fsЛ'Ys|`ON:̟*fNTa(掜:4I|2*O_`(X#~D,¸N'rm!8 s0`>8:jT?$C|&ޜCPLx}4!q.ǩV7!?UO>sF5˸Y3w'IK:=X&ŘCd|ԓw;t]FkO0u a%)\TY 5R=P;j"mXk !F7<|ө Ks+^Z?NQ:c1)#E ?G>L6S5T>hhN1HNi|>+6:࿡ҐBp5c|rkL:ntN!9 :'g WxO\wSc1+ ]FR]9|;!DkiIgÓHk#M?5h~f|0O7'P))!κ[' Ey'tlU6 \`Ţ5 !Cpb8/ d^gfC8!!Au"_3U7ebC"jCQ`@^1 WeC_|Ε@ۦÓwǡ2LCWV5%OB!|_թ"VEFr1JOE*J W%TI~VnOe- ,;< /؅XcA`Mb+5)Ұ a\ǞC17d}HNHNIⳜ2S-tl[hb*b҇V"e"OeDX.J)JU _~-0"DcsI2@%L dwVڵ< .3,/hR N:$;3gUȪ2~3W{JՂ)v '+~2{=yƶv!EdL&Q@i ÉeS3J* -pIJNJz0/ZG]//8CJhL]ƐU!6RY̍KE" PP^龢G:qW!P(U01lF}4\SDjO"+:Ts3)ېrLjP>^ VZ[miM4l3@Bn E̢ Gd\VS$S*C,ڎ"0x!aH((i ]Ji%j}b27lk4`̌V"EDљ)Ws,0k !bnuFCmoT9vٌmE nC@/½:%X_q YBQLbg+qj ӥAm!bᄂOEFQĎXUUG;)?"򦧊 @aáUq"v8*X8f.2~ķO*~28k#4;E/~+`jUV/E?2$S;6ܩ+#NAHB(4!CD#cJYdRPGJ56JP͌ %B6u8ۈ R&c f4}qaDʩ IHFDFZ`N]C9/'w9 5Fr˿||0͟+ԑr<3*&+tQ!H2cg1 jg0f8 Kize+RyGvB;%3 NP9L7n,d.sRʛΛ[]㙫9HF8gC:mfR%D$\B*(3 2fni #2CogUĀ}FL>|˅ބJ,ݱXwh41`Ppc-5KKQ۹t+iuH@ ;] .f`e@,mF( (˝ee 9s,2ެ={L!Z"xkC(6 Jua^REicgVӥ&:WGHunN\;5VFK=N[In+ 9Ki0vF$; 2T^)qّVr6Rgm/: ce;DF !2*H.IHnI ?7 tV% [B=t_L$!U5W3UfG-+deT8"{X5ޏwjnzC0Nю?b1FC~}@{N=Au(eƝqpo0Ɣ;_M`)g_-iL t fG1L}+0mY:ᆼNE_s#) 29m > vI=ʬ3]}Lk %v{X/ey Xb}"!o*{eA=}ETFXBy ?Ӎ $:> 5,3Jϖ%rKRѥwiYN1]aYb `82l {,$\JT!ߗL!eziʁ[̡C] eEK;!xZ*Q4k̮.p2B%y`%9Tiv 'ظY%\)*2Ubm pk{FRa"$7$$w$_HK流mc;aQl5 & vGp@2 @l^vYOD3{(Bߧ&;jFs.^ !(;:Z^Xƌ~(Qse:N*\SXMVF8zo'#3Ӏ&O ju9Pqht ֲF?z!oK2 )ÉLбkEZQc1bXљ*)G 5&OʥPQ(U)2pgshʠ.d9k@ެLw9RpjrhBTO{;Tw=PR_/KwKR=K4ҏjF CjYjLTk1)@TS V` l! V+&ߒZ}I`دW./&V}TXoq8H $F5"VaRJ.ؖF~mŖX+QDe$xiK?z}MD Y0x%HzߥP(^k}bRyB!fH8 `JB_m_Ct-x!-:>)SY6qg9NjsAys(%";.8!Vz`gIAP3S!TX"謉]c܃U%İ$T(RJ\ICSn*Bʔ4p'֝TF')>9PELϲZTa;,LҰf!B %?Ѯ[C~#Z 5njT ഋTl!%qg8X\qGdD,@yq]vz$BE'8R(k"Ť8zB'&lI5F*2[vF)bU F1T0d;dФ-];!Z5٢; 5T+0J߷c(O@2ln{coVd0 !CĐ0!9$9"Pסw!6!lCHu~OnQ/yfp-FM]Nԝ?&vٝh KN܎И^s^υ{=rkwdl2OT/bZ0RSDr =n+#:)GHV-Pcıyq}'3)tb5 uFl֌X3T[@YnKU2j:G^%cޚ\ 0}YR&RL yX ,AfK1YGHe豦"_.펯^1^p_jl1+ޜuOq[ WZb@:(kodžE1ҍNW NF<-&׆bwX_;iwdpԫ@HrDomiS m*mșsswҺHQ(aʕ+L`Y*Y(28#B%Ek{J yghB_\5*|oA}j4tPNXY9kO .Afح3UFؗ}S $=bÙ@TtNaV [Q%z 9CPc.W f0^"c~>}k_{i~uXyxn7p{fga}+g\gؕ>YDFd;\!G;zaqA{z'B i>j`?%&`)%kn1kN9 w|Xy!X@;֊H{]@doY&ͮ쯳GP' >հҌ`n&$J6B.;A39vс-esdæ{2C 3_"j H6Bn$$S vw}@t)d<}ן` {M}}v+偮dw}j,wc9aE!c+r4igL;ʜ)i]fGZ9Qz"3X`d"fn:̸:)N$A3[ Ҷ, $C`UhVdąD}-݂ydDvuHdrFfn_Bg[ٓ%nÆn3@ۻ5tǒa wR×1&AV2DY.X ÉHu/lPr6,%`P?S{a-QDbboG365ȨF!L <(@sf=C3F_94UϟT0ô#M30ݷ?t[˟ѧ&2 u/نWF>a%?.c}J8zzz`' rePJ`HbMvZvCwb7pFQ(V QvN](T*Rp(.12N.=?7ϑ/_Y{VvmeVvmcc")lieIY42^GO0-|M:.b =?/ܦs\r.]}~uϚ͝c ol"~sa1\?u $N$^H?Y[՜u2Dtm88<뜈}%ځ(NY$iF'8ӧNGam>D8tSJYsOVqp?JP{a",Fgd`R@hN'}Y)BBQrd`ĺ$DOe:@ik`:*֛ͧO?eɨ;{\U[X)k8Sz99<줔 m8XRA*s1 $?q%pR934{VF4Vj{EbEh-cѻO2٣ڕFQ(R*:1,#QvqPA a#!aHzۅ l3=l!dbʺ/Ky5d l|l{؏>rxikOK}~2\N"{2D 1Annr^Pά).t}' R~!R</Oӭb'% )|u=w@`λV!%FATK9[18e4lԴ@. KŽ/s&C#"=y^rؼT(U4RVv-7vGd$5Xhۢ}[ϸoo!~VpA.M?0+A('19>Ȯn#UE9N\: &J)PJ(R+9-FWp.#2o"bj@pm EII>et݇bµf;!W , P~P#Z9'2?㨜ɡ)JޭoqHoL*,9@-EHɊ&)*kv"ݪyYh*lv;JI#0T m\W2poۂϒ1.ƞS`%;Ŋ|u3#١^  `V41kGv*?S_oM 7̀mPO5tІt -2bki~v <*G ^%8c'DҡC'y~f%) XxQ}@\3?~zyLӭC+"F+/nj8zZ zr 3"o'z?W!Wn-,7X8QiT0LS7VFv~Ia0~hnʾh= '}oHdž)&׈oy*oV!RSvB'W ɳ"KQcZV¦an'{2ïɁ X? "a曮"S|)P~"E[32#&F9*T"#igHE=be/fSQ(R(*+npLʿP%(FcaYj(yat2nl2J+6H+L56.+ذB6lRSlQòasZeRRIpaquQu6>i]MaM-E CʖReĀ/`ZBϟ3gNaCn $o [7]iȵQ_ +iz~_w~Eiln-2+.-;{4Ӟi {:L |wZF%C wzY`BJqۚH5aSd2O;SSL&2d`(*4YIe\#J`oOmRYU!$ac?d.XQ*sn_njYW,kY~$]d:;fEF'c+d}BEb@O1?czOI  QtDx,J8n+#rUÔ !C\JKdޏKա%KdeɹOm:UP|_](Qtb|;J)LʕUfUn)?.$UIdz!t!.~w1%"9!9%Drʤ9Px!=aG8inʬ0$$GpPgwhj;TY5WvG-$HycSՐxxl{llQWOL+{*1]~ؠc$cGGJ-#un/#}2*KGW?qr3%&J5KoF1-`+ ]%2#M]{?V&˕累v"sIzIs(M+UF7kOES/?1C_M0Dd?!DqDmNv9 (wz;u@WF,QEL.L+P, sV9Ɯ8,j ҆#|:3ƙ .kO`c<.`b _& J@,; cbMvj҄l Tg-1k/p =Jz|Dʆd o!+*FnGpbv-[|w{!ۄ?a^1Sj"]Bs3%˜P' gPgv|"uS/zIˑǻJL~a`kl hW?߬L ]IDoOd y +{>aP›?KE/+ؗɿ:}c.LwM3r9"924R>;2D Voh|-EXQG>҆Vzevوi4}@WظhZC|Odфtx}˄nD^X@}v!dR E"v^ݕƷsԢ;bwZsF;>b y@)A9w;F8qU??qZ@jl_(|*!9_2y2NE Kڨ`Ai"X{EAX7DtV4v"REOG9Rw( DJ0X̎́QUQ*6"'U7+F+c)o}082~ٜczx 9+r KfJ>=l9VcL.G S9hJx<6c6 р--b;sDIƈL?vBޑKFWeJ_awgܳD9T$l 'v$ cw:H#;=ˌn8TAa`E VF-i4U'wRJ,Qૐ58).)( bkNo?H3 ZHI]u"T%?:w p.KZʯQS ' skp*B$*2*jh\؋a' ;L^`v : U7\(fu ;*B^_zQxXMd0J}opvtj5=T$&F͝аĨ}PYj!3aj1feV pg- C2|R 5K)hLkR綟rn$-=6ꋹ;홯sDFErS7]M2EInHnI<</|cx&;pG5u(BaӅ^!K8Y(at(J6(`;-kZ dss_ƹ0\1BKÃ6kL4O sQA¡V:ֶZGkg/sJ GO4e:4ӢL̸Bm-DmӌX59q5lRg*p<8g3YP4fA-c4NB٥)33 \L7sQ5H+#V^t).'< 6T\ܐ, Haux %CP34 -g (z ,ܫ98>pY3*,I)O3[59`X* 9n,RڣX{'1h oԊwmK2pNpa)ǿk nIqL,蛕E"cڞ 4Y. u)2h BUEB%C1e!(5 +]6(tJeڼh RTƙf 4[xuxdĺP&Oe2 l/a׹>ЈÞs#VfppY.¹wY@Q#6T+fW!2 ُ- lެW^M]La"!%Av;gsv;gsv` vmP XbKvPg>g)"xLWn  j;\BCX-Иz+yIyS[5gM3VV56ռ;@tC=;+L6pڍqD1d8SM:4l4'ّ6m!e8-R2\EX5p^ThNDj:q싼] rO@3SAYT[}Su}+1Xo 42@'c-Q79k??nŅ=J,{)F;sAĐ1= VcURq!UX0pM j-%AA gAB͢mJ=ecNf\]aF_*Xm, '~29ة@,)e+M@ފQSqK}=>T\?-FeR179 1J#Lg Pr-e8)pMBLAYUIA{$2yp z g;ڼQ8_R ie4"]jKΙ-ׅ/9vpb8`v"-%RJ:Ǖd KX :shnH|z% mt9"<"^;!̸O~GWmS{Y0$ZJ\Nɭ-X1-rM~? A*tF, o8 &- b{\ ] 逌}Qx|n{ CuKU~ƊԂ[DFu?@%&, f}0Yaiʟ DVXyHINI26/pr@6LKhs_[ "o'#T>$!/JY+`ԕ/QT:#XLaXnG7 e[[0xGB7[V eeG-k*t}Ucl 9:LeZ1K' ;:Ur?ҺwdwJ=PvRÉ0!'G}Dvް!&/<[:)8>j9Lbٻ22jJmt0O 2>i@sԽhGJP TϸaQBe@\8vΠ&+{'taCJ>TA9-~L&l2a|=;dEJ 0ΊY3M瑣4'1'AD@9X2D 1N™u@yΈӊza^Yz`ձD!V-{mNL_B󱯆P]yg N'8@Bɘ='_Bo=/tHLᗅ5(kKߙjhd'ui=Q-XP˦#6ڲ :tW;B"^W^4mc ~`,Xɵ[MF mA񎅫Q332Pa )]3%DJDJPE9L&l2Q27SS҉\pCX[ZJ"",߿nĕ?r+x_`<?`>쫽O>n JZCЊV|Z PDy 1CnEj۪K? W~BH'(UՐc2k0F/|Z@S/4jq;_ [筍߻fdYmm(48>&!n蒷BZfCʅ֔T Q݆98ZR(&S3"T0U!%8JL ӋBt].T~Yqr+C#Xmn|m'/gQ<`Vq26uC/LFj,Ba!B], C̀~rGuY/} w8`b[Ď>QtFcha u-Ύό)>ڧ-Fp7zs,GG6BñD;Zj<1ڭ@O:QN:gl~H]HKZ*q.i%FN:AD 88/Ikt2@Hk6i5`E:Lʛ#89pzf?Cxt' j|?'<܋EnQiuanxPc1xҨR1T Znsօ>a]-}ǃ(DIgXC kL4r2L*!u@ uA\΍Ha iQ+t}@Z2Q%.Lu S- )ʱΗ:OYTjQ sHD^t:Y, Zdn&#U#0Fa܉FVbX'MX9*VUC-FFSg尶UoXQHJ/1KuM%(T+To|PQ(V(JqNk&]M˛t7ъ*|Z\aY0*믘mh!a@c/ !,cyZ]h,PY]]Qq"kG"c^J 4K䑿Cd cɱ֗u9U@ Ǯ+ܾs*K2r(G\ 2f:c'È <#ՈD~oUpq;)--'Re5 pASbV&s, 憒Ĺcus ;QL.# 4*@s,ŅK(1J3P ;bem(ӿ]J,z]7*%KN&gAR-eL%KRaXh2*K_='"vs,3UxgDv!X( ~u N4+bIBtaWMWzEdԄ+ұۢ0 j"כ3F]-l$h?n(~[p!V@8_/72~Z쀈'ѵN|ز B@v2F"9Xp8щ8urq"V]Pih+TnP6H .A@Ӝ(Ҏ/>v a*wSoH n-lz2Bjn,;P@Y…N:A&; [tc'e2d|M)!*bSjyw_KlcK(Nݶ[faY{J5XE!H#Vv7p@_-%]Cj4~v+m;ʳx܊ŊRePە~.T\RЃ5. x3"mFwxf, '3a;~Qu""G$"G G7feƂIk̐1 nL."B~VbFu+XPH\@VŖ"^` AO߫_%蕍TQ 2ӲrRSȸva\Qx:Tfmue[=wFEqQ+t;bNHus_/G[,ck:>2HC֙/+䡄 P,裌8,YR(N(bs9* WXJ,GJ'/D `VZ39M318B`dc.mR3!=)hk:gƤ{GSO˯5B6eHoKV5kj4P̟!fHP P|ɰUKcPΑV'H%"*v-+e{GZ8KJE3SLRf)V2E^L&ʕ$倝P/D 궐SЉP;JNU}TȪqc/.3 P@Q(Kk@xEbدA5(rab([*dH}Ek\uVemAZ, 1ZQ+Kxfñ5Q-ޮ`о`/o1K6M; 5Fc'Q 2R(Ji/kۺ7΢n[lwDPXPNΡ#eL& Z . ?م0dD m@4SÂaUp}yJ`-(`{ Ac`SPGJnWzOBȀo I[sÐq˂:7T@|HQx{vB u׽ow Ǻf0z+߻&E3E/!]*]{Xl/(5d?Le.42aDBPZ BD]{} ;=Q>v"#ɔ+_z-Qs kW(M1Z%Q|tUN j-Q૽V_k dצwk0V6mk;`b땞Ҿ+{`KW;0(™ )G( 7Ph7[P;L3gx~#uȳr?_pٙI/޿2Aӂ;JiXYcſ},C<麶xTBCB#_X0D gv E}N (F8!"Ka̝(BCE|IT2p #atgbv:TBrJ2{sow&߯]fP68l-TO[ [m5%߷zDW6RWp_ٜm!e`Hee2tL`}Gȁa[US#T&n~P7 WCYEZ^nϸ !4-ӳ\Oֶse;׶hPTr OiK1CRe+-`ĩUB\ _xnZaɯuT[,1׆Co__Y[>4_8*!|7.ݱ ԵZ,ZqZ|; sP7|L& )Y3HcK!f`Pچb`%b"e,e8۱ vٹ]''ae.fUTZ =,)Tʎ3%UvNrb+'Ju\v4Q]cnin&_-(!HC> (F{+wIA+'+I H,)kN9/|/$*G*]O~SWz{w^io _nn~WٜZDH)uvm w7Ln} \Ƃ#cS7ȨTo mǶ3owM]^d\d{mx^1fD : -T/x N+kMܿ,gZ BwTs?! #K"oA>,գ},bg>F|) ,hEK;"HQ(U UU; 5FcTI!69%N|>~lƊ|%S7$rŒ?IW|Йk?"G-ahL5fן<}C ATy*C;l: f3;3dv,i2hά<=:80 !CĐ0&l8:p|GN>%}g׿R&g֛1qQ)FactoMineR/data/geomorphology.rda0000644000176200001440000001143312010176620016531 0ustar liggesusersX 8?"cyɐh/Cɐ{*2r4]IIJ(^y"̳ J>{Կ{>kkcpXm¿BpR89(\pSfc GGDm BᚋB.0b|`e"6Qy@Ţ8 ~xER@ eX׊˳[gC,ٖ$mɶ)/N%H;2$K~H;< ̶ώ/[@I!ȓzlfK~ C{0010`8c(bxb,gpswWܖŰXaIl18i9u>/((0{C˹c#agߎQq#41T11İ &$Fs°0`fs!F,i1<(`Pgjh R[gzdQ{ bs#fw4,zr]|SR%Ϳ4\ydN193ʲ# nt˾1E֖&y5ãȜ0$kMseOaS vko.1f&"冖{{;GAv/@UdUt k,;ڤ_K2 x.`ٳ"9mf +jiGHΛlf)Ś >#ҟ*ێ6+~f~"LEX~ɓqeI ' Ip";/ l`[#oS0z=Y"ӽ,)濁l9ƒ& -NvEĆs E+FY?=7њ"z`Ul$4fk&)P8PuĸO~hlq#*2e17y8 E 5"#6a12nk }SVJC@h !Bmԫ.y|ЁxL0|DB%>]a=>o7*zMnN3LFӶP'iVo';*rA_ ?tjJT 6&B+Bb&1'rUL^GR#) xфJ`#BеH Տ߉=JTsFșԈr^R \W:nD/i*Q}Iy-eJ(9~5kݢP}&P\>5@5ѹ1:CL_5{q/<_'GnZ ,\pTǯ\@8 ?90i!}u09ѸrZ0vPS曪϶J.'ln~ق9e7nڞ>ohϱ"Nzf@nG[q=ge8\# voINC #76@쇲7;Uh]P:\9 yq÷t X|f-@5_}C_<`%Ami?-{5f_vrQ(/g뾸̓;SGef [!4"(ߊoi&lԇ5NClM=&0NnXЛ#BNcNx/`{>/o1 P ҢNZM+&1`ꂇI`,˨5,A΃-@!Xu1!e@0_c/(Qjʍ‰??hAp@4謹wSyءeo$L34ġlh{Qt9MRLoŁW\=AQ,/"8"$1L{jC>~Uh>9#^6GXБҐpuV8cy3Ws{կ u3gM*‘* 1T5#FaCF ;A I礜;j8O?<1}Ld063NaSǤJ9g<1`Z2dي,G RwZίYB!U Ę؟詋vU&Fmbz9 ?[HɷwՆ>Mwmgbxfm|5w3Q)oFzsQ: 1~EO{ciL 54H?(sJ/lAGwS!|sB-bы6Ӭ(vN5j6!-HM9^VhR5bw=$^?!<#Cӥ9?Vj3#fW__@}s#FQGOrUFP=&}{j+BFg.ܚTKp5 ?-̒碞ci?JTPw珝mFݯY|D}%[ڧ S4wۀڽǼ q?ex~=Q{WI"Ԯ:cD 5WGAzM!9'﹮mIv^mmsu{xc-I,X:.>f,F.!稷%m/KC~7y~/>y/b?ٲу2'cNͺ^4ýaڷ.ܨG=G>JF+cAZh >Q_n >8BYzo@}\=QwlQW[D5Կ:f˸{VWFSkqF-sn>f =#79Se 'u u(8qu0e> I~onUy J_z^A]?Pe[y]N_pZ } {X޶+웂ӢPIМrωzEt4RٸK94Xh}OszB_.%8*]gI( fy\D  a:fEt fKgb"uk7.jyXf4zֺX)%YZ mVuz\w~rY{ҡϱd`' 8¸\ӯ3Oi:B yPwh*%GeV*^x~z ۞,XGv+V#9r@qzy-gcܕsVfQT *qcz/D} (kZ|H{ݝ )pgюUg!h/θf?YuW,<0 ?QWDo*F ^_&|ou{a4A4#@# tl{t41 )r)BrAOQ|&s$T?oS+R- lmxOz6|Ч+y4+` ;;95sx5ޝ/ (wۓKP54\ᡪNYK@VhXu6Q`-Kb3RHa#B>Z $_P;6twF=)^ߵ$(qop88ÂWr=m@Hr)ACՆZo5 }w,CͮDU'n=e'я_q% h,2(dhV|Z4дI@Cm.nenT\{ :W;iA]mÍ5EBnևϞqJOy^ qp::CڅEoiK۰(#!@m'=.k@Odv9haa? Qq[1X:#ٮ<-Cz` }NG>2"D'黛AA8MO/o78a` ?3;&r!;D[;mBLcFactoMineR/man/0000755000176200001440000000000014551762422013024 5ustar liggesusersFactoMineR/man/MCA.Rd0000644000176200001440000001230114500576075013711 0ustar liggesusers\name{MCA} \alias{MCA} \title{Multiple Correspondence Analysis (MCA)} \description{ Performs Multiple Correspondence Analysis (MCA) with supplementary individuals, supplementary quantitative variables and supplementary categorical variables.\cr Performs also Specific Multiple Correspondence Analysis with supplementary categories and supplementary categorical variables.\cr Missing values are treated as an additional level, categories which are rare can be ventilated } \usage{ MCA(X, ncp = 5, ind.sup = NULL, quanti.sup = NULL, quali.sup = NULL, excl=NULL, graph = TRUE, level.ventil = 0, axes = c(1,2), row.w = NULL, method="Indicator", na.method="NA", tab.disj=NULL)} \arguments{ \item{X}{a data frame with \emph{n} rows (individuals) and \emph{p} columns (categorical variables)} \item{ncp}{number of dimensions kept in the results (by default 5)} \item{ind.sup}{a vector indicating the indexes of the supplementary individuals} \item{quanti.sup}{a vector indicating the indexes of the quantitative supplementary variables} \item{quali.sup}{a vector indicating the indexes of the categorical supplementary variables} \item{excl}{vector indicating the indexes of the "junk" categories (default is NULL), it can be a vector of the names of the categories or a vector of the indexes in the disjunctive data table} \item{graph}{boolean, if TRUE a graph is displayed} \item{level.ventil}{a proportion corresponding to the level under which the category is ventilated; by default, 0 and no ventilation is done} \item{axes}{a length 2 vector specifying the components to plot} \item{row.w}{an optional row weights (by default, a vector of 1 for uniform row weights); the weights are given only for the active individuals} \item{method}{a string corresponding to the name of the method used: "Indicator" (by default) is the CA on the Indicator matrix, "Burt" is the CA on the Burt table. For Burt and the Indicator, the graph of the individuals and the graph of the categories are given} \item{na.method}{a string corresponding to the name of the method used if there are missing values; available methods are "NA" or "Average" (by default, "NA")} \item{tab.disj}{optional data.frame corresponding to the disjunctive table used for the analysis; it corresponds to a disjunctive table obtained from imputation method (see package missMDA).} } \value{ Returns a list including: \item{eig}{a matrix containing all the eigenvalues, the percentage of variance and the cumulative percentage of variance} \item{var}{a list of matrices containing all the results for the active variables (coordinates, square cosine, contributions, v.test, square correlation ratio)} \item{ind}{a list of matrices containing all the results for the active individuals (coordinates, square cosine, contributions)} \item{ind.sup}{a list of matrices containing all the results for the supplementary individuals (coordinates, square cosine)} \item{quanti.sup}{a matrix containing the coordinates of the supplementary quantitative variables (the correlation between a variable and an axis is equal to the variable coordinate on the axis)} \item{quali.sup}{a list of matrices with all the results for the supplementary categorical variables (coordinates of each categories of each variables, square cosine and v.test which is a criterion with a Normal distribution, square correlation ratio)} \item{call}{a list with some statistics} Returns the graphs of the individuals and categories and the graph with the variables.\cr The plots may be improved using the argument autolab, modifying the size of the labels or selecting some elements thanks to the \code{\link{plot.MCA}} function. } \references{ Husson, F., Le, S. and Pages, J. (2010). Exploratory Multivariate Analysis by Example Using R, \emph{Chapman and Hall}. } \author{Francois Husson \email{francois.husson@institut-agro.fr}, Julie Josse, Jeremy Mazet} \seealso{ \code{\link{plotellipses}}, \code{\link{summary.MCA}},\code{\link{print.MCA}}, \code{\link{plot.MCA}}, \code{\link{dimdesc}},\cr \href{https://www.youtube.com/watch?v=reG8Y9ZgcaQ&list=PLnZgp6epRBbTsZEFXi_p6W48HhNyqwxIu&index=5}{Video showing how to perform MCA with FactoMineR}} \examples{ \dontrun{ ## Tea example data(tea) res.mca <- MCA(tea,quanti.sup=19,quali.sup=20:36) summary(res.mca) plot(res.mca,invisible=c("var","quali.sup","quanti.sup"),cex=0.7) plot(res.mca,invisible=c("ind","quali.sup","quanti.sup"),cex=0.8) plot(res.mca,invisible=c("quali.sup","quanti.sup"),cex=0.8) dimdesc(res.mca) plotellipses(res.mca,keepvar=1:4) plotellipses(res.mca,keepvar="Tea") ## Hobbies example data(hobbies) res.mca <- MCA(hobbies,quali.sup=19:22,quanti.sup=23) plot(res.mca,invisible=c("ind","quali.sup"),hab="quali") plot(res.mca,invisible=c("var","quali.sup"),cex=.5,label="none") plot(res.mca,invisible=c("ind","var"),hab="quali") dimdesc(res.mca) plotellipses(res.mca,keepvar=1:4) ## Specific MCA: some categories are supplementary data (poison) res <- MCA (poison[,3:8],excl=c(1,3)) ## Graphical interface require(Factoshiny) res <- Factoshiny(tea) ## Example with missing values : use the missMDA package require(missMDA) data(vnf) completed <- imputeMCA(vnf,ncp=2) res.mca <- MCA(vnf,tab.disj=completed$tab.disj) } } \keyword{multivariate} FactoMineR/man/print.HCPC.Rd0000644000176200001440000000141714500576075015167 0ustar liggesusers\name{print.HCPC} \alias{print.HCPC} \title{Print the Hierarchical Clustering on Principal Components (HCPC) results} \description{ Print the Hierarchical Clustering on Principal Components (HCPC) results. } \usage{ \method{print}{HCPC}(x, file = NULL, sep = ";", \dots) } \arguments{ \item{x}{an object of class HCPC} \item{file}{A connection, or a character string naming the file to print to. If NULL (the default), the results are not printed in a file} \item{sep}{character string to insert between the objects to print (if the argument file is not NULL} \item{\dots}{further arguments passed to or from other methods} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{HCPC}}, \code{\link{write.infile}}} \keyword{print} FactoMineR/man/write.infile.Rd0000644000176200001440000000150414500575665015717 0ustar liggesusers\name{write.infile} \alias{write.infile} \title{Print in a file} \description{ Print in a file. } \usage{ write.infile(X, file, sep=";", append = FALSE, nb.dec=4) } \arguments{ \item{X}{an object of class list, data.frame, matrix, ...} \item{file}{A connection, or a character string naming the file to print to} \item{sep}{character string to insert between the objects to print (if the argument file is not NULL)} \item{append}{logical. If TRUE output will be appended to file; otherwise, it will overwrite the contents of file.} \item{nb.dec}{number of decimal printed, by default 4} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \examples{ \dontrun{ data(decathlon) res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup = 13) write.infile(res.pca, file="c:/essai.csv", sep = ";") } } \keyword{print} FactoMineR/man/senso.Rd0000644000176200001440000000104112073040457014430 0ustar liggesusers\name{senso} \alias{senso} \docType{data} \title{senso} \description{ Dataset to illustrate one-way and Two-way analysis of variance } \usage{data(senso)} \format{ Dataset with 45 rows and 3 columns: Score, Product and Day} \examples{ ## Example of 2-way analysis of variance data(senso) res <- AovSum (Score~ Product + Day, data=senso) res ## Example of 2-way analysis of variance with interaction data(senso) res2 <- AovSum (Score~ Product + Day + Product : Day, data=senso) res2 } \keyword{datasets} FactoMineR/man/FAMD.Rd0000644000176200001440000000665614500575664014043 0ustar liggesusers\name{FAMD} \alias{FAMD} \title{Factor Analysis for Mixed Data} \description{ FAMD is a principal component method dedicated to explore data with both continuous and categorical variables. It can be seen roughly as a mixed between PCA and MCA. More precisely, the continuous variables are scaled to unit variance and the categorical variables are transformed into a disjunctive data table (crisp coding) and then scaled using the specific scaling of MCA. This ensures to balance the influence of both continous and categorical variables in the analysis. It means that both variables are on a equal foot to determine the dimensions of variability. This method allows one to study the similarities between individuals taking into account mixed variables and to study the relationships between all the variables. It also provides graphical outputs such as the representation of the individuals, the correlation circle for the continuous variables and representations of the categories of the categorical variables, and also specific graphs to visulaize the associations between both type of variables. } \usage{ FAMD (base, ncp = 5, graph = TRUE, sup.var = NULL, ind.sup = NULL, axes = c(1,2), row.w = NULL, tab.disj = NULL) } \arguments{ \item{base}{a data frame with \emph{n} rows (individuals) and \emph{p} columns} \item{ncp}{number of dimensions kept in the results (by default 5)} \item{graph}{boolean, if TRUE a graph is displayed} \item{ind.sup}{a vector indicating the indexes of the supplementary individuals} \item{sup.var}{a vector indicating the indexes of the supplementary variables} \item{axes}{a length 2 vector specifying the components to plot} \item{row.w}{an optional row weights (by default, uniform row weights); the weights are given only for the active individuals} \item{tab.disj}{object obtained from the imputeFAMD function of the missMDA package that allows to handle missing values} } \value{ Returns a list including: \item{eig}{a matrix containing all the eigenvalues, the percentage of variance and the cumulative percentage of variance} \item{var}{a list of matrices containing all the results for the variables considered as group (coordinates, square cosine, contributions)} \item{ind}{a list of matrices with all the results for the individuals (coordinates, square cosine, contributions)} \item{quali.var}{a list of matrices with all the results for the categorical variables (coordinates, square cosine, contributions, v.test)} \item{quanti.var}{a list of matrices with all the results for the quantitative variables (coordinates, correlation, square cosine, contributions)} \item{call}{a list with some statistics} Returns the individuals factor map. } \references{ Pages J. (2004). Analyse factorielle de donnees mixtes. Revue Statistique Appliquee. LII (4). pp. 93-111. } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{print.FAMD}}, \code{\link{summary.FAMD}}, \code{\link{plot.FAMD}},\cr \href{https://www.youtube.com/watch?v=FKB96VGUgUE&list=PLnZgp6epRBbTsZEFXi_p6W48HhNyqwxIu&index=8}{Video showing how to perform FAMD with FactoMineR}} \examples{ \dontrun{ data(geomorphology) res <- FAMD(geomorphology) summary(res) ## Graphical interface require(Factoshiny) res <- Factoshiny(geomorphology) ### with missing values require(missMDA) data(ozone) res.impute <- imputeFAMD(ozone, ncp=3) res.afdm <- FAMD(ozone,tab.disj=res.impute$tab.disj) } } \keyword{multivariate} FactoMineR/man/plotellipses.Rd0000644000176200001440000000776514500575664016055 0ustar liggesusers\name{plotellipses} \alias{plotellipses} \title{Draw confidence ellipses around the categories} \description{ Draw confidence ellipses around the categories. } \usage{ plotellipses(model, keepvar = "all", axes = c(1, 2), means=TRUE, level = 0.95, magnify = 2, cex = 1, pch = 20, pch.means=15, type = c("g","p"), keepnames = TRUE, namescat = NULL, xlim=NULL, ylim=NULL, lwd=1, label="all", autoLab=c("auto","yes","no"), graph.type = c("ggplot","classic"), \dots) } \arguments{ \item{model}{an object of class MCA or PCA or MFA} \item{keepvar}{a boolean or numeric vector of indexes of variables or a character vector of names of variables. If keepvar is "all", "quali" or "quali.sup" variables which are plotted are all the categorical variables, only those which are used to compute the dimensions (active variables) or only the supplementary categorical variables. If keepvar is a numeric vector of indexes or a character vector of names of variables, only relevant variables are plotted.} \item{axes}{a length 2 vector specifying the components to plot} \item{means}{boolean which indicates if the confidence ellipses are for (the coordinates of) the means of the categories (the empirical variance is divided by the number of observations) or for (the coordinates of) the observations of the categories} \item{level}{the confidence level for the ellipses} \item{magnify}{numeric which control how the level names are magnified. A value of 2 means that the level names have character expansion equal to two times cex} \item{cex}{cf. function \code{\link{par}} in the \pkg{graphics} package} \item{pch}{plotting character for coordinates, cf. function \code{\link{par}} in the \pkg{graphics} package} \item{pch.means}{plotting character for means, cf. function \code{\link{par}} in the \pkg{graphics} package} \item{type}{cf. function \code{\link{xyplot}} in the \pkg{lattice} package} \item{keepnames}{a boolean or numeric vector of indexes of variables or a character vector of names of variables. If keepnames is TRUE, names of levels are taken from the (modified) dataset extracted from modele, if FALSE trimming names is done. When trimming, names of levels are taken from the (modified) dataset extracted from modele, then, the corresponding number of characters of names of original variables plus 1 is removed. If keepnames is a vector of indexes or names, trimming is done on all variables excepted whose in keepnames} \item{namescat}{a vector giving for each observation the value of categorical variable, each variable are stacked under each other. If NULL, names are taken from the (modified) dataset extracted from modele} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{lwd}{The line width, a positive number, defaulting to 1} \item{label}{a list of character for the elements which are labelled (by default, "all", you can use "none", "ind", ind.sup"))} \item{autoLab}{if \code{autoLab="auto"}, \code{autoLab} is equal to "y" if there are less than 50 elements and "no" otherwise; if "y", the labels of the drawn elements are placed in a "good" way (can be time-consuming if many elements), and if "no" the elements are placed quickly but may overlap} \item{graph.type}{a character that gives the type of graph used: "ggplot" or "classic"} \item{\dots}{further arguments passed to or from other methods} } \value{ Return a graph with the ellipses. If only one variable is chosen, the graph is different. } \author{Pierre-Andre Cornillon, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{MCA}}, \code{\link{PCA}}} \examples{ \dontrun{ data(poison) res.mca = MCA(poison, quali.sup = 3:4, quanti.sup = 1:2) plotellipses(res.mca) plotellipses(res.mca,keepvar=3:6) } data(decathlon) res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup=13) plotellipses(res.pca,keepvar=13) } \keyword{multivariate} FactoMineR/man/print.CA.Rd0000644000176200001440000000133714500575664014741 0ustar liggesusers\name{print.CA} \alias{print.CA} \title{Print the Correspondance Analysis (CA) results} \description{ Print the Correspondance Analysis (CA) results. } \usage{ \method{print}{CA}(x, file = NULL, sep = ";", \dots) } \arguments{ \item{x}{an object of class CA} \item{file}{A connection, or a character string naming the file to print to. If NULL (the default), the results are not printed in a file} \item{sep}{character string to insert between the objects to print (if the argument file is not NULL} \item{\dots}{further arguments passed to or from other methods} } \author{Jeremy Mazet, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{CA}}, \code{\link{write.infile}}} \keyword{print} FactoMineR/man/plot.CA.Rd0000644000176200001440000001331014602741716014551 0ustar liggesusers\name{plot.CA} \alias{plot.CA} \title{Draw the Correspondence Analysis (CA) graphs} \description{ Draw the Correspondence Analysis (CA) graphs. } \usage{ \method{plot}{CA}(x, axes = c(1, 2), xlim = NULL, ylim = NULL, invisible = c("none","row","col","row.sup","col.sup","quali.sup"), choix = c("CA","quanti.sup"), col.row="blue", col.col="red", col.row.sup="darkblue", col.col.sup="darkred", col.quali.sup="magenta", col.quanti.sup="blue", label = c("all","none","row","row.sup","col","col.sup","quali.sup","quanti.sup"), title = NULL, palette = NULL, autoLab = c("auto","yes","no"), new.plot=FALSE, selectRow = NULL, selectCol = NULL, unselect = 0.7, shadowtext = FALSE, habillage = "none", legend = list(bty = "y", x = "topleft"), graph.type = c("ggplot","classic"), ggoptions = NULL, \dots) } \arguments{ \item{x}{an object of class CA} \item{axes}{a length 2 vector specifying the components to plot} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{invisible}{string indicating if some points should be unlabelled ("row", "col", "row.sup", "col.sup","quali.sup")} \item{choix}{the graph to plot ("CA" for the CA map, "quanti.sup" for the supplementary quantitative variables)} \item{col.row}{a color for the rows points} \item{col.col}{a color for columns points} \item{col.row.sup}{a color for the supplementary rows points} \item{col.col.sup}{a color for supplementary columns points} \item{col.quali.sup}{a color for the supplementary categorical variables} \item{col.quanti.sup}{a color for the supplementary quantitative variables} \item{label}{a list of character for the elements which are labelled (by default, all the elements are labelled ("row", "row.sup", "col", "col.sup","quali.sup","quanti.sup")} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{palette}{the color palette used to draw the points. By default colors are chosen. If you want to define the colors : palette=palette(c("black","red","blue")); or you can use: palette=palette(rainbow(30)), or in black and white for example: palette=palette(gray(seq(0,.9,len=25)))} \item{autoLab}{if \code{autoLab="auto"}, \code{autoLab} is equal to "yes" if there are less than 50 elements and "no" otherwise; if "yes", the labels of the drawn elements are placed in a "good" way (can be time-consuming if many elements), and if "no" the elements are placed quickly but may overlap} \item{new.plot}{boolean, if TRUE, a new graphical device is created} \item{selectRow}{a selection of the rows that are drawn; see the details section} \item{selectCol}{a selection of the columns that are drawn; see the details section} \item{unselect}{may be either a value between 0 and 1 that gives the transparency of the unselected objects (if \code{unselect=1} the transparceny is total and the elements are not drawn, if \code{unselect=0} the elements are drawn as usual but without any label) or may be a color (for example \code{unselect="grey60"})} \item{shadowtext}{boolean; if true put a shadow on the labels (rectangles are written under the labels which may lead to difficulties to modify the graph with another program)} \item{habillage}{color the individuals among a categorical variable (give the number of the categorical supplementary variable or its name)} \item{legend}{a list of arguments that defines the legend if needed (when individuals are drawn according to a variable); see the arguments of the function \code{legend}} \item{graph.type}{a character that gives the type of graph used: "ggplot" or "classic"} \item{ggoptions}{a list that gives the graph options when grah.type="ggplot" is used. See the optines and the default values in the details section} \item{\dots}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \value{ Returns the factor map with the joint plot of CA. } \details{ The argument \code{autoLab = "yes"} is time-consuming if there are many labels that overlap. In this case, you can modify the size of the characters in order to have less overlapping, using for example cex=0.7.\cr The \code{selectRow} and \code{selectCol} arguments can be used in order to select a part of the elements that are drawn. For example, you can use:\cr \code{selectRow = 1:5} and then the rows 1 to 5 are drawn.\cr \code{select = c("name1","name5")} and then the rows that have the names name1 and name5 are drawn.\cr \code{select = "coord 10"} and then the 10 rows (10 active and 10 supplementaries) that have the highest (squared) coordinates on the 2 chosen dimensions are drawn.\cr \code{select = "contrib 10"} and then the 10 rows (10 active) that have the highest contribution on the 2 dimensions of your plot are drawn.\cr \code{select = "cos2 5"} and then the 5 rows (5 actives and 5 supplementaries) that have the highest cos2 on the 2 dimensions of your plot are drawn.\cr \code{select = "dist 8"} and then the 8 rows (8 actives and 8 supplementaries) that have the highest distance to the center of gravity are drawn.\cr } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{CA}}} \examples{ data(children) res.ca <- CA (children, col.sup = 6:8, row.sup = 15:18) ## select rows and columns that have a cos2 greater than 0.8 plot(res.ca, selectCol="cos2 0.8", selectRow="cos2 0.8") \dontrun{ ## You can modify the ggplot graphs as ususal with ggplot2 require(ggplot2) gr <- plot(res.ca) gr + theme(panel.grid.major = element_blank(), plot.title=element_text(size=14, color="blue"), axis.title = element_text(size=12, color="red")) } } \keyword{dplot} FactoMineR/man/print.FAMD.Rd0000644000176200001440000000135514500575664015165 0ustar liggesusers\name{print.FAMD} \alias{print.FAMD} \title{Print the Multiple Factor Analysis of mixt Data (FAMD) results} \description{ Print the Multiple Factor Analysis of mixt Data (FAMD) results. } \usage{ \method{print}{FAMD}(x, file = NULL, sep = ";", \dots) } \arguments{ \item{x}{an object of class FAMD} \item{file}{A connection, or a character string naming the file to print to. If NULL (the default), the results are not printed in a file} \item{sep}{character string to insert between the objects to print (if the argument file is not NULL} \item{\dots}{further arguments passed to or from other methods} } \author{Jeremy Mazet, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{FAMD}}} \keyword{print} FactoMineR/man/plot.DMFA.Rd0000644000176200001440000000431514500576075015003 0ustar liggesusers\name{plot.DMFA} \alias{plot.DMFA} \title{Draw the Dual Multiple Factor Analysis (DMFA) graphs} \description{ Plot the graphs for a Principal Component Analysis (DMFA) with supplementary individuals, supplementary quantitative variables and supplementary categorical variables. } \usage{ \method{plot}{DMFA}(x, axes = c(1, 2), choix = "ind", label="all", lim.cos2.var = 0., xlim=NULL, ylim=NULL, title = NULL, palette = NULL, new.plot = FALSE, autoLab = c("auto","yes","no"), \dots) } \arguments{ \item{x}{an object of class DMFA} \item{axes}{a length 2 vector specifying the components to plot} \item{choix}{the graph to plot ("ind" for the individuals, "var" for the variables)} \item{label}{a list of character for the elements which are labelled (by default, all the elements are labelled ("ind", ind.sup", "quali", "var", "quanti.sup"))} \item{lim.cos2.var}{value of the square cosinus under the variables are not drawn} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{palette}{the color palette used to draw the points. By default colors are chosen. If you want to define the colors : palette=palette(c("black","red","blue")); or you can use: palette=palette(rainbow(30)), or in black and white for example: palette=palette(gray(seq(0,.9,len=25)))} \item{new.plot}{boolean, if TRUE, a new graphical device is created} \item{autoLab}{if \code{autoLab="auto"}, \code{autoLab} is equal to "yes" if there are less than 50 elements and "no" otherwise; if "yes", the labels of the drawn elements are placed in a "good" way (can be time-consuming if many elements), and if "no" the elements are placed quickly but may overlap} \item{\dots}{further arguments passed to or from other methods} } \value{ Returns the individuals factor map and the variables factor map, the partial variables representation and the groups factor map. } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{DMFA}}} \keyword{dplot} FactoMineR/man/DMFA.Rd0000644000176200001440000000531514500575664014032 0ustar liggesusers\name{DMFA} \alias{DMFA} \title{Dual Multiple Factor Analysis (DMFA)} \description{ Performs Dual Multiple Factor Analysis (DMFA) with supplementary individuals, supplementary quantitative variables and supplementary categorical variables. } \usage{ DMFA(don, num.fact = ncol(don), scale.unit = TRUE, ncp = 5, quanti.sup = NULL, quali.sup = NULL, graph = TRUE, axes=c(1,2))} \arguments{ \item{don}{a data frame with \emph{n} rows (individuals) and \emph{p} columns (numeric variables)} \item{num.fact}{the number of the categorical variable which allows to make the group of individuals} \item{scale.unit}{a boolean, if TRUE (value set by default) then data are scaled to unit variance} \item{ncp}{number of dimensions kept in the results (by default 5)} \item{quanti.sup}{a vector indicating the indexes of the quantitative supplementary variables} \item{quali.sup}{a vector indicating the indexes of the categorical supplementary variables} \item{graph}{boolean, if TRUE a graph is displayed} \item{axes}{a length 2 vector specifying the components to plot} } \value{ Returns a list including: \item{eig}{a matrix containing all the eigenvalues, the percentage of variance and the cumulative percentage of variance} \item{var}{a list of matrices containing all the results for the active variables (coordinates, correlation between variables and axes, square cosine, contributions)} \item{ind}{a list of matrices containing all the results for the active individuals (coordinates, square cosine, contributions)} \item{ind.sup}{a list of matrices containing all the results for the supplementary individuals (coordinates, square cosine)} \item{quanti.sup}{a list of matrices containing all the results for the supplementary quantitative variables (coordinates, correlation between variables and axes)} \item{quali.sup}{a list of matrices containing all the results for the supplementary categorical variables (coordinates of each categories of each variables, and v.test which is a criterion with a Normal distribution)} \item{svd}{the result of the singular value decomposition} \item{var.partiel}{a list with the partial coordinate of the variables for each group} \item{cor.dim.gr}{} \item{Xc}{a list with the data centered by group} \item{group}{a list with the results for the groups (cordinate, normalized coordinates, cos2)} \item{Cov }{a list with the covariance matrices for each group} Returns the individuals factor map and the variables factor map. } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{plot.DMFA}}, \code{\link{dimdesc}}} \examples{ ## Example with the famous Fisher's iris data res.dmfa = DMFA ( iris, num.fact = 5) } \keyword{multivariate} FactoMineR/man/autoLab.Rd0000644000176200001440000000145012107740565014701 0ustar liggesusers\name{autoLab} \alias{autoLab} \title{Function to better position the labels on the graphs} \description{ Function to better position the labels on the graphs. } \usage{ autoLab(x, y = NULL, labels = seq(along = x), cex = 1, method = c("SANN", "GA"), allowSmallOverlap = FALSE, trace = FALSE, shadotext = FALSE, doPlot = TRUE, \dots) } \arguments{ \item{x}{the x-coordinates} \item{y}{the y-coordinates} \item{labels}{the labels} \item{cex}{cex} \item{method}{not used} \item{allowSmallOverlap}{boolean} \item{trace}{boolean} \item{shadotext}{boolean} \item{doPlot}{boolean} \item{\dots}{further arguments passed to or from other methods} } \value{ See the text function } \keyword{dplot} FactoMineR/man/LinearModel.Rd0000644000176200001440000000513014570142107015476 0ustar liggesusers\name{LinearModel} \alias{LinearModel} \title{Linear Model with AIC or BIC selection, and with the contrasts sum (the sum of the coefficients is 0) if any categorical variables} \description{ Linear Model with AIC or BIC selection, and with the contrasts sum (the sum of the coefficients is 0) if any categorical variables \cr Test for all the coefficients\cr Handle missing values } \usage{ LinearModel(formula, data, na.action = na.omit, type = c("III","II", 3, 2), selection=c("none","aic","bic"), ...) } \arguments{ \item{formula}{the formula for the model 'y~x1+x2+x1:x2'} \item{data}{a data-frame} \item{na.action}{(where relevant) information returned by model.frame on the special handling of NAs.} \item{type}{type of test, "III", "II", 3 or 2. Roman numerals are equivalent to the corresponding Arabic numerals.} \item{selection}{a string that defines the model selection according to "BIC" for Bayesian Information Criterion or "AIC" for Akaike Information Criterion; "none", by defaut, means that there is no selection.} \item{\dots}{other arguments, cf the function \code{lm}} } \details{ The Anova function of the package car is used to calculate the F-tests. The t-tests are obtained using the contrasts "contr.sum" which means that 'sum to zero contrasts'. A stepwise procedure (using both backword and forward selections) is performed to select a model if selection="AIC" or selection="BIC".} \value{ The outouts \item{Ftest}{a table with the F-tests} \item{Ttest}{a table with the t-tests} \item{lmResult}{the summary of the function lm} \item{call}{the matched call} \item{lmResultComp}{the summary of the lm function for the complete model (given only if a selection is performed)} \item{callComp}{the matched call for the complete model (given only if a selection is performed)} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{aov}}, \code{\link{lm}}, \code{\link{print.LinearModel}}} \examples{ ## Example two-way anova data(senso) res <- LinearModel(Score~ Product + Day , data=senso, selection="none") res ## Perform means comparison meansComp(res,~Product) ## Example two-way anova with interaction data(senso) res2 <- LinearModel(Score~ Product + Day + Product : Day, data=senso, selection="none") res2 meansComp(res,~Product:Day) ## Example two-way anova with selection data(senso) res2 <- LinearModel(Score~ Product + Day + Product : Day, data=senso, selection="BIC") res2 ## Example ancova data(footsize) res3 <- LinearModel(footsize ~ size + sex + size : sex, data=footsize) res3 } \keyword{models} FactoMineR/man/health.Rd0000644000176200001440000000200312464754261014556 0ustar liggesusers\name{health} \alias{health} \title{health (data)} \description{ In 1989-1990 the Valencian Institute of Public Health (IVESP) conducted a survey to better know the attitudes and opinions related to health for the non-expert population. The first question included in the questionnaire "What does health mean to you?" required free and spontaneous answers. A priori, the variables Age group (under 21, 21-35, 36-50 and over 50), Health condition (poor, fair, good and very good health) and Gender were considered as possibly conditioning the respondents' viewpoint on health. } \usage{ data(health) } \format{ A data frame with 392 rows and 118 columns. Rows represent the individuals (respondents), columns represent the words used at least 10 times to answer the open-ended question (columns 1 to 115) and respondents' characteristics (age, health condition and gender) } \examples{ \dontrun{ data(health) res.cagalt<-CaGalt(Y=health[,1:115],X=health[,116:118],type="n") } } \keyword{datasets} FactoMineR/man/plot.PCA.Rd0000644000176200001440000002001414500576075014671 0ustar liggesusers\name{plot.PCA} \alias{plot.PCA} \title{Draw the Principal Component Analysis (PCA) graphs} \description{ Plot the graphs for a Principal Component Analysis (PCA) with supplementary individuals, supplementary quantitative variables and supplementary categorical variables. } \usage{ \method{plot}{PCA}(x, axes = c(1, 2), choix = c("ind","var","varcor"), ellipse = NULL, xlim = NULL, ylim = NULL, habillage="none", col.hab = NULL, col.ind="black", col.ind.sup="blue", col.quali="magenta", col.quanti.sup="blue", col.var="black", label = c("all","none","ind","ind.sup","quali","var","quanti.sup"), invisible = c("none","ind","ind.sup","quali","var","quanti.sup"), lim.cos2.var = 0., title = NULL, palette=NULL, autoLab = c("auto","yes","no"), new.plot = FALSE, select = NULL, unselect = 0.7, shadowtext = FALSE, legend = list(bty = "y", x = "topleft"), graph.type = c("ggplot","classic"), ggoptions = NULL, \dots) } \arguments{ \item{x}{an object of class PCA} \item{axes}{a length 2 vector specifying the components to plot} \item{choix}{the graph to plot ("ind" for the individuals, "var" for the variables, "varcor" for a graph with the correlation circle when \code{scale.unit=FALSE})} \item{ellipse}{boolean (NULL by default), if not null, draw ellipses around the individuals, and use the results of \code{coord.ellipse}} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{habillage}{give no color for the individuals ("none"), a color for each individual ("ind"), or color the individuals among a categorical variable (give the number of the categorical variable)} \item{col.hab}{a vector with the color to use for the individuals} \item{col.ind}{a color for the individuals only if there is not habillage} \item{col.ind.sup}{a color for the supplementary individuals only if there is not habillage} \item{col.quali}{a color for the categories of categorical variables only if there is not habillage} \item{col.quanti.sup}{a color for the quantitative supplementary variables} \item{col.var}{a color for the variables} \item{label}{a list of character for the elements which are labelled (by default, all the elements are labelled ("ind", ind.sup", "quali", "var", "quanti.sup"))} \item{invisible}{string indicating if some points should not be drawn ("ind", "ind.sup" or "quali" for the individual graph and "var" or "quanti.sup" for the correlation circle graph)} \item{lim.cos2.var}{value of the square cosinus under the variables are not drawn} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{palette}{the color palette used to draw the points. By default colors are chosen. If you want to define the colors : palette=palette(c("black","red","blue")); or you can use: palette=palette(rainbow(30)), or in black and white for example: palette=palette(gray(seq(0,.9,len=25)))} \item{autoLab}{if \code{autoLab="auto"}, \code{autoLab} is equal to "yes" if there are less than 50 elements and "no" otherwise; if "yes", the labels of the drawn elements are placed in a "good" way (can be time-consuming if many elements), and if "no" the elements are placed quickly but may overlap} \item{new.plot}{boolean, if TRUE, a new graphical device is created; only used when \code{graph.type="classic"}} \item{select}{a selection of the elements that are drawn; see the details section} \item{unselect}{may be either a value between 0 and 1 that gives the transparency of the unselected objects (if \code{unselect=1} the transparceny is total and the elements are not drawn, if \code{unselect=0} the elements are drawn as usual but without any label) or may be a color (for example \code{unselect="grey60"})} \item{shadowtext}{boolean; if true put a shadow on the labels (rectangles are written under the labels which may lead to difficulties to modify the graph with another program); only used when \code{graph.type="classic"}} \item{legend}{a list of arguments that defines the legend if needed (when individuals are drawn according to a variable); see the arguments of the function \code{legend}} \item{graph.type}{a character that gives the type of graph used: "ggplot" or "classic"} \item{ggoptions}{a list that gives the graph options when grah.type="ggplot" is used. See the optines and the default values in the details section} \item{\dots}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \details{ The argument \code{autoLab = "yes"} is time-consuming if there are many labels that overlap. In this case, you can modify the size of the characters in order to have less overlapping, using for example cex=0.7.\cr The \code{select} argument can be used in order to select a part of the elements (individuals if you draw the graph of individuals, or variables if you draw the graph of variables) that are drawn. For example, you can use:\cr \code{select = 1:5} and then the elements 1:5 are drawn.\cr \code{select = c("name1","name5")} and then the elements that have the names name1 and name5 are drawn.\cr \code{select = "coord 10"} and then the 10 elements that have the highest (squared) coordinates on the 2 chosen dimensions are drawn.\cr \code{select = "contrib 10"} and then the 10 elements that have the highest contribution on the 2 dimensions of your plot are drawn.\cr \code{select = "cos2 5"} and then the 5 elements that have the highest cos2 on the 2 dimensions of your plot are drawn.\cr \code{select = "dist 8"} and then the 8 elements that have the highest distance to the center of gravity are drawn.\cr \cr \code{ggoptions} is a list that gives some ggplot2 options when the graph.type="ggplot" is used. Use for instance ggoptions(list(size=3,title.size=10,bg.color="orange")) if you want to modify the size of the points and labels, the title size and the background color.\cr Below you can see the options and the default values: \cr size = 4, #label size (point size = size/3)\cr point.shape = 19, #points shape\cr line.lty = 2, #origin linetypes (0="blank", 1="solid", 2="dashed", 3="dotted",...)\cr line.lwd = 0, #origin lines width\cr line.color = "black", #origin lines color\cr segment.lty = 1, #arrow linetypes (0="blank", 1="solid", 2="dashed", 3="dotted",...)\cr segment.lwd = 0, #arrow width\cr circle.lty = 1, #circle linetypes (0="blank", 1="solid", 2="dashed", 3="dotted",...)\cr circle.lwd = 0, #circle width\cr circle.color = "black", #circle color\cr low.col.quanti = "blue", #for quantitative variables, low color to be used\cr high.col.quanti = "red3", #for quantitative variables, high color to be used\cr } \value{ Returns the individuals factor map and the variables factor map. } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{PCA}}} \examples{ data(decathlon) res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup = 13) plot(res.pca, habillage = 13, cex=0.8) \dontrun{ plot(res.pca, habillage = "cos2") plot(res.pca, habillage = "100m") plot(res.pca, habillage = c("Competition","100m")) } ## To automatically draw ellipses around the barycentres of the categorical variables plotellipses(res.pca) \dontrun{ ## Selection of some individuals plot(res.pca,select="contrib 7") # plot the 7 individuals with the highest contribution plot(res.pca,select="cos2 0.8") # plot the individuals with cos2 greater than 0.8 plot(res.pca,select="cos2 5") # plot the 5 individuals with the highest cos2 plot(res.pca,choix="var",select="cos2 0.6") # plot the variables with cos2 greater than 0.6 plot(res.pca,habillage="100m", ggoptions=list(low.col.quanti="grey90",high.col.quanti="grey10"),legend=list(x="bottom")) ## You can modify the ggplot graphs as ususal with ggplot2 require(ggplot2) gr <- plot(res.pca) gr + theme(panel.grid.major = element_blank(), plot.title=element_text(size=14, color="blue"), axis.title = element_text(size=12, color="red")) ## To draw classical R graphs plot(res.pca, graph.type = "classic") } } \keyword{dplot} FactoMineR/man/print.GPA.Rd0000644000176200001440000000137214500575664015064 0ustar liggesusers\name{print.GPA} \alias{print.GPA} \title{Print the Generalized Procrustes Analysis (GPA) results} \description{ Print the Generalized Procrustes Analysis (GPA) results. } \usage{ \method{print}{GPA}(x, file = NULL, sep = ";", \dots) } \arguments{ \item{x}{an object of class GPA} \item{file}{A connection, or a character string naming the file to print to. If NULL (the default), the results are not printed in a file} \item{sep}{character string to insert between the objects to print (if the argument file is not NULL} \item{\dots}{further arguments passed to or from other methods} } \author{Elisabeth Morand, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{GPA}}, \code{\link{write.infile}}} \keyword{print} FactoMineR/man/print.PCA.Rd0000644000176200001440000000160614500575665015061 0ustar liggesusers\name{print.PCA} \alias{print.PCA} \title{Print the Principal Component Analysis (PCA) results} \description{ Print the Principal Component Analysis (PCA) results. } \usage{ \method{print}{PCA}(x, file = NULL, sep = ";", \dots) } \arguments{ \item{x}{an object of class PCA} \item{file}{A connection, or a character string naming the file to print to. If NULL (the default), the results are not printed in a file} \item{sep}{character string to insert between the objects to print (if the argument file is not NULL} \item{\dots}{further arguments passed to or from other methods} } \author{Jeremy Mazet, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{PCA}}, \code{\link{write.infile}}} \examples{ \dontrun{ data(decathlon) res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup = 13) print(res.pca, file="c:/essai.csv", sep = ";") } } \keyword{print} FactoMineR/man/predict.FAMD.Rd0000644000176200001440000000115214500576075015453 0ustar liggesusers\name{predict.FAMD} \alias{predict.FAMD} \title{Predict projection for new rows with Factor Analysis of Mixed Data} \description{ Predict the projection of new rows with Factor Analysis of Mixed Data. } \usage{ \method{predict}{FAMD}(object, newdata, \dots) } \arguments{ \item{object}{an object of class FAMD} \item{newdata}{A data frame or a matrix in which to look for variables with which to predict. newdata must contain columns with the same names as the original data.} \item{\dots}{Other options.} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{FAMD}}} FactoMineR/man/predict.MFA.Rd0000644000176200001440000000113314500576075015346 0ustar liggesusers\name{predict.MFA} \alias{predict.MFA} \title{Predict projection for new rows with Multiple Factor Analysis} \description{ Predict the projection of new rows with Multiple Factor Analysis. } \usage{ \method{predict}{MFA}(object, newdata, \dots) } \arguments{ \item{object}{an object of class MFA} \item{newdata}{A data frame or a matrix in which to look for variables with which to predict. newdata must contain columns with the same names as the original data.} \item{\dots}{Other options.} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{MFA}}} FactoMineR/man/summary.MFA.Rd0000644000176200001440000000225114500576075015413 0ustar liggesusers\name{summary.MFA} \alias{summary.MFA} \title{Printing summaries of MFA objects} \description{Printing summaries of multiple factor analysis objects} \usage{ \method{summary}{MFA}(object, nb.dec = 3, nbelements=10, nbind = nbelements, ncp = 3, align.names=TRUE, file="", \dots) } \arguments{ \item{object}{an object of class MFA} \item{nb.dec}{number of decimal printed} \item{nbelements}{number of elements written (groups, variables, categories, ...); use \code{nbelements = Inf} if you want to have all the elements} \item{nbind}{number of individuals written (individuals and supplementary individuals, ...); use \code{nbind = Inf} to have the results for all the individuals and \code{nbind = 0} if you do not want the results for individuals} \item{ncp}{number of dimensions printed} \item{align.names}{boolean, if TRUE the names of the objects are written using the same number of characters} \item{file}{a connection, or a character string naming the file to print to} \item{\dots}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{MFA}}} FactoMineR/man/predict.MCA.Rd0000644000176200001440000000115314500576075015345 0ustar liggesusers\name{predict.MCA} \alias{predict.MCA} \title{Predict projection for new rows with Multiple Correspondence Analysis} \description{ Predict the projection of new rows with Multiple Correspondence Analysis. } \usage{ \method{predict}{MCA}(object, newdata, \dots) } \arguments{ \item{object}{an object of class MCA} \item{newdata}{A data frame or a matrix in which to look for variables with which to predict. newdata must contain columns with the same names as the original data.} \item{\dots}{Other options.} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{MCA}}} FactoMineR/man/reconst.Rd0000644000176200001440000000156514500575665015004 0ustar liggesusers\name{reconst} \alias{reconst} \title{Reconstruction of the data from the PCA, CA or MFA results} \description{ Reconstruct the data from the PCA, CA or MFA results.\cr } \usage{ reconst(res, ncp=NULL)} \arguments{ \item{res}{an object of class PCA, CA or MFA} \item{ncp}{number of dimensions used to reconstitute the data (by default NULL and the number of dimensions calculated for the PCA, CA or MFA is used)} } \value{ Returns a data frame with the number of individuals and the number of variables used for the PCA, CA or MFA } \author{Francois Husson \email{francois.husson@institut-agro.fr}, Julie Josse\email{Julie.Josse@agrocampus-ouest.fr}} \seealso{ \code{\link{PCA}},\code{\link{CA}}, \code{\link{MFA}}} \examples{ data(decathlon) res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup=13, graph=FALSE) rec <- reconst(res.pca,ncp=2) } \keyword{multivariate} FactoMineR/man/decathlon.Rd0000644000176200001440000000143013145527045015250 0ustar liggesusers\name{decathlon} \alias{decathlon} \docType{data} \title{Performance in decathlon (data)} \description{ The data used here refer to athletes' performance during two sporting events. } \usage{data(decathlon)} \format{ A data frame with 41 rows and 13 columns: the first ten columns corresponds to the performance of the athletes for the 10 events of the decathlon. The columns 11 and 12 correspond respectively to the rank and the points obtained. The last column is a categorical variable corresponding to the sporting event (2004 Olympic Game or 2004 Decastar) } \source{ Department of statistics and computer science, Agrocampus Rennes } \examples{ data(decathlon) res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup=13) } \keyword{datasets} FactoMineR/man/catdes.Rd0000644000176200001440000000410514500575664014562 0ustar liggesusers\name{catdes} \alias{catdes} \title{Categories description} \description{ Description of the categories of one factor by categorical variables and/or by quantitative variables } \usage{ catdes(donnee,num.var,proba = 0.05, row.w = NULL, na.method="NA")} \arguments{ \item{donnee}{a data frame made up of at least one categorical variables and a set of quantitative variables and/or categorical variables} \item{num.var}{the indice of the variable to characterized} \item{proba}{the significance threshold considered to characterized the category (by default 0.05)} \item{row.w}{a vector of integers corresponding to an optional row weights (by default, a vector of 1 for uniform row weights)} \item{na.method}{a boolean that says how to manage missing values. If ; if na.method="NA" a new category is considered for the categorical variable; if na.method="na.omit" the missing values are deleted} } \value{ Returns a list including: \item{test.chi}{The categorical variables which characterized the factor are listed in ascending order (from the one which characterized the most the factor to the one which significantly characterized with the proba \code{proba}} \item{category}{description of each category of the \code{num.var} by each category of all the categorical variables} \item{quanti.var}{the global description of the \code{num.var} variable by the quantitative variables with the square correlation coefficient and the p-value of the F-test in a one-way analysis of variance (assuming the hypothesis of homoscedsticity)} \item{quanti}{the description of each category of the \code{num.var} variable by the quantitative variables.} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{plot.catdes}}, \code{\link{condes}}} \references{ Husson, F., Le, S. and Pages, J. (2010). Exploratory Multivariate Analysis by Example Using R, \emph{Chapman and Hall}. Lebart, L., Morineau, A. and Piron, M. (1995) Statistique exploratoire multidimensionnelle, \emph{Dunod}.\cr } \examples{ data(wine) catdes(wine, num.var=2) } \keyword{multivariate} FactoMineR/man/plot.MCA.Rd0000644000176200001440000001467614500576075014707 0ustar liggesusers\name{plot.MCA} \alias{plot.MCA} \title{Draw the Multiple Correspondence Analysis (MCA) graphs} \description{ Draw the Multiple Correspondence Analysis (MCA) graphs. } \usage{ \method{plot}{MCA}(x, axes = c(1, 2), choix=c("ind","var","quanti.sup"), xlim = NULL, ylim = NULL, invisible = c("none","ind","var","ind.sup","quali.sup","quanti.sup"), col.ind = "black", col.var = "red", col.quali.sup = "darkgreen", col.ind.sup = "blue", col.quanti.sup = "blue", label = c("all","none","ind","var","ind.sup","quali.sup","quanti.sup"), title = NULL, habillage = "none", palette = NULL, autoLab = c("auto","yes","no"), new.plot = FALSE, select = NULL, selectMod = NULL, unselect = 0.7, shadowtext = FALSE, legend = list(bty = "y", x = "topleft"), graph.type = c("ggplot","classic"), ggoptions = NULL, \dots) } \arguments{ \item{x}{an object of class MCA} \item{axes}{a length 2 vector specifying the components to plot} \item{choix}{the graph to plot ("ind" for the individuals and the categories, "var" for the variables, "quanti.sup" for the supplementary quantitative variables)} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{invisible}{string indicating if some points should not be drawn ("ind", "var", "ind.sup", "quali.sup", "quanti.sup")} \item{col.ind}{a color for the individuals, if color ="none" the label is not written} \item{col.var}{a color for the categories of categorical variables, if color ="none" the label is not written} \item{col.quali.sup}{a color for the categorical supplementary variables, if color ="none" the label is not written} \item{col.ind.sup}{a color for the supplementary individuals only if there is not habillage, if color ="none" the label is not written} \item{col.quanti.sup}{a color for the supplementary quantitative variables, if color ="none" the label is not written} \item{label}{print the labels of the points; "all" print all the labels; may be a vector with "ind" (for the individuals),"ind.sup" (for the supplementary individuals),"var" (for the active categories), "quali.sup" "var" (for the supplementary categories)} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{habillage}{string corresponding to the color which are used. If "none", one color is used for the individual, another one for the categorical variables; if "quali", one color is used for each categorical variables; else if it is the position of a categorical variable, it colors according to the different categories of this variable} \item{palette}{the color palette used to draw the points. By default colors are chosen. If you want to define the colors : palette=palette(c("black","red","blue")); or you can use: palette=palette(rainbow(30)), or in black and white for example: palette=palette(gray(seq(0,.9,len=25)))} \item{autoLab}{if \code{autoLab="auto"}, \code{autoLab} is equal to "yes" if there are less than 50 elements and "no" otherwise; if "yes", the labels of the drawn elements are placed in a "good" way (can be time-consuming if many elements), and if "no" the elements are placed quickly but may overlap} \item{new.plot}{boolean, if TRUE, a new graphical device is created} \item{select}{a selection of the elements that are drawn; see the details section} \item{selectMod}{a selection of the categories that are drawn; see the details section} \item{unselect}{may be either a value between 0 and 1 that gives the transparency of the unselected objects (if \code{unselect=1} the transparceny is total and the elements are not drawn, if \code{unselect=0} the elements are drawn as usual but without any label) or may be a color (for example \code{unselect="grey60"})} \item{shadowtext}{boolean; if true put a shadow on the labels (rectangles are written under the labels which may lead to difficulties to modify the graph with another program)} \item{legend}{a list of arguments that defines the legend if needed (when individuals are drawn according to a variable); see the arguments of the function \code{legend}} \item{graph.type}{a character that gives the type of graph used: "ggplot" or "classic"} \item{ggoptions}{a list that gives the graph options when grah.type="ggplot" is used. See the optines and the default values in the details section} \item{\dots}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \details{ The argument \code{autoLab = "yes"} is time-consuming if there are many labels that overlap. In this case, you can modify the size of the characters in order to have less overlapping, using for example cex=0.7.\cr The \code{select} argument can be used in order to select a part of the elements (individuals if you draw the graph of individuals, or variables if you draw the graph of variabless) that are drawn. For example, you can use:\cr \code{select = 1:5} and then the elements 1:5 are drawn.\cr \code{select = c("name1","name5")} and then the elements that have the names name1 and name5 are drawn.\cr \code{select = "coord 10"} and then the 10 elements that have the highest (squared) coordinates on the 2 chosen dimensions are drawn.\cr \code{select = "contrib 10"} and then the 10 elements that have the highest contribution on the 2 dimensions of your plot are drawn.\cr \code{select = "cos2 5"} and then the 5 elements that have the highest cos2 on the 2 dimensions of your plot are drawn.\cr \code{select = "dist 8"} and then the 8 elements that have the highest distance to the center of gravity are drawn.\cr The \code{selectMod} argument can be used in order to select the categories that are drawn. } \value{ Returns the individuals factor map and the variables factor map. } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{MCA}}} \examples{ data (poison) res.mca = MCA (poison, quali.sup = 3:4, quanti.sup = 1:2, graph=FALSE) plot(res.mca,invisible=c("var","quali.sup")) plot(res.mca,invisible="ind") plot(res.mca,choix="var") plot(res.mca,invisible=c("ind"), selectMod="cos2 10") \dontrun{ plot(res.mca, selectMod="cos2 5", select="cos2 5") ## You can modify the ggplot graphs as ususal with ggplot2 require(ggplot2) gr <- plot(res.mca) gr + theme(panel.grid.major = element_blank(), plot.title=element_text(size=14, color="blue"), axis.title = element_text(size=12, color="red")) } } \keyword{dplot} FactoMineR/man/AovSum.Rd0000644000176200001440000000224014500576075014524 0ustar liggesusers\name{AovSum} \alias{AovSum} \title{Analysis of variance with the contrasts sum (the sum of the coefficients is 0)} \description{ Analysis of variance with the contrasts sum (the sum of the coefficients is 0) \cr Test for all the coefficients\cr Handle missing values } \usage{ AovSum(formula, data, na.action = na.omit, ...) } \arguments{ \item{formula}{the formula for the model 'y~x1+x2+x1:x2'} \item{data}{a data-frame} \item{na.action}{(where relevant) information returned by model.frame on the special handling of NAs.} \item{\dots}{other arguments, cf the function \code{lm}} } \value{ Retourne des objets \item{Ftest}{a table with the F-tests} \item{Ttest}{a table with the t-tests} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{aov}}, \code{\link{lm}}} \examples{ ## Example two-way anova data(senso) res <- AovSum(Score~ Product + Day , data=senso) res ## Example two-way anova with interaction data(senso) res2 <- AovSum(Score~ Product + Day + Product : Day, data=senso) res2 ## Example ancova data(footsize) res3 <- AovSum(footsize ~ size + sex + size : sex, data=footsize) res3 } \keyword{models} FactoMineR/man/plot.HMFA.Rd0000644000176200001440000000435714500575664015020 0ustar liggesusers\name{plot.HMFA} \alias{plot.HMFA} \title{Draw the Hierarchical Multiple Factor Analysis (HMFA) graphs} \description{Draw the Hierarchical Multiple Factor Analysis (HMFA) graphs} \usage{ \method{plot}{HMFA}(x, axes = c(1,2),num=6, choix = "ind", lab.grpe = TRUE, lab.var = TRUE, lab.ind.moy = TRUE, invisible = NULL, lim.cos2.var = 0., xlim = NULL, ylim = NULL, cex = 1, title = NULL, new.plot = FALSE, \dots) } \arguments{ \item{x}{an object of class HMFA} \item{axes}{a length 2 vector specifying the components to plot} \item{num}{number of grpahs in a same windows} \item{choix}{a string corresponding to the graph that you want to do ("ind" for the individual or categorical variables graph, "var" for the quantitative variables graph, "axes" for the graph of the partial axes, "group" for the groups representation)} \item{lab.grpe}{boolean, if TRUE, the label of the groups are drawn} \item{lab.var}{boolean, if TRUE, the label of the variables are drawn} \item{lab.ind.moy}{boolean, if TRUE, the label of the mean points are drawn} \item{invisible}{list of string; for choix ="ind", the individuals can be omit (invisible = "ind"), or the centers of gravity of the categorical variables (invisible= "quali")} \item{lim.cos2.var}{value of the square cosinus under with the points are not drawn} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{cex}{cf. function \code{\link{par}} in the \pkg{graphics} package} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{new.plot}{boolean, if TRUE, a new graphical device is created} \item{\dots}{further arguments passed to or from other methods} } \value{ Returns the individuals factor map and the variables factor map. } \author{Jeremy Mazet, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{HMFA}}} \examples{ data(wine) hierar <- list(c(2,5,3,10,9,2), c(4,2)) res.hmfa <- HMFA(wine, H = hierar, type=c("n",rep("s",5)), graph = FALSE) plot(res.hmfa, invisible="quali") plot(res.hmfa, invisible="ind") } \keyword{dplot} FactoMineR/man/gpa.Rd0000644000176200001440000000634211710531461014056 0ustar liggesusers\name{GPA} \alias{GPA} \title{Generalised Procrustes Analysis} \description{ Performs Generalised Procrustes Analysis (GPA) that takes into account missing values. } \usage{ GPA(df, tolerance=10^-10, nbiteration=200, scale=TRUE, group, name.group = NULL, graph = TRUE, axes = c(1,2)) } \arguments{ \item{df}{a data frame with \emph{n} rows (individuals) and \emph{p} columns (quantitative varaibles)} \item{tolerance}{a threshold with respect to which the algorithm stops, i.e. when the difference between the GPA loss function at step \emph{n} and \emph{n+1} is less than \code{tolerance}} \item{nbiteration}{the maximum number of iterations until the algorithm stops} \item{scale}{a boolean, if TRUE (which is the default value) scaling is required} \item{group}{a vector indicating the number of variables in each group} \item{name.group}{a vector indicating the name of the groups (the groups are successively named group.1, group.2 and so on, by default)} \item{graph}{boolean, if TRUE a graph is displayed} \item{axes}{a length 2 vector specifying the components to plot} } \details{ Performs a Generalised Procrustes Analysis (GPA) that takes into account missing values: some data frames of \code{df} may have non described or non evaluated rows, i.e. rows with missing values only.\cr The algorithm used here is the one developed by Commandeur. } \value{ A list containing the following components: \item{RV}{a matrix of RV coefficients between partial configurations} \item{RVs}{a matrix of standardized RV coefficients between partial configurations} \item{simi}{a matrix of Procrustes similarity indexes between partial configurations} \item{scaling}{a vector of isotropic scaling factors} \item{dep}{an array of initial partial configurations } \item{consensus}{a matrix of consensus configuration} \item{Xfin}{an array of partial configurations after transformations} \item{correlations}{correlation matrix between initial partial configurations and consensus dimensions} \item{PANOVA}{a list of "Procrustes Analysis of Variance" tables, per assesor (config), per product(objet), per dimension (dimension)} } \references{ Commandeur, J.J.F (1991) \emph{Matching configurations}.DSWO press, Leiden University.\cr Dijksterhuis, G. & Punter, P. (1990) Interpreting generalized procrustes analysis "Analysis of Variance" tables, \emph{Food Quality and Preference}, \bold{2}, 255--265\cr Gower, J.C (1975) Generalized Procrustes analysis, \emph{Psychometrika}, \bold{40}, 33--50 \cr Kazi-Aoual, F., Hitier, S., Sabatier, R., Lebreton, J.-D., (1995) Refined approximations to permutations tests for multivariate inference. Computational Statistics and Data Analysis, \bold{20}, 643--656 \cr Qannari, E.M., MacFie, H.J.H, Courcoux, P. (1999) Performance indices and isotropic scaling factors in sensory profiling, \emph{Food Quality and Preference}, \bold{10}, 17--21 } \author{Elisabeth Morand} \examples{ \dontrun{ data(wine) res.gpa <- GPA(wine[,-(1:2)], group=c(5,3,10,9,2), name.group=c("olf","vis","olfag","gust","ens")) ### If you want to construct the partial points for some individuals only plotGPApartial (res.gpa) } } \keyword{multivariate} FactoMineR/man/prefpls.Rd0000644000176200001440000000346114500575664014776 0ustar liggesusers\name{prefpls} \alias{prefpls} \title{Scatter plot and additional variables with quality of representation contour lines} \description{ This function is useful to interpret the usual graphs $(x,y)$ with additional quantitative variables. } \usage{ prefpls(donnee, var1 = 1, var2 = 2, firstvar = 3, lastvar = ncol(donnee), levels = c(0.2,0.4,0.6,0.7,0.8,0.9,1), asp = 1, nbchar = max(nchar(colnames(donnee))), title = NULL, choix="var") } \arguments{ \item{donnee}{a data frame made up of quantitative variables} \item{var1}{the position of the variable corresponding to the x-axis} \item{var2}{the position of the variable corresponding to the y-axis} \item{firstvar}{the position of the first endogenous variable} \item{lastvar}{the position of the last endogenous variable (by default the last column of \code{donnee})} \item{levels}{a list of the levels displayed in the graph of variables} \item{asp}{aspect ratio for the graph of the individuals} \item{nbchar}{the number of characters used for the labels of the variables} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{choix}{the graph to plot ("ind" for the individuals, "var" for the variables)} } \details{ This function is very useful when there is a strong correlation between two variables \emph{x} and \emph{y} } \value{ A scatter plot of the invividuals\cr A graph with additional variables and the quality of representation contour lines. } \references{ Husson, F. & Pages, J. (2005). Scatter plot and additional variables. \emph{Journal of applied statistics}} \author{Francois Husson \email{francois.husson@institut-agro.fr}} \examples{ data(decathlon) prefpls(decathlon[,c(11,12,1:10)]) } \keyword{dplot} FactoMineR/man/plot.catdes.Rd0000644000176200001440000000534414500576075015542 0ustar liggesusers\name{plot.catdes} \alias{plot.catdes} \title{Plots for description of clusters (catdes)} \description{ Plots a graph from a catdes output.} \usage{ \method{plot}{catdes}(x, show="all",output=c("figure","dt") , level=0.01, sort=NULL, col.upper="indianred2", col.lower="royalblue1", numchar = 10, barplot = FALSE,cex.names=1, \dots) } \arguments{ \item{x}{A catdes object, see \code{\link{catdes}} for details.} \item{show}{a string. If "quali", only the categorical variables are used. If "quanti", only the the quantitative variables are used. If "all", both quali and quanti are used. If "quanti.var" is used the characterization of the quantitative variables is given; if "test.chi2" is used the characterization of the qualitative variables is given.} \item{output}{string: "dt" for a datatable or "figure" for a figure} \item{level}{a positive float. Indicates a critical value the p-value.} \item{sort}{NULL (default) or an integer between 1 and the number of clusters or a character (the name of a group). If it is an integer or the name of a group, the features are sorted according to their significances in the construction of the given cluster.} \item{col.upper}{The color used for under-represented features.} \item{col.lower}{The color used for over-represented features.} \item{numchar}{number of characters for the labels} \item{barplot}{a boolean; if true a barplot per category is drawn, else a table} \item{cex.names}{the magnification to be used for the names} \item{\dots}{further arguments passed to or from other methods} } \value{ if barplot is true, a barplot is drawn per category with variables that significantly describe the category.\cr If barplot is false; it returns a grid. The rows stand for the clusters and the columns for the significant variables. A cell colored in col.lower (resp. col.upper) i.e. by default in blue (resp. red) for a quantitative variable means that the average value of the variable in the given cluster is significantly lower (resp. higher) than in the overall data. A cell colored in col.lower (resp. col.upper) for a categorical variable means that the given value of the variable is significantly under-represented (resp. over-represented) in the given cluster than in the overall data. The degree of transparency of the color also indicates the significance of the difference between the behavior of the variable in the given cluster and in the overall data. Indeed, the more transparent the cell is, the less significant the difference is. } \author{Guillaume Le Ray, Camille Chanial, Elise Dumas, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{catdes}}} \examples{ \dontrun{ data(wine) res.c=catdes(wine, num.var=2) plot(res.c) } } \keyword{dplot} FactoMineR/man/desfreq.Rd0000644000176200001440000000254414500575664014755 0ustar liggesusers\name{descfreq} \alias{descfreq} \title{Description of frequencies} \description{ Description of the rows of a contingency table or of groups of rows of a contingency table } \usage{ descfreq(donnee, by.quali = NULL, proba = 0.05)} \arguments{ \item{donnee}{a data frame corresponding to a contingency table (quantitative data)} \item{by.quali}{a factor used to merge the data from different rows of the contingency table; by default NULL and each row is characterized} \item{proba}{the significance threshold considered to characterized the category (by default 0.05)} } \value{ Returns a list with the characterization of each rows or each group of the \code{by.quali}. A test corresponding to the hypergeometric distribution is performed and the probability to observe a more extreme value than the one observed is calculated. For each row (or category), each of the columns characterising the row are sorted in ascending order of p-value. } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{catdes}}, \code{\link{condes}}, \code{\link{textual}}} \references{ Lebart, L., Morineau, A. and Piron, M. (1995) Statistique exploratoire multidimensionnelle, \emph{Dunod}.\cr } \examples{ data(children) descfreq(children[1:14,1:5]) ## desc of rows descfreq(t(children[1:14,1:5])) ## desc of columns } \keyword{multivariate} FactoMineR/man/coeffRV.Rd0000644000176200001440000000366514500575664014663 0ustar liggesusers\name{coeffRV} \alias{coeffRV} \title{Calculate the RV coefficient and test its significance} \description{ Calculate the RV coefficient and test its significance. } \usage{ coeffRV(X, Y) } \arguments{ \item{X}{a matrix with \emph{n} rows (individuals) and \emph{p} numerous columns (variables)} \item{Y}{a matrix with \emph{n} rows (individuals) and \emph{p} numerous columns (variables)} } \details{ Calculates the RV coefficient between \code{X} and \code{Y}. It returns also the standardized RV, the expectation, the variance and the skewness under the permutation distribution. These moments are used to approximate the exact distribution of the RV statistic with the Pearson type III approximation and the p-value associated to this test is given. } \value{ A list containing the following components: \item{RV}{the RV coefficient between the two matrices} \item{RVs}{the standardized RV coefficients} \item{mean}{the mean of the RV permutation distribution} \item{variance}{the variance of the RV permutation distribution} \item{skewness}{the skewness of the RV permutation distribution} \item{p.value}{the p-value associated to the test of the significativity of the RV coefficient (with the Pearson type III approximation} } \references{ Escouffier, Y. (1973) \emph{Le traitement des variables vectorielles}. Biometrics \bold{29} 751--760.\cr Josse, J., Husson, F., Pag\`es, J. (2007) \emph{Testing the significance of the RV coefficient}. Computational Statististics and Data Analysis. \bold{53} 82--91.\cr Kazi-Aoual, F., Hitier, S., Sabatier, R., Lebreton, J.-D., (1995) Refined approximations to permutations tests for multivariate inference. Computational Statistics and Data Analysis, \bold{20}, 643--656 \cr } \author{Julie Josse, Francois Husson \email{francois.husson@institut-agro.fr}} \examples{ data(wine) X <- wine[,3:7] Y <- wine[,11:20] coeffRV(X,Y) } \keyword{multivariate} FactoMineR/man/print.condes.Rd0000644000176200001440000000075514500575664015734 0ustar liggesusers\name{print.condes} \alias{print.condes} \title{Print the condes results} \description{ Print the results of the function condes. } \usage{ \method{print}{condes}(x, \dots) } \arguments{ \item{x}{an object of class condes} \item{\dots}{further arguments passed to or from other methods} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{condes}}} \examples{ \dontrun{ data(wine) res <- condes(wine, num.var=3) print(res) } } \keyword{print} FactoMineR/man/geomorphology.Rd0000644000176200001440000000116512535275104016204 0ustar liggesusers\name{geomorphology} \alias{geomorphology} \docType{data} \title{geomorphology(data)} \description{ The data used here concern a geomorphology analysis. } \usage{data(geomorphology)} \format{ A data frame with 75 rows and 11 columns. Rows represent the individuals, columns represent the different questions. 10 variables are quantitative and one variable is qualitative. The dataset is analysed in: http://www.sciencedirect.com/science/article/pii/S0169555X11006362 } \examples{ \dontrun{ data(geomorphology) res <- FAMD(geomorphology) plot(res,choix="ind",habillage=4) } } \keyword{datasets} FactoMineR/man/footsize.Rd0000644000176200001440000000072312073040474015150 0ustar liggesusers\name{footsize} \alias{footsize} \docType{data} \title{footsize} \description{ Dataset for the covariance analysis (a quantitative variable explained by quantitative (continuous) and qualitative (categorical) variables) } \usage{data(footsize)} \format{ Dataset with 84 rows and 3 columns: footsize, size and sex} \examples{ data(footsize) res3 <- AovSum (footsize ~ size + sex + size :sex, data=footsize) res3 } \keyword{datasets} FactoMineR/man/children.Rd0000644000176200001440000000137513145526704015110 0ustar liggesusers\name{children} \alias{children} \docType{data} \title{Children (data)} \description{ The data used here is a contingency table that summarizes the answers given by different categories of people to the following question : according to you, what are the reasons that can make hesitate a woman or a couple to have children? } \usage{data(children)} \format{ A data frame with 18 rows and 8 columns. Rows represent the different reasons mentioned, columns represent the different categories (education, age) people belong to. } \source{ Traitements Statistiques des Enquetes (D. Grange, L. Lebart, eds.) Dunod, 1993 } \examples{ data(children) res.ca <- CA (children, row.sup = 15:18, col.sup = 6:8) } \keyword{datasets} FactoMineR/man/predict.LinearModel.Rd0000644000176200001440000000174214500576075017144 0ustar liggesusers\name{predict.LinearModel} \alias{predict.LinearModel} \title{Predict method for Linear Model Fits} \description{ Predicted values based on LinearModel object. } \usage{ \method{predict}{LinearModel}(object, newdata, interval = c("none", "confidence", "prediction"), level = 0.95, type = c("response", "terms"), \dots) } \arguments{ \item{object}{Object of class inheriting from "LinearModel"} \item{newdata}{An optional data frame in which to look for variables with which to predict. If omitted, the fitted values are used.} \item{interval}{Type of interval calculation. Can be abbreviated.} \item{level}{Tolerance/confidence level.} \item{type}{Type of prediction (response or model term). Can be abbreviated.} \item{\dots}{further arguments passed to or from other methods such as \code{lm}.} } \details{ See the help of \code{\link{predict.lm}} function. } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{LinearModel}}} FactoMineR/man/plot.GPApartial.Rd0000644000176200001440000000441314500575664016262 0ustar liggesusers\name{plotGPApartial} \alias{plotGPApartial} \title{Draw an interactive General Procrustes Analysis (GPA) map} \description{ Draw an interactive General Procrustes Analysis (GPA) map. The graph is interactive and clicking on a point will draw the partial points, if you click on a point for which the partial points are yet drawn, the partial points are deleted. To stop the interactive plot, click on the title (or in the top of the graph) } \usage{ plotGPApartial(x, axes = c(1, 2), lab.ind.moy = TRUE, habillage = "ind", chrono = FALSE, draw.partial = NULL, xlim = NULL, ylim = NULL, cex = 1, title = NULL, palette = NULL, \dots) } \arguments{ \item{x}{an object of class GPA} \item{axes}{a length 2 vector specifying the components to plot} \item{lab.ind.moy}{boolean, if TRUE, the label of the mean points are drawn} \item{habillage}{string corresponding to the color which are used. If "ind", one color is used for each individual; if "group" the individuals are colored according to the group} \item{chrono}{boolean, if TRUE, the partial points of a same point are linked (useful when groups correspond to different moment)} \item{draw.partial}{data frame of a boolean variable for all the individuals and all the centers of gravity and with for which the partial points should be drawn (by default, NULL and no partial points are drawn)} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{cex}{cf. function \code{\link{par}} in the \pkg{graphics} package} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{palette}{the color palette used to draw the points. By default colors are chosen. If you want to define the colors : palette=palette(c("black","red","blue")); or you can use: palette=palette(rainbow(30)), or in black and white for example: palette=palette(gray(seq(0,.9,len=25)))} \item{\dots}{further arguments passed to or from other methods} } \value{ Returns the General Procrustes Analysis map. } \author{Elisabeth Morand, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{GPA}}} \keyword{dplot} FactoMineR/man/poison.Rd0000644000176200001440000000074713507075212014624 0ustar liggesusers\name{poison} \alias{poison} \docType{data} \title{Poison} \description{ The data used here refer to a survey carried out on a sample of children of primary school who suffered from food poisoning. They were asked about their symptoms and about what they ate. } \usage{data(poison)} \format{ A data frame with 55 rows and 15 columns. } \examples{ \dontrun{ data(poison) res.mca <- MCA(poison, quanti.sup = 1:2, quali.sup=c(3,4)) } } \keyword{datasets} FactoMineR/man/milk.Rd0000644000176200001440000000063412073037705014246 0ustar liggesusers\name{milk} \alias{milk} \docType{data} \title{milk} \description{ Dataset to illustrate the selection of variables in regression } \usage{data(milk)} \format{ Dataset with 85 rows and 6 columns : 85 milks described by the 5 variables: density, fat content, protein, casein, dry, yield} \examples{ data(milk) res = RegBest(y=milk[,6],x=milk[,-6]) res$best } \keyword{datasets} FactoMineR/man/JO.Rd0000644000176200001440000000120311432224603013604 0ustar liggesusers\name{JO} \alias{JO} \docType{data} \title{Number of medals in athletism during olympic games per country} \description{ This data frame is a contengency table with the athletism events (in row) and the coutries (in columns). Each cell gives the number of medals obtained during the 5 olympis games from 1992 to 2008 (Barcelona 1992, Atlanta 1996, Sydney 2000, Athens 2004, Beijing 2008). } \usage{data(JO)} \format{ A data frame with the 24 events in athletism and in colum the 58 countries who obtained at least on medal } \examples{ \dontrun{ data(JO) res.ca <- CA(JO) res.ca <- CA(JO, axes = 3:4) } } \keyword{datasets} FactoMineR/man/summary.CA.Rd0000644000176200001440000000162614500576075015300 0ustar liggesusers\name{summary.CA} \alias{summary.CA} \title{Printing summeries of ca objects} \description{Printing summaries of correspondence analysis objects} \usage{ \method{summary}{CA}(object, nb.dec = 3, nbelements=10, ncp = 3, align.names=TRUE, file="", \dots) } \arguments{ \item{object}{an object of class CA} \item{nb.dec}{number of decimal printed} \item{nbelements}{number of elements written (rows, columns, ...) ; use \code{nbelements = Inf} if you want to have all the elements} \item{ncp}{number of dimensions printed} \item{align.names}{boolean, if TRUE the names of the objects are written using the same number of characters} \item{file}{a connection, or a character string naming the file to print to} \item{\dots}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{CA}}} FactoMineR/man/estim_ncp.Rd0000644000176200001440000000254614500575664015307 0ustar liggesusers\name{estim_ncp} \alias{estim_ncp} \title{Estimate the number of components in Principal Component Analysis} \description{ Estimate the number of components in PCA . } \usage{ estim_ncp(X, ncp.min=0, ncp.max=NULL, scale=TRUE, method="GCV") } \arguments{ \item{X}{a data frame with continuous variables} \item{ncp.min}{minimum number of dimensions to interpret, by default 0} \item{ncp.max}{maximum number of dimensions to interpret, by default NULL which corresponds to the number of columns minus 2} \item{scale}{a boolean, if TRUE (value set by default) then data are scaled to unit variance} \item{method}{method used to estimate the number of components, "GCV" for the generalized cross-validation approximation or "Smooth" for the smoothing method (by default "GCV")} } \value{ Returns ncp the best number of dimensions to use (find the minimum or the first local minimum) and the mean error for each dimension tested } \author{Francois Husson \email{francois.husson@institut-agro.fr}, Julie Josse\email{Julie.Josse@agrocampus-ouest.fr}} \references{Josse, J. and Husson, F. (2012). Selecting the number of components in PCA using cross-validation approximations. Computational Statistics and Data Analysis, 56, 1869-1879. } \seealso{ \code{\link{PCA}}} \examples{ data(decathlon) nb.dim <- estim_ncp(decathlon[,1:10],scale=TRUE) } \keyword{multivariate} FactoMineR/man/summary.MCA.Rd0000644000176200001440000000224714500576075015415 0ustar liggesusers\name{summary.MCA} \alias{summary.MCA} \title{Printing summeries of MCA objects} \description{Printing summaries of multiple correspondence analysis objects} \usage{ \method{summary}{MCA}(object, nb.dec = 3, nbelements=10, nbind=nbelements, ncp = 3, align.names=TRUE, file="", \dots) } \arguments{ \item{object}{an object of class MCA} \item{nb.dec}{number of decimal printed} \item{nbelements}{number of elements written (variables, categories, ...); use \code{nbelements = Inf} if you want to have all the elements} \item{nbind}{number of individuals written (individuals and supplementary individuals, ...); use \code{nbind = Inf} to have the results for all the individuals and \code{nbind = 0} if you do not want the results for individuals} \item{ncp}{number of dimensions printed} \item{align.names}{boolean, if TRUE the names of the objects are written using the same number of characters} \item{file}{a connection, or a character string naming the file to print to} \item{\dots}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{MCA}}} FactoMineR/man/summary.FAMD.Rd0000644000176200001440000000225314500576075015521 0ustar liggesusers\name{summary.FAMD} \alias{summary.FAMD} \title{Printing summeries of FAMD objects} \description{Printing summaries of factor analysis on mixed data objects} \usage{ \method{summary}{FAMD}(object, nb.dec = 3, nbelements=10, nbind=nbelements, ncp = 3, align.names=TRUE , file="", \dots) } \arguments{ \item{object}{an object of class FAMD} \item{nb.dec}{number of decimal printed} \item{nbelements}{number of elements written (variables, categories, ...); use \code{nbelements = Inf} if you want to have all the elements} \item{nbind}{number of individuals written (individuals and supplementary individuals, ...); use \code{nbind = Inf} to have the results for all the individuals and \code{nbind = 0} if you do not want the results for individuals} \item{ncp}{number of dimensions printed} \item{align.names}{boolean, if TRUE the names of the objects are written using the same number of characters} \item{file}{a connection, or a character string naming the file to print to} \item{\dots}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{FAMD}}} FactoMineR/man/plot.MFA.Rd0000644000176200001440000002017314535546303014676 0ustar liggesusers\name{plot.MFA} \alias{plot.MFA} \title{Draw the Multiple Factor Analysis (MFA) graphs} \description{ Draw the Multiple Factor Analysis (MFA) graphs. } \usage{ \method{plot}{MFA}(x, axes = c(1, 2), choix = c("ind","var","group","axes","freq"), ellipse=NULL, ellipse.par=NULL, lab.grpe=TRUE, lab.var=TRUE, lab.ind=TRUE, lab.par=FALSE, lab.col=TRUE, ncp=2, habillage="group", col.hab=NULL, invisible = c("none","ind","ind.sup","quanti","quanti.sup", "quali","quali.sup","row","row.sup","col","col.sup"), partial = NULL, lim.cos2.var = 0., chrono = FALSE, xlim = NULL, ylim = NULL, title = NULL, palette = NULL, autoLab = c("auto","yes","no"), new.plot = FALSE, select = NULL, unselect = 0.7, shadowtext = FALSE, legend = list(bty = "y", x = "topleft"), graph.type = c("ggplot","classic"), ggoptions = NULL, \dots) } \arguments{ \item{x}{an object of class MFA} \item{choix}{a string corresponding to the graph that you want to do ("ind" for the individual or categorical variables graph, "var" for the quantitative variables graph, "freq" for the frequence or contingency tables, "axes" for the graph of the partial axes, "group" for the groups representation)} \item{axes}{a length 2 vector specifying the components to plot} \item{ellipse}{boolean (NULL by default), if not null, draw ellipses around the individuals, and use the results of \code{coord.ellipse}} \item{ellipse.par}{boolean (NULL by default), if not null, draw ellipses around the partial individuals, and use the results of \code{coord.ellipse}} \item{lab.grpe}{boolean, if TRUE, the labels of the groups are drawn} \item{lab.var}{boolean, if TRUE, the labels of the variables are drawn} \item{lab.ind}{boolean, if TRUE, the labels of the mean points are drawn} \item{lab.par}{boolean, if TRUE, the labels of the partial points are drawn} \item{lab.col}{boolean, if TRUE, the labels of the columns for the contingency tables are drawn} \item{ncp}{number of principal components drawn for the separate analyses for the graph of the partial axes} \item{habillage}{string corresponding to the color which are used. If "ind", one color is used for each individual; if "group" the individuals are colored according to the group; else if it is the name or the position of a categorical variable, it colors according to the different categories of this variable} \item{col.hab}{the colors to use. By default, colors are chosen} \item{invisible}{list of string; for choix ="ind", the individuals can be omit (invisible = "ind"), or supplementary individuals (invisible="ind.sup") or the center of gravity of the categorical variables (invisible= "quali" or "quali.sup" for the supplementary categories); if invisible = c("ind","ind.sup"), just the centers of gravity are drawn; if choix="var", invisible="quanti" suppress the active variable and invisible = "quanti.sup" suppress the supplementary variables} \item{partial}{list of the individuals or of the center of gravity for which the partial points should be drawn (by default, partial = NULL and no partial points are drawn)} \item{lim.cos2.var}{value of the square cosinus under with the points are not drawn} \item{chrono}{boolean, if TRUE, the partial points of a same point are linked (useful when groups correspond to different moment)} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{palette}{the color palette used to draw the points. By default colors are chosen. If you want to define the colors : palette=palette(c("black","red","blue")); or you can use: palette=palette(rainbow(30)), or in black and white for example: palette=palette(gray(seq(0,.9,len=25)))} \item{autoLab}{if \code{autoLab="auto"}, \code{autoLab} is equal to "yes" if there are less than 50 elements and "no" otherwise; if "yes", the labels of the drawn elements are placed in a "good" way (can be time-consuming if many elements), and if "no" the elements are placed quickly but may overlap} \item{new.plot}{boolean, if TRUE, a new graphical device is created} \item{select}{a selection of the elements that are drawn; see the details section} \item{unselect}{may be either a value between 0 and 1 that gives the transparency of the unselected objects (if \code{unselect=1} the transparceny is total and the elements are not drawn, if \code{unselect=0} the elements are drawn as usual but without any label) or may be a color (for example \code{unselect="grey60"})} \item{shadowtext}{boolean; if true put a shadow on the labels (rectangles are written under the labels which may lead to difficulties to modify the graph with another program)} \item{legend}{a list of arguments that defines the legend if needed (when individuals are drawn according to a variable); see the arguments of the function \code{legend}} \item{graph.type}{a character that gives the type of graph used: "ggplot" or "classic"} \item{ggoptions}{a list that gives the graph options when grah.type="ggplot" is used. See the optines and the default values in the details section} \item{\dots}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \details{ The argument \code{autoLab = "yes"} is time-consuming if there are many labels that overlap. In this case, you can modify the size of the characters in order to have less overlapping, using for example cex=0.7.\cr The \code{select} argument can be used in order to select a part of the elements (individuals if you draw the graph of individuals, or variables if you draw the graph of variabless) that are drawn. For example, you can use:\cr \code{select = 1:5} and then the elements 1:5 are drawn.\cr \code{select = c("name1","name5")} and then the elements that have the names name1 and name5 are drawn.\cr \code{select = "coord 10"} and then the 10 elements (individuals, variables, frequencies) that have the highest (squared) coordinates on the 2 chosen dimensions are drawn.\cr \code{select = "contrib 10"} and then the 10 elements (individuals, variables, frequencies) that have the highest contribution on the 2 dimensions of your plot are drawn.\cr \code{select = "cos2 5"} and then the 5 elements (individuals, variables, frequencies) that have the highest cos2 on the 2 dimensions of your plot are drawn.\cr \code{selectMod = "contrib 5"}, the 5 categories that contribute the most to the two dimensions are drawn.\cr \code{selectMod = "cos2 0.5"}, the categories that have a cos2 greater than 0.5 on the two dimensions are drawn.\cr \code{selectMod = "v.test 2"}, the categories that have a v.test higher than the value on one of the two dimensions are drawn.\cr } \value{ Returns the individuals factor map and the variables factor map. } \author{Francois Husson \email{francois.husson@institut-agro.fr}, Jeremy Mazet} \seealso{ \code{\link{MFA}}} \examples{ \dontrun{ data(wine) res <- MFA(wine,group=c(2,5,3,10,9,2),type=c("n",rep("s",5)),ncp=5, name.group=c("orig","olf","vis","olfag","gust","ens"), num.group.sup=c(1,6),graph=FALSE) plot(res, choix = "ind") plot(res, choix = "ind", partial="all") plot(res, choix = "ind", habillage="Label") plot(res, choix = "var", habillage="group") plot(res, choix = "axes") data(wine) res <- MFA(wine, group=c(2,5,3,10,9,2), type=c("n",rep("s",5)), ncp=5, name.group=c("orig","olf","vis","olfag","gust","ens"), num.group.sup=c(1,6)) summary(res) barplot(res$eig[,1],main="Eigenvalues",names.arg=1:nrow(res$eig)) #### Confidence ellipses around categories per variable plotellipses(res) plotellipses(res,keepvar="Label") ## for 1 variable #### Interactive graph liste = plotMFApartial(res) plot(res,choix="ind",habillage = "Terroir") ###Example with groups of categorical variables data (poison) MFA(poison, group=c(2,2,5,6), type=c("s","n","n","n"), name.group=c("desc","desc2","symptom","eat"), num.group.sup=1:2) ###Example with groups of frequency tables data(mortality) res<-MFA(mortality,group=c(9,9),type=c("f","f"), name.group=c("1979","2006")) } } \keyword{dplot} FactoMineR/man/plot.CaGalt.Rd0000644000176200001440000001172012430601523015410 0ustar liggesusers\name{plot.CaGalt} \alias{plot.CaGalt} \title{Draw the Correspondence Analysis on Generalised Aggregated Lexical Table (CaGalt) graphs} \description{ Plot the graphs for a Correspondence Analysis on Generalised Aggregated Lexical Table (CaGalt). } \usage{ \method{plot}{CaGalt}(x, axes = c(1, 2), choix = c("ind", "freq", "quali.var", "quanti.var"), conf.ellip = FALSE, contr.ellipse = 3, xlim = NULL, ylim = NULL, col.ind = "black", col.freq = "darkred", col.quali = "blue", col.quanti = "blue", label = TRUE, lim.cos2.var = 0, title = NULL, palette = NULL, autoLab = c("auto", "yes", "no"), new.plot = FALSE, select = NULL, unselect = 0.7, shadowtext = FALSE, \ldots) } \arguments{ \item{x}{an object of class CaGalt} \item{axes}{a length 2 vector specifying the components to plot} \item{choix}{the graph to plot ("ind" for the individuals, "freq" for the frequencies, "quali.var" for the categorical variables, "quanti.var" for the quantitative variables)} \item{conf.ellip}{boolean (FALSE by default), if TRUE, draw ellipses around the frequencies and the variables} \item{contr.ellipse}{the confidence ellipses were drawn for the frequencies with a contribution higher than X times of mean contribution on the 2 dimensions of your plot (by default 3)} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{col.ind}{a color for the individuals (by default "black")} \item{col.freq}{a color for the frequencies (by default "darkred")} \item{col.quali}{a color for the categories of categorical variables (by default "blue")} \item{col.quanti}{a color for the quantitative variables (by default "blue")} \item{label}{the labels are drawn (by default TRUE)} \item{lim.cos2.var}{value of the square cosinus under the variables are not drawn} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{palette}{the color palette used to draw the points. By default colors are chosen. If you want to define the colors : palette=palette(c("black","red","blue")); or you can use: palette=palette(rainbow(30)), or in black and white for example: palette=palette(gray(seq(0,.9,len=25)))} \item{autoLab}{if autoLab="auto", autoLab is equal to "yes" if there are less than 50 elements and "no" otherwise; if "yes", the labels of the drawn elements are placed in a "good" way (can be time-consuming if many elements), and if "no" the elements are placed quickly but may overlap} \item{new.plot}{boolean, if TRUE, a new graphical device is created} \item{select}{a selection of the elements that are drawn; see the details section} \item{unselect}{may be either a value between 0 and 1 that gives the transparency of the unselected objects (if unselect=1 the transparency is total and the elements are not drawn, if unselect=0 the elements are drawn as usual but without any label) or may be a color (for example unselect="grey60")} \item{shadowtext}{boolean; if true put a shadow on the labels (rectangles are written under the labels which may lead to difficulties to modify the graph with another program)} \item{...}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \details{ The argument autoLab = "yes" is time-consuming if there are many labels that overlap. In this case, you can modify the size of the characters in order to have less overlapping, using for example cex=0.7. The select argument can be used in order to select a part of the elements (individuals if you draw the graph of individuals, or variables if you draw the graph of variabless) that are drawn. For example, you can use: select = 1:5 and then the elements 1:5 are drawn. select = c("name1","name5") and then the elements that have the names name1 and name5 are drawn. select = "coord 10" and then the 10 elements that have the highest (squared) coordinates on the 2 chosen dimensions are drawn. select = "contrib 10" and then the 10 elements that have the highest contribution on the 2 dimensions of your plot are drawn (available only when frequencies are drawn). select = "cos2 5" and then the 5 elements that have the highest cos2 on the 2 dimensions of your plot are drawn. } \value{ Returns the individuals, the frequencies and the variables factor map. } \author{Belchin Kostov \email{badriyan@clinic.ub.es}, Monica Becue-Bertaut, Francois Husson} \seealso{ \code{\link{CaGalt}}} \examples{ \dontrun{ data(health) res.cagalt<-CaGalt(Y=health[,1:115],X=health[,116:118],type="n") plot(res.cagalt,choix="quali.var",conf.ellip=TRUE,axes=c(1,4)) ## Selection of some individuals,categories and frequencies plot(res.cagalt,choix="freq",col.freq="darkgreen",cex=1.5,select="contrib 10") plot(res.cagalt,choix="ind",select="coord 10") plot(res.cagalt,choix="quali.var",select="cos2 0.5") } } \keyword{multivariate} FactoMineR/man/summary.CaGalt.Rd0000644000176200001440000000257312430501025016131 0ustar liggesusers\name{summary.CaGalt} \alias{summary.CaGalt} \title{Printing summaries of CaGalt objects} \description{ Printing summaries of Correspondence Analysis on Generalised Aggregated Lexical Table (CaGalt) objects } \usage{ \method{summary}{CaGalt}(object, nb.dec = 3, nbelements=10, nbind = nbelements, ncp = 3, align.names=TRUE, file="", \ldots) } \arguments{ \item{object}{an object of class CaGalt} \item{nb.dec}{number of printed decimals} \item{nbelements}{number of written elements (variables, categories, frequencies); use nbelements = Inf if you want to have all the elements} \item{nbind}{number of written elements; use nbind = Inf to have the results for all the individuals and nbind = 0 if you do not want the results for individuals} \item{ncp}{number of printed dimensions} \item{align.names}{boolean, if TRUE the names of the objects are written using the same number of characters} \item{file}{a connection, or a character string naming the file to print to} \item{...}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \author{Belchin Kostov \email{badriyan@clinic.ub.es}, Monica Becue-Bertaut, Francois Husson} \seealso{ \code{\link{CaGalt}}} \examples{ \dontrun{ data(health) res.cagalt<-CaGalt(Y=health[,1:115],X=health[,116:118],type="n") summary(res.cagalt) } } \keyword{multivariate} FactoMineR/man/meansComp.Rd0000644000176200001440000000207314570144655015242 0ustar liggesusers\name{meansComp} \alias{meansComp} \title{Perform pairwise means comparisons} \description{ Perform means comparisons and give groups of means that are not significantly different. } \usage{ meansComp(object, spec, graph=TRUE, ...) } \arguments{ \item{object}{A fitted model object that is supported, such as the result of a call to LinearModel, lm or aov.} \item{spec}{A character vector specifying the names of the predictors over which means comparisons are desired. specs may also be a formula or a list (optionally named) of valid specs. Use of formulas is described in the Overview section below.} \item{graph}{Boolean; plot the graph to compare the means.} \item{\dots}{other arguments, cf the function \code{emmeans}.} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{plot.meansComp}}} \examples{ data(senso) res <- LinearModel(Score~ Product + Day , data=senso, selection="none") meansComp(res,~Product) \dontrun{ ## and with the sidak correction meansComp(res,~Product,adjust="sidak") }} \keyword{models} FactoMineR/man/print.HMFA.Rd0000644000176200001440000000137314500575665015172 0ustar liggesusers\name{print.HMFA} \alias{print.HMFA} \title{Print the Hierarchical Multiple Factor Analysis results} \description{ Print the Hierarchical Multiple Factor Analysis results. } \usage{ \method{print}{HMFA}(x, file = NULL, sep = ";", \dots) } \arguments{ \item{x}{an object of class HMFA} \item{file}{A connection, or a character string naming the file to print to. If NULL (the default), the results are not printed in a file} \item{sep}{character string to insert between the objects to print (if the argument file is not NULL} \item{\dots}{further arguments passed to or from other methods} } \author{Sebastien Le, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{HMFA}}, \code{\link{write.infile}}} \keyword{print} FactoMineR/man/CA.Rd0000644000176200001440000000753514500575664013614 0ustar liggesusers\name{CA} \alias{CA} \title{Correspondence Analysis (CA)} \description{ Performs Correspondence Analysis (CA) including supplementary row and/or column points. } \usage{ CA(X, ncp = 5, row.sup = NULL, col.sup = NULL, quanti.sup=NULL, quali.sup = NULL, graph = TRUE, axes = c(1,2), row.w = NULL, excl=NULL)} \arguments{ \item{X}{a data frame or a table with \emph{n} rows and \emph{p} columns, i.e. a contingency table} \item{ncp}{number of dimensions kept in the results (by default 5)} \item{row.sup}{a vector indicating the indexes of the supplementary rows} \item{col.sup}{a vector indicating the indexes of the supplementary columns} \item{quanti.sup}{a vector indicating the indexes of the supplementary continuous variables} \item{quali.sup}{a vector indicating the indexes of the categorical supplementary variables} \item{graph}{boolean, if TRUE a graph is displayed} \item{axes}{a length 2 vector specifying the components to plot} \item{row.w}{an optional row weights (by default, a vector of 1 and each row has a weight equals to its margin); the weights are given only for the active rows} \item{excl}{numeric vector indicating the indexes of the "junk" columns (default is NULL). Useful for MCA with excl argument.} } \value{ Returns a list including: \item{eig}{a matrix containing all the eigenvalues, the percentage of variance and the cumulative percentage of variance} \item{col}{a list of matrices with all the results for the column variable (coordinates, square cosine, contributions, inertia)} \item{row}{a list of matrices with all the results for the row variable (coordinates, square cosine, contributions, inertia)} \item{col.sup}{a list of matrices containing all the results for the supplementary column points (coordinates, square cosine)} \item{row.sup}{a list of matrices containing all the results for the supplementary row points (coordinates, square cosine)} \item{quanti.sup}{if quanti.sup is not NULL, a matrix containing the results for the supplementary continuous variables (coordinates, square cosine)} \item{quali.sup}{if quali.sup is not NULL, a list of matrices with all the results for the supplementary categorical variables (coordinates of each categories of each variables, v.test which is a criterion with a Normal distribution, square correlation ratio)} \item{call}{a list with some statistics} Returns the row and column points factor map.\cr The plot may be improved using the argument autolab, modifying the size of the labels or selecting some elements thanks to the \code{\link{plot.CA}} function. } \references{ Benzecri, J.-P. (1992) \emph{Correspondence Analysis Handbook}, New-York : Dekker \cr Benzecri, J.-P. (1980) \emph{L'analyse des donnees tome 2 : l'analyse des correspondances}, Paris : Bordas \cr Greenacre, M.J. (1993) \emph{Correspondence Analysis in Practice}, London : Academic Press\cr Husson, F., Le, S. and Pages, J. (2009). Analyse de donnees avec R, \emph{Presses Universitaires de Rennes}.\cr Husson, F., Le, S. and Pages, J. (2010). Exploratory Multivariate Analysis by Example Using R, \emph{Chapman and Hall}. } \author{Francois Husson \email{francois.husson@institut-agro.fr},Jeremy Mazet} \seealso{ \code{\link{print.CA}}, \code{\link{summary.CA}}, \code{\link{ellipseCA}}, \code{\link{plot.CA}}, \code{\link{dimdesc}},\cr \href{https://www.youtube.com/watch?v=Y-bXsUNX5hA&list=PLnZgp6epRBbTsZEFXi_p6W48HhNyqwxIu&index=4}{Video showing how to perform CA with FactoMineR}} \examples{ data(children) res.ca <- CA (children, row.sup = 15:18, col.sup = 6:8) summary(res.ca) ## Ellipses for all the active elements ellipseCA(res.ca) ## Ellipses around some columns only ellipseCA(res.ca,ellipse="col",col.col.ell=c(rep("blue",2),rep("transparent",3)), invisible=c("row.sup","col.sup")) \dontrun{ ## Graphical interface require(Factoshiny) res <- Factoshiny(children) } } \keyword{multivariate} FactoMineR/man/poulet.Rd0000644000176200001440000000123612502505577014625 0ustar liggesusers\name{poulet} \alias{poulet} \docType{data} \title{Genomic data for chicken} \description{Genomic data for chicken} \usage{data(poulet)} \format{ A data frame with 43 chickens and 7407 variables. A factor with levels J16 J16R16 J16R5 J48 J48R24 N\cr And many continuous variables corresponding to the gene expression } \examples{ \dontrun{ data(poulet) res.pca = PCA(poulet,quali.sup=1, graph=FALSE) plot(res.pca) plot(res.pca,habillage=1,label="quali", palette=palette(c("black","red","blue","darkgreen","purple","orange"))) dimdesc(res.pca) ## Dessine des ellipses autour des centres de gravite plotellipses(res.pca)} } \keyword{datasets} FactoMineR/man/print.MFA.Rd0000644000176200001440000000133414500575665015057 0ustar liggesusers\name{print.MFA} \alias{print.MFA} \title{Print the Multiple Factor Analysis results} \description{ Print the Multiple Factor Analysis results. } \usage{ \method{print}{MFA}(x, file = NULL, sep = ";", \dots) } \arguments{ \item{x}{an object of class MFA} \item{file}{A connection, or a character string naming the file to print to. If NULL (the default), the results are not printed in a file} \item{sep}{character string to insert between the objects to print (if the argument file is not NULL} \item{\dots}{further arguments passed to or from other methods} } \author{Jeremy Mazet, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{MFA}}, \code{\link{write.infile}}} \keyword{print} FactoMineR/man/plot.HCPC.Rd0000644000176200001440000000442514500576075015013 0ustar liggesusers\name{plot.HCPC} \alias{plot.HCPC} \title{Plots for Hierarchical Classification on Principle Components (HCPC) results} \description{ Plots graphs from a HCPC result: tree, barplot of inertia gains and first factor map with or without the tree, in 2 or 3 dimensions.} \usage{ \method{plot}{HCPC}(x, axes=c(1,2), choice="3D.map", rect=TRUE, draw.tree=TRUE, ind.names=TRUE, t.level="all", title=NULL, new.plot=FALSE, max.plot=15, tree.barplot=TRUE, centers.plot=FALSE, \dots) } \arguments{ \item{x}{A HCPC object, see \code{\link{HCPC}} for details.} \item{axes}{a two integers vector.Defines the axes of the factor map to plot.} \item{choice}{A string. "tree" plots the tree. "bar" plots bars of inertia gains. "map" plots a factor map, individuals colored by cluster. "3D.map" plots the same factor map, individuals colored by cluster, the tree above.} \item{rect}{a boolean. If TRUE, rectangles are drawn around clusters if choice ="tree".} \item{tree.barplot}{a boolean. If TRUE, the barplot of intra inertia losses is added on the tree graph.} \item{draw.tree}{A boolean. If TRUE, the tree is projected on the factor map if choice ="map".} \item{ind.names}{A boolean. If TRUE, the individuals names are added on the factor map when choice="3D.map" or choice="map"} \item{t.level}{Either a positive integer or a string. A positive integer indicates the starting level to plot the tree on the map when draw.tree=TRUE. If "all", the whole tree is ploted. If "centers", it draws the tree starting t the centers of the clusters.} \item{title}{a string. Title of the graph. NULL by default and a title is automatically defined} \item{centers.plot}{a boolean. If TRUE, the centers of clusters are drawn on the 3D factor maps.} \item{new.plot}{a boolean. If TRUE, the plot is done in a new window.} \item{max.plot}{The max for the bar plot} \item{\dots}{Other arguments from other methods.} } \value{ Returns the chosen plot. } \author{Guillaume Le Ray, Quentin Molto, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{HCPC}}} \examples{ data(iris) # Clustering, auto nb of clusters: res.hcpc=HCPC(iris[1:4], nb.clust=3) # 3D graph from a different point of view: plot(res.hcpc, choice="3D.map", angle=60) } \keyword{dplot} FactoMineR/man/tab.disjonctif.prop.Rd0000644000176200001440000000122311636614632017171 0ustar liggesusers\name{tab.disjonctif.prop} \alias{tab.disjonctif.prop} \title{Make a disjunctive table when missing values are present} \description{ Create a disjunctive table. The missing values are replaced by the proportion of the category. } \usage{ tab.disjonctif.prop(tab,seed=NULL,row.w=NULL) } \arguments{ \item{tab}{a data frame with factors} \item{row.w}{an optional row weights (by default, a vector of 1 for uniform row weights)} \item{seed}{a single value, interpreted as an integer for the set.seed function (if seed = NULL, missing values are initially imputed by the mean of each variable)} } \value{The disjonctif table.prop} \keyword{algebra} FactoMineR/man/textual.Rd0000644000176200001440000000353214500575665015011 0ustar liggesusers\name{textual} \alias{textual} \title{Text mining} \description{ Calculates the number of occurence of each words and a contingence table } \usage{ textual(tab, num.text, contingence.by=1:ncol(tab), maj.in.min = TRUE, sep.word=NULL) } \arguments{ \item{tab}{a data frame with one textual variable} \item{num.text}{indice of the textual variable} \item{contingence.by}{a list with the indices of the variables for which a contingence table is calculated by default a contingence table is calculated for all the variables (except the textual one). A contingence table can also be calculated for couple of variables. If \code{contingence.by} is equal to num.text, then the contingence table is calculated for each row of the data table} \item{maj.in.min}{boolean, if TRUE majuscule are transformed in minuscule} \item{sep.word}{a string with all the characters which correspond to separator of words} } \value{ Returns a list including: \item{cont.table}{the contingence table with in rows the categories of the categorical variables (or the couple of categories), and in column the words, and in each cell the number of occurence} \item{nb.words}{a data.frame with all the words and for each word, the number of lists in which it is present, and the number of occurence} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{CA}}, \code{\link{descfreq}}} \examples{ data(poison.text) res.text <- textual(poison.text, num.text = 3, contingence.by = 1) descfreq(res.text$cont.table) ## Contingence table for the couple of variable sick-sex res.text2 <- textual(poison.text, num.text = 3, contingence.by = list(c(1,2))) descfreq(res.text2$cont.table) ## Contingence table for sex, sick and the couple of variable sick-sex res.text2 <- textual(poison.text, num.text = 3, contingence.by = list(1,2,c(1,2))) } \keyword{multivariate} FactoMineR/man/hobbies.Rd0000644000176200001440000000266211726404150014724 0ustar liggesusers\name{hobbies} \alias{hobbies} \docType{data} \title{hobbies (data)} \description{ The data used here concern a questionnaire on hobbies. We asked to 8403 individuals how answer questions about their hobbies (18 questions). The following four variables were used to label the individuals: sex (male, female), age (15-25, 26-35, 36-45, 46-55, 56-65, 66-75, 76-85, 86-100), marital status (single, married, widowed,divorced, remarried), profession (manual labourer, unskilled worker, technician, foreman, senior management, employee, other). And finally, a quantitative variable indicates the number of hobbies practised out of the 18 possible choices. } \usage{data(tea)} \format{ A data frame with 8403 rows and 23 columns. Rows represent the individuals, columns represent the different questions. The first 18 questions are active ones, and the 4 following ones are supplementary categorical variables and the 23th is a supplementary quantitative variable (the number of activities) } \examples{ data(hobbies) \dontrun{ res.mca <- MCA(hobbies,quali.sup=19:22,quanti.sup=23,method="Burt") plot(res.mca,invisible=c("ind","quali.sup"),hab="quali") ### active var. only plot(res.mca,invisible=c("var","quali.sup"),cex=.5,label="none") ### individuals only plot(res.mca,invisible=c("ind","var"),hab="quali") ### supp. qualitative var. only dimdesc(res.mca) plotellipses(res.mca,keepvar=1:4) } } \keyword{datasets} FactoMineR/man/dimdesc.Rd0000644000176200001440000000251314500575664014730 0ustar liggesusers\name{dimdesc} \alias{dimdesc} \title{Dimension description} \description{ This function is designed to point out the variables and the categories that are the most characteristic according to each dimension obtained by a Factor Analysis. \cr } \usage{ dimdesc(res, axes = 1:3, proba = 0.05)} \arguments{ \item{res}{an object of class PCA, MCA, CA, MFA or HMFA} \item{axes}{a vector with the dimensions to describe} \item{proba}{the significance threshold considered to characterized the dimension (by default 0.05)} } \value{ Returns a list including: \item{quanti}{the description of the dimensions by the quantitative variables. The variables are sorted.} \item{quali}{the description of the dimensions by the categorical variables} } \references{ Husson, F., Le, S. and Pages, J. (2010). Exploratory Multivariate Analysis by Example Using R, \emph{Chapman and Hall}. } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{PCA}}, \code{\link{CA}}, \code{\link{MCA}}, \code{\link{MFA}}, \code{\link{HMFA}},\cr \href{https://www.youtube.com/watch?v=Uhw-1NilmAk&list=PLnZgp6epRBbTsZEFXi_p6W48HhNyqwxIu&index=9}{Video showing how to use this function}} \examples{ data(decathlon) res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup=13, graph=FALSE) dimdesc(res.pca) } \keyword{multivariate} FactoMineR/man/mortality.Rd0000644000176200001440000000201714551762331015336 0ustar liggesusers\name{mortality} \alias{mortality} \docType{data} \title{The cause of mortality in France in 1979 and 2006} \description{ The cause of mortality in France in 1979 and 2006. } \usage{data(mortality)} \format{ A data frame with 62 rows (the different causes of death) and 18 columns. Each column corresponds to an age interval (15-24, 25-34, 35-44, 45-54, 55-64, 65-74, 75-84, 85-94, 95 and more) in a year. The 9 first columns correspond to data in 1979 and the 9 last columns to data in 2006. In each cell, the counts of deaths for a cause of death in an age interval (in a year) is given. } \source{ Centre d'epidemiologie sur les causes medicales } \examples{ data(mortality) \dontrun{ res<-MFA(mortality,group=c(9,9),type=c("f","f"), name.group=c("1979","2006")) plot(res,choix="freq",invisible="ind",graph.type = "classic") lines(res$freq$coord[1:9,1],res$freq$coord[1:9,2],col="red") lines(res$freq$coord[10:18,1],res$freq$coord[10:18,2],col="green") } } \keyword{datasets} FactoMineR/man/predict.PCA.Rd0000644000176200001440000000114314500576075015347 0ustar liggesusers\name{predict.PCA} \alias{predict.PCA} \title{Predict projection for new rows with Principal Component Analysis} \description{ Predict the projection of new rows with Principal Component Analysis. } \usage{ \method{predict}{PCA}(object, newdata, \dots) } \arguments{ \item{object}{an object of class PCA} \item{newdata}{A data frame or a matrix in which to look for variables with which to predict. newdata must contain columns with the same names as the original data.} \item{\dots}{Other options.} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{PCA}}} FactoMineR/man/svd.triplet.Rd0000644000176200001440000000150511731642164015567 0ustar liggesusers\name{svd.triplet} \alias{svd.triplet} \title{Singular Value Decomposition of a Matrix} \description{ Compute the singular-value decomposition of a rectangular matrix with weights for rows and columns. } \usage{ svd.triplet(X, row.w=NULL, col.w=NULL, ncp=Inf) } \arguments{ \item{X}{a data matrix} \item{row.w}{vector with the weights of each row (NULL by default and the weights are uniform)} \item{col.w}{vector with the weights of each column (NULL by default and the weights are uniform)} \item{ncp}{the number of components kept for the outputs} } \value{ \item{vs}{ a vector containing the singular values of 'x';} \item{u}{a matrix whose columns contain the left singular vectors of 'x';} \item{v}{a matrix whose columns contain the right singular vectors of 'x'.} } \seealso{ \code{\link{svd}}} \keyword{algebra} FactoMineR/man/plot.meansComp.Rd0000644000176200001440000000123514570145455016215 0ustar liggesusers\name{plot.meansComp} \alias{plot.meansComp} \title{Draw the means comparisons} \description{ Plot the graphs for the means comparisons. } \usage{ \method{plot}{meansComp}(x, \dots) } \arguments{ \item{x}{an object of class meansComp.} \item{\dots}{further arguments passed to or from other methods, such as ggplot, ...} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{\code{\link{meansComp}}} \examples{ data(senso) res <- LinearModel(Score~ Product + Day , data=senso, selection="none") meansComp(res,~Product) \dontrun{ ## and with the sidak correction meansComp(res,~Product,adjust="sidak") }} \keyword{dplot} FactoMineR/man/plot.FAMD.Rd0000644000176200001440000001055214500575664015006 0ustar liggesusers\name{plot.FAMD} \alias{plot.FAMD} \title{Draw the Multiple Factor Analysis for Mixt Data graphs} \description{ It provides the graphical outputs associated with the principal component method for mixed data: FAMD. } \usage{ \method{plot}{FAMD}(x, choix = c("ind","var","quanti","quali"), axes = c(1, 2), lab.var = TRUE, lab.ind = TRUE, habillage = "none", col.lab = FALSE, col.hab = NULL, invisible = NULL, lim.cos2.var = 0., xlim = NULL, ylim = NULL, title = NULL, palette=NULL, autoLab = c("auto","yes","no"), new.plot = FALSE, select = NULL, unselect = 0.7, shadowtext = FALSE, legend = list(bty = "y", x = "topleft"), graph.type = c("ggplot","classic"), ggoptions = NULL, \dots) } \arguments{ \item{x}{an object of class FAMD} \item{choix}{a string corresponding to the graph that you want to do ("ind" for the individual or categorical variables graph, "var" for all the variables (quantitative and categorical), "quanti" for the correlation circle)} \item{axes}{a length 2 vector specifying the components to plot} \item{lab.var}{boolean indicating if the labelled of the variables should be drawn on the map} \item{lab.ind}{boolean indicating if the labelled of the individuals should be drawn on the map} \item{habillage}{string corresponding to the color which are used. If "ind", one color is used for each individual else if it is the name or the position of a categorical variable, it colors according to the different categories of this variable} \item{col.lab}{boolean indicating if the labelled should be colored} \item{col.hab}{vector indicating the colors to use to labelled the rows or columns elements chosen in habillage} \item{invisible}{list of string; for choix ="ind", the individuals can be omit (invisible = "ind"), or supplementary individuals (invisible="ind.sup") or the centerg of gravity of the categorical variables (invisible= "quali"); if invisible = c("ind","ind.sup"), just the centers of gravity are drawn} \item{lim.cos2.var}{value of the square cosinus under the variables are not drawn} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{palette}{the color palette used to draw the points. By default colors are chosen. If you want to define the colors : palette=palette(c("black","red","blue")); or you can use: palette=palette(rainbow(30)), or in black and white for example: palette=palette(gray(seq(0,.9,len=25)))} \item{autoLab}{if \code{autoLab="auto"}, \code{autoLab} is equal to "yes" if there are less than 50 elements and "no" otherwise; if "yes", the labels of the drawn elements are placed in a "good" way (can be time-consuming if many elements), and if "no" the elements are placed quickly but may overlap} \item{new.plot}{boolean, if TRUE, a new graphical device is created} \item{select}{a selection of the elements that are drawn; see the details section} \item{unselect}{may be either a value between 0 and 1 that gives the transparency of the unselected objects (if \code{unselect=1} the transparceny is total and the elements are not drawn, if \code{unselect=0} the elements are drawn as usual but without any label) or may be a color (for example \code{unselect="grey60"})} \item{shadowtext}{boolean; if true put a shadow on the labels (rectangles are written under the labels which may lead to difficulties to modify the graph with another program)} \item{legend}{a list of arguments that defines the legend if needed (when individuals are drawn according to a variable); see the arguments of the function \code{legend}} \item{graph.type}{a character that gives the type of graph used: "ggplot" or "classic"} \item{ggoptions}{a list that gives the graph options when grah.type="ggplot" is used. See the optines and the default values in the details section} \item{\dots}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \value{ Returns the individuals factor map and the variables factor map. } \examples{ \dontrun{ data(geomorphology) res <- FAMD(geomorphology) plot(res,choix="ind",habillage=4) } } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{FAMD}}} \keyword{dplot} FactoMineR/man/FactoMineR-package.Rd0000644000176200001440000000176014500576075016700 0ustar liggesusers\name{FactoMineR-package} \alias{FactoMineR-package} \alias{FactoMineR} \docType{package} \title{Multivariate Exploratory Data Analysis and Data Mining with R } \description{ The method proposed in this package are exploratory mutlivariate methods such as principal component analysis, correspondence analysis or clustering. } \details{ FactoMineR is a package for exploratory multivariate data analysis. The package Factoshiny gives an interface to use most of the functions of FactoMineR. } \author{ Francois Husson, Julie Josse, Sebastien Le, Jeremy Mazet Maintainer: \email{francois.husson@institut-agro.fr} } \references{ Le, S., Josse, J. & Husson, F. (2008). FactoMineR: An R Package for Multivariate Analysis. Journal of Statistical Software. 25(1). pp. 1-18. \url{https://www.jstatsoft.org/v25/i01/} A website: \url{http://factominer.free.fr/} Some videos: \url{https://www.youtube.com/playlist?list=PLnZgp6epRBbTsZEFXi_p6W48HhNyqwxIu} } \keyword{Factor analysis} FactoMineR/man/plot.MFApartial.Rd0000644000176200001440000000631414500576075016255 0ustar liggesusers\name{plotMFApartial} \alias{plotMFApartial} \title{Plot an interactive Multiple Factor Analysis (MFA) graph} \description{ Draw an interactive Multiple Factor Analysis (MFA) graphs. } \usage{ plotMFApartial(x, axes = c(1, 2), lab.ind = TRUE, lab.par = FALSE, habillage = "group", chrono = FALSE, col.hab = NULL, invisible = NULL, draw.partial = NULL, xlim = NULL, ylim = NULL, cex = 1, title = NULL, palette = NULL, \dots) } \arguments{ \item{x}{an object of class MFA} \item{axes}{a length 2 vector specifying the components to plot} \item{lab.ind}{boolean, if TRUE, the label of the mean points are drawn} \item{lab.par}{boolean, if TRUE, the label of the partial points are drawn} \item{habillage}{string corresponding to the color which are used. If "group", one color is used for each group of variables; if "quali" the individuals are colored according to one categorical variable; if "group" the individuals are colored according to the group} \item{chrono}{boolean, if TRUE, the partial points of a same point are linked (useful when groups correspond to different moment)} \item{col.hab}{the colors to use. By default, colors are chosen} \item{invisible}{list of string; for choix ="ind", the individuals can be omit (invisible = "ind"), or supplementary individuals (invisible="ind.sup") or the centerg of gravity of the categorical variables (invisible= "quali"); if invisible = c("ind","ind.sup"), just the centers of gravity are drawn} \item{draw.partial}{data frame of a boolean variable for all the individuals and all the centers of gravity and with for which the partial points should be drawn (by default, NULL and no partial points are drawn)} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{cex}{cf. function \code{\link{par}} in the \pkg{graphics} package} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{palette}{the color palette used to draw the points. By default colors are chosen. If you want to define the colors : palette=palette(c("black","red","blue")); or you can use: palette=palette(rainbow(30)), or in black and white for example: palette=palette(gray(seq(0,.9,len=25)))} \item{\dots}{further arguments passed to or from other methods} } \value{ Draw a graph with the individuals and the centers of gravity. The graph is interactive and clicking on a point will draw the partial points, if you click on a point for which the partial points are yet drawn, the partial points are deleted. To stop the interactive plot, click on the title (or in the top of the graph).\cr Return the names of the points for which the partial points are drawn. } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{MFA}}, \code{\link{plot.MFA}}} \examples{ \dontrun{ data(wine) res.wine = MFA(wine,group=c(2,5,3,10,9,2),type=c("n",rep("s",5)),ncp=5, name.group=c("orig","olf","vis","olfag","gust","ens"), num.group.sup=c(1,6),graph=FALSE) liste = plotMFApartial(res.wine) plot(res.wine, partial = liste) } } \keyword{dplot} FactoMineR/man/HMFA.Rd0000644000176200001440000000525414500575664014040 0ustar liggesusers\name{HMFA} \alias{HMFA} \title{Hierarchical Multiple Factor Analysis} \description{ Performs a hierarchical multiple factor analysis, using an object of class \code{list} of \code{data.frame}. } \usage{ HMFA(X,H,type = rep("s", length(H[[1]])), ncp = 5, graph = TRUE, axes = c(1,2), name.group = NULL) } \arguments{ \item{X}{a \code{data.frame}} \item{H}{a list with one vector for each hierarchical level; in each vector the number of variables or the number of group constituting the group} \item{type}{the type of variables in each group in the first partition; three possibilities: "c" or "s" for quantitative variables (the difference is that for "s", the variables are scaled in the program), "n" for categorical variables; by default, all the variables are quantitative and the variables are scaled unit} \item{ncp}{number of dimensions kept in the results (by default 5)} \item{graph}{boolean, if TRUE a graph is displayed} \item{axes}{a length 2 vector specifying the components to plot} \item{name.group}{a list of vector containing the name of the groups for each level of the hierarchy (by default, NULL and the group are named L1.G1, L1.G2 and so on)} } \value{ Returns a list including: \item{eig}{a matrix containing all the eigenvalues, the percentage of variance and the cumulative percentage of variance} \item{group}{a list with first a list of matrices with the coordinates of the groups for each level and second a matrix with the canonical correlation (correlation between the coordinates of the individuals and the partial points))} \item{ind}{a list of matrices with all the results for the active individuals (coordinates, square cosine, contributions)} \item{quanti.var}{a list of matrices with all the results for the quantitative variables (coordinates, correlation between variables and axes)} \item{quali.var}{a list of matrices with all the results for the supplementary categorical variables (coordinates of each categories of each variables, and v.test which is a criterion with a Normal distribution)} \item{partial}{a list of arrays with the coordinates of the partial points for each partition} } \references{Le Dien, S. & Pages, J. (2003) Hierarchical Multiple factor analysis: application to the comparison of sensory profiles, \emph{Food Quality and Preferences}, \bold{18 (6)}, 453-464. } \author{Sebastien Le, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{print.HMFA}}, \code{\link{plot.HMFA}}, \code{\link{dimdesc}}} \examples{ data(wine) hierar <- list(c(2,5,3,10,9,2), c(4,2)) res.hmfa <- HMFA(wine, H = hierar, type=c("n",rep("s",5))) } \keyword{multivariate} FactoMineR/man/CaGalt.Rd0000644000176200001440000001003612464754237014454 0ustar liggesusers\name{CaGalt} \alias{CaGalt} \title{Correspondence Analysis on Generalised Aggregated Lexical Table (CaGalt)} \description{ Correspondence Analysis on Generalised Aggregated Lexical Table (CaGalt) aims at expanding correspondence analysis on an aggregated lexical table to the case of several quantitative and categorical variables with the objective of establishing a typology of the variables and a typology of the frequencies from their mutual relationships. To avoid the instability issued from multicollinearity among the contextual variables and limit the influence of noisy measurements, the contextual variables are substituted by their principal components. Validation tests in the form of confidence ellipses for the frequencies and the variables are also proposed. } \usage{ CaGalt(Y, X, type="s", conf.ellip=FALSE, nb.ellip=100, level.ventil=0, sx=NULL, graph=TRUE, axes=c(1,2)) } \arguments{ \item{Y}{a data frame with n rows (individuals) and p columns (frequencies)} \item{X}{a data frame with n rows (individuals) and k columns (quantitative or categorical variables)} \item{type}{the type of variables: "c" or "s" for quantitative variables and "n" for categorical variables. The difference is that for "s" variables are scaled to unit variance (by default, variables are scaled to unit variance)} \item{conf.ellip}{boolean (FALSE by default), if TRUE, draw confidence ellipses around the frequencies and the variables when "graph" is TRUE} \item{nb.ellip}{number of bootstrap samples to compute the confidence ellipses (by default 100)} \item{level.ventil}{proportion corresponding to the level under which the category is ventilated; by default, 0 and no ventilation is done. Available only when type is equal to "n"} \item{sx}{number of principal components kept from the principal axes analysis of the contextual variables (by default is NULL and all principal components are kept)} \item{graph}{boolean, if TRUE a graph is displayed} \item{axes}{a length 2 vector specifying the components to plot} } \value{ Returns a list including: \item{eig}{a matrix containing all the eigenvalues, the percentage of variance and the cumulative percentage of variance} \item{ind}{a list of matrices containing all the results for the individuals (coordinates, square cosine)} \item{freq}{a list of matrices containing all the results for the frequencies (coordinates, square cosine, contributions)} \item{quanti.var}{a list of matrices containing all the results for the quantitative variables (coordinates, correlation between variables and axes, square cosine)} \item{quali.var}{a list of matrices containing all the results for the categorical variables (coordinates of each categories of each variables, square cosine)} \item{ellip}{a list of matrices containing the coordinates of the frequencies and variables for replicated samples from which the confidence ellipses are constructed} Returns the individuals, the frequencies and the variables factor map. If there are more than 50 frequencies, the first 50 frequencies that have the highest contribution on the 2 dimensions of your plot are drawn. The plots may be improved using the argument autolab, modifying the size of the labels or selecting some elements thanks to the plot.CaGalt function. } \references{ Becue-Bertaut, M., Pages, J. and Kostov, B. (2014). Untangling the influence of several contextual variables on the respondents'\ lexical choices. A statistical approach.\emph{SORT} Becue-Bertaut, M. and Pages, J. (2014). Correspondence analysis of textual data involving contextual information: Ca-galt on principal components.\emph{Advances in Data Analysis and Classification} } \author{Belchin Kostov \email{badriyan@clinic.ub.es}, Monica Becue-Bertaut, Francois Husson} \seealso{ \code{\link{print.CaGalt}}, \code{\link{summary.CaGalt}}, \code{\link{plot.CaGalt}}} \examples{ \dontrun{ ###Example with categorical variables data(health) res.cagalt<-CaGalt(Y=health[,1:115],X=health[,116:118],type="n") } } \keyword{multivariate} FactoMineR/man/coord.ellipse.Rd0000644000176200001440000000374512465076426016072 0ustar liggesusers\name{coord.ellipse} \alias{coord.ellipse} \title{Construct confidence ellipses} \description{Construct confidence ellipses } \usage{coord.ellipse (coord.simul, centre = NULL, axes = c(1, 2), level.conf = 0.95, npoint = 100, bary = FALSE) } \arguments{ \item{coord.simul}{a data frame containing the coordinates of the individuals for which the confidence ellipses are constructed. This data frame can contain more than 2 variables; the variables taken into account are chosen after. The first column must be a factor which allows to associate one row to an ellipse. The simule object of the result of the simule function correspond to a data frame.} \item{centre}{a data frame whose columns are the same than those of the coord.simul, and with the coordinates of the centre of each ellipse. This parameter is optional and NULL by default; in this case, the centre of the ellipses is calculated from the data} \item{axes}{a length 2 vector specifying the components of coord.simul that are taken into account} \item{level.conf}{confidence level used to construct the ellipses. By default, 0.95} \item{npoint}{number of points used to draw the ellipses} \item{bary}{boolean, if bary = TRUE, the coordinates of the ellipse around the barycentre of individuals are calculated} } \value{ \item{res}{a data frame with (npoint times the number of ellipses) rows and three columns. The first column is the factor of coord.simul, the two others columns give the coordinates of the ellipses on the two dimensions chosen.} \item{call}{the parameters of the function chosen} } \author{Jeremy Mazet} \seealso{ \code{\link{simule}}} \examples{ data(decathlon) res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup = 13,graph=FALSE) aa <- cbind.data.frame(decathlon[,13],res.pca$ind$coord) bb <- coord.ellipse(aa,bary=TRUE) plot(res.pca,habillage=13,ellipse=bb) ## To automatically draw ellipses around the barycentres of all the categorical variables plotellipses(res.pca) } \keyword{dplot} FactoMineR/man/print.CaGalt.Rd0000644000176200001440000000203412430501012015554 0ustar liggesusers\name{print.CaGalt} \alias{print.CaGalt} \title{Print the Correspondence Analysis on Generalised Aggregated Lexical Table (CaGalt) results} \description{ Print the Correspondence Analysis on Generalised Aggregated Lexical Table (CaGalt) results } \usage{ ## S3 method for class 'CaGalt' \method{print}{CaGalt}(x, file = NULL, sep = ";", \ldots) } \arguments{ \item{x}{an object of class CaGalt} \item{file}{A connection, or a character string naming the file to print to. If NULL (the default), the results are not printed in a file} \item{sep}{character string to insert between the objects to print (if the argument file is not NULL)} \item{...}{further arguments passed to or from other methods} } \author{Belchin Kostov \email{badriyan@clinic.ub.es}, Monica Becue-Bertaut, Francois Husson} \seealso{ \code{\link{CaGalt}}, \code{\link{write.infile}}} \examples{ \dontrun{ data(health) res.cagalt<-CaGalt(Y=health[,1:115],X=health[,116:118],type="n") print(res.cagalt) } } \keyword{multivariate} FactoMineR/man/print.MCA.Rd0000644000176200001440000000135414500575665015056 0ustar liggesusers\name{print.MCA} \alias{print.MCA} \title{Print the Multiple Correspondance Analysis (MCA) results} \description{ Print the Multiple Correspondance Analysis (spMCA) results. } \usage{ \method{print}{MCA}(x, file = NULL, sep = ";", \dots) } \arguments{ \item{x}{an object of class MCA} \item{file}{A connection, or a character string naming the file to print to. If NULL (the default), the results are not printed in a file} \item{sep}{character string to insert between the objects to print (if the argument file is not NULL} \item{\dots}{further arguments passed to or from other methods} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{MCA}}, \code{\link{write.infile}}} \keyword{print} FactoMineR/man/summary.PCA.Rd0000644000176200001440000000224414500576075015415 0ustar liggesusers\name{summary.PCA} \alias{summary.PCA} \title{Printing summeries of PCA objects} \description{Printing summaries of principal component analysis objects} \usage{ \method{summary}{PCA}(object, nb.dec = 3, nbelements=10, nbind = nbelements, ncp = 3, align.names=TRUE, file="", \dots) } \arguments{ \item{object}{an object of class PCA} \item{nb.dec}{number of decimal printed} \item{nbelements}{number of elements written (variables, categories, ...); use \code{nbelements = Inf} if you want to have all the elements} \item{nbind}{number of individuals written (individuals and supplementary individuals, ...); use \code{nbind = Inf} to have the results for all the individuals and \code{nbind = 0} if you do not want the results for individuals} \item{ncp}{number of dimensions printed} \item{align.names}{boolean, if TRUE the names of the objects are written using the same number of characters} \item{file}{a connection, or a character string naming the file to print to} \item{\dots}{further arguments passed to or from other methods, such as cex, cex.main, ...} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{PCA}}} FactoMineR/man/predict.CA.Rd0000644000176200001440000000112414500576075015226 0ustar liggesusers\name{predict.CA} \alias{predict.CA} \title{Predict projection for new rows with Correspondence Analysis} \description{ Predict the projection of new rows with Correspondence Analysis. } \usage{ \method{predict}{CA}(object, newdata, \dots) } \arguments{ \item{object}{an object of class CA} \item{newdata}{A data frame or a matrix in which to look for variables with which to predict. newdata must contain columns with the same names as the original data.} \item{\dots}{Other options.} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{CA}}} FactoMineR/man/poison.text.Rd0000644000176200001440000000141611432224603015574 0ustar liggesusers\name{poison.text} \alias{poison.text} \docType{data} \title{Poison} \description{ The data used here refer to a survey carried out on a sample of children of primary school who suffered from food poisoning. They were asked about their symptoms and about what they ate. } \usage{data(poison)} \format{ A data frame with 55 rows and 3 columns (the sex, if they are sick or not, and a textual variable with their symptom and what they eat). } \examples{ data(poison.text) res.text <- textual(poison.text, num.text = 3, contingence.by = c(1,2)) ## Contingence table for the sex variable, the sich variable and the couple ## of variable sick-sex res.text2 <- textual(poison.text, num.text = 3, contingence.by = list(1,2,c(1,2))) } \keyword{datasets} FactoMineR/man/print.LinearModel.Rd0000644000176200001440000000163614500575665016654 0ustar liggesusers\name{print.LinearModel} \alias{print.LinearModel} \title{Print the LinearModel results} \description{ Print the results of the ANOVA obtained by the function LinearModel. } \usage{ \method{print}{LinearModel}(x, \dots) } \arguments{ \item{x}{an object of class LinearModel} \item{\dots}{further arguments passed to or from other methods} } \details{ Gives the results of the LinearModel function. If a model selection is performed, the global F-test for the complete model is first given, then all the results are given for the selected model (global F-test, the F-tests for main effects and interaction, the t-tests) } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{LinearModel}}} \examples{ \dontrun{ data(senso) res <- LinearModel(Score~ Product + Day , data=senso) res res2 <- LinearModel(Score~ Product + Day , data=senso, selection="BIC") res2 } } \keyword{print} FactoMineR/man/HCPC.Rd0000644000176200001440000001217514500576075014037 0ustar liggesusers\name{HCPC} \alias{HCPC} \title{Hierarchical Clustering on Principle Components (HCPC)} \description{ Performs an agglomerative hierarchical clustering on results from a factor analysis. It is possible to cut the tree by clicking at the suggested (or an other) level. Results include paragons, description of the clusters, graphics.} \usage{ HCPC(res, nb.clust=0, consol=TRUE, iter.max=10, min=3, max=NULL, metric="euclidean", method="ward", order=TRUE, graph.scale="inertia", nb.par=5, graph=TRUE, proba=0.05, cluster.CA="rows",kk=Inf,description=TRUE,\dots)} \arguments{ \item{res}{Either the result of a factor analysis or a dataframe.} \item{nb.clust}{an integer. If 0, the tree is cut at the level the user clicks on. If -1, the tree is automatically cut at the suggested level (see details). If a (positive) integer, the tree is cut with nb.cluters clusters.} \item{consol}{a boolean. If TRUE, a k-means consolidation is performed (consolidation cannot be performed if kk is used and equals a number).} \item{iter.max}{An integer. The maximum number of iterations for the consolidation.} \item{min}{an integer. The least possible number of clusters suggested.} \item{max}{an integer. The higher possible number of clusters suggested; by default the minimum between 10 and the number of individuals divided by 2.} \item{metric}{The metric used to built the tree. See \code{\link{agnes}} for details.} \item{method}{The method used to built the tree. See \code{\link{agnes}} for details.} \item{order}{A boolean. If TRUE, clusters are ordered following their center coordinate on the first axis.} \item{graph.scale}{A character string. By default "inertia" and the height of the tree corresponds to the inertia gain, else "sqrt-inertia" the square root of the inertia gain.} \item{nb.par}{An integer. The number of edited paragons.} \item{graph}{If TRUE, graphics are displayed. If FALSE, no graph are displayed.} \item{proba}{The probability used to select axes and variables in catdes (see \code{\link{catdes}} for details.} \item{cluster.CA}{A string equals to "rows" or "columns" for the clustering of Correspondence Analysis results.} \item{kk}{An integer corresponding to the number of clusters used in a Kmeans preprocessing before the hierarchical clustering; the top of the hierarchical tree is then constructed from this partition. This is very useful if the number of individuals is high. Note that consolidation cannot be performed if kk is different from Inf and some graphics are not drawn. Inf is used by default and no preprocessing is done, all the graphical outputs are then given.} \item{description}{boolean; if TRUE the clusters are characterized by the variables and the dimensions} \item{\dots}{Other arguments from other methods.} } \details{ The function first built a hierarchical tree. Then the sum of the within-cluster inertia are calculated for each partition. The suggested partition is the one with the higher relative loss of inertia (i(clusters n+1)/i(cluster n)). The absolute loss of inertia (i(cluster n)-i(cluster n+1)) is plotted with the tree. If the ascending clustering is constructed from a data-frame with a lot of rows (individuals), it is possible to first perform a partition with kk clusters and then construct the tree from the (weighted) kk clusters. } \value{ Returns a list including: \item{data.clust}{The original data with a supplementary column called clust containing the partition.} \item{desc.var}{The description of the classes by the variables. See \code{\link{catdes}} for details or \code{\link{descfreq}} if clustering is performed on CA results.} \item{desc.axes}{The description of the classes by the factors (axes). See \code{\link{catdes}} for details.} \item{call}{A list or parameters and internal objects. \code{call$t} gives the results for the hierarchical tree; \code{call$bw.before.consol} and \code{call$bw.after.consol} give the between inertia before consolidation (i.e. for the clustering obtained from the hierarchical tree) and after the consolidation with Kmeans.} \item{desc.ind}{The paragons (para) and the more typical individuals of each cluster. See details.} Returns the tree and a barplot of the inertia gains, the individual factor map with the tree (3D), the factor map with individuals coloured by cluster (2D). } \author{Francois Husson \email{francois.husson@institut-agro.fr}, Guillaume Le Ray, Quentin Molto} \seealso{ \code{\link{plot.HCPC}}, \code{\link{catdes}},\cr \href{https://www.youtube.com/watch?v=4XrgWmN9erg&list=PLnZgp6epRBbTsZEFXi_p6W48HhNyqwxIu&index=7}{Video showing how to perform clustering with FactoMineR}} \examples{ \dontrun{ data(iris) # Principal Component Analysis: res.pca <- PCA(iris[,1:4], graph=FALSE) # Clustering, auto nb of clusters: hc <- HCPC(res.pca, nb.clust=-1) ### Construct a hierarchical tree from a partition (with 10 clusters) ### (useful when the number of individuals is very important) hc2 <- HCPC(iris[,1:4], kk=10, nb.clust=-1) ## Graphical interface require(Factoshiny) res <- Factoshiny(iris[,1:4]) } } \keyword{multivariate} FactoMineR/man/print.catdes.Rd0000644000176200001440000000077614500575664015727 0ustar liggesusers\name{print.catdes} \alias{print.catdes} \title{Print the catdes results} \description{ Print the results of the function catdes. } \usage{ \method{print}{catdes}(x, \dots) } \arguments{ \item{x}{an object of class catdes} \item{\dots}{further arguments passed to or from other methods} } \author{Vincent Guyader, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{catdes}}} \examples{ \dontrun{ data(wine) res <- catdes(wine, num.var=2) print(res) } } \keyword{print} FactoMineR/man/wine.Rd0000644000176200001440000000162511557605575014271 0ustar liggesusers\name{wine} \alias{wine} \docType{data} \title{Wine} \description{ The data used here refer to 21 wines of Val de Loire. } \usage{data(wine)} \format{ A data frame with 21 rows (the number of wines) and 31 columns: the first column corresponds to the label of origin, the second column corresponds to the soil, and the others correspond to sensory descriptors. } \source{ Centre de recherche INRA d'Angers } \examples{ data(wine) ## Example of PCA res.pca = PCA(wine,ncp=5, quali.sup = 1:2) \dontrun{ ## Example of MCA res.mca = MCA(wine,ncp=5, quanti.sup = 3:ncol(wine)) ## Example of MFA res.mfa = MFA(wine,group=c(2,5,3,10,9,2),type=c("n",rep("s",5)),ncp=5, name.group=c("orig","olf","vis","olfag","gust","ens"), num.group.sup=c(1,6),graph=FALSE) plotellipses(res.mfa) plotellipses(res.mfa,keepvar="Label") ## for 1 variable } } \keyword{datasets} FactoMineR/man/RegBest.Rd0000644000176200001440000000174414500576075014655 0ustar liggesusers\name{RegBest} \alias{RegBest} \title{Select variables in multiple linear regression} \description{ Find an optimal submodel } \usage{ RegBest(y,x, int = TRUE, wt=NULL, na.action = na.omit, method=c("r2","Cp", "adjr2"), nbest=1) } \arguments{ \item{y}{A response vector} \item{x}{A matrix of predictors} \item{int}{Add an intercept to the model} \item{wt}{Optional weight vector} \item{na.action}{Handling missing values} \item{method}{Calculate R-squared, adjusted R-squared or Cp to select the model. By default a the F-test on the r-square is used} \item{nbest}{number of best models for each set of explained variables (by default 1)} } \value{ Returns the objects \item{all}{gives all the \code{nbest} best models for a given number of variables} \item{best}{the best model} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{lm}}} \examples{ data(milk) res = RegBest(y=milk[,6],x=milk[,-6]) res$best } \keyword{models} FactoMineR/man/PCA.Rd0000644000176200001440000000757214500575664013735 0ustar liggesusers\name{PCA} \alias{PCA} \title{Principal Component Analysis (PCA)} \description{ Performs Principal Component Analysis (PCA) with supplementary individuals, supplementary quantitative variables and supplementary categorical variables.\cr Missing values are replaced by the column mean. } \usage{ PCA(X, scale.unit = TRUE, ncp = 5, ind.sup = NULL, quanti.sup = NULL, quali.sup = NULL, row.w = NULL, col.w = NULL, graph = TRUE, axes = c(1,2))} \arguments{ \item{X}{a data frame with \emph{n} rows (individuals) and \emph{p} columns (numeric variables)} \item{ncp}{number of dimensions kept in the results (by default 5)} \item{scale.unit}{a boolean, if TRUE (value set by default) then data are scaled to unit variance} \item{ind.sup}{a vector indicating the indexes of the supplementary individuals} \item{quanti.sup}{a vector indicating the indexes of the quantitative supplementary variables} \item{quali.sup}{a vector indicating the indexes of the categorical supplementary variables} \item{row.w}{an optional row weights (by default, a vector of 1 for uniform row weights); the weights are given only for the active individuals} \item{col.w}{an optional column weights (by default, uniform column weights); the weights are given only for the active variables} \item{graph}{boolean, if TRUE a graph is displayed} \item{axes}{a length 2 vector specifying the components to plot} } \value{ Returns a list including: \item{eig}{a matrix containing all the eigenvalues, the percentage of variance and the cumulative percentage of variance} \item{var}{a list of matrices containing all the results for the active variables (coordinates, correlation between variables and axes, square cosine, contributions)} \item{ind}{a list of matrices containing all the results for the active individuals (coordinates, square cosine, contributions)} \item{ind.sup}{a list of matrices containing all the results for the supplementary individuals (coordinates, square cosine)} \item{quanti.sup}{a list of matrices containing all the results for the supplementary quantitative variables (coordinates, correlation between variables and axes)} \item{quali.sup}{a list of matrices containing all the results for the supplementary categorical variables (coordinates of each categories of each variables, v.test which is a criterion with a Normal distribution, and eta2 which is the square correlation corefficient between a qualitative variable and a dimension)} Returns the individuals factor map and the variables factor map.\cr The plots may be improved using the argument autolab, modifying the size of the labels or selecting some elements thanks to the \code{\link{plot.PCA}} function. } \references{ Husson, F., Le, S. and Pages, J. (2010). Exploratory Multivariate Analysis by Example Using R, \emph{Chapman and Hall}. } \author{Francois Husson \email{francois.husson@institut-agro.fr}, Jeremy Mazet} \seealso{ \code{\link{print.PCA}}, \code{\link{summary.PCA}}, \code{\link{plot.PCA}}, \code{\link{dimdesc}},\cr \href{https://www.youtube.com/watch?v=CTSbxU6KLbM&list=PLnZgp6epRBbTsZEFXi_p6W48HhNyqwxIu&index=3}{Video showing how to perform PCA with FactoMineR}} \examples{ data(decathlon) res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup=13) ## plot of the eigenvalues ## barplot(res.pca$eig[,1],main="Eigenvalues",names.arg=1:nrow(res.pca$eig)) summary(res.pca) plot(res.pca,choix="ind",habillage=13) \dontrun{ ## To describe the dimensions dimdesc(res.pca, axes = 1:2) ## To draw ellipses around the categories of the 13th variable (which is categorical) plotellipses(res.pca,13) ## Graphical interface require(Factoshiny) res <- Factoshiny(decathlon) ## Example with missing data ## use package missMDA require(missMDA) data(orange) nb <- estim_ncpPCA(orange,ncp.min=0,ncp.max=5,method.cv="Kfold",nbsim=50) imputed <- imputePCA(orange,ncp=nb$ncp) res.pca <- PCA(imputed$completeObs) } } \keyword{multivariate} FactoMineR/man/MFA.Rd0000644000176200001440000001502414535546241013721 0ustar liggesusers\name{MFA} \alias{MFA} \title{Multiple Factor Analysis (MFA)} \description{ Performs Multiple Factor Analysis in the sense of Escofier-Pages with supplementary individuals and supplementary groups of variables. Groups of variables can be quantitative, categorical or contingency tables.\cr Specific Multiple Fac tor Analysis can be performed using the argument excl.\cr Missing values in numeric variables are replaced by the column mean.\cr Missing values in categorical variables are treated as an additional level. } \usage{ MFA (base, group, type = rep("s",length(group)), excl = NULL, ind.sup = NULL, ncp = 5, name.group = NULL, num.group.sup = NULL, graph = TRUE, weight.col.mfa = NULL, row.w = NULL, axes = c(1,2), tab.comp=NULL) } \arguments{ \item{base}{a data frame with \emph{n} rows (individuals) and \emph{p} columns (variables)} \item{group}{a vector with the number of variables in each group} \item{type}{the type of variables in each group; four possibilities: "c" or "s" for quantitative variables (the difference is that for "s" variables are scaled to unit variance), "n" for categorical variables "m" for group of mixed variables and "f" for frequencies (from a contingency tables); by default, all variables are quantitative and scaled to unit variance} \item{excl}{an argument that may possible to exclude categories of active variables of categorical variable groups. NULL by default, it is a list with indexes of categories that are excluded per group} \item{ind.sup}{a vector indicating the indexes of the supplementary individuals} \item{ncp}{number of dimensions kept in the results (by default 5)} \item{name.group}{a vector containing the name of the groups (by default, NULL and the group are named group.1, group.2 and so on)} \item{num.group.sup}{the indexes of the illustrative groups (by default, NULL and no group are illustrative)} \item{graph}{boolean, if TRUE a graph is displayed} \item{weight.col.mfa}{vector of weights, useful for HMFA method (by default, NULL and an MFA is performed)} \item{row.w}{an optional row weights (by default, a vector of 1 for uniform row weights); the weights are given only for the active individuals} \item{axes}{a length 2 vector specifying the components to plot} \item{tab.comp}{object obtained from the imputeMFA function of the missMDA package that allows to handle missing values} } \value{ \item{summary.quali}{a summary of the results for the categorical variables} \item{summary.quanti}{a summary of the results for the quantitative variables} \item{separate.analyses}{the results for the separate analyses} \item{eig}{a matrix containing all the eigenvalues, the percentage of variance and the cumulative percentage of variance} \item{group}{a list of matrices containing all the results for the groups (Lg and RV coefficients, coordinates, square cosine, contributions, distance to the origin, the correlations between each group and each factor)} \item{rapport.inertie}{inertia ratio} \item{ind}{a list of matrices containing all the results for the active individuals (coordinates, square cosine, contributions)} \item{ind.sup}{a list of matrices containing all the results for the supplementary individuals (coordinates, square cosine)} \item{quanti.var}{a list of matrices containing all the results for the quantitative variables (coordinates, correlation between variables and axes, contribution, cos2)} \item{quali.var}{a list of matrices containing all the results for categorical variables (coordinates of each categories of each variables, contribution and v.test which is a criterion with a Normal distribution)} \item{freq}{a list of matrices containing all the results for the frequencies (coordinates, contribution, cos2)} \item{quanti.var.sup}{a list of matrices containing all the results for the supplementary quantitative variables (coordinates, correlation between variables and axes, cos2)} \item{quali.var.sup}{a list of matrices containing all the results for the supplementary categorical variables (coordinates of each categories of each variables, cos2 and v.test which is a criterion with a Normal distribution)} \item{freq.sup}{a list of matrices containing all the results for the supplementary frequencies (coordinates, cos2)} \item{partial.axes}{a list of matrices containing all the results for the partial axes (coordinates, correlation between variables and axes, correlation between partial axes)} \item{global.pca}{the result of the analysis when it is considered as a unique weighted PCA} Returns the individuals factor map, the variables factor map and the groups factor map.\cr The plots may be improved using the argument autolab, modifying the size of the labels or selecting some elements thanks to the \code{\link{plot.MFA}} function. } \references{ Escofier, B. and Pages, J. (1994) Multiple Factor Analysis (AFMULT package). \emph{Computational Statistics and Data Analysis}, 18, 121-140.\cr Becue-Bertaut, M. and Pages, J. (2008) Multiple factor analysis and clustering of a mixture of quantitative, categorical and frequency data. \emph{Computational Statistice and Data Analysis}, 52, 3255-3268. } \author{Francois Husson \email{francois.husson@institut-agro.fr}, J. Mazet} \seealso{ \code{\link{print.MFA}}, \code{\link{summary.MFA}}, \code{\link{plot.MFA}}, \code{\link{dimdesc}},\cr \href{https://www.youtube.com/watch?v=g5_hM93e8HM&list=PLnZgp6epRBbTsZEFXi_p6W48HhNyqwxIu&index=6}{Video showing how to perform MFA with FactoMineR}} \examples{ \dontrun{ data(wine) res <- MFA(wine, group=c(2,5,3,10,9,2), type=c("n",rep("s",5)), ncp=5, name.group=c("orig","olf","vis","olfag","gust","ens"), num.group.sup=c(1,6)) summary(res) barplot(res$eig[,1],main="Eigenvalues",names.arg=1:nrow(res$eig)) #### Confidence ellipses around categories per variable plotellipses(res) plotellipses(res,keepvar="Label") ## for 1 variable #### Interactive graph liste = plotMFApartial(res) plot(res,choix="ind",habillage = "Terroir") ###Example with groups of categorical variables data (poison) MFA(poison, group=c(2,2,5,6), type=c("s","n","n","n"), name.group=c("desc","desc2","symptom","eat"), num.group.sup=1:2) ###Example with groups of frequency tables data(mortality) res<-MFA(mortality,group=c(9,9),type=c("f","f"), name.group=c("1979","2006")) ## Graphical interface require(Factoshiny) res <- Factoshiny(wine) ### with missing values require(missMDA) data(orange) res.impute <- imputeMFA(orange, group=c(5,3), type=rep("s",2),ncp=2) res.mfa <- MFA(res.impute$completeObs,group=c(5,3),type=rep("s",2)) } } \keyword{multivariate} FactoMineR/man/print.AovSum.Rd0000644000176200001440000000104014500575664015657 0ustar liggesusers\name{print.AovSum} \alias{print.AovSum} \title{Print the AovSum results} \description{ Print the results of the ANOVA obtained by the function AovSum. } \usage{ \method{print}{AovSum}(x, \dots) } \arguments{ \item{x}{an object of class AovSum} \item{\dots}{further arguments passed to or from other methods} } \author{Vincent Guyader, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{AovSum}}} \examples{ \dontrun{ data(senso) res <- AovSum(Score~ Product + Day , data=senso) res } } \keyword{print} FactoMineR/man/tea.Rd0000644000176200001440000000207512464754326014075 0ustar liggesusers\name{tea} \alias{tea} \docType{data} \title{tea (data)} \description{ The data used here concern a questionnaire on tea. We asked to 300 individuals how they drink tea (18 questions), what are their product's perception (12 questions) and some personal details (4 questions). } \usage{data(tea)} \format{ A data frame with 300 rows and 36 columns. Rows represent the individuals, columns represent the different questions. The first 18 questions are active ones, the 19th is a supplementary quantitative variable (the age) and the last variables are supplementary categorical variables. } \examples{ \dontrun{ data(tea) res.mca=MCA(tea,quanti.sup=19,quali.sup=20:36) plot(res.mca,invisible=c("var","quali.sup","quanti.sup"),cex=0.7) plot(res.mca,invisible=c("ind","quali.sup","quanti.sup"),cex=0.8) plot(res.mca,invisible=c("quali.sup","quanti.sup"),cex=0.8) dimdesc(res.mca) plotellipses(res.mca,keepvar=1:4) ## make a hierarchical clustering: click on the tree to define the number of clusters ## HCPC(res.mca) } } \keyword{datasets} FactoMineR/man/graph.var.Rd0000644000176200001440000000433014500575664015207 0ustar liggesusers\name{graph.var} \alias{graph.var} \title{Make graph of variables} \description{ Plot the graphs of the variables after a Factor Analysis. } \usage{ graph.var(x, axes = c(1, 2), xlim = NULL, ylim = NULL, col.sup = "blue", col.var = "black", draw="all", label=draw, lim.cos2.var = 0.1, cex = 1, title = NULL, new.plot = TRUE, \dots) } \arguments{ \item{x}{an object of class PCA, MCA, MFA or HMFA} \item{axes}{a length 2 vector specifying the components to plot} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{col.sup}{a color for the quantitative supplementary variables} \item{col.var}{a color for the variables} \item{draw}{a list of character for the variables which are drawn (by default, all the variables are drawn). You can draw all the active variables by putting "var" and/or all the supplementary variables by putting "quanti.sup" and/or a list with the names of the variables which should be drawn} \item{label}{a list of character for the variables which are labelled (by default, all the drawn variables are labelled). You can label all the active variables by putting "var" and/or all the supplementary variables by putting "quanti.sup" and/or a list with the names of the variables which should be labelled} \item{lim.cos2.var}{value of the square cosinus under the variables are not drawn} \item{cex}{cf. function \code{\link{par}} in the \pkg{graphics} package} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{new.plot}{boolean, if TRUE, a new graphical device is created} \item{\dots}{further arguments passed to or from other methods} } \value{ Returns the variables factor map. } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{PCA}}, \code{\link{MFA}}, \code{\link{MCA}}, \code{\link{DMFA}}, \code{\link{HMFA}}} \examples{ data(decathlon) res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup = 13, graph = FALSE) graph.var (res.pca, draw = c("var","Points"), label = c("Long.jump", "Points")) } \keyword{dplot} FactoMineR/man/tab.disjonctif.Rd0000644000176200001440000000040011432224603016173 0ustar liggesusers\name{tab.disjonctif} \alias{tab.disjonctif} \title{Make a disjonctif table} \description{ Make a disjonctif table. } \usage{ tab.disjonctif(tab) } \arguments{ \item{tab}{a data frame with factors} } \value{The disjonctif table} \keyword{algebra} FactoMineR/man/ellipseCA.Rd0000644000176200001440000000605114500575664015162 0ustar liggesusers\name{ellipseCA} \alias{ellipseCA} \title{Draw confidence ellipses in CA} \description{ Draw confidence ellipses in CA around rows and/or columns. } \usage{ ellipseCA (x, ellipse=c("col","row"), method="multinomial", nbsample=100, axes=c(1,2), xlim=NULL, ylim=NULL, col.row="blue", col.col="red", col.row.ell=col.row, col.col.ell=col.col, graph.type = c("ggplot","classic"), ggoptions = NULL, \dots) } \arguments{ \item{x}{an object of class CA} \item{ellipse}{a vector of character that defines which ellipses are drawn} \item{method}{the method to construct ellipses (see details below)} \item{nbsample}{number of samples drawn to evaluate the stability of the points} \item{axes}{a length 2 vector specifying the components to plot} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{col.row}{a color for the rows points} \item{col.col}{a color for columns points} \item{col.row.ell}{a color for the ellipses of rows points (the color "transparent" can be used if an ellipse should not be drawn)} \item{col.col.ell}{a color for the ellipses of columns points (the color "transparent" can be used if an ellipse should not be drawn)} \item{graph.type}{a character that gives the type of graph used: "ggplot" or "classic"} \item{ggoptions}{a list that gives the graph options when grah.type="ggplot" is used. See the optines and the default values in the details section} \item{\dots}{further arguments passed to or from the plot.CA function, such as title, invisible, ...} } \value{ Returns the factor map with the joint plot of CA with ellipses around some elements. } \details{ With \code{method="multinomial"}, the table X with the active elements is taken as a reference. Then new data tables are drawn in the following way: N (the sum of X) values are drawn from a multinomial distribution with theoretical frequencies equals to the values in the cells divided by N.\cr With \code{method="boot"}, the values are bootstrapped row by row: Ni (the sum of row i in the X table) values are taken in a vector with Nij equals to column j (with j varying from 1 to J). Thus \code{nbsample} new datasets are drawn and projected as supplementary rows and/or supplementary columns. Then confidence ellipses are drawn for each elements thanks to the \code{nbsample} supplementary points. } \references{ Lebart, L., Morineau, A. and Piron, M. (1995) Statistique exploratoire multidimensionnelle, \emph{Dunod}. } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{plot.CA}}, \code{\link{CA}}} \examples{ data(children) res.ca <- CA (children, col.sup = 6:8, row.sup = 15:18) ## Ellipses for all the active elements ellipseCA(res.ca) ## Ellipses around some columns only ellipseCA(res.ca,ellipse="col",col.col.ell=c(rep("red",2),rep("transparent",3)), invisible=c("row.sup","col.sup")) } \keyword{multivariate} FactoMineR/man/condes.Rd0000644000176200001440000000277014500575664014600 0ustar liggesusers\name{condes} \alias{condes} \title{Continuous variable description} \description{ Description continuous by quantitative variables and/or by categorical variables } \usage{ condes(donnee,num.var,weights=NULL,proba = 0.05)} \arguments{ \item{donnee}{a data frame made up of at least one quantitative variable and a set of quantitative variables and/or categorical variables} \item{num.var}{the number of the variable to characterized} \item{weights}{weights for the individuals; if NULL, all individuals has a weight equals to 1; the sum of the weights can be equal to 1 and then the weights will be multiplied by the number of individuals, the sum can be greater than the number of individuals} \item{proba}{the significance threshold considered to characterized the category (by default 0.05)} } \value{ Returns a list including: \item{quanti}{the description of the \code{num.var} variable by the quantitative variables. The variables are sorted in ascending order (from the one which characterized the most to the one which significantly characterized with the proba \code{proba})} \item{quali}{The categorical variables which characterized the continuous variables are listed in ascending order} \item{category}{description of the continuous variable \code{num.var} by each category of all the categorical variables} } \author{Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{catdes}}} \examples{ data(decathlon) condes(decathlon, num.var=3) } \keyword{multivariate} FactoMineR/man/simule.Rd0000644000176200001440000000214111432224603014574 0ustar liggesusers\name{simule} \alias{simule} \title{Simulate by bootstrap} \description{Simulate by bootstrap } \usage{ simule(data, nb.simul) } \arguments{ \item{data}{A data frame from which the rows are the original data from which the simualte data are calculated (by the average of a bootstrap sample. The columns corresponds to the variables for which the simulation should be done. The first column must be a factor allowing to group the rows. A bootstrap simulation is done for each level of this factor.} \item{nb.simul}{The number of simulations.} } \details{ The simulation is independently done for each level of the factor. The number of rows can be different for each levels. } \value{ \item{mean}{Data.frame with all the levels of the factor variable, and for each variable, the mean of the original data.} \item{simul}{Data.frame with all the levels of the factor variable, and for each variable, the nb.simul bootstrap simulations.} \item{simul.mean}{Data.frame with all the levels of the factor variable, and for each variable, the mean of the simulated data.} } \author{Jeremy Mazet} \keyword{dplot} FactoMineR/man/plot.GPA.Rd0000644000176200001440000000370214500575664014705 0ustar liggesusers\name{plot.GPA} \alias{plot.GPA} \title{Draw the General Procrustes Analysis (GPA) map} \description{ Draw the General Procrustes Analysis (GPA) map. } \usage{ \method{plot}{GPA}(x, axes = c(1, 2), lab.ind.moy = TRUE, habillage = "ind", partial = "all", chrono = FALSE, xlim = NULL, ylim = NULL, cex = 1, title = NULL, palette = NULL, \dots) } \arguments{ \item{x}{an object of class GPA} \item{axes}{a length 2 vector specifying the components to plot} \item{lab.ind.moy}{boolean, if TRUE, the label of the mean points are drawn} \item{habillage}{string corresponding to the color which are used. If "ind", one color is used for each individual; if "group" the individuals are colored according to the group} \item{partial}{list of the individuals or of the center of gravity for which the partial points should be drawn (by default, partial = "none" and no partial points are drawn)} \item{chrono}{boolean, if TRUE, the partial points of a same point are linked (useful when groups correspond to different moment)} \item{xlim}{range for the plotted 'x' values, defaulting to the range of the finite values of 'x'} \item{ylim}{range for the plotted 'y' values, defaulting to the range of the finite values of 'y'} \item{cex}{cf. function \code{\link{par}} in the \pkg{graphics} package} \item{title}{string corresponding to the title of the graph you draw (by default NULL and a title is chosen)} \item{palette}{the color palette used to draw the points. By default colors are chosen. If you want to define the colors : palette=palette(c("black","red","blue")); or you can use: palette=palette(rainbow(30)), or in black and white for example: palette=palette(gray(seq(0,.9,len=25)))} \item{\dots}{further arguments passed to or from other methods} } \value{ Returns the General Procrustes Analysis map. } \author{Elisabeth Morand, Francois Husson \email{francois.husson@institut-agro.fr}} \seealso{ \code{\link{GPA}}} \keyword{dplot} FactoMineR/DESCRIPTION0000644000176200001440000000230714610700001013736 0ustar liggesusersPackage: FactoMineR Version: 2.11 Title: Multivariate Exploratory Data Analysis and Data Mining Author: Francois Husson, Julie Josse, Sebastien Le, Jeremy Mazet Maintainer: Francois Husson Depends: R (>= 4.0) Imports: car,cluster,DT,ellipse,emmeans,flashClust,graphics,grDevices,lattice,leaps,MASS,multcompView,scatterplot3d,stats,utils,ggplot2,ggrepel Suggests: missMDA,knitr,Factoshiny,markdown Description: Exploratory data analysis methods to summarize, visualize and describe datasets. The main principal component methods are available, those with the largest potential in terms of applications: principal component analysis (PCA) when variables are quantitative, correspondence analysis (CA) and multiple correspondence analysis (MCA) when variables are categorical, Multiple Factor Analysis when variables are structured in groups, etc. and hierarchical cluster analysis. F. Husson, S. Le and J. Pages (2017). License: GPL (>= 2) URL: http://factominer.free.fr BugReports: https://github.com/husson/FactoMineR Encoding: UTF-8 VignetteBuilder: knitr NeedsCompilation: yes Packaged: 2024-04-19 14:46:13 UTC; husson Repository: CRAN Date/Publication: 2024-04-20 08:42:41 UTC FactoMineR/build/0000755000176200001440000000000014610501665013344 5ustar liggesusersFactoMineR/build/vignette.rds0000644000176200001440000000032214610501665015700 0ustar liggesusers} 0ǥ ])K)נ MQ7hg&wt0 tCEc; lD"^ƊFU Zӥƙ4Lq"q6)Rܞu&EKB3`cb\@֧J3}yr]浧>hڶmET"%%1k&)]FactoMineR/src/0000755000176200001440000000000014610501665013034 5ustar liggesusersFactoMineR/src/init.c0000644000176200001440000000106014407317344014143 0ustar liggesusers#include #include // optional #include #include #include "disjonctif.h" #define CALLDEF(name, n) {#name, (DL_FUNC) &name, n} static const R_CallMethodDef R_CallDef[] = { CALLDEF(disjoVar, 2), CALLDEF(disjoVarProp, 3), CALLDEF(disjoMatProp, 4), CALLDEF(disjoMat, 3), {NULL, NULL, 0} }; void attribute_visible // optional R_init_disjo(DllInfo *dll) { R_registerRoutines(dll, NULL, R_CallDef, NULL, NULL); R_useDynamicSymbols(dll, FALSE); R_forceSymbols(dll, FALSE); } FactoMineR/src/disjonctif.c0000644000176200001440000001702514066351262015342 0ustar liggesusers#include #include #include "disjonctif.h" /** \fn disjoVar * \brief disjonctif 1 variable * * \param rfact: vector int [1:n] of int (between 1 and niveaux) * \param rparamint vector int * - [0] = n (number of observations) * - [1] = niveaux (number of levels) * \return rans : matrix n x niveaux of int * ******************************************************************/ SEXP disjoVar(SEXP rfact, SEXP rparamint) { size_t i, j, n, niveaux; int *fact, *paramint, *ans, jp1; fact= INTEGER(rfact); paramint= INTEGER(rparamint); n = (size_t) paramint[0]; niveaux = (size_t) paramint[1]; /*********************************************************************/ /* output to R */ /*********************************************************************/ SEXP rans = PROTECT(allocMatrix(INTSXP, n, niveaux)); ans = INTEGER(rans); /*********************************************************************/ /* loop */ /*********************************************************************/ jp1=1; /* jp1 = j+1 */ for (j=0 ; j Introduction


title: “FactoMineR” author: “Francois Husson” output: pdf_document: fig_height: 6 keep_tex: yes html_document: default word_document: default

Introduction

The FactoMineR package is a package dedicated to exploratory multivariate data analysis using R. One of the main reasons for developing this package is that we felt a need for a multivariate approach closer to our practice via:

  • the introduction of ``supplementary’’ information;
  • the use of a more geometrical point of view than the one usually adopted by most of the Anglo-American practitioners. Another reason is that obviously it represents a convenient way to implement new methodologies (or methodologies dedicated to the advanced practitioner) as the ones we’re presenting thereafter that take into account different structure on the data such as:
  • a partition on the variables;
  • a partition on the individuals;
  • a hierarchy structure on the variables.

You can see more information about the package with the paper published in the Journal of Statistical Software: http://www.jstatsoft.org/article/view/v025i01/

MOOC

You can follow freely a MOOC on these methods. You will find videos on the methods and videos on the package FactoMineR: http://factominer.free.fr/course/MOOC.html

Website

Lot of information are available on the Website: http://factominer.free.fr

You will find many tutorials and a MOOC on exploratory multivariate data analysis methods such as principal component analysis, correspondence analysis, multiple correspondence analysis and multiple factor analysis

FactoMineR/vignettes/clustering.Rmd0000644000176200001440000000067314512004663017103 0ustar liggesusers --- title: "Clustering" author: "Francois Husson" output: pdf_document: fig_height: 6 keep_tex: yes html_document: default word_document: default --- # Introduction You can see this that gives some ideas about the use of Principal Component methods with clustering methods: http://factominer.free.fr/more/HCPC_husson_josse.pdf FactoMineR/vignettes/FactoMineR.Rmd0000644000176200001440000000336514512004650016710 0ustar liggesusers--- output: pdf_document: default html_document: default --- --- title: "FactoMineR" author: "Francois Husson" output: pdf_document: fig_height: 6 keep_tex: yes html_document: default word_document: default --- # Introduction The FactoMineR package is a package dedicated to exploratory multivariate data analysis using R. One of the main reasons for developing this package is that we felt a need for a multivariate approach closer to our practice via: * the introduction of ``supplementary'' information; * the use of a more geometrical point of view than the one usually adopted by most of the Anglo-American practitioners. Another reason is that obviously it represents a convenient way to implement new methodologies (or methodologies dedicated to the advanced practitioner) as the ones we're presenting thereafter that take into account different structure on the data such as: * a partition on the variables; * a partition on the individuals; * a hierarchy structure on the variables. You can see more information about the package with the paper published in the Journal of Statistical Software: http://www.jstatsoft.org/article/view/v025i01/ # MOOC You can follow freely a MOOC on these methods. You will find videos on the methods and videos on the package FactoMineR: http://factominer.free.fr/course/MOOC.html # Website Lot of information are available on the Website: http://factominer.free.fr You will find many tutorials and a MOOC on exploratory multivariate data analysis methods such as principal component analysis, correspondence analysis, multiple correspondence analysis and multiple factor analysis FactoMineR/NEWS0000644000176200001440000000124213567563032012751 0ustar liggesusersNews version 2.0 -------- - graphs are in ggplot by defaut. Classical graphs can be obtained with the argument graph.type="classic" in the plot functions - MCA function handles missing values and suppplementary variables and supplementary individuals when the imputation is performed with the imputeMCA function of the missMDA package - FAMD function handles missing values and suppplementary variables and supplementary individuals when the imputation is performed with the imputeFAMD function of the missMDA package - MFA function handles missing values and suppplementary groups when the imputation is performed with the imputeMFA function of the missMDA package FactoMineR/R/0000755000176200001440000000000014574002745012452 5ustar liggesusersFactoMineR/R/plot.DMFA.R0000644000176200001440000001615414132274047014264 0ustar liggesusersplot.DMFA <- function (x, axes = c(1, 2), choix = "ind", label = "all", lim.cos2.var = 0., xlim=NULL, ylim=NULL, title = NULL,palette = NULL, new.plot = FALSE, autoLab = c("auto","yes","no"), ...) { res.dmfa <- x autoLab <- match.arg(autoLab,c("auto","yes","no")) if (autoLab=="yes") autoLab <- TRUE if (autoLab=="no") autoLab <- FALSE class(res.dmfa) <- c("PCA", "list") if (choix == "ind"){ if(is.null(title)) titre <- "Individuals factor map (PCA)" else titre <- title plot.PCA(res.dmfa, habillage = 1, axes = axes, label = label, xlim = xlim, ylim = ylim, autoLab = autoLab, title = titre,graph.type="classic",...) } if (choix == "quali") { if (length(res.dmfa$call$quali.sup$modalite) == 1) stop("There is no supplementary qualitative variable") lev <- levels(res.dmfa$call$X[, 1]) ng <- length(lev) nb.quali <- (length(res.dmfa$call$quali.sup$modalite) - 1)/2 xlim <- 1.1 * c(min(res.dmfa$quali.sup$coord[, axes[1]]), max(res.dmfa$quali.sup$coord[, axes[1]])) ylim <- 1.1 * c(min(res.dmfa$quali.sup$coord[, axes[2]]), max(res.dmfa$quali.sup$coord[, axes[2]])) lab.x <- paste("Dim ", axes[1], " (", signif(res.dmfa$eig[axes[1], 2], 4), " %)", sep = "") lab.y <- paste("Dim ", axes[2], " (", signif(res.dmfa$eig[axes[2], 2], 4), " %)", sep = "") if(is.null(title)) titre <- "Qualitative representation" else titre <- title if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() if (is.null(palette)) palette(c("black", "red", "green3", "blue", "cyan", "magenta","darkgray", "darkgoldenrod", "darkgreen", "violet","turquoise", "orange", "lightpink", "lavender", "yellow","lightgreen", "lightgrey", "lightblue", "darkkhaki","darkmagenta", "darkolivegreen", "lightcyan", "darkorange","darkorchid", "darkred", "darksalmon", "darkseagreen","darkslateblue", "darkslategray", "darkslategrey","darkturquoise", "darkviolet", "lightgray", "lightsalmon","lightyellow", "maroon")) plot(0, 0, main = titre, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp = 1, ...) abline(v = 0, lty = 2,...) abline(h = 0, lty = 2,...) for (i in 1:sum(res.dmfa$call$quali.sup$modalite[2:(1 + nb.quali)])) { points(res.dmfa$quali.sup$coord[i, axes[1]], res.dmfa$quali.sup$coord[i, axes[2]], pch = 15,...) text(res.dmfa$quali.sup$coord[i, axes[1]], res.dmfa$quali.sup$coord[i, axes[2]], rownames(res.dmfa$quali.sup$coord)[i], pos = 3,...) for (j in 1:ng) { points(res.dmfa$quali.sup$coord[sum(res.dmfa$call$quali.sup$modalite[2:(1 + nb.quali)]) + ng * (i - 1) + j, axes[1]], res.dmfa$quali.sup$coord[sum(res.dmfa$call$quali.sup$modalite[2:(1 + nb.quali)]) + ng * (i - 1) + j, axes[2]], col = j + 1, pch = 20,...) lines(c(res.dmfa$quali.sup$coord[i, axes[1]], res.dmfa$quali.sup$coord[sum(res.dmfa$call$quali.sup$modalite[2:(1 + nb.quali)]) + ng * (i - 1) + j, axes[1]]), c(res.dmfa$quali.sup$coord[i, axes[2]], res.dmfa$quali.sup$coord[sum(res.dmfa$call$quali.sup$modalite[2:(1 + nb.quali)]) + ng * (i - 1) + j, axes[2]]), col = j + 1,...) } } legend("topleft", legend = rownames(res.dmfa$group$coord), text.col = 2:(1 + ng), cex = 0.8, bg = "white") } if (choix == "var") { lev <- levels(res.dmfa$call$X[, 1]) ng <- length(lev) if(is.null(title)) titre <- "Variables factor map (PCA)" else titre <- title plot.PCA(res.dmfa, choix = "var", axes = axes, col.var = ng + 1, lim.cos2.var = lim.cos2.var, label = label, autoLab = autoLab, title = titre, graph.type="classic",...) for (j in 1:ng) { cor.partiel <- res.dmfa$var.partiel[[j]][, axes] cor.cos2 <- res.dmfa$cor.dim.gr[[j]][axes[1], axes[2]] for (v in 1:nrow(cor.partiel)) { qualite <- (cor.partiel[v, 1]^2 + cor.partiel[v, 2]^2)/sqrt(cor.partiel[v, 1]^2 + cor.partiel[v, 2]^2 + 2 * cos(cor.cos2) * (cor.partiel[v, 1] * cor.partiel[v, 2])) arrows(0, 0, cor.partiel[v, 1], cor.partiel[v, 2], length = 0.1 * qualite, angle = 15, code = 2, col = j,...) if (abs(cor.partiel[v, 1]) > abs(cor.partiel[v, 2])) { if (cor.partiel[v, 1] >= 0) pos <- 4 else pos <- 2 } else { if (cor.partiel[v, 2] >= 0) pos <- 3 else pos <- 1 } if (label == "all") text(cor.partiel[v, 1], y = cor.partiel[v, 2], labels = rownames(cor.partiel)[v], pos = pos, col = j,...) } } legend("bottomleft", legend = c(lev, "var"), text.col = 1:(ng + 1), cex = 0.8, bg = "white") Xc <- res.dmfa$Xc for (j in 1:ng) { auxil <- res.dmfa$ind$coord[res.dmfa$call$X[, 1] == lev[j], axes] prefpls(cbind(auxil, Xc[[j]][rownames(auxil), ]), title = paste("Biplot between axes ", axes[1], " and ", axes[2], " for group ", lev[j], sep = "")) } } if (choix == "group") { if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() if (is.null(palette)) palette(c("black", "red", "green3", "blue", "cyan", "magenta","darkgray", "darkgoldenrod", "darkgreen", "violet","turquoise", "orange", "lightpink", "lavender", "yellow","lightgreen", "lightgrey", "lightblue", "darkkhaki","darkmagenta", "darkolivegreen", "lightcyan", "darkorange","darkorchid", "darkred", "darksalmon", "darkseagreen","darkslateblue", "darkslategray", "darkslategrey","darkturquoise", "darkviolet", "lightgray", "lightsalmon","lightyellow", "maroon")) coord.gr <- res.dmfa$group$coord.n lev <- levels(res.dmfa$call$X[, 1]) ng <- length(lev) xlim <- 1.1 * c(0, max(1, max(coord.gr[, axes[1]]))) ylim <- 1.1 * c(0, max(1, max(coord.gr[, axes[2]]))) if(is.null(title)) titre <- "Projection of the groups" else titre <- title plot(0, 0, xlab = paste("Dim", axes[1]), ylab = paste("Dim", axes[2]), xlim = xlim, ylim = ylim, col = "white", asp = 1, main = titre,...) for (j in 1:ng) { points(coord.gr[j, axes[1]], coord.gr[j, axes[2]], col = j, pch = 15,...) if (label == "all") text(coord.gr[j, axes[1]], coord.gr[j, axes[2]], labels = lev[j], pos = 3,...) } abline(v = 0, lty = 2,...) abline(h = 0, lty = 2,...) } }FactoMineR/R/AovSum.r0000644000176200001440000002177714421213066014054 0ustar liggesusersAovSum <- function (formula, data, na.action = na.omit, ...) { warnings("You should use the LinearModel function instead of the AovSum function that is obsolete") old.contr = options()$contrasts on.exit(options(contrasts = old.contr)) if (missing(data)) { mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "weights", "na.action", "offset"), names(mf), 0L) mf <- mf[c(1L, m)] mf[[1L]] <- quote(stats::model.frame) data <- eval(mf, parent.frame()) } data <- as.data.frame(data) data <- droplevels(data) is.quali <- which(!unlist(lapply(data,is.numeric))) data[,is.quali] <- lapply(data[,is.quali,drop=FALSE],as.factor) options(contrasts = c("contr.sum", "contr.sum")) don = data arg <- list(...) arg <- c(arg, list(formula = formula, data = don, na.action = na.action)) modele <- do.call(aov, arg) test.F = car::Anova(modele, type = "III")[-1, ] test.F = test.F[c(1, 2, 2, 3, 4)] test.F[3] = test.F[1]/test.F[2] colnames(test.F)[1] = "SS" colnames(test.F)[2] = "df" colnames(test.F)[3] = "MS" test.T = summary.lm(modele)$coef cov.mat = vcov(modele) facteurs = rownames(attr(modele$terms, "factors"))[-1] interact = NULL if (length(colnames(attr(modele$terms, "factors"))) > length(facteurs)) interact = colnames(attr(modele$terms, "factors"))[-(1:length(facteurs))] niveau = list() for (i in 1:length(facteurs)) { if (is.factor(don[, facteurs[i]])) niveau[[i]] = paste(facteurs[i], levels(don[, facteurs[i]]), sep = " - ") else niveau[[i]] = facteurs[i] } res = test.T[c(1, 1), ] iinit = 2 for (i in 1:length(facteurs)) { old.rownames = rownames(res) if (is.factor(don[, facteurs[i]])) { indices = iinit:(iinit + nlevels(don[, facteurs[i]]) - 2) dern.mod = c(-sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), -sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res = rbind(res, test.T[indices, ], dern.mod) rownames(res) = c(old.rownames, niveau[[i]]) iinit = iinit + nlevels(don[, facteurs[i]]) - 1 } else { indices = iinit res = rbind(res, test.T[indices, ]) rownames(res) = c(old.rownames, niveau[[i]]) iinit = iinit + 1 } } res = res[-1, ] if (!is.null(interact)) { for (k in 1:length(interact)) { fact.int = rownames(attr(modele$terms, "factors"))[which(attr(modele$terms, "factors")[, interact[k]] == 1)] old.rownames = rownames(res) fact1 = fact.int[1] fact2 = fact.int[2] iinit0 = iinit if ((is.factor(don[, fact1])) & (is.factor(don[, fact2]))) { for (l in 1:(nlevels(don[, fact2]) - 1)) { indices = iinit:(iinit + (nlevels(don[, fact1]) - 2)) dern.mod = c(-sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), -sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res = rbind(res, test.T[indices, ], dern.mod) iinit = iinit + (nlevels(don[, fact1]) - 1) } iinit = iinit0 for (l in 1:(nlevels(don[, fact1]) - 1)) { indices = iinit + (nlevels(don[, fact1]) - 1) * (0:(nlevels(don[, fact2]) - 2)) dern.mod = c(-sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), -sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res = rbind(res, dern.mod) iinit = iinit + 1 } indices = iinit0:(iinit0 + (nlevels(don[, fact1]) - 1) * (nlevels(don[, fact2]) - 1) - 1) dern.mod = c(sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res = rbind(res, dern.mod) iinit = iinit0 + (nlevels(don[, fact1]) - 1) * (nlevels(don[, fact2]) - 1) nom = old.rownames aa = paste(fact2, levels(don[, fact2]), sep = " - ") for (i in 1:length(aa)) nom = c(nom, paste(paste(fact1, levels(don[, fact1]), sep = " - "), aa[i], sep = " : ")) } if ((is.factor(don[, fact1])) & (!is.factor(don[, fact2]))) { indices = iinit:(iinit + (nlevels(don[, fact1]) - 2)) dern.mod = c(-sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), -sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res = rbind(res, test.T[indices, ], dern.mod) iinit = iinit + (nlevels(don[, fact1]) - 1) nom = c(old.rownames, paste(paste(fact1, levels(don[, fact1]), sep = " - "), fact2, sep = " : ")) } if ((!is.factor(don[, fact1])) & (is.factor(don[, fact2]))) { indices = iinit:(iinit + (nlevels(don[, fact2]) - 2)) dern.mod = c(-sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), -sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res = rbind(res, test.T[indices, ], dern.mod) iinit = iinit + (nlevels(don[, fact2]) - 1) nom = c(old.rownames, paste(paste(fact2, levels(don[, fact2]), sep = " - "), fact1, sep = " : ")) } if ((!is.factor(don[, fact1])) & (!is.factor(don[, fact2]))) { indices = iinit res = rbind(res, test.T[indices, ]) iinit = iinit + 1 nom = c(old.rownames, paste(fact1, fact2, sep = " : ")) } rownames(res) = nom } } result = list(Ftest = test.F, Ttest = res) class(result) <- "AovSum" options(contrasts = old.contr) return(result) } FactoMineR/R/predict.PCA.R0000644000176200001440000000206713145555116014634 0ustar liggesuserspredict.PCA <- function(object, newdata,...){ if (!is.null(colnames(newdata))) { if (any(!(rownames(object$var$coord)%in%colnames(newdata)))) warning("The names of the variables is not the same as the ones in the active variables of the PCA result") } ecart.type <- object$call$ecart.type centre <- object$call$centre col.w <- object$call$col.w ncp <- ncol(object$var$coord) if (is.null(ecart.type)) ecart.type <- rep(1, length(centre)) newdata <- newdata[,rownames(object$var$coord)] newdata <- t(t(as.matrix(newdata))-centre) newdata <- t(t(newdata)/ecart.type) coord <- t(t(newdata)*col.w) coord <- crossprod(t(coord),object$svd$V) dist2 <- rowSums(t(t(newdata^2)*col.w)) cos2 <- coord^2/dist2 coord <- coord[, 1:ncp, drop = F] cos2 <- cos2[, 1:ncp, drop = F] colnames(coord) <- colnames(cos2) <- paste("Dim", c(1:ncp), sep = ".") rownames(coord) <- rownames(cos2) <- names(dist2) <- rownames(newdata) result <- list(coord = coord, cos2 = cos2, dist = sqrt(dist2)) return(result) }FactoMineR/R/print.CaGalt.R0000644000176200001440000000426212430500747015061 0ustar liggesusersprint.CaGalt<-function (x, file = NULL, sep = ";", ...) { res.cagalt <- x if (!inherits(res.cagalt, "CaGalt")) stop("non convenient data") cat("**Results for the Correspondence Analysis on Generalised Aggregated Lexical Table (CaGalt)**\n") cat("*The results are available in the following objects:\n\n") res <- array("", c(15, 2), list(1:15, c("name", "description"))) res[1, ] <- c("$eig", "eigenvalues") res[2, ] <- c("$ind", "results for the individuals") res[3, ] <- c("$ind$coord", "coordinates for the individuals") res[4, ] <- c("$ind$cos2", "cos2 for the individuals") res[5, ] <- c("$freq", "results for the frequencies") res[6, ] <- c("$freq$coord", "coordinates for the frequencies") res[7, ] <- c("$freq$cos2", "cos2 for the frequencies") res[8, ] <- c("$freq$contrib", "contributions of the frequencies") indice <- 9 if (!is.null(res.cagalt$quanti.var)) { res[indice, ] <- c("$quanti.var", "results for the quantitative variables") res[indice + 1, ] <- c("$quanti.var$coord", "coordinates for the quantitative variables") res[indice + 2, ] <- c("$quanti.var$cor", "correlations between quantitative variables and dimensions") res[indice + 3, ] <- c("$quanti.var$cos2", "cos2 for the quantitative variables") indice <- indice + 3 } if (!is.null(res.cagalt$quali.var)) { res[indice, ] <- c("$quali.var", "results for the categorical variables") res[indice + 1, ] <- c("$quali.var$coord", "coordinates for the categories") res[indice + 2, ] <- c("$quali.var$cos2", "cos2 for the categories") indice <- indice + 2 } if(!is.null(res.cagalt$ellip)) { res[indice + 1, ] <- c("$ellip", "coordinates to construct confidence ellipses") res[indice + 2, ] <- c("$ellip$freq", "coordinates of the ellipses for the frequencies") res[indice + 3, ] <- c("$ellip$var", "coordinates of the ellipses for the variables") indice <- indice + 3 } print(res[1:indice, ]) if (!is.null(file)) { write.infile(res.cagalt, file = file, sep = sep) print(paste("All the results are in the file", file)) } }FactoMineR/R/HMFA.R0000644000176200001440000002122414132270702013277 0ustar liggesusersHMFA<-function (X, H, type = rep("s", length(H[[1]])), ncp = 5, graph = TRUE, axes=c(1,2), name.group = NULL) { hdil <- function(H) { nbnivh <- length(H) dil <- H a <- NULL dil[[nbnivh]] <- rep(length(H[[nbnivh]]), length(H[[nbnivh]])) if (nbnivh > 1) { for (i in 1:(nbnivh - 1)) { h <- nbnivh - i k <- nbnivh - i + 1 for (j in 1:length(H[[k]])) a <- c(a, rep(H[[k]][j] * dil[[k]][j], H[[k]][j])) dil[[h]] <- a a <- NULL } } return(dil) } htabdes <- function(H) { nbnivh <- length(H) nbvarh <- H if (nbnivh > 1) { for (i in 2:nbnivh) { for (j in 1:length(H[[i]])) { nbvarh[[i]][j] <- 0 if (j == 1) { for (k in 1:H[[i]][1]) nbvarh[[i]][j] <- nbvarh[[i]][j] + nbvarh[[i - 1]][k] } else { a <- 0 b <- 0 for (n in 1:(j - 1)) a <- a + H[[i]][n] a <- a + 1 for (n in 1:j) b <- b + H[[i]][n] for (k in a:b) nbvarh[[i]][j] <- nbvarh[[i]][j] + nbvarh[[i - 1]][k] } } } } return(nbvarh) } hweight <- function(X, H, type = rep("s", length(H[[1]]))) { Hq <- H niv1 <- MFA(X, group = H[[1]], type = type, graph = FALSE) cw <- niv1$call$col.w Hq[[1]] <- niv1$call$group.mod Hinter <- htabdes(Hq) nbnivh <- length(Hq) cw.partiel <- H cw.partiel[[1]] <- cw for (n in 2:nbnivh) { niv2 <- MFA(niv1$call$XTDC, group = Hinter[[n]], type = c(rep("c", length(Hinter[[n]]))), weight.col.mfa = cw, graph = FALSE) cw <- niv2$call$col.w * cw cw.partiel[[n]] <- cw } return(cw.partiel) } if (is.null(rownames(X))) rownames(X) <- 1:nrow(X) if (is.null(colnames(X))) colnames(X) <- paste("V",1:ncol(X),sep="") X <- as.data.frame(X) is.quali <- which(!unlist(lapply(X,is.numeric))) X[,is.quali] <- lapply(X[,is.quali,drop=FALSE],as.factor) for (j in 1:ncol(X)) if (colnames(X)[j]=="") colnames(X)[j] <- paste("V",j,sep="") for (j in 1:nrow(X)) if (is.null(rownames(X)[j])) rownames(X)[j] <- paste("row",j,sep="") ## avoid problem when a category has 0 individuals for (j in 1:ncol(X)) { if (!is.numeric(X[,j])) levels(X[,j])[which(table(X[,j])==0)] <- levels(X[,j])[which(table(X[,j])!=0)[1]] } poids <- hweight(X, H, type = type) nbind <- dim(X)[1] nbnivo <- length(H) res1 <- list() for (j in 1:ncol(X)) { if (is.numeric(X[,j])) X[,j] <- scale(X[,j],scale=FALSE) } niv1 <- MFA(X, group = H[[1]], type = type, ncp = ncp, graph = FALSE) X <- niv1$call$XTDC Hq <- H Hq[[1]] <- niv1$call$group.mod Xdes <- htabdes(Hq) ind.var <- 0 ind.quali <- NULL nbgroup <- length(H[[1]]) for (g in 1:nbgroup) { if (type[g] == "n") ind.quali <- c(ind.quali, c((ind.var + 1):(ind.var + niv1$call$group.mod[g]))) ind.var <- ind.var + niv1$call$group.mod[g] } for (h in 1:nbnivo) { nbgroup <- length(H[[h]]) ind.col <- 0 data.partiel <- vector(mode = "list", length = nbgroup) group.mod <- Xdes[[h]] for (g in 1:nbgroup) { data.partiel[[g]] <- as.data.frame(matrix(0, nrow(X), ncol(X), byrow = TRUE, dimnames = dimnames(X))) data.partiel[[g]][, (ind.col + 1):(ind.col + Xdes[[h]][g])] <- X[,(ind.col + 1):(ind.col + Xdes[[h]][g])] ind.col <- ind.col + group.mod[g] } res1[[h]] <- data.partiel } res.afmh <- PCA(X, col.w = poids[[nbnivo]], graph = FALSE, ncp = ncp, scale.unit = FALSE) dilat <- hdil(H) nb.v.p <- ncol(res.afmh$ind$coord) coord.group <- list() for (h in 1:nbnivo) { res <- sweep(as.matrix(res.afmh$var$coord^2),1,poids[[h]],FUN="*") nbgroup <- length(H[[h]]) ind.col <- 1 group.mod <- Xdes[[h]] aux.mat <- matrix(0, nbgroup, nb.v.p) for (g in 1:nbgroup) { aux.mat[g, ] <- apply(res[ind.col:(ind.col + group.mod[g] - 1),, drop=FALSE], 2, sum) ind.col <- ind.col + group.mod[g] } colnames(aux.mat) <- colnames(res.afmh$var$cor) if (is.null(name.group)){ name.aux <- paste("L", h, ".", sep = "") rownames(aux.mat) <- paste(name.aux, "G", 1:nbgroup, sep = "") } else{ rownames(aux.mat) <- name.group[[h]] } coord.group[[h]] <- aux.mat } part1 <- list() if (!is.null(ind.quali)) part1.quali <- list() for (h in 1:nbnivo) { nbgroup <- length(H[[h]]) part2 <- array(0, dim = c(nrow(res.afmh$ind$coord), nb.v.p, nbgroup)) if (!is.null(ind.quali)) part2.quali <- array(0, dim = c(length(ind.quali), nb.v.p, nbgroup)) for (g in 1:nbgroup) { formule <- matrix(0, dim(X)[1], nb.v.p) formule <- sweep(as.matrix(res1[[h]][[g]]),2, poids[[nbnivo]],FUN="*") formule <- formule %*%t(X) formule <- sweep(formule,2,rep(nbind, nbind),FUN="/") formule <- formule %*% as.matrix(res.afmh$ind$coord) formule <- sweep(formule,2,res.afmh$eig[1:nb.v.p, 1]/ dilat[[h]][g],FUN="/") namecol <- paste("Dim", 1:nb.v.p, sep = "") formule <- matrix(formule, dim(formule)[1], dim(formule)[2]) colnames(part2) <- namecol rownames(part2) <- rownames(X) if (!is.null(ind.quali)) { rownames(part2.quali) <- colnames(X)[ind.quali] colnames(part2.quali) <- namecol } part2[, , g] <- formule } part1[[h]] <- part2 if (!is.null(ind.quali)) { for (k in 1:length(ind.quali)) if (sum(as.integer(X[,ind.quali[k]] > 0))<2) part2.quali[k, , ] <- part2[X[,ind.quali[k]] > 0, , ] else part2.quali[k, , ] <- apply(part2[X[,ind.quali[k]] > 0, , ], c(2, 3), mean) part1.quali[[h]] <- part2.quali } } ## ajout canonical <- matrix(0, 0 ,ncol(res.afmh$ind$coord)) colnames(canonical) <- colnames(res.afmh$ind$coord) for (h in 1:nbnivo) { nbgroup <- length(H[[h]]) for (g in 1:nbgroup) { canonical <- rbind(canonical, diag(cor(res.afmh$ind$coord,part1[[h]][,,g]))) } if (is.null(name.group)){ name.aux <- paste("L", h, ".", sep = "") rownames(canonical)[(nrow(canonical)-nbgroup+1):nrow(canonical)] <- paste(name.aux, "G", 1:nbgroup, sep = "") } else rownames(canonical)[(nrow(canonical)-nbgroup+1):nrow(canonical)] <- name.group[[h]] } ## fin ajout res.afmh$group <- list(coord=coord.group,canonical=canonical) results <- list(eig = res.afmh$eig, group = res.afmh$group, ind = res.afmh$ind, partial = part1) if (!is.null(ind.quali) & length(ind.quali) < nrow(res.afmh$var$coord)) { results$quanti.var$coord <- res.afmh$var$coord[-ind.quali, ] results$quanti.var$cor <- res.afmh$var$cor[-ind.quali, ] results$quanti.var$cos2 <- res.afmh$var$cos2[-ind.quali, ] results$quanti.var$contrib <- res.afmh$var$contrib[-ind.quali, ] } if (is.null(ind.quali)) { results$quanti.var$coord <- res.afmh$var$coord results$quanti.var$cor <- res.afmh$var$cor results$quanti.var$cos2 <- res.afmh$var$cos2 results$quanti.var$contrib <- res.afmh$var$contrib } if (!is.null(ind.quali)) { aux <- matrix(0, nrow = length(ind.quali), ncol = ncol(res.afmh$ind$coord)) for (k in 1:length(ind.quali)) if (sum(as.integer(X[,ind.quali[k]] > 0))<2) aux[k, ] <- res.afmh$ind$coord[X[,ind.quali[k]] > 0, ] else aux[k, ] <- apply(res.afmh$ind$coord[X[,ind.quali[k]] > 0, ], 2, mean) dimnames(aux) <- dimnames(res.afmh$var$contrib[ind.quali, ]) results$quali.var$coord <- aux results$quali.var$contrib <- res.afmh$var$contrib[ind.quali, ] results$quali.var$partial <- part1.quali } results$call$H <- H results$call$X <- X results$call$call <- sys.calls()[[1]] if (!is.null(ind.quali)) results$call$Hq <- Xdes class(results) <- c("HMFA", "list") if (graph) { plot.HMFA(results, choix = "ind",axes=axes,new.plot=TRUE) plot.HMFA(results, choix = "var",axes=axes,new.plot=TRUE) plot.HMFA(results, choix = "group",axes=axes,new.plot=TRUE) } return(results) } FactoMineR/R/autoLab.R0000644000176200001440000001511414132224764014163 0ustar liggesusers# Function taken from the directlabels package that it is in the public domain autoLab <- function(x, y = NULL, labels = seq(along = x), cex = 1, method = c("SANN", "GA"), allowSmallOverlap = FALSE, trace = FALSE, shadotext = FALSE, doPlot = TRUE, ...) { # http://en.wikipedia.org/wiki/Automatic_label_placement # http://www.szoraster.com/Cartography/PracticalExperience.htm # http://www.eecs.harvard.edu/~shieber/Projects/Carto/carto.html # http://i11www.iti.uni-karlsruhe.de/map-labeling/bibliography/ if (!missing(y) && (is.character(y) || is.expression(y))) { labels <- y y <- NULL } if (is.factor(labels)) labels <- as.character(labels) z <- xy.coords(x, y, recycle = TRUE) x <- z$x y <- z$y if (length(labels) < length(x)) labels <- rep(labels, length(x)) method <- match.arg(method) boundary <- par()$usr image_width <- boundary[2] - boundary[1] image_height <- boundary[4] - boundary[3] if (allowSmallOverlap) # default to 2% of the image size nudgeFactor <- .02*(abs(boundary[1] + 1i*boundary[2] - boundary[3] - 1i*boundary[4])) n_labels <- length(x) # There are eight possible alignment codes, corresponding to the # corners and side mid-points of the rectangle # Codes are 1:8 # Code 7 is the most preferred xBoundary <- image_width * 0.01 # add a small boundary around the rectangle yBoundary <- image_height * 0.01 width <- strwidth(labels, units = "user", cex = cex) + xBoundary height <- strheight(labels, units = "user", cex = cex) + yBoundary gen_offset <- function(code) c(-1, -1, -1, 0, 0, 1, 1, 1)[code] * (width/2) + 1i * c(-1, 0, 1, -1, 1, -1, 0, 1)[code] * (height/2) # Finds intersection area of two rectangles rect_intersect <- function(xy1, offset1, xy2, offset2) { w <- pmin(Re(xy1+offset1/2), Re(xy2+offset2/2)) - pmax(Re(xy1-offset1/2), Re(xy2-offset2/2)) h <- pmin(Im(xy1+offset1/2), Im(xy2+offset2/2)) - pmax(Im(xy1-offset1/2), Im(xy2-offset2/2)) w[w <= 0] <- 0 h[h <= 0] <- 0 w*h } nudge <- function(offset) { # Nudge the labels slightly if they overlap: doesIntersect <- rect_intersect(xy[rectidx1] + offset[rectidx1], rectv[rectidx1], xy[rectidx2] + offset[rectidx2], rectv[rectidx2]) > 0 pyth <- abs(xy[rectidx1] + offset[rectidx1] - xy[rectidx2] - offset[rectidx2]) / nudgeFactor eps <- 1.0e-10 for (i in which(doesIntersect & pyth > eps)) { idx1 <- rectidx1[i] idx2 <- rectidx2[i] vect <- (xy[idx1] + offset[idx1] - xy[idx2] - offset[idx2]) / pyth[idx1] offset[idx1] <- offset[idx1] + vect offset[idx2] <- offset[idx2] - vect } offset } objective <- function(gene) { offset <- gen_offset(gene) # Allow for "bending" the labels a bit if (allowSmallOverlap) offset <- nudge(offset) if (!is.null(rectidx1)) area <- sum(rect_intersect(xy[rectidx1] + offset[rectidx1], rectv[rectidx1], xy[rectidx2] + offset[rectidx2], rectv[rectidx2])) else area <- 0 # Penalize labels which go outside the image area # Count points outside of the image n_outside <- sum(Re(xy + offset - rectv/2) < boundary[1] | Re(xy + offset + rectv/2) > boundary[2] | Im(xy + offset - rectv/2) < boundary[3] | Im(xy + offset + rectv/2) > boundary[4]) area + n_outside * image_width * image_height } # Make a list of label rectangles in their reference positions, # centered over the map feature; the real labels are displaced # from these positions so as not to overlap # Note that some labels can be bigger than others xy <- x + 1i * y rectv <- width + 1i * height rectidx1 <- rectidx2 <- array(0, (length(x)^2 - length(x)) / 2) k<-0 for (i in 1:length(x)) for (j in seq(len=(i-1))) { k <- k + 1 rectidx1[k] <- i rectidx2[k] <- j } canIntersect <- rect_intersect(xy[rectidx1], 2 * rectv[rectidx1], xy[rectidx2], 2 * rectv[rectidx2]) > 0 rectidx1 <- rectidx1[canIntersect] rectidx2 <- rectidx2[canIntersect] if (trace) cat("possible intersects =", length(rectidx1), "\n") if (trace) cat("portion covered =", sum(rect_intersect(xy, rectv,xy,rectv))/(image_width*image_height),"\n") SANN <- function() { # Make some starting "genes" #gene = sample(1:8, n_labels, repl = TRUE) ### modif FH # 1 : bas gauche # 2 : gauche # 3 : haut gauche # 4 : bas # 5 : haut # 6 : bas froite # 7 : droite # 8 : haut droite gene <- rep(1, n_labels) gene <- gene + as.integer(Im(xy)>min(Im(xy))+diff(range(Im(xy)))/3) gene <- gene + as.integer(Im(xy)>min(Im(xy))+2*diff(range(Im(xy)))/3) gene <- gene + 3*as.integer(Re(xy)>min(Re(xy))+diff(range(Re(xy)))/3) gene <- gene + 3*as.integer(Re(xy)>min(Re(xy))+2*diff(range(Re(xy)))/3) gene [gene>=6] <- gene[gene>=6]-1 score <- objective(gene) bestgene <- gene bestscore <- score T <- 2.5 for (i in 1:50) { k <- 1 for (j in 1:50) { newgene <- gene newgene[sample(1:n_labels, 1)] <- sample(1:8,1) newscore <- objective(newgene) if (newscore < score || runif(1) < 1 - exp((newscore - score) / T)) { k <- k + 1 score <- newscore gene <- newgene } if (score <= bestscore) { bestscore <- score bestgene <- gene } if (bestscore == 0 || k == 10) break } if (bestscore == 0) break if (trace) cat("overlap area =", bestscore, "\n") T <- 0.9 * T } if (trace) cat("overlap area =", bestscore, "\n") nx <- Re(xy + gen_offset(bestgene)) ny <- Im(xy + gen_offset(bestgene)) list(x = nx, y = ny) } xy <- SANN() # Taken from http://article.gmane.org/gmane.comp.lang.r.general/147787 shadowtext <- function(xy, labels, col='black', bg='white', theta=seq(pi/4, 2*pi, length.out=8), r=0.1, ... ) { xy <- xy.coords(xy) xo <- r*strwidth('A') yo <- r*strheight('A') for (i in theta) text(xy$x + cos(i)*xo, xy$y + sin(i)*yo, labels, col=bg, ...) text(xy$x, xy$y, labels, col=col, ... ) } if (doPlot) ### modif FH if (shadotext==TRUE) shadowtext(xy, labels, cex = cex, ...) else text(xy, labels, cex = cex, ...) invisible(xy) } FactoMineR/R/CaGalt.R0000644000176200001440000001262613232362460013730 0ustar liggesusersCaGalt<-function(Y,X,type="s",conf.ellip=FALSE,nb.ellip=100,level.ventil=0,sx=NULL,graph=TRUE,axes=c(1,2)){ if (is.null(attributes(X)$row.names)) rownames(X) <- 1:nrow(X) if (is.null(attributes(X)$names)) colnames(X) <- colnames(X, do.NULL = FALSE,prefix="V") X <- as.data.frame(X) is.quali <- which(!unlist(lapply(X,is.numeric))) X[,is.quali] <- lapply(X[,is.quali,drop=FALSE],as.factor) X.initial<-X P<-as.matrix(Y/sum(Y)) PI.<-apply(P,1,sum) P.J<-apply(P,2,sum) mean.p <- function(V,poids) res<-sum(V*poids,na.rm=TRUE)/sum(poids[!is.na(V)]) sd.p <- function(V,poids) res<-sqrt(sum(V^2*poids,na.rm=TRUE)/sum(poids[!is.na(V)])) if (!type%in%c("c","s","n")) stop("not convenient type definition") if (is.null(sx)){ if (type!="n") ncp<-min(nrow(X)-1,ncol(X)) else ncp<-min(nrow(X)-1,ncol(tab.disjonctif(X))-ncol(X)) }else{ if (type!="n") ncp<-min(sx,nrow(X)-1,ncol(X)) else ncp<-min(sx,nrow(X)-1,ncol(tab.disjonctif(X))-ncol(X)) } if(type!="n"){ diag.X<-PCA(X,scale.unit=type=="s",ncp=ncp,row.w=PI.,graph=F) X<-as.matrix(sweep(X,2,apply(X,2,mean.p,PI.),"-")) if (type=="s") X<-sweep(X,2,apply(X,2,sd.p,PI.),"/") }else{ diag.X<-MCA(X,row.w=PI.,ncp=ncp,level.ventil=level.ventil,graph=F) if(ncol(X)>1) X<-sweep(tab.disjonctif(X),2,apply(tab.disjonctif(X),2,mean.p,PI.),"-") else X<-tab.disjonctif(X) } phi.stand<-diag.X$svd$U L<-sweep(crossprod(P,phi.stand),1,P.J,"/") T<-crossprod(P,X) C<-crossprod(sweep(X,1,PI.^(1/2),"*"),sweep(X,1,PI.^(1/2),"*")) W<-sweep(crossprod(t(T),ginv(C)),1,P.J,"/") colnames(W)<-colnames(T) diag.L<-PCA(cbind(L,W),quanti.sup=(ncp+1):(ncp+ncol(T)),scale.unit=FALSE,ncp=ncp,row.w=P.J,graph=F) coord.ind<-sweep(crossprod(t(P),diag.L$svd$U),1,PI.,"/") cos2.ind<-sweep(coord.ind^2,1,apply(coord.ind^2,1,sum),"/") res.ind<-list(coord=coord.ind,cos2=cos2.ind) res.freq<-list(coord=diag.L$ind$coord,cos2=diag.L$ind$cos2,contrib=diag.L$ind$contrib) res<-list(eig=diag.L$eig,ind=res.ind,freq=res.freq) if(type=="n") res$quali.var<-list(coord=diag.L$quanti.sup$coord,cos2=diag.L$quanti.sup$cos2) else res$quanti.var<-diag.L$quanti.sup PJ<-vector(mode="list",length=nb.ellip) for (n in 1:nb.ellip){ samp<-sample(1:nrow(Y),replace=TRUE) while(sum(apply(Y[samp,],2,sum)>0)!=ncol(Y)) samp<-sample(1:nrow(Y),replace=TRUE) Y.samp<-Y[samp,] P.samp<-as.matrix(Y.samp/sum(Y.samp)) PI.samp<-apply(P.samp,1,sum) P.J.samp<-apply(P.samp,2,sum) PJ[[n]]<-P.J.samp if(type=="n"){ X.samp<-sweep(tab.disjonctif(X.initial[samp,]),2,apply(tab.disjonctif(X.initial[samp,]),2,mean.p,PI.samp),"-") }else{ X.samp<-as.matrix(sweep(X.initial[samp,],2,apply(X.initial[samp,],2,mean.p,PI.samp),"-")) if (type=="s") X.samp<-sweep(X.samp,2,apply(X.samp,2,sd.p,PI.samp),"/") } phi.stand.samp<-phi.stand[samp,] T.samp<-crossprod(P.samp,X.samp) C.samp<-crossprod(sweep(X.samp,1,PI.samp^(1/2),"*"),sweep(X.samp,1,PI.samp^(1/2),"*")) if(n==1){ L.samp<-sweep(crossprod(P.samp,phi.stand.samp),1,P.J.samp,"/") W.samp<-sweep(crossprod(t(T.samp),ginv(C.samp)),1,P.J.samp,"/") W.stand.samp<-sweep(sweep(crossprod(t(T.samp),ginv(C.samp)),1,P.J.samp,"/"),2,apply(sweep(crossprod(t(T.samp),ginv(C.samp)),1,P.J.samp,"/"),2,sd.p,P.J.samp),"/") }else{ L.samp<-rbind(L.samp,sweep(crossprod(P.samp,phi.stand.samp),1,P.J.samp,"/")) W.samp<-cbind(W.samp,sweep(crossprod(t(T.samp),ginv(C.samp)),1,P.J.samp,"/")) W.stand.samp<-rbind(W.stand.samp,sweep(sweep(crossprod(t(T.samp),ginv(C.samp)),1,P.J.samp,"/"),2,apply(sweep(crossprod(t(T.samp),ginv(C.samp)),1,P.J.samp,"/"),2,sd.p,P.J.samp),"/")) } } rownames(L.samp)<-paste(rep(rownames(L),nb.ellip),rep(1:nb.ellip,each=nrow(L)),sep="") freq.ellip.coord<-as.data.frame(PCA(rbind(L,L.samp),ncp=ncp,ind.sup=(ncol(Y)+1):((nb.ellip+1)*ncol(Y)),row.w=P.J,scale.unit=FALSE,graph=FALSE)$ind.sup$coord) if(type!="n"){ for (n in 1:nb.ellip){ aux<-as.matrix(freq.ellip.coord[(((n-1)*ncol(Y))+1):(n*ncol(Y)),1:ncp]) aux.cent<-sweep(aux,2,apply(aux,2,mean.p,PJ[[n]]),"-") aux.stand<-as.matrix(sweep(aux.cent,2,apply(aux.cent,2,sd.p,PJ[[n]]),"/")) if (n==1) var.ellip.coord<-as.data.frame(crossprod(W.stand.samp[(((n-1)*ncol(Y))+1):(n*ncol(Y)),],sweep(aux.stand,1,PJ[[n]],"*"))) else var.ellip.coord<-rbind(var.ellip.coord,as.data.frame(crossprod(W.stand.samp[(((n-1)*ncol(Y))+1):(n*ncol(Y)),],sweep(aux.stand,1,PJ[[n]],"*")))) } }else{ colnames(W.samp)<-paste(rep(colnames(W),nb.ellip),rep(1:nb.ellip,each=ncol(W)),sep="") var.ellip.coord<-as.data.frame(PCA(cbind(L,W.samp),quanti.sup=(ncp+1):(ncp+ncol(W.samp)),scale.unit=F,ncp=ncp,row.w=P.J,graph=F)$quanti.sup$coord) } freq.ellip.coord$FREQ<-rep(rownames(L),nb.ellip) var.ellip.coord$VAR<-rep(colnames(X),nb.ellip) res$ellip<-list(freq=freq.ellip.coord,var=var.ellip.coord) class(res)<-c("CaGalt","list") if (graph){ plot.CaGalt(res,choix="ind",axes=axes) if(nrow(res$freq$coord)<50){ plot.CaGalt(res,choix="freq",axes=axes,conf.ellip=conf.ellip,new.plot=TRUE) }else{ plot.CaGalt(res,choix="freq",axes=axes,conf.ellip=conf.ellip,new.plot=TRUE,select = "contrib 49") warning("The first 50 frequencies that have the highest contribution on the 2 dimensions of your plot are drawn.") } if (type!="n") plot.CaGalt(res,choix="quanti.var",axes=axes,conf.ellip=conf.ellip,new.plot=TRUE) else plot.CaGalt(res,choix="quali.var",axes=axes,conf.ellip=conf.ellip,new.plot=TRUE) } return(res) }FactoMineR/R/estim_ncp.r0000644000176200001440000000504414132254053014610 0ustar liggesusersestim_ncp <- function(X, ncp.min=0,ncp.max=NULL, scale=TRUE,method="GCV"){ ## Pas de NA dans X method <- tolower(method) ### For categorical variables pquali <- 0 if (!is.numeric(X[,1])){ pquali <- ncol(X) tab.disj <- tab.disjonctif(X) X <- scale(tab.disj)*sqrt(nrow(X)/(nrow(X)-1))/sqrt(ncol(X)) ponder <- 1-apply(tab.disj/nrow(X), 2, sum) X <- sweep(X,2,sqrt(ponder),FUN="*") scale <- FALSE if (method=="smooth") warning("You should use the GCV criterion in the argument method\n") } p <- ncol(X) n <- nrow(X) if (is.null(ncp.max)) ncp.max <- ncol(X)-pquali-1 ncp.max <- min(nrow(X)-2,ncol(X)-1,ncp.max) crit <- NULL X <- scale(X,scale=FALSE) if (scale){ et <- apply(X,2,sd) X <- sweep(X,2,et,FUN="/") } ##if (ncp.min==0) crit = mean(X^2, na.rm = TRUE)*n/(n-1) ##if (ncp.min==0) crit = mean(X^2, na.rm = TRUE)*(n*(p-pquali))/(p*(n-1)) if (ncp.min==0) crit <- mean(X^2, na.rm = TRUE)*(n*p)/((p-pquali)*(n-1)) rr <- svd(X,nu=ncp.max,nv=ncp.max) for (q in max(ncp.min,1):ncp.max){ if (q==max(ncp.min,1)) { if (q==1) rec <- tcrossprod(as.matrix(rr$u)[,1,drop=FALSE]*rr$d[1],as.matrix(rr$v)[,1,drop=FALSE]) else rec <- tcrossprod(sweep(as.matrix(rr$u)[,1:q,drop=F],2,rr$d[1:q],FUN="*"),as.matrix(rr$v)[,1:q,drop=F]) } else rec <- rec + tcrossprod(sweep(as.matrix(rr$u)[,q,drop=F],2,rr$d[q],FUN="*"),as.matrix(rr$v)[,q,drop=F]) ##if (scale) rec = sweep(rec,2,et,FUN="*") if (method=="smooth"){ if (q>1){ a <- apply(rr$u[,1:q]^2,1,sum) b <- apply(rr$v[,1:q]^2,1,sum) } else { a <- rr$u[,1]^2 b <- rr$v[,1]^2 } ## zz=sweep(rec-X,1,1-a,FUN="/") zz <- sweep(rec-X,1,1-1/n-a,FUN="/") ## sol = sweep(zz,2,1-b,FUN="/") sol <- sweep(zz[,(1-b)>1e-10,drop=FALSE],2,(1-b)[(1-b)>1e-10],FUN="/") crit <- c(crit,mean(sol^2)) } ## if (method=="gcv") crit=c(crit,mean(( (n*(p-pquali))*(X-rec)/ (n*(p-pquali)- q*(n+p-pquali-q)))^2,na.rm=T)) ## if (method=="gcv") crit=c(crit,mean(( (n*(p-pquali))*(X-rec)/ ((n-1)*(p-pquali)- q*(n+p-pquali-q-1)))^2,na.rm=T)) ##avec Julie if (method=="gcv") crit=c(crit,mean(( n*(p-pquali)*(X-rec)/ ((n-1)*p- q*(n+p-pquali-q-1)))^2,na.rm=T)) if (method=="gcv") crit <- c(crit,mean(( n*p*(X-rec)/ ((n-1)*(p-pquali)- q*(n+p-pquali-q-1)))^2,na.rm=T)) } if (any(diff(crit)>0)) { ncp <- which(diff(crit)>0)[1] } else ncp <- which.min(crit) # return(list(ncp = which.min(crit)+ncp.min-1,criterion=crit)) return(list(ncp = ncp+ncp.min-1,criterion=crit)) } FactoMineR/R/print.PCA.R0000644000176200001440000000524011636560227014334 0ustar liggesusersprint.PCA <- function (x, file = NULL, sep = ";", ...){ res.pca <- x if (!inherits(res.pca, "PCA")) stop("non convenient data") cat("**Results for the Principal Component Analysis (PCA)**\n") cat("The analysis was performed on", nrow(res.pca$call$X), "individuals, described by", ncol(res.pca$call$X), "variables\n") cat("*The results are available in the following objects:\n\n") res <- array("", c(24, 2), list(1:24, c("name", "description"))) res[1, ] <- c("$eig", "eigenvalues") res[2, ] <- c("$var", "results for the variables") res[3, ] <- c("$var$coord", "coord. for the variables") res[4, ] <- c("$var$cor", "correlations variables - dimensions") res[5, ] <- c("$var$cos2", "cos2 for the variables") res[6, ] <- c("$var$contrib", "contributions of the variables") res[7, ] <- c("$ind", "results for the individuals") res[8, ] <- c("$ind$coord", "coord. for the individuals") res[9, ] <- c("$ind$cos2", "cos2 for the individuals") res[10, ] <- c("$ind$contrib", "contributions of the individuals") indice <- 11 if (!is.null(res.pca$ind.sup)){ res[indice, ] <- c("$ind.sup", "results for the supplementary individuals") res[indice+1, ] <- c("$ind.sup$coord", "coord. for the supplementary individuals") res[indice+2, ] <- c("$ind.sup$cos2", "cos2 for the supplementary individuals") indice <- indice +3 } if (!is.null(res.pca$quanti.sup)){ res[indice, ] <- c("$quanti.sup", "results for the supplementary quantitative variables") res[indice+1, ] <- c("$quanti.sup$coord", "coord. for the supplementary quantitative variables") res[indice+2, ] <- c("$quanti.sup$cor", "correlations suppl. quantitative variables - dimensions") indice <- indice +3 } if (!is.null(res.pca$quali.sup)){ res[indice, ] <- c("$quali.sup", "results for the supplementary categorical variables") res[indice+1, ] <- c("$quali.sup$coord", "coord. for the supplementary categories") res[indice+2, ] <- c("$quali.sup$v.test", "v-test of the supplementary categories") indice <- indice +3 } res[indice, ] <- c("$call", "summary statistics") res[indice+1, ] <- c("$call$centre", "mean of the variables") res[indice+2, ] <- c("$call$ecart.type", "standard error of the variables") res[indice+3, ] <- c("$call$row.w", "weights for the individuals") res[indice+4, ] <- c("$call$col.w", "weights for the variables") indice <- indice + 4 print(res[1:indice,]) if (!is.null(file)) { write.infile(res.pca,file = file, sep=sep) print(paste("All the results are in the file",file)) } } FactoMineR/R/print.catdes.R0000644000176200001440000000157713270024240015167 0ustar liggesusersprint.catdes<-function(x, ...){ if (!inherits(x, "catdes")) stop("need to be a catdes object") if (!is.null(x$test.chi2)){ cat("\nLink between the cluster variable and the categorical variables (chi-square test)\n=================================================================================\n") print(x$test.chi2) } if (!is.null(x$test.chi2)){ cat("\nDescription of each cluster by the categories\n=============================================\n") print(x$category) } if (!is.null(x$quanti.var)){ cat("\nLink between the cluster variable and the quantitative variables\n================================================================\n") print(x$quanti.var) } if (!is.null(x$quanti)){ cat("\nDescription of each cluster by quantitative variables\n=====================================================\n") print(x$quanti) } }FactoMineR/R/plot.FAMD.R0000644000176200001440000001053114540253700014251 0ustar liggesusersplot.FAMD <- function (x, choix = c("ind","var","quanti","quali"), axes = c(1, 2), lab.var = TRUE, lab.ind = TRUE, habillage = "none", col.lab = FALSE, col.hab = NULL, invisible = NULL, lim.cos2.var = 0., xlim = NULL, ylim = NULL, title = NULL, palette=NULL, autoLab = c("auto","yes","no"), new.plot = FALSE, select = NULL, unselect = 0.7, shadowtext=FALSE, legend = list(bty = "y", x = "topleft"), graph.type = c("ggplot","classic"), ggoptions = NULL, ...) { autoLab <- match.arg(autoLab,c("auto","yes","no")) choix <- match.arg(choix,c("ind","var","quanti","quali")) graph.type <- match.arg(graph.type[1],c("ggplot","classic")) old.palette <- palette() if (is.null(palette)) palette <- c("black", "red", "green3", "blue", "magenta", "darkgoldenrod","darkgray", "orange", "cyan", "violet", "lightpink", "lavender", "yellow", "darkgreen","turquoise", "lightgrey", "lightblue", "darkkhaki","darkmagenta","lightgreen", "darkolivegreen", "lightcyan", "darkorange","darkorchid", "darkred", "darksalmon", "darkseagreen","darkslateblue", "darkslategray", "darkslategrey","darkturquoise", "darkviolet", "lightgray", "lightsalmon","lightyellow", "maroon") palette(palette) # that is necessary if (choix=="ind" | choix=="quali") { class(x) <- c("MFA", "list") x$call$list.type.var <- vector(mode = "list", length = 1) x$call$list.type.var[[1]] <- x$call$nature.var if (!is.null(x$quali.sup)){ x$quali.var.sup$coord <- x$quali.sup$coord x$quali.var.sup$cos2 <- x$quali.sup$cos2 } if (choix=="quali") { invisible <- c(invisible, "ind","ind.sup") if (is.null(title)) title <- "Graph of the categories" } x$call$nature.group <- x$call$nature.var x$call$group.mod <- sapply(x$call$X,nlevels) x$call$group.mod[x$call$group.mod==0] <- 1 x$call$group <- rep(1,length(x$call$type)) x$separate.analyses <- vector(mode = "list", length = ncol(x$call$X)) for (i in 1:ncol(x$call$X)) x$separate.analyses[[i]]$call$X <- x$call$X[,i,drop=FALSE] gg_graph <- plot.MFA (x, axes = axes, choix = "ind", lab.var = lab.var, lab.ind = lab.ind, lab.par = FALSE, habillage = habillage, col.hab = col.hab, invisible = invisible, lim.cos2.var = lim.cos2.var, xlim = xlim, ylim = ylim, title = title, palette=palette, new.plot=new.plot, select=select,unselect=unselect,autoLab=autoLab,shadowtext=shadowtext, legend=legend, graph.type = graph.type, ggoptions = ggoptions, ...) } if (choix=="var") { class(x) <- c("MFA", "list") x$group$coord <- x$var$coord x$group$cos2 <- x$var$cos2 x$group$contrib <- x$var$contrib if (!is.null(x$var$coord.sup)){ x$group$coord.sup <- x$var$coord.sup x$group$cos2.sup <- x$var$cos2.sup } if (is.null(col.hab)){ col.hab <- c(rep("black",sum(x$call$nature.var=="quanti")), rep("red",sum(x$call$nature.var=="quali")), rep("blue",sum(x$call$nature.var=="quanti.sup")), rep("darkred",sum(x$call$nature.var=="quali.sup"))) } if (is.null(title)) title <- "Graph of the variables" gg_graph <- plot.MFA (x, axes = axes, choix = "group", lab.var = lab.var, lab.ind = lab.ind, lab.par = FALSE, habillage = habillage, col.hab = col.hab, invisible = invisible, lim.cos2.var = lim.cos2.var, xlim = xlim, ylim = ylim, title = title, palette=palette, new.plot=new.plot, select=select,unselect=unselect,autoLab=autoLab,shadowtext=shadowtext, legend=legend, graph.type = graph.type, ggoptions = ggoptions, ...) } if (choix=="quanti") { class(x) <- c("PCA", "list") x$call$scale.unit <- TRUE if (lab.var==TRUE) label <- "all" else label <- "none" col.var <- "black" col.quanti.sup <- "blue" x$var <- x$quanti.var x$quanti.sup <- x$quanti.sup if (is.null(title)) title <- "Graph of the quantitative variables" gg_graph <- plot.PCA(x, axes = axes, choix = "var", label=label, habillage = habillage, col.hab = col.hab, col.var = col.var, col.quanti.sup = col.quanti.sup, invisible = invisible, lim.cos2.var = lim.cos2.var, xlim = xlim, ylim = ylim, title = title, palette=palette, new.plot = new.plot, select = select,unselect = unselect,autoLab = autoLab,shadowtext = shadowtext, graph.type = graph.type, ggoptions = ggoptions, ...) } palette(old.palette) if (graph.type == "ggplot") return(gg_graph) } FactoMineR/R/print.GPA.R0000644000176200001440000000245611432224566014343 0ustar liggesusersprint.GPA<-function (x, file = NULL, sep = ";", ...) { res.gpa <- x if (!inherits(res.gpa, "GPA")) stop("non convenient data") cat("**Results of the Generalized Procrustes Analysis (GPA)**\n\n") cat("There are", nrow(res.gpa$call$X), "individuals, characterized by", ncol(res.gpa$call$X), "variables\n\n") cat("*Results are available in the following objects :\n\n") res <- array("", c(9, 2), list(1:9, c("name", "description"))) res[1, ] <- c("$RV", "RV Coefficients between partial configurations") res[2, ] <- c("$RVs", "standardized RV Coefficients between partial configurations") res[3, ] <- c("$simi", "procrustes similarity indexes between partial configurations") res[4, ] <- c("$scaling", "isotropic scaling factors") res[5, ] <- c("$dep", "PCA of initial configuration ") res[6, ] <- c("$consensus", "coordinates of the consensus configuration") res[7, ] <- c("$Xfin", "coordinates of partial configurations") res[8, ] <- c("$PANOVA", "list of Procrustes Analysis of Variance tables") res[9, ] <- c("$correlation", "Correlations by sets") print(res[1:9, ]) if (!is.null(file)) { write.infile(res.gpa, file = file, sep = sep) print(paste("All the results are in the file", file)) } } FactoMineR/R/plot.HMFA.R0000644000176200001440000003755514132554741014302 0ustar liggesusersplot.HMFA <- function(x, axes = c(1,2),num=6, choix = "ind", lab.grpe = TRUE, lab.var = TRUE, lab.ind.moy = TRUE, invisible = NULL, lim.cos2.var = 0., xlim = NULL, ylim = NULL, cex = 1, title = NULL, new.plot=FALSE, ...) { partial.tab.pour.plot <- function(res.hmfa,coord=c(1,2)) { H <- res.hmfa$call$H P <- res.hmfa$partial ptpp1 <- list() nbnivo <- length(H) for (h in 2:nbnivo) { x <- 1 ptpp2 <- list() nbgroup <- length(H[[h]]) for (g in 1:nbgroup) { nb <- H[[h]][g] ptpp2[[g]]<-P[[h-1]][,coord,x] if (nb > 1) { for (n in 2:nb) { ptpp2[[g]] <- rbind(ptpp2[[g]],P[[h-1]][,coord,n+x-1]) } } x <- x + nb } ptpp1[[h-1]] <- ptpp2 } ptpp2 <- list() nb <- length(H[[nbnivo]]) ptpp2[[1]] <- P[[nbnivo]][,coord,1] for (n in 2:nb) { ptpp2[[1]] <- rbind(ptpp2[[1]],P[[nbnivo]][,coord,n]) } ptpp1[[nbnivo]] <- ptpp2 return(ptpp1) } ################################################################# ##"plot.partial.ind" <- function(res.hmfa, numb = 6, coord=c(1,2), cex = 1) { ## ## cex <- 1 ## coord.partial <- res.hmfa$partial ## H <- res.hmfa$call$H ## nbnivo <- length(coord.partial) ## nbind <- nrow(coord.partial[[1]]) ## if (!is.null(res.hmfa$quali.var$coord)) nbind <- nbind + nrow(res.hmfa$quali.var$coord) ## mult <- nbind / numb ## if ((nbind / numb)!=as.integer(nbind / numb)) mult <- as.integer(mult) + 1 ## quali <- FALSE ## for (m in 1:mult) { ## par(mfrow = c(2,(numb/2))) ## for (ind in 1:numb) { ## indd <- (m-1)*numb+ind ## if (indd <= nbind) { ## if (indd > nrow(res.hmfa$ind$coord)) { ## coord.partial <- res.hmfa$quali.var$partial ## indd <- indd - nrow(res.hmfa$ind$coord) ## quali <- TRUE ## } ## x <- c(min(coord.partial[[1]][indd,coord[1],]),max(coord.partial[[1]][indd,coord[1],]))*1.1 ## y <- c(min(coord.partial[[1]][indd,coord[2],]),max(coord.partial[[1]][indd,coord[2],]))*1.1 ## plot(0, 0, xlab = lab.x, ylab = lab.y, xlim = x, ylim = y, col = "white", asp=1, cex=cex) ## abline(v=0,lty=2, cex=cex) ## abline(h=0,lty=2, cex=cex) ## index.col <- 0 ## name <- NULL ## if (!quali){ ## points(res.hmfa$ind$coord[indd,coord[1]],res.hmfa$ind$coord[indd,coord[2]],pch=15,cex=cex*0.8) ## text(res.hmfa$ind$coord[indd,coord[1]],res.hmfa$ind$coord[indd,coord[2]],rownames(res.hmfa$ind$coord)[indd], pos = 4,offset = 0.2, cex=0.8*cex) ## } ## else{ ## points(res.hmfa$quali.var$coord[indd,coord[1]],res.hmfa$quali.var$coord[indd,coord[2]],pch=15,cex=cex*0.8) ## text(res.hmfa$quali.var$coord[indd,coord[1]],res.hmfa$quali.var$coord[indd,coord[2]],rownames(res.hmfa$quali.var$coord)[indd], pos = 4,offset = 0.2, cex=0.8*cex) ## } ## for (k in 1:(nbnivo-1)) { ## jj <- 1 ## for (j in 1:length(H[[k]])) { ## index.col <- index.col +1 ## if (j == sum(H[[k+1]][1:jj])+1 ) jj=jj+1 ## if(length(H[[k]])>1) { ## points(coord.partial[[k]][indd,coord[1],j],coord.partial[[k]][indd,coord[2],j],col=color[index.col],pch=20,cex=cex*0.8) ## lines(c(coord.partial[[k+1]][indd,coord[1],jj],coord.partial[[k]][indd,coord[1],j]),c(coord.partial[[k+1]][indd,coord[2],jj],coord.partial[[k]][indd,coord[2],j])) ## } ## } ## name <- c(name,rownames(res.hmfa$group[[k]])) ## } ## for (j in 1:length(H[[nbnivo]])) { ## index.col <- index.col+1 ## points(coord.partial[[nbnivo]][indd,coord[1],j],coord.partial[[nbnivo]][indd,coord[2],j],col=color[index.col],pch=16,cex=cex*0.8) ## if (!quali) lines(c(res.hmfa$ind$coord[indd,coord[1]],coord.partial[[nbnivo]][indd,coord[1],j]),c(res.hmfa$ind$coord[indd,coord[2]],coord.partial[[nbnivo]][indd,coord[2],j])) ## else lines(c(res.hmfa$quali.var$coord[indd,coord[1]],coord.partial[[nbnivo]][indd,coord[1],j]),c(res.hmfa$quali.var$coord[indd,coord[2]],coord.partial[[nbnivo]][indd,coord[2],j])) ## } ## name <- c(name,rownames(res.hmfa$group[[nbnivo]])) ## legend("topleft",legend= name,text.col= color[1:index.col],cex=0.7*cex,bg="white") ## } ## } ## if (m < mult) dev.new() ## } ##} ############################################################### plot.partial <- function(res.hmfa , coord=c(1,2), invisible = NULL, title = NULL, cex = 1, nivo=length(res.hmfa$partial)){ test.invisible <- vector(length = 2) if (!is.null(invisible)) { test.invisible[1] <- match("ind", invisible) test.invisible[2] <- match("quali", invisible) } else test.invisible <- rep(NA, 2) coord.partial <- res.hmfa$partial H <- res.hmfa$call$H nbpart1 <- dim(coord.partial[[nivo]])[3] inter <- coord.partial[[nivo]][,coord,1] for(i in 2:nbpart1) inter <- rbind(inter,coord.partial[[nivo]][,coord,i]) xmin <- xmax <- ymin <- ymax <- 0 if (is.na(test.invisible[1])) { xmin <- min(xmin,min(inter[,1])) xmax <- max(xmax,max(inter[,1])) ymin <- min(ymin,min(inter[,2])) ymax <- max(ymax,max(inter[,2])) x <- c(xmin,xmax)*1.1 y <- c(ymin,ymax)*1.1 nbnivo <- length(coord.partial) plot(0, 0, xlab = lab.x, ylab = lab.y, xlim = x, ylim = y, col = "white", asp=1, cex=cex) # title(sub = sub.title, cex.sub = cex, font.sub = 2, col.sub = "steelblue4", adj = 0, line = 3.8) abline(v=0,lty=2, cex=cex) abline(h=0,lty=2, cex=cex) points(res.hmfa$ind$coord[,coord],pch=20,cex=cex) if (lab.ind.moy) text(res.hmfa$ind$coord[,coord[1]],res.hmfa$ind$coord[,coord[2]],rownames(res.hmfa$ind$coord), pos = 4,offset = 0.2, cex=0.8*cex) index.col <- 0 name <- NULL if (nbnivo>nivo){ for (k in nivo:(nbnivo-1)) { jj <- 1 for (j in 1:length(H[[k]])) { index.col <- index.col +1 if (j == sum(H[[k+1]][1:jj])+1 ) jj <- jj+1 if(length(H[[k]])>1) { points(coord.partial[[k]][,coord,j],col=color[index.col],pch=20,cex=cex*0.8) for (i in 1:nrow(coord.partial[[k]])) lines(c(coord.partial[[k+1]][i,coord[1],jj],coord.partial[[k]][i,coord[1],j]),c(coord.partial[[k+1]][i,coord[2],jj],coord.partial[[k]][i,coord[2],j])) } } name <- c(name,rownames(res.hmfa$group$coord[[k]])) } } for (j in 1:length(H[[nbnivo]])) { index.col <- index.col+1 points(coord.partial[[nbnivo]][,coord,j],col=color[index.col],pch=20,cex=cex*0.8) for (i in 1:nrow(coord.partial[[nbnivo]])) lines(c(res.hmfa$ind$coord[i,coord[1]],coord.partial[[nbnivo]][i,coord[1],j]),c(res.hmfa$ind$coord[i,coord[2]],coord.partial[[nbnivo]][i,coord[2],j])) } name <- c(name,rownames(res.hmfa$group$coord[[nbnivo]])) } if (!is.null(res.hmfa$quali.var)){ coord.partial <- res.hmfa$quali.var$partial nbnivo <- length(coord.partial) if (!is.na(test.invisible[1])) { inter <- coord.partial[[nivo]][,coord,1] for(i in 2:nbpart1) inter <- rbind(inter,coord.partial[[nivo]][,coord,i]) xmin <- xmax <- ymin <- ymax <- 0 xmin <- min(xmin,min(inter[,1])) xmax <- max(xmax,max(inter[,1])) ymin <- min(ymin,min(inter[,2])) ymax <- max(ymax,max(inter[,2])) x <- c(xmin,xmax)*1.1 y <- c(ymin,ymax)*1.1 plot(0, 0, xlab = lab.x, ylab = lab.y, xlim = x, ylim = y, col = "white", asp=1, cex=cex) abline(v=0,lty=2, cex=cex) abline(h=0,lty=2, cex=cex) } if (is.na(test.invisible[2])) { name <- NULL points(res.hmfa$quali.var$coord[,coord],pch=15,cex=cex) if (lab.ind.moy) text(res.hmfa$quali.var$coord[,coord[1]],res.hmfa$quali.var$coord[,coord[2]],rownames(res.hmfa$quali.var$coord), pos = 4,offset = 0.2, cex=0.8*cex) index.col <- 0 if (nbnivo > nivo){ for (k in nivo:(nbnivo-1)) { jj <- 1 for (j in 1:length(H[[k]])) { index.col <- index.col +1 if (j == sum(H[[k+1]][1:jj])+1 ) jj<-jj+1 if(length(H[[k]])>1) { points(coord.partial[[k]][,coord,j],col=color[index.col],pch=15,cex=cex*0.8) for (i in 1:nrow(coord.partial[[k]])) lines(c(coord.partial[[k+1]][i,coord[1],jj],coord.partial[[k]][i,coord[1],j]),c(coord.partial[[k+1]][i,coord[2],jj],coord.partial[[k]][i,coord[2],j])) } } name <- c(name,rownames(res.hmfa$group$coord[[k]])) } } for (j in 1:length(H[[nbnivo]])) { index.col <- index.col+1 points(coord.partial[[nbnivo]][,coord,j],col=color[index.col],pch=15,cex=cex*0.8) for (i in 1:nrow(coord.partial[[nbnivo]])) lines(c(res.hmfa$quali.var$coord[i,coord[1]],coord.partial[[nbnivo]][i,coord[1],j]),c(res.hmfa$quali.var$coord[i,coord[2]],coord.partial[[nbnivo]][i,coord[2],j])) } name <- c(name,rownames(res.hmfa$group$coord[[nbnivo]])) } } legend("topleft",legend= name,text.col= color[1:index.col],cex=0.8,bg="white") if (is.null(title)) title(main = "Superimposed representation of the partial clouds" , cex.sub = 1.2, col.sub = "steelblue4", font.sub=3, adj = 0.5, line = 3) else{ title(main = title , cex.sub = 1.2, col.sub = "steelblue4", font.sub=3, adj = 0.5, line = 3) title(sub= "Superimposed representation of the partial clouds" , cex.sub = cex, font.sub = 2, col.sub = "steelblue4", adj = 0, line = 3.8) } } plot.moy <- function(res.hmfa , coord=c(1,2), invisible = NULL, title = NULL, cex = 1){ test.invisible <- vector(length = 2) if (!is.null(invisible)) { test.invisible[1] <- match("ind", invisible) test.invisible[2] <- match("quali", invisible) } else test.invisible <- rep(NA, 2) xmin <- xmax <- ymin <- ymax <- 0 if (is.na(test.invisible[1])) { xmin <- min(xmin,min(res.hmfa$ind$coord[,coord[1]])) xmax <- max(xmax,max(res.hmfa$ind$coord[,coord[1]])) ymin <- min(ymin,min(res.hmfa$ind$coord[,coord[2]])) ymax <- max(ymax,max(res.hmfa$ind$coord[,coord[2]])) x <- c(xmin,xmax)*1.1 y <- c(ymin,ymax)*1.1 plot(0, 0, xlab = lab.x, ylab = lab.y, xlim = x, ylim = y, col = "white", asp=1, cex=cex) # title(sub = sub.title, cex.sub = cex, font.sub = 2, col.sub = "steelblue4", adj = 0, line = 3.8) abline(v=0,lty=2, cex=cex) abline(h=0,lty=2, cex=cex) points(res.hmfa$ind$coord[,coord],pch=20,cex=cex) if (lab.ind.moy) text(res.hmfa$ind$coord[,coord[1]],res.hmfa$ind$coord[,coord[2]],rownames(res.hmfa$ind$coord), pos = 4,offset = 0.2, cex=0.8*cex) } if (!is.null(res.hmfa$quali.var)){ if (!is.na(test.invisible[1])) { xmin <- xmax <- ymin <- ymax <- 0 xmin <- min(res.hmfa$quali.var$coord[,coord[1]]) xmax <- max(res.hmfa$quali.var$coord[,coord[1]]) ymin <- min(res.hmfa$quali.var$coord[,coord[2]]) ymax <- max(res.hmfa$quali.var$coord[,coord[2]]) x <- c(xmin,xmax)*1.1 y <- c(ymin,ymax)*1.1 plot(0, 0, xlab = lab.x, ylab = lab.y, xlim = x, ylim = y, col = "white", asp=1, cex=cex) abline(v=0,lty=2, cex=cex) abline(h=0,lty=2, cex=cex) } if (is.na(test.invisible[2])) { points(res.hmfa$quali.var$coord[,coord],pch=15,cex=cex) if (lab.ind.moy) text(res.hmfa$quali.var$coord[,coord[1]],res.hmfa$quali.var$coord[,coord[2]],rownames(res.hmfa$quali.var$coord), pos = 4,offset = 0.2, cex=0.8*cex) } } if (is.null(title)) title(main = "Individuals factor map" , cex.sub = 1.2, col.sub = "steelblue4", font.sub=3, adj = 0.5, line = 3) else{ title(main = title , cex.sub = 1.2, col.sub = "steelblue4", font.sub=3, adj = 0.5, line = 3) title(sub= "Individuals factor map" , cex.sub = cex, font.sub = 2, col.sub = "steelblue4", adj = 0, line = 3.8) } } ############################################################### res.hmfa <- x if (!inherits(res.hmfa, "HMFA")) stop("non convenient data") color <- c("black","red","green3","blue", "cyan","magenta","darkgray","darkgoldenrod","darkgreen","violet","turquoise","orange","lightpink","lavender","yellow","lightgreen","lightgrey", "lightblue","darkkhaki", "darkmagenta","darkolivegreen","lightcyan", "darkorange", "darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey", "darkturquoise","darkviolet", "lightgray","lightsalmon","lightyellow", "maroon") sub.title <- NULL lab.x <- paste("Dim ", axes[1], " (",signif(res.hmfa$eig[axes[1],2],4)," %)",sep="") lab.y <- paste("Dim ", axes[2], " (",signif(res.hmfa$eig[axes[2],2],4)," %)",sep="") if (choix == "group") { if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() if (is.null(title)) title <- "Groups representation" else sub.title <- "Groups representation" for (h in 1:length(res.hmfa$group$coord)){ coord.actif <- res.hmfa$group$coord[[h]][, axes] if (h ==1) plot(coord.actif, xlab = lab.x, ylab = lab.y, xlim = c(0, 1), ylim = c(0, 1), pch = 17, col = color[h], cex = cex, main = title, cex.main = cex, asp = 1) else points(coord.actif[,1],coord.actif[,2],col=color[h], pch = 17, cex=cex) if (lab.grpe) text(coord.actif[, 1], y = coord.actif[, 2], labels = rownames(coord.actif), pos = 3, col = color[h],cex=cex) } title(sub = sub.title, cex.sub = cex, font.sub = 2, col.sub = "steelblue4", adj = 0, line = 3.8) } if (choix == "var") { if (is.null(res.hmfa$quanti.var$coord)) stop("No quantitative variables to plot") if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() if (is.null(title)) title <- "Correlation circle" else sub.title <- "Correlation circle" plot(0, 0, main = title, xlab = lab.x, ylab = lab.y, xlim = c(-1.1, 1.1), ylim = c(-1.1, 1.1), col = "white", asp=1, cex=cex) title(sub = sub.title, cex.sub = cex, font.sub = 2, col.sub = "steelblue4", adj = 0, line = 3.8) x.cercle <- seq(-1, 1, by = 0.01) y.cercle <- sqrt(1 - x.cercle^2) lines(x.cercle, y = y.cercle) lines(x.cercle, y = -y.cercle) abline(v=0,lty=2, cex=cex) abline(h=0,lty=2, cex=cex) if (!is.null(res.hmfa$quanti.var$coord)) { coord.var <- res.hmfa$quanti.var$cor[, axes] for (v in 1:nrow(coord.var)) { if (sum(res.hmfa$quanti.var$cos2[v, axes], na.rm = TRUE) >= lim.cos2.var & !is.na(sum(res.hmfa$quanti.var$cos2[v, axes], na.rm = TRUE))) { arrows(0, 0, coord.var[v, 1], coord.var[v, 2], length = 0.1, angle = 15, code = 2,cex=cex) if (lab.var) { if (abs(coord.var[v,1])>abs(coord.var[v,2])){ if (coord.var[v,1]>=0) pos<-4 else pos<-2 } else { if (coord.var[v,2]>=0) pos<-3 else pos<-1 } text(coord.var[v, 1], y = coord.var[v, 2], labels = rownames(coord.var)[v], pos = pos,cex=cex) } } } } } if (choix =="ind"){ if (length(res.hmfa$call$H)>1){ tab.coord.partial <- partial.tab.pour.plot(res.hmfa, coord = axes) for (nivo in 1:length(res.hmfa$call$H)){ if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() plot.partial(res.hmfa, coord=axes, invisible = invisible, cex = cex, title = title, nivo = nivo) } ## dev.new() ## plot.partial.ind(res.hmfa, num = num, coord=axes, cex = cex) } if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() plot.moy(res.hmfa, coord=axes, invisible = invisible, cex = cex, title = title) } } FactoMineR/R/plotGPApartial.R0000644000176200001440000000373314132555443015464 0ustar liggesusersplotGPApartial <- function (x, axes = c(1, 2), lab.ind.moy = TRUE, habillage = "ind", chrono = FALSE, draw.partial = NULL, xlim = NULL, ylim = NULL, cex = 1, title = NULL, palette=NULL, ...){ res.gpa <- x if (!inherits(res.gpa, "GPA")) stop("non convenient data") if (is.null(palette)) palette(c("black","red","green3","blue", "cyan","magenta","darkgray","darkgoldenrod","darkgreen","violet","turquoise","orange","lightpink","lavender","yellow","lightgreen","lightgrey","lightblue","darkkhaki", "darkmagenta","darkolivegreen","lightcyan", "darkorange", "darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet", "lightgray","lightsalmon","lightyellow", "maroon")) tab <- res.gpa$consensus[,axes] if (is.null(draw.partial)) { draw.partial <- rep(FALSE,nrow(tab)) names(draw.partial)<-rownames(tab) } else draw.partial <- draw.partial[,1] partial <- rownames(tab[draw.partial,]) if (length(partial)==0) partial <- NULL disto <- matrix(0,nrow(tab),1) rownames(disto) <- rownames(tab) plot.GPA(res.gpa, axes = axes, lab.ind.moy = lab.ind.moy, habillage = habillage, xlim = xlim, ylim = ylim, chrono = chrono, cex = cex, title = title, partial = partial, palette=palette) point.haut <- max(tab[,2])*1.2 if (!is.null(ylim)) point.haut <- ylim[2] nbpoint <-0 while (nbpoint < 1000){ pos <- locator(n=1) if (is.null(pos$y)) nbpoint <- 1000 else{ for (i in 1:nrow(tab)) disto[i] <- (tab[i,1]-pos$x)^2+(tab[i,2]-pos$y)^2 draw.partial[order(disto)[1]] <- !draw.partial[order(disto)[1]] partial <- rownames(tab)[draw.partial] if (length(partial)==0) partial <- NULL dev.off() plot.GPA(res.gpa, axes = axes, lab.ind.moy = lab.ind.moy, habillage = habillage, xlim = xlim, ylim = ylim, chrono = chrono, cex = cex, title = title, partial = partial, palette=palette) nbpoint <- nbpoint+1 } } return(as.data.frame(draw.partial)) } FactoMineR/R/plot.PCA.R0000644000176200001440000015770714610477344014200 0ustar liggesusersplot.PCA <- function (x, axes = c(1, 2), choix = c("ind","var","varcor"), ellipse = NULL, xlim = NULL, ylim = NULL, habillage = "none", col.hab = NULL, col.ind = "black", col.ind.sup = "blue", col.quali = "magenta", col.quanti.sup = "blue", col.var = "black", label=c("all","none","ind", "ind.sup", "quali", "var", "quanti.sup"), invisible = c("none","ind", "ind.sup", "quali","var", "quanti.sup"), lim.cos2.var = 0., title = NULL, palette=NULL, autoLab=c("auto","yes","no"),new.plot=FALSE, select=NULL, unselect = 0.7,shadowtext = FALSE, legend = list(bty = "y", x = "topleft"), graph.type = c("ggplot","classic"), ggoptions = NULL, ...){ res.pca <- x argument <- list(...) if (!is.null(argument[["cex"]]) & is.null(ggoptions["size"])) ggoptions["size"] <- 4*argument$cex ggoptions_default <- list(size = 4, point.shape = 19, line.lty = 2, line.lwd = 0.5, line.color = "black", segment.lty = 1, segment.lwd = 0.5, circle.lty = 1, circle.lwd = 0.5, circle.color = "black", low.col.quanti = "blue", high.col.quanti = "red3") if (!is.null(ggoptions[1])) ggoptions_default[names(ggoptions)] <- ggoptions[names(ggoptions)] if (!inherits(res.pca, "PCA")) stop("non convenient data") if (is.numeric(unselect)) if ((unselect>1)|(unselect<0)) stop("unselect should be betwwen 0 and 1") autoLab <- match.arg(autoLab,c("auto","yes","no")) if (autoLab == "yes") autoLab <- TRUE if (autoLab == "no") autoLab <- FALSE old.palette <- palette() if (is.null(palette)) palette <- c("black", "red", "green3", "blue", "magenta", "darkgoldenrod","darkgray", "orange", "cyan", "violet", "lightpink", "lavender", "yellow", "darkgreen","turquoise", "lightgrey", "lightblue", "darkkhaki","darkmagenta","lightgreen", "darkolivegreen", "lightcyan", "darkorange","darkorchid", "darkred", "darksalmon", "darkseagreen","darkslateblue", "darkslategray", "darkslategrey","darkturquoise", "darkviolet", "lightgray", "lightsalmon","lightyellow", "maroon") palette(palette) # that is necessary label <- match.arg(label,c("all","none","ind", "ind.sup", "quali", "var", "quanti.sup"),several.ok=TRUE) invisible <- match.arg(invisible,c("none","ind", "ind.sup", "quali","var", "quanti.sup"),several.ok=TRUE) if ("none"%in%invisible) invisible <- NULL choix <- match.arg(choix,c("ind","var","varcor")) graph.type <- match.arg(graph.type[1],c("ggplot","classic")) lab.ind <- lab.quali <- lab.var <- lab.quanti <- lab.ind.sup <- FALSE if (length(label)==1 && label=="all") lab.ind <- lab.quali <- lab.var <- lab.quanti <- lab.ind.sup <-TRUE if ("ind" %in% label) lab.ind<-TRUE if ("quali" %in% label) lab.quali<-TRUE if ("var" %in% label) lab.var<-TRUE if ("quanti.sup" %in% label) lab.quanti<-TRUE if ("ind.sup" %in% label) lab.ind.sup<-TRUE lab.x <- paste("Dim ",axes[1]," (",format(res.pca$eig[axes[1],2],nsmall=2,digits=2),"%)",sep="") lab.y <- paste("Dim ",axes[2]," (",format(res.pca$eig[axes[2],2],nsmall=2,digits=2),"%)",sep="") if (graph.type == "ggplot"){ if(!is.null(col.hab)) palette <- col.hab theme <- theme( axis.title = element_text(hjust = 1, size = if (is.null(argument[["cex.axis"]])) {10} else {10*argument$cex.axis},face = 2), plot.title = element_text(hjust = 0.5, size = if (is.null(argument[["cex.main"]])) {11} else {11*argument$cex.main},face = 2), legend.position = ifelse(legend$x %in% c("bottom","up","right","left"), legend$x, "right"), legend.box.spacing=unit(0.1, 'cm'),legend.margin=margin() ) liste.quali <- colnames(res.pca$call$quali.sup$quali.sup) liste.quanti <- colnames(res.pca$call$X)[which(!(colnames(res.pca$call$X) %in% liste.quali))] hab_2 <- c(colnames(res.pca$call$X), "contrib", "cos2") if((habillage != "none") && !(habillage[1] %in% hab_2) && (habillage != "ind")) habillage[1] <- colnames(res.pca$call$X)[as.numeric(habillage[1])] if(habillage[1] != "none" && length(habillage) == 2){ if(!habillage[2] %in% hab_2) habillage[2] <- colnames(res.pca$call$X)[as.numeric(habillage[2])] if (length(habillage) > 2) { warning("Habillage must be either length 1 or 2 : only 2 first arguments will be used") habillage <- habillage[1:2] } if ((length(habillage) == 2) & !("cos2" %in% habillage) & !("contrib" %in% habillage)){ if(!(habillage[2] %in% liste.quali)){ if (!(habillage[1] %in% liste.quali)){ habillage <- habillage[1] } else{ habillage <- habillage[2:1] } }} if(length(habillage) == 1 && !(habillage %in% hab_2)) habillage <- as.numeric(habillage) if((length(habillage) == 2) & (habillage[2] %in% c("contrib","cos2"))) habillage <- habillage[2:1] if((length(habillage) == 2) & (habillage[1] %in% c("contrib","cos2")) & !(habillage[2] %in% hab_2)) habillage[2] <- colnames(res.pca$call$X)[as.integer(habillage[2])] if(class(habillage[1]) %in% c("numeric","integer") && class(habillage[2]) %in% c("numeric","integer")) habillage <- c(colnames(res.pca$call$X)[habillage[1]],colnames(res.pca$call$X)[habillage[2]]) if(("cos2" %in% habillage) || ("contrib" %in% habillage)){ if((habillage[2] %in% liste.quanti) || (habillage[1] %in% liste.quanti)) habillage <- habillage[1] } if(("cos2" %in% habillage) && ("contrib" %in% habillage)) habillage <- habillage[1] } } if (choix == "ind") { if (is.null(title)) titre <- "PCA graph of individuals" else titre <- title coord.actif <- res.pca$ind$coord[, axes,drop=FALSE] coord.illu <- coord.quali <- coord.ellipse <- NULL if (!is.null(res.pca$ind.sup)) coord.illu <- res.pca$ind.sup$coord[, axes,drop=FALSE] if (!is.null(res.pca$quali.sup)) coord.quali <- res.pca$quali.sup$coord[, axes,drop=FALSE] if (!is.null(ellipse)) coord.ellipse <- ellipse$res test.invisible <- vector(length = 2) if (!is.null(invisible)) { test.invisible[1] <- match("ind", invisible) test.invisible[2] <- match("ind.sup", invisible) test.invisible[3] <- match("quali", invisible) } else test.invisible <- rep(NA, 3) nullxlimylim <- (is.null(xlim) & is.null(ylim)) if (is.null(xlim)) { xmin <- xmax <- 0 if(is.na(test.invisible[1])) xmin <- min(xmin, coord.actif[,1]) if(is.na(test.invisible[1])) xmax <- max(xmax, coord.actif[,1]) if(!is.null(coord.illu)&is.na(test.invisible[2])) xmin <- min(xmin, coord.illu[, 1]) if(!is.null(coord.illu)&is.na(test.invisible[2])) xmax <- max(xmax, coord.illu[, 1]) if(!is.null(coord.quali)&is.na(test.invisible[3])) xmin <- min(xmin, coord.quali[, 1]) if(!is.null(coord.quali)&is.na(test.invisible[3])) xmax <- max(xmax, coord.quali[, 1]) if(!is.null(coord.ellipse)&is.na(test.invisible[3])) xmin <- min(xmin, coord.ellipse[, 2]) if(!is.null(coord.ellipse)&is.na(test.invisible[3])) xmax <- max(xmax, coord.ellipse[, 2]) # xlim <- c(xmin, xmax) * 1.2 xlim <- c(xmin, xmax) xlim <- (xlim-mean(xlim))*1.2 + mean(xlim) } if (is.null(ylim)) { ymin <- ymax <- 0 if(is.na(test.invisible[1])) ymin <- min(ymin, coord.actif[,2]) if(is.na(test.invisible[1])) ymax <- max(ymax, coord.actif[,2]) if(!is.null(coord.illu)&is.na(test.invisible[2])) ymin <- min(ymin, coord.illu[, 2]) if(!is.null(coord.illu)&is.na(test.invisible[2])) ymax <- max(ymax, coord.illu[, 2]) if(!is.null(coord.quali)&is.na(test.invisible[3])) ymin <- min(ymin, coord.quali[, 2]) if(!is.null(coord.quali)&is.na(test.invisible[3])) ymax <- max(ymax, coord.quali[, 2]) if(!is.null(coord.ellipse)&is.na(test.invisible[3])) ymin <- min(ymin, coord.ellipse[, 3]) if(!is.null(coord.ellipse)&is.na(test.invisible[3])) ymax <- max(ymax, coord.ellipse[, 3]) ylim <- c(ymin, ymax) ylim <- (ylim-mean(ylim))*1.2 + mean(ylim) } if (nullxlimylim & diff(xlim)/diff(ylim)>3) ylim <- (ylim-mean(ylim))*diff(xlim)/diff(ylim)/3 + mean(ylim) if (nullxlimylim & diff(xlim)/diff(ylim)<1/2) xlim <- (xlim-mean(xlim))*diff(ylim)/diff(xlim)/2 + mean(xlim) if(graph.type=="ggplot") nudge_y <- (ylim[2] - ylim[1])*0.03 selection <- NULL if (!is.null(select)) { if (mode(select)=="numeric") selection <- select else { if (sum(rownames(res.pca$ind$coord)%in%select)+sum(rownames(res.pca$ind.sup$coord)%in%select)!=0) selection <- which(rownames(res.pca$ind$coord)%in%select) else { if (grepl("contrib",select[1])) selection <- (rev(order(res.pca$ind$contrib[,axes[1],drop=FALSE]*res.pca$eig[axes[1],1]+res.pca$ind$contrib[,axes[2],drop=FALSE]*res.pca$eig[axes[2],1])))[1:min(nrow(res.pca$ind$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] # if (grepl("contrib",select)) selection <- (rev(order(apply(res.pca$ind$contrib[,axes],1,sum))))[1:min(nrow(res.pca$ind$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] if (grepl("dist",select[1])) selection <- (rev(order(res.pca$ind$dist)))[1:min(nrow(res.pca$ind$coord),sum(as.integer(unlist(strsplit(select,"dist"))),na.rm=T))] if (grepl("coord",select[1])) selection <- (rev(order(apply(res.pca$ind$coord[,axes]^2,1,sum))))[1:min(nrow(res.pca$ind$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select[1])) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selection <- (rev(order(apply(res.pca$ind$cos2[,axes],1,sum))))[1:min(nrow(res.pca$ind$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selection <- which(apply(res.pca$ind$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selection <- select } } } selectionS <- NULL if ((!is.null(select))&(!is.null(res.pca$ind.sup$coord))&is.na(test.invisible[2])) { if (mode(select)=="numeric") selectionS <- select else { if (sum(rownames(res.pca$ind$coord)%in%select)+sum(rownames(res.pca$ind.sup$coord)%in%select)!=0) selectionS <- which(rownames(res.pca$ind.sup$coord)%in%select) else { if (grepl("dist",select[1])) selectionS <- (rev(order(res.pca$ind.sup$dist)))[1:min(nrow(res.pca$ind.sup$coord),sum(as.integer(unlist(strsplit(select,"dist"))),na.rm=T))] if (grepl("coord",select[1])) selectionS <- (rev(order(apply(res.pca$ind.sup$coord[,axes]^2,1,sum))))[1:min(nrow(res.pca$ind.sup$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select[1])) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selectionS <- (rev(order(apply(res.pca$ind.sup$cos2[,axes,drop=FALSE],1,sum))))[1:min(nrow(res.pca$ind.sup$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selectionS <- which(apply(res.pca$ind.sup$cos2[,axes,drop=FALSE],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selectionS <- select } } } ## PARTIE GRAPHIQUE if (graph.type =="ggplot") color.ind <- NULL if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new(width=min(14,8*diff(xlim)/diff(ylim)),height=8) if (is.null(palette)) palette <- (c("black","red","green3","blue","cyan","magenta","darkgray","darkgoldenrod","darkgreen","violet","turquoise","orange","lightpink","lavender","yellow","lightgreen","lightgrey","lightblue","darkkhaki", "darkmagenta","darkolivegreen","lightcyan", "darkorange", "darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet", "lightgray","lightsalmon","lightyellow", "maroon")) if (habillage[1] == "none") { color.ind <- rep(col.ind,nrow(coord.actif)) color.mod <- col.quali if (!is.null(res.pca$ind.sup)&is.na(test.invisible[2])) color.ind.sup <- rep(col.ind.sup,nrow(res.pca$ind.sup$coord)) } if (habillage[1] == "ind") { if (is.null(coord.illu)){ if(length(col.hab) == nrow(coord.actif)) color.ind <- col.hab else color.ind <- c(1:nrow(coord.actif)) } else{ if (length(col.hab)== nrow(coord.actif)+nrow(coord.illu)){ color.ind <- col.hab[-res.pca$call$ind.sup] color.ind.sup <- col.hab[res.pca$call$ind.sup] } else { color.ind <- c(1:nrow(coord.actif)) color.ind.sup <- c((nrow(coord.actif)+1):(nrow(coord.actif)+nrow(coord.illu))) } } color.mod <- "darkred" } liste.quali <- NULL if ((habillage[1] != "none")&(habillage[1] != "ind")&(habillage[1] != "cos2")&(habillage[1] != "contrib")){ liste.quali <- colnames(res.pca$call$quali.sup$quali.sup) if(!(class(res.pca$call$X[,habillage[1]])[1] %in% c("numeric","double","integer"))) { if (is.numeric(habillage)) nom.quali <- colnames(res.pca$call$X)[habillage[1]] else nom.quali <- habillage[1] if (!(nom.quali %in% liste.quali)) stop("The variable ", habillage[1], " is not qualitative") n.mod <- res.pca$call$quali.sup$modalite[liste.quali == nom.quali] if (length(col.hab) != n.mod) { color.mod <- c(1:n.mod) color.ind <- as.numeric(as.factor(res.pca$call$X[, nom.quali])) color.ind.sup <- color.ind[res.pca$call$ind.sup] if (!is.null(res.pca$call$ind.sup)) color.ind <- color.ind[-res.pca$call$ind.sup] } else { color.mod <- col.hab color.ind <- as.factor(res.pca$call$X[, nom.quali]) levels(color.ind) <- col.hab color.ind.sup <- color.ind[res.pca$call$ind.sup] if (!is.null(res.pca$call$ind.sup)) color.ind <- color.ind[-res.pca$call$ind.sup] color.ind <- as.character(color.ind) } } if(class(res.pca$call$X[,habillage[1]])[1] %in% c("numeric","double","integer")){ if (graph.type == "classic") stop("The variable ", habillage[1], "is not qualitative") liste.quanti <- colnames(res.pca$call$X[which(!(colnames(res.pca$call$X) %in% colnames(res.pca$call$quali.sup$quali.sup)))]) if (is.numeric(habillage[1])) nom.quanti <- colnames(res.pca$call$X)[habillage[1]] else nom.quanti <- habillage[1] if (!(nom.quanti %in% liste.quanti)) stop("The variable ", habillage[1], " is not quantitative") }} color.sup <- col.ind.sup if (graph.type == "classic" & ((habillage == "cos2") || (habillage == "contrib"))) stop("The variable is not qualitative") # graphe individuals factor map if (graph.type == "classic") { plot(0, 0, main = titre, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp=1, ...) abline(v=0,lty=2, ...) abline(h=0,lty=2, ...) # } coo <- labe <- coll <- ipch <- fonte <- NULL df_ind2 <- df_ind_sup <- df_quali.sup <- NULL if (is.na(test.invisible[1])) { coo <- rbind(coo,coord.actif) if (lab.ind){ labe <- c(labe,rownames(coord.actif)) } else labe <- c(labe,rep("",nrow(coord.actif))) coll <- c(coll,color.ind) ipch <- c(ipch,rep(20,nrow(coord.actif))) fonte <- c(fonte,rep(1,nrow(coord.actif))) if (!is.null(selection)){ if (is.numeric(unselect)) coll[!((1:length(coll))%in%selection)] <- rgb(t(col2rgb(coll[!((1:length(coll))%in%selection)])),alpha=255*(1-unselect),maxColorValue=255) else coll[!((1:length(coll))%in%selection)] <- unselect labe[!((1:length(coll))%in%selection)] <- "" } df_ind2 <- data.frame(labe,coord.actif,ipch,fonte) } if(graph.type == "ggplot") coll2 <- NULL if (!is.null(res.pca$ind.sup) & is.na(test.invisible[2])) { coo <- rbind(coo,res.pca$ind.sup$coord[,axes]) if (lab.ind.sup){ labe2 <- rownames(res.pca$ind.sup$coord) } else labe2 <- rep("",nrow(res.pca$ind.sup$coord)) if (length(color.sup)>1) coll2 <- color.sup else coll2 <- rep(color.sup,nrow(res.pca$ind.sup$coord)) if (!is.null(selectionS)){ if (is.numeric(unselect)) coll2[!((1:length(coll2))%in%selectionS)] <- rgb(t(col2rgb(coll2[!((1:length(coll2))%in%selectionS)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!((1:length(coll2))%in%selectionS)] <- unselect labe2[!((1:length(coll2))%in%selectionS)] <- "" } if (length(select)==1){ if (grepl("contrib",select)){ if (is.numeric(unselect)) coll2[1:length(coll2)] <- rgb(t(col2rgb(coll2[1:length(coll2)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[1:length(coll2)] <- unselect labe2[1:length(coll2)] <- "" }} df_ind_sup <- data.frame(labe2, res.pca$ind.sup$coord[,axes], coll2, rep(1,nrow(res.pca$ind.sup$coord)), rep(3,nrow(res.pca$ind.sup$coord))) coll <- c(coll,coll2) labe <- c(labe,labe2) ipch <- c(ipch,rep(1,nrow(res.pca$ind.sup$coord))) fonte <- c(fonte,rep(3,nrow(res.pca$ind.sup$coord))) } if (!is.null(coord.quali) & is.na(test.invisible[3])) { modalite <- res.pca$call$quali.sup$modalite if (graph.type == "ggplot") col.quali <- col.quali else{col.quali<-rep(col.quali, length(modalite))} num.li <- 0 coo <- rbind(coo,coord.quali) ipch <- c(ipch,rep(22,sum(modalite))) if (lab.quali){ labe2 <- rownames(coord.quali) } else labe2 <- rep("",sum(modalite)) labe <- c(labe,labe2) fonte <- c(fonte,rep(3,sum(modalite))) for (q in 1:length(modalite)) { if ((habillage[1] != "none")&(habillage[1] != "ind")&(habillage[1] != "cos2")&(habillage[1] != "contrib")) { if(!(class(res.pca$call$X[,habillage[1]])[1] %in% c("numeric","double","integer"))){ if (q == match(nom.quali, liste.quali)) coll2 <- color.mod else coll2 <- rep(col.quali[1],modalite[q]) }} else coll2 <- rep(col.quali,modalite[q]) num.li <- num.li + modalite[q] } coll <- c(coll,coll2) df_quali.sup <- data.frame(labe2, coord.quali, rep(22,nrow(coord.quali)), rep(3,nrow(coord.quali))) } # graphe individuals factor map, ajout des points if (graph.type == "classic") { points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) } if (graph.type == "ggplot") { if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) df_ind <- data.frame(labe,coo,ipch,fonte) gg_graph <- ggplot() + coord_fixed(ratio = 1) + xlim(xlim) + ylim(ylim) + geom_hline(yintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_vline(xintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + theme_light() + labs(title = titre, x = lab.x, y= lab.y) if(!is.null(select)) df_ind2[,1] <- ifelse(rownames(df_ind2) %in% rownames(df_ind2)[selection], rownames(df_ind2), "") transparency_ind <- col2rgb(col.ind,alpha=TRUE)[4]/255 if (!is.null(select)) transparency_ind <- ifelse(rownames(res.pca$ind$coord) %in% rownames(res.pca$ind$coord)[selection], transparency_ind, transparency_ind*(1-unselect)) if((!is.na(test.invisible[1])) & (habillage[1] != "none") & (is.null(legend["title"][[1]]))) legend["title"][[1]] <- habillage[1] if (is.na(test.invisible[1])){ if (habillage[1] == "none" | habillage[1]=="ind"){ gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3]), color=color.ind, shape = ggoptions_default$point.shape, size = ggoptions_default$size/3, alpha = transparency_ind) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1]), size = ggoptions_default$size, color = color.ind) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1]), size = ggoptions_default$size, color = color.ind, hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25)} } if (length(habillage) == 1 & (habillage[1] != "none" | habillage[1]!="ind")){ if ((habillage %in% colnames(res.pca$call$X)) & !(habillage %in% liste.quali)){ df_ind2 <- data.frame(df_ind2, (res.pca$call$X)[rownames(df_ind2),habillage]) gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3], color = df_ind2[,6]), shape = ggoptions_default$point.shape, size = ggoptions_default$size/3, alpha = transparency_ind) + scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], habillage)) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = df_ind2[,6]), size = ggoptions_default$size, show.legend = FALSE) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = df_ind2[,6]), size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25)} } if (habillage %in% liste.quali){ df_ind2 <- data.frame(df_ind2, (res.pca$call$X)[rownames(df_ind2),habillage]) gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3], color = (res.pca$call$X)[rownames(df_ind2),habillage]), shape = ggoptions_default$point.shape, size = ggoptions_default$size/3, alpha = transparency_ind) + scale_color_manual(values = palette[1:length(levels((res.pca$call$X)[,habillage]))]) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], habillage)) if (autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = (res.pca$call$X)[rownames(res.pca$ind$coord),habillage[1]]), size = ggoptions_default$size, show.legend = FALSE) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = (res.pca$call$X)[rownames(res.pca$ind$coord),habillage[1]]), size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25)} } if (habillage == "cos2"){ gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3], color = res.pca$ind$cos2[,axes[1]] + res.pca$ind$cos2[,axes[2]]), shape = ggoptions_default$point.shape, size = ggoptions_default$size/3, alpha = transparency_ind) + scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], "cos2")) if (autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = res.pca$ind$cos2[,axes[1]] + res.pca$ind$cos2[,axes[2]]), size = ggoptions_default$size) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = res.pca$ind$cos2[,axes[1]] + res.pca$ind$cos2[,axes[2]]), size = ggoptions_default$size, hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25)} } if (habillage == "contrib"){ gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3], color = (res.pca$ind$contrib[,axes[1]]*res.pca$eig[axes[1],1]+res.pca$ind$contrib[,axes[2]]*res.pca$eig[axes[2],1])/(res.pca$eig[axes[1],1]+res.pca$eig[axes[2],1])), shape = ggoptions_default$point.shape, size = ggoptions_default$size/3, alpha = transparency_ind) + scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], "Ctr")) if (autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = (res.pca$ind$contrib[,axes[1]]*res.pca$eig[axes[1],1]+res.pca$ind$contrib[,axes[2]]*res.pca$eig[axes[2],1])/(res.pca$eig[axes[1],1]+res.pca$eig[axes[2],1])), size = ggoptions_default$size) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = (res.pca$ind$contrib[,axes[1]]*res.pca$eig[axes[1],1]+res.pca$ind$contrib[,axes[2]]*res.pca$eig[axes[2],1])/(res.pca$eig[axes[1],1]+res.pca$eig[axes[2],1])), size = ggoptions_default$size, hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25) } }} if(length(habillage) == 2 & habillage[1] != "none"){ if (!(habillage[1] %in% liste.quali)){ gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3], shape = res.pca$call$X[rownames(res.pca$ind$coord),habillage[2]], color = (res.pca$call$X)[rownames(res.pca$ind$coord),habillage[1]]), size = ggoptions_default$size/3, alpha = transparency_ind) + scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) + labs(color = habillage[1], shape = habillage[2]) if (autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = (res.pca$call$X)[rownames(res.pca$ind$coord),habillage[1]]), size = ggoptions_default$size, show.legend = FALSE) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = (res.pca$call$X)[rownames(res.pca$ind$coord),habillage[1]]), size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25)} } if (habillage[1] %in% liste.quali){ gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3], shape = res.pca$call$X[rownames(res.pca$ind$coord),habillage[2]], color = (res.pca$call$X)[rownames(res.pca$ind$coord),habillage[1]]), size = ggoptions_default$size/3, alpha = transparency_ind) + scale_color_manual(values = palette[1:length(levels((res.pca$call$X)[,habillage[1]]))]) + labs(color = habillage[1], shape = habillage[2]) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = (res.pca$call$X)[rownames(res.pca$ind$coord),habillage[1]]), size = ggoptions_default$size, show.legend = FALSE) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = (res.pca$call$X)[rownames(res.pca$ind$coord),habillage[1]]), size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25)} } if (habillage[1] == "cos2"){ gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3], color = res.pca$ind$cos2[,axes[1]] + res.pca$ind$cos2[,axes[2]], shape = res.pca$call$X[rownames(res.pca$ind$coord),habillage[2]]), size = ggoptions_default$size/3, alpha = transparency_ind) + scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) + labs(color = habillage[1], shape = habillage[2]) if (autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = res.pca$ind$cos2[,axes[1]] + res.pca$ind$cos2[,axes[2]]), size = ggoptions_default$size) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = res.pca$ind$cos2[,axes[1]] + res.pca$ind$cos2[,axes[2]]), size = ggoptions_default$size, hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25)} } if (habillage[1] == "contrib"){ gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3], color = (res.pca$ind$contrib[,axes[1]]*res.pca$eig[axes[1],1]+res.pca$ind$contrib[,axes[2]]*res.pca$eig[axes[2],1])/(res.pca$eig[axes[1],1]+res.pca$eig[axes[2],1]), shape = res.pca$call$X[rownames(res.pca$ind$coord),habillage[2]]), size = ggoptions_default$size/3, alpha = transparency_ind) + scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) + labs(color = habillage[1], shape = habillage[2]) if (autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = (res.pca$ind$contrib[,axes[1]]*res.pca$eig[axes[1],1]+res.pca$ind$contrib[,axes[2]]*res.pca$eig[axes[2],1])/(res.pca$eig[axes[1],1]+res.pca$eig[axes[2],1])), size = ggoptions_default$size) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = (res.pca$ind$contrib[,axes[1]]*res.pca$eig[axes[1],1]+res.pca$ind$contrib[,axes[2]]*res.pca$eig[axes[2],1])/(res.pca$eig[axes[1],1]+res.pca$eig[axes[2],1])), size = ggoptions_default$size, hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25) } } } } if (!is.na(test.invisible[1])){ gg_graph <- gg_graph + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], habillage[1])) } gg_graph <- gg_graph + theme if (is.na(test.invisible[1]) & isTRUE(lab.ind)) gg_graph <- gg_graph + text if ((!is.null(res.pca$ind.sup)) && (is.na(test.invisible[2]))){ if(!is.null(select)) df_ind_sup[,1] <- ifelse(rownames(df_ind_sup) %in% rownames(df_ind_sup)[selectionS], rownames(df_ind_sup), "") if(nrow(res.pca$ind.sup$coord) > 1){ if (isTRUE(lab.ind.sup)){ if (habillage[1] == "none"){ gg_graph <- gg_graph + geom_point(aes(x = df_ind_sup[,2], y = df_ind_sup[,3]), size = ggoptions_default$size/3, color = color.ind.sup, shape = 1) if (autoLab) text_ind.sup <- ggrepel::geom_text_repel(aes(x = df_ind_sup[,2], y = df_ind_sup[,3], label=df_ind_sup[,1]), color = color.ind.sup, size = ggoptions_default$size, fontface = "italic") else{text_ind.sup <- geom_text(aes(x = df_ind_sup[,2], y = df_ind_sup[,3], label=df_ind_sup[,1]), color = color.ind.sup, size = ggoptions_default$size, fontface = "italic",hjust = (-sign(df_ind_sup[,2])+1)/2, vjust = -sign(df_ind_sup[,3])*0.75+0.25)} } else{ if (habillage[1] == "cos2"){ gg_graph <- gg_graph + geom_point(aes(x = df_ind_sup[,2], y = df_ind_sup[,3], color = res.pca$ind.sup$cos2[,axes[1]] + res.pca$ind.sup$cos2[,axes[2]]), size = ggoptions_default$size/3, shape = 1) if (autoLab) text_ind.sup <- ggrepel::geom_text_repel(aes(x = df_ind_sup[,2], y = df_ind_sup[,3], label=df_ind_sup[,1], color = res.pca$ind.sup$cos2[,axes[1]] + res.pca$ind.sup$cos2[,axes[2]]), size = ggoptions_default$size, fontface = "italic") else{text_ind.sup <- geom_text(aes(x = df_ind_sup[,2], y = df_ind_sup[,3], label=df_ind_sup[,1], color = res.pca$ind.sup$cos2[,axes[1]] + res.pca$ind.sup$cos2[,axes[2]]), size = ggoptions_default$size, fontface = "italic", hjust = (-sign(df_ind_sup[,2])+1)/2, vjust = -sign(df_ind_sup[,3])*0.75+0.25)} } else{ if (habillage[1] == "contrib") text_ind.sup <- NULL #+ geom_point(aes(x = res.pca$ind.sup$coord[,axes[1]], y = res.pca$ind.sup$coord[,axes[2]], color = res.pca$ind$contrib[,axes[1]]*res.pca$eig[axes[1],1]+res.pca$ind$contrib[,axes[2]]*res.pca$eig[axes[2],1]), size = ggoptions_default$size/3, shape = 1) else{gg_graph <- gg_graph + geom_point(aes(x = df_ind_sup[,2], y = df_ind_sup[,3], color = (res.pca$call$X)[rownames(res.pca$ind.sup$coord),habillage[1]]), size = ggoptions_default$size/3, shape = 1) if (autoLab) text_ind.sup <- ggrepel::geom_text_repel(aes(x = df_ind_sup[,2], y = df_ind_sup[,3], label=df_ind_sup[,1], color = (res.pca$call$X)[rownames(res.pca$ind.sup$coord),habillage[1]]), size = ggoptions_default$size, fontface = "italic", show.legend = FALSE) else{text_ind.sup <- geom_text(aes(x = df_ind_sup[,2], y = df_ind_sup[,3], label=df_ind_sup[,1], color = (res.pca$call$X)[rownames(res.pca$ind.sup$coord),habillage[1]]), size = ggoptions_default$size, fontface = "italic", show.legend = FALSE, hjust = (-sign(df_ind_sup[,2])+1)/2, vjust = -sign(df_ind_sup[,3])*0.75+0.25) }}}} gg_graph <- gg_graph + text_ind.sup } else{ gg_graph <- gg_graph + geom_point(aes(x = df_ind_sup[,2], y = df_ind_sup[,3]), size = ggoptions_default$size/3, color = color.ind.sup) } } else{ if(dim(res.pca$ind.sup$coord)[1] == 1){ if (is.null(select)) selectionS <- 1 if (isTRUE(lab.ind.sup)){ if (habillage[1] == "none") gg_graph <- gg_graph + geom_point(aes(x = res.pca$ind.sup$coord[,axes[1]], y = res.pca$ind.sup$coord[,axes[2]]), size = ggoptions_default$size/3, color = color.ind.sup, shape = 1) + ggrepel::geom_text_repel(aes(x = res.pca$ind.sup$coord[,axes[1]], y = res.pca$ind.sup$coord[,axes[2]], label=ifelse(!is.null(selectionS), rownames(res.pca$ind.sup$coord), "")), color = color.ind.sup, size = ggoptions_default$size, fontface = "italic") else{ if (habillage[1] == "cos2") gg_graph <- gg_graph + geom_point(aes(x = res.pca$ind.sup$coord[,axes[1]], y = res.pca$ind.sup$coord[,axes[2]], color = res.pca$ind.sup$cos2[,axes[1]] + res.pca$ind.sup$cos2[,axes[2]]), size = ggoptions_default$size/3, shape = 1) + ggrepel::geom_text_repel(aes(x = res.pca$ind.sup$coord[,axes[1]], y = res.pca$ind.sup$coord[,axes[2]], label=ifelse(!is.null(selectionS), rownames(res.pca$ind.sup$coord), ""), color = res.pca$ind.sup$cos2[,axes[1]] + res.pca$ind.sup$cos2[,axes[2]]), size = ggoptions_default$size, fontface = "italic") else{ if (habillage[1] == "contrib") gg_graph <- gg_graph #+ geom_point(aes(x = res.pca$ind.sup$coord[,axes[1]], y = res.pca$ind.sup$coord[,axes[2]], color = res.pca$ind$contrib[,axes[1]]*res.pca$eig[axes[1],1]+res.pca$ind$contrib[,axes[2]]*res.pca$eig[axes[2],1]), size = ggoptions_default$size/3, shape = 1) else{gg_graph <- gg_graph + geom_point(aes(x = res.pca$ind.sup$coord[,axes[1]], y = res.pca$ind.sup$coord[,axes[2]], color = (res.pca$call$X)[rownames(res.pca$ind.sup$coord),habillage[1]]), size = ggoptions_default$size/3, shape = 1) + ggrepel::geom_text_repel(aes(x = res.pca$ind.sup$coord[,axes[1]], y = res.pca$ind.sup$coord[,axes[2]], label=ifelse(!is.null(selectionS), rownames(res.pca$ind.sup$coord), ""), color = (res.pca$call$X)[rownames(res.pca$ind.sup$coord),habillage[1]]), size = ggoptions_default$size, fontface = "italic", show.legend = FALSE) }}} } else{ gg_graph <- gg_graph + geom_point(aes(x = res.pca$ind.sup$coord[,axes[1]], y = res.pca$ind.sup$coord[,axes[2]]), size = ggoptions_default$size/3, color = color.ind.sup) } } } } if ((!is.null(res.pca$quali.sup)) && (is.na(test.invisible[3]))){ if (isTRUE(lab.quali)){ if((habillage[1] == "none") || !(habillage[1] %in% liste.quali)){ gg_graph <- gg_graph + geom_point(aes(x = df_quali.sup[,2], y = df_quali.sup[,3]), size = ggoptions_default$size/2.8, color = col.quali, shape = 0) if (autoLab) text_quali.sup <- ggrepel::geom_text_repel(aes(x = df_quali.sup[,2], y = df_quali.sup[,3], label=df_quali.sup[,1]), color = col.quali, size = ggoptions_default$size, fontface = "italic") else{text_quali.sup <- geom_text(aes(x = df_quali.sup[,2], y = df_quali.sup[,3], label=df_quali.sup[,1]), color = col.quali, size = ggoptions_default$size, fontface = "italic",hjust = (-sign(df_quali.sup[,2])+1)/2, vjust = -sign(df_quali.sup[,3])*0.75+0.25)} gg_graph <- gg_graph + text_quali.sup } else{ if ((habillage[1] %in% liste.quali) || (colnames(res.pca$call$X))[habillage[1]] %in% liste.quali) { gg_graph <- gg_graph + geom_point(aes(x = res.pca$quali.sup$coord[levels(res.pca$call$X[,habillage[1]]),axes[1]], y = res.pca$quali.sup$coord[levels(res.pca$call$X[,habillage[1]]),axes[2]]), size = ggoptions_default$size/2.8, color = palette[1:length(levels(res.pca$call$X[,habillage[1]]))], shape = 0) if (autoLab) text_quali.sup <- ggrepel::geom_text_repel(aes(x = res.pca$quali.sup$coord[levels(res.pca$call$X[,habillage[1]]),axes[1]], y = res.pca$quali.sup$coord[levels(res.pca$call$X[,habillage[1]]),axes[2]], label=levels(res.pca$call$X[,habillage[1]])), color = palette[1:length(levels(res.pca$call$X[,habillage[1]]))], size = ggoptions_default$size, fontface = "italic") else{text_quali.sup <- geom_text(aes(x = res.pca$quali.sup$coord[levels(res.pca$call$X[,habillage[1]]),axes[1]], y = res.pca$quali.sup$coord[levels(res.pca$call$X[,habillage[1]]),axes[2]], label=levels(res.pca$call$X[,habillage[1]])), color = palette[1:length(levels(res.pca$call$X[,habillage[1]]))], size = ggoptions_default$size, fontface = "italic",nudge_y=nudge_y,hjust = (-sign(df_quali.sup[levels(res.pca$call$X[,habillage[1]]),2])+1)/2, vjust = -sign(df_quali.sup[levels(res.pca$call$X[,habillage[1]]),3])*0.75+0.25)} gg_graph <- gg_graph + text_quali.sup } if(length(liste.quali) > 1){ gg_graph <- gg_graph + geom_point(aes(x = res.pca$quali.sup$coord[which(!(rownames(res.pca$quali.sup$coord) %in% levels(res.pca$call$X[,habillage[1]]))),axes[1]], y = res.pca$quali.sup$coord[which(!(rownames(res.pca$quali.sup$coord) %in% levels(res.pca$call$X[,habillage[1]]))),axes[2]]), size = ggoptions_default$size/2.8, color = col.quali, shape = 0) if (autoLab) text_quali.sup <- ggrepel::geom_text_repel(aes(x = res.pca$quali.sup$coord[which(!(rownames(res.pca$quali.sup$coord) %in% levels(res.pca$call$X[,habillage[1]]))),axes[1]], y = res.pca$quali.sup$coord[which(!(rownames(res.pca$quali.sup$coord) %in% levels(res.pca$call$X[,habillage[1]]))),axes[2]], label = rownames(res.pca$quali.sup$coord)[which(!(rownames(res.pca$quali.sup$coord) %in% levels(res.pca$call$X[,habillage[1]])))]), color = col.quali, size = ggoptions_default$size, fontface = "italic") else{text_quali.sup <- geom_text(aes(x = res.pca$quali.sup$coord[which(!(rownames(res.pca$quali.sup$coord) %in% levels(res.pca$call$X[,habillage[1]]))),axes[1]], y = res.pca$quali.sup$coord[which(!(rownames(res.pca$quali.sup$coord) %in% levels(res.pca$call$X[,habillage[1]]))),axes[2]], label = rownames(res.pca$quali.sup$coord)[which(!(rownames(res.pca$quali.sup$coord) %in% levels(res.pca$call$X[,habillage[1]])))]), color = col.quali, size = ggoptions_default$size, fontface = "italic",nudge_y=nudge_y,hjust = (-sign(df_quali.sup[which(!(rownames(res.pca$quali.sup$coord) %in% levels(res.pca$call$X[,habillage[1]]))),2])+1)/2, vjust = -sign(df_quali.sup[which(!(rownames(res.pca$quali.sup$coord) %in% levels(res.pca$call$X[,habillage[1]]))),3])*0.75+0.25)} gg_graph <- gg_graph + text_quali.sup } } } else{ gg_graph <- gg_graph + geom_point(aes(x = df_quali.sup[,2], y = df_quali.sup[,3]), size = ggoptions_default$size/2.8, color = col.quali, shape = 0) } } } if (graph.type == "classic"){ if (any(labe!="")){ if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) if (autoLab ==TRUE) autoLab(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],shadotext=shadowtext,...) if (autoLab ==FALSE) text(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],pos=3,...) }} if (!is.null(ellipse)) { nbre.ellipse <- nlevels(coord.ellipse[, 1]) for (e in 1:nbre.ellipse) { data.elli <- coord.ellipse[ellipse$res[, 1] == levels(coord.ellipse[, 1])[e], -1] if(graph.type=="classic"){ if ((habillage[1] != "none")&(habillage[1] != "ind")) lines(x=data.elli[, 1], y = data.elli[, 2], col = palette[color.mod[e]],...) else lines(x=data.elli[, 1], y = data.elli[, 2], col = palette[col.quali],...)} else{ if(graph.type=="ggplot"){ if (habillage[1] != "none"){ gg_graph <- gg_graph + geom_path(aes_string(x=data.elli[,1],y=data.elli[,2]), color = palette[color.mod[e]]) } else { gg_graph <- gg_graph + geom_path(aes_string(x=data.elli[,1],y=data.elli[,2]), color = palette[col.quali]) } } } } } # if ((habillage != "none")&(habillage != "ind")) legend("topleft",legend= levels(res.pca$call$X[,habillage]),text.col= color.mod,cex=par("cex")*0.8) if ((habillage[1] != "none") & (habillage[1] != "ind") & (habillage[1] != "cos2") & (habillage[1] != "contrib") & (graph.type == "classic")) { L <- list(x="topleft", legend = levels(res.pca$call$X[, habillage[1]]), text.col = color.mod, cex = par("cex") * 0.8) L <- modifyList(L, legend) do.call(graphics::legend, L) } } if (choix == "varcor") { sauv <- res.pca$var$coord res.pca$var$coord <- res.pca$var$cor if (!is.null(res.pca$quanti.sup)) res.pca$quanti.sup$coord <- res.pca$quanti.sup$cor res.pca$call$scale.unit <- TRUE } if ((choix == "var")||(choix == "varcor")) { if (is.null(title)) titre <- "PCA graph of variables" else titre <- title selection <- selectionS <- NULL if (!is.null(select)) { if (mode(select)=="numeric") selection <- select else { if (sum(rownames(res.pca$var$coord)%in%select)+sum(rownames(res.pca$quanti.sup$coord)%in%select)!=0) selection <- which(rownames(res.pca$var$coord)%in%select) else { if (grepl("contrib",select[1])) selection <- (rev(order(res.pca$var$contrib[,axes[1]]*res.pca$eig[axes[1],1]+res.pca$var$contrib[,axes[2]]*res.pca$eig[axes[2],1])))[1:min(nrow(res.pca$var$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] if (grepl("coord",select[1])) selection <- (rev(order(apply(res.pca$var$coord[,axes]^2,1,sum))))[1:min(nrow(res.pca$var$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select[1])) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selection <- (rev(order(apply(res.pca$var$cos2[,axes],1,sum))))[1:min(nrow(res.pca$var$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selection <- which(apply(res.pca$var$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selection <- select } } } if ((!is.null(select))&(!is.null(res.pca$quanti.sup))) { if (mode(select)=="numeric") selectionS <- select else { if (sum(rownames(res.pca$var$coord)%in%select)+sum(rownames(res.pca$quanti.sup$coord)%in%select)!=0) selectionS <- which(rownames(res.pca$quanti.sup$coord)%in%select) else { if (grepl("contrib",select[1])) selectionS <- NULL if (grepl("coord",select[1])) selectionS <- (rev(order(apply(res.pca$quanti.sup$coord[,axes]^2,1,sum))))[1:min(nrow(res.pca$quanti.sup$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select[1])) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selectionS <- (rev(order(apply(res.pca$quanti.sup$cos2[,axes],1,sum))))[1:min(nrow(res.pca$quanti.sup$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selectionS <- which(apply(res.pca$quanti.sup$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selectionS <- select } } } test.invisible <- vector(length = 2) if (!is.null(invisible)) { test.invisible[1] <- match("var", invisible) test.invisible[2] <- match("quanti.sup", invisible) } else test.invisible <- rep(NA, 2) scale.unit <- res.pca$call$scale.unit coord.var <- res.pca$var$coord[, axes,drop=FALSE] if (!is.null(res.pca$quanti.sup)) coord.quanti <- res.pca$quanti.sup$coord[, axes, drop=FALSE] else coord.quanti <- NULL if (scale.unit) xlim <- ylim <- c(-1, 1) else { xmin <- min(0,coord.var[, 1], coord.quanti[, 1]) xmax <- max(0,coord.var[, 1], coord.quanti[, 1]) ymin <- min(0,coord.var[, 2], coord.quanti[, 2]) ymax <- max(0,coord.var[, 2], coord.quanti[, 2]) xlim <- c(xmin, xmax) * 1.2 ylim <- c(ymin, ymax) * 1.2 } if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() if (is.null(palette)) palette(c("black","red","green3","blue","cyan","magenta","darkgray","darkgoldenrod","darkgreen","violet","turquoise","orange","lightpink","lavender","yellow","lightgreen","lightgrey","lightblue","darkkhaki", "darkmagenta","darkolivegreen","lightcyan", "darkorange", "darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet", "lightgray","lightsalmon","lightyellow", "maroon")) # cercle variables factor map if (graph.type == "classic") { if (scale.unit) { plot(0, 0, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp=1, main=titre,...) x.cercle <- seq(-1, 1, by = 0.01) y.cercle <- sqrt(1 - x.cercle^2) lines(x.cercle, y = y.cercle,...) lines(x.cercle, y = -y.cercle,...) } else { plot(0, 0, main = titre, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp=1, ...) } abline(v=0,lty=2,...) abline(h=0,lty=2,...) } # coll <- coo <- labe <- posi <- NULL if (!is.null(coord.var[ which(apply(res.pca$var$cos2[, axes,drop=FALSE],1,sum, na.rm = TRUE) >= lim.cos2.var),])&is.na(test.invisible[1])&(nrow(coord.var)>0)){ coord.var <- coord.var[ which(apply(res.pca$var$cos2[, axes,drop=FALSE],1,sum, na.rm = TRUE) >= lim.cos2.var),,drop=FALSE] coo <- coord.var if (length(col.var)==1) coll <- c(coll,rep(col.var,nrow(coord.var))) else coll <- col.var if (!is.null(col.hab)) coll <- col.hab[which(colnames(res.pca$call$X)%in%rownames(res.pca$var$coord))] if (lab.var){ labe <- c(labe,rownames(coord.var)) } else labe <- c(labe,rep("",nrow(coord.var))) if (!is.null(selection)){ if (is.numeric(unselect)) coll[!((1:length(coll))%in%selection)] <- rgb(t(col2rgb(coll[!((1:length(coll))%in%selection)])),alpha=255*(1-unselect),maxColorValue=255) else coll[!((1:length(coll))%in%selection)] <- unselect labe[!((1:length(coll))%in%selection)] <- "" } if(graph.type == "ggplot"){ df_var <- df_quanti.sup <- NULL df_var <- data.frame(labe,coord.var,coll) } else { for (v in 1:nrow(coord.var)) { arrows(0, 0, coord.var[v, 1], coord.var[v, 2], length = 0.1, angle = 15, code = 2, col = coll[v]) if (lab.var) { if (abs(coord.var[v,1])>abs(coord.var[v,2])){ if (coord.var[v,1]>=0) posi<-c(posi,4) else posi<-c(posi,2) } else { if (coord.var[v,2]>=0) posi<-c(posi,3) else posi<-c(posi,1) } } } } } # if (!is.null(coord.quanti)){ if (!is.null(coord.quanti[ which(apply(res.pca$quanti.sup$cos2[, axes,drop=FALSE],1,sum, na.rm = TRUE) >= lim.cos2.var),])& is.na(test.invisible[2]) & (nrow(coord.quanti)>0)) { coord.quanti <- coord.quanti[ which(apply(res.pca$quanti.sup$cos2[, axes,drop=FALSE],1,sum, na.rm = TRUE) >= lim.cos2.var),,drop=FALSE] coo <- rbind(coo,coord.quanti) if (length(col.quanti.sup)==1) col.quanti.sup<-rep(col.quanti.sup, nrow(coord.quanti)) if (is.null(col.hab)) coll2 <- col.quanti.sup else coll2 <- col.hab[which(colnames(res.pca$call$X)%in%colnames(res.pca$call$quanti.sup))] if (lab.quanti){ labe2 <- rownames(coord.quanti) } else labe2 <- rep("",nrow(coord.quanti)) if (length(select)==1){ if (grepl("contrib",select)){ if (is.numeric(unselect)) coll2[1:length(coll2)] <- rgb(t(col2rgb(coll2[1:length(coll2)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[1:length(coll2)] <- unselect labe2[1:length(coll2)] <- "" }} if (!is.null(selectionS)){ if (is.numeric(unselect)) coll2[!((1:length(coll2))%in%selectionS)] <- rgb(t(col2rgb(coll2[!((1:length(coll2))%in%selectionS)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!((1:length(coll2))%in%selectionS)] <- unselect labe2[!((1:length(coll2))%in%selectionS)] <- "" } if (graph.type == "ggplot") df_quanti.sup <- data.frame(labe2,coord.quanti,coll2) # if (graph.type == "classic"){ for (q in 1:nrow(coord.quanti)) { arrows(0, 0, coord.quanti[q, 1], coord.quanti[q, 2], length = 0.1, angle = 15, code = 2, lty = 2, col=coll2[q]) # if (lab.quanti) { if (abs(coord.quanti[q,1])>abs(coord.quanti[q,2])){ if (coord.quanti[q,1]>=0) posi<-c(posi,4) else posi<-c(posi,2) } else { if (coord.quanti[q,2]>=0) posi<-c(posi,3) else posi<-c(posi,1) } } }} labe <- c(labe,labe2) coll <- c(coll,coll2) } } if (graph.type == "classic"){ if (any(labe!="")){ if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) if (autoLab==FALSE) text(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], pos = posi[labe!=""], col = coll[labe!=""],...) if (autoLab==TRUE) autoLab(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], shadotext=shadowtext,...) } } else { if((!is.na(test.invisible[1])) & (habillage[1] != "none") & (is.null(legend["title"][[1]]))){ legend["title"][[1]] <- habillage[1]} if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) if (length(habillage) != 1){ warning("Habillage must be length 1") habillage <- habillage[1] } if (!(habillage[1] %in% c("contrib","cos2","none"))){ warning("Habillage must be in c('contrib','cos2','none')") habillage <- "none" } circle <- annotate("path", x=0+1*cos(seq(0,2*pi,length.out=100)), y=0+1*sin(seq(0,2*pi,length.out=100)), lty = ggoptions_default$circle.lty, lwd = ggoptions_default$circle.lwd, color = ggoptions_default$circle.color) transparency_var <- ifelse(rownames(res.pca$var$coord) %in% labe, 1, 1-unselect) gg_graph <- ggplot() + coord_fixed(ratio = 1) + geom_line(aes(x=x, y=y), data=data.frame(x=-1:1,y=0),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_line(aes(x=x, y=y), data=data.frame(x=0,y=-1:1),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + theme_light() if (is.na(test.invisible[1])){ if (((habillage[1] != "contrib") & (habillage[1] != "cos2"))) { gg_graph <- gg_graph + aes(x=df_var[,2], y=df_var[,3]) + geom_segment(aes(x=0,y=0,xend=df_var[,2], yend=df_var[,3]),arrow=arrow(length=unit(0.2,"cm")),alpha = transparency_var, lty = ggoptions_default$segment.lty, lwd = ggoptions_default$segment.lwd, color=col.var) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1]), size = ggoptions_default$size, color = col.var) else{text <- geom_text(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1]), size = ggoptions_default$size, color = col.var, hjust = (-sign(df_var[,2])+1)/2, vjust = -sign(df_var[,3])*0.75+0.25)} } if (habillage[1] == "cos2" || habillage[1] == "contrib"){ if (habillage[1] == "cos2") df_var[,4] <- res.pca$var$cos2[,axes[1]] + res.pca$var$cos2[,axes[2]] if (habillage[1] == "contrib") df_var[,4] <- (res.pca$var$contrib[,axes[1]]*res.pca$eig[axes[1],1]+res.pca$var$contrib[,axes[2]]*res.pca$eig[axes[2],1])/(res.pca$eig[axes[1],1]+res.pca$eig[axes[2],1]) gg_graph <- gg_graph + aes(x=df_var[,2], y=df_var[,3],color = df_var[,4]) + geom_segment(aes(x=0,y=0,xend=df_var[,2], yend=df_var[,3],col = df_var[,4]),arrow=arrow(length=unit(0.2,"cm")), alpha = transparency_var, lty = ggoptions_default$segment.lty, lwd = ggoptions_default$segment.lwd) + scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) if (habillage[1] == "cos2") gg_graph <- gg_graph + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], "cos2")) if (habillage[1] == "contrib") gg_graph <- gg_graph + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], "Ctr")) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1], color = df_var[,4]), size = ggoptions_default$size) else{text <- geom_text(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1], color = df_var[,4]), size = ggoptions_default$size, hjust = (-sign(df_var[,2])+1)/2, vjust = -sign(df_var[,3])*0.75+0.25)} } } if (!is.na(test.invisible[1])){ gg_graph <- gg_graph + labs(color = legend["title"][[1]]) } if ((!is.null(res.pca$quanti.sup))&(is.na(test.invisible[2]))){ transparency_quanti <- ifelse(rownames(res.pca$quanti.sup$coord) %in% labe, 1, 1-unselect) if (isTRUE(lab.quanti)){ if(habillage[1] == "contrib") text_quanti.sup <- NULL if (habillage[1] == "none"){ gg_graph <- gg_graph + geom_segment(aes(x=0,y=0,xend=df_quanti.sup[,2], yend=df_quanti.sup[,3]),arrow=arrow(length=unit(0.2,"cm")),lty = 2, color = col.quanti.sup,alpha = transparency_quanti) if (autoLab) text_quanti.sup <- ggrepel::geom_text_repel(aes(x = df_quanti.sup[,2], y = df_quanti.sup[,3], label=df_quanti.sup[,1]), color = col.quanti.sup, size = ggoptions_default$size,alpha = transparency_quanti) else{text_quanti.sup <- geom_text(aes(x = df_quanti.sup[,2], y = df_quanti.sup[,3], label=df_quanti.sup[,1]), color = col.quanti.sup, size = ggoptions_default$size,hjust = (-sign(df_quanti.sup[,2])+1)/2, vjust = -sign(df_quanti.sup[,3])*0.75+0.25,alpha = transparency_quanti)} } if (habillage[1] == "cos2"){gg_graph <- gg_graph + geom_segment(aes(x=0,y=0,xend=df_quanti.sup[,2], yend=df_quanti.sup[,3], color = res.pca$quanti.sup$cos2[,axes[1]] + res.pca$quanti.sup$cos2[,axes[2]]),arrow=arrow(length=unit(0.2,"cm")),lty = 2,alpha = transparency_quanti) if (autoLab) text_quanti.sup <- ggrepel::geom_text_repel(aes(x = df_quanti.sup[,2], y = df_quanti.sup[,3], label=df_quanti.sup[,1], color = res.pca$quanti.sup$cos2[,axes[1]] + res.pca$quanti.sup$cos2[,axes[2]]), size = ggoptions_default$size,alpha = transparency_quanti) else{text_quanti.sup <- geom_text(aes(x = df_quanti.sup[,2], y = df_quanti.sup[,3], label=df_quanti.sup[,1], color = res.pca$quanti.sup$cos2[,axes[1]] + res.pca$quanti.sup$cos2[,axes[2]]), size = ggoptions_default$size,hjust = (-sign(df_quanti.sup[,2])+1)/2, vjust = -sign(df_quanti.sup[,3])*0.75+0.25,alpha = transparency_quanti)} } gg_graph <- gg_graph + text_quanti.sup } else{ gg_graph <- gg_graph + geom_segment(aes(x=0,y=0,xend=df_quanti.sup[,2], yend=df_quanti.sup[,3]),arrow=arrow(length=unit(0.2,"cm")),lty = 2, color = col.quanti.sup) } } gg_graph <- gg_graph + theme + circle + labs(title = titre, x = lab.x, y= lab.y) if (is.na(test.invisible[1]) & (isTRUE(lab.var))) gg_graph <- gg_graph + text } } palette(old.palette) if(graph.type == "ggplot") return(gg_graph) }FactoMineR/R/CA.R0000644000176200001440000002556614133742667013103 0ustar liggesusersCA <- function (X, ncp = 5, row.sup = NULL, col.sup = NULL, quanti.sup=NULL, quali.sup=NULL, graph = TRUE, axes=c(1,2), row.w=NULL, excl=NULL){ # fct.eta2 <- function(vec,x,weights) { # res <- summary(lm(x~vec,weights=weights,na.action=na.omit))$r.squared # } fct.eta2 <- function(vec,x,weights) { ## pb avec les poids VB <- function(xx) { return(sum((colSums((tt*xx)*weights)^2)/ni)) } tt <- tab.disjonctif(vec) ni <- colSums(tt*weights) unlist(lapply(as.data.frame(x),VB))/colSums(x*x*weights) } if (is.table(X)) X <- matrix(as.vector(X),nrow(X),dimnames=dimnames(X)) if (is.null(rownames(X))) rownames(X) <- 1:nrow(X) if (is.null(colnames(X))) colnames(X) <- colnames(X, do.NULL = FALSE,prefix="V") if (!is.null(row.sup) & !is.numeric(row.sup)) row.sup<- which(rownames(X)%in%row.sup) if (!is.null(col.sup) & !is.numeric(col.sup)) col.sup<- which(colnames(X)%in%col.sup) if (!is.null(quali.sup) & !is.numeric(quali.sup)) quali.sup<- which(colnames(X)%in%quali.sup) if (!is.null(quanti.sup) & !is.numeric(quanti.sup)) quanti.sup<- which(colnames(X)%in%quanti.sup) X <- as.data.frame(X) is.quali <- which(!unlist(lapply(X,is.numeric))) X[,is.quali] <- lapply(X[,is.quali,drop=FALSE],as.factor) for (i in is.quali) X[,i] <- as.factor(X[,i]) X <- droplevels(X) Xtot <- X if (any(!unlist(lapply(X, is.numeric)))) { auxi <- NULL for (j in (1:ncol(X))[!((1:ncol(X))%in%quali.sup)]) if (!is.numeric(X[,j])) auxi <- c(auxi,colnames(X)[j]) if (!is.null(auxi)) stop(paste("\nThe following variables are not quantitative: ", auxi)) } if (!inherits(X, "data.frame")) stop("X is not a data.frame") if (!is.null(row.sup)) X <- as.data.frame(X[-row.sup,]) if ((!is.null(col.sup))||(!is.null(quanti.sup))||(!is.null(quali.sup))) X <- as.data.frame(X[,-c(col.sup,quanti.sup,quali.sup)]) if (any(apply(X,1,sum)==0)){ warning(paste0("The rows ",paste(rownames(X)[which(apply(X,1,sum)==0)],collapse=", ")," sum at 0. They were suppressed from the analysis")) X <- X[-which(apply(X,1,sum)==0),,drop=FALSE] } if (any(apply(X,2,sum)==0)){ warning(paste0("The columns ",paste(colnames(X)[which(apply(X,2,sum)==0)],collapse=", ")," sum at 0. They were suppressed from the analysis")) X <- X[,-which(apply(X,2,sum)==0),drop=FALSE] } ### 3 lignes rajoutees if (is.null(row.w)) row.w <- rep(1,nrow(X)) row.w.init <- row.w if (length(row.w)!=nrow(X)) stop("length of vector row.w should be the number of active rows") total <- sum(X*row.w) F <- as.matrix(X)*(row.w/total) marge.col <- colSums(F) marge.row <- rowSums(F) ncp <- min(ncp, (nrow(X) - 1), (ncol(X) - 1)) Tc <- t(t(F/marge.row)/marge.col) - 1 if(!is.null(excl)) marge.col[excl] <- 1e-15 tmp <- svd.triplet(Tc, row.w = marge.row, col.w = marge.col,ncp=ncp) if(!is.null(excl)) marge.col[excl] <- 0 eig <- tmp$vs^2 vp <- matrix(NA, length(eig), 3) rownames(vp) <- paste("dim", 1:length(eig)) colnames(vp) <- c("eigenvalue", "percentage of variance", "cumulative percentage of variance") vp[, "eigenvalue"] <- eig vp[, "percentage of variance"] <- (eig/sum(eig))*100 vp[, "cumulative percentage of variance"] <- cumsum(vp[, "percentage of variance"]) V <- tmp$V U <- tmp$U eig <- eig[1:ncol(U)] coord.col <- t(t(V)*sqrt(eig)) coord.row <- t(t(U)*sqrt(eig)) dist2.col <- colSums(Tc^2*marge.row) contrib.col <- t(t(coord.col^2*marge.col)/eig) cos2.col <- coord.col^2/dist2.col colnames(coord.col) <- colnames(contrib.col) <- colnames(cos2.col) <- paste("Dim", 1:length(eig)) rownames(coord.col) <- rownames(contrib.col) <- rownames(cos2.col) <- attributes(X)$names dist2.row <- rowSums(t(t(Tc^2)*marge.col)) contrib.row <- t(t(coord.row^2*marge.row)/eig) cos2.row <- coord.row^2/dist2.row colnames(coord.row) <- colnames(contrib.row) <- colnames(cos2.row) <- paste("Dim", 1:length(eig)) rownames(coord.row) <- rownames(contrib.row) <- rownames(cos2.row) <- attributes(X)$row.names inertia.row <- marge.row*dist2.row inertia.col <- marge.col*dist2.col names(inertia.col) <- attributes(coord.col)$row.names names(inertia.row) <- attributes(coord.row)$row.names # res.call <- list(X = X, marge.col = marge.col, marge.row = marge.row, ncp = ncp, row.w=row.w,call=sys.calls()[[1]],Xtot=Xtot,N=sum(row.w*rowSums(X))) res.call <- list(X = X, marge.col = marge.col, marge.row = marge.row, ncp = ncp, row.w=row.w,excl=excl,call=match.call(),Xtot=Xtot,N=sum(row.w*rowSums(X))) res.col <- list(coord = as.matrix(coord.col[, 1:ncp]), contrib = as.matrix(contrib.col[, 1:ncp] * 100), cos2 = as.matrix(cos2.col[, 1:ncp]), inertia=inertia.col) res.row <- list(coord = coord.row[, 1:ncp], contrib = contrib.row[, 1:ncp] * 100, cos2 = cos2.row[, 1:ncp], inertia=inertia.row) res <- list(eig = vp[1:min(nrow(X) - 1, ncol(X) - 1),,drop=FALSE], call = res.call, row = res.row, col = res.col, svd = tmp) if (!is.null(row.sup)){ X.row.sup <- as.data.frame(Xtot[row.sup,]) if ((!is.null(col.sup))||(!is.null(quanti.sup))||(!is.null(quali.sup))) X.row.sup <- as.data.frame(X.row.sup[,-c(col.sup,quanti.sup,quali.sup)]) somme.row <- rowSums(X.row.sup) X.row.sup <- X.row.sup/somme.row coord.row.sup <- crossprod(t(as.matrix(X.row.sup)),V) # modif dist2.row <- rowSums(t((t(X.row.sup)-marge.col)^2/marge.col)) #dist2.row <- rowSums(sweep(sweep(X.row.sup,2,marge.col,FUN="-")^2,2,1/marge.col,FUN="*")) cos2.row.sup <- coord.row.sup^2/dist2.row coord.row.sup <- coord.row.sup[, 1:ncp,drop=FALSE] cos2.row.sup <- cos2.row.sup[, 1:ncp,drop=FALSE] colnames(coord.row.sup) <- colnames(cos2.row.sup) <- paste("Dim", 1:ncp) rownames(coord.row.sup) <- rownames(cos2.row.sup) <- rownames(X.row.sup) res.row.sup <- list(coord = coord.row.sup, cos2 = cos2.row.sup) res$row.sup <- res.row.sup res$call$row.sup <- row.sup } if (!is.null(col.sup)){ X.col.sup <- as.data.frame(Xtot[,col.sup]) if (!is.null(row.sup)) X.col.sup <- as.data.frame(X.col.sup[-row.sup,]) ## 1 ligne rajoutee X.col.sup <- X.col.sup*row.w colnames(X.col.sup) <- colnames(Xtot)[col.sup] somme.col <- colSums(X.col.sup) X.col.sup <- t(t(X.col.sup)/somme.col) coord.col.sup <- crossprod(as.matrix(X.col.sup),U) dist2.col <- colSums((X.col.sup-marge.row)^2/marge.row) coord.col.sup <- as.matrix(coord.col.sup[,1:ncp,drop=FALSE]) cos2.col.sup <- coord.col.sup^2/dist2.col cos2.col.sup <- cos2.col.sup[,1:ncp,drop=FALSE] colnames(coord.col.sup) <- colnames(cos2.col.sup) <- paste("Dim", 1:ncp) rownames(coord.col.sup) <- rownames(cos2.col.sup) <- colnames(X.col.sup) res.col.sup <- list(coord = coord.col.sup, cos2 = cos2.col.sup) res$col.sup <- res.col.sup res$call$col.sup <- col.sup } ## Ajout variable quanti supp. if (!is.null(quanti.sup)) { coord.quanti.sup <- matrix(NA, length(quanti.sup), ncp) if (is.null(row.sup)) coord.quanti.sup <- cov.wt(cbind.data.frame(res$row$coord,Xtot[,quanti.sup,drop=FALSE]),cor=TRUE,wt=marge.row,method="ML")$cor[-(1:ncp),1:ncp,drop=FALSE] else coord.quanti.sup <- cov.wt(cbind.data.frame(res$row$coord,Xtot[-row.sup,quanti.sup,drop=FALSE]),wt=marge.row,cor=TRUE,method="ML")$cor[-(1:ncp),1:ncp,drop=FALSE] dimnames(coord.quanti.sup) <- list(colnames(Xtot)[quanti.sup], paste("Dim", 1:ncp, sep = ".")) res$quanti.sup$coord <- coord.quanti.sup res$quanti.sup$cos2 <- coord.quanti.sup^2 res$call$quanti.sup <- quanti.sup } ## Ajout variable quali supp. if (!is.null(quali.sup)) { # res$quali.sup$coord <- NULL # if (!is.null(row.sup)) { # for (j in 1:length(quali.sup)) res$quali.sup$coord <- rbind.data.frame(res$quali.sup$coord,sweep(sapply(as.data.frame(sweep(res$row$coord,1,marge.row,FUN="*")),tapply,Xtot[-row.sup,quali.sup[j]],sum), 1, tapply(marge.row,Xtot[-row.sup,quali.sup[j]],sum),FUN="/")) # } else { # for (j in 1:length(quali.sup)) res$quali.sup$coord <- rbind.data.frame(res$quali.sup$coord,sweep(sapply(as.data.frame(sweep(res$row$coord,1,marge.row,FUN="*")),tapply,Xtot[,quali.sup[j]],sum), 1, tapply(marge.row,Xtot[,quali.sup[j]],sum),FUN="/")) # } # rownames(res$quali.sup$coord) <- paste(rep(colnames(Xtot)[quali.sup],lapply(Xtot[,quali.sup,drop=FALSE],nlevels)) , unlist(lapply(Xtot[,quali.sup,drop=FALSE],levels)),sep=".") if (!is.null(row.sup)) X.del <- as.data.frame(Xtot[-row.sup,-c(col.sup,quanti.sup,quali.sup)]) else X.del <- Xtot[,-c(col.sup,quanti.sup,quali.sup)] X.quali.sup <- NULL # for (j in 1:length(quali.sup)){ # if (!is.null(row.sup)) X.quali.sup <- rbind(X.quali.sup,matrix(unlist(by(X.del,Xtot[-row.sup,quali.sup[j]],colSums)),ncol=ncol(X.del),byrow=T)) # else X.quali.sup <- rbind(X.quali.sup,matrix(unlist(by(X.del,Xtot[,quali.sup[j]],colSums)),ncol=ncol(X.del),byrow=T)) # } Xtot2 <- Xtot if (!is.null(row.sup)) Xtot2 <- Xtot[-row.sup,] for (j in 1:length(quali.sup)) { Xtot2[,quali.sup[j]] <- droplevels(Xtot2[,quali.sup[j]] , reorder=FALSE) X.quali.sup <- rbind(X.quali.sup, matrix(unlist(by(X.del, Xtot2[, quali.sup[j]], colSums)), ncol = ncol(X.del), byrow = T)) } somme.quali <- rowSums(X.quali.sup) X.quali.sup <- X.quali.sup/somme.quali coord.quali.sup <- crossprod(t(as.matrix(X.quali.sup)),V) dist2.quali <- rowSums(t((t(X.quali.sup)-marge.col)^2/marge.col)) cos2.quali.sup <- coord.quali.sup^2/dist2.quali coord.quali.sup <- coord.quali.sup[, 1:ncp,drop=FALSE] cos2.quali.sup <- cos2.quali.sup[, 1:ncp,drop=FALSE] rownames(coord.quali.sup) <- rownames(cos2.quali.sup) <- paste(rep(colnames(Xtot2)[quali.sup],lapply(Xtot2[, quali.sup, drop = FALSE], nlevels)), unlist(lapply(Xtot2[, quali.sup, drop = FALSE], levels)),sep = ".") colnames(coord.quali.sup) <- colnames(cos2.quali.sup) <- paste("Dim", 1:ncp) res$quali.sup <- list(coord = coord.quali.sup, cos2 = cos2.quali.sup) Zqs <- tab.disjonctif(Xtot2[, quali.sup]) Nj <- colSums(Zqs * row.w) Nj <- colSums(Zqs * marge.row)*total if (total>1) coef <- sqrt(Nj * ((total - 1)/(total - Nj))) else coef <- sqrt(Nj) res$quali.sup$v.test <- res$quali.sup$coord*coef eta2 <- matrix(NA, length(quali.sup), ncp) eta2 <- sapply(as.data.frame(Xtot2[, quali.sup, drop = FALSE]), fct.eta2, res$row$coord, weights = marge.row) eta2 <- t(as.matrix(eta2,ncol=ncp)) colnames(eta2) <- paste("Dim", 1:ncp) rownames(eta2) <- colnames(Xtot)[quali.sup] res$quali.sup$eta2 <- eta2 res$call$quali.sup <- quali.sup } class(res) <- c("CA", "list") if (graph & (ncp>1)) { print(plot(res,axes=axes)) if (!is.null(quanti.sup)) print(plot(res, choix="quanti.sup",axes=axes,new.plot=TRUE)) } return(res) } FactoMineR/R/catdes.r0000644000176200001440000001606314531374777014120 0ustar liggesuserscatdes <- function(donnee,num.var,proba = 0.05,row.w=NULL, na.method="NA"){ moy.p <- function(V, fac=NULL, poids, na.rm=TRUE) { poids[is.na(V)] <- 0 if (is.null(fac)) { res <- sum(V * poids,na.rm=na.rm)/sum(poids) } else { res <- NULL for (i in 1:nlevels(fac)) res <- c(res, sum(V[fac==levels(fac)[i]] * poids[fac==levels(fac)[i]],na.rm=na.rm)/sum(poids[fac==levels(fac)[i]])) } return(res) } ec <- function(V, fac=NULL, poids, na.rm=TRUE) { poids[is.na(V)] <- 0 if (is.null(fac)){ V <- V-moy.p(V,fac=NULL,poids,na.rm) res <- sum(V^2 * poids,na.rm=na.rm)/sum(poids) } else { moy.par.mod <- moy.p(V,fac=fac,poids,na.rm) res <- NULL for (i in 1:nlevels(fac)) { res <- c(res, sum((V[fac==levels(fac)[i]]-moy.par.mod[i])^2 * poids[fac==levels(fac)[i]],na.rm=na.rm)/sum(poids[fac==levels(fac)[i]])) }} return(sqrt(res)) } donnee <- as.data.frame(donnee) if (is.numeric(donnee[,num.var])) stop(paste("The variable",num.var,"must be qualitative")) is.quali <- which(!unlist(lapply(donnee,is.numeric))) donnee[,is.quali] <- lapply(donnee[,is.quali,drop=FALSE],as.factor) donnee <- droplevels(donnee) if (is.null(row.w)) row.w <- rep(1,nrow(donnee)) lab.sauv <- lab <- colnames(donnee) quali <- NULL for (i in 1:length(lab)){ lab[i] <- gsub(" ",".",lab[i]) if (is.factor(donnee[,i])) { if(any(is.na(donnee[,i]))){ levels(donnee[,i]) <- c(levels(donnee[,i]), "NA") donnee[,i][is.na(donnee[,i])] <- "NA" } if (levels(donnee[,i])[1]=="") levels(donnee[,i])[1] <- "NA" if (i!=num.var) quali <- c(quali,i) } } quanti <- (1:ncol(donnee))[-c(quali,num.var)] if (length(quanti)==0) quanti <- NULL colnames(donnee) <- lab res <- list() nb.modalite <- nlevels(donnee[,num.var]) nb.quali <- length(quali) old.warn <- options("warn") if (nb.quali>0){ options(warn = -1) Test.chi <- matrix(NA,nrow=nb.quali,ncol=2) # marge.li <- apply(sweep(tab.disjonctif(donnee[,num.var]),1,row.w,FUN="*"),2,sum) # row margin can be different if NA nom <- tri <- structure(vector(mode = "list", length = nb.modalite), names = levels(donnee[,num.var])) indicateur.quali <- 0 for (i in 1:nb.quali){ Table <- t(sweep(tab.disjonctif(donnee[,num.var]),1,row.w,FUN="*"))%*%tab.disjonctif(donnee[,quali[i]]) ### Ajout 04/07/2023 if (tolower(na.method)=="na.omit" & colnames(Table)[ncol(Table)]=="NA") Table <- Table[,-ncol(Table)] ### Fin ajout 04/07/2023 marge.li <- apply(Table,1,sum) # row margin can be different if NA in the variable marge.col <- apply(Table,2,sum) Test <- chisq.test(Table,correct=FALSE) Test.chi[i,1] <- Test$p.value Test.chi[i,2] <- Test$parameter for (j in 1:nrow(Table)) { for (k in 1:ncol(Table)) { aux2 <- Table[j,k]/marge.li[j] aux3 <- marge.col[k]/sum(marge.col) aux4 <- min(phyper(round(Table[j,k],0)-1,round(marge.li[j],0),round(sum(marge.li),0)-round(marge.li[j],0),round(marge.col[k],0))*2+dhyper(round(Table[j,k],0),round(marge.li[j],0),round(sum(marge.li),0)-round(marge.li[j],0),round(marge.col[k],0)),phyper(round(Table[j,k],0),round(marge.li[j],0),round(sum(marge.li),0)-round(marge.li[j],0),round(marge.col[k],0),lower.tail=FALSE)*2+dhyper(round(Table[j,k],0),round(marge.li[j],0),round(sum(marge.li),0)-round(marge.li[j],0),round(marge.col[k],0))) if (aux4 <= proba) { aux5 <- (1-2*as.integer(aux2>aux3))*qnorm(aux4/2) aux1 <- Table[j,k]/marge.col[k] tri[[j]] <- rbind(tri[[j]],c(aux1*100,aux2*100,aux3*100,aux4,aux5)) nom[[j]] <- rbind(nom[[j]],c(levels(donnee[,quali[i]])[k],colnames(donnee)[quali[i]])) } } } rownames(Test.chi) <- colnames(donnee)[quali] } if (nrow(matrix(Test.chi,ncol=2))>1){ if (sum(Test.chi[,1] <= proba)==1){ nomaux <- rownames(Test.chi[order(Test.chi[,1]),])[1] Test.chi <- matrix(Test.chi[Test.chi[,1] <= proba,],ncol=2) rownames(Test.chi) <- nomaux } else Test.chi <- Test.chi[Test.chi[,1] <= proba,] } else if (Test.chi[,1] > proba) Test.chi <- NULL if (!is.null(Test.chi)){ if (nrow(matrix(Test.chi,ncol=2))>1){ oo <- order(Test.chi[,1]) Test.chi <- Test.chi[oo,] } colnames(Test.chi) <- c("p.value","df") res$test.chi2 <- Test.chi } for (j in 1:nb.modalite){ if (!is.null(tri[[j]])){ indicateur.quali <- 1 oo <- rev(order(tri[[j]][,5])) tri[[j]] <- tri[[j]][oo,] nom[[j]] <- nom[[j]][oo,] if (nrow(matrix(tri[[j]],ncol=5))>1) rownames(tri[[j]]) <- paste(nom[[j]][,2],nom[[j]][,1],sep="=") else { tri[[j]] <- matrix(tri[[j]],ncol=5) rownames(tri[[j]]) <- paste(nom[[j]][2],nom[[j]][1],sep="=") } colnames(tri[[j]]) <- c("Cla/Mod","Mod/Cla","Global","p.value","v.test") } } if (indicateur.quali>0) res$category <- tri } if (!is.null(quanti)){ nom <- result <- structure(vector(mode = "list", length = nb.modalite), names = levels(donnee[,num.var])) tabF <- matrix(0, length(quanti), 2) for (i in 1:length(quanti)){ res.aov <- summary(aov(donnee[,quanti[i]]~donnee[,num.var], na.action = na.exclude,weights=row.w))[[1]] tabF[i, 1] <- res.aov[1,2]/sum(res.aov[,2]) tabF[i, 2] <- res.aov[1,5] moy.mod <- moy.p(donnee[,quanti[i]],fac=donnee[,num.var],poids=row.w) n.mod <- apply(sweep(tab.disjonctif(donnee[,num.var]),1,row.w,FUN="*"),2,sum) sd.mod <- ec(donnee[,quanti[i]],fac=donnee[,num.var],poids=row.w) moy <- moy.p(donnee[,quanti[i]],poids=row.w) et <- ec(donnee[,quanti[i]],poids=row.w) for (j in 1:nb.modalite){ v.test <- (moy.mod[j]-moy)/et*sqrt(n.mod[j])/sqrt((sum(n.mod)-n.mod[j])/(sum(n.mod)-1)) p.value <- pnorm(abs(v.test),lower.tail = FALSE)*2 if(!is.na(v.test)){ if (p.value <= proba) { result[[j]] <- rbind(result[[j]],c(v.test,moy.mod[j],moy,sd.mod[j],et,p.value)) nom[[j]] <- c(nom[[j]],colnames(donnee)[quanti[i]]) } } } } dimnames(tabF) <- list(colnames(donnee)[quanti], c("Eta2", "P-value")) auxF <- tabF[order(tabF[, 2]),,drop=FALSE] select1 <- (1:nrow(auxF))[auxF[, 2,drop=FALSE] <= proba] if (length(select1) > 0) resF <- auxF[select1,,drop=FALSE] for (j in 1:nb.modalite){ if (!is.null(result[[j]])){ oo <- rev(order(result[[j]][,1])) result[[j]] <- result[[j]][oo,,drop=FALSE] nom[[j]] <- nom[[j]][oo] result[[j]] <- matrix(result[[j]],ncol=6) rownames(result[[j]]) <- nom[[j]] colnames(result[[j]]) <- c("v.test","Mean in category","Overall mean","sd in category","Overall sd","p.value") } } if (length(select1)>0) { res$quanti.var <- resF res$quanti <- result } } res$call <- list(num.var=num.var, proba=proba, row.w=row.w, X=donnee, na.method=na.method) options(old.warn) class(res) <- c("catdes", "list") return(res) } FactoMineR/R/summary.MFA.r0000644000176200001440000001635114132555541014737 0ustar liggesuserssummary.MFA <- function(object,nb.dec=3,nbelements=10,nbind=nbelements, ncp=3,align.names=TRUE,file="",...){ print2 <- function(mat,file=""){ if (file=="") print(mat, quote = FALSE, right = TRUE) else { mat <- cbind(format(rownames(mat)),mat) mat <- rbind(colnames(mat),mat) mat2 <- cbind(format(mat[,1],justify="right"),format(mat[,2],justify="right")) for (k in 3:ncol(mat)) mat2 <- cbind(mat2,format(mat[,k],justify="right")) mat2 <- cbind(mat2,"\n") for (i in 1:nrow(mat2)) cat(mat2[i,],file=file,append=TRUE) } } print3 <- function(obj,file="",ncp,width.row=0,nbelements=nbelements){ list.obj <- match.arg(names(obj),c("dist","inertia","coord","cos2","contrib","v.test","vtest"),several.ok=TRUE) nb.col <- sum(c("coord","cos2","contrib","v.test")%in%list.obj) nbelements <- min(nbelements,nrow(obj$coord)) mat <- matrix(NA,nbelements,sum(c("dist","inertia")%in%list.obj)+nb.col*ncp) colnames(mat) <- paste("v",1:ncol(mat)) rownames(mat) <- format(rownames(obj$coord)[1:nbelements,drop=FALSE],width=width.row) indice <- 1 if (sum(c("dist","inertia")%in%list.obj)) { if ("dist"%in%list.obj) { mat[,indice] <- obj$dist[1:nbelements] colnames(mat)[indice] <- "Dist" } if ("inertia"%in%list.obj) { mat[,indice] <- obj$inertia[1:nbelements]*1000 colnames(mat)[indice] <- "Iner*1000" } indice <- indice + 1 } if ("coord"%in%list.obj){ if (!is.null(obj$coord)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$coord[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- paste("Dim.",1:ncp,sep="") indice <- indice +1 } if ("contrib"%in%list.obj){ if (!is.null(obj$contrib)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$contrib[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "ctr" indice <- indice +1 } if ("cos2"%in%list.obj){ if (!is.null(obj$cos2)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$cos2[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "cos2" indice <- indice +1 } if ("v.test"%in%list.obj){ if (!is.null(obj$v.test)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$v.test[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "v.test" indice <- indice +1 } mat <- format(round(mat,nb.dec)) if ("dist"%in%list.obj) mat2 <- cbind("|", mat[1:nbelements,1,drop=FALSE],"|") else mat2 <- "|" for (k in 1:ncp) mat2 <- cbind(mat2, mat[,(1+sum(c("dist","inertia")%in%list.obj)+nb.col*(k-1)):(sum(c("dist","inertia")%in%list.obj)+nb.col*k),drop=FALSE],"|") colnames(mat2)[1] <- "" print2(as.matrix(mat2),file=file) } res <- object if (!inherits(res, "MFA")) stop("non convenient object") cat(paste("\nCall:\n"),file=file) cat(paste(deparse(res$call$call),"\n"),file=file,append=TRUE) cat("\n",file=file,append=TRUE) cat("\nEigenvalues\n",file=file,append=TRUE) eige <- format(t(round(res$eig[,1:3],nb.dec)),justify="right") rownames(eige) <- c("Variance","% of var.","Cumulative % of var.") colnames(eige) <- paste("Dim",1:ncol(eige),sep=".") print2(eige,file=file) ncp <- min(res$call$ncp,ncp) width.row <- 0 if (align.names==TRUE){ aux <- match.arg(names(res),c("ind","ind.sup","freq","freq.sup","var","quanti.var","quanti.var.sup","quali.var","quali.var.sup","quanti.sup","quali.sup","group","row","row.sup","col","col.sup"),several.ok = TRUE) width.row <- max(nchar(rownames(res[aux[1]][[1]]$coord))) for (k in 1:length(aux)) width.row <- max(width.row,nchar(rownames(res[aux[k]][[1]]$coord)[1:min(nrow(res[aux[k]][[1]]$coord),nbelements)])) } cat("\nGroups\n",file=file,append=TRUE) print3(res$group,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) if (!is.null(res$group$coord.sup)){ cat("\nSupplementary group",file=file,append=TRUE) if (nrow(res$group$coord.sup)>1) cat("s",file=file,append=TRUE) if (nrow(res$group$coord.sup) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) res2 <- list(coord = res$group$coord.sup, cos2 = res$group$cos2.sup , dist2 = res$group$dist2.sup) print3(res2,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (nbind>0){ if (nrow(res$ind$coord) <= nbind) cat("\nIndividuals\n",file=file,append=TRUE) else cat(paste("\nIndividuals (the ",nbind," first)\n",sep=""),file=file,append=TRUE) print3(res$ind,file=file,ncp=ncp,width.row=width.row,nbelements=nbind) if (!is.null(res$ind.sup)){ cat("\nSupplementary individual",file=file,append=TRUE) if (nrow(res$ind.sup$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res$ind.sup$coord) > nbind) cat(paste(" (the ",nbind," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$ind.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbind) } } if (!is.null(res["quanti.var"]$quanti.var)) { cat("\nContinuous variable",file=file,append=TRUE) if (nrow(res["quanti.var"]$quanti.var$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res["quanti.var"]$quanti.var$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res["quanti.var"]$quanti.var,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res$quanti.var.sup)){ cat("\nSupplementary continuous variable",file=file,append=TRUE) if (nrow(res$quanti.var.sup$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res$quanti.var.sup$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$quanti.var.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res["quali.var"]$quali.var)) { cat("\nCategories",file=file,append=TRUE) if (nrow(res["quali.var"]$quali.var$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res["quali.var"]$quali.var,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res$quali.var.sup)){ cat("\nSupplementary categories",file=file,append=TRUE) if (nrow(res$quali.var.sup$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$quali.var.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res["freq"]$freq)) { if (nrow(res["freq"]$freq$coord)>1) cat("\nFrequencies",file=file,append=TRUE) else cat("\nFrequency",file=file,append=TRUE) if (nrow(res["freq"]$freq$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res["freq"]$freq,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res$freq.sup)){ if (nrow(res$freq.sup$coord)>1) cat("\nSupplementary frequencies",file=file,append=TRUE) else cat("\nFrequency",file=file,append=TRUE) if (nrow(res$freq.sup$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$freq.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } }FactoMineR/R/FAMD.R0000644000176200001440000003124714132270542013303 0ustar liggesusers FAMD <- function(base, ncp = 5, graph = TRUE, sup.var=NULL, ind.sup = NULL, axes=c(1,2),row.w=NULL, tab.disj=NULL){ moy.ptab <- function(V, poids) { as.vector(crossprod(poids/sum(poids),as.matrix(V))) } ec.tab <- function(V, poids) { ecart.type <- sqrt(as.vector(crossprod(poids/sum(poids),as.matrix(V^2)))) ecart.type[ecart.type <= 1e-16] <- 1 return(ecart.type) } fct.eta2 <- function(vec,x,weights) { ## pb avec les poids VB <- function(xx) { return(sum((colSums((tt*xx)*weights)^2)/ni)) } tt <- tab.disjonctif(vec) ni <- colSums(tt*weights) unlist(lapply(as.data.frame(x),VB))/colSums(x^2*weights) } if (is.null(rownames(base))) rownames(base) <- 1:nrow(base) if (is.null(colnames(base))) colnames(base) <- paste("V",1:ncol(base),sep="") if (!is.null(sup.var) & !is.numeric(sup.var)) sup.var<- which(colnames(base)%in%sup.var) base <- as.data.frame(base) is.quali <- which(!unlist(lapply(base,is.numeric))) base[,is.quali] <- lapply(base[,is.quali,drop=FALSE],as.factor) base <- droplevels(base) row.w.init <- row.w if (is.null(row.w)) { row.w.init <- row.w <- rep(1,nrow(base)-length(ind.sup)) } row.w <- rep(0,nrow(base)) row.w[which(!((1:nrow(base))%in%ind.sup))] <- row.w.init numAct <- which(sapply(base,is.numeric)) if (is.null(numAct)) stop("All your variables are quantitative: you should use PCA") facAct <- which(!sapply(base,is.numeric)) if (is.null(facAct)) stop("All your variables are qualitative: you should use MCA") facIllu <- numIllu <- tabFacIllu <- tabNumIllu <- NULL if (!is.null(sup.var)){ act.var <- (1:ncol(base))[-sup.var] numIllu <- intersect(sup.var,numAct) if (length(numIllu)==0) numIllu <- NULL else numAct <- intersect(act.var,numAct) facIllu <- intersect(sup.var,facAct) if (length(facIllu)==0) facIllu <- NULL else facAct <- intersect(act.var,facAct) } if (!is.null(tab.disj)){ aa <- c(0,cumsum(sapply(base,nlevels)+1-(sapply(base,nlevels)>0))) ll <- list() for (i in 1:(length(aa)-1)) ll[[i]] <- (aa[i]+1):aa[i+1] # QuantiAct <- tab.disj[,unlist(ll[which(sapply(ll,length)==1)])] # QualiAct <- tab.disj[,unlist(ll[which(sapply(ll,length)!=1)])] QuantiAct <- tab.disj[,unlist(ll[intersect(numAct,which(sapply(ll,length)==1))]),drop=FALSE] QualiAct <- tab.disj[,unlist(ll[intersect(facAct,which(sapply(ll,length)!=1))])] } else { QuantiAct <- as.matrix(base[,numAct,drop=FALSE]) QualiAct <- tab.disjonctif(base[,facAct,drop=FALSE]) } centre <- moy.ptab(QuantiAct,row.w) QuantiAct <- t(t(QuantiAct)-centre) ecart.type <- ec.tab(QuantiAct,row.w) QuantiAct <- t(t(QuantiAct)/ecart.type) prop <- colSums(QualiAct*(row.w/sum(row.w))) QualiAct <- t(t(QualiAct)- moy.ptab(QualiAct,row.w)) QualiAct <- t(t(QualiAct)/sqrt(prop)) X <- cbind(QuantiAct,QualiAct) if (!is.null(numIllu)){ if (!is.null(tab.disj)){ QuantiIllu <- tab.disj[,unlist(ll[intersect(numIllu,which(sapply(ll,length)==1))]),drop=FALSE] } else { QuantiIllu <- as.matrix(base[,numIllu,drop=FALSE]) } QuantiIllu <- t(t(QuantiIllu)-moy.ptab(QuantiIllu,row.w)) QuantiIllu <- t(t(QuantiIllu)/ec.tab(QuantiIllu,row.w)) tabNumIllu <- (ncol(X)+1):(ncol(X)+ncol(QuantiIllu)) X <- cbind(X,QuantiIllu) } if (!is.null(facIllu)){ if (!is.null(tab.disj)){ QualiIllu <- tab.disj[,unlist(ll[intersect(facIllu,which(sapply(ll,length)!=1))])] propsup <- colSums(QualiIllu*(row.w/sum(row.w))) QualiIllu <- t(t(QualiIllu)- moy.ptab(QualiIllu,row.w)) QualiIllu <- t(t(QualiIllu)/sqrt(propsup)) tabFacIllu <- (ncol(X)+1):(ncol(X)+ncol(QualiIllu)) X <- cbind(X,QualiIllu) } else { tabFacIllu <- (ncol(X)+1):(ncol(X)+length(facIllu)) X <- cbind.data.frame(X,base[,facIllu,drop=FALSE]) } } ncp <- min(ncp,nrow(base)-1,ncol(QuantiAct)+ncol(QualiAct)-length(facAct)) if (is.null(tab.disj) | is.null(facIllu)) pca <- PCA(X,graph=FALSE,ind.sup=ind.sup,quanti.sup=tabNumIllu,quali.sup=tabFacIllu,scale.unit=FALSE,row.w=row.w.init,ncp=ncp) else pca <- PCA(X,graph=FALSE,ind.sup=ind.sup,quanti.sup=c(tabNumIllu,tabFacIllu),scale.unit=FALSE,row.w=row.w.init,ncp=ncp) eig <- pca$eig[1:ncp,,drop=FALSE] ind.quali <- which(!(rownames(pca$var$coord)%in%colnames(base)[numAct])) quanti.var <- list(coord=pca$var$coord[colnames(base)[numAct],,drop=FALSE],cos2=pca$var$cos2[colnames(base)[numAct],,drop=FALSE],contrib=pca$var$contrib[colnames(base)[numAct],,drop=FALSE]) tt <- function(v,mat,poids) { res <- matrix(NA,nrow=0,ncol=ncol(mat)) for (i in 1:nlevels(v)) { res <- rbind(res,crossprod(poids[v==levels(v)[i]]/sum(poids[v==levels(v)[i]]),as.matrix(mat[v==levels(v)[i],,drop=FALSE]))) } return(res) } # aux1 <- lapply(base[,facAct,drop=FALSE],tt,X[,1:(ncol(X)-length(tabNumIllu)-length(tabFacIllu)),drop=FALSE],poids=row.w.init) if (is.null(tab.disj)){ aux1 <- lapply(base[,facAct,drop=FALSE],tt,X[,1:(ncol(QuantiAct)+ncol(QualiAct)),drop=FALSE],poids=row.w.init) bary <- NULL for (i in 1:length(aux1)) bary <- rbind(bary,aux1[[i]]) rownames(bary) <- unlist(sapply(base[,facAct,drop=FALSE],levels)) } else { if (is.null(ind.sup)){ auxb <- sweep(tab.disj[,unlist(ll[intersect(facAct,which(sapply(ll,length)!=1))]),drop=FALSE],1,row.w.init,FUN="*") bary <- crossprod(sweep(auxb,2,apply(auxb,2,sum),FUN="/"),as.matrix(X[,1:(ncol(QuantiAct)+ncol(QualiAct)),drop=FALSE])) } else{ auxb <- sweep(tab.disj[-ind.sup,unlist(ll[intersect(facAct,which(sapply(ll,length)!=1))]),drop=FALSE],1,row.w.init,FUN="*") bary <- crossprod(sweep(auxb,2,apply(auxb,2,sum),FUN="/"),as.matrix(X[-ind.sup,1:(ncol(QuantiAct)+ncol(QualiAct)),drop=FALSE])) } } dist2 <- rowSums(bary^2) coord.quali.var <- t(t(pca$var$coord[ind.quali,,drop=FALSE]/sqrt(prop))*sqrt(eig[1:ncp,1])) quali.var <- list(coord=coord.quali.var,cos2=coord.quali.var^2/dist2,contrib=pca$var$contrib[ind.quali,,drop=FALSE]) vtest <- pca$var$coord[ind.quali,,drop=FALSE] if (sum(row.w.init)>1) nombre <- prop*sum(row.w.init) else nombre <- prop*(nrow(base)-length(ind.sup)) ## nombre = n if (sum(row.w.init)>1) { nombre <- (sum(row.w.init) - nombre) nombre <- nombre/(sum(row.w.init) - 1)/(sum(row.w.init)) } else { nombre <- (nrow(base)-length(ind.sup))- nombre nombre <- nombre / (nrow(base)-length(ind.sup)-1)/(nrow(base)-length(ind.sup)) ## nombre = (N-n)/(N-1) } vtest <- vtest/sqrt(nombre) quali.var$v.test <- vtest res.var <- list() eta2 <- matrix(NA, length(facAct), ncp) colnames(eta2) <- paste("Dim", 1:ncp) rownames(eta2) <- attributes(base)$names[facAct] if (ncp>1) eta2 <- t(sapply(as.data.frame(base[rownames(pca$ind$coord), facAct,drop=FALSE]),fct.eta2,pca$ind$coord,weights=row.w.init/sum(row.w.init))) else { eta2 <- as.matrix(sapply(as.data.frame(base[rownames(pca$ind$coord), facAct,drop=FALSE]),fct.eta2,pca$ind$coord,weights=row.w.init/sum(row.w.init)),ncol=ncp) } res.var$coord <- rbind(quanti.var$coord^2,eta2) aux <- aggregate(quali.var$contrib,by=list(as.factor(rep.int(1:length(facAct),times=sapply(base[,facAct,drop=FALSE],nlevels)))),FUN=sum)[,-1,drop=FALSE] aux <- as.matrix(aux) colnames(aux) <- colnames(quanti.var$contrib) rownames(aux) <- attributes(base)$names[facAct] res.var$contrib <- rbind(quanti.var$contrib,aux) res.var$cos2 <- rbind(quanti.var$cos2^2,eta2^2/(sapply(base[,facAct,drop=FALSE],nlevels)-1)) if (is.null(tab.disj)){ # if (!is.null(pca$quanti.sup)&!is.null(pca$quali.sup)) { if (!is.null(numIllu)&!is.null(facIllu)) { res.var$coord.sup <- rbind(pca$quanti.sup$coord^2,pca$quali.sup$eta2) res.var$cos2.sup <- rbind(pca$quanti.sup$cos2^2,pca$quali.sup$eta2^2/(sapply(base[,facIllu,drop=FALSE],nlevels)-1)) } if (is.null(numIllu)&!is.null(facIllu)) { res.var$coord.sup <- pca$quali.sup$eta2 res.var$cos2.sup <- pca$quali.sup$eta2^2/(sapply(base[,facIllu,drop=FALSE],nlevels)-1) } } else { if (!is.null(facIllu)){ ## ajout pour sup et tab.disj # aux1 <- lapply(base[,facIllu,drop=FALSE],tt,X[,1:(ncol(X)-length(tabNumIllu)-length(tabFacIllu)),drop=FALSE],poids=row.w.init) if (is.null(ind.sup)){ auxb <- sweep(tab.disj[,unlist(ll[intersect(facIllu,which(sapply(ll,length)!=1))]),drop=FALSE],1,row.w.init,FUN="*") barysup <- crossprod(sweep(auxb,2,apply(auxb,2,sum),FUN="/"),as.matrix(X[,1:(ncol(QuantiAct)+ncol(QualiAct)),drop=FALSE])) } else{ auxb <- sweep(tab.disj[-ind.sup,unlist(ll[intersect(facIllu,which(sapply(ll,length)!=1))]),drop=FALSE],1,row.w.init,FUN="*") barysup <- crossprod(sweep(auxb,2,apply(auxb,2,sum),FUN="/"),as.matrix(X[-ind.sup,1:(ncol(QuantiAct)+ncol(QualiAct)),drop=FALSE])) } dist2sup <- rowSums(barysup^2) ind.quali.sup <- (length(numIllu)+1):nrow(pca$quanti.sup$coord) coord.quali.sup <- t(t(pca$quanti.sup$coord[ind.quali.sup,,drop=FALSE]/sqrt(propsup))*sqrt(eig[1:ncp,1])) quali.sup <- list(coord=coord.quali.sup,cos2=coord.quali.sup^2/dist2sup) vtest <- pca$quanti.sup$coord[ind.quali.sup,,drop=FALSE] if (sum(row.w.init)>1) nombre <- propsup*sum(row.w.init) else nombre <- propsup*(nrow(base)-length(ind.sup)) ## nombre = n if (sum(row.w.init)>1) { nombre <- (sum(row.w.init) - nombre) nombre <- nombre/(sum(row.w.init) - 1)/(sum(row.w.init)) } else { nombre <- (nrow(base)-length(ind.sup))- nombre nombre <- nombre / (nrow(base)-length(ind.sup)-1)/(nrow(base)-length(ind.sup)) ## nombre = (N-n)/(N-1) } vtest <- vtest/sqrt(nombre) quali.sup$v.test <- vtest ## fin ajout pour sup et tab.disj eta2sup <- matrix(NA, length(facIllu), ncp) colnames(eta2sup) <- paste("Dim", 1:ncp) rownames(eta2sup) <- attributes(base)$names[facIllu] if (ncp>1) eta2sup <- t(sapply(as.data.frame(base[rownames(pca$ind$coord), facIllu,drop=FALSE]),fct.eta2,pca$ind$coord,weights=row.w.init/sum(row.w.init))) else { eta2sup <- as.matrix(sapply(as.data.frame(base[rownames(pca$ind$coord), facIllu,drop=FALSE]),fct.eta2,pca$ind$coord,weights=row.w.init/sum(row.w.init)),ncol=ncp) } if (!is.null(numIllu)) { res.var$coord.sup <- rbind(pca$quanti.sup$coord[1:length(numIllu),,drop=FALSE]^2,eta2sup) res.var$cos2.sup <- rbind(pca$quanti.sup$cos2[1:length(numIllu),,drop=FALSE]^2,eta2sup^2/(sapply(base[,facIllu,drop=FALSE],nlevels)-1)) } if (is.null(numIllu)) { res.var$coord.sup <- eta2sup res.var$cos2.sup <- eta2sup^2/(sapply(base[,facIllu,drop=FALSE],nlevels)-1) } quali.sup$dist <- sqrt(dist2sup) quali.sup$eta2 <- eta2sup } } if (!is.null(numIllu)&is.null(facIllu)) { res.var$coord.sup <- pca$quanti.sup$coord^2 res.var$cos2.sup <- pca$quanti.sup$cos2^2 } res <- list(eig=eig,ind=pca$ind) if (!is.null(pca$ind.sup)) res$ind.sup <- pca$ind.sup res$var <- res.var res$quali.var <- quali.var res$quanti.var <- quanti.var if (is.null(tab.disj)){ if (!is.null(pca$quanti.sup)) res$quanti.sup <- pca$quanti.sup if (!is.null(pca$quali.sup)) res$quali.sup <- pca$quali.sup }else { if (!is.null(numIllu)){ res$quanti.sup$coord <- pca$quanti.sup$coord[1:length(numIllu),,drop=FALSE] res$quanti.sup$cor <- pca$quanti.sup$cor[1:length(numIllu),,drop=FALSE] res$quanti.sup$cos2 <- pca$quanti.sup$cos2[1:length(numIllu),,drop=FALSE] } if (!is.null(facIllu)) res$quali.sup <- quali.sup } res$svd <- pca$svd res$call <- pca$call res$call$X <- base res$call$centre <- c(centre,prop) res$call$ecart.type <- c(ecart.type,rep(0,length(prop))) res$call$quali.sup$quali.sup <- base[,c(facAct,facIllu),drop=FALSE] res$call$type <- rep("s",ncol(base)) res$call$type[c(facAct,facIllu)] <- "n" res$call$nature.var <- rep("quanti",ncol(base)) res$call$nature.var[facAct] <- "quali" if (!is.null(facIllu)) res$call$nature.var[facIllu] <- "quali.sup" if (!is.null(numIllu)) res$call$nature.var[numIllu] <- "quanti.sup" res$call$call <- match.call() res$call$prop <- prop res$call$sup.var <- sup.var # res$call$call <- sys.calls()[[1]] class(res) <- c("FAMD", "list") if (graph & (ncp>1)){ print(plot.FAMD(res,choix="ind", axes=axes,habillage="none")) print(plot.FAMD(res,choix="ind", invisible=c("quali","quali.sup"),axes=axes,habillage="none",new.plot=TRUE)) print(plot.FAMD(res,choix="var",axes=axes,new.plot=TRUE)) print(plot.FAMD(res,choix="quali", axes=axes,habillage="none",new.plot=TRUE)) print(plot.FAMD(res,choix="quanti",axes=axes,new.plot=TRUE)) } return(res) } FactoMineR/R/print.MFA.R0000644000176200001440000000513011636560250014326 0ustar liggesusersprint.MFA <- function (x, file = NULL, sep = ";", ...){ res.mfa <- x if (!inherits(res.mfa, "MFA")) stop("non convenient data") cat("**Results of the Multiple Factor Analysis (MFA)**\n") cat("The analysis was performed on", nrow(res.mfa$call$X), "individuals, described by", ncol(res.mfa$call$X), "variables\n") cat("*Results are available in the following objects :\n\n") res <- array("", c(22, 2), list(1:22, c("name", "description"))) res[1, ] <- c("$eig", "eigenvalues") res[2, ] <- c("$separate.analyses", "separate analyses for each group of variables") res[3, ] <- c("$group", "results for all the groups") res[4, ] <- c("$partial.axes", "results for the partial axes") res[5, ] <- c("$inertia.ratio", "inertia ratio") res[6, ] <- c("$ind", "results for the individuals") indice <- 7 if (!is.null(res.mfa["ind.sup"]$ind.sup)){ res[indice, ] <- c("$ind.sup", "results for the supplementary individuals") indice <- indice + 1 } if (!is.null(res.mfa["quanti.var"]$quanti.var)){ res[indice, ] <- c("$quanti.var", "results for the quantitative variables") indice <- indice + 1 } if (!is.null(res.mfa["quali.var"]$quali.var)){ res[indice, ] <- c("$quali.var", "results for the categorical variables") indice <- indice + 1 } if (!is.null(res.mfa["quanti.var.sup"]$quanti.var.sup)){ res[indice, ] <- c("$quanti.var.sup", "results for the quantitative supplementary variables") indice <- indice + 1 } if (!is.null(res.mfa["quali.var.sup"]$quali.var.sup)){ res[indice, ] <- c("$quali.var.sup", "results for the categorical supplementary variables") indice <- indice + 1 } if (!is.null(res.mfa["freq"]$freq)){ res[indice, ] <- c("$freq", "results for the frequencies") indice <- indice + 1 } if (!is.null(res.mfa["freq.sup"]$freq.sup)){ res[indice, ] <- c("$freq.sup", "results for the supplementary frequencies") indice <- indice + 1 } if (!is.null(res.mfa$quanti.var)){ res[indice, ] <- c("$summary.quanti", "summary for the quantitative variables") indice <- indice + 1 } if (!is.null(res.mfa$quali.var)){ res[indice, ] <- c("$summary.quali", "summary for the categorical variables") indice <- indice + 1 } res[indice, ] <- c("$global.pca", "results for the global PCA") print(res[1:indice,]) if (!is.null(file)) { write.infile(res.mfa,file = file, sep=sep) print(paste("All the results are in the file",file)) } } FactoMineR/R/MFA.R0000644000176200001440000014520614535546142013211 0ustar liggesusersMFA <- function (base, group, type = rep("s",length(group)), excl = NULL, ind.sup = NULL, ncp = 5, name.group = NULL, num.group.sup = NULL, graph = TRUE, weight.col.mfa = NULL, row.w = NULL, axes=c(1,2),tab.comp=NULL){ moy.p <- function(V, poids) { res <- sum(V * poids,na.rm=TRUE)/sum(poids[!is.na(V)]) } ec <- function(V, poids) { res <- sqrt(sum(V^2 * poids,na.rm=TRUE)/sum(poids[!is.na(V)])) } funcLg <- function (x, y, ponderation.x, ponderation.y, wt = rep(1/nrow(x), nrow(x)), cor = FALSE) { if (is.data.frame(x)) x <- as.matrix(x) else if (!is.matrix(x)) stop("'x' must be a matrix or a data frame") if (is.data.frame(y)) y <- as.matrix(y) else if (!is.matrix(y)) stop("'y' must be a matrix or a data frame") if (!all(is.finite(x))) stop("'x' must contain finite values only") if (!all(is.finite(y))) stop("'y' must contain finite values only") s <- sum(wt) wt <- wt/s center <- colSums(wt * x) x <- sqrt(wt) * t(t(sweep(x, 2, center, check.margin = FALSE))*sqrt(ponderation.x)) center <- colSums(wt * y) y <- sqrt(wt) * t(t(sweep(y, 2, center, check.margin = FALSE))*sqrt(ponderation.y)) Lg <- 0 for (i in 1:ncol(x)) Lg <- Lg+sum(crossprod(x[,i],y)^2) Lg } if (!is.null(excl) & "m"%in%type) stop("Excluding categories is not allowed when some groups are mixed") if (!is.null(tab.comp)){ if (!is.null(weight.col.mfa)) stop("Weightings on the variables are not allowed with the tab.comp argument") } if (is.null(rownames(base))) rownames(base) <- 1:nrow(base) if (is.null(colnames(base))) colnames(base) <- paste("V",1:ncol(base),sep="") base <- as.data.frame(base) is.quali <- which(!unlist(lapply(base,is.numeric))) base[,is.quali] <- lapply(base[,is.quali,drop=FALSE],as.factor) base <- droplevels(base) nature.group <- NULL nbre.group <- length(group) for (i in 1:nbre.group){ if ((type[i] == "n")&&(!(i%in%num.group.sup))) nature.group <- c(nature.group,"quali") if ((type[i] == "n")&&(i%in%num.group.sup)) nature.group <- c(nature.group,"quali.sup") if (((type[i] == "s")||(type[i] == "c"))&&(!(i%in%num.group.sup))) nature.group <- c(nature.group,"quanti") if (((type[i] == "s")||(type[i] == "c"))&&(i%in%num.group.sup)) nature.group <- c(nature.group,"quanti.sup") if (((type[i] == "f")||(type[i] == "f2"))&&(!(i%in%num.group.sup))) nature.group <- c(nature.group,"contingency") if (((type[i] == "f")||(type[i] == "f2"))&&(i%in%num.group.sup)) nature.group <- c(nature.group,"contingency.sup") if ((type[i] == "m")&&(!(i%in%num.group.sup))) nature.group <- c(nature.group,"mixed") if ((type[i] == "m")&&(i%in%num.group.sup)) nature.group <- c(nature.group,"mixed.sup") } # nature.var <- rep(nature.group,times=group) list.type.var <- vector(mode = "list", length = nbre.group) for (i in 1:nbre.group){ if ((type[i] == "n")&&(!(i%in%num.group.sup))) list.type.var[[i]] <- rep("quali",group[i]) if ((type[i] == "n")&&(i%in%num.group.sup)) list.type.var[[i]] <- rep("quali.sup",group[i]) if (((type[i] == "s")||(type[i] == "c"))&&(!(i%in%num.group.sup))) list.type.var[[i]] <- rep("quanti",group[i]) if (((type[i] == "s")||(type[i] == "c"))&&(i%in%num.group.sup)) list.type.var[[i]] <- rep("quanti.sup",group[i]) if (((type[i] == "f")||(type[i] == "f2")||(type[i] == "f3"))&&(!(i%in%num.group.sup))) list.type.var[[i]] <- rep(type[i],group[i]) if (((type[i] == "f")||(type[i] == "f2")||(type[i] == "f3"))&&(i%in%num.group.sup)) list.type.var[[i]] <- rep(paste(type[i],"sup",sep="_"),group[i]) if ((type[i] == "m")&&(!(i%in%num.group.sup))){ if (i==1) list.type.var[[i]] <- ifelse(sapply(base[,1:group[1]],is.numeric),"quanti","quali") else list.type.var[[i]] <- ifelse(sapply(base[,(sum(group[1:(i-1)])+1):sum(group[1:i])],is.numeric),"quanti","quali") } if ((type[i] == "m")&&(i%in%num.group.sup)){ if (i==1) list.type.var[[i]] <- ifelse(sapply(base[,1:group[1]],is.numeric),"quanti.sup","quali.sup") else list.type.var[[i]] <- ifelse(sapply(base[,(sum(group[1:(i-1)])+1):sum(group[1:i])],is.numeric),"quanti.sup","quali.sup") } if (i==1) names(list.type.var[[1]]) <- colnames(base)[1:group[1]] else names(list.type.var[[i]]) <- colnames(base)[(sum(group[1:(i-1)])+1):sum(group[1:i])] } nature.var <- type.var <- unlist(list.type.var) names(nature.var)=NULL if (!is.null(ind.sup)) { base <- rbind.data.frame(base[-ind.sup,],base[ind.sup,,drop=FALSE]) ind.sup <- (nrow(base)-length(ind.sup)+1) : nrow(base) } nbre.var <- ncol(base) group.actif <- NULL if ("n"%in%type || "m"%in%type){ niveau <- NULL for (j in 1:ncol(base)){ if (!is.numeric(base[,j])) niveau <- c(niveau,levels(base[,j])) } for (j in 1:ncol(base)) { if (!is.numeric(base[,j])){ if (sum(niveau%in%levels(base[,j]))!=nlevels(base[,j])) levels(base[,j]) <- paste(colnames(base)[j],levels(base[,j]),sep="_") } } } for (i in 1:nbre.group) if (!(i%in%num.group.sup)) group.actif <- c(group.actif,i) group.mod <- group nbre.ind <- nrow(base) nb.actif <- nbre.ind-length(ind.sup) if (nbre.var != sum(group)) stop("not convenient group definition") if (nbre.group != length(type)) stop("not convenient type definition") base <- as.data.frame(base) if (!inherits(base, "data.frame")) stop("base should be a data.frame") res.separe <- vector(mode = "list", length = nbre.group) if (is.null(name.group)) name.group <- paste0("Gr", 1:nbre.group) names(res.separe) <- name.group ind.grpe <- 0 ## modif 2023/11/29 if (any(is.na(base)) & is.null(tab.comp)){ for (j in 1:ncol(base)){ if (is.numeric(base[,j])) base[,j] <- replace(base[,j],is.na(base[,j]),mean(base[,j],na.rm=TRUE)) else base[,j] <- as.factor(replace(as.character(base[,j]),is.na(base[,j]),paste(colnames(base)[j],".NA",sep=""))) } } # if (any(is.na(base))){ # if (!("n"%in%type)) for (j in 1:ncol(base)) base[,j] <- replace(base[,j],is.na(base[,j]),mean(base[,j],na.rm=TRUE)) # else{ # if (type[1]!="n") for (j in 1:group[1]) base[,j] <- replace(base[,j],is.na(base[,j]),mean(base[,j],na.rm=TRUE)) # for (g in 2:nbre.group){ # if (type[g]!="n") for (j in (sum(group[1:(g-1)])+1):sum(group[1:g])) base[,j] <- replace(base[,j],is.na(base[,j]),mean(base[,j],na.rm=TRUE)) # } # if (is.null(tab.comp)){ # if (type[1]=="n") for (j in 1:group[1]) base[,j] <- as.factor(replace(as.character(base[,j]),is.na(base[,j]),paste(colnames(base)[j],".NA",sep=""))) # for (g in 2:nbre.group){ # if (type[g]=="n") for (j in (sum(group[1:(g-1)])+1):sum(group[1:g])) base[,j] <- as.factor(replace(as.character(base[,j]),is.na(base[,j]),paste(colnames(base)[j],".NA",sep=""))) # } # } #} # } if (is.null(row.w)) row.w <- rep(1,nb.actif) if (any("f" %in% type)+any("f2" %in% type)+any("f3" %in% type)>1) stop("For the contingency tables, the type must the the same") if (("f" %in% type)||("f2" %in% type)||("f3" %in% type)) { grfrec<-c(which(type=="f"),which(type=="f2"),which(type=="f3")) ## pour avoir individus actifs, que ind.sup soit NULL ou non ## ind.actif <- !((1:nrow(base))%in%intersect(ind.sup,(1:nrow(base)))) for (i in grfrec){ if ((type[i]=="f2")||(type[i]=="f3")||(i%in%num.group.sup)){ if (i==1) base[,1:group[1]]<- base[,1:group[1]]/sum(base[1:nb.actif,1:group[1]]) else base[,(sum(group[1:(i-1)])+1):sum(group[1:i])]<-base[,(sum(group[1:(i-1)])+1):sum(group[1:i])]/sum(base[1:nb.actif,(sum(group[1:(i-1)])+1):sum(group[1:i])]) } } type.var=="f" if(!any(type.var=="f")) sumT <-1 else sumT <- sum(base[1:nb.actif,as.logical((type.var=="f")+(type.var=="f2")+(type.var=="f3"))]) if (sumT==0) sumT <- 1 base[,as.logical((type.var=="f")+(type.var=="f_sup")+(type.var=="f2")+(type.var=="f2_sup")+(type.var=="f3")+(type.var=="f3_sup"))]<-base[,as.logical((type.var=="f")+(type.var=="f_sup")+(type.var=="f2")+(type.var=="f2_sup")+(type.var=="f3")+(type.var=="f3_sup"))]/sumT F.jt<-list() Fi.t<-list() for (j in grfrec){ if (j==1){ F.jt[[j]]<-apply(base[1:nb.actif,1:group[1]],2,sum) Fi.t[[j]]<-apply(base[,1:group[1]],1,sum) }else{ F.jt[[j]]<-apply(base[1:nb.actif,(sum(group[1:(j-1)])+1):(sum(group[1:(j-1)])+group[j])],2,sum) Fi.t[[j]]<-apply(base[,(sum(group[1:(j-1)])+1):(sum(group[1:(j-1)])+group[j])],1,sum) } } if ("f"%in%type.var){ row.w[1:nrow(base)]<-0 for (j in grfrec){ if (!(j%in%num.group.sup)) row.w<-row.w+Fi.t[[j]] } } F..t<-numeric() for (j in grfrec) F..t[j]<-sum(Fi.t[[j]][1:nb.actif]) for (t in grfrec){ if (t==1) { base[,1:group[t]]<-sweep(base[,1:group[t]],2,F.jt[[t]],FUN="/") base[,1:group[t]] <- sweep(base[,1:group[t]],1,Fi.t[[t]]/F..t[t],FUN="-") base[,1:group[t]] <- sweep(base[,1:group[t]],1,row.w,FUN="/") } else { base[,(sum(group[1:(t-1)])+1):sum(group[1:t])]<-sweep(base[,(sum(group[1:(t-1)])+1):sum(group[1:t])],2,F.jt[[t]],FUN="/") base[,(sum(group[1:(t-1)])+1):sum(group[1:t])]<-sweep(base[,(sum(group[1:(t-1)])+1):sum(group[1:t])],1,Fi.t[[t]]/F..t[t],FUN="-") base[,(sum(group[1:(t-1)])+1):sum(group[1:t])]<-sweep(base[,(sum(group[1:(t-1)])+1):sum(group[1:t])],1,row.w,FUN="/") } } row.w <- row.w[1:nb.actif] } if (!is.null(ind.sup)) row.w.moy.ec <- c(row.w,rep(0,length(ind.sup))) else row.w.moy.ec <- row.w if (is.null(weight.col.mfa)) weight.col.mfa <- rep(1,sum(group.mod)) ### Begin handle missing values if (!is.null(tab.comp)){ group.mod <- tab.comp$call$group.mod ind.var.group <- tab.comp$call$ind.var tab.comp <- tab.comp$tab.disj } ### End handle missing values for (g in 1:nbre.group) { aux.base <- as.data.frame(base[, (ind.grpe + 1):(ind.grpe + group[g])]) dimnames(aux.base) <- list(rownames(base),colnames(base)[(ind.grpe + 1):(ind.grpe + group[g])]) if (type[g] == "s") res.separe[[g]] <- PCA(aux.base, ind.sup =ind.sup, scale.unit = TRUE, ncp = ncp, row.w=row.w, graph = FALSE, col.w = weight.col.mfa[(ind.grpe + 1):(ind.grpe + group[g])]) if (type[g] == "c") res.separe[[g]] <- PCA(aux.base, ind.sup =ind.sup, scale.unit = FALSE, ncp = ncp, row.w=row.w,graph = FALSE, col.w = weight.col.mfa[(ind.grpe + 1):(ind.grpe + group[g])]) if (type[g]=="f"||type[g]=="f2"||type[g]=="f3") res.separe[[g]] <- PCA(aux.base, ind.sup =ind.sup, scale.unit = FALSE, ncp = ncp, row.w=row.w,graph = FALSE, col.w = F.jt[[g]]*weight.col.mfa[(ind.grpe + 1):(ind.grpe + group[g])]) if (type[g] == "n") { for (v in (ind.grpe + 1):(ind.grpe + group[g])) { if (!is.factor(base[, v])) stop("factors are not defined in the qualitative groups") } res.separe[[g]] <- MCA(aux.base, excl = excl[[g]], ind.sup = ind.sup, ncp=ncp, graph = FALSE, row.w=row.w) } if (type[g] == "m") res.separe[[g]] <- FAMD(aux.base, ind.sup = ind.sup, ncp=ncp, graph = FALSE, row.w=row.w) ### Begin handle missing values if (!is.null(tab.comp)){ if (type[g] == "s") res.separe[[g]] <- PCA(tab.comp[,ind.var.group[[g]]],scale.unit=TRUE,row.w=row.w,ind.sup=ind.sup,col.w=weight.col.mfa[(ind.grpe + 1):(ind.grpe + group[g])],graph=FALSE) if (type[g] == "c") res.separe[[g]] <- PCA(tab.comp[,ind.var.group[[g]]],scale.unit=FALSE,row.w=row.w,ind.sup=ind.sup,col.w=weight.col.mfa[(ind.grpe + 1):(ind.grpe + group[g])],graph=FALSE) if (type[g] == "n") res.separe[[g]] <- MCA(aux.base, ind.sup = ind.sup, ncp=ncp, graph = FALSE, row.w=row.w,tab.disj=tab.comp[,ind.var.group[[g]]]) if (type[g] == "m") res.separe[[g]] <- FAMD(aux.base, ind.sup = ind.sup, ncp=ncp, graph = FALSE, row.w=row.w,tab.disj=tab.comp[,ind.var.group[[g]]]) } ### End handle missing values ind.grpe <- ind.grpe + group[g] } data <- matrix(0,nbre.ind,0) ind.grpe <- ind.grpe.mod <- 0 ponderation <- vector(length = sum(group.mod)) poids.bary <- NULL for (g in 1:nbre.group) { aux.base <- base[, (ind.grpe + 1):(ind.grpe + group[g]),drop=FALSE] ### Begin handle missing values if (!is.null(tab.comp)){ if (g==1) aux.base <- tab.comp[,1:group.mod[1]] else aux.base <- tab.comp[,(cumsum(group.mod)[g-1]+1):cumsum(group.mod)[g],drop=FALSE] } ### End handle missing values aux.base <- as.data.frame(aux.base) colnames(aux.base) <- colnames(base)[(ind.grpe + 1):(ind.grpe + group[g])] if (type[g] == "s") { centre.aux.base <- apply(as.data.frame(aux.base), 2, moy.p, row.w.moy.ec) aux.base <- t(t(as.matrix(aux.base))-centre.aux.base) ecart.type.aux.base <- apply(as.data.frame(aux.base), 2, ec, row.w.moy.ec) ecart.type.aux.base[ecart.type.aux.base <= 1e-08] <- 1 aux.base <- t(t(aux.base)/ecart.type.aux.base) type[g] <- "c" } if (type[g] == "c") { data <- cbind.data.frame(data, aux.base) ponderation[(ind.grpe.mod + 1):(ind.grpe.mod + group.mod[g])] <- 1/res.separe[[g]]$eig[1,1] } if (type[g] == "f"||type[g] == "f2") { data <- cbind.data.frame(data, aux.base) ponderation[(ind.grpe.mod+1):(ind.grpe.mod+group[g])]<-F.jt[[g]]/res.separe[[g]]$eig[1,1] } if (type[g] == "n") { ### Begin handle missing values if (!is.null(tab.comp)){ if (g==1) tmp <- tab.comp[,1:group.mod[1]] else tmp <- tab.comp[,(cumsum(group.mod)[g-1]+1):cumsum(group.mod)[g],drop=FALSE] } else { tmp <- tab.disjonctif(aux.base) group.mod[g] <- ncol(tmp) } ### End handle missing values centre.tmp <- apply(tmp, 2, moy.p, row.w.moy.ec) centre.tmp <- centre.tmp/sum(row.w.moy.ec) tmp2 <- tmp*(row.w.moy.ec/sum(row.w.moy.ec)) poids.bary <- c(poids.bary,colSums(tmp2)) poids.tmp <- 1-apply(tmp2, 2, sum) if(!is.null(excl[[g]])) poids.tmp[excl[[g]]] <- 0 ponderation[(ind.grpe.mod + 1):(ind.grpe.mod + group.mod[g])] <- poids.tmp/(res.separe[[g]]$eig[1,1] * group[g]) tmp <- tmp/sum(row.w.moy.ec) tmp <- t(t(as.matrix(tmp))-centre.tmp) ecart.type.tmp <- apply(tmp, 2, ec, row.w.moy.ec) ### Pb if the disjunctive table doesn't have only 0 and 1 if (!is.null(tab.comp)) ecart.type.tmp <- sqrt(centre.tmp*sum(row.w.moy.ec) * (1-centre.tmp*sum(row.w.moy.ec) ))/sum(row.w.moy.ec) ### End pb if the disjunctive table doesn't have only 0 and 1 ecart.type.tmp[ecart.type.tmp <= 1e-08] <- 1 tmp <- t(t(as.matrix(tmp))/ecart.type.tmp) data <- cbind.data.frame(data, as.data.frame(tmp)) } if (type[g] == "m") { ### Begin handle missing values if (is.null(tab.comp)){ numAct <- which(sapply(aux.base,is.numeric)) facAct <- which(!sapply(aux.base,is.numeric)) QuantiAct <- as.matrix(aux.base[,numAct,drop=FALSE]) QualiAct <- tab.disjonctif(aux.base[,facAct,drop=FALSE]) group.mod[g] <- ncol(QuantiAct)+ncol(QualiAct) } else { if (g==1){ aux <- tab.comp[,1:group.mod[1],drop=FALSE] } else { aux <- tab.comp[,(cumsum(group.mod)[g-1]+1):cumsum(group.mod)[g],drop=FALSE] } QuantiAct <- aux[,which(colnames(aux)==colnames(QuantiAct))] QualiAct <- aux[,which(colnames(aux)!=colnames(QuantiAct))] } ### End handle missing values centre <- apply(QuantiAct,2,moy.p,row.w.moy.ec) QuantiAct <- t(t(QuantiAct)-centre) ecart.type.tmp <- apply(QuantiAct,2,ec,row.w.moy.ec) QuantiAct <- t(t(QuantiAct)/ecart.type.tmp) tmp2 <- QualiAct*(row.w.moy.ec/sum(row.w.moy.ec)) poids.bary <- c(poids.bary,colSums(tmp2)) nk_sur_n <- apply(QualiAct, 2, moy.p, row.w.moy.ec) QualiAct <- t(t(as.matrix(QualiAct))/sqrt(nk_sur_n)) centre.tmp <- apply(QualiAct, 2, moy.p, row.w.moy.ec) QualiAct <- t(t(as.matrix(QualiAct))-centre.tmp) ponderation[(ind.grpe.mod + 1):(ind.grpe.mod + group.mod[g])] <- 1/(res.separe[[g]]$eig[1,1]) ### Pb if the disjunctive table doesn't have only 0 and 1 # if (!is.null(tab.comp)) ecart.type.tmp <- sqrt(centre*sum(row.w.moy.ec) * (1-centre*sum(row.w.moy.ec)))/sum(row.w.moy.ec) ### End pb if the disjunctive table doesn't have only 0 and 1 # ecart.type.tmp[ecart.type.tmp <= 1e-08] <- 1 data <- cbind.data.frame(data,QuantiAct,QualiAct) } ## Fin modif if(!is.null(excl)) ponderation[ponderation == 0] <- 1e-15 ind.grpe <- ind.grpe + group[g] ind.grpe.mod <- ind.grpe.mod + group.mod[g] } data.group.sup.indice <- data.group.sup <- NULL data.pca <- data rownames(data.pca) <- rownames(base) if (!is.null(num.group.sup)){ ponderation.tot <- ponderation ponderation.group.sup <- NULL nb.of.var <- 0 supp.quanti <- supp.quali <- NULL colnames.data.group.sup <- NULL for (i in 1:nbre.group) { if (i%in%num.group.sup){ if ((type[i]=="c")||(type[i]=="f")) supp.quanti <- c(supp.quanti,(nb.of.var+1):(nb.of.var+group.mod[i])) if (type[i]=="n") supp.quali <- c(supp.quali,(1+nb.of.var):(nb.of.var+group.mod[i])) if (type[i]=="m"){ supp.quanti <- c(supp.quanti,nb.of.var+(1:sum(sapply(base[, (sum(group[1:(i-1)])+1):(sum(group[1:i])),drop=FALSE],is.numeric)))) supp.quali <- c(supp.quali,nb.of.var+(sum(sapply(base[, (sum(group[1:(i-1)])+1):(sum(group[1:i])),drop=FALSE],is.numeric)):(group.mod[i]))) } if (is.null(data.group.sup)) data.group.sup <- as.data.frame(data[,(1+nb.of.var):(nb.of.var+group.mod[i])]) else data.group.sup <- cbind.data.frame(data.group.sup,data[,(1+nb.of.var):(nb.of.var+group.mod[i])]) if (ncol(data.group.sup)>1) colnames.data.group.sup <- c(colnames.data.group.sup,colnames(data)[(1+nb.of.var):(nb.of.var+group.mod[i])]) else colnames.data.group.sup <- colnames(data)[1+nb.of.var] ponderation.group.sup <- c(ponderation.group.sup,ponderation[(1+nb.of.var):(nb.of.var+group.mod[i])]) } nb.of.var <- nb.of.var + group.mod[i] } colnames(data.group.sup) <- colnames.data.group.sup ponderation <- ponderation.tot[-c(supp.quanti,supp.quali)] data <- data[,-c(supp.quanti,supp.quali)] data.group.sup.indice <- (ncol(data)+1):(ncol(data)+ncol(data.group.sup)) data.pca <- cbind.data.frame(data,data.group.sup) } # modif 2023-01-16 # ncp.tmp <- min(nb.actif-1, ncol(data)) ncp.tmp <- min(nb.actif-1, ncol(data)-sum((group[group.actif])[type[group.actif]=="n"])) ind.var <- 0 ind.quali <- NULL for (g in 1:nbre.group) { if (type[g] == "n") ind.quali <- c(ind.quali, c((ind.var + 1):(ind.var + group[g]))) if (type[g] == "m"){ if (g==1) ind.quali <- which(!sapply(base[, 1:group[1],drop=FALSE],is.numeric)) else ind.quali <- c(ind.quali, ind.var + which(!sapply(base[, (1+sum(group[1:(g-1)])):sum(group[1:g]),drop=FALSE],is.numeric))) } ind.var <- ind.var + group[g] } aux_quali_sup_indice <- aux_quali_sup <- data.sup <- NULL if (!is.null(ind.quali)){ aux_quali_sup <- as.data.frame(base[, ind.quali,drop=FALSE]) if (is.null(data.group.sup)) aux_quali_sup_indice <- (ncol(data)+1):(ncol(data)+ncol(aux_quali_sup)) else aux_quali_sup_indice <- (ncol(data)+ncol(data.group.sup)+1):(ncol(data)+ncol(data.group.sup)+ncol(aux_quali_sup)) data.pca <- cbind.data.frame(data.pca,aux_quali_sup) } row.w <- row.w[1:nb.actif] ### Begin handle missing values if ((!is.null(tab.comp))&(any("n"%in%type) || any("m"%in%type))){ data.pca <- data.pca[,-aux_quali_sup_indice] aux_quali_sup_indice <- NULL } ### End handle missing values res.globale <- PCA(data.pca, scale.unit = FALSE, col.w = ponderation, row.w=row.w,ncp = ncp, ind.sup = ind.sup, quali.sup = aux_quali_sup_indice, quanti.sup = data.group.sup.indice, graph = FALSE) ### Begin handle missing values if ((!is.null(tab.comp))&(any("n"%in%type) || any("m"%in%type))){ if (!is.null(type.var%in%"quali")) { if (any(type.var%in%c("freq","quanti"))){ res.globale$quali.var$coord <- res.globale$var$coord[-(1:sum(type.var%in%c("freq","quanti"))),] res.globale$quali.var$cos2 <- res.globale$var$cos2[-(1:sum(type.var%in%c("freq","quanti"))),] res.globale$quali.var$contrib <- res.globale$var$contrib[-(1:sum(type.var%in%c("freq","quanti"))),] } else{ res.globale$quali.var$coord <- res.globale$var$coord res.globale$quali.var$cos2 <- res.globale$var$cos2 res.globale$quali.var$contrib <- res.globale$var$contrib } } res.globale$call$quali.sup$barycentre <- sweep(crossprod(tab.comp[,unlist(ind.var.group[type%in%"n" || type%in%"m"])],as.matrix(data.pca)),1,apply(tab.comp[,unlist(ind.var.group[type%in%"n" || type%in%"m"])],2,sum),FUN="/") res.globale$quali.sup$coord <- sweep(crossprod(tab.comp[,unlist(ind.var.group[type%in%"n" || type%in%"m"])],res.globale$ind$coord),1,apply(tab.comp[,unlist(ind.var.group[type%in%"n" || type%in%"m"])],2,sum),FUN="/") } ### End handle missing values ncp <- min(ncp, nrow(res.globale$eig)) call <- res.globale$call call$group <- group call$type <- type call$ncp <- ncp call$group.mod <- group.mod call$num.group.sup <- num.group.sup call$name.group <- name.group call$X <- base call$XTDC <- data call$nature.group <- nature.group call$nature.var <- nature.var call$list.type.var <- list.type.var contrib.group <- matrix(NA, length(group.actif), ncp) dimnames(contrib.group) <- list(name.group[group.actif], paste("Dim", c(1:ncp), sep = ".")) dist2.group <- vector(length = length(group.actif)) ind.var <- ind.var.sup <- 0 for (g in 1:length(group.actif)) { if (group.mod[group.actif[g]]!=1) contrib.group[g, ] <- apply(res.globale$var$contrib[(ind.var + 1):(ind.var + group.mod[group.actif[g]]), 1:ncp]/100, 2, sum) else contrib.group[g, ] <- res.globale$var$contrib[ind.var + 1, 1:ncp]/100 ind.var <- ind.var + group.mod[group.actif[g]] dist2.group[g] <- sum((res.separe[[group.actif[g]]]$eig[,1]/res.separe[[group.actif[g]]]$eig[1,1])^2) } coord.group <- t(t(contrib.group)*res.globale$eig[1:ncol(contrib.group),1]) cos2.group <- coord.group^2/dist2.group if (!is.null(num.group.sup)){ coord.group.sup <- matrix(NA, length(num.group.sup), ncp) dimnames(coord.group.sup) <- list(name.group[num.group.sup], paste("Dim", c(1:ncp), sep = ".")) ind.gc <- 0 for (gc in 1:length(num.group.sup)) { for (k in 1:ncp){ if (is.null(ind.sup)) coord.group.sup[gc,k] <- funcLg(res.globale$ind$coord[,k,drop=FALSE],data.group.sup[,(ind.gc+1):(ind.gc+group.mod[num.group.sup[gc]]),drop=FALSE],ponderation.x=1/res.globale$eig[k,1],ponderation.y=ponderation.group.sup[(ind.gc+1):(ind.gc+group.mod[num.group.sup[gc]])],wt=row.w/sum(row.w)) else coord.group.sup[gc,k] <- funcLg(res.globale$ind$coord[-ind.sup,k,drop=FALSE],data.group.sup[-ind.sup,(ind.gc+1):(ind.gc+group.mod[num.group.sup[gc]]),drop=FALSE],ponderation.x=1/res.globale$eig[k,1],ponderation.y=ponderation.group.sup[(ind.gc+1):(ind.gc+group.mod[num.group.sup[gc]])],wt=row.w/sum(row.w)) } ind.gc <- ind.gc + group.mod[num.group.sup[gc]] } } Lg <- matrix(0, nbre.group+1, nbre.group+1) ind.gl <- 0 for (gl in c(group.actif,num.group.sup)) { ind.gc <- 0 for (gc in c(group.actif,num.group.sup)) { if (gc>=gl){ if (is.null(num.group.sup)) { if (is.null(ind.sup)) Lg[gl, gc] <- Lg[gc, gl] <- funcLg(x=data[,ind.gl + (1:group.mod[gl]),drop=FALSE],y=data[,ind.gc + (1:group.mod[gc]),drop=FALSE],ponderation.x=ponderation[ind.gl + (1:group.mod[gl])],ponderation.y=ponderation[ind.gc + (1:group.mod[gc])],wt=row.w/sum(row.w)) else Lg[gl, gc] <- Lg[gc, gl] <- funcLg(x=data[-ind.sup,ind.gl + (1:group.mod[gl]),drop=FALSE],y=data[-ind.sup,ind.gc + (1:group.mod[gc]),drop=FALSE],ponderation.x=ponderation[ind.gl + (1:group.mod[gl])],ponderation.y=ponderation[ind.gc + (1:group.mod[gc])],wt=row.w/sum(row.w)) } else { if (is.null(ind.sup)) Lg[gl, gc] <- Lg[gc, gl] <- funcLg(x=cbind.data.frame(data,data.group.sup)[,ind.gl + (1:group.mod[gl]),drop=FALSE],y=cbind.data.frame(data,data.group.sup)[,ind.gc + (1:group.mod[gc]),drop=FALSE],ponderation.x=c(ponderation,ponderation.group.sup)[ind.gl + (1:group.mod[gl])],ponderation.y=c(ponderation,ponderation.group.sup)[ind.gc + (1:group.mod[gc])],wt=row.w/sum(row.w)) else Lg[gl, gc] <- Lg[gc, gl] <- funcLg(x=cbind.data.frame(data,data.group.sup)[-ind.sup,ind.gl +(1:group.mod[gl]),drop=FALSE],y=cbind.data.frame(data,data.group.sup)[-ind.sup,ind.gc + (1:group.mod[gc]),drop=FALSE],ponderation.x=c(ponderation,ponderation.group.sup)[ind.gl +(1:group.mod[gl])],ponderation.y=c(ponderation,ponderation.group.sup)[ind.gc + (1:group.mod[gc])],wt=row.w/sum(row.w)) } } ind.gc <- ind.gc + group.mod[gc] } ind.gl <- ind.gl + group.mod[gl] } Lg[nbre.group+1,] <- Lg[,nbre.group+1] <- apply(Lg[group.actif,],2,sum)/res.globale$eig[1,1] Lg[nbre.group+1,nbre.group+1] <- sum(Lg[group.actif,nbre.group+1])/res.globale$eig[1,1] dist2.group <- diag(Lg) if (!is.null(num.group.sup)){ dist2.group.sup <- dist2.group[num.group.sup] dist2.group <- dist2.group[-num.group.sup] } RV <- sweep(Lg, 2, sqrt(diag(Lg)), "/") RV <- sweep(RV, 1, sqrt(diag(Lg)), "/") rownames(Lg) <- colnames(Lg) <- rownames(RV) <- colnames(RV) <- c(name.group,"MFA") data.partiel <- vector(mode = "list", length = nbre.group) names(data.partiel) <- name.group ind.col <- 0 for (g in 1:nbre.group) { if (g%in%group.actif){ data.partiel[[g]] <- as.data.frame(matrix(res.globale$call$centre, nrow(data), ncol(data), byrow = TRUE, dimnames = dimnames(data))) data.partiel[[g]][, (ind.col + 1):(ind.col + group.mod[g])] <- data[, (ind.col + 1):(ind.col + group.mod[g])] ind.col <- ind.col + group.mod[g] } } res.ind.partiel <- vector(mode = "list", length = nbre.group) names(res.ind.partiel) <- name.group for (g in group.actif){ Xis <- t(t(as.matrix(data.partiel[[g]]))-res.globale$call$centre) Xis <- t(t(Xis)/res.globale$call$ecart.type) coord.ind.sup <- length(group.actif) * as.matrix(Xis) coord.ind.sup <- t(t(coord.ind.sup)*res.globale$call$col.w) coord.ind.sup <- crossprod(t(coord.ind.sup),res.globale$svd$V) res.ind.partiel[[g]]$coord.sup <- coord.ind.sup } cor.grpe.fact <- as.matrix(matrix(NA, length(group.actif), ncp)) colnames(cor.grpe.fact) <- paste("Dim", c(1:ncp), sep = ".") rownames(cor.grpe.fact) <- name.group[group.actif] for (f in 1:ncp) { for (g in 1:length(group.actif)) cor.grpe.fact[g, f] <- cov.wt(cbind.data.frame(res.ind.partiel[[group.actif[g]]]$coord.sup[1:nb.actif, f], res.globale$ind$coord[, f]),wt=row.w/sum(row.w),method="ML",cor=TRUE)$cor[1,2] } It <- vector(length = ncp) for (g in group.actif) It <- It + apply(res.ind.partiel[[g]]$coord.sup[1:nb.actif,]^2*row.w,2,sum) rap.inertie <- apply(res.globale$ind$coord^2*row.w,2,sum) * length(group.actif) / It res.groupes <- list(Lg = Lg, RV = RV, coord = coord.group[, 1:ncp], contrib = contrib.group[, 1:ncp] * 100, cos2 = cos2.group[, 1:ncp], dist2 = dist2.group[-length(dist2.group)], correlation = cor.grpe.fact[, 1:ncp]) if (!is.null(num.group.sup)){ res.groupes$coord.sup <- coord.group.sup[,1:ncp,drop=FALSE] res.groupes$cos2.sup <- coord.group.sup[,1:ncp,drop=FALSE]^2/dist2.group.sup res.groupes$dist2.sup <- dist2.group.sup } ####CHANGED THIS!!!! ------------------ # OLD# # nom.ligne <- NULL # for (i in 1:nb.actif) nom.ligne <- c(nom.ligne, paste(rownames(base)[i], name.group[group.actif], sep = ".")) # NEW# nom.ligne <- c(sapply( rownames(base)[1:nb.actif], paste, name.group[group.actif], sep = ".")) tmp <- array(0,dim=c(nrow(res.globale$ind$coord),ncp,length(group.actif))) for (g in 1:length(group.actif)) tmp[,,g] <- (res.ind.partiel[[group.actif[g]]]$coord.sup[1:nb.actif,1:ncp,drop=FALSE]-res.globale$ind$coord[,1:ncp,drop=FALSE])^2/length(group.actif) ## Ajour Avril 2011 tmp <- tmp*row.w variab.auxil <- apply(tmp,2,sum) ## attention, array tmp <- sweep(tmp,2,variab.auxil,FUN="/") * 100 ## attention, array inertie.intra.ind <- apply(tmp,c(1,2),sum) ####CHANGED THIS!!!! -------------------- #OLD# # inertie.intra.ind.partiel <- as.data.frame(matrix(NA, (nb.actif * length(group.actif)), ncp.tmp)) # for (i in 1:nb.actif) inertie.intra.ind.partiel[((i - 1) * length(group.actif) + 1):(i * length(group.actif)), ] <- t(tmp[i,1:ncp,]) #NEW# inertie.intra.ind.partiel <- data.frame(do.call( rbind, lapply(1:dim(tmp)[1], function(x) t(tmp[x, 1:ncp, ])))) inertie.intra.ind.partiel <- as.matrix(inertie.intra.ind.partiel) # xxx <- as.data.frame(matrix(NA, (nb.actif * length(group.actif)), ncp)) # colnames(inertie.intra.ind.partiel) <- colnames(xxx) rownames(inertie.intra.ind) <- rownames(res.globale$ind$coord) rownames(inertie.intra.ind.partiel) <- nom.ligne colnames(inertie.intra.ind) <- colnames(inertie.intra.ind.partiel) <- paste("Dim", c(1:ncp), sep = ".") tab.partial.axes <- matrix(NA, nb.actif, ncp * nbre.group) rownames(tab.partial.axes) <- rownames(data)[1:nb.actif] nom.axes <- paste("Dim", c(1:ncp), sep = "") nom.col <- NULL debut <- 0 for (g in 1:nbre.group) { nom.col <- c(nom.col, paste(nom.axes, name.group[g],sep=".")) nbcol <- min(ncp, ncol(res.separe[[g]]$ind$coord)) tab.partial.axes[, (debut + 1):(debut + nbcol)] <- res.separe[[g]]$ind$coord[,1:nbcol] debut <- debut + ncp } colnames(tab.partial.axes) <- nom.col indice.col.NA <- which(!is.na(tab.partial.axes[1, ])) tab.partial.axes <- tab.partial.axes[, indice.col.NA] centre <- apply(tab.partial.axes, 2, moy.p, res.globale$call$row.w) tab.partial.axes <- t(t(tab.partial.axes)-centre) ecart.type <- apply(tab.partial.axes, 2, ec, res.globale$call$row.w) ecart.type[ecart.type <= 1e-08] <- 1 tab.partial.axes <- t(t(tab.partial.axes)/ecart.type) coord.res.partial.axes <- t(tab.partial.axes*res.globale$call$row.w) coord.res.partial.axes <- crossprod(t(coord.res.partial.axes),res.globale$svd$U[,1:ncp]) contrib.res.partial.axes <- coord.res.partial.axes*0 debut <- 0 for (g in 1:nbre.group) { nbcol <- min(ncp, ncol(res.separe[[g]]$ind$coord)) if (g %in% group.actif) contrib.res.partial.axes[(debut + 1):(debut + nbcol),] <- coord.res.partial.axes[(debut + 1):(debut + nbcol),]^2*res.separe[[g]]$eig[1:nbcol,1]/res.separe[[g]]$eig[1,1] debut <- debut + nbcol } contrib.res.partial.axes <- t(t(contrib.res.partial.axes)/apply(contrib.res.partial.axes,2,sum)) *100 sigma <- apply(tab.partial.axes, 2, ec, res.globale$call$row.w) cor.res.partial.axes <- coord.res.partial.axes/sigma colnames(coord.res.partial.axes) <- paste("Dim", c(1:ncol(coord.res.partial.axes)), sep = ".") dimnames(contrib.res.partial.axes) <- dimnames(cor.res.partial.axes) <- dimnames (coord.res.partial.axes) summary.n <- as.data.frame(matrix(NA, 0, 4)) colnames(summary.n) <- c("group", "variable", "modalite", "effectif") summary.c <- as.data.frame(matrix(NA, 0, 6)) colnames(summary.c) <- c("group", "variable", "moyenne", "ecart.type", "minimum", "maximum") for (g in 1:nbre.group) { if ((type[g] == "c")||(type[g]=="f")) { statg <- as.data.frame(matrix(NA, ncol(res.separe[[g]]$call$X), 6)) colnames(statg) <- c("group", "variable", "moyenne", "ecart.type", "minimum", "maximum") statg[, "group"] <- rep(g, nrow(statg)) statg[, "variable"] <- colnames(res.separe[[g]]$call$X) statg[, "moyenne"] <- res.separe[[g]]$call$centre if (!is.null(res.separe[[g]]$call$ecart.type)) statg[, "ecart.type"] <- res.separe[[g]]$call$ecart.type statg[, "minimum"] <- apply(res.separe[[g]]$call$X, 2, min) statg[, "maximum"] <- apply(res.separe[[g]]$call$X, 2, max) if (!is.null(res.separe[[g]]$call$ecart.type)) statg[, -c(1, 2)] <- round(statg[, -c(1, 2)], digits = 2) else statg[, -c(1, 2,4)] <- round(statg[, -c(1, 2,4)], digits = 2) summary.c <- rbind(summary.c, statg) } if (type[g]=="n") { if(is.null(excl[[g]])) statg <- as.data.frame(matrix(NA, length(res.separe[[g]]$call$marge.col), 4)) else statg <- as.data.frame(matrix(NA, length(res.separe[[g]]$call$marge.col[-excl[[g]]]), 4)) colnames(statg) <- c("group", "variable", "modalite", "effectif") statg[, "group"] <- rep(g, nrow(statg)) res.separe[[g]]$call$X <- as.data.frame(res.separe[[g]]$call$X) nb.var <- ncol(res.separe[[g]]$call$X) nb.mod <- NULL nom.mod <- NULL nb.mod.orig <- NULL nb.mod.high <- 0 for (v in 1:nb.var) { if(is.null(excl[[g]])) { nb.mod <- c(nb.mod, nlevels(res.separe[[g]]$call$X[, v])) } else { nb.mod.orig <- c(nb.mod.orig, nlevels(res.separe[[g]]$call$X[, v])) nb.mod.low <- nb.mod.high nb.mod.high <- nb.mod.high + nlevels(res.separe[[g]]$call$X[, v]) nb.mod.rm.select <- (nb.mod.low < res.separe[[g]]$call$excl & res.separe[[g]]$call$excl <= nb.mod.high) nb.mod.rm <- res.separe[[g]]$call$excl[nb.mod.rm.select] nb.mod <- c(nb.mod, (nb.mod.orig[v]-length(nb.mod.rm))) } nom.mod <- c(nom.mod, levels(res.separe[[g]]$call$X[, v])) } if(!is.null(excl[[g]])) nom.mod <- nom.mod[-excl[[g]]] statg[, "variable"] <- rep(colnames(res.separe[[g]]$call$X), nb.mod) statg[, "modalite"] <- nom.mod if(is.null(excl[[g]])) statg[, "effectif"] <- res.separe[[g]]$call$marge.col * nbre.ind * nb.var else statg[, "effectif"] <- res.separe[[g]]$call$marge.col[-excl[[g]]] * nbre.ind * nb.var summary.n <- rbind(summary.n, statg) } ###not managed if (type[g]=="m") { nbvar.num <- sum(sapply(res.separe[[g]]$call$X,is.numeric)) statg <- as.data.frame(matrix(NA, nbvar.num, 6)) colnames(statg) <- c("group", "variable", "moyenne", "ecart.type", "minimum", "maximum") statg[, "group"] <- rep(g, nrow(statg)) statg[, "variable"] <- colnames(res.separe[[g]]$call$X[,which(sapply(res.separe[[g]]$call$X,is.numeric)),drop=FALSE]) statg[, "moyenne"] <- res.separe[[g]]$call$centre[1:nbvar.num] if (!is.null(res.separe[[g]]$call$ecart.type)) statg[, "ecart.type"] <- res.separe[[g]]$call$ecart.type[1:nbvar.num] statg[, "minimum"] <- apply(res.separe[[g]]$call$X[,which(sapply(res.separe[[g]]$call$X,is.numeric)),drop=FALSE], 2, min) statg[, "maximum"] <- apply(res.separe[[g]]$call$X[,which(sapply(res.separe[[g]]$call$X,is.numeric)),drop=FALSE], 2, max) if (!is.null(res.separe[[g]]$call$ecart.type)) statg[, -c(1, 2)] <- round(statg[, -c(1, 2)], digits = 2) else statg[, -c(1, 2,4)] <- round(statg[, -c(1, 2,4)], digits = 2) summary.c <- rbind(summary.c, statg) if(is.null(excl[[g]])) statg <- as.data.frame(matrix(NA, length(res.separe[[g]]$call$prop), 4)) else statg <- as.data.frame(matrix(NA, length(res.separe[[g]]$call$prop[-excl[[g]]]), 4)) colnames(statg) <- c("group", "variable", "modalite", "effectif") statg[, "group"] <- rep(g, nrow(statg)) nb.var <- sum(!sapply(res.separe[[g]]$call$X,is.numeric)) nb.mod <- unlist(sapply(res.separe[[g]]$call$X[,which(!sapply(res.separe[[g]]$call$X,is.numeric)),drop=FALSE],nlevels)) nom.mod <- unlist(sapply(res.separe[[g]]$call$X[,which(!sapply(res.separe[[g]]$call$X,is.numeric)),drop=FALSE],levels)) if(!is.null(excl[[g]])){ nb.mod <- nb.mod - length(excl[[g]]) nom.mod <- nom.mod[-excl[[g]]] } statg[, "variable"] <- rep(colnames(res.separe[[g]]$call$X[,which(!sapply(res.separe[[g]]$call$X,is.numeric)),drop=FALSE]), nb.mod) statg[, "modalite"] <- nom.mod if(is.null(excl[[g]])) statg[, "effectif"] <- res.separe[[g]]$call$prop * nbre.ind else statg[, "effectif"] <- res.separe[[g]]$call$marge.col[-excl[[g]]] * nbre.ind summary.n <- rbind(summary.n, statg) } } eig <- res.globale$eig[1:ncp.tmp,] ## CHANGED THIS!!!! --------------- # nom.ligne <- NULL # for (i in 1:nbre.ind) { # ind.tmp <- rownames(base)[i] # nom.ligne <- c(nom.ligne, paste(ind.tmp, name.group[group.actif], sep = ".")) # } nom.ligne <- c( sapply( rownames(base), paste, name.group[group.actif], sep = ".")) coord.ind.partiel <- matrix(NA, (nbre.ind * length(group.actif)), ncp) rownames(coord.ind.partiel) <- nom.ligne colnames(coord.ind.partiel) <- paste("Dim", c(1:ncp), sep = ".") coord.ind <- rbind(res.globale$ind$coord[, 1:ncp,drop=FALSE],res.globale$ind.sup$coord[, 1:ncp,drop=FALSE]) cos2.ind <- rbind(res.globale$ind$cos2[, 1:ncp,drop=FALSE],res.globale$ind.sup$cos2[, 1:ncp,drop=FALSE]) contrib.ind <- res.globale$ind$contrib[, 1:ncp,drop=FALSE] liste.ligne <- seq(1, nbre.ind * length(group.actif), by = length(group.actif)) for (g in 1:length(group.actif)) coord.ind.partiel[liste.ligne+g-1, ] <- res.ind.partiel[[group.actif[g]]]$coord.sup[, 1:ncp,drop=FALSE] if (!is.null(ind.sup)) { res.ind.sup <- list(coord = coord.ind[(nb.actif+1):nrow(coord.ind),,drop=FALSE], cos2 = cos2.ind[(nb.actif+1):nrow(coord.ind),,drop=FALSE], coord.partiel = coord.ind.partiel[(length(group.actif)*nb.actif+1):nrow(coord.ind.partiel),,drop=FALSE]) res.ind <- list(coord = coord.ind[1:nb.actif,,drop=FALSE], contrib = contrib.ind, cos2 = cos2.ind[1:nb.actif,,drop=FALSE], within.inertia = inertie.intra.ind[1:nb.actif,1:ncp,drop=FALSE], coord.partiel = coord.ind.partiel[1:(length(group.actif)*nb.actif),,drop=FALSE], within.partial.inertia = inertie.intra.ind.partiel[1:(length(group.actif)*nb.actif),1:ncp,drop=FALSE] ) } else res.ind <- list(coord = coord.ind, contrib = contrib.ind, cos2 = cos2.ind, within.inertia = inertie.intra.ind[,1:ncp,drop=FALSE], coord.partiel = coord.ind.partiel, within.partial.inertia = inertie.intra.ind.partiel[,1:ncp,drop=FALSE]) res.quali.var <- res.quali.var.sup <- NULL bool.act <- FALSE bool.sup <- FALSE if (!is.null(ind.quali)) { coord.quali <- res.globale$quali.sup$coord[, 1:ncp,drop=FALSE] cos2.quali <- res.globale$quali.sup$cos2[, 1:ncp,drop=FALSE] val.test.quali <- res.globale$quali.sup$v.test[, 1:ncp,drop=FALSE] contrib.quali <- coord.quali * 0 commun <- intersect(rownames(res.globale$var$contrib),rownames(contrib.quali)) if (!is.null(commun)) contrib.quali[commun,] <- res.globale$var$contrib[commun,1:ncp,drop=FALSE] barycentre <- res.globale$call$quali.sup$barycentre coord.quali.partiel <- matrix(NA, (nrow(barycentre) * length(group.actif)), ncp) nom.ligne.bary <- NULL for (q in 1:nrow(barycentre)) { ind.tmp <- rownames(barycentre)[q] nom.ligne.bary <- c(nom.ligne.bary, paste(ind.tmp, name.group[group.actif], sep = ".")) } rownames(coord.quali.partiel) <- nom.ligne.bary liste.ligne <- seq(1, (nrow(barycentre) * length(group.actif) ), by = length(group.actif)) inertie.intra.cg.partiel <- matrix(NA, (nrow(barycentre) * length(group.actif) ), ncp) tmp <- array(0,dim=c(nrow(res.globale$quali.sup$coord),ncp,length(group.actif))) ind.col <- 0 for (g in 1:length(group.actif)) { cg.partiel <- as.data.frame(matrix(res.globale$call$centre[sum(group.mod[group.actif[1:length(group.actif)]])], nrow(barycentre), sum(group.mod[group.actif[1:length(group.actif)]]), byrow = TRUE, dimnames = dimnames(barycentre[,1:sum(group.mod[group.actif[1:length(group.actif)]]),drop=FALSE]))) cg.partiel[, (ind.col + 1):(ind.col + group.mod[group.actif[g]])] <- barycentre[, (ind.col + 1):(ind.col + group.mod[group.actif[g]])] ind.col <- ind.col + group.mod[group.actif[g]] Xis <- t((t(cg.partiel)-res.globale$call$centre)/res.globale$call$ecart.type) coord.quali.sup <- length(group.actif) * as.matrix(Xis) coord.quali.sup <- t(t(coord.quali.sup)*res.globale$call$col.w) coord.quali.sup <- crossprod(t(coord.quali.sup),res.globale$svd$V) coord.quali.partiel[liste.ligne + g - 1, ] <- coord.quali.sup[,1:ncp] tmp[,,g] <- (coord.quali.sup[,1:ncp,drop=FALSE] - res.globale$quali.sup$coord[,1:ncp,drop=FALSE])^2 / length(group.actif) } colnames(coord.quali.partiel) <- paste("Dim", 1:ncp, sep = ".") tmp <- sweep(tmp,2,variab.auxil,FUN="/") * 100 ### attention array ### modif mais attention, si changement dans PCA, remettre ? ## tmp <- sweep(tmp,1,res.globale$call$quali.sup$nombre,FUN="*") tmp <- sweep(tmp,1,poids.bary*sum(row.w),FUN="*") ### attention array inertie.intra.cg <- apply(tmp,c(1,2),sum) for (i in 1:nrow(barycentre)) inertie.intra.cg.partiel[((i - 1) * length(group.actif) + 1):(i * length(group.actif)), ] <- t(tmp[i,1:ncp,]) rownames(inertie.intra.cg) <- rownames(res.globale$quali.sup$coord) rownames(inertie.intra.cg.partiel) <- nom.ligne.bary colnames(inertie.intra.cg) <- colnames(inertie.intra.cg.partiel) <- paste("Dim", c(1:ncp), sep = ".") ind.col <- 0 ind.col.act <- NULL ind.col.sup <- NULL ind.excl <- NULL ind.excl.act <- NULL ###not managed for (g in 1:nbre.group) { if (type[g] =="n" | type[g]=="m"){ if (g%in%num.group.sup) ind.col.sup <- c(ind.col.sup, ind.col+(1:(group.mod[g]-sum(list.type.var[[g]]=="quanti.sup")))) else ind.col.act <- c(ind.col.act, ind.col+(1:(group.mod[g]-sum(list.type.var[[g]]=="quanti")))) if(!is.null(excl[[g]])) { ind.excl <- ind.col + excl[[g]] ind.excl.act <- c(ind.excl.act, ind.excl) } ind.col <- ind.col + group.mod[g]-sum(list.type.var[[g]]=="quanti")-sum(list.type.var[[g]]=="quanti.sup") } } if(!is.null(ind.excl.act)) ind.col.act <- ind.col.act[-ind.excl.act] if (!is.null(ind.col.sup)) { coord.quali.sup <- coord.quali[ind.col.sup,,drop=FALSE] cos2.quali.sup <- cos2.quali[ind.col.sup,,drop=FALSE] val.test.quali.sup <- val.test.quali[ind.col.sup,,drop=FALSE] coord.quali.partiel.sup <- coord.quali.partiel[unlist(lapply(ind.col.sup, function(k) seq(length(group.actif)*(k-1)+1,length=length(group.actif)))),] inertie.intra.cg.sup <- inertie.intra.cg[ind.col.sup,1:ncp] inertie.intra.cg.partiel.sup <- inertie.intra.cg.partiel[unlist(lapply(ind.col.sup, function(k) seq(length(group.actif)*(k-1)+1,length=length(group.actif)))),1:ncp] bool.sup <- TRUE } if (!is.null(ind.col.act)) { coord.quali.act <- coord.quali[ind.col.act,,drop=FALSE] contrib.quali.act <- contrib.quali[ind.col.act,,drop=FALSE] val.test.quali.act <- NULL if (is.null(tab.comp)){ cos2.quali.act <- cos2.quali[ind.col.act,,drop=FALSE] val.test.quali.act <- val.test.quali[ind.col.act,,drop=FALSE] } else { cos2.quali.act <- res.globale$quali.var$cos2 } coord.quali.partiel.act <- coord.quali.partiel[unlist(lapply(ind.col.act, function(k) seq(length(group.actif)*(k-1)+1,length=length(group.actif)))),] inertie.intra.cg.act <- inertie.intra.cg[ind.col.act,1:ncp] inertie.intra.cg.partiel.act <- inertie.intra.cg.partiel[unlist(lapply(ind.col.act, function(k) seq(length(group.actif)*(k-1)+1,length=length(group.actif)))),1:ncp] bool.act <- TRUE } if (bool.act) res.quali.var <- list(coord = coord.quali.act, contrib = contrib.quali.act, cos2 = cos2.quali.act, v.test = val.test.quali.act, coord.partiel = coord.quali.partiel.act, within.inertia = inertie.intra.cg.act, within.partial.inertia = inertie.intra.cg.partiel.act) if (bool.sup) res.quali.var.sup <- list(coord = coord.quali.sup, cos2 = cos2.quali.sup, v.test = val.test.quali.sup, coord.partiel = coord.quali.partiel.sup, within.inertia = inertie.intra.cg.sup, within.partial.inertia = inertie.intra.cg.partiel.sup) } indice.quanti <- NULL indice.freq <- NULL num.tmp <- 0 for (g in group.actif) { if (type[g] == "c") indice.quanti <- c(indice.quanti, c((num.tmp + 1):(num.tmp + group.mod[g]))) if (type[g] == "m"){ if (g==1) indice.quanti <- indice.quanti <- c(indice.quanti,c((num.tmp+1):(num.tmp+sum(sapply(base[,1:group[1],drop=FALSE],is.numeric))))) else indice.quanti <- c(indice.quanti, c((num.tmp+1):(num.tmp+sum(sapply(base[,(sum(group[1:(g-1)])+1):sum(group[1:g]),drop=FALSE],is.numeric))))) } if (type[g] == "f") indice.freq <- c(indice.freq, c((num.tmp + 1):(num.tmp + group.mod[g]))) num.tmp <- num.tmp + group.mod[g] } res.quanti.var <- NULL if (!is.null(indice.quanti)){ coord.quanti.var <- res.globale$var$coord[indice.quanti,1:ncp,drop=FALSE] cos2.quanti.var <- res.globale$var$cos2[indice.quanti, 1:ncp,drop=FALSE] contrib.quanti.var <- res.globale$var$contrib[indice.quanti, 1:ncp,drop=FALSE] cor.quanti.var <- res.globale$var$cor[indice.quanti, 1:ncp,drop=FALSE] res.quanti.var <- list(coord = coord.quanti.var, contrib = contrib.quanti.var, cos2 = cos2.quanti.var, cor = cor.quanti.var) } res.freq <- NULL if (!is.null(indice.freq)){ coord.freq <- res.globale$var$coord[indice.freq,1:ncp,drop=FALSE] cos2.freq <- res.globale$var$cos2[indice.freq, 1:ncp,drop=FALSE] contrib.freq <- res.globale$var$contrib[indice.freq, 1:ncp,drop=FALSE] res.freq <- list(coord = coord.freq, contrib = contrib.freq, cos2 = cos2.freq) } res.quanti.var.sup <- NULL res.freq.sup <- NULL if (!is.null(num.group.sup)){ num.tmp <- 0 indice.quanti <- NULL indice.freq <- NULL for (g in num.group.sup) { if (type[g] == "c") indice.quanti <- c(indice.quanti, num.tmp + (1:group.mod[g])) if (type[g] == "m") indice.quanti <- c(indice.quanti, num.tmp + (1:sum(list.type.var[[g]]=="quanti.sup"))) if (type[g]=="f") indice.freq <- c(indice.freq, c((num.tmp + 1):(num.tmp + group.mod[g]))) num.tmp <- num.tmp + group.mod[g] } if (!is.null(indice.quanti)){ coord.quanti.var.sup <- res.globale$quanti.sup$coord[indice.quanti,1:ncp,drop=FALSE] cos2.quanti.var.sup <- res.globale$quanti.sup$cos2[indice.quanti, 1:ncp,drop=FALSE] cor.quanti.var.sup <- res.globale$quanti.sup$cor[indice.quanti, 1:ncp,drop=FALSE] res.quanti.var.sup <- list(coord = coord.quanti.var.sup, cos2 = cos2.quanti.var.sup, cor = cor.quanti.var.sup) } if (!is.null(indice.freq)){ coord.freq.sup <- res.globale$quanti.sup$coord[indice.freq,1:ncp,drop=FALSE] cos2.freq.sup <- res.globale$quanti.sup$cos2[indice.freq, 1:ncp,drop=FALSE] res.freq.sup <- list(coord = coord.freq.sup, cos2 = cos2.freq.sup) } } aux <- res.separe[[1]]$ind$coord name.aux <- paste(colnames(res.separe[[1]]$ind$coord),name.group[1],sep=".") for (g in 2:nbre.group) { aux <- cbind(aux,res.separe[[g]]$ind$coord) name.aux <- c(name.aux,paste(colnames(res.separe[[g]]$ind$coord),name.group[g],sep=".")) } cor.partial.axes <- cov.wt(aux,wt=row.w/sum(row.w),method="ML",cor=TRUE)$cor dimnames(cor.partial.axes) <- list(name.aux,name.aux) res.partial.axes <- list(coord = coord.res.partial.axes[, 1:ncp], cor = cor.res.partial.axes[, 1:ncp], contrib = contrib.res.partial.axes[, 1:ncp], cor.between = cor.partial.axes) resultats <- list(separate.analyses = res.separe, eig = eig, group = res.groupes, inertia.ratio = rap.inertie[1:ncp], ind = res.ind) if (!is.null(ind.sup)) resultats$ind.sup <- res.ind.sup if (!is.null(c(res.quanti.var,res.quanti.var.sup))) resultats$summary.quanti <- summary.c if (!is.null(c(bool.act,bool.sup))) resultats$summary.quali <- summary.n if (!is.null(res.quanti.var)) resultats$quanti.var <- res.quanti.var if (!is.null(res.quanti.var.sup)) resultats$quanti.var.sup <- res.quanti.var.sup if (!is.null(res.freq)) resultats$freq <- res.freq if (!is.null(res.freq.sup)) resultats$freq.sup <- res.freq.sup if (bool.act) resultats$quali.var <- res.quali.var if (bool.sup) resultats$quali.var.sup <- res.quali.var.sup resultats$partial.axes <- res.partial.axes resultats$call <- call resultats$call$call <- match.call() resultats$global.pca <- res.globale class(resultats) <- c("MFA", "list") if (graph & (ncp>1)){ if (bool.act | bool.sup){ cg.plot.partial <- NULL if (!is.null(resultats["quali.var"]$quali.var)){ max.inertia <- order(apply(resultats$quali.var$within.inertia[,1:2],1,sum)) cg.plot.partial <- rownames(resultats$quali.var$coord)[max.inertia[1:length(max.inertia)]] } if (!is.null(resultats$quali.var.sup)){ max.inertia <- order(apply(resultats$quali.var.sup$within.inertia[,1:2],1,sum)) cg.plot.partial <- c(cg.plot.partial,rownames(resultats$quali.var.sup$coord)[max.inertia[1:length(max.inertia)]]) } print(plot.MFA(resultats,choix="ind",invisible="ind",partial=cg.plot.partial,habillage="group",axes=axes,new.plot=TRUE)) } max.inertia <- order(apply(resultats$ind$within.inertia[,1:2],1,sum)) print(plot.MFA(resultats,choix="axes",habillage="group",axes=axes,new.plot=TRUE,shadowtext=TRUE)) print(plot.MFA(resultats,choix="ind",invisible="quali",partial=rownames(resultats$ind$coord)[max.inertia[c(1:2,nrow(resultats$ind$coord)-1,nrow(resultats$ind$coord))]],habillage="group",axes=axes,new.plot=TRUE)) if ("c"%in%type) print(plot.MFA(resultats,choix="var",habillage="group",axes=axes,new.plot=TRUE,shadowtext=TRUE)) if ("f"%in%type) print(plot.MFA(resultats,choix="freq",habillage="group",axes=axes,new.plot=TRUE)) print(plot.MFA(resultats,choix="ind",invisible="quali",habillage = "ind",axes=axes,new.plot=TRUE,col.hab=1+3*(1:nbre.ind)%in%ind.sup)) print(plot.MFA(resultats,choix="group",axes=axes,new.plot=TRUE)) } return(resultats) } FactoMineR/R/plot.HCPC.R0000644000176200001440000001665014261621104014264 0ustar liggesusers################################################################################################################## plot.HCPC <- function(x, axes=c(1,2), choice="3D.map", rect=TRUE, draw.tree=TRUE, ind.names=TRUE, t.level="all", title=NULL, new.plot=FALSE, max.plot=15,tree.barplot=TRUE, centers.plot=FALSE,...){ ######## sub-function ############################################################################################# f.draw.tree <- function(X, merge, height, dimens, t.level, ind.names, axes, xlim=NULL, vec=NULL, scale.y=NULL, xlab=NULL, ylab=NULL, y.ticklabs=NULL,...){ ax1 <- axes[1] ax2 <- axes[2] names.ind <- row.names(X) X$clust <- as.numeric(X$clust) nb.clust <- max(X$clust) # if(class(t.level)=="character"){ if(inherits(t.level,"character")){ if(t.level=="centers") t.level <- nb.clust if(t.level=="all") t.level <- nrow(merge)+1 } leg <- NULL if (dimens==2){main <- NULL} if (dimens==3){ if((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() if(vec) { X[,ax1] <- res$data.clust[,1] x <- X[,ax1] X[,ax2] <- seq(min(x)/1000, max(x)/1000, length.out=length(x)) } else{ if(ncol(X)==2) { X <- X[,c(1,1,2)] x <- X[,1] X[,2] <- seq(min(x)/1000, max(x)/1000, length.out=length(x)) } else x <- X[,ax1] } y <- X[,ax2] z <- rep(0,nrow(X)) X$clust <- as.factor(X$clust) levs <- levels(X$clust) if(!vec){ if(is.null(xlab)) xlab <- paste("Dim ", ax1, " (", round(res$call$t$res$eig[ax1,2], digits=2), "%)", sep="") if(is.null(ylab)) ylab <- paste("Dim ", ax2, " (", round(res$call$t$res$eig[ax2,2], digits=2), "%)", sep="") } else{ y.ticklabs <- rep(" ",2) ylab <- " " xlab <- " " } scale.y <- ((max(y)-min(y))/(max(x)-min(x))) s <- scatterplot3d::scatterplot3d(x, y, z, zlim=c(0,max(height)), xlab=xlab, ylab=ylab, zlab="height", box=FALSE, color=X$clust, pch=20, scale.y=scale.y, y.ticklabs=y.ticklabs,...) for(i in 1:nb.clust) leg <- c(leg, paste("cluster",levs[i]," ", sep=" ")) legend("topleft", leg, text.col=as.numeric(levels(X$clust)),cex=0.8) if(ind.names){ for(i in 1:nrow(X)) text(s$xyz.convert(x[i],y[i],0),cex=0.7, names.ind[i], col=as.vector(X$clust)[i], pos=1) } } aa <- matrix(ncol=4, nrow=nrow(merge)) for(i in 1:nrow(merge)){ if(merge[i,1]<0){ x1 <- X[-merge[i,1],ax1] y1 <- X[-merge[i,1],ax2] h1 <- 0 w1 <- 1 } else{ x1 <- aa[merge[i,1],1] y1 <- aa[merge[i,1],2] w1 <- aa[merge[i,1],4] h1 <- aa[merge[i,1],3] } if(merge[i,2]<0){ x2 <- X[-merge[i,2],ax1] y2 <- X[-merge[i,2],ax2] h2 <- 0 w2 <- 1 } else{ x2 <- aa[merge[i,2],1] y2 <- aa[merge[i,2],2] w2 <- aa[merge[i,2],4] h2 <- aa[merge[i,2],3] } aa[i,1] <- (w1*x1+w2*x2)/(w1+w2) aa[i,2] <- (w1*y1+w2*y2)/(w1+w2) if(i<=nrow(merge)-t.level+1) height[i] <- 0 aa[i,3] <- height[i] aa[i,4] <- w1+w2 if(i>(nrow(merge)-t.level+1)){ if(dimens==3) s$points3d(rbind(c(x1,y1,h1),c(x1,y1,height[i]), c(x2,y2,height[i]),c(x2,y2,h2)), lty=1, type="o", pch="") if(dimens==2) lines(c(x1,x2), c(y1,y2), lwd=(height[i]/max(height))*3) } } if(dimens==3){ list.centers <- by(X[,-ncol(X),drop=FALSE], X$clust, colMeans) centers <- matrix(unlist(list.centers), ncol=ncol(X)-1, byrow=TRUE) for(l in 1:nb.clust){ if(centers.plot){ s$points3d(centers[l,ax1], centers[l, ax2], 0,col=levs[l], type="o", pch=".", cex=10) text(s$xyz.convert(centers[l,ax1],centers[l,ax2],0), cex=0.8, leg[l], col=levs[l], pos=1) } } } } ######################################################################################################### ######## Main program res <- x X <- res$call$X max <- res$call$max min <- res$call$min max.plot <- max(res$call$max,max.plot) nb.clust <- length(levels(X$clust)) levs <- levels(X$clust) if(choice=="tree"){ if((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() if(is.null(title)) title <- "Hierarchical clustering" if(tree.barplot){ def.par <- par(no.readonly = TRUE) par(mar=c(0.5,2,0.75,0)) lay <- matrix(ncol=5,nrow=5,c(2,4,4,4,4,2,4,4,4,4,2,4,4,4,4,2,4,4,4,4,1,3,3,3,3)) layout(lay,respect=TRUE) # layout.show(n=4) vec <- res$call$t$inert.gain[1:min(max.plot,length(res$call$t$inert.gain))] if (vec[length(vec)] > vec[length(vec)-1]) vec <- vec[-length(vec)] ## suppress the last value if kk is used barplot(height=vec, col=c(rep("black", nb.clust-1), rep("grey", max.plot-nb.clust+1)), space=0.9) plot(x=1,xlab="",ylab="",main="",col="white",axes=FALSE) text(1,1,title,cex=2) plot(x=1,xlab="",ylab="",main="",col="white",axes=FALSE) legend("top","inertia gain ",box.lty=NULL, cex=1) } plot(res$call$t$tree, hang=-1, xlab="", sub="",...) if(rect){ y <- (res$call$t$tree$height[length(res$call$t$tree$height)-nb.clust+2]+res$call$t$tree$height[length(res$call$t$tree$height)-nb.clust+1])/2 ordColo <- unique(res$call$X$clust[res$call$t$tree$order]) rect <- rect.hclust(res$call$t$tree, h = y, border = ordColo) } } if(choice=="3D.map"){ if (is.null(title)) title <- "Hierarchical clustering on the factor map" f.draw.tree(t.level=t.level, X, merge=res$call$t$tree$merge, height=res$call$t$tree$height, dimens=3, ind.names=ind.names, axes=axes, vec=res$call$vec,...) title(title) } if(choice=="bar"){ if((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() vec <- res$call$t$inert.gain[1:max.plot] names.arg <- NULL if(is.null(title)) title <- "Inter-cluster inertia gains" for(i in 1:(max.plot)) names.arg <- c(names.arg, paste(i, "-", i+1, sep="")) barplot(vec, names.arg=names.arg, col=c(rep(1,nb.clust-1),rep(18,length(vec)-nb.clust+1)), main=title, xlab="level of cutting", ylab="Inertia") } if(choice=="map"){ if(!res$call$vec){ if (is.null(title)) title <- "Factor map" Y <- X[,-ncol(X)] leg.map <- NULL for(p in 1:nrow(X)) leg.map[p] <- paste("cluster", X$clust[p], " ", sep=" ") Y <- cbind.data.frame(Y, as.factor(leg.map)) # res2=PCA(Y, quali.sup=ncol(Y), scale.unit=FALSE, ncp=Inf, graph=FALSE) # res2$eig=res$call$t$res$eig res2 <- PCA(Y, quali.sup = ncol(Y), scale.unit = FALSE, row.w = res$call$t$res$call$row.w ,ncp = Inf, graph = FALSE) res2$eig <- res$call$t$res$eig inv <- NULL if (centers.plot==FALSE) inv <- "quali" if(ind.names) plot.PCA(res2, title=title, habillage=ncol(Y),cex=0.8, invisible=inv, axes=axes,new.plot=new.plot,palette=palette(),graph.type="classic",...) else plot.PCA(res2, title=title, habillage=ncol(Y), cex=0.8, axes=axes, label="none", invisible=inv,new.plot=new.plot,palette=palette(),graph.type="classic",...) if(draw.tree) f.draw.tree(X, merge=res$call$t$tree$merge, height=res$call$t$tree$height, dimens=2, t.level=t.level, axes=axes,...) } } if(choice=="tree" & tree.barplot) par(def.par) invisible() } FactoMineR/R/plot.MFA.R0000644000176200001440000031227114535546137014170 0ustar liggesusersplot.MFA <- function (x, axes = c(1, 2), choix = c("ind","var","group","axes","freq"), ellipse = NULL, ellipse.par = NULL, lab.grpe = TRUE, lab.var = TRUE, lab.ind = TRUE, lab.par = FALSE, lab.col = TRUE, ncp=2, habillage = "group", col.hab = NULL, invisible = c("none","ind", "ind.sup", "quanti","quanti.sup","quali","quali.sup","row", "row.sup","col", "col.sup"), partial = NULL, lim.cos2.var = 0., chrono = FALSE, xlim = NULL, ylim = NULL, title = NULL, palette = NULL, autoLab = c("auto","yes","no"),new.plot = FALSE, select = NULL, unselect = 0.7,shadowtext=FALSE, legend = list(bty = "y", x = "topleft"), graph.type = c("ggplot","classic"), ggoptions = NULL, ...) { res.mfa <- x argument <- list(...) if (!is.null(argument[["cex"]]) & is.null(ggoptions["size"])) ggoptions["size"] <- 4*argument$cex if (!inherits(res.mfa, "MFA")) stop("non convenient data") if (is.numeric(unselect)) if ((unselect>1)|(unselect<0)) stop("unselect should be betwwen 0 and 1") autoLab <- match.arg(autoLab,c("auto","yes","no")) if (autoLab=="yes") autoLab <- TRUE if (autoLab=="no") autoLab <- FALSE choix <- match.arg(choix,c("ind","var","group","axes","freq")) graph.type <- match.arg(graph.type[1],c("ggplot","classic")) ggoptions_default <- list(size = 4, point.shape = 19, line.lty = 2, line.lwd = 0.5, line.color = "black", segment.lty = 1, segment.lwd = 0.5, circle.lty = 1, circle.lwd = 0.5, circle.color = "black", low.col.quanti = "blue", high.col.quanti = "red3") if (!is.null(ggoptions[1])) ggoptions_default[names(ggoptions)] <- ggoptions[names(ggoptions)] invisible <- match.arg(invisible,c("none","ind", "ind.sup", "quanti","quanti.sup","quali","quali.sup","row", "row.sup","col", "col.sup"),several.ok=TRUE) if ("none"%in%invisible) invisible <- NULL lab.x <- paste("Dim ",axes[1]," (",format(res.mfa$eig[axes[1],2],nsmall=2,digits=2),"%)",sep="") lab.y <- paste("Dim ",axes[2]," (",format(res.mfa$eig[axes[2],2],nsmall=2,digits=2),"%)",sep="") group <- res.mfa$call$group nbre.grpe <- length(group) type <- res.mfa$call$type type.act <- type num.group.sup <- NULL old.palette <- palette() if (is.null(palette)) palette <- c("black", "red", "green3", "blue", "magenta", "darkgoldenrod","darkgray", "orange", "cyan", "violet", "lightpink", "lavender", "yellow", "darkgreen","turquoise", "lightgrey", "lightblue", "darkkhaki","darkmagenta","lightgreen", "darkolivegreen", "lightcyan", "darkorange","darkorchid", "darkred", "darksalmon", "darkseagreen","darkslateblue", "darkslategray", "darkslategrey","darkturquoise", "darkviolet", "lightgray", "lightsalmon","lightyellow", "maroon") palette(palette) if (!is.null(res.mfa$call$num.group.sup)) { num.group.sup <- res.mfa$call$num.group.sup nbre.grpe.sup <- length(num.group.sup) type.sup <- type[num.group.sup] type.act <- type[-num.group.sup] nbre.grpe <- nbre.grpe - length(num.group.sup) } if (graph.type == "ggplot"){ theme <- theme( axis.title = element_text(hjust = 1, size = if (is.null(argument[["cex.axis"]])) {10} else {10*argument$cex.axis},face = 2), plot.title = element_text(hjust = 0.5, size = if (is.null(argument[["cex.main"]])) {11} else {11*argument$cex.main},face = 2), legend.position = ifelse(legend$x %in% c("bottom","up","right","left"), legend$x, "right"), legend.box.spacing=unit(0.1, 'cm'),legend.margin=margin() ) } if (choix == "axes") { if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() if (is.null(title)) title <- "Partial axes" if(graph.type == "classic"){ plot(0, 0, xlab = lab.x, ylab = lab.y, xlim = c(-1.1, 1.1), ylim = c(-1.1, 1.1), col = "white", asp = 1, main = title,...) x.cercle <- seq(-1, 1, by = 0.01) y.cercle <- sqrt(1 - x.cercle^2) lines(x.cercle, y = y.cercle,...) lines(x.cercle, y = -y.cercle,...) abline(v = 0, lty = 2,...) abline(h = 0, lty = 2,...) } ## 3 lines added selectByNCP <- grep("Dim1",rownames(res.mfa$partial.axes$coord)) for (k in 2:ncp) selectByNCP<- c(selectByNCP,grep(paste("Dim",k,sep=""),rownames(res.mfa$partial.axes$coord))) selectByNCP <- sort(selectByNCP) res.mfa$partial.axes$coord <- res.mfa$partial.axes$coord[selectByNCP,, drop = FALSE] res.mfa$partial.axes$contrib <- res.mfa$partial.axes$contrib[selectByNCP,, drop = FALSE] res.mfa$partial.axes$cos2 <- res.mfa$partial.axes$cos2[selectByNCP,, drop = FALSE] ## end of 3 lines added coord.axes <- res.mfa$partial.axes$coord[, axes, drop = FALSE] if (!is.null(select)) { if (mode(select)=="numeric") selection <- select else { if (sum(rownames(res.mfa$partial.axes$coord)%in%select)!=0) selection <- which(rownames(res.mfa$partial.axes$coord)%in%select) else { if (grepl("contrib",select)) selection <- (rev(order(res.mfa$partial.axes$contrib[,axes[1],drop=FALSE]*res.mfa$eig[axes[1],1]+res.mfa$partial.axes$contrib[,axes[2],drop=FALSE]*res.mfa$eig[axes[2],1])))[1:min(nrow(res.mfa$partial.axes$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] if (grepl("coord",select)) selection <- (rev(order(apply(res.mfa$partial.axes$coord[,axes]^2,1,sum))))[1:min(nrow(res.mfa$partial.axes$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (is.integer(select)) selection <- select } } } if (habillage == "group") { if (is.null(col.hab) | length(col.hab) < length(group)) { if (is.null(res.mfa$call$num.group.sup)) col.hab <- 2:(length(group) + 1) else { col.hab[which(!seq_len(length(group))%in%(res.mfa$call$num.group.sup))] <- 2:(1+length(group)-length(res.mfa$call$num.group.sup)) col.hab[res.mfa$call$num.group.sup] <- length(group)-length(res.mfa$call$num.group.sup)+1+seq_len(length(res.mfa$call$num.group.sup)) } } i <- 1 couleur.axes <- col.hab[i] auxil <- strsplit(rownames(res.mfa$partial.axes$coord)[1], ".", fixed = TRUE)[[1]] auxil2 <- auxil[length(auxil)] for (j in 2:nrow(res.mfa$partial.axes$coord)) { auxil <- strsplit(rownames(res.mfa$partial.axes$coord)[j], ".", fixed = TRUE)[[1]] if (auxil2 != auxil[length(auxil)]) { i <- i + 1 auxil2 <- auxil[length(auxil)] } couleur.axes <- c(couleur.axes, col.hab[i]) } } else { couleur.axes <- NULL for (i in seq_len(length(group))) couleur.axes <- c(couleur.axes, rep("black", ncol(res.mfa$partial.axes$coord))) } posi <- coll <- NULL col.legend <- unique(couleur.axes) if (!is.null(select)){ coord.axes <- coord.axes[selection,,drop=FALSE] couleur.axes <- couleur.axes[selection] } for (v in seq_len(nrow(coord.axes))) { if(graph.type == "classic"){ arrows(0, 0, coord.axes[v, 1], coord.axes[v, 2], length = 0.1, angle = 15, code = 2, col = couleur.axes[v], ...) } if (abs(coord.axes[v,1])>abs(coord.axes[v,2])){ if (coord.axes[v,1]>=0) posi<-c(posi,4) else posi<-c(posi,2) } else { if (coord.axes[v, 2] >= 0) posi <- c(posi,3) else posi <- c(posi,1) } labe <- rownames(coord.axes) } if (autoLab=="auto") autoLab <- (length(labe)<50) if(graph.type == "classic"){ if (autoLab==FALSE) text(coord.axes[, 1], y = coord.axes[, 2], labels = labe, pos = posi, col = couleur.axes,...) if (autoLab==TRUE) autoLab(coord.axes[, 1], y = coord.axes[, 2], labels = labe, col=couleur.axes, shadotext=shadowtext,...) } # if (habillage == "group") legend("topleft", legend = rownames(res.mfa$group$Lg)[-length(rownames(res.mfa$group$Lg))], text.col = unique(couleur.axes), ...) if (habillage == "group") { L <- list(x="topleft", legend = rownames(res.mfa$group$Lg)[-length(rownames(res.mfa$group$Lg))], text.col = col.legend) L <- modifyList(L, legend) if(graph.type == "classic") do.call(graphics::legend, L) } if(graph.type == "ggplot"){ circle <- annotate("path", x=0+1*cos(seq(0,2*pi,length.out=100)), y=0+1*sin(seq(0,2*pi,length.out=100)), lty = ggoptions_default$circle.lty, lwd = ggoptions_default$circle.lwd, color = ggoptions_default$circle.color) df_axes <- data.frame(labe,coord.axes) group2 <- strsplit(as.character(df_axes[,1]),".",fixed=TRUE) group <- NULL for (i in seq_len(length(group2))){group <- c(group, group2[[i]][2])} if(habillage == "group"){ df_axes <- data.frame(df_axes, couleur.axes, group) if(!is.null(select)) df_axes <- df_axes[order(df_axes[,4]),] gg_graph <- ggplot() + aes(x=df_axes[,2], y=df_axes[,3]) + coord_fixed(ratio = 1) + geom_line(aes(x=x, y=y), data=data.frame(x=-1:1,y=0),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_line(aes(x=x, y=y), data=data.frame(x=0,y=-1:1),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_segment(aes(x=0,y=0,xend=df_axes[,2], yend=df_axes[,3],color = as.factor(as.character(df_axes[,4]))), arrow=arrow(length=unit(0.2,"cm")), lty = ggoptions_default$segment.lty, lwd = ggoptions_default$segment.lwd) + xlab(lab.x) + ylab(lab.y) + ggtitle(title) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], "")) + theme_light() + ggoptions_default$theme if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_axes[,2], y=df_axes[,3],label=df_axes[,1], color = as.factor(as.character(df_axes[,4]))), size = ggoptions_default$size, show.legend = FALSE) else{text <- geom_text(aes(x=df_axes[,2], y=df_axes[,3],label=df_axes[,1]),color = palette[as.numeric(as.character(df_axes[,4]))], size = ggoptions_default$size, hjust = (-sign(df_axes[,2])+1)/2, vjust = -sign(df_axes[,3])*0.75+0.25)} if(is.null(select)) gg_graph <- gg_graph + scale_color_manual(values = palette[L$text.col[order(L$text.col)]], labels = unique(df_axes[,5])[order(unique(df_axes[,4]))]) if(!is.null(select)) gg_graph <- gg_graph + scale_color_manual(values = palette[unique(df_axes[,4])], labels = unique(df_axes[,5])) } if(habillage == "none"){ gg_graph <- ggplot() + aes(x=df_axes[,2], y=df_axes[,3]) + coord_fixed(ratio = 1) + geom_line(aes(x=x, y=y), data=data.frame(x=-1:1,y=0),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_line(aes(x=x, y=y), data=data.frame(x=0,y=-1:1),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_segment(aes(x=0,y=0,xend=df_axes[,2], yend=df_axes[,3]), arrow=arrow(length=unit(0.2,"cm")), lty = ggoptions_default$segment.lty, lwd = ggoptions_default$segment.lwd) + xlab(lab.x) + ylab(lab.y) + ggtitle(title) + theme_light() + ggoptions_default$theme if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_axes[,2], y=df_axes[,3],label=df_axes[,1]), size = ggoptions_default$size, show.legend = FALSE) else{text <- geom_text(aes(x=df_axes[,2], y=df_axes[,3],label=df_axes[,1]), size = ggoptions_default$size, hjust = (-sign(df_axes[,2])+1)/2, vjust = -sign(df_axes[,3])*0.75+0.25)} } gg_graph <- gg_graph + text + theme + circle } } if (choix == "group") { coord.actif <- res.mfa$group$coord[, axes, drop = FALSE] if (!is.null(res.mfa$group$coord.sup)) coord.illu <- res.mfa$group$coord.sup[, axes, drop = FALSE] ## Debut ajout 2015/04/23 selection <- selectionS <- NULL if (!is.null(select)) { if (mode(select)=="numeric") selection <- select else { if (sum(rownames(res.mfa$group$coord)%in%select)+sum(rownames(res.mfa$group$coord.sup)%in%select)!=0) selection <- which(rownames(res.mfa$group$coord)%in%select) else { if (grepl("contrib",select)) selection <- (rev(order(res.mfa$group$contrib[,axes[1]]*res.mfa$eig[axes[1],1]+res.mfa$group$contrib[,axes[2]]*res.mfa$eig[axes[2],1])))[1:min(nrow(res.mfa$group$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] if (grepl("coord",select)) selection <- (rev(order(apply(res.mfa$group$coord[,axes]^2,1,sum))))[1:min(nrow(res.mfa$group$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select)) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selection <- (rev(order(apply(res.mfa$group$cos2[,axes],1,sum))))[1:min(nrow(res.mfa$group$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selection <- which(apply(res.mfa$group$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selection <- select } } } if ((!is.null(select))&(!is.null(res.mfa$group$coord.sup))) { if (mode(select)=="numeric") selectionS <- select else { if (sum(rownames(res.mfa$group$coord)%in%select)+sum(rownames(res.mfa$group$coord.sup)%in%select)!=0) selectionS <- which(rownames(res.mfa$group$coord.sup)%in%select) else { if (grepl("contrib",select)) selectionS <- NULL if (grepl("coord",select)) selectionS <- (rev(order(apply(res.mfa$group$coord.sup[,axes]^2,1,sum))))[1:min(nrow(res.mfa$group$coord.sup),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select)) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selectionS <- (rev(order(apply(res.mfa$group$cos2.sup[,axes],1,sum))))[1:min(nrow(res.mfa$group$coord.sup),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selectionS <- which(apply(res.mfa$group$cos2.sup[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selectionS <- select } } } ## Fin ajout 2015/04/23 if (habillage == "group" & is.null(col.hab)) col.hab <- (2:(length(group) + 1)) if (length(col.hab)==1) col.hab <- rep(col.hab,length(group)) if (is.null(col.hab)) { col.hab <- rep("darkred", nrow(coord.actif)) if (!is.null(res.mfa$group$coord.sup)) col.hab <- c(col.hab, rep("darkolivegreen", nrow(coord.illu))) } if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() coo <- labe <- coll <- ipch <- fonte <- NULL if (is.null(xlim)) xlim <- c(0,1) if (is.null(ylim)) ylim <- c(0,1) if (is.null(title)) title <- "Groups representation" if(graph.type=="classic"){ plot(0, 0, main = title, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, asp=1, col="white", ...) abline(v=0,lty=2, ...) abline(h=0,lty=2, ...) } coo <- rbind(coo,coord.actif) if (lab.grpe){ labe <- c(labe,rownames(coord.actif)) } else labe <- c(labe,rep("",nrow(coord.actif))) coll <- c(coll,col.hab[seq_len(nrow(coord.actif))]) ipch <- c(ipch,rep(17,nrow(coord.actif))) fonte <- c(fonte,rep(1,nrow(coord.actif))) if (!is.null(selection)){ if (is.numeric(unselect)) coll[!(seq_len(length(coll))%in%selection)] <- rgb(t(col2rgb(coll[!(seq_len(length(coll))%in%selection)])),alpha=255*(1-unselect),maxColorValue=255) else coll[!(seq_len(length(coll))%in%selection)] <- unselect labe[!(seq_len(length(coll))%in%selection)] <- "" } if (!is.null(res.mfa$group$coord.sup)) { coo <- rbind(coo,coord.illu) if (lab.grpe){ labe2 <- rownames(coord.illu) } else labe2 <- rep("",nrow(coord.illu)) coll2 <- col.hab[(nrow(coord.actif) + 1):(nrow(coord.actif) + nrow(coord.illu))] ipch2 <- rep(2,nrow(coord.illu)) fonte2 <- rep(3,nrow(coord.illu)) # if (lab.grpe){ labe <- c(labe,rownames(coord.illu)) # } else labe <- c(labe,rep("",nrow(coord.illu))) # coll <- c(coll,col.hab[(nrow(coord.actif) + 1):(nrow(coord.actif) + nrow(coord.illu))]) # ipch <- c(ipch,rep(2,nrow(coord.illu))) # fonte <- c(fonte,rep(3,nrow(coord.illu))) if (length(select)==1){ if (grepl("contrib",select)){ if (is.numeric(unselect)) coll2[seq_len(length(coll2))] <- rgb(t(col2rgb(coll2[seq_len(length(coll2))])),alpha=255*(1-unselect),maxColorValue=255) else coll2[seq_len(length(coll2))] <- unselect labe2[seq_len(length(coll2))] <- "" }} if (!is.null(selectionS)){ if (is.numeric(unselect)) coll2[!(seq_len(length(coll2))%in%selectionS)] <- rgb(t(col2rgb(coll2[!(seq_len(length(coll2))%in%selectionS)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!(seq_len(length(coll2))%in%selectionS)] <- unselect labe2[!(seq_len(length(coll2))%in%selectionS)] <- "" } coll <- c(coll,coll2) labe <- c(labe,labe2) fonte <- c(fonte,fonte2) ipch <- c(ipch,ipch2) } if(graph.type=="classic"){ if (shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) if (autoLab=="auto") autoLab <- (length(labe)<50) if (autoLab ==TRUE) autoLab(coo[, 1], y = coo[, 2], labels = labe, col = coll, font=fonte,shadotext=shadowtext,...) if (autoLab ==FALSE) text(coo[, 1], y = coo[, 2], labels = labe, col = coll, font=fonte,pos=3,...) if (!shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) } if(graph.type=="ggplot"){ if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) df_group <- data.frame(labe,coo,coll,ipch,fonte) gg_graph <- ggplot() + coord_fixed(ratio = 1) + geom_point(aes(x=df_group[,2], y=df_group[,3]), color= rgb(t(col2rgb(df_group[,4])),maxColorValue=255) , shape = df_group[,5], size = ggoptions_default$size/3) + xlab(lab.x) + ylab(lab.y) + xlim(xlim) + ylim(ylim) + geom_hline(yintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_vline(xintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + theme_light() + ggoptions_default$theme + ggtitle(title) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_group[,2], y=df_group[,3], label=df_group[,1]), size = ggoptions_default$size, color = rgb(t(col2rgb(df_group[,"coll"])),maxColorValue=255) , fontface = df_group[,"fonte"]) else{text <- geom_text(aes(x=df_group[,2], y=df_group[,3], label=df_group[,1]), size = ggoptions_default$size, color = rgb(t(col2rgb(df_group[,4])),maxColorValue=255) , hjust = (-sign(df_group[,2])+1)/2, vjust = -sign(df_group[,3])*0.75+0.25, fontface = df_group[,"fonte"])} gg_graph <- gg_graph + text + theme } } if (choix == "var") { if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() test.invisible <- vector(length = 2) if (!is.null(invisible)) { test.invisible[1] <- match("quanti", invisible) test.invisible[2] <- match("quanti.sup", invisible) } else test.invisible <- rep(NA, 2) col <- NULL if (habillage == "group") { if (is.null(col.hab) | length(col.hab) < length(group[type == "c"])+length(group[type == "m"])){ if (!is.null(res.mfa$call$num.group.sup)){ col.hab[which(!seq_len(length(group))%in%(res.mfa$call$num.group.sup))] <- 2:(1+length(group)-length(res.mfa$call$num.group.sup)) col.hab[res.mfa$call$num.group.sup] <- length(group)-length(res.mfa$call$num.group.sup)+1+seq_len(length(res.mfa$call$num.group.sup)) # col <- c(1+rep(which(res.mfa$call$nature.group[-res.mfa$call$num.group.sup]=="quanti"),times=group[which(res.mfa$call$nature.group=="quanti")]),length(group)-length(res.mfa$call$num.group.sup)+1+rep(which((res.mfa$call$nature.group[res.mfa$call$num.group.sup])=="quanti.sup"),times=group[which(res.mfa$call$nature.group=="quanti.sup")])) col <- c(1+rep(which(res.mfa$call$nature.group[-res.mfa$call$num.group.sup]=="quanti" | res.mfa$call$nature.group[-res.mfa$call$num.group.sup]=="mixed"), times=sapply(res.mfa$call$list.type.var[which(res.mfa$call$nature.group=="quanti" | res.mfa$call$nature.group=="mixed")],function(x) sum("quanti"==x))), rep(length(group)-length(res.mfa$call$num.group.sup)+1+rep(which(res.mfa$call$nature.group[res.mfa$call$num.group.sup]=="quanti.sup" | res.mfa$call$nature.group[res.mfa$call$num.group.sup] =="mixed.sup")), times=sapply(res.mfa$call$list.type.var[res.mfa$call$nature.group=="quanti.sup" | res.mfa$call$nature.group =="mixed.sup"],function(x) sum("quanti.sup"==x)))) } else { col.hab <- 2:(length(group)+1) col <- 1+rep(which(type=="c" | type=="m"),times=sapply(res.mfa$call$list.type.var[res.mfa$call$type=="c" | res.mfa$call$type=="m"],function(x) sum("quanti"==x))) } } } else { if (is.null(col.hab) | length(col.hab) < sum(group[type == "c" | type=="m"])) col <- rep(1, sum(sapply(res.mfa$call$list.type.var, function(x) sum("quanti"==x)))) else col <- col.hab } if (is.null(title)) title <- "Correlation circle" if(graph.type=="classic"){ plot(0, 0, main = title, xlab = lab.x, ylab = lab.y, xlim = c(-1.1, 1.1), ylim = c(-1.1, 1.1), col = "white", asp = 1, ...) x.cercle <- seq(-1, 1, by = 0.01) y.cercle <- sqrt(1 - x.cercle^2) lines(x.cercle, y = y.cercle,...) lines(x.cercle, y = -y.cercle,...) abline(v = 0, lty = 2, ...) abline(h = 0, lty = 2, ...) } if ((!is.null(select))&(!is.null(res.mfa["quanti.var"]$quanti.var))) { if (mode(select)=="numeric") selection <- select else { if (sum(rownames(res.mfa$quanti.var$coord)%in%select)+sum(rownames(res.mfa$quanti.var.sup$coord)%in%select)!=0) selection <- which(rownames(res.mfa$quanti.var$coord)%in%select) else { if (grepl("contrib",select)) selection <- (rev(order(res.mfa$quanti.var$contrib[,axes[1],drop=FALSE]*res.mfa$eig[axes[1],1]+res.mfa$quanti.var$contrib[,axes[2],drop=FALSE]*res.mfa$eig[axes[2],1])))[1:min(nrow(res.mfa$quanti.var$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] # if (grepl("contrib",select)) selection <- (rev(order(apply(res.mfa$quanti.var$contrib[,axes],1,sum))))[1:min(nrow(res.mfa$quanti.var$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] if (grepl("coord",select)) selection <- (rev(order(apply(res.mfa$quanti.var$coord[,axes]^2,1,sum))))[1:min(nrow(res.mfa$quanti.var$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select)) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selection <- (rev(order(apply(res.mfa$quanti.var$cos2[,axes],1,sum))))[1:min(nrow(res.mfa$quanti.var$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selection <- which(apply(res.mfa$quanti.var$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selection <- select } } } if ((!is.null(select))&(!is.null(res.mfa$quanti.var.sup))) { if (mode(select)=="numeric") selectionS <- select else { if (sum(rownames(res.mfa$quanti.var$coord)%in%select)+sum(rownames(res.mfa$quanti.var.sup$coord)%in%select)!=0) selectionS <- which(rownames(res.mfa$quanti.var.sup$coord)%in%select) else { if (grepl("contrib",select)) selectionS <- NULL if (grepl("coord",select)) selectionS <- (rev(order(apply(res.mfa$quanti.var.sup$coord[,axes]^2,1,sum))))[1:min(nrow(res.mfa$quanti.var.sup$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select)) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selectionS <- (rev(order(apply(res.mfa$quanti.var.sup$cos2[,axes],1,sum))))[1:min(nrow(res.mfa$quanti.var.sup$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selectionS <- which(apply(res.mfa$quanti.var.sup$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selectionS <- select } } } labe <- labe2 <- coll <- coll2 <- NULL if (!is.null(res.mfa["quanti.var"]$quanti.var)){ coll <- col[seq_len(nrow(res.mfa["quanti.var"]$quanti.var$coord))] if (lab.var) labe <- rownames(res.mfa["quanti.var"]$quanti.var$coord) else labe <- rep("",nrow(res.mfa["quanti.var"]$quanti.var$coord)) } if (!is.null(res.mfa$quanti.var.sup)){ if (lab.var) labe2 <- rownames(res.mfa$quanti.var.sup$coord) else labe2 <- rep("",nrow(res.mfa$quanti.var.sup$coord)) coll2 <- col[(length(coll)+1):length(col)] } if (!is.null(select)){ if (!is.null(res.mfa["quanti.var"]$quanti.var)&is.na(test.invisible[1])){ if(graph.type=="classic"){ if (is.numeric(unselect)) coll[!(seq_len(length(coll))%in%selection)] <- rgb(t(col2rgb(coll[!(seq_len(length(coll))%in%selection)])),alpha=255*(1-unselect),maxColorValue=255) else coll[!(seq_len(length(coll))%in%selection)] <- unselect } labe[!(seq_len(length(coll))%in%selection)] <- "" } if (!is.null(res.mfa$quanti.var.sup)&is.na(test.invisible[2])){ if(graph.type=="classic"){ if (is.numeric(unselect)) coll2[!(seq_len(length(coll2))%in%selectionS)] <- rgb(t(col2rgb(coll2[!(seq_len(length(coll2))%in%selectionS)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!(seq_len(length(coll2))%in%selectionS)] <- unselect } labe2[!(seq_len(length(coll2))%in%selectionS)] <- "" } } col <- c(coll,coll2) labe <- c(labe,labe2) # if (habillage == "group" & is.na(test.invisible[1]) & is.na(test.invisible[2])) # legend("topleft", legend = rownames(res.mfa$group$Lg[-nrow(res.mfa$group$Lg),,drop=FALSE])[type == "c"], text.col = col.hab[type == "c"], cex = 0.8*par("cex")) if (habillage == "group" & is.na(test.invisible[1]) & is.na(test.invisible[2])) { L <- list(x="topleft", legend = rownames(res.mfa$group$Lg[-nrow(res.mfa$group$Lg),,drop=FALSE])[type == "c" | type=="m"], text.col = col.hab[type == "c" | type=="m"], cex = 0.8*par("cex")) L <- modifyList(L, legend) if(graph.type=="classic") do.call(graphics::legend, L) } if (habillage == "group" & is.na(test.invisible[1]) & !is.na(test.invisible[2])){ # if ("quanti.sup"%in%res.mfa$call$nature.var) legend("topleft", legend = rownames(res.mfa$group$Lg[-c(num.group.sup, nrow(res.mfa$group$Lg)),,drop=FALSE])[type.act == "c"], # text.col = col.hab[which(!((1:length(group))%in%res.mfa$call$num.group.sup))[type.act == "c"]], cex = 0.8*par("cex")) if ("quanti.sup"%in%res.mfa$call$nature.var) { L <- list(x="topleft", legend = rownames(res.mfa$group$Lg[-c(num.group.sup, nrow(res.mfa$group$Lg)),,drop=FALSE])[type.act == "c" | type.act=="m"], text.col = col.hab[which(!(seq_len(length(group))%in%res.mfa$call$num.group.sup))[type.act == "c" | type.act=="m"]], cex = 0.8*par("cex")) } else { # legend("topleft", legend = rownames(res.mfa$group$Lg[-nrow(res.mfa$group$Lg), ])[type == "c"], text.col = col.hab[type == "c"], cex = 0.8*par("cex")) L <- list(x="topleft", legend = rownames(res.mfa$group$Lg[-nrow(res.mfa$group$Lg), ])[type == "c" | type=="m"], text.col = col.hab[type == "c" | type=="m"], cex = 0.8*par("cex")) } L <- modifyList(L, legend) if(graph.type=="classic") do.call(graphics::legend, L) } if (habillage == "group" & !is.na(test.invisible[1]) & is.na(test.invisible[2])){ # if ("quanti"%in%res.mfa$call$nature.var) legend("topleft", legend = rownames(res.mfa$group$Lg[num.group.sup,,drop=FALSE])[type.sup == "c"], text.col = col.hab[res.mfa$call$num.group.sup[type.sup == "c"]], cex = 0.8*par("cex")) # else legend("topleft", legend = rownames(res.mfa$group$Lg[num.group.sup,,drop=FALSE])[type.sup == "c"], text.col = col.hab[res.mfa$call$num.group.sup[type.sup == "c"]], cex = 0.8*par("cex")) if (c("quanti","mixed")%in%res.mfa$call$nature.var) L <- list(x="topleft", legend = rownames(res.mfa$group$Lg[num.group.sup,,drop=FALSE])[which(type.sup == "c" | type.sup=="m")], text.col = col.hab[res.mfa$call$num.group.sup[which(type.sup == "c" | type.sup=="m")]], cex = 0.8*par("cex")) else L <- list(x="topleft", legend = rownames(res.mfa$group$Lg[num.group.sup,,drop=FALSE])[type.sup == "c" | type=="m"], text.col = col.hab[res.mfa$call$num.group.sup[type.sup == "c" | type.sup=="m"]], cex = 0.8*par("cex")) L <- modifyList(L, legend) if(graph.type=="classic") do.call(graphics::legend, L) } nrow.coord.var <- 0 coo <- posi <- NULL if ((!is.null(res.mfa["quanti.var"]$quanti.var))&(!is.na(test.invisible[1]))){ col[seq_len(nrow(res.mfa$quanti.var$cor[,axes,drop=FALSE]))] <- "transparent" } if (!is.null(res.mfa["quanti.var"]$quanti.var)){ ### modif 2016-02-16 coord.var <- res.mfa$quanti.var$cor[,axes,drop=FALSE] coo <- coord.var if (length(which(apply(res.mfa$quanti.var$cos2[, axes,drop=FALSE],1,sum, na.rm = TRUE) < lim.cos2.var))>0) col[which(apply(res.mfa$quanti.var$cos2[, axes,drop=FALSE],1,sum, na.rm = TRUE) < lim.cos2.var)] <- "transparent" if(graph.type=="classic"){ for (v in seq_len(nrow(coord.var))) { if (!(is.nan(coord.var[v,1])|is.infinite(coord.var[v,1]))){ arrows(0, 0, coord.var[v, 1], coord.var[v, 2], length = 0.1, angle = 15, code = 2, col = col[v]) if (lab.var) { if (abs(coord.var[v,1])>abs(coord.var[v,2])){ if (coord.var[v,1]>=0) posi<-c(posi,4) else posi<-c(posi,2) } else { if (coord.var[v,2]>=0) posi<-c(posi,3) else posi<-c(posi,1) } } } } } } if ((!is.null(res.mfa$quanti.var.sup$coord))&(!is.na(test.invisible[2]))){ col[nrow(coo)+seq_len(nrow(res.mfa$quanti.var.sup$cor[,axes,drop=FALSE]))] <- "transparent" } if (!is.null(res.mfa$quanti.var.sup$coord)){ coord.quanti <- res.mfa$quanti.var.sup$cor[ ,axes,drop=FALSE] coo <- rbind(coo,coord.quanti) if (length(which(apply(res.mfa$quanti.var.sup$cos2[, axes,drop=FALSE],1,sum, na.rm = TRUE) < lim.cos2.var))>0) col[nrow(coo)-nrow(coord.quanti)+which(apply(res.mfa$quanti.var.sup$cos2[, axes,drop=FALSE],1,sum, na.rm = TRUE) < lim.cos2.var)]<-"transparent" if(graph.type=="classic"){ for (q in seq_len(nrow(coord.quanti))) { if (!(is.nan(coord.quanti[q,1])|is.infinite(coord.quanti[q,1]))){ arrows(0, 0, coord.quanti[q, 1], coord.quanti[q, 2], length = 0.1, angle = 15, code = 2, lty = 2, col=col[nrow(coo)-nrow(coord.quanti)+q],...) if (lab.var) { if (abs(coord.quanti[q,1])>abs(coord.quanti[q,2])){ if (coord.quanti[q,1]>=0) posi<-c(posi,4) else posi<-c(posi,2) } else { if (coord.quanti[q,2]>=0) posi<-c(posi,3) else posi<-c(posi,1) } } } } } } if(graph.type=="classic"){ if (autoLab=="auto") autoLab <- (length(labe)-sum(col=="transparent")<50) AGarder <- which(!(is.nan(coo[,1])|is.infinite(coo[,1]))) coo <- coo[AGarder,] col <- col[AGarder] labe <- labe[AGarder] if (autoLab==FALSE) text(coo[, 1], y = coo[, 2], labels = labe, pos = posi, col = col,...) ### pas mettre sur posi if (autoLab==TRUE) autoLab(coo[which(col!="transparent"), 1], y = coo[which(col!="transparent"), 2], labels = labe[which(col!="transparent")], col=col[which(col!="transparent")], shadotext=shadowtext,...) par(mar = c(5, 4, 4, 2) + 0.1) } if(graph.type=="ggplot"){ if (autoLab=="auto") autoLab <- (length(labe)<50) circle <- annotate("path", x=0+1*cos(seq(0,2*pi,length.out=100)), y=0+1*sin(seq(0,2*pi,length.out=100)), lty = ggoptions_default$circle.lty, lwd = ggoptions_default$circle.lwd, color = ggoptions_default$circle.color) df_var <- data.frame(labe,coo) transparency_var <- 1 if (!is.null(select)) transparency_var <- ifelse(df_var[,1] != "", 1, 1-unselect) if(habillage == "group"){ df_var <- data.frame(df_var,col,transparency_var) df_var[,4] <- as.factor(df_var[,4]) df_var <- df_var[which(df_var[,4] != "transparent"),] df_var <- df_var[which(!(is.nan(df_var[,2])|is.infinite(df_var[,2]))),] # suppress variable with standard deviation = 0 gg_graph <- ggplot() + coord_fixed(ratio = 1) + geom_line(aes(x=x, y=y), data=data.frame(x=-1:1,y=0),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_line(aes(x=x, y=y), data=data.frame(x=0,y=-1:1),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_segment(aes(x=0,y=0,xend=df_var[,2], yend=df_var[,3], color = df_var[,4]),arrow=arrow(length=unit(0.2,"cm")), lty = ggoptions_default$segment.lty, lwd = ggoptions_default$segment.lwd, alpha = df_var[,5]) + xlab(lab.x) + ylab(lab.y) + xlim(c(-1.3,1.3)) + ylim(c(-1.1,1.1)) + ggtitle(title) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], "")) + scale_color_manual(values = palette[L$text.col[order(L$text.col)]], labels = L$legend[order(L$text.col)]) + theme_light() + ggoptions_default$theme if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1], color = df_var[,4]), size = ggoptions_default$size,show.legend = FALSE) else{text <- geom_text(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1], color = df_var[,4]), size = ggoptions_default$size, hjust = (-sign(df_var[,2])+1)/2, vjust = -sign(df_var[,3])*0.75+0.25,show.legend = FALSE)} } if(habillage=="none"){ df_var <- data.frame(df_var,col,transparency_var) df_var <- df_var[which(!(is.nan(df_var[,2])|is.infinite(df_var[,2]))),] gg_graph <- ggplot() + #aes(x=df_var[,2], y=df_var[,3]) + coord_fixed(ratio = 1) + geom_line(aes(x=x, y=y), data=data.frame(x=-1:1,y=0),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_line(aes(x=x, y=y), data=data.frame(x=0,y=-1:1),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_segment(aes(x=0,y=0,xend=df_var[,2], yend=df_var[,3]),arrow=arrow(length=unit(0.2,"cm")), lty = ggoptions_default$segment.lty, lwd = ggoptions_default$segment.lwd, alpha = df_var[,5]) + xlab(lab.x) + ylab(lab.y) + ggtitle(title) + theme_light() + ggoptions_default$theme if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1]), size = ggoptions_default$size,show.legend = FALSE) else{text <- geom_text(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1]), size = ggoptions_default$size, hjust = (-sign(df_var[,2])+1)/2, vjust = -sign(df_var[,3])*0.75+0.25,show.legend = FALSE)} } gg_graph <- gg_graph + text + theme + circle } } if (choix=="freq"){ if (is.null(res.mfa$freq)&is.null(res.mfa$freq.sup)) stop("You have no frequencies groups") if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() col.row <- 1 col.row.sup <- "grey60" coord.col <- res.mfa$freq$coord[, axes, drop = FALSE] coord.row <- res.mfa$ind$coord[, axes] coord.row.sup <- coord.col.sup <- NULL if (!is.null(res.mfa$ind.sup)) coord.row.sup <- res.mfa$ind.sup$coord[, axes, drop = FALSE] if (!is.null(res.mfa$freq.sup)) coord.col.sup <- res.mfa$freq.sup$coord[, axes, drop = FALSE] test.invisible <- vector(length = 4) if (!is.null(invisible)) { test.invisible[1] <- match("row", invisible)|match("ind", invisible) test.invisible[2] <- match("col", invisible) test.invisible[3] <- match("row.sup", invisible)|match("ind.sup", invisible) test.invisible[4] <- match("col.sup", invisible) } else test.invisible <- rep(NA, 4) if (is.null(xlim)) { xmin <- xmax <- 0 if(is.na(test.invisible[1])) xmin <- min(xmin, coord.row[,1]) if(is.na(test.invisible[1])) xmax <- max(xmax, coord.row[,1]) if(is.na(test.invisible[2])) xmin <- min(xmin, coord.col[,1]) if(is.na(test.invisible[2])) xmax <- max(xmax, coord.col[,1]) if(is.na(test.invisible[3])) xmin <- min(xmin, coord.row.sup[, 1]) if(is.na(test.invisible[3])) xmax <- max(xmax, coord.row.sup[, 1]) if(is.na(test.invisible[4])) xmin <- min(xmin, coord.col.sup[, 1]) if(is.na(test.invisible[4])) xmax <- max(xmax, coord.col.sup[, 1]) xlim <- c(xmin, xmax) * 1.2 } else { xmin <- xlim[1] xmax <- xlim[2] } if (is.null(ylim)) { ymin <- ymax <- 0 if(is.na(test.invisible[1])) ymin <- min(ymin, coord.row[,2]) if(is.na(test.invisible[1])) ymax <- max(ymax, coord.row[,2]) if(is.na(test.invisible[2])) ymin <- min(ymin, coord.col[,2]) if(is.na(test.invisible[2])) ymax <- max(ymax, coord.col[,2]) if(is.na(test.invisible[3])) ymin <- min(ymin, coord.row.sup[,2]) if(is.na(test.invisible[3])) ymax <- max(ymax, coord.row.sup[,2]) if(is.na(test.invisible[4])) ymin <- min(ymin, coord.col.sup[,2]) if(is.na(test.invisible[4])) ymax <- max(ymax, coord.col.sup[,2]) ylim <- c(ymin, ymax) * 1.2 } else { ymin <- ylim[1] ymax <- ylim[2] } if(graph.type=="ggplot") nudge_y <- (xlim[2] - xlim[1])*0.03 col <- NULL if (habillage == "group") { if (is.null(col.hab) | length(col.hab) < length(group[type == "f"])){ if (!is.null(res.mfa$call$num.group.sup)){ col.hab[which(!seq_len(length(group))%in%(res.mfa$call$num.group.sup))] <- 2:(1+length(group)-length(res.mfa$call$num.group.sup)) col.hab[res.mfa$call$num.group.sup] <- length(group)-length(res.mfa$call$num.group.sup)+1+seq_len(length(res.mfa$call$num.group.sup)) if (!is.null(res.mfa$call$nature.group=="contingency")) col.col <- rep(col.hab[res.mfa$call$nature.group=="contingency"],times=group[res.mfa$call$nature.group=="contingency"]) if (!is.null(res.mfa$call$nature.group=="contingency.sup")) col.col.sup <- rep(col.hab[res.mfa$call$nature.group=="contingency.sup"],times=group[res.mfa$call$nature.group=="contingency.sup"]) } else { col.hab <- 2:(length(group) + 1) col.col <- 1+rep(which(type=="f"),times=group[type=="f"]) } } } else { if (is.null(col.hab) | length(col.hab) < sum(group[type == "f"])) { col.hab <- rep(1, sum(group[type == "f"])) col <- col.hab col.col <- "blue" col.col.sup <- "darkblue" } else col.col <- col.hab } if (is.null(title)) titre <- "Factor map for the contingency table(s)" else titre <- title if(graph.type=="classic"){ plot(0, 0, main = titre, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp=1, ...) abline(h=0,lty=2,...) abline(v=0,lty=2,...) } selection <- selectionC <- selectionS <- selectionCS <- NULL if (!is.null(select)) { if (mode(select)=="numeric") selection <- select else { if (sum(rownames(res.mfa$freq.sup$coord)%in%select)+sum(rownames(res.mfa$freq$coord)%in%select)+sum(rownames(res.mfa$ind$coord)%in%select)+sum(rownames(res.mfa$ind.sup$coord)%in%select)!=0) selection <- which(rownames(res.mfa$ind$coord)%in%select) else { if (grepl("contrib",select)) selection <- (rev(order(res.mfa$ind$contrib[,axes[1],drop=FALSE]*res.mfa$eig[axes[1],1]+res.mfa$ind$contrib[,axes[2],drop=FALSE]*res.mfa$eig[axes[2],1])))[1:min(nrow(res.mfa$ind$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] # if (grepl("contrib",select)) selection <- (rev(order(apply(res.mfa$ind$contrib[,axes],1,sum))))[1:min(nrow(res.mfa$ind$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] if (grepl("inertia",select)) selection <- (rev(order(apply(res.mfa$ind$within.inertia[,axes],1,sum))))[1:min(nrow(res.mfa$ind$coord),sum(as.integer(unlist(strsplit(select,"inertia"))),na.rm=T))] if (grepl("coord",select)) selection <- (rev(order(apply(res.mfa$ind$coord[,axes]^2,1,sum))))[1:min(nrow(res.mfa$ind$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select)) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selection <- (rev(order(apply(res.mfa$ind$cos2[,axes],1,sum))))[1:min(nrow(res.mfa$ind$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selection <- which(apply(res.mfa$ind$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selection <- select } } } if ((!is.null(select))&(!is.null(res.mfa$ind.sup$coord))) { if (mode(select)=="numeric") selectionS <- select else { if (sum(rownames(res.mfa$freq.sup$coord)%in%select)+sum(rownames(res.mfa$freq$coord)%in%select)+sum(rownames(res.mfa$ind$coord)%in%select)+sum(rownames(res.mfa$ind.sup$coord)%in%select)!=0) selectionS <- which(rownames(res.mfa$ind.sup$coord)%in%select) else { if (grepl("contrib",select)) selectionS <- NULL if (grepl("inertia",select)) selectionS <- (rev(order(apply(res.mfa$ind.sup$within.inertia[,axes]^2,1,sum))))[1:min(nrow(res.mfa$ind.sup$coord),sum(as.integer(unlist(strsplit(select,"inertia"))),na.rm=T))] if (grepl("coord",select)) selectionS <- (rev(order(apply(res.mfa$ind.sup$coord[,axes]^2,1,sum))))[1:min(nrow(res.mfa$ind.sup$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select)) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selectionS <- (rev(order(apply(res.mfa$ind.sup$cos2[,axes],1,sum))))[1:min(nrow(res.mfa$ind.sup$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selectionS <- which(apply(res.mfa$ind.sup$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selectionS <- select } } } if ((!is.null(select))&(!is.null(res.mfa$freq$coord))) { if (mode(select)=="numeric") selectionC <- select else { if (sum(rownames(res.mfa$freq.sup$coord)%in%select)+sum(rownames(res.mfa$freq$coord)%in%select)+sum(rownames(res.mfa$ind$coord)%in%select)+sum(rownames(res.mfa$ind.sup$coord)%in%select)!=0) selectionC <- which(rownames(res.mfa$freq$coord)%in%select) else { if (grepl("contrib",select)) selectionC <- (rev(order(res.mfa$freq$contrib[,axes[1],drop=FALSE]*res.mfa$eig[axes[1],1]+res.mfa$freq$contrib[,axes[2],drop=FALSE]*res.mfa$eig[axes[2],1])))[1:min(nrow(res.mfa$freq$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] if (grepl("coord",select)) selectionC <- (rev(order(apply(res.mfa$freq$coord[,axes]^2,1,sum))))[1:min(nrow(res.mfa$freq$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select)) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selectionC <- (rev(order(apply(res.mfa$freq$cos2[,axes],1,sum))))[1:min(nrow(res.mfa$freq$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selectionC <- which(apply(res.mfa$freq$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selectionC <- select } } } if ((!is.null(select))&(!is.null(res.mfa$freq.sup$coord))) { if (mode(select)=="numeric") selectionCS <- select else { if (sum(rownames(res.mfa$freq.sup$coord)%in%select)+sum(rownames(res.mfa$freq$coord)%in%select)+sum(rownames(res.mfa$ind$coord)%in%select)+sum(rownames(res.mfa$ind.sup$coord)%in%select)!=0) selectionCS <- which(rownames(res.mfa$freq.sup$coord)%in%select) else { if (grepl("contrib",select)) selectionCS <- NULL if (grepl("coord",select)) selectionCS <- (rev(order(apply(res.mfa$freq.sup$coord[,axes]^2,1,sum))))[1:min(nrow(res.mfa$freq.sup$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select)) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selectionCS <- (rev(order(apply(res.mfa$freq.sup$cos2[,axes],1,sum))))[1:min(nrow(res.mfa$freq.sup$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selectionCS <- which(apply(res.mfa$freq.sup$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selectionCS <- select } } } coo <- labe <- coll <- ipch <- fonte <- NULL if (is.na(test.invisible[1])) { coo <- rbind(coo,coord.row) if (lab.ind){ labe <- rownames(coord.row) } else labe <- rep("",nrow(coord.row)) coll <- rep(col.row,nrow(coord.row)) ipch <- c(ipch,rep(20,nrow(coord.row))) fonte <- c(fonte,rep(1,nrow(coord.row))) if (!is.null(selection)){ if (is.numeric(unselect)) coll[!(seq_len(length(coll))%in%selection)] <- rgb(t(col2rgb(coll[!(seq_len(length(coll))%in%selection)])),alpha=255*(1-unselect),maxColorValue=255) else coll[!(seq_len(length(coll))%in%selection)] <- unselect labe[!(seq_len(length(coll))%in%selection)] <- "" } } if (is.na(test.invisible[2])) { coo <- rbind(coo,coord.col) if (lab.col){ labe2 <- rownames(coord.col) } else labe2 <- rep("",nrow(coord.col)) if (length(col.col)==1) coll2 <- rep(col.col,nrow(coord.col)) else coll2 <- col.col ipch <- c(ipch,rep(17,nrow(coord.col))) fonte <- c(fonte,rep(1,nrow(coord.col))) if (!is.null(selectionC)){ if (is.numeric(unselect)) coll2[!(seq_len(length(coll2))%in%selectionC)] <- rgb(t(col2rgb(coll2[!(seq_len(length(coll2))%in%selectionC)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!(seq_len(length(coll2))%in%selectionC)] <- unselect labe2[!(seq_len(length(coll2))%in%selectionC)] <- "" } coll <- c(coll,coll2) labe <- c(labe,labe2) } if (!is.null(res.mfa$freq.sup) & is.na(test.invisible[4])) { coo <- rbind(coo,coord.col.sup) if (lab.col){ labe2 <- rownames(coord.col.sup) } else labe2 <- rep("",nrow(coord.col.sup)) if (length(col.col.sup)==1) coll2 <- rep(col.col.sup,nrow(coord.col.sup)) else coll2 <- col.col.sup ipch <- c(ipch,rep(17,nrow(coord.col.sup))) fonte <- c(fonte,rep(1,nrow(coord.col.sup))) if (!is.null(selectionCS)){ if (is.numeric(unselect)) coll2[!(seq_len(length(coll2))%in%selectionCS)] <- rgb(t(col2rgb(coll2[!(seq_len(length(coll2))%in%selectionCS)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!(seq_len(length(coll2))%in%selectionCS)] <- unselect labe2[!(seq_len(length(coll2))%in%selectionCS)] <- "" } coll <- c(coll,coll2) labe <- c(labe,labe2) } if (!is.null(res.mfa$ind.sup) & is.na(test.invisible[3])) { coo <- rbind(coo,coord.row.sup) if (lab.ind){ labe2 <- rownames(coord.row.sup) } else labe2 <- rep("",nrow(coord.row.sup)) coll2 <- rep(col.row.sup,nrow(coord.row.sup)) ipch <- c(ipch,rep(17,nrow(coord.row.sup))) fonte <- c(fonte,rep(1,nrow(coord.row.sup))) if (!is.null(selectionS)){ if (is.numeric(unselect)) coll2[!(seq_len(length(coll2))%in%selectionS)] <- rgb(t(col2rgb(coll2[!(seq_len(length(coll2))%in%selectionS)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!(seq_len(length(coll2))%in%selectionS)] <- unselect labe2[!(seq_len(length(coll2))%in%selectionS)] <- "" } if (length(select)==1){ if (grepl("contrib",select)){ if (is.numeric(unselect)) coll2[seq_len(length(coll2))] <- rgb(t(col2rgb(coll2[seq_len(length(coll2))])),alpha=255*(1-unselect),maxColorValue=255) else coll2[seq_len(length(coll2))] <- unselect labe2[seq_len(length(coll2))] <- "" }} coll <- c(coll,coll2) labe <- c(labe,labe2) } if(graph.type=="classic"){ if (shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) if (any(labe!="")){ if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) if (autoLab ==TRUE) autoLab(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],shadotext=shadowtext,...) if (autoLab ==FALSE) text(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],pos=3,...) } if (!shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) } if (habillage == "group"){ if (is.na(test.invisible[1])) L <- list(x="topleft", legend = c("Individuals",rownames(res.mfa$group$Lg[-nrow(res.mfa$group$Lg),,drop=FALSE ])[type == "f"]), text.col = c(1,col.hab[type == "f"]), cex = 0.8*par("cex")) else L <- list(x="topleft", legend = rownames(res.mfa$group$Lg[-nrow(res.mfa$group$Lg),,drop=FALSE ])[type == "f"], text.col = col.hab[type == "f"], cex = 0.8*par("cex")) L <- modifyList(L, legend) if(graph.type == "classic") do.call(graphics::legend, L) } if(graph.type == "ggplot"){ if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) df_freq <- data.frame(labe,coo,coll,ipch,fonte) # df_freq[,4] <- as.factor(df_freq[,4]) if(habillage == "group"){ gg_graph <- ggplot() + coord_fixed(ratio = 1) + geom_point(aes(x=df_freq[,2], y=df_freq[,3]),color=palette[df_freq[,4]], shape = ggoptions_default$point.shape, size = ggoptions_default$size/3) + xlab(lab.x) + ylab(lab.y) + xlim(xlim) + ylim(ylim) + geom_hline(yintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_vline(xintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], "")) + scale_color_manual(values = palette[L$text.col[order(L$text.col)]], labels = L$legend[order(L$text.col)]) + theme_light() + ggoptions_default$theme + ggtitle(titre) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_freq[,2], y=df_freq[,3], label=df_freq[,1]), size = ggoptions_default$size, color = palette[df_freq[,4]]) else{text <- geom_text(aes(x=df_freq[,2], y=df_freq[,3], label=df_freq[,1]), size = ggoptions_default$size, color = palette[df_freq[,4]], hjust = (-sign(df_freq[,2])+1)/2, vjust = -sign(df_freq[,3])*0.75+0.25)} } if(habillage == "none"){ gg_graph <- ggplot() + coord_fixed(ratio = 1) + geom_point(aes(x=df_freq[,2], y=df_freq[,3]), color=palette[df_freq[,4]], shape = ggoptions_default$point.shape, size = ggoptions_default$size/3) + xlab(lab.x) + ylab(lab.y) + xlim(xlim) + ylim(ylim) + geom_hline(yintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_vline(xintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + theme_light() + ggoptions_default$theme + ggtitle(titre) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_freq[,2], y=df_freq[,3], label=df_freq[,1]), size = ggoptions_default$size, color = palette[df_freq[,4]]) else{text <- geom_text(aes(x=df_freq[,2], y=df_freq[,3], label=df_freq[,1]), size = ggoptions_default$size, color = palette[df_freq[,4]], hjust = (-sign(df_freq[,2])+1)/2, vjust = -sign(df_freq[,3])*0.75+0.25)} } gg_graph <- gg_graph + theme + text } } if (choix == "ind") { test.invisible <- vector(length = 3) if (!is.null(invisible)) { test.invisible[1] <- match("ind", invisible) test.invisible[2] <- match("ind.sup", invisible) test.invisible[3] <- match("quali", invisible) test.invisible[4] <- match("quali.sup", invisible) } else test.invisible <- rep(NA, 3) nb.ind.actif <- nrow(res.mfa$ind$coord) nb.ind.illu <- 0 if (!is.null(res.mfa$ind.sup)) nb.ind.illu <- nrow(res.mfa$ind.sup$coord) nb.ind <- nb.ind.actif + nb.ind.illu coord.ind <- res.mfa$ind$coord[, axes, drop = FALSE] coord.ind.partiel <- res.mfa$ind$coord.partiel[, axes, drop = FALSE] coord.ind.sup <- NULL if (!is.null(res.mfa$ind.sup)) { coord.ind.sup <- res.mfa$ind.sup$coord[, axes, drop = FALSE] coord.ind.partiel.sup <- res.mfa$ind.sup$coord.partiel[, axes, drop = FALSE] } coord_quali <- coord_quali_sup <- coord_quali.partiel <- coord_quali_sup.partiel <- NULL if (!is.null(res.mfa["quali.var"]$quali.var)) { coord_quali <- res.mfa$quali.var$coord[, axes, drop = FALSE] coord_quali.partiel <- res.mfa$quali.var$coord.partiel[, axes, drop = FALSE] } if (!is.null(res.mfa["quali.var.sup"])) { coord_quali_sup <- res.mfa$quali.var.sup$coord[, axes, drop = FALSE] coord_quali.partiel.sup <- res.mfa$quali.var.sup$coord.partiel[, axes, drop = FALSE] } group.ind.actif <- group.ind.sup <- group.quali <- group.quali.sup <- NULL if (!is.null(partial)) { if (length(partial) == 1) { if (partial == "all") { group.ind.actif <- seq_len(nrow(coord.ind)) if (!is.null(res.mfa$ind.sup)) group.ind.sup <- seq_len(nrow(coord.ind.sup)) if (!is.null(res.mfa["quali.var"]$quali.var)) group.quali <- seq_len(nrow(coord_quali)) if (!is.null(res.mfa["quali.var.sup"]$quali.var.sup)) group.quali.sup <- seq_len(nrow(coord_quali_sup)) } else { for (i in seq_len(length(partial))) { if (partial[i] %in% rownames(coord.ind)) group.ind.actif <- c(group.ind.actif, match(partial[i], rownames(coord.ind))) if (partial[i] %in% rownames(coord.ind.sup)) group.ind.sup <- c(group.ind.sup, match(partial[i], rownames(coord.ind.sup))) if (partial[i] %in% rownames(coord_quali)) group.quali <- c(group.quali, match(partial[i], rownames(coord_quali))) if (partial[i] %in% rownames(coord_quali_sup)) group.quali.sup <- c(group.quali.sup, match(partial[i], rownames(coord_quali_sup))) } } } else { for (i in seq_len(length(partial))) { if (partial[i] %in% rownames(coord.ind)) group.ind.actif <- c(group.ind.actif, match(partial[i], rownames(coord.ind))) if (partial[i] %in% rownames(coord.ind.sup)) group.ind.sup <- c(group.ind.sup, match(partial[i], rownames(coord.ind.sup))) if (partial[i] %in% rownames(coord_quali)) group.quali <- c(group.quali, match(partial[i], rownames(coord_quali))) if (partial[i] %in% rownames(coord_quali_sup)) group.quali.sup <- c(group.quali.sup, match(partial[i], rownames(coord_quali_sup))) } } } if (!is.null(ellipse)) { coord.ellipse <- ellipse$res npoint.ellipse <- ellipse$call } else coord.ellipse <- NULL if (!is.null(ellipse.par)) { coord.ellipse.par <- ellipse.par$res npoint.ellipse.par <- ellipse.par$call } else coord.ellipse.par <- NULL nullxlimylim <- (is.null(xlim) & is.null(ylim)) if (is.null(xlim)) { xmin <- xmax <- 0 if (is.na(test.invisible[1])) xmin <- min(xmin, coord.ind[, 1]) if (is.na(test.invisible[1])) xmax <- max(xmax, coord.ind[, 1]) if (!is.null(res.mfa$ind.sup) & is.na(test.invisible[2])) xmin <- min(xmin, coord.ind.sup[, 1]) if (!is.null(res.mfa$ind.sup) & is.na(test.invisible[2])) xmax <- max(xmax, coord.ind.sup[, 1]) if (is.na(test.invisible[1])) xmin <- min(xmin, coord.ind.partiel[unlist(lapply(group.ind.actif, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 1]) if (is.na(test.invisible[1])) xmax <- max(xmax, coord.ind.partiel[unlist(lapply(group.ind.actif, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 1]) if (!is.null(res.mfa$ind.sup) & is.na(test.invisible[2])) xmin <- min(xmin, coord.ind.partiel.sup[unlist(lapply(group.ind.sup, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 1]) if (!is.null(res.mfa$ind.sup) & is.na(test.invisible[2])) xmax <- max(xmax, coord.ind.partiel.sup[unlist(lapply(group.ind.sup, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 1]) if (!is.null(res.mfa["quali.var"]$quali.var) & is.na(test.invisible[3])) xmin <- min(xmin, coord_quali[, 1]) if (!is.null(res.mfa["quali.var"]$quali.var) & is.na(test.invisible[3])) xmax <- max(xmax, coord_quali[, 1]) if (!is.null(res.mfa["quali.var"]$quali.var) & is.na(test.invisible[3])) xmin <- min(xmin, coord_quali.partiel[unlist(lapply(group.quali, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 1]) if (!is.null(res.mfa["quali.var"]$quali.var) & is.na(test.invisible[3])) xmax <- max(xmax, coord_quali.partiel[unlist(lapply(group.quali, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 1]) if (!is.null(res.mfa$quali.var.sup) & is.na(test.invisible[4])) xmin <- min(xmin, coord_quali[, 1], coord_quali_sup[,1]) if (!is.null(res.mfa$quali.var.sup) & is.na(test.invisible[4])) xmax <- max(xmax, coord_quali[, 1], coord_quali_sup[, 1]) if (!is.null(res.mfa$quali.var.sup) & is.na(test.invisible[4])) xmin <- min(xmin, coord_quali.partiel.sup[unlist(lapply(group.quali.sup, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 1]) if (!is.null(res.mfa$quali.var.sup) & is.na(test.invisible[4])) xmax <- max(xmax, coord_quali.partiel.sup[unlist(lapply(group.quali.sup, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 1]) # xlim <- c(xmin, xmax) * 1.1 xlim <- c(xmin, xmax) xlim <- (xlim-mean(xlim))*1.1 + mean(xlim) } if (is.null(ylim)) { ymin <- ymax <- 0 if (is.na(test.invisible[1])) ymin <- min(ymin, coord.ind[, 2]) if (is.na(test.invisible[1])) ymax <- max(ymax, coord.ind[, 2]) if (!is.null(res.mfa$ind.sup) & is.na(test.invisible[2])) ymin <- min(ymin, coord.ind.sup[, 2]) if (!is.null(res.mfa$ind.sup) & is.na(test.invisible[2])) ymax <- max(ymax, coord.ind.sup[, 2]) if (is.na(test.invisible[1])) ymin <- min(ymin, coord.ind.partiel[unlist(lapply(group.ind.actif, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 2]) if (is.na(test.invisible[1])) ymax <- max(ymax, coord.ind.partiel[unlist(lapply(group.ind.actif, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 2]) if (!is.null(res.mfa$ind.sup) & is.na(test.invisible[2])) ymin <- min(ymin, coord.ind.partiel.sup[unlist(lapply(group.ind.sup, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 2]) if (!is.null(res.mfa$ind.sup) & is.na(test.invisible[2])) ymax <- max(ymax, coord.ind.partiel.sup[unlist(lapply(group.ind.sup, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 2]) if (!is.null(res.mfa["quali.var"]$quali.var) & is.na(test.invisible[3])) ymin <- min(ymin, coord_quali[, 2]) if (!is.null(res.mfa["quali.var"]$quali.var) & is.na(test.invisible[3])) ymax <- max(ymax, coord_quali[, 2]) if (!is.null(res.mfa["quali.var"]$quali.var) & is.na(test.invisible[3])) ymin <- min(ymin, coord_quali.partiel[unlist(lapply(group.quali, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 2]) if (!is.null(res.mfa["quali.var"]$quali.var) & is.na(test.invisible[3])) ymax <- max(ymax, coord_quali.partiel[unlist(lapply(group.quali, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 2]) if (!is.null(res.mfa$quali.var.sup) & is.na(test.invisible[4])) ymin <- min(ymin, coord_quali[, 1], coord_quali_sup[, 2]) if (!is.null(res.mfa$quali.var.sup) & is.na(test.invisible[4])) ymax <- max(ymax, coord_quali[, 1], coord_quali_sup[, 2]) if (!is.null(res.mfa$quali.var.sup) & is.na(test.invisible[4])) ymin <- min(ymin, coord_quali.partiel.sup[unlist(lapply(group.quali.sup, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 2]) if (!is.null(res.mfa$quali.var.sup) & is.na(test.invisible[4])) ymax <- max(ymax, coord_quali.partiel.sup[unlist(lapply(group.quali.sup, function(k) seq(nbre.grpe * (k - 1) + 1, length = nbre.grpe))), 2]) ylim <- c(ymin, ymax) ylim <- (ylim-mean(ylim))*1.1 + mean(ylim) } if (nullxlimylim & diff(xlim)/diff(ylim)>3) ylim <- (ylim-mean(ylim))*diff(xlim)/diff(ylim)/3 + mean(ylim) if (nullxlimylim & diff(xlim)/diff(ylim)<1/2) xlim <- (xlim-mean(xlim))*diff(ylim)/diff(xlim)/2 + mean(xlim) if(graph.type=="ggplot") nudge_y <- (ylim[2] - ylim[1])*0.03 selection <- NULL if (!is.null(select)) { if (mode(select)=="numeric") selection <- select else { if (sum(rownames(res.mfa$ind$coord)%in%select)!=0) selection <- which(rownames(res.mfa$ind$coord)%in%select) else { if (grepl("contrib",select)) selection <- (rev(order(res.mfa$ind$contrib[,axes[1],drop=FALSE]*res.mfa$eig[axes[1],1]+res.mfa$ind$contrib[,axes[2],drop=FALSE]*res.mfa$eig[axes[2],1])))[1:min(nrow(res.mfa$ind$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] if (grepl("dist",select)) selection <- (rev(order(res.mfa$ind$dist)))[1:min(nrow(res.mfa$ind$coord),sum(as.integer(unlist(strsplit(select,"dist"))),na.rm=T))] if (grepl("coord",select)) selection <- (rev(order(apply(res.mfa$ind$coord[,axes]^2,1,sum))))[1:min(nrow(res.mfa$ind$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select)) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selection <- (rev(order(apply(res.mfa$ind$cos2[,axes],1,sum))))[1:min(nrow(res.mfa$ind$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selection <- which(apply(res.mfa$ind$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selection <- select } } } selectionS <- NULL if ((!is.null(select))&(!is.null(res.mfa$ind.sup$coord))&is.na(test.invisible[2])) { if (mode(select)=="numeric") selectionS <- select else { if (sum(rownames(res.mfa$ind$coord)%in%select)+sum(rownames(res.mfa$ind.sup$coord)%in%select)!=0) selectionS <- which(rownames(res.mfa$ind.sup$coord)%in%select) else { if (grepl("dist",select[1])) selectionS <- (rev(order(res.mfa$ind.sup$dist)))[1:min(nrow(res.mfa$ind.sup$coord),sum(as.integer(unlist(strsplit(select,"dist"))),na.rm=T))] if (grepl("coord",select[1])) selectionS <- (rev(order(apply(res.mfa$ind.sup$coord[,axes]^2,1,sum))))[1:min(nrow(res.mfa$ind.sup$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select[1])) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selectionS <- (rev(order(apply(res.mfa$ind.sup$cos2[,axes,drop=FALSE],1,sum))))[1:min(nrow(res.mfa$ind.sup$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selectionS <- which(apply(res.mfa$ind.sup$cos2[,axes,drop=FALSE],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selectionS <- select } } } if (habillage == "none"){ col.ind <- rep(1, nb.ind.actif*(nbre.grpe + 1)) if (!is.null(res.mfa$ind.sup)) col.ind.sup <- rep(4, (nb.ind - nb.ind.actif)*(nbre.grpe + 1)) # if (!is.null(res.mfa[["quali.var"]])) col.quali <- rep(2, (nbre.grpe + 1)*sum(res.mfa$call$group.mod[res.mfa$call$nature.group=="quali"])) # if (!is.null(res.mfa$quali.var.sup)) col.quali.sup <- rep("darkred", (nbre.grpe + 1)*sum(res.mfa$call$group.mod[res.mfa$call$nature.group=="quali.sup"])) if (!is.null(res.mfa[["quali.var"]])) col.quali <- rep(2, (nbre.grpe + 1)*sum(res.mfa$call$group.mod[which(res.mfa$call$nature.group=="quali"|res.mfa$call$nature.group=="mixed")])-sum(sapply(res.mfa$call$list.type.var[which(res.mfa$call$nature.group=="quali"|res.mfa$call$nature.group=="mixed")], function(x) sum(x%in%"quanti")))) if (!is.null(res.mfa$quali.var.sup)) col.quali.sup <- rep("darkred", (nbre.grpe + 1)*sum(res.mfa$call$group.mod[which(res.mfa$call$nature.group=="quali.sup"|res.mfa$call$nature.group=="mixed.sup")])-sum(sapply(res.mfa$call$list.type.var[which(res.mfa$call$nature.group=="quali.sup"|res.mfa$call$nature.group=="mixed.sup")], function(x) sum(x%in%"quanti.sup")))) if (!is.null(ellipse)) col.ellipse <- rep(25, nb.ind.actif) if (!is.null(ellipse.par)) col.ellipse.par <- rep(2, nb.ind.actif*(nbre.grpe + 1)) } if (habillage == "group") { if (is.null(col.hab) | length(col.hab) != (nbre.grpe)) col.hab <- 2:(nbre.grpe + 1) col.ind <- c(rep(1, nb.ind.actif), rep(col.hab, nb.ind.actif)) if (!is.null(res.mfa$ind.sup)) col.ind.sup <- c(rep(1, nb.ind - nb.ind.actif), rep(col.hab, nb.ind - nb.ind.actif)) # if (!is.null(res.mfa[["quali.var"]])) col.quali <- c(rep(1, sum(res.mfa$call$group.mod[res.mfa$call$nature.group=="quali"])), rep(col.hab, sum(res.mfa$call$group.mod[res.mfa$call$nature.group=="quali"]))) # if (!is.null(res.mfa$quali.var.sup)) col.quali.sup <- c(rep(1, sum(res.mfa$call$group.mod[res.mfa$call$nature.group=="quali.sup"])), rep(col.hab, sum(res.mfa$call$group.mod[res.mfa$call$nature.group=="quali.sup"]))) if (!is.null(res.mfa[["quali.var"]])) col.quali <- c(rep(1, sum(res.mfa$call$group.mod[which(res.mfa$call$nature.group=="quali"|res.mfa$call$nature.group=="mixed")])-sum(sapply(res.mfa$call$list.type.var[which(res.mfa$call$nature.group=="quali"|res.mfa$call$nature.group=="mixed")], function(x) sum(x%in%"quanti")))), rep(col.hab, sum(res.mfa$call$group.mod[which(res.mfa$call$nature.group=="quali"|res.mfa$call$nature.group=="mixed")])-sum(sapply(res.mfa$call$list.type.var[which(res.mfa$call$nature.group=="quali"|res.mfa$call$nature.group=="mixed")], function(x) sum(x%in%"quanti"))))) if (!is.null(res.mfa$quali.var.sup)) col.quali.sup <- c(rep(1, sum(res.mfa$call$group.mod[which(res.mfa$call$nature.group=="quali.sup"|res.mfa$call$nature.group=="mixed.sup")])-sum(sapply(res.mfa$call$list.type.var[which(res.mfa$call$nature.group=="quali.sup"|res.mfa$call$nature.group=="mixed.sup")], function(x) sum(x%in%"quanti.sup")))), rep(col.hab, sum(res.mfa$call$group.mod[which(res.mfa$call$nature.group=="quali.sup"|res.mfa$call$nature.group=="mixed.sup")])-sum(sapply(res.mfa$call$list.type.var[which(res.mfa$call$nature.group=="quali.sup"|res.mfa$call$nature.group=="mixed.sup")], function(x) sum(x%in%"quanti.sup"))))) if (!is.null(ellipse)) col.ellipse <- rep(1, nb.ind.actif) if (!is.null(ellipse.par)) col.ellipse.par <- rep(col.hab, nb.ind.actif) } if (habillage == "ind") { if (is.null(col.hab) | length(col.hab) != nb.ind) col.hab <- 1:nb.ind col.ind <- c(col.hab[1:nb.ind.actif], rep(col.hab[1:nb.ind.actif], each = nbre.grpe)) if (!is.null(res.mfa$ind.sup)) col.ind.sup <- c(col.hab[(nb.ind.actif + 1):nb.ind], rep(col.hab[(nb.ind.actif + 1):nb.ind], each = nbre.grpe)) # if (length(group[type == "n"]) != 0) col.quali <- col.quali.sup <- rep("black", (1 + nbre.grpe) * sum(res.mfa$call$group.mod[type == "n"])) if (!is.null(res.mfa[["quali.var"]])) col.quali <- rep("black", (1 + nbre.grpe)*sum(res.mfa$call$group.mod[which(res.mfa$call$nature.group=="quali"|res.mfa$call$nature.group=="mixed")])-sum(sapply(res.mfa$call$list.type.var[which(res.mfa$call$nature.group=="quali"|res.mfa$call$nature.group=="mixed")], function(x) sum(x%in%"quanti")))) if (!is.null(res.mfa$quali.var.sup)) col.quali.sup <- rep("black", (1 + nbre.grpe) * sum(res.mfa$call$group.mod[which(res.mfa$call$nature.group=="quali.sup"|res.mfa$call$nature.group=="mixed.sup")])-sum(sapply(res.mfa$call$list.type.var[which(res.mfa$call$nature.group=="quali.sup"|res.mfa$call$nature.group=="mixed.sup")], function(x) sum(x%in%"quanti.sup")))) if (!is.null(ellipse)) col.ellipse <- col.hab[1:nb.ind.actif] if (!is.null(ellipse.par)) col.ellipse.par <- rep(col.hab[1:nb.ind.actif], each = nbre.grpe) } if ((habillage != "none") & (habillage != "ind") & (habillage != "group")) { group.act <- seq_len(length(group)) if (!is.null(num.group.sup)) group.act <- group.act[-num.group.sup] nbre.modalite <- nbre.modalite.sup <- NULL liste.quali <- liste.quali.sup <- NULL for (i in group.act) { if (type[i] == "n") { for (k in seq_len(ncol(res.mfa$separate.analyses[[i]]$call$X))) nbre.modalite <- c(nbre.modalite, nlevels(res.mfa$separate.analyses[[i]]$call$X[, k])) if (i == 1) liste.quali <- c(liste.quali, colnames(res.mfa$call$X[1:group[1]])) else liste.quali <- c(liste.quali, colnames(res.mfa$call$X[(sum(group[1:(i - 1)]) + 1):sum(group[1:i])])) } if (type[i] == "m") { for (k in which(!sapply(res.mfa$separate.analyses[[i]]$call$X,is.numeric))) nbre.modalite <- c(nbre.modalite, nlevels(res.mfa$separate.analyses[[i]]$call$X[, k])) liste.quali <- c(liste.quali, colnames(res.mfa$call$X)[which(!sapply(res.mfa$separate.analyses[[i]]$call$X,is.numeric))]) } } if (!is.null(num.group.sup)) { for (i in num.group.sup) { if (type[i] == "n") { if (i == 1) liste.quali.sup <- c(liste.quali.sup, colnames(res.mfa$call$X[1:group[1]])) else liste.quali.sup <- c(liste.quali.sup, colnames(res.mfa$call$X[(sum(group[1:(i - 1)]) + 1):sum(group[1:i])])) for (k in seq_len(ncol(res.mfa$separate.analyses[[i]]$call$X))) nbre.modalite.sup <- c(nbre.modalite.sup, nlevels(res.mfa$separate.analyses[[i]]$call$X[, k])) } if (type[i] == "m") { for (k in which(!sapply(res.mfa$separate.analyses[[i]]$call$X,is.numeric))) nbre.modalite.sup <- c(nbre.modalite.sup, nlevels(res.mfa$separate.analyses[[i]]$call$X[, k])) liste.quali.sup <- c(liste.quali.sup, colnames(res.mfa$call$X)[which(!sapply(res.mfa$separate.analyses[[i]]$call$X,is.numeric))]) } } } if (is.double(habillage)) nom.quali <- colnames(res.mfa$call$X)[habillage] else nom.quali <- habillage if (!(nom.quali %in% c(liste.quali,liste.quali.sup))) stop("The variable ", habillage, " is not qualitative") modalite <- levels(as.factor(res.mfa$call$X[, nom.quali])) col.ind <- as.numeric(as.factor(res.mfa$call$X[, nom.quali])) if (is.null(col.hab) | length(col.hab) != length(modalite)) col.hab <- 2:(1 + length(modalite)) col.ind <- col.hab[col.ind] if (!is.null(res.mfa$call$ind.sup)) { col.ind.sup <- col.ind[res.mfa$call$ind.sup] col.ind <- col.ind[-res.mfa$call$ind.sup] col.ind.sup <- c(col.ind.sup, rep(col.ind.sup, each = nbre.grpe)) } col.ind <- c(col.ind, rep(col.ind, each = nbre.grpe)) col.ellipse <- col.ind[1:nb.ind.actif] col.ellipse.par <- col.ind[-c(1:nb.ind.actif)] col.quali <- rep("black", sum(res.mfa$call$group.mod[type == "n"])) if (sum(type == "m")>0) col.quali <- c(col.quali,rep("black",sum(res.mfa$call$group.mod[type == "m"])- sum(sapply(res.mfa$call$list.type.var[type=="m"],function(x) sum("quanti"==x)))- sum(sapply(res.mfa$call$list.type.var[type=="m"],function(x) sum("quanti.sup"==x))))) if (nom.quali %in% liste.quali){ indice.inf <- sum(nbre.modalite[0:(match(nom.quali, liste.quali) - 1)]) + 1 indice.sup <- indice.inf + length(modalite) - 1 if (length(group[type == "n"])+length(group[type == "m"]) > 0) { for (i in seq_len(length(liste.quali))) { if (liste.quali[i] == nom.quali) col.quali[indice.inf:indice.sup] <- col.hab } } } col.quali <- c(col.quali, rep(col.quali, each = nbre.grpe)) col.quali.sup <- rep("black", sum(res.mfa$call$group.mod[(type == "n")%in%num.group.sup])) if (sum((type == "m")%in%num.group.sup)>0) col.quali.sup <- c(col.quali.sup,rep("black", sum(res.mfa$call$group.mod[(type == "m")%in%num.group.sup])- sum(sapply(res.mfa$call$list.type.var[(type=="m")%in%num.group.sup],function(x) sum("quanti.sup"==x))))) if (nom.quali %in% liste.quali.sup){ indice.inf.sup <- sum(nbre.modalite.sup[0:(match(nom.quali, liste.quali.sup) - 1)]) + 1 indice.sup.sup <- indice.inf.sup + length(modalite) - 1 if (length(group[type == "n"]) != 0) { for (i in seq_len(length(liste.quali.sup))) { if (liste.quali.sup[i] == nom.quali) col.quali.sup[indice.inf.sup:indice.sup.sup] <- col.hab } } } col.quali.sup <- c(col.quali.sup, rep(col.quali.sup, each = nbre.grpe)) } if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new(width = min(14, max(8, 8 * diff(xlim)/diff(ylim))), height = 8) if (is.null(title)) title <- "Individual factor map" if(graph.type=="classic"){ plot(0, 0, main = title, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp = 1, ...) abline(v = 0, lty = 2, ...) abline(h = 0, lty = 2, ...) } coo <- labe <- coll <- ipch <- fonte <- NULL if(graph.type=="ggplot"){ text_ind <- text_ind.sup <- text_quali <- text_quali.sup <- NULL if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) } if(graph.type=="ggplot"){ gg_graph <- ggplot() + coord_fixed(ratio = 1) + xlab(lab.x) + ylab(lab.y) + xlim(xlim) + ylim(ylim) + geom_hline(yintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_vline(xintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + theme_light() + ggoptions_default$theme + ggtitle(title) } if (is.na(test.invisible[1])) { coo <- rbind(coo,coord.ind) if (lab.ind){ labe <- c(labe,rownames(coord.ind)) } else labe <- c(labe,rep("",nrow(coord.ind))) coll <- c(coll,col.ind[1:nb.ind.actif]) coll_num <- coll ## useful for the palette with hab = a variable, in linux ! ipch <- c(ipch,rep(20,nrow(coord.ind))) fonte <- c(fonte,rep(1,nrow(coord.ind))) if (!is.null(selection)){ if (is.numeric(unselect)) coll[!(seq_len(length(coll))%in%selection)] <- rgb(t(col2rgb(coll[!(seq_len(length(coll))%in%selection)])),alpha=255*(1-unselect),maxColorValue=255) else coll[!(seq_len(length(coll))%in%selection)] <- unselect coll[(seq_len(length(coll))%in%selection)] <- rgb(t(col2rgb(coll[(seq_len(length(coll))%in%selection)])),maxColorValue=255) labe[!(seq_len(length(coll))%in%selection)] <- "" } transparency_ind <- col2rgb(coll,alpha=TRUE)[4,]/255 coll_bis <- rgb(t(col2rgb(coll)),maxColorValue=255) if(graph.type == "ggplot"){ df_ind <- cbind.data.frame(labe, coord.ind, coll, ipch, fonte,coll_bis) df_ind[,5][which(df_ind[,5] == 20)] <- 19 if(habillage %in% c("none","ind","group")){ gg_graph <- gg_graph + geom_point(aes(x=df_ind[,2], y=df_ind[,3]), colour= df_ind[,7],alpha = transparency_ind, shape = df_ind[,5],size = ggoptions_default$size/3) if(autoLab) text_ind <- ggrepel::geom_text_repel(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1]), size = ggoptions_default$size, colour = df_ind[,7], fontface = df_ind[,6]) else{text_ind <- geom_text(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1]), size = ggoptions_default$size, colour = df_ind[,7], hjust = (-sign(df_ind[,2])+1)/2, vjust = -sign(df_ind[,3])*0.75+0.25, fontface = df_ind[,6])} } else{ transparency_ind <- ifelse(rownames(df_ind) %in% df_ind[,1], 1, 1-unselect) if(class(habillage) %in% c("numeric","integer")) habillage <- colnames(res.mfa$call$X)[habillage] if(habillage %in% colnames(res.mfa$call$X)){ gg_graph <- gg_graph + geom_point(aes(x=df_ind[,2], y=df_ind[,3], color = res.mfa$call$X[rownames(df_ind),habillage]), shape = ggoptions_default$point.shape, size = ggoptions_default$size/3, alpha = transparency_ind) + # geom_point(aes(x=df_ind[,2], y=df_ind[,3]), color = coll_bis, shape = ggoptions_default$point.shape, size = ggoptions_default$size/3, alpha = transparency_ind) + scale_color_manual(values = palette[sort(unique(coll_num))]) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], habillage)) if (autoLab) text_ind <- ggrepel::geom_text_repel(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1], color = (res.mfa$call$X)[rownames(df_ind),habillage]), size = ggoptions_default$size, show.legend = FALSE) else{text_ind <- geom_text(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1], color = res.mfa$call$X[rownames(df_ind),habillage]), size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_ind[,2])+1)/2, vjust = -sign(df_ind[,3])*0.75+0.25)} # if (autoLab) text_ind <- ggrepel::geom_text_repel(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1]), color = coll_bis, size = ggoptions_default$size, show.legend = FALSE) # else{text_ind <- geom_text(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1]), color = coll_bis, size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_ind[,2])+1)/2, vjust = -sign(df_ind[,3])*0.75+0.25)} } } } if (!is.null(partial)){ if(graph.type == "classic"){ for (i in group.ind.actif) { if (col2rgb(coll[i],alpha=TRUE)[4]== 255){ for (j in 1:nbre.grpe) { points(coord.ind.partiel[(i - 1) * nbre.grpe + j,1],coord.ind.partiel[(i - 1) * nbre.grpe + j, 2], cex = 0.8 * par("cex"), col = col.ind[nb.ind.actif + (i - 1) * nbre.grpe + j], pch = 20) if (lab.par) text(coord.ind.partiel[(i - 1) * nbre.grpe + j, 1], y = coord.ind.partiel[(i - 1) * nbre.grpe + j, 2], labels = rownames(coord.ind.partiel)[(i - 1) * nbre.grpe + j], pos = 3, col = col.ind[nb.ind.actif + (i - 1) * nbre.grpe + j],...) if (chrono) { if (j > 1) lines(c(coord.ind.partiel[(i - 1) * nbre.grpe + (j - 1), 1], coord.ind.partiel[(i - 1) * nbre.grpe + j, 1]), c(coord.ind.partiel[(i - 1) * nbre.grpe + (j - 1), 2], coord.ind.partiel[(i - 1) * nbre.grpe + j, 2]), col = col.ind[i],...) } else lines(c(coord.ind[i, 1], coord.ind.partiel[(i - 1) * nbre.grpe + j, 1]), c(coord.ind[i, 2],coord.ind.partiel[(i - 1) * nbre.grpe + j, 2]), col = col.ind[nb.ind.actif + (i - 1) * nbre.grpe + j], lty = j,...) } } } } else { liste_ind_partiel <- rep(nbre.grpe*(group.ind.actif-1),each=nbre.grpe) + rep(1:nbre.grpe,length(group.ind.actif)) df_ind_partial <- cbind.data.frame(matrix(rep(cbind(coord.ind[group.ind.actif,,drop=FALSE],col2rgb(coll[group.ind.actif],alpha=TRUE)[4,]),each=nbre.grpe),ncol=3),x=coord.ind.partiel[liste_ind_partiel,1],y=coord.ind.partiel[liste_ind_partiel,2], coul = col.ind[nb.ind.actif+(1:(length(group.ind.actif)*nbre.grpe))], group=rep(1:nbre.grpe,length(group.ind.actif))) colnames(df_ind_partial)[1:3] <- c("xfin","yfin","sel") df_ind_partial <- df_ind_partial[df_ind_partial[,"sel"]==255,] text <- NULL if(lab.par){ if (autoLab) text <- ggrepel::geom_text_repel(data=df_ind_partial, aes(x=x, y = y, label = rownames(df_ind_partial), color = as.factor(coul))) else text <- geom_text(aes_string(data=df_ind_partial, x=x, y = y, label = rownames(df_ind_partial), color = coul)) } if (habillage=="group") gg_graph <- gg_graph + geom_point(data=df_ind_partial, aes(x=x, y = y, color = as.factor(coul)), shape = 19, size = ggoptions_default$size/3) + text else gg_graph <- gg_graph + geom_point(data=df_ind_partial, aes(x=x, y = y), col=palette[df_ind_partial[,"coul"]], shape = 19, size = ggoptions_default$size/3) + text if (!chrono) { if (habillage=="group") gg_graph <- gg_graph + geom_segment(aes(x = x, y = y, xend = xfin, yend = yfin, col=as.factor(coul)), lty=df_ind_partial$coul, data = df_ind_partial) else gg_graph <- gg_graph + geom_segment(data = df_ind_partial, aes(x = x, y = y, xend = xfin, yend = yfin), col=palette[df_ind_partial[,"coul"]], lty=df_ind_partial$group) } else { for (i in group.ind.actif) { if (col2rgb(coll[i],alpha=TRUE)[4]== 255){ for (j in 2:nbre.grpe) { gg_graph <- gg_graph + geom_line(aes_string(x=c(coord.ind.partiel[(i - 1) * nbre.grpe + (j - 1), 1], coord.ind.partiel[(i - 1) * nbre.grpe + j, 1]), y = c(coord.ind.partiel[(i - 1) * nbre.grpe + (j - 1), 2], coord.ind.partiel[(i - 1) * nbre.grpe + j, 2])), color = col.ind[i]) }}} } } } } if (!is.null(res.mfa$ind.sup) & is.na(test.invisible[2])) { coo <- rbind(coo,coord.ind.sup) if (lab.ind){ labe2 <- rownames(coord.ind.sup) } else labe2 <- rep("",nrow(coord.ind.sup)) coll2 <- col.ind.sup[1:(nb.ind - nb.ind.actif)] ipch2 <- rep(21,nrow(coord.ind.sup)) fonte2 <- rep(3,nrow(coord.ind.sup)) labe <- c(labe,labe2) coll <- c(coll,coll2) ipch <- c(ipch,ipch2) fonte <- c(fonte,fonte2) if (!is.null(selectionS)){ if (is.numeric(unselect)) coll2[!(seq_len(length(coll2))%in%selectionS)] <- rgb(t(col2rgb(coll2[!(seq_len(length(coll2))%in%selectionS)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!(seq_len(length(coll2))%in%selectionS)] <- unselect labe2[!(seq_len(length(coll2))%in%selectionS)] <- "" } if (length(select)==1){ if (grepl("contrib",select)){ if (is.numeric(unselect)) coll2[seq_len(length(coll2))] <- rgb(t(col2rgb(coll2[seq_len(length(coll2))])),alpha=255*(1-unselect),maxColorValue=255) else coll2[seq_len(length(coll2))] <- unselect labe2[seq_len(length(coll2))] <- "" }} if (graph.type=="ggplot"){ transparency_ind <- col2rgb(coll2,alpha=TRUE)[4,]/255 coll_bis <- rgb(t(col2rgb(coll2)),maxColorValue=255) df_ind.sup <- data.frame(labe2, coord.ind.sup, coll2, rep(21,nrow(coord.ind.sup)), rep(3,nrow(coord.ind.sup)),coll_bis) gg_graph <- gg_graph + geom_point(aes(x=df_ind.sup[,2], y=df_ind.sup[,3]), color= df_ind.sup[,7], alpha = transparency_ind, shape = df_ind.sup[,5],size=ggoptions_default$size/3) if(autoLab) text_ind.sup <- ggrepel::geom_text_repel(aes(x=df_ind.sup[,2], y=df_ind.sup[,3], label=df_ind.sup[,1]), size = ggoptions_default$size, color = df_ind.sup[,7], fontface = df_ind.sup[,6]) else{text_ind.sup <- geom_text(aes(x=df_ind.sup[,2], y=df_ind.sup[,3], label=df_ind.sup[,1]), size = ggoptions_default$size, color = df_ind.sup[,7], hjust = (-sign(df_ind.sup[,2])+1)/2, vjust = -sign(df_ind.sup[,3])*0.75+0.25, fontface = df_ind.sup[,6])} } if (!is.null(partial)){ if(graph.type == "classic"){ for (i in group.ind.sup) { for (j in 1:nbre.grpe) { points(coord.ind.partiel.sup[(i - 1) * nbre.grpe + j, 1],coord.ind.partiel.sup[(i - 1) * nbre.grpe + j, 2], cex = 0.8 * par("cex"), col = col.ind.sup[nb.ind - nb.ind.actif + (i - 1) * nbre.grpe + j], pch = 21) if (lab.par) text(coord.ind.partiel.sup[(i - 1) * nbre.grpe + j, 1], y = coord.ind.partiel.sup[nb.ind + (i - 1) * nbre.grpe + j, 2], labels = rownames(coord.ind.partiel.sup)[(i - 1) * nbre.grpe + j], pos = 3, col = col.ind.sup[nb.ind - nb.ind.actif + (i - 1) * nbre.grpe + j],cex=par("cex")*0.8) if (chrono) { if (j > 1){ if(graph.type == "classic") lines(c(coord.ind.partiel.sup[(i - 1) * nbre.grpe + (j - 1), 1], coord.ind.partiel.sup[(i - 1) * nbre.grpe + j, 1]), c(coord.ind.partiel.sup[(i - 1) * nbre.grpe + (j - 1), 2], coord.ind.partiel.sup[(i - 1) * nbre.grpe + j, 2]), col = col.ind[nb.ind.actif + i]) }} else lines(c(coord.ind.sup[i, 1], coord.ind.partiel.sup[(i - 1) * nbre.grpe + j, 1]), c(coord.ind.sup[i, 2], coord.ind.partiel.sup[(i - 1) * nbre.grpe + j, 2]), col = col.ind.sup[nb.ind - nb.ind.actif + (i - 1) * nbre.grpe + j], lty = j) } } } else { liste_ind_sup_partiel <- rep(nbre.grpe*(group.ind.sup-1),each=nbre.grpe) + rep(1:nbre.grpe,length(group.ind.sup)) df_ind_partial_sup <- cbind.data.frame(matrix(rep(cbind(coord.ind.sup[group.ind.sup,,drop=FALSE],col2rgb(coll2[group.ind.sup],alpha=TRUE)[4,]),each=nbre.grpe),ncol=3),x=coord.ind.partiel.sup[liste_ind_sup_partiel,1],y=coord.ind.partiel.sup[liste_ind_sup_partiel,2], coul = col.ind.sup[(nb.ind - nb.ind.actif)+liste_ind_sup_partiel], group=rep(1:nbre.grpe,length(group.ind.sup)) ) colnames(df_ind_partial_sup)[1:3] <- c("xfin","yfin","sel") df_ind_partial_sup <- df_ind_partial_sup[df_ind_partial_sup[,"sel"]==255,] if (habillage=="group") gg_graph <- gg_graph + geom_point(data=df_ind_partial_sup, aes(x=x, y = y, color = as.factor(coul)), shape = 21, size = ggoptions_default$size/3) else gg_graph <- gg_graph + geom_point(data=df_ind_partial_sup, aes(x=x, y = y), color = palette[df_ind_partial_sup[,"coul"]], shape = 21, size = ggoptions_default$size/3) if (!chrono) { if (habillage=="group") gg_graph <- gg_graph + geom_segment(aes(x = x, y = y, xend = xfin, yend = yfin, col=as.factor(coul)), lty=df_ind_partial_sup$coul, data = df_ind_partial_sup) else gg_graph <- gg_graph + geom_segment(aes(x = x, y = y, xend = xfin, yend = yfin), col=palette[df_ind_partial_sup[,"coul"]], lty=df_ind_partial_sup$group, data = df_ind_partial_sup) } else { for (i in group.ind.sup) { if (col2rgb(coll[i],alpha=TRUE)[4]== 255){ for (j in 2:nbre.grpe) { gg_graph <- gg_graph + geom_line(aes_string(x=c(coord.ind.partiel.sup[(i - 1) * nbre.grpe + (j - 1), 1], coord.ind.partiel.sup[(i - 1) * nbre.grpe + j, 1]), y=c(coord.ind.partiel.sup[(i - 1) * nbre.grpe + (j - 1), 2], coord.ind.partiel.sup[(i - 1) * nbre.grpe + j, 2])), color = col.ind[nb.ind.actif + i]) }}} } } } } if (!is.null(coord_quali) & is.na(test.invisible[3])) { coo <- rbind(coo,coord_quali) if (lab.var){ labe3 <- rownames(coord_quali) } else labe3 <- rep("",nrow(coord_quali)) labe <- c(labe,labe3) coll3 <- col.quali[seq_len(nrow(coord_quali))] ipch3 <- rep(15,nrow(coord_quali)) fonte3 <- rep(2,nrow(coord_quali)) coll <- c(coll,coll3) ipch <- c(ipch,ipch3) fonte <- c(fonte,fonte3) if(graph.type == "ggplot"){ coll_bis <- rgb(t(col2rgb(col.quali[seq_len(nrow(coord_quali))])),maxColorValue=255) df_quali <- data.frame(labe3, coord_quali, col.quali[seq_len(nrow(coord_quali))], rep(15,nrow(coord_quali)), rep(2,nrow(coord_quali)),coll_bis) gg_graph <- gg_graph + geom_point(aes(x=df_quali[,2], y=df_quali[,3]), color= df_quali[,7], shape = df_quali[,5],size=ggoptions_default$size/3) if(autoLab) text_quali <- ggrepel::geom_text_repel(aes(x=df_quali[,2], y=df_quali[,3], label=df_quali[,1]), size = ggoptions_default$size, color = df_quali[,7], fontface = df_quali[,6]) else{text_quali <- geom_text(aes(x=df_quali[,2], y=df_quali[,3], label=df_quali[,1]), size = ggoptions_default$size, color = df_quali[,7], hjust = (-sign(df_quali[,2])+1)/2, vjust = -sign(df_quali[,3])*0.75+0.25, fontface = df_quali[,6])} } if (!is.null(partial)){ if(graph.type == "classic"){ for (i in group.quali) { for (j in 1:nbre.grpe) { points(coord_quali.partiel[(i - 1) * nbre.grpe + j, 1],coord_quali.partiel[(i - 1) * nbre.grpe + j, 2], pch = 15, col = col.quali[nrow(coord_quali) + (i - 1) * nbre.grpe + j], cex = par("cex") * 0.8) if (lab.var & lab.par) text(coord_quali.partiel[(i - 1) * nbre.grpe + j, 1], y = coord_quali.partiel[(i - 1) * nbre.grpe + j, 2], labels = rownames(coord_quali.partiel)[(i - 1) * nbre.grpe + j], pos = 3, col = col.quali[nrow(coord_quali) + (i - 1) * nbre.grpe + j],...) if (chrono) { if (j > 1){ if(graph.type == "classic") lines(c(coord_quali.partiel[(i - 1) * nbre.grpe + (j - 1), 1], coord_quali.partiel[(i - 1) * nbre.grpe + j, 1]), c(coord_quali.partiel[(i - 1) * nbre.grpe + (j - 1), 2], coord_quali.partiel[(i - 1) * nbre.grpe + j, 2]), col = col.quali[i]) }} else lines(c(coord_quali[i, 1], coord_quali.partiel[(i - 1) * nbre.grpe + j, 1]), c(coord_quali[i, 2], coord_quali.partiel[(i - 1) * nbre.grpe + j, 2]), col = col.quali[nrow(coord_quali) + (i - 1) * nbre.grpe + j], lty = j) } } } else { liste_quali_partiel <- rep(nbre.grpe*(group.quali-1),each=nbre.grpe) + rep(1:nbre.grpe,length(group.quali)) df_quali_partial <- cbind.data.frame(matrix(rep(cbind(coord_quali[group.quali,,drop=FALSE],col2rgb(coll3[group.quali],alpha=TRUE)[4,]),each=nbre.grpe),ncol=3),x=coord_quali.partiel[liste_quali_partiel,1],y=coord_quali.partiel[liste_quali_partiel,2], coul = col.quali[nrow(coord_quali)+liste_quali_partiel], group=rep(1:nbre.grpe,length(group.quali))) colnames(df_quali_partial)[1:3] <- c("xfin","yfin","sel") df_quali_partial <- df_quali_partial[df_quali_partial[,"sel"]==255,] if (habillage=="group") gg_graph <- gg_graph + geom_point(data=df_quali_partial, aes(x=x, y = y, color = as.factor(coul)), shape = 15, size = ggoptions_default$size/3) else gg_graph <- gg_graph + geom_point(data=df_quali_partial, aes(x=x, y = y), color = as.factor(df_quali_partial$coul), shape = 15, size = ggoptions_default$size/3) if (!chrono) { if (habillage=="group") gg_graph <- gg_graph + geom_segment(aes(x = x, y = y, xend = xfin, yend = yfin, col=as.factor(coul)), lty=df_quali_partial$coul, data = df_quali_partial) gg_graph <- gg_graph + geom_segment(aes(x = x, y = y, xend = xfin, yend = yfin), col=as.factor(df_quali_partial$coul), lty=df_quali_partial$group, data = df_quali_partial) } else { for (i in group.quali) { if (col2rgb(coll[i],alpha=TRUE)[4]== 255){ for (j in 2:nbre.grpe) { # gg_graph <- gg_graph + geom_line(aes_string(x=c(coord_quali[i, 1], coord_quali.partiel[(i - 1) * nbre.grpe + j, 1]), y=c(coord_quali[i, 2], coord_quali.partiel[(i - 1) * nbre.grpe + j, 2])), color = col.quali[nrow(coord_quali) + (i - 1) * nbre.grpe + j])} gg_graph <- gg_graph + geom_line(aes_string(x=c(coord_quali.partiel[(i - 1) * nbre.grpe + (j - 1), 1], coord_quali.partiel[(i - 1) * nbre.grpe + j, 1]), y=c(coord_quali.partiel[(i - 1) * nbre.grpe + (j - 1), 2], coord_quali.partiel[(i - 1) * nbre.grpe + j, 2])), color = col.quali[nrow(coord_quali) + (i - 1) * nbre.grpe + j])} }}} } } } if (!is.null(coord_quali_sup) & is.na(test.invisible[4])) { coo <- rbind(coo,coord_quali_sup) if (lab.var){ labe4 <- rownames(coord_quali_sup) } else labe4 <- rep("",nrow(coord_quali_sup)) coll4 <- col.quali.sup[seq_len(nrow(coord_quali_sup))] ipch4 <- rep(22,nrow(coord_quali_sup)) fonte4 <- rep(4,nrow(coord_quali_sup)) labe <- c(labe,labe4) coll <- c(coll,coll4) ipch <- c(ipch,ipch4) fonte <- c(fonte,fonte4) if(graph.type == "ggplot"){ coll_bis <- rgb(t(col2rgb(coll4)),maxColorValue=255) df_quali_sup <- data.frame(labe4, coord_quali_sup, coll4, ipch4, fonte4,coll_bis) gg_graph <- gg_graph + geom_point(aes(x=df_quali_sup[,2], y=df_quali_sup[,3]), color= df_quali_sup[,7], shape = df_quali_sup[,5],size = ggoptions_default$size/3) if(autoLab) text_quali.sup <- ggrepel::geom_text_repel(aes(x=df_quali_sup[,2], y=df_quali_sup[,3], label=df_quali_sup[,1]), size = ggoptions_default$size, color = df_quali_sup[,7], fontface = df_quali_sup[,6]) else{text_quali.sup <- geom_text(aes(x=df_quali_sup[,2], y=df_quali_sup[,3], label=df_quali_sup[,1]), size = ggoptions_default$size, color = df_quali_sup[,7], hjust = (-sign(df_quali_sup[,2])+1)/2, vjust = -sign(df_quali_sup[,3])*0.75+0.25, fontface = df_quali_sup[,6])} } if (!is.null(partial)){ if(graph.type == "classic"){ for (i in group.quali.sup) { for (j in 1:nbre.grpe) { points(coord_quali.partiel.sup[(i - 1) * nbre.grpe +j, 1],coord_quali.partiel.sup[(i - 1) * nbre.grpe +j, 2], pch = 22, col = col.quali.sup[nrow(coord_quali_sup) + (i - 1) * nbre.grpe + j], cex = par("cex") * 0.8) if (lab.var & lab.par) text(coord_quali.partiel.sup[(i - 1) * nbre.grpe + j, 1], y = coord_quali.partiel.sup[(i - 1) * nbre.grpe + j, 2], labels = rownames(coord_quali.partiel.sup)[(i - 1) * nbre.grpe + j], pos = 3, col = col.quali.sup[nrow(coord_quali_sup) + (i - 1) * nbre.grpe + j],...) if (chrono) { if (j > 1){ if(graph.type == "classic") lines(c(coord_quali.partiel.sup[(i - 1) * nbre.grpe + (j - 1), 1], coord_quali.partiel.sup[(i - 1) * nbre.grpe + j, 1]), c(coord_quali.partiel.sup[(i - 1) * nbre.grpe + (j - 1), 2], coord_quali.partiel.sup[(i - 1) * nbre.grpe + j, 2]), col = col.quali.sup[nrow(coord_quali_sup) + i]) }} else lines(c(coord_quali_sup[i, 1], coord_quali.partiel.sup[(i - 1) * nbre.grpe + j, 1]), c(coord_quali_sup[i, 2], coord_quali.partiel.sup[(i - 1) * nbre.grpe + j, 2]), col = col.quali.sup[nrow(coord_quali_sup) + (i - 1) * nbre.grpe + j], lty = j) } } } else { liste_quali_sup_partiel <- rep(nbre.grpe*(group.quali.sup-1),each=nbre.grpe) + rep(1:nbre.grpe,length(group.quali.sup)) df_quali_partial_sup <- cbind.data.frame(matrix(rep(cbind(coord_quali_sup[group.quali.sup,,drop=FALSE],col2rgb(coll4[group.quali.sup],alpha=TRUE)[4,]),each=nbre.grpe),ncol=3),x=coord_quali.partiel.sup[liste_quali_sup_partiel,1],y=coord_quali.partiel.sup[liste_quali_sup_partiel,2], coul = col.quali.sup[nrow(coord_quali_sup)+liste_quali_sup_partiel], group=rep(1:nbre.grpe,length(group.quali.sup)) ) colnames(df_quali_partial_sup)[1:3] <- c("xfin","yfin","sel") df_quali_partial_sup <- df_quali_partial_sup[df_quali_partial_sup[,"sel"]==255,] if (habillage=="group") gg_graph <- gg_graph + geom_point(data=df_quali_partial_sup, aes(x=x, y = y, color = as.factor(coul)), shape = 15, size = ggoptions_default$size/3) else gg_graph <- gg_graph + geom_point(data=df_quali_partial_sup, aes(x=x, y = y), col = as.factor(df_quali_partial_sup$coul), shape = 15, size = ggoptions_default$size/3) if (!chrono){ if (habillage=="group") gg_graph <- gg_graph + geom_segment(data = df_quali_partial_sup, aes(x = x, y = y, xend = xfin, yend = yfin, color=as.factor(coul)), lty=df_quali_partial_sup$coul) else gg_graph <- gg_graph + geom_segment(data = df_quali_partial_sup, aes(x = x, y = y, xend = xfin, yend = yfin), col=as.factor(df_quali_partial_sup[,"coul"]), lty=df_quali_partial_sup$group) } else { for (i in group.quali.sup) { if (col2rgb(coll[i],alpha=TRUE)[4]== 255){ for (j in 2:nbre.grpe) { gg_graph <- gg_graph + geom_line(aes_string(x=c(coord_quali.partiel.sup[(i - 1) * nbre.grpe + (j - 1), 1], coord_quali.partiel.sup[(i - 1) * nbre.grpe + j, 1]), y=c(coord_quali.partiel.sup[(i - 1) * nbre.grpe + (j - 1), 2], coord_quali.partiel.sup[(i - 1) * nbre.grpe + j, 2])), color = col.quali.sup[nrow(coord_quali_sup) + (i - 1) * nbre.grpe + j])} }}} } } } if(graph.type == "ggplot") { gg_graph <- gg_graph + theme + text_ind + text_ind.sup + text_quali + text_quali.sup if (!is.null(partial)) gg_graph <- gg_graph + labs(color = "") } else { if (shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) if (any(labe!="")){ if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) if (autoLab ==TRUE) autoLab(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],shadotext=shadowtext,...) if (autoLab ==FALSE) text(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],pos=3,...) } if (!shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) } if ((!is.null(partial)) & (habillage == "group")) { L <- list(x="topleft", legend = rownames(res.mfa$group$Lg)[-c(num.group.sup, length(rownames(res.mfa$group$Lg)))], lty = seq_len(length(rownames(res.mfa$group$Lg)[-c(num.group.sup, length(rownames(res.mfa$group$Lg)))])), text.col = col.hab, col = col.hab, cex = par("cex")*0.8) L <- modifyList(L, legend) if(graph.type == "classic") do.call(graphics::legend, L) } if ((!is.null(partial)) & (habillage != "group")) { L <- list(x="topleft", legend = rownames(res.mfa$group$Lg)[-c(num.group.sup, length(rownames(res.mfa$group$Lg)))], lty = seq_len(length(rownames(res.mfa$group$Lg)[-c(num.group.sup, length(rownames(res.mfa$group$Lg)))])), cex = par("cex")*0.8) L <- modifyList(L, legend) if(graph.type == "classic") do.call(graphics::legend, L) } if ((habillage != "none") & (habillage != "ind") & (habillage != "group")) { L <- list(x="topleft", legend = levels(res.mfa$call$X[, habillage]), text.col = col.hab, cex = par("cex")*0.8) L <- modifyList(L, legend) if(graph.type == "classic") do.call(graphics::legend, L) } if(graph.type=="ggplot" & habillage == "group" & !is.null(partial)){ gg_graph <- gg_graph + scale_color_manual(values = palette[L$text.col[order(L$text.col)]], labels = L$legend[order(L$text.col)]) } if (!is.null(coord.ellipse) & is.na(test.invisible[2])) { for (e in 1:nb.ind.actif) { debut <- ((nb.ind.actif - 1) * npoint.ellipse) + 1 fin <- debut + npoint.ellipse - 1 data.elli <- coord.ellipse[debut:fin, -1] if (graph.type == "classic") lines(data.elli[, 1], y = data.elli[, 2], col = col.ellipse[e]) } } if (!is.null(coord.ellipse)) { for (e in 1:nlevels(coord.ellipse[, 1])) { data.elli <- coord.ellipse[(npoint.ellipse * (e - 1) + 1):(npoint.ellipse * e), -1] if (graph.type == "classic") lines(data.elli[, 1], y = data.elli[, 2], col = col.ellipse[e]) } } if (!is.null(coord.ellipse.par)) { for (i in group.ind.actif) { for (j in 1:nbre.grpe) { ind.e <- (i - 1) * nbre.grpe + j data.elli <- coord.ellipse.par[(npoint.ellipse.par * (ind.e - 1) + 1):(npoint.ellipse.par * ind.e), -1] if (graph.type == "classic") lines(data.elli[, 1], y = data.elli[, 2], col = col.ellipse.par[ind.e], lty = 2) } } } } palette(old.palette) if (graph.type == "ggplot") return(gg_graph) }FactoMineR/R/predict.MCA.R0000644000176200001440000000263014132555443014625 0ustar liggesuserspredict.MCA <- function(object, newdata, ...){ if (!inherits(object, "MCA")) print("object should be a MCA object") if (!is.null(colnames(newdata))) { if (any(!(rownames(object$var$eta)%in%colnames(newdata)))) warning("The names of the variables is not the same as the ones in the active variables of the MCA result") } olddata <- object$call$X[,rownames(object$var$eta),drop=FALSE] newdata <- newdata[,colnames(olddata),drop=FALSE] pb <- NULL for (i in 1:ncol(newdata)) { if (sum(!levels(newdata[,i])%in%levels(olddata[,i]))>0) pb <- c(pb, levels(newdata[,i])[which(!levels(newdata[,i])%in%levels(olddata[,i]))]) } if (!is.null(pb)) stop("The following categories are not in the active dataset: ",pb) newdata <- rbind(olddata,newdata)[-(1:nrow(olddata)),,drop=FALSE] tab.newdata <- tab.disjonctif(newdata) marge.col <- object$call$marge.col ncp <- ncol(object$ind$coord) somme.row <- rowSums(tab.newdata) tab.newdata <- tab.newdata/somme.row coord <- crossprod(t(as.matrix(tab.newdata)),object$svd$V) dist2.row <- rowSums(t((t(tab.newdata)-marge.col)^2/marge.col)) cos2 <- coord^2/dist2.row coord <- coord[, 1:ncp,drop=FALSE] cos2 <- cos2[, 1:ncp,drop=FALSE] colnames(coord) <- colnames(cos2) <- paste("Dim", 1:ncp) rownames(coord) <- rownames(cos2) <- rownames(newdata) result <- list(coord = coord, cos2 = cos2) return(result) } FactoMineR/R/plot.CaGalt.R0000644000176200001440000004241114132272352014700 0ustar liggesusersplot.CaGalt<-function(x, axes = c(1, 2), choix = c("ind", "freq", "quali.var", "quanti.var"), conf.ellip = FALSE, contr.ellipse = 3, xlim = NULL, ylim = NULL, col.ind = "black", col.freq = "darkred", col.quali = "blue", col.quanti = "blue", label = TRUE, lim.cos2.var = 0, title = NULL, palette = NULL, autoLab = c("auto", "yes", "no"), new.plot = FALSE, select = NULL, unselect = 0.7, shadowtext = FALSE, ...){ res.cagalt <- x if (!inherits(res.cagalt, "CaGalt")) stop("non convenient data") if (is.numeric(unselect)) if ((unselect > 1) | (unselect < 0)) stop("unselect should be between 0 and 1") autoLab <- match.arg(autoLab, c("auto", "yes", "no")) if (autoLab == "yes") autoLab <- TRUE if (autoLab == "no") autoLab <- FALSE choix <- match.arg(choix, c("ind", "freq", "quali.var", "quanti.var")) lab.x <- paste("Dim ", axes[1], " (", format(res.cagalt$eig[axes[1], 2], nsmall = 2, digits = 2), "%)", sep = "") lab.y <- paste("Dim ", axes[2], " (", format(res.cagalt$eig[axes[2], 2], nsmall = 2, digits = 2), "%)", sep = "") if (choix == "ind") { if (is.null(title)) titre <- "Individuals factor map (CaGalt)" else titre <- title coord.ind <- res.cagalt$ind$coord[, axes, drop = FALSE] if (is.null(xlim)) xlim <- c(min(coord.ind[,1]),max(coord.ind[,1])) * 1.2 if (is.null(ylim)) ylim <- c(min(coord.ind[,2]),max(coord.ind[,2])) * 1.2 selection <- NULL if (!is.null(select)) { if (mode(select) == "numeric") selection <- select else { if (sum(rownames(res.cagalt$ind$coord) %in% select) != 0) selection <- which(rownames(res.cagalt$ind$coord) %in% select) else { if (grepl("coord", select)) selection <- (rev(order(apply(res.cagalt$ind$coord[, axes]^2, 1, sum))))[1:min(nrow(res.cagalt$ind$coord), sum(as.integer(unlist(strsplit(select, "coord"))), na.rm = T))] if (grepl("cos2", select)) { if (sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T) >= 1) selection <- (rev(order(apply(res.cagalt$ind$cos2[, axes], 1, sum))))[1:min(nrow(res.cagalt$ind$cos2), sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T))] else selection <- which(apply(res.cagalt$ind$cos2[, axes], 1, sum) > sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T)) } if (is.integer(select)) selection <- select } } } if ((new.plot) & !nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new(width = min(14, 8 * (xlim[2] - xlim[1])/(ylim[2] - ylim[1])), height = 8) if (is.null(palette)) palette(c("black", "red", "green3", "blue", "cyan", "magenta", "darkgray", "darkgoldenrod", "darkgreen", "violet", "turquoise", "orange", "lightpink", "lavender", "yellow", "lightgreen", "lightgrey", "lightblue", "darkkhaki", "darkmagenta", "darkolivegreen", "lightcyan", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "lightgray", "lightsalmon", "lightyellow", "maroon")) plot(0, 0, main = titre, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp = 1, ...) abline(v = 0, lty = 2, ...) abline(h = 0, lty = 2, ...) coo <- labe <- coll <- ipch <- fonte <- NULL coo <- coord.ind if (label) labe <- rownames(coord.ind) else labe <- rep("", nrow(coord.ind)) coll <- rep(col.ind, nrow(coord.ind)) ipch <- rep(20, nrow(coord.ind)) fonte <- rep(1, nrow(coord.ind)) if (!is.null(selection)) { if (is.numeric(unselect)) coll[!((1:length(coll)) %in% selection)] <- rgb(t(col2rgb(coll[!((1:length(coll)) %in% selection)])), alpha = 255 * (1 - unselect), maxColorValue = 255) else coll[!((1:length(coll)) %in% selection)] <- unselect labe[!((1:length(coll)) %in% selection)] <- "" } if (shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) if (any(labe != "")) { if (autoLab == "auto") autoLab <- (length(which(labe != "")) < 50) if (autoLab == TRUE) autoLab(coo[labe != "", 1], y = coo[labe != "", 2], labels = labe[labe != ""], col = coll[labe != ""], font = fonte[labe != ""], shadotext = shadowtext, ...) if (autoLab == FALSE) text(coo[labe != "", 1], y = coo[labe != "", 2], labels = labe[labe != ""], col = coll[labe != ""], font = fonte[labe != ""], pos = 3, ...) } if (!shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) } if (choix == "freq") { if (is.null(title)) titre <- "Frequencies factor map (CaGalt)" else titre <- title coord.freq <- res.cagalt$freq$coord[, axes, drop = FALSE] if (is.null(xlim)) xlim <- c(min(coord.freq[,1]),max(coord.freq[,1])) * 1.2 if (is.null(ylim)) ylim <- c(min(coord.freq[,2]),max(coord.freq[,2])) * 1.2 selection <- NULL if (!is.null(select)) { if (mode(select) == "numeric") selection <- select else { if (sum(rownames(res.cagalt$freq$coord) %in% select) != 0) selection <- which(rownames(res.cagalt$freq$coord) %in% select) else { if (grepl("contrib", select)) selection <- (rev(order(res.cagalt$freq$contrib[, axes[1], drop = FALSE] * res.cagalt$eig[axes[1], 1] + res.cagalt$freq$contrib[, axes[2], drop = FALSE] * res.cagalt$eig[axes[2], 1])))[1:min(nrow(res.cagalt$freq$contrib), sum(as.integer(unlist(strsplit(select, "contrib"))), na.rm = T))] if (grepl("coord", select)) selection <- (rev(order(apply(res.cagalt$freq$coord[, axes]^2, 1, sum))))[1:min(nrow(res.cagalt$freq$coord), sum(as.integer(unlist(strsplit(select, "coord"))), na.rm = T))] if (grepl("cos2", select)) { if (sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T) >= 1) selection <- (rev(order(apply(res.cagalt$freq$cos2[, axes], 1, sum))))[1:min(nrow(res.cagalt$freq$cos2), sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T))] else selection <- which(apply(res.cagalt$freq$cos2[, axes], 1, sum) > sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T)) } if (is.integer(select)) selection <- select } } } if ((new.plot) & !nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new(width = min(14, 8 * (xlim[2] - xlim[1])/(ylim[2] - ylim[1])), height = 8) if (is.null(palette)) palette(c("black", "red", "green3", "blue", "cyan", "magenta", "darkgray", "darkgoldenrod", "darkgreen", "violet", "turquoise", "orange", "lightpink", "lavender", "yellow", "lightgreen", "lightgrey", "lightblue", "darkkhaki", "darkmagenta", "darkolivegreen", "lightcyan", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "lightgray", "lightsalmon", "lightyellow", "maroon")) plot(0, 0, main = titre, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp = 1, ...) abline(v = 0, lty = 2, ...) abline(h = 0, lty = 2, ...) coo <- labe <- coll <- ipch <- fonte <- NULL coo <- coord.freq if (label) labe <- rownames(coord.freq) else labe <- rep("", nrow(coord.freq)) coll <- rep(col.freq, nrow(coord.freq)) ipch <- rep(15, nrow(coord.freq)) fonte <- rep(1, nrow(coord.freq)) if (!is.null(selection)) { if (is.numeric(unselect)) coll[!((1:length(coll)) %in% selection)] <- rgb(t(col2rgb(coll[!((1:length(coll)) %in% selection)])), alpha = 255 * (1 - unselect), maxColorValue = 255) else coll[!((1:length(coll)) %in% selection)] <- unselect labe[!((1:length(coll)) %in% selection)] <- "" } if (shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) if (any(labe != "")) { if (autoLab == "auto") autoLab <- (length(which(labe != "")) < 50) if (autoLab == TRUE) autoLab(coo[labe != "", 1], y = coo[labe != "", 2], labels = labe[labe != ""], col = coll[labe != ""], font = fonte[labe != ""], shadotext = shadowtext, ...) if (autoLab == FALSE) text(coo[labe != "", 1], y = coo[labe != "", 2], labels = labe[labe != ""], col = coll[labe != ""], font = fonte[labe != ""], pos = 3, ...) } if (!shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) if (conf.ellip) { sel.freq<-which(res.cagalt$freq$contr[,axes[1]]>contr.ellipse*mean(res.cagalt$freq$contr[,1])|res.cagalt$freq$contr[,2]>contr.ellipse*mean(res.cagalt$freq$contr[,axes[2]])) for(i in 1:length(sel.freq)){ coord.ellip <- coord.ellipse(cbind.data.frame(res.cagalt$ellip$freq[which(res.cagalt$ellip$freq$FREQ%in%names(sel.freq))[i],ncol(res.cagalt$freq$contr)+1],res.cagalt$ellip$freq[which(res.cagalt$ellip$freq$FREQ%in%names(sel.freq)[i]),1:ncol(res.cagalt$freq$contr)]),bary=FALSE,axes=axes) lines(coord.ellip$res[,2],coord.ellip$res[,3],lty=2,lwd=2,col="black") } } } if (choix == "quanti.var") { if (is.null(res.cagalt$quanti.var)) stop("Variables are not quantitative") if (is.null(title)) titre <- "Variables factor map (CaGalt)" else titre <- title selection <- NULL if (!is.null(select)) { if (mode(select) == "numeric") selection <- select else { if (sum(rownames(res.cagalt$quanti.var$coord) %in% select) != 0) selection <- which(rownames(res.cagalt$quanti.var$coord) %in% select) else { if (grepl("coord", select)) selection <- (rev(order(apply(res.cagalt$quanti.var$coord[, axes]^2, 1, sum))))[1:min(nrow(res.cagalt$var$coord), sum(as.integer(unlist(strsplit(select, "coord"))), na.rm = T))] if (grepl("cos2", select)) { if (sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T) >= 1) selection <- (rev(order(apply(res.cagalt$quanti.var$cos2[, axes], 1, sum))))[1:min(nrow(res.cagalt$quanti.var$cos2), sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T))] else selection <- which(apply(res.cagalt$quanti.var$cos2[, axes], 1, sum) > sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T)) } if (is.integer(select)) selection <- select } } } coord.var <- res.cagalt$quanti.var$cor[, axes, drop = FALSE] xlim <- ylim <- c(-1, 1) if ((new.plot) & !nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() if (is.null(palette)) palette(c("black", "red", "green3", "blue", "cyan", "magenta", "darkgray", "darkgoldenrod", "darkgreen", "violet", "turquoise", "orange", "lightpink", "lavender", "yellow", "lightgreen", "lightgrey", "lightblue", "darkkhaki", "darkmagenta", "darkolivegreen", "lightcyan", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "lightgray", "lightsalmon", "lightyellow", "maroon")) plot(0, 0, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp = 1, main = titre, ...) x.cercle <- seq(-1, 1, by = 0.01) y.cercle <- sqrt(1 - x.cercle^2) lines(x.cercle, y = y.cercle, ...) lines(x.cercle, y = -y.cercle, ...) abline(v = 0, lty = 2, ...) abline(h = 0, lty = 2, ...) coll <- coo <- labe <- posi <- NULL if (!is.null(coord.var[which(apply(res.cagalt$quanti.var$cos2[, axes, drop = FALSE], 1, sum, na.rm = TRUE) >= lim.cos2.var), ]) & (nrow(coord.var) > 0)) { coord.var <- coord.var[which(apply(res.cagalt$quanti.var$cos2[, axes, drop = FALSE], 1, sum, na.rm = TRUE) >= lim.cos2.var), , drop = FALSE] coo <- coord.var coll <- rep(col.quanti, nrow(coord.var)) if (label) labe <- rownames(coord.var) else labe <- rep("", nrow(coord.var)) if (!is.null(selection)) { if (is.numeric(unselect)) coll[!((1:length(coll)) %in% selection)] <- rgb(t(col2rgb(coll[!((1:length(coll)) %in% selection)])), alpha = 255 * (1 - unselect), maxColorValue = 255) else coll[!((1:length(coll)) %in% selection)] <- unselect labe[!((1:length(coll)) %in% selection)] <- "" } for (v in 1:nrow(coord.var)) { arrows(0, 0, coord.var[v, 1], coord.var[v, 2], length = 0.1, angle = 15, code = 2, col = coll[v]) if (label) { if (abs(coord.var[v, 1]) > abs(coord.var[v, 2])) { if (coord.var[v, 1] >= 0) posi <- c(posi, 4) else posi <- c(posi, 2) }else{ if (coord.var[v, 2] >= 0) posi <- c(posi, 3) else posi <- c(posi, 1) } } } } if (any(labe != "")) { if (autoLab == "auto") autoLab <- (length(which(labe != "")) < 50) if (autoLab == FALSE) text(coo[labe != "", 1], y = coo[labe != "", 2], labels = labe[labe != ""], pos = posi[labe != ""], col = coll[labe != ""], ...) if (autoLab == TRUE) autoLab(coo[labe != "", 1], y = coo[labe != "", 2], labels = labe[labe != ""], col = coll[labe != ""], shadotext = shadowtext, ...) } if (conf.ellip) { for(i in 1:nrow(res.cagalt$quanti.var$coord)){ coord.ellip <- coord.ellipse(cbind.data.frame(res.cagalt$ellip$var[which(res.cagalt$ellip$var$VAR%in%rownames(res.cagalt$quanti.var$coord)[i]),ncol(res.cagalt$quanti.var$coord)+1],res.cagalt$ellip$var[which(res.cagalt$ellip$var$VAR%in%rownames(res.cagalt$quanti.var$coord)[i]),1:ncol(res.cagalt$quanti.var$coord)]),bary=FALSE,axes=axes) lines(coord.ellip$res[,2],coord.ellip$res[,3],lty=2,lwd=2,col="black") } } } if (choix == "quali.var") { if (is.null(res.cagalt$quali.var)) stop("Variables are not categorical") coord.var <- res.cagalt$quali.var$coord[, axes] if (is.null(xlim)) xlim <- c(min(coord.var[,1]),max(coord.var[,1])) * 1.2 if (is.null(ylim)) ylim <- c(min(coord.var[,2]),max(coord.var[,2])) * 1.2 selection <- NULL if (!is.null(select)) { if (mode(select) == "numeric") selection <- select else { if (sum(rownames(res.cagalt$quali.var$coord) %in% select)!= 0) selection <- which(rownames(res.cagalt$quali.var$coord) %in% select) else { if (grepl("coord", select)) selection <- (rev(order(apply(res.cagalt$quali.var$coord[, axes, drop = FALSE]^2, 1, sum))))[1:min(nrow(res.cagalt$quali.var$coord), sum(as.integer(unlist(strsplit(select, "coord"))), na.rm = T))] if (grepl("cos2", select)) { if (sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T) >= 1) selection <- (rev(order(apply(res.cagalt$quali.var$cos2[, axes], 1, sum))))[1:min(nrow(res.cagalt$quali.var$cos2), sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T))] else selection <- which(apply(res.cagalt$quali.var$cos2[, axes], 1, sum) > sum(as.numeric(unlist(strsplit(select, "cos2"))), na.rm = T)) } if (is.integer(select)) selection <- select } } } titre <- title if (is.null(title)) titre <- "Categories factor map (CaGalt)" if ((new.plot) & !nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new(width = min(14, max(8, 8 * (xlim[2] - xlim[1])/(ylim[2] - ylim[1]))), height = 8) if (is.null(palette)) palette(c("black", "red", "green3", "blue", "cyan", "magenta", "darkgray", "darkgoldenrod", "darkgreen", "violet", "turquoise", "orange", "lightpink", "lavender", "yellow", "lightgreen", "lightgrey", "lightblue", "darkkhaki", "darkmagenta", "darkolivegreen", "lightcyan", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "lightgray", "lightsalmon", "lightyellow", "maroon")) plot(0, 0, main = titre, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp = 1, ...) abline(v = 0, lty = 2, ...) abline(h = 0, lty = 2, ...) coo <- labe <- coll <- ipch <- fonte <- NULL coo <- coord.var if (label) labe <- rownames(coord.var) else labe <- rep("", nrow(coord.var)) coll <- rep(col.quali, nrow(coord.var)) if (!is.null(select)) { if (is.numeric(unselect)) coll[!((1:length(coll)) %in% selection)] <- rgb(t(col2rgb(coll[!((1:length(coll)) %in% selection)])), alpha = 255 * (1 - unselect), maxColorValue = 255) else coll[!((1:length(coll)) %in% selection)] <- unselect labe[!((1:length(labe)) %in% selection)] <- "" } ipch <- rep(17, nrow(coord.var)) fonte <- rep(1, nrow(coord.var)) if (shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) if (any(labe != "")) { if (autoLab == "auto") autoLab <- (length(which(labe != "")) < 50) if (autoLab == TRUE) autoLab(coo[labe != "", 1], y = coo[labe != "", 2], labels = labe[labe != ""], col = coll[labe != ""], font = fonte[labe != ""], shadotext = shadowtext, ...) if (autoLab == FALSE) text(coo[labe != "", 1], y = coo[labe != "", 2], labels = labe[labe != ""], col = coll[labe != ""], font = fonte[labe != ""], pos = 3, ...) } if (!shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) if (conf.ellip) { for(i in 1:nrow(res.cagalt$quali.var$coord)){ coord.ellip <- coord.ellipse(cbind.data.frame(res.cagalt$ellip$var[which(res.cagalt$ellip$var$VAR%in%rownames(res.cagalt$quali.var$coord)[i]),ncol(res.cagalt$quali.var$coord)+1],res.cagalt$ellip$var[which(res.cagalt$ellip$var$VAR%in%rownames(res.cagalt$quali.var$coord)[i]),1:ncol(res.cagalt$quali.var$coord)]),bary=FALSE,axes=axes) lines(coord.ellip$res[,2],coord.ellip$res[,3],lty=2,lwd=2,col="black") } } } }FactoMineR/R/plot.CA.R0000644000176200001440000010531714602736533014045 0ustar liggesusersutils::globalVariables(c("y","xfin","yfin","coul")) plot.CA <- function (x, axes = c(1, 2), xlim = NULL, ylim = NULL, invisible = c("none","row", "col", "row.sup", "col.sup","quali.sup"), choix = c("CA","quanti.sup"), col.row = "blue", col.col = "red", col.row.sup = "darkblue", col.col.sup = "darkred",col.quali.sup ="magenta", col.quanti.sup="blue",label = c("all","none","row", "row.sup", "col","col.sup", "quali.sup","quanti.sup"), title = NULL, palette=NULL, autoLab = c("auto","yes","no"),new.plot=FALSE, selectRow = NULL, selectCol = NULL, unselect = 0.7,shadowtext = FALSE, habillage = "none", legend = list(bty = "y", x = "topleft"), graph.type = c("ggplot","classic"), ggoptions= NULL, ...) { res.ca <- x argument <- list(...) if (!is.null(argument[["cex"]]) & is.null(ggoptions["size"])) ggoptions["size"] <- 4*argument$cex ggoptions_default <- list(size = 4, point.shape = 19, line.lty = 2, line.lwd = 0.5, line.color = "black", segment.lty = 1, segment.lwd = 0.5, circle.lty = 1, circle.lwd = 0.5, circle.color = "black", low.col.quanti = "blue", high.col.quanti = "red3") if (!is.null(ggoptions[1])) ggoptions_default[names(ggoptions)] <- ggoptions[names(ggoptions)] old.palette <- palette() if (is.null(palette)) palette <- c("black", "red", "green3", "blue", "magenta", "darkgoldenrod","darkgray", "orange", "cyan", "violet", "lightpink", "lavender", "yellow", "darkgreen","turquoise", "lightgrey", "lightblue", "darkkhaki","darkmagenta","lightgreen", "darkolivegreen", "lightcyan", "darkorange","darkorchid", "darkred", "darksalmon", "darkseagreen","darkslateblue", "darkslategray", "darkslategrey","darkturquoise", "darkviolet", "lightgray", "lightsalmon","lightyellow", "maroon") palette(palette) # that is necessary if (!inherits(res.ca, "CA")) stop("non convenient data") if (is.numeric(unselect)) if ((unselect>1)|(unselect<0)) stop("unselect should be betwwen 0 and 1") label <- match.arg(label,c("all","none","row", "row.sup", "col","col.sup", "quali.sup","quanti.sup"),several.ok=TRUE) choix <- match.arg(choix,c("CA","quanti.sup")) choix <- tolower(choix) autoLab <- match.arg(autoLab,c("auto","yes","no")) graph.type <- match.arg(graph.type[1],c("ggplot","classic")) if (autoLab=="yes") autoLab <- TRUE if (autoLab=="no") autoLab <- FALSE invisible <- match.arg(invisible,c("none","row", "col", "row.sup", "col.sup","quali.sup"),several.ok=TRUE) if ("none"%in%invisible) invisible <- NULL if (graph.type == "ggplot"){ lab.x <- paste("Dim ",axes[1]," (",format(res.ca$eig[axes[1],2],nsmall=2,digits=2),"%)",sep="") lab.y <- paste("Dim ",axes[2]," (",format(res.ca$eig[axes[2],2],nsmall=2,digits=2),"%)",sep="") theme <- theme( axis.title = element_text(hjust = 1, size = if (is.null(argument[["cex.axis"]])) {10} else {10*argument$cex.axis},face = 2), plot.title = element_text(hjust = 0.5, size = if (is.null(argument[["cex.main"]])) {11} else {11*argument$cex.main},face = 2), legend.position = ifelse(legend$x %in% c("bottom","up","right","left"), legend$x, "right"), legend.box.spacing=unit(0.1, 'cm'),legend.margin=margin() ) } if (choix=="ca"){ lab.row <- lab.col <- lab.row.sup <- lab.col.sup <- FALSE if(length(label)==1 && label=="all") lab.row <- lab.col <- lab.row.sup <- lab.col.sup <- lab.quali.sup <- TRUE if("row" %in% label) lab.row<-TRUE if("col" %in% label) lab.col<-TRUE if("row.sup" %in% label) lab.row.sup<-TRUE if("col.sup" %in% label) lab.col.sup<-TRUE if("quali.sup" %in% label) lab.quali.sup<-TRUE if("quanti.sup" %in% label) lab.quanti.sup<-TRUE coord.col <- res.ca$col$coord[, axes] coord.row <- res.ca$row$coord[, axes] coord.row.sup <- coord.col.sup <- coord.quali.sup <- NULL if (!is.null(res.ca$row.sup)) coord.row.sup <- res.ca$row.sup$coord[, axes,drop=FALSE] if (!is.null(res.ca$col.sup)) coord.col.sup <- res.ca$col.sup$coord[, axes,drop=FALSE] if (!is.null(res.ca$quali.sup)) coord.quali.sup <- res.ca$quali.sup$coord[, axes,drop=FALSE] test.invisible <- vector(length = 4) if (!is.null(invisible)) { test.invisible[1] <- match("row", invisible) test.invisible[2] <- match("col", invisible) test.invisible[3] <- match("row.sup", invisible) test.invisible[4] <- match("col.sup", invisible) test.invisible[5] <- match("quali.sup", invisible) } else test.invisible <- rep(NA, 4) nullxlimylim <- (is.null(xlim) & is.null(ylim)) if (is.null(xlim)) { xmin <- xmax <- 0 if(is.na(test.invisible[1])) xmin <- min(xmin, coord.row[,1]) if(is.na(test.invisible[1])) xmax <- max(xmax, coord.row[,1]) if(is.na(test.invisible[3])) xmin <- min(xmin, coord.row.sup[, 1]) if(is.na(test.invisible[3])) xmax <- max(xmax, coord.row.sup[, 1]) if(is.na(test.invisible[2])) xmin <- min(xmin, coord.col[,1]) if(is.na(test.invisible[2])) xmax <- max(xmax, coord.col[,1]) if(is.na(test.invisible[4])) xmin <- min(xmin, coord.col.sup[, 1]) if(is.na(test.invisible[4])) xmax <- max(xmax, coord.col.sup[, 1]) if(is.na(test.invisible[5])) xmin <- min(xmin, coord.quali.sup[, 1]) if(is.na(test.invisible[5])) xmax <- max(xmax, coord.quali.sup[, 1]) # xlim <- c(xmin, xmax) * 1.2 xlim <- c(xmin, xmax) xlim <- (xlim-mean(xlim))*1.2 + mean(xlim) } if (is.null(ylim)) { ymin <- ymax <- 0 if(is.na(test.invisible[1])) ymin <- min(ymin, coord.row[,2]) if(is.na(test.invisible[1])) ymax <- max(ymax, coord.row[,2]) if(is.na(test.invisible[3])) ymin <- min(ymin, coord.row.sup[,2]) if(is.na(test.invisible[3])) ymax <- max(ymax, coord.row.sup[,2]) if(is.na(test.invisible[2])) ymin <- min(ymin, coord.col[,2]) if(is.na(test.invisible[2])) ymax <- max(ymax, coord.col[,2]) if(is.na(test.invisible[4])) ymin <- min(ymin, coord.col.sup[,2]) if(is.na(test.invisible[4])) ymax <- max(ymax, coord.col.sup[,2]) if(is.na(test.invisible[5])) ymin <- min(ymin, coord.quali.sup[,2]) if(is.na(test.invisible[5])) ymax <- max(ymax, coord.quali.sup[,2]) # ylim <- c(ymin, ymax) * 1.2 ylim <- c(ymin, ymax) ylim <- (ylim-mean(ylim))*1.2 + mean(ylim) } if (nullxlimylim & diff(xlim)/diff(ylim)>3) ylim <- (ylim-mean(ylim))*diff(xlim)/diff(ylim)/3 + mean(ylim) if (nullxlimylim & diff(xlim)/diff(ylim)<1/2) xlim <- (xlim-mean(xlim))*diff(ylim)/diff(xlim)/2 + mean(xlim) if(graph.type=="ggplot") nudge_y <- (ylim[2] - ylim[1])*0.03 selection <- selectionC <- selectionC2 <- selectionR2 <- NULL if (!is.null(selectRow)) { if (mode(selectRow)=="numeric") selection <- selectRow else { if (sum(rownames(res.ca$row$coord)%in%selectRow)+sum(rownames(res.ca$row.sup$coord)%in%selectRow)!=0) selection <- which(rownames(res.ca$row$coord)%in%selectRow) else { if (grepl("contrib",selectRow)) selection <- (rev(order(res.ca$row$contrib[,axes[1],drop=FALSE]*res.ca$eig[axes[1],1]+res.ca$row$contrib[,axes[2],drop=FALSE]*res.ca$eig[axes[2],1])))[1:min(nrow(res.ca$row$coord),sum(as.integer(unlist(strsplit(selectRow,"contrib"))),na.rm=T))] # if (grepl("contrib",selectRow)) selection <- (rev(order(apply(res.ca$row$contrib[,axes],1,sum))))[1:min(nrow(res.ca$row$coord),sum(as.integer(unlist(strsplit(selectRow,"contrib"))),na.rm=T))] if (grepl("inertia",selectRow)) selection <- (rev(order(res.ca$row$inertia)))[1:min(nrow(res.ca$row$coord),sum(as.integer(unlist(strsplit(selectRow,"inertia"))),na.rm=T))] if (grepl("coord",selectRow)) selection <- (rev(order(apply(res.ca$row$coord[,axes,drop=FALSE]^2,1,sum))))[1:min(nrow(res.ca$row$coord),sum(as.integer(unlist(strsplit(selectRow,"coord"))),na.rm=T))] if (grepl("cos2",selectRow)) { if (sum(as.numeric(unlist(strsplit(selectRow,"cos2"))),na.rm=T)>=1) selection <- (rev(order(apply(res.ca$row$cos2[,axes,drop=FALSE],1,sum))))[1:min(nrow(res.ca$row$coord),sum(as.numeric(unlist(strsplit(selectRow,"cos2"))),na.rm=T))] else selection <- which(apply(res.ca$row$cos2[,axes,drop=FALSE],1,sum)>sum(as.numeric(unlist(strsplit(selectRow,"cos2"))),na.rm=T)) } if (is.integer(selectRow)) selection <- selectRow } } } if ((!is.null(selectRow))&(!is.null(res.ca$row.sup))) { if (mode(selectRow)=="numeric") selectionR2 <- selectRow else { if (sum(rownames(res.ca$row$coord)%in%selectRow)+sum(rownames(res.ca$row.sup$coord)%in%selectRow)!=0) selectionR2 <- which(rownames(res.ca$row.sup$coord)%in%selectRow) else { if (grepl("inertia",selectRow)) selectionR2 <- (rev(order(res.ca$row.sup$inertia)))[1:min(nrow(res.ca$row.sup$coord),sum(as.integer(unlist(strsplit(selectRow,"inertia"))),na.rm=T))] if (grepl("coord",selectRow)) selectionR2 <- (rev(order(apply(res.ca$row.sup$coord[,axes,drop=FALSE]^2,1,sum))))[1:min(nrow(res.ca$row.sup$coord),sum(as.integer(unlist(strsplit(selectRow,"coord"))),na.rm=T))] if (grepl("cos2",selectRow)) { if (sum(as.numeric(unlist(strsplit(selectRow,"cos2"))),na.rm=T)>=1) selectionR2 <- (rev(order(apply(res.ca$row.sup$cos2[,axes,drop=FALSE],1,sum))))[1:min(nrow(res.ca$row.sup$coord),sum(as.numeric(unlist(strsplit(selectRow,"cos2"))),na.rm=T))] else selectionR2 <- which(apply(res.ca$row.sup$cos2[,axes,drop=FALSE],1,sum)>sum(as.numeric(unlist(strsplit(selectRow,"cos2"))),na.rm=T)) } if (is.integer(selectRow)) selectionR2 <- selectRow } } } if (!is.null(selectCol)) { if (mode(selectCol)=="numeric") selectionC <- selectCol else { if (sum(rownames(res.ca$col.sup$coord)%in%selectCol)+sum(rownames(res.ca$col$coord)%in%selectCol)!=0) selectionC <- which(rownames(res.ca$col$coord)%in%selectCol) else { if (grepl("contrib",selectCol)) selectionC <- (rev(order(res.ca$col$contrib[,axes[1],drop=FALSE]*res.ca$eig[axes[1],1]+res.ca$col$contrib[,axes[2],drop=FALSE]*res.ca$eig[axes[2],1])))[1:min(nrow(res.ca$col$coord),sum(as.integer(unlist(strsplit(selectCol,"contrib"))),na.rm=T))] # if (grepl("contrib",selectCol)) selectionC <- (rev(order(apply(res.ca$col$contrib[,axes,drop=FALSE],1,sum))))[1:min(nrow(res.ca$col$coord),sum(as.integer(unlist(strsplit(selectCol,"contrib"))),na.rm=T))] if (grepl("inertia",selectCol)) selectionC <- (rev(order(res.ca$col$inertia)))[1:min(nrow(res.ca$col$coord),sum(as.integer(unlist(strsplit(selectCol,"inertia"))),na.rm=T))] if (grepl("coord",selectCol)) selectionC <- (rev(order(apply(res.ca$col$coord[,axes,drop=FALSE]^2,1,sum))))[1:min(nrow(res.ca$col$coord),sum(as.integer(unlist(strsplit(selectCol,"coord"))),na.rm=T))] if (grepl("cos2",selectCol)) { if (sum(as.numeric(unlist(strsplit(selectCol,"cos2"))),na.rm=T)>=1) selectionC <- (rev(order(apply(res.ca$col$cos2[,axes,drop=FALSE],1,sum))))[1:min(nrow(res.ca$col$coord),sum(as.numeric(unlist(strsplit(selectCol,"cos2"))),na.rm=T))] else selectionC <- which(apply(res.ca$col$cos2[,axes,drop=FALSE],1,sum)>sum(as.numeric(unlist(strsplit(selectCol,"cos2"))),na.rm=T)) } if (is.integer(selectCol)) selectionC <- selectCol } } } if ((!is.null(selectCol))&(!is.null(res.ca$col.sup$coord))) { if (mode(selectCol)=="numeric") selectionC2 <- selectCol else { if (sum(rownames(res.ca$col.sup$coord)%in%selectCol)+sum(rownames(res.ca$col$coord)%in%selectCol)!=0) selectionC2 <- which(rownames(res.ca$col.sup$coord)%in%selectCol) else { if (grepl("inertia",selectCol)) selectionC2 <- (rev(order(res.ca$col.sup$inertia)))[1:min(nrow(res.ca$col.sup$coord),sum(as.integer(unlist(strsplit(selectCol,"inertia"))),na.rm=T))] if (grepl("coord",selectCol)) selectionC2 <- (rev(order(apply(res.ca$col.sup$coord[,axes,drop=FALSE]^2,1,sum))))[1:min(nrow(res.ca$col.sup$coord),sum(as.integer(unlist(strsplit(selectCol,"coord"))),na.rm=T))] if (grepl("cos2",selectCol)) { if (sum(as.numeric(unlist(strsplit(selectCol,"cos2"))),na.rm=T)>=1) selectionC2 <- (rev(order(apply(res.ca$col.sup$cos2[,axes,drop=FALSE],1,sum))))[1:min(nrow(res.ca$col.sup$coord),sum(as.numeric(unlist(strsplit(selectCol,"cos2"))),na.rm=T))] else selectionC2 <- which(apply(res.ca$col.sup$cos2[,axes,drop=FALSE],1,sum)>sum(as.numeric(unlist(strsplit(selectCol,"cos2"))),na.rm=T)) } if (is.integer(selectCol)) selectionC2 <- selectCol } } } if (is.null(title)) titre <- "CA factor map" else titre <- title if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() if (graph.type == "classic"){ plot(0, 0, main = titre, xlab = paste("Dim ",axes[1]," (",format(res.ca$eig[axes[1],2],nsmall=2,digits=2),"%)",sep=""), ylab = paste("Dim ",axes[2]," (",format(res.ca$eig[axes[2],2],nsmall=2,digits=2),"%)",sep=""), xlim = xlim, ylim = ylim, col = "white", asp=1, ...) abline(h=0,lty=2,...) abline(v=0,lty=2,...) } if (habillage != "none"){ liste.quali <- colnames(res.ca$call$Xtot)[res.ca$call$quali.sup] if (is.numeric(habillage)) nom.quali <- colnames(res.ca$call$Xtot)[habillage] else nom.quali <- habillage if (!(nom.quali %in% liste.quali) & (graph.type=="classic")){ stop("The variable ", habillage, " is not qualitative") if (is.null(res.ca$row.sup)) col.row <- 1+as.integer(res.ca$call$Xtot[,nom.quali]) else col.row <- 1+as.integer(res.ca$call$Xtot[-res.ca$call$row.sup,nom.quali]) col.quali.sup <- rep(1,nrow(res.ca$quali.sup$coord)) col.quali.sup[which(rownames(res.ca$quali.sup$coord)%in%paste(colnames(res.ca$call$Xtot[,nom.quali,drop=FALSE]),levels(res.ca$call$Xtot[,nom.quali]),sep="."))] <- 2:(nlevels(res.ca$call$Xtot[,nom.quali])+1) }} if (length(col.row)==1) col.row <- rep(col.row,nrow(coord.row)) if (length(col.col)==1) col.col <- rep(col.col,nrow(coord.col)) if ((!is.null(res.ca$row.sup))&(length(col.row.sup)==1)) col.row.sup <- rep(col.row.sup,nrow(coord.row.sup)) if ((!is.null(res.ca$col.sup))&(length(col.col.sup)==1)) col.col.sup <- rep(col.col.sup,nrow(coord.col.sup)) if ((!is.null(res.ca$quali.sup))&(length(col.quali.sup)==1)) col.quali.sup <- rep(col.quali.sup,nrow(coord.quali.sup)) coo <- ipch <- labe <- coll <- fonte <- NULL df_rowa <- df_rowb <- df_cola <- df_colb <- df_quali.sup <- NULL if (is.na(test.invisible[1])) { coo <- coord.row ipch <- rep(20,nrow(coord.row)) coll <- col.row fonte <- rep(1,nrow(coord.row)) if (lab.row==TRUE) labe <- rownames(coord.row) else labe <- rep("",nrow(coord.row)) if (!is.null(selection)){ if (is.numeric(unselect)) coll[!((1:length(coll))%in%selection)] <- rgb(t(col2rgb(coll[!((1:length(coll))%in%selection)])),alpha=255*(1-unselect),maxColorValue=255) else coll[!((1:length(coll))%in%selection)] <- unselect labe[!((1:length(coll))%in%selection)] <- "" } df_rowa <- data.frame(labe,coord.row,coll,ipch,fonte) names(df_rowa) <- c("labe", paste("Dim",axes[1],sep=""),paste("Dim",axes[2],sep=""), "coll","ipch","fonte") } if (is.na(test.invisible[2])) { coo <- rbind(coo,coord.col) ipch <- c(ipch,rep(17,nrow(coord.col))) fonte <- c(fonte,rep(1,nrow(coord.col))) coll2 <- col.col if (lab.col==TRUE) labe2 <- rownames(coord.col) else labe2 <- rep("",nrow(coord.col)) if (!is.null(selectionC)){ if (is.numeric(unselect)) coll2[!((1:length(coll2))%in%selectionC)] <- rgb(t(col2rgb(coll2[!((1:length(coll2))%in%selectionC)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!((1:length(coll2))%in%selectionC)] <- unselect labe2[!((1:length(coll2))%in%selectionC)] <- "" } df_cola <- data.frame(labe2,coord.col,coll2,rep(17,nrow(coord.col)),rep(1,nrow(coord.col))) names(df_cola) <- c("labe", paste("Dim",axes[1],sep=""),paste("Dim",axes[2],sep=""), "coll","ipch","fonte") coll <- c(coll,coll2) labe <- c(labe,labe2) } if (!is.null(res.ca$col.sup) & is.na(test.invisible[4])) { coo <- rbind(coo,coord.col.sup) ipch <- c(ipch,rep(17,nrow(coord.col.sup))) fonte <- c(fonte,rep(3,nrow(coord.col.sup))) coll2 <- col.col.sup if (lab.col.sup==TRUE) labe2 <- rownames(coord.col.sup) else labe2 <- rep("",nrow(coord.col.sup)) if (!is.null(selectionC2)){ if (is.numeric(unselect)) coll2[!((1:length(coll2))%in%selectionC2)] <- rgb(t(col2rgb(coll2[!((1:length(coll2))%in%selectionC2)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!((1:length(coll2))%in%selectionC2)] <- unselect labe2[!((1:length(coll2))%in%selectionC2)] <- "" } if (length(selectCol)==1){ if (grepl("contrib",selectCol)){ if (is.numeric(unselect)) coll2[1:length(coll2)] <- rgb(t(col2rgb(coll2[1:length(coll2)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[1:length(coll2)] <- unselect labe2[1:length(coll2)] <- "" }} df_colb <- data.frame(labe2,coord.col.sup,coll2,rep(17,nrow(coord.col.sup)),rep(3,nrow(coord.col.sup))) names(df_colb) <- c("labe", paste("Dim",axes[1],sep=""),paste("Dim",axes[2],sep=""), "coll","ipch","fonte") coll <- c(coll,coll2) labe <- c(labe,labe2) } if (!is.null(res.ca$row.sup) & is.na(test.invisible[3])) { coo <- rbind(coo,coord.row.sup) ipch <- c(ipch,rep(20,nrow(coord.row.sup))) fonte <- c(fonte,rep(3,nrow(coord.row.sup))) coll2 <- col.row.sup if (lab.row.sup==TRUE) labe2 <- rownames(coord.row.sup) else labe2 <- rep("",nrow(coord.row.sup)) if (!is.null(selectionR2)){ if (is.numeric(unselect)) coll2[!((1:length(coll2))%in%selectionR2)] <- rgb(t(col2rgb(coll2[!((1:length(coll2))%in%selectionR2)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!((1:length(coll2))%in%selectionR2)] <- unselect labe2[!((1:length(coll2))%in%selectionR2)] <- "" } if (length(selectRow)==1){ if (grepl("contrib",selectRow)){ if (is.numeric(unselect)) coll2[1:length(coll2)] <- rgb(t(col2rgb(coll2[1:length(coll2)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[1:length(coll2)] <- unselect labe2[1:length(coll2)] <- "" }} df_rowb <- data.frame(labe2,coord.row.sup,coll2,rep(20,nrow(coord.row.sup)),rep(3,nrow(coord.row.sup))) names(df_rowb) <- c("labe", paste("Dim",axes[1],sep=""),paste("Dim",axes[2],sep=""), "coll","ipch","fonte") coll <- c(coll,coll2) labe <- c(labe,labe2) } if (!is.null(res.ca$quali.sup) & is.na(test.invisible[5])) { coo <- rbind(coo,coord.quali.sup) ipch <- c(ipch,rep(22,nrow(coord.quali.sup))) coll <- c(coll,col.quali.sup) fonte <- c(fonte,rep(2,nrow(coord.quali.sup))) labe <- c(labe,rownames(coord.quali.sup)) df_quali.sup <- data.frame(rownames(coord.quali.sup),coord.quali.sup,col.quali.sup,rep(22,nrow(coord.quali.sup)),rep(2,nrow(coord.quali.sup))) names(df_quali.sup) <- c("labe", paste("Dim",axes[1],sep=""),paste("Dim",axes[2],sep=""), "coll","ipch","fonte") } df_row <- rbind(df_rowa,df_rowb) df_col <- rbind(df_cola,df_colb) if(graph.type == "classic"){ if (shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll,...) if (any(labe!="")){ if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) if (autoLab ==TRUE) autoLab(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],shadotext=shadowtext,...) if (autoLab ==FALSE) text(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],pos=3,...) } if (!shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll,...) } ### ajout legend #if (!(habillage %in% c("none","cos2","contrib"))) { if ((habillage != "none") & (graph.type == "classic")) { L <- list(x="topleft", legend = levels(res.ca$call$Xtot[, habillage]), text.col = 1+(1:nlevels(res.ca$call$Xtot[, habillage])), cex = par("cex") * 0.8) L <- modifyList(L, legend) do.call(graphics::legend, L) } if(graph.type == "ggplot"){ text_col<- text<- NULL df_ind <- data.frame(labe,coo,coll,ipch,fonte) if(dim(df_ind)[1] == 0) df_ind <- NULL if(!is.null(df_ind)) df_ind[,5][which(df_ind[,5] == 20)] <- 19 gg_graph <- ggplot() + coord_fixed(ratio = 1) + xlab(lab.x) + ylab(lab.y) + xlim(xlim) + ylim(ylim) + geom_hline(yintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_vline(xintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + theme_light() + ggoptions_default$theme + ggtitle(titre) if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) if (habillage == "none" & !is.null(df_ind)){ gg_graph <- gg_graph + geom_point(aes(x=df_ind[,2], y=df_ind[,3]), color= df_ind[,4], shape = df_ind[,5]) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1]), force = 1, max.iter = 1000,size = ggoptions_default$size, color = df_ind[,4], fontface = df_ind[,6]) else{text <- geom_text(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1]), size = ggoptions_default$size, color = df_ind[,4], hjust = (-sign(df_ind[,2])+1)/2, vjust = -sign(df_ind[,3])*0.75+0.25, fontface = df_ind[,6])} } if(habillage != "none"){ if (inherits(habillage, "numeric")) habillage <- colnames(res.ca$call$Xtot)[habillage] # if(class(habillage) == "numeric") habillage <- colnames(res.ca$call$Xtot)[habillage] if (habillage %in% liste.quali){ gg_graph <- gg_graph + geom_point(aes(x=df_row[,2], y=df_row[,3], color = (res.ca$call$Xtot)[rownames(df_row),habillage]), shape = df_row[,5]) + geom_point(aes(x=df_col[,2], y=df_col[,3]), color = col.col[1], shape = df_col[,5]) + scale_color_manual(values = palette[1:length(levels((res.ca$call$Xtot)[,habillage]))]) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], habillage)) if (autoLab){ text <- ggrepel::geom_text_repel(aes(x=df_row[,2], y=df_row[,3], label=df_row[,1], color = (res.ca$call$Xtot)[rownames(df_row),habillage]), size = ggoptions_default$size, show.legend = FALSE,fontface=df_row[,6]) text_col <- ggrepel::geom_text_repel(aes(x=df_col[,2], y=df_col[,3], label=df_col[,1]), color = col.col[1], size = ggoptions_default$size, show.legend = FALSE,fontface=df_col[,6])} else{text <- geom_text(aes(x=df_row[,2], y=df_row[,3], label=df_row[,1], color = (res.ca$call$Xtot)[rownames(df_row),habillage]), size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_row[,2])+1)/2, vjust = -sign(df_row[,3])*0.75+0.25,fontface=df_row[,6]) text_col <- geom_text(aes(x=df_col[,2], y=df_col[,3], label=df_col[,1]), color = col.col[1], size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_col[,2])+1)/2, vjust = -sign(df_col[,3])*0.75+0.25, fontface=df_col[,6])} } if(habillage=="cos2"){ df_ind <- rbind(df_rowa,df_cola,df_colb,df_rowb) df_ind[,5][which(df_ind[,5] == 20)] <- 19 coll_col <- coll_row <- coll_col.sup <- coll_row.sup <- NULL if(!is.null(res.ca$row$cos2) & (is.na(test.invisible[1]))) coll_row <- apply(res.ca$row$cos2[,axes,drop = FALSE],1,FUN=sum) if(!is.null(res.ca$col$cos2) & (is.na(test.invisible[2]))) coll_col <- apply(res.ca$col$cos2[,axes,drop = FALSE],1,FUN=sum) if(!is.null(res.ca$row.sup$cos2) & (is.na(test.invisible[3]))) coll_row.sup <- apply(res.ca$row.sup$cos2[,axes,drop = FALSE],1,FUN=sum) if(!is.null(res.ca$col.sup$cos2) & (is.na(test.invisible[4]))) coll_col.sup <- apply(res.ca$col.sup$cos2[,axes,drop = FALSE],1,FUN=sum) coll_quanti <- c(coll_row,coll_col,coll_col.sup,coll_row.sup) df_ind[,4] <- coll_quanti gg_graph <- gg_graph + geom_point(aes(x=df_ind[,2], y=df_ind[,3], color = df_ind[,4]), shape = df_ind[,5]) + scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], "cos2")) if (autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1], color = df_ind[,4]), size = ggoptions_default$size, show.legend = FALSE,fontface=df_ind[,6]) else{text <- geom_text(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1], color = df_ind[,4]), size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_ind[,2])+1)/2, vjust = -sign(df_ind[,3])*0.75+0.25, fontface=df_ind[,6])} } if(habillage=="contrib"){ df_ind <- rbind(df_rowa,df_cola,df_colb,df_rowb) df_ind[,5][which(df_ind[,5] == 20)] <- 19 coll_row <- coll_col <- coll_col.sup <- coll_row.sup <- coll_quali.sup <- NULL if(is.na(test.invisible[1])) coll_row <- res.ca$row$contrib[,axes[1]]*res.ca$eig[axes[1],1] + res.ca$row$contrib[,axes[2]]*res.ca$eig[axes[2],1] if(is.na(test.invisible[2])) coll_col <- res.ca$col$contrib[,axes[1]]*res.ca$eig[axes[1],1] + res.ca$col$contrib[,axes[2]]*res.ca$eig[axes[2],1] if(!is.null(res.ca$row.sup) & is.na(test.invisible[3])) coll_row.sup <- rep(0, nrow(res.ca$row.sup$coord)) if(!is.null(res.ca$col.sup) & is.na(test.invisible[4])) coll_col.sup <- rep(0, nrow(res.ca$col.sup$coord)) coll_quanti <- c(coll_row,coll_col,coll_col.sup,coll_row.sup) df_ind[,4] <- coll_quanti gg_graph <- gg_graph + geom_point(aes(x=df_ind[,2], y=df_ind[,3], color = df_ind[,4]), shape = df_ind[,5]) + scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], "Ctr")) if (autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1], color = df_ind[,4]), size = ggoptions_default$size, show.legend = FALSE,fontface=df_ind[,6]) else{text <- geom_text(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1], color = df_ind[,4]), size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_ind[,2])+1)/2, vjust = -sign(df_ind[,3])*0.75+0.25, fontface=df_ind[,6])} } if(!is.null(res.ca$quali.sup) & is.na(test.invisible[5])){ if(habillage %in% c("cos2","contrib")){ gg_graph <- gg_graph + geom_point(aes(x=df_quali.sup[,2], y=df_quali.sup[,3]), color = df_quali.sup[,4], size = ggoptions_default$size/2.8, shape = df_quali.sup[,5]) if (autoLab) text_quali.sup <- ggrepel::geom_text_repel(aes(x=df_quali.sup[,2], y=df_quali.sup[,3], label=df_quali.sup[,1]), color = df_quali.sup[,4], size = ggoptions_default$size, fontface=df_quali.sup[,6]) else{text_quali.sup <- geom_text(aes(x=df_quali.sup[,2], y=df_quali.sup[,3], label=df_quali.sup[,1]), color = df_quali.sup[,4], size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_quali.sup[,2])+1)/2, vjust = -sign(df_quali.sup[,3])*0.75+0.25, fontface=df_quali.sup[,6])} gg_graph <- gg_graph + text_quali.sup } else{ if (habillage %in% liste.quali) { levels(res.ca$call$Xtot[,habillage]) <- paste(habillage,".",levels(res.ca$call$Xtot[,habillage]),sep="") gg_graph <- gg_graph + geom_point(aes(x = df_quali.sup[levels(res.ca$call$Xtot[,habillage]),2], y = df_quali.sup[levels(res.ca$call$Xtot[,habillage]),3]), size = ggoptions_default$size/2.8, color = palette[1:length(levels(res.ca$call$Xtot[,habillage]))], shape = df_quali.sup[levels(res.ca$call$Xtot[,habillage]),5]) if (autoLab) text_quali.sup.hab <- ggrepel::geom_text_repel(aes(x = df_quali.sup[levels(res.ca$call$Xtot[,habillage]),2], y = df_quali.sup[levels(res.ca$call$Xtot[,habillage]),3], label=levels(res.ca$call$Xtot[,habillage])), color = palette[1:length(levels(res.ca$call$Xtot[,habillage]))], size = ggoptions_default$size, fontface = df_quali.sup[levels(res.ca$call$Xtot[,habillage]),6]) else{text_quali.sup.hab <- geom_text(aes(x = df_quali.sup[levels(res.ca$call$Xtot[,habillage]),2], y = df_quali.sup[levels(res.ca$call$Xtot[,habillage]),3], label=levels(res.ca$call$Xtot[,habillage])), color = palette[1:length(levels(res.ca$call$Xtot[,habillage]))], size = ggoptions_default$size, fontface = df_quali.sup[levels(res.ca$call$Xtot[,habillage]),6],nudge_y=nudge_y)} gg_graph <- gg_graph + text_quali.sup.hab } text_quali.sup <- NULL if(length(liste.quali) > 1){ df_quali.nohab <- df_ind[which(!(rownames(res.ca$quali.sup$coord) %in% levels(res.ca$call$Xtot[,habillage]))), ,drop = FALSE] gg_graph <- gg_graph + geom_point(aes(x = df_quali.nohab[,2], y = df_quali.nohab[,3]), size = ggoptions_default$size/2.8, color = col.quali.sup[1], shape = 0) if (autoLab) text_quali.sup <- ggrepel::geom_text_repel(aes(x = df_quali.nohab[,2], y = df_quali.nohab[,3], label = df_quali.nohab[,1]), color = col.quali.sup[1], size = ggoptions_default$size, fontface = 2) else{text_quali.sup <- geom_text(aes(x = df_quali.nohab[,2], y = df_quali.nohab[,3], label = df_quali.nohab[,1]), color = col.quali.sup[1], size = ggoptions_default$size, fontface = 2, hjust = (-sign(df_quali.nohab[,2])+1)/2, vjust = -sign(df_quali.nohab[,3])*0.75+0.25,)} } gg_graph <- gg_graph + text_quali.sup } } } gg_graph <- gg_graph + theme + text + text_col } } if (choix == "quanti.sup") { if (is.null(title)) title <- "Supplementary variables on the CA factor map" if (!is.null(res.ca$quanti.sup)) { if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() if (graph.type == "classic"){ plot(0, 0, main = title, xlab = paste("Dim ",axes[1]," (",format(res.ca$eig[axes[1],2],nsmall=2,digits=2),"%)",sep=""), ylab = paste("Dim ",axes[2]," (",format(res.ca$eig[axes[2],2],nsmall=2,digits=2),"%)",sep=""), xlim = c(-1.1,1.1), ylim = c(-1.1,1.1), col = "white", asp=1, ...) abline(v=0,lty=2,...) abline(h=0,lty=2,...) x.cercle <- seq(-1, 1, by = 0.01) y.cercle <- sqrt(1 - x.cercle^2) lines(x.cercle, y = y.cercle,...) lines(x.cercle, y = -y.cercle,...) for (v in 1:nrow(res.ca$quanti.sup$coord)) { arrows(0, 0, res.ca$quanti.sup$coord[v, axes[1]], res.ca$quanti.sup$coord[v, axes[2]], length = 0.1, angle = 15, code = 2, col = col.quanti.sup,...) if (abs(res.ca$quanti.sup$coord[v,axes[1]])>abs(res.ca$quanti.sup$coord[v,axes[2]])){ if (res.ca$quanti.sup$coord[v,axes[1]]>=0) pos<-4 else pos<-2 } else { if (res.ca$quanti.sup$coord[v,axes[2]]>=0) pos<-3 else pos<-1 } if((!is.null(label)) && ("all"%in%label | "quanti.sup" %in% label)){ autoLab(res.ca$quanti.sup$coord[v, axes[1]], y = res.ca$quanti.sup$coord[v, axes[2]], labels = rownames(res.ca$quanti.sup$coord)[v], col = col.quanti.sup,...) } } } if(graph.type=="ggplot"){ if (autoLab=="auto") autoLab <- (length(which(rownames(res.ca$quanti.sup$coord)!=""))<50) df_var <- data.frame(rownames(res.ca$quanti.sup$coord),res.ca$quanti.sup$coord[,axes[1]],res.ca$quanti.sup$coord[,axes[2]]) circle <- annotate("path", x=0+1*cos(seq(0,2*pi,length.out=100)), y=0+1*sin(seq(0,2*pi,length.out=100)), lty = ggoptions_default$circle.lty, lwd = ggoptions_default$circle.lwd, color = ggoptions_default$circle.color) gg_graph <- ggplot() + coord_fixed(ratio = 1) + geom_line(aes(x=x, y=y), data=data.frame(x=-1:1,y=0),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_line(aes(x=x, y=y), data=data.frame(x=0,y=-1:1),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + theme_light() + ggoptions_default$theme if(habillage=="none"){ gg_graph <- gg_graph + aes(x=df_var[,2], y=df_var[,3]) + geom_segment(aes(x=0,y=0,xend=df_var[,2], yend=df_var[,3]),arrow=arrow(length=unit(0.2,"cm")), lty = ggoptions_default$segment.lty, lwd = ggoptions_default$segment.lwd, color = col.quanti.sup) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1]), size = ggoptions_default$size, color = col.quanti.sup) else{text <- geom_text(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1]), size = ggoptions_default$size, color = col.quanti.sup, hjust = (-sign(df_var[,2])+1)/2, vjust = -sign(df_var[,3])*0.75+0.25)} } if(habillage=="cos2"){ gg_graph <- gg_graph + aes(x=df_var[,2], y=df_var[,3], color = res.ca$quanti.sup$cos2[,axes[1]] + res.ca$quanti.sup$cos2[,axes[2]]) + geom_segment(aes(x=0,y=0,xend=df_var[,2], yend=df_var[,3]),arrow=arrow(length=unit(0.2,"cm")),lty = ggoptions_default$segment.lty, lwd = ggoptions_default$segment.lwd) + scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], "cos2")) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1], color = res.ca$quanti.sup$cos2[,axes[1]] + res.ca$quanti.sup$cos2[,axes[2]]), size = ggoptions_default$size) else{text <- geom_text(aes(x=df_var[,2], y=df_var[,3],label=df_var[,1], color = res.ca$quanti.sup$cos2[,axes[1]] + res.ca$quanti.sup$cos2[,axes[2]]), size = ggoptions_default$size, hjust = (-sign(df_var[,2])+1)/2, vjust = -sign(df_var[,3])*0.75+0.25)} } gg_graph <- gg_graph + text + theme + circle + xlab(lab.x) + ylab(lab.y) + ggtitle(title) } } } palette(old.palette) if (graph.type == "ggplot") return(gg_graph) } FactoMineR/R/plot.meansComp.R0000644000176200001440000000423714551761451015503 0ustar liggesusersutils::globalVariables(c("emmean","Effect","lower.CL","upper.CL","Letters")) plot.meansComp <- function(x,...){ if (!inherits(x,"meansComp")) stop("x must be a compMean object") aux <- summary(x$adjMean) if (ncol(aux)==6){ rownames(aux) <- aux[,1] } else { rownames(aux) <- paste(aux[,1],aux[,2],sep=":") aux[,1] <- rownames(aux) } # rownames(aux) <- aux[,1] if (ncol(aux)==6){ nameEffect <- colnames(aux)[1] } else { nameEffect <- paste(colnames(aux)[1],colnames(aux)[2],sep=":") } colnames(aux)[1] <- "Effect" # aux <- aux[order(aux[,2]),] aux <- aux[order(aux[,ncol(aux)-4]),] aux[,1] <- ordered(aux[,1],levels=aux[,1]) aux$Letters <- x$groupComp$Letters #if (graph.type==1){ p <- ggplot2::ggplot(aux, ggplot2::aes(x=emmean, y=Effect,col=Letters),...) + ggplot2::geom_errorbar(ggplot2::aes(xmin=lower.CL, xmax=upper.CL), width=.1) + ggplot2::geom_point() + ggplot2::theme(legend.position="none") + ggplot2::geom_text(ggplot2::aes(x=upper.CL+stats::offset(.1), y = Effect,label=Letters,col=Letters),hjust=0) + ggplot2::ylab(nameEffect) + ggplot2::xlab("Adjust mean") #} # if (graph.type==2){ # p <- ggplot2::ggplot(aux, ggplot2::aes(x = emmean, y = Effect),...) + # ggplot2::geom_point(size=2) + ggplot2::xlab("Adjust mean")+ggplot2::ylab(nameEffect) # for (i in 1:ncol(x$groupComp$LetterMatrix)) { # xlim <- aux[rownames(x$groupComp$LetterMatrix)[which(x$groupComp$LetterMatrix[,i])],2] # ylim <- which(x$groupComp$LetterMatrix[,i]) # p <- p + ggplot2::annotate("segment", x=min(xlim),xend=max(xlim), y = min(ylim),yend=min(ylim),colour = palette()[i+1], size = 1.5) # for (k in ylim) { # p <- p + ggplot2::annotate("segment", x=aux[k,2],xend=aux[k,2], y = min(ylim),yend=k,colour = palette()[i+1], size = 1,linetype = "dashed") # p <- p + ggplot2::annotate("point", x=aux[k,2], y = min(ylim), colour = "black", size = 2, shape=21) # } # p <- p + ggplot2::annotate("point", x=xlim, y = ylim, colour = "black", size = 2) # p <- p + ggplot2::annotate("point", x=min(xlim), y = min(ylim), colour = palette()[i+1], size = 2) # } # } return(p) } FactoMineR/R/plotellipses.r0000644000176200001440000004134414132554741015360 0ustar liggesusersplotellipses <- function (model, keepvar = "all", axes = c(1, 2), means = TRUE, level = 0.95, magnify = 2, cex = 1, pch = 20, pch.means = 15, type = c("g", "p"), keepnames = TRUE, namescat = NULL, xlim = NULL, ylim = NULL, lwd = 1, label = "all", autoLab = c("auto","yes", "no"), graph.type=c("ggplot","classic"), ...) { # lit les options graph.type <- match.arg(graph.type[1],c("ggplot","classic")) p3p <- list(...) monpanel <- function(x, y, level, means, nommod, magnify = magnify, pchmeans = pchmeans, ...) { lattice::panel.xyplot(x, y, ...) panel.superpose2(x, y, level = level, means = means, nommod = nommod, pchmeans = pchmeans, magnify = magnify, panel.groups = "monpanel.ellipse", ...) } monpanel.ellipse <- function(x, y, col.line, lty, lwd, subscripts, pch, cex, font, font.family, col, col.symbol, fill, alpha, type, group.number, level, means, nommod, magnify, pchmeans, ...) { if (length(x) > 1) { matrice <- matrix(c(x, y), ncol = 2) cdg <- colMeans(matrice) if (means) { variance <- var(matrice)/length(x) } else { variance <- var(matrice) } coord.ellipse <- ellipse::ellipse(variance, centre = cdg, level = level) lattice::llines(coord.ellipse[, 1], coord.ellipse[, 2], col = col.line, lty = lty, lwd = lwd) } else cdg <- c(x, y) lattice::ltext(cdg[1], cdg[2], unique(nommod), cex = cex * magnify, col = col.line, pos = 3, offset = 0.4 * cex * magnify) lattice::lpoints(cdg[1], cdg[2], pch = pchmeans[group.number], col = col.line, cex = cex * magnify) } panel.superpose2 <- function(x, y = NULL, subscripts, groups, panel.groups = "panel.xyplot", col = NA, col.line = superpose.line$col, col.symbol = superpose.symbol$col, pch = superpose.symbol$pch, cex = superpose.symbol$cex, fill = superpose.symbol$fill, font = superpose.symbol$font, fontface = superpose.symbol$fontface, fontfamily = superpose.symbol$fontfamily, lty = superpose.line$lty, lwd = superpose.line$lwd, alpha = superpose.symbol$alpha, type = "p", nommod = nommod, ..., distribute.type = FALSE) { if (distribute.type) { type <- as.list(type) } else { type <- unique(type) wg <- match("g", type, nomatch = NA) if (!is.na(wg)) { lattice::panel.grid(h = -1, v = -1) type <- type[-wg] } type <- list(type) } x <- as.numeric(x) if (!is.null(y)) y <- as.numeric(y) if (length(x) > 0) { if (!missing(col)) { if (missing(col.line)) col.line <- col if (missing(col.symbol)) col.symbol <- col } superpose.symbol <- lattice::trellis.par.get("superpose.symbol") superpose.line <- lattice::trellis.par.get("superpose.line") vals <- if (is.factor(groups)) levels(groups) else sort(unique(groups)) nvals <- length(vals) col <- rep(col, length = nvals) col.line <- rep(col.line, length = nvals) col.symbol <- rep(col.symbol, length = nvals) pch <- rep(pch, length = nvals) fill <- rep(fill, length = nvals) lty <- rep(lty, length = nvals) lwd <- rep(lwd, length = nvals) alpha <- rep(alpha, length = nvals) cex <- rep(cex, length = nvals) font <- rep(font, length = nvals) if (!is.null(fontface)) fontface <- rep(fontface, length = nvals) if (!is.null(fontfamily)) fontfamily <- rep(fontfamily, length = nvals) type <- rep(type, length = nvals) panel.groups <- if (is.function(panel.groups)) panel.groups else if (is.character(panel.groups)) get(panel.groups) else eval(panel.groups) subg <- groups[subscripts] ok <- !is.na(subg) for (i in seq_along(vals)) { id <- ok & (subg == vals[i]) if (any(id)) { args <- list(x = x[id], subscripts = subscripts[id], pch = pch[i], cex = cex[i], font = font[i], fontface = fontface[i], fontfamily = fontfamily[i], col = col[i], col.line = col.line[i], col.symbol = col.symbol[i], fill = fill[i], lty = lty[i], lwd = lwd[i], alpha = alpha[i], type = type[[i]], group.number = i, nommod = (nommod[subscripts])[id], ...) if (!is.null(y)) args$y <- y[id] do.call(panel.groups, args) } } } } autoLab <- match.arg(autoLab, c("auto", "yes", "no")) if (autoLab == "yes") autoLab <- TRUE if (autoLab == "no") autoLab <- FALSE nomtot <- names(model$call$X) nbevartot <- ncol(model$call$X) eliminer <- NULL if (class(model)[1] == "PCA") { if (all(names(model$call) != "quali.sup")) return(NULL) else { nomtot <- names(model$call$X)[model$call$quali.sup$numero] eliminer <- (1:nbevartot)[-model$call$quali.sup$numero] if (is.character(keepvar)) { if (length(keepvar) == 1) { possibilites <- c("all", "quali", "quali.sup") choix <- match(keepvar, possibilites) if (is.na(choix)) { if (!any(keepvar == nomtot)) return(NULL) else eliminer <- unique(c(eliminer, (1:nbevartot)[!(keepvar == nomtot)])) } else { if (choix == 2) return(NULL) } } else eliminer <- unique(c(eliminer, (1:nbevartot)[!(nomtot %in% keepvar)])) } if (is.numeric(keepvar)) eliminer <- unique(c(eliminer, (1:nbevartot)[-keepvar])) if (is.logical(keepvar)) eliminer <- unique(c(eliminer, (1:nbevartot)[!keepvar])) } nomtot <- names(model$call$X) if (all((1:nbevartot) %in% eliminer)) return(NULL) } if (class(model)[1] == "MCA") { if (any(names(model$call) == "quanti.sup")) eliminer <- model$call$quanti.sup if (is.character(keepvar)) { if (length(keepvar) == 1) { possibilites <- c("all", "quali", "quali.sup") choix <- match(keepvar, possibilites) if (is.na(choix)) { if (!any(keepvar == nomtot)) return(NULL) else eliminer <- unique(c(eliminer, (1:nbevartot)[!(keepvar == nomtot)])) } else { if (choix == 2) eliminer <- c(eliminer, model$call$quali.sup) if (choix == 3) eliminer <- (1:nbevartot)[-model$call$quali.sup] if (choix == 1) { if (all(!(names(model$call) %in% c("quali", "quali.sup")))) return(NULL) } } } else eliminer <- unique(c(eliminer, (1:nbevartot)[!(nomtot %in% keepvar)])) } if (is.numeric(keepvar)) eliminer <- unique(c(eliminer, (1:nbevartot)[-keepvar])) if (is.logical(keepvar)) eliminer <- unique(c(eliminer, (1:nbevartot)[!keepvar])) } if ((class(model)[1] == "MFA") || (class(model)[1] == "FAMD")) { eliminer <- which(unlist(lapply(model$call$X, is.numeric))) if (is.character(keepvar)) { if (length(keepvar) == 1) { possibilites <- c("all", "quali", "quali.sup") choix <- match(keepvar, possibilites) if (is.na(choix)) { if (!any(keepvar == nomtot)) { return(NULL) } else eliminer <- unique(c(eliminer, (1:nbevartot)[!(keepvar == nomtot)])) } else { if (choix == 2) eliminer <- c(eliminer, which(model$call$nature.var == "quali.sup")) if (choix == 3) eliminer <- c(eliminer, which(model$call$nature.var == "quali")) if (choix == 1) { if (all(!(names(model$call) %in% c("quali", "quali.sup")))) return(NULL) } } } else eliminer <- unique(c(eliminer, (1:nbevartot)[!(nomtot %in% keepvar)])) } if (is.numeric(keepvar)) eliminer <- unique(c(eliminer, (1:nbevartot)[-keepvar])) if (is.logical(keepvar)) eliminer <- unique(c(eliminer, (1:nbevartot)[!keepvar])) } if (!is.null(eliminer)) nomvargardees <- nomtot[-eliminer] else nomvargardees <- nomtot if (!is.logical(keepnames)) { if (is.numeric(keepnames)) { nomvartrimmees <- nomtot[-unique(c(eliminer, keepnames))] } else nomvartrimmees <- nomvargardees[!(nomvargardees %in% keepnames)] } else { if (length(keepnames) == 1) { if (keepnames) { nomvartrimmees <- NULL } else nomvartrimmees <- nomvargardees } else { if (length(keepnames) == length(nomtot)) { nomvartrimmees <- nomtot[(!keepnames) & ((1:nbevartot) != eliminer)] } else return(NULL) } } if (is.null(model$call$ind.sup)) { if (!is.null(eliminer)) { donnees <- model$call$X[, -eliminer, drop = FALSE] } else donnees <- model$call$X } else { if (!is.null(eliminer)) { donnees <- model$call$X[-model$call$ind.sup, -eliminer, drop = FALSE] } else donnees <- model$call$X[-model$call$ind.sup, , drop = FALSE] } nbevar <- ncol(donnees) if (nbevar == 1) { if (keepvar == "all" || keepvar == "quali.sup") { var <- model$call$quali.sup$numero } else { if (is.numeric(keepvar)) { var <- keepvar } else var <- which(keepvar == colnames(model$call$X)) } if (!is.null(model$call$ind.sup)) { aux <- cbind.data.frame(model$call$X[-model$call$ind.sup, var, drop = FALSE], model$ind$coord[, 1:max(axes)]) } else { aux <- cbind.data.frame(model$call$X[, var, drop = FALSE], model$ind$coord[, 1:max(axes)]) } # if (class(model)[1] == "PCA") { # res.pca <- PCA(aux, ncp = max(axes), quali.sup = 1, scale.unit = FALSE, # graph = FALSE, axes = 1:max(axes)) # res.pca$eig[axes, ] = model$eig[axes, ] # coord.ell <- coord.ellipse(aux, bary = means, # level.conf = level, axes = axes) # if (means == TRUE) { # L <- list(x=model, habillage = var, ellipse = coord.ell, # cex = cex, label = label, axes = axes, xlim = xlim, # ylim = ylim, title = paste("Confidence ellipses around the categories of", # colnames(model$call$X)[var]), autoLab = autoLab,graph.type=graph.type) # } else { # L <- list(x=model, habillage = var, ellipse = coord.ell, # cex = cex, label = label, axes = axes, xlim = xlim, # ylim = ylim, title = paste("Concentration ellipses for the categories of", # colnames(model$call$X)[var]), autoLab = autoLab,graph.type=graph.type) # } # L <- modifyList(L, p3p) # if (graph.type=="ggplot") return(do.call(plot.PCA, L)) # else do.call(plot.PCA, L) # } # if (class(model)[1] == "MCA") { # res.pca <- PCA(aux, ncp = max(axes), quali.sup = 1, scale.unit = FALSE, # graph = FALSE, axes = 1:max(axes)) # res.pca$eig[axes, ] = model$eig[axes, ] # coord.ell <- coord.ellipse(aux, bary = means, level.conf = level # , axes = axes) # if (means == TRUE) { # L <- list(x=res.pca, habillage = 1, ellipse = coord.ell, # cex = cex, label = label, axes = axes, xlim = xlim, # ylim = ylim, title = paste("Confidence ellipses around the categories of", # colnames(model$call$X)[var]), autoLab = autoLab,graph.type=graph.type) # } else { # L <- list(x=res.pca, habillage = 1, ellipse = coord.ell, # cex = cex, label = label, axes = axes, xlim = xlim, # ylim = ylim, title = paste("Concentration ellipses for the categories of", # colnames(model$call$X)[var]), autoLab = autoLab,graph.type=graph.type) # } # L <- modifyList(L, p3p) # if (graph.type=="ggplot") return(do.call(plot.PCA, L)) # else do.call(plot.PCA, L) # } if ((class(model)[1] == "PCA")||(class(model)[1] == "MCA")||(class(model)[1] == "MFA") || (class(model)[1] == "FAMD")) { res.pca <- PCA(aux, ncp = max(axes), quali.sup = 1, scale.unit = FALSE, graph = FALSE, axes = 1:max(axes)) res.pca$eig[axes, ] <- model$eig[axes, ] res.pca$ind$cos2[,axes] <- model$ind$cos2[,axes] res.pca$ind$contrib[,axes] <- model$ind$contrib[,axes] coord.ell <- coord.ellipse(aux, bary = means, level.conf = level, axes = axes) L <- list(x=res.pca, habillage = 1, ellipse = coord.ell, cex = cex, label = label, axes = axes, xlim = xlim, ylim = ylim, title = paste(if (means == TRUE){"Confidence ellipses around the categories of"} else {"Concentration ellipses for the categories of"}, colnames(model$call$X)[var]), autoLab = autoLab, graph.type=graph.type) # if (means == TRUE) { # L <- list(x=res.pca, habillage = 1, ellipse = coord.ell, # cex = cex, label = label, axes = axes, xlim = xlim, # ylim = ylim, title = paste("Confidence ellipses around the categories of", # colnames(model$call$X)[var]), autoLab = autoLab, graph.type=graph.type) # } else { # L <- list(x=res.pca, habillage = 1, ellipse = coord.ell, # cex = cex, label = label, axes = axes, xlim = xlim, # ylim = ylim, title = paste("Concentration ellipses for the categories of", # colnames(model$call$X)[var]), autoLab = autoLab, graph.type=graph.type) # } L <- modifyList(L, p3p) return(do.call(plot.PCA, L)) # if (graph.type=="ggplot") return(do.call(plot.PCA, L)) # else do.call(plot.PCA, L) } } else { don <- apply(model$ind$coord[, axes], 2, FUN = function(x, k) rep(x, k), k = nbevar) nindiv <- nrow(donnees) rownames(don) <- NULL colnames(don) <- c("x", "y") nomvar <- rep(nomvargardees, each = nindiv) modalite2 <- as.vector(apply(data.matrix(donnees), 2, unlist)) if (is.null(namescat)) { nommod <- as.vector(apply(donnees, 2, unlist)) } else nommod <- namescat if (!is.null(nomvartrimmees) & (is.null(namescat))) { kept <- (1:nbevar)[nomvargardees %in% nomvartrimmees] selecti <- as.vector(mapply(seq, (kept - 1) * nindiv + 1, (kept) * nindiv)) nommod[selecti] <- substr(nommod[selecti], nchar(nomvar[selecti]) + 2, nchar(nommod[selecti])) } modalite <- factor(modalite2) don <- cbind.data.frame(don, var = nomvar, modalite = factor(modalite2)) if (length(pch.means) < max(modalite2)) pch.means <- rep(pch.means, length = max(modalite2)) if (is.null(xlim) & is.null(ylim)) { lattice::xyplot(y ~ x | var, data = don, groups = modalite, panel = monpanel, level = level, means = means, magnify = magnify, cex = cex * 0.5, pch = pch, pchmeans = pch.means, nommod = nommod, type = type, xlab = paste("Dim ", axes[1], " (", round(model$eig[axes[1], 2], 2), "%)", sep = ""), ylab = paste("Dim ", axes[2], " (", round(model$eig[axes[2], 2], 2), "%)", sep = "")) } else { if (is.null(xlim)) { xlim <- ylim } else { if (is.null(ylim)) ylim <- xlim } lattice::xyplot(y ~ x | var, data = don, groups = modalite, panel = monpanel, level = level, means = means, magnify = magnify, cex = cex * 0.5, pch = pch, pchmeans = pch.means, nommod = nommod, type = type, xlab = paste("Dim ", axes[1], " (", round(model$eig[axes[1], 2], 2), "%)", sep = ""), ylab = paste("Dim ", axes[2], " (", round(model$eig[axes[2], 2], 2), "%)", sep = ""), xlim = xlim, ylim = ylim) } } }FactoMineR/R/summary.PCA.r0000644000176200001440000001246014132555541014734 0ustar liggesuserssummary.PCA <- function(object,nb.dec=3,nbelements=10,nbind=nbelements,ncp=3,align.names=TRUE,file="",...){ print2 <- function(mat,file=""){ if (file=="") print(mat, quote = FALSE, right = TRUE) else { mat <- cbind(format(rownames(mat)),mat) mat <- rbind(colnames(mat),mat) mat2 <- cbind(format(mat[,1],justify="right"),format(mat[,2],justify="right")) for (k in 3:ncol(mat)) mat2 <- cbind(mat2,format(mat[,k],justify="right")) mat2 <- cbind(mat2,"\n") for (i in 1:nrow(mat2)) cat(mat2[i,],file=file,append=TRUE) } } print3 <- function(obj,file="",ncp,width.row=0,nbelements=nbelements){ list.obj <- match.arg(names(obj),c("dist","inertia","coord","cos2","contrib","v.test","vtest"),several.ok=TRUE) nb.col <- sum(c("coord","cos2","contrib","v.test")%in%list.obj) nbelements <- min(nbelements,nrow(obj$coord)) mat <- matrix(NA,nbelements,sum(c("dist","inertia")%in%list.obj)+nb.col*ncp) colnames(mat) <- paste("v",1:ncol(mat)) rownames(mat) <- format(rownames(obj$coord)[1:nbelements,drop=FALSE],width=width.row) indice <- 1 if (sum(c("dist","inertia")%in%list.obj)) { if ("dist"%in%list.obj) { if (!is.null(obj$dist)) mat[,indice] <- obj$dist[1:nbelements] colnames(mat)[indice] <- "Dist" } if ("inertia"%in%list.obj) { if (!is.null(obj$inertia)) mat[,indice] <- obj$inertia[1:nbelements]*1000 colnames(mat)[indice] <- "Iner*1000" } indice <- indice + 1 } if ("coord"%in%list.obj){ if (!is.null(obj$coord)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$coord[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- paste("Dim.",1:ncp,sep="") indice <- indice +1 } if ("contrib"%in%list.obj){ if (!is.null(obj$contrib)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$contrib[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "ctr" indice <- indice +1 } if ("cos2"%in%list.obj){ if (!is.null(obj$cos2)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$cos2[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "cos2" indice <- indice +1 } if ("v.test"%in%list.obj){ if (!is.null(obj$v.test)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$v.test[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "v.test" indice <- indice +1 } mat <- format(round(mat,nb.dec)) if ("dist"%in%list.obj) mat2 <- cbind("|", mat[1:nbelements,1,drop=FALSE],"|") else mat2 <- "|" for (k in 1:ncp) mat2 <- cbind(mat2, mat[,(1+sum(c("dist","inertia")%in%list.obj)+nb.col*(k-1)):(sum(c("dist","inertia")%in%list.obj)+nb.col*k),drop=FALSE],"|") colnames(mat2)[1] <- "" print2(as.matrix(mat2),file=file) } res <- object if (!inherits(res, "PCA")) stop("non convenient object") cat(paste("\nCall:\n"),file=file) cat(paste(deparse(res$call$call),"\n"),file=file,append=TRUE) cat("\n",file=file,append=TRUE) cat("\nEigenvalues\n",file=file,append=TRUE) eige <- format(t(round(res$eig[,1:3],nb.dec)),justify="right") rownames(eige) <- c("Variance","% of var.","Cumulative % of var.") colnames(eige) <- paste("Dim",1:ncol(eige),sep=".") print2(eige,file=file) ncp <- min(res$call$ncp,ncp) width.row <- 0 aux <- match.arg(names(res),c("ind","ind.sup","freq","freq.sup","var","quanti.var","quanti.var.sup","quali.var","quali.var.sup","quanti.sup","quali.sup","group","row","row.sup","col","col.sup"),several.ok = TRUE) if (align.names==TRUE){ width.row <- max(nchar(rownames(res[aux[1]][[1]]$coord))) for (k in 1:length(aux)) width.row <- max(width.row,nchar(rownames(res[aux[k]][[1]]$coord)[1:min(nrow(res[aux[k]][[1]]$coord),nbelements)])) } if (nbind>0){ cat("\nIndividuals",file=file,append=TRUE) if (nrow(res$ind$coord) > nbind) cat(paste(" (the ",nbind," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$ind,file=file,ncp=ncp,width.row=width.row,nbelements=nbind) if (!is.null(res$ind.sup)){ cat("\nSupplementary individual",file=file,append=TRUE) if (nrow(res$ind.sup$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res$ind.sup$coord) > nbind) cat(paste(" (the ",nbind," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$ind.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbind) } } cat("\nVariables",file=file,append=TRUE) if (nrow(res$var$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$var,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) if (!is.null(res$quanti.sup)){ cat("\nSupplementary continuous variable",file=file,append=TRUE) if (nrow(res$quanti.sup$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res$quanti.sup$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$quanti.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res$quali.sup)){ cat("\nSupplementary categories",file=file,append=TRUE) if (nrow(res$quali.sup$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$quali.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } }FactoMineR/R/write.infile.R0000644000176200001440000000466013761737547015216 0ustar liggesusers write.infile <- function(X, file, sep=";", append = FALSE,nb.dec=4) { if (!append) cat("", file = file, append = FALSE,sep="") if (is.matrix(X)) affichmatrice(X, file, sep,nb.dec=nb.dec) else if (inherits(X, "array")) affichetableau(X, file, sep, nb.dec=nb.dec) else if (is.data.frame(X)) affichtabldon(X, file, sep,nb.dec=nb.dec) else if (is.list(X)) affichlist(X, file,sep=sep,nb.dec=nb.dec) else if (is.numeric(X)) cat(X, "\n", file = file, append = TRUE,sep=sep) else if (is.character(X)) cat(X, "\n", file = file, append = TRUE,sep=sep) else if (is.vector(X)) cat(X, "\n", file = file, append = TRUE,sep=sep) else { cat("format non affichable", "\n", file = file, append = TRUE,sep="") cat(X, "\n", file = file, append = TRUE,sep="") } } affichetableau <- function(X, file, sep,nb.dec=4) { X <- round(X, nb.dec) for (j in 1:(dim(X)[[3]])) { cat("sous tableau", j, "\n", file = file, append = TRUE,sep="") affichmatrice(X[, , j], file, sep=sep,nb.dec=nb.dec) } cat("\n", file = file, append = TRUE) } affichtabldon <- function(X, file, sep,nb.dec=nb.dec) { nomligne <- labels(X)[[1]] nomcol <- labels(X)[[2]] cat(" ", nomcol, "\n", file = file, append = TRUE, sep = sep) alpha <- dim(X)[[1]] for (i in 1:alpha) { deb <- nomligne[i] for (j in 1:(dim(X)[[2]])) deb <- c(deb, sep, X[i, j]) cat(deb, "\n", file = file, append = TRUE,sep="") } cat("\n", file = file, append = TRUE,sep="") } affichmatrice <- function(X, file, sep,nb.dec=4) { X <- round(X, nb.dec) nomligne <- rownames(X) nomcol <- colnames(X) cat(" ",nomcol, "\n", file = file, append = TRUE, sep = sep) alpha <- dim(X)[[1]] for (i in 1:alpha) cat(nomligne[i], X[i, ], "\n", file = file, append = TRUE, sep=sep) cat("\n", file = file, append = TRUE,sep="") } affichlist <- function(X, file,sep,nb.dec=4) { taillelist <- length(X) noms <- labels(X) for (i in 1:taillelist) { if (noms[i]!= "call"){ cat(noms[i], "\n", file = file, append = TRUE,sep="") write.infile(X[[i]], file, sep=sep, append = TRUE,nb.dec=nb.dec) } } } FactoMineR/R/tab.disjonctif.R0000644000176200001440000000640014407317315015473 0ustar liggesuserstab.disjonctif <- function (tab){ # tab<-as.data.frame(tab) ## fonction interne permettant la realisation d'un TDC pour un unique facteur # modalite.disjonctif <- function(i){ # moda <- as.factor(tab[, i]) # n <- length(moda) # x <- matrix(0L, n, nlevels(moda)) # x[(1:n) + n * (unclass(moda) - 1L)] <- 1L # return(x) # } ## fin fonction interne # if (ncol(tab)==1) { # res <- modalite.disjonctif(1) # dimnames(res) <- list(attributes(tab)$row.names, levels(tab[,1])) # } # else { # variable <- rep(attributes(tab)$names,lapply(tab,nlevels)) # listModa <- unlist(lapply(tab,levels)) # wlistModa <- which((listModa)%in%c("y","n","Y","N")) # if (!is.null(wlistModa)) listModa[wlistModa] <- paste(variable[wlistModa],listModa[wlistModa],sep = ".") # numlistModa <- which(unlist(lapply(listModa,is.numeric))) # if (!is.null(numlistModa)) listModa[numlistModa] <- paste(variable[numlistModa],listModa[numlistModa],sep = ".") # res <- lapply(1:ncol(tab), modalite.disjonctif) # res <- as.matrix(data.frame(res, check.names = FALSE)) # dimnames(res) <- list(attributes(tab)$row.names,listModa) # } # return(res) tab <- as.data.frame(tab) isQuali <- which(!sapply(tab,is.numeric)) if (length(isQuali)==0) return(tab) # ajout car pb dans FavoInvestigate for (k in isQuali) tab[,k] <- as.factor(tab[,k]) if (ncol(tab)==1) { if (is.numeric(tab[,1])){ return(tab) } else { # tabdisj <- .Call("disjoVar", as.integer(data.matrix(tab)), tabdisj <- .Call(C_disjoVar, as.integer(data.matrix(tab)), as.integer(c(nrow(tab),nlevels(tab[,1])))) rownames(tabdisj) <- rownames(tab) colnames(tabdisj) <- levels(tab[,1]) } } else { isQuanti <- which(sapply(tab,is.numeric)) if (length(isQuanti)==0){ tabdisj <- .Call("disjoMat", as.integer(data.matrix(tab)), as.integer(dim(tab)), as.integer(unlist(lapply(tab, nlevels)))) } else { nomMod <- lapply(tab, levels) nomMod[isQuanti] <- names(nomMod[isQuanti]) # tabdisj <- .Call("disjoMat", as.integer(data.matrix(tab[,isQuali,drop=FALSE])), tabdisj <- .Call(C_disjoMat, as.integer(data.matrix(tab[,isQuali,drop=FALSE])), as.integer(dim(tab[,isQuali,drop=FALSE])), as.integer(unlist(lapply(tab[,isQuali,drop=FALSE], nlevels)))) } listModa <- unlist(lapply(tab,levels)) wlistModa <- which((listModa)%in%c("y","n","Y","N")) if (!is.null(wlistModa)){ variable <- rep(attributes(tab)$names,lapply(tab,nlevels)) listModa[wlistModa] <- paste(variable[wlistModa],listModa[wlistModa],sep = ".") } dimnames(tabdisj) <- list(attributes(tab)$row.names,listModa) if (length(isQuanti)!=0){ tabdisj <- cbind(tabdisj,tab[,isQuanti,drop=FALSE]) Vec <- rep(1,ncol(tab)) NLevels <- unlist(pmax(lapply(tab,nlevels),1)) # pmax useful for quanti variables Vec[isQuanti] <- 0 # for quanti vari TabDisjMod <- rep(Vec,NLevels) ordre <- c(which(TabDisjMod!=0),which(TabDisjMod==0)) tabdisj <- tabdisj[,order(ordre)] } } return(tabdisj) } FactoMineR/R/print.AovSum.R0000644000176200001440000000034014300632305015123 0ustar liggesusersprint.AovSum<-function(x, ...){ if (!inherits(x, "AovSum")) stop("need to be a AovSum object") cat("Ftest\n") print(x$Ftest) x$Ttest[,4]<-round(x$Ttest[,4],5) cat("\nTtest\n") printCoefmat(x$Ttest) }FactoMineR/R/textual.r0000644000176200001440000000650014553445777014341 0ustar liggesuserstextual <- function (tab, num.text, contingence.by=1:ncol(tab), maj.in.min = TRUE, sep.word=NULL) { cont.textuel <- function(exp, maj.in.min = TRUE, accent = TRUE, sep.word=NULL){ mots <- list() expression <- list() if (is.null(sep.word)) sep.word <- "; (),?./:'!=+\n;{}-" new.sep.word <- substr(sep.word,1,1) for (j in 1:(nchar(sep.word)-1)) new.sep.word <- paste(new.sep.word,substr(sep.word,1,1),sep="") sep1 <- substr(new.sep.word,1,1) for (i in 1:length(exp)){ expression[[i]] <- chartr(sep.word,new.sep.word,exp[[i]]) if (maj.in.min) expression[[i]] <- chartr("A-Z","a-z",expression[[i]]) stopnow <- FALSE aux.length <- -1 while (nchar(expression[[i]]) != aux.length){ aux.length <- nchar(expression[[i]]) expression[[i]] <- gsub(paste(sep1,sep1,sep=""), sep1, expression[[i]]) } if (substr(expression[[i]],1,1) == sep1) expression[[i]] <- substr(expression[[i]],2,nchar(expression[[i]])) expression[[i]] <- strsplit(expression[[i]],sep1) } mots.totaux <- as.factor(unlist(expression)) for (i in 1:length(expression)) mots[[i]] <- c(levels(mots.totaux),expression[[i]][[1]]) nbmots <- length(levels(mots.totaux)) table <- as.data.frame(summary(mots.totaux,maxsum=nbmots)) row.names(table) <- levels(mots.totaux) for (i in 1:length(expression)) table <- cbind(table,summary(as.factor(mots[[i]]),maxsum=nbmots)-1) table <- cbind.data.frame(table, apply(matrix(as.integer(table[,-1]>0),nrow=length(levels(mots.totaux))),1,sum)) colnames(table)[1] <- "words" if (!is.null(names(exp))) colnames(table)[2:(length(exp)+1)] <- names(exp) if (is.null(names(exp))) colnames(table)[2:(length(exp)+1)] <- paste("exp",1:length(exp),sep=".") colnames(table)[ncol(table)] <- "nb.list" row.names(table) <- levels(mots.totaux) res <- list(nb.words = table[rev(order(table[,1])),c(1,ncol(table))], contingence.table = table[,-c(1,ncol(table))]) return(res) } tab <- as.data.frame(tab) if (is.null(rownames(tab))) rownames(tab) <- 1:nrow(tab) comp <- as.list(tab[,num.text]) names(comp) <- rownames(tab) ## res.cont = cont.textuel(comp, maj.in.min = maj.in.min, accent = accent, sep.word=sep.word) res.cont <- cont.textuel(comp, maj.in.min = maj.in.min, sep.word=sep.word) aux <- t(res.cont$contingence.table) don <- cbind.data.frame(tab[,-num.text],aux) for (j in 1:length(contingence.by)){ if (length(contingence.by[[j]])==1) { if (contingence.by[[j]]==num.text) don.mean <- apply(don[,ncol(tab):ncol(don)],2,function(x,fac) tapply(x,fac,sum),fac=as.factor(rownames(tab))) else don.mean <- apply(don[,ncol(tab):ncol(don)],2,function(x,fac) tapply(x,fac,sum),fac=tab[,contingence.by[[j]]]) if (j==1) don.comp <- don.mean else { colnames(don.mean) <- colnames(don.comp) don.comp <- rbind.data.frame(don.comp,don.mean) } } else { don.mean <- apply(don[,ncol(tab):ncol(don)],2,function(x,fac1,fac2) tapply(x,paste(fac1,fac2,sep="."),sum),fac1=tab[,contingence.by[[j]][1]],fac2=tab[,contingence.by[[j]][2]]) if (j==1) don.comp <- don.mean else { colnames(don.mean) <- colnames(don.comp) don.comp <- rbind.data.frame(don.comp,don.mean) } } } res <- list(cont.table = don.comp, nb.words = res.cont$nb.words) return (res) } FactoMineR/R/print.FAMD.R0000644000176200001440000000137212120041320014413 0ustar liggesusersprint.FAMD <- function (x, file = NULL, sep = ";", ...){ res.FAMD <- x if (!inherits(res.FAMD, "FAMD")) stop("non convenient data") cat("*The results are available in the following objects:\n\n") res <- array("", c(5, 2), list(1:5, c("name", "description"))) res[1, ] <- c("$eig", "eigenvalues and inertia") res[2, ] <- c("$var", "Results for the variables") res[3, ] <- c("$ind", "results for the individuals") res[4, ] <- c("$quali.var", "Results for the qualitative variables") res[5, ] <- c("$quanti.var", "Results for the quantitative variables") print(res) if (!is.null(file)) { write.infile(res.FAMD,file = file, sep=sep) print(paste("All the results are in the file",file)) } } FactoMineR/R/summary.MCA.r0000644000176200001440000001446014132555541014733 0ustar liggesuserssummary.MCA <- function(object,nb.dec=3,nbelements=10,nbind=nbelements,ncp=3,align.names=TRUE,file="",...){ print2 <- function(mat,file=""){ if (file=="") print(mat, quote = FALSE, right = TRUE) else { mat <- cbind(format(rownames(mat)),mat) mat <- rbind(colnames(mat),mat) mat2 <- cbind(format(mat[,1,drop=FALSE],justify="right"),format(mat[,2,drop=FALSE],justify="right")) for (k in 3:ncol(mat)) mat2 <- cbind(mat2,format(mat[,k,drop=FALSE],justify="right")) mat2 <- cbind(mat2,"\n") for (i in 1:nrow(mat2)) cat(mat2[i,,drop=FALSE],file=file,append=TRUE) } } print3 <- function(obj,file="",ncp,width.row=0,nbelements=nbelements){ list.obj <- match.arg(names(obj),c("dist","inertia","coord","cos2","contrib","v.test","vtest"),several.ok=TRUE) nb.col <- sum(c("coord","cos2","contrib","v.test")%in%list.obj) nbelements <- min(nbelements,nrow(obj$coord)) mat <- matrix(NA,nbelements,sum(c("dist","inertia")%in%list.obj)+nb.col*ncp) colnames(mat) <- paste("v",1:ncol(mat)) rownames(mat) <- format(rownames(obj$coord)[1:nbelements,drop=FALSE],width=width.row) indice <- 1 if (sum(c("dist","inertia")%in%list.obj)) { if ("dist"%in%list.obj) { if (!is.null(obj$dist)) mat[,indice] <- obj$dist[1:nbelements] colnames(mat)[indice] <- "Dist" } if ("inertia"%in%list.obj) { if (!is.null(obj$inertia)) mat[,indice] <- obj$inertia[1:nbelements]*1000 colnames(mat)[indice] <- "Iner*1000" } indice <- indice + 1 } if ("coord"%in%list.obj){ if (!is.null(obj$coord)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$coord[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- paste("Dim.",1:ncp,sep="") indice <- indice +1 } if ("contrib"%in%list.obj){ if (!is.null(obj$contrib)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$contrib[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "ctr" indice <- indice +1 } if ("cos2"%in%list.obj){ if (!is.null(obj$cos2)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$cos2[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "cos2" indice <- indice +1 } if ("v.test"%in%list.obj){ if (!is.null(obj$v.test)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$v.test[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "v.test" indice <- indice +1 } mat <- format(round(mat,nb.dec)) if ("dist"%in%list.obj) mat2 <- cbind("|", mat[1:nbelements,1,drop=FALSE],"|") else mat2 <- "|" for (k in 1:ncp) mat2 <- cbind(mat2, mat[,(1+sum(c("dist","inertia")%in%list.obj)+nb.col*(k-1)):(sum(c("dist","inertia")%in%list.obj)+nb.col*k),drop=FALSE],"|") colnames(mat2)[1] <- "" print2(as.matrix(mat2),file=file) } res <- object if (!inherits(res, "MCA")) stop("non convenient object") cat(paste("\nCall:\n"),file=file) cat(paste(deparse(res$call$call),"\n"),file=file,append=TRUE) cat("\n",file=file,append=TRUE) cat("\nEigenvalues\n",file=file,append=TRUE) eige <- format(t(round(res$eig[,1:3],nb.dec)),justify="right") rownames(eige) <- c("Variance","% of var.","Cumulative % of var.") colnames(eige) <- paste("Dim",1:ncol(eige),sep=".") print2(eige,file=file) ncp <- min(res$call$ncp,ncp) width.row <- 0 if (align.names==TRUE){ aux <- match.arg(names(res),c("ind","ind.sup","freq","freq.sup","var","quanti.var","quanti.var.sup","quali.var","quali.var.sup","quanti.sup","quali.sup","group","row","row.sup","col","col.sup"),several.ok = TRUE) width.row <- max(nchar(rownames(res[aux[1]][[1]]$coord))) for (k in 1:length(aux)) width.row <- max(width.row,nchar(rownames(res[aux[k]][[1]]$coord)[1:min(nrow(res[aux[k]][[1]]$coord),nbelements)])) } if (nbind>0){ if (nrow(res$ind$coord) <= nbind) cat("\nIndividuals\n",file=file,append=TRUE) else cat(paste("\nIndividuals (the ",nbind," first)\n",sep=""),file=file,append=TRUE) print3(res$ind,file=file,ncp=ncp,width.row=width.row,nbelements=nbind) if (!is.null(res$ind.sup)){ cat("\nSupplementary individual",file=file,append=TRUE) if (nrow(res$ind.sup$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res$ind.sup$coord) > nbind) cat(paste(" (the ",nbind," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$ind.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbind) } } cat("\nCategories",file=file,append=TRUE) if (nrow(res$var$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$var,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) cat("\nCategorical variables (eta2)\n",file=file,append=TRUE) res$var$eta2 <- cbind("|",format(round(res$var$eta2[1:min(nrow(res$var$eta2),nbelements),1:ncp,drop=FALSE],nb.dec),justify="right"),"|") rownames(res$var$eta2) <- format(rownames(res$var$eta2),width=width.row) colnames(res$var$eta2) <- c("",format(paste("Dim",1:ncp,sep="."),width=nb.dec+2)," ") print2(as.matrix(res$var$eta2),file=file) if (!is.null(res$quali.sup)){ cat("\nSupplementary categories",file=file,append=TRUE) if (nrow(res$quali.sup$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$quali.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) cat("\nSupplementary categorical variable",file=file,append=TRUE) if (nrow(res$quali.sup$coord)>1) cat("s",file=file,append=TRUE) cat(" (eta2)\n",file=file,append=TRUE) res$quali.sup$eta2 <- cbind("|",format(round(res$quali.sup$eta2[1:min(nrow(res$quali.sup$eta2),nbelements),1:ncp,drop=FALSE],nb.dec),justify="right"),"|") rownames(res$quali.sup$eta2) <- format(rownames(res$quali.sup$eta2),width=width.row) colnames(res$quali.sup$eta2) <- c("",format(paste("Dim",1:ncp,sep="."),width=nb.dec+2)," ") print2(as.matrix(res$quali.sup$eta2),file=file) } if (!is.null(res$quanti.sup)){ cat("\nSupplementary continuous variable",file=file,append=TRUE) if (nrow(res$quanti.sup$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res$quanti.sup$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$quanti.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } }FactoMineR/R/prefpls.r0000644000176200001440000000464614132555443014320 0ustar liggesusers"prefpls" <- function(donnee,var1=1,var2=2,firstvar=3,lastvar=ncol(donnee),levels=c(0.2,0.4,0.6,0.7,0.8,0.9,1),asp=1,nbchar=max(nchar(colnames(donnee))),title=NULL,choix="var"){ aux <- as.data.frame(matrix(nrow=lastvar-firstvar+1,ncol=7)) for (i in firstvar:lastvar){ a <- summary(lm(donnee[,i]~donnee[,var1]+donnee[,var2], na.action=na.omit))$coef[2] b <- summary(lm(donnee[,i]~donnee[,var1]+donnee[,var2], na.action=na.omit))$coef[3] r2 <- summary(lm(donnee[,i]~donnee[,var1]+donnee[,var2],na.action=na.omit))$r.squared cor1 <- cor(donnee[,i],donnee[,var1],use="pairwise.complete.obs") cor2 <- cor(donnee[,i],donnee[,var2],use="pairwise.complete.obs") axe2 <- sqrt(r2/(1+a^2/b^2))*(abs(b)/b) axe1 <- a*axe2/b aux [i,1] <- colnames(donnee)[i] aux [i,2] <- axe1 aux [i,3] <- axe2 aux [i,4] <- cor1*sqrt(r2)/sqrt(cor1^2+cor2^2) aux [i,5] <- cor2*sqrt(r2)/sqrt(cor1^2+cor2^2) aux [i,6] <- cor1 aux [i,7] <- cor2 } if (choix=="ind") { dev.new() if (is.null(title)) title2 <- paste("Biplot for",colnames(donnee)[var1],"and",colnames(donnee)[var2]) else title2 <- title plot(donnee[,var1],donnee[,var2],xlab=colnames(donnee)[var1],ylab=colnames(donnee)[var2],pch=20,main=title2,asp=asp) abline(h=0,lty=2) abline(v=0,lty=2) text(donnee[,var1],donnee[,var2],rownames(donnee), pos = 4, offset = 0.2) } if (choix=="var"){ dev.new() alph <- acos(cor(donnee[,var1],donnee[,var2]))/pi*180 zz <- function(x,y,alpha) ifelse((ycos(alpha/180*pi-acos(x))),NA, (x^2+y^2)/sqrt((x+y*cos(alpha/180*pi))^2+y^2*sin(alpha/180*pi)^2)) x <- y<- seq(-1,1,0.01) res <- outer(x,y,zz,alpha=alph) if (is.null(title)) title <- paste("Prefmap-PLS graph between",colnames(donnee)[var1],"and",colnames(donnee)[var2]) image(x,y,res,zlim=c(0,1),asp=1,xlab=colnames(donnee)[var1],ylab=colnames(donnee)[var2],col = rev(terrain.colors(100))[1:65],main=title,sub=paste("Correlation between",colnames(donnee)[var1],"and",colnames(donnee)[var2],":",signif(cor(donnee[,var1],donnee[,var2]),4))) lines(x,cos(alph/180*pi-acos(x))) lines(x,cos(alph/180*pi+acos(x))) lines(x,x*0,lty=2) lines(0*x,x,lty=2) contour(x, y, res,levels=levels,add=TRUE,labex=0) abscisse <- aux[,6] ordonnee <- aux[,7] for(i in firstvar:lastvar) { points(aux[i,6],aux[i,7],pch=20) text(aux[i,6],aux[i,7],substr(aux[i,1],1,nbchar), pos = 4, offset = 0.2,cex=0.8) } } } FactoMineR/R/summary.CA.r0000644000176200001440000001345214132555443014617 0ustar liggesuserssummary.CA <- function(object,nb.dec=3,nbelements=10,ncp=3,align.names=TRUE,file="",...){ print2 <- function(mat,file=""){ if (file=="") print(mat, quote = FALSE, right = TRUE) else { mat <- cbind(format(rownames(mat)),mat) mat <- rbind(colnames(mat),mat) mat2 <- cbind(format(mat[,1],justify="right"),format(mat[,2],justify="right")) for (k in 3:ncol(mat)) mat2 <- cbind(mat2,format(mat[,k],justify="right")) mat2 <- cbind(mat2,"\n") for (i in 1:nrow(mat2)) cat(mat2[i,],file=file,append=TRUE) } } print3 <- function(obj,file="",ncp,width.row=0,nbelements=nbelements){ list.obj <- match.arg(names(obj),c("dist","inertia","coord","cos2","contrib","v.test","vtest"),several.ok=TRUE) nb.col <- sum(c("coord","cos2","contrib","v.test")%in%list.obj) nbelements <- min(nbelements,nrow(obj$coord)) mat <- matrix(NA,nbelements,sum(c("dist","inertia")%in%list.obj)+nb.col*ncp) colnames(mat) <- paste("v",1:ncol(mat)) rownames(mat) <- format(rownames(obj$coord)[1:nbelements,drop=FALSE],width=width.row) indice <- 1 if (sum(c("dist","inertia")%in%list.obj)) { if ("dist"%in%list.obj) { if (!is.null(obj$dist)) mat[,indice] <- obj$dist[1:nbelements] colnames(mat)[indice] <- "Dist" } if ("inertia"%in%list.obj) { if (!is.null(obj$inertia)) mat[,indice] <- obj$inertia[1:nbelements]*1000 colnames(mat)[indice] <- "Iner*1000" } indice <- indice + 1 } if ("coord"%in%list.obj){ if (!is.null(obj$coord)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$coord[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- paste("Dim.",1:ncp,sep="") indice <- indice +1 } if ("contrib"%in%list.obj){ if (!is.null(obj$contrib)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$contrib[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "ctr" indice <- indice +1 } if ("cos2"%in%list.obj){ if (!is.null(obj$cos2)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$cos2[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "cos2" indice <- indice +1 } if ("v.test"%in%list.obj){ if (!is.null(obj$v.test)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$v.test[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "v.test" indice <- indice +1 } mat <- format(round(mat,nb.dec)) if (sum(c("dist","inertia")%in%list.obj)) mat2 <- cbind("|", mat[1:nbelements,1,drop=FALSE],"|") else mat2 <- "|" for (k in 1:ncp) mat2 <- cbind(mat2, mat[,(1+sum(c("dist","inertia")%in%list.obj)+nb.col*(k-1)):(sum(c("dist","inertia")%in%list.obj)+nb.col*k),drop=FALSE],"|") colnames(mat2)[1] <- "" print2(as.matrix(mat2),file=file) } res <- object if (!inherits(res, "CA")) stop("non convenient object") cat(paste("\nCall:\n"),file=file) cat(paste(deparse(res$call$call),"\n"),file=file,append=TRUE) cat("\n",file=file,append=TRUE) IT <- sum(res$eig[, 1] )* sum(res$call$X) df <- (nrow(res$call$X) - 1) * (ncol(res$call$X) - 1) pc <- pchisq(IT, df = df,lower.tail = FALSE) cat("The chi square of independence between the two variables is equal to", IT, "(p-value = ", pc, ").\n",file=file,append=TRUE) cat("\nEigenvalues\n",file=file,append=TRUE) eige <- format(t(round(res$eig[,1:3],nb.dec)),justify="right") rownames(eige) <- c("Variance","% of var.","Cumulative % of var.") colnames(eige) <- paste("Dim",1:ncol(eige),sep=".") print2(eige,file=file) width.row <- 0 if (align.names==TRUE){ aux <- match.arg(names(res),c("ind","ind.sup","freq","freq.sup","var","quanti.var","quanti.sup","quali.var","quali.sup","quanti.sup","quali.sup","group","row","row.sup","col","col.sup"),several.ok = TRUE) width.row <- max(nchar(rownames(res[aux[1]][[1]]$coord))) for (k in 1:length(aux)) width.row <- max(width.row,nchar(rownames(res[aux[k]][[1]]$coord)[1:min(nrow(res[aux[k]][[1]]$coord),nbelements)])) } ncp <- min(res$call$ncp,ncp) cat("\nRows",file=file,append=TRUE) if (nrow(res$row$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$row,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) cat("\nColumns",file=file,append=TRUE) if (nrow(res$col$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$col,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) if (!is.null(res$row.sup)){ cat("\nSupplementary row",file=file,append=TRUE) if (nrow(res$row.sup$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res$row.sup$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$row.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res$col.sup)){ cat("\nSupplementary column",file=file,append=TRUE) if (nrow(res$col.sup$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res$col.sup$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$col.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res$quanti.sup)){ cat("\nSupplementary continuous variable",file=file,append=TRUE) if (nrow(res$quanti.sup$coord)>1) cat("s",file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$quanti.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res$quali.sup)){ cat("\nSupplementary categorical variable",file=file,append=TRUE) if (nrow(res$quali.sup$coord)>1) cat("s",file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$quali.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } }FactoMineR/R/GPA.R0000644000176200001440000010141114132270542013172 0ustar liggesusersGPA<-function (df, tolerance = 10^-10, nbiteration = 200, scale = TRUE, group, name.group = NULL, graph = TRUE, axes = c(1, 2)) { ginv <- function(X, tol = sqrt(.Machine$double.eps)) { if (length(dim(X)) > 2 || !(is.numeric(X) || is.complex(X))) stop("'X' must be a numeric or complex matrix") if (!is.matrix(X)) X <- as.matrix(X) Xsvd <- svd(X) if (is.complex(X)) Xsvd$u <- Conj(Xsvd$u) Positive <- Xsvd$d > max(tol * Xsvd$d[1], 0) if (all(Positive)) Xsvd$v %*% (1/Xsvd$d * t(Xsvd$u)) else if (!any(Positive)) array(0, dim(X)[2:1]) else Xsvd$v[, Positive, drop = FALSE] %*% ((1/Xsvd$d[Positive]) * t(Xsvd$u[, Positive, drop = FALSE])) } similarite <- function(X, Y) { if (dim(X)[[1]] != dim(Y)[[1]]) stop("not the same dimension for X and Y") Y <- scale(Y, scale = FALSE) X <- scale(X, scale = FALSE) y <- Y %*% procrustesbis(Y, X)$H similari <- sum(diag(t(X) %*% y))/(sum(diag(t(X) %*% X)) * sum(diag(t(y) %*% y)))^0.5 return(similari) } crit.procGPAcvmqte <- function(x) { if (!inherits(x, "GPAc")) stop("Object of type 'GPAc' expected") contribindiv <- matrix(0, dim(x$Xfin)[[1]], 3) contriconfig <- matrix(0, dim(x$Xfin)[[3]], 3) contridim <- matrix(0, dim(x$consensus)[[2]], 3) nomligne <- row.names(x$depart) nomconfig <- (x$name.group) Maii <- 0 * (x$M[, , 1] %*% x$consensus %*% t(x$M[, , 1] %*% x$consensus)) for (i in 1:dim(x$M)[[3]]) { Maii <- Maii + x$M[, , i] %*% x$consensus %*% t(x$M[, , i] %*% x$consensus) } aii <- diag(Maii) Meii <- x$Xfin[, , 1] - x$consensus Mbii <- 0 * (x$Cj[, , 1] %*% Meii %*% t(x$Cj[, , 1] %*% Meii)) for (i in 1:dim(x$M)[[3]]) { Meii <- x$Xfin[, , i] - x$consensus Mbii <- Mbii + (x$Cj[, , i] %*% Meii %*% t(x$Cj[, , i] %*% Meii)) } bii <- diag(Mbii) Mdii <- 0 * x$Xfin[, , 1] %*% t(x$Xfin[, , 1]) for (i in 1:dim(x$M)[[3]]) { Mdii <- Mdii + x$Xfin[, , i] %*% t(x$Xfin[, , i]) } dii <- diag(Mdii) for (i in 1:dim(x$Xfin)[[1]]) { contribindiv[i, 1] <- aii[i] contribindiv[i, 2] <- bii[i] contribindiv[i, 3] <- dii[i] } contribindiv <- rbind(contribindiv, colSums(contribindiv)) rownames(contribindiv) <- c(nomligne, "sum") colnames(contribindiv) <- c("SSfit", "SSresidual", "SStotal") contriconfig <- matrix(0, dim(x$Xfin)[[3]], 3) contridim <- matrix(0, dim(x$consensus)[[2]], 3) for (i in 1:dim(x$M)[[3]]) { Meii <- x$Xfin[, , i] - x$consensus contriconfig[i, 1] <- x$poids[i] * sum(diag(t(x$Z) %*% x$Cj[, , i] %*% x$Xdeb[, , i] %*% x$R[, , i])) contriconfig[i, 2] <- sum(diag(t(Meii) %*% x$Cj[, , i] %*% Meii)) contriconfig[i, 3] <- x$poids[i]^2 * (sum(diag(t(x$Xdeb[, , i]) %*% x$Cj[, , i] %*% x$Xdeb[, , i]))) - sum(diag(t(x$consensus) %*% x$Cj[, , i] %*% Meii)) } contriconfig <- rbind(contriconfig, colSums(contriconfig)) rownames(contriconfig) <- c(nomconfig, "sum") colnames(contriconfig) <- c("SSfit", "SSresidual", "SStotal") Mfii <- 0 * (t(x$Xfin[, , 1] - x$consensus) %*% x$Cj[, , 1] %*% (x$Xfin[, , 1] - x$consensus)) Mgii <- 0 * (t(x$poids[1] * x$Cj[, , 1] %*% x$Xdeb[, , 1] %*% x$R[, , 1] %*% x$K) %*% (x$poids[1] * x$Cj[, , 1] %*% x$Xdeb[, , 1] %*% x$R[, , 1] %*% x$K)) for (i in 1:dim(x$M)[[3]]) { Mfii <- Mfii + t(x$Xfin[, , i] - x$consensus) %*% x$Cj[, , i] %*% (x$Xfin[, , i] - x$consensus) Mgii <- Mgii + t(x$poids[i] * x$Cj[, , i] %*% x$Xdeb[, , i] %*% x$R[, , i] %*% x$K) %*% (x$poids[i] * x$Cj[, , i] %*% x$Xdeb[, , i] %*% x$R[, , i] %*% x$K) } for (i in 1:dim(x$consensus)[[2]]) { contridim[i, 1] <- diag(x$gama)[i] contridim[i, 2] <- diag(Mfii)[i] contridim[i, 3] <- diag(Mgii)[i] } contridim <- rbind(contridim, colSums(contridim)) rownames(contridim) <- c(c(1:dim(x$consensus)[[2]]), "sum") colnames(contridim) <- c("SSfit", "SSresidual", "SStotal") contribution <- list() contribution$objet <- contribindiv contribution$config <- contriconfig contribution$dim <- contridim return(contribution) } crit.procGPAcsansvm <- function(x) { if (!inherits(x, "GPAc")) stop("Object of type 'GPAc' expected") contribindiv <- matrix(0, dim(x$Xfin)[[1]], 3) contribconfig <- matrix(0, dim(x$Xfin)[[3]], 3) contridim <- matrix(0, dim(x$consensus)[[2]], 3) general <- matrix(0, 7, 6) U <- matrix(1, dim(x$Xfin)[[1]], 1) nbj <- dim(x$Xfin)[[3]] nbligne <- dim(x$Xdeb)[[1]] nbcol <- dim(x$Xfin)[[2]] nomligne <- row.names(x$depart) nomconfig <- (x$name.group) contribconfigdim <- matrix(0, dim(x$Xfin)[[3]], dim(x$Xfin)[[2]] * 2) s <- NULL s1 <- NULL s3 <- NULL for (k in 1:dim(x$Xfin)[[2]]) { s <- NULL s1 <- NULL for (i in 1:dim(x$Xfin)[[3]]) { s <- rbind(s, colSums(x$Xfin[, , i]^2, na.rm = F, dims = 1)) s1 <- rbind(s1, colSums((x$Xfin[, , i] - x$consensus)^2, na.rm = F, dims = 1)) } contribconfigdim <- cbind(s1, s) } contribconfigdim <- rbind(contribconfigdim, colSums(contribconfigdim)) nomfit <- NULL nomfit <- c(paste("SSresidual", 1:dim(x$Xfin)[[2]], ""), paste("SStotal", 1:dim(x$Xfin)[[2]], sep = "")) colnames(contribconfigdim) <- nomfit row.names(contribconfigdim) <- c(nomconfig, "sum") s <- NULL s1 <- NULL s3 <- NULL for (i in 1:dim(x$Xfin)[[3]]) { s <- rbind(s, colSums(x$Xfin[, , i]^2, na.rm = F, dims = 1)) s1 <- rbind(s1, colSums((x$Xfin[, , i] - x$consensus)^2, na.rm = F, dims = 1)) s3 <- rbind(s1, colSums((x$consensus)^2, na.rm = F, dims = 1)) } contribconfig[, 3] <- rowSums(s, na.rm = F, dims = 1) contribconfig[, 2] <- rowSums(s1, na.rm = F, dims = 1) contribconfig[, 1] <- 0 contribconfig <- rbind(contribconfig, colSums(contribconfig)) colnames(contribconfig) <- c("SSfit", "SSresidual", "SStotal") row.names(contribconfig) <- c(nomconfig, "sum") s <- 0 * rowSums(x$Xfin[, , 1]^2, na.rm = F, dims = 1) s1 <- 0 * rowSums((x$Xfin[, , i] - x$consensus)^2, na.rm = F, dims = 1) tt <- NULL for (i in 1:dim(x$Xfin)[[3]]) { s <- s + rowSums(x$Xfin[, , i]^2, na.rm = F, dims = 1) s1 <- s1 + rowSums((x$Xfin[, , i] - x$consensus)^2, na.rm = F, dims = 1) tt <- cbind(tt, rowSums((x$Xfin[, , i] - x$consensus)^2, na.rm = F, dims = 1)) } contribindiv[, 3] <- s contribindiv[, 2] <- s1 contribindiv[, 1] <- nbj * rowSums((x$consensus)^2, na.rm = F, dims = 1) contibis <- NULL contibis2 <- NULL for (i in 1:dim(x$Xfin)[[3]]) { contibis <- cbind(contibis, rowSums((x$Xfin[, , i] - x$consensus)^2, na.rm = F, dims = 1)) contibis2 <- contibis/contribindiv[, 2] * 100 contibis2 <- contibis2 * nbj/100 } contribindiv <- rbind(contribindiv, colSums(contribindiv)) colnames(contribindiv) <- c("SSfit", "SSresidual", "SStotal") row.names(contribindiv) <- c(nomligne, "sum") contibis <- cbind(contibis, contibis2) contibis <- (rbind(contibis, colSums(contibis))) colnames(contibis) <- c(paste("SSresidual", "ratio", nomconfig), paste("SSresidual", "raw", nomconfig)) row.names(contibis) <- c(nomligne, "sum") s <- 0 * (x$Xfin[, , 1]^2) s1 <- 0 * (x$Xfin[, , i] - x$consensus)^2 tt <- NULL for (i in 1:dim(x$Xfin)[[3]]) { s <- s + (x$Xfin[, , i]^2) s1 <- s1 + (x$Xfin[, , i] - x$consensus)^2 } contribindivdim <- cbind(nbj * (x$consensus)^2, s1, s) colnames(contribindivdim) <- c(paste("SSfit", 1:dim(x$consensus)[[2]], sep = ""), paste("SSresidual", 1:dim(x$consensus)[[2]], sep = ""), paste("SStotal", 1:dim(x$consensus)[[2]])) s <- NULL s1 <- NULL s3 <- NULL for (i in 1:dim(x$Xfin)[[3]]) { s <- rbind(s, colSums(x$Xfin[, , i]^2, na.rm = F)) s1 <- rbind(s1, colSums((x$Xfin[, , i] - x$consensus)^2, na.rm = F, dims = 1)) s3 <- rbind(s1, colSums((x$consensus)^2, na.rm = F, dims = 1)) } s3 <- colSums((x$consensus)^2, na.rm = F, dims = 1) contridim <- cbind(nbj * (s3), (colSums(s1)), (colSums(s))) contridim <- rbind(contridim, colSums(contridim)) colnames(contridim) <- c("Consensus", "residus", "Total") row.names(contridim) <- c(paste("dim", 1:dim(x$Xfin)[[2]]), "Total") contribution <- list() contribution$objet <- contribindiv/nbj * 100 contribution$contribindivdim <- contribindivdim/nbj * 100 contribution$contibis <- contibis/nbj * 100 contribution$config <- contribconfig/nbj * 100 contribution$contribconfigdim <- contribconfigdim/nbj * 100 contribution$dimension <- contridim/nbj * 100 return(contribution) } placevm <- function(mat) { if (!is.matrix(mat)) stop("A matrix please !!") vect <- NULL matri <- NULL i <- 1 while (i <= dim(mat)[[1]]) { if (any(is.na(mat[i, ]))) { matri <- matri vect <- c(vect, i) i <- i + 1 } else { matri <- rbind(matri, mat[i, ]) i <- i + 1 } } sol <- list() sol$matri <- matri sol$vect <- vect return(sol) } procrustesbis <- function(X1, X2) { if (!is.matrix(X1)) stop("A matrix please !!" ) if (!is.matrix(X2)) stop("A matrix please !!") if (dim(X2)[[2]] != dim(X1)[[2]]) stop("On souhaite ici avoir un tableau de type matrice ayant le meme nombre de colonnes ") nbcolonne <- dim(X1)[[2]] X1c <- scale(X1, scale = FALSE) X2c <- scale(X2, scale = FALSE) Aj <- t(X1c) %*% X2c lola <- eigen(t(Aj) %*% Aj) Qj <- as.matrix(eigen(t(Aj) %*% Aj)$vectors) phij <- diag(lola$values, length(lola$values), length(lola$values)) opp1 <- abs(lola$values)^0.5 H <- diag(1, nbcolonne) rang <- sum((opp1/opp1[1]) > 10^-7) if (is.na(rang)) { H <- H rho <- sum(diag(X1c %*% H %*% t(X2c)))/sum(diag(X1c %*% t(X1))) } else { if (rang == length(lola$values)) { Pj <- Aj %*% Qj %*% as.matrix(diag(diag(phij)^(-0.5), length(lola$values), length(lola$values))) H <- Pj %*% t(Qj) } else { nbracinepos <- rang Pjstar <- Aj %*% Qj[, 1:nbracinepos] %*% as.matrix(diag((diag(phij)[1:nbracinepos])^(-0.5), length(lola$values[1:nbracinepos]), length(lola$values[1:nbracinepos]))) Pbar <- matrix(0, nbcolonne, (length(lola$values) - nbracinepos)) Pjstar1 <- Pjstar for (k in 1:(length(lola$values) - nbracinepos)) { yinit <- rnorm(nbcolonne) yinit.lm <- lm(yinit ~ 0 + Pjstar1) vectorth <- yinit - fitted.values(yinit.lm) Pbar[, k] <- vectorth/(t(vectorth) %*% vectorth)^0.5 if (sum(sign(Pbar[, k]/Qj[, (nbracinepos + k)]), na.rm = TRUE) < 0) { Pjstar1 <- cbind(Pjstar1, -Pbar[, k]) } else { Pjstar1 <- cbind(Pjstar1, Pbar[, k]) } } H <- Pjstar1 %*% t(as.matrix(lola$vectors)) } rho <- sum(diag(X1c %*% H %*% t(X2c)))/sum(diag(X1c %*% t(X1))) } result <- list() result$H <- H result$rho <- rho return(result) } algogpa <- function(X, tolerance = 10^-7, nbiteration = 200, scale = TRUE, df, name.group) { Xm <- NULL v <- NULL M <- NULL C <- NULL U <- NULL Ip <- NULL vdiag <- NULL mat1 <- NULL Cc <- NULL invgC <- NULL Xm1 <- NULL nbj <- NULL nbjuge <- NULL pds <- NULL nbjuge <- dim(X)[[3]] p <- dim(X)[[1]] nbcolonne <- dim(X)[[2]] M <- array(0, c(p, p, nbjuge)) Cj <- array(0, c(p, p, nbjuge)) U <- matrix(1, p, 1) Ip <- diag(rep(1, p), p, p) Xm <- X v <- rep(1, p) VMQTE <- FALSE for (j in 1:nbjuge) { vdiag <- v if (length(placevm(Xm[, , j])$vect) == 0) { M[, , j] <- Ip } else { vdiag[placevm(Xm[, , j])$vect] <- 0 M[, , j] <- diag(vdiag, length(vdiag), length(vdiag)) VMQTE <- TRUE } } vdiag <- NULL mat1 <- U %*% t(U) for (j in 1:nbjuge) { Cj[, , j] <- M[, , j] %*% (Ip - mat1 %*% M[, , j]/as.numeric(t(U) %*% M[, , j] %*% U)) } Cc <- Cj[, , 1] for (j in 2:nbjuge) { Cc <- Cc + Cj[, , j] } invgC <- ginv(Cc) Xm1 <- Xm for (j in 1:nbjuge) { for (i in 1:dim(Xm)[[1]]) { Xm1[i, , j] <- replace(Xm1[i, , j], is.na(Xm1[i, , j]), 999999) } } lambda2 <- 0 for (j in 1:nbjuge) { lambda2 <- lambda2 + sum(diag(t(Xm1[, , j]) %*% Cj[, , j] %*% Xm1[, , j])) } lambda <- (nbjuge/(lambda2))^0.5 Xnorm <- Xm1 * lambda diagW <- NULL for (i in 1:nbjuge) { diagW <- c(diagW, 1/sum(diag(t(Xnorm[, , i]) %*% Cj[, , i] %*% Xnorm[, , i]))^0.5) } W12 <- diag(diagW, nbjuge, nbjuge) pds <- rep(1, nbjuge) R <- array(0, c(nbcolonne, nbcolonne, nbjuge)) Im <- diag(rep(1, nbcolonne), nbcolonne, nbcolonne) for (i in 1:nbjuge) { R[, , i] <- Im } Aj <- array(0, c(nbcolonne, nbcolonne, nbjuge)) for (j in 1:nbjuge) { sommetemp <- pds[1] * Cj[, , 1] %*% Xnorm[, , 1] %*% R[, , 1] for (i in 2:nbjuge) { sommetemp <- sommetemp + pds[i] * Cj[, , i] %*% Xnorm[, , i] %*% R[, , i] } R[, , j] <- procrustesbis(Cj[, , j] %*% Xnorm[, , j], invgC %*% (sommetemp - pds[j] * Cj[, , j] %*% Xnorm[, , j] %*% R[, , j]))$H } sommetemp2 <- NULL sommetemp2 <- pds[1] * Cj[, , 1] %*% Xnorm[, , 1] %*% R[, , 1] for (i in 2:nbjuge) { sommetemp2 <- sommetemp2 + pds[i] * Cj[, , i] %*% Xnorm[, , i] %*% R[, , i] } matidd <- t(sommetemp2) %*% invgC %*% sommetemp2 lossf <- nbjuge - sum(diag(t(sommetemp2) %*% invgC %*% sommetemp2)) lossf2 <- lossf if (scale) { matY <- matrix(0, nbjuge, nbjuge) B <- array(0, c(p, nbcolonne, nbjuge)) for (k in 1:nbjuge) { B[, , k] <- Cj[, , k] %*% Xnorm[, , k] %*% R[, , k] } for (k in 1:nbjuge) { for (l in 1:nbjuge) { matY[k, l] <- sum(diag(t(B[, , k]) %*% invgC %*% B[, , l])) } } eigzou <- eigen(W12 %*% matY %*% W12) verifsigne <- sum(eigzou$vectors[, 1] < 0) tailleeig <- dim(eigzou$vectors)[[1]] if (verifsigne == tailleeig) { vecteurpropre <- eigzou$vectors[, 1] * (-1) } else { vecteurpropre <- eigzou$vectors[, 1] } verifsigne <- NULL tailleeig <- NULL pds <- (nbjuge)^0.5 * W12 %*% as.matrix(vecteurpropre) sommetemp2 <- pds[1] * Cj[, , 1] %*% Xnorm[, , 1] %*% R[, , 1] for (i in 2:nbjuge) { sommetemp2 <- sommetemp2 + pds[i] * Cj[, , i] %*% Xnorm[, , i] %*% R[, , i] } lossf2 <- (nbjuge - sum(diag(t(sommetemp2) %*% invgC %*% sommetemp2))) } tol <- lossf2 itorth <- lossf itpoids <- lossf2 lossf <- lossf2 compteur <- 0 while (tol > tolerance && compteur < nbiteration) { for (j in 1:nbjuge) { sommetemp <- pds[1] * Cj[, , 1] %*% Xnorm[, , 1] %*% R[, , 1] for (i in 2:nbjuge) { sommetemp <- sommetemp + pds[i] * Cj[, , i] %*% Xnorm[, , i] %*% R[, , i] } R[, , j] <- procrustesbis(Cj[, , j] %*% Xnorm[, , j], invgC %*% (sommetemp - pds[j] * Cj[, , j] %*% Xnorm[, , j] %*% R[, , j]))$H } sommetemp2 <- NULL sommetemp2 <- pds[1] * Cj[, , 1] %*% Xnorm[, , 1] %*% R[, , 1] for (i in 2:nbjuge) { sommetemp2 <- sommetemp2 + pds[i] * Cj[, , i] %*% Xnorm[, , i] %*% R[, , i] } matidd <- t(sommetemp2) %*% invgC %*% sommetemp2 lossf2ortho <- nbjuge - sum(diag(t(sommetemp2) %*% invgC %*% sommetemp2)) lossf2 <- lossf2ortho lossfpoids <- 0 if (scale) { matY <- matrix(0, nbjuge, nbjuge) B <- array(0, c(p, nbcolonne, nbjuge)) for (k in 1:nbjuge) { B[, , k] <- Cj[, , k] %*% Xnorm[, , k] %*% R[, , k] } for (k in 1:nbjuge) { for (l in 1:nbjuge) { matY[k, l] <- sum(diag(t(B[, , k]) %*% invgC %*% B[, , l])) } } eigzou <- eigen(W12 %*% matY %*% W12) if (sum(eigzou$vectors[, 1] < 0) == dim(eigzou$vectors)[[1]]) { vecteurpropre <- -eigzou$vectors[, 1] } else { vecteurpropre <- eigzou$vectors[, 1] } pds <- (nbjuge)^0.5 * W12 %*% as.matrix(vecteurpropre) sommetemp2 <- pds[1] * Cj[, , 1] %*% Xnorm[, , 1] %*% R[, , 1] for (i in 2:nbjuge) { sommetemp2 <- sommetemp2 + pds[i] * Cj[, , i] %*% Xnorm[, , i] %*% R[, , i] } lossfpoids <- (nbjuge - sum(diag(t(sommetemp2) %*% invgC %*% sommetemp2))) lossf2 <- (nbjuge - sum(diag(t(sommetemp2) %*% invgC %*% sommetemp2))) } tol <- (lossf - lossf2) lossf <- lossf2 itorth <- c(itorth, lossf2ortho) itpoids <- c(itpoids, lossfpoids) compteur <- compteur + 1 } sommetemp2 <- NULL sommetemp2 <- pds[1] * Cj[, , 1] %*% Xnorm[, , 1] %*% R[, , 1] for (i in 2:nbjuge) { sommetemp2 <- sommetemp2 + pds[i] * Cj[, , i] %*% Xnorm[, , i] %*% R[, , i] } pp <- invgC %*% sommetemp2 translation <- matrix(0, nbcolonne, nbjuge) for (i in 1:nbjuge) { translation[, i] <- (t(pds[i] * Xnorm[, , i] - pp %*% t(R[, , i])) %*% M[, , i] %*% U)/as.numeric(pds[i] * t(U) %*% M[, , i] %*% U) } ppeig <- eigen(t(pp) %*% Cc %*% pp) Xfin <- Xnorm for (k in 1:nbjuge) { Xfin[, , k] <- pds[k] * M[, , k] %*% (Xnorm[, , k] - U %*% t(translation[, k])) %*% R[, , k] %*% as.matrix(ppeig$vectors) } it <- cbind(itorth, itpoids) colnames(it) <- c("rotation step", "scaling step") consensus <- pp %*% as.matrix(ppeig$vectors) cte <- 1 while (cte <= dim(consensus)[[2]]) { if (all(abs(consensus[, cte]) < sqrt(.Machine$double.eps))) { fina <- cte - 1 cte <- dim(consensus)[[2]] + 1 } else { fina <- cte cte <- cte + 1 } } row.names(consensus) <- row.names(df) colnames(consensus,do.NULL = FALSE, prefix = "dim") colnames(Xfin)<-paste("dim",1:dim(Xfin)[[2]],sep=".") row.names(Xfin) <- row.names(df) result <- list() class(result) <- c("GPAc", "list") result$depart <- df result$name.group <- name.group result$M <- M result$Cj <- Cj result$consensus <- consensus[, 1:fina] result$Z <- pp result$Xfin <- Xfin[, 1:fina, ] result$Xdeb <- Xnorm result$poids <- pds result$translation <- translation result$it <- it result$Rj <- R result$K <- as.matrix(ppeig$vectors) result$gama <- as.matrix(diag(ppeig$values)) result$VMQTE <- VMQTE return(result) } crit <- function(Ys, MATRICEFIN) { s1 <- 0 nbj <- dim(MATRICEFIN)[[3]] for (i in 1:nbj) { ai <- colSums((MATRICEFIN[, , i] - Ys)^2) s1 <- s1 + sum(ai) } return(s1) } f1ter <- function(tab, P = 5, scal, df, name.group, vm, tol) { nbj <- dim(tab)[[3]] permutation <- NULL for (i in 1:P) { permutation <- rbind(permutation, sample(nbj)) } listresult <- list() length(listresult) <- 3 * P critfin <- NULL for (i in 1:P) { permutcolonne <- NULL for (colonne in 1:nbj) { permutcolonne <- rbind(permutcolonne, sample(dim(tab)[[2]])) } listesigne <- list() length(listesigne) <- nbj compteur <- 1 while (compteur <= nbj) { topn2 <- sample(seq(0, dim(tab)[[2]], 1), 1) if (topn2 == 0) compteur <- compteur + 1 if (topn2 != 0) { listesigne[[compteur]] <- sample(dim(tab)[[2]], topn2) compteur <- compteur + 1 } } organisation <- sample(1:3) if (organisation[[1]] == 1) { tempo <- tab[, , permutation[i, ]] if (organisation[[2]] == 2) { tempo2 <- permutcolonneX(tempo, permutcolonne) tempo3 <- changesignecolonneX(tempo2, listesigne) } else { tempo2 <- changesignecolonneX(tempo, listesigne) tempo3 <- permutcolonneX(tempo2, permutcolonne) } } else { if (organisation[[1]] == 2) { tempo <- permutcolonneX(tab, permutcolonne) if (organisation[[2]] == 1) { tempo2 <- tempo[, , permutation[i, ]] tempo3 <- changesignecolonneX(tempo2, listesigne) } else { tempo2 <- changesignecolonneX(tempo, listesigne) tempo3 <- tempo2[, , permutation[i, ]] } } else { tempo <- changesignecolonneX(tab, listesigne) if (organisation[[2]] == 1) { tempo2 <- tempo[, , permutation[i, ]] tempo3 <- permutcolonneX(tempo2, permutcolonne) } else { tempo2 <- permutcolonneX(tempo, permutcolonne) tempo3 <- tempo2[, , permutation[i, ]] } } } listresult[[i]] <- algogpa(tempo3, scale = scal, df = df, name.group = name.group, tolerance = tol) if (vm) { tableau <- crit.procGPAcvmqte(gpafin)$objet crit1 <- tableau[dim(tableau)[[1]], 2] * 100/tableau[dim(tableau)[[1]], 3] } else { crit1 <- crit(listresult[[i]]$consensus, listresult[[i]]$Xfin) } critfin <- c(critfin, crit1) } ord1 <- order(critfin) gpafin <- listresult[[ord1[1]]] return(list(gpafin = gpafin, permutab = permutation[ord1[[1]], ])) } permutcolonneX <- function(X, permutcolonne) { Xfin <- X for (i in 1:dim(X)[[3]]) { Xfin[, , i] <- as.matrix(X[, , i][, permutcolonne[i, ]]) } return(Xfin) } changesignecolonneX <- function(X, chgesigne) { Xfin <- X for (i in 1:dim(X)[[3]]) { if (is.null(chgesigne[[i]])) Xfin[, , i] <- X[, , i] else { Xfin[, chgesigne[[i]], i] <- -X[, chgesigne[[i]], i] } } return(Xfin) } calibre <- function(X) { if (!is.array(X)) stop("On souhaite ici avoir un tableau de type array ") nbj <- dim(X)[[3]] dimlist <- NULL mattravlist <- list() for (i in 1:nbj) { if (length(placevm(X[, , i])$vect) == 0) { res.pca <- PCA(as.matrix(X[, , i]), scale.unit = FALSE, graph = FALSE, ncp = min(dim(X[, , i])[[1]], dim(X[, , i])[[2]])) mattravlist[[i]] <- as.matrix(res.pca$ind$coord) dimlist <- c(dimlist, dim(mattravlist[[i]])[[2]]) } else { res.pca <- PCA(as.matrix(X[-(placevm(X[, , i])$vect), , i]), scale.unit = FALSE, graph = FALSE, ncp = min(dim(X[, , i])[[1]], dim(X[, , i])[[2]])) temp <- matrix(0, dim(X)[[1]], dim(as.matrix(res.pca$ind$coord))[[2]]) temp[-placevm(X[, , i])$vect, ] <- as.matrix(res.pca$ind$coord) mattravlist[[i]] <- temp dimlist <- c(dimlist, dim(mattravlist[[i]])[[2]]) } } mattrav <- array(0, c(dim(X)[[1]], max(dimlist), nbj)) for (i in 1:nbj) { mattrav[, 1:dimlist[[i]], i] <- mattravlist[[i]] } tabfin <- mattrav for (i in 1:nbj) { if (length(placevm(X[, , i])$vect) == 0) { mattrav[, , i] <- tabfin[, , i] } else { tabfin[placevm(X[, , i])$vect, , i] <- NA mattrav[, , i] <- tabfin[, , i] } } return(mattrav) } if (is.null(name.group)) name.group <- paste("group", c(1:length(group)), sep = ".") if (!is.data.frame(df)) stop("df is not a data.frame") blo <- group nbjuge <- length(blo) X <- array(0, c(nrow(df), max(blo), nbjuge)) dimnames(X) <- list(rownames(df), 1:max(blo), name.group) indice <- 0 for (i in 1:nbjuge) { X[, 1:blo[i], i] <- as.matrix(df[, (indice + 1):(indice + blo[i])]) indice <- indice + blo[i] } Xdd <- X X1 <- calibre(X) gpafin <- algogpa(X1, df = df, name.group = name.group) gpares <- f1ter(X1, P = 5, scal = scale, tol = tolerance, df = df, name.group = name.group, vm = gpafin$VMQTE) odd <- order(gpares$permutab) x <- gpares$gpafin gpafin <- x gpafin$translation <- x$translation[, odd] gpafin$M <- (x$M)[, , odd] gpafin$Cj <- (x$Cj)[, , odd] gpafin$Xfin <- x$Xfin[, , odd] gpafin$Xdeb <- x$Xdeb[, , odd] gpafin$Rj <- x$Rj[, , odd] gpafin$poids <- as.matrix(x$poids[odd]) Xdep <- calibre(X) row.names(Xdep) <- row.names(df) colnames(Xdep) <- c(paste("dim", 1:dim(Xdep)[[2]])) x <- gpafin RVs <- matrix(-1, nbjuge, nbjuge) RV <- matrix(-1, nbjuge, nbjuge) sim <- matrix(-1, nbjuge, nbjuge) if (x$VMQTE) { vmplacelist <- list() length(vmplacelist) <- nbjuge for (theta in 1:nbjuge) { if (length(placevm(Xdd[, , theta])$vect) != 0) { vmplacelist[[theta]] <- placevm(Xdd[, , theta])$vect } } for (i in 1:nbjuge) { for (j in i:nbjuge) { if (length(c(vmplacelist[[i]], vmplacelist[[j]])) != 0) { Xi <- Xdd[, , i][-c(vmplacelist[[i]], vmplacelist[[j]]), ] Xj <- Xdd[, , j][-c(vmplacelist[[i]], vmplacelist[[j]]), ] if (is.null(dim(Xi))) { Xi <- t(as.matrix(Xdd[, , i][-c(vmplacelist[[i]], vmplacelist[[j]]), ])) Xj <- t(as.matrix(Xdd[, , j][-c(vmplacelist[[i]], vmplacelist[[j]]), ])) } } if (length(c(vmplacelist[[i]], vmplacelist[[j]])) == 0) { Xi <- Xdd[, , i] Xj <- Xdd[, , j] } RVs[i, j] <- RVs[j, i] <- coeffRV(Xi, Xj)$rvstd RV[i, j] <- RV[j, i] <- coeffRV(Xi, Xj)$rv sim[i, j] <- sim[j, i] <- similarite(Xi, Xj) } } } else { for (i in 1:nbjuge) { for (j in i:nbjuge) { Xi <- Xdd[, , i] Xj <- Xdd[, , j] RVs[i, j] <- RVs[j, i] <- coeffRV(Xi, Xj)$rvstd RV[i, j] <- RV[j, i] <- coeffRV(Xi, Xj)$rv sim[i, j] <- sim[j, i] <- similarite(Xi, Xj) } } } row.names(RV) <- colnames(RV) <- name.group row.names(RVs) <- colnames(RVs) <- name.group row.names(sim) <- colnames(sim) <- name.group listcor <- list() namelist <- NULL for (i in 1:dim(x$Xfin)[[3]]) { namelist <- c(namelist, paste("cor", name.group[[i]])) listcor[[i]] <- cor(scale(Xdd[, 1:blo[[i]], i], scale = FALSE), x$consensus, use = "pairwise.complete.obs") } listdimblo <- NULL for (i in 1:length(blo)) { listdimblo <- c(listdimblo, (max(blo) - blo[[i]])) } if (max(round(listdimblo, 6)) <= 10^-5) { averagecor <- 0 * listcor[[1]] for (i in 1:dim(x$Xfin)[[3]]) { averagecor <- averagecor + listcor[[i]] } averagecor <- averagecor/dim(x$Xfin)[[3]] listcor[[(dim(x$Xfin)[[3]] + 1)]] <- averagecor namelist <- c(namelist, "averagecor") names(listcor) <- namelist } names(listcor) <- namelist Xfin <- x$Xfin if (x$VMQTE) { for (i in 1:dim(x$Xfin)[[3]]) { Xfin[vmplacelist[[i]], , i] <- NA } } resultat <- list() class(resultat) <- c("GPA", "list") resultat$RV <- RV resultat$RVs <- RVs resultat$simi <- sim resultat$scaling <- x$poids resultat$dep <- Xdep resultat$consensus <- x$consensus resultat$Xfin <- Xfin resultat$correlations <- listcor if (x$VMQTE) resultat$PANOVA <- crit.procGPAcvmqte(x) else resultat$PANOVA <- crit.procGPAcsansvm(x) if (graph) plot.GPA(resultat, axes = axes) return(resultat) } FactoMineR/R/MCA.R0000644000176200001440000003252414557176314013210 0ustar liggesusersMCA <- function (X, ncp = 5, ind.sup = NULL, quanti.sup = NULL, quali.sup = NULL, excl=NULL, graph = TRUE, level.ventil = 0, axes = c(1, 2), row.w = NULL, method="Indicator",na.method="NA",tab.disj=NULL){ ############ ventil.tab <- function (tab, level.ventil=0.05,row.w=NULL,ind.sup=NULL,quali.sup=NULL,quanti.sup=NULL) { if (is.null(row.w)) row.w <- rep(1,nrow(tab)-length(ind.sup)) col.var <- 1:ncol(tab) if (!is.null(c(quali.sup,quanti.sup))) col.var <- col.var[-c(quali.sup,quanti.sup)] for (i in col.var) { if (is.factor(tab[,i])){ tab[,i] <- ventilation(tab[,i],level.ventil=level.ventil,row.w=row.w,ind.sup=ind.sup) } if (is.ordered(tab[,i])){ tab[,i] <- ventilation.ordonnee(tab[,i],level.ventil=level.ventil,row.w=row.w,ind.sup=ind.sup) } } return(tab) } ventilation <- function(Xqual,level.ventil=0.05,row.w=NULL,ind.sup=NULL) { if (!is.factor(Xqual)) stop("Xqual should be a factor \n") modalites <- levels(Xqual) if (length(modalites)<=1) stop("not enough levels \n") if (is.null(ind.sup)) { ind.act <- (1:length(Xqual)) } else {ind.act <- (1:length(Xqual))[-ind.sup]} tabl <- table(Xqual[ind.act]) if (!is.null(row.w)){ for (j in 1:nlevels(Xqual)) tabl[j] <- sum((Xqual[ind.act]==levels(Xqual)[j])*row.w,na.rm=TRUE) } selecti <- (tabl/sum(tabl,na.rm=TRUE))< level.ventil if (sum(selecti)==length(modalites)) return(Xqual) if (!any(selecti)) return(Xqual) else { lesquels <- modalites[!selecti] # if (length(lesquels)==1) return(NULL) else { if (length(lesquels)==1) return(Xqual) else { prov <- factor(Xqual[(Xqual%in%lesquels)],levels=lesquels) prov <- table(prov) proba <- prov/sum(prov) for (j in modalites[selecti]) { Xqual[which(Xqual==j)] <- sample(lesquels,sum(Xqual==j,na.rm=TRUE), replace=TRUE,prob=proba) } Xqualvent <- factor(as.character(Xqual)) } } return(Xqualvent) } ventilation.ordonnee <- function(Xqual,level.ventil=0.05,ind.sup=NULL,row.w=NULL) { if (!is.ordered(Xqual)) stop("Xqual must be ordered \n") mod <- levels(Xqual) if (length(mod)<=1) stop("not enough levels \n") if (is.null(ind.sup)) { ind.act <- (1:length(Xqual)) } else {ind.act <- (1:length(Xqual))[-ind.sup]} tabl <- table(Xqual[ind.act]) if (!is.null(row.w)){ for (j in 1:nlevels(Xqual)) tabl[j] <- sum((Xqual[ind.act]==levels(Xqual)[j])*row.w,na.rm=TRUE) } selecti <- (tabl/sum(tabl))1)&(j1) return(Xqual) # else return(NULL) return(Xqual) } # fct.eta2 <- function(vec,x,weights) { # res <- summary(lm(x~vec,weights=weights))$r.squared # } fct.eta2 <- function(vec,x,weights) { VB <- function(xx) { return(sum((colSums((tt*xx)*weights)^2)/ni)) } tt <- tab.disjonctif(vec) ni <- colSums(tt*weights) unlist(lapply(as.data.frame(x),VB))/colSums(x*x*weights) } modif.rate <- function(resmca) { tab <- cbind.data.frame(resmca$eig,rep(0, nrow(resmca$eig)),rep(100, nrow(resmca$eig))) nbvar <- nrow(resmca$var$eta) nbeig <- resmca$eig[resmca$eig[,1]>=1/nbvar,1] pseudo <- (nbvar/(nbvar-1)*(nbeig-1/nbvar))^2 tab[1:length(nbeig),4] <- round(pseudo/sum(pseudo)*100,2) tab[,5] <- cumsum(tab[,4]) colnames(tab)[4:5] <- c("modified rates","cumulative modified rates") return(tab) } ############# ## Main program ############# if (is.null(rownames(X))) rownames(X) <- 1:nrow(X) if (is.null(colnames(X))) colnames(X) <- colnames(X, do.NULL = FALSE,prefix="V") X <- as.data.frame(X) is.quali <- which(!unlist(lapply(X,is.numeric))) X[,is.quali] <- lapply(X[,is.quali,drop=FALSE],as.factor) X <- droplevels(X) ind.act <- setdiff(1:nrow(X),ind.sup) if (!is.null(which(lapply(X,class)=="logical"))){ for (k in which(lapply(X,class)=="logical")) X[,k] <- as.factor(X[,k]) } if (!is.null(quali.sup) & !is.numeric(quali.sup)) quali.sup<- which(colnames(X)%in%quali.sup) if (!is.null(quanti.sup) & !is.numeric(quanti.sup)) quanti.sup<- which(colnames(X)%in%quanti.sup) if (level.ventil > 0) X <- ventil.tab(X,level.ventil=level.ventil,row.w=row.w,ind.sup=ind.sup,quali.sup=quali.sup,quanti.sup=quanti.sup) niveau <- unlist(lapply(X,levels)) if (sum(duplicated(niveau))>0){ for (j in 1:ncol(X)) { if (sum(niveau %in% levels(X[, j])) != nlevels(X[, j])) levels(X[, j]) <- paste(attributes(X)$names[j], levels(X[, j]), sep = "_") } } nonact <- c(quanti.sup,quali.sup) if (!is.null(nonact)) act <- (1:ncol(X))[-nonact] else act <- (1:ncol(X)) Z <- tab.disjonctif(X[, act,drop=FALSE]) ## add for ecxl aux <- colnames(Z)%in%excl if (any(aux)) excl <- which(aux) if (any(is.na(X[,act]))){ if (is.null(tab.disj)){ if (na.method=="Average"){ newRowW <- rep(1e-08,nrow(X)) newRowW[-ind.sup] <- row.w Z <- tab.disjonctif.prop(X[, act],row.w=newRowW) } if (na.method=="NA"){ warnings('Missing values for one variable are considered as a new category; you can use method="Average" or use the imputeMCA function of the missMDA package') for (j in act) X[,j] <- as.factor(replace(as.character(X[,j]),is.na(X[,j]),paste(attributes(X)$names[j],".NA",sep=""))) Z <- tab.disjonctif(X[, act]) } } else{ Vec <- rep("var",ncol(X)) NLevels <- sapply(X,nlevels) if (!is.null(quali.sup)) Vec[quali.sup] <- "quali.sup" if (!is.null(quanti.sup)){ Vec[quanti.sup] <- "quanti.sup" NLevels[NLevels==0] <- 1 } TabDisjMod <- rep(Vec,NLevels) Z <- tab.disj[,which(TabDisjMod=="var")] } } Ztot <- Z col.sup <- NULL if (!is.null(quali.sup)){ if (any(is.na(X[,quali.sup,drop=FALSE]))){ for (j in quali.sup) X[,j] <- as.factor(replace(as.character(X[,j]),is.na(X[,j]),paste(attributes(X)$names[j],".NA",sep=""))) } X[,quali.sup] <- ventil.tab(X[,quali.sup,drop=FALSE],level.ventil=level.ventil,row.w=row.w,ind.sup=ind.sup) if (is.null(tab.disj)) Zqs <- tab.disjonctif(X[, quali.sup]) else Zqs <- tab.disj[,which(TabDisjMod=="quali.sup")] Ztot <- cbind.data.frame(Z, Zqs) col.sup <- (ncol(Z) + 1):ncol(Ztot) } Xact <- X[,act] if (!is.null(quanti.sup)){ if (any(is.na(X[,quanti.sup,drop=FALSE]))){ for (j in quanti.sup) X[,j] <- replace(X[,j],is.na(X[,j]), mean(X[,j], na.rm=TRUE)) } if (is.null(tab.disj)) X.quanti.sup <- as.matrix(X[, quanti.sup]) else X.quanti.sup <- tab.disj[,which(TabDisjMod=="quanti.sup"),drop=FALSE] if (!is.null(ind.sup)) X.quanti.sup <- X.quanti.sup[ind.act, ,drop=FALSE] colnames(X.quanti.sup) <- attributes(X)$names[quanti.sup] } if (is.null(row.w)) row.w <- rep(1, nrow(X) - length(ind.sup)) if (length(row.w) != nrow(X) - length(ind.sup)) stop("length of vector row.w should be the number of active rows") if (tolower(method)=="burt") { ## boucle utile pour calculer la distance au cdg et pour calculer les cos2 res.mca <- CA(Ztot, ncp = ncol(Z)-length(act), row.sup = ind.sup, col.sup = col.sup, graph = FALSE, row.w = row.w, excl=excl) res.mca$col$coord <- t(t(res.mca$col$coord)*sqrt(res.mca$eig[1:ncol(res.mca$col$coord),1])) auxil <- rowSums(res.mca$col$coord^2) if (!is.null(col.sup)){ res.mca$col.sup$coord <- t(t(res.mca$col.sup$coord)*sqrt(res.mca$eig[1:ncol(res.mca$col.sup$coord),1])) auxil2 <- rowSums(res.mca$col.sup$coord^2) } } res.mca <- CA(Ztot, ncp = min(ncp,ncol(Z)-length(act)), row.sup = ind.sup, excl=excl, col.sup = col.sup, graph = FALSE, row.w = row.w) if (is.null(ncol(res.mca$row$coord))) res.mca$row$coord <- matrix(res.mca$row$coord,ncol=1) ncp <- ncol(res.mca$row$coord) res.mca$call$X <- X res.mca$call$ind.sup <- ind.sup res.mca$call$quali <- (1:ncol(X)) if (!is.null(quali.sup) | !is.null(quanti.sup)) res.mca$call$quali <- res.mca$call$quali[-c(quali.sup, quanti.sup)] res.mca$call$quali.sup <- quali.sup res.mca$call$quanti.sup <- quanti.sup res.mca$call$row.w <- row.w if (!is.null(excl)) res.mca$call$excl <- excl res.mca$call$call <- match.call() if (length(act)>1) res.mca$eig <- res.mca$eig[1:min(length(ind.act)-1,sum(sapply(Xact,nlevels))-length(act)),,drop=FALSE] else res.mca$eig <- res.mca$eig[1:(nlevels(Xact)-1),,drop=FALSE] names(res.mca)[3] <- "ind" res.mca$ind <- res.mca$ind[1:3] names(res.mca$ind) <- c("coord", "contrib", "cos2") names(res.mca)[4] <- "var" if (tolower(method)=="burt"){ res.mca$var$coord <- t(t(res.mca$var$coord)*sqrt(res.mca$eig[1:ncol(res.mca$var$coord),1])) res.mca$var$cos2 <- res.mca$var$coord^2/auxil } res.mca$var <- res.mca$var[1:3] names(res.mca$var) <- c("coord", "contrib", "cos2") indice <- 6 if (!is.null(ind.sup)) { names(res.mca)[indice] <- "ind.sup" names(res.mca$ind.sup) <- c("coord", "cos2") indice <- indice + 1 Xact <- X[ind.act,act ,drop=FALSE] } if (!is.null(quali.sup)) { names(res.mca)[indice] <- "quali.sup" names(res.mca$quali.sup) <- c("coord", "cos2") if (tolower(method)=="burt"){ res.mca$quali.sup$coord <- t(t(res.mca$quali.sup$coord)*sqrt(res.mca$eig[1:ncol(res.mca$quali.sup$coord),1])) res.mca$quali.sup$cos2 <- res.mca$quali.sup$coord^2/auxil2 } } if (!is.null(ind.sup)) Z <- Z[ind.act, ] Nj <- colSums(Z * row.w) N <- sum(Nj)/(ncol(X) - length(quali.sup) - length(quanti.sup)) if (N>1) coef <- sqrt(Nj * ((N - 1)/(N - Nj))) else coef <- sqrt(Nj) res.mca$var$v.test <- as.matrix(res.mca$var$coord*coef) # if (ncp>1) eta2 <- t(sapply(Xact,fct.eta2,res.mca$ind$coord,weights=row.w)) # else { # eta2 <- as.matrix(sapply(Xact,fct.eta2,res.mca$ind$coord,weights=row.w),ncol=ncp) # colnames(eta2) = paste("Dim", 1:ncp) # rownames(eta2) = colnames(Xact) # } variable <- rep(attributes(Xact)$names,unlist(lapply(Xact,nlevels))) if (length(act)>1){ CTR <- aggregate(res.mca$var$contrib/100,by=list(factor(variable)),FUN=sum) rownames(CTR) <- CTR[,1] CTR <- t(t(CTR[,-1,drop=FALSE])*res.mca$eig[1:ncp,1])*ncol(Xact) eta2 <- CTR[attributes(Xact)$names,,drop=FALSE] res.mca$var$eta2 <- eta2 } else { eta2 <- matrix(1,1,ncp) colnames(eta2) <- paste("Dim",1:ncp) rownames(eta2) <- colnames(X[,act,drop=FALSE]) res.mca$var$eta2 <- eta2 } if (!is.null(quali.sup)) { if (!is.null(ind.sup)) Zqs <- Zqs[ind.act, ] Nj <- colSums(Zqs * row.w) if (N>1) coef <- sqrt(Nj * ((N - 1)/(N - Nj))) else coef <- sqrt(Nj) res.mca$quali.sup$v.test <- as.matrix(res.mca$quali.sup$coord*coef) eta2 <- matrix(NA, length(quali.sup), ncp) colnames(eta2) <- paste("Dim", 1:ncp) rownames(eta2) <- attributes(X)$names[quali.sup] if (ncp>1) eta2 <- t(sapply(as.data.frame(X[rownames(Xact), quali.sup,drop=FALSE]),fct.eta2,res.mca$ind$coord,weights=row.w)) else { eta2 <- as.matrix(sapply(as.data.frame(X[rownames(Xact), quali.sup,drop=FALSE]),fct.eta2,res.mca$ind$coord,weights=row.w),ncol=ncp) } res.mca$quali.sup$eta2 <- eta2 } if (!is.null(quanti.sup)) { U <- res.mca$svd$U coord.quanti.sup <- matrix(NA, ncol(X.quanti.sup), ncp) coord.quanti.sup <- cov.wt(cbind.data.frame(U,X.quanti.sup),cor=TRUE,wt=row.w,method="ML")$cor[-(1:ncol(U)),1:ncol(U),drop=FALSE] # coord.quanti.sup <- cor(X.quanti.sup,U,method="pearson") dimnames(coord.quanti.sup) <- list(colnames(X.quanti.sup), paste("Dim", 1:ncp)) res.mca$quanti.sup$coord <- coord.quanti.sup } if (tolower(method)=="burt"){ res.mca$eig[,1] <- res.mca$eig[,1]^2 res.mca$eig[,2] <- res.mca$eig[,1]/sum(res.mca$eig[,1]) * 100 res.mca$eig[,3] <- cumsum(res.mca$eig[,2]) } if (!is.null(excl)){ res.mca$excl$coord <- res.mca$var$coord[excl,] res.mca$excl$cos2 <- res.mca$var$cos2[excl,] res.mca$excl$v.test <- res.mca$var$v.test[excl,] res.mca$var$coord <- res.mca$var$coord[-excl,] res.mca$var$contrib <- res.mca$var$contrib[-excl,] res.mca$var$cos2 <- res.mca$var$cos2[-excl,] res.mca$var$v.test <- res.mca$var$v.test[-excl,] res.mca$eig <- modif.rate(res.mca) } class(res.mca) <- c("MCA", "list") if (graph & (ncp>1)) { print(plot.MCA(res.mca, choix = "ind", invisible="ind", axes = axes,new.plot=TRUE)) if (method=="Indicator") print(plot.MCA(res.mca, choix = "ind", invisible=c("var","quali.sup","quanti.sup"), axes = axes,new.plot=TRUE,cex=0.8)) print(plot.MCA(res.mca, choix = "var", axes = axes,new.plot=TRUE)) if (!is.null(quanti.sup)) print(plot.MCA(res.mca, choix = "quanti.sup", axes = axes,new.plot=TRUE)) } return(res.mca) } FactoMineR/R/print.dimdesc.R0000644000176200001440000000020514254065362015334 0ustar liggesusersprint.dimdesc<-function(x, ...){ if (!inherits(x, "dimdesc")) stop("need to be a dimdesc object") print(x[-length(x)]) }FactoMineR/R/LinearModel.R0000644000176200001440000002241214505536570014773 0ustar liggesusersLinearModel <- function (formula, data, na.action = na.omit, type = c("III", "II", 3, 2), selection=c("none","aic","bic"), ...) { old.contr <- options()$contrasts on.exit(options(contrasts = old.contr)) cl <- match.call() if (missing(data)) { mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "weights", "na.action", "offset"), names(mf), 0L) mf <- mf[c(1L, m)] mf[[1L]] <- quote(stats::model.frame) data <- eval(mf, parent.frame()) } type <- type[1] data <- as.data.frame(data) is.quali <- which(!unlist(lapply(data,is.numeric))) data[,is.quali] <- lapply(data[,is.quali,drop=FALSE],as.factor) data <- droplevels(data) options(contrasts = c("contr.sum", "contr.sum")) don <- data if (is.null(selection)) selection <- "none" selection <- tolower(selection[1]) selection <- match.arg(selection,c("bic","aic","none","no")) arg <- list(...) arg <- c(arg, list(formula = formula, data = don, na.action = na.action)) modele <- do.call(lm, arg) aic <- extractAIC(modele)[2] bic <- extractAIC(modele, k=log(nrow(data)))[2] # modele <- do.call(aov, arg) if ((selection=="bic") | (selection=="aic")){ sumLmComp <- summary.lm(modele) sumLmComp$call <- cl sumLmComp$call[[1]]=as.name("lm") sumLmComp$call <- sumLmComp$call[-length(sumLmComp$call)] sumLmComp$aic <- aic sumLmComp$bic <- bic # cl[[1]] <- quote(lm) # ne pas mettre car pb si variable quali # if ("selection"%in%names(cl)) cl <- cl[-which(names(cl)%in%"selection")] clComp <- cl if (tolower(selection)=="bic") modSelect <- step(modele, k=log(nrow(data)),trace=0) if (tolower(selection)=="aic") modSelect <- step(modele,trace=0) if (length(modSelect$coefficients)==1){ warning("The selection leads to the null model (with 0 variables).\n Here are the results of the full model without selection ... but it may be not useful!") } else { cl$formula <- modSelect$call$formula arg <- list(...) arg <- c(arg, list(formula = as.formula(modSelect$call$formula), data = don, na.action = na.action)) modele <- do.call(lm, arg) aic <- extractAIC(modele)[2] bic <- extractAIC(modele, k=log(nrow(data)))[2] } } test.F <- car::Anova(modele, type = type) if ((type=="III") | (type=="3")) test.F <- test.F[-1, ] test.F <- test.F[c(1, 2, 2, 3, 4)] test.F[3] <- test.F[1]/test.F[2] colnames(test.F)[1] <- "SS" colnames(test.F)[2] <- "df" colnames(test.F)[3] <- "MS" sumLm <- summary.lm(modele) sumLm$call <- cl sumLm$call$selection <- "none" sumLm$call[[1]] <- as.name("lm") sumLm$aic <- aic sumLm$bic <- bic test.T <- sumLm$coef cov.mat <- vcov(modele) facteurs.old <- facteurs <- as.list(rownames(attr(modele$terms, "factors"))[-1]) for (i in 1:length(facteurs)){ if (length(strsplit(facteurs[[i]]," ")[[1]])>1){ facteurs[[i]] <- strsplit(strsplit(facteurs[[i]]," ")[[1]][2],"]")[[1]] ## if variable with the name of the dataset if (length(strsplit(facteurs[[i]],"\"")[[1]])>1) { ## if variables are named facteurs[[i]] <- strsplit(facteurs[[i]],"\"")[[1]][2] } else { facteurs[[i]] <- as.integer(facteurs[[i]]) } } if (length(strsplit(facteurs[[i]],"`")[[1]])>1) facteurs[[i]] <- strsplit(facteurs[[i]],"`")[[1]][2] } interact <- NULL if (length(colnames(attr(modele$terms, "factors"))) > length(facteurs)) interact <- colnames(attr(modele$terms, "factors"))[-(1:length(facteurs))] niveau <- list() for (i in 1:length(facteurs)) { if (is.factor(don[, facteurs[[i]]])) niveau[[i]] <- paste(facteurs.old[[i]], levels(don[, facteurs[[i]]]), sep = " - ") else niveau[[i]] <- facteurs.old[[i]] } res <- test.T[c(1, 1), ] iinit <- 2 for (i in 1:length(facteurs)) { old.rownames <- rownames(res) if (is.factor(don[, facteurs[[i]]])) { indices <- iinit:(iinit + nlevels(don[, facteurs[[i]]]) - 2) dern.mod <- c(-sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), -sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res <- rbind(res, test.T[indices, ], dern.mod) rownames(res) <- c(old.rownames, niveau[[i]]) iinit <- iinit + nlevels(don[, facteurs[[i]]]) - 1 } else { indices <- iinit res <- rbind(res, test.T[indices, ]) rownames(res) <- c(old.rownames, niveau[[i]]) iinit <- iinit + 1 } } res <- res[-1, ] if (!is.null(interact)) { for (k in 1:length(interact)) { fact.int.old <- rownames(attr(modele$terms, "factors"))[which(attr(modele$terms, "factors")[, interact[k]] == 1)] old.rownames <- rownames(res) fact.int <- as.list(fact.int.old) for (i in 1:length(fact.int)){ if (length(strsplit(fact.int[[i]]," ")[[1]])>1){ fact.int[[i]] <- strsplit(strsplit(fact.int[[i]]," ")[[1]][2],"]")[[1]] ## if variable with the name of the dataset if (length(strsplit(fact.int[[i]],"\"")[[1]])>1) { ## if variables are named fact.int[[i]] <- strsplit(fact.int[[i]],"\"")[[1]][2] } else { fact.int[[i]] <- as.integer(fact.int[[i]]) } } if (length(strsplit(fact.int[[i]],"`")[[1]])>1) fact.int[[i]] <- strsplit(fact.int[[i]],"`")[[1]][2] } fact1 <- fact.int[[1]] fact2 <- fact.int[[2]] iinit0 <- iinit if ((is.factor(don[, fact1])) & (is.factor(don[, fact2]))) { for (l in 1:(nlevels(don[, fact2]) - 1)) { indices <- iinit:(iinit + (nlevels(don[, fact1]) - 2)) dern.mod <- c(-sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), -sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res <- rbind(res, test.T[indices, ], dern.mod) iinit <- iinit + (nlevels(don[, fact1]) - 1) } iinit <- iinit0 for (l in 1:(nlevels(don[, fact1]) - 1)) { indices <- iinit + (nlevels(don[, fact1]) - 1) * (0:(nlevels(don[, fact2]) - 2)) dern.mod <- c(-sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), -sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res <- rbind(res, dern.mod) iinit <- iinit + 1 } indices <- iinit0:(iinit0 + (nlevels(don[, fact1]) - 1) * (nlevels(don[, fact2]) - 1) - 1) dern.mod <- c(sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res <- rbind(res, dern.mod) iinit <- iinit0 + (nlevels(don[, fact1]) - 1) * (nlevels(don[, fact2]) - 1) nom <- old.rownames aa <- paste(fact.int.old[2], levels(don[, fact2]), sep = " - ") for (i in 1:length(aa)) nom <- c(nom, paste(paste(fact.int.old[1], levels(don[, fact1]), sep = " - "), aa[i], sep = " : ")) } if ((is.factor(don[, fact1])) & (!is.factor(don[, fact2]))) { indices <- iinit:(iinit + (nlevels(don[, fact1]) - 2)) dern.mod <- c(-sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), -sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res <- rbind(res, test.T[indices, ], dern.mod) iinit <- iinit + (nlevels(don[, fact1]) - 1) nom <- c(old.rownames, paste(paste(fact1, levels(don[, fact1]), sep = " - "), fact2, sep = " : ")) } if ((!is.factor(don[, fact1])) & (is.factor(don[, fact2]))) { indices <- iinit:(iinit + (nlevels(don[, fact2]) - 2)) dern.mod <- c(-sum(test.T[indices, 1]), sqrt(sum(cov.mat[indices, indices])), -sum(test.T[indices, 1])/sqrt(sum(cov.mat[indices, indices])), pt(abs(sum(test.T[indices, 1]))/sqrt(sum(cov.mat[indices, indices])), test.F[nrow(test.F), 2], lower.tail = FALSE) * 2) res <- rbind(res, test.T[indices, ], dern.mod) iinit <- iinit + (nlevels(don[, fact2]) - 1) nom <- c(old.rownames, paste(paste(fact2, levels(don[, fact2]), sep = " - "), fact1, sep = " : ")) } if ((!is.factor(don[, fact1])) & (!is.factor(don[, fact2]))) { indices <- iinit res <- rbind(res, test.T[indices, ]) iinit <- iinit + 1 nom <- c(old.rownames, paste(fact1, fact2, sep = " : ")) } rownames(res) <- nom } } if (selection=="none") result <- list(Ftest = test.F, Ttest = res, call=cl, lmResult = sumLm) else result <- list(Ftest = test.F, Ttest = res, call=cl, lmResult = sumLm, callComp = clComp, lmResultComp = sumLmComp) class(result) <- "LinearModel" options(contrasts = old.contr) return(result) } FactoMineR/R/PCA.R0000644000176200001440000002533014315046511013173 0ustar liggesusersPCA <- function (X, scale.unit = TRUE, ncp = 5, ind.sup = NULL, quanti.sup = NULL, quali.sup = NULL, row.w = NULL, col.w = NULL, graph = TRUE, axes = c(1, 2)) { moy.ptab <- function(V, poids) { as.vector(crossprod(poids/sum(poids),as.matrix(V))) } ec.tab <- function(V, poids) { ecart.type <- sqrt(as.vector(crossprod(poids/sum(poids),as.matrix(V^2)))) ecart.type[ecart.type <= 1e-16] <- 1 return(ecart.type) } fct.eta2 <- function(vec,x,weights) { VB <- function(xx) { return(sum((colSums((tt*xx)*weights)^2)/ni)) } tt <- tab.disjonctif(vec) ni <- colSums(tt*weights) unlist(lapply(as.data.frame(x),VB))/colSums(x*x*weights) } X <- as.data.frame(X) is.quali <- which(!unlist(lapply(X,is.numeric))) if (length(is.quali)>0){ X[,is.quali] <- lapply(X[,is.quali,drop=FALSE],as.factor) niveau <- unlist(lapply(X[,is.quali,drop=FALSE],levels)) if (sum(duplicated(niveau))>0 | any(niveau%in%(1:nrow(X)))){ for (j in 1:ncol(X[,is.quali,drop=FALSE])) { if ((sum(niveau %in% levels(X[,is.quali[j]])) != nlevels(X[,is.quali[j]])) | any(levels(X[,is.quali[j]])%in%(1:nrow(X)))) levels(X[,is.quali[j]]) <- paste(attributes(X[,is.quali,drop=FALSE])$names[j], levels(X[,is.quali,drop=FALSE][, j]), sep = "_") } } } X <- droplevels(X) # if (!is.null(quali.sup) & is.numeric(quali.sup)) quali.sup <- colnames(X)[quali.sup] # if (!is.null(quanti.sup) & is.numeric(quanti.sup)) quanti.sup <- colnames(X)[quanti.sup] # if (!is.null(unused.var) & !is.numeric(unused.var)) unused.var<- which(colnames(X)%in%unused.var) # if (!is.null(unused.var)) X <- X[,-unused.var] if (!is.null(quali.sup) & !is.numeric(quali.sup)) quali.sup<- which(colnames(X)%in%quali.sup) if (!is.null(quanti.sup) & !is.numeric(quanti.sup)) quanti.sup<- which(colnames(X)%in%quanti.sup) if (any(is.na(X))) { warning("Missing values are imputed by the mean of the variable: you should use the imputePCA function of the missMDA package") if (is.null(quali.sup)) X[is.na(X)] <- matrix(colMeans(X,na.rm=TRUE),ncol=ncol(X),nrow=nrow(X),byrow=TRUE)[is.na(X)] else for (j in (1:ncol(X))[-quali.sup]) X[, j] <- replace(X[, j], is.na(X[, j]), mean(X[, j], na.rm = TRUE)) } Xtot <- X if (!is.null(quali.sup)) X <- X[, -quali.sup,drop=FALSE] auxi <- colnames(X)[!sapply(X, is.numeric)] if (length(auxi)>0) stop(paste("\nThe following variables are not quantitative: ", auxi)) todelete <- c(quali.sup, quanti.sup) if (!is.null(todelete)) X <- Xtot[, -todelete,drop=FALSE] if (!is.null(ind.sup)) { X.ind.sup <- X[ind.sup, , drop = FALSE] X <- X[-ind.sup, , drop = FALSE] } ncp <- min(ncp, nrow(X) - 1, ncol(X)) if (is.null(row.w)) row.w <- rep(1, nrow(X)) row.w.init <- row.w row.w <- row.w/sum(row.w) if (is.null(col.w)) col.w <- rep(1, ncol(X)) centre <- moy.ptab(X,row.w) data <- X X <- t(t(as.matrix(X))-centre) if (is.null(attributes(X)$row.names)) rownames(X) <- rownames(data) if (is.null(attributes(X)$names)) colnames(X) <- colnames(data) if (scale.unit) { ecart.type <- ec.tab(X,row.w) X <- t(t(X)/ecart.type) } else ecart.type <- rep(1, length(centre)) dist2.ind <- rowSums(t(t(X^2)*col.w)) dist2.var <- as.vector(crossprod(rep(1,nrow(X)),as.matrix(X^2*row.w))) res.call <- list(row.w = (row.w/sum(row.w)), col.w = col.w, scale.unit = scale.unit, ncp = ncp, centre = centre, ecart.type = ecart.type, X = Xtot, row.w.init = row.w.init,call=match.call()) tmp <- svd.triplet(X, row.w = row.w, col.w = col.w,ncp=ncp) eig <- tmp$vs^2 vp <- matrix(NA, length(eig), 3) rownames(vp) <- paste("comp", 1:length(eig)) colnames(vp) <- c("eigenvalue", "percentage of variance", "cumulative percentage of variance") vp[, "eigenvalue"] <- eig vp[, "percentage of variance"] <- (eig/sum(eig)) * 100 vp[, "cumulative percentage of variance"] <- cumsum(vp[, "percentage of variance"]) V <- tmp$V U <- tmp$U eig <- eig[1:ncp] coord.ind <- t(t(as.matrix(U))*sqrt(eig)) coord.var <- t(t(as.matrix(V))*sqrt(eig)) contrib.var <- t(t(coord.var^2)/eig)*col.w dist2 <- dist2.var cor.var <- coord.var/sqrt(dist2) cos2.var <- cor.var^2 rownames(coord.var) <- rownames(cos2.var) <- rownames(cor.var) <- rownames(contrib.var) <- colnames(X) colnames(coord.var) <- colnames(cos2.var) <- colnames(cor.var) <- colnames(contrib.var) <- paste("Dim", c(1:ncol(V)), sep = ".") res.var <- list(coord = coord.var[, 1:ncp,drop=FALSE], cor = cor.var[, 1:ncp,drop=FALSE], cos2 = cos2.var[, 1:ncp,drop=FALSE], contrib = contrib.var[, 1:ncp,drop=FALSE] * 100) dist2 <- dist2.ind cos2.ind <- coord.ind^2/dist2 contrib.ind <- t(t(coord.ind^2*row.w/sum(row.w))/eig) rownames(coord.ind) <- rownames(cos2.ind) <- rownames(contrib.ind) <- names(dist2) <- rownames(X) colnames(coord.ind) <- colnames(cos2.ind) <- colnames(contrib.ind) <- paste("Dim", c(1:ncol(U)), sep = ".") res.ind <- list(coord = coord.ind[, 1:ncp,drop=FALSE], cos2 = cos2.ind[, 1:ncp,drop=FALSE], contrib = contrib.ind[, 1:ncp,drop=FALSE] * 100, dist = sqrt(dist2)) res <- list(eig = vp, var = res.var, ind = res.ind, svd = tmp) if (!is.null(ind.sup)) { if (is.null(ecart.type)) ecart.type <- rep(1, length(centre)) X.ind.sup <- t(t(as.matrix(X.ind.sup))-centre) X.ind.sup <- t(t(X.ind.sup)/ecart.type) coord.ind.sup <- t(t(X.ind.sup)*col.w) coord.ind.sup <- crossprod(t(coord.ind.sup),tmp$V) dist2 <- rowSums(t(t(X.ind.sup^2)*col.w)) cos2.ind.sup <- coord.ind.sup^2/dist2 coord.ind.sup <- coord.ind.sup[, 1:ncp, drop = F] cos2.ind.sup <- cos2.ind.sup[, 1:ncp, drop = F] colnames(coord.ind.sup) <- colnames(cos2.ind.sup) <- paste("Dim", c(1:ncp), sep = ".") rownames(coord.ind.sup) <- rownames(cos2.ind.sup) <- names(dist2) <- rownames(X.ind.sup) res.ind.sup <- list(coord = coord.ind.sup, cos2 = cos2.ind.sup, dist = sqrt(dist2)) res$ind.sup <- res.ind.sup res.call$ind.sup <- ind.sup } if (!is.null(quanti.sup)) { X.quanti.sup <- as.data.frame(Xtot[, quanti.sup,drop=FALSE]) if (!is.null(ind.sup)) X.quanti.sup <- as.data.frame(X.quanti.sup[-ind.sup, ,drop=FALSE]) colnames(X.quanti.sup) <- colnames(Xtot)[quanti.sup] res.call$quanti.sup <- X.quanti.sup centre.sup <- moy.ptab(X.quanti.sup,row.w) X.quanti.sup <- t(t(as.matrix(X.quanti.sup))-centre.sup) if (scale.unit) { ecart.type.sup <- ec.tab(X.quanti.sup, row.w) X.quanti.sup <- t(t(X.quanti.sup)/ecart.type.sup) } coord.vcs <- t(X.quanti.sup*row.w) coord.vcs <- crossprod(t(coord.vcs),tmp$U) col.w.vcs <- rep(1, ncol(coord.vcs)) cor.vcs <- matrix(NA, ncol(X.quanti.sup), ncol(tmp$U)) dist2 <- as.vector(crossprod(rep(1,nrow(X.quanti.sup)),as.matrix(X.quanti.sup^2*row.w))) cor.vcs <- coord.vcs/sqrt(dist2) cos2.vcs <- cor.vcs^2 colnames(coord.vcs) <- colnames(cor.vcs) <- colnames(cos2.vcs) <- paste("Dim", c(1:ncol(cor.vcs)), sep = ".") rownames(coord.vcs) <- rownames(cor.vcs) <- rownames(cos2.vcs) <- colnames(Xtot)[quanti.sup] res.quanti.sup <- list(coord = coord.vcs[, 1:ncp, drop=FALSE], cor = cor.vcs[, 1:ncp, drop=FALSE], cos2 = cos2.vcs[, 1:ncp, drop=FALSE]) res$quanti.sup <- res.quanti.sup } if (!is.null(quali.sup)) { X.quali.sup <- as.data.frame(Xtot[, quali.sup,drop=FALSE]) if (!is.null(ind.sup)) X.quali.sup <- as.data.frame(X.quali.sup[-ind.sup,,drop=FALSE]) colnames(X.quali.sup) <- colnames(Xtot)[quali.sup] nombre <- modalite <- NULL if (ncp>1) eta2 <- t(sapply(X.quali.sup,fct.eta2,res$ind$coord,weights=row.w)) else { eta2 <- as.matrix(sapply(X.quali.sup,fct.eta2,res$ind$coord,weights=row.w),ncol=ncp) colnames(eta2) <- paste("Dim", 1:ncp) rownames(eta2) <- colnames(X.quali.sup) } for (i in 1:ncol(X.quali.sup)) { var <- as.factor(X.quali.sup[, i]) n.mod <- nlevels(var) modalite <- c(modalite, n.mod) bary <- matrix(NA, n.mod, ncol(X)) for (j in 1:n.mod) { ind <- levels(var)[j] # bary[j, ] <- apply(data[which(var == ind), ], 2, moy.p, row.w[which(var == ind)]) bary[j, ] <- moy.ptab(data[which(var == ind), ], row.w[which(var == ind)]) ### modif Avril 2011 ## nombre <- c(nombre, length(var[which(var == ind)])) nombre <- c(nombre, sum(row.w.init[which(var == ind)])) } colnames(bary) <- colnames(X) if ((levels(var)[1] %in% (1:nrow(X))) | (levels(var)[1] %in% c("y", "Y", "n", "N"))) row.names(bary) <- paste(colnames(X.quali.sup)[i], as.character(levels(var)),sep=".") else row.names(bary) <- as.character(levels(var)) if (i == 1) barycentre <- bary else barycentre <- rbind(barycentre, bary) } bary <- t(t(barycentre)-centre) if (!is.null(ecart.type)) bary <- t(t(bary)/ecart.type) dist2 <- rowSums(t(t(bary^2)*col.w)) coord.barycentre <- t(t(bary)*col.w) coord.barycentre <- crossprod(t(coord.barycentre),tmp$V) colnames(coord.barycentre) <- paste("Dim", 1:ncol(coord.barycentre), sep = ".") cos2.bary.sup <- coord.barycentre^2/dist2 vtest <- t(t(coord.barycentre)/sqrt(eig)) if (sum(row.w.init)>1) vtest <- vtest*sqrt(nombre/((sum(row.w.init) - nombre)/(sum(row.w.init) - 1))) else vtest <- vtest*sqrt(nombre) cos2.bary.sup <- cos2.bary.sup[, 1:ncp, drop=FALSE] coord.barycentre <- coord.barycentre[, 1:ncp, drop=FALSE] vtest <- vtest[, 1:ncp, drop=FALSE] dimnames(cos2.bary.sup) <- dimnames(vtest) <- dimnames(coord.barycentre) names(dist2) <- rownames(coord.barycentre) res.quali.sup <- list(coord = coord.barycentre, cos2 = cos2.bary.sup, v.test = vtest, dist = sqrt(dist2), eta2=eta2) call.quali.sup <- list(quali.sup = X.quali.sup, modalite = modalite, nombre = nombre, barycentre = as.data.frame(barycentre), numero = quali.sup) res$quali.sup <- res.quali.sup res.call$quali.sup <- call.quali.sup } res$call <- res.call class(res) <- c("PCA", "list") if (graph & (ncp>1)) { print(plot.PCA(res, choix = "ind", axes = axes)) print(plot.PCA(res, choix = "var", axes = axes,shadowtext=TRUE,new.plot=TRUE)) } return(res) }FactoMineR/R/print.HMFA.R0000644000176200001440000000225111432224566014440 0ustar liggesusersprint.HMFA <- function (x, file = NULL, sep = ";", ...){ res.hmfa <- x if (!inherits(res.hmfa, "HMFA")) stop("non convenient data") cat("**Results of the Hierarchical Multiple Factor Analysis (HMFA)**\n\n") cat("There are", nrow(res.hmfa$ind$coord), "individuals\n\n") cat("*Results are available in the following objects :\n\n") res <- array("", c(22, 2), list(1:22, c("name", "description"))) res[1, ] <- c("$eig", "eigenvalues") res[2, ] <- c("$group", "results for all the groups") res[3, ] <- c("$ind", "results for the individuals") res[4, ] <- c("$partial", "partial coordinates for the individuals") indice <- 4 if (!is.null(res.hmfa["quanti.var"]$quanti.var)){ indice <- indice + 1 res[indice, ] <- c("$quanti.var", "results for the quantitative variables") } if (!is.null(res.hmfa["quali.var"]$quali.var)){ indice <- indice + 1 res[indice, ] <- c("$quali.var", "results for the categorical variables") } print(res[1:indice,]) if (!is.null(file)) { write.infile(res.hmfa,file = file, sep=sep) print(paste("All the results are in the file",file)) } } FactoMineR/R/summary.FAMD.r0000644000176200001440000001350414132555444015042 0ustar liggesuserssummary.FAMD <- function(object,nb.dec=3,nbelements=10,nbind=nbelements,ncp=3,align.names=TRUE,file="",...){ print2 <- function(mat,file=""){ if (file=="") print(mat, quote = FALSE, right = TRUE) else { mat <- cbind(format(rownames(mat)),mat) mat <- rbind(colnames(mat),mat) mat2 <- cbind(format(mat[,1],justify="right"),format(mat[,2],justify="right")) for (k in 3:ncol(mat)) mat2 <- cbind(mat2,format(mat[,k],justify="right")) mat2 <- cbind(mat2,"\n") for (i in 1:nrow(mat2)) cat(mat2[i,],file=file,append=TRUE) } } print3 <- function(obj,file="",ncp,width.row=0,nbelements=nbelements){ list.obj <- match.arg(names(obj),c("dist","inertia","coord","cos2","contrib","v.test","vtest"),several.ok=TRUE) nb.col <- sum(c("coord","cos2","contrib","v.test")%in%list.obj) nbelements <- min(nbelements,nrow(obj$coord)) mat <- matrix(NA,nbelements,sum(c("dist","inertia")%in%list.obj)+nb.col*ncp) colnames(mat) <- paste("v",1:ncol(mat)) rownames(mat) <- format(rownames(obj$coord)[1:nbelements,drop=FALSE],width=width.row) indice <- 1 if (sum(c("dist","inertia")%in%list.obj)) { if ("dist"%in%list.obj) { if (!is.null(obj$dist)) mat[,indice] <- obj$dist[1:nbelements] colnames(mat)[indice] <- "Dist" } if ("inertia"%in%list.obj) { if (!is.null(obj$inertia)) mat[,indice] <- obj$inertia[1:nbelements]*1000 colnames(mat)[indice] <- "Iner*1000" } indice <- indice + 1 } if ("coord"%in%list.obj){ if (!is.null(obj$coord)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$coord[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- paste("Dim.",1:ncp,sep="") indice <- indice +1 } if ("contrib"%in%list.obj){ if (!is.null(obj$contrib)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$contrib[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "ctr" indice <- indice +1 } if ("cos2"%in%list.obj){ if (!is.null(obj$cos2)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$cos2[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "cos2" indice <- indice +1 } if ("v.test"%in%list.obj){ if (!is.null(obj$v.test)) mat[,indice+nb.col*(0:(ncp-1))] <- obj$v.test[1:nbelements,1:ncp,drop=FALSE] colnames(mat)[indice+nb.col*(0:(ncp-1))] <- "v.test" indice <- indice +1 } mat <- format(round(mat,nb.dec)) if ("dist"%in%list.obj) mat2 <- cbind("|", mat[1:nbelements,1,drop=FALSE],"|") else mat2 <- "|" for (k in 1:ncp) mat2 <- cbind(mat2, mat[,(1+sum(c("dist","inertia")%in%list.obj)+nb.col*(k-1)):(sum(c("dist","inertia")%in%list.obj)+nb.col*k),drop=FALSE],"|") colnames(mat2)[1] <- "" print2(as.matrix(mat2),file=file) } res <- object if (!inherits(res, "FAMD")) stop("non convenient object") cat(paste("\nCall:\n"),file=file) cat(paste(deparse(res$call$call),"\n"),file=file,append=TRUE) cat("\n",file=file,append=TRUE) cat("\nEigenvalues\n",file=file,append=TRUE) eige <- format(t(round(res$eig[,1:3],nb.dec)),justify="right") rownames(eige) <- c("Variance","% of var.","Cumulative % of var.") colnames(eige) <- paste("Dim",1:ncol(eige),sep=".") print2(eige,file=file) ncp <- min(res$call$ncp,ncp) width.row <- 0 if (align.names==TRUE){ aux <- match.arg(names(res),c("ind","ind.sup","freq","freq.sup","var","quanti.var","quanti.var.sup","quali.var","quali.var.sup","quanti.sup","quali.sup","group","row","row.sup","col","col.sup"),several.ok = TRUE) width.row <- max(nchar(rownames(res[aux[1]][[1]]$coord))) for (k in 1:length(aux)) width.row <- max(width.row,nchar(rownames(res[aux[k]][[1]]$coord)[1:min(nrow(res[aux[k]][[1]]$coord),nbelements)])) } if (nbind>0){ if (nrow(res$ind$coord) <= nbind) cat("\nIndividuals\n",file=file,append=TRUE) else cat(paste("\nIndividuals (the ",nbind," first)\n",sep=""),file=file,append=TRUE) print3(res$ind,file=file,ncp=ncp,width.row=width.row,nbelements=nbind) if (!is.null(res$ind.sup)){ cat("\nSupplementary individual",file=file,append=TRUE) if (nrow(res$ind.sup$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res$ind.sup$coord) > nbind) cat(paste(" (the ",nbind," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$ind.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbind) } } if (!is.null(res["quanti.var"]$quanti.var)) { cat("\nContinuous variable",file=file,append=TRUE) if (nrow(res["quanti.var"]$quanti.var$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res["quanti.var"]$quanti.var$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res["quanti.var"]$quanti.var,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res$quanti.sup)){ cat("\nSupplementary continuous variable",file=file,append=TRUE) if (nrow(res$quanti.sup$coord)>1) cat("s",file=file,append=TRUE) if (nrow(res$quanti.sup$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$quanti.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res["quali.var"]$quali.var)) { cat("\nCategories",file=file,append=TRUE) if (nrow(res["quali.var"]$quali.var$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res["quali.var"]$quali.var,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } if (!is.null(res$quali.sup)){ cat("\nSupplementary categories",file=file,append=TRUE) if (nrow(res$quali.sup$coord) > nbelements) cat(paste(" (the ",nbelements," first)",sep=""),file=file,append=TRUE) cat("\n",file=file,append=TRUE) print3(res$quali.sup,file=file,ncp=ncp,width.row=width.row,nbelements=nbelements) } }FactoMineR/R/svd.triplet.R0000644000176200001440000000571314132556140015052 0ustar liggesuserssvd.triplet <- function (X, row.w = NULL, col.w = NULL,ncp=Inf) { tryCatch.W.E <- function(expr){ ## function proposed by Maechler W <- NULL w.handler <- function(w){ # warning handler W <<- w invokeRestart("muffleWarning") } list(value = withCallingHandlers(tryCatch(expr, error = function(e) e), warning = w.handler), warning = W) } if (is.null(row.w)) row.w <- rep(1/nrow(X), nrow(X)) if (is.null(col.w)) col.w <- rep(1, ncol(X)) ncp <- min(ncp,nrow(X)-1,ncol(X)) row.w <- row.w / sum(row.w) X <- t(t(X)*sqrt(col.w))*sqrt(row.w) if (ncol(X)1){ mult <- sign(as.vector(crossprod(rep(1,nrow(V)),as.matrix(V)))) mult[mult==0] <- 1 U <- t(t(U)*mult) V <- t(t(V)*mult) } U <- U/sqrt(row.w) V <- V/sqrt(col.w) } else{ svd.usuelle <- tryCatch.W.E(svd(t(X),nu=ncp,nv=ncp))$val if (names(svd.usuelle)[[1]]=="message"){ svd.usuelle <- tryCatch.W.E(svd(X,nu=ncp,nv=ncp))$val if (names(svd.usuelle)[[1]]=="d"){ aux <- svd.usuelle$u svd.usuelle$u <- svd.usuelle$v svd.usuelle$v <- aux } else{ bb <- eigen(crossprod(t(X),t(X)),symmetric=TRUE) svd.usuelle <- vector(mode = "list", length = 3) svd.usuelle$d[svd.usuelle$d<0]<-0 svd.usuelle$d <- sqrt(svd.usuelle$d) svd.usuelle$v <- bb$vec[,1:ncp] svd.usuelle$u <- t(t(crossprod(X,svd.usuelle$v))/svd.usuelle$d[1:ncp]) } } U <- svd.usuelle$v V <- svd.usuelle$u mult <- sign(as.vector(crossprod(rep(1,nrow(V)),as.matrix(V)))) mult[mult==0] <- 1 V <- t(t(V)*mult)/sqrt(col.w) U <- t(t(U)*mult)/sqrt(row.w) } vs <- svd.usuelle$d[1:min(ncol(X),nrow(X)-1)] num <- which(vs[1:ncp]<1e-15) if (length(num)==1){ U[,num] <- U[,num,drop=FALSE]*vs[num] V[,num] <- V[,num,drop=FALSE]*vs[num] } if (length(num)>1){ U[,num] <- t(t(U[,num])*vs[num]) V[,num] <- t(t(V[,num])*vs[num]) } res <- list(vs = vs, U = U, V = V) return(res) } FactoMineR/R/plotMFApartial.R0000644000176200001440000000505614132555443015460 0ustar liggesusersplotMFApartial <- function (x, axes = c(1, 2), lab.ind = TRUE, lab.par = FALSE, habillage = "group", chrono = FALSE, col.hab = NULL, invisible = NULL, draw.partial = NULL, xlim = NULL, ylim = NULL, cex = 1, title = NULL, palette=NULL, ...){ res.mfa <- x if (!inherits(res.mfa, "MFA")) stop("non convenient data") # if (is.null(palette)) palette(c("black","red","green3","blue","cyan","magenta","darkgray","darkgoldenrod","darkgreen","violet","turquoise","orange","lightpink","lavender","yellow","lightgreen","lightgrey","lightblue","darkkhaki", "darkmagenta","darkolivegreen","lightcyan", "darkorange", "darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet", "lightgray","lightsalmon","lightyellow", "maroon")) if (is.null(palette)) palette <- palette() if (is.null(title)) title <- "Partial points graph" tab <- res.mfa$ind$coord[,axes] if (!is.null(res.mfa$ind.sup)) tab <- rbind.data.frame(tab,res.mfa$ind.sup$coord[,axes]) if (!is.null(res.mfa["quali.var"]$quali.var)) tab <- rbind.data.frame(tab,res.mfa$quali.var$coord[,axes]) if (!is.null(res.mfa$quali.var.sup)) tab <- rbind.data.frame(tab,res.mfa$quali.var.sup$coord[,axes]) if (is.null(draw.partial)) { draw.partial <- rep(FALSE,nrow(tab)) names(draw.partial)<-rownames(tab) } else draw.partial <- draw.partial[,1] partial <- rownames(tab[draw.partial,]) if (length(partial)==0) partial <- NULL disto <- matrix(0,nrow(tab),1) rownames(disto) <- rownames(tab) plot.MFA(res.mfa, axes = axes, lab.ind = lab.ind, lab.par = lab.par, habillage = habillage, col.hab = col.hab, invisible = invisible, xlim = xlim, ylim = ylim, chrono = chrono, cex = cex, title = title, partial = partial, palette=palette, graph.type="classic") point.haut <- max(tab[,2])*1.2 if (!is.null(ylim)) point.haut <- ylim[2] nbpoint <-0 while (nbpoint < 1000){ pos <- locator(n=1) if (is.null(pos$y)) nbpoint <- 1000 else{ for (i in 1:nrow(tab)) disto[i] <- (tab[i,1]-pos$x)^2+(tab[i,2]-pos$y)^2 draw.partial[order(disto)[1]] <- !draw.partial[order(disto)[1]] partial <- rownames(tab)[draw.partial] } if (length(partial)==0) partial <- NULL dev.off() plot.MFA(res.mfa, axes = axes, lab.ind = lab.ind, lab.par = lab.par, habillage = habillage, col.hab = col.hab, invisible = invisible, xlim = xlim, ylim = ylim, chrono = chrono, cex = cex, title = title, partial = partial, palette=palette, graph.type="classic") nbpoint <- nbpoint+1 } return(partial) } FactoMineR/R/plot.GPA.R0000644000176200001440000001025414132274047014157 0ustar liggesusersplot.GPA<-function (x, axes = c(1, 2), lab.ind.moy = TRUE, habillage = "ind", partial = "all", chrono = FALSE, xlim = NULL, ylim = NULL, cex = 1, title = NULL, palette=NULL, ...) { res.gpa <- x if (!inherits(res.gpa, "GPA")) stop("non convenient data") if (is.null(palette)) palette(c("black","red","green3","blue","cyan","magenta","darkgray","darkgoldenrod","darkgreen","violet","turquoise","orange","lightpink","lavender","yellow","lightgreen","lightgrey","lightblue","darkkhaki", "darkmagenta","darkolivegreen","lightcyan", "darkorange", "darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet", "lightgray","lightsalmon","lightyellow", "maroon")) lab.x <- paste("Dim ", axes[1], sep = "") lab.y <- paste("Dim ", axes[2], sep = "") nb.ind <- nrow(res.gpa$consensus) coord.ind <- res.gpa$consensus[, axes] coord.ind.partiel <- res.gpa$Xfin[, axes, ] nbre.grpe <- dim(res.gpa$Xfin)[[3]] group.ind <- NULL if (!is.null(partial)) { if (length(partial) == 1) { if (partial == "all") group.ind <- 1:nrow(coord.ind) else { for (i in 1:length(partial)) { if (partial[i] %in% rownames(coord.ind)) group.ind <- c(group.ind, grep(partial[i], rownames(coord.ind))) } } } else { for (i in 1:length(partial)) { if (partial[i] %in% rownames(coord.ind)) group.ind <- c(group.ind, grep(partial[i], rownames(coord.ind))) } } } if (is.null(xlim)) { xmin <- min(coord.ind[, 1],na.rm=TRUE) * 1.1 xmax <- max(coord.ind[, 1],na.rm=TRUE) * 1.1 if (!is.null(group.ind)) { xmin <- min(xmin, coord.ind.partiel[group.ind, 1, ],na.rm=TRUE) xmax <- max(xmax, coord.ind.partiel[group.ind, 1, ],na.rm=TRUE) } xlim <- c(xmin, xmax) } if (is.null(ylim)) { ymin <- min(coord.ind[, 2],na.rm=TRUE) * 1.1 ymax <- max(coord.ind[, 2],na.rm=TRUE) * 1.1 if (!is.null(group.ind)) { ymin <- min(ymin, coord.ind.partiel[group.ind, 2, ],na.rm=TRUE) ymax <- max(ymax, coord.ind.partiel[group.ind, 2, ],na.rm=TRUE) } ylim <- c(ymin, ymax) } if (habillage == "group") { col.hab <- 2:(nbre.grpe + 1) col.ind <- c(rep("black", nb.ind), rep(col.hab, nb.ind)) } if (habillage == "ind") { col.hab <- 1:nb.ind col.ind <- c(col.hab, rep(col.hab, each = nbre.grpe)) } if (is.null(title)) title <- "General Procrustes Analysis map" plot(0, 0, main = title, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp = 1, cex = cex) abline(v = 0, lty = 2, cex = cex) abline(h = 0, lty = 2, cex = cex) points(coord.ind, pch = 20, col = col.ind[1:nb.ind], cex = cex) if (lab.ind.moy) text(coord.ind[, 1], y = coord.ind[, 2], labels = rownames(coord.ind), pos = 3, col = col.ind[1:nb.ind]) for (i in group.ind) { for (j in 1:nbre.grpe) { points(coord.ind.partiel[i, 1, j], coord.ind.partiel[i, 2, j], cex = 0.8 * cex, col = col.ind[nb.ind + (i - 1) * nbre.grpe + j], pch = 20) if (chrono) { if (j > 1) lines(c(coord.ind.partiel[i, 1, j - 1], coord.ind.partiel[i, 1, j]), c(coord.ind.partiel[i, 2, j - 1], coord.ind.partiel[i, 2, j]), col = col.ind[i]) } else lines(c(coord.ind[i, 1], coord.ind.partiel[i, 1, j]), c(coord.ind[i, 2], coord.ind.partiel[i, 2, j]), col = col.ind[nb.ind + (i - 1) * nbre.grpe + j], lty = j) } } if (habillage == "group") legend("topleft", legend = rownames(res.gpa$RV), text.col = col.hab, cex = 0.8) } FactoMineR/R/zz.R0000644000176200001440000000012614064551746013243 0ustar liggesusers.onLoad <- function(libname,pkgname){ library.dynam("FactoMineR",pkgname,libname) }FactoMineR/R/coord.ellipse.R0000644000176200001440000000513214516470733015342 0ustar liggesuserscoord.ellipse <- function (coord.simul, centre = NULL, axes = c(1, 2), level.conf = 0.95, npoint = 100, bary = FALSE){ ellipse <- function(x, scale = c(1, 1), centre = c(0, 0), level = 0.95, t = sqrt(qchisq(level, 2)), which = c(1, 2), npoints = 100) { names <- c("x", "y") if (is.matrix(x)) { xind <- which[1] yind <- which[2] r <- x[xind, yind] if (missing(scale)) { scale <- sqrt(c(x[xind, xind], x[yind, yind])) if (scale[1] > 0) r <- r/scale[1] if (scale[2] > 0) r <- r/scale[2] } if (!is.null(dimnames(x)[[1]])) names <- dimnames(x)[[1]][c(xind, yind)] } else r <- x r <- min(max(r, -1), 1) d <- acos(r) a <- seq(0, 2 * pi, len = npoints) matrix(c(t * scale[1] * cos(a + d/2) + centre[1], t * scale[2] * cos(a - d/2) + centre[2]), npoints, 2, dimnames = list(NULL, names)) } #### End function ellipse #ajout 1 ligne coord.simul[, 1] <- as.factor(coord.simul[, 1]) nbre.fact <- nlevels(coord.simul[, 1]) res <- NULL label <- NULL lev <- levels(coord.simul[, 1]) for (f in 1:nbre.fact) { # x <- coord.simul[which(coord.simul[, 1] == unique(coord.simul[, 1])[f]), axes[1] + 1] # y <- coord.simul[which(coord.simul[, 1] == unique(coord.simul[, 1])[f]), axes[2] + 1] x <- coord.simul[which(coord.simul[, 1] == lev[f]), axes[1] + 1] y <- coord.simul[which(coord.simul[, 1] == lev[f]), axes[2] + 1] if (is.null(centre)) center <- c(mean(x, na.rm = TRUE), mean(y, na.rm = TRUE)) else { if (ncol(coord.simul) != ncol(centre)) stop("ncol de centre incorrect") if (!all.equal(lev, levels(centre[, 1]))) stop("Levels of centre are not corrects") # center <- as.numeric(centre[which(centre[, 1] == unique(centre[, 1])[f]), c(axes[1] + 1, axes[2] + 1)]) center <- as.numeric(centre[which(centre[, 1] == levels(centre[, 1])[f]), c(axes[1] + 1, axes[2] + 1)]) } tab <- data.frame(x = x, y = y) if (nrow(tab)>1) mat.cov <- cov(tab) else mat.cov <- matrix(0,4,ncol=2) if (bary) mat.cov <- mat.cov/nrow(tab) elli.tmp <- ellipse::ellipse(mat.cov, centre = center, level = level.conf, npoints = npoint) res <- rbind(res, elli.tmp) # label <- c(label, rep(lev[f], npoint)) } label <- factor(rep(lev,each=npoint),levels=lev) result <- data.frame(facteur = label, res) colnames(result)[1] <- "facteur" colnames(result) <- colnames(coord.simul)[c(1, axes + 1)] return(list(res = result, call = npoint)) } FactoMineR/R/plot.catdes.R0000644000176200001440000003632114530141543015012 0ustar liggesusersplot.catdes <- function(x,show= "all",output=c("figure","dt"),level=0.01,sort=NULL,col.upper="indianred2",col.lower="royalblue1",numchar=10,barplot=FALSE,cex.names=1,...){ #Check the arguments if( !attr(x,"class")[1]=="catdes") {stop("'x' must be of type catdes")} if (show!="all" && show!="quanti" && show!="quali"&& show!="quanti.var"&& show!="test.chi2"){stop("Invalid value of show")} output <- match.arg(output[1],c("figure","dt")) output <- tolower(output[1]) if (output=="dt") { mini <- 1 if (show=="quanti" || show=="all"){ if (is.null(x$quanti) & (show=="quanti")) stop("No quantitative variables") else { mini <- min(x$quanti.var[,2]) lvl <- length(x$quanti) rows <- rownames(x$quanti[[1]]) for (i in 2:lvl) rows <- c(rows,rownames(x$quanti[[i]])) rows <- unique(rows) tabvtest <- matrix(0,nrow=length(rows),ncol=lvl) tabpvalue <- matrix(Inf,nrow=length(rows),ncol=lvl) rownames(tabvtest) <- rownames(tabpvalue) <- sort(rows) colnames(tabvtest) <- colnames(tabpvalue) <- names(x$quanti) for (i in 1:lvl){ tabvtest[rownames(x$quanti[[i]]),i] <- x$quanti[[i]][,"v.test", drop = FALSE] tabpvalue[rownames(x$quanti[[i]]),i] <- x$quanti[[i]][,"p.value", drop = FALSE] } tableau_vtest <- NULL if (level >= min(tabpvalue)) tableau_vtest <- signif(t(as.matrix(tabvtest[apply(tabpvalue,1,min) <= level,])),3) } } if (show=="quali" || show=="all"){ if (is.null(x$category) & (show=="quali")) stop("No qualitative variables") else { lvl <- length(x$category) rows <- rownames(x$category[[1]]) for (i in 2:lvl) rows <- c(rows,rownames(x$category[[i]])) rows <- unique(rows) tabvtest <- matrix(0,nrow=length(rows),ncol=lvl) tabpvalue <- matrix(Inf,nrow=length(rows),ncol=lvl) rownames(tabvtest) <- rownames(tabpvalue) <- sort(rows) colnames(tabvtest) <- colnames(tabpvalue) <- names(x$category) for (i in 1:lvl){ tabvtest[rownames(x$category[[i]]),i] <- x$category[[i]][,"v.test", drop = FALSE] tabpvalue[rownames(x$category[[i]]),i] <- x$category[[i]][,"p.value", drop = FALSE] } mini <- min(mini,min(tabpvalue)) colnames(tabpvalue) <- colnames(tabvtest) <- names(x$category) tableau_quali <- NULL if (level >= min(tabpvalue)) tableau_quali <- signif(tabvtest[apply(tabpvalue,1,min) <= level,,drop = FALSE],3) } } if (show=="quanti"){ if (is.null(tableau_vtest)) stop(paste("The p-value should be greater than",signif(mini,3),".")) lvl <- length(x$category) quant <- seq(-max(abs(tableau_vtest), na.rm = T), max(abs(tableau_vtest), na.rm = T),length.out = 100) color <- grDevices::colorRampPalette(c(col.lower,"white",col.upper))(length(quant)+1) a <- DT::formatStyle( DT::datatable(t(as.matrix(tableau_vtest)), extensions = c('Buttons','FixedColumns','FixedHeader'), options = list( pageLength = ncol(tableau_vtest), dom = 'Bfrtip', buttons = c('csv'), fixedColumns = TRUE, fixedHeader = TRUE) ), rownames(tableau_vtest), backgroundColor = DT::styleInterval(quant, color) ) return(a) } if (show=="quali"){ if (is.null(tableau_quali)) stop(paste("The p-value should be greater than",signif(mini,3),".")) quant <- seq(-max(abs(tableau_quali),na.rm = TRUE), max(abs(tableau_quali), na.rm = TRUE), length.out = 100) # quant <- seq(min(tableau_quali,na.rm = TRUE), max(tableau_quali, na.rm = TRUE), length.out = 100) color <- grDevices::colorRampPalette(c(col.lower,"white",col.upper))(length(quant)+1) a <- DT::formatStyle( DT::datatable(tableau_quali, extensions = c('Buttons','FixedColumns','FixedHeader'), options = list(pageLength = nrow(tableau_quali), dom = 'Bfrtip', buttons = c('csv'), fixedColumns = TRUE, fixedHeader = TRUE) ), colnames(tableau_quali), backgroundColor = DT::styleInterval(quant, color) ) return(a) } if (show=="all"){ tab <- NULL if(!is.null(tableau_quali)) tab <- rbind(tab,tableau_quali) if(!is.null(tableau_vtest)) tab <- rbind(tab,t(tableau_vtest)) if (is.null(tab)) stop(paste("The p-value should be greater than",signif(mini,3),".")) quant <- seq(-max(abs(tab), na.rm = T), max(abs(tab), na.rm = T), length.out = 100) color <- grDevices::colorRampPalette(c(col.lower,"white",col.upper))(length(quant)+1) a <- DT::formatStyle( DT::datatable(tab,extensions = c('Buttons','FixedColumns','FixedHeader'), options = list(pageLength = nrow(tab),dom = 'Bfrtip', buttons = c('csv'),fixedColumns = TRUE,fixedHeader = TRUE) ), colnames(tab),backgroundColor = DT::styleInterval(quant, color) ) return(a) } if (show=="quanti.var"){ if(level <= min(x$quanti.var[,"P-value"])) stop(paste("The p-value should be greater than",signif(min(x$quanti.var[,"P-value"]),3))) tableau_link_quanti <- as.data.frame(x$quanti.var[ x$quanti.var[,"P-value"] <= level,c("Eta2","P-value"), drop = FALSE]) quant <- seq(min(tableau_link_quanti[,1]), max(tableau_link_quanti[,1]), length.out = 100) color <- grDevices::colorRampPalette(c(col.lower,"white",col.upper))(length(quant)+1) a <- DT::formatStyle( DT::datatable(signif(tableau_link_quanti,3), extensions = c('Buttons','FixedColumns','FixedHeader'), options = list(pageLength = nrow(tableau_link_quanti), dom = 'Bfrtip',buttons = c('csv'),fixedColumns = TRUE,fixedHeader = TRUE) ), columns = colnames(tableau_link_quanti), valueColumns = 'P-value', backgroundColor = DT::styleInterval(quant, color) ) return(a) } if (show=="test.chi2"){ if(is.null(x$test.chi2)) stop("No qualitative variables") if(level <= min(x$test.chi2[,"p.value"])) stop(paste("The p-value should be greater than",signif(min(x$test.chi2[,"p.value"]),3))) tableau_link_chisquare <- (x$test.chi2[x$test.chi2[,"p.value"] <= level,"p.value", drop = FALSE]) quant <- seq(min(tableau_link_chisquare[,"p.value"]), max(tableau_link_chisquare[,"p.value"]), length.out = 100) color <- grDevices::colorRampPalette(c(col.upper,"white",col.lower))(length(quant)+1) a <- DT::formatStyle( DT::datatable( signif(tableau_link_chisquare,3), extensions = c('Buttons','FixedColumns','FixedHeader'), options = list(pageLength = nrow(tableau_link_chisquare), dom = 'Bfrtip', buttons = c('csv'), fixedColumns = TRUE, fixedHeader = TRUE) ), columns = colnames(tableau_link_chisquare), valueColumns = "p.value", backgroundColor = DT::styleInterval(quant, color) ) return(a) } } else { if (!barplot){ if(!is.null(x$quanti)) rows <- names(x$quanti) else rows <- names(x$category) if(is.null(rows)){stop("Invalid value of x")} nb_cluster <- length(rows) #If sort is a string, then we convert it to an integer if (!is.null(sort)){ if(is.character(sort)){ sort <- which(rows==sort) if (length(sort)==0) stop("Invalid value of sort") } else if (!is.double(sort) || sort!=round(sort) || sort>nb_cluster || sort<1){stop("Invalid value of sort")} } if(!col.upper %in% colours() || !col.lower %in% colours() ) {stop("Invalid colour name. Please use colours() to see the colours available.")} if(level<0){stop("The level must be positive")} #Setting the colors col.upper.rgb <- t(col2rgb(col.upper)/255) col.lower.rgb <- t(col2rgb(col.lower)/255) #Names of the clusters #The table that will contain all the p-values pval <- c() ##Columns of the table obtained with the union of the results in the catdes #Quantitative if(is.null(sort)){ if (show=="quanti" || show=="all"){ quanti <- c() for (q in x$quanti){ quanti <- union(quanti,rownames(q)) pval <- c(pval,q[,'p.value']) } } #Categorical if (show=="quali" || show=="all"){ quali <- c() for (q in x$category){ quali <- union(quali,rownames(q)) pval <- c(pval,q[,'p.value']) } } #All columns if (show=="all"){ columns <- c(quanti,quali) } else if (show=="quali"){ columns <- quali } else if (show=="quanti"){ columns <- quanti } } else{ quanti_all <- c() pval <- c() #all the p-values for (q in x$quanti){ quanti_all <- union(quanti_all,rownames(q)) pval <- c(pval,q[,'p.value']) } #Categorical quali_all <- c() for (q in x$category){ quali_all <- union(quali_all,rownames(q)) pval <- c(pval,q[,'p.value']) } k <- sort if ((show=="quanti" || show=="all") && !(is.null(x$quanti))){ pvals_k_quanti <- as.data.frame(x$quanti[[k]][,"p.value"]) colnames(pvals_k_quanti)<-"pvals" names <- rownames(pvals_k_quanti) rownames(pvals_k_quanti) <- NULL pvals_k_quanti <- cbind(names,pvals_k_quanti) quanti_all <- as.data.frame(cbind(quanti_all,rep(0,length(quanti_all)))) colnames(quanti_all) <- c("names","pvals") quanti_all <- merge(x=quanti_all,y=pvals_k_quanti,by="names",all.x=TRUE)[,c("names","pvals.y")] colnames(quanti_all) <- c("names","pvals") } if ((show=="quali" || show=="all") && !(is.null(x$category))){ pvals_k_quali <- as.data.frame(x$category[[k]][,"p.value"]) colnames(pvals_k_quali)<-"pvals" names <- rownames(pvals_k_quali) rownames(pvals_k_quali) <- NULL pvals_k_quali <- cbind(names,pvals_k_quali) quali_all <- as.data.frame(cbind(quali_all,rep(0,length(quali_all)))) colnames(quali_all) <- c("names","pvals") quali_all <- merge(x=quali_all,y=pvals_k_quali,by="names",all.x=TRUE)[,c("names","pvals.y")] colnames(quali_all) <- c("names","pvals") } if (show=="all") columns <- rbind(quali_all,quanti_all) if (show=="quali") columns <- rbind(quali_all) if (show=="quanti") columns <- rbind(quanti_all) columns <- columns[order(columns$pvals),] columns <- columns$names } #Create the grid dim1 <- length(rows) dim2 <- length(columns) plot.new() for (i in 1:dim1){ ybottom <- 1 - i * (1/(dim1 + 1)) xright <- 1/(dim2 + 1) ytop <- 1 - (i + 1) * (1/(dim1 + 1)) xleft <- 0 center <- c(mean(c(xleft,xright)),mean(c(ytop,ybottom))) text(center[1],center[2],rows[i],cex=0.5*cex.names,font=2) for(j in 1:(dim2)){ xleft <- j * (1/(dim2 + 1)) ybottom <- 1 - i * (1/(dim1 + 1)) xright <- (j + 1) * (1/(dim2 + 1)) ytop <- 1 - (i + 1) * (1/(dim1 + 1)) rect(xleft, ybottom = ybottom, xright, ytop) } } for (j in 1:(dim2)){ xleft <- j * (1/(dim2 + 1)) ybottom <- 1 xright <- (j + 1) * (1/(dim2 + 1)) ytop <- 1 - (1/(dim1 + 1)) center <- c(mean(c(xleft,xright)),mean(c(ytop,ybottom))) text(center[1],1 - (1/(dim1 + 1)),columns[j],cex=0.4*cex.names,srt=45,adj=c(0,0)) } #For the gradients of color max <- level min <- min(pval) range <- max-min #Completing the grid #For each cluster for (i in 1:dim1){ quanti <- x$quanti quali <- x$category #Quantitative if (show=="quanti" || show=="all"){ for (name_row in rownames(quanti[[i]])){ j <- which(columns==name_row) p <- quanti[[i]][name_row,"p.value"] if (p=0){ rect(xleft, ybottom = ybottom, xright, ytop, col = rgb(col.upper.rgb,alpha=col), border = NULL) } else { rect(xleft, ybottom = ybottom, xright, ytop, col = rgb(col.lower.rgb,alpha=col), border = NULL) } } } } #Qualitative if (show=="quali" || show=="all"){ for (name_row in rownames(quali[[i]])){ j <- which(columns==name_row) p <- quali[[i]][name_row,"p.value"] if (p=0){ rect(xleft, ybottom = ybottom, xright, ytop, col = rgb(col.upper.rgb,alpha=col), border = NULL) } else { rect(xleft, ybottom = ybottom, xright, ytop, col = rgb(col.lower.rgb,alpha=col), border = NULL) } } } } } } else { ### begin program for barplot=TRUE lengthX <- max(length(x$quanti),length(x$category)) # measure the length of x long <- rep(0,lengthX) #print(x$category) list.catdes <- list(long) minimum <- 0 maximum <- 0 count <- 0 for (i in 1:lengthX){ if (!is.null(x$quanti[[i]])){ quanti <- as.data.frame(x$quanti[[i]]) quanti.catdes <- as.vector(quanti[,1]) names(quanti.catdes) <- rownames(quanti) } else quanti.catdes <- NULL if (!is.null(x$category[[i]])){ category <- as.data.frame(x$category[[i]]) category.catdes <- as.vector(category[,5]) names(category.catdes) <- rownames(category) } else category.catdes <- NULL #print(category.catdes) if (show=="all") catdes.aux <- c(quanti.catdes,category.catdes) if (show=="quanti") catdes.aux <- quanti.catdes # different options if (show=="quali") catdes.aux <- category.catdes if (!is.null(catdes.aux)) { count <- count+1 #count is a counter of the catdes clusters which are non null. long[i] <- length(catdes.aux) minimum <- min(catdes.aux,minimum) # find the longest catdes clusters and the smallest. maximum <- max(catdes.aux,maximum) } else long[i] <- 0 list.catdes[[i]] <- catdes.aux # list the catdes clusters } if(count!=0){ if (count<=4){ numc <- count # design of the graphic window numr <- 1 } else{ numc <- 4 numr <- count%/%4+1 } plot.new() par(las = 3) par(mfrow = c(numr, numc)) for(i in 1:lengthX){ catdes.aux <- list.catdes[[i]] if(!is.null(catdes.aux)){ catdes.aux <- sort(catdes.aux,decreasing=FALSE) #plot the catdes for every cluster in the graphic window coul <- rep(col.upper,length(catdes.aux)) coul[catdes.aux<0] <- col.lower if (is.null(x$category)) titre <- names(x$quanti)[i] else titre <- names(x$category)[i] barplot(catdes.aux, width =c(1,1), col = coul, border = "black", ylim = c(minimum-1,maximum+1),xlim=c(0,max(long)+1), main = titre, cex.names = cex.names, ylab="v.test", names.arg = substr(names(catdes.aux), 1, numchar)) } } } par(las = 0) } } } FactoMineR/R/simule.r0000644000176200001440000000262113013003656014121 0ustar liggesuserssimule <- function (data, nb.simul = 500){ if (!inherits(data, "data.frame")) stop("data is not a data frame") if (!inherits(data[, 1], "factor")) stop("data[,1] is not a factor") nbre.fact <- nlevels(data[, 1]) res.moy <- res.moy.sim <- as.data.frame(matrix(0, nbre.fact, ncol(data))) res.sim <- as.data.frame(matrix(0, nbre.fact * nb.simul, ncol(data))) colnames(res.moy) <- colnames(res.sim) <- colnames(res.moy.sim) <- colnames(data) for (f in 1:nbre.fact) { table <- data[which(data[, 1] == levels(data[, 1])[f]) ,] nb.aux <- length(which(data[, 1] == levels(data[, 1])[f])) table <- na.omit(table) tmp <- NULL for (j in 1:nb.simul) tmp <- rbind(tmp,apply(table[sample(1:nb.aux,nb.aux,replace=TRUE),-1], 2,mean)) res.moy[f, 1] <- res.moy.sim[f, 1] <- as.character(levels(data[, 1])[f]) res.moy[f, -1] <- apply(table[,-1],2,mean) res.sim[((f - 1) * nb.simul + 1):(f * nb.simul), 1] <- as.character(levels(data[, 1])[f]) res.sim[((f - 1) * nb.simul + 1):(f * nb.simul), -1] <- tmp res.moy.sim[f, -1] <- apply(tmp, 2, mean) } res.moy[, 1] <- factor(res.moy[, 1]) res.sim[, 1] <- factor(res.sim[, 1]) res.moy.sim[, 1] <- factor(res.moy.sim[, 1]) resultats <- list(mean = res.moy, simul = res.sim, simul.mean = res.moy.sim) class(resultats) <- c("sim", "list") return(resultats) } FactoMineR/R/ellipseCA.R0000644000176200001440000001175514132254053014436 0ustar liggesusersellipseCA <- function(x, ellipse=c("col","row"), method="multinomial", nbsample=100, axes=c(1,2), xlim=NULL, ylim=NULL, col.row="blue", col.col="red", col.row.ell=col.row, col.col.ell=col.col, graph.type = c("ggplot","classic"), ggoptions = NULL, ...){ X <- x$call$X argument <- list(...) if (!is.null(argument[["cex"]]) & is.null(ggoptions["size"])) ggoptions["size"] <- 4*argument$cex ggoptions_default <- list(size = 4, point.shape = 19, line.lty = 2, line.lwd = 0.5, line.color = "black", segment.lty = 1, segment.lwd = 0.5, circle.lty = 1, circle.lwd = 0.5, circle.color = "black", low.col.quanti = "blue", high.col.quanti = "red3") if (!is.null(ggoptions[1])) ggoptions_default[names(ggoptions)] <- ggoptions[names(ggoptions)] concCol<-concRow<-X graph.type <- match.arg(graph.type[1],c("ggplot","classic")) if (method=="multinomial"){ proba <- unlist(c(X)) N<-sum(proba) proba <- proba/N aa<-rmultinom(nbsample, size = N, prob = proba) for (i in 1:nbsample) { aux <- matrix(aa[,i,drop=FALSE],nrow=nrow(X)) dimnames(aux)<-dimnames(X) if ("col"%in%ellipse) concCol <- cbind.data.frame(concCol,aux) if ("row"%in%ellipse) concRow <- rbind.data.frame(concRow,aux) } } if (method=="boot"){ ## botstrap of the values by rows aux <- X ni <- apply(X,1,sum) for (i in 1:nbsample) { for (ri in 1:nrow(X)) aux[ri,] <- summary(cut(sample(1:ni[ri],ni[ri],replace=TRUE),c(0,cumsum(t(X[ri,])))+0.1/ni[ri]*(0:ncol(X))),maxsum=Inf) if ("col"%in%ellipse) concCol <- cbind.data.frame(concCol,aux) if ("row"%in%ellipse) concRow <- rbind.data.frame(concRow,aux) } } if (length(col.row)==1) col.row <- rep(col.row,nrow(X)) if (length(col.col)==1) col.col <- rep(col.col,ncol(X)) if (length(col.col.ell)==1) col.col.ell <- rep(col.col.ell,ncol(X)) if (length(col.row.ell)==1) col.row.ell <- rep(col.row.ell,ncol(X)) if ("col"%in%ellipse){ colCA <- CA(concCol,col.sup=(ncol(X)+1):ncol(concCol),graph=FALSE) aux3 <- colCA$col.sup$coord[,axes] rownames(aux3) <- paste("r",1:nrow(aux3),sep="") aux1 <- cbind.data.frame(paste("col",1:ncol(X),sep=""),aux3) aux1[,1] <- as.factor(aux1[,1]) ellCol <- coord.ellipse(aux1,level.conf = 0.95)$res } if ("row"%in%ellipse){ rowCA <- CA(concRow,row.sup=(nrow(X)+1):nrow(concRow),graph=FALSE) aux2 <- cbind.data.frame(paste("row",1:nrow(X),sep=""),rowCA$row.sup$coord[,axes]) aux2[,1] <- as.factor(aux2[,1]) ellRow <- coord.ellipse(aux2,level.conf = 0.95)$res } nullxlimylim <- (is.null(xlim) & is.null(ylim)) if (is.null(xlim)){ if (("col"%in%ellipse)&("row"%in%ellipse)) xlim <- c(min(ellCol[,2],ellRow[,2]),max(ellCol[,2],ellRow[,2])) else { if ("col"%in%ellipse) xlim <- c(min(ellCol[,2]),max(ellCol[,2])) if ("row"%in%ellipse) xlim <- c(min(ellRow[,2]),max(ellRow[,2])) } } if (is.null(ylim)){ if (("col"%in%ellipse)&("row"%in%ellipse)) ylim <- c(min(ellCol[,3],ellRow[,3]),max(ellCol[,3],ellRow[,3])) else { if ("col"%in%ellipse) ylim <- c(min(ellCol[,3]),max(ellCol[,3])) if ("row"%in%ellipse) ylim <- c(min(ellRow[,3]),max(ellRow[,3])) } } if(!is.null(x$row.sup)){ xlim <- c(min(xlim[1],min(x$row.sup$coord[,axes[1]])), max(xlim[2],max(x$row.sup$coord[,axes[1]]))) ylim <- c(min(ylim[1],min(x$row.sup$coord[,axes[2]])), max(ylim[2],max(x$row.sup$coord[,axes[2]]))) } if(!is.null(x$col.sup)){ xlim <- c(min(xlim[1],min(x$col.sup$coord[,axes[1]])), max(xlim[2],max(x$col.sup$coord[,axes[1]]))) ylim <- c(min(ylim[1],min(x$col.sup$coord[,axes[2]])), max(ylim[2],max(x$col.sup$coord[,axes[2]]))) } if (nullxlimylim & diff(xlim)/diff(ylim)>3) ylim <- (ylim-mean(ylim))*diff(xlim)/diff(ylim)/3 + mean(ylim) if (nullxlimylim & diff(xlim)/diff(ylim)<1/2) xlim <- (xlim-mean(xlim))*diff(ylim)/diff(xlim)/2 + mean(xlim) graph <- plot(x,axes=axes,xlim=xlim,ylim=ylim,col.col=col.col,col.row=col.row, graph.type = graph.type, ggoptions = ggoptions, ...) if ("row"%in%ellipse){ lev<-paste("row",1:nlevels(ellRow[, 1]),sep="") for (e in 1:nlevels(ellRow[, 1])) { data.elli <- ellRow[ellRow[, 1] == lev[e], -1] if(graph.type == "classic"){ lines(x=data.elli[, 1], y = data.elli[, 2], col = col.row.ell[e]) } if(graph.type == "ggplot"){ graph <- graph + geom_path(aes_string(x=data.elli[,1],y=data.elli[,2]), color = col.row.ell[e]) } } } if ("col"%in%ellipse){ lev<-paste("col",1:nlevels(ellCol[, 1]),sep="") for (e in 1:nlevels(ellCol[, 1])) { data.elli <- ellCol[ellCol[, 1] == lev[e], -1] if(graph.type == "classic"){ lines(x=data.elli[, 1], y = data.elli[, 2], col = col.col.ell[e]) } if(graph.type == "ggplot"){ graph <- graph + geom_path(aes_string(x=data.elli[,1],y=data.elli[,2]), color = col.col.ell[e]) } } } if(graph.type == "ggplot") print(graph) } FactoMineR/R/meansComp.R0000644000176200001440000000224214551761356014524 0ustar liggesusersmeansComp <- function(object, spec, graph=TRUE, ...){ if (inherits(object, "LinearModel")){ formule <- object$lmResult$call if ("selection"%in%names(formule)) formule <- formule[-which(names(formule)%in%"selection")] object <- eval(formule) } if (!inherits(object,"lm") & !inherits(object,"aov")) print("object must be of class LinearModel, lm or aov") tuk <- emmeans::emmeans(object,spec=as.formula(spec), ...) mat <- matrix(NA,nrow(summary(tuk)),nrow(summary(tuk))) # rownames(mat)=colnames(mat) <- summary(tuk)[,1] if (ncol(summary(tuk))==6){ rownames(mat)=colnames(mat) <- summary(tuk)[,1] } else { rownames(mat)=colnames(mat) <- paste(summary(tuk)[,1],summary(tuk)[,2],sep=":") } aux <- summary(emmeans::contrast(tuk,"pairwise"))$p.value mat[lower.tri(mat)]<- aux mat <- t(mat) mat[lower.tri(mat)]<- aux # mat <- mat[order(summary(tuk)[,2]),order(summary(tuk)[,2])] mat <- mat[order(summary(tuk)[,ncol(summary(tuk))-4]),order(summary(tuk)[,ncol(summary(tuk))-4])] res <- list(adjMean=tuk, groupComp=multcompView::multcompLetters(mat)) class(res) <- "meansComp" if (graph) print(plot(res)) return(res) } FactoMineR/R/plot.MCA.R0000644000176200001440000013126314132554741014156 0ustar liggesusersplot.MCA <- function (x, axes = c(1, 2), choix=c("ind","var","quanti.sup"), xlim = NULL, ylim = NULL, invisible = c("none","ind", "var", "ind.sup", "quali.sup", "quanti.sup"), col.ind = "black", col.var = "red", col.quali.sup = "darkgreen", col.ind.sup = "blue", col.quanti.sup = "blue", label=c("all","none","ind", "var", "ind.sup", "quali.sup", "quanti.sup"), title = NULL, habillage = "none", palette=NULL, autoLab = c("auto","yes","no"),new.plot=FALSE,select=NULL,selectMod=NULL, unselect=0.7, shadowtext=FALSE, legend = list(bty = "y", x = "topleft"), graph.type = c("ggplot","classic"), ggoptions = NULL, ...){ label <- match.arg(label,c("all","none","ind", "var", "ind.sup", "quali.sup", "quanti.sup"),several.ok=TRUE) choix <- match.arg(choix,c("ind","var","quanti.sup")) graph.type <- match.arg(graph.type[1],c("ggplot","classic")) autoLab <- match.arg(autoLab,c("auto","yes","no")) argument <- list(...) if (!is.null(argument[["cex"]]) & is.null(ggoptions["size"])) ggoptions["size"] <- 4*argument$cex ggoptions_default <- list(size = 4, point.shape = 19, line.lty = 2, line.lwd = 0.5, line.color = "black", segment.lty = 1, segment.lwd = 0.5, circle.lty = 1, circle.lwd = 0.5, circle.color = "black", low.col.quanti = "blue", high.col.quanti = "red3") if (!is.null(ggoptions[1])) ggoptions_default[names(ggoptions)] <- ggoptions[names(ggoptions)] old.palette <- palette() if (is.null(palette)) palette <- c("black", "red", "green3", "blue", "magenta", "darkgoldenrod","darkgray", "orange", "cyan", "violet", "lightpink", "lavender", "yellow", "darkgreen","turquoise", "lightgrey", "lightblue", "darkkhaki","darkmagenta","lightgreen", "darkolivegreen", "lightcyan", "darkorange","darkorchid", "darkred", "darksalmon", "darkseagreen","darkslateblue", "darkslategray", "darkslategrey","darkturquoise", "darkviolet", "lightgray", "lightsalmon","lightyellow", "maroon") palette(palette) # that is necessary if (autoLab=="yes") autoLab <- TRUE if (autoLab=="no") autoLab <- FALSE invisible <- match.arg(invisible,c("none","ind", "var", "ind.sup", "quali.sup", "quanti.sup"),several.ok=TRUE) if ("none"%in%invisible) invisible <- NULL res.mca <- x if (!inherits(res.mca, "MCA")) stop("non convenient data") if (is.numeric(unselect)) if ((unselect>1)|(unselect<0)) stop("unselect should be betwwen 0 and 1") lab.x <- paste("Dim ",axes[1]," (",format(res.mca$eig[axes[1],2],nsmall=2,digits=2),"%)",sep="") lab.y <- paste("Dim ",axes[2]," (",format(res.mca$eig[axes[2],2],nsmall=2,digits=2),"%)",sep="") if (graph.type == "ggplot"){ theme <- theme( axis.title = element_text(hjust = 1, size = if (is.null(argument[["cex.axis"]])) {10} else {10*argument$cex.axis},face = 2), plot.title = element_text(hjust = 0.5, size = if (is.null(argument[["cex.main"]])) {11} else {11*argument$cex.main},face = 2), legend.position = ifelse(legend$x %in% c("bottom","up","right","left"), legend$x, "right"), legend.box.spacing=unit(0.1, 'cm'),legend.margin=margin() ) } if (choix =="ind"){ lab.ind <- lab.var <- lab.quali.sup <- lab.ind.sup <- FALSE if(length(label)==1 && label=="all") lab.ind <- lab.var <- lab.quali.sup <- lab.ind.sup <- TRUE if("ind" %in% label) lab.ind<-TRUE if("var" %in% label) lab.var<-TRUE if("quali.sup" %in% label) lab.quali.sup<-TRUE if("ind.sup" %in% label) lab.ind.sup<-TRUE test.invisible <- vector(length = 5) if (!is.null(invisible)) { test.invisible[1] <- match("ind", invisible) test.invisible[2] <- match("var", invisible) test.invisible[3] <- match("quanti.sup", invisible) test.invisible[4] <- match("ind.sup", invisible) test.invisible[5] <- match("quali.sup", invisible) } else test.invisible <- rep(NA, 5) coord.var <- res.mca$var$coord[, axes] coord.ind <- res.mca$ind$coord[, axes] coord.ind.sup <- coord.quali.sup <- NULL if (!is.null(res.mca$ind.sup)) coord.ind.sup <- res.mca$ind.sup$coord[, axes,drop=FALSE] if (!is.null(res.mca$quali.sup)) coord.quali.sup <- res.mca$quali.sup$coord[, axes,drop=FALSE] nullxlimylim <- (is.null(xlim) & is.null(ylim)) if (is.null(xlim)) { xmin <- xmax <- 0 if(is.na(test.invisible[1])) xmin <- min(xmin, coord.ind[,1]) if(is.na(test.invisible[1])) xmax <- max(xmax, coord.ind[,1]) if(is.na(test.invisible[4])) xmin <- min(xmin, coord.ind.sup[, 1]) if(is.na(test.invisible[4])) xmax <- max(xmax, coord.ind.sup[, 1]) if(is.na(test.invisible[2])) xmin <- min(xmin, coord.var[,1]) if(is.na(test.invisible[2])) xmax <- max(xmax, coord.var[,1]) if(is.na(test.invisible[5])) xmin <- min(xmin, coord.quali.sup[, 1]) if(is.na(test.invisible[5])) xmax <- max(xmax, coord.quali.sup[, 1]) # xlim <- c(xmin, xmax) * 1.2 xlim <- c(xmin, xmax) xlim <- (xlim-mean(xlim))*1.2 + mean(xlim) } if (is.null(ylim)) { ymin <- ymax <- 0 if(is.na(test.invisible[1])) ymin <- min(ymin, coord.ind[,2]) if(is.na(test.invisible[1])) ymax <- max(ymax, coord.ind[,2]) if(is.na(test.invisible[4])) ymin <- min(ymin, coord.ind.sup[, 2]) if(is.na(test.invisible[4])) ymax <- max(ymax, coord.ind.sup[, 2]) if(is.na(test.invisible[2])) ymin <- min(ymin, coord.var[,2]) if(is.na(test.invisible[2])) ymax <- max(ymax, coord.var[,2]) if(is.na(test.invisible[5])) ymin <- min(ymin, coord.quali.sup[,2]) if(is.na(test.invisible[5])) ymax <- max(ymax, coord.quali.sup[,2]) # ylim <- c(ymin, ymax) * 1.2 ylim <- c(ymin, ymax) ylim <- (ylim-mean(ylim))*1.2 + mean(ylim) } if (nullxlimylim & diff(xlim)/diff(ylim)>3) ylim <- (ylim-mean(ylim))*diff(xlim)/diff(ylim)/3 + mean(ylim) if (nullxlimylim & diff(xlim)/diff(ylim)<1/2) xlim <- (xlim-mean(xlim))*diff(ylim)/diff(xlim)/2 + mean(xlim) if(graph.type=="ggplot") nudge_y <- (ylim[2] - ylim[1])*0.03 selection <- selectionS <- selection2 <- selection3 <- NULL if (!is.null(select)) { if (mode(select)=="numeric") selection <- select else { if (sum(rownames(res.mca$ind$coord)%in%select)!=0) selection <- which(rownames(res.mca$ind$coord)%in%select) else { if (grepl("contrib",select)) selection <- (rev(order(res.mca$ind$contrib[,axes[1],drop=FALSE]*res.mca$eig[axes[1],1]+res.mca$ind$contrib[,axes[2],drop=FALSE]*res.mca$eig[axes[2],1])))[1:min(nrow(res.mca$ind$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] # if (grepl("contrib",select)) selection <- (rev(order(apply(res.mca$ind$contrib[,axes,drop=FALSE],1,sum))))[1:min(nrow(res.mca$ind$coord),sum(as.integer(unlist(strsplit(select,"contrib"))),na.rm=T))] if (grepl("coord",select)) selection <- (rev(order(apply(res.mca$ind$coord[,axes,drop=FALSE]^2,1,sum))))[1:min(nrow(res.mca$ind$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select)) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selection <- (rev(order(apply(res.mca$ind$cos2[,axes,drop=FALSE],1,sum))))[1:min(nrow(res.mca$ind$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selection <- which(apply(res.mca$ind$cos2[,axes,drop=FALSE],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selection <- select } } } if (!is.null(select)&(!is.null(res.mca$call$ind.sup))) { if (mode(select)=="numeric") selectionS <- select else { if (sum(rownames(res.mca$ind.sup$coord)%in%select)!=0) selectionS <- which(rownames(res.mca$ind.sup$coord)%in%select) else { if (grepl("contrib",select)) selectionS <- NULL if (grepl("coord",select)) selectionS <- (rev(order(apply(res.mca$ind.sup$coord[,axes,drop=FALSE]^2,1,sum))))[1:min(nrow(res.mca$ind.sup$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (grepl("cos2",select)) { if (sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)>=1) selectionS <- (rev(order(apply(res.mca$ind.sup$cos2[,axes,drop=FALSE],1,sum))))[1:min(nrow(res.mca$ind.sup$coord),sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T))] else selectionS <- which(apply(res.mca$ind.sup$cos2[,axes,drop=FALSE],1,sum)>sum(as.numeric(unlist(strsplit(select,"cos2"))),na.rm=T)) } if (is.integer(select)) selectionS <- select } } } if (!is.null(selectMod)) { if (mode(selectMod)=="numeric") selection2 <- selectMod else { if (sum(rownames(res.mca$var$coord)%in%selectMod)+sum(rownames(res.mca$quali.sup$coord)%in%selectMod)!=0) selection2 <- which(rownames(res.mca$var$coord)%in%selectMod) else { if (grepl("contrib",selectMod)) selection2 <- (rev(order(res.mca$var$contrib[,axes[1],drop=FALSE]*res.mca$eig[axes[1],1]+res.mca$var$contrib[,axes[2],drop=FALSE]*res.mca$eig[axes[2],1])))[1:min(nrow(res.mca$var$coord),sum(as.integer(unlist(strsplit(selectMod,"contrib"))),na.rm=T))] if (grepl("coord",selectMod)) selection2 <- (rev(order(apply(res.mca$var$coord[,axes,drop=FALSE]^2,1,sum))))[1:min(nrow(res.mca$var$coord),sum(as.integer(unlist(strsplit(selectMod,"coord"))),na.rm=T))] if (grepl("cos2",selectMod)) { if (sum(as.numeric(unlist(strsplit(selectMod,"cos2"))),na.rm=T)>=1) selection2 <- (rev(order(apply(res.mca$var$cos2[,axes],1,sum))))[1:min(nrow(res.mca$var$coord),sum(as.numeric(unlist(strsplit(selectMod,"cos2"))),na.rm=T))] else selection2 <- which(apply(res.mca$var$cos2[,axes],1,sum)>sum(as.numeric(unlist(strsplit(selectMod,"cos2"))),na.rm=T)) } if (grepl("v.test",selectMod)) selection2 <- union(which(abs(res.mca$var$v.test[,axes[1],drop=FALSE])>sum(as.integer(unlist(strsplit(selectMod,"v.test"))),na.rm=T)),which(abs(res.mca$var$v.test[,axes[2],drop=FALSE])>sum(as.integer(unlist(strsplit(selectMod,"v.test"))),na.rm=T))) if (is.integer(selectMod)) selection2 <- selectMod } } } if ((!is.null(selectMod))&(!is.null(res.mca$call$quali.sup))) { if (mode(selectMod)=="numeric") selection3 <- selectMod else { if (sum(rownames(res.mca$var$coord)%in%selectMod)+sum(rownames(res.mca$quali.sup$coord)%in%selectMod)!=0) selection3 <- which(rownames(res.mca$quali.sup$coord)%in%selectMod) else { if (grepl("contrib",selectMod)) selection3 <- NULL if (grepl("coord",selectMod)) selection3 <- (rev(order(apply(res.mca$quali.sup$coord[,axes,drop=FALSE]^2,1,sum))))[1:min(nrow(res.mca$quali.sup$coord),sum(as.integer(unlist(strsplit(selectMod,"coord"))),na.rm=T))] if (grepl("cos2",selectMod)) { if (sum(as.numeric(unlist(strsplit(selectMod,"cos2"))),na.rm=T)>=1) selection3 <- (rev(order(apply(res.mca$quali.sup$cos2[,axes,drop=FALSE],1,sum))))[1:min(nrow(res.mca$quali.sup$coord),sum(as.numeric(unlist(strsplit(selectMod,"cos2"))),na.rm=T))] else selection3 <- which(apply(res.mca$quali.sup$cos2[,axes,drop=FALSE],1,sum)>sum(as.numeric(unlist(strsplit(selectMod,"cos2"))),na.rm=T)) } if (grepl("v.test",selectMod)) selection3 <- union(which(abs(res.mca$quali.sup$v.test[,axes[1],drop=FALSE])>sum(as.integer(unlist(strsplit(selectMod,"v.test"))),na.rm=T)),which(abs(res.mca$quali.sup$v.test[,axes[2],drop=FALSE])>sum(as.integer(unlist(strsplit(selectMod,"v.test"))),na.rm=T))) if (is.integer(selectMod)) selection3 <- selectMod } } } if (habillage == "quali") { aux <- 1 col.var <- NULL for (j in res.mca$call$quali) { col.var <- c(col.var,rep(aux,nlevels(res.mca$call$X[,j]))) aux <- aux + 1 } if (!is.null(res.mca$call$quali.sup)){ col.quali.sup <- NULL for (j in res.mca$call$quali.sup) { col.quali.sup <- c(col.quali.sup,rep(aux,nlevels(res.mca$call$X[,j]))) aux <- aux + 1 } } } if (!(habillage %in% c("none","quali","cos2","contrib"))) { if (!is.factor(res.mca$call$X[,habillage])) stop("The variable ", habillage, " is not qualitative") col.ind <- as.numeric(as.factor(res.mca$call$X[, habillage])) n.mod <- nlevels(as.factor(res.mca$call$X[, habillage])) col.ind.sup <- col.ind[res.mca$call$ind.sup] if (!is.null(res.mca$call$ind.sup)) col.ind <- col.ind[-res.mca$call$ind.sup] } # if (habillage == "none" & graph.type == "classic") { if (habillage == "none") { if (length(col.var)==1) col.var <- rep(col.var,nrow(coord.var)) if (!is.null(res.mca$call$quali.sup) & length(col.quali.sup)==1) col.quali.sup <- rep(col.quali.sup,nrow(coord.quali.sup)) } titre <- title if (is.null(title)) titre <- "MCA factor map" if (is.na(test.invisible[1])|is.na(test.invisible[2])|is.na(test.invisible[4])|is.na(test.invisible[5])) { if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new(width=min(14,max(8,8*diff(xlim)/diff(ylim))),height=8) # if (is.null(palette)) palette = c("black","red","green3","blue","cyan","magenta","darkgray","darkgoldenrod","darkgreen","violet","turquoise","orange","lightpink","lavender","yellow","lightgreen","lightgrey","lightblue","darkkhaki", "darkmagenta","darkolivegreen","lightcyan", "darkorange", "darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet", "lightgray","lightsalmon","lightyellow", "maroon") if (graph.type == "classic"){ plot(0, 0, main = titre, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp=1, ...) abline(v=0,lty=2, ...) abline(h=0,lty=2, ...) } df_ind2a <- df_ind2b <- df_var <- df_quali.sup <- df_quanti.sup <- NULL coo <- labe <- coll <- ipch <- fonte <- NULL if (is.na(test.invisible[1])) { coo <- rbind(coo,coord.ind) if (lab.ind){ labe <- c(labe,rownames(coord.ind)) } else labe <- c(labe,rep("",nrow(coord.ind))) if (length(col.ind)==1) coll <- c(coll,rep(col.ind,nrow(coord.ind))) else coll <- c(coll,col.ind) if (!is.null(select)) { if (is.numeric(unselect)) coll[!((1:length(coll))%in%selection)] <- rgb(t(col2rgb(coll[!((1:length(coll))%in%selection)])),alpha=255*(1-unselect),maxColorValue=255) else coll[!((1:length(coll))%in%selection)] <- unselect labe[!((1:length(labe))%in%selection)] <- "" } ipch <- c(ipch,rep(16,nrow(coord.ind))) fonte <- c(fonte,rep(1,nrow(coord.ind))) if (graph.type == "ggplot") df_ind2a <- data.frame(labe,coord.ind,coll,ipch,fonte) } if (is.na(test.invisible[2])) { coo <- rbind(coo,coord.var) if (lab.var){ labe2 <- rownames(coord.var) } else labe2 <- rep("",nrow(coord.var)) coll2 <- col.var if(graph.type == "ggplot"){ if(length(col.var) == 1) coll2 <- rep(col.var, nrow(coord.var)) else{coll2 <- col.var[1:nrow(coord.var)]} } if (!is.null(selectMod)) { if (is.numeric(unselect)) coll2[!((1:length(coll2))%in%selection2)] <- rgb(t(col2rgb(coll2[!((1:length(coll2))%in%selection2)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!((1:length(coll2))%in%selection2)] <- unselect labe2[!((1:length(labe2))%in%selection2)] <- "" } if (graph.type == "ggplot") df_var <- data.frame(labe2,coord.var,coll2,rep(17,nrow(coord.var)),rep(1,nrow(coord.var))) coll <- c(coll,coll2) labe <- c(labe,labe2) ipch <- c(ipch,rep(17,nrow(coord.var))) fonte <- c(fonte,rep(1,nrow(coord.var))) } if (!is.null(res.mca$quali.sup) & is.na(test.invisible[5])) { coo <- rbind(coo,coord.quali.sup) if (lab.quali.sup){ labe2 <- rownames(coord.quali.sup) } else labe2 <- rep("",nrow(coord.quali.sup)) coll2 <- col.quali.sup # if((graph.type == "ggplot") & !(habillage %in% c("quali"))) coll2 <- rep(col.quali.sup, nrow(coord.quali.sup)) if ((!is.null(selectMod))&!is.null(selection3)) { if (is.numeric(unselect)) coll2[!((1:length(coll2))%in%selection3)] <- rgb(t(col2rgb(coll2[!((1:length(coll2))%in%selection3)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!((1:length(coll2))%in%selection3)] <- unselect labe2[!((1:length(labe2))%in%selection3)] <- "" } if (length(selectMod)==1) { if (grepl("contrib",selectMod)){ if (is.numeric(unselect)) coll2[1:length(coll2)] <- rgb(t(col2rgb(coll2[1:length(coll2)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[1:length(coll2)] <- unselect labe2[1:length(coll2)] <- "" }} if (graph.type == "ggplot") df_quali.sup <- data.frame(labe2,coord.quali.sup,coll2,rep(17,nrow(coord.quali.sup)),rep(1,nrow(coord.quali.sup))) coll <- c(coll,coll2) labe <- c(labe,labe2) ipch <- c(ipch,rep(17,nrow(coord.quali.sup))) fonte <- c(fonte,rep(1,nrow(coord.quali.sup))) } if (!is.null(res.mca$ind.sup) & is.na(test.invisible[4])) { coo <- rbind(coo,coord.ind.sup) if (lab.ind.sup){ labe2 <- rownames(coord.ind.sup) } else labe2 <- rep("",nrow(coord.ind.sup)) if (length(col.ind)==1) coll2 <- rep(col.ind.sup,nrow(coord.ind.sup)) else coll2 <- col.ind.sup if ((!is.null(select))&!is.null(selectionS)) { if (is.numeric(unselect)) coll2[!((1:length(coll2))%in%selectionS)] <- rgb(t(col2rgb(coll2[!((1:length(coll2))%in%selectionS)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[!((1:length(coll2))%in%selectionS)] <- unselect labe2[!((1:length(labe2))%in%selectionS)] <- "" } if (!is.null(select)){ if (grepl("contrib",select)){ if (is.numeric(unselect)) coll2[1:length(coll2)] <- rgb(t(col2rgb(coll2[1:length(coll2)])),alpha=255*(1-unselect),maxColorValue=255) else coll2[1:length(coll2)] <- unselect labe2[1:length(coll2)] <- "" }} coll <- c(coll,coll2) labe <- c(labe,labe2) ipch <- c(ipch,rep(16,nrow(coord.ind.sup))) fonte <- c(fonte,rep(1,nrow(coord.ind.sup))) if (graph.type == "ggplot"){ df_ind2b <- data.frame(labe2,coord.ind.sup,coll2,rep(16,nrow(coord.ind.sup)),rep(1,nrow(coord.ind.sup))) names(df_ind2b) <- names(df_ind2a) } } if (graph.type == "ggplot"){ if(!is.null(df_var)) names(df_var) <- names(df_ind2a) if(!is.null(df_quali.sup)) names(df_quali.sup) <- names(df_ind2a) if(!is.null(df_quanti.sup)) names(df_quanti.sup) <- names(df_ind2a) df_ind2 <- rbind(df_ind2a,df_ind2b) } if(graph.type == "classic"){ if ((habillage != "none")&(habillage != "quali")&(is.na(test.invisible[1])|is.na(test.invisible[2]))) { L <- list(x="topleft", legend = levels(res.mca$call$X[,habillage]), text.col = 1:n.mod, cex = par("cex") * 0.8) L <- modifyList(L, legend) do.call(graphics::legend, L) } } } if(graph.type == "classic"){ if (shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) if (any(labe!="")){ if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) if (autoLab ==TRUE) autoLab(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],shadotext=shadowtext,...) if (autoLab ==FALSE) text(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],pos=3,...) } if (!shadowtext) points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) } if (graph.type == "ggplot"){ gg_graph <- ggplot() + coord_fixed(ratio = 1) + xlim(xlim) + ylim(ylim) + geom_hline(yintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_vline(xintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + theme_light() + theme + labs(title = titre, x = lab.x, y= lab.y) if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) if(class(habillage) %in% c("numeric","integer")) habillage <- colnames(res.mca$call$X)[habillage] transparency_ind <- 1 if (!is.null(select)) transparency_ind <- ifelse(rownames(df_ind2) %in% labe, 1, 1-unselect) if (!(habillage %in% c("contrib","cos2"))){ if(habillage %in% c("none","quali")){ if(!is.null(df_ind2)){ gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3]), color= df_ind2[,4], shape = df_ind2[,5], size = ggoptions_default$size/2.8) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1]), size = ggoptions_default$size, color = df_ind2[,4], fontface = df_ind2[,6]) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1]), size = ggoptions_default$size, color = df_ind2[,4], hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25, fontface = df_ind2[,6])} gg_graph <- gg_graph + text } if(!is.null(df_var)){ if(autoLab) text_var <- ggrepel::geom_text_repel(aes(x=df_var[,2], y=df_var[,3], label=df_var[,1]), size = ggoptions_default$size, color = df_var[,4], fontface = df_var[,6]) else{text_var <- geom_text(aes(x=df_var[,2], y=df_var[,3], label=df_var[,1]), size = ggoptions_default$size, color = df_var[,4], hjust = (-sign(df_var[,2])+1)/2, vjust = -sign(df_var[,3])*0.75+0.25, fontface = df_var[,6])} gg_graph <- gg_graph + geom_point(aes(x=df_var[,2], y=df_var[,3]), color= df_var[,4], shape = df_var[,5], size = ggoptions_default$size/2.8) + text_var } if(!is.null(df_quali.sup)){ if(autoLab) text_quali.sup <- ggrepel::geom_text_repel(aes(x=df_quali.sup[,2], y=df_quali.sup[,3], label=df_quali.sup[,1]), size = ggoptions_default$size, color = df_quali.sup[,4], fontface = df_quali.sup[,6]) else{text_quali.sup <- geom_text(aes(x=df_quali.sup[,2], y=df_quali.sup[,3], label=df_quali.sup[,1]), size = ggoptions_default$size, color = df_quali.sup[,4], hjust = (-sign(df_quali.sup[,2])+1)/2, vjust = -sign(df_quali.sup[,3])*0.75+0.25, fontface = df_quali.sup[,6])} gg_graph <- gg_graph + geom_point(aes(x=df_quali.sup[,2], y=df_quali.sup[,3]), color= df_quali.sup[,4], shape = df_quali.sup[,5], size = ggoptions_default$size/2.8) + text_quali.sup } } else{ if(is.na(test.invisible[1]) || is.na(test.invisible[4]) & !is.null(df_ind2)){ gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3], color= (res.mca$call$X)[rownames(df_ind2),habillage]), shape = df_ind2[,5], alpha = transparency_ind, size = ggoptions_default$size/2.8) + scale_color_manual(values = palette[1:length(levels(res.mca$call$X[rownames(df_ind2),habillage]))], labels = levels(res.mca$call$X[,habillage])) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], habillage)) if(autoLab)text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1]), size = ggoptions_default$size, color = df_ind2[,4], fontface = df_ind2[,6]) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1]), size = ggoptions_default$size, color = df_ind2[,4], hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25, fontface = df_ind2[,6])} gg_graph <- gg_graph + text } if(is.na(test.invisible[2]) & !is.null(df_var)){ if (habillage %in% res.mca$call$quali){ gg_graph <- gg_graph + geom_point(aes(x=df_var[levels(res.mca$call$X[,habillage]),2], y=df_var[levels(res.mca$call$X[,habillage]),3]), color= palette[1:length(levels(res.mca$call$X[,habillage]))], shape = df_var[,5], size = ggoptions_default$size/2.8) if(autoLab) text_var <- ggrepel::geom_text_repel(aes(x=df_var[levels(res.mca$call$X[,habillage]),2], y=df_var[levels(res.mca$call$X[,habillage]),3], label=levels(res.mca$call$X[,habillage])), size = ggoptions_default$size, color = palette[1:length(levels(res.mca$call$X[,habillage]))], fontface = df_var[levels(res.mca$call$X[,habillage]),6]) else{text_var <- geom_text(aes(x=df_var[levels(res.mca$call$X[,habillage]),2], y=df_var[levels(res.mca$call$X[,habillage]),3], label=levels(res.mca$call$X[,habillage])), size = ggoptions_default$size, color = palette[1:length(levels(res.mca$call$X[,habillage]))], fontface = df_var[levels(res.mca$call$X[,habillage]),6])} gg_graph <- gg_graph + text_var } df_var.nohab <- df_var[which(!(rownames(res.mca$var$coord) %in% levels(res.mca$call$X[,habillage]))), ,drop = FALSE] gg_graph <- gg_graph + geom_point(aes(x = df_var.nohab[,2], y = df_var.nohab[,3]), size = ggoptions_default$size/2.8, color = df_var.nohab[,4], shape = 0) if (autoLab) text_var <- ggrepel::geom_text_repel(aes(x = df_var.nohab[,2], y = df_var.nohab[,3], label = df_var.nohab[,1]), color = col.var[1], size = ggoptions_default$size, fontface = df_var.nohab[,6]) else{text_var <- geom_text(aes(x = df_var.nohab[,2], y = df_var.nohab[,3], label = df_var.nohab[,1]), color = col.var[1], size = ggoptions_default$size, fontface = df_var.nohab[,6],hjust = (-sign(df_var.nohab[,2])+1)/2, vjust = -sign(df_var.nohab[,3])*0.75+0.25)} gg_graph <- gg_graph + text_var } if(is.na(test.invisible[5]) & !is.null(df_quali.sup)){ if (habillage %in% res.mca$call$quali.sup){ gg_graph <- gg_graph + geom_point(aes(x = df_quali.sup[levels(res.mca$call$X[,habillage]),2], y = df_quali.sup[levels(res.mca$call$X[,habillage]),3]), size = ggoptions_default$size/2.8, color = palette[1:length(levels(res.mca$call$X[,habillage]))], shape = df_quali.sup[levels(res.mca$call$X[,habillage]),5]) if (autoLab) text_quali.sup.hab <- ggrepel::geom_text_repel(aes(x = df_quali.sup[levels(res.mca$call$X[,habillage]),2], y = df_quali.sup[levels(res.mca$call$X[,habillage]),3], label=levels(res.mca$call$X[,habillage])), color = palette[1:length(levels(res.mca$call$X[,habillage]))], size = ggoptions_default$size, fontface = df_quali.sup[levels(res.mca$call$X[,habillage]),6]) else{text_quali.sup.hab <- geom_text(aes(x = df_quali.sup[levels(res.mca$call$X[,habillage]),2], y = df_quali.sup[levels(res.mca$call$X[,habillage]),3], label=levels(res.mca$call$X[,habillage])), color = palette[1:length(levels(res.mca$call$X[,habillage]))], size = ggoptions_default$size, fontface = df_quali.sup[levels(res.mca$call$X[,habillage]),6],nudge_y=nudge_y)} gg_graph <- gg_graph + text_quali.sup.hab } text_quali.sup <- NULL if(nrow(res.mca$quali.sup$coord) > nlevels(res.mca$call$X[,habillage])){ df_quali.nohab <- df_quali.sup[which(!(rownames(res.mca$quali.sup$coord) %in% levels(res.mca$call$X[,habillage]))), ,drop = FALSE] gg_graph <- gg_graph + geom_point(aes(x = df_quali.nohab[,2], y = df_quali.nohab[,3]), size = ggoptions_default$size/2.8, color = col.quali.sup[1], shape = 0) if (autoLab) text_quali.sup <- ggrepel::geom_text_repel(aes(x = df_quali.nohab[,2], y = df_quali.nohab[,3], label = df_quali.nohab[,1]), color = col.quali.sup[1], size = ggoptions_default$size, fontface = df_quali.nohab[,6]) else{text_quali.sup <- geom_text(aes(x = df_quali.nohab[,2], y = df_quali.nohab[,3], label = df_quali.nohab[,1]), color = col.quali.sup[1], size = ggoptions_default$size, fontface = df_quali.nohab[,6],hjust = (-sign(df_quali.nohab[,2])+1)/2, vjust = -sign(df_quali.nohab[,3])*0.75+0.25)} gg_graph <- gg_graph + text_quali.sup } } } } else{ if(habillage == "cos2"){ coll_ind <- coll_var <- coll_quali.sup <- coll_ind.sup <- NULL if(!is.null(res.mca$ind$cos2) & (is.na(test.invisible[1]))) coll_ind <- apply(res.mca$ind$cos2[,axes,drop = FALSE],1,FUN=sum) if(!is.null(res.mca$var$cos2) & (is.na(test.invisible[2]))) coll_var <- apply(res.mca$var$cos2[,axes,drop = FALSE],1,FUN=sum) if(!is.null(res.mca$quali.sup$cos2) & (is.na(test.invisible[5]))) coll_quali.sup <- apply(res.mca$quali.sup$cos2[,axes,drop = FALSE],1,FUN=sum) if(!is.null(res.mca$ind.sup$cos2) & (is.na(test.invisible[4]))) coll_ind.sup <- apply(res.mca$ind.sup$cos2[,axes,drop = FALSE],1,FUN=sum) } if(habillage=="contrib"){ coll_ind <- coll_var <- coll_quali.sup <- coll_ind.sup <- NULL if(!is.null(res.mca$ind$contrib) & (is.na(test.invisible[1]))) coll_ind <- res.mca$ind$contrib[,axes[1]]*res.mca$eig[axes[1],1] + res.mca$ind$contrib[,axes[2]]*res.mca$eig[axes[2],1] if(!is.null(res.mca$var$contrib) & (is.na(test.invisible[2]))) coll_var <- res.mca$var$contrib[,axes[1]]*res.mca$eig[axes[1],1] + res.mca$var$contrib[,axes[2]]*res.mca$eig[axes[2],1] if(!is.null(res.mca$quali.sup) & is.na(test.invisible[5])) coll_quali.sup <- rep(0, nrow(res.mca$quali.sup$coord)) if(!is.null(res.mca$ind.sup) & is.na(test.invisible[4])) coll_ind.sup <- rep(0, nrow(res.mca$ind.sup$coord)) } df_ind2[,4] <- c(coll_ind,coll_ind.sup) df_var[,4] <- coll_var df_quali.sup[,4] <- coll_quali.sup if(is.na(test.invisible[1])){ gg_graph <- gg_graph + geom_point(aes(x=df_ind2[,2], y=df_ind2[,3], color = df_ind2[,4]), shape = df_ind2[,5], alpha = transparency_ind, size = ggoptions_default$size/2.8) if (autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = df_ind2[,4]), size = ggoptions_default$size, show.legend = FALSE,fontface=df_ind2[,6]) else{text <- geom_text(aes(x=df_ind2[,2], y=df_ind2[,3], label=df_ind2[,1], color = df_ind2[,4]), size = ggoptions_default$size, show.legend = FALSE, hjust = (-sign(df_ind2[,2])+1)/2, vjust = -sign(df_ind2[,3])*0.75+0.25,fontface=df_ind2[,6])} gg_graph <- gg_graph + text } if(is.na(test.invisible[2]) & !is.null(df_var)){ gg_graph <- gg_graph + geom_point(aes(x=df_var[,2], y=df_var[,3], color= df_var[,4]), shape = df_var[,5], size = ggoptions_default$size/2.8) if(autoLab) text_var <- ggrepel::geom_text_repel(aes(x=df_var[,2], y=df_var[,3], label=df_var[,1], color = df_var[,4]), size = ggoptions_default$size, fontface = df_var[,6]) else{text_var <- geom_text(aes(x=df_var[,2], y=df_var[,3], label=df_var[,1], color = df_var[,4]), size = ggoptions_default$size, fontface = df_var[,6])} gg_graph <- gg_graph + text_var } if(is.na(test.invisible[5]) & !is.null(df_quali.sup)){ gg_graph <- gg_graph + geom_point(aes(x = df_quali.sup[,2], y = df_quali.sup[,3], color = df_quali.sup[,4]), size = ggoptions_default$size/2.8, shape = df_quali.sup[,5]) if (autoLab) text_quali.sup <- ggrepel::geom_text_repel(aes(x = df_quali.sup[,2], y = df_quali.sup[,3], label=df_quali.sup[,1], color = df_quali.sup[,4]), size = ggoptions_default$size, fontface = df_quali.sup[,6]) else{text_quali.sup <- geom_text(aes(x = df_quali.sup[,2], y = df_quali.sup[,3], label=df_quali.sup[,1], color = df_quali.sup[,4]), size = ggoptions_default$size, fontface = df_quali.sup[,6])} gg_graph <- gg_graph + text_quali.sup } gg_graph <- gg_graph + scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) + labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], habillage)) } } } if (choix == "quanti.sup") { gg_graph <- NULL if (!is.null(res.mca$quanti.sup)) { if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() # if (is.null(palette)) palette(c("black","red","green3","blue","cyan","magenta","darkgray","darkgoldenrod","darkgreen","violet","turquoise","orange","lightpink","lavender","yellow","lightgreen","lightgrey","lightblue","darkkhaki", "darkmagenta","darkolivegreen","lightcyan", "darkorange", "darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet", "lightgray","lightsalmon","lightyellow", "maroon")) if (is.null(title)) title <- "Supplementary quantitative variables" if(graph.type=="classic"){ plot(0, 0, main = title, xlab = lab.x, ylab = lab.y, xlim = c(-1.1,1.1), ylim = c(-1.1,1.1), col = "white", asp=1, ...) abline(v=0,lty=2, ...) abline(h=0,lty=2, ...) x.cercle <- seq(-1, 1, by = 0.01) y.cercle <- sqrt(1 - x.cercle^2) lines(x.cercle, y = y.cercle,...) lines(x.cercle, y = -y.cercle,...) } if (!is.null(select)) { if (mode(select)=="numeric") selection <- select else { if (sum(rownames(res.mca$quanti.sup$coord)%in%select)!=0) selection <- which(rownames(res.mca$quanti.sup$coord)%in%select) else { if (grepl("coord",select)) selection <- (rev(order(apply(res.mca$quanti.sup$coord[,axes]^2,1,sum))))[1:min(nrow(res.mca$quanti.sup$coord),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (is.integer(select)) selection <- select } } res.mca$quanti.sup$coord <- res.mca$quanti.sup$coord[selection,,drop=FALSE] } if(graph.type=="classic"){ for (v in 1:nrow(res.mca$quanti.sup$coord)) { arrows(0, 0, res.mca$quanti.sup$coord[v, axes[1]], res.mca$quanti.sup$coord[v, axes[2]], length = 0.1, angle = 15, code = 2, col = col.quanti.sup,...) if (abs(res.mca$quanti.sup$coord[v,axes[1]])>abs(res.mca$quanti.sup$coord[v,axes[2]])){ if (res.mca$quanti.sup$coord[v,axes[1]]>=0) pos<-4 else pos<-2 } else { if (res.mca$quanti.sup$coord[v,axes[2]]>=0) pos<-3 else pos<-1 } if((!is.null(label)) && (label=="all" | "quanti.sup" %in% label)){ text(res.mca$quanti.sup$coord[v, axes[1]], y = res.mca$quanti.sup$coord[v, axes[2]], labels = rownames(res.mca$quanti.sup$coord)[v], pos = pos, col = col.quanti.sup,...) } } } if(graph.type=="ggplot"){ if (autoLab=="auto") autoLab <- (length(which(rownames(res.mca$quanti.sup$coord)!=""))<50) df_quanti.sup <- data.frame(rownames(res.mca$quanti.sup$coord),res.mca$quanti.sup$coord[,axes[1]],res.mca$quanti.sup$coord[,axes[2]]) circle <- annotate("path", x=0+1*cos(seq(0,2*pi,length.out=100)), y=0+1*sin(seq(0,2*pi,length.out=100)), lty = ggoptions_default$circle.lty, lwd = ggoptions_default$circle.lwd, color = ggoptions_default$circle.color) gg_graph <- ggplot() + coord_fixed(ratio = 1) + geom_line(aes(x=x, y=y), data=data.frame(x=-1:1,y=0),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_line(aes(x=x, y=y), data=data.frame(x=0,y=-1:1),lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + theme_light() if(habillage=="none"){ gg_graph <- gg_graph + aes(x=df_quanti.sup[,2], y=df_quanti.sup[,3]) + geom_segment(aes(x=0,y=0,xend=df_quanti.sup[,2], yend=df_quanti.sup[,3]),arrow=arrow(length=unit(0.2,"cm")), lty = ggoptions_default$segment.lty, lwd = ggoptions_default$segment.lwd, color = col.quanti.sup) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_quanti.sup[,2], y=df_quanti.sup[,3],label=df_quanti.sup[,1]), size = ggoptions_default$size, color = col.quanti.sup) else{text <- geom_text(aes(x=df_quanti.sup[,2], y=df_quanti.sup[,3],label=df_quanti.sup[,1]), size = ggoptions_default$size, color = col.quanti.sup, hjust = (-sign(df_quanti.sup[,2])+1)/2, vjust = -sign(df_quanti.sup[,3])*0.75+0.25)} } gg_graph <- gg_graph + text + theme + circle gg_graph <- gg_graph + xlab(lab.x) + ylab(lab.y) + ggtitle(title) } } } if (choix == "var") { lab.var <- lab.quali.sup <- lab.quanti.sup <- FALSE if(length(label)==1 && label=="all") lab.var <- lab.quali.sup <- lab.quanti.sup <- TRUE if("var" %in% label) lab.var<-TRUE if("quali.sup" %in% label) lab.quali.sup<-TRUE if("quanti.sup" %in% label) lab.quanti.sup<-TRUE test.invisible <- vector(length = 3) if (!is.null(invisible)) { test.invisible[1] <- match("var", invisible) test.invisible[2] <- match("quali.sup", invisible) test.invisible[3] <- match("quanti.sup", invisible) } else test.invisible <- rep(NA, 3) if ((new.plot)&!nzchar(Sys.getenv("RSTUDIO_USER_IDENTITY"))) dev.new() # if (is.null(palette)) palette(c("black","red","green3","blue","cyan","magenta","darkgray","darkgoldenrod","darkgreen","violet","turquoise","orange","lightpink","lavender","yellow","lightgreen","lightgrey","lightblue","darkkhaki", "darkmagenta","darkolivegreen","lightcyan", "darkorange", "darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet", "lightgray","lightsalmon","lightyellow", "maroon")) if (is.null(xlim)) xlim <- c(0,1) if (is.null(ylim)) ylim <- c(0,1) if (graph.type == "classic"){ plot(0, 0, main = title, xlab = lab.x, ylab = lab.y, xlim = xlim, ylim = ylim, col = "white", asp=1, ...) abline(v=0,lty=2, ...) abline(h=0,lty=2, ...) } if (is.null(title)) title <- "Variables representation" coo <- labe <- coll <- ipch <- fonte <- NULL coord.actif <- res.mca$var$eta2[, axes,drop=FALSE] if (!is.null(res.mca$quali.sup$eta2)) coord.illu <- res.mca$quali.sup$eta2[,axes,drop=FALSE] if (!is.null(res.mca$quanti.sup$coord)) coord.illuq <- res.mca$quanti.sup$coord[,axes,drop=FALSE]^2 if (is.na(test.invisible[1])){ coo <- rbind(coo,coord.actif) if (lab.var){ labe <- c(labe,rownames(coord.actif)) } else labe <- c(labe,rep("",nrow(coord.actif))) if (length(col.var)==1) coll <- c(coll,rep(col.var,nrow(coord.actif))) else coll <- col.var ipch <- c(ipch,rep(20,nrow(coord.actif))) fonte <- c(fonte,rep(1,nrow(coord.actif))) } if ((!is.null(res.mca$quali.sup$eta2))&&(is.na(test.invisible[2]))){ coo <- rbind(coo,coord.illu) if (lab.quali.sup){ labe <- c(labe,rownames(coord.illu)) } else labe <- c(labe,rep("",nrow(coord.illu))) if (length(col.quali.sup)==1) coll <- c(coll,rep(col.quali.sup,nrow(coord.illu))) else coll <- c(coll,col.quali.sup) ipch <- c(ipch,rep(1,nrow(coord.illu))) fonte <- c(fonte,rep(3,nrow(coord.illu))) } if ((!is.null(res.mca$quanti.sup$coord))&&(is.na(test.invisible[3]))){ coo <- rbind(coo,coord.illuq) if (lab.quanti.sup){ labe <- c(labe,rownames(coord.illuq)) } else labe <- c(labe,rep("",nrow(coord.illuq))) if (length(col.quanti.sup)==1) coll <- c(coll,rep(col.quanti.sup,nrow(coord.illuq))) else coll <- c(coll,col.quanti.sup) ipch <- c(ipch,rep(1,nrow(coord.illuq))) fonte <- c(fonte,rep(3,nrow(coord.illuq))) } ### 22 mars 2018 selection <- NULL if (!is.null(select)) { if (mode(select)=="numeric") selection <- (rev(order(apply(coo^2,1,sum))))[1:min(nrow(coo), as.integer(select))] else { if (sum(rownames(coo)%in%select)!=0) selection <- which(rownames(coo)%in%select) else { if (grepl("coord",select)) selection <- (rev(order(apply(coo^2,1,sum))))[1:min(nrow(coo),sum(as.integer(unlist(strsplit(select,"coord"))),na.rm=T))] if (is.integer(select)) selection <- select } } } if (!is.null(select)) { if (is.numeric(unselect)) coll[!((1:length(coll))%in%selection)] <- rgb(t(col2rgb(coll[!((1:length(coll))%in%selection)])),alpha=255*(1-unselect),maxColorValue=255) else coll[!((1:length(coll))%in%selection)] <- unselect labe[!((1:length(labe))%in%selection)] <- "" } ### Fin 22 mars 2018 if(graph.type== "classic"){ if (any(labe!="")){ if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) if (autoLab ==TRUE) autoLab(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],...) if (autoLab ==FALSE) text(coo[labe!="", 1], y = coo[labe!="", 2], labels = labe[labe!=""], col = coll[labe!=""], font=fonte[labe!=""],pos=3,...) } points(coo[, 1], y = coo[, 2], pch = ipch, col = coll, ...) } if(graph.type == "ggplot"){ if (autoLab=="auto") autoLab <- (length(which(labe!=""))<50) df_var <- data.frame(labe,coo,coll,ipch,fonte) df_var[,5][which(df_var[,5] == 20)] <- 19 gg_graph <- ggplot() + coord_fixed(ratio = 1) + xlab(lab.x) + ylab(lab.y) + xlim(xlim) + ylim(ylim) + geom_hline(yintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + geom_vline(xintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + theme_light() + ggoptions_default$theme + ggtitle(title) if(habillage == "none"){ gg_graph <- gg_graph + geom_point(aes(x=df_var[,2], y=df_var[,3]), color= df_var[,4], shape = df_var[,5]) if(autoLab) text <- ggrepel::geom_text_repel(aes(x=df_var[,2], y=df_var[,3], label=df_var[,1]), size = ggoptions_default$size, color = df_var[,4], fontface = df_var[,6]) else{text <- geom_text(aes(x=df_var[,2], y=df_var[,3], label=df_var[,1]), size = ggoptions_default$size, color = df_var[,4], hjust = (-sign(df_var[,2])+1)/2, vjust = -sign(df_var[,3])*0.75+0.25, fontface = df_var[,6])} gg_graph <- gg_graph + text } # if(habillage == "cos2"){ # df_ind <- NULL # if(is.na(test.invisible[1])) df_ind <- rbind(df_ind, df_var[rownames(res.mca$var$eta2), ,drop = FALSE]) # if(is.na(test.invisible[2])) df_ind <- rbind(df_ind, df_var[rownames(res.mca$quali.sup$eta2), ,drop = FALSE]) # #if(is.na(test.invisible[3])) df_ind <- rbind(df_ind, df_var[rownames(res.mca$quanti.sup$coord), ,drop = FALSE]) # # coll_var <- coll_quali.sup <- coll_quanti.sup <- NULL # if(!is.null(res.mca$var$cos2) & (is.na(test.invisible[1]))){ # coll_var <- apply(res.mca$var$cos2[,axes,drop = FALSE],1,FUN=sum)} # if(!is.null(res.mca$quali.sup$cos2) & (is.na(test.invisible[2]))){ # coll_quali.sup <- apply(res.mca$quali.sup$cos2[,axes,drop = FALSE],1,FUN=sum)} # # if(!is.null(res.mca$quanti.sup$cos2) & (is.na(test.invisible[3]))){ # # coll_quanti.sup <- apply(res.mca$quanti.sup$cos2[,axes,drop = FALSE],1,FUN=sum)} # coll_quanti <- c(coll_var,coll_quali.sup,coll_quanti.sup) # #df_ind[,4] <- coll_quanti # # gg_graph <- ggplot() + # coord_fixed(ratio = 1) + # geom_point(aes(x=df_ind[,2], y=df_ind[,3], color = df_ind[,4]), shape = df_ind[,5]) + # xlab(lab.x) + ylab(lab.y) + # xlim(xlim) + ylim(ylim) + # geom_hline(yintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + # geom_vline(xintercept = 0,lty=ggoptions_default$line.lty, lwd = ggoptions_default$line.lwd, color=ggoptions_default$line.color) + # scale_color_gradient(low=ggoptions_default$low.col.quanti, high=ggoptions_default$high.col.quanti) + # labs(color = ifelse(legend["title"] %in% legend, legend["title"][[1]], "cos2")) + # theme_light() + # ggoptions_default$theme + # ggtitle(title) # if (autoLab) text <- ggrepel::geom_text_repel(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1], color = df_ind[,4]), size = ggoptions_default$size, show.legend = FALSE,fontface=df_ind[,6]) # else{text <- geom_text(aes(x=df_ind[,2], y=df_ind[,3], label=df_ind[,1], color = df_ind[,4]), size = ggoptions_default$size, show.legend = FALSE, nudge_y = nudge_y,fontface=df_ind[,6])} # gg_graph <- gg_graph + text # } # if(habillage == "contrib"){ # # } gg_graph <- gg_graph + theme } } palette(old.palette) if(graph.type == "ggplot") return(gg_graph) } FactoMineR/R/HCPC.R0000644000176200001440000004617014201417366013316 0ustar liggesusersHCPC <- function (res, nb.clust = 0, consol = TRUE, iter.max = 10, min = 3, max = NULL, metric = "euclidean", method = "ward", order = TRUE, graph.scale = "inertia", nb.par = 5, graph = TRUE, proba = 0.05,cluster.CA="rows", kk=Inf,description=TRUE,...) { auto.cut.tree <- function(res, min, max, metric, method, weight=NULL,cla=NULL,...) { if (order) { if (is.null(res$call$row.w)) res$call$row.w <- rep(1/nrow(res$ind$coord),nrow(res$ind$coord)) if (is.null(res$call$row.w.init)) res$call$row.w.init <- res$call$row.w sss <- cbind.data.frame(res$ind$coord, res$call$X, res$call$row.w, res$call$row.w.init) if (!is.null(weight)) weight <- weight[order(sss[, 1], decreasing = FALSE)] sss <- sss[order(sss[, 1], decreasing = FALSE), ] res$ind$coord <- sss[, 1:ncol(res$ind$coord),drop=FALSE] res$call$X <- sss[, (ncol(res$ind$coord) + 1):(ncol(sss)-2)] res$call$row.w <- sss[,ncol(sss)-1] res$call$row.w.init <- sss[,ncol(sss)] } X <- as.data.frame(res$ind$coord) # if("flashClust"%in%rownames(installed.packages())) require(flashClust,quiet=TRUE) do <- dist(X,method=metric)^2 if (is.null(weight)) weight <- rep(1,nrow(X)) eff <- outer(weight,weight,FUN=function(x,y,n) {x*y/n/(x+y)},n=sum(weight)) dissi <- do*eff[lower.tri(eff)] hc <- flashClust::hclust(dissi, method = method, members = weight) inert.gain <- rev(hc$height) if (!is.null(cla)) inert.gain <- c(inert.gain,cla$tot.withinss/sum(cla$size)) intra <- rev(cumsum(rev(inert.gain))) quot <- intra[min:(max)]/intra[(min - 1):(max - 1)] nb.clust <- which.min(quot) + min -1 # changement dans calcul annule. Mis dans la version 1.34 2016/04/12 (2 lignes changees) # quot = inert.gain[(min-1):(max-1)]/inert.gain[min:max] # nb.clust = which.max(quot) + min - 1 return(list(res = res, tree = hc, nb.clust = nb.clust, within = intra, inert.gain = inert.gain, quot = quot)) } consolidation <- function(X, clust, iter.max = 10, ...) { centers <- NULL centers <- by(X, clust, colMeans) centers <- matrix(unlist(centers), ncol = ncol(X), byrow = TRUE) km <- kmeans(X, centers = centers, iter.max = iter.max, ...) return(km) } select <- function(Y, default.size, method, coord.centers) { clust <- Y[1, ncol(Y)] Y <- Y[, -ncol(Y),drop=FALSE] Z <- rbind(Y, coord.centers) if (nrow(Y) == 1) { distance <- data.frame(0, row.names = "") colnames(distance) <- rownames(Z[1, ]) } else { distance <- as.matrix(dist(Z, method = method)) distance <- distance[(nrow(Y) + 1):nrow(distance), -((nrow(Y) + 1):ncol(distance))] distance <- sort(distance[clust, ], decreasing = FALSE) } if (length(distance) > default.size) distance <- distance[1:default.size] else distance <- distance } distinctivness <- function(Y, default.size, method, coord.centers) { clust <- as.numeric(Y[1, ncol(Y)]) Y <- Y[, -ncol(Y),drop=FALSE] Z <- rbind(Y, coord.centers) if (nrow(Y) == 1) { distance <- as.matrix(dist(Z, method = method)) ind.car <- vector(length = 1, mode = "numeric") ind.car <- min(distance[-c(1, (clust + 1)), 1]) names(ind.car) <- rownames(Z[1, ]) } else { distance <- as.matrix(dist(Z, method = method)) distance <- distance[(nrow(Y) + 1):nrow(distance),-((nrow(Y) + 1):ncol(distance))] if (nrow(distance) == 2) center.min <- distance[-clust, ] else center.min <- apply(distance[-clust, ], 2, min) ind.car <- sort(center.min, decreasing = TRUE) } if (length(ind.car) > default.size) ind.car <- ind.car[1:default.size] else ind.car <- ind.car } #### Main program # if((method=="ward")&(!("flashClust"%in%rownames(installed.packages())))) method="ward.D" ### use of ward.D because I transform the distance to have the results obtained by ward.D2 res.sauv <- res if ((kk!=Inf)&(consol==TRUE)){ warning("No consolidation has been done after the hierarchical clustering since kk is different from Inf (see help for more details)") consol <- FALSE } if (is.vector(res)) { res <- cbind.data.frame(res, res) res <- PCA(res, scale.unit = FALSE, ncp = Inf, graph = FALSE) vec <- TRUE } else vec <- FALSE # if(inherits(res,"CA")){ # if(cluster.CA=="rows") res=as.data.frame(res$row$coord) # if(cluster.CA=="columns") res=as.data.frame(res$col$coord) # } if (is.matrix(res)) res <- as.data.frame(res) cla <- NULL if (inherits(res, "PCA") | inherits(res, "MCA") | inherits(res,"MFA") | inherits(res, "HMFA") | inherits(res, "FAMD")) { if (kkabs(coord.var[v,2])){ if (coord.var[v,1]>=0) pos<-4 else pos<-2 } else { if (coord.var[v,2]>=0) pos<-3 else pos<-1 } text(coord.var[v, 1], y = coord.var[v, 2], labels = rownames(coord.var)[v], pos = pos, cex=cex, col = col.var[v]) } } } if (!is.null(coord.quanti)) { col.sup<-rep(col.sup, length=nrow(coord.quanti)) for (q in 1:nrow(coord.quanti)) { if (sum(quanti.cos2[q, ], na.rm = TRUE) < lim.cos2.var) draw.quanti[q] <- FALSE if (draw.quanti[q]) { arrows(0, 0, coord.quanti[q, 1], coord.quanti[q, 2], length = 0.1, angle = 15, code = 2, lty = 2, col=col.sup[q]) if (lab.quanti[q]) { if (abs(coord.quanti[q,1])>abs(coord.quanti[q,2])){ if (coord.quanti[q,1]>=0) pos<-4 else pos<-2 } else { if (coord.quanti[q,2]>=0) pos<-3 else pos<-1 } text(coord.quanti[q, 1], y = coord.quanti[q, 2], labels = rownames(coord.quanti)[q], pos = pos, col=col.sup[q]) } } } } par(mar = c(5, 4, 4, 2) + 0.1) } FactoMineR/R/print.LinearModel.R0000644000176200001440000000407714343654726016141 0ustar liggesusersprint.LinearModel<-function(x, ...){ if (!is.null(x$callComp)){ cat("Results for the complete model:\n", sep = "") cat("==============================", sep = "") cat("\nCall:\n", paste(deparse(x$callComp), sep = "\n", collapse = "\n"), "\n", sep = "") sumLm <- x$lmResultComp cat("\nResidual standard error:", format(signif(sumLm$sigma,4)), "on", sumLm$df[2L], "degrees of freedom\n") if (!is.null(sumLm$fstatistic)) { cat("Multiple R-squared: ", formatC(sumLm$r.squared, digits = 4), # ",\tAdjusted R-squared: ", formatC(sumLm$adj.r.squared, digits = 4), "\nF-statistic:", formatC(sumLm$fstatistic[1L],digits = 4), "on", sumLm$fstatistic[2L], "and", sumLm$fstatistic[3L], "DF, p-value:", formatC(pf(sumLm$fstatistic[1L], sumLm$fstatistic[2L], sumLm$fstatistic[3L], lower.tail = FALSE), digits = 4), "\nAIC =", formatC(sumLm$aic,digits = 4)," BIC =",formatC(sumLm$bic,digits = 4)) } cat("\n\n") cat("Results for the model selected by ",toupper(x$call$selection)," criterion:\n", sep = "") cat("===============================================", sep = "") } cat("\nCall:\n", paste(deparse(x$call), sep = "\n", collapse = "\n"), "\n", sep = "") sumLm <- x$lmResult cat("\nResidual standard error:", format(signif(sumLm$sigma,4)), "on", sumLm$df[2L], "degrees of freedom\n") if (!is.null(sumLm$fstatistic)) { cat("Multiple R-squared: ", formatC(sumLm$r.squared, digits = 4), # ",\tAdjusted R-squared: ", formatC(sumLm$adj.r.squared, digits = 4), "\nF-statistic:", formatC(sumLm$fstatistic[1L],digits = 4), "on", sumLm$fstatistic[2L], "and", sumLm$fstatistic[3L], "DF, p-value:", formatC(pf(sumLm$fstatistic[1L], sumLm$fstatistic[2L], sumLm$fstatistic[3L], lower.tail = FALSE), digits = 4), "\nAIC =", formatC(sumLm$aic,digits = 4)," BIC =",formatC(sumLm$bic,digits = 4)) } cat("\n\n") if (!inherits(x, "LinearModel")) stop("need to be a LinearModel object") cat("Ftest\n") print(x$Ftest,signif.stars =FALSE) cat("\nTtest\n") printCoefmat(x$Ttest,signif.stars =FALSE) }FactoMineR/R/predict.LinearModel.R0000644000176200001440000000077514300667272016431 0ustar liggesuserspredict.LinearModel <- function(object, newdata, interval = c("none", "confidence", "prediction"), level = 0.95, type = c("response", "terms"), ...){ if (inherits(object, "LinearModel")){ formule <- object$lmResult$call if ("selection"%in%names(formule)) formule <- formule[-which(names(formule)%in%"selection")] object <- eval(formule) } res <- stats::predict.lm(object, newdata, interval = interval, level = level, type = type, ...) return(res) } FactoMineR/R/DMFA.R0000644000176200001440000001165614132254053013304 0ustar liggesusersDMFA <- function(don, num.fact = ncol(don), scale.unit=TRUE, ncp=5,quanti.sup=NULL,quali.sup=NULL, graph=TRUE, axes=c(1,2)){ if (is.null(rownames(don))) rownames(don) <- 1:nrow(don) if (is.null(colnames(don))) colnames(don) <- paste("V",1:ncol(don),sep="") for (j in 1:ncol(don)) if (colnames(don)[j]=="") colnames(don)[j] <- paste("V",j,sep="") if (!is.null(quali.sup) & !is.numeric(quali.sup)) quali.sup<- which(colnames(X)%in%quali.sup) if (!is.null(quanti.sup) & !is.numeric(quanti.sup)) quanti.sup<- which(colnames(X)%in%quanti.sup) for (j in 1:nrow(don)) if (is.null(rownames(don)[j])) rownames(don)[j] <- paste("row",j,sep="") don <- as.data.frame(don) is.quali <- which(!unlist(lapply(don,is.numeric))) don[,is.quali] <- lapply(don[,is.quali,drop=FALSE],as.factor) don <- droplevels(don) don <- don[,c(num.fact,quali.sup,(1:ncol(don))[-c(num.fact,quali.sup,quanti.sup)],quanti.sup)] num.fact <- 1 if (!is.null(quali.sup)) quali.sup <- (2:(1+length(quali.sup))) don[,num.fact] <- as.factor(don[,num.fact]) lev <- levels(don[,num.fact]) if (all(lev%in%(1:100000))) lev <- paste("Gr",lev,sep="") levels(don[,num.fact]) <- lev ng <- length(lev) if (!is.null(quanti.sup)){ quanti.sup <- ((ncol(don)-length(quanti.sup)+1):ncol(don)) quanti.sup <- quanti.sup + length(quali.sup) } vars <- colnames(don[,-num.fact]) n <- nrow(don) p <- ncol(don)-1 group.means <- matrix(0, nrow = ng, ncol = p) Cov <- Xc <- FS <- ni <- structure(vector(mode = "list", length = ng), names = lev) for(i in 1:ng) { Xc[[i]] <- scale(don[don[,num.fact]==lev[i] , -c(num.fact,quali.sup)], scale=scale.unit) if (!scale.unit) Cov[[i]] <- cov(Xc[[i]]) if (scale.unit) Cov[[i]] <- cor(Xc[[i]]) ni[[i]] <- nrow(Xc[[i]]) if (i ==1) X <- Xc[[i]] else X <- rbind.data.frame(X, Xc[[i]]) } X <- cbind.data.frame(don[,num.fact,drop=FALSE],X) if (is.null(quali.sup)) res.pca <- PCA(X,quali.sup=1,graph=FALSE,ncp=ncp,quanti.sup=quanti.sup) else { X.quali <- don[,quali.sup] for (i in 1:length(quali.sup)) X.quali <- cbind.data.frame(X.quali,as.factor(paste(don[,quali.sup[i]],don[,num.fact],sep=""))) X <- cbind.data.frame(don[,num.fact],X.quali,X[,-1]) res.pca <- PCA(X,quali.sup=1:(1+2*length(quali.sup)),graph=FALSE,ncp=ncp,quanti.sup=quanti.sup) } ### deb ajout res.pca$ind$coord <- res.pca$ind$coord[rownames(don),] res.pca$ind$contrib <- res.pca$ind$contrib[rownames(don),] res.pca$ind$cos2 <- res.pca$ind$cos2[rownames(don),] res.pca$ind$dist <- res.pca$ind$dist[rownames(don)] ### fin ajout ncp <- ncol(res.pca$var$coord) V <- res.pca$var$coord for (j in 1:ng) FS[[j]] <- res.pca$ind$coord[don[,num.fact]==lev[j],] ## Ajout des variables partielles cor.partiel <- correl <- structure(vector(mode = "list", length = ng), names = lev) for (j in 1:ng){ cor.partiel[[j]] <- cor(Xc[[j]],FS[[j]]) correl[[j]] <- cor(FS[[j]]) } #### Graphe des groupes avec methode de Seb coord.gr <- coord.gr2 <- cos2.gr <- matrix(0,ng,ncp) for (s in 1:ncp) { if (is.null(quanti.sup)) for (j in 1:ng) coord.gr[j,s] <- sum(diag(V[,s]%*%t(V[,s])%*%Cov[[j]]))/res.pca$eig[s,1] else for (j in 1:ng) coord.gr[j,s] <- sum(diag(V[,s]%*%t(V[,s])%*%Cov[[j]][1:(nrow(Cov[[j]])-length(quanti.sup)),1:(nrow(Cov[[j]])-length(quanti.sup))]))/res.pca$eig[s,1] } for (j in 1:ng){ if (is.null(quanti.sup)){ eigaux <- eigen(Cov[[j]]) coord.gr2[j,] <- coord.gr[j,] / eigaux$values[1] cos2.gr[j,] <- coord.gr[j,]^2 / sum(eigaux$values^2) *100 } else { coord.gr2[j,] <- coord.gr[j,] / eigen(Cov[[j]][1:(nrow(Cov[[j]])-length(quanti.sup)),1:(nrow(Cov[[j]])-length(quanti.sup))])$values[1] cos2.gr[j,] <- coord.gr[j,]^2 / sum(eigen(Cov[[j]][1:(nrow(Cov[[j]])-length(quanti.sup)),1:(nrow(Cov[[j]])-length(quanti.sup))])$values^2) *100 } } colnames(coord.gr) <- colnames(coord.gr2) <- colnames(cos2.gr) <- colnames(res.pca$var$coord) rownames(coord.gr) <- rownames(coord.gr2) <- rownames(cos2.gr) <- lev #### Fin graphe des groupes avec methode de Seb res <- list() if (nrow(res.pca$quali.sup$coord)>ng){ res <- res.pca res$quali.sup$coord <- res$quali.sup$coord[-(1:ng),] res$quali.sup$cos2 <- res$quali.sup$cos2[-(1:ng),] res$quali.sup$v.test <- res$quali.sup$v.test[-(1:ng),] } else res <- res.pca[names(res.pca)!=c("quali.sup")] res$var.partiel <- cor.partiel res$cor.dim.gr <- correl res$Xc <- Xc res$group$coord <- coord.gr res$group$coord.n <- coord.gr2 res$group$cos2 <- cos2.gr res$Cov <- Cov class(res) <- c("DMFA", "list") if (graph) { plot.DMFA(res, choix="ind",invisible="quali", label="none", axes=axes,new.plot=TRUE) plot.DMFA(res, choix="var", axes=axes,new.plot=TRUE) plot.DMFA(res, choix="group", axes=axes,new.plot=TRUE) if (!is.null(quali.sup)) plot.DMFA(res, choix="quali", axes=axes,new.plot=TRUE) } return(res) } FactoMineR/R/condes.r0000644000176200001440000001016014132226672014103 0ustar liggesuserscondes <- function (donnee, num.var, weights=NULL, proba = 0.05) { cor.calc <- function(y,x,w=NULL){ if (is.null(w)) w <- rep(1,length(x)) Z <- cbind(x,y) missing <- apply(is.na(Z),1,any) Z <- Z[!missing,] w <- w[!missing] n <- sum(w) if (n<3) n <- sum(w)*length(x) ### au cas ou les poids somment a 1, on multiplie par n r <- cov.wt(Z,wt=w,method="ML",cor=TRUE)$cor[1,2] return( list(r=r,proba=pt(sqrt(n-2)*sqrt(r^2/(1-r^2)),n-2,lower.tail=FALSE)*2)) } test.aov.w <- function(y,x,w=NULL){ if (is.null(w)) w <- rep(1,length(x)) res.aov <- aov(y ~ x, weights=w, na.action = na.exclude) res <- summary(res.aov)[[1]] ddlR <- sum(w[!apply(is.na(cbind.data.frame(x,y)),1,any)])-nlevels(x) tabF <- c(res[1, 2]/(res[1, 2]+res[2,2]), pf((res[1,3])/(res[2,2]/(ddlR)), res[1, 1], ddlR, lower.tail = FALSE)) Estimate <- summary.lm(res.aov)$coef[-1, 1,drop=FALSE] Estimate <- c(Estimate, -sum(Estimate)) tabX <- tab.disjonctif(x) aux <- apply(tabX,2,cor.calc,y,w=w) aux <- matrix(as.numeric(sapply(aux,unlist)),byrow=T,ncol=2) p.value <- aux[,2] resT <- cbind(Estimate,p.value) return(list(tabF = tabF, resT = resT)) } donnee <- as.data.frame(donnee) is.quali <- which(!unlist(lapply(donnee,is.numeric))) donnee[,is.quali] <- lapply(donnee[,is.quali,drop=FALSE],as.factor) donnee <- droplevels(donnee) lab.sauv <- lab <- colnames(donnee) quali <- NULL if (is.null(weights)) weights <- rep(1,nrow(donnee)) if (sum(weights)<3) weights <- weights*nrow(donnee) for (i in 1:length(lab)) { if (is.factor(donnee[, i])) { if (any(is.na(donnee[, i]))) { levels(donnee[, i]) <- c(levels(donnee[, i]),"NA") donnee[, i][is.na(donnee[, i])] <- "NA" } if (levels(donnee[, i])[1] == "") levels(donnee[, i])[1] <- "NA" if (i != num.var) { levels(donnee[, i]) <- paste(colnames(donnee)[i],levels(donnee[, i]),sep="=") quali <- c(quali, i) } } } quanti <- (1:ncol(donnee))[-c(quali, num.var)] if (length(quanti) == 0) quanti <- NULL colnames(donnee) <- lab result <- list() if (!is.null(quanti)) { if (length(quanti)>1){ tab.quanti <- apply(donnee[,quanti],2,cor.calc,donnee[,num.var],w=weights) aux <- matrix(as.numeric(sapply(tab.quanti,unlist)),byrow=TRUE,ncol=2) } else aux <- matrix(unlist(cor.calc(donnee[, quanti], donnee[, num.var],w=weights)),ncol=2) rownames(aux) <- colnames(donnee)[quanti] resQ <- NULL if (NROW(aux) > 1) aux <- aux[rev(order(aux[, 1])), ] resQ <- aux[aux[, 2] <= proba, , drop = FALSE] colnames(resQ) <- c("correlation", "p.value") if (nrow(resQ)==0) resQ <- NULL result$quanti <- resQ } if (!is.null(quali)) { old.contr <- options()$contrasts options(contrasts = c("contr.sum", "contr.sum")) tabF <- matrix(NA, length(quali), 2) tabT <- matrix(NA, 1, 2) indice.tabT <- 0 for (v in 1:length(quali)) { resaov <- test.aov.w(donnee[, num.var], donnee[, quali[v]], w=weights) tabF[v,] <- resaov$tabF resT <- resaov$resT rownames(resT) <- levels(donnee[, quali[v]]) tabT <- rbind(tabT, resT) } rownames(tabF) <- colnames(donnee)[quali] colnames(tabF) <- c("R2","p.value") tabT <- tabT[-1, ] resF <- resT <- NULL if (sum(tabF[,2] <= proba) > 0) resF <- tabF[tabF[,2] <= proba,,drop=FALSE] if (!is.null(resF)) resF <- resF[order(resF[,2]),,drop=FALSE] tabT <- tabT[rev(order(sign(tabT[, 1])/tabT[, 2])), ] if (sum(tabT[, 2] <= proba) >= 1) resT <- tabT[tabT[, 2] <= proba, ,drop=FALSE] result$quali <- resF result$category <- resT options(contrasts = old.contr) } if (is.null(quali) & is.null(quanti)) print(paste("The value of proba is too small. Choose a proba greater than",proba)) result$call <- list(num.var=num.var, proba=proba, weights=weights, X=donnee) class(result) <- c("condes", "list") return(result) } FactoMineR/R/reconst.R0000644000176200001440000000350014132555443014246 0ustar liggesusersreconst <- function (res, ncp=NULL){ if (inherits(res, "CA")) { if (is.null(ncp)) ncp <- ncol(res$row$coord) ncp <- min(ncp,ncol(res$row$coord)) X <- res$call$X P <- as.matrix(X/sum(X)) Rc <- apply(P, 2, sum) Rr <- apply(P, 1, sum) if (ncp>0) { U <- sweep(sweep(res$row$coord[,1:ncp,drop=FALSE],1,sqrt(Rr),FUN="*"), 2, sqrt(res$eig[1:ncp,1]), FUN = "/") V <- sweep(sweep(res$col$coord[,1:ncp,drop=FALSE],1,sqrt(Rc),FUN="*"), 2, sqrt(res$eig[1:ncp,1]), FUN = "/") if (ncp>1) { S <- sweep(U,2,sqrt(res$eig[1:ncp,1]),FUN="*")%*%t(V) } else S <- (U*sqrt(res$eig[1:ncp,1]))%*%t(V) hatX <- sum(X)*(sweep(sweep(S,1,sqrt(Rr),FUN="*"),2,sqrt(Rc),FUN="*") + Rr%*%t(Rc)) } else hatX <- Rr%*%t(Rc) return(hatX) } else{ if (is.null(ncp)) ncp <- ncol(res$ind$coord) ncp <- min(ncp,ncol(res$ind$coord)) if (inherits(res, "MFA")) coord.var <- sweep(as.matrix(res$quanti.var$coord)[,1:ncp,drop=F],1,res$call$col.w,FUN="*") if (inherits(res, "PCA")) coord.var <- as.matrix(res$var$coord)[,1:ncp,drop=F] coord.ind <- as.matrix(res$ind$coord)[,1:ncp,drop=F] hatX <- coord.ind%*%t(sweep(coord.var,2,sqrt(res$eig[1:ncp,1]),FUN="/")) if (inherits(res, "PCA")) { hatX <- sweep(hatX,2,res$call$ecart.type,FUN="*") hatX <- sweep(hatX,2,res$call$centre,FUN="+") } if (inherits(res, "MFA")) { ecarttype <- res$separate.analyses[[1]][["call"]][["ecart.type"]] for (g in 2:length(res$call$group)) ecarttype <- c(ecarttype,res$separate.analyses[[g]][["call"]][["ecart.type"]]) moy <- res$separate.analyses[[1]][["call"]][["centre"]] for (g in 2:length(res$call$group)) moy <- c(moy,res$separate.analyses[[g]][["call"]][["centre"]]) hatX <- sweep(hatX,2,ecarttype,FUN="*") hatX <- sweep(hatX,2,res$call$col.w,FUN="/") hatX <- sweep(hatX,2,moy,FUN="+") } return(hatX) } } FactoMineR/R/print.condes.R0000644000176200001440000000131114406604414015172 0ustar liggesusersprint.condes<-function(x, ...){ if (!inherits(x, "condes")) stop("need to be a condes object") if (!is.null(x$quanti)){ cat("\nLink between the variable and the continuous variables (R-square)\n=================================================================================\n") print(x$quanti) } if (!is.null(x$quali)){ cat("\nLink between the variable and the categorical variable (1-way anova)\n=============================================\n") print(x$quali) } if (!is.null(x$category)){ cat("\nLink between variable and the categories of the categorical variables\n================================================================\n") print(x$category) } }FactoMineR/R/predict.FAMD.R0000644000176200001440000000465214132555443014742 0ustar liggesuserspredict.FAMD <- function(object, newdata, ...){ if (!inherits(object, "FAMD")) print("object should be a FAMD object") if (!is.null(colnames(newdata))) { if (any(!(rownames(object$var$coord)%in%colnames(newdata)))) warning("The names of the variables is not the same as the ones in the active variables of the FAMD result") } # object <- object$call$object ## ne pas utiliser les noms des variables comme dans les autres fonctions car les variables sont reordonnees ecart.type <- object$call$ecart.type centre <- object$call$centre prop <- object$call$prop ncp <- ncol(object$var$coord) illu <- object$call$sup.var if (length(illu)>0) object$call$X <- object$call$X[,-illu] newdata <- newdata[,colnames(object$call$X)] if (length(unlist(mapply(setdiff, lapply(newdata,levels), lapply(object$call$X,levels)))) > 0){ cat("The following categories are not in the active dataset:\n") for (i in 1:ncol(newdata)) { if (sum(!levels(newdata[,i])%in%levels(object$call$X[,i]))>0) cat("Categori(es):",levels(newdata[,i])[which(!levels(newdata[,i])%in%levels(object$call$X[,i]))]," from variable",colnames(newdata)[i],"\n") } stop("Modify your object newdata") } newdata <- rbind.data.frame(object$call$X,newdata)[-(1:nrow(object$call$X)),,drop=FALSE] if (!is.null(object$call$sup.var)) { numAct <- which((object$call$type=="s")[-object$call$sup.var]) facAct <- which((object$call$type=="n")[-object$call$sup.var]) } else { numAct <- which(object$call$type=="s") facAct <- which(object$call$type=="n") } if (is.null(ecart.type)) ecart.type <- rep(1, length(centre)) QuantiAct <- as.matrix(newdata[,numAct,drop=FALSE]) QuantiAct <- t(t(QuantiAct)-centre[1:length(numAct)]) QuantiAct <- t(t(QuantiAct)/ecart.type[1:length(numAct)]) QualiAct <- tab.disjonctif(newdata[,facAct,drop=FALSE]) QualiAct <- t(t(QualiAct)- prop) QualiAct <- t(t(QualiAct)/sqrt(prop)) tab.newdata <- cbind(QuantiAct,QualiAct) marge.col <- object$call$marge.col coord <- crossprod(t(as.matrix(tab.newdata)),object$svd$V) dist2 <- rowSums(tab.newdata^2) cos2 <- coord^2/dist2 coord <- coord[, 1:ncp,drop=FALSE] cos2 <- cos2[, 1:ncp,drop=FALSE] colnames(coord) <- colnames(cos2) <- paste("Dim", 1:ncp) rownames(coord) <- rownames(cos2) <- rownames(newdata) result <- list(coord = coord, cos2 = cos2, dist2 = sqrt(dist2)) return(result) } FactoMineR/R/print.CA.R0000644000176200001440000000525413637153762014226 0ustar liggesusersprint.CA <- function (x, file = NULL, sep = ";", ...){ res.ca <- x if (!inherits(res.ca, "CA")) stop("non convenient data") cat("**Results of the Correspondence Analysis (CA)**\n") cat("The row variable has ",nrow(res.ca$call$X)," categories; the column variable has", ncol(res.ca$call$X), "categories\n") ## IT <- res.ca$eig[length(res.ca$eig), 3] * sum(res.ca$call$X) IT <- sum(res.ca$eig[, 1] )* sum(res.ca$call$X) df <- (nrow(res.ca$call$X) - 1) * (ncol(res.ca$call$X) - 1) pc <- pchisq(IT, df = df,lower.tail = FALSE) cat("The chi square of independence between the two variables is equal to", IT, "(p-value = ", pc, ").\n") cat("*The results are available in the following objects:\n\n") res <- array("", c(21, 2), list(1:21, c("name", "description"))) res[1, ] <- c("$eig", "eigenvalues") res[2, ] <- c("$col", "results for the columns") res[3, ] <- c("$col$coord", "coord. for the columns") res[4, ] <- c("$col$cos2", "cos2 for the columns") res[5, ] <- c("$col$contrib", "contributions of the columns") res[6, ] <- c("$row", "results for the rows") res[7, ] <- c("$row$coord", "coord. for the rows") res[8, ] <- c("$row$cos2", "cos2 for the rows") res[9, ] <- c("$row$contrib", "contributions of the rows") indice <- 10 if (!is.null(res.ca$row.sup)){ res[indice, ] <- c("$row.sup$coord", "coord. for supplementary rows") res[indice + 1, ] <- c("$row.sup$cos2", "cos2 for supplementary rows") indice <- indice + 2 } if (!is.null(res.ca$col.sup)){ res[indice, ] <- c("$col.sup$coord", "coord. for supplementary columns") res[indice + 1, ] <- c("$col.sup$cos2", "cos2 for supplementary columns") indice <- indice + 2 } if (!is.null(res.ca$quanti.sup)){ res[indice, ] <- c("$quanti.sup$coord", "coord. for supplementary continuous var.") res[indice+1, ] <- c("$quanti.sup$cos2", "cos2 for supplementary continuous var.") indice <- indice + 2 } if (!is.null(res.ca$quali.sup)){ res[indice, ] <- c("$quali.sup$coord", "coord. for supplementary categorical var.") res[indice+1, ] <- c("$quali.sup$cos2", "cos2 for supplementary categorical var.") indice <- indice + 2 } res[indice, ] <- c("$call", "summary called parameters") res[indice + 1, ] <- c("$call$marge.col", "weights of the columns") res[indice + 2, ] <- c("$call$marge.row", "weights of the rows") indice <- indice + 2 print(res[1:indice,]) if (!is.null(file)) { write.infile(res.ca,file = file, sep=sep) print(paste("All the results are in the file",file)) } } FactoMineR/R/predict.MFA.R0000644000176200001440000000475414132555443014641 0ustar liggesuserspredict.MFA <- function(object, newdata, ...){ ## newdata : les donnees pour les individus supplementaires ## object : la sortie de l'AFM sur les donnees actives ec <- function(V, poids) { res <- sqrt(sum(V^2 * poids,na.rm=TRUE)/sum(poids[!is.na(V)])) } if (!is.null(object$quanti.var$coord)) ncp <- ncol(object$quanti.var$coord) else ncp <- ncol(object$quali.var$coord) tab.supp <- matrix(NA,nrow(newdata),0) for (g in 1:length(object$call$group)){ if (object$call$nature.group[g]=="quanti"){ # tab.aux <- sweep(newdata[,(c(1,1+cumsum(object$call$group))[g]):cumsum(object$call$group)[g]],2,object$separate.analyses[[g]][["call"]]$centre,FUN="-") # tab.aux <- sweep(tab.aux,2,object$separate.analyses[[g]][["call"]]$ecart.type,FUN="/") tab.aux <- t(t(newdata[,(c(1,1+cumsum(object$call$group))[g]):cumsum(object$call$group)[g]]) - object$separate.analyses[[g]][["call"]]$centre) tab.aux <- t(t(tab.aux) / object$separate.analyses[[g]][["call"]]$ecart.type) tab.supp <- cbind(tab.supp,as.matrix(tab.aux)) } else { tab.disj <- tab.disjonctif(object$separate.analyses[[g]][["call"]]$X) tab.disj.supp <- tab.disjonctif(rbind.data.frame(object$separate.analyses[[g]][["call"]]$X[1:2,],newdata[,(c(1,1+cumsum(object$call$group))[g]):cumsum(object$call$group)[g]])[-(1:2),,drop=FALSE]) ### pour que les donnees supplementaires aient les memes modalites if (!is.null(object$call$row.w.init)) SomRow <- sum(object$call$row.w.init) else SomRow <- length(object$call$row.w) M <- object$separate.analyses[[g]]$call$marge.col/SomRow # Z <- sweep(tab.disj/SomRow, 2, M*2, FUN = "-") # Zsup <- sweep(tab.disj.supp/SomRow, 2, M*2, FUN = "-") # Zsup <- sweep(Zsup, 2,apply(Z,2,ec,object$global.pca$call$row.w.init),FUN="/") Z <- t(t(tab.disj/SomRow)-M*2) Zsup <- t(t(tab.disj.supp/SomRow) - M*2) Zsup <- t(t(Zsup) / apply(Z,2,ec,object$global.pca$call$row.w.init)) tab.supp <- cbind(as.matrix(tab.supp),Zsup) } } tab.supp <- sweep(tab.supp,2,sqrt(object$call$col.w),FUN="*") coord <- crossprod(t(tab.supp),object$global.pca$svd$V*sqrt(object$call$col.w)) dist2 <- rowSums(tab.supp^2) cos2 <- (coord)^2/dist2 coord <- coord[, 1:ncp, drop = FALSE] cos2 <- cos2[, 1:ncp, drop = FALSE] colnames(coord) <- colnames(cos2) <- paste("Dim", c(1:ncp), sep = ".") rownames(coord) <- rownames(cos2) <- names(dist2) <- rownames(newdata) result <- list(coord = coord, cos2 = cos2, dist = sqrt(dist2)) } FactoMineR/R/predict.CA.R0000644000176200001440000000173413145557503014516 0ustar liggesuserspredict.CA <- function(object, newdata, ...){ if (!inherits(object, "CA")) print("object should be a CA object") if (!is.null(colnames(newdata))) { if (any(!(rownames(object$col$coord)%in%colnames(newdata)))) warning("The names of the columns is not the same as the ones in the active columns of the CA result") } newdata <- newdata[,rownames(object$col$coord)] marge.col <- object$call$marge.col col.w <- object$call$col.w ncp <- ncol(object$row$coord) somme.row <- rowSums(newdata) newdata <- newdata/somme.row coord <- crossprod(t(as.matrix(newdata)),object$svd$V) dist2.row <- rowSums(t((t(newdata)-marge.col)^2/marge.col)) cos2 <- coord^2/dist2.row coord <- coord[, 1:ncp,drop=FALSE] cos2 <- cos2[, 1:ncp,drop=FALSE] colnames(coord) <- colnames(cos2) <- paste("Dim", 1:ncp) rownames(coord) <- rownames(cos2) <- rownames(newdata) result <- list(coord = coord, cos2 = cos2) return(result) } FactoMineR/R/descfreq.R0000644000176200001440000000355014132226672014371 0ustar liggesusersdescfreq <- function(donnee,by.quali=NULL,proba = 0.05){ lab.sauv <- lab <- colnames(donnee) for (i in 1:length(lab)) lab[i] <- gsub(" ",".",lab[i]) if (!is.null(by.quali)) { donnee <- as.data.frame(matrix(unlist(by(donnee,by.quali,apply,2,sum)),ncol=ncol(donnee),byrow=TRUE)) rownames(donnee) <- levels(by.quali) } colnames(donnee) <- lab old.warn <- options("warn") options(warn = -1) marge.li <- apply(donnee,1,sum) nom <- tri <- structure(vector(mode = "list", length = nrow(donnee)), names = rownames(donnee)) marge.col <- apply(donnee,2,sum) for (j in 1:nrow(donnee)) { for (k in 1:ncol(donnee)) { aux2 <- donnee[j,k]/marge.col[k] aux3 <- marge.li[j]/sum(marge.li) if (aux2 > aux3) aux4 <- phyper(donnee[j,k]-1,marge.col[k],sum(marge.col)-marge.col[k],marge.li[j],lower.tail=FALSE)*2 else aux4 <- phyper(donnee[j,k],marge.col[k],sum(marge.col)-marge.col[k],marge.li[j])*2 if (aux4>1) aux4 <- 2-aux4 ##sinon on peut avoir proba > a 1 if (aux4aux3))*qnorm(aux4/2) aux1 <- donnee[j,k]/marge.li[j] tri[[j]] <- rbind(tri[[j]],c(aux1*100,sum(marge.col[k])/sum(donnee)*100,donnee[j,k],marge.col[k],aux4,aux5)) nom[[j]] <- rbind(nom[[j]],c(colnames(donnee)[k],colnames(donnee))) } } } for (j in 1:nrow(donnee)){ if (!is.null(tri[[j]])){ oo <- rev(order(tri[[j]][,6])) tri[[j]] <- tri[[j]][oo,] nom[[j]] <- nom[[j]][oo,] if (nrow(matrix(tri[[j]],ncol=6))>1) rownames(tri[[j]]) <- nom[[j]][,1] else { tri[[j]] <- matrix(tri[[j]],ncol=6) rownames(tri[[j]]) <- nom[[j]][1] } colnames(tri[[j]]) <- c("Intern %","glob %","Intern freq","Glob freq ","p.value","v.test") } } res <- tri options(old.warn) class(res) <- c("descfreq", "list") return(res) } FactoMineR/R/tab.disjonctif.prop.R0000644000176200001440000001142614215106667016461 0ustar liggesuserstab.disjonctif.prop <- function (tab,seed=NULL,row.w=NULL) { if (!is.null(seed)){set.seed(seed)} moy.p <- function(V, poids) { res <- sum(V * poids,na.rm=TRUE)/sum(poids[!is.na(V)]) } if (is.null(row.w)) row.w <- rep(1/nrow(tab),nrow(tab)) tab <- as.data.frame(tab) isQuali <- which(!sapply(tab,is.numeric)) if (length(isQuali)==0) return(tab) # ajout car pb dans FavoInvestigate for (k in isQuali) tab[,k] <- as.factor(tab[,k]) modalite.disjonctif <- function(i) { moda <- tab[, i] nom <- names(tab)[i] n <- length(moda) moda <- as.factor(moda) x <- matrix(0L, n, length(levels(moda))) ind<-(1:n) + n * (unclass(moda) - 1L) indNA<-which(is.na(ind)) x[(1:n) + n * (unclass(moda) - 1)] <- 1L if (length(indNA)!=0){ if (is.null(seed)) { x[indNA,]<- NA x[indNA,]<- matrix(rep(apply(x,2,moy.p,row.w),each=length(indNA)),nrow=length(indNA)) x[indNA,]<- matrix(rep(apply(x,2,sum)/sum(x),each=length(indNA)),nrow=length(indNA)) } else { for (k in 1:length(indNA)) { aux <- runif(length(levels(moda))) x[indNA[k],] <- aux/sum(aux) } } } if ((ncol(tab) != 1) & (levels(moda)[1] %in% c(1:nlevels(moda),"n", "N", "y", "Y"))) dimnames(x) <- list(row.names(tab), paste(nom, levels(moda),sep = ".")) else dimnames(x) <- list(row.names(tab), levels(moda)) return(x) } if (ncol(tab) == 1) res <- modalite.disjonctif(1) else { res <- lapply(1:ncol(tab), modalite.disjonctif) res <- as.matrix(data.frame(res, check.names = FALSE)) } return(res) # isQuali <- which(!sapply(tab,is.numeric)) # if (length(isQuali)==0) return(tab) # if (ncol(tab)==1) { # if (is.numeric(tab[,1])){ # return(tab) # } else { # tabdisj <- .Call("disjoVarProp", as.integer(data.matrix(tab)), # as.integer(c(nrow(tab),nlevels(tab[,1])))) ## Pb sometimes NaN with disjoVarProp ou disjoMatProp # if (any(is.nan(tabdisj))){ # tabdisj <- .Call("disjoVarProp", as.integer(data.matrix(tab)), # as.integer(c(nrow(tab),nlevels(tab[,1])))) # } ## End : Pb sometimes NaN with disjoVarProp ou disjoMatProp # rownames(tabdisj) <- rownames(tab) # colnames(tabdisj) <- levels(tab[,1]) # } # } else { # isQuanti <- which(sapply(tab,is.numeric)) # if (length(isQuanti)==0){ # tabdisj <- .Call("disjoMatProp", as.integer(data.matrix(tab)), # as.integer(dim(tab)), # as.integer(unlist(lapply(tab, nlevels)))) ## Pb sometimes NaN with disjoVarProp ou disjoMatProp # if (any(is.nan(tabdisj))){ # tabdisj <- .Call("disjoMatProp", as.integer(data.matrix(tab)), # as.integer(dim(tab)), # as.integer(unlist(lapply(tab, nlevels)))) # } ## End : Pb sometimes NaN with disjoVarProp ou disjoMatProp # } else { # nomMod <- lapply(tab, levels) # nomMod[isQuanti]=names(nomMod[isQuanti]) # tabdisj <- .Call("disjoMatProp", as.integer(data.matrix(tab[,isQuali,drop=FALSE])), # as.integer(dim(tab[,isQuali,drop=FALSE])), # as.integer(unlist(lapply(tab[,isQuali,drop=FALSE], nlevels)))) ## Pb sometimes NaN with disjoVarProp ou disjoMatProp # if (any(is.nan(tabdisj))){ # tabdisj <- .Call("disjoMatProp", as.integer(data.matrix(tab[,isQuali,drop=FALSE])), # as.integer(dim(tab[,isQuali,drop=FALSE])), # as.integer(unlist(lapply(tab[,isQuali,drop=FALSE], nlevels)))) # } ## End : Pb sometimes NaN with disjoVarProp ou disjoMatProp # } # listModa <- unlist(lapply(tab,levels)) # wlistModa <- which((listModa)%in%c("y","n","Y","N")) # if (!is.null(wlistModa)){ # variable <- rep(attributes(tab)$names,lapply(tab,nlevels)) # listModa[wlistModa] <- paste(variable[wlistModa],listModa[wlistModa],sep = ".") # } ## tabdisj <- as.matrix(data.frame(tabdisj, check.names = FALSE)) # dimnames(tabdisj) <- list(attributes(tab)$row.names,listModa) # if (length(isQuanti)!=0){ # tabdisj <- cbind(tabdisj,tab[,isQuanti,drop=FALSE]) # Vec <- rep(1,ncol(tab)) # NLevels <- unlist(pmax(lapply(tab,nlevels),1)) # pmax useful for quanti variables # Vec[isQuanti] <- 0 # for quanti vari # TabDisjMod <- rep(Vec,NLevels) # ordre <- c(which(TabDisjMod!=0),which(TabDisjMod==0)) # tabdisj <- tabdisj[,order(ordre)] # } # } # return(tabdisj) } FactoMineR/R/RegBest.r0000644000176200001440000000344114132555443014170 0ustar liggesusersRegBest <- function(y,x, int = TRUE, wt=NULL, na.action = na.omit,method=c("r2","Cp", "adjr2"), nbest=1){ if (!is.numeric(y)) stop("The variable y must be continuous !!!") for (i in 1:ncol(x)){ if (!is.numeric(x[,i])) stop("All the variables must be continuous !!!") } if (is.null(wt)) wt <- rep(1,nrow(x)) if (is.null(colnames(x))) colnames(x) <- paste("v",1:ncol(x),sep="") colnames(x) <- chartr(" ",".",colnames(x)) method <- method[1] aa <- leaps::leaps(x=x, y=y, wt=wt, int=int, method=method, nbest=nbest, names=colnames(x)) result <- vector(mode = "list", length = nrow(aa$which)) best.p <- 1 mat <- matrix(NA,nrow(aa$which),2) colnames(mat) <- c("R2","Pvalue") rownames(mat) <- paste("Model with",1:nrow(aa$which),"variables") rownames(mat)[1] <- paste("Model with",1,"variable") for (i in 1:nrow(aa$which)){ don <- cbind.data.frame(y,x[,aa$which[i,]]) if (i==1) colnames(don) <- c("y",colnames(x)[which.max(as.integer(aa$which[i,]))]) if (int) formul <- paste("y~",colnames(don)[2],sep="") else formul <- paste("y~ -1+",colnames(don)[2],sep="") if (ncol(don)>2) for (j in 3:ncol(don)) formul <- paste(formul,colnames(don)[j],sep="+") resu <- summary(lm(as.formula(as.character(formul)),data=don)) resu$pvalue <- pf(resu$fstatistic[1],resu$fstatistic[2],resu$fstatistic[3],lower.tail=F) if (method=="r2"){ if (resu$pvalue=0) prob <- pgamma(rvstd-(-2/a),shape=(4/a^2),scale=(a/2),lower.tail=FALSE) if (a<0) prob <- pgamma(a/abs(a)*rvstd+2/abs(a),shape=(4/a^2),scale=(abs(a)/2)) return(list(rv = rv, rvstd = rvstd, mean = esperance, variance = variance, skewness = a, p.value = prob)) } FactoMineR/R/summary.CaGalt.R0000644000176200001440000001211214132555444015420 0ustar liggesuserssummary.CaGalt<-function (object, nb.dec = 3, nbelements = 10, nbind = nbelements, ncp = 3, align.names = TRUE, file = "", ...) { print2 <- function(mat, file = "") { if (file == "") print(mat, quote = FALSE, right = TRUE) else { mat <- cbind(format(rownames(mat)), mat) mat <- rbind(colnames(mat), mat) mat2 <- cbind(format(mat[, 1], justify = "right"), format(mat[, 2], justify = "right")) for (k in 3:ncol(mat)) mat2 <- cbind(mat2, format(mat[, k], justify = "right")) mat2 <- cbind(mat2, "\n") for (i in 1:nrow(mat2)) cat(mat2[i, ], file = file, append = TRUE) } } print3 <- function(obj, file = "", ncp, width.row = 0, nbelements = nbelements) { list.obj <- match.arg(names(obj), c("coord", "cos2", "contrib", "cor"), several.ok = TRUE) nb.col <- sum(c("coord", "cos2", "contrib", "cor") %in% list.obj) nbelements <- min(nbelements, nrow(obj$coord)) mat <- matrix(NA, nbelements, nb.col * ncp) if("contrib" %in% list.obj){ obj$coord<-obj$coord[(rev(order(obj$contrib[, 1] + obj$contrib[, 2]))),] obj$cos2<-obj$cos2[(rev(order(obj$contrib[, 1] + obj$contrib[, 2]))),] obj$contrib<-obj$contrib[(rev(order(obj$contrib[, 1] + obj$contrib[, 2]))),] } colnames(mat) <- paste("v", 1:ncol(mat)) rownames(mat) <- format(rownames(obj$coord)[1:nbelements, drop = FALSE], width = width.row) indice <- 1 if ("coord" %in% list.obj) { mat[, indice + nb.col * (0:(ncp - 1))] <- obj$coord[1:nbelements, 1:ncp, drop = FALSE] colnames(mat)[indice + nb.col * (0:(ncp - 1))] <- paste("Dim.", 1:ncp, sep = "") indice <- indice + 1 } if ("cor" %in% list.obj) { mat[, indice + nb.col * (0:(ncp - 1))] <- obj$cor[1:nbelements, 1:ncp, drop = FALSE] colnames(mat)[indice + nb.col * (0:(ncp - 1))] <- paste("cor", 1:ncp, sep = "") indice <- indice + 1 } if ("contrib" %in% list.obj) { mat[, indice + nb.col * (0:(ncp - 1))] <- obj$contrib[1:nbelements, 1:ncp, drop = FALSE] colnames(mat)[indice + nb.col * (0:(ncp - 1))] <- "ctr" indice <- indice + 1 } if ("cos2" %in% list.obj) { mat[, indice + nb.col * (0:(ncp - 1))] <- obj$cos2[1:nbelements, 1:ncp, drop = FALSE] colnames(mat)[indice + nb.col * (0:(ncp - 1))] <- "cos2" indice <- indice + 1 } mat <- format(round(mat, nb.dec)) mat2 <- "|" for (k in 1:ncp) mat2 <- cbind(mat2, mat[, (1 + nb.col * (k - 1)):(nb.col * k), drop = FALSE], "|") colnames(mat2)[1] <- "" print2(as.matrix(mat2), file = file) } res <- object if (!inherits(res, "CaGalt")) stop("non convenient object") cat("\nEigenvalues\n", file = file, append = TRUE) eige <- format(t(round(res$eig[, 1:3], nb.dec)), justify = "right") rownames(eige) <- c("Variance", "% of var.", "Cumulative % of var.") colnames(eige) <- paste("Dim", 1:ncol(eige), sep = ".") print2(eige, file = file) ncp <- min(res$call$ncp, ncp) width.row <- 0 aux <- match.arg(names(res), c("ind", "freq", "quanti.var", "quali.var"), several.ok = TRUE) if (align.names == TRUE) { width.row <- max(nchar(rownames(res[aux[1]][[1]]$coord))) for (k in 1:length(aux)) width.row <- max(width.row, nchar(rownames(res[aux[k]][[1]]$coord)[1:min(nrow(res[aux[k]][[1]]$coord), nbelements)])) } if (nbind > 0) { cat("\nIndividuals", file = file, append = TRUE) if (nrow(res$ind$coord) > nbind) cat(paste(" (the ", nbind, " first individuals)", sep = ""), file = file, append = TRUE) cat("\n", file = file, append = TRUE) print3(res$ind, file = file, ncp = ncp, width.row = width.row, nbelements = nbind) } if (nrow(res$freq$coord) > 1) cat("\nFrequencies", file = file, append = TRUE) else cat("\nFrequency", file = file, append = TRUE) if (nrow(res$freq$coord) > nbelements) cat(paste(" (the ", nbelements, " first most contributed frequencies on the first principal plane)", sep = ""), file = file, append = TRUE) cat("\n", file = file, append = TRUE) print3(res$freq, file = file, ncp = ncp, width.row = width.row, nbelements = nbelements) if (!is.null(res$quanti.var)) { cat("\nQuantitative variables", file = file, append = TRUE) if (nrow(res$quanti.var$coord) > nbelements) cat(paste(" (the ", nbelements, " first)", sep = ""), file = file, append = TRUE) cat("\n", file = file, append = TRUE) print3(res$quanti.var, file = file, ncp = ncp, width.row = width.row, nbelements = nbelements) } if (!is.null(res$quali.var)) { cat("\nCategorical variables", file = file, append = TRUE) if (nrow(res$quali.var$coord) > nbelements) cat(paste(" (the ", nbelements, " first)", sep = ""), file = file, append = TRUE) cat("\n", file = file, append = TRUE) print3(res$quali.var, file = file, ncp = ncp, width.row = width.row, nbelements = nbelements) } }FactoMineR/R/dimdesc.r0000644000176200001440000000560714254065043014250 0ustar liggesusersdimdesc <- function (res, axes = 1:3, proba = 0.05) { if (!inherits(res, "PCA") & !inherits(res, "CA") & !inherits(res, "MCA") & !inherits(res, "MFA") & !inherits(res, "HMFA") & !inherits(res, "DMFA") & !inherits(res, "FAMD")) stop("non convenient data") if (inherits(res, "CA")) { result <- structure(vector(mode = "list", length = length(axes)), names = colnames(res$row$coord)[axes]) tableau <- res$row$coord[,axes,drop=FALSE] if (!is.null(res$call$row.sup)) tableau <- rbind.data.frame(tableau,res$row.sup$coord[,axes,drop=FALSE]) tableaucol <- res$col$coord[, axes,drop=FALSE] if (!is.null(res$call$col.sup)) tableaucol <- rbind.data.frame(tableaucol,res$col.sup$coord[,axes,drop=FALSE]) for (k in 1:length(axes)) { tab <- tableau[order(tableau[,k,drop=FALSE]),k,drop=FALSE] colnames(tab) <- "coord" sup <- NULL if (!is.null(c(res$call$quanti.sup,res$call$quali.sup))) { w <- res$call$marge.row*length(res$call$marge.row) if (is.null(res$call$row.sup)) sup <- condes(cbind.data.frame(res$row$coord[,axes[k],drop=FALSE],res$call$Xtot[,c(res$call$quali.sup,res$call$quanti.sup),drop=FALSE]),1,weights=w,proba=proba) else sup <- condes(cbind.data.frame(res$row$coord[,drop=FALSE],res$call$Xtot[-res$call$row.sup,c(res$call$quali.sup,res$call$quanti.sup),drop=FALSE]),1,weights=w,proba=proba) } tabcol <- tableaucol[order(tableaucol[,k,drop=FALSE]),k,drop=FALSE] colnames(tabcol) <- "coord" result[[k]] <- list(row=tab,col=tabcol) if (!is.null(sup$quanti)) { result[[k]][[length(result[[k]])+1]] <- sup$quanti names(result[[k]])[length(result[[k]])] <- "quanti" ## attention, c'est bien k ici car la list s'est allongee avant } if (!is.null(sup$quali)) { result[[k]][[length(result[[k]])+1]] <- sup$quali names(result[[k]])[length(result[[k]])] <- "quali" ## attention, c'est bien k ici car la list s'est allongee avant } if (!is.null(sup$category)) { result[[k]][[length(result[[k]])+1]] <- sup$category names(result[[k]])[length(result[[k]])] <- "category" ## attention, c'est bien k ici car la list s'est allongee avant } } } else { ind.supp <- res$call$ind.sup result <- structure(vector(mode = "list", length = length(axes)), names = colnames(res$ind$coord)[axes]) for (k in 1:length(axes)) { if (!is.null(ind.supp)) tableau <- cbind.data.frame(res$ind$coord[, axes[k],drop=FALSE], res$call$X[-ind.supp, ]) else tableau <- cbind.data.frame(res$ind$coord[, axes[k],drop=FALSE], res$call$X) result[[k]] <- condes(tableau, 1, proba = proba, weights=res$call$row.w.init) if (k==1) result$call <- result[[1]]$call result[[k]]$call <- NULL } } class(result) <- c("dimdesc", "list") return(result) }FactoMineR/MD50000644000176200001440000002300314610700001012534 0ustar liggesusers0537673259238c8b195c20fc88645579 *DESCRIPTION b18ea9f0b46a10ea13c3cb7490ca9764 *NAMESPACE 85af2744dcf9d308cd21b43b6091b973 *NEWS d90bad06ad9f8844ee172cd075adb758 *R/AovSum.r 383cf4d71377fe2d6df3fbbe7baf390e *R/CA.R 802b2fa8bfa44bfd5cfa230e7b93a3a6 *R/CaGalt.R 108fb07209c22d728215a948b7b1a54d *R/DMFA.R a3fc0f33fbb30d4b3471e7cbd7876efd *R/FAMD.R 091aab646ae4b7bc886e536f9276bf39 *R/GPA.R 1cd93cc05674d5b08493e3d2a2e1c7b7 *R/HCPC.R 5d2ce1205b45aba6f912a1e13d2397e2 *R/HMFA.R cc96e4b2cf90b04d4fede1354e24c161 *R/LinearModel.R 799b8c988e314650db313c71b237fdc1 *R/MCA.R a3343c6752b314f90a99a2bb7e315548 *R/MFA.R 2229c963712e62df0b5595633eac0d5e *R/PCA.R f03a8b0ccbecf824c3e20718658a5d23 *R/RegBest.r 2930776828183666ce71b43f23c01460 *R/autoLab.R f0d75a4acc8880482e780adf6e2cab20 *R/catdes.r 9174ff910fbad291803048a1a7151531 *R/coeffRV.R 8008536f04fe9015607354eef9ab52ef *R/condes.r 91129e1457868d5404be61412638e4cb *R/coord.ellipse.R 73b0267dfd82845cf390275b1513118a *R/descfreq.R db5ae6fb4c47abad78d1f732010438fc *R/dimdesc.r 3a5c61ed25d659ec44c9a7fd2c2f4a96 *R/ellipseCA.R 1461ad15bde19a0a73eca8272df5b4e3 *R/estim_ncp.r 7e200ce9fb82dc4206626d6498fc4e01 *R/graph.var.R d7a1297456514245162a3d185d37b8d9 *R/meansComp.R 385949546ca5b806a6a41532c2364bfc *R/plot.CA.R 38bf704f0e03e6955910b6694e42169b *R/plot.CaGalt.R 53e844cd58919d130a4c3469b2fa30c1 *R/plot.DMFA.R 8afbb7363a14ec93b9235ee995094499 *R/plot.FAMD.R e5006eba5369045f7fd423b5dba13cc3 *R/plot.GPA.R 332aef6e3fe88b5c7861ae92b8bb6360 *R/plot.HCPC.R faf9c3d0c9fde376a39c7219c7b17949 *R/plot.HMFA.R b834d6da66dc2ab41059108f9b8f6d5b *R/plot.MCA.R d1370fa29d4e5c75ae3b6643fa298899 *R/plot.MFA.R 46a6539a6f7b48e5f579de5870130ee7 *R/plot.PCA.R e1b00c11001404e10be8e6de71941b22 *R/plot.catdes.R d8ad15f8f887d1de8304b753023e95ac *R/plot.meansComp.R c353031b0ab682dcece2830e70741b8b *R/plotGPApartial.R daff0046d0a2084739a0b969568be0ca *R/plotMFApartial.R 710d5f0ce0c05acfb419b10509de02f1 *R/plotellipses.r 148849c2dcbb96d61d8dd9fe7919b861 *R/predict.CA.R f2f4cd49e963e63cc18388bc0e4eda51 *R/predict.FAMD.R 08c319bfb81fcd87c996ac139014b205 *R/predict.LinearModel.R c02ac0cec0cef6f7432a721501dd4de7 *R/predict.MCA.R b15618a3a184e8cc0416a25e4d19e287 *R/predict.MFA.R e64c45d16e369413d15ac07f4ad35615 *R/predict.PCA.R ef1ba9c4aa6ebc46ab30f77fb3361874 *R/prefpls.r 768fa51ec22e2068b46c26a4ec333284 *R/print.AovSum.R 46ad7983d65a1d0be18bba406bad3a65 *R/print.CA.R b6dee4cb83fdfbdc73b6f6729a71ec9b *R/print.CaGalt.R d88ccb454b97aa5bb82386150d3715ef *R/print.FAMD.R abb71487c2c6e4001bda7199b795a838 *R/print.GPA.R 5a6cc05dc850779dd11c44b71acb48b7 *R/print.HCPC.R 1d7fbb06eba4404be7ab7e0be316b653 *R/print.HMFA.R b474493d66fb24ab019350fe4dd70aa9 *R/print.LinearModel.R 93da869bae771ab3a6dd7ccfbdc3bcf7 *R/print.MCA.R d69fcba8a585a924d67086d0d51cec67 *R/print.MFA.R c46b161f7be995588038972ca50924e5 *R/print.PCA.R 5bee3491521f0d93f45c6b85a18b60ef *R/print.catdes.R 06ab2ce02025f4838d9c068ea878bf11 *R/print.condes.R 4205773a9e41bfec15315fc28892efe6 *R/print.dimdesc.R bad14a63673b87d66e1b8d31e95866cf *R/reconst.R 85036e6cbaa0353bf348459038872806 *R/simule.r 5429f5d1bd1a0c52ccc293780cbf21c7 *R/summary.CA.r c09517aae852fc7314a45f8d2199e2f7 *R/summary.CaGalt.R c4bf035b65937b3e6ca4f4becf87bdc2 *R/summary.FAMD.r 799b593ec8b2b303b6bf2780c5c5447b *R/summary.MCA.r 810824d414f94b3836b3006af1bbf55e *R/summary.MFA.r 0bdbff2a6bc8743151b182530c2f868c *R/summary.PCA.r 88c39910b5951a550eb7cf9fa8156fe5 *R/svd.triplet.R 037fa85f63d3790b78a459d7b35ddd97 *R/tab.disjonctif.R 2378db16d6c7f66a132e955f58dffa82 *R/tab.disjonctif.prop.R bf3a855caf54c6d8330ab9d15c492005 *R/textual.r 38023172b1d47940bfd223c5719c4fae *R/write.infile.R 525be59e25a116dc90fbb63b14b38257 *R/zz.R 23161c7eb305fec411df18388de0d35c *README 08afb344c8a6820ce4ca12e42c06e062 *README.md dae96a1fbb9ca2bcbd2cf83d3248460d *build/vignette.rds db7a6e9fcbbce08090234dd1bdd71724 *data/JO.rda ca494947822529ef99a28213733f1b13 *data/children.rda 374fb707f71e5e045f3dc0d0c13d486b *data/datalist 5e2c9a6d4f317a473df93c5bc46bec87 *data/decathlon.rda 02d4cc834fa529f1f9770d0c55fe041e *data/footsize.rda 9a245a1cde7b6287b897f9317f3dbda9 *data/geomorphology.rda 8247756d348472649cf2e163e6d2ce3d *data/health.rda a9c457335e49fde320b29b6d7a4edbd2 *data/hobbies.rda f4191eb43948fe737c2a795acb3037c1 *data/milk.rda 4f1d69eb016b6d1243356431f9dcd38f *data/mortality.rda 00c576fb68879829f8c630b99023b700 *data/poison.rda 1988085bcfbfecd43752e106692d3392 *data/poison.text.rda 92f819dbcc070dffebcc2c0bf97fe339 *data/poulet.rda 79422b5fefd79991b04c7fd816642043 *data/senso.rda 7d676dc02021d1ac76e65d65ca5c62dc *data/tea.rda 10933f6d819bea03183a0eb23355eef5 *data/wine.rda 1957266d4f96f12df462f86be07f615b *inst/CITATION 8b1ee96a418ee8a151e76cc2af36559c *inst/doc/FactoMineR.Rmd 6569079f1fae3cd07c0d19db15fb45d3 *inst/doc/FactoMineR.pdf d7164bf49bf1c76e80c0230d44ff365c *inst/doc/clustering.Rmd 97ad726014689f9046da51e9cc9c4809 *inst/doc/clustering.html ddacb99b217a04433af86034c2d04c94 *man/AovSum.Rd 093bc796a7bffdaacb17bb72b08b4989 *man/CA.Rd 590efd5b2e1d0ea00af20c8d8f89ea4b *man/CaGalt.Rd 23f86f94e6859bb7f59fd439b23b3f22 *man/DMFA.Rd c801cbb860105ec265042950752fa4c5 *man/FAMD.Rd 5076c325c6dcae285c080e73710cc770 *man/FactoMineR-package.Rd 4aadfb0d025ac126658c5250338c32c2 *man/HCPC.Rd f739f46b1c5c2ec0f95d6992145c45e0 *man/HMFA.Rd a2b4fb1f37bd0e99af6e6313814978af *man/JO.Rd 6924f6769e43fb54ef2f3b241a68cd91 *man/LinearModel.Rd 145a188d45298de06b672b3bdf17c11f *man/MCA.Rd a7bcdc096fc16fd1e345e29dbcce8f85 *man/MFA.Rd 3e37bffbcafd30286dbf4580eec01b14 *man/PCA.Rd 57a28b1ff4fac053ca46a098cf40925e *man/RegBest.Rd 27e534eeb6d82fbb455b2e7786a41609 *man/autoLab.Rd ff8f1e02dbf7d82b33cf6c5092255e92 *man/catdes.Rd f338c87a70806dfdb6abddd4c6b64bde *man/children.Rd 8d562d3af72128545e375bcbb7e0b9e9 *man/coeffRV.Rd 2adb3f05520c269db1f6fe53163a9c44 *man/condes.Rd 07c7c1a8542c71737850fedaae485c37 *man/coord.ellipse.Rd 4190ec6c725cf2f8cf624c5ae4ecb340 *man/decathlon.Rd e99e9841d95e9950a5101773b54e722b *man/desfreq.Rd 6195297d3529bb49a1d95f8447e8dc9a *man/dimdesc.Rd a1ac53e6cab2bb0667df706ac6273835 *man/ellipseCA.Rd 563a182c532353a71ddaff807e1f11fc *man/estim_ncp.Rd 94822911b43d85c04920e1e2bda811cf *man/footsize.Rd f5911af003648ce68833f13ff877211d *man/geomorphology.Rd 58872cb0e4064473241a739c8c634df8 *man/gpa.Rd afdca794ea8da2add452c679e0ceebdf *man/graph.var.Rd f7217548588d238a10b06b5431bf5c94 *man/health.Rd 6290d7e7f9be2a88682a206eaa095d82 *man/hobbies.Rd 350cc85943b472fdfb1f29e8e0b01bc3 *man/meansComp.Rd 40f12baaa8fa5cda1f4d4ac6133e6cda *man/milk.Rd c42863c551669f87a38c7477e6b99c69 *man/mortality.Rd 16cbe3b473ac191334ff9926b6b2eaa2 *man/plot.CA.Rd 934489ec77b9b6920ef750555c3fb56d *man/plot.CaGalt.Rd f3034242bea130b020bada836cff54d5 *man/plot.DMFA.Rd 4104fead344f32d3a526df124e2bb973 *man/plot.FAMD.Rd 1fc05ac8a1bb39e11e19d13d3fdf9393 *man/plot.GPA.Rd cc7f4bce96ca5c3c5da4ec526f1b0692 *man/plot.GPApartial.Rd a97fbb33eea1676ad921a2b13564ca48 *man/plot.HCPC.Rd 01b21761785364c8d710d132e89d0e14 *man/plot.HMFA.Rd d1134a4eb9448af278c447cd871a7504 *man/plot.MCA.Rd ed77b59247b1115b7e24886a48f1b9ca *man/plot.MFA.Rd 662887d753cb969aaa5e37e256310815 *man/plot.MFApartial.Rd 0c6282ed54fe9db8a1a831618a01433f *man/plot.PCA.Rd ad14007d97c2de3000dd4dd966c227af *man/plot.catdes.Rd ec0ea44df8315c1974a6a41908194486 *man/plot.meansComp.Rd cefdf4c0d6bdc08f09d9792d8692d49b *man/plotellipses.Rd df8f4aff961ac61088cc0e0732c636b6 *man/poison.Rd d46b10de74c5c058841e90b768c8db89 *man/poison.text.Rd eea4c2ea317c6316adf40e0a5f97245f *man/poulet.Rd 50ac20cd964c255dfac598ff9f4b7c42 *man/predict.CA.Rd fe8505c7aff55be7b78e84e682138629 *man/predict.FAMD.Rd cdb543cf1e13ed9aedbd8d84e063276c *man/predict.LinearModel.Rd f82c79636e34bbf9afd9b7156effa785 *man/predict.MCA.Rd 6eb56a0d21cc90519292bbf0754d33f6 *man/predict.MFA.Rd 75c2ed305950106cb2c89f0db7757284 *man/predict.PCA.Rd 989973798aa8f6bc6a4d258b3355a2e1 *man/prefpls.Rd 3f54c9b179ad51e572122e18034ec7f1 *man/print.AovSum.Rd 142227be9d952b6552b397c0bf1ad68c *man/print.CA.Rd 5a0733423aa64c2693ddbe864b9dc1ad *man/print.CaGalt.Rd 615c82523ebddb2a415d9b3e13b9d04c *man/print.FAMD.Rd c3c9ed796592b92a5a0ccbe0d4154c95 *man/print.GPA.Rd 104cd484a6606c00120d37bb911d9855 *man/print.HCPC.Rd fefd612b6c771e9372e836f2699589e8 *man/print.HMFA.Rd f649f327efd0f9467fe2b899d8ce4de6 *man/print.LinearModel.Rd 88f64c79c47f7bcc004b85f09b4e43ea *man/print.MCA.Rd f6c20dcdca1499a4b0adc49e7e8a563a *man/print.MFA.Rd 6da05c9ff4e2b1c9f39251d96b6fe94f *man/print.PCA.Rd db8348d150b02a2e1a473c458cd5fa36 *man/print.catdes.Rd a1891cc748feafd41524af33dd877fd4 *man/print.condes.Rd ee12e0d2dce06c1abbf41f3d8b9d4d79 *man/reconst.Rd 0a0661a0d5b6e098c6e8d7a59e3e7aca *man/senso.Rd 939626473c67c4d844b10c725659c40d *man/simule.Rd 76b0d40d93a333ec5bf16399cc383734 *man/summary.CA.Rd 67403c2a54a92d138dd7c62b83fa542c *man/summary.CaGalt.Rd 500b99cc3b640576e978e815448572d3 *man/summary.FAMD.Rd 8044f1ac84322a18da757c99139d7d26 *man/summary.MCA.Rd a32b85dbd99d92f29e8b31153d1f5acb *man/summary.MFA.Rd c31dd5d06ff7cd1854e6aec32eee2196 *man/summary.PCA.Rd 5cd77f32d5fa51edac2108b742b9b20c *man/svd.triplet.Rd f1ba9c79d198c3f7d55853155fc34597 *man/tab.disjonctif.Rd 090e9dc1684b9cbc8b06dc130f4f3daf *man/tab.disjonctif.prop.Rd 165c33cffad3ad977c89bf944394ab65 *man/tea.Rd ac829604f7593a0b5ae9f84bdf52dd6e *man/textual.Rd 1b2ee53f38d0d13b5991dab86b8368f5 *man/wine.Rd 3af3f6f5781bc52db265a22d5924ca13 *man/write.infile.Rd df96213107f2f0bb75649481d79cc4bd *src/disjonctif.c f6ff77c7dca9275caa68a1b9fc5e0632 *src/disjonctif.h d6dfeca8b762f9d890d3768bd2767964 *src/init.c 8b1ee96a418ee8a151e76cc2af36559c *vignettes/FactoMineR.Rmd 9315ca46b862934470e0fa1e04226913 *vignettes/FactoMineR.html d7164bf49bf1c76e80c0230d44ff365c *vignettes/clustering.Rmd FactoMineR/inst/0000755000176200001440000000000014610501665013222 5ustar liggesusersFactoMineR/inst/doc/0000755000176200001440000000000014610501665013767 5ustar liggesusersFactoMineR/inst/doc/FactoMineR.pdf0000644000176200001440000016420113165362062016455 0ustar liggesusers%PDF-1.5 % 1 0 obj << /S /GoTo /D [2 0 R /Fit] >> endobj 7 0 obj << /Length 1380 /Filter /FlateDecode >> stream xڍWێ6}WrХ%R)-Ah5I(}g8loIs9<{}˓(͘ Qɣ2MX"hFǿΚ|۹q vo"Y],I( "K⌋:`gwP`LT<3AmyloC_%$u|.x!mI IzwAׁZx Oy;ի]u>0],@}/i p<7 %M{cY]GKW WqLb?ju}5nXFfye=Df$ =$&'D8 J :sW~8 YQv<UCIc”m䲻}ReiEQbGggVMX8Dx)]ARPK"@@Hb_DO7 R3Z>'y\B7Q~v:1ӷi,+dKd44 ]VI~Dp8# Q~aa`\+TSɽ5"b /+_墙McH,}NkV7g^d<(R,i>s4xr8(zbZ\9$7Gbm⠕6`R䬙d朕X'Y9;D O0OJh/|x j`Rj~I$yɩ:h}aJvH<<"'[;2xg2~t<~;EŊ"?RQX!Sy_mӉ; T[B㑲E$ұR݉\PXaՙxZT.thao"u$ShR.h=˓NH.t6$+3}e$<뼏}sx.UV )S*ܱsÚeb^iӦbu?iwaP%+뚔0.\}xk^+orDWwxyO,h~%eId=P{-UV EIZ%b?=a,껽=:r(q8[[n]b$7kh{T jVWcћՃ3:EUCnةv.mޚ[F|"Dz)EA`Lqo[[@ endstream endobj 2 0 obj << /Type /Page /Contents 7 0 R /Resources 6 0 R /MediaBox [0 0 612 792] /Parent 15 0 R /Annots [ 3 0 R 4 0 R 5 0 R ] >> endobj 3 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [115.586 565.178 325.023 577.133] /Subtype/Link/A<> >> endobj 4 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [167.864 486.501 367.664 498.456] /Subtype/Link/A<> >> endobj 5 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [284.896 419.779 392.687 431.735] /Subtype/Link/A<> >> endobj 8 0 obj << /D [2 0 R /XYZ 71 757.862 null] >> endobj 9 0 obj << /D [2 0 R /XYZ 72 720 null] >> endobj 10 0 obj << /D [2 0 R /XYZ 72 727.97 null] >> endobj 13 0 obj << /D [2 0 R /XYZ 72 547.674 null] >> endobj 14 0 obj << /D [2 0 R /XYZ 72 468.998 null] >> endobj 6 0 obj << /Font << /F20 11 0 R /F16 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 17 0 obj [472 472 472 555.6 555.6 500 1000 0 391.7 277.8 305.6 583.3 555.6 555.6 833.3 833.3 500 277.8 373.8 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 777.8 777.8 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 555.6 750 277.8 500 555.6 444.5 555.6 444.5 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.5 388.9 555.6 527.8 722.2 527.8 527.8] endobj 18 0 obj [812.5 862.3 738.4 707.2 884.2 879.6 419 581 880.7 675.9 1067.2 879.6 844.9 768.5 844.9 839.2 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 575 312.5 555.6 849.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.7 437.5 625] endobj 19 0 obj << /Length1 1843 /Length2 20995 /Length3 0 /Length 22175 /Filter /FlateDecode >> stream xڴeT\[5Lp n ww 4Hp; ݝKn?}7jTKgv"'VT2Av L<Y9e3 0ON.4rى9yDG 7<9@ht|w=r@g#U{ 3/rr76rzw-)" {GKs ?kYO0@dm 03H31AnFK` 01@M @BYAMQ}a{{qQQU ɫt 5?@wtyw:TTŘ ttS(ޙK=dW=#3ќ/~N75%黜-gK&@;'$qпR'۝C]?k+O #reeFv@;#;@g#g'_7Д_G?5rOSߙ?wom,"`fiϞYeSQ}o<;z9л:v EYOHT`f07D-ur9z0@nv^YڙQŞQ(%&́&t7`SNcfc~d03qX/^NF@ E̜SK&V3e~gom?_CJ> ;) Q T?jWFZxo?B4R$[:[M-M,RFM/dgn|ߑLja?g^4:988r5w0)jj(] 3ZڙX9FFL=b~oeS_M`d9]}f G? `c q}rEF w7=? h7 ` - ߃߃AlFǿ\A;Eʪ.ׇjgZsVs~ϐu@yj퀑lDA*(//j.U֠/lP=7N{\&XG>=T%Rx_p\oIZA|ɌyUӲyJS4+"9ٖ`ҧ'#{ v>52g%Lr`[rV= ?z0W/y}cFDQTk^۩0%+ASl%^$il gc|Mov^*8慾1ǶbX뽾xȮdH%f K%[A09)sx,t-7з;2Pm!2HĮ==7oE}ZV f< 4XO+ OkB23¬Zu2%+`Uv FYz\VZ 44(H\E" + Ow f4`ه0MDǝva4ho2Bn+yI Y,^ZVSFv,nEd*}Q@ni^ljV[=WlKv.'lBU{ j#Zdg|Z7< 9ߗ4Sq ؋]%34ԕAۙ]c{Az:%WXaJʉXȺiL>bU~+Dk||xlJM,\[WlUjq[Q-%iFx:{AP~׾6دy/PHi6g=Јg-DrTdd-~t|B:|+jB`\^J84Ti 葎$"' JNP=(TbHvB)e,{w2Jv/W*](E~nG)Qi~`Pbs-&|s ןzLOv˫1Δ&1+W7-є6ns TUhǭe{R04'fܵ`xeSEucd5RGMut6A4N=` 츁ДOQGusk֌cAARӽN4ey~eݵpIrf_&Nɸ]y2Q,D9w~,<9H"Ho#ߴ#haNG:}TڨF9m;e_;UJYbLӓ';F_X7t_ P(C0_Р3 z;g2%6֮a~a'K-qX~Wt:o*c7z}1C/g- fDZ^ DO=@r29cySG^oĘqޞ6zeQ5y]Ԅhf7aK,2snߍ2t1њo~9-M6uzix>S-jTmGJ 3[ˣh 1G3f5[P,$E˨ h+Jp;fZ_hIͽ#;u'~N/]ۣWuO>;< = Ȍ7|xMf?sT8۹Lg}#}FFO꾯o&ptqDC.1z]OXkW6ZrږEgz Œ=:IYr0tB)c,DK_ # Uo ¦x0[ow$U~| E\Dlp!fTw!ySO;gj7ڤE\_, mB>郐ђ6;a[c(5ܪMȼ'~+ϷN[1ؾV>Otɏ, {$7(,C{hpr|eF;\i'͠:Kά]d-6J\=;[ief2`AmdSN9Q[mVCU(vo[nL0Is'iz=zEإ²%%"C_6{{xyeIm"G\>GP{X+釸M>ʢw 4՞U(6OFH䦄43xPsMy;o-Nmkp5xRb1DZ nRdª6baH КyӺ//fqXli3%{ܸh{{>I&zt&_ow0hb&0`2ڣkqZ "Gt?mh尯Â1dG,~iY#ո M\HY~Cb#?CS]& j` U+M γ;MGҩ1J;L&5шW&udp~L'ʔ']-ϖ;")AL7F>>e.fB7CSd>`n-R"=vFf=҃I)u?UʺܺvsB, ,"ƲGDa>=+ S3`] ysLҽ lopzZht7+/Gо[x}RDʨ[xmLNd8ex?1Q\5rP@p/ ΢ȂKKb蒦ą>f l ?(f6 H1H@{-K7~=޶Ǹ*}Cu?`b{q Y"`q÷s{9fKuN$(L v?D4E=xmmj'*.sg~ceYyCͯκU"ȫ+<+SQ>k 3?e,f὘~I' o c5xw~sO,"SB>9,/jӝtq[ Q\TTFbPG 870#H# JyB[<35,]_Ti܂52[`5To|hܛ>W e_rxJ6 gQ0ćMW+m2qu+F2.viiVg~sxdZDjiht{e:=!hڄOYziϼEM0ʷv#[%لʽ#jrذ^?廌=1zal;g,h p{%/i\ݒLyWhanE))U؃ݢu-sc,G;&ZQ-30$p^J h)q[{:tSB2g׭ g#ls8+#AB6cz/TqHb ^ $4]:LP|3s~aet3},=mN(RsǏ:n2+_;<61͌ko'Vc5#wĤlV\L* N ~3 "%.u[rJ}"{̢զgӓ^ SL=}i]PZqn21^Yû2/J6g ؆wOXx wA]f.Xj "~r( RO2%if| &/Vo :H/*+˭ Mh~K~5J/FFݶtD|J+6g[Ÿ(5@j+a0-3Wn18k[[xɧ|{ꘕ]X)P^Ĭdy&B+[{ + 쑌G$j’cr CK|o[s o .%T*:L=^ILj)vfF9@T*V65R$˶.z/%FvXfφT*5 kO_Hr/gWbצkMP&!E-?lmWbҳ+73XDӲ TՑbN$tسGHR',ޢ?(ʃlaBң, NE!4~A 'G=1JG="!ӟ܀Qt!3M^ 8_)ESIV'N@xؔ p0`D=˒|ԷVVKLMA' zɅCOv՘NiPdF38`_2\  =r(3r-.#73WĄ3|oT b\TZ#OZwZZu9{,kG;|  (Qӻ͗p9AN$@= P3f#iUn'HSҥ|$1䢿=>t Pʮny֚:-&`&"-{AΐA t 7o~<=bE.C#N%U'xWl)+ ox8SJL('JIآ%58 iRv^)&ڃKI]ʹ}\ ˛Q1 d[IϲL_2_,۠˩ \Z8a)|u`rʳ~(` '^UŔ,(u 4 uHCۤrUVcCxRQoe4ߪY}b*c?rQlf=49wPlhYЯ@ki_o{&z`wCNj_"[_br{y.VdܔOÇ&Fjb~sд?̇ WڄGSNǚLn=d+}IWZl}3p~~ϩx:ɗGc&4HڅAQBO8 Nw+~Cg=!1 C1̧d߫qG.C}lD\H=Wk₵]<_!*LY5/kw_f7mPMsvl؟( nK%'?W&];.&\ѸȞЉTnb;; bvUb`LZ.|AM?y:9\PϐdH\*ywe[+ӝ k +*\dy(xLM,34}sR)c^pGu2yYmk (^rټFXʫ#K_LHpu[{0~J B~YfI;/[+ b*bx2W!3eZ_?B@9CMJbVST_]Pà[R-3 S+Ge7> !*1M2%3$|ϫUP ;,y*ҧU~p ?(v|VZ0CĶ2nDZ6Eou,G2?3_͝ɑM*-^K?wrBx ,ҖخWy.xbEȻ^)'Bh3⼔T3jq?'kӍV a +8^zƼZ6a+%1 W8 k,z񂲍B+4PdG+:)wUeU(.oEW?'ԀBP4 ]T9yLjfll, ~'V 95͛О)T_,Ӥ5@uC 5FTԁR=;X"S;+*rF⓶|=WPySy yVSpl4r sj(*hYjBy׷',Q⩓CK`y=Zdc&GM 0h M2e q)~*(Vg6M%|7mLѣ ?@ha|CU;]{dV/h51o62uhe-nP/fM3$8lsGuMbW.[!L9lsQ9y0iFzx2\ݱ=9087{[h`ua*|(HEكΚOy8tj~x֔=nL+#*$lx3҉>o}2uhoZ4\GmIlc1Vj"g|)Qrd^zz{{zZ5Z_ ɂJ6ֳ&He IŲH hYכqӴ凳v%Imf6J|.Er_X[ćϾ6 6%~# } 6o2 ډ=BRU"_`wte۩aXE3#fރ<zѤ#`S{MO_K^/9X͟bC(9U2߇WMo% >r 瀞LqN(&[C/P>x S woL>s0U4h-:B▏#V) 6G1"1%1bm%tؐZ ~3-s,fL֞g[[j_rV"EzyCϷOR(p5&)a# o[BHUXx)m,h~qpe$@,|ѴBre"#EOh(ϯa=+9܋LjVfFQY<Ua4-Mo Y tvMNh5!(ՃĪ+ki߁yH8uUCނ}&W(4x0`њ$qi)^^+ %TNIz=mq _-Tz2Fn9kmNLy~/_ Xlq=2NO1"l fUE)~=0z)Щp&3m;|{Q >sj'Dp~Oٶ̋1y١ >q,@,x;}]=dI9%YKb!$2H6Gp#7#n&g)\[1cO&sh_rЋ f4^YX*yIEĒ}izsz^u[. I'G9M̪;qpENҔ1Ҕ4^@$9N1Թ~T\X YDoѮ&ヨ:IO(iB|H5kV+|yӍb`DzԜd7`f&N WOԒؚ!{c!1j=EeG.=V=UsgOec lLd^l_fOe\l|F/6H]2#0 S[T jk92[j.) 7]͋7})YJ\r Ʀ&iVCj&mYWn*V[4d3=6PndxI9O-Nؽ꬘ ԥ-qMxLy^Ja7u嗧gd_O)uJ3 uJ(U"-Uƭp46,DNz&$&s<1tk }E[˃cY?IޤU~Y u z|h hr]4g*okW})t,ʶ+Q.]ɾiUq)Y^Tm@@c[IGǃ%viA3?(4n!±&Cs7qB" U͌[W^BG6AԪht^Jr$ϲ f.Vqj31~cOtI0PyY;Ic'hŘ!_}<;j;u7섦Hk,]Y$θќoblfΏyt9V"''dDLd[PWZFH,|%2+*{ Fan*'ײ2~C/gbR_n WWuR,#:dLjIN[gWRIC7*tnŚ{h B~V2Gss-j{]l6rN_gJY° rL/fO7X)nb rXeqe":jxlZcX(5E;/-0@/crjbIhsBTDΫ(y5Vw ;+>lF7lGSK.ÖM_B虯'͔#d57GӾRΉ01D4+7* s@ >!w * .E@.Nxj0e`B]cy$"Efhok4*\KrseԽn]=d3ZZP]_U4Y3t7lZw] >qҔ)Nz ܚD##1=VJ<$_n ='gq[%qgdr/L2zЯ':+>cI:QK 2C[QLJdi`{V(N\#|2 /5v='uv癚կ9)k PCFE"B/O; jHf2ngq0h`.@n_6hHo"V^9ٔ<ZIp {A^\O+6d_74Et3G\9|&>D|_'Ÿ&!g8G[ayU`|N[J?XOYj;#4B"ۮ~DLb@xJsqIJf% dSjʛ1鎂-FlhM y眿 UnB瘮=(m=YRK7cgq2U`QYq=H,&Q9bv~Caqfؼ!^(6FdaKQW-\bMЦ0,9B’ +0̊2&%}%|>2딛 Yr aGchMNLgyz䋷s*T-eRM{dSX'=@܆jjZhxm *[#NvuHꬕM7!fK4< /"j/}y~2T?V1}շ2Bs1ùcn&JfKkܦtq݌$sKJǖ!l#t#8Cڜ e'Haxm/\>O%{1b`oQYC: +b>_?ڣ|q=Xf=lDoҶ0^Z OT몯IWOu}}04~Bh\zUgv#:f,9Hb.#.B63Р$-Ƚ>!0qxFCeCBA˯_Ul{wC^})oKQAqQ:w>/ 9)V"ʾjͤi \pƪMMA^'Snfe0r`bCO =8-[9uDjw ʯcX*:^8\/Ǫm 2\-2hG ;`W*t :Km@"Юg]Zǥq~p``0L5[rXh' ݰRû}M\H;*]L6& i&M>w;5vTGH{򘪧uuԍۂ8*gED \dHXd*džo!:QXF`U{98ۗ;Frgk -%<Χj!U|J,ܲB+ P:( 0J '5Z2)U16pG#-͞qaT'{o MwZ^7ie֪bFj:܆\t>=X>R1s ww ZGUTƖ7_Sr9GP1U_cdr6YJ g > յiR4U#ěf1z h Q\-Ǿ|,hN&SO4Br^ر ~u"&WJ}ŇNOU4{*Dۇ+q4KAO3˝G9>ůL6ĭ>|=D'^_Go2xm:r4}Ҥ g!bXKOnޑϻ?g0 8'b ēWfiLNi m;CQ"zR !6ځ zӤy $]>2ڶdUV͆ 5ĭz7^;ٝnNަ"hT4u0r{pi}Cn;íR3q˝nO,+_EݢH t%v`+L%`dZA<YW@: 5#lO< #aRc8Ȇagb,LDoP*:$ phel[X( Lm)=vCh>aK2[Lai5ePZv=iGE>~һfv_0CkUF^z:NY! )@'um%j1nuHtȢD|ǵQ$~L$oA T\|6a3Y L:ew:sHŪ ?Iq<5`m8`qweĩЫ(h+h&S٬O:ʨ u;u!aiFB&j,i@P ".$׼F$zkO%ͽcS?c0 G&I8Rw6Dk>;uH&8x,=tf2IEXvmN繱(0|a#XA:)"~&DBu _ʒ_ZDl߾3Q5 h^Vj4~8niwrDƻ0'F ZQPv[.uo/.~cӆ~XQCV[O{1x~|K2KZǠ8!=PGhJ`C,.;XVhSrMp>o,d( KnmtkYe|m/1Qifm=uG Ԟr&$ ^`\58*Xu$3p :&_ˁP;!iW$c,z~-y`:%`5 G{zy@3jG}DeC4O̱Dʴ Fٕh@#n2vdx|LG9nMJx´])e0[R)8q&JvA5BHzjl`4Xjа4.Qq=uUruKNcd!h;#lϩ,r^ v:6_)Ͱ@T ̈́k$.yɶ N"Ő 壑䷩dΪWss=Ǚ?$ņLjMzl[\!W5)'~:EiF MD]y|b OȹG~KcJzP{vNsP~ҒG s2"zy{( gnP蝑ִ3/"8>maa3A+{zO,/>vw￯-|յ_XQNK\gȡSb9'O4ҧ΢_,NR|tsWf~qLwOƣJ9Kk=غ.T Ni>Hxo9ӑۉM'-RQʑ17_A쭗TkEi1lp=gA1zFv`&zDyvvV:_WpKΘcͰK Nd)KY@x lO5~[fFhb/w$YKieپHοƠ# @wSpUb4BfWy+Im'tR^:oR+LYxoDfЅT1h[Ά$5,uBn ?հ `Fɿ˙0Hź^DbUr>IIcE o\F6V6׍?'Ғ] P*2_RkMt@$eOgU:,{s 2"W@^yAyl^u Ҷ}swBY J>;ӆG<Iv#VUj-) wCbFBBN*wtce |s皰3G2C._=qc :`w5hxxԍU& gd( >n͍9i m?~>XMGGikL%W$B(~A`lG T 7<*=&oOs*htx}>vԎ܏Dne}/bk(3Sxg^FaP%i,-yg(h]1u(u\ I4Ŵ*J/?NC<,Φy\b9_'1M*F?eT-#D3>əwS2k vz&gn2{F aDߎ›o@"Id4uW'pNO o-+kxӂ3|g9g @aFy"-[McV^c:B̪:)T~dEkCff[9R= Xd,>v1՗6IN՛KϼN_(n L†yo˕DjRE;+ZXr3~А v]V4bVGokfCjvOÉA] Ħ,@ -&?e ]sZ @vwa`jf{Cwϻ9I}_5Ϋ7.^>Ya1g>3r4qBuV-ߜ?1sF 7pr ,ca"m>cr>d \LHks_2ӳHt@Bk`}N;2:^4?W2> endobj 21 0 obj << /Length1 2491 /Length2 29583 /Length3 0 /Length 30995 /Filter /FlateDecode >> stream xڴzeT۶6Nq(݋ A/R܋w+PPJqҽ9 曑 5MqK9Pf`e()k͜8Y4fNVvvnIW$e 6U 0b.B:]!JK7@6vrj 70D tu2@\$Aޮ61XX~G- P0y̜, ʬ'Dh 9́6fV@ ֔jji2Bk;;\IM-mYf4 W ߚ1,%&f;F 4+z0Yӓ rfuv>-[7'yu:"B'wߧP:;ɀV:B8A!;7 ?ؘ嫤p4u̜, `3/hIw@R;ͿJA:3r73srw7ٶ wD zgfLY\E^FZSE 2xN, ;N`/_ֿK) yvȐJ;YJ!UO (l,~so̦ds. o1o1_g3 oky`Ww?P8`ȨC _坬@ŐJ!2@%` BaS!#AW.w3G mLtW:9M hf ڿ`3;Y;!Hr.d^_nA  !*^<줝,@NN^7 ;d8yxz5,6V'pv@(&[7Id n `S ~M߈q4 HL?ED7!1 7 ?[@t i;o㟠~-9l@HN?O? $͟mmNl! B4tN@rClANҙ5 V?R}- 9?xTUsGq~_U%N܀unfn6pD!5R? $?!Ony~?n<š`W=PN&f`W[/CvȪ!??yJ[B`,nH_y*^@ P]jSDitT<IBrT; T%P0KPm!HIN8 9MFKR䥥] iV 奠NJ#|bքcIΉ_)FekyEsͯ\p;H:/wzŗgM#G{p?eJ߹lh!w@%" &-}4BLS&H}7P/?%IzLԈ=t/uFk5$Ud0՞Z0QG##ºMKS(Q]^_lBc8 ՛Oa$ %eP_y-vG1J Ҍ)*R߷s0F)|_Xebq<IW NBh<=3ҸFƞ ŵc#1_zi0U6k?,G=&^?d>&܇IN*C,Ui_Tk \h{KsIܟ+#ȑm|vyS'?}FV WdiZ.`e6 AM,=WVsCF a׌:HQk/KܥfOػ4no#m&j)]vݿ5uFË- }1:VW7DY$K4RA~U.&O ief?E ̟d3 _ [Ѧ~aٙa9|-B]ڋޱ4 5{h#aJ@fKQ&K9?yFz#S4lJ[e-N/p& $*|KOb,}r 2ʼRLco]~Z/ U]mZ~TeL䰐suIl"n( c< LvLX~KadeT1-Yq^\޾ n,J(l F `]L)Yh&b({2!-z{&SL=J @"MX}ɵwCƩFLw}fϠ_8@M``]ֳ)/}:4Wt"*9{%ioXC]UÇ_R6Jm5eLH vig%(on。♓bpVħny[W ~e_gAONVFÖlq>u&&-]\n\8S  H(ˍ6//b6odMrdɰܮW-ƙ qT,4:7 B§Bn2a΃2$7>$d\#RC}>A&\5[p84ܙbG49 UQL1KM$<-VR*4!qG9O :pO'V~F35Wk.sVF+BP[i9_jY,r= t2Ɓ_,{*}LM"kkЁW(iI&h ^oKN?(+qWŠn1?j+E'4dP\m 9ŅȮwaLN][c)2̷e[< >a5D3T{~^eD,=cWxfP_GrsF-9!*<0CNVDjb&v6X |1DN4N`{)9 orD$mN/'Z%F%nFaýNIF3ڭ/fͥyiװ8+a8aI>&Hv`^YenvZBTZ鴂ȫ + j [ݑ{0QȟK9Z5!'&mөycV@$ /J+<(vPZǥQwZ7g0I@lA.BsWۛnhNwA&Esb,T6rS0I *s`@aXêBR :҈6< E֊)u./w7N LO-G .}8Azg KWQT7"0K\tdͯڈŢ/zQbaO e2z-/ӌ[AIx [_zwuQ;:?Zeczn?_5hxȓx܈x$%8*M]:ЪuAqpf -5GށmtJwPLL *9WxԺ"]`ulT#YW 4pH{VRޅp5 gjuGj 熯mqfL:xޚ62pp[|jQ jIA:y_ !qv}&%L}!<Ojd!C2N Xuຢ1haZ2dDqU"WřQ{&WΞsxRYZ I[qӷ#(Fz1^%lEeAfo13zY ӓ|0bjT?PMur1,pUT> !ntL9s 2-Q\\RJ"AsG߱]Pr;07g'1oJ?P (@Q.n-"! 㞣Tj^*A #lnj:mEfO;-ge*]M~Z nZzjA# }6y#yvU5?Ecx3}IH^2f7KW tB\RK{ejP_!vol4- cn0ڜk`Mpfakqpj4k٩, ibԗ#ٛ꺲K7aRi! gzEFM93& yA6Ѧ7O5Бz0&w,'R0S7_%??\¤>A ǝ4ŃcC D7^78~'AY7> _^vnŬsy:BJe+iNu؊9< V_2n I۞#uE^7RJwL@~M#]Yڸ$oS0vslW.ʆ%=˵s<\:ZJ?EKL5{._GA~b2|`t?-Ej HLe*Ff{'Git"J-SE;OU8jfz]b,#tmly&x Mbi¼-&K6 '0E }ʑ'&7 Qj97zk&9 Twm-܍t+a2_!Te$P9'ڗA?9#+)((=Cd"@>ݐ_1}e.762r&XZjŒsHhGh,?VXAHA! K|d7̄ӽM%%s'_ی=Mj5'PxM0mױLPAEX0`b?{YjQW+N3x6ID˸nޑyzk7v,/H\l{G6/2Xp1J:i(O-Ϸbw<]{ DYb3LnLΐ: MhԒCW cOh |xqIKӾb!;*5 ,,) ge|$Wiִo.mr[ ?PLS5gjy|[!?ꢻNo&>-E%~ Ex/v}DYӨ"l%ْ\.:C.KHxMUR{P[;–/ ȭuCݱRo9T(uOɶ>TqAf*~E3j5/SzT$`k#ta;/ )<)jI$3?:I*Tbm}Rd@CoVF8@}>mZ0=Z-yK.! Q}Z k5܀iy-Uvf.z\ y"gLVypg% d5ڈw8f0Qz({ieg)Å:^U=u0TH/"vnǝ$7- Lc>Gm/BI 0U[ QBB<}n٧NlmSzEӁsT'q#ƒלA!L]Q:Vz|Nv5f;NlF6ϽH 2S鴼Ɯ .jp,v>L@ -[ $o%KYqzșhs)0 E>J>VãHхJ%0*.(/I6Fvc0qF5bE2eϭ+CëJ)ZKPA̛fQ| .~Hu=M+-zn%<7#yu{yWllo?rT (#:FެECOy'P/:MΖGYP R%Scԙ$2.  *})0xSlqfk>s}&]GoM'抨j?NS "Gl~yq&LBU"~ Z3A&:yB3L$1A4JZ+X9@K.s%8u|s"ͩ`zAI(\!w\3[1"汷8'BI×3?vdC -!9?]b4WӡE,ra/t/V!6GsX4{"5>Jɶ"σ=L[h++I2ڣA%lTr@/o@E:a8UfD4ςgr@sAkyV%>d~GS[D yh/ͱra1/Wo|\UYYϻm9'&E]l)p1E%Z0O'}(}a=AȡCyB^Ż'IL`6jvL.S"w8smBŌkYUTt$" äX%Τ\2G}ɗGPQ9jZ_/ĭNٵ#>媱$U.vX]37arV#fy+,qoCmG"ݯ߄pLJK6X4Y^8sՊx|GrGT ;Y9boWD(="Mph4ԜcŁ'Oc \xj6mzpw5=i8{N_W>s un %q U6!9tq[;rY}c;XF@^1`{̓oh> =jn£P`-=>ms _ <<o[􉮕!y""Lvbo9fŶ7xGnn6(k=uHpe옸EWkO},svRtN>g^s5eR{;ê H5X\C\(mq\Zq2ҙ8oNRa% NLg7q#Dƥl<餁ξ(I[ws>BdA_ypd=ekp8bKF$TyДn3,7kM{=O #ͮhcG9T_P۝LGPcjL I$7=nM. _G 9oEp:;Lf3 -j]>Ia#;Ƴ}LJiSP܇0Rk6_[mzb,a0ᡬ& ?<z_"4- O$}[s {u6묉^Hh+p/.]qV'Blɝ[pY6R$2i0'~EKعlLhW|6cq^aYA7ɲ]eDS=_bz6;cM.7Ԧ6wg3P?wȢqUf`Xت`&Ay(Q/"T`f9~cp/Ⓓhc&;5pI3E2EE> -vc?1`OL&(ҭ\eN |d<4i3h~r@}x&Z$Κqe?kN3𖞴6G#뢩.79|&jcTEe6S#4ޒ"$yZp9\yc =i#\qů5MIA?5JS(?m ptƿ,W")h:^aۼg÷ 0*Jgt币e% ['70ׄ ӧ<XہbUΡtCR!* }ݦ9jNu(=q%+=KY m7WzAȚ}C9^xvgcq)yLz;*.] 8ky=fEw2%N(a#&ֶ蟌I;?,ÇȾ g7ߤB t d yqGbx 8i^Jac%Cm:CIˆ<~q߂ް}BV+% pz?ged3Vj@kQ3w*/;Ӆֺ8׸Ϥ"UAC/u> 9hY[ .M?aa(7[߯ llE1UG"5F(SDR7îۣܡkӛ(mf`}\g| ~[ %9^"u2>ɷ;?ƿ۵xj#QzA12}5mDK,7o)7B yi/8%qefux[߅_μ;Y9zfxu_:m 5wFLcx`(3NgK(]&|۫F ~kȒ4 41:l@fjBÿ>X[ĵ9!Cm,Sug,!W_Y+UG<6Zm=.U0Ű>R{is.Ӻo˸f`BUWg\4KO8.5xDNwuV >EL5|Y\q=_P4$ (GsMTǵ`i+wo򣝲ɝM:#b^$)XU =)js`G=|ZP$_~|xv bRQ6LO]'SR"Np~~:ЊRm]:qf#W'D]ܟڽ"jR;f=a~@H E1s( TQ=ã mۼ\&- ݦkG| Cnd~у*@"]r!5/=QqYacH\SAt!gevJ4.ob'+F7gtGvMLJS5$5wΥ;V2:Z-9o3؂ KP:>>Ys [BD>YЮGLJDc~ G:]X,5"*lz&4^N'tHLGGm=86 Bws, ŻnZޮz%#66%Ò9&j.A8x#t8_"L;Z\^>bP$skSYbZh1)jU2;8:m<rv޻K m>18g6A5piN|f&rV3]^)u':בSQl"~T!FϠǘ3ԄIq|J]<_uR7UtvY*'*$\En6:F/ni;0 !d&L_Da<^O>߅ōqd%}u[ԛ5mvBtՂH,cf<DZɧ^~|a.+*sz4D Kc#会}Ӑ;o d.rTx.:]4U5;\o#7G# B^*Kü e 5\*'.P@D$ECu-@vzEJ~YEm앪]ITDZ:tCxxDCqEj8 h*~~ wEV w .^ҰB+Lx}}R).pFMPө0]lI;_nr6,5AՖ򧪚G=b(VGU( Uࣩ&m<[[*1pV|qbF;Wl`Sz@s|1lVֈGWy qx9f ^}jfjҘrRvš`֍HDNr v Ձ-<߾e-7o\yH4rۙe9>ڷ{6V^VHѮ]{s<;sl>t5rwIx1s;5FK+ݻ#T9n\' r̚t4ױ Nw!{ 6Nx1#)fOnZR8x`fj4M{4|]a܍!|&zaSƸ!K]sIa'Z2@;|cIw +Wz~EZhA/dºӒ1*lE]G'P#{8DW=J!3RD(IS{֥?*W% <˅ CVWn;D=I&&"wp,{ZPnQ|nl챕-oK@14IRIi:jTg >ob[G純e6| bf?Dj,{U͙؛[u;zڍ6xWB޺t0 Y}NJ+^g pmYQZ3$#m_;(Î]I\B6}-?r_7O6pUV.3F y7_v9"ܴRzwb_1'g_P俗fH?]'.r1lk+oEG `,]N@7i\ص7ݴ>(&]WæX'n;sn_b=ݹvuxiS5?)h>4*.1/L{kqXj߽R57\ M% /5\otLr7* |: TJЀк>Q{y8- ~EVc| ՜IFRŀnW!O6gk [s  r֦y}=4y~7-zx}tsZ Y/2uB 2l؛ښ~sgg0ʾ#ӽQ CV\HDQ;TL .$nd;J&f*ց#c%z flpi [aH!N}ح =\rE[ [* Ԏ\o=+z\erg* Q4?rN%}xB/{[Dg[&Ukx[ !ªD7٦kxk_bYn\YZFZ NЕJ 9g,I}ؔ{󮍷P{В0-DU,[]V8iBsK^s$}aJ Wb"W}8 +αBcg+TH[qzdR4I56U׮ӾQs5TfSgBN@+<ꖐ%% V ũ=rl$̙: eݏ_)=e2ԛ0'78WHXv'5{=Rum<ceG9b|4EЯS6۟5]bѮ+3s–_8!/ ϟ3a4в~Fsb]@_._/w dُЙש^2Ptw X<@g zyCg͙doL9caM+jrGu>K9QhۡJqʺ)Fp>^0ƠpL!kʷt?6gtʷvM_xpB_h6%[H_ m۶=gl۶m۶m۶md TwPKGրqK!i۫6[E])(cj/f3gڮ Gv4+w8{}S`V"/uSQF:x*/K_oJ>s8뫍 >l|6uH0L&8H؄!T7gr_5HHRՍݠgJ*Ee]ݠI e$dp;I1]szkuE07{Y[a'ڎYGzqߩPkd_i?7 XrsPVt_x¡3Ei$MZx<Lr uum.7>F_:+Jw3!9>(?KąK:j.nVS!@,wȔ:i5*a8Z#(: 6g~6b,9g[7@M8\( >Uu%yYRLz%_ka puk lFpFgl0#rG&Ѵ/Mh yRï!w8#(Why°$=8m !2u;tT68Qkȫ#ZL8(iP0}tT~:9 VL`p$&\sլTԮ}iRX$g@~ 2SG+49tU5S{țg:@~vZ#ڻ +QyAkY"ց}P\r W\)`/, S:tNXP-m€L i_|nΨ>t:Js߸eNW="Vc9GE`ܟUCOD|"T [2Tfj|׆Gq Th~xr>az:Dӻcd٥ܷ'2x`I=CM3{p,9k#q2ϻH<# D|E@^cCuK$+))RdRsL'(*'@bЁ)UNP#j0I=}Ŏ͆gf2ŵ řzU)'vQZvW }g((xбʦ? |W´5 !Hm U$fCXO-O^W\v6IV$Ġ@lKrtMֳW:hr:!qkmACoto;%[to gp)Ozz^m_[2pU-6agz{#Phbk:;dҒT8ŒH {1٫D$@lY9/:aQ<9ʔ#&`dŖn ^ )KW/} vhv|߷i8ot@c_`]2ò)5~b̄pe̤_W1Hacu]Т]HpQ7;v|5O`: $@w3KhӁ6ebo./(E,IC2^hЎEs0kTKu\WaTucZs!ǝ r]0; !eKʹc܇(WH; 8o3gT2 NO\xfV-]3͙S tg`<R䝒mLiZvlŘMibwy@b]qBCv>oj*7!MI)p2V |ש u?ϡ~َ)ơݚP|/=^MBF\UbU'yH^uеt?KF%f4,IO[ V&0$R~QɅZؐD$lV ]ߔ9 f(2y=o+OLzfljé.9Iw+Mrz)AthA{(# 91k/7ޣj> V~zɂVĨioy ǭrd9Eyb|/☺Xmՙ4΅7C%J)If1[+Aw^rP3wOIo QvC\F;P&F;[h }` ܨ\cJ)zq?=Y-0wmFqއ|~/AWEh:q%fHm. 9L އS8J~ȥ:8a{`zp ;nQ~fe'9[[Zyu7[ja숕ɟ>iݓD.!G$ v>5)UtsJ.~jY2+䉏[~;µ-6v1IR.@$K> \lGp۾mt% JN9~l"g%)|:U!S8m`y.H!**Y u2<٧EjV$` OV8 ^Hk9qDȔmM&gbi=1_`0GDkϸq?k3d oMi)h,4}EuP㏻ נ{<-H4y:7Bo;Xb}jk#ybaD-^x1;,-RF% ˖'+BeQSvNWЏ i}|j!P{>z.WSuMw9I%UivS*JP]a&sנ{s F%i҂'أ娢>an|uĻ*I]ҠE̘ 0 U]S(m}}+@1K*Lŕ|m1 aDSF˰罾F)꽴YڐY>I9Ԋ#t'*-\yn;s /睯T<;l*E `$oz͏ WN\~p$} @Kч1~U뢮="Ax?Q{rr=&;Fwkߏ^`†Qge½% b~KBͰ*ׂ5A\VB^ ",+7\fvE0MbR!Q u U ΍tZb6Nse|CGneK6.^χXܣ-Oȵ`8YAka6cY=J"4A"u}VYQV^Ce$]9?BT?3DR'8t686a t1n/[C?Uss 6oEbOA#w*Q.8‘[H!tx5m=n}4H0-nBPt일F+H*N7PPM 7:6xֳd0 GVzɪ.sAshO 8(qbnb)4?H;<- o2~I펹N CzOҨGg2@%vA3|#6N/$Y{00TsÍҹ x(tgեqjG@iLo $?xưzjl寸 Yyq&j>`|ȣT6+FnLq5i4b˳" P3&s8&UtD?Tn!eɈvF*L{}4&QG!Lr`C aȓSJM,j+NŻ@k%"VmX"&{L 0N ¿7`{.!#KN͵Ry^Ow<ԟݼeBp;n /487` =A mpb'U+.F%jZ A#K?<, ˨37!?ul m6s#01RbWPxjl8P .`нRVPN q/mc%p>ETV\:[jJ\QPtd2& ,E钓~Rh.cwHoFyecV~tK:M[C-A:ӧjCHYKiv\#0%R"QdGR7zFMJGLeQkt1媓3TCDӬ,#,KI2dlw$JGTӝ17ĚL G#Qʝ1KJi.VQᕴ"rtcR.\yAe VvWyI(S̪W/1;L7*kY{Ւl?{.Y!ٵwۤZA;fl\*-O~v'bޓ%Cv[`{MJ.+w0|- ELU4kYqYS.08έtU<ACP>uUB5L(qK>ޝK'nuwAvDut ~⌕>̺/ m.=]d\}c:ݫL+9*:Nw}5aM.CS'ATSQ!]4R!7ɔ.n4Zw"m3zv}R0i/S(Eq~ufVe !NP { _6 V[ic,Y7Z6rsÔqȚ.&Sb7b(-T=Cx i'.>0a2|zSxn(]e˱[(TKz6m/J1 5!FyRg[qZР.bk0OK2q,0aM߆S $*⢑TE'[E ɦgF;m^w/ )ZL6oU7x)]x- IAZWjh+o䲰1jY%uXoGR 8VNhdEJleA>:K46\e9I7^/xPPQvyi9D o9̮b1TZ$!G^ARg;DNo~ß uY E@ a^2}DQ^α7i"]{k 򅿐cQ<Ω$conc#וJ6$GUs0oO'?#ͪ1 p%黅[Kxlk :ڹN95E9z|,q#HJ'ű}v3QQ> owEYߐ^+3ަަz2i fؖ.XIڒPR*]2""*P+ 5/o啼~̩Db~ yN^ b4\P6{Sk?AA^X/-f#?=(V\X]900- Z_-[?/)x2;u )X _gtvM ?d'dޥ/Ll-Lx*u5%u7:a @N4qʊ~ O v$i00B<mpf˴y6y`UjpE }hr޵BOs`.b| ޖ$P#־~ɒ&,aWF}+OG>\8h?=쌳kb ;".a'ҍ-.QeFs!`4nZڎhU> j$NvџB$К'u(,T[뵩;xZdC+";JzZ z*N5 Pu-vY#r=-$6aG~Ya{Åהl%:rn"*g;:Levu&JMהky;&`+]?*f^ *JQ l> EBir* 4nQ]f0v"OLبr阴ucm R="Q˹@VD'}|H`7yP76IU8x~j`1UjnRjrg2 SuU5}vl<(DK,ٜHY.h?ELHJS]}VP胣To?I(ȎF [_&ڥ`tBdS\r"IlH7]${GGe+dha!VJq 1 z$:Ϧv$8(yST=bԈQ_ț;S7>S.wt pL-\K]/HzUu{yۈ2~"6#yTkr/^?Z/A g+1Hq@ϥS 6-ܡ~!Rܡd)#9V922>0Tt/|^UDh,0ˎ#{AʕEV9 sLQ?X!j̨<&3=^$kPUx@xMl޿6Ow&^Wi2G_r Kk.v;rh Uk 6^k~9tul8A{|ka_HnݽW.hw +r@aqA+\ziQd{T?Vq3#tWS#ߌyh"C59s~7Mo`HZKs^}+@VLi\'>9=3{HpZ_V#rgcjִ!E)s1 LNnjPu瑳ey>?[kiX;#\SwH0vPT mvZ?Ȼ- kGqqa{,읎t!%r .9z8㎓@H.lŸs{^P Pgi4jXWe-<6c-n=RQz֗B[{;{I%`1 ;Tf;v|D[%4++`XD'U)B'h)}On(F0IBE`wnn(l(o"e ^dc;^!!}MQꨀJ kއoBRB'$߸Bf[N4mzM'gUZCVU =ޖԴf(rR)(̀Hv{x\}}F7s4pLaaHWJvj<^2Gw7"ZxVw;V{UOTϦDfAT[>Q9ρ$ Rhf*A%,$E(+_:- 2d" ]r:8^0[?ܷ~KmVƔ_G?64 pVʼ͹i+B7HX]DAtc(ÉAԛ_FbR%XG\*=P~ \A] -:{aDl„Ӳ-3tH~ .2ؙ'IwD/ p޹`ҟlj*FAcb@|yjp^(C{\@kwTM0Y ?Zİ'b=)`@!PQd A٢(gIpzm^!ྵPО:ӹ7>yvTYJ?6T(Wf+Ds[50UBʋ<~P]zd07]~m3kIj7o^ > Z@ҕXhl% G66N-y kz 5[ }=#nWHpw&cX8lb#ՈyhJAr%'Yras`5C]DRdX/|#n.k#lL@V/ьhn[m8q@ud㰩;.g9 KBc'F5`LZhGZ{(@P+#e.q\b i? i[G{ *bT/|'N}{ 0X9|o+i爎s"džͬܽ:mgGJ _Չ)|Rk{+Yj+:"{@q Թ;Z|LKN%jY> [i_˹sduՇPj*#N+4i^WXfOq]LN]QM3P`#MFѵʲɍIVt!z) @LTw!ҧL8j|M11ۦ!).n_+REn̚CXP70hy@_`ŰzؗSG]r2 b35_!x(&Eh,J]%ۓW [Ըj~f=jxݦx29]Oix1.9x M΍|p:5hQZT`Wy! 8W\3@$chPqZV^@7t&*5pWPslp[|JlQ$JYPr؍$7֪b¨= ğG=' ̅UT.l*`$XignqtޭE‹`gҗ p~J: Ea.Ŋs X;c8)Gc{r uCP)@3h|nMU4Ҥ#*C Y0҈x? T,;rRRMwHlOȔi e"$6VΧy-J^.&4PAZnS{1qmM Wqp}Rg?G1!sIF)8{/QE9@V@b 1'"|Q0Dce~]it!ɧ_Be%؎h~d1勆S,4Oqg< z|*P3efO\^L(GFn:}.ԃ~ƜKE\.iiw=ߪ0LR=G+]V6ZI$tܭBEbvG'?Qaq[KCM0moQ*;E<,(s$5!lUDP!t5 w>Ą PaO7v،:𗃲U. &ޅ|EژcPp.J6}?~6bA4d dc5 5euckal1cys8b2J51lLR"Tq!`D_ r# 28C5Fq]4fƪ3Pgxf,\SKsTIxNK#4D&㮲UW ~t3xӇMhAL"#I:JfښMy AWT-w MF/SOaZҟzJߵ\^ón6SqwUڂ)!v{=q#K%Mz .&5w=/  )ш8 |ԥ_uQݎ;$)~GRQh8E {~ףu5miӡQFV={Ҙ'*,1?-e|Q^F+u~h Bxv[ZSJe%-fsMKV}zP׬2NPOA%3O/F*uzڭ'dk-$#Tu$lE(aBgl~\ rFj,Dy&c{wzgKfxn%SbKcE3P/(d8#(ȶ:Jgiw* r'Q,,3Jqw={8,%z n'w;GS#K<%+L"O I,b endstream endobj 22 0 obj << /Type /FontDescriptor /FontName /MYTIPI+LMRoman10-Regular /Flags 4 /FontBBox [-430 -290 1417 1127] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/A/C/F/J/L/M/O/R/S/T/W/Y/a/asterisk/b/c/colon/comma/d/e/f/ff/fi/five/g/h/hyphen/i/j/k/l/m/n/o/one/p/parenleft/parenright/period/quotedblleft/quotedblright/quoteright/r/s/semicolon/slash/t/two/u/v/w/x/y/zero) /FontFile 21 0 R >> endobj 16 0 obj << /Type /Encoding /Differences [16/quotedblleft/quotedblright 27/ff/fi 39/quoteright/parenleft/parenright/asterisk 44/comma/hyphen/period/slash/zero/one/two 53/five 58/colon/semicolon 65/A 67/C 70/F 73/I/J 76/L/M 79/O 82/R/S/T 87/W 89/Y 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p 114/r/s/t/u/v/w/x/y] >> endobj 11 0 obj << /Type /Font /Subtype /Type1 /BaseFont /EUPXWR+LMRoman12-Bold /FontDescriptor 20 0 R /FirstChar 67 /LastChar 117 /Widths 18 0 R /Encoding 16 0 R >> endobj 12 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MYTIPI+LMRoman10-Regular /FontDescriptor 22 0 R /FirstChar 16 /LastChar 121 /Widths 17 0 R /Encoding 16 0 R >> endobj 15 0 obj << /Type /Pages /Count 1 /Kids [2 0 R] >> endobj 23 0 obj << /Names [(Doc-Start) 9 0 R (page.1) 8 0 R (section*.1) 10 0 R (section*.2) 13 0 R (section*.3) 14 0 R] /Limits [(Doc-Start) (section*.3)] >> endobj 24 0 obj << /Dests 23 0 R >> endobj 25 0 obj << /Type /Catalog /Pages 15 0 R /Names 24 0 R /PageMode/UseOutlines /OpenAction 1 0 R >> endobj 26 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.18)/Keywords() /CreationDate (D:20171005095007+02'00') /ModDate (D:20171005095007+02'00') /Trapped /False /PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.9.6354 (1.40.18)) >> endobj xref 0 27 0000000000 65535 f 0000000015 00000 n 0000001520 00000 n 0000001655 00000 n 0000001847 00000 n 0000002035 00000 n 0000002469 00000 n 0000000061 00000 n 0000002206 00000 n 0000002259 00000 n 0000002308 00000 n 0000057857 00000 n 0000058023 00000 n 0000002361 00000 n 0000002415 00000 n 0000058192 00000 n 0000057544 00000 n 0000002550 00000 n 0000003138 00000 n 0000003440 00000 n 0000025735 00000 n 0000025994 00000 n 0000057109 00000 n 0000058250 00000 n 0000058409 00000 n 0000058445 00000 n 0000058550 00000 n trailer << /Size 27 /Root 25 0 R /Info 26 0 R /ID [<49297309942FBC4BE6191C910BA3A9A1> <49297309942FBC4BE6191C910BA3A9A1>] >> startxref 58824 %%EOF FactoMineR/inst/doc/clustering.Rmd0000644000176200001440000000067314512004663016615 0ustar liggesusers --- title: "Clustering" author: "Francois Husson" output: pdf_document: fig_height: 6 keep_tex: yes html_document: default word_document: default --- # Introduction You can see this that gives some ideas about the use of Principal Component methods with clustering methods: http://factominer.free.fr/more/HCPC_husson_josse.pdf FactoMineR/inst/doc/clustering.html0000644000176200001440000000516114610501664017036 0ustar liggesusers Introduction

Introduction


title: “Clustering” author: “Francois Husson” output: pdf_document: fig_height: 6 keep_tex: yes html_document: default word_document: default

Introduction

You can see this that gives some ideas about the use of Principal Component methods with clustering methods:

http://factominer.free.fr/more/HCPC_husson_josse.pdf

FactoMineR/inst/doc/FactoMineR.Rmd0000644000176200001440000000336514512004650016422 0ustar liggesusers--- output: pdf_document: default html_document: default --- --- title: "FactoMineR" author: "Francois Husson" output: pdf_document: fig_height: 6 keep_tex: yes html_document: default word_document: default --- # Introduction The FactoMineR package is a package dedicated to exploratory multivariate data analysis using R. One of the main reasons for developing this package is that we felt a need for a multivariate approach closer to our practice via: * the introduction of ``supplementary'' information; * the use of a more geometrical point of view than the one usually adopted by most of the Anglo-American practitioners. Another reason is that obviously it represents a convenient way to implement new methodologies (or methodologies dedicated to the advanced practitioner) as the ones we're presenting thereafter that take into account different structure on the data such as: * a partition on the variables; * a partition on the individuals; * a hierarchy structure on the variables. You can see more information about the package with the paper published in the Journal of Statistical Software: http://www.jstatsoft.org/article/view/v025i01/ # MOOC You can follow freely a MOOC on these methods. You will find videos on the methods and videos on the package FactoMineR: http://factominer.free.fr/course/MOOC.html # Website Lot of information are available on the Website: http://factominer.free.fr You will find many tutorials and a MOOC on exploratory multivariate data analysis methods such as principal component analysis, correspondence analysis, multiple correspondence analysis and multiple factor analysis FactoMineR/inst/CITATION0000644000176200001440000000164612674713245014375 0ustar liggesusersbibentry(bibtype = "Article", title = "{FactoMineR}: A Package for Multivariate Analysis", author = c(person(given = "S\\'ebastien", family = "L\\^e"), person(given = "Julie", family = "Josse"), person(given = "Fran\\c{c}ois", family = "Husson", email = "josse@agrocampus-ouest.fr")), journal = "Journal of Statistical Software", year = "2008", volume = "25", number = "1", pages = "1--18", doi = "10.18637/jss.v025.i01", header = "To cite FactoMineR in publications use:", textVersion = paste("Sebastien Le, Julie Josse, Francois Husson (2008).", "FactoMineR: An R Package for Multivariate Analysis.", "Journal of Statistical Software, 25(1), 1-18.", "10.18637/jss.v025.i01") )