Epi/0000755000175100001440000000000014421670514011011 5ustar hornikusersEpi/NAMESPACE0000644000175100001440000001342014235416113012224 0ustar hornikusersuseDynLib(Epi, .registration=TRUE) export( apc.frame, apc.fit, apc.plot, apc.lines, plot.apc, lines.apc, pc.points, pc.lines, pc.matpoints, pc.matlines, pc.matshade, cp.points, cp.lines, cp.matpoints, cp.matlines, cp.matshade, cal.yr, as.Date.cal.yr, ccwc, ci.pd, ci.lin, ci.exp, ci.cum, ci.surv, ci.pred, ci.ratio, ci.mat, ci.Crisk, matshade, lls, clear, contr.orth, contr.2nd, contr.cum, contr.diff, detrend, decurve, dur, erl, surv1, surv2, erl1, yll, effx, effx.match, float, print.floated, gen.exp, mat2pol, Icens, print.Icens, plotevent, fit.add, fit.mult, ftrend, fgrep, ngrep, lgrep, plotCIF, stackedCIF, show.apc.LCa, apc.LCa, LCa.fit, print.LCa, summary.LCa, predict.LCa, plot.LCa, Lexis.diagram, Lexis.lines, Life.lines, Lexis, merge.Lexis, plot.Lexis, points.Lexis, lines.Lexis, PY.ann.Lexis, subset.Lexis, "[.Lexis", cbind.Lexis, rbind.Lexis, order.Lexis, orderLexis, sortLexis, print.Lexis, summary.Lexis, print.summary.Lexis, splitLexis, transform.Lexis, levels.Lexis, nid.Lexis, bootLexis, Relevel.Lexis, factorize.Lexis, cutLexis, mcutLexis, rcutLexis, countLexis, stack.Lexis, tmat.Lexis, boxes.Lexis, boxes.matrix, boxes.MS, msdata.Lexis, etm.Lexis, crr.Lexis, glm.Lexis, gam.Lexis, coxph.Lexis, AaJ.Lexis, simLexis, addCov.Lexis, addDrug.Lexis, coarse.Lexis, subset.stacked.Lexis, transform.stacked.Lexis, plot.pState, lines.pState, Lexis2msm, entry, exit, status, timeBand, timeScales, timeSince, tsNA20, breaks, absorbing, transient, preceding, before, succeeding, after, tbox, dbox, fillarr, boxarr, boxes, factorize, rm.tr, PY.ann, N2Y, tmat, nState, pState, msdata, mh, ncut, nice, NArray, ZArray, Ns, Termplot, pctab, plotEst, pointsEst, projection.ip, in.span, inSpan, id.span, idSpan, thinCol, linesEst, rateplot, Aplot, Pplot, Cplot, nid, Relevel, Relevel.factor, ROC, twoby2, Wald, stat.table, clogistic, poisreg, harm) # Import generic methods importFrom( utils, stack ) importFrom( splines, ns, bs ) importFrom( plyr, rbind.fill ) # importFrom( purrr, "%>%" ) importFrom( magrittr, "%>%" ) importFrom( dplyr, summarize, group_by, arrange, left_join, inner_join, select, rename, mutate, ungroup, filter, near) importFrom( cmprsk, crr) importFrom( etm, etm ) # importFrom( mstate, msdata ) importFrom( MASS, mvrnorm, ginv ) importFrom( survival, clogit, coxph, Surv, survfit ) importFrom( mgcv, gam ) importFrom( numDeriv, hessian ) importFrom( Matrix, nearPD ) importFrom( zoo, na.locf ) importFrom("grDevices", "gray", "rainbow", "adjustcolor", "dev.cur") importFrom("graphics", "abline", "arrows", "axis", "box", "layout", "lines", "locator", "matlines", "matplot", "matpoints", "mtext", "par", "plot", "plot.new", "plot.window", "points", "polygon", "rect", "rug", "segments", "strheight", "strwidth", "text") importFrom("stats", ".getXlevels", "AIC", "addmargins", "anova", "approx", "ave", "as.formula", "binomial", "coef", "complete.cases", "contr.sum", "dpois", "fisher.test", "fitted", "formula", "gaussian", "glm", "is.empty.model", "lm", "make.link", "median", "model.extract", "model.matrix", "model.offset", "model.response", "nlm", "pchisq", "pnorm", "poisson", "predict", "predict.lm", "qnorm", "qt", "quantile", "rpois", "runif", "termplot", "update", "vcov", "weighted.mean", "xtabs") importFrom("utils", "flush.console", "str") # register S3 methods S3method( print, Icens) S3method( print, floated) S3method( plot, apc) S3method( lines, apc) S3method( plot, Lexis) S3method( plot, pState) S3method( lines, pState) S3method( points, Lexis) S3method( lines, Lexis) S3method( PY.ann, Lexis) S3method( merge, Lexis) S3method( subset, Lexis) S3method( subset, stacked.Lexis) S3method( "[", Lexis) S3method( cbind, Lexis) S3method( rbind, Lexis) S3method( print, Lexis) S3method( summary, Lexis) S3method( print, summary.Lexis) S3method( transform, Lexis) S3method( transform, stacked.Lexis) S3method( levels, Lexis) S3method( nid, Lexis) S3method( nid, default) S3method( Relevel, Lexis) S3method( Relevel, factor) S3method( Relevel, default) S3method( factorize, Lexis) S3method( addCov, Lexis) S3method( addDrug, Lexis) S3method( stack, Lexis) S3method( tmat, Lexis) S3method( boxes, Lexis) S3method( boxes, matrix) S3method( boxes, MS) S3method( msdata, Lexis) S3method( etm, Lexis) S3method( glm, Lexis) S3method( gam, Lexis) S3method( coxph, Lexis) S3method( AaJ, Lexis) S3method( print, LCa) S3method( summary, LCa) S3method( predict, LCa) S3method( plot, LCa) S3method( print, stat.table) S3method( print, clogistic) S3method( coef, clogistic) S3method( vcov, clogistic) S3method( as.Date, cal.yr) Epi/data/0000755000175100001440000000000013763140361011722 5ustar hornikusersEpi/data/blcaIT.rda0000644000175100001440000000137514421664403013556 0ustar hornikusersKHTQ8p&٢(Bzl̹qD{Yfj9Hc>A0ۢ 20B.e"6 "(( t;s]h;;7eC/BTsw.<"U9\kkf&+ݹr<5y%M;X.ܱvJU;ݱz<'n_>!o#ߨ %ĬU  ,"Ӛ"յ4_GblEqz9@{ȸGWG˒ǒă<+Ap#?wxCX%]'4OҁOAa_a`3F^/x|ԡGy0߰_ʄg0_{*| a]'0^5rꚬmn1,i68 }x$ˇX3o? o]wm8~ם[zA"=;[:^OSA_kevӺ;Ws~T4t2 yR9N*'))S;v(PءCa ;v(P١Ce*;TvP١Cc;4vhءCc:;tv١w<ƞ Epi/data/DMepi.rda0000644000175100001440000016413414421664402013420 0ustar hornikusers7zXZi"6!X ])TW"nRʟ$!K{yN+,AFCʊ 8,30ͽL汗>#$Tc[ *%vLժ,P?ZC3`ۄh t la Dڭio5أHGP} L}QhjnG7aY_ nd^p I7[Z|c.j 2me^RF-yZcbNzpF 4VZ1'Nt͈'[~I8.eA܌yM5t8 0YIqVeZNY H ~ 3Iݒ(;/B-_#&lD;ڇ. .胳rovE]pQ$#EKK|AVN&  `&5X__j5-[g""zڑxIV`DAo `4+IP $)Zx*$ A\pH$Of:{5I,͵3UEm ذnJn0 :wQN\1.1gXԏgtL@Jn'D5Q(#h5;\/H^tNIrUK%zDZpȿNG-\G!\ɖ5 8X-3cu=tB8=Kt@UK(ګ Xܧ.+A:g|DtQ%[yU(v.c :)wojzä+ I:je?(,#">z;jD gkMA%K''DQbN'Yh\Kڭr{Z4 7r(NE)="a;^{5n3&t.Hx{aἱ6uhC~*LeLwi*-;54ƹ(a*kTCU-c/0a,l4x5T M}وt5:@Pk20bg߷7[zd~suYSCHfg5Ol""HtɏbMl,5\M^M/fK)b__BXk0>Nc eyi@)0\W׌,kxu\UXeQzusbr`C>09t/I6~D1Fއd\oOf_KD-T{!#\mOJѬJ6 Z(а JM}/ 1}~2z ʖW`ͱaF+,Gpb|Fjd2a! Xah?!^T=Ŕ '>vئK$K3ƒ@;.-VA ҧ`o|7IW; +T B!c~ϊt]Ah,5-^$/LNZ`^ m,zh,[ K,eߔopjNL6DkB/f`yO Qop&9UX&Pw~ ytȁ &MAHF.SwK`j;?0~m 749\%cKAJ }}pVkƘVЧ/OW]a9Y)GL?Cks"[d/T)oGlnp-~CHK0j=jj=mrdB??74Hu &+,_H~VAgV)?me@p$=|_cgie ΧԮjVTbVm=;@qYӗQ4r^D6L]Qu N:5^od+Jdz< ^"TP1pr8^=JNoO0[FF@իUDS3\VD[ŰBS8d{)a -i~_|3֟Quj\[e%ւǨ7NYe!9 5%0#MwmzrDHcHUM-|L^BV~c!:LXATDf̵AQ]c>mX g[{lwJV27fcP?XO,dؑJ,,JDp8.F KO}yMWFEd؟`N_P¹6L1_XE DM` .3;]JP A7w9`>ӄCGy˜uC0?[7_~#Q:F{%,%\SgәţA4dmJpPq;?,EaوRgǫ"Ԑ:S^I8S).vu=Ath Pt!H$//vl0=#%,ԭ.Lч&4QK|<:S} ~Pd4f|_QXm [rq`<FER0 ZH քXLaRh[~U=3obE6Zx6yu)[V8fT:T"4S;ܾ<ѧiB@},ߝ҈;U˺41o+—e ޤSTmFJBNYf-&Ӵ5[e:`j- I!Of.HP̑$SM;gVC-~.*q/c9O͙l^3+$|;=#%*)SfQ?[H3[dchG{sWU(t~{/,b6i*9Dr(}0osnip*,%Fߔ]ӱ.%sS5Bg$͊U8`9%C$ x?c~n°Qc, RFlE4mJ|1)\bIjԞE˒>[ )w`ӎy7 Mw> AʄT5 =ᦩEp(~IC P.i,Y xhZ#;v +!Z='(S.)$OcZ%u;T8 (Y.p\“; [$K-3$֤+1ڷͩ9 PQ/}+qUC9'U\>->0kc~X "c%(T$Sŋe:[ gdGJu>ww 4q^(l}~өo22Xv`ǡhi"Bm^j߲I ˯DZWb.7!4hL?{cxUz(ZݭDi9GsqE}8uz 슬ĞvZXD u&nb hRK69/gGc$5aWgP!@ǢPG3C&-3#r`ߊ۩2^a.rlԚѢk|5Mg'w~&fTCc=:ի!uY܎Ƌ+NTHsv8-}0"\;.Кb3.`N~@6Pnu{0|{:Af,DH,ֺY"vYe|YlnoNFjwO6 &tWswՁUR$\29eRxaq ՗V!9~ s&{3/Z;E63B2I0RTk]%j}^/VUΊ6Ur!GiT'=o62e=[cQvKi1V.f_"+E⹒Ǣzm/Eq9nL\x i<81z~iXWP$/H)B5"SRE',Lņcڰ!(Ә&rGV ;߯e;l3}&4X7Z7omC*44 1%:͠A4H1ѬQ+)"!FGĎ!)`!z?D.+ȿ:Z@{qꮸ:#< v^Iq[P_ާ/U%y6'k2jkMe8})wYi،*EBFn佲Mͪ*TkZ pSQھ]p?WOyC? 2KGr< [v,@ψN_Q'aU̦ EF:UG7Iəֿhl8*5< g5u>L094]ufd XʠaݰY}KG5>.Ue K8!>TY@P秊(RMROOO+F =8k|fXLOIxc3ja TU՜c+pYJc%!y6$;37.Rc3Q053%Xi,X@"owh@z~;R h'q*~鐉y/vaռM48~uۢҖ7Ԧc7cOc(wD4a|dE bi0=}<(ֱ\o˪La p~h"=*+T=Fx55> Z@9%e"#s|fYg,>h|_z XBL)+, @vc]>f4 j.m ,i=RF?fw ,~#*4 P?7)1o1#!jyJȚlpiB0'_Ry~HD)AɃz^cJJerJթ7Rr\6D-\r6[L2xo <_%TS _ziSҲ'Qv|mOo$H 9AioM; o7cX?ɉ7JcKd%rSP="|sM٠٧?"P6tqlx筲=6zWٿB'FG]m2!!QҰOp;J(P5`ג V.a!1ab%~La|lˬw1KdhV9{լ$JHAȦg`̀-7D'^nX9?ʥ%/"ƸK'O|q-+?kc.Oᔆ5ttT*X&8YH4|P,nu>a)]c ӃݵR[ 3 v ]wv9ʈVSWi2EROf| yW mc\+0gЉO|tƳsO/m ?6za)-K T$f&ԍ9HRje(ޅ%1"!6:Eݻ^7v"D,򼴨| /W RyU~tS[7m V[IC3$I$BSA?%֮K%Ck>Q{_$*&KH`^yO}djZX4;o* ט0I_|Aү`Z9I5=^kݤtQsV'YײT*À$͕FUZ5?%%,+bd|@ (xU/+r(JG#Ѷc1yPMm4Z86X KˊQʪl/"GjU{pn= i'Jλz4;e!Ji#7h-C5Y+NZsl@֥h˝i~LT>*͘lm]gD"-fY>6v-W$*+eG.f헓ּ엥̨(DľaUx)|+U_s1inΞ^ky?77 FgRd&\KhȔp`"GYrtzG4_ jטS(ItILjCQ^9>ӝ!㮧[Db+6-P2.kpwzO.2Inϔ2f_lIδ]K)'wk`U <].73'3sx=rT±4Ran3H2=CFn`CJHԑZBނ 5M˴)#FfYu}GOS[0DPG̪@8u΂ X8+t8XdCٻr P6k=D}ZKPY@QrwM[{B#m3~!f%|ox-x-*lX:MA):/`[nWH"mY *UBefo ҀzQOHj]ܥp~񔨒;g$H7* +5xrܸѓߣB^:"s֬09l-ew>PI r)_S.Ay"+TIvPV~pd i0sIx+1d,uO{5G> q ÙiA7]X_ŘJ+`؞ *DE9^ Ho2IzA) FH VGƆ›=lI*":L߹.B~WP9"^𘝷vT64R-%l8 Wcui\F+ ' ,1bŞtA: " (G 2<W4KӜ+KP=jOHKٟR׵:X :N0Ys|Lm(g<]6ZLCf=Aer E]X|Bfۦ^zUl,~C7ꀃ\LvwWl0R# Xg1HƯ!{]:yQOBG:ba;=WRˤۉv] Ϡ]ڙ~D_ X?dZMܣq#GC4_?=K;|\ԥi|t pJͦS6.: ^C hHQXqt_ns+ÙXh#!mE#,ȔTql5{<`C9F\Tʪ[p.ݫC;î {PJ,cBϦ㠍M,Wډ(S\lmzU}0#  AwHrtNX2ko@&H #OrSB^yk8G*{!rv7 qYOCv 3bgAohc[j}%?&J ܌\HaWP…'DRQ)yN΃1!xyE>ӍNwG[fw0?rjdjy{j-VdʬG-! R]H_ǏiF9OoE^%A5䕢!%Xz-T}LҜΠ0VJXpnՄ*,6 c'Q)e ld .x9.!XTD̫v#(% Uυle%}+6O /@3n+K+-N*JwZ)3-1 LY16RԬw[T.p^{9;c@<u) LHfs#:H)qתv4kldœB܎5žbaAsp=U6/PE.8j/D_Sۙ\G>a# ѓ#i}NV?0TGVqZ4e7K#*VIq@iC4U90[(%T*D )L_|MU.Qwbb!ߗBYZyM^]M@-~S{-G 9ǒY7{/'c@RH='Հ Vw 7KEљ8Q]\v7W8S _Goj굕&Hac7&c ! -u1R uWAf{,H. kAHɟ(џ1-)¤h9Z$[\Hz;%^>[sɴo"+}(O0)k35tލXCHCEj֦皿%rG6>*b4r PgǚBq ^'J 5UO7ɞX,,!Q9 `pWQ.Rk5uV\\btBGNn8Td'}iJT7| =%2,-puC"]b\fQYIb5M/ʘaݰӠ }MҤʳ~k0~F_BH ^9=>9H ΰZUy{A2As.~HP0&Y޸3D8=[5P~dUu#/,:z^팈KI>`%cҗIW& &XtkKSPfXA`$9Pٹ7MN^#uDy[:)|1] H7x!:<Lo>emXGsB`ƥ[) hBid8n` G"euw(͵)WKr~l))2%-[ጪG6 ׅu̎4$^=s)+`,%*8Ldk!i2yu}#yly{H„RN㲍sNa3 3vD2>e+f+g+k}2 q?IBF{WH;UQT9֕۷,y#cz,i4S`\}=.]`+0s&)p.Ro LzN([Hf|Auexh?ʤ,t{Q< R0n?3\~DJ/X᜖F9V|E-[NrP8]`lE>/N>wr7yB Jo9VqTL}W%b{%DYQR=CsPpqf okr:,f Χ8!߲d.DGmK1^.xZʅ1/Vȑ[CPVQU׮ܼK)M܏q?`KF,Ž;5 VeP(Omky< MsT(czechdҹ߅Ŝ}M&[ȴ"-{X$FH4ikp $uwQ:+cexz[28/˙·~]߇tRv:!MEr t9@9,יig 7iޤi-Ds|ZZB,d23WK`SϽ<u'^ V'%]N݊)c bi,X:ۇ쑣$V _ǝ2H-GũKmOGv+dUt6Kr9eߜ_I*6 C^K`J1!ޤ@kA4¢UHڂm}8_6E肈G`8 T[BРKPHV99CcGU|B-O,kԛ!f7䪱S~JړHbEulj߆b`^h@^gZ=Gl)Sf*Jr'^20jg.cVOޔ̾GS<.(zLV"$Nl9_5B~߻. [Y[Y~V|GU""E_4c@]P9"1jJM\~c|@nR^TkA%\7:km>wڰ_ŏxlBu* :dUC)0ܙg"ݚkm$vOFS̈ KJm;@6K"7(tTÃc+$iWe@4Aa #ZN_vC%D?—K6&4!srk!F/w!EB!ksϜ{Q6H^0I+՝Yy^1q/K]"9)Ep nAI}5+# KPE@XOD5,d\DfVv1uQJA/O[38}RE4es٧dc%`;me[EG8[򝤂R&k IBl3'lQe_.D~TilxCZ[@0igiŽ(dL6Γ&ԓ]$kxp?ߊIGD* |G(Ӣ{;K^VzN&dp#+,m]JlOOzw? ֠b61yp."bf)TB<VXJzȬH~V1M%Я91 -+kT0<@^_]1|74AmRcԝ̄DXضkq2Z"CC0'hegvE,Akq/$Y,G 8zpY!2~)0`Ynr|UDt=h8:Yݲ|Nmi.)z,yu~%488A$eMʃ;sA(<@~^HMwf;v-h"L;D;/5*y^:0Ѫ6}eL)Wi  v Fg2-Hв;#?.d#Iu<>7N,Hq b^ҭZlUlj#5/p(R쓉;c`ێę^b a(;paXZ)*~EgR '\ ]j61 b㪅d1*.Ey#H?xV<4{U2&֤B2i/tx^ROQ+ÏZpÄC9vMwFsه ~Rd J&@ȮV`;;[8ףT9uFR-0p#,ۉ|`p aFu?BĢ5#t~4 v漼1_6ԉ@*)֩ C-JqФ9B|T׌$: sXԏa§v8(vQ=d=<)E8 5mm;r7܉ʵX>\n?Y חIp z $/]΄x?Й| ґD󊰴Xƻg& l;/х0;iFOdSA2Ɖ<2JujHFk/@&8U߷/2#R4Smߺ6LujҢ!z-Qz}/u$_lKo9<fipbٚJbpY??(4CDvZXG m9GAԳd>?PZ_H䡂WriqTÒY,\h{8zu5Z]'AԶdH+=pO==N΀=Nd} _OfW> 2H&ΜdǏY1l݊C1-LGӶT;D{aPCDeƝUKV{YO|10;(\rT/z.>.+\HᷛIB#x US0g""Ox|9<C$#rjm樣s r8_ 85ؼ򽕚%|Jʮyζl`ψW94Dn?%Cc>7?zM.T7Pi& ~ʱsv8fO@`<0@t8΋}#*R+r2"qQ@GLrb:HxTEzS݇v佷|7SNWOF1G U/ݩi5Q mh`8'|4n:A!lYckBj.t+QY2;-}~%<]\`x|{ .puIHr*jL@){$^Qaҧ OU$Oά&T'ѥFVDsVC$M@p<# =p+g?I3qӗggp'_֔$5\ AU%Q%>sPC]CdЌox=B=KhBT}un@i3"%U:(PcwSfTS N}POD./3JR=~YgQt`"1rr H0whke7`+g&f2-9uk'7tٚ!|>Rs/W~L.N_|C{ĂUUov5$ -=>ftŞ[)Z:ՠm=6pP+JOZs2>_~1@K*[_ϯ^$REP8iY[X4 L[ؑ 诬ǩOE^DRЦK̺r.Qދ/On4 >Oew{ǤNLˣ93VDž:46vzɟЉ 7ՙr$t>egDM#T9Uh%"{ր38, }R?8`\xr_޾C$̛i42#8+3tb_{Ԯ: ՕH&;Å˩6 G1&G jhQ2u_ $io{9뻫ĭXlwx4zaȲDf)ȊM$͒xNY(4 7- GT#[&='P;'S!4ԏ=/?e@Մh0^UL(`ڄ^2:JT!TRm0F]խ97HXmަGxNW6FpFn/K{/x#1k ?‡p sZ|l\402[ky{ґ_oӲDt>TnѲ*?(KI{k ԠCYǛ? FD؛>dQ`}A=rU#p;BsjT?k*G/DL[E`a9b"F[h*5iIm"~T:RaS©)i,NhH_3dJAL-yALjܾH A|vjTl4핓v7RTZJa4"?c:xW3kWZ[KF}hKrh^} HX[qrY ~ BV=i &t\36LfoFЪc.{J RMFKixF`1 F݅z:ӢdI$GG66h{Z,/dְ)H"#a{gI|CkGHrgs45oV$N_TK٢KS{ .^Iy1G));`@k"/нD9~k=:lBr X.}hӆgR}ȝyCeW*h?Vo~B43T$[$c |,>5Fh4m$<hY"Ёƨ%5_G>!7x;n (G^3OZDٝLl?HiKz$Kn8k5l6r:J8uii +k3}g &ޓ{GևP z, r;­ˍ%_dT5wM:7Kf.0?&znzH;Ԯv%G~}g.L6f) `%)U}*6mC(S vϔ)f-ok8-ǧ^t>M+rey^v [\W&tYt"הuEN0|sj m9_/ a[F^t =3ZHx´Da3%"vctDyz;} A|}v'- MB9n&&V톑8FP (zk?ֿɫU-ce\Ʌ\sU y^ Cep)Zpa{!$i7P#w M]8:WȊֻI5d}v$w_(^+ɘϰ”l!uhwiz`ɉNɴ`v<^1]p "~l\g`3TH{Ӆ/|b҂7>yYQ<| ~2Eʅ~㵬 [!ee:( ,>yCkV. oXfjԪJh_pYD}~ \„7dr Y]ʋT@鈄9A*RÍY;aT#灍ge40e%xRL׸kdmYu8'L[8㊲b)΍Se~3I1.濛<vp KfȚ]:JT8p}4oswp҅;v׳ίL[hMBS`9Z{Fqdon@5LՄ/(CN2( ӏ;FD=(/huAN ΛN 7XIR9?6 t9?ej~,Ow| Yo (.ewT@GK5>xb?%K'P H;CI6Qsj//3bӠ))|3k^-ncΗ`b0lȭ,h[A g0^Z2D7/ Q5 /* Ż.XKEb|3&%LC Ӑ5|VmV3)*EWXk37)c>wB%⼊qULE#?lʚX_Tr":Ξ aSsֵ XDr݅>nis>M Ccj$ga or[r-ˊ(gHie6s߽~t@mSF;zUROeʙTF[>V ʃ6棘,z˧V6orɡ.?I6rC2? *sV}\QI9(uٯ5>V>3$ƺBad=/ ۶/K=@$ݓ,?a|ioeUc]?VZ9/EӜ ?}؆_>臃EV-"O. O?reC&Z8l|v^"$xU; Ng5]a51WsEr.]A>;*Q-ZEɎ |7$[BOV/Yi(_V0[\F4^Ko.KLڤh#w7DAYۉ$jGMKlE4 L55ԝM39{D-e u<%NEW$́`9k֊4/| PO{e;oGC=DV\;ұøehS+''Nv)32kg vK|BFsyuKE`1ف59I_be,4Bb27 ,S2lw!Ne>~ԉi&"E贪29nTg|:1MQCT8c7j!X^![PkgO ūCDSpdg78(VYN(ꮼDVy 2<|;̞Ѕt)ZV`3uxͧv/?%E,sTNnj4˶}uYB8Ӎ3+M IF҃ގMa ʒEeN{LadȄtN\DU˷ ^c*L=Iٻ(wPP;D;WhMt( Sno`4W\=D V6O^Ypʤ,-&9[M>5V0YVlmxe%B\'US |j&j+ ;C_ABay5-Hm7D#sI {ɻGsy,Ktf5'oj|2$9;}@ޠU#4Xj!WwtGO|Ұ4rj7friNvP}0GqnXQv6̵41;D$yAl#`dS+ѠX1pB`4.P UF/4k ̅tEG3%F! - >E-{6=]D-=n ㇖ L^Q>GLȰ,<+P\LHf, IZǖ>)Zܝ\A+=8^HoLl .3fhib OΠ=Xxlˆ@ջm zaFV%$uÎ"|& 8 .=f<P{JWßWC}$JDqnCvXg+ t<Pv//z`|K[Qh6RŖaމl`goY U|@Zqw@N~h] !Luk[9^^Mw;۟*$c'M\Ẅ́1Wl+F7jb"SST \գhRal"XL]–/)v:^,vi5<۠Y9@ J~G]IGu(TZa.bڲx@O}ռO/ufdvE8̪J՞ 'ث$:I֍P.~/O_p L30a/I8ՏIDЄ'8G ic+Zɗȏ9&}bCe:Dq-{9!2YѴMNt⑚Gy~?ˢ FC:_}z2lf z9?N|d2۷S;"-7P:Λ(#]j4_4& 8do5dB۴#Y_a>'Q{Xv~)̣]Jf\e%8F=k1Q$ƚiӠȅO%`qK z`Lw"¯mzDL@}}DjCڜ4ĩ,CS L(nr*^~Fq:CTCGW Iѳb8TܛMd H[1 r:Ql 2zHؠZ$N/.LnRPV9 Kr;RqN0h6-S ~?WVnǓR3>٘& ǽ<,r¬VfW'\5STamW Mnl+28huQ0FVo$=Sy^ )[*eA37y>fu*[âs %Cf 7 <Xm"19eVy݅!K9eu)Jtl8-0`F [gHj7* uSDZ>ug؛hs;֓BQDuqFʉ$,.pgN ן`. giɋ1hu}7)LÿÖ+9,$r+ 8-s%jvH8ĈcHB|>+#^>Hr`KhOj=\3u`F@>9 ˄{V)\྽-zZ厀hϻm;\#e|ҘBG.'qAQkq<.NX]?5-HP3~%ݠUFmIoxYᗀ+ ΎX#'SWcHs7o @ h U[)Hk#*V&a4*D|EZVA眖y2˲1g߶ jTH[]QԟH?c o*ι$ہmN2-'4Q&[ywZZr?2?ɷnQ4|M2 ;Vj32eo. q~A fh?g_%cÎ Q*{含vZI'lҾ{b=A߮1=[8\}`/nTSx63bf|[Wc"&~]:F=v& EB=֐,/.aO+dtP4;64{J Éx"kJ8[sZa iS~w{V&̓oT'tj0NI$e/?ILqtu"m M{|*J3=6+1VloL,<!YR~bd @Ƌ:Aq/~<2ս) 0e_Ȭ}t=$i q;\Z9a]XYVNwmD?T!AW" 6ŅN Bxe!فqT\%oy漿{]1/%=ҋZWX "pƫm~F6o{l Vsu"g!~xL> nZLKV ieƃQ+ &FS,^Hu/h̓mǐNЫ0`A1*,ڴoۂEJvg~jDylQmP3dSG*2FkQ^M.7Z'E#N(IL"U j~Ҧڑ_RcٸH^En)Kq#1y2=沀cz*ߧbw3umIN5I9l a o+uGyyӐt3}Ȭ%P8}†#_D5qXe?B0EޞxBxrji#D֟'cn]bD?B~F'FnhFOb&?QE'9,r~coüǿW\JHc.뛟&N,5!h=CމOd+;;9BK\>DZ+#8IidQ !~I"ϘF `5 Ȭ{V^qYSVV49'`F܂@y K1b#ʜl3pM!Qwf'5{9V=$d42:F§'MF+:m8V_IƲ~o#}[Bh.Q`n nrfS4[܊XWѓٔtv.Fa谶 S8 nzJJ1> ͙ɺd P fvt[wf*c+ .LW&p^S\p,LOrmOMҍ4̟0qGsFoT{?j*r}e.{ E*VE-F BQ< /:V[+6VWQ?1 o7.g>|Xf"$QyrhVx˹: jPI(.B[$ŧ}__!2ejPpLLM\GL͌/oz:h?`eٻ޵ 4ꬱ&VݠFJ܋;xUsm,X[[s,XҲҢi/YfY~klmvjIp(qhD.9>z|[B.U/ABd]Uat|t(Oˇ}7dg*}.]^XQ2 U=3'pUO}v5w?^AziU ,>dlʜTaD2hⷽ; Yɸ.'65@I=\( s)r.щ .޼ɘ}4:/ .+>@S7% 3q+hbdeU3{|귺R{"%gvG1"= In 7>m=uo:۩7dj*{8}KݘKi?]"_{r[Pyn6qdy]JmfIfIޛJh}h ec EtHCXuJ`hO*AEU+pp#;\\(u )ZOcĨXK뼸 DEBa2BMLTs+1MM'F;:2}&Z_KWK]ѓ?BRm4%qX8P! jSܴF腜I`nzK?j%}mlVnUٕo&O@eY CxbtuWN;5b|I|T0-Ȑl5R.g-"*uNa*oT{!~d. 2 lht,PK͕Hm(ҵQ"U^x̭$2?^CsG⪜C&CwhN㧆x!THэ aϱfx `cgEn=N wn!?& @DMF I3订3oQ&d_[L~aU}ϲGNZ⧊3wzQ{ 5vz&e(ZEfaؚf Naޘf03@tv5`S-6Z2$:ܕLW{c^Z9K2LZo  p qƌBOo*u7\HE@\.'u:J;#?Wt>ˏ>vbqN:5'S;єC $.x\Or+(f9 &ª9-Jgxp_u!^L\xu6݅f|SbHXޚ%y({koi(Z#>/qZb a灞͟iSJ#dQT y_A.4ޤ/%9U f/y7^ PS} Z%_,?J>F(*Y;l{-g`,#ptG]i +i3XS[϶odf5$_SJ5O_eXdiE>vMTqD{d@]bἬ_:m ga`Fe:ӡvb:V;r^KáBc\15tCsT]:ߑ 1uDQ*қAk܂cjFm/d05>g*?Vm6_ӳ?Ί'\';4,ob{k?p,H/F|]ՃsAioϵ0cxҀ4ߠI?r6Bo1A'ӵd.`8=a.1rh J>=~;:z@8j%->CƘ /cYu{&賯~Ca׍@p(QWx6&/;Y Uٮ~G@ƎsH]2O%Kb\#I0XK,,Xݕ=)Džgv#!/3rWHoA5c-ҔwNU7`'i2BJ;X4X]`#ǪƟc 런߯uNx39fPbK~IGmQޝō8LM1s;IH1pi}9S깎wUlzKWkE1zmȋwy},&VDg-}0c4E[ń4I/ HrƉjQ.ٻd NY| "0QOi7fV$qwpCi-L-.|)0\8rUz#HXg0iHH_YyLJy:=D D}Fk_E&~ެFG ! [Q \ O-1 !%+HZCM(˨DzW7S$e!S|P >l{j0'omԟ@km[Eq$O{M]{kXۧVH~Ï 8gݒ$8az9+$xغqe&YZ`8oVI 9[migzkuDlٞN0]Tdx(s|jFow*AV{ hHnEc;̈&n5}&8;HA1Jz*0.m MP3Y9sGRzvh"EhB~b*H=Z1<_WOZhio<}yJC~L>GjwkGː rj-|mi7q컑.Ia[lȀû`RlXDݯSWLX\OA,TtăZK?6R?Kf^[3 _zadsp繦edQo嫻>BD=y#kb'jOlMZ$u a#x(ϙdzԭ7jg1II+}ɿ}=뇔ą:mOI!EBZM3\(My)6۹];y3΀-İ5d_޲D1SZRBG{{ljM{7 #}n#y `UаC%Ex/zvǁCa:dnA@~jzYJRZ}g\[N^b5txŘE ǃJ-$w`4z[҅8b O/iU`MMw"_SNqy 27 [3:" }6!Kc/mWr:C*IHUzf՚i-`KSIH U N uD74~y4UV%|X'ENR,*е ruD5ͫQ?`"_a?#zQ`7֯` ͻ+QXzsߧEB>ߘwlm.Zwc )^D3Uر%p'շ<EYܯ!Qlmm?I@wV2dxξ$Ql:>%6oړHwI /_Oc_&@`3lBTs-Gf>~E uNP0B^l8z^Wk5B:u52(8TwMY0&괏M|{Qr3NiA. YNf 6Jwv9t:ITZ?ad,d\%/qXM s,|n]GVU_cD#FMKUQXKC>3б%hiu`$7!YR@xwa R.?!(:k;͉eeޛlZlL_juN5HWZs嫇eKyp..Lax_#~ nl@ )I9̞^pL_!0q`oS haojurAT|]7[嘒 &te$[Rd1(dL?EcV}SU.5\O)5s m (SB2Evb ~IACfPٿCa>qil4xgD 2݃14M~7iKHI ϙ,Y_ɸH;|{?k8* ~O?t#|kT1 lTc qwózRZ ;e4 1oT"nƄԬȒE_\= m,DXVsBۄv |.KA`}O]?Igw LPyys~CoOĩу8Q:JbɵV,/mD5a33>tyGS)7+Ne'>pezIہi3VƴԐOߍTT0ٸ0ۼ4Y}kE /⡞'ܴ2A:#=t,LHTs>~9 m;ҳ+5 8yZ}nȗq=JEWx#D @v i#ɂ{?/)'yPglo* !)Y"-{ 9 *i9*7a싗seWK+3tO^!apD{fۦ|EĢyrx 2)$0B't=`BO=JwF@uB~7yXQtx<4#Ú W݁teSq&hZ{Yz"C xbȴ|EA}^Zp4D2@EDp =}B=x=΃т+8Vʩ䴐ds5vwmWکK' y,".>p# *}e"$^jʅXOFz.AB#|( pQoHQy]dJA(Ã}H'3s!JJHCn<(gA"aa`RPFo9ο\"թ*fPvmH;60uYv$~\=@ӄfDkJ4Bέ‡D+"=H ;J6PWK3Y\UټILz^ŁA*(XZ9(&ny#$98C[ c_3kے0#W6.e /iLͶU9;4 irIu: ]@@ܓXc_i')4w30q'Zܜ=^ٽ]Dd!N$ob(8F,3H̊OdHU@R =$\c IV N}XoQݿ=UP#[-eQAQoL0pWrD)f-O/0)VvFNVL,Z &Yb*|ΠG"Eo^Q %G璒+ԌV:U~mKB.X 1hLDyaIdGE8Ә%Opj|Ra-Сp?d ݖ$3,6FJO?ƠwؚjD3e%zzeV^LLMP7;݅BVka7C;͢#U[Ca; aS h:."~0M;[2?S:y-C8 QJ. u:y7/N2oWp+]W8,bh!“G+H@ʤɧ%-8qH<>8!ci1(aKuQ0وh`K&̀#FxThPwNTջ%\邳6[f|8cb:/'q6@1z C|9>[R nAO&WZvN AX)8*}qw*b/tuoTnLuRWązN 7:dOv$/ŖEF[SJC;< t4Ԉm9;6u}Ns*09D1dlI# t@Vi;_\[찪Q5Kߐe(@a!jɓ*2 $>G_K3%f>j9]҇+ɠSMML+8T޶vQQ3e8Q¯dxhBr_otW`:4 dg ʖ,t Q!~p!rLVQ\⼰ QR(s t,ycTpf0- btO0G@+0ˈ.l5Ѯ5w#{bΌ&@8.Ld!Ϟw9ϓ?qH7:%w7bE5Gp}}!S Q` ~(&@DOM$haPΰr sp(Jvț$"ߏ6}խSOt.m1-:P/y؟`J6} Lv-3]N+4_*0Z^ 9h z٠DqI >ꞷ/stsWk}O=UkQ]'(|mroVgTHc@LFvlo> EĺBsY,4Yyks+sG3;A>PibdϺ:Ȇ˧ӥڱIT73cSYp?Iy!Y̳L3s̻QIrrDE!Tgc3&r&}1Mn+/ <3LCWZeG}ՅwsNpE?,S]k5,ԏ9#ɘo|Q28M/ػ~ X :!!(1"QcykQNYV3 cr5r1V.琱jys$KW\o)sky_~C6f{ѯ^WYH,$,H0Y̷G~[;߿fPD,xj$I X#԰o?i"pK2mJrp$mƚ"8gLhnެUúEA^׬*C-[t> 4en:2,w>' :CC0s?j(i1D=d3|}D'`us.]ͨCW㹲,>Q^hq>+/d*Yv] O=\x#e߆U"߈8X3f8uۂW):+#|ɥ>U;hLfwAw8zzR1& T8=n",(diOzDP|WR/dnr53T8g"VP~fu} dHƇ;c!]|25An |.%ꦂ&pIhO"SG_pg 4[W뵧uT|ɗO^ރ)-HDq w(zfCs,":ǎ~R$#B Tu1}PR&t![H!bU , ?)kd页'AF /w5̏%d]5y@@˘uz a椿 ħ)7D|~c !XRQurwBQo\Q? 5=>`/ "wXbةNP+ĉSZA !k g"< "j'"i)g>kk2tJSu@+Pb]r c4D<(8d98nőȁn)$og vIk>=GjE&п@k JGF8pGv~^뽭K7 e3"@5hDC}6dK3 mdgo]I"2c KY`OƘ4hS1;`+=y{z7[}';y,Q 4*Ep~l> [NذAv5;p\guC*a*θ O_(uM |\BINe3MlDw):Z,@`@̶͉"9O]}3IU Ѱ@B]ږ쫘[࿚{ɈCVdA< '+ wBy 44kUS;YL?-@|n6Օ'HzڷGb`|j:%[+C;|$LǙz@xNb_GrOÇnMyqfcQZJH611dW.+AlmjUT bw4Q-v.tڮrбM`p}bXE:kF+ZEpf,zoGtSpfjz~ S"%m78_2GZSC_JMAAں`f&;o-{Jh:$C=B0lr->4DSJ3* MB)q1.Om ]: !w$!5”FO xH*KS_$ǜzk#(-?c\*c;q=!V-<c&ŎzC[5{.FD(ld~8D7Ud֟n[(ȇ%g̿`4>L+"2 `pSe JK Lfmʦo*6M.#F$xޅlci#.*+[xMNm,zJid#P+qQ1lVֱ\<$ub1˞,=gVpWfp&\bIXi^5)/4lLP9,K)%T+5Š Q&6No=]^UU}lfol+~@D-ћRq1 -dG)+}m!uvx[ +Fd ~܂%ai /HfPHd sЫcqj]Z1ߴVIF+|dҔ,<ۆyŁ,r)%$5h4% /K5)"{H2}*Zjqv{l;g-EKymm]K /@S@m\l0 ZonȗlQ/z1#*g#aT2hiAϺׂ QuiSSBi Ե09|"ހ.:9Zs OЊ[Eqg/AG7Kqi9`lR{7dᦅI]J`.9k-wb`vc/Cluy<8^lhO-$ ijW-RJoEr+{^h/O-VQ 5lfZ>k?֔$hwHm7:q2^Z`p~d$;` UV3zǽsgdK+0yb2N[:ew0Y%E~پ<?Հn%?/LFztAyLHrtУRn4Hɛ*WF^@ :^AR|O[I\RĒ9p׶[%ϟ2ޥh;ygj &6n+d_i[i #4¬ČU+Ya@)D>j6~"ʷ|@-i<|I-ubn3L?}E`)|1]?6]I@ߞZyc'?+lI,hY@]}Q3(+P IkX, F\:Nk N7Y=(lˊ ٛsN+GIr+wpgOl֝qsʣ#&V< cvosl񘨦6-Ҍ=o NWݽp[u *c('ko{j>1 ~Y4R6l7c-}f<~J̧>jxXLvC|"qI:/+#=Z`=m16cO~{'5K~VoV5"'lrEJ~$z@ر,K&}Bel2,#sR1x/&W NDcNЦ"g5.먈hUS+~[ˮLUo\\Ѩ&l"W}hZ[~ieN= xv H 􀩳qW8{"x/Zyqk"Sd5[]-p($M'yYI[S'N cm蓡Jf4Σ$G+|^0m=Y:GhW-aՆD"4ĒTE GK "=eǎmu'?Ҩw5cO7_$E] O.zP4i8bsV=Xïw nq?Ўսxo|F4]!%UX̱?KBʴ? :!1gL%'hkq A>zsɷ-Ŏ& ;\heFdppE M$%9KS10D#-);aQNp 'rǬ۠b× ` mszW"RK+Xw.–{*Fʇa?(iKe> TkbsP 4gw|HZlGI=Xrg\7h*3qF @X:s/wjHڐttP'hgo"El:8T[ Vĩ" ;g%lR c%m3Og9+R%̏?tf{.y;#-}~G~e'ίv |FͅW4S"-ހ36L7x_{;_rfP↽7:%e"vNPw]e #eugYOfY!!gdjNsMt_7Uj-tdGÍ/%W-8pЫ'?A ==PLg>~Bib=BAn<3R3 sE`at6aQ6J~Y%'؛LB8y>g!2aȘA[Zw8G=NfZҘXكZO.T>ae gW4Z.+ZWѕ`(q6*b)fWq]i4jy S/^P S %\hN5@k;^k߫N ״$~? qI?_ G۩–xz5/]V{}O̱/'7ڎqT ܙg9`bLVtKMGԵ_pqRilZ4/GؖuJvϿf5⥫ݞWcdZc$vؾJ87ͻc^ɭ6AYkqΆ^ZwBG6jҕz`ꗇ6 vRcK!7GIXCϙvNe%͞3%k!9wg`j.mYPܪZ`OՅ՜E0cT8۽%k\F=y8B=SmB$J+$Ax)_f?ڐK`,n!'R>&MiNV]y|:V*M0!W>ظ)X/r:ie7ո1tTwK>kѾ z]])hAv)>p@EmQ!^Iyd ]2ך}O)vu~ CazNp2be*3Yu<ɹhk e=lYDh hh^S[kI9\nHaBx:L}I wE٘<aPGd9ɿqگkWUUV‘QU PAvPцgj (qإ::Fl5a[{qR |~R%i! rb~!˰ rϠASٍV>GOmaY[VL9zLNP5V/bQYԨN8Hi+0Wg(>A0zsG(# ߜO=JX*FA$ s%?󭞩 qU}5ﮙVqDd^l[jpzJFc[}j`Q -'Κ֗m'Y^dw1w635/ 8HpT6nn(c/t#>2@rڃt!X;J.iV<cq/ղk皺'T<YT{p%_" o,m͜㨥m{Fg.({ @,r T_A;􂊪sP]aMsT/e䓱b?&R,5/` OEOhrDħ}S6 ѹb)/8 [Rs弴xT6ffSa@-LcdmhPMg/:&BH".1C@xP`3VsğG mN}wgr=c/ r8-jh*AƅEca"mmk<îs!8:ZԀ "&3Ki":aR˒>^OE /JCclG7 /Qن((tc`j+t m4w9]oz м=q)aYF$sNof0KƷCmƄdcm}?˪ g3zG4 maTM:<' ҈npf2gB97o IIJ}c).33bSV}#ӏ*4:bM3x򰒌 b*O4`f4Ƃ%/ pR;H~.&>drqݻcwe=W>|G!"C /5J +DQXM;XYM.LX;W$V^dL ϠC Ly~=ӭ5G(F~ȗ;aB^vMu/3i@^FG'Oe"4N 20;Hx'vB5 ُ  YP T+ĵ=feZ7:zRkqe>Yz}Aœ43ڹx)ٝa tł(t-I7@Ux ЮtB\|b=8}RETL6z4|5ƙM]BB%b;%,AŒ7 {D@5JZKƲ2p Hnen$X8Ҫ2>Hào\2uB]30IWYxi~&wٙͱ,rQ ۖqqXӶ༤M*/Y$%/= Z"?8N.E6gqe@,/RHob2FNʊVŻe)4=\UstQ2u7J-1;r1AQ;@Kg# «mnH%opY.3P ][QNƯ0_ᙞlΗi|\\S"^s3?mR ϙK"u]m9BQǎJ>ҠFMQ$I_ m H{-=>oC@qn5]k8%Sb(Tl:UĪfLAΦރzD@RRx>%.}3;q"<LA̤(Dy!բ9R)op!|cB}t܈R\/|D> *ZΗHmZQSZ7H1+h"^}  AU)ܸSM嬍r&g~֟>~^6d "j(Kes"'%  ih+we2C2onP,(aa=Gt$#b/))KRxW=P]Op'68q7~* p߇6nqKu!7kܼ,~_CQH}'v4 Э+oֵgPGLqS:< ?CF03M̆سz^s ;M#@xt#?dhE ړPجHbW>,L;ЈLSE b|," wqsf4bP|K`}.8y6ǹ&2t:ķ`9h1OX*zER5$zEF#-4 kEEpXNﶎ,cjwzqx Wwn(D BP 1vޓ~Q1h +)By "Cmd[?~9<-?jds7[JĞƤ/ Ҕ\236 Pb:CySjg-&=U" .6kwIY R+̈f;Bg6#ٖ @m~˓,y2fe]#527T@hV`ߓMv\h@l`SDž6aO8 ;4$g11wn3NExn],m[ɂk?%⏰O}fDZԚ.爜ovb1Snh[θ&__QQp^^eVi6@(AK.'e^iJ' 1{ØjR<ʩG~115TzPHBXe rt3qN~xk-}O*;=ԆߠT;6 \wi"?o0H[6@ L@N%d)z 6) MˏQ s1ҸZΊN[0¹*??| dnY^c =.cS߁:-(:nm[/ܩdVhBGةQ\f6}pEhp d`lp834KdIyP2W2+ UhXJ_A^ /GPW*e,s>3{\Y/Ҥn~aaGvRkP}Nw {萲 MmC 4l$_,^#34l:\+Ѣzrjɦ%V;ʦv 7FF˞*p#|쬱`?4?9VX\)|J !`?I@P;Q5*%&HFX^4qCRJIng[쿲[чϓZɵif)P~2Y}6PIlW'qC9/4X90=fdlGNƍj= YeWtHC1X7Ě^L쌓ԯB;"PҋA#/z.38pf|kAgӚTRi% nԣ.BDK%B8 ߰=+A6qnL`wP+ά6mKgm(O!Dj @IGhɄaHQ/  < %;>xJ(ժB:@x&h,.Y+T&@(@'G[bУX-נƾ ݲxu}k1j1H]fK 2ɕ-,!FP `PV F,7hulv )A3,&rjN64n {-p˙/irD3RC-o?A7*8:m7gFw!;?T韢w/jʅ5۳PZpE: iuj:f,Cq}>>.qGlpt)jἊ?t~ VkB_Лfr$*wN;֩ LZoya DGd2VWZMpML?u.msiY"I C/m;懰3;iqr#R;};bԥ}nՐW>{)WdL0ARJ*hd mS?Aluxa^o޵*/ 1;9cI*?ҬoǾ *Qc dv=6A%S;i /˓Q\[\C6$(YP'I21K6WMn oPD0B)GH K^P^! e{ɏpV,2 4>eLV":(oעV24:(.Y@UWJ<$qPx '1K[zҽ1k\p~a"U6&WY' kB{)ԇE^^TSqBF<18W&v7_SQ9SvC˿0_Dz_*ő-HzbGYZE2SQ!Pg=/'vZ\TrbTtޞT..ڽ߭zd;ϏA95f!|&eEb{z;ըY.(AjxL6WeB'SVۢ UcYUP69ĶW0U]vI2ߑߛ+}U'ơ!55\ a a|R9XT5q H(Aa ZF+j |?QF/BA0nC"vC sajn^a3.~ c1B$n7ɀ>céFgY7qv`v#>r[yԍQ,C[|}faΌD1'Zs)/]#ECƃ6 B(/SךLr`+Jz-w+Q,Ib%ٛ+s:P˷6P]Tg5TE+O`POe|Ch3G|r|%oU`CÃȟųco2 yoSeM4' Dt.ēPPN v5˖[j&iY#:_\L:0KEV;|K9 {J$dR7M⍻axZJ}y#|R(j_jpZ#UZ5sJvA%}l~&#eZGZyF8yzqlˎ sY#¦vQo3U22d56u&9hl~֎@vm籝죴d_ 9jP|zm_6ku8$qiE4ufGCl^n^+>%2sM|=?ۏcR4@*%-*}^6Ya,Yͻ]1ɥ!Wq6\aVmC`S\r=2I 8HDXDB Sc-^c4{]-?zkNuT䉠4a-U pG2UR%#wV\1'^ɇkӻ=5Ş>e knç\(])U CvYLBLj|Z)#Nli;ξX:'HL5/yۮ0lGO!Н>Gro޾\]cfȨ(v[L;[.zm+jXBប6+`U9Gv!3X M^:bQ,^p9S ;֔8v7[f[^f>O$~knnp KLnBgc0I~4l:t NWo+'S=~-s6XkoJpq\w>TmuugY'*|[rڻѼAГ/2oþpp jaǛ$̨]ӓ H[4StE,e.0 ]v~@aQbxUm%S%ygչ:sp>=VAh^jrV*Suu)Rn\6|@BuCJ!a9܎t# d69Ig/|N3*3};=QRw_OTq0!h\MT3tܹxylDž+hBo2O {@v%@))jdH#j'C:Fq)@ek;7FIJuAiJ#ExpO p*fi!c4@[+%X;JF4Ϟ` 1>__Kt,S+&X\Lj|iǑkt +ʉn5x$55Y@BnjXeau!}%~2Tx 5a(Uf1 VۦlZ89#=kHDKyL@"ԆSюSbNcSp 7JESW j "tu7 C,$n,Qf^#buxL<4[7Y1S56֨pjtJ}s \jl= ,g5 ˉZSXѪFX[g %;> >И({rٜƑđUϢ΢/hTohc8c%JeAv"D{\ξϙnP? "JjBʥER7cLb -k*[Ofv)6Nb|]/$ eC) GK˂%x>k~:_> faG"\YP@Z㕖*PpaNV̵ML +'/*t."Lvv 5kr &SH:~K'O7 fd0mL>!$z [ {h Byc@U L㻏­ XqO tf_c͌Bo@}5hL}oXA?D[y>_%'Ćgo@vZ׭ -j>$TWlZ-r!zP,yż .b ~ U8k[pL6%^*Oܡ*'1jK)Tov7~$>p|nf r` 9֋eFW[Dr:h>PɲNtϡp?8x( @\܎G t~vdr A^`lTTP2hD˅p>}KC=-;"^(:m=!S5s$;{L=`TVC>vi˱IqRҥ(O+aBu iUJҲ  42KZF+7q z oCSk\,j@u\ Wr'\#^x|%"܆aއ^v"lk e.T-i(dn 8U`QշEL8}o3א*NV֠(1|MS46 @9VL}wWg:^Yw>r=D_ &Lz۲jؖ5ƍ&֩QoߤmE-vxXwЪmtڬߩ`mY965;De 򃏹 ~S0\AH In8W9Tx.yvI/pO:WJЙ@ K\UAoOtKOy@VػZFSVCrh+;rsȫ{nz9lJ.M*MsoD}j;?fP4JJ@q.wc!_Th\CeBʯ|o 6kG԰OVuDṀ?!=x#F*SYΡf( mOZe.~͏,wMZ|cY=Q9M֢ucSk2!4H+sP2_3γPX䡚b _-J|'m4:KroGL`X ?h&|ID$CoQWum JӪ.HpI _mg8 2=Ax#)HIv &E* ~6"=S<eD8emϢ ɩDCw. IL8|;î4qgɹAfw[m]76񷠯t-mX{~'-r.WFD88y Y) \ "1-Y.\<>ZqS488K>{ $5S%m7Ҟyە2BRˉZ((7S"P]@{gyaН8rϳ ג̙R$Bq6R@6 W;$ّiHNyQ]ܮMAx[Hsπ"qoLM"UA-mzsc~$9#GQ+0n(?)B7Ӳ2*󏥤-b)qIo<&ceR3!0>gH Of@qax΂ʷk%6L51wk̭j(Xm?8- ":mYpB$ueʞ K.x6kV:i޳;p*R}NѦIB&U mHiwfxG@P (d8jRó+wXs!Ϋt#˵ rAXz~e$ξ7w9i5%;KuQ~"t%  A +%C !97Gsyq‡Α3̮y[gU\:ڂu@NA2n`Ie/ZP$O(w 3ס%σ!9ﮥX'=Ǫ)eLx!6Y m$nʺf՗}X? <~'Yk30w YM=h$ڡ%R󁇽bpG,Nz )+.-uz\JV0U$M,A|@KYs'Z q=N9 j1B-QsX2.h9}\ݣė3 ӟ=WR(c9`/R* u|ܕ :"ذ־Hj%M::l7r`ɳ4@3WyŷAD7LL 5w >b-!¼'<n8zr˯TkiJ}VFH2U2:[r64] 1]a?[,l?,"%%鄴( ´@YOdOX:rNzTe 0ezh@ϮҽAQ`Q&,^DZ@ .̂6O).D_&#l ~$%'o`c !:0ID rͣ&pХh4lx7/CsѤᵒc˿O #?8L_X~:~Bu[=>bbH4+,wUFd[Z{6T01>~≶mIT0Sy͘\[Da A]Yכ'^^DJMl4|(kj8*"" TqMIXSSDvO !GLE@i{^Բ<"Ԍ֛`Aȳӕ#HX1OEۓ6`En(BԣCλv賯Gӎ%6zaVٯ-O J̈́*cG^hDg,r2jLH 0_i"tMw?Œ0!{ȵ;eFB{tzG5Sh 8nY~ DCw `4 ѷTr69/$}DQ(]; [#j{cRf$WL'B`_yaM#<"Uy[SaH!Ixo~9]| o)]".`oQY}"ῒvY7T h:8#@waOi TnHVaݱr58?N06-ٌ׳ʷVgcm44EqfO?Ү\H5T-z$7µ<>ӛw,9y(j̅{uq/?P v *{dDvYlSi񭸏o.- G7ܺH:q1`:X#JT0gػ%KX^'~Ĝk7_c*;eε0̉,/:sLOk(S\:Ǿ(M]ӔPgy.Bة1ǘC{+/bih0A d W]9 e c@FYҭv0|<Ȯ b}|`{1XH l?#2[:ۜs@FG2?8;,<9" `_= +RC\|MhhG(,$ DA'][t?XplӞ>U;o{0(a_H &w8*ŵ\YFݡgMk\ٌ^ų7 uv. ٠O As,xVEeZmO3/2!ޫM xo3>E@k0kMi?FëBLnDN sM{ 񒋏jQVhZ|fE,1#Ƅ&I*.-0uW@{(fȦa[1%)[n!oS?d9ב 6*)V'_BSG:Yޘ a++[H.vU9 _$>}vr-=kD45$kq;yWbNJguȳt(]+,̅z뙈N_9-R=g"ՑnAŭH,DN2h+Qc\94j9P8XU.ԙYjc1!:D~VNL֘gmnG BKCf7t "\4ț+]ǘ7~ )I x<NS_[L)'l#̳y7pG{;pdI@,`qJq5dInr+ڕH"bZRd9/# w.Z227E ʇxP|j_ uȴMY')+M {E;w9 =ZەL`ԃ$A]^r܈!gzexDgjQT"L#lFN6W!U%605xˢTDaE3sص2JF` ={ĂĀ[O՟0ʧ̷s62+=ν;^股=8YK!n$N@x/ѫ4XRtm>X" Dj4!ۃpE' Wrl ߟF@f! /՗ڭ19혟;r5 7wWm*Nӏ~Ȏ"S7y"5E_k9!]FV,*+0ϿX^U@+u agj7৔ũ-쇬 uSqe [q̓~{U g(r[ù0|mM]X 0$mّ@' _h"o#cH)91NA}v^ѾۻW st5O錺.TL(_g|Dg47 @j+x Ӱ<',j7-zz9qhk X%I]e+hm&:ʲthA+p^v@ J`i>(bi/bm-#MI0dPjk )4δȾnSWd-ռ*fbs̯*5= ^zP=X_ t]4* w40C>sy=}k hk3w-U}{p1| 3_U0;,ʷIOg#hGi ~I 1y%-P` << i n̐/fU Wr[`6ҥ[f7f̚9 =!\є6o&ey(A+vL}s%Ԉ=z$mwTKy .h=T"]OőU($ L͈?o+heAɺ/BVut*v, .24? ]E6|DwB> rݐ3kЗe>[ o.m EBƆ<r s'zcMoVW@dOzL7E"YSuciC=6|4s{ޅҐ;S}'0 >n{:Tv@j/?Oa8ֲWmCw; DXF tؤ %YdkvgQӨ ?/4V<:'NQ#k' ӞG<_ 2}?XCJ{寚ل<`^fDW,n߃t#V:#=iyV#mf8A" 9ޏXyDԌԬe[þkP28ld{*煟>[`iPV>^BҫKkX/Cj2qI.wlbi4ٳf50*r.ya(J&bnrO ¸(,M ԑ0,T<b6u_؃:6<缿( r(' 1 $VD *,e(>a(62Omk#&U l۔3`3hT ^5Te YlH&ثi6w?Lh\yݮ#j~۲6z0 G?Vo?#OYN< .-ܷ*`o2Bđ-u(?Y8j ޖRgmB<_1[֥:͒RԀ]dRߗ5D-SP)W,S! w5"T"*Q4j)Z/rB S&[uY6cNeen+8P$*+La"@a2 (){}ŷ<(ydOFMT=eNHn-#bULܞxI qv*5jbӱ;^44(H"K[qđZy`)TD`*u^jиKhjjŒ30 X>5R>0 YZEpi/data/M.dk.rda0000644000175100001440000024375014421664403013216 0ustar hornikusers7zXZi"6!XS])TW"nRʟ$!K{yN+,N zYB+.bObː*~ݒߞr zB>$VZ $ ΔO3b"iD]IGrZ"475q_39ydeD1(GBQpm^:spxI ef%~U$pj bN]jp1E!h!_ߌT¾{P&T k]ӟt.5B9ְӶlY[ 9og "k~-"T{ȝ\( lX5* 1bE7&vWeb xL-x1l9م.WJ 46# -b9td?LU&Ԕƌ=PU{})lE{oS@d)7=%WVAsW z;Z-byCzOAqVZP"5Ģ*t̝']RK$T-IlNZX&Nʆ]pA{mbe)Dqu݊fa疝/ڭΗ%*Tp/ N~g 6z=\~ ,X<3]ڷ6־HVo.2? 24xR,z.kxaxo0=E%`11 tI5BoZ3sH8LP)Qddke4Z<~{l$xKq.kU| s/Sġp2$6`L޾'56SeEUa^Ut< aS2Ď/ ᜊHQفѦײA/A6@gj&7W*ӳ1  'lYڢtQ#˲7ى%'Y)BtnT6̝?X׭l'#:1^ uko:A|3.)Iv!G;CU\< 9,mܴ1%0(ABxm,Ovc\I'F^4<2X)?pd_.pQ/ئ=-F*#xFӛYbjs^1'<0ݛ߹&FAﯼ+?: 894-y9e=#]UGTWQHp)K9F[|!,1KYB?<c6&2cEe맪qZv)?ˍnv?ͮDn!?|n87ʔ@ZW~Md`a=1ح3|"0==S@|ESdPDxe,xC**hfmw+! ``$PEh&FFT0Admo<1cŧ[<։l{J'\LUưSŭ+vE^FwMd%; m$ƣ(q!imXpQ4_ˠ-Kbˈ4]{6\}ih +N)ͤ.o629R=˷c1 :݀O|aL־(r(e섔":P1 lH^Uߠ^}M鄢nWtvcJŬuy8JɵbXf:\) vǪ>NޖW7s++cK%DTb`lC( 0ZW`ZkI6t]ZD_^Ṧ< ;rb:fr|<,@5,6jk3cb7e"cdF 1- {?VUY>G13< Gd|ͶLӕgbPqΓ*h^HdY+0Tô(:vBa+UURT݅pگܛz{[ƳH^Zu.n]h*64*t ӻD"qHΟԊY/hXQG)JTA "6M }sNP:BRU~8Vzf]B0e  @CkoeųnG4>9e{fӀFQ2JaH/2GNŧt\x ZW^-F FEӵܶxyU̺ oK If1M5-q6QE珌OCjLHX@N@疋k wWc^hƶY㮑tkI5Wszi%|Gwΐ"RkP[9&\* ^*>~5JQ~]%e #М\l̰ѰEGKa3:KR>x5o3W)NE, Re={B^ ߽<*)Bu鋲r?RVCcRN5Vf)giE-GF0m~%)ձkQ(l֟)XDo\\NA-ړD[U_@ԘK4_As o n%=h upaN1|}P 'yMH #淉ir"Iմ{_jH@ƹ8t@5l# e 'Λ*B6 NܮBVJ7֒Xʲw")Ď.6IglU-O1AxSDzϰ2֐x2/Py/C bYJͲ(SX#CD~xWSl{TK"| ҆0c-:d*47׶rCAEb5CL6 <8'(w`BTs3# xc'VxEp y.aCC+ ΃ ɍ͛p(3;sfJMy}>lh7^p3kfx< h yU?6%m %u|~rvv)XeZޢ)o;+[o~r6 l&r_eo{{bD+ޠ_FEIaG-I6+j1v k$Ro"E9cY&tDM1&>,wC#YA w@e *pJkVW9>A Fbغ&ueIMrvd @4y0t$ĩ'Wќ%ѐNtNM0Tb}mg2 PG|[.PgLu(_e[s) "NnlYOgfG[b:@Zf  {P.7 wr`lgՐuV_+ulr׹{f1 a`/ | "- art(cG- }L ;>xG,SO?r8ON,KYV '(_9)BpЀ8GaNHhtʊ$U8pʋ]ڢ_fK 6I?QW_↯JZ Q)N/Z臸ʠ8Y(QYqmHe]Lv(MmjT4ǻ}Fz!Y:sǦ Rxp}0#jDTsvȪRݻ `F <|ˢ|,PB<hgrzbuo0J3Q2 5<+fk >R&Wհa_EPV|#VғLT+uV{nly`& 2kJc}>+^؉c/xT)DyoZ Hh\z]3}߄= /xx+ ۉ@;2a:2kL!ne%D(ޘ&fPABuY(LU@x[NVfe|S?JwjxNо 4 A6 YXVmwXO|B[f_u?˖S-8o|w,[FQ1ޮ0Sx7+LdžU@OnmQ{5 qtr즖˺Ax^*9  ?cF{6 =45Τ{i,&;1RWgTM0K &QUÉs9כz0}BA5PQd%~೎ȠC U+.㼼sC|?oXq=7Ӥ#3v$pDb;"3%{⠗[UɩB M 0L*ms$[U0va3qp)b.r~UpШa%_uL'x1,";m32RɈ%p5#Ųc&7'|Զ25;tD& q v H94$ E$sh-v28@jo\T'7q۰/p4(_yM,bKipy FjjKwT)7E Oi( A[/9ķՇ4*/ 8q)eu#W׾);҅cY9\C͵G/׭"t8}-7P0hu϶X d%cm+p3fEXTz'c<6_dq q }m]?2>l~ 8zNL<ӌ/\'fcT^[a6/Z"q69_+5UqA<6P%Lc( 6)# N2Is1dzU.S Hc('ĮAV*/QqW- a0c6d؉X6DUHJ*pEԈ*m oFP>ZsJ"H3쓿7v++Eńԏ3fn/E2j78W̗k,:*Ƭ@/Mheaud6*&S:$Ip7/}glgM舎,J!W &v;>kqMXU8ˈB( P$ B@Ѳv* X*xAn֢(Q$1|vClpwr䝪+Uz<FAevɵVN@~_#Cf{Jp Q]-P x&JҦݟ}]2sv ۺz-9@l''UD7y˲UjpS_gh᠚RΡ9_6T@J57uFl$qoɯOf};FÛ[ ?3WGE4<ǔ_"C2 r1I~ Q\uRsf<&i*krf h$Pw&Ű9uQr_]*i`-9kYXÕ}ZRKaн2w|Dz6DBe(0$[ddJl)O];vȵ>)W Qm)7pePYr]NZS茵)b/Eb3a (箼_:COAu;2F37 ?6< $~-2c#%j~ɓBNQ!Ia&HQnݱƿ%LxB%x=EY 8\;8ImkP@L9+nc^?_)G>8j,@;v6HNw-#:I[32V=~in,j5&E\r2-*B3Ǡ!ݑ]_yɺOь:eaH[㯡5C`1{_pݘys1Jh{$XЋ9LH Cc0WMvM}W`z\5,#_sqbH}F/"/) ۻhke o_+Ohr1\Ǿ39T0`o0?T*n_^B]g4OGtd6V@5^yo$Z5$!MQEBerF\V z #=W\AX tm,L+I`N9I!My >=iq緐2l*Z@fٮܔ5ҋ]Z_ Kdj&xB-NUP3/MYlyl]J-Y ءN,*֜tG+]Q&3_?LBԏ_EV>sA2l8|ǒ^Q(+d厬9ojLM /fzΆmrq9\ ϲ:]߼z{`qt2'Fap{,l~%U"t;1Ћ"@k۫plsM2iuJ؎2鿬m ,-0T9U]C#QZ'<y?2hO;S`R,|m$]g2QISu{܉OzL|ËVCORB&٘8q,|ĘdApn5yy ':fzA6 vd?%W$~#qzq5~Ȃz>2b'b:៝0 -F,Ktbud6 1&5 / &g˕rkZ EBpAk9-996Ae!tSw7g!yyBc.,cvEE7Y>5q_pVЕp`Ib<k`Ьɪ}+g%sGM "ʳ5DbK2ܧhcDg-yMB*%MF()Z:AؚQDGv1~ti:b_O6owtr¦ڳ ǒKt ô mu' ;ۖOh}sG :|7B 3E%[3L!F\_ R`JuA&amic #@;l x#?*hj#.SK}R1<Xn$z2bA4nb֥ q|+r,pYS+{hα0i9}2%;h?WUvʀ cۘ19TZ'bgF L'Adq/ڇ8cBW+ȩoqήmv |;=HH2AZ)Nq_860_uIz`F;~B+"W0WiLyXAd5nb ':P{цB>ay<A3o~1@Y sw}n PaLDhAP|?&Qfo ~N--xhE68Q)E=2S's+qwoB4ѝhǯN/M^oqeݔ9{=>ktH\)> yn>YZ6˯ a'Ue<& +Ӑ@a4!$kZKB<Z+7` :fNb+ѷq"H5aUNJj]ra{0 2CAuW4w?מНBy}; wNh2G[xћ$F.e^0;:xJ`;]F'8cheN=G-O~)„)P |1m%;> @ʣ1sSG+މ~ %"C͌m  īUeo17` 7gnTTp0'vΰ3QD46m`IH%G/L nIţ&F>][t59-&(nu[ ;G^z7&!5C-' S\c߿؋,N2OᔆqA쑓GS~'nʏNjt J$M6>I͞p9,7&\U_LA#" 1O $21FՏg+ef#Q_j:[0?ȹ?ØFv]h,&v%>!jOI^3PX+WN+lQ~88'Ѝ"K0,2}ݴ1x06δ*bCsyR< Pm[BU|>z1}34LSeb !љntڰz[!WP҇7һIRN81$:)w=IءEMlT&&fT{,y!CGo #O$A^EiZ0)_F[T" Y3Ee.~%m _P:¸P?x.9}PiV|\~8.aziE7K ) qMqᘴi%{9mJ yޙ+H;ojN qLxqlȖbQ[Gޠd861ubZZSmO ױ9>axv9P\:K}/Jb$˨#V_{%~ QHD;{v;o*zCY)=PgPjrms4Dkc^p/)\&ypGF \5?Ijgy043tyEV6bO"щ34%h"ju#4R88Ȥf:#TD<`?_Ope?:XˡTar: ݶ\ƨu,ihؕuj+@#F [ܻp!WPUܢ+ zݽ(ȰAi/P9˴8 0 #TCR(|vIWuf\C22$W*"7}/`+F{l<=7g/:1k0JEޕ qV=`0ե%HIZNbKj; '%j UjY4̙QE\Ǥng_QR*&hZ><"0`:=AT}zi1ƫh&gB&1/uxpu}:c'r <!q kQ.|{F }[ &p8n< ĥɓςY'm32e ,H27lj*Dst/ĉV ]XG%Ji]F,v V!%M<#.eQj]9э&@lO * %aM Ļja11.e=(h""OD)ğ&"Y#v"qϫg~|\)Zmt*F"h 9AVe ŕ~HĝoqU|;25Tي 2~$(h1ѻgUְqºSX!a2X^۳SÁi1npf0$!XK⏛Q%hpʚqkmAOxHu7 \tگEs$(0pr wGNgWr lTߴw{0m:܃;qSMIL]32+"< zTZ ьVRljègv}-Hĩ",0 ^pg kN13ůu#tnO ,)f!`H"!*,M\.FQh&YdԾ p<2p| Qn87kt9GsB6ǥ BvF4dibkܼ0|,_ͦ7Lf$6,Lm"m}.[ uRÿ*ő\A=׌,]¢ǬK%~Jvc!(ʡs<(b %*D˯4Y%?% p H7n(X=[ÑPzJӘ$^&LbO*TL3v1+[ Q@ $<1E:04 L2gzSelESRz4HR'7Odn&; L-,>sV8 "cKj-ZHkM Bijv(O|!A$G@)4?Ç =|fwE-R,B<'a!}Ƴyˈ l`CDP }uDɢ/y BO.+f$sOS<֜YeT%\;ɧ`UvIᯁD^ƾ[3fsC@wr_ouQ&oǼ1,; H*i a)rHM Bk}hR:P~V箊@8su2Ñk6G)3q#!q9h׀(٬>''SK …I C"%ueN]z 1صC@:S%FӄTP&bZ_GK8 b=A?10ǂ%G6,T:edCvИX>}jM^ V^϶IwF>p> NwA2.|a$UuJl3}>-'r(aO8wgD_Ztsp dV[Gj\wK% _(8|G}mxt.hJU`hsTG R|Ž ^ncq rT# ȫ\a&E/73V7ռ.e؇bٔ39B˰o*Y*&^WMJgݐ· $GĔ`2A7 ) ajL]>9?VE)5*IcɅ ?]I'=2Ix콆^[:8,;]ZiFU'/d&TLQ )ܶȽĤF5$9Y$;I'ȴpkb״:L(FKuRf4vW KGtt"\33ǐ mʛEAΊ*LF:+?Fcֶ[6 8}hr}XCa05ձEӾ~@Է#K8%@n'U4S<x@;(@5" KL9Ts%JWM'!_9%P"fYwWNJ|VN0kqV*Fā&N:t =XH tQ6o3RS|2Aޑ~jWӰr&W W n"-@OG>7w*Gwlxy23s=RwĕGVr&UNk2q\™׮1q,sPxFsSΡCY<H-J̸# 77[ f3=j>޽˲H]O>1?ώߍ"Be,CLI9W1]VtAθnK?Rb$axEHHVC*)1y88~u(ORɱ!B-"(Y;.56YN%}K'CQ ϗ,e!'qJiQxƠot72۰y؂=4i=Qm*s_̩VWBy%p :)8qf#Pҭ6d79S@bJ4U}ўmUDƠ؁`77追ϲw.:J#yxLT5t5!Ib>b6~+c3t^B^h8,vLXBF9Q?ƣtLd2R(q #x:%dMI IA2#CA6޻Fp*?YnkMѳ(C"Ӑy5UOzg3VWƖkKhNYhzZ>k cw3IhFϲz#3չF#)x?(ko޾dfapwشJ3^KrNsrLiHi<ɼ] FâK"lW!AocDWǘg яqVrA6sGzknSq7#;>bކQ3 u7T1 =|I>)QpQz D뤹8a%]V"B- 9My+iP.<>a+|z̄P:}ߓגQFVg?:$Fmdmrb'>V%9t:U@")ڝ݀#Ϲ>\jȴ-ةs$+.>!4íwbϒ$ZNrPD,. H#6Txp!VwHe7nb丕z%]<4UT30I5?\yTF An!CuS uͥ 1l;} "Ii_o$CdC$hH2~i}a83.,&֍Y.3 pyq= d+%a$P058re[aWR\֯[#|X ev¿f :RsE2m#N,lMZ6_t& );TO ^d7f gEk%hw=ʬ^iѨWGGRc<Ӄ(#&LSUt5<'/uƀ -q7ye0V٬$/(7l:luj{3Z NY}xlT:ϠFB*2#S; ^na3bw rPCf)yΕ{LFDF7`.$t`Gշoã/X1ʋCw%LOB{|\¹~](FuR'4AJ28;al YsZ݋'OR;)?D),r=[%owX+A@ka27 qWw=uCܿs .HrML3\XX]aڵ.+߳5'#pckQs?!sZ@6j ]Ie« !)6|`h1b[TfptmHΗs8xL`85m4z@= LLP[lԤiDˤș0BvS1x47EԒ&bࠎ)16ؓ{婦&$L'W"+ݞO,U #D+j\C͹L{Ws.>")W-m Ed0BξrHaԮ_Y`LNwA'u# hϳƚ 0h>OPa.nnc>^ƜEN$G[%*"v:=2#8@Mqmz: *t !TE@zâ0;XǏOyʞ}֬a:\%VHoty@:E 6͈^-ujUVU㦹'x%q z t0x8Q;6H:+7ݻ2r,1FeW<:k\c#7~Å,"K*J F"&;W|ky,Ot%cPie\< QA+˥؎h4 "T}/.'LR7 5Y" Qc1MSpQ܌i1Fp'^"Rk\P[UspwYS\Sh<5Ġ~|Wg]> 0CQ߆O]0HS2x}P]q*LbƙPU͘an3~JQ>['IZ o=hws}`'+jұ/Y4\(@:5zJC%Pdbņy_>H@PԃRx;FI['(pHGB-z#xȿ/SIA.iZI=\fhfI?gI%`Rd4,*MON秇[Vx#5hJa:))J1@ (3v0R>SS[ĹYP恅 b f)wL ̍rB\xϩWqn.v/?*տbWJ 摻Ô>brl ?O%!wF6`#ҊF d phJ;9HFqVRxf*[iF&![0=08&}9"f0%3iČ6Vt UVlY7u.7n>zm+ZD şɒGbgmi)Ak (b3/E(* =܆!%.UBU τj=K^w\{,،Ib\!vY4)eY[GG f[G.a k H.?Bסd/[v.rf18(2ą騀.N\񤞒O;iJp!68ӞcCI:+֐̙@ jKvV!,6Ȳn̍BjZ>\9R@4L0wQx urRwp;,דœ&xj_[ N"!Sv8JC+4LP9Y")k1^,2ra "X98Xn?C4Dlxa#tMI.j6~>um-9.Ƌ|O ܶ]do%}&b ̈́3W$x-YPs媲/ qcK^UHWoH,j| ,]QOEc}3d lI擜$<v G(?HW?IF2Xa!pz"#BR۫mܻ [eIK>)$}r`75=}WH0** }I]묶\`$Dh+K{Ё%E5."dΝ,w_mh[;g,{ye\gd rG Іenp/փbS)Y3cv>gv&Nzw;=jE}gJj}!@{moh-EGϳCoߐNu5̀" <9G}k)zjGCf=x%AV頞2EQq`Έ9q.ˉ^^:Jt%d|=o'qg^Tk{V ]%V yLV$E6&B ?'K!dv^ 6"m+cP<Ngڋuu"%!al #|xͳ$ BTCZ,bCːZW]^3'bnAï5>OoF֋q JѕOxϢ[5y3tTBoyH%l"?ť._O@݂J_ gY 3EUΜD*tƭIC2&:s³ rYo>gZLҋc@i}:[gL[ R];?,p1dvkLG4#J^bjn1J^]mRz&bDKYkERp!P4bNGsU<[X %Pz "dz(\ mLD% Ft ђLlm[B5)E#\b;(x 4i @%\iJX\`)˛ZWGTnTRv4%&go2kMO:M<^; (Tݎ̅ OR)IanWYY6bNuǾRzĽq <Ǚ2SxEyc{uU;r_g{n:.{Z3υVKEx\)ҘۮG; jmABl1 R3aL&>jz P;]؎NG\j͆511VD܂ڼλ@_O]_- pT[_W`{G|= ?M Ys(C[x9e̒?`zµ+v)I( 3ܡt 9M>+P%K2Lx}NIC pqwA:Ff)Bn %!8 O>y<(hUTк?u{*y* AY\7([=y*[:v ?UU &*Yy)Xd{\1dV03$}렬@L#)- d0Kʐ  H؝s]2l`0*MIȐ4 PLǽk&n3`H){d^[ŰGS} iZ +X07dt^uSk֞'éjR8|3K"z;UҸ."7#Zح~(e|h-8]!s(9_ӥ[ Wnf>ٲG3GXp'DKn]-q l"J66H(tWiafWy,p+l:͟d\Q|VfZj)8 VMlg,H5:⠶c%&!BaS\ &CG ~đE@?Y"A=+ukBفI.3zIo9m>:f/ʰy0"WY\*n{&mcQV,j?taPRfP-0alɱpGY-Jb`͒( ~TLRnK\gf1 f.(z}P}BUR(WdHvwy9q1kYғT%YG8GC(N qvlsYo!V!7i7B-;a!S|9,8=9I@dPyY8G}ey:dSXPOdknjrN;wK~6.@"P2g}UPx+s 5B䎼}_+թr6\.Q)&T>Z8Ki1*SfQDsABiiJνMnHL֦J5/bmJeF!0H/VxP;<& UkL:u;DX LԡpUmZ9ye.:%*emc>F]ǽ>1-to1N]z:?7T[)W*bS*Kox~ilҧʵZ(B-8LN04|U lu- b& vg8 $RC73#sI䪵EUd9O;L*"Q3}jc2gtgB'73Kяg]h\->K , wdwcb;'(xZc! G@{MzhUyM^{tj&5zI||yAw2)5//H3xziܩYIl ¦9˜ꈷOZ$9Kl~8gW^vqOP/"+Ne+&߁"FkgWJeڪMz.&>'i84k5t\n΢ZXmC(\ ( ^#z0*CpЀB5^&KPy`x,Ņz6B_ o\%9et Aayt)Y hXQ/nY%֢:㦿\qx A2s^_kB%(_0i2@S/4 (CA6:xBs5`cx>c<< & "э+y] ?=6_oCeO WR4G82fX̬CJ qnZFxvLa{&Mc݁XxhD2تa{enrw;42@''*sYi{T Ngwhkx:'%b!m|qVQ.3/XPյ^Rs  [ٖ?lWdΙ5uI>ld|ywPȆխLAFy%286gKDp3>)mM&L˸iƳCul\_~q0"@5Mfh?\75fΏ*JUE :tu7| ֊v=r:̑A~9HZ(f< u,J2?3 J[G'G/qdiA/\0={(| g4 `[ܥ=sHzpۑxZ]Rm #nktw(r=3d)|fq WzpJ% I졦,=P(~[ÈhyZ~m!3rCPF1J#Itɋ+&Q6USʳDi_٥N\-id}Lz!!]`BYH ijʱ㔕{&,fa.)'' X3tBh-1Oc ;ׂq-eAtZ^:!Ha }y#m,jLj l? :]Ӎ9gjwpH0hXE `Y !lIL7ɺ2'mI{-rdܓcF\Ror0' N%;@BSr/rҷ)X6Yc;b΍E8'%ReZ2ymDY !ZRtٹd#=[/{DžĘ_]w5 x6QwN&?)L8  p <A;:,`!x(e\V eN-M[B׹L56a^1;>W4H-YMlfLyyEy8yl͓dn'gy< RtRk ӴҳB%:?(پyj1t " ;7\yJg+0,[ (-]2p aO[_܆,D#mam 쀲%\rdWYNm ^T1S}]Tvp0D3t6씸<3mdSs}2=[zb*] B\Z mt'!r-]נ9̻Wn>4^{MXť?]/jM^ *<5= $)zxBgQSBL_m4<JkTPMB2;gҋil]鸨|Ǩ)W,"lPYp£G Y75+.Oڰ^DHmǧ[p;qb~qdҪ`gf-.tDYHSfro ?RyMLܓ{z .#ȢphDȐ!rxե6npUQK -}-"8Bw.DFj1 7|.=szM z'"{MZvrt_$G:%ڒMv] j ͡yg<>.R#β)1 `+‘b&A hi桶 s.ߒK!neLHBՙ|vװۯQ߼0ZC|hGv]/e2%waQ+qo)⓺2mMLlcM5z, Y.t4Ų%MT}k\u:6SF)>7?n> blvFR[H >6)+?y+qL{H6C3mjYg0YIZ+ 5{hD_ڥ'd|G& 4(/oCSe? iE~z.RP6n55B߈,zzBI(@zk~6/m>hũ5=狾D}eըlkV|6E;Z3HZchDъ~]ciFռ[i@҈I槝w:]9%fŁ! Bd+2%fYXsnH+;.)t1W`jbgk>$HgY?8#Blcm`[ OnYˆ"hYb#5hؿ}3-ˣ| Z!]J*Kot>L! 'c`*Yo۴r5}r!$E D7b~Hi#c{Է|FJ9]|hu+?PxqQ]e +WMp}$&P ͔x~!5du5Nuz!k!色]keԴ}p&xmf djD{ zd1e;;:F}@' Io9m*-{ҥ&^ $Q9MJ['uNMf݆_pُ@Paҕh9m,j"HV2ϼ`34YQbiM5q,?<{@zG@xNyוoٙDe0YgMVmK҉6L筠V\.ʧ (x\W\ yFj^ľ3,٤d|&}2hJQ(Ijq a!}sn{-+sr=7ZbtlKEK7+|2TQ-N/﹯ 7`rd{L7ߪHz HazFqffqad'lGhu+_RBXiӆM[iP3VbT q1_nZl}_ w^m{QcvYTJV<~BsYqdz◃Q\c:fƆ\^i4y. OZRBaC`IKW& 9Ȉ1.z x.`ZB[ҟtf#_.HXowAN*@fa!ڲ3gV9¾~sH|WQX7nr폹 VI-XJKKi!& "Z?ԁ kH`ޅJj!ţs3%eL[IHe zƆ4 %Ѣg pCܣPsZiA'| M+4uO.QDu;Tg.Y{57k̖W}·ae$gG4梕ޔ6ҿ hY` Nw[';]Y%anevp9K e,XДvwb>cO{BL"A+OdYwU&$^ՓNAadNÐл;(P2"l$8oTk`ѩb\SXdAB@)Z4 Sy5BZDu@rnMTyޭG}w2z6U  ^|xF*YgRhhdiϽ8L{JmTH֜Ⱥ ~~TA9\MvUyH5AaT$2Ȃ S |ש5UwG.bdzq+(m ǑTgYH-]8;2D9g [ڦ|nn HXAd{iO*)'w]=ekzwwOqrA3!`Jwor )Nۯ_H&mAk9篒 j]fq 7E+?`}.]D?ɏ\C%ʔj >d8ɣ=$]G"ns>VI(Frv9~%r[8e.C,/qYG!6:þ!&SS׭iL`w%5=@H-+%f|Jʻk"d@|NDjO,F -|嵧lG8lM{>zM3E8h_hT_QƟ, :01| k)J\1uzC# \^ީJ=!ՑFiAcpCDLK,]-E-~<_vuMK#̔x WVn *Q#ȬNivDRy϶nL1BZ\Z伺J?.Ѩ96؟hKԑk8]dpȦ%0h(B"8\DGUzi^T1_?6/^rH~Bei_W2Gn^DQKsDqj$e"-1T#g=z[B{O;Sf~&d6 M*HV 2Ԇ( ]oC:Ұ mttKtq^a+mcg%BG_Ax`VQWOI=>"~"ppqj Ӣ*\7*m(LAL)lEq0xiȱ!CUs+II zqFm+&#-, ,췶 ap^ſE+7|ﯬK$qˊ. xbt!O̢vlKjMuM*e~ kS=: / A+^l`omV(p4fm=ljJdBޚV-y<~SC|,tӚ{hݿiTQD $$c**Z2e&Frԡs|Fͤi5}IcdS[$R0i`kJ4򱀏ׅ&&AVpAg!D0qq@174~>LЯjP+߳S"ňfpS̉aeARB%Myf8\=d]D"ƫ_I,ʶWJjK^둱4\ RC@C|ܓQ}WŶ/maGJ3?W͜< GLzؙ"R6K;@54g!>j=鑝s,vӂK4ȩMϪ1Rax}]<ӳ[Ǿ?N?¯|55 A\K=-'7zs⮛eE» 򙐾Y㔑EH~8HSܥ ?cW@wN ~]AMCLlt/4&A ]]K12&(|esi!GkzE'͈ [T'1R"07C"=4_,6xLV%b ]ͬ% P/1 K8{p5oz;\<<+mhK|m2w棟]G^6p^2Sw}ʼn#cIY{Tv%#Xa2uShjrP-_9q;7 k2U (󍇐} O%f XkG7*=+&@"; d$X`q^}b{pi~1dÃyPtOjtûF%4,(qTNܴ)/Fs9,ʽ{I71| KKL}}b)dSE1Etv'y^υH#rpIADK}9<0I2`ȢڞM_Τ& ;oF8]X< M~ NF]~|ºC`4quƖ ̛"&,+xv1s7Sc_4tT!`ͅ;_V؁,q[{$|}mpR{BixU9F U%9ۄ5Rܱ+ }O`j7IP=J 6=V"=,q~Y\Y6`\yjIىMrr`z e-Ϲ1x1:Z4?U @u0:9zsWޫ`=ߪi6:HV2j<;$ P>VɩU(M GYR,@5U8Ơ?q"jO:"1.l4o"iWl&fȬ26 Jmeh4^<&N4 #=:>Q4^\K4*bD~T'DHn6 CGءͽ\UJq$rDwn|a#. $X$4=e^FPQAXvaFO龽>tמ~ϷFgZ }w'RC1l[|&[+tmN@= 47ED [ A,yttCjly@/NY2mY@ma;,s(*bħcV'b1KtX4-:E|O]6ʋ(&&;[#XKx+B@?)o uQÝ9`h[)y5 ʢǞ %T~w0е WJMz[0 e"KlF%Yy}J gIѤ"̚/+,f㳘zT#dTItacX#dPB8>g*k*UFq^czC]0<Jܿ8NSxb6~8"y=hմaR8L!>pÞbh/"*`T$ל64 *:La/w`9*]  K~%2?oVx\N6DColEg#n)&Z[Ojޓ(%BbÅ ef° tLu%Sw6>MP>\yCmOuL6݀#&>PU. c CD΢x!E}P|߶ΒfX :M(Bz_&aqVݵ(Z\?vR=m8a=f =̌ n_ +3ElۍȨz( {qOB9JlA'}ye}\~iQSqp_fN.5].~r>rR\NE/?#G<S9dz'AZ_8f/S>2En85m3;59r5I" PЖ@[J,YOhXChi ua2;rJNOغХ#}Pu ,Bǫ,'t*vJ,X4.jtL\O v)lL?ZR<<D.JBaT"0sbnQQeglDutZe=w]+F%wO=_4DÕGp@/D 6ԑT,gF. d g< V:z-F#h8?=lY>̶溟0Q fnv1a=@9y'arގa!ɖFU;H, ï2%[\ר̓-jk_:h˵NƀXƸWeWKSh58=I36qPA|-,W_A6{CZBm ۗnXRBJGN-;K**0i!Mn}P)i)[gD|FkЕͼ@j9êw\r f?A6.6[9Abʫf76 h:;ו|+G)5BܘƊo#$%BÈ&X3E8|X&]k΃,Qg#jcNH?)Mlc2M]5='9|s/xuutT ]2埄;ޱ:x[ #uIQl*W2鱐F _^gYS/ j !3#Q_  3!wGK[or V,y-ޯUs˓j3=JGw&RdbSJB:L#E$FHc XpQ.,)hrrڅfWn6;K1 -cqF#'ʑ]&Ɣ@ /ǘ*K| %{Ŷм(bTczнX]Gr*#䋷{a D42$3Su/XxRxcM%ŝIfo U;hfwW_ .GEVr~Tr\n51(5[UmR"m^%YJGLqFկ9wI4a6aw:F`0ZG""Bܢwf9΅a|=ߞsk;tymF`wsKSM>56 wFk ?HXq^v%ɐK*]o8D:>O S򺣵n6s(ؠ10LBNpYלT*d>څ & JaDv [ѬMak`Nҍ,բ;~и(f[,tbRRrw%MbSOot.N7Il`<æ_ >f6?IBQ[T 8,(4#wjd,cJ;dMb@]l!%׌Ίl0$9!|ʕ #+ra&[o[*.D8p}*n76ZFtL@CEGvr%3.1B#!| e|s{Z%LN,,hJvy pjYg(+%Afrzu[# H_ɚ!_ɌIwF]ڲ "a0m$J \:8lPr;ǮMmqInm-Ab10H7LzŪNsEv-/?ZjP'stf2yRA 烻~PnfwFFlgQig@Ol Q\iDs*6-*zO>8V>"N6ʍvp4>Hh`꾧JMC(ETܞ/pugԺu%UuTn:Aq6@v7qr`{+)5H%_0.&Hq*r&ٚ) ?F^ظ ]p퉽EO !`L?d3 6@t-S ^ {4Ț~ytf ;@$MNQ4X#i!Oӱ_}Kjd.lK)$bʞ!c}#"C ƍL3d?$o'-T}ǝ3o{MbETc\%ϛN(¼C:8ŝEQ hk!o{R*gؖl^+@?%69 m0 ถ΃kZ0dyRPt=Sd.Dd(, ֆ-OClEJĵȖ E~0!R"ޅrbDq,@vǽ7G;D/:f1G+s``ƃzGUOY=Totb0$IYbeVf 0ѣ]T]ڦ11V t(~4L!D*D8\'e2P`>=/E90BqpьLDjZCk\TY)>fc7Ŀb_p!,/jIc0 L #2 eOlR۰eo 8\}RӶA,<}| M)AuxB(-K=ãC 9勏[Q ن1sR ylX-K4 VL]JB11%뵞,ȈY[铑,-:<^-v>-Xc;5 h|3Mn@rw >*dC6ܳP \..= JS#=/誶&j_xLȨ:壵VRkU\H(tg$L|q?;;V=дQ,ѵY@xS!`'K;'Н:d!1'(J "; RsCGz0u?a<RiOt%&; fQ0 - DWA!Thۙ79yN1B-,Z BVG Gge! qк؎9rL ;~OLqR3#ۙd1S.5v9CPF;vMe>+@zy5<wQnY)y 2 řҹ ۗ'9ɃbQUԻl( ~զ𗬁 f;mlR:h c~3T=MZhڭ]M?u7 15E1J.L"HuP*{ݕ$aH@$ +x`u ^z+U ?^Z?3vHh,گ@e;LS2i Hh̦0|xҹ6*Qt?<VjnPԮ.luN{N: NM#q;kJg\^xt~gϼQ5B^Y!C#|w?*V-N|lGD=BPty#_ZޒmD0,ʱddґW7Z ?gdG\sQn#ؤI7_x_sUsbݭ(#wV^sD‡N8xjcȯr{no#(DkL ;n )ѱ/7@*DsniތvưKndOiN1h#D,no] .lw " :.S  OgŎ?40.L>h(Fssv8CN^K:L2| \Ud:gHN14ul 5 k`;ǗIߺŊq߽)y*\4D`Hj9_cRÂY \Q\`~V@:^>ȅ7toK4I6{Y)+3Ұt @.Ө<dVW1! L>9dPz::: $k9:F y3,쪵wFw%TL9€4L^R9¢kv0-CEm y|h!P& d#]O.e bI`avs !pqJVUt:H*.%Ư_\k 4=vx[h sAbOfsN2D*psb:;/JY|'#3FoǶywl %<h^Hn|eij4GZđj6̰ҡ-X BX_c!vt-c|F\!BbIJT06.Y(+pv6q6%AtY;~Y>xH B[c!kdvSЪT49G(~J|{#% "k;A(i7/~.2"nܝrwK+_)1M''VvK&cχ;Y0g(N눬Qd̡xio+N7(]ܦt>p)iwl*y&0>Įu >2&䋒VE 7m$Cč4W],+n# 6!7 r>.ja1oOx%ߠۑ$g{_q=]8t:X Tyib  5!mo2Jj:5 Dӓt=tYn|Z`.j$t@HWf!_B(-g,ޯIz|]`sEg*$M+HcYs- hn?Kq%%).eq0Um$51 $p9/uGz~ !ʿ1uctl+&_Q.dKiE*@E{J 7@ ᇰ*2 6lI3/:E^#*o*lx JsLc%~ t8` 9ڋ2.qZK=J'*;pѷz6;h-ֶj5^s*/3¿x$iO^AS$6{l;˩4 u'/˳G*49];ȮR)ֽdrk+TǬ#nPQɃ󣆏m鬁) Ej} U'0zod򽺚.l(Hّx Z98 vp]\oFlgwʶ8%5hAsN/ZtɊ:Y7ԴfO{70 Ts…XTU8h{V{mFNPL0 \{/zm"̪\.ˑ-IMy>Vz켼~ eǷa43m_t*B%ܛ]ZC#K֨ lFH}魲#޴|887tByI\<%*Kڹ 9tGy$\Uvp1ňi@*o[!Q*?0bӴ^Y(@,/2Q9k(ɏ߻RMljӚ%,SX$?w@2Z=^ /&SޖiA2QTMBVA~5ϤX┉ tM=Z7R)zߦ3e8Ư\ `S J-,?Q^J% S}C.qA^PI;ӿQXjsxw6_hLeHDzEa/{.A)Ғ<;Xψ#!!1HnB&C/-eL.oeB#B7kqb\aq W+rfIVW <}>&FU@֕]y!È!RoΡ-=մ&[.t/!͵2Ț3hC|6@>-&rht%34xlXBF$J]yH]TeU5Wo0&@(QF5|@w947N/]^]f^4p0GTJ_tutJ^hLk5ǡLQ Ɖt6D#(rRcPac?l-Ր V?<#b6q|O0) N"J j% k3fCnC&rF9"E'(f(QɡI:sډfLg::Lc@>d$ΠK .m<9;jM_AA: ronRkLEORá"Ne&o'eUڼ@rٺv(؂k<*.'W\2hiemtg&LTn|Qb>я3ӁEO%q_?eh$%kD6Sl| MH(7&{egR5='j27N .UƇI:i++IYO3ҳ\v|t_#y@dy6oat8FzRn%'r $ $_1X 0vkP:5qVtg}7nݓOsj{]njvkN(\&&_LSg# &|S20[1)Q_fM%^4Ӣn`Xؼ7FL楖?qϼ?+^yg–gh X!oqE(xp c@񀝈/ 8尡o/=̒Ǖz =־2U?FEr9 /eC?m72$U fZH+ۃTC nF5/O7} R>"B ;k7'Inͧ6VK"}~$wa`]x׺$ ja^oARϼD19`:3qɻJJbښ2+W<\N6)uN1լX]@FdRH#Ö$הA229;MT*å ^^6P(6+`ՙʠ^n} Lhh ŕ`3-: mnWzw K(qi)ly/E3 ,ez~֟_t=2 y7C>9ܡKԎ%_⃱>j ʎ_7Q;aӌjW>3Ak8/ޟ>?zC^XyC6gaVM iq$CAć+E2[qv{:է2ՌQA|bG]:= %?^ڋC'nF2as^%|P,+) 8&R(jx&CosE/wp]glmAo둋OiհpAs5[쥞(#x ? rAKl`$ػH\Vԏ+qPgW{%Lw&ۤj-F}l`J#Ph4 E+b̲NTq90MH?I>(ǣ'5us Z ؑ_<[>b_C.<'rM,*~ʪ1wȾXkkWg[l} }i0e U(?S7yuLk>q_OU%}J==%<ͮ'LBxN=m4\&Aeͩ.gg!Qch?c <P˕Drz 0 8'5U_.0IM#r=]JʶiW}ڒg3z `cr@M>`Ik]4컇JV{zR~N9/xY^NϮFc)eټ#".]۲b5 @KJY?4 p(xnDPwܛ M8՝Z -e|O0*9xr[ ٹRJ SE+/䴂>yLfKJ|B<е-.۩7&ゃYȊGf0լ{5CNN֥3{4Y%a0yȣL 3q:4joҹrM%Nf`!)7(rloVopK0ޫZ3;RҴ`/^[ƏWV(}u1[ۡq]zwkIhuHg6uU@M5)My1&UaxfqONJ'NB+!бMޯ 3/;fW^zoy;w%ԅT'_@3XrnHk(ކ>ɽ40}O ߭e6U"|n-^*Tع%۲nBqQ~ y;p~"I[@5~J}%o$ @3-`$+%3i(x$rVf0BꢄΔn+#6"hW`H\L.4~H(w4|YPfk7_l }|$H1>ub?~i Զn{^6]Аe ״-6u5٩~ \`\8O}|E4 ,u_um'LN֮ 5+n$&\XPJaRݳ`1]l[v; $DF?-\?:MjN{s˜u984Z 0$¯3)D|NjJ^xaΘhwx6mȒ@[9ZP.F## .n4ykr?ޫԟ\ ,*D /퍁YWy;Lpji\4#@\ajხm9M_q%ENN<#/9ڧzwe΢^cDy뉒\V6a\]̘)+0$:Ш6uy$wv鍪GjV}Gu4YMϚLz[ROju=3 )1+3D…L(;s| {QfmzZMlB3pꉘ~ y~Hf((NQ/!?;-1{),G\o'z9yFyJ- Y΂j6 B6 ׫aYؚ҃Ur|.d lN&b}J|[ds9k)2u!^ˤHcFY\u}PK|>K:<RZKK&+@"m)uˑ(MtBPZZQTAN,7tUE &+Fݫa 9$Y2V4k>E{Oh~gUgF9ՁVSQ;%Vghy&vuT/%آp'tbсt`0ZF t;='u8Ɂ1hIW&\96+EE&)4eSsZYVNkRq؋2!V<6nK:RC1kE}G"=!8:X4챧Jc0TA_@?~?xB/Dl1 r3Ьo}[E~p>#f~SSۢaV2$1-Pܩx8k-Қsډ.zLPNdی9/Wx!ßnbIzaB٭jJs-%93]jc "43g!-_Ї)Xo**Fߞ=()Q?$Sv[` oUȣ3=V*e2[1"Zωc56LsIvm\H1FȚd؎^^s@_+L*7p_)d)hd4vG@@e` r;#m#0&G|$&Jg)?X8ՕzNOiJFG=r]T!v$QSeOWjT7h =\.+Zn+ x\i !lB 4^Y U%kZy&z_PhxQY7H*UmYpG(8VaI,A9ia] _#~} üfGK!d<4eULPȕ*7%L^Q&LrIKboSܯW A t*O%w [|L:f1P@x7&gʪ.mF ї+*bT=;¥nsb_ #v$pNtB{ rȬwux[+Kp`LڻBa\mUި7wO&۰Ԉaslp[vN,Ӣ-Q}'5?/OX)b˕oJ@TT5dpbK|}nQa̢~}S9B~c P)BD†ro˕Y3z wՕՆ@?%CQn|*\gNMUau*oN%x<3 Ӑ54L3~Kcי -&ìtvO9<900.p[6U/\v+ڞ=@/Pi++o?<`%1"B?/Srԅe-&%މs?\ϻֻ$/;|{!8mgBy U] / [3TTx}8\4X{ ŁI>HIw,mZƛ.fG Fot|5)c<X 즆F OwW W \v6,;]$bYp`.EaLBa!ZFTL," Y/1kMứtNݸAbALu {R^ =O" 6G=&5"-BY+V0UKx"6HSgPQ2C ܝ~%;m)s@6hO0Ƣ߬EPc9dr~鿲o}o!<^ݞy=/B` 1P c&Y4(? Xz8Tddԥ"쇈 FL{lXf; uc -M%T4Eǰm9u!G8Zov)U36pm:bS (d%Р|.b9/~(h{dj>Q_Z?zK1Fr'N=]{ͷ/ds-A2!u!.S:Ė*={^cpDRɏeDi7Wb~>ϫuHMDz}HDVq2_6}-;en{&v] Cn/)](:pniЃ6g!ܒH&o Te zX*, Fp*=(w؂՟- vYx 8i_Usf\4O *]:@O-yƂ B =M>7}n`1yb~k? nB;-o- A%2lwF6;)lr=a-6}\ey VB/Q@ɴr"5-QO`*${FJ|a\ ͆*o*^InRcĻ[\$[t u*d5 =O7]춷u`oUrNZx]J9<_1WaB5r_R]?<1 #]x,/0&s]צ%}V|\~[V$xφҔZ S׀͉\H\RXBK |=DrL x[Ej8~e<`+)Jl;dq4-iL2DrKL;usB:I*'ļy䥶  |uAvY"bQk_[ڤ1hWeH'f䫟\Ěi% )|{N6E`[ebbe']yNLFm.ڏ8H&iD_!z,U\EQ9:B0iI~GyV {0U9|X[{2\8\lv#NTJmÙ'BG էd9 ?X毉1\M[lh \DL߫媶GG_^7X39{&.*J:cu䬻Qվ-ݪp 8 -c. بfR]đ^A'N(4<=+CIWb}@u. TH|,-]˾Fω1A$x=ҭ,(x5+T_ 8c1v2J=zcmtbٕˁcVS 2z v&fd[tpiwZ3 @C ^k9*L+wjKoubiMKDLl0I< >!pݴb]5!{l$3>$Qh:4sKcg0üˡ6:( HdkxC4l}`,vy4,%Yp\o%^.]r]oޚ wH6]d/_ Isb}h 6ڜxէ7\OVLQ[9K:]e:ѷhΓpsCI&j(abqk ):j |Y)a~48W8"!{݌ DCii+vuc(e~Jԟz8Q{3w&8'{ByŒ"'wG?K Yb*t9{^eYu3 _u%y6h "L]bn:yeԖ*H[1f9bY!Z|A.k,^w4RY9Eݬ}]KO%ut DVB1["0qI_y:- Eg139B/0K!Vٜ}gv*~1qS/AA0L?Ao05 k%:<X\*Ʉ_gN<1wSbd` |=B>|~w;]{f*TNGdqk05mĤ3)a߻ZI'"<2O Uy 8ÇNni"]"yH'@(Mjҧ9|n>pL[M^i|_C%haގNv^lhZ?O3]| R6Xe,R@i".yUĊwIj:$rNnv֦UY6}tN3É GV}Z2@S; sBځ8yE-_jN{OüI)F@ =Ţ ڳ#i-6 Ɔ$q.Z2 y֌ā֪BsXa=W>9[`?j*w>A/Rސ`1GVˊamjF^zu(YRټM{{}tnLHp1yK$FiLof 0>-AFXbQݔG&&ewiLNn cbB++5LdUg( /j] =?]MĀRVEG1f*FqmxvĴ䝉Dq)R=FKg-F>zH,#2~$9iRr`cEQ. oPM;S ,z> } a=fթ9.gLLHt5uzFMN#9o7!s==6=7 l_pc"͠D;f> H'U!VSL#)t<~sLz^#'=z;qahX^K}Mn].Z䗁iC8>2x l:rVR?VѥF;=67#WHczA@zh0BK-/6;-&0FD$(M@S+OcԌ ? ,qEvB-X"3g[P[oZؕC(\o/a"KW\̽ol'-F%TS,ṁxե7`  Ϻ37 lg D&>FV> 1Z۸*Im:@kuOǙw59>+=1<6W|=؊\}zN Tn$yV XwtYyp!u9] ϔ=Uh\YIXW. xw=aBs?,90\pir6F ):1Kmޕk/z qx ,f<;|@=g}*dVx؞f驐sg@oJa="GxleٓѪ%j6ȍ+eƀ1ɕԛ:|RmjvYp!Hx9ฎ1k(tҐ丁Lc]ExئZׇOMx) =zX$OSF.^%2fM$oza*{%=!P‰"gKx2+T_\n7i! wUmO~:Tͦ5I0bJ 撸WvmiFnG>< E gԆwՓ..-i,GJ,2}!ko-͋d$ 햳`n葱4VQ>'h͹4؆FVYB;L |srbؑ: '!Jd ̨TE?[Ϣp A*V LvPjoL"Y081ϢJ1%FskZ&5[_FB;'>~ h9 tJhtL??j< g]={x|X }独b 8n:0'$O/LqrZQ}}D ^ '/<ŸM, PŞخ"feY )Qą6nq"$Q޽ 61<=V'| ^=U qMp:QȩtØI?N\YkrF*&,k:™"OSk%ӮG*p /RxpoQ? ׁ܈(G(rh8.eL$ KJ(jg~ a$# 3"65>bGFRJ7O gsז/e&= _QQ3r 5U'ux޷[<6||f^VNVxnyڨӁq B I;,"(G?z=HK= ZfLhC@XҬ ?tϗGC4N]>W!ݗR $>ؐU9mOG]^G 4xOO@ oIҌ-Q8ryyBWʴ[o4έ9y).P Yop >ѣ eR3z#' 9RgdY@W>MD@\*oS50ҊY(wCVG#@Ƚڇ PB6-&DAI wq-w4ɻWTr PO?G_Z2=fޫO~`%YX|%92]@{:zxZ3Okŏ r6 Gb;**xֱ;hr3@Ǿ{kS,N Tw6d2[U,&AOc?ڌy `ۢ}5|&QuS|զ4g|X q*yYXUck≵ h.';2A`?`蚤Z#SCKXa~Sf)5.I2aGPpE3^s?Wn5l.y%Ӭvf :X7ƌg}ʶ^\cyq6.)i*eKBߗ{>&r ^.G>W2^IsHiT pș-I%%$1~| sTg7Wa6_W!n\&fCe 43wIR|]зp rvïdwr 'q RMCJ0A3(\g%C=6R F$Fū.~X*BUaf5!*eihU /^oLx+mdWޥ&xkX zvp W1gU%cr 7(`&2&M"֎ꀦ1n;;BWLj=2ͨd%Lڒ|2Zպ~*M19Q]aG1yD5w>p{ξqt0fa3+\&UX U=qSh\U>D xZyEh0B{Rw)آcN ja*fIP3!IYCY϶!уX}!LjKno(AH3pėoKrY]$$HFٌl\qۛ@r+*pGiOĽwl8=k,{W3̰/T@˄I<y bѝg㝱"'9/<ϺLObc4I3UYM&ƐJf{:^"r)"-5ϣ8*cm?ý8`"/-+UgA T9ּ* W@P#x 87U8\+bBi`Q$$d($T4j%V?\!16EmX? b0mctie@7mul,l'"q œ^ 82`6ZMf0ŝ_ IQ1z;_VV+0%`MO/hX%DQ>rfsY82M>Dh^LgKPp%S]z₃N]yg & xÏX8I/8}Ucf 4/+C2F|ޱ6DI񨕿7Gu?5*/;Zk_Os|M7aId-sEϖEhML|\HL6H~R/bLڛn:XҊf&'9M8Y:@'L{{E8)1sȯ-{*  q?rXg DjEʨڋI1MB_7)nO Vn,{DVMƋjץ΅>_XzK@ )*˴>Ykz?݁&MK^JHw%>Otsv0j|gZD7(!W Q򶅶7ֺD*ݘc3YK,_e֜ʐ#zd'MkhFF g# ; \L0%]%s}0 > 7 ],j^&_qv q6/@NB@zŒЃSK2nghl,Y:Pe42=fe7nGj{0&>Ќ58  ˹cw9n5^k213a 0>E9[h$^-uzƔyu5 5ReDj rwo֧=]I~XXVi;A;´ix8/ nC9j\ʼg(^Fc94~eNj6A^@Sj*@=Ñ/`EHj$|lKx9 =Y\ |^޴D9RRV 1bECK`?G/q,@(x+ڪ[%|i PBAFiB3͆u_*raTa'rI9 }ZGnX[T f# t!`ړЀcƮ^h W=J(h{Wrb!TS^% x/گ>DfL3-(7lz2gהxʍX2< @OIb)Bԛ#E C[Ii}K 5>Lnk7)C<:%[חl7#ǯ=V> ]NZwVe/\?1Qk9ܿ}:҅np'@{F!b=0AXa<("hnrSL?1)ͶSwv~Ă;Qһc`kA=K'p _'f }Pfr3}ЋO4""d2r^kUS+ l gyAC@ym{%_Y%KOB,t6gOܲ'/89e]}Qu az%40M[`_SԸCf6` ]"o5͔R BhY1"\OL0"WQw:S,%$ZHӝgw2vgMh?VZ[%؆@1ZYnrXz 3@-{D{u؊EAP8pk!JneOg7y$T@s Z0&) Pq|䳠6y _x'O_bmv(\M%1Pt8'W'8V*7˴=*Ϻm̑&[g|6ZYw-d8HuJ*KѭVmÔ8E9dI*Kg\p:J/ۆiwaID=tP3\aZ'*cVVkGY9E> ?SiVBt[ٵs9h9uvxf\`l'3p%v_pvl zV NvCW$t?KAX(J({BX߆Uc薜;do9q Bطnc3s;Q%ZD8-´p8M/) jw֭ko D?ԵH/I4YAL ֖nr@K|2t84c[ǥ \:.h``F0oKZwM]PW|) ~!]Z.TA#^Z_2{xnb ``V#߽AX?AZz ξM/!TtcZ%zϿ/j,aKv&xd#W5|GvC̈́UPeV+}5b|I 2vf8Ë<ҁ,R陙v7c aXP"G]}H^YFO=ʃц4'UJ+FMґCk#C|\L߸Ew^C7 KkQPNR9Q.)- .bՙ`nk+s:7){ iUo EO{LKrҹU%%C]4-],.c:/mC i卪X[@},ΜπKl)\#+<1h4#:Qr )u?XSq:"XZ}[Xq( !BrP8F˻[W,1%'v[߶|Y‡16>lޗB||w[&A|.A3XD$k`\\K~ϞrIpNk:wsMV@tզ<=EځoȷcXw@?Ջ2tL!Z%YwX#UA1G0ĿK&kt q"~ l lV9]Ր#8WobR!E1Um,  ij۽,:Cu0i2Z=7wD ж(nB8?  i7u;Ł6;!/Esѽd}+/g7[L&}Ȫ[v$.KTe Dp ہ;hJf;f@uNc,l]LіsNCңH۴xfڂR;hCe>M omAa=Q -4f'\ߍ7Oᚨs冿-vM 6|y+z!ou$mce8|C(2w|mɣ=gJ Bm Fwu$CdO: wM,T5`C HLiQEMlѰ/_DHc8Fv8.oj&Ur6/LyF[GHO՚k8/^Ob H'_s,Miptzsٕۑ5!Gyײ". ]·SWnqOD < 9ѦnƬм21-hvhaHuvGY5AaQȿzB 1?js, nX)/NDUG9wam,pI[)MABmZ!Zg+&~XB*)ঊ{ɋ \w< =7 *ۉU;lV2b.fMLz4P '?ߘ&ܟ7}1dV0 gXT4X.u֏ߐoJ.}],o2M y`VBDmB`_?1; ?3SRjga k}Py'c#sl^n4xA17j })?R;;D7Ò/FXɧIMP2gaB`m&3r >;D84dҼHD.N7d/1B5HqM9oǴޙ]+ְup5d!zQ]k9$[SV#p c1T!d yHlNVwX b! f &d)ݺM'nԭ~qj͙Q;(bfPQۜz0Y'oI8*߈PZ@4u=YZ%3;+7s eqe+֨1nI*(iJ/C5jt@M,S# $3 Ya jص4&KϯRcC`׳+ѽnu[jeG57$gM!&͘M#Лf'kw%?l6#@/c A% ox/I=VrE?" A[iZb!dXV=a)8i;H,2Wza qJ~;Eں.ίRf"€=#N GA4)6MQSGT 2ש,C..sGr%* ZE>Mlێ5~i^ zو3DV?lU4wuP8hHU Sf1dKL >ji-(o7 DSV+˜#3ʝTJ:{5fyjjAKWغQv<('ׄ6a+Mh'_L-E!Vӏ^W?jP"7'.=@Q:0nTa]!Bfɖ]h)C(}j!/RgaU\'z zgC鋉qTh՚/p.0M5-`U]1H ":@YWGxȢ:YUǴ,f&I4{W“ >Z3vbdmѲ.;W>nXixSL#3EP,v9p8qH(Jb_7jLzK#7A"X<t0ͣ@#FJ7a b 32x]U{փG斮F.vfݰmô 4 "d@̢bQNKӟ2Ϸγˆ=ED~osxw;sY6>z@~{A8; M9W8eYda y~ TZKMb`|{ Zq++' TYH/)NS\}>$uPtxm 9څlv t/^U<դY:TKHyr~ws;JZA-wZB~ h?Vg>}8|&i -b ig|l5r5IV@҇ko>XS~KzNG gYrJe`|ũ6>S0 ]|A_&6y?"Wn$8O2Gܝ(ƤG_ƴ-,J [5MͬSnMab۷_[8@uqY\#U#%@s0GD iF@h")9Sn3W{x-]{Xz/>'ifRmF&]2OE wSh)2HzuQ.+]B xl9/P(/&=[PO̦IX̻R+!+A=g7Y]wi4i^CE4dSQNL2"i $!rΠCpp8Q TPhf-ips>kİ~MRv&Y㽻~b.8AE}Պ~gz-0.Y/NA ?0CR#ȾC@|By07lҺjXQ8m'*z篩x89 qos8(vQIn$ߣ\9w5kv#9H{|-`i)Lx֔5sSi07w哄 n/%~!HvYvB7!:vݒXeJ.!4lzT*1~Q~*ff6Ͷȶ k:}5TƞBs.%*尡IVIw $L}QATᓠtơO%=?zhP9%n`9)A@_р'mS^3آfT&E4o*|E伯&| o{;]$?NͮFdmOw[9FGRˉc֖ P;DJ o:.G_7ܱx{0ɇfENa*&9.Iyɗ#qѩC,x%AwRZH(RJn+pX1dКϫl|u9{@q)@]-Lhg &H+N:UޓJA=R攳t}ς|!=#nuy:PSq.¼(kYJNr}~qPe odX֜j.1h[Zl R|Ke g$̤b&qZA~jSEva~e8xeC)?^INDȗX=l?W .q=$1RGXɨar` E-kڞ,FƛjuL&ss]wj1y +J'LBub#7 -BC\mă 、pN{Jsl UWzck#v(-|]~+q3KǎZ s 3"РptM.+Ls.yRn~E>X<POgLz̳)]WedpҜDC)\I̎wPb`J8!ٟvl7ңhCKrda-B+BE8\WqfYf P3$x{-4ǢMl(2r5" B^|h0ኍT/ӎ*62/`ba(ցfn!F' Z=<•5f+Pi[OY] b9Vۃ󁏯,s]ǀn&.ߦyj' S]C0N]>_0l_͟ջ TGڝcOpD.FZ[Ad-m64/E:b ~L9kB͒ƅ(dz͢`WӔ0) p!$W+yG?g >{"7f9[+~+mѱpRZ$XzQ 4'joAfGjBaJJB- ɍ#($P<5fQ3 m$Ud`+gOU=v֖~*M޸%xfEUǵn.RޏKf UT yrK4- HmK@{Bu&@I8_z()~zn&oWS|q=S (Eu iJuTVY!p,.Pn<^jz525i rYԽEUQsi.e-6ݠ2aYlua3 ~Ɛ1"\a1DQǙW,CbWsbtw<0]=! Q߻]gvYs&R$k幃lu.䉡hI&^䩲웚m S\ >6.htTEa3{[)gdZP}hVWHd +?sqWHacKIvXQY+QNAla{QĄz3l[WRf;;@yB#NǫEޡ)!\TѾ58{D2͢/rtU J3pFb@Pgݧ?zR;I^!\ "%*Z4;ZT}WC͇.ˣAbd xJVX)\FPuTWLιg6%o?E{ѶTpdN#k$VJXWQ׀-=_ &trv0~5PyŤFt22o9U*W"Ru8 :q]]؉zuKʰPuH:Eu ͛Br+ 4H}wلד@vo!ʘpB1P1? NmXj0cw.j4Z $,Xezy]NoxCcFj0/.oΑiֆ,#'-z显uLCjP d>9t@I#RiJ8fnּ~yаfnhۢ {ү5 ry.ji20'3L%1=gED2#7 pg9[ΠRDN!U9y-S=t-jbηmCb61+*u;C.*#ݑn1K6w9w1·xs{(칹:zQ_9PUVۦ2'0}WZ[*Q],\C!]̯)3Ff6+C|uͮ*~MH{SQ]te-yΛKl {%70 #|$sX[p69dQbO@g'J@f8awqtG은W٬G ?œK_iEG~{;FIIU<7Ea+zEx!ia%ڥis փ+`CxqA&޻.}gi/@O:OR%IiD 2ik_/*٤Raq`-y2PHwz< hu`d&!|0yw4X%8jKAs3E#}'_'h# L|M 9_ !$Tb''gmTTQ=M>9l]E Jvbon!25Q9Y؋i; E01B*nAقv7P8Ac;\ak8Þ)*&u n4=0`z/н/ P. mڙf}Ш:} %2{^$H_'>=3͛Ŧ4# }CDeCtjB% ֧܋sgFߩatt[ͯ0N$YRRw)1NrI5R;DIVE#3-I,UN_N+B { R[QHa"D1 <(+3y>,s4hXDhGOZsZJy>A/%6ݬ*z"`?Wc/]8G=!$o86KY~È"FnscOjFP8;jl&swx4i\Sa E[8(K(YB_+m;~ 1J0<T|[FaNx/y:x.& =g8n3<;H.z;^MFLlLT:`90>VaU\l068iA 1M/Jϧ6}mPvAEXTܶ*Ɋ mOVt5M B]j`Eneu8UV|%/g"z:%4iW0[/'L]y0e@g87ۈ N'Ė 7[9}Y Ǭmg\(Km]er?0VI'Zb|qlC* ^F456yoxL  mm +FA3?|uIyTz޳ŕ *[*-#ŀ@<*Q06YP?c' v&]Z%HR˓E +H`[,_gHyF 5b)rQi:8D5ٸ QRY%i4hF%iِq"3E;uwʞN3Q˕(ƢP1 gb/##E4CrK$0PF-T(wث/bkGYbUyqO~k'H--cSOHhȤգ> N+B% '͞FmYfU׌1JlےG͚@wX,xYnr%{(XX '8A9y;wPdO"Uc8ŹYp^WV= wm!Hr}:}*q.V^ lzۣ}|F%if,/ |7ؽ&KtT;\h\^h +zۋ&4WwS0GS5dX}Mocj mpn}\Vs%=2<4{y;*(gCgW tyhzUz[rY9T&QInKrXSGջd02חe?Pa"<4''u(cvINArD< '5]1'dH崅)ZC>b/&܂芹 ڹv>UN"K8{¨uqZZ/6GN2 )N΢ّ쌹\_tyIj5ָ!KXwSj  03*..+lҟ29@۞uFi1W}ԠRV71BKN% *>M 왦6^ k ^.]SsaCK|H\t%aA6)?IF%\0 #XLݎKV$"Y/>YL\ R:e*n"9wyj _ex6rFms#?>YT(7}qp:y4FVxXC,k6fM!rX dKg:_C6ݽp XYIDbďڥKmMY khTĴ īaaaiq5JAE]AȞXoT6wF#~iڳ jvDM`ee[B9\<ojqAgfTv+e@lBV|hUx[84Ⳁ@Mpm-/'8ɯq܏K%amݮoc5PDo%2e4T2{ω,f]g9mM-81,x9\|3pږsUר+m.ڮ:auX4b}!ϼ2⛇L_A SCh=ŷc\h\vy|HԴQeJ oBXO)iX$AF^c30VEUd5fb y@$|۲݃l_]nsL s l&QόrjBÃ`ӓɵSa>-[]>7PnnRٚl>pcƓ@+^mC$pf5LW لl4 CմA6= 02GaKћC$T||$4Zr9Ap_^P>QrhsFK; Mgm]Iڼ4J،DfJ1"] c89,rW6R @k2>ϺܸFTeAiT*^s2bHD -;nEI' >2X u3̚PuK|B QڅCP)eeVwz"-Psx݆& O֩~V[x -4w4nIh]r?*ӍkWRe]B|I{OU%aHQQؾLNո[ەm2 U Y0y|5zYGT4}0H{;V( kCg_|Re;W:5v'h>vlNH1vrw JTT,b>rJHg*7 G nx@뎔֨%>$PT@|Qp{, #irUji~{yXyʒ}HDUoSho j=tQQG&N X)];:[Mo#۠dCre}8/ ^q!Y:]"X~rt5-\ar }(LK^M24ʭ|D)?JōRp'ɎRȢd!zkR[^<|B֭rcwtc("c_FO84`YHgr}* 'q̢CIMpbHLD@vuɊļ][RBK9"z祇[!'sՁPˏqqIOJ]yU8IND׳;=Մ5*>nxK^fA а]JdC [kznqZa@? kn. %6v 1{Y,3I Y*sqGBz!vJe\; ??XJ)t"8/F9V`{# M*FZtA B Q=*R3#NҥT%W l 6۰ߎCȒ!- -ykFJ$4+8F^<’B]Xv]<Q&d$i;w]k o2JUs2/$FI:Џ+¸jUN8kKTCO-2:AFS#X6\7 >SD?d5Wr\8zthkD2L2ᯎJcE+=BP4ל0 YZEpi/data/st2alb.rda0000644000175100001440000001453614421664404013613 0ustar hornikusersTۇM{ŊQT X_5b 6"*ba "؍b;fł &;esܙ{{wTV8Έ36Ÿ&xəq։y9s=5y;U8ޱG%qf%i#kie==i#md\OV:i#I=AOv40d'b`vJ'=l`vӑd#{INIIIه30%g_NGJ ~VJ8)1,A9XWJ !))?rI9ӑWN+%NOJ~Α$HNWN+Ia9ӑ)8G?h20%zRsqzRsᴒVq&IZ)ѓs,#IOJ*q$SZq L20Ia)5,'r:R#?$NGVGғ:y9=id`ziDOJdz9ӓZIZ#%z2 L[e`J x)ՓבR=nXNIzx=)Փ醥/gPr?!wMb}{XbsӖ67ʈd e/&YnrH]QIzR9$O~wg¦RWQ7RQW–QIkǛ2$3$0]iɷ]< ϷN3&qCa>׵$@Ƥ2~)]sOJVU!1EN0|gx|HOb֑B嶒N#MH޹$o=ӏEWJ/Q~!YLIfI%:0`[P2q. OO|HrsU9%}9j]e'<ώr%$hG)tXeM awfV%KN&7l\FʎFERSZ0~heI-I}w.[ %]0>2gmϭZB)M 7C= [C~ zM$v@$~۹d e=Ou>od6N0gD~-:}$/zY9R $z#d L-_gXҙ'QGM$<ݏCk!bsmPRէ:1I0ɔ==zfo<7ĘԧO<+4#1.YU$R=1dώv'e6g.OyڮE?A=W{`kPmZRR]I]k RHMBI:M7%^3L8c _M'_P*)~bWֽ+I\֬jy8q9Y×86$ ):$Fr#h 4r  KC>mH}w'"L{m^VRR= xnBi%M/ej_?}#,*¼CCI{;R+I 8M.)rZc%ŭx]:.{H$':]dG?iDyQ$o,jN?FMv,ly8x(7=%f{ QOv=VᎫVW;wtLHz]zTɚox)h.w;<'5{fْPk96=^EA62|*a6NɎ';q |oµe$mېu(Io, ҢM9fbIY=A6ue6Rݻ͇vMjw dm caE$?^Ӑ7 qG^QJ[ی};9X7ILZ\{(M:/@Y'L\LjN{VGZɜj&moIBiQkg_$?Qp/NƺCag? w+u/dm֯[Hr]`̤!I<ؾý$(דI˿ߔNχ%q!_۵ڹ'Tݝ5{zQ*Dώ7I_RRh8ז$(m.:5"45I~1*Z0$1ʾ2Pپ-g:nͶ$ycN~Q8Qo AݶWKfG{TCyv[(=Y$ v1%Y3npf$Kc8G!+j{IT%n \wOӭM؇J|>X?6*)Y H~`茤y8Wcn:-ϲ9ː)Y1!$\lhx엝.;Ǧa6-C}[v(9Ý{jȗY̔6\^IyLYS Pg:w8&V߁:h Iq7H"9zߞ:aRdA|~6cݬHեޔ~x%j}}ClwF$43..[HѼŻ;]#.wB \|FD)[Mkfܔ8m:3fkI8Ɣ6g:0tq|;k3KTFn^)ٽ1>"Ԏ-7cyN+sHzN8J&7HDeE/H>N8ީ=@j_99 ^ xaϓ!N ueS:$Kslv}R\P=DݷPG˗ګe'UTr_ԁmu %{⻏Cb1 yʃO8PZߴf:loJ2G΋IvHNnCbHk'a]s^,̉u,HYKv,(Z'ì8$Z瓬>n#wę{uʅwߚU^WJ)kF뒕պr%8p9)#^ 2R~8I{%b1]Kٌ#Ya^Ea^e-[i1^:ּyǷo|}RDvZ{mLY~]UzFua+=1b"Jh֍4N% #-}x5]`O.zKoװ~>uKS8_W46?M9Ays_EyN2?Y;yVؕy{V.w }=\w=w}_9 g]}.]sېy77ݗVt_WѵWtoV4':?W5shWZs{S~ h 92wwp`Os03|(@:7̓c?>fc͑Kf@ӹ9P^]X{o:&t0u[>hM h[4̀tM/@EhMwp{:=h:p5]YMWUݪ`tj:Q5]R. 4ݖJMW@Ztj5n>Mn$pN1MזKDt i:z4]6MWcD d0hE^ؚXt0 sfbh/P,KR `+J D wbFflv@< `G@8 8 g9p\%p\R Ȁ($d Up \7Mp w]pC<O3 kd  rG >< @!(A1(_WgʾNkfpifpifpif4 N384 N384 N383g|fg|fg|fg4 N38ͺx5 ^3x5 N3pifpi fkfpmfkfkfpifpifpg|fg6g|fg|fg|fgY84l9 ^3x5 ^3x5 ^3x5 ^3x5 ^3x5 ^3x5 ^3x5 ^3x5 ^3x5 ^3x5 N38Nx5 ^3x5 ^3x4 N384 N384 N384 NfkfpifpifpiSfkfkfifpifpifpifpifp}F4)W<5yxk^xk^<5np<6y<7yo~p<6ymnp<;[o<5yxk^<4y8iNp<4y8QNUjk_pRSSfS5= O7SCG=M@ʆ ɡ#Rꩤԓ@ FГCI@4 &*)h<GaFTm(z4 @FD3)F 5}F"(';33;3 y_{ꪪs$I"jʪ9s浤ֵkZs7S?ſQprsrU>M4M0!B!B! 馸]̹U;} @89MfZ̕Rwnb"yX+\fe1թ7LKw[qXe˚]TSWq1ۘj-iմ4GV%KzwӖ+q iĥˉ i4hӶPo8XOF[oENGj*0&*}]Fi F S<K2ED &Nu~Y!*HIǪrV+^3eiJKJ륕Ҥ}Xijؼld|v{{J屍4M4 :*cZbX1VD$I $@HFjS~:^-4V1U*Ռ`I $@H$I +mmI$I$I$N5UV u]uxI$I$I$I3&iiI$I$I$IsP$I$I$I$׃^ 9Z$I$I$I$xu]um nI$I$I$qjM4Mu5ݺI$I$J܅U}\5]]Tꚃo> >=ig^2 t+B=Oa f&n+E+"N0qe@ NՓͲER'Xvix6ISd48-bŋ,FE`dYEPYYYBAYYY@X( #Q@Q`Q`UPR d@U@dʊ@UX(, B?Q t{HBC;kE% DDmm{E l 0< %fX nj&5l3A-5! B/`_:P"` &BsX/!zŎdW$ H*X *((V(PbȠ)DHUV( $H$P7UxdeHP{deb!s`p4סɈ#.|tNLHfJ[n,OCZ9ש?TcY;6&~]X9Fbl~)w:HzĢ 5: B%LD0$u=b Mҋӣ i)`5;BV, SK< 1 MgNBH'| 'BNI&ׇL]֦*%Y(lh E0xvX{p'}Rtʱۉ"ޫ|g|tNb:W"|6gZ]f3; & d-/X,(00~(4ُPyVt!Ttx Iw ֟eKoQy}7VL-6fd'rG٧XN`D}xod9)f1ê+y뙋3XufeeGy "᫿qf-fjtx$z-3udf;̰&,gSyڳ9xS>"50#L,Z yߦmMڹ 9悋j%T۔iӷX1ea[LLmkeaKyoq%,]oꒀԅZ1NLEįzЮwM>ѓEƘN;|j7ʶȅ4)*d't-٥fЯC-1}{:-ډEE` $ z5 QW[oKU7[4 )6n>3R/,eI74Sikȃo!hS!ku “Ar~h6JM`3jGsƎ݁NQđAm*D y?T!6- y;vJ2G5Vr1yti2 QSk4MOv8ĂX,dfu-ϵvرl%@,)J=t<:.% }4s9 #WΎо-vy7KqnɰTmO D QTם՝{AST^9>{jTJՀ*?xA M&e,gwz?Sʼ {. Tvn%!%U q/-X*]f^˔+ސgʾ[#NgWCZ}'ϟp \'TsKi4i6L;M- H) ]rTR+0M:䯑:cse((ǖ`e~;mwq\iS 'xVCpdQ?QXGLo؀1 &5$"PX到8F': fdhVw+rNҨ6|U/4,FP0uAQ*h(5K79`:SʉuWm{KLX*4Œ5<(&'w dhw$cZKS2<σaOl#~/ H|ɒЋ8(knU$;`ZexϗJE<,I'*`ۤ/݁϶]J]L3Nd!?/a:(% z-  Ww&\AiA QD n/O pj < (t /x_]_^Z!nA?p25Ud2ﯓnbúL'`BU'ZGh"?&NLhvpgk:aG:K7m$Lт8/롵Q &ɠ:n)6\aMem$Z:>v͟9l-מz+괇Ϩʹ|`~1Y.$U@ = 30DI8ĽO@"3!B]1OWcB dwoZC8J*!YTm$ڹlN @K8HwwH6bX`ZJﴓHQP=# ;r! 1Cvmk]1=&\ޟ?WrK@{jQLk0 Rػ1kt{^K^uy tE0 @Y܂UHYt K"sHۭy{AQTƺZVK@mH>KazԌ';[̞ a`hMRNTCVૉ\v=EFUz%82kcizsCmx&2J^ GiWy:D- :$Άֆӎ…|/3_liUZ[D.|W'#aQ'C<˿g uev=:x8Z^}4] Fr*i~f2bq$!|@ 9?>N s]`]M,bSvg2Ii)A+A&OqQQ'&ٵ6wļw˗T'&.IE#oV3Ih<1OtױuQU0/ z_a'aN^G;TAW".N RNS%)C}=#yO(TM/a%:.L'#QwetN@γJP^V=_Č +:( [du_p =pY WKzvp|f^ʏ^ҸqCyt~^paW|+X.K”k8A龜]Tf!#agx^s$(3@]MGk=HWi?UY囯$vSG9a l4ULSL U*Ccmgѷ}.~'ki}1($.4׶6%_]-&Ń4@'B(_i滱| *~tR\ķ9?iLL,&2I]= jR˱+\s9 zVd,8fI0~}m0{COrJl)I;${۽J&%5=phn_%V%na7i@0ʺݞj=V+}r*0^]73)^j%.! ,E)c%F*=jصU;<2 Y{) Nۑ79%t֯4{bzS m+vc^v1C-UtE| Wx+c0E.SxRDn!uK([xuЮ@ E q&Uko_Z'1#i[AN_e$o m_)QιoSMX;n|yݿYFDtQre"0A7rtB8kgv]}* k>聾o38v?& I?WsqyЍf'xp3RRd*iS ɪ~}xΪutZ?W0͝f{<gیye% G1d|HSD׷ cڠ=`> t"@%Kb}x({L>{Q{UIh@M*u^,QDUWe?4*0J^ <V6=tM oq ө_Iͨ WοG 5/;3%͏ >TWjdU'@ *,hbZ̖Ϙ]Uz;~L"˺I O]W9cq5t.OtPՕ:5^sIQ [NɱaC !Fp=_`]vV&ʨR&"n2|Yv8-SO&DUwS 2AO'Ta #22;tww+ZP9$@TWON5<ˋXe_KЧ/T#l{l[Zy)3.d|ɹB*vymoM ,X;u6PoO|h"<`]=BE+u9Eo~6 ?C`dű㢌G"0W̸Zvڸ؊nQʇ/yb<1kl"3{2CefhW9C]Âƨ^92 3/{MwlS'")F?~4si o$YcI'ΣVdoBACkn]ĒT)աӥWLg4ȨQNzxf&"+XB|{NpL'=y|Mx ,+&1Dzb_ v:ٶ-vIiNA4 ҫ-t_%ĽΤf%>K6Am,H7<*~D'F`N0U y?xdKp}!*@#(,Uj/ݰҊO_M)Qz0F|JȀ"!Y*|D\$ћ47WH ռwіlk_V&5U^m{Υ™yMzۿ1SS_N&K[^!yfn`w ڿ(?ViaϘI*NqIA菃7)*u雟K{sD252-gLֱYrd81orDB5Finj1l]l``p~q@ e/祴wu-&})5~a+ 6`SEǶ5W-$ !|CQFzg"$(Fki-["z&xr18ؘ~A+ 6jgu1ɯpBH躺7y~Ʃv; K:ŞDR 4#ok}$;a892t^j˛]Y`>-# v֋o2m3tz}ޏe}=*_zwK+~Zk=,mu6ׁy'.x$&Vé^{~cbBhAUnY4CR-*lG"ra̴COۦbqjG^7GOqsKm_^a@}PS^OߛZw(CRɠ+~VrA8hjv9ܨcrSڒrZ,}S)u5tl^j +BWlʴIsRED]YݱYJӚ-D$3 M7 $1JwGTψ%۫2zs{iCuC 0[E^\2Bg2@2[2(8|( 'C͍ъq@, ބ1j5Z,Vaɽk<hgmgS3a{7Iqoer:$SiΟ(`k|P]QG+;Rt0^Ȥ7hX).qw8> w)JxKZ{2OId9XWNu(\ ~#9%l4:# zKvs<5Kyr #`-Jܦb}F2rgQh!~3C ]u?(ctF+#%Vfqo%flx\|Bi)+C|$]Z>[yngX\\td={c\./a!ͰbMtDzf]m}T82+$ LdBsLX/s'+_fBI.L|?JSˇh!$+_4ҌΛ`detq*X{$6V"TR  [?sd){Ra2T) pp炃դa& "8~KzH";l2 -Cw; @o!Fܹxĭ)rGua$[JCyҭ@ﱹ7&x$4x{.{fJy]R5Ģ|+.G1 C\6=!{ME]@jNBdaiލE}ao,}%}:ݹ xz}fύ ib t7OPZ _9[!%Ƃf /Λgfh}Z jlA37d \vieBnwGx &_ a^a Cri̥# `_\4Wƽ%iE琺0gr=pKsys1 PsB`6q",cS.+٫|2OM.l8sqpݏ[1UvX85ȍL 04+"Ƙ:{joSqGn1ѽK17-s֐+~G]oEѩsOAxəG\خ馨pҳD>ghyka?pr+(2\hʡ+} IIORkW;B0 ].Q"B/O>%?i 6(?hٺw tQiy;Ө-ګqW_~<-.ֲ?S8?N9,g=\%t?Gm3uLg cHXJ_`by b\G*ԯQP31LCvmau9A2IaQ]Lq¿V]jl]WZ0HdU VZ[R%_RZc_}H1! {~#ң%3ǀ_ wHsƪS@B:uT$2Y5CZTbm妎^yC}'H*wWI}Ǘ)LVU #O¤ E[tvhwsoP!gC$p\J;9}v)-nݕҾ`qGX J7v, (]}%AqBL]35Hf:(&R"4] ;j!Z,@iЀ ;WEeSM`Fİu{Yy2Nk43%5۫&AfRT<"P)Gi&r .jn=?`T ej*#@=\:60$ZDˠ?kc+yA5@#1@"Z d  +f+ه)Aw;+S6 e };R꼢6kw.y0 ^⬌kv"6-M{dyb|>_H<-@,kGn,s9 ޕI%}Ӈ6qfAvl#WrŲF'X_Zx yYR>fNJS_Fznvze*@SᏡ9? , >is`GCe٭?3@eB5D2Q11?,HVh= mpK1jr]ڱ O`.^E^âQ\\]n=1 2 ^Yy0 gHT@^`(c{VYҮ}$|N4ٖmf,;5]#WxßMi2nwbvC&YtCc'';!:Rt CՁb qtS4bap| 03jɤƾ&6ϴyyŤ<,t#PnG7|洁,wܛ{hPz5K0>R~ϳގ !Z`ϩ%MxFsv!k.俻&xRҡxlc;[` ".b-fNK \v&X!yYO*i&Ԉ]%,j])E'tf<sFFO 0% B$W@Y8uI+nDK[%$)r~98{è164]5k0gvxHCt uqnI,N1Fu0m0gn-z|=46:}aM~\ܗi1;{k\W*cuPZ_+ی=`CQ)op1}F1+4~}`3c8OA?|>KKK j?5ⰻKt}"e3B?yv:pEMej^1蹅+={؀C-TҰyR/؇fXZ#V&l[ ^7)uǬF1Dm|Pvn@om^ķzRo|`p>]࡙M$2_yt`Jd]Ԇ=!tl!L"r8W3$+~AnPxXCVmӧm٥}mW;7d٬O(G3xf7a"8c[zg9߶5D5WkȻTgC@? Zـo'JuO@c{`tH\Ȣ{q2uїƎN:,+}|^('qh<؄\5Ks.fu scyޠq;$'K,QS ߘGz*VLٸ͛'eixIL,f3oإLҧX ڧ%(`Wmʭ!@U$Tۜ( PE+Q $p\}&GB@n5Hd!鳊SDUI4#-vM9HeQں# w*P `@#&c)2Fz!*Aa9d ʠ3ωf-],Hr!!P$~z/+eggޑ0j0qlJ(1)"ArA^I=+r۶?a+ ܲ1Jwstڧ訆D'^|32_MpH5hc.ZCd=\Bft;%/0Xp< L`22Gۄ8LJm(('"@GTS[/ ⁉i;}^# #OhpRe2e8 e^8aD:!uy >F_2sB"r=Ptwr%l#Qʜ?0D 1cr*[h*Annd5Ft ڨwVzYgX<:NF`MUp@>0 YZEpi/data/N.dk.rda0000644000175100001440000004262414421664403013214 0ustar hornikusers7zXZi"6!X4CEW])TW"nRʟ$!K{yN+,eYG м]e/Ia)fc?xeO8gu= "mF8#O95?.l(u`rv>L6NN1t͗3sֲbIjcbz1&}{'zfWwSQD: L.DDvaǚX.kI#:Lg+s?]I/ p`_7bCaOkKA0]Bz% ΢7)@"Զ ~Odb#oLx''-c1Q.4dC-zG 8jZ4@X:+y9}8HGpBeCDH!}PgrBat bl,[̾d+Ipϩ2+,z*]kb#Mq!Mm9~!Z#?u#= Wct"R*Ҥ -V'`444|]J6DˬWUT,8֤Z@sF>H7J&׌KCZ  BdJ|xs֤WGVykm2YL+#/7cj=<|&HTgW -8!V0,FC+ SdJE IJ2`igxL7xWb~g ^̜N 6h/ /'w4 *͒p//{}D_?Ja01Kn*d(tkr$q[b@BP4"/,^ӠЀI_'Է}WPwMmwW*-~(k{@zi7,إ|ul;A!I;ާPݕ%" C \t5'$U|!<( P?'cUp%J}2Ưk\0f41Va6 _a)& y\c}X!qg08>yr^EunlTI! At+V;%6l S.|tiRwmeZD*2jfb[|{o_̇NBBou[#Q@f8yȀNK"H'SzQdbx,.&q<8 "f-޳/FU` 'q+7Yy(23sV:~ph#d4X"B-Vu)la[܂\>EzJűT2bnįwFy`$ފDp3e3O}A3[esTRuQGIݱ1p2GQC<0'X?'auwPXY@!dȴ<^Qh[~c=-z ebb/0Y!Jb\݂SPr5zїpQ(7~I\]]6fJHŋqRhmu_"xR=pߠJQ7V³m[:L;̾l-%SLlN@Wer,=pE?3ezij,$oy\tEnp>- 6pi"@? 1%C5wkZA/J ƁOMGGO=cM*@oY+ (g3>*r-HMpTUX("6rY>US:yף5)\-T3ra m,7 F4hlxa_= !O%G. 鏿#kIa@`XBWk7/AN6\nd9%x_X7GY&с(uY2<ADpù(Uv'lc\z/U#x_A֪57d]1J* a#(iȋ}֙l`'?DE} }:HZaK WBYփdY?!RHFN!Xg ˛Y!è'Kk_rAxkqNg޼ C'0њ+;QI#q4;Dkydxw 2byh1z%jw@h_E芟 S7| z cϫ0uǿH"J@iJ?K}fHX3-6iL)Mp6oNjY*OZK 57h@YdLƀwjN Q2$ZIyߎ|?)Og@u}Rs`Y_GK"G☋ to]kM4a$pu,Sϴ; I :aHRx˺78f!ϹwQ *tn,KC|OL88Rwg;=gǭe-#+C8D\דݐ$)x茑^xMBv햊|[K"Uk nƒm>j5\5Gˌ8/fQek= ok)c˵QOnƽX*7-^ Iay+] "R[Ax\oQuTϼ?|&2ʓSjET E0K,_:Qxޱ 7tI/5ytcg1t҅%I"%^gHRMVWLl KTLOa/,l#⪲taK:rnhezdF) -7URW p_%V9ߗе:4z VШF?%-I'ƅ1M'5akZOKZ"_Ʃ53>Qߒi+{ L⇦ab)# ^Ф?X!Qv|I8Ojwivz"> $pv~6ۂyu2)7:?'8wI+snjj ]X|;pPX:N;b7^{A1揄6˥Jv:GH7[H ƭu:_1IAXbo.n{gB[,@0u$YRmkBBS7ݺYhƿsR3S߮N/ %ր)v_ ^`f'a5t.(0auMvDR,wr f ឪ*\ J|Ԙ}0X眃=㵒Ugg_ԣ2 Vw~w#zJByxu{`nT7 Ƙg.Ka)4o/֍v\XwT]ހX[ņSpc-u-8M\ϿяsSE28dq.+8 ؘ͆W4JY~E5 E~[)K}ws>*Kh%n2$A TF3&PH2..Bw9ZbU1İj9&P`pdԥw\* uM5۟_UU9R}`쪭:ss$\E |4 NzjH} -^9YQ%l^DB@`L#@dr?>0Rb)N<9첩Lm173UPL^7ΥXXjT(r!u/?)̘_d4!yZIt޼/2HCbNյu;Om1 A3!Myb9)5MҎ<e@Pfsi;c[= A3Rq੖`0ֳ&ӯ@̠]LdjHav|ȰK!76n&dK1>эDExѠ&㗥FP[.? N3$k45ӵ9:J0r $ҔM&5 "~_T7/+|JȪ%`΂p͙z[_QHA+^ҍݻ&Ǘc1,~.OK}fj T%%vgey]ܡ 4Ok t[B4'N4Qw3P-q$%ުn#Hc?>..?fu[~'9؀sHTo@*j;ħ`u%CT nAgwBlI<0Ez= !sjl=q>Z!MDȜ~zzp:NI"l9TgCa/,$kƬ;(R:%qifטpJű߾gֻU{Z({K~F;ü`, B-mUǿ4ok;g[L#ʒ595oX͵a0Do_1pʹxn:}D0$@°4KZAYxBvX4нDf7#«G)~0˟i(]fNGޢI2'WP$h. T!~D~d5Դ<Ħlco Ԛ+дz5;hyM@L:JE|OZ+]Mdgu >/n^s['ו#c/1 7K{;jH1}fY(!1 ီ1ӮZب.P!Ͱq3s%öRFm+չ!H5 ;͓̔@\Q>z;F1"]1z7Z{Eϟh%j!3+D(!`;T+M"K˴ HIz c8ڏUd{*j}%m0Ğh-Byи7>MGE>8vCxw7?CPTe &К}DCdmaB\}% ڙYGxWkJY5S(QU#ޭ7 "Wc!<"tvU{8>{Jp9N,w]/P^PҢ m&HŜ%aQ0u$~,Ø{* n- z :Y˿aFy1u3`nƀ61m,HM$rqW _t|VQix>p[x&ud*!şfUϑ;P+͘mY6|fwoy_!#.]ޙ@{Vۙi6tBpϢ&I[Fl7B# P_5_9'[+hK Q,鬵f.Y?~y<eQ iQ_ ~"wVԼo/ @#K~XFzUe@)QUnFc֮|a-1CĢAd>ƝIrvT:]8`fJB|͞gZ Υoe,as tƽAU>'cL]ł+ؿr:&YV TظwFJw՛潆Tj?툩,rHes#[X >[)^fQŖ' oE!)E6@ym vxv b{uGm:j-hD@=Wu+wW|)P8Jw>X=μ/At_sd 8 XɌ'%#ycL}ʶ#`Wu5j<5ע'ҊzY6nSlVGKMu LNсwP*A'SUXP@cpnp,|mN`RT#FuۿS=+>`Mu^Efj8jd N8u6 ,so,UXLUUw"Gf9p&q Y ;4w[,&WW͕(#PDCQ-.\!jlepF48.I%aKFM+BE<= cL߹G#26`l  sD-Lmꚞ{C\$hû[|=-mvLb`H<=6dO/lVizst/ە%7ݎ;>ē \dوIWͅOy3'=((AlYM (*e5[>[%>(|Pʊܨ+`_N0w #.㧞0&meS ˴]_h? E6D]k0ZܛwaDJyaPs9=9 )Ɣjl^;d)mJkD8s42zI4B]pUίcǗO}5eU{Ӭ_{skءvAڸ({w|S$wϘ̜s׽\͜4i\0lu'/U|ub]ЭӼ*.HR)k} Ifr@HߜL 3Ơox9~`lHTެ'*:Z@aP.P3[ ' ie.u6ZQ'-D(΋"T+⫛H1z#BqAy5_VJ;oBt}:UkŁH>c3 rȪ|hS!Z E뮅[x1Cs]>F)j½v"8ΥUV$iw™_g&ʀڧ\gu U>p f6P[Y8XHz`74ӏ&@Ik;fO g 1Ulݬ6hG}='q' $In"ܿ$8z3SG {`vF7V)d:L5U\5 Rmˆ(P/Q*/a=5ΧpMlVnHz.֎#ټ}G<,,m % (~H-qYC 2t"qxtNd(Ei,dO͆ī^#G; wu:v6UCWAsy0pܟ4.}m]\Zt˗ jw׼eIM(C.t3Kgq q>ÝnrbS*aK[$6Zu2$At̘=z&NYb)F?YD;S:Y~҈^Jfx}}R*8|dѲGQ#ce&r:Q6.@e]T pSꨮ<0x!\PX@#M91% q@QCuA7gk$&S/VN6Oh\+`6StdTd]-'Ľx,txʉs|'QU& TOyjNJߓ.ir~(Y}XCX1-4Zr{~Mc^GDFۉwb_2/ Rr]E cǃhfc@=ʢޛݑ$O~^8Dހظz*/KșpZ9E#t6HT*c$e%(١`U9ֳ_Dk;j¿8i1Ff~LOWTkF#Sݷ\a*>0K~ ig)Zk4*6_ f%1OX5YuI*Rf oZWMw%Q?;*ѻ9)?h@"kX2|ORa%<(RQ>(/kvjE?j8A$D~Nj:_,bt8jR"FtMP a*ԩቹh[= =b~« %9D@g8sE0P0}L̸jGu7xWo*qʩZE@&G=ք9sr3}JSvB\s/Mnx l lV|TʢLRy 55ZYt#2,i_8Ll)vow|"kQ^n)L"Z@ѐ `QwJ+mwgu@b^EM!ĖᵁXkC+ E# Ѳ^U ԒnҮ٢U!Hϥ`^Dl (vMY%FnuK"5Gn_̔4JӿeSjj8j)mKQbasڮY|"7V ޝ"Ebkw"+Ƨb(sMln@hCD↝Wӧȥ`cw uǟhcڵ9}WE ZJM&ffdɰ8+[S`Q/fp6lD_\&^r8~;_L`6Y0R]"sW@bN@3C] J^՟g/IߑhL;ۇe7!N9xMi~Ͼ6'jଖYӃh~ER}M)\RF3j 5Kr62 I$t&ּdž ib6Y=qYx!_ejwF܋hI/#:@%✴ċ  +DF&xqV)15QWZkx\o#eR1z΅1AeiZ hm!F7pP//Z <@i V;bʠ8C+("\2\c,j׳059S=!MN'D(^ޘfSSLQ.7_ TDŽkAN <~Nd"_es k1-H~"|fR MP$@+p*j!S;(7׌I(RxmTۤXCL(XHQu.}V\4Y}%A/>;{-S0̹A nU| 4G^ wǍ16ֻ\K3fl^yT>J $<!6K&^ӽqܺa} 6:Y<~_`MāRgdJ 4 Ҩɾg'?yvQ;)պk70/K0 @oaGmztA ,пߴ@hQr?CXWu ng>jpNl<:b eܯ$ƫ5K*ԣco " u?wF-&Ɂk[/:PW_C* e"Fsˍt  ̔af)g(Md7.wI^gfHtHǻ)fY " PWOf"vdEFH'RK҂'|dOԍS{)|R,uǀ:표Ci1YHɃxSwhy#-BZXLfi\2S0 AV/FON.P'#R-`_97D%B;}/H%S3CZ;0 ZY9&Ʒ`n_d諏Pffc U k2Z7t/*R(Ԗek  빽sQG%"mBGW?D nOMn/{eM=.F^L+>%,ݛi!bhd)ҡ{s1!L\Tn4N s,6& ,MN||MDSZNatJKk1tX@%hd;K_ZFf~]6ue~P1ZAVhϋʔ/UM>tUK`@DU/Hρ7~'_):n^#8N0_4콨qEQsc\i*z IAUDLh(Uт(\6mFV746hNN򬊅z]%r/Jn!M< [솴Q]CwM-f_AF~7&35pZҿȐ>-p~*Lޥ Y/je^RQpFe ђ_*$wrJ:|&XU1EvZMZ"(Г(!i*5F6 6T2 W` :[/gJ2vHlImv|);k)*"_R[^0:Mw&@W!i%~3 ^"NA5V }NO!L$k6yyyu>W,BLÿ1v9 ȆoN{}?L*Y\[ɘ:~48UK՘¶.#3<*] zHIv΍îːrV66>.IM(ؐ[qo A9 z:Bri Q 1&ۜQӪlUF8 WJ[)+ؘBޙ$zP$TkeL~y8Vs]J?|>j6n4$Z.?1>7V~?c.ݗ>t[icK:!o^:e!i<5GPzu>JX1CK0y4[0DI1D ;Лi\m\?L^ I Ӂ¸G1\tť $IJCufJ`5cܰY;aQ_3QLz>0 YZEpi/data/S.typh.rda0000644000175100001440000000250514421664403013601 0ustar hornikusersBZh91AY&SYtT]@ P@@@IPqPAfA6F Ljb<R1?JF 0iL&C& 4 p h4 4* i@FhOJ FChHXm[[m[ow_1fsht#LE@nw<4)o =gWywަ Vs~+l JAOX tA: :@$d2i 8p4HyZe g38"jo$&uUԆ7'Wt"@8pjSH'5&@I$D!1"']mfN}!!BBB,$@IaΤH H| :)  BI'pc3zda#I{6me 3*R)JRUUU5ێ~vדGup !$Ki$NI@$}W+HO!3n`0BP& Zjݻv!qv۷n͛88j$馔)JJ(I$I$\ (|EQE 'I$ όYUX dFbʪ"9332 lJR%YfffeVX `o,'+tR)GH&GYf8}Ө7s6nݻv֯Z'ӹȸOV6oYfUXbS4M'@'ArE8PtEpi/data/DMrand.rda0000644000175100001440000045325014421664403013570 0ustar hornikusers7zXZi"6!X⺟])TW"nRʟ$!K{yN+,#' LjEŷ}w )Qi[(7{{-t ĹkMj)/KC {1fRWݱRIn H,*i3AˠnW>h ץF]ro=f.y2sΌ؎@E3d3#}++MZl~ᙜ5G#Ů@LcF+}r5hfA;}Lӕ8m'2>F'VJJqf8(Ι1yʤMu֍"ӻ ;b`"{LoFS Ɔ[鱹91m;d44TDggׯY={hT[t~c^dx6A#3s5a=KnYT,~TxHmb k5F%]e[`C(4:3Jg[,Sig9CkvM \Nǐ0/o>JOnFD:Lj )kXj"~s d~R^i cS*\054@I\{5TIk|,PCkv7k_9j=2@qaSItV@bieYq0_7QIH/!Gg}0e3]?_$6.ӣlWے?eI<Β2/3,-Ł\Jp b!3A 2!l V4??1ohQ"*Vq3_mqKmËu򔖒pA\k,d@S?=k}ڊPbD/D-ތ2}@DWF&LlC)f!\Hm3{b&qU8m-c{Ն0#T*QkX!z^SfE m[552 J_w_ι܀aF8UI/JpEH,S+ gv*0g9j5mj4 <D+8$!qcO.oV|ӏV;cYdU̷-)u+Mw4.m]Zs`O9 ,MHP0`CHﳦ:fǂ.>l! 2[2swQYLmU"wDii`?v+YCٔK r{m f7nmG80+č0TC1lzN_a3 a]E$يi03yIAG%KDZB'4vtPum, yɲ96鬟RlHwHnY+z06sfd]+&sW%-/uSJB[AGH_RmMk=fnl}f J-VF;?Mb3\QCT ,/ɕH.T rNyz9m:pLs2Y[=Fi@nQM/IԽ睌[s L[.I-Yq0SU$B|)vx`r Gy`.&d(F,pP릿ޔ .*"Y+8KS:PAV9 %?MƭZ ?D 83=bB]b/-!խ Q,fU;2<.^ܻOj<[Vm-(ZI8rtEGOãXufHP|x +9ewjB:hMj_QDkᗔV>.&E 1UoE^9K77͙mm^A$[ٱGNt@~eaR{'dW-?vsVpSvQIl$ߙ 6p) UtTK {2}]zc2SLG?;kз@Ce-or򎉨R4$ ֶ^##hB7*#2TxDs܂D_낼Mƕwhw_鉽@q[eR$t=z}1x\12τt ο8VyNE84g(,aICT~t+L(±͕JG9 W38gg>ө7BSiSrĦQٖ݇p 2(<wV!9n5܃+mq T SxlxlD3ŅobIy4˜$+Hw|'8Fp5ܙ* _W TnPd!|gҲ'28&W,K`q 5'TKc:(Nx wZp1k8cI,ޥL^KbJ&#^L|M\78 DlCH4tsk4l(xX,je(@QX.Ƞ˭zu kF&7 ZE0)ˑR8 ӟjg6/6AlHȾS/vu75!J!)ݸ(+Z onu$IQ4tR ~* TnS;9S+[-[cS66Օ)jf K \͕>藲 Tw~%ȓ9ñmX޼,;+^p Pu&lSlWJxy4 a\JSG[@b˵ԡNCcJ bHiPM?:MXxTk=Qw4)znsotJx@lWՇ0ڬ<~ʻX~TB2L1&Fo~yE:oE LK1q/&>ōZhQr :Y7wӈWɡ|'w^|ej B{1s=f6y.]PT.yӻMJWRXχqsNz /ַR|y s'[g0'nmP[|LLM.yʩxT뚗 8QG7t:<zگS@,ցԴAgۑo>VFp:%^"|``F[t!B.) 2yYV@XսѴD֙ic9(rmІ Z;4T1$tE.Y6Tխ<&k]{Evzyp1a뗚3d w)mM*ʧuxڇf~^ϧXVJOh=C ]  ba\oCYN %Q]P" _fl|548ߠh{EV#J )H頫Z 4؄p>7MJIG@Ot.o٘u) UrE>ApJSE>E.Pt* -9 bt&no^A-E 0E!yTEZ~ߺ̾ PPZ]!՝|A!aJꝍ-ftLx L7rs:|:_a1g>uU6+xx/zepCT7s]S[Ls>ɚ qSb<՘+%\,5d&O_hP+(7mO#P:s&YΧ\6lnKn"|˟- c.DqңzoA}&F#J1e77EMv b\%Gl)}ފc:eaD8z\Lh0Դ=>0:O8 4G襣3IF~1d#^w7\UTm21 3U30IH*+Y72zOJ\5d$:!eTH<顸Bm ijJڊF>4PisaR+ӞrE/뮏3S GW7D7F(*!7bpCzXl+ي RV3D mkodmLd FLq~J2+P̼ &U7G+J(ڑJĺY'c) ;- }yLϜԳj/sK÷o/I!$ AyjWPSSA(ȡm2U_@'G3?0-|rCRA ԝ1c_iNgV o-fi.i1i궺lC% !So;^ 1߀UJ_ 8 ! ,9*Q Z?=9 nġΰh Kru >쬓T%~SH3 _4((Rz(/~OŸLт!_[7rmycCY|A 3}}do=(+k64?ֿ˸2#Q45"!V?#x3)ٸj;$A3q:P`-7)U{ 0cgu@NT5wO-a%]xS;i7A;ո,1}OQg=$d( BQBm!>r4MCSny|!ű(>d>bd wk.K2R(Sϋx`ჂVZ5/аӭ W[w[:@ψocAIHqS+*ڜx![+\[=hGBPʱ4s*\cafpўDm4]PyÈjd0>xwA8۬*f?rN3!d!BRmHU{.T,ńǜI+ANyN_z+A?:f?kuS?R1:b'AhrCzoǣC@ [#="5@ \N~c\B.9U g7"D_лFŖGCzO-t_ 7&rEhp(w^`P f|4 9Y7E/t]BEO`%+:Q!KKρ#f9 @Aچsg2RB02",cK4eN}̰Fya{kVgc~^qu׎&H\ X,nPez瀰C3`x*kԙ !y"8U1#'qd?&tD1d|~wk*f`ϴFUd03+:#%0ZW\g/Fr}b8,ۆOg>ΘZy՘:$^#{se]3Ş5?p?d{_+)ꃴDA g xA@T~aZ[)gSllWP@$4=u3dllpQS^T+%정cI]Ww]0D۠{B˫@?c?cY!_UJ# MWk rü"nY3q9Y,ra_I#?zGSjįQ?gMUӼSиzؼ>Y6܎pG^OR|]iaMa lWě!N~/עL5m;%LITa('1pU@ݬlpޏt7_CrͩH.WDUbTHKx~i|,-b;oi /,wHCdp7.? >\B=GJZh%3e.rw>пddο׷\>z< PB5,c<_Od=Udb=]ﮊ-+T9;}-x۱ڃ,}NȖ&l.h%8+C6KriFb4C^|Սk7as%Ԥ >:QNEPF=98h("Pi _Ć`\~0iьg7RG8@j9ʷ?nԈI*nnFUǖG-/{ohp &dz [IiAUphAx](68h1ERO]C! |1vtxy:ya(}|~*-E Cyi&iV&U{SXg/Ҝo6ljQ䌿/ ܌HlM\d福!lpu@Yx<>w 2 k$D_ErѳBBj2Y,)Ϙ&ycdɡU:PUMh*_ {J=(1b3)B.퍫n*-؋[(κ͐ =@X G[} NiN7=(AD"p1*<mhuqI!7g&uz?SxoAlm۟kk:ڽ>7HKTkbVr=3CPo4"Ⱥ`SS 44vaa ׌Ë;3eK8EPQwK(7ϟHeI$5d{ڃtV#8i;S\dN9_A㍩Ԋ ]O6kc ;\EZKJ8n}0@?hwqT( )gXlOqp8jk)7 Sa0L`vوfRnǛaNԖfd?bB)/a֟ad]zH1{ |36ES>_ ulN{*( F%*er>.dHt<̋y't |E1C@#Wr+~6gtpwsMDƜ ț_ɞ,t{Ofу)jS=fuolF~)̃BH7uu/<>ګL:,qժZ-S ܉G18dSuژq9iCo#+c3WgnNt>x a춶¤WnUv%&>3 0KXLK=Ј}_#t,`Uu)='br[="9ڧ~JOŚQTjf<}iŒ6,er* iL9S_1Ў3JZ+ 2py$=S̝.'#+b$awBQ{)=DrB^x($*gXQ13\I[`7vB䞰BK2DC 1Rzy#{=/?vII:X:٨%3ͨ-We/O6R7a̓NPF`7^!ދ>jʛ7|W#y%HL4uxC+ĒL"xMWݑHR䋨`P> p!S?Odz [.5cA%:ef)ZFֶ@MXbRx=wfdPQ tYC롞2]I#Z쫹]hxh::լ)-3Ẽ7q Vc+1KŤޤ-(^ApP&2^  J"o ӷ"?z!.cFZϞWG ٽ108cmG{:k/p綂 I*з9W&4o3NcQJaHo!,|s!=\$gM> ,=j>OXBNs78'ٕ=rj9S^kxa4CvjkDYz?>s] YE+_UhvtR|j90Ѭwj"W^ݍZEeQN!Vy2;ߧG\z10{tS|Eu>fpVV|o$V}!< <3yE!X#m.dKD5w`/$#э3< ߶My 4W+0MN (xkT/#ɩ=URDrghc#ꩠߩ$~[hkѬaS{c!dGlY# H°M? KdOh/e΀ho\>\ XDG "8u݄ͽmS"ޘfie#[Y3zSiNpg`F=.eMk)|i[sLZbVDb{Hs<(b"?۬E2V=a$Vɖ}~jImIG+eĦؾ"4OS~NrlT% 0qyY[(I4&n/|(9ZH,R\ ~%:CSLq@U#^K&a{6HnGp%LJNn4:߿cXvuխ}^o1Ϡ3Q#]ybmgL`d*ҮCdpU>Gn7t/)ONWQ20cd*fkj"̜T =V؋>w+Ӏ+M>PCȝT#kkQ0ʜ՛c(yV+Lpʮj Tt MDx=eCM*/*Blz#a'vO5mǢ;[aa^qq>&)I|f#ɖuJ.,37ҿsG Ā0˃+]CC~gd$ÛŖ95kKCaw kWxlhuӆہ4w`MZI9wrq/+`N'v1 iNPZS> C8Y6$ʒG%\J|Pd6tG2S%o- ?շA|T+K PI@78JjQoa׉ME a7*̋lvX~;,?%4Mp™˳L({Ţ#}+JO_꽣tdTiW rSz=&/GaFYE1%轢$CNS; Ю~k]S x׶1{dqoo(Δ*`L7#JJn+MRo.\˳6O2rǿfܺDrWnv[$^g#U}Pvwu/2^fh6,ޙFe9 .fRĮhûyR|iȽjHx+Ի{x)igi/5 Xu.Km]9[i= EɾCta[(EE amL +"ʄ<&d8\3B#b}an,"R«Z`k 6c1{"4Ah2T* EďC;`0-QׂzJGQ;)W\odwPqW"KG#(F hW7  Að_$91%b:_.#]T w4&d,M|~ImJnq>Gxk$Kk-:g1 b1dJ g~Q,+ 8I)̧?O*w'哎]\p(VuA䲂' S?lFg]uQ=Qki]WTp]_g~/oz[ P3g4鼴/1˙8$'G47cry{'ǗEtִ`৲{ E՛"+ʾf\ +(fi]%{oD,Du_m5g$r#(=X980|xװ#݅W>>`űS38!GԦ# 6mwhƒ%.?\(GB@|csͱ;0fw 6Sa&"a)k7DفkO= fd؈ 0bա:v4_K~:ck} b?2) ٵ3wCS"9uͮ1%D&4rfd'Lb `Cn]ꨭ5Zn[Z8ܫI6vn#QN͂+h^2PBLRX^sh+o}a>>9?mUi!:B%jI_vHqп]7VJ yY(.O?8`6 x HTk736x{w/Kqdm1㉊>/#9O(ia }PD @}al2T^JikwS.H*;L`ojױ7lJo-eHR9v(‡?5ҁ=ELX)„0( ͑GYX`9.AM!7‹?2U2<.,ArL\QT3]5my*Nَ:QUE|ϵwby4 NgOW(͖#?vG6½4ȌzK&.GD@3Ց571ejrF̯JԦryXӥ`QUcǧ4> t+}#\ -cQY݁DUZ W1;p^H䐸3m'`GmDEIofϕK X˭jE'ƞgn̟?JJ.@\֠c#5֍6}}Ъ=rvcu5E̩Oj)'lu^J qN:k:T#=xY+i& ;ƨHKk2z#>]-L(|0!D**P9+EqBA˖3Tch EwP\+Ǥ* xs9rbVyPl F~n! ; 2p+$5>^NЫLx۝;RwݳʨY}L=xk'yKx8pGv'5 TPŽ*'!rLtp.[;M4v.3e>jlOۑ<}&3\7=2UuVu4?׵cx(DI=rj AQ\W{0/UFڅM,`xvzA)ܭPytwy5^B~t 21"QbfݱkV}$TUͣ {YÐl*9`$K>] tאLp2&6$ x.q"^_\Bj=X Vb&yCls([km?^_AڍXBB?YAT# (7h%W硦p0MG:y+c)ԪŃF33ArhHvj}׫K|K׮/l2rNQbI$_^l6Z|I}GlXNE.;#3uzqMXZE,,g$llw„="rp^;]~Z׋*SM{^$]v j<2: {k^n$\֞5#ͽ|7OլJUd*+H:0%?ql<zLazwNwWRfڈd^3 D5@M" wL 1/8Rh!Gvl)_)w~AĤ\O n,\ +/S4Tfڊ"{sG9PbSD_>DVvMIZ,b`+"%.!Ȍ)1W2u&޲@.mby>vԡ}&+W"%ZU=іFjCEF-~I,A Y:pL{隬Rv̻g0ُlNot囒&)mZ*&c.fz\Ӷ&TM챜X#|[[K@i@%  lF2'~ϰ7$Zan visEo+߲:/G s6$"{ϗ-b3/4 ƸOѻ^D;_I,z#,,PBgUUH'189Pa$Tڷp۳XS,#ď9=pM0K軰;K5~1`i(/]n/9ڞDL/),*-h]gkD˥>;4;(AQo OcUySqҳTZPtE-Y9d%DQE+_W+UB|u RNN)q ;l2J0'Wĩr *pXUps. gK-ᅄˣiEiqًAe;,c>0gT}W Ϩ^;ħ\g>m0G^e" tW<vez-bb_&#A2-Ŗ]-xGDu%l^ס< O%.iGc|#mlg; v9%oC_ KzzU $IΠXש/ Id7_WՁSWs03iG;IFn5B.;\R7n$e^ d3›fցC`YDp~Q\&btEAaEqz8A'A;Hz+.`(!v6|z;AqoґQ?b~ga 9lZW('h=dnFR X=*QPTȭnOpBR] qҦB!:#*?I@k/q .yj-i`Ap0i\)SQu]u6ֆ79 ,U0Jkъ-#.!cn\MuqXR%q~Qk.)ʭG="RˉY%ܫG2VQ()!zyu|('2Fu .ϙH,i+a;3|22 m?SWt람%+͌C5P-Lݣυsx3هXynS'y35HN1Ql8-zl)J*hkN e$g{k'YD3lOz.jI{?MX '0FX哣δ6ͶevY}8q_n_Qh(ӔH.W6MNc\ST2 ^݂-7r#/׵dT.O{OVb~@e5d1W!CƗgr]È%fPmo{m<*_Ld/= (ug[ךVIHF5NJ3gHU#.qwZQ̩].<Atu18ٙ0YRk U/ME0GOfMMEzm=7)`7*e8k`Gk#DpB=eN# y?Dڅy4S #{瓨:qR4pTRl]oD#rVopN2|吚 j3jK)̱}A\StQYDު9\W4h=FgWuVo@4;: lk*Hϑ+ !@Pڬ[*Z6E 7Ƀ?*Uׇ!N2 ]6$xlFP4'tӓ\^ #s%kD+n,憮h`;@xg.^q Ik.ն>dMI(C[6PMi4۵ZEUws0 .ГoD a}dt?sȽ0ѕ /z,H\FbBW3V/n bMGHib9=ox$#6 HJ6oN@yyaF}%O"^G jdMDLOʮ/ _k_Dy;Ʉty:oZ °Dټ|Df.]T}lKVk lb+->Vgkޞ3vN[2{z6ۉ)oƍǛ,[6U~̐=ӿ(`{ϙ?;l:sr! GƓt*sfaːq=SKYufQUo kU] p:tϯI=Py= "V1Q^ʺ,"Ia:t0[Qb9(a$jxK5_XQ&.^ʟ\00:TSC0Fvdv=Av<Iڐ㔱t ?##3<4D掗zX-_S4pV6Ԗ,&M8x(I)Yh⹐-$:!8ZA!TVL ܤ爴X;&tJiE74'yQBh3'FA;1f?I*RebC_(幾CoLAÔD[JHY!I5 }!=$i*̨&u-ǀ cX;DbÝtBI ;Fc)Iy7u]l)Ng& ƚ50fvd^\9rDC/TC+ :/C^5鼫h ODvYY"V$nN.و(BpBfrU+ /R(:Zf@ECʮMh_uY'iXJ?WBh[k)g,1(3`*lzmȸ Z}zo')BLPþ:2vDYDii%ٶ/Bמn66Hm]I?o..ma^RE4!|X>^nAPЈm~. &#9cu2Ӣ~d{|&%@bu';m>`ݯyJ=gظRGW)eɄ$tXϵ/,uH<+\Qrq\CtցS[.,#j˂:RNə|%ҎE;VXv+L,ph})rKl(fbȾ@8 X@<JGCR e8ҡ'Qor *XhP{,\F5.vjJA=~2~sD _wr|\ *mQAB H@^QoV3|0C{ը%E6h0G )WpqR%g]kJN [ 9)c{c acZ&F<*UꘪD7}Z}oiЌb,Bnӳiȴȑ%k! K{ Ҳn8rI} N-mB"֑ئFYK!{v%nOB L}1!b(J4`G*Fw,=tT1N2gDټe_HPڨ a;aaa8lԒ-!_Q;vCʁ!ôbp[lb=T8= ߉1qҶ{*r}ۂͣzOkl62j #w[1ţ;9B%zNhj5!IXC\Ŕ0!)E80\TcuNLw{ӭ,oOB)+}B-r>o0{Uo;{(P'%>7QUWQiTg8 l*Kh2+y#&iI7,@,9V '1*F<7$'zfF=쩺L!gdm+õ)U`DnghKM:HaY[g¥c>~:m|uG 53PEy 'x. dn5%OO 揯%2X(Q~eHӫ_04QtB u%a 207Fql y5XYVKō3S 'yCd.(+l+I_8 =amH[@Jx+'YscΈg޽Hж%9md%%i!\пQȞ4گU{ǜ }-RsrHy__BP-}J_ &oE@bF[2&)"P[4 gv:aMbv9o=jtlE6;*kqW "5Q=([w=<}?`pŻc|5rU$ٝt^*^ILE{(!/ԣhkI],iR~{kl @T Ks.z 'z֟KvLǥ#5sΜ\3UI310a$V2m#'e^Y8<܊U9nfN)KzQʜ_orH#rTBX;VI>NG@ J\bP٪Ii ɮNDю"e4\\`E 7,8jmLN!c\?ыyn7y+PȽ6 @~ӢiΕIxi]Pd- \.%/7 crLa}G*F-䮞_n.hcz^/QZ 8%8S: Uq-J..X$t ]%v mu5zL<r 43C ׋娪+$CMelG'񴯸 kѢ`QN[ִ;ĎƤn͟7"`>cފ~wv6JoԁxK.#_֍$|@.-f/HeLjReY Xq 9%@vc˘NbVT(Pn '9/{[oMYsx =`KAMLZs+CR!xb^ˤ )WU@B;rw8ǘ2'(yy-X %XGc(VuIp.+^w=VDa;E(zfnވ-dwfT\r)P7Ca30 [*-\XRУf f=E}V`>'] SBvE9n7E&r۹Lb90"r[T`qlV«P\vAKͲt7u'XUq5Y7I LAV[mk,%2g j4 4XXlC\^gw_̈0tˮgdCm`38hXٚrOI.8T!F=~[[%bds1ʗc)pD'Bܿ ggbХGDZT~%aA1 bHJ pTRp'VjlgǿS09 <Jd'ѩ vv/~K뜩Z^UJJ-\33 YܕYx&lԿyЊ?@VQ|<4֩Os;Mp^+8\R7[DyFn[d :be~9NUXy?-k,'E|I8YVʎstRODv4,Ua9FƉjI{+Ηg}f5l.!DF+8%D!xeH-@X !;FgoG1\TX4@={EE.J.*O_so0h6oj[wWa{!bZKOqnunysA%˂Q3K{'6Rmr:|V#7|1;n%4 S8`RvNcLK< X4Ffg+=hUYU=Pyw4+&8*@QM+vx H CyR#:aw*|Dp6#L'RBK}He1FxٌU:8xi#|xu+ =&n}O "Vx}VRjs,L} RI9m!lvPz+Q+C4޵cVԵmxSoH%0Ov[#;7Zdclj#.WUAd?p*K=/MLLp!-o݇g{8]v|o['ZGy&(VcZ SC޹lr A`Hzh܇:t(3n:\ݹOKa 2>J\n!g"P,T&#gfr# 2pLƦ#EK VwMn? 5~ken2rM23= x*G`0 Z,@D WG6΋ӘbBm{Nh0ŲxAڹˬSmC Adp(aa"}srf"@ҳJ% ܉,r4Yk{Er%2|CDUm՗GXN]ogTZ 4kd\pϬ_p#JTPln>EkqϷ( o즢)M.MS8z\X\~D_R` \Ic$*G3X};I;k5!Pfӭ. p@dBƄtm}$\JvCN_a\jzbZltH]: 8USGFhOhѥ|)#gqZ(JXG#IP_Λ2AE:&c"ß~itP( W xc4hj[v%Kicp``[ kWѡlɕae݊d3/ 2g2z\@+]IPk>z|Et6@~7lČKfeoLR;Gn:w9}y,Ez16t];8HyM#8'NЁcN$m `C"ϵ*!jSڳ~[;E/ w kpϪW$]w߅;ydt3wL= ~74Aa(\ <gk,lB(_0pYX_Σt?`\0J.wcSSE9 6.`gqajF|Y%Pl~28ܾR{H)1֤ n?=C#EMpAx@r:x!rȂiǮtYqXAuJ=&n*( (Ye N\m V ]FVs!"7 _Z*} {Cd"d`@AOsIfϿ:۩`SҞl6~nd2 }yr愠>)ӏX_f>.:( 6'JͺQC z'.> ht i|sܩǛ/ׁÐ}M$/-l[3 /·&ԇ2ao9ۯ?T ٦UIm :]@ Mn"'൱0 3r+>IFhm^r[8rHv:6 :AX"Ax gΛQS܈J5Nt^VHpN/Q,4F&{1]uyn1xl uACmQ8n4BퟫL0ݗ*1sD|cuW3m#Q2hX3y9pa2dk'@4y2ޣ?=TD23}3R9? k6}4접d[] H ywP:j#Qz@bʺh{1b1rm531HD2ALA\Gr26ZuTWv/6[ 35uv{CS idEX\<-dw9 9dME=vB^B>mgedV/1a*! ~\Nʀ5M*Oם_11Ec\m/UTh[PPg~sNIUP,UbQHCџGҚgla%u33Q23J({[^(6 2vfa#ްR!((eOn  13B4pL {e-K!klAtmr4 Ϩ5!"(<5+yzpOhmJKmqjO4841;HOTq\%N||J#7n߶İBߴ, O7CGAW}4ђL‹#?R\gi{cK'g k|(= Lt 7.d@7Y"cmTO61<D*ؗ ?hBfQ s_ J}.Q6"v?ID4#*mdTbijWq$-~ysu}_)jr~62^x!N 8N31L%ξ40,Ƀ%El_؊z9ryAQJ "8A7`y~J) Ux[2w@sl4IX┑o5_*]domDD5^L&?A7`kduYA?J!v#kG;vG {ohj9:`T+\b:wWei1Wg/8ԑ), ݙRc dI*܈_ 3%yGOFИ n[ A:fdTu<+GOJhpÎ:#rMr3*yt:M2wQOI %lwoM' y1{#v*u3M"$r+hx[ŘJ0 +5ϏZaRٮ&K<tFGՊ}SHMFI8.*1~T2F^I±w+@>ds"G92=~jOHzVk9V+:vt4OPG _);" A!|fӎvTdi]wHk|i E871aܫ,Qg 7.w=.ߴ;¶O=GRv/G}c5Ґef|xc{Z 25ΦCn !N Uh\>Y:7-[3S|"mIEyx xV x@pag @hђGtDtt6|0ѹw PB 23pnXD;b$֋'1 c3G4!?fU9Ȁ&H}FLI36jFJy̱iNz=xoG YM(K :x v!3ux5Z+$:T[FLkJ|12m^$'bQmn$__o#>BC餫6fǴ_A-t,}{,N/Lm'͠-vRƵ0eƯ'2ب[&^4|w*r5[JmN v\dk,O'pH]?rN!ޚ\)Xc"H?}g 6*7ӿ7qox;NY2MvL_]g܁+"ص_5kz_t6!(`Fz4N3֚pȻ/OGҞLv]# uc|ɼeЌ;{_Gq@!|,m 0^C'|M[&^&m9Q'_W4ڵϷi1un (Uܷ&s2Oq>$){aSP}P`z*]r~2I_'S-H*+11>Rf鐀]m mwpVrw%Fu6V0PMH!l*byrxk׌A<k~hN)-~hus"W KI)+ :6$CM$Z}D'rCS)&A[fizC J~l{D*-amc1%rSXԴ)xsjNfL|5~1YĪ< ygUWGSVn-VDŐ5]ה@Do4dP'*2y*{O?|Z%6WCabh&^x} z, >wCptE%wWÆAe qY2߸|Q#TYt9墸*˰uwUе8by hRO^)/| 'dWH{LyL^H)xJ*4e-w o)2wQNo:v^>6lI T'g-%(uѐ fiOq+GY~t-8]n5o q2I j\oO`fuZx@Hhy54$5dc?Tۤ]Azal[ᨆk~{֯ ]=4-iY]i.h-Tܓ|+vȌN~X eơIz ^Un+e;cHߞF<{K>L}~+t%5Wb^D-Dfgu(̀ )?r@U[Mļ%@߈>\M\ f .Fb|iAA2QYص%YNK5xO q<^i޳`u6jY1dO{nVW3P;['@]!r,35:>^|x톏ӠN>HڮeQ+XqI$U䀄:g ^={ #{8oꄈif9|ӱ/$QSՑf(˚͋£=FHEtcA+0HZR||&ˁv@ߡoKbXx EԣWMny8zl=&QG[}^TL)k)hL-\Hh/^B+aĒgQy EŠ3Q!{s˔i10< F{?T+YV)3:;szҥDj |wŶ܋FNQ\0a؋bXӏsbB71 M\v,DL涫m1y{G0wy!Dk{@g]NχEg7zjLd A`\mܜ88AOkN4h 0MF\*TB]Y0`KѿH$I=E>h=ψ~o z|ars ?;nGnF(>|d ߿5\cܨq%aҟ^"v2(i'-7>Z00q\ X%dy7 e:tΪENKQyԫZT>,y{jʍBd{.phbD 5U:]3xnr"z:_Zcl2BvG5+7^"2!A 䆤K˜%Qj 慨vMVe6LoWM [0vxH c.a;lHITs!7^ T6~b.g&yD;?`;I*l<(m7rDo' ZeF ̘}&UHze>gQp~ѴEpHHi,_niCC_'D 0|gd޶+̛~H> l|xh)G|;҄eblΔ+9&cEYpk?74 Tic5Wnh{\VRMn(UR5BF%>D<`jͼ{pGx CHtC3#]Z3{,懔~ #\uLG`ZޟcqwF75/j:x>#CDNz('Y߽7:.}19? v 9zǬԀ9wN?"y˅f ѩ=t‡6^jJQs (r|]$e*&+%j+RAǯ{q>6AVV/aj-۹ԏEkO7r_UC5ni-;rK[dM }e| N`2d%{nthHIpj 3`"2}6e8n:5.[GΘΐc@ Tk2+rvRy( Vn&F2ۆmFVN4 3^0 c+0v_ /.mw<\tL8F}>iJɿ4j\OP7B j-]eVu>pͪ {{ٴkaCqC1*,+&XO!BiUqASh- fyoұ=j^wzoKuF' )[ʏ-m8,1@K{`ڛ/~@6GrYߵpZk?M5{j#dL؞ɜ{˓Pl]H 膿 .' JQӦ:So {d: zni\"Ҹduʰ_4ҋ%#|+F%4!04h88ipNQ1h)l8Ƽw<Lqu;`)f͋B5x RB_j+$mݫ g4W|F6Iz4>qZ$d&/me]%/D振>Fx!v\ 7XQ>X a&sEMUneXg`,TWb$ZS,B7SI;hq]VE< =㡩~}ٰ|Rbdg}_ ! >™h*Z~aIu#Yyp^Bl,8 <30NWmQ9f`un~)J1QN94(_XWN|I%I YM!<2ɍ4 ;g_Ory3s!k[dEBx:h\oyRC2n]ўފi\Pz0M 2=BQ⚭鿥Jd .9 H*f _F:ν^ᮒi(NGgw?]ҟRJOĿG$a5\)|Wt$z卻t+B@$?Hqۚ.7w& Va!UU6'vKDwK{pO8M6Ƣ &;Bp6 S$0x+BMGίrǛc|mV sGyHE¼b^X_uCVz~3,в I4BVޜ0 "Zzx勺LŏD!O}o"b n91+ 0&n79G?Lo(!o$%1]bGStnꦂGY_kZl^0eŜ DNeWnVDً"δK0&P(%_%H&e剽==ݧ3?^hc#!g/fWdO2N0M~|"x ˜uyIWB{H.;T|N}P L[0z,-Egtuspq]1l'>iZRc& +1|T]IG}ϷIr#:Km~Y;*jPL`l%wD`^Z3īK )hpQ2:^ gu̚D1x"qo)؎#Oy=ݏozk?ԹSa.صԻ]EKgSBq{A=@MuL!НHhi-].OBCK@ `H4'ncq([;!ːofbxC j^2`S b2vNam*C9"eӮkRm EZݧA l얩qݚ`d r3\ŋcCap_jox|s5(O5!(E‘kpc ) $+@y|/3BNS(J)EH]^Mнڂ42"`n8}|T0[eD*l3] Na{V3:ռ+uP8G䅎A2\ߕǧ;G/ Y|r9戯B&a m8OK=d4+-Q>2i0S0pHr@Vәm$,G sKZn/h OL&Zg2"/WŊ9/3mbn8$7 gvuJW5Hrk/^WYK,ڿv1dtu-Ycѳ%nɕw|lWX){n.ࡆb8T?dg`󲏅^g\@ IBsO@'hRޑae×*R^dhyE%wp)Kδ#q|ـ0ڔ$]EH8I4ԋB->o+I/GcZ#2UFxb;,;s)hC~CE YS^IBQ}5C:꜑t㳝d< 8< QJUYK⨹(T6[Q >x-3=)a^ǀ߲};A0Copy)VlWP 6N5fJ˂ٵU9+PƎP|E] 2P,w oqt:Ŭ®.|ӛLvT)+$9TmIKF@elUydl\C?ޖhDz06|ao\׮`*Gzui3UqEj<A&K0ЀF>} GG>Q 3[Z$nF|,cwçIFjիZʖ%UDl[L!} _Q4b6̧n 8c8@yYڇfo9 Bvnf rS=JڹXzGcNmDZ-{;QqKHoe8EgwX#붳7_o9>v=&txEtImEu@#Mnhe^n#"01q;XZ@=‰5DC /MUO_|*KE 3HT"f#= Rf)mzT.V.{(X@:ho%vG8ˁJ M@P̉4|~D/>yw\s>4:4 ʤ5T ,%*&dL TnSlhqI"Vfޫpy9m:k y_^2*oCg Fy*6UB_ܫ>?R¦i2WwU39~u .Z0x΢y5DLI: k8+#8 }7~me7;VhhK(:RH>-"oc6rϱ8)gQˑ'?D}eNﭛKβ? JMIEJC)FP_pRxI7vTc(ѹy$чn`0fꀫUf )m՞4k_X>j{rj `@Q[x #k GkX;U;X4*JjUa*o =,-><:x^!g,Ig_"#oŤ2d+ ( Q&:٥BU' iꐔ]XʶԶPYB(0Z jil:C ~$ 1`h/"ݵ} WIoB<%?quظ)רfx[Z<易X?tm2jh`DRǡ-fH@K / 2e+jH83./XܼU .@W<y~FS0N%H;>n*rjk!A:cnM7j\'<Hb5v A-ML$ZB`sUD{K-`X5sV3Bnb\kc=皴cNbaJ9U^a8~\qk׈`׺LN<(|]Ž *֧)bz" 'ƛo&u]]*+MK%ᄷ 3ϭ5^so?CrW` ?d"l)C̾t_R3ܮ S{nBd0z8Mpirن co|Dc$˥ =$ߖ}"*Uvf#xgT`͸;tnTQb/Cv>EU9{|"\h uϩe5W:H՜;n /O#X4s&OB q$3:#+cћrSuI%H$;Zqoddj`}}`Jh*7#[1ݬ<z-$sU%ɛy<t4Y4K*Dfy Cd(38e/A&o2ؠOvEY'(c'o4E3Б:-迸1-e:ٚ~켒kkgH/KAYyPy|}-cW#5Cz7A- w<|j&3W~3G ;Weqp:,`^XcIEq] ;u|s /f3_;3,)Ih(m+:YM Q : |C`y7?$W(^'Û5]kRXʪi;xM첺z m]ِaKd/~oYKi]d}6YNL9'2ձ|/6B8s s.-+PiڛFx FKw`{OߵK6f[A^8(YtTuvQj1h ^6 AE=(LUv*/϶U}[R䉹nپ:qO_:걍W)1:ϏzrF*fϯN>'O2HOUv,5C$(C_K^ vZӑ3v1+Q2gLgaOl5RgyݹQHz?ip4)Wc6{)'[ljW VB*`M3Gxf}'el:1vS%.d])M2"#g$-ZzAJ L @xW6{hIdD/TiQE^RGj@Sf@Qq|?o ]͌Iy7t?o6āCw@~܄: C _>L 1dr"R2[{@ -`Y{o)bK=Y^MR4/rh@3#'τ^qP(sQBȫ<XE;v`4[0RR X "/5~9.0 ";7 ?cwQzsnqՕMxhºkiFjmaRv5ìTo}JпÖ~ګJ` Aj방^8"FApmyu쉄GfbAy*-܈ژ{_sa) 9vKI>j8j<.B.$gB%g㾠&c;s]f4]GZ_تЉdTʀ-NB*8vߡX"`E-GU.X2BE[07JόOiS rfQLFYDe=RK@E!?DS)n;OS 9z>f!7*CW7fzhRVS#l4:zK/tfjN}K/OUL""5)~kjOHeE1mie+$SY\~+?lY^4g Z0]zFn 'G]le| gwǺ ?f.Y'iO+jSK'}fT~_KzNO@-82-%!0PO-XԡُѶ|+tx[$ };9.glrن{I :`RbKi*<6s)F}q۸Z-'ɸ̌g *#0daUP6< +gΒN.'BaG|w0(y +4n N*+pګތ4@@eѮ4Vx~_ovrI>r)aӠ`~(L*qPKӝӼs(=])_r6`&7.N={q c'Q-;S=y[<EF1YPa‡$kUX's]j،m`m$⿕rvH +~ڨC+\)fwrtЖɼs_J~L2cx94k7V և$tl )ׇ$>TGU/_T# _Ked zBa7=K3ﶭ)jZ'_PB r .D)K_OWnnYl0P }hRVfF>Xwfi~덎lΟrg x39_%c[<8:J8 ¡W@hd׫ 3KAf M1GA!:<"TL'\a,fV>9] oFk!2Rʝ }[L<`тBe5m=LgC',nPQ_GIGP&[ /}urAI[JukU]*"^#FVQ>!5:ώ,$JGm15f^= du;]+NP#ḠvRivh-qx[/<6Ypw&R@ws;C*WʑI$U0todh[226A^k__AixbkW9Amm10% zzx#[G'SX,"]̗)K.(c LB-o)t&$H]a%3NN 3ޮu0)ge]nf&@Ʀ[Hgc:lI۵Et|a|4l^_{eJE?ς~_WUMHO(<`<^OxĸVT0PLӧ*Fohdm8: ӹoGhhP!NSԊ!26q GSDOGŖV06UU[ v9ai½'?PH=X 8[]qxxi)ȝGNń\Q޸㵔z¦#XJBVmc1X˺M_3a>&r[D$հ;^ar |?zNCO[t2U;J./HޤtDlA en,ɉqLЏŢ LpJ KQV(&^ sˁh*fEUL[" %gDBnb2$ԃR1<'mL"21sjP/_W& );)7뵳X$j;wa{ikՂ9.!hx]GL hK HP*/F87-٤FU1=ʈ=G(jR伔zܥM]W!bL!7pРTiO6}3(J&QnMQvw+dl5z'Qli)ˎxˁsė88ud;+{m_ZtJǹq'}|e$"(Oïg=UlZ/K5aL3> v[0wWa*v=lTzjǦ>Ģ7ZwWP /3"'`nuq`,Q?mۆ~{`udf,BÀ" Hi#ih&0ѶŮ?O!]O1L[:ޢ7՘RIx2_5kZĘë1#{HZ@gg?{~l.(n/_ʓmr R֛&0_xSLhJQӿ'T&BQ;qri⽅7{5~Z'YXpCj &M&]ŀT?(Em%Lw{ !DԻ/ U'\G¬S ;ѷt5-@ݫ #qLm"y) y)NVONBS2':(=_hKr-'(_DC/w"CS!.DΦѿ&\cq@ ZOq?@{~ĺ^Or:%9>ve={5"]γQr+;6c-/0.βp8Aa x9Sp<6i uh2 ud[u\ ^~3ty4<`6u(@c.Z-SרOK%n{(*bJ,b\ҰgWr│ɳݑw4qts"&%Y2k/ߵ`@NK>jFe5'Yzג~++3i BBL*Vϭwpk,!*z='} ƺ/ߋGФv`_6'ȭ[߉iLW-oCyWHrZe+ WN`IIiYzB2CnОu6o zŚKg K=D6 ST8Iϓ]C@G%gK~* kr9a+S=ymZ)KlѺX :x  5*.?6gk)/Uߏ-XӪץ-N,=PVR!檽P_%"q3zZh>3D8S:D-nf(qٟT#Rec EnzVyK'[0}eof8ReQIJ5zDfS-E`I/K'qn\T*ʕoCa.?~Rfͮu,w\v+YK G~:-oxy+mF't&ͳL\z˚jEs`-|\|FS]'?F^  oơ^y]al 0\s"9=ct  2ȨD/t%;|ӭ h˭kS̓2mI رVTR ҽ/bAb`aed?* > yTwjpIrb4ۋUTWQ\J2/ Pg;[l6v'*= єW Vd J˝x6zw?a+i6.ܹznej\;›+=Ŵy%2_Zu5,PoeDyGS؃[E7eD#4YI咰ړ]eZ&HQ Me ~,<̻EkðV1`Ȝ}ACr؃;zaa!+~U} X&00uX@JvMLwGIý !X^:x*@Zs, ,c.+"k%>#Dc$5UZY^AI( 6lJ{,m^ y*0Fasz7>%K."B*F=Gc4빛jlf؀rE9#b"1[ge9S`a[?[z>1)3zJ?6$L{Y @.@_

\m>bCņx#W cշwzig8H(.|P۠scUqS4U^=x{1%=<ѴJu=,eNcx*IJDT;|r ;S6t~o#pjP޺`EhY9=< 6B5~8^: JhZRgf*, !V+k]"N上QD!z{_&qCiBUKS u0ܛr7ŷT?buúâM>^5S9{F&B^#X,#\xz'uj)LrO`dƌN+$ u3llOJ4+q TILҴoe`@.9hE"|4OZ?w c"4l 26J>Mpm.VH· G< !n ;Cqy&'f`-=Us->dj fų.:U_>%s)ħy'6Ǚ]$2*|+lUbf " 5=ہkFMm@EE;B;e_%2F dwSqOS!k7<~G"/kVNQ%4X/lV9/^n>av/hlv3#xj is.ΓjusQ3pg4ht Oz )fЊt0H@-eO &V;8n% 7a݇G8f{Tз(xͱ*/(KJdz1y0w½kJC!zRrɩvfOV\'Y69mΔ]u A5tɵͭ{ClY7VEU@j l8.T#@&UP'<31' =prL/V3P9srD|xh )V3Ruals ;C*<(In$) L?5 \b펐j? cII: $^ttօ,[4FM |}JP!bw.drsWY*T4 DGnt湩F5^{bX13v\d&\o;>)@02۫H.œ2li[23+x<^ PX}s-L;i*)ؤ+/c.vEe '(v(A3sD ڬ!xb-j26,4\b|П{Xqq&?He~>At/q gNBt]ǜDo cɎ5)*eL. W,L*|k5"zyEh->:Prh;-b_L 'uƯX}\hHa!5u5@Z[ic鮦dAF1#^`[\][O} )>TV\.*3gLXvPx7.{KHӘĐLRxo yamGM@9ZO(UYeVU܎z|KIKEPM. uo@ 0V/Ԑ^@f-n:Wis *O)-1rubsd73ӯk7ť4GV3&#-j3}GJ,r]eꅠy~tPU3i'p+ NܠCFUiqtwۭ_j ?*bgJ{m”Ϥtk]늠Žl^9>.cb[ i4^ܒU82X(x5ɧ3-Y *쭡Z"q& Jl5?h(T9: x8JV8] _tMY "09.%"HJ~d`~py!cR23s6 +K*N wL@ -SAη@^X;!bhUChD႙V'Zl~QylDߑԔՃ+8/[(h2,懶(Ռ63ܞ"ŕ9o5 ȫe<BB4H;e'G-d_~5XޠlՀ((yxqA*G JF5\2qN.ZǢd+ȞBCD޳]=i.$&,գLOA&fOhTgiN6?fVgNo:鈯)y/mq4{܁J^.N2`^bȍ*?~j/Pa3 B 8(6JiJhA۰%$pHݐmVep3`L_zAECfv$wB=6F"K7a '*MDڻ6hk=7֎>ԧR.OP bk-Dᐵ<̗jϒ(YIXu j5_n:# $$kˎ.daD-D B'TB|8Xui >^Rh !ywwE(ɮ#*ȉL`p %HO"ɕFq$P0jAGaF`T vTH{CV_`;Uߥ[6-\;ݙ(â0耂"O;%t^_$yeep-RŻJF1°'{zDQSYDD^ACM ӘWW!8:I֞0kڇH C@y7rtlq"ajPJlń6]p)M3F;@OY'ʿ,hUߠԞT: &#珌-ƞ€,7s<#\f.Z-|p9Zmp@PT!-#=kw7 X\-ngo\kmʵx=XDsI7\?F摧8}wS[Ӣr:zMUtcl4>1' 6= o}#r5cS| BOW]3Ԯ_PL7@'.(kq>{O}/."_It9#TGh"MWS" wYAXR;qA܀#gZQOȂ0^oGAjњ' if*-B>> 2[ċs;_y+,WHb>GzljiU,Wb|IR}ܥ.V D *F/!'' liIRTm׉&_^^8hfH ;IEt [H]\(V wg P59r46T/4B(A;=jk6(I[? e o3v{9TvfIQakr"+{UZ|@+W2S }'?=wU}P`{41B'ISCU)o,e[WfөqOhb?"^QI~iNFfI:ɮft.CqH,4dJBM][Ɏ?1z%NNY/:S:T bhgd2 KOe}1qLǞW-wRQ5tt\0l_usȊ<-[8cbɗ:?4&g/T=M {7)g%4O7VUi mgF\|,nM)ߏrrWCE$2ġ%-^^v0X3gq+h}iv$!,F|'"@ح}VL"I4P4XE(YZa'R%{eKgYm(%tSS} Xjb56 2p- }s[S_+5-E'Kk4uF c5B}pCLZb]|C"Za^ei<1&#rgw^=/ qـiҁ34ߐ=`'4Nl#-\AT{X>s 2J\l#Nѝ!O" aS/ݕC`=R6/@& ,kŨ1"Z28 o$38&+8c~.+$s%XQl u@8X`ޕqkj8$iS{!")v^() 6Mnn_,vcsMO>fL;(=t[w:M-Lft[ VU},*Y_XB[<*P%/ȝ]m<xdz/R.4e2^7~o* Ԏ ~i1٥GGuy`mFJ&94GMYHͤԌ2|!z8@p-l!)0@(_C~e@Ļ2_IeeW+A"V.gy*xTm9SĆr_0vhk'_v͋y?,%aufx.܊'25˒RrFVv-[] 9!-~T d6oI!vSG IxJ@ -ưOk=@%o2P^ |K4%qx8u81:f/JȻ=o[86V/j{N ΰtI(P#O4łn2wn&[lzo}G&ր\;(Z ZXi:Hx2^M&|MnJJ ٚE8#.卞dG'Oi)ހ91&VTOP"MPH$hd*g#Xu G/;r;]+S 4Pa8i.DR\rF[SAդ~jCB7 UĬuy~u0'bN A^QYSX{<%/o>6Y%B /o]E5bHLT?`xhhM#[F~Fb k J=-摗7& a3& .w 4:kxtŕpB厃T0+4 8yvmBxأ6tn}p@UPЕ,qni;kCFz *N;+"Nj 9]H+@>WKpW?5!E"꫏^w3BѨ#p6vN tW6K_dE:4]L+nއ-;3IZ"1?baύy>#0de% lB{&P7xp7?gc$I#lUWxipSI%n[ 2;{r]b3Na⻄?%SS 8e> kGǑ$@^" c[]Q~rH+4_al 0,0}dV>ҙɧ[SCOYE. Si :>:aookK()HL66þݵXEy^uw@Pg YsÉS 0x%ZS .4c·„ M`zӑf *8jt`TECC}rj5gO E [3UsM2R k6goc\> ;v@pg=6 *0p'HkwZг-%_0_p )t(V4:C@Nª1x}%5}Q73^PaTMP1_k~^Мێ%SIxl>rbiЉAMd< zI'0{/dHkh`mxZx nȃ2VCܕe]I{VGBVa/5@8>ZaPZ(&4n K)RK{Jt53cԴ]䗏sPY>Qm߫UKq;:c i'~"9 vDucup¶TOsܟ30Qϔ760x5)fJFuNk 5 |볼Ɏ#WEmgd<[&ԢRU& ʻ4`Z{i>A6/h]2k(&n4g+c"4֊Ɲ/+Њ-z4g3e,:3DD&Kڛ\ʑBnȟ܇4'#bdTt2;q(=2ZUzHw1^=ަKdD}$Zテu(bM5Vq8_(aϬ 9CޝzУ$F Y YnI8;N~կ2Ը&u|VdgLC&Ώퟍ]1 fme5Q@ȱZ#0ICY\\N;b,L~>p31)pX TUV0*(.̖72@Hk_Ά QQD E7X=XXK*ӥLORէ7.YLm#qq9>mI^9@ & ::dC*WSJczyĂ7m7NVD3)u߈V{WŢ)_:iEڟ:uSB4VBݺkc^J]orhvpR ftʎ_YX[ĤҮA6byUh:@B#]t!=W F]YN[Hg`߱DL54P3/޲;bKjvokw ;Pƾ̑g[]*z3-z˧oѠ.5ɏ&#:˽tEX@AwV36݊2*})q'9C=8?+F"IaUK/SL& ~%r\OqpQ I5Ø ,{{P4>w48I=jy Fq|-|z׆_Gpˍ³D., Z>=s2[BQ?!pN+TfjԂp]_;tˏ2쨽.YrbDrvv&- WT}Kjhh{+%Ҟ={Ox!3{:&T?_Iɮ H'݉JC_5 {:rkꦩ I  oUUm>!$X6svx ê|_bVT5 w;JF9KC~vT:SPEP+Ku~?_}'l8U雉7g}%/Ë29J* ^r|~KLf,:pz&cfKk/WO7CetXB\h}t9VoIkDLY(~} -6o_7 fz7b~Tw ~ 6Ng&7 =jm ߖђj(bVoUgU]FV4e |5g&4*yF0`SV] JJ@5$e:F0#k-^* rHWC@_:jⷃtyݥص fdQ& &bi0ն>e8z)j@%W9 ;iŻ`FH<'!5؃(j=1:ϵ&ANG{cB8&#&,ހ g}0;GձP}*+S`J_^U Wod<0ul(@|Lq љ)j1Nn꬘dsGG+ئn d!fѮIZ0IyݕFefթ6J^hoIC@;Tq hǥtčv|T '9Oe K)n5>M@̈1}țc?%fi$2 M]Z[qw9O&C|zNw^#(^!aCN.z4&XiҼPcP{9!hsلw,Gq?R OwDpn[% hLZ@KCi󜹑jocGB{*)w<ϫciIG4m(*ŎQPcwr sf͊!:BK7FTD5hYSgAgtT"ICFLNl=T.9q!Uԇ@HE\D니{Lֽꓧ=0eB .> 5#;)0΅ :@BP E2Hf fVTDKy,xǤP8v(Iq +*rQ" VtcM aqzv;ݫ*H s֥)RKċnhu<[܎;(yKaC\@Kb^I}[uPXqt!SA70^cg]sz CȚ|ztۥpCnCćSfV) ѹib? פU +L릐{~ej'@!м?zgHo C}E Ebn*}+7 ^zYg"QHI*ן>eéX򷆨\a^ =D ګ4sFbu->Srg Ak)E"fƯui4Sώ+YҝoKFxICqߺ&6g2845&tq <;1w=48g6kI%ʌi QzHd(\B9o,K;eʢ H}X݈xF Y]zւI}WVE嶇:m/t(~"}X[Z푶\"ƨZc~ ݕ<@0 '!H)>!1Y:Pm~:מUټO̟kWIa YU~QIz j׾%Zlִ>* Bt;4X{ƍ-W67,WiJmL8+v?:Ddb;PvSN挌n x8EuKm\1ܯU:4鯮"i7KOR4Om86W2^tQG(#ƶm%u& ݣ8STTV-Nۋ=2 滀LOD&+p)GYIu3}këK|ITWR;۫+rwGjXcC \%3Gv C޳}@pL΀A6y<ڻ=tAz~ᐛ:/kv.M!x J(J?øIXꜤJJ*ۧrTz?}Gh+b> XF$Q Vo,JT3v`Ae3wa|qQfZ=tQo{<0ޗ<^6CʁDy׿bXK ci%a %aI]?3%KJ`*sⷩz((.P9޳PsUU@6 %;ZkrzR `7ZlkȞP'xoAP^jS/Ď|YF_e=%y^aծ!>=5->)}r~ U(قO-e5_2m~g ,ć DugfxilATt ;\UJ+3^m[e'#̭G՝s(Hx+٬" n ,|@ET(\8 RdtO.9` Oᣉ y1A_) Vd+Y5nܘs1*ȗ|xAhbswY_(IDX:"5 4ȍhI&^D͛x1@yt"d8 [A mqH#?.:hVyIQ(!pX8սzʼZtf}Al FrP$ʘvqNl䄉up;%"0S>\.pΰC%&o͞A ŋ63ǚ掉o(.#`wIy#=<=t-f.7|FQ;Á4gbEeW&9PvgFof a ,2\O%rxd{a09r3-Gr9jfK`/u-|ӖP:WݧŹz{Ίt\Ա{NwdU&TaeO3hdSlł:sClI饁AjP*qDCe7(Y wc+Z_l˅+/G^FšM9⥅yDǦ: 煛ΟGInfVI'5_EtR^0SSDz5wX[xdےq+`2Ɣ ^dž륦Ű _uS[]76NkK ^حv1@U:O6F->Nm=gC'PcоӫAm/D'XYx%jt( FP$1Ȃ: )27DWN+A`%X gjRlz`k y!6+x5(W&g5!Ʌ3  Em}&֯DEDz< )K?c1Ep + |= xk,u7X9Y}Ʀz$JUi%߭Q`AX4#/J\Z%n$'틇.D(e 5N+[J){ҳ4(%0M}FEBk J]6zy4R['/,b'6SzG)߃WTu"w+ާEGF;$S|;l%ddsy`,@R,hȉ*kGWrtN{rp+BO\QkVl#_q(}SHJ*8ѥI^LŌx< zc̤4sep:0wAJ<6a)%ݻ橶Uvt"\ Cl̷t\L'itNqb TڽLwtrt/?~W#f6;(Spg!A9m'fLx8 BnZE_*} a}Po#,+9[%QDF.GAIQ+INd׉f#pγK\3&2BC8$RpmpXͰ a4Os:<|BTzJ?:׀" jxWE4 8:ˣٺ/3'WYq`^<^[ZGKTTL*|1_.WW,֊5ğ6]D3rDf@`Fi>fomh/lѲ*t p8|pޅ1?c4%UۏBvR 㻦nYZ@ʘȭCVe" -"G5vRIjٛl䶈| 0Żjq>OIOcїٸfPzR B( h\ ՠ,CSBɀb>}+0\(v!0vnӶ9u˯*#mFv:&FQ -l0!x0!ø堲`pԥݑI#OxOx9w8[g -x{ԑM̅pv;:ERkVYJvIzL7;jZrMVy<ᇋzq6 ﯷ?'Cfǩs4iUg{ KHeH3 uz30~%;OI2qZch -N*d'Nm@2/Vty7Z72sWFGgI`NM[̘9đCF:pL,oؔB~%&vKq]lE GJ\}`נ4z9[Rm/c5EeNNw wV Ki58߈Jv~G.mֵ=LP1Vu D"biv`hq7~b@Q7MǏ>òVV_*vܥܖ CO#Ak*6ώAyP6VjWa7B }]h6y5~vmpsuv&Gsa|ḑLJ3n PTE645 QhZ> D}g"|xLXA&Bilt9r,~͓`1Z14քKԫ ߖGh 3M5i4|8Pj U(H{ >hBaC5sޣ7e0ERM-ї/F=M,RH]lm5歵Tו:_G6#H4L^9E|ERGЫYͭopn{|{7?T6+*Oۈ '?Gһe;f&!B&OAA}D|'J.1V,`KX ;Sw`Zt`Ew@#<,&9ђ^o_xb̉\9FNq[^I ژ:Xu&U^XWv((^À_=Ӿ$]{*OX,hد?e ;Z R[ 4A:-~BX|W dJHV̀ǓP i)UuLsR&b!1֥)c *M _&bi*Yf -R@@UA-5$bAE~C 4Xa5V=lS(AH`Kc LBX M; &qwS*ebȖؖlS{Dn^8*b WMМϸ3 |iVgei1#2@ŀt2Qǒ'݆3ɥk?3z;ۣl3O=(2M/*>Ԯ+8Pk}UsST͜GsGz*͖<ovBKCFW=N21|E[Ɔ&%(i|Gˡ+g0dXҬ|fPs Dq趔$䂐@f| ;$L'4ÇêQoq&0 %%xw<'uzf׍eVc1A*A̋/%9pyAʼn¼0Hv{`~SȤ(H!c!ث9S3f_(+_8%X5-'ƵLs|˦WdO;+Tϼ8 5[fJ+%x"񹞨7AY[N59'1 ?{%eGy[l2[QAJ>YޙTɑPNtL`r(֝@߽=} ИWCu< ];oDo0Ys~=GDj^>a{3.fЦ&'j舥P_B)r@kI>g{37/ ]ŒiYDQæTӢBF$2S𒆣[uGY,.q~QkCVPQW-gƍCW4}[zxk˩-O)Pu,Q򘂟_}|A?emM K @/`+yY?׽4fw9}iYy5Ԧof)d +U/p$~EfLQ}PP]7u{{Hnc%o~ް\"'8) !+Q͔|!nLOA |?s;tV]!n%{ lMIPNxp1yO1%WS:1T=ob>$w3:)8b7mlWi /c A#+F {1ZH*/] 84ۍ&+0 гP$DGDi맄G8Dѷplc{Wd$-udAΒwFr)xpR$4#dkR&B)%]{c{qVg~UĪs$̩㾱"7:C8XR|sxʟc Oy+:ɞN\&Lƛ6Bͯ?UCo@*"I-uk=́|U\nnV*>"VR~죯Nl$̫+[S[\h>യzDS׈[%=C6-h+Ye3?xFғ^D FV|ƶ絖~Wm % s9~u2'ɇo_<==xc(ͼMJ&&mAt\$Y$A A,e~"ޔ#Y8-zפVNWL['qo?aI!aAF7B&ݩ&C|bn x[c=|-F`mn L#qsyǫH li&%E Njر3t\iU`Uʾ'8!iLBq9R[9PrqRB1g2e9!:XB* V' !1m_gojVnL8/N5Qa79?)0X|IcUT>ăH."֨[t]ѧGR tn5 r49+fz1 MR+˰%wNY[|[@?UF6ىb H0}<15,u] mS]orgsB&qXE9+{%(%|ubۡp!%3o֊lѐcXn.Ehe9l2gE߻POꨂ5~I)w046;`$rTMH&)r* Ms0f,[w /W0wr%bBl_imkA3D9vjGGtHE8i3 %cޟ±oc8N݈f.&PhI*ߓHcE_yQQJu_ &>GA?|"n迌ӽIy:hx ["nqԟamE|#e[޾`Pԟ`Қz :[Vf ѪZXn]vtreӰ@6a&gK>i6Z)n?zrS(voOLd`mOq/3^wB]B9l5ԕ0ë ܰ)@z?!ʦ ^Ljxzk[~FbZ+ZK4:D;*LCMѪ3fNBԪY4d˳0 _#RH>ꆡa,1V0ƣ,VNQP7*qWẺ/ނ_}NJ{v4"j ^G(܃IݟG2##M)Ca % ea.U*n̷rIzQnt73Pw)r,ȩ̊RR!+R,=Y!Nz?U൙Ո3,6$"0(kL%/Ls qTB.~0'VXl*kfI.C}v<:Mz.4 ܣ 6 Wɷ !if4Q~bkHMC? A1 :j)S-9!wuwDuSr,PC>00Dbo>,vثv'>b$en ,_Ɉ  W";|>qHU}0o L RFZ+lmm,'&ߪWwbHCuHĘR١#y9K Hkՙ:}$ p˃i^)8S$!nJlPabc WW]S`c(I#MJJwE&ӷp7 D?E={/n%Ҏ9"i ͭhc"M)Bsvs?rvk8l1{]5(v'$0V4:HCCy\ wt6gGg+풕jI##9!+'.sŶ=n^<ݾb@uޡqRoAEm |*D͟r\VV[$O#|$]yaя~ݶY+NY̸0rJ}9u익Aځwx(vS?!#(dhG{(whH"MwV(]ad=`͏>|ߧ.QI˪ BO%dcn.Ecx$Cityr 9B9UXÏG3h'TwNZ:8y2[8=1uĈEרJDm08p9X [bfaCp=ޭ1]`6.K3/{ˆ7vSK?qĩh>ˉaϸL. -=/E?[\¡j8}B*Rǡ!dO{'/П!:QѶq޳EOVB&gٷǂy0ZD 61qHIҔ >.niס TBD/bj=:ˬM;S4%Qs7iZ1&xcМ8%FEhqǂ# x m!?xjKpC,@q3:Wq`?rAb'*˛-*JfrSMhC ȗTJk׃ļcIf7B_/'{3q~+'X.Jи w7t/r Eß}$V%Ӎ hC'bXfbc|?-SvŶ`pW MHv<̶usPOBK")iqzN1ʤi6&Q#%EdţeI׎0/SV49ǿWʃC5Q)$h|0_B.l,a\LdBU\t=n02 75.oD*&y,fc=PD v阼ľwk<~{|yHABoz @eK%'U<54f4+!A+U n'Vә,͈~[ܾ1 bJ '͎s䙰'Wb)DPHs{1=m/\җ6ꄋad>(dJg|NBWB᣷E<3t5Ï OeG s~96I><kj|B:j̧e0Lrꪉcf} lN\h n-$ڭc^! ϟ@dLu1& aUG2tIX\E4TH² Ŋ4bs!mf 80^WuSR:6 Z* pm02+ |P_bcw@7l#Bϖ- A`njn[q0hY:#Zm嶷]oG||mEe3;'>iB ySˢ! İM9 dzVH_4eoѠ2(g(WB ^ <3~.5,#sx94b]=N]NŖ (qDIh]o.2TqaNLT|ߞg/qoaG[?Gټ@+A;جх/*(#*<,6ha \M݈fחeq1WKigc"ɢs%Rd?[RН ^]l3_qyaߒ"fZ(ggu4F'/!S*bˮ b-+*]dbҔ~|}g'a khKVbj*[0|Vq=tLm Je*4=9B*}S}q576 ˆMUQ^ֵcw,v$Q4Qù^F^]#ݵ:]h,eǚQ`#6 Ef5h%\8K9\ŭ6~ebֹ=/*w*4SttKP[\At/z6h:nzkЈ:"E>yo~Bɫg[㞘gD{ 4kB-hJZ i3g iCus؂Ie}.Cx]״3C=Ŗ yU9 N]'q3JaB4 SCd>Ghbk] ec8vS܍31=HKU/o&?LwRFcY-'\J_i!s䶃^q7y G8_ \h*r<(g)q ̀q9Q@ݮ%cۑNGpثٌ]A]R5>j\}~QyN3xĎ,:uݙUBPwF dU{9D8VQoct*]wZhۿVK66]H".WN{ Zw8X%lyQ*f^(u4)yw󸱣P|:k@Ωaف&҅YHto8&@nߐNᔵPiE/g~A"-6"A䒧*.џaadsic#l RA> .F8)M3y9M't`QDp&ů簈 q{ W2 ?#hs6"MD0Υ@x32mKVm>H7n@FU0Bh&8)ܾwr?9h[Eۭ"agCe}%5-$oXAĄ* &+pIK! CH-1>x_/|T1_^`yt;Kk6ֺO>E\ XuFk>]]07aMZ 0T_{vZS89|G K+CYy4* Yxcް ڪSWV笤}\y|uOZBŃ :0BFm|K'+ LɴDFQ?9|8_,oXs=xh+Į5l pP8<8nO+Hd+y[^oN5C =}סNEALFred3%2k?Ozcl(Q϶@ |,~I Hz{$mD3 !͢wĪ4mG,D2r,j|ñ:_yW\Đ鳬Peg.}laߎzB!bK!坽@Q$7`i $ ̛9N&*L庭} ٲk\mJMաʂąꐵqۖ)5du+½@mǰ%8"< vkb&¥Rk(QKeIdl!p[-^ifFo?X*[Sb͆&pWBB ֘ʸsVOpF^;+T#Qg*sgYe} Ec<7x{~ty C!յy`%͙X_ȱ HGaLe_o)DKƕMT2-'+CV'r'9PsAݑe8Q7hB;O),v5{2tpRKgs/ChtbPJ-/Z=R-]bf'ҖRk%(b1r;ٽdx~O1R3EY?iR> }QKϒO! ӓy-[|3C.ۤ0ꌁ+ظr&4T^Kq";bd_(\CI"%0Pc [o_g:)("S.*V6#N԰ݏzp34dL ˰Y>!^(& N@f8 x(i[317'[H8Zmb5F{ )l^w"Qy*ف`zDf؈[SsƕpW0å!$ GU 0 mox/o/K}0-[;L:LA;`'NQ}}jlxz16K4]$zsgqL "Q[E_8I_]xBzEәgyzD7G"(8"+v&{ևv`kE8kk^yKsWz3 3k$dqmcF}͋!@)ݬ.w#fBNLSlrto_EOb[? 56VLċ"-yYS4 qo)LTN>Ԡ kS O .~՟2 \̻e/vnpPR/[ 7`.jcO^P#d^"H4YfInPmd/[mCJ,UU}^~D58kڗ4u  ㆷkI(iJ*mDN댓r-DLt6S @V?;D(M4Ż ǵgGWD<ƫrcQ\Th]W!Jd[/tz~8ҟF9i,`GK#,~U+,%^'Gƌn']5`yNgyn OH–YFXN?œ8>_blѪ& {%sv8 ipI[br6ɐidHM2ϐ_-p4O!S<SL2uA +x}6~Jk_F\(76p޶W%z-dMZ]2X%x^ " ^梭r\{^6qZ’zL: A7cl&حtx> =Q"erjOE3pj>Y2MZI&syc;) jGC:Z5)xuUOkcxMO{uV/8dӐB`ͳ}y!Df&,|egd+HwEߍIV =#}ߩ F,'wW.l!8~wt=0r¤^ teO;ag&`4<'aMX2Iu$"ʊ*N䩚/=!H]~+<ɨ;#6 ?}6;y5*@)f ?5SVŽy߫1ObX/ufNCPfĨKEOXˁV{Kx^v;uG;6HȳQfQ}L#\\ZY} ֥9&d%ɬuL*ɑEoD{jChg$\.GREpmW}fq׾\r4'O?-Sq*nW)BDFwuWH%1JpW10_ԑgĈCq;v-զ4gcC%(:z$YyDiڹ3u ԞQ,e>ڠVU(v%b N@:ٹspWbg3v'^`f"T(5W03` iH+@Vܵw;(X:S ?Ѥo8O $=f ??4]E 'JF|_%n$&JE2,|M^>tb2U}ʎUy0:p[k3^pdm+׷pP%mjHXmU%%)7*~W%"_vPH4ف``cTKRlΊΗDhf_wg7J)IhR @zC{+G$c *Qt!qz %k\Jc8z{.mndJрx#;@ͷ3}: ~v@&fE FȓnQP;6hH6mªR ] Y\eۻB\m__h$m446]R|$`ӟ׬Tapȹ[@K?m-,y8DTJ1dsPL/RA!Y-Bkd#.R/,:d*)UP mQ6l&|hח\8_UJx%/`n*Sf8uNJ@ޫ|Ly3zNOD׃5iҬ9DEsl~`Y?zdK ACV Jϲ5͐B~, w3ziy?э X;%^Pb7öP@Zj׉ȨYp[yPN~ %\VZ~ ڠYԀWx4'[XhTw"0QN{:k,tnD%Lj=r+Ȑ\03:6FPAZaQ|p^_~LiY휃t.g!,Dd`Ny`јx1n%p5B&u)˙ᝐuz+W(|1҇77sLhEC'Xh& Y[``2!PlOzɘE\vƄ́:n#B\u0iL+\} h's:g\c{ z(9-T>m+ 0=- =~%&#M߮~-~z?GsU;M/֋t(:MeDhlyğ_׉Ķ0/i]m&7I=Kv6:@9X_ hpm@nN*$3ȫrLs|'|s N6' H{i1UQ4, afn<_M!A/ niV/qy‡-}2Cb4RPo!BIf4:0j*Uѥ.eg~ֺ37*;;vgr-{֣jg{aN3ޥڂ鵮r>ߊYt9OK?j,}Z6\ZB7gw{ C11XD  l6 RDg I~uz261J'љRJxYG,=V,N2j] V=Y:MwL N2HYC)^ʘපG)Oim`/( \U^vW^~zC{} Pap2B< }T,SݽaSZ ObE/Z z#Ar46p$ y=E$(p_qt_ {` gZJt\nz7ϙ5)>)86pcZ&dm"_g2e]N" HVx?JCU)|[@zt>wt)9O<4F Ec؅b-_RyC?|yNmh!9q9)QenT]) _18rY^mC9'[g9F~[RR* ᧀ);_hGx/ j(aa$<ȥ?KX8wdO|CF5L 壃vk~Tm'Bo'+93f"%f"QBm9 /4KsNiw%~j_3? /P{\8#y޾5!yxNlu&uRpo 9jBdQ&5b1nZ/[SHG*PPB7lhn1>-BgѪvyȏM:Wk@dZ4W;Y1@"{/ݐAt8^(n<I_S0c^nCY])DSSݦD5G]HffcU˺ e%+1_ CL(' a԰}M)<>DavYx: ;!oМoҥ &[#l+IzoΚ$2X lD{BW>))ɸkqzT"YNp+Ox.$$w!n7_*NOe^#γ@2`2:>ž8Z䫆}w%7WJ c?GIؑ4TF\WkʋD^L{?ۭn%':Q>%;;u]]X-<:tL"eYSwٙ}$A!8P7OȘ*L3BaǕ%ly{HZmBɌ1viER>ʊ뀃/(fOdD[ ls nRB v 6=A`lg?$, kt" U:lّ٧3zbVՒ}R[Η074ӑ!9f`IM@3J 4֔L&$QSj[B%c|>qb5GRuւ&L!n __@'ժ0Fgz;|,>wپQ HiLy a(LW o 1g2Suڿq'h'#&X&2'vsHxyܗ__#/+z>)X}]5;䦳xTﰁ>0\A;l @NC])PgTuSP?gRrJG#6NmD˱4k:ׯ#;a)ř$ѡkt 7|p1u?` kJ/tAQ`WOoU3a9u@}\o»E!>Np1̺ ‚FFݢmIK9 BƇ,GN n9 /Tʂt ßjz<}S00(~CZ4@Г|OShVy]&ȉnt@ ZY_LlN A旟t +cHWk,n3^5U05Q qxr!g*nx\Xb+ŕGB̹ϵ6`CSL-ڸv yR)0㬵8:=Zʍ&)~*]ljAJ`ޡbXYV k@j*94P!FWS&f9PW<Ǘ"븃"A0vt<_(C]uoJ+^R \C>Fqo!!(&֨d1oF<vh_WOݎC fg9AE\Q۰p8 NF] *|y[ qc9v-H@C=b^U`evDlN)Ol0 (/3L#2Rla8_-PY6H);ho[JVc2R-,Vh1Z: ҪCQ:?\ƷJa/6'\:!Ȓ d=vKvXf tcvgFSZ塐'yPar; *69u,RgC3LņGD\m~p q]/ȝ4)m&0{\\Q[.{+Rh;ޅKk?"XI0gS#jl#& |?H3mE,m1c3fL=-`zkA(M Xz/nE:jABk;m~(Ǜ/|/E!s7ځ<+[;g诣<fdL1ߨrϾl܄5c"ۋTŇ@]C{݄ȨTv 脈4`$`U;36oPR'x <iuLhWn\2Y*Uǵg$JAD\PiNYѨ- ĐtiSt#[Q1{~:֒DhD US:7z&;foq|n\gNQ1t剔RTS W\ɡj1\DZgh<;nUP7-m#Ὃ.^@;9}8Mc'@4*"R#(*< w l[p}IeӅAρ l>_vIM:! {)X+ U)-a-3YALb1 γ?ݯ}mG~F-Xs~@C`RwI(ј_ȴX=IENgGnR8iJp{tͻV5Pk[ۗ@(7i*]mWj*ay&r.8'bxxhxVPik*A+*sZe~4}.,낏!VݿV Mʌ`EM?"m+@¿~j*1[]n ck?I:}OoHdT]1nLgA_Q ]r6(QkN3'$NE3.+,,!uvt_o!ot51LTB(9!#a5Mx jR=@(C{S|D)NgW65\T|<ȳz{gIj FgKtr dzR'g앸|c_SFu;UO' w}oˢSobI+8k'4!ru[vcڋW(cOl6Qf3yL á/;"I21ar ?,`uZsѮWz m.hpIx@ܼJ=RUJVs9q9q)mG GAp\ q畤 Cl1Km7srۤ+Z9ಕSy)欺fL)Qb(%YU(#fБi8h3I0 Q C;BCR8CsF/Pu0oc@ faAgbv8J76̀Tl36clq ضja9OZ/A HW;nzZ5Rg\JYfxOSН^H>_'_<31#tis6Ƨd9s$ ?!Z%ԳKeOU(eC]kFۨ}/{WT`<>u0ؑj=`AbmH5 #9zo0'~ U?,m2F(hҼ?1ᦩ.fgkM.@`g 2NY8z'ⲋ7 0Ȝ)Q|D^3MnϽ- =NK|L68liTq\ŬD"ܬ5\d 35tƢ[ѕ蘱^foc~(oi}LTB.X^ >-Cֆa:4IWPuAC'6WccvyALP>$o"/FH*w<d r ];XTYBT$J@j|#\T9! 㻧[kisE\{Up8;L/ldẔn h:m;4(`aecip(Bb4u?qpfRk[ bE?n~:,Zi?eQiN+ ~Pް[lBiz&Ƃ&6Er!c\h*ACɟS*L`@r -1)ŠC[tVI|eI UXF/(Ծukd '/X3+@Fd 1یR6jR$+~~3 {V*Jƛƪ 謁 ݎ5ڏG<[~2 caR9W 勣ǑnXW3l8$(J],?ﳷW5DEålG5?y1Wh$[ :mYt1FB4pA‡H (iܟ8f&Pĭ䨻[⮗0n= TOy\p,^Q KGT²Iq5glBYE()sbݲxKzCЫ~ prFUT$RzK;V}y &uHk3AFZNXD=L)']1 NVcEǟ,YC5j~-z"O~F7:ԍjx7,&8eR&k4ZU5?;֋hI6 1ʿ\|jNgLou0}[|ٮ.&j7ZR4R:F3hAysdYbʨD:׵D4yf$7ˎrI4K4&i@6x5CLrVcı!$YZpէ5^ƪD2 v+ QjԵ"bgO+Q L,Zpl eL:Bv m !-X\{cM111a/Ä/i'$2ƊnF.wi`>EO[o @>`:CM+(-*#\ آ ib۶ՀCUg%ڮ/`HhiQ%dN+ݦ{tB{N~.D{GŁ~rW\B:V,PL[P.1X~ "[izˍ'X<󨋕TY.!\ZPVc:q/54n ^<H_/&ivQ۞7x0/g1P0~X;tߊ6/{ LL)C7 6TEO*B;):UB$ 9?F\7bAB22T(V/`{_׍BIRdK8>k7B'r+=YD$`b#U9+kMG4l8kw+yTbP.~ڳ#"V$*Pb̜Pg 3[58yxNMB6-%U].l6VY]Qyi<+켧zEKDy=tr"7.1d<3%)S40Q=N#H,ME8;~>\'b ;j9d\"jD0j8zݺl4n2{: L;Ϋr6!&uсR<KK,M$`ڭ`UK$ RfَeJ %v| y>{r SVhe_`Qʸv}1\ĉ uǦ%-0biU|v֚7S~׌792*L(QBTE)h=jEyigxpxOTR`~G6^9$3# d@2z7X׆f0f$*V>`V'O!A$TSnGm=?zLsbTT!M^;P-KrуJ{@v__Z1J(Frs33)ITwg\(v@)u?Pg?wtn`,FWSqe]Klɨ(. Hx ?9q4Ň \c7wG譮V`%&)(6wmf5ۦ';tvTN>A2'QV׉Rceo"r~K[#+@Ady3# Ѹqεj=0-!pE<}C{:ޔY/V絵 pH.J ds̿kpٰ6$-&qh֓%c$6Nj^lQzbI}b Q9p^P VpU`M=!/lk .V8TF%"]Peߨ|`$=V bm @?՜!؉.yb-i*2Iqt,57Use#BoZ-YKY]dlpݬk jn"alX5=Hk:rl=~6 tAW²dZ. f]e}+lqVƕVq\(涞6mT' Ujvq[sn %TE"iK7V+)&80 z!В5.C&"Mz!Mq`]#RoWPWzà \J]ps^,Pbzq#[e )mXq=bԗG,pb>Eh*x҄ƴ){o,h&zH Y~xm9]yzm/Bۂ!٧Vy@ Is/t&;LRҚ%? ^"{`8 MMJFci#XGR0Th'1sޒ}lȚ}ґ(s46p6%F?WT;sɑFfAr$@2 PcR&“ϳFٍ x -blgdy3 ɑv4Yy\bpw\`{PW#(mA4BHzѮ%4GW"4 (a:N,{?rl~n" Ŕpd+֬_e1dqDlGa_"e|;@b'G:5@7X%c4. [+5O~ `-Bp]w=: s_fYjY@TrbЦb}vNvP[#JnYj`x#P/R6 W_~lZׇ=j읐=SL.W]Tdom O0-<}}I/6!S8Ҥɰ($([QΔKa=z|'5CVIM[o'|w| wr'BP޵׮Xn@6=rY \ֳg1 1k+2v,ΰJBҎMGcD [lp_u=W6-RSf \Kڌ#ER>-]S0"?\2;:= +mpv;[lwe[,ݕ&M8=,d*)`PEApeslBt9fBs&n XL(Q "TPViPj$HnG,}jD ] _.к0k6o%)I'ћcxb6,GfIZ lCnE'@z*(a/T3Gs\,cRO/%hXODW)ƊVqz(U$z:M ]rN(Vn|rilRXy+h*5c/ExY8f?,̶oMH~*E{oQxȳ K:cNK^tJh(T=5W[OaHA1 JeNIQru.ϺN>T~ >AϦ=<]]?o` e <_c Y‘pO>M*HO`HAu:Xאe2l+CTɫ\B+Om!:0a_ȂUVv~ 9T]tLIx-OԎ2<{#_4m*tc-<T$ ha#N!YhčrH o]+v1Ń7#?mdY~\,q*]̝}lbH_ǝ9lJsF}z]v$ ӭb-yC!XP@cѴji08 @!4K7󶏊 ^yPiWҩ/5%Gi5Yˮ-$mmЪEiN-S%2DV7&,< YUOqMѼl?GxدBu\ڒ_x¹⽨߈6Ւ T:m VK:-nxM&nWfUv0ZPlǻ\~Gu;8d2Q't~{k4p-Ə11u9XUm%e( &xfV*+hɊSN$]"Pg2mE3VNhhR{@c7F'jVa|ݛ[2aQ>+M{qWy[si^?A%e /QH?Vt1򶕁jb8QeW\Vv?k0B\c̨*(sWd3C &39PaA{oqW}*뿂0Tc 48 fKԯQ%r݃u3ܮ.0@6L+ث!\+dCiAiM+fys؊KhG\`]o*#,\GVY=e؆weʝ:{ axـ>lhn ێV l Em@֮tgYIaŚNJ4֬86N~Ӟo< VK9RscNm2C35"\'⠒6=)&B]2[ R/dʓ>q,USC?<2 6db@X灯 B` ˃ru:$ອ*Tq]+aS:21$;L熻LUalM.X9@;))Bi֣@BN"Q^RP)Wh@*+v{rUT,P1!nxT%ŲIzlZ62_]eUnep(qIVѐo2Džd#C}/9le\XѰuВ #ۉiPd0X]L"N4`[>\#xG.ʁ8C9)YI3-a|n,vy4[/_O+IΛt{Hu@Y*#1{Bi| rjZ7DCFp`[q:'U=2:#IBO5Z0j}p~^xy~%09っ"ϵ3d xKFKseS6xٲ6|1ITCU| T^CaɪD4~]Cdy.wDZ$bȗQwKwDDיx tQ8S 1m1 :jcE=$)_DʹwjT&18ڧ*ypțknF !ѡUG>eUrWlιiR)< 6򿠅&+q[=*$ m֏Q)txt%j"T'9}4TI()'~~y-D?'ǝ}*-I9P{8) $HVl Izl?Qӿ훋 ,g 6bi'p⒍D!ԑ` pxe{NȾGU =ߋ9ȀH9ߚ%M5MR E5`HWJ^Zډ wS!c/ y] 4) |!;M*%ڛ&1@|ʼL7ʼn҄@ ޭXpc`-r:Z;R@tpz|݈G KS%}Xx0`iY]x}|%P'c)uZ ku¼T4< |WYӡO̬VC'd?wqlbHѽ렇e_Fq1sz2 5_?iP0#:sbl467N%&:I#Ed#*kc#xL#WapJ,qta0EI]hfMDVdSgΜ,%,~4kj!IG9YPODr@UoaOZ0hXMB Stg@2,x}txA/:MI7VZlچٯ^8p9>Kէ_VR +X_x%9")Mp`5y`ցpCPQS,דQwRMA+oV&x|CO )u (;Y!uDi~vI ԯ&Av##.v]5J HbS\"Sqّ+ҐYﮠI?}k]c?V*qApJԄBD碋x;q\p-,\+?.5͵D n>o dGenM'jd?D E6jMӗ؍z ˶e}8v]S6G]/>Fx,<;nWS14+q-t4`fc>{ˍ.x6֫+h֜\MDeN7N䅓!S>y*zJB5J%^.Q6& U x;☰yX|" QB6d vRbӺ:ۣ R~:}>?ޱԑ9+V=(|P-wq / x };3V/qYӑj o\=$(|'kс#gTPQQ4K`A,z4ˑz[()i Qsc7PLt 4'pV%$׳1ZCaEAD삫/" %a\0wP1>/"Ḉ& oo链pQhX(RyS_ݨRuLP~vy_5LسeaWqz۔{Fd.iljHۦKL_%O}Xiu=:<9V+2zvݎMRz. v2 Kۛ/T֟ 5 \ؔ\]?>ߒ) ÙUL+(?ʏ@mP4oT%|ѩ"^!Ea֜_M` VkOfCL!lԖRS[,[sfW).'s<|}3RQK.Ad}+B%0@ ҅S!&4[3ʤAcR+7`Ldr@%4 iL"[[c4\h&h1GzGLg pT"Ꮅwls* :p)S5ۣeOFx&n3HoJ%syL FۯZ O(?I-H`;.Dw~KTimr뚟gF{v!'x_+ Ԧ%8@d6i-@0 ZsYcq"ڗ'(首 `WiSfaSCc4oļ[)]8ILxdUϟFpwg^ iUV!+Y揵KzD4!dJ[Yw rHɭ)s(6i}($>iiX.~47WyS:qQXMbi.oڕCH [iJd= Jgqf5O8F9t\=Cax%liaM SJh jQeHN\DDž۹LƓ -c>#ԡkPjJWOF'r)=z63{NݬˌrM4 /]RԶN"9XE9`Ď]SA-1-xaQ(PO-Uz$f{NI\Eo嵭ܢfK?QU) MkGIkDv|A^nF")Z4܏z|_`g쮼ߕ$([GC56 UB IJF2QlgoYyv "冓GzBXF4r?w+!Ñz鹲+)Gm;L:6MN|hAٿXԀԣ<·8[ZSءT <Wec_P"hےs#G,_B0ܗ>ai5/RlJ6Ƞ"^ gzVτ}z %SI$޷چ4k42-J{!Eq|0%U;j.=>BjT7]ѾշL**WJW^^>z[jJyAo r)*qxa^?򖫴2#VUL2 4'qDv rt؋*Ez. _"6@K`=49q? bn ࠰;#A%Pj0˼͓yeD͒ 7Rnذ"]SxA9ؐ'ɋTeF(4QsZ1*WN@N BbW 2(lL00_=ICBȠzgW6%S~ tg/HoY["EJz}i|"^[ ;S\dIs*5ixkbݚ\ cBshCģz$sIJ%9}n*$7?g yC0{Gy3"]#&l7#_S"2 egD'YxǍq&(;1w瓕u)㇃UwH7D"rXajl" ԡ6ψc2f-`G~ ^񻝂a^Pd&n-g*V?̙79*or~0^AeLH>,8a$7N5*P8wZzk lm_|@`TktP+Pt5!tSe+Z+3{xΞf$&ƲɸV!̾?7faFg$èiLw,&pS-+Q[CNc4ht-Fe9yXC{5k >*Ehcs\3ϫgE(ǚGI", L3i]- 㺌aT t6Go1`ˍa3\ECIS ُ`+NC0kژ #CVV]ŭhtKYuMԜ==NG3Z2ZXLo毟n01&R׈U,}_E$:|X.KDpǺX/7| n[89Q4c.%|[(1L1;^\u{1ǔ䖗6]ͽt ^Oo/ J "С^^=o`)٣JԘ^ƁYG>&My8*Egrri/_aBqWAb֔c(9lW8j>hH"I>!1/LuyPRc31$oZJ۽j^gkU,)`tZ1d//0[5M^q=7}2y"K|ȬsYl)jO\ҁ wfiϬH dX3+Nl$T m!CYy *iH85)5ْގUCv+wjg+)ܵ268.En4 먪lol>~T\?bP(oUbW\O6p_)v.ReiQI}Z&K:P٤D-`Rcˬ)oqJ$;y»df2בX\hq_fH'ke,M|02\d̲|';)+lER%\'۫9h@nj@-=Eπ]@Z*Qwg+nL :óiAf(+*єچNg"`$ͻŰ -2$Ud ;7kկuy2?;qC >ҨɅbdBO* uxnꇊ3 6ĵ ?3RǐDQ-8?^Qq!4WwNq&9mac ]vqMό}f1j Pa‚ِtQ sytڣ9KU$+|=_jAu?8^uH(w#Ka?fǂH\en !2Hg̺F1{x]~΍Ԥ ؉~vpҞ4yu]gJ^nA ZwsyFFyfN=ƷH׷wּgva7HhaTcԯRԔڤKۏ ="6އ;,)ti`H$%8(=12Y5w{5rAT1P$VKBeUyyRoԯI]i?O޼ ѣXn=JR\k-@R|:y҄N=QO׹A ve:M$M6$ '^5}ΞdrnBI:/&۾1isR<+ jӑР(r\) ex_JMkVp gܝS)tQg=8h2(BL}CWd+pxq+CS, .C|5뽟>u,}\@= 9yX3rWr5)W)f s0{\Zp$Uon`srL}[ ,]!3uUjͼ?z&u=a:񂑣~# z<#.11SVJ1}+[.PsǴ$w|GSƪt*t= @;ВbpL3hBq/O~8=-HQL1ߺzр@]!A\E;kݞuw `$(hd "/" SLq 0EÔ;хYB&pcclpՈJWw՞u\zNyN'̞(\R^ O׭CQd.ޮ)T7{!x'6 ͏6(6Hguq=J} CGJK{w/00m1 ːS+~Y7^K\/b~1x$K)>6B%Rtrs(pI!::I?t1"}ό=Cg7QQmBr|XϓcwScV%0zAyK#bCk~C0r3h[3ָ?lyّoY!]7.uۋ~$6ܤ7ڮn=NP6[A iJ>z46$Sc6RЛ[QIH%^F\Z] "/!*D2<廄`~afeOj@kT-ԹΈQ͸= ml;x,>i>b(i4`PFВ v+$ʐ4ծ:2΃F 9VlWyh87%;NJ5B]keY_^6 I_H':M_W=G&D!lߕ[c0=Һy4Eg/ 8eec/[[~ Uo{QnX4l1vώDTۣ_kERאz0#q-A[f,K3YUp7N{wn8h鞄NB^;y:^{>QNpNniDz($"?PtBS@]Qv;!f>I 5{PBoThא]1t)v=DpY: ?}$L ;3Okn!' #CCy-! %w>ReÀY.$q\H`BdRb*01^H}4c D:gëǡJ!Gt8Ikݷ>D(jHR0Yݎ Uc2EC4%ywk7{;hˈ$!SgD3yӞiFF;iU<꽭;]3pJN13k8w9TޜR947A\E$-m}hxC{nlk-?AjXF!Z\`0Ae*wHJ%}c'S1|r iws|p%$I§7zz^: 춎IyZvG=%-m`6GG}Pf.$J8MOUlXU$zj}o5fy\N0;Xz~Wi]]{!t2Sn Ru鬩SjsBGb֗Cv]nx2/pg#Gjv7lE|w[L]nQNJ SmRWWW@$ꚸLVݪ u-L#T1 ,6y 9! &Tm=c!?rʼn/ bv=x7}M#mXHH/ `@D-F&`rUs.-Qw֭YAX'Uf/p . W Mz˘5Em2mWskvlaE'X>!~S| QU;kd[P HfM ju!u2۞.&a RMބr鿱2[bԔH]F. H /m/q.Bo.C&%0L,ӊ!^޸2Oau?;4 rv_#;h'U`NԍyXGElDYva~E}55=?}\|o6HWeJ2zL'crHq FkCћ_iKذK_  *mEuTF/HZ OD? J UdAO|RWxeZ2Wb CI+}$Pͅy„yiT~X\E3&@oFl= iQ%֡ado)W \O*{_<`iJɥV;z}Xΰj x8$OS9)bVE2$ 0Dd"]KWG)DH9oάb.**?@To30fKȻ3 tboD2QdUEhӰYUa'.S`tͫ[ r*4=~e >XBNrNy2S'"J[Anelv ^ $: :qlkY惏X5l%y>y;J>UH@{2\|Ms[#/fл= ctWVjv0f(0"@C02rTKq`[jTtc* ֪y)u9oG:?35= Y.@RC aJ=S>f(eLG^c nThZHH"*boq9 m!ƬS8'#f׬L 9q@EeD<.~"\ hW"] 2GOBx)Dt88B7&0C"ύd~_ֿ'@ hXx]_7g!8NM* uڰ' .5Ѫl4 m,s] / *"g$X9d"Qy4))W^WP94'Phˡ@^]lsGr-/3Z)@~,Ŏou1n 9uw3Eڐ]jAv%@J N~R3d?G2|H/c'`Q?f=yUW˼[D#h쐚"?)NpbTA\gog7EkDm 4#nėTĖ`$hh2[-_^gWM.YEʅzh [ch n^3tA*,=e|c<2aІ bUhI|yHYb?sho{(˔TmËt+sL:b._`M/N>勺?(pݻ6vy_3#QpіtQMuyr(2r/Pε0[BÝa`12KK#{xgs"Ulo>\hJ0]{V5ǍsB3?uǸ;cxY0O‘%ֻ*m1Hs/$v_]_Nq;HNESGd"gaoZJe^8| ;MK.. RBpC!@43y)V SH{ ]%DSn oU ^{ôڰq2? I8c'ƍnQZb%þ|Dlrk޵IY_|S> ;,F!|ڏޤ\K?澊oI 0iw‚H4Xv0 -.+Wgj檚842e J}&CT z,Y[cyԣ-E }U|QbvM]K7u#cﺅ1ou n7b#mAK2rrR_sە$Or3*1 yUӁy1.e —F?V%'* ,K 6ьwΘ#o]qLF<+6C9s||*.BԶKܜ .ooq +/1=F|fnMMTtZ hy aKJ<:mKUI8fO>b~iPK]L> a6&]3zM=0#ZQa/4T—mc( 6ĠR-\H;X T%hU$CY q1D8lOQX4r,QeELyʻThT4$܏(h4ml|m,f#sȁRgP= 3$́OǬg_TX}@8e V BX+Dڒ̜8[ 12:@w7VJ0먫D>\&wx %/Ե,8f矦C0djqg= !̮ؽKųKE?|T#;krC0W3W݂xbf:"a "W_M oMqkA#}OW*-;۽;ngcS;SWٮ[tb&9ialv}l z|u[pF]"k8hMmL:{P$NVR@+*Hp@vABgK9ũ+,汹(ke>G&'f uB2aY|_ywۉ'1U|p2y騸7!0V7VoIˈ*,<xL@ՖhO:&-&nѣ`Ltѫ"#ȑ>bCSR7޶$:NzP)ȓ]=oY/ը7Mbd v]:' ݴ,vLA#\a*^ez-:ЊPGL܃ѵbc 4̭9j@Y]hy_4i:q1N,J&Jd5R? *8Wz>$D:S/yϨ|/y & ~3/ڥm0#Y+~ݟ:qG4y=S1pU:Ч"cy?H,qZZN!L6KbaD^db03Pe(w?qK̾r6y#)&IǍCq+D@4RҚ<y]CݞMhLj!1fOf{:zkt52f[¹Vۦ%.[}SFUՋa$'h:lrVX ۚOm2܂7g}FɖjsRETo`|tU " ۥ+; 23n P@xe 1n]MiRrڞ'al=$ N/^!9o4]|ȥT קK Dyq:]U|SbK!r6Jl KpA>>m`BMn fO :Vi16BmKR#?'?ӻ|<<4'['9ޜ;iӓ2J+"i-o,_&ODm nЀ9$jk v!l>bh"^k]krXh&qux*IQQh4K 䲧җ U#8㔧X6v _zP1 2l33=rmvnӪ3yN7"gQ~ΧwWk/<+XHO,S^pt[P|rV6{̄DWR3 u Ɨ_8ŇQatۆxx>8ZB\8ylnzrYwQyhV6]=08vb&ks}RamJ<PÞMUs4>.i}VyʖkSI]K֚T{?ֿEtݲF<SpEf`!6I%I6f)c\rcM~j6pF`t,le0S\"]V:+H/Q.|.**q])4uF~g"y&vyO{ű;OaO nfbU%ك#m>RN8= |of$N{Iz[>{.Z>dɎZ)>J_MO~A20 J,Y-qq Ϡ'pdzK^ݪw-=틢# AΠt&Zy(yJAk>zѾ7xR[LIh-s 3B,oLl%Kxg*b}\5ug1-,0 6 G W>}p yd< ({@i?JN cDZgM[+\O`mUIANJc_+8BQ_Vj4 8tB`rOaV",ZXM;;6 E.}8"k?{x`oVU',0:aRlliaoe0jYړ4a0MT'_8d$o#y-RFCc ^M!MQo;3ӷٜB^dE;/m>v9OI2Ea0P.t2F!SyUG_ɬg`\{1"A];7+Zñ3;pQϪJQd&$cZ'Fi~|%$7ጤɇHФ7,ﺺ]E}T aJqxL Y?,6/DLԜ-T3s6+uXld8 `"9\C pmWa;6"+#m̤13j #ٹ/w"Qp=RS9rYtI1iÉ!kC\{le[OT<_]Տ!_lV "H3y8J &OI(b gb$hLJs k;j;qz{`B-kb3E8S<vxk7l /X G"Sty1GlIh*Rƕ` cA$v{"y#3&:(鰌~~7rm_a" m)TY $ˮr oi}Zl꺋^yQr,87F $|h)=1yIHIE8H4DOn^y0D+2/#H^'e,#xldb9k8;shagMs7>y򐝖4x-:e1SIP0'xC␣jZ`ԵF}uT3;B0 0y GoYf`nS f!m:,ΰ6TKwK C|X[Z{Qo^Íiמ{ t ?Fh لcХvd2/Z}Uz+QdA*c"+W54I梅 hGf~22'IjNlMѫ:"xm sZ׏եjarPewKvthkdO֩(L rQ,:;S~}XYCjڽN/_zsݗn⾛J[XsC;@ 7 3n<9j}Yn('"e Lȇxʕ߼AW Tewk wovXtB4{`sI+;\8p}#`{gG4]Z vFTjF w4\ 7 {;dt_`&A/z*Hx8YZ.5/5!s`'I kAӪ)·/kGpP6gŠ7þBrSr2ߨCJ_ԭER{wuL\[,sbF` 3aVX$˭zEO¿5zȮqMHb5Bxk*MuMݒPXB f2OJm zTT%\8e+JѾuM9xQ&moMT;kG8 ^` +'cqNwXo0bюFg,!BQ^(p~#W7&{n[֌"wB+Bfv}TnE%V.>5<G3F;!a^/0Y&jkC6D_tp;2܂Vu6rIaMITOaDʤ^R)-p{+BU8Ċ)/t޼JX|c7U+~g}G@oco+U<: c྅1@1fI- gc5r]lZJqjTS#BhH#[2([&D-'eSRQ`; >TqxcpDA)d>i /sroa8Shn? 7c^% A1>NRN/71~\~_hר齦 OtK&)v ^d[1n$Bo}zbf] =pY0XyHr1eZ%7d\;9 RYQhy g q$&Vwz))95t=6j, cꗅ\YXՔ䖲\ODB8Rtw!셔،UPBʈ3`C'H9]>R" 3w #{BE!+.gB<L/s>+u1R:vܛ!⨸lҼ 3n!i(ݘ㔃-Tjw̠o *kN*!~W܆ `r;o{.`\=6lZw:80N9(=HYNjaVZs\8o\ nƞ߬Kǡrgʳpr^C[Xe.@ZL_/(Z't`c%E:=^ =f( #M >ese`NuD/E}".K{ t0%11&ǿ1J7~thߍt:sQo_yx)fXǩo|{N2AMNe8Hk(vAc(ڟܔȣNhM"ś^:3JUAƝ_ϺH4P::YR11L4tAuWյH4-BDbr*+G#jiH(22,JtR34<}˚ƚv?*?$Dpu#q~gȆ$.PYqxYn-ҷssoNЀV!˽xcO'xOCx#`Ssk_Jo" x4DƝ! w PeO?./)Bص%0S|)>mIr1V{tg_)D~iF 㭞(j \4n2LKyd]k1#{:u]Zrox[A ,W/:&.x_@׳|pc2RǦC%z]}Ya((ǩpGyvMʭ\0yy{/! je0%<d#.04:E*WΟ@w&܌C$uP"/8P =辞]ἧ"ּ+pKɮ6t`_H>47bŠ(<*h^vj-k ojM HJB+eQ/_8-?Kaזc>a(\]BՉbM8A@|GkJY1ʼج.˛M;\j:zmMpv>h z hm[R9쩨 }\O ' `**JZ3Q tvU :0s}?NϭlWEVjG.X<5BXcQe?n!ީu^[vɷa8RI$omL^f<0jox4"Næ^)#krV#e΢t}eh\eb\C%>yl XA?p:}Yz NV-Kɒ1 ?VkI)hZXw~R-K-kaЇZJ}K]NX1;<>q´ŷϺZpH]ڡ ͗aZ ڵ \tT#7үZ+9 7OLwa ŏ؈v:h9)GgwYSt1u L_;)gpFB"G,&}9 ';(-7l07 eWr= NBraI)xT"5 M3A'~k'y$_E8Wly"b U$;D"w8|du.AE`IV}#i>'2)=^wHwn^!wG&QCPby%eVN[t3-L~WA8M ީq'ډίjᙄqwTY׼m<{T @*lծ)XLRgSt-a'f]j@e]6rkA{ty*"MN --숏K[b{l/Lg/UC +j*8De bY()jaǨfCWh@;ߦY**҉\wW,ȷAB>l p磑d^Fy(hLRۈ݈9LI ̓l֢s]ŐM0^:kߨ$m5҈Tx?i1VK hl%2x L135nFG])zIJUk-d5>J8e v?MTYzD{w,j"Jxi/O70ڲPА9+آbˈ5->xg`TuL*jTA  w_[W*  ]47Z>cZYҐ%"6+pufO*[ݦ cv+&xi[ NGr|޻7$ۼk\;sƮ!ƛXHnE ^$|#:W![=4n-@e.+Pqu@fm'YTĎW^O:(ijay͉9*IM70PCF>H<xRn ,پ*;d6iؿ~;]=` \ػ|zZJ1z_U\ iu`eΖ t|aFzA|&fB!r"[ e%bOs|orDq͸<q\?4Zngp4Aws̼2C¦tP{_ɑ6^ޡZzF<ԱB:;ydV.}C(wBD9)BS/Q]ӥ(`]]̉<)/@/%EPY6ahsڢˋYD& #6TIG0B06MR7.M/jӄ~VYjmOڸXDQ.$w=a{LV _=Qِ3LPhT4mg΀dν(jGO)#R=8JذiP0K1[5<:TT}o.Ek(`<'6$g: g D` ^+%3Cιd#8[ f|.P1<ګF:nǫlP<8+Qv7aʋ(9YgklMml "Sz-Ek\uDE)KGX7*Ƃn?йxU\&5+ޘ0kЖ]Ś?.ŷk:&1H&sLZb E)6:jKqg3g?QE} cWԭl[29Q0Z䭽9H$9DXsHZ> < @8ɳw(ZղgfXwOZltMo̞qh;g.bgQB)6K!מLo,zf6[@4ޛYػA'\Oi02,N҉_OMuʀ0i$,7}y"( a5@3Q"Ϫ6ۈ@|2qN^RI%gOpEP_ҴX5ܧLl]yYY#[rXZorsس"Ɖ-)D Gch\ZXԓ33/*)pmzz Oe.\Ԇ4z`6d3ģwܩEIfER Y;v%N3yc= w]w-kRL@B`LF n`$Yu`YFׇXtU4W- mϹ25}+>kBN'9r~nIN\t%jM9G+I x :䨤*$KleMD=ڝs(vT JmkiϞmX2|93Eߙ^"c|,=ˎSnm{37Di:;_sm8"]m{Ě-rPqSuJYb@:`, ji.:Yl10`gA= , iOrtƹ_CJW=3iGJ-) Nu,(fPY5Ivh =>*IΙ6n _RAa-z(4i3ʾ?*y@n{d=Vt `MygDk_zjt}[2>\kXd识wt!HL_OWwnuu㧛+RT Ĕ.ʙ&]A+ZcUq5LG'bF4ܐ$>0LlOO-wR:i@ID\uhc<$UU$ !#fiԫ&l(E\Vk<+8W2'nJ矂#pC>QV%9ZTx?S(w>\ m釆CE@=8%4̬"!=)^hʑ̢x'045嫭55K3L bRGEҊ"Eq FH9^.=w-rጔfkr0 zHQ,@7wZ$R[vmN;HIB"?ȕжLVPAʄIl I"UmQozsHՎ w(5CKGB2؍%U#3$xV{0on3)-cuF:):WϳH~y#[}y'qIAo4ŐzFQV"ٝk@:GQ~ц]T"sml1SwNL×f 4qdjyswBck 5*(^:#̫]:kޜ*Ȣ,=MD;Y&@ɶk`+FnغnTld>pCCXkx*^I]p\6(%}]\Xh% 24?yQ8T$։RtF2tIr0dmi#piWTS'˲2t!ZF~;68"q37(jJ?3/}\l3ڤT郆dI dJ% C^`GϹdzٶ~xkv뚜^覨ǽ%xuԵ릾7a%.c$m|tO@g"X +ʏD`uy[ӆ(ڶzEBUGeǚ#@5Gjh}6;ףkۭÂLׁwc_aB nLgNI -|%RFU2,H#`[YMXP W]a#;َާ?yN㗡dBL]E]ƈ U""vWUnw5.k-?8Ro#Au9ZƊ&ق~O 3vh~U/spMs`[L% Wגʚ? yN$2 7kYW.6,o!^eFqAF"MQ0%3<0zp뷦2o]$B'[x$RL<ǿep@ +͟y@,QF\lfgl1?]Pʇ,vHk.d$ KIElW\tMcWʓX p;0%oehQe*y > %"66զ'utĠ0vGz7LS6-{|,W;x0Ч6qi&FEI/ŕȜf9AK'ZS= ĖW$EA$0Uƶ;AjVEa2r$-߬x8#9H\Q)޸ʹH:{RNm@?"#ƴEn*$x/"R WzaFX&j 怸{&,/b} |X\z. ڣJa_ֻEk6щP+:_$ĵW)7;hhŁ:KH^KƁK0Z8̑-$L ]k?rpؓ9=[LuA4,3cQ:| ObINrL:Nd.X9u9wo<^]?%A{\2 ddxr_HeOĦH =.t߷_qcQ'HiDjwq9{] 0=: gq w7E%ؖ}(C^*}_ҎJd`'ݥҔM$Knd"R<߃Cde= /6~J6ORGU^/vE(lf%0 : mC\4쳾(~'P4dԒÄҍ$%cx{羜l犗pbV*y (Q,v$VRtdnwћ [>ɕp Ld@k)Ebvz b1A y h)C#F CxN懜w&7 u𳔐f=TJM(z,sMw;R7nF`74XxNESt((*zK 0X[)ӂ@]vy /;%@ 02[88OHlAᯚ=(FxS>Lhs%zl[\Ae]c]`l CPqFXx$6qAf2*Ꮫ`Y?*߫ 0S%I%p+i#t/ѥXK.9D&恿ǕĦsZ, +ZG3SG$$F~,GN6LF6WƗݸo^wTnve@ª묰kcAy0 d}@} OC4\3ﻄ;ȍOt~Ou`:i{-bh=kI[M=ŗb Ԓtc]4Cum^.+S&D. 'Xr!QmRu~!v-EOQ [0-X̼o40?i,ZKp]&D{w\ ϼZga E?n,)&W53# kbnYe4i;[82o2KLl)NJ!i Vi'z^>h?3>4!N6vxfU8E gV/t|2Z9 }x7L!DjCwPѻ;#?l.M`aU lRPbv uBVDHpLo3]tDLD hJ}TON#9d67,SbU<0 ( ! x5Y:`җ[ >58f=W5W7MU,b_i7c~M9A(5koL ;V(w}u2x#HSzB^͇(l-Lj0rbO.NF,vYNךʷY0xWfuJ6KutX &KpTpl3[qA:4.7+Jjl.xnny5ZG%.ǺD!CՌ aVP_@Q,@N[W~}<#u D}\6{dI|pQ9LʝS,Jͫߚ[wȌ!gs'm,P-;@՚e\&N{lkâX-6kP)o63B@gEA >T!VD5CS)"@EQ1K2'\FNH~A>oם_v5⁖InVsv i] #É-]{ %}T.?-߸11XoGI]~C7 9COϸ0yQ7?'J-Nn. JӼݹSυQWJL^IkOïJҖFY0'QJǶ] ,]BCC'i ]Zey+1vYيo4 B7S팖s2 /rKDryMؽ1 :M rd'HR(bWŇqR pOb7J1ז yRN3h%4Uj1pP鹨`iz 6jЂ5HE21Tôd@;pf~-/q)&%Y:)CI"VIr{p T 3KծX^ž|9JtR:&J\CW=ʯ湼K 4[$e62ʒ>~1w%qti+?=1"+Zo2b&L1Y18CZ:HNu#pp>qŢitv/@(vɝ|.Hv:7ix=QrO@΀%-Vp8 |gxpx zUeq !܇;=@_S-vpY7&vB=#;>|d@wmwYuވQ$]L"} F[trwR{< j3S@Di;ꦡiL*\~9r Z vG_]rOQ5`0ةbtم'ƀV7Y˴X)~ cO3̡%7Hzh"P2· M1&;<0[leji8([F,=;`!,K5 %O&;[yKڽ#`bSgzæcnTyG VEi0OiQEr?`.eV2"c$X:kdu}:Ug9RSӽ4|r!Q߲LGt~|&Vҳē_BOnxJ&}<,`O3m\6Dx47N:i؟tNHңђ~ eʍ<5_\%d[:v \!ɄSC _@3A,a~z( u4%p\ELY $LfmluT<凈+kʉ!Y_d$PjDWsUs˓ KV^8&+wR:$e40/+\7[#+3#Ӎ- DžYB~<)/sƣi+K d[ذz,GKԲS`%*D"o< gv:?\z7ƲʌcBJ[݄@MZ:-vzӋ>ҬǙwOi: /gŕ/kl2~NQ|xJ4&ɔo;6ѤgNkZ+YRR8Om2᤻bz.<`~]_w4{EsVZ67KHSV=__]k)>!@J"hhk\]Ѫ\I<_iV8qix2aveưyOUBYsYHH'w~3qtM EB2`J[Ҡhs١ R+:t]l!7^^3{iੰed~ f{h8ܪE]D?n3vPSEܼ]twY!:!u~/TvYSN^T*М҉W]ƇH45:,doѳ.P\e-0H +ET~EݶcȋLC&6ڥ Ŭ!z$yUCv`p2i98Q3)/muhݝ&h,Ԁqcou4@mbd71/k1 9 65lM' 㗓ד`0ܝWh*$4Z>3Am~OV4=-ޙ,J؂.]SA8v70)s,ogAT|HGYZt2nyW_4} .g[|8̧aHuŢMxR6Li)܄].@LSk 458GvZU,ryc B&߄UAǯF,5xЋc&D8Fe,K[q63T-8^rL5DJ` BcsUަx*?NWgd[cURd/\ᶁ51K.YNρHxGz^6 foTQ,BOB]Sc ѻ~:+b#5(QI -U*{j5hyϔ+5):BnGP5Ч(A 1 yh`oOzXA(,R69H5ڇ,HDR˟tH,:⾣3d%fv0DxAq8S ᗿrf^Xh.h"N)vrK@mGj]Urp\yKEةU"8Uܗ[ (רM=n60Gߤvӏ+ /:gIB#Xޘ衅H}\die?VH1\+!/6c떵;93b6&&M:x7|S.DzE~Gn>>g$eZUoD_dɘ㱢]\ܩU&K5$kuՒKsއS?>7iecQ(KîkRCEY?Ng\ o1!D믐jP4k2R4Ɇ|( N90km/HWP]!]]UA&+܅ʷ>~ɼ@A}o>}-9HŲ7V|FmoTa)9.&V9fi&kfG4P!"1erMW.9'6&vJ~K.5W?QS5*ńt ETӈؿL C4v,kqr 7T-|^Qʝ+6M} +_V7P~XV9 @?E8wB+M?{;9^xWܒoty=3NaCb#8:VPDUa2hG vUe1>3>B3.#ߣyA`]hDz19S;^wbq&q|[ 1 PQ0u~)7ktC8%_º=R褤Y_fDI_vV OUb;?am;Au#1}NND%$tHdwtD½[@n׭=,XkgYcn3u]b1-sTv͌S ˅,Zq/n؇9[CUpfPi^LKoy x3W ލ&#/cٜgezU ** xthЯ~UT:aŊ ΩJ9£s\K'_!ec8[>јbR+ \F=$xlcW:Is2Z(,ZѪk5 xɕ gWxHf+փA$9ÀCiNKNv_ٯՍR@=+y,{G<}c(#J|R&ioyXC$xգ Şκ zuJ(!#}pRxAhpɍ6RhpG'að >ψ36elrhbf[3bDEwox廁fG›VF ?ebB /yk=+9^# S"nh>yVX(r@T`o΄ڈ݀d1ip=SzXz n {S. G܀%dz7k)z퓃~^" O( ID@rRJԳS=dR=>Kӈ(zn&16_ #5F5~6֯Л'(%fUz܄Q'`f`Ds+ ZWJ@B^i#7zT{qD)]*'\~gDdh7>XQM.AF'ЬmkS윸w+wbXÄnlr"Z*b?"#fʮ^!y!s*A.Žq٢`J;C\M6u!ڤFDžTŒd}.l}?r Q4J)V٤ΖS'zPLlS{,(F*l3!D _6UOe {Zo90[Μ;pΑyH$@z<@@Ħ)*tC((qFIb5VF} l\p{BFDWKWB$ezP 7` "m)eMOFR Ăs 2IdeC8^SFe&D+ĵoP#FfYP!/cٹ#D#Ÿ:hɔ?GQ8u~\\# 4l&3?P;7!JR\lGHP-Ǘ^uVtÌ.FQ 5_ V` ~~!Grn~Z5y(IɐL~[J*>Y1 XȚ $\Nm)b }h):e.:^1YuL P\vFpM Ev(*tZ7hm{φ}H ]񮼓jGxs$dRmy㲹O`,߱087\,%f„wl t EGR0kIO+^] OYl'۔nD"@)͕ IXj YC "7~v ~E0EH'5L0e"mhZ+*T2TCU~ֵXI3LxҵgImW_3drp$o 1$y@>5K g|/w*a^.ܻR%H = V4҆Xide8>>ۈ, )rw\%55[:.Hϭ* .TMk4R/.?6sX?b&$όBK\~m51U=3fX_l$n[%gFŻ7j4"lqP䮏r9m;4K .:ի^HXgF )RA$΂MVӿ /ɌNzJyQ/ MziTsmwܖm\Æ[~I#+~7uh bAFT#B3*E0Ǟp9!Ɋ} xajr3Q uNփBʅ/jEV&ԓpoZM9-I+WOkΰqQ~3N;k0oo(K޻mR%8iM.b1 `m֦Ó.^LәM[Zͪ" H3RgMy:Mq-i!h/I$B ԕ !ψoWbP|\V*)`يT] _Op.{5tD.1.õYXni18D2PcxQBP{jU%LL^t %ś3U#I-}p 鸿>2Q|(9r| ;Ӓr[x2QIsxNQӥ#v8|0r`>z(i, VFb 9=DmgNvd?~_sAb&ySw%1d=e9/EPhn'b- Ml;vPSy!Q͗ Tl"77$ߺ?抍UT`d3ч*rMĞN':s%iynd;+¥JX8g-/j/$c k ѸxH;cLzMj0(ݖ!^\LV}GjrzVL/OdɍI!KmSi%$0}@S9i͈ChH%LQ ~/7gnGsoOZ*S↘k 9bo‘~4hhcDkV߬2Ag? {y=3z7 x.Re1g4|aaZ 2NG֛ Z 3zvQ>14%oF]RPՀK:*bzaƸs9 :R_4<]fPh}ջ٨E uǁ&O]u?0lds a*[B%Sj;4cZQc y5b5Hr^,A:PVė@6%OMKտ>e67X) " \7!E9uV5 LkۯmD#;duh FSOb&|xܤ3Q[4 % 0ef[6Ng%z9 [#g{xջ*#Ȓmg |Y hb# oL_~sT~a' vo ,!U%zC>~m*k- ]Ν=my1t~ha@(+0< ИTʭUWKdGvU5糅٣%ړQEI5G*-=/ac?sT fCY!y@?&~mw3-A\w.b GgDt=rR$jƒ1dQ"h0v<Cl.~Li]țv>qYxhzM~ jލ.8p+]?LGkD3 >{jǼ=pZT,ޞhV "ͤSŜ H1BLTei_Sxt;EeU?G&:>+u4c^/6ZXuʖ| pҙt\$VPU˔`!#tdKd?Mjn]q *M]mi! 79q~]ůJu7|WdD >y _*+Q@ޟ$Z3020.}c c5(>KQ@h;Ụ>q>(Frum6ml`$hD.Sn&!MW ^sOS2iˆ ܆զ׮7iC܍hcĈ0ga>9N=Z@ * B^L^]  I}?^^ɥRY%!/fE2]'ɖgwW,$ҋYUe@ں*=k VzL0TZQ E0pTp~Yy(ϱ+J8]x l_h. 'v-H8޽*wuaI37cK򖢐aOԑ\(u7`k~_E\ϭ?dz +ϳO ,Dg͌|9V[Ԁ00H3:ha-N"^pX-~;O9b.)aXڶ \yA}f^nTΗGS[5: ~埈/ǬTlPK$*ThR1A8v.Gz_Nk5ПÊX%L?Du><7-jFH/ÌwQ5㚧cOX !iq?CJስ6+XKmѾ ۊJ% ąw4 EXfь 2on'c繈TčANZeA%Eׅ\ H ԋp\WR9&C+~L<0T?8pX Zs cկQi'I@AQ;+ӻR[h F^>' OGTrr9YBn癊)5YFr"rNt(l>\H9vٰ*A9ƉǧvHHdR+Xu7m@*v;q`:= :"h so`BY=ղpR1XC Խ̃D,WLUЎ_)B'}0  FλA`saP1S M3H [fE Ҳc8O7@>*8OhA!IsW\-"2QzNHَt; DѹeϨf#Sd)pE7h1 p6'ܐD3&L!tnH&=;%?4^C_#du(lzur8-*YO: % b2` Rk7Ӻ(p?]u(0kz]tdmQVs-n1X)d/lV 8ʐ##a4c ʈ߫j9$bb @=b?у}u")H}w,d"c0#S2p}Q Mc%sxFIȶf_tK]Q'U ;3w̸dx,}kA8/M- Ojp_hj蛨Qpĉ؍˅cɣ |0P~Y(x˨~7u~54 Etz(20+XA!F H3T?t g+п.=]㖱%`WHqh(}EsoUՅ^3YLT%tEX8 x-Do &0GB2k1]{ju~ٍKwǫ exsB³_ aR^Zkb瓹gse -z?mLˆAhq/;iOm8ɦ}Q3"&x'!i&. \*2cZ$}+P6U}\b:BNV5]^dW߂>zkϷ@"jL:SA0SZYr}.g!{c!O[q}M7ͷ(b˯Yi_tq2c 1}ƊlrKÿij, c Í}̠΃fLtK(_P+xD?<.㇉H_*>7w4ǻ߇@aJV|d"Xb_BX܄PkbܱSvgEKKR L62UoV;~=/u4' 9Oxё2._n|guAfH~f:8a p+ gIPAO,S8Ӗ=xp%Vin9ׇZ"%NScR w1/dMtl!R`]Fd@Οsc~LK>l3 CEyՙ.'~kyIXHf1 kysjP?'޽(UKpc ڰ6UuuI BQ /QO=鍡OvwK|?|SQ1J4Rk*ɭf&!m>FAopEjp'<9A/*u{<_\_#p* 7bdZe(`9 ׅ-{S{}n]i>. =.BV~?œ4Q[Zjmσ#66;=azλ8Y8J/bB*!ݼP*)1nK1w ]>Vn5͇&pҩ=7T s -ѥɠC:g]{^9Ggx3e _b&ں@/뢵/ X*_;xdLGE)lt㌤ɕ~)<d4qi}́_b͈үa2֟!h8%yf~BQ"#VXnPWcWlCX=2FpsD$\+“/l ㉟u!Mv椕C$rNͺUp׺Ĝ5w YV)FhRV3 i9)-lH 'm|ᴱi"=Ak7.:iT_$ԯnڽwխZ/މM:+x '[_΍֕ѪZjQ3SNNܱhӌQ,e?mW&YrUτ~5ϰ[j7*J؆/Vp3N^4oW[8\$|=1ܘ`OlqFoų/d.' H8O71joQ: XOW_ϯY@˳Gm(bu"= 8@2v˩^-]hC3L/- JF9PpZǠnb]R4u%/T&+S-EWdHw^@C>~4uoUχ}PJE]U^ޚX;^:]/{oPx{a(4,)D @WC9X#R,Im^Lk0%H "ҽ>0 YZEpi/data/ewrates.rda0000644000175100001440000000303414421664403014064 0ustar hornikusersklTEO/T4M Q?6bH粻gT+bD.ZP "- ^B),B @!B[1 xwB0Dh7tAA~&v͜so93-ZXkV~nOoLGXMT*vK}O}ԲVߧGeħDؒ%n?Y[PPEGF;88YXrG ].ogx>+Ս HrL38%@jV 8;>kgx} L9o,&G 5ղ~ۭ~T~p=-콆 y9:N$ga? :^;.z3 qº#Lު󥧌Uˇ΂[x]3TMK{ ъrz'+o@?0jE˥}K>'$}e`Ipp [>_~arwa^-Kmx@VǦ|ez}Ar,=M|Ns?Iw_ګϗM'c`]_ ÅjsԮNme]u{y7Hm=)g^O<NOW[H~^G2Jﰫ,w=y׷Wh 3 S{Ur^A|oC:-b#m=ϯ5\&սjJp/az=Kkܯ1%\g%UrߵgxNu$|OLkM jZ3-'[ ~^c]/y(-T̷y5f#6?+t;l߭*6G{ލujyqrZ8sX.L_Q㕱e]YD&V4:%8gEvrl8:pu ":uek%%r$r%$ I("/8q8p#G8q8p+W8\qp'O8#@g<bS-$PtO8ZQK'l^Oye(==?"G}пM֌8Ec_ܴ=N.>*G0D);؄yTa1~C;l~ퟢ>ȳp@%/7_Cۉw?4/w׳xC)R@~!)\Zf``œDJF(e@e2sϮq& [SI&*ږm%ۺNg|:|/BLȌ} , *}BZTa؛9M]h}9r;OE)/ J.h+^TFoԖ_ql9|q;xXVV Ҫɷ U0,ã-q&PV\MED-AIؼ8{֨-Mnnh^\N ĎОQ|#atڮ^8&/.wuajRo${˺QSSjz3<+yJ\z73,Ses=\MԊ@܈AG8$Dyߧ3JwxLYޡh;F=BY/wUCY+053Ad▅Y{ܻ`LUp̽3=vxUiƕʬ ,7!ZXn;]>4RTmLn28I-0 ˆ՞UD 5蝋P:X)/װ dbQ30)#(y[2Yޜd,PO5ɄeG6XM{F%Π.lk%:?j2* .~S~4͏;3w0e" E.9_`m{f_Ǝcg`l-}3:k2ʕ&e.P^ǁPZ*潧^Md'L:*<x  ^rǤY#& "tn9LIOCEDf{WǍc8oH-B7+:t7پk7S׸oᗐuM 5зT0wEC *Q$طB1&@ ˆi٧_ # e=miζ<f9gp3:;pQ-ͻxȒ1xDIlSM Qnx4gǦ6Oԝya®|v$L^'Li(Ac1ĔjX!Mka65y'YEk/Yl?Kb!^D 9^ uOq_lEK +]Z;R&#;~0y꾣l܈RGFzqfWƀ ץyo"dLcs.N~[v4 I,z Ӄd-Xlp2E>cwfT?W~{u7Yl$q?WKm^ %l\g5dMCbKZi(8!)vbr Y9-j5kv[(&|*HݜOGE&Y 9އpw "x\jia_X@^C%Exifwu{["֬ΤRY\0t P=1b. Y=Ż멜PANw&8Uu?sVGTo #u{wZ̡),4τDؾL"l o}|= [l&Sz3H^:#lbbt 5QN2,T=!+:&K Ȯ}WYn6*dC B 5VS5%;R.ouŷfY̓]"I(eV("PQt3N` .RYpER(EXZ⋄(kMhY|xtk<ȊwoEDy/'lh>;7 ⃟60?H9~zn\8΃x9vރ8: rfr :vtnoJ?:vx?8``An >0:0PqA0w t@;v @M:P뼣sn۽5૎֯Z6oOm˚xn\r6ۗ4ܹ~f[;_yP|"1Jًjk$fD*$BD"@!o*3@*@B"*p2DZ o2Odg߼.uZj'?u2+'-5CbR"Rk| &tFETȑ Ւ%L,)d+C>wlY[@~lD()a'Qo!3Ǚ[qn#IuW[io8hQVFjTbf)ê?qc}/oN\&Hwܫw8׸V<=MuiMy^0tja2fkEZaM=0p$U@jAHFEDjQDiE * SfNJ͋;\ ¨&Vk*+լ "*@0))fcl)1wVAުTMŒIgi;Yl6r.o`!sn]/Y'Y =jIqeD@~&t Q#7JGq3ܑN$9dEpi/data/bdendo.rda0000644000175100001440000000423014421664403013644 0ustar hornikusersBZh91AY&SYu)|Tu_?ߠ@@A x.n x 겒{Pń2 OSFdG4@ "LRjhɠ4M0 0!0#3@)EPTS~M4h2h@ hzI(I Mb42i2 M @@E&)=FFoTdi@ {r^%lT\ 9˻swtnwq@Ӧ.:JKl,VOt=jоA`k eNXI i'E:IMD'U5S:~uyM`e2]4ųhop3lu6&]"{[ȟ#o[8Hc>^LZULɴrU[J A0] @ fY.΅!j p$J*hceMLgFe_Y5"ВmX3hE)-^;Ѣ66h w/QMe9uEBW ̛&/+yXnd˦bB,DUl)1;ˮ5) ɑQ^;X+i,VMEˎ9ZnwN5ř$o.'e wxlL()2Bɤ6'91I$L&BNEbbTFnQM6eB`JZʻi@IN\/JM) 0I@t*\u`6ʬ"L};pE– o؟ i!FyL>G $8yqɩ9<>'~ذ؉ED^2/ :S<=^!%dZ xY2:P|׏rHx$/!]BA@GEpi/data/nickel.rda0000644000175100001440000002754414421664404013674 0ustar hornikusers7zXZi"6!X/'])TW"nRʟ$!K{yN+,"G PT7-5 Kxq{tq5 D0bNZD\T|:&6cW8A"?iGmK nv.Dd ↵;U_ ٶ+FWN66|[o) .G,c<\/Gʵr$^ĭnԩδxLC5;d`9 >]HElVow DAznoKk#!?OK=˫x.=~9C Oe ;xV28F(KLvEfj] >~}"ei xV@E]iD]pܼ;Ìʳ+u^&po2ٰ,;!tmx8Cg%yUCe#68bO`*N~bܖSp0 ,ӢY+um&]"1PD}tNҙa魞 :8"N#|x4Yx;{ Ee|٪EE/w[zx@K*Ro~0۔ږ|e@:i0_B?SJTΒ΄޲ag'nM}ox#{N9D,ڞ|6%~jstcs@ū$8:n+~bm2A (ezCt{ԚB֔&t B) <ʼ'ж)NdB'u s$2JGA-)8Ŗ+=ϤVWM|'/#?K Y0o2n-,EꆚuKYʃCB_bP% zB Kė`:1pYA~緧}o͐_pI^<$]SK~7Lx5vbAE3k=BIhm/VYч7|3 Ysx@/,dCFbH8 bAռ72s=lB"tPGƦp^) I8O1z5\u9k,9GER9պH}WR|̷(Ckt5^m r'=YSk*h.?R3˛( 쨄k2.cNU|cPWMw)9p1oݪk`X棏LŊ 6uifQz@7>8Wﶄqh('Z;Kխt=ϤY)iM\B`~j#`,=/ҘbS#"U,H*ԈU$TR|Domm"3tlmˇmtÀv 4.]>aukn#%Pef +_t!'8YiAR+|c ĵr(7Ypvĺ&TʅI u ҏԀx;0:/sn*i(8s0V;+]KnSJZ|s  A,ƈHXUm BT?"Q&'y U->U7r4o^VױH+!76)UcVůZ74bQT-%Dj,3ۡVC4JqIpl*PZh1ܝG}-V[taYBK,`ne؈Sd>| ҟigR?;C`u]#W=Q#`q>v&b_-qg'X_1ʿҕ Z +UvI_0 S+420JzJڎ>q7Zq @~CxW/e@{H0kWIQB] 5>bw?[e3QAqND>EW=ZzdqrEaeMu*kbjzl~bAc mE <5Vu{#Ɖ CU#?F-*(fo%0 c|eI~7)SWYuFΜU+m"9r @*Vr'!`Kߦ:q_ t4_^ԟ /#ZhqQLAY_ڛJƵ.dzW*; "8)ȉF|*uTR)A kƵ{֫4&*tUomUnlV_%p%ɶwGȵ4z&g3Q>Rׁu?3'O߁jyD12m/J+J:J;I\f'1…BT],-'/KOmN/uc3 32Hn`8կ+w_pzBpMGxZ-:hO}M. nɯ}=Gp%ӵ)1C%jdq@*+nzdgnBͮXa'~,,;w6gTAPo)j -,^48yGeLVR"'ҳ=Rw֕f&?DaNli/rO@dv3+&mXdݯ Q j #+Hvwth{JI;\.rV9ꂚ!i!Z_ S0"~e^c-(v 8͍0:3F7+JXk^gRģU'1~ڿ35xψ*,Զ@!'ĕ]4Sm Y'"WXbRN`'Bˌ/:R#Aتϼ,Q}rۼMp4sv+yQ!eip.Pg^8&9*J[TBMyLbWK~+C. ͗)#LJLp~k!ɮt| T2n!" })Y'ig_fvzn(:ev mmly'j?|T0-/poD4"Mg7*~2%o?g`3*39 Ɵ֥vU5ߢjx*qtT<}Б^/7kZ2pfc4>w1LR5}ź˃bJ퐕 |%2.W**Zr,)]^Fp~#|T4pDD?'3.>gTJ>ZH30gI@Zzi9}&E:Di>LG;ʁG)x(T;x;F7` "0}.g\}jM [,Q;OE#ր\"E!lU:VFQ51&}k"'|LwPi5 (W]nsNOH Br4j Z;6lԹx4 5!1N ͟n#H\y]%>n6ioI(nQZQL\\Ԗ:TZm>&CQ-M}#͊Rg>k^+Zn'ɆR N7q5A9nrE>:>eۊSm\cReuO>C ݶ42vB@ttld2aZg*ԭl[f9Y^T7]vA*ȳ31v^HN_cG*"xGAj7ꆙY>Np-!>t w`kG춼ˋIZ]?wqt|TGN(K&^D~IE>lF_3d ш}{ ѪH [^%}+GN0'6mߙ谐YUB7ѕGm$ҟO. 3 "R<'*ލ[5{M69 [{+ݟ Y|ס$kO vN,b~MZ*9萪w K4Lf:nXoԶCকeHFO:GWK+2# [Z*6?¬1nVcMtfg%"Q,J?)6 |.c,j~wEv@wh7Lv;S 4WFМǾ]4$, XHkCÿ́N}BySpxbmhQbVcm\)rVPJU$'!:$Vyzg`7\nMӕ޲5ݡZpb\g)vH] ӼQ(WЇ&j9&gd3}Iz#9}c+,Oւ8w2h[Vh-gu/K}I [w}-=6=6qm D#` /2慹HUW0#$Ыc WQ1;FK/R 1m2wW~6e:+nߋKb4aH[jL*GBe˺WiM,+re[ ߭V*d |PPn}vtIP2d~@5_ŋC&ϐWOYNc촤!͞w"u̠!͙4.;Ɏ(8WV^كp&c+AԗEBTAdCmz*w- F (|emEdJ4+4%ջ6i-z•q,}5 dnwce_f\Qim<( P#((ZmnѸï} ɷ q"Zmwj6%\'0ZndQ4)|;e[jo7-S Qoǩh,?zJnUcLv-T\)Dm;F+cyQ1ttKJ.gS (T%+tYB|r}v/m,m<4-"dE* p2Tb4c@dafY|Gx<˥sI 0w.RѠ8(jSXQn3v6:mw#,|2׳]o-oSg}'4=Wv ˂^U`u7~$q=ov){qҦBMDnavjFXZ$=V_XME6w7>E"!mrWTU;##_ u>KȾ2)N#6 6.Vw{~q雊x2-4X%d+LElmBexc"4>EgvعòJc"忉:aN_:*re=И.Ø8"تYe|IO7٥06@oP8|S qMmb yeAL]7Z#[HJsF_yl 3 uJRk+4إBRL$p.lTh)1ONůy*3`I 3?Jvޑ SJ2#˶,"Ycy-+bLě{EksHT\c6UwaZ[ѫio)d~0"tǿ.g$)Yo̪BȀN>v䕘ڄ41Xՠmb.f0h->O"zpq>bH 0?!~'~uͳE\)^C>+ldj2 W}z`9%@ U)Mtjr,UGhe 6MbJL,y^sշVÑxf绾r<(ԠTj;blcAS AQҵUPՔڐr(pR|m>ܺLQӈ ΛFnp^|dF23[_Y7iSHbwteYfQ;ScJ-XfJrX7 sΖ\_$W*?}5S%NT6BhPS'ϋ&NǨ=WQ}ۓi UWкcLWX۪p1f4ז;5_lnd a`߄+R_sNEݲ(׭-ko~9z Vo‹D64y}pFl0r}iXb 应rD:3ƞF0XǷCTӂBsh] Xf5U] !9T!mbs'⚻!}/_s\_M=f]b ) k!tz)'zE5r[ϣ~e۵8o"W ?h{:tB\7bq 9a+#'j,{a]@(Хj e~ L@'<QobhX$2W#J[V)n򏐹x~pd̔ˇ A+kA^RUYߞ8|W`&4pO81|9mT-3ks7_@U7ĭx'eGN^x9RʙUK^P~]bxmjd`H>KFP=&4}j C~ Fu6|BwBUY:ˣ<g,i|P#4kܒOFŪ:6x'd;d-ϱxRƆ.jь\1\^zbmRji衕yY'ITu5ɌVa#X{/?C E=*@\խ(cu>FZ5)uPi+9@qޤha=|nC{ng̀8GyZ&ƉنO:`<6&,ݶ3r\)4,{l3$ 5d)q+ f?R|\y#^#y}U5Xo YJf1>17gW5SEDh2a(ΟՖˍ.;@XE/;GnM+ 9}h!mnfCpVgqH/ `^nܩ5tuxUA$P~Kilj\}ԴNZ$u~f& \v55I6,H}SL5al0{)2yO腪Z6#$'J>Ͻ5-(&b8e`v=E8sf&6Y{]) QXdH{cݕY$+nHlh d36VZ <ӱFޜ /Vh+-/?`+ yc֓IӉŌ%V#һ6 }hyKhiج}>3:2ȰO$s.7̝#u~DR/TI(>J+:TAO ȒG, Ąӵkgw!Bda 0$dN&e > VJ.DeiCF88[>YΓ:E~hm[P2|P!T|&!mgOа T ^Ͼg[Śnc//>JՎKR-h@{t@CvAOqwSPfzW-=?{*b\NߝjDǕ0!i3_/{ȭ=kv&G{:uDz}zrY `m$\"lgϬk`?ueb-2\ӕ2Tv-7(I"ll_}n2kAm|g~L$ڴn}g|)`Otb|108 XMZُ U74f7ZVh9`wO'Q)m,♍ɔڽeeβyߗ~zohXy_ ܋/j aZ3R}jYOh>#-ll "W0k_qԬ<^9 I 'Ar!?*"E&G˙\w'LjY`-u%Q8_4 ݩy^}HEsGhtgm.+ꗶrV‘f$uS6=7wCuGYNJ0+7X{?5:;i8+` at<5ׂ"~ J -/AwrН%jFtw $`J {fp5g 8П[R%l5Aއ؊#s@W2leI8t7ʫ\?Jw Y4h{P4!挕.Q >M/q&cali,c]OZUՠ13.ǁ.!c\+iruol& {(7g2k#J ʹKBXgȣ ⿗ZU\I;^MؗL? f903A-MrAmdZXecVj%!g,&ơ Q+ U3\Dٯہ4 \{=J=){Azeώ\m &D%\_U=i)ҹۏVL81G^v.b?TUM@wMܯɰ$?}dOn 32uthxl%L SJU`Q8:{B.oN'џ4w>1K_S lv(CKlgKYHRa s/ 4/]xѰo?R'ڮll$8=eŊPb@oEǫ׬0qɖbU)JkYXz$#3gE7X3Zo?@a}Hh_; iĪ P'Z U7s !'YSo>ezx5Qɣpѯ8Nᯝb8McRE˟" /VvVA]Zt⺺> 3+T0RO׸{KUy孖QțVo6`~,T#;H"lNbOu~0 Lд'I i9|ڂK]a}/"'ߢR~"?ڝ n=nU) ZhNFt=i#qjNs0mTxbٵbjyBzR 8`?_||T+ +@3HPPٿ$ .'Wk5³{<#:ŷFO{'}fLnhW&_%R&"}>81HP@H/F.ibX&N2紆 rL{Y30EV2і?Z"XE%eʼn ҀNnkD_ ;Q"#A$W[%4~J3vʢO +oWz3je"ܡn0 #I@`oJ+(YV|h=NL[GA6%8ԼڮqJ?P C(X Y0 YZEpi/data/DMconv.rda0000644000175100001440000001745414421664402013612 0ustar hornikusers7zXZi"6!X])TW"nRʟ$!K{yN+,#%J3~MSP&PuBLFmFA tCg?BBfR ؑZA^B_ܧA-]"2Q:?Dp0 !Ȁqٌ@q4쮎F9X"N?/ѷ鼔K.t ؚtmҞƀ׫j2@d Le/ z Rt )3?Z|fm Etn;Z@XHpdbW1I ^43Jc^8"7zUVQԛM%"/3鞞WL$ԫLK1Y;v+WEISDv! 8goCg57Aͷ-ufKBy4|M5={%rg!>lhUF/sR2-Xz\-2t\A:κ皑~AlQ|WYU$y&]Ip" ꥋ3?&:]$ހfovSIՔ)WOLXCMJW=K CH2x~2vbH|v_SS d3 zbLZ%»GiW^vTeӾ#Ѭq^QR$RK)Ovm#vPL< -Ggg5=iPn Ƌ[K1s!YX:۞ZJ_2 5rn},kJ qKh;^R4P%ڲ _0j퐑QVO`饗u7g"suHbWV!ڎ]C$Q'sضY+ɤV&f:'sZoQ PqpJymby2!%v:yՑDFT1c0 ?A7`QS3L]]![UV:/Q^w癣hU@ vQ_LJׯsf>mj!iw}+F81HJuyXԽh,m91J4S|&Ym)NdQ^]N.UU.9t۹[[mυ*l4K̖1pr˳}]ɠ8J=0 vgdnrnEG3o/4מgL@75NĀ<IfLlZ#bW_-dkkYcTȍ_KFF(thʛ[? S]kZz/9]dzq/GdޝQv&xXpR-8D@%j.ORgPr1G2D֩-c+!JkBB ˴咥h,3IjZ˩V~s]*_>Ϣ-)(!`2vYbz\JXg){Y _\nU 3tfѿ-nf6F*H̵o`b)cȓqp 1lQOVfa[ԏb)Ϟ=J[^dD"8ќ8HgR 9~H|X_ o~i >@bq'&;G(لD06%^:>Z sO1F<]y?o=RVRW2=HT({Qj~R_ad VJ!iAo@c>{ Oɷ@hӜM@f r"#8G 28PHM5 ]uEZP/':l/N $2e0!{jTlZE{󳙗[m=a_+#h[;yеj<|;OXC/axoGm9*S=y9O7#g\`D8*3ڪUk{ŲEbE'Uqx4xxTBğnѮzlMY[q= %ܠ.)}どyN{2s:RSS#?Wxp|a7J(S&xc[#l^S4:zGfሣO}YP_ aCO:Qrn/3qc[P"`akr/}[8ϬG@^By-i A~BlsTs+^ |u- ŏ0a.cHf߀2w$V(bn*DX"jtbWlFʧk픸z @R(B_rj[NsuUDȉ^HWW|Hte Y7Oot0Z,ژ393\`9(~q#HFw܆Ѷ~%VfϟɡKsDTjM{u6z4ےA{'2( "Q> aHXp*K9=odw&tcHϙ* Պd3\+#iNGp3vkzi+qg<Ҏjy qt?d,reF|ϸZ/| gxITR4 D7w813^2wi||n6W&&#cj=VgcA+wE7kٝ d-K`&95'IT-Ջ ׷YՑd|ē/ n\P$24L.wQ(`M%b /7n3%=DGoWWHRz, Kmm)_$W'_ GQ2 I'nwg"3+& $ aے?gl31ۀ-9ϞZ_p>ü "\j4̤l|moRq_ _{@gRe٘c<YffU-Pu2 - ۑ~ ,幅 H릵zw4 ?#28Y^+wFC ^3.̌kyj~}lՄ~|!!€Wdqv+PQG|<``j{b SQԧ߲9B R6͵fR:cvtBBf:8z"j-W%~h>! | ۅs-kSomS㙹 {ˠPyo!TS!kI@! XϮG>.M3B*k Z3+қiu:"}1tCÕTq$hq=E,] ZUu1N?7lo7T9T'IC;Mӧ-CBDOjR -=ZxFN~$CRThjب:gʱPM{(_h7FR%GYsۆ ߉+U{?]rwˠ`Vc$^HZx̵jw0b6/$X(\oU%,(!}& ~O7|wIv|aˋ$_Y>/%҇f#*ApjK 5+:+&^Q6Bg3ʏG'D1>cBp0~JGSq"7:!62ҽ6DqfF`<0#%)Fe&8zy:F> b b 6>^*[Zn쌉ә3ZGdНSl>/1?a@DtlNsCQ*=-B&ywZ|,@0݌5UVՆ(ӋpPe/:)iYuzJV1PB8#ij]5ms@/H!4Qr7? 5f(Db"T_vFxsj/$6hEk}~J4JAٯtw_̜BG[r5Ya^ Quehv ~^TEP`\ #._ʕ5oeg+},u \fANr}s'LQ9w6Y VTt},ēu DvFQfpyzp"g"7?/h6.#T)ufI'X%ī!F./{©aoﻶY_ \a1EDYX)[JԓΒLi'Dg*!8}MQzvӚ]o.O jỲ TKpvFp0Y&5Ljq9ʹ^ _oS%mec`k)$M}r$ E3e @!u'%4VsHЕs,dSNݺ#>EUxc-M2_eZ3+%&߁,?.4V\+i-R?aS"LZ\o&8+p3ׂ\ے@t3Y')HC@އY!<-w䠯F^%W'AQ>X vEVF4b׻:rY]fE<@C'K-;Zm}4cF'Yٱbc+IE>w<)eh89%2 h &"CQCf/ä*WїWvSʢvOmey J&j#g\ Q21!- 9 >0[Vfz@ }rDeƈ_Pb~p?-"EK@ʲD7DX3d>ǯ4=>0 YZEpi/data/BrCa.rda0000644000175100001440000013175414421664402013233 0ustar hornikusers7zXZi"6!XK])TW"nRʟ$!K{yN+,[HQP5|53i5=$"8cv;kWbDvs:ڴX PkGUc:wWܓ݄HlXqA ;d򪚤aGc[0~CAqW8ۭgCs'R|K*4nFȨ -?wFP݌ʪ˾ ojȅW_m;vݨK“p>@XTU88` >[%(Jl>ÖW`_ލ-r#ƭFAHS5F9ꄠ5Fei~bx 0/zGWՇ5c^/q=3Mμ 8^E#h̳ CuUSmv~ls$$ 2+ ju6k⩰>"]GD/9l-jT)%^q5m4i8*,!t}y 1HND7G/Ì:fqI a*||YS_2hm:|1S[I!bKA[ALQn_ebk_H %g#4D]'^T> ʮt adu fiTj6Pi9O/_T3dQfRwvg<bqjkxщZK}&hOJk52sWn/[]`%LٙloAql;PѾ$4k];.)P 9߾% r]jZn. 7ʬ[RsiFܷurEt|bR9߮fP8݂A_C3*tk)/3](P!omqT>o?ۡJv1 ;YxS }K,N`kVFp8Ip:(v֐`t KTluW-% 7ߑʋN W3`/fm%Wl2S?|".|Ӣ8="9j&y&;  o/)g vL)`tJ=oXi-)3h{BlJ _ %B5xʘy7*Dqi}LޓyИ) bf[ٚ` wDGXefb#J^AtOBp8j0?)n> {t XA&m }ŏ׫> jRC5}_`#QXmM`^cG)@Oro(u"Y:4 h1M)40Ζ8&{? \)@u%GqۚS'¼=p^ZZ뛶|0=fYd"0,=J #.o"ĽAljԭlV#4uzo5rE{RbТ35 Ed]CM"0}ʭxT+Pb;񳲢7H~C;RTqĒhFH>c^jY`0%bsE(rSnq\VCJ>n[Bt*IS5k!٫<̯RbwxlC 90t>?*alq5 Fx̬s/FFgLx}..4JZC]ɽǏ=eu@qɞeܭW;O2T9F>7[>!Gu9'Ea kZ?LLFĪPޚ66B?F]b [ıI!G2ɖzR(&TW~BwdiɅƎ>ܠ>ZSLiSV{:w={s; + $ΔOYzǛ_g}B0@,9mv XVѷ"x: n"|b\ﶅb$/PK)Iĝ]$QˠEF|dNEf*U$#{5c)#UfQ6sNj}|0-t ^hJ 횃U#spSL$:eOݐ+87cd=cNGͿS)1Agm&8b1,7l4K'W^y;Y40逎z m 4ONK|`dBw8[aiKYJKY% W+${ΣtW^0D1.cNm`7q n./ǯص;E^pNT V`e趥w©;5Nq 8+x޿D86%pTĶ$#b)\jf5߾?X3fCTA2jq"5_kXNdOy"x>&# f]AL\ )8QeE}[*qbm4IcVޭf|;Tyg/ˤEh?~&|=Ns Jxdv-}/R= kmfpbQ6'`og<|uRn۔T6xI{;IeQ9{Ƒv)F%miݝnU9Rje)&ن 8vH_=XC`CxpFl]uWpUD52Ta߉Pb{{ bFL8GA9 /dgO&#R6 kk.!>InQ"0+Nj!ٝ"7AKzrS.v‚ReZSVóZyҮPX#yjbqv힭JTFƽqT3!ey t.n/-W2Leټ^P;]ML;5jlD_mEk/sڸW^_Wq:L6y;r1ʘqIP[N)=F-h::tߓz^2y$10c~9FuGǵ+p;oWCx>hV_§e'Dȇޙ ;cŒއjC^pc@[ ]0=D)!V Gv"a-$kt,-nGL1 k (v DsfN rYRFkcU%={YCNm%fx#zm[BG%J ښtF 6`'Z,ǿVWHrPu_$̡ "3R}C}~qi\D^VLȐ89CQϲDUzzXnhOjC!(<>C =HIx| 2`IPpDO~C>,/kYcv;[fNe _v JG>DCjy{ *i0PKWAF8Gb cBU$$ɲG }cjdH?-uE2U BB׍p Rc4ld#J;0?rG`Bm'z(,$](c |D"vmo>AY3UFؑ^{߼@d "&u@10a1usѱAtE|5_iw08' 0T @[j -l )CD,wK0P F)"MQ*"C,jr_MJ$F[/U7A|Ü[IXǑj)"Q,,CDWvtՀJ:uuQ->x1)COrL[%h6lxW_n_%JXsՊVr1x7<edMbY~.giA7K\!}pvYƵ]>IVFK b=3xC^1ii@[WIo }4^ CY/Zhxmf ԳЁ Se@,RɁrr.PԿ~j:U!{'X ' ;UR/`·³0`21(%p褤~E)sejU_ ~߭rW^Ȭ&0@{ y˱ 9G ; |QVp缞zIeA=[2WK5uq>4O>ly%6[VJLщ iRgxAi2(ehVc:#Y9 P[2HDXeۊzFBgv~7zc;GJ%1uwB"ƪSkRWcE/g!!Z͍p98%;t ҡZdFjƖ m*M滄"a \2TYtF< zfv">A4CC ?Wc_Jk~|g>JF{ƲM Nxqmf$㙊i Ȕ0sju$4_s(Wg/L#ۢ{G'O۽xsrr r^C-3~lE ޯ"m兗M)}D c0^ P>_̹zވBcZOO5k!Ԃt"@LpV *R=8:צ8JҖ4AkjD'ֶsl8A:_FyX0/o/LmCU޾jĮ<˜l\JҸHjD[Lz:ɛ`7 f`&}|J6՞] [8Sbm4cCRMF%{1#6֕1i?e4JYe+`MH>Ej K (]~x=J5=Ny0S6{"}@575cLԴμ@(xy4?Lc/jy'UׄGe͟& m~.m!M2/d쉏R?3?D˨S=88Lըy_Q=G.d޵ZWw"*iύD/ZZvk[XL ?*E4~eJOXJJQ Y5s4~l x2 U6źx~ QvɀhE* 3t[!dSN- ACNM,Ϝk,0ھΎѢfQH'+OyCFw--}>jۀ84Z&bw]d82YapDbT:Ӫ==0e(-e9- _*3ˡh%;gL9XoUdsS(ARJ6v)2ΠQ#ș(I`i7k ķ)f謷v پ@䀩{!@8̲d%a7ٔ.eRW _YRdڕw3xS!7q\# eJ5tݫ]7*$f" įU\3Gkf\9僷2*я  bpQ5hLiS 016G|'kƨ)ȢJB^!un&};iʢ鎩Re'G [B9+3TGnO<VxB&b ]nOa+O S"]h2kR8㞗SPvd7bnʪ摢YȻyx/ň 9a_W4P5-\M";Ȅ&rbJlڰ}i'Ob4Unue"WGκLj%qO W% Ȭz*;Ή2"H)Nng 6BXVr䫾2kټC o:M;w7 wph mU5 \~#~ +$m*IP@LB x''yWq@<j*].DH:;jK-Va3pHLOcH.MKoosDۀ]| 䱆IYl2$WZni:iJD7ӂD81vFC֬Rfs*CUR'nCc85:`W~gwjYa-VNYN#%-GR-nSDcG|2nG9淉鑂s{>y7>A1\+y &p03+ >{N"̵RƬ^.ߋα,SDkYq{OvZuas7H$O ~x5n)UV4YU|lx3ird)%W3LqTR/o'zhC`%f:4k1kth];}]Qbl@7*g0W4eXEv Og~: JXo^'3+!]* 0ZVx:.f#0$a\)l[@"#,i'. 0M;E}kf^I{BG(ť=u8:aǗ8$mW"U:m%{7 otaZ޽<+!J䐷t[2Je?&&o-8\ct<U0R鱫,dWmyuC_yzvy :h81cQQKX4 ےd|,K ny7@<`Lj ,t )i͹|̫c+eC~Hm$2xo<rV"¨N֏,T_G\pmk ͋ԅ{'PSקg"0JDKFZoOxPs2aP 15 ??Ҷb&`|)p!nt Nk3V0o"]RBSXJʚ*&׸>aDSBz.?aj=$y0G,<џlj- Hj.!77}g;&躹c),I˾,ssܤeCC7i@|sQK ,Xԗ8WrrRe{w&xU0? &7_w䔄 F|tQY~-Ej-*tPNu=25qB9N|& AIF[[&Gq ttXZ h~j5 ΩqKw4[_a2cz$6'38kp=z$I“HǤ Y+js )6l~`؈/%p*a6/Gux E0O@4(ԍNqY,wu| $G%]l"ڶڅBԊOh9$4 j'FBqžt69;KjTHZ]usJr`2[ =N\k[L+x#$\O ` 2ٟ;8Apol{t׎uY!A YkaUIK\0R&[D#P Y)1.]x,DB {m0\QѨ1Fo2Ncp Wd]rc ȋEpe(gns܀bEÔg2"(l>΄ .1hh^Ͷ;TX"޹Z0z?Hj5o!ae^ @~:ӵMhaBA74avc /_J wpi|jVm<,V},[9{si(dg_jęC3TG;bﮁˏW!3&Cox^!17#.FXJ{,㢘d6bG[#ۤByD"cuĸ:ĒC;d= E)'ߐ0#SNI8-%&+r*$%D,RՖvlFy? `"ٓ?vޘ7rc`L8# NRY83,5GCRc$֝~W"[E|J K32NK0v 2PIm][C U׻wI=f$:o%imk[hwY 18w!x7]KwNI2^ 1}v RJ3ݖj A#reߞ4۝eXƬm7 *n`Ilf?9ww҉/[x< ȝ?f (-3(SW:pz@rAh`0ˋ1BqD;p2<*G2Yy.T%Kq׬A}h'Nmg4#w:RO1#q`ܦbiwͩ=]g,!& 4^5=Sz"ĆgHdZ3ׂ#&ٮu[kyY#lcfjPr\ 5Vа= Ӥ$W4~EL.G,R 囷Ϸ{rȠcbJ^4^Ed6_{#[I-`AElq.& \U{v.R1bUCY[ wCTw]4e}f\Y?w`˄^$wؑn?P7Q3[F{îҳg$@Q'` nj?s B00;(fT]/E{ hh3I; \wK\=E /A!Pˋ n,w8hrͦ(̀$+ 6~j=9Ҿ#-V~ |{"`]񈾊#haLF efƹ_Z<6;Q!,%܆y`;LTNQS;A@$r{Ra IvW/o#aF LoQdvIJȭ~g6;(S5W*/`5[[KM>̒͠1UoJWCﴴx `[E4ds\%xVvl`+!CN ꉁWF85_7D傲 239꼆G(׷ҋ9+%rՓ}-/hEr$BF݁'n&P\Ku9,DA^I6" ې3co4/}놎aɈB,l/0=G=%6nJ]Wylr>`;jP35*0Qv᭖'*(d)ڡ +.j4{ .t.AK Sǫ_IZS{\q":$ F3ݣ8ϡ2'rj"=-:C_5 O1L'm '$An/BBn?Õ2:<Ksd\3y0POSLˍLXhL%4IZ>u^R<*@|s6ֶ-.W'-3 \gB_[:[ p&Yݧ뼔bI&>Ό_dW/y}NDQ]/% ylY!.J6s0<=]V$@[;1%FX+A7SPTw1c¢7ԦOuOa._Q;d8d1d>3" 3"`ѳV*Fr a ;[Fjw}l:Tx5Xjf'~8-@p[xTs- AB3VImM_x ]]J%6_9E[26yΥb4ѽNއ@Q 4+"wKT4JS7HfƯ5]e6R? 5ҥ_L헳YbܳP_WML3,|\9M@k lAJ;_w~Z󕚮\? Y*Kd~`NO óL3<imwֹ`~YX˷f~DM|W \ktg.B)+vS9uj,RFF=P(]s^ jud8h]õ9 $-ARekEw*jU@Ͱ8f/?7pPa Ҷ*s?Eϔħ{~6,W+?WQONIڮVva7\ =:MFx"–{:hfUW@FEݷۯ#@u?3 e|(r#=AG+`1A呯L})irx味1aqZ9тsfZa\d(MesY0z7c^WQvAD}2OߺݶHAHnEV۟!._TqJ""Tԍ ?W_^+ /dF _5+]*K]$(qCAx#ɞ= ds1}GMlM=ݟ\NQXR">U4\aư&'&NAtROcn!zIJ%C.rL@^}uX#|gd!gP2fb,~[5{Oa1su ߓz^+%Kd炓Yj΂Q[4ݷf YuffʭJjkNY5Q-0])ʁbxݫDzj-2nj.0h# ˒\5ۙ' ͽGy"Lbw5V1;5ki +,뀭PU]շTS 'p8I3b=ّs=Zp.U-h3;[fm#]k"ܖct[.t}ݼ톥f#ⴤwx>k625[?:HS6]|Dwݼ3T)R<'uϐM~PR}bzr$Y/(VTv8;h??*Q6Fs]P$E. IďMJYn2)soCuyH[y)7Tӝ@+aOg!gkgT?BϨl[mqVs~uϋwR˺JD2ӬfMinZ춀㭵rTng,&'ށ6Da-αm ډȁfM 1בT$6"yJ@+WP|"p*yWF |:`dDCytR~,xFbOG`A;(t!,K,h)x]VF In T:iIwI 齟ӒΧ43'+JC.7lRP(NJ}+ZXr"Tӟcٝ"٩4՛.ұ9ƪXPsh]6 ඓ4VDp^ěw*lCNЊ=*:l z1od}dR'n8>|7z ^㥐8xK3a+` aŨI3.$B"mvA+@4Mp&`_6Gp<"B[c D|x2=FEO@,Zz(R93@q.i:mPӧζDKXVNH s#ptg&n8|0xbq&=*321wL,|!ZX}It[ 4~KcoāfQƒXEȴ?-W jXmmjnIԨtI47+*+ˇK1\;UtMdwHH{3Wc N dHϐng`!TXas`%V|^}=OL` 1lފU&Z!}l]ұ$u;27;pcVL k|NH!Y H3ZLFT0GU+]nk01^VG)E^,4H¬]gE`Z>_8h5<>W'l`v,=яin@xo¼ŠfY](d$H9nHS:hIAHK$P$EYM.w~8DV %_6I;2CmdAO2+Wrm5r72sa:&W?=oL,V !vtBB]K\nL+=.MFP>Mu7:DD Dl䜹7>7aT+ ^ S_$!o.KcffWrZ 6@;rw+16Bv1k٧׵y#TDy7VԺK<:ή aN#|C_Ouv檱w(uO1ƻKHPiWńx*jku7: 85'-㗀ަ+6;iI'@!n5O~j{+2*!ʟmz͠vyEs2ճ ZT2EHO }7^$tu3_WQDLfgu^52^G ԏ7dQn`WRh =PN_$4 (Bs[!QFì~J5OL 7lbRߊƌyð e`x  WˌG> h.ə u, (Le(ivjJBCewVZ6d9qO+fۧbyUr4,+PP/LZG0v~4Mb䋦)x|tj4$}=@iI`^Veow[!#o>+љnE6Kb8+vQ tEsz^V V}fLğ u[`hȦgErC|Cwx-:A ņV}RC]bV;1go P̺Q c'׫c[ p7l 3Y~[yZWEW7 Lڬ%[+S<:v;G-N?s@Xaԑ^^UbDi]Y@q.ԿC![3\n8μǵIP) `duEJ  /ڬֵ}` #/]YVQ x*t8r4nߟVt:59Q&u⍏*Ikb#;UkM`PB?7] ;qYCi=t6s c S7bY7ǐEAA-o~\F>=B%1jo.8FE%L~$͚Qzn"xl=#}:CJӞQ;fyvOS=tu-MmMe4έ:xUa̢>_!Yī%xRb6:4 Q,T8Dq>booX@ko؞){J,Bw`IҬrd5jB@g^ݸ~טh|5y-^hx6ŊT} =(K*`IK@L#=ǖlsB43OjO: oWEg%7Y\!{MJ341%Pao?b[%u=1!BN֠ ?+*8|܄[Z~㳨1&leq*.AOG>YQk&ȏE՚L.56U^vi<=!ެa4Im׏9wS,Z[E)jX߁0[=? L|1EWPLvZzhJ`huFv@ڙx]T;.>> 'M_cįAi+lR/,XX4.tЂ,LW3[nX쨼S|The^*~(yoT4`GϿ <dR|Ե|rPN0.{X9NnXjʛNIf%=ZƇKٍ5^\Xg=,$!5CWmrZol+ƥi~J4WfN}zO1AAeno8f+ufdct@aN):WfM_8 ŧ܆w%}h>ʂ1`qrgN]m7X{‹#YbtKC)E#=s 4UH}mWzHW "c>T8Xu;?E[Fx|}qjbZH==:/r.~j1mJ"s> FU,Ihԁj@:myHc_`o O$⭸0(z-P5nճךƣx|+>xg|/ C PH:;Gf" C;s<}pyجuTK7(=H$?UpE۩;ܳ~Zkn( :$n}}h@!S 6lqCzW?sAzQ(3멁ޓ|ʼnL bڙIOh#^}$_lS 2eZ75Bwۅ׋[җ5wDbVS]PT4{Aj#`>$C%+]g gY1XL܌zgqDf ?|Oz)TSZN7hX9F=[mT`c!e> _tk3{VŦ|D=hF?5 1Hypq 6:Q 9S%ƃ>廤AwHwc#ĕʡ_C2PSz/70fr=`BL]B^$pQ}\JT~гREЂ\о@Jjn# ;sxhc!BgOGOӤvD[:BLǠ[yOdL⅞Ҳ^E_)$[z1섨mo3g?H'v-n.'d E&{GDɾҫu>2˿-#J4ݖ@f]m+:3uv9ia'"ZO[ՌDﵞۄ%Bj iV2ȵ׫.+&XMY!7SUa2//4nD\#5jS S(6$W4nQ=@8:m|xcFnd̓ĭpEˁW0w_e׎ NGPSx5 w\ 8n\̴:Kkzf;FC* `cq8\X8DtP7/Wx7r_U1P~.ȘlȵdS~<Cp/>Ds1˰.~(jx~Q/mN銁H~"ulJM/Pu1|Ye(bM}z2eRSuT$H=2XӿӼ&(=NKga8c_&o 3Aa}$9nm"Zh4YhNH䐉_? J=äeɓBm SPIJ3%+F?B9PiQ<_HRҘ㒿$r,n^42iJp+e0pA~ZTo08XqRsQ:~(~Tl&S>up)XBi؎4}.ѵB8c& 1T9|UˏONz+שa&:X7Tey3T)n>;>;ש_ [QOC!Lj4$/V5/Y-%.5nEWr/J)#~~;H;Z墳}Ff4;N`z,߳L?3ٹxQXKT1̭g`kSe$4{[/w$2jT!j' %q#i$ȥ4XtMq.;{C9}%67zv&~oØqW:%!`3{^ߟCV( gBR8 Ԫv%N!$:Is' (ٔ61"Ӹ) }o[اTQ5_jk3gi6iݵE]|cc`Tk8jVtL> u_xo6nPz]p/,h=(jBâF]8&~=.ӵixzi7]2QĬɪ'Syfw *+^ &U,J2d\[?<9Wmr)]V&ʬ}\-H2_$R ĊdC87)yøY=d8M}O`YVnu0Ӻ<Uíoϱ='A9+n)oońfs[aPph.0#9 <޾ߡԹтc9`h`xL~#GBL4 L%|%Ɲ*{JL^?þD"6Tqoǃ~XmN Rhpe/)q%C.JZj|HƮh7]W f2P6"΂` N2:?Ǡro4;al؊{h~NB{DhRՔ6΢FJU .~00>m Y.eTĻ׽S0+"4(Xp߮GX0?{6 d4"S.dfJ/8R(]Y+zF0B$\=Zz\%N?򨺯hpע=/aS4*?/TҋF#/ᗝ<'M%˫Mno8N!e9mpWf9+B@p2w:`?iB1ኋ'NYj`=쨻7)*Ү¤|5As޴=ͣ;z X!>$\)G( ̈@F<l ci4׎|6ԝc8O Hׂ^:;NgdMT.%>uL= Ll}8ع;ROKCgD%O,q,5,<dP F"X5Z7w)/.K=[ϵ,R9rV)r~52rͬE> pBnX0A ^F%p%(!7hCB:5i{ŶKҷk^es\߲t cf͡yT=[O#<m K2A%$ ݯhDb\<NAM sڠ mZ:ba| F|^LĽ ɩp%SXꍽLa.h;Pׄ=uU| &cq \zzj,fJ &ڱh?.ɰ)_c`IB7. {ãD҃';;z/IRr}FU=gަ/A:2dҒŹ qTtkYZ7r.3YQkFk돺8]qrM*7WK#_a&ۏ‚ 㢾YW'rB)^hCnDЊ}ώYVI7x $<%֭6Af㎷#60ùWb;K0eHR+4\rnG WqqA@= K%v,>KChf)F6r7JߥďbwK'0:/X[I{U0)>d`i VM헹.4BG'X{߳eeHy7U=Ef_6;  aeA27I&*\!;L"Ps pram3E=rsde7 aRqTH@Ctkz,T%ZAqm _Atmlx9ՇB^܅aw z+%t,MLϐsTU%>PiOWG!+RC,>,b}Ce2'L/>c|?%e߄ϿdnW _rg=ƹNV"h%`NHVe*4YrQÆE& /~C0Kq]TDU%x5ck}X{vu ĄpWR9]kY/~3|Ds_Sn!x K۟_svj/N#\!8Ku#_=7LP΅jn*\1)H(Qp?*V(Xw 4xc?7B2[ bD %?!V`dOL, :&P FX^z0bӡ@ `IGխl^*g.%Akϟ ȗӝnwg؀F Ճs䉾?O MTup"DʝzӞe:) _Φ?-^ >FkBER0MN<228FNr0csɷ?)=@]Ifz+6K~NiCƹFe9SX J ->VrCF]EUBu-+yГQL}rel*T@8v;Ga߮XCCCT۷/ s= e-Z_AɥpvT"UT&ZfJhETnW!)]{5 2MXJk^˻iyw)PЂ&F1}Tm})};Q+f+7 Ob[{ gjP7wMZ^_>VokaDR)w76 7fhpV$ϺőmxOytpTT]pMLd{3cWAVS-0=IWFLk(ٲE7Hb,AXפ| JCt8l'ԟ\>iSqjϦId3K _w49TGctuZE R* %j?bT^ N:bs m J48U$\R!؏i,R ;hHwZ 4\ݑ^FM=vV+iB?aLIj]Ml03)d_N@O!+C`{Nu3KC xmA S2w8ݱ<N5Ʌ̔ihs p[EbT~1a<5"~UL"XϯvF4ΪgctH9M gscf7E.9 r@Ĺ8T9+RYx۾%BM =҅mR+)oXnD4w\㣚m] <8 WL5m,FYFV򲂣Ӎqa#Ff%vuƍ耫$7y`&xJ EfؖJ,!^Q9݈1,WI+Ho> k8_=%ˌO suPĞbqP#Duܾ o9ʽ,UG&Ctv+@P$v#>UZ6`?Fi :[H'j ЛKݲVu7hѡZ\GbLSBtk$$3(HXT{ 8lqt?3Ce9DrQD[?BӞ \?'#6Tv/!.21 8cfMp07O b?W*`I@L3^q#_͐Q Rrr:ٖP_?FOsd!&2LE*"UϚ:Gg 8$yDY$}ĂeleAu9dhݨCdYzcťjEteR.& !1ϗ1ZZ2wI=p&mz]B_W/)⭤p%pcfIӾ޸,Ս{jݠC3gy7ZS;wͱ"rܦavtI!0#VR"JCEamO" QD릔0L:~V.E2|_T) blQFiEX=&QгȋIX0h{W)˖T&,4}^:A,VJx3S[n%x܀p~vK>|wd{$9Hm΍W ]jagx @`=fӃ6B4$syo]^0]_xH^{MrYZ3!.yvtw Ca֚n^Di^ɼ0ѾLBu3Md1V`@<>|fdBis@%f4_'M'xTbݶUrW$.L޵Ϙv?*S̡fBGOf$ȫ=0X|-ʎh嘄[+J}qvûq945CϵepJZ}P+X^-ESn\_VZǤut|j}ab(Q@l{HJ tόhEX7ͦۦ#'8ر+%C:Q|\G1Rd!Egk]T~4`q~' (4Ð3UgE#HmA~Ħ3^Y:NB y-.9.V*L<^H-n*cGrS0ti#b܁Q ]WЖw{}EF4TK'Yq*H> i98tz2PY*_ⶤc:_ 4{n2'aʲHDZ= 88`FXn8 /6b4 kP6hyE5&ñpbng(ּ~?9[Oj'/ , ģ5P _QJΏ4eN3oTLlޗRɱnjَ!w}O?jV`q0\tU*5ʏ|M;jtRqJf @nI.ػaPcbomIoOo,EpŚ:k%u&@b4fRnj|-UX驎5PQ] ʄI&?*Ϛc5+@39bTYAm~ҹ2Z"J,FΟK/s,GY\T5Y;/1Re .{hNZa%IR#m*9+X.WQJ)1c`|(#T 5` s˟?\baiL>.~W2#;C Ajv*cP+6[^nGKq{26eW>58}LOgm%.1 U87O5B[wȩE9Jo0ZtN)VU 'sΏ8yA1jF-6+wo,|:Ux[m쵧cy0ˈ|3Z!5A_I?-VX@ӑzlWaLfk61z~Wt[q}= >Opb6:p&[8k݄?8`kMbjB*&5f#GKU7oinܛ/Cn<^Fcm,D1KӣWxo:SԴ̪!KeAz9r5ZaZ@jVu$7^a;";V.@hln%g`DAš˰cP>fl-%(|wլx/#gi(}&q::֛VgTyA:q MfG`@yK{rT?o)U HA5Hl8/Ѳ~9k}{Y1?G^!(=iGjdgLXFi.EA7)'_Juy9nUS0#նy+;LJhɵd-OGgp ܀N}7rz[h6XciQ\{!j_,_+) +y/zBKt>^6W[xYj-4)`hme|}-yزG #vw>Y< $=9S(Y./ +L 6o:0̡t9 Bl2(2qZ,܉b,Tcx^RMuyE+hG;䕟Pu, *p0s Bޟ0jIcRFO}4M::(8ԅ(q~̉ ].p4ςyek̅(l$<箏|2X-[&ZAEDJ:IRd/d]rûPXuda[I \3CgKl| !`F -,2Gi]Ӂ@f.yDʾ'~=Ԙ9h6 0mZqφIUQ[e${dcu\APƆeQےh5q\ż!Ώш7џ-;n>9]H Z IJSWyF7WM" {D.TkEzQʋs(tz"^(#BLIπz9Y5k=O섆}|X)n-džݬwBȽC`:<QHK?dրS SXjy^$ |U{\chGGE1(-OtP%X!sYg4zo8s9VHH E&WetNnXZU0Hihx ONa<<5CuzU(Wo #.Ԁ&|$sT+!=Y]y%Ͽ~UmG*CRI/ Nn `Ǭ|RfVٺ]ť2cND>||^QkۤYA}5.#"($@TGcsY ;"DnׅfQR<89?Q5*O ePHb4> v/.$*I(N;zA؀`kp(b1m oo<]gow:LtjdEĸ_ ,jU/nyvuU = &`F\Q|Fϖ'RW^~7 ě@d @no+^e*[Eԅ~#ڇ{CQ ,d 4sg4CUc MAKg;MUNX{࣢HF"W]-3>1Xi(6B(ٚ6Ĺeng6PHy~ʉ1Vg 6 y- >4.=쫤`U6[*@3UmJS*!0/;WDmBJ7S^zNXaP|?}k 5 jItʀA5Mik}a@@@B|G Td߮hCA%nKhÈq 'C0ۖ,O"܊AkƔ ОenQx&I5 k_y5L\;2"-؝qWlWVOo!kU=e@h6s̙Xt2 ^xz#=rw1p݉-XFM3@:4ѱesE2>Fσokuy&Jdi2y>6UjR{,ᢉ4twZmӑ~nP|v,sv25I)j[7hY,J_)9]q鍽^ePq$^ W*[X*=MNÙO#6=7]e4p!H WG (nX(ғByMAP/q{96◵0 \QĖ B"t7RQ MY4P)MlR?/5eD\MD49` 5_51ڤ$Y&[CP] ߳F8 1D#ͼ΀k MB*ϻ~F?[za_.1YCZ(ݥDrM5[7M.o{7G{Ym*h =ʔ~>V6,tmm0k1buu$DTETK W$9ۆ|`xRw:ώ/+{`XғQ4uUxzt<Ab"⇑ .[!PQu } gU&+P`eCM#P*g/B8|i*6vEenðN,%3chpOQ@ XݸrՓo:]o, G4㣜# ym!Œ-eg%:l;8{`=vȸ4BEUn/gGR}%E:L6b՞?FHY9UO9ߩlϠřkbz.#r;dZ19-28bI[1b%VƘ)Ӷu8}#rbXlPh9|)OfKTcǢ GBi~[ܭPEs2}dzEPΓgf2w:6تyn{Y V7lN_y_]y)xZI%9A0:``+BX2,H2_n^J5o>c_i|NzsjМ|zP~4 oE1ʭRXMMzXf-ƃV/0V)9nmנSDO[e!!njM.>y\ DVYOUejhAW,[=4PAcgO~*q C{ӺGIq yvkf{||su!M1E@n.VDj#Bmmwů *3$~-l3Z6XK֟Ntg#~瀱{O"-wzAM8t!~.bRBă=$~Ԟolr{?ydSqWwY=0O"[NkڞPyEodO1mM`L Z62il'@VϣlbC2Y3 $HLԴըQ}ܼзOKAc@psV]'3AvQ븷M,k;.H{qv~ќ@¶u!!q8(:!, b_W܅g zˣ%cvMoROrXiCrhߋG PMg~E]k=BX:aNFS\ $R1 +t_2 xJAD^hk#7Tqrխ_W{>dc$p73V0VA Rx'"jBlzTFjXZ>VHe/T[؃\} UEk^YБw n h1 *2 4]2vgٜÃxրZo͍ >E@4X4OG1pz9欸*&t7):tu[MK,%(Y8W=LQrlV1*tO}{K .}d3 P?JJ~+`h3<`ROn"%ĠDV1K&#a-qa 2@q+& /xg=)GH`;oMsu5Kd O$FԆ۾Bcgd9wB6Payjubᆲ3U%8hr'"AfVʷl wVXPr~醓+HBغۄۑQȹ2 Mbھ B%sfwt<`S"qhGoa N%LDJ C'¬Xlgj]St4υԂH}(̵4/>ɅA1ԫ84>zJEdpî)vznxQi@T#[-Tk:ylo}iá? dYzT;” epFN|`{Gs>ă C}{{ Gp7{~O(yӞ7[ۢzf\H XFa,a?ߍyt2>6bPU-:oCZVi\#ȓG]v-ʅWOQvkӦ^;H4 j~y3$g0<)&;[Bbx.@p;ۃ޾GihWM33y- KqVU?f$X aܒȅLÝxQ`]G%jr RGoco+>f"}ED\a k)rNssjPap81Hipw_ikm \'A1`Z2e|Ff[N44\C޼(~ȊJmhɚ [L${5It԰03J4Go17/ڮoZ;h?dJiO3PL*rc}I˶CrSqVn>HFs[8wAc(aXco{Y|Bo{6( f23Ah'.F@tfz yrhؖ~(VD5hJStT "Qjm˫n>H?$`W}~#q(#v<ͩrw qJVa5ANY^ 8 7țlJ%vQjJbҞgAC`pvM;^>q=}gAGN907)!X0׶24?"E2׀p"ZG+XaBR[[ǧF;FnH]poJ{8WWJzBK)CJ€,sK&7uQ]"Ɵ;줸ޣQ6ZXBabwJ 짫էDqGD\@ޮ!ڮ?|Sn"|i=lް_4.AFѤZ:jEnq&z[ķ.Y6KS,@A!#rTfTA47Fvs/lA^4טa%nt2iU[_P+UÎ^NqO,Qم4|J`;Rʲj̼B^Ni.boOv Ad,$;ϫHg4J麨d[C^XV6>:*Ra~ߘYEU+>=ϕI\LtWxG M-±o @* 0>]S#{lI7v}WU- ˀK%dѡ;wU-GTըοYIzѪM%yv Cڠ Soʐ`2<&OG50qY=HݵO9p\`'@\I%/±/ $HXCMӇVCAqkX.SS6+^. 0`\۔[ZjlK }\R}ւ%q(e5*0-W(K-jcd O~SǨ5S* e/1g9(|߲nI>MxHD*%ٛAУWhTLJUxpjn\ \k/3DZoe4%\)mGg1㽩E~2M@Msp=n04)Z޽ϐ-GO?55w_FX8+f|\)dQjL.$ʾݨuM3Qv ӓyiKs^!>SbI;O[12rT ؾ_myD{}]%3'V'i*6٩Sp<7ɐĜr35:[8g^М`j-t*_b!޵ɵ)WFJas<F ,_+K~4eও R#>]qs鱇;ZRRړ&SE Xgc .ֱ{<{cLuLeIjxE(&3s7 ~9.FhTj5ԅFd(%]kfTv@ #=u+ O$wG;i-|jj\Fpٶ7ѧ䆪lbxYyXUNiF`M+m@1K).Cv8RI1f ""\\Tў,}A3)KFԴo TQM XD}/R{nRt3>5Sf'*xr;˭#ϥaļPpZ!&+P <&9p{Ol^TH\mlI5|]rFϏJH)_#Qׯಳ⮎`f4?0 ѩӹ Wc z%$X}i0j%@yiu(v5==俌չQ\gНU>'?^2SaiP@4V, ܔ8( 珂V2aB,&R>Lԑ:L2/\fjH>G$2Jc̪`)ͦGǠH KdOs Vv1915@cŚI% ۊ'vx-3_OJ6ubZȸtAZ/i]E5`W şs2"_.:x T]b^'w3m |\DUf9©&w6L+ӭi||7^zxKg:*ò4^:CY jIeX캌p}~rwW $+jt˻bЗ0Q½1+{a!d;jHƺE軺Y1% UjapDXla>hKflCFR|̿m"+fZڽZJLF|W?띨76Uz}2\47OU-fMIB\n_|XCSuA /Xb~jS܂M/Ҁ +rO@4U` pXle^)b򇀷 u)*MN+a̸"FL~5Y;ZHFջ$G4c'~f! ~ )bSYsAL;x1* L% F<`8_ LhKB{7-y%uɈZ 8YWZKLqؙj'Y_;]UL<I8;. * U$~煮۔荣Wȍ4J,*i=V_}qFz5,>5E˻隑dWvɇA ^SctYJ؜ [LWQ5B&ߍ9ki,iy|M 9LoZ$hٻ `P q-iiۺ3]3R( +2DD _B*UxP~tEXǖF>3:Ov?e)ka,-N7BŤ5yQ 9:_GʃfPmxFwǩ&-a s##ߚdHg\LlRb29 huH_oձvQq7`lU[^$`tS3,8yj eKF\xk@`3N| $/0&Q=iI04 ֓LD ajKc¦K5@ "E\;k}uJG%Dm2 #ȡ4Y־d(Ro(xWhʪKޡ\EK1LSyD1zxhp^BZW}p('e&rG"l:x\lIWXcvaiXt;׮KUYa͌qRlRGi 9<y7\r 2vul7:" FF3CchzC6R|cWPΆAUXu8Z#﮷/㻐/"sܗxX`)/>1 S=qDG]|Oi4"1rMw EнjkJp&I>C`vY9ތiG qdK5]3'UH Me%vxֿT,/\IW f^wHVBG"rɡ En$KMϷ ELSi.&8uzV~##W /ii6B9 +'7ӏw~kygtv7wжOm,MAں%{LϽ cAӗx/}b=s"XiŪ9=ԍ`Sɇ1"jFU1[bW;Z~V1J 6;zK"J6QbüJUlKNJ{jf0F_E&4.KJ9CVC1>i /=}{gΨYKPdD{EX=Iz&%ĝ2s삈YV;+`$I֤0| :btɖ~.ous\#|8)-@sO۫zt;>t6WY7_ [b#?b'Z#]͒1ٝ*֡Z>҄ڕ o C6&rg{Z9Ut&;z[5p_VNA뚭rs:ɮ" bV`&T!wx 8gsIgK`o1Uڦ˸q\4!p%A9r?JvJ?JMŅ8Sh(O߭oџ^L%U@V HJD|-5nc2ze*ͨC? BOs#e g4[s_5xrr X/,=CVᔒXa#:ܟ._nv* & ~ Q&x,l6NXu;@䞙G?ΒƳI6Qjt%FU)׫Kp[A(ot<|H=~Dg@dapzCWz@R!p`ؚ!mxClwpk&kOD< q ] hTwQEԛ1hI+" U|Avl?ϥ[t҅aZHv3= ˦I fjO\pE(B@|zUF~}ɵm-p6c>-SM-#N<"v [cnwl:[ H*^LXsxkGWwm@T{v*"c(::+.ܑz|suȕU"?e&)6((~ <AJs?ԝ zl˵&dohf"{ wIP~\ sw,qt\7UXQfh.炬a&k)A`)]zD[gQDg46Suւ^19V~&,.SUz5 L=HA} @$#-,~Wq!=NRF.XLjiX&1L mpB.&3/($͟')Iv̘`>0 YZEpi/data/births.rda0000644000175100001440000001175214421664403013713 0ustar hornikusersBZh91AY&SY d*\+#__9p||ԥ).c q@ZDFM2iQڍMS4ɦg<ފzL)LMzdi#CiM6 6P bi TRꩢ(hifLF4iꦍ414@4h 4h$ޣꪚiLLF!a02hLA4Lba 2z 1 # #LLL&&C 4d0&CF L54*oJ~OS@4 4hh3PF4=Ch &#&F 24@ 44iCdѣA 4BLySh5$hh6z1UPz 44G6246h2hN8XbH-@vhKUUUUUUUUUUUUUUUUUUUUR $@aaaapkce9mmmmmmmmmmmmmmmmmmmmmmmmmmmqMă)+&6qy ^MR?Ŵ7}E aGί8Q%V}1zC=Cy<8iFm;Wm|wL=?љOJ͵ w/Va'uoۏeU)3#GWtsC}Q/Ͽ.mLslcE݀Y_$ח<fWEwyM7Ux|/އ[v]a,"q4wؔ:mAymr`[sWCgs!ft)6<usdyV n{x9> }d|K"ƹ\0`2K>.fJ98v n<UGW=#/z)w3w1,(i;oq.5#r^{uy8֒>ԣ:]E}]w73ʿ[9ox~x'5Kx?5=\eJw+=rYbBlD$,6J*ײg[UBC42$ՑlR"֫V2ЪƮتZK9\MKY:4ڷw6F0 X*z1Y[LXAC++T&206L2dK;%Y A5Ȟ\Ih%qr^g݆R9i`GSw8s?-nO';(`t.AH@C TPR)!b(i8 @Mu󄄐$I#H E3Rh (YEjUBDʪdaPR*= Z"p(ASPPIBʁ$jDUJ4*&-ö+5UJ!EapdF˙dŐSQ*`LR r˗.]ΎҎMz03׻}--,z------*zL,,,7s|{`5 cFnl0 0<]w>;Vp1tU`KH&f;xU;-ưv,s ]j$RDB",  _5=V_3n<gD|CίG* 썲}uJNAXUf74FllÄ/rN6v}N ܙM~+dtۼpIݰR{Otگ`// UիW:*jk{iZiӿ6lܖlٳmw '{vdF@21h,$B R"BT H$h)rށ<:Q$d$wD"B!!)J"<iPRĂ#J|,f$T$ " EDI a! 2E @!^W 6Yh`d$ J1˸1T S[I8ya|3f",((!9dӌmoee\zX6mG]ifkf}e*Đ)boE\,s]e\qVFq2tftm 02VkZVD @D@YMdL3bT;-Jʕ< 6Cf_[}3]gaw +2:B#!p6ᚺT^DhY%&4t5,.ѧ6;U&YeYeYeYe9A]4(#e(+:pŲ-\ ^C PuYsr3Sp|LJZjH:8p8z2+@MAӘ%f(u )A tӧM:tӧNٳf͛6nlٳf͍Q_0A|@Y֤`gY#rF=7 5J>vVPTs:GTC!IRPu/xlm`^B@A;ݐ86Pr6#]F@ 91\p'^\!9ڜL8&&d)&L2g8Mxvo;TZbnN*q6y]pnR?=e8Tflp0)Mv:e8)]Y 6Y]0€l@%XW'TH%G8P w),:VAܫ 뎲qk{=`?1q9"B'%%uIhTj*XM;D@"2#1WuEUfR,J(*-WK]PIE$X:>ϟh=Yޮ[jl2:&ہn2TSRMMygcq O5JDX6 z3T#b:'t읍ٱ\[ d:ͻERuo*{BgU5pRmb tWtqW|w^؀5 0 0 0 C[WH1=Q Tnùˡ=vP_>] H]tJlU][]Yr4tiiݴMkJ*TMJ*TR:tӧN:tӰRE0RؿG%)@HJzfD 2griD7n6 3rz>IKֶ KOkv5L2dI&L2dɉāJu.\6,rKAN{]=o%7XW?HrĺʬV<A  O>|ϟ>TJ*TRJ*TQqn1~˾W.6~8z\tWN?sd$DCgoG,Ín, E!ԉ$H"Ẻ$H~D.8qve̶XO8]zRmVɦ+~ V4Ơ]ȚW6D=?/~,vkuנ7_eLI6hXH"eeN!UDvg B@ܑN$ Epi/data/occup.rda0000644000175100001440000000045614421664404013531 0ustar hornikusers]J@'(4P|VHC\ Rѣ=H{lw&30\'861)\! q rL9:r|g7>^ qN~"Bp)&:/z h?]P8#~tN/j3:tz.7D•<~-pA-FpZؚr6eZC%i90 nARm(X!5ʧ˹; _uݯ.XMN"Epi/data/Y.dk.rda0000644000175100001440000011742414421664403013230 0ustar hornikusers7zXZi"6!XO])TW"nRʟ$!K{yN+,x߇e}k4Dk5I& Q;JBjz[t\' o`m#Wq[Z9+tcem;6ց<ߩ|NY6Z^Gj{?+uX/˝y1 fٞ6T&I62%$nUXeEΞ:,ƁMBRvnr60q=~Wӣ%Χ(kVʓEW5! # SѶO=6emkn@w XM+7ܱSu2(j C?o)Ҭ[]ڋ6ǫ[0.VR=bILN,CHSH N|l=>ڛ1MKx$5EaPOk?촎~(RCDXBHÍ OD"+nAQOX4k\㉌!4 teNзPă01PO$;&fnBB_=0z[Z20녛d=`ض FU#jI|‰vra'I "%i6 y3&9E}_K 04;L]9\{5 (Q%^.߀FbR@`Lf2EL  yǼEClX.(8'v&^?}3$RzbdE(WCioAVv Kz3K_zPCK]嶣5u*j0\6J6LIR]ԱDAHX;><Za}U{BY b|/r5<$ k8w%j?@\.k +jJh J…х􈾗uqMPfC@{l㎫A |5Nk(߾p$aS`@R(BEwUaI7:heݹI ^)d$v/Dzl' b&:R%Y=_YN`Wxk+nԀY%uDxRݩN)7:)+: U2rZb3?HkQZ#(<̯d╽|TY[4zB_@O:KNvwյ-vS3aj= 4/Q#C<v*Ŀ f m1Rf-u EyeA?v/xyK"h^ѴLTB >lPMjU! M6?b]rZ=s饚2YXI}rxlmxD kh{als:jC"?L1IK(?#d7{#sm1hsq=Vu(qd엎[mIm.qˢnhѼ`Wİd䞍=+z{W̺/ʬ]GNY@d("4oDd“uBzҝ0zv6kr~/w /2 uG=N9\> ،m u&$jM)Ŭ+ TbAQ )6ޔJf*LwR>uP+3ңT+2Q2vdǸF MeW;J9Zn}fVp{' ٵ9&n` =+xQ=_qUdvvS1SLѤĭZ:=_TɉwW |6k TdZQ0޻ YtZPZ ⅵE9!^_AS||$"D[ŋhg]Y7R9y#擥n_9ߑwc8E|%54Y,(4RM4¨/T@Gy6mDxI'In%ve;Ml®"9)od+f y,܋a\w_8_EhRZdXU֬_!ZM|E?p;foJף,E=pZo<]~uGŬ9t:A(f:cl>-T"D'͕I%MZ/dOc4lZ߭]NVHƒy*C|"ߐmW٪9-ow،Ә=ꐢam zxJ> c|(7;5iF>k*dXH e%6(o !l( P$_\{Z*vcYlÜ D{vƠBfjI;4Km8%nD`]iB[~1h S-4k,:~? sBf*HYL>6A5^:"EkS}Զ1u,xūLkXy2.];>Mq İ mzFv1%y eW;i)d@e~9D=֋Uq͑^_HG,;RvuDYN@* 3ilڕe| MHvkVo,Hl_Bmr6{H]o c%]YC\j|vEs{\F$)4:z1zb[s/HrKҋ^Bw03 ! ;KUGnX(̑g.hVinroJ.N世a695YP=W R,4`|ڪtNKzt<͕-q>-*zv ELIk Z UP}֩9>+@3S%|䅕PM"6ٛ3Nyn\ %Twd@܅릜z2`63>RV7t>;X8]4M2 K6J4Ym ĜdCXcn-VrA4:խze v0)$89H1/N9fYǍn8M>UDݟ=/BNn śn  0QVW;.]o{Ɏ~Qʬy;|kczs҃|Xg7*5-"0_`49 #KQX*(>*灆} KS';U`^!Ɉ䞌hwfN z+:y@_9q%oJ.ᒁ,'&!sqֹ頬Fp_-@m]1 :ݬJNUBclz>TK;:_Z~81"QoƨߴtyQDS Ix#$ 5Gc^,EEx.ɄmeO)mef=Z -]g^͜" 2`I 㗽-.Mec0/$?9~Yfg6> ,9LM}"PSq4 I& LO ǀ+bbUd q^@!-^ o£TZU_  As~V硫`Мɖ!rF0w6g |o%$o'|6%B͏/*e1uqˆ}km| ȵ>o[N;]J?PEMo()Ō m_=dcJnp#,c UJ|yX7CA$" YRn qݱ:刋zj/#\ =@㟺sFtSWH% ih܅ ': X^(P^YכEU?oή,OzeQnvgidD/dd;uLھlO ywsҞfdTr8jXCrrL0Z+a }/5 F0ۈQzگT 2CK -w$A1O^=v s(ߢ>ܱ1Qj3jo8ZABCHfiE K*nQvHz?W3EM_s6m64zdl4n Gɇq-mD1af^_c"a$z(8-K(.Ƞ#H;F)m$b=AFi!ک$n ݛinjVϻ._5 5O_d^;Ḋ2rz9`C#˱8oA{_κ+5fok8ǩ{ށ)&)Qj ~,)c5z~D;u唟;8q*lК;?`݇w;7}f{;bqLds 6GUOTSo9BϠ!(% n0cp qpnk%2xp%${GdHK <УDP?ʻ*F]-M1rg˜F;}skpIMlco-ӈ}'.o)/L7^Q]jk6[] dU P's "_s*>|y//ް`V4U$ԖgUR<;:B.xn,`Ӎ5r1~N'@,R:g;F\5PM3c'+[{[ Qh&/3ᵊW&T[ y-תwc]@A{OkxNVHUW?<۴݆u'm#1-#UD3IXP6!5GD ZCVI;cКȬ;|?$q2A>[pKj ħ3Nj9jRTfB5~(Qq=7.98h03or`lgѨ3l]6:e'Sa 79~PT–Z,LCUbVbqx x=xM!$uGꁳJZo@Ro_#78fuhp5aꗦ0&urQ^SީbK,R F}ЭMTGzb vR iYn{/ pg$!bȭ< )qOԣWCQ2_(S2Eh9]7S5~eSGRF1U xxԐy}&Kak8 %)>`%jQ/ohsIɃd3Pi~PRI}Pk.yAP/@^ 96D9O8w11mɕU{geRoe^|Zׅd _I *(}j&F 2A:?4}Q'Iw.[F8ǥP`G~4)I_#֟ WOqBҴ'|!4ԕ9,<FSǓQ,{[IbSzd'5JcFW_oUш N۵V527ouGѥ&IJ"MZj pV^P$ 9'4+Dߐ`]#4BUKO 9Dnr,u\e+BX5-3LsO$.eٍ\*Cl3AX~n q R㬓y -`!UXQ|7wUHyXq'Xw.fe,db^u*;H\aPJ 蟭<-߹CVo . pI*__"|vTC1v JYx]CƳ"4.\5 )dl[Ю+# \tqbXK殯Ic`W|*{O!Zq@RYʿ:RĿNF%5Nm F^ċQ -.aygEf~mUtX 8"QiVfKb }jDY6FÁ-G!W~1"B Î~dzEcu7:~DOVxޡm5$x܆=+EH=ɔO_F pa˻y״kh7?[ 䱕O J8CQ/ Ag[|xzKsGO~rk`ݙL+nۉэdKTXM!`r"+.\aěϺyt+ߵg!\>`bb6l]*O} )u4HcEX4%xs3 L‹w"w<笭*I=:'>sF.дHm@fc9#sqrz){ju2yVOP2gf%YKhUkdºz^;a|JK%~7Xʼns7pr_-_y5`QUhX%Gy4] RA3)mЯ[FcdIޏnm=R3?36.Zc(>yOĮ0 Ex%sf.[&mH*5,,(@}w JیvݽΟc"wO hS1L&9'iifTmǪ$)p0"0x>k7EZ{IyO <,_K0+CUݶr>V|4Q'tcSo,uE-)Xm.igSٵ^[a޻&ՃF[GE-¿QHV[ wm9ٶMLH׷]\MG{c48e܆'C: 0֌ysz7zV`&<3^ gAޢN:Q3 %|KهwNTdhplR#-)a)GiE%CPDl3#qssf!S|_y2&IL>#$Ӎ_sf`BHlA6yM*p5NZHY9,׼k+k3$ƾr=D =2@l~0qspU\²Ryj2OZJ&ȥ>Y3kG=_ѽ:K'wِNQ!vnTٻ/#ΜYMXMRȞXSDG%AAU?.fVVWn7x\ 3:sprp; w㥳j *bR,bo7S,A_q*AۡbKfws.U_# Vf%]݂&K1@꨾'^vt4!$e͞_{a4͔!SiL"ÿCZ#-7  qJKɺ W%;ircg@ NC|FFcTMFlk9o&F~FUrj_4./kԈ#(wVh6ZdzKׯRCO V8t6eX-M| 󘇡\Oĺio~MTʊ=׌љnYZge_Q 6XN#$;O f|?9҅0O@̕Fhz6n^\!76n&0ZKkM82)%7Do 5~bx$o?!Y5K`"[-!}llB\W4q<Fvzm19/s_TF f6loaEt DR#ʊܿ<܄] (vV)ak\bә3mp1еm>9`}FȊL+bҒ+iw|Y'/YKgzR槼 ~;aAܖb% -Iĸ⩾O:pẌ'1 KSM@qϕ(abwOgH,W'Wd hڤ1 _WzFB;ᜲWч1$ \u7wR}qCϔQuj@>a@V4#̧9*;M-w_ RJ4XË 2˅t*ufFUpW0H:lPwǼT'b Бi |eG|vmFD|".w`cc^ qTX -pV -UchS/$ k4̵=,CXd0L=W*9RB? - $A75? \s=8r~DوWxk[?r*xzew,# rGG&CxH~'N;J20iem~I#"9vˈ8ST]UKuDy2?@Hd-m@!9e|MAHDPY؞i;wZJUOИh;cR2)T63V|-0MB?7 {12PͰy?*X r:2 )Mk- Ғ vOR#sʇNI%B@K[uvCI(a+_WiM[WA'~1" H li;2w01_*CjLl**hqa 'S]ڢQS9G ;UV{lZa%t'̕WlT^At3:~cA0E{ R57 T hip|yMmʀwpk5gB_VVj/& 6JSAdz8!ltR+44;.kgjђeӸc?IE]yNO]Lud94l!ZlVť ]bT ;${cHޣHօ Gtyʥm5Yʹ4۬s[m+%Y: _;(oJFݤ3 @}UF r[BU}Vjv=$A 9A-˒P xiuyȩH)O^kבr SZE7`onX1$jp{h䅏ny --ل:_AǷ KV'S2juqĢk]G3,NŅC!FLag7eEkMuΓEM yC+LikdX%+y,6l#"nQ[:Qv)b<@r55O/%3>1iBaY*)EҪX8æcU9BF:M6&bO bhG tߊ%}7/|TuMmq2#psf_I ]p|T \!S<2捴Ρ$v64{㹠x|vdЊx bF7{䵚χ}gݓwO]Xӵ8漏44q:pz)0~OZ73gT;), ɩvC!}4|`V*\S*T[+9`4ʹP1Т.ҌdxGu5o 8']-}@Z;iQm$ 1=uϴoYJ9 hGA5D5'gٯ" ]ZL"Hi--n(w:S,{] :f`(k(=~KaʠN?_!50V"롆} yh~|Y).r%/'\>FR=$_&V6(Y̤+ӌ4[5SM]0E(H6/fsr70k_ШI0Qr""+AFL~gln!iztJi@xnn~_Q?sQ:ls:WzFm$78EO:,AșI.:?^+hg?n $;,>Ř7 ״GF$6}0dw3_a s\#9nF(4HQbh` 96$8T*9iAT+|K.XJG yaVY! 뜆^jo7*y2>-)}ƉUV9z[1&(RCTgOߒNf?\=8Z6BYaOc4ɞYoC)Fȩ%cYlz -[Z_6èRǔfxݑ $?~k=KKEtʹho)l)fO,.|ah2 NG@wI{֟*P> KIި%?z02'yj)+ln\ Vm].O{9vq+# u]Dbu: -MCBwPD >vн]$@_գOZpͫ"PQJ""g`..v2?M32(ǓZ2%x0cJ')4tGLGe{>Wu!voU^]ɧPW%7YrGEc!X;n\V$ΟқtӦ.fq8VW*8r!mŐz\SŤ,e|\Z6g<]=%mŗzijCO.~I!otĩՔ8).IQũV0\ ay DKD%"c2ɂϹ$dl OdXFyrDCn!wJp kƬ]ig]!< 0TjdnݳjH6WP3~%'`Wj (==inh lUqǺ",gČFRʨwd <▥[wW٤S* ?\0HuZ` pAP!ƵݫEښ+z`Z:qEu G'7Kau벸ƾ?_LAX>ת0M5~5ܪ^:f#r[_ބQeY l`{# nk#bI¨^.+)ӷuC qR!A_-dۈd QZ63AͶTW&:F}` wЗ4zVCEdzt07qMxUrEodlaWm4R؟5c^!rfA5M4>/Ӫ/pPDxӕ6LLFk#΀90%)U8w\ee,ՒUOr/NLݤxՑ:=PuP~Q~5%IAoAE9xWORŻD0q,"wm*t>tnTS`$ѽEhٿ|#j7b~ ՏAv B !iк efFO@4awҥ)1FZe[W8͵ppT7Ku<_멷-/pdΨw]MԅBl렉g ILҋbNKfȋ ;=ʹ;~q,#^u*! Px~h?!zꓨswQ@`i4sNnx~Bp4~X9Qi=CT,d23[Z@7vAčW,^.T_וj(z@"@i*?PRtp)XAY O9Mq2dԝ˥luI ؀GkpG'xn pF >O$t- )wQKY Jx1Rl=].'8Os5ّ?-(ro{(0xM/yY,`-6=xv6预"ؾ ǽdXcAU+^%ttxC郹@Av?~ANbɌ6Wttc-$NhiB+a u][ʿDľFnq|B{L%-X/2fRf *h^ʱ7 #`/_xR;Cb7/mE>pcˍ=qB09 Y;՘k;1(yWu"$T5ЙEEېlB3*|r˨L9ƒiܝKgWdpqtvEYf P eno^>Fو"Rxb-9,+T F V hרwTocc&oJЀTtiHHloT8c5<}|̉,љS7._~f=츠ZHK;'E`dؾvH'KYG"g Rq«NU"^Pz-b1rO~$Fh)rC%O^VkvH؀}ZD쐷S/ܷ_UY֯F4Lo4M>QʜM:V<YQ\}?83iԑ{g4~ߚ8芉^ I]ݳ:3+ +LaO`Hot-eRz1{1 ^˾^;0XUVQW('!b]vuVq TF rsJ9%~ވ)LZj6gi# nFG< w<+ q~(M^m}rwa`8_7( QQxd=ҮѧVzvjPC`ԤjfiUTIm{/EFZ3,w%!7J( oMSbkΖ+Hrp1!DPv1D-2PرWB&Z{XJNdW)pDnI1l)"PNgݙ?Kո@aXO ]^pא~*^|=  ˰3efGrθqX2EkW#Th&J'\೪R4[>0u@NߞiQ0\!r *PqMώD>{3OO 7Guȁ>vQ*1[P;?W= *!r9,hh؋XcQAݠ~zo x6jg vHpvwmAZЉa !,1IYU %jbJ/[D`W{\ 樚 *B`Vq'|28Xʜ 06PîzRbhEٙeTybUPtJY{a!=&9qde0W'.JTI}4&kMNqtSTbD$QLe{Y>hK.rP?ԫGvv`"tJGr+2`2ME 7_`dU¾ S} 'aMǴo'41t\DZ ˯Qj~2&P G 5?f밝٩#m;g| Exdۥbzf=2K k-ǚ戔=˧|dD@[ 0liNGm=G$|:5Tչfi;C^왈>g}N!O?^1Գ^ VzǛ"hM|䂇? #}~OW.=Vt?FGw;9 v$2B:*BQ4h-9=(MyD&3ʌA&l@.Ǘ%gQU #{I@k&Nj\Y?/'=xI~xNޢ?ca-,f+Oe֓"貅\NgC̮p4 iD^/GN!!KܑHFNGB:8(3+F-_fb9XD.%l=XUOٷWFFq ە}8CWvf ~FbNRJYZ hDsXEn! {'4=&=Ô=wҶIq4!!ҵ^ ptա<hX iv%0'D_0?sb7.ox&ȴ&`ZuJS~Cfl믃*1h mRGU{5jÛsj]n64Qz`6+1?^J;isqbu? w&<Xl"D \!=DB-vP) {7͡ۺ6Le+sb쁯_8'<~ =u6i*.)4C5Tv,UUKp{7·UW /D?k8s.v71;9bu< xpRK5 ty ebͳzq<@h%ǚtAr=Jpg[, I7ܧi QX[a@֋jK!HPϒ,/7*SG2~4bI~OnRFX8k 3/62*qonZ4BPudߦI2=l8mש}=h k,=?:t\? :=M} R~uؑJ!KN{I ݌X9ns6N֕9_B3z(ڤhBd7T@uBv$mTi<HOJFXtKm"ʕ4DP!7 %^1*"WPz|,7{3gLArMaTa-Wt:k_(y)/z(Qb+Y_dk >j(tTQG}ڰA&=n+~0GcPˑԳqh9(G]-g\y",3Z&$m@'x6lؒI~z[)Н j~!Ӟ-2F[:~b!_tvf)2XuT2R\ W#ɿBi*ä(9F۫cTl$ 8f6EXxmeJ=$fM<<}h%R˂'bflҲo[aĹ#\5a)9^Cc8_}wIQ+ļF Џ p䷙[p1ͲP1DFa(`%b۹^WJfݣq 2I97ĜnE[3Cf%RR 5\r88ckn6Z=Ӕ@Yy,•pd-|Z4 -"r[(YlF %ɯlr?wG7-2r!SbwӫaJP\R[-S"[{-%kї(8d<yǎU?XZ&#Y&l򀁉Й.aC/1EP(WdP}6PX z_rb j),dܗR|!nWc&A$x%Z i,K^kx'@y֓5hٌ՚jCjXPQֶZ_AݕAKB7CWЙIM̪v{>Vwp{ ЂH!j_K/G}μ?, `<_zRZ º-!`Cw#L\,AUalؕ{0xΥ\.R?mYAY؟? ҖKeVj>[;=(K΋.\`ػ VD7?J֑9 Y#&Dp薀&lU+@݂>Rdv_`tx=*f#`:v@jR쪡"i^q g<1hYGdR+Ɠʻw9'-^o3{TsLYۦ0+xj *09 rod[Rk f)r:eU8җFV΄-~*\5k[: QR^vdH}BxUCۛdc~H5AB*=v_hOf|Gb5}+yq70xn`+r&esyY'25 y[BqWo}\J/y@rҋUmHS#ECS.\!^.E dl4lKIt| #qry#!CĻ?QQԪo0;XmVoGg53Fi75|ܕ-D_n=^ijElvzW?'\aʤѕQi34<C053: }s};80ǯe oӂS0a m1r~xxKq%Y*Krab@to;)>dI:{^"NTP!{=FQ1_2ʅU_<4Ӧɋ !y*uZHIiH(v1f gԭ $Eui4)s@6𰟒`(xgM 8 VSO`D*- (ğ*41UćQZxX00EDqȤ՜ sM9nQ8n0IЏ~^jHcP2+ "j$q=cR>ՠZ"|q;A T<C˪zT_ ҁ0?-4#9h;#PTbzwe++$i}waqHBK,?!ghUvV<$pQLQF8z]c# J# ujješ}r"UaT4~ƤC[|y/Hć?Ͱ}XKE0Tc:cIHcơW)[>L',3+4rI@0qdv2uI@~hKgbyyI;2½3YR oõu34Xq65!V\qH@uX+L2OͦAƏBepJ=}vdhv_1Qx`ͥ[M~^y`(jɹ䇐QKyD؝puê͓~<dXeb"BțG$taIE_ G+Lt7Sh B)̑4 3OsD4gc3 jA5wHn@S.l45x+Ц@l^T*:O!yWFtnR8Musʔˊ#}!k*X{c >Aw_;Q{/BO}a{e ~Qz91j%T/^ 8 TIneD4iߘ+`J4}/,U RF:x}2X诤gКH,ܪ"Kt& ?jՆSr3 dnhB'8ýokzzGp1$a'b:2Sj>b x)njhΆռЏ4h9PҎiF՟Û_q9[6 ,޲ JޢfLzl K] 򱑶&Rn3kxoL 4]te܌0rX!%!c;|ra ɝDOO)"6ġ>u+u}DF&Bϥ.k @_4{y+LO7s)K[*q XHr f&s^1u;~&*dm}Eb2h _X(M+e ΐ4ZFč\!3\J{7AgsJ聞P|;֘QʱvHkǜh)E,ILᐨE K!EK Kc%i@Axz2YuN:;AN''`:F籆 4F,g0/pDwd)7o@;>WBxF;b0R qJN(cE l^NH8_ʼn6)4\ÆU'l`8,˕BBf;ÁE<ɾ⾚8Y|pyxK=Mվ[,ZͧhX㍁fjmh>i#B`%3h7io}/^vePJh \~(/!~r>f,jqn-R=nBꞢ=Q/Tn XA7ӯt.7e;Hg7BC0Jj8Q@330DZ#,Qi]4~BGsB L/k·JQ|pR,z5 J[4=]la-p2y 3s&^ 2e庢4^_vqAmRޱtb#+vsS8q(<[$.=eY V><@rBÅ5N&zF=.8q 4@Io5 ݜhhterjnE֭}!}gW~.NvQvP\TBF% -1*L(PU(g(^sxx*YڗcՋquYޛHv ]q2{:QrTf6uk2U{ӿ/І}et#f-,ed*CL{<|r>qH6w79.,` D̎*9BZ_C6Ήlݲxn_:*=)!ȩWzF㕍K6flL6Pb=J4Ζeg~K:A<t1W|Ҍ 7\_Q-m2,x\(n=[q?5`a:a˕Y)L;Ali6_/-T^5P ȥK fE彛n%#TZVzګtm>^@~{G&hn-RTzoےVyW(1Pv.yx0 7E -c én*իʕai!851^̏f>7`> ,űoF;A;ә ӰEn"R2zg$҃^``5;M(՛ЁZ( =ǾDа.9u\?ߔe%~JwAɓb$4UIQJG[r[S-p\]ޞ/E,jAvZMxbj\Ik"]@oLu-OpZrm %+V-wH~62p1J!u@6|骋tXس}S%7xﻄ9¥hp+Qݘqd ̕@u5sYQ p"DWk-Tg_¹3[ eV4^cƐ|&K_Z = 7 m_W Q.j[v>#SXm8j]i`tQWo"\D*=#p>sԦ=S`<DڊnJd.reiYYY.b8<2b4cɏe+u ev]s}PZ6jƪO'i+Lۉ䔅;0ni=ʌ( Qc%cw>.yQ9O++P sC9=;RA)DGFA볓5U*? :DbDnGuYH"2EWQY򀄚a i?Gw7G9MmYa#u~E:ctnFaD6VTYt.Awnev(*'hX\%&4L\ /6})PDN>cY#(G 4N},rɚj Y2ԄnCvK25X!w_^+9xl:ZtFAbh, 3h%UkU%Dz>d Я{icҐ8֪VP/,yXδIupAT0?sWZr 3Q-zQv\Y`_\i@9-ng`jOp.}6iO$0Edjԁ Pe )"B p =҅o`i9@gJ*6RK⠮̞PByPF(4 jȮr}EGM) jZlLKKg 6 ؔ5M=%<\'X!u}(~Zn ya(ΘFQ@u|:Hb+C;ձ G 'N*΄½Ćt[>)Rfv .j5/-?*w+ߡ}[6\{ԳKVv6sLn[퀵hbjb$̦p|٧=74C}$RYr1.`>}/ZH:WN xV̨D&ia$)251TVjEGsSs߫Iѣr.G]84.SY `l;%G@M$9$䕗_ÉW"dH_}8]CЗmSCWs_Ìg]` :ٯ]J`GŧSUCSrfP@_b8rׄs't O1۝W b0Xz1@}w3=Z&Xu@}-qPcX̧/;FPl=k8To8J'qNDi`M7tMh673o?S#C؍ "@ ajU/̉Tܸ 87Z:9[W =ɀo83{k#^l[5A.1&޹ĸ)>jFZ̙qG[71t]J p0nxV(_2DR|hOm@f(>ߵ;/v}BS*|P 6!ثP' fc+""R1~pv:o>䟶"y5nR9KͧR)Ik `_i*rܮ^ha-LQ,ji!~WCkfv"7c#P|`u("l c&=2}bD"uTqboA;]^S(}[Sg5Xk8Z⛍~{;3\SނT<ʟ~z١"Wb9}f YR6e_OoP@ 8p|OFvyK<5䜐hߠXFyIx9oіĮj* !t g351R7"[5t2y5vKP n`pl5,Yw0$``P-KsL am5v LۻTTz ouwƎ, M$6(&Bh _?a]fx~wCعZ .d`^7M2=67ߢ =qdkuFMAB[t"fl%H| \gmD&? J "}qoLpgJLg+v?!lLd!NݣԗUe;{̹i$o/Կ ^ZS2i,Q0/9uTZ죶Sr/Z5X-ȱ S}$j x3nHcq^&IJzaFӇE'i XbajcάV&vcavJz47׆_r4KЀDS+ζfw,zDn ~śt3#Rc^rng+ 6X#-^$Rs\f!.uë7?`eUF'| `h.RDz8nNsͧ>vV D0΍J +ƭHL4eeyaWif $= cW?g-?U'P1ڞI_S )i&Иe-'7uvnAا<jƒZRg2OGP0}f~fZrFj·rFqcb{iIY9Vy v9e nP0!<]kqKKBk`]f ~v<@Tc'xE2+e`YO9gC9W%a1qEv$e[QD'oU>\Rj ӂdJ!L#+*ÅO)3 , |T.C h?1V0ءd0Mxpyϲ%ig7l$T7j2Tos_^:.k9#kjҳvuY8Biئtgs>#'q$6<)]歵|a1fPA/'tkҲ!IͼbI8`c#e|I*;{Y1(fHZ_$OgU_<ހYABy*+q:kbW1ǎوԟ\`#heվo=Mߩu6Iޘ㞝 ô^8HPmMaXP kIvF 2lj)o ܂NH] tږ[fFПIX9Fecɉ$YXe!yWl Q|X)p-qiZ ?%>FIȒpN8/Y Ꙑv #uټZS+e/Ϥlz3S!"&áMv1-%3tV^xIZ oa4n}M-ӬL&>a iFB. #sMY{b|H[qRޕͤ;h-j[hP! "HxE|!zG&jVPTO {*&\YA8-1H%@NZǠf1g7qЛ݃>$Ͽf'^uZʐoU^IA>h7Լ;c.Ĥ%مygݿ,w|eް67|$/0,qY( 2`VQ ^ PD*>$"KZި>v4vppmH5R|T(k.-`lFbs^5jun!80cK}XҊAojw[4nymCGW ]40B#)}.ZppMŞazEW'%id+Bд}ԛYF9%%}W khJWI7d ĭl9I0+-u_axjH\pK>ʒdyv-zj.OpGlRQ|8(6qe;_ "NE8UP69<[A TDi&9ɨtg>>iƹy 瘟"1s q5ERW}\Lvf< C$ٱti{xШ%!ڵofDApU\ !"-nC yP;D T\B573'@0N#Y'iX|T\S^< (ΟG^w#ue>4zׇáhcw㌨Eo j-O W%{@Ŭ{eN%O2-"cqpOnI 寥3<"SP|IZ*]xS#a"(h?/[E2zXA:lxǫUΔMpg! i.Ĺ_݇y0P`2C@g%L0#=]_Eץ/Adh0GP+M#D~Wrv81tYomkprڌ ~?I4kw,_ (t Ȁ mkK""hR _>RK ^Ӝkuhoc`cKGBl{@L\_c⭀7!]X3W)r!R%OqxO#2/#~" lsf!q / CB,B>\kQE |?'vB {[{Qa0(,3*he$/֩NХM[ ̧.v{rSye.X;.#^P)q%ӏ&* ыjY?&&@ ,/ch! <_[5 {agm={LNRr%bY1F yArl.Z%q!M0 a=u6WgD" JG:i=GF|t`K Ad}\ԄkIK|]4ZXJZylҍGߊiH2Qd0v^@ljڙO"1Wg>RI${>oY?kBƔHO+BhhYcqPZOeq/aeʺK/ҥJ ԕX@";Jb 5Z~i9T?6?;Smr lQ,uJs?ػ3`uM jTgNgIcӭX,>nL K f0j[rf_B:yoÇ MY:2ϯ{RvǕ] NSrHp$ߣ 2 h݅\>(|ϓ=gЈPE bwFQTMA'Zv5[l 2,VJŹe ! c?ytW' ʗSf);\Bj(W]NyVn> ݢ".YmɭSb]7B{rtodtȴE_2pפxÔ| ɨY RصE+ \}y7T#E>kRom VBᔛp"=҆H],l˄5\(9:I,X0dīQ‚wgȣs,ۣ۟eh-SB^<wV(g颲yf%IvjU 㹬ۀ-ADmH2* `N"ޑͲ,oFRL[-iL~hEZ-iDZiff]%^r?mQT+%)HM@ W3ʿxgpL? aZOzP(تAP$K~A1 9w{תsT 6TcwolED߈**aBDEm餍o]Qywl2}oZhPZqt};*WiEW5wosՖziDPS/Gqi͏\ D7^('rЂhgc>TW9i"(9+ź*:GO'HRJjN3C.^:oE8 Dzp{w (fDիsw$pC+ȆNk_A0LhD3j" Qߤ_TT}e511U)fk)qD+4Sa]׻}kC};l!Pa [9&ASe, _&N {2GToF_a5]e[4lx7,ss8V]i|ɤIYTG fM- .KBecdПK=O2g]Va9\h ~ V^_vO/TQwfjc`pW8Y1 $1<B l"ħ&$VF#I;R¿sKQqO @&:'aT4z}5+tvoxYU=O5MJWa#+xmBG2۾o]gh{`rtuX8nK/O k!X%4p[:oi9$ +@Yqe)gSI>y}kT@ٻIlHvs85#k,EbhM&Ʊ˸-H sP7ic'j&73mJmM3n7\V)$\}ݬ͗Y5}@VHoqB|NSr R|Z 션 Vg\ C LY;O,ggK73jšs_MO!$,;-0{ǺIר1Y|Sj-h*| }3RɽmhA4|L1F]f%۵tKUi06d_P@C5f̾T7??0R:~eS)m+zQq]B Ǿ={`qsv .] /h=19G_GT"dШDragub:Q&]T FCZԗF)Y v]hVlӻP^o8>-tt1G?+Uǰ Nlc1PZU\Lapݜ0!kҸyLvcEXׁ V$../#ނze E&O)C=%H{6`_?$2~H$^=֕ sM%>$)", w)$.lџSDHOq:aD\Ǡ~WBi 9. O:ȷ6RJ同lcG3/j *F LR=9=v:TڴFv?%Qh_#fKj~CAT" …Ū1#~sL2 YAಙ,qR{CҐIB|2X )ڷJTMrfI*H+|Pt+FLgZ gt2ړ:XN?C ni- 7ݒMG{r;+F*R11 Ρhtďp?&,ء13;1"DѱU'}S\G`-W}X ~b1C:խ0:+SDmO ]m CP803;5?,wApfHQxҼ|,ǚ^>-qC""bٶQ{9Wנ9ѠDC$QI N\2ެW sTM-9wPtE1姩̎IqUX  K@,5&qĬ}Db,Flnmgl Ñ |NDCud_(׷kozX\8bdj=j=;٥ȅ.aDyR,_hE䙗$)̳aLߤEjX m^-Ixg?)-+[X3"ڙ1+ >0 YZEpi/data/lungDK.rda0000644000175100001440000000536414421664403013606 0ustar hornikusers{tMgwA"rriVGMŌٗQ}" B*!.KU(jrLuiu,ZDQQKMŘ̜~ߞt˞uV<~Ϸ/>-+=W΍$)\+u &uڹbѼwXF$~lWKIU҉4ӰNf5Ks${װJsnԓZtEk-E-zʢ-z?X,:0XCyCyCyCyCyCy@^|^z!,z'XY4ŢEZ?ZUYrwKߗk-;x~_%wgwwݲ%|=vM }ntCgL~l*1^{ ?~j?9)F}+;g紂)ׇsuQ >ƨ[~jסߋwqgmGOF}*z y9kv_ ?<+诣oG~$G ?E? D^B;x~h8z{|e(ϰG~`lw#/ 6>9i GW::qP[|,<|zjs<=gz~Oi^=+2I3`Vp{ }&3yq -<\]_^Sr2w1r*p8l/4NG?7KRLq u5}}%\s5tAzW#o XA`~9m.ڈ9#z]xg-sz u ƼYXo3y^,uw*t5g}&rOn7-55_k^yRQUԑkϋg]-EX_+0gY#SȯD5ep+pr+*HICUPEuE5S6' y,/}>3yL9OWϿLOOϿFO:@h?n/49s@`[ MnX/4v̗;G̓x-I7_lh璨S/.hIZoQ].Δ'~UE'lzXU{ .CA^Vԟyn[;ja~"Q;#53|σuoƋ~ {g.XϷ/q:G@&݁UA\aqO\6p2;d8Oby7{~(*/= 9ǫ cR*̓a ! o4{89$wŝ钳B䍺 FmJM,^<QwNn èwl.M0  3~wG>tINOː%B;<]_^?բp^2?q)szӛ"GϘ@gyz{7\+?|o3ZbKwF#pKύ# vX_DIXW/rD-/Qh站BRX_`XZ<~M]>c=: GxCV@|8^ӍĎl\o _z1ڞ{|W& _g wH<-F{W{\h{ G ˸ #B}^aθ[! e^g?nU~XǗoW.ˑ<)+#aIbWOjMX׷ho}O_|1o+oyevHo4qkL5y p|'_{88} ƩDŽ8Y;I듫"['j_x#U!]\&My /bgsqh/EO qR?CeG3KTERWI4,ihTC0 YP̂jaNYpiiTrPIB%JNJ:\T"L 21dbĐ!C&L  1b(PC!B  1bPC%J *1TbPC#F 14bhЈC#Nb8$Nb8$NbЉC'N :1tbЉ".b".b"nb&nb&nbMF#-.\TrQ㢓:]\di9`i9`iL&3Mf4i2dL0Ma4i )LS0Ma4i*TLS2Me4i4iLӘ1Mc4i49diN9diN9d4i:tLә3Mg4i.bi.bi.finfinf%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%/|:]RPn~H2+,-:_ .HEpi/data/mortDK.rda0000644000175100001440000014533014421664404013621 0ustar hornikusers7zXZi"6!Xʚ])TW"nRʟ$!K{yN+,"2q!qFp1o'vOVЫFĻtݪ:'/H4cigN NZ˨7vT~)s<R{<,HPx)Q~܉mFUSpS!H}DWʯ≷իgv8%ns>|j F^+(,@trН hx $>,QvuAÆІD/ޯ̘E*7%e9/S{!B+O1yP' g43?.J>~%pe\]S+2UtS{mHYHS;~~BuU PݳU_ZpAb ?xyN'[v|:_C$>Y0ܠ_)5Bk? ϵt-A"Ǭ5*:Xו s״(ʡʫx`|ܰI`fe)nN8T*!!o8> kc(d9mOӃjeYjk M䳮rLKJ}~zz 7 G> td=/iSW(W7N_`KSdҜL]*B<}7s1A:J\\GFde #@j #*z].J>bwlƉIɥ9#qancq% ̟ hK@j#!~#b-/hk" J6O/5[WQw x}#>UiuJ=g/SWu`n:j%ZGn i.}&~8io9xVhO_AHpm bo܈tRnVL\/5ϟteնQ_|>̱U]BƋvj*2)0"|W RҊޠkrp\V*o+i=  Iʯ~AXO&kD«^ jNS4jz #o$!M8 kJydqH _xE 6y#s+i]Yq7&䚻Y@Bb?k m뒽3A PF軕GTRYbc"8ì݊YҦn˦=nD#ey9HvwmP#@pT+z֍9HHǐWbI;}P; Zi.L%4q,z"_,coiuώP}g|~gȊ%U݇kWM=Hg,R {s߅f.LL6GuJM$ɺP7n== K3:W?co,8ӬQ}=RŒsxe(_ꒂn#oF9y=ث7)I4n=? 32niG1Èo%  X /C8$,aY1eDt_ŵ8ڦ$$P ϡyY%JS*PU|s8Zl8apNhcʅi1sSl:^k^N!j&yTkLѢςNê^8}vz9EA2VZZ޸(5Z}:k"fu"fPn<+to# Ltʊ$:>ܸ4K}œǖ"Z;J;sO'*ʆwuNlB#G$ 5d؜>Q`Qp'̺MN|is㽅t{DFl׎˅axTRDTl(jLr8P{M&7h+R:{0`)c<:g)y  #eqR\as@\à'Z|3VVpo*'HTc=A1~ibC)yIv._/Vq¡u[#rˈu$R6\xUK}5X >Nx^ Qg;=%GxY~Y~&|/)H$Y&z[6`s^Țr,k a}n&*թ(/p7^8U%XcrXŧ4$ g'_ѩ8S( 8|-lI 0`c;cNmTUIE+_WUMּռP72;w$:*;_,}aM4uq6ZB[[)~yt`@ds܊ +&w9|'?ქ!Ju٧w>jW˪OaNg<&vfcZN>Q#BJw~Po|F;j)61NGكjA.̮v>b Oz/d*ŋ~bk)t ixQAᠴR[KMf@<y] A@;z}RQ W. ,dd,No lo"v9k)NF\lt>ΒSGjuOp/^T *]NAxIwR[>q(#9+x,&{nbOPex]e:[9V׼$sr7&0=-7Q:SxE:[KJm ڲ}T& p#xV%K䠲պMb/[/Rˡbw6h6(ayNԭRJ*4*ӬVldp"9 E*ЂROOioDPf%Y_u@xxσ]Iak֬W&M }G|v,AOoRGIW~)hD or16@yԀrF&Cւ0H a$݊  ƈ,Lx6-g%*_~|a lGqzcie']pP2g_.|Ek֐OYy 8Yk4rc7y8M]MھVӂV-ەs'huuӠmPL4 F*@+på,࠽Jd{*p2ݧU"O\_ 7l/<+dV!1.Y G͙..(bbuB۲1op;h)³@}5T&H"@ fŹ&Sc IgEPuH健)ݟުQQ#N <9?8x׺~͑ᝂqG$ei*dUWy(YVg"`>l#|a'xCd,}Gv.*Z$AWé/iz5J ~5֭13Io9\2P 2w?$цJswZ*Q PlbMpo8r0lrK = P862?*nutlCN`&~ߢl6z0J'hD$w؛ ^ )FA,"̛e4͉ƥ,@ 49iYVteن5YD YkePO(yآb+STQUKC}Өc PL m5`}0(&n 6H ho8Di0 $L- $f Aok~'U6}:hͫ`{ Ř}۟T5`xwU0gr,;e$ |tN~bB̯gS҆}LĔJ/&)*d;xPGF|0̚yLhRH:b[ta΅Jr V/qV]߱Yc&".+7b#:gғ'@KƠ (YT,닀3ƪ}((+a_ի1]R}8Mhl (džNc>V=>׻I i6WX%5+8p`cN 7pddeh\rdq;0{ߞWtп{kj-'Q vWOTW~1C>{>W(λi/%Q~ zȠj[@ް`lP"$Z<"ӵ.h˙@dG{F52Y9)JDzߣjG¥HsPށ=^2r!".j 6cpăрL@3 w%K"V!ʡYZ4 OE,m-fij$;-Zm`;8LA-0yt-Qm\-9J5F,}8cs&uRyA@qA7sϹn+[mnjv[I&yA]g7SXyyk="2)(ɿ-M9,Ra=t}ǽx/eš>-84>ԯ]ǀJ!&A[\~7I4j[%!>Լ;I]HD{ C2۵+>q$ n}6 z&& 5ESs6UV(G7 e^_|[b@!}y LxOGj۱JNA潴}-q8NMp7:cX4iv\aT TddjX! ӫ fIQt)GrjtP#ûL/u0)X{N/I<dp+.I/W]<+|5V ʍyXLύ oЗ6ZQr!Z6{ƮiL >!NAGՓMi. C+:Jdm;UDc)YRH&glN/F#SPÚ ' w\A6VlM$*ڮJPNF"]HG\R&iMµ%hFCP fdVZtBv1QLw:R.jUɆ~Y ]2HVkZ{jSW{9PPrQ J,Nl 5і,S5k~*{;Gx]>A &KW&L;p6updgpBgP |t8S6 $`I܇Vʠc(o*DF%GOWnt?356s7]qR&yDl>SB[ ڏy;;&H`}x^QkgvR`0C+~0%;@#K}ΊWgh.a#8E>gjC;BBQ7s0',eR ŤW]#8 3%~*:dd$2hn(%Cڙs*t[=mcYbL3v*I xbjT6{QG`9/+YY!؃3"NwЪΦ:àZ Z- V2ޤhs!E\ͼ^&[>L8+!0lgv1rGi~6#F RkVTJ,tLf~?MBy&CAUϢOVm|^FZ; U#ރV3Zw4g暶[I QPcRn y^S%U*8 \S-VOA~u#a`6 ҩ_e"50i1QQ^"+S]euH8_;לw'@ =8t-"c-;saՓ¥$o*t8240Oӏz-+Re-w' GȊǴ&AK6`SIyjG$%(V H)e!Z/bScSM2ssOV;B @V==c Nݴ (O^om;_qUKdǧq{d+H'ʝ:Q1 :!ecH+6UJKaA1Gk8,px" 2p pr0,~.4j=%w![ţ08k|/5L(p5 %cAgFV^RFtwxfsY5;ˁ;39ˠ#߄hY}Jm=u?,o3`-Y] (r32]hP,/d+7JokL+n=~1x`\ ĮePoBzdυ-]ݲ*<KKϊejqzOkok.; Jn9rzDѡ1Vh!ưC_G!jvu#B9*. 7!Sㆅ6pn-&ti۰Č CIC7t{|#otiU| &5MjLӺLCHP ôX9xCf"aiAFBL7pE#L%Iʓwi fo?jMmzX]pWCeΐ6|{E eri3;r0NOW9ثL`{KG9LpDMS>u̝Tʴka6kH(pJVjrgqS0IS4 ɪ^,5D0XAs\Jg3#Y' T8'Wu[C)sp6BMv{j wQ&bjI*} $-[UL{5KF'¬nՁ*$ɅL2l9g)?C3s{uS-뿙r+Lw)牸ꊇCq &=2j'k2i (zCƷP ]mxO>1gLV6#K&h$XQ?i!x{'`Dީ.vc<9@έ-d["rN~* A(rL/_Rl v!RHo*0’Owp(CωR™7A,@x3&)xAH@VI@Tw޷( -UCj!ǪFdDp{w>྘| m]Γ6wTiFnZ7݌&Ӌli1UwwCT+UMYU52XPwᕱ%,[Se,O%\FG:$mQ tL3ĎC?[* M$[fŋ2}TnXֈʒZǸdj/6NeUYQl`xd0JVhm%jYr6#B4 ̰rˋI?Y;ִe.) t\rZ+^hHu" ˠj/|?Y[yP\3[3:>(Ay-jPjd7H"ƁP !'XN}Z;.aC+eDXo5QɃ RWS=8f%d k ,Ŝ Q̈́#z*Qt.5ky잯ˆr9igf::~Ə0.7rsݧV"- ;;%BqX_Zvo1^ aƼM9-Z'5w[JMEc"%awJ#ӛ!K+MxlΞ9ݴ=R3S.V4+SR L:*.WY1 \R l}ůn&L-bbߤj( #a`#|4ӪG8J b۷;>XS}pUTKx muuI<ՠA! 9ɴZ 2\z2˥.c6ךMeB򍨅p@MTS;3J;cGpA79ȥ-kU3yWG+T_r0EJ%[/? ,eօ0Y-V Aq? 8ggMFgl^G.,K#ejAFXaz \1Նb%t߫nL0U[mcզ>3\v(?XQm-#Ebymf8ibLVaR$Ъ!~oN6CU^݊bMfFvxDGq\9\DP+ 9"VF!Ȟ7p60wIGSLNhSd $F@nzW_3Z/эZ2y6Zl*wo)sqz q?6Pr{>"A%MYZi%R7h¼LFw`"};p杺7(m\^Qg5-NՆ8[KQtQJ1xCL֢/َ@ w=Doe%joÿjoj˕Fm0]W-4#Ieq\:QݐL)ȇ2aE9 Ph5Y1+6cR$g԰?r꟨OpW4xw;wV:-!FTS I_;fH_=ɞFKQicC̀G&x{dsJ_6οIH8T ڌ2ճJɎq_}FYYw^STu]7uʏ{?f֟(\ÄO\0Ϛc|;>qghL<ߴMmq)k7y+=^&e8xLID$+ Z!DX .ڂ^ -,8k[&eH韘R$ERsy䗢OrfehZ<nY zFu< 3f@\fuzg| uU{3Tʬ+uf79q_UE6T~7J ` T| \+SEX[k lƨ@ցzpcⶏ%@%ekx@[0B7@= uN=yo').}P?vcK}J$pG0YWݣ:"U\A.цJuCmI#o綼("='o{k<?{?6!gRx>yi?9ZL^ ΆһN۔ˁRTZ6ḱ:Z% U;Q.7ExgGX8vս>S i|ry|& ː~P\cR츔2mHA/ G]ƥ{ pP!AdЅIIicq_$U:v.j̹T bݎ(tAz705 %Jz9)֢A$&C@&b -5zdۚ5KV/ &"꠨P>έu <,0!'3fr/ )%vjy o.TӗÊqy'G= W`5CqG&5$$=XA(nx٣싰fie^Vj\T*@n}0QkImQt/cLuپOsSV]?yiTtΰ3C9/LQ9tHtfF"TӜJ9NO*ȼ qs&[sp ̽pueA kwPy+e)Ldi)D'>p|Q[Ŵؐk}sҮK2 Wߟ ERcT3g0@sZŷZp.'e!Őϳy&D!,'8Y1D!x z/=c5zLrk/ ˩KsaG]_~*Վ,1y OjU]'I}<66NA~+-t_CZ-Em_o]}D9VX'\&yXźSjpWxQ`0 gz~w?/^"HĨ3DP6U\@?a7ʩUìMM'n:Y$ !aO3 N'A sYZЙXX.Úd㽽6_b*Ӄ^ؑv[)ny 7>sr+s`]x*3(zO5ݮRc/r] uɟxq/-]k+i:Z<1*?o@p-A?A)feOxA&8^ 6~Ţb47x2snR\]Zg>5a)EJ%_] Ba-g%j 9a?MW ġj&$4>@Q&~M73RN92`7k;v?pJ"ZLN^.rZÿ=nF/cȒdYAZ%ݐ 'h 'w\OZIq?&$X`CO]-ܑ/ڋA4E#.| m K'؄kv1F!Nq*E9X摱|ĨYk2{/?p\!!mՔ~&K4$#-]ŅVڈwNyU͆eGt?JIrY1`0@#8Qեװ!b#gzHi VY9էǬC2 ^/Vi^wB3 -$ΓUdkmBBD_卖 eS; cu6;~ܢ&:8:rfLu0QJpQwӯ8_C "ܱ pw_:`@4@$|D** 1Uiף?zh x'YPыW@NYUR 9BLt=ˊ3 ])%ŚQʘ+jbZ Khyg3ر0jTIɢ%jgUeFc|H8%\HUֈ]w#,hb&TO9cٿ٩Mbql kCv Y_.D2bT_)>0?y.ƷjAmfpJ~0x O ݬl1CjӚVYRp~&=u 6f 낚;B$Pe&6C6," [g. @,x"h(MʔrJHw壿9.zwƪ*(wS>U?H@׸h<1" zMs1BЄ4S'5x2uk:sɔ)]b75M^kT0̠C6*-gS]q?Ljlm%{=t 8[ cf$7P#cuHseFuEV PDش(nIb`%I;u[@$bCl"! -AÎDOC>H:ROE`hb94g-|4x,oYК][%LXd !{rvJ$Ap$쁚is8pEv+CwiQUA<({_ܞú oŤNL\M*`c%|LP*rZJ\ChA 8Y6dlO LXn&M-F >H0Qt]kdIRS:3r;" n(aQkZm%qݲ;mlQ?qA bH#_ |_cˍd!6Es>CqMK~nל(p.ũ+Cޭ*d-aT'ՖTˁtnsu.MU[nW`^h&2cU~q iU-389yt,piu2~r҄IO.Fb֎A5m*0v%2-JGRo2%˷ZEEJLw=܁ViltC -&JcCW[bLO17oJ\2:ğ@U=־! rf*^jy9N{; apUő,K~,r]GJpMy%G$Bf1׋ \FdgxǕ`'-ڎ9irZH)v7"'C鎟rj #mw$Hl@/ZZ',C1 {Af18<؅ZؙH^#dGxtz n;cjJmQܜcbg1;0q3,ȐsP 4 z뜼7zRhJ_V M\uwg@~ Cp&Gdn[e'j9+-_\C\vLo 7耕| ty+v{.sB(#d@+HԦܷCaXv)B\֔sǣLjDŔ^ьUw:weq/;h=~# 觚e 3Kvn G>S0% 8YryyPY;+m+f{*'`ƸE\|i Wqt9zYb+J_ɴ_R脓wvx?Kxd~$zo!{p3>🗸Q#n=8 xmGT'(۳e` sFS)0C=/f?IWQ$Zim;+Ug-1Ga`;nZOE_hQRAiffǷ ;ϮQӽ(̤^m <$q??`QXhyuqb2Bm!Z  [m(HSmKZS$z^;r [Y!Lt s%᠑O1`K7<|R?fOO ![ryp0l)U5-׸ҋ^֣O2uT$Q>̛  n,^:PK;WʰS'~áPT)CsX֍ԝîNi"Ч4Kr%BW/vO#K_ztȟj8 ˏ}wR"D^Ӓqq/> e]2>@_Թ\Ut6= 5=~3:|d-.%DF֝ZVK;a_X i"nb:tN:UB!c+LE#W7B{FEZHbM;VҎV%1d0e#s5tv 7j:y3)A4FtYob*I1oe[IcGdJ+pXCJd^/wtT`1GM6"ri hԳg0D%|I.! Pn4 y|({ ֨;t|z.$alnQr? dHH-a^iq!x+C39r_H 0cM> sn]| 9K( -:SFzOԧ ;eUiVEVE" oD{FZh9xu(%-%ol>JqM'*d%Pp?K#OpkY*P@=+٥?_ wx@Ba$hV 5m.v0LJPuH1; 1Qg_q2F$cIL,;Rl:"\pړ)!ׯ"x54mU~ 4XEN`f:ju!g*p~x;dm=ḯ4:XTgОO'.0-#y6\. Y|BjfqQ80rr^Lɛa/]h?Wك(B$uG,H=+Dg92яxGY_ ,&OǬm p6y E@[kf`_W \e`P};tI{ehw79G`._=4dq:e~p:Ms"ɖ6ǂZ'wxR(2.S_x*%(swahR1"'g>tvZQM|pbUPPBf:b]OT`O9Q'Cp%Aajv!TAA># 7_us`NN#J9.`Lէ{4}y\7zءaH+hxu%o ;pdĽԛ$!XD)w'p;p#R$Gܾ+A5ڇc#)l!ZFhu(FƏpB&HydQcYh‘v\W'r&|whgT  UGUQk):ƅe&%X<7 s1ۙ;6_B<\'fzc@)2}Noխ;|˫Ѧ&[~7[0-_rv~L  :cc[ %#̗4Fa Y qٗ55~1PokEaӒ-={#LTucG,a<}0|Ҫ*r9n&4aE8i+*uzkV~HH_Tذnt97U`+pc|(1GDʯ"&oDMլX,kn-GfF&(◐ ,Zk>))Mϡk2_ۡ[H?.uo3 a 9K퍙ݑJ>bwܒ{AQ L+?y^ux׷/6QT9p [8`rS WM%݇Z Cjt!1tGFCkԀI<ڌD%xz *)<,X-Ǽ5m:Ǔb 93aHM;{ZSCV' yVOyGi7az|)B1m=v V` !1~I vYN2ò]_WvU9tJy>JQdЅ 7_+\"`=Y@\$[G.a-M-Lkյ\.To hW)]+S/҉DcĴV`*ZMbإ\HZ)orƎb ԑgL&1Xf塝~)w>W I\// 93֖#N*K W)\+6t< ^\ Ed_`4Z6 jmZr^fH_`gw#6$0x ~HL%zSC̃LDWJGclbK a k>].n,-"1\G+SQ8v, ; FAIj-ۚj&BV.'U6mT1Ą)0$чɗ3G/l+c{̓t_t-W7:NƐI,|7:}?*qB{oNF;v1GbMd4jXLv@GJ(Ďg{2 kPf%JʌNxuk|a<;O-Շ!d]/&4F1C2Нk nR<Ťt0<{͜-SXNq?1= =KQN&,qQA3ߘB{)\O'^ Kj)< @hqm_ ;,u]P^^ܿȜNCO9N6͟1Ĝ85z|S.DlkѴߵGg4 2maDz]m2l?֍lѣOa:;g+tQ{:5dҔ{ȬFO b _mKM|Crc\zX&yS-]/О]xeHLt8 1V(Yy_&NI4`ǽ9iʾPa߱XU"}ˋ s̻ep1wkMQrŀ?`,|[ב`ӶO?݅LEb1z1l2 _Q92KUO WF?C9ctt55FiTł1˖Ǣ\ĕz`·ekxg:p&$:M@8DlvEZ;kA ܴ3lCHQnEG`;Z:192]n'Т[pdWZMy~e򤴙b7ǼƨVa-TTfľF$rcg <$ ̊ˢн(1#KVIDTUMh"<|\Oyڻ,Dϲ1sQcx/М0'h"{ e'?9Ja7wma{dc sѻ5KG<,Rƻ&q.oO݉iX(,xFg*F8f¸:E*ؐ _6A[,Tv+IF/Xl0ebi+N0nzM Gm: &N YGv0#,dɿp''Pdg8/C TST?Q^:gWILlC(]ҭi$ȏ9T.?Q0$x…R xA1cH3T=otj|o<|4VHq7h"Iz'm)ֳBSU89@˳f)ÛQ?+K0!E1D$-u(πJGղX7K6dmjcoUgd_6.i"uBnQ^U(Tl6]W6=VZAi>91CϹ$Բ޾4shNTjI2Sxv}3"`*`W</Zifͽ37O3i\m=vRF:#goe7D!I@h}M'z{V9zve<5j2b0 |c?N1h! $"rUͤsf{<L?~d/1t14A>W0U@>HJ{62Ů3Y`3Y3};߬ݽꌓ[@OA<# |1S*nydfቢ[tm%ڪ=q)J:.z&?[Tf &-ye(o<Ч[d*ې^ V 1L.w).)҃>rEٴo%ec7HۦR *ˏV\SڥB< XUz ˿§Q* F#&olJ_{( Iv_!:-k{W(E8AvV- ޜi(F=Q';۳OosL҂*vz +}`%#z.d}P#_XzW\u#zS{'&˫#틐6$E 4-k nB  Ӑ3af-мw ֨ћIqc?$]v+S}{}c׍[:(xw9db--e}D2LOtް1ڸ5@)g}V{{00I(Xxf7b;k17hJ@ F |#wQ!`..lӫ܀pjcBM +eqom9Ӏ:W5%AGӥQ(Glx ٌҏҀ91C̳6@pǿ:ru }|Tl?p`%Y<^?w>(03UvWA X÷(~/i4M `\p!R/ףwq6_O8ɓCħzYKdFd0_?B^rйÖt>1Q<৻mrmkA6QumZX$;KUL *H@N׽/h q^ny2?<>BV21HZ죴Z2Fy空tŰBMbŇvlA/k;}.(mrJ*wG\P ZhHus7u*VGwj@)8S42҆FzsM5ȲY'=*Jr%y Z7 NCܐRGLqvfDh`n钅'w.5C!cnT۶ǚsl?~5gl"ѲQh-,B;ny/vCW('^SKAkȆTȧG1m1iqY8xW)c"o,B5 (v^fEd3CC-U^C`d\!O99>6iYǥ?[xE3¹$-QsS&6:kԆW >wܹ+6tpQyedVȤxc]NFF% ~dKX"u'h%?ZRY5Cf!6wR'V `I:Tvᐭ6x. (dBg7M=s"Z|nAc笞3FV#F?:nK904wq D~ aI#:Z]tþʿ(TGH&ဋ{*@"Vol7`Y#UKт)\ NɄwP_l驸=g|k(ad1ӴO}*8,5C''S EGj""8a]-Fƈr|8\}2M |BA6 {>#›${"zy3mtXs/ԘdFHrv*sʆNX$z!UpISng턋E* _X|={$?G^yUWE e'\w;=eX 'ђ*dцXkw~ScGPּͱ` MChҩWpwjJ>%~_Tќn-3(3sf.b~}-bɧX#N쯌n&Ij U^{j̯qL,#zZ̴0e`v!fЬ#iFLicꗩ#wK8 ;yQh i m~uRmI(9skK~éI5>6uN "CuC:l DV^SS4,!Rw]n,E@ <=QjPpiM0DB b) Cd(4r kD:(#;A9mj ^bȃv U``O*q{\Rn]xmӠ7&d{+;'?άt+*[g^x3Sv28sf][ fL0aVQ/12Q:wR= }$HTF|ȍP 3OMlBnUκ* %!6wt#O w!(F(FG,߂9ꌏX+mΣ̏n /}V[׽JrcW>311v1aC,MOG+GTTlV#apP@a3)Ep~hHn@ pnrwz6oGa 1:z85L4LA%0n)# R͐!^J߬<`W+XH eD d{d(OIAd!J7Q)VC9?4}2|cGC9s\@AQVkb+yRWjY6ՃͰ#W g69 Ll%,Vצ/.xs;" H{[q 9TZ ׍V:qtɪQl1cp!P9V9 lӰGg@kRӥꪾ v:H1>B nToo0lHU!WC' u)9½ B+K1$ hJ2߾9&&Cw<0Z$ӟ/=SЁ/AXbBb* ʀ c_ȥm#'VK$xi5م:3?Чi jnȋKpJ9 2`X⛮+QSf2thXqJ_?skGg|.[B5@֨7iK GK$'hkfߝۯg6i_ʆa]P '󇯷/4rˈ8-x:Sj0)Goa|̸x0WTf(=ڀKF !_)7Β԰{MPoʪ8%hvZ",3\ 8mYFs$'ŅrT.+'%lcp/kt Τ2w}Iadҟtw5p}Z0<`}âH:Ǐp|@p .8'k&vKP]V`8d.* [*PS-JN#vb=C9%IiWǟ*:mtEM +?_T}Pɓ/72ʉ F{ B(a0Ҵs)K R²LWr/SY(O{@N\;!2zXMTOx{`n0U31-|xsP<#; |NDlYr @\ۖ~h?x$Jc|}#{KX+ť#y7I.n;nKZy^E-WcUX]%RV^*nXLqG)MeQR5ĹSDZ*,@g~';?` j,i;Ɵ[JG**mٴ4 ϞY|1&Eim² ZBv&}>$Pv'D}v/ JC2eJ*:NgEw;-d&M ֤"cfpG \tXB:YC–Ci ?+ G=9::Bp4:t7;ܛybDWLamd % nP4a1iSL_ho2b)W>~q>0;Ϩ"~4, Sb3[b7_tJrfKTg씿č a6iNu@c{xk\s}M^`(XB7w X8 利 eO4ރK e]߷Z-05n {po|eXCq*ڥ a+[hj- YЮcaY,Оr< 7t7͚^/WuR󬥩+mt&qDPPL4 xc؆!YH](>NW!V!uw#9aI@uPTsnL1a(c2mMe̴ti 1z1+"fO)" -.b7 Keo-#nEA_8;F]EZe w6wnƂ~?cc=oYF* gzfDgg4,-ҀV{j&:Ac9BVcf=Aڱ1 5'/%:B9#΋@vf<5x3ȧ"-r%G9Qe0HW58XRC#<F)Jmԑ+2mvHiݵ ]=c2݌|e# f15zvWSmiͫqڿY\d _ OfM:Bd 犁n`+O$R\QVLQ\ߕBqkMt[zXIl䜑0B)>pzžRABȡQE|?ac<uցd_#wCS! H;=.J:TS{Xvq5gKEz1a%*ghcl"dq ,+ d9{* [)vgS'OwLD$ÇA$׽I[`>UɳJ#f|Cұ 6f"FZnP   TWN^f-TX/i,A,As趭{USd<.l7FB+q[1gО"tb36;/Lsw$?I{7cj3V|SHV[ppbȒ!1/{(.E&-'}tc^Ptn't4b)2&jTF0epU$Eed@L2T8݊["Uy[~*?q6\ࡣxEuQ*M瑡]mE]8@^> [x;8z^yfo#Zj~X`yM rc' f|(.lFjέx GYu=[@T$jT!|獢E*Zw(P Rzšvֺ/ib 4rH e`C#~cnc9iVkU0tUhz8qZM:NJ&Q4naUbnѠ\[t"c}]\ F%*DE]`J Ӧ*`=tQHSۜ*ǀ.,}ۘ_s^tn'y h+k7 y7]RNj6 _;172 9l'iUޔn^4ևi'H|ߚ'߈e+Dn-~2Ϊ(uu.wF&(TA2q5mf$WŚߖBf9vpãθ&ϸ4rjcǟ ϕ ( A+pIdhK6ٙAr*ihW3>(@]fq2t1mԽP+[d ]q+ Wurxo!S*BBSi)"A脤\@7BbéVEѬԃŚ~ زLiG<))&ֈD RW4׈[ziE#;[~ҺLODz?`y^aaNIq` 掄ޚĔͽw+}z7\Ϛn8̑㌥:Ϲm16lx$X[mHpL1:ݼ},GԝoF٢6pEeӮ8}.fSEӂmf@ \)W_Oiڂw81JׯQ m~\;XzTWZ$KY!@t~?`2,k_bڢ?JXkxJ~p߭9}P On1>kzb|q* qUrޯk<ѹBI@я(N ,-)"+ Oޛbت$s+!{#si:'6i}9n /j&FV )lv_Fd]} s?ؖ$$#GOvHL5"sS78h*.nʪ̝-DlmLqE3nkץK.63ZOqFD2S Y8.Nh|kڤ6ۇa%KY\ w9Yv_eƥ !wOtڮ"^!ݯg{uiK]~rq}A.$>YZ툹 4}@x|Q(C׹Pt{ngZ4Sݙ\yئ!*T9ЯDe%Bӗ'x?VrZ%2ͱ>4`3׬9[O9Pked3~dQWB1ȷW_1R/}]#O^/){W/;q!V*̃Eݎ_N 1irƟ_@THOޢcL6ӛg>[B67/]`8e X" ?VSex]lQ@\,PscCܪ aċjn; YgJcѽ+a_-֧+6Io$j0ÒQ<®׺c$&c$4Lɠ~]%&"EyX23JOGYeZa6L~ f@t熴s]Ev﮳ر)&sGg"-yUB+g.'$-A)A$ݤq[QE SI+Ni}dnwXj{'T&Ԭ |^(2Ҍb*@Oy ;{@#m@c@C$l*QL$dxc3 ~:Ђ,߄h^/d\LK`kXt#EKxA_"YJZ"ЋjEjf҉d2R2K)LdPNpWrFF2q GoϥV1]8V:qp}E?O~X24sVEiBp|;2;h:|o\˄HB|T`ZvL8/\W(.5ܝ$Hth:zRx L#.ux/mR(7wm(};VU^ǠD@k ӸqI)Pl4S)e'A&=8x68"}12;rd4"V-Y gnnw\Kd?-U~f !Y{D% 5yt\}bӉ Q'|t V ԥT FfsCwVGg;ƚsNV\LjdiƜ@'[ ج=bLn:u8,7|"C Ge 5|ƯόO`j$oR3:Q Qq>4>/$9\krr֤*Ysa^Ɯrer,Ԏ aB&&W榯Rl {UیT#g>i/w8oH}q!(8Hy#k>۾'5hҌ2vIzs0͠S @T?mYׄ ]aAaB?+RDzf+i^АM2oԲr VRmr9pZW=O\u!\Z^PU⪴A+NiHS,bzJ7ZxW\ՠIJ#AGH*G~]#/ۺ8P~r\YڪVgMy-%F -Uc<5 ;PQE]/&EH|Buce]`$q{-!ӧ#bgo|'zϏqT92Y㘚, -J-O_R4s MQ7 >$GIն-v6reVٺV@?vjQvI6ю2l[Cidln Xb`v~f3 ;EG%l~(4Xcv8'/B I{I(dst,d"E0?X`{#DIy靱'DW@WS_<ES֡>qD9# l>!z覹L% f[py*8,f4#YovvI F*"MOWॶa v9<}X%SE)=58Gʻ,Ma^ 7">IUEr :{BIw%*j̸yVc,l5:Oe3nd@'Dѓ^ >i@G7O`+u|UX?gѭO{rv`T3.C7kl"93AN,9alz zr:r\#= kXt!D`|%z6%͝kdQkjSZl9\T.EFl5 {س'~  ˭o$> S$ xf;ynuh%,T&On:}U&c'(g q+Z |7Fo*P d|,I/WG>RҰ*Ky2HGƁY?/p\y1(&ҩ1@!z~-r:![?祛W Wrbj[X'sLe.3O0],,~jcx{L3d>0y1LծIW %m3V& ؏tfL %g3E 1O~>LX \\p)vg AIFRcM4*t7Z-hzhl@"PTnŧ@].PQ ƃzO֙2)ikD{"Z|hoė%|WD:i &5dFL ȡYl67+W/eScHfE 3YtmsBSJ+'VOz>O26Yo VґQ31>l 7 Aݓ;` [DOߔ0϶3²y-Go!ifE_-GL4_#l= ^Dޥ^)epꝈ O@׆`#b0dQcBeGhiѤݴczOs|GBSchDL #ijmSl!lNX`̗9(z*@m\i8ڿsKj>SdOtU82%0_|gyvVv( A6Vv{:$애^tGպo vZY3~XJ2`b0u== ;WTgx.Vz z!pM-8QDfuD!"<:v z\[BdH<1ikDJ/JQ m}׬mFLD8T_1bNJL"ҬN&+#YDS1$>̷u\( Ǒ6 g> ؊3s.=(=‰:, wD]r&PNr^aGewڌB?d ?*x]Zw㴱d5Jœx=]9g9U)i0ɥ} SGXb JZȠj%O5"ZJs`\\  O.VSB^Ǯ bL"Ǻ:-ds)tnM \\[in{ݝHmdlRk k߹y6'1gy˟Q2wo-y /r{Ia^Z t1;}3%oiVkYPn_{yFʨÇ/f#6}*MbzfHÌ4hgB8]}D$;Hy'Gw-h֘iLe XD@yp9@Q[ɋzR ]5B=IJfÕv 9s($!r7$Rϻ&aNy| s9RKpSq:^%VR҄HB;9CACn )Ytd Sa\(G8dSOؽ? :Z%3(%~JNI{ݻjG!YSCppNA' ]@0I.s!]dLuC0%?T(# 7߁)гTt҃J^X&fpwP09(6!E(k#>>r+<ŚY\$l]]ؽE7 үnFhQP|l(h5$lN`#]3m jh،sGUVŠioje/CF7\77dj!^̂9~YWU2,Dj:d-Qډ$)Y^Ĉ@1U)؂^X/m xV )dil()䊣4Oh7M Vܡ1r qb{#(BxԏUfS7h_@@D*rIqnf`~^F3RmیxKvR ~44HCA li wNf1F V$ WeƷ vbO\~p . Kx߉ Qys/DH=wL7 _6*/h2kS Nn ˁ[VثsƼ0|p78X30*#@."0 xCTZ1eue(qnv.H@wr}&('"TߙHh=S(ZLwTځqD Hْ3~|,T.uF&0w8#=Lw4v?DR"O7]RНpS[k!y8r qj= Lz xr)43@f; !rK[#iz^&{X^SPS:KPMޚ@$S>D[:5}-&)UJmEx~s/+8L3k[\m9ֵsO(25=.] 9Y~Ddz@]jW.p\1P*bȒw ݑyC "T(XWzN|]LV;`ﲬCJCN%8i]քWqWc8[T}kPGU4W431l"NuM3e"<Rk=v܉ ؗSB7a d :gO>V"+x6PcW_sӱb8%賓>Iclqbg'W |Z̎*lyYD[9[C.e܍NKSaCH}WͰ&%mtSt[|wzUg!ly *xM? LS@;Cƒso>,qюĠu>] Ͱn7(jF_-CfZ#U O| ,x ] +i 2IKFonN s>88PPmfBSleɶAcn:zo S-g(9|Cs)2NfF)Rk^$N;k@Nzf]t{%>1EWSzi|E'JT^' DaSj#z$Q+yq7jG8|8 =U@; ] tg =3v!w'NPTw \\ߚ&S֟e} }M>L-VPߩ CPB˅ LOcݹ3A刿fd(RDYSdZ, #6O+&s/h> i*0d 9ʗP@ĜR:NZXgX/zYG9(ߕ\ۋba52 PTNd&kU-!JG[L1.jA* `}_.!f9*}ژI87k] h/iؿvP`Xw8/q%p2 M7.F vրOTKk,"d?G<$ЏK>כPiۏI؆J;hd[kElZv]_  eb<^_)z8B\9tZq2-sVle׆vdp7c(튰&!Ē&,CGRNc qI( )d~ev9,6M g!ǟel dTtHA*c?(3HvLn'9hAW8J *BW# VCiA貋7Oz:U11*].kZQT +k *G#/q{dό L@l{E9G@?TZ3mѱif=Q6[˯hIG.ed$hx42\7l#[W}m֙8U A L:PfrV7X.P]ǁUQiզUeɜK ٖjg7f:4jVz/G v ĆaYT3vS3tjРd%lG=Wy;xtD]zӚmƞvY)8xOa3$*P\n*`Jt&s1H?{GN0MFh/`5QZ"_4t}N)IJ hy{Muuf(+YHU;,A9~g yP-UXl[s6 Hg8>rm:x00tm^1Śtk5]+*5 UE@ bǰ)A%W q .r=oW4+2k= LaDT-'9{gJhI6hq瘻rԺF PPY{'t# gX6 'S/̠2'yt’ƱMP_͞!I)Q1L@5-+I˳aI{'jѵ,~%ZѶo cQwCi KuW/)~ sA0 IZҵ(j$N g8,RReOM[ޗu7C/`nudv-͋a:ES}wL-{zA~bDž[{!AH~åD(Ln\L^^ 9NQUZ#_!G"a|XeF5Oh[$="3>BvnL;Pn[t'sm%@'j`-s\|]dXc=L ym$čPo5 ȚohAYBh~ F|m =Q#bWCKϝW,iSK]Q־f|wAsv$Adjo)Ed5_fuQmI:D t!*b@2NKa#CCϺhI"D27 R躤t?9ߥVЊը5%>Ղ+tIw$@~dal4#y2dpOF J:pjP@"<¯Y,ac}h!ߌqHNh ,:@茰s4){=2- [:ĭJ_SZnʏ7ފX(G1[D٠$zA$D~PxX $t'b-rEJC<ʽV)yb)LGr!AmAPdL?DtnqAb. 7^1sfo!^b YVHr_sO EY ju4/]'" u,1 Ĝ, YQE u-`C;ѳ?.HVIH%6Bv64 W°vLk;j'sҝORj`tMtT7nYƐ^)a^+2ȴ-FLL7v:h"fFǦ U^ppˆK MH_?~ijB8tJz8kFpicM)"HtV.܃ n*aMM1b܂&9N {S*KHU4G3EWuMx!_GM )9kjOZwtms12@?siXY/0~Rfd[F [L{똗+(Eyzl>B1fvWx!e7cw*$!9E^ 4$ j*Ҋ& >nX锌%,m a9VC{&`CA} 1NXgkSc)ob% ȺܹH0G{Q7>v|vef418MQµkJ!!_LnݝxDa6 6 9(]z&}^)s`Z8Kمyz[gPN'%I$.qGɨ"+f+cPFGw**( b}@Ja.9u+<"gxJt_-ER{}:0?<* U&0&S3:HC<.c$cGS(O\k dܙ( w 5\ؽ.+}Ɣ^[C;Y'by|NDAzbC;g@~7$uJϣa |]wh@bI+'^H<vWf HH)^Vj s7̷/t}ݱ4W_XA)g^‡d{WEO)mYWȂ;lλB@^֖8Mκgd Dئ3j 3 ^a;v:/A ׅ&8Bd~Fx nݾ^K;[*cWzb"bzHT㾯+R?P.+HJG+5LmRZD/s',(IR&`3EQ]Roȳʩaܛf w Sytbۈdr4(j@D@>)M1&([yܳM~*J)&z}'VERqچlEyp;n@AM3kQ=o1] Gy\:r-f¤K-/sf[gyZf2Y<}.Cm3bEmjsZ;:pq,oy| |_uM'%z7鰙/%pQ<@DPWl8!J-^ sP ~k B!YR,G[Zc`s|z(cQl:ax8;wW0_*Ug9ÒuIOPia ڴLi\>N6^Q@I<\`UX{VDeQp/amLW wiFJ1=%t~/0[C'ŤdI';tФ(}]jFc&S 3qYM851[85M< blo iN \T^~Hc/y8 |aY:i7ͦBG$^Sp?'dXvYH^zik#Auן2` 0f AN+t5&ްD˪aO"-fSfzS_|{ÎSOy|lw"oAB|DyTx^ 9v9:kGIec-PFpb +UCOֽY(ZoM8cZ*g0mkN0bFg#th>hRٿ@,"attE_7 FL B5>{>u2 ]%kWՖ^)y5>E > P4-#|Ja  E:QXЊ_"y&50#Y-C?@"Դڞ(e@bܥlJ]|o%tޛv46HB(~BC|eT1B+joAXbS._sbg̦o$n:cCGc7hq͗%Z<'b?1a.;#cz T`o-v^؉${% ~ƩV,g= H MUN-6${5,/6t-at@t 푚tkۖI=$AHӗ& R{%IlHxi~|2롅j?c)RdK,>OI~m@|V/ՆMt\BI &&l5X(4ñȷc"35N5-Or}:`dSA~%Ɯ+,*p-(R 97&n(dɒR22 W;b|sh0ҤCܸik_\71U Sԃ`ڐMvuf#OqH`=#o0`~c/t%0>$I26 DJ}@週Jy@ȶ?A?]U$2`J`r +34`ޢuBdA:sD_k $>"2WnEʲNk<rm2*ؐ3לj1/v}"i(!T Hxi|!P.e!J"^`r/M@|b--}!"( v_g Xr\ۤ|y5I_P Wf)mj\eATJq͉5Tj5S>c +EOc̸?g2Ų_rgMnv7B۸TYJ+oue}z,ZyV+?!/$D)+g 1ShF!)u{A%5_D?u. `1)@W%qWKD0Zn:u;7q+J'гN&9o#y0 YZEpi/data/pr.rda0000644000175100001440000000313414421664404013035 0ustar hornikusersOUǏL]MMKKZ+׈̧hf>J$ *Yc'| `a!&z5(0{\kt>n.}9wĸ=Ra*"Rx吙O<8"\SW}~<+sFpj\+Ly^ yu?; yEf>R. >nemk`. ~q%Orﻴݔf6ש2|5a3{Ss}zC^9ȼ_Kl:"e-1 O>nwͭ`=qwQꛑ7؍uhrk=%s/گ4#>6?f2.y?p ^E; T ]zs/; [OzO|G?u H}P5bǽڿgl:y(!M_[Dݰ3WYi GVd?<}Bl=br*o.jEN醳 Hv6zxzt%+~59p}ƫ XDX]`>nň2MЭj o!г(4`]tn$Qꕀ S'Lio#V/5.z,Hwg3. cN~@)YH{&YVZأxy8gY45XB'ܩ{yg"{ܷcn/QOSɫ_$X5,.f'^ªdP^s#ཨx0'3e8o[Uj-B.N I⽉)ZKPp~?ރX9'Q79{OJ-=G1q/cB4VD |OhH4L {Z6gcbHaHk6~+˺cCtdcT;樂ԎOs/$AV-+r0!8`<|gϗL&uBxg"gڥ NPԢ)@$~X[˸yCSJPaKF#+k\JpFiy!0.ȁIO2b!wj5s#SNhQN?`V ]8;C}|Bψ12g$OTuHe^\!rU_HQ6u##y`Sulӵo}ua a| V7'DqٺB']C_4٭^ѝ` UOsf]TX< "H AXl B}͑6ss&WAS:U-#6 04VaЧ߿;;RNWԕFH]5F^<Z}EM^L夕eQFWݭ6}\)ȄCپUke K2=$1>##;E:FOz.^,] b'? z\8FJ ud6Sі+ mc>~NKYW3:̚H& TGnL`3WFIdn~7 hG#R'!Cb~TjtvSmO"#5TmTw*7g󌧉Qk4#YG lw[ɾ& d˞MO8թ ܊I1ݙz>?KmvqOᷜ(%~AI` r-:A|˒N=0D"8= 4>"E G2:T:,daP&ߕ=Y.b6!ZSR!͎fq|ZEN{91EC[ 'FP}#fӽb4X3-fmf}`Qԥ'zc ^O3aAܽ@szzq't-j^bÒ\Wa 5{BC:G[`^8oH0#W.@74Ҳp" ϕ /CD#2#`q^$*N9r]lqɩ:#l;r=#~3ShWR.퉞7yqaiNFZ:j+5fI,uuV_Fiؑb%dCTINX]R(M< /nog4Jyd0@sRه<)sQ%2d}W1,J7bɲ.;|1H{1gat}iSKlNZ:m28Tk6j 7y,:(wȼH 𳷢G>Z׉jGsP7x4Ơqq׶bp M:cZ^v#q_ql'e/d0ȐtQkLe會a#}*QRФllq;Zt yt.[lu`=cx+"B΄fd6&eFCKFsMJ߯\cBSND }S~;ۧpue(P0r_C-a%[)?)QPOQ)F w!=b*-iֹ|B>+өsb` "ʫ"ޝF7y %S,QgS9= BrjM?TBosI/@(`Yl7{x9NkB m]|c[ vsD!iEDxthf Uq"Hz͑Gux%89񄼉@:Kj^6 wpssml [W &=DԻnER4Q4.x2{:/ui~9}%fۓau2[`ah Jy?lܰtc(#r۪?gp\@Ek!omC6suC;2& v(KH1SJݥuQ`vEQAV= ]!%=4X_ljNO{ *F@%jLo$FKMWRw05i'_g.ՈZS"9jXZ/p vWMq?W0Zp.,j>iTU> FB-8Yg}v[r 84U}qY' hEv4ȐiSuKxzVF.ٵ0\)3D:\b&r9묺j8:Kh /SM7NEĺ0uM<ƈ+kAsE G)!c ۰L4r( `/EOdFΗ,>9/TK,B\_ "Ok&O&{\i)'7*; Pne! reѻ;;ʀBÉ&tpA&m᯶\ceA8ըN˥1Bs{~gRWrh3-l3qbNjx+{-})@. *ONIۡc蝩JpM_2c(TKDL|(B,m'W+P{ @^B!N{I)KdEZ䜯:2ټˉKq~ֹ1Ng0 AIJ 8@-k!>- Ht<Ӹm͉KC$Wռ;%Bu`7߁TXɷ\ݤNW+8D˸uN[(U~'\զ3tA-%Em!n^@g\EљS&BO"T}ն+sDs^ L|^c_gWt z"a8%:sdClXW- d[=J6ss\:Lit9t7Ι 6хD@&8CB㸙](6# fy0|H(h78| 5`v,55|#U,CG^5 P:W U 32q5✩XLE?ipn-^cZ&ɼ&<|H>٪J Eg;a r,d$K҃8d(9%Z`,-/G!PDD"{(޽iah3v|eٚԢDc؉%l{02T_tJYޖ;ͥ1Usi:j6H;uđcssM>P fv@}NQohru[Lvx5fW;4wREV1Eq:z5[!9C{8'°\wɷ yT";i,jW#Qҧ&Y}r!RZMLN 2rBe%O%w7#|j͞l+uK¼a(|;<7u"M6."q~UI)9\n$^pƹ*HV5BvpsLl R.5gr6DrdȰpG@֎vqԂʥ (;LM`+\^mHH#Z2; ~,._5XX3?k(KzX0aoq o§+-ɷMZƗC~u [Y,vlpcFY~w?O?y$DDKWJ]$^Jg)Ë{v\i˻F&B= xZtwv{Z=@@06L\^\aF_ME;VmЩIY^Z7`;% b V:x,s[K(sHomj QcPl%?j6X947Leމ)g"c2ѲyـEq}[/֝LQI3VHJa(SwZ-48-ܚM^iе ɂ?,% >=?=a6,f-zZ/Fz6dl-ڼc) mLyƝDŠck}Is"2&|_쏮Ne#%1UBOS nQU7CAIꮭړ)e9k{y ǼS%}1fJ+I6WFk3Xu_a%o rQi浓؃nRMTBY <`|&W9>$%VA| -Ͼ; v`+軫Z?E {װg~]R=߂04)ف\J)ohmr0?5$x\4P` ?2UHfLKCdo(F @ BG^S',wr%e5LøK5{)sg |>@k_uq7Qx(Gm?/ /Z`%V&b:u>``^U @Xo!9ȯp,ITmd8Y%;N e/ 9JqGEVu031N|SэKvP WV%C/UQ|K#g0$v ˉ;.CЫ+:( Wߛ6xa7>)\a?# p Ctma~Y}/ G@~_6;=fu7z7qwsE%n~ Ζ dn.;Bf Pj֝xo/ \n!UDI.ѭwN%L+Qa:Ȫ(ypsW4?ީ_Uqܔ LC~,9 "ش#/Ҷ1 ո\KBWKrzګz!! 'B7R7fc9 F~ȐgFpUZ!y5:[gU56.i⠰~=1@:%"ThdA^̔2C6dg ]Yʤ'}PIp!칉"3LRC|dQ]Y+bvSMK ,nƏKq6^#sYϳg,ʓ)s* ,hIW=j'gxaR$>ω!Sqp" ?(Iy|OR[.3[u@m @.3Sx> &ނ2&ꭨ#cEs=ήS,8tbS/ Vg#//(AD>;LH %YW_L{35{gc & ` -K7 Bkl(6v䉾=U@k8 o$5$ҌZ`uPZns+I5 L:vLo#axČγdNP fz訿m)66G@|BDBLgnץ(^%UG0ƛCsҙ7X֝)J+]3XA8Y*_*=9|l0 г=>pOBuM4rp BqNI :,;6#]Ÿj8瞞YY11CS+H /~6'kb[<#/-zn j/pAR=<ӢB2&}jf~~de >*b( >a_cQj9}*sA[QW2T_bun_rmF?O`ary bV("`g˫UTw3K Q:g}hG }?z\Ymr|_TovD!Izw*G;\-6xOi0S{*6M&/|K I]Ȍ6m1drf'd9΀^eޞ:;(Mq,3 w䧞hU/CG1hWBx`]#*jA,-[{Mv3u®IO] ֛?vx^ nD]R5u|@Í(!tl%Z|1 N/AGrdYwݚјo|nlSDo4?%ۣ {"4oDTqګ]h)pot{,3b ս+ʧ;m_E?.$Д,䇧-2{[CσWJXഹѾ3L)"1?3͹W?]2; {x5.xƄ- SN%/ă+b>N .9@qK sjf+ @Tbf9h#p$d$J#Y-rn4cQf}a%ds*AwbH{&&17fp 5V-a+Mŝ?r D[b"B,33Oe!Ҥ %-y #J6% Tzi"fdþs/(Kk;j(YzKWó8bwDГcU(X:D#i<,k9G[л i[`ܧ@\=k$[giPr.?xpIvF TZbje[4|q HbvY%:I:͘huIެ/,^ʔrzӆ83oioLl^ EmAK]AEV]ËZGVdS~F)倛< [|/2{0'#j|87#*y}&N(2 @ `iU5{0Gu94n yC(9(I&u0S ]\E@PDF8ߤr~ӄ7Zzb.SA~=y^1#۳e>k#0cqEUwIt\ Q^H k\jgd~vCEǦAL"ye  }G,Տ\iB=qI2+> y-U XZt( ze7Kb^ܫ) J|^^ HC+AbAɵӴaTzm'`YbVSK1AI&(7ӝ4 .l.d~&3'[(/\>6ǁ>{gn4 .@FsF9a7w/~^XvuJTe7cE9H*Te0՚3g]:( j~ƾšHu tTi=~mV֊z66`R2f5e)p@Uؓ4FɷC < 닇Y{Z:@FͶ*:٫XI]} UKB)kq+ʞwsn,u쎆Fv9Z*RH%wpQKz G5OQ}a$XsL-s'䙤ʰ@VƖ4Y8lMoI.K&߉ur;QtqiNv}^KDє'U $ֽfYN+"f? S,K^}uE8mCݚȧBUuU{2B~Q󬘧”"WR]El\x، Bevkq>ߓBE}4v;W7bn4v;=@f+CSNr7;5]pcOa=Q55ҷg&$Bjcp<9od8m,MbC7Oi3~P&sr[\}|#qy3HP0!iqSe.-e ߅F#@8i$'nOe:09SOo-5tvt6"daD6:UdK5F{#{rp:X(t1zT\|`QcK/DTJ!,)Բ{Yoǝ{1U +`Pwvfb/F ,ɓ&^0=.=4YHִ5_8އE6s6щeÊCpEqkpB8;to=e:lhh`w 5eKB_rg.mKP&+ b3,=L}&np&{'T%SJkFzfŮ]PoJ`7 nR OZa8XL;C90GdYG/Pz "fԧ.y@߼pNY=C.j:N* Zo?#k}P"R!7Pu{A~FOjWTeo!ʞͿǐȣ$X*3w:.orBB2$=N17zfζNTr7 F^Mb%n(zF5F'Fjw-(YD]'"Hhk8[ޥo7䒦w^JdxXr;ZV9og CD42֮&q?I4+ ypw/"v@օc$! rDJ %yoDIe-nxf3HRMq N:  O=(s$}`#uSKt6XDt3n{h1B$%?LjfW1nt6_5NԱ 6lN̑CBimZ Q !H] h$}4  ӖZXGM9iUY+%0ܚդ&9$s-Bٶ%e$|뜩8w@A$5GЇy^Cڔ[-x&ӯ 40Q4l;V#,~("|%;H/:HRA, ?Ȑ sY3L HZĘ`m>rq-u~/MHؙWle K84\"çpY,\9)m18]"<]쓚j=C{ť+žjIQ0|똡E&_#oCL:oz)7)E޺S(xQ:+{9Dƨjm;Xi|YQL8թSw''0pW"İ*!Xܑ/ӰlT, 3L7;n+gVwPf:Vu[e|Bz2Z8KGn|CK8'3ܻuz''n$ȝzBw^^5ߴVz}?7^qֻ wL$5Z\zz[*Nxq@TP4'kt҇J,b :xXt$p}i?Gz0"ȫ\)@TܫBIx*2d5xue~LlƦu}Iג7/<|I)ܜuGt/Gwe|={I |roFn=\yW"C`|7 9mi0c*>PZkqQ2;ʕ4MAFuF@دx6,hS (= :s-<*&UI' I׮‰+/U<HWPWa8X6xO@x{_گkwG}|U%&(@upxMR_8%̲y# ;M'0(3$Kul 18d0tb^HԵ,4r#Ƅ;fe]QzQ6 7 {WU2~  `* L 9DX{.F"ӈgPF9Ck[п C{ /|"] T;7J7= PBCǙءF ߻J g!v`:h_ Gv˩!rGnhBX@݇L}*r]_(pWpWufRy;Y >[6D5c$`8@Y wu诵(I udhK\}ZsN餤@`$<%vGfe6ղZNTP!1^k"0n <Ѝ/7'Ž$LMpqasCo8ւq.k$y7,)d~x(KreBeKG*Vkp.!,(XD2SmccUhy AǬ. l:T#w"`JhH~Sn$D^:NU[a֦2B$[8Ryzn{&u+Jk Q=+x#Xc*6̥moue~8Y!9n_X(2"R1jh'mdӼ[aT%++fex^ Lـbm0GΑmkq7"<M L7i-Ң$1gom3'qNs_KB-0ŧ8NsWۤ|MhMp9{ag&p:5>AB:5?8S'2e6dar^_=*b?ธz&M灿 +NzBewV+=_C_0ۢX%v^$+j'N/ݗOZW'(np\z<yއI-/+ٖ~>="BC9w%M =ڹC(2tx(R~.r>gDFDQMKlx0 KD)r qI?WQhtD>)R/$y Ȁ'6i}6!^x8iSr!lIB⮧9 ޙ?iܦ)Quz6aiuyj[vtͮ^K3I?d'~fwn?%aK(,̆eG3 7Bg#P0@|=æ("ظ [LlHo4DkfVڧe9_17_g8WtaFvGQ%f0*a6/Lז̗:C:rl? !)SPF&yzrx˼K۸O Q /~ԛT@mמBLICOzͅ.ѻu^r+ eVAW+x^ȶD/ k–W{4՝/Dqw d#T|@6“PYMYp*'d5Yk܎֯Wy`,\ e (l 5VBd='fpJ.O<]+LL@4 l&pHD rUvy ֨S3 .f8>4O /[u,vLZ gF4N|o6>b@-ZPl#$=Y!KMj:׹p/:!oKv7܈eJrqQU⏸G0OŚfԥ]^FC>嵬d}]6<Vw!zIÞ'5q5Ggt,hwlJ[S8Hic]5xGjS$δF]zh-XqjdƱn 2`<}1Pa('/G ƴU\[;^HV qpnhuP2ʥbDI`sf"IVM)n+g}p-\,z3 z骳\`LtPE%myHcÓ/[vy@ Dyw0;s:F[ פhr{rh&b߮R@0ä2g!Q `v1VUl>8D('e". C ^OJ^z8@2)MʪYhmU]'fg(c0E4 lQ˱lS5J8]TP$GV+6}R}[X5x8l JZ B.p$ /i4BE "y^Lw|["\*P VSN7X\"ڲx[m2D¾~Ʃ' ntVN~EBj>"!ӓ%<= bCrTǏh%uN(͛F]Q5FyFI86!X?A-;)bv Ba=9eFE.m'чfg壿=`ErA}F 6J'M>( Zt;XRDǩ*v*b|KZ`kq`xwībѤ)1`J?{t&$nd SE 3m|[X:A 6Ɇn0tR\5nw\+ )kX')D0' Ax= DͲ\8/G @5ҢZx +XԙɻEiFatO" i/jF<7 /ig# p.*ɦg6nx!M7=έp2vZZ_ht@3oҿZJ3u^5XM_]`aq}&Bd3*UQ]HQ:`v#z >OTiǤ=.QO , 4P(^KkCsMY>,;Φpw{"lA`dVyE <ǻ F &1XpsV`/>Ò q?Ui/?ʋ_ R`|v*0ۗM i>Po7t\F·ۂ2V{t4eojKx?Rx.L,ՍGy,3%dqCW{l0ɫ x퇙79;-qqM\bȱZxbs~7ITϒVu6W6.7ӆx%A\JU+U/}@< .9/vׯvAIMC[8ZO "x%d4[124Q^tFN3# ld|^v H4 OTwڡ7<"l Q[!.PΩS7P.qD*9g ۷RBh68EFP`5KTn*1ϕ? 3[,KMֳE$ BI % ߈\>sE!OH$niA&[Jay8/Aĭ& UCS=_@"+*oʓj~hWTgp<"x@\tR1 Փ^'tX&{lR_ԛL!7_/Ttk({*v4_q1iV1rwIS60P.Y6l[9o?)M-^5!D!,-iG8N*fE^N!G)FSټzڔ~ńSd^f:ޝ p07uxyRrtB;{[Bu6ll+/D$MW \L1):tBF,ncxφ~,gSI=Ű/犊dgS'&Ժ BUyL yGdDňi۩-|v>"djy~z*ѣ emO IZU#XBz;sbd\.鄡mh?ӡ̖` =.NK,^\ Q/H4,BV(59>ֵԨykQ(YfȿU6 *gSZrO3SW\ LN&cc/Ψ!ȧtPtTY6C#N螿Pi2fiҟ v7CCӻS4M88 9Z[9kn?J~XK .Pq9qfʝ1OW&NSfV!ՒihMǣ,jW/C }j`壒^EGRj};-aw˪>ȣ*ߕcTFYx&{(5]N0PyZTrclTAx{yyEBt>fcwU&l*'$ɘK;UTח>uS|BF/J#gdg|Љ]!oEIb*FH,=,==DOMmSJvFk-v PC+S,j:rF{N`|-`֮D@G؅ %/j%~6h|6N>y_܎;j3 Bjd OB7:GAq~)?7|,B̼,)ྖ/p$m<)RYh1)8ky:j {?o@R|^C4,ed<.Y^‰wZ^L^$hWym?V&f{]q!BW!Җ!2cVEk@`C Q:fLS6fW7 k%׀"( o[&^w_\N*'5h$.T&zq-:1P@-j Jm">|[dK:kKh?_K9?!1  bܳѾNܟ63CD~v$E?VىR ,IV0#ҰU\dN.~%erZ8oI!J [i_:8Ln ImEߘ<;Q^@74nPMvAAL5.|<=>c2VkKfQx}8`yIa* ._HLZ$xo8@TXM0<$bRXya۰`' HOxdmsw~Fr;$x/tĠ-kɱD ].iBYSUKYg%ׁZy#ۺzMƖZ%Xt\}5U#Fm6/rΑ_+g2́^ŠCA&gfRO|Hz(󖫇+|mU+h D  b;`B]+Ns^Png3K.DL5o|˦?^D0軕nFM%X@Uvtiݕݍ쌜xIY8`.}ADqmSh{ xF]:YS|$pFݮ Za b F8R =Ap Rcnk8p>Q^P|n] d@|AKsl+;E!̥ nZB:DR*1\sՀO<ſ4ydIedJ$}۪f̹VV?` yKv'Mŷ(W2>X;F Hݸ,Z0 Xг#v/2e+WX0zND!KȀVc5 vk(/v}1ۉQ 3';+@z4eۖxAmM;Q񵕵xrMD{xa[\ N}Z %)ꫫp2.#SFd>]ɿ9{½1'"(Ҡ5FyEM4p_a.N=:hhA>u{D9ϛ:SDhixGC8hQS"jIn^ȕG**bp +ZUS{|I@\yfBwp[}01e銒25M$fx'Ϗa`*Ƌ2f:iq88Y B'awdbo:- TPg1`HQ1(~6XZR0cXZPu`ᅃVbH=?u*e/&j  mY"r&Mdp?R4'z@ oĽvm" +d~ds0}nQPU G aq%9eܦ X+Կ?muǐlR?MndիtŲR7é7ጳP9S5sI:74`746I9mͦ@694guT)s);nb-[v c`xv)LF΃tC}&; U5$FAx\T\l\-5˦0?uɍb&p66]1׎ٔc{ ZJk(m֯H!LfA8kb9{$-@vP+اֆz6cj)AFm%KRNʳ|_~ph=$`.(EBj\? K+sJ#] Uy(!p:T6 /TJm@҈َ}")~jIʢ ,+(hVxp,FmBuOJ@✣׃ٰ4%I:#MCj0-k< 5RmM7E%>:lćpH^_u-i҂S,VL4ƋɈ8 G@j+-\YМ{vAFe71 =SqĶR3Bs̙\I 3APDhCev:F?;@LIY@h:r-I CX*+s>:Zʬ{+ a{ʼ:{('V%C9mإ.rZIt 3njqwLPmOq)lt-ٓD뉀WxiqYo8al$ MywՉfغx]D;"J|-uE(+G@YP8VC vb8mI{R8:].ydtUb/ v?3R.UA@X;DbS0{wa:oD01;^= _aR$fVuL{rTH,pȇ5 L ]N gVx*X%Qۧ;ÏbaNPF^!L9ӤLk&Ug_KsήUL~Gt>wujW#,$' rAӦ~0$o_yDJFLcYwz6ی%p$BL t!<2$sIw3p|wDMZ Z Se/2U;iK뭚N3b^jJbU3nN\H.e7;Ze^^MTa=b3+w[ʹ/6h+EϐQ=6о?_qyƕ[DqN>tj#G妴Gr ♑]NM7]CuW|7W? |jI~7K_`i>a`.׬UyŲ˛Y-͆ؾ<ЮwSw3c4epN%q 9Q'E |{IC*GfG0<-cC{c/r*̜o{ ڹ>ً uܞu QTz%P1FS[00 ODUѽPAL$r1E(7a|Ҋ0⤢pe;QP1fRӄ NA+34GUe/ް\@ 9'%70 uYv<WUCk1ū틛jP(k GCo~ㅓF"5*W% V1Oq;I3:4<sH4D4z`Ժ:% ;a_;.n~͇h}R 0}هSE"tT|`itB:ge9)I CTtvleqjgp;+F}_>/M*ӽmʄUh8QF7V8lk5)$6+36T(^%S1޲VIˍOM" Gt6q;Y/hg b 8#Uﷷl;Z&Tt SsV]eB-7 :8|i/WIq>=uM zP: qؼwE@GPC\y"_L]!7=R>X9ɼYhb{eF/+\{7ۇsoREAv ՋnUMy.J\?{ƮCapJeXѽhE<> wHQv/l ,N2>2St3na,ʨ_ҚYcݍ5]c >j=D@k/p(Z;Rhb3 )"H`-8Z6k _k o pdovB ^B±\;x~|]Z ]}+ -[|o}fM@jz\xPƱVm'<LDa}hU!9.T ;AtQ_1zy -UKB-޼i5ŰPKChh6k:ס[ngC߃2jH̑(nL^ޡh-6%jh6V g %3WtYb} H6X&}nE6ᯍ  x3ipt{XMjK$꟠mݖeJT] hnsťEG0e5/mU MڹK10z0(/~M5"F5b!̓^p"W ɏf2<.F*uJr\C:e s_BYƀG=c-=c&.1o-99m Geg`}iBd-:z5&g8T5L/ԧP4PYqM ʙSm ydt@rIzeSso|TyM;VM5 rYA{KLD@.xLti֩!Јbd+(%@kX70U$Vy~rsd=3_=q;xns*6UI\A3\.p#<wAΛf׆.SS̭Nla 8::{aTeTǂ/vMz(%!e؍e]_xOJڍn1]*ڧG@wͩԷ\Ly]m%MOJynPoQ#p!SL{Rq[7U'q>";]5|U7Bcԡ"a(Y#LFh.8}hL2.C'agYN \E筯ɸ_ ynUmdъS#oO5?aKxhFq})C#/tSMP) G w$È&xk FbObm"nËvM'GSF<@v([~hXkob-LY2AC Ih8p1zY&c@;ϝ,JGPαj1&12ql-<*#>PpwlF |1tT2{8ԊL6Rwc?~sUdA*fnގ gZ5,e<o5gS<5j( V A85y2$R!v7Ѫn|hsUbO&9!m_ ~}5%PU 嬁ɗ&;ղkk| 9U6j2$^$`2:%Sg3}%)Nbi3]wZ5`J_R1rn :hf/U &fIƜ-!MYņ-.:YWk/GS"Q*R/)C4nz C42E,j 4"IYf絻Pdo~#PDƍ)sN e5BOfAՆqMw# $ ԣ㊛u8[SՌ$y8eL΄g±4 0;cgR@y]yNf@\^{OTv\z6<_ kXIpt10痮-3A0aO0מRы o iE@Yls'zQ^6OeQAI>i@ H/6Og*l_3b 1C#[%Vhbg[8D'fϛ~=5=RBڒd]u=i`Mԛ.b70G?I5: K":X*Г8Pptirhחgطt0wsQSLIUܟ`@<`IܠR+_ùjW i J(5OQ bx: `je#Y ]ւkl{ IJ=Hm"b.x]vgL\) ){7-)T"f3q.LmtdVk]5OJ!! =er>!y7y*4AVe4# Qt1XwhF+@jӋ+%40${PKZA9%2+GBKq`:ESo,8HD|H\`(mZw啽y=Y=A랲ckQ<-Z.*ۙih? ګl\Ziq𮵀S XG9+)?! z48v٫[_~}/[1a E!J, .Yaш*r eN(;3YF"Զ't>v,/e'GWn& {$CDҌ̋N|hF,=.q{<@Ryj45c!' 9ae*=pO) boĊ`[tun+O  R;5o7=*=UD5qu,sNOm#{20Qc<UKA z)T AO0#XZEU>f֑]׈&H|g} fOMSqmpDB_*|UݔNsvz*UdH syvc{d@-dPi'Sd~W ?խR%G3qGaOawc%ŵ`g,>ܚvAg9@QATɰ(?FhtOY4EF腓A.yjhINPx9FjW#OE1Ϭ+Ź ><$H[uH:Ty]2R4v@TjbX~E]aH0ag?Tғ1pRʒE>~TMv<#5Xpoej|6tF׵^|+f_Cb,!;`۶yUMAa!zx&_Zb[`;p^#&#H%ӵrJ{9*WyK2tpxL y!AS`'shQw{Fz;4z'K4{K)7Ҹܙmޡ Mf=0UNYP5G y $z& ZI3QÀt)~KuPTad8✗{ZuEA[ V~Q>vMl4uP6+cc=%hՐbɅC9)?#-dPo궠 [;ͯz?-_#0 ƳU0sݹHwg KTKX7jDW8er|"$N8kL 2?Tov"e@c  wwwdDe ,D=VJ~S1c cǺ!ξ_qqΩ.hpoOg^F)hWOB`I\CfC?x g&3nf'> Kҧ3(M0&D|^wD? YJkVA˙O0?rĆv-JHki%=VOƘ ALx 5ʹ$B}hK>^q$wcGyġIeoF)+MDi1.#G'3 hG6ou/=3xAB)};z*nQ *8FF^B$?:ڃ-ax'L_j"QD7?^l|Xka'u5iv-t )xH^b~ sD!dڭ,#-pJ1Ʋ^< Zu`sckw񯉪!8PilFÝ >1bgPh?=X:{UmU|3,A) bGv4Y?>9SNa8M<_j-/cNYBJQ0=MGlD&p q4  sVx$!Yxu9 ,'Pb8\JBtaiH~:DYo)r hʆ?L&0|LU"O?aM/y vn+ZC#ktK PaT+NQ#7}|X5l\>dr]OSsF7,BE YqYw쑴p#SH+=/aX:zli}mICW%R͹}&AkvCnI Fuy[1*XLO t$,HRfmdg~H8 {KⳘ<Zx]Pܵ(_DJQ+jV+%Dԣ-}+zW} K6 |RF& c"WPHhq~1ggitOHR_$pR~KSB{ >_V.-FDIV4l_^:8< ڨ(m,udͽ ~Mjvsw+D~K9zq#ѓ4F=j;vBԴ^M`!<`:UM<`՘I8^ @2(R~E6Z\a{ ೿;MxnDȤ'74?Iv5A+ aE @cqӉ{-F9hO ⹳c HۢQ(L+)oXF||=B76 8L>!E]0ãquE aFaf jҮXȧR{~ȞnJ.;ɐi(/ wL~nbvSɭfю!oYH K&U9[4PuFQ)2%h[ tԁTO)h=ۼvFdۋ7zKF"5m6a VFRӚSܠ|mGkobOP9?ܻ(f?nEK.hpfn~&At<$Ma(:0i~( B'1_.cX>6?>%Y)!3#WǸͧ 5і0Ej[\ўv&h N3x xx.tՌfKurU+P+(v=F* X u:(sN IVNf6 KvqM}x kƩ4dφkW荅b,!.Vr%N$^Vl3C ,Wbpt*YTiƍcC +f^wnm\!ZaF dpcBrB$g{"L¹%6PG9C?7-iVOУ7ǀIALmV$?pbPB`t(}fz椈q@~KigD4FÎݗ)L o ~,FSw²$JMK^BDy&-]KvT?-ŝ 1fh/&g7FӐaj0Q3Q mI]h|}S[t%:g[D~FjXMfIJo,$@NPzW}>eώ]5"/r6m"M~ɲ ;2Fx3ؤ'IN7Dd]׀UudktC㖑8[)5o+FDŽk6Tl0b.!8s "?XۦƷK~F` IR^hX^)T7~5s>(ޛC[Kѣ{yD0π~mM"㪾L]|~-tU,ۑv]vtV I!o CjBymO9GGQfao;NjucI((DP԰o&}TZI[˭?Al>kE/[12+B;\=&ۮ̎5ly=Vk>ֹuWqe^*_(=9d{-U JoK ȧb&OVU\-ֹi+O}3;:ۣeBŪdi`@rr(yx*ڨr&(4gt(Ķ-3c!7EMv1M%[#tG3V] #gvy@r ! +93FyM:3\x"$KAYcEHJ s/&?L]+Y1f-Ya%."y-]I"'9IP|?>-LKpO )d ? s"d[#66"ZOpyG9Q $$]G%"+ !#":x."VC//cmҖۄDrFqjj< .iюaF+ʯNexaP3SAbCbȫ^n ^ SW{,rrqp3$Ύ  ?FG쇸 ؛?ѳdҶE>V?;|ux{q6^DOZyU9#/f9阬M y#(Q;gģ1H,@3/h5_Yu(8i0&#[ `-Z8{ d Mz GFL/bkNF7C˩頕5SwfrcX:^D/ ߆Cmp@~MM4|g) aʤ3qz&)D&NZmrݰ{VxcEMLP61 8y/ =t&}C\S)tL_+DaI3P,5|T"Uw%Z[1]]Ahɖ)ԙ*ԩIGuYVnDܣ x#rMܪSc漩>#CEo}~Ys[ @.81cE*-ߏ\|Cمo+B@b:}u&iP꧘3Q})h]Y5\0ٶǯVs FP&sRiF'b P>gY63TNؚҰO]{16\Hfދ_ v8SWyD`f8hy4O !}Q}4-ƞZ(ƆA]xmfh?Sd &9jbh>{>U 3 :z(s,1FdV:Z%eXQ9梺f^Evr8Wضk8jgR f|XL_8:gF40 YI K:*`VQ>4{T'g)d{/٫r?p>cUR<)ţO,f!mp@>>q\ա3HrX> S^ruZo9B^t6~aN+S{2ivbD5ud>8#Ak/.ЅX/<<>UV% tNqn.k:(mRC:-1ZxD?qg 5ZrM3<`⯽fFZP2t1<].G 7#{%R)Ѳ)ݴӭ4=\@ɽ]k䊸꫚5<ÚKͲϤ  vIo^3DxP:f}*^E Tn6]j0[ a^ ܅#1p51"/ngR?zRJ<5Pʾ3PtJY&pV8x!=HOxV16U7%pdb~ mů5~؊Z=1Nt%dU#0qq8;刍ɧ?u(CZ3*rɲ[: aEh*LWCI=vS۶Wr#~ 1=# "9#p-7mla :KvpQ> I)#.Bbе ] o%1=K%ʸѝ 쪞.\T+ι.&ېLY$܋h8/ !L-Bs^:Y?L?!;x{,OcCy7(]I†3M]O""z,ߓ5ڦ0CⅡiyFr5wut~P8O(0ܚR5^%H(VZWO^g'࿾d.wN nBA,} ?g~"~e Mt/*c(TZ(.D9\ky3>s*j|5FB _' -8&XȖo7 vi}3[c"_>PV!caG"ҩE+M(d/Kӱ f51)]%Dԝ<._@q촬햋rD|PdLQևMaB++Ju=zsW4GA, f^uާ\nQd5Qkζda>5QWbW ?l23ś; YN4\6!]~* ӏXK711=ZB\S;#Hf iaǃ;rWWjsiWk( 8u;w1$<0[b}a /\ L⾪n'iÕZ |W%JW' l,5>TV?Žڅ+3F73L8@{Qa+SOlB<aSee6#D/thK#$]hXPS:D;Ff*4DS ӚŊĪlPH#]Ti1VL 1{qH񔁟$vtxio<!y͘n{2E%[J;@^)(N*]taئX,a5x xuVeE\ʎvɑ7~YnF^cïX"Ŧ,K_[q!>RC`LB_@ EڊcE7cu}"4NϨh]'`[}%F|BR9-l Ef:tR[zJ) jHBoR|U#Ň['Dۡ: ̎@t au&H+pf=v-S]D#ECU3i5^W\$2Rf폁>" e^5[LSP:PPY倞6f&e]%1!9qƻޤS_i`'XZqi2Y_(*?qgnQQ @!ŋxc5JNytH]>QRKvyɕTC)ýC%dV#f#I0,!Sd4$%}%)&8NކT}'q9s\k‚v]solC4b_ŨZ޵j'E}@l}{ZR`~IWt{#'|5_s,֟ obL$u?yč>b^?6>zކ :JinDѤӕ&ѫޟ߄~&!Cy5SE \laOWܟ[_Sb,[?~-!D8`AhE nUVON bUi5^/mq9UgvNx^׿7qy^v5Z$M.C\ $qJq#rG̱+] C0M@g({zЧۀLе$|H\āTht2 0?CZ.M fuddUf vR\sC,+*%T>>Ⳕ=r2h|җ !`: AThZqQ^=wZ])gyA(eb= ¿a¶hZl)ˁ܉FF%j*}kE]f.h}<M5S|5NV!JOwH3}+B SOPs ¬oDT_;"%׳ _UsRG`W/uLy.P[?vB1ظ(NL')h?VF4z%c cP̖~LCe pj ZL,$q>Ob4 +{y 2K/2Rb)XSV U}~D6x>A,(Msz>'(HڳyfS.W (4]j^]Vc.Rj 6'KGTa[^'%mNk)|5ڞ̰2xgԮЬ;$1!T\^nJPV~t2)a:i -J/o+|W@'1=W@DdBwYr)P 8Aʽk?k ԷLvcVqLlmn/ Q}'=Gi-[uS!Df-RєwdvoAL{o&Q ҫmaS׍&ˮ P"4:=ؿԱ>Qjz Akl"ƊhFC\f{MPR@T=L +s~}ٌh8ō7D^9Ap+8`dt4Wj K}%*'wͻQQA%dhV g烊?j5hsi`Rpn!o<#2-wSe F?'ctnҎGnGRb=p!93Z0NOߵDx- 9;oMe蹤 lA#ϥ;J 9zԡY>YWw2.]v6:&WRkzj*pkG݃8@JoƛI`םcp\F6> 3[|h|N0!^$/Ηw9ס?ڨhv:OF3MpMyҙ[6mvU%dхBX G6Oє^Xt5K()/ͨ. /GE+5z.ZRԣ<њZ᳊EۣMW{D hTfЯgʪSq*KM>=>Yꯟ9;=u[&[O,Jl3y?0dEGXʁ?;$F/ʁ m]q_/g;JgϿ@`LA*Q P Td~v mabpg3IbS9G'A@qLA+o;Cۛriζ7{mxE\#,ĹĕGdc\unkl$j 4p{fw,TT n@ O~vF*;߭>}`'4Y\9.#lOi"'{kO|}Rr}lONJ&{4 vQ$3u@ŻƏz#f;W1nzD[@B=QζaWI @&mHyr;u{kO鑢#C.LLDaul7hCG^CQrWɔr/U)Qq?߭^mϟ@3+pc9JLP5 Mkŧk} `4LcBl&&J$\M v[c{Of_>~|җBO #sK&ao? $Uys~Mg%e*PW K{jALD>vrtܚXcwm~D,զǛ…*ajOXڜiQX<ԏspHկonZ< ` 0$|]*م[/0غwg{9a*7Ekhw<_3 ߳(m;X 'q e$حj}V92:2S * IKl/YcEo^ẻnǢ,ldnhe j w\?. fT$}Pe(]8^룂l^L#Ylmk"N <%a8_UE'[d3wmPCMQd55 k`h<) tkZ{2 k83UV|y5}b91gCᝇݎ~ 3j>ehC9c否̻nP3%M~xlpr|s+YPmfjk jAL}\P&jZG D)_vFAZFͧb4\Ffbݱ \)Ά8<AՅ))1&)U磻+Q u͖=s:nkTaeG41Ia?gv`eXYsscR3&|BSJ0[+>`,R$\6g *Mg[[O;UjwlsO((nSR`uCܮ-sglE[4Z9:nqǩ[u5z?QcΝhE˸2^Dl#nf,(b _3c;)\zSf߬M OWhbP{E*me #Wz  [\_2&J҇@ ˣ:1T#`SSf˓dž-]ncvuX̿)=Rء),P`"([T=Xm}Ny9Ӓu Q;`L(o9;hWPjҘ7&\SL9)r,د{ Ht ljT3ĵߌS'`iN0`IVtQx#Jv[ZP6yĺ YʵvհуA MY!E_8M 1Za`vz8@]|3|5B/|CǯN9Vh4mJ_bxnr˜CJM,7鼳71)uԋ;}-(]tsbaְNuxa$G6_`gj<V3@mӘ]9nT %+L[ԷhPzTAN s8n^H*~7<CTV>YaGTtM.*)]W8bD:&,T[m(U74٥RpD+"rY%: op΅~l2.@BASL}e6w3Qy [4ކKHc4uѭ͕N3ULc|]$^f3%3w0| ya.C.Ao\\ya¡8v+iO/2+صZ7(4O5 n"ҧ * UȚXNp8a; ␱i}+7a?l1ݷP좠jX{G7-7h~sC_(%\2ƾ1 \tk+nc!{ IfWOdӐPdM1寚ez%/}SCv]5O*KP$GfޓUϔZ*Z!!OǂvX<[Hh':Jp,{UA6ɣ`.U};9` IPצ-Kl*nTμ@:zN3B߷Qh;Hys! cn1ձmPLT`m Pᝪ`>vف#/+ecY} )aVeiV#c81&M,=*Fv'@C3 "ؙ8p%S$ c탓"[TFc$%7SJ0!!raEhIW:-:T(ujU;c`o3n 8UP*nC7#cm:9%SBJ[A䉹 VQ~b=L/FMЌz.?Ӣ5}ĺWu#me?V_ .:E0{?lP)u <Ǯ9v}*52D 9qh0jBհTeec0X.}lb|B70}I?O}@%mXk8NVxatIS =g@5{)/k# ['+ڣ.8ۼGi|_ 7WיxLkv:yˎv 8iͨrḃ15])D.3@ַMԇLs(FK1F zv)YI^ڄ?@Fb/G5٣/ZP.ϳ _hSMQYčK|Avʰ_eǃ#6+l[jhbkŠd=4ۂ'4#L,Ŏlh 5*@CctRBr >^"mQ,p' ŵ .m{j[\ EѫTiZ y2"e!=@ !ǁ::V_1uWVHZT>UF5)}Bހ h*r #+P0ra> Oy0~bӂpv4[+[Nl x$_)Z:C]C(aUszVRs}F٤ =pY oŃ( Ey;R{,=v(Et 0jf5P"!'~LcNMK(lDi?1GؓM'IE;<%`f"%'uA6g= 6%2㈭Ԫ XHaLEq8e 3A8CE0$HGlT!+Iƞ%_1<UHNٵ|+@9f:<05ES`hR#yzXUiu+yy$?z?DK[3B n4Yiyt(Pt=4~>w: /p7t{#1Gʻu~DKhJZu짊;Yk##( ve"'VF=6\j|X,JUItEMoqn TkML{XlD{Y CT=<.ڿ9ԡ@B @l&`uRpQ(udXs촼'7鸘wٜ:E5;@BQ^]47 ~vj5'Yk vgm`lV|8=SvicK-1j8RZg㓩Ĺ!a1H-r[2irs@P4X99v}(0cD\i^fUz*+Twk*dpx8릲K0R&Vnb3 vAGػӋU Ж, 17X&Yes1Y$!}jVnjX#oKl&h#^I6eGgɺ2>n!i7sc?+uy9%*UH;CJ[u_F[RA^65!H33CH<ƁyjcՑtPMݧ뜙 *o_S18j8jǪaC-4Djhç|w,(_̯H0AZ~&1bSRi鵕ACƣ p/YItZ03l:$mLSLJD .8hi< $N1=;Z\ûkgE)ֱ(@ [/TI9$D6'\ZxP45Px Bo濊]-L8YtڕXAantBktvCCڌ@Ѓ17k}w<>a,\BρOmK 'ڛ6]fx\uKao*ʌ`ֽ'=..8c5_pU`t~HzwDo\!I*O1Q@ -Fv=b*]zDrrCs!14^2 G-tlJdcZ&r݀C :2Fqʄ ny׬<~b9 46|TpP*|ǜhks/˾g%㠫xgևHw[,8Z|} @1&K"78X4{ { ,n>FzA&+FrQH};gwha~~)&$=cj(ι|7 5; Fo \U;bhTC(n؃Bo'K=)s{dnOW Rƌi$B9wW"GsEu1wA,p$^@ʗwuRkחP/WKO@SO/yQA TɎg%39]~!r:@M;JS.l]V+ KDer "f<w#̏Rd-2Pe^pXPboɑOXN$^cnL8p<|!Uk3^,J;>~+<RC]fS}Cĩ2(H" e1f?YȗKN}{JƱN#gܶi*թF}1`QaR~%ys$q# j(1SG1]N&hۨL!29rgo4d xL ;L(\R GFe F >7[zܶ owg|)wm @7Ьh>]r!H:͍:Ϊ4?F%umZTdV[4%lju/A#'nt[ c Ne*Hlzɖtc!;C6XKdܤ"kV=Rt?U-/$d`Bʔ )!"mD꤄\D/fb30Lvt/a={۳G`L:Ol蕦~_Ut⎣ILuD h@]&|ueJ.uJ`F lɣEql0'S2 gFlR*)Yrj>9`GAed} ާGeV[R:(Rcyed mv}%K  ]`Z a:wkKLI$l? 1 p#;en.WzwgedCOl.YBLu7W_i` I0~<'Zi/b h+U/|Y9<Lh KPG*, `$3_y h{~e0Dt: pt%)ɹ/̌Ѱ0`)H;Zj:wfwcS?y0 pdmͪ3`feKfv|8tݛdT>i~["U0TFߙ0 ,Yq9Mk{-^Q6{0lf)~?lE*QEHL=L%b+TX Vxu5^3`-Pp bɷPeSϲ!Z\0eJ pi>%p >5^AM&{[pNQ߃ANCϛCnr"=mWÖ5i75^j6p!Z)tI*'ݛyCjV^arHv؎AH"*3%`sp4kz{a&֥ZJNGhρ“PX؍D8?QF(+6тe6}% (',m7/t8E[Oz!ՂT"i~fjeqn.dC;φ`p u7V_jA\"(cWѪKeq7`e%&kvvM˗ۅ' )38̝"8JDB$f |)zlՖvD–AMl=TGɷA'9"V?PK F;RKY2nZHU͢I|W3 }C<`^@f_~8`uh'V: q^VUAWsWNӦmo8w^ Ġ0F.[irT읬Be- /]kxD %":.ic F8=}#t҈IL5=eEK|V)i.siڊR `BQ:v% mE(=RfݾXj([]T}JyJsMe@%Y]\][7Di>s7s/o 7lv<̕oJrmv}JDOI|Ky},@Q[2drڂ&'q(+y"S XY]aZdBBX6æ$,eR9 ó&_*/7( 6:0z Һ[Jz"",{Pf4OA|JAS$_۱:~s,#0A'a3&ȃ'ǂsso#WR 6EiƧGyxc5TQH\~~cQaNUxFvELa;m4@lHdi灄⅑ o-+5AI"i\QY;c7Q.drL~4|}s-8#OL xSF$"r;nB"mit/8Pbo [>arzQ3?;`!!WgW#K6,}nFtt5 2K tBRϳ2,_[UQc^O_(̣RG.J4;!87Ş8=jiHB_xPy9 w.,4٩A/MFw@Җ TؠkU{g[m]ty|F~}׆-Ϯ²w[IYz^w-# gsQگRpgt _e(g6-Thv>5vk׹sT J$Wݚw髟֕*'ZjG^̛x@hc/ɏNΫ2x#^y*I-\+xzͮ d}GR]DYk5 }.(Cn1X:7@Yy1?`}^da]q0A&Y3g6ySfpX(#ؙ w3Q4I)v0+߇!ǽOtnRZ?Dԏxj369{e'A<8}Awp󕸀!("3~Y%eb[*mCER=5XmǾjpd}90;jh(Rd_sqe޻inCXx!ɈfhB˹?xߗOې$1ADaIUlRsCZuT)ۤfkfK`|KNG1X <Ia:InmƬl>y>y|l W4䌄L AÐM{f4 VZHn.x稀ٱx(Vf±  Y5{[Ҁ.5wTk`{ ];ƫ~RI.k.+{h],Nч"1#:0 l='k@ҲX4ty!%OǎH1"ﰆ:cG ʼ]tCe'w~uWTQOJ$*Mw/ULp4-0FwDDxiLmR@_ u\6DT _{(ZZNJ9RDxm탫#V]b Sxl>/j4OvU\c6X#4ޟ}N\~²adU<~+RϛŅV>v]0E1bv.il!Ч)6~h'4" !Kr7%BkU<7ؑgYֳ6\5QHEAͽ뻻PnM!igҵ,G y`h((SEdHr`Bg\ZFة&{_a-3*mඏ'}dl&ޏ=[~)IoΛ?Èfa< xeMw`A{#JxHBCb`GShgXZM[TK|X=rĮBE_1dYcȜ`rOIW2&u$[p3 @_QЁ ~u 3 }SON-(?Nžs 4GK'9%`Z3SbsC#q` F î{zY82( [bA۝^6kv+"ֱzJܺ(: *T m $[V#FxF}WԹ@KE;Kі"{Boͥ3f!DxJ>QQ20i1V))y3ztRn+$3ZSI7hBW]&Բa*,L[-&m6."wTjox2Bw! fgUE$FpCVar%qO7\ݐf:b&C:ccc=â͎!#@/ExAA52"˲x"' &R'iCbT![5QZ$PHz0RY>gU@Ҕ ?'1鍄,T_~'.%j<>IS!!sB;Zx4AȂ܇ϓgy2gfa`6QMӔs0b!o+6ZKIl=* m)_:v+| jD W<e+odlKԊAel=mP_:Kt1KKW@@s>D/d#ZXXESi*D#eX\vڽo 1`=vvL=TBqZMJyK&7xWV㊤b澃E7L/!Jݛz#xRNK|VUNwh3 E_wMHባ3U=Y2ͯB7>1Ib).FbtXX?0v5GGa}2Tm-+8eBSG◤+iPFn'9,8[$'|cݚ_u਼3.e@d䳲AG6-vݭuVzXbJ )a|!@v)|wF{)Ng10<ʐkY;"E캬}d)M5.V9ᡴ;)!!6Y_\@=뵘0.k7btE5mG0 ͒XțH7wZ'؈'],7X[J8Aڰd6]l"xEpӚ҂AP% nq6qGty$5c%*XԂs/߈9/YUwRX ZDH[HcRnDkZx;eWtoiPP"*|Z, YPʲ)%C]C~ 9О+IZ?)A ͂*O G8N_6;2~X:hJ5 %EX6do }ڟrI;1+Z[Pì Va!_ƠPU]Hvkܸf {r@U+v(F8aH )I+W~-?SWHz̶,C=\dz tP7'a"w"I4>B<єf-1((Tv$x)t .%vFጡ\jѰ 3jDzO;D Ğ],Ct̜µs*gqBn`#0y)l 0iԞ&<+"/mT'BWx1|Em>xDؓc>#TG":ڟ,tznFtVA6Nz3R(ۘNM=nkވ_6F_)΃N%WBO5^p[@9dSd.X[Gb Hwrc=>Gq? OO),"q ]9$X;WrXQ!߳ 0+wJF]1~f#݌[x8O,{P I7 k4ZtV@9 5Zؚg97y' &*ܢxBbS _:ӗz=)*VmQ^):r5B`=BF-Lªʳz]d1E\C}N}zߍ=R' U Cу" ✷ "VWfd0)oޞ$HlQp@[:_ߖ Co]>k/muʰ_}]x6hK;y1UvdT=i2p`tLnQKsR>IM@R4B"FhG%gr=l.t.rR4ǺB$%0E ,[=\c)^Sm/NY:M)D$=_LB0f]Bi@j] H1ëGxzOxٮ0ʍ2z7,'P=jĬ;QƲ2"<toBIʶ *~JJfc#(&?֋ÂVh )z`{yj)P2Y}4CU•Ar#㠢oā>|ObkWu . lFj  f:K2Jmp/%i09DF{1_эTpш ]\zb!}C ȔIE%^!B7Afi͕Oyjdk3 cipb UO ̰OC];iy[x9Y묊RqWt6E V,tѱXq;O]J^{]AQP[đE_l?a3y#AgؐBIKUL*3MlȖªU#"U꼯 ʎ7|ͺX(IX?Df`Q@Vdf 9 l6 犐Z[PWU㠂+8 <֥EbswZ eXT'u*il1d" F:@SpCFM+f`T>v͌|oZ3?^M÷]GeuK:bӝ x#C*l?u׻xock<"W~bÿK-Ha|ܣ 8q0uL`b>@JZjr' 7ρj11kh2fGJQhxc>2*2BA_ U*H9?Sq ]ji~?61g0 Vﰇhf.TGTQ1{u)ty*T~aW4u,t}.YkY ?mRNF"` oۑrpCig}MD!;{ؕ; 0 {&n~R$"svsý5T b [Bct)9\vGI),o讟= [oD,i~㩰b̽v{M#z#`d}̝$)BPY|(&nQPڹ)ZU0wJY7}t"yb-'@5w;X_$?U=*]@ =KQ5"=ŮQ QJ!InYIn`bEFo&fȁ|֏eu|m#S<O>q4?oFm4 *йC .^׷;}h d С /m8qZs!-_09V0%46IٸIjP>+3BalQnRz:К]„TnCLL{OPy:0Q:#rՏg/kPm%P:4|/u$d`5h6k<ޥʹuX 5&N d~3 .q8ӱ6n^}Jn7=MD6nw'4A7n#(_Y}+`HѪ1u[5yw/ED027ipEHC htq_J \Bb(?NG*/Jƕw%EdǓP4ƛ6a$Y2cx4pʲ.z |WO@N;ZuI- T*"op 5w"AB=m(s<}Pu}/k|f1˰+Qz|[QҸbF#ǩ? *dX 1w:NK˖ޔ3,>4GvO\8_}9RBKo#VFNչfpH@rT%Mnv=˔e-&!#;44ѩoWKYsvo=M"X s r]$߰K"Ꙝ~OEuS p1?ewJԶ„Iӽ=q^Z \Bϯ^oVR{wX _1eO,_^:nIp4c~)9rx cV%պ+4TqVğ!#_u tX/~{6=FF2]ET[`Ѵޔiü u1-(VV]A=<WI ѝjΓʹ!>Cͦ=v}T, 4s&LΩA3V kBkhwRbG.oyT:x>&Bj~cT'#*fGK$ #W?"_ayfYZJ[^X#R'B[ZYOI2JڶտXoTb,մ)}`D#Ԍ?`q${\N)ƽƁTBM_KEH{B%-0QQoor?1QWɴחui\=-d{ 65|,CDf0;bkg1k$%C&eK"%,*bbdL]q"7CX+Vu;1~6q-9S>sPD85=rөZG|aj}TCUځaG#4FIuW\oޒ)7t!?K Is@@5&]h.Lj}O?>L0'Jai+-CC}aL. SPAU^eymS.,ý`v|HBrW9bk;2iv%<:XWM4;}6ȇ d7 OZm_~I6u3F)ԛ6M)twy{::VDzld52JT7ȿL2ҟ6g"\o\SefCݒ"P Eol'AGf9N~!-f}^ a--'qcjJ/[Z׮,Cqp4`4VPID IN{2O)tҙG(P\<}{F7<^Ý:Aun. ͝FiR F6 =/0j!re߇#,}zAe6רּO`}oR6Q^ud^잁t7 [IoE@ 1l0%<(rQs{d3\įTcP?+-2 K)nnC]1+ZoOZ,{ Ec}TubK;:G6 %]Mb#$g `rߌ7&U$m^G]>#|;SG$5g&44ޚ8}'~]};l8E3g:]&Nn>L>%glώُ1Gvzq,c6_^3 wߍݸ'dIOy ݹj[ a5$p&  e籸?CS] "3:aބ87HX|jB>N*W]a[WU=^hHraG*l+eA3sCMxE]+39 ;Ko6FIFHk dgox2{/BGTމ# ֙#B{hC 1;jerL&vߜI_@2p/*G J0}qaǕ[=%% )o`QBk .~Lb/+8A n|4+cc@jJ J0 Z$cM:z֫چ^&BXSoqr$ěЧa*X#6I-_ Yιh/CK+J v ) :<5.|W}1+Mke,h 6S@]~'3{N2DT曜RAbWM v8;>9kf#ߚ.(z6L<2)=`8PTDYXqepPQ%5Ϥj2N `;eXn]L`Z~X۔zFZ #ŪbB1d1  cRzV(p7Y6Ĉ !ka(O_hoIL&+AQxRGgCh('(b)Kl]n-~ 7A#>^6)GN!TkznNLxI uJK)!a7N"7z>Yhxf&kU{5:6>cLᤓ{+wㆤc51`M2\o5G㿋Yno@( {h6׭#[=;4޴n}F& `a`/FR$2C][?\NcSbaN:UA0 ץS= m;X/h},?G< avyWfɒkה9)5 #s wSdN!aFƬ`88QvӨYta]C>cjצ4Nr_~g1-4vvk\ kLy8Au\45 A|,68 L~A`] n1ݙpٲSJ3A?<[NНmԧ+SQ]4cE+{{YQ1gd?qGezZMF@.8G&+4Fծ:!r\ǣ0 З9폍E9%IVκ'j nKhj<=VFFq?wVYTEPGt 4Q%`L6s]Y9f38]!!p4_6 '}Ay{J6+֡OHv8R(vp VC0./ &Mn.*/'un%ep}β7GzX߻Hghрԣh64WHXcx1s5a1!EK곁5 wPXRcy7Wٷsgĝ&_vZNPʣ-r8 Tд N")b)B-Vb0MYt&iY^H4EsB2KP2ΰCo骿C9lv Kjv1׸FkMNLU߮<a{Rd(^a\p]9hOd7Ȳyd_9څ*ŕ(Z$/dէXٴBTGkG;Ec4#3O񋉭rrY%EY)cn&µ! MD>8JF(^FߌbuLhg, Vt]ݻ6C>k4 lz8"9M/Nlok/Ț:3շ<g6g4:@'YsǝQ!izMa~ ?QNQ7 = Ϭ;1nmp3LdYj҇VF!qi(aEUWyXC$$/7R&7L03]~(Ө \=>T 29}I[Mcoޖ;~9bWڨ2d¥^G%ZzcDtmKG@e<+m ycJ8C Tujn|cV!7ز]^ 4Ǜm[A|- (=im OM[6T;J( .kՍY;QVh~FI TRyN~6гEo1+H J/cM'efB{>?jnD ʭg+4.~$>XtKMmz,V1T]D%] xwyd|r DTo2uLu Vz/$9U_,#%jмU&L@*qI66^0T68N(@!Ay?p#j4@w:s/_mda$z|j~i@tc0侄bb84 m? c-b3-ɻԛ^w&JϽZaoUv8 ly) ;%Hkmgqr\D%hҡ=TÊ[9Wqa9ᳩ3FtTMxfWmҚ$W"S, =F O؜kB(S|y^Bg{!.Z)0^/Gx&IƃR놓5IE*e" ~f1,vݓr/4u~'WMq~ϓ )c.= P|o&~e&c8=쫕\}\d8TtρW™-r3lF'Ʒ剥)`[x61~5 j~|V\'u ZAGuH+q:bMs?aim2B㩊jb^bV+0e:gr,lš\u"ͽ.J]te 6Z 3H؞C+EśߊqO78Hv|-)I+5=м\T boD@Я0#r{LH$a$hYޡ@W'>nR'@ &M$3T)8=9s3eⲢl4U/k鶆Wjz+<<[%S¼TQƉ? 5ޤi5uf-#17? naz#$m0Zh!TueõM=@͠'|@5oǂй dB,َWwumg!Q@XbONpm |'Tn鍊0F+Kx ϙf1l;lh [&TԳL8IҳD _U3r lm#gfjtB,D8̎Ksd7+>!= w"sDWJaHƚ-^B\TQOa; f&Rl͇c1ߒ5fBQXtc05_]PR:J,+v*}w%k5)Hc0G Rx||SB)4zLKşc0?.KWs}*:pkCa?.\wl9lZF #3i ü<,,hL b5N'~@^)& ڽ鑕r_-Eu4yP4TʓFvb4Ȃs}M̓;wo"9P&G۟%!ru:1"e8aBur慠5ཾ1,hJ74]4φ0ׇ%7xYK\ sBw ꊔn$_ ue^ڟceHDkHmԞ玙N%gB/Zm$/Ol`i~9f);AxcDz+k8B*ӊ8Op]kv;!k~XѴ*IK;#֍Ya*(DLտ] V%h"Zx W5"4hr=fԿI}j>|NqHcmiNU5{?k;dOwhYUu.;U5N28A]ݛjEv&G+/e• ^CfQ^X&R1_z6{<0թ-UF{ ./~_R>+Ƹ?^omV Y(n{F$gIc1cQֵ$&-lށՐGfx:h?$鍒%IJbw`ʔLW{eꙄTE ho9&EPmU@U4!ecIt=L IܭtjVTejV/(̄]~ Χ'4&Lz; Tyd $: #}sPi>R8NR_DjwdŒ_*d]7.{i#p Y݃dz&`B2DQh.]ubt5|Ӵ̋\u?ɭ> Gt2$|eإ > &:KV{0溝X-h{YT7qj8*Q!m:,h&(OV흰g5GRTw-á(Eh0CRt (c\>5;S2_/RjT j> 64T/4W-+*xP0gbfڤYiIU8~L8v%HHثfkk477hYYAW߬|h@qh " j;~̜jJ3'%hkWpO8- ldb ~#Xwpo L rn(;5# i̽Gg_h㝰$.d1t:t%Yn)6gwWI{!mfcmNFo&,O="zdI"_՗L1?z B7Wiq^X{)-+uك92s@AE?9㟜ҳ㠕\j ;6_Nء#>VU :HKs ɮB5> QGSPxc1n/`8분n(zm Fb6 A167ĎaKXb$,Jօ'Do, iB*^@[x)f`%e Q2Ci 皹Q/TSBZ#wG9WxQ\@1ԮA}dz;yNAm8tB=-$ K_XG=zl:Z_?F0->#]&u疤(0Z'TNàocUAޭ%<µ yQi}r431yg} Ρ"O_ܳWiha|q^U>*m n; VBbU]gW~ߙ+"ZE巿QݣEUOuXGbA-4Ke+q#˔/U. Dp/&XUԓTL22@g v82>dh6Ä-<x}6֞d̒-8 N(8v2q H9lEX- ݝt8iQKbUpq7{x='[㱎w#܅O}crAY#K옩S+Vk;n#)p[lmUEV+Iuorzjk RZQ 9Ǻ7vȯiDrok@]j%1M(}\ Ud$~@& .k:'$r( y:}tٟ*mH˪֛6VDr`ݢ^Y,c}oe}_- +v: 1(kۏHKB j;&6ƫ sJEzl\1ov-:'-}7ΑGɘa/>{&MV,ju W*yTs/M k,wx3F󇬏!a:F{Qlׂ5(nAzNj!pUOrJVuBjTј:vio(Ηi/WZ֑r>Ab )b||PoƹAj rGp]kJp_Nzi+wUWyJՀN=&9bt`n0殲"*GUrEz#1hnX_boJӧ|De_6S\\xhH$ ~qéowX"o>,P^Qvmg+|.SU53?nk12, u mRT eﺭ^Jb~%/'UR#@7[eiRkѥ^ 3[PIk¢hNHnx֤=jilJ.ZbYn360@tQG>"_Xe\`C0osD"S$݂RaT,NMZq-,ܓK)Rqdkn SyZ8i)xm* J%F<e)>3tη-ɝJìuHdd%\"Q=?CF>nLSÿQ Z4josדCyA=Bl`34}q7o-s$8MHoLԢՉ=&\Y]KCvfK_ W+8&Hnbc_oHYҶ.y>1M{>M>gJJ#(h3?{Ͱ3L>PJh1snK(э+=瓱er+=Lq4h!քĮx2f<MqB~)uk3ִ1طEAIf z3A#RSK_'94/AAb._'Z&blW®fSuu.[;bґ ŰJˠ2KJX[T_3tqVn-)Yi/r{ \.-@9giBU]LCΕȒ83d/T5p*Xԋ `/$U)Lj\hҌ1t@8ei/υVę'ݍjMc:G~NRGk-(8L$)+J /bh_8&(mH[̢wRRJ/ *Ƒlq֡㚷7 N8t,'}{OЧR\k<0~_#ڶ֪/sc` /y,!(p_bWbz\&t*P>}H߻cn͕ԩLQiu D BTbClQm_bBՎYE@./V{vx-3}1plAGO'9PxóM`RK3zi0_P[N8J q|5H }%c7dM#] NL $6ZxJ*rY5*ڡAW32O1o-'JV[h|u0PB&҉qmqȌܸ1I2Xa%z+M@?1>8CGK@Bϓ vH?Jψg5 N)`pld"Y&cXqı]iH[/?x|驙Zb|>*2MO%^.MW_<6OLXR*?VⶫX.DK- &1^xb hB{Gcb쎚b,=.{t] mIBAT5܏ z/qmlk>Ȟ<0dM'{3wDIR J0S=m'FZsO[R֡r-t]EmODޥ+d|>>x-9'A(Z9g0&L.~d\,mdiyfœ ǜ<#.h]S<~/MC{*[߭cb^O8u[7[ޥ e ~pOtN(G'` ̙)BZ Z-ҭYcZuUc&8V 2wk_bDDФ:Udt{xK>O$U%r5gEV4F׋Ӧq}IU H k-e(;N8\ԐO qU1']O9 %1'i/XF)o$E7L. J;bhT?Rd{QQ,,W(%ny1+4Su_ǯ@^ܴL=!/>2mطxe儲UMt\/*Gǖ=_g]}s6iF$3E~>(`Q"m\lx3V^B,DU cCN斓xr77g}P mk6Q5*R2 !IR(AVoU\̫:0,IBnuO oXKѤ޵mRdY]Eu:,++W7&38Kc.(AdNKX\I cXo~vM.iϕV%T,Șꂝ6:}/t..Za !oyS?skܕid`Md^)5 +<_R}HZa-iZѯd>ܶ#̉B ;e8Ev9 f`JHUx.:nd7([90ѓ<V ;IATC9>2jl,DdeB ,xdW(T,wW [Rː J6&K4|D{-JC]vprj&'¶4Qy4 bbS70J!O5 'rE  2P9ݗ>^Wm >.+ M\&C0p~N*Mr T]np䔍]4Rبˈ)6"􅅽A x֌ukfD<DDt>=Lj Bc T:>bN"M?9~>l<1+ӫ ^!,ȭW5b#ESG?g'=7 u0fiBe[u.dH%Hҿ%p?Z $@*WD|.(wJ*<ESaoF't4o*ʝp D.圗Oh!Pr #cI"7GasX))g$XF0"IBzzBb+!=y)MHC_3BoչW}a.ݨHysrU& 8:kTh.'0}ަW:#˧{08*P3h I L'r:EIM j?Çg1-ܷqia=x b,Ue!X S) k+9whC#5GRݕj} ˛Ǻt&K].% =,R)|[ ^kJKve#7ٷ؈8F0JǡyFq5Wa;N>V #G><̰b@MUyuOewJ<}BǦz -`GA_0_(dz }U %nkauz_1ga <_'vە В\Am#7e"O89)Jo'%.xqF9snƋ($U%q֢g]|eC-BZ`&0nx1;Y935r߇_0T ~hmߗ k8*L\2jc >Y+k'p0|bg=]C5s,SSϡR}&%@i`PLn"ĝb{r';H ลaA #pL24H(`h[~Y%]u|<vB)/'58s]]Imtݧ sACG̅)-4 "2y/.Z%Iߘڇ;[(o]cmg/e5y[z&DVRل}?!A#՗b^w]Q>Tސ lR!|{ʩ(C{n3-dDLdM&_(9'X(QۮOtz8Ļ?Se,v6ʼyCj_Nd@;0]u{r ! Ht+VςZ±},U RLAs:^ad΋̻jfX M[C0-\:U)ū}'"s渳$ZYi#B@qV- пSԟmk!y쑭fK5bhiPm_LrUnԽoe› K켖!]j/qv0{18$Z"I6Eբ .S~zp2(Q\"/O@|_'qAT Po<뢦oi PAEK?n.@ l =\ \2SڎUiڰs*Iol/wo*GcCnPW>@C_,CQ> ʌh9> D\W5)5ƞ"Z('ķy^{v$z3]ayf#4; ?B=M_13+xҤ!T 7@⷗դ5 aby/a{Yx&ǖ>Z|pZLvvY7+mJ!}hBe?UchRW{sPZ3$Sng" Xɳ`텅wCuyZ/2 a(Wp4Υ0 JxhVY8*>O Mäz)-~`+J>BC]duMW,̍bXjwP_~T]9]l^ׁ3>$hH{idT6$M/{ T\Zwgb] WOj!A/]VKɞtj!W6yzk-~ oe$$߫= ڢ}N뷋DKo,խYsr7el+R1CJhUrI.rZEh᭭ӭOf;t7Y4Dl&ID|:rk| 4YN/Klk B6Q ,)pAg^VGi;]jdž s@zi%#ۤL3NX1JFyJe^6ՔO E֭5X<6`_Bh59Dqf9=ݭ3[ P"1~J}?̛#Xs]0%1EUh@D*9"cE `MxI e6:m8i ?&4|Qn˴`J zXu֮𹖮꺼PM-߾uΚ{V˥ZюciN>ㄫɕͱ [akl= S(jz"фOߠ~SrBu|윻^/M#F.tބjZ^1]šH!׆GN.ǨBe*[m pVg) SLP#R6 &J뗵z1(iQ(;"Cfl=vLSHwx^m)zd Af(q?niQ^ 3A0]mi,(ű{l(j2pt4ϷO*࣊"P ^ ;}@p@ gS>@ ZHw$UAw0^~ׂ1awN8AUbS3@...4.G6a7= 4%QZOp{VL7LąקuCS&\%p KD-(>KHq%\i:\'lE}ʱt0!bP8 cH=adjcdx.Qpk5xm$-d?˳-Qk\GQ" I)zӧ3Hsq]H #s'FtԫjdU'=dN΁L ;JU TM#3-s ދiMEP0^;~@r9&Ę4f'_Nv{l:dyD4#{zNzvG:qgr|Fs\!o{Bhlop#ecR._^[!V\':0A0:-)5ɿǾkcm-I)obR0Q6 Du ؗAR Sæicl#UU ؞|ِ{cR }vj1%!a aS"9 h a_WVZ._(<Ž00 $(j,7Blwr#9Z Aza5;GTR"!|AY@F M 'dd)%5uǝa3ٚ 1$~2( VWPpD"i3ʪ >L E ϩ`oRsqw \쟙7>SԎTr6WD[|W˒ox~Fq7bC(>-,!91 ]bs@@᱒WduŹ95N%'B N}? GOFO}:SDEM2O*x5.b^9okX@˳ vWW)?RSa'}L&Y|$zV!6@|p'n+}vK &j49 'LG+8cWpyY5bnD&Y]0B8Urqf3 솱 %eqtky%h1})ZZv6[uq삀-]<(|Hq6=eٻ["䣕,.ASzv{KQgyB3 ǫp~ѿNe8P%L&Ѡـ¸E=IBeE9$URTU =Co¡i w%?o Z=uaXCv}ɨ +u)N?ʖ}{9c|eA,˾[Vtq6V]RIn s4s 5QN!LHGVS63i+:p, JՇAq}hPK0SÈ=HP\d\jp(7ijb qtPm}U}SHV_d= W4w\ ("aZk(EsۅH#ٓy0~5in< >> :z=)}็xPiS%FVMv| r"}Cc8>- 6* G9+Y (VdSO ʸ XY3Qut mhMCfQsR9| N` 1:U9}p,|6%zo=|/8f;s;,ON$%j_3ye#0"7:N M|7?32.U lzEΞeZ¹50kȭPX D~OUɹP9eZÂJmQþlU/P%YfkML[KRZx9C3j,bIOUg`@| 3"7/J$sCws$#x"C)VuHiemI VsGUyP0GZw !i(IP 0 ވP1凨x7SZ~U M"6 IbO e684dha>+ϩaG~,N* M_Khm1ZgJHbW8y5 zs?#ṯ|KNՔG<{L:5d7JcAJNp\,IƀOli3"LQ z_idj}d`8>>"nWa֍hjBn܇%m;{!xI(H~p=p*2=}uȚGhS%c"h;*vz;j`mFP0{t3:{Niޮ'BdY|>i VfJ, ϧ !m~/*!NrƑ5d*ܝJ6sq`u"Y/Y}*CLkQ݀^q,G80 /T|H-+rfg K%Y`Rs5CGZUzBSmDEO[0nO?rb`DND ..>_*~ύRIS{\D"SK ] KabdK6"D s0DZӦzjz95a)W"ǰW`|As؜J ܴ(ݾߓ<":L6G?U줷%+RTYe+=wsi`2y)7v'Ĩ!CB̮NSdɪYU:ɨjJPDOќhDFw e` !F@_!d~7` `0Ē{wd|inv;sNAӁE`WFT| 4Ot(bd!dqkݦV'Kwh;_}6~w-C8ݧ{E=͞EC7(Yl9WSK0:42feN=N:Z(TȘpR)c6S2-_lNV{vmӋL㇗wʯrDz#Mߠ4sm.~;?ŽtA'>>*|^ [0E0:1A\&S/;A@:_- O ~ k]5oJ12a@T',,܎^_a/|:W[l2bf >;%  i@ t Zp2ޙhHIhLtD(g@#¼MnX.!AX}dbHS٠wHH"UՇEXNP=CjqAh( ;Q[e?+L/F nQ7J1旳 h~HjTkc%T)ٟ_O@憥Fv(0tKóB0` %?G5dJD>-,d˺5doN΃6b*m}qjƩ$̱j_1/D*bB'R5X•!Tg=i*_祾r1+Jzq.Ssg.!K6@?>ªNrF=cyo+ih kn'V YĻX0Zj'Rc[0vPFь]$SjEY֏e+_>gM3I8(>|73,0'J% T>]rvAɴAhhe?.:5'q}Vl~aUvNӰ'$ǐ3aZoX2)^MGT QV89ǡD]]`_+w&òx|)C0k/t7#54yYl\@=uA|}k@@ʿ%"݄u5J6q%OSjS ywy璦XzeĮ ի`ֆZv v> MRU ft-]3m ΄4zҐ%ǀk uzQM0tlj k  }k&{ܥM& O1=uS KUMKeuKs^ v圈oܦZNho@GP~ G'p']"@8pnh|b]P3l)TmAfI6}U'ò-V8OQQL$wm1!Z--spd fkѪ ï0čS !n׳9?k4'YaZP5Jc_|4*i#б;ln̅>b r#˟raL=*.ftR_-mg8qdjQ\@ϴ:~Mv$ R 9%=ocn(=X~TY%*yI=e{VBu Hzu~,c 4y TaVDv[t~}wC3'UiSa&zA !0WJ}@y^̀ΣƂ޹OAV)?x5GSIu )ـx>AJY?;Z.S+[~tQSXr<<[Oý[J\E~ǮAdSj1G?)SIue@} ?0׺O6/.~"(FG"v(}?a8\WRS{QcQ Cϱ zTA2g4Ҭ57b $8NoYo/0 iGR>1ѶXQ?6GZ;W˜,qn <țNne `rohT9c9Z:^\lwh;Ua\B!gFX^jVOo6_9:Í s;V2+$i}_|^a%_l @9qi- $Ӊ[e ~c6R!8VPpf:|qzyA*/#=h"h:Ro2(c*YY] ׏Xs5|fJZ P}>+'udi0༁IN1 t'Nc4­T毥@E|4U4.| g<5M_a&NM0V~CeEZ"XC, rvϾЍcܓhzbPACr[]pHמPF۠"\QF"0G;7̚b<όCҹd[CVe=qLLm(yO.д;gäI!2;ΕC$^ֵSEhhNSC"c*|N}FoL_~r\hL$NtpP{1 p#xL谎p7N8=.GaF:c3"UпY_E&ȅ L[ߴ`ulOWh޹ 8_q{CŅSӮ`jUb/X`+Gy4lFDp d\kpzgR} iBcrs\IŷԻ0]vT:8a([,۽37Qn Y/G () =4X2{3,On:|phԞ3)BJ%(ǎ!Jk|*T=iM{n(+e`SMq; ԾVPZ{=tgJ兮nv՗߾4W@9!ZX{zZ\]R>]|ز&IM2qG#P*!Gᡫ[7KqkgT'4p ,dXBY$LZ,r/.Wwv>k<4HPaësGM*ɾO;5s?Sz[Yk'n/m 1f4{f{ ~[ET2}^dnۜm>Gz5ԆY |VVAA#b.K&=VB5!IDTǩB.Pv[xo@sj+sEO xcA7?unٍhm~!r&O2T>di+Xf%R2 `)iOwSZV";1y[rHě ,bR2j:`z/c!IinEis/=͹0B{̈ʽJ'TqQKl,d2QGܧ1!T/]^Hl/< ŧiLoʻ nXp ! knd;ƞum] '"w3=ā̮%W3rzpp[lqnnM c#/1'@^ -h)A!$p '^rhmu1L)kfv:ccz&;F=V#j>R6O4~iC o Wu[Oǧm{G}oWhFpfHB:g6P1TOe]HxR$W Mk7l QX)gSfG8]Ig!)Z^؀{ _;í^B9 k!LXAm/#Q]Z6I3Xq_jqBZXNCqm~;)רHybaR3Gtk#$SE-AI!5}זoc-$xR4:s Y%W Bīat:g&<Kl],/s 13e«yM<v~!AaLEyj$(+`28@$`4/ laH4 ]z}0STћQmPFo8$28s@gZ߄c2~j\tNv.L5h-<- G:gNso}>Μaq.3AmvnX֢c ::z_;EgtR.#phw&)PmɊ_Dp$,4nk4~Ĕ%?!S:TGdzQ57,k"F쯳~Ff][vvbEv@"w0h =uK bw}5}3;vTXJFw0mّ ޣIisrHHA4ʋ RԐr=u>[g('N* SMY8sc`ÔG\,yow SwT͖2sD &^ r6#;lנG| }k !^9+[7:ӿH_R f2<~CWq(n ^/<; '.dp8TU6tT'fI;30`*uS2kj⠽j;@% ͝JTф  y4lO| kq.6q0h Q/` wy=ArhM.©&sG0ѝ%] LrY%Օ2&3QF)Xa J,6m LL7èqGjo0ѾVJ _a~$*cpk`6%TdPWwwu +pX58&p٣j'֥z)j/yGo[8,ϷzJ_ztwQȐgoN!TST8/x)ӆaT RbefX\<?)LW:cY  4?v|@ۖ4+ӥ go=B2E ܀;TJm5~^Ͼxk6eSC|:y)9azb\ehJ{TOq>|܌-Ւ0~`.փ^&΃4eYF3@ 剘Eq3˴~/X1}W0x_vEg@K't᲼͏[pDvBc\ո hN}74> 2ޮ|(i" ieFa;[a/p 1xF #vmg뫥0xz0'Y=H3U˟pI2XT QGO6gʃ|k%gw ^&EwOڜ"Sif0̵ HínL_n(©畧b/1nk;[K=i# 97hO\{nzDJ(%%6jlqaۖEV"D7W?QOXtZΙcs[Ak)IcnG3k:;x艹ykuӝ>0Ʌ"bBE}!a} swet*|SpCnt[Pi+ca!\K/׉_I* iV9s-r,/Z9exvF2Gej ۺh'pc=o!@8maNkz6LqŻ-ifyv^ԑD&y#kDk 'tO?2n0ԡoovB=[TmmdGK$׉H/oi0`:Y!!| eA}bj#ȧ#B*^^PI誳b{eSZ&KAmw;)9*W|bη/2kIF6WgeNkd=U&=ޱg52i Oؑ{&uٚ ĝͰ(*TaadE^ӭȁCc!3Qb%H_6{FE"CQ] Ր9V3)Ɛlymqjԑt&Q>J05}ɬYVى8QuOM^_G5{CUCnxŁ&b)q1rrmp9׮IaK7Uc9 qp3jH0n}O ۲N|kFb{?:2K^V*G$YdT3KxunuGО5]QϼtZS NxYJբVTz U-4)z,3p2Q[d Hn`q9mJo\G@wWǰⲹԓ)' n U MD5Wt8vI2#'${Z%kZuO6r:=6K[UhqM?O09dxH>a4%X 0 9i]7C])AQ*[R$S,m5"Ŧ- {jBˮBrl`K_uϊ [Ϟ !|li8Q0Nh Ј%ïgas 'V`@Ț%Zr'kH,zUŝH:%K|Dz[*Yq!LyK)'CxPWɇc/LĠh$pDElQ=0=L)VQDL%7WٻF{ǖB8m%; ! Vz;M|-Rl8>GTyL7eplj Z##RnZ\ YL%{K{R*#J! f-2k ~4.)-~Q#T]"X8n%~ ;W7YB}Lt[$$ruD^n $$=J }=ƠI*Cv$'~Y=F^jǃZg$Vv}X0p~ o>Ehzώ9zR8,+d0\o=]<@EF,'Q 7О!U?A=P+E耶8I'-3;ap)ܸ&n,vu:ScyNֶR"0P[K F}'FNnS괷+h,.M٤2+I!Th+61VH1~RbMQ&%g@%4?ňnrcū~D5s!"Rt,~w;4Uo4a)Azrf@* B#vHYb _ۚ@6ǀ1~wބT5:6x,Ž9 df^qpl0`H/Үt>ܖQ{pJz-+r #w?8IT+;la&װ0n7˘Y~-Ӿ@zkݒ~ &RXU~G'LdZ\O5sj-|"5zjٻp#'LO񳐊ljz]Ϣ.xݴlUG x}ncm6æ*`xUs&'+6F [Gޯ$QD$bH٢QV6aO8,V7^j3,̏:W;B"4 @0AwA,J^g}>)WCxq!o{co?5({_] nxf*U E; 7rSUِ:]"o6Ɵ3i5 {q# NS,3}ж1,p{YFl{Ĉv-o;A'&׃ax"L`> Rbznv/ CGW ۵=zF QlclZQӟxaVY֐!+xc9cKz~ߙ. z hׂø`Rc+uW݇9gi&`yO[]مQ"V%oZz[@iw"6NjT)5O0hzd a( rt*qe$OeEG*ua)u+(B/, ݾ n f?.}FKHt Ih!N ̒0 [@UӰR!zq7+O8r*ʁ+H5J6bXKH|E+ K[Gpni4֡*^ w-I?;9 wb*uě/bRKUjf/.l66~E`W6!6pre`34MùjepqZoݎ|=NWWXL02ۏ๔qP pIA©IdsHSmm?s EB*RIBY0Qd<:!EƫT:PAr 5 7fR]T\dȍTEU8j)c3>DhKIi*ămWʯ[ sDCmS[ giKpT~?އ!/C**E@.+)'Q34 -WKؒVc9Mcq3Ӌoa{ϰNaJRgr=:Re,E=fNr9|GVZϹ*"HpQX.y#mr]>2U=QMѠ$B%@ȾR #ʓ]uw+@4UшjK[v QӖ >?+jG?c-|EQ,o:{sZ (IYksL%qyCR`W9e ~ nڨk1{Kn ù4[YVo]O^F2k}/j+wM2OН_"tǨr#ʮCK{AQG,Y"/!8O;V]> %)?ߕXWRgNP+\Xco޳u@G ?`ɽh/yMB'v"}BT$n7Td9mDU@$QڥOmH.1´Z'+ZZ)A؍vEo HR~]Rw lz Ghq5OS!.bqю/yY".,q~d6N.t@Ct~MBkn x>nToB_ Vh-4X6%gl]zE Q_Ïlc[΄PcH$Yvo&"w 5GbT0qn~6~`mhˎ%FF% m !Rju^|~a R '_,(Y*ۀ.JYs jd6q̯ w5AUF%CsTy. 4Ɏ;sLsL%7k@"y>0 YZEpi/data/st2clin.rda0000644000175100001440000002405514421664404013777 0ustar hornikusers}xźn=$@(b5^$*E "Q)"EA EM ࢊ0(RE@iʝ/}{3\9}sy~oֿ̿&~ ~*q)[F9Or ..eKF).V1b(E!4..R " z[[;}~N.n^gl'A}vhCځhvvhvڑhGvhGv?h¸ &0nƸf1n[0nŸV[1Xb<qx0xc< OxџDc^Ɠ0d'>1)OA  @Kx7t\ 楞uba^a^a^c^:c^:c^:c^e`^3@930/21/21/@@7b?b ׿l'1Ϫ2u2:ڿzˉpC]wr_֭N/WNU}>w)ۉ|Y籺d!;DcuO'#p@?^Iu9: Q@?wo ;|~R>@`f^>)?'7<#bMϯl>e(*O=\BaWK{ klYKw*l=ɈA ~߱g=e+Em^\//~voKa@a7ԗ͛ʼ {˦vشiU1mgv[\SV̱ i|`ѳ:vNDHO}Aa )z}ri*v 8SMa cVP'bt/ӇU<V+Uvm~wΧ ]X!.~v#+ ]¹Ud<X=tҟ3Nǰ57:_NyVr3&NaЅ.t{MliGWmysN  _KWCKkXM_~pG}~Q2~jrގN#Gft񨗲Z[}k/6KV?t Y/;,O_^8&mo-!Xgԡ>ً+%qv 5.kW(xXk +'ѳOj_ĎJC=MlzKwL=YǧK{S<žjuqDl5m.xMC/ ={,5ueq=y.įo'޵5.O,}gqSy'=+gϒ;d n_"NgU&}#뿖v /?PoWɼV \gi~  Zy-'KvEUسսEEM5{>)܋+M-wk-'q~l~e?iW[81Gk5i(*zUm.umW/+5~5KݟHwP7Oy){;I-8*W_z^=\&Qp[ sOx~ta>KX9I.j2UO!Wi~E?Y'7v>Vg,5EӭorUHIWeޏKx]\픗E.п+΃Q_+EnVU\d-ZM8.?9%U}i#;gít@մnn 9ۅ&~\pawE'~'vYpes&۾i}?zhGu|G ںv//VՒf;/*jfYnjq'n*lU5Ytg{J/ۼdr1j -h|?[f#aqѮ>h6<[۰͕۝UM9mú^eT=Vmcrzek90eʪ^"Tknoo{e|oy6g|aJ-LIG+GEuf͢깭T-`-Ev(B!ee} U+|TY/Kua Ѭ{=}T>}ZƵ:oڬ͖ݟ('aNl@Tټoد΅V)gR<]d7J=)Qb5<>eC oܥ_~QdUwmU.VϥwvMQm+mgeKaϹ)[ m.'7}x;o:L7Tׯm_|N,>WCR/Kk~L8a| ?_l% I;wuWɺءQu[^=eߏ˹6k`_Ul \H8kzM^X0E&UݲZHoLkU~RU93C8=Km}`}߉ ޔ8s-qYgo;}~5gϷ|M kErԾfq<·ݮ-*~Bߩ"*7 Ⱥe}#VKJqr ,t-dyͶP4/jP;B ~;f-,-GBeG{?v0j_7s4}:?JjӞp{)>y#nf͜d;1`zn~ruw&o^;ZqYy!^ϫa|\g+g,`o⫻*_P6)ة5.SNI*I(~s<!;>F=뷲'Y߉\Kw!g^X?FWzް'iZ[*L\^M׊ۄWc@fޛ:;&v]E=ۛݮ|ZW$ ]$saE۳jٙ/rN>59e_. ǜ_˜=Ī86?#z}sҧE=W}ַ^>M~zLW+a2?諚Ξr`;"O蛳m"GUID}1DG}o镶.6^2/.wTmoqƧX⸐Y7:H[L8ócݨ'vTt vuC[.Zwhn+[vRP;Ɨu6? Pgǎ+U G+2`VU48x޺_:TH沈ߩMյCJR[ǵ '.^+vWPq{[cib_{|pl1Zwn6Tx(\'\AeMIFE=goxvy6lXT7xOR>-D]7}QRw?r$]R6-mB$n >2U rKcl=!=^;vJWSpX_-G(%-n~\ _?|#x+7u^/1"-+K,/m| ^='C}4P[䟸|{vs~lonNp[1N:~4ùN0/$a=c9)s~@3g=_lG`#PEC1!5?~> |?(I~?t_(f91!Ϲ)3%A$)>X_$X8 M_"yO;vIzWG~ ;A. Ǹ&~34M_'Q+A<@3-?R|v Џ`EC˂uBЎj&=C;KD% ~oV 33|VG.c01W+1'.d>_"fbP@NGMWG(x2Apڃ ?c"z3?rZHa]i̘ {CzV؅vN}g C?CڌdЛ'/Cly| 3XOvb􊛀z.#~V?×Gá /VԉW43c=5?% {1Ι&z XX {f7f ~1a] nq2y6+ϗnvIf=a#e ^1h% ;Ţ~S_{Chi'ؗ~ A~V7SQ‘ϑ 0?JA `]D\`_qq=>Ɍ/|HE}#G1?/XbɺIyI˧X YXx^֫%Kf؏yѐ;\{6I?&KE<@ 8 7xg& |,}s|-bC| 9BI3^ ?_c;IY`+Q/ 2^P!Cz`xׂ7E`tM"nXG;`81uq {p>_qsdĠ?q*dXgRy7J% qyqgo|dB|8 Yy5c 7cN,Ylv:aAp~;GB~_<ؗE?QGϳ/%b}s#g<nuy.H a\G ~ሟ(-ȼ,Xp9"I>#y`~B. }/%1:8\}Cc I!/t1W~NzD}qoZ܏ a|ϹW2{D?Gy0s?2) ?w;ԅj=4@Oй&Րmq~-A= F559)0SO>T\Է6ɧ!>5c@S_G>5j^i<r/W¼hQEj_"yޚR-^'qL~5>$_3N{QNڟ2N~)QC+۝kiv>Ok\HQOM9H_v<~Cӏv}t{iz:D6dS.~~ls]86bIƙ+3Nϵ4;Bo7ɏ~z|P֯:Kʣ!it[#c# yC{yhr1:f;Z\V(/*z|kyn^Qhkg\G kruںD9R5-ތ:ţk{ivl驵=4=X>;l3u9Nhz}hrqkG|g?US:OkRn=W3(:iuƹ7Z|V!jcm=> s{zυG^>@}Zy/"=/L%kr=6Kxj\??<|i PoO$|ɇ~E۸xo߈Km>nӌCҙ߿3d|/J}|Ϗk,~N0_=9陧 S`q=Cyȟy_VKGߓvz喤}gΧ_o\2ߘGx٘E%bA˾ M0xr2.yuy)].oг7ڨ% /)~Y /Mzs>aߌ~^KTYx9*~T@G376Έ7ʏ6B?M;jPt^^{$a>o6d}wX\olM7)oXzL/)7/dq?\ezD^fK:1._|ud mqe4nYcnò|N>{J33`ܬ|KMg2θguո<7׉_d<ԟjH:{!e0G 1.%Fq}\;ٰoye]?SKCyg\RK>_q>1qFo=泑ߘ86yqq9O祷7}$xHu|#E{G@C'0_ho#;t >m}։}uxN@~&_ڃJ<~H3_F{޼|^JK?J\7.C853>nځ&zB>3:K?RNړr1x./9g *.3~>e觿(u t :y~3.!q"a_s$ϩ!\Jg?fQ˟\yc}Ux];&u"eƓ]%1 (DjD E?r2#f_Rnۉ1:>GO Kgfc\p?~XƋt?|xNtS^ĭ!/HЯ|s~nb1<|f])<#RQi#Rr,=4*\!d ynӜLK?r)yM̴qimUKhV mt5YR{AhvEpi/data/bdendo11.rda0000644000175100001440000000260314421664403014010 0ustar hornikusersBZh91AY&SYJ+NO\TU_`?ߡ@@A8oO;|Q {U2OMOԞjmF 4ɉhj#FИ=4J =@4 14J~)$z?T@010hUL`4&```&TF4FѨi00z07gϙꯙ nl6ݷf f[w[#V>E},]R Zkwin]7K|La1`8f^#q/)9.|9Й̩ bYU I( NmX! v.[QCNߩoc2 I,j.sD @Qaf!k)qӥt91:mLDQsW7Uq7fFIFI,JwN`B!CɄ: ׽]KZ-WU&pD " v2bPbR9QAݳpB*0dg7uEȦ"IH 2"("3 HC0"C!02#U2[5ӛ.a֫{FU@춅4a&$D8ʉdJLR,7Yqm;]vv+yZni#!ye%UF^l5^Q{4!qE4ʋU RUJ-Y圊hLX!HP1%azdI!@'i7,@!˚2%fUXٚ"" b[̗RK=^((䲪>˒_Ƴ#W+`R Z@  dDIĄ@QE B@I%@LdaI<.HAamĒHs8)/1k K ;(ijk[ZXrBW> W'trM4tsos^z׷W{xZRffff$j0R>(FbB:i4QމS4%4I3333PZ +F*=R={qLB#*%9e ULZ M]IAA@IlrIqI$ĒN{Kof`2D@Q7bP` X抏"mo$5HQE}jBw~RoK'zv>}|U<$,qW+цJ -4 Vڕ4ܐ+U!Dg.Q|N|IρI͐%Ɓ @)S"\6 ]&I$ fyC a_T.p!>VEpi/data/brv.rda0000644000175100001440000001350514421664403013207 0ustar hornikusersBZh91AY&SYVL7>x>J̪T*k||:S;lnO$i4jd0441m ڑTDeOmScTTOHh#IU3b)ꞧOTze=2mO& ?ߪU=OOO 'zS?jxj=?T=M @@42 @44 1Md 4J4Q G4h BhGڞhS iFSM1 `&iG=OF=M6LODl4&O@MM1F13MOLcFA"D@)iTlSjxzh@hz GADd 4_]jZ6-q\S9sppԜ#wuu.s\9"p˗'9r9tp!C' rd*bmȸG.D\.\D.98P.!Eˎq87995%8\$b%9.IˎK\N9s9㜓8.qI" " """ (D Dh" D @DD"" @a0M1+_˗ׁmTož2`@ǖsKMkÖ VLW:͗<), tOx Ϋ-}֩͞ϽBb n.秨ҸOQ@㏱o !$lO<&UZuze{S"#71/,KZ "!Vt%r״Uvj!&\fM4zk:bX٨WobSq\1.Tԡ&fE T\<RPč+ 8ᓣ?/w\'3ygGMC-fi>f"@Bɿ @:j9l|7\HO^V"hVk753O3a>XGՙYL`ALķ )3Py̴OyPÏ]o/KtP:>O9uY \1qu%ep֖=OxёyCʢ؟XHR%0 -0+>divqFNrO_ys Qx.XG~39ʔVd)'OSy6ۥͧ`V.n-@3+eg(?^v.{F=k*AgUOXs|(!s({UL3 GmXKiưak:5󋛗|?[ݪYDឥԄ1T ({ ܺ !kʸGx2!XFF9"MKK8s8rO OE6q3Jzgbe-Ѻ!:NSkw(ibJ`L{[iZF,L̨o\F-0Z/jV9XVWG%zZn"#y$(*t^6J~S5Ju$!Vǯ{Gc>'Qki-Hj6,mXأELXj#jHlf&Ie$d0DDDbݹ? s5Cnۉo%!,;C6dhXQ=qi7b$ Qc,)xqCF8-gW{D1@"-d9ZUWJη+˜_mmW\8U]}0 "2Adp̛2$4B@$02P^>;Wnٻ4Xi#B4`ѓlj+vmmemj[Z^+آͫO׉gk0rA!ց! ^@"0r&Ea^zױd뮺뮰ZxXγF)mcm B`BI>$sR30PI 4$d#ɟSCa` `^cBM4Ġ4GwK2hT`wWMY@ psei$^R`pPYp%}8w魩tDo)q-`) vʟ"a_p>¼?n-kf + aSs: ;w.Ik5VeFw7iwZzf4>X43֠ڔlFhL ҇C+VçV ׸zEVF':I0MÆ<(7{Urmt#(zNÜqqMNrW;BE7;ank44`3 A0PF݊4nt(swvnاr幫.r]˔yЊtr94R\5+Z= 4aHj>G/v8 1[ːCdg 7djL)U6mQGua﫲磼g]qv;ýPGTqk;b5B_HV"\܇Fl3zbFbH9u.:\x$;\$nֹ Es\&X(`I"Lo*9 ݾ#`3>WQij_nޮ9}kt;wLL}'3;eĵYEs;g H㱱c$2I `IIcIFJJ4Y(IѴjMdyT[dٛWsjsjk[&Mcl&L)4B[ɜƈIF,g8`Pȑ`&D6@bEEL$0 &B$j@LdRJS QdD!B ((I(S" B&Q"HŌ%s&6E-$Q)0D͆D60i2%ECLF5&`1C61E4E<FlA#Ǻ!_Uk*=qU!&j ނr kVVP'|dp~*^$4,{L$T` Ç!MP[E ld,<+X_@c^ y R(*UUa?X6*L2SmHݻ` Fm߷--@"vppz4|77A%'< KJCY*!*_lW/iRx,zKSeXuXeY3*]3#D| nv߭%SĝJW7R0W%.q#<;zYU%.1#a>Q(,M,/NN:rCvW*i:Gmm"',ga=kьROF@r (Þ~I >dQƀ2>x-3h\z3Jb* 8v" }@2 RX5щz1dKlI)௷5,Wn]@p}(xO(I{~irI, C)W -rnCBxz#aNnkd鎋+BqޠCKقD^ c0ihgamk74sVN㾭;rL59"i v8;]技09ߵҗX`Ɯ4 Hv,0])NÄ'.ū}ƮX]e3ESÔyw`ernJB`^^Kfp"5AIkf`4Ch[0նf_IL,4(tD`zADs,  ŦT V&~a7UEQ@P(h1AAxQPN1#ƅmi B@2%NEjKڽaZͳllD˒_ e~e'IYvV_u+ʴanNeo ,G*2iM&5[qF_ T6f%121aB)_e7vȦuD!qR/{d Ը}.=,%>P˸#LFfm$E&NzZw0H#Y4;8_=O?i*P4_QF䡡YpbW>FC&5tGNGAZ c B0F6DfZ$K(F1`-wHDi4 V4Q؁1lP3DZLbbL%,0EKp ̒n7C1$lA@?>$Е -sǂjjA9ZFeXY響I2ХV+ ʵQLo+P-NH5h0L"X ,<pap6І4%Fw6ۊ6*-Wws[EŭŃMs "ETI11Q"Ex ]9%-vKm42Bu2YePXW(MkZ:&!]hZ jyL 2d2d2d2d6FP3mȍn rScՕ/pu-xWx3f7֋gAm)ѩ0f 2oS {*VoRSdcO84tJ^csȽܑN$%Epi/data/lep.rda0000644000175100001440000001431414421664403013175 0ustar hornikusers7zXZi"6!Xgu])TW"nRʟ$!K{yN+,߿=ޗ98 8׍k6ֈ~3L1k#eΔCVw8" .!\~$Kj~4 uSm)@ڝbE"تMW[' xIL%_ 5t*B F<b*ˡ;Ѩ;bOx_e7̚5A۱N65, A4B2dt]Eg>xlO+ G~Rgl/@]}j/  eoT"9R3AB+6{ @\vݔ|&#d9!Ji"=v`fmv 9"H(-/Lb6dd*QufP!gN\\Gg։v/iON?)k}ۨ@~14IB ջ)6`+g`9#40Y|`5̧+|\u i!Ta ╳Р\8wd!B́}tWoWIǒhNn!Vz\U;d}Ӥehu`%w%e!xY${;=йsضz1RWʤ<N]]7eaW6($'m(<@W$''EFi\s0Vqa 4<5i?(!0.X%\`x{k8GRe;Z)#.xK EUCdFqoL WolԔ`b1[u$8DUviA市͉ꥦ.="'۾OY'46ڤ"o(KTBn{GS(48"z]V|AOꙀA=ܘRZ+˷ n$Kټ6zCUܳl,®.4_ͩ)޹yO_`•HYaeϛZA lWt}ta2d0[+Cʟje&өLg|(k-p)-s?T Q xރ7)mrtxS$?k(TK^xw݆^ST(2&fAǺFQv.,6#Ć!rn2kjRoy)8JJƎDbMHv&>GãGv x>8Z[KK[2 `%jɅ~FmkpյɕbNG k-ng" |Q_|;_mli\ ;Qa zVxoZCQu'*|˖sNdRqhܣHJ)we LھӍއhd@8Z N;r4lS&bDiJHֆh)p0z¯ (t\ ;nJ6rPU]Eը|[ef w}Cjz<{놾{K`H}Ǚ  6xS!umRiT{l?I^-jNSM.+`-S%Pjdm6#H쉫~8i[x=[d"*mOE' Dm+yc^~-v}ƅWPw#mġ~8J$sS|>dz/P,Q|6+ϓIr '2|eEZŬ]v݅]"8ލ1: Ԏ6=G"&%XVI1E˜0 8!a&}yFWޑ߹i綷S^w1VCp 0Ɔ8,g-I"t9uȳʪ A036zV֢ 6 ' W:h"v EU  =s0"Fƻ0g=.&ǫ"&l $ l`w)Ur}20B=1R鄂^o ďV8oK6¡W P-{H=*(%P~]~3J_/rHTCc?)R!j8̻E2=bL@.wY/?A%]6] 7-NsX 3\ S^$Phפ*P4f]4-fa T٠>V fc.,&ĩ:!]%(uhJ>nCY]gL 롨i?2#@(a2qzqqpUkIu)'7jXx,cXṵu:"\\Ծ~hq"5Y.@AQX x+y^HO}hHܚb 1:3 =yŘ7p8|!U9?+K]ΥRV>?6(GɓS$ww^^{! S֩~L/GZd{> oHy_ 4\ c(@nĚ뉡 .«du) O $'q+o4VdyȑT~q+{C8PvbPC&-;E(orK6h2U}/!H?si{X94M_'@pToIk(IODg&9,s.Pp>ziIV{*LFjy$8m_x%Jȃrgxi;?gQsI(iX sSƶkhO ^A1#SEu TdGCwmsZйs%AK (_7jT-&kk7,?2Q~x8iY@JccERz&LaaL̍\|/+xXOBnq!8iV"+%,yREq74Ρ9Q̊b uGY4֬*R-k.LQ:S ]Orb\@ ȫE5lrͩZyy RV/֎6&ߣV3>Lx%:kDa#lcӝcI K/ B&grX1ى|Q"U H8g6-&xDA} 3<厯Ox` u&tjJ3Xuԋy}+2?beBkEVVf,}9"DD01/7/- N8UGWNE*$Wu`KnJ#EKqzKoOTwj; |,'5 ؛^ǝb ]A݊J?_@;8Z !v|ޅ5pjdAb@f̔E ^(߽ڇH0oa4c\ +SܚK R(:.dw!(gt6КCWI%ZqĚXx u&﫞8LY$A9 b*Z1[{d;oX=#tBr2G=uGT E&4 QLWdԚēnmO5~bh?o/$?/Ω]D,^ކs;P1-ȍ9c~5oCZG(I 4݊<e~*ܬ@pu#4Yo<#q޴y$͎Hz&z#43ÐIH_Gʮ [hQm@% "drF=Zİa?JN) `7,H2c.g#BQj Vm+w#~4mptxu 5k?{Ј=^{x[S+4ј&UI٦(r0$yվⷀ)SJJ9'#LfS>—E_g>F{C˹fJԿV>~e]E+쬵} |pPr؝!Wz5A`nࡔ/Z"4KB㒐IG]77]@iiS4:nf+CcsdY>t~\Vb[rerW*g"9Lj (-(5OU&г6KG֨="Yy;+et~7HZ,kߎus7y~$0nmML q'rCW0b\c^ 1 C>0 YZEpi/data/steno2.rda0000644000175100001440000002007714421664404013633 0ustar hornikusers[ <+"ZJ*ZS = ERYl*ZBRIE.K3f_(EPisN:{F]z1.=Dž^iL`ӆ^E6´1mi1Ib)M1mi3LcK10 %-cq9/X˭ ˭ W` ,_+˭˭|%XWa*,_嫰|5Xmmm1߶0=5X r,w|w|Glk:,_[1#[WG'l휰ssv9c;gl휱 sv.X8] sv۹b}Wݰwa;7|wn~~?SOxl?(?GG5j\[r>E~n×x%-sExb^`$ci_fY}ڗ[{g5s~%ҟzJ~U[NOqϋ| ?eB|OO37v}~Gvoߍ㟺_{W@Ug~և;?}~{hDzTs8^d"X #RKЬo#"wKyDk 7ts Ty` LGr ѧul8js .EudsYs^d :z:b wN~1jʒ멨شT5T QciHr3Fقaݵc{V.%6]?bؑ\g;Du+6!-͵9o1Hgx't UyY/M49H^bŧЫ*w1X - )Xŗn:"̵"ړ!G> ̀ ԻOGy%B҆$Al}&D7Jj'zUDcJ'&Fҩ0o!"k|YJlE C> RLFһSY+:gNqWL _b=htoDUQ K4!}c%^p󆁈gH-`՛ս۰0BG>آXN6 ek9DwVm|a<-qVLBq_aV?G}DmX}Og>]mI^qfncΙ1!c̺ˈ|CUT2.bWOFCM=w:bꜢ8+LC-480T: BL!Ҡ利P^o;%DT$,EDLzp.*~~޹'V_41&Ynn*^gm4OAbѰVQց_ѝ:/Ui'2e7qf \Q#=E= ;݈>z 1-?(F o?ubYNpuX/g Ŕ*TuH-)T4YKi$b߬np2AcON!z}'/D%=bGnE$<' xG7ux *(1X糪CE_~ej\i0 g\a# I, Xqt:_ Ȇt1Ľ*,h*4-J{"Iݯ|=qnBEgu,FLܬD"TKVX(I ҟ6 b}V|] ≜ZqckeE ꗭ)i\XD<~ӕNB}&+lR$Np,ke:.VNKAq+Z×$M vKfb [:]Yl__L;z$J^i'}oBZ-ͻnI!\3Mi(,>wc&4YXn+{җd ]=lv~Eq[ΤRg1Ɂ*G!Ubg1?B[ KȆѩMuZ4y{g\Mn͌Ϥ V@p\Ľ"̆BQuPpo׶D HϗSڵ;ewr,vs@ڙ 7czB{I+Wp+X )*oʞ(^¥^b3 yýfV?KzȬ\㝮M9CR\H4Nx&d=_~NɅ R<Ș$-=.QR]r8 "!hnO5iL<ܦʅΫk=U^kB1+g>@Q">Mjp5n\>tZKޘ ~qb=8ujdRKd%@E3dOM14ljW ݇L#`؅\ M/Kj޵A[aN]4)N$FL7UAǾFg@L'HA}P9C>t.e%H03 (JZ~_= yR>Ϟ-CyHc>+d= kCAߦˈܤ:5?yk$(j,VVLcE)]S83@KZJgH_x dm%)Zc6ͅ9z Xƫ 2_lN{PD4rXy5M pKAV![(:ެaVo@'q+#\Ћ6lty\/ _yȶ.o WEƚfu,)M;olqY!;|!Tr !g$(XBX`y:e79{$K,ԃ,z5k M{8?C2 Pbd,oif)}$cn]j+˽w(='~47(-:r AVA6ۼ9k NC у3(22wCZE4H<.E՝ guur^$R^|ȏu.7_,x(AƼ^PgQ2aa7̆zn!~<[  /BRttѮ.$~ QUr5GqdeeRO"rv9".*ODymN3o9"GahGi@gj_;aCC@ac t"je@Wύp0&Gg2q (3R9>7B'yޅ+hߓktzI1}ܠvPuo @%Q'W4W*xn@};4Q+HMTնQt񳮒[eO$8`9СG^\(:uGOIjv9hЏxXWP񳦌㺄ߠKW܈TdX3PaM,>PM`#~!&kA# %z[([V'CM?%B+Y,/`Qc%H Wzbo&d~]"9pQH2T"kFLD=ͯq6Veڸ@Y]j4O8(ҡ+9}510KnBڷ| ?9ub;@ w-.,zwv+DR 1O'zS[D^.%1񣴹j뒉8%GI"m tiꋮ<>ўj(ܺG$⩚3H S_"bz 鰎s("ɹ O"毮쑥u@zFҀÇ 9M}֍s4o@ͮe}]y/N;vQ@T>.$wJ(~?7($^Er y /w:$G副FI' d~޺r;u@>0>HyE@ҎHखs{$iԞn@9bX iN5k $u5Ac4+@jY@$t Hd 9 ݚߔ_sҼ#ÏI#B-em1 sȿ|.2:D0kd6i]ֳCKHU=*7Fxoe VoY>r'ґw'yI*majwY7 hQ_3j})΋J@Ih>/ 4H7 #VH`zq4m2t}ƗގarAnQ, Lz*=ub'9lQ1ҀM0B!$FO[y2u⢏z!:o^5c `^g}Ԡq kOꑏ]Zm\GFlݽWv}mœeU 2 H"%OPr5ܤ.@RkIʽrw\]6z@,$8 INx:IU wY5OJ4F$u0ϸ Fr!(o.+YK@z֜S=&t E"^Mjd_v-aA;#$O /̼%fNbY$.T.$ۿ 6l4qc%Pז'kJФe@?r.^|8Ba&[ ~uKi/{': jȋZoĒv7gi ouņ:d;pK(p ʭDŪJؼCIx2q? 6eXZ^#oRo{:wnB}tcMi|S~ޏ2Y})PN(jr͓u()lƎ{>`7ʂ 䱖}\&0n^ u/^h P|>Z3,.@@nw!ƾQoVG@3{6C jgOgY|H{ 46Y((ӭRsV^P5JJjp\'9Lۼ d۫νr9%XkC&qfpr# gqpWA~Q_t/E28L <[ql?ֽWm~ɶo_}?CwO &-mEQ܇GρtL`n-jDZvn D T>" QAk)xg.tP]{?%FTݰ]l`RgyǎaLs:yi} cw^uSǠ=gȩb{GD93D Y}23X7F;O9)kQPsq*`x;x8xT==]u uJyљz @a&.4>L hS ߹#gЙ 3q1=&P (IC[_Uo.^ʚC9.[;#Ȏ5B0C%j9ל:8 ء^-0Ew>̓|;:ZP3h}"P:Sֳtm F54(#b/C==qA?[C\zD@} xy繸z }]p_HS5uSXlZ$Mp3_;'ĥ XVM |KviLF̑kL//.}Yk2HIw\=e^0CMX\<> OƺM{"SA ͑/C7pC9fK_Mo7*9L)$J,fs#ڱw$96o7"=с{jWpzޑ|(}I]AŰ%øX"zԘ97+i}>W=7!GD=\hզ\'X(|i Q]l]Z) G<0u?J</ߓ8u(qtU1Z,c3,2V&.\0/ZKGy]j>eǔX;Y9߿ʸCbھ)ò7#XoS~uOvv "D" x$e|v~/&U}EWBWhu}b]_ϓ$yQ:?ʩ۞.;zo_~a Cu)8kXۂ˺_GF_=O68x.#aEv@o@].]P"e' ]/ ^=?nަ.})(e]x-TDm{ȷokr']t# ui]z2nEWڅ Tq:_zם_XcP.GUwgO׋y;nBgw=q*t.z={~=yuuV川Ϡqq>.nǏSB쎟.4p ~~v>#gڧpq_}uvבwO8=W?w bk,5Ԍ2:嘯+-6C {Ϡms'fJԚ}@ߺjosziMs^%gId;5=&(qm`:tÌ{xU? LtUYC ?@ rd6>JWYM㷁'ЋѵSwi_'S>['U.*@$k>o siZtz2Эnҷ_bƍ}և_;"6P/ަGӬb׃Q9|h&o䩲6@=CXFyɗMi"P[I[yw>7owS;|Qq}:zڰ7<|iQ 6<7ͺK}Mk/[(vC]js]C&ķ2`}4W7.<m7wsMnj>~CS-ģ8]%j[+nҀ.uWq`2}KܣeU0G?fegiZdSS ɮ# r}8[>2=à@٣9m C6 ![||&jE3Od.i@&hra| +;>J h}W,q--/!VEq.p^}ϓʶ c* n%T]R}oZtUZ~=z9y|V3E69yxx|ytvu3\\ݜ{ WEK{HKEL;j2Za/\"g5{vOf]_ $~"~P)W'?'> HBuDEpi/data/diet.rda0000644000175100001440000002620014421664403013337 0ustar hornikusers7zXZi"6!X|,A])TW"nRʟ$!K{yN+,~{+ޏ9:+lBtn#a~ZHd_qYyAUU+ 8^l# FCk) &C)`{X9)Vgdw,a@IaNX r ݳ)Gy^ik*9tLQ`b^.QovAa/;B %->,Ra-ZX$9jNe:Lj҄eyߘqa8Bg*[4XԀJtqn%1)h&X!A@ )ng$Y~o{P[,ɒkWҡ p_ݱ+K*Er޶]=~4f /cL~<ϼ^0\'mW -c]t9LPߗlJT]&ϨA ^\[f,  IaԆ:/\-^u9*6[JDbU Z0LP8 w߂§5Tgr3@a5'g6TmcPy¸4~ Csɱ1fE .?`NIF)>UeqԈs1SI0琯ߡҊG,rnP/!3ese,d?o,QvH:)Dk%=)u2]%D臐eyvu]8%2)`[6~P=#Zcx\bTE+ YF(.3t7P>-Q L4Eʣ[5GP\Ofܘ:WA,2W=2TbNp!˙W(D#=# oOͭ\I4F&싣0pO !Xrlk7)m&3:&~dPDGN<*[GJCp:kaV7t^CJ5ׁ( egszRNh0u +wzl^Z4GZ]3]/.0*&bhHգ !t<!xkӒÌnI[P ifk{?@Y].b{(F{\OZJ\hdV&/肄?u}d }M"4z9}7mc6خvĨ} Úv6,ViF^MJ jyk'Emؓ 8Pe`U(e۬!Gje H@0_ěJ/S8,3\`d- a([Ds7GRtrV8Y8xg)3Cc}?hBdB |r8O57/N-21>Rp@P3Bll<~S5XFg)ȐYh#|Om]̆uT)av&1-I`?OĀs{BkJW,׵U .̍vt 7* ŇVXE3"8.zgT=>$=#Lq`4!A뉲!}U)_W [ʯi*ǜfXΌʛ{^tdY=orԪ ڱ~؀#BN]MC12'̐N*b_JSeRxfHzvege_q6f`Ur~yfM/ w.Wݢ?<9-qH:> fNTI;8M )T1K_9d{y+]5n2RSLn eZ3{{ 6nZ#m!*˸uiP5M`<.}DOtD=bU_FOli%gbRBto5g+SVsjТ̒<NS_7Ƥ[.p0*>-6xcSd jz0(e5#UnP ^z)56vxCbyսK_lGb<)o'f[w>DtƧ UV2U<7l62ITP0h; ɾwwߕ܄cxC)A_U-Hun~r*b}[ڍX \^옫ڌ݅8GTla(Bgf%[f{m,^8>-詋j^PzKzD1ƳNr3M~0v(kCԮK34`h@-I̐^A剉8~|L2/zq7?+ {[0*U"&AjA-1džAqq$p U< N\-dXCk]BK |[V;yv\f)| еyLPw% c3-'n4W|Z*Am@;jQ ]۔5/nV a)FM\0uREhMeRM Zŕ2*.-)t6owxI,含.Xޚ*ACvOk8]#iC/۟Hw~ie.ɄKt:#jҹJ;pGTM=,W1֯S-2Ҏ Z3jvډҬ.gɧegHwBz7ɓٯӄ^#T[qV~.cĂ 48,1 q=d[zRtܢ[[K HZ3zWo,r.cq+.4kD2F޽< DzM b_Ow"TWXg{ s.w(. ]_+hQ)@zde 9nY 1_<|QnMO\,_0<8<4f5I[&,gYv`lZ@*`daDt#ѹ/|5.|/橂B{ܲ,^ ?hP|6Qooz)=#ұ#w2anөPJQ/Sr?y '3tXnv-lHhZ 4x70S8JYG ,n%Xeea}3./.l)Xr[+ ByG G¢nq^bդUë1 8,yҫu!˵ѵ1[UmG @`obqbh'&J7#e|nf@!^2Z0֡)v i" k;VdnSq=GZ`QV+w6~8^ϼ>toc5?6{ & eZjgCAqH-1[~m򒯠RM WOunk}@ ,9|J[%5Z4oְ +lBzvlէT,;Z6Z4stB ocъip#/[^֖ ڙlZy<gRM&coJ# :__K꩛UF0ͽ jרǍ>RUٍ?VS^Q'g (ΦZeVrN9kfY*IfF װO$ĮtRpaco[*B~xzb6EkL5+v mnY$Ozmte3r߭i\m§|?@H2[4OhIcPOYT&ro5/kL(xUe K,W.qOU9) Zdž+EVmo*}()Sk٫ v*`U2f7Nx4$H[@F)]i-Y1".)e 1MZoT'Z<1S ! |B@?eD7aoo QBM$j,ljL筶ΖpGRO,ٰ~eM(i;~ EatTXRGۻ0E!I0rg5_N8a)*m'l=$zk:? 8clMrn֏yQ?F7)+fV-듂Wt=PhZu(n @ % 0BӔO,r{TUungqrچnMH*j38揊ؔYDf6u^ʄh ĸqEfa=G@A jΗ G?EUmd5D'R+ -#s<aBAyg;MLBTMm : _9q)O^mhuW Ŋg&ղNp4>I >~nm{}ϰֱԌdL+~³թ7_s9 TP<5++V^IKա01+.BK@L(mR;]Sk8U6GD}0H"Bu,NY:?hWt2nK&3jBsaNƲuٽmw`OscHy#І20 ՉtԆ0O%)߈ʂ! OItz1Qml]jH%á;NP'>@ 3wHD.Y{k:JIIqu#)6" HCOk4۳@D&b踋t<U+q6`͂@B{3%B"˵^6B15b_9+Q{.1Ċ~灕x f3Lɇ$nCӪ:xⅾ7ra*?SsP gp0 xS9Mzv$&Nsa^.=4f{΄V`o41FV@i uo֚_enY&RtU'O@V御J.=60J}GۋQor 0ToUރZm ֮C$D`x~c<5EV3ya MAHb/|9\3H{OH^}i7"RP7"YM%F`Jx]<ߛ#?HEVA8. FKHYd 6iEBzZxˊv/b1MI:rI,894K;Zj=mk¸ k 5vR@<4'ڎe|XC` +S}BJ 2nrf%od|rlVqTBP[IElrK[ j4Ǿz)~+ ÍQL1 D%ҡ֚(DjlDp3?@h gj~ cyо\z9 Jr]d-;`(c\WvYV<DHt6)RӰ:c2AF*λ{UaBJ]t|g{r)ǖSMHK_5KO@TC\JMҘaG9d +V*~~d- Iv25-԰m$'*WP~ha =ƒRZ/jxc:l'FLp[fK̏GbEuC'!pɭHVDFfrS0+'i>s8PG[_:>@d}~Ih#іݜ?Ld{P#>YB6䰩 foq8R}J&8Gv;Oպ=dJ8Y=IE6-.QG{}\ <`2M{N?a)gGc/"H#2nc;pZ\c0աgF\K5ۇBa{ AӃ50ʊVS;.6k(h8hЬt[gia4Aލ%C!}dd]y9Fj%buU`@a@=$'WH2W@b h䛣kg3~ Yp qtX34'6 H௅^*N_ÚHYn,9u}[XVrBG^x4bRrmւY KƯpp )^,NlE,.x#a;RlK*8-sݑ7A N#ƾmZ" ?ŖCÇfuhZtkW=.ֈﰐ÷*8$'8Sf9͇<6Y'ZP\i?OL<;a EH-?ST}r4A1UKU$Ə7ۉI?4:rޏ5}NCl=ࢢ-JѸSelwO( ݡ|g *x_*Aal| V"u wQKTZ˨ZC h89PoxHXz(޼TGDz$1nY헟R椚h s-EϭjrYr{J6߱y#ǜ#6:cVRSpX,N!|IGzJMl3Wz%(INch63* m*&m?_8 "֦"EBϔB(z+)#4c1sՉGsy=_<h)㴆J=&|8ҁT@Fd1_s\`bHIۢ(~{g:3‹qyt`]3WzS-  %ڜ7tM@6qs{|0 YZEpi/data/thoro.rda0000644000175100001440000005162414421664404013556 0ustar hornikusers7zXZi"6!XlSW])TW"nRʟ$!K{yN+,`é;P#v<)B:OaA+} cCSOPctf4Rm3!y딂2W^HӜ=W~ܶ;N]e DÒ\ΨF7K&rZۏ 㤦S͊M&]" 5<-yfvo 1 8\Eđ&;jKSׂC0+Dzz}LN9|xЍ+*0SAȥG!ОQ?+*~THܒlfzI/9&JSZQDHE'O$c<@˸ 73$P,DzFaP% &Q[ Ƌ;U\4AA>cZJ< YVtI^X.x sD d k}BnYw4 +Ĭßg(SO-ܕ5!kPok]|cb(\F\t[WPS a~#!= __0u-B_ڂ76[w4F_"/|+;~$(ezyI;r0/ݜM4><G$S1!dhVOpkL=: 9ޟ1~ >ϯ>$'_ 喏՗y#`ka1Jݹ[gj %cAw`^28=f\B]EpDmN cW|_N1ؐ3ȷC'O. sIJ+-?;胳<J$qUXZߛJ!WsP%~,1 2e`l?~J^/~ݨ/rަU{q;mb%;WQ1B܌eNreKTs}1Ҍe퓪dcV+?vNtfō _ _qguv_XtuɡVAp(n'l[%ԬN왦逇 Uڐۈ\ӉÕ{|=W}Do1DZ;̫2QU Lu:,J7y%5oM7q .nK-Ӭƻ`hf3vO+ |ǽ _p(ҢH_"K0 (AP=kv;EuN7.`#@&HңjT0yY'&Ks f aNe,$4hװvUxA츌DrEkPIz:^i0^+)T]Ј}`r3qmP٦~_Ũ][%!P\0xU\,!UNVџy@it@0ubtmʀ-RBexlofwtH8Cax&uϨׯ報"ktv,z"WyBB$'#Uq0OOsL:NvJ[TDl֜9,j6쌽dn(bqf JhU(;dC oH&w΍,7g5;o4f9S(b&*7oj-9V/Б@E+`/4bIRaJ2jjsؑ|oJ/u4` ',6B,JjW;8&.öJkX2ˀ1s$^*$*-6 G?@h)'WY3m#J8^.t#gں5ubO"TWJ6܏r@,حSh(&uFYS !cJ"d(mwGP`?P!xJh)]Up-Dj0Y'j㪐7^hW#6 F @zǚH%^ck[F; g{v>=,^Z[vAn(53E+%qΗ7/ϯwY$Fl J]KXN p1M%`>rW Tf lr"T1{tpT,Q8w5"R6)O615o;QtӍnL(ܠE{qygHCjAj8-H0xglZg[nXhr띂au$_ G͗wg ٽdBZS篡h3i@?R} t!&WA8cր}QXBHӟ) jk:Kpuy]8k>C7]:fW)lw?=WQ"%@SPvzeEZ]k]hS<ѼrzH&#.<[𖎤}kaS$YNϵPk=Z΃< [qDn8n|-tYqTO68o n%9?MZHDFn9mo|8a>@+.$yA¤0@cX\ ݱ+W*اRYog|hz5cH?@G}z|Cs"xoG$kҕyq IrČGH4sGF'gC"VK4i)V Ѻ ,fz.á.*#jjmMƫ; ֽ[+ۯ+80{\J0dbOSGUI@: >h1/>\ D[f@bw(r:m*/Q[mBomk-,)$+{̅Y`.B0ZQ1c&L c+*L Q;^ C5YJql``I >53>cJ"Bj^,zis85)>ȓ?3$(*Qdu{ ^fM^;`wo;K/;MhcDx/^PQh׌.XOCg,l .AstЭ7hMQ[.mOj4 |y>I:;,ß3hU-L`I/K~Luaڞy !F&<5ӿ`p$9t/=6葔8:՛v9>[~a5#Sf_ϱC±4h2hУK[Bddk}Q>(}~u~^4Z 1Bf[ @&XiGmH;J)i O&K&VOnpsfb-(YHUbL5 J{5L,K{U L: ;^E]GrzG2z)]jX)MBg:=)33yo9"ő*\nU.43_FY_pz[ qM48@pG*kmHfΉdFnd->#)C3hqHMUxh\%e:XLͲmxR*d9J8uF9`Wyum+ n3QkVNa/c׽YOvEIuri*29}s?g]6G"cim v^\01W&+ѭx-$Z2oY`+|ԯ8Y-8Q p]fޒulLN9Dfɠ;ǐL&fv0a%V_?lֳ"֤O~k ۛTRi,EZ`9E~RvXTFڊjVRa1E^ݣiLkޱ-g-o7:9!y0xtR%paP2$\X`TD"\(I$kS\&j6=hZ0ýemdQD ͅhJdnC[І359@&Exl_.GT +q*̳c>յ|=.]nxM`;Az/a>U3{NQ.NȄcn(_:H8#7fW$E2t%OWƖKRڇ*dWGqT';"W ۡHi)y'?|Ř[z"vvP' FXg"o{~kq7s{ܷVZȷ}wp J0\;j&{(5-Sk=27CyӖ_6[*<ŒwCC1;Mhڱ YIYr1%o/'p RLji@<~,{_]Ͷ5>'pɰy6)|zH,JSb.?imw|CVp)b>ȜڬPңOėd.u?ܡHe^nޒ\=$_Z"/ڼsl/WNCb)X^)/eCA8[pg;2FG-C:=EAK`,j_{%x+II̡6U̅<^jc_V럢1eY{L;r\Ff$ĄhV1>q(} Thvp*~ٍ]ʰkt~(p)¶eQ 2 =b:C)Veُ$j`bV0?f-;áܝ5& L6GZm܉/Jh̺KR?.pőYl T 4d]@/glwRH3x yhC%5#]FjА8_<ozPV#ms`S?B#L&Go^s/8K,{mtŪ4d/ $Υ:KToPO'̬dAs|jj .|YBtbލЎbڲO-]dIJZyܓEwy?rv8 w/qvk-Nq䓾_ `-Cs^@fr8jhݸ0[7JK!1`|*h>&n:DֺpQ(x(E|Um?Qq{n'_nXSc,;/u g܎=2PY5◽38OyTM\E'>ldWe•xV#{Ajr])0"ʦہz.IX]kY12w5uI.3Kr}o 5^_xRdʄx`lqate$T@onEE'D7 pOp-<'2+1 軒뚕E.G*!-oPCjM[~XłL,kV2i Iz3mP4anFH(F~ap#>X* p4~aP& ǁhy4ML\bZcXBV}No{OJbIh /"en`\eJ];1Й*a@oNOg4&/_ELN;9$JT,0w3?$"*I>^Opa a\SV1ҌC (U#nAVҗ ql:5Of6K;;VzS&fO8b'_y:ij&c|;s&s`R wQ%L ]$F]vyά FͿ'Gx0$ HS0~wDF+W)E嚢h[\gķ?4j곶LaUpM~-7_[ci$JXyڋfrcARXr}Z,>@XAqxۦdd)Q ;~HJV sִjHupk=8x5F=a$w I}¶$S>KH'%-0 g?f=3]+i}2X)Khzsy$v gsZ#>([Uze'T)Ca-*Gg+©yK(5 5^oqe^-;3(Mnb\iuۛ{ɘ!(nOq!X!P*N.|DkDwFt#Ur X ²l6b x:/PG}eiH_1a0zS5c.k~NuaK7r^:|ny8JkVRF/MƆHCiHL)~':~I}u[h>ߦ{ǽhc Jݔ)dbOoU w@Xkz~u7 ?/T8|:<5Яߏ*o2ÅjY" qcJy^Fq c8Śp, 2&J-MxKcD9,Û ;s盂Hqac(b2"@DF/_D5Ǔ:jWjR`#G5H1D~ՂA.17nf~1W [OGN C# lP8ftMX9N2x| He7͎["p dH\}*7J\x ɮ3i7+t_KnrMbՏJur/޴o;yf\V,jNfq^jT-2X}@49* &ϴ%~o[9dptF#yILEAxe#OnXT5bi=-AeAīlL61ShM픟i -r9Z )Ν xO ШYu}#jismz5bvA1?L$̴'6o|~3qHԣ͢Hovzꉏr*A0&F`s|kC oN2T.(+Y~Bj=;X/R"X~QS& ׋->zP;칙gۍ[C&60d#k>#˵~DٶʮK컃ȫ-S7b8"-&%>+ɛ>t&ō13Šn]'YpĹ鉨)FT* ,Y>}x X3:SɖBqǵ(#кe Ȇ,TZ,Lh;yN@qd6VIҮ v=85Gʁ 'cxyI bMzs)&1G{M1(ّ@l3D'h]Ny(ȱ=^)+ u4"lwFBmzďû|-u#(-]DvNVe .)56?Y2"ZS=xiQ o6 2]uh7&lήkf2_2{.{ ĺiSA}ՊJ<7Z-tֽQT/Hx44|;rP!\!q>i R=df]~@rQ'ZJ :. 2#/7K?`$ xiG0G cxS8^Yha_nId?畤)qa)h=Ȭ J fwLw9X|iL8B@^쨋G}$ ax|o \\CRJ[,D +Kc@-ό5AQ̯\{P{F4ڲ73}gU3I]i~7')ueS*Xa"ק b@k Ȁ[_a]Mj)=w_ө'Բ5OHLk;؁ 'doM$ýjl4$-.<\ˎKvP‰'3REFi)]7&Ƀw0j`[Z0}x&n>{kxP yf!n ;21G뎥zŽ*8_I>FXcjC}FrfAlq>=`\c"/]8kgTӽ[ hij@XgIph"uO  m_I$1 in̮f{/2W,{ƌGWo{yfeS>"ysQ;oEjdh cXQ&˞JtC]c~ow۰"/ oGHVp/KFq(;5b.Way3| w1@hI{i(6Zod= ˇT^%@?XG>ջj;#Qg|7tP> F[BEi.3S߅$ӔkzӳXM:)5U^7=E7ō1! 5B$x˧)͔N]ƈTgL}z dD] à.ɢy 꾐¿FױoZG/9[/T$׫Zз=G0kaMˈ$Z9M>oi-Kt9wxn?UNihn%2[T5{a9v]#0#?G8<$Uv@C ř=E"a @X&kѭx{"@iCFc%J8VJPXa{;/xb"~ }ZeS8į/Ӝ٥p2oO|Wo4EG\gjOV-b/@5.x-G~# heQd(=p"$}:}Sς?m%'l45o+%`8| G'e n6ɌJ .ּ4r1)X&]-m#QI|s"xM)gr.TsNztBGkԲ!.t_``dM k@ցݺN=4|Dop*a^Z6`Ɉ[H WD<F0bFpib֧'uEwQc>\!l8Fbi?VV:X !0f/VmAKSFyӒq0 47VIoݡ}t! ЬtND+ UnΝ)W-ԚűtF&&O_-ͶQAZf)f&-#ӏ[%jz!rnb7َ0cEw|00@>%4B^ޙأhYg\vBAxݾn] ^I($sn=8#\K_:8"S7=Իo&"U!9g[gCs@plʐkJ=OUߖcxPη"d]I=}<MSZ!,| ;X 5烬soT^e݉Yq?v_ h /gIU{c-c2I`:ɱfL٭5ci&рn㝽d6~,S c3T" oi] c?=_Hf4֋E$(k k-wRWC~tqmrks{mVO{b&7NשevDulHGZvoPvy/\^q, CP=$#'6vcAs=RTtWG搌=*7ye!}H$a\llcoQ@Uݯ=۰Q>$LC (G諸'OZyyB s);C?- .[R6gMcӘ9V~L 7vVX YMݥE9;@EM>OW7:ݥ.$pbmriނ3B[B}G)()Hˡzd8ԍ~ QH*ޜL~)jl Qu􏮔֙rɸ鐜׌pvr{$YM'wWDq$gmL)@ȴCmuF]+ʁ<3p:i. r2O/b;k˳0&h׌)A&KR:`FGzWuQU@\F:8ތD7kϜFmf5tr>djqOK p](ĭSsM*ёR$`oQ-^LYæ-aGu_sDn.xY0rrf[#qPy,\nw%/9äYs7a;]2h ,s?6gFۤL X9U 3 VRy~UY)C^Mk81KQ (wkmBs8(2;sE{V'PSIC/}5`mIqe;G[TǭbMѮ[I{^u{ SZ2%I%0`9M<GFmX699L< ' as8GΈՠه5[3 qf(DpyYAWlcU3<z."yej^ѓ kA_?Smt3m{Z7jreG/;0Įnp n4JTQ5XO$+2p'KJ:o-VhF1v'T,Uz/q9L?ߊ5&ElY?*{7w{m0mHh̿ #nj5P{Ul׫۵I Ⱦl亇FӿŘ=ڈRȬQO)蝡o\[-պ_J <K{&u2$ChgaO&3TݑEP9"lPE7hm=ši^6P VL/.*p)b3קuG6]3YI 䔥a!r CqaSA]?iϟW?Y- >Qt'/ſeG%Q麁b8l xi:Esi!PHqN[qGW~] R< 55u(ӅXP$lwi|m*s;&eEi &I*#EfBԑmH4> *@o .Q ?K&VTv`V{i=@k Ow71J8nQUTRzG Iu|Ȳ?8ʈjujOfh>ѦyGuy'2w/d1qEBtt1b!N4ZpomEf8ꔞS4(u)MbdSIJk_U L~Yj3rp&#J_ܖ(TE=a2E]y V+;VbqQoW?:uG۸Va+D3_Xi=uђRm]`d)x) `[Oȏӓk.6 ti_DbF7A }ZY(vhD՜BK*zZiɁRںvw? \h4.КL &UvX"ǒ+~/.V$d{ZfP{FH04əXnBڦE) NTvR~ Nie=d~V}fي&Sp᩼T>rw .wZa@ 'O2QOb2EAh̺_x'zk>ۺ=HGqV^^'B/)p1qF,x?$~틖kSEZH8e:D zi|R1*6{Z7 gT0Ks'ӌ 8*.( ynxm_!zt3-ז_sw$W >ʟ3I"ezdgp ZZ@Z;(fEtd%|LjYTfFʅsx#weT~.St1n}.s]f`&s5*Q_m)i Q+)l&zc#30wX@Qab.XIeD|86GzKh ٚekKi~I/Q*A E9t8Wb6DܽXzJ ]˫0 `}v\bY"@0"җ0O#J{(+g6ָ嫀ڍOxX1{T/ ;{C#Rg}"?Xwp1.ӕG&(Yi#y85 AWiKRw.h', e^URH><׸qKe:b{;K"6Yo c˜$-jAqP>[&Б:bmiş;˪&XnpHHaUO{fnShĴĿ>Q62r^d{2{.ތqN""IrdEǀ#uKL *p^jȟfɷ`nNynWuLʙѦ#vM8jCs:Y@󋐔#lty ql?ߏf[d]taI-2CU {;5xOhኵYUk(ʔUeqŒchJ4x]/j,Aj[[r ,Ѽbcb& έF/c>~/1)_oɍ?!N`Fve~ mxzP>,Ȟhz"`baq_+68KwU}j[JzA}i06rք: $,F^ލGzv#5tlۑ @y!B(3Z^vZ($kr'`>f֯p-?{j\sE'"Av>ѨBrsΟ鱱  Dm~\4ZxEm7;E|Լ| ɸE!\AqiA'U0 ѧY".)e#VX|~341ց! Ě nݚ8v~uNfvK1?"f.fFgG Wiv ǛteO3W7-Ġ+8vp]f7kb`{-QWm >~'e^L!Շ>̝X`Y\s:/ae5ϸXbM 25IJD-ZKv&B:BP0R~HցH9 @phb޴yl)>iեԼy/L0evƞ5vAU.NbeQZ5ݛE;#Dnx(;ߎ.cv͋q9VQ<ÐP3pF :TfQ9vhP! }zQb7^)Y~n>v3b {iNSޡ^n5V6e9¹CY+Xxb|뛪EYWE#m;&Z8p KUL=Ӿ`٤@ ^+HxEMF^(YE4Ʃ]1<`mAkyˍǜԫWNp8h"-}Nuw!@ͼS.(#hfz=aθG2!.(TݐfPkfk0 fT;_{ڐ9W.:khsQJvWi}7/*r[ҦTXg"`Qqk{P]%|.JSݿ_P`LE$ɠ'W=f^?f =}S=U|ַK:ۅ-ì gB_6oTkx[TK_?NY6uU-tm *gΣNwW䟓 l$GUmK5=^<1A"̑1ABKMQ1ѕCWRBН?O Kc:`ì.\4u80ɋq몭ERS 87GR,Z{YQ$) .~#A<epe);:qyIḈNoÓNj >Q-XČAiJSyX0{shgV($ǝfpy G]%,[a3v>I:dGVyI͟ ܄vNssI B[BCA'RWKs"#*X a֙rfH 0ӜSG.[\\8,('Z] еe yа{EMPU/M/t,f /bҩΥ t2?l(jgk}^_|eɪɈ4cגCd& Nj{Y\u%'NQ`N0OκI9\ bv9\ SK^"'C1MM?=*ODVF"=pv5>"sIv$&)؉Y ).Or扱fHb^>vӾJw[u/{N&l# z|I9_()0Wi~*M|2g"^RA^1 저UZi饛LIr BFvq|!~@qN1}ƛ\]2qvȖz|_Jdƾ5kb^.vI1T# )0[QL Y-`*dNTӖr@ [FE+O};\v(kzc2AD L,Ei 5 @Ό9$R`kįe&~OpxSF[盍\:nR`j)5<@rd#˾+xFc|3f쩛kWizwAڮweߣA@B S*+3SG$$_4D]囙r![ Wjש[q֪V3}P2~V : n塪Uبl8@*+x׋Tx$d[vo Z:ڈ TkFe{2əyBK>0 YZEpi/data/testisDK.rda0000644000175100001440000003750414421664404014156 0ustar hornikusers7zXZi"6!X`s?])TW"nRʟ$!K{yN+, C<:ZB\vBhgJDG9)=CMO(0$Ht|x%6z-8o]7&%)y]K+ٵ=c"aswQǵɅ{y5SC6SL_gIW0{5tlGųU aj&nk5J(n' #Q.os':f]Hv2}M><9L i.riv\j 7!$|Qvj[U9ܪHFrt.4wEX#>(]=ב^|㌅eۃ@&v[jZԼRiU)3C`礉:Q7Io'j}izI5=Iz # jngct5qPf͋ٷ,68RF?PQ<]Ԣ[cִW@. {O,'?o(3xDo^kc% Ԡ::|=% zBwJqp41y{lm5Sɂ*$L$m9U?u(QÍ׸\\̒<8cE, ,ZXqYu"d{oeQX{40Xe;u(xW;:Jp@_1Ei$)kR.xU671D,8m \? mu"fsɶ^mx &@/0>0~pخqyb }6iIf'=0?A-w5q;6~@.VD3..Cwg._ jgxe f*9_)9,O~BY ^%55{|_Uk:}Few\h7j_{\t~t6l+,bWjwu|zAPʸX5]g#C=qVжho}UC#SBVk|Е&m, g3rOk.PB/" X G|k̭* k;q+KwRhyڦ%E%42n{(_gL(lKi5ݫ]H0:} dq!q] 휦D5QlVX q:Qnhrԋu=DS5{B/TeDz@hCn(}[`C/#2ӈ=Qw۸C?XcfyAT=QU]ZnMG W(XQZzH+x[ϿY~bO'ێM #H>SmesoB.^I)AkTBķ$)DsxPٍ'5W'nS'  ln߁cRă@7(gaQ:Wrw[]6aLNfKM=b\Vبuy6u9bFt~g}Ԫ13cw k#yBHSlՐǘGF a ޹eL-hKc7]=ԯRHM)-_JaÊ$>n$ט [JQCb]*Jh[eKN,%lfpcRS-! llBXumjME Ԭ;C23}Zx+hNIP.%WC[lr1UCoj}V7 {ɡC\I1ovS{g/ɂ:L9f!P!s^ mM:P\?PvӘ`-7 p@>6L#$ua5_= %8K ` UY|Z)8U<qU8O+d1)n~/a'ONHpcz;(&ѵZ Pf{EBCjՐEfq 0cibr;J"k^q$#SI {b BkkO^t~#V0|< n7D'gF7e42ҾAp}/W"TN1GL^9Ҫ_'4 /3m.[df$\C;Q&SF+/#͑qJSBaq F&&5cT$S~)s#]7Oɂ=5fZLE%k;~g@zf4@w_<<4zCFvnZK6M r`g myPs¢^K?0zS\[lڒZEV`?1:ޗҢ.2x%IGȂoiZ1\`#~r\7=O S6)Irx_R왼` %^Y߉X{ c }EI x"s ),'l1unCkd r=OGy瀘+⹖Y6^T4e }+%c=.y,J(xk< ~)W&sNFg(ӾIOpuҌu"yN:ej", ")."b';l҅v@?*<(xS3 KnIqVgb4sj+g$L11;S_kβ[.=gcQ[ 8._q̭ϲ28ev_y&E OIQIʟ*MB"KluIH3#PPy؃,GG'ƷA]r:ũϔӞo`?qY땥\+~5kH౒Uˆ&zQ6m BDV QZ3dDF g1|x8[׷ό$OY7pY@s(PE~tiK7>YoKgUޕs@ ZMBj}"}jIEM5u5C0r,;.uvySSUtMOs:;R8K̯,V~oPF˝1_;ȶ9zЀ̪σ!27'۾!2.t8/>IUn< $:ۓ c{jxpXz!U0Xꡒ!rwl͕CbD&n@:=LᣭĬDԡ4,".O2Uqp^kK89vT&DM|Szې#tщq~TGLR '$נ}4 r惵U|%ÑDUζ985y6sh$DcF6u:"2 IY%Ps/3*v׹ yEYf|H"CM}nr j1 2 {QHJ?e/> saݟ~DlCxx^Oq*ŵm<SCٙloY%>% <;Gr0= >v++fEǞ< Xȹ7*\(K|tM^gC8(?KCk*l5{cdA]l>Y( Cؤ4P)Z[Èoo 3ݠ[ײRGl-Dطv?%;- ?[THq[a)}X(:DZyZTNoQI|zǯ\}J*|06pL((%фwX=CKE`dv6<↱)?S8qD t%t4E4unM5ք*OZP_ xU j+'8)*L(3 Z)iRHbohO4g_>c;|bq|w#"y۴ݮ3uldK>f!:TơIqWD哱uYvfK֦ML/ J"rK Dlsvlk{H, ъ{XmwFDAqg!ulQ G IʴAХf@(7`zﱏ+W#sRL.HkFuhv`^A ͸YCxFCbKXd*̫yN^ LC!E􄜎LQC#,9\j}@ %l6-"b*7}7~dFeUm3 7(v+d̎]z^6h+ 4m4<!01i?E$blisRLL-7]z&MJeikh_ &h@< 6(= :.a6/dIYvDuVFp\0p(?žIf/f߰nt6;mXh޿"fI c&wjC=Ӡ3>uQ]ΖL7cШq7YE`B^jRWYł`^\5YZ4m@B bLvU )to#O,:B|` U%9 ,&z%Q<ἓzDHFGIa#UZ5xBpO(\H~buf"/F#j7vU+ P)#Vf[D;y]=a̓6l9UP,2";lB !zɲmiJ 䖏SnŐ?R{ Buۍ$yr):mo1_;k᠗`ZPlPFFC?ՇnQ濡'xl~1SP"%!gml.Qp][Tm%f@hL0&#h0̣ a$L7j FHM͟fOxIk V'D]Q{'z .(ڋ>.x/ _o$*A&Ƿ/9uo96OsO=GFEp w_)FNi{I9 yZ/bW:(tplbV|!3( ZxwوwLL&j3-c/_HǵwIA2 &'16iq吰fhE-CrjQj^ӴLFS!EKm}VNUE,7-Ѯšcix.9xf{QßJf LKR}IWY·oMiA1GL̴#mQHs|નŸ(.?X~3%ݪ_325>ߜ̫MrWXA!t1*o(IE} +*NG3#owVӿ&KE<=r ve,1'#oUUx!4l矡_y@ ǏCu! =vkGg1,']̨jnI`.! y&UmL⤲'/^1e0W?6L 1#͉剟ZwrZa>OAȡtpS8o>e>]x&=鋾X|n%€}HB#([-T{Eؓ vKȁ#sl!Fwt /ڨy :U/(KęU4> `H3a{2Z,_U-@}oMa+P3'|l!45Y.7G"ϙ-mT5k(lL=}wi`Fjlr*裢+7Mȥ=h}d X fB̙g"b-t\T ck4 S|IhumV]=w{KN>,| ]v7{e7l7IU:R1}&_6dVBt(Oe6ʅ$or?FqLž.8TTaz x-8/eI *k@$嵁+54PŴ>49`Q,8OL{bڊ Qb3+ rIhx>Q`ՍOY(aXڲw Ng>RO"]Y1Ҋ-甎,-앸V ڒW}4zF@ij W~cg1L#\W}NdY8M$6Q$GG9tpb,򾗠` 0U%vXsP':j\jV 3Qٵ(̴0P $XLܳ,GUΥ9Y@WL^ .R`)Ό.ʓ 6v b.lX'kO;\ ڐgU}RPu 6kQ<Q= i=(>.&-R9S ض2^Ӻmi8VyLbC|| ;eD3%\ҽU2"\ʃa ]ED'3Yϸ o@`!aH)KܥqVI pΗhL}EV`*cJ_N#E'//૳_bday]5 ^tͲD컢¡;i@Wa;5kxƤHX)i)蓝Ř]kƠ;hB,8% &3 nӅ}"=}vNk|NUCHld-VAۇ\/9,,m [3oBh!?^|sVhQuJq3V|l5|~q)D4u6۞Jx_Jz GH(yɳ@n(n<XkGg4^‰Od񥶴~^Q ԰!>'for c=+l᧭{JlH i[@#lϽNinQU ܩPDugs:7d }d?X7*ē`yU׬4vc( l,QH(_,`7~,O1ss4*eQ'9Jo)ɡȰEYVsi.iӃͧ$J- r 4>mΤPݤmsHXl;zA^ |آ-Z o:@q_?ϸ,m=bkF dy9J? h0G%e0`! :Y8(~k~'1ttmZʪ/LX%+Wf15QbL"P vErᲫ!devJ +㌎o5iQk9k* Mx1e-zcz8}Z㘋T  owz[#t F 8搜t_^ހэ$M'p{7a\4G^8ad.E}rBmϘTDop<ͳB]!Cxbt)DyLc $T؆%|e\?ΩhIMlgl/(J߽&*eM0ઓ5PqmSf8 Y5M?j/0lJE2O}WXmİd82B sҨ꟬qC_W!77d~h ("j*HWq/dx P(na H r,VmI8!2C?W=`GUJj 6V ꚅ5=*]B$$ #f:3fw:ƶ}-SHP( u);| ~tEͳ<ՅYvk>UTax ΄ƣ()$Z 9oDx<=p{ߊfMo: cj伧Rt*Ũξ !"iOD'wQ"IwMG0ڵ53`$!@nz(./iۊ$$ @GE] r49\rRnlPgVV`iU7ˈgoP(?;}q?mkf9meRX Q^aܶ[| ź&phUzG\m^mρ81:ūM@$+`'胹S5Y?0 c\XDqm<M dT(R2՜D;)(&cga=Ul sggQG;5 8eOG)OGsfjaP\ct,ΕCCP?6' &?DIJJW}Ьt0pTh=)}x <:^5~ 9hL[=RmV풾p+G<1/E%ԞLw`|an+~Kv`3U{ F?'lּbpOI9o|S,'t9ug jEh# 5lɒ@M=#˘VKԊ˸ݻ5{OqKKt U*g&˟dWK\GzUoW;vYrT3nwpEAW&frw9D[#tsPq̕cC.úlqQ6G=O*|4f:Ge(NKT>}$aC qP!F2~]"ua푉Pmcfek5{7vS" [ qrέG謨 ;kPXoӱgi1]Z^qu b4ӑ\RwJT D h1~h$=F|l2scP+ mR(JgA4I/z<6KgA߀Mg; u WB_[%yU #F ymEm;FRs-CVkʛrĀ@-T `LZh<-,|Gℌo&2ζ(zT%:P< jX7psLYb(2m.sN1legHǜu _WH}EQM"+ SEg'5׺hf-hD:ghH1n#j;Bq{^R`lvsS[ڿm F\@]'`0:p{̃qq m~^̦إ@)/A[85"iaȳ԰y, _|N5N M_%e|U/j;zv^TNwp0ԝK>i2%XH3mPxW@"ɸߊZ^QBNW-^WaX "R0i+8ܜ댿JI:w_m|rVLd=z5h.F~ e͈gݩg՞ߓ5hvq 7;q#"'Z82_4 pX~j")D,*3|<4 )/#d g^/N:{$ėc3 4 '^e1S۾¡nAF}6B]輩ӡ2&(hlCA-)f/@H1U] _#vmy, {$y{?Ⱥ[~#Y .?-(4%>w]PϧV!ƎB++=ћεbHo>49R&2NwNF`i,M%&~r we9Hk|"Qh-\쏳 MS` 3tAhB%d!x Q@NF.`F!+?Ė/'x"6:6oNdapp N tb SL^Ք d }74dɂ-wGolO3fh,Fˎ A̔2xsy7*T64@,kXa0Unlݍ_x]) em?#mS9ixZEi7>2K2_w0yd[ͨ+ eT'AsyGOmMqE<=OfУ'~H\w4kɾ«+@ eMy"ۇZԈ.t  S9ioq'dG't@2|&`ݦfZTxѻ;W /PeZMjzW'jϝģ', s>AJxY0[QHhf wqWLJpA즃?%bۇNxp@|MAmo18?tivNJj^􈋼W$?6rW{ٳ D RFme8# !nw[V­D20': ׮o-Su~*gFPMd o7J*]]@/|łn7;V fD2ؐcDF[f"f~glW XHYߏ|#:S&Fu%p(6^RX̜ q\ irPU>{1 ̠OV&L`ޤ+u$~I'bi{B~gz<-\a2w!7 [Sk>] TU^IOU . ThnKW 9ih|$NN~  >0 YZEpi/man/0000755000175100001440000000000014255615222011564 5ustar hornikusersEpi/man/N2Y.Rd0000644000175100001440000000774213751040403012466 0ustar hornikusers\name{N2Y} \alias{N2Y} \title{ Create risk time ("Person-Years") in Lexis triangles from population count data. } \description{ Data on population size at equidistant dates and age-classes are used to estimate person-time at risk in Lexis-triangles, i.e. classes classified by age, period AND cohort (date of birth). Only works for data where age-classes have the same width as the period-intervals. } \usage{ N2Y( A, P, N, data = NULL, return.dfr = TRUE) } \arguments{ \item{A}{Name of the age-variable, which should be numeric, corresponding to the left endpoints of the age intervals.} \item{P}{Name of the period-variable, which should be numeric, corresponding to the date of population count.} \item{N}{The population size at date \code{P} in age class \code{A}.} \item{data}{A data frame in which arguments are interpreted.} \item{return.dfr}{Logical. Should the results be returned as a data frame (default \code{TRUE}) or as a table.} } \value{A data frame with variables \code{A}, \code{P} and \code{Y}, representing the mean age and period in the Lexis triangles and the person-time in them, respectively. The person-time is in units of the distance between population count dates. If \code{return.dfr=FALSE} a three-way table classified by the left end point of the age-classes and the periods and a factor \code{wh} taking the values \code{up} and \code{lo} corresponding to upper (early cohort) and lower (late cohort) Lexis triangles. } \details{The calculation of the risk time from the population figures is done as described in: B. Carstensen: Age-Period-Cohort models for the Lexis diagram. Statistics in Medicine, 26: 3018-3045, 2007. The number of periods in the result is one less than the number of dates (\code{nP=length(table(P))}) in the input, so the number of distinct values is \code{2*(nP-1)}, because the \code{P} in the output is coded differently for upper and lower Lexis triangles. The number of age-classes is the same as in the input (\code{nA=length(table(A))}), so the number of distinct values is \code{2*nA}, because the \code{A} in the output is coded differently for upper and lower Lexis triangles. In the paper "Age-Period-Cohort models for the Lexis diagram" I suggest that the risk time in the lower triangles in the first age-class and in the upper triangles in the last age-class are computed so that the total risk time in the age-class corresponds to the average of the two population figures for the age-class at either end of a period multiplied with the period length. This is the method used. } \references{ B. Carstensen: Age-Period-Cohort models for the Lexis diagram. Statistics in Medicine, 26: 3018-3045, 2007. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{splitLexis}}, \code{\link{apc.fit}} } \examples{ # Danish population at 1 Jan each year by sex and age data( N.dk ) # An illustrative subset ( Nx <- subset( N.dk, sex==1 & A<5 & P<1975 ) ) # Show the data in tabular form xtabs( N ~ A + P, data=Nx ) # Lexis triangles as data frame Nt <- N2Y( data=Nx, return.dfr=TRUE ) xtabs( Y ~ round(A,2) + round(P,2), data=Nt ) # Lexis triangles as a 3-dim array ftable( N2Y( data=Nx, return.dfr=FALSE ) ) # Calculation of PY for persons born 1970 in 1972 ( N.1.1972 <- subset( Nx, A==1 & P==1972)$N ) ( N.2.1973 <- subset( Nx, A==2 & P==1973)$N ) N.1.1972/3 + N.2.1973/6 N.1.1972/6 + N.2.1973/3 # These numbers can be found in the following plot: # Blue numbers are population size at 1 January # Red numbers are the computed person-years in Lexis triangles: Lexis.diagram(age=c(0,5), date=c(1970,1975), int=1, coh.grid=TRUE ) with( Nx, text(P,A+0.5,paste(N),srt=90,col="blue") ) with( Nt, text(P,A,formatC(Y,format="f",digits=1),col="red") ) text( 1970.5, 2, "Population count 1 January", srt=90, col="blue") text( 1974.5, 2, "Person-\nyears", col="red") } \keyword{Data} Epi/man/mat2pol.Rd0000644000175100001440000000236313751040403013426 0ustar hornikusers\name{mat2pol} \alias{mat2pol} \title{Plot columns of a matrix as stacked areas. } \description{\code{mat}rix to \code{pol}ygon: Plot columns of a matrix as stacked areas. } \usage{ mat2pol( pm, perm = 1:ncol(pm), x = as.numeric(rownames(pm)), col = rainbow(ncol(pm)), yl = 0:1, append = FALSE, ... ) } \arguments{ \item{pm}{Numerical matrix.} \item{perm}{integer vector of length \code{ncol(pm)}, used to permute the columns of \code{pm}.} \item{x}{Numeric. The x-axis of the plot.} \item{col}{Colors of the areas.} \item{yl}{y-axis limits.} \item{append}{Logical. Should the polygons be added to an exiating plot} \item{\dots}{Further parameters passed to \code{plot}.} } \details{The function is originally intended to plot stacked probabilities, hence the default of \code{0:1} for the y-axis. } \value{A matrix of \code{ncol(pm)+1} columns with the first equal to 0, and the remaining the cumulative sum of the columns of \code{pm[perm]}. The function is called for its side effect - the stacked polygons. } \author{Bendix Carstensen } \examples{ M <- cbind( sort(runif(10)), sort(runif(10)), sort(runif(10)) ) pm <- sweep( M, 1, apply(M,1,sum), "/" ) mat2pol( pm ) } \keyword{manip} Epi/man/Relevel.Rd0000644000175100001440000000714314003524375013455 0ustar hornikusers\name{Relevel} \alias{Relevel} \alias{Relevel.factor} \title{Reorder and combine levels of a factor} \description{ The levels of a factor are re-ordered so that the levels specified by \code{ref} appear first and remaining levels are moved down. This is useful for \code{contr.treatment} contrasts which take the first level as the reference. Factor levels may also be combined; two possibilities for specifying this are supported: hard coding or table look-up. } \usage{ \method{Relevel}{factor}( x, ref, first = TRUE, collapse="+", xlevels=TRUE, nogroup=TRUE, \dots ) } \arguments{ \item{x}{A(n unordered) factor} \item{ref}{Vector, list or data frame, array, matrix or table. If \code{ref} is a vector (integer or character), it is assumed it contains the names or numbers of levels to be the first ones; non mentioned levels are kept. If \code{ref} is a list (but not a data frame), factor levels mentioned in each list element are combined. If the list is named the names are used as new factor levels, otherwise new level names are constructed from the old. If \code{ref} is a data frame or 2-dimensional array, matrix or table, the first column is assumed to have unique levels of \code{x} and the second to have groupings of this, respectively. } \item{first}{Should the levels mentioned in \code{ref} (if it is a list) come before those not?} \item{collapse}{String used when constructing names for combined factor levels.} \item{xlevels}{Logical. Should all levels in the 2nd column of \code{ref} be maintained as levels of the result, or (if \code{FALSE}) only the actually occurring.} \item{nogroup}{Logical. Should levels present in the input but not in the 1st column of \code{ref} be maintained as levels after the grouping? If \code{FALSE}, NAs will be returned for such elements.} \item{\dots}{Arguments passed on to other methods.} } \value{ An unordered factor, where levels of \code{x} have been reordered and/or collapsed. } \details{ The facility where \code{ref} is a two-column matrix mimics the SAS-facility of formats where a dataset can be used to construct a format --- SAS format is the grouping tool for variable values. If \code{ref} is a two-column object and \code{ref[,2]} is a factor \code{Relevel} will preserve the order of levels from \code{ref[,2]}. } \author{Bendix Carstensen \url{http://bendixcarstensen.com}, Lars Jorge Diaz} \seealso{\code{\link{Relevel.Lexis}}} \examples{ # Grouping using a list (hard coding) # ff <- factor(sample(letters[1:5], 100, replace = TRUE)) table( ff, Relevel(ff, list( AB = 1:2, "Dee" = 4, c(3,5)))) table( ff, Relevel(ff, list( 5:4, Z = c("c", "a") ), coll = "-und-", first = FALSE ) ) ## Grouping using a two-column matrix as input: ## A factor with levels to be grouped together ff <- factor(c("Bear","Bear","Crocodile","Snake","Crocodile","Bear")) ff ## A grouping table (gg <- data.frame(Animal = c("Bear","Whale","Crocodile","Snake","Eagle"), Class = c("Mammal","Mammal","Reptile","Reptile","Bird"))) str(gg) Relevel(ff, gg, xlevels = FALSE) Relevel(ff, gg ) Relevel(ff, gg[c(1:5,5:1),]) ## This crashes with an error (GG <- rbind( gg, c("Bear","Reptile"))) try(Relevel(ff, GG)) ff <- factor(c(as.character(ff), "Jellyfish", "Spider")) Relevel(ff, gg) # excludes non-occupied levels Relevel(ff, gg, xlevels = FALSE) # If you do not want unknown animals classified, this returns NAs: Relevel(ff, gg, nogroup = FALSE) # Both Relevel(ff, gg, nogroup = FALSE, xlevels = FALSE) } \keyword{manip} Epi/man/gen.exp.Rd0000644000175100001440000002500613751040403013413 0ustar hornikusers\name{gen.exp} \alias{gen.exp} \title{ Generate covariates for drug-exposure follow-up from drug purchase records. } \description{ From records of drug purchase and possibly known treatment intensity, the time since first drug use and cumulative dose at prespecified times is computed. Optionally, lagged exposures are computed too, i.e. cumulative exposure a prespecified time ago. } \usage{ gen.exp( purchase, id="id", dop="dop", amt="amt", dpt="dpt", fu, doe="doe", dox="dox", breaks, use.dpt = ( dpt \%in\% names(purchase) ), push.max = Inf, rm.dose = FALSE, lags = NULL, lag.dec = 1, lag.pre = "lag.", pred.win = Inf ) } \arguments{ \item{purchase}{Data frame with columns \code{id}-person id, \code{dop} - \code{d}ate \code{o}f \code{p}urchase, \code{amt} - \code{am}oun\code{t} purchased, and optionally \code{dpt} - (\code{d}ose \code{p}er \code{t}ime) ("defined daily dose", DDD, that is), how much is assumed to be ingested per unit time. The units used for \code{dpt} is assumed to be units of \code{amt} per units of \code{dop}.} \item{id}{Character. Name of the id variable in the data frame.} \item{dop}{Character. Name of the \code{d}ate \code{o}f \code{p}urchase variable in the data frame.} \item{amt}{Character. Name of the \code{am}oun\code{t} purchased variable in the data frame.} \item{dpt}{Character. Name of the \code{d}ose-\code{p}er-\code{t}ime variable in the data frame.} \item{fu}{Data frame with \code{f}ollow-\code{u}p period for each person, the person id variable must have the same name as in the \code{purchase} data frame.} \item{doe}{Character. Name of the \code{d}ate \code{o}f \code{e}ntry variable.} \item{dox}{Character. Name of the \code{d}ate \code{o}f e\code{x}it variable.} \item{breaks}{Numerical vector of dates at which the time since first exposure, cumulative dose etc. are computed.} \item{use.dpt}{Logical: should we use information on dose per time.} \item{push.max}{Numerical. How much can purchases maximally be pushed forward in time. See details.} \item{rm.dose}{Logical. Should the dose from omitted period of exposure (due to the setting of \code{push.max}) be ignored. If \code{FALSE}, the cumulative dose will be the cumulation of the actually purchased amounts, regardless of how far the inception dates have been pushed.} \item{lags}{Numerical vector of lag-times used in computing lagged cumulative doses.} \item{lag.dec}{How many decimals to use in the construction of names for the lagged exposure variables} \item{lag.pre}{Character string used for prefixing names of lagged exposure variables. Aimed to facilitate the use of \code{gen.exp} for different drugs with the aim of merging information.} \item{pred.win}{The length of the window used for constructing the average dose per time used to compute the duration of the last purchase. Only used when \code{use.dpt=FALSE}. The default value \code{Inf} corresponds to using the time between first and last purchase of drug as the interval for computing average consumption per time, and thus the termination of use.} } \details{ The intention of this function is to generate covariates for a particular drug for the entire follow-up of each person. The reason that the follow-up prior to first drug purchase and post-exposure is included is that the covariates must be defined for all follow-up for each person in order to be useful for analysis of disease outcomes. The functionality is described in terms of calendar time as underlying time scale, because this will normally be the time scale for drug purchases and for entry and exit for persons. In principle the variables termed as dates might equally well refer to say the age scale, but this would then have to be true \emph{both} for the purchase data, the follow-up data and the \code{breaks} argument. Drug purchase records (in \code{purchase}) are used to construct measures of drug exposure at prespecified timepoints (in \code{breaks}) in follow-up intervals (in \code{fu}). Each person may have more than one follow-up interval. They should be disjoint, but this is not checked. If \code{use.dpt} is \code{TRUE} then the dose per time information is used to compute the exposure interval associated with each purchase. Exposure intervals are stacked, that is each interval is put after any previous. This means that the start of exposure to a given purchase can be pushed into the future. The parameter \code{push.max} indicates the maximally tolerated push. If this is reached by a person, the assumption is that some of the purchased drug may not be counted in the exposure calculations --- see \code{rm.dose}. The \code{dpt} can either be a constant, basically translating each purchased amount into exposure time the same way for all persons, or it can be a vector with different treatment intensities for each purchase. In any case the cumulative dose is computed taking \code{dpt} into account, unless \code{rm.dose} is \code{FALSE} in which case the actual purchased amount is cumulated. The latter is slightly counter-intuitive because we are using the \code{dpt} to push the intervals, and then disregard it when computing the cumulative dose. The counter argument is that if the limit \code{push.max} is reached, the actual dosage may be larger than indicated the \code{dpt}, and is essentially what this allows for. If \code{use.dpt} is \code{FALSE} then the exposure from one purchase is assumed to stretch over the time to the next purchase, so we are effectively allowing different dosing rates (dose per time) between purchases. Formally this approach conditions on the future, because the rate of consumption (the accumulation of cumulative exposure) is computed based on knowledge of when next purchase is made. Moreover, with this approach, periods of non-exposure does not exist, except after the last purchase where the future consumption rate is taken to be the average over the period of use (or a period of length \code{pred.win}), and hence defines a date of cessation of drug. Finally, if \code{use.dpt} is \code{FALSE}, at least two purchase records are required to compute the measures. Therefore persons with only one drug purchase record are ignored in calculations. } \value{A data frame with one record per person and follow-up date (\code{breaks}). Date of entry and date of exit are included too; but only follow-up in the intersetion of \code{range(breaks)} and \code{range(fu$doe,fu$dox)} is output. \describe{ \item{\code{id}}{person id.} \item{\code{dof}}{date of follow up, i.e. start of interval. Apart from possibly the first interval for each person, this will assume values in the set of the values in \code{breaks}. All other variables refer to status as of this date.} \item{\code{dur}}{the length (\code{dur}ation) of interval.} \item{\code{tfi}}{\code{t}ime \code{f}rom first \code{i}nitiation of drug.} \item{\code{off}}{Logical, indicating whether the person is \code{off} drug. So it is \code{FALSE} if the person is exposed at \code{dof}.} \item{\code{doff}}{\code{d}ate of latest transition to \code{off} drug. Note that tis defined also at dates after drug exposure has been resumed.} \item{\code{tfc}}{\code{t}ime \code{f}rom latest \code{c}essation of drug.} \item{\code{ctim}}{\code{c}umulative \code{tim}e on the drug.} \item{\code{cdos}}{\code{c}umulative \code{dos}e.} \item{\code{ldos}}{suffixed with one value per element in \code{lags}, the latter giving the cumulative doses \code{lags} before \code{dof}. } } } \author{Bendix Carstensen, \email{b@bxc.dk}. The development of this function was supported partly through a grant from the EFSD (European Foundation for the Study of Diabetes)} \seealso{ \code{\link{Lexis}}, \code{\link{cutLexis}}, \code{\link{mcutLexis}}, \code{\link{addCov.Lexis}}} \examples{ # Example data for drug purchases in 3 persons --- dates (dop) are # measured in years, amount purchased (amt) in no. pills and dose per # time (dpt) consequently given in units of pills/year. Note we also # include a person (id=4) with one purchase record only. n <- c( 10, 18, 8, 1 ) hole <- rep(0,n[2]) hole[10] <- 2 # to create a hole of 2 years in purchase dates # dates of drug purchase dop <- c( 1995.278+cumsum(sample(1:4/10,n[1],replace=TRUE)), 1992.351+cumsum(sample(1:4/10,n[2],replace=TRUE)+hole), 1997.320+cumsum(sample(1:4/10,n[3],replace=TRUE)), 1996.470 ) # purchased amounts mesured in no. pills amt <- sample( 1:3*50 , sum(n), replace=TRUE ) # prescribed dosage therefore necessarily as pills per year dpt <- sample( 4:1*365, sum(n), replace=TRUE ) # collect to purchase data frame dfr <- data.frame( id = rep(1:4,n), dop, amt = amt, dpt = dpt ) head( dfr, 3 ) # a simple dataframe for follow-up periods for these 4 persons fu <- data.frame( id = 1:4, doe = c(1995,1992,1996,1997)+1:4/4, dox = c(2001,2003,2002,2010)+1:4/5 ) fu # Note that the following use of gen.exp relies on the fact that the # purchase dataframe dfr has variable names "id", "dop", "amt" and # "dpt"" and the follow-up data frame fu has variable names "id", # "doe" and "dox" # 1: using the dosage information dposx <- gen.exp( dfr, fu = fu, use.dpt = TRUE, breaks = seq(1990,2015,0.5), lags = 2:4/4, lag.pre = "l_" ) format( dposx, digits=5 ) # 2: ignoring the dosage information, # hence person 4 with only one purchase is omitted xposx <- gen.exp( dfr, fu = fu, use.dpt = FALSE, breaks = seq(1990,2015,0.5), lags = 2:3/5 ) format( xposx, digits=5 ) # It is possible to have disjoint follow-up periods for the same person: fu <- fu[c(1,2,2,3),] fu$dox[2] <- 1996.2 fu$doe[3] <- 1998.3 fu # Note that drug purchase information for the period not at risk *is* used dposx <- gen.exp( dfr, fu = fu, use.dpt = TRUE, breaks = seq(1990,2015,0.1), lags = 2:4/4 ) format( dposx, digits=5 ) } \keyword{data manipulation} Epi/man/plotCIF.Rd0000644000175100001440000001132313751040403013344 0ustar hornikusers\name{plotCIF} \alias{plotCIF} \alias{stackedCIF} \title{Plotting Aalen-Johansen curves for competing events } \description{Function \code{plotCIF} plots, for one or more groups, the cumulative incidence curves for a selected event out of two or more competing events. Function \code{stackedCIF} plots, for one group or population, the cumulative incidence curves for two or more competing events such that the cumulative incidences are stacked upon each other. The CIFs are are estimated by the Aalen-Johansen method. } \usage{ ## S3 method for class 'survfit' plotCIF( x, event = 1, xlab = "Time", ylab = "Cumulative incidence", ylim = c(0, 1), lty = 1, col = "black", ... ) ## S3 method for class 'survfit' stackedCIF( x, group = 1, col = "black", fill = "white", ylim = c(0,1), xlab = "Time", ylab = "Cumulative incidence", ... ) } \arguments{ \item{x}{An object of class \code{\link{survfit}}, the \code{type} of \code{event} in \code{Surv()} being "\code{mstate}"; the first level of the event factor represents censoring and the remaining ones the alternative competing events. } \item{event}{Determines the event for which the cumulative incidence curve is plotted by \code{plotCIF}. } \item{group}{An integer showing the selected level of a possible grouping factor appearing in the model formula in \code{survfit} when plotting by \code{stackedCIF} } \item{col}{A vector specifying the plotting color(s) of the curve(s) for the different groups in \code{\link{plotCIF}}-- default: all "black". } \item{fill}{A vector indicating the colours to be used for shading the areas pertinent to the separate outcomes in \code{\link{stackedCIF}} - default: all \code{"white"}. } \item{xlab}{Label for the $x$-axis. } \item{ylab}{Label for the $y$-axis. } \item{ylim}{Limits of the $y$-axis. } \item{lty}{A vector specifying the line type(s) of the curve(s) for the different groups - default: all 1 (=solid). } \item{\dots}{Further graphical parameters to be passed. } } \details{ The order in which the curves with \code{\link{stackedCIF}} are piled upon each other is the same as the ordering of the values or levels of the competing events in the pertinent event variable. The ordering can be changed by permuting the levels as desired using function \code{Relevel}, after which \code{survfit} is called with the relevelled \code{event} variable in \code{Surv()} } \value{No value is returned but a plot is produced as a side-effect. } \references{Putter, H., Fiocco, M., Geskus, R.B. (2007). Tutorial in biostatistics: competing risks and multi-state models. Statistics in Medicine, 26: 2389--2430. } \author{Esa L{\"a}{\"a}r{\"a}, \email{esa.laara@oulu.fi} } \note{ Aalen-Johansen curves for competing events in several groups can also be plotted by function \code{\link{plot.survfit}} of the survival library as well as by some functions in other packages covering analysis of time-to-event data.} \seealso{ \code{\link{survfit}}, \code{\link{plot}}, \code{\link{plot.survfit}}. } \examples{ library(survival) # requires version 2.39-4 or later head(mgus1) # Aalen-Johansen estimates of CIF are plotted by sex for two # competing events: (1) progression (pcm), and (2) death, in # a cohort of patients with monoclonal gammopathy. # The data are actually covering transitions from pcm to death, too, # for those entering the state of pcm. Such patients have two rows # in the data frame, and in their 2nd row the 'start' time is # the time to pcm (in days). # In our analysis we shall only include those time intervals with value 0 # for variable 'start'. Thus, the relevant follow-up time is represented # by variable 'stop' (days). For convenience, days are converted to years. fitCI <- survfit(Surv(stop/365.25, event, type="mstate") ~ sex, data= subset(mgus1, start==0) ) par(mfrow=c(1,2)) plotCIF(fitCI, event = 1, col = c("red", "blue"), main = "Progression", xlab="Time (years)" ) text( 38, 0.15, "Men", pos = 2) text( 38, 0.4, "Women", pos = 2) plotCIF(fitCI, event = 2, col = c("red", "blue"), main = "Death", xlab="Time (years)" ) text( 38, 0.8, "Men", pos = 2) text( 38, 0.5, "Women", pos = 2) par(mfrow=c(1,2)) stackedCIF(fitCI, group = 1, colour = c("gray80", "gray90"), main = "Women", xlab="Time (years)" ) text( 36, 0.15, "PCM", pos = 2) text( 36, 0.6, "Death", pos = 2) stackedCIF(fitCI, group = 2, colour = c("gray80", "gray90"), main = "Men", xlab="Time (years)" ) text( 39, 0.10, "PCM", pos = 2) text( 39, 0.6, "Death", pos = 2) } Epi/man/ROC.Rd0000644000175100001440000000747614255351532012515 0ustar hornikusers\name{ROC} \alias{ROC} %- Also NEED an `\alias' for EACH other topic documented here. \title{Function to compute and draw ROC-curves.} \description{ Computes sensitivity, specificity and positive and negative predictive values for a test based on dichotomizing along the variable \code{test}, for prediction of \code{stat}. Plots curves of these and a ROC-curve. } \usage{ ROC( test = NULL, stat = NULL, form = NULL, plot = c("sp", "ROC"), PS = is.null(test), PV = TRUE, MX = TRUE, MI = TRUE, AUC = TRUE, grid = seq(0,100,10), col.grid = gray( 0.9 ), cuts = NULL, lwd = 2, data = parent.frame(), ... ) } \arguments{ \item{test}{ Numerical variable used for prediction. } \item{stat}{ Logical variable of true status. } \item{form}{ Formula used in a logistic regression. If this is given, \code{test} and \code{stat} are ignored. If not given then both \code{test} and \code{stat} must be supplied. } \item{plot}{ Character variable. If "sp", the a plot of sensitivity, specificity and predictive values against test is produced, if "ROC" a ROC-curve is plotted. Both may be given.} \item{PS}{logical, if TRUE the x-axis in the plot "ps"-plot is the the predicted probability for \code{stat}==TRUE, otherwise it is the scale of \code{test} if this is given otherwise the scale of the linear predictor from the logistic regression.} \item{PV}{Should sensitivity, specificity and predictive values at the optimal cutpoint be given on the ROC plot? } \item{MX}{Should the ``optimal cutpoint'' (i.e. where sens+spec is maximal) be indicated on the ROC curve?} \item{MI}{Should model summary from the logistic regression model be printed in the plot?} \item{AUC}{Should the area under the curve (AUC) be printed in the ROC plot?} \item{grid}{Numeric or logical. If FALSE no background grid is drawn. Otherwise a grid is drawn on both axes at \code{grid} percent.} \item{col.grid}{Colour of the grid lines drawn.} \item{cuts}{Points on the test-scale to be annotated on the ROC-curve. } \item{lwd}{Thickness of the curves} \item{data}{Data frame in which to interpret the variables.} \item{\dots}{Additional arguments for the plotting of the ROC-curve. Passed on to \code{plot}} } \details{ As an alternative to a \code{test} and a \code{status} variable, a model formula may given, in which case the the linear predictor is the test variable and the response is taken as the true status variable. The test used to derive sensitivity, specificity, PV+ and PV- as a function of \eqn{x} is \code{test}\eqn{\geq x}{>=x} as a predictor of \code{stat}=TRUE. } \value{ A list with two components: \item{res}{dataframe with variables \code{sens}, \code{spec}, \code{pvp}, \code{pvn} and name of the test variable. The latter is the unique values of test or linear predictor from the logistic regression in ascending order with -Inf prepended. Since the sensitivity is defined as \eqn{P(test>x)|status=TRUE}, the first row has \code{sens} equal to 1 and \code{spec} equal to 0, corresponding to drawing the ROC curve from the upper right to the lower left corner.} \item{lr}{glm object with the logistic regression result used for construction of the ROC curve} 0, 1 or 2 plots are produced according to the setting of \code{plot}. } \author{Bendix Carstensen, Steno Diabetes Center & University of Copenhagen, \url{http://bendixcarstensen.com} } \examples{ x <- rnorm( 100 ) z <- rnorm( 100 ) w <- rnorm( 100 ) tigol <- function( x ) 1 - ( 1 + exp( x ) )^(-1) y <- rbinom( 100, 1, tigol( 0.3 + 3*x + 5*z + 7*w ) ) ROC( form = y ~ x + z, plot="ROC" ) } \keyword{manip} \keyword{htest} %\keyword{ROC-curves} %\keyword{sensitivity} %\keyword{specificity} %\keyword{predictive values} Epi/man/splitLexis.Rd0000644000175100001440000000673313751040403014215 0ustar hornikusers\name{splitLexis} \alias{splitLexis} \title{Split follow-up time in a Lexis object} \description{ The \code{splitLexis} function divides each row of a \code{Lexis} object into disjoint follow-up intervals according to the supplied break points. } \usage{ splitLexis(lex, breaks, time.scale, tol=.Machine$double.eps^0.5) } \arguments{ \item{lex}{an object of class \code{Lexis}} \item{breaks}{a vector of break points} \item{time.scale}{the name or number of the time scale to be split} \item{tol}{numeric value >= 0. Intervals shorter than this value are dropped} } \value{ An object of class \code{Lexis} with multiple rows for each row of the argument \code{lex}. Each row of the new \code{Lexis} object contains the part of the follow-up interval that falls inside one of the time bands defined by the break points. The variables representing the various time scales, are appropriately updated in the new \code{Lexis} object. The entry and exit status variables are also updated according to the rule that the entry status is retained until the end of follow-up. All other variables are considered to represent variables that are constant in time, and so are replicated across all rows having the same id value. } \note{ The \code{splitLexis()} function divides follow-up time into intervals using breakpoints that are common to all rows of the \code{Lexis} object. To split a \code{Lexis} object by break points that are unique to each row, use the \code{cut.Lexis} function. } \author{Martyn Plummer} \examples{ # A small bogus cohort xcoh <- structure( list( id = c("A", "B", "C"), birth = c("14/07/1952", "01/04/1954", "10/06/1987"), entry = c("04/08/1965", "08/09/1972", "23/12/1991"), exit = c("27/06/1997", "23/05/1995", "24/07/1998"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) # Convert the character dates into numerical variables (fractional years) xcoh$bt <- cal.yr( xcoh$birth, format="\%d/\%m/\%Y" ) xcoh$en <- cal.yr( xcoh$entry, format="\%d/\%m/\%Y" ) xcoh$ex <- cal.yr( xcoh$exit , format="\%d/\%m/\%Y" ) # See how it looks xcoh # Define as Lexis object with timescales calendar time and age Lcoh <- Lexis( entry = list( per=en ), exit = list( per=ex, age=ex-bt ), exit.status = fail, data = xcoh ) # Default plot of follow-up plot( Lcoh ) # With a grid and deaths as endpoints plot( Lcoh, grid=0:10*10, col="black" ) points( Lcoh, pch=c(NA,16)[Lcoh$lex.Xst+1] ) # With a lot of bells and whistles: plot( Lcoh, grid=0:20*5, col="black", xaxs="i", yaxs="i", xlim=c(1960,2010), ylim=c(0,50), lwd=3, las=1 ) points( Lcoh, pch=c(NA,16)[Lcoh$lex.Xst+1], col="red", cex=1.5 ) # Split time along two time-axes ( x2 <- splitLexis( Lcoh, breaks = seq(1900,2000,5), time.scale="per") ) ( x2 <- splitLexis( x2, breaks = seq(0,80,5), time.scale="age" ) ) str( x2 ) # Tabulate the cases and the person-years summary( x2 ) tapply( status(x2,"exit")==1, list( timeBand(x2,"age","left"), timeBand(x2,"per","left") ), sum ) tapply( dur(x2), list( timeBand(x2,"age","left"), timeBand(x2,"per","left") ), sum ) } \seealso{ \code{\link{timeBand}}, \code{\link{cutLexis}}, \code{\link{mcutLexis}}, \code{\link{summary.Lexis}}} \keyword{manip} Epi/man/transform.Lexis.Rd0000644000175100001440000001011614220407665015152 0ustar hornikusers\name{transform.Lexis} \alias{transform.Lexis} \alias{Relevel.Lexis} \alias{transform.stacked.Lexis} \alias{factorize} \alias{factorize.Lexis} \alias{levels.Lexis} \alias{order.Lexis} \alias{orderLexis} \alias{sortLexis} \title{Transform a Lexis (or stacked.Lexis) object} \description{ Modify a Lexis object. } \usage{ \method{factorize}{Lexis}(x, ..., verbose = FALSE) \method{Relevel}{Lexis}(x, ref, \dots) \method{levels}{Lexis}(x) \method{transform}{Lexis}(`_data`, \dots) \method{transform}{stacked.Lexis}(`_data`, \dots) order.Lexis(x) orderLexis(x) sortLexis(x) } \arguments{ \item{_data}{an object of class \code{Lexis}.} \item{x}{an object of class \code{Lexis}.} \item{ref}{New names (or order) of the factor levels (states) for \code{lex.Cst} and \code{lex.Xst}. Can be a list, in which case some levels are collapsed, see the documentation for \code{\link{Relevel}}. No sanity check for the latter type of operation is undertaken.} \item{\dots}{Additional arguments to be passed to \code{\link{transform.data.frame}}, \code{\link{Relevel.factor}}.} \item{verbose}{Logical. Should a list of new levels be printed?} % \code{order} or \code{sort}.} } \details{ The transform method for \code{Lexis} objects works exactly as the method for data frames, but keeps the \code{Lexis} attributes. \code{factorize} transforms the variables \code{lex.Cst} and \code{lex.Xst} to factors with identical sets of levels. \code{Relevel} does the same as \code{\link{Relevel.factor}}, but for both the factors \code{lex.Cst} and \code{lex.Xst} in \code{x}. \code{lex.Cst} and \code{lex.Xst} must be factors with the same levels. They can be made so by \code{factorize}. If \code{ref} is an integer or character vector, the levels of \code{lex.Cst} and \code{lex.Xst} are permuted to match the order of \code{ref}. If \code{ref} is \code{NULL}, as when for example the argument is not passed to the function, the returned object have levels of \code{lex.Cst}, \code{lex.Xst} (and for \code{stacked.Lexis} objects \code{lex.Tr}) shaved down to the actually occurring values; that is, empty levels are discarded. \code{order.Lexis} returns the order of the rows in a Lexis object to sort it by ()\code{lex.id},\code{ts}), where \code{ts} is a timescale in the Lexis object with no \code{NA}s. \code{orderLexis} is just a synonym. \code{sortLexis} returns the Lexis object sorted by (\code{lex.id}, \code{ts}) where \code{ts} is one of the \code{\link{timeScales}} with no \code{NA}s. } \value{ A transformed \code{Lexis} object. The function \code{levels} returns the names of the states (levels of the factors \code{lex.Cst} and \code{lex.Xst}. } \author{Martyn Plummer, Bendix Carstensen} \seealso{\code{\link{Lexis}}, \code{\link{merge.Lexis}}, \code{\link{subset.Lexis}}, \code{\link{subset.stacked.Lexis}}, \code{\link{Relevel}}, \code{\link{transient}}, \code{\link{absorbing}}} \examples{ data( nickel ) nic <- Lexis( data = nickel, id = id, entry = list(age = agein), exit = list(age = ageout, cal = ageout+dob, tfh = ageout-age1st), # Lung cancer deaths end as 2 and other deaths as 1 exit.status = factor((icd > 0) + (icd \%in\% c(162,163)), labels = c("Alive","Dead","Lung") ) ) str( nic ) levels( nic ) nit <- transform( nic, cumex = exposure * (agein - age1st) ) str( nit ) # It is still a Lexis object! summary(nic) # change order of levels nix <- Relevel(nic, c("Alive", "Lung", "Dead")) summary(nix) # change names of levels niw <- Relevel(nix, list("Alive" = 1, "Pulm" = "Lung", "Mort" = "Dead")) summary(niw) boxes(niw, boxpos = TRUE) # combine levels niz <- Relevel(niw, list("Alive", c("Pulm", "Mort")), coll=" \n& ") summary(niz) par( new = TRUE ) boxes(niz, boxpos = TRUE) #stack Lexis object siw <- stack(niw) str(siw) } \keyword{manip} Epi/man/lungDK.Rd0000644000175100001440000000361413751040403013234 0ustar hornikusers\name{lungDK} \alias{lungDK} \docType{data} \title{Male lung cancer incidence in Denmark} \description{ Male lung cancer cases and population riks time in Denmark, for the period 1943--1992 in ages 40--89. } \usage{data(lungDK)} \format{ A data frame with 220 observations on the following 9 variables. \tabular{rl}{ \code{A5}: \tab Left end point of the age interval, a numeric vector. \cr \code{P5}: \tab Left enpoint of the period interval, a numeric vector. \cr \code{C5}: \tab Left enpoint of the birth cohort interval, a numeric vector. \cr \code{up}: \tab Indicator of upper trianges of each age by period rectangle in the Lexis diagram. (\code{up=(P5-A5-C5)/5}). \cr \code{Ax}: \tab The mean age of diagnois (at risk) in the triangle. \cr \code{Px}: \tab The mean date of diagnosis (at risk) in the triangle. \cr \code{Cx}: \tab The mean date of birth in the triangle, a numeric vector. \cr \code{D}: \tab Number of diagnosed cases of male lung cancer. \cr \code{Y}: \tab Risk time in the male population, person-years. \cr } } \details{ Cases and person-years are tabulated by age and date of diagnosis (period) as well as date of birth (cohort) in 5-year classes. Each observation in the dataframe correponds to a triangle in a Lexis diagram. Triangles are classified by age and date of diagnosis, period of diagnosis and date of birth, all in 5-year groupings. } \source{The Danish Cancer Registry and Statistics Denmark. } \references{ For a more thorough exposition of statistical inference in the Lexis diagram, see: B. Carstensen: Age-Period-Cohort models for the Lexis diagram. Statistics in Medicine, 26: 3018-3045, 2007. } \examples{ data( lungDK ) # Draw a Lexis diagram and show the number of cases in it. attach( lungDK ) Lexis.diagram( age=c(40,90), date=c(1943,1993), coh.grid=TRUE ) text( Px, Ax, paste( D ), cex=0.7 ) } \keyword{datasets} Epi/man/AaJ.Lexis.Rd0000644000175100001440000000310114421662670013570 0ustar hornikusers\name{AaJ.Lexis} \alias{AaJ.Lexis} \title{The Aalen-Johansen estimator of state probabilities from a multistate \code{Lexis} object. } \description{ The Aalen-Johansen estimator is computed on the basis of a \code{\link{Lexis}} multistate object along a given time scale. The function is merely a wrapper for the \code{\link[survival]{survfit}}. } \usage{ \method{AaJ}{Lexis}(Lx, formula = ~ 1, timeScale = 1, \dots) } \arguments{ \item{Lx}{A \code{Lexis} object. The starting state must be the first among \code{levels(Lx)}. } \item{formula}{A one-sided formula passed on to \code{survfit}. } \item{timeScale}{Chararter or integer, selecting one of the timescales of the \code{Lexis} object. } \item{\dots}{arguments passed to or from other methods.} } \value{An object of class \code{survfitms} --- see \code{\link[survival]{survfit}}. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link[survival]{survfit}} \code{\link{ci.Crisk}} } \examples{ data(DMlate) str(DMlate) dml <- Lexis(entry = list(Per = dodm, Age = dodm-dobth, DMdur = 0 ), exit = list(Per = dox), exit.status = factor(!is.na(dodth), labels = c("DM","Dead")), data = DMlate ) # Cut the follow-up at insulin start dmi <- cutLexis(dml, cut = dml$doins, new.state = "Ins", split.state = TRUE) summary( dmi ) ms <- AaJ.Lexis(dmi, timeScale = "DMdur") class(ms) ms$states head(ms$pstate) } \keyword{models} Epi/man/lgrep.Rd0000644000175100001440000000221013751040403013150 0ustar hornikusers\name{lgrep} \alias{fgrep} \alias{ngrep} \alias{lgrep} \title{ Convenience versions of grep } \description{ Often you want the elements of a vector (or its names or levels) that meet a certain pattern. But \code{grep} only gives you the position, so these functions are designed to give you that. } \usage{ fgrep( pattern, x, ... ) ngrep( pattern, x, ... ) lgrep( pattern, x, ... ) } \arguments{ \item{pattern}{Pattern searched for.} \item{x}{Object where \code{pattern} is searched. Or in whose \code{names} or \code{levels} attributes \code{pattern} is sought.} \item{...}{Arguments passed on to \code{\link[base]{grep}}.} } \value{Elements of the input \code{x} (\code{fgrep}) or its names attribute (\code{ngrep}) or levels attribute (\code{lgrep}). } \author{Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com} } \seealso{\code{\link{grep}}} \examples{ ff <- factor( ll <- paste( sample( letters[1:3], 20, replace=TRUE ), sample( letters[1:3], 20, replace=TRUE ), sep="" ) ) ff fgrep( "a", ff ) fgrep( "a", ll ) ngrep( "a", ff ) lgrep( "a", ff ) lgrep( "a", ff, invert=TRUE ) } \keyword{ manip } Epi/man/Ns.Rd0000644000175100001440000001453613751040403012435 0ustar hornikusers\name{Ns} \alias{Ns} \title{ Natural splines - (cubic splines linear beyond outermost knots) with convenient specification of knots and possibility of centering, detrending and clamping. } \description{ This function is partly for convenient specification of natural splines in practical modeling. The convention used is to take the smallest and the largest of the supplied knots as boundary knots. It also has the option of centering the effects provided at a chosen reference point as well as projecting the columns on the orthogonal space to that spanned by the intercept and the linear effect of the variable, and finally fixing slopes beyond boundary knots (clamping). } \usage{ Ns( x, ref = NULL, df = NULL, knots = NULL, intercept = FALSE, Boundary.knots = NULL, fixsl = c(FALSE,FALSE), detrend = FALSE ) } \arguments{ \item{x}{A variable.} \item{ref}{Scalar. Reference point on the \code{x}-scale, where the resulting effect will be 0.} \item{df}{degrees of freedom.} \item{knots}{knots to be used both as boundary and internal knots. If \code{Boundary.knots} are given, this will be taken as the set of internal knots.} \item{intercept}{Should the intercept be included in the resulting basis? Ignored if any of \code{ref} or \code{detrend} is given.} \item{Boundary.knots}{The boundary knots beyond which the spline is linear. Defaults to the minimum and maximum of \code{knots}.} \item{fixsl}{Specification of whether slopes beyond outer knots should be fixed to 0. \code{FALSE} correponds to no restriction; a curve with 0 slope beyond the upper knot is obtained using \code{c(FALSE,TRUE)}. Ignored if \code{!(detrend==FALSE)}.} \item{detrend}{If \code{TRUE}, the columns of the spline basis will be projected to the orthogonal of \code{cbind(1,x)}. Optionally \code{detrend} can be given as a vector of non-negative numbers og length \code{length(x)}, used to define an inner product as \code{diag(detrend)} for projection on the orthogonal to \code{cbind(1,x)}. The default is projection w.r.t. the inner product defined by the identity matrix.} } \value{ A matrix of dimension c(length(x),df) where either \code{df} was supplied or if \code{knots} were supplied, \code{df = length(knots) - 1 + intercept}. \code{Ns} returns a spline basis which is centered at \code{ref}. \code{Ns} with the argument \code{detrend=TRUE} returns a spline basis which is orthogonal to \code{cbind(1,x)} with respect to the inner product defined by the positive definite matrix \code{diag(detrend)} (an assumption which is checked). Note the latter is data dependent and therefore making predictions with a \code{newdata} argument will be senseless. } \author{ Bendix Carstensen \email{b@bxc.dk}, Lars Jorge D\'iaz, Steno Diabetes Center Copenhagen. } \note{ The need for this function is primarily from analysis of rates in epidemiology and demography, where the dataset are time-split records of follow-up, and the range of data therefore rarely is of any interest (let alone meaningful). In Poisson modeling of rates based on time-split records one should aim at having the same number of \emph{events} between knots, rather than the same number of observations. } \examples{ require(splines) require(stats) require(graphics) ns( women$height, df = 3) Ns( women$height, knots=c(63,59,71,67) ) # Gives the same results as ns: summary( lm(weight ~ ns(height, df = 3), data = women) ) summary( lm(weight ~ Ns(height, df = 3), data = women) ) # Get the diabetes data and set up as Lexis object data(DMlate) DMlate <- DMlate[sample(1:nrow(DMlate),500),] dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) # Split follow-up in 1-year age intervals dms <- splitLexis( dml, time.scale="Age", breaks=0:100 ) summary( dms ) # Model age-specific rates using Ns with 6 knots # and period-specific RRs around 2000 with 4 knots # with the same number of deaths between each pair of knots n.kn <- 6 ( a.kn <- with( subset(dms,lex.Xst=="Dead"), quantile( Age+lex.dur, probs=(1:n.kn-0.5)/n.kn ) ) ) n.kn <- 4 ( p.kn <- with( subset( dms, lex.Xst=="Dead" ), quantile( Per+lex.dur, probs=(1:n.kn-0.5)/n.kn ) ) ) m1 <- glm( lex.Xst=="Dead" ~ Ns( Age, kn=a.kn ) + Ns( Per, kn=p.kn, ref=2000 ), offset = log( lex.dur ), family = poisson, data = dms ) # Plot estimated age-mortality curve for the year 2005 and knots chosen: nd <- data.frame( Age=seq(40,100,0.1), Per=2005, lex.dur=1000 ) par( mfrow=c(1,2) ) matplot( nd$Age, ci.pred( m1, newdata=nd ), type="l", lwd=c(3,1,1), lty=1, col="black", log="y", ylab="Mortality rates per 1000 PY", xlab="Age (years)", las=1, ylim=c(1,1000) ) rug( a.kn, lwd=2 ) # Clamped Age effect to the right of rightmost knot. m1.c <- glm( lex.Xst=="Dead" ~ Ns( Age, kn=a.kn, fixsl=c(FALSE,TRUE) ) + Ns( Per, kn=p.kn, ref=2000 ), offset = log( lex.dur ), family = poisson, data = dms ) # Plot estimated age-mortality curve for the year 2005 and knots chosen. matplot( nd$Age, ci.pred( m1.c, newdata=nd ), type="l", lwd=c(3,1,1), lty=1, col="black", log="y", ylab="Mortality rates per 1000 PY", xlab="Age (years)", las=1, ylim=c(1,1000) ) rug( a.kn, lwd=2 ) par( mfrow=c(1,1) ) # Including a linear Age effect of 0.05 to the right of rightmost knot. m1.l <- glm( lex.Xst=="Dead" ~ Ns( Age, kn=a.kn, fixsl=c(FALSE,TRUE) ) + Ns( Per, kn=p.kn, ref=2000 ), offset = log( lex.dur ) + pmax( Age, max( a.kn ) ) * 0.05, family = poisson, data = dms ) # Plot estimated age-mortality curve for the year 2005 and knots chosen. nd <- data.frame(Age=40:100,Per=2005,lex.dur=1000) matplot( nd$Age, ci.pred( m1.l, newdata=nd ), type="l", lwd=c(3,1,1), lty=1, col="black", log="y", ylab="Mortality rates per 1000 PY", xlab="Age (years)", las=1, ylim=c(1,1000) ) rug( a.kn, lwd=2 ) } \keyword{regression} Epi/man/Lexis.Rd0000644000175100001440000002201414224310212013121 0ustar hornikusers\name{Lexis} \alias{Lexis} \alias{print.Lexis} \title{Create a Lexis object of follow-up} \description{ Create an object of class \code{Lexis} to represent follow-up in multiple states on multiple time scales. } \usage{ Lexis( entry, exit, duration, entry.status = 0, exit.status = 0, id, data, merge = TRUE, states, notes = TRUE, tol = .Machine$double.eps^0.5, keep.dropped = FALSE) \method{print}{Lexis}(x, ..., td = 2, nd = 3, rnam = FALSE, org = FALSE) } \arguments{ \item{entry}{a named list of entry times. Each element of the list is a numeric variable representing the entry time on the named time scale. The name of the elements of the list will appear as names of variables designated as timescales in the resulting object. All time scales must have the same units (e.g. years). The names of the timescales must be different from any column name in \code{data}.} \item{exit}{a named list of exit times.} \item{duration}{a numeric vector giving the duration of follow-up.} \item{entry.status}{a vector or a factor giving the status at entry} \item{exit.status}{a vector or factor giving status at exit. Any change in status during follow-up is assumed to take place exactly at the exit time.} \item{id}{a vector giving a unique identity value for each person represented in the Lexis object. Defaults to \code{1:nrow(data)}} \item{data}{an optional data frame, list, or environment containing the variables. If not found in \code{data}, the variables are taken from the environment from which \code{Lexis} was called.} \item{merge}{a logical flag. If \code{TRUE} then the \code{data} argument will be coerced to a data frame and then merged with the resulting \code{Lexis} object.} \item{states}{A vector of labels for the states. If given, the state variables \code{lex.Cst} and \code{lex.Xst} are returned as factors with identical levels attributes equal to \code{states}.} \item{notes}{Logical. Should notes on entry states and time be given.} \item{tol}{Numerical tolerance for follow-up time. Rows with duration less than this value are automatically dropped.} \item{keep.dropped}{Logical. Should dropped rows from \code{data} be saved as an attribute with the object for inspection?} \item{x}{A \code{Lexis} object.} \item{td}{Number of digits after the decimal separator used for timescales and \code{lex.dur} when printing} \item{nd}{Number of digits after the decimal separator used for other numerical variables in the \code{Lexis} object.} \item{rnam}{Logical, should row names be printed?} \item{org}{Logical, should columns be printed in the original order?} \item{ ... }{Other parameters passed on to \code{print.data.frame}.} } \details{ The analysis of long-term population-based follow-up studies typically requires multiple time scales to be taken into account, such as age, calender time, or time since an event. A \code{Lexis} object is a data frame with additional attributes that allows these multiple time dimensions of follow-up to be managed. Separate variables for current end exit state allows representation of multistate data. Lexis objects are named after the German demographer Wilhelm Lexis (1837-1914), who is credited with the invention of the "Lexis diagram" for representing population dynamics simultaneously by several timescales in the book "Einleitung in die Theorie der Bevolkerungsstatistik" from 1875. The \code{Lexis} function can create a minimal \code{Lexis} object with only those variables required to define the follow-up history in each row. Additional variables can be merged into the \code{Lexis} object using the \code{merge} method for \code{Lexis} objects. The latter is the default. The \code{print} method prints the time-scale variables and other numerical variables rounded, possibly differently. Reorders columns so the Lexis-specific variables comes first. Returns (invisibly) a character vector with the (re)ordering of the columns in the object, even if \code{org = TRUE} is set. There are also \code{merge}, \code{subset}, \code{transform} and many other methods for \code{Lexis} objects. They work as the corresponding methods for data-frames but ensures that the result is a \code{Lexis} object. } \note{ Only two of the three arguments \code{entry}, \code{exit} and \code{duration} need to be given. If the third parameter is missing, it is imputed. \code{entry}, \code{exit} must be numeric, using \code{\link{Date}} variables will cause some of the utilities to crash. Transformation by \code{\link{cal.yr}} is recommended. If only either \code{exit} or \code{duration} are supplied it is assumed that \code{entry} is 0. This is only meaningful (and therefore checked) if there is only one timescale. If any of \code{entry.status} or \code{exit.status} are of mode character, they will both be converted to factors. If \code{entry.status} is not given, then its class is automatically set to that of \code{exit.status}. If \code{exit.status} is a character or factor, the value of \code{entry.status} is set to the first level. This may be highly undesirable, and therefore noted. For example, if \code{exit.status} is character the first level will be the first in the alphabetical ordering; slightly unfortunate if values are \code{c("Well","Diseased")}. If \code{exit.status} is logical, the value of \code{entry.status} set to \code{FALSE}. If \code{exit.status} is numeric, the value of \code{entry.status} set to 0. If \code{entry.status} or \code{exit.status} are factors or character, the corresponding state variables in the returned \code{Lexis} object, \code{lex.Cst} and \code{lex.Xst} will be (unordered) factors with identical set of levels, namely the union of the levels of \code{entry.status} and \code{exit.status}. } \value{ An object of class \code{Lexis}. This is represented as a data frame with a column for each time scale (with names equal to the union of the names of \code{entry} and \code{exit}), and additional columns with the following names: \item{lex.id}{Identification of the persons.} \item{lex.dur}{Duration of follow-up.} \item{lex.Cst}{Entry status (\code{C}urrent \code{st}ate), i.e. the state in which the follow up takes place.} \item{lex.Xst}{Exit status (e\code{X}it \code{st}ate), i.e. that state taken up after \code{dur} in \code{lex.Cst}.} If \code{merge=TRUE} (the default) then the \code{Lexis} object will also contain all variables from the \code{data} argument. } \author{Martyn Plummer with contributions from Bendix Carstensen} \examples{ # A small bogus cohort xcoh <- structure(list( id = c("A", "B", "C"), birth = c("14/07/1952", "01/04/1954", "10/06/1987"), entry = c("04/08/1965", "08/09/1972", "23/12/1991"), exit = c("27/06/1997", "23/05/1995", "24/07/1998"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame") # Convert the character dates into numerical variables (fractional years) xcoh <- cal.yr(xcoh, format="\%d/\%m/\%Y", wh=2:4) # xcoh <- cal.yr(xcoh, format="%d/%m/%Y", wh=2:4) # See how it looks xcoh str( xcoh ) # Define a Lexis object with timescales calendar time and age Lcoh <- Lexis(entry = list(per = entry ), exit = list(per = exit, age = exit - birth), exit.status = fail, data = xcoh) # Using character states may have undesired effects: xcoh$Fail <- c("Dead","Well","Dead") xcoh L1 <- Lexis(entry = list(per = entry), exit = list(per = exit, age = exit - birth), exit.status = Fail, data = xcoh) L1 # people start being dead! # ...unless you order the levels sensibly xcoh$Fail <- factor(xcoh$Fail, levels = c("Well", "Dead")) L2 <- Lexis(entry = list(per = entry), exit = list(per = exit, age = exit - birth), exit.status = Fail, data = xcoh) L2 # behaviour of print method: L2[,1:6] L2[,6:1] print(L2[,6:1], org=TRUE) (print(L2[,-3])) } \seealso{ \code{\link{plot.Lexis}}, \code{\link{splitLexis}}, \code{\link{cutLexis}}, \code{\link{mcutLexis}}, \code{\link{rcutLexis}}, \code{\link{addCov.Lexis}}, % \code{\link{glm.Lexis}}, % \code{\link{gam.Lexis}}, % \code{\link{coxph.Lexis}}, \code{\link{merge.Lexis}}, \code{\link{subset.Lexis}}, \code{\link{cbind.Lexis}}, \code{\link{rbind.Lexis}}, \code{\link{transform.Lexis}}, \code{\link{summary.Lexis}}, \code{\link{timeScales}}, \code{\link{timeBand}}, \code{\link{entry}}, \code{\link{exit}}, \code{\link{transient}}, \code{\link{absorbing}}, \code{\link{dur}} } \keyword{survival} \keyword{manip} Epi/man/Y.dk.Rd0000644000175100001440000000267113751040403012657 0ustar hornikusers\name{Y.dk} \alias{Y.dk} \docType{data} \title{Population risk time in Denmark} \description{ Risk time (person-years) in the Danish population, classified by sex, age, period and date of birth in 1-year classes. This corresponds to triangles in a Lexis diagram. } \usage{data(Y.dk)} \format{ A data frame with 13860 observations on the following 6 variables. \describe{ \item{\code{sex}}{Sex. 1:males, 2:females} \item{\code{A}}{One-year age class} \item{\code{P}}{Period} \item{\code{C}}{Birth cohort} \item{\code{Y}}{Person-years} \item{\code{upper}}{Indicator of upper triangle in the Lexis diagram} } } \details{ The risk time is computed from the population size figures in \code{\link{N.dk}}, using the formulae devised in: B. Carstensen: Age-period-cohort models for the Lexis diagram. Statistics in Medicine, 10; 26(15):3018-45, 2007. } \source{ \url{http://www.statistikbanken.dk/statbank5a/SelectTable/omrade0.asp?SubjectCode=02&PLanguage=1&ShowNews=OFF} } \examples{ data(Y.dk) str(Y.dk) # Compute mean age, period for the triangles attach( Y.dk ) age <- A + (1+upper)/3 per <- P + (2-upper)/3 # Plot a Lexis diagram library( Epi ) Lexis.diagram( age=c(0,10), date=c(1990,2000), coh.grid=TRUE, int=1 ) box() # Print the person-years for males there text( per[sex==1], age[sex==1], formatC( Y[sex==1]/1000, format="f", digits=1 ) ) } \keyword{datasets} Epi/man/Icens.Rd0000644000175100001440000000673513751040403013120 0ustar hornikusers\name{Icens} \alias{Icens} \alias{print.Icens} \title{ Fits a regression model to interval censored data. } \description{ The models fitted assumes a piecewise constant baseline rate in intervals specified by the argument \code{breaks}, and for the covariates either a multiplicative relative risk function (default) or an additive excess risk function. } \usage{ Icens( first.well, last.well, first.ill, formula, model.type=c("MRR","AER"), breaks, boot=FALSE, alpha=0.05, keep.sample=FALSE, data ) } \arguments{ \item{first.well}{Time of entry to the study, i.e. the time first seen without event. Numerical vector.} \item{last.well}{Time last seen without event. Numerical vector.} \item{first.ill}{Time first seen with event. Numerical vector.} \item{formula}{Model formula for the log relative risk.} \item{model.type}{Which model should be fitted.} \item{breaks}{Breakpoints between intervals in which the underlying timescale is assumed constant. Any observation outside the range of \code{breaks} is discarded.} \item{boot}{Should bootstrap be performed to produce confidence intervals for parameters. If a number is given this will be the number of bootsrap samples. The default is 1000.} \item{alpha}{1 minus the confidence level.} \item{keep.sample}{Should the bootstrap sample of the parameter values be returned?} \item{data}{Data frame in which the times and formula are interpreted.} } \details{ The model is fitted by calling either \code{\link{fit.mult}} or \code{\link{fit.add}}. } \value{ An object of class \code{"Icens"}: a list with three components: \item{rates}{A glm object from a binomial model with log-link, estimating the baseline rates, and the excess risk if \code{"AER"} is specfied.} \item{cov}{A glm object from a binomial model with complementary log-log link, estimating the log-rate-ratios. Only if \code{"MRR"} is specfied.} \item{niter}{Nuber of iterations, a scalar} \item{boot.ci}{If \code{boot=TRUE}, a 3-column matrix with estimates and 1-\code{alpha} confidence intervals for the parameters in the model.} \item{sample}{A matrix of the parameterestimates from the bootstrapping. Rows refer to parameters, columns to bootstrap samples.} } \references{ B Carstensen: Regression models for interval censored survival data: application to HIV infection in Danish homosexual men. Statistics in Medicine, 15(20):2177-2189, 1996. CP Farrington: Interval censored survival data: a generalized linear modelling approach. Statistics in Medicine, 15(3):283-292, 1996. } \author{ Martyn Plummer, \email{martyn.plummer@r-project.org}, Bendix Carstensen, \email{b@bxc.dk} } \seealso{ \code{\link{fit.add}} \code{\link{fit.mult}} } \examples{ data( hivDK ) # Convert the dates to fractional years so that rates are # expressed in cases per year for( i in 2:4 ) hivDK[,i] <- cal.yr( hivDK[,i] ) m.RR <- Icens( entry, well, ill, model="MRR", formula=~pyr+us, breaks=seq(1980,1990,5), data=hivDK) # Currently the MRR model returns a list with 2 glm objects. round( ci.lin( m.RR$rates ), 4 ) round( ci.lin( m.RR$cov, Exp=TRUE ), 4 ) # There is actually a print method: print( m.RR ) m.ER <- Icens( entry, well, ill, model="AER", formula=~pyr+us, breaks=seq(1980,1990,5), data=hivDK) # There is actually a print method: print( m.ER ) } \keyword{ models } \keyword{ regression } \keyword{ survival } Epi/man/detrend.Rd0000644000175100001440000000265613751040403013502 0ustar hornikusers\name{detrend} \alias{detrend} \alias{decurve} \title{ Projection of a model matrix on the orthogonal complement of a trend or curvature.} \description{ The columns of a model matrix \code{M} is projected on the orthogonal complement to the matrix \code{(1,t)}, resp. \code{(1,t,t^2)}. Orthogonality is w.r.t. an inner product defined by the positive definite matrix matrix \code{diag(weight)}. Non-diagonal matrices defining the inner product is not supported. } \usage{ detrend( M, t, weight = rep(1, nrow(M)) ) decurve( M, t, weight = rep(1, nrow(M)) ) } \arguments{ \item{M}{A model matrix.} \item{t}{The trend defining a subspace. A numerical vector of length \code{nrow(M)}.} \item{weight}{ Weights defining the inner product of vectors \code{x} and \code{y} as \code{sum(x*w*y)}. A numerical vector of length \code{nrow(M)}, defaults to a vector of \code{1}s. Must be all non-negative.} } \details{ The functions are intended to be used in construction of particular parametrizations of age-period-cohort models. } \value{ \code{detrend} returns full-rank matrix with columns orthogonal to \code{(1,t)}; \code{decurve} returns full-rank matrix with columns orthogonal to \code{(1,t,t^2)}. } \author{ Bendix Carstensen, Steno Diabetes Center Copenhagen, \url{http://bendixcarstensen.com}, with essential help from Peter Dalgaard. } \seealso{ \code{\link{projection.ip}} } \keyword{array} Epi/man/births.Rd0000644000175100001440000000165513751040403013346 0ustar hornikusers\name{births} \alias{births} \docType{data} \title{Births in a London Hospital} \description{ Data from 500 singleton births in a London Hospital } \usage{data(births)} \format{ A data frame with 500 observations on the following 8 variables. \tabular{rl}{ \code{id}: \tab Identity number for mother and baby. \cr \code{bweight}: \tab Birth weight of baby. \cr \code{lowbw}: \tab Indicator for birth weight less than 2500 g. \cr \code{gestwks}: \tab Gestation period. \cr \code{preterm}: \tab Indicator for gestation period less than 37 weeks. \cr \code{matage}: \tab Maternal age. \cr \code{hyp}: \tab Indicator for maternal hypertension. \cr \code{sex}: \tab Sex of baby: 1:Male, 2:Female. \cr } } \source{ Anonymous } \references{ Michael Hills and Bianca De Stavola (2002). A Short Introduction to Stata 8 for Biostatistics, Timberlake Consultants Ltd } \examples{ data(births) } \keyword{datasets} Epi/man/nickel.Rd0000644000175100001440000000233113751040403013310 0ustar hornikusers\name{nickel} \alias{nickel} \docType{data} \title{A Cohort of Nickel Smelters in South Wales} \description{ The \code{nickel} data frame has 679 rows and 7 columns. The data concern a cohort of nickel smelting workers in South Wales and are taken from Breslow and Day, Volume 2. For comparison purposes, England and Wales mortality rates (per 1,000,000 per annum) from lung cancer (ICDs 162 and 163), nasal cancer (ICD 160), and all causes, by age group and calendar period, are supplied in the dataset \code{\link{ewrates}}. } \format{ This data frame contains the following columns: \tabular{rl}{ \code{id}: \tab Subject identifier (numeric) \cr \code{icd}: \tab ICD cause of death if dead, 0 otherwise (numeric) \cr \code{exposure}: \tab Exposure index for workplace (numeric) \cr \code{dob}: \tab Date of birth (numeric) \cr \code{age1st}: \tab Age at first exposure (numeric) \cr \code{agein}: \tab Age at start of follow-up (numeric) \cr \code{ageout}: \tab Age at end of follow-up (numeric) \cr } } \source{ Breslow NE, and Day N, Statistical Methods in Cancer Research. Volume II: The Design and Analysis of Cohort Studies. IARC Scientific Publications, IARC:Lyon, 1987. } \examples{ data(nickel) str(nickel) } \keyword{datasets} Epi/man/ci.cum.Rd0000644000175100001440000001242014220360713013222 0ustar hornikusers\name{ci.cum} \alias{ci.cum} \alias{ci.surv} \title{ Compute cumulative sum of estimates. } \description{ Computes the cumulative sum of parameter functions and the standard error of it. Used for computing the cumulative rate, or the survival function based on a \code{glm} with parametric baseline. } \usage{ ci.cum( obj, ctr.mat = NULL, subset = NULL, intl = NULL, alpha = 0.05, Exp = TRUE, ci.Exp = FALSE, sample = FALSE ) ci.surv( obj, ctr.mat = NULL, subset = NULL, intl = NULL, alpha = 0.05, Exp = TRUE, sample = FALSE ) } \arguments{ \item{obj}{A model object (of class \code{lm}, \code{glm}. } \item{ctr.mat}{Matrix or data frame. If \code{ctr.mat} is a matrix, it should be a contrast matrix to be multiplied to the parameter vector, i.e. the desired linear function of the parameters. If it is a data frame it should have columns corresponding to a prediction data frame for \code{obj}, see details for \code{\link{ci.lin}}.} \item{subset}{ Subset of the parameters of the model to which a matrix \code{ctr.mat} should be applied. } \item{intl}{ Interval length for the cumulation. Either a constant or a numerical vector of length \code{nrow(ctr.mat)}. If omitted taken as the difference between the two first elments if the first column in \code{ctr.mat}, assuming that that holds the time scale. A note is issued in this case.} \item{alpha}{Significance level used when computing confidence limits.} \item{Exp}{Should the parameter function be exponentiated before it is cumulated?} \item{ci.Exp}{Should the confidence limits for the cumulative rate be computed on the log-scale, thus ensuring that exp(-cum.rate) is always in [0,1]?} \item{sample}{Should a sample of the original parameters be used to compute a cumulative rate?} } \details{ The purpose of \code{ci.cum} is to the compute cumulative rate (integrated intensity) at a set of points based on a model for the rates. \code{ctr.mat} is a matrix which, when premultiplied to the parameters of the model returns the (log)rates at a set of equidistant time points. If log-rates are returned from the prediction method for the model, the they should be exponentiated before cumulated, and the variances computed accordingly. Since the primary use is for log-linear Poisson models the \code{Exp} parameter defaults to TRUE. Each row in the object supplied via \code{ctr.mat} is assumed to represent a midpoint of an interval. \code{ci.cum} will then return the cumulative rates at the \emph{end} of these intervals. \code{ci.surv} will return the survival probability at the \emph{start} of each of these intervals, assuming the the first interval starts at 0 - the first row of the result is \code{c(1,1,1)}. The \code{ci.Exp} argument ensures that the confidence intervals for the cumulative rates are always positive, so that exp(-cum.rate) is always in [0,1]. } \value{ A matrix with 3 columns: Estimate, lower and upper c.i. If \code{sample} is TRUE, a single sampled vector is returned, if \code{sample} is numeric a matrix with \code{sample} columns is returned, each column a cumulative rate based on a random sample from the distribution of the parameter estimates. \code{ci.surv} returns a 3 column matrix with estimate, lower and upper confidence bounds for the survival function. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ See also \code{\link{ci.lin}}, \code{\link{ci.pred}} } \examples{ # Packages required for this example library( splines ) library( survival ) data( lung ) par( mfrow=c(1,2) ) # Plot the Kaplan-meier-estimator plot( survfit( Surv( time, status==2 ) ~ 1, data=lung ) ) # Declare data as Lexis lungL <- Lexis(exit = list(tfd=time), exit.status = (status == 2) * 1, data = lung) summary(lungL) # Split the follow-up every 10 days sL <- splitLexis(lungL, "tfd", breaks=seq(0,1100,10)) summary(sL) # Fit a Poisson model with a natural spline for the effect of time (left # end points of intervals are used as covariate) mp <- glm(cbind(lex.Xst == 1, lex.dur) ~ Ns(tfd,knots = c(0, 50, 100, 200, 400, 700)), family = poisreg, data = sL) # mp is now a model for the rates along the time scale tfd # prediction data frame for select time points on this time scale nd <- data.frame(tfd = seq(5,995,10)) # *midpoints* of intervals Lambda <- ci.cum ( mp, nd, intl=10 ) surv <- ci.surv( mp, nd, intl=10 ) # Put the estimated survival function on top of the KM-estimator # recall the ci.surv return the survival at *start* of intervals matshade(nd$tfd - 5, surv, col = "Red", alpha = 0.15) # Extract and plot the fitted intensity function lambda <- ci.pred(mp, nd) * 365.25 # mortality matshade(nd$tfd, lambda, log = "y", ylim = c(0.2, 5), plot = TRUE, xlab = "Time since diagnosis", ylab = "Mortality per year") # same thing works with gam from mgcv library(mgcv) mg <- gam(cbind(lex.Xst == 1, lex.dur) ~ s(tfd), family = poisreg, data=sL ) matshade(nd$tfd - 5, ci.surv(mg, nd, intl=10), plot=TRUE, xlab = "Days since diagnosis", ylab="P(survival)") matshade(nd$tfd , ci.pred(mg, nd) * 365.25, plot=TRUE, log="y", xlab = "Days since diagnosis", ylab="Mortality per 1 py") } \keyword{models} \keyword{regression} Epi/man/occup.Rd0000644000175100001440000000333313751040403013157 0ustar hornikusers\name{occup} \alias{occup} \docType{data} \title{ A small occupational cohort } \description{This is the data that is behind the illustrative Lexis diagram in Breslow & Day's book on case-control studies.} \usage{data(occup)} \format{ A data frame with 13 observations on the following 4 variables. \describe{ \item{\code{AoE}}{a numeric vector, Age at Entry} \item{\code{DoE}}{a numeric vector, Date of entry} \item{\code{DoX}}{a numeric vector, Date of eXit} \item{\code{Xst}}{eXit status \code{D}-event, \code{W}-withdrawal, \code{X}-censoring} } } \references{ Breslow & Day: Statistical Methods in Cancer Research, vol 1: The analysis of case-control studies, figure 2.2, p. 48.} \examples{ data(occup) lx <- Lexis( entry = list( per=DoE, age=AoE ), exit = list( per=DoX ), entry.status = "W", exit.status = Xst, data = occup ) plot( lx ) # Split follow-up in 5-year classes sx <- splitLexis( lx, seq(1940,1960,5), "per" ) sx <- splitLexis( sx, seq( 40, 60,5), "age" ) plot( sx ) # Plot with a bit more paraphernalia and a device to get # the years on the same physical scale on both axes ypi <- 2.5 # Years per inch dev.new( height=15/ypi+1, width=20/ypi+1 ) # add an inch in each direction for par( mai=c(3,3,1,1)/4, mgp=c(3,1,0)/1.6 ) # the margins set in inches by mai= plot(sx,las=1,col="black",lty.grid=1,lwd=2,type="l", xlim=c(1940,1960),ylim=c(40,55),xaxs="i",yaxs="i",yaxt="n", xlab="Calendar year", ylab="Age (years)") axis( side=2, at=seq(40,55,5), las=1 ) points(sx,pch=c(NA,16)[(sx$lex.Xst=="D")+1] ) box() # Annotation with the person-years PY.ann.Lexis( sx, cex=0.8 ) } \keyword{datasets} Epi/man/ccwc.Rd0000644000175100001440000000413413751040403012765 0ustar hornikusers\name{ccwc} \alias{ccwc} \title{Generate a nested case-control study} \usage{ ccwc( entry=0, exit, fail, origin=0, controls=1, match=list(), include=list(), data=NULL, silent=FALSE ) } \arguments{ \item{entry}{ Time of entry to follow-up } \item{exit}{ Time of exit from follow-up } \item{fail}{ Status on exit (1=Fail, 0=Censored) } \item{origin}{ Origin of analysis time scale } \item{controls}{ The number of controls to be selected for each case } \item{match}{ List of categorical variables on which to match cases and controls } \item{include}{ List of other variables to be carried across into the case-control study } \item{data}{ Data frame in which to look for input variables } \item{silent}{ If FALSE, echos a . to the screen for each case-control set created; otherwise produces no output. } } \description{ Given the basic outcome variables for a cohort study: the time of entry to the cohort, the time of exit and the reason for exit ("failure" or "censoring"), this function computes risk sets and generates a matched case-control study in which each case is compared with a set of controls randomly sampled from the appropriate risk set. Other variables may be matched when selecting controls. } \value{ The case-control study, as a dataframe containing: \item{Set}{ case-control set number } \item{Map}{ row number of record in input dataframe } \item{Time}{ failure time of the case in this set } \item{Fail}{ failure status (1=case, 0=control) } These are followed by the matching variables, and finally by the variables in the \code{include} list } \references{ Clayton and Hills, Statistical Models in Epidemiology, Oxford University Press, Oxford:1993. } \author{ David Clayton } \seealso{ \code{\link{Lexis}} } \examples{ # # For the diet and heart dataset, create a nested case-control study # using the age scale and matching on job # data(diet) dietcc <- ccwc( doe, dox, chd, origin=dob, controls=2, data=diet, include=energy, match=job) } \keyword{datagen} Epi/man/crr.Lexis.Rd0000644000175100001440000000737613763470050013742 0ustar hornikusers\name{crr.Lexis} \alias{crr.Lexis} \title{Fit a competing risks regression model (Fine-Gray model) using a Lexis object) } \description{ Fits a competing risks regression model using a \code{\link{Lexis}} object assuming that every person enters at time 0 and exits at time \code{lex.dur}. Thus is only meaningful for Lexis objects with one record per person, (so far). } \usage{ crr.Lexis( obj, mod, quiet=FALSE, ...) } \arguments{ \item{obj}{A Lexis object; variables in \code{mod} are taken from this.} \item{mod}{Formula, with the l.h.s. a character constant equal to a level of \code{obj$lex.Xst}, and the r.h.s. a model formula interpreted in \code{obj}.} \item{quiet}{Logical indicating whether a brief summary should be printed.} \item{\dots}{Further arguments passed on to \code{\link[cmprsk:crr]{crr}}.} } \details{ This function is a simple wrapper for \code{crr}, allowing a formula-specification of the model (which allows specifications of covariates on the fly), and utilizing the structure of Lexis objects to simplify specification of the outcome. Prints a summary of the levels used as event, competing events and censoring. By the structure of the \code{\link{Lexis}} object it is not necessary to indicate what the censoring code or competing events are, that is automatically derived from the \code{Lexis} object. Currently only one state is allowed as l.h.s. (response) in \code{mod}. } \value{ A \code{\link[cmprsk:crr]{crr}} object (which is a list), with two extra elements in the list, \code{model.Lexis} - the model formula supplied, and \code{transitions} - a table of transitions and censorings showing which transition was analysed and which were taken as competing events. } \author{Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link[cmprsk:crr]{crr}}, \code{\link{Lexis}} } \examples{ # Thorotrats patients, different histological types of liver cancer # Load thorotrast data, and restrict to exposed data(thoro) tht <- thoro[thoro$contrast==1,] # Define exitdate as the date of livercancer tht$dox <- pmin( tht$liverdat, tht$exitdat, na.rm=TRUE ) tht <- subset( tht, dox > injecdat ) # Convert to calendar years in dates tht <- cal.yr( tht ) # Set up a Lexis object with three subtypes of liver cancer and death tht.L <- Lexis( entry = list( per = injecdat, tfi = 0 ), exit = list( per = dox ), exit.status = factor( 1*hepcc+2*chola+3*hmang+ 4*(hepcc+chola+hmang==0 & exitstat==1), labels=c("No cancer","hepcc","chola","hmang","Dead") ), data = tht ) summary( tht.L ) # Show the transitions boxes( tht.L, boxpos=list(x=c(20,rep(80,3),30), y=c(60,90,60,30,10) ), show.BE="nz", scale.R=1000 ) # Fit a model for the Hepatocellular Carcinoma as outcome # - note that you can create a variable on the fly: library( cmprsk ) hepcc <- crr.Lexis( tht.L, "hepcc" ~ volume + I(injecdat-1940) ) hepcc$model.Lexis hepcc$transitions # Models for the three other outcomes: chola <- crr.Lexis( tht.L, "chola" ~ volume + I(injecdat-1940) ) hmang <- crr.Lexis( tht.L, "hmang" ~ volume + I(injecdat-1940) ) dead <- crr.Lexis( tht.L, "Dead" ~ volume + I(injecdat-1940) ) # Compare the effects # NOTE: This is not necessarily a joint model for all transitions. zz <- rbind( ci.exp(hepcc), ci.exp(chola), ci.exp(hmang), ci.exp(dead) ) zz <- cbind( zz[c(1,3,5,7) ,], zz[c(1,3,5,7)+1,] ) rownames( zz ) <- c("hepcc","chola","hmang","dead") colnames( zz )[c(1,4)] <- rownames( ci.exp(chola) ) round( zz, 3 ) } \keyword{survival} Epi/man/bdendo.Rd0000644000175100001440000000423513751040403013303 0ustar hornikusers\name{bdendo} \alias{bdendo} \alias{bdendo11} \docType{data} \title{A case-control study of endometrial cancer} \description{ The \code{bdendo} data frame has 315 rows and 13 columns, \code{bdendo11} 126 rows. These data concern a study in which each case of endometrial cancer was matched with 4 controls. \code{bdendo11} is a 1:1 mathed subset of \code{bdendo}. Matching was by date of birth (within one year), marital status, and residence. } \format{ These data frames have the following columns: \tabular{rl}{ \code{set}: \tab Case-control set: a numeric vector \cr \code{d}: \tab Case or control: a numeric vector (1=case, 0=control) \cr \code{gall}: \tab Gall bladder disease: a factor with levels \code{No} \code{Yes}. \cr \code{hyp}: \tab Hypertension: a factor with levels \code{No} \code{Yes}. \cr \code{ob}: \tab Obesity: a factor with levels \code{No} \code{Yes}. \cr \code{est}: \tab A factor with levels \code{No} \code{Yes}. \cr \code{dur}: \tab Duration of conjugated oestrogen therapy: a factor with levels \code{0}, \code{1}, \code{2}, \code{3}, \code{4}. \cr \code{non}: \tab Use of non oestrogen drugs: a factor with levels \code{No} \code{Yes}. \cr \code{duration}: \tab Months of oestrogen therapy: a numeric vector. \cr \code{age}: \tab A numeric vector. \cr \code{cest}: \tab Conjugated oestrogen dose: a factor with levels \code{0}, \code{1}, \code{2}, \code{3}. \cr \code{agegrp}: \tab A factor with levels \code{55-59} \code{60-64} \code{65-69} \code{70-74} \code{75-79} \code{80-84} \cr \code{age3}: \tab a factor with levels \code{<64} \code{65-74} \code{75+} \cr } } \source{ Breslow NE, and Day N, Statistical Methods in Cancer Research. Volume I: The Analysis of Case-Control Studies. IARC Scientific Publications, IARC:Lyon, 1980. } \examples{ data(bdendo) str(bdendo) } \keyword{datasets} Epi/man/mcutLexis.Rd0000644000175100001440000001040613763206636014041 0ustar hornikusers\name{mcutLexis} \alias{mcutLexis} \title{ Cut follow-up at multiple event dates and keep track of order of events } \description{ A generalization of \code{\link{cutLexis}} to the case where different events may occur in any order (but at most once for each). } \usage{ mcutLexis( L0, timescale = 1, wh, new.states = NULL, precursor.states = transient(L0), seq.states = TRUE, new.scales = NULL, ties.resolve = FALSE ) } \arguments{ \item{L0}{A Lexis object.} \item{timescale}{Which time scale do the variables in \code{L0[,wh]} refer to. Can be character or integer.} \item{wh}{Which variables contain the event dates. Character or integer vector} \item{new.states}{Names of the events forming new states. If \code{NULL} equal to the variable names from \code{wh}.} \item{precursor.states}{Which states are precursor states. See \code{\link{cutLexis}} for definition of precursor states.} \item{seq.states}{Should the sequence of events be kept track of? That is, should A-B be considered different from B-A. If \code{FALSE}, the state with combined preceding events A and B will be called A+B (alphabetically sorted). May also be supplied as character: \code{s} - sequence, keep track of sequence of states occupied (same as \code{TRUE}), \code{u} - unordered, keep track only of states visited (same as \code{FALSE}) or \code{l}, \code{c} - last or current state, only record the latest state visited. If given as character, only the first letter converted to lower case is used.} \item{new.scales}{Should we construct new time scales indicating the time since each of the event occurrences.} \item{ties.resolve}{Should tied event times be resolved by adding random noise to tied event dates. If \code{FALSE} the function will not accept that two events occur at the same time for a person (ties). If \code{TRUE} a random quantity in the range \code{c(-1,1)/100} will be added to all event times in all records with at least one tie. If \code{ties.resolve} is numeric a random quantity in the range \code{c(-1,1)*ties.resolve} will be added to all event times in all records with at least one tie.} } \value{A \code{\link{Lexis}} object with extra states created by occurrence of a number of intermediate events. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{cutLexis}}, \code{\link{rcutLexis}}, \code{\link{addCov.Lexis}}, \code{\link{Lexis}}, \code{\link{splitLexis}} } \examples{ # A dataframe of times set.seed(563248) dd <- data.frame( id = 1:30, doN = round(runif(30,-30, 0),1), doE = round(runif(30, 0,20),1), doX = round(runif(30, 50,60),1), doD = round(runif(30, 50,60),1), # these are the event times doA = c(NA,21,NA,27,35,NA,52, 5,43,80, NA,22,56,28,53,NA,51, 5,43,80, NA,23,NA,33,51,NA,55, 5,43,80), doB = c(NA,20,NA,53,27,NA, 5,52,34,83, NA,20,23,37,35,NA,52, 8,33,NA, 25,NA,37,40,NA,NA,15,23,36,61) ) # set up a Lexis object with time from entry to death/exit Lx <- Lexis( entry = list(time=doE, age=doE-doN), exit = list(time=pmin(doX,doD)), exit.status = factor(doD}".} \author{ Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com} } \examples{ data(DMlate) str(DMlate) dml <- Lexis( entry=list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit=list(Per=dox), exit.status=factor(!is.na(dodth),labels=c("DM","Dead")), data=DMlate ) dmi <- cutLexis( dml, cut=dml$doins, new.state="Ins", pre="DM" ) summary( dmi ) ls.dmi <- stack( dmi ) str( ls.dmi ) # Check that all the transitions and person-years got across. with( ls.dmi, rbind( table(lex.Fail,lex.Tr), tapply(lex.dur,lex.Tr,sum) ) ) } \seealso{ \code{\link{splitLexis}} \code{\link{cutLexis}} \code{\link{Lexis}} } \keyword{survival} Epi/man/diet.Rd0000644000175100001440000000474413751040403013002 0ustar hornikusers\name{diet} \alias{diet} \docType{data} \title{Diet and heart data} \description{ The \code{diet} data frame has 337 rows and 14 columns. The data concern a subsample of subjects drawn from larger cohort studies of the incidence of coronary heart disease (CHD). These subjects had all completed a 7-day weighed dietary survey while taking part in validation studies of dietary questionnaire methods. Upon the closure of the MRC Social Medicine Unit, from where these studies were directed, it was found that 46 CHD events had occurred in this group, thus allowing a serendipitous study of the relationship between diet and the incidence of CHD. } \format{ This data frame contains the following columns: \tabular{rl}{ \code{id}: \tab subject identifier, a numeric vector. \cr \code{doe}: \tab date of entry into follow-up study, a \code{\link{Date}} variable. \cr \code{dox}: \tab date of exit from the follow-up study, a \code{\link{Date}} variable. \cr \code{dob}: \tab date of birth, a \code{\link{Date}} variable. \cr \code{y}: \tab number of years at risk, a numeric vector. \cr \code{fail}: \tab status on exit, a numeric vector (codes 1, 3 and 13 represent CHD events) \cr \code{job}: \tab occupation, a factor with levels \code{Driver} \code{Conductor} \code{Bank worker} \cr \code{month}: \tab month of dietary survey, a numeric vector \cr \code{energy}: \tab total energy intake (kCal per day/100), a numeric vector \cr \code{height}: \tab (cm), a numeric vector \cr \code{weight}: \tab (kg), a numeric vector \cr \code{fat}: \tab fat intake (10 g/day), a numeric vector \cr \code{fibre}: \tab dietary fibre intake (10 g/day), a numeric vector \cr \code{energy.grp}: \tab high daily energy intake, a factor with levels \code{<=2750 KCal} \code{>2750 KCal} \cr \code{chd}: \tab CHD event, a numeric vector (1=CHD event, 0=no event) \cr } } \source{ The data are described and used extensively by Clayton and Hills, Statistical Models in Epidemiology, Oxford University Press, Oxford:1993. They were rescued from destruction by David Clayton and reentered from paper printouts. } \examples{ data(diet) # Illustrate the follow-up in a Lexis diagram Lexis.diagram( age=c(30,75), date=c(1965,1990), entry.date=cal.yr(doe), exit.date=cal.yr(dox), birth.date=cal.yr(dob), fail=(fail>0), pch.fail=c(NA,16), col.fail=c(NA,"red"), cex.fail=1.0, data=diet ) } \keyword{datasets} Epi/man/Epi.Rd0000644000175100001440000000130713751040403012562 0ustar hornikusers\docType{package} \name{Epi} \alias{Epi} \alias{Epi-package} \title{Epi: Functions for manipulation and statistical analysis of epidemiological data} \description{ \pkg{Epi} has grown out of the course 'Statistical Practise in Epidemiology with R' \url{http://bendixcarstensen.com/SPE/}. The major contributions from this course have been the \code{\link{stat.table}} function for advanced tabulation and summary, and the functions for representation and the \code{\link{Lexis}} function(s) for manipulation of multistate data with multiple time scales. } \details{Click on the \code{Index} link below the line to access vignettes (tutorial documents) and an alphabetic list of the functions in \code{Epi}.}Epi/man/Life.lines.Rd0000644000175100001440000000404013751040403014032 0ustar hornikusers\name{Life.lines} \alias{Life.lines} \title{ Compute dates/ages for life lines in a Lexis diagram } \description{ Fills out the missing information for follow up of persons in a Lexis diagram if sufficient information is given. } \usage{ Life.lines( entry.date = NA, exit.date = NA, birth.date = NA, entry.age = NA, exit.age = NA, risk.time = NA ) } \arguments{ \item{entry.date, exit.date,birth.date, entry.age, exit.age, risk.time}{Vectors defining lifelines to be plotted in the diagram. At least three must be given to produce a result. Not all subsets of three will suffice, the given subset has to define life lines. If insufficient data is given, nothing is returned and a warning is given.} } \value{ Data frame with variables \code{entry.date}, \code{entry.age}, \code{exit.date}, \code{exit.age}, \code{risk.time}, \code{birth.date}, with all entries computed for each person. If any of \code{entry.date}, \code{exit.date} or \code{birth.date} are of class \code{Date} or if any of \code{entry.age}, \code{exit.age} or \code{risk.time} are of class \code{difftime} the date variables will be of class \code{Date} and the other three of class \code{difftime}. } \examples{ ( Life.lines( entry.age = c(3,30,45), risk.time = c(25,5,14), birth.date = c(1970,1931,1925.7) ) ) # Draw a Lexis diagram Lexis.diagram() # Compute entry and exit age and date. ( LL <- Life.lines( entry.age = c(3,30,45), risk.time = c(25,5,14), birth.date = c(1970,1931,1925.7) ) ) segments( LL[,1], LL[,2], LL[,3], LL[,4] ) # Plot the life lines. # Compute entry and exit age and date, supplying a date variable bd <- ( c(1970,1931,1925.7) - 1970 ) * 365.25 class( bd ) <- "Date" ( Life.lines( entry.age = c(3,30,45), risk.time = c(25,5,14), birth.date = bd ) ) } \seealso{ \code{\link{Lexis.diagram}}, \code{\link{Lexis.lines}} } \keyword{ manip } \keyword{ dplot } Epi/man/Termplot.Rd0000644000175100001440000000643613751040403013663 0ustar hornikusers\name{Termplot} \alias{Termplot} \title{ A wrapper for \code{termplot} that optionally (but by default) exponentiates terms, and plot them on a common log-scale. Also scales x-axes to the same physical scale. } \description{ The function uses \code{\link{termplot}} to extract terms from a model with, say, spline, terms, including the standard errors, computes confidence intervals and transform these to the rate / rate-ratio scale. Thus the default use is for models on the log-scale such as Poisson-regression models. The function produces a plot with panels side-by-side, one panel per term, and returns the } \usage{ Termplot( obj, plot = TRUE, xlab = NULL, ylab = NULL, xeq = TRUE, yshr = 1, alpha = 0.05, terms = NULL, max.pt = NULL ) } \arguments{ \item{obj}{An object with a \code{terms}-method --- for details the the documentation for \code{\link{termplot}}. } \item{plot}{Should a plot be produced?} \item{xlab}{Labels for the \code{x}-axes. Defaults to the names of the terms.} \item{ylab}{Labels for the \code{x}-axes. Defaults to blank.} \item{xeq}{Should the units all all plots have the same physical scale for the \code{x}-axes).} \item{yshr}{Shrinking of \code{y}-axis. By default, the \code{y}-axes have an extent that accommodates the entire range of confidence intervals. This is a shrinking parameter for the \code{y}-axes, setting it to less than 1 will lose a bit of the confidence limits on some of the panels.} \item{alpha}{1 minus the confidence level for computing confidence intervals} \item{terms}{Which terms should be reported. Passed on to \code{\link{termplot}} and eventually \code{\link{predict}}.} \item{max.pt}{The maximal number of points in which to report the terms. If \code{NULL} all unique points from the analysis dataset are reported for each term (this is a feature of \code{\link{termplot}}).} } \value{ A list with one component per term in the model object \code{obj}, each component is a 4-column matrix with $x$ as the first column, and 3 columns with estimae and lower and upper confidence limit. } \author{ Bendix Cartensen } \seealso{ \code{\link{Ns}}, \code{termplot} } \examples{ # Get the diabetes data and set up as Lexis object data(DMlate) DMlate <- DMlate[sample(1:nrow(DMlate),500),] dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) # Split in 1-year age intervals dms <- splitLexis( dml, time.scale="Age", breaks=0:100 ) # Model with 6 knots for both age and period n.kn <- 6 # Model age-specific rates with period referenced to 2004 ( a.kn <- with( subset(dms,lex.Xst=="Dead"), quantile( Age+lex.dur, probs=(1:n.kn-0.5)/n.kn ) ) ) ( p.kn <- with( subset(dms,lex.Xst=="Dead"), quantile( Per+lex.dur, probs=(1:n.kn-0.5)/n.kn ) ) ) m2 <- glm( lex.Xst=="Dead" ~ -1 + Ns( Age, kn=a.kn, intercept=TRUE ) + Ns( Per, kn=p.kn, ref=2004 ), offset = log( lex.dur ), family=poisson, data=dms ) # Finally we can plot the two effects: Termplot( m2, yshr=0.9 ) } \keyword{hplot} Epi/man/addDrug.Lexis.Rd0000644000175100001440000001726214421662604014521 0ustar hornikusers\name{addDrug.Lexis} \alias{addDrug.Lexis} \alias{coarse.Lexis} \title{ Expand a Lexis object with information of drug exposure based on purchase dates and -amounts } \description{ A \code{\link{Lexis}} object will contain information on follow-up for a cohort of persons through time, each record containing information of one time interval, including the time at the beginning of each interval. If information on drug purchase is known for the persons via \code{lex.id} in a list of data frames, \code{addDrug.Lexis} will expand the \code{Lexis} object by cutting at all drug purchase dates, and compute the exposure status for any number of drugs, and add these as variables. In some circumstances the result is a Lexis object with a very large number of very small follow-up intervals. The function \code{coarse.Lexis} combines consecutive follow-up intervals using the covariates from the first } \usage{ addDrug.Lexis(Lx, # Lexis object pdat, # list of data frames with drug purchase information amt = "amt", # name of the variable with purchased amount dpt = "dpt", # name of the variable with amount consumed per time apt = NULL, # old name for dpt method = "ext", # method use to compute exposure maxt = NULL, # max duration for a purchase when using "fix" grace = 0, # grace period to be added tnam = setdiff(names(pdat[[1]]), c("lex.id", amt))[1], # name of the time variable from Lx prefix = TRUE, # should drug names prefix variable names sepfix = ".", # what should the separator be when forming prefix/suffix verbose = TRUE, \dots) coarse.Lexis(Lx, lim, keep = FALSE) } \arguments{ \item{Lx}{A \code{Lexis} object. } \item{pdat}{Named list of data frames with drug \code{p}urchase \code{dat}a. } \item{amt}{Name of the variable in the data frames in \code{pdat} with the purchased \code{am}oun\code{t}. } \item{dpt}{Name of the variable in the data frames in \code{pdat} with the consumed \code{d}ose \code{p}er \code{t}ime. Must be given in units of units of \code{amt} per units of \code{lex.dur} in \code{Lx}. } \item{apt}{Name previously used for \code{dpt}. Will disappear in next version. } \item{method}{Character. One of \code{"ext"} (default), \code{"dos"} or \code{"fix"}, for a description, see details. } \item{maxt}{Numerical. Maximal duration for a purchase when using \code{method="fix"}, same units as \code{lex.dur}. } \item{grace}{Numeric. Grace period to be added after last time of computed drug coverage to define end of exposure, same units as \code{lex.dur}. } \item{tnam}{Character. Name of the timescale used in the data frames in \code{pdat}. } \item{prefix}{Logical. Should the names of \code{pdat} be used as prefix for the 4 generated exposure variables for each drug. If false the names of \code{pdat} will be used as suffix. } \item{sepfix}{Character, used to separate the \code{prefix} and the name of the generated type of variable. } \item{verbose}{Logical. Should the function tell you about the choices you made? } \item{\dots}{arguments passed to or from other methods.} \item{lim}{Numeric vector of length 2. Consecutive follow-up intervals are combined if the first has \code{lex.dur} < \code{lim[1]}, and the sum of \code{lex.dur} in the two intervals is smaller than \code{lim[2]}. If a scalar i given, \code{c(lim,3*lim)} is used. } \item{keep}{Logical of length 1 or \code{nrow(Lx)} that points to records that cannot be combined with preceding records. } } \details{ This function internally uses \code{\link{addCov.Lexis}} to attach exposure status for several drugs (dispensed medicine) to follow-up in a \code{Lexis} object. Once that is done, the exposure measures are calculated at each time. There is one input data frame per type of drug, each with variables \code{lex.id}, \code{amt}, a timescale variable and possibly a variable \code{dpt}. Three different methods for computing drug exposures from dates and amounts of purchases are supported via the argument \code{method}. \itemize{ \item \code{"ext"}: Extrapolation: the first drug purchase is assumed consumed over the interval to the second purchase. Exposure for subsequent purchases are assumed to last as long as it would have if consumed at a speed corresponding to the previous purchase being consumed over the time span between the previous and current purchase, plus a period of length \code{grace}. \item \code{"dos"}: Dosage: assumes that each purchase lasts \code{amt}/\code{dpt} plus \code{grace}. \item \code{"fix"}: Fixed time: assumes that each purchase lasts \code{maxt}. } So for each purchase we have defined an end of coverage (expiry date). If next purchase is before this, we assume that the amount purchased is consumed over the period between the two purchases, otherwise over the period to the end of coverage. So the only difference between the methods is the determination of the coverage for each purchase. Based on this, for each date in the resulting \code{\link{Lexis}} four exposure variables are computed, see next section. } \value{ A \code{\link{Lexis}} object with the same risk time, states and events as \code{Lx}. The follow-up for each person has been cut at the purchase times of each of the drugs, as well as at the expiry times for each drug coverage. Further, for each drug (i.e. the data frame in the \code{pdat} list) the name of the \code{pdat} component determines the prefix for the 4 variables that will be added. Supposing this is \code{AA} for a given drug, then 4 new variables will be: \itemize{ \item \code{AA.ex}: logical; is the person exposed in this interval \item \code{AA.tf}: numeric: time since first purchase, same units as \code{lex.dur} \item \code{AA.ct}: numeric: cumulative time on the drug, same units as \code{lex.dur} \item \code{AA.cd}: numeric: cumulative dose of the drug, same units as \code{amt} } So if \code{pdat} is a list of length 3 with names \code{c("a","b","c")} the function will add variables \code{a.ex, a.tf, a.ct, a.cd, b.ex, b.tf, b.ct, b.cd, c.ex, c.tf, c.ct, c.cd} } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{gen.exp}}, \code{\link{addCov.Lexis}}, \code{\link{cutLexis}}, \code{\link{rcutLexis}}, \code{\link{mcutLexis}} } \examples{ # Follow-up of 2 persons clear() fu <- data.frame(doe = c(2006, 2008), dox = c(2015, 2018), dob = c(1950, 1951), xst = factor(c("A","D"))) Lx <- Lexis(entry = list(per = doe, age = doe- dob), exit = list(per = dox), exit.status = xst, data = fu) Lx <- subset(Lx, select = -c(doe, dob, dox, xst)) # split FU in 1 year intervals Sx <- splitLexis(Lx, "per", breaks = seq(1990, 2020, 1.0)) # drug purchases, one data frame for each drug ra <- data.frame(per = c(2007 + runif(12,0,10)), amt = sample(2:4, 12, r = TRUE), lex.id = sample(1:2, 12, r = TRUE)) ra <- ra[order(ra$lex.id, ra$per),] rb <- data.frame(per = c(2009 + runif(10, 0, 10)), amt = sample(round(2:4/3,1), 10, r = TRUE), lex.id = sample(1:2, 10, r = TRUE)) rb <- rb[order(rb$lex.id, rb$per),] # put in a named list pdat <- list(A = ra, B = rb) pdat ex1 <- addDrug.Lexis(Sx, pdat, method = "ext") # default summary(ex1) # collapsing some of the smaller intervals with the next summary(coarse.Lexis(ex1, c(0.2,0.5))) ex2 <- addDrug.Lexis(Sx, pdat, method = "ext", grace = 0.2) dos <- addDrug.Lexis(Sx, pdat, method = "dos", dpt = 6) fix <- addDrug.Lexis(Sx, pdat, method = "fix", maxt = 1) } \keyword{survival} \keyword{manip} Epi/man/rm.tr.Rd0000644000175100001440000000354513751040403013115 0ustar hornikusers\name{rm.tr} \alias{rm.tr} \title{ Remove transitions from a Lexis object. } \description{ Sometimes certain transitions are not of interest. This function removes these and assigns the risk time in the target state of the transitions to the originating state. } \usage{ rm.tr(obj, from, to) } \arguments{ \item{obj}{ A \code{Lexis} object. } \item{from}{ Character; name of the state from which the transition to be purged originates. Must be a valid state name for \code{obj}. } \item{to}{ Character; name of the state to which the transition to be purged targets. Must be a valid state name for \code{obj}. } } \details{ The function removes all transitions from \code{from} to \code{to}, and assigns all risk time in the \code{to} state after the transition (\code{lex.dur}) to the \code{from} state. This is only done for risk time in \code{to} occurring directly after \code{from}. Risk time in \code{to} occurring after a transition from states different from \code{from} is not affected. Transitions from \code{to} to another state, \code{other}, say, will be changed to transitions from \code{from} to \code{other}. } \value{ A \code{\link{Lexis}} object with the indicated transition removed. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com}. } \seealso{ \code{\link{Relevel}} } \examples{ data(DMlate) dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) # A small subset for illustration dml <- subset( dml, lex.id \%in\% c(13,15,20,28,40) ) # Cut the follow-up at start of insulin therapy dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins" )[,1:10] # How does it look? dmi # Remove all transitions DM -> Ins rm.tr( dmi, "DM", "Ins" ) } \keyword{manip} Epi/man/projection.ip.Rd0000644000175100001440000000171613751040403014634 0ustar hornikusers\name{projection.ip} \alias{projection.ip} \title{ Projection of columns of a matrix. } \description{ Projects the columns of the matrix \code{M} on the space spanned by the columns of the matrix \code{X}, with respect to the inner product defined by \code{weight}: \code{=sum(x*w*y)}. } \usage{ projection.ip(X, M, orth = FALSE, weight = rep(1, nrow(X))) } \arguments{ \item{X}{ Matrix defining the space to project onto. } \item{M}{ Matrix of columns to be projected. Must have the same number of rows as \code{X}. } \item{orth}{ Should the projection be on the orthogonal complement to \code{span(X)}? } \item{weight}{ Weights defining the inner product. Numerical vector of length \code{nrow(X)}. } } \value{ A matrix of full rank with columns in \code{span(X)} } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com}, with help from Peter Dalgaard. } \seealso{ \code{\link{detrend}} } \keyword{array} Epi/man/harm.Rd0000644000175100001440000000223213751040403012772 0ustar hornikusers\name{harm} \alias{harm} \title{Create a basis of harmonic functions. } \description{Returns a matrix of harmonic functions usable for modeling periodic effects } \usage{ harm(x, ord=1, per=1, verbose=FALSE ) } \arguments{ \item{x}{A numeric variable. } \item{ord}{Integer, the order of the harmonic. } \item{per}{Numeric, the length of the period on the \code{x} scale. } \item{verbose}{Logical: shall I tell what I do with dates? } } \details{ Columns are constructed under the assumption that the periodic function has period \code{per} on the \code{x} scale. Thus, the first columns is defined as \code{sin(2*pi*x/per)}, \code{cos(2*pi*x/per)}, \code{sin(4*pi*x/per)} etc. Since \code{sin} and \code{cos} are periodic functions there is no requirement that \code{x} be in any particular range. } \value{A matrix with \code{nrow(x)} rows and 2*\code{deg} columns and columnnames \code{sin1}, \code{cos1}, \code{sin2}, \code{cos2} etc. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \examples{ x <- seq(-1,1,0.01) head( harm(x,ord=2) ) matplot( x, harm(x,ord=2), type="l", lty=1, lwd=3 ) } \keyword{models} \keyword{regression} Epi/man/ci.Crisk.Rd0000644000175100001440000001477114033253670013531 0ustar hornikusers\name{ci.Crisk} \alias{ci.Crisk} \title{ Compute cumulative risks and expected sojourn times from models for cause-specific rates. } \description{ Consider a list of parametric models for rates of competing events, such as different causes of death, A, B, C, say. From estimates of the cause-specific rates we can compute 1) the cumulative risk of being in each state ('Surv' (=no event) and A, B and C) at different times, 2) the stacked cumulative rates such as A, A+C, A+C+Surv and 3) the expected (truncated) sojourn times in each state up to each time point. This can be done by simple numerical integration using estimates from models for the cause specific rates. But the standard errors of the results are analytically intractable. The function \code{ci.Crisk} computes estimates with confidence intervals using simulated samples from the parameter vectors of supplied model objects. Some call this a parametric bootstrap. The times and other covariates determining the cause-specific rates must be supplied in a data frame which will be used for predicting rates for all transitions. } \usage{ ci.Crisk(mods, nd, tnam = names(nd)[1], nB = 1000, perm = length(mods):0 + 1, alpha = 0.05, sim.res = 'none') } \arguments{ \item{mods}{A named list of \code{glm}/\code{gam} model objects representing the cause-specific rates. If the list is not named the function will crash. The names will be used as names for the states (competing risks), while the state without any event will be called "\code{Surv}". } \item{nd}{A data frame of prediction points and covariates to be used on all models supplied in \code{mods}. } \item{tnam}{Name of the column in \code{nd} which is the time scale.It must represent endpoints of equidistant intervals. } \item{nB}{Scalar. The number of simulations from the (posterior) distribution of the model parameters to be used in computing confidence limits. } \item{perm}{Numerical vector of length \code{length(mods)+1} indicating the order in which states are to be stacked. The \code{'Surv'} state is taken to be the first, the remaining in the reverse order supplied in the \code{mods} argument. The default is therefore to stack with the survival as the first, which may not be what you normally want. } \item{alpha}{numeric. 1 minus the confidence level used in calculating the c.i.s } \item{sim.res}{Character. What simulation samples should be returned. If \code{'none'} (the default) the function returns a list of 3 arrays (see under 'value'). If \code{'rates'} it returns an array of dimension \code{nrow(nd)} x \code{length(mod)} x \code{nB} of bootstrap samples of the rates. If \code{'crisk'} it returns an array of dimension \code{nrow(nd)} x \code{length(mod)+1} x \code{nB} of bootstrap samples of the cumulative rates. Only the first letter matters, regardless of whether it is in upper lower case. } } \value{If \code{sim.res='none'} a named list with 4 components, the first 3 are 3-way arrays classified by time, state and estimate/confidence interval: \itemize{ \item \code{Crisk} Cumulative risks for the \code{length(mods)} events \emph{and} the survival \item \code{Srisk} Stacked versions of the cumulative risks \item \code{Stime} Sojourn times in each states \item \code{time} Endpoints of intervals. It is just the numerical version of the names of the first dimension of the three arrays } All three arrays have (almost) the same dimensions: \itemize{ \item time, named as \code{tnam}; endpoints of intervals. Length \code{nrow(nd)}. \item \code{cause}. The arrays \code{Crisk} and \code{Stime} have values "\code{Surv}" plus the names of the list \code{mods} (first argument). \code{Srisk} has length \code{length(mod)}, with each level representing a cumulative sum of cumulative risks, in order indicated by the \code{perm} argument. \item Unnamed, \code{ci.50\%}, \code{ci.2.5\%}, \code{ci.97.5\%} representing quantiles of the quantities derived from the bootstrap samples. If \code{alpha} is different from 0.05, names are of course different. } If \code{sim.res='rates'} the function returns bootstrap samples of rates for each cause as an array classified by time, cause and bootstrap sample. If \code{sim.res='crisk'} the function returns bootstrap samples of cumulative risks for each cause (including survival) as an array classified by time, state (= causes + surv) and bootstrap sample. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{mat2pol}} \code{\link{simLexis}} \code{\link{plotCIF}} \code{\link{ci.surv}} } \examples{ library(Epi) data(DMlate) # A Lexis object for survival Ldm <- Lexis(entry = list( per = dodm, age = dodm-dobth, tfd = 0 ), exit = list( per = dox ), exit.status = factor( !is.na(dodth), labels = c("DM","Dead") ), data = DMlate[sample(1:nrow(DMlate),1000),] ) summary(Ldm, timeScales = TRUE) # Cut at OAD and Ins times Mdm <- mcutLexis(Ldm, wh = c('dooad','doins'), new.states = c('OAD','Ins'), seq.states = FALSE, ties = TRUE) summary(Mdm$lex.dur) # restrict to DM state and split Sdm <- splitLexis(factorize(subset(Mdm, lex.Cst == "DM")), time.scale = "tfd", breaks = seq(0,20,1/12)) summary(Sdm) summary(Relevel(Sdm, c(1, 4, 2, 3))) boxes(Relevel(Sdm, c(1, 4, 2, 3)), boxpos = list(x = c(15, 85, 80, 15), y = c(85, 85, 20, 15)), scale.R = 100) # glm models for the cause-specific rates system.time( mD <- glm.Lexis(Sdm, ~ Ns(tfd, knots=0:6*2), to = 'Dead') ) system.time( mO <- glm.Lexis(Sdm, ~ Ns(tfd, knots=0:6*2), to = 'OAD' ) ) system.time( mI <- glm.Lexis(Sdm, ~ Ns(tfd, knots=0:6*2), to = 'Ins' ) ) # intervals for calculation of predicted rates int <- 1 / 100 nd <- data.frame(tfd = seq(0, 10, int)) # not the same as the split, # and totally unrelated to it # cumulaive risks with confidence intervals # (too few timepoints, too few simluations) system.time( res <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = 0:100 / 10), nB = 100, perm = 4:1)) str(res) } \keyword{regression} Epi/man/B.dk.Rd0000644000175100001440000000421113751040403012620 0ustar hornikusers\name{B.dk} \alias{B.dk} \docType{data} \title{Births in Denmark by year and month of birth and sex} \description{ The number of live births as entered from printed publications from Statistics Denmark. } \usage{data(B.dk)} \format{ A data frame with 1248 observations on the following 4 variables. \describe{ \item{\code{year}}{Year of birth} \item{\code{month}}{Month of birth} \item{\code{m}}{Number of male births} \item{\code{f}}{Number of female births} } } \details{ Division of births by month and sex is only avaialble for the years 1957--69 and 2002ff. For the remaining period, the total no. births in each month is divided between the sexes so that the fraction of boys is equal to the overall fraction for the years where the sex information is available. There is a break in the series at 1920, when Sonderjylland was joined to Denmark. } \source{ Statistiske Undersogelser nr. 19: Befolkningsudvikling og sundhedsforhold 1901-60, Copenhagen 1966. Befolkningens bevaegelser 1957. Befolkningens bevaegelser 1958. ... Befolkningens bevaegelser 2003. Befolkningens bevaegelser 2004. Vital Statistics 2005. Vital Statistics 2006. } \examples{ data( B.dk ) str( B.dk ) attach( B.dk ) # Plot the no of births and the M/F-ratio par( las=1, mar=c(4,4,2,4) ) matplot( year+(month-0.5)/12, cbind( m, f ), bty="n", col=c("blue","red"), lty=1, lwd=1, type="l", ylim=c(0,5000), xlab="Date of birth", ylab="" ) usr <- par()$usr mtext( "Monthly no. births in Denmark", side=3, adj=0, at=usr[1], line=1/1.6 ) text( usr[1:2] \%*\% cbind(c(19,1),c(19,1))/20, usr[3:4] \%*\% cbind(c(1,19),c(2,18))/20, c("Boys","Girls"), col=c("blue","red"), adj=0 ) lines( year+(month-0.5)/12, (m/(m+f)-0.5)*30000, lwd=1 ) axis( side=4, at=(seq(0.505,0.525,0.005)-0.5)*30000, labels=c("","","","",""), tcl=-0.3 ) axis( side=4, at=(50:53/100-0.5)*30000, labels=50:53, tcl=-0.5 ) axis( side=4, at=(0.54-0.5)*30000, labels="\% boys", tick=FALSE, mgp=c(3,0.1,0) ) abline( v=1920, col=gray(0.8) ) } \keyword{datasets} Epi/man/ewrates.Rd0000644000175100001440000000172213751040403013520 0ustar hornikusers\name{ewrates} \alias{ewrates} \docType{data} \title{Rates of lung and nasal cancer mortality, and total mortality.} \description{ England and Wales mortality rates from lung cancer, nasal cancer, and all causes 1936 - 1980. The 1936 rates are repeated as 1931 rates in order to accomodate follow up for the \code{\link{nickel}} study. } \usage{data(ewrates)} \format{ A data frame with 150 observations on the following 5 variables: \tabular{rl}{ \code{id}: \tab Subject identifier (numeric) \cr \code{year} \tab Calendar period, 1931: 1931--35, 1936: 1936--40, \ldots \cr \code{age} \tab Age class: 10: 10--14, 15:15--19, \ldots \cr \code{lung} \tab Lung cancer mortality rate per 1,000,000 py. \cr \code{nasal} \tab Nasal cancer mortality rate per 1,000,000 py. \cr \code{other} \tab All cause mortality rate per 1,000,000 py. } } \source{ From Breslow and Day, Vol II, Appendix IX. } \examples{ data(ewrates) str(ewrates) } \keyword{datasets} Epi/man/plotevent.Rd0000644000175100001440000000216413751040403014067 0ustar hornikusers\name{plotevent} \alias{plotevent} \title{ Plot Equivalence Classes } \description{ For interval censored data, segments of times between last.well and first.ill are plotted for each conversion in the data. It also plots the equivalence classes. } \usage{ plotevent(last.well, first.ill, data) } \arguments{ \item{last.well}{ Time at which the individuals are last seen negative for the event } \item{first.ill}{ Time at which the individuals are first seen positive for the event } \item{data}{ Data with a transversal shape } } \details{ last.well and first.ill should be written as character in the function. } \value{ Graph } \references{ Carstensen B. Regression models for interval censored survival data: application to HIV infection in Danish homosexual men.Stat Med. 1996 Oct 30;15(20):2177-89. Lindsey JC, Ryan LM. Tutorial in biostatistics methods for interval-censored data.Stat Med. 1998 Jan 30;17(2):219-38. } \author{ Delphine Maucort-Boulch, Bendix Carstensen, Martyn Plummer } \seealso{ \code{\link{Icens}} } % \examples{ % } \keyword{ models } \keyword{ regression } \keyword{ survival } Epi/man/addCov.Lexis.Rd0000644000175100001440000001243114421662643014343 0ustar hornikusers\name{addCov.Lexis} \alias{addCov.Lexis} \title{ Add covariates (typically clinical measurements) taken at known times to a Lexis object. } \description{ When follow-up in a multistate model is represented in a \code{\link{Lexis}} object we may want to add information on covariates, for example clinical measurements, obtained at different times. This function cuts the follow-up time (see \code{\link{cutLexis}}) at the times of measurement and carries the measurements forward in time to the next measurement occasion. } \usage{ \method{addCov}{Lexis}(Lx, clin, timescale = 1, exnam, tfc = "tfc", \dots) } \arguments{ \item{Lx}{ A Lexis object with follow-up of a cohort. } \item{clin}{ A data frame with covariates to add (typically clinical measurements). Must contain a variable \code{lex.id} identifying the persons represented in \code{Lx}, as well as a variable with the same name as one of the \code{\link{timeScales}} in \code{Lx}, identifying the time at which covariates are measured. The times must be unique within each person; if not records with duplicate times are discarded, and a warning issued. This is done using \code{duplicated}, so not very well-defined, it is advisable that you do this by yourself. } \item{timescale}{ Numerical or character. Number or name of a timescale in \code{Lx}. The \code{clin} data frame must have a variable of this name indicating the time at which the covariate measurements were taken. } \item{exnam}{ Character. Name of the variable in \code{clin} with the examination names (such as \code{wave1}, \code{wave2} etc.). Values may not be repeated within person and cannot be equal to any of \code{levels(Lx)}. Will be carried over to the resulting \code{Lexis} object. If there is no such variable in \code{clin} it will be constructed; if the argument is omitted, a variable called \code{exnam} with values \code{ex1}, \code{ex2} etc. will be constructed. } \item{\dots}{arguments passed to or from other methods.} \item{tfc}{ Character (\code{t}ime \code{f}rom last \code{c}linical visit). Name of the variable in the result which will contain the time since the most recent covariate date. It will be included among the timescales of the resulting Lexis object. If the argument is omitted a variable called \code{tfc} will be constructed. } } \value{ A \code{Lexis} object representing the same follow-up as \code{Lx}, with cuts added at the times of examination, and covariate measurements added for all records representing follow-up after the most recent time of measurement. Also \code{tfc} is added as a time scale, it is however not a proper timescale since it is reset at every clinical examination. Therefor the value of the \code{timeSince} attribute is set to "X" in order to distinguish it from other proper time scales that either have an empty string or the name of a state. } \author{ Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{cutLexis}}, \code{\link{mcutLexis}}, \code{\link{splitLexis}}, \code{\link{Lexis}} } \examples{ # A small bogus cohort xcoh <- structure( list( id = c("A", "B", "C"), birth = c("1952-07-14", "1954-04-01", "1987-06-10"), entry = c("1965-08-04", "1972-09-08", "1991-12-23"), exit = c("1997-06-27", "1995-05-23", "1998-07-24"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) # Convert the character dates into numerical variables (fractional years) xcoh$bt <- cal.yr( xcoh$birth ) xcoh$en <- cal.yr( xcoh$entry ) xcoh$ex <- cal.yr( xcoh$exit ) # Define as Lexis object with timescales calendar time and age Lcoh <- Lexis( entry = list( per=en ), exit = list( per=ex, age=ex-bt ), exit.status = factor( fail, 0:1, c("Alive","Dead") ), data = xcoh ) str( Lcoh ) Lx <- Lcoh[,1:7] # Data frame with clinical examination data, date of examination in per clin <- data.frame(lex.id = c(1,1,3,2), per = cal.yr(c("1977-4-7", "1971-7-1", "1996-2-15", "1990-7-3")), bp = c(120,140,160,157), chol = c(5,7,8,9), xnam = c("X2","X1","X1","X2") ) Lx clin str(Lx) str(clin) # Different behavours when using exnam explicitly addCov.Lexis( Lx, clin[,-5] ) addCov.Lexis( Lx, clin, exnam="xnam" ) # Works with time split BEFORE Lb <- addCov.Lexis(splitLexis(Lx, time.scale="age", breaks=seq(0,80,5) ), clin, exnam="clX" ) Lb # and also AFTER La <- splitLexis(addCov.Lexis( Lx, clin, exnam = "xnam" ), breaks=seq(0,80,5), time.scale="age" ) La La$tfc == Lb$tfc La$age == Lb$age str(La) str(Lb) } \keyword{ survival } Epi/man/erl.Rd0000644000175100001440000001751513751040403012637 0ustar hornikusers\name{erl} \alias{surv1} \alias{surv2} \alias{erl1} \alias{erl} \alias{yll} \title{Compute survival functions from rates and expected residual lifetime in an illness-death model as well as years of life lost to disease. } \description{ These functions compute survival functions from a set of mortality and disease incidence rates in an illness-death model. Expected residual life time can be computed under various scenarios by the \code{erl} function, and areas between survival functions can be computed under various scenarios by the \code{yll} function. Rates are assumed supplied for equidistant intervals of length \code{int}. } \usage{ surv1( int, mu , age.in = 0, A = NULL ) erl1( int, mu , age.in = 0 ) surv2( int, muW, muD, lam, age.in = 0, A = NULL ) erl( int, muW, muD, lam=NULL, age.in = 0, A = NULL, immune = is.null(lam), yll=TRUE, note=TRUE ) yll( int, muW, muD, lam=NULL, age.in = 0, A = NULL, immune = is.null(lam), note=TRUE ) } \arguments{ \item{int}{ Scalar. Length of intervals that rates refer to. } \item{mu}{ Numeric vector of mortality rates at midpoints of intervals of length \code{int} } \item{muW}{ Numeric vector of mortality rates among persons in the "Well" state at midpoints of intervals of length \code{int}. Left endpoint of first interval is \code{age.in}. } \item{muD}{ Numeric vector of mortality rates among persons in the "Diseased" state at midpoints of intervals of length \code{int}. Left endpoint of first interval is \code{age.in}. } \item{lam}{ Numeric vector of disease incidence rates among persons in the "Well" state at midpoints of intervals of length \code{int}. Left endpoint of first interval is \code{age.in}. } \item{age.in}{ Scalar indicating the age at the left endpoint of the first interval. } \item{A}{ Numeric vector of conditioning ages for calculation of survival functions. } \item{immune}{ Logical. Should the years of life lost to the disease be computed using assumptions that non-diseased individuals are immune to the disease (\code{lam}=0) and that their mortality is yet still \code{muW}. } \item{note}{ Logical. Should a warning of silly assumptions be printed? } \item{yll}{ Logical. Should years of life lost be included in the result? } } \details{ The mortality rates given are supposed to refer to the ages \code{age.in+(i-1/2)*int}, \code{i=1,2,3,...}. The units in which \code{int} is given must correspond to the units in which the rates \code{mu}, \code{muW}, \code{muD} and \code{lam} are given. Thus if \code{int} is given in years, the rates must be given in the unit of events per year. The ages in which the survival curves are computed are from \code{age.in} and then at the end of \code{length(muW)} (\code{length(mu)}) intervals each of length \code{int}. The \code{age.in} argument is merely a device to account for rates only available from a given age. It has two effects, one is that labeling of the interval endpoint is offset by this quantity, thus starting at \code{age.in}, and the other that the conditioning ages given in the argument \code{A} will refer to the ages defined by this. The \code{immune} argument is \code{FALSE} whenever the disease incidence rates are supplied. If set to \code{TRUE}, the years of life lost is computed under the assumption that individuals without the disease at a given age are immune to the disease in the sense that the disease incidence rate is 0, so transitions to the diseased state (with presumably higher mortality rates) are assumed not to occur. This is a slightly peculiar assumption (but presumably the most used in the epidemiological literature) and the resulting object is therefore given an attribute, \code{NOTE}, that point this out. If however \code{muW} is the total mortality in the population (including the diseased) the result is a good approximation to the correct YLL. The default of the \code{surv2} function is to take the possibility of disease into account.} \value{\code{surv1} and \code{surv2} return a matrix whose first column is the ages at the ends of the intervals, thus with \code{length(mu)+1} rows. The following columns are the survival functions (since \code{age.in}), and conditional on survival till ages as indicated in \code{A}, thus a matrix with \code{length(A)+2} columns. Columns are labeled with the actual conditioning ages; if \code{A} contains values that are not among the endpoints of the intervals used, the nearest smaller interval border is used as conditioning age, and columns are named accordingly. \code{surv1} returns the survival function for a simple model with one type of death, occurring at intensity \code{mu}. \code{surv2} returns the survival function for a person in the "Well" state of an illness-death model, taking into account that the person may move to the "Diseased" state, thus requiring all three transition rates to be specified. The conditional survival functions are conditional on being in the "Well" state at ages given in \code{A}. \code{erl1} returns a three column matrix with columns \code{age}, \code{surv} (survival function) and \code{erl} (expected residual life time) with \code{length(mu)+1} rows. \code{erl} returns a two column matrix, columns labeled "Well" and "Dis", and with row-labels \code{A}. The entries are the expected residual life times given survival to \code{A}. If \code{yll=TRUE} the difference between the columns is added as a third column, labeled "YLL". } \author{Bendix Carstensen, \email{b@bxc.dk} } \seealso{ \code{\link{ci.cum}} } \examples{ library( Epi ) data( DMlate ) # Naive Lexis object Lx <- Lexis( entry = list( age = dodm-dobth ), exit = list( age = dox -dobth ), exit.status = factor( !is.na(dodth), labels=c("DM","Dead") ), data = DMlate ) # Cut follow-up at insulin inception Lc <- cutLexis( Lx, cut = Lx$doins-Lx$dob, new.state = "DM/ins", precursor.states = "DM" ) summary( Lc ) # Split in small age intervals Sc <- splitLexis( Lc, breaks=seq(0,120,2) ) summary( Sc ) # Overview of object boxes( Sc, boxpos=TRUE, show.BE=TRUE, scale.R=100 ) # Knots for splines a.kn <- 2:9*10 # Mortality among DM mW <- glm( lex.Xst=="Dead" ~ Ns( age, knots=a.kn ), offset = log(lex.dur), family = poisson, data = subset(Sc,lex.Cst=="DM") ) # Mortality among insulin treated mI <- update( mW, data = subset(Sc,lex.Cst=="DM/ins") ) # Total motality mT <- update( mW, data = Sc ) # Incidence of insulin inception lI <- update( mW, lex.Xst=="DM/ins" ~ . ) # From these we can now derive the fitted rates in intervals of 1 year's # length. In real applications you would use much smaller interval like # 1 month: # int <- 1/12 int <- 1 # Prediction frame to return rates in units of cases per 1 year # - we start at age 40 since rates of insulin inception are largely # indeterminate before age 40 nd <- data.frame( age = seq( 40+int, 110, int ) - int/2, lex.dur = 1 ) muW <- predict( mW, newdata = nd, type = "response" ) muD <- predict( mI, newdata = nd, type = "response" ) lam <- predict( lI, newdata = nd, type = "response" ) # Compute the survival function, and the conditional from ages 50 resp. 70 s1 <- surv1( int, muD, age.in=40, A=c(50,70) ) round( s1, 3 ) s2 <- surv2( int, muW, muD, lam, age.in=40, A=c(50,70) ) round( s2, 3 ) # How much is YLL overrated by ignoring insulin incidence? round( YLL <- cbind( yll( int, muW, muD, lam, A = 41:90, age.in = 40 ), yll( int, muW, muD, lam, A = 41:90, age.in = 40, immune=TRUE ) ), 2 )[seq(1,51,10),] par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, bty="n", las=1 ) matplot( 40:90, YLL, type="l", lty=1, lwd=3, ylim=c(0,10), yaxs="i", xlab="Age" ) } \keyword{survival} Epi/man/plotEst.Rd0000644000175100001440000001057113751040403013502 0ustar hornikusers\name{plotEst} \alias{plotEst} \alias{pointsEst} \alias{linesEst} \title{ Plot estimates with confidence limits (forest plot) } \description{ Plots parameter estimates with confidence intervals, annotated with parameter names. A dot is plotted at the estimate and a horizontal line extending from the lower to the upper limit is superimposed. } \usage{ plotEst( ests, y = dim(ests)[1]:1, txt = rownames(ests), txtpos = y, ylim = range(y)-c(0.5,0), xlab = "", xtic = nice(ests[!is.na(ests)], log = xlog), xlim = range( xtic ), xlog = FALSE, pch = 16, cex = 1, lwd = 2, col = "black", col.txt = "black", font.txt = 1, col.lines = col, col.points = col, vref = NULL, grid = FALSE, col.grid = gray(0.9), restore.par = TRUE, ... ) linesEst( ests, y = dim(ests)[1]:1, pch = 16, cex = 1, lwd = 2, col="black", col.lines=col, col.points=col, ... ) pointsEst( ests, y = dim(ests)[1]:1, pch = 16, cex = 1, lwd = 2, col="black", col.lines=col, col.points=col, ... ) } \arguments{ \item{ests}{Matrix with three columns: Estimate, lower limit, upper limit. If a model object is supplied, \code{\link{ci.lin}} is invoked for this object first.} \item{y}{Vertical position of the lines.} \item{txt}{Annotation of the estimates. Either a character vector or an expression vector.} \item{txtpos}{Vertical position of the text. Defaults to \code{y}.} \item{ylim}{Extent of the vertical axis.} \item{xlab}{Annotation of the horizontal axis.} \item{xtic}{Location of tickmarks on the x-axis.} \item{xlim}{Extent of the x-axis.} \item{xlog}{Should the x-axis be logarithmic?} \item{pch}{What symbol should be used?} \item{cex}{Expansion of the symbol.} \item{col}{Colour of the points and lines.} \item{col.txt}{Colour of the text annotating the estimates.} \item{font.txt}{Font for the text annotating the estimates.} \item{col.lines}{Colour of the lines.} \item{col.points}{Colour of the symbol.} \item{lwd}{Thickness of the lines.} \item{vref}{Where should vertical reference line(s) be drawn?} \item{grid}{If TRUE, vertical gridlines are drawn at the tickmarks. If a numerical vector is given vertical lines are drawn at \code{grid}.} \item{col.grid}{Colour of the vertical gridlines} \item{restore.par}{Should the graphics parameters be restored? If set to \code{FALSE} the coordinate system will still be available for additional plotting, and \code{par("mai")} will still have the very large value set in order to make room for the labelling of the estimates.} \item{...}{Arguments passed on to \code{ci.lin} when a model object is supplied as \code{ests}.} } \details{ \code{plotEst} makes a news plot, whereas \code{linesEst} and \code{pointsEst} (identical functions) adds to an existing plot. If a model object of class \code{"glm"}, \code{"coxph"}, \code{"clogistic"} or \code{"gnlm"} is supplied the argument \code{xlog} defaults to \code{TRUE}, and exponentiated estimates are extracted by default. } \value{ NULL } \author{ Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com}} \seealso{ ci.lin } \examples{ # Bogus data and a linear model f <- factor( sample( letters[1:5], 100, replace=TRUE ) ) x <- rnorm( 100 ) y <- 5 + 2 * as.integer( f ) + 0.8 * x + rnorm(100) * 2 m1 <- lm( y ~ f ) # Produce some confidence intervals for contrast to first level ( cf <- ci.lin( m1, subset=-1 )[,-(2:4)] ) # Plots with increasing amounts of bells and whistles par( mfcol=c(3,2), mar=c(3,3,2,1) ) plotEst( cf ) plotEst( cf, grid=TRUE, cex=2, lwd=3 ) plotEst( cf, grid=TRUE, cex=2, col.points="red", col.lines="green" ) plotEst( cf, grid=TRUE, cex=2, col.points="red", col.lines="green", xlog=TRUE, xtic=c(1:8), xlim=c(0.8,6) ) rownames( cf )[1] <- "Contrast to fa:\n fb" plotEst( cf, grid=TRUE, cex=2, col.points=rainbow(4), col.lines=rainbow(4), vref=1 ) # etxt <- expression("Plain text, qouted", "combined with maths:"*sqrt(a)*phi[c], f^d*" Hb"*A[1][c], eff^e*" kg/"*m^2) plotEst( cf, txt=etxt, grid=TRUE, cex=2, col.points=rainbow(4), col.lines =rainbow(4), vref=1 ) } \keyword{hplot} \keyword{models} Epi/man/fit.add.Rd0000644000175100001440000000265713751040403013367 0ustar hornikusers\name{fit.add} \alias{fit.add} \title{ Fit an addive excess risk model to interval censored data. } \description{ Utility function. The model fitted assumes a piecewise constant intensity for the baseline, and that the covariates act additively on the rate scale. } \usage{ fit.add( y, rates.frame, cov.frame, start ) } \arguments{ \item{y}{Binary vector of outcomes} \item{rates.frame}{Dataframe expanded from the original data by \code{\link{expand.data}}, cooresponding to covariates for the rate parameters.} \item{cov.frame}{ do., but covariates corresponding to the \code{formula} argument of \code{\link{Icens}}} \item{start}{Starting values for the rate parameters. If not supplied, then starting values are generated.} } \value{ A list with one component: \item{rates}{A glm object from a binomial model with log-link function.} } \references{ B Carstensen: Regression models for interval censored survival data: application to HIV infection in Danish homosexual men. Statistics in Medicine, 15(20):2177-2189, 1996. CP Farrington: Interval censored survival data: a generalized linear modelling approach. Statistics in Medicine, 15(3):283-292, 1996. } \author{ Martyn Plummer, \email{martyn.plummer@r-project.org} } \seealso{ \code{\link{Icens}} \code{\link{fit.mult}} } \examples{ data( HIV.dk ) } \keyword{ models } \keyword{ regression } \keyword{ survival } Epi/man/ci.pd.Rd0000644000175100001440000000476313751040403013053 0ustar hornikusers\name{ci.pd} \alias{ci.pd} \title{ Compute confidence limits for a difference of two independent proportions. } \description{ The usual formula for the c.i. of at difference of proportions is inaccurate. Newcombe has compared 11 methods and method 10 in his paper looks like a winner. It is implemented here. } \usage{ ci.pd(aa, bb=NULL, cc=NULL, dd=NULL, method = "Nc", alpha = 0.05, conf.level=0.95, digits = 3, print = TRUE, detail.labs = FALSE ) } \arguments{ \item{aa}{Numeric vector of successes in sample 1. Can also be a matrix or array (see details).} \item{bb}{Successes in sample 2.} \item{cc}{Failures in sample 1.} \item{dd}{Failures in sample 2.} \item{method}{Method to use for calculation of confidence interval, see "Details".} \item{alpha}{Significance level} \item{conf.level}{Confidence level} \item{print}{Should an account of the two by two table be printed.} \item{digits}{How many digits should the result be rounded to if printed.} \item{detail.labs}{Should the computing of probability differences be reported in the labels.} } \details{ Implements method 10 from Newcombe(1998) (method="Nc") or from Agresti & Caffo(2000) (method="AC"). \code{aa}, \code{bb}, \code{cc} and \code{dd} can be vectors. If \code{aa} is a matrix, the elements \code{[1:2,1:2]} are used, with successes \code{aa[,1:2]}. If \code{aa} is a three-way table or array, the elements \code{aa[1:2,1:2,]} are used. } \value{ A matrix with three columns: probability difference, lower and upper limit. The number of rows equals the length of the vectors \code{aa}, \code{bb}, \code{cc} and \code{dd} or, if \code{aa} is a 3-way matrix, \code{dim(aa)[3]}. } \references{ RG Newcombe: Interval estimation for the difference between independent proportions. Comparison of eleven methods. Statistics in Medicine, 17, pp. 873-890, 1998. A Agresti & B Caffo: Simple and effective confidence intervals for proportions and differences of proportions result from adding two successes and two failures. The American Statistician, 54(4), pp. 280-288, 2000. } \author{ Bendix Carstensen, Esa Laara. \url{http://bendixcarstensen.com} } \seealso{ \code{\link{twoby2}}, \code{\link{binom.test}} } \examples{ ( a <- matrix( sample( 10:40, 4 ), 2, 2 ) ) ci.pd( a ) twoby2( t(a) ) prop.test( t(a) ) ( A <- array( sample( 10:40, 20 ), dim=c(2,2,5) ) ) ci.pd( A ) ci.pd( A, detail.labs=TRUE, digits=3 ) } \keyword{distribution} \keyword{htest} Epi/man/steno2.Rd0000644000175100001440000001047614007532512013270 0ustar hornikusers\name{steno2} \alias{steno2} \alias{st2clin} \alias{st2alb} \docType{data} \title{ Clinical trial: Steno2 baseline and follow-up. } \description{ Steno-2 was a clinical trial conducted at Steno Diabetes Center 1993-2001. The intervention was intensified treatment versus conventional treatment of diabetes patients with micro-albuminuria. The datsets here concern the extended follow-up of the trial population till 2015. Three files are provided: \code{steno2} with one record per person, \code{st2clin} with one record per clinical visit and \code{st2alb} with one record per transition between states of albuminuria. These dataset are entirely simulated, but designed to give approximately the same results as the original. } \usage{data("steno2") data("st2clin") data("st2alb") } \format{ \code{steno2} is a data frame with 160 observations on the following 14 variables: \describe{ \item{\code{id}}{person id, numeric} \item{\code{allo}}{Original trial allocation, a factor with levels \code{Int} \code{Conv}} \item{\code{sex}}{Sex, a factor with levels \code{F} \code{M}} \item{\code{baseCVD}}{0/1 indicator of preexisting CVD at baseline} \item{\code{deathCVD}}{0/1 indicator whether cause of death was CVD} \item{\code{doBth}}{Date of birth, a Date} \item{\code{doDM}}{Date of diabetes diagnosis, a Date} \item{\code{doBase}}{Date of entry to study, a Date} \item{\code{doCVD1}}{Date of 1st CVD event, a Date} \item{\code{doCVD2}}{Date of 2nd CVD event, a Date} \item{\code{doCVD3}}{Date of 3rd CVD event, a Date} \item{\code{doESRD}}{Date of end stage renal disease, a Date} \item{\code{doEnd}}{Date of exit from follow-up, a Date} \item{\code{doDth}}{Date of death, a Date} } \code{st2clin} is data frame with 750 observations on clinical measurements at different clinical visits: \describe{ \item{\code{id}}{person id, numeric} \item{\code{doV}}{Date of clinical visit, a Date} \item{\code{a1c}}{Glycosylated hemoglobin, mmol/mol} \item{\code{chol}}{Total cholesterol, mg/mol} \item{\code{crea}}{Creatinine, mg/mol} } \code{st2alb} is data frame with 307 observations of changes in complication (albuminuria) state \describe{ \item{\code{id}}{person id, numeric} \item{\code{doTr}}{Date of transition, a Date} \item{\code{state}}{State of albuminuria, factor with levels \code{Norm}, \code{Mic}, \code{Mac}. All persons begin in the state \code{Mic}ro-albuminuria.} } } \details{ The data are not the original; all values of measurements and dates have been randomly perturbed, to prevent identifiability of individuals. Analysis of these data will give only (very) approximately the same results as in the published article, and only some of the aspects of data are included. } \references{ P. Gaede, J. Oellgaard, B. Carstensen, P. Rossing, H. Lund-Andersen, H. H. Parving & O. Pedersen: Years of life gained by multifactorial intervention in patients with type 2 diabetes mellitus and microalbuminuria: 21 years follow-up on the Steno-2 randomised trial. Diabetologia (2016), 59, pp 2298-2307 } \examples{ data(steno2) data(st2alb) L2 <- Lexis( entry = list(per = doBase, age = doBase - doBth), exit = list(per = doEnd), exit.status = factor(deathCVD + !is.na(doDth), labels=c("Mic","D(oth)","D(CVD)")), id = id, data = cal.yr(steno2) ) summary(L2) # # Cut at intermediate transitions cut2 <- data.frame(lex.id = st2alb$id, cut = cal.yr(st2alb$do), new.state = st2alb$state) L3 <- rcutLexis(L2, cut2) summary(L3) # # no direct transitions Mic <-> Mac allowed, so put a cut in between: dd <- subset(L3, (lex.Cst == "Mac" & lex.Xst =="Norm") | (lex.Cst =="Norm" & lex.Xst == "Mac")) # artificial visits to the middle state Mic: cut3 <- data.frame( lex.id = dd$lex.id, cut = dd$per + dd$lex.dur/2, new.state = "Mic") L4 <- rcutLexis(L3, cut3) summary(L4) # # Show all transitions boxes(L4, boxpos = list(x = c(15,15,15,85,85), y = c(50,15,85,25,75)), show.BE = TRUE, scale.R = 1000, cex=0.8, pos.arr=0.7, font=1, font.arr=1) } \keyword{datasets} Epi/man/boxes.MS.Rd0000644000175100001440000003676113763206455013535 0ustar hornikusers\name{boxes.MS} \Rdversion{1.1} \alias{tbox} \alias{dbox} \alias{fillarr} \alias{boxarr} \alias{boxes} \alias{boxes.Lexis} \alias{boxes.matrix} \alias{boxes.MS} \title{ Draw boxes and arrows for illustration of multistate models. } \description{ Boxes can be drawn with text (\code{tbox}) or a cross (\code{dbox}), and arrows pointing between the boxes (\code{boxarr}) can be drawn automatically not overlapping the boxes. The \code{boxes} method for \code{\link{Lexis}} objects generates displays of states with person-years and transitions with events or rates. } \usage{ tbox( txt, x, y, wd, ht, font=2, lwd=2, col.txt=par("fg"), col.border=par("fg"), col.bg="transparent" ) dbox( x, y, wd, ht=wd, font=2, lwd=2, cwd=5, col.cross=par("fg"), col.border=par("fg"), col.bg="transparent" ) boxarr( b1, b2, offset=FALSE, pos=0.45, ... ) \method{boxes}{Lexis}( obj, boxpos = FALSE, wmult = 1.20, hmult = 1.20 + 0.85*(!show.Y), cex = 1.40, show = inherits( obj, "Lexis" ), show.Y = show, scale.Y = 1, digits.Y = 1, show.BE = FALSE, BE.sep = c("",""," ",""), show.D = show, scale.D = FALSE, digits.D = as.numeric(as.logical(scale.D)), show.R = show & is.numeric(scale.R), scale.R = 1, digits.R = as.numeric(as.logical(scale.R)), DR.sep = if( show.D ) c("\n(",")") else c("",""), eq.wd = TRUE, eq.ht = TRUE, wd, ht, subset = NULL, exclude = NULL, font = 1, lwd = 2, col.txt = par("fg"), col.border = col.txt, col.bg = "transparent", col.arr = par("fg"), lwd.arr = lwd, font.arr = font, pos.arr = 0.45, txt.arr = NULL, col.txt.arr = col.arr, offset.arr = 2, ... ) \method{boxes}{matrix}( obj, ... ) \method{boxes}{MS}( obj, sub.st, sub.tr, cex=1.5, ... ) fillarr( x1, y1, x2, y2, gap=2, fr=0.8, angle=17, lwd=2, length=par("pin")[1]/30, ... ) } \arguments{ \item{txt}{Text to be placed inside the box.} \item{x}{x-coordinate of center of box.} \item{y}{y-coordinate of center of box.} \item{wd}{width of boxes in percentage of the plot width.} \item{ht}{height of boxes in percentage of the plot height.} \item{font}{Font for the text. Defaults to 2 (=bold).} \item{lwd}{Line width of the box borders.} \item{col.txt}{Color for the text in boxes.} \item{col.border}{Color of the box border.} \item{col.bg}{Background color for the interior of the box.} \item{\dots}{Arguments to be passed on to the call of other functions.} \item{cwd}{Width of the lines in the cross.} \item{col.cross}{Color of the cross.} \item{b1}{Coordinates of the "from" box. A vector with 4 components, \code{x}, \code{y}, \code{w}, \code{h}.} \item{b2}{Coordinates of the "to" box; like \code{b1}.} \item{offset}{Logical. Should the arrow be offset a bit to the left.} \item{pos}{Numerical between 0 and 1, determines the position of the point on the arrow which is returned.} \item{obj}{A \code{\link{Lexis}} object or a transition matrix; that is a square matrix indexed by state in both dimensions, and the \eqn{(i,j)}th entry different from \code{NA} if a transition \eqn{i} to \eqn{j} can occur. If \code{show.D=TRUE}, the arrows between states are annotated by these numbers. If \code{show.Y=TRUE}, the boxes representing states are annotated by the numbers in the diagonal of \code{obj}. For \code{boxes.matrix} \code{obj} is a matrix and for \code{boxes.MS}, \code{obj} is an \code{MS.boxes} object (see below).} \item{boxpos}{If \code{TRUE} the boxes are positioned equidistantly on a circle, if \code{FALSE} (the default) you are queried to click on the screen for the positions. This argument can also be a named list with elements \code{x} and \code{y}, both numerical vectors, giving the centers of the boxes. These must be numbers between 0 and 100 indicating percentages of the display in the two directions.} \item{wmult}{Multiplier for the width of the box relative to the width of the text in the box.} \item{hmult}{Multiplier for the height of the box relative to the height of the text in the box.} \item{cex}{Character expansion for text in the box.} \item{show}{Should person-years and transitions be put in the plot. Ignored if \code{obj} is not a \code{Lexis} object.} \item{show.Y}{If logical: Should person-years be put in the boxes. If numeric: Numbers to put in boxes.} \item{scale.Y}{What scale should be used for annotation of person-years.} \item{digits.Y}{How many digits after the decimal point should be used for the person-years.} \item{show.BE}{Logical. Should number of persons beginning resp. ending follow up in each state be shown? If given as character "nz" or "noz" the numbers will be shown, but zeros omitted.} \item{BE.sep}{Character vector of length 4, used for annotation of the number of persons beginning and ending in each state: 1st element precedes no. beginning, 2nd trails it, 3rd precedes the no. ending (defaults to 8 spaces), and the 4th trails the no. ending.} \item{show.D}{Should no. transitions be put alongside the arrows. Ignored if \code{obj} is not a \code{Lexis} object.} \item{scale.D}{Synonymous with \code{scale.R}, retained for compatibility.} \item{digits.D}{Synonymous with \code{digits.R}, retained for compatibility.} \item{show.R}{Should the transition rates be shown on the arrows?} \item{scale.R}{If this a scalar, rates instead of no. transitions are printed at the arrows, scaled by \code{scale.R}.} \item{digits.R}{How many digits after the decimal point should be used for the rates.} \item{DR.sep}{Character vector of length 2. If rates are shown, the first element is inserted before and the second after the rate.} \item{eq.wd}{Should boxes all have the same width?} \item{eq.ht}{Should boxes all have the same height?} \item{subset}{Draw only boxes and arrows for a subset of the states. Can be given either as a numerical vector or character vector state names.} \item{exclude}{Exclude states from the plot. The complementary of \code{subset}. Ignored if \code{subset} is given.} \item{col.arr}{Color of the arrows between boxes. A vector of character strings, the arrows are referred to as the row-wise sequence of non-NA elements of the transition matrix. Thus the first ones refer to the transitions out of state 1, in order of states.} \item{lwd.arr}{Line widths of the arrows.} \item{font.arr}{Font of the text annotation the arrows.} \item{pos.arr}{Numerical between 0 and 1, determines the position on the arrows where the text is written.} \item{txt.arr}{Text put on the arrows.} \item{col.txt.arr}{Colors for text on the arrows.} \item{offset.arr}{The amount offset between arrows representing two-way transitions, that is where there are arrows both ways between two boxes.} \item{sub.st}{Subset of the states to be drawn.} \item{sub.tr}{Subset of the transitions to be drawn.} \item{x1}{x-coordinate of the starting point.} \item{y1}{y-coordinate of the starting point.} \item{x2}{x-coordinate of the end point.} \item{y2}{y-coordinate of the end point.} \item{gap}{Length of the gap between the box and the ends of the arrows.} \item{fr}{Length of the arrow as the fraction of the distance between the boxes. Ignored unless given explicitly, in which case any value given for \code{gap} is ignored.} \item{angle}{What angle should the arrow-head have?} \item{length}{Length of the arrow head in inches. Defaults to 1/30 of the physical width of the plot.} } \details{ These functions are designed to facilitate the drawing of multistate models, mainly by automatic calculation of the arrows between boxes. \code{tbox} draws a box with centered text, and returns a vector of location, height and width of the box. This is used when drawing arrows between boxes. \code{dbox} draws a box with a cross, symbolizing a death state. \code{boxarr} draws an arrow between two boxes, making sure it does not intersect the boxes. Only straight lines are drawn. \code{boxes.Lexis} takes as input a Lexis object sets up an empty plot area (with axes 0 to 100 in both directions) and if \code{boxpos=FALSE} (the default) prompts you to click on the locations for the state boxes, and then draws arrows implied by the actual transitions in the \code{Lexis} object. The default is to annotate the transitions with the number of transitions. A transition matrix can also be supplied, in which case the row/column names are used as state names, diagonal elements taken as person-years, and off-diagonal elements as number of transitions. This also works for \code{boxes.matrix}. Optionally returns the R-code reproducing the plot in a file, which can be useful if you want to produce exactly the same plot with differing arrow colors etc. \code{boxarr} draws an arrow between two boxes, on the line connecting the two box centers. The \code{offset} argument is used to offset the arrow a bit to the left (as seen in the direction of the arrow) on order to accommodate arrows both ways between boxes. \code{boxarr} returns a named list with elements \code{x}, \code{y} and \code{d}, where the two former give the location of a point on the arrow used for printing (see argument \code{pos}) and the latter is a unit vector in the direction of the arrow, which is used by \code{boxes.Lexis} to position the annotation of arrows with the number of transitions. \code{boxes.MS} re-draws what \code{boxes.Lexis} has done based on the object of class \code{MS} produced by \code{boxes.Lexis}. The point being that the \code{MS} object is easily modifiable, and thus it is a machinery to make variations of the plot with different color annotations etc. \code{fill.arr} is just a utility drawing nicer arrows than the default \code{\link{arrows}} command, basically by using filled arrow-heads; called by \code{boxarr}. } \value{The functions \code{tbox} and \code{dbox} return the location and dimension of the boxes, \code{c(x,y,w,h)}, which are designed to be used as input to the \code{boxarr} function. The \code{boxarr} function returns the coordinates (as a named list with names \code{x} and \code{y}) of a point on the arrow, designated to be used for annotation of the arrow. The function \code{boxes.Lexis} returns an \code{MS} object, a list with five elements: 1) \code{Boxes} - a data frame with one row per box and columns \code{xx}, \code{yy}, \code{wd}, \code{ht}, \code{font}, \code{lwd}, \code{col.txt}, \code{col.border} and \code{col.bg}, 2) an object \code{State.names} with names of states (possibly an expression, hence not possible to include as a column in \code{Boxes}), 3) a matrix \code{Tmat}, the transition matrix, 4) a data frame, \code{Arrows} with one row per transition and columns: \code{lwd.arr}, \code{col.arr}, \code{pos.arr}, \code{col.txt.arr}, \code{font.arr} and \code{offset.arr} and 5) an object \code{Arrowtext} with names of states (possibly an expression, hence not possible to include as a column in \code{Arrows}) An \code{MS} object is used as input to \code{boxes.MS}, the primary use is to modify selected entries in the \code{MS} object first, e.g. colors, or supply sub-setting arguments in order to produce displays that have the same structure, but with different colors etc. } \author{Bendix Carstensen} \examples{ par( mar=c(0,0,0,0), cex=1.5 ) plot( NA, bty="n", xlim=0:1*100, ylim=0:1*100, xaxt="n", yaxt="n", xlab="", ylab="" ) bw <- tbox( "Well" , 10, 60, 22, 10, col.txt="blue" ) bo <- tbox( "other Ca", 45, 80, 22, 10, col.txt="gray" ) bc <- tbox( "Ca" , 45, 60, 22, 10, col.txt="red" ) bd <- tbox( "DM" , 45, 40, 22, 10, col.txt="blue" ) bcd <- tbox( "Ca + DM" , 80, 60, 22, 10, col.txt="gray" ) bdc <- tbox( "DM + Ca" , 80, 40, 22, 10, col.txt="red" ) boxarr( bw, bo , col=gray(0.7), lwd=3 ) # Note the argument adj= can takes values outside (0,1) text( boxarr( bw, bc , col="blue", lwd=3 ), expression( lambda[Well] ), col="blue", adj=c(1,-0.2), cex=0.8 ) boxarr( bw, bd , col=gray(0.7) , lwd=3 ) boxarr( bc, bcd, col=gray(0.7) , lwd=3 ) text( boxarr( bd, bdc, col="blue", lwd=3 ), expression( lambda[DM] ), col="blue", adj=c(1.1,-0.2), cex=0.8 ) # Set up a transition matrix allowing recovery tm <- rbind( c(NA,1,1), c(1,NA,1), c(NA,NA,NA) ) rownames(tm) <- colnames(tm) <- c("Cancer","Recurrence","Dead") tm boxes.matrix( tm, boxpos=TRUE ) # Illustrate texting of arrows boxes.Lexis( tm, boxpos=TRUE, txt.arr=c("en","to","tre","fire") ) zz <- boxes( tm, boxpos=TRUE, txt.arr=c(expression(lambda[C]), expression(mu[C]), "recovery", expression(mu[R]) ) ) # Change color of a box zz$Boxes[3,c("col.bg","col.border")] <- "green" boxes( zz ) # Set up a Lexis object data(DMlate) str(DMlate) dml <- Lexis( entry=list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit=list(Per=dox), exit.status=factor(!is.na(dodth),labels=c("DM","Dead")), data=DMlate[1:1000,] ) # Cut follow-up at Insulin dmi <- cutLexis( dml, cut=dml$doins, new.state="Ins", pre="DM" ) summary( dmi ) boxes( dmi, boxpos=TRUE ) boxes( dmi, boxpos=TRUE, show.BE=TRUE ) boxes( dmi, boxpos=TRUE, show.BE="nz" ) boxes( dmi, boxpos=TRUE, show.BE="nz", BE.sep=c("In:"," Out:","") ) # Set up a bogus recovery date just to illustrate two-way transitions dmi$dorec <- dmi$doins + runif(nrow(dmi),0.5,10) dmi$dorec[dmi$dorec>dmi$dox] <- NA dmR <- cutLexis( dmi, cut=dmi$dorec, new.state="DM", pre="Ins" ) summary( dmR ) boxes( dmR, boxpos=TRUE ) boxes( dmR, boxpos=TRUE, show.D=FALSE ) boxes( dmR, boxpos=TRUE, show.D=FALSE, show.Y=FALSE ) boxes( dmR, boxpos=TRUE, scale.R=1000 ) MSobj <- boxes( dmR, boxpos=TRUE, scale.R=1000, show.D=FALSE ) MSobj <- boxes( dmR, boxpos=TRUE, scale.R=1000, DR.sep=c(" (",")") ) class( MSobj ) boxes( MSobj ) MSobj$Boxes[1,c("col.txt","col.border")] <- "red" MSobj$Arrows[1:2,"col.arr"] <- "red" boxes( MSobj ) } \seealso{ \code{\link{tmat.Lexis}} } \keyword{survival} \keyword{hplot} \keyword{iplot} Epi/man/Lexis.diagram.Rd0000644000175100001440000001160213751040403014533 0ustar hornikusers\name{Lexis.diagram} \alias{Lexis.diagram} \title{Plot a Lexis diagram} \description{ Draws a Lexis diagram, optionally with life lines from a cohort, and with lifelines of a cohort if supplied. Intended for presentation purposes. } \usage{ Lexis.diagram( age = c( 0, 60), alab = "Age", date = c( 1940, 2000 ), dlab = "Calendar time", int = 5, lab.int = 2*int, col.life = "black", lwd.life = 2, age.grid = TRUE, date.grid = TRUE, coh.grid = FALSE, col.grid = gray(0.7), lwd.grid = 1, las = 1, entry.date = NA, entry.age = NA, exit.date = NA, exit.age = NA, risk.time = NA, birth.date = NA, fail = NA, cex.fail = 1.1, pch.fail = c(NA,16), col.fail = rep( col.life, 2 ), data = NULL, ... ) } \arguments{ \item{age}{Numerical vector of length 2, giving the age-range for the diagram} \item{alab}{Label on the age-axis.} \item{date}{Numerical vector of length 2, giving the calendar time-range for the diagram} \item{dlab}{label on the calendar time axis.} \item{int}{The interval between grid lines in the diagram. If a vector of length two is given, the first value will be used for spacing of age-grid and the second for spacing of the date grid.} \item{lab.int}{The interval between labelling of the grids.} \item{col.life}{Colour of the life lines.} \item{lwd.life}{Width of the life lines.} \item{age.grid}{Should grid lines be drawn for age?} \item{date.grid}{Should grid lines be drawn for date?} \item{coh.grid}{Should grid lines be drawn for birth cohorts (diagonals)?} \item{col.grid}{Colour of the grid lines.} \item{lwd.grid}{Width of the grid lines.} \item{las}{How are the axis labels plotted?} \item{entry.date, entry.age, exit.date, exit.age, risk.time, birth.date}{Numerical vectors defining lifelines to be plotted in the diagram. At least three must be given to produce lines. Not all subsets of three will suffice, the given subset has to define life lines. If insufficient data is given, no life lines are produced.} \item{fail}{Logical of event status at exit for the persons whose life lines are plotted.} \item{pch.fail}{Symbols at the end of the life lines for censorings (\code{fail==0}) and failures (\code{fail != 0}).} \item{cex.fail}{Expansion of the status marks at the end of life lines.} \item{col.fail}{Character vector of length 2 giving the colour of the failure marks for censorings and failures respectively.} \item{data}{Dataframe in which to interpret the arguments.} \item{...}{Arguments to be passed on to the initial call to plot.} } \value{ If sufficient information on lifelines is given, a data frame with one row per person and columns with entry ages and dates, birth date, risk time and status filled in. Side effect: a plot of a Lexis diagram is produced with the life lines in it is produced. This will be the main reason for using the function. If the primary aim is to illustrate follow-up of a cohort, then it is better to represent the follow-up in a \code{\link{Lexis}} object, and use the generic \code{\link{plot.Lexis}} function. } \details{ The default unit for supplied variables are (calendar) years. If any of the variables \code{entry.date}, \code{exit.date} or \code{birth.date} are of class "\code{Date}" or if any of the variables \code{entry.age}, \code{exit.age} or \code{risk.time} are of class "\code{difftime}", they will be converted to calendar years, and plotted correctly in the diagram. The returned dataframe will then have colums of classes "\code{Date}" and "\code{difftime}". } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \examples{ Lexis.diagram( entry.age = c(3,30,45), risk.time = c(25,5,14), birth.date = c(1970,1931,1925.7), fail = c(TRUE,TRUE,FALSE) ) LL <- Lexis.diagram( entry.age = sample( 0:50, 17, replace=TRUE ), risk.time = sample( 5:40, 17, r=TRUE), birth.date = sample( 1910:1980, 17, r=TRUE ), fail = sample( 0:1, 17, r=TRUE ), cex.fail = 1.1, lwd.life = 2 ) # Identify the persons' entry and exits text( LL$exit.date, LL$exit.age, paste(1:nrow(LL)), col="red", font=2, adj=c(0,1) ) text( LL$entry.date, LL$entry.age, paste(1:nrow(LL)), col="blue", font=2, adj=c(1,0) ) data( nickel ) attach( nickel ) LL <- Lexis.diagram( age=c(10,100), date=c(1900,1990), entry.age=age1st, exit.age=ageout, birth.date=dob, fail=(icd \%in\% c(162,163)), lwd.life=1, cex.fail=0.8, col.fail=c("green","red") ) abline( v=1934, col="blue" ) nickel[1:10,] LL[1:10,] } \keyword{hplot} \keyword{dplot} \seealso{ \code{\link{Life.lines}}, \code{\link{Lexis.lines}} } Epi/man/cal.yr.Rd0000644000175100001440000000554414255351546013261 0ustar hornikusers\name{cal.yr} \alias{cal.yr} \alias{as.Date.cal.yr} \title{ Functions to convert character, factor and various date objects into a number, and vice versa. } \description{ Dates are converted to a numerical value, giving the calendar year as a fractional number. 1 January 1970 is converted to 1970.0, and other dates are converted by assuming that years are all 365.25 days long, so inaccuracies may arise, for example, 1 Jan 2000 is converted to 1999.999. Differences between converted values will be 1/365.25 of the difference between corresponding \code{\link{Date}} objects. } \usage{ cal.yr( x, format="\%Y-\%m-\%d", wh=NULL ) \method{as.Date}{cal.yr}( x, ... ) } \arguments{ \item{x}{A factor or character vector, representing a date in format \code{format}, or an object of class \code{\link{Date}}, \code{\link{POSIXlt}}, \code{\link{POSIXct}}, \code{\link{date}}, \code{dates} or \code{chron} (the latter two requires the \code{chron} package). If \code{x} is a data frame, all variables in the data-frame which are of one the classes mentioned are converted to class \code{cal.yr}. See arguemt \code{wh}, though.} \item{format}{Format of the date values if \code{x} is factor or character. If this argument is supplied and \code{x} is a datafame, all character variables are converted to class \code{cal.yr}. Factors in the dataframe will be ignored.} \item{wh}{Indices of the variables to convert if \code{x} is a data frame. Can be either a numerical or character vector.} \item{...}{Arguments passed on from other methods.} } \value{ \code{cal.yr} returns a numerical vector of the same length as \code{x}, of class \code{c("cal.yr","numeric")}. If \code{x} is a data frame a dataframe with some of the columns converted to class \code{"cal.yr"} is returned. \code{as.Date.cal.yr} returns a \code{\link{Date}} object. } \author{ Bendix Carstensen, Steno Diabetes Center & Dept. of Biostatistics, University of Copenhagen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{DateTimeClasses}}, \code{\link{Date}} } \examples{ # Character vector of dates: birth <- c("14/07/1852","01/04/1954","10/06/1987","16/05/1990", "12/11/1980","01/01/1997","01/01/1998","01/01/1999") # Proper conversion to class "Date": birth.dat <- as.Date( birth, format="\%d/\%m/\%Y" ) # Converson of character to class "cal.yr" bt.yr <- cal.yr( birth, format="\%d/\%m/\%Y" ) # Back to class "Date": bt.dat <- as.Date( bt.yr ) # Numerical calculation of days since 1.1.1970: days <- Days <- (bt.yr-1970)*365.25 # Blunt assignment of class: class( Days ) <- "Date" # Then data.frame() to get readable output of results: data.frame( birth, birth.dat, bt.yr, bt.dat, days, Days, round(Days) ) } \keyword{manip} \keyword{chron} Epi/man/stattable.Rd0000644000175100001440000001135313751040403014032 0ustar hornikusers\name{stat.table} \alias{stat.table} \alias{print.stat.table} \title{Tables of summary statistics} \description{ \code{stat.table} creates tabular summaries of the data, using a limited set of functions. A list of index variables is used to cross-classify summary statistics. It does NOT work inside \code{with()}! } \usage{ stat.table(index, contents = count(), data, margins = FALSE) \method{print}{stat.table}(x, width=7, digits,...) } \arguments{ \item{index}{A factor, or list of factors, used for cross-classification. If the list is named, then the names will be used when printing the table. This feature can be used to give informative labels to the variables.} \item{contents}{A function call, or list of function calls. Only a limited set of functions may be called (See Details below). If the list is named, then the names will be used when printing the table.} \item{data}{an optional data frame containing the variables to be tabulated. If this is omitted, the variables will be searched for in the calling environment.} \item{margins}{a logical scalar or vector indicating which marginal tables are to be calculated. If a vector, it should be the same length as the \code{index} argument: values corresponding to \code{TRUE} will be retained in marginal tables.} \item{x}{an object of class \code{stat.table}.} \item{width}{a scalar giving the minimum column width when printing.} \item{digits}{a scalar, or named vector, giving the number of digits to print after the decimal point. If a named vector is used, the names should correspond to one of the permitted functions (See Details below) and all results obtained with that function will be printed with the same precision.} \item{...}{further arguments passed to other print methods.} } \details{ This function is similar to \code{tapply}, with some enhancements: multiple summaries of multiple variables may be mixed in the same table; marginal tables may be calculated; columns and rows may be given informative labels; pretty printing may be controlled by the associated print method. This function is not a replacement for \code{tapply} as it also has some limitations. The only functions that may be used in the \code{contents} argument are: \code{\link{count}}, \code{\link{mean}}, \code{\link{weighted.mean}}, \code{\link{sum}}, \code{\link{quantile}}, \code{\link{median}}, \code{\link{IQR}}, \code{\link{max}}, \code{\link{min}}, \code{\link{ratio}}, \code{\link{percent}}, and \code{\link{sd}}. The \code{count()} function, which is the default, simply creates a contingency table of counts. The other functions are applied to each cell created by combinations of the \code{index} variables. } \value{ An object of class \code{stat.table}, which is a multi-dimensional array. A print method is available to create formatted one-way and two-way tables. } \author{Martyn Plummer} \note{ The permitted functions in the contents list %are overloaded functions that are defined inside \code{stat.table}. They have the same interface as the functions callable from the command line, except for two differences. If there is an argument \code{na.rm} then its default value is always \code{TRUE}. A second difference is that the \code{quantile} function can only produce a single quantile in each call. } \seealso{\code{\link{table}}, \code{\link{tapply}}, \code{\link{mean}}, \code{\link{weighted.mean}}, \code{\link{sum}}, \code{\link{quantile}}, \code{\link{median}}, \code{\link{IQR}}, \code{\link{max}}, \code{\link{min}}, \code{\link{ratio}}, \code{\link{percent}}, \code{\link{count}}, \code{\link{sd}}.} \examples{ data(warpbreaks) # A one-way table stat.table(tension,list(count(),mean(breaks)),data=warpbreaks) # The same table with informative labels stat.table(index=list("Tension level"=tension),list(N=count(), "mean number of breaks"=mean(breaks)),data=warpbreaks) # A two-way table stat.table(index=list(tension,wool),mean(breaks),data=warpbreaks) # The same table with margins over tension, but not wool stat.table(index=list(tension,wool),mean(breaks),data=warpbreaks, margins=c(TRUE, FALSE)) # A table of column percentages stat.table(list(tension,wool), percent(tension), data=warpbreaks) # Cell percentages, with margins stat.table(list(tension,wool),percent(tension,wool), margin=TRUE, data=warpbreaks) # A table with multiple statistics # Note how each statistic has its own default precision a <- stat.table(index=list(wool,tension), contents=list(count(),mean(breaks),percent (wool)), data=warpbreaks) print(a) # Print the percentages rounded to the nearest integer print(a, digits=c(percent=0)) } \keyword{iteration} \keyword{category} Epi/man/fit.mult.Rd0000644000175100001440000000360413751040403013611 0ustar hornikusers\name{fit.mult} \alias{fit.mult} \title{ Fits a multiplicative relative risk model to interval censored data. } \description{ Utility function. The model fitted assumes a piecewise constant baseline rate in intervals specified by the argument \code{breaks}, and a multiplicative relative risk function. } \usage{ fit.mult( y, rates.frame, cov.frame, start ) } \arguments{ \item{y}{Binary vector of outcomes} \item{rates.frame}{Dataframe expanded from the original data by \code{\link{expand.data}}, cooresponding to covariates for the rate parameters.} \item{cov.frame}{ do., but covariates corresponding to the \code{formula} argument of \code{\link{Icens}}} \item{start}{Starting values for the rate parameters. If not supplied, then starting values are generated.} } \details{ The model is fitted by alternating between two generalized linear models where one estimates the underlying rates in the intervals, and the other estimates the log-relative risks. } \value{ A list with three components: \item{rates}{A glm object from a binomial model with log-link, estimating the baseline rates.} \item{cov}{A glm object from a binomial model with complementary log-log link, estimating the log-rate-ratios} \item{niter}{Nuber of iterations, a scalar} } \references{ B Carstensen: Regression models for interval censored survival data: application to HIV infection in Danish homosexual men. Statistics in Medicine, 15(20):2177-2189, 1996. CP Farrington: Interval censored survival data: a generalized linear modelling approach. Statistics in Medicine, 15(3):283-292, 1996. } \author{ Martyn Plummer, \email{martyn.plummer@r-project.org}, Bendix Carstensen, \email{b@bxc.dk} } \seealso{ \code{\link{Icens}} \code{\link{fit.add}} } \examples{ data( HIV.dk ) } \keyword{ models } \keyword{ regression } \keyword{ survival } Epi/man/matshade.Rd0000644000175100001440000000776013751040403013644 0ustar hornikusers\name{matshade} \alias{matshade} \title{ Plot confidence intervals as shaded areas around lines. } \description{ Uses an x-vector and a matrix of 3*N columns with estimates and ci.s to produce the lines of estimates and confidence intervals as shaded areas in transparent colours around the lines of the estimates. } \usage{ matshade( x, y, lty = 1, col = 1:(ncol(y)/3), col.shade=col, alpha=0.15, plot = dev.cur()==1, ... ) } \arguments{ \item{x}{Numerical vector. Unlike \code{\link{matplot}} this can only be a vector. } \item{y}{A matrix with 3*N columns --- representing estimates and confidence bounds for N curves. Order of columns are assumed to be (est,lo,hi,est,lo,hi...) (or (est,hi,lo...)) } \item{lty}{Line types for the curves. } \item{col}{Color(s) of the estimated curves. } \item{col.shade}{Color(s) of the shaded areas. These are the colors that are made transparent by the \code{alpha} factor. Defaults to the same colors as the lines. } \item{alpha}{Number in [0,1] indicating the transparency of the colors for the confidence intervals. Larger values makes the shades darker. Can be a vector which then applies to the curves in turn. } \item{plot}{Logical. Should a new plot frame be started? If no device is active, the default is to start one, and plot all \code{y}s versus x in transparent color. On the rare occasion a device is open, but no plot have been called you will get an error telling that plot.new has not been called yet, in which case you should explicitly set \code{plot} to \code{TRUE}. } \item{\dots}{Arguments passed on to \code{\link{matplot}} (if \code{plot=TRUE}) and \code{\link{matlines}} for use when plotting the lines. Note that \code{lwd=0} will cause lines to be omitted and only the shades be plotted. } } \details{All shaded areas are plotted first, the curves added afterwards, so that lines are not 'overshadowed'. If there are NAs in \code{x} or \code{y} there will be separate shaded areas for each non-\code{NA} sequence. Applies separately to each set of confidence bands in \code{y}. Note that if you repeat the same command, you will get the curves and the shaded areas overplotted in the same frame, so the effect is to have the shades darker, because the transparent colors are plotted on top of those from the first command. } \value{NULL. Used for its side effects. } \author{Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{\code{\link{pc.matshade}} } \examples{ # Follow-up data of Danish DM patients data( DMlate ) mL <- Lexis( entry=list(age=dodm-dobth,per=dodm), exit=list(per=dox), exit.status=factor(!is.na(dodth),labels=c("Alive","Dead")), data=DMlate ) # Split follow-up and model by splines sL <- splitLexis( mL, breaks=0:100, time.scale="age") \dontrun{ # the same thing with popEpi sL <- splitMulti( mL, age=0:100 ) } # Mortality rates separately for M and F: mort <- glm( (lex.Xst=="Dead") ~ sex*Ns(age,knots=c(15,3:8*10)), offset = log(lex.dur), family = poisson, data = sL ) \dontrun{ # The counterpart with gam library( mgcv ) mort <- gam( (lex.Xst=="Dead") ~ s(age,by=sex) + sex, offset = log(lex.dur), family = poisson, data = sL ) } # predict rates (per 1000 PY) for men and women ndM <- data.frame( age=10:90, sex="M", lex.dur=1 ) ndF <- data.frame( age=10:90, sex="F", lex.dur=1 ) # gam objects ignores the offset in prediction so # lex.dur=1000 in prediction frame wll not work. prM <- ci.pred( mort, ndM )*1000 prF <- ci.pred( mort, ndF )*1000 # predict rate-ratio MFr <- ci.exp( mort, ctr.mat=list(ndM,ndF) ) # plot lines with shaded confidence limits # for illustration we make a holes for the RRs: MFr[40:45,2] <- NA MFr[44:49,1] <- NA matshade( ndM$age, cbind( MFr, prF, prM ), col=c(1,2,4), lwd=3, log="y", xlab="Age", ylab="Mortality per 1000 PY (and RR)" ) abline( h=1 ) } \keyword{color} Epi/man/apc.LCa.Rd0000644000175100001440000000550713751040403013254 0ustar hornikusers\name{apc.LCa} \alias{apc.LCa} \alias{show.apc.LCa} \title{Fit Age-Period-Cohort models and Lee-Carter models with effects modeled by natural splines. } \description{ \code{apc.LCa} fits an Age-Period-Cohort model and sub-models (using \code{\link{apc.fit}}) as well as Lee-Carter models (using \code{\link{LCa.fit}}). \code{show.apc.LCa} plots the models in little boxes with their residual deviance with arrows showing their relationships. } \usage{ apc.LCa( data, keep.models = FALSE, ... ) show.apc.LCa( x, dev.scale = TRUE, top = "Ad", ... ) } \arguments{ \item{data}{A data frame that must have columns \code{A}, \code{P}, \code{D} and \code{Y}, see e.g. \code{\link{apc.fit}} } \item{keep.models}{Logical. Should the \code{apc} object and the 5 \code{LCa} objects be returned too? } \item{...}{Further parameters passed on to \code{\link{LCa.fit}} or \code{\link{boxes.matrix}}. } \item{x}{The result from a call to \code{apc.LCa}.} \item{dev.scale}{Should the vertical position of the boxes with the models be scales relative to the deviance between the Age-drift model and the extended Lee-Carter model?} \item{top}{The model presented at the top of the plot of boxes (together with any other model with larger deviance) when vertical position is scaled by deviances. Only "Ad", "AP", "AC", "APa" or "ACa" will make sense.} } \details{The function \code{apc.LCa} fits all 9 models (well, 10) available as extension and sub-models of the APC-model and compares them by returning deviance and residual df. } \value{A 9 by 2 matrix classified by model and deviance/df; optionally (if \code{models=TRUE}) a list with the matrix as \code{dev}, \code{apc}, an \code{apc} object (from \code{\link{apc.fit}}), and \code{LCa}, a list with 5 \code{LCa} objects (from \code{\link{LCa.fit}}). } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{ \link{apc.fit}}, \code{\link{LCa.fit} } } \examples{ library( Epi ) clear() # Danish lung cancer incidence in 5x5x5 Lexis triangles data( lungDK ) lc <- subset( lungDK, Ax>40 )[,c("Ax","Px","D","Y")] names( lc )[1:2] <- c("A","P") head( lc ) al <- apc.LCa( lc, npar=c(9,6,6,6,10), keep.models=TRUE, maxit=500, eps=10e-3 ) show.apc.LCa( al, dev=TRUE ) # Danish mortality data \dontrun{ data( M.dk ) mdk <- subset( M.dk, sex==1 )[,c("A","P","D","Y")] head( mdk ) al <- apc.LCa( mdk, npar=c(15,15,20,6,6), maxit=50, eps=10e-3, quiet=FALSE, VC=FALSE ) show.apc.LCa( al, dev=FALSE ) show.apc.LCa( al, dev=TRUE ) show.apc.LCa( al, top="AP" ) # Fit a reasonable model to Danish mortality data and plot results mAPa <- LCa.fit( mdk, model="APa", npar=c(15,15,20,6,6), c.ref=1930, a.ref=70, quiet=FALSE, maxit=250 ) par( mfrow=c(1,3) ) plot( mAPa ) } } \keyword{regression} \keyword{models} Epi/man/thoro.Rd0000644000175100001440000000401113751040403013173 0ustar hornikusers\name{thoro} \alias{thoro} \docType{data} \title{Thorotrast Study} \description{ The \code{thoro} data frame has 2470 rows and 14 columns. Each row represents one patient that have had cerebral angiography (X-ray of the brain) with an injected contrast medium, either Thorotrast or another one (the controls). } \format{ This data frame contains the following columns: \describe{ \item{\code{id}}{Identification of person.} \item{\code{sex}}{Sex, 1: male / 2: female.} \item{\code{birthdat}}{Date of birth, \code{Date} variable.} \item{\code{contrast}}{Group, 1: Thorotrast / 2: Control.} \item{\code{injecdat}}{Date of contrast injection, \code{Date} variable.} \item{\code{volume}}{Injected volume of Thorotrast in ml. Control patients have a 0 in this variable.} \item{\code{exitdat}}{Date of exit from the study, \code{Date} variable.} \item{\code{exitstat}}{Status at exit, 1: dead / 2: alive, censored at closing of study, 20 February 1992 / 3: censored alive at some earlier date.} \item{\code{cause}}{Cause of death. See causes in the helpfile for \code{\link{gmortDK}}.} \item{\code{liverdat}}{Date of liver cancer diagnosis, \code{Date} variable.} \item{\code{liver}}{Indicator of liver cancer diagnosis. Not all livercancers are histologically verified, hence \code{liver >= hepcc + chola + hmang}} \item{\code{hepcc}}{Hepatocellular carcinoma at \code{liverdat}.} \item{\code{chola}}{Cholangiocellular carcinoma at \code{liverdat}.} \item{\code{hmang}}{Haemangisarcoma carcinoma at \code{liverdat}.} } } \source{ M Andersson, M Vyberg, J Visfeldt, B Carstensen & HH Storm: Primary liver tumours among Danish patients exposed to Thorotrast. Radiation Research, 137, pp. 262--273, 1994. M Andersson, B Carstensen HH Storm: Mortality and cancer incidence after cerebral angiography. Radiation Research, 142, pp. 305--320, 1995. } \examples{ data(thoro) str(thoro) } \seealso{\code{\link{mortDK}}, \code{\link{gmortDK}}} \keyword{datasets} Epi/man/clogistic.Rd0000644000175100001440000000656013751040403014033 0ustar hornikusers\name{clogistic} \alias{clogistic} \title{Conditional logistic regression} \description{ Estimates a logistic regression model by maximizing the conditional likelihood. The conditional likelihood calculations are exact, and scale efficiently to strata with large numbers of cases. } \usage{ clogistic(formula, strata, data, subset, na.action, init, model = TRUE, x = FALSE, y = TRUE, contrasts = NULL, iter.max=20, eps=1e-6, toler.chol = sqrt(.Machine$double.eps)) } \arguments{ \item{formula}{Model formula} \item{strata}{Factor describing membership of strata for conditioning} \item{data}{data frame containing the variables in the formula and strata arguments} \item{subset}{subset of records to use} \item{na.action}{missing value handling} \item{init}{initial values} \item{model}{ a logical value indicating whether \emph{model frame} should be included as a component of the returned value} \item{x,y}{ logical values indicating whether the response vector and model matrix used in the fitting process should be returned as components of the returned value. } \item{contrasts}{ an optional list. See the \code{contrasts.arg} of \code{model.matrix.default} } \item{iter.max}{maximum number of iterations} \item{eps}{ Convergence tolerance. Iteration continues until the relative change in the conditional log likelihood is less than \code{eps}. Must be positive. } \item{toler.chol}{ Tolerance used for detection of a singularity during a Cholesky decomposition of the variance matrix. This is used to detect redundant predictor variables. Must be less than \code{eps}. } } \value{ An object of class \code{"clogistic"}. This is a list containing the following components: \item{coefficients}{ the estimates of the log-odds ratio parameters. If the model is over-determined there will be missing values in the vector corresponding to the redundant columns in the model matrix. } \item{var}{ the variance matrix of the coefficients. Rows and columns corresponding to any missing coefficients are set to zero. } \item{loglik}{ a vector of length 2 containing the log-likelihood with the initial values and with the final values of the coefficients. } \item{iter}{ number of iterations used. } \item{n}{ number of observations used. Observations may be dropped either because they are missing, or because they belong to a homogeneous stratum. For more details on which observations were used, see \code{informative} below. } \item{informative}{ if \code{model=TRUE}, a logical vector of length equal to the number of rows in the model frame. This indicates whether an observation is informative. Strata that are homogeneous with respect to either the outcome variable or the predictor variables are uninformative, in the sense that they can be removed without modifying the estimates or standard errors. If \code{model=FALSE}, this is NULL. } The output will also contain the following, for documentation see the \code{glm} object: \code{terms}, \code{formula}, \code{call}, \code{contrasts}, \code{xlevels}, and, optionally, \code{x}, \code{y}, and/or \code{frame}. } \examples{ data(bdendo) clogistic(d ~ cest + dur, strata=set, data=bdendo) } \author{Martyn Plummer} \seealso{\code{\link{glm}}} \keyword{models} Epi/man/testisDK.Rd0000644000175100001440000000115413751040403013577 0ustar hornikusers\name{testisDK} \alias{testisDK} \docType{data} \title{Testis cancer incidence in Denmark, 1943--1996 } \description{Number of testiscancer cases and male person-years in the Danish population 1943--1996} \usage{data(testisDK)} \format{ A data frame with 4860 observations on the following 4 variables. \describe{ \item{\code{A}}{Age class, 0,1,2,...,89} \item{\code{P}}{Year, 1943,...,1996} \item{\code{D}}{Number of testis cancer cases} \item{\code{Y}}{Person years} } } \source{The Danish Cancer Registry } \examples{ data(testisDK) head(testisDK) } \keyword{datasets} Epi/man/expand.data.Rd0000644000175100001440000000334713751040403014242 0ustar hornikusers\name{expand.data} \alias{expand.data} \title{ Function to expand data for regression analysis of interval censored data. } \description{ This is a utility function. The original records with \code{first.well}, \code{last.well} and \code{first.ill} are expanded to multiple records; several for each interval where the person is known to be well and one where the person is known to fail. At the same time columns for the covariates needed to estimate rates and the response variable are generated. } \usage{ expand.data(fu, formula, breaks, data) } \arguments{ \item{fu}{A 3-column matrix with \code{first.well}, \code{last.well} and \code{first.ill} in each row.} \item{formula}{Model fromula, used to derive the model matrix.} \item{breaks}{Defines the intervals in which the baseline rate is assumed constant. All follow-up before the first and after the last break is discarded.} \item{data}{Datafrem in which \code{fu} and \code{formula} is interpreted.} } \value{ Returns a list with three components \item{rates.frame}{Dataframe of covariates for estimation of the baseline rates --- one per interval defined by \code{breaks}.} \item{cov.frame}{Dataframe for estimation of the covariate effects. A data-framed version of the designmatrix from \code{formula}.} \item{y}{Response vector.} } \references{ B Carstensen: Regression models for interval censored survival data: application to HIV infection in Danish homosexual men. Statistics in Medicine, 15(20):2177-2189, 1996. } \author{ Martyn Plummer, \email{martyn.plummer@r-project.org} } \seealso{ \code{\link{Icens}} \code{\link{fit.mult}} \code{\link{fit.add}} } \keyword{ models } \keyword{ regression } \keyword{ survival } Epi/man/start.Lexis.Rd0000644000175100001440000000540414224762210014272 0ustar hornikusers\name{entry.Lexis} \alias{entry} \alias{exit} \alias{status} \alias{dur} \alias{transient} \alias{absorbing} \alias{before} \alias{preceding} \alias{after} \alias{succeeding} \title{Time series and other methods for Lexis objects} \description{ Extract the entry time, exit time, status or duration of follow-up from a \code{Lexis} object. Classify states. } \usage{ entry(x, time.scale = NULL, by.id=FALSE) exit(x, time.scale = NULL, by.id=FALSE) status(x, at="exit" , by.id=FALSE) dur(x, by.id=FALSE) transient(x) absorbing(x) preceding(x, states) before(x, states) succeeding(x, states) after(x, states) } \arguments{ \item{x}{an object of class \code{Lexis}.} \item{time.scale}{a string or integer indicating the time scale. If omitted, all times scales are used.} \item{by.id}{Logical, if \code{TRUE}, only one record per unique value of \code{lex.id} is returned; either the first, the last, or for \code{dur}, the sum of \code{lex.dur}. If \code{TRUE}, the returned object have the \code{lex.id} as (row)names attribute.} \item{at}{string indicating the time point(s) at which status is to be measured. Possible values are "exit" or "entry".} \item{states}{Character vector of states.} } \value{ The \code{entry} and \code{exit} functions return a vector of entry times and exit times, respectively, on the requested time scale. If multiple time scales are requested, a matrix is returned. The \code{status} function returns a vector giving the status at "\code{at}" (either '\code{entry}' or '\code{exit}') and \code{dur} returns a vector with the lengths of the follow-up intervals. \code{entry}, \code{exit}, \code{status} and \code{dur} return vectors of length \code{nrow(x)} if \code{by.id=FALSE}; if \code{by.id=TRUE} a vector of length \code{length(unique(lex.id))}. The functions \code{transient} and \code{absorbing} return character vectors of the transient, resp. absorbing states in \code{x}. These are necessarily disjoint but the union may be a proper subset of \code{levels(x)}, since the latter may have levels that are never assumed by either \code{lex.Cst} or \code{lex.Xst}. \code{preceding} returns a character vector with names of the states of the Lexis object \code{x} from which one of the states in \code{states} can be reached directly - the preceding states. \code{before} is just a synonym for \code{preceding}. \code{succeeding} returns a character vector with names of the states of the Lexis object \code{x} that can be reached directly from one of the states in \code{states}. \code{after} is just a synonym for \code{succeeding}. } \author{Martyn Plummer & Bendix Carstensen} \seealso{\code{\link{Lexis}}} \keyword{survival} \keyword{ts} Epi/man/brv.Rd0000644000175100001440000000363213751040403012641 0ustar hornikusers\name{brv} \alias{brv} \docType{data} \title{Bereavement in an elderly cohort} \description{ The \code{brv} data frame has 399 rows and 11 columns. The data concern the possible effect of marital bereavement on subsequent mortality. They arose from a survey of the physical and mental health of a cohort of 75-year-olds in one large general practice. These data concern mortality up to 1 January, 1990 (although further follow-up has now taken place). Subjects included all lived with a living spouse when they entered the study. There are three distinct groups of such subjects: (1) those in which both members of the couple were over 75 and therefore included in the cohort, (2) those whose spouse was below 75 (and was not, therefore, part of the main cohort study), and (3) those living in larger households (that is, not just with their spouse). } \format{ This data frame contains the following columns: \describe{ \item{\code{id}}{subject identifier, a numeric vector} \item{\code{couple}}{couple identifier, a numeric vector} \item{\code{dob}}{date of birth, a date} \item{\code{doe}}{date of entry into follow-up study, a date} \item{\code{dox}}{date of exit from follow-up study, a date} \item{\code{dosp}}{date of death of spouse, a date (if the spouse was still alive at the end of follow-up,this was coded to January 1, 2000)} \item{\code{fail}}{status at end of follow-up, a numeric vector (0=alive,1=dead)} \item{\code{group}}{see Description, a numeric vector} \item{\code{disab}}{disability score, a numeric vector} \item{\code{health}}{perceived health status score, a numeric vector} \item{\code{sex}}{a factor with levels \code{Male} and \code{Female} } } } \source{ Jagger C, and Sutton CJ, Death after Marital Bereavement. Statistics in Medicine, 10:395-404, 1991. (Data supplied by Carol Jagger). } \examples{ data(brv) } \keyword{datasets} Epi/man/subset.Lexis.Rd0000644000175100001440000000225313766441333014453 0ustar hornikusers\name{subset.Lexis} \alias{subset.Lexis} \alias{[.Lexis} \alias{subset.stacked.Lexis} \title{Subsetting Lexis (and stacked.Lexis) objects} \description{ Return subsets of Lexis objects which meet conditions } \usage{ \method{subset}{Lexis}(x, ...) \method{[}{Lexis}(x, ...) \method{subset}{stacked.Lexis}(x, ...) } \arguments{ \item{x}{an object of class \code{Lexis}} \item{\dots}{additional arguments to be passed to \code{subset.data.frame}. This will normally be some logical expression selecting a subset of the rows. For details see \code{\link{subset.data.frame}}.} } \details{ The subset method for \code{Lexis} objects works exactly as the method for data frames. So does the "[" method. The special methods are needed in order to propagate the Lexis-specific attributes. The method for \code{stacked.Lexis} objects also shrinks the set of levels for \code{lex.Cst} and \code{lex.Xst} to those actually occurring in the resulting data frame. } \value{ A \code{Lexis} object with selected rows and columns. } \author{Martyn Plummer} \seealso{\code{\link{Lexis}}, \code{\link{merge.Lexis}}, \code{\link{bootLexis}}} \keyword{manip} Epi/man/stattable.funs.Rd0000644000175100001440000000332413751040403015003 0ustar hornikusers\name{stattable.funs} \alias{count} \alias{percent} \alias{ratio} \title{Special functions for use in stat.table} \description{ These functions may be used as \code{contents} arguments to the function \code{stat.table}. They are defined internally in \code{stat.table} and have no independent existence. } \usage{ count(id) ratio(d,y,scale=1, na.rm=TRUE) percent(...) } \arguments{ \item{id}{numeric vector in which identical values identify the same individual.} \item{d, y}{numeric vectors of equal length (\code{d} for Deaths, \code{y} for person-Years)} \item{scale}{a scalar giving a value by which the ratio should be multiplied} \item{na.rm}{a logical value indicating whether \code{NA} values should be stripped before computation proceeds.} \item{...}{a list of variables taken from the \code{index} argument to \code{\link{stat.table}}} } \value{ When used as a \code{contents} argument to \code{stat.table}, these functions create the following tables: \item{\code{count}}{If given without argument (\code{count()}) it returns a contingency table of counts. If given an \code{id} argument it returns a table of the number of different values of \code{id} in each cell, i.e. how many persons contribute in each cell.} \item{\code{ratio}}{returns a table of values \code{scale * sum(d)/sum(y)}} \item{\code{percent}}{returns a table of percentages of the classifying variables. Variables that are in the \code{index} argument to \code{stat.table} but not in the call to \code{percent} are used to define strata, within which the percentages add up to 100.} } \author{Martyn Plummer} \seealso{\code{\link{stat.table}}} \keyword{iteration} \keyword{category} Epi/man/time.band.Rd0000644000175100001440000000450113751040403013705 0ustar hornikusers\name{timeBand} \alias{timeBand} \alias{breaks} \title{Extract time band data from a split Lexis object} \description{ The break points of a \code{Lexis} object (created by a call to \code{splitLexis}) divide the follow-up intervals into time bands along a given time scale. The \code{breaks} function returns the break points, for a given time scale, and the \code{timeBand} classifies each row (=follow-up interval) into one of the time bands. } \usage{ timeBand(lex, time.scale, type="integer") breaks(lex, time.scale) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{lex}{an object of class \code{Lexis}} \item{time.scale}{a character or integer vector of length 1 identifying the time scale of interest} \item{type}{a string that determines how the time bands are labelled. See Details below} } \details{ Time bands may be labelled in various ways according to the \code{type} argument. The permitted values of the \code{type} argument, and the corresponding return values are: \describe{ \item{"integer"}{a numeric vector with integer codes starting from 0.} \item{"factor"}{a factor (unordered) with labels "(left,right]"} \item{"left"}{the left-hand limit of the time band} \item{"middle"}{the midpoint of the time band} \item{"right"}{the right-hand limit of the time band} } } \value{ The \code{breaks} function returns a vector of break points for the \code{Lexis} object, or NULL if no break points have been defined by a call to \code{splitLexis}. The \code{timeBand} function returns a numeric vector or factor, depending on the value of the \code{type} argument. } \author{Martyn Plummer} \note{ A newly created \code{Lexis} object has no break points defined. In this case, \code{breaks} will return NULL, and \code{timeBand} will a vector of zeros. } \examples{ data(diet) diet <- cal.yr(diet) diet.lex <- Lexis(entry=list(period=doe), exit=list(period=dox, age=dox-dob), exit.status=chd, data=diet) diet.split <- splitLexis(diet.lex, breaks=seq(40,70,5), "age" ) age.left <- timeBand(diet.split, "age", "left") table(age.left) age.fact <- timeBand(diet.split, "age", "factor") table(age.fact) age.mid <- timeBand(diet.split, "age", "mid") table(age.mid) } \seealso{\code{\link{Lexis}}} \keyword{attribute} Epi/man/lep.Rd0000644000175100001440000000233013751040403012622 0ustar hornikusers\name{lep} \alias{lep} \docType{data} \title{An unmatched case-control study of leprosy incidence} \description{ The \code{lep} data frame has 1370 rows and 7 columns. This was an unmatched case-control study in which incident cases of leprosy in a region of N. Malawi were compared with population controls. } \format{ This data frame contains the following columns: \tabular{rl}{ \code{id}: \tab subject identifier: a numeric vector \cr \code{d}: \tab case/control status: a numeric vector (1=case, 0=control) \cr \code{age}: \tab a factor with levels \code{5-9} \code{10-14} \code{15-19} \code{20-24} \code{25-29} \code{30-44} \code{45+} \cr \code{sex}: \tab a factor with levels \code{male}, \code{female} \cr \code{bcg}: \tab presence of vaccine scar, a factor with levels \code{no} \code{yes} \cr \code{school}: \tab schooling, a factor with levels \code{none} \code{1-5yrs} \code{6-8yrs} \code{sec/tert} \cr \code{house}: \tab housing, a factor with levels \code{brick} \code{sunbrick} \code{wattle} \code{temp} \cr } } \source{ The study is described in more detail in Clayton and Hills, Statistical Models in Epidemiology, Oxford University Press, Oxford:1993. } \examples{ data(lep) } \keyword{datasets} Epi/man/lines.apc.Rd0000644000175100001440000001054113751040403013721 0ustar hornikusers\name{apc.lines} \alias{lines.apc} \alias{apc.lines} \title{ Plot APC-estimates in an APC-frame. } \description{ When an APC-frame has been produced by \code{\link{apc.frame}}, this function draws a set of estimates from an APC-fit in the frame. An optional drift parameter can be added to the period parameters and subtracted from the cohort and age parameters. } \usage{ \method{lines}{apc}( x, P, C, scale = c("log","ln","rates","inc","RR"), frame.par = options()[["apc.frame.par"]], drift = 0, c0 = median( C[,1] ), a0 = median( A[,1] ), p0 = c0 + a0, ci = rep( FALSE, 3 ), lwd = c(3,1,1), lty = 1, col = "black", type = "l", knots = FALSE, shade = FALSE, ... ) apc.lines( x, P, C, scale = c("log","ln","rates","inc","RR"), frame.par = options()[["apc.frame.par"]], drift = 0, c0 = median( C[,1] ), a0 = median( A[,1] ), p0 = c0 + a0, ci = rep( FALSE, 3 ), lwd = c(3,1,1), lty = 1, col = "black", type = "l", knots = FALSE, shade = FALSE, ... ) } \arguments{ \item{x}{If an \code{apc}-object, (see \code{\link{apc.fit}}), then the arguments \code{P}, \code{C}, \code{c0}, \code{a0} and \code{p0} are ignored, and the estimates from \code{x} plotted. Can also be a 4-column matrix with columns age, age-specific rates, lower and upper c.i., in which case period and cohort effects are taken from the arguments \code{P} and \code{C}. } \item{P}{Period effects. Rate-ratios. Same form as for the age-effects.} \item{C}{Cohort effects. Rate-ratios. Same form as for the age-effects.} \item{scale}{Are effects given on a log-scale? Character variable, one of \code{"log"}, \code{"ln"}, \code{"rates"}, \code{"inc"}, \code{"RR"}. If \code{"log"} or \code{"ln"} it is assumed that effects are log(rates) and log(RRs) otherwise the actual effects are assumed given in \code{A}, \code{P} and \code{C}. If \code{A} is of class \code{apc}, it is assumed to be \code{"rates"}.} \item{frame.par}{2-element vector with the cohort-period offset and RR multiplicator. This will typically be the result from the call of \code{\link{apc.frame}}. See this for details.} \item{drift}{The drift parameter to be added to the period effect. If \code{scale="log"} this is assumed to be on the log-scale, otherwise it is assumed to be a multiplicative factor per unit of the first columns of \code{A}, \code{P} and \code{C} } \item{c0}{The cohort where the drift is assumed to be 0; the subtracted drift effect is \code{drift*(C[,1]-c0)}.} \item{a0}{The age where the drift is assumed to be 0.} \item{p0}{The period where the drift is assumed to be 0.} \item{ci}{Should confidence interval be drawn. Logical or character. If character, any occurrence of \code{"a"} or \code{"A"} produces confidence intervals for the age-effect. Similarly for period and cohort.} \item{lwd}{Line widths for estimates, lower and upper confidence limits.} \item{lty}{Linetypes for the three effects.} \item{col}{Colours for the three effects.} \item{type}{What type of lines / points should be used.} \item{knots}{Should knots from the model be shown?} \item{shade}{Should confidence intervals be plotted as shaded areas? If true, the setting of \code{ci} is ignored.} \item{...}{Further parameters to be transmitted to \code{points} \code{lines}, \code{matpoints} or \code{matlines} used for plotting the three sets of curves.} } \details{ There is no difference between the functions \code{apc.lines} and \code{lines.apc}, except the the latter is the \code{lines} method for \code{apc} objects. The drawing of three effects in an APC-frame is a rather trivial task, and the main purpose of the utility is to provide a function that easily adds the functionality of adding a drift so that several sets of lines can be easily produced in the same frame. } \value{ \code{apc.lines} returns (invisibly) a list of three matrices of the effects plotted. } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{apc.frame}}, \code{\link{pc.lines}}, \code{\link{apc.fit}}, \code{\link{apc.plot}} } \keyword{hplot} Epi/man/hivDK.Rd0000644000175100001440000000260413751040403013053 0ustar hornikusers\name{ hivDK } \alias{ hivDK } \docType{ data } \title{ hivDK: seroconversion in a cohort of Danish men} \description{ Data from a survey of HIV-positivity of a cohort of Danish men followed by regular tests from 1983 to 1989. } \usage{ data(hivDK) } \format{ A data frame with 297 observations on the following 7 variables. \describe{ \item{\code{id}}{ID of the person} \item{\code{entry}}{Date of entry to the study. Date variable.} \item{\code{well}}{Date last seen seronegative. Date variable.} \item{\code{ill}}{Date first seen seroconverted. Date variable.} \item{\code{bth}}{Year of birth minus 1950.} \item{\code{pyr}}{Annual number of sexual partners.} \item{\code{us}}{Indicator of wheter the person has visited the USA.} } } \source{ Mads Melbye, Statens Seruminstitut. } \references{ Becker N.G. and Melbye M.: Use of a log-linear model to compute the empirical survival curve from interval-censored data, with application to data on tests for HIV-positivity, Australian Journal of Statistics, 33, 125--133, 1990. Melbye M., Biggar R.J., Ebbesen P., Sarngadharan M.G., Weiss S.H., Gallo R.C. and Blattner W.A.: Seroepidemiology of HTLV-III antibody in Danish homosexual men: prevalence, transmission and disease outcome. British Medical Journal, 289, 573--575, 1984. } \examples{ data(hivDK) str(hivDK) } \keyword{ datasets } Epi/man/bootLexis.Rd0000644000175100001440000000601513751040403014016 0ustar hornikusers\name{bootLexis} \alias{nid} \alias{nid.Lexis} \alias{bootLexis} \title{ Create a bootstrap sample of persons (as identified by \code{lex.id}) from a Lexis object } \description{ \code{lex.id} is the person identifier in a \code{\link{Lexis}} object. This is used to sample persons from a Lexis object. If a person is sampled, all records from this persons is transported to the bootstrap sample. } \usage{ nid( Lx, \dots ) \method{nid}{Lexis}( Lx, by=NULL, \dots ) bootLexis( Lx, size = NULL, by = NULL, replace=TRUE ) } \arguments{ \item{Lx}{A \code{Lexis} object.} \item{\dots}{Parameters passed on to other methods.} \item{size}{Numeric. How many persons should be sampled from the \code{Lexis} object. Defaults to the number of persons in the \code{Lx}, or, if \code{by} is given, to the number of persons in each level of \code{by}. If \code{by} is given, \code{size} can have length \code{length(unique(by))}, to indicate how many are sampled from each level of \code{by}.} \item{by}{Character. Name of a variable (converted to factor) in the \code{Lexis} object. Bootstrap sampling is done within each level of by. Calculation of the number of persons (\code{lex.id}) is done within each level of \code{by}, and a vector returned. } \item{replace}{Should persons be sampled by replacement? Default is \code{TRUE}. Setting \code{replace} to \code{FALSE} enables selecting a random subset of persons from the Lexis object.} } \value{ \code{bootLexis} returns a Lexis object of the same structure as the input, with \emph{persons} bootstrapped. The variable \code{lex.id} in the resulting \code{Lexis} object has values 1,2,... The original values of \code{lex.id} from \code{Lx} are stored in the variable \code{old.id}. \code{nid} counts the number of persons in a Lexis object, possibly by \code{by}. If \code{by} is given, a named vector is returned. } \author{Bendix Carstensen, \url{http://bendixcarstensen.com}.} \seealso{\code{\link{Relevel.Lexis}},\code{\link{subset.Lexis}}} \examples{ # A small bogus cohort xcoh <- data.frame( id = c("A", "B", "C"), birth = c("1952-07-14", "1954-04-01", "1987-06-10"), entry = c("1965-08-04", "1972-09-08", "1991-12-23"), exit = c("1997-06-27", "1995-05-23", "1998-07-24"), fail = c(1, 0, 1), sex = c("M","F","M") ) # Convert to calendar years for( i in 2:4 ) xcoh[,i] <- cal.yr(xcoh[,i]) xcoh Lcoh <- Lexis( entry = list( per=entry ), exit = list( per=exit, age=exit-birth ), exit.status = fail, data = xcoh ) Lx <- Lcoh[sample(1:3,10,replace=TRUE),] Lx$per <- Lx$per + runif(10,0,10) Lx$lex.id <- 1:10 Lx <- splitLexis( Lx, breaks=0:10*10, "age" ) Lx nid( Lx ) nid( Lx, by="sex" ) Lb <- bootLexis( Lx ) head( Lb ) nid( bootLexis( Lx, size=7 ) ) Li <- bootLexis( Lx, by="id" ) # superfluous summary( Lx ) summary( Li ) L2 <- bootLexis( Lx, by="sex", size=c(2,5) ) nid( L2, by="sex" ) summary( L2 ) } \keyword{manip} Epi/man/N.dk.Rd0000644000175100001440000000141513751040403012637 0ustar hornikusers\name{N.dk} \alias{N.dk} \docType{data} \title{Population size in Denmark} \description{ The population size at 1st January in ages 0-99. } \usage{data(N.dk)} \format{ A data frame with 7200 observations on the following 4 variables. \describe{ \item{\code{sex}}{Sex, 1:males, 2:females} \item{\code{A}}{Age. 0:0, 1:1, ..., 98:98, 99:99+} \item{\code{P}}{Year} \item{\code{N}}{Number of persons alive at 1st January year \code{P}} } } \source{ \url{http://www.statistikbanken.dk/statbank5a/SelectTable/omrade0.asp?SubjectCode=02&PLanguage=1&ShowNews=OFF} } \examples{ data(N.dk) str(N.dk) with(N.dk,addmargins(tapply(N,list(P,sex),sum),2)) with(subset(N.dk,P==max(P)),addmargins(tapply(N,list(A,sex),sum))) } \keyword{datasets} Epi/man/pc.lines.Rd0000644000175100001440000000323413751040403013561 0ustar hornikusers\name{pc.lines} \alias{pc.points} \alias{pc.lines} \alias{pc.matpoints} \alias{pc.matlines} \alias{pc.matshade} \alias{cp.points} \alias{cp.lines} \alias{cp.matpoints} \alias{cp.matlines} \alias{cp.matshade} \title{ Plot period and cohort effects in an APC-frame. } \description{ When an APC-frame has been produced by \code{\link{apc.frame}}, this function draws curves or points in the period/cohort part of the frame. } \usage{ pc.points( x, y, ... ) pc.lines( x, y, ... ) pc.matpoints( x, y, ... ) pc.matlines( x, y, ... ) pc.matshade( x, y, ... ) cp.points( x, y, ... ) cp.lines( x, y, ... ) cp.matpoints( x, y, ... ) cp.matlines( x, y, ... ) cp.matshade( x, y, ... ) } \arguments{ \item{x}{vector of \code{x}-coordinates.} \item{y}{vector or matrix of \code{y}-coordinates.} \item{...}{Further parameters to be transmitted to points, lines, matpoints, matlines or matshade used for plotting curves in the calendar time realm of a graph generated by \code{\link{apc.frame}}} } \details{Since the Age-part of the frame is referred to by its real coordinates plotting in the calendar time part requires translation and scaling to put things correctly there, that is done by the functions \code{pc.points} etc. The functions \code{cp.points} etc. are just synonyms for these, in recognition of the fact that you can never remember whether it is "pc" or "cp". } \value{ The functions return nothing. } \author{ Bendix Carstensen, Steno Diabetes Center Copenhagen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{apc.frame}}, \code{\link{apc.fit}}, \code{\link{plot.apc}}, \code{\link{lines.apc}} } \keyword{hplot} Epi/man/Lexis.lines.Rd0000644000175100001440000000447713751040403014255 0ustar hornikusers\name{Lexis.lines} \alias{Lexis.lines} \title{Draw life lines in a Lexis diagram.} \description{ Add life lines to a Lexis diagram. } \usage{ Lexis.lines( entry.date = NA, exit.date = NA, birth.date = NA, entry.age = NA, exit.age = NA, risk.time = NA, col.life = "black", lwd.life = 2, fail = NA, cex.fail = 1, pch.fail = c(NA, 16), col.fail = col.life, data = NULL ) } \arguments{ \item{entry.date, entry.age, exit.date, exit.age, risk.time, birth.date}{Numerical vectors defining lifelines to be plotted in the diagram. At least three must be given to produce lines. Not all subsets of three will suffice, the given subset has to define life lines. If insufficient data is given, no life lines are produced.} \item{col.life}{Colour of the life lines.} \item{lwd.life}{Width of the life lines.} \item{fail}{Logical of event status at exit for the persons whose life lines are plotted.} \item{cex.fail}{The size of the status marks at the end of life lines.} \item{pch.fail}{The status marks at the end of the life lines.} \item{col.fail}{Colour of the marks for censorings and failures respectively.} \item{data}{Data frame in which to interpret values.} } \value{ If sufficient information on lifelines is given, a data frame with one row per person and columns with entry ages and dates, birth date, risk time and status filled in. Side effect: Life lines are added to an existing Lexis diagram. Lexis.lines adds life lines to an existing plot. } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com} } \examples{ Lexis.diagram( entry.age = c(3,30,45), risk.time = c(25,5,14), birth.date = c(1970,1931,1925.7), fail = c(TRUE,TRUE,FALSE) ) Lexis.lines( entry.age = sample( 0:50, 100, replace=TRUE ), risk.time = sample( 5:40, 100, r=TRUE), birth.date = sample( 1910:1980, 100, r=TRUE ), fail = sample(0:1,100,r=TRUE), cex.fail = 0.5, lwd.life = 1 ) } \keyword{ hplot } \keyword{ dplot } \seealso{ \code{\link{Lexis.diagram}}, \code{\link{Life.lines}} } Epi/man/effx.Rd0000644000175100001440000000732014002243074012775 0ustar hornikusers\name{effx} \alias{effx} \title{Function to calculate effects} \description{ The function calculates the effects of an exposure on a response, possibly stratified by a stratifying variable, and/or controlled for one or more confounding variables. } \usage{ effx( response, type = "metric", fup = NULL, exposure, strata = NULL, control = NULL, weights = NULL, eff = NULL, alpha = 0.05, base = 1, digits = 3, data = NULL ) } \arguments{ \item{response}{The \code{response} variable - must be numeric or logical. If logical, \code{TRUE} is considered the outcome.} \item{type}{The type of response\code{type} - must be one of "metric", "binary", "failure", or "count"} \item{fup}{The \code{fup} variable contains the follow-up time for a failure response. This must be numeric.} \item{exposure}{The \code{exposure} variable can be numeric or a factor} \item{strata}{The \code{strata} stratifying variable - must be a factor} \item{control}{The \code{control} variable(s) (confounders) - these are passed as a list if there are more than one.} \item{weights}{Frequency weights for binary response only} \item{eff}{How should effects be measured. If \code{response} is binomial, the default is "OR" (odds-ratio) with "RR" (relative risk) as an option. If \code{response} is failure, the default is "RR" (rate-ratio) with "RD" (rate difference) as an option.} \item{base}{Baseline for the effects of a categorical exposure, either a number or a name of the level. Defaults to 1} \item{digits}{Number of significant digits for the effects, default 3} \item{alpha}{1 - confidence level} \item{data}{\code{data} refers to the data used to evaluate the function} } \details{The function is a wrapper for glm. Effects are calculated as differences in means for a metric response, odds ratios/relative risks for a binary response, and rate ratios/rate differences for a failure or count response. The k-1 effects for a categorical exposure with k levels are relative to a baseline which, by default, is the first level. The effect of a metric (quantitative) exposure is calculated per unit of exposure. The exposure variable can be numeric or a factor, but if it is an ordered factor the order will be ignored.} \value{ % ~Describe the value returned % If it is a LIST, use \item{comp1 }{Effects of exposure} \item{comp2 }{Tests of significance} % ... } \author{Michael Hills (*1934-Jun-07, +2021-Jan-07)} %\note{ ~~further notes~~ } %\seealso{ ~~objects to See Also as \code{\link{~~fun~~}}, ~~~ } \examples{ library(Epi) data(births) births$hyp <- factor(births$hyp,labels=c("normal","hyper")) births$sex <- factor(births$sex,labels=c("M","F")) # bweight is the birth weight of the baby in gms, and is a metric # response (the default) # effect of hypertension on birth weight effx(bweight,exposure=hyp,data=births) # effect of hypertension on birth weight stratified by sex effx(bweight,exposure=hyp,strata=sex,data=births) # effect of hypertension on birth weight controlled for sex effx(bweight,exposure=hyp,control=sex,data=births) print( options('na.action') ) # effect of gestation time on birth weight effx(bweight,exposure=gestwks,data=births) # effect of gestation time on birth weight stratified by sex effx(bweight,exposure=gestwks,strata=sex,data=births) # effect of gestation time on birth weight controlled for sex effx(bweight,exposure=gestwks,control=sex,data=births) # lowbw is a binary response coded 1 for low birth weight and 0 otherwise # effect of hypertension on low birth weight effx(lowbw,type="binary",exposure=hyp,data=births) effx(lowbw,type="binary",exposure=hyp,eff="RR",data=births) } \keyword{ models } \keyword{ regression } Epi/man/merge.Lexis.Rd0000644000175100001440000000244613751040403014234 0ustar hornikusers\name{merge.Lexis} \alias{merge.Lexis} \title{Merge a Lexis object with a data frame} \description{ Merge additional variables from a data frame into a Lexis object. } \usage{ \method{merge}{Lexis}(x, y, id, by, ...) } \arguments{ \item{x}{an object of class \code{Lexis}} \item{y}{a data frame} \item{id}{the name of the variable in \code{y} to use for matching against the variable \code{lex.id} in \code{x}. } \item{by}{if matching is not done by id, a vector of variable names common to both \code{x} and \code{y}} \item{...}{optional arguments to be passed to \code{merge.data.frame}} } \details{ A \code{Lexis} object can be considered as an augmented data frame in which some variables are time-dependent variables representing follow-up. The \code{Lexis} function produces a minimal object containing only these time-dependent variables. Additional variables may be added to a \code{Lexis} object using the \code{merge} method. } \value{ A \code{Lexis} object with additional columns taken from the merged data frame. } \author{Martyn Plummer} \note{ The variable given as the \code{by.y} argument must not contain any duplicate values in the data frame \code{y}. } \seealso{\code{\link{merge.data.frame}}, \code{\link{subset.Lexis}}} \keyword{array} \keyword{manip} Epi/man/poisreg.Rd0000644000175100001440000000655413751040403013526 0ustar hornikusers\name{poisreg} \alias{poisreg} \title{Family Object for Poisson Regression} \usage{ poisreg(link = "log") } \arguments{ \item{link}{a specification for the model link function. The \code{poisreg} family accepts the links \code{identity}, \code{log} and \code{inverse}. } } \description{ The \code{poisreg} family allows Poisson regression models to be fitted using the \code{glm} function. In a Poisson regression model, we assume that the data arise from a Poisson process. We observe D disease events in follow up time Y and wish to estimate the incidence rate, which is assumed to be constant during the follow-up period for any individual. The incidence rate varies between individuals according to the predictor variables and the link function in the model specification. When using the \code{poisreg} family in the \code{glm} function, the response should be specified as a two-column matrix with the first column giving the number of events (D) and the second column giving the observation time (Y). This is similar to the \code{binomial} family for which a two-column outcome can be used representing the number of successes and the number of failures. } \note{ When using the log link, Poisson regression can also be carried out using the \code{poisson} family by including the log follow-up time \code{log(Y)} as an offset. However this approach does not generalize to other link functions. The \code{poisreg} family allows more general link functions including additive risk models with \code{poisreg(link = "identity")}. } \value{ An object of class \code{"family"}. See \code{\link[stats]{family}} for details. The family name, represented by the element \code{"family"} in the returned object, is \code{"poisson"} and not \code{"poisreg"}. This is necessary to prevent the \code{summary.glm} function from estimating an overdispersion parameter (which should be fixed at 1) and therefore giving incorrect standard errors for the estimates. } \examples{ ## Estimate incidence rate of diabetes in Denmark (1996-2015) by ## age and sex data(DMepi) DMepi$agegrp <- cut(DMepi$A, seq(from=0, to=100, by=5)) inc.diab <- glm(cbind(X, Y.nD) ~ -1 + agegrp + sex, family=poisreg, data=DMepi) ## The coefficients for agegrp are log incidence rates for men in each ## age group. The coefficient for sex is the log of the female:male ## incidence rate ratio. summary(inc.diab) ## Smooth function with non-constant M/F RR: requireNamespace("mgcv") library( mgcv ) gam.diab <- gam( cbind(X, Y.nD) ~ s(A,by=sex) + sex, family=poisreg, data=DMepi) ## There is no need/use for Y.nD in prediction data frames: nM <- data.frame( A=20:90, sex="M" ) nF <- data.frame( A=20:90, sex="F" ) ## Rates are returned in units of (1 year)^-1, so we must scale the ## rates by hand: matshade( nM$A, cbind( ci.pred(gam.diab, nM )*1000, ci.pred(gam.diab, nF )*1000, ci.exp( gam.diab,list(nM,nF)) ), plot=TRUE, col=c("blue","red","black"), log="y", xlab="Age", ylab="DM incidence rates per 1000 / M vs. F RR" ) abline(h=1) } \seealso{ \code{\link[stats]{glm}}, \code{\link[stats]{family}}. } \keyword{models} Epi/man/cutLexis.Rd0000644000175100001440000001776513763207003013670 0ustar hornikusers\name{cutLexis} \alias{cutLexis} \alias{countLexis} \title{ Cut follow-up at a specified date for each person. } \description{ Follow-up intervals in a Lexis object are divided into two sub-intervals: one before and one after an intermediate event. The intermediate event may denote a change of state, in which case the entry and exit status variables in the split Lexis object are modified. } \usage{ cutLexis( data, cut, timescale = 1, new.state = nlevels(data$lex.Cst)+1, new.scale = FALSE, split.states = FALSE, progressive = FALSE, precursor.states = transient(data), count = FALSE ) countLexis( data, cut, timescale = 1 ) } \arguments{ \item{data}{A \code{Lexis} object.} \item{cut}{A numeric vector with the times of the intermediate event. If a time is missing (\code{NA}) then the event is assumed to occur at time \code{Inf}. \code{cut} can also be a dataframe, see details.} \item{timescale}{The timescale that \code{cut} refers to. Numeric or character.} \item{new.state}{The state to which a transition occur at time \code{cut}. It may be a single value, which is then applied to all rows of \code{data}, or a vector with a separate value for each row} \item{new.scale}{Name of the timescale defined as "time since entry to new.state". If \code{TRUE} a name for the new scale is constructed. See details.} \item{split.states}{Should states that are not precursor states be split according to whether the intermediate event has occurred.} \item{progressive}{a logical flag that determines the changes to exit status. See details.} \item{precursor.states}{an optional vector of states to be considered as "less severe" than \code{new.state}. See Details below} \item{count}{logical indicating whether the \code{countLexis} options should be used. Specifying \code{count=TRUE} amounts to calling \code{countLexis}, in which case the arguments \code{new.state}, \code{progressive} and \code{precursor.states} will be ignored. } } \value{ A \code{Lexis} object, for which each follow-up interval containing the cutpoint is split in two: one before and one after the cutpoint. Any record representing follow up after the cutpoint has its value of \code{lex.Cst} updated to the new state. An extra time-scale is added; the time since the event at \code{cut}. This time scake will be\code{NA} for any follow-up prior to the intermediate event. The function \code{tsNA20} will replace all missing values in timescales with 0. This is commonly meeded when timescales defined as time since entry into an intermediate state are used in modeling. But you do not want to do that permanently in the cut data frame. } \note{ The \code{cutLexis} function superficially resembles the \code{splitLexis} function. However, the \code{splitLexis} function splits on a vector of common cut-points for all rows of the Lexis object, whereas the \code{cutLexis} function splits on a single time point, which may be distinct for each row, modifies the status variables, adds a new timescale and updates the attribute "time.since". This attribute is a character vector of the same length as the "time.scales" attribute, whose value is '""' if the corresponding timescale is defined for any piece of follow-up, and if the corresponding time scale is defined by say \code{cutLexis(obj,new.state="A",new.scale=TRUE)}, it has the value "A". } \details{ The \code{cutLexis} function allows a number of different ways of specifying the cutpoints and of modifying the status variable. If the \code{cut} argument is a dataframe it must have columns \code{lex.id}, \code{cut} and \code{new.state}. The values of \code{lex.id} must be unique. In this case it is assumed that each row represents a cutpoint (on the timescale indicated in the argument \code{timescale}). This cutpoint will be applied to all records in \code{data} with the corresponding \code{lex.id}. This makes it possible to apply \code{cutLexis} to a split \code{Lexis} object. If a \code{new.state} argument is supplied, the status variable is only modified at the time of the cut point. However, it is often useful to modify the status variable after the cutpoint when an important event occurs. There are three distinct ways of doing this. If the \code{progressive=TRUE} argument is given, then a "progressive" model is assumed, in which the status can either remain the same or increase during follow-up, but never decrease. This assumes that the state variables \code{lex.Cst} and \code{lex.Xst} are either numeric or ordered factors. In this case, if \code{new.state=X}, then any exit status with a value less than \code{X} is replaced with \code{X}. The Lexis object must already be progressive, so that there are no rows for which the exit status is less than the entry status. If \code{lex.Cst} and \code{lex.Xst} are factors they must be ordered factors if \code{progressive=TRUE} is given. As an alternative to the \code{progressive} argument, an explicit vector of precursor states, that are considered less severe than the new state, may be given. If \code{new.state=X} and \code{precursor.states=c(Y,Z)} then any exit status of \code{Y} or \code{Z} in the second interval is replaced with \code{X} and all other values for the exit status are retained. The \code{countLexis} function is a variant of \code{cutLexis} when the cutpoint marks a recurrent event, and the status variable is used to count the number of events that have occurred. Times given in \code{cut} represent times of new events. Splitting with \code{countLexis} increases the status variable by 1. If the current status is \code{X} and the exit status is \code{Y} before cutting, then after cutting the entry status is \code{X}, \code{X+1} for the first and second intervals, respectively, and the exit status is \code{X+1}, \code{Y+1} respectively. Moreover the values of the status is increased by 1 for all intervals for all intervals after the cut for the person in question. Hence, a call to \code{countLexis} is needed for as many times as the person with most events. But also it is immaterial in what order the cutpoints are entered. } \author{Bendix Carstensen, Steno Diabetes Center, \email{b@bxc.dk}, Martyn Plummer, \email{martyn.plummer@r-project.org} } \seealso{ \code{\link{mcutLexis}}, \code{\link{rcutLexis}}, \code{\link{addCov.Lexis}}, \code{\link{splitLexis}}, \code{\link{Lexis}}, \code{\link{summary.Lexis}}, \code{\link{timeSince}}, \code{\link{boxes.Lexis}} } \examples{ # A small artificial example xx <- Lexis( entry=list(age=c(17,24,33,29),per=c(1920,1933,1930,1929)), duration=c(23,57,12,15), exit.status=c(1,2,1,2) ) xx cut <- c(33,47,29,50) cutLexis(xx, cut, new.state=3, precursor=1) cutLexis(xx, cut, new.state=3, precursor=2) cutLexis(xx, cut, new.state=3, precursor=1:2) # The same as the last example cutLexis(xx, cut, new.state=3) # The same example with a factor status variable yy <- Lexis(entry = list(age=c(17,24,33,29),per=c(1920,1933,1930,1929)), duration = c(23,57,12,15), entry.status = factor(rep("alpha",4), levels=c("alpha","beta","gamma")), exit.status = factor(c("alpha","beta","alpha","beta"), levels=c("alpha","beta","gamma"))) cutLexis(yy,c(33,47,29,50),precursor="alpha",new.state="gamma") cutLexis(yy,c(33,47,29,50),precursor=c("alpha","beta"),new.state="aleph") ## Using a dataframe as cut argument rl <- data.frame( lex.id=1:3, cut=c(19,53,26), timescale="age", new.state=3 ) rl cutLexis( xx, rl ) cutLexis( xx, rl, precursor=1 ) cutLexis( xx, rl, precursor=0:2 ) ## It is immaterial in what order splitting and cutting is done xs <- splitLexis( xx, breaks=seq(0,100,10), time.scale="age" ) xs xsC <- cutLexis(xs, rl, precursor=0 ) xC <- cutLexis( xx, rl, pre=0 ) xC xCs <- splitLexis( xC, breaks=seq(0,100,10), time.scale="age" ) xCs str(xCs) } \keyword{survival} Epi/man/blcaIT.Rd0000644000175100001440000000127613751040403013210 0ustar hornikusers\name{blcaIT} \alias{blcaIT} \docType{data} \title{Bladder cancer mortality in Italian males} \description{ Number of deaths from bladder cancer and person-years in the Italian male population 1955--1979, in ages 25--79. } % \usage{data(blcaIT)} \format{ A data frame with 55 observations on the following 4 variables: \tabular{rl}{ \code{age}: \tab Age at death. Left endpoint of age class \cr \code{period}: \tab Period of death. Left endpoint of period \cr \code{D}: \tab Number of deaths \cr \code{Y}: \tab Number of person-years. } } % \source{ % Reference to a source... % } % \references{ % Reference to a publication... % } \examples{ data(blcaIT) } \keyword{datasets} Epi/man/S.typh.Rd0000644000175100001440000000421613751040403013234 0ustar hornikusers\name{S.typh} \alias{S.typh} \docType{data} \title{Salmonella Typhimurium outbreak 1996 in Denmark.} \description{ Matched case-control study of food poisoning. } \format{ A data frame with 136 observations on the following 15 variables: \tabular{rl}{ \code{id}: \tab Person identification \cr \code{set}: \tab Matched set indicator \cr \code{case}: \tab Case-control status (1:case, 0:control \cr \code{age}: \tab Age of individual \cr \code{sex}: \tab Sex of individual (1:male, 2:female) \cr \code{abroad}: \tab Within the last two weeks visited abroad (1:yes, 0:no) \cr \code{beef}: \tab Within the last two weeks eaten beef \cr \code{pork}: \tab Within the last two weeks eaten pork \cr \code{veal}: \tab Within the last two weeks eaten veal \cr \code{poultry}: \tab Within the last two weeks eaten poultry \cr \code{liverp}: \tab Within the last two weeks eaten liverpaste \cr \code{veg}: \tab Within the last two weeks eaten vegetables \cr \code{fruit}: \tab Within the last two weeks eaten fruit \cr \code{egg}: \tab Within the last two weeks eaten eggs \cr \code{plant7}: \tab Within the last two weeks eaten meat from plant no. 7 \cr } } \details{ In the fall of 1996 an unusually large number of Salmonella Typhimurium cases were recorded in Fyn county in Denmark. The Danish Zoonosis Centre set up a matched case-control study to find the sources. Cases and two age-, sex- and residency-matched controls were telephone interviewed about their food intake during the last two weeks. The participants were asked at which retailer(s) they had purchased meat. Retailers were independently of this linked to meat processing plants, and thus participants were linked to meat processing plants. This way persons could be linked to (amongst other) plant no 7.} \source{ Tine Hald. } \references{ Molbak K and Hald T: Salmonella Typhimurium outbreak in late summer 1996. A Case-control study. (In Danish: Salmonella typhimurium udbrud paa Fyn sensommeren 1996. En case-kontrol undersogelse.) Ugeskrift for Laeger., 159(36):5372-7, 1997. } \examples{ data(S.typh) } \keyword{datasets} Epi/man/nice.Rd0000644000175100001440000000141413751040403012762 0ustar hornikusers\name{nice} \alias{nice} \title{Nice breakpoints} \description{The function calls \code{\link{pretty}} for linear scale. For a log-scale nice are computed using a set of specified number in a decade. } \usage{ nice(x, log = F, lpos = c(1, 2, 5), ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{Numerical vector to} \item{log}{Logical. Is the scale logartimic?} \item{lpos}{Numeric. Numbers between 1 and 10 giving the desired breakpoints in this interval.} \item{\dots}{Arguments passed on to \code{pretty} if \code{log}=FALSE} } \value{A vector of breakpoints.} \author{Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com}} \seealso{pretty} \examples{ nice( exp( rnorm( 100 ) ), log=TRUE ) } \keyword{manip} Epi/man/Lexis2msm.Rd0000644000175100001440000000246714235510361013743 0ustar hornikusers\name{Lexis2msm} \alias{Lexis2msm} \title{Convert a Lexis obejct to a data set suitable for input to the \code{msm:msm} function.} \description{The number of records in the resulting dataset will have a number of records that is normally \code{nrec(Lx) + \link{nid}(Lx)}, that is one extra record for each person. If there are 'holes' in persons' follow-up, each hole will also generate an extra record in the result. } \usage{ Lexis2msm(Lx, state = "state", verbose = FALSE) } \arguments{ \item{Lx}{ A \code{\link{Lexis}} object. } \item{state}{ Character; the name of the state variable in the result. } \item{verbose}{ If true, you will be reminded what the function did. } } \value{ A data frame of class \code{msmLexis} with the timescales preserved and \code{lex.id} preserved but with other \code{lex.} variables removed. Has more records than the original \code{Lexis} object } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{Lexis}} } \examples{ example(mcutLexis) # we now have the Lexis object L3: summary(L3) # data frame for use with msm msm3 <- Lexis2msm(L3) # see the difference subset( L3, lex.id \%in\% 1:3) subset(msm3, lex.id \%in\% 1:3) timeScales(msm3) } \keyword{survival} \keyword{manip} Epi/man/apc.frame.Rd0000644000175100001440000001152213751040403013701 0ustar hornikusers\name{apc.frame} \alias{apc.frame} \title{ Produce an empty frame for display of parameter-estimates from Age-Period-Cohort-models. } \description{ A plot is generated where both the age-scale and the cohort/period scale is on the x-axis. The left vertical axis will be a logarithmic rate scale referring to age-effects and the right a logarithmic rate-ratio scale of the same relative extent as the left referring to the cohort and period effects (rate ratios). Only an empty plot frame is generated. Curves or points must be added with \code{points}, \code{lines} or the special utility function \code{\link{apc.lines}}. } \usage{ apc.frame( a.lab, cp.lab, r.lab, rr.lab = r.lab / rr.ref, rr.ref = r.lab[length(r.lab)/2], a.tic = a.lab, cp.tic = cp.lab, r.tic = r.lab, rr.tic = r.tic / rr.ref, tic.fac = 1.3, a.txt = "Age", cp.txt = "Calendar time", r.txt = "Rate per 100,000 person-years", rr.txt = "Rate ratio", ref.line = TRUE, gap = diff(range(c(a.lab, a.tic)))/10, col.grid = gray(0.85), sides = c(1,2,4) ) } \arguments{ \item{a.lab}{Numerical vector of labels for the age-axis.} \item{cp.lab}{Numerical vector of labels for the cohort-period axis.} \item{r.lab}{Numerical vector of labels for the rate-axis (left vertical)} \item{rr.lab}{Numerical vector of labels for the RR-axis (right vertical)} \item{rr.ref}{At what level of the rate scale is the RR=1 to be.} \item{a.tic}{Location of additional tick marks on the age-scale} \item{cp.tic}{Location of additional tick marks on the cohort-period-scale} \item{r.tic}{Location of additional tick marks on the rate-scale} \item{rr.tic}{Location of additional tick marks on the RR-axis.} \item{tic.fac}{Factor with which to diminish intermediate tick marks} \item{a.txt}{Text for the age-axis (left part of horizontal axis).} \item{cp.txt}{Text for the cohort/period axis (right part of horizontal axis).} \item{r.txt}{Text for the rate axis (left vertical axis).} \item{rr.txt}{Text for the rate-ratio axis (right vertical axis)} \item{ref.line}{Logical. Should a reference line at RR=1 be drawn at the calendar time part of the plot?} \item{gap}{Gap between the age-scale and the cohort-period scale} \item{col.grid}{Colour of the grid put in the plot.} \item{sides}{Numerical vector indicating on which sides axes should be drawn and annotated. This option is aimed for multi-panel displays where axes only are put on the outer plots.} } \details{ The function produces an empty plot frame for display of results from an age-period-cohort model, with age-specific rates in the left side of the frame and cohort and period rate-ratio parameters in the right side of the frame. There is a gap of \code{gap} between the age-axis and the calendar time axis, vertical grid lines at \code{c(a.lab,a.tic,cp.lab,cp.tic)}, and horizontal grid lines at \code{c(r.lab,r.tic)}. The function returns a numerical vector of length 2, with names \code{c("cp.offset","RR.fac")}. The y-axis for the plot will be a rate scale for the age-effects, and the x-axis will be the age-scale. The cohort and period effects are plotted by subtracting the first element (named \code{"cp.offset"}) of the returned result form the cohort/period, and multiplying the rate-ratios by the second element of the returned result (named \code{"RR.fac"}). } \value{ A numerical vector of length two, with names \code{c("cp.offset","RR.fac")}. The first is the offset for the cohort period-axis, the second the multiplication factor for the rate-ratio scale. Side-effect: A plot with axes and grid lines but no points or curves. Moreover, the option \code{apc.frame.par} is given the value \code{c("cp.offset","RR.fac")}, which is recognized by \code{\link{apc.plot}} and \code{\link{apc.lines}}. } \references{ B. Carstensen: Age-Period-Cohort models for the Lexis diagram. Statistics in Medicine, 26: 3018-3045, 2007. } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com} } \examples{ par( mar=c(4,4,1,4) ) res <- apc.frame( a.lab=seq(30,90,20), cp.lab=seq(1880,2000,30), r.lab=c(1,2,5,10,20,50), a.tic=seq(30,90,10), cp.tic=seq(1880,2000,10), r.tic=c(1:10,1:5*10), gap=27 ) res # What are the axes actually? par(c("usr","xlog","ylog")) # How to plot in the age-part: a point at (50,10) points( 50, 10, pch=16, cex=2, col="blue" ) # How to plot in the cohort-period-part: a point at (1960,0.3) points( 1960-res[1], 0.3*res[2], pch=16, cex=2, col="red" ) # or referring to the period-cohort part of the plot pc.points( 1960, 0.3, pch=16, cex=1, col="green" ) } \seealso{ \code{\link{apc.lines},\link{apc.fit}} } \keyword{hplot} Epi/man/rateplot.Rd0000644000175100001440000001723013751040403013701 0ustar hornikusers\name{rateplot} \alias{rateplot} \alias{Aplot} \alias{Pplot} \alias{Cplot} \title{ Functions to plot rates from a table classified by age and calendar time (period) } \description{ Produces plots of rates versus age, connected within period or cohort (\code{Aplot}), rates versus period connected within age-groups (\code{Pplot}) and rates and rates versus date of birth cohort (\code{Cplot}). \code{rateplot} is a wrapper for these, allowing to produce the four classical displays with a single call. } \usage{ rateplot( rates, which = c("ap","ac","pa","ca"), age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, a.grid = grid, p.grid = grid, c.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), a.lim = range( age, na.rm=TRUE ) + c(0,diff( range( age ) )/30), p.lim = range( per, na.rm=TRUE ) + c(0,diff( range( age ) )/30), c.lim = NULL, ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), a.lab = "Age at diagnosis", p.lab = "Date of diagnosis", c.lab = "Date of birth", ylab = "Rates", type = "l", lwd = 2, lty = 1, log.ax = "y", las = 1, ann = FALSE, a.ann = ann, p.ann = ann, c.ann = ann, xannx = 1/20, cex.ann = 0.8, a.thin = seq( 1, length( age ), 2 ), p.thin = seq( 1, length( per ), 2 ), c.thin = seq( 2, length( age ) + length( per ) - 1, 2 ), col = par( "fg" ), a.col = col, p.col = col, c.col = col, ... ) Aplot( rates, age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, a.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), a.lim = range( age, na.rm=TRUE ), ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), a.lab = names( dimnames( rates ) )[1], ylab = deparse( substitute( rates ) ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, c.col = col, p.col = col, c.ann = FALSE, p.ann = FALSE, xannx = 1/20, cex.ann = 0.8, c.thin = seq( 2, length( age ) + length( per ) - 1, 2 ), p.thin = seq( 1, length( per ), 2 ), p.lines = TRUE, c.lines = !p.lines, ... ) Pplot( rates, age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, p.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), p.lim = range( per, na.rm=TRUE ) + c(0,diff(range(per))/30), ylim = range( rates[rates>0], na.rm=TRUE ), p.lab = names( dimnames( rates ) )[2], ylab = deparse( substitute( rates ) ), at = NULL, labels = paste( at ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, ann = FALSE, cex.ann = 0.8, xannx = 1/20, a.thin = seq( 1, length( age ), 2 ), ... ) Cplot( rates, age = as.numeric( rownames( rates ) ), per = as.numeric( colnames( rates ) ), grid = FALSE, c.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), c.lim = NULL, ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), c.lab = names( dimnames( rates ) )[2], ylab = deparse( substitute( rates ) ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, xannx = 1/20, ann = FALSE, cex.ann = 0.8, a.thin = seq( 1, length( age ), 2 ), ... ) } \arguments{ \item{rates}{A two-dimensional table (or array) with rates to be plotted. It is assumed that the first dimension is age and the second is period.} \item{which}{A character vector with elements from \code{c("ap","ac","apc","pa","ca")}, indication which plots should be produced. One plot per element is produced. The first letter indicates the x-axis of the plot, the remaining which groups should be connected, i.e. \code{"pa"} will plot rates versus period and connect age-classes, and \code{"apc"} will plot rates versus age, and connect both periods and cohorts.} \item{age}{Numerical vector giving the means of the age-classes. Defaults to the rownames of \code{rates} as numeric.} \item{per}{Numerical vector giving the means of the periods. Defaults to the columnnames of \code{rates} as numeric.} \item{grid}{Logical indicating whether a background grid should be drawn.} \item{a.grid}{Logical indicating whether a background grid on the age-axis should be drawn. If numerical it indicates the age-coordinates of the grid.} \item{p.grid}{do. for the period.} \item{c.grid}{do. for the cohort.} \item{ygrid}{do. for the rate-dimension.} \item{col.grid}{The colour of the grid.} \item{a.lim}{Range for the age-axis.} \item{p.lim}{Range for the period-axis.} \item{c.lim}{Range for the cohort-axis.} \item{ylim}{Range for the y-axis (rates).} \item{at}{Position of labels on the y-axis (rates).} \item{labels}{Labels to put on the y-axis (rates).} \item{a.lab}{Text on the age-axis. Defaults to "Age".} \item{p.lab}{Text on the period-axis. Defaults to "Date of diagnosis".} \item{c.lab}{Text on the cohort-axis. Defaults to "Date of birth".} \item{ylab}{Text on the rate-axis. Defaults to the name of the rate-table.} \item{type}{How should the curves be plotted. Defaults to \code{"l"}.} \item{lwd}{Width of the lines. Defaults to 2.} \item{lty}{Which type of lines should be used. Defaults to 1, a solid line.} \item{log.ax}{Character with letters from \code{"apcyr"}, indicating which axes should be logarithmic. \code{"y"} and \code{"r"} both refer to the rate scale. Defaults to \code{"y"}.} \item{las}{see \code{par}.} \item{ann}{Should the curves be annotated?} \item{a.ann}{Logical indicating whether age-curves should be annotated.} \item{p.ann}{do. for period-curves.} \item{c.ann}{do. for cohort-curves.} \item{xannx}{The fraction that the x-axis is expanded when curves are annotated.} \item{cex.ann}{Expansion factor for characters annotating curves.} \item{a.thin}{Vector of integers indicating which of the age-classes should be labelled.} \item{p.thin}{do. for the periods.} \item{c.thin}{do. for the cohorts.} \item{col}{Colours for the curves.} \item{a.col}{Colours for the age-curves.} \item{p.col}{do. for the period-curves.} \item{c.col}{do. for the cohort-curves.} \item{p.lines}{Should rates from the same period be connected?} \item{c.lines}{Should rates from the same cohort be connected?} \item{...}{Additional arguments pssed on to \code{matlines} when plotting the curves.} } \details{ Zero values of the rates are ignored. They are neiter in the plot nor in the calculation of the axis ranges. } \value{ \code{NULL}. The function is used for its side-effect, the plot. } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{apc.frame}} } \examples{ data( blcaIT ) attach(blcaIT) # Table of rates: bl.rate <- tapply( D, list(age,period), sum ) / tapply( Y, list(age,period), sum ) bl.rate # The four classical plots: par( mfrow=c(2,2) ) rateplot( bl.rate*10^6 ) # The labels on the vertical axis could be nicer: rateplot( bl.rate*10^6, at=10^(-1:3), labels=c(0.1,1,10,100,1000) ) # More bells an whistles par( mfrow=c(1,3), mar=c(3,3,1,1), oma=c(0,3,0,0), mgp=c(3,1,0)/1.6 ) rateplot( bl.rate*10^6, ylab="", ann=TRUE, which=c("AC","PA","CA"), at=10^(-1:3), labels=c(0.1,1,10,100,1000), col=topo.colors(11), cex.ann=1.2 ) } \keyword{hplot} Epi/man/apc.fit.Rd0000644000175100001440000003020413751040403013367 0ustar hornikusers\name{apc.fit} \alias{apc.fit} \title{ Fit an Age-Period-Cohort model to tabular data. } \description{ Fits the classical five models to tabulated rate data (cases, person-years) classified by two of age, period, cohort: Age, Age-drift, Age-Period, Age-Cohort and Age-Period-Cohort. There are no assumptions about the age, period or cohort classes being of the same length, or that tabulation should be only by two of the variables. Only requires that mean age and period for each tabulation unit is given. } \usage{ apc.fit( data, A, P, D, Y, ref.c, ref.p, dist = c("poisson","binomial"), model = c("ns","bs","ls","factor"), dr.extr = "Y", parm = c("ACP","APC","AdCP","AdPC","Ad-P-C","Ad-C-P","AC-P","AP-C"), npar = c( A=5, P=5, C=5 ), scale = 1, alpha = 0.05, print.AOV = TRUE ) } \arguments{ \item{data}{Data frame with (at least) variables, \code{A} (age), \code{P} (period), \code{D} (cases, deaths) and \code{Y} (person-years). Cohort (date of birth) is computed as \code{P-A}. If this argument is given the arguments \code{A}, \code{P}, \code{D} and \code{Y} are ignored.} \item{A}{Age; numerical vector with mean age at diagnosis for each unit.} \item{P}{Period; numerical vector with mean date of diagnosis for each unit.} \item{D}{Cases, deaths; numerical vector.} \item{Y}{Person-years; numerical vector. Also used as denominator for binomial data, see the \code{dist} argument.} \item{ref.c}{Reference cohort, numerical. Defaults to median date of birth among cases. If used with \code{parm="AdCP"} or \code{parm="AdPC"}, the residual cohort effects will be 1 at \code{ref.c}} \item{ref.p}{Reference period, numerical. Defaults to median date of diagnosis among cases.} \item{dist}{Distribution (or more precisely: Likelihood) used for modeling. if a binomial model us used, \code{Y} is assumed to be the denominator; \code{"binomial"} gives a binomial model with logit link. The Age-effects returned are converted to the probability scale, Period and Cohort effects are still odds-ratios.} \item{model}{Type of model (covariate effects) fitted: \itemize{ \item \code{ns} fits a model with natural splines for each of the terms, with \code{npar} parameters for the terms. \item \code{bs} fits a model with B-splines for each of the terms, with \code{npar} parameters for the terms. \item \code{ls} fits a model with linear splines. \item \code{factor} fits a factor model with one parameter per value of \code{A}, \code{P} and \code{P-A}. \code{npar} is ignored in this case. } } \item{dr.extr}{Character or numeric. How the drift parameter should be extracted from the age-period-cohort model. Specifies the inner product used for definition of orthogonality of the period / cohort effects to the linear effects --- in terms of a diagonal matrix. \code{"Y"} (default) uses the no. person-time, \code{Y}, corresponding to the observed information about the square root of the rate. \code{"R"} or \code{"L"} uses \code{Y*Y/D} corresponding to the observed information about the rate (usually termed "lambda", hence the "\code{L}"). \code{"D"} or \code{"T"} uses the no. events as the weight in the inner product, corresponding to the information about the log-rate (usually termed "theta", hence the "\code{T}"). If given \code{"n"} (naive) (well, in fact any other character value) will induce the use of the standard inner product putting equal weight on all units in the dataset. If \code{dr.extr} is a numeric vector this is used as the diagonal of the matrix inducing the inner product. If \code{dr.extr} is a numeric scalar, \code{D + dr.extr*Y} is used as the diagonal of the matrix inducing the inner product. This family of inner products are the only ones that meet the split-observation invariance criterion. The setting of this parameter has no effect on the fit of the model, it only influences the parametrization returned in the \code{Age}, \code{Per} and \code{Coh} elements of the resulting list. } \item{parm}{Character. Indicates the parametrization of the effects. The first four refer to the ML-fit of the Age-Period-Cohort model, the last four give Age-effects from a smaller model and residuals relative to this. If one of the latter is chosen, the argument \code{dr.extr} is ignored. Possible values for \code{parm} are: \itemize{ \item \code{"ACP"}: ML-estimates. Age-effects as rates for the reference cohort. Cohort effects as RR relative to the reference cohort. Period effects constrained to be 0 on average with 0 slope. \item \code{"APC"}: ML-estimates. Age-effects as rates for the reference period. Period effects as RR relative to the reference period. Cohort effects constrained to be 0 on average with 0 slope. \item \code{"AdCP"}: ML-estimates. Age-effects as rates for the reference cohort. Cohort and period effects constrained to be 0 on average with 0 slope. In this case returned effects do not multiply to the fitted rates, the drift is missing and needs to be included to produce the fitted values. \item \code{"AdPC"}: ML-estimates. Age-effects as rates for the reference period. Cohort and period effects constrained to be 0 on average with 0 slope. In this case returned effects do not multiply to the fitted rates, the drift is missing and needs to be included to produce the fitted values. \item \code{"Ad-C-P"}: Age effects are rates for the reference cohort in the Age-drift model (cohort drift). Cohort effects are from the model with cohort alone, using log(fitted values) from the Age-drift model as offset. Period effects are from the model with period alone using log(fitted values) from the cohort model as offset. \item \code{"Ad-P-C"}: Age effects are rates for the reference period in the Age-drift model (period drift). Period effects are from the model with period alone, using log(fitted values) from the Age-drift model as offset. Cohort effects are from the model with cohort alone using log(fitted values) from the period model as offset. \item \code{"AC-P"}: Age effects are rates for the reference cohort in the Age-Cohort model, cohort effects are RR relative to the reference cohort. Period effects are from the model with period alone, using log(fitted values) from the Age-Cohort model as offset. \item \code{"AP-C"}: Age effects are rates for the reference period in the Age-Period model, period effects are RR relative to the reference period. Cohort effects are from the model with cohort alone, using log(fitted values) from the Age-Period model as offset. } } \item{npar}{The number of parameters/knots to use for each of the terms in the model. If it is vector of length 3, the numbers are taken as the no. of knots for Age, Period and Cohort, respectively. Unless it has a names attribute with values "A", "P" and "C" in which case these will be used. The knots chosen are the quantiles \code{(1:nk-0.5)/nk} of the events (i.e. of \code{rep(A,D)} and similarly for \code{P} and \code{C}). \code{npar} may also be a named list of three numerical vectors with names "A", "P" and "C", in which case these taken as the knots for the age, period and cohort effect, the smallest and largest element in each vector are used as the boundary knots.} \item{alpha}{The significance level. Estimates are given with (1-\code{alpha}) confidence limits.} \item{scale}{numeric(1), factor multiplied to the rate estimates before output.} \item{print.AOV}{Should the analysis of deviance table for the models be printed?} } \value{ An object of class "apc" (recognized by \code{\link{apc.plot}} and \code{\link{apc.lines}}) --- a list with components: \item{Type}{Text describing the model and parametrization returned.} \item{Model}{The model object(s) on which the parametrization is based.} \item{Age}{Matrix with 4 columns: \code{A.pt} with the ages (equals \code{unique(A)}) and three columns giving the estimated rates with c.i.s.} \item{Per}{Matrix with 4 columns: \code{P.pt} with the dates of diagnosis (equals \code{unique(P)}) and three columns giving the estimated RRs with c.i.s.} \item{Coh}{Matrix with 4 columns: \code{C.pt} with the dates of birth (equals \code{unique(P-A)}) and three columns giving the estimated RRs with c.i.s.} \item{Drift}{A 3 column matrix with drift-estimates and c.i.s: The first row is the ML-estimate of the drift (as defined by \code{drift}), the second row is the estimate from the Age-drift model. The first row name indicates which type of inner product were used for projections. For the sequential parametrizations, only the latter is given.} \item{Ref}{Numerical vector of length 2 with reference period and cohort. If ref.p or ref.c was not supplied the corresponding element is NA.} \item{Anova}{Analysis of deviance table comparing the five classical models.} \item{Knots}{If \code{model} is one of \code{"ns"} or \code{"bs"}, a list with three components: \code{Age}, \code{Per}, \code{Coh}, each one a vector of knots. The max and the min of the vectors are the boundary knots.} } \details{ Each record in the input data frame represents a subset of a Lexis diagram. The subsets need not be of equal length on the age and period axes, in fact there are no restrictions on the shape of these; they could be Lexis triangles for example. The requirement is that \code{A} and \code{P} are coded with the mean age and calendar time of observation in the subset. This is essential since \code{A} and \code{P} are used as quantitative variables in the models. This approach is different from to the vast majority of the uses of APC-models in the literature where a factor model is used for age, period and cohort effects. The latter can be obtained by using \code{model="factor"}. Note however that the cohort factor is defined from \code{A} and \code{P}, so that it is not possible in this framework to replicate the Boyle-Robertson fallacy. } \references{ The considerations behind the parametrizations used in this function are given in detail in: B. Carstensen: Age-Period-Cohort models for the Lexis diagram. Statistics in Medicine, 10; 26(15):3018-45, 2007. Various links to course material etc. is available through \url{http://bendixcarstensen.com/APC/} } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{apc.frame}}, \code{\link{apc.lines}}, \code{\link{apc.plot}}, \code{\link{LCa.fit}}, \code{\link{apc.LCa}}. } \examples{ library( Epi ) data(lungDK) # Taylor a dataframe that meets the requirements for variable names exd <- lungDK[,c("Ax","Px","D","Y")] names(exd)[1:2] <- c("A","P") # Three different ways of parametrizing the APC-model, ML ex.1 <- apc.fit( exd, npar=7, model="ns", dr.extr="1", parm="ACP", scale=10^5 ) ex.D <- apc.fit( exd, npar=7, model="ns", dr.extr="D", parm="ACP", scale=10^5 ) ex.Y <- apc.fit( exd, npar=7, model="ns", dr.extr="Y", parm="ACP", scale=10^5 ) # Sequential fit, first AC, then P given AC. ex.S <- apc.fit( exd, npar=7, model="ns", parm="AC-P", scale=10^5 ) # Show the estimated drifts ex.1[["Drift"]] ex.D[["Drift"]] ex.Y[["Drift"]] ex.S[["Drift"]] # Plot the effects lt <- c("solid","22")[c(1,1,2)] apc.plot( ex.1, lty=c(1,1,3) ) apc.lines( ex.D, col="red", lty=c(1,1,3) ) apc.lines( ex.Y, col="limegreen", lty=c(1,1,3) ) apc.lines( ex.S, col="blue", lty=c(1,1,3) ) } \keyword{models} \keyword{regression} Epi/man/twoby2.Rd0000644000175100001440000000352413751040403013276 0ustar hornikusers\name{twoby2} \alias{twoby2} \title{Analysis of a two by two table} \description{ Computes the usual measures of association in a 2 by 2 table with confidence intervals. Also produces asymtotic and exact tests. Assumes that comparison of probability of the first column level between levels of the row variable is of interest. Output requires that the input matrix has meaningful row and column labels. } \usage{ twoby2(exposure, outcome, alpha = 0.05, print = TRUE, dec = 4, conf.level = 1-alpha, F.lim = 10000) } \arguments{ \item{exposure}{If a table the analysis is based on the first two rows and first two columns of this. If a variable, this variable is tabulated against} \item{outcome}{as the second variable} \item{alpha}{Significance level} \item{print}{Should the results be printed?} \item{dec}{Number of decimals in the printout.} \item{conf.level}{1-\code{alpha}} \item{F.lim}{If the table total exceeds \code{F.lim}, Fisher's exact test is not computed} } \value{A list with elements: \item{table}{The analysed 2 x 2 table augmented with probabilities and confidence intervals. The confidence intervals for the probabilities are computed using the normal approximation to the log-odds. Confidence intervals for the difference of proportions are computed using method 10 from Newcombe, Stat.Med. 1998, 17, pp.873 ff.} \item{measures}{A table of Odds-ratios and relative risk with confidence intervals.} \item{p.value}{Exact p-value for the null hypothesis of OR=1} } \author{ Mark Myatt. Modified by Bendix Carstensen. } \examples{ Treat <- sample(c("A","B"), 50, rep=TRUE ) Resp <- c("Yes","No")[1+rbinom(50,1,0.3+0.2*(Treat=="A"))] twoby2( Treat, Resp ) twoby2( table( Treat, Resp )[,2:1] ) # Comparison the other way round } \keyword{univar} \keyword{htest} Epi/man/foreign.Lexis.Rd0000644000175100001440000000622313751040403014563 0ustar hornikusers\name{foreign.Lexis} \Rdversion{1.1} \alias{msdata} \alias{msdata.Lexis} \alias{etm} \alias{etm.Lexis} \title{Create a data structures suitable for use with packages \code{mstate} or \code{etm}. } \description{ The \code{mstate} package requires input in the form of a stacked dataset with specific variable names. This is provided by \code{msdata.Lexis}. The resulting dataframe contains the same information as the result of a call to \code{\link{stack.Lexis}}. The \code{etm} package requires input (almost) in the form of a \code{Lexis} object, but with specific column names etc. This is provided by \code{etm.Lexis}. } \usage{ msdata(obj, ...) \method{msdata}{Lexis}(obj, time.scale = timeScales(obj)[1], ... ) \method{etm}{Lexis}( data, time.scale = timeScales(data)[1], cens.name = "cens", s = 0, t = "last", covariance = TRUE, delta.na = TRUE, ... ) } \arguments{ \item{obj}{A \code{\link{Lexis}} object.} \item{data}{A \code{\link{Lexis}} object.} \item{time.scale}{Name or number of timescale in the \code{Lexis} object.} \item{cens.name}{Name of the code for censoring used by \code{etm}. It is only necessary to change this if one of the states in the \code{Lexis} object has name "\code{cens}".} \item{s}{Passed on to \code{etm}.} \item{t}{Passed on to \code{etm}.} \item{covariance}{Passed on to \code{etm}.} \item{delta.na}{Passed on to \code{etm}.} \item{\dots}{Further arguments.} } \value{ \code{msdata.Lexis} returns a dataframe with the \code{Lexis} specific variables stripped, and with the following added: \code{id}, \code{Tstart}, \code{Tstop}, \code{from}, \code{to}, \code{trans}, \code{status}, which are used in the \code{mstate} package. \code{etm.Lexis} transforms the \code{Lexis} object into a dataframe suitable for analysis by the function \code{etm} from the \code{etm} package, and actually calls this function, so returns an object of class \code{etm}. } \author{ Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com} } \examples{ data(DMlate) str(DMlate) dml <- Lexis( entry = list(Per=dodm,Age=dodm-dobth,DMdur=0), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate[1:1000,] ) dmi <- cutLexis( dml, cut=dml$doins, new.state="Ins", pre="DM" ) summary( dmi ) # Use the interface to the mstate package if( require(mstate) ) { ms.dmi <- msdata.Lexis( dmi ) # Check that all the transitions and person-years got across. with( ms.dmi, rbind( table(status,trans), tapply(Tstop-Tstart,trans,sum) ) ) } # Use the etm package directly with a Lexis object if( require(etm) ) { dmi <- subset(dmi,lex.id<1000) etm.D <- etm.Lexis( dmi, time.scale=3 ) str( etm.D ) plot( etm.D, col=rainbow(5), lwd=2, lty=1, xlab="DM duration" ) } } \seealso{ \code{\link{stack.Lexis}}, \code{\link[mstate:msprep]{msprep}}, \code{\link[etm:etm]{etm}} } \keyword{survival} Epi/man/DMlate.Rd0000644000175100001440000000437413751040403013222 0ustar hornikusers\name{DMlate} \Rdversion{1.1} \alias{DMlate} \alias{DMrand} \docType{data} \title{ The Danish National Diabetes Register. } \description{ These two datasets each contain a random sample of 10,000 persons from the Danish National Diabetes Register. \code{DMrand} is a random sample from the register, whereas \code{DMlate} is a random sample among those with date of diagnosis after 1.1.1995. All dates are radomly jittered by adding a U(-7,7) (days). } \usage{data(DMrand) data(DMlate)} \format{ A data frame with 10000 observations on the following 7 variables. \describe{ \item{\code{sex}}{Sex, a factor with levels \code{M} \code{F}} \item{\code{dobth}}{Date of birth} \item{\code{dodm}}{Date of inclusion in the register} \item{\code{dodth}}{Date of death} \item{\code{dooad}}{Date of 2nd prescription of OAD} \item{\code{doins}}{Date of 2nd insulin prescription} \item{\code{dox}}{Date of exit from follow-up.} } } \details{All dates are given in fractions of years, so 1998.000 corresponds to 1 January 1998 and 1998.997 to 31 December 1998. All dates are randomly perturbed by a small amount, so no real persons have any of the combinations of the 6 dates in the dataset. But results derived from the data will be quite close to those that would be obtained if the entire 'real' diabetes register were used. } \source{ Danish National Board of Health. } \references{ B Carstensen, JK Kristensen, P Ottosen and K Borch-Johnsen: The Danish National Diabetes Register: Trends in incidence, prevalence and mortality, Diabetologia, 51, pp 2187--2196, 2008. In partucular see the appendix at the end of the paper. } \examples{ data(DMlate) str(DMlate) dml <- Lexis( entry=list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit=list(Per=dox), exit.status=factor(!is.na(dodth),labels=c("DM","Dead")), data=DMlate ) # Cut the follow-up at insulin start, and introduce a new timescale, # and split non-precursor states system.time( dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins", new.scale = "t.Ins", split.states = TRUE ) ) summary( dmi ) } \keyword{datasets} Epi/man/mod.Lexis.Rd0000644000175100001440000002130513751040403013707 0ustar hornikusers\name{mod.Lexis} \alias{glm.Lexis} \alias{gam.Lexis} \alias{coxph.Lexis} \title{Fit intensity models to follow-up data in Lexis objects } \description{ Modeling intensities based on Lexis objects, exploiting the structure of the Lexis objects where the events and risk time have predefined representations. This allows a simpler syntax than the traditional explicit modeling using \code{\link{glm}}, \code{\link{gam}} and \code{\link{coxph}}. Requires that \code{lex.Cst} and \code{lex.Xst} are defined as factors. But it is just a set of wrappers fro \code{glm}, \code{gam} and \code{coxph}. } \usage{ glm.Lexis( Lx, # Lexis object formula, # ~ model from = preceding(Lx,to), # 'from' states to = absorbing(Lx) , # 'to' states paired = FALSE, # only the pairwise link = "log", # link function scale = 1, # scaling of PY verbose = TRUE, # report what is done? \dots ) # further arguments to glm gam.Lexis( Lx, # Lexis object formula, # ~ model from = preceding(Lx,to), # 'from' states to = absorbing(Lx) , # 'to' states paired = FALSE, # only the pairwise link = "log", # link function scale = 1, # scaling of PY verbose = TRUE, # report what is done? \dots ) # further arguments to gam coxph.Lexis( Lx, # Lexis object formula, # timescale ~ model from = preceding(Lx,to), # 'from' states to = absorbing(Lx) , # 'to' states paired = FALSE, # only the pairwise verbose = TRUE, # report what is done? \dots ) # further arguments to coxph } \arguments{ \item{Lx}{A \code{\link{Lexis}} object representing cohort follow-up. } \item{formula}{Model formula describing the model for the intensity(-ies). For \code{glm} and \code{gam}, the formula should be one-sided; for \code{coxph} the formula should be two-sided and have the name of the time-scale used for baseline hazard as the l.h.s. } \item{from}{Character vector of states \bold{from} which transitions are considered. May also be an integer vector in which case the reference will be to the position of levels of \code{lex.Cst}. Defaults to the collection of transient states immediately preceding the absorbing states. } \item{to}{Character vector of states \bold{to} which a transition is considered an event. May also be an integer vector in which case the reference will be to the position of levels of \code{lex.Xst}. Defaults to the set of absorbing states. } \item{paired}{Logical. Should the states mentioned in \code{to}, rep. \code{from} be taken as pairs, indicating the only transitions modeled. If \code{FALSE} all transitions from any of the states in \code{from} to any states in \code{to} are modeled. } \item{link}{Character; name of the link function used, allowed values are \code{'log'} (the default), \code{'identity'} and \code{'sqrt'}, see the family \code{\link{poisreg}}. } \item{scale}{Scalar. \code{lex.dur} is divided by this number before analysis, so that you can get resulting rates on a scale of your wish. } \item{verbose}{Print information on the states modeled? } \item{\dots}{Further arguments passed on to \code{glm}, \code{glm} or \code{coxph} } } \details{ The \code{glm} and \code{gam} models are fitted using the family \code{\link{poisreg}} which is a bit faster than the traditional \code{poisson} family. The response variable for this family is a two-column vector of events and person-time respectively, so the predictions, for example using \code{\link{ci.pred}} does not require \code{lex.dur} (and would ignore this) as variable in the \code{newdata}. \code{ci.pred} will return the estimated rates in units of the \code{lex.dur} in the \code{Lexis} object, scaled by \code{scale}, which has a default value of 1. The default is to model all transitions into any absorbing state by the same model (how wise is that??). If only \code{from} is given, \code{to} is set to all states reachable from \code{from}, which may be a really goofy model and if so a warning is issued. If only \code{to} is given, \code{from} is set to the collection of states from which \code{to} can be reached directly --- see \code{\link{preceding}} and its cousins. This convention means that if you have a \code{\link{Lexis}} object representing a simple survival analysis, with states, say, "alive" and "dead", you can dispense with the \code{from} and \code{to} arguments. Occasionally you only want to model a subset of the possible transitions from states in \code{from} to states in \code{to}, in which case you specify \code{from} and \code{to} as character vectors of the same length and set \code{paired=TRUE}. Then only transitions \code{from[i]} to \code{to[i]}, \code{i}=1,2,... will be modeled. There is no working \code{update} functions for these objects (yet). Strictly speaking, it is a bit counter-intuitive to have the time-scale on the l.h.s. of the formula for the \code{coxph} since the time scale is also a predictor of the occurrence rate. On the other hand, calling \code{coxph} directly would also entail having the name of the time scale in the \code{Surv} object on the l.h.s. of the formula. So the inconsistency is merely carried over from \code{coxph}. } \value{\code{glm.Lexis} returns a \code{\link{glm}} object, which is also of class \code{glm.lex}, \code{gam.Lexis} returns a \code{\link[mgcv]{gam}} object, which is also of class \code{gam.lex}, and \code{coxph.Lexis} returns a \code{\link[survival]{coxph}} object, which is also of class \code{coxph.lex}. These extra class attributes are meant to facilitate the (still pending) implementation of an \code{update} function. The returned objects all have an extra attribute, \code{Lexis} which is a list with entries \code{data}, the name of the \code{Lexis} object modeled (note that it is \emph{not} the object, only the name of it, which may not be portable); \code{trans}, a character vector of transitions modeled; \code{formula}, the model formula; and \code{scale}, the scaling applied to \code{lex.dur} before modeling. Only the \code{glm} and \code{gam} objects have the \code{scale} element in the list; a scalar indicating the scaling of \code{lex.dur} before modeling. Note that the formula component of the \code{Lexis} attribute of a \code{coxph} object is a two-sided formula with the baseline time scale as the l.h.s. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com}. } \seealso{ \code{\link{Lexis}}, \code{\link{cutLexis}}, \code{\link{mcutLexis}}, \code{\link{addCov.Lexis}}, \code{\link{absorbing}}, \code{\link{transient}} } \examples{ library( Epi ) library( survival ) data( DMlate ) # Lexis object of total follow-up mL <- Lexis( entry = list(age=dodm-dobth,per=dodm), exit = list(per=dox), exit.status = factor(!is.na(dodth),labels=c("Alive","Dead")), data = DMlate ) # Cut follow-up at start of insulin use cL <- cutLexis( mL, cut = mL$doins, timescale = "per", new.state = "Ins", precursor.states = "Alive" ) # Split follow-up on age-axis system.time( sL <- splitLexis( cL, breaks=0:25*4, time.scale="age") ) # ( consider splitMulti from the popEpi package ) summary( sL ) # glm models for rates based on the time-split dataset by insulin and sex # Proportional hazards model with insulin as time-dependent variable # - uses the defaul of modeling all transitions from both transient # states ("Alive" and "Ins") to the absorbing state ("Dead"). mt <- glm.Lexis( sL, ~ sex + lex.Cst + Ns(age,knots=c(15,3:8*10)) ) # prediction of mortality rates from "Alive" with and without PH assumption nA <- data.frame( age=40:70, sex="M", lex.Cst="Alive" ) nI <- data.frame( age=40:70, sex="M", lex.Cst="Ins" ) matshade( nA$age, cbind( ci.pred(mt,nA), ci.pred(mt,nI) )*1000, plot=TRUE, lwd=3, lty=1, log="y", col=c("black","blue","red"), xlab="Age", ylab="Mortality per 1000 PY" ) # gam models may take some time to run so we leave it out \dontrun{ mt.gam <- gam.Lexis( sL, ~ sex + lex.Cst + s(age), to="Dead", scale=1000 ) } # Fit a Cox model for mortality with age as baseline time scale and # insulin (lex.Cst) as time-dependent covariate mt.cox <- coxph.Lexis( sL, age ~ sex + lex.Cst, c("Alive","Ins"), "Dead" ) # Pretty much the same results for regression paramters as the glm: ci.exp( mt , subset="ex" ) # ci.exp( mt.gam, subset="ex" ) ci.exp( mt.cox, subset="ex" ) } \keyword{models} Epi/man/ftrend.Rd0000644000175100001440000000476613751040403013343 0ustar hornikusers\name{ftrend} \alias{ftrend} \title{Fit a floating trend to a factor in generalized linear model} \description{ Fits a "floating trend" model to the given factor in a glm in a generalized linear model by centering covariates. } \usage{ ftrend(object, ...) } \arguments{ \item{object}{fitted \code{lm} or \code{glm} object. The model must not have an intercept term} \item{...}{arguments to the \code{nlm} function} } \details{ \code{ftrend()} calculates "floating trend" estimates for factors in generalized linear models. This is an alternative to treatment contrasts suggested by Greenland et al. (1999). If a regression model is fitted with no intercept term, then contrasts are not used for the first factor in the model. Instead, there is one parameter for each level of this factor. However, the interpretation of these parameters, and their variance-covariance matrix, depends on the numerical coding used for the covariates. If an arbitrary constant is added to the covariate values, then the variance matrix is changed. The \code{ftrend()} function takes the fitted model and works out an optimal constant to add to the covariate values so that the covariance matrix is approximately diagonal. The parameter estimates can then be treated as approximately independent, thus simplifying their presentation. This is particularly useful for graphical display of dose-response relationships (hence the name). Greenland et al. (1999) originally suggested centring the covariates so that their weighted mean, using the fitted weights from the model, is zero. This heuristic criterion is improved upon by \code{ftrend()} which uses the same minimum information divergence criterion as used by Plummer (2003) for floating variance calculations. \code{ftrend()} calls \code{nlm()} to do the minimization and will pass optional arguments to control it. } \note{ The "floating trend" method is an alternative to the "floating absolute risk" method, which is implemented in the function \code{float()}. } \value{ A list with the following components \item{coef}{coefficients for model with adjusted covariates.} \item{vcov}{Variance-covariance matrix of adjusted coefficients.} } \references{ Greenland S, Michels KB, Robins JM, Poole C and Willet WC (1999) Presenting statistical uncertainty in trends and dose-response relations, \emph{American Journal of Epidemiology}, \bold{149}, 1077-1086. } \author{Martyn Plummer} \seealso{\code{\link{float}}} \keyword{regression} Epi/man/lls.Rd0000644000175100001440000000335213751040403012641 0ustar hornikusers\name{lls} \alias{lls} \alias{clear} \title{Functions to manage and explore the workspace } \description{These functions help you to find out what has gone wrong and to start afresh if needed. } \usage{ lls(pos = 1, pat = "", all=FALSE, print=TRUE ) clear() } \arguments{ \item{pos}{Numeric. What position in the search path do you want listed.} \item{pat}{Character. List only objects that have this string in their name.} \item{all}{Logical. Should invisible objects be printed too - see \code{\link{ls}} to which this argument is passed.} \item{print}{Logical. Should the result be printed?} } \details{\code{lls} is designed to give a quick overview of the name, mode, class and dimension of the object in your workspace. They may not always be what you think they are. \code{clear} clears all your objects from workspace, and all attached objects too --- it only leaves the loaded packages in the search path; thus allowing a fresh start without closing and restarting R. } \value{ \code{lls} returns a data frame with four character variables: code{name}, code{mode}, code{class} and code{size} and one row per object in the workspace (if \code{pos=1}). \code{size} is either the length or the dimension of the object. The data frame is by default printed with left-justified columns. } \author{\code{lls}: Unknown. Modified by Bendix Carstensen from a long forgotten snatch. \code{clear}: Michael Hills / David Clayton.} \examples{ x <- 1:10 y <- rbinom(10, 1, 0.5) m1 <- glm( y ~ x, family=binomial ) M <- matrix( 1:20, 4, 5 ) .M <- M dfr <- data.frame(x,y) attach( dfr ) lls() search() clear() search() lls() lls(all=TRUE) } \keyword{attributes}Epi/man/contr.cum.Rd0000644000175100001440000000306213751040403013755 0ustar hornikusers\name{contr.cum} \alias{contr.cum} \alias{contr.2nd} \alias{contr.diff} \alias{contr.orth} \title{ Contrast matrices } \description{ Return a matrix of contrasts for factor coding. } \usage{ contr.cum(n) contr.diff(n) contr.2nd(n) contr.orth(n) } \arguments{ \item{n}{A vector of levels for a factor, or the number of levels.} } \details{ These functions are used for creating contrast matrices for use in fitting regression models. The columns of the resulting matrices contain contrasts which can be used for coding a factor with \code{n} levels. \code{contr.cum} gives a coding corresponding to successive differences between factor levels. \code{contr.diff} gives a coding that correspond to the cumulative sum of the value for each level. This is not meaningful in a model where the intercept is included, therefore \code{n} columns ia always returned. \code{contr.2nd} gives contrasts corresponding to 2nd order differences between factor levels. Returns a matrix with \code{n-2} columns. \code{contr.orth} gives a matrix with \code{n-2} columns, which are mutually orthogonal and orthogonal to the matrix \code{cbind(1,1:n)} } \value{ A matrix with \code{n} rows and \code{k} columns, with \code{k}=\code{n} for \code{contr.diff} \code{k}=\code{n-1} for \code{contr.cum} \code{k}=\code{n-2} for \code{contr.2nd} and \code{contr.orth}. } \author{Bendix Carstensen} \seealso{ \code{\link{contr.treatment}} } \examples{ contr.cum(6) contr.2nd(6) contr.diff(6) contr.orth(6) } \keyword{design} \keyword{models} Epi/man/BrCa.Rd0000644000175100001440000000456213751040403012662 0ustar hornikusers\name{BrCa} \alias{BrCa} \docType{data} \title{Clinical status, relapse, metastasis and death in 2982 women with breast cancer. } \description{ This dataset is a transformation of the example dataset used by Crowther and Lambert in their multistate paper.} \usage{data(BrCa)} \format{ A data frame with 2982 observations on the following 17 variables: \describe{ \item{\code{pid}}{Person-id; numeric} \item{\code{year}}{Calendar year of diagnosis} \item{\code{age}}{Age at diagnosis} \item{\code{meno}}{Menopausal status; a factor with levels \code{pre} \code{post}} \item{\code{size}}{Tumour size; a factor with levels \code{<=20 mm} \code{>20-50 mm} \code{>50 mm}} \item{\code{grade}}{Tumour grade; a factor with levels \code{2} \code{3}} \item{\code{nodes}}{Number of positive lymph nodes, a numeric vector} \item{\code{pr}}{Progesteron receptor level} \item{\code{pr.tr}}{Transformed progesteron level} \item{\code{er}}{Estrogen receptor level} \item{\code{hormon}}{Hormon therapy at diagnosis; a factor with levels \code{no} \code{yes}} \item{\code{chemo}}{Chemotherapy treatment; a factor with levels \code{no} \code{yes}} \item{\code{tor}}{Time of relapse, years since diagnosis} \item{\code{tom}}{Time of metastasis, years since diagnosis} \item{\code{tod}}{Time of death, years since diagnosis} \item{\code{tox}}{Time of exit from study, years since diagnosis} \item{\code{xst}}{Vital status at exit; a factor with levels \code{Alive} \code{Dead}} } } \details{ The dataset has been modified to contain the times (since diagnosis) of the events of interest, to comply with the usual structure of data. } \source{ The original data were extracted from: \url{http://fmwww.bc.edu/repec/bocode/m/multistate_example.dta}, this is modified representation of the same amount of information. } \references{ The data were used as example in the paper by Crowther and Lambert: Parametric multistate survival models: Flexible modelling allowing transition-specific distributions with application to estimating clinically useful measures of effect differences; Stat Med 36 (29), pp 4719-4742, 2017. (No, it is not the paper, just the title.) A parallel analysis using the \code{\link{Lexis}} machinery is available as: \url{http://bendixcarstensen.com/AdvCoh/papers/bcMS.pdf} } \examples{ data(BrCa) } \keyword{datasets} Epi/man/time.scales.Rd0000644000175100001440000000241313751040403014253 0ustar hornikusers\name{timeScales} \alias{timeScales} \alias{timeSince} \alias{tsNA20} \title{The time scales of a Lexis object} \description{ Functions to get the names and type of the time scales of a \code{Lexis} object. } \usage{ timeScales(x) timeSince(x) tsNA20( x, all.scales=FALSE ) } \arguments{ \item{x}{an object of class \code{Lexis}.} \item{all.scales}{Should NAs in all timescales be replaced by 0? If \code{FALSE} (the default) only timescales defined as time since entry to a state get \code{NA}s replaced by 0s} } \value{ \code{timeScales} returns a character vector containing the names of the variables in \code{x} that represent the time scales. Extracted from the \code{time.scales} attribute of the object. \code{timeSince} returns a named character vector, the names being the names of the timescales and the content being the names of the states to which the corresponding timescale is defined as time since entry. For those time scales that are not defined as such an empty string is used. Hence, if none of the timescales are defined as time since entry to a state \code{timeSince} will return a vector of empty strings. } \author{Martyn Plummer, Bendix Carstensen} \seealso{\code{\link{Lexis}}, \code{\link{splitLexis}}} \keyword{attribute} Epi/man/gmortDK.Rd0000644000175100001440000000303113751040403013410 0ustar hornikusers\name{gmortDK} \alias{gmortDK} \docType{data} \title{Population mortality rates for Denmark in 5-years age groups.} \description{ The \code{gmortDK} data frame has 418 rows and 21 columns. } \format{ This data frame contains the following columns: \tabular{rl}{ \code{agr}: \tab Age group, 0:0--4, 5:5--9,..., 90:90+. \cr \code{per}: \tab Calendar period, 38: 1938--42, 43: 1943--47, ..., 88:1988-92. \cr \code{sex}: \tab Sex, 1: male, 2: female. \cr \code{risk}: \tab Number of person-years in the Danish population. \cr \code{dt}: \tab Number of deaths. \cr \code{rt}: \tab Overall mortality rate in cases per 1000 person-years, i.e. \code{rt=1000*dt/risk} \cr \tab Cause-specific mortality rates in cases per 1000 person-years: \cr \code{r1}: \tab Infections \cr \code{r2}: \tab Cancer. \cr \code{r3}: \tab Tumors, benign, unspecific nature. \cr \code{r4}: \tab Endocrine, metabolic. \cr \code{r5}: \tab Blood. \cr \code{r6}: \tab Nervous system, psychiatric. \cr \code{r7}: \tab Cerebrovascular. \cr \code{r8}: \tab Cardiac. \cr \code{r9}: \tab Respiratory diseases, excl. cancer. \cr \code{r10}: \tab Liver, excl. cancer. \cr \code{r11}: \tab Digestive, other. \cr \code{r12}: \tab Genitourinary. \cr \code{r13}: \tab Ill-defined symptoms. \cr \code{r14}: \tab All other, natural. \cr \code{r15}: \tab Violent. \cr } } \source{ Statistics Denmark, National board of health provided original data. Michael Andersson grouped the causes of death. } \examples{ data(gmortDK) } \seealso{\code{\link{thoro}}, \code{\link{mortDK}}} \keyword{datasets} Epi/man/in.span.Rd0000644000175100001440000000714213751040403013416 0ustar hornikusers\name{in.span} \alias{in.span} \alias{inSpan} \alias{id.span} \alias{idSpan} \alias{thinCol} \title{ Is \code{x} in the column span of matrix \code{A} and what columns are linearly dependent? } \description{ The function \code{in.span} checks if the vector \code{x} (or columns of the matrix \code{x}) is in the column span of the matrix \code{A}. If desired, it returns the coefficient matrix \code{B} so that \code{AB=x}. The function \code{thinCol} removes linearly dependent columns an returns a matrix of full rank. } \usage{ in.span( A, x, coef = FALSE, tol = 1e-08 ) inSpan( A, x, coef=FALSE, tol=1e-08 ) id.span( A, B, tol=1e-08 ) idSpan( A, B, tol=1e-08 ) thinCol( A, tol = 1e-06, col.num = FALSE ) } \details{\code{\link{thinCol}} is mainly a workhorse in \code{\link{detrend}}, but made available because of its general usefulness. \code{in.span} and \code{inSpan} are just different names for the same to accommodate different naming schools. \code{in.span} (\code{inSpan}) is handy in checking whether different parametrizations of a model are identical in the sense of spanning the same linear space. Equivalent to checking whether fitted values under different parametrizations are identical, but has the further use of checking if subspaces of models are equivalent. The function simply checks if the regression of (columns of) \code{x} on the columns of \code{A} produces residuals that are all 0. \code{id.span} (equivalent to \code{idSpan}) checks whether two matrices have the same column span. } \arguments{ \item{A}{A matrix.} \item{B}{A matrix.} \item{x}{A vector or matrix. \code{length(x)} (or \code{nrow(x)}) must be equal to \code{nrow(A)}.} \item{coef}{Logical. Should the coefficient matrix (\code{k}) be returned, so that \code{Ak=x}?} \item{tol}{Tolerance for identity of matrices in check (\code{in.span}) or QR decomposition (\code{thinCol})} \item{col.num}{Logical. Should the positions of dependent columns be returned instead of the full-rank matrix?} } \value{\code{in.span} returns a logical: is \code{x} is in \code{span(A)}? If \code{coef=TRUE} it returns a matrix \code{k} so that \code{Ak=x}. \code{k} is not necessarily unique (A may not have full rank). \code{id.span} returns a logical: is \code{span(A)} the same as \code{span(B)}? \code{thinCol} returns a matrix of full rank, formed from \code{A} by deleting columns linearly dependent on other. If \code{col.num=TRUE} (one possible set of) positions of columns forming a full rank basis for the column space of \code{A} is returned. } \author{Bendix Carstensen, \url{http://bendixcarstensen.com} with essential help from Lars Jorge Diaz and Peter Dalgaard. } \seealso{\code{\link{det}} } \examples{ # Matrices and vectors, x in span(A), z (hopefully) not A <- matrix(round(rnorm(15)*20),5,3) B <- matrix(round(rnorm(15)*20),5,3) B <- cbind( B, B\%*\%c(3,4,2) ) x <- A \%*\% c(3,4,2) z <- 5:9 # how they look data.frame( A=A, x=x, z=z, B=B ) # vectors in span(A)? in.span(A,x) in.span(x,A) in.span(A,x,coef=TRUE) in.span(A,z) in.span(A,z,coef=TRUE) # Do matrices span the same space ? in.span( A, B ) in.span( B, A ) # B is not in span of a subspace of B columns, but vice versa ( M <- matrix( rnorm(8)*7, 4, 2 ) ) in.span( B\%*\%M, B ) in.span( B, B\%*\%M ) id.span( B, B\%*\%M ) # But not unique for singular matrices: ( xx <- in.span( B, B\%*\%M, coef=TRUE ) ) cbind( B\%*\%M, B\%*\%xx ) cbind( xx, M ) # Easier for full rank matrices: ( K <- matrix( rnorm(9)*7, 3, 3 ) ) in.span( A\%*\%K, A ) in.span( A, A\%*\%K ) id.span( A, A\%*\%K ) in.span( A, A\%*\%K, coef=TRUE ) } \keyword{math} Epi/man/ncut.Rd0000644000175100001440000000310013751040403013007 0ustar hornikusers\name{ncut} \alias{ncut} \title{ Function to group a variable in intervals.} \description{ Cuts a continuous variable in intervals. As opposed to \code{cut} which returns a factor, \code{ncut} returns a numeric variable. } \usage{ ncut(x, breaks, type="left" ) } \arguments{ \item{x}{A numerical vector.} \item{breaks}{Vector of breakpoints. \code{NA} will results for values below \code{min(breaks)} if \code{type="left"}, for values above \code{max(breaks)} if \code{type="right"} and for values outside \code{range(breaks)} if \code{type="mid"}} \item{type}{Character: one of \code{c("left","right","mid")}, indicating whether the left, right or midpoint of the intervals defined in breaks is returned.} } \details{ The function uses the base function \code{findInterval}. } \value{ A numerical vector of the same length as \code{x}. } \author{ Bendix Carstensen, Steno Diabetes Center, \email{b@bxc.dk}, \url{http://bendixcarstensen.com}, with essential input from Martyn Plummer, \email{martyn.plummer@r-project.org} } \seealso{ \code{\link{cut}}, \code{\link{findInterval}} } \examples{ br <- c(-2,0,1,2.5) x <- c( rnorm( 10 ), br, -3, 3 ) cbind( x, l=ncut( x, breaks=br, type="l" ), m=ncut( x, breaks=br, type="m" ), r=ncut( x, breaks=br, type="r" ) )[order(x),] x <- rnorm( 200 ) plot( x, ncut( x, breaks=br, type="l" ), pch=16, col="blue", ylim=range(x) ) abline( 0, 1 ) abline( v=br ) points( x, ncut( x, breaks=br, type="r" ), pch=16, col="red" ) points( x, ncut( x, breaks=br, type="m" ), pch=16, col="green" ) } \keyword{manip} Epi/man/simLexis.Rd0000644000175100001440000003205613751040403013647 0ustar hornikusers\name{simLexis} \alias{simLexis} \alias{nState} \alias{pState} \alias{plot.pState} \alias{lines.pState} \title{Simulate a Lexis object representing follow-up in a multistate model.} \description{Based on a (pre-)\code{Lexis} object representing persons at given states and times, and full specification of transition intensities between states in the form of models for the transition rates, this function simulates transition times and -types for persons and returns a \code{Lexis} object representing the simulated cohort. The simulation scheme accommodates multiple timescales, including time since entry into an intermediate state, and accepts fitted Poisson models, Cox-models or just a function as specification of rates.} \usage{ simLexis( Tr, init, N = 1, lex.id, t.range = 20, n.int = 101, time.pts = seq(0,t.range,length.out=n.int) ) nState( obj, at, from, time.scale = 1 ) pState( nSt, perm = 1:ncol(nSt) ) \method{plot}{pState}( x, col = rainbow(ncol(x)), border = "transparent", xlab = "Time", ylim = 0:1, ylab = "Probability", ... ) \method{lines}{pState}( x, col = rainbow(ncol(x)), border = "transparent", ... ) } \arguments{ \item{Tr}{A named list of named lists. The names of the list are names of the transient states in the model. Each list element is again a named list. The names of the elements of this inner list are the names of the states reachable from the state with name equal to the list. Elements of the intter lists represent transitions. See details.} \item{init}{A (pre-)\code{\link{Lexis}} object representing the initial state of the persons whose trajectories through the multiple states we want to simulate. Must have attributes "time.scales" and "time.since" --- see details. Duplicate values of \code{lex.id} are not sensible and not accepted.} \item{N}{Numeric. How many persons should be simulated. \code{N} persons with covariate configuration of each row in \code{init} will be simulated. Either a scalar or a vector of length \code{nrow(init)}.} \item{lex.id}{Vector of ids of the simulated persons. Useful when simulating in chunks.} \item{t.range}{Numerical scalar. The range of time over which to compute the cumulative rates when simulating. Simulted times beyond this will result in an obervation censored at \code{t.range} after entry.} \item{n.int}{Number of intervals to use when computing (cumulative) rates.} \item{time.pts}{Numerical vector of times since start. Cumulative rates for transitions are computed at these times after stater and entry state. Simulation is only done till time \code{max(time.pts)} after start, where persons are censored. Must start with 0.} \item{obj}{A \code{Lexis} object.} \item{from}{The point on the time scale \code{time.scale} from which we start counting.} \item{time.scale}{The timescale to which \code{from} refer.} \item{at}{Time points (after \code{from}) where the number of persons in each state is to be computed.} \item{nSt}{A table obtained by \code{nState}.} \item{perm}{A permutation of columns used before cumulating row-wise and taking percentages.} \item{x}{An object of class \code{pState}, e.g. created by \code{pState}.} \item{col}{Colors for filling the areas between curves.} \item{border}{Colors for outline of the areas between curves.} \item{xlab}{Label on x-axis} \item{ylim}{Limits on y-axis} \item{ylab}{Label on y-axis} \item{...}{Further arguments passed on to \code{plot}.} } \details{The simulation command \code{simLexis} is not defined as a method for \code{Lexis} objects, because the input is not a \code{Lexis} object, the \code{Lexis}-like object is merely representing a prevalent population and a specification of which variables that are timescales. The variables \code{lex.dur} and \code{lex.Xst} are ignored (and overwritten) if present. The core input is the list \code{Tr} giving the transitions. The components of \code{Tr} represents the transition intensities between states. The transition from state \code{A} to \code{B}, say, is assumed stored in \code{Tr$A$B}. Thus names of the elements of \code{Tr} are names of transient states, and the names of the elements of each these are the names of states reachable from the corresponding transient state. The transition intensities are assumed modelled by either a glm with Poisson family or a Cox-model. In both cases the timescale(s) in the model must be using the names fo the timescales in a Lexis object representng the follow-up in a cohort, and the risk time must be taken from the variable \code{lex.dur} --- see the example. Alternatively, an element in \code{Tr} could be a function that from a data frame produces transition rates, or specifically cumulative transition rates over intervals of length \code{lex.dur}. The pre-\code{Lexis} object \code{init} must contain values of all variables used in any of the objects in \code{Tr}, as well as all timescales - even those not used in the models. Moreover, the attributes \code{time.scales} and \code{time.since} must be present. The attribute \code{time.since} is a character vector of the same length as \code{time.scales} and an element has value \code{"A"} if the corresponding time scale is defined as "time since entry into state \code{A}", otherwise the value is \code{""}. If not present it will be set to a vector of \code{""}s, which is only OK if no time scales are defined as time since entry to a state. Note that the variables pre-\code{Lexis} object \code{init} must have the same mode and class as in the dataset used for fitting the models --- hence the indexing of rows by brackets in the assignment of values used in the example below - this way the variables have their attributes preserved; using \code{init[,"var"] <-} or \code{init$var <-} replaces the variable, whereas \code{init[1:4,"var"] <-} or \code{init$var[1:4] <-} replaces values only and prevents you from entering non-existing factor levels etc. The function \code{\link{Lexis}} automatically generates an attribute \code{time.since}, and \code{\link{cutLexis}} updates it when new time scales are defined. Hence, the simplest way of defining a initial pre-\code{Lexis} object representing a current state of a (set of) persons to be followed through a multistate model is to take \code{NULL} rows of an existing Lexis object (normally the one used for estimation), and so ensuring that all relevant attributes and state levels are properly defined. See the example code. The prevalence function \code{nState} computes the distribution of individuals in different states at prespecified times. Only sensible for a simulated \code{Lexis} object. The function \code{pState} takes a matrix as output by \code{nState} and computes the row-wise cumulative probabilities across states, and leaves an object of class \code{pState}, suitable for plotting. } \value{\code{simLexis} returns a \code{\link{Lexis}} object representing the experience of a population starting as \code{init} followed through the states according to the transitions in \code{Tr}. The function \code{nState} returns a table of persons classified by states at each of the times in \code{at}. Note that this function can easily produce meaningless results, for example if applied to a \code{Lexis} object not created by simulation. If you apply it to a \code{Lexis} object generated by \code{simLexis}, you must make sure that you start (\code{from}) the point where you started the simulation on the correct timescale, and you will get funny results if you try to tabulate beyond the censoring time for the simulation. The resulting object has class \code{"table"}. The result from using \code{pState} on the result from \code{nState} has class \code{c("pState","matrix")}. } \author{Bendix Carstensen, \url{http://bendixcarstensen.com}.} \seealso{ \code{\link{Lexis}}, \code{\link{cutLexis}}, \code{\link{splitLexis}} } \examples{ data(DMlate) dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate[runif(nrow(DMlate))<0.1,] ) # Split follow-up at insulin, introduce a new timescale, # and split non-precursor states dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins", new.scale = "t.Ins", split.states = TRUE ) # Split the follow in 1-year intervals for modelling Si <- splitLexis( dmi, 0:30/2, "DMdur" ) # Define knots nk <- 4 ( ai.kn <- with( subset(Si,lex.Xst=="Ins"), quantile( Age+lex.dur, probs=(1:nk-0.5)/nk ) ) ) ( ad.kn <- with( subset(Si,lex.Xst=="Dead"), quantile( Age+lex.dur, probs=(1:nk-0.5)/nk ) ) ) ( di.kn <- with( subset(Si,lex.Xst=="Ins"), quantile( DMdur+lex.dur, probs=(1:nk-0.5)/nk ) ) ) ( dd.kn <- with( subset(Si,lex.Xst=="Dead"), quantile( DMdur+lex.dur, probs=(1:nk-0.5)/nk ) ) ) ( td.kn <- with( subset(Si,lex.Xst=="Dead(Ins)"), quantile( t.Ins+lex.dur, probs=(1:nk-0.5)/nk ) ) ) # Fit Poisson models to transition rates library( splines ) DM.Ins <- glm( (lex.Xst=="Ins") ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="DM") ) DM.Dead <- glm( (lex.Xst=="Dead") ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="DM") ) Ins.Dead <- glm( (lex.Xst=="Dead(Ins)") ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + Ns( t.Ins, knots=td.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="Ins") ) # Stuff the models into an object representing the transitions Tr <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = DM.Dead ), "Ins" = list( "Dead(Ins)" = Ins.Dead ) ) lapply( Tr, names ) # Define an initial object - note the subsetting that ensures that # all attributes are carried over ini <- Si[1,1:9][-1,] ini[1:2,"lex.Cst"] <- "DM" ini[1:2,"Per"] <- 1995 ini[1:2,"Age"] <- 60 ini[1:2,"DMdur"] <- 5 ini[1:2,"sex"] <- c("M","F") str(ini) # Simulate 200 of each sex using the estimated models in Tr simL <- simLexis( Tr, ini, time.pts=seq(0,11,0.5), N=200 ) summary( simL ) # Find the number of persons in each state at a set of times. # Note that the times are shirter than the time-span simulated. nSt <- nState( subset(simL,sex=="M"), at=seq(0,10,0.1), from=1995, time.scale="Per" ) nSt # Show the cumulative prevalences in a different order than that of the # state-level ordering and plot them using all defaults pp <- pState( nSt, perm=c(1,2,4,3) ) head( pp ) plot( pp ) # A more useful set-up of the graph clr <- c("orange2","forestgreen") par( las=1 ) plot( pp, col=clr[c(2,1,1,2)] ) lines( as.numeric(rownames(pp)), pp[,2], lwd=2 ) mtext( "60 year old male, diagnosed 1995", side=3, line=2.5, adj=0 ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[1] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[2] ) axis( side=4 ) # Using a Cox-model for the mortality rates assuming the two mortality # rates to be proportional: # When we fit a Cox-model, lex.dur must be used in the Surv() function, # and the I() constrction must be used when specifying intermediate # states as covariates, since factors with levels not present in the # data will create NAs in the parameter vector returned by coxph, which # in return will crash the simulation machinery. library( survival ) Cox.Dead <- coxph( Surv( DMdur, DMdur+lex.dur, lex.Xst \%in\% c("Dead(Ins)","Dead")) ~ Ns( Age-DMdur, knots=ad.kn ) + I(lex.Cst=="Ins") + I(Per-2000) + sex, data = Si ) Cr <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = Cox.Dead ), "Ins" = list( "Dead(Ins)" = Cox.Dead ) ) simL <- simLexis( Cr, ini, time.pts=seq(0,11,0.2), N=200 ) summary( simL ) nSt <- nState( subset(simL,sex=="M"), at=seq(0,10,0.2), from=1995, time.scale="Per" ) pp <- pState( nSt, perm=c(1,2,4,3) ) plot( pp ) } \keyword{survival} Epi/man/rbind.Lexis.Rd0000644000175100001440000000621113751040403014225 0ustar hornikusers\name{cbind.Lexis} \alias{cbind.Lexis} \alias{rbind.Lexis} %- Also NEED an '\alias' for EACH other topic documented here. \title{Combining a Lexis objects with data frames or other Lexis objects } \description{A Lexis object may be combined side-by-side with data frames. Or several Lexis objects may stacked, possibly increasing the number of states and time scales. } \usage{ \method{cbind}{Lexis}(...) \method{rbind}{Lexis}(...) } \arguments{ \item{\dots}{For \code{cbind} a sequence of data frames or vectors of which exactly one has class \code{Lexis}. For \code{rbind} a sequence of Lexis objects, supposedly representing follow-up in the same population.} } \details{ Arguments to \code{rbind.Lexis} must all be \code{\link{Lexis}} objects; except for possible NULL objects. The timescales in the resulting object will be the union of all timescales present in all arguments. Values of timescales not present in a contributing Lexis object will be set to \code{NA}. The \code{breaks} for a given time scale will be \code{NULL} if the \code{breaks} of the same time scale from two contributing Lexis objects are different. The arguments to \code{cbind.Lexis} must consist of at most one Lexis object, so the method is intended for amending a Lexis object with extra columns without losing the Lexis-specific attributes. } \value{ A \code{\link{Lexis}} object. \code{rbind} renders a \code{Lexis} object with timescales equal to the union of timescales in the arguments supplied. Values of a given timescale are set to \code{NA} for rows corresponding to supplied objects. \code{cbind} basically just adds columns to an existing Lexis object. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{subset.Lexis}} } \examples{ # A small bogus cohort xcoh <- structure( list( id = c("A", "B", "C"), birth = c("14/07/1952", "01/04/1954", "10/06/1987"), entry = c("04/08/1965", "08/09/1972", "23/12/1991"), exit = c("27/06/1997", "23/05/1995", "24/07/1998"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) # Convert the character dates into numerical variables (fractional years) xcoh <- cal.yr( xcoh, format="\%d/\%m/\%Y", wh=2:4 ) # See how it looks xcoh str( xcoh ) # Define as Lexis object with timescales calendar time and age Lcoh <- Lexis( entry = list( per=entry ), exit = list( per=exit, age=exit-birth ), exit.status = fail, data = xcoh ) Lcoh cbind( Lcoh, zz=3:5 ) # Lexis object wit time since entry time scale Dcoh <- Lexis( entry = list( per=entry, tfe=0 ), exit = list( per=exit ), exit.status = fail, data = xcoh ) # A bit meningless to combie these two, really... rbind( Dcoh, Lcoh ) # Split different places sL <- splitLexis( Lcoh, time.scale="age", breaks=0:20*5 ) sD <- splitLexis( Dcoh, time.scale="tfe", breaks=0:50*2 ) sDL <- rbind( sD, sL ) } \keyword{survival} \keyword{manip} Epi/man/LCa.fit.Rd0000644000175100001440000003117114221327540013272 0ustar hornikusers\name{LCa.fit} \alias{LCa.fit} \alias{print.LCa} \alias{summary.LCa} \alias{plot.LCa} \alias{predict.LCa} \title{ Fit Lee-Carter-type models for rates to arbitrarily shaped observations of rates in a Lexis diagram. } \description{ The Lee-Carter model is originally defined as a model for rates observed in A-sets (age by period) of a Lexis diagram, as log(rate(x,t)) = a(x) + b(x)k(t), using one parameter per age(x) and period(t). This function uses natural splines for a(), b() and k(), placing knots for each effect such that the number of events is the same between knots. } \usage{ LCa.fit( data, A, P, D, Y, model = "APa", # or one of "ACa", "APaC", "APCa" or "APaCa" a.ref, # age reference for the interactions pi.ref = a.ref, # age reference for the period interaction ci.ref = a.ref, # age reference for the cohort interaction p.ref, # period reference for the interaction c.ref, # cohort reference for the interactions npar = c(a = 6, # no. knots for main age-effect p = 6, # no. knots for period-effect c = 6, # no. knots for cohort-effect pi = 6, # no. knots for age in the period interaction ci = 6), # no. knots for age in the cohort interaction VC = TRUE, # numerical calculation of the Hessian? alpha = 0.05, # 1 minus confidence level eps = 1e-6, # convergence criterion maxit = 100, # max. no iterations quiet = TRUE ) # cut the crap \method{print}{LCa}( x, ... ) \method{summary}{LCa}( object, show.est=FALSE, ... ) \method{plot}{LCa}( x, ... ) \method{predict}{LCa}( object, newdata, alpha = 0.05, level = 1-alpha, sim = ( "vcov" \%in\% names(object) ), ... ) } \arguments{ \item{data}{ A data frame. Must have columns \code{A}(age), \code{P}(period, that is calendar time), \code{D}(no. of events) and \code{Y}(person-time, exposure). Alternatively these four quantities can be given as separate vectors: } \item{A}{ Vector of ages (midpoint of observation). } \item{P}{ Vector of period (midpoint of observation). } \item{D}{ Vector of no. of events. } \item{Y}{ Vector of person-time. Demographers would say "exposure", bewildering epidemiologists. } \item{a.ref}{ Reference age for the age-interaction term(s) \code{pi(x)} and/or \code{pi(x)}, where \code{pi(a.ref)=1} and \code{ci(a.ref)=1}. } \item{pi.ref}{ Same, but specifically for the interaction with period. } \item{ci.ref}{ Same, but specifically for the interaction with cohort. } \item{p.ref}{ Reference period for the time-interaction term \code{kp(t)} where \code{kp(p.ref)=0}. } \item{c.ref}{ Reference period for the time-interaction term \code{kp(t)} where \code{kc(c.ref)=0}. } \item{model}{ Character, either \code{"APa"} which is the classical Lee-Carter model for log-rates, other possibilities are \code{"ACa"}, \code{"APCa"}, \code{"APaC"} or \code{"APaCa"}, see details. } \item{npar}{ A (possibly named) vector or list, with either the number of knots or the actual vectors of knots for each term. If unnamed, components are taken to be in the order (a,b,t), if the model is "APaCa" in the order (a,p,c,pi,ci). If a vector, the three integers indicate the number of knots for each term; these will be placed so that there is an equal number of events (\code{D}) between each, and half as many below the first and above the last knot. If \code{npar} is a list of scalars the behavior is the same. If \code{npar} is a list of vectors, these are taken as the knots for the natural splines. See details for naming convention. } \item{VC}{ Logical. Should the variance-covariance matrix of the parameters be computed by numerical differentiation? See details. } \item{alpha}{ 1 minus the confidence level used when calculating confidence intervals for estimates in \code{LCa.fit} and for predictions by \code{predict.LCa}. } \item{eps}{ Convergence criterion for the deviance, we use the the relative difference between deviance from the two models fitted. } \item{maxit}{ Maximal number of iterations. } \item{quiet}{ Shall I shut up or talk extensively to you about iteration progression etc.? } \item{object}{An \code{LCa} object, see under "Value".} \item{show.est}{Logical. Should the estimates be printed?} \item{x}{An \code{LCa} object, see under "Value".} \item{newdata}{Prediction data frame, must have columns \code{A} and \code{P}. Any \code{Y} column is ignored, predictions are given in units of the \code{Y} supplied for the call that generated the \code{LCa} object.} \item{level}{Confidence level.} \item{sim}{Logical or numeric. If \code{TRUE}, prediction c.i.s will be based on 1000 simulations from the posterior parameters. If numeric, it will be based on that number of simulations.} \item{...}{Additional parameters passed on to the method.} } \details{ The Lee-Carter model is non-linear in age and time so does not fit in the classical glm-Poisson framework. But for fixed \code{b(x)} it is a glm, and also for fixed \code{a(x)}, \code{k(t)}. The function alternately fits the two versions until the same fit is produced (same deviance). The multiplicative age by period term could equally well have been a multiplicative age by cohort or even both. Thus the most extensive model has 5 continuous functions: \deqn{\log(\lambda(a,p)) = f(a) + b_p(a)k_p(p) + b_c(a)k_c(p-a)}{% log( lambda(a,p)) = f(a) + b_p(a)k_p(p) + b_c(a)k_c(p-a)} Each of these is fitted by a natural spline, with knots placed at the quantiles of the events along the age (a), calendar time (p) respective cohort (p-a) scales. Alternatively the knots can be specified explicitly in the argument \code{npar} as a named list, where \code{a} refers to \eqn{f(a)}{f(a)}, \code{p} refers to \eqn{k_p(p)}{k_p(p)}, \code{c} refers to \eqn{k_c(p-a)}{k_c(p-a)}, \code{pi} (\code{p}eriod code{i}nteraction) refers to \eqn{b_p(a)}{b_p(a)} and \code{ci} (\code{c}ohort \code{i}nteraction) refers to \eqn{b_c(p-a)}{b_c(p-a)}. The naming convention for the models is a capital \code{P} and/or \code{C} if the effect is in the model followed by a lower case \code{a} if there is an interaction with age. Thus there are 5 different models that can be fitted: \code{APa}, \code{ACa}, \code{APaC} \code{APCa} and \code{APaCa}. The standard errors of the parameters from the two separate model fits in the iterations are however wrong; they are conditional on a subset of the parameters having a fixed value. However, analytic calculation of the Hessian is a bit of a nightmare, so this is done numerically using the \code{hessian} function from the \code{numDeriv} package if \code{VC=TRUE}. The coefficients and the variance-covariance matrix of these are used in \code{predict.LCa} for a parametric bootstrap (that is, a simulation from a multivariate normal with mean equal to the parameter estimates and variance as the estimated variance-covariance) to get confidence intervals for the predictions if \code{sim} is \code{TRUE} --- which it is by default if they are part of the object. The \code{plot} for \code{LCa} objects merely produces between 3 and 5 panels showing each of the terms in the model. These are mainly for preliminary inspection; real reporting of the effects should use proper relative scaling of the effects.} \value{ \code{LCa.fit} returns an object of class \code{LCa} (smooth effects \code{L}ee-\code{Ca}rter model); it is a list with the following components: \item{model}{Character, either \code{APa}, \code{ACa}, \code{APaC}, \code{APCa} or \code{APaCa}, indicating the variable(s) interacting with age.} \item{ax}{3-column matrix of age-effects, c.i. from the age-time model. Row names are the unique occurring ages in the dataset. Estimates are rates.} \item{pi}{3-column matrix of age-period interaction effects, c.i. from the age model. Row names are the actually occurring ages in the dataset. Estimates are multipliers of the log-RRs in \code{kp}, centered at 1 at \code{pi.ref}.} \item{kp}{3-column matrix of period-effects, with c.i.s from the age-time model. Row names are the actually occurring times in the dataset. Estimates are rate-ratios centered at 1 at \code{p.ref}.} \item{ci}{3-column matrix of age-cohort interaction effects, c.i. from the age model. Row names are the actually occurring ages in the dataset. Estimates are multipliers of the log-RRs in \code{kc}, centered at 1 at \code{ci.ref}.} \item{kc}{3-column matrix of cohort-effects, with c.i.s from the age-time model. Row names are the actually occurring times in the dataset. Estimates are rate-ratios centered at 1 at \code{c.ref}.} \item{mod.at}{\code{glm} object with the final age-time model --- estimates the terms \code{ax}, \code{kp}, \code{kc}. Gives the same fit as the \code{mod.b} model after convergence.} \item{mod.b}{\code{glm} object with the final age model --- estimates the terms \code{pi}, \code{ci}. Gives the same fit as the \code{mod.at} model after convergence.} \item{coef}{All coefficients from both models, in the order \code{ax}, \code{kp}, \code{kc}, \code{pi}, \code{ci}. Only present if \code{LCa.fit} were called with \code{VC=TRUE} (the default).} \item{vcov}{Variance-covariance matrix of coefficients from both models, in the same order as in the \code{coef}. Only present if \code{LCa.fit} were called with \code{VC=TRUE}.} \item{knots}{List of vectors of knots used in for the age, period and cohort effects.} \item{refs}{List of reference points used for the age, period and cohort terms in the interactions.} \item{deviance}{Deviance of the model} \item{df.residual}{Residual degrees of freedom} \item{iter}{Number of iterations used to reach convergence.} \code{plot.LCa} plots the estimated effects in separate panels, using a log-scale for the baseline rates (\code{ax}) and the time-RR (\code{kt}). For the \code{APaCa} model 5 panels are plotted. \code{summary.LCa} returns (invisibly) a matrix with the parameters from the models and a column of the conditional se.s and additionally of the se.s derived from the numerically computed Hessian (if \code{LCa.fit} were called with \code{VC=TRUE}.) \code{predict.LCa} returns a matrix with one row per row in \code{newdata}. If \code{LCa.fit} were called with \code{VC=TRUE} there will be 3 columns, namely prediction (1st column) and c.i.s based on a simulation of parameters from a multivariate normal with mean \code{coef} and variance \code{vcov} using the median and \code{alpha}/2 quantiles from the \code{sim} simulations. If \code{LCa.fit} were called with \code{VC=FALSE} there will be 6 columns, namely estimates and c.i.s from age-time model (\code{mod.at}), and from the age-interaction model (\code{mod.b}), both using conditional variances, and therefore likely with too narrow confidence limits. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} This function was conceived while teaching a course on APC models at the Max Planck Institute of Demographic Research (MPIDR, \url{https://www.demogr.mpg.de/en/}) in Rostock in May 2016 (\url{http://bendixcarstensen.com/APC/MPIDR-2016/}), and finished during a week long research stay there, kindly sponsored by the MPIDR. } \seealso{ \code{\link{apc.fit}}, \code{\link{apc.LCa}}, \code{\link[demography]{lca}} } \examples{ library( Epi ) # Load the testis cancer data by Lexis triangles data( testisDK ) tc <- subset( testisDK, A>14 & A<60 ) head( tc ) # We want to see rates per 100,000 PY tc$Y <- tc$Y / 10^5 # Fit the Lee-Carter model with age-period interaction (default) LCa.tc <- LCa.fit( tc, model="ACa", a.ref=30, p.ref=1980, quiet=FALSE, eps=10e-4, maxit=50 ) LCa.tc summary( LCa.tc ) # Inspect what we got names( LCa.tc ) # show the estimated effects par( mfrow=c(1,3) ) plot( LCa.tc ) # Prediction data frame for ages 15 to 60 for two time points: nd <- data.frame( A=15:60 ) # LCa predictions p70 <- predict.LCa( LCa.tc, newdata=cbind(nd,P=1970), sim=1000 ) p90 <- predict.LCa( LCa.tc, newdata=cbind(nd,P=1990), sim=1000 ) # Inspect the curves from the parametric bootstrap (simulation): par( mfrow=c(1,1) ) head( cbind(p70,p90) ) matplot( nd$A, cbind(p70,p90), type="l", lwd=c(6,3,3), lty=c(1,3,3), col=rep( 2:3, each=3 ), log="y", ylab="Testis cancer incidence per 100,000 PY in 1970 resp. 1990", xlab="Age" ) } \keyword{models} \keyword{regression} Epi/man/plot.Lexis.Rd0000644000175100001440000001160513751040403014110 0ustar hornikusers\name{plot.Lexis} \alias{plot.Lexis} \alias{points.Lexis} \alias{lines.Lexis} \alias{PY.ann} \alias{PY.ann.Lexis} \title{Lexis diagrams} \description{ The follow-up histories represented by a Lexis object can be plotted using one or two dimensions. The two dimensional plot is a Lexis diagram showing follow-up time simultaneously on two time scales. } \usage{ \method{plot}{Lexis}(x=Lexis( entry=list(Date=1900,Age=0), exit=list(Age=0) ), time.scale = NULL, type="l", breaks="lightgray", ...) \method{points}{Lexis}(x, time.scale = options()[["Lexis.time.scale"]] , ...) \method{lines}{Lexis}(x, time.scale = options()[["Lexis.time.scale"]], ...) \method{PY.ann}{Lexis}(x, time.scale = options()[["Lexis.time.scale"]], digits=1, ...) } \arguments{ \item{x}{An object of class \code{Lexis}. The default is a bogus \code{Lexis} object, so that \code{plot.Lexis} can be called without the first argument and still produce a(n empty) Lexis diagram. Unless arguments \code{xlim} and \code{ylim} are given in this case the diagram is looking pretty daft.} \item{time.scale}{A vector of length 1 or 2 giving the time scales to be plotted either by name or numerical order} \item{type}{Character indication what to draw: "n" nothing (just set up the diagram), "l" - liefelines, "p" - endpoints of follow-up, "b" - both lifelines and endpoints.} \item{breaks}{a string giving the colour of grid lines to be drawn when plotting a split Lexis object. Grid lines can be suppressed by supplying the value \code{NULL} to the \code{breaks} argument} \item{digits}{Numerical. How many digits after the demimal points should be when plotting the person-years.} \item{\dots}{Further graphical parameters to be passed to the plotting methods. Grids can be drawn (behind the life lines) using the following parameters in \code{plot}: \itemize{ \item \code{grid} If logical, a background grid is set up using the axis ticks. If a list, the first component is used as positions for the vertical lines and the last as positions for the horizontal. If a nunerical vector, grids on both axes are set up using the distance between the numbers. \item \code{col.grid="lightgray"} Color of the background grid. \item \code{lty.grid=2} Line type for the grid. \item \code{coh.grid=FALSE} Should a 45 degree grid be plotted?} } } \details{ The plot method for \code{Lexis} objects traces ``life lines'' from the start to the end of follow-up. The \code{points} method plots points at the end of the life lines. If \code{time.scale} is of length 1, the life lines are drawn horizontally, with the time scale on the X axis and the id value on the Y axis. If \code{time.scale} is of length 2, a Lexis diagram is produced, with diagonal life lines plotted against both time scales simultaneously. If \code{lex} has been split along one of the time axes by a call to \code{splitLexis}, then vertical or horizontal grid lines are plotted (on top of the life lines) at the break points. \code{PY.ann} writes the length of each (segment of) life line at the middle of the line. Not advisable to use with large cohorts. Another example is in the example file for \code{\link{occup}}. } \author{Martyn Plummer} \examples{ # A small bogus cohort xcoh <- structure( list( id = c("A", "B", "C"), birth = c("14/07/1952", "01/04/1957", "10/06/1987"), entry = c("04/08/1965", "08/09/1972", "23/12/1991"), exit = c("27/06/1997", "23/05/1995", "24/07/1998"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) # Convert the character dates into numerical variables (fractional years) xcoh$bt <- cal.yr( xcoh$birth, format="\%d/\%m/\%Y" ) xcoh$en <- cal.yr( xcoh$entry, format="\%d/\%m/\%Y" ) xcoh$ex <- cal.yr( xcoh$exit , format="\%d/\%m/\%Y" ) # See how it looks xcoh # Define as Lexis object with timescales calendar time and age Lcoh <- Lexis( entry = list( per=en ), exit = list( per=ex, age=ex-bt ), exit.status = fail, data = xcoh ) # Default plot of follow-up plot( Lcoh ) # Show follow-up time PY.ann( Lcoh ) # Show exit status plot( Lcoh, type="b" ) # Same but failures only plot( Lcoh, type="b", pch=c(NA,16)[Lcoh$fail+1] ) # With a grid and deaths as endpoints plot( Lcoh, grid=0:10*10, col="black" ) points( Lcoh, pch=c(NA,16)[Lcoh$lex.Xst+1] ) # With a lot of bells and whistles: plot( Lcoh, grid=0:20*5, col="black", xaxs="i", yaxs="i", xlim=c(1960,2010), ylim=c(0,50), lwd=3, las=1 ) points( Lcoh, pch=c(NA,16)[Lcoh$lex.Xst+1], col="red", cex=1.5 ) } \seealso{\code{\link{Lexis}}, \code{\link{splitLexis}}} \keyword{hplot} \keyword{aplot} Epi/man/mortDK.Rd0000644000175100001440000000301213751040403013240 0ustar hornikusers\name{mortDK} \alias{mortDK} \docType{data} \title{Population mortality rates for Denmark in 1-year age-classes.} \description{ The \code{mortDK} data frame has 1820 rows and 21 columns. } \format{ This data frame contains the following columns: \tabular{rl}{ \code{age}: \tab Age class, 0--89, 90:90+. \cr \code{per}: \tab Calendar period, 38: 1938--42, 43: 1943--47, ..., 88:1988-92. \cr \code{sex}: \tab Sex, 1: male, 2: female. \cr \code{risk}: \tab Number of person-years in the Danish population. \cr \code{dt}: \tab Number of deaths. \cr \code{rt}: \tab Overall mortality rate in cases per 1000 person-years, i.e. \code{rt=1000*dt/risk} \cr \tab Cause-specific mortality rates in cases per 1000 person-years: \cr \code{r1}: \tab Infections \cr \code{r2}: \tab Cancer. \cr \code{r3}: \tab Tumors, benign, unspecific nature. \cr \code{r4}: \tab Endocrine, metabolic. \cr \code{r5}: \tab Blood. \cr \code{r6}: \tab Nervous system, psychiatric. \cr \code{r7}: \tab Cerebrovascular. \cr \code{r8}: \tab Cardiac. \cr \code{r9}: \tab Respiratory diseases, excl. cancer. \cr \code{r10}: \tab Liver, excl. cancer. \cr \code{r11}: \tab Digestive, other. \cr \code{r12}: \tab Genitourinary. \cr \code{r13}: \tab Ill-defined symptoms. \cr \code{r14}: \tab All other, natural. \cr \code{r15}: \tab Violent. \cr } } \source{ Statistics Denmark, National board of health provided original data. Michael Andersson grouped the causes of death. } \examples{ data(mortDK) } \seealso{\code{\link{thoro}}, \code{\link{gmortDK}}} \keyword{datasets} Epi/man/M.dk.Rd0000644000175100001440000000315113751040403012635 0ustar hornikusers\name{M.dk} \alias{M.dk} \docType{data} \title{Mortality in Denmark 1974 ff.} \description{ Mortality in one-year classes of age (0-98,99+) and period (1974 ff.) in Denmark. } \usage{data(M.dk)} \format{ A data frame with 6400 observations on the following 6 variables. \describe{ \item{\code{A}}{Age-class, 0-98, 99:99+} \item{\code{sex}}{Sex. 1:males, 2:females} \item{\code{P}}{Period (year) of death} \item{\code{D}}{Number of deaths} \item{\code{Y}}{Number of person-years} \item{\code{rate}}{Mortality rate per 1000 person-years} } } \details{ Deaths in ages over 100 are in the class labelled 99. Risk time is computed by tabulation of the risk time in \code{\link{Y.dk}}, except for the class 99+ where the average of the population size in ages 99+ at the first and last date of the year is used.} \source{ \url{http://www.statistikbanken.dk/statbank5a/SelectTable/omrade0.asp?SubjectCode=02&PLanguage=1&ShowNews=OFF} } \examples{ data(M.dk) str(M.dk) zz <- xtabs( rate ~ sex+A+P, data=M.dk ) zz[zz==0] <- NA # 0s makes log-scale plots crash par(mfrow=c(1,2), mar=c(0,0,0,0), oma=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) for( i in 1:2 ) { matplot( dimnames(zz)[[2]], zz[i,,], lty=1, lwd=1, col=rev(heat.colors(37)), log="y", type="l", ylim=range(zz,na.rm=TRUE), ylab="", xlab="", yaxt="n" ) text( 0, max(zz,na.rm=TRUE), c("M","F")[i], font=2, adj=0:1, cex=2, col="gray" ) if( i==1 ) axis( side=2, las=1 ) } mtext( side=1, "Age", line=2, outer=TRUE ) mtext( side=2, "Mortality rate", line=2, outer=TRUE ) } \keyword{datasets} Epi/man/plot.apc.Rd0000644000175100001440000000352413751040403013570 0ustar hornikusers\name{plot.apc} \alias{plot.apc} \alias{apc.plot} \title{Plot the estimates from a fitted Age-Period-Cohort model} \description{ This function plots the estimates created by \code{\link{apc.fit}} in a single graph. It just calls \code{\link{apc.frame}} after computing some sensible values of the parameters, and subsequently plots the estimates using \code{\link{apc.lines}}. } \usage{ \method{plot}{apc}( x, r.txt="Rate", ...) apc.plot( x, r.txt="Rate", ...) } \arguments{ \item{x}{ An object of class \code{apc}. } \item{r.txt}{ The text to put on the vertical rate axis. } \item{\dots}{ Additional arguments passed on to \code{\link{apc.lines}}. } } \value{ A numerical vector of length two, with names \code{c("cp.offset","RR.fac")}. The first is the offset for the cohort period-axis, the second the multiplication factor for the rate-ratio scale. Therefore, if you want to plot at \code{(x,y)} in the right panel, use \code{(x-res["cp.offset"],y/res["RR.fac"])} \code{=(x-res[1],y/res[2])}. This vector should be supplied for the parameter \code{frame.par} to \code{\link{apc.lines}} if more sets of estimates is plotted in the same graph, however see \code{\link{cp.points}}. } \details{\code{plot.apc} is just a wrapper for \code{apc.plot}.} \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{apc.lines}}, \code{\link{lines.apc}}, \code{\link{apc.frame}}, \code{\link{apc.fit}} } \examples{ data( lungDK ) apc1 <- apc.fit( transform( lungDK, A = Ax, P = Px, Y = Y/10^5 ), ref.c = 1920 ) fp <- apc.plot( apc1 ) apc.lines( apc1, frame.par=fp, drift=1.01, col="red" ) for( i in 1:11 ) apc.lines( apc1, frame.par=fp, drift=1+(i-6)/100, col=rainbow(12)[i] ) } \keyword{hplot} Epi/man/summary.Lexis.Rd0000644000175100001440000000533114221034557014634 0ustar hornikusers\name{summary.Lexis} \alias{summary.Lexis} \alias{print.summary.Lexis} \title{ Summarize transitions and risk time from a Lexis object } \description{ A two-way table of records and transitions classified by states (\code{lex.Cst} and \code{lex.Xst}), as well the risk time in each state. } \usage{ \method{summary}{Lexis}(object, simplify = TRUE, scale = 1, by = NULL, Rates = FALSE, timeScales = FALSE, ...) \method{print}{summary.Lexis}(x, ..., digits = 2) } \arguments{ \item{object}{A Lexis object.} \item{simplify}{Should rows with 0 follow-up time be dropped?} \item{scale}{Scaling factor for the rates. The calculated rates are multiplied by this number.} \item{by}{Character vector of name(s) of variable(s) in \code{object}. Used to give a separate summaries for subsets of \code{object}. If longer than than 1, the interaction between that variables is used to stratify the summary. It is also possible to supply a vector of length \code{nrow(object)}, and the distinct values of this will be used to stratify the summary.} \item{Rates}{Should a component with transition rates be returned (and printed) too?} \item{timeScales}{Should the names of the timescales and the indication of since which entry also be given?} \item{x}{A \code{Lexis} or \code{summary.Lexis} object.} \item{digits}{Number of digits after the decimal separator used when printing the summary.} \item{...}{Ignored.} } \value{ An object of class \code{summary.Lexis}, a list with two components, \code{Transitions} and \code{Rates}, each one a matrix with rows classified by states where persons spent time, and columns classified by states to which persons transit. The \code{Transitions} contains number of transitions and has 4 extra columns with number of records, total number of events, total risk time and number of person contributing attached. The \code{Rates} contains the transitions rates. If the argument \code{Rates} is FALSE (the default), then only the first component of the list is returned. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \examples{ data( nickel ) # Lung cancer deaths and other deaths are coded 1 and 2 nic <- Lexis( data = nickel, entry = list(age = agein), exit = list(age = ageout,cal = ageout+dob,tfh = ageout-age1st), exit.status = factor( (icd > 0) + (icd \%in\% c(162,163)), labels = c("Alive","Other","Lung") ) ) str( nic ) head( nic ) summary( nic ) # More detailed summary, by exposure level summary( nic, by = nic$exposure>5, Rates = TRUE, scale = 100 ) } \keyword{survival} Epi/man/ci.lin.Rd0000644000175100001440000003576114240653624013245 0ustar hornikusers\name{ci.lin} \alias{ci.lin} \alias{ci.mat} \alias{ci.exp} \alias{ci.pred} \alias{ci.ratio} \alias{Wald} \title{ Compute linear functions of parameters with standard errors and confidence limits, optionally transforming to a different scale. } \description{ For a given model object the function computes a linear function of the parameters and the corresponding standard errors, p-values and confidence intervals. } \usage{ ci.lin( obj, ctr.mat = NULL, subset = NULL, subint = NULL, xvars = NULL, diffs = FALSE, fnam = !diffs, vcov = FALSE, alpha = 0.05, df = Inf, Exp = FALSE, sample = FALSE ) ci.exp( ..., Exp = TRUE, pval = FALSE ) Wald( obj, H0=0, ... ) ci.mat( alpha = 0.05, df = Inf ) ci.pred( obj, newdata, Exp = NULL, alpha = 0.05 ) ci.ratio( r1, r2, se1 = NULL, se2 = NULL, log.tr = !is.null(se1) & !is.null(se2), alpha = 0.05, pval = FALSE ) } \arguments{ \item{obj}{A model object (in general of class \code{glm}, but for \code{ci.lin} and \code{ci.exp} it may also be of class \code{lm}, \code{coxph}, \code{survreg}, \code{clogistic}, \code{cch}, \code{lme}, \code{mer}, \code{lmerMod}, \code{gls}, \code{nls}, \code{gnlm}, \code{MIresult}, \code{mipo}, \code{polr}, or \code{rq}). } \item{ctr.mat}{Matrix, data frame or list (of two or four data frames). If \code{ctr.mat} is a matrix, it should be a contrast matrix to be multiplied to the parameter vector, i.e. the desired linear function of the parameters. If it is a data frame it should have columns corresponding to a prediction frame, see details. If it is a list, it must contain two or four data frames that are (possibly partial) prediction frames for \code{obj}, see argument \code{xvars} and details.} \item{xvars}{Character vector. If quantitative variables in the model are omitted from data frames supplied in a list to \code{ctr.mat}, they should be listed here. Omitted factors need not be mentioned here.} \item{subset}{The subset of the parameters to be used. If given as a character vector, the elements are in turn matched against the parameter names (using \code{grep}) to find the subset. Repeat parameters may result from using a character vector. This is considered a facility.} \item{subint}{Character. \code{sub}set selection, but where each element of the character vector is used to select a subset of parameters and only the \code{int}ersection of these is returned.} \item{diffs}{If TRUE, all differences between parameters in the subset are computed, and the \code{subset} argumnt is required. The argument \code{ctr.mat} is ignored. If \code{obj} inherits from \code{lm}, and \code{subset} is given as a string \code{subset} is used to search among the factors in the model and differences of all factor levels for the first match are shown. If \code{subset} does not match any of the factors in the model, all pairwise differences between parameters matching are returned.} \item{fnam}{Should the common part of the parameter names be included with the annotation of contrasts? Ignored if \code{diffs==T}. If a string is supplied this will be prefixed to the labels.} \item{vcov}{Should the covariance matrix of the set of parameters be returned? If this is set, \code{Exp} is ignored. See details.} \item{alpha}{Significance level for the confidence intervals.} \item{df}{Integer. Number of degrees of freedom in the t-distribution used to compute the quantiles used to construct the confidence intervals.} \item{Exp}{For \code{ci.lin}, if \code{TRUE} columns 5:6 are replaced with exp( columns 1,5,6 ). For \code{ci.exp}, if \code{FALSE}, the untransformed parameters are returned. For \code{ci.pred} it indicates whether the predictions should be exponentiated - the default (\code{Exp=NULL}) is to make a prediction with a Wald CI on the scale of the linear predictor and back-transform it by the inverse link function; if \code{FALSE}, the prediction on the link scale is returned.} \item{sample}{Logical or numerical. If \code{TRUE} or numerical a sample of size \code{as.numeric(sample)} is drawn from the multivariate normal with mean equal to the (\code{subset} defined) coefficients and variance equal to the estimated variance-covariance of these. These are then transformed by \code{ctr.mat} and returned.} \item{pval}{Logical. Should a column of P-values be included with the estimates and confidence intervals output by \code{ci.exp}.} \item{H0}{Numeric. The null values for the selected/transformed parameters to be tested by a Wald test. Must have the same length as the selected parameter vector.} \item{\ldots}{Parameters passed on to \code{ci.lin}.} \item{newdata}{Data frame of covariates where prediction is made.} \item{r1,r2}{Estimates of rates in two independent groups, with confidence limits. Can be either 3-column matrices or data frames with estimates and confindece intervals or 2 two column structures with confidence limits. Only the confidence limits} \item{se1,se2}{Standard errors of log-rates in the two groups. If given, it is assumed that \code{r1} and \code{r2} represent log-rates.} \item{log.tr}{Logical, if true, it is assumed that \code{r1} and \code{r2} represent log-rates with confidence intervals.} } \value{ \code{ci.lin} returns a matrix with number of rows and row names as \code{ctr.mat}. The columns are Estimate, Std.Err, z, P, 2.5\% and 97.5\% (or according to the value of \code{alpha}). If \code{vcov=TRUE} a list of length 2 with components \code{coef} (a vector), the desired functional of the parameters and \code{vcov} (a square matrix), the variance covariance matrix of this, is returned but not printed. If \code{Exp==TRUE} the confidence intervals for the parameters are replaced with three columns: exp(estimate,c.i.). \code{ci.exp} returns only the exponentiated parameter estimates with confidence intervals. It is merely a wrapper for \code{ci.lin}, fishing out the last 3 columns from \code{ci.lin(...,Exp=TRUE)}. If you just want the estimates and confidence limits, but not exponentiated, use \code{ci.exp(...,Exp=FALSE)}. If \code{ctr.mat} is a data frame, the model matrix corresponding to this is constructed and supplied. This is only supported for objects of class \code{lm}, \code{glm}, \code{gam} and \code{coxph}. So the default behaviour will be to produce the same as \code{ci.pred}, apparently superfluous. The purpose of this is to allow the use of the arguments \code{vcov} that produces the variance-covariance matrix of the predictions, and \code{sample} that produces a sample of predictions using sampling from the multivariate normal with mean equal to parameters and variance equal to the hessian. If \code{ctr.mat} is a list of two data frames, the difference of the predictions from using the first versus the last (on the linear predictor scale) as newdata arguments to \code{predict.glm} is computed. Columns that would be identical in the two data frames can be omitted (see below), but names of numerical variables omitted must be supplied in a character vector \code{xvars}. Factors omitted need not be named. If categorical variables are entered in the model as character and not factors, the model will work, but the calculation of the differences in predictions may crash. If the second data frame has only one row, this is replicated to match the number of rows in the first. This facility is primarily aimed at teasing out RRs that are non-linear functions of a quantitative variable without setting up contrast matrices using the same code as in the model. Note however if splines are used with computed knots stored in a vector such as \code{Ns(x,knots=kk)} then the \code{kk} must be available in the (global) environment; it will not be found inside the model object. In practical terms it means that if you save model objects for later prediction you should save the knots used in the spline setups too. If \code{ctr.mat} is a list of four data frames, the difference of the difference of predictions from using the first and second versus difference of predictions from using the third and fourth is computed. Simply \code{(pr1-pr2) - (pr3-pr4)} with obvious notation. Useful to derive esoteric interaction effects. Finally, only arguments \code{Exp}, \code{vcov}, \code{alpha} and \code{sample} from \code{ci.lin} are honored when \code{ctr.mat} is a data frame or a list of two data frames. You can leave out variables (columns) from the two data frames that would be identical, basically variables not relevant for the calculation of the contrast. In many cases \code{ci.lin} (really \code{Epi:::ci.dfr}) can figure out the names of the omitted columns, but occasionally you will have to supply the names of the omitted variables in the \code{xvars} argument. Factors omitted need not be listed in \code{xvars}, although no harm is done doing so. \code{Wald} computes a Wald test for a subset of (possibly linear combinations of) parameters being equal to the vector of null values as given by \code{H0}. The selection of the subset of parameters is the same as for \code{ci.lin}. Using the \code{ctr.mat} argument makes it possible to do a Wald test for equality of parameters. \code{Wald} returns a named numerical vector of length 3, with names \code{Chisq}, \code{d.f.} and \code{P}. \code{ci.mat} returns a 2 by 3 matrix with rows \code{c(1,0,0)} and \code{c(0,-1,1)*1.96}, devised to post-multiply to a p by 2 matrix with columns of estimates and standard errors, so as to produce a p by 3 matrix of estimates and confidence limits. Used internally in \code{ci.lin} and \code{ci.cum}. The 1.96 is replaced by the appropriate quantile from the normal or t-distribution when arguments \code{alpha} and/or \code{df} are given. \code{ci.pred} returns a 3-column matrix with estimates and upper and lower confidence intervals as columns. This is just a convenience wrapper for \code{predict.glm(obj,se.fit=TRUE)} which returns a rather unhandy structure. The prediction with c.i. is made in the \code{link} scale, and by default transformed by the inverse link, since the most common use for this is for multiplicative Poisson or binomial models with either log or logit link. \code{ci.ratio} returns the rate-ratio of two independent set of rates given with confidence intervals or s.e.s. If \code{se1} and \code{se2} are given and \code{log.tr=FALSE} it is assumed that \code{r1} and \code{r2} are rates and \code{se1} and \code{se2} are standard errors of the log-rates. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} & Michael Hills } \seealso{See also \code{\link{ci.cum}} for a function computing cumulative sums of (functions of) parameter estimates, and \code{\link{ci.surv}} for a function computing confidence intervals for survival functions based on smoothed rates. The example code for \code{\link{matshade}} has an application of predicting a rate-ratio using a list of two prediction frame in the \code{ctr.mat} argument.} \examples{ # Bogus data: f <- factor( sample( letters[1:5], 200, replace=TRUE ) ) g <- factor( sample( letters[1:3], 200, replace=TRUE ) ) x <- rnorm( 200 ) y <- 7 + as.integer( f ) * 3 + 2 * x + 1.7 * rnorm( 200 ) # Fit a simple model: mm <- lm( y ~ x + f + g ) ci.lin( mm ) ci.lin( mm, subset=3:6, diff=TRUE, fnam=FALSE ) ci.lin( mm, subset=3:6, diff=TRUE, fnam=TRUE ) ci.lin( mm, subset="f", diff=TRUE, fnam="f levels:" ) print( ci.lin( mm, subset="g", diff=TRUE, fnam="gee!:", vcov=TRUE ) ) # Use character defined subset to get ALL contrasts: ci.lin( mm, subset="f", diff=TRUE ) # Suppose the x-effect differs across levels of g: mi <- update( mm, . ~ . + g:x ) ci.lin( mi ) # RR a vs. b by x: nda <- data.frame( x=-3:3, g="a", f="b" ) ndb <- data.frame( x=-3:3, g="b", f="b" ) # ci.lin( mi, list(nda,ndb) ) # Same result if f column is omitted because "f" columns are identical ci.lin( mi, list(nda[,-3],ndb[,-3]) ) # However, crashes if knots in spline is supplied, and non-factor omitted xk <- -1:1 xi <- c(-0.5,0.5) ww <- rnorm(200) mi <- update( mm, . ~ . -x + ww + Ns(x,knots=xk) + g:Ns(x,knots=xi) ) # Will crash try( cbind( nda$x, ci.lin( mi, list(nda,ndb) ) ) ) # Must specify num vars (not factors) omitted from nda, ndb cbind( nda$x, ci.lin( mi, list(nda,ndb), xvars="ww" ) ) # A Wald test of whether the g-parameters are 0 Wald( mm, subset="g" ) # Wald test of whether the three first f-parameters are equal: ( CM <- rbind( c(1,-1,0,0), c(1,0,-1,0)) ) Wald( mm, subset="f", ctr.mat=CM ) # or alternatively ( CM <- rbind( c(1,-1,0,0), c(0,1,-1,0)) ) Wald( mm, subset="f", ctr.mat=CM ) # Confidence intervals for ratio of rates # Rates and ci supplied, but only the range (lower and upper ci) is used ci.ratio( cbind(10,8,12.5), cbind(5,4,6.25) ) ci.ratio( cbind(8,12.5), cbind(4,6.25) ) # Beware of the offset when making predictions with ci.pred and ci.exp \dontrun{ library( mgcv ) data( mortDK ) m.arg <- glm( dt ~ age , offset=log(risk) , family=poisson, data=mortDK ) m.form <- glm( dt ~ age + offset(log(risk)), family=poisson, data=mortDK ) a.arg <- gam( dt ~ age , offset=log(risk) , family=poisson, data=mortDK ) a.form <- gam( dt ~ age + offset(log(risk)), family=poisson, data=mortDK ) nd <- data.frame( age=60:65, risk=100 ) round( ci.pred( m.arg , nd ), 4 ) round( ci.pred( m.form, nd ), 4 ) round( ci.exp ( m.arg , nd ), 4 ) round( ci.exp ( m.form, nd ), 4 ) round( ci.pred( a.arg , nd ), 4 ) round( ci.pred( a.form, nd ), 4 ) round( ci.exp ( a.arg , nd ), 4 ) round( ci.exp ( a.form, nd ), 4 ) nd <- data.frame( age=60:65 ) try( ci.pred( m.arg , nd ) ) try( ci.pred( m.form, nd ) ) try( ci.exp ( m.arg , nd ) ) try( ci.exp ( m.form, nd ) ) try( ci.pred( a.arg , nd ) ) try( ci.pred( a.form, nd ) ) try( ci.exp ( a.arg , nd ) ) try( ci.exp ( a.form, nd ) ) } # The offset may be given as an argument (offset=log(risk)) # or as a term (+offset(log)), and depending on whether we are using a # glm or a gam Poisson model and whether we use ci.pred or ci.exp to # predict rates the offset is either used or ignored and either # required or not; the state of affairs can be summarized as: # # offset # ------------------------------------- # usage required? # ------------------ --------------- # function model argument term argument term # --------------------------------------------------------- # ci.pred glm used used yes yes # gam ignored used no yes # # ci.exp glm ignored ignored no yes # gam ignored ignored no yes # --------------------------------------------------------- } \keyword{models} \keyword{regression} Epi/man/pctab.Rd0000644000175100001440000000222413751040403013135 0ustar hornikusers\name{pctab} \alias{pctab} \title{Create percentages in a table} \description{ Computes percentages and a margin of totals along a given margin of a table. } \usage{ pctab(TT, margin = length(dim(TT)), dec=1) } \arguments{ \item{TT}{A table or array object} \item{margin}{Which margin should be the the total?} \item{dec}{How many decimals should be printed? If 0 or \code{FALSE} nothing is printed} } \value{ A table of percentages, where all dimensions except the one specified \code{margin} has two extra levels named "All" (where all entries are 100) and "N". The function prints the table with \code{dec} decimals. } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com}. } \seealso{ \code{\link{addmargins}} } \examples{ Aye <- sample( c("Yes","Si","Oui"), 177, replace=TRUE ) Bee <- sample( c("Hum","Buzz"), 177, replace=TRUE ) Sea <- sample( c("White","Black","Red","Dead"), 177, replace=TRUE ) A <- table( Aye, Bee, Sea ) A ftable( pctab( A ) ) ftable( pctab( addmargins( A, 1 ), 3 ) ) round( ftable( pctab( addmargins( A, 1 ), 3 ), row.vars=3 ), 1) } \keyword{ manip } \keyword{ methods } \keyword{ array } Epi/man/DMepi.Rd0000644000175100001440000000556213751040403013052 0ustar hornikusers\name{DMepi} \alias{DMepi} \docType{data} \title{Epidemiological rates for diabetes in Denmark 1996--2015} \description{Register based counts and person-years for incidence of diabetes and mortality with and without diabetes. } \usage{data("DMepi")} \format{ A data frame with 4200 observations on the following 8 variables. \describe{ \item{\code{sex}}{a factor with levels \code{M}, \code{F}} \item{\code{A}}{Age class, 0--99} \item{\code{P}}{Calendar year, 1996--2016} \item{\code{X}}{Number of new diagnoses of diabetes among persons without diabetes} \item{\code{D.nD}}{Number of deaths among persons without diabetes} \item{\code{Y.nD}}{Person-years among persons without diabetes} \item{\code{D.DM}}{Number of deaths among persons with diabetes} \item{\code{Y.DM}}{Person-years among persons with diabetes} } } \details{Based on registers of the Danish population. Only included for illustrative purposes. Cannot be used as scientifically validated data, since small numbers are randomly permuted between units. } \examples{ data(DMepi) # Total deaths and person-years in the Danish population ftable( addmargins( xtabs( cbind( Deaths=D.nD+D.DM, PYrs=Y.nD+Y.DM ) ~ P + sex, data=DMepi ), 2 ), row.vars = 1 ) # Deaths and person-years in the population of diabetes patients round( ftable( addmargins( xtabs( cbind( Deaths=D.DM, PYrs=Y.DM ) ~ P + sex, data=DMepi ), 2 ), row.vars = 1 ) ) # Model for age-specific incidence rates; inc <- glm( X ~ sex + Ns( A, knots=seq(30,80,10) ) + P, offset = log(Y.nD), family = poisson, data = DMepi ) # Predict for men and women separately in 2010: ndm <- data.frame( sex="M", A=20:90, P=2010, Y.nD=1000 ) ndf <- data.frame( sex="F", A=20:90, P=2010, Y.nD=1000 ) prM <- ci.pred( inc, ndm ) prF <- ci.pred( inc, ndf ) matplot( ndm$A, cbind(prM,prF), type="l", lty=1, lwd=c(3,1,1), col=rep(c("blue","red"),each=3), log="y", xlab="Age", ylab="DM incidence per 1000 PY" ) # This is a proportional hazards model - add sex-age interaction int <- update( inc, . ~ . + sex:Ns( A, knots=seq(30,80,10) ) ) prM <- ci.pred( int, ndm ) prF <- ci.pred( int, ndf ) matplot( ndm$A, cbind(prM,prF), type="l", lty=1, lwd=c(3,1,1), col=rep(c("blue","red"),each=3), log="y", xlab="Age", ylab="DM incidence per 1000 PY" ) # The rate-ratio is teased out using the ci.exp: RRp <- ci.exp( inc, list(ndm,ndf) ) RRi <- ci.exp( int, list(ndm,ndf) ) # and added to the plot matlines( ndm$A, cbind(RRi,RRp), type="l", lty=1, lwd=c(3,1,1), col=gray(rep(c(0.3,0.7),each=3)) ) abline(h=1) axis(side=4) mtext( "Male/Female IRR", side=4, line=2 ) } \keyword{datasets} Epi/DESCRIPTION0000644000175100001440000000273214421670514012523 0ustar hornikusersPackage: Epi Version: 2.47.1 Date: 2022-06-25 Title: Statistical Analysis in Epidemiology Authors@R: c(person("Bendix", "Carstensen", role = c("aut", "cre"), email = "b@bxc.dk"), person("Martyn", "Plummer", role = "aut", email = "Martyn.Plummer@warwick.ac.uk"), person("Esa", "Laara", role = "ctb"), person("Michael", "Hills", role = "ctb")) Depends: R (>= 3.5.0), utils Imports: cmprsk, etm, splines, MASS, survival, plyr, dplyr, Matrix, numDeriv, data.table, zoo, mgcv, magrittr Suggests: mstate, nlme, lme4, demography, popEpi, tidyr Description: Functions for demographic and epidemiological analysis in the Lexis diagram, i.e. register and cohort follow-up data. In particular representation, manipulation, rate estimation and simulation for multistate data - the Lexis suite of functions, which includes interfaces to 'mstate', 'etm' and 'cmprsk' packages. Contains functions for Age-Period-Cohort and Lee-Carter modeling and a function for interval censored data and some useful functions for tabulation and plotting, as well as a number of epidemiological data sets. License: GPL-2 URL: http://bendixcarstensen.com/Epi/ NeedsCompilation: yes Packaged: 2023-04-25 05:45:38 UTC; hornik Author: Bendix Carstensen [aut, cre], Martyn Plummer [aut], Esa Laara [ctb], Michael Hills [ctb] Maintainer: Bendix Carstensen Repository: CRAN Date/Publication: 2023-04-25 06:21:00 UTC Epi/build/0000755000175100001440000000000014421664377012122 5ustar hornikusersEpi/build/vignette.rds0000644000175100001440000000067514421664377014471 0ustar hornikusersMO1|DT 9!…r!"Df= Yr#;KkfeY'uuPF!c 07> M_R?% G fshA(з;˙^LM}g uޘFP1JtF`)䯖 YV Hi6ҏOK}Ph)u󣮀3Ǡ>质UJDįm> CL"9d$ϑDAjp>}Xek벵-[ er?/5=A`'5ڐS﹗4 5={vRREOƏ ip3=ӝ)ᥦr^цv$%gV{Gd69J[¿[RtEpi/src/0000755000175100001440000000000014421664402011577 5ustar hornikusersEpi/src/init.c0000644000175100001440000000066413052766107012720 0ustar hornikusers#include #include #include // for NULL #include extern SEXP clogit(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP); static const R_CallMethodDef CallEntries[] = { {"C_clogit", (DL_FUNC) &clogit, 7}, {NULL, NULL, 0} }; void R_init_Epi(DllInfo *dll) { R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); R_useDynamicSymbols(dll, FALSE); R_forceSymbols(dll, TRUE); } Epi/src/cholesky2.c0000644000175100001440000000317713052766107013662 0ustar hornikusers/* $Id: cholesky2.c 11357 2009-09-04 15:22:46Z therneau $ ** ** subroutine to do Cholesky decompostion on a matrix: C = FDF' ** where F is lower triangular with 1's on the diagonal, and D is diagonal ** ** arguments are: ** n the size of the matrix to be factored ** **matrix a ragged array containing an n by n submatrix to be factored ** toler the threshold value for detecting "singularity" ** ** The factorization is returned in the lower triangle, D occupies the ** diagonal and the upper triangle is left undisturbed. ** The lower triangle need not be filled in at the start. ** ** Return value: the rank of the matrix (non-negative definite), or -rank ** it not SPD or NND ** ** If a column is deemed to be redundant, then that diagonal is set to zero. ** ** Terry Therneau * * Copied from the survival package by Terry Therneau, version 2.35-7 */ #include int attribute_hidden cholesky2(double **matrix, int n, double toler) { double temp; int i,j,k; double eps, pivot; int rank; int nonneg; nonneg=1; eps =0; for (i=0; i eps) eps = matrix[i][i]; for (j=(i+1); j void attribute_hidden chsolve2(double **matrix, int n, double *y) { register int i,j; register double temp; /* ** solve Fb =y */ for (i=0; i=0; i--) { if (matrix[i][i]==0) y[i] =0; else { temp = y[i]/matrix[i][i]; for (j= i+1; j #include #include /* Utility functions by Terry Therneau from the survival package These are specially adapted to work with information matrices that are not of full rank. */ extern int cholesky2(double **matrix, int m, double toler); extern void chsolve2(double **matrix, int m, double *y); extern void chinv2(double **matrix, int m); /* Efficient calculation of the conditional log likelihood, along with the score and information matrix, for a single stratum. Input parameters: X T x m matrix of covariate values y T-vector that indicates if an individual is a case (y[t]==1) or control (y[t]==0) T Number of individuals in the stratum m Number of covariates offset Vector of offsets for the linear predictor beta m-vector of log odds ratio parameters Output parameters: loglik The conditional log-likelihood (scalar) score The score function (m-vector) info The information matrix (m x m matrix) The contribution from this stratum will be *added* to the output parameters, so they must be correctly initialized before calling cloglik. */ static void cloglik_stratum(double const *X, int const *y, double const *offset, int T, int m, double const *beta, double *loglik, double *score, double *info) { double *f, *g, *h, *xt, *xmean; int i,j,k,t; int K = 0, Kp; int iscase = 1; double sign = 1; double lpmax; /* Calculate number of cases */ for (t = 0; t < T; ++t) { if (y[t] != 0 && y[t] != 1) { error("Invalid outcome in conditional log likelihood"); } K += y[t]; } if (K==0 || K==T) { return; /* Non-informative stratum */ } /* If there are more cases than controls then define cases to be those with y[t] == 0, and reverse the sign of the covariate values. */ if (2 * K > T ) { K = T - K; iscase = 0; sign = -1; } /* Calculate the maximum value of the linear predictor (lpmax) within the stratum. This is subtracted from the linear predictor when taking exponentials for numerical stability. Note that we must correct the log-likelihood for this, but not the score or information matrix. */ lpmax = sign * offset[0]; for (i = 0; i < m; ++i) { lpmax += sign * beta[i] * X[T*i]; } for (t = 1; t < T; ++t) { double lp = sign * offset[t]; for (i = 0; i < m; ++i) { lp += sign * beta[i] * X[t + T*i]; } if (lp > lpmax) { lpmax = lp; } } /* Calculate the mean value of the covariates within the stratum. This is used to improve the numerical stability of the score and information matrix. */ xmean = Calloc(m, double); for (i = 0; i < m; ++i) { xmean[i] = 0; for (t = 0; t < T; ++t) { xmean[i] += sign * X[t + T*i]; } xmean[i] /= T; } /* Contribution from cases */ for (t = 0; t < T; ++t) { if (y[t] == iscase) { loglik[0] += sign * offset[t]; for (i = 0; i < m; ++i) { loglik[0] += sign * X[t + i*T] * beta[i]; score[i] += sign * X[t + i*T] - xmean[i]; } loglik[0] -= lpmax; } } /* Allocate and initialize workspace for recursive calculations */ Kp = K + 1; f = Calloc(Kp, double); g = Calloc(m * Kp, double); h = Calloc(m * m * Kp, double); xt = Calloc(m, double); for (k = 0; k < Kp; ++k) { f[k] = 0; for (i = 0; i < m; ++i) { g[k+Kp*i] = 0; for (j = 0; j < m; ++j) { h[k + Kp*(i + m*j)] = 0; } } } f[0] = 1; /* Recursively calculate contributions over all possible case sets of size K. */ for (t = 0; t < T; ++t) { double Ct = offset[t]; for (i = 0; i < m; ++i) { xt[i] = sign * X[t + T*i] - xmean[i]; Ct += sign * beta[i] * X[t + T*i]; } Ct = exp(Ct - lpmax); for (k = imin2(K,t+1); k > 0; --k) { for (i = 0; i < m; ++i) { double const *gpi = g + Kp*i; for (j = 0; j < m; ++j) { double const *gpj = g + Kp*j; double *hp = h + Kp*(i + m*j); hp[k] += Ct * (hp[k-1] + xt[i] * gpj[k-1] + xt[j] * gpi[k-1] + xt[i] * xt[j] * f[k-1]); } } for (i = 0; i < m; ++i) { double *gp = g + Kp*i; gp[k] += Ct * (gp[k-1] + xt[i] * f[k-1]); } f[k] += Ct * f[k-1]; } } /* Add contributions from this stratum to the output parameters */ loglik[0] -= log(f[K]); for (i = 0; i < m; ++i) { double const *gpi = g + Kp*i; score[i] -= gpi[K] / f[K]; for (j = 0; j < m; ++j) { double const *gpj = g + Kp*j; double const *hp = h + Kp*(i + m*j); info[i + m*j] += hp[K]/f[K] - (gpi[K]/f[K]) * (gpj[K]/f[K]); } } Free(f); Free(g); Free(h); Free(xt); Free(xmean); } /* * Calculate the conditional log likelihood summed over all strata, * along with the score and information matrix. * * Input parameters: * * X - list of matrices of covariate values. One element of the list * corresponds to a single stratum * Y - list of vectors of outcomes, corresponding to X, * beta - vector of log odds ratio parameters * m - number of parameters * * Output parameters * * loglik - contains the conditional log-likelihood on exit (scalar) * score - contains the score function on exit (m - vector) * info - contains the information matrix on exit (m*m - vector) */ static void cloglik(SEXP X, SEXP y, SEXP offset, int m, double *beta, double *loglik, double *score, double *info) { int i; int M = m*m; /* Output parameters of cloglik_stratum must be initialized to zero */ loglik[0] = 0; for (i = 0; i < m; ++i) { score[i] = 0; } for (i = 0; i < M; ++i) { info[i] = 0; } for (i = 0; i < length(X); ++i) { SEXP Xi = VECTOR_ELT(X,i); SEXP yi = VECTOR_ELT(y,i); SEXP oi = VECTOR_ELT(offset, i); cloglik_stratum(REAL(Xi), INTEGER(yi), REAL(oi), nrows(Xi), m, beta, loglik, score, info); } } /* The chinv2 function only works on the lower triangle of the matrix. This wrapper function copies the lower to the upper triangle */ static void invert_info(double **imat, int m) { int i,j; chinv2(imat, m); for (i = 1; i < m; i++) { for (j = 0; j < i; j++) { imat[i][j] = imat[j][i]; } } } /* Find maximum likelihood estimate of conditional logistic regression model by Newton-Raphson. The algorithm is copied from coxph.fit from the survival package by Terry Therneau. The variable u is used to store both the score function and the step for the next iteration. Likewise info contains both the information matrix and its Cholesky decomposition. If flag > 0 then the arrays hold the score and variance-covariance matrix respectively. */ static void clogit_fit(SEXP X, SEXP y, SEXP offset, int m, double *beta, double *loglik, double *u, double *info, int *flag, int *maxiter, double const *eps, double const * tol_chol) { int i, iter = 0; Rboolean halving = FALSE; double *oldbeta = Calloc(m, double); double **imat = Calloc(m, double*); /* Set up ragged array representation of information matrix for use by cholesky2, chsolve2, and invert_info functions */ for (i = 0; i < m; ++i) { imat[i] = info + m*i; } /* Initial iteration */ cloglik(X, y, offset, m, beta, loglik, u, info); if (*maxiter > 0) { *flag = cholesky2(imat, m, *tol_chol); if (*flag > 0) { chsolve2(imat, m, u); for (i = 0; i < m; i++) { oldbeta[i] = beta[i]; beta[i] += u[i]; } } else { /* Bad information matrix. Don't go into the main loop */ *maxiter = 0; } } /* Main loop */ for (iter = 1; iter <= *maxiter; iter++) { double oldlik = *loglik; cloglik(X, y, offset, m, beta, loglik, u, info); if (fabs(1 - (oldlik / *loglik)) <= *eps && !halving) { /* Done */ break; } else if (iter == *maxiter) { /* Out of time */ *flag = 1000; break; } else if (*loglik < oldlik) { /* Not converging: halve step size */ halving = TRUE; for (i = 0; i < m; i++) { beta[i] = (beta[i] + oldbeta[i]) /2; } } else { /* Normal update */ halving = FALSE; oldlik = *loglik; *flag = cholesky2(imat, m, *tol_chol); if (*flag > 0) { chsolve2(imat, m, u); for (i = 0; i < m; i++) { oldbeta[i] = beta[i]; beta[i] += u[i]; } } else { break; /* Bad information matrix */ } } } *maxiter = iter; if (*flag > 0) { cholesky2(imat, m, *tol_chol); invert_info(imat, m); } Free(oldbeta); Free(imat); } /* R interface */ SEXP clogit(SEXP X, SEXP y, SEXP offset, SEXP init, SEXP maxiter, SEXP eps, SEXP tol_chol) { int i; int n = length(X); int m = length(init); int M = m*m; int flag = 0; int niter = INTEGER(maxiter)[0]; double loglik[2], *score, *info, *beta; SEXP ans, a, names, dims; if (!isNewList(X)) error("'X' must be a list"); if (!isNewList(y)) error("'y' must be a list"); if (!isNewList(offset)) error("'offset' must be a list"); if (length(X) != length(y)) error("length mismatch between X and y"); if (length(X) != length(offset)) error("length mismatch between X and offset"); for (i = 0; i < n; ++i) { int T = nrows(VECTOR_ELT(X,i)); int xcols = ncols(VECTOR_ELT(X,i)); int ylen = length(VECTOR_ELT(y,i)); int olen = length(VECTOR_ELT(offset, i)); if (xcols != m) { error("Element %d of X has %d columns; expected %d", i, xcols, m); } if (ylen != T) { error("Element %d of y has length %d; expected %d", i, ylen, T); } if (olen != T) { error("Element %d of offset has length %d; expected %d", i, ylen, T); } } beta = (double *) R_alloc(m, sizeof(double)); for (i = 0; i < m; ++i) { beta[i] = REAL(init)[i]; } score = (double *) R_alloc(m, sizeof(double)); info = (double *) R_alloc(M, sizeof(double)); /* Calculate initial loglikelihood */ cloglik(X, y, offset, m, beta, &loglik[0], score, info); /* Maximize the likelihood */ clogit_fit(X, y, offset, m, beta, &loglik[1], score, info, &flag, &niter, REAL(eps), REAL(tol_chol)); /* Construct return list */ PROTECT(ans = allocVector(VECSXP, 5)); PROTECT(names = allocVector(STRSXP, 5)); /* Estimates */ PROTECT(a = allocVector(REALSXP, m)); for (i = 0; i < m; ++i) { REAL(a)[i] = beta[i]; } SET_VECTOR_ELT(ans, 0, a); SET_STRING_ELT(names, 0, mkChar("coefficients")); UNPROTECT(1); /* Log likelihood */ PROTECT(a = allocVector(REALSXP, 2)); REAL(a)[0] = loglik[0]; REAL(a)[1] = loglik[1]; SET_VECTOR_ELT(ans, 1, a); SET_STRING_ELT(names, 1, mkChar("loglik")); UNPROTECT(1); /* Information matrix */ PROTECT(a = allocVector(REALSXP, M)); PROTECT(dims = allocVector(INTSXP, 2)); for (i = 0; i < M; ++i) { REAL(a)[i] = info[i]; } INTEGER(dims)[0] = m; INTEGER(dims)[1] = m; setAttrib(a, R_DimSymbol, dims); SET_VECTOR_ELT(ans, 2, a); SET_STRING_ELT(names, 2, mkChar("var")); UNPROTECT(2); /* Flag */ PROTECT(a = ScalarInteger(flag)); SET_VECTOR_ELT(ans, 3, a); SET_STRING_ELT(names, 3, mkChar("flag")); UNPROTECT(1); /* Number of iterations */ PROTECT(a = ScalarInteger(niter)); SET_VECTOR_ELT(ans, 4, a); SET_STRING_ELT(names, 4, mkChar("iter")); UNPROTECT(1); setAttrib(ans, R_NamesSymbol, names); UNPROTECT(2); return(ans); } Epi/src/chinv2.c0000644000175100001440000000301713052766107013141 0ustar hornikusers/* $Id: chinv2.c 11357 2009-09-04 15:22:46Z therneau $ ** ** matrix inversion, given the FDF' cholesky decomposition ** ** input **matrix, which contains the chol decomp of an n by n ** matrix in its lower triangle. ** ** returned: the upper triangle + diagonal contain (FDF')^{-1} ** below the diagonal will be F inverse ** ** Terry Therneau ** ** Copied from the survival package by Terry Therneau, version 2.35-7 */ #include void attribute_hidden chinv2(double **matrix , int n) { register double temp; register int i,j,k; /* ** invert the cholesky in the lower triangle ** take full advantage of the cholesky's diagonal of 1's */ for (i=0; i0) { matrix[i][i] = 1/matrix[i][i]; /*this line inverts D */ for (j= (i+1); j>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) @ % \chapter{Competing risks} \section{Concepts} The concept of competing risks is one where persons in a given state, ``alive'', say, are subject to a number of different causes of death, ``cause1'', ``cause2'' etc. Causes of death are required to be exhaustive and mutually exclusive. That is, you will eventually die from one of the designated causes, and you can only die from one. The observed data will be a survival time and an exit status which is either ``censored alive'' or one of the causes. In situations where the causes are not causes of death but other events, it is implicit that we only consider the first occurrence of an event from the state ``alive'', and ignore what occurs after. \subsection{Cause specific rates} The likelihood for observations from a competing risk scenario is a function of the cause-specific transition rates, and is a \emph{product} of the likelihoods that would emerge if we considered each cause as being the only one possible. Thus analysis is in principle straight forward: estimate a model for each of the cause-specific rates; these will together form a complete model for the competing risks problem. If the cause-specific rates are all we want to assess then we are done. \subsection{Cumulative risks} In addition to the rates we might however also be interested in the \emph{survival} probability, the \emph{cumulative risks} and the \emph{sojourn times} for each cause. The survival is the probability of still being alive at a given time after entry; a function of time since entry. The cumulative risk of cause $c$ is the probability of having died from cause $c$ as a function of time since entry. \subsection{Sojourn times} The sojourn time for cause $c$ is the time spent in the ``cause $c$'' state before a given time, $t$, say. This is also called the expected lifetime \emph{truncated} at the time $t$. For the state ``alive'' it will be the expected time alive before $t$, for the causes it can be interpreted as the time lost to the cause before time $t$. \subsection{The time} The cause specific rates are just functions of some time scale, be that age or time since entry to the study or even calendar time. But the cumulative risks are probabilities that refer to time \emph{since} some origin. Thus cumulative risks (and survival) are only meaningful in relation to a time that begins at 0. Though not a formal mathematical requirement this implies that we should have data starting at time 0. If we were to use age as timescale for cumulative risk, we would want data available since birth; if we only had observations where most people entered between 20 and 40 years of age, we could mathematically compute cumulative risk by age, but it would nonsense. \section{Estimating cumulative risks} Each of the cumulative risks is a function of the survival function which in turn depends on \emph{all} rates. Specifically, if the cause-specific rates are $\lambda_c(t), c=1,2,\ldots$, then the survival function (probability of being alive at time $t$) is: \begin{equation} S(t) = \exp\left( \!-\!\int_0^t \sum_c \lambda_c(s) \dif s \right) = \exp\left(\!-\! \sum_c \Lambda_c(t) \right) \label{eq:Sv} \end{equation} The quantities $\Lambda_c(t) = \int_0^t \lambda_c(s) \dif s$ are called cumulative \emph{rates} (probabilists call them integrated intensities), although they are not rates. Cumulative rates are dimensionless, but they have no probability interpretation of any kind. The cumulative \emph{risk}, the probability of dying from cause $c$ before time $t$, $R_c(t)$ is: \begin{equation} R_c(t) = \int_0^t \!\! \lambda_c(u) S(u) \dif u = \int_0^t \!\! \lambda_c(u) \exp\left(\!-\! \sum_c \Lambda_c(u) \right) \! \dif u \label{eq:R} \end{equation} Models for the cause-specific rates can produce estimated transition rates $\lambda_c$ at closely spaced intervals, and the cumulative risks can then be estimated from these by simple numerical integration; this is illustrated in the next chapter. Note that at any one time every person is either alive or dead from one of the causes, so the sum of the survival and the cumulative risks is always 1: \[ 1 = S(t) + R_1(t) + R_2(t) + \cdots, \forall t \] \subsection{Confidence intervals} But even if we from the modeling of the $\lambda_c$s may have standard errors of $\log(\lambda_c)$, the standard errors of the $R_c$s will be analytically intractable from these. In practice, the only viable way to get confidence intervals for the cumulative risks, $R_c$, is by calculation of a set of rates $\lambda_c(t)$ by sampling from the posterior distribution of the parameters in the models for $\log(\lambda_c(s))$, and then compute the integrals numerically for each simulated sample, according to formulae \ref{eq:Sv} and \ref{eq:R}. The simulation approach also allows calculation of confidence intervals for sums of the cumulative risks, $R_1(t)+R_2(t)$, for example, which will be needed if we want to show stacked cumulative risks. Finally, it will also allow calculation of standard errors of sojourn times in each of the states ``alive'' and ``cause1'', ``cause2'',\ldots. While the latter two may not be of direct interest, then \emph{differences} between such sojourn times between different groups can be interpreted as years of life lost to each cause between groups. \chapter{Example data} \section{A \texttt{Lexis} object} As an illustrative data example we use the (fake) diabetes register data; we set up the Lexis object, an then cut the follow-up time at dates of OAD and Ins: <<>>= library(Epi) data(DMlate) Ldm <- Lexis(entry = list( per = dodm, age = dodm-dobth, tfd = 0 ), exit = list( per = dox ), exit.status = factor( !is.na(dodth), labels = c("DM","Dead") ), data = DMlate ) summary(Ldm, t = T) Mdm <- mcutLexis( Ldm, wh = c('dooad','doins'), new.states = c('OAD','Ins'), seq.states = FALSE, ties = TRUE ) summary(Mdm) @ We initially split the FU before drug inception in intervals of 1/12 year, creating a \texttt{Lexis} object for a competing risks situation with three possible event types: <<>>= Sdm <- splitLexis(factorize(subset(Mdm, lex.Cst == "DM")), time.scale="tfd", breaks = seq(0, 20, 1/12)) summary(Sdm) @ % We can illustrate the follow-up in the full data set and in the restricted <>= boxes(Mdm, boxpos = list(x = c(15, 50, 15, 85, 85), y = c(85, 50, 15, 85, 15)), scale.R = 100, show.BE = TRUE) @ % \insfig{boxes5}{0.8}{The transitions in the multistate model, where follow-up is extended also after beginning of first drug exposure. Rates in brackets are per 100 PY.}% <>= boxes(Relevel(Sdm, c(1, 4, 2, 3)), boxpos = list(x = c(15, 85, 80, 15), y = c(85, 85, 20, 15)), scale.R = 100, show.BE = TRUE ) @ % \insfig{boxes4}{0.8}{The transitions in the competing risks model, where follow-up is stopped at drug exposure. By that token only the \texttt{DM} state has person-years; a characteristic of a competing risks situation.} \section{Models for rates} Now that we have set up a dataset with three competing events, we can model the cause-specific rates separately by time from diagnosis as the only underlying time scale. This is done by Poisson-regression on the time-split data set; since the dataset is in \texttt{Lexis} format we can use the convenience wrapper \texttt{gam.Lexis} to model rates a smooth function of time (\texttt{tfd}). Note that we only need to specify the \texttt{to=} argument because there is only one possible \texttt{from} for each \texttt{to} (incidentally the same for all \texttt{to} states, namely \texttt{DM}): <<>>= mD <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Dead') mO <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'OAD' ) mI <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Ins' ) @ % With these models fitted we can compute the rates, cumulative rates and the cumulative risks and sojourn times in states using the usual formulae. First we compute the rates in intervals of length 1/100 years. Note that these models only have time since diagnosis as covariates, so they are the counterpart of Nelson-Aalen estimates, albeit in a biologically more meaningful guise. The points where we compute the predicted rates are midpoints of intervals of length 1/100 year. These points are unrelated to the follow-up intervals in which we split the data for analysis---they were 1 month intervals, here we use 1/100 year (about 3.7 days): <<>>= int <- 1 / 100 nd <- data.frame(tfd = seq(0, 10, int)) rownames(nd) <- nd$tfd str(nd) @ % With this we can show the rates as a function of the time since entry (diagnosis of diabetes): <>= matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.02,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) @ % \insfig{rates}{0.9}{Estimated rates from the \textrm{\tt DM} state, estimates are from \textrm{\tt gam} models fitted to data split in 1 month intervals (1/12 year, that is). Rates of \textrm{\tt OAD} is in the vicinity of 0.1/year, and mortality about half of this. Rates of insulin start among persons on no other drug are beginning high, then decreasing with a nadir at about 4 years and then increase to a peak at 8 years.} Note that the graph in figure \ref{fig:rates} is not normally shown in analyses of competing risks; the competing cause-specific rates are hardly ever shown. I suspect that this is frequently because they are often modeled by a Cox model and so are buried in the model. \section{Cumulative rates and risks} For the calculation of the cumulative rates and state probabilities, we need just the estimated rates (without CIs). The formulae \ref{eq:Sv} and \ref{eq:R} on page \pageref{eq:R} are transformed to \R-code; starting with the rates, $\lambda_\text{D}$ as \texttt{lD} etc: <<>>= # utility function that calculates the midpoints between sucessive # values in a vector mp <- function(x) x[-1] - diff(x) / 2 # # rates at midpoints of intervals lD <- mp(ci.pred(mD, nd)[,1]) lI <- mp(ci.pred(mI, nd)[,1]) lO <- mp(ci.pred(mO, nd)[,1]) # # cumulative rates and survival function at right border of the intervals LD <- cumsum(lD) * int LI <- cumsum(lI) * int LO <- cumsum(lO) * int Sv <- exp(- LD - LI - LO ) # # when integrating to get the cumulative risks we use the average # of the survival function at the two endpoints (adding 1 as the first) Sv <- c(1, Sv) rD <- c(0, cumsum(lD * mp(Sv)) * int) rI <- c(0, cumsum(lI * mp(Sv)) * int) rO <- c(0, cumsum(lO * mp(Sv)) * int) @ % Now we have the cumulative risks for the three causes and the survival, computed at the end of each of the intervals. At any time point the sum of the 3 cumulative risks and the survival should be 1: <<>>= summary(rD + rI + rO + Sv) oo <- options(digits = 20) cbind(summary(Sv + rD + rI + rO)) options(oo) @ % We can then plot the 3 cumulative risk functions stacked together using \texttt{mat2pol} (\texttt{mat}rix to \texttt{pol}ygons): <>= zz <- mat2pol(cbind(rD, rI, rO, Sv), x = nd$tfd, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen")) text(9, mp(zz["9", ]), c("Dead", "Ins", "OAD"," DM"), col = "white") box(col = "white", lwd = 3) @ % $ \insfig{stack}{0.9}{Probabilities of being in the 4 different states as a function of time since diagnosis. Note that \texttt{OAD} means that OAD was initiated first, and similarly for \texttt{Ins}. We are not concerned about what occur after these events. \texttt{Dead} means dead without being on any drug.} \section{Sojourn times} The sojourn times in each of the states is just the area of each of the coloured parts of figure \ref{fig:stack}. Since the $y$-dimension of the plot is probability (dimensionless) and the $x$-axis has dimension time, the computed areas will have dimension time. Normally we will not report the sojourn times as functions of (truncation) time, but only report them at a few select truncation points, such as 5 or 10 years. Calculation of the 10 year sojourn times would be straight-forward as integrals from 0 to 10: <<>>= Sj <- c(sjA = sum(Sv * int), sjD = sum(rD * int), sjI = sum(rI * int), sjO = sum(rO * int)) c(Sj, sum(Sj)) @ % We see that there is a small rounding error in the calculations; the sum should really be 10. \chapter{Confidence intervals} Besides confidence intervals for each of the 4 cumulative risks, we may also be interested in confidence intervals for \emph{sums} of any subset of the cumulative risks, corresponding to the borders between the colours in figure \ref{fig:stack}. If we only had two competing risks (and hence three states) the latter would not be an issue, because the sum of any two cumulative risks will be 1 minus the cumulative risk of the remainder, so we could get away with the confidence intervals for the single cumulative risks. This is the reason we have chosen an example with 3 competing risks and not just 2; we then have 4 probabilities to sum in different order. A short look at the formulae for cumulative risks will reveal that analytic approximation to the standard error of these probabilities (or some transform of them) is not really a viable way to go. Particularly if we also want confidence intervals of sums of the state probabilities as those shown in stacked plots. So in practice, if we want confidence intervals not only for the state probabilities, but also for any sum of subsets of them we would want a large number of simulated copies of the cumulative risks, each copy of the same structure as the one we just extracted from the model. Confidence intervals for sojourn times (i.e. time spent) in each state up to a given time, would come almost for free from the simulation approach. This means that we must devise a method to make a prediction not from the estimated model, but where we instead of the model parameters use a sample from the posterior distribution of the estimated parameters. Here the posterior distribution of the parameters is taken to be the multivariate normal distribution with mean equal to the vector of parameter estimates and variance-covariance matrix equal to the estimated variance-covariance matrix of the parameters. Precisely this approach is implemented in \texttt{ci.lin} via the \texttt{sample} argument; we can get a predicted value from a given prediction data frame just as from \texttt{ci.pred} resp. \texttt{ci.exp}; here is an indication of different ways of getting predicted values of the cause-specific rates: <<>>= head(cbind(ci.pred(mI,nd), ci.exp(mI,nd) )) @ % Here is an illustration of the prediction with model based confidence intervals for the rates, alongside predictions based on samples from the posterior distribution of the parameters in the model: <<>>= str(ci.lin(mI, nd, sample = 4)) head(cbind(ci.pred(mI,nd), exp(ci.lin(mI, nd, sample = 4)))) @ % The simulation is taking place at the parameter level and the transformation to survival and cumulative risks is simply a function applied to every simulated set of rates. \section{Joint models for several transitions} Note that we are implicitly assuming that the transitions are being modeled separately. If some transitions are modeled jointly---for example assuming that the rates of \texttt{OAD} and \texttt{Ins} are proportional as functions of time since entry, using one model---we are in trouble, because we then need one sample from the posterior generating two predictions, one for each of the transitions modeled together. Moreover the model will have to be a model fitted to a \texttt{stack.Lexis} object, so a little more complicated to work with. A simple way to program would be to reset the seed to the same value before simulating with different values of \texttt{nd}, this is what is intended to be implemented, but is not yet. This is mainly the complication of having different prediction frames for different risks in this case. However this is not a very urgent need, since the situation where you want common parameters for different rates out of a common state is quite rare. \section{Simulation based confidence intervals} These ideas have been implemented in the function \texttt{ci.Crisk} (\texttt{c}onfidence \texttt{i}ntervals for \texttt{C}umulative \texttt{risk}s) in the \texttt{Epi} package: We can now run the function using the model objects for the three competing events, using a common prediction data frame, \texttt{nd} for the rates. The time points in the frame must be so closely spaced that it makes sense to assume the rates constant in each interval; here we use intervals of length 1/100 years, approximately 4 days: <<>>= system.time( res <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = 0:1000 / 100), nB = 1000, perm = 4:1)) str(res) @ % As we see, the returned object (\texttt{res}) is a list of length 4, the first 3 components are 3-way arrays, and the last the vector of times of the first dimension of the arrays. The latter is mainly for plotting convenience. The three first components of \texttt{res} represent: \begin{itemize} \item \texttt{Crisk} \texttt{C}umulative \texttt{risk}s for each state \item \texttt{Srisk} \texttt{S}tacked cumulative \texttt{risk}s across states \item \texttt{Stime} \texttt{S}ojourn \texttt{time}s in each state, truncated at each point of the time dimension. \end{itemize} The first dimension of each array is time corresponding to endpoints of intervals of length \texttt{int}, (normally assumed starting at 0, but not necessarily). The second dimension is states (or combinations thereof). The last dimension of the arrays is the type of statistic; \texttt{50\%} is the median of the samples, and the bootstrap intervals as indicated; taken from the \texttt{alpha} argument. The argument \texttt{perm} governs in which order the state probabilities are stacked in the \texttt{Srisk} element of the returned list, the default is the states in the order given in the list of models in the first argument to \texttt{ci.Crisk} followed by the survival. If we want the bootstrap samples to make other calculations we can ask the function to return the bootstrap samples of the rates by using the argument \texttt{sim.res = 'rates'} (defaults to \texttt{'none'}): <<>>= system.time( rsm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = 0:1000 / 100), nB = 500, sim.res = 'rates')) str(rsm) @ % This is 500 bootstrap samples of the rates evaluated at the 1001 endpoints of the intervals. Alternatively we can get the bootstrap samples of the cumulative risks by setting \texttt{sim.res = 'crisk'}: <<>>= system.time( csm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = 0:1000 / 100), nB = 500, sim.res = 'crisk')) str(csm) @ % These are 500 simulated samples of the cumulative risks evaluated at the 1001 endpoints of the intervals, and also includes the survival probability in the first slot of the \nth{2} dimension of \texttt{csm}. \section{Simulated confidence intervals for rates} In figure \ref{fig:rates} we showed the rates with confidence intervals from the model. But in \texttt{rsm} we have 500 (parametric) bootstrap samples of the occurrence rates, so we can derive the bootstrap medians and the bootstrap c.i.---remember that the first slice of the \nth{3} dimension is the model estimates that should not enter the calculations. We use the function \texttt{mnqt} to compute the model estimate and the mean, median and quantiles of the simulated values. <<>>= Brates <- aperm(apply(rsm, 1:2, Epi:::mnqt), c(2,3,1)) str(Brates) @ % Then we can plot the bootstrap estimates on top of the estimates based on the normal approximation to distribution of the parameters. They are---not surprisingly---in close agreement since they are both based on an assumption of normality of the parameters on the log-rate scale: \insfig{rates-ci}{0.9}{Estimated rates from the \textrm{\tt DM} state, estimates are from \textrm{\tt gam} models fitted to data split in 1 month intervals (1/12 year, that is). The white dotted curves are the bootstrap medians, black dotted curves are the bootstrap 95\% c.i.s.} <>= matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.1,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) matlines(nd$tfd, cbind(Brates[,"Dead",], Brates[,"Ins" ,], Brates[,"OAD" ,])*1000, col = c("white","black","black"), lty = 3, lwd=c(3,1,1)) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) @ % \section{Confidence intervals for cumulative risks} In the \texttt{Crisk} component of \texttt{res} we have the cumulative risks as functions of of time, with bootstrap confidence intervals, so we can easily plot the three cumulative risks: \insfig{crates}{0.9}{Cumulative risks for the three types of events, with 95\% bootstrap-based confidence intervals as shades.} <>= matshade(res$time, cbind(res$Crisk[,"Dead",], res$Crisk[,"Ins" ,], res$Crisk[,"OAD" ,]), plot = TRUE, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Cumulative probability", col = c("black","red","blue")) text(8, 0.3 + c(1,0,2)/25, c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) @ % $ \section{Confidence intervals for stacked cumulative risks} Unlike the single cumulative risks where we have a confidence interval for each cumulative risk, when we want to show the stacked probabilities we must deliver the confidence intervals for the relevant sums, they are in the \texttt{Srisk} component of \texttt{res}. <<>>= str(res$Crisk) str(res$Srisk) @ % But we start out by plotting the stacked probabilities using \texttt{mat2pol} (\texttt{mat}rix to \texttt{pol}ygon), the input required is the single components from the \texttt{Crisk} component. Then we add the confidence intervals as white shades (using \texttt{matshade}): \insfig{stack-ci}{0.9}{Probabilities of being in the 4 different states as a function of time since diagnosis. Note that \texttt{OAD} means that OAD was initiated first, and similarly for \texttt{Ins}. We are not concerned about what occurs \emph{after} these events. \texttt{Dead} means dead without being on any drug.\newline The white shadings around the borders between coloured areas represent the 95\% confidence intervals for the (sum of) probabilities.} <>= zz <- mat2pol(res$Crisk[,c("Dead","Ins","OAD","Surv"),1], x = res$time, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen") ) text( 9, mp(zz["9",]), c("Dead","Ins","OAD","DM"), col = "white" ) matshade(res$time, cbind(res$Srisk[,1,], res$Srisk[,2,], res$Srisk[,3,]), col = 'transparent', col.shade = "white", alpha = 0.3) @ % $ \section{Sojourn times} From the \texttt{Stime} component of the \texttt{res} we can derive the estimated time spent in each state during the first, say, 5 or 10 years: <<>>= str(res$Stime) @ % We extract the 5 and 10 years components: <<>>= s510 <- res$Stime[paste(1:2*5),,] dimnames(s510)[[1]] <- c(" 5 yr","10 yr") round(ftable(s510, row.vars=1:2), 2) @ % So we see that the expected life lived without pharmaceutical treatment during the first 10 years after DM diagnosis is 4.31 years with a 95\% CI of (4.21;4.42), and during the first 5 years 2.77 (2.72;2.82). \chapter{A simple illustration} This is a terse cook-book illustration of how to use the \texttt{ci.Crisk} function. \section{Data} First we simulate some causes of death in the \texttt{DMlate} data set; first sample numbers 1, 2, 3 representing causes of death in \texttt{DMlate}: <<>>= data(DMlate) set.seed(7465) wh <- sample(1:3, nrow(DMlate), r=T, prob = c(4, 2, 6)) @ % Those not dead are changed to 0: <<>>= wh[is.na(DMlate$dodth)] <- 0 @ % Define a factor in DMlate defining exit status as either alive or one of the three causes of death, and check by a \texttt{table} that all dead have a cause: <<>>= DMlate$codth <- factor(wh, labels=c("Alive","CVD","Can","Oth")) with(DMlate, table(codth, isDead = !is.na(dodth))) @ % \texttt{DMlate} now looks like a typical data set with cause of death in a separate variable; in this case we also added a state, \texttt{Alive}, for those without a recorded death: <<>>= str(DMlate) @ % \section{A \texttt{Lexis} object with 3 causes of death} With cause of death in a separate variable it is easy to set up a \texttt{Lexis} object: <<>>= dmL <- Lexis(entry = list(per = dodm, age = dodm - dobth, tfD = 0), exit = list(per = dox), exit.status = codth, data = DMlate ) summary(dmL, t = T) @ We can show the overall rates (the default \texttt{boxes} is \emph{very} primitive): <>= boxes(dmL, boxpos = TRUE) @ % \insfig{boxes}{0.8}{Transitions from live to different causes of death.} \section{Models for the rates} In order to model the cause-specific mortality rates by sex and time from diagnosis (\texttt{tfD}), we first split the data in 6-month intervals <<>>= sL <- splitLexis(dmL, time.scale="age", breaks = 0:120) summary(sL) @ <<>>= mCVD <- gam.Lexis(sL, ~ s(tfD, by=sex), to = "CVD") mCan <- gam.Lexis(sL, ~ s(tfD, by=sex), to = "Can") mOth <- gam.Lexis(sL, ~ s(tfD, by=sex), to = "Oth") @ <>= mCVD <- glm.Lexis(sL, ~ Ns(tfD, kn=1:6*2):sex, to = "CVD") mCa <- glm.Lexis(sL, ~ Ns(tfD, kn=1:6*2):sex, to = "Ca") mOth <- glm.Lexis(sL, ~ Ns(tfD, kn=1:6*2):sex, to = "Oth") @ % %% We can show how rates vary along the timescale for men and women %% (called ``\texttt{M}'' and ``\texttt{F}'') using prediction data frames: %% <>= %% nm <- data.frame(tfD = seq(0, 15, 0.1), sex = "M") %% nw <- data.frame(tfD = seq(0, 15, 0.1), sex = "F") %% matshade(nm$tfD, cbind(ci.pred(mCVD, nm), ci.pred(mCVD, nw), %% ci.pred(mCan, nm), ci.pred(mCan, nw), %% ci.pred(mOth, nm), ci.pred(mOth, nw)) * 1000, %% col = rep(clr <- c("black","orange","forestgreen"), each = 2), %% lty = 1:2, lwd = 2, %% log = "y", ylim = c(0.5, 100), plot = TRUE) %% text(0, 10^par("usr")[3] * 1.4^(1:3), %% c("CVD","Can","Oth"), col = clr, adj = 0) %% @ % %% \insfig{csr}{0.9}{Cause-specific mortality rates for men (full lines), %% and women (broken lines).} \section{Derived measures} With these three models for the occurrence rates we can compute the cumulative risks of dying from each of the causes. We need a prediction data frame that gives the rates at closely spaced times, in this case for men. For women the code is practically the same. <<>>= nm <- data.frame(tfD = seq(0, 15, 0.1), sex = "M") @ % Note that we can rename the states as we please by naming the models in the list we supply to \texttt{ci.Crisk}: <<>>= cR <- ci.Crisk(list(CVD = mCVD, Can = mCan, Other = mOth), nd = nm) str(cR) @ %$ Note that we get three arrays: \texttt{Crisk}, the cumulative risks; \texttt{Srisk}, the stacked risks and \texttt{Stime}, the sojourn times in each state. Finally, for convenience we also have the component \texttt{time}, the times at which the cumulative risks are computed. It is also available as the clumpy expression \texttt{as.numeric(dimnames(cR\$Crisk)[[1]])}, but \texttt{cR\$time} is easier. \subsection{Cumulative risks} We can plot the cumulative risks for death from each of the three causes, note we use the colors from last. Note that the time points are in the dimnames of the \texttt{Crisk} component: <>= clr <- c("black","orange","limegreen") matshade(cR$time, cbind(cR$Crisk[, "CVD" ,], cR$Crisk[, "Can" ,], cR$Crisk[, "Other",]), col = clr, lty = 1, lwd = 2, plot = TRUE, ylim = c(0,1/3), yaxs = "i") text(0, 1/3 - 1:3/30, c("CVD","Can","Oth"), col = clr, adj = 0) @ % \insfig{cR}{0.9}{Cumulative risks of each cause of death based on \textrm{\tt gam} models for the cause-specific rates.} We also have the stacked probabilities so we can show how the population is distributed across the states at any one time: \subsection{Stacked cumulative risks} We also get the stacked probabilities in the order that we supplied the models, so that if we plot these we get the probabilities of being dead from each cause as the \emph{difference} between the curves. And the confidence intervals are confidence intervals for the cumulative sums of probabilities. <>= matshade(cR$time, cbind(cR$Srisk[,1,], cR$Srisk[,2,], cR$Srisk[,3,]), col = "black", lty = 1, lwd = 2, plot = TRUE, ylim = c(0,1), xaxs = "i", yaxs = "i") text(14, mp(c(0, cR$Srisk["14", , 1], 1)), rev(c(dimnames(cR$Crisk)[[2]]))) box() @ % \insfig{Sr1}{0.9}{Stacked cumulative risks --- not a good graph} It is not a good idea to color the curves, they do not refer to the causes of death, it is the areas \emph{between} the curves that refer to causes. It would be more logical to color the areas \emph{between} the curves. which can be done by \texttt{mat2pol} (\texttt{mat}rix to \texttt{pol}ygons) using the \texttt{Crisk} component. We can then superpose the confidence intervals for the sum of the state probabilities using \texttt{matshade} by adding white shades: <>= zz <- mat2pol(cR$Crisk[,c("Other","Can","CVD","Surv"),"50%"], x = cR$time, xlim = c(0,15), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("gray","red","blue","limegreen") ) matshade(cR$time, cbind(cR$Srisk[,1,], cR$Srisk[,2,], cR$Srisk[,3,]), col = "transparent", col.shade = "white", alpha = 0.4) text(14, mp(c(0, cR$Srisk["14", , 1], 1)), rev(c(dimnames(cR$Crisk)[[2]])), col = "white") @ % \insfig{Sr2}{0.9}{Stacked cumulative risks with coloring of states and overlaid with confidence intervals for the probabilities shown; that is the relevant sums.} \subsection{Sojourn times} The third component of the result, \texttt{Stime} is an array of sojourn times over intervals starting at 0 and ending at the time indicated by the first dimension: <<>>= ftable(round(cR$Stime[paste(1:5 * 3),,], 1), row.vars=1) @ % The sojourn times in the three dead states can be taken as the years of life lost to each of the causes, the sum of the medians for the three causes equals the time frame (5, 10, 15) minus the \texttt{Surv} component. So we see that during the first 15 years after diagnosis of diabetes, the expected years alive is 10.9 years. The distribution of lifetime lost between the causes is bogus in this case as the causes of death were randomly generated. \end{document} Epi/vignettes/addLexis.rnw0000644000175100001440000005647314223477025015327 0ustar hornikusers%\VignetteIndexEntry{Time dependent covariates in Lexis objects: addCov & addDrug} \SweaveOpts{results=verbatim,keep.source=TRUE,include=FALSE,eps=FALSE} \documentclass[a4paper,twoside,12pt]{report} \newcommand{\Title}{Time dependent covariates in\\ \texttt{Lexis} objects} \newcommand{\Tit}{addLex} \newcommand{\Version}{Version 5} \newcommand{\Dates}{March 2022} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/Epi}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk}\\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} <>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) library(Epi) library(dplyr) @ % \renewcommand{\rwpre}{./addLexis} \chapter{Overview and rationale} This note describes the functions \texttt{addCov.Lexis} and \texttt{addDrug.Lexis} designed to add values of clinical measurements and drug exposures to time-split \texttt{Lexis} objects. If time-dependent variables are binary, such as for example ``occurrence of CVD diagnosis'' it may be relevant to define a new state as, say, \texttt{CVD}. But the purposes of the two functions here are to append quantitative variables that in principle can take any (positive) value. Adding new states at intermediate events is the business of \texttt{cutLexis}. Both functions are so-called \texttt{S3} methods for \texttt{Lexis} objects, so in code you can omit the ``\texttt{.Lexis}''. Note that neither \texttt{splitLexis} or \texttt{splitMulti} are \texttt{S3} methods---there is no ``\texttt{.}'' in the names. \section{\texttt{addCov.Lexis}} \ldots provides the ability to amend a \texttt{Lexis} object with clinical measurements taken at different times, and propagate the values as LOCF (Last Observation Carried Forward) to all subsequent records. This means that time-splitting of a \texttt{Lexis} object \emph{after} adding clinical measurements will be meaningful, because both \texttt{splitLexis} and \texttt{splitMulti} will carry variables forward to the split records. The follow-up in the resulting \texttt{Lexis} object will be cut at dates of clinical measurement. \texttt{addCov.Lexis} will also propagate missing values supplied as measurements. Therefore, if you want to have LOCF \emph{across} supplied times of measurement you must explicitly apply \texttt{tidyr::fill} to the resulting \texttt{Lexis} object, after a suitable \texttt{group\_by}. \section{\texttt{addDrug.Lexis}} As opposed to this, \texttt{addDrug.Lexis} will first use drug information at each date of recorded drug purchase, and subsequently \texttt{compute} cumulative exposure measures at the times in the resulting \texttt{Lexis} object. This is essentially by linear interpolation, so it will not be meaningful to further split an object resulting from \texttt{addDrug.Lexis}---LOCF is not meaningful for continuously time-varying covariates such as cumulative exposure. If persons present with very frequent drug purchases, the intervals may become very small and the sheer number of records may present an impediment to analysis. Therefore the function \texttt{coarse.Lexis} is provided to collapse adjacent follow-up records. \chapter{\texttt{addCov.Lexis}} \section{Rationale} The function has arisen out of a need to attach values measured at clinical visits to a Lexis object representing follow-up for events constituting a multistate model. Hence the data frame with measurements at clinical visits will be called \texttt{clin} for mnemonic reasons. \section{Example} For illustration we devise a small bogus cohort of 3 people, where we convert the character dates into numerical variables (fractional years) using \texttt{cal.yr}. Note that we are using a character variable as \texttt{id}: <<>>= xcoh <- structure(list(id = c("A", "B", "C"), birth = c("1952-07-14", "1954-04-01", "1987-06-10"), entry = c("1965-08-04", "1972-09-08", "1991-12-23"), exit = c("1997-06-27", "1995-05-23", "1998-07-24"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) xcoh$dob <- cal.yr(xcoh$birth) xcoh$doe <- cal.yr(xcoh$entry) xcoh$dox <- cal.yr(xcoh$exit ) xcoh @ % \subsection{A \texttt{Lexis} object} Define this as a \texttt{Lexis} object with timescales calendar time (\texttt{per}, period) and age (\texttt{age}): <<>>= Lcoh <- Lexis(entry = list(per = doe), exit = list(per = dox, age = dox - dob), id = id, exit.status = factor(fail, 0:1, c("Alive","Dead")), data = xcoh) str(Lcoh) (Lx <- Lcoh[,1:6]) @ % \subsubsection{Factor or character \texttt{lex.id}?} Note that when the \texttt{id} argument to \texttt{Lexis} is a character variable then the \texttt{lex.id} will be a factor. Which, if each person has a lot of records may save time, but if you subset may be a waste of space. Moreover merging (\ie joining in the language of \texttt{tidyverse}) may present problems with different levels. \texttt{merge} from the \texttt{base} \R, will coerce to factor with union of levels as levels, where as the \texttt{\_join} functions from \texttt{dplyr} will coerce to character. Thus the most reasonable strategy thus seems to keep \texttt{lex.id} as a character variable. <<>>= Lx$lex.id <- as.character(Lx$lex.id) str(Lx) Lx @ \subsubsection{Clinical measurements} Then we generate data frame with clinical examination data, that is date of examination in \texttt{per}, some bogus clinical measurements and also names of the examination rounds: <<>>= clin <- data.frame(lex.id = c("A", "A", "C", "B", "C"), per = cal.yr(c("1977-3-17", "1973-7-29", "1996-3-1", "1990-7-14", "1989-1-31")), bp = c(120, 140, 160, 157, 145), chol = c(NA, 5, 8, 9, 6), xnam = c("X2", "X1", "X1", "X2", "X0"), stringsAsFactors = FALSE) str(clin) clin @ % Note that we have chosen a measurement for person \texttt{C} from 1989---before the person's entry to the study, and have an \texttt{NA} for \texttt{chol} for person \texttt{A}. \subsection{Adding clinical data} There is a slightly different behaviour according to whether the variable with the name of the examination is given or not, and whether the name of the (incomplete) time scale is given or not: <<>>= (Cx <- addCov.Lexis(Lx, clin)) @ % Note that the clinical measurement preceding the entry of person \textsc{C} is included, and that the \texttt{tfc} (time from clinical measurement) is correctly rendered, we a non-zero value at date of entry. We also see that a variable \texttt{exnam} is constructed with consecutive numbering of examinations within each person, while the variable \texttt{xnam} is just carried over as any other. If we explicitly give the name of the variable holding the examination names we do not get a constructed \texttt{exnam}. We can also define the name of the (incomplete) timescale to hold the time since measurement, in this case as \texttt{tfCl}: <<>>= (Dx <- addCov.Lexis(Lx, clin, exnam = "xnam", tfc = "tfCl")) summary(Dx, t=T) @ % \section{Exchanging split and add} As noted in the beginning of this not \texttt{addCov.Lexis} uses LOCF, and so it is commutative with \texttt{splitLexis}: <<>>= # split BEFORE add Lb <- addCov.Lexis(splitLexis(Lx, time.scale = "age", breaks = seq(0, 80, 5)), clin, exnam = "xnam" ) Lb # # split AFTER add La <- splitLexis(addCov.Lexis(Lx, clin, exnam = "xnam" ), time.scale = "age", breaks = seq(0, 80, 5)) La @ % We see that the results are identical, bar the sequence of variables and attributes. We can more explicitly verify that the resulting data frames are the same: <<>>= La$tfc == Lb$tfc La$age == Lb$age La$per == Lb$per @ % The same goes for \texttt{splitMulti}: <<>>= if (require(popEpi, quietly=TRUE)) { ## split BEFORE add Mb <- addCov.Lexis(splitMulti(Lx, age = seq(0, 80, 5)), clin, exnam = "xnam" ) ## ## split AFTER add Ma <- splitMulti(addCov.Lexis(Lx, clin, exnam = "xnam" ), age = seq(0, 80, 5)) La$tfc == Mb$tfc Ma$tfc == Mb$tfc } @ % In summary, because both \texttt{addCov.Lexis} and \texttt{splitLexis}/\texttt{splitMulti} use LOCF for covariates the order of splitting and adding does not matter. This is certainly not the case with \textrm{addDrug.Lexis} as we shall see. \section{Filling the \texttt{NA}s} As mentioned in the beginning, clinical measurements given as \texttt{NA} in the \texttt{clin} data frame are carried forward. If you want to have these replaced by 'older' clinical measurements you can do that explicitly by \texttt{dplyr::fill} with a construction like: <<>>= if (require(tidyr, quietly=TRUE)) { cov <- c("bp", "chol") Lx <- La Lx <- group_by(Lx, lex.id) %>% fill(all_of(cov)) %>% ungroup() class(Lx) } @ % We see that the \texttt{Lexis} attributes are lost by using the \texttt{group\_by} function, so we fish out the covariates from the \texttt{tibble} and stick them back into the \texttt{Lexis} object: <<>>= if (require(tidyr, quietly=TRUE)) { Lx <- La Lx[,cov] <- as.data.frame( group_by(Lx, lex.id) %>% fill(all_of(cov)))[,cov] class(Lx) La Lx } @ % The slightly convoluted code where the covariate columns are explicitly selected, owes to the fact that the \texttt{dplyr} functions will strip the data frames of the \texttt{Lexis} attributes. So we needed to use \texttt{fill} to just generate the covariates and not touch the \texttt{Lexis} object itself. This should of course be built into \texttt{addCov.Lexis} as a separate argument, but is not yet. Note that the \texttt{tfc}, time from clinical measurement is now not a valid variable any more; the 5 in \texttt{chol} is measured in 1971.5 but \texttt{tfc} is reset to 0 at 1977.3, despite only \texttt{bp} but not \texttt{chol} is measured at that time. If you want that remedied you will have to use \texttt{addCov.Lexis} twice, one with a \texttt{clin} data frame with only \texttt{bp} and another with a data frame with only \texttt{chol}, each generating a differently named time from clinical measurement. This is a problem that comes from the structure of the supplied \emph{data} not from the program features; in the example we had basically measurements of different clinical variables at different times, and so necessarily also a need for different times since last measurement. \chapter{\texttt{addDrug.Lexis}} The general purpose of the function is to amend a \texttt{Lexis} object with drug exposure data. The data base with information on a specific drug is assumed to be a data frame with one entry per drug purchase (or prescription), containing the date and the amount purchased and optionally the prescribed dosage (that is how much is supposed to be taken per time). We assume that we have such a data base for each drug of interest, which also includes an id variable, \texttt{lex.id}, that matches the \texttt{lex.id} variable in the \texttt{Lexis} object. For each type of drug the function derives 4 variables: \begin{description}[noitemsep] \item[\hspace*{1em}\texttt{ex}]: logical, is the person currently \texttt{ex}posed \item[\hspace*{1em}\texttt{tf}]: numeric, \texttt{t}ime since \texttt{f}irst purchase \item[\hspace*{1em}\texttt{ct}]: numeric, \texttt{c}umulative \texttt{t}ime on the drug \item[\hspace*{1em}\texttt{cd}]: numeric, \texttt{c}umulative \texttt{d}ose of the drug \end{description} These names are pre- or suf-fixed by the drug name, so that exposures to different drugs can be distinguished; see the examples. The resulting \texttt{Lexis} object has extra records corresponding to cuts at each drug purchase and at each expiry date of a purchase. For each purchase the coverage period is derived (different methods for this are available), and if the end of this (the expiry date) is earlier than the next purchase of the person, the person is considered off the drug from the expiry date, and a cut in the follow-up is generated with \texttt{ex} set to \texttt{FALSE}. \section{The help example} The following is a slight modification of the code from the example section of the help page for \texttt{addDrug.Lexis} First we generate follow-up of 2 persons, and split the follow-up in intervals of length 0.6 years along the calendar time scale, \texttt{per}: <<>>= fu <- data.frame(doe = c(2006, 2008), dox = c(2015, 2018), dob = c(1950, 1951), xst = factor(c("A","D"))) Lx <- Lexis(entry = list(per = doe, age = doe- dob), exit = list(per = dox), exit.status = xst, data = fu) Lx <- subset(Lx, select = -c(doe, dob, dox, xst)) Sx <- splitLexis(Lx, "per", breaks = seq(1990, 2020, 0.6)) summary(Sx) str(Sx) @ % Note that as opposed to the previous example, the time scales are not of class \texttt{cal.yr}, they are just numerical. Then we generate drug purchases for these two persons, one data frame for each of the drugs \texttt{F} and \texttt{G}. Note that we generate \texttt{lex.id}$\in (1,2)$ referring to the values of \texttt{lex.id} in the lexis object \texttt{Sx}. <<>>= set.seed(1952) rf <- data.frame(per = c(2005 + runif(12, 0, 10)), amt = sample(2:4, 12, replace = TRUE), lex.id = sample(1:2, 12, replace = TRUE)) %>% arrange(lex.id, per) rg <- data.frame(per = c(2009 + runif(10, 0, 10)), amt = sample(round(2:4/3,1), 10, replace = TRUE), lex.id = sample(1:2, 10, replace = TRUE)) %>% arrange(lex.id, per) @ % We do not need to sort the drug purchase data frames (it is done internally by \texttt{addDrug.Lexis}), but it makes it easier to grasp the structure. The way purchase data is supplied to the function is in a \texttt{list} where each element is a data frame of purchase records for one type of drug. The list must be named, the names will be used as prefixes of the generated exposure variables. We can show the resulting data: <<>>= pdat <- list(F = rf, G = rg) pdat Lx @ % Note that we have generated data so that there are drug purchases of drug \texttt{F} that is \emph{before} start of follow-up for person 2. We can then expand the time-split \texttt{Lexis} object, \texttt{Sx} with the drug information. \texttt{addDrug.Lexis} not only adds 8 \emph{variables} (4 from each drug), it also adds \emph{records} representing cuts at the purchase dates and possible expiry dates. <<>>= summary(Sx) ; names(Sx) ex1 <- addDrug.Lexis(Sx, pdat, method = "ext") # default summary(ex1) ; names(ex1) ex1 ex2 <- addDrug.Lexis(Sx, pdat, method = "ext", grace = 0.5) summary(ex2) ex2 dos <- addDrug.Lexis(Sx, pdat, method = "dos", dpt = 6) summary(dos) dos fix <- addDrug.Lexis(Sx, pdat, method = "fix", maxt = 1) summary(fix) fix @ % \section{A more realistic example with timing} \subsection{Follow-up data: \texttt{DMlate}} As example data we use the \texttt{DMlate} example data from the \texttt{Epi} package: <<>>= data(DMlate) ; str(DMlate) Lx <- Lexis(entry = list(per = dodm, age = dodm - dobth, tfd = 0), exit = list(per = dox), exit.status = factor(!is.na(dodth), labels = c("DM", "Dead")), data = DMlate) summary(Lx) @ % We split the data along the age-scale (omitting the variables we shall not need): <<>>= Sx <- splitLexis(Lx[,1:7], time.scale="age", breaks = 0:120) summary(Sx) @ % \subsection{Artificial prescription data} To explore how \texttt{addDrug.Lexis} works, we also need some drug exposure data, but these are unfortunately not available, so we simulate three datasets representing three types of drugs: <<>>= set.seed(1952) purA <- ( data.frame(lex.id = rep(Lx$lex.id, round(runif(nrow(Lx), 0, 20)))) %>% left_join(Lx[,c("lex.id", "dodm", "dox")]) %>% mutate(per = dodm + runif(length(dodm), -0.1, 0.99) * (dox - dodm), amt = sample(4:20*10, length(dodm), replace = TRUE), dpt = amt * round(runif(length(dodm), 3, 7))) %>% select(-dodm, -dox) %>% arrange(lex.id, per) ) addmargins(table(table(purA$lex.id))) str(purA) purB <- ( data.frame(lex.id = rep(Lx$lex.id, round(pmax(runif(nrow(Lx), -10, 15), 0)))) %>% left_join(Lx[,c("lex.id", "dodm", "dox")]) %>% mutate(per = dodm + runif(length(dodm), -0.1, 0.99) * (dox - dodm), amt = sample(4:20*10, length(dodm), replace = TRUE), dpt = amt * round(runif(length(dodm), 5, 9))) %>% select(-dodm, -dox) %>% arrange(lex.id, per) ) -> purB addmargins(table(table(purB$lex.id))) str(purB) purC <- ( data.frame(lex.id = rep(Lx$lex.id, round(pmax(runif(nrow(Lx), -5, 12), 0)))) %>% left_join(Lx[,c("lex.id", "dodm", "dox")]) %>% mutate(per = dodm + runif(length(dodm), -0.1, 0.99) * (dox - dodm), amt = sample(4:20*10, length(dodm), replace = TRUE), dpt = amt * round(runif(length(dodm), 5, 7))) %>% select(-dodm, -dox) %>% arrange(lex.id, per) ) addmargins(table(table(purB$lex.id))) str(purC) head(purC) @ % Note that the time scale is in years, so the \texttt{dpt} must be in amount per year, so that $\mathtt{dpt}/\mathtt{amt}$ is the approximate number of annual drug purchases. We now have three artificial drug purchase datasets so we can see how \texttt{addDrug.Lexis} performs on larger datasets: \subsection{Using \texttt{addDrug}} \subsubsection{1000 and 500 persons} We start out with a small sample and a two month grace period to limit the number of gaps: <<>>= Sx1 <- subset(Sx, lex.id < 1000) pur <- list(A = subset(purA, lex.id < 1000), B = subset(purB, lex.id < 1000), C = subset(purC, lex.id < 1000)) system.time(ad1 <- addDrug.Lexis(Sx1, pur, tnam = "per", grace = 1/4)) summary(Sx1) summary(ad1) @ % We then cut the number of persons in half: <<>>= Sx2 <- subset(Sx, lex.id < 500) pur <- list(A = subset(purA, lex.id < 500), B = subset(purB, lex.id < 500), C = subset(purC, lex.id < 500)) system.time(ad2 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(Sx2) summary(ad2) @ % \ldots timing is broadly proportional to the number of persons. \subsubsection{Fewer prescription records} We can try to cut the number of purchases in half: <<>>= pur <- list(A = subset(purA, lex.id < 500 & runif(nrow(purA)) < 0.5), B = subset(purB, lex.id < 500 & runif(nrow(purB)) < 0.5), C = subset(purC, lex.id < 500 & runif(nrow(purC)) < 0.5)) sapply(pur, nrow) system.time(ad3 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(Sx2) summary(ad3) @ % It also appears that the number of purchases per person is also a determinant of the run time too; the timing is largely proportional to the number of drug records. In any concrete application it is recommended to run the function on a fairly small sample of persons, say 1000 to get a feel for the run time. It may also be a good idea to run the function on chunks of the persons, to make sure that you do not lose all the processed data in a crash. \subsubsection{Fewer prescription types} Finally we try to cut the number of drugs, to assess how this influences the run time: <<>>= pur <- list(B = subset(purB, lex.id < 500), C = subset(purC, lex.id < 500)) sapply(pur, nrow) system.time(ad4 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(Sx2) summary(ad4) @ % We see that the number of drugs also influence the run time proportionally. \subsection{Too many records ---\texttt{coarse.Lexis}} If we look at the length of the intervals as given in \texttt{lex.dur} we see that some are are quite small: <<>>= summary(ad1$lex.dur) @ % $ Half are smaller then 0.11 years, 40 days. We could without much loss of precision in the analysis based on the \texttt{Lexis} object merge adjacent records that have total risk time less than 3 months. The function \texttt{coarse.Lexis} will collapse records with short \texttt{lex.dur} with the subsequent record. The collapsing will use the covariates from the first record, and so the entire follow-up from the two records will have the characteristics of the first. Therefore it is wise to choose first records with reasonably short \texttt{lex.dur}---the approximation will be better than if the first record was with a larger \texttt{lex.dur}. Therefore there are two values supplied to \texttt{coarse.Lexis}; the maximal length of the first record's \texttt{lex.dur} and the maximal length of the \texttt{lex.dur} in the resulting combined record. The larger these parameters are, the more the \texttt{Lexis} object is coarsened. <<>>= summary(ad1) summary(adc <- coarse.Lexis(ad1, lim = c(1/6,1/2))) summary(adc$lex.dur) @ % This could cut the number of units for analysis substantially, in this case from about 27,000 to some 13,000. \subsubsection{Records to be kept} When we are dealing with drug exposure data we will be interested keeping the record that holds the start of a drug exposure. Some may argue that it does not matter much, though. The records (\ie beginnings of FU intervals) that should be kept must be given in logical vector in the argument \texttt{keep}: <<>>= summary(Sx2) system.time(ad4 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(ad4) # ad5 <- coarse.Lexis(ad4, lim = c(1/4, 1/2)) summary(ad5) @ We can identify the first date of exposure to drug \texttt{B}, say, by the exposure (\texttt{B.ex}) being true and the cumulative time on the drug (\texttt{B.ct}) being 0: <<>>= ad4$keep <- with(ad4, (B.ex & B.ct == 0) | (C.ex & C.ct == 0)) ad6 <- coarse.Lexis(ad4, lim = c(1/4, 1/2), keep = ad4$keep) summary(ad6) @ % We see the expected behaviour when we use \texttt{coarse.Lexis}: we get fewer records, but identical follow-up. And the \texttt{keep} argument gives the possibility to keep selected records, or more precisely beginnings. \texttt{keep} prevents a record to be collapsed with a previous one, but not with a subsequent one. \end{document} Epi/vignettes/2Bappended2addLexisrnw.txt0000644000175100001440000000241714221540007020010 0ustar hornikusers %% \subsection{The entire example dataset} %% The entire amount of example data consist of some 10,000 persons and %% some 200,000 prescriptions: %% <>= %% dim(Sx) %% pur <- list(A = purA, %% B = purB, %% C = purC) %% sapply(pur, nrow) %% system.time(adx <- addDrug.Lexis(Sx, pur, tnam = "per", grace = 1/6)) %% system.time(adc <- coarse.Lexis(adx, lim = c(1/6,1/2))) %% summary(Sx) %% summary(adx) %% summary(adc) %% @ %% We see hat the number of records is quite large because we have cut at %% all purchase dates and integer ages. For practical purposes we might %% therefore want to merge successive records with a total duration %% \texttt{lex.dur} less than some limit. %% \bibliographystyle{plain} %% \begin{thebibliography}{1} %% \bibitem{Carstensen.2007a} %% B~Carstensen. %% \newblock Age-{P}eriod-{C}ohort models for the {L}exis diagram. %% \newblock {\em Statistics in Medicine}, 26(15):3018--3045, 2007. %% \bibitem{Carstensen.2008c} %% B~Carstensen, JK~Kristensen, P~Ottosen, and K~Borch-Johnsen. %% \newblock The {D}anish {N}ational {D}iabetes {R}egister: {T}rends in incidence, %% prevalence and mortality. %% \newblock {\em Diabetologia}, 51:2187--2196, 2008. %% \end{thebibliography} %% \addcontentsline{toc}{chapter}{References} Epi/vignettes/toparticle.tex0000644000175100001440000000715613240230017015706 0ustar hornikusers %---------------------------------------------------------------------- %\usepackage[inline]{showlabels} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[english]{babel} \usepackage[font=it,labelfont=normalfont]{caption} \usepackage[colorlinks,urlcolor=blue,linkcolor=red,citecolor=Maroon]{hyperref} % \usepackage[ae,hyper]{Rd} \usepackage[dvipsnames]{xcolor} \usepackage[super]{nth} % \usepackage[retainorgcmds]{IEEEtrantools} \usepackage{makeidx,Sweave,floatflt,amsmath,amsfonts,amsbsy,enumitem,verbatim,dcolumn,needspace} \usepackage{booktabs,longtable,rotating,graphicx,verbatim,fancyhdr,datetime,afterpage,setspace} \usepackage{ifthen,calc,eso-pic,everyshi,pdfpages} \usepackage[abspath]{currfile} % \usepackage{mslapa} \definecolor{blaa}{RGB}{99,99,255} \DeclareGraphicsExtensions{.png,.pdf,.jpg} % Make the Sweave output nicer \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontsize=\footnotesize,fontshape=sl,formatcom=\color{Blue}} \DefineVerbatimEnvironment{Soutput}{Verbatim}{fontsize=\footnotesize,formatcom=\color{Maroon},xleftmargin=0em} \DefineVerbatimEnvironment{Scode}{Verbatim}{fontsize=\footnotesize} \fvset{listparameters={\setlength{\topsep}{0pt}}} \renewenvironment{Schunk}% {\renewcommand{\baselinestretch}{0.85} \vspace{\topsep}}% {\renewcommand{\baselinestretch}{1.00} \vspace{\topsep}} %---------------------------------------------------------------------- % The usual usefuls \input{useful.tex} \setcounter{secnumdepth}{2} \setcounter{tocdepth}{2} %---------------------------------------------------------------------- % How to insert a figure \newcommand{\rwpre}{./graph/gr} \newcommand{\insfig}[3]{ \begin{figure}[h] \centering \includegraphics[width=#2\textwidth]{\rwpre-#1} \caption{#3} \label{fig:#1} % \afterpage{\clearpage} \end{figure}} %---------------------------------------------------------------------- % Set up layout of pages \oddsidemargin 1mm \evensidemargin 1mm \topmargin -5mm \headheight 8mm \headsep 8mm \textheight 230mm \textwidth 165mm %\footheight 5mm \footskip 15mm \renewcommand{\topfraction}{0.9} \renewcommand{\bottomfraction}{0.9} \renewcommand{\textfraction}{0.1} \renewcommand{\floatpagefraction}{0.9} \renewcommand{\headrulewidth}{0.1pt} \setcounter{secnumdepth}{4} \setcounter{tocdepth}{4} %---------------------------------------------------------------------- % Here is the document starting with the titlepage \begin{document} %---------------------------------------------------------------------- % The title page \setcounter{page}{1} \pagenumbering{roman} \pagestyle{plain} \thispagestyle{empty} %\vspace*{0.1\textheight} \flushright {\Huge \bfseries \Title }\ \\[-1.5ex] \noindent\textcolor{blaa}{\rule[-1ex]{\textwidth}{5pt}}\\[2.5ex] \large \Where \\ \Homepage \\ \Dates \\ \Version \\[1em] \normalsize Compiled \today,\ \currenttime\\ from: \texttt{\currfileabspath}\\[1em] \normalsize \vfill \Faculty % End of titlepage \newpage \raggedright \parindent 1em \parskip 0ex % \section*{Preface} % Here is space for the preface % \input{preface} %---------------------------------------------------------------------- % Table of contents \tableofcontents \newpage % \listoftables % \listoffigures % \cleardoublepage %---------------------------------------------------------------------- % General page style \pagenumbering{arabic} \setcounter{page}{1} \pagestyle{fancy} \renewcommand{\sectionmark}[1]{\markright{%\thesection\ \textsl{#1}}{}} \fancyhead[EL]{\bf \thepage} \fancyhead[ER]{\sl \Tit} \fancyhead[OR]{\bf \thepage} \fancyhead[OL]{\rm \rightmark} \fancyfoot{} Epi/vignettes/useful.tex0000644000175100001440000002363113430576324015056 0ustar hornikusers% This is a file of useful extra commands snatched from % Michael Hills, David Clayton, Bendix Carstensen & Esa Laara. % % Commands to draw observation lines on follow-up diagrams % % Horizontal lines % \providecommand{\hfail}[1]{\begin{picture}(250,5) \put(0,0){\line(1,0){#1}} \put(#1,0){\circle*{5}} \end{picture}} \providecommand{\hcens}[1]{\begin{picture}(250,5) \put(0,0){\line(1,0){#1}} \put(#1,0){\line(0,1){2.5}} \put(#1,0){\line(0,-1){2.5}} \end{picture}} % % Diagonals for Lexis diagrams % \providecommand{\dfail}[1]{\begin{picture}(250,250) \put(0,0){\line(1,1){#1}} \put(#1,#1){\circle*{5}} \end{picture}} \providecommand{\dcens}[1]{\begin{picture}(250,250) \put(0,0){\line(1,1){#1}} % \put(#1,#1){\line(0,1){2.5}} % \put(#1,#1){\line(0,-1){2.5}} % BxC Changed this to an open circle instead of a line \put(#1,#1){\circle{5}} \end{picture}} % % Horizontal range diagrams % \providecommand{\hrange}[1]{\begin{picture}(200,5) \put(0,0){\circle*{5}} \put(0,0){\line(1,0){#1}} \put(0,0){\line(-1,0){#1}} \end{picture}} % % Tree drawing % \providecommand{\Tree}[3]{\setlength{\unitlength}{#1\unitlength}\begin{picture}(0,0) \put(0,0){\line(3, 2){1}} \put(0,0){\line(3,-2){1}} \put(0.81, 0.54){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.81,-0.54){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\Wtree}[3]{\setlength{\unitlength}{#1\unitlength}\begin{picture}(0,0) \put(0,0){\line(1, 1){1}} \put(0,0){\line(1,-1){1}} \put(0.8,0.8){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.8,-0.8){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\Ntree}[3]{\setlength{\unitlength}{#1\unitlength}\begin{picture}(0,0) \put(0,0){\line(2, 1){1}} \put(0,0){\line(2,-1){1}} \put(0.8,0.4){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.8,-0.4){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\Nutree}[3]{\setlength{\unitlength}{#1\unitlength}\begin{picture}(0,0) \put(0,0){\line(2, 1){#1}} \put(0,0){\line(2,-1){#1}} \put(0.8,0.4){\makebox(0,0)[br]{#2\ }} \put(0.8,-0.4){\makebox(0,0)[tr]{#3\ }} \end{picture}} % % Tree drawing % \providecommand{\tree}[3]{\setlength{\unitlength}{#1}\begin{picture}(0,0) \put(0,0){\line(3,2){1}} \put(0,0){\line(3,-2){1}} \put(0.81,0.54){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.81,-0.54){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\wtree}[3]{\setlength{\unitlength}{#1}\begin{picture}(0,0) \put(0,0){\line(1,1){1}} \put(0,0){\line(1,-1){1}} \put(0.8,0.8){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.8,-0.8){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\ntree}[3]{\setlength{\unitlength}{#1}\begin{picture}(0,0) \put(0,0){\line(2,1){1}} \put(0,0){\line(2,-1){1}} \put(0.8,0.4){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.8,-0.4){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\nutree}[3]{\begin{picture}(0,0) \put(0,0){\line(2,1){#1}} \put(0,0){\line(2,-1){#1}} \put(0.8,0.4){\makebox(0,0)[br]{#2\ }} \put(0.8,-0.4){\makebox(0,0)[tr]{#3\ }} \end{picture}} % % Other commands % \providecommand{\ip}[2]{\langle #1 \vert #2 \rangle} \providecommand{\I}{\text{\rm gI}} \providecommand{\prob}[0]{\text{\rm Pr}} \providecommand{\nhy}[0]{_{\oslash}} \providecommand{\true}[0]{_{\text{\rm \tiny T}}} \providecommand{\hyp}[0]{_{\text{\rm \tiny H}}} % \providecommand{\mpydiv}[0]{\stackrel{\textstyle \times}{\div}} % Changed to slightly smaller symbols \providecommand{\mpydiv}[0]{\stackrel{\scriptstyle\times}{\scriptstyle\div}} \providecommand{\mie}[1]{{\it #1}} \providecommand{\ie}{\textit{i.e.} } \providecommand{\eg}{\textit{e.g.} } \providecommand{\ea}{\textit{et al.} } \providecommand{\mycircle}[0]{\circle*{5}} \providecommand{\smcircle}[0]{\circle*{1}} \providecommand{\corner}[0]{_{\text{\rm \tiny C}}} \providecommand{\ind}[0]{\hspace{10pt}} \providecommand{\gap}[0]{\\[5pt]} \renewcommand{\S}[0]{section~} \providecommand{\blank}[0]{$\;\,$} \providecommand{\vone}{\vspace{1cm}} \providecommand{\ljust}[1]{\multicolumn{1}{l}{#1}} \providecommand{\cjust}[1]{\multicolumn{1}{c}{#1}} \providecommand{\transpose}{^{\text{\sf T}}} \providecommand{\histog}[5]{\rule{1mm}{#1mm}\,\rule{1mm}{#2mm}\,\rule{1mm}{#3mm}\,\rule{1mm}{#4mm}\,\rule{1mm}{#5mm}} \providecommand{\pmiss}{P_{\mbox{\tiny miss}}} % Below is BxCs commands inserted % Only works with hyperref package: \newcommand{\mailto}[1]{\href{mailto:#1}{\tt #1}} \providecommand{\bc}{\begin{center}} \providecommand{\ec}{\end{center}} \providecommand{\bd}{\begin{description}} \providecommand{\ed}{\end{description}} \providecommand{\bi}{\begin{itemize}} \providecommand{\ei}{\end{itemize}} \providecommand{\bn}{\begin{equation}} \providecommand{\en}{\end{equation}} \providecommand{\be}{\begin{enumerate}} \providecommand{\ee}{\end{enumerate}} \providecommand{\bes}{\begin{eqnarray*}} \providecommand{\ees}{\end{eqnarray*}} \DeclareMathOperator{\Pp}{P} \DeclareMathOperator{\pp}{p} % \providecommand{\p}{{\mathrm p}} \providecommand{\e}{{\mathrm e}} \providecommand{\D}{{\mathrm D}} \providecommand{\dif}{{\,\mathrm d}} \providecommand{\pmat}[1]{\Pp\!\left\{#1\right\}} \providecommand{\ptxt}[1]{\Pp\!\left\{\text{#1}\right\}} \providecommand{\E}{\operatorname{E}} \providecommand{\V}{\operatorname{V}} \providecommand{\BLUP}{\operatorname{BLUP}} \providecommand{\std}{\operatorname{std}} \providecommand{\sd}{\operatorname{s.d.}} \providecommand{\se}{\operatorname{s.e.}} \providecommand{\sem}{\operatorname{s.e.m.}} \providecommand{\Var}{\operatorname{var}} \providecommand{\VAR}{\operatorname{var}} \providecommand{\var}{\operatorname{var}} \providecommand{\cov}{\operatorname{cov}} \providecommand{\corr}{\operatorname{corr}} \providecommand{\mean}{\operatorname{mean}} \providecommand{\CV}{\operatorname{CV}} \providecommand{\median}{\operatorname{median}} \providecommand{\cv}{\operatorname{c.v.}} \providecommand{\erf}{\operatorname{erf}} \providecommand{\ef}{\operatorname{ef}} \providecommand{\SSD}{\operatorname{SSD}} \providecommand{\SPD}{\operatorname{SPD}} \providecommand{\odds}{\operatorname{odds}} \providecommand{\bin}{\operatorname{binom}} \providecommand{\half}{\frac{1}{2}} % \providecommand{\td}[0]{\stackrel{\textstyle \times}{\div}} % Changed to slightly smaller symbols \providecommand{\td}[0]{\stackrel{\scriptstyle \times}{\scriptstyle \div}} \providecommand{\dt}[0]{\stackrel{\scriptstyle \div}{\scriptstyle \times}} \providecommand{\diag}{\operatorname{diag}} \providecommand{\det}{\operatorname{det}} \providecommand{\dim}{\operatorname{dim}} \providecommand{\logit}{\operatorname{logit}} % \providecommand{\link}{\operatorname{link}} \providecommand{\spcol}{\operatorname{span}} \providecommand{\spn}{\operatorname{span}} \providecommand{\CI}{\operatorname{CI}} \providecommand{\IP}{\operatorname{IP}} \providecommand{\OR}{\operatorname{OR}} \providecommand{\RR}{\operatorname{RR}} \providecommand{\ER}{\operatorname{ER}} \providecommand{\EM}{\operatorname{EM}} \providecommand{\EF}{\operatorname{EF}} \providecommand{\RD}{\operatorname{RD}} \providecommand{\AC}{\operatorname{AC}} \providecommand{\AF}{\operatorname{AF}} \providecommand{\PAF}{\operatorname{PAF}} \providecommand{\AR}{\operatorname{AR}} \providecommand{\CR}{\operatorname{CR}} \providecommand{\PAR}{\operatorname{PAR}} \providecommand{\EL}{\operatorname{EL}} \providecommand{\ERL}{\operatorname{ERL}} \providecommand{\YLL}{\operatorname{YLL}} \providecommand{\SD}{\operatorname{SD}} \providecommand{\SE}{\operatorname{SE}} \providecommand{\SEM}{\operatorname{SEM}} \providecommand{\SR}{\operatorname{SR}} \providecommand{\SMR}{\operatorname{SMR}} \providecommand{\RSR}{\operatorname{RSR}} \providecommand{\CMF}{\operatorname{CMF}} \providecommand{\pvp}{\operatorname{PV$+$}} \providecommand{\pvn}{\operatorname{PV$-$}} \providecommand{\R}{{\textsf{\textbf{R}}}} \providecommand{\sas}{\textsl{\textbf{SAS}}} \providecommand{\SAS}{\textsl{\textbf{SAS}}} %\providecommand{\gap}[0]{\\[5pt]} %\providecommand{\blank}[0]{$\;\,$} % Conditional independence sign from Philip Dawid \providecommand{\cip}{\mbox{$\perp\!\!\!\perp$}} %%% Commands to comment out parts of the text \providecommand{\GLEM}[1]{} \providecommand{\FORGETIT}[1]{} \providecommand{\OMIT}[1]{} %%% Insert output from program in small text %%% (requires package verbatim) \providecommand{\insoutsmall}[1]{ \small \renewcommand{\baselinestretch}{0.8} \verbatiminput{#1} \renewcommand{\baselinestretch}{1.0} \normalsize } \providecommand{\insoutfoot}[1]{ \footnotesize \renewcommand{\baselinestretch}{0.8} \verbatiminput{#1} \renewcommand{\baselinestretch}{1.0} \normalsize } \providecommand{\insout}[1]{ \scriptsize \renewcommand{\baselinestretch}{0.8} \verbatiminput{#1} \renewcommand{\baselinestretch}{1.0} \normalsize } \providecommand{\insouttiny}[1]{ \tiny \renewcommand{\baselinestretch}{0.8} \verbatiminput{#1} \renewcommand{\baselinestretch}{1.0} \normalsize } % From Esa: \providecommand{\T}{\text{\rm \small{T}}} \providecommand{\id}{\operatorname{id}} \providecommand{\Dev}{\operatorname{Dev}} \providecommand{\Bin}{\operatorname{Bin}} \providecommand{\probit}{\operatorname{probit}} \providecommand{\cloglog}{\operatorname{cloglog}} % Special commands to include output from R, Bugs and Stata \providecommand{\Rin}[2]{ \subsection{\texttt{#1.R}} #2 \insout{./R/#1.Rout} } \providecommand{\Statain}[2]{ \subsection{\texttt{#1.do}} #2 \insout{./do/#1.log} } \providecommand{\Bugsin}[2]{ \subsection{\texttt{#1.bug}} #2 \insout{./bugs/#1.bug} } \newlength{\wdth} \providecommand{\fxbl}[1]{\settowidth{\wdth}{#1} \makebox[\wdth]{}} %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: Epi/vignettes/topreport.tex0000644000175100001440000001061413250443225015577 0ustar hornikusers%---------------------------------------------------------------------- % Packages %\usepackage[inline]{showlabels} %\usepackage[latin1]{inputenc} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[english]{babel} \usepackage[font=it,labelfont=normalfont]{caption} \usepackage[colorlinks,urlcolor=blue,linkcolor=red,citecolor=Maroon]{hyperref} \usepackage[ae,hyper]{Rd} \usepackage[dvipsnames]{xcolor} \usepackage[super]{nth} % \usepackage[retainorgcmds]{IEEEtrantools} \usepackage[noae]{Sweave} \usepackage{makeidx,floatflt,amsmath,amsfonts,amsbsy,enumitem,dcolumn,needspace} \usepackage{ifthen,calc,eso-pic,everyshi} \usepackage{booktabs,longtable,rotating,graphicx,subfig} \usepackage{pdfpages,verbatim,fancyhdr,datetime,afterpage} \usepackage[abspath]{currfile} % \usepackage{times} \renewcommand{\textfraction}{0.0} \renewcommand{\topfraction}{1.0} \renewcommand{\bottomfraction}{1.0} \renewcommand{\floatpagefraction}{0.9} % \usepackage{mslapa} \definecolor{blaa}{RGB}{99,99,255} \DeclareGraphicsExtensions{.png,.pdf,.jpg} % Make the Sweave output nicer (slightly mor compact) \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontsize=\small,fontshape=sl,formatcom=\color{BlueViolet}} \DefineVerbatimEnvironment{Soutput}{Verbatim}{fontsize=\small,formatcom=\color{Sepia},xleftmargin=0em} \DefineVerbatimEnvironment{Scode}{Verbatim}{fontsize=\small} \fvset{listparameters={\setlength{\topsep}{-0.1ex}}} \renewenvironment{Schunk}% {\renewcommand{\baselinestretch}{0.87} \vspace{\topsep}}% {\renewcommand{\baselinestretch}{1.00} \vspace{\topsep}} % \renewenvironment{knitrout} % {\renewcommand{\baselinestretch}{0.87}} % {\renewcommand{\baselinestretch}{1.00}} \input{useful} %---------------------------------------------------------------------- % Set up layout of pages \oddsidemargin 1mm \evensidemargin 1mm \topmargin -10mm \headheight 8mm \headsep 5mm \textheight 240mm \textwidth 165mm %\footheight 5mm \footskip 15mm \renewcommand{\topfraction}{0.9} \renewcommand{\bottomfraction}{0.9} \renewcommand{\textfraction}{0.1} \renewcommand{\floatpagefraction}{0.9} \renewcommand{\headrulewidth}{0.1pt} \setcounter{secnumdepth}{2} \setcounter{tocdepth}{3} %---------------------------------------------------------------------- % How to insert a figure in a .rnw file \newcommand{\rwpre}{./graph/gr} \newcommand{\insfig}[3]{ \begin{figure}[h] \centering \includegraphics[width=#2\textwidth]{\rwpre-#1} % \caption{#3} \caption{#3\hfill\mbox{\footnotesize \textrm{\tt \rwpre-#1}}} \label{fig:#1} % \afterpage{\clearpage} \end{figure}} \newcommand{\linput}[1]{ % \clearpage \afterpage{\hfill \ldots now input from \texttt{#1.tex}\\} \fancyfoot[OR,EL]{\footnotesize \texttt{#1.tex}} \input{#1}} %---------------------------------------------------------------------- % Here is the document starting with the titlepage \begin{document} %---------------------------------------------------------------------- % The title page \setcounter{page}{1} \pagenumbering{roman} \pagestyle{plain} \thispagestyle{empty} % \vspace*{0.05\textheight} \flushright % The blank below here is necessary in order not to muck up the % linespacing in title if it has more than 2 lines {\Huge \bfseries \Title }\ \\[-1.5ex] \noindent\textcolor{blaa}{\rule[-1ex]{\textwidth}{5pt}}\\[2.5ex] \large \Where \\ \Dates \\ \Homepage \\ \Version \\[1em] \normalsize Compiled \today,\ \currenttime\\ from: \texttt{\currfileabspath}\\[1em] % \input{wordcount} \normalsize \vfill \Faculty % End of titlepage % \newpage %---------------------------------------------------------------------- % Table of contents \tableofcontents % \listoftables % \listoffigures \clearpage % \begingroup % \let\clearpage\relax % \listoftables % \listoffigures % \endgroup %---------------------------------------------------------------------- % General text layout \raggedright \parindent 1em \parskip 0ex \cleardoublepage %---------------------------------------------------------------------- % General page style \pagenumbering{arabic} \setcounter{page}{1} \pagestyle{fancy} \renewcommand{\chaptermark}[1]{\markboth{\textsl{#1}}{}} \renewcommand{\sectionmark}[1]{\markright{\thesection\ \textsl{#1}}{}} \fancyhead[EL]{\bf \thepage \quad \rm \rightmark} \fancyhead[ER]{\rm \Tit} \fancyhead[OL]{\rm \leftmark} \fancyhead[OR]{\rm \rightmark \quad \bf \thepage} \fancyfoot{} Epi/vignettes/yll.rnw0000644000175100001440000004711714044200076014354 0ustar hornikusers%\VignetteIndexEntry{Years of life lost (YLL)} \SweaveOpts{results=verbatim, keep.source=TRUE, include=FALSE, eps=FALSE} \documentclass[a4paper, twoside, 12pt]{report} \newcommand{\Title}{Years of Life Lost (YLL) to disease\\Diabetes in DK as example} \newcommand{\Tit}{YLL} \newcommand{\Version}{February 1.2} \newcommand{\Dates}{November 2017} \newcommand{\Where}{SDC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/Epi}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk}\\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} <>= options(width=90, SweaveHooks=list(fig=function() par(mar=c(3, 3, 1, 1), mgp=c(3, 1, 0)/1.6, las=1, bty="n"))) @ % \renewcommand{\rwpre}{./yll} \chapter{Theory and technicalities} This vignette for the \texttt{Epi} package describes the probabilistic and demographic background for and technical implementation of the \texttt{erl} and \texttt{yll} functions that computes the expected residual life time and years of life lost in an illness-death model. \section{Years of life lost (YLL)} \ldots to diabetes or any other disease for that matter. The general concept in calculation of ``years lost to\ldots'' is the comparison of the expected lifetime between two groups of persons; one with and one without disease (in this example DM). The expected lifetime is the area under the survival curve, so basically the exercise requires that two survival curves that are deemed relevant be available. The years of life lost is therefore just the area between the survival curves for those ``Well'', $S_W(t)$, and for those ``Diseased'', $S_D(t)$: \[ \YLL = \int_0^\infty S_W(t) - S_D(t) \dif t \] The time $t$ could of course be age, but it could also be ``time after age 50'' and the survival curves compared would then be survival curves \emph{conditional} on survival till age 50, and the YLL would be the years of life lost for a 50-year old person with diabetes. If we are referring to the expected lifetime we will more precisely use the label expected residual lifetime, ERL. \section{Constructing the survival curves} YLL can be computed in two different ways, depending on the way the survival curve and hence the expected lifetime of a person \emph{without} diabetes is computed: \begin{itemize} \item Assume that the ``Well'' persons are \emph{immune} to disease --- using only the non-DM mortality rates throughout for calculation of expected life time. \item Assume that the ``Well'' persons \emph{can} acquire the disease and thereby see an increased mortality, thus involving all three rates shown in figure \ref{fig:states}. \end{itemize} The former gives a higher YLL because the comparison is to persons assumed immune to DM (and yet with the same mortality as non-immune prior to diagnosis), the latter gives a more realistic picture of the comparison of group of persons with and without diabetes at a given age that can be interpreted in the real world. The differences can be illustrated by figure \ref{fig:states}; the immune approach corresponds to an assumption of $\lambda(t)=0$ in the calculation of the survival curve for a person in the ``Well'' state. Calculation of the survival of a diseased person already in the ``DM'' state is unaffected by assumptions about $\lambda$. <>= library(Epi) TM <- matrix(NA, 4, 4) rownames(TM) <- colnames(TM) <- c("Well", "DM", "Dead", "Dead(DM)") TM[1, 2:3] <- TM[2, 4] <- 1 zz <- boxes(TM, boxpos = list(x = c(20, 80, 20, 80), y = c(80, 80, 20, 20)), wm = 1.5, hm = 4) @ We can edit the output from \texttt{boxes} <>= zz$Arrowtext <- c(expression(lambda), expression(mu[W]), expression(mu[D][M])) boxes(zz) @ % \insfig{states}{0.7}{Illness-death model describing diabetes incidence and -mortality.} \subsection{Total mortality --- a shortcut?} A practical crude shortcut could be to compare the ERL in the diabetic population to the ERL for the \emph{entire} population (that is use the total mortality ignoring diabetes status). Note however that this approach also counts the mortality of persons that acquired the disease earlier, thus making the comparison population on average more ill than the population we aim at, namely those well at a given time, which only then become more gradually ill. How large these effects are can however be empirically explored, as we shall do later. \subsection{Disease duration} In the exposition above there is no explicit provision for the effect of disease duration, but if we were able to devise mortality rates for any combination of age and duration, this could be taken into account. There are however severe limitations in this as we in principle would want to have duration effects as long as the age-effects --- in principle for all $(a, d)$ where $d\leq A$, where $A$ is the age at which we condition. So even if we were only to compute ERL from age, say, 40 we would still need duration effects up to 60 years (namely to age 100). The incorporation of duration effects is in principle trivial from a computational point of view, but we would be forced to entertain models predicting duration effects way beyond what is actually observed disease duration in any practical case. \subsection{Computing integrals} The practical calculations of survival curves, ERL and YLL involves calculation of (cumulative) integrals of rates and functions of these as we shall see below. This is easy if we have a closed form expression of the function, so its value may be computed at any time point --- this will be the case if we model rates by smooth parametric functions. Computing the (cumulative) integral of a function is done as follows: \begin{itemize} \item Compute the value of the function (mortality rate for example) at the midpoints of a sequence of narrow equidistant intervals --- for example one- or three month intervals of age, say. \item Take the cumulative sum of these values multiplied by the interval length --- this will be a very close approximation to the cumulative integral evaluated at the end of each interval. \item If the intervals are really small (like 1/100 year), the distinction between the value at the middle and at the end of each interval becomes irrelevant. \end{itemize} Note that in the above it is assumed that the rates are given in units corresponding to the interval length --- or more precisely, as the cumulative rates over the interval. \section{Survival functions in the illness-death model} The survival functions for persons in the ``Well'' state can be computed under two fundamentally different scenarios, depending on whether persons in the ``Well'' state are assumed to be immune to the disease ($\lambda(a)=0$) or not. \subsection{Immune approach} In this case both survival functions for person in the two states are the usual simple transformation of the cumulative mortality rates: \[ S_W(a) = \exp\left(-\int_0^a\!\!\mu_W(u) \dif u \right), \qquad S_D(a) = \exp\left(-\int_0^a\!\!\mu_D(u) \dif u \right) \] \subsubsection{Conditional survival functions} If we want the \emph{conditional} survival functions given survival to age $A$, say, they are just: \[ S_W(a|A) = S_W(a)/S_W(A), \qquad S_D(a|A) = S_D(a)/S_D(A) \] \subsection{Non-immune approach} For a diseased person, the survival function in this states is the same as above, but the survival function for a person without disease (at age 0) is (see figure \ref{fig:states}): \[ S(a) = \ptxt{Well}\!(a) + \ptxt{DM}\!(a) \] In the appendix of the paper \cite{Carstensen.2008c} is an indication of how to compute the probability of being in any of the four states shown in figure \ref{fig:states}, which I shall repeat here: In terms of the rates, the probability of being in the ``Well'' box is simply the probability of escaping both death (at a rate of $\mu_W(a)$) and diabetes (at a rate of $\lambda(a)$): \[ \ptxt{Well}(a) = \exp\left(\!-\int_0^a\!\!\mu_W(u)+\lambda(u) \right) \dif u \] The probability of being alive with diabetes at age $a$, is computed given that diabetes occurred at age $s$ ($s>= data(DMepi) @ % The dataset \texttt{DMepi} contains diabetes events, deaths and person-years for persons without diabetes and deaths and person-years for persons with diabetes: <<>>= str(DMepi) head(DMepi) @ % For each combination of sex, age, period and date of birth in 1 year age groups, we have the person-years in the ``Well'' (\texttt{Y.nD}) and the ``DM'' (\texttt{Y.DM}) states, as well as the number of deaths from these (\texttt{D.nD}, \texttt{D.DM}) and the number of incident diabetes cases from the ``Well'' state (\texttt{X}). In order to compute the years of life lost to diabetes and how this has changed over time, we fit models for the mortality and incidence of both groups (and of course, separately for men and women). The models we use will be age-period-cohort models \cite{Carstensen.2007a} providing estimated mortality rates for ages 0--99 and dates 1.1.1996--1.1.2016. First we transform the age and period variables to reflect the mean age and period in each of the Lexis triangles. We also compute the total number of deaths and amount of risk time, as we are going to model the total mortality as well. Finally we restrict the dataset to ages over 30 only: <<>>= DMepi <- transform(subset(DMepi, A>30), D.T = D.nD + D.DM, Y.T = Y.nD + Y.DM) head(DMepi) @ % With the correct age and period coding in the Lexis triangles, we fit models for the mortalities and incidences. Note that we for comparative purposes also fit a model for the \emph{total} mortality, ignoring the <<>>= # Knots used in all models (a.kn <- seq(40, 95, , 6)) (p.kn <- seq(1997, 2015, , 4)) (c.kn <- seq(1910, 1976, , 6)) # Check the number of events between knots ae <- xtabs(cbind(D.nD, D.DM, X) ~ cut(A, c(30, a.kn, Inf)) + sex, data=DMepi) ftable(addmargins(ae, 1), col.vars=3:2) pe <- xtabs(cbind(D.nD, D.DM, X) ~ cut(P, c(1990, p.kn, Inf)) + sex, data=DMepi) ftable(addmargins(pe, 1), col.vars=3:2) ce <- xtabs(cbind(D.nD, D.DM, X) ~ cut(P-A, c(-Inf, c.kn, Inf)) + sex, data=DMepi) ftable(addmargins(ce, 1), col.vars=3:2) # Fit an APC-model for all transitions, seperately for men and women mW.m <- glm(D.nD ~ -1 + Ns(A , knots=a.kn, int=TRUE) + Ns( P, knots=p.kn, ref=2005) + Ns(P-A, knots=c.kn, ref=1950), offset = log(Y.nD), family = poisson, data = subset(DMepi, sex=="M")) mD.m <- update(mW.m, D.DM ~ . , offset=log(Y.DM)) mT.m <- update(mW.m, D.T ~ . , offset=log(Y.T)) lW.m <- update(mW.m, X ~ .) # Model for women mW.f <- update(mW.m, data = subset(DMepi, sex=="F")) mD.f <- update(mD.m, data = subset(DMepi, sex=="F")) mT.f <- update(mT.m, data = subset(DMepi, sex=="F")) lW.f <- update(lW.m, data = subset(DMepi, sex=="F")) @ % \section{Residual life time and years lost to DM} We now collect the estimated years of life lost classified by method (immune assumption or not), sex, age and calendar time: <<>>= a.ref <- 30:90 p.ref <- 1996:2016 aYLL <- NArray(list(type = c("Imm", "Tot", "Sus"), sex = levels(DMepi$sex), age = a.ref, date = p.ref)) str(aYLL) system.time( for(ip in p.ref) { nd <- data.frame(A = seq(30, 90, 0.2)+0.1, P = ip, Y.nD = 1, Y.DM = 1, Y.T = 1) muW.m <- ci.pred(mW.m, nd)[, 1] muD.m <- ci.pred(mD.m, nd)[, 1] muT.m <- ci.pred(mT.m, nd)[, 1] lam.m <- ci.pred(lW.m, nd)[, 1] muW.f <- ci.pred(mW.f, nd)[, 1] muD.f <- ci.pred(mD.f, nd)[, 1] muT.f <- ci.pred(mT.f, nd)[, 1] lam.f <- ci.pred(lW.f, nd)[, 1] aYLL["Imm", "M", , paste(ip)] <- yll(int=0.2, muW.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Imm", "F", , paste(ip)] <- yll(int=0.2, muW.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Tot", "M", , paste(ip)] <- yll(int=0.2, muT.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Tot", "F", , paste(ip)] <- yll(int=0.2, muT.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Sus", "M", , paste(ip)] <- yll(int=0.2, muW.m, muD.m, lam=lam.m, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Sus", "F", , paste(ip)] <- yll(int=0.2, muW.f, muD.f, lam=lam.f, A=a.ref, age.in=30, note=FALSE)[-1] }) round(ftable(aYLL[, , seq(1, 61, 10), ], col.vars=c(3, 2)), 1) @ % We now have the relevant points for the graph showing YLL to diabetes for men and women by age, and calendar year, both under the immunity and susceptibility models for the calculation of YLL. <>= plyll <- function(wh){ par(mfrow=c(1, 2), mar=c(3, 3, 1, 1), mgp=c(3, 1, 0)/1.6, bty="n", las=1) matplot(a.ref, aYLL[wh, "M", , ], type="l", lty=1, col="blue", lwd=1:2, ylim=c(0, 12), xlab="Age", ylab="Years lost to DM", yaxs="i") abline(v=50, h=1:10, col=gray(0.7)) text(90, 11, "Men", col="blue", adj=1) text(40, aYLL[wh, "M", "40", "1996"], "1996", adj=c(0, 0), col="blue") text(43, aYLL[wh, "M", "44", "2016"], "2016", adj=c(1, 1), col="blue") matplot(a.ref, aYLL[wh, "F", , ], type="l", lty=1, col="red", lwd=1:2, ylim=c(0, 12), xlab="Age", ylab="Years lost to DM", yaxs="i") abline(v=50, h=1:10, col=gray(0.7)) text(90, 11, "Women", col="red", adj=1) text(40, aYLL[wh, "F", "40", "1996"], "1996", adj=c(0, 0), col="red") text(43, aYLL[wh, "F", "44", "2016"], "2016", adj=c(1, 1), col="red") } plyll("Imm") @ % <>= plyll("Tot") @ % <>= plyll("Sus") @ % \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-imm} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes, assuming the persons without diabetes at a given age remain free from diabetes (immunity assumption --- not reasonable). The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:imm} \end{figure} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-sus} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes, allowing the persons without diabetes at a given to contract diabetes and thus be subject to higher mortality. The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:sus} \end{figure} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-tot} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes. Allowance for susceptibility is approximated by using the total population mortality instead of non-DM mortality. The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:tot} \end{figure} From figure \ref{fig:sus} we see that for men aged 50 the years lost to diabetes has decreased from a bit over 8 to a bit less than 6 years, and for women from 8.5 to 5 years; so a greater improvement for women. \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2007a} B~Carstensen. \newblock Age-{P}eriod-{C}ohort models for the {L}exis diagram. \newblock {\em Statistics in Medicine}, 26(15):3018--3045, 2007. \bibitem{Carstensen.2008c} B~Carstensen, JK~Kristensen, P~Ottosen, and K~Borch-Johnsen. \newblock The {D}anish {N}ational {D}iabetes {R}egister: {T}rends in incidence, prevalence and mortality. \newblock {\em Diabetologia}, 51:2187--2196, 2008. \end{thebibliography} \addcontentsline{toc}{chapter}{References} \end{document} Epi/vignettes/fixall0000755000175100001440000000064314223741413014226 0ustar hornikusersrw flup rt flup bl flup mv flup.R ../inst/doc mv flup.pdf ../inst/doc rt crisk rw crisk bl crisk mv crisk.R ../inst/doc mv crisk.pdf ../inst/doc rt addLexis rw addLexis bl addLexis mv addLexis.R ../inst/doc mv addLexis.pdf ../inst/doc rt simLexis rw simLexis bl simLexis mv simLexis.R ../inst/doc mv simLexis.pdf ../inst/doc rt yll rw yll bl yll mv yll.R ../inst/doc mv yll.pdf ../inst/doc klean rm *.pdfEpi/vignettes/flup.rnw0000644000175100001440000016730414223742210014523 0ustar hornikusers%\VignetteIndexEntry{Analysis of follow-up data using the Lexis functions in Epi} \SweaveOpts{results=verbatim,keep.source=TRUE,include=FALSE,eps=FALSE} \documentclass[a4paper,dvipsnames,twoside,12pt]{report} \newcommand{\Title}{Analysis of follow-up data\\ using the \texttt{Lexis} functions in \texttt{Epi}} \newcommand{\Tit}{Follow-up with \texttt{Lexis}} \newcommand{\Version}{Version 7} \newcommand{\Dates}{April 2021} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/} } \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk} \\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./flup} <>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) library(Epi) installed.packages()["Epi", 1:3] @ % \chapter*{Introduction} \addcontentsline{toc}{chapter}{Introduction} This is an introduction to the \texttt{Lexis} machinery in the \texttt{Epi} package. The machinery is intended for representation and manipulation of follow-up data (event history data) from studies where exact dates of events are known. It accommodates follow-up through multiple states and on multiple time scales. This vignette uses an example from the \texttt{Epi} package to illustrate the set-up of a simple \texttt{Lexis} object (a data frame of follow-up intervals), as well as the subdivision of follow-up intervals needed for multistate representation and analysis of transition rates. The first chapter is exclusively on manipulation of the follow-up representation, but it points to the subsequent chapter where analysis is based on a \texttt{Lexis} representation with very small follow-up intervals. Chapter 2 uses analysis of mortality rates among Danish diabetes patients (available in the \texttt{Epi} package) currently on insulin treatment or not to illustrate the use of the the \texttt{Lexis} machinery. \section{History} The \texttt{Lexis} machinery in the \texttt{Epi} package was first conceived by Martyn Plummer\cite{Plummer.2011,Carstensen.2011a}, and since its first appearance in the \texttt{Epi} package in 2008 it has been expanded with a number of utilities. An overview of these can be found in the last chapter of this note: ``\texttt{Lexis} functions''. \chapter{Representation of follow-up data in the \texttt{Epi} package} In the \texttt{Epi}-package, follow-up data is represented by adding some extra variables and a few attributes to a data frame. Such a data frame is called a \texttt{Lexis} object. The tools for handling follow-up data then use the structure of this for special plots, tabulations and modeling. Follow-up data basically consists of a time of entry, a time of exit and an indication of the status at exit (normally either ``alive'' or ``dead'') for each person. Implicitly is also assumed a status \emph{during} the follow-up (usually ``alive''). \begin{figure}[htbp] \centering \setlength{\unitlength}{1pt} \begin{picture}(210,70)(0,75) %\scriptsize \thicklines \put( 0,80){\makebox(0,0)[r]{Age-scale}} \put( 50,80){\line(1,0){150}} \put( 50,80){\line(0,1){5}} \put(100,80){\line(0,1){5}} \put(150,80){\line(0,1){5}} \put(200,80){\line(0,1){5}} \put( 50,77){\makebox(0,0)[t]{35}} \put(100,77){\makebox(0,0)[t]{40}} \put(150,77){\makebox(0,0)[t]{45}} \put(200,77){\makebox(0,0)[t]{50}} \put( 0,115){\makebox(0,0)[r]{Follow-up}} \put( 80,105){\makebox(0,0)[r]{\small Two}} \put( 90,105){\line(1,0){87}} \put( 90,100){\line(0,1){10}} \put(100,100){\line(0,1){10}} \put(150,100){\line(0,1){10}} \put(180,105){\circle{6}} \put( 95,110){\makebox(0,0)[b]{1}} \put(125,110){\makebox(0,0)[b]{5}} \put(165,110){\makebox(0,0)[b]{3}} \put( 50,130){\makebox(0,0)[r]{\small One}} \put( 60,130){\line(1,0){70}} \put( 60,125){\line(0,1){10}} \put(100,125){\line(0,1){10}} \put(130,130){\circle*{6}} \put( 80,135){\makebox(0,0)[b]{4}} \put(115,135){\makebox(0,0)[b]{3}} \end{picture} \caption{\it Follow-up of two persons} \label{fig:fu2} \end{figure} \section{Time scales} A time scale is a variable that varies deterministically \emph{within} each person during follow-up, \textit{e.g.}: \begin{itemize} \item Age \item Calendar time \item Time since start of treatment \item Time since relapse \end{itemize} All time scales advance at the same pace, so the time followed is the same on all time scales. Therefore, it will suffice to use only the entry point on each of the time scales, for example: \begin{itemize} \item Age at entry \item Date of entry \item Time at treatment (\emph{at} treatment this is 0) \item Time at relapse (\emph{at} relapse this is 0) \end{itemize} For illustration we need to load the \texttt{Epi} package: <<>>= library(Epi) print( sessionInfo(), l=F ) @ % In the \texttt{Epi} package, follow-up in a cohort is represented in a \texttt{Lexis} object. As mentioned, a \texttt{Lexis} object is a data frame with some extra structure representing the follow-up. For the \texttt{DMlate} data --- follow-up of diabetes patients in Denmark recording date of birth, date of diabetes, date of insulin use, date of first oral drug use and date of death --- we can construct a \texttt{Lexis} object by: <<>>= data( DMlate ) head( DMlate ) dmL <- Lexis( entry = list( per=dodm, age=dodm-dobth, tfD=0 ), exit = list( per=dox ), exit.status = factor( !is.na(dodth), labels=c("DM","Dead") ), data = DMlate ) timeScales(dmL) @ % (The excluded persons are persons with date of diabetes equal to date of death.) The \texttt{entry} argument is a \emph{named} list with the entry points on each of the time scales we want to use. It defines the names of the time scales and the entry points of the follow-up of each person. The \texttt{exit} argument gives the exit time on \emph{one} of the time scales, so the name of the element in this list must match one of the names of the \texttt{entry} list. This is sufficient, because the follow-up time on all time scales is the same, in this case $\mathtt{dox}$-$\mathtt{dodm}$. The \texttt{exit.status} is a categorical variable (a \emph{factor}) that indicates the exit status --- in this case whether the person (still) is in state \texttt{DM} or exits to \texttt{Dead} at the end of follow-up. In principle we should also indicate the \texttt{entry.status}, but the default is to assume that all persons enter in the \emph{first} of the mentioned \texttt{exit.state}s --- in this case \texttt{DM}, because $\mathtt{FALSE}<\mathtt{TRUE}$. Now take a look at the result: <<>>= str(dmL) head(dmL)[,1:10] @ % The \texttt{Lexis} object \texttt{dmL} has a variable for each time scale which is the entry point on this time scale. The follow-up time is in the variable \texttt{lex.dur} (\texttt{dur}ation). Note that the exit status is in the variable \texttt{lex.Xst} (e\texttt{X}it \texttt{st}ate. The variable \texttt{lex.Cst} is the state where the follow-up takes place (\texttt{C}urrent \texttt{st}ate), in this case \texttt{DM} (alive with diabetes) for all persons. This implies that \emph{censored} observations are characterized by having $\mathtt{lex.Cst}=\mathtt{lex.Xst}$. There is a \texttt{summary} function for \texttt{Lexis} objects that lists the number of transitions and records as well as the total amount of follow-up time; it also (optionally) prints information about the names of the variables that constitute the time scales: <<>>= summary.Lexis( dmL, timeScales=TRUE ) @ % It is possible to get a visualization of the follow-up along the time scales chosen by using the \texttt{plot} method for \texttt{Lexis} objects. \texttt{dmL} is an object of \emph{class} \texttt{Lexis}, so using the function \texttt{plot()} on it means that \R\ will look for the function \texttt{plot.Lexis} and use this function. <>= plot( dmL ) @ % The function allows quite a bit of control over the output, and a \texttt{points.Lexis} function allows plotting of the endpoints of follow-up: <>= par(mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot(dmL, 1:2, lwd=1, col=c("blue","red")[dmL$sex], grid=TRUE, lty.grid=1, col.grid=gray(0.7), xlim=1960+c(0,60), xaxs="i", ylim= 40+c(0,60), yaxs="i", las=1) points(dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col="lightgray", lwd=3, cex=0.3) points(dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col=c("blue","red")[dmL$sex], lwd=1, cex=0.3) box(bty='o') @ % In the above code you will note that the values of the arguments \texttt{col} and \texttt{pch} are indexed by factors, using the convention in \R\ that the index is taken as \emph{number of the level} of the supplied factor. Thus \texttt{c("blue","red")[dmL\$sex]} is \texttt{"blue"} when \texttt{sex} is \texttt{M} (the first level). The results of these two plotting commands are in figure \ref{fig:Lexis-diagram}, p. \pageref{fig:Lexis-diagram}. \begin{figure}[tb] \centering \includegraphics[width=0.35\textwidth]{flup-dmL1} \includegraphics[width=0.63\textwidth]{flup-dmL2} \caption{\it Lexis diagram of the \textrm{\tt DMlate} dataset; left panel is the default version, right panel: plot with some bells and whistles. The red lines are for women, blue for men, crosses indicate deaths.} \label{fig:Lexis-diagram} \end{figure} \section{Splitting the follow-up time along a time scale} In next chapter we shall conduct statistical analysis of mortality rates, and a prerequisite for parametric analysis of rates is that follow-up time is subdivided in smaller intervals, where we can reasonably assume that rates are constant. The follow-up time in a cohort can be subdivided (``split'') along a time scale, for example current age. This is achieved by the \texttt{splitLexis} (note that it is \emph{not} called \texttt{split.Lexis}). This requires that the time scale and the breakpoints on this time scale are supplied. Try: <<>>= dmS1 <- splitLexis( dmL, "age", breaks=seq(0,100,5) ) summary( dmL ) summary( dmS1 ) @ % We see that the number of persons and events and the amount of follow-up is the same in the two data sets; only the number of records differ --- the extra records all have \texttt{lex.Cst}=\texttt{DM} and \texttt{lex.Xst}=\texttt{DM}. To see how records are split for each individual, it is useful to list the results for a few individuals (whom we selected with a view to the illustrative usefulness): <<>>= wh.id <- c(9, 27, 52, 484) subset(dmL , lex.id %in% wh.id)[,1:10] subset(dmS1, lex.id %in% wh.id)[,1:10] @ % The resulting object, \texttt{dmS1}, is again a \texttt{Lexis} object, and the follow-up may be split further along another time scale, for example diabetes duration, \texttt{tfD}. Subsequently we list the results for the chosen individuals: <<>>= dmS2 <- splitLexis(dmS1, "tfD", breaks=c(0,1,2,5,10,20,30,40)) subset( dmS2, lex.id %in% wh.id )[,1:10] @ % A more efficient (and more intuitive) way of making this double split is to use the \texttt{splitMulti} function from the \texttt{popEpi} package: <<>>= if (require(popEpi, quietly=TRUE)) { options("popEpi.datatable" = FALSE) dmM <- splitMulti(dmL, age = seq(0,100,5), tfD = c(0,1,2,5,10,20,30,40), drop = FALSE) summary(dmS2) summary(dmM) } @ % Note we used the argument \texttt{drop=FALSE} which will retain follow-up also outside the window defined by the range of the breaks. Otherwise, the default for \texttt{splitMulti} would be to drop follow-up outside \texttt{age} [0,100] and \texttt{tfD} [0,40]. This clipping behaviour is not available in \texttt{splitLexis}, nevertheless this may be exactly what we want in some situations. So we see that the two ways of splitting data yields the same amount of follow-up, but the results are not necessarily identical on all machines: <<>>= if (require(popEpi, quietly=TRUE)) { identical( dmS2, dmM ) class( dmS2 ) class( dmM ) } @ % As we see, this is because the \texttt{dmM} object also is a \texttt{data.table} object; the \texttt{splitMulti} uses the \texttt{data.table} machinery which makes the splitting substantially faster --- this is of particular interest if you operate on large data sets ($>100,000$ records). Thus the recommended way of splitting follow-up time is by \texttt{splitMulti}. But you should be aware that the result is a \texttt{data.table} object, which in some circumstances behaves slightly different from \texttt{data.frame}s. See the manual for \texttt{data.table}. \section{Cutting follow up time at dates of intermediate events} If we have a recording of the date of a specific event as for example recovery or relapse, we may classify follow-up time as being before or after this intermediate event, but it requires that follow-up records that straddle the event be cut in two and placed in separate records, one representing follow-up \emph{before} the intermediate event, and another representing follow-up \emph{after} the intermediate event. This is achieved with the function \texttt{cutLexis}, which takes three arguments: the time point of the intermediate event, the time scale that this point refers to, and the value of the (new) state following the date. Optionally, we may also define a new time scale with the argument \texttt{new.scale=}. We are interested in the time before and after inception of insulin use, which occurs at the date \texttt{doins}: <<>>= subset(dmL, lex.id %in% wh.id) dmC <- cutLexis( data = dmL, cut = dmL$doins, timescale = "per", new.state = "Ins", new.scale = "tfI") subset(dmC, lex.id %in% wh.id)[,1:10] @ % Note that the process of cutting time is simplified by having all types of events referred to the calendar time scale. This is a generally applicable advice in handling follow-up data: Get all event times as \emph{dates}, location of events and follow-up on other time scales can then easily be derived from this. Note that individual 52 has had his follow-up cut at 6.55 years from diabetes diagnosis and individual 484 at 5.70 years from diabetes diagnosis. This dataset could then be split along the time scales as we did before with \texttt{dmL}. The result of this can also be achieved by cutting the split dataset \texttt{dmS2} instead of \texttt{dmL}: <<>>= dmS2C <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM" ) subset( dmS2C, lex.id %in% wh.id ) @ % Thus it does not matter in which order we use \texttt{splitLexis} and \texttt{cutLexis}. Mathematicians would say that \texttt{splitLexis} and \texttt{cutLexis} are commutative. Note in \texttt{lex.id}=484, that follow-up subsequent to the event is classified as being in state \texttt{Ins}, but that the final transition to state \texttt{Dead} is preserved. This is the point of the \texttt{precursor.states=} argument. It names the states (in this case \texttt{DM}) that will be over-written by \texttt{new.state} (in this case \texttt{Ins}), while the state \texttt{Dead} should not be updated even if it is after the time where the persons moves to state \texttt{Ins}. In other words, only state \texttt{DM} is a precursor to state \texttt{Ins}, state \texttt{Dead} is always subsequent to state \texttt{Ins}. Note that we defined a new time scale, \texttt{tfI}, using the argument \texttt{new.scale=tfI}. This has a special status relative to the other three time scales, it is defined as time since entry into a state, namely \texttt{Ins}, this is noted in the time scale part of the summary of \texttt{Lexis} object --- the information sits in the attribute \texttt{time.since} of the \texttt{Lexis} object, which can be accessed by the function \texttt{timeSince()} or through the \texttt{summary()}: <<>>= summary(dmS2C, timeScales = TRUE) @ % Finally we can get a quick overview of the states and transitions by using \texttt{boxes} --- \texttt{scale.R} scales transition rates to rates per 1000 PY: <>= boxes(dmC, boxpos = TRUE, scale.R = 1000, show.BE = TRUE) @ % \insfig{box1}{0.8}{States, person years, transitions and rates in the cut dataset. The numbers \emph{in} the boxes are person-years and the number of persons \texttt{B}eginning, resp. \texttt{E}nding their follow-up in each state (triggered by \textrm{\tt show.BE=TRUE}). The numbers at the arrows are the number of transitions and transition rates per 1000 (triggered by \textrm{\tt scale.R=1000}).} \chapter{Modeling rates from \texttt{Lexis} objects} \section{Covariates} In the dataset \texttt{dmS2C} there are three types of covariates that can be used to describe mortality rates: \begin{enumerate} \item time-dependent covariates \item time scales \item fixed covariates \end{enumerate} There is only one time-dependent covariate here, namely \texttt{lex.Cst}, the current state of the person's follow up; it takes the values \texttt{DM} and \texttt{Ins} according to whether the person has ever purchased insulin at a given time of follow-up. The time-scales are obvious candidates for explanatory variables for the rates, notably age and time from diagnosis (duration of diabetes) and insulin. \subsection{Time scales as covariates} If we want to model the effect of the time scale variables on occurrence rates, we will for each interval use either the value of the left endpoint in each interval or the middle. There is a function \texttt{timeBand} which returns either of these: <<>>= timeBand( dmS2C, "age", "middle" )[1:10] # For nice printing and column labelling we use the data.frame() function: data.frame( dmS2C[,c("per","age","tfD","lex.dur")], mid.age=timeBand( dmS2C, "age", "middle" ), mid.t=timeBand( dmS2C, "tfD", "middle" ), left.t=timeBand( dmS2C, "tfD", "left" ), right.t=timeBand( dmS2C, "tfD", "right" ), fact.t=timeBand( dmS2C, "tfD", "factor" ) )[1:15,] @ % Note that the values of these functions are characteristics of the intervals defined by \texttt{breaks=}, \emph{not} the midpoints nor left or right endpoints of the actual follow-up intervals (which would be \texttt{tfD} and \texttt{tfD+lex.dur}, respectively). These functions are intended for modeling time scale variables as factors (categorical variables) in which case the coding must be independent of the censoring and mortality pattern --- it should only depend on the chosen grouping of the time scale. Modeling time scales as \emph{quantitative} should not be based on these codings but directly on the values of the time-scale variables, notably the left endpoints of the intervals. \subsection{Differences between time scales} Apparently, the only fixed variable is \texttt{sex}, but formally the dates of birth (\texttt{dobth}), diagnosis (\texttt{dodm}) and first insulin purchase (\texttt{doins}) are fixed covariates too. They can be constructed as origins of time scales referred to the calendar time scale. Likewise, and possibly of greater interest, we can consider these origins on the age scale, calculated as the difference between age and another time scale. These would then be age at birth (hardly relevant since it is the same for all persons), age at diabetes diagnosis and age at insulin treatment. \subsection{Keeping the relation between time scales} The midpoint (as well as the right interval endpoint) should be used with caution if the variable age at diagnosis \texttt{dodm-dobth} is modeled too; the age at diabetes is logically equal to the difference between current age (\texttt{age}) and time since diabetes diagnosis (\texttt{tfD}): <<>>= summary( (dmS2$age-dmS2$tfD) - (dmS2$dodm-dmS2$dobth) ) @ % This calculation refers to the \emph{start} of each interval --- which are in the time scale variables in the \texttt{Lexis} object. But when using the middle of the intervals, this relationship is not preserved: <<>>= summary( timeBand( dmS2, "age", "middle" ) - timeBand( dmS2, "tfD", "middle" ) - (dmS2$dodm-dmS2$dobth) ) @ % If all three variables are to be included in a model, we must make sure that the \emph{substantial} relationship between the variables be maintained. One way is to recompute age at diabetes diagnosis from the two midpoint variables, but more straightforward would be to use the left endpoint of the intervals, that is the time scale variables in the \texttt{Lexis} object. If we dissolve the relationship between the variables \texttt{age}, \texttt{tfD} and age at diagnosis by grouping we may obtain identifiability of the three separate effects, but it will be at the price of an arbitrary allocation of a linear trend between them. For the sake of clarity, consider current age, $a$, duration of disease, $d$ and age at diagnosis $e$, where \[ \text{current age} = \text{age at diagnosis} + \text{disease duration}, \quad \text{\ie} \quad a=e+d \quad \Leftrightarrow \quad e+d-a=0 \] If we model the effect of the quantitative variables $a$, $e$ and $d$ on the log-rates by three functions $f$, $g$ and $h$: $ \log(\lambda)=f(a)+g(d)+h(e) $ then for any $\kappa$: \begin{align*} \log(\lambda) & = f(a)+g(d)+h(e)+\kappa(e+d-a)\\ & = \big(f(a)-\kappa a \big)+ \big(g(d)+\kappa d \big)+ \big(h(e)+\kappa e \big) \\ & = \tilde f(a)+ \tilde g(d)+ \tilde h(e) \end{align*} In practical modeling this will turn up as a singular model matrix with one parameter aliased, corresponding to some arbitrarily chosen value of $\kappa$ (depending on software conventions for singular models). This phenomenon is well known from age-period-cohort models. Thus we see that we can move any slope around between the three terms, so if we achieve identifiability by using grouping of one of the variables we will in reality have settled for a particular value of $\kappa$, without known why we chose just that. The solution is to resort to predictions which are independent of the particular parametrization or choose a particular parametrization with explicit constraints. \section{Modeling of rates} As mentioned, the purpose of subdividing follow-up data in smaller intervals is to be able to model effects of time scale variables as parametric functions. When we split along a time scale we can get intervals that are as small as we want; if they are sufficiently small, an assumption of constant rates in each interval becomes reasonable. In a model that assumes a constant occurrence rate in each of the intervals the likelihood contribution from each interval is the same as the likelihood contribution from a Poisson variate $D$, say, with mean $\lambda \ell$ where $\lambda$ is the rate and $\ell$ is the interval length, and where the value of the variate $D$ is 1 or 0 according to whether an event has occurred or not. Moreover, the likelihood contributions from all follow-up intervals from a single person are \emph{conditionally} independent (conditional on having survived till the start of the interval in question). This implies that the total contribution to the likelihood from a single person is a product of terms, and hence the same as the likelihood of a number of independent Poisson terms, one from each interval. Note that variables are neither Poisson distributed (\eg they can only ever assume values 0 or 1) nor independent --- it is only the likelihood for the follow-up data that happens to be the same as the likelihood from independent Poisson variates. Different models can have the same likelihood, a model cannot be inferred from the likelihood. Parametric modeling of the rates is obtained by using the \emph{values} of the time scales for each interval as \emph{quantitative} explanatory variables, using for example splines. And of course also the values of the fixed covariates and the time-dependent variables for each interval. Thus the model will be one where the rate is assumed constant in each (small) interval, but where a parametric form of the \emph{size} of the rate in each interval is imposed by the model, using the time scale as a quantitative covariate. \subsection{Interval length} In the first chapter we illustrated cutting and splitting by listing the results for a few individuals across a number of intervals. For illustrational purposes we used 5-year age bands to avoid excessive listings, but since the doubling time for mortality on the age scale is only slightly larger than 5 years, the assumption about constant rates in each interval would be pretty far fetched if we were to use 5 year intervals. Thus, for modeling purposes we split the follow-up in 3 month intervals. When we use intervals of 3 months length it is superfluous to split along multiple time scales --- the precise location of tightly spaced splits will be irrelevant from any practical point of view. \texttt{splitLexis} and \texttt{splitMulti} will allocate the actual split times for all of the time scale variables, so these can be used directly in modeling. So we split the cut dataset in 3 months intervals along the age scale: <<>>= dmCs <- splitLexis( dmC, time.scale="age", breaks=seq(0, 110, 1/4) ) summary( dmCs, t=T ) @ % We see that we now have 228,748 records and 9996 persons, so about 23 records per person. The total risk time is 54,275 years, a bit less than 3 months on average per record as expected. \subsection{Practicalities for splines} In this study we want to look at how mortality depend on age (\texttt{age}) and time since start of insulin use (\texttt{tfI}). If we want to use splines in the description we must allocate knots for anchoring the splines at each of the time scales, either by some \textit{ad hoc} method or by using some sort of penalized splines as for example by \texttt{gam}; the latter will not be treated here; it belongs in the realm of the \texttt{mgcv} package. Here we shall use the former approach and allocate 5 knots on each of the time-scales. We allocate knots so that we have the events evenly distributed between the knots. Since the insulin state starts at 0 for all individuals we include 0 as the first knot, such that any set of natural splines with these knots will have the value 0 at 0 on the time scale. <<>>= ( a.kn <- with( subset( dmCs, lex.Xst=="Dead" ), quantile( age+lex.dur, (1:5-0.5)/5 ) ) ) ( i.kn <- c( 0, with( subset( dmCs, lex.Xst=="Dead" & lex.Cst=="Ins" ), quantile( tfI+lex.dur, (1:4)/5 ) ) ) ) @ % In the \texttt{Epi} package there is a convenience wrapper, \texttt{Ns}, for the \texttt{n}atural \texttt{s}pline generator \texttt{ns}, that takes the smallest and the largest of a set of supplied knots to be the boundary knots, so the explicit definition of the boundary knots becomes superfluous. Note that it is a feature of the \texttt{Ns} (via the features of \texttt{ns}) that any generated spline function is 0 at the leftmost knot. \subsection{Poisson models} A model that describes mortality rates as only a function of age would then be: <<>>= ma <- glm( (lex.Xst=="Dead") ~ Ns(age,knots=a.kn), family = poisson, offset = log(lex.dur), data = dmCs ) summary( ma ) @ % The offset, \texttt{log(lex.dur)} comes from the fact that the likelihood for the follow-up data during $\ell$ time is the same as that for independent Poisson variates with mean $\lambda \ell$, and that the default link function for the Poisson family is the log, so that we are using a linear model for the log-mean, $\log(\lambda) + \log(\ell)$. But when we want a model for the log-rate ($\log(\lambda)$), the term $\log(\ell)$ must still be included as a covariate, but with regression coefficient fixed to 1; a so-called \emph{offset}. This is however a technicality; it just exploits that the likelihood of a particular Poisson model and that of the rates model is the same. In the \texttt{Epi} package is a \texttt{glm} family, \texttt{poisreg} that has a more intuitive interface, where the response is a 2-column matrix of events and person-time, respectively. This is in concert with the fact that the outcome variable in follow-up studies is bivariate: (event, risk time). <<>>= Ma <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn), family = poisreg, data = dmCs ) summary( Ma ) @ % Exploiting the multistate structure in the \texttt{Lexis} object there is a multistate convenience wrapper for \texttt{glm} with the \texttt{poisreg} family, that just requires specification of the transitions in terms of \texttt{from} and \texttt{to}. Although it is called \texttt{glm.Lexis} it is \emph{not} an S3 method for \texttt{Lexis} objects: <<>>= Xa <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) ) @ % The result is a \texttt{glm} object but with an extra attribute, \texttt{Lexis}: <<>>= attr( Xa, "Lexis" ) @ % There are similar wrappers for \texttt{gam} and \texttt{coxph} models, \texttt{gam.Lexis} and \texttt{coxph.Lexis}, but these will not be elaborated in detail. The \texttt{from=} and \texttt{to=} can even be omitted, in which case all possible transitions \emph{into} any of the absorbing states is modeled: <<>>= xa <- glm.Lexis( dmCs, formula = ~ Ns(age,knots=a.kn) ) @ We can check if the four models fitted are the same: <<>>= c( deviance(ma), deviance(Ma), deviance(Xa), deviance(xa) ) @ % Oops! the model \texttt{Xa} is apparently not the same as the other three? This is because the explicit specification \verb|from="DM", to="Dead"|, omits modeling contributions from the $\mathtt{Ins}\rightarrow\mathtt{Dead}$ transition --- the output actually said so --- see also figure \ref{fig:box1} on p. \pageref{fig:box1}. The other three models all use both transitions --- and assume that the two transition rates are the same, \ie that start of insulin has no effect on mortality. We shall relax this assumption later. The parameters from the model do not have any direct interpretation \textit{per se}, but we can compute the estimated mortality rates for a range of ages using \texttt{ci.pred} with a suitably defined prediction data frame. Note that if we use the \texttt{poisson} family of models, we must specify all covariates in the model, including the variable in the offset, \texttt{lex.dur} (remember that this was a covariate with coefficient fixed at 1). We set the latter to 1000, because we want the mortality rates per 1000 person-years. Using the \texttt{poisreg} family, the prediction will ignore any value of \texttt{lex.dur} specified in the prediction data frame, the returned rates will be per unit in which \texttt{lex.dur} is recorded. <>= nd <- data.frame( age=40:85, lex.dur=1000 ) pr.0 <- ci.pred( ma, newdata = nd ) # mortality per 100 PY pr.a <- ci.pred( Ma, newdata = nd )*1000 # mortality per 100 PY summary(pr.0/pr.a) matshade( nd$age, pr.a, plot=TRUE, type="l", lty=1, log="y", xlab="Age (years)", ylab="DM mortality per 1000 PY") @ % \insfig{pr-a}{0.8}{Mortality among Danish diabetes patients by age with 95\% CI as shaded area. We see that the rates increase linearly on the log-scale, that is exponentially by age.} \section{Time dependent covariate} A Poisson model approach to mortality by insulin status, would be to assume that the rate-ratio between patients on insulin and not on insulin is a fixed quantity, independent of time since start of insulin, independent of age. This is commonly termed a proportional hazards assumption, because the rates (hazards) in the two groups are proportional along the age (baseline time) scale. <<>>= pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + lex.Cst + sex, family=poisreg, data = dmCs ) round( ci.exp( pm ), 3 ) @ % So we see that persons on insulin have about twice the mortality of persons not on insulin and that women have 2/3 the mortality of men. \subsection{Time since insulin start} If we want to test whether the excess mortality depends on the time since start if insulin treatment, we can add a spline terms in \texttt{tfI}. But since \texttt{tfI} is a time scale defined as time since entry into a new state (\texttt{Ins}), the variable \texttt{tfI} will be missing for those in the \texttt{DM} state, so before modeling we must set the \texttt{NA}s to 0, which we do with \texttt{tsNA20} (acronym for \texttt{t}ime\texttt{s}cale \texttt{NA}s to zero): <<>>= pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex, family=poisreg, data = tsNA20(dmCs) ) @ % As noted before we could do this simpler with \texttt{glm.Lexis}, even without the \texttt{from=} and \texttt{to=} arguments, because we are modeling all transitions \emph{into} the absorbing state (\texttt{Dead}): <<>>= Pm <- glm.Lexis( tsNA20(dmCs), form = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex ) c( deviance(Pm), deviance(pm) ) identical( model.matrix(Pm), model.matrix(pm) ) @ % The coding of the effect of \texttt{tfI} is so that the value is 0 at 0, so the meaning of the estimate of the effect of \texttt{lex.Cst} is the RR between persons with and without insulin, immediately after start of insulin: <<>>= round( ci.exp( Pm, subset="ex" ), 3 ) @ % We see that the effect of sex is pretty much the same as before, but the effect of \texttt{lex.Cst} is much larger, it now refers to a different quantity, namely the RR at \texttt{tfI}=0. If we want to see the effect of time since insulin, it is best viewed jointly with the effect of age: <>= ndI <- data.frame( expand.grid( tfI=c(NA,seq(0,15,0.1)), ai=seq(40,80,10) ), sex="M", lex.Cst="Ins" ) ndI <- transform( ndI, age=ai+tfI ) head( ndI ) ndA <- data.frame( age= seq(40,100,0.1), tfI=0, lex.Cst="DM", sex="M" ) pri <- ci.pred( Pm, ndI ) * 1000 pra <- ci.pred( Pm, ndA ) * 1000 matshade( ndI$age, pri, plot=TRUE, las=1, xlab="Age (years)", ylab="DM mortality per 1000 PY", log="y", lty=1, col="blue" ) matshade( ndA$age, pra ) @ % \insfig{ins-time}{0.8}{Mortality rates of persons on insulin, starting insulin at ages 40,50,\ldots,80 (blue), compared with persons not on insulin (black curve). Shaded areas are 95\% CI.} In figure \ref{fig:ins-time}, p. \pageref{fig:ins-time}, we see that mortality is high just after insulin start, but falls by almost a factor 3 during the first year. Also we see that there is a tendency that mortality in a given age is smallest for those with the longest duration of insulin use. \section{The Cox model} Note that in the Cox-model the age is used as response variable, slightly counter-intuitive. Hence the age part of the linear predictors is not in that model: <<>>= library( survival ) cm <- coxph( Surv(age,age+lex.dur,lex.Xst=="Dead") ~ Ns(tfI,knots=i.kn) + lex.Cst + sex, data = tsNA20(dmCs) ) @ % There is also a multistate wrapper for Cox models, requiring a l.h.s. side for the \texttt{formula=} argument: <<>>= Cm <- coxph.Lexis( tsNA20(dmCs), form= age ~ Ns(tfI,knots=i.kn) + lex.Cst + sex ) cbind( ci.exp( cm ), ci.exp( Cm ) ) @ % We can compare the estimates from the Cox model with those from the Poisson model --- we must add \texttt{NA}s because the Cox-model does not give the parameters for the baseline time scale (\texttt{age}), but also remove one of the parameters, because \texttt{coxph} parametrizes factors (in this case \texttt{lex.Cst}) by all defined levels and not only by the levels present in the dataset at hand (note the line of \texttt{1.0000000}s in the print above): <<>>= round( cbind( ci.exp( Pm ), rbind( matrix(NA,5,3), ci.exp( cm )[-6,] ) ), 3 ) @ % Thus we see that the Poisson and Cox gives pretty much the same results. You may argue that Cox requires a smaller dataset, because there is no need to subdivide data in small intervals \emph{before} insulin use. But certainly the time \emph{after} insulin inception need to be if the effect of this time should be modeled. The drawback of the Cox-modeling is that it is not possible to show the absolute rates as we did in figure \ref{fig:ins-time} on \pageref{fig:ins-time}. \section{Marginal effect of time since insulin} When we plot the marginal effect of \texttt{tfI} from the two models we get pretty much the same; here we plot the RR relative to \texttt{tfI}=2 years. Note that we are deriving the RR as the ratio of two sets of predictions, from the data frames \texttt{nd} and \texttt{nr} --- for further details consult the help page for \texttt{ci.lin}, specifically the use of a list as the \texttt{ctr.mat} argument: <>= nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 2 , lex.Cst="Ins", sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), plot=T, lty=c(1,2), log="y", xlab="Time since insulin (years)", ylab="Rate ratio") abline( h=1, lty=3 ) @ % \insfig{Ieff}{0.8}{The naked duration effects relative to 2 years of duration, black from Poisson model, red from Cox model. The two sets of estimates are identical, and so are the standard errors, so the two shaded areas overlap almost perfectly.} In figure \ref{fig:Ieff}, p. \pageref{fig:Ieff}, we see that the duration effect is exactly the same from the two modeling approaches. We will also want the RR relative to the non-insulin users --- recall these are coded 0 on the \texttt{tfI} variable: <>= nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 0 , lex.Cst="DM" , sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), xlab="Time since insulin (years)", ylab="Rate ratio relative to non-Insulin", lty=c(1,2), log="y", plot=T ) @ % \insfig{IeffR}{0.8}{Insulin duration effect (state \textrm{\tt Ins}) relative to no insulin (state \textrm{\tt DM}), black from Poisson model, red from Cox model. The \emph{shape} is the same as the previous figure, but the RR is now relative to non-insulin, instead of relative to insulin users at 2 years duration. The two sets of estimates are identical, and so are the standard errors, so the two shaded areas overlap almost perfectly.} In figure \ref{fig:IeffR}, p. \pageref{fig:IeffR}, we see the effect of increasing duration of insulin use \emph{for a fixed age} which is a bit artificial, so we would like to see the \emph{joint} effects of age and insulin duration. What we cannot see is how the duration affects mortality relative to \texttt{current} age (at the age attained at the same time as the attained \texttt{tfI}). Another way of interpreting this curve is as the rate ratio relative to a person not on insulin, so we see that the RR (or hazard ratio, HR as some call it) is over 5 at the start of insulin (the \texttt{lex.Cst} estimate), and decreases to about 1.5 in the long term. Both figure \ref{fig:Ieff} and \ref{fig:IeffR} indicate a declining RR by insulin duration, but only from figure \ref{fig:ins-time} it is visible that mortality actually is \emph{in}creasing by age after some 2 years after insulin start. This point would not be available if we had only fitted a Cox model where we did not have access to the baseline hazard as a function of age. \section{Age$\times$duration interaction} The model we fitted assumes that the RR is the same regardless of the age at start of insulin --- the hazards are multiplicative. Sometimes this is termed the proportional hazards assumption: For \emph{any} fixed age the HR is the same as a function of time since insulin, and vice versa. A more correct term would be ``main effects model'' --- there is no interaction between age (the baseline time scale) and other covariates. So there is really no need for the term ``proportional hazards''; well defined and precise statistical terms for it has existed for aeons. \subsection{Age at insulin start} In order to check the consistency of the multiplicativity assumption across the spectrum of age at insulin inception, we can fit an interaction model. One approach to this would be using a non-linear effect of age at insulin use (for convenience we use the same knots as for age) --- note that the prediction data frames are the same as we used above, because we do not compute age at insulin use as a separate variable, but rather enter it as the difference between current age (\texttt{age}) and insulin duration (\texttt{tfI}). At first glance we might think of doing: <<>>= imx <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) @ % But this will fit a model with a rate-ratio between persons with and without insulin that depends only on age at insulin start for the time \emph{after} insulin start, the RR at \texttt{tfI}=0 will be the same at any age, which really is not the type of interaction we wanted. We want the \texttt{age-tfI} term to be specific for the insulin exposed so we may use one of two other approaches, that are conceptually alike but mathematically different: <<>>= Im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns((age-tfI)*(lex.Cst=="Ins"),knots=a.kn) + lex.Cst + sex ) im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + lex.Cst:Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) @ % The first model (\texttt{Im}) has a common age-effect (\texttt{Ns(age,...}) for persons with and without diabetes and a RR depending on insulin duration \texttt{tfI} and age at insulin (\texttt{age-tfI}). Since the linear effect of these two terms are in the model as well, a linear trend in the RR by current age (\texttt{age}) is accommodated as well. The second model allows age-effects that differ non-linearly between person with and without insulin, because the interaction term \texttt{lex.Cst:Ns(age-tfI...} for persons not on insulin is merely an age term (since \texttt{tfI} is coded 0 for all follow-up not on insulin). We can compare the models fitted: <<>>= anova( imx, Im, im, test='Chisq') @ so we see that the models indeed are different, and moreover that the last model does not provide substantial further improvement, by allowing non-linear RR along the age-scale. We can illustrate the different estimated rates from the three models in figure \ref{fig:dur-int}, p. \pageref{fig:dur-int}: <>= pxi <- ci.pred( imx, ndI ) pxa <- ci.pred( imx, ndA ) pIi <- ci.pred( Im , ndI ) pIa <- ci.pred( Im , ndA ) pii <- ci.pred( im , ndI ) pia <- ci.pred( im , ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pxi, pIi, pii)*1000, plot=T, log="y", xlab="Age", ylab="Mortality per 1000 PY", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) matshade( ndA$age, cbind( pxa, pIa, pia)*1000, lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) @ % \insfig{dur-int}{0.8}{Age at insulin as interaction between age and duration. Blue curves are from the naive interaction model \textrm{\tt imx} with identical $\RR$ at \textrm{\tt tfI}=0 at any age; green curves are from the interaction model with age at insulin, from the model \textrm{\tt Im} with only linear differences by age, and red lines from the full interaction model \textrm{\tt im}.} We can also plot the RRs only from these models (figure \ref{fig:dur-int-RR}, p. \pageref{fig:dur-int-RR}); for this we need the reference frames, and the machinery from \texttt{ci.exp} allowing a list of two data frames: <>= ndR <- transform( ndI, tfI=0, lex.Cst="DM" ) cbind( head(ndI), head(ndR) ) Rxi <- ci.exp( imx, list(ndI,ndR) ) Rii <- ci.exp( im , list(ndI,ndR) ) RIi <- ci.exp( Im , list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( Rxi, RIi, Rii), plot=T, log="y", xlab="Age (years)", ylab="Rate ratio vs, non-Insulin", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) abline( h=1 ) abline( h=ci.exp(imx,subset="lex.Cst")[,1], lty="25", col="blue" ) @ % \insfig{dur-int-RR}{0.9}{RR from three different interaction models. The horizontal dotted line is at the estimated effect of \textrm{\tt lex.Cst}, to illustrate that the first model (blue) constrains this initial HR to be constant across age. The green curves are the extended interaction model, and the red the full one.} \clearpage \subsection{General interaction} As a final illustration we may want to explore a different kind of interaction, not defined from the duration --- here we simplify the interaction by not using the second-last knot in the interaction terms --- figure \ref{fig:splint}, p. \pageref{fig:splint}. Note again that the prediction code is the same: <>= gm <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst:Ns(age,knots=a.kn):Ns(tfI,knots=i.kn) + lex.Cst + sex ) pgi <- ci.pred( gm, ndI ) pga <- ci.pred( gm, ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pgi, pii )*1000, plot=T, lty=c("solid","21"), lend="butt", lwd=2, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", alpha=c(0.2,0.1), col=c("black","red") ) matshade( ndA$age, cbind( pga, pia )*1000, lty=c("solid","21"), lend="butt", lwd=2, alpha=c(0.2,0.1), col=c("black","red") ) @ % \insfig{splint}{0.8}{Spline-by-spline interaction between age and duration (model \textrm{\tt gm}, black), and the interaction using a non-linear effect of age at entry (model \textrm{\tt im}, red), corresponding to the red curves in figure \ref{fig:dur-int}.} This is in figure \ref{fig:splint}, p. \pageref{fig:splint}. \subsection{Evaluating interactions} Here we see that the interaction effect is such that in the older ages the length of insulin use has an increasing effect on mortality. Even though there is no statistically significant interaction between age and time since start of insulin, it would be illustrative to show the RR as a function of age at insulin and age at follow-up: <>= ndR <- transform( ndI, lex.Cst="DM", tfI=0 ) iRR <- ci.exp( im, ctr.mat=list(ndI,ndR) ) gRR <- ci.exp( gm, ctr.mat=list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind(gRR,iRR), lty=1, log="y", plot=TRUE, xlab="Age (years)", ylab="Rate ratio: Ins vs. non-Ins", col=c("black","red") ) abline( h=1 ) @ % $ \insfig{RR-int}{0.8}{The effect of duration of insulin use at different ages of follow-up (and age at insulin start). Estimates are from the model with an interaction term using a non-linear effect of age at insulin start (model \textrm{\tt im}, red) and using a general spline interactions (model \textrm{\tt gm}, black). It appears that the general interaction over-models a bit.} This is in figure \ref{fig:RR-int}, p. \pageref{fig:RR-int}. The advantage of the parametric modeling (be that with age at insulin or general spline interaction) is that it is straight-forward to \emph{test} whether we have an interaction. \section{Separate models} In the above we insisted on making a joint model for the \texttt{DM}$\rightarrow$\texttt{Dead} and the \texttt{Ins}$\rightarrow$\texttt{Dead} transitions, but with the complications demonstrated it would actually have been more sensible to model the two transitions separately: <<>>= dmd <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) + sex ) ind <- glm.Lexis( dmCs, from="Ins", to="Dead", formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + sex ) ini <- ci.pred( ind, ndI ) dmi <- ci.pred( dmd, ndI ) dma <- ci.pred( dmd, ndA ) @ % The estimated mortality rates are shown in figure \ref{fig:sep-mort}, p. \pageref{fig:sep-mort}, using: <>= par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ini*1000, plot=TRUE, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", lwd=2, col="red" ) matshade( ndA$age, dma*1000, lwd=2, col="black" ) @ % The estimated RRs are computed using that the estimates from the two models are uncorrelated, and hence qualify for \texttt{ci.ratio} (this and the previous graph appear in figure \ref{fig:Ins-noIns}, p. \pageref{fig:Ins-noIns}) <>= par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ci.ratio(ini,dmi), plot=TRUE, log="y", xlab="Age (years)", ylab="RR insulin vs. no insulin", lwd=2, col="red" ) abline( h=1 ) @ % \begin{figure}[tb] \centering \includegraphics[width=0.49\textwidth]{flup-sep-mort} \includegraphics[width=0.49\textwidth]{flup-sep-HR} \caption{\it Left panel: Mortality rates from separate models for the two mortality transitions; the \textrm{\tt DM}$\rightarrow$\textrm{\tt Dead} transition modeled by age alone; \textrm{\tt Ins}$\rightarrow$\textrm{\tt Dead} transition modeled with spline effects of current age, time since insulin and and age at insulin. \newline Right panel: Mortality HR of insulin vs. no insulin.} \label{fig:Ins-noIns} \end{figure} \chapter{More states} \section{Subdividing states} It may be of interest to subdivide the states following the intermediate event according to whether the event has occurred or not. This will enable us to address the question of the fraction of the patients that ever go on insulin. This is done by the argument \texttt{split.states=TRUE}. <<>>= dmCs <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM", split.states = TRUE ) summary( dmCs ) @ % We can illustrate the numbers and the transitions (figure \ref{fig:box4}, p. \pageref{fig:box4}) <>= boxes( dmCs, boxpos=list(x=c(15,15,85,85), y=c(85,15,85,15)), scale.R=1000, show.BE=TRUE ) @ % $ \insfig{box4}{0.7}{Transitions between 4 states: the numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} Note that it is only the mortality rates that we have been modeling, namely the transitions \texttt{DM}$\rightarrow$\texttt{Dead} and \texttt{Ins}$\rightarrow$\texttt{Dead(Ins)}. If we were to model the cumulative risk of using insulin we would also need a model for the DM$\rightarrow$Ins transition. Subsequent to that we would then compute the probability of being in each state conditional on suitable starting conditions. With models where transition rates depend on several time scales this is not a trivial task. This is treated in more detail in the vignette on \texttt{simLexis}. \section{Multiple intermediate events} We may be interested in starting either insulin or OAD (oral anti-diabetic drugs), thus giving rise to more states and more time scales. This can be accomplished by the \texttt{mcutLexis} function, that generalizes \texttt{cutLexis}: <<>>= dmM <- mcutLexis( dmL, timescale = "per", wh = c("doins","dooad"), new.states = c("Ins","OAD"), new.scales = c("tfI","tfO"), precursor.states = "DM", ties.resolve = TRUE ) summary( dmM, t=T ) @ We see that we now have two time scales defined as entry since into states. <<>>= wh <- c(subset(dmM, lex.Cst == "Ins-OAD")$lex.id[1:2], subset(dmM, lex.Cst == "OAD-Ins")$lex.id[1:2]) options(width = 80) subset(dmM, lex.id %in% wh) @ % We can also illustrate the transitions to the different states, as in figure \ref{fig:mbox}: <>= boxes( dmM, boxpos=list(x=c(15,80,40,40,85,85), y=c(50,50,90,10,90,10)), scale.R=1000, show.BE=TRUE ) @ % \insfig{mbox}{1.0}{Boxes for the \textrm{\tt dmM} object. The numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} We may not be interested in whether persons were prescribed insulin before OAD or vice versa, in which case we would combine the levels with both insulin and OAD to one, regardless of order (figure \ref{fig:mboxr}): <>= summary( dmMr <- Relevel( dmM, list('OAD+Ins'=5:6), first=FALSE) ) boxes( dmMr, boxpos=list(x=c(15,50,15,85,85), y=c(85,50,15,85,15)), scale.R=1000, show.BE=TRUE ) @ % \insfig{mboxr}{1.0}{Boxes for the \textrm{\tt dmMr} object with collapsed states. The numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} Diagrams as those in figures \ref{fig:mbox} and \ref{fig:mboxr} gives an overview of the possible transitions, which states it might be relevant to collapse, and which transitions to model and how. The actual modeling of the transition rates is straightforward; split the data along some timescale and then use \texttt{glm.Lexis} or \texttt{gam.Lexis}, where it is possible to select the transitions modelled. This is also possible with the \texttt{coxph.Lexis} function, but it requires that a single time scale be selected as the baseline time scale, and the effect of this will not be accessible. \chapter{\texttt{Lexis} functions} The \texttt{Lexis} machinery has evolved over time since it was first introduced in a workable version in \texttt{Epi\_1.0.5} in August 2008. Over the years there have been additions of tools for handling multistate data. Here is a list of the current functions relating to \texttt{Lexis} objects with a very brief description; it does not replace the documentation. Unless otherwise stated, functions named \texttt{something.Lexis} (with a ``\texttt{.}'') are S3 methods for \texttt{Lexis} objects, so you can skip the ``\texttt{.Lexis}'' in daily use. \setlist{noitemsep} \begin{description} \item[Define]\ \\ \begin{description} \item[\texttt{Lexis}] defines a \texttt{Lexis} object \end{description} \item[Cut and split]\ \\ \begin{description} \item[\texttt{cutLexis}] cut follow-up at intermediate event \item[\texttt{mcutLexis}] cut follow-up at multiple intermediate events, keeping track of history \item[\texttt{rcutLexis}] cut follow-up at intermediate, possibly recurring, events, only recording the current state \item[\texttt{countLexis}] cut follow-up at intermediate event time and count the no. events so far \item[\texttt{splitLexis}] split follow up along a time scale \item[\texttt{splitMulti}] split follow up along a time scale --- from the \texttt{popEpi} package, faster and has simpler syntax than \texttt{splitLexis} \item[\texttt{addCov.Lexis}] add clinical measurements at a given date to a \texttt{Lexis} object \item[\texttt{addDrug.Lexis}] add drug exposures to a \texttt{Lexis} object \end{description} \item[Boxes and plots]\ \\ \begin{description} \item[\texttt{boxes.Lexis}] draw a diagram of states and transitions \item[\texttt{plot.Lexis}] draw a standard Lexis diagram \item[\texttt{points.Lexis}] add points to a Lexis diagram \item[\texttt{lines.Lexis}] add lines to a Lexis diagram \item[\texttt{PY.ann.Lexis}] annotate life lines in a Lexis diagram \end{description} \item[Summarize and query]\ \\ \begin{description} \item[\texttt{summary.Lexis}] overview of transitions, risk time etc. \item[\texttt{levels.Lexis}] what are the states in the \texttt{Lexis} object \item[\texttt{nid.Lexis}] number of persons in the \texttt{Lexis} object --- how many unique values of \texttt{lex.id} are present \item[\texttt{entry}] entry time \item[\texttt{exit}] exit time \item[\texttt{status}] status at entry or exit \item[\texttt{timeBand}] factor of time bands \item[\texttt{timeScales}] what time scales are in the \texttt{Lexis} object \item[\texttt{timeSince}] what time scales are defined as time since a given state \item[\texttt{breaks}] what breaks are currently defined \item[\texttt{absorbing}] what are the absorbing states \item[\texttt{transient}] what are the transient states \item[\texttt{preceding}, \texttt{before}] which states precede this \item[\texttt{succeeding}, \texttt{after}] which states can follow this \item[\texttt{tmat.Lexis}] transition matrix for the \texttt{Lexis} object \end{description} \item[Manipulate]\ \\ \begin{description} \item[\texttt{subset.Lexis}, \texttt{[}] subset of a \texttt{Lexis} object \item[\texttt{merge.Lexis}] merges a \texttt{Lexis} objects with a \texttt{data.frame} \item[\texttt{cbind.Lexis}] bind a \texttt{data.frame} to a \texttt{Lexis} object \item[\texttt{rbind.Lexis}] put two \texttt{Lexis} objects head-to-foot \item[\texttt{transform.Lexis}] transform and add variables \item[\texttt{tsNA20}] turn \texttt{NA}s to 0s for time scales \item[\texttt{factorize.Lexis}] turn \texttt{lex.Cst} and \texttt{lex.Xst} into factors with levels equal to the actually occurring values in both \item[\texttt{Relevel.Lexis}] reorder and/or combine states \item[\texttt{rm.tr}] remove transitions from a \texttt{Lexis} object \item[\texttt{bootLexis}] bootstrap sample of \emph{persons} (\texttt{lex.id}) in the \texttt{Lexis} object \end{description} \item[Simulate]\ \\ \begin{description} \item[\texttt{simLexis}] simulate a \texttt{Lexis} object from specified transition rate models \item[\texttt{nState}, \texttt{pState}] count state occupancy from a simulated \texttt{Lexis} object \item[\texttt{plot.pState}, \texttt{lines.pState}] plot state occupancy from a \texttt{pState} object \end{description} \item[Stack]\ \\ \begin{description} \item[\texttt{stack.Lexis}] make a stacked object for simultaneous analysis of transitions --- returns a \texttt{stacked.Lexis} object \item[\texttt{subset.stacked.Lexis}] subsets of a \texttt{stacked.Lexis} object \item[\texttt{transform.stacked.Lexis}] transform a \texttt{stacked.Lexis} object \end{description} \item[Interface to other packages]\ \\ \begin{description} \item[\texttt{msdata.Lexis}] interface to \texttt{mstate} package \item[\texttt{etm.Lexis}] interface to \texttt{etm} package \item[\texttt{crr.Lexis}] interface to \texttt{cmprsk} package \end{description} \item[Statistical models] --- these are \emph{not} S3 methods \begin{description} \item[\texttt{glm.Lexis}] fit a \texttt{glm} model using the \texttt{poisreg} family to (hopefully) time split data \item[\texttt{gam.Lexis}] fit a \texttt{gam} model (from the \texttt{mgcv} package) using the \texttt{poisreg} family to (hopefully) time split data \item[\texttt{coxph.Lexis}] fit a Cox model to follow-up in a \texttt{Lexis} object \end{description} \end{description} \renewcommand{\bibname}{References} \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2011a} B~Carstensen and M~Plummer. \newblock Using {L}exis objects for multi-state models in {R}. \newblock {\em Journal of Statistical Software}, 38(6):1--18, 1 2011. %% \bibitem{Iacobelli.2013} %% S~Iacobelli and B~Carstensen. %% \newblock {Multiple time scales in multi-state models}. %% \newblock {\em Stat Med}, 32(30):5315--5327, Dec 2013. \bibitem{Plummer.2011} M~Plummer and B~Carstensen. \newblock Lexis: An {R} class for epidemiological studies with long-term follow-up. \newblock {\em Journal of Statistical Software}, 38(5):1--12, 1 2011. \end{thebibliography} \addcontentsline{toc}{chapter}{\bibname} \end{document} Epi/vignettes/simLexis.rnw0000644000175100001440000012656514044200152015351 0ustar hornikusers%\VignetteIndexEntry{Simulation of multistate models with multiple timescales: simLexis} \SweaveOpts{results=verbatim,keep.source=TRUE,include=FALSE,eps=FALSE} \documentclass[a4paper,dvipsnames,twoside,12pt]{report} \newcommand{\Title}{Simulation of\\ multistate models with\\ multiple timescales:\\ \texttt{simLexis} in the \texttt{Epi} package} \newcommand{\Tit}{Multistate models with multiple timescales} \newcommand{\Version}{Version 2.6} \newcommand{\Dates}{\today} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://BendixCarstensen.com/Epi/simLexis.pdf}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk}\\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./simLexis} <>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) @ % \chapter{Using \texttt{simLexis}} \section{Introduction} This vignette explains the machinery behind simulation of life histories through multistate models implemented in \texttt{simLexis}. In \texttt{simLexis} transition rates are allowed to depend on multiple time scales, including timescales defined as time since entry to a particular state (duration). This therefore also covers the case where time \emph{at} entry into a state is an explanatory variable for the rates, since time at entry is merely time minus duration. Thus, the set-up here goes beyond Markov- and semi-Markov-models, and brings simulation based estimation of state-occupancy probabilities into the realm of realistic multistate models. The basic idea is to simulate a new \texttt{Lexis} object \cite{Plummer.2011,Carstensen.2011a} as defined in the \texttt{Epi} package for \R, based on 1) a multistate model defined by its states and the transition rates between them and 2) an initial population of individuals. Thus the output will be a \texttt{Lexis} object describing the transitions of a predefined set of persons through a multistate model. Therefore, if persons are defined to be identical at start, then calculation of the probability of being in a particular state at a given time boils down to a simple enumeration of the fraction of the persons in the particular state at the given time. Bar of course the (binomial) simulation error, but this can be brought down by simulation a sufficiently large number of persons. An observed \texttt{Lexis} object with follow-up of persons through a number of states will normally be the basis for estimation of transition rates between states, and thus will contain all information about covariates determining the occurrence rates, in particular the \emph{timescales} \cite{Iacobelli.2013}. Hence, the natural input to simulation from an estimated multistate model will typically be an object of the same structure as the originally observed. Since transitions and times are what is simulated, any values of \texttt{lex.Xst} and \texttt{lex.dur} in the input object will of course be ignored. This first chapter of this vignette shows by an example how to use the function \texttt{simLexis} and display the results. The second chapter discusses in more detail how the simulation machinery is implemented and is not needed for the practical use of \texttt{simLexis}. \section{\texttt{simLexis} in practice} This section is largely a commented walk-trough of the example from the help-page of \texttt{simLexis}, with a larger number of simulated persons in order to minimize the pure simulation variation. When we want to simulate transition times through a multistate model where transition rates may depend on time since entry to the current or a previous state, it is essential that we have a machinery to keep track of the transition time on \emph{all} time scales, as well as a mechanism that can initiate a new time scale to 0 when a transition occurs to a state where we shall use time since entry as determinant of exit rates from that state. This is provided by \texttt{simLexis}. \subsection{Input for the simulation} Input for simulation of a single trajectory through a multistate model requires a representation of the \emph{current status} of a person; the starting conditions. The object that we supply to the simulation function must contain information about all covariates and all timescales upon which transitions depend, and in particular which one(s) of the timescales that are defined as time since entry into a particular state. Hence, starting conditions should be represented as a \texttt{Lexis} object (where \texttt{lex.dur} and \texttt{lex.Xst} are ignored, since there is no follow-up yet), where the time scale information is in the attributes \texttt{time.scales} and \texttt{time.since} respectively. Note that \texttt{time.scales} attribute is a vector of names of variables in the \texttt{Lexis} object, so all of these variables should be present even if they are not used in the models for the transitions, and they should be set to 0; if they are not in the initial dataset, \texttt{simLexis} will crash, if they are \texttt{NA}, the \texttt{simLexis} will produce an object with 0 rows. Thus there are two main arguments to a function to simulate from a multistate model: \begin{enumerate} \item A \texttt{Lexis} object representing the initial states and covariates of the population to be simulated. This has to have the same structure as the original \texttt{Lexis} object representing the multistate model from which transition rates in the model were estimated. As noted above, the values for \texttt{lex.Xst} and \texttt{lex.dur} are not required (since these are the quantities that will be simulated). \item A transition object, representing the transition intensities between states, which should be a list of lists of intensity representations. As an intensity representation we mean a function that for a given \texttt{Lexis} object can be used to produce estimates of the transition intensities at a set of supplied time points. The names of the elements of the transition object (which are lists) will be names of the \emph{transient} states, that is the states \emph{from} which a transition can occur. The names of the elements of each of these lists are the names of states \emph{to} which transitions can occur (which may be either transient or absorbing states). Hence, if the transition object is called \texttt{Tr} then \verb+TR$A$B+ (or \verb+Tr[["A"]][["B"]]+) will represent the transition intensity from state \texttt{A} to the state \texttt{B}. The entries in the transition object can be either \texttt{glm} objects (either with \texttt{poisson} or \texttt{poisreg} family), representing Poisson models for the transitions, \texttt{coxph} objects representing an intensity model along one time scale, or simply a function that takes a \texttt{Lexis} object as input and returns an estimated intensity for each row. \end{enumerate} In addition to these two input items, there will be a couple of tuning parameters. The output of the function will simply be a \texttt{Lexis} object with simulated transitions between states. This will be the basis for deriving sensible statistics from the \texttt{Lexis} object --- see next section. \section{Setting up a \texttt{Lexis} object} As an example we will use the \texttt{DMlate} dataset from the \texttt{Epi} package; it is a dataset simulated to resemble a random sample of 10,000 patients from the Danish National Diabetes Register. We start by loading the \texttt{Epi} package: <>= options( width=90 ) library( Epi ) print( sessionInfo(), l=F ) @ % First we load the diabetes data and set up a simple illness-death model: <>= data(DMlate) dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) @ % This is just data for a simple survival model with states \texttt{DM} and \texttt{Dead}. Now we cut the follow-up at insulin start, which for the majority of patients (T2D) is a clinical indicator of deterioration of disease regulation. We therefore also introduce a new timescale, and split the non-precursor states, so that we can address the question of ever having been on insulin: <>= dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins", new.scale = "t.Ins", split.states = TRUE ) summary( dmi, timeScales=T ) @ % $ Note that we show the time scales in the \texttt{Lexis} object, and that it is indicated that the time scale \texttt{t.Ins} is defined as time since entry into stat state \texttt{Ins.} We can show how many person-years we have and show the number of transitions and transition rates (per 1000), using the \texttt{boxes.Lexis} function to display the states and the number of transitions between them: <>= boxes( dmi, boxpos = list(x=c(20,20,80,80), y=c(80,20,80,20)), scale.R = 1000, show.BE = TRUE ) @ % \insfig{boxes}{0.8}{Data overview for the \textrm{\tt dmi} dataset. Numbers in the boxes are person-years and the number of persons who begin, resp. end their follow-up in each state, and numbers on the arrows are no. of transitions and rates (transition intensities) per 1000 PY.} \section{Analysis of rates} In the \texttt{Lexis} object (which is just a data frame) each person is represented by one record for each transient state occupied, thus in this case either 1 or 2 records; those who have a recorded time both without and with insulin have two records. In order to be able to fit Poisson models with occurrence rates varying by the different time-scales, we split the follow-up in 3-month intervals for modeling: <>= Si <- splitLexis( dmi, seq(0,20,1/4), "DMdur" ) summary( Si ) print( subset( Si, lex.id==97 )[,1:10], digits=6 ) @ % Note that when we split the follow-up, each person's follow up now consists of many records, each with the \emph{current} values of the timescales at the start of the interval represented by the record. In the modeling we shall assume that the rates are constant within each 6-month interval, but the \emph{size} of these rates we model as smooth functions of the time scales (that is the values at the beginning of each interval). The approach often used in epidemiology where one parameter is attached to each interval of time (or age) is not feasible when more than one time scale is used, because intervals are not classified the same way on all timescales. We shall use natural splines (restricted cubic splines) for the analysis of rates, and hence we must allocate knots for the splines. This is done for each of the time-scales, and separately for the transition out of states \texttt{DM} and \texttt{Ins}. For age, we place the knots so that the number of events is the same between each pair of knots, but only half of this beyond each of the boundary knots, whereas for the timescales \texttt{DMdur} and \texttt{tIns} where we have observation from a well-defined 0, we put knots at 0 and place the remaining knots so that the number of events is the same between each pair of knots as well as outside the boundary knots. <>= nk <- 5 ( ai.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( ad.kn <- with( subset(Si,lex.Xst=="Dead"), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( di.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( dd.kn <- with( subset(Si,lex.Xst=="Dead"), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( ti.kn <- with( subset(Si,lex.Xst=="Dead(Ins)"), c(0,quantile( t.Ins+lex.dur, probs=(1:(nk-1))/nk ) )) ) @ % Note that when we tease out the event records for transition to \emph{transient} states (in this case \texttt{Ins}, that is \verb|lex.Xst=="Ins"|), we should add \verb|lex.Cst!=lex.Xst|, to include only transition records and avoiding including records of sojourn time in the transient state. We then fit Poisson models to transition rates, using the wrapper \texttt{Ns} from the \texttt{Epi} package to simplify the specification of the rates: <>= library( splines ) DM.Ins <- glm( (lex.Xst=="Ins") ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="DM") ) ci.exp( DM.Ins ) class( DM.Ins ) @ % We can also fit this model with a slightly simpler syntax using the \texttt{glm.Lexis} function: <<>>= DM.Ins <- glm.Lexis( Si, from = "DM", to = "Ins", formula = ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex ) ci.exp( DM.Ins ) class( DM.Ins ) @ % So we have a slightly simpler syntax, and we get an informative message of which transition(s) we are modeling. However we do not have \texttt{update} method for these objects. <<>>= DM.Dead <- glm.Lexis( Si, from = "DM", to = "Dead", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + I(Per-2000) + sex ) Ins.Dead <- glm.Lexis( Si, from = "Ins", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + Ns( t.Ins, knots=ti.kn ) + I(Per-2000) + sex ) @ % Note the similarity of the code used to fit the three models, is is mainly redefining the response variable (\texttt{to} state) and the subset of the data used (\texttt{from} state). Also note that the last model need no specification of \texttt{to}, the default is to model all transitions from the \texttt{from} state, and his case there is only one. \section{The mortality rates} This section discusses in some detail how to extract ad display the mortality rates from the models fitted. But it is not necessary for understanding how to use \texttt{simLexis} in practice. \subsection{Proportionality of mortality rates} Note that we have fitted separate models for the three transitions, there is no assumption of proportionality between the mortality rates from \texttt{DM} and \texttt{Ins}. However, there is nothing that prevents us from testing this assumption; we can just fit a model for the mortality rates in the entire data frame \texttt{Si}, and compare the deviance from this with the sum of the deviances from the separate models using the \texttt{glm.Lexis} function: <>= All.Dead <- glm.Lexis( Si, to = c("Dead(Ins)","Dead"), formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + lex.Cst + I(Per-2000) + sex ) round( ci.exp( All.Dead ), 3 ) @ % Incidentally we could have dispensed with the \texttt{to=} argument too, because the default is to take \texttt{to} to be all absorbing states in the model. From the parameter values we would in a simple setting just claim that start of insulin-treatment was associated with a slightly more than doubling of mortality. The model \texttt{All.dead} assumes that the age- and DM-duration effects on mortality in the \texttt{DM} and \texttt{Ins} states are the same, and moreover that there is no effect of insulin duration, but merely a mortality that is larger by a multiplicative constant not depending on insulin duration. The model \texttt{DM.Dead} has 8 parameters to describe the dependency on age and DM duration, the model \texttt{Ins.Dead} has 12 for the same plus the insulin duration (a natural spline with $k$ knots gives $k-1$ parameters, and we chose $k=5$ above). We can compare the fit of the simple proportional hazards model with the fit of the separate models for the two mortality rates, by adding up the deviances and d.f. from these: <>= what <- c("null.deviance","df.null","deviance","df.residual") ( rD <- unlist( DM.Dead[what] ) ) ( rI <- unlist( Ins.Dead[what] ) ) ( rA <- unlist( All.Dead[what] ) ) round( c( dd <- rA-(rI+rD), "pVal"=1-pchisq(dd[3],dd[4]+1) ), 3 ) @ % Thus we see there is a substantial non-proportionality of mortality rates from the two states; but a test provides no clue whatsoever to the particular \emph{shape} of the non-proportionality. To this end, we shall explore the predicted mortalities under the two models quantitatively in more detail. Note that the reason that there is a difference in the null deviances (and a difference of 1 in the null d.f.) is that the null deviance of \texttt{All.Dead} refer to a model with a single intercept, that is a model with constant and \emph{identical} mortality rates from the states \texttt{DM} and \texttt{Ins}, whereas the null models for \texttt{DM.Dead} and \texttt{Ins.Dead} have constant but \emph{different} mortality rates from the states \texttt{DM} and \texttt{Ins}. This is however irrelevant for the comparison of the \emph{residual} deviances. \subsection{How the mortality rates look} If we want to see how the mortality rates are modelled in \texttt{DM.Dead} and \texttt{Ins.Dead} in relation to \texttt{All.Dead}, we make a prediction of rates for say men diagnosed in different ages and going on insulin at different times after this. So we consider men diagnosed in ages 40, 50, 60 and 70, and who either never enter insulin treatment or do it 0, 2 or 5 years after diagnosis of DM. To this end we create a prediction data frame where we have observation times from diagnosis and 12 years on (longer would not make sense as this is the extent of the data). But we start by setting up an array to hold the predicted mortality rates, classified by diabetes duration, age at diabetes onset, time of insulin onset, and of course type of model. What we want to do is to plot the age-specific mortality rates for persons not on insulin, and for persons starting insulin at different times after DM. The mortality curves start at the age where the person gets diabetes and continues 12 years; for persons on insulin they start at the age when they initiate insulin. <>= pr.rates <- NArray( list( DMdur = seq(0,12,0.1), DMage = 4:7*10, r.Ins = c(NA,0,2,5), model = c("DM/Ins","All"), what = c("rate","lo","hi") ) ) str( pr.rates ) @ % For convenience the \texttt{Epi} package contains a function that computes predicted (log-)rates with c.i. --- it is merely a wrapper for \texttt{predict.glm}. So we set up the prediction data frame and modify it in loops over ages at onset and insulin onset in order to collect the predicted rates in different scenarios: <>= nd <- data.frame( DMdur = as.numeric( dimnames(pr.rates)[[1]] ), lex.Cst = factor( 1, levels=1:4, labels=levels(Si$lex.Cst) ), sex = factor( 1, levels=1:2, labels=c("M","F")) ) @ % $ Note that we did \emph{not} insert \texttt{lex.dur} as covariate in the prediction frame. This would be required if we used the \texttt{poisson} family with the \texttt{glm}, but the wrapper \texttt{glm.Lexis} uses the \texttt{poisreg} family, so \texttt{lex.dur} is ignored and predictions always comes in the (inverse) units of \texttt{lex.dur}. So we get rates per 1 person-year in the predictions. <>= for( ia in dimnames(pr.rates)[[2]] ) { dnew <- transform( nd, Age = as.numeric(ia)+DMdur, Per = 1998+DMdur ) pr.rates[,ia,1,"DM/Ins",] <- ci.pred( DM.Dead, newdata = dnew ) pr.rates[,ia,1,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) for( ii in dimnames(pr.rates)[[3]][-1] ) { dnew = transform( dnew, lex.Cst = factor( 2, levels=1:4, labels=levels(Si$lex.Cst) ), t.Ins = ifelse( (DMdur-as.numeric(ii)) >= 0, DMdur-as.numeric(ii), NA ) ) pr.rates[,ia, ii ,"DM/Ins",] <- ci.pred( Ins.Dead, newdata = dnew ) pr.rates[,ia, ii ,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) } } @ % $ So for each age at DM onset we make a plot of the mortality as function of current age both for those with no insulin treatment and those that start insulin treatment 0, 2 and 5 years after diabetes diagnosis, thus 4 curves (with c.i.). These curves are replicated with a different color for the simplified model. <>= par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1 ) plot( NA, xlim=c(40,82), ylim=c(5,300), bty="n", log="y", xlab="Age", ylab="Mortality rate per 1000 PY" ) abline( v=seq(40,80,5), h=outer(1:9,10^(0:2),"*"), col=gray(0.8) ) for( aa in 4:7*10 ) for( ii in 1:4 ) matshade( aa+as.numeric(dimnames(pr.rates)[[1]]), cbind( pr.rates[,paste(aa),ii,"DM/Ins",], pr.rates[,paste(aa),ii,"All" ,] )*1000, type="l", lty=1, lwd=2, col=c("red","limegreen") ) @ % \insfig{mort-int}{0.9}{Estimated mortality rates for male diabetes patients with no insulin (lower sets of curves) and insulin (upper curves), with DM onset in age 40, 50, 60 and 70. The red curves are from the models with separate age effects for persons with and without insulin, and a separate effect of insulin duration. The green curves are from the model with common age-effects and only a time-dependent effect of insulin, assuming no effect of insulin duration (the classical time-dependent variable approach). Hence the upper green curve is common for any time of insulin inception.} From figure \ref{fig:mort-int} we see that there is a substantial insulin-duration effect which is not accommodated by the simple model with only one time-dependent variable to describe the insulin effect. Note that the simple model (green curves) for those on insulin does not depend in insulin duration, and hence the mortality curves for those on insulin are just parallel to the mortality curves for those not on insulin, regardless of diabetes duration (or age) at the time of insulin initiation. This is the proportional hazards assumption. Thus the effect of insulin initiation is under-estimated for short duration of insulin and over-estimated for long duration of insulin. This is the major discrepancy between the two models, and illustrates the importance of being able to accommodate different time scales, but there is also a declining overall insulin effect by age which is not accommodated by the proportional hazards approach. Finally, this plot illustrates an important feature in reporting models with multiple timescales; all timescales must be represented in the predicted rates, only reporting the effect of one timescale, conditional on a fixed value of other timescales is misleading since all timescales by definition advance at the same pace. For example, the age-effect for a fixed value of insulin duration really is a misnomer since it does not correspond to any real person's follow-up, but to the mortality of persons in different ages but with the same duration of insulin use. \section{Input to the \texttt{simLexis} function} We want to estimate the cumulative probability of being in each of the 4 states, so that we can assess the fraction of diabetes pateints that go on insulin In order to simulate from the multistate model with the estimated transition rates, and get the follow-up of a hypothetical cohort, we must supply \emph{both} the transition rates and the structure of the model \emph{as well as} the initial cohort status to \texttt{simLexis}. \subsection{The transition object} We first put the models into an object representing the transitions; note this is a list of lists, the latter having \texttt{glm} objects as elements: <>= Tr <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = DM.Dead ), "Ins" = list( "Dead(Ins)" = Ins.Dead ) ) @ % Now we have the description of the rates and of the structure of the model. The \texttt{Tr} object defines the states and models for all transitions between them; the object \verb|Tr$A$B| is the model for the transition intensity from state \texttt{A} to state \texttt{B}. \subsection{The initial cohort} We now define an initial \texttt{Lexis} object of persons with all relevant covariates defined. Note that we use \texttt{NULL} as row indicator in the \texttt{Lexis} object we used for modeling; this conserves the \texttt{time.scale} and \texttt{time.since} attributes which are needed for the simulation: <>= str( ini <- Si[NULL,1:9] ) @ % We now have an empty \texttt{Lexis} object with attributes reflecting the timescales in the multistate model we want to simulate from. But we must enter some data to represent the initial state of the persons whose follow-up we want to simulate through the model; so fill in data for one man and one woman: <>= ini[1:2,"lex.id"] <- 1:2 ini[1:2,"lex.Cst"] <- "DM" ini[1:2,"Per"] <- 1995 ini[1:2,"Age"] <- 60 ini[1:2,"DMdur"] <- 5 ini[1:2,"sex"] <- c("M","F") ini @ % So the persons starts in age 60 in 1995 with 5 years of diabetes duration. Note that the \texttt{t.Ins} is \texttt{NA}, because this is a timescale that first comes alive if a transtion to \texttt{Ins} is simulated. \section{Simulation of the follow-up} Now we simulate life-courses of a 1000 of each of these persons using the estimated model. The \texttt{t.range} argument gives the times range where the integrated intensities (cumulative rates) are evaluated and where linear interpolation is used when simulating transition times. Note that this must be given in the same units as \texttt{lex.dur} in the \texttt{Lexis} object used for fitting the models for the transitions. It is not a parameter that can be easily determined from the \texttt{TR} object, hence it must be supplied by the user. <>= set.seed( 52381764 ) Nsim <- 5000 system.time( simL <- simLexis( Tr, ini, t.range = 12, N = Nsim ) ) @ % The result is a \texttt{Lexis} object --- a data frame representing the simulated follow-up of \Sexpr{2*Nsim} persons (\Sexpr{Nsim} identical men and \Sexpr{Nsim} identical women) according to the rates we estimated from the original dataset. <>= summary( simL, by="sex" ) @ % \subsection{Using other models for simulation} \subsubsection{Proportional hazards Poisson model} We fitted a proportional mortality model \texttt{All.Dead} (which fitted worse than the other two), this is a model for \emph{both} the transition from \texttt{DM} to \texttt{Death} \emph{and} from \texttt{Ins} to \texttt{Dead(Ins)}, assuming that they are proportional. But it can easily be used in the simulation set-up, because the state is embedded in the model via the term \texttt{lex.Cst}, which is updated during the simulation. Simulation using this instead just requires that we supply a different transition object: <>= Tr.p <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = All.Dead ), "Ins" = list( "Dead(Ins)" = All.Dead ) ) system.time( simP <- simLexis( Tr.p, ini, t.range = 12, N = Nsim ) ) summary( simP, by="sex" ) @ % \subsubsection{Proportional hazards Cox model} A third possibility would be to replace the two-time scale proportional mortality model by a one-time-scale Cox-model, using diabetes duration as time scale, and age at diagnosis of DM as (fixed) covariate: <>= library( survival ) Cox.Dead <- coxph( Surv( DMdur, DMdur+lex.dur, lex.Xst %in% c("Dead(Ins)","Dead")) ~ Ns( Age-DMdur, knots=ad.kn ) + I(lex.Cst=="Ins") + I(Per-2000) + sex, data = Si ) round( ci.exp( Cox.Dead ), 3 ) @ % Note that in order for this model to be usable for simulation, it is necessary that we use the components of the \texttt{Lexis} object to specify the survival. Each record in the data frame \texttt{Si} represents follow up from \texttt{DMdur} to \texttt{DMdur+lex.dur}, so the model is a Cox model with diabetes duration as underlying timescale and age at diagnosis, \texttt{Age-DMdur}, as covariate. Also note that we used \texttt{I(lex.Cst=="Ins")} instead of just \texttt{lex.Cst}, because \texttt{coxph} assigns design matrix columns to all levels of \texttt{lex.Cst}, also those not present in data, which would give \texttt{NA}s among the parameter estimates and \texttt{NA}s as mortality outcomes. We see that the effect of insulin and the other covariates are pretty much the same as in the two-time-scale model. We can simulate from this model too; there is no restrictions on what type of model can be used for different transitions <>= Tr.c <- list( "DM" = list( "Ins" = Tr$DM$Ins, "Dead" = Cox.Dead ), "Ins" = list( "Dead(Ins)" = Cox.Dead ) ) system.time( simC <- simLexis( Tr.c, ini, t.range = 12, N = Nsim ) ) summary( simC, by="sex" ) @ \section{Reporting the simulation results} We can now tabulate the number of persons in each state at a predefined set of times on a given time scale. Note that in order for this to be sensible, the \texttt{from} argument would normally be equal to the starting time for the simulated individuals. <>= system.time( nSt <- nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=1995, time.scale="Per" ) ) nSt[1:10,] @ % We see that as time goes by, the 5000 men slowly move away from the starting state (\texttt{DM}). Based on this table (\texttt{nSt} is a table) we can now compute the fractions in each state, or, rather more relevant, the cumulative fraction across the states in some specified order, so that a plot of the stacked probabilities can be made, using either the default rather colorful layout, or a more minimalist version (both in figure \ref{fig:pstate0}): <>= pM <- pState( nSt, perm=c(1,2,4,3) ) head( pM ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM ) plot( pM, border="black", col="transparent", lwd=3 ) text( rep(as.numeric(rownames(pM)[nrow(pM)-1]),ncol(pM)), pM[nrow(pM),]-diff(c(0,pM[nrow(pM),]))/5, colnames( pM ), adj=1 ) box( col="white", lwd=3 ) box() @ % \insfig{pstate0}{1.0}{Default layout of the \textrm{\tt plot.pState} graph (left), and a version with the state probabilities as lines and annotation of states.} A more useful set-up of the graph would include a more through annotation and sensible choice of colors, as seen in figure \ref{fig:pstatex}: <>= clr <- c("limegreen","orange") # expand with a lighter version of the two chosen colors clx <- c( clr, rgb( t( col2rgb( clr[2:1] )*2 + rep(255,3) ) / 3, max=255 ) ) par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men plot( pM, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=1995, time.scale="Per" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) @ % \insfig{pstatex}{1.0}{\textrm{\tt plot.pState} graphs where persons ever on insulin are given in orange and persons never on insulin in green, and the overall survival (dead over the line) as a black line.} If we instead wanted to show the results on the age-scale, we would use age as timescale when constructing the probabilities; otherwise the code is pretty much the same as before (Figure \ref{fig:pstatey}): <>= par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men pM <- pState( nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pM, col=clx, xlab="Age" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Age" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:9/10, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) @ % Note the several statements with \texttt{axis(side=4,...}; they are necessary to get the fine tick-marks in the right hand side of the plots that you will need in order to read off the probabilities at 2006 (or 71 years). \insfig{pstatey}{1.0}{\textrm{\tt plot.pState} graphs where persons ever on insulin are given in orange and persons never on insulin in green, and the overall survival (dead over the line) as a black line.} \subsection{Comparing predictions from different models} We have actually fitted different models for the transitions, and we have simulated Lexis objects from all three approaches, so we can plot these predictions on top of each other: <>= PrM <- pState( nState( subset(simP,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) PrF <- pState( nState( subset(simP,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxM <- pState( nState( subset(simC,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxF <- pState( nState( subset(simC,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM, border="black", col="transparent", lwd=3 ) lines( PrM, border="blue" , col="transparent", lwd=3 ) lines( CoxM, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "M" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) plot( pF, border="black", col="transparent", lwd=3 ) lines( PrF, border="blue" , col="transparent", lwd=3 ) lines( CoxF, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "F" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) @ % \insfig{comp-0}{1.0}{Comparison of the simulated state occupancy probabilities using separate Poisson models for the mortality rates with and without insulin (black) and using proportional hazards Poisson models (blue) and Cox-models with diabetes duration as timescale and age at diabetes diagnosis as covariate (red).} From figure \ref{fig:comp-0} it is clear that the two proportional hazards models (blue and red curves) produce pretty much the same estimates of the state occupancy probabilities over time, but also that they relative to the model with separately estimated transition intensities overestimates the probability of being alive without insulin and underestimates the probabilities of being dead without insulin. However both the overall survival, and the fraction of persons on insulin are quite well in agreement with the more elaborate model. Thus the proportional hazards models overestimate the relative mortality of the insulin treated diabetes patients relative to the non-insulin treated. Interestingly, we also see a bump in the estimated probabilities from the Cox-model based model, but this is entirely an artifact that comes from the estimation method for the baseline hazard of the Cox-model that lets the (cumulative) hazard have large jumps at event times where the risk set is small. So also here it shows up that an assumption of continuous underlying hazards leads to more credible estimates. \chapter{Simulation of transitions in multistate models} \section{Theory} Suppose that the rate functions for the transitions out of the current state to, say, 3 different states are $\lambda_1$, $\lambda_2$ and $\lambda_3$, and the corresponding cumulative rates are $\Lambda_1$, $\Lambda_2$ and $\Lambda_3$, and we want to simulate an exit time and an exit state (that is either 1, 2 or 3). This can be done in two slightly different ways: \begin{enumerate} \item First time, then state: \begin{enumerate} \item Compute the survival function, $S(t) = \exp\bigl(-\Lambda_1(t)-\Lambda_2(t)-\Lambda_3(t)\bigr)$ \item Simulate a random U(0,1) variate, $u$, say. \item The simulated exit time is then the solution $t_u$ to the equation $S(t_u) = u \quad \Leftrightarrow \quad \sum_j\Lambda_j(t_u) = -\log(u)$. \item A simulated transition at $t_u$ is then found by simulating a random draw from the multinomial distribution with probabilities $p_i=\lambda_i(t_u) / \sum_j\lambda_j(t_u)$. \end{enumerate} \item Separate cumulative incidences: \begin{enumerate} \item Simulate 3 independent U(0,1) random variates $u_1$, $u_2$ and $u_3$. \item Solve the equations $\Lambda_i(t_i)=-\log(u_i), i=1,2,3$ and get $(t_1,t_2,t_3)$. \item The simulated survival time is then $\min(t_1,t_2,t_3)$, and the simulated transition is to the state corresponding to this, that is $k \in \{1,2,3\}$, where $t_k=\min(t_1,t_2,t_3)$ \end{enumerate} \end{enumerate} The intuitive argument is that with three possible transition there are 3 independent processes running, but only the first transition is observed. The latter approach is used in the implementation in \texttt{simLexis}. The formal argument for the equality of the two approaches goes as follows: \begin{enumerate} \item Equality of the transition times: \begin{enumerate} \item In the first approach we simulate from a distribution with cumulative rate $\Lambda_1(t)+\Lambda_2(t)+\Lambda_3(t)$, hence from a distribution with survival function: \begin{align*} S(t) & = \exp\bigl(-(\Lambda_1(t)+\Lambda_2(t)+\Lambda_3(t))\bigr) \\ & = \exp\bigl(-\Lambda_1(t)\bigr)\times \exp\bigl(-\Lambda_2(t)\bigr)\times \exp\bigl(-\Lambda_3(t)\bigr) \end{align*} \item In the second approach we choose the smallest of three independent survival times, with survival functions $\exp(-\Lambda_i), i=1,2,3$. Now, the survival function for the minimum of three independent survival times is: \begin{align*} S_\text{min}(t) & = \pmat{\min(t_1,t_2,t_3)>t} \\ & = \pmat{t_1>t} \times \pmat{t_2>t} \times \pmat{t_3>t} \\ & = \exp\bigl(-\Lambda_1(t)\bigr)\times \exp\bigl(-\Lambda_2(t)\bigr)\times \exp\bigl(-\Lambda_3(t)\bigr) \end{align*} which is the same survival function as derived above. \end{enumerate} \item Type of transition: \begin{enumerate} \item In the first instance the probability of a transition to state $i$, conditional on the transition time being $t$, is as known from standard probability theory: $\lambda_i(t)/\bigl(\lambda_1(t)+\lambda_2(t)+\lambda_3(t)\bigr)$. \item In the second approach we choose the transition corresponding to the the smallest of the transition times. So when we condition on the event that a transition takes place at time $t$, we have to show that the conditional probability that the smallest of the three simulated transition times was actually the $i$th, is as above. But conditional on \emph{survival} till $t$, the probabilities that events of type $1,2,3$ takes place in the interval $(t,t+\dif t)$ are $\lambda_1(t)\dif t$, $\lambda_2(t)\dif t$ and $\lambda_1(t)\dif t$, respectively (assuming that the probability of more than one event in the interval of length $\dif t$ is 0). Hence the conditional probabilities \emph{given a transition time} in $(t,t+\dif t)$ is: \[ \frac{\lambda_i(t)\dif t}{\lambda_1(t)\dif t+ \lambda_2(t)\dif t+ \lambda_3(t)\dif t}= \frac{\lambda_i(t)}{\lambda_1(t)+\lambda_2(t)+\lambda_3(t)} \] --- exactly as above. \end{enumerate} \end{enumerate} \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2011a} B~Carstensen and M~Plummer. \newblock Using {L}exis objects for multi-state models in {R}. \newblock {\em Journal of Statistical Software}, 38(6):1--18, 1 2011. \bibitem{Iacobelli.2013} S~Iacobelli and B~Carstensen. \newblock {Multiple time scales in multi-state models}. \newblock {\em Stat Med}, 32(30):5315--5327, Dec 2013. \bibitem{Plummer.2011} M~Plummer and B~Carstensen. \newblock Lexis: An {R} class for epidemiological studies with long-term follow-up. \newblock {\em Journal of Statistical Software}, 38(5):1--12, 1 2011. \end{thebibliography} \addcontentsline{toc}{chapter}{References} \end{document} Epi/vignettes/cpall0000755000175100001440000000036714061146524014047 0ustar hornikuserscp flup.pdf ../inst/doc cp crisk.pdf ../inst/doc cp addLexis.pdf ../inst/doc cp simLexis.pdf ../inst/doc cp yll.pdf ../inst/doc cp flup.R ../inst/doc cp crisk.R ../inst/doc cp addLexis.R ../inst/doc cp simLexis.R ../inst/doc cp yll.R ../inst/doc Epi/R/0000755000175100001440000000000014421662444011215 5ustar hornikusersEpi/R/N2Y.r0000644000175100001440000000425413245401062012003 0ustar hornikusersN2Y <- function( A, P, N, data=NULL, return.dfr=TRUE ) { # Make local versions of variables if a dataframe is supplied if( !is.null(data) ) { A <- if( !missing(A) ) eval( substitute(A), data, parent.frame() ) else data$A P <- if( !missing(P) ) eval( substitute(P), data, parent.frame() ) else data$P N <- if( !missing(N) ) eval( substitute(N), data, parent.frame() ) else data$N } # Derive the interval lengths from supplied data A.int <- unique( diff(sort(unique(A))) ) P.int <- unique( diff(sort(unique(P))) ) # Check if something is fishy if( length(A.int)!=1 ) stop( "Non-uniform age interval lengths:\n", A.int ) if( length(P.int)!=1 ) stop( "Non-uniform period interval lengths:\n", P.int ) if( A.int!=P.int ) stop( "Unequal age and period interval lengths:\n", "age: ", A.int, ", period: ", P.int ) # Put population prevalence data in a table Ntab <- xtabs( N ~ A + P ) # Devise a table for the risk times Ydim <- c(dimnames(Ntab),list(wh=c("lo","up"))) # Note: one less period category Ytab <- NArray( Ydim )[,-dim(Ntab)[2],] # How many age and period classes na <- nrow(Ytab) np <- ncol(Ytab) for(a in 1:na) for(p in 1:np) { if( a < na ) Ytab[a,p,"up"] <- Ntab[a ,p]/3 + Ntab[a+1,p+1]/6 if( a > 1 ) Ytab[a,p,"lo"] <- Ntab[a-1,p]/6 + Ntab[a ,p+1]/3 if( a == 1 ) Ytab[a,p,"lo"] <- Ntab[a ,p]/2 + Ntab[a ,p+1]/2 - Ytab[a,p,"up"] if( a ==na ) Ytab[a,p,"up"] <- Ntab[a ,p]/2 + Ntab[a ,p+1]/2 - Ytab[a,p,"lo"] } # Remember to multiply to get the follow-up time Ytab <- Ytab * A.int # Convert to a data frame if required (the default) if( return.dfr ) { ## If a dataframe is required as return value Ytab <- data.frame(expand.grid(dimnames(Ytab)), Y=c(Ytab)) ## Retrieve the numerical values of left endpoints of intervals Ytab$A <- as.numeric(as.character(Ytab$A)) Ytab$P <- as.numeric(as.character(Ytab$P)) ## Compute the correct midpoints from the supplied data Ytab$A <- Ytab$A + A.int * (1 + (Ytab$wh == "up"))/3 Ytab$P <- Ytab$P + P.int * (1 + (Ytab$wh == "lo"))/3 Ytab <- Ytab[, c("A","P","Y")] } Ytab } Epi/R/lexis.R0000644000175100001440000006504014224306565012471 0ustar hornikusersLexis <- function(entry, exit, duration, entry.status=0, exit.status=0, id, data, merge=TRUE, states, notes=TRUE, tol=.Machine$double.eps^0.5, keep.dropped=FALSE ) { nmissing <- missing(entry) + missing(exit) + missing(duration) if (nmissing > 2) stop("At least one of the arguments exit and duration must be supplied") only.exit <- missing( entry.status ) && !missing( exit.status ) ## If data argument is supplied, use it to evaluate arguments if (!missing(data)) { if (!missing(entry)) { entry <- eval(substitute(entry), data, parent.frame()) } if (!missing(exit)) { exit <- eval(substitute(exit), data, parent.frame()) } if (!missing(duration)) { duration <- eval(substitute(duration), data, parent.frame()) } entry.status <- eval(substitute(entry.status), data, parent.frame()) exit.status <- eval(substitute(exit.status), data, parent.frame()) if (!missing(id)) { id <- eval(substitute(id), data, parent.frame()) } if (merge) { data <- as.data.frame(data) } } ## Check for missing values in status variables wh.miss <- any(is.na(entry.status)) + 2*any(is.na(exit.status)) if ( wh.miss > 0 ) stop("Missing values in ", switch( wh.miss, "entry status", "exit status", "entry AND exit status" ) ) ## Adjust entry status mode according to exit status if( only.exit ) { if( is.logical( exit.status ) ) { entry.status <- FALSE if( notes ) cat("NOTE: entry.status has been set to FALSE for all.\n") } if( is.character( exit.status ) ) { exit.status <- factor( exit.status ) } if( is.factor( exit.status ) ) { entry.status <- factor( rep( levels(exit.status)[1], length(exit.status)), levels=levels(exit.status), labels=levels(exit.status) ) if( notes ) cat("NOTE: entry.status has been set to", paste( '"', levels(exit.status)[1], '"', sep='' ), "for all.\n" ) } if( is.numeric( exit.status ) ) { entry.status <- rep( 0, length( exit.status ) ) if( notes ) cat("NOTE: entry.status has been set to 0 for all.\n") } } ## Convert character states to factors if( is.character(entry.status) ) entry.status <- factor(entry.status) if( is.character( exit.status) ) exit.status <- factor( exit.status) ## Check compatibility of entry and exit status if (is.factor(entry.status) || is.factor(exit.status)) { if (is.factor(entry.status) && is.factor(exit.status)) { if (!identical(levels(entry.status),levels(exit.status))) { all.levels = union(levels(entry.status),levels(exit.status)) entry.status <- factor( entry.status, levels=all.levels ) exit.status <- factor( exit.status, levels=all.levels ) if( notes ) cat("Incompatible factor levels in entry.status and exit.status:\n", "both lex.Cst and lex.Xst now have levels:\n", all.levels, "\n") } } else { stop("Incompatible classes for entry and exit status") } } else { if (mode(entry.status) != mode(exit.status)) { stop("Incompatible mode for entry and exit status") } } ## If entry is missing and one of the others is given as a list of length ## one, entry is assumed to be 0 on this only timescale. if( nmissing==2 ) { if( !missing(exit) ) { if( length(exit)>1 ) stop("If 'entry' is omitted, only one timescale can be specified.") else { entry <- exit entry[[1]] <- 0*entry[[1]] if( notes ) cat( "NOTE: entry is assumed to be 0 on the",names(exit),"timescale.\n") } } else if( !missing(duration) ) { if( length(duration)>1 ) stop("If 'entry' is omitted, only one timescale can be specified") else { entry <- duration entry[[1]] <- 0*entry[[1]] if( notes ) cat( "NOTE: entry is assumed to be 0 on the",names(duration),"timescale.\n") } } else stop("Either exit or duration must be supplied.") } ## Coerce entry and exit lists to data frames if(!missing(entry)) { entry <- as.data.frame(entry) if (is.null(names(entry))) stop("entry times have no names") if (any(substr(names(entry),1,4) == "lex.")) stop("names starting with \"lex.\" cannot be used for time scales") } if(!missing(exit)) { exit <- as.data.frame(exit) if (is.null(names(exit))) stop("exit times have no names") if (any(substr(names(exit),1,4) == "lex.")) stop("names starting with \"lex.\" cannot be used for time scales") } if(!missing(duration)) { duration <- as.data.frame(duration) if (is.null(names(duration))) stop("duration have no names") if (any(substr(names(duration),1,4) == "lex.")) stop("names starting with \"lex.\" cannot be used for time scales") } if (missing(entry)) { ## Impute entry entry <- exit - duration } if (missing(duration)) { ## Impute duration full.time.scales <- intersect(names(entry), names(exit)) if (length(full.time.scales) == 0) { stop("Cannot calculate duration from entry and exit times") } duration <- exit[,full.time.scales[1]] - entry[,full.time.scales[1]] } if (missing(exit)) { all.time.scales <- names(entry) } else { ## We dont need the exit times but, if they are supplied, we must ## make sure they are consistent with the entry and duration. all.time.scales <- unique(c(names(entry), names(exit))) ## Fill in any missing entry times entry.missing <- setdiff(all.time.scales, names(entry)) if (length(entry.missing) > 0) { entry <- cbind(entry, exit[,entry.missing, drop=FALSE] - duration) } ## Check that duration is the same on all time scales dura <- exit - entry[,names(exit),drop=FALSE] if (missing(duration)) { duration <- dura[,1] #BxC# apply( dura, 1, mean, na.rm=TRUE ) # Allows for timescales with missing values } ok <- sapply(lapply(dura, all.equal, duration), isTRUE) # ok <- sapply(lapply(dura, all.equal, duration), # function(x) identical(FALSE,x) ) if (!all(ok)) { stop("Duration is not the same on all time scales") } } # Taken care of by the code that detects whether lex.du <= tol # ## Check that duration is positive # if (any(duration<0)) { # stop("Duration must be non-negative") # } ## Make sure id values - if supplied - are valid. Otherwise supply default id if (missing(id)) { id <- 1:nrow(entry) } else if (any(duplicated(id))) { ##Fixme: check for overlapping intervals ##stop("Duplicate values in id") } ## Return a data frame with the entry times, duration, and status ## variables Use the prefix "lex." for the names of reserved ## variables. if( is.data.frame( duration ) ) duration <- duration[,1] lex <- data.frame( entry, "lex.dur" = duration, "lex.Cst" = entry.status, "lex.Xst" = exit.status, "lex.id" = id ) #### Addition by BxC --- support for states as factors # Convert states to factors if states are given if( !missing( states ) ) #is.character( states ) ) { # This as.character-business is necessary because we cannot assume # that the values of states are 1,2, etc. st.lev <- sort( unique( as.character( c(lex$lex.Cst,lex$lex.Xst) ) ) ) lex$lex.Cst <- factor( as.character(lex$lex.Cst), levels=st.lev, labels=states ) lex$lex.Xst <- factor( as.character(lex$lex.Xst), levels=st.lev, labels=states ) } if (!missing(data) && merge) { duplicate.names <- intersect(names(lex), names(data)) if (length(duplicate.names) > 0) { stop( "Cannot merge data with duplicate names:", paste(duplicate.names,collapse=" ") ) } lex <- cbind(lex, data) } ## Drop rows with short or negative duration for consistency with splitLexis short.dur <- lex$lex.dur <= tol if ( any(short.dur) ) { if( notes ) cat("NOTE: Dropping ", sum(short.dur), " rows with duration of follow up < tol\n", if( keep.dropped ) " The dropped rows are in the attribute 'dropped'\n", if( keep.dropped ) " To see them type attr(Obj,'dropped'),\n", if( keep.dropped ) " to get rid of them type: attr(Obj,'dropped') <- NULL\n", if( keep.dropped ) " - where 'Obj' is the name of your Lexis object" ) lex <- subset(lex, !short.dur) if( keep.dropped ) attr(lex,"dropped") <- subset(data, short.dur) } ## Return Lexis object attr(lex,"time.scales") <- all.time.scales attr(lex,"time.since") <- rep( "", length(all.time.scales) ) breaks <- vector("list", length(all.time.scales)) names(breaks) <- all.time.scales attr(lex,"breaks") <- breaks class(lex) <- c("Lexis", class(lex)) return(lex) } is.Lexis <- function(x) { inherits(x, "Lexis") } check.time.scale <- function(lex, time.scale=NULL) { ## Utility function, returns the names of the time scales in a Lexis object ## lex - a Lexis object ## time.scale - a numeric or character vector. The function checks that ## these are valid time scales for the Lexis object. ## Return value is a character vector containing the names of the requested ## time scales all.names <- timeScales(lex) if (is.null(time.scale)) return(all.names) nscale <- length(time.scale) scale.names <- character(nscale) if (is.character(time.scale)) { for (i in 1:nscale) { if (is.null(lex[[time.scale[i]]])) stop(time.scale[i], " is not a valid time scale name") } } else if (is.numeric(time.scale)) { if (any(time.scale > length(all.names)) || any(time.scale < 1)) stop(time.scale, " not valid time scale column number(s)") time.scale <- all.names[time.scale] } else { stop("invalid type for time scale") } return(time.scale) } valid.times <- function(x, time.scale=1) { # A utility function that returns a data.frame / Lexis object with # rows with missing timescales removed x[complete.cases(x[,check.time.scale(x,time.scale)]),] } plot.Lexis.1D <- function(x, time.scale=1, breaks="lightgray", type="l", col="darkgray", xlim, ylim, xlab, ylab, ...) { ## x Lexis object ## time.scale name of time scale to plot if (length(time.scale) != 1) stop("Only one time scale allowed") x <- valid.times(x,time.scale) time.entry <- x[,time.scale] time.exit <- x[,time.scale] + x$lex.dur id <- x$lex.id if (missing(xlim)) xlim <- c(min(time.entry), max(time.exit)) if (missing(ylim)) ylim <- range(id) if (missing(xlab)) xlab <- time.scale if (missing(ylab)) ylab <- "id number" plot(time.entry, id, type="n", xlab=xlab, ylab=ylab, xlim=xlim, ylim=ylim, ...) if (type=="b" || type=="l") { segments(time.entry, id, time.exit, id, col=col, ...) } if (type=="b" || type=="p") { points(time.exit, id, col=col, ...) } ## Plot break points brk <- attr(x,"breaks")[[time.scale]] abline(v=brk, col=breaks, ...) } points.Lexis.1D <- function(x, time.scale, ...) { x <- valid.times(x,time.scale) time.exit <- x[,time.scale] + x$lex.dur points(time.exit, x$lex.id, ...) } lines.Lexis.1D <- function(x, time.scale, type="l", col="darkgray", breaks="lightgray", ...) { x <- valid.times(x,time.scale) time.entry <- x[,time.scale] time.exit <- x[,time.scale] + x$lex.dur id <- x$lex.id segments(time.entry, id, time.exit, id, col=col, ...) ## Plot break points brk <- attr(x,"breaks")[[time.scale]] abline(v=brk, col=breaks, ...) } plot.Lexis.2D <- function(x, time.scale, breaks="lightgray", type="l", col="darkgray", xlim, ylim, xlab, ylab, grid=FALSE, col.grid="lightgray", lty.grid=2, coh.grid=FALSE, ...) { if (length(time.scale) != 2) stop("Two time scales are required") x <- valid.times(x,time.scale) time.entry <- time.exit <- vector("list",2) for (i in 1:2) { time.entry[[i]] <- x[,time.scale[i]] time.exit[[i]] <- x[,time.scale[i]] + x$lex.dur } if (missing(xlim) && missing(ylim)) { ## If no axis limits are given, set the plotting region to be ## square, and adjust the axis limits to cover the same time interval. ## All life lines will then be at 45 degrees. opar <- par(pty="s") on.exit(par(opar)) min.times <- sapply(time.entry, min) max.times <- sapply(time.exit, max) xywidth <- max(max.times - min.times) xlim <- min.times[1] + c(0, xywidth) ylim <- min.times[2] + c(0, xywidth) } else if (missing(xlim)) { xlim <- c(min(time.entry[[1]]), max(time.exit[[1]])) } else if (missing(ylim)) { ylim <- c(min(time.entry[[2]]), max(time.exit[[2]])) } if (missing(xlab)) xlab <- time.scale[1] if (missing(ylab)) ylab <- time.scale[2] plot(time.entry[[1]], time.entry[[2]], type="n", xlab=xlab, ylab=ylab, xlim=xlim, ylim=ylim, ...) # Set up the background grid(s): if (!missing(grid)) { if (is.logical(grid)) { if (grid) { vgrid <- pretty(xlim) hgrid <- pretty(ylim) } } else if (is.list(grid)) { vgrid <- grid[[1]] hgrid <- grid[[length(grid)]] } else if (is.numeric(grid)) { vgrid <- grid - min( grid ) + min( pretty( xlim )[pretty(xlim)>=par("usr")[1]] ) hgrid <- grid - min( grid ) + min( pretty( ylim )[pretty(ylim)>=par("usr")[3]] ) } else stop( "'grid' must be either logical, list or a numeric vector" ) # and plot the grid: abline( v=vgrid, h=hgrid, col=col.grid, lty=lty.grid ) box() } if (!missing(grid) & coh.grid) { # Make the 45-degree grids as fine as the finest grid on the axes for (yy in c(hgrid-diff(range(hgrid)),hgrid)) abline( yy-min(vgrid), 1, col=col.grid, lty=lty.grid ) for (yy in c(vgrid-diff(range(vgrid)),vgrid)) abline( min(hgrid)-yy, 1, col=col.grid, lty=lty.grid ) } # End of explicitly requested background grid(s) (PHEW!) if (type=="b" || type=="l") { segments(time.entry[[1]], time.entry[[2]], time.exit[[1]], time.exit[[2]], col=col, ...) } if (type=="b" || type=="p") { points(time.exit[[1]], time.exit[[2]], col = col, ...) } if (type != "n") { ## Plot break points brk <- attr(x,"breaks")[time.scale] abline(v=brk[[1]], h=brk[[2]], col=breaks, ...) } } points.Lexis.2D <- function(x, time.scale, ...) { x <- valid.times(x,time.scale) time.exit <- vector("list",2) for (i in 1:2) { time.exit[[i]] <- x[,time.scale[i]] + x$lex.dur } points( time.exit[[1]], time.exit[[2]], ...) } lines.Lexis.2D <- function(x, time.scale, col="darkgray", ...) { x <- valid.times(x,time.scale) time.entry <- time.exit <- vector("list",2) for (i in 1:2) { time.entry[[i]] <- x[,time.scale[i]] time.exit[[i]] <- x[,time.scale[i]] + x$lex.dur } segments(time.entry[[1]], time.entry[[2]], time.exit[[1]], time.exit[[2]], col=col, ...) } ### Plotting generic functions plot.Lexis <- function( x = Lexis( entry=list(Date=1900,Age=0), exit=list(Age=0) ), time.scale=NULL, type="l", breaks="lightgray", ...) { time.scale <- check.time.scale(x, time.scale) if (length(time.scale) > 2) time.scale <- time.scale[1:2] # Save the timescale(s) for use in subsequent calls options( Lexis.time.scale = time.scale ) if (length(time.scale) == 1) plot.Lexis.1D(x, time.scale=time.scale, type=type, breaks=breaks, ...) else if (length(time.scale) == 2) plot.Lexis.2D(x, time.scale=time.scale, type=type, breaks=breaks, ...) } lines.Lexis <- function(x, time.scale=options()[["Lexis.time.scale"]], ...) { time.scale <- check.time.scale(x, time.scale) if (length(time.scale) > 2) time.scale <- time.scale[1:2] if (length(time.scale) == 1) lines.Lexis.1D(x, time.scale=time.scale, ...) else if (length(time.scale) == 2) lines.Lexis.2D(x, time.scale=time.scale, ...) } points.Lexis <- function(x, time.scale=options()[["Lexis.time.scale"]], ...) { time.scale <- check.time.scale(x, time.scale) if (length(time.scale) > 2) time.scale <- time.scale[1:2] if (length(time.scale) == 1) points.Lexis.1D(x, time.scale=time.scale, ...) else if (length(time.scale) == 2) points.Lexis.2D(x, time.scale=time.scale, ...) } print.Lexis <- function(x, ..., td = 2, nd = 3, rnam = FALSE, org = FALSE) { # "intersect" is to allow subsets of variables to be printed # result is ordered as the first argument to intersect() # The time-scale variables tsl <- intersect(c(timeScales(x), "lex.dur"), names(x)) # The Lexis variables whL <- intersect(c("lex.id", tsl, "lex.Cst", "lex.Xst"), names(x)) # non-Lexis variables" oth <- setdiff(names(x), whL) # non-Lexis numerical variables nuv <- setdiff(names(which(sapply(x, is.numeric))), whL) # round the time-scale variables x[,tsl] <- round(x[,tsl], td) # round the non-Lexis numerical variables x[,nuv] <- round(x[,nuv], nd) if (org) print.data.frame(x, row.names = rnam, ...) else print.data.frame(x[,c(whL, oth)], row.names = rnam, ...) # return the printed ordering of variables invisible(c(whL, oth)) } PY.ann <- function (x, ...) UseMethod("PY.ann") PY.ann.Lexis <- function( x, time.scale=options()[["Lexis.time.scale"]], digits=1, ... ) { if (!inherits(x,"Lexis")) stop("Only meaningful for Lexis objects not for objects of class ", class(x)) wh.x <- x[,time.scale[1]] + x[,"lex.dur"]/2 if( two.scales <- length(time.scale)==2 ) wh.y <- x[,time.scale[2]] + x[,"lex.dur"]/2 else wh.y <- x[,"lex.id"] text( wh.x, wh.y, formatC(x$lex.dur,format="f",digits=digits), adj=c(0.5,-0.5), srt=if(two.scales) 45 else 0, ... ) } ### Generic functions ### Methods for data.frame drop Lexis attributes, so we need Lexis ### methods that retain them subset.Lexis <- function(x, ... ) { y <- subset.data.frame(x, ...) attr(y,"breaks") <- attr(x, "breaks") attr(y,"time.scales") <- attr(x, "time.scales") attr(y,"time.since") <- attr(x, "time.since") return(y) } `[.Lexis` <- function(x, ...) { y <- NextMethod(x) if (is.data.frame(y)) { for (a in c("class", "time.scales", "time.since", "breaks")) { data.table::setattr(y ,a, attr(x, a))} } y } merge.Lexis <- function(x, y, id, by, ...) { if (!missing(id)) { if (!is.character(id) || length(id) != 1 || !(id %in% names(y))) { stop("id must be the name of a single variable in y") } if (any(duplicated(y[[id]]))) { stop("values of the id variable must be unique in y") } y$lex.id <- y[[id]] } else if (missing(by)) { by <- intersect(names(x), names(y)) if (length(by)==0) { stop("x and y have no variable names in common") } } z <- base::merge.data.frame(x, y, ...) attr(z,"breaks") <- attr(x, "breaks") attr(z,"time.scales") <- attr(x, "time.scales") attr(z,"time.since") <- attr(x, "time.since") class(z) <- c("Lexis", "data.frame") return(z) } cbind.Lexis <- function( ... ) { allargs <- list( ... ) # Check that at least one argument is Lexis is.lex <- sapply( allargs, inherits, "Lexis" ) if( all(!is.lex) ) stop( "At least one argument nust be a Lexis object\n", "and none of the given are.\n") if( sum(is.lex)>1 ) stop( "It is meaningless to 'cbind' several Lexis objects:", " arguments ", paste( which(is.lex), collapse=","), " are Lexis objects.\n" ) is.lex <- which(is.lex) res <- do.call( base::cbind.data.frame, allargs ) attr( res, "class" ) <- attr( allargs[[is.lex]], "class" ) attr( res, "breaks" ) <- attr( allargs[[is.lex]], "breaks" ) attr( res, "time.scales" ) <- attr( allargs[[is.lex]], "time.scales" ) attr( res, "time.since" ) <- attr( allargs[[is.lex]], "time.since" ) res } rbind.Lexis <- function( ... ) { # A list of all Lexis objects allargs <- list( ... ) # Check if they are all Lexis # (or possibly NULL - often rbind-ing with NULL is very useful) is.lex <- sapply( allargs, inherits, "Lexis" ) is.nul <- sapply( allargs, is.null ) if( !all(is.lex[!is.nul]) ) stop( "All arguments must be Lexis objects,\n", "arguments number ", which(!is.lex & !is.null), " are not." ) # Put them all together allargs <- allargs[!is.nul] res <- plyr::rbind.fill( allargs ) # Get the union of time.scale names and the corresponding time.since tscl <- do.call( c, lapply( allargs, function(x) attr(x,"time.scales") ) ) tsin <- do.call( c, lapply( allargs, function(x) attr(x,"time.since" ) ) ) # but only one copy of each scls <- match( unique(tscl), tscl ) tscl <- tscl[scls] tsin <- tsin[scls] # Fish out the breaks on timescale in turn from all input objects and # - if all the non-NULL are identical use this # - if not, set the corresponding break to NULL newbrks <- list() # all the breaks attributes in a list brks <- lapply( allargs, function(x) attr(x,"breaks") ) # run through the timescales found for( scl in tscl ) { # breaks for this timescale in any of the objects brk <- lapply( brks, function(x) x[[scl]] ) # but only the non-null ones brk <- brk[!sapply( brk, is.null )] # if more than one occurrence, all non-NULL breaks should be identical if( ( length(brk)>1 & all( sapply( brk[-1], function(x) identical(brk[[1]],x) ) ) ) | length(brk) == 1 ) newbrks[scl] <- brk[1] else newbrks[scl] <- list(NULL) } # define attributes of the reulting object: attr( res, "class" ) <- c( "Lexis", "data.frame" ) attr( res, "breaks" ) <- newbrks attr( res, "time.scales" ) <- tscl attr( res, "time.since" ) <- tsin res } ## Extractor functions entry <- function(x, time.scale = NULL, by.id = FALSE ) { time.scale <- check.time.scale(x, time.scale) wh <- x[,time.scale[1]] == ave( x[,time.scale[1]], x$lex.id, FUN=if( by.id ) min else I ) if (length(time.scale) > 1) { res <- as.matrix(x[wh, time.scale]) if( by.id ) rownames( res ) <- x$lex.id[wh] return( res ) } else { res <- x[wh, time.scale] if( by.id ) names( res ) <- x$lex.id[wh] return( res ) } } exit <- function(x, time.scale = NULL, by.id = FALSE ) { time.scale <- check.time.scale(x, time.scale) wh <- x[,time.scale[1]] == ave( x[,time.scale[1]], x$lex.id, FUN=if( by.id ) max else I ) if (length(time.scale) > 1) { res <- as.matrix(x[wh, time.scale]) + x$lex.dur[wh] if( by.id ) rownames( res ) <- x$lex.id[wh] return( res ) } else { res <- x[wh, time.scale] + x$lex.dur[wh] if( by.id ) names( res ) <- x$lex.id[wh] return( res ) } } dur <- function(x, by.id=FALSE) { if( by.id ) return( tapply(x$lex.dur,x$lex.id,sum) ) else return( x$lex.dur ) } status <- function(x, at="exit", by.id = FALSE) { at <- match.arg(at, c("entry","exit")) wh <- x[,timeScales(x)[1]] == ave( x[,timeScales(x)[1]], x$lex.id, FUN=if(by.id) switch(at, "entry"=min, "exit"=max) else I ) res <- switch(at, "entry"=x$lex.Cst, "exit"=x$lex.Xst)[wh] if( by.id ) names( res ) <- x$lex.id[wh] res } transient <- function( x ) { if( !is.Lexis(x) ) stop( "Not a Lexis object" ) tc <- tapply( x$lex.dur, x$lex.Cst, sum ) nt <- names( tc[tc>0] ) nt[!is.na(nt)] } absorbing <- function( x ) { if( !is.Lexis(x) ) stop( "Not a Lexis object" ) tc <- table( x$lex.Xst ) setdiff( names( tc[tc>0] ), transient(x) ) } updn <- function(x, tt, states) { if (any(is.na(match(states,levels(x))))) stop("'states' must be one of states: ", paste(levels(x), sep=',')) tt <- tt[, states, drop=FALSE] cc <- intersect(rownames(tt), colnames(tt)) tt[cbind(cc,cc)] <- 0 rownames(tt[apply(tt, 1, sum) > 0, , drop = FALSE]) } before <- preceding <- function( x, states ) updn( x, table(x$lex.Cst, x$lex.Xst), states) after <- succeeding <- function( x, states ) updn( x, table(x$lex.Xst, x$lex.Cst), states) timeScales <- function(x) { return(attr(x, "time.scales")) } timeSince <- function(x) { tt <- attr(x, "time.since") names(tt) <- attr(x, "time.scales") return( tt ) } timeBand <- function(lex, time.scale, type="integer") { time.scale <- check.time.scale(lex, time.scale)[1] breaks <- attr(lex, "breaks")[[time.scale]] time1 <- lex[[time.scale]] band <- findInterval(time1, breaks) ##Check that right hand side of interval falls in the same band abrk <- c(breaks, Inf) tol <- sqrt(.Machine$double.eps) if (any(time1 + lex$lex.dur > abrk[band+1] + tol)) { stop("Intervals spanning multiple time bands in Lexis object") } type <- match.arg(type, choices = c("integer","factor","left","middle", "right")) if (type=="integer") { return(band) } I1 <- c(-Inf, breaks) I2 <- c(breaks, Inf) labels <- switch(type, "factor" = paste("(", I1, ",", I2, "]", sep=""), "left" = I1, "right" = I2, "middle" = (I1 + I2)/2) if(type=="factor") { return(factor(band, levels=0:length(breaks), labels=labels)) } else { return(labels[band+1]) } } breaks <- function(lex, time.scale) { time.scale <- check.time.scale(lex, time.scale)[1] return(attr(lex, "breaks")[[time.scale]]) } transform.Lexis <- function(`_data`, ... ) { save.at <- attributes(`_data`) ## We can't use NextMethod here because of the special scoping rules ## used by transform.data.frame y <- base::transform.data.frame(`_data`, ...) save.at[["names"]] <- attr(y, "names") attributes(y) <- save.at y } # Two utility functions used to sort a Lexis object by (lex.id,time) order.Lexis <- orderLexis <- function( x ) { # Some time scales may not be proper from addCov.Lexis # So find one which is ("X" in timeSince(x) is improper) if (!inherits(x, "Lexis")) stop("Argument must be a Lexis object\n") # Fixing things if a data.table attr(x, "class") <- c("Lexis", "data.frame") a.ts <- timeScales(x)[which(timeSince(x) != "X")[1]] order(x$lex.id, x[,a.ts], na.last = FALSE) } sortLexis <- function( x ) x[orderLexis(x),] Epi/R/xgrep.R0000644000175100001440000000036013100324421012443 0ustar hornikusersfgrep <- function( pattern, x, ... ) x [grep( pattern, x , ... )] ngrep <- function( pattern, x, ... ) names(x)[grep( pattern, names(x), ... )] lgrep <- function( pattern, x, ... ) levels(x)[grep( pattern, levels(x), ... )] Epi/R/plotCIF.R0000644000175100001440000000217713564775677012673 0ustar hornikusersplotCIF <- function (x, event = 1, xlab = "Time", ylab = "Cumulative incidence", ylim = c(0, 1), lty = 1, col = "black", ... ) { ng <- length(x$n) co <- rep(col, ng)[1:ng] lt <- rep(lty, ng)[1:ng] ne <- dim(x$pstate)[2] - 1 if (event %in% 1:ne) { time <- x$time gr <- rep(1, length(time)) if (ng > 1) for (g in 2:ng) for (t in (cumsum(x$strata)[g - 1] + 1):cumsum(x$strata)[g]) gr[t] <- g CI <- x$pstate[, 2] for (e in 1:ne) if (event == e) CI <- x$pstate[, e+1] plot(c(0, time[gr == 1], max(time[gr == 1])), c(0, CI[gr == 1], max(CI[gr == 1])), type = "s", ylim = ylim, xlab = xlab, ylab = ylab, col = co[1], lty = lt[1], ...) if (ng > 1) for (g in 2:ng) lines(c(0, time[gr == g], max(time[gr == g])), c(0, CI[gr == g], max(CI[gr == g])), type = "s", lty = lt[g], col = co[g], ...) } else print(paste("Error: event must be an integer from 1 to", ne)) } Epi/R/plotEst.R0000644000175100001440000000726312531361077013000 0ustar hornikusersget.ests <- function( ests, ... ) { # If a model object is supplied, extract the parameters and the # standard errors # if( inherits( ests, c("glm","coxph","clogistic","gnlm","survreg") ) ) ests <- ci.exp( ests, ... ) else if( inherits( ests, c("lm","gls","lme","nls","polr", "mer","MIresult","mipo") ) ) ests <- ci.lin( ests, ... )[,-(2:4)] ests } plotEst <- function( ests, y = dim(ests)[1]:1, txt = rownames(ests), txtpos = y, ylim = range(y)-c(0.5,0), xlab = "", xtic = nice( ests[!is.na(ests)], log=xlog ), xlim = range( xtic ), xlog = FALSE, pch = 16, cex = 1, lwd = 2, col = "black", col.txt = "black", font.txt = 1, col.lines = col, col.points = col, vref = NULL, grid = FALSE, col.grid = gray(0.9), restore.par = TRUE, ... ) { # Function to plot estimates from a model. # Assumes that ests is a p by 3 matrix with estimate, lo and hi as # columns OR a model object. # Extract the estimates if necessary # ests <- get.ests( ests, ... ) # Is it likley that we want a log-axis for the parameters? # mult <- inherits( ests, c("glm","coxph","gnlm") ) if( missing(xlog) ) xlog <- mult # Create an empty plot in order to access the dimension so that # sufficient place can be made for the text in the margin # plot.new() mx <- max( strwidth( txt, units="in" ) ) oldpar <- par( mai=par("mai") + c(0,mx,0,0) ) if( restore.par ) on.exit( par( oldpar ) ) # Set up the coordinate system witout advancing a frame # plot.window( xlim = xlim, ylim = ylim, log = ifelse( xlog, "x", "") ) # Draw a grid if requested # if( !is.logical( grid ) ) abline( v = grid, col = col.grid ) if( is.logical( grid ) & grid[1] ) abline( v = xtic, col = col.grid ) # Draw a vertical reference line # if( !missing( vref ) ) abline( v = vref ) # Draw the estimates with c.i. s # linesEst( ests, y, pch=pch, cex=cex, lwd=lwd, col.points=col.points, col.lines=col.lines ) # Finally the x-axis and the annotation of the estimates # axis( side=1, at=xtic ) mtext( side=1, xlab, line=par("mgp")[1], cex=par("cex")*par("cex.lab") ) axis( side=2, at=txtpos, labels=txt, las=1, lty=0, col.axis=col.txt ) invisible( oldpar ) } pointsEst <- linesEst <- function( ests, y = dim(ests)[1]:1, pch = 16, cex = 1, lwd = 2, col = "black", col.lines = col, col.points = col, ... ) { # Function to add estimates from a model to a drawing. # Assumes that ests is a p by 3 matrix with estimate, lo and hi as # columns. # Extract the estimates if necessary # ests <- get.ests( ests, ... ) # Cut the confidence interval lines to fit inside the plot # before drawing them. # xrng <- if( par("xlog") ) 10^par("usr")[1:2] else par("usr")[1:2] segments( pmax(ests[, 2],xrng[1]), y, pmin(ests[, 3], xrng[2]), y, lwd = lwd, col=col.lines ) # Then the point estimates on top of the lines. # points( ests[, 1], y, pch = pch, cex = cex, col=col.points ) invisible() } nice <- function( x, log = F, lpos = c(1,2,5), ... ) { # Function to produce nice labels also for log-axes. # if( log ) { fc <- floor( log10( min( x ) ) ):ceiling( log10( max( x ) ) ) tick <- as.vector( outer( lpos, 10^fc, "*" ) ) ft <- max( tick[tickmax(x)] ) tick <- tick[tick>=ft & tick<=lt] if( length( tick ) < 4 & missing( lpos ) ) tick <- nice( x, log=T, lpos=c(1:9) ) if( length( tick ) > 10 & missing( lpos ) ) tick <- nice( x, log=T, lpos=1 ) tick } else pretty( x, ... ) } Epi/R/Relevel.R0000644000175100001440000001157313763627513012753 0ustar hornikusers# The Relevel method Relevel <- function (x, ...) UseMethod("Relevel") # Utility to group a factor from a 2-column table; # called from Relevel if second argument is a matrix or table tRelevel <- function( ff, # factor to be grouped gg, # 2-column matrix or table with levels resp. grouping xlevels = TRUE, # include also grouped levels not present in ff nogroup = TRUE ) # levels of ff not grouped are tranferred (if FALSE set to NA) { if( any( wh <- ( apply( table( gg[,1], gg[,2] )>0, 1, sum )>1 ) ) ) stop( "\nFactor level", if(sum(wh)>1) "s", ": \n", paste(names(wh)[wh],collapse=" / "), "\nis grouped to more than one group.\n" ) if( any( is.na( match( unique(as.character(ff)), unique(as.character(gg[,1])) ) ) ) ) cat( "Note: Some values of factor not among levels grouped.\n" ) if( any( wh <- ( apply( table( gg[,1], gg[,2] ), 1, sum )>1 ) ) ) warning( "Factor level", if(sum(wh)>1) "s", ": ", paste(names(wh)[wh],collapse=" / "), "\nappear more than once in the table of groupings." ) # indices and names of the original factor levels ixff <- as.integer( ff ) chff <- as.character( ff ) # where they are in the translation table ixg1 <- as.integer( factor( gg[,1], levels=levels(ff) ) ) # indices of the new levels in the translation table ixg2 <- as.integer( g2 <- factor(gg[,2]) ) # remove unwanted NAs (levels in g[,1] not present in ff) ixg2 <- ixg2[!is.na(ixg1)] ixg1 <- ixg1[!is.na(ixg1)] # where in ixg2 are the integers ixff - match(), choose those values grff <- levels(g2)[ixg2[match(ixff,ixg1)]] # transfer non-grouped levels of ff if( nogroup ) grff[is.na(grff)] <- chff[is.na(grff)] # a factor with the correct levels in the correct order grff <- factor( grff, levels=union(levels(g2),levels(factor(grff))) ) # keep all levels from second column or not? if( xlevels ) grff else factor(grff) } # The factor method is the default method Relevel.default <- Relevel.factor <- function( x, ref, first = TRUE, collapse = "+", xlevels = TRUE, nogroup = TRUE, ... ) { # Function that collapses multiple sets of levels of a factor # # If ref is a 2-dim structure if( is.matrix( ref) | is.table( ref) | is.array( ref) | is.data.frame(ref) ) { if( length(dim(ref)) !=2 ) stop("ref must be 2-dimensional\n") if( dim(ref)[2] < 2 ) stop("ref must have at least 2 colums\n") return( tRelevel( x, ref, xlevels, nogroup ) ) } else { # Otherwise use the old version # if( !is.factor(x) ) { argnam <- deparse( substitute(x) ) f <- factor( x ) cat( "WARNING: ", argnam, "has been converted to a factor with levels:\n", levels( f ) ) } else f <- x # This is a copy of the relevel function from the base package: # relev <- function (x, ref, ...) { lev <- levels(x) if ( is.character( ref ) ) ref <- match(ref, lev) if ( any( is.na( ref ) ) ) stop( "any values in ref must be an existing level\n" ) nlev <- length( lev ) if ( any( ref < 1 ) || any( ref > nlev ) ) stop( paste( "ref=", paste( ref, collapse="," ), ": All elements must be in 1:", nlev, sep="" ) ) factor(x, levels = lev[c(ref, seq(along = lev)[-ref])]) } # If called with a non-list argument assume reshuffling of levels # if( !is.list( ref ) ) fnew <- relev( f, ref ) # If called with a list collapse levels in each list element. # if( is.list( ref ) ) { fnew <- f newnames <- levels( f ) uninames <- character( length( ref ) ) for( s in 1:length(ref) ) if ( is.character( ref[[s]] ) ) ref[[s]] <- match( ref[[s]], levels(f) ) # Check for replicates in levels to be grouped if( any( (tt<-table(unlist(ref))) > 1 ) ) stop("Factor level(s) ", levels( f )[as.numeric(names(tt)[tt>1])], " has been allocated to more than one new level.") for( s in 1:length(ref) ) { uninames[s] <- if( is.null( names( ref ) ) ) { paste( levels( f )[ref[[s]]], collapse=collapse ) } else if( names( ref )[s]=="" ) { paste( levels( f )[ref[[s]]], collapse=collapse ) } else names( ref )[s] newnames[ref[[s]]] <- rep( uninames[s], length( ref[[s]] ) ) } levels( fnew ) <- newnames if( !is.null( first ) ) { if( !first ) fnew <- factor( fnew, c( levels( f )[-unlist( ref )], uninames ) ) if( first ) fnew <- factor( fnew, c( uninames, levels( f )[-unlist( ref )] ) ) } } # This is in order to merge levels with identical names # return( factor( fnew, levels=levels(fnew) ) ) } } Epi/R/mh.R0000644000175100001440000001034512531361077011745 0ustar hornikusers# Mantel-Haenszel estimate and test mh <- function(cases, denom, compare = 1, levels = c(1, 2), by = NULL, cohort = !is.integer(denom), confidence = 0.9) { ndim <- length(dim(cases)) edgin <- names(dimnames(cases)) edgen <- paste("Dimension", 1:ndim) if (is.null(edgin)) edges <- edgen else edges <- ifelse(edgin == "", edgen, edgin) if (is.null(edges)) edges <- rep("", ndim) if(length(dim(denom)) != ndim) { stop("Cases and Pyrs arrays of unequal dimension") } if(is.numeric(compare)) { comp <- as.integer(compare) if(comp < 1 || comp > ndim) { stop("Illegal argument: compare") } } else { comp <- (1:ndim)[edges == compare] if(length(comp) != 1) { stop("Illegal argument: compare") } } if(!is.null(by)) { if (!is.numeric(by)) { mtch <- match(by, edges) if (any(is.na(mtch))) { stop("Illegal argument: by") } by <- (1:ndim)[mtch] } if (any(by < 1 | by > ndim | by == comp)) { stop("Illegal argument: by") } } gtxt <- vector("character", 3) gtxt[1] <- edges[comp] gtxt[2] <- dimnames(cases)[[comp]][levels[1]] gtxt[3] <- dimnames(cases)[[comp]][levels[2]] ctxt <- edges[-c(comp, by)] if (length(ctxt) == 0) ctxt <- as.null() others <- (1:ndim)[ - comp] select <- function(a, el) { b <- a[el] ifelse(is.na(b), 0, b) } d1 <- apply(cases, others, select, el = levels[1]) d2 <- apply(cases, others, select, el = levels[2]) if(length(d1) == 0 || length(d2) == 0) { stop("Illegal argument: levels") } y1 <- apply(denom, others, select, el = levels[1]) y2 <- apply(denom, others, select, el = levels[2]) d <- d1 + d2 y <- y1 + y2 if (cohort) { qt <- ifelse(y>0, (d1 * y2)/y, 0) rt <- ifelse(y>0, (d2 * y1)/y, 0) ut <- ifelse(y>0, d1 - ((d * y1)/y), 0) vt <- ifelse(y>0, (d * y1 * y2)/(y^2), 0) } else { s1 <- d1 + y1 s2 <- d2 + y2 t <- s1 + s2 qt <- ifelse(t>1, (d1 * y2)/t, 0) rt <- ifelse(t>1, (d2 * y1)/t, 0) ut <- ifelse(t>1, d1 - ((d * s1)/t), 0) vt <- ifelse(t>1, (d * y * s1 * s2)/((t - 1) * (t^2)), 0) } if(!is.null(by)) { if(length(by) < ndim - 1) { nby <- match(by, others) q <- apply(qt, nby, sum) r <- apply(rt, nby, sum) u <- apply(ut, nby, sum) v <- apply(vt, nby, sum) } else { q <- qt r <- rt u <- ut v <- vt } } else { q <- sum(qt) r <- sum(rt) u <- sum(ut) v <- sum(vt) } rr <- q/r se <- sqrt(v/(q * r)) ch <- (u^2)/v ef <- exp( - qnorm((1 - confidence)/2) * se) if (cohort) ty <- "Rate ratio" else ty <- "Odds ratio" res <- list(groups = gtxt, control = ctxt, type=ty, q=q, r=r, u=u, v=v, ratio = rr, se.log.ratio = se, cl.lower = rr/ef, cl.upper = rr * ef, chisq = ch, p.value = 1 - pchisq( ch, 1)) class(res) <- "mh" res } print.mh <- function(m) { cat("\n") if (!is.null(m$control)) cat("\nMantel-Haenszel comparison for: ") else cat("Comparison for: ") cat(m$groups[1], " (", m$groups[2], "versus", m$groups[3], ")\n") if (!is.null(m$control)) cat("controlled for:", m$control, "\n") cols <- c(m$type, "CL (lower)", "CL (upper)", "Chisq (1 df)", "p-value") nr <- length(m$ratio) if (is.array(m$ratio)) { dnt <- dimnames(m$ratio) size <- dim(m$ratio) nw <- length(dnt) } else { rn <- names(m$ratio) if (length(rn) > 1) dnt <- list(names(m$ratio)) else dnt <- list("") size <- nr nw <- 1 } dno <- vector("list", nw+1) so <- vector("numeric", nw+1) dno[[1]] <- dnt[[1]] dno[[2]] <- cols so[1] <- size[1] so[2] <- 5 if (nw > 1) for (i in 2:nw) { dno[[i+1]] <- dnt[[i]] so[i+1] <- size[i] } s1 <- size[1] tab <- cbind(m$ratio, m$cl.lower, m$cl.upper, m$chisq, m$p.value) # as.matrix(m$ratio, nrow=s1), # as.matrix(m$cl.lower, nrow=s1), # as.matrix(m$cl.upper, nrow=s1), # as.matrix(m$chisq, nrow=s1), # as.matrix(m$p.value, nrow=s1) ) print(array(tab, dim=so, dimnames=dno)) if (nr > 1) { Q <- sum(m$q) R <- sum(m$r) cat("\nOverall Mantel-Haenszel estimate of", m$type, ":", format(Q/R)) h <- sum(((m$q*R-m$r*Q)^2)/m$v)/(Q*R) df <- sum(m$v>0)-1 cat("\nChi-squared test of heterogeneity:", format(h), "(",df," df), p =", format(1-pchisq(h, df)), "\n") } cat("\n") } # Power calculations mh.power <- function(mh, ratio, alpha=0.05) { n.se <- log(ratio)/mh$se.log.ratio pnorm(n.se - qnorm(1-alpha/2)) } Epi/R/mcutLexis.R0000644000175100001440000001333513761777063013334 0ustar hornikusersmcutLexis <- function( L0, # A Lexis object timescale = 1, # the time scale referred to by L0[,wh] wh, # indices/names of columns witha dates of state entries (events) new.states = NULL, # Names of the event types (states) precursor.states = transient(L0), # NULL, seq.states = TRUE, # Should state names reflect ordering of events new.scales = NULL, # Time-scales referring to time since ties.resolve = FALSE # Are tied event times accepted? ) { ### we rely on referring to the timescale and event time variables by name if( is.numeric(timescale) ) timescale <- timeScales(L0)[timescale] if( is.numeric(wh) ) wh <- names(L0)[wh] ### don't be silly if( length(wh)==1 ) # return( docut( L0, osv ) ) # old cutLexis should be absorbed here stop( "mcutLexis not needed for one type of event - use cutLexis\n" ) ### states if( is.null(new.states) ) { new.states <- wh cat( "NOTE: Name of new states set to\n", new.states ) } if( length(wh) != length(new.states) ) stop( "wh and new.states must have same length, but lengths are", "wh:", length(wh), "and new.states:", length(new.states), "\n" ) ### precursor state if(missing(precursor.states)) cat("NOTE: Precursor states set to", precursor.states, "\n") ### timescales # either all or none if( is.logical(new.scales) ) if( any( new.scales ) ) { new.scales <- paste( "tf", new.states, sep="" ) cat( "NOTE: new.scales set to: ", new.scales, "\n" ) } if( is.character(new.scales) & length(new.scales) != length(wh) ) { new.scales <- paste( "tf", new.states, sep="" ) warning( "new.scales not of same length as wh. Set to: ", new.scales, "\n" ) } if( is.character(new.scales) & length(intersect(new.scales,timeScales(L0))) ) stop( "Names of new time scales must be different from names of existing timescales:\n", timeScales(L0) ) ### Tied transition times untied has.ties <- any( wh.tied <- apply( L0[,wh], 1, function(x) any(diff(sort(x[!is.na(x)]))==0) ) ) if( has.ties & is.logical(ties.resolve) & !ties.resolve ) stop( "Tied event times not allowed with ties.resolve=FALSE:\n", "there were", length(wh.tied), "records with tied event times.") if( has.ties & is.logical(ties.resolve) & ties.resolve ) ties.resolve <- 1/100 if( has.ties & is.numeric(ties.resolve) ) { rnd <- L0[wh.tied,wh]*0 rnd[,] <- runif(rnd,-1,1) * ties.resolve L0[wh.tied,wh] <- L0[wh.tied,wh] + rnd cat("NOTE:", sum(wh.tied), "records with tied events times resolved (adding", ties.resolve, "random uniform),\n", " so results are only", "reproducible if the random number seed was set.\n") } # End of checks # The object to return initiated as NULL Lcut <- NULL # Utility function returning sequences of ocurrences as paste of numbers NAorder <- function (x) { oo <- order(x, na.last = T) on <- (1:length(oo))[oo] on[is.na(x[oo])] <- NA paste(on[!is.na(on)], collapse = "-") } # where do the different sequences of events actually occur in data L0$whseq <- apply( L0[,wh], 1, NAorder ) # Loop through the actually occurring orders of event occurrences for( sq in unique(L0$whseq) ) { # Persons with none of the events occurring transferred to result if( sq=="" ) Lcut <- rbind( Lcut, L0[L0$whseq=="",] ) else { # Extract the subset of persons with a given sequence of events Ltmp <- L0[L0$whseq==sq,] # The numerical sequence of states (refer to the elements of wh) ost <- as.numeric( strsplit( sq, "-" )[[1]] ) nxst <- "" prst <- precursor.states for( cs in ost ) { nxst <- ifelse( cs==ost[1], new.states[cs], paste( nxst, new.states[cs], sep="-" ) ) Ltmp <- cutLexis( Ltmp, cut = Ltmp[,wh[cs]], timescale = timescale, new.state = nxst, precursor.states = prst ) # include the created state among the precursor states for next cut prst <- c(prst,nxst) } # end of for loop through events in this sequence (cs) # Attach it to the end of the Lexis object Lcut <- rbind( Lcut, Ltmp ) } # end of the else clause } # end of for loop through sequences (sq) # Do we want the sequences, the unordered set of previous events or # just the current one: old.seq <- seq.states if( is.logical(seq.states) ) seq.states <- ifelse( seq.states, "s", "u" ) if( is.character(seq.states) ) seq.states <- tolower( substr(seq.states,1,1) ) if( !(seq.states %in% c("s","o","u","l","c")) ) stop( "What do you mean by seq.states=", old.seq, "? - it should abbreviate to one of s, o, u, l or c \n") # Unordered or last (current) states if( seq.states %in% c("u","l","c") ) { # Each list element is a vector of states visited slvl <- strsplit( levels( Lcut ), "-" ) # merge those that have the same elements or take the last rlvl <- if( seq.states=="u" ) { sapply( lapply( slvl, sort ), paste, collapse="+" ) } else sapply( slvl, function(x) x[length(x)] ) # Relevel the states levels( Lcut$lex.Cst ) <- levels( Lcut$lex.Xst ) <- rlvl } # Did we ask for timescales as time since events? if( !is.null(new.scales) ) { # insert columns for the new time scales Lcut <- Lcut[,c(rep("whseq",length(new.scales)),names(Lcut))] names( Lcut )[1:length(new.scales)] <- new.scales for( i in 1:length(wh) ) Lcut[,i] <- ifelse( Lcut[,timescale] - Lcut[,wh[i]] < 0, NA, Lcut[,timescale] - Lcut[,wh[i]] ) # set attributes attr( Lcut, "time.scales" ) <- c( attr( Lcut, "time.scales" ), new.scales ) attr( Lcut, "time.since" ) <- c( attr( Lcut, "time.since" ), new.states ) } # return the cut object without the auxilary variable rmcol <- grep( "whseq", names(Lcut) ) Lcut[,-rmcol] } Epi/R/NArray.R0000644000175100001440000000146212531361077012535 0ustar hornikusersNArray <- function( x, cells=NA ) { if( !is.list(x) ) stop("Argument must be a (named) list." ) array( cells, dimnames=x, dim=sapply( x, length ) ) } ZArray <- function( x, cells=0 ) NArray( x, cells=cells ) larray <- function( data=NA, dim, dimnames ) { if( is.list(data) ) return( array(data=NA,dim=sapply(data,length), dimnames=data) ) else if( is.list(dim) ) return( array(data=data,dim=sapply(dim,length), dimnames=dim) ) else if( is.list(dimnames) ) return( array(data=data,dim=sapply(dimnames,length), dimnames=dimnames) ) else if( !missing(dimnames) ) return( array(data=data,dim=length(data), dimnames=dimnames) ) else return( array(data=data,dim=length(data)) ) } Epi/R/stattable.R0000644000175100001440000003440412531361077013326 0ustar hornikusersstat.table <- function(index, contents=count(), data, margins=FALSE) { ## Get names of indices, using either user-supplied names, or by ## deparsing. Some of this code is stolen from the list.names() ## function in table() index.sub <- substitute(index) index <- if (missing(data)) eval(index) else eval(index.sub, data) deparse.name <- function(x) if(is.symbol(x)) as.character(x) else "" if (is.list(index)) { if (is.call(index.sub)) { ## List constructed in the call to stat.table index.names <- names(index.sub) fixup <- if (is.null(index.names)) seq(along = index.sub) else index.names == "" dep <- sapply(index.sub[fixup], deparse.name) if (is.null(index.names)) index.labels <- dep else { index.labels <- index.names index.labels[fixup] <- dep } index.labels <- index.labels[-1] } else { ## List constructed outside the call to stat.table index.labels <- if (!is.null(names(index))) { names(index) } else { rep("", length(index)) } } } else { ## A single vector index.labels <- deparse.name(index.sub) } ## Coerce index to list of factors if (!is.list(index)) index <- list(index) index <- lapply(index, as.factor) ## Coerce contents to an expression representing a list of function calls contents <- substitute(contents) if (!identical(deparse(contents[[1]]), "list")) { contents <- call("list", contents) } ## Check that functions in the contents list are valid valid.functions <- c("count","mean","weighted.mean","sum","quantile", "median","IQR","max","min","ratio","percent","sd") table.fun <- character(length(contents) - 1) for (i in 2:length(contents)) { if (!is.call(contents[[i]])) stop("contents must be a list of function calls") FUN <- deparse(contents[[i]][[1]]) if (!FUN %in% valid.functions) stop(paste("Function",FUN,"not permitted in stat.table")) else table.fun[i-1] <- FUN } ## Label the contents by default with the function call ## But if user has supplied a label use that instead. stat.labels <- sapply(contents, deparse)[-1] content.names <- names(contents) if (!is.null(content.names)) { for (i in 2:length(content.names)) { if (nchar(content.names[i]) > 0) stat.labels[i-1] <- content.names[i] } } ##Define the allowed tabulation functions count <- function(id){ if (missing(id)) { id <- seq(along=index[[1]]) } y <- tapply(id, INDEX=subindex, FUN=function(x) length(unique(x))) y[is.na(y)] <- 0 return(y) } mean <- function(x, trim=0, na.rm=TRUE) { tapply(x, INDEX=subindex, FUN = base::mean, trim=trim, na.rm=na.rm) } weighted.mean <- function(x,w,na.rm=TRUE) { tapply(x, INDEX=subindex, FUN=stats::weighted.mean, w=w, na.rm=na.rm) } sum <- function(...,na.rm=TRUE) { tapply(..., INDEX=subindex, FUN = base::sum, na.rm=na.rm) } quantile <- function(x, probs, na.rm=TRUE,names=TRUE,type=7,...) { if (length(probs) > 1) stop("The quantile function only accepts scalar prob values within stat.table") tapply(x, INDEX=subindex, FUN = stats::quantile, probs=probs, na.rm=na.rm,names=names,type=type,...) } median <- function(x, na.rm=TRUE) { tapply(x, INDEX=subindex, FUN = stats::median, na.rm=na.rm) } IQR <- function(x, na.rm=TRUE) { tapply(x, INDEX=subindex, FUN= stats::IQR, na.rm=na.rm) } max <- function(..., na.rm=TRUE) { tapply(..., INDEX=subindex, FUN = base::max, na.rm=na.rm) } min <- function(..., na.rm=TRUE) { tapply(..., INDEX=subindex, FUN = base::min, na.rm=na.rm) } ratio <- function(d,y,scale=1, na.rm=TRUE) { if (length(scale) != 1) stop("Scale parameter must be a scalar") if (na.rm) { w <- (!is.na(d) & !is.na(y)) tab1 <- tapply(d*w, INDEX=subindex, FUN=base::sum, na.rm=TRUE) tab2 <- tapply(y*w, INDEX=subindex, FUN=base::sum, na.rm=TRUE) } else { tab1 <- tapply(d, INDEX=subindex, FUN=base::sum, na.rm=FALSE) tab2 <- tapply(y, INDEX=subindex, FUN=base::sum, na.rm=FALSE) } return(scale*tab1/tab2) } percent <- function(...) { x <- list(...) if (length(x) == 0) stop("No variables to calculate percent") x <- lapply(x, as.factor) n <- count() ## Work out which indices to sweep out sweep.index <- logical(length(subindex)) for (i in seq(along=subindex)) { sweep.index[i] <- !any(sapply(x,identical,subindex[[i]])) } if (!any(sweep.index)) { return(100*n/base::sum(n, na.rm=TRUE)) } else { margin <- apply(n,which(sweep.index),base::sum, na.rm=TRUE) margin[margin==0] <- NA return(100*sweep(n, which(sweep.index), margin,"/")) } } sd <- function (..., na.rm = TRUE) { tapply(..., INDEX=subindex, FUN = stats::sd, na.rm=na.rm) } ##Calculate dimension of the main table, excluding margins n.dim <- length(index) tab.dim <- sapply(index, nlevels) ##Sort out margins if (length(margins) == 1) margins <- rep(margins, n.dim) else if(length(margins) != n.dim) stop("Incorrect length for margins argument") ##Create grid of all possible subtables. fac.list <- vector("list", n.dim) for (i in 1:n.dim) { fac.list[[i]] <- if (margins[i]) c(0,1) else 1 } subtable.grid <- as.matrix(expand.grid(fac.list)) ##Fill in the subtables ans.dim <- c(length(contents)-1, tab.dim + margins) ans <- numeric(prod(ans.dim)) for (i in 1:nrow(subtable.grid)) { ##in.subtable is a logical vector indicating which dimensions are ##in the subtable (i.e. which have not been marginalized out) in.subtable <- as.logical(subtable.grid[i,]) llim <- rep(1,n.dim) + ifelse(in.subtable,rep(0,n.dim),tab.dim) ulim <- tab.dim + ifelse(in.subtable,rep(0,n.dim),rep(1, n.dim)) subindex <- index[in.subtable] if (length(subindex) == 0) { ## Marginalizing out all dimensions subindex <- list(rep(1, length(index[[1]]))) } subtable.list <- if(missing(data)) ##eval(contents, parent.frame()) eval(contents) else eval(as.expression(contents), data) for (j in 1:length(subtable.list)) { ans[array.subset(ans.dim,c(j,llim),c(j,ulim))] <- subtable.list[[j]] } } ans <- array(ans, dim=ans.dim) ans.dimnames <- lapply(index, levels) names(ans.dimnames) <- index.labels for (i in 1:length(index)) { if (margins[i]) ans.dimnames[[i]] <- c(ans.dimnames[[i]], "Total") } dimnames(ans) <- c(list("contents"=stat.labels), ans.dimnames) attr(ans, "table.fun") <- table.fun class(ans) <- c("stat.table", class(ans)) return(ans) } array.subset <- function(dim,lower,upper) { ##Returns a logical array of dimension dim for which elements in the range ##[lower[1]:upper[1], lower[2]:upper[2],...] are TRUE and others FALSE ##Check validity of arguments (but assume everything is an integer) ndim <- length(dim) if (length(lower) != ndim || length(upper) != ndim) { stop("Length of lower and upper limits must match dimension") } if (any(lower > upper) || any(lower < 1) || any(upper > dim)) { stop("Invalid limits") } ##The math is easier if we index arrays from 0 rather than 1 lower <- lower - 1 upper <- upper - 1 N <- prod(dim) ans <- rep(TRUE, N) for (i in 1:N) { l <- i - 1 for (d in 1:ndim) { k <- l %% dim[d] #k is the index of the ith element in dimension d if (k < lower[d] || k > upper[d]) { ans[i] <- FALSE break } l <- l %/% dim[d] } } return(array(ans, dim)) } split.to.width <- function(x,width) { ## Splits a string into a vector so that each element has at most width ## characters. If width is smaller than the length of the shortest word ## then the latter is used instead x.split <- strsplit(x,split=" ")[[1]] width <- max(c(width,nchar(x.split))) y <- character(0) imin <- 1 n <- length(x.split) for (i in 1:n) { cum.width <- if(i==n) { Inf } else { sum(nchar(x.split[imin:(i+1)])) + (i - imin + 1) } if (cum.width > width) { y <- c(y,paste(x.split[imin:i], collapse=" ")) imin <- i + 1 } } return(y) } pretty.print.stattable.1d <- function(x, width, digits) { ##Pretty printing of 1-D stat.table if (length(dim(x)) != 2) stop("Cannot print stat.table") ncol <- nrow(x) col.width <- numeric(ncol+1) col.header <- vector("list",ncol+1) n.header <- integer(ncol+1) print.list <- vector("list",ncol+1) ##First column col.header[[1]] <- split.to.width(names(dimnames(x))[2], width) n.header[1] <- length(col.header[[1]]) col1 <- format(c(col.header[[1]],dimnames(x)[[2]]), justify="left") col.header[[1]] <- col1[1:n.header[1]] print.list[[1]] <- col1[-(1:n.header[1])] col.width[1] <- nchar(col.header[[1]][1]) ##Other columns for (i in 2:(ncol+1)) { col.header[[i]] <- split.to.width(dimnames(x)[[1]][i-1], width) n.header[i] <- length(col.header[[i]]) this.col <- formatC(x[i-1,],width=width, digits=digits[attr(x,"table.fun")[i-1]], "f") this.col <- format(c(col.header[[i]],this.col),justify="right") col.width[i] <- nchar(this.col[1]) col.header[[i]] <- this.col[1:n.header[i]] print.list[[i]] <- this.col[-(1:n.header[i])] } ## table.width <- sum(col.width) + ncol + 3 max.n.header <- max(n.header) cat(" ",rep("-",table.width)," \n",sep="") for(i in 1:max.n.header) { cat(" ") for(j in 1:length(print.list)) { if (i <= n.header[j]) { cat(col.header[[j]][i]) } else { cat(rep(" ", col.width[[j]]),sep="") } if (j==1) cat(" ") else cat(" ") } cat(" \n") } cat(" ",rep("-",table.width)," \n",sep="") for (i in 1:length(print.list[[1]])) { cat(" ") if (pmatch("Total",print.list[[1]][i],nomatch=0)) { ##Add a blank line before the total cat(rep(" ",col.width[1]+1)," ",rep(" ",sum(col.width[-1])+ncol), " \n ",sep="") } for (j in 1:length(print.list)) { cat(print.list[[j]][i]) if (j == 1) { cat(" " ) } else { cat(" ") } } cat(" \n") } cat(" ",rep("-",table.width)," \n",sep="") return(invisible(x)) } pretty.print.stattable.2d <- function(x, width, digits) { ##Pretty printing of 2-Dimensional stat.table if (length(dim(x)) != 3) stop("Cannot print stat.table") nstat <- dim(x)[1] ncol <- dim(x)[3] nrow <- dim(x)[2] col.width <- numeric(ncol+1) col.header <- vector("list",ncol+1) n.header <- integer(ncol+1) print.list <- vector("list",ncol+1) ##First column col.header[[1]] <- split.to.width(names(dimnames(x))[2], width) n.header[1] <- length(col.header[[1]]) col1 <- format(c(col.header[[1]],dimnames(x)[[2]]), justify="left") col.header[[1]] <- col1[1:n.header[1]] print.list[[1]] <- col1[-(1:n.header[1])] col.width[1] <- nchar(col.header[[1]][1]) ##Other columns for (i in 2:(ncol+1)) { col.header[[i]] <- split.to.width(dimnames(x)[[3]][i-1], width) n.header[i] <- length(col.header[[i]]) this.col <- matrix("", nrow=nstat,ncol=nrow) for (j in 1:nstat) { z <- x[j,,i-1] this.col[j,] <- formatC(z, width=width, format="f", digits=digits[attr(x,"table.fun")[j]]) ## this.col[j,] <- formatC(z, width=width, digits=digits, ## format=ifelse(identical(round(z),z),"d","f")) } this.col <- format(c(col.header[[i]],this.col),justify="right") col.width[i] <- nchar(this.col[1]) col.header[[i]] <- this.col[1:n.header[i]] print.list[[i]] <- this.col[-(1:n.header[i])] } ##Correct first column for multiple stats if (nstat > 1) { pl1 <- print.list[[1]] print.list[[1]] <- rep(paste(rep(" ",col.width[1]),collapse=""),nstat*nrow) print.list[[1]][1 + nstat*((1:nrow)-1)] <- pl1 } table.width <- sum(col.width) + ncol + 3 max.n.header <- max(n.header) cat(" ",rep("-",table.width)," \n",sep="") ## Supercolumn header super.header <- names(dimnames(x))[3] npad <- sum(col.width[-1]) + ncol + 1 - nchar(super.header) if (npad >= 0) { cat(" ",rep(" ",col.width[1])," ",sep="") cat(rep("-",floor(npad/2)),sep="") cat(super.header) cat(rep("-",ceiling(npad/2))," \n",sep="") } ## Headers for(i in 1:max.n.header) { cat(" ") for(j in 1:length(print.list)) { if (i <= n.header[j]) { cat(col.header[[j]][i]) } else { cat(rep(" ", col.width[[j]]),sep="") } if (j==1) cat(" ") else cat(" ") } cat(" \n") } cat(" ",rep("-",table.width)," \n",sep="") ## Body of table blank.line <- function() { cat(" ",rep(" ",col.width[1]+1)," ",rep(" ",sum(col.width[-1])+ncol), " \n",sep="") } for (i in 1:length(print.list[[1]])) { if (pmatch("Total",print.list[[1]][i],nomatch=0)) { ##Add a blank line before the total blank.line() } cat(" ") for (j in 1:length(print.list)) { cat(print.list[[j]][i]) if (j == 1) { cat(" " ) } else { cat(" ") } } cat(" \n") if (nstat > 1 && i %% nstat == 0 && i != length(print.list[[1]])) { ##Separate interleaved stats blank.line() } } cat(" ",rep("-",table.width)," \n",sep="") return(invisible(x)) } print.stat.table <- function(x, width=7,digits,...) { fun.digits <- c("count"=0,"mean"=2,"weighted.mean"=2,"sum"=2,"quantile"=2, "median"=2,"IQR"=2,"max"=2,"min"=2,"ratio"=2,"percent"=1, "sd"=2) if (!missing(digits)) { if (is.null(names(digits))) { if (length(digits) > 1) stop("digits must be a scalar or named vector") else fun.digits[1:length(fun.digits)] <- digits } else { fun.digits[names(digits)] <- digits } } if (length(dim(x)) == 2) pretty.print.stattable.1d(x, width, fun.digits) else if (length(dim(x)) == 3) pretty.print.stattable.2d(x, width, fun.digits) else NextMethod("print",...) } ## Satisfy QA checks by defining these functions. But if we never ## export them they can't be used directly. count <- function(id) { } ratio <- function(d, y, scale=1, na.rm=TRUE) { } percent <- function(...) { } Epi/R/mat2pol.R0000644000175100001440000000102313564245720012713 0ustar hornikusersmat2pol <- function( pm, perm = 1:ncol(pm), x = as.numeric(rownames(pm)), col = rainbow(ncol(pm)), yl = 0:1, append = FALSE, ... ) { if( missing(x) ) x <- as.numeric( rownames(pm) ) if( length(x)==0 ) x <- 1:nrow(pm) xm <- cbind( 0, pm[,perm] ) xm <- t( apply(xm,1,cumsum) ) if( !append ) plot( x, x, type="n", ylim=yl, ... ) for( j in 1:ncol(pm) ) polygon( c(x,rev(x)), c(xm[,j],rev(xm[,j+1])), col = col[j], border="transparent" ) invisible( xm ) } Epi/R/boxes.MS.R0000644000175100001440000003752713763222575013021 0ustar hornikuserstbox <- function( txt, x, y, wd, ht, font=2, lwd=2, col.txt=par("fg"), col.border=par("fg"), col.bg="transparent" ) { rect( x-wd/2, y-ht/2, x+wd/2, y+ht/2, lwd=lwd, border=col.border, col=col.bg ) text( x, y, txt, font=font, col=col.txt ) invisible( c( x, y, wd, ht ) ) } dbox <- function( x, y, wd, ht=wd, font=2, lwd=2, cwd=5, col.cross=par("fg"), col.border=par("fg"), col.bg="transparent" ) { rect( x-wd/2, y-ht/2, x+wd/2, y+ht/2, lwd=lwd, border=col.border, col=col.bg ) ch <- ht*2/3 segments( c(x , x-ch/3), c(y+ch/2, y+ch/6), c(x , x+ch/3), c(y-ch/2, y+ch/6), lwd=cwd, col=col.cross ) invisible( c( x, y, wd, ht ) ) } fillarr <- function( x1, y1, x2, y2, gap=2, fr=0.8, angle=17, lwd=2, length=par("pin")[1]/30, ... ) { fr <- 1-gap/sqrt((x1-x2)^2+(y1-y2)^2) if( !missing(fr) ) if( fr > 1 ) fr <- fr/100 for( a in 1:angle ) arrows( x1 + (x2-x1)*(1-fr)/2, y1 + (y2-y1)*(1-fr)/2, x2 - (x2-x1)*(1-fr)/2, y2 - (y2-y1)*(1-fr)/2, angle=a, lwd=lwd, ... ) } std.vec <- function( a, b ) { l <- sqrt(a^2+b^2) if( l==0 ) return( c(0,0) ) else return( c(a/l,b/l) ) } boxarr <- function (b1, b2, offset = FALSE, pos = 0.45, ...) { d <- std.vec(b2[1] - b1[1], b2[2] - b1[2]) dd <- d * offset x1 <- b1[1] - dd[2] y1 <- b1[2] + dd[1] w1 <- b1[3] h1 <- b1[4] x2 <- b2[1] - dd[2] y2 <- b2[2] + dd[1] w2 <- b2[3] h2 <- b2[4] hx1 <- x1 + ifelse((y2-y1) != 0, (x2-x1) * ((h1/2)/abs(y2-y1)), sign(x2-x1) * w1/2) vx1 <- x1 + ifelse((x2-x1) != 0, (x2-x1) * ((w1/2)/abs(x2-x1)), 0) hx2 <- x2 + ifelse((y1-y2) != 0, (x1-x2) * ((h2/2)/abs(y1-y2)), sign(x1-x2) * w2/2) vx2 <- x2 + ifelse((x1-x2) != 0, (x1-x2) * ((w2/2)/abs(x1-x2)), 0) hy1 <- y1 + ifelse((y2-y1) != 0, (y2-y1) * ((h1/2)/abs(y2-y1)), 0) vy1 <- y1 + ifelse((x2-x1) != 0, (y2-y1) * ((w1/2)/abs(x2-x1)), sign(y2-y1) * h1/2) hy2 <- y2 + ifelse((y1-y2) != 0, (y1-y2) * ((h2/2)/abs(y1-y2)), 0) vy2 <- y2 + ifelse((x1-x2) != 0, (y1-y2) * ((w2/2)/abs(x1-x2)), sign(y1-y2) * h2/2) if( abs(vy1-y1) < h1/2 ) { bx1 <- vx1 by1 <- vy1 } else { bx1 <- hx1 by1 <- hy1 } if( abs(vy2-y2) < h2/2 ) { bx2 <- vx2 by2 <- vy2 } else { bx2 <- hx2 by2 <- hy2 } fillarr( bx1, by1, bx2, by2, ... ) invisible( list( x = bx1*(1-pos)+bx2*pos, y = by1*(1-pos)+by2*pos, d = d ) ) } wh.no <- function( tt, i, j ) { ## Utility to count the number of non-NA off diagonal elements with ## rown.tr ) col.arr <- col.arr [1:n.tr] if( length(col.txt.arr)>n.tr ) col.txt.arr<- col.txt.arr[1:n.tr] if( length(lwd.arr )>n.tr ) lwd.arr <- lwd.arr [1:n.tr] if( length(font.arr )>n.tr ) font.arr <- font.arr [1:n.tr] if( length(pos.arr )>n.tr ) pos.arr <- pos.arr [1:n.tr] # Here comes the plot # First setting up the plot area, and restoring the plot parameters later opar <- par( mar=c(0,0,0,0), cex=cex ) on.exit( par(opar) ) plot( NA, bty="n", xlim=0:1*100, ylim=0:1*100, xaxt="n", yaxt="n", xlab="", ylab="" ) # String height and width only meaningful after a plot has been called if( missing(ht) ) { ht <- strheight( pl.nam ) * hmult if( eq.ht ) ht <- rep( max(ht), length(ht) ) } if( missing(wd) ) { wd <- strwidth( pl.nam ) * wmult if( eq.wd ) wd <- rep( max(wd), length(wd) ) } # If not supplied, ask for positions of boxes if( is.list(boxpos) ) { names(boxpos) <- tolower( names(boxpos) ) if( length(intersect(names(boxpos),c("x","y")))<2 ) stop( "The list given in 'boxpos=' must have components 'x' and 'y'" ) if( length(boxpos$x) != n.st | length(boxpos$y) != n.st ) stop( "The elements 'x' and 'y' of boxpos must both have length equal to no. states", n.st ) xx <- boxpos$x yy <- boxpos$y } if( is.logical(boxpos) ) if( boxpos ) { ang <- pi - 2*pi*((1:n.st-0.5)/n.st) xx <- cos( ang ) * 35 + 50 yy <- sin( ang ) * 35 + 50 } else { xx <- yy <- numeric(n.st) for( i in subset ) { cat( "\nClick for level ", st.nam[i] ) flush.console() pt <- locator(1) xx[i] <- pt$x yy[i] <- pt$y tbox( pl.nam[i], xx[i], yy[i], wd[i], ht[i], ... ) } cat( "\n" ) } # Plot the boxes and record position and size b <- list() for( i in subset ) b[[i]] <- tbox( pl.nam[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.txt=col.txt[i], col.border=col.border[i], col.bg=col.bg[i] ) # Arrows and text on them arrowtext <- character(0) for( i in subset ) for( j in subset ) { if( !is.na(tt[i,j]) & i!=j ) { # Which number of arrow is currently processed? a <- wh.no( tt, i, j ) arr <- boxarr( b[[i]], b[[j]], offset=(!is.na(tt[j,i]))*offset.arr, lwd=lwd.arr[a], col=col.arr[a], pos=pos.arr[a], ... ) if( show.D | show.R ) { if( show.D & D[i,j]>0 ) arrowtext[a] <- formatC( D[i,j], format="f", digits=0, big.mark="," ) else arrowtext[a] <- "" if( show.R & R[i,j]>0 ) arrowtext[a] <- paste( if( !is.null(arrowtext[a]) ) paste( arrowtext[a], DR.sep[1], sep="" ), formatC( R[i,j], format="f", digits=digits.R, big.mark="," ), if( length(DR.sep) > 1 ) DR.sep[2], sep="" ) } else if( !is.null(txt.arr) ) arrowtext[a] <- txt.arr[a] if( !is.null(arrowtext[a]) ) text( arr$x-arr$d[2], arr$y+arr$d[1], arrowtext[a], adj=as.numeric(c(arr$d[2]>0,arr$d[1]<0)), font=font.arr[a], col=col.txt.arr[a] ) } } # Redraw the boxes with white background to remove any arrows crossing for( i in subset ) tbox( pl.nam[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.bg=par("bg") ) # Then redraw the boxes again for( i in subset ) tbox( pl.nam[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.txt=col.txt[i], col.border=col.border[i], col.bg=col.bg[i] ) # Finally create an object with all information to re-draw the display MSboxes <- list( Boxes = data.frame( xx = xx, yy = yy, wd = wd, ht = ht, font = font, lwd = lwd, col.txt = col.txt, col.border = col.border, col.bg = col.bg, stringsAsFactors=FALSE ), State.names = pl.nam, Tmat = tt, Arrows = data.frame( lwd.arr = lwd.arr, col.arr = col.arr, pos.arr = pos.arr, col.txt.arr = col.txt.arr, font.arr = font.arr, offset.arr = offset.arr, stringsAsFactors=FALSE ), Arrowtext = arrowtext ) class( MSboxes ) <- "MS" invisible( MSboxes ) } boxes.MS <- function( obj, sub.st, sub.tr, cex=1.5, ... ) { if( !inherits(obj,"MS") ) stop( "You must supply an object of class 'MSboxes'" ) n.st <- nrow( obj$Boxes ) n.tr <- nrow( obj$Arrows ) if( missing(sub.st) ) sub.st <- 1:n.st if( missing(sub.tr) ) sub.tr <- 1:n.tr # First setting up the plot area, and restoring the plot parameters later opar <- par( mar=c(0,0,0,0), cex=cex ) on.exit( par(opar) ) plot( NA, bty="n", xlim=0:1*100, ylim=0:1*100, xaxt="n", yaxt="n", xlab="", ylab="" ) # Exercise the subsets by putting the relevant colors to "transparent" obj$Boxes[-sub.st,c("col.txt", "col.border", "col.bg")] <- "transparent" obj$Arrows[-sub.tr,c("col.arr", "col.txt.arr")] <- "transparent" # Then draw the boxes b <- list() for( i in 1:n.st ) b[[i]] <- with( obj$Boxes, tbox( obj$State.names[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.txt=col.txt[i], col.border=col.border[i], col.bg=col.bg[i] ) ) # and the arrows for( i in 1:n.st ) for( j in 1:n.st ) { if( !is.na(obj$Tmat[i,j]) & i!=j ) { a <- wh.no( obj$Tmat, i, j ) arr <- with( obj$Arrows, boxarr( b[[i]], b[[j]], offset=(!is.na(obj$Tmat[j,i]))*offset.arr, lwd=lwd.arr[a], col=col.arr[a], pos=pos.arr[a], ... ) ) with( obj$Arrows, text( arr$x-arr$d[2], arr$y+arr$d[1], obj$Arrowtext[a], adj=as.numeric(c(arr$d[2]>0,arr$d[1]<0)), font=font.arr[a], col=col.txt.arr[a] ) ) } } # Redraw the boxes with "bg" background to remove any arrows crossing for( i in sub.st ) with( obj$Boxes, tbox( obj$State.names[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.txt=par("bg"), col.border=par("bg"), col.bg=par("bg") ) ) # Then redraw the boxes again for( i in sub.st ) with( obj$Boxes, tbox( obj$State.names[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.txt=col.txt[i], col.border=col.border[i], col.bg=col.bg[i] ) ) # Done! invisible( NULL ) } Epi/R/cal.yr.R0000644000175100001440000000276714061607202012533 0ustar hornikuserscal.yr <- function( x, format = "%Y-%m-%d", wh = NULL ) { cl.typ <- c("Date","POSIXct","POSIXlt","date","dates","chron") # Check if the input is a data frame and convert column bu column if (inherits(x, "data.frame")) { if (is.null(wh) & missing(format)) { # Indicator of where a date-type variable is wh <- which(sapply(x, inherits, cl.typ)) } if (is.null(wh) & !missing(format)) { # Indicator of where the character variables are wh <- which(sapply(x, is.character)) } if (is.character(wh)) wh <- match(wh, names(x)) # Convert the dates or the character variables one at a time for (i in wh) { if (is.character(x[,i])) x[,i] <- cal.yr(x[,i], format = format) else x[,i] <- cal.yr(x[,i]) } return(x) } # end of dataframe doings # now converting a single vector to decimal years: # Check if the input is some kind of date or time object if (any(inherits(x, cl.typ))) x <- as.Date(as.POSIXct(x)) else if( is.character(x)) x <- as.Date(x, format = format) else if( is.factor(x)) x <- as.Date(as.character(x), format = format) else stop("\nInput should be a data frame, a character vector", "a factor or some kind of date or time object:\n", "Date, POSIXct, POSIXlt, date, dates or chron") res <- as.numeric(x) / 365.25 + 1970 class(res) <- c("cal.yr", "numeric") return(res) } Epi/R/ROC.R0000644000175100001440000002211313150633754011762 0ustar hornikuserssteplines <- function( x, y, left = TRUE, right = !left, order = TRUE, ... ) { # A function to plot step-functions # # Get the logic right if right is supplied... left <- !right # ... right! n <- length( x ) if( any( order ) ) ord <- order(x) else ord <- 1:n dbl <- rep( 1:n, rep( 2, n) ) xv <- c( !left, rep( T, 2*(n-1) ), left) yv <- c( left, rep( T, 2*(n-1) ), !left) lines( x[ord[dbl[xv]]], y[ord[dbl[yv]]], ... ) } interp <- function ( target, fv, res ) { # Linear interpolaton of the values in the N by 2 matrix res, # to the target value target on the N-vector fv. # Used for placing tickmarks on the ROC-curves. # where <- which( fv>target )[1] - 1:0 int <- fv[where] wt <- ( int[2] - target ) / diff( int ) wt[2] <- 1-wt t( res[where,] ) %*% wt } ROC.tic <- function ( tt, txt = formatC(tt,digits=2,format="f"), dist = 0.02, angle = +135, col = "black", cex = 1.0, fv, res ) { # Function for drawing tickmarks on a ROC-curve # for (i in 1:length(tt)) { pnt <- interp ( tt[i], fv, res ) x <- 1-pnt[2] y <- pnt[1] lines( c( x, x+dist*cos(pi*angle/180) ), c( y, y+dist*sin(pi*angle/180) ), col=col ) text( x+dist*cos(pi*angle/180), y+dist*sin(pi*angle/180), txt[i], col=col, adj=c( as.numeric(abs(angle)>=90), as.numeric( angle <= 0)), cex=cex ) } } ROC <- function ( test = NULL, stat = NULL, form = NULL, plot = c( "sp", "ROC" ), PS = is.null(test), # Curves on probability scale PV = TRUE, # sn, sp, PV printed at "optimality" point MX = TRUE, # tick at "optimality" point MI = TRUE, # Model fit printed AUC = TRUE, # Area under the curve printed grid = seq(0,100,10), # Background grid (%) col.grid = gray( 0.9 ), cuts = NULL, lwd = 2, data = parent.frame(), ... ) { # First all the computations # # Name of the response rnam <- if ( !missing( test ) ) deparse( substitute( test ) ) else "lr.eta" # Fit the model and get the info for the two possible types of input if( is.null( form ) ) { if( is.null( stat ) | is.null( test ) ) stop( "Either 'test' AND 'stat' OR 'formula' must be supplied!" ) lr <- glm( stat ~ test, family=binomial )#, data=data ) resp <- stat Model.inf <- paste("Model: ", deparse( substitute( stat ) ), "~", deparse( substitute( test ) ) ) } else { lr <- glm(form, family = binomial, data = data) resp <- eval( parse(text = deparse(form[[2]])), envir=lr$model ) Model.inf <- paste("Model: ",paste(paste(form)[c(2,1,3)], collapse=" ")) } # From the empirical distribution function for test for each of # the two categories of resp. # First a table of the test (continuous variable) vs. the response and # adding a row of 0s so that we have all points for the ROC curve m <- as.matrix( base::table( switch( PS+1, test, lr$fit ), resp ) ) m <- addmargins( rbind( 0, m ), 2 ) # What values of test/eta do the rows refer to fv <- c( -Inf, sort( unique( switch( PS+1, test, lr$fit ) ) ) ) # How many rows in this matrix nr <- nrow(m) # Calculate the empirical distribution functions (well, cumulative numbers): m <- apply( m, 2, cumsum ) # Then the relevant measures are computed. sns <- (m[nr,2]-m[,2]) / m[nr,2] spc <- m[,1] / m[nr,1] pvp <- m[,2] / m[,3] pvn <- (m[nr,1]-m[,1]) / ( m[nr,3]-m[,3] ) res <- data.frame( cbind( sns, spc, pvp, pvn, fv ) ) names( res ) <- c( "sens", "spec", "pvp", "pvn", rnam ) # AUC by triangulation auc <- sum( (res[-1,"sens"]+res[-nr,"sens"])/2 * abs(diff(1-res[,"spec"])) ) # Plot of sens, spec, PV+, PV-: if ( any( !is.na( match( c( "SP", "SNSP", "SPV" ), toupper( plot ) ) ) ) ) { # First for probability scale if ( PS ) { plot( 0:1, 0:1, xlim=0:1, xlab="Cutpoint for predicted probability", ylim=0:1, ylab=" ", type="n" ) if( is.numeric( grid ) ) abline( h=grid/100, v=grid/100, col=col.grid ) box() for ( j in 4:1 ){ steplines( fv, res[,j], lty=1, lwd=lwd, col=gray((j+1)/7)) } text( 0, 1.01, "Sensitivity", cex=0.7, adj=c(0,0), font=2 ) text( 1, 1.01, "Specificity", cex=0.7, adj=c(1,0), font=2 ) text( 0, m[nr,2]/m[nr,3]-0.01, "PV+", cex=0.7, adj=c(0,1), font=2 ) text( 0 + strwidth( "PV+", cex=0.7 ), m[nr,2]/m[nr,3]-0.01, paste( " (= ", m[nr,2],"/", m[nr,3], " =", formatC( 100*m[nr,2]/m[nr,3], digits=3 ), "%)", sep=""), adj=c(0,1), cex=0.7 ) text( 1, 1-m[nr,2]/m[nr,3]-0.01, "PV-", cex=0.7, adj=c(1,1), font=2 ) } # then for test-variable scale else { xl <- range( test ) plot( xl, 0:1, xlim=xl, xlab=paste( deparse( substitute( test ) ), "(quantiles)" ), ylim=0:1, ylab=" ", type="n" ) if( is.numeric( grid ) ) abline( h=grid/100, v=quantile( test, grid/100 ), col=col.grid ) box() for ( j in 4:1 ){ steplines( fv, res[,j], lty=1, lwd=lwd, col=gray((j+1)/7))} text( xl[1], 1.01, "Sensitivity", cex=0.7, adj=c(0,0), font=2 ) text( xl[2], 1.01, "Specificity", cex=0.7, adj=c(1,0), font=2 ) text( xl[1], m[nr,2]/m[nr,3]-0.01, "PV+", cex=0.7, adj=c(0,1), font=2 ) text( xl[1] + strwidth( "PV+", cex=0.7 ), m[nr,2]/m[nr,3]-0.01, paste( " (= ", m[nr,2],"/", m[nr,3], " =", formatC( 100*m[nr,2]/m[nr,3], digits=3 ), "%)", sep=""), adj=c(0,1), cex=0.7 ) text( xl[2], 1-m[nr,2]/m[nr,3]-0.01, "PV-", cex=0.7, adj=c(1,1), font=2 ) } } # Plot of ROC-curve: if ( any( !is.na( match( "ROC", toupper( plot ) ) ) ) ) { plot( 1-res[,2], res[,1], xlim=0:1, xlab="1-Specificity", ylim=0:1, ylab= "Sensitivity", type="n", ...) if( is.numeric( grid ) ) abline( h=grid/100, v=grid/100, col=gray( 0.9 ) ) abline( 0, 1, col=gray( 0.4 ) ) box() lines( 1-res[,"spec"], res[,"sens"], lwd=lwd ) # Tickmarks on the ROC-curve if ( !is.null(cuts) ) { ROC.tic( cuts, txt=formatC( cuts, digits=2, format="f" ), fv=fv, res=res, dist=0.03, cex=0.7) } # Plot of optimality point if (MX) { mx <- max( res[,1]+res[,2] ) mhv <- which( (res[,1]+res[,2])==mx )[1] mxf <- fv[mhv] abline( mx-1, 1, col=gray(0.4) ) ROC.tic( mxf, txt=paste( rnam, "=", formatC( mxf, format="f", digits=3 ) ), fv=fv, res=res, dist=0.03, cex=0.7, angle=135 ) } # Model information if (MI) { crn <- par()$usr text(0.95*crn[2]+0.05*crn[1], 0.07, Model.inf, adj=c(1,0.5),cex=0.7) cf <- summary(lr)$coef[,1:2] nf <- dimnames(cf)[[1]] text(0.95*crn[2]+0.05*crn[1], 0.10, paste("Variable\ \ \ \ \ \ est.\ \ \ \ \ (s.e.) \ \ \n", paste(rbind(nf, rep("\ \ \ \ ",length(nf)), formatC(cf[,1],digits=3,format="f"), rep("\ \ \ (",length(nf)), formatC(cf[,2],digits=3,format="f"), rep(")",length(nf)), rep("\n",length(nf))), collapse=""), collapse=""), adj=c(1,0), cex=0.7 ) } # Print the area under the curve if (AUC) { crn <- par()$usr text( 0.95*crn[2]+0.05*crn[1], 0.00, paste( "Area under the curve:", formatC( auc, format="f", digits=3, width=5 ) ), adj=c(1,0), cex=0.7 ) } # Predictive values at maximum if (PV) { if(!MX) { mx <- max(res[,1]+res[,2]) mhv <- which((res[,1]+res[,2])==mx) mxf <- fv[mhv] } ROC.tic(mxf, fv=fv, res=res, txt= paste( "Sens: ", formatC(100*res[mhv,1],digits=1,format="f"), "%\n", "Spec: ", formatC(100*res[mhv,2],digits=1,format="f"), "%\n", "PV+: ", formatC(100*res[mhv,3],digits=1,format="f"), "%\n", "PV-: ", formatC(100*res[mhv,4],digits=1,format="f"), "%", sep="" ), dist=0.1, cex=0.7, angle=-45 ) } } invisible( list( res=res, AUC=auc, lr=lr ) ) } Epi/R/ftrend.R0000644000175100001440000000520312531361077012620 0ustar hornikusers"ftrend" <- function(object, ...) { if(length(object$xlevels) == 0) { stop("No factors in model") } xname <- names(object$xlevels)[1] if (!identical(object$contrasts[[1]], "contr.treatment")) { stop(paste("Treatment contrasts must be used for variable", xname)) } xlevels <- object$xlevels[[1]] nlevels <- length(xlevels) coefnames <- paste(xname, xlevels, sep="") ncoef <- length(coef(object)) if (!all(coefnames %in% names(coef(object)))) { stop("The model must not have an intercept term") } index1 <- match(coefnames, names(coef(object))) index2 <- (1:ncoef)[-index1] m <- length(index1) ncov <- length(index2) ## Centre the covariates according to Greenland et al (weighted mean = 0) X0 <- model.matrix(object) if (!is.null(object$weights)) { mu <- -apply(X0, 2, weighted.mean, object$weights )[index2] } else { mu <- -apply(X0, 2, mean)[index2] } mu.full <- rep(0, ncoef) mu.full[index2] <- mu X <- sweep(X0, 2, mu.full, "+") ## Information matrix with centred covariates if (!is.null(object$weights)) { J <- crossprod(X, sweep(X, 1, object$weights, "*")) } else { ## linear models J <- crossprod(X,X) } J11 <- J[index1, index1] J12 <- J[index1, index2] J21 <- J[index2, index1] J22 <- J[index2, index2] ## Variance matrix V <- solve(J) V11 <- V[index1, index1] V12 <- V[index1, index2] V21 <- V[index2, index1] V22 <- V[index2, index2] cal.V <- function(mu) { one <- as.matrix(rep(1,m)) mu <- as.matrix(mu) return(V11 - one %*% t(mu) %*% V21 - V12 %*% mu %*% t(one) + matrix(1, m, m) * (t(mu) %*% V22 %*% mu)[1,1]) } f <- function(mu) { V.mu <- cal.V(mu) # lambda is current vector of floating variances D <- sum(diag(V.mu)/lambda) - c(determinant(V.mu)$modulus) + sum(log(lambda)) - m S <- (1/sum(diag(J11)) + t(mu) %*% solve(J22) %*% mu)[1,1] grad1 <- - t(1/lambda) %*% V12 grad2 <- + sum(1/lambda) * t(mu) %*% V22 grad3 <- - t(mu) %*% solve(J22)/S attr(D,"gradient") <- 2 * (grad1 + grad2 + grad3) H1 <- V22 * sum(1/lambda) H2 <- -solve(J22)/S b <- solve(J22) %*% mu/S H3 <- 2 * b %*% t(b) attr(D, "hessian") <- 2 * (H1 + H2 + H3) return(D) } ## Initial value of lambda lambda <- diag(V[index1,index1]) ## Do the minimization nlm.out <- nlm(f, rep(0,ncov), check.analyticals=TRUE, ...) mu2 <- nlm.out$estimate ## Calculate parameter values and their covariance matrix ## if the covariates are appropriately centred coef <- coef(object)[index1] - c(crossprod(mu + mu2, coef(object)[index2])) return(list(coef=coef, vcov=cal.V(mu2))) } Epi/R/Lexis.diagram.R0000644000175100001440000000742312531361077014033 0ustar hornikusersLexis.diagram <- function( age = c( 0, 60), alab = "Age", date = c( 1940, 2000 ), dlab = "Calendar time", int = 5, lab.int = 2*int, col.life = "black", lwd.life = 2, age.grid = TRUE, date.grid = TRUE, coh.grid = FALSE, col.grid = gray(0.7), lwd.grid = 1, las = 1, entry.date = NA, entry.age = NA, exit.date = NA, exit.age = NA, risk.time = NA, birth.date = NA, fail = NA, cex.fail = 1.1, pch.fail = c(NA,16), col.fail = rep( col.life, 2 ), data = NULL, ... ) { # Function to plot a Lexis-diagram # # BxC, 2002, revsions in 2005 ## Get variables from data argument, if supplied, or from parent ## frame if not. entry.date <- eval(substitute(entry.date), data) entry.age <- eval(substitute(entry.age ), data) exit.date <- eval(substitute(exit.date ), data) exit.age <- eval(substitute(exit.age ), data) risk.time <- eval(substitute(birth.date), data) birth.date <- eval(substitute(birth.date), data) fail <- eval(substitute(fail ), data) # First expand intervals to both dimensions # int[1:2] <- c( int, int)[1:2] lab.int[1:2] <- c(lab.int,lab.int)[1:2] # Plot the diagram # plot( NA, xlim=date, xaxt="n", xaxs="i", xlab=dlab, ylim=age, yaxt="n", yaxs="i", ylab=alab, ... ) axis( side=1, at=seq( date[1], date[2], lab.int[2] ), las=las ) axis( side=2, at=seq( age[1], age[2], lab.int[1] ), las=las ) box( col="white" ) # par("fg") ) # Then the required grids # if ( age.grid ) { abline( h = seq( age[1], age[2], int[1] ), col=col.grid, lwd=lwd.grid ) } if ( date.grid ) { abline( v = seq( date[1], date[2], int[2] ), col=col.grid, lwd=lwd.grid ) } ages <- seq( age[1], age[2], min( int ) ) dates <- seq( date[1], date[2], min( int ) ) if ( coh.grid ) { segments( rep( date[1], length( ages ) ), ages, pmin( date[1] + ( age[2] - ages ), date[2] ), pmin( ages + ( date[2] - date[1] ), age[2] ), col=col.grid, lwd=lwd.grid ) segments( dates, rep( age[1], length( dates ) ), pmin( dates + ( age[2] - age[1] ), date[2] ), pmin( age[1] + ( date[2] - dates ), age[2] ), col=col.grid, lwd=lwd.grid ) } # Check if data for lifelines is supplied and plot lifelines if so # if( sum( !is.na( list( entry.date, entry.age, exit.date, exit.age, birth.date, risk.time ) ) ) > 2 ) { LL <- Lexis.lines( entry.date = entry.date, exit.date = exit.date, birth.date = birth.date, entry.age = entry.age, exit.age = exit.age, risk.time = risk.time, col.life = col.life, lwd.life = lwd.life, fail = fail, cex.fail = cex.fail, pch.fail = pch.fail, col.fail = col.fail, data = data ) invisible( LL ) } } Epi/R/LCa.fit.R0000644000175100001440000005332013320763654012565 0ustar hornikusers###################################################################### ### estimation method LCa.fit <- function( data, A, P, D, Y, model = "APa", # or one of "ACa", "APaC", "APCa" or "APaCa" a.ref, # age reference for the interactions pi.ref = a.ref, # age reference for the period interaction ci.ref = a.ref, # age reference for the cohort interaction p.ref, # period reference for the intercation c.ref, # cohort reference for the interactions npar = c(a = 6, # no. knots for main age-effect p = 6, # no. knots for peroid-effect c = 6, # no. knots for cohort-effect pi = 6, # no. knots for age in the period interaction ci = 6), # no. knots for age in the cohort interaction VC = TRUE, # numerical calculation of the Hessia? alpha = 0.05, # 1 minus confidence level eps = 1e-6, # convergence criterion maxit = 100, # max. no iterations quiet = TRUE ) # cut the crap { # "model" must have values in c(APa/ACa/APaC/APCa/APaCa)? if( !(model %in% c("APa","ACa","APaC","APCa","APaCa")) ) stop( '"model" must be one of "APa","ACa","APaC","APCa","APaCa", but is', model,'\n' ) # Which main effects and interactions are in the model intP <- as.logical(length(grep("Pa",model))) intC <- as.logical(length(grep("Ca",model))) mainP <- as.logical(length(grep("P" ,model))) # Also includes the age-period interaction mainC <- as.logical(length(grep("C" ,model))) # Also includes the age-cohort product # if a dataframe is supplied, fish out data and put in the function's environment if( !missing(data) ) { if (length(match(c("A", "P", "D", "Y"), names(data))) != 4) stop("Data frame ", deparse(substitute(data)), " has columns:\n", names(data), "\nmust have variables:\n", "A (age), P (period), D (cases) and Y (person-time)") data <- data[,c("A","P","D","Y")] data <- data[complete.cases(data),] A <- data$A P <- data$P D <- data$D Y <- data$Y } else { # if single vectors supplied, check they are all there nm <- c(missing(A), missing(P), missing(D), missing(Y)) if (any(nm)) stop("Variable", if (sum(nm) > 1) "s", paste(c(" A", " P", " D", " Y")[nm], collapse = ","), " missing from input") # and that they have the same length if( diff(range( lv <- c( length(A), length(P), length(D), length(Y) ) )) != 0 ) stop( "\nLengths of variables (", paste(paste(names(lv), lv, sep = ":"), collapse = ", "), ") are not the same." ) } # end of data acquisition # code-simplifier for knot calculation eqqnt <- function(n) round( (1:n-0.5)/n, 2 ) # Define knots - we compute also the knots not needed if( is.list(npar) ) { # Check if npar is a *named* list if( is.null(names(npar)) ) stop( "If npar= is a list, it must be a *named* list.\n" ) # Fill in a bogus 1 if some of the items are missing for(ee in c('a.kn','p.kn','c.kn','pi.kn','ci.kn') ) if(is.null(npar[[ee]])) npar[[ee]] <- 1 a.kn <- if( length(npar$a )>1 ) npar$a else quantile( rep( A,D), probs=eqqnt(npar$a ) ) p.kn <- if( length(npar$p )>1 ) npar$p else quantile( rep(P ,D), probs=eqqnt(npar$p ) ) c.kn <- if( length(npar$c )>1 ) npar$c else quantile( rep(P-A,D), probs=eqqnt(npar$c ) ) pi.kn <- if( length(npar$pi)>1 ) npar$pi else quantile( rep( A,D), probs=eqqnt(npar$pi) ) ci.kn <- if( length(npar$ci)>1 ) npar$ci else quantile( rep( A,D), probs=eqqnt(npar$ci) ) } else { # if npar is too short fill it up npar <- rep( npar, 5 )[1:5] # if not named, name it and notify if( is.null(names(npar)) ) names(npar) <- c("a","p","c","pi","ci") a.kn <- quantile( rep( A,D), probs=eqqnt(npar["a"] ) ) p.kn <- quantile( rep(P ,D), probs=eqqnt(npar["p"] ) ) c.kn <- quantile( rep(P-A,D), probs=eqqnt(npar["c"] ) ) pi.kn <- quantile( rep( A,D), probs=eqqnt(npar["pi"]) ) ci.kn <- quantile( rep( A,D), probs=eqqnt(npar["ci"]) ) } # Reference points if( missing( p.ref) ) p.ref <- median( rep(P ,D) ) if( missing( c.ref) ) c.ref <- median( rep(P-A,D) ) if( missing(pi.ref) ) pi.ref <- median( rep( A,D) ) if( missing(ci.ref) ) ci.ref <- median( rep( A,D) ) ############################################################################ # Here starts the actual modelling commence <- Sys.time() # Matrices to extract the age-interaction terms at reference points Ap <- Ns( rep(pi.ref,length(A)), knots=pi.kn, intercept=TRUE ) Ac <- Ns( rep(ci.ref,length(A)), knots=ci.kn, intercept=TRUE ) # Current age-effects (in the iteration these will be term predictions) ba <- matrix( 1, length(A), 2 ) # cbind( rep(1,length(A)), 1 ) # set to 0 if term is not in model at all if( !mainP ) ba[,1] <- 0 if( !mainC ) ba[,2] <- 0 # Main effects model with (at least one) age-interaction # --- at this stage it is either 0 or 1 mat <- glm( D ~ -1 + Ns( A, knots=a.kn, intercept=TRUE ) + Ns( P , knots=p.kn, ref=p.ref):ba[,1] + Ns( P-A, knots=c.kn, ref=c.ref):ba[,2], offset = log(Y), family = poisson ) oldmb <- oldmat <- mat$deviance # Terms prediction --- three terms here. # No need to divide by the ba at this point, it is eiter 1 or 0 pat <- predict( mat, type="terms" ) # iteration counter and continuation indicator nit <- 0 one.more <- TRUE # For simple formatting of the iteration output fC <- function(x,d) formatC(x,format="f",digits=d) # now, iterate till convergence while( one.more ) { nit <- nit+1 # The estimated terms from the modeling of the APC-effects to be used # as offsets Aoff <- pat[,1] Pint <- Poff <- pat[,2] Cint <- Coff <- pat[,3] # P or C terms with main effects should be either in interaction or # offset, so one of these should always be 0 if( intP ) Poff <- Poff*0 else Pint <- Pint*0 if( intC ) Coff <- Coff*0 else Cint <- Cint*0 # Iteration of the age-components of the interaction mb <- glm( D ~ -1 + Ns( A, knots=pi.kn, intercept=TRUE ):Pint + Ns( A, knots=ci.kn, intercept=TRUE ):Cint, offset = Aoff + Poff + Coff + log(Y), family = poisson ) # Get the age-interaction terms only, and if one is not needed set to 0 ba <- predict( mb, type="terms" ) / cbind(Pint,Cint) / cbind( ci.lin( mb, subset="pi.kn", ctr.mat=Ap)[,1], # These are the values at the reference ci.lin( mb, subset="ci.kn", ctr.mat=Ac)[,1] ) # point for A; we want the RRs as effects ba[is.na(ba)] <- 0 # If no interaction only main should be fitted; if no main effect, set to 0 using mainP/C if( !intP ) ba[,1] <- rep(1,length(A)) * mainP if( !intC ) ba[,2] <- rep(1,length(A)) * mainC # apc model with assumed known interactions with age mat <- glm( D ~ -1 + Ns( A, knots=a.kn, intercept=TRUE ) + Ns( P , knots=p.kn, ref=p.ref):ba[,1] + Ns( P-A, knots=c.kn, ref=c.ref):ba[,2], offset = log(Y), family = poisson ) # extract age and period terms - rmoving the interactions pat <- predict( mat, type="terms" ) / cbind( 1, ba ) pat[is.na(pat)] <- 0 # convergence? Check both that the two models give the same deviance # and that the chnage in each is small newmat <- mat$deviance newmb <- mb$deviance conv <- ( reldif <- max( abs(newmat-newmb )/(newmat+newmb)/2, abs(oldmat-newmat)/ newmat, abs(oldmb -newmb )/ newmb) ) < eps one.more <- ( !conv & ( nit < maxit ) ) oldmat <- newmat oldmb <- newmb if( !quiet & nit==1 ) cat( " Deviances: model(AT) model(A) Rel. diff.\n" ) if( !quiet ) cat( "Iteration", formatC( nit, width=3, flag=" "), "", fC(mat$deviance,3), fC( mb$deviance,3), fC( reldif, 7 ), "\n" ) } # end of iteration loop # Deviance and d.f - there is a "+1" because the intercept is in both models # but not explicit, (both models fitted with "-1"), hence the df.null # is the total no. observations dev <- mb$deviance df <- mat$df.null - ( mb$df.null- mb$df.res # no. parms in mb + mat$df.null-mat$df.res # no. parms in mat - 1 ) # common intercept if( conv ) cat( "LCa.fit convergence in ", nit, " iterations, deviance:", dev, "on", df, "d.f.\n") if( !conv ) cat( "LCa.fit *not* converged in ", nit, " iterations:\ndeviance (AT):", mat$deviance, ", deviance (B):" , mb$deviance, "\n", if( VC ) "...no variance-covariance computed.\n" ) fin <- Sys.time() if( !quiet ) cat("...using", round(difftime(fin,commence,units="secs"),1), "seconds.\n") # unique values of A, P and C in the dataset for reporting effects a.pt <- sort(unique( A)) p.pt <- sort(unique(P )) c.pt <- sort(unique(P-A)) # extract effects from final models after convergence ax <- ci.exp( mat, subset= "a.kn", ctr.mat=Ns(a.pt,knots= a.kn,intercept=TRUE ) ) kp <- ci.exp( mat, subset= "p.kn", ctr.mat=Ns(p.pt,knots= p.kn,ref=p.ref) ) kc <- ci.exp( mat, subset= "c.kn", ctr.mat=Ns(c.pt,knots= c.kn,ref=c.ref) ) pi <- ci.exp( mb , subset="pi.kn", ctr.mat=Ns(a.pt,knots=pi.kn,intercept=TRUE), Exp=FALSE ) ci <- ci.exp( mb , subset="ci.kn", ctr.mat=Ns(a.pt,knots=ci.kn,intercept=TRUE), Exp=FALSE ) # Label the estimated effects rownames( ax ) <- rownames( pi ) <- rownames( ci ) <- a.pt rownames( kp ) <- p.pt rownames( kc ) <- c.pt # do we bother about the correct variance-covariance? if( VC & conv ) # ...certainly not without convergence { commence <- Sys.time() if( !quiet ) cat("...computing Hessian by numerical differentiation...\n") # the number of parameters for each of the 5 effects na <- length( grep( "a.kn", names(coef(mat)) ) ) np <- length( grep( "p.kn", names(coef(mat)) ) ) nc <- length( grep( "c.kn", names(coef(mat)) ) ) npi <- length( grep( "pi.kn", names(coef(mb )) ) ) nci <- length( grep( "ci.kn", names(coef(mb )) ) ) # get only the parameters for effects that are non-zero (the others # are in the models but they are 0) ml.cf <- c( coef(mat)[c(rep(TRUE,na), rep(mainP,np), rep(mainC,nc))], coef(mb)[c(rep(intP,npi), rep(intC,nci))] ) # and some more snappy names for the parameters: first all names all.nam <- c( paste("ax",1:na,sep=""), paste("kp",1:np,sep=""), paste("kc",1:nc,sep=""), paste("pi",1:npi,sep=""), paste("ci",1:nci,sep="") ) # ...then those actually present in the model names( ml.cf ) <- all.nam[c(rep( TRUE,na), rep(mainP,np), rep(mainC,nc), rep(intP,npi), rep(intC,nci))] # We need the variance-covariance of the estimates as the 2nd # derivative of the log-likelihood, D*log(lambda) - lambda*Y, # or for eta=log(lambda), D*eta - exp(eta)*Y, # assuming the sequence of parameters is ax, kp, kc, pi, ci # (first A, P, C from model mat, then Pa, Ca from model mb) # Note that we cannot simplify this calculation because the model is # non-linear in pi,kp resp. ci,kc # Matrices to use in calculation of the terms of the model for each parms MA <- Ns( A, knots= a.kn, intercept=TRUE ) Mp <- Ns( P , knots= p.kn, ref=p.ref ) Mc <- Ns( P-A, knots= c.kn, ref=c.ref ) Mpi <- Ns( A, knots=pi.kn, intercept=TRUE ) Mci <- Ns( A, knots=ci.kn, intercept=TRUE ) # Computing the log-likelihood for any set of parameters llik <- function( parms ) { ax <- MA %*% parms[ 1:na] ; nn <- na if( mainP ) { kp <- Mp %*% parms[nn+1:np] ; nn <- nn+np } else kp = rep(0,length(ax)) if( mainC ) { kc <- Mc %*% parms[nn+1:nc] ; nn <- nn+nc } else kc = rep(0,length(ax)) if( intP ) { pi <- Mpi %*% parms[nn+1:npi] ; nn <- nn+npi} else pi = rep(1,length(ax)) if( intC ) { ci <- Mci %*% parms[nn+1:nci] } else ci = rep(1,length(ax)) eta <- ax + pi*kp + ci*kc sum( D*eta - exp(eta)*Y ) } # Numerical calculation of the Hessian for llik ivar <- -numDeriv::hessian( llik, ml.cf ) # Sometimes not quite positive definite, fix that after inverting the Hessian vcov <- Matrix::nearPD( solve( ivar ) ) vcov <- as.matrix( vcov$mat ) fin <- Sys.time() if( !quiet ) cat("...done - in", round(difftime(fin,commence,units="secs"),1), "seconds.\n") # Since we now have the variances of the parameters for each of the # effects we can compute corrected c.i.s for the effects se.eff <- function( sub, cM, Alpha=alpha ) { wh <- grep( sub, names(ml.cf) ) res <- cbind( cM %*% ml.cf[wh], sqrt( diag( cM %*% vcov[wh,wh] %*% t(cM) ) ) ) %*% ci.mat(alpha=Alpha) colnames(res)[1] <- paste( "Joint", colnames(res)[1] ) res } # Append the corrected c.i.s to the effect objects ax <- cbind( ax, exp( se.eff( "ax", Ns(a.pt,knots= a.kn,intercept=TRUE) ) ) ) if( mainP ) kp <- cbind( kp, exp( se.eff( "kp", Ns(p.pt,knots= p.kn,ref=p.ref) ) ) ) if( mainC ) kc <- cbind( kc, exp( se.eff( "kc", Ns(c.pt,knots= c.kn,ref=c.ref) ) ) ) if( intP ) pi <- cbind( pi, se.eff( "pi", Ns(a.pt,knots=pi.kn,intercept=TRUE) ) ) if( intC ) ci <- cbind( ci, se.eff( "ci", Ns(a.pt,knots=ci.kn,intercept=TRUE) ) ) } # Collect refs and knots in lists klist <- list( a.kn=a.kn, pi.kn=pi.kn, p.kn=p.kn, ci.kn=ci.kn, c.kn=c.kn ) rlist <- list( pi.ref=pi.ref, p.ref=p.ref, ci.ref=ci.ref, c.ref=c.ref ) # Finally output object res <- list( model = model, ax = ax, pi = if( intP ) pi else NULL, kp = if( mainP ) kp else NULL, ci = if( intC ) ci else NULL, kc = if( mainC ) kc else NULL, mod.at = mat, mod.b = mb, coef = if( VC & conv ) ml.cf else NULL, vcov = if( VC & conv ) vcov else NULL, knots = klist, refs = rlist, deviance = dev, df.residual = df, iter = nit ) # Remove redundant stuff before returning res <- res[!sapply(res,is.null)] class( res ) <- "LCa" invisible( res ) } ###################################################################### ### utility to determine the types of terms in a model model.terms <- function( x ) list( intP = as.logical(length(grep("Pa",x$model))), mainP = as.logical(length(grep("P" ,x$model))), intC = as.logical(length(grep("Ca",x$model))), mainC = as.logical(length(grep("C" ,x$model))) ) ###################################################################### ### print method print.LCa <- function( x, ... ) { # terms in the model mt <- model.terms( x ) # no. of parameters in each term npar <- sapply(x$knots,length)-1 npar[1] <- npar[1] + 1 npar <- npar[c(TRUE,mt$intP,mt$mainP,mt$intC,mt$mainC)] npar <- paste( paste( npar, c(rep(", ",length(npar)-2)," and ",""), sep=""), collapse=rep("") ) cat( paste( x$model, ": Lee-Carter model with natural splines:\n", " log(Rate) = ax(Age)", if( mt$mainP ) " + ", if( mt$intP ) "pi(Age)", if( mt$mainP ) "kp(Per)", if( mt$mainC ) " + ", if( mt$intC ) "ci(Age)", if( mt$mainC ) "kc(Coh)", "\nwith ", npar, " parameters respectively.\n", "Deviance: ", round(x$deviance,3), " on ", x$df, " d.f.\n", sep=""), if( !("vcov" %in% names(x)) ) "(only conditional c.i.s for effects)\n" ) } ###################################################################### ### summary method summary.LCa <- function( object, show.est=FALSE, ... ) { # terms in the model mt <- model.terms( object ) print( object ) # the number of parameters for each of the 5 effects na <- length( grep( "a.kn", names(coef(object$mod.at)) ) ) np <- length( grep( "p.kn", names(coef(object$mod.at)) ) ) nc <- length( grep( "c.kn", names(coef(object$mod.at)) ) ) npi <- length( grep( "pi.kn", names(coef(object$mod.b )) ) ) nci <- length( grep( "ci.kn", names(coef(object$mod.b )) ) ) # Show knots used cat( "\nKnots used:\n") for( nm in names(object$knots[c(TRUE,mt$mainP,mt$intP,mt$mainC,mt$intC)]) ) { cat( nm,"\n" ) ; print(object$knots[[nm]] ) } cf <- rbind( ci.lin(object$mod.at)[c(rep(TRUE ,na), rep(mt$mainP,np), rep(mt$mainC,nc)),1:2], ci.lin(object$mod.b )[c(rep(mt$intP ,npi), rep(mt$intC ,nci)),1:2] ) if( "vcov" %in% names(object) ) { cf <- cbind( cf, sqrt( diag(object$vcov) ) ) colnames( cf )[-1] <- c("cond.se","joint.se") } if( show.est ) print( cf ) invisible( cf ) } ###################################################################### ### plot method plot.LCa <- function( x, ... ) { # terms in the model mt <- model.terms( x ) # A small plot utility to exploit the structure of the effects plc <- function( x, ... ) matplot( as.numeric( rownames(x) ), x[,ncol(x)-2:0], type="l", lty=1, lwd=c(3,1,1), ... ) plc( x$ax, col="black", xlab="Age", ylab="Age-specific rates", log="y" ) rug( x$knots$a.kn, lwd=2 ) if( mt$intP ){ plc( x$pi, col="black", xlab="Age", ylab="Relative period log-effect multiplier" ) abline(h=1,v=x$refs$pi.ref) rug( x$knots$pi, lwd=2 ) } if( mt$mainP ){ plc( x$kp, col="black", log="y", xlab="Date of follow-up (period)", ylab="Period effect (RR)" ) abline(h=1,v=x$refs$p.ref) rug( x$knots$kp, lwd=2 ) } if( mt$intC ){ plc( x$ci, col="black", xlab="Age", ylab="Relative cohort log-effect multiplier" ) abline(h=1,v=x$refs$ci.ref) rug( x$knots$ci, lwd=2 ) } if( mt$mainC ){ plc( x$kc, col="black", log="y", xlab="Date of birth (cohort)", ylab="Cohort effect (RR)" ) abline(h=1,v=x$refs$c.ref) rug( x$knots$kc, lwd=2 ) } } ###################################################################### ### predict method predict.LCa <- function( object, newdata, alpha = 0.05, level = 1-alpha, sim = ( "vcov" %in% names(object) ), ... ) { # What main effects and interactions are in the model mt <- model.terms( object ) # is person-years suppied, otherwise use units as in the model if( "Y" %in% names(newdata) ) Y <- newdata$Y else Y <- rep(1,nrow(newdata)) # Matrices to extract effects at newdata rows Ma <- Ns( newdata$A, knots = object$knots$a.kn, intercept = TRUE) Mp <- Ns( newdata$P , knots = object$knots$p.kn, ref=object$refs$p.ref ) Mc <- Ns( newdata$P-newdata$A, knots = object$knots$c.kn, ref=object$refs$c.ref ) Mpi <- Ns( newdata$A, knots = object$knots$pi.kn, intercept = TRUE) Mci <- Ns( newdata$A, knots = object$knots$ci.kn, intercept = TRUE) # Default terms values for models without interactions kp <- kc <- rep( 0, nrow(newdata) ) pi <- ci <- rep( 1, nrow(newdata) ) # P, C and interaction term(s) if included in the model if( mt$intP ) { pi <- ci.lin( object$mod.b , subset="pi.kn", ctr.mat=Mpi )[,1] kp <- ci.lin( object$mod.at, subset= "p.kn", ctr.mat=Mp )[,1] } if( mt$intC ) { ci <- ci.lin( object$mod.b , subset="ci.kn", ctr.mat=Mci )[,1] kc <- ci.lin( object$mod.at, subset= "c.kn", ctr.mat=Mc )[,1] } # First fitted values from mod.at # Note that the model object mod.at always has the same number of # parameters, for some of the models either period or cohort parameters # are 0, hence not used. pr0 <- ci.exp( object$mod.at, alpha=alpha, ctr.mat=cbind(Ma,Mp*pi,Mc*ci) ) # Then fitted values from mod.b # But mod.b has an offset beyond log(Y), namely all the APC terms lp.b <- ci.lin( object$mod.b , ctr.mat=cbind(Mpi*kp,Mci*kc) )[,1:2] lp.b[,1] <- lp.b[,1] + ci.lin( object$mod.at, ctr.mat=cbind(Ma,Mp*(!mt$intP),Mc*(!mt$intC)) )[,1] pr0 <- cbind( pr0, exp( lp.b %*% ci.mat(alpha=alpha) ) ) # label the estimates colnames( pr0 )[c(1,4)] <- c("at|b Est.","b|at Est.") # The doings above gives confidence intervals based on the conditional # models, so if we want proper intervals we should simulate instead, # using the posterior distribuion of all parameters, albeit under the # slightly fishy assumption that the joint posterior is normal... if( sim ) # also renders TRUE if sim is numerical (and not 0) { if( is.logical(sim) & sim ) sim <- 1000 # Check that there is a vcov component of the model if( !( "vcov" %in% names(object) ) ) warning( "No variance-covariance in LCa object, only conditional c.i.s available.\n", "no simulation (parametric bootstrap) is done.\n" ) else { # using the parametric bootstrap based on the parameters and the # (numerically computed) Hessian eta <- NArray( list( pt = 1:nrow(pr0), it = 1:sim ) ) parms <- MASS::mvrnorm( n = sim, mu = object$coef, Sigma = object$vcov ) na <- ncol( Ma ) np <- ncol( Mp ) nc <- ncol( Mc ) npi <- ncol( Mpi ) nci <- ncol( Mci ) # Compute the linear predictor in each of the simulated samples # period and cohort effects if not in the model kp <- kc <- rep( 0, nrow(newdata) ) pi <- ci <- rep( 1, nrow(newdata) ) for( i in 1:sim ){ ax <- Ma %*% parms[i, 1:na] ; nn <- na if( mt$mainP ) { kp <- Mp %*% parms[i,nn+1:np] ; nn <- nn+np } if( mt$mainC ) { kc <- Mc %*% parms[i,nn+1:nc] ; nn <- nn+nc } if( mt$intP ) { pi <- Mpi %*% parms[i,nn+1:npi] ; nn <- nn+npi} if( mt$intC ) { ci <- Mci %*% parms[i,nn+1:nci] } eta[,i] <- ax + pi*kp + ci*kc } # predicted rates with bootstrap confidence limits pr.sim <- exp( t( apply( eta, 1, quantile, probs=c(0.5,alpha/2,1-alpha/2), na.rm=TRUE ) ) ) colnames( pr.sim )[1] <- "Joint est." return( pr.sim ) } } else return( pr0 ) } Epi/R/Lexis.lines.R0000644000175100001440000000631012531361077013533 0ustar hornikusersLexis.lines <- function( entry.date = NA, exit.date = NA, birth.date = NA, entry.age = NA, exit.age = NA, risk.time = NA, col.life = "black", lwd.life = 2, fail = NA, cex.fail = 1, pch.fail = c(NA,16), col.fail = col.life, data = NULL ) { ## Get variables from data argument, if supplied, or from parent ## frame if not. entry.date <- eval(substitute(entry.date), data) entry.age <- eval(substitute(entry.age ), data) exit.date <- eval(substitute(exit.date ), data) exit.age <- eval(substitute(exit.age ), data) risk.time <- eval(substitute(birth.date), data) birth.date <- eval(substitute(birth.date), data) fail <- eval(substitute(fail ), data) # If fail is numeric make it logical if( is.numeric( fail ) ) fail <- ( fail > 0 ) # Complete the information on lifelines XX <- Life.lines( entry.date = entry.date, entry.age = entry.age, exit.date = exit.date, exit.age = exit.age, risk.time = risk.time, birth.date = birth.date ) # Expand lwd.life/col.life/pch.fail/col.fail/cex.fail # Np <- nrow( XX ) if( length( col.life )==1 ) col.life <- rep( col.life, Np ) else if( length( col.life )!=length(fail) ) stop("col.life must have length 1 or length(fail)" ) if( length( lwd.life )==1 ) lwd.life <- rep( lwd.life, Np ) else if( length( lwd.life )!=length(fail) ) stop("lwd.life must have length 1 or length(fail)" ) if( length( col.fail )==1 ) col.fail <- rep( col.fail, Np ) else { if( length( col.fail )==2 ) col.fail <- col.fail[fail+1] } if( length( col.fail )!=length(fail) ) stop("col.fail must have length 1,2 or length(fail)" ) if( length( pch.fail )==1 ) pch.fail <- rep( pch.fail, Np ) else if( length( pch.fail )==2 ) pch.fail <- pch.fail[fail+1] if( length( pch.fail )!=length(fail) ) stop("pch.fail must have length 1,2 or length(fail)" ) if( length( cex.fail )==1 ) cex.fail <- rep( cex.fail, Np ) else if( length( cex.fail )==2 ) cex.fail <- cex.fail[fail+1] if( length( cex.fail )!=length(fail) ) stop("cex.fail must have length 1,2 or length(fail)" ) # Was XX returned as a Date-object? # If so make a numerical version i LL, otherwise just a copy. # if( attr( XX, "Date" ) ) { LL <- data.frame( lapply( XX, unclass ) ) LL[,c(1,3,5)] <- LL[,c(1,3,5)] / 365.25 + 1970 LL[,c(2,4,6)] <- LL[,c(2,4,6)] / 365.25 } else LL <- XX # Find age and date ranges in the current plot. # date <- par( "usr" )[1:2] age <- par( "usr" )[3:4] # Plot the lifelines segments( LL[,1], LL[,2], LL[,3], LL[,4], lwd=lwd.life, col=col.life ) # If there are any non-NAs for pch.fail then blank out the space # where they go before plotting the symbols if( any( !is.na(pch.fail) ) ) points( LL[!is.na(pch.fail),3], LL[!is.na(pch.fail),4], pch=16, col="white", #par()$bg, cex=cex.fail[!is.na(pch.fail)] ) points( LL[,3], LL[,4], pch=pch.fail, col=col.fail, cex=cex.fail ) # Return the untouched version of the completed dataframe # invisible( data.frame( XX, fail=fail ) ) } Epi/R/ncut.r0000644000175100001440000000074012531361077012350 0ustar hornikusersncut <- function( x, breaks, type="left" ) { # Sorting to get the opportunity to call the function recursively. breaks <- sort( breaks ) # Get the indices, but fix the 0 indices to produce NAs: fi <- findInterval( x, breaks ) fi[fi==0] <- length( breaks ) + 1 switch( toupper( substr( type, 1, 1 ) ), "L" = breaks[fi], "R" = -ncut( -x, -breaks ), "M" = ( breaks[fi] - ncut( -x, -breaks ) ) / 2 ) } Epi/R/rcutLexis.R0000644000175100001440000000225114047241321013311 0ustar hornikusersrcutLexis <- function(Lx, cut, timescale = 1, precursor.states = transient(Lx)) { # avoid note about no visible binding new.state <- lex.id <- NULL # All new states should be precursor states # new.state may be factor, hence the as.character pr.st <- unique(c(precursor.states, unique(as.character(cut$new.state)))) # utility to select n'th element in a vector getn <- function(x,n) x[n] # make the data frame a sorted, grouped tibble # note that the cut in arrange is the variable cut in the tibble cut <- group_by(cut, lex.id) %>% arrange(cut, .by_group = TRUE) # nxL is the Lexis object to return eventually nxL <- Lx # max no transitions for any one person in cut maxn <- max(table(cut$lex.id)) # loop over transition number per person for(n in 1:maxn) { # the n'th transitions for each person nx.cut <- summarize(cut, cut = getn( cut, n), new.state = getn(new.state, n)) # update with cuts at these for each person nxL <- cutLexis(nxL, cut = nx.cut, timescale = timescale, precursor.states = pr.st ) } # done, return result nxL } Epi/R/gen.exp.R0000644000175100001440000002472713403770433012715 0ustar hornikusers# Acronyms: # dop: date of purchase # dpt: dose per time # amt: amount # dur: duration # dof: date of follow-up ###################################################################### # A function to compute cumulative doses etc. at the purchase dates # *and* derive intervals of drug coverage resp no coverage from the # purchase date, amounts and dosage per time use.amt.dpt <- function( purchase, # data frame with dop, amt and dpt push.max, rm.dose ) { do.call( "rbind", lapply( split( purchase, purchase$id ), function(set) { np <- nrow(set) if( np==1 ) # return data frame of 2 rows { dfR <- data.frame( id = set$id, dof = set$dop + c(0,set$amt/set$dpt), amt = c(set$amt,0), dpt = c(set$dpt,0), off = c(FALSE,TRUE), cum.amt = c(0,set$amt), cum.tim = c(0,set$amt/set$dpt) ) return( dfR ) } set <- set[order(set$dop),] # Compute length of exposure periods drug.dur <- set$amt / set$dpt # Put the exposed period head to foot new.start <- min( set$dop ) + c(0,cumsum(drug.dur[-np])) # Move them out so that the start of a period is never earlier than # the dop exp.start <- new.start + cummax( pmax(set$dop-new.start,0) ) # Compute the pushes push.one <- exp.start - set$dop # Revise them to the maximally acceptable push.adj <- pmin( push.one, push.max ) # Revise the starting dates of exposure exp.start <- exp.start - push.one + push.adj # Revise the durations to be at most equal to differences between the # revised starting dates drug.dur <- pmin( drug.dur, c(diff(exp.start),Inf) ) # Compute the end of the intervals exp.end <- exp.start + drug.dur # Find out which exposure intervals that are followed by a gap: followed.by.gap <- c( exp.start[-1]-exp.end[-np] > 0, TRUE ) # To facilitate further calculations we add records for the gaps # and also a record for the date of drug expiration dfR <- rbind( data.frame( id = set$id[1], dof = exp.start, amt = set$amt, dpt = set$dpt ), data.frame( id = set$id[1], dof = exp.end[followed.by.gap], amt = 0, dpt = 0 ) ) dfR <- dfR[order(dfR$dof),] # Logical indicator of intervals off drug dfR$off <- (dfR$dpt==0) | (dfR$dof < min(set$dop)) # Finally compute the cumulative dose and time on drug at the end of # the interval using interval length and dpt: if( rm.dose ) { dfR$cum.amt <- with( dfR, cumsum( c(0, diff(dof)* dpt[-length(dpt)]) ) ) } else dfR$cum.amt <- cumsum( c( 0, dfR$amt[-nrow(dfR)] ) ) dfR$cum.tim <- with( dfR, cumsum( c(0, diff(dof)*!off[-length(dpt)]) ) ) return( dfR ) } ) ) } ###################################################################### # Compute the cumulative dose at all purcase dates and at the last # (unknown) future expiry date, computed based on previous # consumption. The resulting data frame has one more line per person # than no. of purchases. use.only.amt <- function( purchase, pred.win ) { do.call( "rbind", lapply( split( purchase, purchase$id ), function(set) { np <- nrow(set) if( np==1 ) return( NULL ) set <- set[order(set$dop),] # The points to include in the calculation: # All dates after pred.win before last purchase, # but at least the last two purchase dates, wp <- ( set$dop > pmin( max(set$dop)-pred.win, sort(set$dop,decreasing=TRUE)[2] ) ) # Cumulative amount consumed at each dop since first cum.amt <- cumsum(c(0,set$amt)) # Average slope to use to project the duration of last purchase avg.slp <- diff(range(cum.amt[c(wp,FALSE)]))/ diff(range(set$dop[wp])) # Purchase dates and the date of last consumption dof <- c( set$dop, set$dop[np]+set$amt[np]/avg.slp ) # Cumulative time since first cum.tim <- dof - set$dop[1] # The only time without drug is after last dispense expired off <- rep( c(FALSE,TRUE), c(length(dof)-1,1) ) return( data.frame( id = set$id[1], dof = dof, cum.amt = cum.amt, cum.tim = cum.tim, off = off ) ) # will be used in the subsequent code } ) ) } ###################################################################### # Function to interpolate the drug exposures to the dates of FU. dex.int <- function( set, breaks, lags, lag.dec ) { dof <- NULL # If only one record return null if( nrow(set) < 2 ) return( NULL ) # All values of these are identical within each set (=person) doe <- set$doe[1] dox <- set$dox[1] # The first date of drug exposure according to the assumption doi <- min(set$dof) # Breakpoints and the entry end exit dates are the dates we care for # - but only within breaks doin <- max( min(breaks), doe ) doex <- min( max(breaks), dox ) breaks <- sort( unique( c(breaks,doin,doex) ) ) # only the breaks inside the follow-up interval xval <- breaks[breaks>=doin & breaks<=doex] if( length(xval) == 0 ) return( NULL ) # Merge a) the purchase dates (set$dof) and # indicator being off drug (set$off) and # the date a person goes off drug, doff (set to NA for remaining records) # with b) the break dates (which is where we want things computed) # Note we merge on the variable dof and have the data frame with # dof=xval as the >first< so that values of xval will be in the # resulting dfr$dof even if dof-values in set are almost equal til # an xval value. Ensures that sum(dfr$dof %in% xval)==length(xval) dfr <- merge( data.frame( id = set$id[1], dof = xval ), data.frame( set[,c("id","dof","off")], doff = ifelse(set$off,set$dof,NA) ), all=TRUE ) # carry the off drug indicator forward to all break dates dfr$off <- zoo::na.locf( dfr$off, na.rm=FALSE ) # possible NAs are before any drug purchase hence off-drug dfr$off <- ifelse( is.na(dfr$off), TRUE, dfr$off ) # carry date of going off drug forward, but only for the off period dfr$doff <- zoo::na.locf( dfr$doff, na.rm=FALSE ) * ifelse(dfr$off,1,NA) # time from cessation can now be computed dfr$tfc <- dfr$dof - dfr$doff # time from initiation of drug dfr$tfi <- pmax( 0, dfr$dof-doi ) # restrict to the desired timepoints dfr <- subset( dfr, dof %in% xval ) dfr <- dfr[!duplicated(dfr$dof),] # linear interpolation of the cumulative dose and time from the # purchase data (set) dfr$cdos <- approx( set$dof, set$cum.amt, xout=xval, rule=2 )$y dfr$ctim <- approx( set$dof, set$cum.tim, xout=xval, rule=2 )$y # the same for the desired lags for( lg in lags ) dfr[,paste( "lag.pre", formatC(lg,format="f",digits=lag.dec), sep="" )] <- approx( set$dof, set$cum.amt, xout=xval-lg, rule=2 )$y dfr$doff <- zoo::na.locf( dfr$doff, na.rm=FALSE ) dfr$tfc[is.na(dfr$tfc)] <- 0 dfr$dur <- c( diff(dfr$dof), NA ) return( dfr[-nrow(dfr),] ) } ###################################################################### # The function that ties it all together gen.exp <- function( purchase, id="id" , dop="dop", amt="amt", dpt="dpt", fu, doe="doe", dox="dox", breaks, use.dpt = ( dpt %in% names(purchase) ), push.max = Inf, rm.dose = FALSE, lags = NULL, lag.dec = 1, lag.pre = "lag.", pred.win = Inf ) { # to aviod a NOTE from R CMD check dof <- NULL # Make sure that the data frames have the right column names wh <- match( c(id,dop,amt), names(purchase) ) if( any( is.na(wh) ) ) stop("Wrong column names for the purchase data frame") names( purchase )[wh] <- c("id","dop","amt") # Allow dpt to be entered as numerical scalar common for all records if( use.dpt ) if( is.numeric(dpt) ) { if( length(dpt) > 1 ) stop("If dpt is numeric it must have length 1\n", "otherwise it must be the name of the dpt variable in the dataset") purchase$dpt <- dpt } else names( purchase )[match(dpt,names(purchase))] <- "dpt" wh <- match( c(id,doe,dox), names(fu) ) if( any( is.na(wh) ) ) stop("Wrong column names for the follow-up data frame") names( fu )[wh] <- c("id","doe","dox") if( use.dpt ) { tmp.dfr <- use.amt.dpt( purchase, push.max = push.max, rm.dose = rm.dose ) } else { tmp.dfr <- use.only.amt( purchase, pred.win = pred.win ) } # Having done what needs to be done about the purchase records we turn # to the follow-up records, but we first need to accommodate the fact # that there might be more fu records per person: # Generate record no within id in fu (ordering in fu is immaterial) fu$no <- ave( fu$id, fu$id, FUN=function(x) 1:length(x) ) # Set up the object to collect the resulting follow-up res <- NULL # loop through subsets of fu with different ids for( ni in 1:max(fu$no) ) { # Merge the follow-up period for the persons to the correponding # exposure records (hence the all.y=T) tm.dfr <- merge( tmp.dfr, fu[fu$no==ni,], by="id", all.y=TRUE ) # Interpolate to find the cumulative doses at the dates in the vector breaks res.dfr <- do.call( "rbind", lapply( split( tm.dfr, tm.dfr$id ), dex.int, breaks, lags, lag.dec ) ) # end of do.call res <- rbind( res, res.dfr ) # append to result from other fu$no } # end of for( ni in 1:max(fu$no) ) var.order <- c("id","dof","dur","off","doff","tfc","tfi","ctim","cdos", names(res)[grep("lag.prefix",names(res))] ) res <- res[order(res$id,res$dof),var.order] names(res) <- gsub( "lag.prefix", lag.pre, names(res) ) res } # end of gen.ex Epi/R/lls.R0000644000175100001440000000242113052220176012120 0ustar hornikuserslls <- # A function that expands the functionality of ls() function( pos = 1, pat = "", all=FALSE, print=TRUE ) { # First a function that returns length/dim when you ask for it dimx <- function(dd) if (is.null(dim(dd))) length(dd) else dim(dd) # A vector of object names lll <- ls( pos=pos, pattern=pat, all.names=all ) # Are there any objects at all? if( length(lll) > 0 ) { obj.mode <- obj.clas <- obj.dimx <- obj.size <- character(0) # Then find mode, class, name and dimension of them and return it for(i in 1:length(lll)) { obj.mode[i] <- eval( parse(text = paste( "mode(`", lll[i], "`)",sep=""))) obj.clas[i] <- paste( eval( parse(text = paste( "class(`", lll[i], "`)",sep=""))), collapse=" " ) obj.dimx[i] <- paste( eval( parse(text = paste( "dimx(`", lll[i], "`)",sep=""))), collapse=" " ) obj.size[i] <- formatC( eval( parse(text = paste("unclass(object.size(`", lll[i], "`))",sep="")))/2^10, format="f", digits=1, big.mark=",", width=14, flag=" " ) } dfr <- data.frame( name = lll, mode = obj.mode, class = obj.clas, dim = obj.dimx, sizeKbytes = obj.size, stringsAsFactors=FALSE ) names( dfr )[5] <- " size(Kb)" print( invisible( dfr ), right=FALSE ) } } Epi/R/print.floated.R0000644000175100001440000000160312531361077014107 0ustar hornikusers"print.floated" <- function(x, digits=max(3, getOption("digits") - 3), level = 0.95, ...) { K <- qnorm((1+level)/2) n <- length(x$coef) mat <- matrix("", n, 4) ci.mat <- matrix(0, n, 2) cm <- x$coefmat cat("Floating treatment contrasts for factor ", x$factor, "\n\n") mat[,1] <- names(x$coef) se <- sqrt(x$var) ci.mat[, 1] <- x$coef - K * se ci.mat[, 2] <- x$coef + K * se mat[,2] <- format(x$coef, digits=digits) mat[,3] <- format(se, digits=digits) ci.mat <- format(ci.mat, digits=digits) mat[,4] <- paste("(", ci.mat[,1], ",", ci.mat[,2], ")", sep="") dimnames(mat) <- list(rep("", n), c("Level", "Coefficient", "Std. Error", "95% Floating CI")) print(mat, quote=FALSE) cat("\nError limits over all contrasts: ", paste(format(c(0.99, x$limits), digits=2)[-1], collapse=","),"\n") } Epi/R/clogistic.R0000644000175100001440000001474113052766107013327 0ustar hornikuserssplitMatrix <- function (x, f, drop=FALSE) { lapply(split(seq_len(nrow(x)), f, drop = drop), function(ind) x[ind, , drop = FALSE]) } fixEvent <- function(event) { ### Convert outcome in clogit model to 0/1 binary coding if (any(is.na(event))) stop("Event contains missing values") if (is.logical(event)) { status <- is.numeric(event) } else if (is.numeric(event)) { status <- if (max(event) == 2) event - 1 else event temp <- (status == 0 | status == 1) if (!all(temp)) { warning("If outcome is numeric then it must be coded 0/1 or 1/2") } } else if (is.factor(event)) { if (nlevels(event) != 2) stop("If outcome is a factor then it must have 2 levels") status <- event == levels(event)[2] } return(as.integer(status)) } isInformative <- function(Xsplit, ysplit, strata) { ## Identify which observations are informative in a conditional ## logistic regression. is.homogeneous <- function(x) { all(x==x[1]) } y.bad <- sapply(ysplit, is.homogeneous) X.bad <- sapply(Xsplit, function(x) { all(apply(x, 2, is.homogeneous)) }) is.informative <- vector("list", length(ysplit)) for (i in seq(along=is.informative)) { canuse <- (!y.bad[i]) && (!X.bad[i]) is.informative[[i]] <- rep(canuse, length(ysplit[[i]])) } return(unsplit(is.informative, strata)) } fitClogit <- function(X, y, offset, strata, init, iter.max, eps, toler.chol) { ## Safe wrapper around the C function "clogit" that ensures all ## arguments have the correct type and storage mode. y <- fixEvent(y) if (!is.matrix(X)) { X <- as.matrix(X) } if (!is.double(X)) { X <- matrix(as.double(X), nrow(X), ncol(X)) } if (is.null(offset)) { offset <- rep(0, nrow(X)) } offset <- as.double(offset); ## Split into strata Xsplit <- splitMatrix(X, strata, drop=TRUE) ysplit <- split(y, strata, drop=TRUE) osplit <- split(offset, strata, drop=TRUE) info <- isInformative(Xsplit, ysplit, strata) if (!any(info)) { stop("There are no informative observations") } ans <- .Call(C_clogit, Xsplit, ysplit, osplit, as.double(init), as.integer(iter.max), as.double(eps), as.double(toler.chol)) ans$informative <- info return(ans) } clogistic <- function (formula, strata, data, subset, na.action, init, model = TRUE, x = FALSE, y = TRUE, contrasts = NULL, iter.max=20, eps=1e-6, toler.chol = sqrt(.Machine$double.eps)) { ## User interface, edited version of glm call <- match.call() if (missing(data)) data <- environment(formula) mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action", "offset", "strata"), names(mf), 0L) mf <- mf[c(1, m)] mf$drop.unused.levels <- TRUE mf[[1L]] <- as.name("model.frame") mf <- eval(mf, parent.frame()) mt <- attr(mf, "terms") Y <- model.response(mf, "any") if (is.null(Y)) stop("missing outcome") if (length(dim(Y)) == 1L) { nm <- rownames(Y) dim(Y) <- NULL if (!is.null(nm)) names(Y) <- nm } X <- if (!is.empty.model(mt)) model.matrix(mt, mf, contrasts) else stop("Invalid model matrix") offset <- as.vector(model.offset(mf)) if (!is.null(offset)) { if (length(offset) != NROW(Y)) stop(gettextf("number of offsets is %d should equal %d (number of observations)", length(offset), NROW(Y)), domain = NA) } strata <- model.extract(mf, "strata") if (is.null(strata)) stop("argument 'strata' missing") contrasts <- attr(X, "contrasts") if (attr(mt, "intercept") > 0) { X <- X[,-1, drop=FALSE] } if (missing(init)) init <- rep(0, ncol(X)) if (iter.max < 0) stop("'iter.max' must be non-negative") if (eps <= 0) stop("'eps' must be positive") if (toler.chol <= 0) stop("'toler.chol' must be positive") if (eps < toler.chol) stop("'toler.chol' must be smaller than 'eps'") fit <- fitClogit(X = X, y = Y, offset = offset, strata=strata, init=init, toler.chol=toler.chol, eps=eps, iter.max=iter.max) if (fit$flag <= 0) { stop("Information matrix is not positive definite") } else if (fit$flag == 1000) { warning("Iteration limit exceeded") } nvar <- length(init) which.sing <- if (fit$flag < nvar) { diag(fit$var)==0 } else { rep(FALSE, nvar) } fit$coefficients[which.sing] <- NA fit$flag <- NULL ## Add back in parameter names cfnames <- colnames(X) names(fit$coefficients) <- cfnames dimnames(fit$var) <- list(cfnames, cfnames) fit$n <- sum(fit$informative) if (model) { fit$model <- mf } else { ## Without model frame this cannot be interpreted fit$informative <- NULL } fit$na.action <- attr(mf, "na.action") if (x) fit$x <- X if (!y) fit$y <- NULL fit <- c(fit, list(call = call, formula = formula, terms = mt, contrasts = contrasts, xlevels = .getXlevels(mt, mf))) class(fit) <- c("clogistic") fit } coef.clogistic <- function(object,...) { object$coefficients } vcov.clogistic <- function(object, ...) { object$var } print.clogistic <- function (x, digits = max(options()$digits - 4, 3), ...) { ## Print method for clogistic objects, edited from print.coxph cat("\nCall: ", deparse(x$call), "\n\n", sep="\n") savedig <- options(digits = digits) on.exit(options(savedig)) coef <- coef.clogistic(x) se <- sqrt(diag(vcov.clogistic(x))) if (is.null(coef) | is.null(se)) stop("Input is not valid") coefmat <- cbind(coef, exp(coef), se, coef/se, signif(1 - pchisq((coef/se)^2, 1), digits - 1)) dimnames(coefmat) <- list(names(coef), c("coef", "exp(coef)", "se(coef)", "z", "p")) cat("\n") prmatrix(coefmat) logtest <- -2 * (x$loglik[1] - x$loglik[2]) if (is.null(x$df)) df <- sum(!is.na(coef)) else df <- round(sum(x$df), 2) cat("\n") cat("Likelihood ratio test=", format(round(logtest, 2)), " on ", df, " df,", " p=", format(1 - pchisq(logtest, df)), ", n=", x$n, sep = "") cat("\n") invisible() } Epi/R/Icens.R0000644000175100001440000000620012531361077012375 0ustar hornikusersIcens <- function(first.well, last.well, first.ill, formula, model.type=c("MRR","AER"), breaks, boot=FALSE, alpha=0.05, keep.sample=FALSE, data) { ## Create follow-up matrix containing three event times fu.expression <- substitute(cbind(first.well, last.well, first.ill)) fu <- if (missing(data)) { eval(fu.expression) } else { eval(fu.expression, data) } ## Check consistency of arguments missing.f1 <- is.na(fu[,1]) missing.f2 <- is.na(fu[,2]) if (any(missing.f1 & missing.f2)) { stop("You must supply at least one of \"first.well\" and \"last.well\"") } if (any(fu[,1] > fu[,2], na.rm=TRUE) | any(fu[,2] > fu[,3], na.rm=TRUE)) { stop("Some units do not meet: first.well < last.well < first.ill" ) } ## Fill in any gaps fu[,1][missing.f1] <- fu[,2][missing.f1] fu[,2][missing.f2] <- fu[,1][missing.f2] ## Recensor cases that fall after the last break point is.censored <- fu[,3] > max(breaks) is.censored[is.na(is.censored)] <- FALSE fu[is.censored,3] <- NA exp.dat <- expand.data(fu, formula, breaks, data) model.type <- match.arg(model.type) if (missing(formula)) { fit.out <- with(exp.dat, fit.baseline(y, rates.frame)) lambda <- coef(fit.out) } else { fit.out <- switch(model.type, "MRR"=with(exp.dat, fit.mult(y, rates.frame, cov.frame)), "AER"=with(exp.dat, fit.add(y, rates.frame, cov.frame))) lambda <- coef(fit.out$rates) } beta <- if (is.null(fit.out$cov)) numeric(0) else coef(fit.out$cov) params <- c(lambda,beta) if (boot) { nboot <- ifelse (is.numeric(boot), boot, 100) boot.coef <- matrix(NA, nrow=nboot, ncol=length(lambda) + length(beta)) colnames(boot.coef) <- names(params) for (i in 1:nboot) { subsample <- sample(nrow(fu), replace=TRUE) exp.dat <- expand.data(fu[subsample,], formula, breaks, data[subsample,]) if (missing(formula)) { sim.out <- with(exp.dat, fit.baseline(y, rates.frame, params)) boot.coef[i,] <- coef(sim.out) } else { sim.out <- switch(model.type, "MRR"=with(exp.dat, fit.mult(y, rates.frame, cov.frame, params)), "AER"=with(exp.dat, fit.add(y, rates.frame, cov.frame, params))) boot.coef[i,] <- switch(model.type, "MRR"=c(coef(sim.out[[1]]), coef(sim.out[[2]])), "AER"=coef(sim.out[[1]])) } } ci.quantiles=c(0.5, alpha/2, 1 - alpha/2) boot.ci <- t(apply(boot.coef,2,quantile,ci.quantiles)) lower.ci.lab <- paste("lower ", formatC(100 * alpha/2, format="f", digits=1),"%", sep="") upper.ci.lab <- paste("upper ", formatC(100 * (1-alpha/2), format="f", digits=1),"%", sep="") colnames(boot.ci) <- c("median", lower.ci.lab, upper.ci.lab) fit.out$boot.ci <- boot.ci if (keep.sample) { fit.out$sample <- boot.coef } } class( fit.out ) <- "Icens" attr( fit.out, "model" ) <- model.type return( fit.out ) } Epi/R/simLexis.R0000644000175100001440000002747013451655454013154 0ustar hornikusers# First the utility functions ###################################################################### lint <- function( ci, tt, u ) { # Makes a linear interpolation, but does not crash if all ci values are # identical, but requires that both ci and tt are non-decreasing. # ci plays the role of cumulative intensity, tt of time if( any( diff(ci)<0 ) | any( diff(tt)<0 ) ) stop("Non-increasing arguments") c.u <- min( c( ci[ci>u], max(ci) ) ) c.l <- max( c( ci[ciu], max(tt) ) ) t.l <- max( c( tt[ci1 ) stop( "More than one lex.Cst present:\n", cst, "\n" ) # Expand each person by the time points prfrm <- nd[rep(1:nr,each=np),] prfrm[,tS] <- prfrm[,tS] + rep(time.pts,nr) prfrm$lex.dur <- il <- min( diff(time.pts) ) # Poisson-models should use the estimated rate at the midpoint of the # intervals, and have risk time equal to 1 in order to accommodate # both poisson and poisreg families - they only produce identical # predictions if lex.dur is 1 (i.e. offset is 0), scaling is after prediction prfrp <- prfrm prfrp[,"lex.dur"] <- 1 prfrp[,tS] <- prfrp[,tS]+il/2 # Make a data frame with predicted rates for each of the transitions # out of this state for these times rt <- data.frame( lex.id = prfrm$lex.id ) for( i in 1:length(Tr[[cst]]) ) { if( inherits( Tr[[cst]][[i]], "glm" ) ) rt <- cbind( rt, predict( Tr[[cst]][[i]], type="response", newdata=prfrp ) * il ) # scaled to interval else if( inherits( Tr[[cst]][[i]], "coxph" ) ) rt <- cbind( rt, predict( Tr[[cst]][[i]], type="expected", newdata=prfrm ) ) else if( is.function( Tr[[cst]][[i]] ) ) rt <- cbind( rt, Tr[[cst]][[i]](prfrm) ) else stop( "Invalid object supplied as transition, elements of the list must be either:\n", "- a glm(poisson) object fitted to a Lexis object\n", "- a coxph object fitted to a Lexis object\n", "- a function that takes a Lexis object as argument and returns\n", " average rates for each record in the same units as lex.dur.") } names( rt )[-1] <- names( Tr[[cst]] ) # Then find the transition time and exit state for each person: xx <- match( c("lex.dur","lex.Xst"), names(nd) ) if( any(!is.na(xx)) ) nd <- nd[,-xx[!is.na(xx)]] merge( nd, do.call( rbind, lapply( split( rt, rt$lex.id ), sim1, time.pts ) ), by="lex.id" ) } ###################################################################### get.next <- function( sf, tr.st, tS, tF ) { # Produces an initial Lexis object for the next simulation for those # who have ended up in a transient state. # Note that this exploits the existence of the "time.since" attribute # for Lexis objects and assumes that a character vector naming the # transient states is supplied as argument. if( nrow(sf)==0 ) return( sf ) nxt <- sf[sf$lex.Xst %in% tr.st,] if( nrow(nxt) == 0 ) return( nxt ) nxt[,tS] <- nxt[,tS] + nxt$lex.dur wh <- tF for( i in 1:length(wh) ) if( wh[i] != "" ) nxt[nxt$lex.Xst==wh[i],tS[i]] <- 0 nxt$lex.Cst <- nxt$lex.Xst return( nxt ) } ###################################################################### chop.lex <- function( obj, tS, cens ) { # A function that chops off all follow-up beyond cens since entry for # each individual # Entry times on 1st timescale zz <- entry( obj, 1, by.id=TRUE ) # Merge with the revised exit times on this timescale ww <- merge( obj, data.frame( lex.id = as.numeric(names(zz)), cens = zz+cens ) ) # Only retain records with an entry time prior to the revised exit time ww <- ww[ww[,tS[1]] < ww$cens,] # Revise the duration according the the revised exit time x.dur <- pmin( ww$lex.dur, ww[,"cens"]-ww[,tS[1]] ) # Change lex.Xst to lex.Cst for those with shortened follow-up ww$lex.Xst[x.dur0] nt <- length(tt) warning("\nSome initiators start in a absorbing state\n", "Initiator states represented are: ", paste( rbind( names(tt), rep(":",nt), paste(tt), rep(" ",nt) ), collapse="" ), "\n", "Transient states are: ", paste( names( Tr ), coll=" " ) ) if( nrow(nxt)==0 ) stop( "\nNo initiators in transient states!" ) } # Then we update those who are in a transient states and keep on doing # that till all are in absorbing states or censored while( nrow(nxt) > 0 ) { nx <- do.call( rbind.data.frame, lapply( split( nxt, nxt$lex.Cst ), simX, Tr, time.pts, tS ) ) sf <- rbind.data.frame( sf, nx ) nxt <- get.next( nx, tr.st, tS, tF ) } # Doctor lex.Xst levels, fix values for the censored sf$lex.Xst <- factor( sf$lex.Xst, levels=levels(sf$lex.Cst) ) sf$lex.Xst[is.na(sf$lex.Xst)] <- sf$lex.Cst[is.na(sf$lex.Xst)] # Nicely order the output by persons, then times and states nord <- match( c( "lex.id", tS, "lex.dur", "lex.Cst", "lex.Xst" ), names(sf) ) noth <- setdiff( 1:ncol(sf), nord ) sf <- sf[order(sf$lex.id,sf[,tS[1]]),c(nord,noth)] rownames(sf) <- NULL # Finally, supply attributes - note we do not supply the "breaks" # attribute as this is irrelevant for simulated objects attr( sf, "time.scales" ) <- tS attr( sf, "time.since" ) <- tF chop.lex( sf, tS, max(time.pts) ) } ###################################################################### nState <- function ( obj, at, from, time.scale = 1 ) { # Counts the number of persons in each state of the Lexis object 'obj' # at the times 'at' from the time 'from' in the time scale # 'time.scale' # Determine timescales and absorbing and transient states tS <- check.time.scale(obj,time.scale) TT <- tmat(obj) absorb <- rownames(TT)[apply(!is.na(TT),1,sum)==0] transient <- setdiff( rownames(TT), absorb ) # Expand each record length(at) times tab.frm <- obj[rep(1:nrow(obj),each=length(at)), c(tS,"lex.dur","lex.Cst","lex.Xst")] # Stick in the corresponding times on the chosen time scale tab.frm$when <- rep( at, nrow(obj) ) + from # For transient states keep records that includes these points in time tab.tr <- tab.frm[tab.frm[,tS] <= tab.frm$when & tab.frm[,tS]+tab.frm$lex.dur > tab.frm$when,] tab.tr$State <- tab.tr$lex.Cst # For absorbing states keep records where follow-up ended before tab.ab <- tab.frm[tab.frm[,tS]+tab.frm$lex.dur <= tab.frm$when & tab.frm$lex.Xst %in% absorb,] tab.ab$State <- tab.ab$lex.Xst # Make a table using the combination of those in transient and # absorbing states. with( rbind( tab.ab, tab.tr ), table( when, State ) ) } ###################################################################### pState <- function( nSt, perm=1:ncol(nSt) ) { # Compute cumulative proportions of persons across states in order # designate by 'perm' tt <- t( apply( nSt[,perm], 1, cumsum ) ) tt <- sweep( tt, 1, tt[,ncol(tt)], "/" ) class( tt ) <- c("pState","matrix") tt } ###################################################################### plot.pState <- function( x, col = rainbow(ncol(x)), border = "transparent", xlab = "Time", ylim = 0:1, ylab = "Probability", ... ) { # Function to plot cumulative probabilities along the time scale. matplot( as.numeric(rownames(x)), x, type="n", ylim=ylim, yaxs="i", xaxs="i", xlab=xlab, ylab=ylab, ... ) lines.pState( x, col = col, border = border, ... ) } ###################################################################### lines.pState <- function( x, col = rainbow(ncol(x)), border = "transparent", ... ) { # Function to plot cumulative probabilities along the time scale. # Fixing the colors: nc <- ncol(x) col <- rep( col , nc )[1:nc] border <- rep( border, nc )[1:nc] # Just for coding convenience when plotting polygons pSt <- cbind( 0, x ) for( i in 2:ncol(pSt) ) { polygon( c( as.numeric(rownames(pSt)) , rev(as.numeric(rownames(pSt))) ), c( pSt[,i ], rev(pSt[,i-1]) ), col=col[i-1], border=border[i-1], ... ) } } Epi/R/contr.orth.R0000644000175100001440000000040712531361077013437 0ustar hornikuserscontr.orth <- function( n ) { if( is.numeric( n ) && length( n )==1 ) levs <- 1:n else { levs <- n n <- length( n ) } Z <- contr.sum( n ) L <- 1:n - mean(1:n) contr <- Z - L%*%( ( t(L) %*% L )^(-1) ) %*% ( t(L) %*% Z ) contr[,1:(n-2)] } Epi/R/clear.R0000644000175100001440000000072312773674456012446 0ustar hornikusers# Clear the workspace of all objects whose names don't start with a # full stop, and remove objects attached immediately after the global clear <- function () { env <- as.environment(1) to.go <- ls(env, all.names = FALSE) continue <- TRUE while (continue) { nxt <- search()[[2]] if (substr(nxt, 1, 8) != "package:") detach() else continue <- FALSE } remove(list = to.go, envir = env) } Epi/R/AaJ.Lexis.R0000644000175100001440000000242114421662332013051 0ustar hornikusers# Survfit requires a special value for censorings not just the same as # is the convention in Lexis objects, and moreover this must be the # first level of factor that goes into the event argument of Surv: mkcens.Lexis <- function(Lx, cens = "cens") { Rx <- Epi::sortLexis(Lx) last <- rev(!duplicated(rev(Rx$lex.id))) Rx$lex.Xst <- ifelse(last & Rx$lex.Cst == Rx$lex.Xst, cens, as.character(Rx$lex.Xst)) Relevel(factorize(Rx), cens) } # The AaJ method AaJ <- function(Lx, ...) UseMethod("AaJ") # The actual function AaJ.default <- AaJ.Lexis <- function(Lx, formula = ~ 1, timeScale = 1, ...) { lex.id <- NULL lex.Cst <- NULL if (!inherits(Lx, "Lexis")) stop("1st argument must be a Lexis object") if( length(formula) != 2 ) stop("'formula' must be a one-sided formula") rhs <- as.character(formula[length(formula)]) # right hand side of formula Lx <- mkcens.Lexis(Lx) ts <- check.time.scale(Lx, timeScale) Lx$zeit <- Lx[,ts] cat("NOTE: Timescale is ", ts, # "; initial level assumed to be ", levels(Lx)[2], "\n", sep = "") form <- Surv(Lx$zeit, Lx$zeit + Lx$lex.dur, Lx$lex.Xst) ~ 1 form[3] <- formula[2] survfit(form, id = lex.id, istate = lex.Cst, data = Lx) } Epi/R/summary.Lexis.r0000644000175100001440000000644214130777033014164 0ustar hornikuserssummary.Lexis <- function( object, simplify=TRUE, scale=1, by=NULL, Rates=FALSE, timeScales=FALSE, ... ) { # If we have a by argument find out what to do if (!is.null(by)) { if (is.character(by)) { if (!all(by %in% names(object))) stop("Wrong 'by' argument: '", paste(by,collapse="','"), "' - must be name(s) of variable(s) in the Lexis object") else res <- lapply(split(object, object[, by]), summary.Lexis, by = NULL, simplify = simplify, scale = scale, Rates = Rates, timeScales=timeScales, ...) } else { if (length(by) != nrow(object)) stop("Wrong length of 'by' argument:", length(by), "must be same length as rows of the Lexis object:", nrow(object) ) else res <- lapply(split(object, by), summary.Lexis, by = NULL, simplify = simplify, scale = scale, Rates = Rates, timeScales=timeScales, ...) } # to avoid printing the time scale information repeatedly for( i in 1:(length(res)-1) ) res[[i]]$timeScales <- NULL return( res ) } # Table(s) of all transitions (no. records) tr <- trans <- with( object, table(lex.Cst,lex.Xst) ) # Remove diagonal, i.e. records with no transition for( i in intersect(rownames(trans),colnames(trans)) ) tr[i,i] <- 0 # Margins added trans <- addmargins(trans) tr <- addmargins(tr) # Sum omitting the diagonal trm <- tr[,ncol(tr)] # Compute person-years in each Cst-state pyrs <- with(object, addmargins(tapply(lex.dur, lex.Cst, sum, na.rm = TRUE), FUN = function(x) sum(x, na.rm=TRUE)))/scale # Enumarate persons in each Cst-state pers <- with(object, c(tapply(lex.id, lex.Cst, function(x) length(unique(x))), length(unique(lex.id)))) # Amend the table of records with columns of events, person-years and persons trans <- cbind(trans, trm, pyrs, pers) # Annotate the table nicely colnames(trans)[ncol(trans) - 2:0] <- c(" Events:","Risk time:"," Persons:" ) colnames(trans)[ncol(tr)] <- " Records:" names(dimnames(trans)) <- c("From", "\nTransitions:\n To") # Make the rates and annotate the table nicely rates <- sweep( tr, 1, pyrs, "/" ) colnames( rates )[ncol(rates)] <- "Total" names( dimnames( rates ) ) <- c("From", paste("\nRates", if( scale != 1 ) paste(" (per ",scale,")",sep=""), ":\n To", sep="") ) if( simplify ) { trans <- trans[!is.na(pyrs),] rates <- rates[!is.na(pyrs),] } if( nrow(trans)==2 ) trans <- trans[1,,drop = FALSE] res <- list( Transitions = trans, Rates = rates[-nrow(rates),,drop=FALSE], timeScales = timeSince(object) ) if( !timeScales ) res <- res[-3] if( !Rates ) res <- res[-2] class( res ) <- "summary.Lexis" res } print.summary.Lexis <- function( x, ..., digits=2 ) { print( round( x$Transitions, digits ) ) if( "Rates" %in% names(x) ) print( round( x$Rates , digits ) ) # if( "timeScales" %in% names(x) ) if( !is.null(x$timeScales) ) { cat("\nTimescales:\n") print( x$timeScales ) } } Epi/R/fit.baseline.R0000644000175100001440000000065012531361077013702 0ustar hornikusersfit.baseline <- function(y, rates.frame, start) { if (missing(start)) { ## Get starting values from logistic regression model glm.out.init <- glm(y~., family=binomial, data=rates.frame) mu.init <- fitted(glm.out.init, type="response") glm(y~-1 + ., family=binomial(link=log), data=rates.frame, mustart=mu.init) } else { glm(y~-1 + ., family=binomial(link=log), data=rates.frame, start=start) } } Epi/R/summary.Icens.r0000644000175100001440000000140712531361077014135 0ustar hornikuserssummary.Icens <- function( x, scale=1, ... ) { if( attr( x, "model" ) == "MRR" ) { if( is.null( x$rates ) ) { class( x ) <- "glm" emat <- ci.lin( x ) } else { rate.est <- ci.lin( x$rates ) rate.est[,-(3:4)] <- rate.est[,-(3:4)] * scale emat <- rbind( cbind( rate.est, RR=NA )[,c(1:4,7,5:6)], ci.lin( x$cov, Exp=T ) ) } } if( attr( x, "model" ) == "AER" ) { rate.est <- ci.lin( x$rates ) rate.est[,-(3:4)] <- rate.est[,-(3:4)] * scale emat <- rate.est } if( length( x ) == 4 ) { b.est <- x[["boot.ci"]] colnames( b.est ) <- c( "Boot-med", "lo", "hi" ) emat <- cbind( emat, b.est ) } emat } Epi/R/stackedCIF.R0000644000175100001440000000354413564775635013324 0ustar hornikusersstackedCIF <- function( x, group = 1, col = "black", fill = "white", ylim = c(0,1), xlab = "Time", ylab = "Cumulative incidence", ...) { ne <- ncol(x$pstate) - 1 ng <- length(x$n) if (group %in% 1:ng) { r1 <- ifelse(group == 1 | ng == 1, 1, cumsum(x$strata)[group - 1] + 1) r2 <- ifelse(ng == 1, length(x$time), cumsum(x$strata)[group]) pSt0 <- matrix(0, nrow = nrow(x$pstate[r1:r2, ]), ncol = ne + 2) pSt0[, 1] <- x$pstate[r1:r2, 2] for (c in 2:ne) pSt0[, c] <- pSt0[, c - 1] + x$pstate[r1:r2, c+1] pSt0[, ne + 1] <- 1 pSt0[, ne + 2] <- x$time[r1:r2] pSt <- cbind(0, pSt0) pSt2 <- matrix(0, nrow = 2 * (dim(pSt)[1] - 1), ncol = dim(pSt)[2]) pSt2[1, ne + 3] <- pSt[1, ne + 3] pSt2[nrow(pSt2), ne + 3] <- pSt[nrow(pSt), ne + 3] for (j in 1:(dim(pSt)[1] - 1)) { pSt2[2 * j - 1, ne + 3] <- pSt[j, ne + 3] pSt2[2 * j, ne + 3] <- pSt[j + 1, ne + 3] pSt2[2 * j - 1, 1:(ne + 2)] <- pSt[j, 1:(ne + 2)] pSt2[2 * j, 1:(ne + 2)] <- pSt[j, 1:(ne + 2)] } plot(as.numeric(pSt0[, ne + 2]), pSt0[, 2], type = "n", ylim = ylim, yaxs = "i", xlab = xlab, ylab = ylab, ...) for (i in 2:(ne + 1)) { polygon(c(pSt2[, ne + 3], rev(pSt2[, ne + 3])), c(pSt2[, i], rev(pSt2[, i - 1])), col = fill[i - 1], border = NULL, ...) } matlines( as.numeric(pSt0[, ne + 2]), pSt0[, 1:ne], type = "s", col = col) abline(v = max(x$time[r1:r2]), lwd = 2, col = "white") box() } else print(paste("Error: group indicator must be an integer from 1 to", ng)) } Epi/R/addCov.Lexis.R0000644000175100001440000001101314421662411013611 0ustar hornikusers# The addCov method addCov <- function (Lx, ...) UseMethod("addCov") addCov.default <- addCov.Lexis <- function(Lx, clin, timescale = 1, exnam, tfc = "tfc", ...) { # Function to add clinically measured covariates to a Lexis object # The point is to cut the Lexis object at the examination dates # and subsequently add the clinical records # to avoid notes in check org.Cst <- NULL org.Xst <- NULL lex.Cst <- NULL lex.Xst <- NULL lex.id <- NULL # ...but first the usual cheking of paraphernalia if(!inherits(Lx ,"Lexis")) stop("Lx must be a Lexis object.\n") if( inherits(clin,"Lexis")) stop("clin cannot be a Lexis object.\n") # Is the timescale argument a timescale in Lx and is it a variable in clin? ts <- if(is.numeric(timescale)) timeScales(Lx)[timescale] else timescale if(!(ts %in% timeScales(Lx))) stop("timescale argument (", ts, ") must be among the timescales in the Lexis object ", deparse(substitute(Lx)),":", timeScales(Lx), ".\n" ) clin.nam <- deparse(substitute(clin)) if( !( ts %in% names(clin) & "lex.id" %in% names(clin) ) ) stop("'lex.id' and timescale '", ts, "' must be variables in the clin object ", clin.nam, "\n" ) # order clin to get the possible construction of examination names ok clin <- clin[order(clin$lex.id, clin[,ts]),] # check that examination dates are unique within persons if(any(dd <- duplicated(clin[,c("lex.id",ts)]))) { warning("Examination dates must be unique within persons\n", sum(dd), " records with duplicate dates from clin object ", clin.nam, " excluded.") clin <- clin[!dd,] } # the variable holding the name of the examination if(missing(exnam)) exnam <- "exnam" # and if it is not there, construct it as ex1, ex2 etc. if (!(exnam %in% names(clin))) { clin <- group_by(clin, lex.id) %>% mutate(zz = paste0("ex", 1:length(lex.id))) %>% ungroup() names(clin)[grep("zz",names(clin))] <- exnam clin <- as.data.frame(clin) } # exnam cannot have values that are also states if (length(common <- intersect(levels(Lx), unique(clin[,exnam])))) stop("Levels of Lx and examination names in clin must be disjoint", "\nbut", paste(common, collapse=", "), "are in both") #...done checking # variables to merge by mvar <- c("lex.id", ts) # clinical variables to be merged in # --- note we take examination date and name as a clinical variable too cvar <- setdiff(names(clin), mvar) # A data frame of cutting times of the examinations cfr <- data.frame(lex.id = clin$lex.id, cut = clin[,ts], new.state = clin[,exnam]) # a copy of Lx with a saved copy of the state variables in org. Lc <- transform(Lx, org.Cst = lex.Cst, org.Xst = lex.Xst) # Now cut Lc at each new examination date, state variables will be # changed to examination names Lc <- rcutLexis(Lc, cut = cfr, timescale = ts) # Lc now has the exnam in the variable lex.Cst, so we can merge the # clinical data to this if we rename to exnam # the lex.Cst contains the examination name, except where # the original levels are left Lc[,exnam] <- as.factor(ifelse(Lc$lex.Cst %in% levels(Lx), NA, as.character(Lc$lex.Cst))) mvar <- c("lex.id", exnam) # timescale is present in both Lc and clin, # so rename in clin, it will be the date of clin names(clin)[grep(ts, names(clin))] <- tfc # merge with clinical measurements keeping the attributes att.Lc <- attributes(Lc) Lc <- left_join(Lc, clin, by = mvar) att.Lc$names <- attributes(Lc)$names # attributes(Lc) <- att.Lc # compute time since last examination Lc[,tfc] <- Lc[,ts] - Lc[,tfc] # we have problems if a clical date falls in an interval # ending with a transition, they need to be fixed: wh <- with(Lc, which(c(org.Xst[-nrow(Lc)] != org.Cst[-1] & lex.id [-nrow(Lc)] == lex.id [-1]))) Lc$org.Xst[wh] <- Lc$org.Cst[wh+1] # move the original states back Lc <- select(Lc, -lex.Cst, -lex.Xst) %>% rename(lex.Cst = org.Cst, lex.Xst = org.Xst) # Add tfc as a time.scale, time.since and breaks: attr(Lc, "time.scales") <- c(attr(Lx, "time.scales"), tfc) attr(Lc, "time.since" ) <- c(attr(Lx, "time.since" ), "X") brt <- list(x = NULL) names(brt) <- tfc attr(Lc, "breaks") <- c(attr(Lx, "breaks"), brt) attr(Lc, "class") <- c("Lexis","data.frame") # Done! - well order first sortLexis(Lc) } Epi/R/Relevel.Lexis.R0000644000175100001440000000345014220407461014014 0ustar hornikusers# The factorize method factorize <- function (x, ...) UseMethod("factorize") # Default method is just the Lexis method factorize.default <- factorize.Lexis <- function(x, ..., verbose = FALSE) { Cst <- Xst <- NULL # If lex.Cst and lex.Xst are not factors, make sure they are, and # if they are restrict levels to to actually ocurring Cst <- factor(x$lex.Cst) Xst <- factor(x$lex.Xst) all.levels <- union(levels(Cst), levels(Xst)) # then amend them to have the same set of levels x$lex.Cst <- factor(Cst, levels = all.levels) x$lex.Xst <- factor(Xst, levels = all.levels) # Note if levels changed if((length(setdiff(all.levels, levels(Cst))) > 0 | length(setdiff(all.levels, levels(Xst))) > 0) & verbose) cat( "NOTE: lex.Cst and lex.Xst now have levels:\n", all.levels, "\n") return(x) } # The Lexis version of Relevel Relevel.Lexis <- function(x, ref, ...) { # Is this really a Lexis object if(!inherits(x, "Lexis")) stop("First argument must be a Lexis object") # Make sure the states are factors with the same levels if(!is.factor(x$lex.Cst) | !is.factor(x$lex.Xst)) stop("lex.Cst and lex.Xst must be factors") if(any(levels(x$lex.Xst) != levels(x$lex.Cst))) stop("lex.Cst and lex.Xst must have same levels\n", "you may want to factorize.Lexis()\n") # Then use the same Relevel on the factors x$lex.Cst <- Relevel.factor(x$lex.Cst, ref, ...) x$lex.Xst <- Relevel.factor(x$lex.Xst, ref, ...) return(x) } # The levels method is already defined (in the base package) # and hence imported in the NAMESPACE file levels.Lexis <- function( x ) { union(base::levels(x$lex.Cst), base::levels(x$lex.Xst)) } ## # The Lexis version of levels ## "levels.Lexis<-" <- ## function(x, value) ## { ## base::levels(x$lex.Cst) <- value ## base::levels(x$lex.Xst) <- value ## x ## } Epi/R/Aplot.R0000644000175100001440000000622112531361077012416 0ustar hornikusersAplot <- function( rates, age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, a.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), a.lim = range( age, na.rm=TRUE ), ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), a.lab = names( dimnames( rates ) )[1], ylab = deparse( substitute( rates ) ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, c.col = col, p.col = col, c.ann = FALSE, p.ann = FALSE, xannx = 1/20, cex.ann = 0.8, c.thin = seq( 2, length( age ) + length( per ) - 1, 2 ), p.thin = seq( 1, length( per ), 2 ), p.lines = TRUE, c.lines = !p.lines, ... # arguments passed on to matlines() ) { # Plot the frame if( p.ann ) a.lim <- a.lim + c(0,diff( range( age ) ) * xannx) if( c.ann ) a.lim <- a.lim - c( diff( range( age ) ) * xannx,0) matplot( age, rates, type="n", xlim=a.lim, ylim=ylim, xlab=a.lab, ylab=ylab, log=log.ax, las=las, yaxt=if( !is.null( at ) ) "n" else "s" ) if( !is.null( at ) ) axis( side=2, at=at, labels=labels, yaxt="s", las=las ) # and the grid if required: if( !missing( a.grid ) | !missing( grid ) ) { if( is.logical( a.grid ) & a.grid[1] ) a.grid <- nice( age, log=par("xlog") ) abline( v=a.grid, col=col.grid ) } if( !missing( ygrid ) | !missing( ygrid ) ) { if( is.logical( ygrid ) & ygrid[1] ) ygrid <- nice( rates[!is.na(rates)], log=par("ylog") ) abline( h=ygrid, col=col.grid ) } box() # What lines were required? if( !missing( c.lines ) & missing( p.lines ) ) p.lines <- !c.lines # Period curves: if( p.lines ){ matlines( age, rates, type=type, lwd=lwd, lty=lty, col=p.col, ... ) # annotate them if required (every second by default): if( p.ann ) { nr <- nrow( rates ) nc <- ncol( rates ) text( rep( age[nr], nc )[p.thin], rates[nr,][p.thin], paste( "", per[p.thin] ), adj=c(0,0.5), cex=cex.ann, col=if( length(p.col)==1 ) p.col else p.col[p.thin] ) } } # Cohort curves: if( c.lines ){ # First convert the age-period table to an age-cohort frame rt <- as.table( rates ) dimnames( rt ) <- list( age = age, per = per ) rtf <- data.frame( rt ) rtf$age <- as.numeric( as.character( rtf$age ) ) rtf$per <- as.numeric( as.character( rtf$per ) ) ac <- tapply( rtf$Freq, list( rtf$age, rtf$per-rtf$age ), mean ) matlines( age, ac, type=type, lwd=lwd, lty=lty, col=c.col, ... ) # annotate them if required (every other by default): if( c.ann ) { nr <- nrow( rt ) nc <- ncol( rt ) # Find the ages, cohorts and rates where the cohort curves starts a.min <- c( rev( age ), rep( age[1], nc-1 ) ) p.min <- c( rep( per[1], nr-1 ), per ) c.min <- p.min - a.min r.min <- c(rt[nr:1,1],rt[1,2:nc]) text( a.min[c.thin], r.min[c.thin], paste( "", c.min[c.thin] ), adj=c(1,0.5), cex=cex.ann, col=if( length(c.col)==1 ) c.col else c.col[c.thin] ) } } } Epi/R/rateplot.R0000644000175100001440000001551012531361077013172 0ustar hornikusersrateplot <- function( rates, which = c("ap","ac","pa","ca"), age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, a.grid = grid, p.grid = grid, c.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), a.lim = range( age, na.rm=TRUE ) + c(0,diff( range( age ) )/30), p.lim = range( per, na.rm=TRUE ) + c(0,diff( range( age ) )/30), c.lim = NULL, ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), a.lab = "Age at diagnosis", p.lab = "Date of diagnosis", c.lab = "Date of birth", ylab = "Rates", type = "l", lwd = 2, lty = 1, log.ax = "y", las = 1, ann = FALSE, a.ann = ann, p.ann = ann, c.ann = ann, xannx = 1/20, cex.ann = 0.8, a.thin = seq( 1, length( age ), 2 ), p.thin = seq( 1, length( per ), 2 ), c.thin = seq( 2, length( age ) + length( per ) - 1, 2 ), col = par( "fg" ), a.col = col, p.col = col, c.col = col, ... ) { # Remove 0 rates, in order to avoid warnings rates[rates==0] <- NA # then do the plots for( i in 1:length( which ) ) { if( toupper( which[i] ) == "AP" ) Aplot( rates, age = age, per = per, a.grid = a.grid, ygrid = ygrid, col.grid = col.grid, a.lim = a.lim, ylim = ylim, a.lab = a.lab, ylab = ylab, at = at, labels = labels, type = type, lwd = lwd, lty = lty, col = col, log.ax = log.ax, las = las, p.ann = p.ann, xannx = xannx, p.col = p.col, cex.ann = cex.ann, p.thin = p.thin, p.lines = TRUE, c.lines = FALSE, ... ) if( toupper( which[i] ) == "AC" ) Aplot( rates, age = age, per = per, a.grid = a.grid, ygrid = ygrid, col.grid = col.grid, a.lim = a.lim, ylim = ylim, a.lab = a.lab, ylab = ylab, at = at, labels = labels, type = type, lwd = lwd, lty = lty, col = col, log.ax = log.ax, las = las, c.ann = c.ann, p.ann = p.ann, xannx = xannx, c.col = c.col, p.col = p.col, cex.ann = cex.ann, c.thin = c.thin, p.lines = FALSE, c.lines = TRUE, ... ) if( toupper( which[i] ) %in% c("APC","ACP") ) Aplot( rates, age = age, per = per, a.grid = a.grid, ygrid = ygrid, col.grid = col.grid, a.lim = a.lim, ylim = ylim, a.lab = a.lab, ylab = ylab, at = at, labels = labels, type = type, lwd = lwd, lty = lty, col = col, log.ax = log.ax, las = las, c.ann = c.ann, p.ann = p.ann, xannx = xannx, c.col = c.col, p.col = p.col, cex.ann = cex.ann, c.thin = c.thin, p.thin = p.thin, p.lines = TRUE, c.lines = TRUE, ... ) if( toupper( which[i] ) == "PA" ) Pplot( rates, age = age, per = per, grid = grid, p.grid = p.grid, ygrid = ygrid, col.grid = col.grid, p.lim = p.lim, ylim = ylim, p.lab = p.lab, ylab = ylab, at = at, labels = labels, type = type, lwd = lwd, lty = lty, col = col, log.ax = log.ax, las = las, ann = a.ann, xannx = xannx, cex.ann = cex.ann, a.thin = a.thin, ... ) if( toupper( which[i] ) == "CA" ) Cplot( rates, age = age, per = per, grid = grid, c.grid = c.grid, ygrid = ygrid, col.grid = col.grid, c.lim = c.lim, ylim = ylim, c.lab = c.lab, ylab = ylab, at = at, labels = labels, type = type, lwd = lwd, lty = lty, col = col, log.ax = log.ax, las = las, ann = a.ann, xannx = xannx, cex.ann = cex.ann, a.thin = a.thin, ... ) } } Epi/R/effx.match.r0000644000175100001440000001531612531361077013427 0ustar hornikusers## Program to calculate effects for matched case-control studies ## Michael Hills ## Improved by BxC and MP ## Post Tartu 2007 version June 2007 effx.match<-function(response, exposure, match, strata=NULL, control=NULL, base=1, digits=3, alpha=0.05, data=NULL) { ## stores the variable names for response, etc. rname<-deparse(substitute(response)) ename<-deparse(substitute(exposure)) if (!missing(strata))sname<-deparse(substitute(strata)) ## The control argument is more complex, as it may be a name or ## list of names if(!missing(control)) { control.arg <- substitute(control) if (length(control.arg) > 1) { control.names <- sapply(control.arg, deparse)[-1] } else { control.names <- deparse(control.arg) } } ## If data argument is supplied, evaluate the arguments in that ## data frame. if (!missing(data)) { exposure <- eval(substitute(exposure), data) response <- eval(substitute(response), data) match <- eval(substitute(match),data) if (!missing(strata)) { strata <- eval(substitute(strata), data) } if (!missing(control)) control <- eval(substitute(control), data) } ## performs a few other checks if(rname==ename)stop("Same variable specified as response and exposure") if (!missing(strata)) { if(rname==sname)stop("Same variable specified as response and strata") if(sname==ename)stop("Same variable specified as strata and exposure") } if(!is.numeric(response))stop("Response must be numeric, not a factor") if(!missing(strata)&!is.factor(strata))stop("Stratifying variable must be a factor") tmp<-(response==0 | response==1) if(all(tmp,na.rm=TRUE)==FALSE) stop("Binary response must be coded 0,1 or NA") if(class(exposure)[1]=="ordered") { exposure<-factor(exposure, ordered=F) } ## Fix up the control argument as a named list if (!missing(control)) { if (is.list(control)) { names(control) <- control.names } else { control <- list(control) names(control) <- control.names } } ## prints out some information about variables cat("---------------------------------------------------------------------------","\n") cat("response : ", rname, "\n") cat("exposure : ", ename, "\n") if(!missing(control))cat("control vars : ",names(control),"\n") if(!missing(strata)) cat("stratified by : ",sname,"\n") cat("\n") if(is.factor(exposure)) { cat(ename,"is a factor with levels: ") cat(paste(levels(exposure),collapse=" / "),"\n") cat( "baseline is ", levels( exposure )[base] ,"\n") exposure <- Relevel( exposure, base ) } else { cat(ename,"is numeric","\n") } if(!missing(strata)) { cat(sname,"is a factor with levels: ") cat(paste(levels(strata),collapse="/"),"\n") } cat("effects are measured as odds ratios","\n") cat("---------------------------------------------------------------------------","\n") cat("\n") ## gets number of levels for exposure if a factor if(is.factor(exposure)) { nlevE<-length(levels(exposure)) } else { nlevE<-1 } ## labels the output if(is.factor(exposure)) { cat("effect of",ename,"on",rname,"\n") } else { cat("effect of an increase of 1 unit in",ename,"on",rname,"\n") } if(!missing(control)) { cat("controlled for",names(control),"\n\n") } if(!missing(strata)) { cat("stratified by",sname,"\n\n") } ## no stratifying variable if(missing(strata)) { if(missing(control)) { m<-clogit(response~exposure+strata(match)) cat("number of observations ",m$n,"\n\n") } else { m<-clogit(response~.+exposure+strata(match), subset=!is.na(exposure),data=control) cat("number of observations ",m$n,"\n\n") mm<-clogit(response~.+strata(match), subset=!is.na(exposure),data=control) } res<-ci.lin(m,subset=c("exposure"),Exp=TRUE,alpha=alpha)[,c(5,6,7)] res<-signif(res,digits) if(nlevE<3) { names(res)[1]<-c("Effect") } else { colnames(res)[1]<-c("Effect") if(is.factor(exposure)) { ln <- levels(exposure) rownames(res)[1:nlevE-1]<-paste(ln[2:nlevE],"vs",ln[1]) } } print(res) if(missing(control)) { chisq<-round(summary(m)$logtest[1],2) df<-round(summary(m)$logtest[2]) p<-round(summary(m)$logtest[3],3) cat("\n") cat("Test for no effects of exposure: ","\n") cat("chisq=",chisq, " df=",df, " p-value=",format.pval(p,digits=3),"\n") invisible(list(res,paste("Test for no effects of exposure on", df,"df:","p=",format.pval(p,digits=3)))) } else { aov <- anova(mm,m,test="Chisq") cat("\nTest for no effects of exposure on", aov[2,3],"df:", "p-value=",format.pval(aov[2,5],digits=3),"\n") invisible(list(res,paste("Test for no effects of exposure on", aov[2,3],"df:","p=",format.pval(aov[2,5],digits=3)))) } } ## stratifying variable if(!missing(strata)) { sn <- levels(strata) nlevS<-length(levels(strata)) if(missing(control)) { m<-clogit(response~strata/exposure+strata(match)) cat("number of observations ",m$n,"\n\n") mm<-clogit(response~strata+exposure+strata(match)) } else { m <-clogit(response~strata/exposure + . +strata(match), data=control) cat("number of observations ",m$n,"\n\n") mm <-clogit(response~strata+exposure + . +strata(match), data=control) } res<-ci.lin(m,Exp=TRUE,alpha=alpha,subset="strata")[c(-1:-(nlevS-1)),c(5,6,7)] res<-signif(res,digits) colnames(res)[1]<-c("Effect") if(is.factor(exposure)) { ln<-levels(exposure) newrownames<-NULL for(i in c(1:(nlevE-1))) { newrownames<-c(newrownames, paste("strata",sn[1:nlevS],"level",ln[i+1],"vs",ln[1])) } } else { newrownames<-paste("strata",sn[1:nlevS]) } rownames(res)<-newrownames aov<-anova(mm,m,test="Chisq") print( res ) cat("\nTest for effect modification on", aov[2,3],"df:","p-value=",format.pval(aov[2,5],digits=3),"\n") invisible(list(res,paste("Test for effect modification on", aov[2,3],"df:","p-value=",format.pval(aov[2,5],digits=3)))) } } Epi/R/cutLexis.R0000644000175100001440000002731114254261254013142 0ustar hornikusers doCutLexis <- function(data, cut, timescale, new.scale=FALSE ) { ## new.scale is a character constant with the name of the new timescale ## Code each new interval using new variable lex.cut: ## 0 = unchanged interval (cut occurs after exit) ## 1 = first part of split interval ## 2 = second part of split interval (or cut occurs before interval) cut[is.na(cut)] <- Inf #If a cut time is missing, it never happens ## First intervals (before the cut) in.1 <- entry(data, timescale) ex.1 <- pmin(cut, exit(data, timescale)) ## Create Lexis object for first intervals lx.1 <- data lx.1$lex.dur <- ex.1 - in.1 lx.1$lex.cut <- ifelse(cut < exit(data, timescale), 1, 0) if( new.scale ) lx.1[,"lex.new.scale"] <- NA ## Second intervals (after the cut) in.2 <- pmax(cut, entry(data, timescale)) ex.2 <- exit(data, timescale) ## Create Lexis object for second intervals lx.2 <- data lx.2$lex.dur <- ex.2 - in.2 lx.2$lex.cut <- 2 if( new.scale ) lx.2[,"lex.new.scale"] <- in.2 - cut ## Update entry times lx.2[, timeScales(data)] <- exit(data) - lx.2$lex.dur return(rbind(lx.1, lx.2)) } setStatus.default <- function(data, new.state) { data$lex.Xst[data$lex.cut == 1] <- new.state[data$lex.cut == 1] data$lex.Cst[data$lex.cut == 2] <- new.state return(data) } setStatus.numeric <- function(data, new.state, precursor.states=NULL, progressive=TRUE) { if (!is.numeric(new.state)) { stop("If lex.Cst, lex.Xst are numeric, new.state must be numeric too") } data$lex.Xst[data$lex.cut == 1] <- new.state[data$lex.cut == 1] data$lex.Cst[data$lex.cut == 2] <- new.state exit.state <- data$lex.Xst[data$lex.cut == 2] is.precursor <- exit.state %in% precursor.states if (progressive) { is.precursor <- is.precursor | (exit.state < new.state) } data$lex.Xst[data$lex.cut == 2][is.precursor] <- new.state[is.precursor] return(data) } setStatus.factor <- function( data, new.state, precursor.states=NULL, progressive=TRUE) { if (!is.character(new.state)) { stop("new.state must be a character vector, but it is ",str(new.state)) } current.states <- levels(data$lex.Cst) new.states <- setdiff(new.state,current.states) new.states <- new.states[!is.na(new.states)] ## Modify factor levels if necessary if (length(new.states) > 0) { all.states <- c(current.states, sort(new.states)) new.order <- match( c(intersect(precursor.states,current.states), new.states, setdiff(current.states,precursor.states)), all.states ) levels(data$lex.Cst) <- all.states levels(data$lex.Xst) <- all.states } data$lex.Xst[data$lex.cut == 1] <- new.state[data$lex.cut == 1] data$lex.Cst[data$lex.cut == 2] <- new.state exit.state <- data$lex.Xst[data$lex.cut==2] is.precursor <- exit.state %in% precursor.states if (progressive) { if (is.ordered(data$lex.Xst)) { is.precursor <- is.precursor | (exit.state < new.state) } else { warning("progressive=TRUE argument ignored for unordered factor") } } data$lex.Xst[data$lex.cut==2][is.precursor] <- new.state[is.precursor] # Reorder factor levels sensibly if (!progressive & length(new.states)>0){ data$lex.Cst <- Relevel( data$lex.Cst, new.order ) data$lex.Xst <- Relevel( data$lex.Xst, new.order ) } return(data) } # Added by BxC match.cut <- function(data, cut, ts) { if(sum(!is.na(match(c("lex.id", "cut", "new.state"), names(cut)))) < 3 ) stop("The dataframe supplied in the cut= argument must have columns", "'lex.id', 'cut', 'new.state', but the columns are:\n", names(cut)) else { if( length(unique(cut$lex.id)) < nrow(cut) ) stop("Values of 'lex.id' must be unique in the 'cut' dataframe\n", "- maybe you are looking for rcutLexis?") else # added April 2021 if cut$cut exactly matches a time in data move # the cut date a bit earlier in time # first, exact mathes are put in wh wh <- merge(cut, data[, c("lex.id", ts)], by.x = c("lex.id", "cut"), by.y = c("lex.id", ts), all = FALSE) # ask for an inner join (the default) if(nrow(wh) > 0) cut[cut$lex.id %in% wh$lex.id, "cut"] <- cut[cut$lex.id %in% wh$lex.id, "cut"] - min(data$lex.dur) / 100 # end added stuff zz <- merge(data[, "lex.id", drop=FALSE], cut, all.x=TRUE ) if (is.factor(data$lex.Cst)) zz$new.state <- as.character(zz$new.state) if (is.numeric(data$lex.Cst)) zz$new.state <- as.numeric(zz$new.state) return( zz ) } } # End of addition / change cutLexis <- function(data, cut, timescale = 1, new.state = nlevels(data$lex.Cst)+1, new.scale = FALSE, split.states = FALSE, progressive = FALSE, precursor.states = transient(data), count = FALSE) { if (!inherits(data, "Lexis")) stop("data must be a Lexis object") if( count ) return( countLexis( data=data, cut=cut, timescale=timescale ) ) if (inherits(cut, "data.frame")){ # Added April 2021, BxC zz <- match.cut(data, cut, check.time.scale(data, timescale)) cut <- zz$cut new.state <- zz$new.state } else if (length(cut) == 1) { cut <- rep(cut, nrow(data)) } else if (length(cut) != nrow(data)) { stop("'cut' must have length 1 or nrow(data) (=", nrow(data), "),\n --- but it has length ", length(cut),".") } timescale <- check.time.scale(data, timescale) if (length(timescale) > 1) { stop("Multiple time scales not allowed") } ## If we want to add a new timescale, construct the name if( is.logical(new.scale) ) { if( new.scale ) scale.name <- paste( "tf", new.state[1], sep="" ) } else { scale.name <- new.scale new.scale <- TRUE } if (missing(new.state)) { new.state <- data$lex.Cst #Carry forward last state } else if (length(new.state) == 1) { new.state <- rep(new.state, nrow(data)) } else if (length(new.state) != nrow(data)) { stop("'new.state' must have length 1 or nrow(data) (=", nrow(data), "),\n --- but it has length ", length(new.state)) } if (progressive) { if (is.factor(data$lex.Cst) && !is.ordered(data$lex.Cst)) { stop("progressive=TRUE invalid for unordered factors") } if (any(data$lex.Xst < data$lex.Cst)) { stop("Lexis object is not progressive before splitting") } } lx <- doCutLexis( data, cut, timescale, new.scale=TRUE ) if (is.factor(data$lex.Cst)) { lx <- setStatus.factor(lx, new.state, precursor.states, progressive) } else if (is.numeric(data$lex.Cst)) { lx <- setStatus.numeric(lx, new.state, precursor.states, progressive) } else { lx <- setStatus.default(lx, new.state) } ## Remove redundant intervals lx <- lx[lx$lex.dur > 0,] ## Remove the lex.cut column lx <- lx[,-match("lex.cut",names(lx))] ## Update the states visited after the cut if( split.states & is.factor( data$lex.Cst ) ) { post.states <- setdiff( levels(data$lex.Cst), precursor.states ) tmp.Cst <- as.character( lx$lex.Cst ) tmp.Cst <- ifelse( !is.na(lx$lex.new.scale) & lx$lex.new.scale>0 & tmp.Cst %in% post.states, paste( tmp.Cst,"(",new.state,")",sep="" ), tmp.Cst ) tmp.Xst <- as.character( lx$lex.Xst ) tmp.Xst <- ifelse( !is.na(lx$lex.new.scale) & tmp.Xst %in% post.states, paste( tmp.Xst,"(",new.state,")",sep="" ), tmp.Xst ) all.levels <- unique( c(tmp.Cst,tmp.Xst) ) ## put all the new levels after the old ones xtr.levels <- setdiff( all.levels, levels(lx$lex.Cst) ) new.levels <- c( levels(lx$lex.Cst), xtr.levels ) lx$lex.Cst <- factor( tmp.Cst, levels=new.levels ) lx$lex.Xst <- factor( tmp.Xst, levels=new.levels ) } ## Include the new timescale if( new.scale ) { ## Rename the new timescale variable names(lx)[match("lex.new.scale",names(lx))] <- scale.name ## The timescales' position among columns - used to reorder columns tn <- c( match( attr( data, "time.scales" ), names( lx ) ), ncol(lx) ) oth <- setdiff( 1:ncol(lx), tn ) ## Reorder columns (lx will then lose attributes) and sort rows lx <- lx[order(lx$lex.id,lx[,timescale]),c(tn,oth)] ## Update the attributes new.br <- c( attr( data, "breaks" ), list(NULL) ) names( new.br )[length(new.br)] <- scale.name attr( lx, "time.scales" ) <- c( attr( data, "time.scales" ), scale.name ) attr( lx, "time.since" ) <- c( attr( data, "time.since" ), names(table(new.state)) ) attr( lx, "breaks" ) <- new.br attr( lx, "class" ) <- attr( data, "class" ) } else { # Remove the new timescale and sort rows lx <- lx[order(lx$lex.id,lx[,timescale]),-match("lex.new.scale",names(lx))] # and transfer all the other attributes attr( lx, "time.scales" ) <- attr( data, "time.scales" ) attr( lx, "time.since" ) <- attr( data, "time.since" ) attr( lx, "breaks" ) <- attr( data, "breaks" ) attr( lx, "class" ) <- attr( data, "class" ) } sortLexis(lx) } countLexis <- function(data, cut, timescale = 1) { if (!inherits(data, "Lexis")) stop("data must be a Lexis object") if( inherits( cut, "data.frame" ) ){ zz <- match.cut( data, cut ) cut <- zz$cut new.state <- zz$new.state } else if (length(cut) == 1) { cut <- rep(cut, nrow(data)) } else if (length(cut) != nrow(data)) { stop("'cut' must have length 1 or nrow(data) (=", nrow(data), "),\n --- but it has length ", length(cut),".") } timescale <- check.time.scale(data, timescale) if (length(timescale) > 1) { stop("Multiple time scales not meaningful") } lx <- doCutLexis(data, cut, timescale) ## Update status variables lx$lex.Xst[lx$lex.cut == 1] <- lx$lex.Cst[lx$lex.cut == 1] + 1 lx$lex.Cst[lx$lex.cut == 2] <- lx$lex.Cst[lx$lex.cut == 2] + 1 lx$lex.Xst[lx$lex.cut == 2] <- lx$lex.Xst[lx$lex.cut == 2] + 1 ## Remove redundant intervals lx <- lx[lx$lex.dur > 0,] ## Remove the lex.cut column lx <- lx[,-match("lex.cut",names(lx))] ## Retain the attributes attr( lx, "breaks" ) <- attr( data, "breaks" ) attr( lx, "time.scales" ) <- attr( data, "time.scales" ) attr( lx, "class" ) <- attr( data, "class" ) return(lx[order(lx$lex.id,lx[,timescale]),]) } tsNA20 <- function( x, all.scales=FALSE ) { tsc <- timeSince(x) if( !all.scales ) tsc <- tsc[tsc!=""] if( length(tsc)>0 ) for( ts in names(tsc) ) { x[,ts] <- ifelse( is.na(x[,ts]), 0, x[,ts] ) } x } Epi/R/ccwc.R0000644000175100001440000001264213626052376012267 0ustar hornikusersccwc <- function(entry=0, exit, fail, origin=0, controls=1, match=list(), include=list(), data=NULL, silent=FALSE) { # Check arguments entry <- eval(substitute(entry), data) exit <- eval(substitute(exit), data) fail <- eval(substitute(fail), data) origin <- eval(substitute(origin), data) n <- length(fail) if (length(exit)!=n) stop("All vectors must have same length") if (length(entry)!=1 && length(entry)!=n) stop("All vectors must have same length") if (length(origin)==1) { origin <- rep(origin, n) } else { if (length(origin)!=n) stop("All vectors must have same length") } # Transform times to correct scale t.entry <- as.numeric(entry - origin) t.exit <- as.numeric(exit - origin) # match= argument marg <- substitute(match) if (mode(marg)=="name") { match <- list(eval(marg, data)) names(match) <- as.character(marg) } else if (mode(marg)=="call" && marg[[1]]=="list") { mnames <- names(marg) nm <- length(marg) if (nm>1) { if (!is.null(mnames)) { for (i in 2:nm) { if (mode(marg[[i]])=="name") mnames[i] <- as.character(marg[[i]]) else stop("illegal argument (match)") } } else { for (i in 2:nm) { if (mode(marg[[i]])=="name") mnames[i] <- as.character(marg[[i]]) else stop("illegal argument (match)") } mnames[1] <= "" } } names(marg) <- mnames match <- eval(marg, data) } else { stop("illegal argument (match)") } m <- length(match) mnames <- names(match) if (m>0) { for (i in 1:m) { if (length(match[[i]])!=n) { stop("incorrect length for matching variable") } } } # include= argument iarg <- substitute(include) if (mode(iarg)=="name") { include <- list(eval(iarg, data)) names(include) <- as.character(iarg) } else if (mode(iarg)=="call" && iarg[[1]]=="list") { ni <- length(iarg) inames <- names(iarg) if (ni>1) { if (!is.null(inames)) { for (i in 2:ni) { if (mode(iarg[[i]])=="name") inames[i] <- as.character(iarg[[i]]) else stop("illegal argument (include)") } } else { for (i in 2:ni) { if (mode(iarg[[i]])=="name") inames[i] <- as.character(iarg[[i]]) else stop("illegal argument (include)") } inames[1] <= "" } } names(iarg) <- inames include <- eval(iarg, data) } else { stop("illegal argument (include)") } ni <- length(include) inames <- names(include) if (ni>0) { for (i in 1:ni) { if (length(include[[i]])!=n) { stop("incorrect length for included variable") } } } # create group codes using matching variables grp <- rep(1,n) pd <- 1 if (m>0) { for (im in 1:m) { v <- match[[im]] if (length(v)!=n) stop("All vectors must have same length") if (!is.factor(v)) v <- factor(v) grp <- grp + pd*(as.numeric(v) - 1) pd <- pd*length(levels(v)) } } # Create vectors long enough to hold results nn <- (1+controls)*sum(fail!=0) pr <- numeric(nn) sr <- numeric(nn) tr <- vector("numeric", nn) fr <- numeric(nn) nn <- 0 # Sample each group if (!silent) { cat("\nSampling risk sets: ") } set <- 0 nomatch <- 0 incomplete <- 0 ties <- FALSE fg <- unique(grp[fail!=0]) for (g in fg) { # Failure times ft <- unique( t.exit[(grp==g) & (fail!=0)] ) # Create case-control sets for (tf in ft) { if (!silent) { cat(".") } set <- set+1 case <- (grp==g) & (t.exit==tf) & (fail!=0) ncase <- sum(case) if (ncase>1) ties <- TRUE noncase <- (grp==g) & (t.entry<=tf) & (t.exit>=tf) & !case ncont <- controls*ncase if (ncont>sum(noncase)) { ncont <- sum(noncase) if (ncont>0) incomplete <- incomplete + 1 } if (ncont>0) { newnn <- nn+ncase+ncont sr[(nn+1):newnn] <- set tr[(nn+1):newnn] <- tf fr[(nn+1):(nn+ncase)] <- 1 fr[(nn+ncase+1):newnn] <- 0 pr[(nn+1):(nn+ncase)] <- (1:n)[case] ## Work around bad behaviour of sample for vectors of length 1 noncase.id <- (1:n)[noncase] pr[(nn+ncase+1):(newnn)] <- noncase.id[sample.int(length(noncase.id), size=ncont)] nn <- newnn } else { nomatch <- nomatch + ncase } } } if (!silent) { cat("\n") } res <- vector("list", 4+m+ni) if (nn>0) { res[[1]] <- sr[1:nn] res[[2]] <- map <- pr[1:nn] res[[3]] <- tr[1:nn] + origin[map] res[[4]] <- fr[1:nn] } if (m>0) { for (i in 1:m) { res[[4+i]] <- match[[i]][map] } } if (ni>0) { for (i in 1:ni) { res[[4+m+i]] <- include[[i]][map] } } names(res) <- c("Set", "Map", "Time", "Fail", mnames, inames) if (incomplete>0) warning(paste(incomplete, "case-control sets are incomplete")) if (nomatch>0) warning(paste(nomatch, "cases could not be matched")) if (ties) warning("there were tied failure times") data.frame(res) } Epi/R/matshade.R0000644000175100001440000000325513563764541013142 0ustar hornikusersmatshade <- function( x, y, lty = 1, col = 1:(ncol(y)/3), col.shade = col, alpha = 0.15, plot = dev.cur()==1, ... ) { # check sanity of x and y if( !is.vector(x) ) stop( "x must be a vector\n") if( ncol(y)%%3 != 0 ) warning( "number of columns in y, ", ncol(y), " is not divisible by 3\n") # create a new plot? if( plot ) matplot( x, y, col="transparent", ... ) # number of curves to draw ncrv <- ncol(y) %/% 3 # The recycling rule for colors and alpha: col <- rep(col ,ncrv)[1:ncrv] col.shade <- rep(col.shade,ncrv)[1:ncrv] alpha <- rep(alpha ,ncrv)[1:ncrv] # First shaded areas - allowing NA to create holes draw.shade <- function( xx, yu, yl, col ) { # Find NAs and plot shades for non-missing sequences wh <- 1:length(xx) # NAs where at least one is missing wh[apply( cbind(xx,yl,yu), 1, function(x) any(is.na(x)) )] <- NA idx <- 1 + cumsum( is.na( wh ) ) not.na <- !is.na( wh ) chunks <- split( wh[not.na], idx[not.na] ) for( ch in chunks ) if( length(ch) > 1 ) polygon( c( xx[ch], rev(xx[ch]) ), c( yu[ch], rev(yl[ch]) ), col = col, pch = NULL, border = "transparent" ) } # Then the shades for each set of 3 columns for( i in 1:ncrv ) draw.shade( x, y[,i*3-1], y[,i*3-0], col = adjustcolor( col.shade[i], alpha.f=alpha[i] ) ) # then curves on top of these matlines( x, y[,(1:ncrv)*3-2], col=col, lty=lty, ... ) } Epi/R/contr.diff.R0000644000175100001440000000057512531361077013401 0ustar hornikuserscontr.diff <- function(n) { if (is.numeric(n) && length(n) == 1) levs <- 1:n else { levs <- n n <- length(n) } contr <- array(0, c(n, n), list(levs, levs)) contr[col(contr) == row(contr)] <- 1 contr[row(contr) - col(contr) == 1] <- -1 if (n < 2) stop(paste("Contrasts not defined for", n - 1, "degrees of freedom")) contr } Epi/R/ci.lin.R0000644000175100001440000003646514252357470012534 0ustar hornikusers# The coef() methods in nlme and lme4 do something different, # other objects do not even have coef or vcov methods defined, # so we make a workaround by specifying our own generic methods: COEF <- function(x, ...) UseMethod("COEF") COEF.default <- function(x, ...) coef(x, ...) VCOV <- function(x, ...) UseMethod("VCOV") VCOV.default <- function(x, ...) vcov(x, complete=TRUE, ...) # Then we can get from these methods what we want from lme, mer etc. COEF.lme <- function(x, ...) nlme::fixed.effects(x) COEF.mer <- function(x, ...) lme4::fixef(x) COEF.lmerMod <- function(x, ...) lme4::fixef(x) COEF.glmerMod <- function(x, ...) lme4::fixef(x) # The vcov returns a matrix with the wrong class so we strip that: VCOV.lme <- function(x, ...) as.matrix(vcov(x)) VCOV.mer <- function(x, ...) as.matrix(vcov(x)) VCOV.lmerMod <- function(x, ...) as.matrix(vcov(x)) VCOV.glmerMod <- function(x, ...) as.matrix(vcov(x)) # For the rest of the non-conforming classes we then just need the # methods not defined # VCOV.coxph <- function(object, ...) # survival::vcov.coxph(object, complete=FALSE, ...) COEF.crr <- function( object, ... ) object$coef VCOV.crr <- function( object, ... ) object$var COEF.MIresult <- function( object, ... ) object$coefficients VCOV.MIresult <- function( object, ... ) object$variance COEF.mipo <- function( object, ... ) object$qbar VCOV.mipo <- function( object, ... ) object$t VCOV.gnlm <- function( object, ... ) object$cov VCOV.rq <- function( object, ... ) summary(object, cov=TRUE)$cov df2ctr <- function(obj, nd) { if (!(inherits(obj, "lm") | inherits(obj, "coxph"))) stop("data frame facility not inplemented for ", class(obj), " objects") # Factors in the prediction frame must have more than one level, which # they typically do not have in the specification of a prediction # frame, so we find the factors in the prediction frame and expand # levels to the complete set of levels which we get from the model # object This should secure the working of model.matrix(); note that # the machinery differs between gam and non-gam glms dcl <- attr(obj$terms, "dataClasses")[-1] # the first is the reponse whf <- (dcl == "factor") if (any(whf)) { for (fn in names(dcl)[which(whf)]) { nd[,fn] <- factor(nd[,fn], levels = if (inherits(obj, "gam")) levels(obj$var.summary[[fn]]) else obj$xlevels [[fn]]) } } # The folowing is needed to keep NA rows from the data frame supplied org.op <- options( na.action='na.pass' ) on.exit( options( org.op ) ) # The contrast matrix from the model - differs a between (g)lm, gam and coxph if (inherits(obj,"coxph")) MM <- model.matrix( obj , data=nd) if (inherits(obj,"gam" )) MM <- model.matrix( obj , newdata=nd) else if (inherits(obj,"lm" )) MM <- model.matrix( formula(obj)[-2], data=nd) return( MM ) } ci.dfr <- function( obj, ndx, ndr, xvars = NULL, vcov = FALSE, alpha = 0.05, Exp = FALSE, sample = FALSE ) { if( nrow(ndr)==1 ) ndr <- ndr[rep(1,nrow(ndx)),,drop=FALSE] if( ( nrow(ndx) != nrow(ndr)) | any(sort(names(ndx)) != sort(names(ndr))) ) stop("\nThe two prediction frames must have same dimensions", "and column names, but dimensions are (", paste(dim(ndx), collapse=","), ") and (", paste(dim(ndr), collapse=","), ")\n", "and the column names are:\n", "exp: ", paste(names(ndx), collapse=", "), "\n", "ref: ", paste(names(ndr), collapse=", "), "\n") # Now supply and fix those variables that are needed in order to get # model.matrix working: # Supplied variable names: cols <- names( ndx ) # Factors in model; which are supplied; derive names of omitted # factors (called ofacs) facs <- names( obj$xlevels ) ofacs <- setdiff( facs, cols ) # omitted *variables* must be supplied ovars <- setdiff( xvars, facs ) # Construct the extra columns with bogus data (their contribution will # be null) xcols <- ndx[,NULL] if( length(ofacs) > 0 ) for( fn in ofacs ) xcols[,fn] <- obj$xlevels[[fn]][1] if( length(ovars) > 0 ) for( vn in ovars ) xcols[,vn] <- 1 if( dim(xcols)[2]>0 ) { ndx <- cbind( ndx, xcols ) ndr <- cbind( ndr, xcols ) } ci.lin( obj, ctr.mat = df2ctr( obj, ndx ) - df2ctr( obj, ndr ), vcov = vcov, alpha = alpha, Exp = Exp, sample = sample ) } ci.dfr2 <- function( obj, nd1, nd2, nd3, nd4, xvars = NULL, vcov = FALSE, alpha = 0.05, Exp = FALSE, sample = FALSE ) { if( nrow(nd2)==1 ) nd2 <- nd2[rep(1,nrow(nd1)),,drop=FALSE] if( nrow(nd3)==1 ) nd3 <- nd3[rep(1,nrow(nd1)),,drop=FALSE] if( nrow(nd4)==1 ) nd4 <- nd4[rep(1,nrow(nd1)),,drop=FALSE] if( ( nrow(nd2) != nrow(nd1)) | ( nrow(nd3) != nrow(nd1)) | ( nrow(nd4) != nrow(nd1)) | any(names(nd2) != names(nd1)) | any(names(nd3) != names(nd1)) | any(names(nd4) != names(nd1)) ) stop("\nThe prediction frames must have same dimensions and column names:", "but dimensions are: (", paste( dim(nd1),collapse=","), ") and (", paste( dim(nd2),collapse=","), ") and (", paste( dim(nd3),collapse=","), ") and (", paste( dim(nd4),collapse=","), ")\n", "and column names are:\n", "1: ", paste( names(nd1), collapse=", " ), "\n", "2: ", paste( names(nd2), collapse=", " ), "\n", "3: ", paste( names(nd3), collapse=", " ), "\n", "4: ", paste( names(nd4), collapse=", " ), "\n") # Now supply and fix those variables that are needed in order to get # model.matrix working: # Supplied variable names: cols <- names( nd1 ) # Factors in model; which are supplied; derive names of omitted # factors (ofacs) facs <- names( obj$xlevels ) ofacs <- setdiff( facs, cols ) # omitted *variables* must be supplied ovars <- setdiff( xvars, facs ) # Construct the extra columns with bogus data (their contribution will # be null) xcols <- nd1[,NULL] if( length(ofacs) > 0 ) for( fn in ofacs ) xcols[,fn] <- obj$xlevels[[fn]][1] if( length(ovars) > 0 ) for( vn in ovars ) xcols[,vn] <- 1 if( dim(xcols)[2]>0 ) { nd1 <- cbind( nd1, xcols ) nd2 <- cbind( nd2, xcols ) nd3 <- cbind( nd3, xcols ) nd4 <- cbind( nd4, xcols ) } ci.lin( obj, ctr.mat = df2ctr( obj, nd1 ) -df2ctr( obj, nd2 ) -df2ctr( obj, nd3 ) +df2ctr( obj, nd4 ), vcov = vcov, alpha = alpha, Exp = Exp, sample = sample ) } ci.lin <- function( obj, ctr.mat = NULL, subset = NULL, subint = NULL, xvars = NULL, diffs = FALSE, fnam = !diffs, vcov = FALSE, alpha = 0.05, df = Inf, Exp = FALSE, sample = FALSE ) { # If ctr.mat is a data frame, call df2ctr if( inherits( ctr.mat, "data.frame" ) ) ctr.mat <- df2ctr( obj, ctr.mat ) # If ctr.mat is a list of two dataframes then call ci.dfr if( inherits( ctr.mat, "list" ) ) { if( length(ctr.mat)==2 ) { if( !inherits( ctr.mat[[1]], "data.frame" ) | !inherits( ctr.mat[[2]], "data.frame" ) ) stop("If ctr.mat is a list it must be a list of data frames") return( ci.dfr( obj, ctr.mat[[1]], ctr.mat[[2]], xvars = xvars, vcov = vcov, alpha = alpha, Exp = Exp, sample = sample ) ) } # If ctr.mat is a list of two dataframes then call ci.dfr2 for 2nd # order differences if( length(ctr.mat)==4 ) { if( !inherits( ctr.mat[[1]], "data.frame" ) | !inherits( ctr.mat[[2]], "data.frame" ) | !inherits( ctr.mat[[3]], "data.frame" ) | !inherits( ctr.mat[[4]], "data.frame" ) ) stop("If ctr.mat is a list it must be a list of data frames") return( ci.dfr2( obj, ctr.mat[[1]], ctr.mat[[2]], ctr.mat[[3]], ctr.mat[[4]], xvars = xvars, vcov = vcov, alpha = alpha, Exp = Exp, sample = sample ) ) } } # First extract all the coefficients and the variance-covariance matrix cf <- COEF( obj ) vcv <- VCOV( obj ) # Alised parameters are set to 0 if( any( is.na( cf ) ) ) cf[is.na(cf )] <- 0 if( any( is.na( vcv ) ) ) vcv[is.na(vcv)] <- 0 # Function for computing a contrast matrix for all possible # differences between a set of parameters. all.dif <- function( cf, pre=FALSE ) { nn <- length( cf ) nr <- nn * ( nn - 1 ) / 2 nam <- names( cf ) # Work out the indexes of parameter pairs to compare # xx <- numeric( 0 ) for( j in 2:nn ) xx <- c(xx, j:nn ) ctr <- cbind( rep( 1:(nn-1), (nn-1):1 ), xx ) # Now for the annotation: # Find out how large a proportion of rownames are identical i <- 1 while( all( substr( nam, 1, i ) == substr( nam[1], 1, i ) ) ) i <- i+1 # If a factor name is given, then use this, otherwise the identical part # of the parameter names if( is.character( pre ) ) { prefix <- pre pre <- TRUE } else { prefix <- substr( nam[1], 1, i-1 ) } rn <- paste( if( pre ) prefix else "", substring( nam[ctr[,1]], i ), "vs.", substring( nam[ctr[,2]], i ) ) # Finally, construct the contrast matrix and attach the rownames cm <- matrix( 0, nr, nn ) cm[cbind(1:nr,ctr[,1])] <- 1 cm[cbind(1:nr,ctr[,2])] <- -1 rownames( cm ) <- rn cm } # end of the function all.dif for all differences # Were all differences requested? if( diffs ) { if( is.character( subset ) ) { if ( inherits( obj, "lm" ) & length( grep( subset, names( obj$xlevels ) ) )>0 ) { # The case of factor level differences we find the relevant # subset of parameters by reconstructing names of parameters wf <- grep( subset, af <- names( obj$xlevels ) ) # All factor levels fn <- obj$xlevels[[af[wf]]] # Reconstruct names of relevant parameter names pnam <- paste( af[wf], fn, sep="" ) # Find them in the parameter vector wh <- match( pnam, names( coef( obj ) ) ) # Get the relevant subset, and stick in 0s for NAs cf <- coef( obj )[wh] cf[is.na( cf )] <- 0 vcv <- vcov( obj, complete=FALSE )[wh,wh] vcv[is.na( vcv )] <- 0 names( cf ) <- rownames( vcv ) <- colnames( vcv ) <- paste( subset, ": ", fn, sep="" ) } else { subset <- grep( subset, names( cf ) ) cf <- cf[subset] vcv <- vcv[subset,subset] } } else { cf <- cf[subset] vcv <- vcv[subset,subset] } ctr.mat <- all.dif( cf, pre=fnam ) } if( !diffs ) { if( is.character( subset ) ) { sb <- numeric(0) for( i in 1:length( subset ) ) sb <- c(sb,grep( subset[i], names( cf ) )) subset <- sb # unique( sb ) } if( is.character( subint ) ) { sb <- 1:length(cf) for( i in 1:length(subint) ) sb <- intersect( sb, grep(subint[i],names(cf)) ) subset <- sb # unique( sb ) } if( is.null( subset ) & is.null( subint ) ) subset <- 1:length( cf ) # Exclude units where aliasing has produced NAs. # Not needed after replacement with 0s # subset <- subset[!is.na( cf[subset] )] cf <- cf[subset] vcv <- vcv[subset,subset] if( is.null( ctr.mat ) ) { ctr.mat <- diag( length( cf ) ) rownames( ctr.mat ) <- names( cf ) } if( dim( ctr.mat )[2] != length(cf) ) stop( paste("\n Dimension of ", deparse(substitute(ctr.mat)), ": ", paste(dim(ctr.mat), collapse = "x"), ", not compatible with no of parameters in ", deparse(substitute(obj)), ": ", length(cf), sep = "")) } # Finally, here is the actual computation if( sample ) { # mvrnorm() returns a vector if sample=1, otherwise a sample by # length(cf) matrix - hence the rbind so we always get a row # matrix and res then becomes an nrow(ctr.mat) by sample matrix res <- ctr.mat %*% t( rbind(mvrnorm( sample, cf, vcv )) ) } else { ct <- ctr.mat %*% cf vc <- ctr.mat %*% vcv %*% t( ctr.mat ) se <- sqrt( diag( vc ) ) ci <- cbind( ct, se ) %*% ci.mat( alpha=alpha, df=df ) t0 <- cbind( se, ct/se, 2 * ( pnorm( -abs( ct / se ) ) ) ) colnames(t0) <- c("StdErr", "z", "P") res <- cbind(ci, t0)[, c(1, 4:6, 2:3), drop=FALSE] if( Exp ) { res <- cbind( res[,1:4 ,drop=FALSE], exp( res[,c(1,5,6),drop=FALSE] ) ) colnames( res )[5] <- "exp(Est.)" } # class( res ) <- c("ci.lin","matrix") } # Return the requested structure if( sample ) invisible( res ) else if( vcov ) invisible( list( coef=ct[,1], vcov=vc ) ) else res } # print.ci.lin <- # function( x, ..., digits=3 ) # { # print( round( unclass(x), digits ) ) # } # Handy wrapper ci.exp <- function( ..., Exp=TRUE, pval=FALSE ) { res <- if( Exp ) { ci.lin( ..., Exp=TRUE )[,if(pval) c(5:7,4) else 5:7 ,drop=FALSE] } else { ci.lin( ..., Exp=FALSE )[,if(pval) c(1,5,6,4) else c(1,5,6),drop=FALSE] } # class( res ) <- c( "ci.lin", "matrix" ) res } # Wrapper for predict.glm to give estimates and confidence intervals ci.pred <- function( obj, newdata, Exp = NULL, alpha = 0.05 ) { if( !inherits( obj, "lm" ) ) stop("Not usable for non-(g)lm objects") if( !inherits( obj, "glm" ) & inherits( obj, "lm" ) ) return( predict.lm( obj, newdata=newdata, interval="confidence" ) ) # get the prediction and se on the link scale else { zz <- predict( obj, newdata=newdata, se.fit=TRUE, type="link" ) # compute ci on link scale zz <- cbind( zz$fit, zz$se.fit ) %*% ci.mat( alpha=alpha ) # transform as requested if( missing(Exp) ) { return( obj$family$linkinv(zz) ) } else { if( Exp ) { return( exp(zz) ) } else if( !Exp ) return( zz ) } } } # Function to calculate RR with CIs from independent rates with CIs; # r1 and r2 are assumed to be vectors or 2 or 3-column matrices with # rate, lower and upper confidence limits repectively. ci.ratio <- function( r1, r2, se1 = NULL, # standard error of rt1 se2 = NULL, # standard error of rt2 log.tr = !is.null(se1) & !is.null(se2), # is this log-rates? alpha = 0.05, pval = FALSE ) { if( is.data.frame(r1) ) r1 <- as.matrix( r1 ) if( is.data.frame(r2) ) r2 <- as.matrix( r2 ) if( is.matrix(r1) & !is.null(se1) ) warning("r1 is matrix, se1 is ignored") if( is.matrix(r2) & !is.null(se2) ) warning("r2 is matrix, se2 is ignored") # if supplied as 1-column matrix change to vector if( is.matrix(r1) ) if( ncol(r1)==1 ) r1 <- as.vector( r1 ) if( is.matrix(r2) ) if( ncol(r2)==1 ) r2 <- as.vector( r2 ) # move to log scale if( !log.tr ) { r1 <- log( r1 ) r2 <- log( r2 ) } # how wide are the condidence intervals if( is.matrix(r1) ) if( ncol(r1)>1 ) rg1 <- t( apply(r1,1,range) ) if( is.matrix(r2) ) if( ncol(r2)>1 ) rg2 <- t( apply(r2,1,range) ) # get the estimates on the log-scale R1 <- if( is.matrix(r1) ) apply( rg1, 1, mean ) else r1 R2 <- if( is.matrix(r2) ) apply( rg2, 1, mean ) else r2 if( is.null(se1) ) se1 <- apply( rg1, 1, diff ) / (2*qnorm(1-alpha/2)) if( is.null(se2) ) se2 <- apply( rg2, 1, diff ) / (2*qnorm(1-alpha/2)) # compute the RR and the c.i. and optionally the p-value lrr <- R1 - R2 slrr <- sqrt( se1^2 + se2^2 ) rr <- cbind(lrr,slrr) %*% ci.mat(alpha=alpha) if( !log.tr ) rr <- exp( rr ) if( pval ) return( cbind( rr, 1-pchisq( (lrr/slrr)^2, 1 ) ) ) else return( rr ) } Epi/R/Pplot.R0000644000175100001440000000346512531361077012444 0ustar hornikusersPplot <- function( rates, age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, p.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), p.lim = range( per, na.rm=TRUE ) + c(0,diff(range(per))/30), ylim = range( rates[rates>0], na.rm=TRUE ), p.lab = names( dimnames( rates ) )[2], ylab = deparse( substitute( rates ) ), at = NULL, labels = paste( at ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, ann = FALSE, cex.ann = 0.8, xannx = 1/20, a.thin = seq( 1, length( age ), 2 ), ... ) { # Plot the frame if( ann ) p.lim <- p.lim + c(0,diff( range( age ) ) * xannx ) matplot( per, t(rates), type="n", xlim=p.lim, ylim=ylim, xlab=p.lab, ylab=ylab, log=log.ax, las=las, yaxt=if( !is.null( at ) ) "n" else "s" ) if( !is.null( at ) ) axis( side=2, at=at, labels=labels, yaxt="s", las=las ) # and the grid if required if( !missing( p.grid ) | !missing( grid ) ) { if( is.logical( p.grid ) & p.grid[1] ) p.grid <- nice( per, log=par("xlog") ) abline( v=p.grid, col=col.grid ) } if( !missing( ygrid ) | !missing( ygrid ) ) { if( is.logical( ygrid ) & ygrid[1] ) ygrid <- nice( rates[!is.na(rates)], log=par("ylog") ) abline( h=ygrid, col=col.grid ) } box() # then the curves matlines( per, t(rates), lwd=lwd, lty=lty, col=col, type=type, ... ) # annotate them if required (every second by default ) if( ann ) { nr <- nrow( rates ) nc <- ncol( rates ) text( rep( per[nc], nr )[a.thin], rates[,nc][a.thin], paste( "", age[a.thin] ), adj=c(0,0.5), cex=cex.ann, col=if( length(col)==1 ) col else col[a.thin] ) } } Epi/R/float.R0000644000175100001440000000666612531361077012461 0ustar hornikusers"float" <- function(object, factor, iter.max = 50) { float.variance <- function(V, tol=1.0e-3, iter.max = 50) { ## Calculate floated variances for variance matrix V, which is ## assumed to represent a set of treatment contrasts m <- nrow(V) if (!is.matrix(V) || ncol(V) != m || m == 1) stop ("V must be a square matrix of size 2 x 2 or more") evals <- eigen(V, only.values=TRUE)$values if(any(evals < 0)) stop("V not positive definite") ## Starting values from Easton et al (1991) R <- V - diag(diag(V)) V00 <- sum(R)/(m * (m-1)) V10 <- apply(R, 1, sum)/(m-1) fv <- c(V00, V00 - 2 * V10 + diag(V)) for(iter in 1:iter.max) { w <- 1/fv S <- sum(w) w1 <- w[-1]/S ##Augment data matrix V10 <- as.vector(V %*% w1) V00 <- as.vector(1/S + t(w1) %*% V %*% w1) ##Calculate new estimates fv.old <- fv fv <- c(V00, V00 - 2 * V10 + diag(V)) ## Check convergence if(max(abs(fv.old - fv)/fv) < tol) break } if (iter == iter.max) warning("Floated variance estimates did not converge") Vmodel.inv <- S * (diag(w1) - w1 %*% t(w1)) evals <- 1/(eigen(V %*% Vmodel.inv, only.values=TRUE)$values) divergence <- sum(1/evals - 1 + log(evals))/2 return(list(variance=fv, error.limits=sqrt(range(evals)), divergence=divergence)) } if (is.null(object$xlevels)) { stop("No factors in model") } if (missing(factor)) { i <- 1 factor <- names(object$xlevels)[1] } else { i <- pmatch(factor, names(object$xlevels)) if (is.na(i)) { stop(paste("Factor",i,"not found in model")) } } xcontrasts <- object$contrasts[[i]] xlevels <- object$xlevels[[i]] xname <- names(object$xlevels)[i] nlevels <- length(xlevels) ## Extract the coefficients and variance matrix for a single factor ## from object if (nlevels <= 2) { stop ("Floated variances undefined for factors with less than 3 levels") } ## Get contrast matrix C <- if (is.matrix(xcontrasts)) { xcontrasts } else { get(xcontrasts, mode="function")(xlevels) } if (qr(C)$rank < nlevels - 1) { stop ("Impossible to reconstruct treatment contrasts") } ## Get coefficients and variance matrix if(is.null(cnames <- colnames(C))) cnames <- 1:(nlevels-1) contr.names <- paste(xname, cnames, sep="") coef <- coef(object)[contr.names] V <- vcov(object)[contr.names, contr.names] ## Convert to treatment contrast parameterization if (identical(xcontrasts, "contr.treatment")) { V.tc <- V coef.tc <- c(0, coef) } else { D.inv <- cbind(rep(-1,nlevels-1), diag(nlevels-1)) S <- D.inv %*% cbind(rep(1, nlevels), C) S <- S[,-1] ## coefficients coef.tc <- c(0, S %*% coef) ## If we find a baseline level (implicitly defined ## by having a row of zeros in the contrast matrix) ## then adjust the coefficients is.base <- apply(abs(C), 1, sum) == 0 if (any(is.base)) coef.tc <- coef.tc - coef.tc[is.base] ## variance matrix V.tc <- S %*% V %*% t(S) } names(coef.tc) <- xlevels float.out <- float.variance(V.tc, iter.max = iter.max) var <- float.out$var names(var) <- xlevels ans <- list(coef=coef.tc, var=var, limits=float.out$error.limits, factor=factor) class(ans) <- "floated" return(ans) } Epi/R/rm.tr.R0000644000175100001440000000274112743677240012413 0ustar hornikusersrm.tr <- function( obj, from, to ) { # checks if( from==to) stop( "Don't be silly, 'from' and 'to' are identical." ) if( !(from %in% levels(obj) ) ) stop( "'from' not a state in the object." ) if( !( to %in% levels(obj) ) ) stop( " 'to' not a state in the object." ) ### These things do not change over the purging iterations # Sort the rows of the object and count them obj <- obj[order(obj$lex.id,obj[,timeScales(obj)[1]]),] nrw <- nrow( obj ) # First obs for each person no1 <- !duplicated( obj$lex.id ) wh1 <- which( no1 ) ### Utility function doing the work inside the loop purge.one <- function( obj, from, to, nrw, wh1 ) { # Where are the illegal transitions chX <- ( paste( obj$lex.Cst, obj$lex.Xst ) == paste( from, to ) ) whX <- which( chX ) if( length(whX)>0 ) { # Change lex.Xst in this record obj$lex.Xst[whX] <- obj$lex.Cst[whX] # and lex.Cst in next record, but only if it is not a new person whX <- setdiff( whX[whX% sortLexis %>% select(-c(lex.dur, lex.Xst, lex.Cst)) ) # re-order the columns whLx <- c("lex.id", tscal, state) Lmsm <- Lmsm[,c(whLx, setdiff(names(Lmsm), whLx))] # fix the attributes cls <- attr(Lmsm, "class") cls[cls == "Lexis"] <- "msmLexis" attr(Lmsm, "class") <- cls attr(Lmsm, "breaks") <- NULL # tell what has been going on if (verbose) cat("Object with state occupied at time points", "on the time scales:\n", tscal, "\n") Lmsm } Epi/R/Wald.R0000644000175100001440000000100413247120321012206 0ustar hornikusersWald <- function( obj, H0=0, ... ) { rl <- ci.lin( obj, ..., vcov=TRUE ) beta <- rl$coef vcov <- rl$vcov if( missing( H0 ) ) H0 <- beta*0 if( length(H0) != length(beta) ) stop( "H0 has length ", length(H0), " but the set of selected parameters has length ", length(beta), ":\n", paste(round(beta,options()[["digits"]]),collapse=" ") ) chi <- t( beta-H0 ) %*% solve( vcov, beta-H0 ) df <- length(beta) p <- 1 - pchisq( chi, df ) c( "Chisq"=chi, "d.f."=df, "P"=p ) } Epi/R/detrend.R0000644000175100001440000000263013440771623012766 0ustar hornikusersthinCol <- function( A, tol = 1e-06, col.num=FALSE ) { # Remove linearly dependent columns from a matrix QR <- qr(A, tol = tol, LAPACK = FALSE) # what columns are linearly dependen on the previous whCol <- QR$pivot[seq(length = QR$rank)] # return only numbers of dependent columns if required if( col.num ) return( whCol ) A[, whCol, drop = FALSE] } in.span <- inSpan <- function( A, x, coef=FALSE, tol=1e-8 ) { if( is.vector(x) ) dim(x) <- c(length(x),1) if( nrow(A)!=nrow(x) ) stop("Matrices must have same row dimension") # Check if x is in span(A) using regression xcf <- NULL insp <- TRUE for( i in 1:ncol(x) ) { mod <- lm( x[,i] ~ A - 1 ) insp <- insp & ( all( abs(mod$residuals)=sum( x*w*y). # Avoids computing the entire projection matrix # X %*% inverse( X'WX ) %*% (XW)' by first computing # inverse( X'WX ) %*% (XW)'M # (which is (p x p) %*% (p x n) %*% (n x k), i.e. (p x k) ) # and then premultiplying X (n x p) hence avoiding making # a n x n matrix underway (note that n is large, p is small). # Note multiplication by W (diagional matrix) is done by # vector multiplication using the recycling facility of R. { if( nrow(X) != length(weight) ) stop( "Dimension of space and length of weights differ!" ) if( nrow(X) != nrow(M) ) stop( "Dimension of space and rownumber of model matrix differ!" ) Pp <- solve( crossprod( X * sqrt(weight) ), t( X * weight ) ) %*% M PM <- X %*% Pp if (orth) PM <- M - PM else PM } Epi/R/bootLexis.R0000644000175100001440000000444413340467163013316 0ustar hornikusers# The method nid <- function ( Lx, ... ) UseMethod("nid") nid.default <- nid.Lexis <- function( Lx, by=NULL, ... ) { if( !is.null(by) ) { if( !(by %in% names(Lx)) ) stop( "'by' must be the name of a variable in Lx" ) if( !is.factor(Lx[,by]) ) Lx[,by] <- factor(Lx[,by]) } if( is.null(by) ) length( unique( Lx$lex.id ) ) else sapply( split( Lx, Lx[,by] ), nid.Lexis ) } # Make a boostrap sample of a Lexis object: # Sample the *persons* with replacement, possibly sampling within levels of by= bootLexis <- function( Lx, size = NULL, by = NULL, replace = TRUE ) { if( !inherits( Lx, "Lexis" ) ) stop("Only meaningful for Lexis objects.") isDT <- inherits( Lx, "data.table" ) if( isDT ) class( Lx ) <- c("Lexis","data.frame") # determine size of the bootstrap samples if not given if( is.null( size ) ) size <- nid.Lexis( Lx, by = by ) # allowing for a length 1 x-vector REsample <- function(x,sz) x[sample.int(length(x),size=sz,replace=replace)] if( is.null(by) ) { # Simple bootstrap bLx <- subid.Lexis( Lx, REsample( unique(Lx$lex.id), size ) ) } else { # Bootstrap by groups bLx <- NULL spL <- split( Lx, Lx[,by] ) for( i in 1:length(spL) ) { bLx <- rbind( bLx, cbind( bootLexis( spL[[i]], size = size[i] ), bgr = paste(i) ) ) } bLx$lex.id <- as.integer( interaction(bLx$lex.id,bLx$bgr) ) bLx <- bLx[,-grep("bgr",names(bLx))] } # return the result after converting to data.table if needed if( isDT ) class( bLx ) <- c("Lexis","data.table","data.frame") bLx } # A utility function that returns a Lexis object subsetted to a set of # lex.ids, allowing for repeat values of lex.id subid.Lexis <- function( Lx, ids ) { tt <- table( ids ) bLx <- NULL max.id <- 0 for( j in 1:max(tt) ) { # avoid note about no visible binding wh <- NULL lex.id <- NULL # who appears at least j times in the sample ? wh <<- names(tt[tt>=j]) sb <- subset( Lx, lex.id %in% wh ) # remember their original id sb$old.id <- sb$lex.id # to assure that different samples of the same person has different lex.id sb$lex.id <- sb$lex.id + max.id max.id <- max( sb$lex.id ) bLx <- rbind( bLx, sb ) } # Generate new lex.ids in the order 1:N bLx$lex.id <- as.integer( factor(bLx$lex.id) ) bLx } Epi/R/expand.data.r0000644000175100001440000000436212531361077013572 0ustar hornikusersexpand.data <- function(fu, formula, breaks, data) { Nsubject <- nrow(fu) ## The model matrix to be merged up to the expanded data if (!missing(formula)) { covariate.frame <- data.frame(model.matrix(formula,data)[,-1]) cov.names <- names(covariate.frame) covariate.frame$id <- 1:Nsubject } else { covariate.frame <- NULL cov.names <- character(0) } ## 1-responses for the survival intervals Nbreak <- length(breaks) ILENGTH <- function(x) { pmax(pmin(x[2], breaks[-1]) - pmax(x[1], breaks[-Nbreak]), 0) } well.mat <- -matrix(apply(fu[,c(1,2), drop=FALSE], 1, ILENGTH), nrow=Nbreak-1) ## For the sake of the stability of the fitting procedure, each record ## with a 1-response is further split into separate records for each ## follow-up interval: id.vec <- c(diag(Nbreak-1)) well.mat <- matrix(apply(well.mat, 2, "*", id.vec), nrow=Nbreak-1) well.id <- rep(1:Nsubject, each=Nbreak-1) valid.cols <- apply(well.mat!=0, 2, any) well.mat <- well.mat[,valid.cols, drop=FALSE] #Remove cols that are all zero well.id <- well.id[valid.cols] ## 0-responses for the event intervals is.case <- !is.na(fu[,3]) # Observed to become ill fu.cases <- subset(fu, is.case) ill.mat <- -matrix(apply(fu.cases[,c(2,3), drop=FALSE], 1, ILENGTH), nrow=Nbreak-1) ill.id <- which(is.case) ## The dataframe for analysis is one observation per survival interval ## (well.mat) and one per event interval (ill.mat): rates.frame <- as.data.frame(t(cbind(well.mat, ill.mat))) rates.names <- paste("(", breaks[-Nbreak],",",breaks[-1],")", sep="") names(rates.frame) <- rates.names rates.frame$y <- rep(c(1,0), c(ncol(well.mat), ncol(ill.mat))) rates.frame$id <- c(well.id, ill.id) ## Merge the covariates on to the model matrix for the baseline if (!is.null(covariate.frame)) { model.frame <- merge(rates.frame, covariate.frame, by="id") } else { model.frame <- rates.frame } model.frame[["id"]] <- NULL #Remove id variable return( list( rates.frame = model.frame[,rates.names, drop=FALSE], cov.frame = model.frame[, cov.names, drop=FALSE], y = model.frame[, "y", drop=TRUE ] ) ) } Epi/R/as.Date.cal.yr.R0000644000175100001440000000014312531361077014002 0ustar hornikusersas.Date.cal.yr <- function( x, ... ) { structure( round( ( x - 1970 ) * 365.25 ), class="Date" ) } Epi/R/ci.mat.R0000644000175100001440000000045012531361077012510 0ustar hornikusersci.mat <- function( alpha=0.05, df=Inf ) { ciM <- rbind( c(1,1,1), qt(1-alpha/2,df)*c(0,-1,1) ) colnames( ciM ) <- c("Estimate", paste( formatC( 100* alpha/2 , format="f", digits=1 ), "%", sep="" ), paste( formatC( 100*(1-alpha/2), format="f", digits=1 ), "%", sep="" ) ) ciM } Epi/R/fit.mult.r0000644000175100001440000000260212531361077013140 0ustar hornikusersfit.mult <- function(y, rates.frame, cov.frame, start) { if (missing(start)) { ## Fit model without covariates to get initial rates estimates glm.out.rates <- fit.baseline(y, rates.frame) ## Initial values for iterative fitting lambda <- coef(glm.out.rates) beta <- rep(0, ncol(cov.frame)) } else { lambda <- start[1:ncol(rates.frame)] beta <- start[ncol(rates.frame) + 1:ncol(cov.frame)] } niter <- 1 cy <- 1 - y while(TRUE) { ## covariates model off <- log(-as.matrix(rates.frame) %*% lambda) glm.out.cov <- glm(cy ~ -1 + offset(off) + ., family=binomial(link=cloglog), data=cov.frame, start=beta, maxit=100) beta <- coef(glm.out.cov) ## rates model wgt <- exp(as.matrix(cov.frame) %*% beta) temp.rates.frame <- wgt * rates.frame glm.out.rates <- glm(y ~ -1 + ., family=binomial(link=log), data=temp.rates.frame, start=lambda, maxit=100) lambda <- coef(glm.out.rates) ## Check convergence ## Convergence <==> deviances are equal TOL <- max(glm.out.cov$control$epsilon, glm.out.rates$control$epsilon) dev1 <- glm.out.cov$deviance dev2 <- glm.out.rates$deviance if (abs(dev1 - dev2)/(0.1 + abs(dev1)) < TOL) break else niter <- niter + 1 } return(list( rates=glm.out.rates, cov=glm.out.cov, niter=niter)) } Epi/R/contr.cum.R0000644000175100001440000000056612531361077013255 0ustar hornikuserscontr.cum <- function(n) { if (is.numeric(n) && length(n) == 1) levs <- 1:n else { levs <- n n <- length(n) } contr <- array(0, c(n, n), list(levs, levs)) contr[col(contr) <= row(contr)] <- 1 if (n < 2) stop(paste("Contrasts not defined for", n - 1, "degrees of freedom")) contr <- contr[, -1, drop = FALSE] contr } Epi/R/print.Icens.r0000644000175100001440000000020012531361077013562 0ustar hornikusersprint.Icens <- function( x, digits=4, scale=1, ... ) { emat <- summary.Icens( x, scale=scale ) print( round( emat, digits ) ) } Epi/R/plotevent.r0000644000175100001440000000217112531361077013417 0ustar hornikusersplotevent <- function(last.well,first.ill,data) { subsetdata <- data[!is.na(data[,first.ill]),c(last.well,first.ill)] subsetdata$n <- seq(1,dim(subsetdata)[1]) plot(c(subsetdata[,1], subsetdata[,2]),rep(0,2*nrow(subsetdata)), bty="n", yaxt="n", type="n", xlim=c(round(min(subsetdata[,1],subsetdata[,2],na.rm=T)),round(max(subsetdata[,1],subsetdata[,2],na.rm=T))), ylim=c(-2, max(subsetdata[,3])), xlab="Time",ylab="Conversions", main=paste("Times between ",last.well," and ",first.ill,"",sep="")) mtext(seq(0,nrow(subsetdata),5)[-1],side=2,at=seq(0,nrow(subsetdata),5)[-1],las=1,line=0) mtext("Eq Cl",side=2,at=-2,las=1, padj=0,col="blue",font=2) segments(subsetdata[,1],subsetdata[,3],subsetdata[,2],subsetdata[,3],lwd=1) left <- unique(subsetdata[,1]) right <- unique(subsetdata[,2]) names(left) <- rep("0",length(left)) names(right) <- rep("1",length(right)) MM <- sort(c(left,right)) type <- as.numeric(names(MM)) type2 <- c(type[-1],0) diff <- type-type2 int <- MM[diff<0|diff>0] mat <- matrix(int,length(int)/2,2,byrow=TRUE) d <- mat[,1] - mat[,2] segments(mat[,1][d!=0],-2,mat[,2][d!=0],-2,lwd=3,col="blue") } Epi/R/erl.R0000644000175100001440000001541113673706023012124 0ustar hornikuserserl <- function( int, muW, muD, lam = NULL, age.in = 0, A = NULL, immune = is.null(lam), yll = TRUE, note = TRUE ) { # Computes expected residual life time for Well and Dis states # respectively in an illness-death model, optionally ignoring # the well->ill transition # Utility to integrate a survival function from the last point where # it is 1, assuming points are 1 apart trsum <- function( x ) { x[c(diff(x)==0,TRUE)] <- NA sum( ( x[-length(x)] + x[-1] ) / 2, na.rm=TRUE ) } # Check sensibility if( !immune & is.null(lam) ) stop( "'lam' is required when immune=FALSE\n" ) # Replace NAs with 0s if( !is.null(lam) ) { if( any(is.na(lam)) ){ lam[is.na(lam)] <- 0 ; warning("NAs in agument 'lam' set to 0") } } if( any(is.na(muD)) ){ muD[is.na(muD)] <- 0 ; warning("NAs in agument 'muD' set to 0") } if( any(is.na(muW)) ){ muW[is.na(muW)] <- 0 ; warning("NAs in agument 'muW' set to 0") } # Survival functions sD <- surv1( int=int, muD, age.in = age.in, A = A ) if( immune ) sW <- surv1( int=int, muW, age.in = age.in, A = A ) else sW <- surv2( int=int, muW, muD, lam, age.in = age.in, A = A ) # Area under the survival functions erl <- cbind( apply( sW[,-1], 2, trsum ), apply( sD[,-1], 2, trsum ) ) * int colnames( erl ) <- c("Well","Dis") rownames( erl ) <- colnames( sW )[-1] # Should we compute years of life lost? if( yll ) erl <- cbind( erl, YLL = erl[,"Well"] - erl[,"Dis"] ) # Cautionary note if( immune ) { attr( erl, "NOTE" ) <- "Calculations assume that Well persons cannot get Ill (quite silly!)." if( note ) cat("NOTE:", attr( erl, "NOTE" ), "\n" ) } return( erl ) } # yll is just a simple wrapper for erl, only selecting the YLL column. yll <- function( int, muW, muD, lam = NULL, age.in = 0, A = NULL, immune = is.null(lam), note = TRUE ) erl( int = int, muW = muW, muD = muD, lam = lam, age.in = age.in, A = A, immune = immune, yll = TRUE, note = note )[,"YLL"] surv1 <- function( int, mu, age.in=0, A=NULL ) { # Computes the survival function from age A till the end, assuming # that mu is a vector of mortalities in intervals of length int. # int and mu should be in compatible units that is T and T^-1 for # some unit T (months, years, ...) # impute 0s for NAs if( any(is.na(mu)) ){ mu[is.na(mu)] <- 0 ; warning("NAs in agument 'mu' set to 0") } # age-class boundaries age <- 0:length(mu)*int + age.in # cumulative rates and survival at the boundaries Mu <- c( 0, cumsum( mu )*int ) Sv <- exp( -Mu ) surv <- data.frame( age=age, surv=Sv ) # if a vector of conditioning ages A is given if( cond <- !is.null(A) ) { j <- 0 # actual conditioning ages cage <- NULL for( ia in A ) { j <- j+1 # Where is the age we condition on cA <- which( diff(age>ia)==1 ) # survival up to condtioning age is set to 1 surv <- cbind( surv, pmin( 1, surv$surv/(surv$surv[cA]) ) ) cage[j] <- surv$age[cA] } } names( surv )[-1] <- paste( "A", c( age.in, if( cond ) cage else NULL ), sep="" ) rownames( surv ) <- NULL return( surv ) } erl1 <- function( int, mu, age.in = 0 ) { # Computes expected residual life time at all ages age <- 0:length(mu)*int + age.in # Small utility: cumulative cumulative sum from the end of a vector musmuc <- function( x ) rev( cumsum( rev(x) ) ) # The survival function with a 0 at end, and the integral from the upper end surv <- surv1( int = int, mu = mu, age.in = age.in )[,2] cbind( age = age, surv = surv, erl = c( musmuc( ( surv[-1]-diff(surv)/2 ) ) / surv[-length(surv)], 0 ) * int ) } surv2 <- function( int, muW, muD, lam, age.in=0, A=NULL ) { # check the vectors if( length(muW) != length(muD) | length(muD) != length(lam) ) stop( "Vectors with rates must have same length:\n", "length(muW)=", length(muW), ", length(muD)=", length(muD), ", length(lam)=", length(lam) ) # Replace NAs with 0s if( !is.null(lam) ) { if( any(is.na(lam)) ){ lam[is.na(lam)] <- 0 ; warning("NAs in agument 'lam' set to 0") } } if( any(is.na(muD)) ){ muD[is.na(muD)] <- 0 ; warning("NAs in agument 'muD' set to 0") } if( any(is.na(muW)) ){ muW[is.na(muW)] <- 0 ; warning("NAs in agument 'muW' set to 0") } # First the workhorse that computes the survival function for a # person in Well assuming that the mortality rate from this state is # muW, disease incidence is in lam, and mortality in the diseased # state is muD, and that all refer to constant rates intervals of # length int starting from age.in, conditional on survival to A wsurv2 <- function( int, muW, muD, lam, age.in=0, A=0 ) { # age-class boundaries - note one longer than rate vectors as it # refers to boundaries of intervals not midpoints age <- 0:length(muW)*int + age.in # cumulative rates at the boundaries, given survival to A MuW <- cumsum( c( 0, muW ) * ( age > A ) ) * int MuD <- cumsum( c( 0, muD ) * ( age > A ) ) * int Lam <- cumsum( c( 0, lam ) * ( age > A ) ) * int # probability of being well pW <- exp( -( Lam + MuW ) ) # probability of diagnosis at s --- first term in the integral for # P(DM at a). Note that we explicitly add a 0 at the start so we get a # probability of 0 of transition at the first age point Dis <- c(0,lam) * ( age > A ) * exp( -(Lam+MuW) ) * int # for each age (age[ia]) we compute the integral over the range # [0,age] of the product of the probability of diagnosis and the # probability of surviving from diagnosis till age ia pDM <- Dis * 0 for( ia in 1:length(age) ) pDM[ia] <- sum( Dis[1:ia] * exp( -(MuD[ia]-MuD[1:ia]) ) ) # 1st term as function of s (1:ia) # 2nd term integral over range s:age # upper integration limit is age (ia) and the lower # limit is the intermediate age (at DM) (1:ia) # Finally, we add the probabilities of being in Well resp. DM to get # the overall survival: surv <- data.frame( age = age, surv = pDM + pW ) return( surv ) } # survival from start surv <- wsurv2( int, muW, muD, lam, age.in=age.in, A=0 ) # add columns for conditioning ages if( !is.null(A) ) { for( j in 1:length(A) ) { surv <- cbind( surv, wsurv2( int, muW, muD, lam, age.in=age.in, A=A[j] )[,2] ) } } Al <- A for( i in 1:length(A) ) Al[i] <- max( surv$age[surv$age <= A[i]] ) colnames( surv )[-1] <- paste( "A", c( age.in, Al ), sep="" ) # done! return( surv ) } Epi/R/twoby2.R0000644000175100001440000000702013521223020012544 0ustar hornikuserstwoby2 <- function( exposure, outcome, alpha = 0.05, print = TRUE, dec = 4, conf.level = 1-alpha, F.lim = 10000 ) # What is the limit for trying the # Fisher.test { if( !missing( conf.level ) ) alpha <- 1 - conf.level if( inherits( exposure, c( "table", "matrix" ) ) ) tab <- exposure else tab <- table( exposure, outcome ) tab <- tab[1:2,1:2] a <- tab[1, 1] b <- tab[1, 2] c <- tab[2, 1] d <- tab[2, 2] bin.ci <- function( x, n ) { # Confidence interval for proportion based on Taylor-expansion of # the log-odds --- surprisingly good coverage. ef <- exp( qnorm(1-alpha/2)/sqrt(x*(n-x)/n) ) p <- x / n c( x/n, p/(p+(1-p)*ef), p/(p+(1-p)/ef) ) } rr <- (a/(a + b))/(c/(c + d)) se.log.rr <- sqrt((b/a)/(a + b) + (d/c)/(c + d)) lci.rr <- exp(log(rr) - qnorm( 1-alpha/2 ) * se.log.rr) uci.rr <- exp(log(rr) + qnorm( 1-alpha/2 ) * se.log.rr) or <- (a/b)/(c/d) se.log.or <- sqrt(1/a + 1/b + 1/c + 1/d) lci.or <- exp(log(or) - qnorm( 1-alpha/2 ) * se.log.or) uci.or <- exp(log(or) + qnorm( 1-alpha/2 ) * se.log.or) # Computing the c.i. for the probability difference as method # 10 from Newcombe, Stat.Med. 1998, 17, pp.873 ff. pr.dif <- ci.pd( a, c, b, d, alpha=alpha, print=FALSE )[5:7] pd <- pr.dif[1] lci.pd <- pr.dif[2] uci.pd <- pr.dif[3] as.pval <- 1 - pchisq( log( or )^2 / sum( 1/tab[1:2,1:2] ), 1 ) # If the numers are too large we don't bother about computing Fisher's test Fisher <- ( sum( tab ) < F.lim ) ft <- if( !Fisher ) NA else fisher.test( tab, conf.level=1-alpha ) # We need row and colum names for annotating the output if( is.null( rownames( tab ) ) ) rownames( tab ) <- paste( "Row", 1:2 ) if( is.null( colnames( tab ) ) ) colnames( tab ) <- paste( "Col", 1:2 ) tbl <- cbind( tab[1:2,1:2], rbind( bin.ci( a, a+b ), bin.ci( c, c+d ) ) ) colnames( tbl )[3:5] <- c(paste( " P(", colnames( tab )[1], ")", sep=""), paste( 100*(1-alpha),"% conf.", sep="" ), "interval") if( print ) cat("2 by 2 table analysis:", "\n------------------------------------------------------", "\nOutcome :", colnames( tab )[1], "\nComparing :", rownames( tab )[1], "vs.", rownames( tab )[2], "\n\n" ) if( print ) print( round( tbl, dec ) ) if( print ) cat( "\n" ) rmat <- rbind( c( rr, lci.rr, uci.rr ), c( or, lci.or, uci.or ), if( Fisher) c( ft$estimate, ft$conf.int ), c( pd, lci.pd, uci.pd ) ) rownames( rmat ) <- c(" Relative Risk:", " Sample Odds Ratio:", if( Fisher) "Conditional MLE Odds Ratio:", " Probability difference:") colnames( rmat ) <- c(" ", paste( 100*(1-alpha),"% conf.", sep="" ), "interval" ) if( print ) print( round( rmat, dec ) ) if( print ) cat( if( Fisher ) "\n Exact P-value:", if( Fisher ) formatC( ft$p.value, format="f", digits=dec ), "\n Asymptotic P-value:", formatC( as.pval, format="f", digits=dec ), "\n------------------------------------------------------\n") invisible( list( table = tbl, measures = rmat, p.value = c(as.pval,if( Fisher )ft$p.value) ) ) } Epi/R/coarse.Lexis.R0000644000175100001440000000357514044604600013700 0ustar hornikusers# Utility: which records can be merged with the next and still have # lex.dur < lim. Assumes that variable keep.rec is in Lx close2next <- function(Lx, lim) { if (length(lim) == 1) lim <- c(lim, 3 * lim) setdiff( with(Lx, which(lex.Cst == lex.Xst & lex.id == c(lex.id[-1], NA) & lex.dur < lim[1] & (lex.dur + c(lex.dur[-1], NA)) < lim[2])), which(Lx$keep.rec) - 1) } # Utility: merge records in wh with the records in wh+1 mergeWnext <- function(Lx, wh) { if (any(near(diff(wh), 1))) stop("consecutive 'wh's not allowed\n") Lx$lex.Xst[wh] <- Lx$lex.Xst[wh + 1] Lx$lex.dur[wh] <- Lx$lex.dur[wh] + Lx$lex.dur[wh + 1] Lx[-(wh + 1),] } # Utility: remove those indices that should not be used (i.e. merged # with the next one) by removing every other among consecutive indices thinWh <- function(wh) { dwh <- diff(c(-1, wh)) # difference between indices; any negative # number will work is1 <- near(dwh, 1) # those with a usable successor st1 <- near(diff(c(0, is1)), 1) # start of runs of 1 dfr <- data.frame(is1 = as.numeric(is1)) sq1 <- (group_by(dfr, cumsum(st1)) %>% mutate(z = cumsum(is1) * is1))$z # sq1 now has runs of 1s numbered 0,1,2,3, and stand alone numbers are # 0, so we just remove the components of wh with odd values of sq1: wh[(sq1 %% 2) != 1] } # Here is the function it's all about. coarse.Lexis <- function(Lx, # Lexis object lim, # limits for proximity keep = FALSE) # indicator of records not combine with any previous { if (length(keep) != 1 & length(keep) != nrow(Lx)) stop("keep must have length 1 or nrow(Lx)") Lx$keep.rec <- keep Lx <- sortLexis(Lx) wh <- close2next(Lx, lim = lim) while (length(wh > 0)) { wh <- thinWh(wh) Lx <- mergeWnext(Lx, wh) wh <- close2next(Lx, lim = lim) } Lx } Epi/R/contr.2nd.R0000644000175100001440000000037112531361077013146 0ustar hornikuserscontr.2nd <- function( n ) { if( is.numeric(n) && length(n) == 1 ) levs<- 1:n else { levs <- n n <- length(n) } if( n<3 ) stop( "Contrasts not defined for ", n-2, " degrees of freedom" ) outer( 1:n, 3:n-1, FUN=function(x,y) pmax( x-y, 0 ) ) } Epi/R/poisreg.R0000644000175100001440000000563013521051303012776 0ustar hornikuserspoisreg <- function (link = "log") { linktemp <- substitute(link) if (!is.character(linktemp)) linktemp <- deparse(linktemp) okLinks <- c("log", "identity", "sqrt") if (linktemp %in% okLinks) stats <- make.link(linktemp) else if (is.character(link)) { stats <- make.link(link) linktemp <- link } else { ## what else shall we allow? At least objects of class link-glm. if(inherits(link, "link-glm")) { stats <- link if(!is.null(stats$name)) linktemp <- stats$name } else { stop(gettextf('link "%s" not available for poisreg family; available links are %s', linktemp, paste(sQuote(okLinks), collapse =", ")), domain = NA) } } variance <- function(mu) mu validmu <- function(mu) all(is.finite(mu)) && all(mu>0) dev.resids <- function(y, mu, wt) { ## faster than 2 * wt * (y * log(ifelse(y == 0, 1, y/mu)) - (y - mu)) r <- mu*wt p <- which(y > 0) r[p] <- (wt * (y*log(y/mu) - (y - mu)))[p] 2*r } aic <- function(y, n, mu, wt, dev) { -2*sum(ifelse(n > 0, (wt/n), 0)*dpois(round(y*n), mu*n, log=TRUE)) } initialize <- expression({ if (NCOL(y) == 1) { n <- rep.int(1, nobs) y[weights == 0] <- 0 if (any(y < 0)) { stop("y values must be >= 0") } m <- weights * y if (any(abs(m - round(m)) > 0.001)) { warning("non-integer #successes in poisreg glm!") } mustart <- m + 0.1 } else if (NCOL(y) == 2) { if (any(y[,1] < 0)) { stop("negative values not allowed for the 'poisreg' family") } if (any(y[,2] < 0)) { stop("negative time not allowed for the 'poisreg' family") } if(any(y[,1] > 0 & y[,2] == 0)) { stop("non-zero counts in zero time in a poisreg glm!") } if(any(abs(y[,1] - round(y[,1])) > 1e-3)) { warning("non-integer counts in a poisreg glm!") } n <- y[,2] y <- ifelse(n == 0, 0, y[, 1]/n) weights <- weights * n mustart <- y + 0.1 } else { stop("for the 'poisreg' family, y must be a 2 column matrix where col 1 is no. events and col 2 is time") } }) simfun <- function(object, nsim) { wts <- object$prior.weights ftd <- fitted(object) rpois(nsim*length(ftd), ftd*wts) } structure(list(family = "poisson", ##Fool summary.glm link = linktemp, linkfun = stats$linkfun, linkinv = stats$linkinv, variance = variance, dev.resids = dev.resids, aic = aic, mu.eta = stats$mu.eta, initialize = initialize, validmu = validmu, valideta = stats$valideta, simulate = simfun), class = "family") } Epi/R/Ns.r0000644000175100001440000001412113252222304011743 0ustar hornikusers# ------------------------------------------------------------- # extension of ns() from splines, to allow for clamping. ns.ld <- function(x, df = NULL, knots = NULL, intercept = FALSE, Boundary.knots = range(x), fixsl=c(FALSE,FALSE) ) { nx <- names(x) x <- as.vector(x) nax <- is.na(x) if(nas <- any(nax)) x <- x[!nax] if(!missing(Boundary.knots)) { if( length(Boundary.knots)!=2 ) stop( "Argument 'Boundary.knots' must, when provided, have length 2" ) Boundary.knots <- sort(Boundary.knots) outside <- (ol <- x < Boundary.knots[1L]) | (or <- x > Boundary.knots[2L]) } else outside <- FALSE if(!missing(df) && missing(knots)) { ## df = number(interior knots) + 1 + intercept nIknots <- df - 1 - intercept if(nIknots < 0) { nIknots <- 0 warning("'df' was too small; have used ", 1 + intercept) } knots <- if(nIknots > 0) { knots <- seq.int(0, 1, length.out = nIknots + 2L)[-c(1L, nIknots + 2L)] stats::quantile(x[!outside], knots) } ## else NULL } else nIknots <- length(knots) Aknots <- sort(c(rep(Boundary.knots, 4L), knots)) if(any(outside)) { basis <- array(0, c(length(x), nIknots + 4L)) if(any(ol)) { k.pivot <- Boundary.knots[1L] xl <- cbind(1, x[ol] - k.pivot) tt <- splines::spline.des(Aknots, rep(k.pivot, 2L), 4, c(0, 1))$design basis[ol, ] <- xl %*% tt } if(any(or)) { k.pivot <- Boundary.knots[2L] xr <- cbind(1, x[or] - k.pivot) tt <- splines::spline.des(Aknots, rep(k.pivot, 2L), 4, c(0, 1))$design basis[or, ] <- xr %*% tt } if(any(inside <- !outside)) basis[inside, ] <- splines::spline.des(Aknots, x[inside], 4)$design } else basis <- splines::spline.des(Aknots, x, 4)$design # Fix the clamping if( !is.logical(fixsl) ) warning( "fixsl elements must be of mode logical" ) # Only the 4th parameter affected, should be either 1 or 2 in the two positions const <- splines::spline.des( Aknots, Boundary.knots, 4, c(2-fixsl[1],2-fixsl[2]) )$design if(!intercept) { const <- const[, -1 , drop = FALSE] basis <- basis[, -1 , drop = FALSE] } qr.const <- qr(t(const)) basis <- as.matrix((t(qr.qty(qr.const, t(basis))))[, - (1L:2L), drop = FALSE]) n.col <- ncol(basis) if(nas) { nmat <- matrix(NA, length(nax), n.col) nmat[!nax, ] <- basis basis <- nmat } dimnames(basis) <- list(nx, 1L:n.col) a <- list(degree = 3, knots = if(is.null(knots)) numeric(0) else knots, Boundary.knots = Boundary.knots, intercept = intercept) attributes(basis) <- c(attributes(basis), a) class(basis) <- c("cns", "basis", "matrix") basis } #------------------------------------------------------------------------------- # An extension of ns that automatically takes the smallest and largest knots # as boundary knots without further ado, but also allows centering # around a reference and detrending by means of projection, as well as # clamping. Ns <- function( x, ref = NULL, df = NULL, knots = NULL, intercept = FALSE, Boundary.knots = NULL, fixsl = c(FALSE,FALSE), detrend = FALSE ) { ## Check sensibility of arguments if( !is.null(ref) ) { if( !is.vector(ref) ) stop( "Argument 'ref' must be a scalar, but it is a ", class(ref), "." ) if( is.vector(ref) & length(ref)>1 ) stop( "Argument 'ref' must be a scalar, but has length ", length(ref), "." ) if( intercept ) { warning( "ref= specified, hence intercept=TRUE is ignored") intercept <- FALSE } } ## Detrending required? if( any(detrend>0) ) { # covers both logical and vector if( any(detrend<0) ) stop( "Some elements of weight are <0, e.g. no", (ww <- which(detrend<0))[1:min(5,length(ww))], "." ) if( !(length(detrend) %in% c(1,length(x))) ) { warning( "Weights in inner product diagonal matrix set to 1") weight <- rep(1,length(x)) } else weight <- if( is.numeric(detrend) ) detrend else rep(1,length(x)) detrend <- TRUE } if( detrend & intercept ) { warning( "detrend= specified, hence intercept=TRUE is ignored") intercept <- FALSE } if( detrend & any(fixsl) ) { warning( "detrend= specified, hence fixsl argument is ignored") fixsl=c(FALSE,FALSE) } ## Here is the specification of the spline basis ## knots= specified if( !is.null( knots ) ) { if( is.null( Boundary.knots ) ) { if( !is.null( knots ) ) { knots <- sort( unique( knots ) ) ok <- c(1,length(knots)) Boundary.knots <- knots[ok] knots <- knots[-ok] } } MM <- ns.ld( x, knots = knots, Boundary.knots = Boundary.knots, intercept = (intercept & is.null(ref)), fixsl = fixsl ) if( !is.null(df) ) cat("NOTE: Both knots= and df= specified, df ignored") } ## df= specified if( is.null( knots ) & !is.null( df ) ) MM <- ns.ld( x, df = df, intercept = (intercept & is.null(ref)), fixsl = fixsl ) ## Reference point specified ? if( !is.null(ref) ) { MM <- MM - ns.ld( rep(ref,length(x)), knots = attr(MM,"knots"), Boundary.knots = attr(MM,"Boundary.knots"), fixsl = fixsl ) } ## Detrending required ? if( detrend ) { DD <- detrend( MM, x, weight=weight ) ## NOTE: detrend does not preserve attributes for( aa in c("degree","knots","Boundary.knots","intercept","class") ) attr( DD, aa ) <- attr( MM, aa ) attr( DD, "detrend" ) <- TRUE attr( DD, "proj.wt" ) <- weight MM <- DD } return( MM ) } Epi/R/Cplot.R0000644000175100001440000000514312705663505012426 0ustar hornikusersCplot <- function( rates, age = as.numeric( rownames( rates ) ), per = as.numeric( colnames( rates ) ), grid = FALSE, c.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), c.lim = NULL, ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), c.lab = names( dimnames( rates ) )[2], ylab = deparse( substitute( rates ) ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, xannx = 1/20, ann = FALSE, cex.ann = 0.8, a.thin = seq( 1, length( age ), 2 ), ... ) { # Convert the age-period table to an age-cohort table rt <- as.table( rates ) dimnames( rt ) <- list( age = age, per = per ) rtf <- data.frame( rt ) rtf$age <- as.numeric( as.character( rtf$age ) ) rtf$per <- as.numeric( as.character( rtf$per ) ) # Check that age and period classe have equal lengths: wa <- diff( ag <- sort( unique(rtf$age) ) ) wp <- diff( pg <- sort( unique(rtf$per) ) ) if( unique(wa) != unique(wp) ) stop("Age and period intervals must have same width:\n", "Ages:", ag, "\n", "Periods:", pg, "\n", "No plot with cohort produced.\n" ) # Table by age and cohort ac <- tapply( rtf$Freq, list( rtf$age, rtf$per-rtf$age ), mean ) coh <- as.numeric( colnames( ac ) ) if( is.null( c.lim ) ) c.lim <- range( coh, na.rm=TRUE ) + c(0,diff( range( coh ) )/30) * ann # Plot the frame if( ann ) c.lim <- c.lim - c(diff( range( coh ) ) * xannx,0) matplot( coh, t(ac), type="n", xlim=c.lim, ylim=ylim, xlab=c.lab, ylab=ylab, log=log.ax, las=las, yaxt=if( !is.null( at ) ) "n" else "s" ) if( !is.null( at ) ) axis( side=2, at=at, labels=labels, yaxt="s", las=las ) # and the grid if required if( !missing( c.grid ) | !missing( grid ) ) { if( is.logical( c.grid ) & c.grid[1] ) c.grid <- nice( coh, log=par("xlog") ) abline( v=c.grid, col=col.grid ) } if( !missing( ygrid ) | !missing( grid ) ) { if( is.logical( ygrid ) & ygrid[1] ) ygrid <- nice( rates[!is.na(rates)], log=par("ylog") ) abline( h=ygrid, col=col.grid ) } box() # then the curves matlines( coh, t(ac), lwd=lwd, lty=lty, col=col, type=type, ... ) # annotate them if required (every second by default ) if( ann ) { nr <- nrow( ac ) nc <- ncol( ac ) # Find the cohorts for the last rates in each age-class c.end <- rev( per )[1] - age text( c.end[a.thin], rates[,ncol(rates)][a.thin], paste( "", age[a.thin] ), adj=c(0,0.5), cex=cex.ann, col=if( length(col)==1 ) col else col[a.thin] ) } } Epi/R/crr.Lexis.r0000644000175100001440000000253012777350201013246 0ustar hornikuserscrr.Lexis <- function( obj, mod, quiet=FALSE, ... ) { # Model formula to be transmitted md <- mod # Outcome variable fc <- as.character( mod[2] ) # Censoring levels cn <- unique( as.character(obj$lex.Xst)[obj$lex.Xst==obj$lex.Cst] ) # The competing causes (the remaining levels) cc <- setdiff( levels(obj$lex.Xst), union(fc,cn) ) # No l.h.s. side of formula when deriving model matrix mod[2] <- NULL # Remember no intercept term cv <- model.matrix( mod, data=obj )[,-1] # Then do it M <- crr( ftime = obj$lex.dur, fstatus = obj$lex.Xst, failcode = fc, cencode = cn, cov1 = cv, ... ) # A table of the no. of transitions N <- with( obj, table( Relevel( lex.Xst, c(fc,cc,cn) ) ) ) names( N ) <- paste( rep( c("Event:"," comp:"," cens:"), c(length(fc),length(cc),length(cn)) ), names(N) ) # add model and table to the resulting object M <- c( M, list( model.Lexis = md, transitions = cbind(N) ) ) # remember the class attribute (lost by doing "c") class( M ) <- "crr" # print overview if desired if( !quiet ) cat( "crr analysis of event", paste('"',fc,'"',sep=''), "\n versus", paste('"',cc,'"',sep=''), "\n with", paste('"',cn,'"',sep=''), "as censoring.\n" ) M } Epi/R/Termplot.R0000644000175100001440000000341412562641313013144 0ustar hornikusersTermplot <- function( obj, plot = TRUE, xlab = NULL, ylab = NULL, xeq = TRUE, yshr = 1.0, alpha = 0.05, terms = NULL, max.pt = NULL ) { # max.pt suppiled no.max <- missing( max.pt ) # Extract the curves to plot zz <- termplot( obj, se=TRUE, plot=FALSE, terms=terms ) nt <- length( zz ) for( i in 1:nt ) { # Thin the number of points in each returned term if( no.max ) max.pt <- nrow( zz[[i]] ) if( is.numeric(max.pt) & (nrow(zz[[i]]) > max.pt) ) zz[[i]] <- zz[[i]][round(seq(1,nrow(zz[[i]]),,max.pt)),] # Compute the estimate and the c.i. on log-scale zz[[i]] <- cbind( zz[[i]][,1], exp(as.matrix(zz[[i]][,2:3])%*%ci.mat(alpha=alpha)) ) } # Labels if( is.null(xlab) ) xlab <- names( zz ) if( is.null(ylab) ) ylab <- rep("",nt) ## Compute ranges of y and x xw <- sapply( zz, function(x) diff(range(x[,1 ])) ) yl <- sapply( zz, function(x) range(x[,2:4]) ) mr <- max( apply( yl, 2, function(x) exp(diff(log(x)))) ) yl <- apply( yl, 2, function(x) exp(mean(log(x))+c(-1,1)*log(mr)/2*yshr)) if( plot ) { ## Plot the effects side by side par( mfrow=c(1,nt), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 )#, bty="n", las=1 ) if( xeq ) ## Plot the terms so that x- and y-axes have the same extent { # Margins and total width in inches mw <- sum(par("mai")[c(2,4)]) tw <- par("pin")[1] # Widths of each plot, approx. at least pw <- (tw-nt*mw)*xw/sum(xw)+mw layout( rbind(1:nt), widths=pw ) } for( i in 1:nt ) matplot( zz[[i]][,1], zz[[i]][,2:4], xlab=xlab[i], xaxs="i", xlim=range(zz[[i]][,1]), ylab=ylab[i], yaxs="i", ylim=yl[,i], log="y", type="l", lty=1, lwd=c(5,2,2), col="black" ) } ## Return the extracted terms invisible( zz ) } Epi/R/ci.pd.R0000644000175100001440000000604512531361077012340 0ustar hornikusersci.pd <- function( aa, bb=NULL, cc=NULL, dd=NULL, method = "Nc", alpha = 0.05, conf.level = 0.95, digits = 3, print = TRUE, detail.labs = FALSE ) { # Computes the approximate c.i. for the probability difference # Optional methods: # -- "AC", Agresti and Caffo, Am Statistician (2000), # -- "Nc", method 10 from Newcombe, Stat.Med. 17, (1998), pp.873 ff. if ( !(method %in% c("AC", "Nc") ) ) stop( paste('Method', method, 'unsupported: Only "Nc" and "AC" supported') ) # Fix the confidence level if( missing( alpha ) ) alpha <- 1 - conf.level if( missing( conf.level ) ) conf.level <- 1 - alpha # Allow various forms of vector and matrix input prefix <- "" if( is.vector( aa ) & length( aa ) > 1 ) prefix <- names( aa ) if( length( dim( aa ) ) == 2 ) { bb <- aa[1,2] cc <- aa[2,1] dd <- aa[2,2] aa <- aa[1,1] } if( length( dim( aa ) ) == 3 ) { prefix <- paste( if( is.null( dimnames( aa ) ) ) 1:dim(aa)[3] else dimnames( aa )[[3]], ": ", sep="" ) bb <- aa[1,2,] cc <- aa[2,1,] dd <- aa[2,2,] aa <- aa[1,1,] } if( length( dim( aa ) ) > 3 ) stop( "Maximal array dimension (3) exceeded!" ) # Function to give roots in a 2nd degree polynomial # (Polyroot does not work on vectors of coefficients) pol2 <- function( Aye, Bee, Sea ) { Dee <- Bee^2 - 4 * Aye * Sea lo <- ifelse( Dee >= 0, ( -Bee - sqrt( Dee ) ) / ( 2 * Aye ), NA ) hi <- ifelse( Dee >= 0, ( -Bee + sqrt( Dee ) ) / ( 2 * Aye ), NA ) cbind( lo, hi ) } # Put the data in the right form x1 <- aa n1 <- aa+cc p1 <- x1/n1 x2 <- bb n2 <- bb+dd p2 <- x2/n2 pd <- x1/n1 - x2/n2 z <- qnorm( 1-alpha/2 ) zz <- z^2 if ( method == "AC" ) { x1.1 <- x1+1 n1.2 <- n1+2 x2.1 <- x2+1 n2.2 <- n2+2 p1.1 <- x1.1/n1.2 p2.1 <- x2.1/n2.2 pd.1 <- p1.1 - p2.1 SE.4 <- sqrt( p1.1 * ( 1-p1.1) /n1.2 + p2.1 * ( 1-p2.1) /n2.2 ) res <- cbind( n1, p1, n2, p2, pd, pd.1 - z*SE.4, pd.1 + z*SE.4 ) } else if ( method == "Nc" ) { A1 <- 1 + zz / n1 B1 <- -2*x1/n1 - zz / n1 C1 <- ( x1 / n1 )^2 r1 <- pol2( A1, B1, C1 ) A2 <- 1 + zz / n2 B2 <- -2*x2/n2 - zz / n2 C2 <- ( x2 / n2 )^2 r2 <- pol2( A2, B2, C2 ) dlt <- sqrt( ( x1/n1 - r1[,1] )^2 + ( x2/n2 - r2[,2] )^2 ) eps <- sqrt( ( x1/n1 - r1[,2] )^2 + ( x2/n2 - r2[,1] )^2 ) res <- cbind(n1, p1, n2, p2, pd, pd-dlt, pd+eps ) } colnames( res ) <- c("n1","p1","n2","p2", "diff",paste( alpha/2 *100,"%",sep=""), paste((1-alpha/2)*100,"%",sep="") ) rownames( res ) <- prefix if( detail.labs ) rownames( res ) <- paste( prefix, ": ", aa, "/(", aa, "+", cc, ") - ", bb, "/(", bb, "+", dd, ")", sep="" ) if( print ) print( round( res, digits ) ) invisible( res ) } Epi/R/pctab.R0000644000175100001440000000070212531361077012426 0ustar hornikuserspctab <- function( TT, margin=length( dim( TT ) ), dec=1 ) { nd <- length( dim( TT ) ) sw <- (1:nd)[-margin[1]] rt <- sweep( addmargins( TT, margin, list( list( All=sum, N=function( x ) sum( x )^2/100 ) ) ), sw, apply( TT, sw, sum )/100, "/" ) if( dec ) print( round( rt, dec ) ) invisible( rt ) } Epi/R/ci.cum.R0000644000175100001440000000661014220414246012511 0ustar hornikusersci.cum <- function(obj, ctr.mat = NULL, subset = NULL, intl = NULL, alpha = 0.05, Exp = TRUE, ci.Exp = FALSE, sample = FALSE) { qzwpr <- NULL # First extract all the coefficients and the variance-covariance matrix cf <- COEF(obj) vcv <- VCOV(obj) # use first column of ctr.mat to derive if (is.null(intl)) { cnam <- deparse(substitute(ctr.mat)) # if called from ci.surv the nane is in qzwpr if (exists("qzwpr")) cnam <- qzwpr tnam <- colnames(ctr.mat)[1] if (is.null(tnam)) tnam <- paste0(cnam, "[,1]") intl <- diff(ctr.mat[,1])[1] cat("NOTE: interval length chosen from ", cnam, " as ", tnam, "[2] - ", tnam, "[1]", "\n", sep = "") } # Check if the intervals matches ctr.mat if( length( intl ) == 1 ) intl <- rep( intl, nrow( ctr.mat ) ) if( length( intl ) != nrow( ctr.mat ) ) stop( "intl must match ctr.mat" ) if( inherits( ctr.mat, "data.frame" ) ) { ctr.mat <- df2ctr( obj, ctr.mat ) } else { if(is.character(subset)) { sb <- numeric(0) for(i in 1:length(subset)) sb <- c(sb, grep(subset[i], names(cf))) subset <- sb # unique( sb ) } # If subset is not given, make it the entire set if( is.null( subset ) ) subset <- 1:length( cf ) # Exclude units where aliasing has produced NAs. # Not needed after replacement with 0s # subset <- subset[!is.na( cf[subset] )] cf <- cf[subset] vcv <- vcv[subset,subset] if( is.null( ctr.mat ) ) { ctr.mat <- diag( length( cf ) ) rownames( ctr.mat ) <- names( cf ) } if( dim( ctr.mat )[2] != length(cf) ) stop( paste("\n Dimension of ", deparse(substitute(ctr.mat)), ": ", paste(dim(ctr.mat), collapse = "x"), ", not compatible with no of parameters in ", deparse(substitute(obj)), ": ", length(cf), sep = "")) } # Finally, here is the actual computation of the estimates ct <- ctr.mat %*% cf vc <- ctr.mat %*% vcv %*% t( ctr.mat ) # If a sample is requested replace the estimate by a sample if( sample ) ct <- t( mvrnorm( sample, ct, vc ) ) # If Exp was requested, we take the exponential of the estimates # before we cumulate the sum if( Exp ) { ct <- exp( ct ) vc <- ( ct[,1] %*% t(ct[,1]) ) * vc } # Here is the cumulation matrix cum.mat <- 1 - upper.tri( diag(ct[,1]) ) # Multiply columns of the matrix with interval lengths cum.mat <- t( intl * t( cum.mat ) ) # This is then multiplied to the coefficients ct <- cum.mat %*% ct if( sample ) return( ct ) else { vc <- cum.mat %*% vc %*% t( cum.mat ) se <- sqrt( diag( vc ) ) if( !ci.Exp ) { cum <- cbind( ct, se ) %*% ci.mat( alpha=alpha ) return( cbind( cum, "StdErr"=se ) ) } else { cum <- exp( cbind( log(ct), se/ct ) %*% ci.mat( alpha=alpha ) ) return( cbind( cum, "Erf"=exp( qnorm(1-alpha/2)*se/as.vector(ct) ) ) ) } } } ci.surv <- function( obj, ctr.mat = NULL, subset = NULL, intl = NULL, alpha = 0.05, Exp = TRUE, sample = FALSE ) { qzwpr <- NULL # carry the name across to ci.cum if (is.null(intl)) qzwpr <<- deparse(substitute(ctr.mat)) CH <- ci.cum( obj, ctr.mat = ctr.mat, subset = subset, intl = intl, alpha = alpha, Exp = Exp, ci.Exp = TRUE, sample = sample ) exp(-rbind(0, CH[1:(nrow(CH) - 1), -4])) } Epi/R/splitLexis.R0000644000175100001440000000775612531361077013515 0ustar hornikuserssplit.lexis.1D <- function(lex, breaks, time.scale, tol) { time.scale <- check.time.scale(lex, time.scale) ## Entry and exit times on the time scale that we are splitting time1 <- lex[,time.scale, drop=FALSE] time2 <- time1 + lex$lex.dur ## Augment break points with +/- infinity breaks <- sort( unique( breaks ) ) I1 <- c(-Inf, breaks) I2 <- c(breaks,Inf) ## Arrays containing data on each interval (rows) for each subject (cols) en <- apply(time1, 1, pmax, I1) # Entry time ex <- apply(time2, 1, pmin, I2) # Exit time NR <- nrow(en) NC <- ncol(en) ## Does subject contribute follow-up time to this interval? ## (intervals shorter than tol are ignored) valid <- en < ex - tol dur <- ex - en; dur[!valid] <- 0 # Time spent in interval ## Cumulative time since entry at the start of each interval time.since.entry <- rbind(0, apply(dur,2,cumsum)[-NR,,drop=FALSE]) cal.new.entry <- function(entry.time) { sweep(time.since.entry, 2, entry.time, "+")[valid] } old.entry <- lex[, timeScales(lex), drop=FALSE] new.entry <- lapply(old.entry, cal.new.entry) ## Status calculation aug.valid <- rbind(valid, rep(FALSE, NC)) last.valid <- valid & !aug.valid[-1,] any.valid <- apply(valid,2,any) new.Xst <- matrix( lex$lex.Cst, NR, NC, byrow=TRUE) new.Xst[last.valid] <- lex$lex.Xst[any.valid] n.interval <- apply(valid, 2, sum) new.lex <- Lexis("entry" = new.entry, "duration" = dur[valid], "id" = rep(lex$lex.id, n.interval), "entry.status" = rep(lex$lex.Cst, n.interval), "exit.status" = new.Xst[valid]) ## Update breaks attribute and tranfer time.since attribute breaks.attr <- attr(lex, "breaks") breaks.attr[[time.scale]] <- sort(c(breaks.attr[[time.scale]], breaks)) attr(new.lex, "breaks") <- breaks.attr attr(new.lex, "time.since") <- attr(lex, "time.since") return(new.lex) } splitLexis <- function(lex, breaks, time.scale=1, tol= .Machine$double.eps^0.5) { ## Advise the uninformed user... if( inherits(lex,"stacked.Lexis") ) stop( "It makes no sense to time-split after stacking ---\n", "split your original Lexis object and stack that to get what you want.\n") ## Set temporary, unique, id variable lex$lex.tempid <- lex$lex.id lex$lex.id <- 1:nrow(lex) ## Save auxiliary data aux.data.names <- setdiff(names(lex), timeScales(lex)) aux.data.names <- aux.data.names[substr(aux.data.names,1,4) != "lex."] aux.data <- lex[, c("lex.id","lex.tempid", aux.data.names), drop=FALSE] ## Check for NAs in the timescale ts <- check.time.scale(lex, time.scale) ts.miss <- any(is.na(lex[,ts])) if( ts.miss ) { na.lex <- lex[ is.na(lex[,ts]),] lex <- lex[!is.na(lex[,ts]),] cat( "Note: NAs in the time-scale \"", ts, "\", you split on\n") } ## If states are factors convert to numeric while splitting factor.states <- is.factor( lex$lex.Cst ) if( factor.states ) { state.levels <- levels( lex$lex.Cst ) nstates <- nlevels( lex$lex.Cst ) lex$lex.Cst <- as.integer( lex$lex.Cst ) lex$lex.Xst <- as.integer( lex$lex.Xst ) } ## Split the data lex <- split.lexis.1D(lex, breaks, time.scale, tol) ## Reinstitute the factor levels if( factor.states ) { lex$lex.Cst <- factor( lex$lex.Cst, levels=1:nstates, labels=state.levels ) lex$lex.Xst <- factor( lex$lex.Xst, levels=1:nstates, labels=state.levels ) } ## Put the NA-rows back if( ts.miss ) lex <- rbind( lex, na.lex[,colnames(lex)] ) ## Save attributes lex.attr <- attributes(lex) ## Merge lex <- merge.data.frame(lex, aux.data, by="lex.id") ## Restore attributes attr(lex,"breaks") <- lex.attr$breaks attr(lex,"time.scales") <- lex.attr$time.scales attr(lex,"time.since") <- lex.attr$time.since class(lex) <- c("Lexis", "data.frame") ## Restore id variable lex$lex.id <- lex$lex.tempid lex$lex.tempid <- NULL return(lex) } Epi/R/apc.plot.R0000644000175100001440000001343113443412120013045 0ustar hornikusersplot.apc <- apc.plot <- function( x, r.txt="Rate", ... ) { if( !inherits( x, "apc" ) ) stop( "Argument must be an apc-object" ) # Determine the ranges of the horizontal axes a.lab = nice( x$Age[,1] ) cp.lab = nice( c(x$Per[,1],x$Coh[,1]), high=0.1 )[-1] # The necessary range of the two vertical axes r.rg <- range( x$Age[,-1] ) rr.rg <- range( rbind( x$Per[,-1], x$Coh[,-1] ) ) # Align the RR with the rates on an integer power of 10 rr.ref <- 10^floor( log10(r.rg[2])-log10(rr.rg[2]) ) # Find the tic-marks for the two vertical axes r.tic <- nice( r.rg, log=T, lpos=1:9 ) rr.tic <- nice( rr.rg, log=T, lpos=1:9 ) # Expand to cover it all r.tic <- sort( unique( c( r.tic, rr.tic*rr.ref ) ) ) rr.tic <- r.tic/rr.ref # Find the places for labels r.lab <- nice( r.tic, log=T, lpos=c(1,2,5) ) rr.lab <- nice( rr.tic, log=T, lpos=c(1,2,5) ) r.lab <- r.lab[ r.lab>min( r.tic) & r.labmin(rr.tic) & rr.lab% mutate(extime = dop + c(NA, diff(dop) * amt[-1] / amt[-length(amt)]) + grace) %>% ungroup() ) # generate 0 purchases in dataframe pzero if coverage expire before # new purchase pzero <- ( group_by(pdat, lex.id) %>% filter(extime < c(dop[-1], Inf)) %>% mutate(dop = extime, amt = 0) %>% select(lex.id, dop, amt) ) # pzero has potentially become a grouped tibble so make it a data frame pzero <- as.data.frame(pzero) # append pzero to original data frame pdat <- rbind(pdat[, names(pzero)], pzero) # reinstate the time-scale name names(pdat)[grep("dop", names(pdat))] <- tnam # sort by lex.id and time and coerce to data frame # old code: oo <- order(pdat$lex.id, pdat[, tnam, drop = TRUE]) pdat <- as.data.frame(pdat[oo, ]) rownames(pdat) <- NULL pdat ## pdat <- as.data.frame( group_by(pdat, lex.id) ## %>% arrange(tnam, .by_group = TRUE) ## %>% ungroup() ) } #---------------------------------------------------------------------- # addDrug.Lexis addDrug.default <- addDrug.Lexis <- function(Lx, # Lexis object, should be timesplit pdat, # (named) list of data frames of drug purchaces amt = "amt", # name of amount variable in pdat dpt = "dpt", # name of amount per time variable in pdat # to be used if method = "dos" apt = NULL, method = "ext", # extrapolation from times and amounts # "dos" is based on dosage, dpt and amt # "fix" is using a fixed interval, maxt maxt = NULL, # vector of times covered by a single prescription, grace = 0, # vector of grace periods after final data tnam = setdiff(names(pdat[[1]]), c("lex.id", amt))[1], prefix = TRUE, # character vector, if FALSE use suffix sepfix = ".", # separator for pre- and suf-fixes verbose = TRUE, ... ) { # utility functions na0 <- function(x) ifelse(is.na(x), 0, x) csum0 <- function(x) c(0, cumsum(na0(x)[-length(x)])) # handling apt / dpt if(!is.null(apt)) { cat("Use the agument 'dpt' instead of 'apt',\n", "in future releases 'apt' will be deprecated.") if(!missing(dpt)) stop("Using both 'dpt' and 'apt' is meaningless.\n") dpt = apt } # binding variables to avoid check troubles in CRAN qwzrx <- exnam <- tfc <- tfxxx <- lex.id <- pur <- lex.dur <- xtime <- expos <- dospt <- NULL # don't bother about the warnings oldopts <- options(warn = -1) on.exit(options(oldopts)) # Save Lexis attributes to return with the result lex.attr <- attributes(Lx) # time scale if (missing(tnam) & verbose) cat("NOTE: timescale taken as '", tnam, "'\n", sep = "") # construct names for the 0-expanded purchase data frames if not given if(is.null(names(pdat))) names(pdat) <- paste0('P', 1:length(pdat)) # the renaming vector to be used later longnames <- c("expos","tfex","ctime","cdos") shortnames <- substr(longnames, 1, 2) # number of purchase files np <- length(pdat) # expand maxt and grace by recycling Lm <- (!missing(maxt ) & length(maxt ) < np) Lg <- (!missing(grace) & length(grace) < np) if ((Lm | Lg) & verbose) cat("Values of", if (Lm ) "maxt", if (Lm & Lg) "and", if ( Lg) "grace", if (Lm & Lg) "have" else "has", "been recycled across", np, "drugs\n") maxt <- rep(maxt , np)[1:np] grace <- rep(grace, np)[1:np] # Structure to hold the 0-expanded data sets pdat0 <- list() pall <- NULL # Define the 0 amount purchases at exposure end and collect all times in pall for(i in 1:np) { pdat0[[i]] <- ins0(pdat[[i]], amt = amt, dpt = dpt, method = method, maxt = maxt[i], grace = grace[i], tnam = tnam, verbose = i == 1 & verbose) pall <- rbind(pall, pdat0[[i]][, c("lex.id", tnam)]) } # order pall by id and time, remove duplicates and add a bogus # variable in order to be able to use addCov.Lexis oo <- order(pall$lex.id, pall[, tnam]) pall <- pall[oo, ] pall <- pall[!duplicated(pall), ] pall$qwzrx <- 0 # add the total purchase dates in order to expand to all cut dates when # appending data from each drug. Make sure that incoming Lx could have # tfc as time scale Gx <- addCov.Lexis(Lx, pall, timescale = tnam, tfc = "tfxxx") Gx <- select(Gx, -qwzrx, -exnam, -tfxxx) # remove tfxxx as time scale and keep Lexis attributes to resinstate later wh.tf <- match("tfxxx", attr(Gx, "time.scales")) attr(Gx, "time.scales") <- Gsc <- attr(Gx, "time.scales")[-wh.tf] attr(Gx, "time.since") <- Gsi <- attr(Gx, "time.since" )[-wh.tf] class(Gx) <- Gcl <- c("Lexis", "data.frame") # Gx is now a a Lexis object with all the purchases end expiry dates # added as cuts # put the expanded drug purchases in the Lexis object one drug at a time allnam <- NULL for(i in 1:np) { # renaming vector the variables with pre- or suffix rnam <- shortnames if(prefix) rnam <- paste( names(pdat)[i], rnam, sep = sepfix) else rnam <- paste(rnam, names(pdat)[i], sep = sepfix) names(rnam) <- longnames allnam <- c(allnam, rnam) # add the i'th drug exposure data file Gx <- addCov.Lexis(Gx, pdat0[[i]], timescale = tnam, exnam = "pur") # compute the exposure variables, drop unneeded variables and rename Gx <- ( group_by(Gx, lex.id, pur) %>% mutate(xtime = sum(lex.dur) + tfc[1], # total exposure time for this purchase # tfc[1] is the time since purchase at start dospt = amt / xtime ) # dose per time in this interval %>% group_by(lex.id) %>% mutate(expos = !is.na(amt) & amt > 0, tfex = csum0(lex.dur * (cumsum(expos) > 0)), ctime = csum0(lex.dur * expos * (amt > 0)) + na0(tfc[1]), cdos = csum0(lex.dur * expos * dospt) + na0(dospt[1]) * na0(tfc[1])) %>% select(-pur, -xtime, -dospt, -tfc, -amt) %>% plyr::rename(rnam) ) # reinstate as Lexis object attr(Gx,"time.scales") <- Gsc attr(Gx,"time.since") <- Gsi class(Gx) <- Gcl } return(Gx[,c(setdiff(names(Gx), allnam), allnam)]) } Epi/R/foreign.R0000644000175100001440000000346413763626440013004 0ustar hornikusers# The msdata method msdata <- function (obj, ...) UseMethod("msdata") msdata.Lexis <- function( obj, time.scale = timeScales(obj)[1], ... ) { tr.mat <- tmat(obj) # Essentially a msdata object is a stacked Lexis object with # other variable names tmp <- stack.Lexis(factorize.Lexis(obj)) lv <- c(match(timeScales(obj), names(tmp)), grep("lex\\.", names(tmp))) # The transitions that we refer to are extracted from lex.Tr: ss <- strsplit(as.character(tmp$lex.Tr), "->") # The resulting dataframe is created by renaming columns in the # stacked Lexis object data.frame( id = tmp$lex.id, from = sapply( ss, FUN=function(x) x[1] ), to = sapply( ss, FUN=function(x) x[2] ), trans = as.integer( tmp$lex.Tr ), Tstart = tmp[,time.scale], Tstop = tmp[,time.scale] + tmp$lex.dur, time = tmp$lex.dur, status = as.integer(tmp$lex.Fail), tmp[,-lv] ) } # The etm method etm <- function (data, ...) UseMethod("etm") etm.Lexis <- function( data, time.scale = timeScales(data)[1], cens.name = "cens", s = 0, t = "last", covariance = TRUE, delta.na = TRUE, ... ) { dfr <- data.frame( id = data$lex.id, from = as.character(data$lex.Cst), to = as.character(data$lex.Xst), entry = data[,time.scale], exit = data[,time.scale] + data$lex.dur, stringsAsFactors = FALSE ) dfr$to <- with( dfr, ifelse( from==to, cens.name, to ) ) etm::etm( data = dfr, state.names = levels(data$lex.Cst), tra = tmat(data, mode = "logical"), cens.name = cens.name, s = s, t = t, covariance = covariance, delta.na = delta.na ) } Epi/R/Life.lines.R0000644000175100001440000000555212531361077013335 0ustar hornikusersLife.lines <- function( entry.date = NA, exit.date = NA, birth.date = NA, entry.age = NA, exit.age = NA, risk.time = NA ) { # A function allowing any three of the arguments to be specified # and yet returns enty age and -time and exit age and -time. # Check if any variable is supplied with class if( conv <- any( inherits( entry.date, "Date" ), inherits( exit.date, "Date" ), inherits( birth.date, "Date" ), inherits( entry.age , "difftime" ), inherits( exit.age , "difftime" ), inherits( risk.time, "difftime" ) ) ) { # Convert "Date" and "difftime" to years if( inherits( entry.date, "Date" ) ) entry.date <- as.numeric( entry.date ) / 365.35 + 1970 if( inherits( exit.date, "Date" ) ) exit.date <- as.numeric( exit.date ) / 365.35 + 1970 if( inherits( birth.date, "Date" ) ) birth.date <- as.numeric( birth.date ) / 365.35 + 1970 if( inherits( entry.age , "difftime" ) ) entry.age <- as.numeric( entry.age ) / 365.35 if( inherits( exit.age , "difftime" ) ) exit.age <- as.numeric( exit.age ) / 365.35 if( inherits( risk.time, "difftime" ) ) risk.time <- as.numeric( risk.time ) / 365.35 # Convert to numeric class( entry.date ) <- "numeric" class( exit.date ) <- "numeric" class( birth.date ) <- "numeric" class( entry.age ) <- "numeric" class( exit.age ) <- "numeric" class( risk.time ) <- "numeric" } # Find out which three items are supplied. # wh <- (1:6)[!is.na( list( entry.date, entry.age, exit.date, exit.age, birth.date, risk.time ) )] # Matrix of relevant quantities. # LL <- rbind( entry.date, entry.age, exit.date, exit.age, birth.date, risk.time ) # Matrix giving the three constraints among the six quantities: # M <- rbind( c( -1, 1, 0, 0, 1, 0 ), c( 0, 0, -1, 1, 1, 0 ), c( 0, 1, 0, -1, 0, 1 ) ) # Now in principle we have that M %*% LL = 0. # Partitioning M=(A1|A2), t(LL)=(t(x1),t(x2)) # this gives A1 %*% x1 = -A2 %*% x2 # Check if there is sufficient information # if( qr( M[,-wh[1:3]] )$rank < 3 ) cat( "Insufficient information to display life lines" ) # Then do the calculation # A1 <- M[, wh[1:3]] A2 <- M[,-wh[1:3]] x1 <- LL[wh[1:3],] x2 <- -solve( A2 ) %*% A1 %*% x1 LL[-wh[1:3],] <- x2 LL <- data.frame( t(LL) ) attr( LL, "Date" ) <- conv # Convert to dates and difftimes if( conv ) { LL[,c(1,3,5)] <- ( LL[,c(1,3,5)] - 1970 ) * 365.25 LL[,c(2,4,6)] <- LL[,c(2,4,6)] * 365.25 class( LL[,1] ) <- class( LL[,3] ) <- class( LL[,5] ) <- "Date" class( LL[,2] ) <- class( LL[,4] ) <- class( LL[,6] ) <- "difftime" } LL } Epi/R/stack.Lexis.R0000644000175100001440000000377513763706532013551 0ustar hornikusers# Functions to facilitate analysis of multistate models # The stack method is already defined (in the utils package) # and hence imported in the NAMESPACE file stack.Lexis <- function(x, ...) { ## Function to stack obervations for survival analysis ## Make sure that lex.Cst and lex.Xst are factors with identical levels x <- factorize(x) ## Same covariates xx <- data.frame( cbind( x, lex.Tr="", lex.Fail=FALSE ) )[NULL,] tm <- tmat.Lexis( x ) for( fst in levels(factor(x$lex.Cst)) ) for( tst in levels(factor(x$lex.Xst)) ) if( !is.na(tm[fst,tst]) ) { tr = paste( fst, "->", tst , sep="" ) zz <- x[x$lex.Cst==fst,] xx <- rbind( xx, data.frame( zz, lex.Tr=tr, lex.Fail=(zz$lex.Xst==tst) ) ) } xx$lex.Tr <- factor(xx$lex.Tr) ## Reshuffle the variables wh.om <- match( "lex.Xst", names(xx) ) wh.rl <- match( c("lex.Tr","lex.Fail"), names(xx) ) xx <- xx[,c(1:wh.om,wh.rl,(wh.om+1):(wh.rl[1]-1))] attr(xx,"breaks") <- attr(x, "breaks") attr(xx,"time.scales") <- attr(x, "time.scales") class( xx ) <- c("stacked.Lexis","data.frame") xx } subset.stacked.Lexis <- function(x, ... ) { y <- subset.data.frame(x, ...) attr(y,"breaks") <- attr(x, "breaks") attr(y,"time.scales") <- attr(x, "time.scales") class(y) <- c("stacked.Lexis","data.frame") return(y) } transform.stacked.Lexis <- function(`_data`, ... ) { save.at <- attributes(`_data`) ## We can't use NextMethod here because of the special scoping rules ## used by transform.data.frame y <- base::transform.data.frame(`_data`, ...) save.at[["names"]] <- attr(y, "names") attributes(y) <- save.at y } # The tmat method tmat <- function (x, ...) UseMethod("tmat") tmat.Lexis <- function( x, Y=FALSE, mode="numeric", ... ) { zz <- table(x$lex.Cst,x$lex.Xst) class(zz) <- "matrix" if( Y ) { diag(zz) <- summary( x, simplify=FALSE )[[1]][1:nrow(zz),"Risk time:"] } else diag(zz) <- NA zz[zz==0] <- NA if( mode != "numeric" ) zz <- !is.na(zz) zz } Epi/R/ci.Crisk.R0000644000175100001440000001473014061127751013007 0ustar hornikusers# convenience function to compute midpoints between points in a vector midpoint <- function(x) x[-1] - diff(x) / 2 #---------------------------------------------------------------------- # Simulate rates from a list of models, 0th simulation is the rates # based on the model estimates simrates <- function(mods, # named list of models - one for each cause nd, # prediction data frame - common for all causes tnam, nB = 1000, # number of simulated samples int = mean(diff(nd[,tnam]))) # time is first in column of nd # seed) not implemented yet { # from a list of models (mods) for nC cause-specific rates and a # common prediction frame, nd, we generate nB samples of predicted # rates. It is assumed that the nd refer to endpoints of intervals res <- NArray(list(time = nd[,tnam], mod = names(mods), sim = 1:nB)) nT <- nrow(nd) - 1 # no of interval midpoints nC <- length(mods) # no. competing risks for(i in 1:nC) res[,i,] <- ci.lin(mods[[i]], nd, sample = nB) res <- exp(res) # esimated rates at the interval endpoints attr( res, "int" ) <- int res } #---------------------------------------------------------------------- # Compute nC+1 cumulative risks from nC rates mkprobs <- function(rtab, int) { # rtab is assumed to be a matrix with rates in (named) columns at int # equidistance assumed computed at times 0, int, 2*int, ... # is assumed nT x nC nT <- nrow(rtab) nC <- ncol(rtab) # intensities at interval midpoints mtab <- (rtab[-1,,drop=FALSE] + rtab[-dim(rtab)[1],,drop=FALSE]) / 2 # integrated intensities at interval boundaries, so nT x nC Rtab <- rbind(0, apply(mtab, 2, cumsum)) * int # state probabilities at interval endpoints so nT x (1+nC) Pr <- Rtab[,c(1,1:nC)] * NA colnames(Pr)[1] <- "Surv" # Survival prob in first column # survival function (also the first column in Pr) Pr[,"Surv"] <- Sv <- exp(-apply(Rtab, 1, sum)) # convenience function to compute midpoints between points in a vector midpoint <- function(x) x[-1] - diff(x) / 2 # cumulative risks - note we are using the midvalue of the Sv, length nT for( i in 1:nC ) Pr[,i+1] <- c(0, cumsum(mtab[,i] * midpoint(Sv)) * int) Pr } #---------------------------------------------------------------------- # return first, mean and median and ci from a simulated sample mnqt <- function(x, alpha = 0.05) { # extracts the relevant quantiles across the # simulated samples c(quantile(x, probs = c(0.5, alpha / 2, 1 - alpha / 2), na.rm = TRUE)) } #---------------------------------------------------------------------- # Here is the function we need to compute cumulative risks ci.Crisk <- function(mods, # list of models nd, # prediction data frame for rates at points # representing interval endpoints tnam = names(nd)[1], nB = 1000, # no of parametic bootstrap samples perm = length(mods):0 + 1, # order of cumulation of states alpha = 0.05, # 1 minus confidence level sim.res = 'none') # seed = ) not implemented yet { int <- mean(diff(nd[,tnam])) # interval length in nd if (length(table(round(diff(nd[,tnam]), 6))) > 1) stop("Time column column of nd must be equidistant times\n") cat("NOTE: Times are assumed to be in the column", tnam, "at equal distances of", int, "\n") # First generate the simulated probabilities T x (C+1) x nB # contains the estimates as the first entry in the simulation dimension simrt <- simrates(mods = mods, nd = nd, tnam = tnam, nB = nB, int = int) # seed = seed) not implemented yet # if we want the simulation results for further processing attr(simrt, "int") <- int # the interval length needed with simrt attr(simrt, "time") <- nd[,tnam] if(substr(tolower(sim.res), 1, 1) == 'r') return(invisible(simrt)) # Array for the state probabilities probs <- NArray(list(time = nd[,tnam], cause = c("Surv", dimnames(simrt)[["mod"]]), sim = 1:nB)) names(dimnames(probs))[1] <- tnam # Compute the cumulative risks # a trick to avoid dropping dimension 2 if it has length 1 x2 <- c(1, 1:dim(simrt)[2]) for(i in 1:nB) probs[,,i] <- mkprobs(simrt[,x2,i][,-1,drop=FALSE], int = int) attr(probs, "int") <- int # the interval length needed with probs if(substr(tolower(sim.res), 1, 1) == 'c') return(invisible(probs)) # otherwise we compute confidence intervals for selected statistics # 1. state (cumulative) probabilities Crisk <- sim2ci.Crisk(probs, alpha = alpha) # 2. stacked (cumulative) probabilities Srisk <- sim2ci.Srisk(probs, perm = perm, alpha = alpha) # 3. sojourn times in states Stime <- sim2ci.Stime(probs, alpha = alpha) # finally return in a list of useful quantities rlist <- list(Crisk = Crisk, Srisk = Srisk, Stime = Stime, time = nd[,tnam]) attr(rlist, "int") <- int # the interval length used return(invisible(rlist)) } #---------------------------------------------------------------------- # 1. cumulative probabilities sim2ci.Crisk <- function(probs, alpha = 0.05) aperm(apply(probs, 1:2, mnqt, alpha), c(2,3,1)) #---------------------------------------------------------------------- # 2. stacked (cumulative) probabilities sim2ci.Srisk <- function(probs, perm = 1:dim(probs)[2], alpha = 0.05) { cprobs <- aperm(apply(probs[,perm,], c(1, 3), cumsum), c(2,1,3)) cnam <- dimnames(cprobs)[["cause"]] for(i in 2:length(cnam)) dimnames(cprobs)[["cause"]][i] <- paste(cnam[1:i], collapse = "+") cpr <- aperm(apply(cprobs, 1:2, mnqt, alpha), c(2,3,1)) cpr[,-dim(cpr)[2],] } #---------------------------------------------------------------------- # 3. sojourn times in states sim2ci.Stime <- function(probs, int = attr(probs, "int"), alpha = 0.05) { sojrn <- apply(probs, 2:3, function(x) cumsum(midpoint(x))) * int res <- aperm(apply(sojrn, 1:2, mnqt, alpha), c(2,3,1)) res <- res[c(1, 1:dim(res)[1]), , ] res[1,,] <- 0 dimnames(res) [1] <- dimnames(probs) [1] names(dimnames(res))[1] <- names(dimnames(probs))[1] res } Epi/R/mod.Lexis.R0000644000175100001440000002031314235417067013203 0ustar hornikusersmodLexis <- function( Lx, nameLx, formula, from = preceding(Lx, to), to = absorbing(Lx), paired = FALSE, link = "log", scale = 1, verbose = TRUE, model, ... ) { # a common wrapper for glm and gam modeling of Lexis FU # is this a Lexis object ? if( !inherits(Lx,"Lexis") ) stop("The first argument must be a Lexis object.\n") # check that events are actual levels of lex.Xst if( is.numeric(to) ) to <- levels( Lx$lex.Xst )[to] wh <- match(to, levels(Lx$lex.Xst)) if( any(is.na(wh)) ) stop("'to' must be a subset of: '", paste(levels(Lx$lex.Xst), collapse="','", sep=""), "'\n") # check that from are actual levels of lex.Cst if( is.numeric(from) ) from <- levels( Lx$lex.Cst )[from] wh <- match( from, levels(Lx$lex.Cst) ) if( any(is.na(wh)) ) stop("'from' must be a subset of: '", paste(levels(Lx$lex.Cst), collapse="','", sep=""), "'\n") # subset to these states Lx <- Lx[Lx$lex.Cst %in% from,] # first a small utility to show transitions as text: trt <- function( f, t ) paste( f, "->", t, sep="" ) # work out which transitions are modeled if( paired ) { if (length(from) != length(to)) stop("If 'paired' is TRUE, from and to must have same length!\n") if (any(from == to)) stop("If 'paired' is TRUE, entries in from and to must be different within pairs\n") trnam <- trt(from, to) } else { tm <- tmat(Lx)[from, to, drop = FALSE] trnam <- outer(rownames(tm), colnames(tm), trt)[tm > 0] trnam <- trnam[!is.na(trnam)] } # just for formatting the explanatory text onetr <- length(trnam) == 1 # warn if a potentially silly model is defined if (any((ts <- table(sapply(strsplit(trnam, "->"), function(x) x[1]))) > 1)) cat( "NOTE:\nMultiple transitions *from* state '", paste(names(ts[ts>1]), collapse = "', '"), "' - are you sure?", "\nThe analysis requested is effectively merging outcome states.", "\nYou may want analyses using a *stacked* dataset - see ?stack.Lexis\n") # construct the model formula - note that we already made sure that # from and to are pairwise different if( length(formula) != 2 ) stop("formula must be a one-sided formula") form <- cbind( trt(Lx$lex.Cst,Lx$lex.Xst) %in% trnam, Lx$lex.dur ) ~ 1 form[3] <- formula[2] from <- levels(factor(Lx$lex.Cst)) # only levels present in lex.Cst # Scaling Lx$lex.dur <- Lx$lex.dur / scale # Tell what we intend to and then do it if( verbose ){ cat(deparse(substitute(model)), " Poisson analysis of Lexis object ", nameLx, " with ", link, " link", ":\nRates for", if( onetr) " the", " transition", if(!onetr) "s", ":", paste0("\n", trnam), "\n", if( scale!=1 ) paste(", lex.dur (person-time) scaled by", scale ), "\n", sep="" ) } # Fit the model mod <- model( form, family = poisreg(link=link), data = Lx, ... ) # Add an explanatory attribute attr( mod, "Lexis" ) <- list( data=nameLx, trans=trnam, formula=form[-2], scale=scale ) mod } # Here are the actual functions of interest: ###################################################################### # the glm function glm.Lexis <- function( Lx, formula, from = preceding(Lx,to), to = absorbing(Lx), paired = FALSE, link = "log", scale = 1, verbose = TRUE, ... ) { # name of the supplied object nameLx <- deparse(substitute(Lx)) # sensible defaults if one of to and from is missing if( missing(from) & !missing(to) ) from <- preceding (Lx,to ) if( !missing(from) & missing(to) ) to <- succeeding(Lx,from) xx <- modLexis( Lx, nameLx, formula, from, to, paired = paired, link = link, scale = scale, verbose = verbose, model = stats::glm, ... ) class( xx ) <- c( "glm.lex", class(xx) ) xx } ###################################################################### # the gam function gam.Lexis <- function( Lx, formula, from = preceding(Lx, to), to = absorbing(Lx), paired = FALSE, link = "log", scale = 1, verbose = TRUE, ... ) { # name of the supplied object nameLx <- deparse(substitute(Lx)) # sensible defaults if one of the two is missing if ( missing(from) & !missing(to)) from <- preceding (Lx, to ) if (!missing(from) & missing(to)) to <- succeeding(Lx, from) xx <- modLexis(Lx, nameLx, formula, from, to, paired = paired, link = link, scale = scale, verbose = verbose, model = mgcv::gam, ...) class(xx) <- c("gam.lex", class(xx)) xx } ###################################################################### # And here is the coxph counterpart: coxph.Lexis <- function( Lx, # Lexis object formula, # timescale ~ model from = preceding(Lx, to), # Exposure ('from' states) to = absorbing(Lx) , # Events ('to' states) paired = FALSE, verbose = TRUE, ... ) { # the usual crap to pass the check lex.id <- NULL # Lexis object ? if( !inherits(Lx,"Lexis") ) stop( "The first argument must be a Lexis object.\n") # Convert numbers to state names if (is.numeric(from)) from <- levels(Lx$lex.Cst)[from] if (is.numeric(to)) to <- levels(Lx$lex.Xst)[to] # sensible defaults if only one of to and from is missing if ( missing(from) & !missing(to)) from <- preceding (Lx, to ) if (!missing(from) & missing(to)) to <- succeeding(Lx, from) # name of the dataset nameLx <- deparse(substitute(Lx)) # subset to the states we shall use Lx <- Lx[Lx$lex.Cst %in% from,] # work out which transitions are modeled # first a small utility for annotation trt <- function( f, t ) paste( f, "->", t, sep="" ) if( paired ) { if( length(from) != length(to) ) stop("If 'paired' is TRUE, from and to must have same length!\n") if( any(from==to) ) stop("If 'paired' is TRUE, entries in 'from' and 'to'", " must be pairwise different\n") trnam <- trt( from, to ) } else { tm <- tmat( Lx )[from,to,drop=FALSE] trnam <- outer( rownames(tm), colnames(tm), trt )[tm>0] trnam <- trnam[!is.na(trnam)] } # just for formatting explanatory text onetr <- length(trnam) == 1 # warn if a potentially silly model is defined if( any( ts<-table(sapply( strsplit(trnam,"->"), function(x) x[1] ))>1 ) ) cat( "NOTE:\nMultiple transitions *from* state '",names(ts[ts>1]), "' - are you sure?", "\nThe analysis requested is effectively merging outcome states.", "\nYou may want analyses using a *stacked* dataset - see ?stack.Lexis\n" ) # Correct formula? if( length(formula) != 3 ) stop("'formula' must be a 2-sided formula, with the l.h.s. the timescale") # Is the l.h.s. a timescale? ts <- as.character( formula[2] ) if( !(ts %in% (tms<-timeScales(Lx))) ) stop( "l.h.s. of formula must be a timescale; one of:\n", tms, "\n" ) # What are the 'from' states actually present? from <- levels( factor(Lx$lex.Cst) ) # construct a Surv response object, and note that we want the possibility # of transitions to transient states, hence the lex.Xst != lex.Cst Sobj <- Surv(Lx[,ts], Lx[,ts]+Lx$lex.dur, trt( Lx$lex.Cst, Lx$lex.Xst ) %in% trnam ) # Tell what we intend to and then do it if( verbose ){ cat("survival::coxph analysis of Lexis object ", nameLx, ":\nRates for", if( onetr) " the", " transition", if(!onetr) "s", ":", paste0("\n", trnam), "\nBaseline timescale: ", ts, "\n", sep="") } mod <- coxph(as.formula(paste("Sobj", as.character(formula[3]), sep="~")), data = Lx, id = lex.id, ...) # Add an explanatory attribute attr( mod, "Lexis" ) <- list( data=nameLx, trans=trnam, formula=formula ) class( mod ) <- c( "coxph.lex", class(mod) ) mod } Epi/R/apc.fit.R0000644000175100001440000003371314021155626012666 0ustar hornikusersapc.fit <- function( data, A, P, D, Y, ref.c, ref.p, dist = c("poisson","binomial"), model = c("ns","bs","ls","factor"), dr.extr = "Y", parm = c("ACP","APC","AdCP","AdPC","Ad-P-C","Ad-C-P","AC-P","AP-C"), npar = c( A=5, P=5, C=5 ), scale = 1, alpha = 0.05, print.AOV = TRUE ) { dist <- match.arg(dist) model <- match.arg(model) drtyp <- deparse(substitute(dr.extr)) parm <- toupper(match.arg(parm)) has.data <- !missing( data ) has.pref <- !missing( ref.p ) has.cref <- !missing( ref.c ) if(has.data) { if (length(match(c("A", "P", "D", "Y"), names(data))) != 4) stop("Data frame ", deparse(substitute(data)), " has columns:\n", names(data), "\nmust have variables:\n", "A (age), P (period), D (cases) and Y (person-time)") data <- data[,c("A","P","D","Y")] data <- data[complete.cases(data),] A <- data$A P <- data$P D <- data$D Y <- data$Y } else { nm <- logical(4) nm[1] <- missing(A) nm[2] <- missing(P) nm[3] <- missing(D) nm[4] <- missing(Y) if (any(nm)) stop("Variable", if (sum(nm) > 1) "s", paste(c(" A", " P", " D", " Y")[nm], collapse = ","), " missing from input") if( diff(range( lv <- sapply( list(A = A, P = P, D = D, Y = Y), length) ) ) != 0 ) stop( "\nLengths of variables (", paste(paste(names(lv), lv, sep = ":"), collapse = ", "), ") are not the same." ) } # Utility to compute where the median amount y is on the x scale med <- function(x, y) { o <- order(x) a <- y[o] names(a) <- x[o] return( as.numeric(names(a[cumsum(a)/sum(a) > 0.5][1])) ) } # Set the reference points on the period and cohort scales p0 <- ifelse( has.pref, ref.p, med(P , D) ) c0 <- ifelse( has.cref, ref.c, med(P-A, D) ) # Number of parameters in the spline modeling if( is.list(npar) & length(npar)<3 ) stop("npar given as a list - should have length 3! \n") if( !is.list(npar) & length(npar)!=3 ) { npar <- rep(npar, 3)[1:3] names(npar) = c("A","P","C") cat("NOTE: npar is specified as:\n") ; print( npar ) } if( is.null(names(npar)) ) names(npar) <- c("A", "P", "C") # Labeling of confidence intervals lu <- paste(formatC( c(alpha/2, 1 - alpha/2) * 100, format = "f", digits = 1), "%", sep = "") if( is.list(model) ) { if (!all(sapply(model, is.function))) stop("'model' is a list, but not all elements are functions as they should be.") if ((lmod <- length(model)) < 3) stop("'model' is a list, with", lmod, "elements, it should have three.") if (is.null(names(model))) names(model) <- c("A", "P", "C") MA <- model[["A"]](A) MP <- model[["P"]](P) MC <- model[["C"]](P-A) Rp <- model[["P"]](p0) Rc <- model[["C"]](c0) } else { if (model == "factor") { MA <- model.matrix(~factor(A) - 1) MP <- model.matrix(~factor(P) - 1) MC <- model.matrix(~factor(P - A) - 1) Rp <- MP[abs(P - p0) == min(abs(P - p0)), , drop = FALSE][1, ] Rc <- MC[abs(P - A - c0) == min(abs(P - A - c0)), , drop = FALSE][1, ] } if (model == "ns") { # is npar a list knl <- is.list( npar ) # if scalar expand if( !knl & length(npar)==1 ) npar <- rep( npar, 3 ) # if no names, provide them if( is.null(names(npar)) ) names(npar) <- c("A","P","C") # if names too long or wrong case, rectify names( npar ) <- toupper( substr(names(npar),1,1) ) # if not a list make it one with the correct knots if( !knl ){ nkn <- npar eqp <- function(n) (1:n-0.5)/n npar <- list( A = quantile( rep( A,D), probs=eqp(nkn["A"]) ), P = quantile( rep(P ,D), probs=eqp(nkn["P"]) ), C = quantile( rep(P-A,D), probs=eqp(nkn["C"]) ) ) } MA <- Ns( A, knots = npar[["A"]] ) MP <- Ns(P , knots = npar[["P"]] ) MC <- Ns(P-A, knots = npar[["C"]] ) Rp <- ns(p0, knots = attr(MP,"knots"), Boundary.knots = attr(MP,"Boundary.knots")) Rc <- ns(c0, knots = attr(MC,"knots"), Boundary.knots = attr(MC,"Boundary.knots")) Knots <- list( Age = sort(c(attr(MA,"knots"), attr(MA,"Boundary.knots"))), Per = sort(c(attr(MP,"knots"), attr(MP,"Boundary.knots"))), Coh = sort(c(attr(MC,"knots"), attr(MC,"Boundary.knots")))) } if (model %in% c("bs", "ls")) { deg <- switch(model, ls = 1, bs = 3) knl <- is.list(npar) if (knl) nk <- sapply(npar, length) MA <- if (knl) bs(A, knots = npar[["A"]][-c(1,nk[1])], Boundary.knots = npar[["A"]][ c(1,nk[1])], degree = deg) else bs(A, df = npar[["A"]], degree = deg) MP <- if (knl) bs(P, knots = npar[["P"]][-c(1,nk[2])], Boundary.knots = npar[["P"]][ c(1,nk[2])], degree = deg) else bs(P, df = npar[["P"]], degree = deg) MC <- if (knl) bs(P - A, knots = npar[["C"]][-c(1, nk[3])], Boundary.knots = npar[["C"]][ c(1, nk[3])], degree = deg) else bs(P - A, df = npar[["C"]], degree = deg) Rp <- bs(p0, knots = attr(MP,"knots"), Boundary.knots = attr(MP,"Boundary.knots"), degree = attr(MP,"degree")) Rc <- bs(c0, knots = attr(MC,"knots"), Boundary.knots = attr(MC,"Boundary.knots"), degree = attr(MC,"degree")) Knots <- list(Age = sort(c(attr(MA,"knots"),attr(MA,"Boundary.knots"))), Per = sort(c(attr(MP,"knots"),attr(MP,"Boundary.knots"))), Coh = sort(c(attr(MC,"knots"),attr(MC,"Boundary.knots")))) } } if (tolower(substr(dist, 1, 2)) == "po") { m.APC <- glm(D ~ MA + I(P - p0) + MP + MC, offset = log(Y), family = poisson) Dist <- "Poisson with log(Y) offset" } is.bin <- FALSE if (is.bin <- tolower(substr(dist, 1, 3)) %in% c("bin")) { m.APC <- glm(cbind(D, Y - D) ~ MA + I(P - p0) + MP + MC, family = binomial) Dist <- "Binomial regression (logistic) of D/Y" } m.AP <- update(m.APC, . ~ . - MC) m.AC <- update(m.APC, . ~ . - MP) m.Ad <- update(m.AP , . ~ . - MP) m.A <- update(m.Ad , . ~ . - I(P - p0)) m.0 <- update(m.A , . ~ . - MA) AOV <- anova(m.A, m.Ad, m.AC, m.APC, m.AP, m.Ad, test = "Chisq") colnames(AOV)[1:4] <- c("Mod. df.","Mod. dev.", "Test df.","Test dev.") AOV <- abs(AOV) AOV <- cbind(Model = c("Age", "Age-drift", "Age-Cohort", "Age-Period-Cohort", "Age-Period", "Age-drift"), AIC = c(AIC(m.A), AIC(m.Ad), AIC(m.AC), AIC(m.APC), AIC(m.AP), AIC(m.Ad)), AOV, 'Test dev/df' = AOV[,"Test dev."]/AOV[,"Test df."], 'H0 ' = c("","zero drift ", "Coh eff|dr.", "Per eff|Coh", "Coh eff|Per", "Per eff|dr.")) A.pt <- unique(A) A.pos <- match(A.pt, A) P.pt <- unique(P) P.pos <- match(P.pt, P) C.pt <- unique(P - A) C.pos <- match(C.pt, P - A) MA <- cbind(1, MA) # Determine the inner product (diagonal) for projection if (!mode(dr.extr) %in% c("character", "numeric")) stop("\"dr.extr\" must be of mode \"character\" or \"numeric\".\n") if (is.character(dr.extr)) { wt <- rep(1, length(D) ) drtyp <- "1-weights" if( toupper(substr(dr.extr, 1, 1)) %in% c("T","D") ) { wt <- D drtyp <- "D-weights" } else if( toupper(substr(dr.extr, 1, 1)) %in% c("L","R") ) { wt <- (Y^2)/D drtyp <- "Y^2/D-weights" } else if( toupper(substr(dr.extr, 1, 1)) %in% c("Y") ) { wt <- Y drtyp <- "Y-weights" } } if ( is.numeric(dr.extr) ) { if( length(dr.extr)==1 ) { wt <- D + dr.extr*Y drtyp <- paste("D+",dr.extr,"*Y weights",sep="") } if( length(dr.extr)==nrow(data) ) { wt <- dr.extr if( any(wt<0) ) stop("dr.extr must be non-negative") drtyp <- "extn-weights" } } Rp <- matrix(Rp, nrow = 1) Rc <- matrix(Rc, nrow = 1) xP <- Epi::detrend(rbind(Rp, MP), c(p0, P ), weight = c(0, wt)) xC <- Epi::detrend(rbind(Rc, MC), c(c0, P-A), weight = c(0, wt)) MPr <- xP[-1,,drop=FALSE] - has.pref * xP[rep(1, nrow(MP)),,drop=FALSE] MCr <- xC[-1,,drop=FALSE] - has.cref * xC[rep(1, nrow(MC)),,drop=FALSE] if (length(grep("-", parm)) == 0) { if (parm %in% c("ADPC", "ADCP", "APC", "ACP")) m.APC <- update(m.0, . ~ . - 1 + MA + I(P - p0) + MPr + MCr) drift <- rbind( ci.exp(m.APC, subset = "I\\(", alpha = alpha), ci.exp(m.Ad , subset = "I\\(", alpha = alpha) ) rownames(drift) <- c(paste("APC (",drtyp,")",sep=""), "A-d") if (parm == "ADCP") m.APC <- update(m.0, . ~ . - 1 + MA + I(P - A - c0) + MPr + MCr) if (parm == "APC") { MPr <- cbind(P - p0, MPr) m.APC <- update(m.0, . ~ . - 1 + MA + MPr + MCr) } if (parm == "ACP") { MCr <- cbind(P - A - c0, MCr) m.APC <- update(m.0, . ~ . - 1 + MA + MPr + MCr) } Age <- cbind(Age = A.pt, ci.exp(m.APC, subset = "MA", ctr.mat = MA[A.pos,,drop=FALSE], alpha = alpha))[order(A.pt),] Per <- cbind(Per = P.pt, ci.exp(m.APC, subset = "MPr", ctr.mat = MPr[P.pos,,drop=FALSE], alpha = alpha))[order(P.pt),] Coh <- cbind(Coh = C.pt, ci.exp(m.APC, subset = "MCr", ctr.mat = MCr[C.pos,,drop=FALSE], alpha = alpha))[order(C.pt),] colnames(Age)[-1] <- c("Rate", lu) colnames(Per)[-1] <- c("P-RR", lu) colnames(Coh)[-1] <- c("C-RR", lu) Type <- paste("ML of APC-model", Dist, ": (", parm, "):\n") Model <- m.APC } else { adc <- update(m.0, . ~ . - 1 + MA + I(P - A - c0)) adp <- update(m.0, . ~ . - 1 + MA + I(P - p0)) drift <- ci.exp(adc, subset = "I\\(") rownames(drift) <- "A-d" xP <- cbind(1, P - p0, MPr) xC <- cbind(1, P - A - c0, MCr) lP <- cbind(P - p0, MPr) lC <- cbind(P - A - c0, MCr) if (parm == "AD-C-P") { rc <- update(m.0, . ~ . - 1 + xC, offset = predict(adc, type = "link")) rp <- update(m.0, . ~ . - 1 + xP, offset = predict(adc, type = "link")) A.eff <- ci.exp(adc, subset = "MA", ctr.mat = MA[A.pos,], alpha = alpha) C.eff <- ci.exp( rc, subset = "xC", ctr.mat = xC[C.pos,], alpha = alpha) P.eff <- ci.exp( rp, subset = "xP", ctr.mat = xP[P.pos,], alpha = alpha) Model <- list( adc, rc, rp ) } else if (parm == "AD-P-C") { rp <- update(m.0, . ~ . - 1 + xP, offset = predict(adp,type = "link")) rc <- update(m.0, . ~ . - 1 + xC, offset = predict(rp,type = "link")) A.eff <- ci.exp(adp, subset = "MA", ctr.mat = MA[A.pos,], alpha = alpha) P.eff <- ci.exp(rp, subset = "xP", ctr.mat = xP[P.pos,], alpha = alpha) C.eff <- ci.exp(rc, subset = "xC", ctr.mat = xC[C.pos,], alpha = alpha) Model <- list( adp, rp, rc ) } else if (parm == "AC-P") { ac <- update(m.0, . ~ . - 1 + MA + lC) rp <- update(m.0, . ~ . - 1 + xP, offset = predict(ac,type = "link")) A.eff <- ci.exp(ac, subset = "MA", ctr.mat = MA[A.pos,], alpha = alpha) C.eff <- ci.exp(ac, subset = "lC", ctr.mat = lC[C.pos,], alpha = alpha) P.eff <- ci.exp(rp, subset = "xP", ctr.mat = xP[P.pos,], alpha = alpha) Model <- list( ac, rp ) } else if (parm == "AP-C") { ap <- update(m.0, . ~ . - 1 + MA + lP) rc <- update(m.0, . ~ . - 1 + xC, offset = predict(ap,type = "link")) A.eff <- ci.exp(ap, subset = "MA", ctr.mat = MA[A.pos,], alpha = alpha) P.eff <- ci.exp(ap, subset = "lP", ctr.mat = lP[P.pos,], alpha = alpha) C.eff <- ci.exp(rc, subset = "xC", ctr.mat = xC[C.pos,], alpha = alpha) Model <- list( ap, rc ) } Age <- cbind(Age = A.pt, A.eff)[order(A.pt),] Per <- cbind(Per = P.pt, P.eff)[order(P.pt),] Coh <- cbind(Cph = C.pt, C.eff)[order(C.pt),] colnames(Age)[-1] <- c("A.eff", lu) colnames(Per)[-1] <- c("P.eff", lu) colnames(Coh)[-1] <- c("C.eff", lu) Type <- paste("Sequential modelling", Dist, ": (", parm, "):\n") } # If the model was binomial we convert to probabilities o2p <- function(o) o/(1+o) if( is.bin ) Age[,-1] <- o2p(Age[,-1]) res <- list(Type = Type, Model = Model, Age = Age, Per = Per, Coh = Coh, Drift = drift, Ref = c(Per = if ( parm %in% c("APC","ADPC","Ad-P-C","AP-C") ) p0 else NA, Coh = if ( parm %in% c("ACP","ADCP","Ad-C-P","AC-P") ) c0 else NA ), Anova = AOV) # If a spline model is used, add a "Knots" component to the apc-object if (model %in% c("ns", "bs")) res <- c(res, list(Knots = Knots)) res$Age[, -1] <- res$Age[, -1] * scale if (print.AOV) { print(res$Type) print(res$Anova) } # Print warnings about reference points: if( !has.pref & parm %in% c("APC","ADPC") ) cat( "No reference period given; ", "reference period for age-effects is chosen as\n", "the median date of event: ", p0, ".\n" ) if( !has.cref & parm %in% c("ACP","ADCP") ) cat( "No reference cohort given; ", "reference cohort for age-effects is chosen as\n", "the median date of birth for persons with event: ", c0, ".\n" ) class(res) <- "apc" invisible(res) } Epi/R/apc.LCa.R0000644000175100001440000000354013471341545012543 0ustar hornikusers################################################################################### ### apc-LCa comparison apc.LCa <- function( data, # cohort reference for the interactions keep.models = FALSE, ... ) { models <- c("APa","ACa","APaC","APCa","APaCa" ) LCa.list <- list() length( LCa.list ) <- 5 names( LCa.list ) <- models for( mod in models ){ cat( mod, ":\n" ) LCa.list[[mod]] <- LCa.fit( data = data, model = mod, ... ) } APC <- apc.fit( data, npar = list( A=LCa.list[[2]]$knots$a.kn, P=LCa.list[[1]]$knots$p.kn, C=LCa.list[[1]]$knots$c.kn ) ) dev <- c( APC$Anova[c(2,5,3,4),"Mod. dev."], sapply( LCa.list, function(x) x$deviance ) ) df <- c( APC$Anova[c(2,5,3,4),"Mod. df."], sapply( LCa.list, function(x) x$df ) ) names(dev)[1:4] <- names(df)[1:4] <- gsub( "rift","", gsub("eriod","", gsub("ohort","", gsub( "-","", gsub( "ge", "", APC$Anova[c(2,5,3,4),"Model"]))))) if( keep.models ) return( list( dev = cbind( dev, df ), apc = APC, LCa = LCa.list ) ) else return( cbind( dev, df ) ) } show.apc.LCa <- function( x, dev.scale=TRUE, top="Ad", ... ) { if( is.list(x) ) x <- x[[1]] print(x) TM <- matrix(NA,9,9) rownames( TM ) <- colnames( TM ) <- paste( rownames(x), "\n", formatC(x[,1],format="f",digits=1) ) TM[1,2:3] <- TM[2,c(4,5)] <- TM[3,c(4,6)] <- TM[4,c(7,8)] <- TM[5,7] <- TM[6,8] <- TM[c(7,8),9] <- 1 bp <- list( x=c(50,30,70,50,10,90,30,70,50), y=c(90,70,70,50,50,50,30,30,10) ) if( !dev.scale ) boxes.matrix( TM, boxpos=bp, hm=1.5, wm=1.5, ... ) else { print( top ) print( str(x) ) print( rownames(x) ) bp$y <- 5+90*(pmin(x[top,1],x[,1])-x[9,1])/(x[top,1]-x[9,1]) boxes.matrix( TM, boxpos=bp, hm=1.5, wm=1.5, ... ) } } Epi/R/fit.add.r0000644000175100001440000000117212531361077012710 0ustar hornikusersfit.add <- function(y, rates.frame, cov.frame, start) { ## Modify covariate values rates.sum <- apply(rates.frame, 1, sum) cov.frame <- sweep(cov.frame, 1, rates.sum, "*") model.frame <- cbind(rates.frame, cov.frame) if (missing(start)) { glm.out <- fit.baseline(y, rates.frame) mu.inits <- predict(glm.out, type="response") glm.out <- glm(y~-1 + ., family=binomial(link=log), data=model.frame, mustart=mu.inits, maxit=100) } else { glm.out <- glm(y~-1 + ., family=binomial(link=log), data=model.frame, start=start, maxit=100) } return(list(rates=glm.out)) } Epi/MD50000644000175100001440000003056514421670514011332 0ustar hornikusers46831c7b8ac18359b0ae193e53f187d0 *CHANGES d172931b2a6bfe6871703f20d490541f *DESCRIPTION 1d5fc06ce265fc506429087a25f78064 *NAMESPACE d23061247aa9ef55d8572a5b94199208 *R/AaJ.Lexis.R fac3c7f01ab0bd6930cf3cbea20e6bcc *R/Aplot.R a031997be7388601dd1df6a28fc55328 *R/Cplot.R 6a1c4f4cbbf509d1f3c40b9f0adb6399 *R/Icens.R 4a6288a0cf99c7e1c4de816d18e6e8e7 *R/LCa.fit.R d802fc697f55ab0ef5ccd45e51776e46 *R/Lexis.diagram.R c6b992622881e60fb82ee4b8c3357c9d *R/Lexis.lines.R 5c9876c16a49711134662401dbaf7b6b *R/Lexis2msm.R 05c38381cc48ab25b681e8615ac31ea8 *R/Life.lines.R 330f1cf58e92430145b958a0f9d41571 *R/N2Y.r 8743609003b32036a7a1d02fb4b8e17b *R/NArray.R 74aace0e5df5492a0dbf3b94bd25406e *R/Ns.r e9f582b5dc17d07bf2df96de74441963 *R/Pplot.R 144bd0af57017a5d92c4a7bde47da4e7 *R/ROC.R 9561a4d0ebc68175aa4a5e9662b863d5 *R/Relevel.Lexis.R 566bde82417d3f255e04aab183eb8098 *R/Relevel.R 0e3e3d23b8ab79dcf3046828190462b2 *R/Termplot.R 3f30311f13dff23a36857e49a320536f *R/Wald.R 2e1eb708d3f4100776d4af667a02d96e *R/addCov.Lexis.R 932e903416d9ab2b665757325e018eb3 *R/addDrug.Lexis.R 3f1b3d03d4d91baa3625e6112d9bcb55 *R/apc.LCa.R dbfcc7a0fbe80653a2067cf9691d1b43 *R/apc.fit.R 3c53b3d667196c204fab811d2231ccd5 *R/apc.frame.R 47465f1ff476493433d2ae5634ce3b12 *R/apc.plot.R 8ce5a4c989947cb9d93becdecfde642c *R/as.Date.cal.yr.R 81ce578a7e479b90d62726d8fc9b2fd5 *R/bootLexis.R 749a7fe3b1a1515771c041e7be7dc8a0 *R/boxes.MS.R 1b95fefb49d0cbdc10b904a95416b21c *R/cal.yr.R f14431f76cee75cbd74e553b8dcd68ff *R/ccwc.R d6a00948be1e6347f70bbda4ec9d77aa *R/ci.Crisk.R 4f0836aba70ac9c228d5fd55fa0841db *R/ci.cum.R e208f9369649a651039af816ce9457fd *R/ci.lin.R 6f80c7b2b2120068cd16c043fbc29db3 *R/ci.mat.R 886f87cbd08266fa281e2ed7b3b3c253 *R/ci.pd.R 7637da11fdfb3612df5d73a64ee044e4 *R/clear.R e7e271d9c47316877e9726fdaaa9699f *R/clogistic.R 57aae8044ac8a43bcc0850beedeaef7f *R/coarse.Lexis.R d365bc4739ebb104b0318c1c9ee226fd *R/contr.2nd.R bcd4142d3bf3e4517397387fe43fdf95 *R/contr.cum.R 8064804ee2b1cfa0cea2b44a58106b0a *R/contr.diff.R 8ffc3eabb90b6b9b710109015779d853 *R/contr.orth.R efb8f1a3b97b41244275534855707b8b *R/crr.Lexis.r 67ece40fb56b896c7d546497853a530e *R/cutLexis.R b0d625f846ebf87e6aa7dfc188f4d7c1 *R/detrend.R a86250cce524f9fa2215c0c0cac4c6e7 *R/effx.match.r 79292fb5601cdd6ead350751f4c7ae59 *R/effx.r 284fde46d95bf072717bd340736a9303 *R/erl.R 822e02862de39625e5ed9ef6f84bdf39 *R/expand.data.r 67ce5a28408f42c7b65084195897b995 *R/fit.add.r 44eec3e5b106ee3f518beed49b4e0f9b *R/fit.baseline.R 8ffaebb81a92649b137ff8a4911841da *R/fit.mult.r 7c7059bf47c6421d6412a4bc53fc5950 *R/float.R bdb5671bebcdac29f7feb52749c08007 *R/foreign.R da7b5d41fe7876ef6bab01839b613939 *R/ftrend.R fa3fd08784cc9ba4731ad8b5b974be50 *R/gen.exp.R edb1f704b064f67363d224d10461413e *R/harm.R 94ed4488b8e02a418611d943c5e9068d *R/lexis.R f8eba91de17a8207c6303ffb7b34f0a7 *R/lls.R ae9b3e6688dda87762f9fce5482a69e8 *R/mat2pol.R 73c68c0b91606ad7c535611c96219867 *R/matshade.R f19e3a14cba0018c3ab3ce57886a7fbf *R/mcutLexis.R 79d6e0b02a2c4e98fbbfcd936b21d377 *R/mh.R 60852ef7fe8f92b232d47b44c5e7a19e *R/mod.Lexis.R 9e48e47769874a34f63a2e2d4e6ffffc *R/ncut.r 2a44a66ac4fe7eccab191f94957265e2 *R/pctab.R 9d62f0d8c66944abb94dac22b9b34cd6 *R/plotCIF.R bb1ce8ea65f95b7e1720c2686e4de799 *R/plotEst.R 57eecdd415b7d0f7dfad39825644add5 *R/plotevent.r e28288fe6d4c247c3c7fe0a05212e2d9 *R/poisreg.R c0229c2819d977a8c557a22dea1dd5fa *R/print.Icens.r cca51283f637927702fbe217367011eb *R/print.floated.R 961858aa39320463dffa6154c70c87f6 *R/projection.ip.r 0c2a2e493c190c4e74587b5127e9bef6 *R/rateplot.R db05c3578ba6f08df56c586da9683eb6 *R/rcutLexis.R 251d9ec19ef0ca158582f78d70255c23 *R/rm.tr.R 1f3397f4132776aadb6742688f3b75df *R/simLexis.R 358b6fa60093d8bbee969a76a88797c0 *R/splitLexis.R 6a097056fb666f3745ca22b93c24822a *R/stack.Lexis.R 616cfbd958f633f6eb89a18a5deec7d0 *R/stackedCIF.R fb143d532001643d3f74fbd2e114e976 *R/stattable.R 889282ea37a5a9d9bf7155d790cd9036 *R/summary.Icens.r 057cbd7b3ef60aff65a2724c6a6f002d *R/summary.Lexis.r 263c0279603c07039a53d4748c3a1ed8 *R/twoby2.R 53904292629435d35ec42f11329b2c60 *R/xgrep.R a1c1e6ac8ed9d40d0115ee01e222c2f9 *build/vignette.rds 07d8ea98f8655b442b3317ad02c8a344 *data/B.dk.rda ca4e1e1ae42828c0dc923140fae3b591 *data/BrCa.rda 0042edcc12916b370a84eeb3a2928723 *data/DMconv.rda 2745e0b6324dc25578719dbefcb3e419 *data/DMepi.rda bce702a7da65cf8a444c25e2cc01baa7 *data/DMlate.rda 393a44b7ee23046fdfa9bc2cb15107d0 *data/DMrand.rda e59a928ab927b4076e4616929ff87c7c *data/M.dk.rda 5f4f8df73d3f83618d34f3a887623448 *data/N.dk.rda 2c96fe0167b23676164b81a0160b88f8 *data/S.typh.rda c7bff0f822b10e2f6c1c2514167ac95f *data/Y.dk.rda a030521946f6c0855d018b806193663e *data/bdendo.rda 2ed64667e3923b7af891270b5400bee8 *data/bdendo11.rda db45a6979f7d3a96742e1564bba663b0 *data/births.rda 45e599e8fb117d1d448fa05f2406da4a *data/blcaIT.rda cead6bfc9c7ac424c1f73ac67c289a46 *data/brv.rda da49de811b5982e262d9098e2d30f7c5 *data/diet.rda e6f49dd2de92900d70bc4fef46ad1894 *data/ewrates.rda e14d73ecee4d7a348b18ffcb6bf5b787 *data/gmortDK.rda 3bbe1215f5061da483d0df4641d2dc8c *data/hivDK.rda 5b8d0ef89552d671db34d9a2e44b49f8 *data/lep.rda e46641e40a16065d93dc0b3134c14159 *data/lungDK.rda de556869756130cb0bcfdc8f9e9ebd65 *data/mortDK.rda 2d823cc5842b072ad320373019d0c60c *data/nickel.rda ad57e9bed0584f4a56c6feb5a6e04ae5 *data/occup.rda 748540446a7ec6059c602095eef677a0 *data/pr.rda 10f54fddefd6d5ce23cad6a039cdebde *data/st2alb.rda feb2d87d8fb4ee913e1653a12c98a79d *data/st2clin.rda aa9a107b89c8c5cbf13ca61dfcf60ec8 *data/steno2.rda 7e0de4e8835e5afa6360f734fac61886 *data/testisDK.rda c3b9164cdeee823c3f0d47085bfd1055 *data/thoro.rda 543026d4d6474e1e49f843beb44c18ab *inst/CITATION 1fbe9d7598dfdff2e81cc7ffbc2ae73d *inst/doc/addLexis.R dc6ef52c17fc9498af8edc65cd4249d4 *inst/doc/addLexis.pdf 80fc575ec177536192cbaee54ea20857 *inst/doc/addLexis.rnw 8ed67e222b4aec44e38d16875ae4ec1e *inst/doc/crisk.R eca0f4117c08d074172d6dc0f0b5bff0 *inst/doc/crisk.pdf 93561c244a4a32eadaf7fa915e2a29dc *inst/doc/crisk.rnw 0804763096917386852886e6ca639a32 *inst/doc/flup.R cdf746d65e688ecee4edd131d062e780 *inst/doc/flup.pdf dac15f30502722567e71b95ad1b8d781 *inst/doc/flup.rnw 67979a589ccf172a85bae12a99e38b94 *inst/doc/index.html a269f61604068eed060ea9ee1418f931 *inst/doc/simLexis.R 143b0efca704663a2eb61021b1b9bfcb *inst/doc/simLexis.pdf 5a17794c68fda84ae64ea474bebd86d8 *inst/doc/simLexis.rnw f360105edf2bdc9bac5592e79ea65a97 *inst/doc/yll.R 354040f6160def42648eb58fcced0103 *inst/doc/yll.pdf 4c127952308ae13933f8ae598600424e *inst/doc/yll.rnw 84063b4237768b0d0d4b52e5dedf6070 *man/AaJ.Lexis.Rd 317bb6ebeaec5e7376b609d7e382c166 *man/B.dk.Rd ffe380e7252698c820a448b587714b49 *man/BrCa.Rd 3abc5c20e62c874d70dcb2688ad2cce5 *man/DMconv.Rd abe65ad85f5ed8ee4a4efbe865dc4c13 *man/DMepi.Rd fd6111e72286fe5e4ea652bd2de43791 *man/DMlate.Rd 69b5075e6ad38e535c6251ad11c0ddb9 *man/Epi.Rd aad6d76980bfe9b529979a9505dd925b *man/Icens.Rd 8a42515e5eb77276bb3636d6b5554090 *man/LCa.fit.Rd be549b9afdb7a39b13ec94c6b9f9747d *man/Lexis.Rd ff237551a22848d361550c2d11e69107 *man/Lexis.diagram.Rd cb48c6097ea268ef1ff610d4e4c813a1 *man/Lexis.lines.Rd 267ec455bf22c25cea6ec5821188ad36 *man/Lexis2msm.Rd b4b2ca144feacece204f86bc6640d51a *man/Life.lines.Rd daf66f950320e836b8ce1d2bd37cdc41 *man/M.dk.Rd 6ae7494a426801b9944c37190c09b3ee *man/N.dk.Rd 9810c11864c0863613c74e1846424e7c *man/N2Y.Rd 424aecfdd664b3123ad4815880aa3761 *man/NArray.Rd cddc9fd049b34de27a61fd1bb119d998 *man/Ns.Rd 3008c13fb36785f07e4e2b3ab4e49163 *man/ROC.Rd b6bf46101c9e32978e04297fa2ecb241 *man/Relevel.Rd bb2162d557dfb7685edac64ac3213b6c *man/S.typh.Rd 9351888a37017068f2c9ac8b843c846d *man/Termplot.Rd 3995803f52a91af5da0e7ba9f45d0769 *man/Y.dk.Rd 7330a74e24e07d5f51199f6fc171c88a *man/addCov.Lexis.Rd cc69f87fb1a63a8eac92b8a6843ec34e *man/addDrug.Lexis.Rd 4aa9775e619aedf1cf539b71fbc348f6 *man/apc.LCa.Rd 6ae510f69bbae0c560915c9759ba1253 *man/apc.fit.Rd b2df9e1ef085b33cb9f8d4bd8f62a066 *man/apc.frame.Rd bedfcab650cc145b5eecd24c2db0f703 *man/bdendo.Rd ff76ca0065c867d889a6dc622a81441f *man/births.Rd 8dc11840302a388e4f26892335d5d888 *man/blcaIT.Rd 87644ae01b40269fee4a2069c982f4df *man/bootLexis.Rd 60c379efebadb817280fbf1e72e70b89 *man/boxes.MS.Rd 18d942d375c5d5f6899291bf9cd1fe11 *man/brv.Rd 21169ba267913e5a3ca6589b23d3bd88 *man/cal.yr.Rd effba2c17ade00f0afd10184a073d34c *man/ccwc.Rd 2edf5bafec999840c2319c375478a10c *man/ci.Crisk.Rd 9cc97cde3de3d9b7e2c37c3b8cd043c3 *man/ci.cum.Rd b133e9a5d76bb11d2899f1357866a128 *man/ci.lin.Rd 831f321e2d20d108151f6e478efde3e7 *man/ci.pd.Rd 128c0b1d00a69e41d131a6f74a1bae23 *man/clogistic.Rd cf5e5a6e18e07b7bb8d70dc0417e6166 *man/contr.cum.Rd 9aa205309fc22776579143524b37cb5a *man/crr.Lexis.Rd 835652306eb9cbc537ca585e8939d7ee *man/cutLexis.Rd 294199aca45f1ed1a7208ed78e4481a4 *man/detrend.Rd 8c51a1104754ab84c116f7e4f281ea9c *man/diet.Rd b7fe5bdd954d42417d8c37ea7c5c39a3 *man/effx.Rd 3c3cc3b1ecabece6b7709c1b147bab4e *man/effx.match.Rd f281dede5c1a091f9dca30199fb41bec *man/erl.Rd 0dc62e726cdff6694774fab66595ee81 *man/ewrates.Rd 2354b1ba8931880f3377bfedcc1e13c9 *man/expand.data.Rd 162733de2fd66ecb561e5d60d53c1609 *man/fit.add.Rd 4b4edfa7b120f9b28299089b7584cc27 *man/fit.baseline.Rd 2c35107b90ac98f16a10f4a09f277605 *man/fit.mult.Rd bca8b8c3452180e63d4d22885b04e3ce *man/float.Rd 719217525d9bd29409827d4f24054b82 *man/foreign.Lexis.Rd e5a57a203cb91e9680dedc9023779e59 *man/ftrend.Rd c5cc45fada3c644af88bc65a4f8c576b *man/gen.exp.Rd cbbc2a23f902d83ba2527b27b5ed3adb *man/gmortDK.Rd a8c6ac7de060971f95b34f5014ded40c *man/harm.Rd d9f1d31e109d6058a2160ca0aa49bf81 *man/hivDK.Rd a0a1a30226efae3d86645e79803f01a9 *man/in.span.Rd 9c3b059921d728298ccff73298b4dd31 *man/lep.Rd a9c6804fd2a3d407b74f88975698782a *man/lgrep.Rd 8a3cc7360e53c73889d010d03d359b0b *man/lines.apc.Rd 78125ba49d54905fb727765dc8997796 *man/lls.Rd 661ec298ffcd0f39cf55c5d033e04fd1 *man/lungDK.Rd 888d44fff78e5ee9cb9f58c703a2f241 *man/mat2pol.Rd e931751cea782a953aa599ba211679ff *man/matshade.Rd f9a949cfca0f20237b5e5c0d763c15e7 *man/mcutLexis.Rd 3c462c4ce7ca1ce4b8c6fef50b3c7623 *man/merge.Lexis.Rd 34c530c36a3a1a7447ff8eea58f42084 *man/mh.Rd dca077219775fe032677f543b5539506 *man/mod.Lexis.Rd 2ecfec2d86e80b9bbcc2c3a253348edd *man/mortDK.Rd 8aac1f36334a9ad410792dd49c170a16 *man/ncut.Rd 322261ba370afa2c470c78be18f569fd *man/nice.Rd 05bd25340716d0805cbc7eb433896206 *man/nickel.Rd 0e0ff2e0894523b3878213d03afcc8cf *man/occup.Rd bd9d3936e1c6a70a6cf439db641da5ab *man/pc.lines.Rd ec157d8bc7e36cb16cef3112183e6cb9 *man/pctab.Rd 50c0516a536004d7f4ce91ef1bbfd8c9 *man/plot.Lexis.Rd c4ebef5ccd8dc5c001ec26095beac8f1 *man/plot.apc.Rd b324ccf765a5ad308bb7fc29d0c70ce5 *man/plotCIF.Rd 9eaa63cdfda554940dc36c6b793fee56 *man/plotEst.Rd b0047a7bab6a20b153485db9bd338394 *man/plotevent.Rd 5ec37fecb0bf62364a9ccbcff2126a19 *man/poisreg.Rd e67824a4cb4bb5e2f545801b49e09aae *man/pr.Rd 650851ce4e70b3cb68b90854b0a227ca *man/projection.ip.Rd 5f9126ea22dd332ad3c9ecd051010364 *man/rateplot.Rd d7cd3994998dd6e158ac37339310f448 *man/rbind.Lexis.Rd ec97e56a596828f807b4d56ef29ab5b7 *man/rcutLexis.Rd c3dcb0cb9643afc3119c741abe22943a *man/rm.tr.Rd 38f963a219b58fa65b517f1eb83a6633 *man/simLexis.Rd a22aa8901f1f717b6d3a7ed086bc8e02 *man/splitLexis.Rd 9398717a32a374024fae34ab89344011 *man/stack.Lexis.Rd 9dabf811165e64ecc556be239d9b4d57 *man/start.Lexis.Rd 4f43436fc863747dad4fcdd566948039 *man/stattable.Rd 73cf4597fcb4a9d019bda47431b095be *man/stattable.funs.Rd 4b668d31d2d8cd3ae6abf92d9bea36ea *man/steno2.Rd f64993885912b74636bb8d1517cbff7e *man/subset.Lexis.Rd 20299d910727fd4417969174aa1ccbed *man/summary.Lexis.Rd 14711d23ae0b89d9d22b9f3b07211093 *man/testisDK.Rd e3446824b09ea4ad8e8a0ddfc1987eef *man/thoro.Rd 6ea9cf64475187fa2f402275c40573a7 *man/time.band.Rd 120a43f3c8f4bff2fd46ef1c4137a3a6 *man/time.scales.Rd f4887b737dfb05103aaf7efed11fb281 *man/transform.Lexis.Rd 02fc311541fae16a5d3a580a04925050 *man/twoby2.Rd bcc0556f8f0a158637592731928cf835 *src/chinv2.c 3e3a51847b5767274f0945350e947726 *src/cholesky2.c 09bf10fed80e805e7e58db9794e5edcc *src/chsolve2.c 872ef5e7ef0c1941c17d7dd612f6b1c3 *src/clogit.c d77bd820f6ce7dc7883c9e2813a44c89 *src/init.c a1a00fa8403c30ed01546f4fe969997e *vignettes/2Bappended2addLexisrnw.txt 80fc575ec177536192cbaee54ea20857 *vignettes/addLexis.rnw c34f61618c462e3f05dec2d51c87c0ea *vignettes/cpall 93561c244a4a32eadaf7fa915e2a29dc *vignettes/crisk.rnw 8e9e0101fba7e6a5de8bc87aa45c5e77 *vignettes/fixall dac15f30502722567e71b95ad1b8d781 *vignettes/flup.rnw 5a17794c68fda84ae64ea474bebd86d8 *vignettes/simLexis.rnw e18d102389aa23a92012542bb87debdd *vignettes/toparticle.tex b4b55559db3e7a6c0a8eb3632ead0d8e *vignettes/topreport.tex 4ca326289be7225df127914243ab35fb *vignettes/useful.tex 4c127952308ae13933f8ae598600424e *vignettes/yll.rnw Epi/inst/0000755000175100001440000000000013750775251011776 5ustar hornikusersEpi/inst/doc/0000755000175100001440000000000014421664377012545 5ustar hornikusersEpi/inst/doc/crisk.rnw0000644000175100001440000010462114224464626014410 0ustar hornikusers%\VignetteIndexEntry{Competing risks with Lexis, parametric rates and simulation based confidence intervals} \SweaveOpts{results=verbatim,keep.source=TRUE,include=FALSE,eps=FALSE} \documentclass[a4paper,dvipsnames,twoside,12pt]{report} % ---------------------------------------------------------------------- % General information for the title page and the page headings \newcommand{\Title}{Competing risks with\\ \texttt{Lexis}, parametric rates and\\ simulation based confidence intervals} \newcommand{\Tit}{CmpRskParSim} \newcommand{\Version}{Version 4} \newcommand{\Dates}{April 2021} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \href{mailto:b@bxc.dk}{\tt b@bxc.dk} \\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./crisk} <>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) @ % \chapter{Competing risks} \section{Concepts} The concept of competing risks is one where persons in a given state, ``alive'', say, are subject to a number of different causes of death, ``cause1'', ``cause2'' etc. Causes of death are required to be exhaustive and mutually exclusive. That is, you will eventually die from one of the designated causes, and you can only die from one. The observed data will be a survival time and an exit status which is either ``censored alive'' or one of the causes. In situations where the causes are not causes of death but other events, it is implicit that we only consider the first occurrence of an event from the state ``alive'', and ignore what occurs after. \subsection{Cause specific rates} The likelihood for observations from a competing risk scenario is a function of the cause-specific transition rates, and is a \emph{product} of the likelihoods that would emerge if we considered each cause as being the only one possible. Thus analysis is in principle straight forward: estimate a model for each of the cause-specific rates; these will together form a complete model for the competing risks problem. If the cause-specific rates are all we want to assess then we are done. \subsection{Cumulative risks} In addition to the rates we might however also be interested in the \emph{survival} probability, the \emph{cumulative risks} and the \emph{sojourn times} for each cause. The survival is the probability of still being alive at a given time after entry; a function of time since entry. The cumulative risk of cause $c$ is the probability of having died from cause $c$ as a function of time since entry. \subsection{Sojourn times} The sojourn time for cause $c$ is the time spent in the ``cause $c$'' state before a given time, $t$, say. This is also called the expected lifetime \emph{truncated} at the time $t$. For the state ``alive'' it will be the expected time alive before $t$, for the causes it can be interpreted as the time lost to the cause before time $t$. \subsection{The time} The cause specific rates are just functions of some time scale, be that age or time since entry to the study or even calendar time. But the cumulative risks are probabilities that refer to time \emph{since} some origin. Thus cumulative risks (and survival) are only meaningful in relation to a time that begins at 0. Though not a formal mathematical requirement this implies that we should have data starting at time 0. If we were to use age as timescale for cumulative risk, we would want data available since birth; if we only had observations where most people entered between 20 and 40 years of age, we could mathematically compute cumulative risk by age, but it would nonsense. \section{Estimating cumulative risks} Each of the cumulative risks is a function of the survival function which in turn depends on \emph{all} rates. Specifically, if the cause-specific rates are $\lambda_c(t), c=1,2,\ldots$, then the survival function (probability of being alive at time $t$) is: \begin{equation} S(t) = \exp\left( \!-\!\int_0^t \sum_c \lambda_c(s) \dif s \right) = \exp\left(\!-\! \sum_c \Lambda_c(t) \right) \label{eq:Sv} \end{equation} The quantities $\Lambda_c(t) = \int_0^t \lambda_c(s) \dif s$ are called cumulative \emph{rates} (probabilists call them integrated intensities), although they are not rates. Cumulative rates are dimensionless, but they have no probability interpretation of any kind. The cumulative \emph{risk}, the probability of dying from cause $c$ before time $t$, $R_c(t)$ is: \begin{equation} R_c(t) = \int_0^t \!\! \lambda_c(u) S(u) \dif u = \int_0^t \!\! \lambda_c(u) \exp\left(\!-\! \sum_c \Lambda_c(u) \right) \! \dif u \label{eq:R} \end{equation} Models for the cause-specific rates can produce estimated transition rates $\lambda_c$ at closely spaced intervals, and the cumulative risks can then be estimated from these by simple numerical integration; this is illustrated in the next chapter. Note that at any one time every person is either alive or dead from one of the causes, so the sum of the survival and the cumulative risks is always 1: \[ 1 = S(t) + R_1(t) + R_2(t) + \cdots, \forall t \] \subsection{Confidence intervals} But even if we from the modeling of the $\lambda_c$s may have standard errors of $\log(\lambda_c)$, the standard errors of the $R_c$s will be analytically intractable from these. In practice, the only viable way to get confidence intervals for the cumulative risks, $R_c$, is by calculation of a set of rates $\lambda_c(t)$ by sampling from the posterior distribution of the parameters in the models for $\log(\lambda_c(s))$, and then compute the integrals numerically for each simulated sample, according to formulae \ref{eq:Sv} and \ref{eq:R}. The simulation approach also allows calculation of confidence intervals for sums of the cumulative risks, $R_1(t)+R_2(t)$, for example, which will be needed if we want to show stacked cumulative risks. Finally, it will also allow calculation of standard errors of sojourn times in each of the states ``alive'' and ``cause1'', ``cause2'',\ldots. While the latter two may not be of direct interest, then \emph{differences} between such sojourn times between different groups can be interpreted as years of life lost to each cause between groups. \chapter{Example data} \section{A \texttt{Lexis} object} As an illustrative data example we use the (fake) diabetes register data; we set up the Lexis object, an then cut the follow-up time at dates of OAD and Ins: <<>>= library(Epi) data(DMlate) Ldm <- Lexis(entry = list( per = dodm, age = dodm-dobth, tfd = 0 ), exit = list( per = dox ), exit.status = factor( !is.na(dodth), labels = c("DM","Dead") ), data = DMlate ) summary(Ldm, t = T) Mdm <- mcutLexis( Ldm, wh = c('dooad','doins'), new.states = c('OAD','Ins'), seq.states = FALSE, ties = TRUE ) summary(Mdm) @ We initially split the FU before drug inception in intervals of 1/12 year, creating a \texttt{Lexis} object for a competing risks situation with three possible event types: <<>>= Sdm <- splitLexis(factorize(subset(Mdm, lex.Cst == "DM")), time.scale="tfd", breaks = seq(0, 20, 1/12)) summary(Sdm) @ % We can illustrate the follow-up in the full data set and in the restricted <>= boxes(Mdm, boxpos = list(x = c(15, 50, 15, 85, 85), y = c(85, 50, 15, 85, 15)), scale.R = 100, show.BE = TRUE) @ % \insfig{boxes5}{0.8}{The transitions in the multistate model, where follow-up is extended also after beginning of first drug exposure. Rates in brackets are per 100 PY.}% <>= boxes(Relevel(Sdm, c(1, 4, 2, 3)), boxpos = list(x = c(15, 85, 80, 15), y = c(85, 85, 20, 15)), scale.R = 100, show.BE = TRUE ) @ % \insfig{boxes4}{0.8}{The transitions in the competing risks model, where follow-up is stopped at drug exposure. By that token only the \texttt{DM} state has person-years; a characteristic of a competing risks situation.} \section{Models for rates} Now that we have set up a dataset with three competing events, we can model the cause-specific rates separately by time from diagnosis as the only underlying time scale. This is done by Poisson-regression on the time-split data set; since the dataset is in \texttt{Lexis} format we can use the convenience wrapper \texttt{gam.Lexis} to model rates a smooth function of time (\texttt{tfd}). Note that we only need to specify the \texttt{to=} argument because there is only one possible \texttt{from} for each \texttt{to} (incidentally the same for all \texttt{to} states, namely \texttt{DM}): <<>>= mD <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Dead') mO <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'OAD' ) mI <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Ins' ) @ % With these models fitted we can compute the rates, cumulative rates and the cumulative risks and sojourn times in states using the usual formulae. First we compute the rates in intervals of length 1/100 years. Note that these models only have time since diagnosis as covariates, so they are the counterpart of Nelson-Aalen estimates, albeit in a biologically more meaningful guise. The points where we compute the predicted rates are midpoints of intervals of length 1/100 year. These points are unrelated to the follow-up intervals in which we split the data for analysis---they were 1 month intervals, here we use 1/100 year (about 3.7 days): <<>>= int <- 1 / 100 nd <- data.frame(tfd = seq(0, 10, int)) rownames(nd) <- nd$tfd str(nd) @ % With this we can show the rates as a function of the time since entry (diagnosis of diabetes): <>= matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.02,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) @ % \insfig{rates}{0.9}{Estimated rates from the \textrm{\tt DM} state, estimates are from \textrm{\tt gam} models fitted to data split in 1 month intervals (1/12 year, that is). Rates of \textrm{\tt OAD} is in the vicinity of 0.1/year, and mortality about half of this. Rates of insulin start among persons on no other drug are beginning high, then decreasing with a nadir at about 4 years and then increase to a peak at 8 years.} Note that the graph in figure \ref{fig:rates} is not normally shown in analyses of competing risks; the competing cause-specific rates are hardly ever shown. I suspect that this is frequently because they are often modeled by a Cox model and so are buried in the model. \section{Cumulative rates and risks} For the calculation of the cumulative rates and state probabilities, we need just the estimated rates (without CIs). The formulae \ref{eq:Sv} and \ref{eq:R} on page \pageref{eq:R} are transformed to \R-code; starting with the rates, $\lambda_\text{D}$ as \texttt{lD} etc: <<>>= # utility function that calculates the midpoints between sucessive # values in a vector mp <- function(x) x[-1] - diff(x) / 2 # # rates at midpoints of intervals lD <- mp(ci.pred(mD, nd)[,1]) lI <- mp(ci.pred(mI, nd)[,1]) lO <- mp(ci.pred(mO, nd)[,1]) # # cumulative rates and survival function at right border of the intervals LD <- cumsum(lD) * int LI <- cumsum(lI) * int LO <- cumsum(lO) * int Sv <- exp(- LD - LI - LO ) # # when integrating to get the cumulative risks we use the average # of the survival function at the two endpoints (adding 1 as the first) Sv <- c(1, Sv) rD <- c(0, cumsum(lD * mp(Sv)) * int) rI <- c(0, cumsum(lI * mp(Sv)) * int) rO <- c(0, cumsum(lO * mp(Sv)) * int) @ % Now we have the cumulative risks for the three causes and the survival, computed at the end of each of the intervals. At any time point the sum of the 3 cumulative risks and the survival should be 1: <<>>= summary(rD + rI + rO + Sv) oo <- options(digits = 20) cbind(summary(Sv + rD + rI + rO)) options(oo) @ % We can then plot the 3 cumulative risk functions stacked together using \texttt{mat2pol} (\texttt{mat}rix to \texttt{pol}ygons): <>= zz <- mat2pol(cbind(rD, rI, rO, Sv), x = nd$tfd, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen")) text(9, mp(zz["9", ]), c("Dead", "Ins", "OAD"," DM"), col = "white") box(col = "white", lwd = 3) @ % $ \insfig{stack}{0.9}{Probabilities of being in the 4 different states as a function of time since diagnosis. Note that \texttt{OAD} means that OAD was initiated first, and similarly for \texttt{Ins}. We are not concerned about what occur after these events. \texttt{Dead} means dead without being on any drug.} \section{Sojourn times} The sojourn times in each of the states is just the area of each of the coloured parts of figure \ref{fig:stack}. Since the $y$-dimension of the plot is probability (dimensionless) and the $x$-axis has dimension time, the computed areas will have dimension time. Normally we will not report the sojourn times as functions of (truncation) time, but only report them at a few select truncation points, such as 5 or 10 years. Calculation of the 10 year sojourn times would be straight-forward as integrals from 0 to 10: <<>>= Sj <- c(sjA = sum(Sv * int), sjD = sum(rD * int), sjI = sum(rI * int), sjO = sum(rO * int)) c(Sj, sum(Sj)) @ % We see that there is a small rounding error in the calculations; the sum should really be 10. \chapter{Confidence intervals} Besides confidence intervals for each of the 4 cumulative risks, we may also be interested in confidence intervals for \emph{sums} of any subset of the cumulative risks, corresponding to the borders between the colours in figure \ref{fig:stack}. If we only had two competing risks (and hence three states) the latter would not be an issue, because the sum of any two cumulative risks will be 1 minus the cumulative risk of the remainder, so we could get away with the confidence intervals for the single cumulative risks. This is the reason we have chosen an example with 3 competing risks and not just 2; we then have 4 probabilities to sum in different order. A short look at the formulae for cumulative risks will reveal that analytic approximation to the standard error of these probabilities (or some transform of them) is not really a viable way to go. Particularly if we also want confidence intervals of sums of the state probabilities as those shown in stacked plots. So in practice, if we want confidence intervals not only for the state probabilities, but also for any sum of subsets of them we would want a large number of simulated copies of the cumulative risks, each copy of the same structure as the one we just extracted from the model. Confidence intervals for sojourn times (i.e. time spent) in each state up to a given time, would come almost for free from the simulation approach. This means that we must devise a method to make a prediction not from the estimated model, but where we instead of the model parameters use a sample from the posterior distribution of the estimated parameters. Here the posterior distribution of the parameters is taken to be the multivariate normal distribution with mean equal to the vector of parameter estimates and variance-covariance matrix equal to the estimated variance-covariance matrix of the parameters. Precisely this approach is implemented in \texttt{ci.lin} via the \texttt{sample} argument; we can get a predicted value from a given prediction data frame just as from \texttt{ci.pred} resp. \texttt{ci.exp}; here is an indication of different ways of getting predicted values of the cause-specific rates: <<>>= head(cbind(ci.pred(mI,nd), ci.exp(mI,nd) )) @ % Here is an illustration of the prediction with model based confidence intervals for the rates, alongside predictions based on samples from the posterior distribution of the parameters in the model: <<>>= str(ci.lin(mI, nd, sample = 4)) head(cbind(ci.pred(mI,nd), exp(ci.lin(mI, nd, sample = 4)))) @ % The simulation is taking place at the parameter level and the transformation to survival and cumulative risks is simply a function applied to every simulated set of rates. \section{Joint models for several transitions} Note that we are implicitly assuming that the transitions are being modeled separately. If some transitions are modeled jointly---for example assuming that the rates of \texttt{OAD} and \texttt{Ins} are proportional as functions of time since entry, using one model---we are in trouble, because we then need one sample from the posterior generating two predictions, one for each of the transitions modeled together. Moreover the model will have to be a model fitted to a \texttt{stack.Lexis} object, so a little more complicated to work with. A simple way to program would be to reset the seed to the same value before simulating with different values of \texttt{nd}, this is what is intended to be implemented, but is not yet. This is mainly the complication of having different prediction frames for different risks in this case. However this is not a very urgent need, since the situation where you want common parameters for different rates out of a common state is quite rare. \section{Simulation based confidence intervals} These ideas have been implemented in the function \texttt{ci.Crisk} (\texttt{c}onfidence \texttt{i}ntervals for \texttt{C}umulative \texttt{risk}s) in the \texttt{Epi} package: We can now run the function using the model objects for the three competing events, using a common prediction data frame, \texttt{nd} for the rates. The time points in the frame must be so closely spaced that it makes sense to assume the rates constant in each interval; here we use intervals of length 1/100 years, approximately 4 days: <<>>= system.time( res <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = 0:1000 / 100), nB = 1000, perm = 4:1)) str(res) @ % As we see, the returned object (\texttt{res}) is a list of length 4, the first 3 components are 3-way arrays, and the last the vector of times of the first dimension of the arrays. The latter is mainly for plotting convenience. The three first components of \texttt{res} represent: \begin{itemize} \item \texttt{Crisk} \texttt{C}umulative \texttt{risk}s for each state \item \texttt{Srisk} \texttt{S}tacked cumulative \texttt{risk}s across states \item \texttt{Stime} \texttt{S}ojourn \texttt{time}s in each state, truncated at each point of the time dimension. \end{itemize} The first dimension of each array is time corresponding to endpoints of intervals of length \texttt{int}, (normally assumed starting at 0, but not necessarily). The second dimension is states (or combinations thereof). The last dimension of the arrays is the type of statistic; \texttt{50\%} is the median of the samples, and the bootstrap intervals as indicated; taken from the \texttt{alpha} argument. The argument \texttt{perm} governs in which order the state probabilities are stacked in the \texttt{Srisk} element of the returned list, the default is the states in the order given in the list of models in the first argument to \texttt{ci.Crisk} followed by the survival. If we want the bootstrap samples to make other calculations we can ask the function to return the bootstrap samples of the rates by using the argument \texttt{sim.res = 'rates'} (defaults to \texttt{'none'}): <<>>= system.time( rsm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = 0:1000 / 100), nB = 500, sim.res = 'rates')) str(rsm) @ % This is 500 bootstrap samples of the rates evaluated at the 1001 endpoints of the intervals. Alternatively we can get the bootstrap samples of the cumulative risks by setting \texttt{sim.res = 'crisk'}: <<>>= system.time( csm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = 0:1000 / 100), nB = 500, sim.res = 'crisk')) str(csm) @ % These are 500 simulated samples of the cumulative risks evaluated at the 1001 endpoints of the intervals, and also includes the survival probability in the first slot of the \nth{2} dimension of \texttt{csm}. \section{Simulated confidence intervals for rates} In figure \ref{fig:rates} we showed the rates with confidence intervals from the model. But in \texttt{rsm} we have 500 (parametric) bootstrap samples of the occurrence rates, so we can derive the bootstrap medians and the bootstrap c.i.---remember that the first slice of the \nth{3} dimension is the model estimates that should not enter the calculations. We use the function \texttt{mnqt} to compute the model estimate and the mean, median and quantiles of the simulated values. <<>>= Brates <- aperm(apply(rsm, 1:2, Epi:::mnqt), c(2,3,1)) str(Brates) @ % Then we can plot the bootstrap estimates on top of the estimates based on the normal approximation to distribution of the parameters. They are---not surprisingly---in close agreement since they are both based on an assumption of normality of the parameters on the log-rate scale: \insfig{rates-ci}{0.9}{Estimated rates from the \textrm{\tt DM} state, estimates are from \textrm{\tt gam} models fitted to data split in 1 month intervals (1/12 year, that is). The white dotted curves are the bootstrap medians, black dotted curves are the bootstrap 95\% c.i.s.} <>= matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.1,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) matlines(nd$tfd, cbind(Brates[,"Dead",], Brates[,"Ins" ,], Brates[,"OAD" ,])*1000, col = c("white","black","black"), lty = 3, lwd=c(3,1,1)) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) @ % \section{Confidence intervals for cumulative risks} In the \texttt{Crisk} component of \texttt{res} we have the cumulative risks as functions of of time, with bootstrap confidence intervals, so we can easily plot the three cumulative risks: \insfig{crates}{0.9}{Cumulative risks for the three types of events, with 95\% bootstrap-based confidence intervals as shades.} <>= matshade(res$time, cbind(res$Crisk[,"Dead",], res$Crisk[,"Ins" ,], res$Crisk[,"OAD" ,]), plot = TRUE, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Cumulative probability", col = c("black","red","blue")) text(8, 0.3 + c(1,0,2)/25, c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) @ % $ \section{Confidence intervals for stacked cumulative risks} Unlike the single cumulative risks where we have a confidence interval for each cumulative risk, when we want to show the stacked probabilities we must deliver the confidence intervals for the relevant sums, they are in the \texttt{Srisk} component of \texttt{res}. <<>>= str(res$Crisk) str(res$Srisk) @ % But we start out by plotting the stacked probabilities using \texttt{mat2pol} (\texttt{mat}rix to \texttt{pol}ygon), the input required is the single components from the \texttt{Crisk} component. Then we add the confidence intervals as white shades (using \texttt{matshade}): \insfig{stack-ci}{0.9}{Probabilities of being in the 4 different states as a function of time since diagnosis. Note that \texttt{OAD} means that OAD was initiated first, and similarly for \texttt{Ins}. We are not concerned about what occurs \emph{after} these events. \texttt{Dead} means dead without being on any drug.\newline The white shadings around the borders between coloured areas represent the 95\% confidence intervals for the (sum of) probabilities.} <>= zz <- mat2pol(res$Crisk[,c("Dead","Ins","OAD","Surv"),1], x = res$time, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen") ) text( 9, mp(zz["9",]), c("Dead","Ins","OAD","DM"), col = "white" ) matshade(res$time, cbind(res$Srisk[,1,], res$Srisk[,2,], res$Srisk[,3,]), col = 'transparent', col.shade = "white", alpha = 0.3) @ % $ \section{Sojourn times} From the \texttt{Stime} component of the \texttt{res} we can derive the estimated time spent in each state during the first, say, 5 or 10 years: <<>>= str(res$Stime) @ % We extract the 5 and 10 years components: <<>>= s510 <- res$Stime[paste(1:2*5),,] dimnames(s510)[[1]] <- c(" 5 yr","10 yr") round(ftable(s510, row.vars=1:2), 2) @ % So we see that the expected life lived without pharmaceutical treatment during the first 10 years after DM diagnosis is 4.31 years with a 95\% CI of (4.21;4.42), and during the first 5 years 2.77 (2.72;2.82). \chapter{A simple illustration} This is a terse cook-book illustration of how to use the \texttt{ci.Crisk} function. \section{Data} First we simulate some causes of death in the \texttt{DMlate} data set; first sample numbers 1, 2, 3 representing causes of death in \texttt{DMlate}: <<>>= data(DMlate) set.seed(7465) wh <- sample(1:3, nrow(DMlate), r=T, prob = c(4, 2, 6)) @ % Those not dead are changed to 0: <<>>= wh[is.na(DMlate$dodth)] <- 0 @ % Define a factor in DMlate defining exit status as either alive or one of the three causes of death, and check by a \texttt{table} that all dead have a cause: <<>>= DMlate$codth <- factor(wh, labels=c("Alive","CVD","Can","Oth")) with(DMlate, table(codth, isDead = !is.na(dodth))) @ % \texttt{DMlate} now looks like a typical data set with cause of death in a separate variable; in this case we also added a state, \texttt{Alive}, for those without a recorded death: <<>>= str(DMlate) @ % \section{A \texttt{Lexis} object with 3 causes of death} With cause of death in a separate variable it is easy to set up a \texttt{Lexis} object: <<>>= dmL <- Lexis(entry = list(per = dodm, age = dodm - dobth, tfD = 0), exit = list(per = dox), exit.status = codth, data = DMlate ) summary(dmL, t = T) @ We can show the overall rates (the default \texttt{boxes} is \emph{very} primitive): <>= boxes(dmL, boxpos = TRUE) @ % \insfig{boxes}{0.8}{Transitions from live to different causes of death.} \section{Models for the rates} In order to model the cause-specific mortality rates by sex and time from diagnosis (\texttt{tfD}), we first split the data in 6-month intervals <<>>= sL <- splitLexis(dmL, time.scale="age", breaks = 0:120) summary(sL) @ <<>>= mCVD <- gam.Lexis(sL, ~ s(tfD, by=sex), to = "CVD") mCan <- gam.Lexis(sL, ~ s(tfD, by=sex), to = "Can") mOth <- gam.Lexis(sL, ~ s(tfD, by=sex), to = "Oth") @ <>= mCVD <- glm.Lexis(sL, ~ Ns(tfD, kn=1:6*2):sex, to = "CVD") mCa <- glm.Lexis(sL, ~ Ns(tfD, kn=1:6*2):sex, to = "Ca") mOth <- glm.Lexis(sL, ~ Ns(tfD, kn=1:6*2):sex, to = "Oth") @ % %% We can show how rates vary along the timescale for men and women %% (called ``\texttt{M}'' and ``\texttt{F}'') using prediction data frames: %% <>= %% nm <- data.frame(tfD = seq(0, 15, 0.1), sex = "M") %% nw <- data.frame(tfD = seq(0, 15, 0.1), sex = "F") %% matshade(nm$tfD, cbind(ci.pred(mCVD, nm), ci.pred(mCVD, nw), %% ci.pred(mCan, nm), ci.pred(mCan, nw), %% ci.pred(mOth, nm), ci.pred(mOth, nw)) * 1000, %% col = rep(clr <- c("black","orange","forestgreen"), each = 2), %% lty = 1:2, lwd = 2, %% log = "y", ylim = c(0.5, 100), plot = TRUE) %% text(0, 10^par("usr")[3] * 1.4^(1:3), %% c("CVD","Can","Oth"), col = clr, adj = 0) %% @ % %% \insfig{csr}{0.9}{Cause-specific mortality rates for men (full lines), %% and women (broken lines).} \section{Derived measures} With these three models for the occurrence rates we can compute the cumulative risks of dying from each of the causes. We need a prediction data frame that gives the rates at closely spaced times, in this case for men. For women the code is practically the same. <<>>= nm <- data.frame(tfD = seq(0, 15, 0.1), sex = "M") @ % Note that we can rename the states as we please by naming the models in the list we supply to \texttt{ci.Crisk}: <<>>= cR <- ci.Crisk(list(CVD = mCVD, Can = mCan, Other = mOth), nd = nm) str(cR) @ %$ Note that we get three arrays: \texttt{Crisk}, the cumulative risks; \texttt{Srisk}, the stacked risks and \texttt{Stime}, the sojourn times in each state. Finally, for convenience we also have the component \texttt{time}, the times at which the cumulative risks are computed. It is also available as the clumpy expression \texttt{as.numeric(dimnames(cR\$Crisk)[[1]])}, but \texttt{cR\$time} is easier. \subsection{Cumulative risks} We can plot the cumulative risks for death from each of the three causes, note we use the colors from last. Note that the time points are in the dimnames of the \texttt{Crisk} component: <>= clr <- c("black","orange","limegreen") matshade(cR$time, cbind(cR$Crisk[, "CVD" ,], cR$Crisk[, "Can" ,], cR$Crisk[, "Other",]), col = clr, lty = 1, lwd = 2, plot = TRUE, ylim = c(0,1/3), yaxs = "i") text(0, 1/3 - 1:3/30, c("CVD","Can","Oth"), col = clr, adj = 0) @ % \insfig{cR}{0.9}{Cumulative risks of each cause of death based on \textrm{\tt gam} models for the cause-specific rates.} We also have the stacked probabilities so we can show how the population is distributed across the states at any one time: \subsection{Stacked cumulative risks} We also get the stacked probabilities in the order that we supplied the models, so that if we plot these we get the probabilities of being dead from each cause as the \emph{difference} between the curves. And the confidence intervals are confidence intervals for the cumulative sums of probabilities. <>= matshade(cR$time, cbind(cR$Srisk[,1,], cR$Srisk[,2,], cR$Srisk[,3,]), col = "black", lty = 1, lwd = 2, plot = TRUE, ylim = c(0,1), xaxs = "i", yaxs = "i") text(14, mp(c(0, cR$Srisk["14", , 1], 1)), rev(c(dimnames(cR$Crisk)[[2]]))) box() @ % \insfig{Sr1}{0.9}{Stacked cumulative risks --- not a good graph} It is not a good idea to color the curves, they do not refer to the causes of death, it is the areas \emph{between} the curves that refer to causes. It would be more logical to color the areas \emph{between} the curves. which can be done by \texttt{mat2pol} (\texttt{mat}rix to \texttt{pol}ygons) using the \texttt{Crisk} component. We can then superpose the confidence intervals for the sum of the state probabilities using \texttt{matshade} by adding white shades: <>= zz <- mat2pol(cR$Crisk[,c("Other","Can","CVD","Surv"),"50%"], x = cR$time, xlim = c(0,15), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("gray","red","blue","limegreen") ) matshade(cR$time, cbind(cR$Srisk[,1,], cR$Srisk[,2,], cR$Srisk[,3,]), col = "transparent", col.shade = "white", alpha = 0.4) text(14, mp(c(0, cR$Srisk["14", , 1], 1)), rev(c(dimnames(cR$Crisk)[[2]])), col = "white") @ % \insfig{Sr2}{0.9}{Stacked cumulative risks with coloring of states and overlaid with confidence intervals for the probabilities shown; that is the relevant sums.} \subsection{Sojourn times} The third component of the result, \texttt{Stime} is an array of sojourn times over intervals starting at 0 and ending at the time indicated by the first dimension: <<>>= ftable(round(cR$Stime[paste(1:5 * 3),,], 1), row.vars=1) @ % The sojourn times in the three dead states can be taken as the years of life lost to each of the causes, the sum of the medians for the three causes equals the time frame (5, 10, 15) minus the \texttt{Surv} component. So we see that during the first 15 years after diagnosis of diabetes, the expected years alive is 10.9 years. The distribution of lifetime lost between the causes is bogus in this case as the causes of death were randomly generated. \end{document} Epi/inst/doc/crisk.pdf0000644000175100001440000177626014421664400014361 0ustar hornikusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 3699 /Filter /FlateDecode /N 70 /First 573 >> stream x[[s۶~?oMNNlDZ8M'Dibb aD.$QDrK4ZCKt$!A?F+ Y$$q(DHD,A:!RkD3FNhfhLpWD+Ā1#:D#FX ct.q^*bC X c$ I0p4Q @:8Q X`D!0#P0h#ʀt4 2 +Q "9hQ8nxHX3be8rEe!C Ȇ+e@82 `7<}L3);"& Ce#9a]K/y 9oq6I">ߤt<'XnN~"L\:#JD'_RB};tF%g~?Oɳn4?1c?q2@e-ڳY:ߦ<7;M<;&/o|>e_rBԹO:=,G7e:XKDh I6$CUR Mt!=scM@؄|Di b 5LsCȡ<$2㠓"{gyL"w.".2"=HEz.ssQ,y1$O'0e fG3 =փO84(|ΧA`a4Hs D@|C2f4f>#~S|pŇ`NjEDj3ÿ3*g`y?O}kzqxs6tMnpػc}5KEC#G WĞy@*~Ox~ݹʵjm~|p.JSཁB(X %P9Ū6T[|9L" ĩ|Fw}A`zwקCQFG zCoiF?1:IJӜ淳4)_7Hуq$?/(}Y%r)d**;ߥ-9/+LnC'|PSyz=*(*x X_vn;?~ BY`բʊ;Uc%E 'jjB2᡾MB,HH t*q[[Xa/$Mv9#>7JXڃ"׾D9-cE^q-=kO?}XAߋ<x5X h.>h}I}E =o=W O'$iz7o鈎F^iTߦЭ,kBž<<W׳s{lBt83Ը?cT5TEUѠB[<4uĻ,^G̲PaQC)Tp}Jw 7`J/'{?^/-+- u'' .WmUTί¯aIǾ}+\1Tj?}IOY;埜)e, >ofˋm٠}ƿ0uc ޚ3WðcfޖF[)rΏf;gygJ0{dNzB~ew:Gb>A9fGJ3 N)+Cp Og 0ԙ~6Χ?_a~~<$n$1Xai1`SalFz-v{Kz6((a{Ln,wȋD+C5*nʸoZb5ڞb12Yw8qŰ/aG!%a#c2RlO&<'.SE5Pdž q vi1F5|K[VWlFZ'î'&uZ|2*&7onǣb8o J|&>!mX0vIX Y؋WSY*U/`h13ֱM,0"6q+lȧW,YLc4.9UH%F š&RTVoo㝿)@]Abi9P9mAgWWܻ1t>ysq]\5`gWڎT3ՃA]W޿<=i(KJ|zVYJHXgWeut>Qhb`^U<+3JQۣm:om[Ws kG |ɱ=,d0K)M#$ [i1 #S Bc_ OMKL([UgU.N==m{vOՖ{?d s)6iz[?VtmEO[iߤ«XŹ|ҦWWڴ\Hmڻwx|nh7~ʪonVMk{ѐyw/ܴt5ͳA䮙w_ k=hbCڞmnoˆWUyM WTK0Nz7/`4pbdhGo߾ᚰS5'9mKX0_]P 2 $)qkzcZ9C Ll0&ŏC?,j9e|NHp:4I+٢+|e3cE!zA@%z_t5-sGP?4 zD©geFH|wTeg}z'7!yNqK P2p;G4endstream endobj 72 0 obj << /Subtype /XML /Type /Metadata /Length 1388 >> stream GPL Ghostscript 10.00.0 2023-04-25T07:45:36+02:00 2023-04-25T07:45:36+02:00 LaTeX with hyperref endstream endobj 73 0 obj << /Type /ObjStm /Length 2576 /Filter /FlateDecode /N 70 /First 607 >> stream xZn}WcE7`.ekIy-9-e"%ϩ&g8t49UOU7L0otyǴ{ft`>0'#A5 I I< I )KpL n)Q,D5Sb i<,mnj)"Y%Zm.$V@u.4A2'$ sJ ZsZQw8JD,R0di="IͼIiAsS@@cH -(,MB(tWУLI( bBИ 4@oRFF(iRHK\h] 3"P$d^mHUhZiq2.)@6hqtE:p E%ARGzHm#IGҪѤ%!όǓ%X/ي?2~21n*Fn88|6):0x&O|h3]N'|W9F\~{i$cEp0A~C "wHi5w2tom3q0^BÓC K8F8u0^3`-C ~Z e>)ئ,Oޜ;ֻN{Gpp:|L-?g|2]=z|b?}IYnRUeRd2>ݒx?<ʇ_B8-W~>S>^E35+%moepk Lf|0G9 OLy{"mV +1a'ӻ|ĝHnB^S4ЛaJO= "8oU1 `.LC#3tB_q z\`+xDJ-l?sO'礈TVXaja54Ju*qSK=sDȺ?{4d[k[05T(`n8{ 98  0Rsf>]k6nY$J$V4A0bG(o=LпHW(mHl]cWpBlX#f`#||:jWҰiX[60F`Z7'QJ&L;MjeiYO'5؁7e>hUS5tԼQ|d/C-%;(Ԋhq0:j!̵-5t`5mρwa݊*;>$Uc$U}@)j6؊TX J`4'G$v@{V:\ʎ6weK.w:9Idk=̲M1.QQmCұ-ޤ8)-ԁFly{Pk}qܗ :LgHqtendstream endobj 144 0 obj << /Type /ObjStm /Length 2664 /Filter /FlateDecode /N 70 /First 640 >> stream xZnH}߯],8x'd&3YAiGX[ ,e6_lLfNUfSh82%)kq̨k`Np-F h+ń tՎ< B1TϤ&u@˙t Yd7)I]bJ 15L4@Ǵt4gZiP8Ӟ9 ׀$3RyBGa 4c@gqXfB6Y3kH\=N 9-K\@Pxͼ$핧'=qJ\XQ $zaРAC H 0C@n Nu(qi] 41p/sR{6GC;  A9c<ŘB st9yؒҝ;/2Q_+OW_djafcΫ|صҌҼyiKejZ(p+ʜ59}Zk$Vg>d2@OW DZ3d|[].f/Vߠ!$"(ۆ&W׻yf466Umg i| *#~ѯh;}i 'ywAUD/\F!WQ5":#(nxvT1T,DR7.-Էrݜ١ųyQtr[%sh톼yd"Yv:lmv{w.2tG|r><}hl~YţױƧi35[=/54m|Sd?Ycٗg*J_7eU.uo|wofk j1^ :[T ]82J,'kXJ{XMu3v_ڈ07g/߿to5fc36L1~sϷQ b%׬Tf,/A`mdחKuX]FofFko07dFhe^^|ۛМ1`*|gLL$sݜ"DLg9em@6f2ֲ0*=- (=I5`1AWpt5ۋkG1 ݂j2RvF1@Tzŀ~%8%'OPZk6@ 48:e SV#h\;hG[JY,,ͣδذB3pOltGta[hZ 6:c}gMBۤ<8+=-8a Z=1v*mq^9Y4-8ma8*)p ",Y)Gy)[Wq-8n:j t'E*ڔ<4@oAn҉p8. )/}vgmA/6\_n_fXȨ4-1Pٶiϙ t RPN@̠7.nik VR"'~9wm,y QSs۾`?(ݬ/\J?eޫY gY'4h,]?}9'?]sendstream endobj 215 0 obj << /Filter /FlateDecode /Length 2294 >> stream x[KsܸoЁ@x?|Zvj9l|hпwYbۂEVjUEX/^(禰JQf+9)e).9fB M6R8ꭑ}N)R0F- 1Γr) ФM]4֓.F:G>duUᵗޑrϨZZF2X OX-`8eΣ1ۯ a1I:hIh3̕\1 e5P5j,"\p>7\%ڛQܤ;ՊlJtitwIYܗIRx}4]>74tf>~{=e-&i13!h[ۿXjcjZoV_2baaeEaԙBk)1h˛\!EI5z_) w)y4;XrK=x)jԀ$t`LJzNXs^p$i nmKq7\_۳f]xdQ48-]6$7K9:Z.-RYR"1< <5' a,[sQ r'M` IsU#^)*m܅GݝE^`sŹfL,7gT(7:y1\P. 0ؘV5~HK'`>4Q*K%,FR)avyVC-5`"W|Uo'Ҁg ZrD$K=h#ɻi.NanSP ]?ha68 Vż}s~߇iI;Ӽg#6U!0a8S|t*Er%8 h[प74 =bA9> d/u}ՇQ\t}^ S:m(q[4=F ^&M ׎e̷tE&uȪ+Q2$59z9ew/ i8{͠$ZBE{sY ֘tv\0Y#!uIn2pNBU?&^Lp>E x}L6eʐ⻫4KBOJc@+{fx0/|\Gf#|ލHr ET H3q\[rH8ohbqgfe7r!80<Cp4qhTgǹp#M eX2jRKCrX;˥ 9562Tx+*AnTDiGTp.(5 G!hVZ*d*iӸRtV :ޒͼJy͋;#m{(^, KN!>zI+ {xe<`yH pixfHCA!Cxvۋ*f:}[!NtiEHjqK}'-Db-%u^R [ ޔjŰx2|T2p@XjURe6K^|pqQ0H{1(VqjMCA)6aW`B?Ud=Q5L_.]e+lT +V% 2?ġer,\BQ.y?pE WnO ;Xc8tqTJ_m_ܭ4GFA8 l[38 6zc86ttqjnFf\-ɇa @r[?s?НdàǁvPER|}&Ce ܍Xe?Hendstream endobj 216 0 obj << /Filter /FlateDecode /Length 2969 >> stream xZ=7b+`3Vf]%˛N`|^\ 3=ݯ_n쯇f׻|sWׇoTeݚ#ZۺOǦnaZg̹VV~VM˥>K kl5OBںity\5L{sHV~8mLE^ ƴJV/dgPVXS_B2\Zf}#O \Ѭnf2njšN'G˹~o!~a]_XZنDžke+[0#M&նu]VWS1y ~P%=~ `/.;祆9.+sVէ婏*쫍3}/Z1f-=i]_FJW-}pﳗ]7TdJ;1LR6:}~Myw<)+=3:W˪eYMx 2[5ވjy뚶zL 7t#%n"sYVjRxGUI1G UUH3v$SnkJ0I qh]o$X<#1z@x%0L#FƇ=r 'KM@ˆZ ~_}1Umt0j ?wJKaE.L:'k#PNP=<<]:O€5Nt«]k=Ig:'` Đh(h&[*%;@jp\Mmnc;}BE5HA 8t?3/pFr*âK*UL3#@:=G<io2qɛѠ6nLF(*{_&ÆsZ26Rz7 yӅ'CKwBP<@x#DR%uJp&apͲ2mǺ%'_u%XpH#UKߐ*> 4mRKH6$r~.YD/yDPgՕ%=DrbOrYt qէ<N=-k!B z͜>gMKFe*Fq -MkZ ؙ }jE++>u%م>3w?%T//_ѓ?j\X!ƈF V5ŭRPs T (p1(Jp m 9Ҷiʲ6R"& I`FnUaΒTȉ;m5AgҠ')#xeJ)]0UQV zWH0%y%4ṭC2yxyцط%E]μi!Jcx!(g Os~܇ĥ!\ 9r rr;/75^n(wvtxBc 3Қv75kyxG- Aƞ*ᶤHRkHN497. S7< T3> rr|R.zț!{d'۲MbQS)Զ)B]&#vʴ wi!Pfw&(tR~p" 7ȿKJ$Yʈ ikhC#*| \Z'`J@hܧ1N/q9 Z7\r%Z)gQZas7tsHCJ ; ',E1wЫ6(S# hqXTL?"ʮ+jP{$&Pn.(~:MZbf\PJ:2hqZgH2EC7sl@f{Pf?GH4oa6BAHU3#tP!dRCb,.K^1 ,kl\gߏz$;@-h[ͺ4=1֬Ṱ %0F}JϽq"ir}I#%}ٗGE-ox@Tǥ)8\-ۊQ`sdu*xOoS0c )⻎JH$ S(2azEE+Hl*\3.P&oѭQISFǻis) G*D) KrZCZvwZ}BP,p@ځ)SB3iF MI'J^澸 P2&k ſpqn}?+!{sBv qb4QoxC2H+OFEo^AgF[ڔ(w̽U>uxDk_5^bbZ>xv Ͷ*ߊaf7d͹QLݣ:Atsf'_IA B} ɴkQgE"Npxa9W}KgIOFzD2(,d !MnHy$\Fvl. )$:?eoGFIOs8;#\:7ڨteb~z Ū 2r5H盨qCt/BCJM6yǷuN 0}p2ʽIwb۶6q6 L/a-̿ʸf)7a~?3,i`H_7Oendstream endobj 217 0 obj << /Filter /FlateDecode /Length 2535 >> stream xZKs7\AXg(Uh\]V]$RD.D9>=^ zR:gvcZWtZfRONP?;7,&߿bD$lS-*%*e+ͧklVW57T)C͘ܒѲLXo[մ͹U]+"?M`PC},C-kثn >;@RڝKdmNmGe4R.1Q:$v$ySBW)A|I#k$Qq1 P!R+-: kEDp3ք4') W#qD'x%~;GpY G,\9ߊ\¯sMO$QMSaU;t)I"vdͯ!SAt]:]:6ml9_ GC=+ -M RN\p5͐j$l0h,Z(pZ@ֽ |u()u/Yrʩ',#Jmj,l$T\f=ºhSFD$ 4m`yc03^ÑhNk]U,lj|.;8 _!zq|Kī1 h9c`<Q0ï{i#ݑf! 6~jP*} >np L]P04:I֛d'YÚ;@ H ==9u*@ղYt0tn G\At~}:˜_"}7x>w3)܃7ح po,Ba>e%[7@!e5E 1_:Phnݢ>7?5ÈVP`)#ݣm]i sr G@Hcv21JXUяL9v/WjzL߀ƛ}{dyW 4DbY)t?zt%VBdg(T׌'v[~\PWĠzUׅ{_zks1oi%RZKwH aCt,>(^3o`O s~>5EQ<0}iXhg7('e~\]h^mQEdJPYCq3F@m"ÙAMg?RU_Ư~S)9i5D͈*q ] f~´r:EJ:I+<.vV@7\pW4ТLPxCVx[Bcā]/*젆 ,kCdj񉿢UF_SAS屾+K6/@6endstream endobj 218 0 obj << /Filter /FlateDecode /Length 3345 >> stream x[I/.i&"}Q9r$%>X9pfz$\$G}td_4h{ 4L9k^mg|rLyj;=cfXi 5*?ʜCZYLDBg>_pƵ 6DmZ2LKl$jvU?1=omNHif&\,bs~NB0՛=TzVwq !c}WtiɪnURǑf,dvRϏ?Eǯ4ZA?} mgI0ۙXLֳ}Sg$LC0+g]`)8k(;)hBJf jڎm )_gcnЇst6KRz5NVIxáFE۸?!y)s,k4P0ݴe$)̗'eZwQjYbc!5DZul1u CXT7T)fX.{MKAO-C֝ fE{czUv lD,a!;iB::ʸ R(xIqj~(V8 O}Eu?ԇ״\z}9WD|Qh_fȄF!u; 6bL;̦a ΦpYNX|x=XN2/!we|Ps,7Ūp7f2_Uֲ=^ U> E,4f;KIy;C:z]~rܾ@~c"$\dB8d|ỬثnGu6wۏ o|&wM C"_ 4ܒ* kV::/z~!qvs82e|d>=AOh}R0n%v|ߵGTivﱛ}n *Ku e/?cUA@mg@~puNlN[x)9_Gy_=r>ɧ#tL)Pm2_H'JhN6;(9:IQb+h{sV\e~{G|1:Q`<@slӌ*U6};aAx N;Grzsmz|GɨQo GD`TxoT@sgeVo zҀJPp >ߐY:#GIW2hp㘶2^LE*9si4'NQ9ςRǷo)rP/3Ssi S!UpLQcJx-z0Y혒#5ΔѠ:W("ŔFz#oTԧweHc4 S>O;POO}3hi,FSQ>#ULi0 Jds^x9]R@XE6433KxH(G'#HD !A-F2dNobg(r+  I=ѺKЉQ:LD5E#M.t6EKlh 3D1264>%OCLLʷIqf":&#ep" NZHz765w1@͔l 7Y` e-Y(I8i* 1d@Qhh;m} :8%3*Bؼg@GV: t(LCGF.t(]NC *m]' $K#z 2Gi9c=$G)= Q.xV2H#$pKN pCI( 5h ([B /@c8'K.[Q б E/A#CE%88S}9.+*o ';*9KL]SItGB: ([x<=o=– %dӨH#ғeSs] t-LLABG2}䓥I{rQ"he$ WBbp,]#[<C̪"&6Ne82]H& XwWж?W}F4#-R8mҔ[KrhmOfRO$6|.hmG2>%qhbxI$ELߠ-MbPz4sߎfWfS?C_4pS_eO{PQ>Z_ؚw&/؉갠&>x囧eu߶ݪјU^._P]10UVA VW]** m Lv_Oۺ6:GTNV|jBQ$[ol6}x <VXxNg=QL gFDܓOxʻ bp#}v]~}~_?MOCۄd1r}jSpZm֧EweFɷ-Uc\7cU A]vJ2hdr=.jc>bSNo?O]^^,.5XL?Iit$W! ڬOˋ^ͫSs3]n(|hn 8Շ :/ ޺9Oendstream endobj 219 0 obj << /Filter /FlateDecode /Length 2837 >> stream x[[o9~_ъ=k.lGHl`FZe1Cѩ$=:,o_*N0$ٙ N>w/|wmcl9/ǔ1OF K°ԙd9zMN.i9u`f*SBxY1˜OMdYW)dS77̣sjƻLm#YFu?$WӅYˑf,,F/GyƤ2ZgL,ƛkιae:tP\gN?LuFNulIڲeEH/ڴ\I-G@@8@/d;b漬5U^̓=]{)'6]ZQ&I> OQ$?:3?Jp9|4%˄*7_Rnj?/g<7nY^9 ,e4N|jvwʨz< pOnS`ڵ1ud)u;VPr !p_`H) d_l:/CxցޜϕҌ443@Xz :Ӓ&*9pm JEN:+`+& :c=-Y%p)g@˾JnyD"tgVWJʘ#Nىh@Dkga҆i*d,O ֋tPLr\Y N[%\J 9xhځ,'w+6Hs7tjn gt]btNvw4f:~%L \ av,IaCE54@; >8>mȤsT=lԭJ_"Ixz ee) ^<mH;ĺ 4Ƣ >\LtܝߗRkq{d~ywSRn Q֗GBHri н+3X_+KNߨzDFM]{iKl*Þ]szt"7m'Yw/4Xfp s=w!2Tj ۺ78Dkܴ1_\Ifk]WɛrrNsQmŤ=,ID6s{nz܂O<\&^F€4|Wyf3ƻل);x-йq%.l2ha򗉲4hwWYP3]z5[j[uCfiYS9[ئ cd`?[zl<лv5s4Q|Y7#ϛnܨ- } (&Ik둥blfLYkTuecl*cYp*1i6V^RLPS-2TwxW6ס*$+^:Fu6Sw$\Rk A}Ģ4B%DJ ã?㦂盫,C7>=؋(xdx7y^@]-wCAI50W]Q*.k٤0Y-u>` cna S@*&_JQWAԽ/@ЊGGdy/pǶUbm]j?+?M{[?սvu=m78b: jf?Ol9BH=g ρ' JȦGFwUKL ک,wu+~lZÇ s1ryPWA#K % nwcۋ*Y@+to{ߘkmF^ 1Svs?)@py3]lEfdW^|sPHk`Өa@~ݶ^5Qgp0_v^BEW*pRHH7.5*Sa:YEa&)Vj 0~mt%EfčLPhxf=O,CP(3"$0VOX ]5%ADHe ߆d{y`hGvFDx,n)E2pܬ?jFš^&\4Cܨ%Jxi/le'jհH7(>P}Lm=xN\ +N Gë@pY/GW54{ i%7l={>2`AZ(E=ĩS4yן 8&i!w>l*ʇDw$ItxNn*h Ӛ m@T3C# a6fav9̖ёkX'^9fzIwOS/)mWNQMC]GsbkW? Ɋendstream endobj 220 0 obj << /Filter /FlateDecode /Length 11297 >> stream x}r-qy@0a~ga({bE(> DB(~r.EF]Ur?]_8^߿q߼ϭzWUjG9\hjGSH(aE(tow_9#A>h9{9ono~K/ƐrzpJ/xtUcrG|Ͽ{˷^z8{>?{;vHs>\rWqcG_&j劉t·W޻?pƾyjy͍;ӏ2|ӯm@v1Zi윹h]z}}b44J>2=ӡ3ݘ8=?_Ow4 M߽]Lr5B' }ul)YSW81TMşǚM_d?pmN#:_xN|{dɧ[M?[m?_=oSLty񲑭Vkã|~x s,-]\z;om,n;tYRNij%?.cêD:^?|O+~Dk#S$A B:+ bufxe/n/s3vw|.q)6p7Ey,ei"3fi `:ݮ+\-Rr48wW_-WShdwQmc*E^0rх4^-?Nc;z'0U{_ޯ_>"3|ȯo?09^~<~o_1~/W[N_.hP@kଷ!*6; lMpxօDПyOKMQZxp=F{lZ2yZ#qI&M({rνqnFREH@ȵ! }8e qKWi+&#^.+lSO/[zճ9Ox|כ k;5a?no`gY9\x:W6#c"Dc̞3n/c'FIF>x +Ë7'~滬U0>3W܏eroW%KI.ģ?}ܝ" 1^CO>sg>%j:\ XeU2IZ*Japܜ[4-i,)R1B@bo}|ly |_reT9ߛe}}_>ehy:ԟltCBQ|式!<}7?#ŷ>޿tqulGs%:#ٶvt7Vx!~_ ~uJ㹎~[~4/˖q˄_q<ӏWObIS?㞞t|+c|3]vkg9mH_u?+᷋~r7@zW֨9݋g07z—Lk+]:@!]<\7H_@,LN`5_ܿIF 5[|?|eVQek-G[ <(_T\1l+Ri< @/1Ѭ%ss'סЖ/耝9*#}X(J~rlG֣e=*C#lc9D[֣'(r2ԸrI3`gLa]$d>^浵iwg[@pA"oǃ~V5]ܸ ?6ߡds륖F-AW`g-Ӡ{hye\-! eϷC?".^{hᨸ8u{ ZQHtqgp JB7Fxn)(tl1pKp!PgNRDW)hΩqu5t^]LpKG[=fzq?9XD{h.i-n=[j-]a\@ fTnPpoXX|;v#ܩ"\~hRdotFt/0;d=vlPMgk68|\\XQ}x#k#6؜kwoVi숔rwrp=H .yUxC|꒣ ɨ'Àz';!`#ȨsHh2 X?R-N !O0&hP%oڨ%FOљL'kMqB#x':&):Zprp-c)_xMzD1+MUN c2h-3.N(s2V$ 6ra 3]ܓ`7Otkm\{,q4EFv8 +&UWF\+WP^2*w )sKʩ ">/^+5h\PӨ¢y4"OR(ˤŨ2f4!]t{m%p*1٫㐡;9ƒڏw*ƔApӖB=t"u^i'ZNjfb2fA"5_ K$o+fX+uB- H- 4N:,s|uˮrU80ꖣ$rx8rLH`-KAJkYe I&H$d$$CSдגD+l u$b$HjJt, ~kzx "$@]Lw 5g4JV!<,C )b2$2ăB hS5l1{dtM@(]bo'56(1 #"`px P`Ffs;EeCS8c\Q ! ` :pk1xAIA |tLA e5Gc(ya)`v XR.݊q{FغhG^2H`1T +:n]1+;*:m&AWcj^kL?W?ɍ+]ai=<*,:N@r&x |w&;_3%`K(#mح<(9&JB[#۠V,esS->fu's}bZYN(Zbz]   kRbDw.p$ 76 놙!@pJ=)ߌRٕVh=*#sQ9p 7ĊlHlY9a|;Kc?2:#[Aߡ* ɫFNdӠ )Z)Wi-10WiPa][V`!",@UʞDhRL&"HP&ˈ5 XfE݋ OЪfg$LJG2L9OMgdI%k# jrJ3. HP Hʭ2%Z:4S4NʡR2pf]CdSJ9X0' 6T%&#Q[(ިSc6q̓@Z:yӒ||bY@Q1޸Kۼ1`CuKyJW]9dtNzR ߠXTU9鬡 E]Q13@)ߌ[BL-`RtQg&e7f2}Aw&'Ѡ4Scоj* Udx3\'c8U]}oźx/wٗC}R&FYHzJ*5ȩmRA3Ea"дdbfdh& pi5VjI1.@hJBV騮X4 ƍ=Kn=V;RH`̳ NLBf:(@.}ut3gib[&5N5'ݻ7ayƆ_ga AG5TNJJƘj)cʢRtۿ[J0Ȫd-J֠IňW| Q f1ڼΆZ}\C-n@8 F+.!k+Wf5:3iPFl PZ//5ߨPx3!GVP7bM+B4 ߲ZVA`2KʅFle߂qGf!ӭkD0`IGOˤ.2TW%Efc]UԻL$bSNUbQ'H>CW̖D8MHZ!"˜hTnUWYC"`r(!-+օ %j!I&)ip4`4&Z[)LY0IPʧ j(cXRuUAe  DLp+vT)R(pie h:DB$ND#0-hLUssA cJ YF}"ҭTkܦlI*֫TW:aLgW&CzpeJE5S6plhSB"-)W P)S] Q:BC-I![rT$Tm܅3%E4כz),x49̈fs=4FԛcU&.q50 0#p¦ZqJ_6dë6a#$h ^c-N}iO%m6x*M,M}%2 è6-|);rreq1GXsYtɐ_\זEo,=FC˳wHK7-~tgѣj͟t+3>;_j|WöW5hK6$)Ԡf*6 3sU`Yi#4YG1 5BL0`am U% ,(9~rB ZбZ5Bǖs͛U~ ,HJ6rSG^BN9\ɫdli*QhB_tRn (3j@ 泂!7W 4§'2b;nY "x*iP %#lHo% B&@o# F)e_JA#D)bj #- ^Xfdj#j43 D%& n[0ʖS,WFI&~-tU eAT4f,B!lnA`, dw("D5kYG AJ/-El^YF6b '&V1Rj`p@@r-K}+*ߠeoMFAGZty$s*^#GE e(15؝r ҠQ Lcxugiݬ!{%-(U'Jџ F~QQ8x0oOp/ZkTPW0"tTt(!JNq0L)bB {O$BpQNn`I1e9?Q2nJEZ^MņVv/{#}Pu'PrB0}/]]GaS'MHijg.8kGa|s]MJuUڿ cJV?;K5nIsm#l>^\WBFU|}Rw&JvozǡvYwc1D)ggUM!g DiGOƀB*PV:'B€"h Ge (0El,et[2'F!4Z(Dy'/58А [W #49P6c2Dfh("}Jϱ;QdE !kw`RcQ+]vOSmĬM*>${^ĢYaѠmh#wF ŪHݞdJ:@mƻ2MR Ѐ$TAVN8 QMp'jJvq"aPx SXO +y[ &XLhbjpB)ު1MwU7Ils'S:Q]6s&!KsD:Ilr iMo3B3XH8٘Cy~춛4l*NvvUj֍QU2 b8?FuRէjIdy}nv<:` kz)_9C;T^ P9ZzgZsƭ>+y> 0+ Y6,F}RrMVT=&)OvXFqRSM(Nj8ϣ8>oOi>uΞ2+I(ʕ! [qRƐ`[ uݍ',I*PG#ۯVWQV3pFFFmUg4{QچE)CVaId-(z[gj5HJq(* eǾ ʳ찍 qlPFQ)n4{kȊ>$pT ;s,FQDeqK*MɬQ%! -{K3@mQ@ڍœljH&9ԘѢhl1F {=kC!B &3݋p5ƌCGkC=thCVOmh5c iQ4še:4♹yH#VdLkrxH1} nH1&mH7hG4E:THFVoOo4" ƚVX6hţWTھ`Hk׹2Ȳ=9fP9RlԢB($ FUF_Esρ-B;ݾiAv x̋2=i ) T^ i -j+,F8>TUw:So;ZmJL4]9P%$9wwn >ߌoOW Wǩ[mv.#o__%Aa!7k~a׭ǻ;z0x +ZO?(i_$_ɾkpxU^]owLO~+]'9?~Go~[4I{CxEw'k*B+{n3[c}^ ߛ}u{o^ɹxt lY߮JoQ {y?#6JV}s5&g^~Erekb rԗ'g_+ipo_SD+}Dw{b,o,䵷K+З`}3`i ݐW~Xz0eF]{x+^{UW׏OWc%MW2J<*} B{6lsN7endstream endobj 221 0 obj << /Filter /FlateDecode /Length 11174 >> stream x}KseGr޾71_S*#;pb A"+|UH{ u#+˯2O87^߼ߛwWEQJWp'*jmH{o._XΣͻ/t{ts{{.ic|ָ>3t.OS>陞s/Ek}~͏xf=vӻ8BKyl;@C`LŻW%ӳW<)'8sNA&~C8ӧܝ{xEȩ\e g^9]c Pz'-귴4?Rkhh~խ{sMlek >/Gj~ϧۇ;|kGSȧo\K ՛HCI4J^`VEZVۛZyJ>ݼg4מ{twv)?Wsx?]ƾa~>PrOKOѬa=۵T 0heG&9'Ӡ'XkQG|G$9f)=ncQvq}x۷9 t{`Ql3BWtt#=o|3kKye!wl<46oMӛU8Yll& !oʭ璚i7QԌo?fVi R$:G-5~?{^׼5H;:Yg 2 0G,kUfN+w?jsˤ2}r-?6v0Ztz~ y/P2Zս<͟$n6u\!~w*IZ(JsLZ}͈{}5}Om'ɷgvrsl B$g2I4)c,Xdb ?._NDjȟKovO/ק,߽15 M$h(Q:i/?~~~~y|~8|<|9?FJt%G e:?ϟ/<ߥ3ia mR*YeoQo;)dN0 2}]$t8v۟6)xRg2$<$Ю^f6[>S!ʿ.2΋-UeyOOTWh1ȒHX&y\4tæXB~fFVpxKWO/EC%( @ˏ}Ϭٓ|UUL1~Us'K %kOvUF=}Nb}7xu(W޽ [eϯyZ18qANdHrxs?N]Hȕ͝d?sR Ϛ`z>+yZBadK'╼` 3+YR)KVd/*^PV0R%H@1Y'=S$0}ѽh%xaesY~CNN1+YV`嵖[jYV|c%k-Ϭ7Ճk2 rV-Ĝ嵰ia~f}XACLY\~5 xzj0O| /3=s B! Aev5bA ~N%39*ҚQIBNVH9LQ3g'Bz,4dBjUyo"9432BָML)I\@{`$N3y"*)&' %lr׊JDs*fM Id672j6PIB 3m~%2DiHpn({Oll$rvba+A# TA戛a-- n%)GbE%<8f da@ Brp(L_{!=cN˧*Qtf"560\%cu24SXW7abJ.ADZ d$Uh3M_ `OjG_=(g<݋qm|ZYvg~)M2$#-.0Y旺';wӄ\>?TR2Ry10BSRB 05Yn ,Lm'lGoB NFz%&bcJ 2Mê.V9Y gz`ؠh2F؀<*M%S$mc:M*˨\dua`yr f8'[W M%Iݑ@r ;XNC<"!ԣ XH6WAO(W_"˙l-?}>]x:Qf**K6arhܶ/_slK ^.]Ea%@˸[R1E2+b[,MZ&ޅ-BxDg+:aպ:Ts;.vgnYs}[&˶ UrlD'Ԍ\BO vWE QH ME_T^6Z⬊"nL$]=7'1M"NCtZ`Z̢$xZjQPiWLl(K]W:o4 G%.$3m-%ifMiYfpص&WEn7SnIJu2&1'8bQ8h6,sXsl5(l `IaɄ34NND!Xªb<#m(%. @IxXm flRG.Am1CwqN.0Z5 ps'&]6ʸ/q,|]6J%%dB-dnԵ!qQMo/u0 >pc`y1? qs l4 k 1ucRΎo bJ7eh%bFH˦d (::F Qz>#n+Y!A]"T4Mz9NRT.yskTtNڄUqp3}]="bkg k8?,Ad/6fR^2eUmfch0>0[pg?f hmNzS_2>y ] ls AFt[r&'MƑror ,&ÌQ,hQAmHϬ9Ši;I@ '3{z`}VB*NT͐ h&b]*AEFbU_9O{;o(M|}l C\a4"Tmhn/,bSműh cvzMo !acW+^}]z$dnhcdqͰjfi50ADT ?JU( gD$br**JYc9!Czg mV% k@)rX/y A8f[fA#V9y %PI=^> ̠7!Vԙr sWC<R4^'K@,w %4 b$ Y(YO')EO]iה]B #1"8J:VrSݫըrd䱹r,4{$K9%բDmX<ˊx&qP1sPۡqQĶ<; !AT6[nYq{԰3u- B!μmc;qXO- [_B`06S^N>ܢ8{ `L6bW0V(ԡQ0BMGrA2{1KOH"cO%e.u‘N)Lװ gF)5l$jh/` DFd$z5A*d"b7Ѥ+I|G1F[RImf& Y/UlіxIRfĒ c8hQqfB]6NIcu2B:`v`.ae;s0lKv1ȈjchR+I !hdfx,rKjĔ6cWȔ:G2lۺk (ul?V5̓sHںGSKe6l|'dE}@M(Ea-^~&A}oWv|V5s Sy[+hX)Mh\H x[Ai=+3e Ok|)&D: ngK,3[\Mn;4pnၜfQylٵL?ە%6Q-DFMzFK0~HOΐ zhPMp HO?qŻH )qUlz8\$`CqvMIѰnP!<ÆsQ ɡ2%K`[BUNpx_q*t! e ĉ8(%Uܑp\ڬy#0hB1$Ԥa\b?7_.q?Yq*IG0UCd;4ta|5Z`zSq0H͹"uEñ JBCՑA-$;C CÞɮxWWpk']b;InbChc"k'Ӵ%ؓ؄(pD0?q7ڷ1)A¹m=9Ih%Z]5 4RQQ}TOn&c?*898yd"u:6> V"'A#~Ν!^eD\O鲦N&/j}P`"vX,.:;Č*+QxGx𡚎 DO@-Elwmw^ȣjr P@ڶip\N=eNJ31A}I446c?OIj?1 v=47 -jB@0!GG`]q}u0-m&wdwu;aضnCQ S!ӶO{;w[XŔՄƅr")3-*9?S<O)& yOt2Ot&ʋpMHӣ?!ʮi\!=3TGFiL@vbp(RZllۢobϞFΚG,;~:A/72vS𞻲NX724E_l Exo裸ž^5gf#CJ,Eȶh$T1uMW)B=[w 9C=}9/iǙ';5af7MY߱gbϪOTe- HEUɄ-^7 ݠiKR3t 3?}҄mǞQwIڏ⳦LYtWOY4}BO?w1$=q.u |v=shĞCȺy~)G3FXN+Iz3'񘠬y6T4bFɛy wVEz6l8Bd$Þڏ|B']SpžJ%z3`ZĂz3 nyϜ7-K4Pjo-pL=j*fQԙ{ԇ%,ł,k8iHgƮ Sw [롭b!"[F[ H GͰ'u'"K {MHCs(f49{^Q-jk'ڞלyC,ԧiGUy̙vDEN=;Ҵnn,v44sӎz 0oг{)e ^ޣd ΤDsAOsH6&%Y6AO$h";b0ӎ=Xvثm,7fQW2ӎn6L;zn2ӎQxvˡbf8Y&+)Aczh=rl#+7z { t( ttxÞE&8'mf_vf{Fiܺgb9+EhOӨ)8,AE 4O*l'`#49f ov?,Iv*YyR-jnaU,)<{ŁddVI`YнF!<3l~E^cma5@ ̓C_6ONP0ٛ70g;Œ~YP|"@@v=Tli"|gءj O;xMgi<{wOx!g{hgO5XM;>exGG%7ɢ)Wa$Iuݬ3Э9 O"aohh#$3,E<2@-qF Dfq(Z `I WH(tFY'7JWGV< ޢ@'A3:4#dH Q4#mbDIF{LܖVǓ| I Qi^9T +q3#pԂRW'Xcp&@ң@ң@[vyF5zf;łflzHYTW:KՇ|*Ֆת!piX {Pi-0LVC@X=3Ob<=7b8[+>m/L(>i9QZuA c{'\1ZTB,Au3/`:bj'9ŧx}?]Eo e|WӮ:8fh'W8a,o?cd@hLHI;6Ᏻǿt~A+#:o~X/躶{񯟿0'#՛/3s ӛw][Y>e?#{įo>#6@_}6:8뇪~WoЃןsH𯑓igN.ē9C{YF\1wgw RUk\-$6歷qm?<Õq|4Յ}ؕnrJ1g';wgr.-/D{w%<\P&=я`W/'/1==퉸sn=[43.i.xqVEwNHe?(E+zӵH".|UJ>K07zՕL Ɠ *B_K3~)kk${]ۻon\.wPNpn|**Ϫt]pǬ I޿y]~i͒*7z5g՜u~"޳빷G7Gxru;N_k}__ܭ_n/N.Ԋu(^k;,lJ,Aܞ$V~}Ok}zqIכ?Vn%qv~r~yX| >hI;ܽ^$:kx7>@6]\KvuU'_H7‘XN/^==̽̕CUEni8i~jU1)r*Wz*:]޷,f=^=^OoVD $y*w7d?>߾ Uc9j7j]57nTv"G:"/"Y~)^ng+nܫگ]oXDgۮ/_N:?nwdqމk0iKfL{G}2?_?/XL]>LzާvIriQԆ|yr꯿.= F=endstream endobj 222 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3626 >> stream xWixW-!TU٬V@wUI'l&0ݬ1lc ٲeˋh_nIdKnɒE,H=IC„$$@I'S„7G%WR=xQb x#e*[~p"1דHO/j4oY~@^XQsWzfV$'׳76 [^cⱍXm6cK$lV`+l`x,bDGo=]0UPMdɌ1el8z\eOxiBĄm# ?Ew0 `H$A"oXSdsXN wjݻM) )LX0Kh"2P@W_n\k\@Ũǥ"D H`OcL0?aiZ+>1fo*IMK:uF}w0ȦX/':Fm69H&_Up љK`UR 3'~N^oBC[Dteii)5d_c14CC<ٷ65~JHldIxIZAN2[2Sf'-)AIDCB%ӹX>Dڊyq a!x\GT74j=Rh6 j]yNN[ d%:,ncMEExRahaqDM62qZO&<0~~1Gcր~'VSm$z*0N45h,;sS"#>IH .)d159Id!}p<8Z :U%y*z<C>\"|_$[ 5k5˷oKN^n 6V'iX݉Z8CNxw1Xb jmB'ڞW6UBv'Gt En(@MhRjjU_E+n4je&4(!g!߫h7MގTUE< 6Fw{vrJ\]saҿ*kT r͆-qIr)S=4õFfgg f҂7@ۀJ28Dzfh2|zd\G\ܺa:%໗eo0RZM5SK DZW^۟J*lpȡ(M^iͺvpL˂(^ywXډQ'-7O8ZrdYۧ~)Cڇ(Bx$R(ecQh~!7Y IIԒ zQwBCߐpY]\1zsoIaDF( V.^hd0sV.~ȭrTz-kI`t(\ ^`Lq2Ⱦ"!T]I 5&BvJS)ciu >E"BemY*l徵Υ%KvEm`7.~`kjJkUy{0R:PgSz\Aw;ax-g$4S]Tt[6uJ agl"֦ʼnUzcq\(M)K)Ieyh@|b~Cs20>?&rCv~BJB@V萷«h;O ) FҀ?z.h7)*7Z&yua%apT~F M)y1wɥU)AqA,f76;];u.7ž,N6 $8@@^ĎAz Ռa/nlmjm䮚ckO"qCZ+b^BϊZ',a{?pH'C'9q-=YuB8;kSrQV:}⽏"NiVAnzY:ۣޡC?8=Amp4.;zFw!JoR( z ;}=į]HMRSKVXw(`3W2~,0ٴܼ*LS.ߕ.95ݛMh<"{ odGWF6shVFdt{FX1p  n=WxQ@?-[@.j:cG61N.YWѕm5d\ÂΠOۖ5l޵A1 >z1ZKۈ;~dg/,bG64n؛J mXu%2Vn&Hު)6)P{R !#0DzF_߻5,AՋ}zӋ^"hQh[ޞ$GK+OB/5Qk},5ŝMxzw8.[Udo6[ZW{% gTSF`Ҍ@U5H2.̺,ЇƠՙ er `gcNWY2KVC=;YftŒb;b[mWT;葨8Vc2"tcLlQRsK3Q7q }DTUBEߎt b."qX1\է/*WjRQD~̹%?^7‹Tq TzћDKNN<ϻ35v=վk*eޕi)Ze~rt߳;r> stream xyXTg9^f'b91FIl1cQ) 8 3Pfza  CB %X%ce5i&1~C>~{wϔ{;AT^TPPP BM}qʔbפ`/KGJϖI4/y҅)dSߖoWD,M\6m36lM>)o딩67}B}&P@g?_ro-nZrx.6^NE ZDYyN(f>-Q9K#ʊSK+H`D ^1r'FN(19מYe 27I95:j Sk34\>W^du*xxP Tws JRMX`'XBPA}XM{:zcCດFt^Va) -U հVK7ߑ !z5c!ur_d_PWM⍝+[fx6ūX<Jhoh 2v@aK׳ϼ80e5;pR[wNH1&QQLj球l\]V&nժjjxxpMv_|SNsiК4aNdd΄Vm?!;р{(E_E<`֤ȝbXH֢JM>4'/9, @dkz}[э1udsГ_'5Jz}#XQ ڄllWѢxw*u޸=po4`Ee|$:P,LX"| B(dDP~Tx.+O90%9s޵ӳ VwNH6rh1zHxO`=\a'!.zx悼`,³pd}rcDv!ρI4P~` %}FBaOJ>MIv?ԿMJ>.@Na^"Fx.#-mZz4vʇ6DiCD_4qw=t T?,[v[Y`6j4L42g;&aњkrv3)p?=bN:|\+j=94YRM`rDB>`:,o ."lE'8gZ}p.raFv.22NS: b.Og5؀)l8^xؽn {>k}@Cx,~|Oe{:(~;DzrZ]*L>2޹YY]FҤ%;cyhΥUѴFGj]>cDB*ُ0d!7:d]| l[gs8xtTLc.Z| i}yrjU&n&٭~~7o+Mv"0t™CWSВDho4,)qMuMHG{vqc!o\ NX~<͝ ]{3 25Ylڔau!zVe všKI/ `g,#E0@9%w2oh腏hAts>{8 S:Nږ2›j2)jdD"[޾}SXp H7טV]F'}l 7OlzS:y'! +5ElC,9ldLfA냦:R3hYcUhy2Sܴ!0yXZXvUO]-1dr+}W7P04Ī8o'PYQM4 Gٰd Hl-B)xJ*Oey YleTc/֪i@ , xr 2vd2_VYKY˜s~Dts$tyazf\TЖ-Nڲq*bde(BNAZi; ƭ,ҕ)'M%7nwϿdv<'M4;~Ng_E}nmh䀥&0)iԆ%x83بl-<=(bAܮF"ԻpZl%7WvrQ5df;]>zƂ ɿߚnO?'Ϟ>!,@pXG77;!|s~T/:^&%/y8xl=?Hg9:Xn4W';pqoV}B&:A'$s~L n\:rxl`\\gA_Cgn8{jHpi,f$VVq/1*>zzͶm[WA!€.KuJKd\}i !u[;'¼R91{;zn?6p {TWHuNK Z-?_Avvr^U Cr}dγjl]Rݽus\DC[Z˘*7wg+{fzI .jǗl[WcG0Uo@h-hQ !."o"Qu#q2Pj>HBtԏ.hQ`1,,KԨ,C10%g]Ɗ7zD5 D: ?τC{/^)5; aT CTyk[<ыC-Z9/Կ|w'NaiF6q'^;D1CN)ߝ__Q-]]XT^EG-rӣX8܍N H>kjَa_51/L,"&rȥlF2Ѿ [FFf -{4,}SmЦ|ėQhdBG]䰦4l \d7_reqQZiW^&5C`L|AecCZj*hgX4檊҉w|~erg2Dw~|pDC ](}"+97skS6o#[#m%r.sE GhWL`m/FAI؟VlJ ГYL6(T)󒳍6>%6ր~om3 in$h_ ģO2)R~(glfM,d*4 V&P :GXKOlmˤ%8?: IIL{jib}}Ee%[wFm<+` #{z/uM it4H)>b%`~w U4|.kO_"̸ؼl}2IS,$ R W;uw^M4e2ݕ ihQ Äcrԇ/ B:%1֙T63C y*А;HdH! 7>7_ge2;T3i Eʺ3)9u5# NƟDY -zֵd^A[]Ӱ4#ɻko=m9AmH;19Dl[!i݁XJ4[Eul͋1ǒܝ֝|^`u{(s㺽Ydxz%*҈:vtuZO"`IgNfLLc"%"|S}os+!i+\Z[ `ewdm]EYf5nRQr'vlK 1,ƻlL   LvfYqbO8=7kZ|,B[yȻh{hZz>a2Zi3 xFnscX hNؤrVVFFZ R/jL1*}Ah\D9-fWtΒ=gg ;p,yV@hMZ* =u^C ʸ%mH"S]QQ]%2v~ƴQ/QO*!s);xS|pVulV'=iXKMK`+D;uyQP[ܼb[Uc՗` 4/͊IM7bxxF-h(~Џn-xO1IU_6<`QgYU0bڲϯ(Rܩ5EEE<}|ƅ*F4$[PWj{Zs &ISKV/0<;Ѣ?}|y*ibpKcfE:D}ڄV[p_XȤӰ8oeTzB'(HpO?T+ &Dp5qW7N4B?04Xt_OLgDǎ8|4v,qX4q|$@1 tuÅݳQsw"F+7&1_&՝Qdw=pZꯙ;}bb:p?KOh,l5tDHf(ѣ*ƣ~h:ɀ^o@4f+< dL?|EJBYNr ofU+~C_|~9<@dy[ +w}؁r< [t-#8{zdLo4wTJHg3X ʙÛ*vFIlRCDaRYِ wByǵU*VAp )Q,2پY@пJQ1endstream endobj 224 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5851 >> stream xXitSG}~8^@Hh;IX0 !6}%ْJYf6 !`$$:I4iJL3ScsW{J#w#z伷pQ#F$?d$?;J{nl&K$FN)eZ;K™%fY惵/ؐiseˇnQo{ / A &> ċb(C,$rEībb*GL#Éwtb1xE&fs b<1C%C' $X&z=Q8"Τ}m\#ӏu3,8r5Yt+{{jZ^޽z|>93Weng3?y{'<;h6ݺ S"81,dvWx0=!kQ-z0PH8HUW.bϾ@2Evّyµ WJjnrbY[`p@!m."Rr0o2A#֢(CIIg6GBhK|_aeXf`` #P9A/gY0cs P5Z}*JRq#RF*APHryp2 >nit[krHG%KݚXrx'+>_>ދ<W3ow@Y _n' (B'qPIւ:KYl8./9;)H3?qh2_~xA9d(KhCf\S mp:` }~8Ogayb6V`|>V󿃻4L3,d<`3Wy쫯n{sܑƮ梾+HM<HO[cyd5;s?G6 Ltϝ0-&Ks\6kD@< wzPs+{{`* t}e0TTK7m8kޭ0??Pեޒ8I7w R_ރaÏD6pЊfS& V|xyovi`0#`(q4ypLJ?Hnee] N<8`&rh!)D>]={0 FߞxZYŹxK0nbun 8C6(R_ ;W,4GA=\B=`ߓM&EZfqs7c’?\>$lEcPJ~T(Q*\1!%Yc&U YTX,2K(c0>N=B*Z]勰7(`8*HVdX$^C0D;TyXY)dvŐ-T( OF_ge~ g›wxgޟ+YJFK58cIfH=JZbˆ/~?{k^TycѰ' .O 7V4S[ߓX@\S7,=*p̀k˼x-U-=an|'AEW\k]+io, whRV*g7]S1IqŶf1XgfIcX rVY_5 7E2n48:ZVj+kBv1\>4Z|#A5_|[𩋷v@v6&sȤJSVID6L1PCr8 *k:ʡߑ c񂋓DZCf pqݚ} ۵f$0{c9:q 'p1uU1;ŘBQdpӼ5gXj'dx)Rī| X>ࣃj#1 ݗxN5HPp)7@I<]AErb'ғ 5KȽJ2Q~XsqqPdc_tCc&hkv7[L~?cd0؍Fn1NJj~*Kł!=qgv@iӼ5jjDJ跾Yq;Z- P ro΂6Vo'I6UP)-Q\8)Nבy/ȣաPu0Wpp.z7b̘^n$ko9v~m{- %gԚRV%*+ˠ3oY)sjX&tX%C~G4v 9-d2md(HZ#0B2+I5n6"ZQ-&@UEuzOPyh v|.O8 "uY6͉̙"Fx؂OˤTa9?9a_2d[ʝReu8BJԮ2y$,.G_+'%!!1uKEE,sC4kuo1?%] 뀆$jfeLa!|h'<ԅnX8.]Jt>\RVP!CBNEUU"#%j,s^\O uMO<GPmY2}rvJi.ȥQk(::<6TJ7oT+7hx.,!P MGkK.SQe vrX*" 1KBQi`pa('г..׀=v]]ր"+c+F.)K&Ɨ%Ӆ3LrY.6T _Q٢:ץ'KSyx殳g0ǁQkvl bW(D<߉Cs-;c](M5{W+Ub.Mh@d:16;-C{)&k##`>P@CóM[*̠V8m>S"==D{`ӟ׵UB*+jd 5`tmi9/~VMl+vO:ֳym<,0Χ\ $۸m7i!܁VJwPDغOr,tZ,l- f= ;ns`{A`=KKJ󋋇`qs닲e:ȋg™)^Uw<ڢ@ :jq&Rk ,lV8+yd7k+t€Z=P*Zb#qYSouy0ϵ .#= zϜX)g]]T.sh(%rµm 5'0-\섒P0dݗ䵫7xY#V&D҅IF.4W߁:10RR dfi}pa<-[z -H)5c~A#2TR;!PK*eifԇ+uBQ@-1.%dRʢIT,R= ^g-:&{b0Aj%UVM/R8anlCɇWW4ģp?՞pDY%N]$:sau&))C(bwwijzef+]\ 6B@ب'-mA !O8VZO[oB?pvrߙ)H.Ae̖,Up ǟ:Uu8͘Ȫ$j [,a-zf|0o;8_]6C#ѼG x#ET,9}]yui"\ pw +p,巺Yde5d7HXc-Up7If= P؎ff+h,x-1KeA<Ù9y *k)}DS!&!i 9}64LVln|G >YݰNmL6.+%ޟœ bb0* Az\dܫ dq"ὑfY{垯ު^̦#Ta!逻`BvhrPoA Moz\>9㽌vi>n|^0rsy6n|pY]3Pظl(\qm pJ'lK1 %aT &j\&\B2E +B*!;qW bO>ŏ}aza%$ƎS!-¾NBW`bw;1H@*+v&12y+pamNy4wU/qˣ5`¿ÖYǎ wV*@E C6b *"tp>DZ&Skl/gՂ܎.q<h< +2(6$T; -"mL:!JXQG \z]yl⥭7c^l2a4 /G'Ӌbc?cIg%p>^rs6 #/ǭ^ԖH)P_qV>KS\/s&fS5 nhV ])k$%@d~|=ɬlO ):>OW۰#c]2vD}Z=G&Zu+qٓא 2|茤R"ؙ-+a偹̤+l%F4*xT.-Etah;\UVW%$D\qFZC=F/4: 9U*&> stream xuWgx `≮ $#z !pnB11.w Wum7Ⴑ Z6$!@^Ȓ';~hfyy9!x<ސ̚9g4ا!j_J Bo+GϘ%Y˲CsDb]ےSvLx};fϙ{IbNL""H"D|H,%6ˉP"XI&>  U"`>"!F\VEXx><Ͽ|Nm+(B)qt!C6 [1D= ç vD믪I $n4퉗zH#UQoؚ+ H`5m0H5D3+9to(Z@wwv1@.Ǿ!xZٷLE_ K"DWZ0N *I2CMKHu!&lZ]]=Qܬn}q"o?V+X)/2u;(ZYd\J= zif]m+H^dF.ƥPG(Bnx0 /؆Dzi׸|/ѷ\VV($"78"'H1n<EP/rycGVU*k@A ; FRp.8s7[ɮvdG[cO.@kqmjEty~'mZ*4/:ĭS7ۡ;fEC^Hw|O\oIeUq˕jTR Sޡj$ ZTG' KAx 4r3$pґmGr({GkM݉!{+*n{[)6t(Kޓ^ zP/zʵH^t*i jL\p{ bkNAxݺ[>~WόJbrR |eqn¶MJƍf7XGFꍎ*GB V F)Tr{ܞ{x:3Mhm[* h!<{ΧX?JiӥcM{Zi&IWҸk7(XgiP{5EK/r07A|"cPO3o^?(D3OMZªΌ޽{{i%Ae4 .4z0yBt= yV5 K![B@.)޽emȊasV^nV>$s9g}Wc) :( 3OѐG^WnGrjf?^)&9?2,GNiG,Ė$eh* /;\+`͔֢6) eqXhk\Ҡ4* `gTb[T}]Yeij_>{0;g)ahd0s-G5# ]] r4C%Df~hnkm46y;e&6fe<S>Y޿SEBK$@Ɓ[³#zK?+(Y+8e`ʨ'SO3l4^gu&(8:(f=A|FKwj_z/Njj{jư"$:*zg}l2.=8$Fׂ_<|tπwxXRm@dYjsvSܺ}Gn^ҴWe֏hL: 䬉e߲Ǐ{'l`uh?R\!RoM]&i,t%wte&3 PߊEC `( ǟendstream endobj 226 0 obj << /Filter /FlateDecode /Length 707 >> stream xKs0>V+iqap ni#qgL:ɐdrW\+uo]fZk4{1(&*^1yp*c: Jkb sZigcte"yBXܷCȚ"4l]-o[c4u ZhSWKxɮ]*,GHQ(SL^ֳbB68f9{p'By`V<0g{.sڀ8c'ȊDq4uנkܩƝSp%n\-WCChO`1h[N/KgP-a̳Qޅ17drU=B;GP^Jrob%%mgIj|a:>eVojxuH$E`k[HڑXK-lZ x`v RE~8`1V[|lϧ )ټ#ܴ 'va>:)XmԼIIv8>pc|DbzNC8suUF^FsYvDpus6ǨLgUq! *endstream endobj 227 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4439 >> stream x}W XS׶>1rV)X;qzjyY@ 32$Bf22@ cV[V[m{k{wϗNZ##x<ވKw͝=a6[|/}woɱ’e)WgH{Fdž'$ifW:AL&6fbBl%vbXJ,#3JbXCs:b=H$~M3c;b^eXo`"mƚaFH XnYn^Ɔ-e.g`b>eh.y| vx6 D5^ dP1vK>=Sp-PIᶂá0ޙwXƻՄtB5ʀɳKAgx^Xyfoo9Y\}llOXc*I z _'m )DY1>:=I$xYէb\/F^'c;y0Σ{<(/678j"6=|5!CIwllTQ9Q9@` 'Pe޷}}9k?;s >+9 RH*ʢ)q."yg׆XXGO2n넗=L_ ,6&[Iiq!;E?| d[\cs>|٠ik|<WY:. en8FjY*o j!ӛ;KK`" O+;/.яC0%PtB]_7.[{/:_#XKXЕ}ƄIyD.ł-מZe@0}Mcؑ@mBp/GpQx >bR~kKdľ \Y*.ՃiCR |rzb3H X_6Zvvr?dsu{';;tkfݛuߟ)%N8m%@ (&7OQ|CFS<3|㎭=Bh@_lO}5'_?"T:yS)-Ru6F҃OTޖΕS2jcZqi?F˦#¨WdêR֬ẺrRU (sFeQqQX-0[㹈m^s&!DƵc YILE߼:HdLyF~޿VB1eA{Wm Ue&QQ7; B'e_!Ky?y5ثq}1wW~:0'%g,KR[>:QKfhZ%c>+7TR!Rz6 D}T-.RxޗY,džrkQ@gP% "7-rZ*FM{KCwN[ 3 x~@{a>LʣB^\VNK]=nCtfGbX;kaX7a<0 rjjpIL|"3aUU7,e2S2& *߮|:,-e=ɽeޣ.2y>Dy @DNUQnw;Y[l8K jaVb_k8a=.W=0(p7[>q46P(^˳8-6+{]f)2!;豣~&*Kib 3iyAVjN-,*m%I_2E7 ?2cr7x,0 eņ"j5 ¡6é ><4v/"lЎpI|4'X>!7s h)sU7'0H +y+:8z;ߐA%Q%XZ^Зk{™ݒ`o^}dOK}`ą؈ )Ye`"^ɓabmf0ɩV9r˜yvOluJM~~Z 6hVfkRT(+Tk`J_)rfȋ> Jn<^KlJܛD,i z(%+0ʐ[Q[t>I6e"8Aݬa0@l3cҘ45b5TZa)a83];}CsXĶd8KZ>#;;msc2/ctr骡h&T4*2 32fTDzi2;Gp7j~7wk_\piftX8;[@p Ltuצ3C07s']޽^_xV\às!ouB.EreyHavQ@MKIx>!5byrm2i9DΔ:]>ǟoIbK7eY}nݺz,UpY+DXq̊ݞd{CjVc4ocoXI=[ݩpinNp<655%E܇_“3ҹ^iB6ldia<|Y/_A5kCHu99&c)E5Rk26]L={oO  J9+~Om\.$..4YeVKIsR`ͱ*+*+ӺE BZn)32׷\`96Rl3 ;*ʫ*m%EZJZY)zNs¢¢""O]~+oC /Zp|sr >nu.ZWnqUKR NjMh0Ga$'wh#5rB22\>[ N? {nI8u{tr2Of(UvER㿥h.?I+F" ih(ݕe-4NNzf8xYfpEi%Hy yȿ4T!;!ÙD]Ʉߨkw @4>8ѝ SC֭]e}HMjFeH hE8#q_ϱ#'1 C>{zJ8YԔr۝*Okm~7c,@3`?}&xnڜ=G0:]>ea:*ʠm&+wՒ3wtE ; 퍜MHq-O&n> }_=隳dhQSbWGZuw@8./<U4cex[˞$6،Ԧ> stream xmyTSW_ yB̈K߳hubgjEp_AE NHH7@"!1R7ŭZX[{uAK{\qnڙӾ{r~rExb>(x;K^26k '7X #|w5,F,.rϵ/kj\sY \o ݑ\+*!aQ.VW74NrD'R`HY$)&ء9\_'Dhm]ACDWWĊ[/^pyu߼߈hN?ISAyrN(Q{vlJ߃ n}rMQM[o7?~?Sz6&,C Ɣ[Id26<``C,)s fpaC-#|ZU3WAI^xZ}{Yx \`in ։r<6鸦@*,U kr`v^w.,#Bt}~ğ(i|õ<!%A?G3V.Wa:Dե54U՟ 4l ܶY!gLUP{un>QIJqڟs%;D`ebq|AA\] g_ԕ*-K p00c险Pʡ\ˀ`R̼\ եp 蟹asUP \qؕyjҲ"#[Th4xz],6'q`o(EKƋ>cil,#wW0NWXrQ)wۮl d0kv(:YԀ3Omx:cFP[Hxrt :bXէÐJќs%3NI[8X -*D&gCئ;CC7U1TE}We*wKN9ǘO7ZXpTIOu%-t6lx) MVޯ؆EY$eXmלDs P-"'5x:Qx͵ !+ѓf-OBntt`{ՈmLFvRZjEL <k=e-c[jk҃ǫDs;׳ŸCw՟}ww;|kE aB LBpVEqdp5쳅h׷nXbh&>ͦP} u';!q/FȭV^{ZPFi~v[sMQLD㮊`2cxV`Y`n}W7`8w'Ґ%U'TlbXPNjNKy'a0;֣CM'nH1H,9v:q Z Ǡ11U&$tY? ؘ{`h?bh$Z=́‡' AJQM<#m}>3‡V od'&FOc 36PvD|mhlCM>':݌/IX_z`ǝ-\hCqA5u.Zۗwg5fYrEt!*fZ21e y*?DUz,$xV<.X"YǍ5@?јd6I`R>U8( j[!"Px%9Ym=b1ZMLv^61>2Y~1&xF&Ů+9}a.e6 _ Q1 d/K6n#7") t+ZN]wApy ~Gl_j؟\}YEq8`H.[VO /-m|<$|(nE&z%^lU@#F6:JbH?(mair-x~66"ǿ0E^cSț-IInj03Ex9#Sb rTU&(0V6 *seu3xFJWHxЙ*Q%(ec]5l #!I0#̧ᙂr0| !7 ,ژ)(؀9[ x $CrCȕyjϮ;[۶mVj 3D9a097&!BGυ/A<`&`ZhCr_J|V}މFFV%}(*V9yj[`ү5`cZC} M(s荁Ws7:NizZkniNy]llIq < Y41iͱo4$*Mm< “fia4P NE~A˸%]h2S,@uendstream endobj 229 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 9073 >> stream xzw|TUr窈+ཊ]W, ]@@ZOΜ;NI&=REյeug3sn}'!dsί|d ﮱ1cܽngŔBGq`]).c?+baEUߪKd9ܼk +Y_ZV=/8xY~g3yռykxo{oo=oo#/oo %Rt2r˼yV^efy&oxySxn=cBgy:=?z_4ܽ^لWyܿWx}v =8aN~i碓͜9G.BmBI|K7h?'>5M؏v-FIIi/4YIV(E[ rÌzJKZm&y2s cK{3xL C~;D "@(mhk e5|Y_m~Ǐ#JY5앛kvԾZ)@f nEuxMJOx ꋞu1~nM߁_/ǣs>/(I/LIo<5!+|H_[mf`AKQL$"N"`:E\C.a[;zSƯ1F8+cO[ºUKެ[Njtՠ/hAnƝ|0U'= ~tS9{Uƹ=_]@]ȣlYݧߧ0;"k.KC%t1>LoqPO:084oSFdYv\ VzHx'Gkj"Q_Yysj=/1]@+Lgtvw#ynu~ڟ$i E"Ws\p1U.bl1)HO瘿~3$/&`8*!+R>NC܁D18978_O%n IرV%2:@O=zܡ}x[Hlpᷪn3IFkt!<'5##ÒD^wַ:#b3B ܀,4nInɬv]J],ԙ,Z$cGaI3f2rmuXmf%uzI udܔkt͠lSmwj2+3&RA-m ~WKDΰ 6G}Ի@ؙ0cu:R:n2XդaP 7o.-Qn]D&`q:!O>b'F6o ϬjBװKϲEdSpN-y{Qٱ܏|Cdߏͅa7@aSv̸`08<`tAg(YUYC*vJ(\ФsCpa'9|F,U?JJaVejfƠܴ33zzm=~RJR)tD8_ phq!Uh(4Υp .9I~:L(cwbTp3(f`}5G%#Mw}G -6EQy&ަ0Lv NgYe2L)H{QYWbh&̃ |kGQ1 ͎װBA/X&er9-܌i# tDձ``^7Tvl\pBOݰ.ylC-:@7,kA@f9d!pڜQf=M&f552ԍ6YaUiK.P 2J,]Tdg@|02@;h'p$gi .ͅY5(wa==)yb]bHIm0 @=Dvp (bUMs@ tcwhsB)FAmhvA ?XQ5mӺ*W{GE1fcu@$,aE6 :zRnTFyoK55ww0#Ptd_ ]Xc2UY[WՅ Vp?ql}j ~m%Ԓ:eӜY3 *`o-ݱ"wKt2`t N?%m:n['2יjA^԰̵ 7 p#,kΤ,^ 2C 8"e!rh' 7 ZLJ{E\G^腓#BwaO-R(7Ah.UP@, C}2iCp92BP'kY^ʐ܈xtQ \ik%32*YLaSgD[Td%Y o6}gAh|>2;mQ.1P^M@ 0V+^gm=-fD6H UbȐXھ=H8DNԟ GA'W׿ya֣^B["k/o዇rvwS)Pfq{u*EHk؞NaDz3ɯO.؜n41f`r6`C:[N0sC} Ww %tyD͕ЎzS`!X"7w}B2Wnŭ b (h;dJ aȗ--@bJ&OOӣԓaFP JL6]I#F:Z|1,HPv"1) Z':JWĒ"CV\SR*y ՝&(M=bgM\ Q޶+ -dVF$VER+*g+c']f\T&t iQ_fҌU=`7{q_䊸jhVd6s?0EO ~?)HݔY! ]gw!WT\(ԙ +-Jr&Tn*7V(TBv8y'Zö0>Cj=Tcܴ;3 b_ kp*%}h7BЇ]_SX'YzmYNac|0_8p >&ɠ鈼uHǭQۿ'%exO>X^XyƑ9 '§?M|-a["*wҕ<\NWRvҬ@RYd0T`mqZv5Q{- FRHqnB.xPf`::5 318>;8Y dY.E׎36WL9MVit"/r Pj D+'8Ct %k~P *i? xBPVKꪳ?&|5p}'B/i"~<2 EȻjrzċ i`Os[q6mZ"sZ"QEry ;Շ|Yv$3!}ٗjr#Q]ɅO?ݾUUoIWRU)()~ngiߵ=ߜ n>cq$tJhrkWlA:[}dt <x@~5g]%4<;'M8[<6)-r& /?b{.f)UjYS' f]BWX:[HOFO>[ mD=1g}+p`p]z;*93k|$IJnS  + ڵ Cm#NT"B>,gG<@Ƙi3y!Lʛr5eBoĤ\qWUyo3/^IHymp"iQp  o+~CD<ePKVRw/=iS*$נ*Mpk$㇂nЍI77`r2)r{6J44K1uHA˼5Lovm:.>p8' \Dly"|<'{/1!mIf?pyc@Dv4N-+Ri b4G[Qj&>N`-C59`ğׯ7qG 4e(Itev.0.3|aIzìFB+[T+x N}|n8\^|VrL0$WbV m4~HO2Z>t@5وE"ڠ6 0 >46Yx@nr78* @%jJWa(>`ZčNb{]Vg 1`oΈ7|gY_,[,éH.gW//w^]hO%2qɽ|9AANm8;h+ C,nY]4ΦǮv{wsFfSQ.O62s2FzzWcWW݊ kzg<࠭RbA _mb-Fdkj֠-Rw< ܋]1 s׭ͦl(h{dEp o4vKCT$ 9\{t̟YhZZ6ꁣ yDkt^P+7H~U? j$~qIXho$ɔ<"&l(7H%P#ά.+Xv*kbgM+室,&N:x}=;IOzސ;9{4uǞz~=}%|].4|e_iqnFJu)K*W"đ5_hZVb)Z_Q.L]v"OulAl~+,Jj_K/瑖?Z%2/<61ke(҂)j <ñ>Ec_c_x]Ǝ_xoNx0JUBK5샯lPF 7XH\B8G[rL1肑`MH^  ٫BWd⳯# k50=_+D[^ߏRwtx?J9SixdHF62D£7' -/clћ4f- 0@Q>vz#% xyKZV.j4CGJjq*[ʷK2O%0eaLisٜO'M0.?mv"^(ۢ qeQlR[_Uu-B`jlvBFp rL_h3ff+fQJid@[I8 Eqmhȇo?$+Cu%GƇ3: ,,YoKDA-F+I#Hk}cd;m9[y/nmݡݙ e$B*DKA8GWr*WIhJL",I=& && &L 3endstream endobj 230 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4672 >> stream xXyxSe?\"H(0 3 * R,ݛifOsM4{4)P,Ȱ# 3Wg>s94 `Kq2l<6[Va5$l-"Şa󱗰Bl: [b#*L]V(>˘3.ûr oBIpX(G'%pټߎ]7cbRT[Põ)WOVt4zd'; H-!^ X7Jzʼe2[/Т ZV6,` P zEj'kA`k@ :z]{g8YP59ͯ=tp٦5b4'4k'UY5oo cB*3:ȼne^T3e-xg+s.&7="eE@UUUR'6 >>_hMQO}&3Vt96kmE6= x-((VF'z:W//x_P/k0["358w z/,WZ|<2vxTѷVUVB~Z|ؼz\%kHzҞ$q?g>MkrC]v"@2y\$3C0@7)&#$%a$ӟ͐EZ~4xE}yzxx xƽX#Ā@nM ŕЬU)89Wd|=4ޙdmo/s灖F.=\ ԋ ң @) aBDA@kG\W};|1˫Ǘcd%(%ݮf{Rhs$oo\m6FBOp3uaA= Lqvwb]J|3ԉD!~Ori x 4~X{;8֑JCߠ4e!]}~MN:WW[PY`qrU1rDj!Nzɖ>8tN޳s?p)`Ԃ:.`u h'zV\C!҆b٣(gG9iDqc1 ^˹MSPS f.}MVXAy$ `.F"@@'^c҉ڤ\t$BRA_}rNcwo?v`<'NhACbku|>C;4͸hhT .wG>Bڹ`AMM_ DmX+F9Y*76-F6w܂icl7*ch sC1*JKR.mjxT ڄ6@h(r9kcGo D;#Uk;PEURlWw^ߦtސ'G-r;a,5@(/l$Dc+΋ǻ7!oVo/g#xmw;ID"OҺ>uz\j|9授\ڡ/\SU?8,X4';ï/Hs9p<4a?;d+NnjG#87 nx͘fd._rjʓr'I芨e|~S=^:P}1߱v0.@z*˽}ܫPJxE47x:'v07;"Y WS'B>?K u?Gl̗ί98=]"DRΏU>C!Z ^<6JhWʍE2b"[{ϨPh&P>-"!nqs'݁/eIMg*(:%uV䚠F~@#%N|;(l(1,0>F"P-Ӟ󄾩 'Ƞ{.M@~z !`lN8v٩N4p򗷍L(9#ZDǥ-E-Bc\qq'>X[tu5($*0bt6QwtqYuQ^z~hmh1ӼI E[zPVK;ۻu*O.RS8CBKԤyQTW|VwivC%q]NNm|\U'xwIC ' ɷ _Y#e)[[]N>G:2b#W__u2v;ڝ]Lܲn[ N9}SS'N;5* @74⣃וKx1Hh;1hyst^#2!-2fFY1mB4֋5RYaJלi}h.]RP?hd֞( $)ԃiN.*ńlu0zMpQ(TvFU˦eHfVc;է->S| /p߼4fh[ _*((%Wo9lvSی8\]#CJL3.(No3imj~PM@"QSBbH"Ű;9| lc)Q$7{=B>~dž,t+[Wd>X[2K7wQff|XCrY_BᏱ5'2tX£qFO9X,"uP e}q\<+qip{ς4kr}} fbK;>7xkdmW*tl6n#kDTr`D{^fԭ57gS< 5˞ i4E$O/_.q _ fw_p-]=sds _@yqሏ~6D8=Cvҩ?{bgd ]t`pݽ90zendstream endobj 231 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 848 >> stream xM[hUgI6u] "Dx{ DHRĶTŠ$;3K沗3s[2;iJLELm ^P$l(Y;*Á?>bd|'ff{蓃&;(0#;DoN\=L ʿ8&A')yx Iln*qSvy ~`˹_]~5DqKv3>BRP FTes"ȠZ's¬1ԃO MGeϾtjFzq( ,ti7r5}2xT$ 328pąlkm=hzɈvW];$E%DI<.V*R)s֫VGXkIu NZ%E@]-fsǎ1 % Ezi68E3]DE&hܮV=:Re],7^ߜ+*TdIB>6^/s aIKYD،Mل? j۞d'߻ &zdG{?3$MAMֳb |ʺL@G:5i-7X.dEFy[=j^~q> *KLU&w$~%w@?8!> stream xzwtTվĘ=E\AAPE4钄dzmO・CBh J *Wņʵܫz;>o_fE8>~w&umA,[>i3O0WD·o;X!=z7yiF̚U/Ϊ]?/'moZ ټPek--_myŊʗƯyW'{ēOgF?S8kk1k4,փ1eYYVfV^`M`fb=ZÚz55"kk.kk2k>k %'Y YOdMe fŚšʺ5UagqYY#Xk$vV1XHĺׅf>^ȿ-~۝ٽĖAw*wse׆~wpXɰ38{41sħE3葋W_xd2B~LͥG=ϼQ:3zXnjw _0?/>#!߶BhQ!g#8~ւZ$i#v{t88Rr7 "\  e@DqVC1mkMpнZtmN6HH@)ԉ5EINn(<+JF*x veǝGpmsA77#"7&=`%}`)bIPH) cꐈzB=Bw—ЖTLE|}e V$}tLӮ3Dx&w l&>^}2.h}wav#8yg _I o?!8W{N竻Iib=շc7; 7]9!.$:4 %"h =W}GFJ^|xHLՅ_Rnp&h$nb'{Bn+7HC4Iy<6w瀳ŀDiJ(x_wsd>_W|9HA4eߑx};(4BQD<[䕆iGL,P uJG TqYf7Nrh-zްߨhؿ}MOם1{&lG@d2 V@ؠK]oڿ{<ձ筽!^’\(A2d\ܯi*=i&mVn4}qr/\N" ȅ6=$27$`ׂ.TZ%z_qZ}-⚍suO0$՞zr(->AcΪƶ=ߏj iD˜6A7=6ģڮ*\uEBqTPnJAYVUΟNE/GQ_;-j4~"(Vgs"Wyѫѫi4ʈ]*]M%j_]j ͣ h} |HkՁpeJɶWVrze;W?o0ADBцn -/AH|S+2$gǍ~Z-nް#g=C$d>iE\oėUH Xf- IS$]VG+Ѩͥb:цdVJA\뀍I;b}EN5)l}p:T%--^k߹3 #DZ얓c0 6$Ęamcɀw,H Sn1 ϼ75V'љqmwv۷{D]BlI[zFhpa57hUv-Ŷb PeS/c~_Q'IwG]xޤ9u|K΀ c V$R@2)z(5"I@1qx_EF-pU[_Y5gP&IQUHJ|@˜.?yB$M;4$#]L] 1 =y~coZ$]۽DO)m2H(xZI*ns&]I,.:8? vHk1PR$͌ 'rM &,HTE͐X{7B]lbؖ9zX aX2v)x.TRb Ƞ. K$6Y49.I%mD5(+Ćz|bFf.Tԛ{eF3j@ثHnk.;#4V6EuyYy鶭zѠ!Hy/W7n8Zӷȧ]ȳxǍNk+L6ٺ_:Dw4ĉ>A^IR3)tO`XT8I@&0I$g'6vqmϡ͹fWFlյaOr3gg<-Fzq+qW/)GViaO ȼ&GT8HbKӁH`gp?"CPQvğJ=)L64Y:|bh!VȫW> 9BC{$C9BhP[ 1k(oMydE.+T"IXe91f*wwNx]jhahrO0G9ʦ^oO !dE aG-VWQf|ż+4EmVsZ#E~X$z>h.΁j>Td4KOzX`-T4A+Z7jzu:YJk]h9۽`3ƧĖT5<1J&aZw:{TwnnE=Acل>:IZqtzB3r (q-qbm ;gb0J>1J "A ,4 BҪ0/-^0SC\ϟwYlCK}XX roe*z3P -rZ#`d+t$KMB+=I'ap:.`WzE=Nx0ޢQ r,2(v|u;ZUJ|:Zŝ'0-8zee,sرR @tq/gQcθ=F#FULЀIBobѬ4L~nI'tKfEIj 8"H8rCvl΀' DBmNҚ R}{t-] 9|#GfťN 0+D&A: .OmSƎ#?" HڡD)L_F)H l8>fՒh9$x}\of `7=$!,C>!H3fӛ5֓/fxriGvO@"r } -p=7ΐA}s!aŌF S7**rJl$Kw x:o&ػhp uPN%fX{a ,qJmB) )HRG=q9`NenV 1 WaQ#\lN[oWZ`Q*w"NaS8(ζ{}r|72b'F9ÑCCB8 ֨'gW.% 6!2rcZ^4gTUhXkro=O>z;8{l[ ,+֛Kt:LkST+-inys,k)} %jϸ2~19Bzy1)5"W1SGcI}RvӀ+m:0*X+bT-fO2@{ ^R(}{Qo盶D}g{ШSh)4G#H=o6CPS& )Ulo0fMctpz!'B!kAD=6H2{13zλ Egfp[v Y $R-6 ΍As-I}]R62w vDǼIT-$R.Tdcj4,EL`f&RUrȤluV"6gL)ir[T\+ BѨ]ۢUU) ٙثռ.Q 15ZI$kVBƗxu4Pp$ 纂rJ3K(Jd͹ݳþY"it!U |T}>Z=p~f^sh ڈT!WUR E].OCW|o&MզJ}﹞|mSpQ޵ tqXp9#!Y4Ojh2hKͼzz\P=Xγp&KDO20`><0 uMw帒.=(Z~J m0́Un[gxY Մ$(5zM2옄l"4ě쭍BOJe*jp³~F!Mu23_,1I9H|x[QQ>js%5[rB%,$R_<ھZMVj66^tؠ*͵\:?,Yˌs9 }ng'b_ó{l^eTv16*O.PgyrP+O!d~UD81V]XfhWl 4 J>Z% iܒJZj)K^ aΈ2ue8+TF|8ǷL1={Nk6]gV,ڒ9Cp&IUZ٨nO(Z*fn y?~FӸ:`&)YP+ c`w:];%?iʀ Gґ| dAY L^Ŧ%+ZC뚬Я&6Ztj0Ϣd{tn$|T=Kek T"(: DPn2׮Sp@T:I|DvX>~ŒmQVQtϛ.a*󏾶Q'. =۝{~f3 `Z rh0]*[a4Mݳu]Ah=m4݃"; ) .]I"}W?OuG.nRlǟosd; ̞(q=W)]G04x< wiBwGB L0yI QZ7G.ifb6@ ͘&5TZTb}&@ INA9X^& gʪ&~[ζjzf՝h]w^{H[7A_plYV]_$TlW_Âx_]_q{#!},8UvLLVsMON^>&Ķ`/|+'.AԹϟi. ?}g|XG3h? Td᫭|δ޸θg8.CDI'H8\:ߑ=m~L-( V9d2UߺY%pF1oownF1)rp& rKYnYyK+zEjW/B(r^+糅a6euscEC&b~/nCwE=tO Wg:1׬*m*H<Xjo.~ὕO( ޜo1%˖p'T-i"PiKUNA2iXxXiTTFAdzT$au@W+< @כW$$QU՞tP/7L*fhb1YHB=}v75ZRƬ1i"//Е\f]&`ء25 _79.X_mdetvWK[|I\TxWxIό\E m7`0I"#l1t~:,3ʰ&r[^]|}?\zNT۩27, Jq* CQHo:v|=N|\5 4@®q.Y:apΑ?x!+0=Yͺ6 yڷ K\@Ss-uy5P[hk9NAwDe\6MUCb4 0Ev7v ܰ^|i>fUí[xʄC@6Re.mM|eIST: ڠV\zR, ĂhBo:4ҫ (<~m'WfQϕI]$A"H$ EFiJ`&Gr^5SR?@"ɄL4xeC=\^i&zJA,a~w2 & uN7:ZDj>6cӎiʀ2\&jCZ%_/|A %p+B EV'?@φLHu>؅DChLQنMM@w}o4ӱlE[t$˯s3|E*( Kq~qz= Niߨ]ܩݻAT ۂ| EIA17!ww,౅endstream endobj 233 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 8243 >> stream xztT sE9X H" (U ^"3{f2T&P&1 ]zz{Xo!QX{k=N9{_&YXXVVV3 ^1~ Ǎ(]wgn//zos`8oҲ7ߪ^9ǟ-m+8o[l]X /-yqK/~e5z=5~3C_40),[=-ĆbgsX[-æa˱7W[0l:6fbbll6bcyk|/:{=``9{bǰ\l ^=Q`3P0;53kgg{bv]ς7zUe>k;~Йn@G98G<+XSA,ܑʻǿ{bQB_qH!'sO{f3G5۳GϓÙ 81~Z{Zb, Vd3Jr $!'p˜x/+\~o vK3;8kn\$8ӱ 紈J_]K&xD$r?ul[HF`*4=`Hَ-`X#(,$GRY?ɏ)=L 0=Hx`@zq/pb6b -ˈl5gNY'NdZOrL{kTړ:Й~!1]+B+ƙ'3CE"Y/u6;zZxYZ Gvll9$lcl#4|HTE%J/nJI7EG ɛ0  U"ZiKߘux-^ࡁ>n9CoփYRc/:a/Ǹw@a"|/qstf4ͬB>U]%7)<FǙ,%gFg0r1;M2KR!yUu4*XؕY>7K"\]A}B{3L!י^{KL>_|pf|⍙潾B-).S'^<Թ EzLEPF(㙖K?GԳA^#J@"U-:L @̨oɊ@u<r4R_% P/s m:P/Eτ!&IyB~D;mf8&j,s-bp)X }t9w=[8;+fYs^-$*XuTQdKV@`i):(/5r&,r*?CrpI^^,GjxZG"l@)__#:7#*JB3b|g$|ʵ#7(/Q/qy %VlY(s*8$l M@fRD$Ֆur!EoY>S2ֲpUC 8HuHxؙ<"zYLTJ7p)X. ffRߺA |N0Iԩx\$JV ETXB 4,UUix [$DZyLZywZ/Q4s r #u.8 }SY?(U*=\߆`GZWwf7k5lƓO Ud%< * qc.1k; @Ux;**?s b+z u(0nonX=&oeI+ǥ^>9qT|C2"n>0Hݤ+w婋%bD+6¶x$$N1ΉkMOS@QMGdh%5%7E|>ws@zmtTQk̊c1qU<\QYBɤx{Kv=fh֮@N*Y-5%.zWf\2}Iډxwm0v:b&R@gx'鐛-i8S2(((]ʚ@p5:bܺ WbWj|5~rW=1$Xq # u@.!ɛ)aPT@Ip3x ^E^{{ BJtI H×dH6a(>f,Qܰ9G_g^O^czB]h U!IAO ^qI-@N+F3+[\`7;y̍gN,R@EE696Y}ѩ}P* V=C&e1)Uq$"2ɔRm:v=C[ޭLLA2b x=ӁF"ɚ FpN2%z 5%oϹ B?U;rEUsqT-A: zK(^tןwo wb] L_fTNڍ'1K\ b%(ڌu0srx09h} jKUm:kQNRv*IU`5XEN#ĚWnܵ8 G;1g{r&={yǘEBY˹5'aO@f\ˋ l`XO%j*Z%`XhkkKf$!*txUB17cH . h;sq~vx j43 ?q(Bq~lؗi`.Z,atGb)#lY?h1d,1TG< &<|·} *~ZeAT X3&.4DJ߱ "MXբ PэN ~]tFJ}gM+|k&d])2(PNXRV ]\$ Il ,N%MꝀ[;;utg #|%d0ͤWq@f'9bM75[7صG*Z.wgښSG5?9Xr3L-6ѮG8v-8(5bwmaG3v FڹmIcγҝל^Z6!i梥b&c~Xy*XVԯyH!H> £q]f7RVPt>YIZOUIꔵZ!DW vUרiU[I`GL׸p|!?$47!A|'Z~[} j5F(¬ iemvvr'  &sG섳:g9.)ɓ+C| !{YP~R=FaFs3qy@@qª͓8QgM$rcHGmڱ*'W0+-;dq]S#bH Vkd_vQQ(Gk5F]&<NqeEٸ;.$$g׸#'0ߴg"ft',Rh\"2T}( _߲^vZO×wڿb*R,Pu%ыJ8p!5$3a R@}Hex,஥$TN>UFejL*#7_{3#<Pp2Υ6ќ @ ‘d #GVx7 EZ+qf4r/ JpPCuQYs*X fttLSŮ':-6IdP H,"{5#ɇJnflzrƅ l<_8 J49o Cb֙nN`Lнa J`YP:p4~rGycQWhw,qN'ޙ-3RbqUϯx~ F`&ROYőtX8S82z~OIN<$HL=i7 subH1x.>7pc{|>]+o1㹜5W͓0Z HNr֌*(/u>}9'.Ο뜦k_θ}\+0*H~JmQ s[Kab?N֜83Q/URKF٘Ǽ9PlTʌdz9;|[P|lwm;HN }^& q_нo-N]Np;WRp9u<\RApp*|>V2әWF0WBt[r~J_B{EmSjru.pr5x\EVU tpNFh Ft@,w #g`2a*IZiCJD+D⊗>(FHyL>"m#n-"1An& -&`FWJT$/"E\Wo A}dx/y=RB!RwosaqZwdEkj,#Vmg5[tζ86j)=ШiQLkL^$BPo9w+ VؽNŇbDA10ó̎5`)n|GNTlQ.n[zI:z)d''LCF CzP$d^4xF $bm%@ߘ @54<˵64EG"sEHʔ%5nw/!WQH\ؐ{cٍw\ #ss߻` K;eӪù2B^TD)р7{x4;;2H0陗2V0]<u%"E8j`4?O7LqMZڢuQx\ZP HCA壾<~Zr.@'Ɵw\Rzd?r0^TR[R[mm׊w(Srx$W4L0Of)!O Ga F$h%O> ,^ׅzHQ؎CK(L$eo*Lp!W1)"r2h>3v~&'[WeFNr0˕0endstream endobj 234 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 922 >> stream x5ohu/u H/Mo|3q2A6NK_?4MIK_sMMNu]]ǬS /򋞠7ϋ/<}>Be⅋x̙ vpyDkrd}0>nbf .) r:ejB KxOG'8#-<- js}އߍꋕs*Ƚ_;;+i9 iH뫅g*Z^"BW4Oٓ)|αmq3$"0 ӭ]:i-.T& I2RKβZC}%8Bp\#{|)"s",u9TKJZxcymڠOɀ.N~˪&v`5.f|( RFtp'v#=Y%GZkKݍk/V@m—q qT%l îflE0 `$ahe*§Z\!з+lYAR@ h\IJ"^} ; tӠD.:z\ ~>2SqwC.+y2OL9iRM*d96Gk]?53 >QAd!_/ocV&'\Ì_ SmMS@e(\lڝVZ9\PRVQ[sGy #/endstream endobj 235 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2556 >> stream xU{te' 1P7:ú^VQ"V t[LK|i.5ɤiZza.؅(P-\]TH8D /Zd̙ه߁kQ5vK1͂ 󒺄3O:yb\ΕĈkֿ{gRt7C}7dдCZDp"71O!FN %uɌF;0S&TZN)N w`m~_޶L>Qw-!K./&ڂQp'>)I&,z%&(jRƄ%Fq0"/>i^] rVROK&ET%B]CuDI|km M@VpYP#3 +@Gu@b h[jal4'3GXV`D<H3s\/Y$^)ޤ;{OO}K:x''( ,YTmN]|,k 9 sG9 F=惘wSUX_&%2`n Xp?z0mDAg匼.SIfzx ,?DGc`JעpJ]iX.8 ,> .f;:ǡ:xp0W%T4+ P13.5ϔ#+,]m 4[O1^qϖn|+wyg0ph)[ft6A}uj, (xֲV#0-zRdſ)+-&kДA\5:ڧ(bqM95Ze$0[$acZ@K[{I|wג5+Cw.-:x ` ql{ck/줖vppy{#Lq{Sy$!(ęMU鏼Ћo 5Q;̻ d .*e/EoTNrS1_ͧ"w'Xu (o 5rؓ<}"|dT'Sa& M+RhD q0hfv( )?EU&Rj_iq7|4v]fzQ6g2djUMQn67-^IiF2x U5JiH9*p-څjQ 48_JG| BưQ[2l pb"aQBj*հ&XЏooZsW7۳Dd\*[M2jW>{uWSժk7"n'[ф}p lDR;6&uN7sxf-<;%#01L(A5Ďpub1u[5=ӁdiVHYU]} 6;M8t½vyÜ̃BNC#C_p} '(QIW2&Z iK.~ݞ_7?PiPӸf}J-5f>a2,WՏhLa p^:s/_bo K>{(vu:)bUiE׭8 Fz@6܄VL)*bBob܄Ĭq7-jw%7 gB(? a<݃aM6AkNLtwxڃa'3 ,)}WX*,n,~NYQ*u88,!?sro0H79m!~5endstream endobj 236 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 171 >> stream xcd`ab`dd v 144q$2!{@Q!=?~>0cB߳;~'hyGmEw9^ ^^emwn]!`z&vO1ca嬲bf#O;0endstream endobj 237 0 obj << /Filter /FlateDecode /Length 4741 >> stream x\IGv÷Cϭ`=SsBcH}pX&!ѿ{*&%O@r{];w?1>p/xZx CؽZ'w _=48,Aw kKjZZXxUvR;횷:l>ƹf)_w02\\}S!M '?cͷi`]؋My _m RmwJrՒ'Β1ؠl˴!ʲV֌u]UHkd ijجPLKKek|O㤞@hI۩f(\4ZRfl(om%ؑͱ? cjƙeS}NDdsױl} !M^aoDN}U67c:Dkl//d)5K{RV;Jۜdwyad*XHhVmm"5c$!#=1Ÿ?XZK!a2|Er"4.iy]F&UCxxC޿۞Eg.8< :r06i?n TٯL8G-?"1 x$MQӏQD3[kM3.6OqR&<)! ̏qBy&m-/YTgkYN'h0vS˄y̳7DREDLB)픛AȢ2;2KAnB̀Y11M|}`+P'bq2X9\y1;yV1%!MpKc)'uU]A$H`:WiRHLM1{Hd(W6* ӜrO3 )YkRáuxS`3`H kEOJmځ~[ LID#ޱ:G ,?b5 @(CN8'/eEsM!@]ҁC҉noMWTx-W7܉AQh3Ʒ/:q<{ݪ0 hw}7]8 פMH+O l*9.R} S>DQ #ЗE= F8smMPd@JOB]oM, GR<:`=c9#뤁Qk9[f1N1Q"4ATNw#2w\܃5QJkeakw& ڄA)lz(L-L@+NnE8u-i=?'1Y Lw"g0UHl̶CHKwlq!r)Y fvZō5_G—Eqcf}q+F)hK(j#RQP =uu;ٓ{[+:L&djHG3C'1UV}Vk| +aAIWrA0WT0oɫU JE5%A*aV8)h2Zج+kQw;:wsJ,j Gk9`o8nQ'j6hlhR%7@ `PVQ큞΅Q̍z{X=mR=7iuʝ3K[aK` ^;/ĸj"ɴAp-S@`2 fiJ0O5NijґuJ"8HYG8X>!h&pYms, s~72)ӣY(wɅX &Usj?ܭdJVDsD[ e.ת~9([9ybe?6Z12ao/OIC@ X$X>#c7 ]^Pͺ[&0I2n, {>q0srYIPcuROc8%6D?E p44%dS,i׫`tT4FY3r/my1/}=acA`%oJJ pc+SnuS .Un7㫜jE<^YB1/85%e ^bHC8ħ|r~;H!1n왚*ٮjlE yǵQh=OhZ 08t<T ɫ89}+O\ݰB譁y0 t.M]&a2*F,0X'$:8K%̃݌򠫰` n~6d>}E~yק?>h`?<Crۡ_ͧ+>]/zhU]\(7\g> 7 4:6W/ݔdbmYտQ.q8D;93$W۸K"CY" :lreXM8yրVu_[%$I2s〞2q& -'ٸTD9_`10G %1sjCV@zs4 `t]Hl-@Xn kT!m;.~%:]hi'X½~3v*?zݘSOhU8|{OZ MqJU [+kHQr7EAӲHVlEOR<>Np=;ZEviO~!PQ];U}ùo _ %NFOJc $!r;gFO31 .ʺ.I['Hn8 q̙ +ۊn,eڶO,fٓust>z_wLPV6tHrKidi}ޓq?Wds 7X~1wŖ:B4ٗ&9=) !E}h F[/tqa3@3WeY|< x*wh6OgTc~$oFBWipԡ tAC`H&|Ė1 \fh״ZrҊezRlѷ LIػ.`Ż|_z0?Wr/n/jf}A+"?@ads vKY݅}m˵%"X**:7s̞OLۻ}*')Z^p}qeٹVfƅQg"iyLp >z ^uS`s&xg0]##tw+[?wH B:)a'8[C`wܒ{e=؞g  8L3 *n=* 4g2TS3q/IT>[uoNU)z+; M^"ڡh8-YۍmDLNfwF Ni-ܱ2>(W( 3x+v8 bkUbQMׅWojhBy_b1_W ^|f gWv_-Į'"";kh5pADySKsrU뗨0oIi²+c:z^gjc'IҥMܧpeYH`rHFP!߈/lqK/V ;sfMdޚ~͔k%=s;Kef i gpk5d$8-"O,ioŐΰu$QB_ykLIgY)|d,%CHIf.l5X++ xg h6>IOO 7{ƁӹaX@<fx.}3( SΠ-jA&sYgdIp" YB;. H.] 8LZ/c틓 ;Z;U7)즪@(oxrwxNendstream endobj 238 0 obj << /Filter /FlateDecode /Length 2445 >> stream xZr}W0z g\T9)y2Ox%{BI1R$bDNf*HiXC2sDTCUZkh\C.5W(^O9%`΄Qp RMW֙z`oʹ_j.j;x: G*V7haA{?6  "$ZPeu-˽~oGTba>Ջtʪ/oj_ݔ7mUn.ViږU-fV_2E(ؼcY[nRZ*vuj7z^,֣W<UesڃEP(x}n`|X7nY>kL_c 2#i*.y d τ>C agMRzVrw0EJT#-CXjdaT ~W}V$z/-@= #P{o{&qzMzJT9{=;PRl,w'<]g Zq۶Bh/:> NX>8"k#Kv[v+l%ѧG3uٞa6~Gtw;iQZgߌݓ}B1 $/5&:C/=%n8_OI+zsPeD].;7fp&ic*p"gr& %'gDϖ:Nbb@Y9 )mԏѸ;Ύ;6 px*%sS|zB+T3. +@OL?ous[ŷP}8uKDto"߷b8zn S;v^C1^PHf߀Y> H7ғb&+!h= -@;7оG[Qq^w'n>}^aLoaO`?!=^]=tJaQ>pпv'0QI"6a4^|-n`㛫7~^P،[.gr{BÆ\gXe. W)L.{aֆf=˯z08ta)ɋ`\bGg2boB/BhL)La[y p \L6˝9w 5 _BY -$Ź?P"Ky}9:)#Q,r4{v[hPVE[n~_ƹT&"V̴IBw^6%y7w061ozv]gơY,y\ DQ9ZFNr^=;/p:w+eàll|~:pVcIsWsNE8mE4LD.IqWs,N'r-|ȷzV;Y-uGc`s\;$lcu4-<`+ N\??OpPȬp$`l evV|X%|;$`\Ѹ k&\WzF;G'0ݎ L<5_}9έ "$$p3fpBmC3ӐW[]2n3m,9U\ Z7trN ӖP "NkuyhE!Q-O.hB($ဆ/rHhE*젎=U/>)qт ]cB)r> stream x\M5o7nQBw7LDpP=3m\KIUnW͸`*u)J}NO'".ק'P#x0F.NORp{*A-NN]@+XI.soHROr%RlYJXs.W+η;0<vi9?^EP !jndq!<=Ӟë:15'ɞRX^مF/ӂ;\ŮY> i- {;xna ԅ:1oX2D1q‘N .C~|J(0y' hD'ac0yǫ;w(f@KIqBs[8mRt> YQ&FJ˵U4SmXmd2nS%QIĝ^\|z./ឰGKجVE 53'a\Rs b\ ʢKIRBJ 2𯰱tbDo$Di+qAduמ4z[+:yFӜsI_ OO$\DnEEt(1DI! D0mtSõ [ami2X5911= u >% ƹerǖ٧.L#"s- lNf8RΥXɞ9nG^JO%Udd {k*kupF֠M{z |^kn +ȌA{$E Pΰhq;Ci]jOa(vHx\q\yGu]YyV'@@J0u4YUoꚤb av!fsвCӥ[6u1mf~ݕlK5ku23#&CESC }]_6icj o}^:!6weDPA|F4 wԦEϛݖvŮi[ġ bqRj~٬qc0f?`Z1({:cN}ޡgJ S4ٽڗɡɗiu |\mPlٔ,e52x]WĬ]gMQ2ߔ+d-pk ̘)Oa]&ˏ[;~Y{XdnX>1[ŶkgQʸ+ۣ}^뢼ڔgDpq {Fm(y7(KgPRxMnn"Rہ}]AJзgމEuӜu+ϞJ!s..yZ#۽ʆQlˏ/F#e|[׻KIqI _&nEXZ 5E? d}Lݥ>Nԇ/T7ɒՠQY/s9n/Qa"UJ&wu sSrX3sL7Jq/GmzG>eeD®a__TSC[$(~^VJ=InW>nyR&WP 9Txmczyty?H%jlWzh@: '.WڱjI UP[Ck2HEAQnۢ7| YQ.{U7bmƱ1/<gc/Sh<]Q,JƱ}0ڗ&FqۭӼmZ ef==n~C UrqԇWM:m;.y:%)l"!nqhӕfLi~>{bɑ#{ǓzIohSg(:/endstream endobj 240 0 obj << /Filter /FlateDecode /Length 3766 >> stream x[[ܶ~MpE)Jr.Ҹq( ;ڱhCR?ٍ)ȃ9\<\xxf"T'bs$ҳv_Dq Oxq~ub2NSiYۓU"ib{Td.sV v% +RuW5:CM.knj9f㣃p#V&JhZ{CMEN^Mc&"Z&ʗpl$e< Ypl>1F>||l3ca 0fb_\q y%%ۧ\$E^g"$ӟ}уc"(f" InѴHʊ-\{ɸrpFdx(_@VpIw d~ A.'N!aoQ#; ӍCϭwiפqOψk7۟ǝ3݂roܰgfj/ aZqu{Z><=Gp2r͍w$K@+&^3bwatgzQ%E{ȭ.Хǡ膷cv6R7j˔=Ϧ=/G _kROTxlS0W/+Ʀ4<^q|  qi35 ~9!{(G_zDځ2% 5rqCS ᷸^a<` ƞliqa+ ¤e6y:W 8 ;ypyz ;$k懗1Й[4 ƒPeL 'q$ 2!M5Vf0y@=A(8ɂ$\*oL#ۭiUТUO B(ٚzH/WBg tˀyy]+./=ごAC7jwК;KwXօPۗwN߬+1%NUZ[-V9'Dzǵ&fMyþFM9:zzh]qS_;TP½j7 ҽfz^C/\OCiŮ}n.I}Ǿrʹ! Ӷ1|arv 'BH ݂V/VbZ35\+!z3TlJczA!GPQн_?>KYl2ՖCtdXڡPU6{|dYf[~QI/""}gIױ60TUWmm~' JҚ͟c?8ʩZgy7)dޘ2=yv924lJ=b>fAQSȃs╮Σ p'9/9ׇ`B0nyq3ؔb`4'r11l .k+ȕMXV9=`^DCRʎ#)lsjNN݄:/\w/ITJ~t@[{)aEW;~gCbLh΋#yϐX6P?b sNBRn?BRL…ž_-ydϯDLcJtþu2cz"\^j?qCljͺ[WdVo빳k⡇"*-se5jó&e[(i^»f={m %/$bڍK7}eRN-JE LA:ԙ.D@*a]>]8CΫ`νoGCZrK\]eW^a՝&QU|G'N.smwΕ3QKf0הo ju{D7ԫc[V'XEi=f} Rz(x4Fpt~8C%7"g.)B> stream x̽]-Gv$_qå=}\Q_e맯k;ouy x?O_՗78Vgi8oS}_'rkqs)|_<租۟t}h}kM?q/xP{?yoqc7ޗ>r(?۷YϷ>۾~ݖqO{^(HQ~{G_v~ oiUWO sl׿n?1/~ͧ=oovnWQ}DG~8k=r{D[sv겍q{K\b߶:o/>{cRy_ws{;:&O;zßщvto?§/_nLa|փ7{_8??>іvCo+OJH@~]׾|mUO]51b1_Wq o_hۿ`ot3?L//oc-e߼>qgGݗ:>a OW*k=VOnW߽>~e|1Dk7ǰO'}Ggmar0=_u}yI}˿z]7WwOߞϏ?_݇h&̷yޮ巷K|U<{xaGv$_cOc֯^?߽8OV9K?釷k޾C{n&_Y{-[4s}c[+8o_(o4>RtH mz!m\ZOe]G }(.??_zO\3;S)]qԱz'#]X~ /uqg X^B1  !}şzT/q>ȇOC->ȇO>O *1F X6~}ˆ_xE"Yaw,J;X _srm,/~黟ސqQG 'm_[;Ը}?]5h?X-`|15oz" k cǯ d;uiBX)Hn %Y|?ԓxO8g#ЏJ)3i{6"H=yr"2ޝBDl\"*dbxpѱ܄t"#BxK{_m<*`+Dщ{8$ȱm7"]Ơ%wv +x }y=ہO5 @ID:pKFD^1+^4^`] lc R1::rKnc@w u%G ԕXX6 -.2K[*D,v g>NdDz%2^!%X G'K@Jk2FIcX0<նo`_HՁGq"Z5,+ցl;8; O?o+14t! KYx4^^͈aAA<' τ7'qsLQPHaiHyP-`1t!Lu@xa#OHĿy aUs+ޓ@NĴ^UDZMܷ( Eܷ1 v} n8_k񶼬X4ƢrbӘHdDxv cŻ6WV0@=-q=RHlBk<,zב$5!F!8賎AF#Hv@>u$I>uK u$IU_IiP#Iڅ0֬ބpP-h12Y0t )`f_B8c8rό=HgR◩M `'b t0MMbY-`BupW2"#%2Y0z q3 Sd LyM7RLglc7.oxLQyQ0)&EoO2w@̌Gypc$e"#8'Wi\-.M9r"jMZ{eu|{#0?RZ&ĥpc()˪7>Q<̀$B,'@>0E7 ,hV9@V,v#R֓RWR#qCڄ} L!Et˂DjB˂D\vW>E; lʒgoʒQ>m!v-KUHB&̳.˘pDyf G@"EH«ϳ/ I 4RdځT}0 @#BiL:ADL 4 )^΂ ٷl9墵GY@b6H]+\ٲG=yDy uTz)(' J`8 $^*)f1Wg^J/L x̅kvO H ,䱁ALv9840Hό,铈틸 YBsQ@!B?eG(Wka2<{W ^gʒR I԰CB*F8PN2Clv)\5HoEp8D@(l 6!¥r:•;ȿHDBPf A)Bw! 'Q@"BH98!-B8!@$H.$i«Y8Y5Iʓ#K .LZ 4%r$nO"CJƃ.xu'Rx%K@kAf :@5PIs@0O^+& HD&i &"IBb^h`0w,㵍Yi L4Rm\y=7'0a2ȁp$VE T\yː* YAwPN>rȒ'o̓y3ovriƇ}@5PI׳:X. q H| \ʥO7"uH'%!4IK@"_i @2 R쏏?S6IUHQD4 멣*Kk 8"iÌD XxKe@$mB8 )n | <k* WQ,#©cIcIƣaν<o]]4K* 'IXf/kc V!:w}Y3f>6)51I NBtuӑN_|ވ倜)dgzG8fPjB O jf G5y?m{Y,N$-"΋$N9 |L#&Ċ?M`O *iJB ?st2ïOD3 $r@l1`ɓc_oE^uU0IB@몠z  *i\WAnSqcpTO"z #MV6nV0I`x`puci |$t<@V(f!A%@GPI8$pn`""6gb!;V0I]HlV0I՘OnWPIkA T$*/eU8 G+wl N V,+x]碵)*Fc@qHjB8A$McD.c@>*DRhHڄ7Vm(t^#T Z%ID:L"hDRB A^I*B*WyqJN:#⼁"DrU%Eډ9|dSY =jkeM %UpIq $y_A" "ՑUIx 2)],lRL! 巊R咉'$=Gť9 ȤU;I jTn .PT*Lmtu6ޘb#EnHf+&h `e@Kj4 ,ҕ&/(g⁛$ Q'u r j.)hLJ$!X, EPtdsBȮ*4jlD"§J*hVF &i3q0LR $s0I]@@$Łǽqy@pH_"@Gp1X /Xo"v.܁4̒AAleD\X4jc4:P6F# rsMGn\do;b7xYĢYx[c"o`2EJ{l'.$VشTk 0Kd oNB DOHg/xڹ%\ў\RI SH E?%HJIXY4^ނZy%[Ĥ1m)ij+ ZHVIUH嗺B!j ̓U-D"aЮV- @ȑ)eSzʋs0Wޫv& 8281Ji 8m})UtQS6fx>ELn35@TX%@Y-ˡ_\RyYY@&!6pI5? e $䴘ZDM"\Ȗ7\ bFu0*E8o}aTٕ_v͏3Mf' <{x|'?LSCb2llh Q>uWfZ٫篧B )c×8PiCGe }Ib2ddҲ'? mLϩاɔ$52 A>((Z:N!`ҋ*ҋ3'V酠bQ+(gYN[jd'eVj^e^,I"Oً'V<^^mV>)֕[{JL~RJoVoE^?+o"FoF~kiIkOxaxƤZ>-d:b%ցM*2ivo4."3z!M&MQ8UހMZF.kIӘ5y7Yۤ r:k<?6Ao%ZK-zku?N$=f魘ޮ9i|v}Z_5>;K֜ &WkfICrsכ{' $ēfckHeokIs5P{7b{ۚ1{ނ>kSVI{} 1 pQD,\ta"` .ԀpM$VD$2LEu6Jaj &"=b$.a2'.2K1IS]<[\e"21)ڌ ҘfLoL%t&2;&cj=.?a r  (D8)P_3=L4Q)r1`ZKc|Dbd\Lk" fa..6 32233DMLͅL &r&;t:s Mp"{҈DXtƉT9⣋BpD\(Mr"ciR.钙MM4YN{˄IMԅM]R'"&bVuuWuىS֥j'r&y벸. ^u)߉Se]YŇ'&bBǦljɮT\6MfWm6ag6}hLU^0gD)bowpwDɘҹ`DT݄]}"n".b.(?7az?5O }Sٟ?Jofnn<01'08 U)2L- &­$&vfIk[dl4jcban10{q"ؕ۞LQ>-V܆ŜZ&f.Oq<-jffucv8n:3117Y w}0F2$Vr%h8ՓAM,Rn=5r ͲO-ܕˌkbf&an$fcnH61-3c37?MLݞon73{z̹ 9ՙ=/ig{S>3ss?3@tA#X[NBm͊gf֐ȧäPQyYN.m3'֚OM7tOX]9>KO'ՇĆխZ'vf궰Xu Zu+ۉMs'ƺfnF3`3 vSavk}\gFfl~nkgv艍YM[V;_9hOL͈ͺMܬ^|bA)w+ݹ[?=Tݍݜ '&ff'nEo^f~Pt Y)ⳃDZP$/7]q䊾o^]1a>@!A>̬yTW*$pU$&%H$$R Dtix۵b'+1CKB*Cڅ0CBj蠐>rToza N@A!U!.kbt0H<;$@:/V/(t@T"B8mFڅpV %sxIM(^DpILA%$5\Fu=vHDD@ A#@Z^숸UDT: a GΔ<ҺUB&o FXK;tJA#!E5!䓱vH]..+Y=|qhS2V%+i=a+":{trGEi 0W4r.s'}=b9`&g9qY}rWS&8dH (WќݱͿާ~B9Q^A=kL`42 43 YIOWҦD'R4~qnUmW\Yq@x`zc,A ]YEfV2J+yJ疝al*\ L2d*f+ę=̬لY{>Xk ?ue\_¸"_\kץ=8@7Ҵœ=^Qī,dx9Za< ˇ`O>׊zaٛvsrY XY>nAmV@HW*9ĥ>{S)W`V@ { \76^2!!bx"(9vw~ssSmsN]~tZm%yD'֎d;pZް66hvf@v&j;3g΍V 2s3V#k6t&ydm3V۸n皛@ng濹 BnD,׻6p mfP717۩k@r 'ܦHm|" <sϯ ړWYA;> CyB; 0amZV^!èZ**&C5 <20n5LO[BBCH;&K|@i* VYDvi '+b0˪aqTXӲv*iX(6xھf }`-" j{nveM2f ®ڤJ_B@Nm,R YL!< vTD,>j02gWۮj/ՈѩTGϗ#kZ_h $M*Y5-,}kU5 YBײ*ģ7r1I*?nU@X#>VawVYTlke5#U!ⱡoV ad[~Wan` /GE@&mmZO C=h[fv5eitCy<ͻjZ'UUzF,dd[WLPam,#a`1kqC=Eq]R W-/U˪m]%%WM0vdpWjՅ!?2a(aA1],un<ʡ^[%x8b^G l *lV wbVMX@Rt`%Wyd`Cc1ׁp,f}{CbɷMū@U)=JT+"5QcWi?ŬoWivlM&VWPAk~WRWOC{J}@ֈVl`Unfiءݑ< {8ZflhY DQH(P?4*1O+㩲&VG +iZl΄lAN"nŢeӐzVs iZZQ\v#ЩԱKܳ HJS;Q(󫃪IRd'V+aZ{_]X/'B؍QgX[TruQg̀uMMhMZ Wީ-Wo݀P=q<!YUųyMW&@KfBuaI6 BO݅%I%['j-V|\5u@G OLrEYO5^+VL vzfSFtaDv}UgheW(I,lBg٧ oKSW+Uֳd,fdmׁj˘z<t+yϯ&zyjc5#lR?4c1~|h<–lNz^3{> [vzt.d5e[6lC{7$$7pjQWx=M,;Ɂ|6G&ّYPvC]Wc; ZW|Up5ԬkZ]@5aR_>G~> I ]e SP@tfiTTyjaO CCA3O." KHJF@j( Fҩ:y&ծͭKY /XP $ ':tjyniAѹUAҔ—!uҦ䒯%qUS,)({Ie՞UiaH- :Tj^T¤'սj˞T 0Uj^JbMz զ-B6Xݴ4}epiɥD'[H`3kܶI&~}Kgz\+vSR!RK:PVx,wἁ8ًRPK/2~L*@tr%"HPQAH5S@S*F!Lm'@ ".jkdY(ɋjSS1*J16yUrMN>BeUiCFS?2rԡ D'J\R2UYՖ]*Ō[™PoQ⚯d>tH"<%Hy{ɁFM2O.@DD.gsJ"ZbLwE&8"ӥ/)WvʥBuiI0g_xdh^VѲ t`Ki @\(/=OIܫ euY%M '{)jlH @bH`p ȥ_#U#{l7RjLWGI ¹BJјSM̒B]T2Bas)7ZhR9F)@/1\wRG: Қ QZR:W).SךMIq)$7!WTJq@UOhTDrDZDD.Ζ;oJ<(r+W;[ G˛C =H.tJ/4;x*ʷzRP>NR<{y,*} r2Œʱa>J|A(MQ@dL@6P9@ x@ KJJwIWmD<x\w4W`2`V& 4re_*BD3_*FzX=:O}]> /+d OK@v#:)',k@ɾչ- ״\]rao=v5s˔$z9[OoX,˽JeMSy\i37YPNE7@t*:% 4~:gmZüd t @;?2 D؄xNC@:"UX_N TN[ sK#yB%F=pA ؅=z; "AP ѡPȃчD0ǑuQȌlR$BWC$r!ȢfR#SGJl(AdHf0r~ UPLGX̦(&.PDhҩ HI+P^7E~kVp(cNo@=dLBG]4  .na!;~bpqbF˺OB: PRE)}ς꼌E(+?- c-tȇ^m P$(-y.^9%zr!Eg9_.u4P/fw"u;t<9UW/N{鏥?_ i:f 3yA#U㠑`ȣז!&C<.^"pioHLcirJ@d4I'ŗb]- ţK˓P2,J'@JSk55ZY5=9zh;kڪレ_i(Npt7|lԽ)CZʿ #v>L%dDOk}EߢHK 躤%{QH*.&G/].' E\R%Ѫ%_!@9*#?N.)(+4ۨ齨K0)` hh:iMBD汧G^,Yf=;7dy[O:h]*|z^J pY;YaYY2w}ufufPIa׶gRPIᵴT *tcNz ؤ8 ptec QIcلtuy"5忼1K4+ONBN6e=("a'{JCh/{h}[[|:u`ėYO9 30vxK~60+M3f>&a$Al]ƥS\5rsKB 2Hof =sJ4MszWNQoC=Z'=WRJ(cB-JԩrnIOInIk 4i.p؄jD>{en. dCQ}̡#UIq&2 &{|dҞ6Xd&VIDXp|w_,o[y`vX!Ƀx#<')!166|M c:+|^^gAIy$[ xxR`EȓBe+fzIIM{i_{Wq[O Ɵ5Ϣs/KIy{W[[ѾϊA& Ϟo{FXXxjL9B&#^-(ަ,vkIkͳ:t=@.!#NG'ҤUڙieS^-Xަ5iv/o Ykyy۳fMuxyg=~6@kvIˡ%z뢷7z wIZ#7[zC7mN;SA6UoeZKzg5z7zxxlM=ijoloޞ4x?{M|Jh7YۺO߭E'֎-y LL \\;La"`B.`.1xjO*C5j"+eSN52+r,Ԛn0wMLL&d&\fO3HɨԚ˱M$۞n.p. 73!:ڙ x MD:}.r. 8 |* D)bB1DL*Cq"h.i*.$94AJӬZcCa8Mt<'R&꒡OUQNUMtՅY'&".b7k.[;5[5]ڝ`N. <v!b*69c<6UdMvei3z < EDpDMz"mm.2.=~(vL]@E]|"V3wsEw􉼺ILDME]X~">o.b?71ZSM]PH-[[KLXܠabyp+pKYS}aaN33 7ܘrq{L @$|DjH&%fk'{L ]|a:e&4Oݘ!渱L zǍ~&f@fB;D^7hHf&KVM;'|2Wq\ &&Und512Cc[jĚkbfVan'cnK6.3{3@ؤۭ%۶Mݞo733973:ssϻ+晳yMm&Vf薂n;ք§á >]Fѭ͎-gf It+JtKˉYc}bl8ݪ1N7su7`wv7rwwwxw?|ͷޜC*Y6e)(8U. ɲ]ٱG^_ :\RԃTu>!م0I`S |}@"Ex_U#A"@ WD"$̂CH1o NGWLZչA"ELtiz E_3) Bڄ;W,鎝v OuX= R䛫v ;&\$Eh v! "x&#0ISDJ9 xF٘o6H6m9vH٤WMU|4R‹ M-yBQVwHMa!M,.!XUXbW|t P(A'O4pM)EH+XH8 K^"u!:*D㊎EH+XC&d¹Irc24)$ )RM+hUH睮}SfeAi_6!kobW'c #I%WHv~P@ڵ~H$b߾ң X;H291ޞۃC?f xG~\( D}nm9F6bJ;c-c Kف(4弍(C#FUC+P۫Yx]^`<a3C1(v 0eRXꌬ}#Eѹ$ ;Jm D:I$ȕ,}:I)TMkd5oԵh 5(Dî&iBKYM#NKpP!}[~&} 5*O [.gf7B@ @VeJҵPbҨ\-DU]$\;ꢐ&/r ˼3RC`3PC{8Jє*e遨0SXdiy U#wMR%dzT D&YyLwHP1QKRk@* C9-`֧eU.c GM VgF n U^\hb] d3֜ t Bȵk Lxe}ױv.kiI .IZ~  EA0%X$GH4 7u8@1!!\rO$-RM$f@f ;A6'rg|bĬwV爵I(qbÍjuٰ1u@rj`o17U[b]4@rUoC:q 99r #ђɩH@ fab@ᖂXҁzŤd'l/% b{`jГ$&e2iIHc\MθC>I7y,ɗ{$KDaGtO{ ED+[P)Be@j~ M (DbG W$)(vrO;ɝ,JD@cEG!_pn $ñv@5Ka3vR:$n@T;2,ĉs d@׶NSm1&mqsh ;+ri m2ub~6ڬH7}Q)<n dqͳ1Լ26 ~ `͇|YN`Lr$IāA;(6e?&"hrL!*Bɚ LtF_V@fD۱1YqЖmG-%㊶uE- Q=xMѨ:Vt̃td@0צ@2hcc &j4b =FvAI>X9FcVt3>dIfd WKW@Z^BU DY2PFt׬zPT]3UXT[ P2Q@rybHsx} uE OeC=t"Ulĥz*?6Tԡ6Ɂ"H" r*R{2oRM՘,sVuWu1Si@v5o dӒP%^WX6T/G։ *IW-Yn\\ެIeIHݎKEzljBm*"U3x,JHp='D"Y?I59۪:ZH2Qۋj,@=h=;"e2'..]VH!L-v=j2ij@%MtS[ѱ"X[mƫeGtGlcżzE:ل~Xs{ٗ{JfJ2竿wvb}z`z '+>uc|g$c RygkvzO/[{bȓ ABUEFLd:J;ՌԣhFlX&=M5-DQu8bMG=Gzz bٺ{z&su>q+VlV[XIYeXG׽,}xl@(Gcmz/FX 6?z}m"RQz:J yituT5C}{Po_GMnhI.Ž*Q].; {{4#v԰r2QbZX~=뢾ޮLFߛ';` 3nE3zzI[l d)B{{=SG5BՋޮevԶC?Tj $TQկX6vYeLBg‡ߎvWpGwũ'P3{{̞ۤ} ˽]ro~D-]⃟6/QRwtFmrha5ೱ;ӳGQQTyp3<{B;=z;8PԯsŁf.u」KIxt`w}hH6.hWG/d>*-tR\POxBh\d zKQ!ihJT*7FM kC -pk:HT-R*5;'݇FE̓A{#b& n]>JPtQJ3XRiF *^SQ|ޕ3WӝS]TJKVl[P#7i}Pǣ޵>:Z98k̥fHG#;ǐtE:ߥXBMBhV0hЗuN:9J 3z\`!E,\<0S.k*KU!Q-":It@|P鐍hB*הLU.)\ӡt@"CBb2!~\!bt:$?PbC#d*<]/mPͧĉ|@r!U+<2zn@8+ݘ.d떢; rOCá%:$tv!1^:x8ڤvgP)A}b ! H*h\QE*1ԓ5Ss*^)8QCJ*zX[) q2YtJiзWuH`VPZ 굝x`(^{SE˨4%-5 9(Ų)j!K> RG}:6!L!8G =Nkiuܔs[FɷY=*;J9C^/1yPq(Aס'H>N[IuhJrw-EI -uDY+JZ’zח(!4/QCR_`%3-J L˦/QtCS9!\إ~IvH+T?uTkAb44*2,~cE؍з(1P3V.q^IIa[PɩC!|GC J 6>%*^v(KTP՗١ ꚱ[oQEM^%١}gpICgYߢhh:Ea؇ѷ(>! -Q EL;D(S[oQ0C%[ߢj6mT{>|%!oQkD. ϗVlZ9{v+!6Fv$BvȯgYI/نD!dJ(Cb>u;d襞LزZ >o|~=Dv `0Bv"Q_j|u(Kӗp[@ ~x%_KrR)qag d )KzZr/=%aɠoQ9JqBMQKLDf%$Ђb{IԬ>}=<9-J/>v%R)vH)Èǡ\wRUVi38J<6).ZS]ôEZ?ׅ*]y ER%u3C^wH9鱍Y7t%=?SO~{}2\J⽗%u%aCIsTHtvx葳㸇/;b̕l'y#IS3ܒk'[KB~ǦJ$;\#7K׿. UFM]+,:N%҉ 6~]/[r4bAUHltx| :|R#R:<ǘz̡×L&4|.%"e@߈-%:|Ө/UeQ7@6>nLOtr调3:,xrՈMo~yÛzr*<:ݩ/K***&#ÒU~UB 3:`3ɮJo_VH۫ghuK~FYpeR[XQ3 \m-Ҫ ?켰ֳy*W0xQ_aەMŰ.OΝ&;Ndt.êiiNs0pĉ2ְ-!eW'6rM_sU%qwkC\Er]>spSPK/:2UN~ugWi+΋iww*<'~~Y읰(ˆ/ Yx;ۖ>Su-Qc-o< a]:uM@5}EoU֠h:"EkbqYTy/Mz:4%lGsI#40\jXT8rO0rdNy͹ ,E4<м;&x֦Yq 2RnNӔ8.N4m==]ZۗhTI$KZgG4Nc$T~Ǧ^˳48{7.c7e n걦nڬH:hzt +W0<`!Y hG/<dA7gwr=jڢsZnrG^.娝NG_)vRr=Ӵ7,yvH23P糐0#?i4BhFDžаNScpItO蝍HodpIf*+iy,i¼ob.f.3}Ւ2|D~K{J/\{מe.x }Iؑ&qK#kt1*5zhnfEK%cmtR"[{"?7C;zUX  pȵ6ha`xtĕro9:Yӳ|K#4Ns4]hސӹ<чf=H&^ڣ3hK+3{30gHBE=өV٣oc:ޣ<}=jQ|Q)mKZ]BdBv/> ]5 K8pOD&j54mݴ\#n0pKHkQGCRe-J|j(8Z%[@/@^/!]2~iDPAIqxQbr L\3i `V.鱲ҮvRHR(`?){2N>)@ϳb3ԲTĩ|D*TEG3JH+ONYК4g-mrqf_2,{؈n6j4*pd,+!::/dpKLk` iҥXۖV^@JNK3uN bזSS(HYS-5 m+%-)Eniz"o+͍7Z4x:3F…?/?z0K8,Ғ0 F8JM:Q17:b?&}. gyMv~c;<{|'?TsOG .AjL^,{_Y0A㎅&_< NBS-p{p 'DbOHI&6|It2>'c}NiX)g!bPLOʩebN96s*oB%贡SN?:C04&#QY:Z-\J*K3|sRie^*:)'S/KU/nZNm ׋v׋'"b/4#{ 8zR@2l/rnp/?ϭB݋ؽ}R Z'%VV-6k%vHIcó#&-fޮ-k IxxˋwX7xͳEx B^"6~GҤɚ1{[M[&^mc2k?5ocVI;ܳefw֞-|筀-h t}ֺmVJkLoICzHهj g߬No덾 ]p"`9t!ĉX *NDM'&B.&邓We9r\;u#0GS}c9l˒.ə,)9^ۻ2ab;cw Tge%˚I2K[f$E4&)qf$?Y4IfY$=ILiBbIO@r5ɲfy$ebl=MY@qnRrI7H|p>!RrI8"'䤭՗Y9)8g$t>NY@;d'%,DY; ',4I@Μϳ(zNI= |ϲYz@>Ig)$Oz4Y՟T+@2ـ $lp` z!3d d"Dr80Hl2ƑF6Ȟ#[dwd MFI6+904I'r`UJh6.%dØl*|giؾ&[SN6Ɇ;ɓ'Ydd#Q,ʮF{DH7)Y+elєmT:blOu`am]Vʶ[ٚ+Y|e0vK~cْ,ۖX%lv`ֲ[lKnol, ]rK^v.c^K{ɗ/e d%%a-<6L!D1-f3dؘM9d6<0LF٬2Zf싙3gV3[؆&k> J)&lz`hz`ך-]l_5l=M6٪6f[du,xMov68Y gPM1[!g#Kdysw>N6Jniu6D;mq'm5}x6Vlg-lѳu:;gl䞼e|MO~vHgME,ޤdHks~t\I i3]MjHzU!-l6IZ"lNՁn!N|lD.)IԐzÒ"+!5ՈRC/7 7RCm[JBhN)uډ)RGZh:RIJEH=&yHi3AIH=VNt.dݿjAI&+rE69MgB4 B$A{N߅h2'C$A IK'@ȖɈNRK:uKI wП)&i>ZI5i1}Yvb7_mUQI:tl~!@)'I\mQ[ G]#o)RI~=Qʪ!^tF.ImNtb_Z8E}V GOelm'DSm E*IՈ]$IBm>>=V-\J%i5XJI[O]4/^ekk"$#sȮ1J)aJ-i*WF#E5WkvU)&Iֹ6־HﰵdoMB։)QQtzu/Wz1zբҮͮv[Ym3D'H ZE/z%v7,$J-XPE$nTymSh@DE#+_- 3WH3@݋Do0 "юw& EH@zD@HH7 pӏDB"(G" =ZE Hz@zdD'a#( p=Gc= "QԨK@oH R6"G6>$!e4HX"ѬH䁌BɳHfN]$#aYh )Բ%hR 'Αhr '@z&@$ |*5Y8*HXHtϳ"8*t G%Y(J-44dSHtZ duv Yz$:g@FnY@ze!-> :V/Dk*@86YiH喵pljR$פ"ѺMVDkd@z-ܲ"Ѻ^냑h -k-HW5H FܲX-J*h5H cTzVD@pc#YvnY@&p)3\r-{sg{ZRķ>l=TEplb3 ܟEPhgx| f0f{>R)O :3H9+\{^ Rk}#Y9*c 94{ #=ddOׁSz :~ \[5H{_}PRj+"@ %"Sg[Iy;DPl+M")lJ$ %[g[AD2qX=<ۺ %OmR$ '϶$ HVVE,*. -D)ڲHNmZ$ G'[){[p'pE'_&0g_dW51Ց@ ,#ѕ@q}A's\_ɲs E'_LF2QkbÓ-z[ Ht1zHtM3\_ :qeu9w$\ȌcB/?d#@hZKe@(2HvL?[Ȅi:Bw/DRiZ ")'no0Ak2,j-6۶3桾{H wD2Ҍwb;^pL3lʝ}'I!$XIݹZes2cP"ѽY@ f+d ׷mWZ s BcBod褻WH[՝@fq}"FH[ I 4͗M [֍fP 3渾H7FSl-@F UȌ)PᕣGpt}͑4ёL'nYY(õ@ e;d8mRi4ΝM )2#A`B pNߥKjR(5͇HTBKt*"Q- 2\SĈrlKdhoB@hV!Lx$f.`f.d<Upd2aHvջ ΝM(B pM$sgտ0b:fpU&1DpL2q! ;HI&v "*"Ue@ e&ʹIJES@*e^*\)RV$d TTpM+sg ƀ] ],k5݀E].B3{ReD%r]:/pE'W2awA@ \ `2CL1 sgR2b뒌@(<#ڻDd$*# d(⺪e$-˿rf$* d:TnyمAPxrHvڻPi$ۉ[(<(j$+'WBS{i^5c#Q]Y !5\8Q)o$;ή cY(қ1c!GR9&2ӻ>3ӻ3yEG@804u$-O3*@ f)nٕp`2HT"HHoR㑬;by]%FМ8vv LM]7>iUȈI1u=| >~$d$5@$P7߁H*'Sxɜ"Y8>snp'sBs{7BٳVb@fq h#g32Rk@fqMgCId~& JyD2|Z"8>K$#gfdWgP|RvٛN* Rk%R\D̔⚍J#EplF"Y(E2ޭplN@8:5ۻT$;ݩ G'3Bs{7ɳpE&]@ fٌŀT NA/`+hDyE2rT2/6 ztydsl<7: ?\R)5H d\<̔嚷 Οͣ01Pk~g"\^B=#QG /-d$&޽2#)'nY=7Lu'F2ܲF^@*&Y)ܲb@fLt݊M5 ɝg#<- Nn my#Q)/ S\Dm톁TLDݶ86R0uHvJj9[6p0qg R6@f nW &n{ɲqjZlY1uH&ܻ7#^=Bk9)[Gv@fLqݖH=5R(؛|$fnHaɌpXS%0"Բ $J`;p#&" &SUt SI N#mwܲ{,H RqZTLq')9mH-NRs$5Ȍ!bzӌV"܄IM3ʟ\r')7MHɋ')7Q[喷sIMH,wrӎR/עIAZ'wnK5)[oj+IiZo_?]/7amaOɴ^ky1Mïe&doOݿK|{o˺چpuiHlگÿ\MΟW/79C{O]e2Q\ˎS-i~8=/E4.'wn:p-&TemiO_ç<kgw}#|jn[^hpy{pv&o}tz~~z?~lzKӵ͉{&:<|_Z7"}SVOϗlMyWx;/w~e+1m 4*.8}) ٿƺwO?MU뱢ozGJ~ݼvUM7> stream x[Ɏ/X`se XAS͞)8lEeً ØdrbaM.//˷^02w/G%/[Ӳ˛ ]6BK7O7WMô6;;\+U岫:aMWWBvuJ=5Lsy;3dյtcZDkEut%'h>'$jWN{r:ŝ$05dTd;̲jXHI/:LNf;0ąmu$ۺLV`QwZ;& WuשjWՈi.g 3LW8WyeԯǏW4k<_ܴU듛n4N{][x(׉յQ+ieX6T/]1YKAPkpcwVh,ZpA>xs{Q-3M͍ ~Bz,kK>7y Z(PRL{HUP8ymzou;{J'~bfZ0iDQgLaS-SZSHWib-e)o? g/7?\x.7d[]D^H$rR$TB-7+^KkUah;񧪾B9c/rx߂](UN赊WF0lF`K4wXhLo NVo2!oL͌ fZ0OCWگ*\cHTD#9[ z T:E&X69`HJPqx/eHݥu/[U%C,d{(?| ( >ODnޒ- |10RQ)Jv —s/; 1jkc*Ma,rcSez룉]&dTO]C&fwI̸F#J' qL_3y)zVK٦P9C΋@ %Ӓb"CZ -pg?V?g3{5(]df7y0MGyc'gLiaIEBQBW>-Qij-.VjeȯmT˻f}8NSd25KC䞣N ʅ_ES&.J?#:֙<;K 5틾AFx&NqqL<@"%ә=jPe9yQ<']Yƕj+ n*H;n@0EPNDavmg@32)+#R CX~=:ytypy>.Dk7_ߧp Oq 17&eue%B^#P˜,8ƶP#MM :˔ #kk'L1%Ҿ!@EPR)S$R%_d͡4Zp#'nd39'lo!g 4漆(9H^SQU1S-j#`q[ol9JW 8e'%B˜5E Pms"asGO 1:$XjYQ W<(% C)xE^8yM 7;^9u^y9 t'U{~L3b*t@GXع9cȝ}\e!byL햁4C i(u8=F>LpStoR~1zе+ !]du1ijUKD%[ZI5^MEl]:5X^>!KanD\R]2BVs;͖1U'ؔdž?91b>bГG'GB24}Gu6ғLnu<θu*S B2BhK>u+[_&^Δ֠&/Mt [/clBu--U}' J6j>h?fi)"V/.žiwp)Z{RQ%1|8G5a<;2mۈ 0ƯzħoUP\zǟaA8}644oH^/}Pe# Φ(z P֘Z+ EAnxQ1jI.Xuw Q02+kAa*ֺTd܇o<^kDĉlvsSqc_6%T,fR\C;6* /.`,a8-|lo ImJ܀D#(r`<.V $IXyX3wVEx(i=Hz$S=0n zgconv:_Rz{,}*4Ec2!ZaP2N&?7cՖka~6(qWŋnvT.*k{D`ԋu4֍K59LZY쿅5J 3<32й|=,4B7䙰;1b16`ܬ4߁srvň3nv Ň^;ZL4NjI2AӰQXe ކ0o"/"2UeB~/Ovendstream endobj 243 0 obj << /Filter /FlateDecode /Length 4138 >> stream x[K%>,$; n:q6`@r״gvdH}_gmϪ]U鲩ecEsywso/ß/7׷~Բ6^iզ׻48ԁu}sQNl^Sm~_q]7Z iLۯͪۅ7OA]VJWoLqk0ǽFV]qv!Zy^~\?ޛW twnϯ/I4녖TTn݅sxș|g]-[4rv)*eɶ[{ѱ<@s =E3O4 LWJosQG%#Di?6άuL&懩΃]6C8Q'ѝR hTazRZF^GzU_2‚Et{*~No_IfdlAJa$7 ki[q*hbv5nlE=>/(cȊQVJl ڿ!KeiJ8y] Q..kuaCÛR42(W]t ]6ٶtQI7WF1;έs̉ '~k_kRICg %,K2A[ˋ@N0zvyHz4z(hGq uIi F-lߒy.ϊVqHKwzec}8 > X6E-_BfB`<"KS=tB? :%֖ sfnde"PfG@G$(N×3eHP  *{ tē8(Ae#KSҏ,a~ ЁlUNvNVj=em4α9݃Sl|E%98vA=E𞕴,>4Q ( (K(jpI5\zEE&zqJo)AzPW e!I(BfN(u<؂9jE:4{Pc/뢂[v{-7=҂*+ߟl<%>sqw.1IR %}HAJoܥ&.WHMBJulC'e:Va&lnV%TcH-]6O Y͏`zq|RҮJ.04|DId'V.T);,J*q1w'iCs"OT< -[Y9{E"@K&5JQ^CtrJ6ftH $z/!yu2{I+-֪5_lLsWFrhV:|~k-TY֎ &\YiʳR]81?$MF"ago1q?"6J}$y2UQ,a;XDu`(|vI.W@)6zڿND4r+m 6=K~4*L!ESHP"0K*󀣞q$ *r URɄw/i%yX-dL:;$9vEWN1LQwi;GZ<Q֕p+*w!ۤ-SPNL'lfȇzd./*^jJB$7G|amef_ć~ƇpKXZd)D>[.F~6+nIxf&*= ;s.)ᣳ A%u<\Pn2zQi Oou `rt/`Ab31YR[}M;aU yi\^T0ԫ^g{oH2t0\(u.EM0Β} n5 u.z<+Gep&W5 tQ֡(]LIX(Y&p%AyEEրD$x/~}coO mĈq.0C@7d\EsdHՆ2 xźY`ÛAH9adM Uy+LnF'ʣ 4Q~p,s^Ihۚ,ȬWG?TmKnmӣ`=>X#akAyfnlk=;٭CX `'Buբ:gLviةgds~t0E:QL>q׀]Ќ=C˚n&/uf^"Ѫz鋱پ8縉W>Ü1+wɸ wKZ 2ܺ60d?\hn1R!oNp癓^J!wnkJ 1?0ŠEFMj'7xDywn3 T'>BQN"IU43>mExf{lۇ>DF8Oyj޼!K>E3=Y"\*w}ڍ9W&Dl,":γ`y=w^g!Mͥ8?Q6aH)Ƕ:$754xIzSpUVv|.e*4 w;ze ct]כ1=G.19Ϧa)}o-$d հ&5$Ϣk9 Ձt[uNQPb`M.ctS5fYi:eb( XɵvdYՅN~a,[>mqm /iCNْ^kmdz?T8]]Dlן0V?s5< FD!1.7d'C63vA\qZabu5!ϋ&endstream endobj 244 0 obj << /Filter /FlateDecode /Length 3332 >> stream x[ݏܶ?OyX*CS EP7}8A9ۮv΁Ѯxϩ[|5oo`sjvFfofßU;t9g =˛ZF@Ua*1lg`D^30zFD!<lF)橮ȳ-UERйz\$ֽ)"_ DשeUcGEe YoH.(RRo:OD)#7}_a/.vP!i!ذhҟ/~Q'"Z?\~MLKSx1+UjΔEٌJOZY1{d ]EE+6*`v3߽Њ̉`Y5_RߢZF0&T iUn"yYvHDfH\ʒD^7gt_8,GJv yrg6mG`&ߢiy5$DJIA8}StShOX'^ŰE+؋Gf'/$$qw,}@#MF9mDyܱ|w#H.)kweFg}ɋ4S?TҐt&{$uo93 mM}YZѝ(/lFc=: ՄiqirXMcE,m}ӛM[ف KBr/hLšt2K3GO%eHcHZ&4?)̽"A8 lIU/ ^z硥|ovU `<xXHpK{bg]uSBVP6gs""$i.M%c%`&;A|TQGmiZIR!6; G mHENjb ~(ZDP8P@LK±dd! GfX0m_]ς]]*#IzA M^5}Fڵ։ \H> Le\ ,{DH-^"8LK Il˱X:?7mxZrKf cTVW hV KOz`+f zcTJ1^XOJhqjnSCjO >oa?ɟeo\5'>1=v&vor#2 ~]k]~5Dm|HOA,لe]:aOrQ<>GYieٶtlhcoQu ˮ\أvsq7(2`J.e44qM:&1vȮ\|N\x&7EpI?-ʑhúnsx¤J_ )|WH.== fT[fxK-;y!R!n5} V8ZF4* ̓Tx&g)dle~eȟ 'YX`)XbhRMIm!ѩ+TgЉ$s)RG)f_4C RɈ~659@P*ѷXHtT#5nPr}6>~Aa@½BB356XA$=G2e|C;{qL6>,Itü"&^)&//=h1 SgzȘbd-[5/CG_;ԴR8vUT68\\xh7ڢ›ǝKp==lsKeUa,f¼$Y'rz H$4 M^"/ӛfݻe2! RΗn1}rPn=fj jdIyQr. !*Z:a{=uTϗjTNX ig<7c0~n\+Д,N HJp+v9.HÁV!r?o56 3pZ_Mѩv fnkM n\xj( ФnjIN`%c%Sv;x4'~7ѡ"Z*yEpehYgS.E%{&k&+H/zv xX`KHW-w7ٕ%k⮻]r5v _`6b{nћ>՟f|hVR0}0Oɫm#')LUT qi>^@:*>>m+8 EΣ }U؇ACתwD%t\mLJ9Bs7QF%I h Wźþi]w(ں/`NN)`k)&\5ܸ H6_Iۆ rtajՄ;\M7]ng;k$١eOdR`Ž3p27dy^;˔. <)=voPyS`-{ګa^ڔC #吻 ߱oCO"X5L)DQ#B=VOIuXgexΓԣ!_YE"zU5M^jʚû h;p@G&yyp)^hq|)B!\K0Qr"ʸOkȍm\y7U}].>`ש{H.Pݦ>mJ`12\zkTy& b- hCj&O[cU%'YW?8Q~>1u.`LE"`PO-+*aX~E*̟PH4G|r/,b d~r$ 8!Eȿʅ)P*.4UDendstream endobj 245 0 obj << /Filter /FlateDecode /Length 13067 >> stream x}[d7r{?$159c<.`رX?Hz.jMUuk7dF'YL2Ljȿ;mvzs+G'ջӿݗZܥO/⯸Sv-^:x7|·^:NjtrMKMq_=M :Ǐev~{ſ-o q;msΝ|f|ӵ/mk|vW ?W% 9NRYW_]m_` ?pzx.FhCv!u>7YZ;5Mr@PϯLof?rvi<s a }wWp~ ;w|{sN/x{"lx }H@`R+_y~yHL@4ͺ޿:(5R,qmܮύ`sBC6[kͭws23}ͫ,pA9Pv?XB|m7vO-0=K'HTj_krq6 ޔNw:JX'ሜL9EP>5{ k {-L/m1||ѫ^pFl/m1B܁ѫ^p*l/m1bb;iK!'0V__ .˿Qo/+zv^7/TA>1-z5X.l%-WDNn+m9^P0(^vϰ;@tķSj;m?jGB_.r8V/_ܿ;=޿uw?No߼xxByxqhhEz/(Qr%d0"QK1yV%4<k%sROHJ}PXQ G r0 FJq@hR HDfCf!^`S#jFjIAui9Ђ RĖpq4R Pw>_a6Ĉ7lV`4nf -h7Bдvj0QWF PKĩgB"Zư-Z`ZJq(K,8"Kriญ8L#g0r4a!2Q |c`4jEKSc$g?DC8rK<APQz5鬇Iq@b#m Sh:%CaaiKo㹁[i.8y(|MYţ8m8iP%8[s4ND%Ÿ6x:vaKʒ7]Q@fyC&'VoG2 Hy XEbe.V_wP=GFw'q>*\| P HA@8& <-3/D1O@Hp$ | 'iࡘa &i&.uF8 T#i< H :>i`q&38{`OpǰecA >1 # A '.=pCÆMA#(Ҙ`ac=z%8 `A^^8 mda >XpOBop(X@KC7Pm8N~!Y޻Dl hd` 6 sPAKDaFL:kɑP$Go8h DBejC@D9W<ˠ;}) #1AeI G[E$Ń$0G[:$d(6 SsD^U !^(#(%#`,=ɞOmJ8"kRtAѰi.h;ZG/Y江麘DY'n6`aܶ²+[l,g=`p=ü# EhQKUr{ Uv}Q8P%YTҪTۢ*E*EaJ@b@,6jޖY͝h5j~Xh y)x`.&bvjr/fj,NH8;odqWyE۴V-n˸y]=rWwyq1__A'X=ڰ+b{cFVdWfiѠ.:ViVjE lV(n[!z b2ifm7 w,e4 W-=A<64h/"{d) h DY.u&oWN%pN6:G9\ :uak&|t+Bf'lk"RL·bΪQIG^̉LD(!@~tzY Sη'/$"́#$[$.d֫D/"JnDs[ n̤*sSuFدRE-j2Y$mpJ ZFoDUYnɐS#INT= ˋtH,쟩:M58l@u:Ac b2d<(zj{z '}055|麱B OVYt غPm5PgX7dt  D[L@gn&Q~-'|{wvuyu^?pWW~qWH`E V`a=Ċ` YMYYpghZ@:VlV[[ppgq!\Oi0xV.iD};@*O164O(EN'޷ ,$-9f)&7K3I.-xXP6(pVUH%N ErطM|;`Y7TOSg d@f^H'VQ"YI_cƛl,Zi ̰Z \@ʆQ DaF6CIX]m ĤNL)JAdPψn K4#Gx>bKVD֚Ue/b8OL#u4FCK-#bVUJ滒MC ̏]4 w` T 9`S\γM{&ԃ*#PSui1w{20@7HԀZM@(}IJ=d=AOj &hDn#IDj Wz:gk&~d6u W,qx%kž%360}_2 8i@wZldzE'qteŸ`yA }.!"ΊM̀sOKa+M=8{mbzVe7#8=':n - lUniPҷԗkYﵤ-zqrol5q6[Al.hm C׭oat,Ta7ůI udoS "=ѵtSpSub( Pޕ)(M &E1(nVڙT񏂬I؋B$%h\(o(Rc1qYlȾԠ}ERGPն)r.'1:ʔc$ a<Z 8S4 @(Ia LQ&` gP؈z3'0^ Y?j D߅|"@Š(9RG L>\ XvJT ؎e˖]=9Zx WV]yecxGGyWp$6VѲUDRlt{YUBw/W} WUU%-jkUmoU]U:^UWտZ!*9xVpZhGfj-j2鹘{`䮆b,/ɽݾ ,Nh8#;oeqg)yM[^-n 8C8cz >rWgzqWq_XAGX= {\dNVte`frE+t;_ Be Bn - +CW@\䖌*)+m#S 6};1?L-\LnВX)O$}jq̦fjLZ”eI´6 g~!rBl "jQňhA`PB4p;{w|2DyH@ԅEFc"+ 9E74j[Xp6 , DSKz`NuP6j6 Q V3|Ky@ja-jZ>VݎuJ۫jیzv`o;m`#à9f 1@l )fb vUcǼY "~cl4QKf2by ufgf(FmaCPE^ifb6]ؼ5-b6)m[-jޏPKlz`bKꈌTgŶCcgEf ;>_qb?_YAv qUqr-YHt{QGAc;7kbI=f^oꛛEnA<|  J0 hiD¶0ja-Ȇ"$QwqRfGQSo1:dZA@Q&3 QUZ^1ؙG53Cl tfAl }A¨idѶ0h&(maswWq&JɅ/l\(Hw (4 rf4duО߳=CS# >ӡP0yXT(4z#C푡(3P'=6T=6 ^ o (ȉc!N2F5 ՍmQOѡx2 XrJn*sGB(ls0u Eyӌʢ{IHmllhFbC1$6I0\6G>Z_E#)> <ⳄK,eFR|nb"#+H͉b(p\ ~{(Faڊ)I}0YNwg;9#+W1Z$-CLC;s .=-vWcDYx=-O9?pHaO!=18MP,nFb >"&_CWH&o$%{;5iDFxWBi^iyA\Ƒ{0cd9'k^|8$g jE4-žL**n66ZY6ڠ.6844y` )s{V=+[mOXٳQPY!kf6BK`YI5;*YhI|9)-b7JI Xbٴx:uJTo!,'t5ç^@,ʛ0Fe@n@H:b>?")5KBC [(yQY{xm@`5Ids FQz\Ek뵔u_T{T7iAL7Jhnè[&<:*@o~ΫbNC[BC>.LG(j-E0cyԩ^R5a2 GfmsRSzep(V?J.7Fm2(E7Ady9JMJڮG-$mrum`>kV'VϳbmMI޴lV7ۛ}aԞ<֖E0u3XRF 8=]PRw -=MnSd]]Td;9]Uî2䪎wO}ueG=|LaPS@(0'R NLfDT/HVu\&q:]QyzGޢjA9:%}e"^Ir~FtOf4T/sq4@( G( B#wLͦB%G:I[@kaһ5Զ|+X`E+nvLlRҝ䀏u/3~)Xa1_=|`۾hht,CP~T5䈲d~=9#~ck$ilwr9+`2 mΉD1X.I`@s0sw~NQla_nW5rⷤC5'^čKIhԐ3Q,gaOL1]2, EVn"h*T¹h.[45%~?3&a=^ODڜp^8 hZ0KДY2-K7n ֮CoW]7 X[ٌ@#Ux[1l2 I&ī6$xx:&'%rOGh9 RnXjEc2_Հn”_ ۲exψʸ##W6l5#yA5# 坌5fSTAS-Бj$##~]N|RMK@] HE/W`j=ZZA9[ԠP͉ߪ,;9N{NԑA09=rTKYٟ'GAdIQ6py &ש&rYӁ<3:7( qu @{&("$26Z$n}Mn{KIQ[#chގٜqɮ.]g-ڮm*3@[G'U% @2bԺˉZcO(ZB 䡆  O4o„|,2!>G e)᧣Et̀ZgG9DSBO= |"bF5w&$g rh6(݁==ef}v DpDԝaZu; h!ě.&h.2qQ)Q Fz$>s:apQKx{hNYz(~2WXmB>1n'P^&4[&|-5F{o$']cO|W4m$4!Tj֬U3!.+ytӶx~q|{dj-s7Vnh}Z;Owoo{K>?|.|GKѥ8t ?=|} wp{.a/5|`R㇗X[8߾{tom~N0J|}l?X/6Ӧ7Awn?Nj,c~;_~ 7[ lE2mv- sq.ƹm;"Êoyb:G2ED3ݿ?4*]/$ӟڣ2ſ_E`%ђkCûoC m kjAtf:zvn7'ۧuu:!€MYc׍;|8" C\W?C;><^SN7gYF*fGDP~d{D;?@3oIr 织{op0zCE'M &<0ip6ѽcvwwf˼QJzGc"`g(FqwpDY(`gLUD0N y\:rvS'Çe<frpfrזE"A~={`j&Kg6q"./ S0Ƣf3k474#JB"7h*J/ luM:__eݹ, [>y Y'2o"h.G2v`oQf[AeŐO_ ;N͉@O(<ke͖L<!`LЏ7Occgh';&;&`<&`<&`TkjA$y4J:Z: E:Qp@5LpLzLzLzv:s={8_6ƃsE$/mxZfdmޮj~"=/)> stream x]LSg)g$s%eYjhtPab5]E(B;%cQl X(!QԚx1 $$$mYX2c_4ax{&O͓BT%Z|kh@톾f%жgݙ*:+ Q]Q\"ݺ'O}f]fo',x8QPƱuN54[įa%[I!^L<[ d7rmO2OK.ls'xRAqr8yJYFo$z>Փ]/ٙ b0g-|^,f/D"Bt+# &N[p?  @#_vx~}UK%Tc]/upO6b*tUf00 FwXqJ]kƉ>֩S==N[sA iֱ<eEȗxa꿿fhfц`;gM%^V:4/sPk> stream x]mPTf_{}]ػaY5@6 N5!3J4IG,K釞s><3y#"$O"h՞ӕp#R(C$I[ź{kjAkԭ} 8BG72b/x>VD8!!5(}Eꐦed0p x뇓'T$ Ewggbs/H{KG^sr#:MgZcX2dKZ+ &ehlsȰ0yUhPWddft_T*J-'.)_Db\ߢ\ CO:j,]2a l6&Lg%I꯲}|&w+o=ᢁv0:N(U2o,3xL|102S+":Hm%mGO "n7@??xG0EqshoiqR^cLW7/Q˾phl|[f:!7ŒūCC XC8km7 `=. ['Xi?bEì=R'm]S}3V6@K"Jz,KeTj\N`Z{_ԗ n~ onǝmu(?;SVNf>sd]򑆡G`U@n/2@jndrZk˄ p'65nv8;`@9p&*r%|0o'1Gw2Jbc +w?@ nJTܮMA(8/P~?hux tfi';ɧ `p6R Zk]Pڅx{RjY\=H`|a7l G 6D?|]^3ڻLaJ7 @e4KY#Zx!rd;W=(X k`=AA]endstream endobj 248 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 310 >> stream x+CMMI8a  tcUDxBq"~z0"{zip^l+x~x}Orh}Oi!|w[YDNv`窧z-b~lwnIO" ,=2𘔁<.yU`׷ýn 7 Yendstream endobj 249 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1546 >> stream xmTkPTe>ǽ#lhؙ٣c:^L,1ESTSo+ .²ǗE\g JdTcZNaRӚzaӷ05h|3o=2 ˲ƥ͏=.1RiLGjG\jNaZs̟9o'u Yd20˘*3S33aI4gv2w'tg>Ua8]ivG6v`Nۊy fM#_fcnx3#Yj ]{gζ)8mvź8-DUf]J$YXY" ~ K$6&MAFDjU: A?=9w*-I ALZ&PRYr|.aѯ:804k(bG" q" Ku.gQ [+_ m CUp%;pԄNgia)i8(lrщh_~mwؾ}#K wjHrDS"N9;485\pX~V~- gF_Fq  dZnJn'9U\zT¹Ϯ\rqB<:P= -omշ]s( :v5Q[8oR,/Ykto9e'lLI{oުZ93P6T m mfCH>hQlm%R8|AaKSb{OYyAB,th/DVBh79&."/`$YN{ KT>)%P&5z %effmhO3m5DH=K\@D:MsQa@Aɏ$s%ߢZ셟k,|.sm1Jy *yT|^o8;J*ӠJq⧝qN<ܡ{>剧3BmDЪ쩔Ǭ\~2ߟy3^L[),rPmObIv82MYׄa^Y/qdRs=oI =~w&fÅc^-&/MdΘQ<$LbO@LWPQ aE+CYN^4%_-< $,]qTRyxWTta{:4qT2lv_# .*%KImхqfltAMF5&-8W۟ώi,ႍjC6T//UV(1~D0ŀ)L 7@endstream endobj 250 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 838 >> stream xMmLƭn HvcKܦhbht 3t XJ[\y+`ݟkz$NM6*!ɒunKV̆4vfK嗇e :eټSj yKFb8_//FyYʗmjw\^gj=wC6 6|wno1j'XYƔ3b L-ftź`͞9O9ϊVA>*rq6tP!N @xY5c)\%?Wd,C?mm"]l@:r&W RZZmrf}pCZ=W'6PͻZĒI(tݲx@/tXHӓ ;53{o#B + C2ȲP.^=kX O3ه3='[<_|3d3MO"]LL~_%QAg &Xw07Qo+T Ф~ћpx?د..RLX Sٖw(U㈑OL!$$@:uEڐ6 -vk{H gÙsw> stream x CMSY10uJJ   universal8r$IYTsnnssnnsz'zyzzywwu0s$~8p8p~}#}20 7 nendstream endobj 252 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 415 >> stream xkCMR8v}-  012=v }j_:T]-}ogB(WI&;AxᚽӎtiFvċ鋿Ћі ٕz0T@GP1Sv"F}jpbcVs,jŦf,hjዸ⋴ #h,t`‹ ' <02ZYΤ<7#B? rGlwYx?{F 7 !Oendstream endobj 253 0 obj << /Filter /FlateDecode /Length 811 >> stream xUMO0g.9:TBCn Ec;qH6{{3yKLs6{l_s?Ulyuy+5Rk]Q ٩=%.2;F6;w 4h,~W i&RU Lb4B ]S{cVSB|^R) JPjogB!\IRKV:\Uv ~%.M~8K|-4-`sF<_<‹@ u׽` Ơ{WxBP Ɣ1ԍŎXLGP(s䗠3὿Yp!T.W g0@QFva#m"B}|)C,I2*$, ܽYtDv*wc%zzZ󠓺 RʬWbp㤩hi!KO1$)$Rhyd9cnun tyln>Q3(Y~zgORejA/%JDzVae(792} !)Td;N3 ߳Uτ=/~ #*}{q]LhL1uX"| m@9GcBף{J?:[ s jM %ld3r7Eht;PCȠXҚ~-iNv]{w>?WR,ߞzX`Ƿ7v]?&p꣏Z,8w f]3!c<774.C$endstream endobj 254 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 179 >> stream xcd`ab`dd v 144q$(ddaaX~= Ȟe?B YUQ'Q9a\?9s~;g2GEsJtta4{nnn!%<|endstream endobj 255 0 obj << /Filter /FlateDecode /Length 4947 >> stream x\K7oCZwoRX/0 03rVwnrUɒA2ٕl%aɀ (zdXpˉ৫v/^)VB:uӽWx\}PۓggC?h]05}f>S|2WꤓX0{cw6 B):3כ8Xݻ. Q _όO}ㆲVL314g'|#釰=1,*ܜ|s2zАhG$-aӡ; (;/ϋ_`ml7Ġ5eAfMƣcK$ca !ǎdۙD$L:Lg]<5 c$C{,O{omqmU#$'fLnǵ7L>hP<7y;ϩ鱔X+ ]MzĀ((0= E$S}cuˁwҘ1:W&x}7o+۽ާ?N2izm҇vP#&uyuoǫ~fRoY<:w}Ȕ%M~um4^P״Tv ! okF4KrاA=,}~#JmZ\g L^k+hgzN4xk14%]b( f/C׻㐘˻vM+"\M {=CIw_I~P3h'ZzoqQNݬ6'iR:8KF&o&hI븙+gjj&f RX;VXuAqSh]7*J}W|xU/eIm?6S xٗϧWSO. Zv_~aϞN$?+޺~]j4uNdS &VЌ%3oKOp}1h˕5 `Si"Pb/Eߋ.Ӹ.۫nW $g0NLIՉ/ pdb(B]vUaV[ R"(vWw:b^ۢ]d_A d>AhAMa iX 2(u8 7z2Giy=T|=6Ie~uu&@tX󗥦* ArMbKxB6- 7cqr9FkP J4w7ԿȒPqvJ>2+kmg(=8}V2h 1%-~JJWw'f a 2O(W$C@Йp%UX^ @8ʟ4׬)Ay& l_j =Ӏ>QSWØƉsSY4@ke6WqaCe&KmTn| ðs+ U ZHe3VmkzU6-8VqcN -'w{rxhw).(Dz4S<\ąE"AI&u;{*[ƎV!~G&p^FNn$iNakVb [5lKVi. 9Y5tۑܰ➶ia LjU#M:=H[Lӄ.POEtKK<4lrBu#M z L*kTe&,P6tQ?4KឪK`jiB !Ѽ]D)P*"Z%&$1xzp&JQƢ, d*Cg N$7z&x3·B+~6D׽4>c?i Diq[FC3 b7 CUtDS5]QI3MP`7[z:q::G٘&t6@L1ȴq=jʡ=Z 8RˑCUHcfl薔бOe =ҘeW `}'1AWj/TGihL IDoVq&áe‡0OR+gy^ĜT9')1(<$җtǜhC4U쓎-9K;:1'46L퓔#hD4a 552&$-PC>L6=$PjLii: gU <$ =$k1'p$%8'KI4e1$ xI"&ҔFE}q46՝} ]zIHU1ߧ(l[)Q'T} q$%N uK֢Ǫ:QJODMJk|<04?)': r&p-Ρn)1% ٤\PAwsD9ΡPcDΡx%K4F*tX6KCo0KcC` p*tX &md)W:TM&B cT0фȩ͕tb'aPm2r)W9i e7'幙p:W 9dDmX ۴,8]5\ n!X q4`َS E9ıtrEc*8ѷS=8W!FGWC,+Z)eA|>D,+!_zcIUC,˔G;]LKRPVCnb\a/!WLkPLUTD-86VD,g64VD,JG;NJ%t%N+"F7REE"" 7n8-MS~r4E~r ҡUTi?o &nyMa FovǷvM3L#4fIPϛnj3=x\l:1 Zt> L,X&;^޿ p?6BSuǾEviɯGyg_ |ߡ2[:7ڪe™骺!`K̇^×=z'!Y]=Ļz<3wG.7eSY.o;ݽUvʸ}:/5Zj> stream xklUg[:{[K[kfX "(ժU)EK}fnoZȶP>(a`VAX|cf:-6~2/ΕrLi]EeKK6 .${SZfNg_qlV(ؖm@<'mdlZC)h[a箇~O)b[C"D{"0'/EqWcʨl&VŪ9JuXJ?GLzV`^H˒qJŌ! {LĻz# 3bb̜gcX)-/A \=G9??Ji|,M 7Ɉ ':U{coJKVU^~{0iܤ"huz]ct#h_G5)iSX7@-m5\$`jίcl4[t6pOwlXN@oKCPGqXp;f iRV.xBεNH a.‡>9A0=G!95pDvI k֪?]kru p_Jp3 l՗?سoVwK~]Q%?SZB/FڲvG",]|ӵkiC'hi*#zZL8paٚoǞsO|i"EFQ&x&/L:;:fҵ4U6fw_J_a0'!rHzw!AԹÕ4KL_T$?41?mlsj>ed}ߛ<ҥ47j٭ hK-_z9$Lǿ_L^z*LɺYvuisyr5Su6UҴMR#ߑCˆ06u==w`cY6-tAnhua>@|(,"zendstream endobj 257 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 201 >> stream xA SFSS1200K  @R3pFOv vKJ,Dv[ы #|}}$؋∳2~Uc\Vze}dc ? KDendstream endobj 258 0 obj << /Filter /FlateDecode /Length 59133 >> stream x|]-K~~<6ߑ0F$Rwus{ Ϳ'3WZ:Z+<]./_:HǨ__nZwoؿ/B=?3:_?~7~q(ǯ}:=׏x;];ʏ?7=@_vj=OǺRʏ_w[/7/B~sw}u^w/_;/_|%~kkq~܌m?><Cׇx>E~߯{C=^?}^^2^籿_ܾ<}tVy?1t9GQx䥜Ҿ/?~?zu_ӯqJ\:Gқ{`}^Ź1k鼻7P {@ƹ5﵁T9?H_BtsG{RS}zc΃ d~@eOF-"{B\$#ewncEh㊷ ]G׹u7JF{ XUe`6s5qUǭV6"5y040)Y:a`!9g@, T~,/g=·mbWy镘XJʅ߈EӺwb]r[go\e[.g=-D誕֥@`z6rӺ4?`hLZW#:^څy-NvbU[ oUH  LδF#]|x>I3g_\iYc?KHhʔ ܵ)$Ŋw!%/:^,w(pIxUyi^&\ ,El"|aqUgYc)7%Ͽ/V<ƃ`wh]ϮzK>LYǷ7¿Uq 7#s g|c z߈\eC/}V{ »Y$+8 3~^Y;N譹ςoBg k&IJKsc"|in@^׹^KscǑ^w,j.aJteWo\(_ a[L^ށTz~aj3 s"X9E#Q/,w\qMHO +8za2v"=L  7 FYoNIyX:6\Թ~z#&,cW"K>./aKg!_:&~N9 3pQpnD!t+fMm'(5_T| ky\乒{}&0aV-x `0~Z:2~ qO@Vi@O:.@tƝӢS<`+FOxgd—x7:' r1x1FO븢7xG7'-[aߌV_Z0f3Zʣ}V Y8CaoU~0zZR=5OWF Zaf<ȥ'U;' 48 @9' 4eA60|:/oOy2zz03HyGdXߒJ  _=k>,q׳ 7LɌөb] ֹd"&U?o"$uۍvc37mPUvޓ>iթ O@?3?)L@OLPa> qT~+e g@lP@ AU{q}x9nFPzco7#( \"ޡB``˳P@hG{aoWǧprʭWP ȍ!E"u+ L^89N0yN9I>_,B?3<ONfiy9QMg<)bN ϪBh<@ⅇshxᔸD GWM9-8ppJS VxEH8$^x8u   )v@}/p .AxtnT¾"(%^8f6c( A`bg:HUMPm eooLP@݂ǫBtc( e¾\،=4^#C][,^ؗ B/ y)B:(KA> EQ~(:HP^D^x9YED^7QQ4 WD]Z*/]9D]K/@x Z @(B(zAϭvD ynO/D Q8o­^A§0|z(|zN*|zVO/DS8e~"1^*vX|<1->O@S- k}QA!Bwa}šwE]ubd'SkyY 0x >K8.Y+n׷9}dhhx4+lzBSx#xMft4jʻ mk(xJ,G" FCc0wP섛(v- [>[ xtm݀ċةI[S|u!|v`nAn/0)nZ@`n+>Pxn `A @ѻ "x*"+H0.-g~ X$."xE o H0.4H<7]QX<7vEtݰ .Z$K ogEOċ0QU"[s+xJ z{ ¾ч¢2;)f2=b' ^6 (t:@ ^xꗜ e1v:5Ͽ'%_H ϦO<"dTQ "go!l?6];Mq:lR@1lh2۵^aq)n*4~pT4w A7!BV " H+¦`ׅD֢bU R a]6xTߨ 7waZcy٬MDS@߅o&~+p:Hl ]Pо ߦ[gU&҈LN& B@PT75,N'PVDB3N5lNUY.L .LKh;3' Ջ7wa\ZѺ}Gi*r2OtENxȩUnK6ENf(* UA6VCT8!-(tpU/Nop86d(TTpAΧVU-&K o^YM2OlAM !o"F)Wp4 1yNp@i9H;|biԠaZ ҂UN]5:bNuޚ p9>a,.n7PtP TY]tS9 K . LZ .!:ÿ9Ny+xS$~p}I.ܛo ӷ3QG[poH BDTy苀p軩Fj\> 9q'ޅ ʼ7w"]x8X< EPƦ :O%B?& /⧡ ֗sOgS]~_ފF W7k^z]pqj"˯jL~R5ARTS /(BRQ5\kXkX /R}OKdvWnO"nO*i)n`^C;QhE_4~(~ZMN0.$ A Qh."­SV%SB߆Sy)Ix!4QP0 ЈpYSI὘ J[x*[+ tv{[VuC߅qWt_gw!§[,^O(|rMbQ $qn1ns #(wUԭ"/ ;XKHlC,^x9ᗚ"[!<^AtxC$y՘<^89J5A!LϺB*@㗦B(VDfX?&Aݪ`9UmEP*/,YVǹBݍoA^-ޤʫ_YA䅅AU!gtyK_ s*zO + T^"[NWuM|JWBAh `(z!L^D-kY^" oVBAEPr+z!^BD@(z! (ʋ'AB*o*?Q/aT>矝^N Q.ɻ}7>0*[Pyc^m0yz/0yoI?'q<<(*+xR DެE"agC&|Ƥ,+mZQBފ¨`~[I0yÐ[o[ "=fȫm[WO@aTn+-\^ .jK{LQd^O$3d^{m)\Mw嶻Х .G 0jt0 pyMC{QeG˳זM ǭ*+;<7)P o r5|Ề(#z,cNŻԅy1h,% o/cpHLux Y:cЧÛ >lupx"!1Lxa6;Hb(AQ e¨kj)wP#CSi}fW."(3^QeV bϩʍ8L^s ԙ]Y*9'<^2,b:*¼[T1TGXUV,Ib4%4^dOϢiNfxdH<2C$!q$)bZH~̷҄(x):At0xEή+trkQGB'7\DT$j7Kj2lbqO%sN<2{;wÙ D*)B#}WW\FFf\puëB6_QryRWoO)$h+fghyegTG@;ڣy&W^S ];).v0TbWCV֐.>jY([;] !%c/ \^:!tjw i׃47\J|/-(˵n8#(drָB̷3JPwwaW }p 늙-Pz% v6;^Gׁ eB7#5iMBw-:c{d}<=U]?=G@w];$51߯>>+/ tE2&X0WNj_t6@ؾ3?6(UUN!f[EedH@M63ۮK^ |+lw(M8xS߻EjZ:@JyLܯ }mozyo6?vOn /wN׮SW' t>r] v1 7ǎ %'e~)/o ÷3%wZ$x~r6?G/T5!r\NO׹-RiEȝCz93H&C9I\i n3KDNv eR)# נ(K2S^I+@+r=(Rb`N)+EQ 8Ah e_  `ȨTŸ\aZYqPl'8:~! ˯}E $H$bBG%,"IKB !`!YjtN%FH A܅!c3Po,U LVƐF {7B ON 7rɴ$"0G|#ޚ7d[!Йs}!"PȐqqc"Aվ!M)2."B\)KDߟBDvoyifE&7BT772d^|Sx!L;f&HID7,)0(zZʸKVȈ37oٝ}r(KF"jznވQZYI|ER"A{##퐒lL=rup>| %s%s^v=6FF0[<Q6;lλ>sϦmn;N>[vD :/l~c-gwqF\7C7q_Oy-rm9~\cdCx<9*<ޞF(4]8*H3vO] x.yyﺓ'HpmH| ?\-yd0Z'^re&\oy>xyrT@xnnȀ2͕6Bn1ۊ.Kw \n"&sl |zQbKW &fbڬ6s{ KM9m:@ʃ>@hDm0j3ד[|~z١=nbQ̎NGP@t:jRdI"ۮRF:[\jzc]CvxPW R6wt7KkN"Vto}DaSuSހ)l6uv;X[QT%9z@X$nԯΎ? uSW 7`qPqB|~D퇩q-@t3ƈ-C-sjuMD ζ]Ur?L \hnZyX;AwUA6"/u# t ۯSSO;WT5*t*K-@G*ϧ6eHg;A-j %n52v*]on m @mj!͛.DޥX@=NEfvOCϛN;C {_>m[ӥPv{C[M -lߗ2hX/<||4ËPp J2NW6O}jgK>ǯr(І٪r"-MW#KjT,T H qk? RcLvJ5)`9Ȱ3|U+, q?B.S]⶯ ?Se}-vq[r.3\ j)a 7<y;\h|Q#NGNU؏n>oeI\P%u&m dWdX [qU#G%;R t,@֟Se&CSLR5[M$Mv2,kLyL ?2=ٳR> F)t, OkYN>5 5e\H*/ؔ8ZGSiIaJ۔SZR}$\2rSvSv[j5\H->RS~\HVѴr/u^ʖZvSb+[S+ۿe&TrM ,=)>\"fn*Y:[M-ZwKK Ts~-Z")f:rw[K8?"qB#7-AZsӺG7vuӊk)}7xӒVЛkM)s7Kz~Z~4u2SpZ3 ģS2ZSrC@$"ӷj+aEq)hьGqk^ZR#(h-٭iȩєD>?|<Ҕ.~+s.g}O̩?UkkGIڦEN+ pƒHfA,Egc&<~"?>M+:?| q8? t B&P*N狗/D/uҩ}dbI%mܹ(-=Ũ<^)k=xZQ4)D'>92_DΥ0nxzKOML)ҞV9&󈽧uOAR46ϻG>)boG|r94(-ϭ8sNi)9% $Cr@9 }Z`gdg, PϔSҭI z5,.\N}H7/'C+#]R {QNgXۚc.ҵQ {9QcY9n~&sw Oɳ;;ϤP=D@>#I}8'mI!?C >~fY Ogi:OVzzf!myIn~f*Y陻>g2Ӗ3Mxy gFIg'=XGegf5V;zf_Ye9g9[!Q\VDШ.+=3<36LT3Yz1km<,L13 ihw(;OLUoCnI>s>L>X5^mgTܽ=n]~&ݞHCi\|wBWt8"3=DPاA{Q0s`.H![p@ $<@Y{`.raNBa@t KU'⡈YD#OiF#C|=1SH9i&A퉑ʩ@8*'wQQS\[W:#.LQ+DyBMd +O4;S;|pO|v3% '?Az@dL|j"WL-{3cOhTc C=8Dk3ca1К @pYdu` yR5T_9YfHwyNQ%{к[a.}Sgv~Ȼ2.g,ab|ڻz.s6a <6%h(` q,Qc[¢/1(5f_]Q7rV oVM5[YO Z1t[KU5]-V g(»ْ>C'sb;(ٶspV^@UuJNM,ܻwg϶ۀ m " V7+> |Ds3B0x.0?Keq\&p͋}I lA$Uߍ@<#}(|l2| c3v/E8 ]8# *. xmb9&C`B M8򏿔_m%LW,oObɹ>:.e՞w+mvIƮZ47(~BtOw^l>˿zv}Y$ɶ:[Vn ۮwsUMƉ*o+JHU.rxr6RZ׭^ngwԈ;/u]( ^טlX>Ⱥ>@wP` *fy۳[m6>9el]#]Zinz ylom1ml禡ʾh끓Xͻ;X{&V۰6Bxk7ˈb{CE@Ǧr}ع˽kIzMzGdr)=#꒪I%TSC|a estkn)MD,:aPsk1Kwuh%lT.U? hF{|^OM~l**69=MMhΠBGT9&.I"PR7^7:ӻ5;ZO!ፍ;n5 <$3qdbQfA7ά=6ՙzE !A}`x+14S8"G n[&H]jGy) RY ]GdbHREi'1bIv}Cƚ[L u32O^FI2-O%2˜<xS"hf~Йb>iKsN38Kuƴ>[cfr`# -(өHRr[,nbnc^y(y߀*ZQÍN!'!Ԙ9x]ȁ+po~)χҞcl2FONB;:0k$/yځhr{GK_OJ2UJ)}Sjy bR+C=S1E,@"'nzgϟYhר{_W*}#>VL'´-gfѭ]ٯwA8EA:_<="Qȓ]H@^4cy8:EsU:1zu}+J!U`^ϏUYC,Qǀdm*B"?U#'&P+K".'[p]6ܵ2%R4 ˜]+u*97l*9+U3࠲n[e@uemU)4)$\.bOl*Ƴaߪ[0 M{jJQ ̃ MYxc[jf!x*b6aԀS6֐d/z>q{:>V KHQVWq#UqA jsހG(Xb*;;\7* 5LNKF5#TTTf ă(vi_ Y:QX+9@ңQ=0!AN,sX9j]}՝=tTz7}HtԖջ,$=Ul:`p,eDuԪѹ.|=#űفǪۨ=];pe$Ů=}ZĺH6ٵ@O? Y<5!GAY FLDEף^.;Ujv ju}w !րDmD%%D7V]5.wqխ%@x+TS,ðSkebk@ j `uՆjUx= 3䋥~>n"+AS-J˻"ެnψQ:8 U <>xi*KaIbƫ$VMRbѢq%%ۀ2wK,fĂgYh&0dQ̀'L KZ(~^VLAaֻ{(!}6TT8aSpKiQtLKNa"< 55jebgAO]N+v),v2EXlv;ϼ f4LF ո}"=rw7}!/|Mj`y0B'(ЫSc@p1po?6=6!dlبnWG)2t~lAsKpyiԛ^1WG(a[q 0j(co*{e%00є;};y[ 8“cOm ;Jr> w)GG^OI5M>͂GwzOLh}{xxPKAzk~A:AwJpYd4RMK!uFQIMcyޒ՝,+@WD_nT(IEFCJXTGH5B{ha K 4_G d 4PHZ#>!iSخL׈^PU0oTma#jyROtROÊR1{JxR:g#fAme歳L<擡@q0Jɵ^:ʲ |t@,@[$n/U($7J6bs4%ң(ɔ5+$kG"Qn RI{#m"GwOZ}vig"6;  9WZ$i8w4L15ǝ2C)V! ʽv8n#Q ӪRV\ek+4^&#R2J7Y 2>#nUɫj8c*O^M hԯzpJdDy#2ZO_kn":?t9,)kZo kIkmkwRJ|Cj*K-R3 ^)\3)yJDO g|tQqDZvj W-R53icFR?^ Ճ"la$s>eK,|3IJ# YĶt `Z(cf1\r)Z0*-[`sִ6obK,[[7dR85dc/JRe7(nPOi]vl  @2eP"ҸZF/Ci16՚A&%3H׮uU! ZĥkhU ƽ:3Һ kS^Jf_6<@jZx|HܠY;|BE~ǕTx s$'^Dz~$ǑnUra-GB6'IWKZ@zy!{H3{]JH"ր)Ew#,|)#!#K=n$+#'=y#GJ hf'[moM`x`#Wͅhm}"uY߇KoH`8/ZH{qz@czf@˸sڕ<Юͩ /hWN |Pz vy$4%r^O[ JN~ Hk?p}xHb  ФYN)W/pWT @ph he rS^煼.@D^#qx%iN & MIiyJ[[i<#-x8s]q^F4gr:Ls,'%#O:`L!T\Ƃ_y6QUkMo\]|*,GDIN驷=ֆm=n< 1̠4u9W搣=z&S<(PH.0$`KV.a F4 t'y9P8crdGI&^㦢'T(+U i4\JPQ~ ҄,8M )C ќ{&i. Ӽ.d 5+L3_y4KjPE[p0)d4LjY|o;+a99K3оř۞s~Fe)xg+KV9  D'iq rzvw`"zvx=̳JxyʚGwJ攽R5h&'E1)OE7YuȚ*u ,xns t@UWC -4ZHa1:""Tˣ=WG/(=-mW3= q<{\aO,C'/C[F[|9=Jiz5$}4`i03gGX9}B&ȋ-":%xQ"O)gȟ' 3?з$ՏQ8~t?sr}0 ^;슦::k]l+9Nqvjny.װnՠ+j]rwn]4р kt"%<| f_nUv0xQ٧v/>(olFG)HGy%XF x0kJhèsAE𵵬(t(4ʭ1rVn!r|.!駢.i; 3CEtx=]Қ/]_.kHپ;T= Ns.7;' }S bWLˌN$ROӇ_;yu=e"fϦlB1c;ce^,$"t3"rw:1rd+5 gO ubjo9V=% :tXj_qd7<)*NP/ :/:W˻2i|:* Yqq'hFA@. u@k9;],Tt U8c5Š9~ſ:|rfV鲂;NHuBKO όgMS*i}x |]r32{;^0 TMJt'ZinD%ȃyirfO}xGnEQ7!Čl5e:9_QP` 8('1T$imë (B*KӚMr#eKI^T2cA2bY:1Rfre(4U@Pw}E(Vh3{Vg)*'h^z ']F(o eڀhAhEL0W0.B9>ynZq#W1[ʛu19ua&<4bj"9&s"=߄ODJ\D2^""O&rT$tTcl "+DvEq12i>-Dxzrh!FVnD?L.|tId&B`#hnB5K@F>Ɖ!d$'o1qd-'Z@RIlΨ:2{?Ch-5G5hN|ډ(13Bh b7ޙ{<4mDBv_kISOTHd8 R$'y"'ZG%r' a~AeLCqQy^;&rNęv@ Rg&P^z}d/zUsf8EyfA:S3u6[1.xy JD AJୟ41f!`fFI$G24V NgdU~yuN|b}ڗr ]k#2=s't$3nv0 }taHt|T?}kFf&C#yٓvUiQ%ALUVvT4(Ө|kL+'>Dnmen~~C҄QzwE}2؎x/:2=<:#gE]L]&ر9e#?sNӏƩ&t?q$` mȴW3 tizݺ` S=(cRteUQ2:O{*^F,@TeA 8!,fQhȂ4\8*:n8I+qe4/F %2 \. }1Th3 T~FU;`*{Bz? -YYDn Hp!`)pX!# XQTayÖ].sd) a]d$AvlxBfM*^aT BT/qԽNYUwRaU7<7" F2e3Y(µx6ȳh1_,lW'@t~*k]ZQ1hʒO,6և2kU;㪼4WuWj4hph6r^尡£d6Q6AU۰sC^RUV*:Xx:[>8eZ.y`e(M[ʇUir0Vg[\o=lM%ٱ \ݱW7Q^yx{>s8WzwV? ht!e3?CxײuVgwzUaaTT͒d/@[HxQp-,\všk&wvA }gjg`+տnN-ןOG'FPMIl 4a* Af:ʲ{+A@K0SXRV24}^6/ ~Gj7%Qmo( T\NATk" 5N$k| > =,o5&~}FWŧmCVGMt5HqL+jTYv[/Q[66g4[]7uTgMQw_͢3r T>Ta>T^\'6֪ 6@(]VejP7ZTmo{rZMu(}uNDuty7mTU_ˇCo_=QId=ZbOOԐE-֑:Rv$ .rpA{V+ ܳ{BhBeƣ)R ,i>i6C=ʧi>mE/ 5gaC[T{\ngO,tO>o_GSZ)>K%50QE9g8]7nM5xJ/u@si," Z 7Rz)͇.o]uJ;b"Ց/1w]Qřu*&["2:zY,ѠX>Pko9Pen 4:@ʇn-{z!,Z!$ّ{x4 Jt8 (W"(DBH!FZ*@Vb(d[(ɒ)rږvA /2%O#DMa1/% ,5 IPzҕ^ BK*7ԴZѬ{oni< =ЇAQV|4J'5SSUBcRzh!:ѮԯT9 W=)!h?e$ -J1߂:LR]qX2 xVo [j-&,X 3:r}P8b=Q(]dRHZ-OL5lխ1R@ "ZB\i" 7jJzɄ;cUX8lym\J b"eS ٢@^ A-sIBjSkݜB Dt;?Z?P+2qsI-$䠞s>BE:U렑Oj+AJwwԯ0GE=sefJ_[/QNr}鵔`ߒOi@ soI>pB3FĘ!Z}4R!*9P0*9xäxb\DԪأS6q2V5-P*hDDH?8zX*=l5H|HQyVD3IɱRMSR% |LEN&Hi^JKcʤQC ȉzVH'BMB!GE>g)ш>ydj> V^MXtp4K5^کNN}UDK@n!IP ,)"<aAjJV0yҕEgQ$N;" -@E"+1i!qyrG%[P%ȭG,iҽ1,_o9yʒeR$8y#oz`)5!a[y*#PLTsYOudb2O?,#s,9l)1 [a>@* Bw$ uO嗤=EBIs VӒRj!NaTKjzv04w|4OG@h:,P8 ZLHpPY *~+n͟_zgI.B1>SHm:XnO}{eߣ!$߷fXaoeS/ r-SRrx>E{{6<(Bn}JVdȷ“V5-{@sд zs9Yp0Q[1 Hh`F) OVq HnjzlLQGADsPGDD_!"ATi䤉 AyM@LW[M@,$Z/@S1!"7>z4#X<{Dk`WF!mz*kHpՕç1y s0|:^^OKSg9Q4 2AYlѬ{z 2ZVOx -S``2Lq+skh̡XFEș.1:Rrځq`Ҿ* Z>'19 d^Is!c`)O17+lh<*2gEe{.sDN"jyZx:& ae86#XC-m9|.- pd labvn_7u Z(:y|-BJq56hmq1sƅBAJW±53ꇚk@1va\1wÛyK͹˘§Gͨ(bs(hlфg͉nCy%sQ; Lj4[[k5]_h3/?;FŎFdkvex7z.4![秡 UQ9oi~8t5c`sȻs9*yVS<FXdBNGTA䚮7`GC/z;OװwD\?&rf<d\}<{>?_O|.gأiQנ9`UO:"Dn;턓M˹8ٻGאypC.|N@ G§8l!X pI34ͪyȅ|q!\M$¨t RbC wh%f#~D g &?b$@桒o>0#:?#~ \F ."mDW:/G45azẑ;'<*8RHk¤pa  ~/39p iMjDMTD",5x~N-PA 2q\ѧ/UHMBZy2Vhۅ%D?ﻱ;N˺2U[9B.r m][$SiYs:b@o+]fwϺs<-"xAjk45lꔨ'b6ʠ8ъq!=-x@15ƛHi!.U!},/AoKu%!+~BN*֍)A@;oꊙ"Xh- \TE;Ve& C$(ܬoc*cJgsBQ_>lqVGwn OgDJ`_>Y+ʢx=⧅KNi*_뿭>}T9 Ouz4bLc4.EIZۦVpt2zDOcsO>֋NF/C~/q>ީ(oM_~Z*zQ@ˠ!W J`ky&EEJk?﷍@,Hcej9z+iP!w6xu_!"*ևDYmkoeWxEODFRU=>_`UxX1yV|޾ԓi[u;`[M2gK--bg$5D݉xdJ7l;2+uU. W\y{B٢)YL LɑcDm>WJ-D̢),RϙYH1&] 6P҂o' 27e N"LLB$@)ywFY >2A*L+Y J((RR)b y@Vjޮ[wz+ ;MXf%w%c"mF٬RkN䥔edBnF!x[efT;A0K D72NX/͔!0[9ath4(vR7уH,y[ Iͩ,'HӴ3'D4 =L OLB"~X6~L?Ol#,QzB{Ja)> ,ؿߣso9>g"~ Re+Ͻ@˅*{rDv\Ctg9 P+YR HP&RT wE R S}F\*`9M]1[@aWLt PuDRu [gJeb X2gXeBuwBm%3A긬fnG8g<< |&@.͝*zbdWьjoޜKcȹOPM3TE?ʇeRE ], &PV3 x:,ɚPz-*Ңx,EX5Q|r0f6gln3{vA .W!Z4M84*{ ,.Gbv\st%vs+HpD<"FPeu+n]jyRZ{^E?=-B6 N;^kv@hCב'.0eVpPV \z7s^ SMa˾fgYzj> ;lP kLMl6< U3\ c\ TG['c՛ sf-oo2~ZN@t~,a:cgh <n~ 't6졌ee݊ԮvtX6}ƶ>_6rGc{NEݻz\G @onUT=1@4$HCH$0 i",ufl}v;fvܣ)AfW=-%BiJ_N#Y ]SF&!D<<8Mөn c"E0ct#D8tĊ0%!-[&dH z/NYNu1]uS8#\~{: 񣂰yOTyOWM*'te>TyOݐQa l{<BfJ@ !t0" 'XgK[.3%1ذ;"X`O7Dv7qrBB)։?Ѹf2Iu >mn .VI 情Z^Ȧ' ,э DFN=G&'c*!:? nG"#tPOfBإ뛨ŎSH8F$u:v7%~CdA!)SL÷Q}iϤU@y }$8\!/Dڡm;r?8QE>R. QiŠ/!#KdJN*|ƤFPSn[l2Mlkwc]T%)*.wMl?=3ۭ?,ڮvfM-ZyR P وL1_tvad /xu9z܆,_&7jBxocC;Nܯ°+p? (wBa!)ܠcX 94i09<AaUC tg xɉYҰ6o[N 4Ͷ5ˋN-Fvcré瞉ڎrF4UHb7,܋0pmwtaqXt/ BrX 4EqAϣA,0z7׉B7uX=,7-DOY(B\<, )Z?OEr3eZ_NG,Bi,1!nafϛj M}!0uBCU͕gm}Og0_%KͲt|m-ov LB,0?"=͒cl,햖T4T%p,X DeZRcoݘC90i8%E" EgH5,8$QXpɜW,nP)O- WRE[qUB' bpJDLunh ԫL? B4X8Pb5HAH.m:0,xCMZ4 k[ذzrRb>r"P.R5Bj[YKGZ}(+RԐbtS dIJKU)թ28ܕ䛰%rٟ2PHkKRQpx I(/Ԥ+C1xVe'cj[u#=R*&Z.Q1JjoZR#I I+G`:)hTSc mGQ2O63/͏Ȓg%%Y4xvw:[\-`C,mK#븅:$7'"'= jf\襮b#ܝJ֧dG!Fk!0#S|)֟ɻ M- *^$dqU)ۇx$QNe-#<,I "n˖!b{;$XͿ]gQ"ʈL;{R!=~BFS,Fr$$?ldFIK"cS|fY֧DZҰ̨v\"&"y_*y[\,u73ڜkSK̝'2̬?KPd6tTE߳Gb/EIh oh=7EG*@E&ӒERMlAQjZ&/P5] 5FUt?"Gr+" ,܈8c " M$V{[)m3)Y͖¸a s6 8X4kQp^\,\,K_ש5i)fu o%PYĮbJ(E pXRHdԂplrkVjrkj&s37;e[KMfI;Ç[UKZ"/6HƇ`QӑbuGsu+"&8v+j ~6\jJaC_EQßHQ;, bWnWcIvylp 8[Z]b-?NI 6. awɜ@!tG$aNvj:B*Tz;T?PZ Co,FAnvUF|ۛu4b/HZs^=KHIڷJVGU MR lBe*<@0rcShPFTO Wct8D.+qQ7]v~FGlqF%N=;^75/5pT" q\'V'-:ZA*B H* ,AEp0b]¢PT f,wO ]HcyC#T7\љkڬlW 8OB )H2e0Ӆl1n\(V2OA= T_ T֭j q(h~I{hbd_!˨SMtX|E& Wٔ"l #(.Uw l$1p"܏l f9m[E+W`U3&"}t i\ `ztt]i$1n`^w,XyS14Λ5}S|Y֧7S=U%A:7 zy1wo-ʤK_`>vɨoQscu~gʯkQm͙k<Ƃ>?P.Gv풓A/iMg &Fa!N%_>!bY7fkqҴvP1!?2YT0RrU:T]שzQJo~9|mSK P# `F3pk<M#f*G>5nλ|vA/((R ~hB512rp*-m8saH#3`B޼JG(L &)J5cdEdzn/C_;U@-Nx`n d\k 6e|ϩ "kt;\XgWG$3j[p`3W}bM9b9Ί"EZfHKDEڋW0Rc,*^!f$8; ݭHuVe0;@; ph*H#>3:<(?ӚG,*:ȲX?rJ0+. fi|ӻ< ̅s<_ s3o'@4dS.2th v./a4LO:J_hbL9E@oSޱzI:&QAҗ]B7! -ʓ[ԨEeuW@)YX,~͠(3w۵=w-ϖ=/g[_S}o l,0l.Ķ5;mjȎ5dWdU fvN;0@Icv`VI&* lvfzp?hlRcgiU lO۾[\K@E>[v8ڏjK~t[\hqn<{gp95K$`,rM५#屳k U᪳^gwiX?p5, سG ۈ2DB sZFe{aeM4*-K]΍[ggkf4nNwc /7?{D]YW) #@$AFD3n7@Q7T"up2"TI΃0 ۑh8A.!tb'4! ~@pW\Ρ˄ qE-RIM ^Ln$Fmp/fD1ٍj0 1]պ"$OФ$FFΎɫocz̴1zyronqc'X$QGm݉~t|ӑȟy$v2A#B]Y|m"%&h,O,B!5%.,;JP+3J'#>M;n UY2 QC_R$MU!&(ZCjכ* JM! ٪QXqݸ,N*Fo㾌HrHl*oxhJ3%T?KS̊I:+ZNZQ$Ӽ;SaNkpI2[ 3nފ 䞠 0K+ T;tY s̈́ۡN;9wi9Vw8K-CX{%P\&jͺWI`ҹ2 A&Fh<#ED0EME!#5FXN4g9BPY(d֏$22^dT"O+Xv% M)&(`Gm"RGƽ]3Kٞ(HBF=0nhV) brW @6VaOqR=YHO[c*,dšEFIj >st+&Dz&[ͮ1g)Fa@a,\X/7p<V]X80 F&01`^-]1W[E|:Wr]n-)Zf,XS+2%Is!I8i%I+)hOXSh)%1Ld"tY,|5 FC/zkn*lfM6lN56V|3k¥^*91B"@W:Ez]bwNLAb+kxA7<_bFJU+yp+V1Z`z* "G4'%2+vڅp/Zo$fDM[SH6?bI 2n6ޞ RQ%qSָ> զ$fLwᯬER20$Iݬ#eԽP]B˜!*å wI_AғLip6I˓:rY_Z ; SvjjecR--E8iNCiSi Vb'{<*Ve\= Dvuw?AS'dESl8} Oڢr)k[۞ʷu5Xi"}CYb|K\` ߂L,|S *O䮥T]3͌OS dn[$YׇJ~B'JG9KԬ3Oi=Jےߧ|) ~mNyX䗺L%2/-wn})LTM/zcjWUsO}Z|pK24Z$Om) sl^۱xG(ѽP ]8<v bʏ.塎4 fNV.3dCE<w j%z0H2ч277T;.u}v=C u(8-,fic 3xDXE(=vX7<8C@ёYO,TpeE8 3: \̭t>N|CWZ]!@\%۔ߕ-s|#T cA00DpY;ThQ(wa]Hy+}艓R01,b*ؕtP2x|# BU!X H6<"r"_5lՁզol c[3fO;:FEft='R͉/Ų'EX1@17y`Ŕ 8$.ȵBaaU++kQV6 ,Jvx90hJ;` +51EȎi88d 0L eMθ"yfe͝(Apzt ;Qx Lw -jmpXUGJj353/g0<lݏ$,ܯtLY<?ad֜vְ9EXqH@NP '1D',,t2JJy&^aѱPRJ)^,%XO,pc)Fg&„3έv?%1 U6,vKjN9, +å̼۫kշDaQ]9. Ly(y4 `ak|UCQm+cY:zthULD+\6SE ΀E VzV@O&] JT-GE Q ,QaJCx rI&Y$ Ү::P\T O4~f]OtI?|'rB*@3jB^TĮhjafՓqYFSv]'%XpwVb S(,cm.um] (-²:W6gy.,\.@.E*3ˉfK|T\i3ӁUޜY ʤax*FȢ0P'K{#; NU8K;`QV VE GnX-rˍjX,j܀z4wOiqjX?܏>M[m/A4uUjX:MzyqbQOj딷ܽEGԟ-)N"yenoƬŢֻk~_V,R-kcw[0$ݩ;n,W1̽za7B(aP9 0nn9qnu!9r@n3yQ1Xlz^јDd Nɍe霌ݖ:'lIsw ,, w"OIِ ˵ŋzaa­rLr\IdOF_u+7Ḏ-)mѱTs'\=WjNwhGڂ.Pl17âz57R-\Ygsz#r<X?S}}NvO>dC~ٴnH6F6%@,"0GJAQ*EW5& fWgp,$`ZI TY5 AZF=Ej"#ҟMD$z"^&Ov"Hp#IF ɀ !ɲw ۀE 9`!VЎ$A1DD]zM H`) W\wHK ,ħDPebqnCXRI0A-i*fQgI9$˴d* 5"0 @5br #A,#bn<򙪊 S`Q&X?C q _Yfe|X8 ʇK磠aRFs>,D{bf凁x;RvS叚4~b ]a$TOIvp$6V$.\o5ޔ;]- ޥ4BXD|BX8Ib!,f|qJbaiY.ЪR;TaiH`QHғ,&"fBdmFXOqYՌ ߜ &vN\٥rh"r8k9RZNh~!hTNTjz*\{=ER' T~jm:55S=e[lo84 sq+t*  r:ܦo,)K㎫&P@]a˒S"w8䈊, - _iU4 ]N]32wTB?aQÅ,onGdƤEy{z!tVMq]fSXaT=wr25+kRBnSR&bjp]+Ns`Dt9znD}%t0GkЈsamY]RhX `%S,d+``,JL:AqsMuYj==;r_]g5~Z + RCj" <݈2RBG>+y^N㴄(~JX8-"+R+ɷwIXIqV0aŠϓrn!$ńZ 3a$̈́,$\ޭ$/1&ae&kVm]L'bqBvE:!V"AG+fT2KJ6$bAEy&ݔ*J +z&;-J~h*~VpmD}R_Vu(J=O3MDXG1C *D-I-B񺑶` \"Vʭw߄/ +J7 +j\a+A(EX)u  %JI+ūD}°rn+Wߍub%<~aXj\b% +PU?2c%>QWXJ}0V*ʵK+!+!ʵ)sԏ B "WMflf̄+gUc@"Vj{VS' +9\1MDX9U&a_%01" *v+@EX9[ +& J y Vr UV|7KD΋),v=0Vy,VYki$aa+dӘeV@ed`n$?V?N=aݺIX .W}7΄PLXrdֽL3a%`+aeWքdĚaecϻIX!aj[DXْk (LXcʖ)Vy5 X$]BP 6)=ad)Z!J g!W"Pp`1-K*=EX)=QEX)X+"BR R$RY+"ߘR+aX&yV xp}%鐰R&J K6R0^RүHX)[X$8m%;HX)Q6S&a AJ 7_x˝ "?BJAA"VJԲnTbI֬@Jig,JA>EY)h+fq$fD 1^hϦa9}Ĭs¬A$X+eJ P¬ Jil4f`~LaV_BƬ 96;HJPRq(ʰFΐR#eeX,I N b`1G1VJ8k w⚐RƔVޕ2ۈGpX)2XűX)GdDٿ)ʰXD%|Rnw؉2VceXRQJ?KJ)Z- 2Ve+ð[OS,DH`X)弭CʰG"ʰXHRBdRnv+ɜ.KnK$|!c`Q{j ^d`TpX԰`ʰ hJC2,ꈲ2,"RrE y.d Cj'2[AJA+~?d@odĀc\F<R.$x: K YRd/ +{ N !"(+ee *)+bRVA)`SV;/SV%\!+ABVe7m~ C+r$BJ\mJHa,+L+nTb E)RMqEF< \X)g2X)xX)'.yX)gX)pxDxYxX)gL&J+&1`BJ JDH $c]WJl2V '!ceXz$J0RΒ2D FhP%2"VʝD|c$b%,Ҙ$bQd,ʰQX)8[RP•+rdE!c.AF2V¢EJ1m+XbJ0V +ήh3dEp2V¢cR023d%,<AV"CPa%JXڊB $d<,C=,(l(!d%,"QY+7v%|dwP.Y^HnxV<+aЇ#^Bk7/xm(%Jl+aUxC9~o) =| b!J8wUAVYRi\Yo|[9+1 AJ \R$։ H+1,q7 ZL䕘RA"¬Ĉ(!cbV  J9HJM O1suB2 3-lqUQL!heXE Z) *nԄ@++V~@+”h+MziK@+1?sbh%p oJ8+Z8DUtQg\.90hD+7Z A+rѼA+(j&N>h%`<69+͓!ge g 3&gL;&g N{B*3gb)wrVJ41Oʰ(jʰhfe,7-Y)jᏈY(ĬĚ[bVƲ|OK'maVł¬KR.+ Rߔ<ଔ([n.9Q K] iVLi&p7heX-:?2WJȕR0reXBJl\$ʰHȕ4v RH9eAXDU D\f+OJAM`(B#фw_BʰeJAP 1W81W"vB'0̕QTD#.dD̕\ImJiFRu\@#;\)͊ f/ቹR`+{N\)@tBЅ1nCJ ,$+nq4&,Nm>2 Rǚq1Tĕ BJ\)QnH`+%By6DDȚ+%*X 3+%!H VӞ\)%\r%J Q+b(ۊ\?\)(ȕ:HG$P鐸Rk%DV\ĕY.+:J•r}7|71!W Ԣc!W O!rLK;&r@BDF{fwBh$HȕHsseXMRx́ӫ3R[lJIPM.CW \* uteX'te~]ylmͤ1W64sewd;+ ̕T8+UM}چ%Hq0sPd1WT2WlR!Wb+[3a.#aD\ٚ;M\n!Y;3+uBlݣ+[FYMb"g fBRO\AJkN݃1+kq4B`p:\8+7q ' #N+;da,4Uys\- `{p:J 2,Q79\AQX.B= #W"JH" f:]+{1q8-BD{"w#ʱDfʱ+Lu:8+ѡH ^QLs+ѝkq) Qr|IL\9E\9ӏEĕJ+G;+G9q`I\9I~"U$ -\9o+GSFWvyWvAGTDWֲR!rtS#WPC,+P ِrn>LX"#JL<+cuܓ" TBwY?ɒ?ts%- 4BulAWN8°}0a+)+PZ_8E{ D3s%Bܯ+`9r^|# bEB_\A Q\1W0 " B&{]``V0sU !W rqXO̕e|g3ЕAny:Y8;vqWQu zi]A\5|Xp0v,rOD]u>Dۈeu%|+צֱIO,>,oH @ F*}'$l2y%FQU;eEsWrJJlI^/+ oqU;]DdtWqW0`oB1]Wa+{eU|zO(s f!~On|eL =`Exp :+ȵm+}%y:`^)Y| L_+Xew"Y5'}%W+I_MWa+F<+%҄n2|d;» _9/ _9OM _ Ńrb'~<%7Y?!pGcKj"˹{ih Uۄtl˹I~",FEJ `Aoރrz,+*+y#_AxW#c ~X7>KX}D`N]XPIX"$ ߫ ,d!L`ހ$@# ,ǩ$r0%"be7,x}xhW|į%dC+v _90\_9͘W] _MDS} #~o&X+ b` { `ً!HX8eKpQX1"~Z' ,^yX^hGX"ŽoH'e 1Vcf`E؁l5oJ6W$eݻ ~ ]xW6W'~1P^+>I_N՝&}1cjJA {%zB,L0WJAJ$ Rp\`}¯D ¯D +]WJuNR-ldJ3~%:>t$W?㭈 a}W uD/\˩##:2+"ƺV}L 8+etE^)9yeXt/5L^X jRP# C@qWJU#`J[B geE Е(a] ԕS+%!ɩZ :!u%Z J]R5®DDJTqu\$M])Xmue RBDؕ("*Wؕr-8}ŮD$VaWRؕճ. 2u`eMAԕr 0xR^)Q]W)J97{L"x&\RǛM^)# ܕI^amJ^Iv+NWW"th!y%𢳐x?)XW|W'h¬NzW`+$3yԍg# qVH^nn# ItxCU^Eb+x#0x<[bU&c+` A^ PېrjItҳile6xbDnȁ$8 {' +H1xaJ;`u=Ww2 R4t!2wFЕ~> Ҏ6+mHAJCAW'ЕnCJDU]iUCWeBWQnR]iG+t!' JNaX"&Amꄮ4~t]iX]iǩGCW]ia+tY7PЕvXRWڑQW$: +}aWs뻤 L]'F0h6u%M'CJCd$ԕݸ0VY+yXB@GH]͎ f + 1LH]d2,*uEbW$aJ[5WqΆ0'Į4]Pu!vt]i(2, ]i P) +m/*5v!,L`W7|X®7󂦮4sfPʱAԕaQ+mGbJC),gQWJ8S+ A ]iǽt-$]rJ]C-JC,ie dqf}!cnn\iȈsBJC"1W t@W3 2$U6VdKJP!t@%]H :]i[Sŕ+&"t!+â[CWV>iʰHBؕEJC!]ESW& +bF+Uԕ RDH]iAM]iՒPA# 1w4d0,QڶҶC+ 9mMfX+m;7sESlm+s%po"ې2,o:+c5Ҷ]eb%NhBWZ$jEYBҶm646 962,nteX~%J)0cۻ:\se"JEVO쨢-0coydb+â73Wj{Y(͎`&&DT<0nAJE/{D\xʂڐRQ,\eV $TRF+qeXJVBl!q%@}½2,nvW0;%JE=­ Ve7`*f$[@ Rz?V kFu)l߭ kF[OaqX+/a.JŸ^-V`(H Y+âB.V*ZźTxк[Q$C2ш [=; "l"R} Do%loFTķR1c©To'.Y'%/heCVOj:@DYY QVDee%e)LYSₛ YE8)ֆ!+T/ tde 2A Y"LieCV" & YIe3V+b2 LsBLu#V+1"iWw +Iؤ!V؎+add#VVJ B"BENyM"ae.ZXjK+Sɀ!eT2`e ZB,nS7& 2 X"aL1V+S@Mԇ_e*™2WIuyME3櫄>$UEg*amnr_ަGaeܦj*a6*h]_%,t;.W,M~(\*q+abqjqV"tó XVrBW$]ojt XJ$W rk-#/JD^%"_,DŠWQlӿ5(!8` z䂫 "mۭDDpaQp#Tp5 JXd%.إhJEy+zg(J><(.-.ʰ;Zt% JDYOT# |tFfi!],Js,ªa4]eXEW01GuU_{U*+d2fDz,/VXTY7GU"8."KSiWsbUsU6bpcUP#Zs2['lDV@VE u;lVAaU`H~SWFU_as W&r~!U%kDHhrDtST G>U` ֚"~n" >\K6ES]VIZ>MUrTvIFVC*4l~q)hnVqN 2d|FB"*XS2Z6~FRWJo ,|FIZY>:KHMZ|+*?LJ 4[YlC&[MVAh9L[`+tpc ,E NHiI9IVAbU/ ,LV U`aJOr*B e(6Y%gZ_U`e Ǜ)`DhЂSǔKf*p.1YC[ 39*tBȅ'YSwgJIU`)¯y0UzU!xU``JO*\hWA_U` "Uz5lXH*`lw#*)lB)_]p :U`pXU\Wl}7*pz3]bLW U`&`Е  ?`U`i , WJ ,d#[2cx`ށW)JV$]7&^%,"t4zab ,\NXW#RPWY-tB*݁%*AxBi9*Ex唅WY-wԴ_e=,P|62+q 2+DVc| Xo+ " , X/+ c%ˋtBUC1Ec3V`h"-/X3cwf1ƌX FXt¬`<Ѕc1+s\4feƬ·@f%*xY`DYDY֔X.TAU{>`AT^BVpl7d%&O<Yi "슼z6" frSV" ;ٍYFbV`^f ,lm4g% /ͭN5؄|e ^Y,1+|{`VޱOɘxUUܽfJώYcVf%0+MJ-֔,@,rMN /"LYj "?*y%d%ezJxĈp)~YI$!+p],vrɑRgBV$ؑjzo Yd# IBV`!xz,&c%bˤ +MoQW\}pAV5dC!C[ Y7-̉ +'dn -$da[Y3I &=*dd!+B XAxE?cA~f`b3uV(GSHBVj FƊJXA؉Ftbdc2V;%c3` N'+X!mv2V$,( մ0D1c%尓0&XAFG*JCBVEVISRVH"4Ĕ,ݤDg#J4:ࢬ853LYۓľfd]桚N@D!lb J kVjIh0&J#?v}Ҧo߼QQrۤ}qo?; bw{|4}3^|)~n0w݇G?3=;3_W{o޾6N/YpAO޺on7]x7q9 ߀>:N7wKb9xO8b S_o?7)pL7A/Nc-Z4U2ܯSV?_5.a,HX<ǻ_kC-cr`~$/W~]//:Z?7[_qb-uX?o)/d|,RH~~Y||7<0yc0c:Wsλ7{~Xq76iq?,ǹޤaYpe-̿|\nܯ]ŧxyWWSw_ػڷ-{y|iq?Ӳ|rsJSϞҷ_x~Xުӱ˯?q_懠{doӲ|]ſ.~n_iug._^aa4ۗ@~۵7(ƄQ7.2,ɟ>\Y`{_|z itgcWa}>oҏ2h[>߼?NѡZ8iy-}!s_P_T+ݟ҆7zKwɧӕ֝WT_fTw:q|h{WMo&`P߅}^ylt턵?z%aױc>Nl{wCl\~t_Lf./A3ă8?X>_Q!@c\y; iWt]u [ו.|G/~_1V/.$կ{-ov̸gܜ/b?c?ViymeBd9å{aYE,nb'eA\;@_ɥˆߢt\?WQfXqyc5=1#d\C$h2԰E #<ID.Yt q"}'Mp".Xˈ"xʊ k#BtDSKHAjb!L]x;<ka:|n"`FA+ Lp 0C? Aiendstream endobj 259 0 obj << /Filter /FlateDecode /Length 1241 >> stream xWr6}WL-Ko3mөX3ypʔ-W4'ŅʒlG8Mw*a)c^UwܶMeY~-r4\k|Z MeW\Ts߁S%yP& @MV}-\#;~߶(>r3dG3Y{ }:cԉ9M]H*9T0#Bu&'qvHFA%˄-\Q O'ǜ]>C(82,W L3ϏU^<@6U@FK">-.5"TH:pm}Cs(#7?ȐNS249Sz}l47'ḤRꄙw!e3?/%݋/Oyta|$GY;M{:R.nhJb }> stream x]o6ݿ"֫Hz@ z[yWv ?]q4nq $#|Pv\ܿQu|}1MjrLH8ϯ;a04o~.nofUY5!xia΢%TfsZRIYnfuSVb73NK%(-0{uO؉FjZ5QAzvve)9h~.^ƵW^]] ⢸?C?)Tj!"8R-a$K5yԲR1MP[ђ t6kΏ~1arἬ3^UeHЀno0CJFՀfs”7-N}A`Ųu,UM1")ťTUM|a*" RUUxuEV5PDH )OO9uqşA&Q+JV1r@,ʙR_v-F^@𹁹l$)~@gn B@yFa ʐr.&E1nR\v R_# ؀gonǸR[DCvX0Fm#xpASAmE %}\e@;$!#t'(23lh4=un ks0MUGhmIY;̰H6`Ef`L9шc1N^{cψ`lΙO3skA8ӄ%/?m2:<_EnhJ6KAESXOO3YeTWEɺ(YVa8vx8BRȋBQLp° $uS4<h"N]Bv\AgOG1gN2"8a]hA5'8opH ?q t*):HR~ ßGa\%/xg0^~/%#p_=>S?"q.:#ۻt #z$qH竘으w>x"lBb08|3L7;y-6,")>B mȧPW D|dl|7N xw4`ӰOaa{wʇU\a($J"Wl68AGU(h}:*4J?O4 _=?Tv~H'N|"v9u0$ڳ/|ڥ 9eclI&g(Nnk(Eg]0hqklBȶyo4K5U$i/ oV1<-ahڥfbfQΥCH'6gr1X^^Ē@ul; d|'?[~iwZE>{|\ QgpAS!NC)Dz8]g S]iCZ|3uT @!1?TCL)+m$qwvu7x{ծ&qd.'su%Jje8}{>^A&QDJ ҁS7P/Q=MilmbDž(~AXzLtb vn $x WqPZ0y`x`IMqs˜vs_N%K25CY%nҴKxpCmĮ+OL~\n/~(֫qG 0/XZ_z|"L h{U;Zح,5Nf"^0s.嘸r^ 䅱HZ\8OI;u3!ϼI(5ŵ+A40+> <[i!lJKld2ă1LNg$_Jۋ~ucίLѸ( &WfCti-JOgj5D ګz ;/D/)V7(-Y@tn%mvt*m83Zg51F`ٸ d)Mc^M7M *]&#_j}˲ʩq@O!8TQyYa{{lz{i 8/xrV5L^uZ9b,:bS⧾O5 8/?ٹks4iH"v 6y3QCfGl IE2d W>CuJc9Xf"O*nۖw߿箋q,-m?Epy̾Kv1qV>|-yaN+DAjtybiendstream endobj 261 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 144 >> stream xcd`ab`dd v 5420q$caaG~= Pn͟?2e? ^WTֱ[CwϏ^o.9m]m|r\y8yyy6)endstream endobj 262 0 obj << /Filter /FlateDecode /Length 112029 >> stream xɮ-I6H;|! ܚmf$@"Rd/*IQ{j,B2zζvq} (D?Ϳ,|yGԏ?Ns y}o^}~G=o?Z~Fio>ڷ?}>Q'Rk,s}3>WDѧϿY>Ͼ*zGtAc_/5^T*/~ )~ۿ:/Zgmw^Ew SO%?~!?G'ފ[;?7ߊ}a?ot^5þCuG}}k}__?Sڿ_7_~_lz>ۿou=f/ȯ|ƥ>_~^7߿|qp?%sZyߨ^'ןCu}; ozp>ί}?7j?^__Foz?_'/~΋?7o_~_~~5ַ<0Z l|WnhKo?mO=H67ԃ>zl7WS->eyn?هf{'[?1>}+l6z׊?>Wng>O?/?oZ/,mG«{>دC:Nۿ~z] _~}n;͵>RMWa3S/Ǿ33\sލg%.wHxis UYo {DFD M@сϮU E\F.}f]),xgBv'>ux7B_FdAϾk͍@>F@Md:"9xgN'RyW W+s%X#T@ ~Hx$>fWn|/#w\&^}2D'~v #~u+潌dߝ%{#Rtc;NdO~] <3FNm\u4+ݗz-!u&gNG"0e"'_8eײ!:El}\v6c ix 6_2?KRxc[r}%A㴲!>vXs/$g7[Ka`x %/4 m##D+WoD s`:G.רy}.;\uJB.YO`# d?ܿ:~`]?Ȅuގ ` X67C }#籑tO"H1B[5_}^4.Q`),~ͽi\ZU{/ -gKN=d[6N`?Nȳsm$O,x\&oĂEa 4d[z Vv"+xKedHqm/F.~;xNx@Iha^VsK ?EoUeKy#-^/Air^{Re*]`q\) S񪗌b_*IHڅe!6ea%+TW'\х\FU;E S/쓎 -7V뉈4Y6A= ׹427`7!VV= ">U=|{K\uqUuO d6Gc8VEڞu`x`:u 7V=}- sݼI+tݼJs]^7!Do8^pmd{7"޽vq62D /ƺ/@HH7ucW ͎u߀Լ=X]~7R r;#+sBk} ŹDnKDž.ou?z+lV_]UՄ4OS:(=.ra'&-snp#0p UX5#"RmdjUḅ\Ug[ LV=rv= CN`c:^FK7ce;ndq_+Ly"u˂@o$7UxH}G QdBԊШpB èK("R7BX):pewK("a%rꌢ+p8X]UGQF:ZA= _ ^"k;x=7Rd%7 *`W3,F.gvY4g2Ғ˞ >xZ2/Ʒʼ ˾Bm$nzV>d^6Bx#CWmn"UNMEbO!ze^zɼtK"]6}~0@m]֥Odɺ_{yHB/T`Ђ}ɾ*EȾG hiAw#-Oy ٗT}odMod`eoYi6riG("͟/{Ț ~)xKdEd !Ojmd/Hy6dhp'n! k@,MjXDMR OUQi@("E?ކK[zgȬV^wF{тaFoɼlDg<-=k^@GèkCc#S֥f*˦i0"7-Qu)Nld훯UOg#;l3$YڎU->R'eGc1)`md;oK8UQ+~ SXΣouQq_TB}mj@*.~eʣsT^4!U2, 2:^aD+9+H5TS@9a_o.H+?;TC%J G\5A!ˤF#( 7g?YTn91~rqtePL^~775ol<-o # KN(yڻ%"'e/+]~1ڈ2" M}Ql˸׈~׌6ƣyӷ.&i*x,MPGxpГ XTѷB! /EWAm$XA 8PDWLCN5]FRwjllHݩ+ѐSoM\j: KN z ie0&7BM@ـUB ,1`BΤ;`ZӫYaDû=}6);z4(c藚!`G2= !p);0;Rv̩ KБ #Nkp I=.jt b$!,GKԎ Jp vt;ٱqE ^rvlΆՎ]@#eلoGʮQJWuiutd8JSFUR𥰺#kWO;/&{b_n27Nݍܟ M #h酌ˍEFdq !wy;&,L_ sOrFL_ᄃ mWăO97) C /ăOf qaFڥskkNx!:ϯO;d~O ' yHM8o-v1:v|o+ʼnHDWu_:KiQi02HۥGޮAn.!oWltU8yCڮT!+$+]bHo[cmu8ӏ]uNg A{ḽwJNgC~wld/'Jv[Ύܔ}}&r1|Ӡ>ݞ5#^g :2wrB]Fڣ QHݵ6p/_#q 5:z_[$]7]]t~F~;zJqn}ˎ]/s#EuSKʣd9;{ơ ’/DG.K'2;ޑctБ˙E _Нѓ:vJ;vq S;v6y;,M@ʡOGn8ZF|"J i;PF yadiByj#o7ԑ+0#qu]1s_E}o~3$ oH} }ĺqn*r񟾣z,Dߏr ׄH{Im#9GFZqכM$W{"e=@u&~E"x^\D}m^*mc~4sg%m=<3"e( X/9gVؾJ&v7)38_{- Y`=D6y"GMyv0==@mP*؏vJD[.EޖM۲wr( @D{̗'Aľ "zGe!bJn\"K#@+KtL>m2Ä\Ѧl]P|B~I#}ޥ6Pb=N*T#KD]"4/d9daPFȱ&H@7tǻ\MO'# 9Dt 8Da (-qA: 9uv.D;8VYGECvm?c)qLPNeHF60UOEuҋBGDr(D"L"zfL x(䠘g"Z.A}#zēzB޹"9[MI9"z?wSn "g9"΃G*yE4NsNzm^s;BR;Q$i;DDQ_!vKH浈w ))}/*Fp_bFT" OɄQ!2SOf$60 ]"DuQ:|L\ Ն%gn8CذDY/Hey"6S& }.[(iro^erٿ JAܛRm^$l_ʽyV!!&Rl`y&oD/HyF(q^ok=_׃$kF-̲d)_SzPYC B?xi/$ ra,r qu,J_ P_+ǎ*uBڱ/eEScOl )>§jٕNEnj|vSY>>Tn{gC>gjO~\Sy?~Gkr}95>^I~_-S:d+lsxzxI8kƸKd1oڝ2$d2ߍ(UOvnyOȢz0nY}ܡ sHU#_GHѧ>S=%k&Z/=^{^!^{^?[DAm=Ʉlz-EIvdٓ"N3%V46Wi{<$5I)eP:p8|Jrl{r^٩GDM{l߲)PI;7:|J[*?q:ݟH[uºpWBQ%IkA-gH{fnxѣr(=+upWj%%0:LgG*uk4@u2KDKDn%Ru~$3հKD=}K 1p0Mø{qc> 8c>f"v3iW{9Jbl&r۪I5<݌mT \Dtęۻ hͻTķ?cCvmNb5#!0ήu"rgiD8Is9NwڋNV?LOħڛ9@D[r-yT.ixĨ#GQw5p9Dzn(jΓdX= 7R"ޮ j W9 B^f /x^Hϔۓ ={yXS5Ϝd|?cv`[o%#酣PNҒr3Scɉ\p{9zD`/Y"yç!&7sD&yHi[Mh&WSD`4ɽ=};|5UMMOsdnGPTH9Mo}g:*yjSEsϬ;*#5Npydt')pUrD<B{[Ys&Z's0?(H?9%Sy'bvty4 $/h7l!8OkDL19]꘢;"~a ClOc>)5u#f$;:ͼ ff)N"&2!Gspl@tҖItqMWa?!L{~Vacɞ懱i+&u/&raG! 2<:ih|1,S>l6(i?VrXqE3e\gMCIONpɶH>ȂQ ,h-:sh7t菰@EIg()óA:\LN%_>N |har3CLe;CBQU?dVg^Cuq֜yI5gm%O?,^R" °3~H\!$J@ <\~$rr$!ᡥ쇹r$a[=n~(2[hzRm`q> IDgVO bN}A_7(&(Ѣ0S)1*&)L"89Q9M=[R"-оW" ) D}h6hw J/$}!}#|/Ĝo(/U"z7b11 1!׹d=~#y!&/=di~!fr~ȧ?<>oHRJ?oUN?o^2Sœ5w:Y>lϊJg%+HNYI}$O$$81S?%dɡ,g´Ks &7=:!rR?3Y֏MMލ=:\=ɘZ Szy&Q(&mÈ?b6ItСIY}s?{ϙX8 wްT8rGGu`DQ&n} H#`zDCQ8bLGk!#p|#p4<ц:_<2;UqԲ-/).w{$1|d3Tiy@R~c)GcEr@֑ 1գ*ã;lT4I"|:'FHeATSG%Wef}[sݏJјAJ:22KiGh&Eю]jgꑴY}To֣I;zN> ;Gg3~O>?9|D֣)mF~t w4Vj#d08rJΧG Iyr,T2ӣޏ2Sdsh@eщѣ%,#7uᨔJGv%]{䯒2#]B m%J!ku%# AWQOp؝U-l?oF:fGJjIDZӥ[VG}j~4?NrTN-yd#ۜ}CG9{PzѐݚGgzѢGzbhZ){=Vj=6b~=vdGQFJS'jh3bo$u >#M*ϑ?VG|Q2яTϣlJ7E 4nYF]dx`' 7] st$`R0k/$<(06ɒ؈J%$D2JUOH]'N2wnFOMfi?2\.H-"%oĥ Izg{(z*(UM!ʰQAMN$h[P@qOTaD:]wnT`^Q%;kJČ;x7U'萾}f݈§@n1~>e=|\GyS97>*sE{(cs=`w/^м/Q[[[+|H}[<>*z6Zۗ#!_&ZNJ҆ϊjU׺Il{6BvR;_&uYX:Ĕ-VwI!UՔlЪ_ldcr_Lly;<]u-.ν٣ /:{[لe=7pones{FwpDн65'i_7+HɤSB(_PCG.pdzt/Ӎ vYj.Ec>#_,R󓿶O/8 $"|>5OO@ȹ9 W2ߓMr"38_R38ĢSB4vRI`:XjtҝXe&~9;,()tqsP,SʝJfo#LbA|W9.v4w_Ib9rHB,OM+H\)YS%=ղ>bdN>O|Mt8ya1Tc {ޤ j̕DU ^J*+Ӄ"=gB)ZyL'&hg P!ƻJGgV(U݈C,شOGgax# %gFP1Zb\ވu!N|ɥK+ f̞;b˅x޻"4@}I{2gUAm${RPt&HqelJ؈ݗl\"W67tƹ!TG8һ[$iאJZ$Ӎ3^adUn:PGGoB>:[ct\= #q*KCt=jAQ Y􆪓SQ~~2Liչg Sr_MoO~zozOʿ^ם-PHvyRw5AĭERR:, ([6no/۹ru@uc"[STdR:tud0#uH1F|E(7vQ\ Fƨn"X*vόQnS'ZRMvFESC[Em_s6pҺwn/E'Sn# ;D"9DJ+ؽ|gmsv$UG`.S:;2M$ɔ8ܿؑ[u'ꉽۧ>HN}%%\]ΖKQN-#a=#գYݝl@;jr(ɪ3M/>q\ՌڑB{UYMRrQng;[r`wnGJfTNyI>7nD篎`fwpGȷA5"_;<Uw(lKRsG9JOΝDt ݑ\FAKo;Ja> ۮ  :gݼM$[yynNMjLND]7' .uOD䡹N@g7h uH< tjW4@]xMQ^؃ aI۫i>kOhbC ' Ox|f7~a- ρ=WY'(t{ǡR.K Ot5OxQ$ ҐOY %iEmg4Ckˆy8fNNh iĈֲ0BAsJDF&e"A4 DHi"#[㩩* OVqWY+N9|ƚr ٟyҋTb2kq`H)͜2\yӞ]#w^-Ϸq#V3pezNY:n+Լ]F;.9d>Vw8|U!mG2ǃdXfe3n \˩ȎEkrr#{#/kDG 9Ź' Jzt#9tyэP͔v{oN*tO\XC hm-f2PIJKn&o#.'Ex@a@B"Z}3$bp?ZG`:(/c2܍I4? Y'5O@6e qXtt6t#ZD10zԤH1]F櫤 i7 96D DD?7_Lof 鑳w&O 7pG@p\O:p-SqQM*,VBWL.Zl$ל_hD>$քbQ)f+=& Mwouk9­`߬8ΰmĜǡ*5zf1SjC5)3y96eJL"$:Ҹ2'POI=D]e"N%)(4G}d5`hD'Fu>bTȌ8E̺d13kDDwۉ8b1F9c(Ha+QMQG2L,E(O.ݭyDdF2}V_GA~gZ oQ&I, ܦ4|=ӸzN9圄a}kQ2\eUl :}[RQʼcAŔF,_:[E%µ̤)[_Tnnu|?n,ܙNpI>uS[rs2\e}9MY9/;ڱ&c)79^ bI菉N"~']{u8 Oꂘ Ȫxsd:L/;qDA1h 8f$aYM(64 HCb`<÷GEl&h 67cp&$ӾW6K&_dU?2ݥ8'ӡ-e]se!" t#qafƈZ7f0iaD1H?|Ag(;ڑMT5l7ַTr& $Ue@0%;> II*IdeLv{ !j -2}=&ezsnJMYI%E5ꕔjyzLtyjECL(%f٨9r^|{NJ68" &Ikr׊H7P5l7e) -0qX Y}6$ İ2&uK"zxM2aM_,"⨇dŁV\&4zMza9^<9j6&2{{;FK\Dl@U.ջVy9Ӂ4עVQ7u`}i}"gom̕(}#w`QG[էg. E(,"րga*y1oc{3+|н1s| ,\>o>ZG$I}t~[JBȤ%@7:R(=gV?qz?z_OG`RW^/Q-.[- .klE٣wHY lt.`Ǣ^RDϬP* l$HRyVXl!\ ~6E(@C !\?|&@! `τve;l " H( ɊYEɳeK "y׷3,ok}~ ޗ Q]ɳFh6 {/i"Pŧ+T ,9>nZrp$—Dbn{$(˻]`:Jl1|g|˭#Yf#N(zE)kTʔ|q<_t¥d`#nfP'A#D+*Bmöt+DkhyibJD޲Ѷ3N:GᖍG &]*Kڈ;oRSI[qT1d, xޔFFVI* uk(n(z&%Ԥb&[7r\Ҷ #B\Ȳ'` hߩy3iuXI+zGыzAEwGY~+*RyX J?%2:cR)P66";~J-3Jm)n7gmQ5z1^{S-f&( ߕEG.4uim$Uˬ9G]r֥ $]2V;p}xBb d-' @G^i)-M[o>K[ݚ~;nR77-74 #2i[=0ܖ aqa$Sxѧ,[xAg@ 3JݲZJtY}1Bc Q~Q^A2Ο#ßat' ,m=p10ڥbˀ,ǥƖ4?YFCW3Nr]\fΠn=:K=S6]2}QiusfڻI5ji'M;^l~QqDRTQe6NGjGITa5~'L*2h[v8|˟L:KvzlC7}% y5WJS^lٞPݲ=Z,l.-:+i]#K*z.vL>*[˖"}.P0UC3ׯ;;0t(^L[X}v{)Ҁ-7ǧ2DN60-j\5S6[Q n>K-݈ OܵԣYgi[}[*,i_R5ܬfM}rJRbSh\dV*WKY2Yo ?I"Rl1pvʥγjM\^=n@첷F@|9Hr]½D+uһY˵fYղ{ǀQks4# :ح.bs˳>|G!4>t;\rGZCwz|gv&+RX#çRN݌P > Uh?C *| O[I)<5SǩvܦraӉ4'l:2x੻&eASw>=odهXB=SRRx=[NQ}Iƒ^n" y u<7P|b'5Y|VGmTZHN4R pᏨD5"ߎ,Rx5a ԘņwOf`0O?Ha[p{ol>"P8]0.3޾'9!'g%_6%}1|ڈqt9ߑ?T($X}Ct`0*Ę;*^m\ǿ5"ޛ-çYe>?n4Lk1#}ׁ ۻir0bVַo1h!M3sT0\ &xoFP۷ }5*:w@s*1a%y{y?? pU7NݒjwWި'2߄}C&rw64oF.$WNDǪ rw{n%[K5^_K|"h..G)5t:vvdc\ۊ~!<όn(ւ*㷃pA|!z8zݯ/+{~#gmka;Ev6`\^!mL9ծ rEcnrlYYa, Gk{1W1sVN6mO;rlr;e}m_;{ dX@{ z+abwo75i{ 5zj'ݑޢ6C%-2Pvk{ Վ]]S0]_C֗HpCo\:vvdi(0z[Sp@U@o/vhs;STrFL W d0қ Zo '&vJdtm5<(&NgHMpW&]Ѐ]Sn@oEd9 ,;a̟#m^QQH3)ptŞ (-<=` hupZclJAe0PH̶q70SG;e\\od ,:꧘A79MdzܑzlN3m*jݩ0J8ٰ;sJHRS"Пʼn @8FyWCa],;PW&Et'tXvNI@*zݹ#Vu N/R%ŊlT,܅:ٙ3rL|`Vdjѻ/2鶑/%r#{Eq:Mf*1FԮѧGU2%In!-W-wNuެ.3IV:C v5 عAsW. b,o`fVsÁ;[qo^s z4*UdupZ@K\KV%q,k8<}E5F%e6jgR(Y~r(+/%=ȶVqrMp)b7q⨧#|bD%LAuʘ#OmDP.Ab:Z>YU:z>zގSY0l\w]c 9mYn/" f]9w r2g폲YD?w>R/,koȂKGT&72s~.t:F(.OO:Ifðpi~oLʶL://wp(BGc@E74;AN&eCX-eXf>:)@#݂zv7pNFq q:^j3r`nQ&EPI9ACO HfDI[ƝV} M}]_z5RN!~U@Ԭ=X iT9\@4^/nSD'6F>M7)&>OowQc;㹨tuIq_޼R>[1^-@͞m#<5\e5Kd(ZTZzi?Ųw[T:Xa>Y01QvXX!f!E=mȄg-,=v6 ԍuǴ}aK's|(ZO_2p~ɽT|ߌG-Hu]ؿ)#+OH ӑӍ7?P=؀uMZ7"{1/DZs \A횰^u|ጄQWʚ}U[瑛^d&єs=M.N_C ߟitDFBSMI|'ڐ˘So}LƑR& =;d4yN&@rEiO!\ CHIia\!r? <(xA`8"sd ͖wrD)n1.ԏ $a@A  "@Ԛ'-BI@JnAޤum*X3I5.n"N@#3y |쬾 i+(;A N/)y: f kfUktEY)SnĕPI^'uG0`o# \\@#DJ$ *IBz#YVnњ+Il~IڀT/0̩^WҵD,qH_Lr!}S-M-=$A@l&qthj!*lavWdA+i̚tʓYgݹm'JYЃYdYR]lA+&…C8f!1+k:FK2!^2ҪQ%:/lL.+'cBؘa@'N$5Լ(٣ !Sd*%Q41&~ez8bk&aBP̚oL5SO$TDm5[{$ج6kkdb|/lCe2xf2[īf3d{iLn~hF%#F.6;y ڬf ++mS=3>phg2üi2?֡M, af|ּvh:UB& J7L`NՂ|H"ay#TVxc/<64%`g6SƁ=}RHjݥg! KF $e%Ю櫲Dʀ)нfiWyM)-=O 68e2<4ڨXn#q$9"k$GOL߲6lQbdzB}oTFX],VV=z& *F9zsS(*@*X5`²teZi- 5}r/R^MHK(ue0:Hzl"Ny @_RK74pd\L4"IǑNٝލ#̓ o,3vJb [kH r%K aX9kfxF"/:T6mŏPԊJ$TIuSC l%h Xi,Eb()G<4ԮEi$ES)ndS;S$bz赐.e.?nyɴoYt}ut N}|2`)0qKU :61E^eJN"L:`Kj<%`ǥҌT o^?m:G 5"hmfԌEa;;t|e- }ު#[:-wNy7<M2pzJكH "9S80,nt(}(A*H wUQ*+nAʊQA5&/KM{d/]C N83Ϗ=2w 싺Vw'SAo}gWCk ?3մw''UA V4* `gQeVϺ [* T\GG h Z5Y?kӸR ) Jhζ@$tA4_Q.el *<%6.[nTـ (KcEK(x61-xq\:Jxl0,ny @g߳m[-Hm2@Yl@9K`4jdmu:j#怵!"|;m>vnwNCl:i+hv-Hft }7N!uMTFMY&#Hh:;Pn Ԁ@J4 9Cぬ! o[]5 gqd.bpDٓSn2"ņK-U/^2wWt0a낭~۔~\3)K?4߷?èi0{M3h\C:p:ßa40jGq{ ?p}\㷿q;Ϗ1}"ڵϹN[|~/#VȻa39#:Om$GM~!0f'/ Yx9/K¤I;GP=b"ދÍX$˚%H﵏ɘoz}]mKigUT8Lrji8Z_6xloǸy/@E( '^kωd4#F)JE2T|F;p4@ _j1 O1"ux6z: dB G8Zd$8@A⠄Gnd9Sx[ 2 ^;`mt% G(}玥hH;/)"qn+jr?p ~f`90@ޙNوAv2t*}>j;{ďΌ (l<Ϊ)32Zgff}LԌvvS's62Hghd]7;+wniT[ZQ 跔,Q\L7Rj)5͝TJpJiN }snT5e1^g7bn98ДQIQ2m9;ߩa ҟ.&N:z-F`wRցڗұq;Qż鎚Z7s~jvz,ᔚ 9=BYI}%f7WΜq3ʫLsL%{r6+>#XH0sSf`@˧¨W̸0H|&D\?P%a@?LFJN2'RJsi[FQ, g5bJ @r)_g@. xL=15jUTYLQ\g)j*dY%G1v6@6 UTv\%))j-.PuL5AΗSsN%L%t\T.0|tT.݈:0`Օn@aˆ&Hu;8(tbɈBR_$vKx#pw#fFS^B ᪭l;@w)X8}We<픗;՜2EQ%,)\Iq{, Jе]`ةf\b*R?buz%j˖ : 5tDݽ&ܟAmAP*p)20j FQe&C]rPByH/FQ"ݶEƨ%-nx414EtFpQkV^QK^ޔTLʨӍ;; 4]`FQF4VYu:nFrҕ*)ҹ3jBNwϫ0QKt )AL;^t1~WMi}Ocyz5IS+PUv67OcZCO?-s |]ansب:mm-[zQ-mlm7u ¹r~`Q7ʧ;5 myf|мm5a~GX_/&Q|Yp GmdWt͖,_s*Q ڽQ-'hg'>Q[/$ӫ)nQ3@XR:ۿM+R64tӀ:Ӥ*';Rhduj;? R|34;j&)WK_VN¨-tW&_){5,,.Z7 u4KZBcEe)t3ngWK%݋Y^Ynє݆nlCǶy1 *R:npkAޫw7Kס]{UBMR~zޥ᮶ܘvs^ 66:tEcin2pOS~ HUX=z*W< 0H.vʺAHLR|1L!70Rd(Gq nN23>IT5Wϗc*`=b`19|8<¸19L "ۻrI$_j~[/Ia3N^=5y*s&Jq<?\q&cYRNC@ƻ>%#`{Sb=W 5*3Uo)y 2hDO|G(DOgs KaDi)̠=(AU T#OB[#SLPs'P eX#.V@ KP`n 41Bnw@DP5=em5n@L."rAkdG&42swA `Vi,AP~8?cNvnTFumal=H|HzKˈ +b~,d@)Ɔ>1_p#ʇ N(R^SA+0|֡JCT6n*(WQ c(PG]H:[@C+rVoTjd^LT2dP+ݾbJmTz?)&@fz6*PORT7eOR|U;BCG}ZN.=U TMF+2]mہ4@T)hG(;ʤhyUՔW`]}-8zRcΪxOYȶR~;jCKB_4Pt6iWx_ W^ I.g*_)^|bn-UX0:~aܱ _l^@+K-Ǟ޼ 6Y/5PЪC6.Z/>RnOe4\Ku{/ $[JCQTYWBpܣLy@-evKmPGM"wܴr)K(6#[&cӥե_r[ܤ#w)>Đ?{_GpBڳ~0#Gq=~y9фÍ@3O >k>>tYHz'say 7R.vN\Ҹ+|.{>. 'ۃB_X8BHkoAm,!A'VP)obp3NRذ[53okʇq w{qR6^㸩Vk' l";hý|Q!qi瑃Jq<N#) Rl?F+zF:8 }cز1unT}`$a1Rtmbƻmh#V5R09ލoP✳vIqNʿ:u#fb6ѦUxh0z˻\DN=f ^Xij/1쉴WM,F:9;-_nIk3G%}>m4z-_&X7~ܝ\¾D)̰[NR+۔̹΄NZ:8)Ud0\V:)Nz8moȧ\O\V,~JFzbԈCrEPI;~EN+P$_r4T+9oD4q× E%K9+w^v s"T7:SB*EXGYr5|Ri T:8I\CG Km7J:豉wSEa9U(U{ q/*bxK 6HT:tΌ!J3vU_SUPT#8U凇 Wxgu5ŋUE2;תRtU52ªX}2Ua' Z.qOv5 W)D3LcfI(Ԯ޻\4֮PӘo?mc4Z0~4 B?Kb^<- xW\Ib{ǼUڇVZ_Lv\&?|g Uv\ZĥV?Hn^ӿ*WCK}j(Dqiwhjwd^_˂;fuUp0{TFVǢva E_Wf]Z*WV{u픆Vw#"-B<6Qnnki8Wz4W9im*"ާycL{yQnuk\B=Ku)_ejybpOvM]"ʮT^mp@6!r%ճ-SM;=Gzu^k(z?'Gg?/X=~Gz~h=x*u<|Lsdž3WOݢvrAr<T*ԭy%=ǝ;XY E.:$~N:gůo꯼=T.Km}έX'/]unsyߞ۾e~ngi:2TB_Y~0=gWt:-tZ9^r3%\k^t7GJy ڻhz.Ry=G`!Y_?gk=Dď6cvg'vYQɜ_y礰ѹqvW+}[M٤)_Τ9wʮGWnvC7;ՏM^["4f\!COpD9΃fe~PגO$qhe&Rg_`i% S++C5e>rOĹ{ gz), jKex 6MxNJ`.a$M(3J=h #s\->mܕX^y kGPs jt|YYTte4i-Ibdh'y.Q~ElQsFer^ tԾ~I fʤ=2%%I]kY"̪r݊]k\TjMd+Vu}$īUqIr{U[)*vx4>ígDґ!+eYߕ$5`s^(l)9EUUO*RÅ GQMg!D~T=N4fjNR:DPΚI䕞Yo™0KQ\2&* pPţHw ZhAWX䮛'Yt|R읅^ު]>g}r@:ä٪>VI$mm~.^ʮF.EXOߪ"חJs j8K58ԞXh\]F-Nxa\ ~5:l)TIޕzhTKMſKOW@΁5Qjqv B] u;j&CJqx4ouM8μ rw*Jqgbp{u#߯H꫸mtGRAU9Be:5TA:̬>qhb >bwo!&D4U{9IP͢r1?5G&ޘ܌I{1l5,'>0:*m83!>Y{,:'D@D| excG*cr$w^RL,A (|DةC8<Mozhj8Goksr&y-Uv,OFO&ix^/aҒ26JE]*2*dJzSu+HكjlA[lg8RC&anGUݭ0Qp *6ugS2Zw٪DX\7ےкn)Oa;!P*+ ϣ Ch2.Hcv1&PgWvYȴjAa劃pkf6Ko1\*F\'LnͲsyŤX.n] Rm7>[q oM^V 7Y N'&{Bz蹓 )/v`}q;br'sX唇wXH 1$+78ɋ=Ig#GS;Gh r/W @I)T#O `J) Y|=BbP.L 94IS!6'g)eXCTJi>&J1iT G0R F>WV&~PO@uZ|{@OV{T,:V)jϗ(0W)o|ն c+e -'*ggS&Jr+I@R|U{@])6 +yp b)v_K#د壘GlſŁ+?=f,~$;5@= ?l缀;B\PEzҠeFs/*%Ճ 2pݘnĥWn¶ |YZ.D^Iv+sCHHPԽj5OZbf..5@k?MBx)~P@@?PZ{@g  R0X$Dc]i1);yT*tG.Ӂw_Ewt֗yAAanSM4V I^v cǼ" ĵ!H0N^.c@UFh{Q4حb9f1.ËkgGL14θB=s<7.LGGZJ:雷LjiP:*?RQk(vR3U|^5GU8kr!SViujēgWsdb2 ?)`, Xb#AW2+cF\f2 S2}o/Ξ䂾lI;n.D?Mk7UlRoe/rHud}Z65zfl:Ğ1ŊQ6+Zj]`i[>b{[ m? 9y:6q=×YNk{qX1rnP@,Nx;)L,rUNt9/O{bOwy4pm@_9W)XYLz_p4}p/s C2~Z cM]dYm? EōǰFe|Իm{w=R:kw> ,[dӆ\OP-@ep?OƫE]Eƫuq?D (ū5P2bT0mUUQ4ͯٴ ւ{j׶2^+wp2xO}7f^O}'+WKKq~혇R:tëN=|?CUӈnJ>^IK iW9gl1l>h+W/~ץy:=Oq:RfIO;QeQt$_e{U8~bWX2*7RϹ וS9~)^YO^?ۅrx] {Se8|Y]/ūelT@ ~MmpƖ O8|#mѫ8|T'JWT^8??޽x㞊:rN3GtT(jp4L*[.vz<^mpF?/ǫ^yZ[¡VJSCx x+q-+ fӨ[;@D^-/բ!f|̬|<*#gU%(<|}ۑ}9?.J^#x{L'yB|ı_v\>~ζbq# Mss2f&/U^r'SiM*7424Ww&]s{7-M"ΎLGhV lF'bnXMm;|đlgdBJ-^6 t׍l5^{\l W&lcFg}Tɉȇ[lTFq0TE1GՉJ!B!J ז@6x3Vyz7M**zOJIX9~i@8CYѯxJ|@궄#'\]A3OЌNp`vݙIQ6[ TQ;f?ENi1S/cgW N1|4ITf{$&hh& |P?vIʇ#1Gg;[B" ضf$*{5",=(+tτ\9N\lG5?Ya9 $83X9݋#{vl+KHړې35:=ngXu=H}VB![._2OY[}Rgν`cnjI^xdn>I\}_nϩoCg- oAl Gұk]?u qN!ص?$Su j(n,b N-fѸSJ:BŹ"檏`rR2^o`>)0 JGj[vcezvۃKLO:5ܐ@MpJ'w5;;*R kRoqձlؤ(jvER8*8lҴ@T$Bj.hoU\%+=׵]A}R'5njR8בcE/E`LzS 3AǓNWǥ A2Hy]]. ł"*SB@7>$ H+;\Qw-)^ s BH-! ODEfՑ )t9yCN_4xHA(" 7O))EPjз"nmj hdlt=;9Hq83ts#%~n ‡}hQb$5x-OT3L>34EI8%kn74`I%HMZ7p^]Lup̕] Wg7x,?q6h%uncãIHم`t-KPybY n-R,Z=ʷ=3c6fwv%N/kKq_)RDp^"`@8Pb ) .<ߜjjAga D}@? AG!?1HR<9L (Qxs:=#Cku bNs2KCe$se3=cᙞ<h"܋3ܭL}h>w=m7)L\0='k8v^<w@ͥI=/w<~'lJh05֟C/#@g\t<<@\<僫™ӛR8(c7" J$ï6<H<Z<lßqgP'mJ0VKu^cuC_ו0#Rdȗ}하s;ŀC !KawB@O2,4LƒoBM굯x2C߇ {\-6!LOTgr{tfOopm2o1z~W"s+Ȭ@_r hRN+t0V . GJP \nx'pDN/1p) \CBL"#fqlNjÓPk (RCd?kB/VX`)&B)Q~dL/Od(+h3WE\?`{H 1QD_PDR/ȹJ GO HN`I6?b W = ^!0䴒a=)k <()fG/bVj8))ƦRh4VR:I R',b V[-Ӏ#47js !{Ia}:]:]DL9|ˀƤFZXe:?ឩ`z l4)~ہSXg?oT4M(Dxo*Ih .0Q"|N>k# $rz0u|x~ ߲ pU T5ONOP ѻb GlC97S*z(gE)|CZaR|uTq58=lO!jL#د9pB{NV)'V0$gV֗Japn_-NgYo>kTaje XHwOIg]zKK$Ӫf+ZJ5~jFпj8 p@YU]/!8 u:pMkO&?) iv seV@mK1.9X 31-0]. R| [Q ^|Khتd&puRx7xb r(gD`DLlbKx۞=$f9 ʪFg*V1.j>ajq_ϗzԳ1fbyw|֥v=A=tbKK ڮX=[y&0g~4x)^/bI*/fhճWy)0ҁOKzS70+bo٧ܤWՁnvRKq R|i&?-&q?vI/K;__F~uGabexۙ-m뿝G<`l3h}<J1D6>\(Pa3}G`;A)|JN=W(ېx0lgi(7k/O=SpZB7kxu}bRO1OBYl.f#(eL~ӴZ$Xswƾc.oY|+Ɉ",i"n"4 GJcJ2!iӸd2`L4I ijeY8Ǝ wl0i뢾TR SPc&unZ~iC3YuӪfJf⤦M)6̊+N)sDNMw/6.MRlj#Rzv@>.Abwb+4izh=Q)6TѤNg~p_j)}b} j m} AR*Qž}kB~bB QR=\gkď@58,~0++N7u=q]1(Gk?rT*E(b.;uK2sq\B7wεsAq\T@Zе&e3#9kZcq8G]|O9}3ټOsXvˢ;teOi]XMC] Rxe<`gy'ZZko\O8'Opm=rd? , >1v_~?;~xOĥyb׏=e]} ūDٶijҫD%Dok6p#_J5(<^*טiw^aAqD1QT^`i9DI[~CTIL8IJi9g%dކbOJuR7JJi AAU.%c#fٕ(~V&o'gdeRՈ"_5b#S TY\V$n[W b#&S E.U.OߘVߚ#lh~ZT"oPDd߇5*ͫx-0[@%*PA([;0* Nr*Sy`ss'Աq^zeN>/pdt8. NCt_u=|3>m*Ymӎe+?F Je ǡÂh2y|܄O@Ky"Z<`Œ{ Z 2X^)4k,\n[m+OKr=҄2&%~wWݓ8D/Nrn~EYFW N+T_#Wz/1+M~%E_9& j~%W}tz_GV+7XڭXs]tGr7Ã[X&$y ,0^HIXzU|`7WzUn*,$9?W1J<@7+Ͷ5^(hkZK1r7 J-$JWuĽ+(`_)_c_u2YƯA(+}1^ůt#|}dtJǞ_nʻdQҋw?GH/Z3B[ql W+`齓k4v^E#0~_K|Xz=HFkjKd`F7^D*_mWzbQzdq 肯t%0|+`+Bڊ`z7jWZ/aF#WZE Ҟ}IbҞ$`yw!<`y'`yXړXx,~,<ݯC%ݓ/iEq-hX E!4zXx{6  :nXX^v=a*_ḯJ+E_iWu{w+ E>'WT(w1~E"~+ž,v/=1D0~W^ܞįv}ǢU^_Q~3#JҴҊ O6~řQ,H:W9(Q J=௼$/(q V1UWRfR!T^aJWZ}^௴M1Eiw) <`iOJ6:4W VW6xUz| ^iEvv]ie'+vGQ䊸VMsWZgb3wU w E[U}]iu;DlL]i`W-`,WaW2ؕW =Ҵ{*yZ]Qs'+cx~WVwWZ\Yf <9r)cL;;WZYʭ: *a^i V*E^i0*#fJ2+jE1&+$u{ 2 {d̘?!\bʫ4 U+R *_iGHsuI|/RW$1|U@Wx|E /CNE^kaH_SI^ }%IbK_Q?(?})8oKbOPHL_$[dR-ƯHi Z?Չ?^Id\z{E T_X9c.6Զ/{Eލ+M^\W>.7 6yEw8Wtgx/V[ 36 h!k<-&c^g>ZW&N +8JkREG!^Ʈ(y`W^&5z5vEȩ],`W bJ;턺7󢠮J+'`W O0vU wv ڈ+3IDܕ9*⮴-A1wEO宨YnrW ]y'\sW+X~:>7vѓ+l|]ю] vQ]Q]N;+Y +\|3]i**-$cW䝍]V.ꊚ.*!u9~;H ^IoW`VԮ'j*uL^iRx^ X+oh T&Or[Wi\:W^ΏPw;++gckyEA( Ҫ`{UqշXp+ɏcWV7+ €^Q aAWD7+j\VuAEÞ!򞪃T+PǂҪ$(r0:>|W{8 ʫP Ep__Q?܀!e_qWZ5xJWn `iU@(*!,F*P᯼J/~l͗ O-is|W`87<1}UBq5.4mRzW{vcqT<>NW V+Jy ~+vP+olr||+f+J +dxa +W 7ڿ<>{UK|E^逯1|eeV_iĿ 8|7ݡA}EY]+M8BL_yC_QW^!W$W^efM1}x 9 }UIL_Q+pw #8xo '_Q e+J÷1|U_OOB_Q/W3X3XړX紃W3ҊVÂxKGBxKCfPPைt`R aLWOJt)b^Ci eK5`X4rk `z&`GO],퇿R.0i௔LXc(J,[rHXN+N,RDB௔ag_LJRJ19hΟ\`RgZ_{V>h?_&_e쓧JM ~eC ~e0#cqWj n@c1{O*f +56P^ra7Z;R& Њ+GϏ z'DRʑƼ^QXW<bJ%H!?2z"N)oWz%+^o^V5hϘފҫn*@ǘe?1{q {WbleZ18C@Z်N_HWٳU+aJ?n^WzS+Ϥ^Q~&+J JybJrfX+|&޶#hWzۨ<FZμe7z&X,0U,JWz{5*2^yǹW` u+D6*DZy@ڛL̀2!@^+0yEmROL^U|+]+WzEPKL^y'$^ %tM J+j~D5cJfޠWz܎WR :+ޯ} ^1xE{#>ퟎ/xE{wW[J 䕮!23@L^yaB^Bed^-T>W^.ԐW^>ƐWzy ^ѮWzKL+{mI; *d]酒'klXP N* Nҫv~+C+ ?b/|mJ֩\yW\y=gJ׈ҫ-2W(@+ҫ ̕^]N^'`f;7e՝d^Ý^H>0WP>U+|M]u$̕+NTPkN%xҫ=j+s=\y7דbJuO6q]dOH+2A8|:Α`芲7(y+r^XAgЕW!eJ+7)+ tE._\@W^ō *d]}@= W^ W49KWWf)B\yfE\@WdE+}G6FzNzVF\kJqWk WzCe1rEI^>̕^[+Lj\so=ȕ.vq%.\v+~0WF*1sk8߄3WzMkgnŽ҄vk\ wI0WZt4sE,b4 ØbJhߐ3W4iJEOOi^/gJ{&J{C qUҞZ`(vҠNŅ'k(.<=A\i5e ~U;]pbj^H D^E\ \i7VVA.vcIJ&`+[iw{*MA[c h VV45Ni(.::mh+PܴiPSL[Y hmEs '(Nh J}WQ*{!ƭ@6}q+f*]Uܸ7& {f(3p>r\y#Wދ,H +ʔD+M#;@ 3xx+oIAކ;}Vj}? [ъ+ǴBJI[1nE$ظgWUnEŭhnE @L[s3h+zy mEޟ M[Q/5hA1m}wVZ;:nm B[yW$ō`J7|N&Wѹ2`hˠkÈlU|i+6ӰV]M.?k9-ƭh?܊F*Q[Q$p+unE>ďg+ Jss.(܊#qp+ [i5 5J)/V^Vހb܊eqx's)[]W?MnH"I$VmvR)i+Րtme=\Vj#p+";pV5jWF 'pe00\ugU \mʘC&maRdFR󇶢?*T;ǧC["Va@h+[}DžbJ=J!@n+鄭ԎǣԖi+U8@[_ذ᜸:ĭÉ nvu>BAh+<J5-򳡭&mHV[mx[o8܊?ĭWO܊+p+J n #V*zV<5Jo~P+u} ZR)PMLZ VқWѝѳH2zRL!}I+y懴2*2ʨI+nk2*Q EQyJh1&ƨў-lVFI2fjW*1meT/ҍrJ ʨ@ذh+}iA[m\!*mTmA(h+tvh+h$JT_ڊXSشQ9/leɺ2ra+6f\2*ƬQYjdlhGŨWuԊW@SZQ%S @V ԊhY 3*h jehGe=;VF#pUqNI+Ҡ A6f_+bP/?ƜQo|9+&LovsH Z3Њp_R Z:c8S he.VF%S(VFp| Z5pƠQH~A+~2*ߺ}A+㜏U@+}=2* ƠQZG|A+ 3À2jH@+(q.jA+g{A3IƠVƹOuge2L2* ŠQzEQf2* ŠQmA+6Н.7 YL*G3&hU]"(@+nnvVFe/hE`89J>20ìQh f a mM0keT{߀&2 ke'Пe֊t2IO7kek4-8|2.a1X+Ake@2* q\@+k1he1*ʔo`U*2;2;`ʨ6w+¬wUfeTQR`V^gOح0Vf1#+ |={PVF-,LYy6cᬌ"ݐX:da58+ҸଌZߎ/geT#pVQ0F&Wn ^D1+ja #mjPVFƗ2lCYЃpw`5r]ep҂x1eeTe )dpdRʨ Maѳ "bʫ4X0+qa8+! uPJr2ط9+ckaY ub3[pVI@+?rheYjb +8 bRЊ#|Z-eʲfhE LV\@+ bЊ0hEV@@+# geyᬈ$),~8+˪1geApVį_Ί(& xZ"H9ypVW| ȇ,wQ8+< oΊy~_sVwcΊ~9+ ЊyldЊW"[gH+⻇V$@1ieCZ -4 F=uېVumH+b#LZY!,{H+%7) H=!i`+?_ b^a+˱7lEMV2me[Y|p+R/nG'Ÿd|PV>?`[0+ qs!| ĕك"e@j!|.W|- 2pE4+_9)~~A\-őaL\|iJ qey0"1W$ d̕gYQ Hqe22+\g0HX%oA4l2m2X +5g\E\`䊞|+RQ\Y*ALW>5+=9)Xˀ\Y~4AƔ X2bʲ rEk0lO+Rx V+c?2re&"tK^qreyJ\eNTւ\Y\A,k WiX+Ӎ,ȕrʘN WlA, W=]+/ȕ reY3 WG!ݔl3䊔h* 3rE1Ŏ`o\ς> xASkߡt{!H)ĕQ G'䵉+7TM4SrL%D rU`jLC05&c#2z sEA,̒`ʨg`H4+o* .;̈;ЕWyt<+ Kp\QFF(uI rEi\Qa5R7B+R(,X { see>]y]QBWRknb'@W PX*ɚ@Wi_(*w( dxJU`B+N/Yp$_bʫVF\Qn +ZM91rE 10fȢp#WV-%<0 re{aHy(w2 ze,z+z(r pe(w6pEYI\QZ+CP>>(9jp?P:\Qt|+J41qUkbje_r L\5yO^s-#WF{yH UƉ+FHyeM2{Ɠʉ߼A#WI*-9fZ<sEY\Q^ߏv(,5+)a1ЕQ+@WT0O̕Q\Q« ̕; V 䊼|\h+*\5\񃹢2)+*l(6ŝ0W^a+o2W^Z:ҁ2(Ye2sE+F}+WU/sesb+RBXq U0\ysE3+R|?]ĂSЕU.+߄9)Gito2W$I te W%+*%z*.**B2ȕg*;R)% WbʨJ+RWUx T HԚ,dJӃJ(Ey;7+*z"l+qE%FP/k;2#WTk ?` aH űS`/seյ\9 IB6Q ŋ5ȕQj \8v:B2j7 ⊔K\:/qEwuW^4qE>+Rse] )^򁮌8v*+R6fb+RCcL8҄3`H_f92+RÀ/sE#W^ W@X:䊔/rE?) j\Q?);X¡&䊔űSFB\bc2 X1ĕF߽@W~OtGUWUG0uGq(SW+߯lgU]rbW9ʦHpX;ed9PW>ԕuusmA]-_0V=]DOue2&tEw+tE~`)hYWb~+RJeW)Q ]6t]@WlS] b.-!?)ΫA]+=:XN-|֯AHٿ=fA]+RlD rOM , J=|=brEب#\ѣ߳ Wi\3W6#̕ sE/rEeh6+*]bh7ek+R<ten\Y0W̻]юMty試=8H4mى4`hOe'z0W@̕e"'9>0W=ii3)5\Q$%'zx!S_B SY |*_r>UJ/ +/`*DO# +G~78rĕAoWW!x0̠;>V(NMPp++)܊ Sg oE) _V8>Վ(r!VlԾO@7'5sR3`v0W2 Ogfoa(u+JRyJd]Y-(ChL纡(?w+A1uEi>@"89xb3 %}(5җ^E 2(/j+J€1tEVH((E{T9Hgj tEa?(g '%d5ėAyBYԞP(Q\|PJ+Ryx hp?>_Ci+*jxuk@icӇ* QWTyvڗї*vE Ȋ(qP{7]Y=ᮨ6U<^w>+殸ރF"O:ျhWTf52J7P} (= 0wE%hC6ந CܕUxEet+*_Xn׿vB،]Q&7\Xx!KH]q#?=?6`W^ʨAL+쾣g L]ymʫAx?vܕWJ`ʫ0J2@w]酫JplC+;+]#AX |nl^$W^ebJϼB4Ws-{?j+JF3{W?W9xr^taMJ/Ўo!+]~+k Jx/hJ/CWzE|CW^%t+]?]Whbhde@c)J/c /t%a@Zy?=ԍW^` {6,fVχ앮N/CI _y܉+ _EiJ@wF5Sjz+h$kW:WI|UZ _E>1 J5)$;W^%++*!__`e҂`fe}JXz n_˫l qk,+W!J+>V}3 mJ/g_5*J\y$_5Ưt9s{i{ ~CW`]obٽJ|P,2?( HĢ ?3T TyXBX,U,rX,3 bHR1b 2{&!ƟŢFx-'LORf;cƋa^8zNˮ<ߢT|i,bBh,l£ESxHFjXI$eoX*ZeeԂX_Lˌ_'E7Wԍ9SXJ~h,d˾/> ;RWLc׼X*5"4j]EQX4a,#jX4_0WQ2WH脱TaX fʞ-`,[8ƢB0RjeMlC4٪6,pcgTO  Rc)KP+68 }R!:`p,Ņv85X*hjBCXx.XJ=z8:Xı-rX*~@cق4 a@c)eT&h,@cIcTTk4 +TKTh,Ch,igRm@T`$dTX*`NV`,6a,[l&eLlevOK"|R ̎IcQS3 i|4Ә4褱l.-{LK=|23!Zp,352y,o$Yx,;:KN|:cǢx-<*$~ǢR.~DzOy,?<5R8i,,Rh,,{ 0Lyh,[ 4b !8XX(jQ^΃X kpKC!hPC!Ǒ$(1E_L^~zW 0L)ɢG`t]@_&cWa"#bPY\ҫ}IEMҟ4T ʢ,@ʢ%0CYsg EEѓKeOVCe*,R<Ue`,Jm1ES87ƲHLX^F"#l`YgEŲjWx3JEYOeA\WKiXc.KgorY_.˫dX.cYZQ d,7EORc,_pYMb."\^&~;ɖ]ǵ5]Vx PB*ik-ƈZWv?J7ܖ%2DG,˒s껄eɈm,,W%gGRY2*KNm2ғVYf #/*K·]%#Ǫ|d\UEW30*KF`OdE* 6F*KFtCex,2c}XW_.KOe/.%#4 (\˒qYy]X*KFEcɀ94]W%#ۡt95^Ƣ TsX21rb6,qT]Xtԓʠ0ŒP,ysWeCdD %#78 T X2KF4΃bBudذfXrij#< ƺ=JBbĒA,eĒI Fz@,9>Pb&Q%2Ē>wJ,9T=PVHt+e"KG$h((B%IXzhoX2EӜO(X!< d]qbi%5V"J-%#GbȽJ,b\NܽĒly d6LJ>=ӧqDhsIS,CN^ Sv {_I,;Fb|KH,Jy iF f%wiINY {{X2R,@L'OBb [,9@s)}7?# 7ӤKF, Œ5A)W%#6/ٓuLdbFtm6S6Hٔ@]n)/#cɈd 02B9/c,'rA]i,9)f Oƒ 6_Qu%'  T4i.*b/SAIs%#XόcS{,9 U@ncɈ~XT4BuY%ǒ'䲭2dPT3cm{,<JEsXr*.eE+ǒ^x@ys,/aoO̱*<8 ҫ XzKF ò2KdtcK9sZy)9%VpJ6acva$8 ǒ:d?( [Md@*<\cR5KFc*)ȌcɈ~`,५KFtcu3Xz%KFl FV  ){ZyyHpjcC{,ndƲiZ9n%"(X"K TCiy,UXKTi p,Ycc KDX"Rdvy,m%"jejX"#`5DzyXjX|lVk%+5zc)AK@򽼔Zа 4SpF !z ,RKF4K֠Dh!|4ĒGbQ,*`o tE!,ڕ|bfb X"gXntb bw?![k;,WRXE9,s\b -w6RDA,z- b)V D%bȸ%w2_k(X"]Ab)$XwYK,ӛ×RCQ,aPK:,6֖vXPec3,a)lX a{}j3,Q+,& &< VX2um% #,cFb!,*k]relK5RPIQr#,1cKRR]T}!,CoQ a6RXۼj.x9:FXc؍ Jha9nFXZ5EXon% cp-`ns#,a9|?)ml m? <`9t,V`_^-֚J`=>-wr, ,EXi7wke R>x;%T] [`V3.WZ+;)E+w z+(+;iNS+uyͯlL4n]X1}:RWe+ͯxW6Tl춿ݖrW6 _XFh%zqt_X4he3eUJpz++Gltĵ*Q$ʦW6&J`of[`Ņ&XIĉ J&Xf}mZD,ޠmHX`v ,u-l,HрfMm,De,w lL 619ZNdG`Ǜ DdQ}/X2XֈRm%"f`ȏDnޞ~XQ4(R6?e]\?KFP De%"'$ҧHX"r@(}Z#JQ<3v X D Xֈy X5˳@,52-#P",F>Oq` K Xf&Xd0ҧ>jq+,}e(e>X K]rJah8o.]VXrW K]Ka6?}P+,yRX|=.؅l,4²K. a[J9,a{U1,u?3òѥva)d9,]m(RrX^Ka&l4ͷòQ)etG9,-vY(1IJ]A%lv>KbAVI,5+eZwm%X6*ZbTRK 8 Ԙ ExÆXͤ!w^,D;,z9,Ns9, lew1,;k9,1]ⴠvXvIòS/$];,Qaka2a òp;,;aٙ.-.%4òS7wjegvXn]%*ehX-ew_T9,;+N5R b_nA,邂X8b9rPqX7r cGP!vXvXbh堙rXRaʰPJ c寔0VjlX41bG Jl"e~WW&kLneY,J`mp-nŸw ,B_62L,~eRʼbӼͯLn~eQ^+1a~eb(~W&u ͯפk+[~bJ_o}Wrwl}E䚤N!ͯhR%~e2V+~W;ͯ_]O^#_?_Y.^5{_6L_M ̯dDw;^W+|5D/CT |_5AqdDoEK ;݇M鶒+Wr]'=€de*y+o~w0ؔ䩠0G_BuSa+ ./ͨ}%KJ6eO9$}%+hb+YKWC~eW2,6FY1AD7K@H`oPKX`],ErBX2B<)_] d^.`ɈѕCԭ E9a;h`,ѽ%~R5D&X1$O޻ KF@b,?Ca {@4}r!,$O.2’]@X" %˲UaɈFS(,RoҧA eA@X K_^w\,`[_Qvny %#L,{9-6,K''[N Xz#+,9V%#Lǟr{VL'`&r#q leʞ^?`Q`%Xȳ/6RՇ&X2besS˶Y"14J&X6\&X VFLl^KqgˆDkeۍ`:`H`q o@`0`HK{,/ec/6X`(j&X5vdLl7b  Mu,.m%x mRX/^ ,c-lXM +mlٍxWVXiX a!-,: ;be&k,,Z ;beJDh}ڼxI,KDn"%lӒX-, K,KĆ/  Eil#FXʎHؑJGtJ"FXmQ`/Km6XPK a~!,uRT!,4ae,aY" ,uBa#K]) aK!,u *WBX6P[aN3fXW K,\Bu_zKaN0VXn.em9ԝa1 K\Kbk%I͖X6u5QvXڵaXa鱔YaaGA#,5d҃J,paǦ6X2^硌2ےK_9,]6XzmEt}j,57s%XU6) ADt? !Eɓ$+_ȹ+V:mfHtmݪӣ5+]WW2 }E^h*s2m}n+XH_Ɉ.+Os4Q{򐻶}VȜ;{+Ћ?dN_Dv^eNWz4$lN!,1R;Z_~+9SkJF.<RGW7K4oJGJw_iJ_i'Jw_2e_'Wz%J_=Ut^ٱҫ?+Z KHWzJF&؊h2KZWzJ_6:Wr 1@~+pҝZW2ruu-nVe%2]XzK/k`Ɉ,VP-M)?{òJk ~XrYc]"%Wy?XV<,ʓXyhmcaʳ[#+(c~i .cf6Vn)d%~ RM6W…"FVba-dz5jkdzid_ke6@PV &"e%7?PV:++bd%&It-OV Yɂ) +} ?>XY٧ Y-5YɠHx YJ } + +Q\_Tzȍc_c_Ĕ* YcvEJTY40dBV)YUbJ=>@V㱩"de?n=#!|~`f Q78+jY٣P JL`Y٣CEʾcYdP|`fe)*f%-(}gbVB~ډBdǴ-e%m%KY I/dg%'EbypZ =J&(6IV^0ȦV޲DL={Z 1XLDҪ1n>6VOiikiKYZ)Fg"i褥BJZyvWVH*h妲 ah% uZ1TJd5z;+e$RF})hV"[bh%R K_\J\Tr1\JldB rYXujdDFV&tLY@ʼmYߎrX62YYncezdceG0V&['2YboceUʠ hXndBtYY$E0"YAVM˻e0YIHTٵB=7һXYi?JPbeEm44ke7gkB+qTԹSZ7<:VU੝JcvV2 )\ڐJ8+YII}48+5@զJR@YiJ N$W:@+}āVk2_EZߚ>5 uJ^`Urr9.hlxm7RWՂV[J] Zp[Zq^K+ug(iV.;fmV~WJyV.LK4 FV\J!UOPR!+W"G '"+]EnD9&XJ Xň4A[ +5+a--|M RV7͂A +.ia>Oq^+q|q[ ?ͫ|o;lվ=h,_!{*hXJ5rkvy3,^E*wq!*k^fbyyl5-,}[VyI[VOnY1`~*R*n,LDUS=O*KY^dXVqJ*K#Uy,#[.Ye ,d~*Kj@uĴViU TGl,PK_ʶVn[#U\yDb[eݻm%BSp7*?w=;U^e9U~".C*_erD !Z"Q~_YɢY!ꈀYK탅֎܋V2":a%rGXYnVP!)O0#YՌD.D9ɢnaVrHE=cfeZYeF.Dh(=jC)GB +yBxBUu R(BVG, |S deY,O(YYƵ(+he,j)+륆(QV<2GYY2%@YqYX%XɈ+K„S(dHO);FVʒсDEUdwgQqUu8ꈳ8IQqU<#Σ:<[;+ΣA+&[ZJ'V:Z-03 V2"j*L|9_'R̋ZɈ\+$RV L,.%( ,_bϏ~36Xzf%r O`H`JD HU XVC  MDyѴD63AD,!K4pg v#3qqy/lS1l`9N`9 ,R,Yll%.XLSˤ `a eg- 6z-%./@X,  /* B7zb,ґ \MS/-; M4g%˻y3rH8N'2XYKf%7y 5[`qџ2>0ow"Xf5` 42¸Ş`~;,˗Phe>( ˼UWˌ& (,Uw/t%4a3+,_EϬyRRX}0Qke[cIaq!,zM|1YaÝ+ \% 6&MFXl/<a+LXsTO#eη),s>),  ˜;YandeƝ D ˜)9#eH a.W+YX 7D '(,e$ ˌ{N \HaXfN`rt2GP`XfLHbc3j|Le̘;Y*6&;bnX,wZ,pї-yƨFJHʋ繿wXkh;Vrb2(b9+.$-meg@7aˌǨ8|b1WGx_ZS,hC2cF ݀je]Meކˌ'ޝ.[ˌU/gXf\Z}c J2s OKUqfWG ̭<; b?/{bQxˌJPX6@,s2Sbu قdQH%s#ۉ֒_d7-"eXWˈ:a C,iXWˈ) I,c EK,_$T_I,#ztGAbɅGDI,8)X2n 勰S)/ 3@|AP,_DԦXޖbDT>,yaDX EDbtr\ -X2Λ-N 22 |"Y;T$3\vŅw.2N]Jb1)ed ')dJ|b"bɊ֐X88߰XAGO([FKGLb1F9EY.6+/b"5?,>8"|sC,_YC,_}e%C Kh2c2 Eˈ @,#R|bq.rXgPRoesK׌a"ֿpXFLBÒ%ӧa"|ݯ.e%WO%ˁ8dFyhL /rĒX2!' ĒA, IJ(Œb,z˻"ymyLPkDWX2dgZQFcɈ50GD,0_Q+d1dMEpXp ESQ+ȒUb@4YeF KVd"nOdESdI2@,9?adFdy^eĒ Ȓ[VYF,e<^6Ȓ3'DKĎgrc2hYƃeP3 d@"ܵW"@our|6\dqePfeF5F ˌ+},ONMD/ω2aYf,h2q RYf,,,"<݌D^ C7@H~2sEBe$dH|N,3gZ"Yf%B̸4j2s@"Io|'ICHVdH݁^T4s6XE&̮6,3V2$ `He`L/X"23^Q,y$az*u ,#+2X *޷2㲧C2#׉ErZdYF|"Ȳ|N,ȗ5XBeq{W%+ntŲH7YOe.sȗv*7Weƅyó3vYjHn\>,3|̼) 2.|²haCa,]X鳞SPf%"eW,ˌ౺,32j,s/.KލfNpYTk198fY6\9"YR'=.a,3p>\tE71"<0˜{f. EXw2cDg4˜h/bĻB,3{%e+2sUEy9 vdvO,|M紨,3.'<*E}VYfw#|L,sʹT/BٹU9~keN^T.7E@Yf,+9 "ڴ}jW(Ʌ̘еeƍFO&KVC2:dq'%#c̘/Dio勼?LdqS.ɒϘ,d15.$DHwJ-i{:,Y)\\!Y2$ˌ ]u݈d*FdO"ˌ%ڴ=F[i{DdY?LTeY?P6mY,y@+eɈn&,,?Uŷ!%#!BY~"AYQm%#(rYֈ\H-JKe;6\ڳ}(N2=P<Pʒ'Ӣ=^T<,BYf(K^9&QWmW SS\dv@䅍)e,y5hQM)z/Y*eFK6WɒeƔ,yW#"K^O%O3ˀDKȒ,yRC""KثeF@Yf$ ۊJ%o@Yt#ͼYcd9Ѯ?ɒ|G< dɱ:0Yr|E#dR6sL=TjmeF r,3V%G_d1Y4#)I҃A,9^T$&K(1Y&2eTebZ1Yg eƚzLeQK"eF1:AYrEP2FI/$e,zAYf4EPLEhd=dOoQl,iIʒDY2R;$0]+ʒy~,߅Ȓɞ~,!d҈ 9 ̘{VՂȒ9Z3Yf.ZHd'Ȓ,a#X2 @%ee ([Я% Fr,;2W]?s,pIE?2,9"͇2OeƼ5#eFU+B9<\nh%txY 2зE@Ve%BW^+#,1oK4D6K̤Ea}^ 2w6,=?ܼ,dXj]LK#,wM5 XSa$"%w@`'A, cD댰DrY#,Q~7.ޥ pPXb %WzPayQXr]GaIC!,ݝj%CksK@XbuqE99 *22K nL,gl``9][˹i;XKt\ ,]<1K5XMX{Zi]G`f ,A`X75C+"Xg`9x,ٳ$дl}1X%˒=d_@0X6Xr3˱~^ R:XA&";lJ oDe%kew ;ap aٽ_- a_~O6 ,NVX3%VuXa) ,%ʊta0²_,Li>,o#,>l#, ,j$(,;EĽiQG>,qKedQbXFKP| ,'` ]Y_,/:e?ͳ`RKx-!Xbx,sW`CK\Dd֣w `4,ѓ D,%#AXֈB`YXhep< R,A`Y#XgF`Y^%7 %OKeyf=#7qM`oKX""JKnt2ҿ-,0KDld`m8IK) ,QR\`*eW_+,RX*tb\cZafY%.xEqeQ-PXb#ews1,w&.%@FN K]O%n' sB.%%I dթ % HH/c%ʡ<(,Q* KTepmd),rh`XrZ1,ðDä~fXr\NͰ0]C]Ba EiT_fX ai=KhvXDW%%j5}㰤N a9MovX" yqXbnaFgLaW8,IuU9,a%9X@aOD-.CC,dT;, DX.*%PXN%Tl%,լ(t,D4K,L?Bb)$]~ 8# ŒiQaXCRƋ(+ o%Հfe\ؑEDb1 <*EdXFP,Wա P,ѓ:S, %R,sYFYU)%;P,17wS,Q7[,ѰNL[,&bJòXb -BX6XJvc1:Ԋ0ys>s`,9!ƒe#8\Akñ\q#p[ݤX XR%oQQ6Jk,1&4&O7L KT(ga'`,= Ր\r/C`,Sz7X,K`Y,cɱ^J˽lZKR+J2XQ?1LÀb!CDI=K< K}K&S.,Xb$Vu_S,1N$by6oo%YbyvwĚbf^$P,YQ,1 <4ScH,u?K,Dbْ$ׄLtɲ)tybNf|l~>9$% Llmbiymb-\ b cɊb,lb%K 2Ɍ5/%2r "(XrxR{ 8 cHXFXAŒXQ@턡lebveXÂ1(?yXryd;anc-P7a,EB`l2,h? mlelEjbFlD{Ed^Knc*%w[V sc-!X,^K 4tű ];l컶+%Vu76)b qb:M䊠(PXYfJjAQb8,8, n\ӻaٟ%pH=`XbX؛FͰDR0,yW@ûDInVXb9ȅuBYa9bX+w[aW?#+,<9D tÓ3*% 6 K,ӽ? Kz(,jLd6D KABD Hs%ʶu,pXK!%o=X[!^*3 btEiA,YKe%I%Sa  g%q~8K tNA,Qu@,Y@pXr?du?y葉GJ. 弝5$rz̢XNEbjlD' KF# 0Xc2Z #7אKpc I7dc,,KH1c,Uυ O=mcɤ c th,!Dc  %āTXN$eK4Hci D# %98h,D@0eXFJc,{2ki,+ Ac%" EKcG`T~Y,:mĻӕ8,%"<K ,X`)6q!|i,2e)k,mfe4M?P_k,YL e`@h%ۢTli,u:Xcݣ4~8cYpJNg%fԊkX΃Ļ8AXjTKa* )fSneJXrKc,noűDGGKcM;dM͘%iWq,9f_QKpUi,Gz KLh,LPk,Qw#%M\BOLCʜ%vxP'<0#8ԑc 9۟Dbc,ga,Y)%{a,|`,[.eGP,e6+a%'<0%̳c [B=8uqDzie Zq,ϋ90WsXy(xqXbA ͱlM8mnp,q;hcn=1Kl l׏Yƒ:7^.Zc9&>4KtGcoLyu4Zzf%lyĩK!%nbŒpJZ,F2r+o"XrSQuxa勰w-ubAKbbI|]`xX,9ELҍ?HmXF!eD> Ksdd8f+G\bwXrP(q[3ŒX,bIZ-4x Xƽ;-qoIa,t0""?2cN֟.dw(%;+e\;Fc?ƒedh,Jc|m'Xc:,L'KЕ̠rfsʰҵ2,g a9gVYİ䄚ѕ1`yİ]3Ƞr.ϩq3m|:8,_mYiu69,9K4w-;㰜W찜wrx@7 .( YXr>^V{e앂^"{W⮁v2w[W< Exi(|%2,]ʸ? JT﫽uzW8e({%3o3oLB>JzHH^AY'+sbUWDS+S+٧oʹ#䕜Q (:,q+ y%Q TM+ 1mAY]:GZqқQJEGB]IH]cEJ.QWbuexJ.h,]^|?XJ.+2FJV] uH]2c v%7j ܔ !a5Ѡ|Ysܬ[]zEvԕ,^Tl<#+'*}L(Z2|E+sۆܕeŤܕuaq Eo xdh+e+1|P7ᕄ8^VJLKJ?D7YwᕸX!nƣ^Qx%sr=1J\y+14Q하#P핸eJc{9ފo0&:Ԩj|%{+3ļ  r+{%XAڰr{V}s)|%;DP`L \?Jb1b6J̢ᛀĨ_O{7W4\^!{1_+1J^ )H"ey%5gy%{,|#1j#D JC3DAWfV]Iy_]+ߠȿHԕ/ܕՕ[x@V5z+3G/Uԕ܎Sԕ\Sy&u~1[iveT+X ve `W3D4]]]ٕK4ru!b]>v_ݭ2]xb֟_ aW^MN~f  ];`Wr 5 f ^\JZ|"+.s+ٹ[3Jv7od̢\!t%t%U?Jn+EJlݫ B0WrID `*1Wt%Z/7w"|cx+{n+ n+3ʶĕ!Wb\INor`A([/r%~baȕC\9/v>*r%nsmD3/Z]UJzt.\VǨe0*26J{\_0+,ɕqΊ }*+ݒns%~ ҭ6WrFDs=&pY}isexG2Wr4+YǨ?\Y Wr ɕQ WFVWFVWR wwٙ|Q lݤ52S HnyghFH!*MZYIVIjY!<:wol#v%zӚ]ټ@d+љ,'ؕ\E(e0zzaWvmeI̕}qJ斈]6@#+O]-s%X"J+͕]6Wr-D̕觵|]ds%t+Ѻlse?h•++뵛+1`EJ\wa&WvwI:D/h߃\5fZJ\H$+qr%+$Aq%n 5,͡ŕ֝ĕWI{1SŕHASc.4ObWbz+qu7K)i+kBkWb`}+qN*WvS+qjy⋀iG\[uG[~FJkHV@[iV3_ :JcVr-"Vb<\wJSrkVaJ&A=X_[i 4NsCV"wJJ JrsVb&!V1^Gm%SVƀJd@_"Dd{p+QJFzDgjVG Js_q+/Jz+VZ5 Ddc5_;`"p%"UtjW і2|o! y+c`U p*V.2?ܱWQ*vyu{+QxLoediୌ5b.x+U*V""|JD]gpe8d\^EJ3J<%P@ͧSJ\ɻRH\SZJ]WbY\#F\* J<|5+fq* Js{+Q\ɵ\lG`9(b&[+QnDԂ T3TԕJ]iՕ*K]4Z]~b5TJ&pkؕx(?v%r$J`XԀ1Y5W ]'t%jJs̕xkC`ě]6W>4j+P#,~z2LD]Dwɕ~+Qiryȕ, ,ZN%+Q\iL$*r%jn PmL4ڶF/yVa͕̍EPXdi)OE q2W|<̕Ẑ̕Ҟ1Wb L)6Wr0Wj2W ݂~:J4%ot%]I"bEJLuo]ٽ`]+1maզbX܈:]+JXX]ٷHPWRWm4{RWvO{(uelRWbvYK 2 S]fWO] <ؕ4JsdBfQ;*:PԕlĎ"} dEI‚~9ʞ`rJ]cveߎ')*%bWrd&RWv&& U8;̮dOJЬ8ԕ e XQ3*:d5$TBЕ']I]]I?EJZpۨJv-8,V+|Y43u$6J+jEy J&6]#AM9#2WÊFTf2Xŕ}k#eD}$We122JU ȕu\ɬQ\!WrXWQj>YxJj ƞ Jc ĕ=j|*WyNJk+{T6]D̹n2+I{k/O @ɕTҸ2"Wy4)RH$O.CJ T+{AF\ɤOWQ)tn+Ezĕ;>-Ӵ3lq%Ӫ؍ȕ;”N+;Oq%zFJfZ*9|g[UH\٧و J0_p*j? 4 t^?Ӷ \βqW"Kp%4x+WsE\ !V C,Ԥ[#y+[LXrAi,! [KfSXZ4~6L(lqncI<$rG51bʻ8>%enXZf\S鱴#NTPq,wd"mfͱh nci6M"2MV<SۜjYZYZNAyVmYdimo,m+LEG KeYV Kw b@y,m+ez,-@D-d %- &q,|Ҷʑb6X<=@4JO.+XZQl6wci1]Dhɹl!hp j^pK+}(9z]s,-MEı\S'"qݖtXZ|gZKkXZvii,-fDrBl[5X%LK[ @ci֍Ɯ9hư-z]!c,mXںeVnL:pTciٓ+$1(J^=0. :b,-f#Ң$E9-u7\W%ᢓr.+)XZpA3B-o8 @Ol&E69-QҢbFKE& [ci1ҢhaXXK[,ci1[K#֪\INiDK k%{bK$y,mh-ʠy-% uYLi,-V>W6is+wXu@OhKWrQci1$آ7FQ+Av؍8c]ȱX4k,mrG@u#gb4*(Ř^XZLWKYJ57&bus]_46KOƞ|[[Ԃp,-Vı\]5bw%\|%Pm͇XZP軥XO~bVimtݵQ*:t4X3SXZGۨ4.ci1/S*W* ͻc=_j;͛ZJXZn`$9 CmXZ̫?pWvʕqWv XiH, - x@b#bX ,UXZKrP,7k$T>6K{iZQi^Iwi cIR EX3XZ@779s!Ly'KL9{X,m+lӹK\˲҂wbIREK<mb~Ʉcy1Kb!rXiM'CXZf)XZʼn"h)FbkQ,wlXZ%N]o$y@biQ ++4ȔXYXZJbilKgrGo%PN,; biYKwǔ"]FKwFDͦWPrG I,ɖ.lvUXZ/MDly+9b>5J,-V>Q<KF(Rڳ(oi6ΨZb#kŻ%%"GKH,-(AAbi[@nZKf!(mXZ S("%#sI,-YYi;•!EmJN .ai9.ҦzdD6-4Ͱ$e+%#j3R%#:}0,-!ai6ÒXð[%#%#~;ˆaiIE;,aiQİdD6yk;,ѳ*%6IEzbfQ)GvX2u#%#ai[MPÒ  aH+j6M^@ZM^Kae|92,Q %#*aX2R%#zpXZNè 衇aHfQ)"Ŗr ٔrSbXƈ& ?"j65zE`B+eayDr#rv,er9,ZNX2B<"M;,õaȁ̢S]r1,yS270,ErX%#4rX>j7okGj>DaɇLh |u a 'dD K. 0"%-H!,QKFaQm e&U}2 ,YHa>*,&HaɈ^C(,’ ’*AX2’JK'@ aɀ %߶)BX=ͩRhqKFU(,Fͧ )O E nce2bdDi0,YV2 KC7y-ͰdDY0,Y?Ѐk*daf9TqKF{ÒF[̰dF0,iAK%ðd0 -#2Òm3C-(4V[oI)FKaYh?ԚS;\ BbiF(%۱@,ѷddV XQuwhÒE`J80,پWF,K^Ph i%#p8,ٕ %cs3Q~:~ ;,-:\dGcZPÒ}(\(b%{g/&b>} %}t#8Kv@dg$d/2ҐXj%;#%ZDd2Xb 6YԀ;W/ZK$â9j?^ K)%{t,RXZ<JJEaɮBj>]5’]J?a#~aFXZKqzdwNQY|&anT6 ,ժ ;_DlSK~-%# X3Da ,/%ukG,- ##EhxҎ_K`i2SmCKƭMd~,9G%UJ U,Ār|Qe;bJ%G%ud zK_ɑuW2"z)p6'#NUdʅHP)Z" 8] _db Mq! CN %#'HLrr%#6kSX2cE`Ɉ0oH%v ,Q3%,-ragQ)"(dD+%G`Ɉ 6j1EDe x+bZ&y,}v%Ңڇ"%#%X2%#*[Xrn5j;bB %#pIda=g,9Ub ҧS`iii?2XU2X2%#VYhZoddDKF`%9:Pa" ,}E#,ѳ’= ,Hӄ KFnayDn"RX29>{XMcD!"ٙSS_%%'ը|CayDvCxceܳEDaɈ*2^+5+ â[@_$%okdX2eaX%okdX%#°dD Q2-Hj`ɦ X9 js҂j%`QCUhAh.1XЄ #hBs0X=K[6X7@v,cdfYiEm4@X5&`dɉB#j#K(`smd);ъZOh:e%&ĕUW,s;ՊZ'w1Xr㉯2g90X_MKd`dUM=9h%;0XQ9K:rH)"XvD:<$X,G,ٓ}LE0~ \Wei BdoQF' CO6('`ɞEcO\7]d隼gSSq1tO%@Zy"%`X|@U6,QW%KM,\'CDAϿ,:+:/%Z)$,E* L\,, ZKȄ$X0G,Rm% @\e*6KVx,b˵kV ,YXA?X肟rm3r &K ,vտXmr.,|2-\+ k5d*JL_?T_ mC,ײQ7t`Cb,_;ry Xb> 5?X \1,\!\-% \,<rZm@`oL ,{.΢/G:䆷"V"eS eC~z,{tIT`cii,{ "2XC6XS}ίe5e8,{)`ck,Y,։.'#2X#mNy6XPU^d5Ge8`#n`ObeE!Wr_ #.͈F6=VR e?֓;z!,{tma4Va#y4XfSau+G?X1_{<= ,{ ~bd|GN#-+FЋe?ɮMr:i,{=nR `b~ۏ_ _%Z))W`aWNօA&KWtt+|({uW1Wv+ۦQWLWVA2+ZeˎDSU񕅗lWf|712[(|e^JlxɈnLjvz^kpWv/V!w% b)/w%ޑX4* IqٕFbv`:lwW:vWl+ uv6ҘٕfBJd;̮8+;vgWɂٕylu+(Е]YW\++&U7WNɕgʢwWfW⭧̂\;,VN[6K{+7pRN"ݮ -< {oq)n`nJVan%=J;̶[o3s+m1bne`޸[5a߮l"ume,X[4߱*҇ױK[&Ql,L^JdSVfjeE̓k+tmeX[EJà}JخX\I"k+'][9}K[99녭̅+mI/mI/mhVZJ4 ߹vo%X'VXVzSoœԻ6YV6hV)ele=`l[+߾ŭ,s+ōέέDs+jlފ+oeb{+^i@[Y.WD{+W+o%E3_oүrnfQ[%Py+ LS uV4:+n44upe~ 'ʾdX\ \z\Vml +(/pe Rr414W/^r \Vw+LgaNɕ`@+3\Pv+1YR\yue$iOa?!6o8 +ƽ=.+9fʞ^DU9+w0+YF+gR3Vp2+wdòn+/W$z%#EǡW22hbJF^a+u^'W2JFN$x 䕌(yEc hˋd@y䕌 E^:+} g%O9-#y%#GW啌h7W276JDOFoOf+у2fW2JF]Ɉf+l"Vvc$O÷î GTdW2tؕ(mQؕ⋀2\%̕~!!Wщ\$r%#ze&s}+Q s%#20W <]gEJFV SsCSJF83bWIUS vexaW/uBW2t%#爮d#=E C%yPcp%#:+Y..lshZH+Y+7# 1WT( +Ip%m+Q +pexkeESYTq%Pڱ|wpexdS\Dʤ>V٠eyI[XE{+=\Ă[X{+ V \Լcs+ݠ[%: LV&jߵ!uUmcm%d3̳kmeٱJ[UJIT屴̭q+ARͭḩ/+nh k+bYk+v躶#ԱEH8żI(Vnk}S+:ZY.ZY+֭u2]bkeuPY+mVV啵&SV vkee<;[Y9Ix umeuzi+H(@=;9[m1Vblesza+ [ٜnle Ḽl[J=XJ0;-}p(leEѱ䎭 eF2l쇵[+%OklJoSV,wk-al[+mbk9FOV"\`"yl4pn ,k [^l[']ac+(+JD.il%[NVlꖷŭL xtD0d|zW+O[p+#MW!n\&\E9? N"p%J Wy9J{F (RDF[ !D+O+%iOpŽ\\\\\,e2Y(qeQ3@:RFO+e<23+Hʼn-(rlO+ΎlԕѮ'.B+e2Y>1 +v%XŮS슮v+ 2Wae,.\YN0FW':y76W< +2W<͕++\YMZ*A+\YQn;2#+"WVccEOfȕ͕"W6cEl6tre,.8++J\,OWNl+c+͈W4ŕM+5wpe\]+sew Z抳\H!JDeN/sew[|2WB7Wvn]+^+ tt%pOte +w+m25buItu1u+m!ԕz|Tvj+ATA]zVW*˵ԕ\#R#fWB`sJDtu+9D2 J N J-QJ i +BV6-22qZ]RWdue:0~@W"`bEm|F']\BWur+zD^;R9ՅD!t%Ot%"*ЕxA3 Е;AW2̢씄BWr^{]5 ﵣ+;bJeR 80o~+]Ȳ,lDD͕v` ̕!JFT/8F|#j>Ք2WƈHf ̕1U+Cse+cDc ' se8+\kOa\s_o+.U4+[J#mJIetJ>3(,*++Qfs%" ʃlD Oɕ^2\饇͕R\SJ]p/+QJ/mD!JlDd~+]]@WS@JTwR +br%"z\7ފ&WjA"W+9HhܼՕ(iʬl+ȕx+ܜgr%; Jd.h76Ww:+cRD+͕HdWrTh@Lc+K\#RE+;+\qm+;w7WTvseI*s2Wv'[](RzE+6;r+P]ٜUFBAwWJ(wXhwWjrW0G;RM̮]tήQ̑lnveuv+^ǫ+%cFV܊HWWu*RWW.JtX[]VQܪl,pܥ7лx]]O#VWfƟ|Q{& Ќh}+ѕЕɐЕ+FR`+5RW 8wu +5կԕRjՕRYau+u%u+^tИ^Qu9!Wf;2/NL܏^ EL6^ZDy+BsMyq1Ƿ2fz%~+eqJHAVq]oz%f=WSCݕ1TD]9J]9 J]9!rxaBWfR]]T8+G+!unU+1UWyPcjxݲ4s^YW:%SJLU3J<*IlsE^9Vڄyc^́Wɲ)PͫDe*1xNQ11rLūS3rLx;rud@QJ֑F;+縜gVvCLp+iesdieC;JHw8*P+\4k-`KEV*AZY8ʾP3)le_&p=&S`+ӯgBJ<}jh+Z@A[;cD+`+f؊xc+' []ڊarݵƒn][X}V<0ѹT(negŻέ,[Sl[X{++孬LQJLW\YrQ|\9Up%][fVVbBCVRyx+!`D{ll#;\)IOp%r-t8W,RC+'"vWNf\9g3-WP$JJ;\i;Oy+mWcs\IN?{7W6͕M7\٘ɕo"W6gE+N%D"+šu%F/p%S!u8WJLK{[YEMV֘&F7r)'ŭ"rSuXIrш]ڊ3)r~Zi𭴕u:lׁ[N.nX [9]Jcs+ͫkX{s+m&-+\(negέ cuo%Jc"V6Z7[V[>doEIAjaVJ X)]Jneb8؉aېh8:eY|tVb<| 2QJ8*s-Vj}VjٚVwکXjV(+jk5E\喘Z x.xY.g"¨ إkJZ\("H+'3ru֥DI+aԊ'ujųf:YOJ;KcZiWa[J\}JZ4/JZٍ( [pøOe2NNoI+u.vFA+vXJN66۰R|-J͏.g%f|ZWՂVH%zʬ:m甠0?BĘ3+n1+5]Opɫd;`Vb~(f69k`V2EB&NN2OŘŬDc2OŘY!U++^߹++RV-PQEXʵJF`6+Fd%sOUYu.X@J)BV d%#$t +iTV2d"apcYɈA0+n7WdaVQJJNĬ)fV2^!cp|}5,#S\Y3RIĬi0vV2I+wJZQ }ZfUV2hE$A+d ZyDlGdcQiZyDv #f4YpzVS nlex`+K[؊n[l pa (JFa?I  \Dv򋤕FZɈj3VWi'k%IcdDE$֊ Q%V2"le(V o%#7V2rJz)dJ*dD/y+˃[rRkn%#jdD &G+EE-J렭ṶdWYYk(ήԋn[InOcjq+Q3k{+loe7Vʮ~έTJs+FwwVF孴be4[iLJs;VO:J$ti?W SDt,k*+QR랔cEͧŶ21+9dB]ȅ23SDX]v+*@Еŋ]*dЕ80Å+j=ED\d ]}j;-ese&5JD`26:+]Y6V25@W"it4FW" Vzu%}K]PWPW NEMkp!W"ɕ@D r%&b!Dd+Q lqe[3+sjq%"Oq%"zY\Y6kK\ŕTWX5k+ԑĕe\ȪB,]EDEJ0Xr"+1e`iLxZ\ -+ٲ2DWjZM+9Iqe ƈZNCqe4Frqe8dĕ" 'qeQ/kWS(re8"W"L"W""]J&W"*5aMĭthk'W"bJx*reAr[{]e'Hn%[ VS>JVy6Om%()h+(JGk+׮DD[\D8EJ[2S*V""Jzu[%e}VMDDٿV⍣lQs+z"[Wq+nh"qeaz+Ic)W=t+Qx][w|y+J rRV"#{+3[z n%*3Zn% N_G)JԾdn%"ZJY҅[IJE[ڢ̭Ddzp+ʜEWs+KXon%MQ#JDh#(o%jo%"ʬNN^h1(J4* DKDJVV-x+Ѣ˛[NmW9Uzj?WƧW!w49JWJDh测+UW.<./]\qӸ+sFK\^WY\z]\2XWNWNFxWzŕɂrOWb9L$+'WJt`yp+ YYVJz+n0=s+[%>F+![IQJt8hT'[y+3w!ao%0:;VmeoSVV:\eoe޵~uq+V_UV٧[鼔ZJu}(Dq]3 n;K\b2W·ŕ}K\s~:J맛\>"WvK+QT0RE,"DJ++ s̊\ =5&W͡nreq+lJ (JLmJBxh+5cĕx4POD̓+{\Ѩ~[i6J^\15~rMWr֙\1>X9}5G+9T( q%EI\!H+wÝވ+9H4pĕYX"R~WrW"JzfWr ZcJ\Ɂt15$J'\\ hV( hJ#p%'B,jB Ā+}^J݁sD\b<&͊J cs/as%g]əBzU 'H]Im ЕtSԒ+6W*-6W~ycJ""s%(=+< &yE+IE$k\=?SJQ*|!WҎRr%(0oZ͕\ JD65k̕hJs%1\%\ɵ2WjͿ2Wb-o"s%)~oR롕mf6WBJΓ6+Nq"RWuD][+Pju%ծڄ5gtjͬ$"5ܭDVW_JtfRPWb +)" u%d%ՕHQSʵ3j_JpV ƊԕѓfurWS+\u% &+V J&cjԕŮ\[vWSiᕫz1,d"^8:ܕ opW;KؑkՊr66vWArW.ꔻt JY'ܕkaM+J]ewkpWz#]f6vWK]](+rWٕT2=h] krM<{׏’۠or7jo4;7>}Ϳ|4wr_[T[_2Iʭ\̑V݆<}}<:5otmj4޷rUqd؊c=f)&Hq+W.V1l q#l{v ylu9s؊Hlu+2Ooϗ߾NŨBo7r7]Gwo?zy'B]ƈ{#mG޼yߎ޼y޼}=L>yO݊y~n {^qW]?~hMbBG[j [E">w5[3V{&CGq+"'wJt؊ȇoo;rxيs+i{VƲ"&H乕Fƭ<5(gW[9r[܉Nm<< :c+E>TʰmΤa+"ϭZ&[), [ƭZDuj^+[tݣ~𸎎<]="Z[V6a͸ՙi~V'A V50lfz|#A}o̢{|#Va9uCo#F}Ȯ}l6YQ@W7y]+o1z_|K~c3~컷[m/m$\܍{|Or`r~_|W{}aLCkph'D>aͯ~_iBOr@0>;<&Wu˗?}ox'1)`j{'ѿ;</o^O%u:o5g/'!/ݚz?{=?}$?N>4ƞ;0ȴ|uOcrX5ͻ1Wԝ]߾r]_묭!p{&OZ6W77_|z<|/tےFgS{EKv|C͇;֑\g|3f}K61Vs7B&{ᛷq7_g whhqvWict-ub!(uO>F 6._]|= olszo/_C_{_A|Zܺ oΣ8;|'?;vD1?ڲ_O~6]S_v eϑw}owKmlGoǍ7 6=?n:=Z]fNq w?=s}_-10]/~ ]nw޿xx"~{NҗI~Iu8^>k/0{_>cu85J(E \skYzAܿ7=wG7O~R]OQ5mo6OS0?]#~©^3ÍWM8PxV~͏+Q ߻nO}6_?W}PpGVMG?{owxMO§KU/KwOnVmgߎ}l}񟇿?zi\?u1DjΏ5ƕ9T:>X.xG6lǝ??_~rQ{|I<ڔ/ӏFp;mendstream endobj 263 0 obj << /Filter /FlateDecode /Length 57311 >> stream xMlˑ7A3<4ߙZ6 6`I<<KE%;Wrg`h4x9UV;222bH7w?Ro=6I?Vkۯ'~$},~U?}O=ߟ}!_Oˏ7>Ɲ?fkS?k}_7/Kn?֜_|o_~ʏK7ϓO7~~_~_~?JQ?X|o;ƿ\kۏ_֞x=f~_Jӯ^߳fd/3} |_y0Ͽ5f}ퟺ7oq'o5obv;؍}?O?[ʘ{ͩj~KJjOo~j?L6r ˛|?Z}fQ!]ɎŻm~|wrk]&׻T—׿גqz_r]=G!m׽}h[\X_r>n=n 4ח_ŗ{zO_^r3W]}/a%rM}O={=7UV}߫}$;ZϷ=j&v^]|*Xڧ{K&|e}/GW}/?~woE=EE|_r_ u3_?mAmrNN3ַ3ݗ{(c:)Rcd;X :A~<|d?o2/K_5/DJef#lG#̑K?^18H֏dm'@j>dHAI{#Ma!y??b? ί3m0z\=M Wn%l'#~Q}Һ29Wm_`JG7Ig6Pܶ:`9`8) {DR7)0t}[x?\~TquXAƏ?e5Ǿ5ėٗ>lC8 A<ƾ3HW1F/Gv,f-~W#c?+ŏic8/V\i &T)ªmEwŢQ@C)c[ 4He/mX4HX\ RY_(^b ^~BcQz#Z&WMl& Kj'kϸ5{zvJgRxvH  ȾkAEfjsO -n  PFߦ"I;^.=]s[~ߪ™ٛh/zD羣0ABSvFOzmeU־1vJ.8G $m >&E6d ԃTZXt`9ٸrK3vcQ)+?&-KAEU\i+ͺXƝ4&^1d׵]6xu:~ݠ\-.{8_M#M->a *3εZ+y~j" d;&&Hu7n 2bA8 ,ΜMisiN aMh*&8N X1>:pt:F\T7nmᾑpd|823H<9!:Y -C{ɫ"C#7^ frMG<7l5EE"V^%m".izd⌭+|zT_$.2IMj8p~2q&a[g0J ){TZ l\H6];ι2hO76~gx A-:zW:gxoVxmx6Yȶ$wiJ ׂ,V8BlȳjEs aů (HƮq:Ɋ+cXTz! ஀$M'羄anfmïO!:dim{yʹ&aW32Ill6)\cr݂T}&5D)];B߯e eTFK0f |F7w$i *0AH3HѤ#oK=pIvJmF`2ÓAl=M dGp߰pgć$8b/fDr|j^Fm8j1gGLIx:a /d_DLx(a2X$ܷpA)vkH@ R8 TQ#HE )Lݲ+HTYkG d,Zh1$=!ɚX8wmch%H˝aS ӭ̰x0a9aa3k.ۅ\;&S."H5F Nx-m ؕC &5H_Cݤj,>"4EhCvCmUC )rCZ"a bH0Hc?TĐj b3 ##4IN hF*|~ bH=H=*! :,!aSmHPĐ8/!&g~J4S}B;c4nGN?Qctcۓ?op_j5hW's I@oYᾎ,ϯ rԃ+}ȜQg:ƣh\9gE]f7G/脽$kd\/X>:/am 0}P+axT+j{M"DbdNMJ𡃦$hĈ G1"Nlea1Hfc> bG% NSB?Hx%(_; 4),=FjGM/ab^]!th!tDx: ?5S+Y/u变K#W=qƧ#xc!pH /vSD.aAhYa bc_J rE&G^ob G}Al=An(GUT8%MBv& Gpb' A&w"iӬd#z4Q4HX)#xTMI1'CA ։EA(nz<®dpfqVyRM|5bcR =N9I8C/^Ɔ}8jY* |B3 2/ wfXA Ǭ&Dbdd,ZI32ԃQ Q1S"D̂ |N, xSDhtIAt|RPYAn/!f'<$F;TD%{N 3 _:{-h/&e)R\?h%%Ē':bI% /,!)q°7% Js.% o2&XR"K*"9Z"I=?D8?Db/"I/& Dfp!i֞M)OC*H+UqsxI%A"$LBbqITFA[EG)4HH=Z>!28+bH-3tUJ]FOyՇ/'䕊6ˇ a$~Vđr}ܺsRGAtB]J̰8sP&hfzo2tk4~fœW1qO'7~'TrG^JZA]Pi*BI-H _J*A21\2p9W{ftFtǣ0&2i_'+BIS$l`E,) rF &Qg[Mu:).Ծ^ƞ`t:xx;͠s|VLydGL}uLQgFJEU# 0dԅPE|̘&^EVϗt aEV>י"[D*At]DJA]DZAm^EiQ<‘{"EdKq EǛ,QE ))Ϸf&UVq:#0ESgDQhvFF)9#7*2!`RYfl Np3 =Y!Cj RRn\N?^blb3nM 2<~^HL,F:U&>%Ec=}D3+"& #=_tSzd;ʮ!'sIEa|3e %ݟʭjd]uK sK)ܔKrcW,2H}UQ}%}w n3}VXw9 ٱ3[@yϨж(i93${" UyNrY~,t?oh~&#ƒmzv?6 if 3>lLVv!1kG˲%q u؜arj( 5ώvGݼ咑s䢒y.;{aYwgʜ)l"/994'p^pT^C<&6-9y?]I\3,Wm4\лmOE@e>5"EX Cw\&q@_Xna~tw<I2xv"ʞ,H'hd{v4pcD_vAtNjP:Љ@*G:4WֹBHGC:{Љv^| D:HYe,gMg!K:sބoϤ@Nxnul Id3S9Z-6awq\@/6SG~<ΦdžEI 12|t ^`tѩ/CaC ):TK0YFvt:suTD@9W:sĸt΃鈌qR:i:t&IeGo&U7InT4ty ~T)oTYTD)l#(E UCyHUu8 dtVyeA TYrRzZ1 l"KU ΃MlũP ңsoJ ,#Ts Pb㴷(0tHΉq\ZXt[|DP9qR5ɷB7ov'9qlY\^>wf𘳪P:dչvvB2C#heF>~{eʏ{eJEPjt\ gF81BK۔RPڦ$E%`?rDHۍL*7‘Jn<|$_]Qr;9s=G3ݩёÄ~OGZZbD# SJFRӹīo:1ix&ř:)}JȲJJW'*)I JeW;XHcB旋OjbJD5(EY9#̒)/ qN*X w*OuRG*2T:"Q*4C֐,VQ@c 4Ht k2 R* Y eSW%&HԧTrAOʲ)gAR)K \4ԮeC?* QKVל|S*:P:`J}}˫r $%CHe&ˊNU¤ՒKTtOID>PLtP*d!8NY4 A[V;Bi(xL, Y0e+fW4ܴlE rC)J Ʌvasͯ#=XѬ];H}Nw G/?84 )F#)##t"]Ĉ(#kѿ1?€8ⅷx`$o E@$jJJRs!"9jD;%B).vªՋejѦ:ʎ[ꏡIG)DBK*R.v8Jؒ(#OIB]CT4!| / Z3D$ +.ђ1 2]siu"yBȬH_JiEPfH>5GtTy^Gm޵)d(hSDwu*=QhBOU=sG{}P㧤 y$%~AYQOB{r!HؓDU)Y;ܻŢPkw795wV(c ~~E|G:E) "%--*<5-< GV$n!q%->u*Oq9󱮹5 ^xZCWo~NhCo8ȣ[߇mB64̞;чj4򥵏gP?cs${WRؑ?\ =ԡ)v4z PQWڽ \ĭir b"vZmBHkuq}AM~~;4@{H5ݱƆA@R #:>D,C\)x[4\7H>ݱ+l~@{ns_HpS= !E+dRF}B NO^"Wk=Z$ C_%ϧato`i~EJϪA=mTB۟GV~#jմDZV[DOé0hh3j2hˠ3q @\l?]nУ!pߓJN; U}nu'lo3Oauȗ$5J}/z w`e,[#Esim/-UV-o%ђfL+0MKXoS'߾O] 5}Gu=퍩wPMp pz^G5N*}kNY5;Kis:yf_CQvX?u+Q]`Wյ |7?C"]MHh MؚOöhD&J>}{Ý&O/<{KO:P7q/;4~wp~hͯ"od'z롉t-ԣt-ǯ9yz5q~ i䞁8S;~=؊TN{Bxcnag)mD٭ᱱ}%{b;v^{:3#ڽߴ7" =xƝ.h6v _}M!'N},Ք2j\ym=#.%A&wm6kfhޫaRfs6nLnT 6]y.ҾH٠nV:;6=&~i:]6O*ZNe/y6utUŧ {_bvΧxܲfdޞ}=[ۥzۥmاnێ[[i>>J u:tja a4dK.õRVjӪ`θ`soodW،?iKo^orwy{/rqtv{S/Æ4Ǎpw7B6瞧zأ,#b{@YlE# >ģwM<ڻG{ ]:,ބ&Ž<Jxkc+hidKLLs#{c7QBy[G(Z*AI:hQ`W$ւ'8\1n-nUѓMKB= Im o-hHD;M{<:`u1wB&83܄'(LM>FM7"U &$&lpv%v- i Rꅄ2F굔b9ߢb3 aD) )V6_BXiaCݵdM R!| r@PS)р4jjbےWAh'ĕb`,ƙv);<;|H,g Axu4+e(N+ˆ)(z]) TO)&aGY&(a;tX'sl#F4t"hz{#A|Z"sr!L4!THBL)F)D{BιbK?1%88uC2:LU bJ(R bgVNm窢iDa'9'vxK{FECZ< XX(qGk"syx߯%5'F坏tgf>7eYMm2FNc~u45Uብɇ_5ۦINBJMt= X#ZLO|?w/eAOo 3>@Q1e)E7xaTʗժ-Uܶ~HumEbֲ"ûes]cZǿʀMKX=)+LJ:PdŖ{΋3Ϋk[zŋvBcu5VwU+yMHCP$!ҌX`'jI=\|G% = D SKП'퉝-D%%!k]u;m4}v욻 ߯=*>!.CMPDHhKKW|ږA7nIB~DAu}uy]#<- !v ꑝsv .eiu H5ZV5\z#s}lܡ!vq c_f7 |D7Ƴe7m7޼6&E8R ~C˂fDi&79d7i8wګp~AiA;|Av9.b 2 /p1sO:'-N(-v9 8&9ҊČNḱ'(@CHP+9Zµ%"J:aL)Zk@S|+?758aOD)GZjW.G@3E""H###,&!*z,BaUyaٛ(9l8`+Goˆ2H:_Dz? + H ( ;~N.EDhag9K|PE=<#\8}>. {\D5E{sC|~T1dEY5.r1=;;䜯Dgpi^⳼":,C'>6|8:๢0_c΋("'e4ҧً":}O/"t@$_/eTE@h@'/Etp_D_GAEt_}^⤁(%N>H:^D("ʗ8T\d|f\vIGoKre\dEKreK&S%ܤY67aBM{n"_"댬T .<D "vA%;n2쬛ԯ#+"J&U2y@̴tV*VIVɄ[ /)_GVEw&%K!J$I2oR۾dȷ=Dɏ7irn_D ɘ)u2y*4[u#}%t>&I5u䴾R]"ZZ_!5Y7YfQ%MCT}udUV_D *~j/P0Ψ*@;\`ʍ%8UgPJTQE^k$_sd#uR3_GMapK\yv:#H&CN!FI-ht/YrbMX+Gܤ#S$5J&8"RI9+S\79f%z̒A9F{lDAgl0+"66iY~dxƇH&UKwbIĺ/ "6Es%SUs~FM,yAoܗ~:ÊH&Lt&ɠx~Hgdj'Y&6MLoܥ+q."3đ<#K?Bm?TTI.ԱMCRB=+Y݄jWؗRT̊X7A,Z=Z9jw." /jX"n"sB.DuQHlEq;rɠRi!H(dhɲPmH4Y"k<2qAZJ&;eOGDpReQ J!:Vѻ@e1 @Z˛pp$A" =6}9-(SFvAb %$A(eE+3Ah$x GJ o$jd)ID@MJ>W֭Sdm 8$2A8-_p%'t88:Rķޤ?AܴQC&H\4gbM:2 Bd}aGY3wUYz,:+yV-KPH* w,'bA%(۪,:J I[9ׂX P.$o )`]*YD"S[@VʾȦ4/>~~UOQq9 V5\[V>Ƴ#Qf#G46~PIևH3% 7PԂnUmÏ^4D) B pNHZ MVUO QԴSR OR? &8 AgATrDA(ZgaS|[KQ@:oE#3PhDo][,|4݃PPA()mx[G~F~<5JwK:AuI>gDwbWF#:*9nŗ8d7/Pڗ1ávvNzE@A?@dfyS~& +> ETY#Q'DAgpc_66SW?pz\|$R|Ff.u"$Ob l Öizx{? ]_1gz0QeK4?1[]c _Ym# Dً mܖQ],oR Lz/aWME^dџEZO|y/a' lndҟ} èƤ7glKlҐBۨ~Eepc^/;ڗ$٣gm=n7ںGFAeބ A8Lti₫tiqVI,YIDw_, o'%KR?ȤIvɭܹ.C||uIBNd#W#o9rQ"4$Dh>P?H?#&Y$Ed^ҵ}Y_GfÌ2wUWR^dҝ}g&dџ=D?ȠG w5M _DK͒MK<T7 G2Lwk܅wCL2ҧRտN}qFY]ϋTtilt/Xg\TΰC6n'E:`jZHh_H%H/Ez-!lA{:rI\qtdh~J"ڽd#YYti_Žӥ=d=ڽ_*EOOO~O~|~$bz/(ˠ%S6}!]F6y 5G2 T>/xmЦˠ;Jo"Xvcj|Nwwݠҍ}{@{ePFЃ}8>_r_-=:Oh|~kDkLƱl"#}yTn/!! };z>u|^D&ո Mבuo»sVߤH͔4V$KMɛTVj!7qyn‡&|/G&z/"pȲ܄&O f&4 MEdvoRL} p7UˠZn&\^e&\/&̽h pɿ܂#˽ ]M\ݹݦI$ɄM]D~M^>śС }N1ޤM3|`H3b?"oB;Hv°\nn\C*Rl(Fr:xd aTtI; LlylK_MѾ&H<ۋh|LM߾ Jz~oE# Q{=#n˜E׸IL'8(rۥ}1 ܁;Xsv%K8r| A]Da,ᮋ($vNgZI{Ga" 0XPMB ]ArFQ1`) ' sUN =~x,O,I &- i= psf/m|̧ B 8udo1XvrVă')nUGu SwZ1(ڮXair @|PJ<!h |~c% gcqJ,;M>qGsr0y6 ۤ)K'I9mN@xS+5ۤ⣺fTt2qYs69Y$PY]myH}m( 7Ym9|`bi|A*{hs_dwS>] `a*} gʂtZ : tlKh'b["r=ͽJWF^ P1zsMƱ2Ag :Hթ|Ts(M>! @) ̎qsjYL%NPŇNb8N2M gK|$T0IhY f(wtbn^0(}09]N ߢD#JfA(](%tE.A3 #x9I'ZRP@Ѿ9е ЇwZluR@9= Ha784'~HP!ȁ-•Uh_+rgf0I[4Nv:o;Q d # Я@P9 DnH)Α;mNr@86ms@>4; ]YrkO!󲝋H+ 'q=v+۟H5;}t3;)70ci=)Ia9AO] O !Re$kӞrTAp4֞%|R]7╮ 3er\ڞ=l[V>.L~O'%+ Na ӂAXaQ+;4=8ISaBSAXt(veDL gV RNr72 ' *0~۝򞔹zϻZ,tG)_I'NaSATtz:i+̩ jw"VQSvj _YuB (tv)GMRZ"lIO㩐IMOo+ '5#8[ *b/c8 dAT@fj (9/\䣞<5o gJ΁>Fu-K:$T* S% Rc+ A8\txzn,x1XHNs˵AUo UYȜ\ی J;ؓqKDc.V5A(Bb٩jUA8]zכ.6HV5lUq- p/"JͅAX]b_NbDnz8*'ko"5̝ ?uQ-t$xꥃWoK\}*R<UM~5qUߤ4"*郰^7H,Dfq ko"p/-nAR7 PC 7K+.I$Te @hlp~T"@h$q~)0U"Zq~/N⣐qj5~\k1H&ں_9#sai&"UːD{H&< Ʋ(7Uz!`RMnY~^n&/l wH&}v~T-!5dהҹ^3 _Eq+%6FH&mUnbc#+D{H&% K Mt9]DO7)_GrT2I]&TTnB%<_G"MnB$-H&6L/a:azI9c le3ȴaz %nMK$v/MFW]Do7.%ҐI:."Ty/y"mwd̥0$"=Ty/yl$0y28 9Uv)!g{o')3D#K&E!RIg,<,u˛kax)aRxLfR¯e o*ʞW+_Qݯϸǐ^Z%lT2M⽉غ2l]^Rd~MV#7[غ;Cw/, $H&61/ȓW>3oR妾$M5M2ח},7sߤf䑛zHPP60/9z[e\)GD*7}9$۾Ļ򗤯#ud䑻z]KUߤ}٪MC.w%R¶R#w&\m^''*G!9#>Co_RIzSx~_GVggҾ./Pڟ {PIQO9/y;AIzܤ$Y=#udI?5N"i &YD=nZ'fI;f$'29NXOIdxQ瀞#Vju*Gq] 3hi6Glvc~e;]ykLұ$FkG/=z)O xW~@"ᴣ:ݤɷ}jyݤMy&?gğ lΥW­Mbk?qToϓ%j {G n6ijzL6v[hxoVm$|ӂɷ[؂ ~b_YЧnv 5햺 |v?>yA2s^ܧ//F'xIh%f^RN{/w~?}Rc6^R/)te7Q^6Z^6c^`k^t^C7}^j^j;^}bzBt^n{Y/w=KmOl׾pܝq8:x/v牢E85qOݝƑHԍ|%|>˗uMOo8 &sT9۬}Vn>Ou7}*yOUּF/ln&HX8nT?OxG '/Ӗ>L!QO}Æ#H ]qk0Qa˦PijQ*E RME vt ЊI zKX\KBdbj)8H.kBAU,RWl ] LXj Q% ˚F`>&Dp۬YPpx$&-sB8RJDH'Q]Єp۽,#Dx~Gnp{"e}ce=?&Yl( 2OJ)%u$ĒBn)VaJ%I\ mzLY&BXaoQ7q56wH%a٨SM Də $_IP R5Gbd}i!T%׶_$$sf)Z.C$k,qB$ {뚕IAlܵW.Q9`B$ #"H<β$vIA{}J箽 }&D˖^~$-RLMYI3 VD0rƪI&ńH|22,"7%EeþժH$a2l'k^HEJxdy+gIv6-}=?T~|/eאʙeeoޗB拏J8܂:uߦS[ykv5%*{?M͌M1=gϾHh #Y cA73fITOCC@*z?xXi+pL0Ÿ@dۜcry~mcækeC*6J uxI2x2cT=6П''<9m'~v]Ov-fZf֏U~s֘9<ۼ aڽR j/x59gQ\X&˽p̼Wl5`rirz!_S*^rv:!C(a0nE{Ls džXgG`ȪV"GV-3}b9 &rG'ni߼/F[^o-Z~vGo`&K9hy8¢GCޟ4ls^9{NFmU=&kOQ[VP}o :[9W;MwM6XL u'm 宵gچEG6m>otmSRU'{ qk`N~{^=o0thph5O# Z'чV&!M V F:ZS4 4¼s l2uExiE A Nל[1a?R9CEx p&KBN-'[ K؂(P8rvRMEbSQM|OEZUl-m-:s{8E"jעY ^"-]S Qb =&ulxEPaKO#fC@aňz6!^BQӆh^#mkˣ?l돺?8"9(@8 (Psw4E$ی87Ҏ)*ݢ`b亅5n(ExD[0Hzj^`{ oݽo72M@n3ݘ xMB:h>hB>h,u#L_S4eNeSl}3͹Ü;xHM*cuQpi{ 6 6Q6Qp6)<4k#i5ZO[.]]*3|DKgmXǎt_ Ln2}6,VM36,s6,Ԇ[}g_.d7)\"|n>Dnu G KZPA7P:@MtݢP<ޤixEblkxvLURMPϝWf@mH&$3EF7'asr-l2|u۰C Z#(6LS-9!3lMCﴎMR?Z·ooz&KSHΜlgl8[ͬS?gl"̌iثx({a׵`&KSEY8mL/@a6&aO_ {"qhDjQ ~H> PzG%0m U)N4.΂jk,Ȕd+jnIqfKYY%tV #3k9gmCyIfgk '55JHۤw2i!$%m"2'm2:An 2:nq'5,-&m}yG5~I} b&z De9mN:#NBl|7Q.7iBփaR&*td;^'We)0&l;A6s`zn"9YP^&SVSz2kU&^bޙt_+f6Yʸm(!`RRrn[ɽ pPIu`&UN7MW&Թr>Sr[ymeyr}$3VsB9ԛ R&nPy87Q_)h(-T9IƦ L3)i( LT?(3>kA&:|*^ 54j(9kK {j(} uFX Eeԡ\ !av]e~=DB:U[;B\CqR]{Dw _?u9=!VDgkdƢow5ql(5J6\VrgnV(L@3 !ns ŦnZSl+p uJfnlF|Bڱ2 u: N,$WWdkd1r5W73+`[ʠBTmPm X<ܑXG>oȂCimJB҃ɠBM0ġ8Y`PT^{ŰK E@ XGic!n8HYC vBTKDQ0ZǓI1xǔB7U$ӡd',hXQ BG4Xu(bfb+[C)?Zpk͜:-Z`Ưb +\ ܗ`g M[[2UVTBATܡLPu;DN#w ۯ!Nd9u"T:vm (D.lhdHP\pJWaCq%\Ž d|\7y6t0=yv0_!#G.{qJ%2|0\d ZЋ0?78B_mJHc!E/l}=3Rǟ41#xm_70QX7v) FkZ8 KdDP*% E(0Kdf0+BfSlPAbB.`+ %q0 4\9:b ¬L7 3b(@C, H SrqYD5S~M†}A1:1Q钣}7rٰ9̣Q#Ze׎m@❸XTKkD)Z ?mI %clo2=f&@)L@!cB l2 +jiK KPllRKP1z[;L~1r)Luefb_,`a?6=j<1hS=q)Le*cc8]zq)v^ɧE~ q#P\ӠYSXh(]0+mOTK&GU?Bլl4$BCݘdT?:h1u+رi(wN\ K*9?Uς+PgAlM 5XVh|Ϫjx^ %FŪv;k(/k %w=+}|%#Wac. Q<ê;bs{' fջ9+BVhWݛK+T+w#Kʊ𽶘əf{YaGه.KWM'] M#6ʓ\`ܱcDu]_+hz$˻B4eWli 2e)cB"{j+Laք ++te _>[.m,] ,$r08vPݭКBv֟mqXdX~I] 6 |/X=-qn,v)(J`M{TW%t_Ffܽl6YX#!eD]6V jYDp5E+HPlI*[dZ [- qVOBnE~7{: h eESeM]R4U4KBɎ.,WۢaF- #s܂Y t Tw_>ueU= 26IV:+Z+X_GTD-w[u7=m]h-y:tلS!'!`q*XUt-JͩpkVM +pPU;]k/t*ѝ&6}/~,cx*w\<-G>_G__HA*{ !sDKɟ!tYSTDh%cJ\]R6^1#Ԭ( tPQ,(ʊ4 ݊W%1&]o%qy!ԭC2#_.lH&1*]'H&1*!.4$鲢 nEd8ZU6sN"` hp*|ɿ&q>Q[lBjTNdɤn`tIᄻ`!kjߺdRY)SZCyƎ$,4rXz\ёOVvX @h*OUnqρ P~A(z hqB9\@|)B羆{AtN 8ePtOD+6kDrލzFF(Z&zMDX(>P(GNc;sy5wlA<ޱ؜;Ηs|}rΪo[9Ή[998'wl2ǿ킖E,z{pO]^f3g!r-<*wZzwyu\;ۖWW8s Eli! I+`k2'\̜\w^⺛sN]@PV/ \ݚ&m~$Mr*63)Pq康 5qf af~ZQPדEgMC$>^NW;t]GFq ^Ό6>>gV`CWu 2hfX"ʼnXMWF<=rKGP s~$Q9xK%Jsʗ^=Th#I׫g{IYva)- M;{z&L_ݕ3v/唝e wghT7cIg#xMZrV dί&ٙ\ZO xBtN҃lDV~jW.p6 .Ll> |->nlt\j^ i~ =@xξuٕ ݘٿU㹎ۏDUǏr@/ -uIe:lKy{:\8N-m20 w+Jn۵{8hW`e'^.~T%rDi*Yp= ]̵')U}=U0wkT!TgTac 3T#aSϯqһ:jVG @WP:,&RA-O=Selo .\sֻr.>.R6v, T:dג9=%՛ ;GZmSFmj7ZiW7j݁Oe} =:-\ŇʂTj OG5 jTAեBTC5 8.^F}*lSWi꜅.Z'7XTE0knuhwhO][FK]#ޓou(?jsrt!&K,TU=iYGIT+QJ{E%[=>Z5NE?jKA ht{U[aZTU j8N\o}Z2ղt7E;׺&f[Ek6^`Qgݭ,cݦ@-"(Eo6a}~jb1Q_o zՂz|!;u4SlPmAf,Ֆf =Ӛ1Jnijq F(vwZ%u)5˾^&T?Nm6;',}P}V#Rυ_5qr/V/,jv04.[~>A]gmOp:ӰVMZME88o}r2uL-ԗv;,mD~==}oKJж^OS>h 3Dه˝[x7mI#ns[:NNj O}[0M=Fnt+'ԓvSWhA̤&=hxMR&s5ܞ*=z]<\ѣNXdvnٳHC- :}EϵBYrUXzwn&a&7F2S8ۺgל-瑧mnGnwyiVt4K5nWË~*}mhT;{q<;ow+,{ ] 5+s}tTӁtUSgPOp`N @C YR 9P ztjAI huX `7rb_\!ѳ^|t1 R#@"YynP&hV :yFvPnV~B:TOǡ @h Nr!GU4,L>QAar]:&>rP2o‹y)8'&T9z>c4 [3Хy *xybip2@ l`*1H!dHe9'qE iB쐬Bx3m`Y>Ǚ!rMR8C8l9h#0@$=CuD;&ѣC%'UI ceұ;d[EšmE|=^-9Pÿp3Ue@.Y"?4D20ejOngMEI mm=F.6 ]sp|G`)ⴊGD8uˁa G@&h@*W<|'9=̉3o%:>P% yoQs'miAd48A&۷8`ލ$I~C ,p?qQ(u[|yoǙDVUb|ՈP7+Gir!d- VKN(DPep1K1rO;]1#HLP|ܳޝhM" ~s?ܳ>X \3aFM[`6xR( k:]a2`:ۇqJě帴$Tr67O(9qq\%mNGn.+t:r[ɬ릹jon;]ĒK,MW.`D^)K3`>vْwjoJDs_Kb.@L!`']r5A^ 3PCs$`uFL&?'8LƢnKSk?[bunLG߹$e X er#uQL2Od$T*LSIԸe:j-WB3MȺllNMS_Pk2>zAPg/P! rԠ Mri෠# k(8 FNhqT}Ugs2\us> ,X\yDʚ.:(P^ɮ5\"m>T\m͉'8W \I]}C 5_E#Ճ{u2'@X1 %>A;b&q, kzcmaCd];6 rYB2 ln `c`c/2}2#6NGɖo#[a(ӴA Xkd~mÓbi˖qkj[ LnE0ߺN8Be,wHq\x9ʠj4^y,7Po{r`" *OLӧ[xVc:g yTZ_0v#8Ė$/>>%@Hl0&q?yR8R%.*l78vZ:wrX@׼6-`S㗧no'H<&6@'ƭ1AG"  A8p"x)&r]u. ƙ6 {!˱,"e7q >fBO!,]|X$[DG9}5Gb3M QuX-cKVqlzDNJ[pQQ SqzLbDW=cVl*5~Vjl>WsvN1Fɏ-N:vc/>ʎX\/O p {i9\ ш[Y";!b*8&b*ٸ*+C~q^dewFtJȤ3hzIg\Ѿ ALE^LCI Ȩ7(1i)Y|[+QE(!hL0QJ퓉EYiݾdYr]k(vd:6&WJt(}JmFBj(a)eqS+5J7FE /bY1cuϷņ\|V\=re>VXVV_gbs-8V&R1emEm]X>-*_QE㓋qY V.;xXGm^`k{.Rx1=Qea`kaTfL7~ĨԱdzaIa59(s<4={Ҧ2)-N <"6n͠Iy;:>Q'OGTOi,meYVtB>vLkTVY9Owmt(Łc4]Q4vkdyꧯ#ov]62SQ,PKM-t)9ˢN)2.oq2SnjzKHoJ> j7[|Ӳ;;zǵ-VYcEeowGͽ>=Lys\cOT>La]Lo c5_ mt3%땈XcVl5/j|cq}쪷^,7 !ޤ(()Q쀀U rk0IBA %2}_ݑ ݮ3^Qs(:%2l GjggAӹ>Xšab>osvLb]׾> 5d $yaꢧ u-͕m|+eGֺ%pIC AG$rÜ@̈́YZO9%䉹@e f(aqB >:Z!POTѰ{r[Q@Aj\FnTv* (팻.{@t].i0EqEjZ-7d@UrΛiKOQO8jaV9QΖ.ThKSM>ijݸ>=nXz)jlkqUOybVXRW:.zwGOo׌1i@ו ԞJ<է5Q(qkъVt~J G\FZ UݵڌNe@{ }81>5*z ow7.7l:O$6bk\D62- *\"hu#W8UjٰHcmVJYh~ K?qyhIJ5GƊXoR)1a\hdװXΗY[*W)U ے{-m tѤįqJR"W:Ϝ-U6lw3K#kjeu Ft\|ܰr2IX,"_:FsU,*\/kkA(GuԪnZQP6٢)f@ K1EPdvxQtu9 -]0\TNY]*sa{#KQ;.[W}|nfDj<٪o3p->W~QNje\ߐ6qӁZDth Y[ h:nChyXUV{HuCMhpDN"ԀX&FT9R=͊&ē;kǂzF8us_ x90a>uZG?\ynQ'L}[^i inթYɍ9Ow^;}>ǿ\ BE N$ԇ|';r"ǸNV![UPA+*RxLV#Q^nn&c7EuLրԹwY>ҍbjJY…g{u e6o]g Pb;=t͠g׀o^l~5 @rOwj9 lt?P{ .=U݇HևU>gl(a㑂[ I^Jnnk]1'KfT]vk:NJ&lԯP z:e]6"sO)rl:m;lnT:Նv:T4vlf;i(nU-wvC. nm860qIj"W}2nYYjFIeKzn՚At43Ps[(;@D!HC)e2 # }rLFɷ]P[|v( 2z!'I"TY*tƼHa&KC!"4-x@1_l"^!L~f-$Qʓ i40FSdU0߬c\b5!9< ڈC'ӄ|Xb̟!CF}Br-qA0)jpS,=, hd&R@&Q4K nSV[Dxj_a@Q-p|N"fŐ( D1VDZQy "yƤ.(`I# E?DFs'}_cW^C&47pa G85n R<d~$hagCJOBգkTzdZm(v .@_C[C A& U΁Q (ЉhLпdzuC9SC)ˈ8yCXXzc:=Q1گn4IW~.[з&B4_ Dm  ZLʳ" ga'\DӚyduH)`ll"P=Lrl+(c*+"dC.H Z+9I4nA #)>%=̧òmQ,s.ۍX2sSL+|IEN\Iq;%Nٞ }zt{aDh~ncDi)Q -&";wLpQNKp({ʪlͽ bJ^66R,f*|4ȱ M:nI6~1ldа[*f ;ʧ POK`]%eź96tk\|۳gf/M2 x(6LEq;@Ng Mz^<7 ӆ1 L8cr郧QQn U[3 __4`9 9='|aB707=)G[\ 9aFPǺaS'5Cfy(GN =>ujdP18fMAh˾,Se8 L o䠚(ޞex{&=`r*^NDr^7uIo(3Knހ0ح($=--s۩(ζ=p8f%ns z`5OIţJؤf%Psm}{B _tg%~{1F@?1xv7ˡz DyX-рȰہ3T ァ=@s(/[$Ell=Gl P'[6 ŕGu`ߐ#~hCЌt%;k3LIq(ړ~*4mO04Q45e>c(&Pb3o =V;$1VGŖ$r`[nq_sHFvR@ҀՏ]J k/昄 }N Ɔ(C9mdӔLlBZ|e(ǟev2p6FKCήܦmH e:>zLg:~ 0٘Jiܦ.dVP}{-p:qB~ɭUV#]v~ʖ<";ɶoig|w54-,c"QFCTtJmFDa;'ɰڤS*O!=zԑഁL&Q:Qz̗:SvuAS-P{83YVy5\wdf(v*eyctE`ɞv\ӊ#RMK?p]>h6bEv efLl؉2Tvcb!\Wα֬fsH*$m)]'Iq`MY% #-r(j-&br2ށuc{NdI!&qtRp!q@\Ğ=MCVHgjdv6ųv:hi !hg^eA,~T1G/c:]~_QkRfnq]8q7]}_3}+>z~,wYas{ 2E2 +P8O)],4a=̥n%w+f7:H%A=FbֹOE]LRJd+Zbr ?j<ohE'c%B"i $f87.FVT5 )bU\qNJ Nx3F& 1ly=UK,-}Aa@.GYχLRk¼os'a(pڡY-:*Z0!tRܿ`|H裢o(!b#.h E3dIqB)Gv-u(3+ލ=8K݀^q3nxT? e+i +q շQ_|F!o].7ͧPvht$@(*y ԭo \חYl@֐ZCnJ&QmGK53+֘~0pRn &b"I&LrQ84K޳emk6'"b.2w+X?I6ѻ )]6Šv(WEn;q]°F]4v|gR*8.匹[)qq=Wyl&p%l/pjr??g@&fw `+#1psd15+}c 1p_pcؼӓ[9ShVhfڵ@+Xު7tcyyhW( ]+XjW4[A_b -ũzVXlO (1l1l<# [A#`VZ<'lM q mjl~N :֎mٴvF=[-pI[am}:n <lML[SZq?X+=5SfX[gJ?6.I$ie͆5yzI+fщhS4a+GvV#ka+[@V${FY]FBΰ,E9 l^YU[ш[ g&Y [ağV=YQ ijk+ØS),Y+X+ll,["A`+h56Ű(YIBWTEОVIJ:w'jB*n@1Ө^2zQ+ :O;G@Z_j#2ZyrfؠV 4keOJ.N O q|ZɓXVЯ& !((4UV0 [A߳ @KZ#7ka@S=^GNY+Psk\a@ R\ >a@1|E @ZbAZ3WEZ.zI+L1b 1EV(u=2{'gXzPĜ(@02Ŝ*z9+PLcgfOKqVzm,toKPl( j@ʫB+@`V^ʪsVrΑ@t1UQ}esVqWԲ'-U Ȅ#U ܸpVŜ,UQ@+Pt*}%! IZY <1jeUZYkZYĤWILr㤭a+Sl*ȑVŰW l%(Jh+r͑Oʢ(Jh+e`JL$D,+bʫ(EWH"D,:cXY!Oʫ(FJ+bʢ\Ȃ(F,+ʢ*AM+bʫ(f,+SE~eeJ+SW cUG^+QXdJ0V^%E90VŐE1dUYYϑqdCV*-؁!+ "2PVE1hUZYV^%Ei?Ji, FS(J@+r8rH+F(oTRoTe\$Ȧ@Qlh+=}s٩*ȡJdU.OfbʪtOf_qdVV}$YY]^­IYYasU.hbʪd*+O?lʢ*3W<}]@+Qr'*J9OŬUi~naJҫd>= W=NaJ#G'5ЊY+*YOe*׏#*3W=a+RN~J`.I`+ *ߝCx^"P+"J\W(h`W&|WVE(ƒE(W(H1{1f@ EE1{I+6_L앮^bIc% ԭh =(@W {o앮@WXHTjЃ^10'y,&h$1yBz+  y.WbJ녯@udO ]@Q~+ދ +  -_6ݚӟ~U6_/( _^`8vNPRaLtd@?+r_dM KV 󣢎'~9_lEh @v#(B_EA++/3(L^(Bw2&{ꄽ')앮REkҰWz'{xaN #0W^b\+aW`簛tØW;c }+'bW`e qr^bd+P|^rWhA^NC1vW dWΔ+G+viv+P {&pa@х ]haLÌ^r.bJℯ@&(|d 8t^ d^'~+P4{ahB+PtŧjdWҟ-(j7 z)*F@1;(jI {eZL 5҆E]a@5E A@ t}( y(( yN+ &|O+YeW蔪;Q5P1t17*_si:=i= VD_W(" { f'&?BEцPftEyD&}Π+ri(| Vc _Qߵ1uX>GbʪBE*cW"ʇf R" ]S+" qxX1kES:CW>6G6EЕUt!ZЕUtʾBW>l IdV~+"ʇRv@ xCis(Ji&|(Z`7)>#s,^!!)+n)Z+Eؕԫ4YYmn weU^P^T ^P.y9r{lHLz<ܕE822ueUD]Pڧ4~~E{mw`(|-CF:*®|(]S*n|(G+J_2+Jy:*;"|(CTD^P^c*g&ʯR?&}%(JTD^Pv_Ǒ+AU٩4Og_vʽ8+xC^P(&|(madW>Sx~W>ϒp? z&$ ?W>r+=!i**ZJBy+J͑4Oj_%Qi*OҫtOj_9W>YܞN8Ok⯬+@?E>Y?,ʇRF'+F'H_YkGҼ~7:YNT'W_^_0oW-aƾdW|+ NʹlW;EdʉMf]_f+WZ>+@<4Gl:Wc_yᯀ_t[1}eDLLOO i+j䂕_#X0++bLЉ`)A)FQݲAPAO XCwYcUXzE5kn{P8,pB.@:FFgeE}w'O6!8`ʛ %Vfp+ Xv  4 7mUD`!qZF\lƞ^˜&,Wjd6$Е.7Ha!zTp$QX4aE+M+:"ܡkQXŻV Qq:Yk,QX!ґf۞e(ON(,G(,8Lh g!2 :RՏʅmK?.aǽ!P a?X"!,p0`)`aZ[ AtDƥ )6fKG?Lea~\BOUdMP!Kg!1Xy,Cr*`; v,P01Xz;\dKoa{R3X$˸`;5KdD Qf 63VGPT`hKGlzVK\J3X:" 0btt R6=$CX:b>J)&ҁtD= a} a"bKAX:XBCIﱢƼ a#"Kg7( t" KwBa鬺лDan}d+Rn0 K箍8%t&EG3ob#ҍZ2#\VPFT 0 q|eXI׆?I,Zu"tzkjNE+K/ґfdgɔ#Xze" ^)v 6|&W*b—Xz# ^YWvb镭Xzek5$NsoK(~e{+(~e#(~%KGL>X:WX:\{FtX:}Bt8I1#vK @,^:pqX:M#=sX:ܔnKgmBK la8>WKgNÚD~tEb> bW9K-=]27#8(}EtB(N]\F= ##K36Bt[aOW˭McS9vYK,Ʋtz ",K,gt$ d03VLcY:beM/,K>6i QcY:"IJ A&3xHTftX~0Y:T=,&4uWcLPIy&ez[D#[yIQp1iYayg hfth|Oq3Y: E,.,T7,YOLN'[4oEQ >|8tﲑO,.E9d,vґOQұUd$KGu0BtXk716S,s}ai,&,&z,%$K3R,,n$tvY:+=Y:2X:'YKta5gKդ`NF'YX{X:?ۓi)AsH,z@,E%Ee=+Q7A,^ b0sk>HF(,vtFˈaeDa0f|Ѣ'ʡt07c[, [SXs"3a{KG#D=|LaKT1Q#ӢaOaBפt]°tyiK!/@sX:< tpuZDb0(Y,)Xdh,>craK{tR1?I`$K υ,.:tzR~àՆ]at 7?q

x,CC0R7KOOoXDԖJX.|z`,e'00lKm{1Xj]CKqb)oK!y,,!KaH,B,tRQRqfX4ڦE:&qXj;rϙRHVX[܈R0[1,߻SQa'),0R[򋦰44!,.#AX I ,SCR%Gln R5R!,5DRp7@0nKq-CX ~s a)l).R[w**Ü-CX +BX wBX r2VM>t{RO- gKm '` ,kgEVRHK`%dKmWnIXjl,G7ݒ&41צ[_N ,=J}X l:*XVl:V-B,,OM`)ڪRXs`)e4 BeZYYmsQkKmO6$X ^gD `)xi`KakE|W >f_)i +pIRQc~h¯6qR0 ¯tv_),=+;1`D_)oJO }蕡0bWWr$R{u^)4{e(v |p+jR'+|x_^ J!&|Wr"JlQqBS)"HJ .Ov|MJ!l`Wr{dJQBGW x2R F„Rg9RN t4yP#+s:`Rhf2QN])8" ])<[])yAW R2oR 2ԕBY"+*ؕB0]+~D+2 6tP$+C2u+C kԕbEJ]B]ݍC])Z+v?R ueeR95Ѩ퉄 AEry1tPgJI`+Cԕ³A^Е!dlJa!+Cjt2\z %+̵RWȂRx氰\c(oASW n +bPWbPW EgMQWLL+Gc J iR Eԕ iJa@[eJxKR-nG< ftH\+&hԕOI( e[D]6 N O3VXPܧ7uRW O[EkPW fe PD veX3vX9,a矇u+Rq5a+v#LD])<ϵ1ue,L])}M\):}ĕ:M\)vCÅ\)8+5BU~+EGDCX4;>]ȕ.B$phRk+q_,XEJ,LW.F\) QKi5+E~,^Rd-P^V ĬX-D,oP*Ry+E>[BW%G~ w+u+Ŏ|1DD]ڜueue(RR9wUH]ԡ YPW+ue(a2ϢC])T1uQ$+CQ:Е~TЕ"Pr2\wV?kJrX+ɿ+C$%cB(!V e +C)_9ʒ)TWx+e Jaq\k_qEBesPBJabNx+C 1oP üJa}VqVrp[Tx+ŭR WȕBޤ"h@_GĕY˿]}o1 9D5TO:v:M7vղ#y@RH1$$A 4}sŧ mVpO U|^K_W <;EG=Ŋ 4V@sVzzhБJZq0<ÍĦ&7aeX9?b5+6Y_~ܗJݶAʤٚV3/ݏNGv1 FM^4,k4J>֢\Z8yhhGO)P0] -Xk?S@ ZLO  "< y hn1*by ^w x}HVBGASPm(zODIIMQU6I*akWqVwF7  {;V物Ƨ֓< a5iJY˥%2OxE^/,KhAgfa1,/sv*c  rC1Z4 MbCD ӝ|NV"=\'{nWRgPF=s^WzYNL qah1&ZQ;UQ Q"4 ?bQD#<&Of)]K L86&'IV0"ɏmj`oQTw^ph'KSxeۢi&N!XJzڶLFUs-GrFk(uE1~ϭg1lx..\JzaNa ^ P~.SkPM$\A?u/ZY31yn 3#C~'(@s.ć[Cm;{ &6VqcX]G3KQz윭o֫+Fbm%h ӵQQ˳X`FDS?p=u,ԇmB,.4msjvCm.LwAr8 BRR4z,X0]UF \B_.ݨN6b\;2Cy!H/fkw$͟˯+ ރRð LB}/#9`}՛\K*Qi> stream xZ[oc~o X/n$n-b}p,˶6q~}] ԐߌۘQ>f_wofj/Xk-g7N”:/gnzVW D&.xNkQd3iIW<4OL^zZ즗g;[*F%wv39et?MyA)b[~6*GZSǫVBS4s?:1*,Lr-+S3m)0il::I2G.D։\LD! B4w8G\m E!nOsC,8(P@? Pk *lFuQCD?-Ds ї焱!v̄AI$hLL}ae\ 4ݷ/ޣCJ{Qoס/36],>)\z:(Z|'qJͿ%CX|T&YkG&asB jSFTl80>S @~HÍh zboqyèvNt*Po}3r}р|h$ΩhVx4õUVcbb lb@̆:  \672P]|Z2vh0h\Aviיf( jfFm~-0{.=Lnywx §PA팥Y)1p0 Awm)Ȯh88HuXp&.htjH=DD/DZJvU4sP\FOGu`Uܞb g<Sר|QCFxh"vo-2b L|v52 ,cfX#}J9#uaa~i5nJD_&v#2}M2vԼK, n- )c%_B!Y4b RbS|@V!8FOX~((yC:T dY C2"5n2CSAC4lR? 4 |?-@ .iS G&C3^D,v4ʅa lQhF^>|_%H\79 [`OuUGD``S%{ 5A t{h E9= ˏ"$)KƲv@ϱYGCO/dߏh} YE;Ae`WbgIb$V>Yx[H$*;TmTr_ԄO %\Hm R!1'GqRLC%vw> eA3%vѽ l@H~7,jfKȳQF~cG)y9^ˤ̚DNk{|f즫lש+U8lѕ-#M:eki d1}j;QKHM7qbo`sVU5_`强^2ӊ]zq}3;~7%$٢fM@v-򭺩TDǘF_V얻lt"< {etmhr:ImBK4"Wh`p}WFc" ػP'k+)k jm0_ S*GSqendstream endobj 265 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 866 >> stream xMohu/M5GI~"!lC⋡"* Ťmhi\\r.\54bx%b0;;Aϋy"\.׎7|A wy;lnd}g{u,A18ܵ5Ъɿ\J~P%߲}8 ٣6޵Wo+{LtW1ѻtSx9Ǵr9 U-*sd:&"طWZ' B:O<_LUt`?n6}ō?^VPeR!D9ޣq? cZ&m^jG^I5ħȹqnBGۢ~}~ iW"͈'M|~Cl&6k\Bdތe%|,9uD,;7GS\"^6B fw/xw N݅>]Eendstream endobj 266 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2074 >> stream xUU PT˲ يŹZ:Z885 V1!>(V彰}.," (*(jGAcHщWIqY0l=̙sw_„1dU)kߏ/KkF R P{.G35ya劜y{l fl`f1M*S&Y|Lfb9`b< b\0Ieؤ:i+<9[%*a5(@xϒ3n0nPIJ:;xy]Olm7&fԥu-pB$4*zM!I|*Ym N 9X& Ԫ JA&oDLT|W%!L?/ .W((fNyk㊕dk@*'yG>5+L4:%;ܙ֥W?n6$_bt`J1HIIAp^1 W >M"V{su'  [Lh`G j}s'h\^k ZXw[NbL GWT͒_؈DQ`M6#}D5w"*S$ϸm<>H4 ئ1ZT#P+߹HoɧcdIOo@'~Ϗe"[bsDžlnZ>+S[OL|$KFl[ C2@ ]tk^ɇxNK6^0P 'lT1dPp)rߥD0 z0cVxo)Q7+>qd1ILH%d%>J(#]c 029ʲ lQD|ЂV:,?u|~W }=Tb Z :od5iK6+r+W 4B9gG&h_%.ʍUP3dl*+ bN#sS住z.vIʞ]Nvqcz9Z5u56#ojPY4欺.cYwwk _ 8aO?DbfvX'؝ .yCCTNa.GI#RNGy'{gcܘU veNl`^n^L'0`-;_VF2ZA/@[1 ctA.IQzЩ6~$ OG'qw. H|㿟V/}}E ͵TGRp${,k|8@C} Ҡ1i 7ĦӘmTNNmTc5y^tAI&O<؎l-=f1w_GR%{SH<D `>] ԱOB6LN rV;i{'`2 8*0ЋID=Opх}2!ӒiY8Kn NJW<6:I2 %\]Mxk[Zj q] 2(J9<jV+HpUU7U7o$ddX:*_jbUs#|oI2a V/Sm;A JR. l__ߵkW>`;@%\P,ygZGZJAܛ@xdaw8@@SU.29UîEhX  UAo֐k6DE(nԝ9"'BdD0̿--endstream endobj 267 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2136 >> stream xUypd0GVtt6S:i!6v)&Mcb9ji{i^_ Pc Һ8\hr4@-#:Gf"i4#}}{'ArDqui%K~>!BC ?DV!':1{m_}G=lG6 A6"HR#EH1+d5RE!و!ij $Nfd_Er ԁeayʼIfdKñtEZԺX6232; ܜxvc@AetfZ3ScX9 UOѤ 2,A×}pȶ R0cSg ׅ\ ʔ U7h0u:Z3/\i\Ⱥ(d$nPD0O`deo.W/XTlѲG-7 id\% Ӄ0?9vdžـWl8p8"ƿ| Nvj:bpe`zx?=ȩ?jKP*p:p7BfM*YT4YQ'u c+PWi4h9A2ayw̕(+ w_/rxێ"L< &8ſYE`=C),;4Gcw~׾ Uj݅pdltlF=\$B]s71ն"{*9ʅּ4)N|l;Hitk6fb*nt%\l.KGL3g`ak)¡sw-PIVX5`[4U{|$l+h̙ Z:%'nikPZm]Wғ#lYH|`2aVSK Zɟ+k_|X@;AGjj}h4 4U*I @{o ߭j.QE5H,;eK1诋5e;FO]K~~~?*N%%PdvLo0j:eAUk12sf3}U`$x8& y 4/yZtnVwMMIn[Q`AeKņ}簠X*.ޱ\Fk<kDQ1Jb5֬w8B 9K`NnMh\US ' ->^m^/疻6u z^`cW0?-973C{ L'|0Nv`tCMmXӒ+Q5 b$'|9JHv&kBlVЊ+*w# 9WN/rCM%S6Be! ɵ9\iSizO-S El8d- " :l!ގOD.=xDBf+_h0[@FRendstream endobj 268 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2943 >> stream xV{P݀oUԖһjmmm;ZV" h- ȃBB^y+Z|Zoj;^;Uaֹmgz# F`d%׃7Q  >1#Ϗܞ5W2O*Q3>x Rb2;O*A3ߎ{]牢KKr(HqL.zn~}< zqh.X;T c[Eu[DR8XCv,@([_  |D,ƽ%rlq8ҁ*6RO˞}%[?mNU˗).Å \e #+ju:/SlRh­>Ж SGy# pp4nm^j{HǍHB9ц-b*TLPT|ov 蒪7xڃ ݡG I @en$X'ݱXX,A>(jTRv'nSڄBł0q+#b`Ƶ.Qx_^'^=8QW搘V%r}U>;VLvZ ENZx=Y 6Z+bIrY̶J{N9#pd>WܿٴYLq+m, @x؋ tuZ_ (#~9.'т,.YZrnej7m@ ˵׎2=2|ȧE/K(:^ s%gE!©L ܁"zuMZ ]'Oʏ3͔^[-R҄NU0 ! h޵E'TDé& @ۺ<;:ݽd> q$v:'&>ɸȽDS-}j$*1l\PirB%i+'uc7c_8KRsokꤥFJiMMAAxo@MXQOznGp=Mfep;-T}`k3bIER]W]-Hv9H؅C01C&n: Ǐ^>>aP//W4h ZbB!h֗FYQd >A;/ Iy9nv71vTtU_"^¸OQ)[>DG>e2Չ.ݼrqܠU̸ҏ );[|C5Aiao1sn hUm{e&y|mA (yunScU]}WbO͕/N[/6*̓? ^)bRg~Fmvc6%]fd':~❊lL'?nڹiVn/e8@MPj.-3U\u-`3kNW (UXWUmmܘ/ϦF<%tͷJE5WhgQEҫSZek- XȻoS؅3Njȉ8ϝ/^untlxC8O5A؆ ̃!5dҿjzݮnMJ8xC^<c``8Ç!^O.(iUe$FX.2䀜ʩho^S&-a4Q\B([CwIxs=t&}B D\.W}xM^^n MnWM]}W2N"FEiNQ,7!(k:.Bu:,8h?G"YpNCg}ظ!xyr\N\ g\i?{{ [U \K-XsIs:ai0k)f`Swx@q *<'{D|4qFcCDz-վw%[vS=ڡ$Z]Jŧlq^#qy<ɇBSX[ji|ʾ ڄjk]־Ɓ~W}eCmsGL1h70lAg(ٚ)aSbZRXtg*>1+]mDyfќy1:Z}炆%<\Z:n ̣^1y:wβ23TYh/ٹ|wy`2Қ[Pߵ^TQ(ްaivτSugmTEFWc)@u0m"Yl^3ge ryXzTh;#!|/:fendstream endobj 269 0 obj << /Filter /FlateDecode /Length 73020 >> stream x]-Iv޿ -+?K X0dHl6R͙a&i{gUNEph {kWծ]reZ_,o⯿(~ۿ,~k}_3mGо޾?o~[~Uyu_>ϭO|>dndzq3_O}:X£^7WK)E e)~Ï?ͯ3^?sӷ!sq;l[ORӏ_~:.Ҿܿݖ;eGY?}㝿纾/_} ş|oN~oNz?Lߜ~V/_~|c|x맟o1Q>٧O?>j_x=s-[<_C0PC׿/!!1xƸُ}Jዯş~N~c$ϿV}x?Oۿ7/ OͿ l]ƣY߷Ɉ~{2뇇4Dx[~};/><o߶KL~/~*_>Ǵ1BBo~un~{§_{͏yO?߿4?oy7ӀWN>bGxZ~8N^ko? gqos2[[nدK{8{#e}FYۚS~GceO?__뗎__?7?qeydO9ŋaA<2m8uk~N"dw/|cG~uyO?<>~~[z9?>?w#~@Ќ/6>;*r?^_ݷtd[5vܟa[Α$}'ScGW?܈O \hm1V_?ω㽯cww6ۧ^cn=iGȿg};1޷OE əoIޢnoyۿՁNj&z|{x%^K|nf/΀~KJ?k~?|z_1Iz~o;҈?UO뿸=qךb8ױ?8 ߊcoůxuƭe4s~W_>tᾹܷgТWh[1[>oWuWb_qYW{ykev}۷#cGy1猩^9v{X~q'/!u˽q:~Q<$2{v}!pg)[qx31'׶1Ɯ#9D~L~Am'Vc_KgvwYxWϣhw6bȯ}7}w?٘_pSGOcى__{^ NFy$G9򠿿5`1o5^?<϶0RG>dBS{yǍ)l{@{&wdHV" OFp9x[vG dݘ=F|^?9v4.2 1!i cc\e'O;F"ϥoʔ‘ڑ%#srh߁@~+&1 4(O-+( F-i€ub$XDrBd "Hp 4&t&Ȇbéc9Ә ~EQ iUj@+FGD@C A=>AC]P;HiΫOkEg8NȤ5nu8m v!]6+tRkLi\4pI d.$ze5/6C_I1o &ȤM^#OȒWEg^E/y(Eo^MI]}YڑW_*C@80@&řۮLԘ 6pIP@jJ"Ȫ< f8pY6#5l%mBUYrS'-B8@(P8y4J+##P7,h]c dN]tTRD$o l_"t4/ q"O)D.)8a*) $uqPICjSԄԦ8T50I37߶XB`Uw*KEs8`/>)oerMIr9ugʉ^v >x0-J.oHf2Ż-J.)B;IDQi A?4pI"Fay#q dRCA(k`"(Fy)dI8nb`ƳnJh&iy/ʬ,\40I."%*;PL[MH1M25 4f\Yc |n2)x$A|2$"iOmzA$U!xuUH! k* j\H; 2iu QBK8%u|A%7d LAX[ A!!<@Dz$@BB{왅h!@FPHU.O@!!DVo{$Ǟi(VY00Hk Aڅ❑.έ؊\.f  m4`Js$WF@8AB8U< h6Ezk]}ufk4pH7!Bxr* -B-KpH%vah=!U!%!E(ZU!mB\SgA"̙DB H5@"B6/;Z-D*BDjB~4FH1%a@T)y̅Dw7"ǴȒWL xq9"SJUxLa dE~ՋBS?BSKe;yرuDVY$[MH\=M]9[ʇcz?XT$av! Y,YHR(\]hp)}w#W»H?]6&3 $RXylHvp:$b?x^r0޷TdU.,:#ۄD>\l1\" GS"N񈝹2(S,i[8܄›S+;]zh8„H3/$!8yDz-r*b-n *3yڙz֝¤v̵i gV5%,'Z0˕-WerugHLWtRM >iUAV(]Fv_|R>)BR MUTg7tKp 3r DW_( Hk%<]eϫT7%(1 \yR&VJűxlo }a\Z^kН/ 2iS@V&Etg zM飰L8@&E4*F¶+UKVIA `V! `̋ :)ѢĭNp(qICI-ޔ2/[^ixU_<]k%nQL·Q~?1ktRe̋ :)ϥr=μvaV&EZ(`^lR :i:)bҲhNBZ*.1tȡK?ZT]j$RHhPBD0$LTY / xXJ^1"R BiT~?UJJ#@1HG,wOUA.8$"KM @K{y,>1_Yy^Pb4Id{TK j \BA.̫`'#=hJ`t@.ETB/ )\|r)搵"Ȣ3WvKXqpKMgr**a1M+yEp%sJr(*uUUPKoΕ]js%w5TPKU)%Y^R Wvp]:RR ,X6RT*@v輅R%uHAVEBKKT]?A-ᔨDߊEٻPA,mBQE=?5m@,28=RD=ҁ( D5K-UK x@,-Ew^>}]XR3 BM6atr-@v3]X5[YYPA+-4BV♓Z' RLU;50J-@j h8sє]SA$)"oJ]HZ)RQQA`"D#Tt~ R *W/v!F+\hUX4Ym9IaȰY@+E}Z^fEZRdxutr.+Q!$BWgF 6˖Ϲl흗*+E,Cҙs@ 袔yQ}NLXť@+BE("z|3 Da]#oYr]bw)i;O-2 /^)ΰ1씠ϷXTvj^@+ le`N\R DKVRr0ZRdy;Z6? X%d[':k ^TȖAJ~c0:a?!A7@T0B",z ECkya]#o搂icq M@!/egahpdh ]`DD @6$&pӪԡ hamk(@14UV(iIUS[Q7]}ځdůS=Qfٸt|[qB+S <E Z0K=5R0Kqf@#R;RD$E<:KZWʩ3|b{F?PKURĥv.7l.\oR,YBawIrHQRt,@@0Kqnf)Μteݢ,J1WqR D)eB#8SfZZT=TԚ[@-ET F/^ֈ?E h(,`" R⺁( aiRYUX*řJ?E@zd(YVzV"FUPh˫UY?y*UBpJ=M%XP~9X*UZQf3tVBfMgѣo ;gZIJq#'h=άU@B` ڧ(WHby;e X%Du/\Ư X%ĥuo~ XHUQ+Zn% 8ꘃ)3FWuP+řW5JH?UD@&'@ %R@VA; 8sg_s/ j bNZ@>Vd3wJqbIuDA?. Lk#7V@+!"r/RGh|trvI"e'@E,BK7y1`Y dlC5}h!ìGb =0_'ӸOtRO+Yۢ k„|0I ': &F82!gqlj '&ғtrbjF^$eNM7#圸{F:IDGei^y'넠5׉^#0F<;9=!N;>܍w~BoVo7L$l·6&E(1-Ƕo̶| id[Q]5Ҳm/3bl=w|3ogqh{8٢mLlږo֫oζpm׷ŏdk~F~hۦo޹omFd h `R`E ^0)xKxIW]xaƤx <dR(b$^pE)^2)n/:/XɎLJ<*YUJ:&tCYUygM &bz2/94/\YyM{^7)@/ "C/D+ZA=N #x , 5'ŜzO/ ZiZN ] fn4wwR,rIɱ%OJK'eVJ^e^m^ >)"֙[%{A x~R`oE^o^? o-oQ1XCxDŽ5Ux7gxǤAYdPbM'ޘ+2iyx+ْͤm;ΠGYѣ;iҾd-N5iv*o,oݚwY MZɬ[Ҽm[&o9otY37yS7MЛ '֬ 荑IkLoVI#zFvj}ֺXkVZﶵ\o^o4[7Oaٛٛ' dެ ݓok I g>iyo4[7{ LDLX&&bB. Q^pq<ELt„)\.\c"ab.aO͎~.+ LDJ:&.ur(.2U1gHs?>]V3tÉ,K' 0HD]4#]Vr"=i.a94)LtI͇krlK{N?M"TDMhHg&j§.UbuVs5WuXHКL)Nnz.벺.;5 _S?ł]Px":b8vL(SԚ]$]ڥ]^z"ATv!k׺69lvYmvu|τM,]t܅'&p".buewS%]Fޥ'r]5M76SDn3V4pۃ5'ł0U,­#^bbAa6ne1xXbmY7&fF33 qS7qs/1AX[-[L]mbJfܑiZ633q7q3am&@fCnCVEf;z!_Y*3w,&jb%rK*wrc+2{,r-u~M>-܆̭&vffyh4Ws 6is+mfrf?ubg>w37=3G>3[?s>bmݪpbghn8N4{E`4Fr=%FN%~-*ҭ. 3Tsbin&n:1 5CQ7ucR7/}[g:1ju3׉᫙ºq\ hݤ֍lp2mu'ֻfnV`vas&vb7~8 IH̖ݐMybv Gj7v3k7bqkO ͤۍ 'f,򧉹O/}bnnn>7xw'ó<~;&d̙MK:vTڣnRnI$xIH_4Q2)gFJdg4TB:K:Ȥ=05iG,d4ТiB{j\Ry!"Saj 2)RUly aR2 aR[lP @3K}OZLcNH癑 y36ܣ50zUZ0z`4;6⫟zA-V7VR#[[nA+ELB!kɻQMPת%+Eonm:qODjim0 p0ƪ=" ,ȑ lXEJC2ٴ\AB^uY+oxEy&[d}I*`Fj%bjJD5&N$NJ)Ŋ V"hBv^ }M@6+UH]+>_p[^al K[\A)u!|:Reϲ+(m_A(B[A(EPB-N#\ѧr?s+%d=7ݿܿf+Z]qvX[.H]?_b ~ =mjX[ D7-Y#H9-΁mJxi&x55(ViEWxH֮dzDm[(*ceX)C'Z-*`B0uv6 iFQۜ g>uՋ mMsj4YOEk*zQ29%Y}ڮ[Ω2Mk@P)QUOgQ\b~+@<3YOe-3i&' ER€%jxTȨ@| *'&JQ둙I@+]0CLdʹ JE8sTD#r.~\ifxݞƕ?;r([.ipH¥QT;k&PBr5a@AR^ty0\cծV@e=Ԇv@A k!Ej0\k!Bحv1%rӉs(u5r i9ze=".bB } "/D>>QD3TR>uͶd&tqd/|7 @0$%Orr)uW]ŷ!떜 h|ml ̡{2$ .Mu*qQڳK XBqZ5>h/7IE}+?$ 'Ҥ؀4\ݶQu@:nG_E-t;"{a"M$ H $DO8$2p^Omu˚)U+ynDņsѻ@8<";^,#VXZՌ}uEFiIXUխ]dT- @"^${]Zu@$Dl~]% sq5}j+umrs6 j^\@:VfG]um՞I]-ҾJ6ϯ|s{ۆۇ-Hy|[A@ ݢwT|&w)T dy'hmpE} ,fm $v$mP5K TGы9q/+uv"qŁ槶IjSb}SY2?Jۡ@ZWPm$dm7Xp_zW%ڪ1\;ޛBQvŹ$Z/_{]$)o=H%!JoۣqCUir(}*b̝} I@ f*!Ȟ݋k@!:K8U DX0L2U_/F DMXY>s X $RUa+5esU"CvU-H]n"\RU`TZhTVJl.%%s:R DKYnHZTe;Ey25Y~JV $wTE a땢gI5M{ShðjQMZEYcHUUc6(RVS9W4U1(mV;[dX^\65USDjʒ1K-:*v/* D*Z/W\QH%RlQTZrT5|Ql¦NF_ڪZaqj r\uBZ dQEc86DadSxJF眮z@t-\3IϺ@TÓwsFyg,V h[e,R(]妁k$u @ʽBMVrTFW!.goէFyǍ,؍{9D/F SYHn ߑ%BId-DDt6D4YrT"_eԁW#A9jȡUu;?Y@*ayخcμ] Je^HVRUD@˒U0>SRyQD@G:h*ka5By@Y# uJ` G^ RlbRltD lȦhuh`s"6:)c=/mH}hT֏@{{@}w_m&zxV@9WΩh-j9VeHaѡhtx1g|4J 3MY>0#h R"ʦ@XmٛZΜjPH˞*61RNU6C·FR)y-TR}W7k7+x"{ѵ6*@-l )@x)}u\ lc\ ";i2߅5q厖{vB/5o $F6(,$@ dw72ѡf MM49gce |9;Vf yp3FUDH'@W4 If;.;W7z©؍!beel LdF;L.i}uRZen ëT󙝿T3UUf%yx R>@ڽWy ~@ayd@mс0uP/zR5zϣVp[=1jgWy :[)eܤ|1ȫS4*婙>Fb5܇Vȩ}ɬD4MѨdRD jH J ];Oj*!w0.G Bj(&ߺh ƢdEr 0fJL 6n*I;L /+@-@@2}D |$G1ibE RvJ"6JHUxF 4 6D HUG | % *-H[$Sh( D1*R$vCȡP)J ]{%r>K U,:K%]Z0Y %eS3p#i@$5T᥂і 8PI$rO $NtR'aZL$#b"a@eCH+&EnaGČa-Gb6/Q@I8A1%X 0 DS)N!@tu= D$W B.ѨN@tuO D)PIX¼FBWI)aS0k{vgJT+ފgSOR Y"_I ۡV84~% d1E'TG5(ˮ4+Y^jkP#XlymkS٭- /@xm CI%+yԆbtPUuP VvIg BEY۩S@/](2mf)@x)@tu $U35aSgQjҥ&DubС; \aQtȫRU"n,E)%*LA@3.Wf ;#kA%X)" 2*CM%@tiUUܫآTBh)cҤX۽J!6 @:r DњJS64›TX);Z)?ђU%WwuIAMݗl;%S#Sy5ȩ)u@tq*S5 uq*BU[žJCN6YFDO}gPotTKCq[@ףfn ]J'{J$]LhK8o | SyBZ)R+8r¯DCYbvR(.)XA1QQV2ɁTR]jˁTdC@ͯƙvDsL@t | %">Ĩc@կNԴf7NXեsJlBp(CRdR݁P^WrѾuRDgϼ)CxR-WYJ"UܩO5/@KTT ּTf\̆j L<_=8[Jݎr=;"O"ʐeE@|vVƵ, ϖ(>σȦ~Qf?EyGGZi3 Uex'T症!ƾ9./D3/S2NEܬOVGxBO޴ >ގ"AmSvA'!HKt Aӹ-mA9`%ydk:iB4m3͑t*ON WgO2~$} ҘLDϬRFCE @T~H^.OӔѼlO!)GVYYoz٧F{"Rmu kȇo/3+I R> Sڤ[)/[BAvi8 UZ)zBin{v,?#\H:mt/jlӎ˲If{I^e!C|=NKcHGzqPraZ#el'%HX姗 3ۤU399XM~JϐEl/E:/˂?R n>ôFcdu *-~YfC~\O^-H^yt>ߐfG9=S=MKq3ʦ8"CMYw9ڳ/Ws4B|я}Ks9@rY.'v{>tkCK:*pL/ׅ^ q<|X24?6u\Fef8#xT %if_ OZ@(Ѻdtٛ,@XB)mR` Bn#v˶e ^Jۖ1A?+LU%@z,[~JݚL %[=(řkQ6 F V$.P(!ܫN3xz.׮ j7J؂)_0c^#{Azs^F{ддFV~죳-mW;y$ND3O䕱_i>|L ;6|}€ &cA7 iԃc =3M2>M&+liѧ}L>ORKI-/|1YRŗ3Udd+_MiŞ/}8YX֧ĵ5m=Yjrܗe-p i atSN{852ObqfB㔏BNM'4Ռ2)1͜ZoF9Lߓ t)E\:iuɯ:;iu;i<#ܳ hn.wJ}B5m*r] ۸͍mFo~d汭[?!B]&ۈͪɆmzƘd Ky>MCWma6foڦo6om7m̏h۩l q4m&[)U xAL x&%* /[xAƤh ;cR bE$^h(^2)j/XLJ~,*Ȫ6=:&J-O(k*o.I#5{yCؤi˼ԬmlvYKݳy&M(̈́Ï޲m8iJo|az椙i2)rj-޶:kmWoZzˮNZ=['m֊Mϓhkk6mfoo4?˽|֠n=6wkvIK{k{D\N`"9`.].0I0)[H2lK;KDd$Lj(\e-&&001Hs?|DtK҅yC@$-N$Mѥ]%"&2BJtK|(gIo

] B]Rt&;jҤ^.:J51U\pNdMli'&lⷦkB.;}h,D:'&SRƦvlzȮT6ee~*7 @HDHĦ]z"ZԵvkv S'&.r*w1s-&6TnU52+sr,7ךp==kbev`nbn=6'3 39s'43KsC57]scy-f6qO'973?:ssO|Yobg}n>fvn)趃k§{NL(~n8qm4cG7DMírbgin94{MtN}%ۆۏ>IMN'Fԇl Yݳl]ubkn3VnW뎶fzƸ\3u^7u3_5K` 6ga7?Mxflnn<1p6gXE[N-[WOm'Vfno7ӌ 'n|>1G7u7Yw#v7kûw]>o_Cn\)Hgr2E0hLg]ch?(cws.L:vI\ !ȤHgu/8{L:pEy)L0fzpYjwICq* `Vn",߂J:pai,ka?%.A%5AYXTRD%lV򎷍)0XbޙʞBN!|#bxH9k 'SSہ]E&eOQq\.$2irQ|]@F6{àG_ S#.zqF?7tn ڲb0TљY4YeylQԝQ  Kh%LjBZ!DID` )%"9 $X<@tu>*L(o&z~m|Ɓv{"A{w%|zw.}Q9 $x)6='aPbR݆[ ކ@Ӱ Frq 26 "{Q X)af7%Hȹd8ܱKR:]*T֨9XN :1iP_J,״3Ѳ+]3@F` >SDCMԄ:(^wHvԩL{!lNY@4bHWG+cL;&#J|Lj =&Y(b힪ӹ$o δ0%?Lc-e @{H('e9* AeS]9rdͱ=5̬}t᧘—NY@¯D9s)/kXf물lSZcEW#h)@\@qQ3Vg @(V:1P|Xd df H+ZZ-v_ $Xhк0~_;Қ@p :V`6Hjk).w{HS\1W}NP/w }D \w 1,i?\ k/zTN̍@ڝHnHQJ,#. ;\r(-3]@;35'OLRI6 @-|GM&U A:zRHkW|RhoA#= Su4d)woӐ.‘b "HADIS$G*3.'s[!F4qbM;Ŭ}-N=rA3H$~ IN ]M?~r "$֒ɘMQEs6cSRYXp)]oU:}e Ihf Esp}b>x{IGv@vͽRENYsK[S+"Q]dN@MW!n؏ذ ྥ7D|1ۂ:~ܯ}wcIn-GÊov(䧸9Qȡ$S1wȪwQ#gs5~Im~>ohH=qw43h?y *c=y-KG|X{}{ -71IRr[Yj} Lݵ%G;ܵxH&褧 ޷Rv "ءSg^L #Y dPC=ӪGb Wu,"6KT%@CU@JVDAe4hʧz @VS$j0Xx20ɪyBUwJq^4]mJr[<ډ@g < K"Aw*5T@rKU4dE@rYUO1dTTF $NU=5LTaa дBT1g&w:m n,f/>@Ֆ DY6~\F-f8}SֱuHVEEiYX37ߔuuI^Xw1YrP}xqrԩo *U*{T 8-^p Z eMaLE1N&Dm/ĬH8=Y9=2Y+~HW5j.۪ˌ P1gn$U9FҩD\${TJ:5M#Q`JR{ ,[HɧH&-fՀsWgl6R۲i%hY1E84+7!KU-<=+YQK+΁1?d "7BꬖW@V @nn5Dtl{EDۭdžͭcoo;3t>gFoKv!c3C>&H"keM:6%m،cO +^ic~ f{c:6b!lÉ'Wy:zD 1-@$mzN\y(׫{B=JE#뽏)Rq^Ne.R\$ZLE)Uu04*w٨=[z2SlWWtRء3Km:;bp$Bifb;6(cg:vF9.'x znQQȎ=j>:zG$?¼Q1kǪO=Q"dTi]JfǎYuHF?dGmI.%h5Az٣l(SV W;9ͳG4-bk6ɲPBJ{IϦXc[_ٶQ5J?_= Dl,[m`϶AC=='V%'v.pbQkp؈^>| h:fh"|g.y)vEhXᙹ\Xۯ{DԢ)ElŧyD=ΎXgWyGc;8Ԝ/25Dz-Vjr"Q|G3uҗ{<3;;z8è+-["G?:Z p OQ#G[Dp/{4i 2tt"[ yQx;Ք,"B/z =Z3y%ΐq\%9eh%] gC/9DG+|Dt4.BVYR7ѣaW*Iu+9ҭ4XJԿC@FG2VhtEwnCHq!E vt4mǖGGwKzP$ 3*s0ιX*$nw^ZjHͤGPIhg*Jp"U%,Ri=xPfPPgXT[CA2Qѡ 5 !B}xHt(_ToBCccV]~PEBjK"KꄦbOM(-fI埠tԡK> uX:`>JC@3eUzhPKH}I"Փ:tr ܔԥԗ@Lm*Hr\S0ZEHәk*>Q9Cԥ:TOTPXJU.d.2T4ա%1$լTDURпB7b b;SK%C .!XXK M֗K[eJiTY{r Z_Z?zȽQjj}ͥ K!?P܍m2vTĖ[u%סGmuQXSBr}%6t>EAA +KCp:)+]{ M!K^_($!.C(&!@!cI!RERL=ˆMK"Hj'5 C°/i Pi=R+ءJQL/ie}h(c?KC}F*Ԧd<E$;df4%4ٗlyL1`|+e\ʸKԲCO߅/;ty;(1'֧(١CHgGm%e9^TЦ,h0CY3s懨@C%Ru vNKuS\*)+Amk}{JW/˙ZT$>k_wp u^;)jvSԋԧh%$vPL/Դ=9Pu )x>%"JXg \һD .u3 .ߠ/zR |) ~>Fק$: o>&>SH/F*d #KX"|%RLK@Scܴ3zpcdZݰ"$ E">SJy S:+.~{SN.R/"+3R ^4 )&7.K9(x{n$5D$vD\Bpi%5J03?SqgaPZ PB.KSe?̖ *þIR&kv<S48%wY "X_mBj1@&qVgMCF 0n*ixY/%m1ҝb|2p"aN&@L @$Npę*),&O[;.<2q.!<23}4-DŽ)6?Gn'BŷL[XyGli`1( = ΢~)YL~ٕ41OIl@rj_>_( Js!74ʜ@Tn. a`'HKy*W%4i0p;mgb+/MC6+Z $-"do$?DOJyI'SeDvlkАM=$ca(69 (eD$%7zʑfD-x k 45j>EAH?'Ŏ:%^,M`{!$& oD( T#r|}bKQ9]*@`^ȸ+7bY-LJQlY[W6 إi+?FŇ\ AWG*둿'^7{iCv)Y/}Ldz6=ouQ@Zy@On99 dIw:ZG=Xm QI ƈ4H+cu輼ڞO5t0n +<Yy5.3EK1?h$mW f RrJe/vutlt lakNM&3ϗ)a/DƅQܰG[Ɠ4@JZ$} jzIŁ,iH?Ɔ8৯c5lā~rKUArLi-Ɂ !(Z^nN:Z6C4l;ڗ1@VR) ƾtoh9ЋY֢Igُ6Jj41metun[Km.)O(vuҘu-a c׶G:aKOFD@,fGΥT/mhH`f;%uw'@VHRCz붭VK݁yqzr䥏@^ 4p_АZI ZLDa1[qC+Z!7.E(OCK(ѐ2mDQhЪ\-⹭皶ԴnעUtCÀzh#/鶦RHR74AZWGՆ̚iovn0*&;J7i)̖WQAzzvG! Vh.m:vS 6]@$ʨ08 7v"MpCt)<*7"MyiŐ9]*x7Gzivi,poR6 4D|CI̜igeCtZ5}C點( > 1xHC-KƥDk ={g< ェ~J3 0I)%ؘ>)D'jӨjE ?#SFg ^s;s+N 8x)B:nWT@'&U@'Q)N>HtRR( !.8!RPFU5S+'~J3=ѷg^T_@(>qoR+{l ifTBm? HE@+řKf h_AEHG'S* E&*b X;XP@*W' үe)C.*JT #Nc+kxUJ݁U ?S ƾxiC궞pJgT}5J8ss;,AKT A+ {Yc}CE_/'Ja}c/ v>4K->y<1O~?ZL^/%_v>h&P>gŔIرCEI`cm}L#6t4lZϧGB's*z2?I ,}óYe1x24I,kYI',NJK:=1$z̓=ۖ{>Iٿ/| b,/& ˗aRŜ/|Q FUck+a_+jzE/'{#$p"Ɇ !aN~8A2!Qhq2fBcSCNM(' TՌ2i1Μ^PpF974ЉE'4 iNcBL3O edu5r l4S:(oŝ:wz}B?Yz''ds? |[&a, tc7fE4pM)߸lnoFoM6l7&A蛈蛑 Km&m>vjg[[¶kU]羴\ֶm~oFd36}So^@E^0)V/zF<'bRbgLFODX&.V%3^V7+2b!'zYE,},jYaOyay֤ (lR8fe^Ej^6)v8:/Y MJ\K Q8+\F/gZz1lN:ӋC'VdꅨRUe}ֺZ1Njjsz |'EBa/&?*bيyRm^d^VmUgmU{O ݭ'%VvoV&kfo8I³&-Faތ kI5x#7xCˤcyk-8ަc<>zv Y/u=&JmO(k+oVI;|y[ؤu] hޤf}lVg;&.-CkMEp&I5Szå7ez椹iC2>g7^=6;i}vz7zxxlM=ijoloޞ4x[7O ޔ>[I{e"`.30"04pF'Ă0LL%L¥#f&A2.erI pi Wxs<;L@\#dD\jd"Gb%.k')&2,KLda\:f"/c4.SR6.w31֙DԏM$LVȥ&D&a2G.rIICiTv2'S(52*Yؕ bh kMķLE\&a&*cq20s3Bs0D\΅\Ln"8Ԥsٺ߹DD~Ҁ.?8(|D '&hڌFx4Ht1ɧڤQdDҤ/]%4&i".94AP }ꊺL$L]ԥP].u"j.:o5W5X>5i]֕mMamzmg&g=Uv}xj !zgi$_Y;xe{yȈ@WD+G+Oqீ/"_!VG+yD(&5.tqW$+$G+ZG+ m"S+Om|}/"!W+G|+pȼr_I_d?__$?2?tC%6k-Ţcc:cUZ/|~p<| v_K_l'>__,.~`|2~Znb{b Z|F$ؖ|M'X|lTV+_;e/.뗯=Bk3Oo7o_q\kIkOrkKu.mOZ,}mVM9},PXGZPbScZk}~x}~X}mžc_{_,>6g_+_>j_۵5׾6p_>s_[sOkOwamAk0k*5b`19!b1T.~wǏ"ɏ׎kYcfcZz~m?؇~-F6_ҟ^ӯ!/?|Ub5oc5Lc85~mܯ/F?xv_K߯/DžkT2iwD6c_Z4mN3a/9kr,ǖkqb1bHӴkl >_+]5>0ӃG}GE\QK*ǥwbT{s8rH 7f8gʯ%MT:.mԒ. ^&QKBx|$3Z@1YQb6e0?_QO*@"vԓn'qE= o+(IGQOBT컢t 6IK13fg%„?I'ьʃPN:ͱ\QPHhcܷh. ĩr" 'fQD+EVx5!@K7]TN! KA.‹M@+J3FEM ` g.(E@NCKTI_T. b:w#_E%+ Jq{> J05Cuƣ@HmRuDA{$ Jc=>uz/ k݌G H[;VI ;|!'E]nQO@Tk`= ڢT T"@ĽlQOBn~c0X+-Ihe}Q=H7 {K1\ X@:/d\CG'*ZS@ھ!~nb߆tGx5^. g!/? #oaGx) BpBp!x!xPi]U?p/)>~_ȑ{#mGv Ĭa\ۏ伶#@fw\g#w1[a?4^xc|9^^r rG>}!Ǟ^޾/  KȖZY AB?+ځk/9epZXUn##Bc\ȟպY A#̮04~ 2Kbv F^8%r:-R_ȡﲓP/Sűgå8s8y. uܗ;% qZ;v(.7k{0p}B-6% ۡXdƾ>Mtl?,;J!kvwv* mWAAqiO;v*]gX {!j/厍80 x/5S,KXN_ʒ/a>BPݏ2vXI"vsj?Yb/Bbw/6opdySyGX^g2U_ȩ 6շK `9gȥܳ^cBVl)3rؔgx86 1xVp MH6|!DHZ\'hbZ&?k~k,_ș95ҹ>clj L1ݑ#0#e%FVL] #x@f 8o,j i#oxtS_Z !eh^fGW;r\ʕI[{G~!5_mg+Y22՞IS2Oknd-ٿWLr/5/d݅v7F;TA˼ՓͩZf`x!5w]?RfJ[kL[}y ?΅lkËqf=Vs4ѩY(G#X<3Ӳ빚6ǻm(Oj'^WR(z!Wȑl퇳K/fHO~Ε/kpj˚KRJ;֎p@d(m!bn K#m/dͬEvg.='&vxҔ'_H%Nv7cnܷMmU)wÖ/=k?ܯ;_H?Ҕ.Ĺ9p*/P|OYPI?ۯ%;DB8 HݿղbfAD_ IFVHұ֓g)x!%;DB8tz/P6kD/D!-ü鬑UlI_Htj+M&J8(頴#IA`G ~d_ xv:-8g8'sR)5,*CǣLh]x)eY K;BreFPiߦTsTz!-3Z#%3Z!Tz!ע.|+ " 93RF'oI-Dv`&+48VdP3`ɱu\˒om[\%Sf}JH]*"}u,ʶ)jʿ3Z!םy1} d M)K^ʘ뮲Bڛd 25rسoAy$SpFfV,H%_ȏder%ʗP򅜙 5)8_,RgD{ZBjPkerg=В \eA7`lJ o΁5H[SBJf};}!W~dOJH?jP\g)ٓB=ry8DgKUonm_9{ݶ i/%z7`:OyK8 %2zoړ_H{`#miOVB~!ǛPeEk]5T;+U;Br.Bc1%i TK\˾į7DC+HB{d?v,)Cy}!Y+C6r ׊]Z)J߶ɹBZCuܭZYɱ+MISC~G)),#c#%MT7xv( 쿐>5S_hﵺv߅^;l{j3\F njߺV]mٰluZY91YLɫZUl?,^ZScچ/U-8^H}B{n]k~tɫswQN'[8 9VHWv߭';+\oxd5^4[d> (8;pN66Gώ煴d)ɧr{>3NIgj}:mrVF%9r)*ʗi;m̙{p-$r˰z!{U/3kz!{V\Փ]W[Y,^HsIڂ bc&#P lW1nJ&mCdB7al/eJ YȘo-XY6 93wXBZFJ&B~.{;BR3}BGc#Bd觠 Щp bB(霸oCw}Bw;#=lj!! YA JBpW, )εB&|!Gv_*;wn=􅔤PZH\c#Gy*˳7֧/d-э{ dX2p+,l]O+^TvG$׾T7BB\RXݷ/ 9߃}!-F{0^/J#I Bf=e iom=jymH.’LVX2re3R2 9=Ӯz?:-_HdH̀'-_׸_@ۓYمQ|;592Bm48߀Β풾%#L_rˏ}پ#{~sE$!uZWܹg#z/YţNjFUxTu|w Q@ƐvfRD@֪]۪FPɔHK^NDv,#t^*ҫT4_? i-RF.E=TTG>T 軷b[ xR ;c^BMoR: uUUt@lkj/S z t?Grq݂g< pk{^c9(!ymm9(!72?Rdg{cuP u EvW~, ?X'"X}!$[|~ -KF$[|T WdyDlы'[|pdd#"!2W_{H4bKl@c`w>?/pH}nI?o5Пh`'XsUb9oRpK~.G zoԢ~f^46K_C75tsk BзB k[jHvGpm7] 9non^&!zsRCe'=K54=n5$=5C[C0pkh=5PCo-P[!jE|mBoA!;9.֐R謐E-W-JW[$G rEW/wwF Y z`7O ҷS`h]!M"!DDN*fz++~.}{qІe绽%+t"eȯ4]TFx-al)K:۹5blu?9{!v]PMƖ/+$Cn-Njqyd~NqeQXCʌɼڋE%5t)rLa+$!cLkQM P;v^^c̽ õg5ԼxEujjBp~xx5,b›X띩V>∣у6 tȪPᎹ{ڃ R?|ZULS\c6RAM(H!m΅\he{iMa7]zIբ9\?n²$x?@qŁ rR@E+U_QŊqQAA${GAa-p;pU_yS{d:*(%"H+ Фу\vve t>҅(u,UDtDհJT11LUڇUD{ᨦ*h7*^ rOU ̽ s:s Y$?7  Ax3 2/[k(U *kb)FUt||AYҵ EvuA]^~λ `J C#U*{$8?RѼ Dc-GkT߬σ;K@x5U鬻 ru~Xa:A*D2йx Ⱥ u7a4c^K$~̃:g}=?D=gBkewQ)TzW^c !y MA6؀ ȣjy5?=9]MA 4VA*psm؀|{fDU W 5n~(LDo U̽ C6j)puڼ" tv.;[-e 4$WAlM`"Ɵt,gN+0R5\vcpmS["z 6v~(Ԩ'mA0.fN5Uۀb1TڒD!c6 U@U%c4؞b@u*4 Y[ݦ--fND VСIC!*"ch\Gp$#ѱIXƔv`n3nBnT\i |c Z u@x[ X5/81Fc.9MOoDOw]iL4dg=ސ17j@ӄ"εa\0B0Sixy i+4bdc-⣨Q mrs|PGf L(yC-͛fP?h]0<\0fhF|Is7@xh6A 2Y"xq759G,w׃a'|.b ꀜz#r 0Ư, M(QYiAnު0 <40m0pDWJÜ s eo {rk_'O|P4&++C@i AiR#DExH ;583e* 9IC@.m` {>= Fjp\t*$sFί` W8r~,5J - Ep@>E2_܆@n3Bi"8L3W4 dѸ4I rcj?<< DG7ǚ stˁ0: HkA j4F{S@H{A z6H6UqNjğ)N <8&dxڃE `ak <j< CHB?o(0SZ)154DQ:[PHH(}]*-E jF _\1^ud\Z3xQRz4@((͚:tmd (CYA/  ::uvwR}kiFAך>US6'ZA@DKbCWPjϦ+(5zRY% E}rE"M$J@xA)WDӃ[8djDAJQx\JIa)5yPq=ެiY9CRgGXRr$V׊R~ :U28G5+bmܚb"qiC7=/cboI3 R+ ڃ sM] ˩=)G,~uI= 0- cW(Ij;ZJ_,{Tt@:?Eٺ6ϥp4㫡bl i6{W@KHi0[) OfcpdR)j⃨!heE [8*GRVbcJS#)𩑀\o%r 0X& iJgE@,y2Og—~Í=O>$ ;ʐMҜzˊE Si{Nz@Ӳ@t8W*\לTZ\0Ak /4&H҃Weey,y-a d )s5^6lP-_lR}GF:;$ߓ .kTTJ XZX^檔LEb |Z Zي~RHM"@KhAB3>DTk=9K$7:Ԍ~E@t &ԩpi%k >ԸrOtp]'Y6ޡ~N]n :80K.ߓ28Uɍ WwQ#ֲ@z\?כ$ҁ:j|\%jN9E%d݁Tcgv oI?AzՎJޡRWT]_ *;0KaATe ?_C2RP!yw7i +O5dhF6!YDI2U GW#D(>$ "#h Ne #P" 0! \36xT@e ⹬5* xXlсx>f; M۠drڊ<e=k[{V6h  r9ps:bgI U2]B ѵy˳4‹CoP_7@t:y=g}֧BtYP;C@BTSr3Bmr<B^"bzggO O H6؃h1SHӎ?ڮ H6M1S)*G}р>^ȋ)Q/ze >`{{S,ymIb-~s@|G:vN"l !s]$G=(+'>.Z>3 Oщ4Wǵ!vE!1y"hWD׆,1M#>r| !RTi$\$izɞ%1MOL.gF>UIߴ&>|孶Q֝@xA&G9K(C5Q6 I(RoRyad?*y)*Xa#\X'r+M1 ,^7 (=Fs,cZ |e^ ʈmp YMpL!l<i3 w/<yjoQ @x#Ϧk>o4d5 Dg3#GCz߇^b25cOƣ+L@t2tO‡GRu62a"@zR ܞ0F?f#+ Q=5BhVa?F*l !{'V@.k~a{ot!J>&@‘8{D5^c#?r YDWcwt e jca§\VhBlM9) N.ϾL!]RJ#{:e?g{[ QFdX/:Tϓ_ W BZAlI8|B&ڳ"Nq H]@. =0,f$iGތQFzʃ].PA0hme Ϯ=kBa"2Ix?c(# !^QFjTQF:-֞/r.." QGB:)\D fEgC(#1*7ޑ( d({J& 9%b&_QN7uDi( "\(\GcV"!ce~Rłb)\A!0xs䩠+$}E;~ɮ!>7ۀ@* QD։rꑎrr[UnہGo"BsB%&l0*B@$hH !M;VE]DZԑN!28- I78բ4 N$5!_UxO==Hg~hSTHnQHn~>K- I1[ԑPH:~jQFjBNz*$EZ\>@)C'uv7Xݶ.]|n=i^w"Y7I[7f[7>=ߴs}=oc3o?SznvHi]f>ܭ~6GX^W[+gЁj:8'x7Od2&ΚTqsVeE[ ڳħS3C'I-3%C+R||w5&{6JwK+_q^oad_"RzN/)ӂt2uF^pu1S d)R!SqO)tiȔȩȴ)ڃi(Nw ttpREC:.'gz]qN[L{N{NV݇@]4ݕwid2ks AC?T*L|^\xYON-[+K`%X%i0K^rƾZZƴIDv>*KZF}/tb55 'c@.Xk2q*~YMx AUeU. ƃ8DU VIrJ)_U[Š̩߬ڀW .).U2R\j.* Km՝:^&]{R* EKC.zi{avnكh:5 UgDuzbUrr.vU|&ˆ@d '惜J TBP u/>Hu %U |NuM~-^*u/z*S1"PL:o-TJoVߕ&C*@T5:/률4O' ή ى`%d>{*wSLVԛ/P@:^QNQn s`PM |eqh0J`LPk#2ͭ&!rm- :T5Zu[h?Zw2 yuN̹VBB[1IIruz"j|x*G} /C86(*jSUPMEEgv\ڌ:@^U%Ru$~qTuJ#^3VՌf-]603USE6mT.=ACs ǎ!z(0r󷪤Z\*Z<{DE/@,U[-;Kױ3aUŚR TYK14PCGHA5nr@*8Y"[\DTE$\HGlNED>]wB+~ DA'BٚP<8/D?fAx$UM^P`; b_tO)Vt't;^D=nԝ1S棛~oVՒu_>^7!,z"ݚXijen]M3}-IqE[4[0*75VtS'r7*IkR7c9 yAs g21G4g2x>S;ɏPN %rzH)"Y9ɺS|Nc:MM06饃Rd5mb]gE5#C^jHhOk(CoIyɦeSGM6xT1Bdf3Cf6=grE\|mq'mhwOD&{5]⃛8w{nˌuܻ* /rآˇ\8Fo}ρ؝%Y (th.@1ݜiA56= ṅ(khA6<:&1hһ!&I0Y10r0 2g9x5T\c#M*k5~bQi'Kˑ#ODS?i9k& 9yXM*i:'؞ D3G -olR4$ѥ<(9k,龔8Rs)9/y ,g ΛY V2s+NPx+k@T!@Y56a4p5ƁP)9uYx6.:<>t[w ȝxɞ;_<LN ! 1)@@ S̨N ϙ94h̼ ״G%!0mD<?f뺆tOs>85}LP8:}!ԡ$H8FSd *,DT32Umk!`Вs"'1!F5pj "mmX(訵0^J CTKHܶX29ʚRR-VR,-ӒθX :KnL*yܒI1NACNѐUNagN[4%Pr&UvRVii*<-65UCIK*<-m)5ob .X2j/9|pLgL)931,MN[f:ctd|8tr;92VՇ*,p,ﱸ\ E[htƭT-ƭrHClक़DuRd奐fՙӐ NC,5TeZRCU:5TeZTC%^5V%F-5DV~Vj"(V[^PƑ_3BXzѮd>N1.7%XևRӬyt:4Z.`Yf)Y$fYHf)YlfIf YfYf YfYg Qd8zbe?]?|dkG\~54_RL&T\*mXJC%M@ &f6ӧbaIjZi6+4b8O kM6$KIZ`I5Jj96 ,vXbѪM,ɥKp꒗K)QyY5e,/뽦5,6i9LK-L˃-YKC|KzRws#-yY6e>+?.Xe$śWMRE$˲-ҫXP?~I0l-ԕKՔKI֔K֔KiWܥk(b$dϗlgjeHm1 H6*VBBT @ =A|k`B&/ t{aslTnb*t"o F>ԈXV)i%{ IK9e&S>9>ږXJ Z9 *K9T/Y9#KyiZ:*[:zV+[^:<-@r_B"Ձ:Q>f,u ÎɒٳJf eCהn P`dg)CCJѩ(|9T`-KJR!ty |eY<$hi!Rk:ty(i/}\m%m^CjƖÖKo/`+ч0"5})/bCh*{<4ײLi 2=S֖Āћmk_@Y,-ji6pVK=},.Dz5Cy}=|mpKq@bQ-MIoq˕"ӹVm[ܧt}L2b|F|& 9nimÜH6I^6#KZL/iW2U8Z&'SKeSR?-V ɲj\e:3!,2ؑcO/3Y}zqQE ˒jkͯhkR^]>ne;Kc$u|O{.MҞea?ew.!.WC:]j,׽Jg/tﻤ.5і `:S):r4}y Ftײ%g%6y6AMDy-NgO-a)2uU2~<2,1)0=&ק}(v"]mgI =msx6m3ӿ/57Ae9tZ|A.>~c(fkxm*G 66'N@:NӘ*}PVa%Bک.WOҞA;Rɋ'OajھeZÆ!&;lLĩȦv{mx|N!rˡp 37D/! O{7Ko" ޫ{˛>m~mNŶ[ph`tX\5o;k{r@͟|ny)Z-`Ar?d^sKSy lhz=B򫶞򴞇={=o-;c w&ۤrQ=.F >d^5nZ-Kٲ-ckns-~ٸ6]*jWv]b˲mݻڸ9ȥ=|z|droJ}ro`h7^B޷ZdDTz+QIY%eqӥ|%$DH:Nm| Z(%U b(%aϡو0QkKN܂1A~=G-gbR@X aZcZ’ZKԒl=KCE2-QG9^Tհ+QGBL~[QLiF IQF@^QFŽTJ"Ez2JT GRtD ujS<~D)Π}e %!JT:SOUT&w*DSX%HvK,D)NA QEg|A4TtCe 6̓g`2R6|PM,`x(he*%H =k4D)SsWDy. >)QF@m\f}2l(#aʲD)N̕rσus$# -QG:hD {n]-QG̳oѠ 2C.QG*@dXtagD)2v\_^hU @՟U xV%Hжև @E$L"RK:RvATNԛQOol8zC{Xun]nW ֥jS+ދhtl[y鷍/kE%zxF[ûY~]ݲ]@t$E\ ٞ>U{'rO]=cֹ?sts$b|$k|{쀚ǗtVv҂5FFV1*1(?^+~H;!u鸫_wCw$f=n`R%ʫ9z7p*]:l}R+M"`tjHssY.ǻ/uU S+%Oe gd1Vڲjݧn'%m5 kޕیgي D;V2F rK3H6[oi jWŚ#ن1l$&= dZ1I9ʮq<6ȌI_mtqc:'Tݺ@u5&;+.y<:{u!%U[]{fc?ƀ~W?&K!D;$!}bڙ_Af1![Sɞ6C;"'&jw6drdx="nFHZ$kV,dYo5Oy% *9$OG ɗɉU&JܜtQIN Z%P :BIRT#xt[B 쭋ϔZ IyJD_mHnU$*!xߘVqIruL d` ԉ)xj.؄]2a4+(dz)nLd@ K$S%lP|ӌ If*$3e!ݮMib*6\ѡDW D5,ګx{@6>@ sJdD֔-$tQS(Ű qb}JJf:GҡqϢLCgѪSez6{2I@x7I2~rŗMP:69k礇$i}_ϫTeRb_&S"H=.LاG r藝fjNH4?, ēG&8ꉿ0$r5+$t5MTv5ox=J^'[⯧_aф,hH6SM] ̼4ջ= DnsYfMKmTt_P>yh 4ֹl5iN%Khar1Qof»F#㘣9VDC퇂RS@4vsCCj 6Uaz =f5| ::R8T.M(&-8"$udz  а& Z8>5&$@}~I 6@v_$04\bM;>%j' :Pt(&2% }cP:4zz L>X R+KATYn B%Ad 䐄KYAD 0(B ׮ cZ)TֳBlTv] ү CPb.:FPeV%T/  T@ לr)s*(ـ9ˤ;0rrj?? i, d':7V SY(m,>hÃS =t`ާUg:Qlr2&tUvG֪|)JU ={J;fKPj8YFO<`tZd,H1HX&SfS"/jx-;+|!"] 1r e)~[V0(M-u+K5Aid>IC|c)-5Fli)KX+MuۀPVnqRѩGg[ȩm'B"";@ꐬ݃^w@&mׄHݏ{g:xWRM>粭 G& .‚@vAJ>!r^h9[RJϛJ$= AE | ItAbaF Rx#܄{I q:&H L$% NǤ6 )T+0J$)~ɤǢ@&)[47l/ChBB@{KAdO TR&(@(e'm)+RR)P D1}^:E$Rс(zB^"2KtWҡf/%4^PP:@xoI+Y-a8,-FqI>%$o dHr95e\ Sa,ɝ Ku|j/M)aܔ@0>D~v3 ҵ"FʇHz@IA$z% ]pDd V>Le>33e*J%}eyZ.oc)J?HjUSuɤLDիuE@t d?_#SmdEn TSh7#7*ST>8iSCA8"Y4ͱ9 p#O#] H"3n HMle ?ȩHb@xIH;I-Dԟ^ ǟ?IQʉ0ܜP( 1ޯەbp_rxqw0m)B](Qh "h]@ j٥hv;›U2XYR`\ goҮ qB;/an$w b-尀U-SdJa,Ӊg n 4B^W-\N~/=aЎI1rjo L-,1ʟebD<2)S4 DnC2)fN NJo@pvA O r P곦UPNm ;y8|hJdzʶ(Z5'Kۣ()d<ܪR 4ڲ Sm(o@Ze3bl>ʦP+ͥ m[TB?"Y{5fWT~XqL <ժ:Ufz(iI@ j/zȔ~a`HK@-ێP&Ӿ,zf,:d)-ZM6Z=$4l`u"tn ֿvw.4 K4Gl.ކ BB97,P``+^-SA"/ibgB{"SB){>Q٬چq 4_`ܺ|)B9[X{a2a-%LtcRFF~[ DndEm }vU\ D 65~P~JVQeeY6XZ‹aZ5p~ =Y?G6\?kg@)PBijѣ4LLKFt!P0UL0IozR:sSo@ o;z`be7zvZ+W@9Msa0_y~Ƌ?,<6Ɓ5e@k;z:Ɂ02V9J3·+oF[pa/ڊ>5W'oOK'ڨkk(Kn >|40Ì R" Y :9擽D{@blW>1{],٩+jH]={/jHfn4 œADy&>cRDbԝ8Gi  +Ha*=)] ⻠a~E. TQDBt΃k@xSir?}ʳ1:t ;6'Btwg2X4tʒWԒc;6Z!8S#ףujR#0ŤXLAa24pՎߝG)[o@Tb0|(JI6#1\p u.ywţ!l-P<<[ PZH.aв؈.Bt6Г[ԒvB[ԒDD$$CvTC6-ISHr368 AނW ~&!=eѢ44ޢԅ|;Wu@U.niMd E!vLE!VgR)R]8?ȹ8?/yP}祾|^@Z/W _@kXf9M3.2'%!@ʵKg!~{26VҠQ3'?GӘi?#{eg<$s뒎 'PsR8U(~(`UGBq {t4ԹG@8J0@~.(JiiY%Q >B)V twvV읪sV QVz ]:3@x:K=E2 +=gMdFu95ҕk3g;>WСg=+DeYTL:,:gqqX+8yr#sM(Z/]K@ :"?REUN8Mg!WU"]8]AՏ!Գȫ΂J8Z v 4W,1>yh*1GATNȥ!~ֻfwSyKM;v) tjPYû]2߭&fVqĪ(U=Woɠ=-ުp""譁U(b-xU[oId5*Ϣ}oYƚv4KǷƌWyv5Kdidܥ[}U՛_%zqͧkYZpߣH@]şw> 3<̦915қ/3n- 7KL^VCeR~\/3t$;S3O45DwvZZݦl;;R^Ȯ;[Z߭lj QWmha}!y6HZu#cl7dڜ@a8$z$PoR}[#{n_f%![1v۠YViXjvgrT-)i:YnU7fW֝,e77ݐN0i/7;n~g,XM^mv=snھQj_fgߏ'(n@:QNePU@ J(T%.:5VM"C4@E3:'lAPN[«# HY;7dUMJh""-Q=t]0Dt,hpMS/M%e'?3 >C.Cq1ǨZ(yHp*Dtƙ9OhQ;%^jl;ůsYɤie#LDku ♜8 D>$o~и-ڝS6E&wDM)o iQm}_B̼h{/[~rL'0"Mp)$%fO^} *ztW\&?hw"0pHblܲ^q[kftM%9Ʌ;g&l 8=P8 9d7LlŻ D s-3=V9z 9إYF'5s̱ރ]:kX7Ojz{n4.FKs.K[~nvxgW}aHlIINRY5X5\-g|= lsmNrXɓf 1[6y\povgvy3M9䶐́0y9&t(DYRMVrՁPU|Mhcw{mI@4i?sr9lz =T߹R @c1(Q@&.r>FVOr5cp0)59h@x'[k }OK,?.h+K`"te8BaC](~I7)N <䜧5 b}. D@%R_Hn,I 2R(T/bI2sk(Mc@x$iqH.pucK#[1+ IzؒaI]HbsŔÐ d eZj %%.rHKtY r$=#{5 YY fY Dh9?6ZPidpjݖNۂxFus-o$R>uB՝Zn֖-s7%QwTnvɖ,g1` j,Ql ECϮg%gw+Z:dK+.P` Sb7#KIXRcQS4RNCk-aD-i9X- iUi[ZS854!hyKZ[rZ4'CSrZb=e,J6K2Zv5Tr̜MQͩjnNWKb[KSz\K]thsI񹖜h슣C-K4܍KMM%_PemS#uX6uTXXKju0ZjJO:[GکE]zdKuhxH=vX'R֟]*[ְKI6-keUr&ZnWfvƖ"ohoID ZovM/}஁!ܕ)-NӒ"6IDiIw%JK ["|r? ^n+[Y;՜R4TRݔ2-q%@$8N&cm˥umḁm̥mͥJD >w)wԒnrZRMܣߕrMrW)8I)[ڧ)m~4ϯiep _XװhtuW[J:%Ki]4<($Z\]JJ~P=$q%KrSҺL$?7^+!QS=aYP)|-1o- U%MYj 6ee@}ϐLVSB9vy.@ZEqt#L3ۑC2)V- 48$GY%h rߠ'Ŧ- mn~/_P# }8ڠ8?E?Ml\#C"_s49ϣ#@-./>x>+ٔi1wJ8no3 (2/aEV-^\iO -N_h 4>߹ ǝIڐ%ir5 n6?2r0SZeH)8!ޑDns*Y>l%! ء "BpUPSG@:m,g y1q+/&:f "҃NW >aP59n}ԭ0uK\""rŅ^nVtE}^XwAg%\2EY&]ty4xn N(-ױtdŌM˞0(2Mԥٴ]MB-]rfmv8ئ^6EYnSu6jOc)e7ms/4"/4J/),K!eKi7N=O.CK9]f8CuTp}!* Xph,n2<b:J)4ôbǟݗa˻1(UY.[&]J{HKzyMvceg-ٖeΗݾ#YMeM[Rډnt˭U5==>\?eAiie~ﴌ%ڦ Nn)~o[,+ ާ( ~:c|ԙʧCw:OYm,wYE`?\' DJԔ6tYGMi`c Hq^߃f}dt 搚Ow9jJW-;)E6mw~QS:: iU5!uMFQ{foUByRѤERUD%JR''ڳ%J0Fm(w:yWg K%N?bTɻDI v𧖀"XrE%jJa9̔g5H %JJ\'JJEzRDqI׭DE)xGptCCRD%Vձ6 JqDA ;.m984SA۹v=,7N>tDAb3((ŞE < Jt>|*\M\% J((E:/)[rYD= ;SwWԓ"DȆk/y+H_Boz'I+- jp{33nfD @2k!H<О{|zsNDh<̯nWfeeEFܸ,f96((gwO"%Tiv8|Vvqe3/#Oi݄0NvC=7G ,1y徸M1*i( ?8UݦlDi┗MBMySˊ'DNVUj@~[1WFVD1muJ>+Xt%-Iв2)\Rlo2\v'MYq5R|H%b.KRAFt$qKW&X$iu8J4be-'s)oD TNX0Ù6yfTrpYJ=fygSd _n0(NKlj29Nq([ܼ^Ib>"ͻ$oۀ@sLh0&C#B ޴hTL_ @ZMpnQ3;3s OTu4qR&>1J{bD㢣Ěe1+W':DjN;L)觰  $PK?I)NDbif J 8h"tN R̓4 {yEY;@3 HIHI va{w,p|Mj<񗀬gSwjQ+yS ӈqK~;lV MFz4#)2O42)=LԊoh0XSwS6@BWō,-,\6g8v(ޞzʒe:_bi\%Z/:'z!療S~KzP&qt@IGfhQdVP\ľ `ضɬ$3utPֆpC3E&()fljlؽ~yfCF2,95Ex~ɏ `u)Dj|Hx :ޔQd8:@W;c3T 9ȑdDr$aR4QѝSxP_|EG3 (C%ɽNICy6ErI!]3WQI$K*(=SaQG* 4ڍȓ)Mqcy">U!OǏTs!?Prr)WKf̭eR"ͮV+d+kQ hdb34 (D2 BwE$1Ӗsd(rYYE\( U*L*rRHI.̔M2Nl k2)5ɞf 87iS8;U Mm4+fQljvR43kjhfjzX`wE*leO\]$@4(®J$BJldTK@˹d,$_* R,LlX:&vp,/;݌jRMڞ˸  ɽ;qT@t5 ~I'%v"R$T HB@B*= )Aw(:~RK/ PEF#«u%<قVQ 8_Pd?j !SR)bDwhET$SISgaHd*-J(p=,ٶɊ>PJ!gDH.^%R , h}I^0 pQ+EPJ ,`v= 螝]{SE1M`YvY^Mm_ ȵ(uq]a hqєV[@i.P[@O"z *s!qStqC J.HHERw;REwyʐdd &"%0`%T`@shS"lR ru*a@iσ Sa]T7>ͣFe>!-Sc!حvcŀ++ 2REƀ,ot#yׇQԐ J:@KRqL%U:/hJƤzyIgfRʚ߄~8g@<#!(G:n)О'B#tfԉE.iv(]=3j@oJj pjm3j@Ȝ,E4),%8\]j\@fy[("nIh6=&0k(J6֗WCM[Z/{R6))mH P>7FqaWF(JqRRn* jrpqCX‘>nޑATwRpq5)ϜA9䀃_ &'F;rF:֨GfqnP9[7b(9LŊ#i‹t|POz>ҬcK:,8,' cGdXZєN/뎴) FR;`nD):~ Ո% p_S%(\_x$@d$eG'NyYe,.weiS=A"t:pN*7=vI0'\ aƷP=M?tbY0~Dx([Χ7MGL0c&+PKe*G=wQuiHO_NRTs--@aDQYĞQl;o_HSdx!QfD˥A !Bv 8d0"v!m͐E}ȾaDDyCyvH#?"8M"m86Jɓ"ʵ?#bZy[ڳrWFclN*g8}Yid1"?G;$MyB9MFҚF=2"f-dh2$-ʈlQ*ŷP -HzOӉ%JUBGBטeeFdz}fDء&g'aN7Q\vN:K9#]uFIw"yҳ.2^<4 ti&# z i4"!/1bV-"!#} fR2{ɠkDlS,n+(%3"B]{7؈HXd#vYD\e`ڈ(9Uڈg; qMvjte 0 t( n!t ]%#eQGrؑu#5rizGnsw/ Iy#z,ԑlFDvGSniIc&9e$7i vR7n]G$NH'wKRN]S&*N]GMFړd?8U2ʦ6ɡG2P#o+IqꗒeDSԞ'}-G,tih9t-f2ٌ$k҈3#Ygzi9"vC\Ơ Cӭ) FGDRvla@q)Qltn2[jdYyngn5-YFM*m"k׌p uDmEl~Ȏs[f+|-kGDK Mηyh7"C9|zhD:}x3Ы7C?&K_'@t;NמLGDj62wR{gFC_,G.ŲU;y9#rg5I&)#ο͢GDu-Ig:3M3ɍ#pj\>/rJ䘥3}iȹ>_s؞O>/Ş"H]f"!OoI eg4fԉ)DA$T1 .Ho4G/gOAxќ0@ -H9% (PGQ`uSK-PF9T.*RNIhz) *RN׮U3P<-e^Εל9PF E8 PI:2¾bT)Y$X4H KHy E8$h9# Ԓ"ܔT32pt*jO,TAϻ3@Xpӫ3ԓ*\x1GxO)CĂ/#WPK%""ۈ\hd:jI<}ZtT%xGpB-+LˡbҩQLB*HM޽٨zbҥY&畷3G>m@w'n* |ɌD5ʈTNTB̓_{1rş~$rD;9S Y{JuW)Cg#ܨKoi:0\'I9ShSK@䗸4-5HӇiƏB޴('UEr('drRQȅ3#u@D뒞׵^$c/D"OIu|`֧u)9TvNl}].a^C:㟣;;v LzJC' $d~9HDry>׹{ß~ ,M"pDsEgi2ɦ',D4jRKu'>DƄrͱpk<PDGq:B,OȒmAL) @2+"xB`sC?/HiR$b ~eDh -Ey8i\j t*JJ /S>(Svj=ʠ9S>%bd ]aBXL!"CS@旈:y*6w@:EDotbAgJG8+F59gߗE9f~K:}2fB+<[hp"p/qF2.w#ڰ sjS ADڥ<7PPҙBhk i?|fm.g tfmy3k_7:b_2 k h6ڣB^=c6_[kvmƵeFY H]hsȦ8}:nsLj+ \Bﮋлk'LzU/Vꅫ J])_Ք"쬸tWU+7}!\ PuJRgez-WJ۪jꊞ+_Ys6*htU?ĵj]+?U֬ 6׾fp&XRY+Uq*Z^*誮k- <[ ܹʋ`疑ue eQ[su1]n]>3E̳=7ۮGŻ~4Oz9P5?) E@[Hw}wP+a{}Ycv2Nn~5DPC jI|XA;/HL ٝQg־Au5Y)7{E [OJe*F='TX7t_ @~sRMGj#mPd}2<~ xPnjՏC?:v(2 RO/`Φi\WWCԃus[3GTGyZf1WU۽N›*B̞)S[zEzjϮ[q8]ѕ`}-圧QݍFákMЄdGCЍq3nhn|6#3xќS+ !U%Eܯ)z4]ϭcf=tOCsAʖVL9?T oD{+aQl4" n] l_Jp]OR뗏\ȫv]Wڻ<:>:yRSK5/U+ZNM&k1_ eV(g'6[iV:+ۦS6!9Z}AKEd%b->QVh􀧊cq)=^BdJIgYq%U%!jNe%M%iJlK2U$IQ2-GCIef!J<34S:L;EYԺkz3,{$y*hQW*Y"DS˜RM ? J4e(Ҭsji渖i* VEBjs%x'YMB.K59H*Tt">=ץjP PFF곩G9Ħm6rHᚿuX5%rSrW"!)ҕMyK 9K7%0),Q`ojk͂*Z>&)&2USꓚR*6ƥwX-=xoN)Tr('S UGQ9[&:ZϩJvAjViUźhQԞNmW8ҧNW K:%bi!lH_Z)5ˉXz)G[vWYynw4wWfwwOﮄɀw\LpXNSq[|-IƞR,oڍ,U&Х|.Kff7/F4ÒafCRRUϥ^_V%S5 ̿嫓>_L*U%a_>?em)\$/?SvS?SKД["M@*B$K-8=]d7Ep9Ȓ`۶nFXG tH8E\utۍZv:6 w\ kз;Dw)Tn (syEWEwlY@0@ ˁC3znw C•_.X\(?] `mXKY${Bv(zG$@gJ4LA֦*WxY`Ӡ{([d>r򉁭'@y;joV 4ʮvF. |2di#gkF9ˁc:t%ӄYMJ2X@]6v:P4a5ACQQl?d6# 0Ue$㺌Pc@6(Վӿ(]`U=Ƨ4]غ=#d9E\`,ƶNO,ǪVrtaFVY.-Sɪ62t!aS^]%m`yba\^N#Lqn^ʴW'M&~ֶ0i rmi]B+ ~)9V#t;]KAM+6ǫY&hZ^0;hZmYA3j^X֭d SQ:Tqٻwn6޴;ۿKxyb'Y%Ψ+wqO?&m}ykڻjX<uKt|zeS箾Y_򌖧18M) tn odd2=jNf|Z3{4-4HvfYGG/WK"̐pYTeX'#k/~,[..h˚yҲyw{{W#x.imK3~v͟"Ǧָ+O i=OE[`ԏga=# {R dԞ>;#ܻw; 0AN%^|O+.o^}}|_yز#Nc:IT?vHbQjX<ph;}kgtnƜΓ̆Hi i,ːwԑa/:RBQ{ o )%HQ7Ϻk[6baufD&t;jId O\~]%ߞ\D" ȑP`}@-kC' I1tBSvNGuVE8]1wdD{!P@$3r W ;B! ,KzOˍq($a;\.߃r {&7_8>{c8mv~z da?wgw_y8#J=[y| ٮ^q [xAxp#t o?k<}O;O;y%y~͗?+˫̫Ǘ߿o;eLnx|oRǻa߾7ynIȘ0}_~϶ eo?hϏu׼ůn/~WLL_o?|T^|)M1F/h?y1x a1~~~^q}w? 5_~5N9C3o{})Ea#ӸxphbLϿ~7qmu ݃Lϼx#8o~3I=~e< _ϟCuƓݺwO?yÑQc ѡq^9P=6wkB_n[!}3<؉C? IXK :'KkB̗opLbo5 Y#&޷(呃\q61ܷ>vYO8ϱ|1fۧAz;?<>3R_ugwYȻ{Z^}_fc .F>o g }㷏?|Μzxye3GQ2c/6f>2o>7coy?|=Y0ƌ1r1FGzV^}?vۘPbE-zloc~߹^ձAh>jc-~o׫w?緿cqcٯ7Ӿ۱?{~W?[aOyk<1>"G4rujDojE_߮?p~ڗݮ~v|ym޷o_\'%]Q<~оcLcPe=#w_97lendstream endobj 270 0 obj << /Filter /FlateDecode /Length 919 >> stream xuV˒6|LYAI9T.y[ -Q̒\'< JH3in1[jS\ZǯXW?E:R5]Cjɰ$JӺKZ( ?M[&l/kp>l,la8Tt噔R;wrìߨLay>yѸ3E!{qFkPn !hKU–@k,%xsALwBgJ2VcU/wLcFI 0PEHۖejv}*Н/m*:hx.ѡi il:Gb94X͚PM: : OJ Zߞ""SdyW;t09y8fmZ-|Z 567r%zLpczHlx]>nҿs#~oAkr3Pm`.3v9eKsj$f d8=YAEF:L1tX?gx#EpKӣr`b(g2Rx˗-)~ySٜSkJv`wYg)Y(ߦif߬iJ(}b*;% ٽPr%PMk^AxQjMHW">*+*$5ϚX{HV ?Dn:Mf颿/!Y q2x0]wubFq.Kuo pY͛ ;4* ě`e2BuP0ի$Fy levW)՘"`WtzyX¡YȜ&Gqmb;{J4VN5k ,0ps7#ק;ϯ1ɖڶ`D3endstream endobj 271 0 obj << /Type /XRef /Length 265 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 272 /ID [<6f48c0451d5d7d2b3fa67653cb510edb><806395d3ced96f89c1577fc2fd358793>] >> stream xcb&F~0 $8JR?ߋ@6>P|Y4_ m70&3h&r(xH.C "An"ZA<'0g@lf) lo ]"UuAbd+D2U\2D3=(DM^ "ׂbO,"~ae"sA$3XD$fU.D>?= DrnHl;XƘ1 endstream endobj startxref 522900 %%EOF Epi/inst/doc/addLexis.rnw0000644000175100001440000005647314223477025015041 0ustar hornikusers%\VignetteIndexEntry{Time dependent covariates in Lexis objects: addCov & addDrug} \SweaveOpts{results=verbatim,keep.source=TRUE,include=FALSE,eps=FALSE} \documentclass[a4paper,twoside,12pt]{report} \newcommand{\Title}{Time dependent covariates in\\ \texttt{Lexis} objects} \newcommand{\Tit}{addLex} \newcommand{\Version}{Version 5} \newcommand{\Dates}{March 2022} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/Epi}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk}\\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} <>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) library(Epi) library(dplyr) @ % \renewcommand{\rwpre}{./addLexis} \chapter{Overview and rationale} This note describes the functions \texttt{addCov.Lexis} and \texttt{addDrug.Lexis} designed to add values of clinical measurements and drug exposures to time-split \texttt{Lexis} objects. If time-dependent variables are binary, such as for example ``occurrence of CVD diagnosis'' it may be relevant to define a new state as, say, \texttt{CVD}. But the purposes of the two functions here are to append quantitative variables that in principle can take any (positive) value. Adding new states at intermediate events is the business of \texttt{cutLexis}. Both functions are so-called \texttt{S3} methods for \texttt{Lexis} objects, so in code you can omit the ``\texttt{.Lexis}''. Note that neither \texttt{splitLexis} or \texttt{splitMulti} are \texttt{S3} methods---there is no ``\texttt{.}'' in the names. \section{\texttt{addCov.Lexis}} \ldots provides the ability to amend a \texttt{Lexis} object with clinical measurements taken at different times, and propagate the values as LOCF (Last Observation Carried Forward) to all subsequent records. This means that time-splitting of a \texttt{Lexis} object \emph{after} adding clinical measurements will be meaningful, because both \texttt{splitLexis} and \texttt{splitMulti} will carry variables forward to the split records. The follow-up in the resulting \texttt{Lexis} object will be cut at dates of clinical measurement. \texttt{addCov.Lexis} will also propagate missing values supplied as measurements. Therefore, if you want to have LOCF \emph{across} supplied times of measurement you must explicitly apply \texttt{tidyr::fill} to the resulting \texttt{Lexis} object, after a suitable \texttt{group\_by}. \section{\texttt{addDrug.Lexis}} As opposed to this, \texttt{addDrug.Lexis} will first use drug information at each date of recorded drug purchase, and subsequently \texttt{compute} cumulative exposure measures at the times in the resulting \texttt{Lexis} object. This is essentially by linear interpolation, so it will not be meaningful to further split an object resulting from \texttt{addDrug.Lexis}---LOCF is not meaningful for continuously time-varying covariates such as cumulative exposure. If persons present with very frequent drug purchases, the intervals may become very small and the sheer number of records may present an impediment to analysis. Therefore the function \texttt{coarse.Lexis} is provided to collapse adjacent follow-up records. \chapter{\texttt{addCov.Lexis}} \section{Rationale} The function has arisen out of a need to attach values measured at clinical visits to a Lexis object representing follow-up for events constituting a multistate model. Hence the data frame with measurements at clinical visits will be called \texttt{clin} for mnemonic reasons. \section{Example} For illustration we devise a small bogus cohort of 3 people, where we convert the character dates into numerical variables (fractional years) using \texttt{cal.yr}. Note that we are using a character variable as \texttt{id}: <<>>= xcoh <- structure(list(id = c("A", "B", "C"), birth = c("1952-07-14", "1954-04-01", "1987-06-10"), entry = c("1965-08-04", "1972-09-08", "1991-12-23"), exit = c("1997-06-27", "1995-05-23", "1998-07-24"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) xcoh$dob <- cal.yr(xcoh$birth) xcoh$doe <- cal.yr(xcoh$entry) xcoh$dox <- cal.yr(xcoh$exit ) xcoh @ % \subsection{A \texttt{Lexis} object} Define this as a \texttt{Lexis} object with timescales calendar time (\texttt{per}, period) and age (\texttt{age}): <<>>= Lcoh <- Lexis(entry = list(per = doe), exit = list(per = dox, age = dox - dob), id = id, exit.status = factor(fail, 0:1, c("Alive","Dead")), data = xcoh) str(Lcoh) (Lx <- Lcoh[,1:6]) @ % \subsubsection{Factor or character \texttt{lex.id}?} Note that when the \texttt{id} argument to \texttt{Lexis} is a character variable then the \texttt{lex.id} will be a factor. Which, if each person has a lot of records may save time, but if you subset may be a waste of space. Moreover merging (\ie joining in the language of \texttt{tidyverse}) may present problems with different levels. \texttt{merge} from the \texttt{base} \R, will coerce to factor with union of levels as levels, where as the \texttt{\_join} functions from \texttt{dplyr} will coerce to character. Thus the most reasonable strategy thus seems to keep \texttt{lex.id} as a character variable. <<>>= Lx$lex.id <- as.character(Lx$lex.id) str(Lx) Lx @ \subsubsection{Clinical measurements} Then we generate data frame with clinical examination data, that is date of examination in \texttt{per}, some bogus clinical measurements and also names of the examination rounds: <<>>= clin <- data.frame(lex.id = c("A", "A", "C", "B", "C"), per = cal.yr(c("1977-3-17", "1973-7-29", "1996-3-1", "1990-7-14", "1989-1-31")), bp = c(120, 140, 160, 157, 145), chol = c(NA, 5, 8, 9, 6), xnam = c("X2", "X1", "X1", "X2", "X0"), stringsAsFactors = FALSE) str(clin) clin @ % Note that we have chosen a measurement for person \texttt{C} from 1989---before the person's entry to the study, and have an \texttt{NA} for \texttt{chol} for person \texttt{A}. \subsection{Adding clinical data} There is a slightly different behaviour according to whether the variable with the name of the examination is given or not, and whether the name of the (incomplete) time scale is given or not: <<>>= (Cx <- addCov.Lexis(Lx, clin)) @ % Note that the clinical measurement preceding the entry of person \textsc{C} is included, and that the \texttt{tfc} (time from clinical measurement) is correctly rendered, we a non-zero value at date of entry. We also see that a variable \texttt{exnam} is constructed with consecutive numbering of examinations within each person, while the variable \texttt{xnam} is just carried over as any other. If we explicitly give the name of the variable holding the examination names we do not get a constructed \texttt{exnam}. We can also define the name of the (incomplete) timescale to hold the time since measurement, in this case as \texttt{tfCl}: <<>>= (Dx <- addCov.Lexis(Lx, clin, exnam = "xnam", tfc = "tfCl")) summary(Dx, t=T) @ % \section{Exchanging split and add} As noted in the beginning of this not \texttt{addCov.Lexis} uses LOCF, and so it is commutative with \texttt{splitLexis}: <<>>= # split BEFORE add Lb <- addCov.Lexis(splitLexis(Lx, time.scale = "age", breaks = seq(0, 80, 5)), clin, exnam = "xnam" ) Lb # # split AFTER add La <- splitLexis(addCov.Lexis(Lx, clin, exnam = "xnam" ), time.scale = "age", breaks = seq(0, 80, 5)) La @ % We see that the results are identical, bar the sequence of variables and attributes. We can more explicitly verify that the resulting data frames are the same: <<>>= La$tfc == Lb$tfc La$age == Lb$age La$per == Lb$per @ % The same goes for \texttt{splitMulti}: <<>>= if (require(popEpi, quietly=TRUE)) { ## split BEFORE add Mb <- addCov.Lexis(splitMulti(Lx, age = seq(0, 80, 5)), clin, exnam = "xnam" ) ## ## split AFTER add Ma <- splitMulti(addCov.Lexis(Lx, clin, exnam = "xnam" ), age = seq(0, 80, 5)) La$tfc == Mb$tfc Ma$tfc == Mb$tfc } @ % In summary, because both \texttt{addCov.Lexis} and \texttt{splitLexis}/\texttt{splitMulti} use LOCF for covariates the order of splitting and adding does not matter. This is certainly not the case with \textrm{addDrug.Lexis} as we shall see. \section{Filling the \texttt{NA}s} As mentioned in the beginning, clinical measurements given as \texttt{NA} in the \texttt{clin} data frame are carried forward. If you want to have these replaced by 'older' clinical measurements you can do that explicitly by \texttt{dplyr::fill} with a construction like: <<>>= if (require(tidyr, quietly=TRUE)) { cov <- c("bp", "chol") Lx <- La Lx <- group_by(Lx, lex.id) %>% fill(all_of(cov)) %>% ungroup() class(Lx) } @ % We see that the \texttt{Lexis} attributes are lost by using the \texttt{group\_by} function, so we fish out the covariates from the \texttt{tibble} and stick them back into the \texttt{Lexis} object: <<>>= if (require(tidyr, quietly=TRUE)) { Lx <- La Lx[,cov] <- as.data.frame( group_by(Lx, lex.id) %>% fill(all_of(cov)))[,cov] class(Lx) La Lx } @ % The slightly convoluted code where the covariate columns are explicitly selected, owes to the fact that the \texttt{dplyr} functions will strip the data frames of the \texttt{Lexis} attributes. So we needed to use \texttt{fill} to just generate the covariates and not touch the \texttt{Lexis} object itself. This should of course be built into \texttt{addCov.Lexis} as a separate argument, but is not yet. Note that the \texttt{tfc}, time from clinical measurement is now not a valid variable any more; the 5 in \texttt{chol} is measured in 1971.5 but \texttt{tfc} is reset to 0 at 1977.3, despite only \texttt{bp} but not \texttt{chol} is measured at that time. If you want that remedied you will have to use \texttt{addCov.Lexis} twice, one with a \texttt{clin} data frame with only \texttt{bp} and another with a data frame with only \texttt{chol}, each generating a differently named time from clinical measurement. This is a problem that comes from the structure of the supplied \emph{data} not from the program features; in the example we had basically measurements of different clinical variables at different times, and so necessarily also a need for different times since last measurement. \chapter{\texttt{addDrug.Lexis}} The general purpose of the function is to amend a \texttt{Lexis} object with drug exposure data. The data base with information on a specific drug is assumed to be a data frame with one entry per drug purchase (or prescription), containing the date and the amount purchased and optionally the prescribed dosage (that is how much is supposed to be taken per time). We assume that we have such a data base for each drug of interest, which also includes an id variable, \texttt{lex.id}, that matches the \texttt{lex.id} variable in the \texttt{Lexis} object. For each type of drug the function derives 4 variables: \begin{description}[noitemsep] \item[\hspace*{1em}\texttt{ex}]: logical, is the person currently \texttt{ex}posed \item[\hspace*{1em}\texttt{tf}]: numeric, \texttt{t}ime since \texttt{f}irst purchase \item[\hspace*{1em}\texttt{ct}]: numeric, \texttt{c}umulative \texttt{t}ime on the drug \item[\hspace*{1em}\texttt{cd}]: numeric, \texttt{c}umulative \texttt{d}ose of the drug \end{description} These names are pre- or suf-fixed by the drug name, so that exposures to different drugs can be distinguished; see the examples. The resulting \texttt{Lexis} object has extra records corresponding to cuts at each drug purchase and at each expiry date of a purchase. For each purchase the coverage period is derived (different methods for this are available), and if the end of this (the expiry date) is earlier than the next purchase of the person, the person is considered off the drug from the expiry date, and a cut in the follow-up is generated with \texttt{ex} set to \texttt{FALSE}. \section{The help example} The following is a slight modification of the code from the example section of the help page for \texttt{addDrug.Lexis} First we generate follow-up of 2 persons, and split the follow-up in intervals of length 0.6 years along the calendar time scale, \texttt{per}: <<>>= fu <- data.frame(doe = c(2006, 2008), dox = c(2015, 2018), dob = c(1950, 1951), xst = factor(c("A","D"))) Lx <- Lexis(entry = list(per = doe, age = doe- dob), exit = list(per = dox), exit.status = xst, data = fu) Lx <- subset(Lx, select = -c(doe, dob, dox, xst)) Sx <- splitLexis(Lx, "per", breaks = seq(1990, 2020, 0.6)) summary(Sx) str(Sx) @ % Note that as opposed to the previous example, the time scales are not of class \texttt{cal.yr}, they are just numerical. Then we generate drug purchases for these two persons, one data frame for each of the drugs \texttt{F} and \texttt{G}. Note that we generate \texttt{lex.id}$\in (1,2)$ referring to the values of \texttt{lex.id} in the lexis object \texttt{Sx}. <<>>= set.seed(1952) rf <- data.frame(per = c(2005 + runif(12, 0, 10)), amt = sample(2:4, 12, replace = TRUE), lex.id = sample(1:2, 12, replace = TRUE)) %>% arrange(lex.id, per) rg <- data.frame(per = c(2009 + runif(10, 0, 10)), amt = sample(round(2:4/3,1), 10, replace = TRUE), lex.id = sample(1:2, 10, replace = TRUE)) %>% arrange(lex.id, per) @ % We do not need to sort the drug purchase data frames (it is done internally by \texttt{addDrug.Lexis}), but it makes it easier to grasp the structure. The way purchase data is supplied to the function is in a \texttt{list} where each element is a data frame of purchase records for one type of drug. The list must be named, the names will be used as prefixes of the generated exposure variables. We can show the resulting data: <<>>= pdat <- list(F = rf, G = rg) pdat Lx @ % Note that we have generated data so that there are drug purchases of drug \texttt{F} that is \emph{before} start of follow-up for person 2. We can then expand the time-split \texttt{Lexis} object, \texttt{Sx} with the drug information. \texttt{addDrug.Lexis} not only adds 8 \emph{variables} (4 from each drug), it also adds \emph{records} representing cuts at the purchase dates and possible expiry dates. <<>>= summary(Sx) ; names(Sx) ex1 <- addDrug.Lexis(Sx, pdat, method = "ext") # default summary(ex1) ; names(ex1) ex1 ex2 <- addDrug.Lexis(Sx, pdat, method = "ext", grace = 0.5) summary(ex2) ex2 dos <- addDrug.Lexis(Sx, pdat, method = "dos", dpt = 6) summary(dos) dos fix <- addDrug.Lexis(Sx, pdat, method = "fix", maxt = 1) summary(fix) fix @ % \section{A more realistic example with timing} \subsection{Follow-up data: \texttt{DMlate}} As example data we use the \texttt{DMlate} example data from the \texttt{Epi} package: <<>>= data(DMlate) ; str(DMlate) Lx <- Lexis(entry = list(per = dodm, age = dodm - dobth, tfd = 0), exit = list(per = dox), exit.status = factor(!is.na(dodth), labels = c("DM", "Dead")), data = DMlate) summary(Lx) @ % We split the data along the age-scale (omitting the variables we shall not need): <<>>= Sx <- splitLexis(Lx[,1:7], time.scale="age", breaks = 0:120) summary(Sx) @ % \subsection{Artificial prescription data} To explore how \texttt{addDrug.Lexis} works, we also need some drug exposure data, but these are unfortunately not available, so we simulate three datasets representing three types of drugs: <<>>= set.seed(1952) purA <- ( data.frame(lex.id = rep(Lx$lex.id, round(runif(nrow(Lx), 0, 20)))) %>% left_join(Lx[,c("lex.id", "dodm", "dox")]) %>% mutate(per = dodm + runif(length(dodm), -0.1, 0.99) * (dox - dodm), amt = sample(4:20*10, length(dodm), replace = TRUE), dpt = amt * round(runif(length(dodm), 3, 7))) %>% select(-dodm, -dox) %>% arrange(lex.id, per) ) addmargins(table(table(purA$lex.id))) str(purA) purB <- ( data.frame(lex.id = rep(Lx$lex.id, round(pmax(runif(nrow(Lx), -10, 15), 0)))) %>% left_join(Lx[,c("lex.id", "dodm", "dox")]) %>% mutate(per = dodm + runif(length(dodm), -0.1, 0.99) * (dox - dodm), amt = sample(4:20*10, length(dodm), replace = TRUE), dpt = amt * round(runif(length(dodm), 5, 9))) %>% select(-dodm, -dox) %>% arrange(lex.id, per) ) -> purB addmargins(table(table(purB$lex.id))) str(purB) purC <- ( data.frame(lex.id = rep(Lx$lex.id, round(pmax(runif(nrow(Lx), -5, 12), 0)))) %>% left_join(Lx[,c("lex.id", "dodm", "dox")]) %>% mutate(per = dodm + runif(length(dodm), -0.1, 0.99) * (dox - dodm), amt = sample(4:20*10, length(dodm), replace = TRUE), dpt = amt * round(runif(length(dodm), 5, 7))) %>% select(-dodm, -dox) %>% arrange(lex.id, per) ) addmargins(table(table(purB$lex.id))) str(purC) head(purC) @ % Note that the time scale is in years, so the \texttt{dpt} must be in amount per year, so that $\mathtt{dpt}/\mathtt{amt}$ is the approximate number of annual drug purchases. We now have three artificial drug purchase datasets so we can see how \texttt{addDrug.Lexis} performs on larger datasets: \subsection{Using \texttt{addDrug}} \subsubsection{1000 and 500 persons} We start out with a small sample and a two month grace period to limit the number of gaps: <<>>= Sx1 <- subset(Sx, lex.id < 1000) pur <- list(A = subset(purA, lex.id < 1000), B = subset(purB, lex.id < 1000), C = subset(purC, lex.id < 1000)) system.time(ad1 <- addDrug.Lexis(Sx1, pur, tnam = "per", grace = 1/4)) summary(Sx1) summary(ad1) @ % We then cut the number of persons in half: <<>>= Sx2 <- subset(Sx, lex.id < 500) pur <- list(A = subset(purA, lex.id < 500), B = subset(purB, lex.id < 500), C = subset(purC, lex.id < 500)) system.time(ad2 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(Sx2) summary(ad2) @ % \ldots timing is broadly proportional to the number of persons. \subsubsection{Fewer prescription records} We can try to cut the number of purchases in half: <<>>= pur <- list(A = subset(purA, lex.id < 500 & runif(nrow(purA)) < 0.5), B = subset(purB, lex.id < 500 & runif(nrow(purB)) < 0.5), C = subset(purC, lex.id < 500 & runif(nrow(purC)) < 0.5)) sapply(pur, nrow) system.time(ad3 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(Sx2) summary(ad3) @ % It also appears that the number of purchases per person is also a determinant of the run time too; the timing is largely proportional to the number of drug records. In any concrete application it is recommended to run the function on a fairly small sample of persons, say 1000 to get a feel for the run time. It may also be a good idea to run the function on chunks of the persons, to make sure that you do not lose all the processed data in a crash. \subsubsection{Fewer prescription types} Finally we try to cut the number of drugs, to assess how this influences the run time: <<>>= pur <- list(B = subset(purB, lex.id < 500), C = subset(purC, lex.id < 500)) sapply(pur, nrow) system.time(ad4 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(Sx2) summary(ad4) @ % We see that the number of drugs also influence the run time proportionally. \subsection{Too many records ---\texttt{coarse.Lexis}} If we look at the length of the intervals as given in \texttt{lex.dur} we see that some are are quite small: <<>>= summary(ad1$lex.dur) @ % $ Half are smaller then 0.11 years, 40 days. We could without much loss of precision in the analysis based on the \texttt{Lexis} object merge adjacent records that have total risk time less than 3 months. The function \texttt{coarse.Lexis} will collapse records with short \texttt{lex.dur} with the subsequent record. The collapsing will use the covariates from the first record, and so the entire follow-up from the two records will have the characteristics of the first. Therefore it is wise to choose first records with reasonably short \texttt{lex.dur}---the approximation will be better than if the first record was with a larger \texttt{lex.dur}. Therefore there are two values supplied to \texttt{coarse.Lexis}; the maximal length of the first record's \texttt{lex.dur} and the maximal length of the \texttt{lex.dur} in the resulting combined record. The larger these parameters are, the more the \texttt{Lexis} object is coarsened. <<>>= summary(ad1) summary(adc <- coarse.Lexis(ad1, lim = c(1/6,1/2))) summary(adc$lex.dur) @ % This could cut the number of units for analysis substantially, in this case from about 27,000 to some 13,000. \subsubsection{Records to be kept} When we are dealing with drug exposure data we will be interested keeping the record that holds the start of a drug exposure. Some may argue that it does not matter much, though. The records (\ie beginnings of FU intervals) that should be kept must be given in logical vector in the argument \texttt{keep}: <<>>= summary(Sx2) system.time(ad4 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(ad4) # ad5 <- coarse.Lexis(ad4, lim = c(1/4, 1/2)) summary(ad5) @ We can identify the first date of exposure to drug \texttt{B}, say, by the exposure (\texttt{B.ex}) being true and the cumulative time on the drug (\texttt{B.ct}) being 0: <<>>= ad4$keep <- with(ad4, (B.ex & B.ct == 0) | (C.ex & C.ct == 0)) ad6 <- coarse.Lexis(ad4, lim = c(1/4, 1/2), keep = ad4$keep) summary(ad6) @ % We see the expected behaviour when we use \texttt{coarse.Lexis}: we get fewer records, but identical follow-up. And the \texttt{keep} argument gives the possibility to keep selected records, or more precisely beginnings. \texttt{keep} prevents a record to be collapsed with a previous one, but not with a subsequent one. \end{document} Epi/inst/doc/flup.R0000644000175100001440000004701314421664261013633 0ustar hornikusers### R code from vignette source 'flup.rnw' ################################################### ### code chunk number 1: flup.rnw:22-27 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) library(Epi) installed.packages()["Epi", 1:3] ################################################### ### code chunk number 2: flup.rnw:137-139 ################################################### library(Epi) print( sessionInfo(), l=F ) ################################################### ### code chunk number 3: flup.rnw:148-157 ################################################### data( DMlate ) head( DMlate ) dmL <- Lexis( entry = list( per=dodm, age=dodm-dobth, tfD=0 ), exit = list( per=dox ), exit.status = factor( !is.na(dodth), labels=c("DM","Dead") ), data = DMlate ) timeScales(dmL) ################################################### ### code chunk number 4: flup.rnw:180-182 ################################################### str(dmL) head(dmL)[,1:10] ################################################### ### code chunk number 5: flup.rnw:198-199 ################################################### summary.Lexis( dmL, timeScales=TRUE ) ################################################### ### code chunk number 6: dmL1 ################################################### getOption("SweaveHooks")[["fig"]]() plot( dmL ) ################################################### ### code chunk number 7: dmL2 ################################################### getOption("SweaveHooks")[["fig"]]() par(mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot(dmL, 1:2, lwd=1, col=c("blue","red")[dmL$sex], grid=TRUE, lty.grid=1, col.grid=gray(0.7), xlim=1960+c(0,60), xaxs="i", ylim= 40+c(0,60), yaxs="i", las=1) points(dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col="lightgray", lwd=3, cex=0.3) points(dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col=c("blue","red")[dmL$sex], lwd=1, cex=0.3) box(bty='o') ################################################### ### code chunk number 8: flup.rnw:255-258 ################################################### dmS1 <- splitLexis( dmL, "age", breaks=seq(0,100,5) ) summary( dmL ) summary( dmS1 ) ################################################### ### code chunk number 9: flup.rnw:268-271 ################################################### wh.id <- c(9, 27, 52, 484) subset(dmL , lex.id %in% wh.id)[,1:10] subset(dmS1, lex.id %in% wh.id)[,1:10] ################################################### ### code chunk number 10: flup.rnw:277-279 ################################################### dmS2 <- splitLexis(dmS1, "tfD", breaks=c(0,1,2,5,10,20,30,40)) subset( dmS2, lex.id %in% wh.id )[,1:10] ################################################### ### code chunk number 11: flup.rnw:284-293 ################################################### if (require(popEpi, quietly=TRUE)) { options("popEpi.datatable" = FALSE) dmM <- splitMulti(dmL, age = seq(0,100,5), tfD = c(0,1,2,5,10,20,30,40), drop = FALSE) summary(dmS2) summary(dmM) } ################################################### ### code chunk number 12: flup.rnw:304-309 ################################################### if (require(popEpi, quietly=TRUE)) { identical( dmS2, dmM ) class( dmS2 ) class( dmM ) } ################################################### ### code chunk number 13: flup.rnw:339-346 ################################################### subset(dmL, lex.id %in% wh.id) dmC <- cutLexis( data = dmL, cut = dmL$doins, timescale = "per", new.state = "Ins", new.scale = "tfI") subset(dmC, lex.id %in% wh.id)[,1:10] ################################################### ### code chunk number 14: flup.rnw:361-368 ################################################### dmS2C <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM" ) subset( dmS2C, lex.id %in% wh.id ) ################################################### ### code chunk number 15: flup.rnw:393-394 ################################################### summary(dmS2C, timeScales = TRUE) ################################################### ### code chunk number 16: box1 ################################################### getOption("SweaveHooks")[["fig"]]() boxes(dmC, boxpos = TRUE, scale.R = 1000, show.BE = TRUE) ################################################### ### code chunk number 17: flup.rnw:437-445 ################################################### timeBand( dmS2C, "age", "middle" )[1:10] # For nice printing and column labelling we use the data.frame() function: data.frame( dmS2C[,c("per","age","tfD","lex.dur")], mid.age=timeBand( dmS2C, "age", "middle" ), mid.t=timeBand( dmS2C, "tfD", "middle" ), left.t=timeBand( dmS2C, "tfD", "left" ), right.t=timeBand( dmS2C, "tfD", "right" ), fact.t=timeBand( dmS2C, "tfD", "factor" ) )[1:15,] ################################################### ### code chunk number 18: flup.rnw:481-482 ################################################### summary( (dmS2$age-dmS2$tfD) - (dmS2$dodm-dmS2$dobth) ) ################################################### ### code chunk number 19: flup.rnw:487-489 ################################################### summary( timeBand( dmS2, "age", "middle" ) - timeBand( dmS2, "tfD", "middle" ) - (dmS2$dodm-dmS2$dobth) ) ################################################### ### code chunk number 20: flup.rnw:594-596 ################################################### dmCs <- splitLexis( dmC, time.scale="age", breaks=seq(0, 110, 1/4) ) summary( dmCs, t=T ) ################################################### ### code chunk number 21: flup.rnw:618-623 ################################################### ( a.kn <- with( subset( dmCs, lex.Xst=="Dead" ), quantile( age+lex.dur, (1:5-0.5)/5 ) ) ) ( i.kn <- c( 0, with( subset( dmCs, lex.Xst=="Dead" & lex.Cst=="Ins" ), quantile( tfI+lex.dur, (1:4)/5 ) ) ) ) ################################################### ### code chunk number 22: flup.rnw:639-644 ################################################### ma <- glm( (lex.Xst=="Dead") ~ Ns(age,knots=a.kn), family = poisson, offset = log(lex.dur), data = dmCs ) summary( ma ) ################################################### ### code chunk number 23: flup.rnw:663-666 ################################################### Ma <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn), family = poisreg, data = dmCs ) summary( Ma ) ################################################### ### code chunk number 24: flup.rnw:674-676 ################################################### Xa <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) ) ################################################### ### code chunk number 25: flup.rnw:679-680 ################################################### attr( Xa, "Lexis" ) ################################################### ### code chunk number 26: flup.rnw:689-690 ################################################### xa <- glm.Lexis( dmCs, formula = ~ Ns(age,knots=a.kn) ) ################################################### ### code chunk number 27: flup.rnw:693-694 ################################################### c( deviance(ma), deviance(Ma), deviance(Xa), deviance(xa) ) ################################################### ### code chunk number 28: pr-a ################################################### getOption("SweaveHooks")[["fig"]]() nd <- data.frame( age=40:85, lex.dur=1000 ) pr.0 <- ci.pred( ma, newdata = nd ) # mortality per 100 PY pr.a <- ci.pred( Ma, newdata = nd )*1000 # mortality per 100 PY summary(pr.0/pr.a) matshade( nd$age, pr.a, plot=TRUE, type="l", lty=1, log="y", xlab="Age (years)", ylab="DM mortality per 1000 PY") ################################################### ### code chunk number 29: flup.rnw:741-745 ################################################### pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + lex.Cst + sex, family=poisreg, data = dmCs ) round( ci.exp( pm ), 3 ) ################################################### ### code chunk number 30: flup.rnw:759-763 ################################################### pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex, family=poisreg, data = tsNA20(dmCs) ) ################################################### ### code chunk number 31: flup.rnw:769-775 ################################################### Pm <- glm.Lexis( tsNA20(dmCs), form = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex ) c( deviance(Pm), deviance(pm) ) identical( model.matrix(Pm), model.matrix(pm) ) ################################################### ### code chunk number 32: flup.rnw:781-782 ################################################### round( ci.exp( Pm, subset="ex" ), 3 ) ################################################### ### code chunk number 33: ins-time ################################################### getOption("SweaveHooks")[["fig"]]() ndI <- data.frame( expand.grid( tfI=c(NA,seq(0,15,0.1)), ai=seq(40,80,10) ), sex="M", lex.Cst="Ins" ) ndI <- transform( ndI, age=ai+tfI ) head( ndI ) ndA <- data.frame( age= seq(40,100,0.1), tfI=0, lex.Cst="DM", sex="M" ) pri <- ci.pred( Pm, ndI ) * 1000 pra <- ci.pred( Pm, ndA ) * 1000 matshade( ndI$age, pri, plot=TRUE, las=1, xlab="Age (years)", ylab="DM mortality per 1000 PY", log="y", lty=1, col="blue" ) matshade( ndA$age, pra ) ################################################### ### code chunk number 34: flup.rnw:819-823 ################################################### library( survival ) cm <- coxph( Surv(age,age+lex.dur,lex.Xst=="Dead") ~ Ns(tfI,knots=i.kn) + lex.Cst + sex, data = tsNA20(dmCs) ) ################################################### ### code chunk number 35: flup.rnw:827-830 ################################################### Cm <- coxph.Lexis( tsNA20(dmCs), form= age ~ Ns(tfI,knots=i.kn) + lex.Cst + sex ) cbind( ci.exp( cm ), ci.exp( Cm ) ) ################################################### ### code chunk number 36: flup.rnw:839-842 ################################################### round( cbind( ci.exp( Pm ), rbind( matrix(NA,5,3), ci.exp( cm )[-6,] ) ), 3 ) ################################################### ### code chunk number 37: Ieff ################################################### getOption("SweaveHooks")[["fig"]]() nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 2 , lex.Cst="Ins", sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), plot=T, lty=c(1,2), log="y", xlab="Time since insulin (years)", ylab="Rate ratio") abline( h=1, lty=3 ) ################################################### ### code chunk number 38: IeffR ################################################### getOption("SweaveHooks")[["fig"]]() nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 0 , lex.Cst="DM" , sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), xlab="Time since insulin (years)", ylab="Rate ratio relative to non-Insulin", lty=c(1,2), log="y", plot=T ) ################################################### ### code chunk number 39: flup.rnw:948-953 ################################################### imx <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) ################################################### ### code chunk number 40: flup.rnw:963-973 ################################################### Im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns((age-tfI)*(lex.Cst=="Ins"),knots=a.kn) + lex.Cst + sex ) im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + lex.Cst:Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) ################################################### ### code chunk number 41: flup.rnw:988-989 ################################################### anova( imx, Im, im, test='Chisq') ################################################### ### code chunk number 42: dur-int ################################################### getOption("SweaveHooks")[["fig"]]() pxi <- ci.pred( imx, ndI ) pxa <- ci.pred( imx, ndA ) pIi <- ci.pred( Im , ndI ) pIa <- ci.pred( Im , ndA ) pii <- ci.pred( im , ndI ) pia <- ci.pred( im , ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pxi, pIi, pii)*1000, plot=T, log="y", xlab="Age", ylab="Mortality per 1000 PY", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) matshade( ndA$age, cbind( pxa, pIa, pia)*1000, lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) ################################################### ### code chunk number 43: dur-int-RR ################################################### getOption("SweaveHooks")[["fig"]]() ndR <- transform( ndI, tfI=0, lex.Cst="DM" ) cbind( head(ndI), head(ndR) ) Rxi <- ci.exp( imx, list(ndI,ndR) ) Rii <- ci.exp( im , list(ndI,ndR) ) RIi <- ci.exp( Im , list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( Rxi, RIi, Rii), plot=T, log="y", xlab="Age (years)", ylab="Rate ratio vs, non-Insulin", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) abline( h=1 ) abline( h=ci.exp(imx,subset="lex.Cst")[,1], lty="25", col="blue" ) ################################################### ### code chunk number 44: splint ################################################### getOption("SweaveHooks")[["fig"]]() gm <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst:Ns(age,knots=a.kn):Ns(tfI,knots=i.kn) + lex.Cst + sex ) pgi <- ci.pred( gm, ndI ) pga <- ci.pred( gm, ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pgi, pii )*1000, plot=T, lty=c("solid","21"), lend="butt", lwd=2, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", alpha=c(0.2,0.1), col=c("black","red") ) matshade( ndA$age, cbind( pga, pia )*1000, lty=c("solid","21"), lend="butt", lwd=2, alpha=c(0.2,0.1), col=c("black","red") ) ################################################### ### code chunk number 45: RR-int ################################################### getOption("SweaveHooks")[["fig"]]() ndR <- transform( ndI, lex.Cst="DM", tfI=0 ) iRR <- ci.exp( im, ctr.mat=list(ndI,ndR) ) gRR <- ci.exp( gm, ctr.mat=list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind(gRR,iRR), lty=1, log="y", plot=TRUE, xlab="Age (years)", ylab="Rate ratio: Ins vs. non-Ins", col=c("black","red") ) abline( h=1 ) ################################################### ### code chunk number 46: flup.rnw:1112-1125 ################################################### dmd <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) + sex ) ind <- glm.Lexis( dmCs, from="Ins", to="Dead", formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + sex ) ini <- ci.pred( ind, ndI ) dmi <- ci.pred( dmd, ndI ) dma <- ci.pred( dmd, ndA ) ################################################### ### code chunk number 47: sep-mort ################################################### getOption("SweaveHooks")[["fig"]]() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ini*1000, plot=TRUE, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", lwd=2, col="red" ) matshade( ndA$age, dma*1000, lwd=2, col="black" ) ################################################### ### code chunk number 48: sep-HR ################################################### getOption("SweaveHooks")[["fig"]]() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ci.ratio(ini,dmi), plot=TRUE, log="y", xlab="Age (years)", ylab="RR insulin vs. no insulin", lwd=2, col="red" ) abline( h=1 ) ################################################### ### code chunk number 49: flup.rnw:1171-1179 ################################################### dmCs <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM", split.states = TRUE ) summary( dmCs ) ################################################### ### code chunk number 50: box4 ################################################### getOption("SweaveHooks")[["fig"]]() boxes( dmCs, boxpos=list(x=c(15,15,85,85), y=c(85,15,85,15)), scale.R=1000, show.BE=TRUE ) ################################################### ### code chunk number 51: flup.rnw:1209-1217 ################################################### dmM <- mcutLexis( dmL, timescale = "per", wh = c("doins","dooad"), new.states = c("Ins","OAD"), new.scales = c("tfI","tfO"), precursor.states = "DM", ties.resolve = TRUE ) summary( dmM, t=T ) ################################################### ### code chunk number 52: flup.rnw:1221-1225 ################################################### wh <- c(subset(dmM, lex.Cst == "Ins-OAD")$lex.id[1:2], subset(dmM, lex.Cst == "OAD-Ins")$lex.id[1:2]) options(width = 80) subset(dmM, lex.id %in% wh) ################################################### ### code chunk number 53: mbox ################################################### getOption("SweaveHooks")[["fig"]]() boxes( dmM, boxpos=list(x=c(15,80,40,40,85,85), y=c(50,50,90,10,90,10)), scale.R=1000, show.BE=TRUE ) ################################################### ### code chunk number 54: mboxr ################################################### getOption("SweaveHooks")[["fig"]]() summary( dmMr <- Relevel( dmM, list('OAD+Ins'=5:6), first=FALSE) ) boxes( dmMr, boxpos=list(x=c(15,50,15,85,85), y=c(85,50,15,85,15)), scale.R=1000, show.BE=TRUE ) Epi/inst/doc/addLexis.R0000644000175100001440000002705614421664114014424 0ustar hornikusers### R code from vignette source 'addLexis.rnw' ################################################### ### code chunk number 1: addLexis.rnw:20-25 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) library(Epi) library(dplyr) ################################################### ### code chunk number 2: addLexis.rnw:92-104 ################################################### xcoh <- structure(list(id = c("A", "B", "C"), birth = c("1952-07-14", "1954-04-01", "1987-06-10"), entry = c("1965-08-04", "1972-09-08", "1991-12-23"), exit = c("1997-06-27", "1995-05-23", "1998-07-24"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) xcoh$dob <- cal.yr(xcoh$birth) xcoh$doe <- cal.yr(xcoh$entry) xcoh$dox <- cal.yr(xcoh$exit ) xcoh ################################################### ### code chunk number 3: addLexis.rnw:111-119 ################################################### Lcoh <- Lexis(entry = list(per = doe), exit = list(per = dox, age = dox - dob), id = id, exit.status = factor(fail, 0:1, c("Alive","Dead")), data = xcoh) str(Lcoh) (Lx <- Lcoh[,1:6]) ################################################### ### code chunk number 4: addLexis.rnw:135-138 ################################################### Lx$lex.id <- as.character(Lx$lex.id) str(Lx) Lx ################################################### ### code chunk number 5: addLexis.rnw:146-158 ################################################### clin <- data.frame(lex.id = c("A", "A", "C", "B", "C"), per = cal.yr(c("1977-3-17", "1973-7-29", "1996-3-1", "1990-7-14", "1989-1-31")), bp = c(120, 140, 160, 157, 145), chol = c(NA, 5, 8, 9, 6), xnam = c("X2", "X1", "X1", "X2", "X0"), stringsAsFactors = FALSE) str(clin) clin ################################################### ### code chunk number 6: addLexis.rnw:169-170 ################################################### (Cx <- addCov.Lexis(Lx, clin)) ################################################### ### code chunk number 7: addLexis.rnw:184-186 ################################################### (Dx <- addCov.Lexis(Lx, clin, exnam = "xnam", tfc = "tfCl")) summary(Dx, t=T) ################################################### ### code chunk number 8: addLexis.rnw:193-208 ################################################### # split BEFORE add Lb <- addCov.Lexis(splitLexis(Lx, time.scale = "age", breaks = seq(0, 80, 5)), clin, exnam = "xnam" ) Lb # # split AFTER add La <- splitLexis(addCov.Lexis(Lx, clin, exnam = "xnam" ), time.scale = "age", breaks = seq(0, 80, 5)) La ################################################### ### code chunk number 9: addLexis.rnw:214-217 ################################################### La$tfc == Lb$tfc La$age == Lb$age La$per == Lb$per ################################################### ### code chunk number 10: addLexis.rnw:220-234 ################################################### if (require(popEpi, quietly=TRUE)) { ## split BEFORE add Mb <- addCov.Lexis(splitMulti(Lx, age = seq(0, 80, 5)), clin, exnam = "xnam" ) ## ## split AFTER add Ma <- splitMulti(addCov.Lexis(Lx, clin, exnam = "xnam" ), age = seq(0, 80, 5)) La$tfc == Mb$tfc Ma$tfc == Mb$tfc } ################################################### ### code chunk number 11: addLexis.rnw:249-257 ################################################### if (require(tidyr, quietly=TRUE)) { cov <- c("bp", "chol") Lx <- La Lx <- group_by(Lx, lex.id) %>% fill(all_of(cov)) %>% ungroup() class(Lx) } ################################################### ### code chunk number 12: addLexis.rnw:262-270 ################################################### if (require(tidyr, quietly=TRUE)) { Lx <- La Lx[,cov] <- as.data.frame( group_by(Lx, lex.id) %>% fill(all_of(cov)))[,cov] class(Lx) La Lx } ################################################### ### code chunk number 13: addLexis.rnw:338-351 ################################################### fu <- data.frame(doe = c(2006, 2008), dox = c(2015, 2018), dob = c(1950, 1951), xst = factor(c("A","D"))) Lx <- Lexis(entry = list(per = doe, age = doe- dob), exit = list(per = dox), exit.status = xst, data = fu) Lx <- subset(Lx, select = -c(doe, dob, dox, xst)) Sx <- splitLexis(Lx, "per", breaks = seq(1990, 2020, 0.6)) summary(Sx) str(Sx) ################################################### ### code chunk number 14: addLexis.rnw:360-370 ################################################### set.seed(1952) rf <- data.frame(per = c(2005 + runif(12, 0, 10)), amt = sample(2:4, 12, replace = TRUE), lex.id = sample(1:2, 12, replace = TRUE)) %>% arrange(lex.id, per) rg <- data.frame(per = c(2009 + runif(10, 0, 10)), amt = sample(round(2:4/3,1), 10, replace = TRUE), lex.id = sample(1:2, 10, replace = TRUE)) %>% arrange(lex.id, per) ################################################### ### code chunk number 15: addLexis.rnw:381-384 ################################################### pdat <- list(F = rf, G = rg) pdat Lx ################################################### ### code chunk number 16: addLexis.rnw:393-406 ################################################### summary(Sx) ; names(Sx) ex1 <- addDrug.Lexis(Sx, pdat, method = "ext") # default summary(ex1) ; names(ex1) ex1 ex2 <- addDrug.Lexis(Sx, pdat, method = "ext", grace = 0.5) summary(ex2) ex2 dos <- addDrug.Lexis(Sx, pdat, method = "dos", dpt = 6) summary(dos) dos fix <- addDrug.Lexis(Sx, pdat, method = "fix", maxt = 1) summary(fix) fix ################################################### ### code chunk number 17: addLexis.rnw:415-424 ################################################### data(DMlate) ; str(DMlate) Lx <- Lexis(entry = list(per = dodm, age = dodm - dobth, tfd = 0), exit = list(per = dox), exit.status = factor(!is.na(dodth), labels = c("DM", "Dead")), data = DMlate) summary(Lx) ################################################### ### code chunk number 18: addLexis.rnw:428-430 ################################################### Sx <- splitLexis(Lx[,1:7], time.scale="age", breaks = 0:120) summary(Sx) ################################################### ### code chunk number 19: addLexis.rnw:438-479 ################################################### set.seed(1952) purA <- ( data.frame(lex.id = rep(Lx$lex.id, round(runif(nrow(Lx), 0, 20)))) %>% left_join(Lx[,c("lex.id", "dodm", "dox")]) %>% mutate(per = dodm + runif(length(dodm), -0.1, 0.99) * (dox - dodm), amt = sample(4:20*10, length(dodm), replace = TRUE), dpt = amt * round(runif(length(dodm), 3, 7))) %>% select(-dodm, -dox) %>% arrange(lex.id, per) ) addmargins(table(table(purA$lex.id))) str(purA) purB <- ( data.frame(lex.id = rep(Lx$lex.id, round(pmax(runif(nrow(Lx), -10, 15), 0)))) %>% left_join(Lx[,c("lex.id", "dodm", "dox")]) %>% mutate(per = dodm + runif(length(dodm), -0.1, 0.99) * (dox - dodm), amt = sample(4:20*10, length(dodm), replace = TRUE), dpt = amt * round(runif(length(dodm), 5, 9))) %>% select(-dodm, -dox) %>% arrange(lex.id, per) ) -> purB addmargins(table(table(purB$lex.id))) str(purB) purC <- ( data.frame(lex.id = rep(Lx$lex.id, round(pmax(runif(nrow(Lx), -5, 12), 0)))) %>% left_join(Lx[,c("lex.id", "dodm", "dox")]) %>% mutate(per = dodm + runif(length(dodm), -0.1, 0.99) * (dox - dodm), amt = sample(4:20*10, length(dodm), replace = TRUE), dpt = amt * round(runif(length(dodm), 5, 7))) %>% select(-dodm, -dox) %>% arrange(lex.id, per) ) addmargins(table(table(purB$lex.id))) str(purC) head(purC) ################################################### ### code chunk number 20: addLexis.rnw:494-501 ################################################### Sx1 <- subset(Sx, lex.id < 1000) pur <- list(A = subset(purA, lex.id < 1000), B = subset(purB, lex.id < 1000), C = subset(purC, lex.id < 1000)) system.time(ad1 <- addDrug.Lexis(Sx1, pur, tnam = "per", grace = 1/4)) summary(Sx1) summary(ad1) ################################################### ### code chunk number 21: addLexis.rnw:504-511 ################################################### Sx2 <- subset(Sx, lex.id < 500) pur <- list(A = subset(purA, lex.id < 500), B = subset(purB, lex.id < 500), C = subset(purC, lex.id < 500)) system.time(ad2 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(Sx2) summary(ad2) ################################################### ### code chunk number 22: addLexis.rnw:518-525 ################################################### pur <- list(A = subset(purA, lex.id < 500 & runif(nrow(purA)) < 0.5), B = subset(purB, lex.id < 500 & runif(nrow(purB)) < 0.5), C = subset(purC, lex.id < 500 & runif(nrow(purC)) < 0.5)) sapply(pur, nrow) system.time(ad3 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(Sx2) summary(ad3) ################################################### ### code chunk number 23: addLexis.rnw:541-547 ################################################### pur <- list(B = subset(purB, lex.id < 500), C = subset(purC, lex.id < 500)) sapply(pur, nrow) system.time(ad4 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(Sx2) summary(ad4) ################################################### ### code chunk number 24: addLexis.rnw:556-557 ################################################### summary(ad1$lex.dur) ################################################### ### code chunk number 25: addLexis.rnw:574-577 ################################################### summary(ad1) summary(adc <- coarse.Lexis(ad1, lim = c(1/6,1/2))) summary(adc$lex.dur) ################################################### ### code chunk number 26: addLexis.rnw:590-600 ################################################### summary(Sx2) system.time(ad4 <- addDrug.Lexis(Sx2, pur, tnam = "per", grace = 1/6)) summary(ad4) # ad5 <- coarse.Lexis(ad4, lim = c(1/4, 1/2)) summary(ad5) ################################################### ### code chunk number 27: addLexis.rnw:605-611 ################################################### ad4$keep <- with(ad4, (B.ex & B.ct == 0) | (C.ex & C.ct == 0)) ad6 <- coarse.Lexis(ad4, lim = c(1/4, 1/2), keep = ad4$keep) summary(ad6) Epi/inst/doc/flup.pdf0000644000175100001440000320313714421664401014203 0ustar hornikusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 4869 /Filter /FlateDecode /N 92 /First 773 >> stream xkS8 }ݚXoYW[[cX`f &$lff_$?'d -˭voJa\I3DDF%'0F)I>t(a .#LГJM6Ipi&XED GKD )yxD9QrC(!*P_So0-)`bm`PxT[ RDBx[ER&> eH%p)XA Tit)b[8w0E$PH-HA #!} K$PS28@~kBrs?P|@h Rh'UYjxW/DI<J"2550Y 4 <Yx,0yHmaF''0 e&M @NP0)00.K@l8I)dK&"_ !)@J<"#[Z<"B @;^g9p /H2#Jx~W_=7'_OIv`ng3ˆt;\d\Q#o('3G|-Ͳ;}}:;ۗ}Moo2y0/7z@=_'Y88ó;Br8E(!um7;6`$M@&,[5˴$q x@ 3S]υOfE˫?@*R"_*3)y譗&̱hmÝ3\`xSN|46rW(5*x.`$ckl1= \ip5ص$EZݵFl 4=fJtJBv`ZGnmFI1o]43`3U奻m{ɻdd!}r|)z'k"?!T7tߏC'thIx;?$|xRGbz)'`y uCÝy$-Mo??0Nzz(ȿ<#G?o~$%Mͦ5 PoaR] kߐ)۩`=!]" "pqq'?B H:5Yf7UC?cWFخ?U 4VƐ%)+8`QbK~M%X#:ʍϢ%bj -a2|6'nMjB(+-6P)U:Z`;:P qGe̍bm]i8+ۺ>>[oo;,~T?Iekܭ^`j)˥S,*v:gb:ڣ5}x? uA.‚β.b5?wrHc͵@^v bեsEk/7+e4_&?v0ϧ|Z o5B rW\o0ꂴÃ׍W{ -1ݵCtV>KPZY&2=?cn<5zς4J3UEM/yɒ!]FQkҦAdysMD<کL&z囝+V["h 2fKzCY.^FZ0,k8MT. b4 }Ωe1@|H)rWv[yAs7X<+I]$gy6bJ~va A4Ru8.d1x1D!0`'>]0AG%y(s0+vKRhA r,I&Mu4v=9Tp|Q3WzWyT]Gѐ\<fY(h7v݆JA@ +3r c*׶v}n9j+*JŀNX9m.S_^ט$T 9'!!e즲Vrdi[\n}=:=ܐoۺ"!TXmCWFXZOׄ:|׏g|c7b4*#U9Xeb`^;)հkWuU[7!y|auF+.î/zE˞BL*>G |b阛XPġYۃ k-wm'~6u&SI ؂_X +P Fu8KpXyZ1-G]Dr,O+mbx}X͸k ew#PWO]6 TmVeiQPgSt[ %zݍPI29PF4wuwzuvb3NGw@bCj ,̌ +Yy.h޷\J+1'E1g Pic\tvS*aj(5hJ?u^c~, eܽ>tm:jh-DSyH3sF8\&]5qFe -JѪo>\9989\e1F=+m./ԾWna&!ie!ዙꜸ>swWiI n!Xhb'pव>ES"$K"XT!,~  [T]Z+%iC.ZO*DsO1'*s\ xaI^|@E#w@qGP)5W5M `V`N/gGM&M&kѪ~3,3a6ڲZ kkhgEP\P ˚z`t]Z9" U7GwҌ?.y!P)cwhe: ḐJxf3i{ĭ՞L8{f( 'qBQ$43dEP&D:^)C6qfx ؎_c7~Uqc36KNmպ)`DR-,+{9>SWU;͔(.,݌tഠJ/iϗ=bԉ&쯯+T^n,ð^vYbY';_. )4OLGbtU])}u1x毜U6m,ф"XJrR*rs M;:7 놰YT!hnLn?*ﱌLHw _\|88j|oqALVQ34،Z۳d0-zz8X oIVaY8 V{8(-AiYe]`2uW ׷Co==1ˤIQ}{xCǏr|kا5 V3ْNTS yG(3%_ otXK $&ݯX KtbDlT[u %Y*\ǵe ~a[yBwH23 r`ABJ3a5TXcn/q[ w;:+)ݲ)ؼ"&Pج^F-}_z>byUǠ[-aoeo\kilV+Wq_UG)yY{TvUd?d u?d z[o)^Em ۷7IR3ω$9aV#RSnUsUQU,N_yPA$^wP<:>:YusNip}wXB#Pҷ7WDC`Q,߱TϫUK:awtw<@o':ׅb*Ht]ܙ)[֨0hCЕ(E܆"&5߭^=cS2@]e}&79ưԷ~շKx>j2džpüO?2ھ][]endstream endobj 94 0 obj << /Subtype /XML /Type /Metadata /Length 1388 >> stream GPL Ghostscript 10.00.0 2023-04-25T07:45:36+02:00 2023-04-25T07:45:36+02:00 LaTeX with hyperref endstream endobj 95 0 obj << /Type /ObjStm /Length 2571 /Filter /FlateDecode /N 92 /First 838 >> stream x[nH}߯] }|M,<1qfŦma#;9")Jm d_ObwcEϤ,a12#%B0k`qU,(Fzn^ূc8<СG)P/hzu`ʘԔ)T QYj0-CE1m"L[qDEst\IfDȐȀVJ3QQ*ÌIO,3:T*H0k=:zǀRKfMP+DtfNT$ѵeмciu^S?HFLGGF05ym NA 2l< U$7 S& 䱚4wkXn, AfX9 SbR,&)VN :A+P# s,r#fX IdI4` &+$vwtDp!={G zy"T 3bIҳ7a4|I HAc(O}8*P_Xۏ?2~4,bԀhx8~G6Y OgQo-=;M/:ǧ__᧟pQ%%M /A$&O؛ f/A_7"O3UXfM9L̩9r~ZR%BnReZ]Jnuv6,ͅVUWU\uq6eLp8Ss݇~8z?@O&ӛ.-Kfpn9q>Y)SE%\Ex=GNz'`[5_mM66*R̯IMTGÇ~HSXH/8;>S>;o˻9_79>qB'Qws0"zXr'X\IO˗q{%Tb8]L9*Hb)X_~M)EM5bo0.N/.@d>Z=X `mRn*"Ӣ,4T\)(Aw"\^^ Q~!%#oǽ+i[B, ހ*ڂ zסN ?f>ۃ1S?MaI/*غKֵM+8L _Sk2{%-]]©]"m2kr6=5?' !_Z&$ySytoD yY[i/h]dHTP2ySr/ia겫_Ytqo r> 8;4C|HQ9])nUKp:;j3`7K|lڋ5^/1?o?|?k~s~ooB/|R!7||>|q?sskL]:Ia)fRtz6 uUDD:DkBˤd@Kl)))o7}q;⛷9Ftr%n\Yof/ BM6d3*.V]-DN)I[ Oq*4HfB&6iQ:m͵ m)!Y ް0߁xjEGjPo ڊPŖt3--mÖXK"vϯJf8_IF3Cd ]"ҕlEVl|#Be9H6!Y!`1ptJ،>ktX^! bBVbnK>VGnoqueZԢ[8d )KGMd-i&= vw9ljZ+PuMN;yn #l5OycK)3:h/Bap=:lJrF,`)3ZdX wCn-@2{D>J0[l z.dN' 軡 }[Gã՝ō{f66 n3<֮jwf@#I諹FilKa0JkX3=sxt{C=xm;ve.оmOSB%endstream endobj 188 0 obj << /Type /ObjStm /Length 3206 /Filter /FlateDecode /N 91 /First 851 >> stream x[mo_[! 8JԤT 4?O}rgΩ_gH.$ OA8qI.<3;%3O0YmUyf;*O ˄ݽ#Is`RZ=ΤtuJ!Ȕ\3% sÔ]%LYGS^}<ӜRhδAG)ӖN ɴB)3)qga!RXf D1,f )9$R f=]BQC0g"qs x慠k\!!74坂{np2,RYS%tl}y`k /] Ia xk{j2I9!y@oaG4.0 Ih)A !4a:! NVhc; 8nRFg1@1ut?!=04m1]ZI-k-P$%j H?ʒ-PPP'ZCsA:kb#06` 8tchrJgEzqCB +ȂV0sV^>O3/<솕?Pzb}mҽ𢡊?6C;sMb޼\mŹAjc[=^=cϞ1k) Pu ۻ8ԛ PT7h8CQr(=PUT!@-2 nF#qM۶moɌʻFt_z? =u{-:2}ݶ1Qua᧝F[: p׃Zۨ1H E4BHFqV)ۖt:1V('إs;y Lj]3`6x<ͨVj/Pu{$#x5]1aWB\?wF I $!IƐk>`%$Dߵ>])BG)E=Ly7!U #43Yd[aԲٽ@2~~RJO 7eS'-yǶ?_X5'Nc纟M1O99Aj \&B %9^\%bv'OK?uj|a;@IjT T#XiܙNϙWFpfOW^vcEP 4V벳0P$)Br|c^)!`3y 5 (ޟ2Mqu'F^\ͦ;;Bۿo{Zɜ ZE' }MZ >?n2S^m]޾:?˫|YV宼/<}Pc{/O9Q3zVX^o7Gh7'-NUszw_)ttoUƺߜ6[P/v#L[)xCy{~{Y簉3?jml9lS6ɤ$o؄PM' +f?/^|ҿ92flص)_r{?;08[ͱawkhv9+OǔaYI1̌6c g!`__jBs50F¡ԧ^CL Cy[JLn~8m2uLúq؛ CfզScS#{kb[DgmA+t)*nɺ\UT0\ nI=;'}!P*i k64\(;*auͺd) N[8+{pk[e荧 ؿ02PesqB[2fTAiuج*\9ed%N">I ܪκl%N¨>ILjr۪薬 XNru-Y2ɢjE# k.%yt^*}X5/YG%^)gbϯ"ʒ%<:c VYu]4G'ANϰB!Uge+ytm)Vcq]@,N4_^^qYhp:W8: MzM:w#7~ݡ۶7c^mz͸n?^գO^-x̝ z3A ]y-$ q:ʑ*UB/yٵp~6H ! )U $:Hvz%VE*X7my:JMN nkOԝHt'N(pw5 m a8tg^TwM|J,4j,dDWÇmud4WO=mNUqA]8laٯh~y vCO"6okyjYZE@È@_*7Q }#Ț & >:!b@g)S,"2'ԊYa2T|$ۯo5w|>[oBP: *s4wC` A_a -[ȷOا|ֶ [ p]0Li=s%FSh*a)/{-ǵ$Qx$' u`eHSx㩥Z5tu>$ OTX]hI0"S[_Έ|\yF#1>Jq(Bzݽosb>Z Η(%endstream endobj 280 0 obj << /Filter /FlateDecode /Length 2593 >> stream x[Ksq/8fSZh"Q*ǎRe[L.%HВ}z^@ڥIicQ$KboZВK-fXx[?ux' .Kc +OgTi*%z<Ӓruϊqf$YАTXA~WTH҅B kIt󅐶tl(Ї+r*LpY眼/avUIMXrކHǥQG?[hYj Z4W>\+R3^zHs"3ŬE"óu?d8J#Yv@,&gJSkHL94{#T_mg?h ªBB[KaM3^h od)ъLZ!M޼<:,@^˝(̔Nx{->\jAmЁRIx01Bq^i9\FpKp!l-+4ץxgO/N˪z`^4 6rY?"Z_҂)\i37a2RNiIדZ3CR!f  Y0f6!hia+IIc;h1&g!L^y@0i_ђJo4ߖagM'tugÆіJNhz5Ϥ hQuR0iY? pU֘KE}1;My$\ s#țiM&T P]2>KQmIxUIXslKTV#aI9'/'_%Àɨ\:U̓b5+(È95~:I{ѰЍFLh6]_+4iYvO 2}s4o C/!xr\΃fr `/ooɻzn-wܘ7Q nv\W8+4DI-n<Í{/p~R$;9nTFW7&w*kFW7|MX\Х,介9JHzW7c&|\-.;ESSΉhfp]s෭q6M ')8(D0,8pxyxpO5vDش$7K8]B9 Om9={ *DXfS {DQq6 L 1++sz;WTNl^\WZuBq0O:/ook $ D+g7:S$ȑS&dS>{* a@Mɥʠ TozU "g9ѰySǔ(1y|n#t&9[)&jk [>}m|GآD!EBH9 27Βj\WlZIQ%AHcB s_}p]o椎L3g}c]Xu 8aB@: >ry&l^%DYbɂPrؓxr_ʑ4>:0ɓvq|`589IR/ܕmZ{2hG;(9p+iDc(MJ샱wz "_{CKNKh(0dcBP!0Z -9yHl<20] );bxeb!I6"#tŸmWC><H'xX1NMhq>1@ iP~he@dhf 'uN7m"ݤ'%6ށQ+F4dCj_-'PK 4J%IWmʩ~yGtHI8;Ѧ4RgtsG73ސ:2˓1nza u/o=} g B@T e1Ҥ^2e aR_><<JhUQa–V GM:9ʭ=o_|KSLJDޣB@iqPp SsU-pWzpqq1ȸ%X>Q3S<&il`__9 @ΗG2з(IϱW_)buC2%HŜ*ȩЫ;+qΜahd:_9N,6$ Ѱ|to|Vpec7p˛kz򅠁endstream endobj 281 0 obj << /Filter /FlateDecode /Length 2072 >> stream xYK)[~[ I>P]rERZߧ]G2 '9꫞EEYQٿ8a~";7RM͊oaE-i#/6aܽ!?ЊAy*F65++Zq04XbLsIVdTUsiSPH˂1j )IѦ8rY(/^pMI h> d҃54JS+ RR!SܫN@Ǽ+ueJS877az?aA|!$Պ=:*RBΟ_`U<;5.9y c%d Ôk{";)1. V`50=1spqtE h/ 斁+ܐ) _Ä'Xg&d[g :.<0 ilٸCF}¢o1T@Kshrcݚ+7NP!BZrm3,-HPOҜ_!AqP¶Gjq[yڣ->_&)[C*C%~v.95Yi{ɒKuw4XPdIynfJ٫-]GwXЊ}@_౾0]Y+_z"nN@gݐfY8фk! C uV"eUgf>/jr`.ԊDT7qcW<_S*tҋv/ʛsUw Lϖrf#!Iv^KU, pac7q>q/ [Ͷ45U\k^mC;e> stream xXˎke@]Rc$0ΓG#${|vNȢN<ы&KnsQe/?6ly6;o6[uo ZEbkVn͏Q&7ƑY'mx S>u8dhvRyʘ!|:~$7B; uYfRpEZF:GF`C9j>pI.UyJ&yY{<d֮DJ{@IA^vKNvi)5yz* rW)ڮPVD$Czb"+8jjasɻ?(M%S> 9 ǖ; 62[.R/dQp2ZtN<"0ET?VΎ9<$eH&:z>fp?n A+ _EUv%HS;Z|wLu$KQ385ŋ}*h2!}{\<쩎4)_!VaLAA:S~ft^eZJROeŊ0`~p8e54N@Qp>%%chǒ:Ǎ89;01ӰSd@SSեUȄ6. ›*#dRxD>;sW8M:.m/Jj8p;-P*'H>;@ pg*j/c5t_"bʿRl'}SBv& AJ J38¬?rxs3%Tq|?Yk.O*9{NS.%gr<$n)Z{^+9vּl\ޯ2a\q;e֒owZ%I_Uyۍݽoۀ"}\׍2T t OeԼbG)[ZJ J%uiEeW%TvxLԆTˤ܅(Z,A%u͓g$BF 442 0jidԆOv _WJH9㨑;mWjB"UV*o1wU`ȣfo;qlH6,p xxg8 &2GJxbޣ| }JsgYq,4/TB<_'[-8iAt6ŜI@)RAH쌦N0YRy^ۙ0BMAf*L^+4P<~͋e[32 faz,I X*V1i#.D`mG™ dcKD2AĠ|sn!DW)<_:㪖$1ū"jc><%36+M2zTn8<ڳ+"Ep $/,V &5yn9!jj՜^XCHŪ[#E}tp7/l$Qekpyx%}Ji7VQhsB{$(*&_8la쩝PKZNyPdCwl1!U$l*c" eGJͥ0q+Ųff}2|^8'׋>3Ylфq|rؙf_MxBr&=:S͋1-aR,ZBo,+#lƎV, xJ7ĤIăؠg|*EdCR362qyNzW2t<)5Xz0~bMJ'iCIT S Xڔrl H6\;#p* ˉCu\-_{{Cuv0x*ضh zrCH3,bjCۀFQoʹn +endstream endobj 283 0 obj << /Filter /FlateDecode /Length 4472 >> stream x\Koȑ봾AXZs6`.v1n-``4]RTK_"%2Y"W%;U7Gz8k]3V)㋷G ;֢l8|ڔۣB.jF5:]\]#u6lS6R2ͪ*+)lIeM?Mm߬xʪjYU!egf[ʒg6:Ef?E{=uV\9ӥh갫\55 "u1JXþ/n] 2Mp!*!LⱧѮNjiבMOʲ2#)"O< aJ g6An +o?}liם?jɒ nu=w:`sQˆ05E vWUsc10fO "a_xYJ74)FR*_uӽ:\NPWdО$32K7'v62EWstC. @p9"q{Z.VZWa1_>>^&mM9wm˂Jgn' g|N#2>\.J%9#V[OQ%}xU6 ;!A] mgZG@o&Qy&ӈ6-o5݆nQ`;ne iXo;eetpACʸAPͬh˂ahAj{Mog|)0>SDUt*^/4_/dDcinSy"}xMp|X=D_/ށ.oe)xwJ?:"j1Aʆu (g[5/i/ HBNe^fᶩ*;!XSsP ;i#M;*cԆ})|@ժԲ&ٱ~X;zd&cz#@U5~Ɛ)pÊ='g&g\t^&&\:k+9T*bT Y d۵3[#)HڮHJz BCb"xw~ \P`V.jܵ'wxu|k; sVr%: A}S'J=#jp]D=5ZqOp)6 ~|p5a/ʈ`XHF82Y<8ډ'}4ɰ86`٠ +pnQw`~j.KI8woimi<1G[Ή֥>XD8m 6ŃS4!dF tXs )1/o. ;qlbO+XTI Q ~K[ZޜO_-~R̴$+Λl:4`zu`++hTaJК"H/ӼrZDF) g@Z8Q?3Pt Wħ뷕+>S ApO(&?lSTT%NDŽmY4*4kT (C;oʏE)OO| T~E8fi"'CkHLru@])y U*RKND*/ j32dM}$+™ >~2<:$3w~px^f.jҖH'A͹>wL D1v*8c+H:6OUw Tu"z/"lBPlDضhPJwB)xN0 "XY'74nv?-'L j0j'zAAc|m}BWTUeT -Wdzߓ2v;;tCc/a&]_}UUrNb1 "^t D* BQb!b^ ╦x|An`¾L6+k]bx4j:"3.Eh3otS쒚v3[ۤ`(޿2$r}'Ěk)yވ q-ֱϴʸAI:ϟ-&Qt `U0tҿw]L 6e;Qey-0^Sf8EJqiS\hr7.gGSw$=³%\f74`/~ΓŃd:M8p) S% [BUsd@) 3oƄ<,>IWHJ_$نt$/ 㘻l䶚!1%zK$f;=\>z1d)Cc,p*iDb.8hWyfF[ k4_{I> stream xroQHRJRfSt` 5 C_3{}Y?{F"\}u%ՂFMwga ]h.B)hޟHl!ܘ1%%k7f’G4?n֒a6m/u35Tߞ]Gr7Yc[Iztu'jA1dWWU(tèWEL/W\(m-irE[ fbRr}n{E_)\qr,qcj PbAic%P`a%^Zh+7-d^Zfɧ8+q@2l,\ߥmtKVQ ۃ?Q*E>59  SL Y1%7`lhiI k8yXӔ/jz#73Pq,TlNEd Pw?E ʹ]8;^9h9FU!!+/ /u*"X#h|sa`YQW!C__߿2ħCyӤ))Ûg,.@3VOh|+PWd#SFhz@H9ԟ=ïkido3p' z3n_g+4^ /B~ZAp $DNeᶰtp;aq>K^c_! 2b:xVN^}@v>"~~#W:?Y_F4Xe2ʰ/Ç># d] tg5DJ4h\I -FjI0JXG6 %]-Aӂv22!Vtlz xk-45(,Av9^# !$ɬg8V9vr  ӴuQ(H`s4nl.{iAY#鱤 ͬR~P6n-%L[D pS'E\AA'΢H3eʣm1 faiK-9m)vnPDS>7u)~ u/XaضUDim))L^|“)P-MYx+C(eD2i[炂ir VL\Zџ.nO+vJ"hM) ZW?kLki~sO3iͿ0,lnfb: ̚Kq@!oE{1 NY,Ba;ǎ1h%lrEcɧl"NsN?9.i*'11+ɎR;;.y o} @ |S_, ҞaZDrQ xT2'Kۥ1 Qs)Z')~;8+34:ϒ[+}kHNBXf''qFJO!)5U8_fB9 JRpzyR8յtC uFtƻB u\K•FKӶʇ*$5.1M__mcIp /{Q"<'jRΐp*BRa9V V!]5ϰcuU(t\A{aB@~#S8XR#T8vrB@)ylD#mNs} gwgB;Tt""t {{Czᚱ)3]II>k{y7kYb>l'Z'2UVThΎwollS3TMGwl2 y#MbVptzMȸ>bd 39f+(.{TmZc w۩?0H36sF;ݘ|ƎR}*q&j|c/8sҝV@voaC/34nֻоR1-`?&$ T^ 9ˋ˨ߑq2ʪI;LqxFw6E'%"<Tps<6ƒ_۟Ww@_S>[j}WU+Ŋ[ PTϫXy^uGTĽj}3R+Ͽ*7WHCr'\*7W ]%>hmRGF>= e2.[/{ +Vh:9U ic)Vu?> stream xZKo䴇%);;@pݬsv@Ӗ=y$yίOQ|%?zŪz߬ʂJo' ~ɟ!Ҋ/O'tDd2/ٺ,JiUi^3VInHme0VҐ~eY  .NYs?9e4z~])R]ӊ ]o@RZ12H~8@3ҵ+J #A1 &`NI7B e$iKU/a#&HdaZ _-x0㢰r%v_P3nEe*CL*WߥiޮiHscHXUڻ\q?uI ~}SRJ?1"цfҕ򲸻&!mݒgUr2zcT rae%u_jFX4h*֒s@zbEsvH]"B*R`Kq c_/"?x@LHx=h0-i &% b%dtyu3)i%ae 9Z7לTnF/nmr\QnAql`dojA&V"M|0Վi]hM2vnZu n.>-Q9һ̍D'Wgߍ0c| ^5A}_I#mdЂ7 3u]m_qnoMqcez%zΩ|;7zUPaKZ@Pp~^t~c6~k#] r,h6~"*237öoEៃExx G4$<q{{aav68&]0` x4KtEv)>w퐰?9rӤKghm.L4.#O;`ѵNK14W"|_b8yu%>_-~"EeF~7BBު[f ~:(t^ɠLav=~ -qZO|ԑ%Ì?iм]l"]"")y(yPj9t%#K}p8]51> stream xMo0{qvnMKJmBO,%wllD* x>yG&36<$UH]ˤˑd AkZsŊ6u .qF{R4Bi[%|/PxO?塜3!Z9GAaNⒺ!roh.J]i.LI˅ac {ȦCCyl)[ f"BV="Js#K=POK,O6*!=i4rO)[u>5  +Й :t:BG=Ä(eF*n&@˴O>z~Iendstream endobj 287 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3709 >> stream xWyXSw>!dRޞXNVGqEo aM [!lTEq}Zum*z]{";$yy-C(>cx#B#CͣfJ6)lWؓѻG>l\=؅@E~X_ck83՘@aҬrlHjLK܅cQ6Tw!ްoU. HA#Q/`0k2 Ȳ,m6T@=. ` HL1xaCF /^? D;RW "' !;5A3~-6* z+ {%a!,(64x#M=X$XN%'%'J bF]ci`ؐ?OTsNa ~(m0\`Pr+ <m#Rxma52Ti*I z U*>(Mޱ#%u}ZUN΁MW]P;|Aq]xV[oMCte @٬&Qޢ[Cug o>΃l~kF^.SiPJ8hDWHu<ueesSLYV&<Լ@80C@"lVl Uws/b"T6a9wX8T pWD{Z_2y 啠7p&o9,ɔPLA[ڢܭ}I 8 Fxӛ38sי_p,b\ӿR~Xy ՅVn}Ek(5iUBf Q[eLd48̔dMeѵ |td7:ZдnԹޏAk6h0TReg Ux6w k{~ ?݆/{̌Du,SVؗqajyY7AQrjbIZC4ޏi?ghP_".t!7x#6ԉ[\V~[Wm:H}d& pQrY-d,ZH7Ҍ&`/ cUg!~~sm DPT9Z"|?drXx:ɡ/t~^6_Sٶȷmoqdܔ `n\lrZgcAs$7Ԧ4nkV'VdM]kzոj\69큽rJdxk RRH baRY*=+#Z4|$QXppO.ya3'h}&k̢7Dq)`FE 1 ΞtͿ`$Yϲ7|mFn»HDZ15knko?) b(-?:8N&j#lLb.~"K)|Z'7'];㷮cbr9&7 G/a,mNdR}Lzg=6 /CA f@+0[Lifx?3Ja-%Tr3.r(2+ln \,>ic^NId񬾟A#O6 P#LAe](2&EBƹlƷ}zrlwAkWB|4)NJ*^qװPsEgKrh3(3[TV,OIo!RTJ$/ /s{28 tWdZ%4ǮjzƉ=39gē.f*K`3S8+2ݏp].:ǭ2b֞k`MYRĂhX uz{/8'ݳZ qjB0L֠EplpfEcTSZun֜MGHB9ֲ%ǩ.%h܅5,㤭lZOL3ru}It߆M~jÖOf,UcVJt^rd3u~\î{8ə$8H<'w#מԋ]e |iH13!ߑ۾i5tBFIGW{d/q9tEA57^|k76^?Ý$Ŷ\XG1\o8os L˔US`uX뺋)zu^ygOتU ՍFFe{*-mS[Ǘ,+ʥuzV TCeu\'Y>~޴7wNfU ʀ@R뵲|r`G}f** fwGk:G,DQe[c4_A^tvO2P&F,=f)ЃY rڿV$ UT^ &JJ.E,#d'*e]i1kq̋˻_72\̬CEuO:pҮ(r])-b-|84}fƁmj&{[ !kI<݉K*dH#_} ' gxJꒆçTnoФo_ HRVRnx;b-O'duւtVgЍ9Y/? ߂| CVeU&9mDMnhZٹi ne}M`DȢ~ IϨAMgmJK]jZ߇2=9M{r<&V;^pS_!2D8_@aJ9LSZƎVPXPgٝV>J;tJQTeƔmۨN4ďs|r9#kvC9VX_O*+)|F#4!2q}Foӛl{~uYTer݅^Buqzp 4Hg\)K{;@le\1#vP_QZYZTW_01{8'k[?"P_\2O@w>YbE̚XJaZmT`oeTS(cX1񴸽VߜGɣ>8_c'vtWV-=GE{`3i ?9O{?uAWבZv9ۙ2{J0SEUZF&Wow,S,m8.|!v,m<_zjQV$<6[ż/_;'K-2vuGW{f.1CGg4I:=nONmeB>Hg~rۆg VJ d2D"ҨWiqSHM%+l!Ŋ c!u# t$endstream endobj 288 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1137 >> stream xM}egۻgF|aqku&J,^@M,̳0 β[mev^nwݙݙn[@#DiV:$-?,|A{6FYE~>> k{l vnXͣ6C:+8/]2k ?Űjۍ=mb ña[[v[m;5F1676t}f󡰖[{y#ıLXh(Zj q`o?? +Z:bFi%7wྙIb%K?_yH%踁sVe%oκnLeh2l"TUV)En\@W E>c9y-r`|/ѣMn>]?Vw!), lxQТT|'$|`j$QpD\A^>8)|ȞmOCC^H (p\3Y4|=<4ds[NcShտ0&a<Yd3*> stream xzxWaP( &$BZHBPL3-ٖeɶz;%ME)1b 7BfSHB {6{w{/1H9-g# _ng`2.~MQ,0t`)Ep#'F̯i[/XD4kY+EqW'DY7q]}SR7mSӦϘ^xqK/Oxs^vgth1-s̥1w揽-2/7u܁%9<qadOč'=Y>pI3'}3oaK 1faX]-8w2 ~9*倂v10HMroT=.gf9PPmtZYd2=E0MqVk9:";bZ ^VKvc_߻s!oC k5"=a.C 2XAzrOz]*_`n -^ D6>;=BC! u⚬m%m* 5"! 5  ::.K!8ӾA#O@CQm<C>SsFn8$_n&(3<8¾B`ݚRm^ Rp{J376u.lUES6fKWܵc. Cn[ 25Ұk4*>Ƞd>X-#f\j4*L~> .[b7S>v` 09]sg?JZfA¾ K`Gnp3`72aJOJTr SYbOiN&mOؕ`ezbO>10:?d^ mv>!O + ԅYs"42L'UtEZ{6 )3i&w7v'5ɻ٦ϙeF[&Y}-w☒'T-65mCY/j4-Ned-O_.\F٪ԯ Z/6TDknv p:v:RU6GF Eхz9\ix* d^I043 }o4@nY$( ec魌s8P_r29ƤȃaaVٗltb9y&NNbvk q PV-`p#9vX?>|sqM N!j_sIP(s:kjU55]nYHa:xfӓ"|,%qps7zVELZv6&ht":rPCl%y(7O*g2cu3<\bɡa%< *T3!..j") -+vΞ(>$E(RW(7,Jȁ$GQDKn=ogkeI e ;;$|(/?9>INJZѶIЦ7#~xn>1 mN2춘Zߗ޻* iiM>;?G 5 ڲREpXګjc{2āX4)] '(l`cΥ# z%6> {^1Q)|%j;GbCeezP>K"NS[ 5&3/Y&_CKGy%ey-G| yA%o1_7dTM^>?eAg)_ިj4GUΘ3A ,QnVfE)9~" G"?ņlsjv ެ1jVqsz@MHCnݬ8()@{t Tzu**'WlT$wlu\ <{5oY4z r 0%Z`pq(6j0L6{&( LMHQ0(_\D2O+A-:6 L%2B_R4+66kuL8ShL4jQ)m:;~.+10qڭIi{jcb;E%N+]g)CiTc.dL\d[@/Ln l4|-$PL!D{:w|V][Y/4z\7w/]tx tB3o%: $lVoҮM01y,-(ɮ ]ObQ2UdtJwq7$ 3?LOXPɺ4,梟6|/0D:g{iRY (Cpd43eQYԅ%/sh4P~[ZԷ'{qnoϟ [O4'ГRe8m)p#pǗ"\u ^p;69^W6MˤMZJPo JAXNX(R3轷o#hxٻi3i(%AqUA?;oS8@6DAmbRN@(x|X.-r,/,`XB!]o>׎ P_추J}Gs$MG-V}E; {[[Xjbkk:Nx;8c0B9Y_A֑{24iñ>&m{. U{Dkܬ+zpO{)f?gz}^ (4Ð6q̂ ('H&1fhUJVRݚVMõG]dFph©I =>r*Uٷ m^L}BOB'3ɸi&~_ui(tAo{Q$( Gܟo96 XPBIFV)M䅥LYȓe1_؎!˂ ʹ/5qqy:#j 𷖼R-623|UŶo_[rT+J( = ڂhXH. r ۤ+s d&MaR۴7ŝ~ / _%LDp0'paW@aHM_N)sNGps4BȤ2|YUU~O g8'>sAœ_aW{\VW潀tӐyn DZ{pm&gb퍶?Bh?=+NOFZ'&#&gq7q4.Z'#xBkVbuF(1_pZy_a-w Gpg9oj7z|8댓|M$ڻ'u7 4_yaQb}sab;TAxUXb3g#bP[v:t\e/Yq={<`:Lf8/ϝՕ 酳sr91Y*B A 4Ta}.dm1{]NRǏ{dǥo_(8a̚3)(gPWYh%P.=Fnd9w ]V s Ee]K*,"a Bd@(W_7<&yg/`*j*Ri ;COQ@⇏as?aqn8{_=>gwvfըy6vSU)5Z`H;q"رieLa5!89t͊{x  ,F%AAYBuhhxPAB=u°ZTUEEUB-*~C rH$4^7@iЍ+yǹNr-$Yٿh0XJ`nњă }yQOX{^妠Zj-%NIBml7ÍIb-;'-/gI|h[Jr^@ٍZ?}v8oRoS82YA B Q`UmNnچќ.h.nZaZmyׁ"biDx!vpFqmvݳL̳}oJФ :tO] HlD5]qV^$dڸux.؅a=n1Oq LM7T?-GkZ=hgh>5{տS~SP]V Kπ{GskwB,L 88tx@)]c6ݦ4j=н@tzj=z И4V=f[CfTҽlfȵg1bK[- ^y( z_H;&E[$HT Uu7=W*zmSM$5_I|{Ă/_D VF+D4¢XL3'+'!I8#H?#f9Jp'Y&z*YY^EMF/? #BƬeX).r=\&ڬx3H3?7I#'jQn@? E٥*EY[V:m;Z^kON?M1{l5x{@6CL 5fCkPRyYyC!`(kendstream endobj 290 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3381 >> stream xW{Tgޞ;*.1B;٭_kWkEE x`4$$p _HB" `PV+Vzi֭U瞶gLIr&3w{"3:=1-78`2?HUbp,~ǝx&ힿg0A$Η2 l۾c*W b91XAJB+Ub-1XO$"b1XJCK.q8+#Fmq_HnS˨$XUKǞoe&"淈6@h9pօ}~`ucgkAcвHG9O3<5oXiE#ޫpWq<3RE@a9o=0HuJ"eʠXU ^*h>Mcytm;i|Ex6L <@*PTn ;N/kx#ڀ5"(imjug7Lژo(~eqG?{N'Nph?\^ۯp~[_W\-4,Rĭ p|/h%ic5ȢjJ! dҚ$<WeSG+] e5sr|^Hk*=,ljNg&"4,ʲjUhuMإ;'p`O:0i2s l \jj< *^PP^*SrMJﳿ[u!5Vh_52#h;KMoT⨠*Fp}np=\U.s-e$kwzhrkZn j54.HKL{(RMT ^ \WUJ@ο=[@4v%](o3JPQH_WJKsJrV^)*ohP2XaYJz GL;lOlyKq Q<{]ɉ!nA5whl^ͽu[*eܥ>TcC iovۧf'cs7y DzT8aƕKtܘyoAU?}Dt h6b'ݡxЅN(8{2 PB\)_ [Kj.'4R^K"*)="~!я~14kLGEH ŐL,ES9ѹ=zSX<p?,6?Ot'Z?Bx"iQ^[|*-_:d=?xs7Ull̨¢Բz,+dJlS| G\rxwpZH%w;sטo",Ê X:Ff=Alw6dY닕%jSWAط1ͤibFr\'pLΪLN]?I%c)]__M Hr\SY[UP6\s1o28=^u66nnQ4>xR>sL4,UIti EIjj PZ aѿ yc uS{Q[[vnwm&jmJfZ)M[,YӭḊR/# ܋xa=M~#EEW= $pMG0խ\Cs-ku5Bq\q,|8'&SV]q36Zgos44չ[@r+ߠit;vgQ+U*R؞ߑWij:> stream xy tU[bʆ@*}AYe@p=* }MvwzK[ !$,2G6ޭ& 9IWս}GAy6L~;M/}a,D{yO[?Bxq ^˕KSe˧s+^Sj5kΝdC٤%O>Ч>3lC=4 b1K魼>iLo^rO=~Or{*\Eu>Gj|Vmm-thп?QGޟ݃kf^dBZ#֣;ѱRd mQ/@c@ofi ątu ux?&-NK=6%]TC6]Ƴɣw!Ł5о޲i?l5?aLv Rk"Kp dfZh .̟*>A,F#Ӻܮi4:{(J9r.O:Xw9F) @ 8v-?A=j1k\@.OEuݗW?ޔ]*YPƁB;Dߣ_/0$qπ^=u`SeNJ8Y)봺=CHg8Fϡ~W ( &6KJv4RiLL>A"\HrUQc8LoJNIl*rZհVPe0ȍ |._di) eW 1CP *g Bʮ8|=$n*#jLDi=]<1v}0ˀĠS"$uMҿ:hkޜaah-G=ɽ}Cl aq-%o4S7vSAe2Quv}σC(>.ށ?S(<*fR⋋GO_2|إ_4ߙB$ۆ$r W<("M<\s8ے)G/z~[?;AHA9f UTgPcC ~~ .Z)¨UV[l'лޯD#0Mgy@M)\Y.GSYEve tZC\ɭV\X \eiw017`&昘S+U' LICT]m8\$7!L mV&QK,&duBSA9ju/̉Oݏ2 : NÛ2Ⱦ m V2|A.8au,=ϟ 2A jpRnD⦄! JYa2ţPo?u~1Z)QbG1H%3P:o4SAh h[.ksSq)̌q]@A~F#H1ƫ,4 /s( UUf6zfu Ch;]۵!uh@8O[~w6x_F[*PّȤ! zm5!ڽR/󽕏.صn=qp+▼dY K v^`6o˔(M,7=v'Ȯ|dE0 )~ȳ讓]@&*9I˜ɒd2w@(¶4P5G5 !SXd)߀ji\ hA^vneU>=b<}J|u8rv1@TZW[Trkf8{_ [?kJ1m%Sv~YAYS&3x>ARk+B7{@ 0%<5}{!UMA˿T6s2}Ș,7'm||P QO=V)Sr^m)ƤAncA'Pл?{-_5}"HA,J%U9Ca'd)~H5F$jI##W4<)0):ɽF6T\s`r[kkU Oßzz[jZ &^)Vb|g!iz@K6,\aˌe*ٸYt$u2YO. ed%)g R>Ƴ:+_|WKOHdk`HbHo7GH.Ti#ְh wRkUV$Ux]vf#EHz+떬98HxORFnG@bjVIIEդT%PdeʀS>[#G. ekD8<]2E1|q} nA Am6",kmև Qmr?&x:X}X}bŠXldiwLsT&.E0(S*>-لRrj1VUqqBu~MP:A:9q/9] eaK3h\Mj61En(6Y"E&K?$jut5e9%FòŧsdU7uoɚ:$.ڄ8\Lg;nQxbRWDdR?POo~mnCy?TC)k#7R,iI`{f0ߩ04Tؗi#_hīL=Bjv .MVm`I'~v:B o+;@w,+[Oʔ&60gF9NY+%<x?޷8bTRQ96S#ള)? O{x*;71ӑ5fN'sI! v T\X/AIܠ>#) ͋ύ )kpt%ӧΤODgq]]=+k͗­ǖf^db`כ,usg+ٯvAȵFoU+/|TՀѿ5vj P XĞIt:|_|y)$P4T3 SYمԫNG#v +S#TKGjYf{O3|OD~NjIP_\O4q2* @4ɱM7Gq` uvsj Id_:nO]wmH6n.rRүᶎFˬ'*>ﵛ{5'UlXcrmD6D ex#IL-U1$jީ۩k9f"ݚ)uNZp'ov4{|j2`OQ>;Q<^tu(Ǎ-A[\U`zT NSv l͆¿½N@"8N)Tl&HI4$f'T7ҘQG-)DX}DFPx fj6l&gmc0ی3`΁YzQhA(a`A}qX?ibƙA\ktL\uD}ȓWᲲ%o*u^ю^yhwpK >Yeف~o#ƍDoCD̺kNVc֪Ƌ~oq]:wV}j jpͩwWyMlB;bR7v.x9~5Hf=RwGw8w)$\||bV]-oêoodIa,Vw(9~]V]hZ44&0=Eit_m_e_'s]Cٷswio\bUV#.|@uW{)z߻{Z 2ԃ Me~m$q;AO&|;;./#Owb4Tm0VF=e1cϏ<{DRU%'NJҩT=KK*j>V9t }23?z؅Eu.꣮G\097l H51=B!ELneV.-=QɶKN;M+RjůN}~coX M ?BD9Ec3]h@3 ndذ+ps5S}NVES-f/MJ~?vzszmc*42w=4bcg~+w%P_~Y,n4d‹[p-nm6ʱ*[uI?’4c Bp [f?YqZXPr15}T-c^jJ [٬l;+rv;>HE)a[SWlsN*S [hL+s&0bde @ TI VΜ gUUu^h/_'*Y1IeQsE@F% o65?2[V{9T~u~'`kvh M,ƴwkI\swM$/9o=kH P䲐)^Sie JF][ *䖕mϠmFSd".I ]Gz@WcG l7?o1źp.?-h]ZK˜JXɴ K}P[pM{$Y7]TĢ|zd/vWw#g,FεBMԶbѵX2 YCu /[pf)Ggc50р^@Ox07maa24/";?a@®F:)0& cJqI&T?F>qz5wsKAFd\%۰BRUc|ø`!hn<R6\VlCCV+rW\W^+NT>}k {m5iN]JQYSX$s}z43׋"Hc5렖D61 z0 mc $D VVR"U;u[eͥ =j[EJQՔ_xBBqD5!x: #B>¼lz!k gl< 4l?ixv>l8\1}|3QmFjN?.f~˯h_Y7Un\Veal<{gԘ6ĘՈ08,7A )7mLYz[\[+eκFxB\%QnƵ+ RsI"V;5[c[e]y0;D|~G>ho?P?8O?VG~.@|TӾD047l /<||ɤC[*Xx~7P\\*V**Zr*)W^Kݻ@?ޜc? ܪ@)'Ιjf:Ŗ5;`$$wk5OyH[1ǟٰ'UjR3ڵCjn|flI[o@Br`lQ 3-D}r'ş⏠>G;Q~aǥ^1٧<3ȥ7)FJJK8ecs3~[ȅ٥|T<3oj/W(?iڡ1&ņxg.ytCX)Ym0qqE=t®$%'#R˙_DHLoh_ 9̵Pv:F`ZvoTo mSBzYgij:IyM3gOxSaCXd N9'o].-_dA2 +Ac 죱juz{ta?'1*er0=Z?;$> 3h y6E6Ԡ]Wu6muD{y]}MR(i jr8CbzTBE"8ra,%nw~`b^Oo.ا &,endstream endobj 292 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5754 >> stream xX TS׺>88rL ڞhVmgQQT@"2!L2<0ϳ&h:Աժmml;x};wu[Y콿6Bx[Μ9mB? 0³uoǯMf%,K\"9%5-_)Z+zwL=[}[s~gw翷Hl"&db3$ۈD&! bXIՄ?1XC#"I"^% CB@cl"2yB^Ð!w=6x\5kWJNe-vpx#f?nԆQ_i^]o Hc?yMϯ?xQt9]=hS#sǵ/ux!wb8Ibm1_m,g)tJZ> *Xfkϋ$GCh cTF+,^a~;l9_GDπhP+=tBէ-7he0TVk'74l٪{>|t m^[O3H83fCQZD5B^':4l,Rb3 h;5kE#\!%~)BaTm:Y5 W;tc82G9CW*g)8;QWQlYĐISLIK `WYZk&F,f5ZF *ȷ)M:6լ&ȵ N4@~ʌF wIUK1j{ϋ) $;dy,488Žr)uٲlu(2}} k~ C> ,-V&!5Ttc1A(f_mnZ -y^TjbG={ms Pz](}wٶȄFݷnF($Rh![[jdUv!ZgSֲÝ{r*,֕@ 7f/yg$Ntwu4*rPZ LRM<yXbEhJ0X<@Cq^"$q*Pj"d4 "S -`{ksYe9A}SQ7ށ"Ee+ NFx `9ıH%=y(7=(Xu6몕S=QiW ޘ#7&04soP::R+1.5!:g7;t`ER]XY4~0Bie/er#Mr90]nNRP4wsRtF5(jEN =8n:u> @-$u$W%JHv2('SG*H,Qe_/t3OW ; ӤYzҍ=w ,/O&MAFwܫ swD$Tn2|7]6X`2R ,4egT6FuFeFm9㛗-;W4Рʊa;WuzQn½y 7ѷb2eՃo\e)?HA҇s c1^9YWlml3J1#AR$E%rXqYc"mle?Z4`=LGRinpᶈU&"Ϲhʭo:ng etmD&Fg`:řޭ'˖\w]gauub{ F^>}.RNn8_iܹgh6'02hǘ֦3[V%}q"[Gx ?̅wlESk1Z̏.ؑhV?*o$-$ROjv J :y^Kщߴi~9г/7\vF'aD("#S5`xw/c$nۇmnNΊj%.p^ؗv# #OJ{f褻:_t=AAޅЍp(P-'*jO$a΅H?.8+Z WE َ4V*RlTXJ0nleL`+.䝇Kp ]x_Y&H$Kb+5qsw9@bHpI󔅅lZJ)WK`bU;6ٷS勽a}hD ١/ܐ5RMr- }kI^ϖ*c2ۓSJ{6V9Ŵ+@à!c:S 83,8^ڟu'BLa4mΓS4^"LAblঠMEiQћKd3x9"YeKD/Nj/X=bvYܷW뉝X^^Q3ZDBg~(d+տhE]Ғxt%w]ii-YpsUl؈Zl|oZwFl4ʇ9ʟM+XgN:?q\(]h bY6.e(Zϧg .'OUn My5iex>MAP%ɑ@q@x&\4i>QB?"{)Ft(R*7E.|yͣC\2'4E1s^-a;V@JF(ؘpuNb<=H2yq =헶|^X`q>Tm]}"n(?9dm5:oמ^Rg5h[7ntۜcJjwc|wwSSwgjcMcNW]Eø!ht+z8m D>rpers.O,Cc`\y(qӠOO_ j{B̒^>hc~gK}#5:6!)jOkWKIǝC-dBhME-6"ҘUF#BMxN,B V+ 0M4w7J˫5%Cpm̩L(M8zALھp2禟DkbqDA+Џ|,4IhfY8^Ci<_?՞uF7nF|?={惺8m$9{)֨͝l)UPk)WҪJ4 v`Ѻ[ NNNz%^:{ |LJVXI$y_j4iDECh}v $֬"gz{}2g䩛9r3x6[gFX88j4&0UaRH;~ #3Ŵ0oRgnk `0uYF&jJi[eP3%{B=/֜rw`&nEc|G.>kDM ͺVS{-y]3~5W כ?:~jCx@VnkCY淤݅c9hc-Y-zJ)>AJg>En:b08# ̰DmƳZ&ջoφ[[{NLR؞m Mz*߬,fd&짬~ʍ{Ҽu,G! P@{c}{Kf}Eˇ< #0› P4OPendstream endobj 293 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 564 >> stream x%MHawtD&At Jkb n֌3ޝwvʰݢCJݶASwvǠ]\1>p~`(}; R ZOuzȷCȁqsx$2EnLkI;G!TDk8]E.$Ղ018/|( H_XE"cv݂ ˰,!#uMDO9Z"*>Iu+RihdR<.:EN `Q{=(p\lkmQڪ59_!ޕ R?( o@6xO0$ dz5oN& %F⁗7Y3\|;)2=^4c9}; dCqN uCw , *YUL:ƾڴM=F6\a-3sj/}a:O r82ez\Rv/f_S/KL>{J^ͮO#Ǵ\MA6mL endstream endobj 294 0 obj << /Filter /FlateDecode /Length 467 >> stream x͕Mo0 :JkD}:`a=maKò[O)ڭ|eGgz/䵸8X˷xsD4콕JTLre(r(۵nfu/ նܾZq)jͩernېflK\6pSpa'$2 X}Ս %RDF{y8ץDJpQavO7͏ AهzSٔ(<梛m C9.yc]U1}w3g8E9P|jKC2tWyvޞxyZo`RM1sendstream endobj 295 0 obj << /Filter /FlateDecode /Length 333 >> stream xuIO0VN!d+R@qAJ7 tIKHT9̧Y^F4sV{*/eʻF &d%V6+quAEM+͇6b A4DM@oQgʗ Ɋ!=ܶID}X:/j4+F_Hj<[3/ SCyc1OW~mD *U !H׋!_mB mb3}rbnwYSYB]P)Xg<0olmWY`(?QQ> stream xzxTվ7Ŗq [ETDDPH(Jdz5$4i21Av㵞5|[{{{$|df_`}n -QV ϰȈrks``O+C3NxOzd#0A ca " {[`aKe4ql9"{ MǞf`S,l 6{^ƞbWgyyl v;6݅MƊU[qA`bC/caFb4G1@vpdaS)}] O/_?~;ݱwvߕݡq^|~FA2pSCf=_2Dq+j!> kAɰaþH^0p]= 㮣}ki&޷wY؝]U#g=9೹"nB9\$m89w^srXhLhɐ'28 qcʋ:7$#[AIo8k:Tu3XV ɛ ZPp\koҾ\(yam;kgr\ dTgF 8N38'''| 5m2pT-xI:<2>׍B$q>Itf]Lz:nP!< bUUV |fAQ)Uڔ1Bs:fgI,CLq,\-zVue!jmY7&K{6xɝj:罡N~bp1~Lv]Ʌ"8H9!9V -[;_G24l5/='h:jYa;0N!4r#s >x H#N~3b.N~p) ~ظiy\k>^=lΛ-S{WƙG'3Ct?zi:E\|=\b,^_o:~pq/olqD4|H6DzeGEo*Wa U+E40/suӖLk?Y|Kd[G\=0fެzO_I $8I> {#X8t"/p<`\8K3+Ѫ5_N?#<Oce Tlµ٢z |.?_!)DA%hwra ؇DRHD:E60 C!DT-@KѰhh@#K5,(f\sA!XGK A(G51,Fy3R[a knE)b-_' =J8ќV(e藡9T-l4'ј%cðt8AY!q X4u|gkזUX,6ߏOÆ.E7PE^+PΧQ)-_[\cc#z\K H‘٢0̉{wrVP?\ӱnsem%hHbZ#Q-|G-m//gYr&sYJ`eT͑XL?͞;9R*LF2cP`w[<*ڛ)8#@%.!#)'[yM!%u&@38Ns٫ G)u@SՉtTSntE*ܕlęg1/fxq׼O.~@z`OgXS˽7(UB5#x{.}x #$N1Q5 $ #I[sPYifx)I57`O.e îӨ1Q(S4˗ߧ8Ӎ4C*^UQ ?;&lS(4g'U䇮UNLhK2DVǩf iaM= V|h5A[S%4T~o҂VU.Gp@jkMiQh!9-Gx"Je^FE&\7J}}YWnb$Lud(>E⏺)N8B 4*k`Usz D؀hgrʫ n@XT \bRˁDdn p7" |vh6yo0ևׇʽ̥֫W]^lSAoL=܎ *sz`n٠y'ꑜG4qYt"+^n 200uyX&_糄@$R:y |G(g>/c:M}Cԭ:{Մ@n2|W(gf1wr}q;A}q Sp*Yi rf܂/{N7&.Mb 6e%׮re!/6G 'mڄX|ҜVE~UzH!QR\Qp-iWP ?g@Dj$epq#5G,6Nzҙ@$-=-`+٤(\ J(™-Hx'r'Js:*RA3lQV6%I]]_1w|4<V%5. ,jXP*`r]tq՞ʽU{L6 A+a^_zǑ >9)va7V+}N+*ħ Y~dIG΃ hI=z.ʍU57onj5ڑ 7AX[̯WuJ@V\X7_nQo= -&!lw@,K(Qׇ3H Q-BpBRTŨmjŬ@uO94ʥ(2t\ac u'jn15MPJLƅ*T߄DFŎDeu!M|վ^/ew@)<ц&CW*P2`Պ`:vmH-@?B{| :рI.UcmZhHajD:dh'hx¿pF`&@N]h/^q죀IgL:O'Q.$@L *l5%xM< f\0}J:]}L}fr0~|>T@7xhL"t%'VzDFyjBwM+hg\|)~,uazbNIDR4@'k^]=Z07S8à24o|AOzZ@.   Ib ( #5b\.ՀRePⱨ~//RH-fď??A'Ȑq X{'K  [f/d⼢"Ez ;#3l_=3L>d@Ν} QsanjR KNvi(40G8~}b'&VlXton6n =D=9ۙr<: z_ӺkFB0\D\ih,ׯlJՖUV$-q$S> ոn}qh+a :Y*m"_32 "H]jp W Fw]Mz[,R Ē{ AKL5W!!|[4߾VX n5 0+H>aZna?|ijjo >( +l8g&ÌF+iMQU &YJ@t |xq< [}O%AʼnM(0q(!G$ֵ]^Eڞxc#>N1/z K@hFG\"8w':H~Bf R>Źwa Db%E1qD6|=_dÂRP 6V'AHx_/3}H-݊qddr1\o%4CrINv AjߪcM#ӏ/vҸlwG•kP0iQ'Ov&oJe=! (.VASj+`%sA+ڤ!44wz ۏA:AzmQGtݢǻ`Oo+w_m;7ZP|W_#|Y۠$z0oG 2_#it}vXm,\6{dr+E W*V %U+M@IJ`[UƔ.GHB"ۭ5M \W.kZ "I,X[l{Ti0=K@0bo'Mqsڒ1 DE~_d, 7mt]>\'ĮԮpvVDD Z*EJ5>o Tb\bbemM@qm=[O:Ͻ6N$6"wH\"evE8brVaT痮(x .m$@h w, PE("%y+eRIXFUG"`c"E#ʠf"U%\|gT!lqj% Ԉp@Q D|-ێP:lLXn-Q v'ÙܨV )oicl׈D8ŅbT{?6&!6Dg wCƛ4/ߨPA rdmlœ~$ I49S"KPuItBh|]l$+k(t^r{mKEF|Ze@F Š& ^3@<,WPj'as"7neu|tţ]+_k60tZOZ)w8w\އ/'ڗqa 9<(Ea2A#zx0sF `֗0\cnWBnĊvXFn5L^,{#RFyҙ(#cgwu xO`]T1xeRfPf WN~qVkUz9-Y3,O? =W;K{S(8S\Y?}('9*YPivܒwoQ\n%XMF* fo!iP iU[%!ZҮh0Lw{cs=3y [ZhSnűߗ\.û3`) N@2mnU@z$N&/2}?3y)je!WyO Yq#fx͞eK>?icOfɃr|ܙl YJUZa<٤JҊ~ g!p"nɽ"yXC%ujE=ձh|s]WgYN8~ƝQ7}5x<ԟ yxiLM10{["%fl wοirF&:k= l纉/:yҖ9'/*w]g<7OO7a\Q!FQEpZKlڊvX!#q$S FX¼8HlTʌOpvXKRKrԵٶv4Mv,`zCB"xcM`(` s4ƕX`v@J_uNIt U*hq}7|k8>Wt <ٙڻR\`@fmjHN ߾Dy].AGi`UgE% JνPy_6T7IJF2)w;0f&^*"sfBdBqoK6$.D(IiA$VBkې~ʚX$SoW=tqgB$D56XL^*P0J }LyHȽRB!g V/ѐ9=YF ؽ?eppʥPDYBNgjfejr$G%Qʆj˙pE՟Ags,~gN{LSsy]lHÛK2jMdO_Ǧ l~diGћH1s}D[l3 uB=rbgJ> stream x}W XSWھ1rUq#`.P#֎j.nB C/+ &@AiZfSvj{|΍'Ororw=b8L Z/pْ/dxs{|XVOji5ĵI)iŒG2nE슋_hqWebN#v!.b7@!5D(OC,"Azb&[b*1!x OeՔS :mi|XxS~.ZC:J;Bi Qѕ[%b{qCTVTf()( ]ujPiU "EV ]S.Q$sARRVᝫ8$7\%OפA:H5q{#pܲR@FAhȴaV¡?iX[LdZ'gMw+;O ^||54A@~f߳ BY MRFFf)@+(|x˶oӕpR߃޽S GS ,ә\rp51*YU[6ң;nէziǗSm0FFӓy>[~gƁ{f0檼V0wЇv ejy1'`/Y΅N ^ç⇾c,XXX4,EWF4Mbe9E675l3,eh ,p̈́t\E+kwKja/\8w?3d&RDeZYyilJ I^iRSS@'C2o N+.J ޸)7biYLUc*ZFj?GF˶-˭bsSdf\4AtG H|'+"l&ݹ$$+[ SW>VB@DB.r#/0ͦx.<P,87y߅]ĠIhM=Y͍BCh nc'0IRp~2c35P_O> 40h\zdX"pO$S%uNTۅ6)<2 ]% {U^#.q:;OrQ>(EEuQ% @!UMZs@V.[|h9.Kh[tqj=jlGiBɀ\}NM5+{{?3ˍ崞4Ѽү@Ձ\ȴC+݈>HRo*D!e(-:& f<᧑e)]HN,^"[z c9 9P#ZFΖǂvͦV{"j!y;ɖ$C [U8l[i+lok?3(Ne)RSU Д\އ^,Ol- 5) oSvo`$QcdSa7m+zN:tqф Łű :xZț?Ԕ-4 [%H@r|l8̑wuΗzS֐_oʟbՠYAR߼:AfU@=KjNIL>;{z3tM@ФŶzf=&+j57p4UƢsݜrZ9,l6yT{! c$팳/Ԣ[ega3lppϑ 6ӃҚ: 2|qXxJ~Z4ɡTYjnav?g sb`S ELi]B2&Z_-йM̙C8ro2ڢʫ(p <֔֙juO7Ő9Tu8p=܈(٪lTJEF$3~b%'OEϞ0鉥+BYvGA()p$ ʀNZOQ;5^I?Oݩda<#31** 2HXRD")ѩVd|c+ۣ&> .esq:~iGg|Хښn z#i\/K7dHriaSftj@037_?> .e{42 "{F›OR7ƹ{"ZYVf!.ط){B' q43bζ9¦Th=S% :ݽmA>  t_)4]qKu[Vo)í~+(f y7v 7)uF : Fh;IbE3bhɥߗ2n;>=Dҷ (%%%548;Rkb%yܑ"^ޗ7Ҍ^&=' ]v&z F LtҘ(4 r^3L4'/E, CNv -Dn@ۗ? `v78ظ#AфhK‘ 4ZIٕv>͗.Y(MYQ33c 4~J;t{VE㛔Ԩ(.o,dYt (NKVmM M5]EՎDayys)?8}qf3umT:>5-N6&kx37DLhd96F=>0o#5ȦS _9a(c / $V1!J*il9M׭>1gź\.`g+O|:?KY4@Z=+npKw nƿ Sz]V9cS[muL?j*˫!_?K `֚Yl G LH0>Okzj0Xrȿ Yx k$쳜aȣcްFRf!DfʰMb{+y}M秬I,?RARgSܒU{"xOo endstream endobj 298 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 10005 >> stream xxW$!dA"GLB64H#B %^muY}43*^-rml齆H6=ld7[G~{M}$zy|dH_}Ƿ>1ȓw<5̄'a~'l,&gc_`$ BTaWx{VT܈YLĒVsx咩u$>9I3|0)zmn3W7|a߁Q&+_qfcosZP6kltFt=p@j =bW"NUp$jH;4HG?ٙaٕ'FtWRr3MaR u_nxSj9|;C1E9 S$å9(_8OAmS6n>i1Vj|K[+=_%lNk%DrBhX 8}+߂/snWh޽3El^LO>'6o\mz|[X.aa&+e'@#wlb֦u7dGIe`pf2,K {8>S{hQ ԜeQ `l`%8oD0L:<p@fy+qOw7#.$_9{SI%da\dNfMER^}G"q#ïmjoaTQ{Ix;bߕJdwbAr3 6|"e೙aF ސVZY??g! >#]p!q('SbQMxY~8~Cx^n@ױmkZqhIrX xha~'tz+9C[n>oqe qs;.6elvqpAi~ ;Zϝ e]y`P"k)h;f/=ED>ۅ"W$v-r's3Pf6,R=K"lDϻ:o c vȂCqH.4Ts_q۠8Ew"n=t0]:26ጾ|]Ķ[dN6N -ӥnAh9|D XV"nY6U9*@ 35TLLLd X:#t%|T6LcIf5 Vx[Mӝ;5 u˒+=_4$ EI2ӽRFFFs̜WG KvK2a'ch‘p N1P&{F; .JW_m$$mڎMr)ffD=E!ev#m,I4C}MN'h5xt{cOkL'Z|ͤYf *tnG)s);Rm4{v2o#baeЭVT5rAL0H+ eX+qc f 52!vhl Rꪞ7m eFf!aC,ޟN\rYM js5K1߁Mlhs0\oT%Z F|Gaun.19m@6h<@*D+vUy+TIѯpMȐ"ZfVVԬ%;k;6@`(3)1 ~sti&,BC0냦H%!N@m_$HcFN@;"+>(nE<{>B:C)&M[4 17Vox[ݠ%'l uvb)T0ڪeiIi>-q+R˙+_-Sҙ?UZA K{;)8|B4z4ZUEiɚ7q{4t }BN1+Zhp[$K<&YDJS}C{` rj!H26$n E;&A~1ɒDN <3Q)kX›$H8: {v$z1Khry%z/lfCĪ8BY[֦?6} JPz Y| A5WRi{gnkrd`g?MSh/j6l&|*fsٍʭדVmIbJsVKU!/yW#]m(P" ZۜhñW.L{{Q>RxN~Er1#+d޾ ^'Ì^$T:rQæ#:q!6~2ºz䂊v.!j'{S߄vG}x _W1ІކE{[iV)_+Ǽp+g'*ԥyTxGLA]ŶazNtjvQ\?{ZW\$ MHm\A6=ԷPrMa*Z6oYCU|aǤuv!:z{C1OhcLnD́ vvS{vbMfv9!DEp&-e).MxQUU w,WN".HM=ջːu}-o~ lpFiƩc:cWUy- r:9WxUЋ*)vV˱++dNhezD^ <ΪB%b6߫_Y,|#(%J?uSaUy9_+"KzvK`|t9www 779|d/wVؑA|58!  4 hMTM)H|P)V9XFm^nR5LCN?1\&ᘬ=8>^O%:]6)+Z|&Dƅd 7e/Ed{H 3V>&a›[c퍆` Yn7VJ|ծ=g]DdYk 7kVR؉9|Ű2稊Js)|o;ށScǃЅX3ԘA_a(7U7ٻsOtFi'=]:u&Ht]ٱOǽ|`o? "u+gf*7([p [RAywhoxWӕ5Ȁ}ш4:abXuQuap$$.ίGߝZ. byCp8\(j $QYKyزX4kY+*m0!zhކw˃>.6tBxee"`96<沐|V jʞ㟞O?c5 { $8.5 #noLHGc&`w*vZ&#^J4!Q;O d͆ nj>d"#pZ]6҆U`+h5qn3v˃ +Ie?J'b~̫1v ,C<c6u8!8ru;Q1}6dma4j5E+:s1+ԑikmv'x! p 2@ H&ZZ;`bF榴8gb~5EdOZSCڄ FvRgR3`Šu3y[/ 1؏[h SsjTb_Xh? l;raX E iW9@&6eZO+pݲg_jxkp*J0 GP/ct2:][/z{iYn.be 0ɿ\|x8X}Vh$"ǽD{vPπȄ ݐ}^4vyvti^"V?_3fnj`B)w2 f8T][WOpʱ0:omNc ]xEUc2 gCV$fj52i.ҷ% aUշz7^Ns~&w,~ZR=ݻژ _BcRŋZi^TO*@8.VUбcW ޘa_!0u&5-y=uU/iL86rXP2JYMB}^N(wP D?N/Y4t$z$|$q;艣Y\OMf c)1kj"|TFC9kчMVŃrz[*U|4JA1˼Ҿۿ>!}1o\2mSb#4W --XcʡS[4qAKٰh0(Eeqx = vp6p%V_ƽ./ˑr.K[rkko.[#zզs-YnabҢG.eU:d+ jHo&C]Ѓ)v "V)D t\BŜe238mXڽh rx-¶'(Guo>>+syi[dEsv7W e,V:t4GԚ54'K:L^bZm8L\mmxyM[x0xl[!M)ЈGQenn}ϕsζyfd 9};X;~ c]q.lrDrg{ [HZk]+d  @6yqxjRh# fooǒx ;dkm+2B2'BtC=?P0uUc-3aF$y2kxAmD=,iJM&xl6jP:ȉp,em^0R۰ݧBxޠp-9gᜀQxn+OXsSBv J`9.^iQ߿.. -M+-)O5g#Dwt 9x_9A3Uj84*XL-S*ᇭ៭zwziPz[bdT,P#:(Lv%?FB0kPV><9$-hprطGG ) @#ۦ4U"ݭz;+y)|*'՛ڱ/viЌ߅߆i#B$,dl mQ5xj4P 80d)8ڊ Š"9>vrLo$KV{rO l"93k@ > @SXV<=dYo!<%o#H 1ab3ݞ&'r++Wdq&yߎGn݂B0g-.9q6ZZL3pE}OS>O/߬2`Ar9?޴$AQVKT{?KIp||c=ATcVV_'k( FLe+Ш:Mo!PRq2(v6ѓJ}"a)it%_8-~t}J҃\קg^_^XU0a B-]{p'Zwy\,[vPPw8]0 "l,+-+Vh EnDpa6N1\``NOhؿh&o5w&AZMW#eh=!9젇j@h<Ϝ}bY)v?kVpxV.<o9_&_fvE8ϻ >x.0^ fXڮE:X܅$L;If)Jh:rI5p>Tw߽Y_-TqCzp "AgEԥی"LJCEpkvee^ w:301~ нn9T`ʷȄ cU!KH{v88aa2'CћE̠ihctc\4] pQæ^Xk%*;icSꝵh¬J#lnJfk;3d6U,+g,7m d[%iMSl>!/wp#ђ!΋eM鼮鿁Op"](u!Xll4v;>0vsBMyh @>/j%`iIMi`3#2fHq)o]ݮ"y}Pgź۫7=w{ىFr/}K6! ;pM=o A_=}|_\͇0~>ϗ_yqޫiI2 |~'A 6rՠs^+_ ;M)t~_)KjS=k1âda ވ뼅bm'[> +R-䧁)ûcRp?a\j/a(;;}N5^<= q!D-XIx8)B ?&k (R10mxL :}]{GOX|wIO\+ل5)p!$jbSl9|BkN1N8zoK)P^<~0Ʃʺ7Պ=(AԀL?]M[`nRO8nr.r5 q䇻p|J8w>\뱹(ȟ0:'lDҎ!ih:g!0U7E5}#?k:?m+4#Bdc8Wh/[rmMH`=%5fKpl|J_;TEQUF}w>IÇbN8!rTH[ uStS4S\jsOUM:I%E C;߰_5 [_oӝ⚜)[DŜ_DOB} QmS@5I5E6{6K|o$*oi*SZҫ m'Z̝tz%Pb-6C&>N0.0n0jHRendstream endobj 299 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 196 >> stream x= PQC"1@hinzKsK44G8K x d6Q6rK((A3O_3pGIIWAqwhKuDs!Ml'ڈJ(RxTF ;:}!&Ro'QQc&F_Yiendstream endobj 300 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 144 >> stream xcd`ab`dd v 5420q$caaG~= Pn͟?2e? ^WTֱ[CwϏ^o.9m]m|r\y8yyy6)endstream endobj 301 0 obj << /Filter /FlateDecode /Length 3660 >> stream x[ےܶ}S6~$;q#U*;/䲥͓pwǚg*_N !&t7@/Yγ_luߞrlyluٓW?g,5J˛3 ;/d5I痫DN.r/pL zr~NL:J1r&SUjNrY'?]c0`E*5jyI]$r3E1!IF&c%f<59K/;",:yXgԩCH433%iBв<{E 60&ԥ?cXdgem͓M;}Òn J,LR>Y8DtvcOL9˸e-BZ˺ViU֫ʩ#Wݪu&imx2AѰc&A%Ht$}.k8do&6"KEV|BlFE,bIi$6+DQ&1vղz\.CHLxeE4Wf v{\]Y/6LOY:TռKtr "X`Z|/İy',1ykd_uJICAL)dqnjGA02*[ @U8yN)oOA}AvrGsʽZ<ھ٢K~G :+v59Wv98.R)'ga-SZC^[snF`vzW*ޠ#ӘG(>d2ImƤ,Ϸʭӌrb4y0ń lq>]zH[u˱ d3'Wop`ai.>^~3 T ~>3c9R\;+YʵD(t٨ˏ^B`XUcT""Ⱥ:9oaB$)Vbڞ劷 kfA`|dRPOPąX{g Fc$h7ĝMx ۘv{\41\]H=t-xއQZ>DQ;>-S ۢEڥwGLү,4;޺N{Kܠb$n͚\h+,_QzqE5N=A,f)vC0=@r"ø M(qyp] ngq6^'_a&3#C,˚+O Ĉ]m+ڰ"?Z_΋6sh'bƏ(jxP{4Ew/A,հpE.+bDGd9 -9G Tkl@5J੻""u̘r Y`~dbF$`a,wq Yׂ^\X6|Ssٌ@>ҤG(.@&/Z/+3nȐKqG*pv{8)bm oY\ui@~Q7 Hiۘw,%8MRůs4nsNjwm[#f؄)kyaY5䡩*Ѳ07].[.m";yVl2\S;il-)7 5;9;ɮ]o tX+J_GѫaW+TG5yEslYMKN]ʷx_'wjwC1THBHRyB~Nc)n]u#a-B{KfWWڸ@$dYEyR[w )OY}Qj M48;*EWXqrI_V9Z: l-1F(_2Fw8Uі"/aԗ:f.cv TgFhm ]ݠĒ ("de<(HdW4H^tk*yVrEmvu{rIWi_C.GơWadE]%E%J>{ՔAU"3M*[?ko՛˭c<k/{J$T|T&2 u3d|MYn+~dVBhiSNJKfmwAtWHYʠ*L"M/BnWF2TɕJQ2HމU!++(䠱_Cr;Я=ܵ~DF͉.R5V78U\Gqp^5_;NwWY2cNh*L*)W=8I d<+Ю_yC޸MP)Ioccf趽*ɝUq8en, G5!6~quDE=ihi/cGBL Ak.$dVCc=wOc,XY׀rF ?K/v\Ρ NvK~1 j1Ce{v2gRZendstream endobj 302 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4446 >> stream xyteƫ ]] CH( n kX¦5N$޻ꫭ;Iw^tCXBP@"eEq+Qйus_'::39;}݀)/[0S3?˕Xsm#ުvfûodk7a/rtnYyEʴz㦅l-ؖ}Yabl 6[-Öc+X {[Şa󱧱ggs y!l[RnCGTYEYv+vE7~i #67󛙿fԩo?~&g~1?*/Fxå媂dz);SUؠ#DeMM ; HA)$cE@"^\D^+8J5l :X=RBi+A9hvA9?}g%Z8ayl_6mN$sʠzp6|Yq"?TzeޙbR rxh/xxE9?  |m!*E)ha xΎ>zS! CFrLUsZ#IpIt sKu, :*іUHeUA [p<++stP!?v?j{2Zū/% ?p@ '%G]3%=R|w%B.[Bwp|+ ov_h~BP-P w;S7$pu:Nv5v=(gCT<- |xݰH D"+R`RbW$| W /f}=ԯޙ:h;$\_gO-jǥ҄6RRqh `!,0m/ޏ4C5J|uٖ-di%W,*P[vx-U\ʷ$4^{]t Qző^E9ZSɗ0:<'ZxWlBMl ǵ=;; V jCɅ@;ty&463c㜀9MOan.=]]VT_g t6찄+=dԥ{%WWduU/yuc$jNyAG?$@*h_KΪ2uWs3.yU%y%tQIM(ES:hESڡR:imԔ Mp䩱9B.}]~v<5i>cQCWxA91c>A'4 M\3aĝdl@草&N_B x4)<G,}N' A<vU8YgX㭢x{4m_Ҋd ) <B.(aCl;bryrÅ2&c@[%]j>@5&xFú`Uf<"lR+n&i,9K3|-˚s F㭡X+bR#߇NI[6BnzjSn XjGINDYKP1tsTF~+<:%694sfC=;wnBj%#?8պ7So&k}G@f! ZluX<6day K`+uySv3uo>D'\t"L*EB  k+.EOn?a=a?3~P(,D|!(e4?7nN'Exz3H;ccQ`VW7>Ѷtdӣi{Cȸ9ɲtFܳQl Blxf3Vw#H"Kl ǨݹLs`}ͼ 6v4Ev? &%.Asm}9[#PDpSbX,@^Annh8 Kz߶{gk UZ&_vnW|1pvWWr)T玾t&!ɴb퉪D]>ڏhllT,BQ7) Yp;a=ջX&^̵rqI%5#C _,BajHʷټN%$둺;f2Zʜ@lZ0"BN4 , : 'Q7&y&ҏ /4Z뢩h|{K[dB+2㵉wEԀ&9H4J9 ߾FK' C<}`9V@A%) =& E딷qiME<Œ)扇Bk$?NPIL½[~T& H.{}Ƶ*v`7 enRF15@L>m(5,~F>i6 3FaX3]55S_~1%[Y;9z(giޞp-^^*t WӯK;|Uޚr>+sX"w?o{b_Z:58yςE 0%U_,k<~XB~Ue4h41rы('vw1E71iu*.E(Bqby1: ZE Fۉ!Z8X#ptz:wxK촕q㶹y#@[j|~6.GkK)/3Jz׫]Pu.=]#-\|MqߢJ*푡^kk%Yu88@ B[@媁6{-\5h3qn[V?;pr JK0v_FJ(smB.WO~l!>LnU5^dD ˸(?J]HDL $U|G~j pa0]tj72m)b `n7j?x;jzuLOelrڶ?ys rpKs>)BY+R\Nil%Umu>' nzBe H2%r;NyilKK>qYKbt6|d!}\:8 isZfXfc?/Ó}7T_ƒPv=("z7Ƿl+Ԕ4CSB#r@d;`ÓuebĵV:r vSETm*B.3Eۄxc,{N.uwX+]UtW+A(bnDV``0F029P,Iendstream endobj 303 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 9661 >> stream xzwUo.Ah[zZEP.$Ivr994fHAuu ]]ݽ+ޭf{s^9sTݺ *z suO?sp,L,<Yy g9ggg%ggjL΋YG99qp&q^LLLn(s S͹S)ν.P8C8 p\ole-W Zthb< ~:  -C4aӆY>'FN)]?[V}>%W=wܣ~yzw1|:vST>x׃v=tCs

>:Ǭ*RJMSM*EX׆(%A]}Rr5l^nJvz:}w#x.˩ɀ6RDu 3nWH0EqeXj4L%\ljINQz?nyHP][tҥFYdS%YAe3uSmr{lT$/N)!@t/;27QѼ3E@H!MBAg%xW;lD2Mմ8OQkj~~픹KVS>N1竻Kybu}^qoWQk!z/TcaI,d PRM߳ϻ߳[۟r B"#)*(V Rjl:)/`6E{ (f^b8UV$n ӳgf9u.] V`,677l_ۗ|~0g]䗶eAcX4+\A .%!waMdx|_ϧ/P;$Z$$J2E-miAv7TwqLPu4 :n`+LC/ԋ>ĭm|." ȅ v$rH0&`ʵ]ݨ[,F%?!}{斵jd&O{aH,M ߵ~{vԄmӜS㍕⍽0Põ@$Jq]B+w =e%01J #=HL4)\ Cq1.3)|mxban1~9SYՃ7d%!Z\qG^ĮƮFfh+K5jR04t-#`읉xhډMjie+_ʼn|O~+b3S7qľ^)g=h@ʁHfRz:Β;'{}6_I+E^")˪t j61DA!>,:#RN{[t{ڝD: $s7Bĺ&(%D C|'lN9IQʯ50qL+M3(= A\fE!AcGtrH:0l,l01MIoA$pdͮ{kgsH4$xtr+vB^ ׮#UhJ>CI  ꐄzBEh4+ip4HWAiWhK-E\J!{=df80PRD{ܪU@!J ~.FsŹ{G}Hxn/>;+h_fz;;6cn&)i;cq'9@1h\v~u]WUƍuՒR\z]!z5\ 7%ԧFSZefZ3kMEt9iϣͽh8.zT-sc3F`[69a>{_gilP˱FV.(!GrC?~P{.qFabfwƙue>fBY.4V]OcVӲ:cfa-3C`UYPIx^|P.[O@ CS[=:Pg*~yEᓗYYXȂJ̴Y"enZU՗K1`nvD}S2UK X7 Ѕd@}~UJc  Ǔ0_32@s("2"RFG4;1qn^!``.-GX=0(4VCHv1I @ڡff;S骷ހ=0eZ<ݝO e<^8MLظP/h5eɨ &HHDƆߤgq:K;qXacU=~$Je2nKgmSx*d)-fh* ZZbba)W)j[$> ;{hDٙ`M=Jn*)"  e(V=_"X[9`<=wmli4%DA;ža])sչ?t\~#b 414*ƲRz$f8q |ŖG_Naj\\BlM:hJ> 5jWMq%ߜ\pkg:4%pcr1M\ g !d,aE-VWInBռ皵FUcvKFC%!h?|?|'̴ڮ-M >L rc8hC] ;h qccn أ. f1wƈOФ*-b"lJZŋ agiʥdbSy쫀Co~K~oB"x$Nz{kΔ3q9Ub8#juO"Չ $sXգ;hM`%u !IE%O#~o B!VN>v;t]j!b,G0w3_MNPހ/ք'XVI2 3 淞;%xvm"D\դ7Bz >{sk!yAQiz)SUuKk.m Yp~Yy!U -e~zlVn~]}u}zVXڛ2 f쇼ox]]jy-);GNZ1y^XRLGX L UAIDoI}ٴD1CسSt6:HxxAhB8j\f!t`Ha/t#Qy{wdM .vP4Qc8[n"zЉῠ  {) 4*[IߋE kʩ* ֚>fk8OC-sRց?%:UCIv?Go t)3 DWR` g#5رr}8*qHv B"&,\Q\ zI$@F~B!!JVן77-Y7pi)D#wjNB"ryԢ̋m q%CS&rBm⻬X8 *DZY LLw:=-N̜襅f> UUfŘᦀbYXkv&7*7=8/xV" V<6-ug 1iDnsS.2}n^L߁,F,RXZ HX+ucLot0h@).C˘hRX "f&5ak2^(ON>eΠ\^GVP:`wv裒.q):-uxv R4,wf!pgϊ;C ܯ')zy@5(Eq=ػ(^?zUj>-S`7Y7?r;˺Z\{Qj;ڈ] bѓT{PK Uti4VJF%˜u˛_ĒOcsdYWJ ~ *DSF-H<72@Dة MfKpӲm",R#Mc4 SXపT{uFB ȯGv2X<`n46XYQߤeÖ*V f3/p{:`;v9-Bhjb:E"oUVȦU kZXEx$!/z2CUg4K gɬtu{w8vm6iPVG ğTCPc0n+ ZûpEeJƠ&畩 k,3DBP UBkՆ*kU -⣂_(Bσsgid4l=j٨+`  CMxS 7kDOe> ͸ = +qEV8= BK0φBv4mªPNX Ґ"ʹ8*p>Dhq7Mj 3DG샳*,^nXfM:n#?C)*.DzJaQx:菒:>dVn]~g @ 6 $;K<.uWU;hLOըe/A +_acF% N;( x/uv}b $¯175XjEAzwKl]-S_i^UbKQˌe{ZL&r,E=Q=5="LtLcVZrڏc1wl"^6ܴmÌG#@3b_ =Dc^C=Ɣ3#/QyG#*Ct1?a>ubNp?53GLz18?Jhjɢ{iMY[>(Ւ&`܇UbIu C$pL\q%`n&v#dX2x ՜&y$`snt3XL0 w{𽜈?EX*šVD 1W0Noǥdœ@6n6ݰCW0' ;c.dZ }|Fz8s|)D\?0C}tZ>Ie5n!=\_W:Cm}S管*/:=!A .Osq ]c4 ʅl+uj2ŖF4e̱PAV'w+ܞJutvi FkH+gr/1/H*ͣ{/m } V"X~kh⦒{a= rS|t[ĕGg,X*u4톤>yg)[> 1Qa<**B>A}QӞ7g5""en:IYJQ5kZ q蓣ʘ^Ʋ2 zAowxs|)SP4HT*!ľ90A c҈w!(]=Nr7Z+9D;T $s"g jUVZN`OY:c4z p.`5PeU+ǩ)axdz)Knv ⇐^ bVNngC|3OjZ;wtu4b-EՋ6o|q[O|WdihͲ+Ky+_"h{cQ{G>{%5!33dY~&Bk' 3Xj_ːxN7~\l&]7q!62 `ї~!*؄Vqyiik'iT 9H:=QQ̢m -6ywTc7mīly J銹x>>f)./eegB.@C s/隭K7XP⢃>;CD8"T?/:neߣ7BCx3w1EL!sď^{ 0GO-jʮ66χIJ5~u~OM}7})b:,yn 4Gs_\\Gh18<_u< N4'f]YX| )`,_6V`ԙXH$? 'FBQ%xF,mλ^Kΐ]_`m;_qv9>bYJk^]T8X]z<'O- :HLm1uvĝ y@lf /[+5MMleݚp:v'$"F. }*Ωq/@'Gڏi94fl&pTy9ɫ'ya@WmXu!+/2CXRPo:<ʧ*!ʥ;Փ*}uH>rhTF^nlK{scps8vg߮^ouz&N>)5H:e8h2`wkwG($8u q>|eWiRղn"h.x0AJ3^'(-] ˶vQ9?1%>8fjQ(bi=4@φE> stream x\o\?OUeEF{ƂJ@*I ]ݐ1*$r<9_h8~uqΏ>0uLHoG 9V 26|y}x{2W\ѭxsBU?Ml;_ݜ2*z#UBbr5`7?W3tWXivnu3xO. QXSۂj͕,GĂB:ELDpf|$/嬧^:ғ*^ AXlT-M]QN^󣯀?R\0#;T8hSO  J 7=gKKgJtBVWrɩ V,KsDoFo7FDoH4VQ,s@ByA[[jeUdYIjyrŋ>V@֠Ϗ?z/̟5]!A1^1ܑov-@Wo@3TU_Y}6]`E1 mCuonsObntZONO "f" 6;ڿI osD/XqA%EV:qhw X(SּכM[ozõV]uЬ׏a`CQ؀gaBuvt]`_ޠ^98:+{ _g nyw?%\KCq@r?c?~DK&k,+2lJ_&AAC4DE^!C73QD4,koy(87.d9Lv[h5a ,&P;_cn8 ݬA׺C" 3 ̏rmɼ,MmshS^>jBʬtB7W *e܌)Vn Qjk0R;Q"~M&> unb#C]m2ہ PWXݾ,1qn˥n fjg0UQq=9C(:f`^t@ڵ6P91+T.Ӱ ES5 ZFt+Z%. LnR/9tvt*Ѕʼ"_P5,D^`wH@ e\W"΅ )ҙ!^p♾Zms聠nYg-&^o;ZŸ %XyԚV7I ]_* /g`!f {ՈNaw-͖5u[Kou7TC놜f¾𨚞@Gkϗ8Z X8\ΰU;g&m]8%٭c6 &ղRo0tl|㧹{&K]2di gBL%_~%+DtxL\2i8\[Ω}#ݣB'hz;)3JfI`iV5y?6{|=qB'UYX7a%֯V9]Ufo@Mfk'YDh0@TIidrZs''eu_D*YZ6YvvK`og7h: +ygR#*N"|oQE:ׯ[C#|@zo%Ňv agִ!xȎj1!hotm`M4Ʀ\D-ňc_;`tSht]PgX/SHܾh6YVG-r(V'wiYV!cHVtN{XN@:qO@mRkƇ73tOc-Il)I!`tjj=A!4:@o| ydžKhQ\Ÿv BVqi7" W7s6\^a,~ȟ=p>+l8*,c8+EϤζ ̫&tG PU-P# L\M/Q\oP؏%-2I? MIB95`o)L#lA6_ P{UuJhuP9ZC0}c7M2bW-323iXe4A?@RIu@K/ $yEZJꗈ>aW&Wzҋͳ __0 _g{:^0l9$jbD-&  ?<:>6Џ"P^C`zz?*,e*׊ֆY].w鴗,sw-wt*gȴ>];IQ6$w]n\\WӼ2 J(>zCE|;/4/> 6r=QݧYD._([{"c=6RtjWgoZF΃r?[>y„+Â]-"y!X{9I;8&dr#00me=#b! 1'r9~sz )=;AGDSCC{ )~gMm1tó{RݓaN?jRڛEIG2َ;4"+,VWտ;[2#6#-U []ոk0\03kT&5{c:b9dֺ{04[C*dA'e! p\7m>pe˗`99ϋ$ p-hIt>aPmȊFWl~X4F2Ȼ7<(Xuu  aҰw4P S99v?[ A+X @ sx$tsc^ydV@Ni&3< ?d?)STA3 lCiXB4Ug YeCe#(BVg˙N} DvCV5ҦnF}\NRF6L.Ln3T囀!@M*փs`,}yhjCNj{|g~9(5 4pm=Hc [<3B&79y|ZPl{Iw>Dƚ^JӧICm?ׄ,C^ETu_e467'=WXSg0 ) +-[2fwmLendstream endobj 305 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1278 >> stream x=mlSUozz˔7b@@/$hʋBT׵]m[msۭm]GƆMPPyc4&ƘhS&z7'9OrsN-D*b4}Ïl۶|3\͍V+-O,/78A# -n94"le˙U7-oժeݵN/>Y÷/\kt}=!i!I\X}S9N}67of#$0"=,Bfl,3 zpBn o~8*,vGwm ]?au[3a$*! Q5Fi_a ;jJ- vɧdXL$ &7U LAs Tҋt\@')OEYA"i%*KHd (~+^Q@䣅h! _gYȴiKEP|l*=V[qx[a`R4lH8HDMlB)(#Gh%@ISLΜ([ZOsrM7ƸklG^S7c2;q[ug68_0Ԓ"J{ axGs45JUendstream endobj 306 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1904 >> stream xV}XS!E%Xݽ]*;Qn*URX@ˇvC@X K E`geu͢ժpٳ IIj˓?rr}7B$ɂ¢~rJ#J}z!頰/\r)7l}+ȷuVG y?F!Z_)6q K[p( /Օss KX^R(/g+j* QݨtlzN<͐2qxVª@Y, мaBy!{F`/,DŽl+$Mއ‰a5C&#]570e yIP#Yp cTm4}~1$&9Xȝ4,|>BPAwm'T͐\Îqjb>_2= IjCY~ LIlQױ}GXއ7PnJ_hBLaMtD ed9H{ 2w+B!8<)_~ڻ,&*SΔg5W;giR0p╼;-w&g0F52 jq|I2+v#m&SQD-NV{']š<<ѰYE8 X }țxA29qD5WEըGjFmEaY۳CP_ o>{1)J>@TKiOVye.2B ΖKΎEň8x::*S6+q)FlO{"mnyfgfc_AЁ~hP;X.Mb'FUnZz%eΨ6…cz;L6콽i*bnӄɮ%soEWb93F6}ČioƭY݇W3o1v`0Qh njD}@h T0_9@VYbV{lB D**S|Pcyyp>,h6utGAfAk/ղ r伳߅,L hR5i+Hkt״hFjI$}:(|בaʯ0Eo5ީ; _4?,YbHgv<,#zvV EL]_ԪnNGj*:>*dJkKS̴?Q _./++ؤ~]ŒM*Cyb:?g2tyǞu6^`C09>M* ,^b\P{Ut<`BvglƏH, ~WC@0]?=.[?> stream x]1n0 EwB7dr \%Cd4DgK}':<H9O7|5|񦗘·^/1)9ajo>dew^:-ŧ ߑڞ1D/Dh rՉ(Nc:(^^T5:ZU**ACXZphC# D_ܛR8m6YzK O~Hendstream endobj 308 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1724 >> stream x[pW,okR; @sOqKrN \l &,ٺjh-,|QA)R0 Ii2a &tOCdΙO) 0LVnʊ/|>bM~8P/+-E~ş?ɥbAuVݠnnVlۺðԵuW  {[6`cJbQ2K=-/rFFR )^pVi)R%fd]ʃ@O]TPO)īJ .ʀ6Rz(~U%gЁW7EJ br?sA$ e+Nv\\ʢ! I;׀k'.A 5ɣR'_8XeaM7O  .lrP[C';Dh|xquY&[471ia'C@f=< P?ֹҸi/.#κ͠7&OoXL+MBtAĭ֏>GlԼ #EʜN_r c sDdL|X|T|zGUϜꎮ´ٺO[ԁk G -q][Kͱ?!w7FI$\ق_mfЍɋr4%>>6.ܯ2]F>2*}|_O2d>۸wG(mm.ݑ}wѓw޹;]dz^m]tdY.s۫wi4(Bk:AvqMCWNk q΁uƶ7(Edp \=h,iښ:ښ;3 YraA]y\p~v+òN9?)r-gҞ~,:9Á@g5AkD2AjP3?f0[mK:\XGD{2~[x^خRgٙa90/'Z?{ ̀;`s𬏥bL7ߊHc,pQ1bq8"7<hm_}aEg5_ܷƆtGch5#xvv[i=Xo?ul E_~YOz1 Iއq8K= !sAid^!6m2n8 CH44{ ŻhI=ZIѷ8x mF;ǧ5DMmr^,>$<|ntZ[Jj[} ^B.R(ACP\a5`endstream endobj 309 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 171 >> stream xcd`ab`dd v 144q$2!{@Q!=?~>0cB߳;~'hyGmEw9^ ^^emwn]!`z&vO1ca嬲bf#O;0endstream endobj 310 0 obj << /Filter /FlateDecode /Length 354281 >> stream xKˍ8 ڝǴÀgSjw$\[ P}]2d0#ӯҏ?׏)#{cUϟ_k?oK_6woߕ*?ǿҿ?W?/+2w_cxmϿ?/hW?~&>޵( K o7I]o˯}Fo3U~ͺ/jEV)4^ޙϿt_v9?_oE? 0˳m"s?ϦͶx_v_~g:8_ۨ_+_\~ϳ>#N3hgZ׶3>_eI7/U} /UQ/*{{UE7ګa`@Np()_gTj? DY[v*iկydZ|o^}E_s]_Wݿ<}_%y^59տJj3ſ"{{gͳr;Yx>?N9D8Me:{U⿝57yoK߶-wgW~~sCH۟+OcgJi9oPg1fǹiķyF|y%gMoL!Omqu:bwywAOp>dzUj|`N|˟T*NפJߞw~9lsWkεuOTNk8WU~kّ7+U$jly*~Vkܻ$7|sW{B?',D';pR?^{ùt<{yv8O9<Ӎ'V_c 8ι. ;8 uNג>Y7Oa7yM}6C][:u)ezzV>7si[gPӕ $[7unt屵O~:I;s!_UY\&ro«εAK>12+_v#r'59+8F+ɐG{yq7z0M6_!@vrƃ|-yE|}g6 'D4dd4s.|!s ') 92脝<;r8:{;U6\'KOxhs{E]ma }qrm<9pl<0LӍVb\;>]5(=8+3ýpi9?Qٲ؟HI n=zy)ݰA_^Azb_6`>!C9J(턗j߁℄GO6Jdsinի& A7NS(8J UhF6'ٙÖք樚B@0;K,wGaRQb G>p±UyDbH*IWq:IU(9qwNZi $e4OzN{ZgKOl9d ꞿLEG7Q4WKJD!eT6~'% E5T 48&Hːpz-jΏIG&>89u qy&IjS֩r,G]L*.) Dg, _WlLb4o0`m4  s~} :(y]wçDtrLdNW"_̪VdSe{q?_Or_i?TlK$e tSYEw𿐔Sv0Z0xaG$(z;=wP-.$ gL@ioNB4Zuw'?9"KJM29g9ۺg@uBSnY&+ѐku7N8;],dE=+n_):ۓP<$vl<B[xV|}.<_z"!o! 4j{ԛ/Pt2=QpۜE@svܔ)168x|_EK붞2"lӕxXs8ak)+{ p\uvRlpOg<ŝh0Oƴ87j"/S7Q+͡A+5O<Ͻpdssڢ}#|v=_ɖ=/ڨI5SU",2li{u |u*A*g hޔ}P&=3hkqDdHQPg~Us$CP"ؓrM7"{TKd eݴ7Ze"J7_!w_vI+عY!Ѡly\tM &aG30JȢ_!5 xF&Pvzbր9-|!'tϑ 'I {Ope hMY_o!'Q45d֗R~/|+e[#Uj-To͍ڎE|fm(F@z[w[e|G.~5L=P:Zx՝z`*Ī~5d5!_  dzP+;Ku& 0I>/}\90*KPt35Bߦq47*Px/ʅ(Ek|6/P'loR6>m재]=0Y˗.m!( :@c1C{N(W5T! vnr$֕~U[N`,}rPOE)}N7>GЎ[{l e!)8}2jT(N J-tSu-16ǽI$%(!4͔С#a|ے4Tq&ɱQ~ <ԒQ*5xÌ즄kp[tރyJ n 0P>1R-!Y9b_W]>$ ' ߻ un-sS,D":sT+R.cd+=C9wBC P5y/tAϧ[򵀏QT DщBE֛"m7m8;锄V*e,eR垰p PA!B{e2Ilo-pVgj7"}1p~3q^2\_i9lz޼I S.[#wlY'䞀P(&hbZBiO%a {&_GynʉxSX=S (!қPM?5?m%d Oy 8+Sćkwk]dۓ%*]PJAwP/iB':rfIuW5ݢh*?s{]qlǀߣzB9UF]蚎st?53 k.4Ӽm߇5rFyU (!zěwCNaB]w r%8R=v(5>(5,yhC6 8J_ǣx|Odx-wH pT-gS删ӬPzAl ,׀AڻFfH9\#9v&jN އ 33덣/<1\NEZJy+r:5kx >a \ &F8M[Th"|+!o7@"j`}tJ[,JiGoD2MC0Vb,o|J@fv7M>f;qE6I7֗`UeNUx3q\%@nX,JRdTPgŝ!hdN((GA6;a5{<`aWWWgjb%+gSkkwRn"O`w-&^[z2kq.Q/#7ܦ) &h[.6z  a)o|~b u?nFDuRG?1vfff5p3z'ΕgV[S*e_5@Rzd>RA1̳vrK&'ajۈm\3ˆS6ϻ0a% ߫b> L|2qfz 'ǐ6drdB=OH[xA?\:0Xү*^d2mI_`%_kygY09sI A](e),dvYL_] hCcq%7?<-θ.Ss)/0jTUs"*+H073o.vCB#<'1wV9k%X/a2G*" \ .[irHJ|C.V.gwP̧%t.pvrYYo^R[AB`/#,dznj%<≣rO Qda̪ZݘWtAd"bm22xJ.I# wZ_Fr쭳I䥁 \<ǰrf%`x$ <9SH8!֔j(T}۪3P'M$ϢG#T*u'^ Ѣaz^ڔ[S1 Ӻpib=>B N.G2xl{+j;z݃ b8(n9NN:md `(yU@x# F'(ͥ/xhֵ+_#ZQ]8>) :@ş3M ܳsRVB& L׌1eeS0Eg,[w :mr4=[j /(k+(ߨtܕJZ!^ œRoRfJc ZCO0 uM6rPy*|zI0|q#HaOb=̴MJ8٦.r~gڷ3jЁ\r0^$Ɍ)8|W]S$_:e%G(&z6dV2"ͶmJݬs;gCA(Pw50V MO 5iM4S\'eZ]6b Y'{ip<`ேqpv|rp\H-DW [5QCk3v+KLHJ 0rJXGv_NY Bk8_'6 rZs#Li+J=seIۏPlm,A &!@ |I2s]S׀Q|)KX)k[I)m[^@$gW=8, c腺EZx3p 1Nov*Z-t-"0I\@u!.wʵv`b|\o1?`"32^2'1Y?14 3o BPTy \˗:Ceَ!$@qQ?*Z RtLgy[b\3C3),(Ztڄ!gʐA4/@jZj͜7bLـzqn.)N,ol7gF`' əH&hD)6@o=Nn?!ȷT!DFW{LHZ-۱u$^nQ{=8¦EVITћy;lRln У:r/՞ۊ7M?y+Cʹ3z~]Ru;V{Ønp4#*NE*n%ݖ;(w ۛkTM rdB)Cti: ]S[/KѺNl<: /1AM#f3̈Z5) @"-~;:w, u%3So5(E JM)HpC4l$X`ɥj\F:/N q",&l-]Q8 ({UMT4b{# X6k3笆;`ge{Qݠmk#X5M Z;?dW1䦴,հN'84S٫;j͢8Ngy%ii' )*"uWHeU.xs7!./Q4ZyqR<8jxH6 p%`KP̖%@JҊku:bx%2=,`b:A}D-rbjMvc.qEC2bٸ])AeăiLڑ=neNL)3PV'ޜ5 n,.$[!vA'Lz{v "omJ3U:/Dn鑎"NXMVxa<|u!Rejc]B'rx%D$f216u'=ՇL í惹ρZRo2+X8A_YwѡhRD_H޲x wl[YyR<7 ɶ]2žϘJE'*DZ|/ 78;a@e pKNcmr EuxFN3O^#|Lx|3@J2^E+=pAaP[?1wnYٍ(_,Z6X 0xbXOd%q"5m8ɒ;zJA_霃=dwد#FŠ"9toX? `@w5%~A,q5Ar*%;NMqQQrsPHQ2lB~@hQQ#yI9VR$쏗ְ t1\RqX]5}x vfA(s_،,"$_~>LrJ 03S'JKhu=Q:¥JB.WX3b4rDywq W7(5(2I8ݢGF |XNzNˋRQXa/DWuUf~i)OR8`{K *8a]$8Hl8@bo6KZ0~4o;\5Hj\]kz&gGS3F+o!V eRZwf1 3(hVmv=ТxX4=(%g7.hW׫ɮ&xtyMةwN8b!QVm^[oEIht89s <՟",RrQ#UFz`sV glXU#^$KlXHwib%nLI22&aZdQ`djѬap@uS 3 PKz.ixZoSx,E\udg0٣,uG]'!;to,zT.j84RI{ ;Z,IAW-O??C k@Dop2[4PPa ũxPJd#G tAD~f˞%Ȧe"BFS;gm/RcZ!RLMLutE k_tl3e aGfڰ_) Ϳf.B@tf+{>$OfM]n sMXK$Sb%a, ~]$Ihsڬ1x2iCODm%;`(IG=h'+v|U4,6́NR<.H<"\C>OO*`ٹC|̌ B\7.Wx~X1޻do ^5ޭH@ hI1]d2HaZCq/+0> c}\0"GNFpLV1M "+ YH@/'f8JB7DV;u 7Dˤs\:Hd|Nɩ/IKYHC<5NBɮW:z*DHx-Xl%`V%eĜ庶J c2`sBi|~Oi#Q.S<`>o"L$ :ܫDpMy:Lpz!(Àm妈2о*Eђ%(&XhE&.s;irm|]eFeFYUIJN0]>(81F Ij(8NoB}s31M3{'PϯD!hvP (omXIgm+Le ytTm`SN#Ê>$ݣ:D%6o߂h1F -)V6AaN#!y!:V"ܫ78"G.*CO6S"- (MP>},CicP9hYI<$ cο/^4k"Sov㙱 ٦k \K:rp}qDo؊JN.`dRs nϻPT]|,B9ʖTM:Pw`1b&0},L)|PK$ۑոk0?}ٱ2;ͮ%,_*w0=:y't2ZSKRA6E}+NٴBmHmeɱS4tmAcTyAEZ 5@U<5:4awoL@4T̨Z͒J/I0lPf0.= p!jlҞ~0) ^M_&g6l̃~68wQ!5SjN#I bV0(AudT?PI/n@pqtiȴgا#ޜэIn^[auq,Gq0]jtFY@&KMNʊuI4R\C)ZܫJ: ^Z"л>,oR"c9WB5# *(x4qGMf2n/iW^CTԹܑ[8t;No)&ة!/ Lz,aU_+`Ay{maW4k UBFXƂS $TlREqſ(hPBݎM[dHr@>dC*+3Wts9C&: ],k <"݆$^aW31 Z䚱<[qĆAVq`}4R5j#ev광urH ۀ5V,b$"c܂,.~'$COaB!Äxy2@:M-:-&x;ϡ[CSʿ`[pŃv!?9sA& x+֖gX&(V(MJ5M9v]}zb  |,ʆq'D8NݮLdW=%lI)L~}څ('>jJ)ڨg@ A,*c&xlv*R4KuSʢtkhsN-]B,{D)C?1̷pBP!PHc)*I4ut .@,]1Le#CʬIuZ%{@xhp9|Z=\VR@WZB2h,RcBsVF/ F8?szȮTނz7A3ufS$LTey C 0P(E_N \Pj17K^u `iCi4әa-R8ac.q Q-yQ""܋fYʙϞ-;M(>/TR %;#DiId6^g*F-("{\+EE~" )hN_@$AhT1:͋UtH}I+λj f*(o 8&Gm9!m7@ 4?s&G_Ņc.࠾9p6>uohvG;vuj)FiOܳ|nC% weKo3儰ȑVaVP RIϦ$eٕk׽!Œi&%b-ppU({"bq-pj-$NgLgԏНuNdžmd\L(tL~Yn -<#W2ѹΑzmDb e;򏔽Ye%Gv5PK㴰-HRi6И^?dv{C8g[_ yͷU"W5HHq¦sPWm&3?Ќ7|Z÷ Y_=p w70~S43E{e9Fp_Y|e9sbԌhluiDꤙ)7mpvrO\Yf2/hRs}Tΐz87YZQˠeSceAD!+/ ِ& lh%sx&|/VWrvfԋ7unrT٨4eO8XQpfz2xLVy@-v1e\T /9E IHi0mƳ)td6 Y#+CE O"[ k?76oD{v6 [U(WT4 Q(2^ ӍYɅa򶣀NJ ą8&YlxmvfKqlWnISd|hrP-a ^gwQ`|;;J!ļSx!9@<࿜&/Ԭ!@'2ןFq:Tq1mHX\~_BB2H}li+Ky ^oxi[׸ LZ8 %yV|4S4}`Z4Gs-6+>HzRoUV@L"כh`pS8YoD?TjކN=8+z)PKd35r_E^HNH;=88\'6F k44xmsp)qyCӪ^^u}z2,lV 8Hg6Vq) h,??FUyHVA KV(ejf~lPoi VGce#PGl&"L謃tډxɛŀYQMytd,/ξTy5@Qyq1Z#=7^%F˓h6 yɦ5:tW*Am}Nιv9G=!\{x^Ժ7C꼲Wc)Zb?Gvmצf!9:ƥT(tɤ>Ah CȐ@ ;YQWš gӧ'@z77̷qSgŽF$}7Miv#Q^Dds -fUu$E+zA4d6tQJWc_)#tR_.d/2$3KN`X#+ 6Ɠ:Jc'V/ιmqjfF,*$Pr.W`GQn[;W,JQxKGKP5IIJ۹g۽a\Ӻ"?ҥh5BXmng ^JN,qGͫ昦yT!< e;G gwSV;q]*"~bmܠ~A?lB`6ȈF5\y^mD*o6!|*Na#ˬ$ 3=:$$)/LY&ū=/'MdE$C1# }^@j}H]]MfA hKS)JT9EJ 9h\#*\V}D?H ]-CkB E_ j(M0_ԣ##HYB(11S}ǒ  X e Y\jܩ),p@&ZҔ *77 + 0I);xӠ[$zc;J*I O K~}W唣Gi(]H#sᓎm+63eLbdW18gGԯj9C67a<밫]Q<dn{;Ua^"d=Ź:MJr+Z/w!{R bf iWhF $ɡj1^p7>LpVɪj)sY('!,kqo$`Er7\)ES4 É( =W~nDP=G|sO~~~P˿U$I=!0f(=J)p!(p=llh(MjcLT%3->aF:ND !H4ӽv1T=dWŖ(STECQzh$ޙ\0vOGQ}سY3i{0yd7>?bmg b:.S+Ng5c5pwx쓋،̀!g ݼ {ժ[#[M@oY@RL{*P g:op\%&>i`%*I)/[p"xk\M>q+#WnrNfu9r2QjSkvz$SOvKm:+8{-fX~ d镆sbE{,y~ m:"Ĉ/.(di%"ٵD\FFxoxTo Xggd,ؗ)N˾ Ac-؟xvGZʏ"Cuq6n_Z\\멓q/)x +=x@yyS+x [ 6[ȘT Unl183Mo5 3Yb^%N2 799Ԋ3{UU~Kn:z*܈zb 6 T`hW_-f%Ŧߨws;cu-ЇSi,,nħH<,-Qݐ-_& ;rΤ6E9IuENLX6gkGf ,kt-CwbVY`.ր*E(3T4PGYbU9 & h1wC884-X>a>-ѢXjz"x!ОS%EZÐo~*.Zdي$ي oR! GRցX;jh /AX]zPkS'(\4邓γ53(Viun$C![ȈB,߱=!?=y]l'r/|XŸʯs͛wHNFZ!jϮ+ANUq=꾻4/Vgዼ2#9KoB$ Tӈxɽ(+ڒٓUcw& >\I'ŁEfT~o,q dRw&iz0_!P6=y@lXQ\3sr[)='eE49K|Lޗ˵뀲lGRZy+ʑ;M[ub4<tVȕyCD|i~.aWmz6nsx$lj 6*;C#X }R ҟ/;PT7ӈMO&ODe(_Qpۈ ۞ߙiAk#.-276}ϥZvjSGN׈TrFQ[]fHPэ#*t8eq4'͜z\:$ilڞ+G&,VN*aXOʋ/P,aAA/)=ӳ!Ph4I+S:.Y6լhDw8^)g$IEft  [4o3HwzO6ygK?4rd9G ^T|c33"Ÿ AI)yT s/?ߊ+g4L3ُK|*!RxG`.A;t6֘_&5?YPgpIW/BE,M *LzKLIL<[7phANcp-z%n$B/3bٗXȤOi.'0R9&QHl̍Z.NjQ5[#* $fK lMLs纒 tTGʮ]ޒqB:REg˴z3^ 7K z !h0BT'N,cE-Pd,w >8Cd۴.Sd1 ^ڤ&$^:@~c(CdjDp0oDg;VӚYx *inVqj&)6}i0b4&5 ٍZRMv( 7N@PZ`aӤq#)D`L5Dk`:"R)/Jğ2J"&v dlܪ yfm|ȡPQr5pmwXV8Ix LL1!z`e'V'VXIek""ᅬM:J5Hi:o5WևRq*ej-'3{gKHޭܝ5)115DGb]3B?8xDiؿ<=-9^J~=tNQ[B%asCfD$A(V;t_G5Ah DM PYcdНTS&dQO2 cNo:@u̔=ӻR`xKTp69l@= y lrDqm;#t_ /j%.{$Hm"V VԪqYƃ 2&IR^ !l2!ԁ|q 6<aO)=s\:ѫ:ʒ9Fڝ`.ԮQ';yӥ-)@yRbvIq`}0P,ǀc Vܙ" iJkDi1D6c |7t WDžÒX.GV0=oCH3Lƒ}!Һ3&UsF[T3S1]Q=ᔔTߡB 4H%h:kBp3Cx6?8 ڨ[ SҰL*ezd&D'B@H|B4ƌv .K1|0?"y[*J%aѳ=cc m a4`"m&x1wFCV5CןE9+t1 `@-AqW QNv&&̂fb7ǭoW qmZ[{ '+i#aϜbUp,>jp^Z 4^U r8g~$kĈ QŜRئ}Me[/3?!wH嬘kV(Jx'VOW GסjBqc*#uu"O+ʹIP Бihg]ҝ?& ̿㥒H 7_OV;WK;mB bd".tw6 ru}Tm'3%RbCjѬDnLJAQ|溙"+Վ7"nvbs/XdOq#gɨQ]pz`]=bMĶ5HqV&7]B]a>t u.~b SR wz0$qN27K,T0- Sv\sՒ.]Y^4X0*IS^:#yO* $h|yMA ͒D);aN8\b ݸRLl(h!D}N_n˂$24iB;e{MM@T&s,gsМ6 /|x@~ 0@-AȠy?HD6)5zm펒G",j$moWb%FN$um3)sV< E{S$’/mweF$'zQ,Nfܤ:39GzD`չ:KhY@TTL!aFE}`zj-;Qxq"."I,Q`HKQ.j+j[쥫a$lyZc#6Fl* F撬"A3^lP )|"c4')Q4䜬n3!:p"D.dVqb5nFғHUDe<1Ql&wQʏ+QS'Y8IB d('d?U E4ڶB~n}BbHo%Vc::;vs/mI|򔬢G4ۂu>R 3:=6923dpc:C.YeZ'"Ig`Z^xӠ!D~_?'-f %9œV,EV'%A%3I8wbG#U(:\qD*cuGlupJ[- ;mcD0"; oXZnߤfa,/鳙3b%5#wŹюn6(\{XB"`6̷Dq)iP8faIj$4]=}'P<.s㭏V2|1"Ϲi\1&\qPGrVEefm'>ARv<RvT{\+Fls"V+]npYjZGTP-Z1f|tCb}7 '(XLSE~ψq ML&*wlIjćZbԞ%2ScTݓIDүhf"`alk3HUmH[u4Mi5lGԦ|D947GT L%lg*5wFGZdu\lypYٴ'=sTSDb&(f]J{Y\2U1Y2PicOIDC DhW1 JhTKBxǣB~+鸦uiɸvl-Pl\/{_T/BWd;9|ԄX Gl2 5{I%6X@= N(BGLIF<"nNg͐Zn92@|[k6HA泑ɒ}G2̍r.<7:oc4nrSw>E721dnwʰT Z&y =LEBje;'V\-kNV$@%Fl7Ku8H#6hT? n4z1R,-8ƍw^`&~)^xaE FI%,!v#N 7[0;U*b"Ad6 ^ՍF},&%/ݑDK@+tk<_nZ1N 8M$f%M%zGq1YQjn3s3I|hWwI?fڴ)-a_hZq Zّ,hR'\òೠfL)l`o7d9li$#H3#mEls*g11o*µ%ηz1Kɗf4ω"wNv k_@&MNI-ysEv̆mRC Y{*B)dtRwq<ݖD@}=/ *hB Yf&͋S޺䎡 p-UUfЪ,ȱBVeƤ9m 2;#q"%!1J e!+iɾؕSԓF~{\EӪTS(]_LޘB9?ғ4hЍ~ )rYm&>tZC!mh|@oS?՞7i?w%i7NbʮgHZ$o]ʧ(F.+KPYV!\zXxѳ##GVt$B#ܥ%Iﳢ(]>o+Ѕ%5)goMʡLA3+;=r`Qvwu~3A°!]z/g5_AAmL Loڝk0X(pe`5x#ނ{:+A Oxt<٥k)H|8YK0 v&ÐaPD.in&qR#[FM(Ԭh̠m DI3ND6Ĵ6PbbE\{;ƱZ *BJ*9iI)^zR<[,O]4=xVT~ñQ(fj(oJQJV(€v&KC=u:x!Y$N0l33 Y%:4ҚejsĢ+S~1^5ʥ(ܢVj#EtM=pW2  DO?7۲#{aS2 fG«uy="2hG&o׽tw d2${9"GQF%a) VW0 =9#](l?Nl[XgߎX-b= 1LKX,W.[%M7]ɂZmFJS%ɡ0G 1&#ɝ}5(jϠ_?VZ ,ArfؗOYj/HGxCɂ0٬gk ( $ n:CqW> Lp0 vlNG:49 !fӋU}{c\Qu[Km`o؏(+[)LJ dgkwc5MFp3@ H/arBi1+ⶹz)RcoZqE\;`UO7WL֏44\ȓY;YȄ[PnGA* kr[rFAVb[Wu#"J<:| Q8OTk($LDPě&'L{+9AG ޴跧ncR|-;MJe$|^C8|dG`=u}aܢ h/a/Úbkv yWSxr#Z(B2 + 7YbKQ|ν#s`CDqH)!-p|/I3o7D)CBRsVIbv=2! OE1')}'gRC?gF[|LaBy"P`.H y$@%|)J@wvz0c;& V{ԝ|.TcnP+U 4Q:4Ew9YKGVrUM \R @v;d emҠĻSrT0alVaR]jJѨ'0gg :)|l׊Ge\EFU[ dP"$wZ\_ Qwjg?4ݵn[R&kn Ś&>oMAZRJFa^6~V-3`<ȹ$~T8;#D6^Cω.\/q/bNBjdgc>"au_kF?iQ\gE#J31 #SxftK3k~*.4 U:-K[H Da0a[Ō9hoǗ0#ز!4(oSgST)SC}U\d{+U{FB[^6͑oUd'd7F$yu};iw] PJGCg(z" |AB.*komfJ:S݂o6%7Şlz|XUX) Y֒jX@oGW}y3H Eܵp&'wt%FT=1*|ZO0iŒs3㓎?wVvBB{F#@R,:`?a= !rAQHq::c+3sƃELnbr圫[uƁzgBk5X D\8{R0 H3̭L:;őK7!u*l B3%x1ymVNOՅ 02Hߓps윐nRR)@mwc}y^):oqƳ|5R@>- Kʭ4;9kڬQSF -pl C v1Ԝyl E1)ma{rxefu9ox_:,}{%}H~M̳6nԫJ쟡͡w|nϱ̃2(. td^2 C6|Ebڔ.Ng@,#B1=˪ }£k.6dXs'+iggkЭXې+:$"e`٫'zϚ87_j-V@d%7HG8qV^Hs-e;]\av Lνc3MR{9,Nii(Q]fƐ-z8i:306J/H<`}Mó}Г-s)s2n*Gvf傽Uo{د i7SdGYcG8o5NH4ƙ;m bU.xma]:Yٔ&Y*[J8`:*%3ʈd]׽ȣEb"WLibɳY=>^RD[磈X47y(0.䇰j-7b(M[饌MCqE[qn45XuP9NNm*~S̟{bĕG@+m4ȋ#)iy^8iUI 9-靃,[ }ФnfBdQ!xut[v*5;1>'>CZ/> ;$柳ÑiYLkѿH*AMܩ d4-imo\̀N^,l4]5pb&)a^A9y7&',qOI}3]A# zGlҍKz_D{-J %rq-x1%ն0HoǦϷ-@n^0h B5"9߼zT9P/Uwzje1#jc+Avn낭"[{~pl | 8Ynt0 dm1y|F]ֶ=j 9KL%͸,vLj7#%˹iބ~q4[۴#XtNCd.<Sjڿ,e>DW#Jfh*vPkYg;-#5`IqSBrojkϿj_'B R4IᲣ޶BF %saɚ)z@R!}k.dOnOK"K3Ib.KL+pyVS.| h&cEEyV ih]LRXʼn`'ĮYIҪdz7IuqHW"ť-^jsc}YfթyE!]ٶz̀i J`kԢ]fi>'Dt1M$=s?W 7.|AW?bZlszp%>nyT$f7*dž4 Tv|Bp.g25as)OrOLM\䨶MMꉡj\ [㹖.R9@ $vE8 PrhmgqA~rݧ ΂a$,o*YEHN|QOJXթ61]a(.ѐG&g^{Êz0⢺S,1X_G+⼫i4MmCBItsZ,품|$܁OWߎ6G~qW;`_9_ν='xSƌj%C_~y7ccvPh`<& u /gCs#?ȝw{)u,*,;$g9Vy2 $N%y}k`҅"BkVSqBFs  vlȕ<2K3I@<VG_5 Wi2[dju1'!3Ӽ;0Ajm@2]VvVY61{⨬@rSL+D4˯>Camm,O9m*@q$U'Ԡ=TLW]Z : z]tj@wOi>fw`@d˿:C,SUv4sی=hJ]u !Ia϶pzg pvZN[hQھb=br Odn;y:O&"ecaJ9xj2)y t@?NQe ڍꛖ'Kf!x En:PkI/yDVKߏf4i++nz?uVgq"xw{(W1c*<4U0֯[`'% wWaFtn\3bPtx X`@\SvaB#0ѮT2T Ir3<=ۚPT 0KrB}|[ޮEDfD T#aphvzԮV=t̔ve,®$9O`ri}16r 6~=&z&. FSCz D31)ɀ+q),eȐ!LKO#m!N$NmuOZ.gGuݹڍn'S螝4݌TX^C;_)Sna+fkIX!%y}Uzg3wz:'Cs[Rnq|Tjx U铷Ɏ ||kGke*&DvOTn Ϫ^#rRU9˜^EHȫuP=^*Sz=;p.O6ZksV>wz'i1!"\,T!1^&4T߅nSڠ Rq7 =QI o&=(ՈICSBK9SA=d/m ]ԭj"%v7b}mLN}`@iם ח9)4|X9NNVe*3} SgSݼ2BhHq'.9 X`bŭm^]SBM^j ]ZL57Hr8]YOp ,,Y@ThJ :yX|Ӥt6?սdsTp6#o+'>wg( wt&Tc즑 N]вG`t!~`}2>N[9Ss}.Q++݅ h?m<`XYv:@w[=q-EYt偏^9%rLv Ljd'cUSrcphdU!Le*T`R3 ^'YHdxQkKW|*rbiEq Qz4<ovK*] ,]fT[w.ԘrƢv/f=Zu}P*rH n.Si d(vM#pfHƗC"8wޠl ;kC-]YByinCːzs٘0ׅ@ 5n5_َ ƪ**38z͗XOvt58|:DiS6ŸrnB$-qK#S Fjr=~ab,.PܼThci3_=hcñhE*3W2J ),1CX@@9bx{v#DK+ L\LujVAg~S3$. BHm@p'<`M` ? `7|2@ϙFjX\׳hFԊI,D%f{dkt.1JXr炍mCʆKx2EN4dªvJ,1Pq l$Κ<(OMέ[1;, 4LīX)szϫt8Mt9Nq!!L N%ko +9>񧄤w)%B2]&pmbn-$a91HHzsjv(/tql'e=;4ALd Pf1[;J꾩G+Iz '+яXEK.4Faӳ+K&\&Mp*(ۃrVM8T|IA9y.%vog ^WS=ê6SWX0iα|>kz ,@2{8ApX@RtKf9 d4_Hcݱh]()|\.{a(tbv"-˩g$ΰQˏtnk`p5Gf }W lە%n"Qo( E„T ]}8zE)7{ S g>7t/~ =dPA|9ea2/TNI8ԭbO)4K3 g׺r Xֻý /1`UުA6b}ǰW݀oyS%^bX(ՀAuqa^l]fSȊ*\M uZ m@ܜ[ 7Qkah2C`]-h-Ul\46[EL,+S O%QSogaCE1C[ immfU\L.T4=1-XC21Ko,GW%ƹ?. 9 ۢuq?g$/Ԑ#ܪq7 pޔ$b-aH44k)Ep 6ɐC3~Ü.΁/.%SRϻ^JMr(Gƶ#CCT02\)V(&(˫0Lk:fwy2l8Xq 9 BGu>CyB:*iNFUѷ^\c d;ʉh!9'8{S&L1T 6KF.Yel7GĞV`āk*$U`zUN0U*9x#W'Ǹ=¸p\Ylg T ;#_JoNvBI1K.]y8C$]?X!zLy퍓\w ;dZ͒aR Kޥ0zh &H7900N; .*X$sQ8JHƴ"'f3l{_"ҏ BL]gι`XebW(7JwyPHTy㳣S#y dG"Q@qAS|)]n1 ?;ӅYoux GDڟ -[5k!H%A̐$yG^`F7r ~A?6M2*nzם6/Ls0#gTiѡ|Yޫ1dl $ym\T\óٓh} 6.ya7Q^hQ gRݮݾѱ7xla2 5XVTgK%J ,t%N%|2&XyMU/6!¨vg1-M4=PʱY)[s YUDuLM[VɶLRsixp\LʹfZNV7ӼϟW tJ!#BdSBG:]r4{Fsw3sJ1 cQ:OR;lؖ>H hn\uDc~ʬL egS@/cH uTU[cQQGO<)JhP uK1@ݙ`>SES`8>i\a=D ѩ qRb-(+sOǃTHo!~2F{Vnz1xʴ}XV?u`oiE~) MfI&HnYjH\U)P5*h IFb댼G🚫 @ KW^+&H(CJ=lo;ڽbd#Ro ~caף9/nJ)飆ADnVv=& 1Uʌ}zv!LQ/]|O |l})cɜ'ݐV0(1a_LRx}PQ6P>TKDzg;heK5\_b<~1 9'MoU&}ǡpxҢrX0)&{o9{95j^U_!;)zc3Xh}zC^錐[){RpYԫpX4r@ aTҕvJl:%QJ. 2pty$*=vR1l'+Vy 8Sk?^,Rbɹ XhdVr1txf k?dԖ/q۰{ŒNl `=o)2+Dؠ<Ǥ{<ڥA,螄QU %eVtj6$d{~zDVD?Q@zLC_fӘ tf3 d90\4`eR͍T3Eɭ*44V9Ib"^5 ʞih?m^o ;Ƿ7,JtF߷xf)7k;;Y*ssi[7ʹvz]dy y\Pz:Y (0s`L*?GHPuYJpLW-)4ZzqAgy,Z. RBTBa@qVj,;^΍oZtL6ҢasVHyH\szW$;k£,)60o-nJ{r'mj4o-ћÄä[7msb1+& @\\Y<)B7㝡J!Xtl~ʼn{P XI{ lQKr Xq:)F|s@Ӣ9qxgeE;겶P}|&UׯV}6fvh ӧh7ɟĹӬbHOYFNFj8`#2zRiM]fDz"6l<;;v< ,vFE%G}h^ߴnG1zRמ͍&%`Je|8f䫱}G?%MTJLAp4s[d?gU fZ6Vd?cd2i {s#s8I6g"s* )f{1|ݡ=0Fs%}#MyDjA4ZSMg[uz0`["\RtdM[HM~:zj;vkYC&CUg @D},HTw3ս#Vmd}`$>xs*ib| ȩHW=dN`~hQ58G1cZtJ찕iŨAiKҌKpD$y4b%sP;IDYM :,@vӀ(Eԥ.Ŝ).-}ŰIjYH,ڛz^e QfY3IhͩV sK#¸7)4y43QL-ZjV;[ $I s`Z:=JCLy^BB}]lA}۾y0 / #6ؿ4[Du\Zԕc& ]WtA";Nv}hs0k%IsQ1`̐rѵ8G +Yw< @ B01±"5Bt`] y.٬P7l}+ūKA<d4ǥk2ZbHUiע0]aePu;(یpzAҪ}2'{sU$9xmsQGlP!_2» !0ld5ŷZpջqVѭ% `&9VRr éN=yLf ;-|fz&a9U΍CN~XH' 1&moB:mbCSZ~~W27ubiS;2J&.M?MS;B[|Psu~m-Xg%ZGx:(1hFWV[aG@{Zj 3xe[p;Sd fK'/Lz15fM-N%SV'@6diH{ hD睶Iq N,IT$Wbp~XBFGb>ȆNC,5 [ʚHn@*vBqr:Sh._Ĩ-=d;HM΋QY)rz3VoXrV2Sb225]d8.ؐ4as\+ f~C2#qrf/3r_%՛$䘡OgG7ӺSE5"uE\=^~wpmu]ST>Pnpocq#Xv?i3{V}r+]D,%%%|w_D? NцՋ /{5"c1sf} MG(F )d2ŗUZ,P bh喣9uC{]|!kKOЋu!^P*<%~(:ʈ[[oKU_갭[O_k AsZB&p7Q e8);Bk(^k`!'6֟EY\y9JT:lo jұs'+V֨CYc_pj&rKȖ7%(n>f4±ۤhsL`bwj `(#}.^AKxž=dVc~jo-]VǾE=ҵ&lcUٯg(=Q! 1/ vS K l9`C\:6Ʒx,QdFm (-*\Y) -Fb-~Tqfe>/qxez#=aوCKm~Ɨ3we F˜)kU(vSօhZs:b 'f5HX1\HFu;ub;]b G`Bژq 5s~8p~rlBHR`gsADC$Ne*]$qp0+lwC(bEȒ }+؋~1J\8Ї,<3ܟ~v9N*!v4RJFxL*@AWiJQ>] FbAo{#ldFH?HfUQEGYl#P/io{Уt޵yZftennX5֓*NP>I*'i2jxc-QJ-c FUfVX,ru=PP'usŘHM_C9+RNlZY?ŸI_Qu;-8m5a&x{;fX DxA|:JPq8jQV[v#X 3ĝ)7<+Ǖ^&w<ʦ!6#TNhfM$[GrT::ƪA胫I-j4:Mb[#S8$g`ﮖ$8 !!)ì)9P@oQS)lĊC^r׉Alj{`!E,x ~˺F}2? ܷܬXF8vr=5*8B]VkݮFr-˨(#a;P _Yaw|{`u]8 j~KrS͎/JysQ-4T7݉ Jg}N[\b M%Ws@PpFkC9,N ẽ#.$,¾?$ǭ_ھZȐP©gUtF lx.op20aVsVrr^!$z%8SܝnxjύZTjuLw v&f#/PW}LR͌Ù8yجoW5Oaw;Ls3_9ѓEVziyƭh\.[R;hE%!n*9Hp,K+klg5@t7(OCoB::M!TÛU 7Ke1vdVw(Z%#*|,B1ǘjޢBgܢBIJQ tǧB9nMez(E:Ÿ,D; 6Bzyiq&^\j,\I'2q 'I"1 r~!ex6X#p;N:`}W/@.vʟ6D)a7x'0 [Saug)<=bxpr~M>'eVe3 Ԓ U~Pf#rf P[TcCXGքT"F3})? ]4IbmXթ%\7hHpZzdže{Y{~:ޮ"7k U]@C9VGw#wR f ,ә }!w5ӖާSk I(pdOJ2 N"h+,0=g_.dL\ }}C5 jo栱[@i -8Ri騖AønJTN֛KXp;P. W!>a ҲyFf6\lgaj5/nvUIa?Nu;.3h]Ť~k!s}/;Wյf; N82MJc:p6kt9#~%TC )*̅O2A]$,kp/s@ʄ@Y19GMBɱXXI79W- $&vO5slNM.n~4wl -S#X͸EKQqE]MU%W2"R/]NgE5A{AI:D\YI 8_f늽 "`4Ids?Q A=SaT.4f҂BJ(5N@N6fhMM.!/6cQKI7[Y ])_?773G> PY(a)sד4{H5-׉m@]qdVzf3ULmt Kpiizs 2 : c!Oj;9]T.g brT*2 k.0)" >S77HN[μE]Oy?ؠ !$XL,?F⌼>F.'qi@m0X!=thjOjrݣfAN2NN9u V~x\HЦ$%Aw+-*C;9g!DpA% [\@.]F[ARSK$@ _AsR`~C'߷[1 X}-I9jEu6(c!ͧ$uj/dtEbO^DlB~Sw0:SgP6VϸЯx/l{q0wu̍Up,3VhI+rVYtP&\EwYuZGK_U bOLh7kO!RqvSČh=\l Y;-TneN`*@^ZNl90"xYuNL&w:X#8soaN9SoqzȌ`T]\xRjg N稠څ?nh;µL湇G_U%&WWӢV0óNf@ Js.]*vbrkzwGjm-@=Ϋ1s}uzyEUP꫕BP YPDThZc[U8N.#߽jL}Lה{iʏGcޞǥ K6ׅi80aBh'{#l1zoi15>0KWԯC 봪S2^s``۵J?At6ABm< WȊlK]L%Mn4XԯlG/Kd>quѣPۣ$bn1M4?,M4zVccVM$x2 Kv)E(kTBDc` )lB]0i*_Z3KCLQIJ juR4|VMw·HOqb;Y~еk`Bnű[-);=`$靁Q{gO M?C}uaGU즣ãJFk;ikΌ"4I:2Y,9L]88ۇf^,lrK7Jd\zBQTn6"syP[F=(rgLD7} ֳ y4fESRNB>c ;+2r1XWjs?_& AWdr쁡\Y#Ґ吩 j1[7ҐkޞDMf}>'vNfqGp'`Z;Ct9mTZ\Y` "&HCyAs0//m A 3L.v~Ob!J8_rv GB_E

9N;݄zƄ}߄!h@/԰{u"[ &XnΈz/ y3$*&7J1tOMA %p#SVD@\3sX=gr"N\V9cJ04l1m.`X v G X'GOo, Ԕ6N Ԁ_h8lnZ()wHH㢤3Oэi_;,TpIpP7,ǹym])wvEN{sSw  vRHkhU/zm'( UlfAe1N'5LU5bppglFn匭f3cыG̓Jݪ!b;iRc0a]-P=lxzrzWUܸJ"C#3 ffhq̇pSب*Íͻc0p%ƒ}EIDy`a)WAH?GiZmAsEvu d2ET-x k? 2d .'M=ɯxV@hb0>姝 ^#U c>Hٛ!\d LbH"0U$zK_{RKmǑ2~A^+m$ׅzpMӥ^ 69 Z.1B̑{v`:Ñ@OXOuJ&K9,tue1i}8l'R+EK"$ƫjqǞaww6ESsU Z DXSXkJXj?麾~,3 SsN_t|\%4q&mD@Fğ6/:cc}(mQ0ّU_`̖ۜ5\uVy?rB,Gݒ'h/ݭN.j}@j㞓=)%M~WjFun܅1)J1(ʂ{:#nJrf,IV=U %Q6py`ƤIt7mٍ' 921U>3TdU05?%^bl߉Jro"RDǦE('X?i7Dn2A8|= MLCM"HCR؇ cR|Wd@q.*0' u7d՜nuil2f2HvhBQC 'F%U֘@6<åoӤl). vetx<&֡.3rUPǃ˺T,Y_ky$SIb@,|lP}`::[1L t w&MJN zM)*T?7JaցH} 9fwoZ AM^ݐe\%1_ZJSbxATe)rqԋ+)^&݈j_B3ErWhVzaH S8LZcQ#7՚`v zo7k-Gztnwn;l܁銢Di91nqkM϶c <>pm 558俑Zjt讣;!UQ\j|Jי G Ek0. MBsY86s,Amj*W}QPJ'7HTH9SFf@Uຒ[j T +ݜ*,fOjU= Y-* UӠh%>K]wI?% A UC] sI6.w"4w>pлՅ4JZ?Aĕꆼ)Ǎ44Y0 wDnuE~9q2'6bRS$ m6Sm{ʚ~+6Ͱk/6˺[]=/ѵro4b/+ʑS=M R`8Pkgm|qL&ꐩz/[+ b=M,,r4.d::[E*i/gh0CI'8AX'{T$̌L%Oue#sJBh(/@Z %"@|R9ww~=?R(ZxS+G9fJ'#E)M1'>3e3gj$s^ A^rur 5&(y+#݆,_ BIGX|]tN:aڝ$1'k/ z%<̥gx{^ m.>^2RZaF=mPcjC5rc;m'tًE,ӼtX+)ں{eTEȳs G/ NrAJ9&)ǜ>G -c qp EelS<@N39Z/ZIdm٧%*л{ʍ>*θ^)v*«zV2% .o[eg;A 9^d79B'=9)0'7:1RdH%ڒF:;آ~9bQgQ'OR,2BPKM* ܵNX>zvP@h-x(A`|Cs)XMrxQ*j:*$% 1hoӗ$Y<_ wUxR>̻TWN9>ptSV b>ZY?Eξ\®;&$KTi u `@P6.q;D++Z-Dn%9E0^0IJg2԰?C7=ݏ:0\w҈bb.L5LÅxp;kAwhGk(abhl hr!|r  k9nLA-]E8`oĹaW}*aJ u}7kqTX;|1$dRu 494tk~a>jW "o%S f_YvtM+ L P|JM^6Tʟ[hOx:PP׆UHux{K:4Q؂M; 1aڜ}Y_P4W.ѻJ"C4Sz=Y>^ 洛_ xQg`::pn/g.pPuISdq$:ify_Dc[tU3AHݱ<;Cy 03 X)?m.Q1Tmb6"@/^6()+: 9rc9m;SӞ]: b$erT4*ڈb%{|>=z*ժЍJp1g[׃5iGfRItR6~jG]FRp'Ѧ&%ctnf -P,˓Y>$sjb$8d@*1f,H|dI˙y_ E2VwA?9îO&Tt3Mt =GL2]6둩qphX9`6>N1 T{O3.wR7mUB6}'ojQS,uaoџ*cU m*35^xVx/HO_,~^?uoO]]x!a–5LxL5k;:bQCy%Y}n%9"־VyrtyA PXM.l*.MGӟ1\;Jߍ!pI]?j֔@Udu3SM+Ftޗϕ  2#~#8 _n &7ˁmԹ*P*105N*0E_U1Dv5萚#Out$w:U{GK‘d?'V=UJHmkL?"St1˔M^uqieKZ(1$ŞR)!,K&8$ZrѺ"a5O9撦5`cuD鶮qUEdC)3uj8g 6!8&CNtZzi ȠN}duO3UYNCiPOS[h)ΡZ;74^NFby`P2V͝ډi9T=B)::c#q&[mw51o:73b:,֫p-|G7}MGndLV2P&%'v&D^S6hR8V({:SaY\76k^;Y80r6lu8_{@ZWʩ\\ /ЋpfxM+62'e;GdOŭs] renc6?mrWDlOJKأ6#bJjlv@pRTOpGs/cӵF.LjH2{c'_')a?6r:]e_UZ gTX;CQ7~nz4$򪯬(inX4;Vs鞴lD4hN%3Z `ܑ$!}Otz\3 jdrLSfײNR:LoKڛp4'UG\`ƹ(넉@Ƴ:U.³HSc[*&T5nQ?L|k鮞U3 [r :9$}DI#6h'%b-j[Y O"kVIwޥ{hiF2{YI)rC ꏤ'+l:4&u9usz9&FQnIF6čuum0zoГ +p>avr^JPéV OW8 lu;S%bQ•uYotyLS-@KuQn'p$]Pġn:tҳÄh3њ!9h|n΅C<Z&4>R~T #+-{9%g @a S}5RX *eR.vA69n2f 2 /{ZdxI=L2JoSo@m8 kaݴ?NI\ב ^h7ɝY6u +vdRpAg`C'eǺS"=QE-,۹$mbޝW+ n(ؑ/I$7#qXca }v,‰EjԢ93߅YcM^OjfEQ]UF@>4>dTqދ )Ѵ vRq7/NG\bpPۡ/e@M3AY@/.V} +B|Pk*inV7je9h6'LqxȐZgkX!/hOF 4H\R\bơRS;wE&;W`\ ,K\G~gEL͹)" %9_2T8֗S5J>G h!ȂޑDQ>j[m a wÛkY4+;8 ]WSu;"'b?a-'?ۆ-yR8VIP(_x{8 /T&opJq1eJ+ևn*8nWng%S2BrM<p _0jI{@c6R)i ))J"8A ZAJ;mϨC0.r5 w,C *N#J{B۷5qE ]sup)r^x&>ƪ3Z_8+Q'/v{+{7PÄMIFrǸiO`a޸پ̵}K(c MOpD3IJ@] ' '" iu݁ `a &Z]H+% Ey:w'3Bۦ W$!͏dns0>͓"P=;gnV-Ա`(00PkNXg^Za0.)~qbs==4+v*wSv5.F; A\JLRDb7\H%69yLΧ}(ǩ^ r/t~5&m]%ޭEe0Xٯ.w.?Wn'j[-UT|& ,@a{OL;l_!x0e^Y=av," '1_sVGmPTߗY7$\C/+Ӆ̐ fzPaA/gJ tج=Qɯ}oX**K0 tCl*][ǡ֋@ƾ1E#1Qs4KY灣/?_gVo!NΉIڼ" Bٲ(7iS_L4.7DB,C̖o$,YyQh$஺d>Vk JzORgIua " \|[ܬ {+:j; @7FpihwɁa5%q-:s5ci&K7Af5و=4Iә=ú:t~NGD׾Bm/h }L~΂ɸ=Au N碧DO@.=+ĘloYc\rw(<8]$LF6.4O#25= A1u `|!Ik;ZE"qsVz-e^b-eɇIO+s 1$KO灯?(ɱCQ5;5Q^ Ad[tkF(4+R$)Ł6oKJZ ,>1.|YHK _npXX1ahV!K1(A{*RXvr0'2PhgTZuX4`t%nzԲѻZH.gW0!/0Ca15 ӸEv=b+ *|fhs:ߔT'^ %t>H#rUIt'\\YSA$er/6H~ԍGsW(S]nrL\ܮRx! -v+A y9 f:`Z`fV!i3"uR&%#}%ZQ1;h>G,/p(PQ: E >;1 p}ي\ɞ^5;6#G*:O:6RKLx˪emb_p͇F\>i@hJS5dqKPBx~j 2HF&Xh9jאm /i{r矔(s#>^IXg;^|eN= uȨ4w4._aO ف ̽ M3Ya:X8#~ au\/BBvH#Om+3۵)ȇ*Yy5ӭ0E8f,r5 ?^.ΑKblanlew,#ʎaU~< qj:W:׌!5<\rO}YrVn|X s4gt1HݰQ3/͞\VU+E;ƿe!(ۘ^y*ܾhwӚKarN^lxp ef *'Y^ -r~j|,wHop3ftQ ϓ<9 ]~_]Cp? deח qK]Ąc`*.7лpwä!X?]u5Yeia0@p vJ(pf$XjJ hzIkt%GI{ d|]jm{vn5'*M#9ܝ [. ^n8y3Y H.XgfI?w̆SJDUY6Cs~p$V!Fu3eySϚ‘|QYZ~/^x4{201"CH!\:1Y/'ׇT6ck~@@Q6`% pX,zQb;E#&`8smqk|c/K,tFPC½3y ΣZF Zo=wּ7%7VYrRc-f`d- Ï_jǽ,|UBzIA59zZB4~pg}ԸMuK= X=;r ]K*wN1 YWBWSF?GeQ)4Ce`M?kBp1~+V³Pg 0̗gӛ*YF#]Ч7 $ESf1L)tӭYD U79U9d0R\k.ޖص=Ň{WvxxU݀c:~5 hH.NJhtvaҪiS_w1z8† &_-B?X%|Ww2kcGwIf5^bd,:͛&-C ȗڽGch)]&!Z= oK(=l_]̍K%J;ػ8gj"sRFA딇IB$6*l&C( 7c]:B$z8Y `]Kͳ'zmBmdDgOUصJ~ύWY3=][@IR@m|7ra{Mt>ǃQ5fL=xe_ =z|@Ysf/DPVO}4gvE?Y߃F`=`VmQ_@IQT^*1oS~`(a,v$' ~Nvdw';": s?cZGDup. ,eTFϵ{}dRܰI9{."i(潮LŁ>rR&r48ITWm@1JUvem|Vt]иOo.7c 0xT<Fir9뤎P1U 2G)j3zFXJ<Dե%|] d3&۔w#UzZD#y1&Y'}xՉφR*3ّH"C:i_5 #!>[C.GH*_BF2\`5.GP ʪIYPˬ=$KwCUF`}5B5VsP5>'ѫ&FI"üo!xb Ih/x;BS?;GN)f-s^9IvaQC-eBow},cGwU9Zpj=B"atw^K{஬0stck I"mJS7n#Vɯ#Pܲ0+sx<=>J\+ b=fQxq/.CsD博z(ϛ Fc#M+9}φQF#q_|JUJN ؈8rN2)l\EӉjOB%. !5ڟ5:I}Րӆ{ J//,jMz,8#}VuE ŵ!X*s(dWC$V ΫR%ѪpģHYI([L:럸5T5#Z=djBd)VeoLHcaTL {_њ3\K9iUq"HsHߋd#2wN2TōME4IZz?V2w߅l~ 02emq0 E`D "E: &9rsw#Ivr*G`V}ꨄp^7ͼe!P_-ښ-] Q;\C)m`np EEX#G QX>00UQ}Y aIN.)9}~+ ̢MS;X i>q!c$%8f\k~e.:U W)dOQry`4ң^&F5{KEJ5V R8[ntASrE Zf?O^\ƙA-s}ܔL/$Q\a&tLԢJ蕡vN4zΓ1ntjuF@=Å *Y/YXJz{20CqŽI/$|0`IHk^13<;o^XE3 HːO@SdȘq_䢠dh UalzϞ i.6N;hTY\6yin{)ͻi盵v*rh9X Z;{xitϜGN.$+pKa=D7g/^?O(ѸJ tE?,sWEA_~VU580ّ:@-^ſԉ؍תO&^YY|i*B#i0ffڪAcÞ<A_m]q2m EC%b$p0TF4 j>IY1swu(Ck2t4r$P߆Q<_x٢HFB [?̔]E+"/uE15ekWIq3Iԃ!YF 6h8ߞܯe0;a,9\GS,>Ԯ7G1g+P0.VIfCC8 (\wMeHy]"!Ax"mBs<-YC>l:s :]-' }ʷ @ Q nN5)Q4!0</sOmL4YVSs=PYG~*=[2Hkϟxe\Ax}L@)muEK,qKjU i*Ն::e( 'c9']eu #~Ỿ<2&隐3UMhG2op\]<%j,![wф_:mJ8_MO$'T Mc;I,iNJpLڛfx0]pfnA&. O8hE5X̼߽ d͋MƨlCKC4bQ2SV)wWZFaye_iGf /~U Yl4=4,PCQ(Yy**!`Fl).f!9_e/z|{eK%ph vWR[rLk#7w@V)*b+*R[}TH,yp̅i{Lq->!yѨp3ޓVNO5= Ҏag \Ol.-@ʒ.ω4 S]k;|`u5 h77HZaI\nڭ{nT f2/DNc4DD? ,G0h[/Atŗ̜mDX_?EHP7҉\fVܕՏ3bL(&AI>y[v@'wRPZ2>7ђ 9Y=fl>NcK[>}#FFf~! }DvnH#2CGp7&@ j^g7Acƣ*pMobF9˦=, k${šlB-kL{RFZ@d`uô/\?V5U,)!O;[h|9+6chSe8$!^϶]0hCuWKzfZl+!n8؂aW#kQYZ9aq0"5}ͅLݾj6_bůRsS^bGiJۜ,8OS=BzhG늲Qm 74xGxYB

qNٻ[EvstX˟ ',O?ZǛgB lխ c,rs ,@ 0%;7{qh/̢f(U1!:JW3S.0`H𤁚i7/XgMU{gGNQw,-2=xKwslƭDh*+53z}*2(Zߋ'c!frͮXuJ$p3L:no>$3zN \bm>r澃Zں8ԙ=\ӛ 袸B!Yj^[_3I6Tm^,O9U3w'2c-JS\J.(G])OڜzIDHilhz'ķQɺd{ʕs'[C;Q=1  q}Os9l2S˲%6Dt3 [BƖRbx3ϔ1PL: +*l7̴|UW03`O.B%`ۚwjaCq=bм@]I\¾DAch :\j72}q(; re GJYUFʴuSTz? Vj"Vj=fٓ]ܸDfd1#lf5zHC8v\S4>1wŦ8ٺ5p+=v׻Rb[4ʉgߦ$t dqz+;`0U1*/y+AäҔiw XW?n['ϭƠh]4J)'Tޢf6@*+ uMk(6eb`cb?Eie]EnB#1; -bDP%uqRf-02xg^p1.vcIk/cihfT]ؒ`#ZI{LwSėIkQm+];olMؾq*-mnJSEK=Ҁ3 #1)p5K tx!@KH#h[wt\Vn%z|=le>jpEQSsWf.BǓ9aİZn}cag7uߟdl +l* wt5%sEyc O!? qI_k lHHnȯBQr3WioYm]Qlzuio-?Zf'5bt UyO˺H9睅+(sZ XLn/{L>5}6)[)xdTȬՑdQ#I\q84lӂHVz3Z-F_i[M-a hr !$JLX$ײ)>9~!;T(үB2ZdWJm.'G3j1qV, @3涡{Y6oƓ9F\R4Rԃ2:yЕlHsyRg_u<dw=SG0kQy :d?(J50߂w6PcAC6+L}lF.)ҍ! o/NnwG=[$ޢ4S>같lExؠS ybszsGT)Cp; cw9.kIxVe'J@$>ۯpNHZj>1&򮷴 ZAKx%1v0:jO  Jw/4(q&˰%9RF ըδG_'9qzWZC M cw ,p=%3p嶘( G8ô YF~ɪ˝yq8G.tL,>2ՑX͠IDM@{;뷮')nsY>Fe^.)ZϱMDY'{@knCZOg՛f)=Xc\~^ٲ4i}+=̪]xx(v -}?J́:xE,3EQCV#gH#YT|Fmps .@ |x39c̾u_ WzM, ?yE|>j )"lFt g9Lg?3p0tuEO ̃ q*,δ櫱v9jev9[BWđkK}?X³^GS/cDL] |hhJVZQ wljyP)@[k"r&;UF, 04z]cps=gݧx4Gu~XT$`ȸHg OOGtB?+ȷ)i ^sL:@]"20M4tpJҼyr7a@:lrnwz/ zO58b}k':rf(A٘Q iv ~^ }`-Rnya: Aؔ:e E0 ]3aG mRpjL^-Rcxl i6,=,{QV0;n#j2_.Og@`=Ҫ9zIPZo9N`9~%Vz/Jdлd]:`wG$E&T:jXͪ|]|6L i=[/iFj$˹ )}SaGF,\t\nE}3&= DWkz?(c`J~aH@0Hr1Rԑ.@~JKPh6A׋6@[׋0iX9!ޢWѴ'0I]O\Gk) "7ncs4˧y)ƈ4^@y6XQlףUD-74F{ObWmN[$4PV`-%g;1^)LJ}i*x9@cQ ZWB)%ZhM!ܶhY?WScXȑp{i@MZzGkV IǬue^p1AC>rq]F_ H4-TG wfGAٍ*byC[xǓzUO,gfw?:-[eEZo sCm!^L!!2;|5t>JpV+{\C:HegB&/LY mґb5ԖG3iP|!,&e,48U'@iq3M\1d=WN06%ʁYnvOuGS(Ybgg7EuEs:j.A?r3.MMZ=,iWQ֝imQNS )=Eds"U0CnP~1|>o?mi3z"4L ǹ- _q< `6oN:w) ;s0>76#Ag[]6~MwcttZ*|)F'&]tfaŀtPb:G-.>)Gm&}j,E ̸BW}2dރ?Q!ѐ4'k"ۼ) Qy1H\ mI.tpv .Zẻ9o\㢝#CδJݡYN?[c~^Ԣ8V'n,Pd1yXϫ&0+Pn91 [aj$-4FٞoyU5`"j ZD*Mejw9霆+Ȁ?n*}&$qLraCUu{5l{1ͷF 8_V31pьq tiUku[cU.fžY5[E_H2К!Y^M6m81J)pJ[jd#u[=ZH,71,7uRjR PC(bMI5#` &yHi%tI#ÕYZgpO<*jz^6^d`7S*-Q n }-U{Z3R -;^آLr~aQ?>FH3ig"ߌ8d1?me H{ uJ HR^ trLzWOHL$NzHg[ya~a&È^Fw{_Kx"FuDcvD{LE@C8nAµǻtl'<?]޸Jޤ2k@ H0 >삑sG}f2UmNWxfJk*~ ؙ5I)dnivG1|A zbY9a* _$seOk؆3龋qN8ml*Z<#p\DוDz CdYIZU7U$3(,qμ{ KdcNtؼtfR_컖rCYCYc;CK=A@=P]#kkGOrSm{K|ӳ Ǹ@WeqnZYql$.K11%צ^=å!⬳)y îݐ8~.L1KbMǨV{m'en^ Qa8Y#''~cp?w s0ud}{B8oaC.kte(|p}5KZqVJSD㿓'VNu]݁٭W}:H\fF9'}Nn2X8 U(uȝQ&_2 ;zќۆkuI<={F2.[ Vy"]@ Cde"c㳹NN:="lA?*{]^fZ gv2hu| 'p3.7<'d4995@zn:'D? -փ'/q E/5c[bQtu}5&% >L!߂5]7\\VsC&jei[T)b\9e 9F2N1 ÐkI3=ӛVf e׬W=ڙu#fW5?(6L:)g5m ʠ Kz}`RUiPd _P]u"ay͞f2"*ns}H&> O=L#qvm&:Nǥe~v6lh[?a۹IJ:s[!QD_f:cO2rʸù0ړ1l}/%ܶ9cp0g<J]Zk A>Vmn0Ak\,K\WXDgB 3MBnok=>(Vz$cK8K%E| Mj|96Z!W[*J^#ʀdsQ?P1иO Bu32y.Q݉bH '*к3Zhw'KB CSx hA kW\ZnBܶOQW]̟ԯjzN,1@$ , T1,f ZǤ/Z%HqGr8+q;^8{Ґh]wOCC0l-W 4^JlD˔5@ %rvNWmPBѶ_{H{1EP1..g-IBEM]EɽEVX4Fg!&n-J~ky+iaOn!nR͌FB?_Ε/OS0WϘIi<}e,GsGl[_9+=&h5@ݩP4"'{ր)' =O0ߢUv)GDhB,/sn6%&jpRf/HXX 7m2b^aԮ'X|K'$<4 nUYŨ#K18W Zxu<7y'{L-E\b]gv~[Gl]d[D'ooPH'gufac'Fಅn,ΓCSTSv,݌2혎뷂e3nWҸGۃAB8*k/g iO}g}v3-Mn~®'<( +_Bt&#:_l $z:X$'aipb^Jm]zo&x.j?wjlUР1JF5'pѶCw} $~[Wbj)5TX#kٙ>E #KK%v/mju7ܯ^c25X-0~~OLX8dh1V6KqOi#t(;+O]R\U>O uq-A/ #gbHq jؿk*H_S4I}^jkɬr川Pne͊7,i -)h?I)XCi4uNE GK7a9ՁZ|#uI iNT3OY*bbL%Wc5i#-#Oכd`ti1yi.<gڝWQΧsVSa}95?=бRIޭE:LlFjuM~ւG0rݻOo,-z5-.hy'6.|\Z{Re_2vITiazZU`} ZLMG$y>?O3Y2,OX/¸^,7P+s6[(4 G5穃!hITD!V ndpEwhӹ8Mge7oi{S௨dQkO(|jRv<YI[knc/X )gO_G˞ : 噓ەucb+!Vҡȭk!IJj1m_~~FRâG#[2ë&NoBdKS09{1Hwi:]ͺObǡD>E)*LTmL5Ue\JNyϫkH ">MO$L-tzf%}G5 )R| I4XˇIehP&݅r k}9ϵ/KȖ{ε'S_rS n֒37md*D6dIBV?ZL+\P5Đ̈0N'v&$ܵF1SM@l84?Kۀ"]1=FrN3qU)*́ꊎ߭Ce(^Z7t `,2x|M`44dnn=&~[%bjC>mJ XG_ZWc6vmӌJlӱikh;ZU7=H$V"FLr* 0ϯfH[TOfw=.C]NH+;[W1$%7:xIB!h zޭ1'u/"1\zrAx䵘eĀ @Uf,XŔrB tdϓh@omXDhƸ3`$Yw?.fqnn3戜f`#W6^ɲ ENtQXlSxr|sUTa2LZ0qWbjt-}4Hn!֧MYMϭDi3|P+cO"My 6 pY6w,T4*#i!*J:'9:)\X qMy^iu֝0ʝ(9iȤgJ)Z/,?ەRſ -|K pE7j Aes4Jc+\VD KtnfYT:rE$oix2CPѳgis*R2:wmx=>5~c;MCHz>z4m#}1,m~3,bwl$~w%@35bb4y)M/K=XaѕGItca8td#I׫OUʬ{ˇjNx{S]/^ObxH,GR;rBGqtы_e29pT;/ 2z8ey x~u[@4:>{4|z%uBsq~-*Oۧ+ !X,Zcb3*e4״ځy m#rl83@H{:uh08RPۋf5ՠ ˔re`*ʔ wg-U)4UΊ夂|D=NiMYoPr1ّA5S!~Ci?ž/Ǵo&m%Am<}{5Tl7 ~;`ل78q$^;p;X}r#܎v`T:(nWe-k 8o 2z .q#17s[%èc\~:3P|`D [J@RTKPvHֲƱoջǜ^b︋WZ֝LLUЏAc/\:f.^Aj,O tzr#b#F޺WNfSR=UӮ) 8EnQxYwafmP`N!9OFJw ݿeDpT'Ј"QxnC\D@DϏێq"C(\8MpЩѸsj\WvE)r]4xDX/BEp|)fd(gc!vuQ(i'0Jݫ/#[?!ĹrGS1V şl0,ar< aUCY.tMyFkϜ]3;h6Kc;ݠ*ʷ<9 ALEFLSI.=(f(b(3,'7]ѼP:beIP7Zϐx]NѪ, 灿9W0Mt|봩VJ 1?=xMswXܰȷЩz7Zib3(e/.ՍLvU!3PW Z>;G[v0x5K*ۺuᒂ[rԃJ ̪~X:tr4ӣo[km*FtٺKwxGxCALqt'r>[n{$&ȸGFW?KCnYk AtA3R&i ;]ۮ)Cń-.2ٵTl:17R~GyLFg M5NBr=uX;P:BzvȨ{LUNT Cx2ZDȣ_ ^atuu84j9%sj][+$N%kß{KL͡ lmβܰ}1QH6 '`hoW<=K  ͤRڸc_ I~u.uN=ļ^׉`^Ȋwt^k&O܄$`?\UDVEs` QҀu-%F$\c r9.N#nO'IX{;V\JZR<ߝ'foq{[O3ZL %4)4L:֤q|j}V_(g[+aqqjg\cn#kp e_Nz~dB"{wAod"8:z~y]`Պ(MsF}KA0.hTq\;v֌v-=\t8F5`=.{*P3[Sy,m[ldv,zr0Vms91| 7" n-你u@x>v" \LQ FL iFs {&P tD@2~5ShR R1[4ѱ,4!PWt) q)>BHqj6l7KV9jNͥQl8'Bu4ٷ@uPF̪elޓ"SVZΖ"v>;i׎ưk*U~s;*` D>C|J#eY N]OVMߙJZUS߇k{U6d 朎)5J E"R"#J.Zd["k_zuS+3^4#m.M3AS\hVI{ W3_n.f8=SGD.Θ7p̨0:'oԻ2="sMS}֪z#_@@k*scR׊QINNvf`bo]2YT2o4JFD4{."^h|ZtE{LgBSt\->"_z(I[ ѐzF}Ek4+!qpK1;]!i &o{џ^>ژ^wIm~q ԘHCvY+aM";L G#=KZ Z1$ ňJ- gE{;ʼn1huq@dq; [OWE2J o1<oӭD|dd.l BR]]PFL:>Q~c#y̦A֋Ku4zV$pɷz´; \bغvOzQVϦ$+jК<IA*OD-3 fr`eDC^B~{76!nZhZzѮ|:ds}%0ASuZ (OY(9yzrKm0?wsM/fAmұNauWm=ef62=ydƾ]f\ڕA˹`@ `%$4 9HnLm)A1#J+ %*X629SK_NoQ]r|CA.B}]֎kClc~M2O~дGjZ"}~U?}2>1:_v q{ڂ{X8B{Z2V:x6 ;:ZFA־!Kσ\-5-QaR}pG\2(Vazi3[#uB#Fmw1/ijT,F]J(3w;/UzIiw,J}A*tZ_$^Ht%2>^|8O^v'4F8fX͸4K0Tv@1<_~_ z.j.WOKJhD$bXԛ]J*e"h$H7@3{T.h^/j뼆y -]z nn |=ӏOz#)9!ܫнmzCIQ8 n91ߎzxL|`![Mx&:ydd8b/f{G8eű+5:Rc&$=a:Ћ7ƾ~X6E:Q5h8#%@w8@KgaU+ 2"q\*Pfsv:t}m^,N1 ~:9^Qxp3܋=:'K 4Śr)űheOEmj#vL^Suژ1}H2# 7ve:FddZurɠJZ>w̚"cw ϑO%gK#h\qjhCTAg]+rpjXHZcߒȕb}ҙA!Ǿ\W%=p}+ y뎶3#N*GAo!vsG4J&-do+(ƞ/.RHRF A-v$5UHBw&LԹKpZjH>.w i2w-_DJ~OPoEi-9e:v >E.q N79޼":#C%ʊUAЃ\ZX贁n?u颡1-g `9ƽr)Kb7! _教~?R?BV5VC@quzɐ~m*C $ͮz V]Yce[0$ QfB/9`XaăQ j:`ۅ;Jw ~Pwb:[p[=uE8skOo q&2A³ɮqq^=.edbÍ3&aڜ.`?w+^UGwX7p2@vIp+7"JR75r6w@lbv`^%7<%8Foy*o)3lA$e0ڰv ^ml$wB0)T~yb淼or~x+{KtÀf3#1^\JuM͏D<9BF 5,^|$L{%LzaaYp)J6CRh qd5EIJ=8Hs#Aar8q ZuiyMUk%*ۺ%ӡ8Uec0}t=Z8NBg҂ځԸaGZ638?n Ӯ0p.c|f0)Q RcKKFjr.'W?9#t]F;*\kr>tDt3Q "a|`:F뷗O8yaɨٸ]/ N}<=?paj=c|pg[ǹcf6 "6Xb$ӏQDKNUHt!d2ץ,2m34)7Wj'ܻE}~*s0 fLf8jD;7dxe|ss#^SG7tA~Iw^[ YH,At|*OrTḺщ*]˫S')u5(S ABԑK#?igeqIh6A"c2͐E:ʩERA:fit_TC;,tEX'R'\cpޫy1 A?m6mlZ=6{}Qk;RʈásGuw\<; -$*Q<狿oۮ6:u'ys^e ^$STt؃poS ٴtJP>DԚfmaf&l;Fth9lSƝ3+c .U=9Pe:z*̝ӆ(Ǒrz,ΛkM;-WbU(!u#@A%=IWI $ }얖> $PNLZ㦦 3Ӑ1Iq⇜-cK?1GijYȁ+"EhAezr ]EHz9iRI<4Hv1Ac?n)Ҫp'$#E#TٜԱN\Oգ´/VNk6#=^cl͜oe!D63%}o3 Nr@г+y u~5=t)o4NEE (t*9 &VhQ|۪}B^pK=𢓏uɄ +|syz@jX K0:lu:A>OwQYd[y8Zt!oS@ze2 +s"I+f>g< R ܏PsLd!O©I2Ak@]h5XH[EWE[! p۩$F14' O4g,Iqҍ@nL+-sң?&mjIf k -3z6)Lz=lr|Փ\I9jbVkbDygP "li3<5o% *h$SپJ>2x/mf{rzN@҂3 ybcOQ#PeW]@1ȷ-Lz ?=ݭJ`uщ tj,/]M7u SsT6F!vO+cwSM1|,Hi9fY9VFjVAdk8\A5+3+[d9y6~s >u^ ע-mڟֲ9_$;4gĪ!N'Rm{K^4j3[s 2mtσ`ź6$5ӂrЊ0\0၅ è!%c_MBlQqg5LL 8D C&HkX|S0TH}^@hr F5<ʿ>\/#TTHE2-/tW[^ۅM?BK @=i娷:^/'ZESekݽEn!T]9:Im۽EIr.}sA <8s0JhPDV\c*l֟B(VlL\Dihzgawv'T@(.H6w@9Ȱ!;]7pR *&N2?Gpb4p4?A藛LN߮_y:evYP8ĹN NX x-kX4I36FƈzwSjUdFu_nSjxv.39πK?&V`-]KzRf @e5-FG{bC qw7chbW* Ǧ>D衴guV[ sZ?®΋ֈZWuNZߐPBPݫNw>V vE,NMRL .x~:١ӟa4``Dl^5ˡ uݱ kʼni-Gb<ܚΈ-@^渨:hK36rL1EQZ+ɌGa ~xf򰢦8FdEg[}Nw"gN&H_`"Eg''^|YD] c1gRkk]FeHsoo.)m Ш4>bm,n3`}Sm1a~v #q!o;C#짂R2U,>:WVt(M4ipMˏɩuKX{']٧jϵ9 Uk/+ B ӝ2cjIQ̵f8j`sL cm Kl0ӑ><9[7M=2F8y")O Û ++9}2](cwm"<1`- T]ީڇfM†.(V 2#.{S =FQQѶX$QN9[2zWيh FA=\}BLV Ġ߹Z砖OƜ?UjZ+`ʉ6ɤ^N!xq.g^fƄW!1jeHl}P.%1h|rv _B͈/&!jݧXO^@J,kW8ͮX (J%{m*=Wkw( C9Zr^'Jt]}ۖңrN|-ǺצfjB5_d WiV2$$E(i݅cN8J+>ѮˮDmKN_o&Lx%ьfǀ \ HЂZ~ ,զ_SHI2SezSj<.ug)06S`.7-Ge'Ū1 ABZVDrN}#i]eҭGѨ diYZ|ZAۓk/!vMP39pq1o': ͻ),@Q?L:X[)b=@ Ts "v͋D4 sS#>8{ )f6:eEWMw:H{.fz,X ;/rםUa5>ظ/)#B2s34/$w04'YY4(#~FvAs0%b;6%!lEm? 01`~`hmpaqpRZm#S{vȳוc4{֘S/(Ox]F}C lꔤ=F+[yX4zv֬d >;:x*~{Da@WoЛd~.Y5$e3ͭUp=_B" %`wbzd"+iY$rd\X0˯Q+W0MI2Ⱥ͎.}[}&. 1ד$I3γd|5(yXy%Lk73[5fqMidk{.tF|D1ip+A/q ]F?wvԨ1Ft`N%b'3d `QMFrcOHA:ْ(@%w3QAmgCS/<mc+֞t])pf;.1I^&Q}(#lrb}\Oąb{<»NK&)nhITqh3S2O,-z2o:=1ƪ 3 vK [chIxѕ ^kʋPyQ%Lԕ`$7yY֍;qTcǽC )H\N$}fgǤ d`&D t<[\dE{ũ>mLjm4k]DBshn͜}%Jv9:Q3*yi(2A 8SSB=4'~7Ja.&d9Fֲ*g8 &`ZCé2?zA׫+PsB6sloK13_oOSfH= RtmS' E oN@>{"V,j4emDz;EI#:fZuW{uU NZ =7Hw5=s .8}j6PoԫK :nBe,EI]D$F"Ҡ>2SlM /Ic h vsMhdW3r\5a,`vqIc84S+4Q<2q¤y u98R@^ideFW9E8 Kj~<"գ2ZNFt3qUgd˳(vbblX&瘕zwĤ^LWhr\|T2.WvNa蔹ƁthkC8j}Nu矨!$E1ΊjVX/G*3#ԚkcMveYhp(5M+"Ng%F3|җC67'?`t~κfwMA}0-Ƚ3uS#t3A|E,og:DOc9ICbĶ0"T=!?올YYNvܯGH^]LS@¼]#4Feb(HH^<{Սn q␀" :oK x{zC1r<+74+u%]wXaU袚%ֹ7 :PbFvV6]8NEQϓHw&α+k"=sʏ%qX[\%O3~\?ҳu1ha7]XDR}xl:`_%2P)#9 Qܕ41~m lЛciXE1r?;&D4 >-9l[0l!DzS;N@j^׸hf(1$5E6/;`wEȀ݃E >%:&AXt]4ěW4[$ IjN9 j;owŬٯ#mʵtD P(y?ʏQE,Sa#-EﳴŁ2mŃ]"/*xx2(-;9OWZzupr} H90iv^EU84Ly~1@/ }nG*.Xt1p G E(:í&Тi<tҿ)U@lZh[j5g;:ax9 2:; S&1N [UG'"X2ciG>jMC֕ES,2S45EHL :Y).EpEJ("“- yoU'EQA$Ĉ^l +8v'`3 m))_Ͳ7 `ZTkZ+M0\׭:髐*=eDSwbB޾n̄ WMGԂ843i0r-猡WZ/45 3]#p 掅"*׋H܋ <. R'>Y+w)[EAd=ZޥךdY_QA"!$f+1@ 4-!&}yxxx~J:v;Wfd=-7rgh=ƏfLwzJ;-0ӵ"dK`}/N7TNp1UC6罏T^)цSB3{xʲrZ(]7ՓO7>͜JDKY$5E}_غO\W0|ghD]f{ Զfc~60Ku$ T(SQ: S5֑F$zj*!yghٱ,LZ׈:=(<4zlyS`[%8nN_Dma\<&e+h)f@6)¤r瘒o+%`1[Lj0{KA%J$fG=&f* x\;S#sh_4|QLԳe._oet&bЕH;#)Q;U~B}7P]jtw.+Hɏ/%F ~=P`cGM[Uz`otj@ՏW[Ki^Tl\uX͜Ze)iǺn`bgXu5!ۀTb%Gx+c#,+ɿa(B˺T!ϳQFAN`3%%Oq@0 ~IvE,iկ2%(7t{L(JA"YSlj,,H"QrFǔuL}03J8-Y=U-x]/i2^g.,^I `H~}jAj]CTp/~LF`ܗy,!aܝ/an(G,F`CNJo(=AGz@7mv2MpOzGG [*YNyS yqR0MF}ZLTͺ03e)8FNd_ػ#C 6FtGY,dJMTS1A]S"$cF`nZM'gh<BF;9;? !6to~f[/ٛds$շj(y9Qe#JG (2A%Zbއ{w9~׭qOAF[Ihz]I<7V ??Su~lYG1'q7Ӧ9L;߱mˎi^47 {9=T328 l}ȱV9yHA䴭/kHzn om%2W9Ũ(7jF z{F0M8%JvZ^[L*s~r`#p:CVU|ը i=OM3!܉y-@yW*s?Ɲyp4eydK( 7Y9 "DeIWTW+T,[20D7͞Jf;5\0`iNm"~2j.\Q _W] klZ|:rl!!Cf?pe.x-ta"Gze1s\Tg袷oZ沙W;Ԡ <utiNN IXr3SU }z'RsCUw4T±|ioeHXG{OYJZq:"@9Ur V uY[ 34g {*)lN|J!QŠHCbfg@돔issf ɸ!r}mnH?̰Ѱ+ίjtu] gG(T a\. yoө;rMe)CmLGF>çAP8$:{֊Tka;lLڧk;{rSNx*Vau h5'yw%(]\*=9pk@gΉ1o51MfAL}ku-AЖt<0nh-4u+[?#=fC9A7RY{ }BL0nCZDYrzkZSy.@>NGP+DL0,0#]H#q(Pq8N:ޗOVU^ &C&}SvKWm{A5yx!O^% ]bdoa3s9$l+A:b6O1c{FH(plm·Gv vUTP`\eR RYPUHS{q晆"O5вc_$[kogMRwIeAP@Qt2[\Օ!%d \i}7/fVąRTr`1,>N˻/Yʅ ywsUGݴ!JV#yLOC+' M6׺1PEL^=Eu0ӟ)đnzj3 [!>o׾ 5W6f FwT&;:~E#WFC[GZ#`U"%`}K'+lUL!>2=56jT:e[w.&h/v8gJn|y<C8pZPDAEdTv9?LPLW |Ho[ @!1i$"M7y.ʹ1FW33{_d|a['>>ws} T&Կ'%^[4D1\-<_M"$~@[]5+x~HiΡ*hyݲa|`}),md$qLMߵ Ǡ;#јBbUrGʀޅn$.gZvMBF'wZ3O8M])"ێr!C#z%=qB5bO" =^ Z[ &=XǣX,0Șqd cڶqb"yn+Z33e#P-;OpXK4(BSuo#pPP*^ }z]?/bXh|y_DuJ@=B[{flIdVR. v xho(˳5o:=9+tKSu `DN.iM~bf0d1,j)~Ix Ϊb:cjO:AvJ.TBi,Wo{+{[n--jyth01/yMp=4Up)}ꈢ7B2II }$ݺ[qı 7әbvK#B&d/wL5W\^/(ۅqf[f+cV9/Ѱi1t WZqWLC{l*r_eͼ{QP!]r[$aL+8MdM 8m lf'Kg#LV|w긽ց&Ki/"vv@L]{wP!)P k]vB(:ԛ躥=Nո&;R@/ q|֎cijԃJrܙu|ퟁ E3\F )iW?VrK$Bg[8r:L$.P r[Zխf-[2,UL9NXb-S9S+coS% LG.WMR@/fpτr(D#$8 o^־>F\yx d 3b ңonKd!]}BpbObUP*i8ql9f<ݹGfRyǝvK$ X,gfԠ(K7L>iiGs]1)Sx_Lf%c^h/ڞDH@lXְVfBԙ mDc71.1qP>NOTN{v=m>jDɓ/.IykڰtZzn.ؗ@>=;e}Cԩ`!FQ:UBg.J @Fr 0#şf֟]mS1FfVaW˔dR+Z q3C6~UI(@I9T ٨A9=QYFr58Éu&96C=1Pqz+y*Ԉ)Gˢ飹 Ч~'9-ԏ9> UMN%=1; OAz0N{r\Nf -EK _W 7a=W~LHtl[ۡD;1ZeePCnFhWc#EtHk߇p}m /;)cOy%0Szb«K~ &6|0* jv<#usC흆ЖgLݢ6YgYCBt%yHbj\R ?hKP2<<ԞcҁnUH@pQɳ8'fEȱ*^Pi;:v15$V#ʲ%D Tn"έ~KGׯθ;yvꌡ+T~:'`,7 XYd1$P:UӨ~^rXޛz+\bjK lFwJISPڦGxϼw6e*rf & E:B'']n8js ǥw?6pJK[jfEwab[c]Nr0"*Ho`n?קM;8 Iu3^8}Fw7"U,sd$,7'yņ(PB9W L];N4i0 ]LtV:9{Kc7j Uj;F;nbv|%qT~L2峝M55L9bo\ P_G;{COZ񼌖? RlR yf".S!s? %)!LbrrȈ5Ç-2S-DŽ%T$:eiغ-zX)Ɛ H)2,Ăɧr]9ic9Ih rr("jVv '-+8vH{̦]#ZPC˄tD7="#r ÷Tf;C'| Xe S;ng$k/ozc-:{}͘QG;72]PFi㽣,}4V]nK yc9z#2&d'LJ_\_C-/&IzY 2CV8&W$4BҴPFV$U߇Ji۽[*ggGoL?"|KX2|{hPH }ǠXvJfR/%'STG]^G!4cg6 ol[4 gw_/novLTr7\ ;3XDqTdٜ׹\Gԥ|:zB _ 4/F+BU|ZU Eb`'P6"Z"׋qm, Hڄ՞q$ ;Ժ ur+MGTy Gv6g% ~dX\i&'k mTX*1]**,E[Jf׹/-%FN Uv*:y[H9hLHx~()B[!zxMmVOa(6\ P(ȲB s NkW lU]u?[ldpy&?3}VD!ZQiw;ܨ,R!n)?d]_?.x1d+hZcs 52:tsɹ~n5FKVo>汎%`7 (o lvl3@~|1Vz@F.:^*Rv>fQ?E3[#.x~f:h"Gs:N&pag t]d#4"Dd[߱\h #is'kl%##T4K3v#׿ń.*08b ֘ Ļ%v;VnK KbHwV4!-0HֳYHAx=ظ ,FU4`9D1eiD^]*}g=bw"魪FC,M,d O7h>Ǔf\K*AW۾L J+sE&Ы'jjkJjZ\7]޷Ǘх鬸it C˸s횜b;,oigxA̳+RH b ,5AYW ~׀Iq 9C ^BqŠY 8{TqOeg*=WNn*zS-i1T+. )o@r9\ܽ Ic>/A›}eIڰNms &z>!l'{ҮrEm5 @^ @b`\L_Xc#Ic;?m,B$-q$twFsg$ڬ .0?.U${Fz#DGSz[YέT C6m{ JƂf" XQ0,1a7DAGa8*r-v'aQ v梺CCcs! ea<$5qXvΫ_ՉdX,r./z ,{ TulY=[i VelDOaob }"Zw32/r=9fTJt_2`jó:)a}-@(|4yی쉗W{/"n#υan9f5,u|WԲ~MF\ BG I#շv+σ4?@CN4M3lMꄁAVp\CIڑ镒 Tj/ if!B<~]ՔFQZwܚVЁӠeU^ݓJO=~ݹG)c j!7_B:@ [%s,G eCގ}Y k,M= wXN0=*D #bNsRꊌT 1EQˬ\ -EuIÎ2ڵYEF)JZaF1. @bI:KAX0{B ˽`&hK+bkSrkft;i ?[zAZ{)-kT8b] @>|Yɫ;0׫er876Ĥ8r$y!ʌxutz'6g]Kb`<^kܺBSkV`Rh̐JF)lmR|[uWG E.Dw4&CCm0n`N8t)hb^MV9\fIbKX_l,V l%ʋbSۭ``bcԋI Yc*1C?3jWQ&&(m&RGa|hV cLW(Ѕc T98BK7rFq\2漡a4m[ !]\ 8C; \qQX[+lW9/D =3PĊCa& ik!Q7 Wh]`%3(u$>cˁ_Ak٢Ur E00\B5cGS 3?O J*3TX c8[=A4~Uq6yؔ.Ԅ"S rsU \`(zToIm?OѼ]+:ʥ).J;c3\8C++Y;SR(iQf f#wz8X3"g{Z#Ndo-Q'[_4"psMŊM#~AGr#uKV 1;AB|{~=5ŽV̤)37V3_#^€, QUQ^J2绅\L/ѡb^mH#&LBJ1|;dXx/wMV⦍ Mٴet&iF-5&yhdbLqrD.HCVp|[% 3]'}CӼ4 "3Bb$WTn]@QCRnc(Al P>ӱ҇^Ԫ#Ί ۿN3o !wgz~G'MReVH6vuOVSC-ғ8!@)xgPQ22=7 ~&\\/W8Za;mBߴJ6*ӹ&zpZN(v{ u?;YЫ?̣\AYऐ[oSBEľN&NGi8mgOPv\DML_v H_e z翮(Xp?@8zs̬˚|w|Us+ppB,,a蘽KVR;yvr#R~^H(&M{ ՞"f-6BJ6y9~)#d<1 pO׬tjȼ) \㢕bJss'\&D@rq->lz>k[i:vMTljD@lT0Nb>юM8@@6.'#];TUQȷ Wte-lK $cn}^ڝ֒UBJh&~-PyU^l5Iݍ6]Cބ6BQIJ|4uiDjuX2\x;GLM8,1Lojj,&d7Ͱu㴉LgnCb}QqpYz綣 x+_~i ԃϥlFI%#PZXʈ>҃p{_]ҤS$g:%rHXB]zp +M`_zC+rVrJ7ȡ,í)nV g8}^rX$"c m,zhJ"U_Oy7.dV"0oKюM}lQآ^F#Rh˓y:S`{ |Fbհu~UQs-D"صjk=cڎEqQĺ:0 6bҜq}{KEDhr:F ECa5pTJ13?Pʤ)0o\xtM :]ֿ 1I 4" Q<`%ɫ5R1Ufφ^9(tYDT\>Dk"0= tqt('CY 糾J'S)c 'U i—5[5zG_ldaa)L-jWBbnAYsQP]຿2j R{_cf-T?h^*Fњn%o>i|f1Ɩxn'Ls-' emNHt$dU{lO4ozBxUh24 'K;|;}ŧ3\cYuЌo,jzwP"'kד /=@YѕKaJ&C^[Nco^[6? q.oYQ[u\^5 ύW FZE3=bT^LQAn-9ir! C؀$9 iiS*ӊ (VMCGCJNa&qEM[v6y J p,$3c#鄥74xh}-{n f4I 5gwF &lpu+ χ젥w/2zUR1/df%m0s k-<5Nr]CI?瀾֍(IYK ^yM=[O)A`z.Qd@ȸsR e[ݨxB$S4=+62H&%FtfՃ D2P# 0NKu\Uoy:|Ҷ_QMb u:tQ AYFTydɩ5va&O:knD1 1ttVqbG"Fm: t_$RLt fEb]wo_ y'uxSֽyrKW"D&`9]sCzxp&xgc&uuǹBQV!$-5@&O±ްevlP4[.L\10xm1ޭ.;P:X|瓖1[LOR.swV`M|l'l ou;w04+Nasfa$t.mˉ <nitpY5` ;2wf(!YRq1.z]k2 cP rIvU]SXp" LaQ:Y8Fg:%x28'Q(zG,ֱ<Ķ =.m-ta; g#J\yP!o%Q|4i jmx2af-]'+)&s'k~M%:';4Yj }0ȃ6nF]>zc~4D[A6j;ҋ IGu#i=j˭WhڄJ*d@uþm̾f:.6 ,`~mBZԴ荂m z¬-VEOJB `*t^C!Ǥ2l0֎6M9FBbS2)Ty‰(Ȏ-]8lЮjq_X._.Lh^wމh?mڐ4]cY+'| z }"S|]5GŃog\MW8vٳF:cIRT$m:La5m(X{T+M#J,Ko3`M\W9p[Y GQ ũv*jX)zsyyM4lOww"Kߢ82#)d {g=Ch`sj#O:H9uDr44g/'h2z 8Tk4CTt488p}~RT62Yk":jwݨ0y4 WkrlxHw* NQLR9y< _kk2&rda[-vgS壗,J 1z@p epRB"|q2[dSyH㽂o *i`a (8yT{jJ [疵EfTyB@>5w [1w )S;pnaD1c =Ev6H'_0X 2:tVќ]u2Zz^]H![޾[=JpOWR$3bICl`y8\p9hzdѪ\|{V]o؄5c n ,0$5 8z\'|QT_^tW8ri1"o^ *ˡ1hac-.OjE2tB8ĕkJ!Ww!P4&jP\xD;)qK?*? XE55$u[e- V beh'83䛏K|d-Gh sI )]k1H-+5wd_\f\֩GaTMCY~̞ZwN"  0-moR?r lW?*6H<[>gUyxiKj~c$\ t:RfxPjEZbev.kJXWl̑F)Ɂ+}BL0{唶>rBs]n,1u&؅~0Y*?#O nv|596FA8j4? n^DWJ"z ID-&ݨ3ͷe`3/hEsA=&r1`+S _vl3Gn ߸GM.YC|Ulz)֧ TЎ.tbI 9"M Sr"z:*Zcvp e bԢޮEJSWiọZ9%X?EQ~O5\l'3/؅O5yEcxcOL ~[hApD FHX1Oq1,4]h n=z1umu=H@[q7Fn"ȩq ;#qa ?΍'{1$qGүlgeHa2)6mj[8$I]3JvrJR&%s5No=enhkA7a/42dFzK3cJ`ɑˀ:/Ss^t{?ܠ]Z kݫؤ\>0Ϲ3R_qn9|NIlp P۝ס~'g]NSuʹ892Bոe8YV/hV/_YC+ 7o); EjucNW,gD]-:Э2ę΃kěQftXVbn$ԵV)qebOP*:{-15${6vo*m݌8?YK+A_,OMLEh 8 9c"AnQT7*ms((WEռzE5?E9Df/7[0DC7i ץ2W 5Z9] _XFmכƈGr~j"Bszp-9l7DCA˅ǻ`3] 5T\;tC[ա|\l4Z"пGi&05|H&| 5}K{bsZ\TkTY(c9x U `;ݒ$:D^t Vbd6Hd}Ę;2D18u 9R~^T\+k?\uiEE`Je 5ۊ(i =q3x$8HRm ƶmނș3U;5xSt"TVN 9RpZ\oDC!cjD L8흮I wYy 5@slIv\PL\cF~8\ a/%_#zl'1L"޿tsZI"wiAc ]̿um,a虆䩋\Z! 紸cӬ Ap4-mZh(& P"vG#oa1w16lGknɉaI8BVHըDc^gl,o|܂Ψo`o0 "2"W@ d_W/3NmB4'u~۾PspJԇY6=4@s^;H{:.GHzDJ%Mi08pR\ҹ$rt4[b:8c_Q#!uvy.|l[̑%lS{*G"0![ &lDwQ]!#<ؼˀZi. y19V,زkuCv&u7"uC7`X*'j*22ɾL@4C,~_' MխQg3& QWt ГP"\=em\ mu^&=oNSFdpCƕCouSV]sQkTidrh6+|/w^g±c7i;~ɫ=G#BUȣy2; +ke(~}z  M!AF;Iz+Ep8{)lb`ce"UצsO @V2xe+F~qI6Ky<2_N͠T.O|tFT12xqI*k,-b"|=rbe* RxpɹT?ls)3'DcJV+__.DJS!(wp]U)ѓTܯ{ubGG 46aeYN18`el|;u_d"c>J% cu!~b:Q6s] { }H"]/I#/Sl  ^֧!GƟ)܆jҬ3K$ExK83jZZ;* y&F ¿枝 Y"/E1};ݎD N\%a$%%ݢo`á'A|XԢú eaM(9A}Gh$>rDS@'ЙAk);I1?րnnsNJluהpc ʙ>rMESHj]{QKqTKv< Ԑgx*sH*P띾{|CqKKPΌKb"Mc3KQ%_f;:c2\20a::՚ HBsP+L anlC`ȑI9o欥9Rv&oNLeXC;[&iL2ZTvΑaJgő.VlbD59;'~>/}UϜ0De+TwZizjQˍ.ݢ!pDFj3:á)`sto*95E,*oeq C~n*; έa7fi:L4nT-rIsƝS4AX?.3 to$mCᨲ dO%9%f,do6{lXZMb! [ylwEye~vnMmϭ𫔄=G9H^,6XOH@a` sUfusиS5$,`}%݀QXGtb$!KmՠxSU/g黄mЖg䑛3! ? :(BZO#0~t 3kp$ފu :#aXVUb)f8IR&L( ;|[}Zy% ~ ixqc7M/\LLY:{{) Ut gҘ\w0ʮy'/O}Ig{Ғ5 T^{/m=5k GTqgapMoZ>y%p{\aE 0m:ahp|knѮÛY\y4]].wXsx-[.ܦuXb9.^=L˵9h0|? ;zk4(@kJ^Hn:q1~rPEvA2F8ƾdi쨱WC&bO^mUv\0{LCc-I<> m!c=y}+:8 cMĿIOW"s8|`L& ܭ5+(97,"Ak(6J{T"[BW&j L}Y @Fqc@Z }þ֝ԛNNRџMmwps ^ vH.sna&Y a$W OaFù0D60ig$<`wYHT+Jvn5 Ӣ戮v$\OFS$0~MU%t`0iʎ7zđ&M%D{բb„:u {-k1UQb\7h+%/Y|LPZgA_7zpq~ oe$Y ɻ%w2bZ,c6 o`{ d?cFq[QcGa?s'$px+]7ϩ; "J,3Q?(k&4Vmtgab0ϋ!ɺ~5)'}?u&G2P {ҢÄ1S ˼tmMBYkPtɲIy]5"?ť)kD2q~tLJ* #كH5BԌ-`XZ [MwNoSsK>p:Sx2EZ26ZtX-|[rL/c;ykQZA=BsJαo/19+h-TOLbLh:춢( ; ;~n1%I{*9&d/ P]1zґ맪۽8r.J8[9[9 YѦnsdūjTHРN} gutX^k^̤hY_8|[̞{e8X(BՌ:x9-N|e&!A\'/Vض9`uN̗;Ww>*̬8Ծi;sb~mU8c8 koC'UŸkW }5/p6=.6׳%&]hޜ8i3/R"mSKYG`͙nq(Է:*\O2b`D!?J  y 1Ǜh$G# ι ``[S=(C'c|v0n R-6p'X{xlF/ҾM̏1-5ut飱&Z 㑨) fI,HjK ,Zȏ9Qb6@#P]{4nꬷ4$&O9H~؈>GҌ3x.M1q);VT6 #SjKt ּ~)agqhG$zbI˻o3ߔRpEFiSV27q7 O8MWa+m%!KҤ`qP3шG,vtLYBY 3aVqɁQc9 Ebo1e*-}-fdb@s,}] [<;XV/&.zY pó߃? jg[ZvPv"~w~Kw7)- zpY/W^uީ|T4a Lr^{Xc $x87V-VVCkĽi]D6l4OY4O$T_ק6JIQ-TwvyE[ޙ>S$dGN FuZJH$AhZ`h$Cs%pmM)E, LT-Zm#f50֚ckq$] fAU.ipoAzL3]θpUJ \fUwZ0dlH+Sz8eGe0!xCo<z\0ɻ62~n7-fGi]Zf ?pGPn7+Qqo|?t)+:=ܧOܧwݟO5Ȋ]'S mOܧT>e? _݇_W*pв/_|R"n}~ȿ?_oS`=?Mo?矶Oo?&~?|JegHV=Ch:~F8j3vz~ >DpO6n ;h?^!lw?lBl<UwY,u_&;awBCޙ?J}>>o2vn>N||W` i:]-n5`LN<5tkRRRC\ɯ`vSbD (2Qʯ1+ez⢩x\q} 0/~9|Sf31:8=>ɬ#v;2Gph17жoN,,Kj9!.2@4 sOK\լekkl@^v(w9T$vaj`EےrQt/3A|e6r?OFZ2 EOs/+$iI(W%Д&s!*b< PoMӟ{Va Pfl)eX;ePi0.h^l6N30p:c2Q˿gߦІP*6 \:M! &]*-/`w{^f]}@j;\)(9+x*X&7C Aѡ=W|y6LM޷ 2Abw%^&M{D?GO:IDUY9%n.ptvNxJ%j Xރ\5?妗BV]߸np.te4lptU]$;:E(V8 ~۞/ pKA (;Wq솴>Oe a0wʟ -k`~)j[bW>pQ9</㚇A0f4KHEFj lO!=qG4]벥)ޢ j7h-E T\Cxڏ/|Øe>:np$m#0]uN(Dza:S A9RT]Aݵ O54nT{L>d Wx6S{{):&s]Ξ)P[ӸYuDnm'k8@«?T]rQfy?[BIs~fg[=~߸=0۟@p{wՉ} :,'>h{RPm4t3*o7dVUMFӛ5,>vB4ڱ@vI6䄡Y~OӝH'TzIMgy27.g W={+MTw:򽆼ǝ0W^- *wLG&&e~ȍ7Vbۭ)[ʖiA Ո]`;m`{H3p"wEwL~n#O{ JxNi;E=#s &5 X4Yz!e !4i8*j7yp `urߗSSbkx"J\o4~/,[#&o ng#|霶(R-BRVx:e#/[uGXD,꤀=`khP6Df]f;mmJ;Y)^ t kXhsj,,>vUߊqՙH 6EZ;{;q{>ܦG!!w\VlCbu9OW*Mak2dݢCr/`S$:;l/)jYEB=zf(z /7]@5[Ŋ{?0)r,Yj5qAZ?h}ܝC6h7jЉ5Ƌ;_{Ӵfصyn%uh$M1ŦiZ`Ui/~)t8] V k|vxNV sy&-&}ρQXzFj]lNA(DU;.=rj뺆} ޔPjLo?$I.&wIp(fX6c}~ٶ`fI%?%Ƭ/"D+4"Ķ<g}R p 09$ YI֤*.e9'Ϝ(z;>U1n̥2J N.a|KgoaqN 15-P *[)JiP%)!WHc'NB}$uՉ U䡼%M/mCfЁ=0id=v`l|DƷ-3jb%(㔭+v}ᥢ4 ~qY%O+-\q4v9\#K؂IH:H/~~5*tUxKR?-ܚ)MmG)yHw:]M$W`i/.z҉)Pץu*| 9CUj+)/+W︶wKt؟^?@H_ j*;{ ]i 1֥hi-7: Fcos]&i7C(07WP ߒ_m*cMh(]1-K[YR&/h䛐 Oc_ 8BOZ ^<*0'Yl`(tssS`((믄YǟFbٞaE,mXz`]U: -(h*J'?i]ND-ϭUdYqBWG`{vOkP^7Pؤ3ѐfYy,` uh^nrȈ'i諼a_Q]LMnZANai ~ >ȾIqS+-uy4ӄs?x_ <~^sH3pJ8|V6I,fv@4Rg+|y { FR{*36YԪw{c )9xYmT>_K騽@?~b}HA9B}9(/f׿҅ߪ7?$19niiW"nJƂ#Ew|baݍ vY"69!:U,Kw$tDQR2 ?=X =W n >\*fa~cI~\tBl!`/5 ُڻ}~6טl!̥q^#62{mJ9P}SJZu1n(Xy\d=3w:4UY}Q$g_֬;WepI!}α[Xةu-Ǫĸyw\? D# sEYPUP&hr ^] $_t+@ Y`9yEhA<_de@R2A?-HV|UE5,xu 0kͦ[QNgMx_?q9)$yPVI c-FqmTf_6*5G};#^қVrR5eJ#wX/m+bҶ 2$=w@MQ\[Tz)ѳ-fc|;H6 N2:ӊD¥nW{m9,[o {ra&ncxq)XFfTf(qS%5;"GUu0< XoyT 0 |w0B=ꚦxó~k{]&TҒx'K!hZhL%$y@><2zI,FJ jesâ=uR9Znr[@bj<,w1) "ciE=13ŦFݡn6 KKoۀb<=iIB>'$QAI4Id 0CxC:!i3jl4D,#U|a݊_((96rL$,"t./9̻}`<@2~l휏6ig_$8cB:L;jږO^Be';l _@+jnmᄯG!^jNȈ9<(^:$ 9W QF| M}[7cd$s 0bA߭SF5e<G+A*`T,n#.}n'ߎ #1\g2:ԫoWYI:r kj:s}Á:8DvFЃQՎԟuc4Bv T_@A@ :ru_ +tfGM [ۡ-e(?Rg@}xNBZO a(sJ/ `zN]sv9o1ZUc.{tY=p(.v`lZ·&s̞it.EΜK|-G3 ϮCL>NtS© 4+zƤHs8,AͩAS^"<,XӸc4Waޏo\adgp`TkǸG^47`5121Ug屻i)#W96_DfJӥWss %'[5W"g-Lټ\^N*7cӭIj5wwc)#r[o(V 0ؑ4>PGs(F\T'v-[!Dy k4K2 &RڦDE" 2(J;% ӈI:] ?›o'Ls'3švGҥNMX5_\JZ^{o#'wRnL417ZZZGZ>GאTf 0OF|5E1]t:XѤ:9c{H֙`ffܙޓڔ!r\yMLJL Sl3KU셮+3¡{p\Yqc%ؼ<'VtM (C60jѺ[#d%J!Ђ׷+e𿳺Z \,}Ü|/ mNs͇Jjt X-z1\XA /]7S^mcё=DiUo&h28@I]^#fQ0 X׼筳IitBUHp՜]^>4c;j5[psg˽>%17c˪37ڿ$Q]>05=0EaÉďG BKKěXa6lA`޽wohw?Jv.iϷ%˵CfJClU[5/?cVHP~teaytF(*89jz^P ˥e!~u\NEaQ6$-,4 "H ErE˦>lY.fGq| //9NH W4 p#l qZ_䛁Ӂ$ڂ`[wADŢ.斧l$$-A{bϚ)\( NW3{ LR 8I4UM.ZA ~{)`އ!''h졏S~{֠d<ԛw$R7OzmkUjqQ)Szs:e.)R8)_,*lC$'|o!Vb=aw+sZ)P) z&` uyY1,3p\| |d(2enGݰ6. mQ?*q:@%ދ dc, ώx&gMeoM; i*'N曹LߐaR'ltu2ͺ _6݁>_QZ_#T WS=<J&blMaZfGHi KA.rn w*O"f~f%>c=j'esрo^-& L4?(/YzJeoj@{J3k.&<_m8:]/E']qpȾ;C;O"3[c]P#xH!NlrT ծ b9eeٱGnaIe 'w?;JE m/X8> p$9x <5OG* Ze{Q/HɑU*Nӫ?Fd_nuqv!azw& c/2nǵs"{Hj+|dcB߯}nQ̑~"^0.;[u ;K$ ߴ-[^ % "I^ 3OL 䛋`uLl+T[޵xbsQ6% &ՋllɱUz6)@5ErДdPql۴L,"yrFTzB/:(*9?4U}5-lj yEbμ7-A"023~0_mbGN9U|:Է  jx;%=<"J |WġyfCƿ3S 㐧IkӼ{8ϵAj3/ (Ac)KWmjs6T&Oi qL$,Jק#p-ɿ_n'lF 3E1e [+?˗aU ss6=IQB)yz4HA`sG+ V6kBtT t.zHx&ͻjQ;edk_+{PDOe|+rQRfɗH,b* -˔Nmss2PAOm['))&?-EoxS9{K M00gŸΝkG"@ʗg;HsXJ .2%eqR_l2 KϽIrDܪ_L0M1@BW 3#-S7TJo:<=|J2⭫=%(.8uRhA8ABݮ8sgae)yIү5sVVԚf:&gz0C(ԕDAM_=X2xԀ1|3fh.Bʅ?\0%\9mG8?6Bʌq2[sqV`8:[H~|Y>WV;hMKE3SVʘBIW֚_<\ hQFK?]fBSwr 4 M3Os*TXh'35zؘzJ(9!Sw0쭞7ߕW`}wz>$Dc3` 4f`įhoDw3'Vހo7/DЌ80Gݬ8?ʰ S[fƣm=TJt ayQӜg1fR%Ӥ(gaQN|DZ=?8ʮ`-UhgJV(yҔ51 xK oON*ZEӺ:;ß$J ݳ%! 3 Tڛ+̃%Pp)zž͘ށ8{As",xbsO7)[߆Ov SJ tg8Ubw|}YXbW\A`L_1UG7On$BYgVȼo-r(߅^و2[PM\]{ӱ~V4x+4YS lEv{\}9 f`M[~9Gb24 DaSغ7丢7@ h!F sWK'K1:joҚ8c FT3vl_V+΅c2I}%!h '- ޹OGh&"VX @"0]]7d7BmʀK^M*K"8.ߐΠ=jId'Feڎ<N޲W/=s&YadLYgZhY6ՇG'%.A&DvLIq1#u=xڔbzDy9*R!^rQ؟b]*1e "h o e\YI{kusx:$KDpFa98}NO 5rQQ i홞|~eBCa9N&WCӿ9.)Ѯrޓ].c6:E@E0#pBLgn;N%8)'V4v _́%l"pypE=J^V/zx:dat,U,Q频RoqT^˒se붃1*, ,85Q)~3cIܿU/Ec]ΑR]w2 1[?y?}#$l-=5rE^y oe"ㆅjJT-1̵foIe]2X^6¿2.wm6̟qd:/#L205iR~0Y^dCXp2p/E@n$)fZQs$+c%śf; 3 3y jy֌"BeB1q^B * <[1|Bbg*Bo L,.v]f{;)[د#5#Z 9kluF{v;IÜ6'4gLqg77tт"AzRΊyв'qծ\xqiW#G bX[~W԰/yu,me|T<iaʒlVFLn}(q Iq _X5vN̖TAlݾ$ri.cy۫53FA^?;-ZqxMJչ_u &H }-l>PP8e;zTPn6 p"dS7*ۜ1%<@_l£(ql$-2YA׉%P$,AXhivīё#3K!V=xXJ<.d]֍otzyssОxFgtĿw/___? Ͼ}&`8B9bVW3Mrz809Ʀi3[J-4 m5(s-Db4tTEESQͨR\1!>ok=0Y~U|49:|xoLq^˰VxMe>mDl LHw=V#7"9'@9${͹hbrRd7ERq]ͰīG,>ka($Z[eovvTVoXsPN{|Y艸"AP368V(X+J\^iq6kw7;h.w0 v{EB ¯*y)7rr/k@GGi+9kq*iʋn@UC`Keso@WYL,3$:V>7@ S/2k Qk^ې=5 F_G B@ ` t#p,v0-ngÜfڳEUj+l "fuC@C qt%" /;ר@X%s# 61 oQ]vcxX@ǜa6'v6z8iV2lwGdH7W a0.NDX'é ÌnQ .Z\or%E~7*d3}x̷L ͺT1$<.X4~-+Ư,6c< 5 ao%QZn I+pe%ZDRE2g&%"ASUb9 n9#- z 9HX:2=hprSә_͒{t KV4g vtrwn;xuK@jPBqa?ݓCVc3q ܢfQ]HXj5iluD\kzX:YGA*W@ +9v\z&(շ(\[!%~m5r3SY46*tT]fi3_5ڗp @pFb4Ǥn3KSb|ꞣRGԟyX~P?$/1J*Jљ%GiŸ+_-+ NZ:c-/u& 1!͑鄰Ҝm6 .g>PU8/O<%FD-vB=_l#WvE@r0CE?Y~NU/gȧ,ba~ ˠk W;,OZƉ>dcY`5P[3UϡP=n_?椡5]|+G MX]F͋ {5| +GYA<L[=UO\Q}?`Eo-59_.NZ꺱RcR; SI#[F&m{OKN#0 $Ī|Cs)Õ)el]5R79pˀyrP\8xĥk,khx:jT/~|t,Ǐ3!~h,*jf{x6KOV[ A 0+U. /JAQCn،qKtB*Yv?_L! \ASFz;ۇRM]xXߏq!jܼ6w5 6%R{VӶ3dX|'XqL#QRGŪe9^w |Wj~&:DoN4N}kXDX "k8JR?!ܬ~,) ]g䛒`Û1Dy>@V$:޺6mY )uQkmɴwޟg67-Gғ2٣υ: yaDr"2o7q)'G2_޼k&VnfH}|T#CnqA>9fPAv qϢ{ӔsG2K``E@uO1*nf,ȃiKK(ʖ^`Y7:(TR53$xW)%rw+7r(u(:@WT:.Cy3'4V^gM8qQ yי?$UնO~TiMl{ԃ.ʉN]5i|K9E1^sv4WS9w%*_`zB 0hu y0z/]س?ٹdk xuVwT8 0^7Fams;,x!it8Ͼo0i̺#+ʞP]^ -ߒ;q$Y.f~>j,'\* sc7ۀ_>b2A/@pįf?;#4@'˴ͽZC-hF4 t`?$SJ]}lΥc-|Qw! / SwuY <5is;mjՑX&ߩ|w?(x>#ȁLkmvؓqŚW)b֌8*HK_Ƀ8ɵfjZ`1ӌس{My'TLߞbl#NF%~,z9M0*l}E._ _+- g?=kTX8:CYrV!Q Fntk7SC8sgAA#B:bQro~ț>_Y(+Ø"o J I.s݇ 9$_җ?}b q9p2}qPIB>ti@qӗ,M?YZih)G+.Ő;ɟG d4*v$Rc/mM#Buͫ6?HlTo+H ߸5i5qcrj{YUϦ-gX5ЩIJ. +' ņYJEn:@2)P\ނ؅ ،\]TNc}}qs҃נm}Fbvy^2 =ߞnKNM Vwδ z )bbid:Y˿m9U6nϲp"iJ,˼`Yc% L `jU.a׺8&7C[i68o5{9t`ԴU#E"4RC^c;'JT%/§LWJ \Xuy슲RZrP} ]yjSa5,.+'>A&R,"l,\dk($!-mԟv\[w$Tz̷Eσ>o5 )0 i c!IVtY~f<f]ȧ0ѳYint0Udhvg m&HFWN/o{ ppqG^L!ͭKQ6٩"- ]+r‘:ڋh|bȂ\,(\IBvtAb]>: w8k5*4mtZIa=zn|T5ŷllh 0Sz(0{DaeTg$I!/Xx[ӔXey-&u{xO>xk++%߆fǗpRkKǹ(2Eh%] 7biUSZpJBBz|.L= Q@&ezxM(&S8^lT:c:M؝B5[C䙽0)/ MNq? ٻf+GS"2$96|:RKW _3RTC$xF^tm9$&9,_C RAv~]|]'ۋ]o?aK hʿ˥n7ۃUi3V˱˨"Ϝ 0:~[f 谍3 d #{9ZҤ+&su T +.J ȼ)S5BʴpxesEUD8?fg'QM\y*d2iaё'(%^ے(>>^]HcI඘:Xt[t5]{1Fj sR& a5 墳yӑTZpurW[ݓNgwL杈ay]m `WY]z9FJʺ܋atm.Nh4O'Ŕ5F8 6v'vkKL@vx\WL[TL&'ݾCtQׄxC;X=@ǫ=D-jgK\~|BUR40ogFo)29*k7zxcz]&^\-6Ee 5}kv%r [O|DUG)rU8G  Z+M}W~[pBgdN^X6?mDݴcx%8{9p.k %IX$:]w`&7ZEU1/͐ ).^-'p8`qALzql/3[H Q];Qbz}u-ma&:t|#ALhLޞޥw<1v)aBQ΃hWHlSے7W8DZ̑7sẇiSa9fsߣ+pއb\CdmJDliaCJ Izr [ے) 畜u0RMrTKYeD"Ia ]/'dQĸxi Np0H l'?)?"e#)L#AV"oС=aW;[Pr/Es.Fp9[GRV;W7L5mE[n\uaXrzH,}&j[@.Uq_,;'Z5o] ˜Yf1G*dZ%soOYvOC>qU:g\ e HA_Mh`r̴ .0J&qȭJ[5[ p.hEIVav%6_#o˳')SHLBN,9b8Ff,É=U7 wCm"p`uuH uoX)ܧE#*70)ĶxJnԛ9}u%Bk Z}g;mP-ޅd˂>wt't4(-ǿ3x< `,#ihְ'fAY1&D (c\ɴG%ض(b#ؿ,cAT 3>>+Ag SX |ζN5t\4jQLrhz!1-ng d.ş\lu!NTLtR EչcRzO%t7d!Kl5Bn"}w 8z˰/=Nۨ;?O폇$$Vet\w5ź%10ȧsS*IG}Sʋ+fBsTG-ꄔonQ6Qã'%5]tweƹV0/?X q`ĚѲs|~ܮv( 3h^\G/ EvkXӭT89\I8 Q9=9[b!| t`bB*iW2ڐNQ8hn=_w"w}kz@/X.䠄Ojو-Un EJp4JG#_!jM~/B\`x:4ߕk,<ԏ>+ɝR8X<3vpݯ4Ww LccXr;&դ[iA|ÞQ; hHO ib&Čo}elI@UZ hO']`ۋREQ m)?dpBiF$]_|, ȇ'̈k>i}," s #?udH֛UVP:Tu]I-͒\tp^3 ʻrp/+C&mӔ> &&+k*] [ࡌ |+NSQ^%IuYl oUǷ79h.]s+t qoј$| KzmNYמ a,?`X`8C 4m98(*qf+Q"r]mZM0~g\qQx3g@Wzmk7_Y7zEAX*[l!i>:tE.@t{@OFeQ7xנMBbZn-0|Ppd9MѠmufAZ4pOʒ/c.bԛםϫ19/toR8 J"`ߥ3@*$r㟂6+x|6'(a(_ha0F! 0d6d5_:"^oKNu(BnӶHTss%}A;хg0s}Rd!)lWCbEWF˩0y&x?xNXPmԲ.GTLVؙ5t$ٚ\WZw)gŭ܆ph^4ݫ+ 8-YrgLU/u|d}KW#ˌ+]j Ye Т܋Go-;q DC\拦Wqv]$ݖMQ 6'w2JDY UCHbr^ZxecSAQ5ٰBzqC)T&]۸" /zcR4fX2]d݉HjLO,R"_z%CRJv @Y`ӳqv~."v%A76rD$~Q%u<ȕ zq`]9zUOdstEk5OA''R|B E;u)?BE҉@dxWztA#<8'Ǔ?|š@컆7D f|b4mHe,'q+:ޢʷP4祚Î'MDwCߕs !02VyYyԣ_ B̌>9|Š$2JƲdR^ 4-uuvQ|(KiP5Eg<D0av@P p1ܑ&xd3OM9ľ8;yQ%PⷬDAhbw)0^Ϥ ʷp/42$^GevB%o>;߁gKb2\fїȾ՝V$l"d /yuS\{Ki |ܕ1cMw=͙OyV6\1;73%A|^}ܫNNF9w!sZ6^ <~%@`6zD'؈ .f+_p'a~/FOM+oCWm/ebʠlvGcvt=TQ cO&yV Vf-q9> I͸TMgPRMM5R #P%!6O0#xe(W>4fd/k\-mȕxmɡK^f28Ot7 g@YvTy.@LE99;AmoCG|mM~0ʀI6%d[<%'{oUnϛF1v@8rN/G}U cx_]EH_#~@C>`/6Ya(5|~`].ڿK 잜 % ɞN\P/^K0= 0 EK̻*'TĠqg ֑]f&7̷*9`6k[XFIl+9feHhd&q8qt;뱎 ߟ5B:9cX'yC?!&tƑmq P/skbG*]0ԔNotef? T1؋ - k&WW Lt$Hkpq=h;1mUv\Gu p@5%P< AoMZL,CS+bqme>,z'%s /{.KEO2hܘ;Kz6vLtK+~+;-҆;PAڣq({e/C-?#a*@N~O _WN NQEQeܰՓlv\J ;t3~&g~;gT?vXs3gds|ZI%NާĆ=(N@7kӆm\Fs@UͫS!g\0H䦜gw_Xx'q*8 *SeOm+Fta x2u##-ȶ5cs M:Iq ϙn85cd 1hSf5wJřZw ]K,G y_m.~b֮a vCӖ#ms^XάY;}U?}e]yO&i3\D9;'3f&p=ᣬM|No~0RmO4l|j}Yf: By<{9>y+_ڞPAQ0EA\kG-epWst$+KYRrKب e"+L sbB2j()G,w7+zdKS1\ 1قK-br냋!|wNCQM9rz7mt}s>Θߏ DF)ۺnFV =e6dmMFuz=+!zfX0;-=y\(K `aO B ٖɱ<Y4H2M]Oyc9A<ί<,ܣ8#WnkHҜ`^QE`X 񇎚5j\j0ctU(ΏvbF}8ij^VUM/#AgdAYgrx._LDshעšzwI[y钍PC>UYAFrD2_ES(ྼ2 ̫۟݋^L_#WU|%hFi$ f*Q4?T%B?,mO mtMJ%Pׅ;u j:z sHppΓ33l%p0dY9"N_V[XWfkI8k9s#7q$EO+Nyh.}5VU^=-LGPX7@Yl†(M~ _b!&˶&dMf]+E<+Ezin]-JF)8@yvdacl VGx_>ѐ /OgDξߦG'yL}D  3~fHϗu'{tgƯUq,W2ͯ9a϶zNd߂5 [VoZ=W*sw{LUB"0=eXΔVFIi'i镺t'F(\H<($8䓕~$]LBk tZd~`kwZeѹZ/<֯6AϠt}IBnګ\J.W]TKiDYx>l{ sijrAF݇6)WT1؎(=^5OYQwJ84)7|6V1){4WID` V$zp+@4T!?4a[Wv6\;`wogTȯO?:\6J{G1}c@$}2Pg#-?unR qFbW(x_QJ 7Y.cϠ\R@}6({F Ŭ[Dr摺,NQ WLs _$:TS z9-8Y{llwZ0=oT׋tsr~#'řVf1U既lF F$2b5b םp&N*gP$dm+~^d=C/&f0YP򼧂r) NYPC̝$ U̾QY~_ƌ#X/L+JUhx3n7,<_Yk5$jSf8\8q$8N‡m$c 2) gw;VT=$ɬ4nX²`H eYqI#] ^`p4ogR{iu .  ӓo4jsaGg\)G{+y*u Q,-B۠@~-6#"ueПmi\fĜ&Er9Roƣ ī|K,dU[Ͻj0Vn xe{S>٢tLfjF. 'dF!ŶRK\Q( k]54] vGG(-(d?B`>#:VD:):R\ZrhG\9N>L"?#6 U0~ſZ]w]~%A8e9`JRUAtN)g•paqqKNmkrautR,a/RMluT.cDzbWpMr@W,e3 @a ZPm*$HHlKT 2?%:,Iu|2o@P&RsQf"Ilt v }鑺fJ{#TaLZN,=<<۟"p"b~4ip̮hܡKM$Iݰ*, WPOg?aDKU9k,F{3ҘqCa`뼾k4LKRԑ%i/ yu 4{;>X3{l2?nx,"{"9T}Kd"s*[/>< -AeT ᤳ:pEtmpzt%T48Yml0xH6+)95ad6/[ckWu@zItoukf>eGx_#ؕ=r3#S8K֢*A^gْ-js sO؜_*\ʇT$nyɉi`NAg*6k̊đF ݞ*$ʑHmXGjm̩g4s)]~1ؚ,VN}/n^T %Kyb\Δ2BRZܞAi%Cl?&~Tzv5ZPPybpb~ڬaFO=:벂jxn54hdxȏIƈ$|1 NMsZ,*!/(^3hk"l7_$&wEUKA\ /O2#ɦwi2/A,[~_C̵dn(^*S/L& Ctf?Q"zqDr'bA'g,Iq{N\ИХ/'y}.B/_yg[݋#/}8WV~KxKr(uoBMђ^p}ğPy?"!9qSɆbNH :nI1[ a4VaK^iHkтq< ݐ2sX QK|mh Kӷҗ'0HIo~[-Z %烧z~r[%d̊_)z<,6;:G):iOD\hq-tH$z%UGS/~^@>q;2*(. "޼>m0Nq;)+>=.Tz É %x~O^ i3#Z68sÙ9C 7_VH0foG&aS:msa.yFo e~A!n>+ΉeؽY +Z!X0 sO$bo&?/EQ\(V' -OKW>/T_cT g.n$1R (DuɁ;_]e- 9: 3F/D<"(; :[ : 67^}PKyԪ_8BCr!.7.&4O>W^ {y ne/QOkvpx#CAFNk2%b-di=uj=8V ? *$K[ $Jz13^e}NB+FE$M :錍i0`MOϜ (7 4zwuM:/v4ݤ$ѕ54R(HfzspZ%jKf#ajF<'[ P}jٞ'sD$/Ÿ66HkTbE;jەa):'~~Pb5dj,>JIW'*L +hGR\, E̢y\ogv0j]KRF5U\WԠxqn}!Ÿϸ{a 4EL%}$Bsn1}d,ҨW_b,(s@1KdXxqmKC.b#8ʰ>oRj#p{ \O8wN5GЀ397JY [ҋÈ4cJP}A^=iJ)0W'>hVu9=!xDI5%Ĩ9fҌDROK>ŷZ罊-l7.EqWNӘiHYknnEC^АP Vp04pO}xOj$f׭VXBəbq+qԍ**_ܟי ,7A,.]nQy=+?ЬN 횒MX5/%,M/z ^缻̆sg $&aeB-Xh|3mBQ˙pSijf|TdѕX)-(2{7[ҴR{|j/}A A{p4V|[)i*u/N~eKw|TCB**"V24{tMV5p6$: % q0_ĬP8ЋC&l+'ݧ>;*Nh ti|F@?vo $w~ꤒ%3\ثaڌ{zr,,Op'X"ϯ<IݖدC!pUĠ~" ۱rB/.$y3>JEJ?j0Y q* iC~a]hf}!'FFuopg㚳$h ̱ym#\AHDވs @V82?}nC a92Q@136]U! 0эI?42_n쳿>++8l詛+pj"TT]ڎia._Ҧ1pVs/g `cukVUau+ǽ50a*RgiZMHtIp9|:Oq ]xEBQ6 f)W8#ê*o\gq9YeFW!6 X`1qNlB|O6%=WҔDus˷tG3 iIckqv7(W䏪> NWZui^,lלRUs3mѹ@F3:;u/g-~9h Kt4Yb50 Km^YdIAFE~_#C|1ǥr%+9 Ci^F,xiˬ-VMl4vN']i->vuIsM&j0~=|D$FWq־ƌ!P6k!񄼘:Ąίh&^n˃b!Z+"9Zpz 1E]+e;q>p0$ELEvj tkGr+μmJVKIJ>cuCW_>Ca6O'S22BOt£PV"(٠E2h*-M;-Yv=:@ľL9 Ǫ4ch>6jvw? UR}g#8%z5In|ڎan̡R>_z,2:cMc%dR}:^Gr# U(+o]K`ϸj~?[8JhGEckr'j2c R'BՈ1t.[CXqQCУ-9 vSmPxOcR-Q2 nfzL&hgX=t\. MaxoY1;J]}JUAUAF#%ؓ˷&/,cBaGWT7ra]Ra>w*|b5]hUwEÉ˻[ɩc'j͑!L[^DpA@L+i 5YwQŞ؏lH0nc? kqCK}h^%w>@|H$cyK.jxBsݷ4];T Olv.Ђb^ n^zidnAndd)b{gU.Hd荣r$Ws](~ ylbߌ-kB՞hlYL"N,$9ڕvƉZ0PRGV'Gdl x Xaٷ/8vq .x63vm[mgUQ0Ruv[V*̈%Ez%vcTӁx4SBt`]tv?ϨP^(%ǒӵ7GI։F`Y#{OnZJ/iՊ}?^ 39`2oΣPB"v9"uQ'DFv'\%c. '?ћ3 EIe,| 2u%'c&beJ#*쌡2&iS+eNyiǸNG\lx?#ö6|h@?2rF" nJ$VmYs3ҶhN, iΪLaqYp8 (uõv4O z=G~nV;KE[p_=(ng5r=8 Sێ_3 > 45BHR[Ku}|YRmq1v9hll=G=Y<%TfS"["QE+.2~!F=ˌ/YQA@D3.s\{sR Kyoɿ823*PXJ Qa%ӡ(&Pd2U۩B`noa+'=m5~]FڍL:v 9cѲW*|yy N+wT+oUEމǝPk@߂Ai25'*?( obbgМh`aL/^b/1l0*B7l{] -?C>pC%swM ОV"VVłʖ`Cl(&SV D1`M#Q=!!dzz j/?5|ӡQ$LjDT\]qrsϮv^ F*$&ZkuȦ(R\=5aQñ[=R4(wЊ9 Ƽ#B6Q*>Ο~gd ,T'TyYިz4EOt$Ž6Óϧ)<QƒlGk ˪Cu_$ r"Cƍp>cs!qѬkN@5VukJ\φ.CnSauc`9Jر(]Q#BfÞK)j#֧-RJG;_Qa<[۫^ļ;q 1N&<_Q,n;%)fUP#ͺf#B͝aႎ_fՠ~ؙݮyJ\j ˺z.!—N+@Wu[Z&gqƠ=rPX78-8O@", sUe$tJjpp|w#%gdz ~,-vxdYJzVOu2v lvgDHa'=a3K|_Im!84 XSU _!-otq8~0NotVFF+]Q(ц]&sJLJ!_ xgHFWPR#Ԉi$*m!Xr^)zј~,6 =&ĭ/~P? ܫvi&[w~ٮ<2T"+`T 4y׉Eo#>߃̗fFy!zq˴?fA8AOP\dѲ& ;\EITksTǬn?rdpCf+u(:^|ϯQd g@?Q-96k۴fՉ&Y?R//ygN[hI$l"k&X^!X QH^g|e6Oq jFM u3MSRq:2& ΰ9j@ mY&syE6߯'ӨOdt=fR篲[-|e-o;*{e/8r㾄DꟅVpD'L%!Cr-me/ӑ~(L19)*|HYaИ٥S@8\q.+FH=x Ыȸ@-ǛVŜ-PY ,cd۴:V~ȀU>"7g8;+7F>@EE/6{%:|2ュJpεm: 2w]ǯ57LD < t><6w%jFBE_j= ҈nkfJ %IHr0c0y`P9P3:QC+YA5ָ=`g4@MN=| Bqwٲ3~-RG=r΀?%L#To *DE-c.@88${1p(,^_gqRKZ7.I;c)$d3ZCd26K-.q9?*%:2PGHl"Pc>DgL7Z37,@ffܸki:q 8C r=~B3~^HAy4Jv b x#t᮸ KU,lak)$eH"=XQ-rW,{WW(VxUR51xUE}|maW&E]"IfWMi]+|hA~K eG,^_E7Ѩ i)Y[gujZ}V VW\UDW֯JK#*Yyqrml¤ۮwf%tץ˷Bpq dW<ҏlUX;UP?4C+FQIY`gX- L'׮ 3漰tzv%;V anLӷ'[n̢܍ L_n Zo88~%!5B fQß=J R!^dnu~!J0`Jm$2ˮ.F3h b]>ONJMa˦6U\쁙F_Xx& }O']_my'%,\q?׬JM(}w~OL|6p|KhCbMIxcO\D^=E vTCbJx׃kt: GQ}al. o DC&^$6)ZvÀVNsz'-;^砱~OmU9wiZf"( fvLx]z-1[`W_6/nE(,.f`zF):>36 P25SVk׎ W=ez wM)_yޤ7L>HlgҹY V/ wJzi{td,ka'RGU.[C+G_MoO_facG MAN?=C%FDw}i-!Nk 0["Zn7L& W-!p"@Yz2j:S8՛CA_Mj&Eи|gn2mGT"/H]^\HӄU!/\*/&־zSq:,®(]2ڨ{Jܾ3" x:=Ⱟ_:ASX53S-BɤRxkS"0G6)yrΠO/D CIr3`-:*s<#X̉ںØ[zL3#7~3C$KZi6ߡ:7hvdۢH}-E:{Ս_u9c k+f4ɻNJ!Wc+ ˫:-k2UmILYEA ~& 2H jtEx?W؋`D<8TMJ2;UՔM_Ǒ#B\Qr#Ƃܽr< [qC7)$5ܥ].TXL9@+X0niY Uru -ۖxc.ǐi;|Z[9s3u;Zz+ o6J yAiT$bg1zx $!oz-ėA]NCC Q^JŒ+9Qd"u!;m8<[SUuw%檀b􎭎mLfӘfO+Ǎ+Ir =ccm&BڌwZbNfm⹇G[d%⦶ 8ߥUz|lZ;Fv n3%t ّq7Q!FcAzـ]CEθQеյ2ö;OYj4~MMI\aL`AJkz;+ DES^3]ʾHh/ۺn{u'y!OʚN-gQ zs!3nWظA[ߖظ$֙a߷XTR)\ZG- i!t6\7:ojAZFmhoּ7Q:v8F`c'b J1j("φ 9;%49sr)]kY6rVӼKlt]FG& ^ oʛk[.5wZ+M6ɻu9+r%LEy(_(fՠcF*dI9FfHFl՝&e%҈ZAh%A(+Y/fW{DPkמ9}H_BYY>!qB -t #(*ss=_޶ :}U.V-):QV-t|X7y#s$٨qsmJk_hCLO0x;~_X ]T7:Ag12 n\nC]R67c8&ZN$h=Vdj⨭;k] }/ҵ)O&xYd?&%^cjׯj,~%aF C+4esU y {I^Y6í`o]SkfRbiezp5p̀$3"a+N F#!|I'Ssh@8N/z֍ϯ3x Tw1WK_Ǭ0){tIB"i's J0T=~Mۼn:0hVEDq9g$mVop(%Q2U_(5*mX"}5 @ǒ#jJ073:@ڄ1{P?MMsoXgt vqKp6^^"t,7d !sB(<<Y'+[9&xMj#uj>MwQ)tX\] ‹/M`{m!Rs߆ܯ0I-TSFTk>{߯/[-#G PqG AG|{_r Nz=*D̋By5ԃu=jR"%fƬ9"UvB}JXVo>R 5i NP|Dۣ#P-EHn5GW ЦB"4W+=4yW0%-Ȧi:1àsR>b-8 { tJyq54py_ΓhC2o@.-*(uhFX+ ^I0>zU$D3^[dP9wCߕG ԖIEh?`:rRhqU8\z!ڵ 64kwu (5mbY~s7_GDe=Jjа8N9m)j#Եz$>*6sIN8g./h~s }bD\3$sZ:^u"P'rKŘyV{NUd.zkq8&˿MdrY-"z8MOőS~kgG5.ƜO sQq5[:*5}{,,/,?!~O=zr){ZFJG02G-%VWu#eD$FEi5ymJGMN/0Dd3/vd^;H䓾;S>zGs;%wps)#fAk5)ްa+hjwruT֩nzx,Bߞղ pv8fk"uEr'9jvNH;Sݢȿd# F z$-9:Q%J{0_秞:&e !icog}ŕm_W )G9h0#FJ,Q:'N+=]af/ G"`$U\LPyʘ|^O.lwˆm3Q턯eCYm ƫ<ɌFVJYsnk&RUo (em Y9@U}PtYxm5诫Icq'`(Fh\DX]RگxʈI蠑"Ƕ 5;"S?AI5o?q#~jJ 2vIhH"P1Z Ÿt?\c.ٓH"9 l$mK fJߋ̛&4WrfOj܇w) ]}ү#~^c$ˢ_D =m3Y3~uQ3BĐ߃gq;`15i+VrF ؟ѐm SB{;S(' <W/AU5dNڽvOFyj xWv 5'y.Йߺ ԅb]wh2vhвP| :_8IOtkkljA;NDI~jRl*ɐ)gCħd.:;90И4&_frȅ]#FwQ}& VW2Z?4*:++QAhL%?k~Qm{haKsʮ%HsQlYH 䰮a:3* \R wp AՆ̂Ut޳΢ _wmFͺI: L)$Nº_h]~3W!cI` }$qLk&y>;jOSܘiJs%h~A^{KJ&UIx"ArV1DhWp90:ER 8rϵԆϓ*l{z2pUI,Ngj܍[4e-p( p0cr2ۑ1{*hz[UmF<j߮c2^Fkо]MD诃qe)HZn%XfsE/7;wǿtȉ C:!EH,o/GUPр#>3ci iU(ctG]2I<9-n B{~y`kbZ>jWi+y>R&5Z8 O,w尛3H5Ӕ!7lU0U }ni`4|g\^2FvI^&趫c۟^-׮QW;4XFÏ\ F{mo̦VNd{jSǁ2 7DzEm_a2xbo> g2w`1cZ!.we6-Vګo_i<"4z7r%22?L尓/wbxZeOYJ'n|Z}TLj9۞U,|@tP0qvϐ\V(} U;טCpd 9VэSr4 Z9rp5[sڊm#ۧ)<:.XED"WI8FsXU4͝s%lH߿dϿaC7%6& -dF`C0̩[8)~~t-!_fe|ؑt0ajO^zi"H (pKMQۈ~%lFa0&(ydMi"e5GKcf'˚m#V*D"ּAЎh ;{o~z)\2>%Me Q-sG6|\Z]"sHjyo Xey貣YX %TݗIhSI] dE_C젆n@}; θsXfzg3p`wm~WӁ+3yT& zKͰB[l4fa -Dl^f.XjI-]|WՓ` |߉%ah_A~eA2Y^x%{{v@UP#\u' `% PfF^2Emxrd'CuӰYX( zxLʼn.};֊&@^v xnvR##ǒєem>Иᆪ|p]z4PBūѲP@-R;~H´og]tm~:!\`ak'A}eNj60ڠpb6"8ގ0q;Bȑ7~_ 6~'N=v%AG/P+mtxo\TkzM՜&a$ %;4:4XClҁSǤ:^h5 s.q 6:0%CB]YôZ-STE,`CnV6F\$٦Z7M )>HZ^ZNeѸB=p.iʍkb7Y3E3ɚ.6u\/Waٸ1/]܌=K8B'.N02ۧ@ 9BopgeQ*Mgм,++xQZpȏ+z)H:ipb7;I=->snX y ؉;l, Q{u}:U]`_ &n m];l RfB=f苇!_]9p mY*({Q`N{/Ϫ.AsZL5RkP40J )IR2$coNoI^ ~3Z{K/NG7F D !948@0_㭊HY<5lO|"-'H?^X$ܷʯW ~)}㶟M˔E[Qua) ' e :"h7*$"a{G3Um?' 2\?vD$XkۨBZ3qRN}-JM_ zR{<ɧotN6St?H:08kU8:pg@xs \t=˲I"!o}' ES!9=ӹ`5uiV;[v +Dg̜,.L_naz+T/1wiחH$5-%fﰭXPnǐ>xʝ'#tf_:'V d6Kڲ|B=*MG@"veXJt&u);~׫;fwJ-QlUPZ gQxDjO2v ~۫qԂs覲w8<৑kȈYׄt~R2)˼$?x(k:i/(G2[hX MXq[&$6vRFgE[ K&80 W䈚QZa?,f';O||irb G*2DCFHw|A:SېqC?=&?GZ&594?B4$ɭaOO u찀ېRֽ[N(w8M *Dٷ$(q*؜rDju-|0xt?Lf }aN ]/U].*-R:1-N}kO7 h6"t$U^9̨+\ I NPcX!{.`81$o"pQBo?i*םIDʁ-\Gy`͞=a$\ R\%)X.l; Z! )I_!*4ecW G4;GhVsOM%G»;@SDy<rͽV8w? :<T,ZbU AwRCNhb|w*Ă`Y=JN&HgB;nAvUvIb{F߱,\ %S}"tTx_ʑO}2f|puY%R_wmY-2HG SN\D#'b5&}OC򂉨 6轫@T. t }}&jKdNZX o]Wivtڲ1;A~*8?(V'p+Sq+\o!VkX1s5QE7 l}KDyn {g8j[67y֛GgvKW 1=%UYQ/м`Hvjp1WeC#viܤ/b y"X/U4tVC̼;V"KSh%26`1*n}=$*(6"Ƃi^&^L+Œ!Rl;pI&R3#B~-} r RnB55uҕ䷶+oOjw@ݽiUї--{VVSě5S_L&]Ddy'AFL kтnxn%S%ȕo݁j?P0).T[FjP6s,}T5am 8u|*ִV/r{cLd^CrxWgkR =/JS^v c1ۅt'|(M^ICXB$p4#BAY& bH|U.oi}Hq-[a4? 3mO=1y_w/󨥯q)-D)#@ִT*X)5'GN9;45}z r`eVj xH?jz3,KTz>"g>GUvoiPv|Q>~q5ޭvyݍF.2uݏ9waJT* L|T{>vpE{iIvG%@>kI¾枔)hG,^7G pcڃ%܆|@%>"(9 ]m[tUjʲw(h%!\λ}x;S_<| akPa*[K>0h sB7<2zGxp0@!G÷P~D wk Ugj嘇!L~/ItBJOԥf?[pRzqswjcde4$[,nLonw`6Y ir:FњQwh6RFHC"`XL='GRpwx7?sD ]hDDoUgr?$Xo#S}"m~as P++zi8v9:LL~J㗑cdkOS^3纄መuu2Slj? ٰі2+NfṲape>AFC>?TL M {{v~=!J0eAyfcN;jl*~桑 R?oE?ԃ6*eeঢ(Hワ|L)STU`,l}0f9b=w!ӌ(~j19MNBZ:N ֫ #iӆ}5ۅ>EE:z}Et$؂EcFBӥhw.$ppd#mGH96 )<bR fvZ7^Qꅏ/69,wi*lrDؖD-,8# ruZH !{9Mkdk[=ۅujzs_@̊(y~?GY'+j0:cr8>#0Y׷/| |kk_i0Te̵ |>UIZ_0`p{1o.bseˬ́`Ϗ¤(tYβ)$s;aLȼ3WnlA<źX Ph) t5a4 a0).K l%΂_qwd"ŵvFWlqVl,*ʔJM/#K,DIgin VCr\;٨@ɏaaܱU4٦?Up\ & d@`{{ԧ̒kqꩾI&l+:K ޣ4hd]} bɋB +D&R7stǎD܉Q/ Knjd_"mg{4$幽 PO*yj(C~h}w|׳*7%l n|54)1=ˊ~M@47@ xN1R~ 2Ca6 uo^~H'{|k R:<#Ϟ|{IB6E :+;z\̦ il 3T [K(`JzC콎N KҮ -XCջC0 )=߫4|A0WR&/ӾWm0WUO\0}Il{WMc܈ F-x]ԯbPu?d0xVCBOWxـCaiac=d%o[Xh<A%c!+Ml(&wjb_ymٳ 4ܙl5.tmHPJV x{e-o8M PQ2d(%@ |bLٛ_A'y.!dc/?0mERM',#ĆVK6;N:$]" lTFe fR#nڿ /O-3 ]1AWn(ͅVǴO&+I#D0~x ƵQaFE\7,D;2E24>?\lI*{+~)BP1?c]9 @ԓB$;moe?EucHYYk'L9K )!E.۝ֹZ9zޅphq9QU8[PNH*f:HQ{9_1 \/()D#X*G8[=pQ^/r+i{r&J's-~ҥQ2"}%EhTBCC7()eg5,GȖCFaD=L5Ը7d8'-z8(b$'xCB e׋gNn|f,ꊽ:bWfS0`K xg;v! D1(N "tbLIS_ 5ʮwR(/{RP 4h )j+G&?lVZ% O4 ϲnT/8|a)k_zKoԝ`$CUfJnGzדNԫy jؠyZ;qKժMp0W=)**\oRV'Gzۥ-1J6xZ+F]sI;58~#MqFCKT wM%uHEJ3 w8}j߭c}xM5EW(T1._md竘twgĝjpZ.eւ@ܝN.op8Ϳ !}zlA 6wev7:[s"!Ɋ;hbaCZ=2,{5Jo;g%b>}꠳Px1a:ע7SD0+6 wW~x>!?Zo!2 ;8\XtHTIL=a^?("'zȅ$܏Qu|% pǘ /BY̡@}8nTmAtsƕ>.E~&`]2~WBs46eM 9FԱ׃;I$1'{)֞@ʀee# $ٔ[isnZ8pga%ȷ)$KمO> Iq*5\ƤDgנt#|jsW!G\pE`MѐVL#Sqw/k Fi$Li,gN/*SVaBt+P.Tn4>;Y@kɲ}kJ &_2 f_%>D<.eN b[!IO C$ː##9+9"&fM-FC?::F-~@fn4'!-vx:>"3+Oz!ՇjP,3<َ,)2e>N.UڿYcRPǾH$UxAɠ-2ij%7u]iܴCA6TNzA+cq3VÝ(=t*{6gU} Zlxl4P֥طJO4?uHQmF_b+`ׅ SJʲ+;\~0hrwӍn nԆĆ2@/zPۻи@[]a ʴ^LQ㞠NS/J 5rgT3PDžŲqWXjЃ:3qp:.n$~K['>RV#-\#9\;w<ur+WHᅯ*Fj/z8T׹jy -E]QCʉcڙ,9s ZqB$[t2!ߥ@XosEK x2!2>BsP sxF %*`f/gy\Ĝاyk߰3s)تB -PG^+3LWGɨ%.=v^6V/) bE2T^Bfͩb xJz<)_ 9/„qOѸ80X|C0;Rq%co+~ٻU.?ЯBD]p-g)ԷME_ {"hK7Z*慭\1gu૷@HlO p >WM8}%J 8UoɽJ5 N>ˉ\CVњ@gy0x|kW-TXv7F!Z5yڹ䅁JF!PH͈>-MLd lɜ&9=lH5l@4{TB#>dNiw]Ι#䁯Pv/-Q]O+qP"W3;ni>OZr]iG${9WƓO9!!13V _*o?MOpB t򕪪\we >amM3)*-QZIw%dTkeruj 4@Ղ4"C[?{%})4VIپR5Xm+jTjia=s,.hv=##tE/`\Le(x ?5?}bb\AI[Da we,2#&@Ă *ю|\m N(_M˙}{y0SLg:QB&D(`bH$˨Jd3mG]BLFj'LV}CQYW[ a4'#/\vI9iH\f3P/7^TV,r8p^D\Jj=4&˨?yE|5 ҡeY=x`M5oשp&fbi'Zt?yxSf-qWl PXت ȕ u_\Z$Dɮ>0t.#C)킠U̯U1.iO" d6~XC\2iÓpD:Qv}6WhDQ tqk)!Ҁu>hwxj8-/kf9QOG|tr qRMw87ͦhO09\JxH?mmPTUS8yXÆoį{=`6fcuc7.y (B Tw3]Fv'݈xz¼{1ĕ,)i5Y& mUqtR!K~l #d?J.DN4"{u0lV-ǧ}V ,+]PEŭmG-"u jykPm0Ջ{l }>OY$U1.GAfН! kʂ=PLLN#UA*M䶺xyxzEl9} G!JoZCKHF$+Q1{3m)>'`g! 'أ$'~~]s gYQyg4m!|n5Vf ˜#/qJ[b84~=aS}A SJ䞸0ּ+Mk+駀^1݆Tn2φ>3(YGTC\OJWad!KѮDp޼r6;rIhdOGZ ezX")wǻ$ΫTYZ3? xݽm蛀4 q+TG1@ة,\!IW(<1;@J;mQ~P*`pd<]Fy0{.l`1/ 9U&NED6aqHw&Trİ]Aڰ; ULDɄ_PJEpGgjke&m>01~#e'iNơ{Sf[r=.NM;@T@:DLo]&ci:ur0K-\-|&emTE|2؂f$q=,PJ/B^J&oƜ8. G*X2Vy:A5A\Ba\%UΝca|gR,bS,Յ]sPƩFۚm!UBY/~D Lu5N@)L texW((8 ,#:FMk38f%%Px u;l3}LWlWNd ;vQ@bƼiJd~Z~6!wr3f{d ֎hUѕi97uF3D-.ҼxDC꺖vPgt>}WN9b@sLQ?.rwdL祋u<]HE ~ 3b`^6EB!$JwظJ3rn&vx5,Gj Ž^X^¢^7 l@}*ͷ-w ,P1e.ٛ*@t4~KQƔfp֏`> IDhHffC'U Nwso^~{}YŐa9C%Iswbw O6y{[.cJdE#u+oS6,`yqH|1z ciÀ?$(::: O ZraH%HxE  Aq D@lR %[~wًm9v#D0 Y<| D($'&݉MCn*^T&K~\joR^ҾFj<"%QA4 aڐ~,O4wP?GJ Ks҇bL<'4+xr eǓ4Lg3v~uY`0J]6ضXhuV '],.?}3IvZaݬ\ E-y2bܙ)BaѸOؕ%Ɏ# ;uT|uUVf*'-U7gȐ9Lq+dg\n> u8Cl;Lc\coi:d~Bvh?th] 5oHkX~}Z$&TO:y9.X"phr{D)|/;P̭*о'lޡLqbGeWx6$-ȼp\MAhW;1T88Dnu*RnLi`-H#SʹysYKF=A1F`ʮ6 3V^j/˓ PҬͱ@\~/@ u)@gI0C'D`//Ӹr-Xey~fCUbb{K-wΤE{yc*(@cRpxf2\<%ZIS[]v,Η/8**btWQj[Q91p0Y~\w Ly~@A!qV$ Nrcq?trNIj `P FSkH4uPm_kRsq7$adB9K' 3Xl BN JRbǭ'ƴ6g'<]MTrn$kIV<Ր6K}gQڃV,ɊqZlm]YBhdr>j] h.1BEf2.p^3pj3* Ɍcl/2)ܶhy0I.O~  Z300J~2Vk&#ڷ`:?( F@gtOUe6da&T/9ɰa>LZ rWS plC%k;1x|u dV_}+'l ;ՋMYCuD:hذz F)ØN'V~͍)Ae*tm>M}.5oGygMB-08oN!YBru<[VUjT@۞E^a~ZmA7RYyZ퇟>%)tݱ*:Nxd l - .S$w<2,Y4niʂ/I\\ÆK0FR[߲<e`T#̝ 1!NSf@tHUZB,-QLs*y;<Ԃ=kNDq]и=vs>5W&30*ϗ%mn^S)MfSGYRyT)< =Oh$_π_6x0O m6!ظ@oIy8)ۭ+ ֚!j* m/ۤ\r5uG5H,Vuw5}FG;4!iέRLY8jHE+wBM* \1(+/G· BxS['n#lX3a)f&BGj϶Qp7+>k:(BEWe#!euﹴ yl,/_ږ qVӼE(B)Y^;ʾ(3.=n @𛎖љfg[9L~$F(ʼn,Si6,Nj fK +ЏL1_dL ޳h]i LNHKᬑ U]I_0 ((NsSP6mm]G4^ KpSUgLc-ǰ-ٸCzMD:@jC><2c闶p"l;0J~[e74M )Goq mek6:{mq6 Q6ڽ!xӡ4Z\H,i݉ &K<GI 38ӽY u/UtyxJm%Y2\3vs>Ne"v159] AA9[,a~% 8BNLj-IducH980 f(A4#C_RᵉrUV]&M pF6a4>:9_22JK:'f~KW%HNW߽NKnmDy0'مHrpeDq*8d$K{k!~d9kb|tׁ c/'݌@Z}A9뜓@Q}@:O78NbǶ*nG[V`w~O>GQu;Pt܇<=7:W"C,m ϗM[SU69ZcM!/|cX VUF;'In1e_-wKRN3H<"}΢_Q @)Ϋy_l6g^|M,c Ff6x<wNlLm0e#pͧJ?HdrK<}7hWqΞwb?v?$KuPLФ!) éc7WRW Eq9N8;ivjsEhz6kۣ$˄7oSo;ea5M@>UR aCëh^0((T:xWVH~RFŖU{,s]Q[0fE/ogʋd&gKWH41hVC?8K4Esq~k.2֥0]23f2Ti.RJuL[cNR av`o'%IJkW(e;^\ Rdd,a ~CdTUY1Qi\\PwS,r:C_HEI 'eއ^)9ndxTF>G#!,}/Y.Ў\v$Y7Be笶I*j UPnY+Bo '%W6Lڪ~>_> ~b|6rp@q-:esHkPl9Mb7oО4}=Qx;mnW'mp0_9n{jsImɶ3ݝ/-"q5K~|avQ_)uؿ#z +Uq8.|-dƌ!;´7k}͚o۰buOStHdv\$c44Ė2m"6 [D!&Fߞ^E|ߋ2WŶ]̰Ē)ll5'ÛnϢuP91t;'Ee9 Q;=Y;B:'i #)jKdN uO*Ȅ)(R\BhsqCj˲sdb@f 29u (BN(W| '[>Kv?qͼؗiE+a;9oa4f*uX8}B;Kt9wF?[0P %`F%Ü2sʽ'X6;v._Z,N 1Hqì\@ [r\.3b {8I2n|l*NyJ?3 (>,T "+x87qd #+T|%RU⩭Wcx0Y>՜$pTq?K*Ꝣ'< HI|v)=f;pRWRþߓ3J>;/WvtA׶a"믐"ź/g27-ktm$Idwq8{߫)z̕K3r&cwưiP- U la 'D-JwsieW㳇?4) ɴ5)&nMRoM Dw증䪋3ˣ2Nᔇ+z4#j)I9UG&ڹZlyhk'@~gyĨ, & K1:d}r$ŠU彨o%Ib\g{&!9#\Z!ʔ)|ü)mO=o#lە}!ẇ7D5Z6QQ/#ś3=ܳq^^7J`ꙋ!.'//|6OD]ɘ@ UBᾢ30.}8YXF?u8Epi=}~pSɾ "S!17 4jZfDDg;M2IN"iWeX]hcMu>B ۜU-5#u[$ӄ4abWO 4P쪾caUAZiv}gyOْtO ~GX&AҎzM ݟ~vpE\@N L4?ApBP<0H&G)Ӵpo(RWsؤ}E0\c=RJ U[q]߾{ru)οI 7058cN nVYImShOv}NMbgC7k5}!u'G;^-mb'„Y-΢L~IFhf .Ll<7}u䑒`QEa@3Ӻ|"[ږtK&88gH9MM$9 ѯfa􌓖'*h-8vX"%l-{p,˂ \tO"'g;yܥtQCJS3lc!_'1`ߗQdPgW΃?(TLO4/+:8K4CY!3̽~qu+ى4kj$k{YYQUoK_%60WC(L 7oϼ"V~VqБ=# (qj~g|ou9%AEY#'4*YW${.9.sҢm)ɡ$?f Y>θUH+-p#?=i_}A>p*efECyiljn qp?u%4eqfweq]W /a'uy/|]T:l4N"\뭖kv_(ĭ/35*2ވ[Ыe'<]oЍѢc8-9,_ݨ&4_hOÛhunBR[evoyv"Jჭǜ, '0UN\]Ѥ >kzW?@tJC!1a?!.,ֆo L*mh_5 ˾|@Iȫr ~g/`c>C^d [HWAMEMd8ȤUQR%VD3Iن'h7Gqx7bE{[M>y"J߶30gT>|"37мoR%7&"GO\";W$a}F)ӣDEj}K4K5Tpr]3&9C%%-v"](xTcس&!2 ˗XWuil;:'wg1CoϏgxƀ W;„eCVq͞~p$|#5vӌ[A% r(yFK .N^QX`\f2KPʗ~5 W/dɲM¸BT?hw KJz5;J}Il}_'CƗ:ճ@M{ ⚃xVod [Vr0),eU?s|#iZڼKlKУT;YL-2RA`,ΤiV0ǼjqDA>~dW~t 4/qSW,n^Ӏm^WG}niN%B:5,#l:ro!p"/]F%LW@Ew#JrfۡH&0fH(v6J_|Dr\5'6&#]Ph`uיJڧt ^@H2=n²hSigx]zцng!:[Y*5L'"l%mH8ټ<-fդyq;+4cosFFz.655HaI/&#r5|t9\3ɵ߂m1 ́:+ UzY= };ߎ(=Uas3 'AI>܂TSϰI"͌.Kg/NӦ _E]I`ѝ:aI E%ͭ+e߆nay/Q9 'k3wkLzbjЬXq =|ƔN'u5(җNT2u~4(1uy%kO)ўdűyt&_XrH3qkS< dKj$9p/xd mNT]6)t }d0:E"ϊ=> kBIH_ݔWZ>\ \u ڳ3#@M`y-NVNI 9[e5.b^2DKb]pV ڀ>T{\g: qS(f !f.?"Z%5ϩ `|&k hj:- 7+sϷ+4"ֹ̌~3R=7M0,t2g4wj[i;:W+8܃I z|M Z*(f yVe6oeq<-&NP:_}byBqX(+o˖ gC_[_cuX.)pSah:wQq~Y~Hr佗T^r] 5"?jTM$oU ѧ6Pũwupr}YUJjZmmV2ׄqJKHIVܨQjRfIk~]E[yTz܀~[ހR gX ~ Ӏ_iB ݔA~ެXR/!{_Bަ*< ԜP܁X)*_S;ʾ7p(U!R U$rr_8BQ ;ek6s26+i3DY49|PH+J.t!>OwQ% )o!pr٣ -饐f1ؽIO3ZoQŒ4*Ӿ>Krfdl?26aB_Q('f^+؟"ۚQ!?7 /Q m2&WXG]#JZ9]lOad]c>{s݁FyuqևX[g[yHW$SZ=Ži5]ȜP||A[=RTYsW,藎<%?GUc*r9 _ƙMn\$`6E9|Gr# U=orYjJ8:w ɗ5}IHixJ +l5X5Rɴ>V2ln s.*Nچᰤ9o~@uKÉᨡԍ3WeSu:l-O`dYm xǐ;MC}I nb34RaFTWFC3'aRC͚xyU?<|]VVt/Yj 赢x[2"i+t}/yN{@aezuҗ`&ǻchAn:*S%n"|K7)z;ft83~.(n/تWh'm\d~ it,\ajA̠ɓ]oAxor EhGa Il sVQkP^ԛls bp> pMj2idEKylC/c) kl+!uO^tJ}Q ,4t7v]H}5~iݛAPĽ 6{kb7 ٲr4畕6PB kQ0^l 1;{S7jFj`j}f>V@_N7IPԅ[FļQ:Њb"A/<чfpNr֬hXd_˝c}4 &L!bs_+S?g\N[ҁ+1++6od(M5b]sTRC)N3+ffO1lB`: ZsRQebs{?.']'~}30)WTs{iM \ X4Kꐥhϐt`_fT?'0}5}d.1؆U>jVGvLxӠaDB#R~;LAh tf6N2Y= w&&ٓXUn2Z>·Amғy/!vKF;~GI R&>oԍ.ͩJ tuY:_NVE@g="/fHH: {bW@R8?C7s,k//:`.r -0=}Yxh徢92Y[X. u2\~'QA}L"t2ȹ; S,febˊɞ+JW! 2KDֲ ٚ=ț2+Ji6#5Vk'YT]t ѭR=W_adm ;C^{xAR4羡lLZa{  ̫E>:UR8k!B#(]!to;7Д"ICuݨ]RAi{/#fJiS44xi!N7 ZtlLQOw|]m㮏j;j !a8(r!juPr fS]C^zz#x%ŕ273< +j:PG{,Bs@BwDA  1mMw|UϻPṋ'zZa幸)T \jk111.p'$\//-;"m|jslO ƍ7wOrJ"}TYLS.ᝡdc_Nc2@tJs\53^\04ID{{@]OH?qf09JӖYߖYv@S].=d+>5m݃ sšڈ՟{jlK|_h*\c>NKj5CY8s[A٨+bv4a}lί)H4 [+)6?<&k8T7c~命ĞxZ)uzvyaX%q IxE٭⊅?pT(;jWȋ;5p'+#7rSyH9Mfdp'c a \;u%IQ7ǜ%R+jds'8$U ŊnWxhO+iUm \ÏNr $5MX#~tphlIujXK9]l&q^c7ph)kilMEɥ(qE ˓jPȇ3Dݏ{Ҩ;qv)~ s`hr]iw S)(kћ.A(PD 0u KDÏRZYoR6,bЪj݀vJ~GĎ_m3 qЇ^t 3ZְGϝ:EseR޼ݗx\$&ɴbZ#Z$`j_P.Uܧ0̽/aCݿVn(8rOk< m ?vyRhr?j ؞}0N7"M;XӲ= LKFYjg߾t ݅3H'be6iR:߮O.9ppxb]+wC yHr:RWm̸CQ:ioN*ՇIq7t%vYU*cWHed ;߶K})vִM o^v;]I1}sA@6]3Sˮz+bm֙*W+{@e]];.__;*8;焏(hEztX1|;Wo:S/.lIƤbR"0{,##P,"Rpϙ!xyg(0bI>*`%Ѻ+JY?`M_xn/`a$·ON$BjMOƞ+ś5ָh| E?Sҽ\:7 =Se!-O8dsԢX)8cXUʀI4\=21@4Ͽb,ٷ rUk;qHjJ3tWb3~h0Zrͻ`[f7SF4W .0c*O|)0%Byb9ju&Gȁ!bl΂^WD^a F=;bm!)_#U%3jжS@}8)~=+}w۰~!ybPvu JU.p҃xҳlvagЫW) J,X%#W4:((l 38.d'h[Ș v8 L#+hz+,?,f[0zpsWMZ<}9AnΚu+S|ry&( Q/FMT,Ёez޸f2f>b83I~qM~[`t@tƀ5X~Z-C*cjNLòkK*fIaVeQRKel%SU5P*-OBC8ŘH棽 J.\8%VYk4roin䲅ddq_;6e2?e|5$Pz!L$:D-i#p)  cȺ1Dn_8뿏17`d#4(bTKXpaZ⛕*Vh`u7~<ƪyo?hÙeg=ٮ8%/ɡH /үLCvR3"W )bp$ybpdٰqUq} ^sy 6+xѸ{4f-4 qk&l%Q2=U>\vTP$c$=̓!v S}Ϊ{,%y>@M3 f}s&E6@ ֽl w.])Wqv7:ָȴ;ZXኤc?" 9RND U6ҨcCzqQ*1Ws^́'|#4n6UF߸cO-Yy#H<0-b☋#H%먀%KkDRYf^T%qR:C zZ@4>h] 灹 vo]nQ~x,ERÔjqոef}-Զ-DU t#u{xm"azS,Ѯ+Nށ h,3*(8tHf>3t grAPsiwt?pzN$:)yT;#8L&69Y,qߥ;~Wt3(c̛(KL4<e|^iItJ]eԀEf̮7S%1g`^Zc0{{g*=Ld#0.ls問فb%_x])b1$W 4#2~ƹ4`v xcۆb\HG\Y]k)baA+/X\X s>d&ekuw/\Эr/3qp!B#/wTzJ\ IN{FGkؼFwdaҙ{b#Ub>ou뼐yY/t7U/cgCJyqibanr88w>$ef%OI `?QAR^?R/~ ѯ]€:u *[RچķC]/qYWVPj+Lld]\AT9!8Q/\{yuA> :3Tq)Ic2Cxf~x$y(S=9(Csq1f2>ۣZEH4dbJ~T<'q1P7p/iRVkK 2(s2UDSiAh;#u7 C. ܺDwAP.S--0<4S9Qx'lHǽn;&k hrpbVճ>ϜSSn=c%Jo$cOsIXȣ*Hi, (4 %-i ӫiH1᝙4˼*aV-wb.\YQجx9eXÊ+@ǣ4:D0qK̈Ot^L '7bOO i[ݦ$j՚ثl.i|8j:?g(,RSPzF6]OzdzەjN#J'r#plNYuT!dwRIغ";oH`DÚIY饤]+\aD{Lt $0Hj R%]/iP+qk&nA=y9׬z /R;xwHF/mC ^"ZȲϋ"y| OY9}^?}q 5+R b9TJXyFcN)NW0hmʆa=9P t\zBRʁO$6b+Zh &6w[mWD&8+Z}MN2ǧ\kwj!#y/^$M8FCjiZb:Dћm=(\D]"j4X/D)(<ϐ?ՇƭCARmMi0C.[3zE0tut?'Dab]ܟs,QuvS &Shf8Zsk0UMޖĸ0cQ_E¶C9lR/ &~iL* P} A8w6S5NgjV1|.m'*ps H T%AsgLȉI\jɈlӉX,ڻ'o}̎u(3{=&B,λYlL"|ZP]W) (xT/^[B=헐ڽ"GTRMQHU9ڏxnQ=[#7t̻Ż)93y&N$zyjƼz Sgt:;c+gItfvt_թ}7~7^t$X^ +`Xrm#RkY_QT^Ǭ+ ,Jئ'Ph癈8gǽy]O҃sI+W*nU^88 !f$WteqH rƂF.,cT>/mcģ *DdQX\gౙ +)~# +d7. JǒXiUixMjQ|"T./6  d6i@\z(f7 WW*^~X._sRCRhSԥ#[>B1a0_m|ûclPah|ܞC^ǢYkBϭc"O?ZgЃ)E^pU2vnv%ߑ|~Qlkn콯.p.ʰ5Q:a\o_&S@у:8_0- ZH__ DJ(d5eWܥq"e7\j wF v9 j#Eɩg[;Uw963K $xul,S{㝩N9*w$@׸XӣXZku-װҵF \m31.E85S5^հԟ=}Ep~@2-M>'}grs<ic)i+X0G` أK}f cG2,*mٔ'UqWj|ͼ3:BMbXg8B  37i`ǶDظZOkpG7``q6ٔ]j 4;}NYύ$lp[ͥ&Z@01]a^.e?gt` ' 1}yǠ!%Q^~fAt6,| 8.ÏdMPtQBU{eay~t$CZ] :+$Ҍ13Sh]Ue!xtqC(~:niC"a͑;V0ϡCwOž*ܔp@T V)gp}c<0P1}\6B|o[4? XVZAFC-Z;Aqv 'irh ʼns !))Cn WzxтtF9]q1OeԘM  4%J(94`q(+} 8*Ӯ8.O U)\N5{]PnH@7h%7/][\N-rs/)Z <,R V2XN>@S|oz>J2$q.3TDOPj9F-|S0(ڊӵ#/'G֥}*1[RDqS4N$aj9(Og -R- fcykf!Y28qya1Bjަ,g~4<:9A8~o薰 t? .ɤ ,Wt頩^+FSKɶJCa"8 !Ե Fwdxt6UV3`2&+8"#Xd{0򥽀*`Í;r-i4;:a/E$P-rz1%)ȠaO`O/\R!hG2pTMp4벀ÚF{TN؛SYjp}؋DQ9`N4mjGsyIrE@/c$NE)rԁЖ"+L.|[4%lD3@RyX PTbqOSIe;b3g )]2d|ȃ~-D4r##XgȾL!+!f\u'O3Gmc AeuQM^Dvߑ !kERo{%m$lBfǗA xp^-,ɚD/K`q:pPt.ٰ|RAQ̈́y 6KH@>sxLLc09q]a,b Ҭ,hZN<蜤ljMM+a^QօMNDkY&009XRr{8o%DG s h)IQE_G]rKrc|owA2RHc4? +4/~Ў+,ҽUU WRH[4ϒ6G 1Qs`L%Rs_HfCDeDk.@2l/|2aA>gͺ9=rI (ۧDҽze|8˓C@y"X:GM|i&8cwn/rbhH&l G$T_|KS?56ӤD]k L0{L*9S/ R!߹|Yў5@_c 8A Im[O !:6c~ Džf `aR^wwqe)8y(Icdhvv^eÐ+3g'?W&bvY㺵EDrYJLYqZK1G ~k齎q= ҶAqƊ 5eoC5zu$eNu~I2r]*s%g1>[$Jw`If5j~w* -u9*aZ(O5-z0 #}l VOϳ4pHXH\4I"Vt-ZJ5q(W 4nrb0ƾҮi1zLSUOM(Ȓ}S&dQ6܎5N2uj2lD U1--D|G=VVS)_ٝmٶoIҥxR'}/sޢQys=`7(d%ndz.d!Vu 3r4oܦeş~ҦCbu:n P@=gI&B$X>b#N^ H7zbJyb 3_֘7t+svq GC [e ,d:7>g0g.s u ۯ霪~em5+.I6n$j'N>2}sT%iMoX&]&u]o"Drsȭv\j_Sݎp[b+gMBA!H.J~n8}sȌqحQ_[Lώ:WHNO!b>;!ɸj_z _BD)YFWH>8l-yљ&P7qA:d(0kr;hQ&kVͿSV4UfX"ߧP}ʱvYý4I&Z^5]XڕP_E=:{=Kymsɠ:miwAcKs콂uz&!z^g 0>lBԵ&/@={Ԟl9SWoPI">lbנԚSsVZ\ ҄._t%*Iuu!=N1OQ4od6YF&5ߌGٴ9Uwđ>=l3TmX pogD= 0.l7f`%n@k5φ<=YF<Ƃz[;sv !]:*Oùq 1"*huӥߗ)P_@@e>\咥ťMIt,)Ygޙ霋&\V^;vyF8^9LsrMch瑸{\ׇ1`#~Ɉ_2tD(B m1cࠧ:|E޺ˇȰEH(•\pL-ه9&rbz,δhG\|р.=+쏉gcb:3]fМR &eL->ꫳu7# W,ー x=lK ؃4d{5kI%M#y!6M|'hRtBq䷟< E$ۃgfRSŝ}7!0q 0e)ostˠީw9[$'v.ro4Kl ]es] L[6տIj;x;LEFlaە]钒2}F w:ȵ{_l广3ldۘ<̾%A#1RqW[qJ][0rS'pLYFgf Rۇ$&^ifI̮*喞zDPUd.΁`T2+/g؜oG۔HJ-Q x -Z!JNן`:^2/̒\`3$h=DV: 7.O[o+Qu,`tZ]2<< A;LptNԑM(toEƨud@[ӻgebUـO%|E?@W8cBO+6 3x2cZLx]1Ê2hқ5 {VJ^ҟbKy+rCŮ"F7~6`;8D`{:/=y1 <3[äj]BsaЖ"g? A1N>n:̆bsBuYST3n\JY;fy0Zk] vp vky_$U^ +6s(NO mdTpuiVP[IL}.ĭ0{Pwb}Xjjy>lpLC]I+^%VyGaa; ŭ`q_]fHp3,ӽ|#L볓AwFYSQр̏iqUZukwNjMhcvt!qÄ2E0WVXԯFn|n8R> FA.˲aKЕ~{ :4EB`syസJ23qkh}Ru.}b CDUt Xy ufވZ}?2@ɛʤ CkJ)޾a%~^[~u9%W 2LѸ\#sH&`_ʴORiɺ|kFj~}7UK,e 9JCiDi ->.# *Sͻ̛1Y1Z x#4wqCzquZL}bE63(:e}4Kc 5/efj&V7ׅu昋,䍺 坽x9Zah>yo0"~JNݶ>ȵp& Q/qEmw5ۘotPq[=҃@u'PtkU`qCБ nIOr>:hqZb manyb |&eR||A3͓,!8w?0c mxF^ӥ5gHT|z wfԄۿ&9y/fmG",dldRT4nv' d$[S83̩[Z!dZ%RԞ}GWV:QogC|gC=J11%JP*H'`ƒ}v5Qc(fIw M )RšLH8D \Yq|BYYU[4v.HS1Żz Iۈ2$"`jfK:"vƧ脩L@Q^{U]q^#|)V^y'SYDSXX“:S})&(CTT#a5^nᔳb>i϶7,z}izp6q)sjyTd|c8xv|MfaO-4(57Cڻ<@iz 77ϴh#[Aӹrr|ြ^pH~[seʮ)^>VH8$EP=kJ R诐%pKut54 Ǡ_+ ;+,ke1V@</O6,!mBVgnEQ|.{.i|XL8MOI̛&aq0 c@Ub[05k64JB2! ^-[4hIUm% G̖ZB }R[Th!h֙ LIm sx%{>옄y󛝙İӺ P\2O% Ұ"t~ eySEe#L7F w o:6i` & [S@EIN we=[+~^ }BFS``osc :Yz0(EhYEg#]YsP,k I+ 0>*a߮]wJPL ̄ZudYChZk ZI icR1rJ^1WXMx{]M5'C̤1EzOWjjq}Jz&–JF}|Kn2F]\ШmT,>" 8k(ʕotFPo[!fYw K w1ce2XMz`mGxdSb2Bv0k ^+V*/Y㌲2 `VWMZԖ~9&?%cif4ct.y:&Z)ϟ#~(Ug2>t%-'#5*'#koJYlı2*C(  cX0N4?aKZEVl̯eQ %fqj=.iRKACachϚ)*S+&&I;'Xa;T4' ȩL/]3RgM 8f֏N]I8)$ҡb/73Wݟᡁ 6 +Xse N̋x/MK1qc8CixcU( r<7eju|F|̻ Ko䕶Qatl$kB%> mNO+p R%Ё6Otf](|j cLtv茏^e\Y#mH,5QBTc#MSp=2YV\k ZCOH[[z7ks̏*8p)cҸm4 Q~(F&CCIijvhJkקFDn2>BD B0 xYs;}R4b0k{miR2U \fĊ[^GGzD큠=r d]uOy7gN6dta֞Si5<ψ08,VsnPn Q:8; 2ͅn$Sl12b'꛼Y5qv8{ĵWLek2 a儢Ro;& 5S]wl3};I׵m&/AVGdfkOL=xq8QYf{dFII-6#]?۝^to }%ۻsȻʱ&äwx:(s g X!ny\-O_OPvuZ- YuNsK'#3MoUQce90}N_l2owL'rcS8)}l5@̝;L}d7]*0/_47{0-k+}ł Fpc y=M?zsgvm1C FN$4.#ܯ{{B|>DnA};b;Q̬*Jz7amnp;۶nQ׀EyO!"˯g<?>a`.WhcgC : | }04!ܒN1t4tZ5Jx^GXt~xG2c˓Ie TsgUe0o$8CUtf4X7&A"7Z34xkaP9y-;R8[.DQ̪OT레`n~)|sw-k&z5d _{ĸt<^ ~*2G[:t'E2 )2rJ>t IhPzIJA|Fo]فV^hT$2ry8ZqدtA8:#űeO؍X**,4F}k5`_r0= +vٛY K $J}sG :lVۯ~k΁y.#7G91: L/oyƆ/ sdtDBԫE!DfQ sņrT4<>ǩ`@lntkuto=>܆{ Qɚih.TÇ%}y+Ľǫ{=0iFK_* 5& BZ%ᣊشKEvml\˚BkFl1[P:ȸ5kr qN׏ z={а0/³(5^m8bCvf{ceƸ!]b~WJ3[钟o"oxs^G a[F^z ӻ,ewf)`XXc#dr*[6dEJ ;_Se_0̌PjmhXoWmM_jYU6hXx'68,:I)\_zA2!Wpw69y0e c&6\'Y4r_k<8 @l.x$I ĖV4آbjOWơmRVi6tP?ރx؛ǺaG unCnK#٦FWqǖ.Hgwŋ=dw9 i3l4c9x3f"b?,i2NZUQ%]l mñ˪VDZbg,2%z | {c8L~<2٨S (S^G$$A;+lN5pKQoO=X_Rm u(珈>@nD}W}%@0=*)tSf slV)>sW$~PW;lwD1S~Fܣ_N) G/3b`r9mrO?!WH6j)S,PQ/>ڣgif}nzؚ;Od߳Ut8ŝ#7|YI_4`!3pAQO/ {*V:`s"^_־TIЦl'4yTG6&)P6A̰0ctR\qi_6iLDQ$Dc,bunm=2)Zn'?\#1ci!NYn"C~`;3mByj{90lyu&q܊M uEzfo9fc:nIʺ|gbGsPaޯ;6PlPc30BE]dp4n &]-W6Cz^nFLe ?Wh厰ص4{y=$ YYv`Ǝ#sd駗WHo/ҴF=wШԾsg̥h6l^-HSqIq0^֧E FRP "h*JnLcwH$xQeh e A0Pщ!@Zznez)3~/(si;z5XAȻfJ6?&@0L@7HGW3#~v7/!ZGt,68]_f0М2\#) ug{rx0A9lPI7Xg3+OJ&kxvO,RYD!.$Up'- wR澈"6*WvFUĀwa]gT8G9y##r#}09n9萶97=٬Ү 8nׇѠTj^m"i]u^󙂔E$m⎸svP~>,biFÕok?kCT08jNnS;is B֗Eg⹅6̰/K~/j7tpD{ ԞIs[ 36I{Tt[ Gn/W_Y81(BgG?y/x7'9#ğ$,Hbz=  8ՔO !\̡L"0AAZmJQ)й W|S;۷b\_*'kŕv)sV$+Q'ՙUU9*|'{V7koʩ.?%T_J5&)}6j)*M]X݌EõzyJm%ƈS5jkrmdz9<=6~XO1;g N oap? [{jt 屐6Kv:ehY\3|C:͇B&5tL^|BQ׷|U8uӌh?`fRG\AY4"T_{lJ"g EGyAoljIa\u/Iy&lX 7 * {9БpR[ FTޝ\Yd]-rqȤ FPQ#2%o|P ,YxHw5L_/e#AL#Q m"<;UU1<9G$/VJ1ƞ;.aj@zlDv tpXMv;aI{9}:9{=AXYU (wdCRAo7ws2H_Ism/vvA8 ]f4Xn~MKȎ1~&aQc!CG汮C4<]:hW/y0}s'uAGm8iz64(iLY}NU/P9pCC>ʢ"TRF`C4$Se-}ǬF1o|" l6|NK qtgW.TՐ]F j׉t;V PH3ome;(Rw+R\&`zxF4|8rcg!}pE{`U3유|xahSsЧ}C^{, Y -:ŠygA üzX(#̷ BGzqYLRڔPLP0?9Eq6kkS2(P9MDq"s53o*3~f,Dė/'m0]F{" ɫT^_]JtlЅ簅++"TVBA 4gb6b6`LjзBPf& T&^nE$!i[Q3V3ۮs^>?q_- ]SU1 <"M]|.}Kj^$.2/z: "ɤ!C'FèLȿkB$IzM!:;"goQLDA?rrD-8YK%n9ͰS- V`xЫ, T3}/iHT+Q){}э8{?MUw|umZ MVݤEt Эc j)KB5)*b;QBqצX[RZC.T0}nza 蹼%-  54 q+j֜&԰)=).8OM]F +J'd`}qpIЏ]:t )'o3sUaH9R"x;)h-8&HY^6̶`u=>Ez# |&M(hHF&Fů" f(%upҡRF1Y{ DN"v(N$ }=Q:KIHP[-p*E5 ]!YqRuo_\ۦTRQv^Mrj7~e9$o7Ú*NCГ2S >aNInA|~'0GĨPv$ѕB3Epj%RsY՚0֥жd[LLxk&SDhkq)Ϸ}\H?مdJBF޸z|yBHg_Xpށ?7MP?&̮?N!qYwB:F٘3^}}L8Rk' . VE>6wBr1مBr U30o~Mq ʇM杰S]$qI;T]S0/9|~'2T@Xz_hBg'^ 6>C_鷙{5pW@s;{"y Do!/c3ZGezts&f9蹙_aI xtE+/+TR]<ʜ[ƪ;KW:ord .!Q8F`[졑hL7" O49C `q8pӝb)>M|s|\@G~7pW;?IJm~ EE[sQͤYX }tg38{g{dL_Mv?m#FQ6)mhF& /G Z ~@`L8&f\@3+,^Y#^g!f EHz<ދ2Y܃'vyT^5 \=e")R^͘a|D#̧J;4"O!: ߃Xmݼ?Īdt A#J?:>s:vB6])emC4fU.Ҽ{;a_%H*F ' m_9hXaϺGF ]' 8nG۳ےOP8KVh\Š6L eg.pvĮ^Mv2{"[y/'mp ܛqL!$xҦ[SaF0s4*﬏䙬+pbhq!QK/: :P8p`3` :bA{˘^=iA){!ߜ?`>dLgZ5yZa˴ Uk7x^qE?N d2( 2btӋݞDgL̷cɦxG;BKR, ig&\;L<͓B{';oĶw}m|U\9\d#**6ցxS%@7"B~7r-`wE93lIa6;Vhs=RC<Ip@]'=̥o|!ӊv.,=KczZ41i4r跶 !L’hm#z(5^p|f~b {=X ~?_,cXrj[S+ƬEgB6IB/'ԍ (G bȖ# { 3xF}k='ϬbmB[ Ji*} oeoR2̆HɚTl_Bp]g~݊\\8<q! Z,GRj|mk?,`/d_-ٍkOG l𗐻lma5:RY=ׇ/,Ui9z? -Gg ]:7^H4CTw4z5LZXt^0m ə4a+?B:AЁYAinxeJ$.6 e^^VZ>xA{ernQMcA5+G\ c6g+vEFS0VS'lmEmlXh K#Re lT^<*4?s":oW݇9=:>zDsPxx4DE3ɢ+KIWl]?bm㿰Pnɳ^gUjrtd\^SLMƉ>Su1¤V1m`w}dHaKl}%mf̥"8yİl ,wʩx$e|hNiyJ(9(.czm2٪THp>ǓF*;@Vڪ-b+R4?)9_]w˴&\H?¬ycI.< 9A}0owYY_q[YJ V![ UMv#܊?DžR;qƽ;v,o1 %jf~%,fŲsWX _wC[T8o!%+ZTKb9CypG4x:,a4ֹi6H ̮% w7Wڝ38W+N=[mag{O2\Iձ|ޑIug%΍QFi;fڌpu+[Ww{I3)!m,QzhYqկd ΏBH[m11o6^ipږ=2=UU ߳ `wKUh^H78>gjb\~\im^9&lv,Th@yY[Z/mW[(+;DcTQL!~{)-uT3A=uN|fT*HXL}M Ey{Vfљ!ʽC#G=#j|_uHkM[&bo| ҵiPWHL?`=0QЧZi7_l[lt$͉ rñ^f*=mqH3@&~z7gh㎆N0K5䥮KNBZBɶN x'LiqfQׯ)6uS <ƁzbCAVzhKDnBmG]( r܃6:?ݥLcd4,*ʦtr)^th/o%",[?m6f6tL𮐊/Dv\ j$|*`oHb{bv0xr6}]5'Ă` QkuӍs`YW/RpK+;, "Y/$LvўU 9M֭WtmV@Z&%j<ߕ3hr1|mAa9ȢRRגф/ӰMq{23~vpIw)zI&Ɩ1Gb=Hm`_cOCslӅ|IJ-ǩjIo1f0ww+Y 3;r:"dOIq(O LbkYp hѳOyȴy[}s=a'^. (_+%~brF:4f"d;>6Fg簜ʢ<+W 9h50> ;9 %I*zl #uxIj_[760:$S|D,Bᆹ֧rףcftȑj6yOa`UOrMM}9Ӻ"ctMNUol5nN_ؽĬw1+skmzLY]wPmMd` P=$V)(g:kjyW鯐pi3XeaE W*)Dy׽A%5MZ屾S{;:xy%W uWUøEI9zt{zKC_O/.yʐ m55wqa#^kXw M `hѽkK2m/#EɪN BJKd2L*)H (ٌjxdYv]GaVSu{5(0}cWÊ~hjsk9rG< r@|Ň$h4hȇeG+:Ea't{nnE:dͺdt:gڢ?j{d1o?f1Dn<+.5vzN;9O{xT`ټ w`w@ң'.8}=OH@fO|vs:9NiU( O0?V kKzCuҰҤWk;Icg3=A6|Zڸgu\2gnlDaG*-2bG|6`Ʈx3 -+*)yxUIQ߲AZzq͚kL ǐ]vK[qD{s2+i)[Om÷mįMC>P3r"򤕡Ɵ08^0dz$i?A+7cS- nB\6^+Y8VjP0[m#w.>ly3h=!L^ͮ<%b{vū_mٯYbf-%aRUk<,dH&LO5+W߶PwFRi=,0X,h\|E3P njOrW:C$3zjC i;ٛf} 7"HD?:.ؚq⟪ݾ`yl=X}Bڅ7/UwbR(E9 ˞9ozz_ Y1\oC\6fUu:)S$Me1wD6'O](#^)mY7-.qGhc4eT|ZTqXo0p lFZPU?[*E]10ys{snt6i*p"FYH+ W|TDxbZt NfFhY9(i-)pT"eK36&+lʾ-6)o")o(M|Zd=\p]zxXx' Qg\tDBKw8P"OFÈ"˷FCt2WLM»XcS[|nd Ti-x8lmdӲlU˺6/3e~ڭY_3O特.jZ&Gܡ8]ޑ>_Cgـ*kǿTUF?Ql-IzC Ŭlq*zxJ(y"X+^c*"ܲ@ ]p yH9q]濧SRϗ&~8ۉMAӶQv.oB Qt#`Ŵ⼈>jǢ{HjD}jT6@=XfICRHx[6SB!,se j򔾎 Lwkͭa6>$%necC˃paO+Vj/s~p;0?ZWs,idI*n'E v>kU6S2!_l26[O*8,)k}ٙY5j{:$ 5wCGժJD91>Ĕ1cl*`LvH(Q2wfTb0ӕmkQE Ʊ]3^:06r &_6>sl9#CBJk2TbQUɍ<0`^c ճRRNt4._'E0EhZnБvaX8οuG|\Vwf=;rKQe[D] p9j }cF ,aʏn E<9x#I#M? DD1XUGC'Q/xB%jcބ]uU=,mQg b;yMI`HFnLrwdNjU1 oSUo"iR|iK{^, +GP(ȃXSh<&-ftARQ"/}} z4IJzq{S2u\ZȗOWK?LX Y9+~MNSŝ>f6 s iNs=@{gq9?G7Puh#1 e Ŷg$}sYE39y&ݧD6?^5]&Zb9L/Q~8[gO&P}IT2/3$7#4e?:lIU3֟ ǹi&ԴS98Z>ĪzO0ϝ(qB6Awt͓79op=_SA3R 0-+:&32SBW3B+BMG^2Pă K  `unux{0B Own*鲐4۬yoޙCm7v m˲wqyePe?<푩u=o'C9pxVlܠH_ZCTŖҐiT:UޏIxI[zH_Q gNM~5` 3 zߴw\P3\/z™3g[T?F:oPy`Q\zbæ"m/t{)uixk!oި^F]njƘ1wg`EGr29ܗWzɾ0?vئjS%.il+&8fe` mR;B;,-?Mw7MU֮whY_RPYiȒ& wY]$ն]3ZymDJЅpfbS_.{IQ뗢V'ZRrW\"^CBkʹ(=k2l-F2|.^Qm_{~ѴVc tC@cߒMEjD{YF^Q^[?ɞ亸Ҧ;O[t6s=Un62T4CmdOʍ@ɑ>va96pD~9sxc6k4PT)Ӊ ο!"daQsη'\uH[r6-%Io*(~oyy 4" jA3Ȍ5hehD6CM  MC!`}? (BGb\LɖvM. j}{߯؉y{"1D.㤙%MMDa-j2IOwwaJ?my6&vI/p>CSZ F᜜3.U`{7Z%34jX48Pf--?q';cNO0Tև| \B+a 3eovyCr{4k;xK'!.&֧fOUPDEN2ػLoz)~=z⥪v@D5}55$8==k3 )ZHRZ1, \`Ltr=C)D9ن)YɦJHʴ-l: i￐<1qV=Xr~#rMV6qb%= 9҃Dhd=E[߻L@%`)5pa㖎rI}l,{4A{Wa(Jz$jak ܳUw?񎲺P%)#~3Fv'&"^mcπQݽ;l:Wkf!wSah15r!MycIS+pBh,̯w]~lUl偠[t)}|hUՎc"WnOx!PU^8"/4@ch6w 4d׫ȸm˖"nSc5\ЬP ~ngpc% u$[^M_WI$UЮVG[nH9Ẻ܏|ZS 3f!`՞ᒛ\҃L S{M y-l1z(bo3D*G3vbɧkfm$n1:m+ ށ Jп܌ymq`la++,5)avO3qtCF8` asқgl;6Ya㺞ڦw\!|y3Iڒv{КL!uN S%yن'#̯i 8,@Ö>GLS)[;MBv{xZ}>Er{4at_r:miC7h_d6_ 0,#9O2>V7yYԎSd|bV-a2¾ݤaGw9^-UJܵ h`u QA1 ?d;*,oX`M&0հbs9s~Mr%Q94>bJwM 9*ON/pl8-􌨜]ePaMɏ}:BբE_~|80R8nqrY(f nU &~2'*j6if٭Iwmr+ltDWV{M<;:)+ }+b`dI#P׬nsX9*F(\{p@;ƭ7@nWVH™^ X\FF8eF8pPg%Dɒg%^w}x[ݨ`<{gn ?*kva(ief7Oْs2¬YAV8Қ:[P#g}_9 Lx0hڽ.ưE=}탁8 2gj2L%hP5!v:+gO2A:eNZ`A%1&N·Wlo֭uϓ[N nh1ۢJP{D'.Ka]M+ӋT/kgE$p|اXLQf.;r/ua@K4irW$4AWb2'.b,0 B/ fqw\&Zs?4f.bbOHJ/<,ScviQۿ#_*Ϥie=anWhReۊ>ULvF/^ 0d@NB*>ժy Xn,H+{5 LWg)1ڱWʣl6_kJE[ol̡);[`_d/ ;"FytY*VSa'$"2ǞeBm =nc+o$T OߴZ1`i_MzNn+y0UjiP6Uق}HYz|X+(\o[E_/O~p[}#EQΟO!qmmeTrV|ŊdB)g?`Wt/3L[X\mLI a\tFYl S eQJ IBע鹯S))+ulvvJ#  ὯTRPR4ҊV 5l7 rqcUW*fv94]"fX6l7?!:/0ku=V zM]DK_@7 {ʖ:AgA(%i=NyD-F댕ׅ:bAr rdAVRX/Ygb+YKT̯nm}'cLma{-<_;G>鬘7RvJ q+RR 6τʼ6+if6צmx*k}Eq:OerV{H펠B3 :ꅼʒWX%SM+rͷF9YZÏ*E ߴz+FTѺUZ폝T9.L)Mf =!b7O%a'*-T-R&C ރxR*l>]n 5wYkPT:sd [cfyz؝ٟ`>Z|xÑJ@ h$$EC<Ӫ-j-|E¦¤ƾ"WeE-X $8HJV\rxKv͹}>%34iEMkM4]}b P.0#5Xѭ?XLqM+qgu᠟5,b$Yn1-ܓQ-4h߼.g!V5}jo\[*nlUc#+V{$k<4VzɦƤNnR>7G s՚yf_XѧLLk_i/ߐrw|2[7È%rq{mJfK*;J~buS+)6 |79K<d+)W=kLodnеǂ}-$mUdav|R]!QHW=V쉩Vb%jLyDdodNo*oM yP ,_HU2'D”eH sx~k+x˝6_knHvZ,\ΫzMa+H6(V"pY)bG2<`![!dAjR&hp\Ә>rgv>z>+Fȋ) _*c_v5.[/ {3Ȗ$Auǟo%0_ZgzA֙^3\h`vZAts:lY+0sRbV(+24<mžRQ3XTlΕU\jә!0#-˗&j59K; ɎK2rMFc>w|2ĶL.+fdاF)|}E4[ RIәsORhh|lQȵ)Wm.6"ї5P.k/>w\t-"B>0 tj8VQwpe ZOYmJ*ѮKr#?ي]-B }<4C{hm+x4G/V>Fsy[1goDX(3>ο]mKL /1$;Ds HZ،8Q ga }%`0vm_y pϝا\Vʈ$vѾOgEnca}Yl wWP*>u'(Jz߮i}ݼLӊKQ7g7WÅO*\ɗJr@4pQ:l+V]zs,;Ža+TpE2i +X'Y*C |#,nwжb)G$'C(Gw)&A,(&ĩ%Uш&DM-P"_QgFxWKHHZp2͋mWD hePBrnWe>ٹV$R .N$>XVhc+F?<@, g<$9I &UX~٢j,O6NS2CɲHfpR_Ty ]pFp4+&H.La=59<4y(6Jl14SlxP݂3VڰGU ypi0[Shrq@?JIdEd\I+gnاh^pM WmqQq[N%XgD2f4Ty` 6N&J=52|;"nb70SP{n8+-W6GfWSĸ{4Rpyl}<5V2lXL`BN #{ɓcSk98ڊ=I.YO2_T]~=բ3AH6(.~ױNNB{J3A?2yW7[=%oZѷpI+=}EuUߴ2zLjxv3iC2uk.H**',ˤ_\\-X&^^3^Ųam ھz;3?G8g*W&SqζtjyؘlgH5nCPm<2'LVt%tp<{ E5NgcŶ~]A+@p$R5B U#8^+\'BT^^:F(qvv2[CJmJj׫WXIX><[1Oce'k '63LOSDAcN߱CosbzV+5r&QmEFHV*I(Vl+#ܜ2)o\Չا^mo+]4V!3񾝒+S&xl^qʯЂ}aҴ̨J>S2B2_8\/z40}%s@w; 9oU. VQ FdzO lKbh>wʛGˣt O%:V渓.K/jU@xc+CF$Ti>Wvl)9c)X$js-37/|16C2 q2 ~ʬ~UaQ-ڌYTW{sM$ݭNLmYw3d34_h?3oاHﶠAY1(WdyЖ=WLMǧ{dzlE@6JI>w=}e$w1/#MW,.vbݞy[+k(_͊A[3C~DdoólLCX;. .W~jS40= ۏM B9nҦ]rH.A<h\H cA+JY @yB`~k 'eb"12W-_i@labI7L%$i[o߳Uw2`EI969A-V:CƄ^Ӕ,›q+!y^6/gFA9ʼWG qƀ*.DVS1Q صAR0wH+Ow9m+OJ{أ>2[/M쳕:ӹN[a&&emжR/-؞Qr^ԣj.0ZTYö(j c[ll*A f04RM2$/ZLc̝Tܞ1N-r8 c_1xeGSˎJ2G*FK9+Ern'_y8j TovYi OZv>VvDk͊n譭اAqXa^]5 S9 )=f2fB1s W#s;Ry՘!vZAm Vn 92J=VU"fiӫ}2W *Υ7lR-s,k|NΛ;f+L$rڃgAbXiEnސ}J L7=ﱒJ]aN<ܕX(W5#&9}ΥMhXt.d\b-O2S'Q,-# Jl!4{]h+1W2I+teFL)&XƵf[v\+ mec\ lDaDIn;"n;V# '3AbR8khs6w{/+V'kW]}L C,1ھ"j=A &[>PʋCih=^F W%Tv4d\=R iL ;w1I3PA9u%  i KB*@$yj?$KvWQ%֠b:] VD/p-,݉$\tÌ|JXV?l).-ݩ<oeR'@?|Oo1Dԏ!n֖mMTz&#U8JG=e3Po'gk_WrRcdbe"R^DK u4C%kyu /N[Ē4>d*P;N!.һcdܤkwk'/WZFeqwnL#-NQXl+lyl*і.Aq*(pdW-O(#}rl*<'pn2 22aЂ<0X S<1,L2tU\G+hX>İ'|1«>F_M)ɫrm8mvҋ_jX>#=9giăue?R8 £t]rk.OadOUfaBx9~HQ-WWLGn+D;#eKIL 62jK-%p!cEE"քvSTDx( %lll^?>x3ԭG#J<< Õn!#kr_99ZZ5TW5.GBx՗_W[j܃d`͇_^ޛIj&`a[^c78e#-'q$bbJ&W r$g9S0e:R--9#/a#δkv ll׈>3w#M|D'%kWsQ&Z&HmamOc>Eaa#pr G!.j`)vq.GDH # kxDg\ "I-Xk<Y,VZ+o!H8'C,"-ZX7D9vi:>_׼u*wË}IgpI#Y&M—1zLv}/93oP@Eb9^ twĢ=TNkӄ,=A7;JE$c{ޜ'Nldv UX"zv輼^1R+ O9#c@(&5z%ΌN s&'xhd_Ey[|ƒDi2 {f'5T3fgfUMɣH466xKq~\neD+BS}eUƘxoffp3L0;`2i>=5 7Y;I&vJ)i|aDbͶ1[I9o܃cŦ7*'G12ȝj1Rp%5&6qVCkL"w8ژ\Q1Iqb_lj/L {T]8!2[Lvko*7ⳑ'HBv RD7fqW@/Y?H՞:0ٯEHGv^'m7DAjx!+/ֺ`eI~62(;x=D\A(zLd=Ũ>|, aC%1![ˢk0 nW d""ds^F8.\ҘȠ"\5D&OALꁈ#"i(R9X ^t<]:mMN !g.l77~ dض  VImMHsT W _A~EoFmso}J<@ ){/G9 $I[̹" SM2c$q)A뀐~LgG^q$փ#S5 >e%9vFY{9>+o6B0w|0^*!lV&B=KHJ8zA¡\spԜ_1Cg#.σN0]N\ }ȘJ%^CX!FpذKQv}N0Bpи/9anE!eӖyW[F./5;.og^}F /t!P66ߥ9Ԃ(z>ř4)űjHqڟK}^ 'QMeHc"ABHq"^n$qcՍ$JocsBn"x .k=Qj=3UGx #+x YA0퓝Ge >nfo)FFG̋!Ke^9cR7"E 96g2H󭰖A=t=t?&$iMd7Bi}DMd,M(IeBxUw ;cβ@7S.yimAF"YiI;ЙIC 'o7:܂^KR#fI6=TBxo a@%?dJm{I6i}-sxKYUfp s) d__G"mrϾQ󄍔s@'}v|!'(H/9=Dھ-'+p'h2 ݑi仏3d<=PsMW76M u$e)*Y#Mn:"@ R4** * se~" g#ąZV3"Q4ܜnhCjwG__Svkj^1o7fZn6${ J?p 3 Ψ|,G *zZc(`@u"bqCձfom>##/90M\.+|U BM7DU6&F֝ $⃯ w=QX? j=؈w/4.tĶ}@1ȍykF(HPRRF$|^J Y7V_65?:y['҈+?.q<˵[tФ)*ERNuY* kBؚ,7Ȫsftbdupqb|AoB/@FDPb@j46=p&N/ZQ:ۇT|~!g^V+G4jOǤ!ef/^{6 2ߛ v6yhڊЪ5 l\ESB0X86X7v"t9C^(̑4BD](.{ NenR}AsM7Xm;}փdoͳ*R?439(۵).C wG薤't;;6Fԡ3z6ˣZbPF)UTfJԧm?\Фq/ ·U?Djw]!Ϧߕdod΂Go5.cx:HL4dل5S&^2H5a}_;팖BxUK47?H"qx}"DkϴMWsRpơ(})4RL+cWvPO~w++#8xKy٠h0J\Dm 8mb,Qz/% rCa6G/ͥ"|3%"pL%=V$?)s.Eo;WF~,W톽o*#_'|Qr[B[|a]G$(Hb8ֆGS#A#s엷&ka%D=I C6|^pt({x?2ˆʞY #^n3R!CDŽ2$1ciof +Qv$Qvݱl:<28)mf"duyQ=GFF _6X%!1@cf3vsDu;3“ PL=!uĄ18݈ ѾXԼQ*™J,|'2|.8ˆ 0-YDJۿH\]~A^p o"8 v^GGT#r/55 UVab/> 1>T|Bc6ĘMGy&(.p/6=c@k@CK&|EHT~'%˃%Ph@ǃ9MsAybgatP}Ip3p&*h %nm+倿@BOqiM sz[fu+d;d6< |d dIDB*%vf מl[5$n&C8@VV`~5.\FyoRRO7f1#UJܠm.~(ې, PgbljiE2png 8^љ&!՚ީ< 2OYNmĂϜϟT:?;7RQ֤ջT 駻 @ FZ)jB,C$` ;G@O^Ӿ>ӡ*?&w,qq3p 㳹j{ ET͜`nSؘVl E4J3 >bccn݄_ I>L-Ʌ2(czEiOJґ!A2F0VIxѡBL #s8WՁg`<1׆oB?RfE:wl=@-y]ق , #BRܴ,k jߐ;LEH ono;TV9In6E1礠6M6@s%EQ@q;R73^a C0(aqs+VI $ǘ&W:Vxa=Ǯ"E@{^s<JύydK;! Bcfd\wzAѤ$o60ũs!yR,s+IJl76yxU&z$GkήF ̱bd3Eb\Qz>W63ar]H5.nlV'B`]x J 73\E3uatkTyWb@09 ؞.R;",_!e3Yb63S. q JFh>b>pK'@I6dJGvlJ fqp}s{={Um(qp'~"T|9&cfĻoHyeDoJ+OE:xtznPEI!@ @vG$Zr^>Uw0w o{ۺ>0-oBz|&Nk7Ah*yN_6񸈩`̶7L{Q^=02j ᒜ9ǧ/+2aӐ*w12Y]#e/o!i~NH|FDF}\?㸪Kem;"fN(a]~!š?FG+M/^a&L}FV!`_Gp XdtKBJPnY] ֈzkv5^"V!*8^͊7RT(+8'!Oυהƌ c2BXl"exd sfяFxcSBdZgbys0e2pS1߲$m>F."5SlQ ѓ㈒g{t.<3{z#A:*KBN<&l 5Kc]>ǂpm8IAu#6B5n#H!}9F=&?ul&H fq42ʄ_Eާ ljY Xpɹjza0p ;cH1ُ}΂E!CE A+T}=G$VfT-?շZ\!N"!s*Μ#`u9[sO1#IOSU[Fj c$U^nxZt >3"* v*bl.WX,"8BmSD+ƱH5G1dL:qJjtཁJ/%c,C쯄2 _9̾a@wCvkz?-:MiW>|Dg{'r!PQ$Z?8cJrEM6!~_qK¾4*\z7%@p~qf6ŽzJ)1Nd#Hx7RU\[e8\և<܍T4T FkQ|glv]lS\Hk,>VO`'hs99܊5cJ/ 9ו,ߡK-k?z[$ltL$XbZ56fPWD_o:QqIcGk#ү7k  ) oEċi`,CKrsE_=oĔtc !}aRzĞ0Lw )OE1ק=H0-3.k|lސAyW7IvSK'8D{szrl<_<~X1"Giљaq/-%!jES=qvK DfPŷ8H_ hm|P vlO!x l!bޯeM8xP5Iihً*Une.0:7||2gPߴM0 N0R&!f%5raVJH+Ǔ349ŸK5gJYܼ*LFKY01]"-5c@ҌqE~??بE}2Rj-?G]֍KNdv5R>C.m:Z2`i1Y,1OHN«`&%/!{K|/hUhDa=Pc Fr%ñ)f)aw4`RPR~P8tN0R8A*LWWYh+3g·j4zeYA #׊֌aVXeXQ" ,bsH!55]`wb(ϲHd[wuz$gr$,l`4@rͻktÁB++<6s< 5ß}#$nq|J}2#{Ω,PxWEj҃,'rT"*@i8ެ7 b)AJJDD7WٿaA|CWQi 6y!H<>7o0$1Pd0`K]Kfoyn*gr[^1,#>g^۱ ;'1rTfaa(`G G@PbU#wM(͙FdE}aXvg^#T6w d2Kdz)jlLf{C3vvl?QD5>^[6OFꮟ ӝR>>rKyFj1*y&|ߜ q*X6rۃ?C/(}K3;:"f0]H<`\F "\jV XA0J S#69G+| Gyr^=DtZ~{(A/G]b317gWR#cmO49%Go+kD'E&~a2H%:!Oj?aD1Rb{zGն-{!/>̪)"HS*HS*6S)ۘlFwR܉3d,1 ] 4FBmSqi-˽ZO3HFB %])RX8H+VPH!Q6 (=$n A Y;}>U'mWgGv^vЇ̓ Oi-Z?gZR<7zunQt^"jErBo͗MB>+j8K(^k 7I0f_$Tҳ~)JijZ@R>J4!e Dxfi'4 !:3f?9sFI&-.t;c|?|÷. sD7ۣ|7mH[sH/jyNܦ򅛅-ijBԮq(Q('Duk6֎fM~ ^}(aA { a2@5 JdEW 6Y&8DK:&.cFT`G;y74"9XSRuu<So!لbL*3<Z,PhC!#e(46.Cޓpezo!<t/Œ渶{FfJsl*K*"|-:kTdX#~.G}97c0vzE2(q,$y%C/#,tTP̯ecBM,V]eJ#d,7({ʑ(Z;NOhv&ҁH|U=T,|U}ѵ %r]c4URDp=тȹ=`l=\lOkBVi2*#d?)QbtLp\C~<0kFdEQ9!Oע0-vΦoa|60bWvL(Kf| )T*ZH=Vr"ˌrقHymjpȨ8F#p+8Ԅ/tw<Ck#FsH+* O)WpfB"B_02i"UP\on]$} F›/k.HiĎXpbo9yR;u XDěI~U@hFS6x l.ɛlFg *ϭhF?~fn3FDsuk5%Z 4Z ɸUAA>$?%`38#A@E o:5E"ΩFJjQӍE;}.VX:a?0;t.UiO1fS,\~s0qQ1ՓH j*QS@" Űy=WMxxQGBoBf!щŨduhyMNpb&/OԱZ3DxՇPqȂ Պ;%hMN!O;;Ci<^67$@VָG"7кM/b%y8ݡhb3}QW9؅*GS W"\ㆲ~.dZX +!ޢ+3kDC?&`4k(OZbcX N\^*"xE'|gH:(ё=iJn_v7v?)K(ֻʢ2d{n29 ]Ov!L2"gl /G/W0  "љ}K[n je6 AɅsOR9ӚFdl*pA1k#ajh)ƙҖU O"(C (lpN.D!`^[Cӣ}"\?fhB0H[>"!?4'E.x +HP^\&(Oԟj][TWNJS18'BpUH53;ؤ L`x6Gqu& [VHߞ:~8d"`-σ?1«RDz}X^>-ulI%#3w!y?ʿ nrY';&>| ޫ9w0GH(eL7cpe,d[!=dt0s~qUI{~NDn+vH1id" >,k"dNHqfT#ORQf "!( U{ѫbRaƷ} tgӦpIB#7}dW!%ٕUu85o^y,E=hϾ ),(39R&`z D:z\%i.U]|9{އJP4˷|mG%6ˤ3J`[&jp̛:=Z|уmr-x񮕧h O96l:%Ie9ߏ+ Y>YPW%iS¯HP;=n0#X 6L\zuJAvˆ^oݲ_yĨ|AfTz(6`s26"+5tϭ(8t Q|4#Eм".B\5}ɅߤA c(A+8H>y_xR*ǂ +8|o"3!|2i:G@@P-KLZJҡF܅ {򢴒JzkTfm%f:hS}et6();3y_GPbR &@Mׅ[(!>2 bNCSC!ߞvCk4e_է\|mbw;V2!|LC<^s;![wsFjݱ۳lC۱8bf?㶇{q:z=b 4\V$TSgl@lr >yƝ%ClbyHܽvƧH<"v{yu.MiR:Ad[H0ҭs YŒ1xbP, 9X?Ǜr ;Hq&cw$\zE\W.;nh-6R҇[(Tw Y-mdc2!?JRU^ ޜqHȋ3R,Ě~DxHb]+߅m; *msl8]=CntA y;7f_"`2 2 UMˎg&1~Mdh2; >~9K:>4 @. քq\c7Bˆ'z )5bT±<b7D)j^=TL(cE^k([* +-O+|Yp@O ﺼD?Њ`5$ņ%! xH%E U=c@P_ߚoAr?P3=댐 ƞQm<%U/b J+{jb9hjlW3--n#MbCpe}ް"ds HPy#.k)b¸UP̈*Hʕ޾_xKJCO `SF72)pQJ0+wFEjAd\蔱9-Ţ 2˚@+Lg}'iЍCT몽Fܺ|:W#;5}x靹eF0ηx%vٿO_ƖTO~3{j#vVY$K}dPl~X*]d&-,yQ]ռo@ D\˹#g7xEj+>kKM7!~Q^P{.:8 )} hv}q)W{q9Y(3|EaP|[s6όG -nIoFi = KSÉ-nfx}gg.H:_SWOwRK}uw%):ȯY6կFKLaV:0'MVR׈_x('xd1ת/^0?M+DXk Ux&XVwBYDgr^Ll*en3S E[3|>?[\D!*)J_AƝ:}-f3[Q:&7bƈ_>\gCk"'h,"C'p2§xQy\1DȀw >sr1ۑ-Yrahϖ C+'0 `atB`K=5#6v$30 񫕇ү+bD7s7"/PX)A <N)Bʴ1bV{>FTL(ڸQ_"[ JhPsQ&#*Z_A[>e:dIiBSFzmdU3nk?bn AV YOy! &-C;(@xVW4Cf 56/#b䠜dbɥ,N_z"Z8&n{`y&[,h#Eҗ@B@cwJ0bI'čt~but 7NϽ"AtB'LM^`&0ୡ'BiX#rRU=xSMsljgwPV#$svϻѶzM!=n%% )‰.k$i9!n"˘j`\C`\s[VFITti9&J% ;W, w%)J$?D]e,2Kkw<`"B c!*kyb 9K9# W_OT~ p~96.'6p026 1h>%)wI=r276,P Uɢ@?6E]Zf 7t!ג4 `Ӌi p/'Nuͣ\#e38mFض#‰M^BBua >9קU'zQ~)1IBxURghO~)[جS[( !>).`l<.fʔg!>D1Ț׉OY##8}%j yݸw2jVfvYBez>A>lŐ,rڊ)Y7aWRljv(5aއ`^{DB[i&$w=9*IG)#ߥH1KP=n4SᢑK툽aT@2eDpUFn-rR$g }]F($r^F*s`0aJ`xGI*Fεv(RVW$iMA 9M*cx,)_#[1!t^CSNX\t#]F8B 5)0z+d 0}„DK/'rdJ',tӃ[ׄa#H knJ+Ij>+ (ga%Y@O ٯ$DT]JqkqZCajzҮ @o)43E^BnFStƤ,?{xa9>e{/z񨌎MQ[g'}oIn6襁<@"m &AeRIN^(3{);2Rhz=ɳW}=X@ 響`r0%Fdggfj({ j4(kGdWB @h)EQh.'qBͮ&o!\@? ALHw[NtɈ5 FV5J[ļwdG3G=M 9>R)~ˊ4ay#Q)Pʷv:햭D":b=b݉1?Kh7?%Dcַjw#B8F-ފ+՟IVUlt$%r=g4'wmFiY@&-CʥJzuoSw@ȋ2ׅ< } #,<ˆf9ӄlYD_|iB:(X%/^/FB4dB'F%ې?Y#p=3: UXs;H{.sV؟"P>-_iwFu-D3x"ќv .9_Wla|"nX%.,ZC_ (XiqG^02i]2!«`5 ]DF!`Z%#zs9d0u|{ %b2|2!~:z](ӔRLH$K2["<|mb%ckwAbj>&UKdc(G 3aK9(|op>[-J o.[oȭZvNPa#zPEz13t .#^ߎ&"Or"?"2a? e'М9 f[MB"$橻Ͳ^pLvZDLD:™ , 7f4hG)aϝ|("*6)PVAOCA -xD<مtT~C;@"UP/uMe_ez"lRUϖ8W "Lߎ6mւ1Ӈ> nlJG/twP1s*2!$ 1)}D.-#>YmK R÷}2P6)n#|UUPHzx@̍?(SFJA++F3ی2Jװː0:"\!!Br$OdirK9{ (IDa} ŢU߾R(RCt?#VZmn}=b0|$9r8% ;4ᓔG XV>춰<|ZWAǰr#7e r'h'EweBq<P() k'293 Y7ssQ!@lI$䔘'^۾X)͇"틑pUwZFxAGΖ(FHp:ޜbl+d]\Ɉt%|c-r\fe@ u&:ډHfd=p:,/*%H9MblCw P=gWqpEb۔-@!)$ǽDڥF2f=[p>6@ UO( dH\6v|@ dt x 'UhZٷcS=3ᢓx oN$ĦSsN 8^| iW2tc\-;|9x>ca`Ϗ5ii@b)t qXa.qXDpH1f@|Tl1(1r8n1h5xQGdV+{;花HRJ.[_2^+A 3?9P ݒjA/'"~K+9Qw,_en\7JHb(=1ʶ'4T0М8ѝDȼФʶ6;M1ww{Aꊇ< LH}+n5BG4Q>x']#zqBNIuH )EͲmǒ7\d"W`*!a۔ '_Q< 0Y6B9aNVjYCF5%&r\SP7-#( qvsn\u`a x: Z vze\an j421~.=^#(c >2|d{i.Mcع[5k]ɰe0oB*~l>(?w%9S AM-<|LgQ47J~ۿN{#wmw%JL*/"@ZiuS k%2 M UxBF~nF7wc(]y!d{ŰyM[< Vv`@􀼿g͵3׎M47 $N!nGzO5"^L5tJ:Rvm/E9 ' o[8<~HB]$W1,1Яq=)guXXt*WA[hiFlX\ 2_rzR ; *&N7IF>J2"u&Ҹ_.h?;=cN,j0ɒ7!X/cU xE (E*.0Xo>%.B_(GW9nOnq@aâJȺ#yFnlأV4A)d?ŊCۺC8TS9FiI'DE7>Czv#Z+ h]`{($xOTmX& 6ݩWFJ۠]7Yr[u}t"vYL6ECT2I фXȺF><o0DYM?;|4hvxsi<]L6g59@^#s^VKD==EVRG]$2r|!+sD_nBV_9ӔUȴT( G!LYM@e)Yr6ig#ن9J{.ܖ_T`YO  5Kh8 K2tRs 冭07,v"QaAn^d}F ybtt1« my/>2fLY?k$!5lڹ=UmnoJhdj|B--#㉑r!C(`>8nɞ4«2EC||M׹Q6R=t *gnXcWKۑ .Rחr3z|ʻ[&1礋H1n!8ݒOפ*F -D 6Uyae mbv78Pb9 08;-@dSS=XY{La[bfmze\lA.3cb\0K+Hߴ[$S-(~t2Aaޡm~D1-8)=& j! 3B u>v?iI- AǑSsMB0>#nT#mG8O>~:َB'ad,p0Q N)\윉'B֨qƩzT cZZ@Ie ;c\0w}nϝyk9|Z.H?9X} bܛXA^B 쉸'Mg3NJ[>%8>Y|ju B"$mr ̴""ܞ JGj@&,tOMBhPISs{K!T>ci-48x]@}axilS rR, #$&|7I@H= yiTڮX6+iԏ*̤7#M-ڜ"T覲=wR@kQAo"V ϱqܡaЩ5d"R7! mT"nHccVppAs,#:9)7toǛqI}4 +-fK&sy_ExF:F<~!|7#>Oڮa7#WO{F6# mm&qh3)6ȿ.e(v-#LeB !Sݱi3yV2k=zI]Dxa'vO 4=TWY?'㹊}cJAGzJ U(ƫ98q݋~>p/e!z6T$||wr*| 5Sedr #JF+H]2Ĺ=zM@g ߲)RU<'g }mbD5AB o18Z !O=F, Z!DxUx~W-V!m/H2ߵf7[>a9sf^ Yqd%b2퓳ֺ$n"u ;ePf.xv3-;!ʔ ́RNdzI[KFfFxA/3#J8#Y}?D!h [:o,qPMzKhѰV~"h ؃92\$~[)(~{ )W["B!>BXgS.CB0Y14E{u{&敆sTkR!Rnk$@|48\ O>Y1DLdΕr\\|!x ʕ~wV׬H1+_nc nQ+pD!r7aË}r֌'Mf[|Ӟv_)<.!|~{Xued_ĽkiN8? 噪jnuDʃ cO%A,k63DN/YY H!L3:s! qF}Fkv 'gw- W!ð0cӅӰP|^zH߇#"1Myb_\nz#Qձ{,!X%uUQ,7&(ZkyNmu0 >넔p#sx"N\ IE_wvI=KǮF*`d,?%r Z1Ц rˡ *q[]@sl@; "&FI??7UuE'47#œ]A_]bn _iX@[RӒmRs`$yM'.CA[;Oh5dȥ w=C%m"*_'H>!KzACvɻOuFrIQuV:0Г V ֱ^gr#Z֏ILO+L()K5«O{1 kܖK8J܆DFe=@hg8 SsL4mcz BKֿbʂ$öIvse KSx\|t3a!ƒ$t)Ⱥv+l*b1u 氧)Jrrixr!+V gd>|B;=)}y^M KX )] [Umc@|dg$$Z86 @NX>uxFʰ1Nhw((@XH@P$,tBb6DryČ-%JC_GG3^X9|Lo-T$j@fLJO??Y= ɴItʫFᜪl"i $lM&Iuel~ul.$lֳ@7P"<Ѕ0Ç0Lt9ga"i0syWYOth*>1BHyƙl ȝ@C*Nݿ2whF|`Gה4BH8gx,?$aRq׊!7>5\B;zxa'[F*Rxh 爛"|_OALru/<¯% }1F"'QP"B\MD+Ɵ`0̱H!\(lc3ϾU83/5BX N4R ӈl!"\"@D[q-\.>rr ?# PTv3Pa'H7Q)`Y]QD%&[1ȺFNiU+qB|2R*17n;0LJ R쐔 ,_i%l"f7O$ Ff+ h L&{h)AIuihЕONyW~_&yx(dWSBs;#/l>K,Gn#M}M|Uۆ>"!F(O`^{ 2 anr02784،xG12BL̈nT";VM ЂY|N]ylKi#EjA?5O'H=K7 $D5OYFQg ,+wn*v4L-IIUE&2U`2%Rrc'K]ȇp>Qs 9:~hCǘho)$9Í+W)U@E[Dy&6BeSEUyd٥UGs!,B]{𻂠J&~^){+">Jܶ=sR+`4*(3άC#ua(F,$u* k'pi`7Pv]2 kuM79j3<1 d; j007Ȥ0=]LP#͋~΀Fp.sHKRj*x(?Ml#vtoJf)7Ff=kCD[ˉp@=A5~yC^K|="bM:HC2Jg.aѳA.!!H!p)HioBKg$k! F('q2*fv42XT#=k8a{UKc\pa6p#-U#q]hDvD-Ϊ bq}BBiIo;r\sxʋ|-DhCB2M" O bvYa[9.F!\;F[%#_9,w$q%gJH Y quW~ 2v$3G#,T7ח:f/:y3[c6 c a" q屽2|$hS.sW65Cm 8vԾw\\_ JiX,͗^чט `!7-ݯF@Qx>QQ~I?ƒD~|4ʌe KRS glTe.C)l\!*2"$ԯkEsP>t&)-Jsrp-)jdfOf 6 2aUՑE~{!b)yvyt4^]gpmo !d)!=7%'#ŪyU_D+JyHr)囑IP7cK{S&Ū~+nRB0ب.EHχ h"uV4%tpZI˒L*O2)OʳDVvcEaǦ{N˅ug+c9aBSUVe'UA9vRNHtɒ Z:^kЭy~LHяM  P!UDØ&! ̯" scWQTGh>wDԣc݌5<8u ғB=;B\ @!NQQ$p!wm` .6J1& 1ABaJϮ. 6dm+Uɔō'SEpF xO^Mόn{҂Ocʁ)YWJ{NUbU҅Sh{ɋ @G=χ4?s,5+!>m]l&*g*O^6ٝ񢩻C/BvHiӡk;nСK F\d|f+;cYg;=?)SQ2Y%\#? 1ocCe#AL\hX"$Vwӿ'5DnՍ|"g3N"ԮF°'/ye#Xg q +OB&M꺐]I/b[et}ol$nf-/r:df⅔1Lr$)qD_Ƭ69R=HhM6l n?tj2nctz;o}?`Sd/f$dz*\uΞ|dÀOAgf.tSҎwNmFqrr ?oG!BFՙ*$g;J>"F.Ll]\dX>  ׬6 &[e<wFtfOc^f(D"a+E쟂<iР*n)5٥(S/!&GsC1"yCcʲ'A W~p08-Syڨp]%/對-]& )uR[ɮDps\76.>@ů- ZzN̊5D=b-0"9o'q%EƂe )Vv|2 j5H[[E}RGó.GwA\=t zΉxMHO 2G d*4ٷ*xaMHBJ0٠O23vO,ٻ}/b2=sކr& HVVE!{lQW\VLUޭbq=+]qΑiS@,izBdX3vMY@RhXm3:Y<`#Z!:\H~ ۍ'goBp's Z jS;Z0݀Su~\O1l%TKSP e [+S}6n2R Ի$ovR#b Rq`<*D<.0nZ+= lpϱ2.=Iϵ:  NBt]T9I8eK41ݔ/+%IR 1{1Uze(qg7 #5OAڂ!1zp혾}6DNzh͚ڍ91'EHjĸdU&ơ4<̗k0gZRF4ҝ)\5ᵲ/"T)3*s*,(\X*%CG: )`a&^Y: R!xBNrx焸KZjFWHGf>VA}Ⱦ쨺K2NDѺ|"tyvڒ17 7B5#M"`&DxLL_ #sǶ.N\L.d`r E,Js T"R2lt<"|QFFYD5/]}`e_C݌@so"1(g;'>*iF{^[#Rf}; -FH~-ӷ6!}DʼC{v7G5!aTGW/by1Tj=Ȯj猓@G6BV/c0qJ΅ krnɹ/_ftȈH;aY872X j,.?.{p5-Eߥv{W ^}^]/ԍQu@PگƉ1HyHHJEr B8k;cŨD1! _TCH\ڛBo&2WF:豓${Wq!|Yxlw$d7)[d'aЙ``[DM;HEGNZz6aqr$OX}:~࢓BnX"*MGQ-ĮbH,b=19 G-s@" ߔ"gRD/= e#e0S uǢYww:H oYj3!kW}p4y'",73('*eRֺE!.l =|bbCW!'%c(~'|S%dDEd15R%W!()٣h,KwJ^f?DF5 #yeW0gW}>K.nXnt ]RgM)dJS "w-U_wO^j!Lʉ]+]⯰P&OAR3[Rb>hH@0,b20HM!#y!Ϩ< Y6R@7NS1ߙ|tf2K]t{w̧f1)SyhFu$9>WrΌ3%VJ: ? 91e/2]DpbB4Jp)Zq檥 O\&|N!ؐZK< 4|^߫e|Z*>ԲhPGE']qj4IRMOQM$?ƵgWeP`g!7$ U\6ڐ48-6|b/36.> xn)[9~^}ݑl 8ؐCxʸ\lɻR<7BšzՍ}9yk˄it}9$d1I"Uvf676?ՈHثhyQ*B"\DK$9K̆,2D7y$I^&C<9LB{>ܾBx؟DY)}$&ᑿF^up>Mv!as7fӋF׶ABRsnqd"s" צU˧8n 0BJ8Ow3RUկ[QsrW;9m Y7FCZ4Hf@qcz 3ExR; =+ 3+ضiTyyDxUޓ% a7+T]52WQRf?9c&*{]FƵ8Bf2 ^_5/xS]2^1&/L"jhWI.\#gRbآ*>A !0l?TU'=c ];={s%/2X[0rmdq?ʙLx4!ZˑO])wY(iŧF@G?t "*O IBpFpb#~Ӑ7N؞sLJ3xDWdAE+gLYG;-~HR>^H-c37tBRx}OJ 2«h4fa_N acǬKeF|:υF]2'7mN( a]ַ%%ZUY:w e;2M.ˠ U^8٦&,+JCLU77Jȹ9qMQhz G(,bc0{wx}i"Hȳ`Z b d~ ĬRx<! nэpBnmӄ& l83QҰH>qOd(5wrfz*YN@-|w#{3NڈSZY6 Hu">f"%15iw$<6lbcG%|W,dڟ( Jz`tq`Q<dHdH5Ys@†W@W=WO)Ov*411HE,BxIΗ7ɦVv0tʿ\ä%[i0uFGMnh஥/:/I`I"y]B"R3%^K_Fs[I~fjYc0 م[ ŸA'xV=mOA=0KLߨd$ K5[(\) ?ۍ4S) M ˾ B< vϖoCe_aÃQwz`- R@z0+E2I!01' q#.: (fڢM!|R&XO7`d67OVD[f1+CȘC5Vߪ-3ϝs|:*a+|w0)Q ] ihi[!_&4آcN9b"D.sTj>z8^r>U!4.8?qwȁyilA[Fj<9?U$5`z,2Rs8( D1(dŮ FJB4\E &^iXJ5\N 3$^.G70ֈUӦcIV+Q\gnJ[X2&s]񼍁cU}K{t$f>cH %;dѳGx)&EMtfgkV Fd^}]s ?!ZQ RYRE'" y 'BJ9v! wej]h$d|>GE0ivrۈ F#'Dk?«^LD6wYHWE;7B*])m$76tejpr9 58P NNi>,DpI_Ə"T6=3t'1Gգ f$"8@oaIfI ˢ ED\eYh/u6j$7%+jxb*$ڝي7$)(FT9!DX !>0o!l 6nTt|q~8OcP g81;A32D+=R S/)z7LyZ3~řGzbޚιydLH|&Woޝsld{M- HPwcg#0]cEqaW/;%(܁l/ J Jc8b"`?2leU`O1.ոSDS0ƹ Lxl= A.ai(FC$4aӧE׍n_Xi,nQaSߦ)e݈*^F[l~9=xa$"w54 #«p*k&H WO;[ b)yۨAlo!YFV1z$r(Fbɺe$kbR#ELJ*cN? ^,)PI}rXi(, (PܙL`~Dq7X"vF|6PΥDTf?v[vT.:X< C}--ِ){֋o/u"l*="ZeEuO B̏0r9J 3)Eo=,^zŐEDX9`G?!o _`-O N-EH/-yw`ru`n^i`" L=Wdl*7\Mb}XJe:2lvt>6o'`E\m_{Gڊ7޼yxi'ιҎb\ e2Z0Jz8d"{JWs`uy8!¯=v%ja\zKʝ.U$O^Ud_fRv=/)N4hZ3ÝmP$lFsSQUFZd2x&?iUsi 4 c$(qpsSV9$zCt^ !-Z*=)fwfSQCd=IR|w0McTc]}Ja9@ \ic̖cDퟋTr,{2v3PWX̏,T8 aEBXG"wgŋlf(07[""QBtrt+o2 n1𪠷'E ߝu,{cJ}RPBҙ隖8) G&$hɟmiٹu9Ӕ5F(l#/)bN%23pu)!`фYHinBq1"m= " 7 6]|`)(s18f=NOm?F%n S~ h3E;7l ~Z.VN=R ,dCE yOUKf@&{KapffhI_K$r/hq;"`lo?uBK^KʹeMཛODžNdx<,}<ag9lN\\j.AP~RY-u&"|)zZ&! N$F5^t@U/wbMjh,t0 h\V4lO&"ry6je[F.@BxPbɶWگ3N3 ;O;OdC lZ#!]q12cC:wiFLaeBz=h DhOzm%#nj2}Hm[F![$V0%Ou1hz0E}m08"8R3R "O dͣօFpRi,{Vq<̗_kS#?cE|E% ure=_2RK򱞎6X -E0f 0fQQ-r"mϽd ㌎qLPſ6 J6МuHrY و2 ]" yzCĻETe?#! +7<:Y-f8ŨW1 V0e5@\GH_g>ѱ4"1Dv0@ݏ3?Fh>i4"uB{(Ũ^lp3 2@mAͺ|#˵!dHujryT+ߕ'=G:!>5+Bw&wg7?L9.Cu/|` r.F(45_W#EkN ( {ǻ>#|U[k"/J |嘁ljF{'/"\nnh~3~_X1EiS6MKm(0Kaܹ 9<]HAeee<@RAWAI )7)̕akocd ;{Fpy1w1 _VIWc!*xwLwXnMN8R\㋉ EO fXg|[w۶"gW%3gƙr&ү+4=4[0~%'4=dg!)[`l# ZW\`ޟJ >1c ?f`ɬl-* ON9! çAG" ¨Dy 1"v-FO;i'NZG ꄙGZF\1}Nt(6-M!1,;M}5ZH O{I.d{0xf{?5\3_cmvWQHϛ3/ӍKpx^#fa*MFBOHf h&&gV!s iƸStvrN=Z# `ХT<¥ (J=5Pt; nBu; ð2 T$jYF+$*VOn*I7XG Kk%OBg+!H|=gYtϖX#|+_W/~>Qgi�ȭKy|tI~$$h$wfY5}rh6Xe}%5իu*<@Þ[0e t)H!fѳ f692I(*D[a"[?D)4ua6OQ-%ua?oVv_LrR)AkX>|&<_c&|D[IM}1\ӣt9#1R2}1c FH1vr^kW]6hۚ)birfy?|pqTtKzD2L;;8݃6j! /~hiy .l27k`9X hU&09t*/;^JB&Pv]@!׎<8TM ;dtيFs#X0‰A]B^{YFcQ <~T=\| >/7o`ڕ4tKnBPnl%iM!u+I nr;: MC|W',g^B _))syVA1C6?$5jY JWdѩ~ ^0X-9aPꢯwdpn͡,p= q |2]j pȟ9wa՝@ ~0 5cDna{,si;7K!<֘kCCR-@_yw6N pǀ OAs]-ijg{y:gL1`kޢ ng lw MYPW@i"hOh!mz^ cI}}h2a#f[Y9}/{p9#PxDjy>Nnxwdq2Rw.PXXo(Ͽ+Dh @},ēܛԽ922ÀDP>Qf%*#؜yL&Amj b9`ٺ7 wpD3]"1 mdX ٦ hn}ER䔅nYI#rt"*t5U.-_)%qp)N 2T(\TH Dl7A0j۴ǶDP3@RlAtOTtD֍,dӍ?v))D.o1x '$,*z`3.`#mŘ2 ?ut\% n&UꙂO9`ďc<>ʞH+}{lU&9Uh5W=!Ūz34xR]M2 J3-U3tSIfa u&ln)~K(ԈwCM':L2ڣ'#M2c->rҊ8w$U ԹLCyaC[Znl9t: G«N8ob2o:FfmO7BpUp;,(ŁJOi*| "V rش": S+yJKXDC/,ik/M\w OQY3!!nIL3dDMZj-&RC^'5Ljޑ@VZvs '8 g=7VK5 [5cwbl!I0C-Ѹڣ>/vZ5[jw (7ZfqS|e#C" m}uux| 8#70:sFY3vi1KdmB;p"5A(Nf>WM+& PLl@Q+;z&vhuM1{tD\F dNZ3t3cs_pu/1\o?!s⥩×dr N Q4Ү;R%jjR ɪ{ÔwSƊ20ӆz )'t<0ObU-sD6gu4e2"]/?ciUF$BxWB!*,p6J6=Q·`x 4]p[|;ko)IDxR3ʞ2@ ^:US*6@ܬJBکH[/HxV". 0N." p8-'ߪ*'-ݺ}s0KadaxJ3Q̶K4yx=tEl#/̽ՆN7~ İ1gv^zgn#My&l̄Qvs3yؤU(7Մ |VhP5Pι /F.+-g;]78 ɀڦ}Ȅri¹(~3 [bhw{jNy=4H4U*' BVؔ l."Q~~47(Ѱ*c*-Bm?7&; Z8A5yoۡFOQI-^*#Doa _LFڴ`d[[= lwV Y1hO ,ITQ>G\J!mܨ Ӡ&53ɧ{u\t/qD5rp9H.B0ps̗NKήC6y4T@|Oie Ym#\$@ѿtDc_sO9F39EF3ԫ7ɬohY͈_<: @+1#aH< w41C @-Ș\䍃Dz9v8pFvvOᘴ+"-hbl@M 8Gl808Pl4b!dD喅Lc3 WCC K̼pyt&ψ`n i)V xWi}$dkr]a^[=_ZT?!QBMŶD;̀h.)&"My=T5)'DVk5o(]-sc^m X["/ @X$RT NrSkB Z, 1-[b~y츗=YQ"I'+&OiX6l6g=f+xnsݛTgRֹqaSG2l_Yym\b'J6kD aPVM1t>J:U>2f^;/ͦtò_]s {64$d]Ґ!_ «A583`vUpXI%rAȖ NI 2LF_MVWRLMN& 9c F C98[4QYZ߬!fl-ݫ1!U>L35U4rje(qQaBl_c%n[h[ΞPmեٷ;S8Ldahtqf {%_uEBVܶw6Z(g akBe \ӷQ3,n߰LP Xk=rґ5k5s1[2x 3qDhH{|;*Zw$$Ps,Q;:_s)*6 _A8cč[pqDF ?M]:fڢZ+cᝏ2S>Z2`2 £]Ȯ&Y z7,"fAx%䎢2?G9m;B@y7‡Dxsiܲ8S9[h%$`Q fPPbloUǿGw %9N@x;;JNH]7RU² hDxD!/dO@7ܛY}5TM+7m0.Wٍ8RsrM8 7.Oq~PN?Ջj12mߌ:x!kYaXؑbE1K-=rH`y>Lx\Sk͝Jl !ZAƒy+_$̊ 1DA.څYx q= Т[\&ꦢ3Ke,BEAI |uSR޻'JK :E#[!Ki Цl¦u+HMAF[i{{hCO# 7"֋觘څhuzTWEOke8DxpҺ&O65O^VbQ M}9ܜf+WmxhdD\{zz.GdDkoNM9$* z=bMW,]L;y =gZF6)'9TDx Jq_(B,]i*>ǿ@X; 3d&kԢ`|*95e ^aUP,Is2ǀxUuX]o)uZFkơ=hi2z«f oY켄ԛѨF=xɆyE>\0cH+%&$Į/i%·8jK!>80HQ!8VRy) bBOȸ@&TX.WwYUh#Z>໴#P=^ )ᄷTx@c WR}MHVQ+k'8DwB%h|g>k.y-Pt %ny>c}!{O 78ZuÏi4Z3{|eӔPcIXXX&Oڍز-S 3"bzjL=MTf"fAM-!GId}ܨGt|]Ĝ`ϧ]XOQk(_ ǻbGx/O4R sEppjuDV#Lȕ ; !P0wCTP%%Ħ%r9NaîcR:l `kbn|Gݎ-9SK@x;(,7=Fg# ;NdSM@;y3RMg:sSBiMRzSI{-?#α=ѫW?mʔ2sfۤpZԜ[LTe-LM^4mgAʙ8uI6|}NǸ]5cW;<}ƾphOֿr,gr Tm¶wȩ&7]D{ˡQp-\1MD˸=k%~x Y8}XԭƝ6=~vJTɘ!v zZ8#}2/@:صnYE4]v@uLQǓb r"f]b E4B h6+'/z1  z,$EwQG !XO M{<|'z] P[` F`/jl7 SM d?) wZm\߄ Pcdi*T%d`/~8b\=~VC~X4S-.Ţ%ۙ^0rD/d:rP sBpթ'X@M=P4xϺxd]Z#sZb#>c{\Y5nÜVH"R׷>fә^->`QifF͈RڢlRCWANAx]x\ W}e DZfil>ʷm`7h۹\#;ZM:.syHkwV L1f|=?pc۔7ьx>pOȏpuy`s79&>q<]xLRog=MyɆyKZui36 E Otʳ9 ĘK틯6ɃsaVm2dJyQH-DA=~jH0#l ֣. 4wfb\5}" CK(Z~W;c*7vWBFyaMeŚTd bC(m |׶_Gv.ң>m]!GRt{-3$3bۛM0B_07(d2#ω؉p=õn{dwj;F "Fb|K2 "qe(Ftj\hu%}?b/dI~ct~F |A+GkDM59=r];Gfht ki=ⓦDT-@"H+Ej͢<\g)2>!`i%: έB~A֞4)4HX@wsEXBddDB@RY:="۽H~/7'̼&saAjA{jA3-|vM 5Dk=92^d[Anib71ÐV{ 2xܲ:6+-sY\7Yy`!l>#ey'q)+[&TFEMA$q4wmj:vW_ E=vM隄n@Ҏa==͐1 'n<7K}xC?>V{*6)C=; R`O$_^y9zme_%GCQ쬠=p$%,999-F~)eE1.=cG'=.0]РHعą`{Hj= ›%TrJ+!g@{WQ j&/G> KGH F&^Ŀ!!d ,zobڴyU!l̟.w)Zk/ͮ"zVzO zN.IV 7֢:yMU fvnTfmqvHsm$?][5ﮔp VvJW*` q﮼Ѭ)̜jL .+!7kq|ֱ_ZXqc CN4-|L@X|U/OXm`"9XN(&2I4<`#|Ik@Nц~%2X@":"C7.!ۋ;*k6:]%[\lAk/ݨv@FڪُkDpU=[8=n1BnKk`Sf4gٴ5 <[J0)Т*!kNk<| ΃i+yGj`2rA`YC*ML_qN-@*S裣@>:@N6J_ھN W ujkW+{&9|3~L \952~zb2)5TTDxo;|ozp4Ɯ<7o!qM@rS'h7`f7v<9~fmѡڈ [3&UzqU.mENCurS b 2Up]s"K67g#yOnE%&pqle:Y@^<[4xBr(nj%^攳\@鷍p$3b5"}N' rfrL(G G+!G0Wr'5&"RAHx'12&9/_"•3pp$,#%O#7~5-gqǪF!TQ敲%D LN2~2xyd^H/- \xNU!\&r^W=k7nh98 Z[V =@{ao=ն k" vT?`"hkbn3J5=}DK@Ux~ =du|Q@wO@&5.+$Wk~bʂ/,X;n- iv?a,Uwq ?O`A6*0wV[Fc3qɓ3e&A"JSehy~5q_MPJH_YG7qApnx֦ESo,QVr{Y٢xd"W7_Ja) ~# |Eo^y4 zדDz,S{<قR&$qM`?b oʒ>NcI@ | $OQr"sڅ5xM=o8SbH/:Gz=4.G J#tz9GW5K14+P`~h3c3J^̅u~ y/a#h0B g$ߡg.>d3L,1@rbJ-XFxB̈́:WEA @nNśޥ!zoJ,D@=ncBjQHd81((^I p18+[GnўE.uptڢh$3 ?TB6bK>$ q[A#ubǓE (p$H9i"aDH'f=:)b7 /&:fLːc় >q\M^\6dDz:|mHiJK$Hɧ-s;;S#{5&dʺ06D]G?-hh ]c&ӾfarLÿ& S^@ԴCミ@r@FN#x'4Ȳv%B,}+Cyf~?\D,-B; /$` D׭6/|OV7-.~4sǾ_y%@pt.TH/ߓ0ӲAr{O)D\xrBM Ns9J7QXm¢95x n.R6(ύ "nF+2$>#a&<+-BoRs@x|xۖ+`RLM@&ȁ: φ*6G(^S3R'Z/,'A Ԓ$DzY)=)HvY(@Xv] la[I{8Pk"DHPuHS+"d]@9sչv4ۘWQܤܚNfi Rv|d5sbnU|`(c_Yz n: K8ot_eM*, ZygK[XodCmϼBd@mB,Jr^ٹ__dxx0\i*ʗ߻!HHIy9ƹo%سAC Y68ꉏ1mcHYf4je2 6D_P@s f `[{41xG >Hq۬DfTq✞9mOҼ=L|ɱ%tj oQ7⿲^WدP9R;ES;Je7%@1\ ̓;~u P벀&f,油H[1&4TkxjM"q7 k~UKddXϘ%8;bK߇:BdTo+  N+iR|vJaRQ/S\J,l3ېLg1H}ܧ@@h0&%>K݀OSjaB2U2rWB"[P$? '-')EGc;2u/ (fLMk4&W!؁AU$r~/۞R"fjຼYéu_91]60@|]V\\rɖW*MW6)BZx@u<}Ski'c0-y Nz5#5(ky<XiAWk)d|Z(M\ n <0zGg¼@o?n`6aC $^ ~Gyi_hecaa;֋ƣ.4õµ{1A߇\}(Sp%hGfه2xDTx 7 !rR!OJ`4GrpukX%A["VI|\OuDRd٣G <OXP"l KY Z !uY׶ө?ѳrӤ)`S.t%=JDL`}E;ro̠I+sU%BnfI&:iϩZŐdkQ!F?]`ׂ{d1}Mn'(sMcN?!J!tE51,I#9 d?ל%ҡ/CÛ<k)-ܮXAĪM}M_NeEC ʽ=}|}FսytܣFZlD?+!VrqCag@Tm 6Ț!Ir"lK">iyK1xgՕ2;*p ~3v^l:r8b1p @gv&/f.7@JzQ: -$pZDTl-7 ʿlA}qYn ӔRGUxGHNkȖe\o{lYM-xݣ]l$Ƞ#E(PH :p =Ku[ Bn~^B!&t+|R.yb.P /V=QoQfln7"3GrIl\Ͼyb,HM݁~U&S\Mn4<< 4)olLY_d\j_\z!KȰݏL!6,Ӎsm' ԊJBn;8JYb֮N%j6#xQc]|ٛp9@EDˁZ-B1` RĹao)m[]U=}v?g$kHrĖR-/ NE7'"|4aFXw3Y'+a1z 5Fw+3=_?zBl.w7_<n>p/}~%nڔXP-O0\yw%1je9X ^G@Rߵef=U oH&pooJwlDX> HٴO~ݖ/V]&jR|{֘tѦVE6S@@"'4 7IJ[NM=XJH7yBqh'iaM JQ9.aG߬ͅ.7ht/8 3}ځ:i//Xǫ@ؽo2=~Je=.R/:J7:"kSWBݍH-6UUG*3[ᶳV {Ê n聘]]YN?DXQMk;8 UHd|{1Hacmǒ\=cv3X9춘U1 "K m8ƜE"s` bzR9U`{bYa.W?߇7ngǗ&x&7sg.4TF\q4iCBu?^}siHʸ*˚~KI.<(mU灐ej'+"`;Y=Iwv$&qk{Α)b~<.r=E8'1eM|O&y)ǘPB_YB·.bI h躈!B1nj(XjobbDH}Q E^Ico0c!a ?pUSI!&(,<\HJI׃K~}L:z$;DUK.3]b71k,&cz/=0PVa r+9\ uAȼ9^N^ե2m|(b$r1v L_ 2|=Cm8+R xwQ=/$&sG!|h]v)ZȩߊWFm;34[u.]>"׵3BƒQ1W¿'cI$dԻGl9 zb)$Y,yn";7WML g*, ~fuxY^x׬zl`< e_zJ8=4<"ND8*aώ~XmBsBy nY;Q v\.5~IOu3C)«b_@T8dǭ;Th)UhO ;2FHtK(;cfM^$ՍoҞ`r^[kGHBdնĤ`J݅sڭU3Y jBG|+ DHFY^/]2(䨪=iKj%Ť-4 ry%Qߏ~Opomb7d[~ߟ_^_/Sʲ}W65=Gr3+d? .y*QUݧ6!wElB.S۝[l!|bce|ЪaKahhiruQ`pQKNj;ypbMh^O"I[,ׁ+)\8-F4j[9$uvAAhXxލ0ttE3]-:"0g {e19?i5DZ!,+!6#WAEAr+!E(.P61x]h6 F 9٨hhRh A1[5DND2E4n y;=/w5}8SйDh_]L2%%zYI)RQ/߉ۃ|Eْ'V?M:`N"3e3l?@SkU_AqAN\n ao ` Anpsq֭Έ۸|}XJW$ǰB؆/?0RfHB|Hrv?0:Km <8](!!۟Gq]4Fl JE!ْ٣8O ` WS ^K(@Ea SN4済mܯvʩ̅45mEQ,^,ނwaqF20eՅ %;<ٿRVWY3"we%"p= Zc8` <(hMH ZeT KU9G< JAGu̍tY1WuuOg 30j\\@UF[bA!«6%BL++ҙ>66!f%4od) fY6>)F̓' _`HO p o\ֈW}<;)9^;X/W{6<2#7椈 ~DpUn m٦IXdbGmŸ&^@:`═kXdlQObˌz(op~1?wgʫcX^SK$f.DN&㘯Oۣ\D(w E?&GkE_/*Wέڇ=׼bb2b.@,?B\bH!D&tB.?8Fp/%[_aF"cM$J`yBO)KVӞfjI8I϶<̕@4A3|w4-s&k y&udž<P 1jPU1[>"4bs䊱s ~Qrj:%uyojLao-VN$ol,_ h.P#5sU4{8 $UTOѦx}>!k&cf8LWV}=vVAJ{IO"6[vshlZKWmdOz ,*Gg#QXx9xD:I5U)6{2L\?X}udt Er6-16nykE䩮!RV Nf$ğ֦+!_ !Œ.RDxyK@VRs$6FHw|tդғ8n{7 Wٻj6Mg*1bF 6|I,KQ"J^gnVf/2x'rٜjݠ ,z z%Sn)]X|xih8n\ eݼ FVtQY-d7!$;DLYSL=ͭֈ` G1JZ`}جSU+i'+t+sI(T!(z9PrN crn7u֎EI,ƪ A )e[ !7۞]_0|&mߐ,E5Kuh1[o᚟%GUM1MÅuw>t9|Bf&Y\kId 5IgۅQ$ۋ>=N)Ε:"]<#=lڜpiR˂-Y;CG~{="Pt 3V'AD'(~D//{Is*]/mfHܱ}Ú21,MG@N3Fxhg <~0FS=~Nw vh75x"]sBĵh U4hn{lAe×3Ne\gr SZHBRy?-\$LA#w8!7O#'E$y*yD6MbK?C3:&/atBѼy=̅r_)1@x#z@ӌW$TM\m]_Y+׮i'V;; iw6(㬜b=! (%#6lF6y#軑 yhd'.i/9ǻP ?Ȅ? ݿ oJIRu?zTrF]cFJAR"!$%TWo 6L:6V7PCr٦ r.h j) L|b7oOL1"h\;w!1e/ƒ,K/̢MsFd&A~RDɈiG[lL3qgl1}ru8Z#ê=gɸEb C0oY!]'B${h/m!5u.b Iwwj3 cN^},?;J:R8Hnfhn]=BG:eA[Q`;tb_C8u< aE9^ȬMV7Hg57\فLmb;Rj\hBL;'XυQ /ðGkWHf]8كDe"xEr, d' %W"w5(xw[VDvV$(``&"^!7c<1q*|Nr$6\kN>īmiHc>D.NGW|-(3f)Yxc}! &Y5Ǽ`dBbN}-dx?YQ:.|?.~TYQ&X"YQ4fŠ\n&}O *@!|88l' #I`w/D_#63?RDY|Ȍi(O_fBkD52 |px?_zy)\4LwpԆc_6\ 3yl/toč] la\}ݠF0q 3f-,,qDR5Y$e﷟$DRVs>:fƭ Rlb6Z_g=Q'(@H/8U~8hbM.lZ+>:g޾'U(>"_ ~v4{4g@ wK }7mlK"gl?{;<>Taonv.V ri5 Yq `PNoCWa C'_2r6.V tlh"M݁dҳp:RY8\,ƭTJ^AYZU^{s m3 P`gN1ґӕ9TiԀMMz9 X!ki(چ~) >{$aFxb{r1M@XWOM̄MtV9EzS[V$#Pͅ轳:zfZl'9_ꍱ͐'קz颷D{ٲF=_ Zx0GʼC2rH6W%$`OLH(\,PWM L_IlؤEɁZ-d³S"- G6)ajI:# vaH+fS:a_7>Bb/$,1ґ Ue-+h c˷@Xk{7pO3@7}dF؆-Dul [>`tGvQ' Fo/&rI2iۨ(:P_aсjj* CH 0ZZP)Fw?RƁbu&3̍3=/ 3g!9K,Tr*B`U2/R3V|}>g>rۮU6*0jton =H2ڶwb5$ &C~mnB;Q,AWT}@?2Lj1 WqŪp쫇Aa]DTT%ud`0~#. L?"n|||Nk~&$,Lo!.s',ywU,)\$]*Ǫl@ |keu?"\=Yܚ9):v pi~HA3цY<N>>F%_$|Lъ¤Evug7MD@zObQ hQqNq2h 3= 8Y~2n>Gaٽdv '&y]lBsvC.IMsg5>rcd~1)|b98e%«8=b1x?Ht; "A&}0*\U`)U/:a2yk"u{ 49ӭzlo:Š^jzRv1Sp&slJՖG{RDS2"a6zȍsNrvd oiiaA&06&68/ =μUP%H ߿ODg%~7NNSSƜ[;~puQJ'yӫﺫUﺁW,92G,y&þE;BPٓI.Ⱦ͂z޻/WUX{¾B$FQ?s>FdC_9y 7Uvk;rbù3;R [C*ɗ*ˊAL3O"\`B{*/ߨ7]@7n -z d|3 W8e%akid%& V $0}~}eQ ]p @3ԜǑ>qOw*q*͕/os`.^E` KH])Q&U,f1"U㽿$\a gs D&6f1r IOBG9X4Ӑf*Ӑw'.'Hw(RTBߜBcܼ"+l^r#g"\l_%9H }'^5y\`d㣚@F ҵ CK^2D /D#]gٹ4F/mD_[,0K&GCbW!0V $zox !ny)nZu=<6D$<6"%:2w˒P¯h#HgWBV6WO6&DIOiZܜ@ιe6JWquuYlpK,.%CuH[ME`)9qcjNDgkk5;-$1Y{z 6kDXbfLNwh\g69_иo2hSGa{7>VaqDpím2._o4++sw>.H1LZ&-ՀYXoIWqd 䌻գbp;& oqOWb1U#Iᆀ}j≜'{"ڔL,*;"Ũ0mPT <Z9NzVoN!{2ex#<'4]w9~cڃDkCDpCP&/%Xww\ݙtyD$=ȕHydNjxŬ@NsbJHli}xntyɁ'O^6ȯ |gbNʩAeYMɦzRUx2Wn#hMjP=ϥr+\=ϥ3.I0ltr^5uT YjUV3]} ]YS= &^|HL%j"@mw l[4[)sF+eJѐ]kWيAgYr_O!|Wq ANwA}; 1XI_ 6O 0q@Σ ϵ44;7| 61t>~3>@,?Ғ@%Qվ^ (A@xNFJy+Lrn~IKLn~oKwǵdVr6`ИElAӛu$=c b` Ib "`c#NX,3/,:ZOөmӈ|TB,D5z@rkY?1k!g} ʵ*o2J*A(} |ͣqSO&FˢFR=r:(RȜRթ@tunt@F[#$*Wqjȇ|fA~^77:N*tn՘ @1;VMɽdᴺSyZ]M 0 \T&D`9|@nc|\4dO*g [`@62y` x q(I3n?% Hq ==xϯ aNfCTɹE2G sM1_}Ɏ¿b)і̨ jyE.ܳ 0.^׬GBH$Fi:Dژ˽t9OJ-8f4M]z p{CjIFK_Rr]0Gt?$` 9}g[/ovb58.q_)1'َ̜JB͎qt#/ !$ɨxu DxɦC'IȖ3N I+K%fps'X^S5A#["<¶ּY_&rTAX{AcwO90G"HKͬ fIp Rar=T]"Q5uI :1j<^ľ?r,Hh&;_ #ekq"e :'%R# 8M~B >&Nr6䑓^|G\Ձd4f\.qY̏p  X#O+!,{wI&b6|%/&Rn#嶥-2mj@!Z  X##7cDHXH%:.—z%UcbWcO^˼ H%GȞs5N'T*"b&Gߪn=}@6m`?)$eE.:I5 |@:AxzDИ[bN"u\vc8n{/v(j] {0OtQY {9,rhAgqT%@mT"[%'~!.DT mXeQe)*DX4l {Vt/]ㅫς$5M(]L3]|;&WY*, v25[+tiʝ3V_KZSjCKE[Vc.q*y~V.VWi{̟yv;P/"H?U&!7>>נ8Q[,/̭s }}W CC \F6X9HG:oUnJ(L`=Uetd*)НjYݵynBJ{j,`($ YQB h;BX½ّjHyR11jJݪGD."7 :hy)ypt>'3XOe m@̘{}Z#jr%ሽ"zlƉhޱOd&0z)YY,]G̨z[HJ=r *g&n]\C|^($q7'C[[D,t$&eH|)$Q6 F>hA22EJrsf=(GO$RAٿ4v!K&R$maY@p_|xe 48`%YցG+!| .- F_&5dpL봈 &?c<"d2&׻WD'sDZRUm3"«`ZeV0_y p@x~eVV~'`N;~X[@#|AB-inO#\Rȝgi%x"S(5$Q4_͟kx#T!XҗTZkqXH \V%$F{2I~<ql5$qb_{<C#p"loi:Yh"«2 _on_0tM w##~icqNJ8.-{kXD-> g`s38q'^Ⱦ"K-EN&ehH?T{yȏ੝3KuŞȤ@1&5]Q0ް)U8+{WT͔a3^`-tyt븞 S^ P*klFo? IάO`''g+>QȍO$,?w9MB2`bƑ~ؙm4f@ED+9C&NkO8iatڴ{2 6lYۑe}N|&zϢzS<ͱiÅE?dXA2rAsd"\aSm"&s RS#<6ˠah* ~pd$aPÒߛ3%# !ݩ=1ۣ55l7M( $NҀp 1GJa ǎwm5ȶhtT &? \\Ha7>yKM*dM_t«6ڛrY2~,v }E,S,9?]?eωܝs?+%qCJwm( "?㡠ﳺ#?5aCWsS) dRyr/Ѳp1e?,ve_(|Kְɣg= N>zge:Zd8R6#Ad+-ٿz֗0͇H$ K%`O_\m\q(OkZHV3 hՈH5#s5u2JrVu:I)&KH$ [z!)gbP:>s}| Q~"« V7]O1AɏIWZ6;4ID#NCxIN J?Hr6#t;o^jd4MϮv_!i&2ݢFg Z~}¼?LfhV"-f7>Z6R 2}/Xz2GU܎'j!Yue%4p-B6 ~Z7[ {~۾/P=' z067(9"l$}",PȆ$CIڔ7 /N 03H 4Ǭ [ޒ 3b"JyjBFҔC!Z$ t?DRIjPGOb$ ,Vf4(#$r%ltSxTDLE-b'P9Ԟ=kBCOZ| 1߃@xtrD W孨(4.z;qhBG ;2[p5*ƌJ#-lIJCADpCm15Vκ ,AZa)Fۻ5 9u]% ue%t $5rvdm6S3' .Bjx Ye@2{*^ܹvfz8SX ~(ũw3*#ą[8ӼqzV1 {P0)0x]X˄f'S؋6xbǵ3ǻAi0YBP.^yf3;oAGDHb=\D3'ifJdeѸusY\5IM,}\dK6tW] y+.9kEn:yw\fsW+Lfj"@mDFec9n\Z1wj/}~IE->BR%"Y1Ѩn,|͂_:}Y ɛWup/fM'ɌAkDEdA5xTH򼶑ϓ٧8kB.KG/NC+w@PYgҘY f>=ALDM痳Aw#yHW o^0!ί^ v "BxcZv(;0"SW7eS9ҶEdGҞ&kTH e>O(\DN[B1tJE]]&ILնNxZqSxl7V=S@d|tM?w7C0Ck%Je{:i{. !G!c +s#\(b?7 kA?OUtX27؎l=e\~LQ0-dG-t|^ 4T/%Q-_TGo½{Ց@(]^wio bB,A@masҏD͗3.sk.Lrq 6|8y"*po(E~"ԕ`,|hYVg{eG,O0{TFKr>M.~[P?P9Wb*]+}d>rtH:ozjt8 >j19.ʎp7m']/*<ΉLx!>(oEN@Ϥ[@@M s6 Q¹Uh (#r>oqHwCLje>JiDώrm, M'KKH7$АLry|hB֑Y=0V*G땚nF wlV5+hH(hZ+GVGuL=A5=Jy[61^)a¹lÞ|V8\-\LcB*ij02= Ҏ2*VK3XCA[Y#ۼ4FhM.lJI wVp!Ƃ5C"|(oH7Bm0pJd"悊J-*7׍h@]L%+oCVe᳗x,t&16Hk~MUW!U~g4\&'O'_RerD0ѱ'i3C.uʏ}d |o&=K^ԂU`0\,ˑ-wX‰S A'ǑBȆTA>4Pz JIwҵ# e>v%dpF*Di)gHO"-07LAj4kʐ5*<^-F5[EF+v{`b£t o,[@f=PDW3$m+\ QG,jNK KEeGrzHY0Q)z% ;t3Cg='֏S.BT"-< bY  I|ԝב͘b"uPEp+<܀ j Hʛco GCp#[a!;.ց钢H r9֦Rs_1M 4xد_!?!X'-_HMv-Fh|nK:Hn~ٌy!R;Bwt$XuE 7ʷ!%P"8 utj- 0˦Bj!mGx$|+JI%64o8ԋg.u'fÎ@1Aw~Ls+u`>7 0sPUPIC!1MXX"L&N.#6ov^≈EjrmeM]yrQjGjz#`&NMUӿn@ T3@N\JlN]"|J QܔXs>"0c wy Xm`f#5*< R]\>&N]"Nk'/ÆT[AQ!2lYJ͏NTX!ڑWY4t,XV apUc!pL\ =8} J:R= N_a](1{MW13& $2xAL!vnAOCŸ u]ö)AMY]˟Z'讵`کYJM\|N6YRetu[CrPYצ5:DxԤ2گ!14ndXG]5pwI{| ߯u;S8pT 4ҎJeNe5Q"q6#mO4< +mwRH`;_jlb#cwbdCSd"LB dT]E.: XV4g.@ HϤ<6|[MfH-&3? 7K ,n"2\lj̳OA:B*BڈLې2'Mldb*n#xS ߑ Y9muG3<8 XiǨH҂" YjH`rzه +/i;\gWEC eg@uK1Gk"V_LQp\W{,LgliwpArT,QD~ ~ d%Fij7"yVӁ˨bA:(m1B&Lֈ]Tis^EK9@XPZF&6]  gZ~Vp3Ƀ1f .GgVT"e|  Y@R O?=.?O0ؑqm_j˴p X 2DV@KںN޾2B8}B֑j$3$vAM BhD= dlNce  9)#zGDGF&*P0ۿMw5O7_[d H*sDti9F%nAv~ȦSI)9I· yqp G˺h2'CT_!#U/Ɖ!-6Qh\S?VRﳓg+9pgEpjx< P?Xf&+L]Lkm##e t mLX AAKҎsq Zs_^bز@]YYRK"S,7I\:/],FJ!L@$*PCŞCEDrH(BE6gp>L1Gτt!8iHg<^%9)΀Aw=ѽMn1h-Dh^Up΀ݻ&%o{uLmV萛1a|9h+ ErlA-jgި O,/{ٟ(5PfT7`a…SVŅ 'lwk$$U] ,h#]',X 6|;\5aZM dRWkIb6Git^;!—pg*95pAmyp[{l@]:/U(S o&~TZ:;"ɏK%@fQSsn*sVCf4!0um7?'3]"jQm)1yeVnpiKX+28&Ԑ˦8l1=heڶl!NrO QeJ?cH0W,Y׮kfzՖhr>NZ m,/6"4o i~Ȭ~bWs#;Gfd+\xHQ@iۆOFSKĉ2#d G/*8bQ ¶! '@0`qp1Y>}"t Zr:[&CU]}"O(k-9£tyP1CO$szU*';S ;jmD2e QxY3,M>|>CH0y8B" PMːՍ+>U;RזHΝY_e%C^ 8ДkO2+ ^yUJD )ۧL*QO0 CՐKln7%HvbJܮqx&Qkv ;(j u__7ٙL9Ut QԻ(n]_`MȊ"H4$~8K(x6Ml(!+'( q`:HQXU4?57J0.d?=y} ]"8nDZ sWU;9"q/pF{+AXrEC^E'9oN;]֗[$!X-8E2q@Q j*QqCd FB~R)LCxԑX"+"Jcn OJI!^qd'%q$3J=#Oo484HR2ӐDxf%bgHߞJ;8b6S@[:j / R)5PcJcyXvHZ] <&xpzwy-:%0(O/9K`QFK3?l']{lϑ+TR)TVZ49VU FOq׀2mбCkhPem :""䤆0D*IpoKEj*0sʩ]@&4~ u UF֞] G=֜]廰\ˑq`2jë:x)2wM*N9DфAz;XlL.J#djoU%6Hpk@礘x01;^%toNmO[MEQb"-_)y>>5H'§m7"<љ!褘\+$]:Ӵ bՅ 3j-癒J#{- t40r0hX4Μd 0e9$qoen&Z"@ ꣋o+KxzIW&٨Y;&R!+6or>q8v]vNaۙ!|!0&Xs G˪t:H"@R"@mE !X%,aF0DLJW-`ٲe_Sݨ o$&KOH`hb&ffce օ\T;H^{df:̱RB#czC[#^{dCJ[^M<ۺAr\Α ̼\pr=^͢z7 q as$w;Yі"|h - < {I΃Bq@x'Zh)eq=\GO'f GtDF+f3)pMY#ʨ?ݨ#f,d19G8F% iNEZxc"a3-Pme7% ):}{GJ6ڂBKJwiW"2R-[5(l]hBlcXZ/t#6i6jH;5uTo^!zD*ϯ!?$IÃ9r hMKCP?>3F4'b 8/ Z`}*܂B?gP^ [ /*̢{)qDW2t<6#z j"A}hFH4 9' @{r'Cn(B4CmK+8xJeQLNlk+0o<`z2jX4sN B߲#"0oP @2ׄ$Km[WRHaa )Hjě D_'f:̚f9g/ek.70ԅ4pT%bWsT:9bJ]yQ^ϑt> !Ri'K`rÂ4e{<ދ]2$p(P*Ő6-';; #;_j^]9;߀ΏD3msɨa*b|b(D9j}Ƨ\tp}8MmYN[,oY,GZujdns } 8ws6.WVIzDN8S͐MM u 'K!WtFl'tLj>"a!dn Uj7pέoPa6LXBQp#τ:sۜJ&^Ô6a{ O4 I29jpG#~"zK-<: KGʠi{Ci@vCL,zCUA9OTaHٷyK)a2JmɘȎHUѦ+lj\[q383"4%]~ 0/jikTh %4yWf| "o3gGzqB\m{ۡug{;%I8E/3 }Q4Cy*٧[LJ]p;NjBhiȝsl;">;TJ ՝[c ;A~Awgf"< 7AO%A~39lo{ <ɥc~le YG;p>ۉ [ ah**X}bjtW1\}`܂,Uw#6`aFVK5}Y\RIt_2S!8\ȩb:93iBN]A)h5`z?v'Y%_s aC =B2L yT)m,)oxcWÎXIOPIrC8zTJ2ưqAJxQf@]K#$d4'S˄IH/3%G8 H29ԂND)07?9*GjSLEz fFnD%`! O1 ݴ u}%wuh]Ծ/>+1hìĠǞ _bq>P ܖs@6EnG6; IקP0S.v<tveg=zmWE6$xmX>5soǤ0wLBg]p~9Α8 Qv<BGAkD d"s>a ڮ@HC6*jƤ)Hnua!\]0,EiJC홪ڹ2q0kڵ7U4:f2*­;Y\ đVlr'Fv"4HժO&S6ur39lU<){@m#>74\As6d$tPJ49ׁ꧰Dm#zˍd,\R|84R +r%ɠ.3Dl- uepdL>n*OY x % 3ѝ ժ$.Z.Jm3MBSLpUd! %iZ2ZOvDlF2A VS?1wxΑ a6_Z3cgoRfkJ %d$2ƓJ0X]NGuJL^´Hk^ }mw iԯ#ಜ9aSbG4ԅKqd򬆁" q44 lHFstNhhӢ]Ɉ́XM6 +n#AГ PzT7&F@>⭡2=ApH.gDpӫ"aA.V:’( u"C< y#H!ilF lԣ zxJԾ`D 5 IC^kK'|-Yt۫m/8@4gS= nU_h VHbj[J6(CM@C"\,nlB9IƠǠ.!{2ǔpNnj!:ΊpG{x‘g R;4kF|Ed9C1Uy9ӯ t1$L5jXDž2!>ɮDծ3!P6H&@I 8Ӟ$%]N;jM\eV܆E*#\p/[q•1 B mq!U;mIz.xN|Dŀ30ɗ%`&Z0?kYXp$ NH]Ct$CS.QCs1RjblƑўhjEdW> w: @m+8B'uD ! 8i (>9'^GUÅ+̺4o2#Mr[1 3 ĠRYno.oZ2& ٲQ(${ǦJr*¾0C&C6!KŐG :[^Jг :"e4`QHzj*$n9vh]޶SBk8ȶaS!/RA٪u/WB4D%/Z>HCQAn.}e崷 œtQᲾeBpWe?~+";LYWJ9* )Ow*  gƑ2ɜU,ӈDBG[[@5ƛH6zDDpՇD˽yMFbŠdJ `LV5wjOH4=ZtQѨdCQ Gj*M+7=MRs7GDtKzP i#0ЃSٔHR⬒*++  dfH"R )rOI2 Z:%=pY^H!cX5 GCdЮ֓-6̡5Vɯd2DVG(G4x1aב;:(KECH")rd ooYǗEĻHb9B}6 =\n.qB]DVGdR7t[U0S('PH00,9KEBj=`wQ&" ti QCr}„[0ŏq0 G3Ï,X0M"scm\OGƫkJJpK!F' uqzݺ'B! hԷҖ![[*"H_n]{\f%SMnc'F;yI!^%bL(ܰld.URPTvb6C6!h蠬3MOի0W aսڷ3Dm/'bI>iqfѐ1QL<myCz 宻_2.=6 A~ǣPQh.J;~(l0$u#E(촆i9IZA6c&U*R/u'e;ӓ: K0fF8|e(a%x^Rtt(oz!ۏ"-Ao6=i Hs$vA\cR ҨmA3dTۚcLN?FJ?kXOʐ-i kΟTQdmoYITQ0WZK^a6Y6Ce!mȖ؈$$.b"M?"jmRZY%zX a@(vj}Ig3͌2ܿޤVaD鄩~"S?_ ^!{ғ#TX\Su$cn0Hpp_.>QeA:I)Ȃ*L#dA귴;6U" <Ѩ -8\ަ0 czHǍW׆0ю\;]3AC9K'֑̆mhZRڵ*:sDXito^%&%R 916.@4)V$ )7ᆩlF y`&q@A|i* 4Gx^h|"ro eۥp̗JSKxp n0`x$*jPg:7w|7r62 Kh#N,{V;D3!m&]>E%2sO8t\Yʌ-\mknTAp-Rr "ʘ33 (ڱ0W^D(G 6I{ޭMD&ix6Ic"MQgGnػ#vi~m3YQQ("{N.Ifրr`3wSubWv슂ۖ`u$謧͢Yܷ0>mܞOq\+-#~Zp " : DCh=HMidy~خO#hpх6pJm+FFt[1η8*[Yj@~Xh~ވ'עaIR#>e?DYSϤka&,˭08U6N2]1LyYWeʑ!F?اЈ(x%3CrycU} Q܄]˸DjhXZL>k!< z2eBDF}beN;L4:ΛBK}BH!">!=Vnq,GV-֝uDڒAe> *Y?%@h%LMޑ=O iX .}R kOF)!I$PD7$PIגsz4= =NzkȾ+9l$2wM*?n$>eZ)Rd?=ߑ 2q>/DbeΡ7̓Oj|=[C͌ cв!zȆ:pn6Wu:4Y{ܷ&M- F܉Y~dyWYʱj˻VAYaX-4X ِDCGi# iZUt6])ny8} 2Ej6Tppa( Ke0^jC` *iJ7Cb:s%a"ZD@M0DNC|hAב@0C8qjedYǒqOtɮynH=\,'S{Ҩ7>6500d'x{̕D]~s>\ɑ=Vv|%qYkgSmIt@ȃԸQKύ^rħƕl(+VE+B]#8Dۦ!rk[.LfQYp { \Cm0UӌxHO#52PUg\5"Ȁgƽ\بaNqx^w&QnD%&9Z; lg$ϐ颐7/|NŪe?hC]c"dDv%pNڮ*a'OEqʰЙeCh>DCqՀlZ+Nv';? |DDd@5eU A[cF@93622&TnYZ24iBsq\!27R̪iY>2!OY-g,rrΠvgT Gv.K 3rY&E8+v:‘=N䙴ls48ZV@}ّM ۶!]hnW Ԩ<7e:7uY:F}4S_ʹd!b(9"J&MMaP ɺdE_n/ Ԑ/[\M_#||)rd3 qʚHuA aQ]`aAa2UjrIG, CMPHDOYU@u(1'Sؤu:a/(v3C Cz9M82iaAB]x|ФH~~iWvwsdD;gs/|!2wslZ!e%d7nODwX({'אwۣMdn}:FL>ה+-\lN\Zڑw`iܚ $2)潴n^%7Ȳm:F*T:k4w5p䩭jn}:?w]ez-Ut|Hr<􅋨zkb?S-ٳ"T +CҖ8(+7v:R 誮Vlޙ "]mh|?1Ӧ邹6JeBaChrLpȕKAcm㍼4w/)ޝ> *u֙x^ 1$B3'3!< 5هy6ԬL~-6Cp'ۙ%9_ ,@ʑ'9ٝ":60CYuo(`^Jٕ pA/Jx17CttP!ЈkyRN04 @|\ڔ~RbGCF?JQӔR2DpX6+E"`_f&7h{PVR`6[4149s]jv@1tZ#Up;lll#l9H u&aQQuyf#l}*a%}KUO Ȁw"EMpw+҃j5k9Hv=/bu ̆Y2"|Bǝ2M? k\BuLPN]k afm9Sߑ59= N垻"_K,rWM{Ά BZ+0$ظܔDg@#LT'KpzY} "Cw&J2+Nqd _?մNe]R4wHLJۑ<ёJFۑ%R#eHF gIXkvmgIFB_ZIj1 pSQss–!t" PhnXhQj Cu:-Mƾu]%I#BglNolD͸3_)N&($S ZYږUVa!gO«(&Q1H-;W9RuA9_CxԂᚫ8ɇT>qrk1QK I4AK]rDW2`KP[Gt%xSSz 5[:o^G¸o$$ 'G-9;;_|Yv+fȮ_ߋ)oU}# ;EZ^u@ ktG#|#w va6~eNFO"|%5e0cF-pN"Y^DgRKMМ"|6s f벶;,wdrDT/xkZ |ì--`x@X׭Pz>\ؑ+h3MLQCx+"{[bmt};c7%A5Sϓeל1*()MC)G"N 76CfŻ񝟨 6(\ (Okeq@X2q7?q;z#<0*CUZlԑ=kʚlcL6| 6Ny @OHX[L f RjKa=-%|aZ,Ũ!o8:tGR]eH$bQmy ɼ!uUqsZ`Dx(Wtu{[oC_ "~J Jwq={VA( =ȴ$KNǸ ْ9qQsi7+Tp0ki(m5Xn0ם&f@_OnlN!%h:`L):IT"rYҒ(]מ.Fy+;]VPYc+IyUm)DMD9~0WU5(<Bի#[R+M$ײ"5mgrx"`j<잨_DZd2+TnA!/da03ĕvGp*Y>dHS|l0&INdQ o'1RM`'1R^8ӘȒ)!CAr]a}*SC4OY`_YFs^;Ǽ :څ`vM7Am$BRD8H*W_C"||I@Utt e1VfYu^<1K ;!8 ԦގVn NMܩ9£d&C)v4E&]2T!NVj.v$2⥣ny\;<ƥї㸲+.* w z$۪zI۶X4uˈ\!QߐPד J+ A=2jZ UmCchc&WjǑgV;X,o0u r!ja$Ӭ'd aJ 4[@ֶ@‚5-"PcF̥.2-_F(ΡA9#.6 ".n;%\c 5jtIf|#3߉밭9yV"6!,K )j?8\'{!|0KvaȎ#\5lnӝZH(NGm8xX{iוi5CxnBn\&!2%<<,SzHe"͝akeTCs2:9ϾM!d!$֋(uOّ[q2ptIF= qdt;mیTT4!Z \z̀ "0zV|>M._zMT,YZ%:R#ǐ`S:?B h)\l:͑h[ɲd,!4i%cX<>+==t"4C)ȑHLh%a4NLJޫd{xb ޥ݃R9 Mu,f-!5LuM!Aэw,ޫX٘vK2r6 cR_0:oJѲ#|+HU מ;In7*Fr> .%hK#y1|^P"R- A+J2Eh_/ɬrJip)kÝkZwPbPm0BiOQ(;̐ )[_^GR|=&.y0miv*G|Uxthp sn E=̙\fk>^u$Ѐ, |[-)ȒOj,pݳcІn9Iϼgdt"Kn#ظaI!q'i B |/>~SGoJ9 L|+J&<Ҫ\#((OPFA+A%c* 4 YWː%e  'EF@Mx„RJhV@E@d]JA)epgRW>8P oȐ "£@iN-O 1K vۂض rZk(]xm(k}G-Lݸü#>'1i94 x6*D4bH6^dQ={{.{zZߒj"ŧ#SGLN- .5rvG{LWWqxU~"R6E$!I:[=Re vvIBCDOԧ,Iv1nJoF>0bCzyulL"[Ilp)Z~ HR9=sup~[:ҏ!E8$Y< #W)J$(e$Ly/NBzrG F8icxcPgV=ɷoI2 ,rQӄb%"~dws/i- uz$;Df2@O 2CHfUiԶ6UfcÇ0QEGx>#: :ZrLP9Ud;))JYʆ<.9k3: ݟQ;{9"[j0mܔA/IdRG=o;4 oǾthD{,[b1-:\ tKR0k(>,K}m=}c֏{L8 ZV6)EgffSC0u]Ѫ.+;p1>l]ְc'S%C@m& E]`uZR!mDPbk ,ObK( 0!"[smLCkO/ԢghO/TU= &ܢ"5wYa]_=zqoK'[99hޜ1( m`!,u.u˘Q%KtzYדa&2p=\Ҝij_&0ůfh-H#£.(>H~N20h$b]JI~2΄x0k#gE]l$~9#!v8ce|CσЅ!uE3\FDy砯Po@"J|/(^󴠦wG<:]UpƢLYɆ (/y푌 HqjӤN?Cl^G L~Ez O;QcDBUV عDdZ?_˯JDD۹ |x?*bP+?#zF?}o_yNΛxd\OH&n_˟uHݯ~^}|}<&k՗3ś<;yxs y!|?ӎ׿{7vf/߿{oD?vyvz+w]5zgR/okxJy߿?94.s*{^7a|qg92w~c_>2o".mC)U?}p{oM_[ߵdGþ777/xB>oD ⼴//缶{T_޿>Ge>/'ouݡvࡿTˇO^?_Rgxz*U?q^W1;ϔcw3w!)]/?\-V'yC=y 6?:B܅ߒʤ 5^}Ǽ [)@)ٝ!ycع7ŭ_~NJ:$=W? X;Hwk;J 9=˿>ѯ?? 䗿xO<:׻)}yOw4`WϟN|/U0|mmyyL~mgS>~pv?|k;?|OBr&{yq{-kK/yv*~\yBz1+jz|/_j}M\߾7M΃["?%^KzJ}NɹNIL>3[y3kn:=-?2r^ɰ<{U ۏw3}k6l/]#ayGْi.wEoOW&+F:oU8&ܿ)_8w:S_wRL؟v5kYw!+Ԇ۔~8>5֥Z_r Eov<"|{7r,c=<}>c_cNW +1?<̽~ K)e'csUb4~wEWkxp~EK:|ic}!vŪܝRoK'+5o8pꏺnqFTOo7~;cKJS?{~K'<ܨex; ᄯwHXp^.V/=^#x*rRaW$S,Hp.-;O1[J> stream x{pSUo)=B+\#uˌPTD BAa"oIiKӼnޏIg~M-t r+.KFWV1 יݓ*?L29;~;EaDQQшy˖M4iR)s7bX6<>l{v1D5nAzzv nR'O%g%D%XN1X@,"BBHr5A.⛢aY+t $ǒj5uz9c|{J3"1j- AX&HBhAlp}=JCdg`ѨKwP^IY,lҲ/}._͈Ub+|ESA6֖I":W3q?j0?)cP`1r矑9JzĢKC# 5x xwHH"'z3o]xSF>}SFo)yMzM[zGkS w3htv&fŵ~]sRuR:"8"HZ1QHͯ:w,0 C.E{;O.'sSjt|a FsA@7H=#Zv(Lz† Kwz}n ċ+.ۑv;i +D$4 bΨj,N6T,bo C#н$())]ߊko8q u5Q?n   v÷x:Ywwʶ{R)DFd6Gk XW|N`ȅw7D/Uޒ3Xة$txS)K'|rR@5EA4{$`6k5q,1Rg.}†.éf%Ó/U6Ujv1Ȅ!֮9b'>>VͲB&$Wy IXV%j7ЮEk5aK)HǃٴMˮ@@33N\DžLYg,ynzv2L2cT8YIFipa|XB*&!h7hdۢ9FT:"-oau\qKғ#EhRi5ݒ;3XL_+םsu QCĹͺnTG[,ɶ1T jZR^zX_QY]{g*ъʢEdC$,5Ϥgz;[{ uy 5:f H/џKKU0rpK.`y`~>Εs.u!Mڂ`xۮiH]H%35`ۇBZ2loJb $Yڛ5 .q@{y.k0XY'FA&weAMt%l&mg3u:NYۚ-*UH;5@|t G5顼eBqG3`fKQ3bJ1H ;C6?Y8Sȇmҋ!ܐZ;zbXo0RUEJC]5`^7p: 2z]?7/R+HhqlW??(F4Z&EoLһ-1^vӟ5Y6+^ 0Ne8?Wꬌzq#|.:@KS|O%y/&!.\!L&*'xZofH").ȳӑA*I=+= 6 crL޺3VAT18-`Y\A-8lv }!!ER?*ɿ}up UEҺW8Na\f1}@ԛc?%{;l较ٞ(? ?\zbn:q'uk;("9Iw3s[;S$:}MR_v~& q  RahACsL8ꜽйijS7nU)ڨWBJmvYn[ C_kjr5~ ,58UŽ!߁xk T'F Ӂ^մ{5}S.ĉJ*"I=>]mfÇèxx(tyΦ?A,d8? r +j dhQg׭Vp )dr(+U?ׂKjl#ˠWA'jKO.맇j4b@i]rjSnk/ӃwRwSo$ 6gX x-oO"O\j5k&L1&u2Dweq.iEgƨ77e&ɍbl4'6nk?<0[,Uzw,˅R)c}02ZZk_[>S))?xݛubdB7xA3"QA.dC;hW,:[~G54"Ns `HZ"*!=H6gj@ZB˭: *(N5nAѷ%(fdq色l$,+e/+o֗endstream endobj 312 0 obj << /Filter /FlateDecode /Length 3743 >> stream x[[o~oBhQneyMJ q8*`A֎m]ewe9=Y ך6A[ 1p?;w3LDޝ|w"S73)yV.O9 ]G]ܞf/6fko7\ZL~b-za9ҳn_mG(${^ Xhzf $!=0Q>|a0kM69މFmXH+mj*I?|0_˻lٵ X&5]awe]flZv\ڗ7͛YZ8,$V^ܷÊ>Øn[bt}a@lÈ}d5^ެ18uJ"=kTBq=냦 Hi1OX"tA<H #UM#ho2JEKm *ٌ`N8]'=iM i\ia- zZDL2zHOz~=_x ǀL_Up Ot7-}B:vzgtY R}3Gg)eNBd۬Jz7:3ͦ/q:/=Zĺ"@ ^b6CMB֝0PE ~YڟY+`}Ҿ~^Yy)UzITNjj[dx?#yY "\eGlT fYUgg}.ۛ꺩?ms_*. kV#Ll,{]~RhMiҶDқ#Bx.ˋ% +û_1K,J)ۂw_z׫Ҿ-m}7![.?`Q5O%!͞C̾xVE8 Pݑ$!z":zKy.lw$ܓ6-h{CmV|Ag13Ҿ(6}#-g{qA%GVI%Pg{6\ \t3YYf"اbe@[}MX2_I<$kt/J{\ &h+`HvؒGFy}8)%/%sfJ?H#$Af3! ܰQ Dס,"Ή{YS mMڢtӊ]SEydLrP.Ǯ&8?4CE R+<:0SEiĖ)E$8醢J Y7PhuZzs>/n(/ŁJ[+RC*CL RزHbu!QXF">Tų䨀Mg"Tݑs"a\ȗ,-()D gUbz`Q RtNH(B ݌_^YӴ{$lRsC17љOdՁ6[#fYqE"|B 5h!(;1k\lx>c\SqJhGwF;mFE%:gM叆of;5PrS SdE|V]P5D9t9PTMJ :p<AI䍣Q8}4l4fVj""im}Pk#щEftwy{oe5isr]V2Y?%|{:%?@rE=ZK`wR[.B;!N bm+vzrcws$B MYa|& f1܃(|}H80{ygZ|ӽUli]%QH`2ݖ&:e ϲ5_:vi(^Ehs݊ޘ]ovG9)`7Sbe_MSE< ۊ!pofi#9_rTXԼ=H?L"aPB3dv 8B+\.2N /_]q{PooYIG@wvN0v_H"k[3z¡r#iZk/ۯendstream endobj 313 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 866 >> stream xMohu/M5GI~"!lC⋡"* Ťmhi\\r.\54bx%b0;;Aϋy"\.׎7|A wy;lnd}g{u,A18ܵ5Ъɿ\J~P%߲}8 ٣6޵Wo+{LtW1ѻtSx9Ǵr9 U-*sd:&"طWZ' B:O<_LUt`?n6}ō?^VPeR!D9ޣq? cZ&m^jG^I5ħȹqnBGۢ~}~ iW"͈'M|~Cl&6k\Bdތe%|,9uD,;7GS\"^6B fw/xw N݅>]Eendstream endobj 314 0 obj << /Filter /FlateDecode /Length 4367 >> stream x[[oDZ~`6![H b1"? CzY3l奄Wΐ-޾礥ٷg_sJ[+%;= sХmW4_o6%B mes~tKa~səlֵUK(mn#˷~ ?Mfmn|6ܥҲ.cWWr7߀W7pK7#۬| #Tӂ֑ .n/F 8it%"ZU?nZ#%M{}l6puIa1U&A$fv}i7_!ЦaB?E6R 9͡&mtYQRm)Jv*:2=:+δ0mF ̵3)g<{uFZ =c/5??<$ZK,]{a[i_o.+_VmhshVj<К6ߣ YYjכh dƀ8y_ x4IA&iTp-ݯaJ?3em/@G4kH7tI24QUpk:4)DJj}Wԧ xJs]vz"Yba:FY; `"iHɛ}%,9O6#}+!u\2[ yIE+Ltp#al^._z,\oq\6\Rȡö:I~˜.wϩ\ .=R>"rC`ر1yxXa|;3mȧdUcjAo6*^ͥF MY $ख CR/Yj+-C$WYVEsʔ4qB%*{qWf(]ͻpָL%3N:Xoip NR')$2: 褌8Ft^=(dmZTMFqU},Bw LyJ(`²XvOS#vzJ=[Gzz)o1fHQ.i *]Mbc wRXlfBS %Z٢W'J qה h=Sˎg!n@\^Ge c-Tw?8(4v<m7&n v1` >})#V VR]87umPGoWœamBޯ?_P"Z)j}iciii_}T7{^~x@ v mnVpsumWñf5O#qs|2' %,U;1>ja T` q8+8Nd :K1|ey=`sȋoNl`su oiî+Xq7S{&2$r!V? =L B?Im&&vS@Gڑ'_#"ʨ }0x:cv"{?|A5e*95 w$2ڠHQ:d;0IgU?ddH!-@^@4 V9%N}J26e`(e |(!&CP ֠S 0#dXVYwNFRU6 oq[ZÅX<iaʖ9הl鑕P$oCjכq`2Gמp).(oed SQ:B3.ҳ8PXLɬ*W:\VbC+PJ:EN`j~m\BVxP~sS1(7ޤtINK^{k}sjNPaO`t.'!236mjg_jC<'+}@^s84a&}4+]EP;/^l8E(1=8VJo߭ [Ӻ},Wݣ?gBB E ~ &A)o-q]emv_ueK@,e}Eh$?Fk(TJ-xh gow]7b6=Y޻ӻ?ޥ :sH2^`]7a`. @Stˇz 3n w[ yh8gKM.d>N}-Wy-2iǰg$W'Q7w##E=\""vƃkuy`U ʣ_Rx_.9#}Z;`3S)B.%YȩiNƳu}3c>%Kܺ H#`'S4eu0%%I }N%SO,MpzxU/ ON!N/.~Ciݔkcap 2~F4nc"\H0& {J>z@· N/le &W:2@)D zLCT@1Ȃ1π#ɥa^–[\N#NOc1G cm^$nۧ\rJ%+l/Uض>QWؚ ]9u/{_gЛb2Qp[ʣx誩@44i {(4=.8sY6x[yAJ 0Ѐ/&F7ʭm+ _w#^BI4|' _~gHv.)w_QwjR1是9|ݡ pV&"$1Ѭ:xd48/ٛ2'sWhCfvTsJ~c\)K7=㡿So{wZ'`;9! :7m\$ԍoF<6KuU=9%b縘tǏ:-w[ˬ.k|iB;!n]H,/UxI`W :@GD+=ο/K%>)R9,jnNRJN7z\_1?TjʢߡvuGʐ_Bhv;M, pH>-?Do* [hjX/0"}zPFS_I O)v(&p!mDRߡcݠJCV6 y iK霪f|C *8_fncb\*]>>AԀwx2V&ʉm5x_]iN@먑Uhl?aWfE%Jx.BC -,bD|Psěq|[RDmux-1f<[Ƴ^`KiܔKZ4jBK:ڊ6Yp2KYjt&o m1" %g+u%qXmg^UR{Uy56E6sa6x"g>$jOIT53Sb<ğфg!֤N`Q!UĖveK#v ك${c4ȟfO9._>UY>q]|DZWDjVlo)/X/t!8B\ B@Y]d@ӛ] .V~I\^_)bn]~sEng?endstream endobj 315 0 obj << /Filter /FlateDecode /Length 2841 >> stream xZKs_H[! ) ɩr>8Rpv2ZʿO X")˚VlMswZ cwZ?^J5l}}X)lmdek]e!/62-ymεVp{?4a:mBRMx+L?tC~ uTfm3d7[hHjō;4+)Ft\.GdYI4prR j aHr#j%~E~h>OXJrFy*S9Kp=2vB kLř~`ZUF۸%if˨N$yqp_7eT%ZǍa`.xBWLq־|:p Y~zfHh0T >AWqEl0--q|]GcCCNFu 5lwyέ=fC\L)!2bJ+r/Pgi1B_>KЎ*$&*K4}W}c;LSK]t춍_TISk_I O *CX(=Eb:pUᡠ0cv4,iW`Qp ) {LK;[J!~*gBFCx:Gؽʛ|[]fc!aM8>(f%[G sbר;0QXscEv:6I!^P Mo$YG5KEcʘG7EI5zcs@f3ǔ;N)A؈JTd4V8C=̠1YuJiŇ<6 T@z]3(ڱz9Ez9Bh@\:lLJ,.pŇ~L\4UcM=} >v̀?’cM|x~wiE+8$)ZꭻeL8u_ʸ?m3@6Evsjgd?GvJ0Gk6xW~+ gx_d.U>!N an77db)?^q)6s[82J{_;T{wc]ߢ cޖДm{Y7Їi: :DFLR2+t7 oc*}&w{7-湘wߌv~`BGP#[E j .|8ZnjT]!w,mp# 872f7yf 3p$;ɷ pS4砿H 8.cpl("7Sf(O 퐾x3c!(lxDlK9bȟ Sf(= x|*_' a*z<6s- .-47t-;k3*KNt@Ng!ǩwȉPeM-V!1bb`Ak&a KF\(/JFiW;8T=y7[Nux.{W89!bhxyxD9Q\? y؝Ѹ7|$ x4#qV_yQ=y9;B88z\`369ĨxޱtêGQM+8/RE8A9K>)>@ i|/kiSb_Vb[;db|!_o ID>K6 #(sb$@@[D[ Iktd|M!oCR*mrPɯRP=_ K|yxK_|YROK|_KsʗJI"ėK* eb›O^SX ]_QP^Y ?m'v$L? OPeendstream endobj 316 0 obj << /Filter /FlateDecode /Length 4158 >> stream x[KsbX.fc.yJ(I9Rě)K-ߧ݃ȥD;>T*@c_?;+zZ>>ywBgss)U#%;=:S-*Me~z~sBXw(` .:'4 sGw8̂CvWQD>J1\&ܭS҂l~wo r뚓vHKq<3nncAc*u(1I* 'pCw['F;1hgna 'TІ;}E**b3c&> GƵ`ſ`k*xUKCk,4fYј8㥕Ќ ߂(i!00ZPh&|}8KhK:$iA)\0oi|`sd6#voʭgֳ}CmpMkt,EQ佟uJP)6C%m2Sm͢ ٮ ipu?`ixަ${<ܥ~`;B'|P˻%'{3+%yZy8Ak D-J 7t[UkN9:R li(ƱiG-Hi=G_yqB푤e.7|6]톔@dӎnAr$PښMʽBs.  c>71:׫8euInni=b:8 L.Q&L83 ( Ǭ /LYCÙnDQgKf"4@4fD:VN{7Tdr7al6ͦ [="7iG&%'q`c!\ٕ:AS:X*0$zؕ ^#XCnj9q8Gc5! .yh,Mb;e "ĉZʲ6*.NP4,.ko~l!vvsC 2@A&.c/?G8JQQ{'! zO;418FH%$L8`璨;p% v‹O䄈 إ*y:tqO?ˮj7)‡Fk݄MXQiŲ1O֘A ?ߌ@BTbl!y٧pO休ya Ԯ*L[D4,s\ٳJxl-GYESȊq`ug~P5ƚ|gsL.! + 9R.پ#١'0>.ӌ(Z~?˃i+a*DM%$e3lvx`Qpe [cd+_y hV\ \ߡc7͵&D[;ٸiQ~DcmEʼnbtv7/RiT})H!k#/AJܱ) je>s% REIn Y ]w 7%DžSv+U/MV6#r^$, F^d{ܘTKW,618c܏C1YP7~Rh%4*A\~VLغM=@nh~ߥXE|K)yn/m["%l Rpu5*ӣ |^`%*u'߫`Sԋ?݆ɉ*:~q^&T_Bm9Q~P1"J~ M=15ԥ"3݂bwz?YwV==,&WzFB{ʾtXtOjzVfb 䂴!}j_C6fo_(Xmvnؗ.aS=)Gr wM`+-;cRe.FWtL9hMx/qǼO5 L11~I{_PEXdKl863I:p;/'J%7NM`Wts9d&?KW~0x^PǼ/+Qo p.Y;JAj|:eSٜbHj lhThcv׶sK0^,rшJ6j8fx* Y x@%A3}RP z?П))nD2K/lkSʶ|bXN|QFW?]l.pkdx/m71TLyH |r.YESx%k5)k_8}-whӛG-?PHl.$Bc~5wh>n ٘^=ckiKfà{caH> ]ׯ&_-l.wMMmr8omO 60Tso/=-Wa>hEN\2u#m(ڏHj(*6/0 &fLm-E! gkJĀ5WVeVʐ 8a@∝EE,w i}肷ʒC_b&XPN6Ŝ9EL8U _ A A+v.g >ʮg1 9 (c|~E%%mw#La=# G~VHvN|z:}>HSgH&A,Wh< R"<̼ rOί(Q)Cj 5RFc;^{UEpqO)6/gc9Яdd<ϫ 3.T[ϯڿKKW%;ԵRs[¾|sA0,vFio+RiuEԶVvLέ+4I oipia(FZ]:cH.oߎ=pʽW 4neL;7Z`S%V'=\u=U [lTxo'spٮVCKE=mv6Y,%&}y_o3`endstream endobj 317 0 obj << /Filter /FlateDecode /Length 4876 >> stream x\IuuuaԑiwҌ=B26,.qXevb%3F3>te|{K7MM/85w}p燻O=!?<{ȽfRֆ?~WSU7q W\QuhL3*kcd5;R75n kQ= ~e_EFR X#>jU=0`$n/Xm4a$/fH7UWk-DztcA^!dyIb:FkfHd rRyB"湡RS\^Bԍ? NE9צd1n@6}vq{g6ʽ QMeҀxQ5>(+ '+0?>QA6OFWvVǠ|߄7jU_|DRg wUq5St`~ iǠc5QUD2Z2eHͽ8솫V6+xc2g1לKPΗw;S TVL.U{ij\nDqJgʚ:#(YΗ/vICkԀSQz- 7W1U~ŕWQj5{z.h>#x' QEHH?b,e{7'/] 4>3l30nmN;{}*?, Cu,i?2O gA*4ƈz . 0??S#BA?~Ǭ7iX+pcRkms`"˻4$Q> ޵CrPKVҵC6i2`&U|&'y0*X`Bu)\ <$dH8B2aq=ik!TI:^l(āTMbDi=!kbM-FZ!TǮEHS3z/ b RXp$]b /Q% n Kpwpז,j n`=V1/\qBJyJxfX? @n*`Ba2@exp g TzF !# J́`xZ.$mffjw/mjPM&Mp\iLKuW,|*c6Z^8DM5/41Re܃G)d={*i!.@NJrܸ\]+fdֳdCoj. \ƾ)fE!Zs;RDu:. _!r1qÐ6]ɽњL$}:VZuc9@=ƶQ.wSحԢ:,l/ӶPSwwR2 пS7uCjdǾ;6 u@fqȆZƗd-g<[^  * aƛu(˞sd3֢i?ʰi(f=K4Vْ$~Y` [m8vzv˂v?Ô\,9Iq? |Dukcl\m liT;L"Ve *{3B</dp#'LE>pt)OGe&ȹk=6*khw^VL)$Ť(ES!4+= #и`ԞK#7=K yIu\7cJ˪IIj=ơpM0Mq.Mӱ6EVd#^pcFc3[ӓ9Mʾ.F^mM)4Ȁv~k<>FK/!s*}x>k<=`ϻw9 ve2.2x@2/s+T])&-xI [$c0)CFC#$[ c9\w-w@X#x)'"Y<ñ?@1; CXi)DUv5|xwhߣMC, c{$ ה(h,מOfTl]C5rp֣gLM} Y8 Qjx![X )/gW[X yJZ&ѺvJ(Pxj.[{q"`;b|,8J(Fm$>9o׏;t78po?^9]>u2%5-XCifɆ~Z{v2Ӟ}A:1\-bTIR;rRIt B‰*.y kLDX !:NjO(&TQ¾FyP}Bkա9AӮa-?+QibÎhE?'5 Y$v"P<u( cNlY)Xг ((Q} nX*x$m@nTmSt*=\cDy<#o"Sʛت+[fr@K"9?NRL`N9BnfVJ]\QCj@rח"c\HuJ3VFf"6xs;)u4<+. ?ͺ8gIm;HAHm0S<1yN [Gx> &8-z6(\ߊr*)RV,"InkѫKۅpLX]}Kfa%Jp*s%yIE`]†3Sm#wϢQBϬ} v/Ko1S q ~pendstream endobj 318 0 obj << /Filter /FlateDecode /Length 4345 >> stream x[YFv~'hwЗb-{f xublT˚_S9K\;p]캲~pt۫?׌F®QjƔU %LWwWE]~M6.̏i<리ݡ*+StCnGs_WStovΪ&.񗃮a*0ڧGXQ/_*u\pㅩ.~oU#t)eY,ɓ]njҪ1)S ,~+~>8qQS{?ΖZk̑)}QUu1/6)݅):fa!t7n0 y:ژQHQeq]UAA؍>KKmWRJԕw/OHԡ%oqHZ>nP^" 1*O;iOCw1gü^<QFecFIfV: h,-7UyDgȶ^SJ..-lYP&Aj{밬' ˦"c U,\()JJP  YS@9ǫ?TDg2N [}U fԩm%rS?;@0O- q5Ot) _װFxL9aj@&K %)gxEHZSHzSvL˦xEU-ڎ4"3eoAXl_4 *5)Y߷9[k¦ Pݓ֚=F:CޒfOgߎ3OLY5pqPMrpj_k`IYK%cv")-,FNa>AczvVGe4/bdkʻ<ےz׏"#8pgƅր&F XEUVVv1;\6`x-)#"rukL'=7I椔N@Q9[B8.>yn4;Cjw0'˅/FY EニsMGr%s=֪|M]VÒ0)O$HݧCO! YpGAH Jid؏9qڦwx(>JEљ!bV(5 z=5>g N#̎Zscd*EqT EXKV-aU@(2ʹY/GM穛١P@ץ{[oHtzbg:@tnoiH1҂ IGiގ$DŽxF#e9|r >:XgzQѥ;㺐h>#i!ئ_#ZT%j7nyP,wA'ֱK>,6 D2E( t!-x4[B RL\d">꟰d-;*(W Y$2:r·j"';t4ceS)(ԫkh\]n^W8sMEIzcrͺ.)Iֈ7QI#Qnr5R?2H[`1Pms]3Xm$k#}<(V8bҙ$Q%(y`NZGB_ 2#}`1Y"m4f Gl;?Qw)N:M/# YaɠBS#Zc/kF_dߞ*Z%fT< Ii.$\h+d 45?%gbIKk\w0"N>hO1ʳޖYk ?Of7EO,GzћM6]t+R 1BoQ@nbFh; GcZqUD|El`Jet[S fp2.is-hVXʦc E\@_@uZF).oc=sl#8>Y*Nl2 X=(jξSd=&JPoD`+f khZ!o݂þB֧z!|yoO/boI} R6zگ2nQi*öej_rQ2BaA9{w-[ oXo1bq?\z!?vo}-[K^3^ZȘ^ū8 wd{ Ax#uMQ፛q<6Ʊ rx`HW&<* 0@P\O7Y#7X㯿a+ay#x4 W9 / / -D) sJx%9[bZZ_]Ť>_v3f:rV}Ty ^€Hw8DvdUh Ѯӈ^ߺ??C3K>BS0oa32WGo"ӌz3^ּ:"BJ0B M V;Oͱzo-$@@ ȵȶr+[;ZD e-meXʊF:J.x-K2AA4H[M͚^*mഉ<;8z IkO \ r^NH׸؊PFr 1`,.4P,#ίt)ޘjTt*Y: f]oJɪi 4euE%ҐkTࡑ={m۔b Ux"х']![Hdv\ yR7vrgqtU_mk_; qv[t-j#KfB?\_|È)Tc| 0.F؃Եi„{ljā*E$͔`Bmq #Mz`tF66Ғw@1$#)77ـyD"Vaijz S3'YM1[xBgmH̕r#C7c)xB1u0,ZѲW*MN^9%ZלH>g qNdșmCkϴ"*]yiݎk{#tHKQCI_#"DrR-!jc'B +Zr>3:&mL)SjscmH#{jnFOAVՊ66Y &,uR8ۓ8}RD-g!y|蛥lJo}YA f*JIsDCUR4)/$*D*1FE1S2;6"WTD|qʝ'bBpȒHrxmWeM>dcV=X*geTfDIeIG]f#Ê)^P^dm)%4ʹfѢ5R謷hk;N|E{n< ȶ{#K]Vxfl1آeeaDoY-ɐP㔼'3 jL XtNwo۝Af?}Oh 6kg0~&@,B vY9ꘗpʨxebcoJWS'\)]jtRAkCа!i[v3s&XQuvߜ* h}e<ߧ7<ZL-ĊN=zoHi*4ci;;ҕؒge1?i'{\H m#-l _w,XX=zH.I? g+o,Ŋ_85 W/NHiHRK2آΏhӍ%0=uOb7^[7# ).6Z`V 9ЍAG&~J̨7; .rb9 s"d8dY 4ILtfuKn'_|d$Xo(NF ԜRN|L 50g lӥF,,Ц {L6+ k6$|E+ˬ{*~ϼ#\<\]­ Ï[w{RJendstream endobj 319 0 obj << /Filter /FlateDecode /Length 4152 >> stream x[[ܶ~>5-hEn\ q"E>H XLϬ63S=EC]6N( x)˹|£o/]Vws.w^r9\~x}ߘ0N)~yK#K+WZ'._Vknʊq[ܬFfކGj-.ű^nQoU=v߯䗗*[2 p} yrk)>D5# Yj%X\{Z+Q:]M9im̱R ^*xWPϖV4u\CzD1[t[ /WexN/qAf__ #mTYÅ\gEUrcAr8728*]جHcAr~4fpDa l=5%i [?\N}:8t +^-iI* ;Ș{~NtLa D:ssiL, W8fW%N OmlDޭoK vu=AL /}YvHۅC <^֋zo燿*}sU<)Xa{]aT=% fY1n=MxP왚{V \A!\En &1x`HNyÛL+ YBƼpmɬr^& hR5,T9wPٶE* 馇S1`4 sɖiB+^(pe++Kc67ڙ?~nhdB{yR /ү3 Gs&`x^_ ެ ~M"R'r'OL;*> PVQMyݟ1SAuj?ucK JqjArBOXجG}!zԟ"=t;eV1# %ԧc _*lV2qe}wM m.c3l,D;ċu x~j\akæG屾_ BVWtWtO7GWqvHavRgRly꒩{ax}"c_ nbrO!ĝN˘9&̓JQFQ)>疷U OhAiaky)Z38ԃ)C}U((-[=bGӡS|EMdfxyugBmJ~j1Y=Q32UtnFvR2B{Ehţ\4%{_*4Q!EX[\>\S+-qyEKo7&SjD۞ێh?D 2#%DߍtuDIJX wT&ׯ˧9"':jH"mB iV B L~r? uɫ_A6u]ReYVؒG)csgA#m]4W?K.s3NH8Tc}rDI#XH Xr M: J^-=_6y(|HŤ!A$1;2 lv>H&1Ӌ|a԰0KF`"(~7Q`VALA2IF P^vP`F7<^/Jf/eĻe Mrmu,(D#f^]8R|< Xw'GۏU1ɯ-Doģ mİQ|OJ?Oi@n?pPҞRr)`xp<\Ů}'m 'oQHrjl3JbMǎ4 P O"u>&b#G؎6SBjb3 'dӣAlw dDO0;2^C#Ȟ%&!tx(ܑ%,!|%$z%6R,lAśb;b'("c-rG2|qD}#G#LI8[jO}C?'?&Qec~%2o06x {l|F~~w,d gѻx\y;ȷw?~7oa3tA b[+u.s>8qo1Z/ӨߗyGژM/!r?+SԤR>T^2IJ`aTо^`>sҽdT KPH[ThskҬ9XnD)Ӧ4R0@/OyGْ+JNZ;4ĬXJ7>V?p5l? %FC᩿Rktvl'X҆l/uq٧{,%oKO x5Qld](+krM/%ukO 6^fgM.}䲚n=]?G`Glɒ--<>ݐ՚Tx=\N,m h(hb%./뙼0ɹ |aaMgP‡KB5z'ez=~zٌ7&3DW<} S2;`ufk)dTqQӂXCh!P#8H*3dZܶ&E;TREËa_@X^hҨR¤6WaДm}hӍ4Ydnwe!ͿKDTdUVRdM? I r\RLkT{3F|WOuUϔhay.wahhI`Rb+lSr\ V]Z[h_V&~Ƅ-@h3/Y|\ge/!C*+gDƗiU$JGӆաXqfZD0#k_3JU(Y1-EqRx]r H,N?Nȹ/| 7HpJN=jgNM'uduԶJ QmOľrZ~ވ'e."k_VXݱ9nd׌۾j(1ſg+endstream endobj 320 0 obj << /Filter /FlateDecode /Length 3371 >> stream xZ[o[~oAV<  iEZe6б݇~s,h_Ӡr8;o]AjO{}*K0⓿=(5&pLQCc4ƘpuZCAE̺h2ansh(vjmSf%GiCJb{Z0&o0E':҅(δS4QlNyWl6Jf~ וo֯ *q_wJٝ_oA m5%}4 {㟦lW#M6%΍2 g&&_L v0O݅mnx~+oܷ" kd hUgLV&ћ3 JW\)(=)g$)}GF@Wލ5 O@QXZ;#pm AUQ)`-r ŬJTE#Z[Lk9afZMΌ$\[MpLIVkqZ*p͎:e qDk7\=xCenE$m*P:˜l+D; RŻJ`ivsr5ٌ\ ϥs }3ڢbe~w~7oOXt|Phmۉ"2]j5Xt[j MlkUĤA $H q^1d hH&DS @f$h%e!ڎ1QYD ^Es;*4jHP: e$,`BY J 'tW@ i2I>JYH]^&a 90*HF;Siev#YY~ OhXPbcU 1UBb!ARKek ?EyD4Qe@ yԛ1+Pe4ڬ0:HE d HRAPH1NrG)蚴@lrYY(!0gb8u$"I"3YR'p$8P,I\Ŷu€"EH?g". fu{"qݢD] 2殓pMKƖӻ%¢X69#ޣM(2U_ .Nn_O'\ )z\-Vťѥ:vx*SC:xwKqWTV|1Z|u^nv+Kcy;E` 7]9wmŻ6bsmr`Er>m*6<^mnec m@/6#⚪'VtpD%r_x;@Lu%{Xq~9OX}|/^WRfF)%bZ++ج8H M/UMt]v 0il&Q6F Rڰ<`k|ؿ3_1276%9`&,yo;'/h@ܦ\:Qk 7 N䧟?-w7Γ`;Ky0HqkT8vO?܀soq-P>VC?)%?hq82zgBհ} lgq& UWҥd^!c"?DYXOa>V9˺o捎|Mu(z<&,vZ*&6>KZ -y8.odr)qKQ`(ۻ {樬np wqM o!Z7m$xnk*c2])X7}":?}fj+:EGtY^Gq] nZPDqY !(YI*gSy%&6gG0cɉz#؞f(Zk[p & |lOQ7J@ǚԞ)T/W}2q+ :#C8*(-=3wB+v{s\6[;ru5oѣruz0mgmsO炩uK>_͌<\8җ0Aq,f~Cp:<ľ~UJ6'%OCH9A Ŵ]6Vq4ُ 8h;DxO>~mon>3弧#S}cJE*?5шo' ?f`m]3frA6N?]qBĥvOҠpsOgR56s3/[e@kI /Yz6l|X<{>ܳSqm_T~YI)Y/uoyh&YIXI53!7r/,Dc5MAuN!b"c"MÉ~3Z Tn9TƵ~$.] ]>B6 1GpǙ8m/٘ NOܚfx$P꾪Re{O~o;Ш[ ݰ/Xl/;~z' a`0< =a?jfnBid@iIL<__m^`I,b5E>8 jgӾ#N"RK bp/}`~7^Md ?V1E7HYH :N/) 70Qendstream endobj 321 0 obj << /Filter /FlateDecode /Length 3803 >> stream x[[o~_Hf!97ҨvZQv%+ڻegnov\Μ7g>YqA~xyᠰg?(>,<<8psC-SuVls=ǥ"r%k׫+YrqKյbfQd9usַ;_Iv6a2>יRH8; .ͲeU Z+#="{tǒgP5{.L0QeEQIrXliͩ%qC{yQ}o9Y+Q ~pD]PVY.y-A^B ZC֬ٮ2:T?v 3糃_HC~NRfy}9Hz4bXD U_Au:w).+mڰRƋx rmSӯ1D7]a.c<wJ>gJ㍃6&X:ONď'ml7(0ha.R _ocq̈́yV= ǥ=|-+r-l*;w$;3/dٻؾM""U\-4il.{jfY$]JTh)}q ~ Df;<7a*sӣ5F^xnf2a8!RtiթҨI<}_Aؠd!h+dnjtʧ=E>buAj[[L d;bafXO;aq`m0WOcIvTdd"g%xu {zϻcyěJ@~;d5|1_` te#ϯ <F{v{1k?#hWu<| QWuknJn&8ܽ`y&g8<5nWE0JG=u;]@~̑6$`Q@] |i+ Skn3f,Bg.Bzh#~Ç0&5rogm-v먄443$|v&cX60"Ş"A a%0| t+Ih3 fsc`Odz\z#Vp=U@A³y!LVHjFV8y5d`OϠ} ~'QF-{.=򼧰՞9HxD'_qoR.tt:6:ĩ.x63HMA X7qc8Loc t63 h ?ONp]Qx] D Yɂz[AܼqEܽQ~Z֠ 74S&/lĶ\ /zA+ٺ;%/'Ԏ/~Dž)2f}7<0Fyl}1X=AK|L[ާJ';1w/b4Uܧt27+I r(YPfS5 VyϢ+S6k LrIrw:ʲ *ZkX 5lV4ZOi7z*Mϴl'wо &ɳb3L%[ǠfQ F:_=,x+WPUFǂ&,O4Ddiw`BxZs!7 918sO4ǜyRV8xH]`bfrJ0 )Оcq ʐ읒t57dfgnjAvW:A OGxj1ޗ\8 @g* 2\.Hs܉4qA7Lui%KY]C"\_zS/f/];yP ,~!W,3lĥ73(w%#Үo!}`0fGDvpendstream endobj 322 0 obj << /Filter /FlateDecode /Length 4347 >> stream x\[7v~ v"2`˻^a/$Q㮖dC~{*^>vfdK`0`8 yN˶/__б2_~quo\_RX)ԇ^jj afi)3z6B[Inܮ֜ZE݊6Hrs RT!l#1G|i Qhiݷ߼4nolܼuqwk5N{=jq/Oxnr: #Qq^;{t8s~y )D*F%x~0mfLK/)jZZDeyC3Ҩg!intz2'H %G(wX#| aP%z- \n$ݴN:_X4ii iv4gV@k F.B˒\f-3Y7iw,+t Tf5  rVNCԟo>6ڏJki;S=v'GI2cչXbY+l=655CZ >`td |"rX+wsߏz_3/8:Yv?Cw} l|]r ZA&gJ7P=vZPOe-zŪԻܜBXx(MON'5 U|!Ь-@'4)8XZ\z"@ʇ* Gs7p\Byn;ꮴJ^F8WX: PSS}NSʧ^e*OMs)s*aj󮂓?&}u&:tPF~زhVl-@;tDKnApgW0]A7Tӹ:PmF_,ppX xۻM:,Q~?rN͒4{+濈0,^u`*¾I 啭*FwJ<" NFIc~OF*IYct4}8. >:)$ 'η_ea2?:yOو6VA ˸\a15eQR9s|>\9WNIFT9W7Ζ4xMe1FrMZS\P&k+Γqd}h3CU.zA2C"P0"#C sX(0 GqMH@BpD ؓ:%W08ZY[qZ#h1[xVm5G[[}p m B".hGzXL Me8r :Tiڱ#!EjpBB;:hY0ȡhT.hGIG!2[Yv@Δ&*Ǵ#jym58C_x#FxaDy^+pE$\{Q %|s16iVzQg:.|jVeD,^ fU`FA50+ʌUχŗP^X+ֶ^5|8;4/ˉS?orϺIfm8EMmq豵Nc#@<*^-ⷫ5^Ec$+A$ˢڎZdP/lVEcOP/*jOwYH 1{xH킮&CD5[3(ke[zLdӥL"M6=D$c橅$~8m|믕cfҚt!5n"ǘrV*Y.Sʻ6GDZҜd)yK/z Hciu!,/em4jDofQc<rzb71r|ZcnVt_=Kׁ]^p2C:hS\s8!LwiY֥>qQ@H!$Ebe+!T4fzv'oz'b[rϰ0:M::QٕƋv Թ_,EȵN). Yʄ7o&ѐ.%9^)$;`/VP#(cO}b[ )pD1w@RZqa;94jE|1]SK!ꂼ$/EZ?|̉z49els< @'9gy^ ׬'s$Ɲs3h@}.F@}b꽩qO;-n1EHYR@yq|m Hу+@tqQKT74 ȁ@Zh.ԫ,*ַHz)b]e2VFb皈 :ey 0j+Ô#0֙A7(9/y"_Td\`"ۊs\[LJI`rp c4OSj\D_b1URE8zFz04駵mis c%59*P`zz9GbzYAO0N"0ywl+[H ^S¨ۧ@|bw~+fg su~c  NwXJObgA"Cɖ~w=4n?F^PǓAFUb7T# l@I!EȀӆKHǛx'΢:!ᄷ(+1Zh˕l}DχY|@4SDJgD)Ȧ?:%LO{3Ƒgz v)dU;mzqK.RzI7ͯu;3,s~ČquDax$^4Į04*FzjYe!*A2R9+4(9{asȸ>7d11%سax/CbzEY $0 ؙO=di+S}x`i!aWeG)kGCK'^ N@Qm1=p d|Qx1οg }(\TH4 wv/90w:rg8Tq#~BևX卣TY6keÊ4/bendstream endobj 323 0 obj << /Filter /FlateDecode /Length 8070 >> stream x]ˎdqxc/ /wlza2hHE Ez~">fHB![\LU׉Y?n,{pl^uF~뛋}Qƹ]Ko^+nSJi797|77xf!ʪݺ)9~Ƿwn*=ܵOyq织~ۓ0_?|o7,[v%5//ӵl.}A!l^n,b^;Ls~wg.{s(/J;VEJm.Rig$zK~cH_n="J+@Ko͗G'bC&={]x!`k%oo'2/|{xjd9y{yv0u.mIsX]ҁqG(Ty^_|UL~|'r 5&]t;lLnD9liwyR9|=0|cr2\V0I^TnvR#tB+Z9B݈I&L:'ߞ'}.ޙp<)] u^MYo?g=hOgŷ+m52DeXތ 12<~tۧ,~c ⸶Glyw/`El k,j| 64ܿPoT:tpdUН_?(5d_b=TڮnNzq7ďYPoٿ3rߝ#90 jXxlqg=?b)aǷhh)=np{.9~A g VΜ:˫@Z؊PȾE\ 8mH =qYcROWyg>ߚGr0pr\u`|Ll<?ey=?dvs2#~4vo:n7?/ 9 y?{5?hj3⇛iW8ƨr24Ey*b"[k7jzN]G+ _B)R? 't͓L)#khw%z-R kw.56~ch]\47JQRU \5j" ;ܯV挛mf>_ !3kHYlexof`3Gq_/v f2q%KN{czxl6ZQZ5y=|Da6~wVa6,?}1ۼ+{[??wL+q4ʅ{l:~c#F2A@;)RJ\٭ݒWndע_B g`c#yjlG:ݙ5_o}>|}i~|"ſpO_d=Z͸VqkWWv8jԖ76D6u{eS o1ḧv޷Y6T\ .S|`]Xh_UUH*mQ9{<M Nlu6R, F^Ǡ)%:?6KLh!>3{Ct=FDBz@?!; {@mb ={ &@6RHδ_FZqF)BKn0%I$g}U unAs$ -`,@ÉkwڥfၮX|,14IW%aJRԇv\B /_mA%fw{KveTͻް1)2vh$~I.hm?v Zm6x K E;$0%(tJjSrJOZƔ,ʅ.)"$2&oxiDbCTL-c1K)A@RY>aI/%4HzMp$I;%IXHUdLmb-#BB]=M+%6c[D޲,(hႆM4V0Ipsn GzTJ}yk. բ=WjfL%2I -.4LzO(n5%rxԑk%hID4 GVrRPHݭh;HҦǛ@t!IN(X#+ei&$' | yoo!5>TvK>Rs$@Õ& w+|Q,G y'v᝾†4;Ķ]Tdqz4kI^τ!DYO:B_;5̨b Kgc+Q%XPa$I$KR0H$M$5 ɮ=˒gjs*ZƜJM.A˔hSsc VB_Q %(W|wF$`*?fit ϠnZg|! #\p[h8$I0<#jU GPHB$C% Z`YldHĪ64jIB1 =9ļ*@Q1"%%LyHDԽJ I44v)]+H.oެ /U#=TP(I9YHěU,;k ʈza7C =! 8Qol^ D )9ʀ*  x|z!ޮl1n0Wh(rIvA 1EHE@AbT)!)wB 6л(3e=+ %Aӽ]6%A]‹#܌O>M.rXKZ?.%uUi K!]5sbN'j2;4*ĵʞa*2aR;\eZOqTdpZ4reF_+.>@H\kKkj-t)&.tE-3RӺxp%.w湊%$L0hO/ #P4ߕNXċCM+Z" S$J]d*czs2 Nz54X27.ͅGI4b0ӒT$Wt 1L(CѪC0uM2LJBQܕUețbvQ̙ #Q=I+i)V1i&[;װv]kM2|!d& v֑Ca#-Vu:Fx1IYH.{Hcz3ye7aAyYHoKvw$hrxp< J6:-%A-%A2|AFJ]A3ʠAМ4(S}Cf. ]' ' YI:K,h~hPoݗ*me˃v- tAlvPeBY MdByR 0^KbÄrcP)"BYl֓a *D!B M"4T4 8yи7 ΤApkeҠ &4hL4aiPL+1:hPϕAݚ2ɨGu]04RfҠE\1#I`P/%Cdh*~R6T6'Wl( *Vt(͖e^xҡ:HuaӜlhe5l㼷bCY3 TYRM6ThtÆ&&*g Z(`CjedPAG -RZ6?2PJȃK62:l)"$l(3 ڴl(ߟfCr,.3PL:4 1p6OF)ïhJuu*v^3D#^IG 8DO8i♃"hKQ *W}[IhWB\E1ab yPPXXK)ͦN04JJrf7HVV+>P=퐮$`hV0)4gPM maBz*OY"ɖ3P4U &i{{=<;|EA=ڷʊqm-*Y(SCPHZs>Y$ROE?Z`Y,UNmʛ. KfBic:[RSFO8%e=!)<¼ (>?%q󃗤M76.iM qŗ} b,wxTz.rNa@UfYM J)BUt^* LTer"5.Zk xu'Tuzc@Uu@U٪MJꩢUs=+yXU~d*tU7X5ڳ5U \M괎5`uUVe5m22Xd*X+8ӢUpq怫ůa* WY2Գpկ،¿t2pOXp Vjͭxuߠ~gV7LVWV ^ V_[Vs Vs V؂rǀ,E2 Zeܢl;ZO +p6+(ӂպb5 r&}f\1>rp X-Xe݂մarLu,'&Z o*IhOXʽ<2hU6 ZU4ЪSܳLO*ܔI&ٴPˆm@X T]o^Ѝq绻: TzBU>l*PEe:|B"&TUńrxjUP(G T2UTm <&3``"U/Dž T-ҹUUt>,@UD&R R U%Z UuxBUa Tm# UF@նE >+b:|&X ;UZVn+XM°* + Xu XM&VzlUJHuBT"O?!Џ;G~;^+zn~x'7~Ci ?_]SM qiwx+ү }2#]ŵ~)#)!qa,5]2jtmV-_{z~my1},-Я+m9kKN_R1-{qz;J+]h=n |Sx5ܑ. 3bwhϲ+oK[,@γ=χHZ84/삸9<>]> stream x[;rx(+EX<1-UQtɲE]ĝ (=rbp,f_w:Jv^o?o~:cyϿ<͓3V6J3?ײ4^uSF_ 7? - f`3 1Qg(W7UYI覸7%$[jJSU)MS3|4Kx b4԰R 7pŸۍn-&Djl*XF03WtSR7l6@&Ǵ_} Y-MťTY53%UȏURUhJ)U(8YϫƪX yg7)Z7_{9:OpM#daenJIc[8vezvwo)l߰Q(mƁBK@%AS\gK`N*;xjC#p/8Aε;. |~k$r !/pZf5czinVtL>MR ʹ-4/%:Y=}%}xB[_f S&nOx@o>nPv'Uf$W4fKeJRo?UE%M}xmҗd=7/Sl/ڰz] |9򼮀zKajXWNGXS|_'0M WL'22ZގN?+>&Pu"dY&1m)4xc {I>!^({\5aܣj|{S؈uHA6+3mTaVXY!LΣXm0ab.8n&b8AqKT<Ǿ M,hVJ$xNH qsPhlk z!9ak@DU(ByS !H!Y]"ZL6I1sQ_'Gt]!db&Aҟ7JZVî"Fx 5YW2 Q҇O$VEIkXm~Fq.j5)("@2^TK#y8n|pfnOP|2.Er%(i%kDH]a6pSkbeopRuə ˄wGڒ UBVy Xa9}D_\j%\ _ai`1)~yh.=IO|qd8D6i nM]J^AaCT!R1np[G2ѐS>`VrSOFoj)Gol1RVNC.k645U"ghou|%%Wh1zG (iHz-H]{ܡ'9Z!6Yya]TAQvaRvoY%f:U<@FamAho_/DT]#($^֎o.aE>em.xl?HYKjK,&Vλ-d%< \ˡiid'GWL]})*8 $c+ EfBWWbٚ !LeKN(aKzLiê3u/e%ת 2-XQڏ ኁsq>9q(V cאfEnyfeqW__.q{69j\2ÁFfJbZg)aF ] !!N%ʪx@{/#B,1yG񄶹q%yBB~)x\S E1;eYŰۄFwK1_F7Uɲ9 31&C; ZD;OYҽ'Kgs8%Τ.s0+n1q]uRH+v6z~8Mm*7*;Y2>xU_o+-J.XCBc,F1t!%5Q2e1Y("mV*T[ t#vzbNldJO$>!?Zu@ h]>tD^K5jvs݄\AL˖тp9DDJ-:Mz2,ےvnuq}hC}iYJ1 WQ#yqs< [z֐̚x6uLhEMk!y3 c~ʕ1"X7R׌>pgB1'^XɖHGD1w^WGl 4âK@8 tV:CRTkiKrMŖ[tC:g峐(ăܥVxEY!-|4,Xl%3|VZcv 1SBJM]l\l Ԟ֪WO]><~ӅJ[rUI?].$x*>q"!LQA X::La9 cy@o%%JUZpL4l* O{pBH;f_lYds.|v;ZXAw5܎|'㒌&㞌01('A[Y/ ǫc@p4p&u?i WՋ]dK1gU&l]ӽʮū^ zzMaw) ?wI]TE!;-@ ] \[rw;Nx7AiEoKe rMv ]ق#QDAImccb7%&W.]v7K0`w8.>49>J=}J9sR8q-Kso@'՚o NWendstream endobj 325 0 obj << /Filter /FlateDecode /Length 3561 >> stream x[sܶ~З.1ʌ:'QԇD#[/ۻ @iKq2X vbiG|rsVG?v,7//>?WɌ(Odvq}d𙒑TT\.6GLG&GQK"eqquӔV8sVv,rV슶/ ǂm]fC8RiNV^y ^/^u#1U{'q$S|K+5edˮ닣)#4|9JeFP>aR@"2^;(~T)&RL%"UfŶIp(Ԭ]37Vtu+ݬ:)yP۵>)w #l/aj љ$Aʝtu먈3*[_Z&[b*Bew7= sӑP PZS 4eꇑ+Kl-s]]߹Hb9Q%g"R  gygɑ6+`# kes~.mw(Fb$dVt`џv6M)vl5:>ފ%BF)OgYN&Rnq{#{pV) g#B HCQh" Yz{SjPP-vР %PYxI346iڒ8d~QrZMD%(IO{@SSU9ݞ|r"\hҎD)T6}bS(8[jSƶvmEOl>P.%o=n@;Mڗ|r }gJ 9-+nY<`Wq/cm{6سǰE쓌%Y87g&fbME[ԀAj\a= m0}h8 ˃ec8Y-%5A.:jvg0_i/}|kSܟ=ZZ"$®6(!;$.K<n0a A @6p@![L ǂ|ϐ5QI0nB $Tعk3 D?By#|OүYgm{NC?)'87aҌ,:anaT^n4nH} h ߒ [;{PZ&(}82\4ϡlY?1⠫Oq >9; ́60h\nP``9yb3(erDD%q OU@T tsH38.2c!-?G頂r^?RJ΄p̉ˁ_h/Y:M_ z ǔ.x}ܹf3 ?v,SW;j<wx Sx]]/ LpKoz畁;w^/I#Ɣ̈́N %tXS{rBv ZtivŃf80}}/$2-S!C<:Cjh!r2<#IEgR!Ց:X*>XY u20r´ IW,Ix yFSh9W.*zlM&lAۖ R1?LHS]SMF361k+W~R.O)5\mLOe|ri*T!]|ҹX]luU{NE7lEٵO" skS`2r˯<4OW(Ͽb}H.we'Իsmif5[ ywvBx96 +!!AM) 0Qd jH4 T4:*۾+/Dkmh$V(SXKR㕉|6i!8Ӥ{hr%\BD[b1.-v=s@ g '.TA{+RC~R FF.X8eIKfi2}W!p3UQL_{dwg?ԾlV#[TL*YꯒCqT1}wI[V>4 $R g˽xTc]Ҳ :(t0 Oz8AhV>D &T/B,T{!hՏg!tϰGzߒ5,^":6<E"v*x=Ċr썼0h.<)E/1}3A2[/Kbq?,%_%24Dp.2 <t/nA:|d]QQkR)1t ^1%l{Rɔ'4xTN8"E[nS69и \z5%A@ ỸHzOs1$ q &O^4e(ӟ8BKTh ,c}S;olyeiPk;(FX[k3 {0=3Cx:E6\j 8F^endstream endobj 326 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1198 >> stream xmTkLWa`w *qƖb*KmZ_"Rإ, V^eWj(JiclFMM;Lpò&6>aL@QttMoE21+,35!#ꃅ0L4L#2&ѩL0r\[fſŶ a9 !/S݂94xE4$8GcO/An_l=1ySړz!PbIt|v!;Ǒ0NI޺==z.Ջ*TNrT7 jU-Nskڎ|xГV/\fyB^$ H5II=L%a/?U<]yz`#ajEpQ7e!/=Nt;Rfw&˒rx/%BʾklNK- ~`Kၔ7rE*,3y:sMh'KsBKZUs mc*X'Zk;x3ݏ8t!1'ը(I YH{%筧l<ȿW'`ҨumpHfF-N\OߐP!],aor@@%KA{x4 N4h[m}hS:ծ/EmtH%8\@ML7۲[ʠ0s+Ϯ\1td?\?{6ܺluξ<]gЈk{U-zTBhm.v G29~Ā$l%OB.FwϞ :hAS'V-J*l ɴLt1?ZXQȓ^̿Fc@A'e*V~xxOa@t|ԥ](taE0̿y{Jendstream endobj 327 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 201 >> stream xA SFSS1200K  @R3pFOv vKJ,Dv[ы #|}}$؋∳2~Uc\Vze}dc ? KDendstream endobj 328 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 179 >> stream xcd`ab`dd v 144q$(ddaaX~= Ȟe?B YUQ'Q9a\?9s~;g2GEsJtta4{nnn!%<|endstream endobj 329 0 obj << /Filter /FlateDecode /Length 2801 >> stream x\mo7q^=z!Z kGd%$?rw9"%R $|f8 qs2_j>)kՏ?~QtHHnw!CslR&׆ Ar؁HlFְ:B-:p2}()iAz= lĨ1h.p!DEUOb6[dTYZ0it:pb;OM&E?G X]MfEkgD\zU3MZ0/e0!OLFij@as.̹RSXZ3|5l@q{ c3x|` 6~cB 6J"J9#NJޢ3%,VbQh `lDq շ#EMi6DY?\zY7YzxWKW^8(yC1vyC::'ZʕҚyQ2V F@g]FVH$'pUuU% 7:b0Ʈؘ&VE8h^%&te1P,3HZ!]k.̄Au l^`,'h8"վE8|a1OJ}}>Lۜ2bѬh!ͪA6QA6@0dJma]FbMjXBjAmlu8P.b %g?pe9%ÎXM T_xB;V).y|$鶼 w&8Mz;%VP=xrKXN(CI`ēz/Ayu#Ay…/͞v*]ϳpTYQ2qcʻ/yV]bvma& Zd1_+qz}TkaBCLy.q3I=ql(NĽZbtzx$ X SXX=2Wf*XDT _W첺Ix7IFcF_O $k`t] %{Q,qQf넲,9wVۄCP'Oj0Gۡ*V@XIv"˺`M dCE=`-kzvSbU`+rVqQL˚k(%7psu=P<>K@~x_͊R^h=ɋQ(6֍d9n(]w4**yiXf# ?^gݵ{~* oN  0 4 QW ^jef=@OP= ׃ag 709~5>';)bnN$P_LDo^^:`I&/ pĂBБ4 pЗ !kJ@46,1fpS k+? 9hv &?`;'^*ʙU/cͰȩ0uRH\Ib.sB]HцCu"caZ>-1O:wF0Bp4uM>}h2฀#Ƽh\<<%)9Or%^ ɶ}s,ЍӺ4n7WpT,mœřL`22 bw?eOi2g-)v/0bY9:tx&>ur'>el#P:ϔUfs52z,ie(otSޚ}5yk"e.bާđ[:qQO8t#)!N }ңs|BQη#}̛K+;J\%OI;웦[;;M&z^DD!ٰ| wM62ֶQq㫥Kr%W&%7(L1nhXߊ 7ȂIR|Cq81?7 :Vힸz.<3LUc|jg{A,a>_,:ɚo˚kt5uIUfF0~tL3Ϸ3I ĉFEr?e@ITMY>wa۰->]i$f:> stream x\[9~o؇HR̈4K?&$~r|\;4l \e9RcT1_w3_u6$c\j|ncJEMT֣;02w-̘Ah^U*αx~JĤE]//ɔ^j%jY"i`ڈwhAz0E1_,p6C͹0+^WuY8RTNLK3.!C1*%~?M1QېFc%m=@"Jxnj3M*>.[g_0x=GSb?j.i~Y PW<~Ai=Lhn]fwdm\T h#Z @KGѽJ#1OiЪ }L !\Ѳ1id)hV@) #jfE}-g{U`Ivdῥp PM(/6oBͷ]LTig}Aw0@Ng*#ZxU83#;Fi@ȋ_7'rHkE7[XȊO-C MBFNy)ĸXj0Iʨ hC `sO2eD <8%Ni^'_fܳ;`o"ń__uP{:ȋgac[ϔH.@@",J#EDxEd @l%C>9 NX5bv_a6XL3:gBh45% @IZ{m%ku9sd `zBRJ' 춓4,c~h_an68|lߺv` Uż|uQe>ҥv 2 ˝8w˵{ W˿E-GRa3ODpcOD%AVv ʸV"-ߙKDsi O[tyݺ]X78lYɘT%B9`b>[U!S.6b6cԟQ֠{#"fAR.*W50uhwa 8{"^~шZܖ;gײǪ#d$K倸%4kVM|sR\@DdõTuХ|䕱bsaM,K]bajeuRgҪ 3^n.C+!{ɵNJg@e™*'uY6%R @N< 0?Y SvNPh̖0bޒn.&fFz:6]9'&2N;].ZeRv%ySf #i{0(1,ƅog!hEΨOl NsƘ!-lD A:kvft89cwʼ5&S#@q hv́`R!Jv7v^uUpX'4pugvg }*]gdN,?Lr {ڍ{قpVP/X8Q!J1iE:\<V%|J{.L 5F{l]*$ b0|=&f0l69vb6wf)ήZ} [6'd+G}!NF5Ow.ְ󒀫K5wGȮf~L[SKc,z5[+Yh֧%1a\$* -Mz /3Q.X蝆tmXyQ5au *rf~ᴍK)&*W!LކʜۈCaKZ&0BMGHR759)jSǗza}/άꨢ)V5\%p1Ll3iv(RoZF~6Al'h%r5˼ 퇡yZ&(N_;G줕IuIT&JT2i(K6[dž LWqoAm~,IvYH8!_qukI_SQ?O ̓W^kKm g2 YY ,kbfhFeͮ `6 rX58y9ܞcdGM9*s H*12UO;՜!fuc;Ī0Q ݯ_|gzfWf *3PPuRS+4:>?!Wmz/6BnX3Ai1┰6>$0;r LqhC e] C2 qT0tKPHO OH|O˕0g%deاt'Nq8"sőG*!rkl$C4Ruu `H0m7%|2$(nU4# UșCCr8W-)o ʙ* $?7 i)BNq$q^yf}?O e91AARw#N-}$HA4_&Gs)w{!S^9oS|9'cAsT^ h^ <O3*M?:xI^ז_8|@aLs` x(; _(ě 3| f3N v(/b{]bqhFcCJt8tg_#w?YH-Qke5=niVyILy"&nX{e&*endstream endobj 331 0 obj << /Filter /FlateDecode /Length 3324 >> stream x[s'?hvD x&i#'il)Å:LH!cAQ6uуp _ʎWr˄ޣo:/0GQ?:##e։{7mh#4NMFYNvnWiCiX/0)Anfa?14#[;Hk,Ҵޖ1gH)@9tJ?V!TsY'zV70%Ybsӟ# Y>G>uI{K9m=As2 0 @!H7wہE$S3a J@zRjOu$n 'kyIo~C KY%ݠ1HY-!yٔT$o$ } JP4lTV|ZJ~>togf"!{gnt5,d4~4?hDWco`HB0Y4&X-_E'4&IhN@[qF4'$Ete=]J~2~%e.`?Of6Xpۅ;_1$әkhE|(ӳjH>$7fTM6Ѻ1c62IuIQ,!OlHe,VH~q0)/s2 ?mnBr\䫷6>+!w< 88Î>NFMzT"A־tPCvik&DJa,M6C H:`j7cfJ#hVlW2ۍvWw5K\J6 %e0Wv_E!RmRkZ2IX\%"“w3S3Mj$oeQCoԼF**"`>piv^ƎKآlf7W3[3烝r\&j7r'b8XoO&DPvyxmL m2!A cԗmve0qɐgi()wN-:jEzmgnH8P댖: k;ern`]oo[!m ?y+Y  2`?Ǘ9z6V"M}dғ4/X T Kdqx_t|4\GcU.F>cm&oެRUI6jjeJ/3 `ю'cI~v+f9rRzʼ#̓v,kħB#[RazЬWP`h60Ayw\o㡺|p) إ+t]ndh9L[v`P;wmnv ./|485@5IAxPCGcgH5|r/-c6,('*HN>$z{ Ḋ}BBb]UF \K)V!t ņ#F6<|8ۍ_q\l(w{12e72- edjdQw? *Ȣ<>f56}|ژW[cֻ}{J[7fUb#гIXFBV F њ0 vlsȷ?cf(b pW|0Tܤ!\$ o.Zr+A+\+~β_ͱ]yqݰџc  ɩ1M e]{jYƆ֫TT ؞{V5NnuQ>W'̿dendstream endobj 332 0 obj << /Filter /FlateDecode /Length 2639 >> stream xZKs[tk[)YX#gRpoc??-*6Lcf<(yJI=76~(ɛ\`Vz7gZEln^7E<3ʘȍDtreϛSgU\r fW}o v mFo|3$۫CvH/9;Ё2?}褅RAiG=H+Lh?]wbi{olt286ei;y#?zB\}Ng5Y݅)]c)f% 7<)@66]C{n6fҘVuFoDL{Ǒ{ ;Tb>&8pL !Tvd\y+us,` WDl@IT9\Yʤ`cz' ϧ./E7r0yvW9LJwQDMgD8En|nW8A_ׇ_?'SEv9~W$#R bA64*mmf3«y~_Sс qF.4%j#hc\R.P͔_J?X42?ǿR̯$D1ΌIBInPKċc3qzNV>Ǿ#KiTN(QauO3icÅ,K F ^0'+@ X$}"mzS&A=c5G-Ut4pw^."o_g{zC+K. BDBRIXXq]q:dh:.<tMik%饰̞4>Yn%~ # :tJЯ;R"tK%#!E6EE = #WDr#b͢{!x(BjZ \f9]ead!x+ZhM|hs/H]I txt/"gGz$4-By2L䨍/m %  W]ɒH.TrVX+Pa )Rc"J(,HR-ݬިT:3] )ꙶ膒{/SQS7T˵ЋTaT/`cUl٘JTZnRqd 6,H=^ ]q,cc=T ZfܢzALwZ-R|4LFB` S޻TsYລ *t4Ud0KLS Tt/Rm#}IsHI UM垥keZ2_P-ʬ~P]'>XJI"~ZH5JRZ`b]l= -q =hU@״g{Z"ο.yV;ڑ]Ҭ M@?'(go'#Ѐ펗zt ^b2vĪ9FY{~2c3ȂB L!OzVJԿʥ чǓTLW'(`4Jo£ Dි!^=;!.m/Iß7~;PIM tBuwsp@G_cqɶ>66RYgcxo49S>:I..]} AސyY6;;猢0̯m$!~ѐivރj|9ObT $Ӏ[iiJRYɄN2) ~LR <&[LbJAE9H21ͻQN*]endstream endobj 333 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 416 >> stream xcd`ab`dd v 1420q$<񃵛e0+23P#;C&R>0s{IG~؞?'.{׏}4W7UO_ ݗmiҞ%S:n΢9_\Yq}~7Tn'Yj lMJqpjOUt$l/vpt9#֣ߓ osB[yUsiŌ߯ L5QzEw9 JN=cNԪΒV9 me-eesض~stJ/ Φ&ym3W,]0AnYWp,(.Sf={$P{yG)G̦y+헛qoj3rVVP^>e<4{nnn!*DUendstream endobj 334 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3839 >> stream xmW XSWھ1ޫ"*i~Pڛ֎Zjcn,VuADA$ { %d KSkرuZQU/`͓Ir~y{rB -]l!t9 S]\a[3OϢ5 >IRR+{7""xLmR󩗩? vP@*ZKyQޔKQ먥{zjIRb9M0GQ Aܟ?eLHSVQe<>-sǧMO~yssߌ3fxܘ6?M•(=yn_" ߊMue= Zc\XWx/Zݞў﯂k"%4No}9R Q"!L D.?L }յV,zhBķ{%zF|(Vo0۾2/7?-ٰÕB:c|w+Xm0",:4vi 4T+=X<#z{g3,;>5 pu7bL\+a)X_occG ]Eûz%R nLʌB(:*@}"q vNWx{C)0nqfFܨN2 IwymU'ID@ca1v'x'yC(95Sf$bY{ d7'V*za 7`Sol|≧ >g*Yg9ryϟt<@#XbJEx?s%'z6&-JYLyh"v=]X;O_L?ԋ"MBBvm G49\H%&tHQ(ڇح^Roݾ2K'BaTcE+ZI\|oG t_H?L+ɕLe}^\V: +Z斶M6q:)cޏݻյ"F^t{!% Eݿ?V2У2g>>486c򐺚3ЇKŏueso3²Te!e$$]صUaf>8%=;k* VWv&~]TFyfJ taJ+UUXVn R9ALr1<ۙgX*@9LFLzuI[klMb[Е<`ӿt*,E-sQ˙?X؈j} (bz0'?2!/2Ox<g CQ_fVlJO1SwIޅo 2MpQ{3}L-H0( *&i%4F=ĨQh\4abUNΕj,'l&2+H NFhyWtȤpa|*iY`MN eK* tUP;`0D?Sܵ7FAP jJVꎡℎ [,5d44CuГa:@# SʮNP#n'o1u:wlk{sLeߒ䵉\n2ܑXt ӆ.8GO9Kg zS`\dvW :티ġ0v1Q){ta}wo޺qݮb"kZB#^SN߀W=P\>_I{IK}UYey%ޙ{ 7h[MM-zbjfSd64&4EGg(9H%g/aȩ2Dy,|}WdTwHP:KPI:{jOնkJOؘӦ ?=S3;2| `\*GFrxu$4('zM ($nD+C7;3,=Hx:Oz V`wp1c Ȩ7wP _ ߾ ^Jėcs-1$tZZP'ەرב&f\%8tDDt鉒 =]c#=?q/Wxyn/0ĕǑ̦zٞaTI|.fB&/7iT{9YДoɃݟ~zw<8\= eC6v.nbu5~>[l¬&x8$F-OA}34n;6>z~$4~Tk3Upy 渉7?Kچ՝,U3hS;>Ʌ;M(-`s*gPWШ_q&B9dS+ct<> ;q_WS£}ZT|rۍsw-{ #^nntu&W`I Nt7 Xݒ4UP;j3+b))(?5'uY̽_xo ʷq~qAN|> stream x[m6psk.-&=m$孲~(,6w"@22gf8L~9Iz?ݿ,=2mIjwߞjvBiKN.637hd4i'YO.v3Bk3B @33b=#,az0odRRyRL')圬i ؖjfYrö`*&QGWaWWmDsxl=Y쪺"bF?(ʦ|;yf*\ƬvHQ;[0AɂDC NI{~H]nZ+*xa#bUm߄.,|9xR} ZIAIsx$Yäk,2a6{Ӣ)wN0nW@F4tN&Bp;B e/t~wU|. +/VīJjF_Hl/6;Kje'SZR ͪjv.UiJu Щ^KMp28včwmݵHOY~.Q)[!^zP)kzKrõW,A<ן0mU˜6KO9L},Os:u>jhF 5׬ɗmtF61X?ZNjž;hI+htC97|4V ',|hixXzYǘ=aT$o@;Yc`b$:ee`i$ׁh cٜauP,M[- gAnG.A5jx5F]͡a J]dHOzK1`"fgT d9f`ގPrĂ&.j4XD 6uDo"ťK=:>$5;sʺ碌3п\9φZE 7n[br} 7[9@Ĵl-3&Ƴ h<+AON/͡Z_4f^Ud85U&FuYtj(%U Ԕޡ` gpج^`TA~ 2} t^S|4޺ׯ@wzbnj=E4UF{U޾PX}144M;a UR3^k|rOqe×Ͼ7p)@[S0btj4];=.':n 4GE~"g2+@܎9a} a#7Y`Pmʩ@2Xy9֗ ث&FGE9> cjYj]B{ tc'͌Sxqu:Vy&!{[}3]ҹUٔlry9w`lvT,"MiU s>ngF}q4eV9: (i3RnbS`Ūac 4擰9 ;qoN,Vnο*)cI\K]~#Y0Q9Z Se(o %x7uuviO\i3hMQZ.YLgArQ.*3bp $9u9y\ex,b]E` v؎4T%#C$]*J |'.{x1xx <.CkjDjL6ꚷ` W- /{? Kx:AE'^feY.g}޲C5]&]\5iPs^$IpwpGdEW}1;3iK4Ӷ,EA*ӻ/eP6Nȡ=&[\hjׯ. >=Ֆ0Iw70f*Fq؄V֟ 9wlS?kw_ ַ8=+_@G Ot!*R:辈9XAUc/"Js~|X4ҽOo`kx* moSzCq(78-CQαkǰ^ 9ƫ$A>E- G #hAjA+;zo=R endstream endobj 337 0 obj << /Filter /FlateDecode /Length 3945 >> stream xn]67Ε3F":$@R2l3.)ˎ9g99.?rsT_rDcrsO!<&$B# 9.ylΕfg┖yAV"/xK-zlQk-Zmu.fٿ x.EK)|85Rx?4CFzEs)0vSrͥ~}0,E?\bYWoAm$tѬ$8Q(iU)GAjEgwHⳛ=~zguf`'^ IvrFs")9D3~ikp`4޽)-ςh0.cXg`mR$W:0K-G<)TEKvV {bLCH_CLYd DӒˬ~0|H,1#v7< xc8˲7⟛*66 | zkƚ=b5H,Mkf}BS ~;F:iZ>P#y]z4HY+dYu0@b+xeA47GщTTQ LwUr]h20%UTS0?_FB&2-THvj2%\3 \9Z?Co3fc5|j 8^u_F ЂbW]|<ǴJN۸35/82X# w2;.$IqOi?FByXDzh{y=:Α j[fPqG ѼAnA[і)4MQ~vq'#sƯm0(~{KmS&qXzWJ}|쓗7L-zDirJ;C ~ٻ{|d,^K?Ez֧H%:a{ " F]z4w'>BC'U@`o>UpUraSb0@q.c٣ x~h?&Cƨ M!V DuGهqw,!oBnWmS )r&OD|~2zFEZ| \;Bo-;68.L/ -N\/^#W!/i]mx rsz3u0:"y[Up '*/|VQDu:~3HW2OEt}mEIACErYHˇlQG ȍmc+fSKJ< HĠ a\B003֥$`Q(&tUv~?t.utPoiǾj3!(f`v۳NQP$uiwm&8@KAc Ї0֚0n*'wdTѿWS΅%H՗S^\=]68֯# |M It`$KLm1=P<T yuNJCh`*fq`K&$۸)s{dfJW5 єx; m!ӲPfTP!"`&5*!}fWfL]]֯w JNtӸ8|Q<s2j?ڤ7۷$#Ḭ6AM}`(`(q07A"}6#ᨺ T %B$.w֤&^n .7QyTM'LGN:hu#9,1X`>]m sp5qz.CW(;-gRo7:) ӛ/An*(WQ+S2$gĉ*K3ĕcY0\6B%Oܫl!k"d;hLI m#t& !/&bpt7ΡnI@:2i?q/n];=)'{1Àlmע"N\M* @oܧ}&pBM}x S$_;j>Oy qz{Zĩ5lAu\L4>uL'N-Zcy@ynfH!q$m-"ӛU\Whdkz8lSD(6sLFjU4pKsw";78ySwld3.q "fLAD+xh&.lìzSͼy،cs>63[W sӖ8&r!g_u#ڢ_DQ,68IX12bKbc?C'hVyYc$Wk |{/]|nOfPENX&j!U^OE~udֹ$^!%Iyt9\zkofoal+Ix]`G.LGHRendstream endobj 338 0 obj << /Filter /FlateDecode /Length 28411 >> stream xս7u$~!߃(]ha/lA-=<$e~NU̐c#>kRU_r/_}?O/)ZϗO>?I/zocO:-mԚx/_?w~6xQ~g-<x;j m?\?;R:_Z |w>osN[w?:_3ם7ZK⻿ /ЏV8}X<׍}w|3zo|jY6_|N͏ݔzL;[Zeu^g{}?|4#~#\n?z?z;q֜[wx}??v`?_:uk2vWnG/?,w''ӯk+\v^n eIn7|h/oq.[]ݵ?~wh*^<LwVǺ߯U-ox_sv9}n>/>nپ?-~n\(ךZV}xw]C?$;n 73߷a^86}?N3za~@p0* ۤl6ADo׿d_ݮ?O?oOR~?RL"#R0fmM~z_wO.ckzO`3_֯?ŧ.{"rM+ld?]|w7ekۛv/n㿗[kfOh<ׇ km:r{^ ?L)cR۫z;'o볬ϵwV_X^Aˣ-z{ɽtӿnL락Cğ/_C ?K){1[ez~;h܏(܎Q ܏,~GnG}inw;_ʗ6nYLʩzy]_kiE6o>isc{9K]{p|Է:ۘ{q\jyK <+F.~FGHQy5֔=W(?u=k\opėya O4&q;cW5gyx98IIYz_c;KI/RUU^g{۵Wͣoe ` rz,E+/_z&k|_|߼{zM^/yƛ;W\ZyȲ^#00 @L5 cb$ĭpd=B\521/ǺYCsd^˝wWLt|YP02iǬoZm:^|,;Ɂ(*ZYpsSa`̆/wh#uם|AzǼ@;xs]{N 0s;i.s1CS`iKa89YgH[/_/)4q>Vykz|Df_rˀ4˝tk>՚8b7kcoĵn|/Dz!.lUXZΘeixk`=a#8ɩt"["aD6?Fb1xzqL>9cfLڲNt]ͬՌ YVoe]Rϴs ,2GzLR:>Ff|52i\ȀmZХzryf൅+4kdb݆akq&dԊ51ZsaJY8iax f/.f#A|كqpۻgfuS1999-9Vs{] Y;%'!\\ \K9 òxrO8q.Νp8-2'w ;qr䘌k9{X: zXטk)Z[1K48c,bYوc`9c6.HsL5e䵚'<萵6uYٸna' Z^˹pK808q3,19n.%_NOI;{qc睓7o; d[Ƿ]=qd`݄=x浜cBk n榬O:*g!p25*'Lr[# 6IkI霔kxu5po(.~XN`\ִhd")dkf$R7f̡o$ϐ$ӫ\^Q|ӻX#$3W,C5rh,,ːDk6\h>5z&^kp#КǺ>n~q3 ?o#H䛅kQ -jĖjN;fsn)7״n,ISu2Y๾l}XYO[`Yr#߭=|P}Ә nDUn[τKrߙ 6/nLy{;XW)nȾv$x_;)Ƞ0Phw߾?ֈ*9)(%#ӱ;wgEyv0dFNS_;\$9V(թGrv(cYw`_\R礏/ /7O!`GޔnB-)P@j]t y A哯D9y*"` 81̊GB1 J!Qf`p [V8c#ǀ0XeSq 8JcV3o1 <;^cђbhꎋwu>\;Ly n(C񊙇 [Z#Eyv(ɱa]ij Jd5d=67* =Lº~?.:mͼ>yS0A&tz& X؋C5r"3=fsk lӆY+5챘3 (vs\x2֊'&^9+VmG3+T]}ֈC+ǢK3L]k?hZf;i\{Е:*kW>5)cMS+VbӱdBKeqN!,0On5ri\;8`x8Xp<`+&LbӊM0F\ e5vrg-Fx&Nȵ2oy8PerṈ3cypnwA9"*؇0p_}ʶ&<Τ8eri Y /lTVzg備Zk=y\vq2uY[<= p{Ne4Ю2a$<„"@Gs‘yN^cIp}"^>ry?'k|#r^7<0 4ċZZXqX97c>z910s5xpW˼a\^ 7FV|pd\#~al{yOv'_rkD֏۩_EnءmeB9[ys?7?K ۧ%K}\ݿMfWS$c斪i+ii74Hǫ@zӹr;Ҥ_LJiahd7y^k \ FsAPu_KZ$9ȥ5lmJ{x (Z)WF1N6.w;Q+82#_41&7|^F9^QDիmϹO9~"rJm$|=ӻ܍rF6nLJpSv2 a1B~^m9k^IR[u>ye-߯WѾ݆uoκ˵X#Y~܏|£n7e(H'&#Wܜ#6rH]+jKF)ʫgFG-3߭X5YkąP9 ;K_7#wLtlr[W0ܕ}gFN~3C^#25FAy?:ֳGFNy9p)2X#E5٥#'d0 H2Heh&)pZr/倢@>*&N~gݡ\e`o#܇ScwLD{_;֌=1 >Fqٔ۱fxcDxc"00{5;9GyOT 6?-q;IbȎQ,80Q_Ny0#w!2LIoY;XŎPƚ:3kpb]{tu9d.*K) ʀHg`1Sh/ZM;|kA+R0شm`{EĘ ((cNpNVHYS<<  h 1'+x]55/0Fdby#:M֤l`O8 LȮhp-0ɬ%b-Z_qs٭T}r>%=֧+:&Cd2+P%#qz4L0#Љ/30!C#C3RH5fwfd!Ta9E3rM?b.Hse@|/H׌#q#>f֌FfGv7 1P5Hm)krFW|±.]Ԛ_'`O,d>& VZJKv}ϠOFznOrݼ&IGOtcV F-f #p/"pG9Ұ*@;Zd8NBތ{ zk~v9.̶lX~Y\4 8̇ޟM@IlnQŒMD!**>:loa>8e>̣ܠ;J,N{CA]}WBŹkC a NJGáe^|V{6`ܷu8M :vzOl; I׎JGyݝ\ǀ\"$/k(p@~U|^I9O5-[g"t L"Kg(r\F'^-mb0 G>2bHRҟ$e{u ]:Nux(ap%߄1F*82PR=3u=<ٌEf/ `nEpjjudL!Z-65jyy%Bu}Fz,k)' GY?f`Е Wt m5=8)bî!̣t`dް*.%gwm0Ӊ& <3ǀ $CDseJ:QzW9waQy+aꤴ-*b{M( i`׳_{} c{km2Qpd+uMw}KjMs#OÇg*>=\/Kq߰Rp:f}XC?Bp׆t ܗpCM ^f$0= ؁Xnj 1@?jL)t͹>3(XvT!=OF2 .?   gČᤢDak$`8Nn"4p{1#Kdޙ(aF2ȼ,f$B"N~Ctɑ iB,LIy>w&3ĤO'GAsrssr@r$mJD\wʜ#61og(s`p$ 3ɷ%&Q$] cJ<g1vΣq 3DUo?j!n(X-5靌9$vՓsBhڎ1ђdS5WwO2ݑgh.sR!&ad̝rO&epRBG* &NNC<<;D#b{Xx\ʏ4 %c8prMs7t_ffrH%aj B39+[abbb[d|K@gF~Qbc Sxf T~c0pyDGɋU^Pcjѧ52d(E+a:81rZܸ2z _f?GY.F8sr$5eK"tT>zPL3JLHx7/'G"*^9V`i9r5@$KE(Nt3ͥe}],_NP@%h_/,rφ8fif~@Rh8P~NDsdyrTfS(rc[$+ƇrN6_o1V;_O))%TW,m *P2%>&SJ|u8_>k|M[oW]kI^E>\E.鴐|Cȇ} 7 J#v;m ^2 JhZIpX_p%XдnFQ+󱝃RC)q,_S;&;ώ|vm(JJrDoL:Fba1c!Ō=9ls_Ya^ ]*g9; DT% W McK-.#SRoC(ד#4 ((ϸkdp:R##s:U3A3h72HtNUYt(t*MGL$pVE䊯Lj0GhQ͝ Z 'dYmσ(;} 3Bvp/_@M1z'p>gu*Ɇ1ŀT&ŠE5m)(1F$40 Y$OP&ڵ'd@*&dA`4!Fń1>Gb;`/"́x{(ioCTHl,NÑz_U \4үW\5"y?CN41l/,cMQo/§kB+vN.) |to&2S)P]4L;q͵q&M$Nٵ<$M O6^S"FˣVP=ƩEV+4F jsEmW,,T˲H48CRDMP]/9Eنn)ncqo-6'M~dX\q`,_RYhGRg1 RTy~1H4:֩Cqc&7`W՞W)R U+8ʫ;r )"Ч)☳" Ky;t'EQpT>c۽Z*UR_q6\`)tA%\^ٵ=+6_Ch蝃(Sݝ1>b51JrCVJߵF׽W^Эו$qioK{CJWioNdM!W(GWqcW;UOjCi3[2NT< 5'Q׵DYFLӈ40nOy8qeDYf5k(Bhe71Zhre}^n_n⢐jHQ J H)(),أSʨnYj/7Uq6<+c WhF[uKJHfɪJ+y%ՠɚti#S}8 SMRånıqw -)JgMo5B^̛ov>DK,0jleXY1kVUZi8zFբ[!HfX:ԁF=I͒vBN(mJMXϒb)muk-l)%ll?NKKE:Jۡ9(oqA4C&pKɄP,qɂWtxm%lyq;9\DL9R,eς ;A-CK>": :$, w#}vn;%{5Tva|xر~;NƂ(3SiɢPoOISq)ңqSEZ1½xnWjZ@Fn{l*5xRhKMAZtqh$6@vVqAF7h~n*luyuHRAܱլOކլ'QGb֝MpǞ-f}#1kg/1tZbɽvnyXb֧iRVΧefլI[ڰKKͺլ[HZj4nܕn#f 3ji-f pIiKͺaiY[VGtEf Pkw嬣z-.YDsa9>(rph.,g -gmAf}cVB[:qb餱fKGKy[,y:KrJA< ue9)?")3݂)M=>ݸ&ۼ6[n7̻IΖ*ލt%f;Gu!7{=bB^Ge"^B.J!(Pa<O*(2©oQ]nIC"Ȥqa= ߂Ǵ)l$+26m,^o%2L-[cH{1xi.Ilv<4iAp>4Zg<'mRtT\ qGj뙀JENMm-FxCgYTDf#!\Ӗ$<`Фx{lr:B"QE`O&)/4KWLyLOn=(F&#+C1xc<ܳbk Jl4L>`X੖<ȠL/S0-2[d0.,s Z,٢ %2X$@mш븅%(Y)O ~z71Z ɽR?Lvdgj!"# N-DRB_F׺ ۖx%>wPY-\;@h|z)*Xn(!F$#u~_QOtByך kksZ(tľ!`tIss/ /hbX;ㅸ !( }--5: htChJ.E0-$OSt"C`gCuS^:^%V:D_\9+{)G b})UvR |?$S\b3@M=XDfjH&bԹ8NDtK5%$S\-yu f 4mVAPSm d%)u!>V)BS|RCBm$KlQ%"RRTxęP7_B,p^Tp7RPjR`'J)JSQ%ԕ$_(Z V k ?N'XQ8i$UeP&aR\uKJ sNP z!b)R_uKZ r2UxI] ޱ) d'(vICC"!,ιX_Iig doP/`N1>u6uC/E)vsk)m9+k LɅma A~.bRO+Xn+b"봭aBOֿ/_{j"$$`嗶7LfN&V~GeÊqV~r[%ekBZ%Yf+ 9/嗳Z/Z%ߋd_X˾l baRoE/t+}M їH>D_gOq7ʪ/HPX%bC_lRRaoӝDjL~?&HaԯD}%Voٴq_c>P% yX^`q n^pKhEG/KRKtX58DoT}+e4Zsӌ g|/Cb kΪ.{"ZK(;7C"K} y'gdWC} a.%%$D v H{iZKxe)/(Ž$hILFP^ Hr5'EkHgnd@#ѿ!+}$Q3vW^Z#0<-ްQ(|hOGAearAo vcVPгZ( ňYEЏǴRܙ_b*xl0^."s^H"yH!(!E%ִb)8i-WA|nr"pfx-")3}{-Qh@yg]rg/z ʑ,Eo{9kA{(S q(-L$bfkaiq^HV6Y "86OA{-R A.-FPZDd2}-[K\˝q)^LY/ŋx"G"MmbE"R{!([|<ク!拔-- J p f )R&ˋR|pI}Lx1e LSMbA!99 lŮ0 ]JIǃ#h1@Q 4(2'\LXBv0?HM$J'!H69 @r=U˼UUU+ӃU݌z-uU V݇|1Z/JA"1btnu0އen8E،wRs 4yIȼ-;cb[ I/jm%>/>8^>7(mLF5JI!%!-yCQY+T5v%d#2zY#h^Y4 GY4 bã4d%ԂN(MW4J#oD&@b9qLi#Q8q#<$gZ5)vl2:4-OdJdŘgtX@SeQd g(WEj7#QM3Dq6ӈh,^\DrLFk\iG$E+gnD499"kt{ Iȳg<6iD4Bb H!'c][D(xFp=um񌒛*mZ4$$KzRߧi54JCf$Ficf4MDD"0PMn)FD Q5(Pf>b4:3l0:F-QH,"nFg?(*F09#|S4oJF:blAhtNh$xF"H<$ȾFC$Q#Pr&m:C3*/ (g:C3A̼ )tn+Lgh#3AT ˆpF > 'hBEg uOc_ΰFT6ᄻ+:CD1nz6!vdp"8Dpo.>CϋdS I[+ZF35NW'!p: kT| 1ho$e> Zs^0l|3(ڑ!>CոDh8!#? 8=QEh/)!b4!-TlFÉЋ11Q(mBd g8߼L)BÉ^NTNEh8Cጶ<3;!z(N >C^#f$ F62aˀ8sjQǎB8`_A uN_G(b"i;H7Á@yA uf`q:'Ĥ>)u. 9@2@cQy_cC >^;z' qf H}R4c# >,ԇDlqJ7zn5"N)aꉣ:< @@'? `:` R#@b@jЀJR1+KRc#1 5Bh HFHe-6M 5RB F &1yR"BHԨ<ԩ:f u*r6g'RH O#5j$DbG 7zsw6*wQ#Pd[8jz GX$kpԈU:&y H}&il$5ĹI M@ R/dAQtV`bb,(iE  CUOJ*-(5BU~3TSb@3;/nV׭3qΙpĀgFfԦnم UL/KD5e5n,9vcvw͌H7cwwLDrɮ;|3CUM(6s6eTLM[uLRSL jTh7ͫ96]3QFY5UݝfwfMjyh%i:\=FwLv׹[fg-3y27Sq2-3;fZt -3ͧ[ff-35A s9LsLm0!!MuD8BD"AǦ?cL1T 1`,!Dd 0~0O;@݀:N0(=c(;.Œ|1ČAB;\ؘ1vd m d W$6 c@_!ĈKRƌ)D!40M=(KmmX;EJ@3bh,yoXCƒ+4i 44jYJ`N 4q@X-6f W$4ƘbČRf,b z&عr31Hqf U{`ƮvCƌAJ.Acg78 1r 2hT;M٘1\\1Bƌ!`cA`c$.j9\J䂍e+Ʈ><O#!rL1ܰ1DN_6ЉƲӐ6TcB'u)p:G0Vw^@jyK9q#.e R]uv)wfXDC߽RzvCJC-JYjJFV)&Jh-dc@U/m@ jc":V19V+9V{91pr,*8R*0c E9 pe9vɤ9#p !Ǡ9*Tcuvr CX&9x7r ֳW -Cj:w 9ClĥaXۭe%4D1 (ݟȱ A)-9Cg"@1V2#%[`r#[ (\D1BeLP>!OΪQl^$bcP БQe8W(} *2.+*uw#եoRSn5o `ATiT9*"-8N&c2l>""b<9_,.jkTc5kuE0liEO\#^QϣA7͘ʔz̶<4s:j ~qQ }`e盥D4r7Ӻb(O m=OwԴqG2Bfm d-~o x0L{ m*r3}' VqK[6";q٘lu unzOpq5:@懣my0&plxp\B+_FW{]9ǟimcO7&|`@ +P>Ob(RV\0йAW\6gc /Yӿ*%{zN]}?I&7ج.uu1j.\J LהcowE-ݸ95S\oj*MGV~Np]؞쑜!Q[ j'QG;j@nUJ$.S:"24z⺓n #gov^`=ֿxPV-rak_ʾ΅`O9}HB.\r,RN-cr4v17urP/^,4f#Ϥg>92$~K lZff39=<ANӯJ9f%t.rH#,x?ENj xoP/QDC80u E-@p;l!I Hp1 H8=d M!aa-P p d]Uc/Ćx#*R{9dQ.2:p|ZTDQM BݍꦨnT[EOw+PK"uܠfUEQJ׃9[fx]lSa5!A8 yC C&($̏Dh$5EpFw'R6#y:1 JAS QvBjE; -yXv lJ+^ȱi esP\lPjPgM$Z %ڭr!j>F9@|.#juL*bOȅnY8 DFҒF}@Dt&FGO!k$$ )/h"#D\7&& ڼ/JXJ?/@8܇DDS`Ԓޭی+#`+,Xf~FBx["p$Q)T@P_UR_WZCCg ,X1LCAWdM`S'3"- ) H,4`S+maLBjt;[0aQ,(LW$l3#91맵#6_UxyAA>g~g3({rďpw,>"o]|g:,!yQPfg*npJrw^pΐ3uOWC(&*WfŽHs&@{є" Q<{o&\lDm%DKH41% " %)0 k7bɀ-z4[!B#]]Hv7*INp>;9LQKv`tG=>`m:CF$qtU7`A?nAN8Ԧ3JǨ:nPGu9w8 pc ]콁9Fs@`ܙgrgTf,0JD8N2u%xPө+hy{@ڠ}U  }|nys71p"K8_~%^>h/%z$3̉ J(I ވ54Y3Z=W[9>Q'QUP BKQgM0H=HhLTdVD最&$Ԥ1\:#dh i"heo@"!n0>>xc7x55GO`s5s7MxΨS\hU!_|i{u `Qw֙Rn켿8}NM.M%Gd[ͻp{އr_%y#)Q%-~nm<^Whj.Xhp{R(.\mNOu8ZnۥZjDڮ άWCR9[}"[!J)J:x)iy? HF-"HTwoO)PiH3{n]jޭ=zteOO, ,VxS'PGZ9av$9z$wP˵,S#YJ) u{$֥TYYj!=oPbDeJOv \QFetIkX(p<ѥTtrj|t0GVSiѽЬJ|BEYm UaQH?wF(@"e(RVW,$"-@tlE,s\a9"ٮW0Whr ayf+ID  D=4B12E7r4C2!qDg0FB JƙRO k(cWP fUijCzkbn87&lek¡{p@q7$PY0[}.,FP^H.ie>)!4bx@5T Zw9i|S}HJdP1BL5sݞgEBԌD'P]?rrOECpLr/G;!A[':vP yRTarsQ *W8?vч]ܘnwq횇ۑÏzhEŭv}x; &3q31 I.QK1bG6aCb{;ғ`ТT`Hj5 45g55gS㰾B7Ƶ6ہe;ԌtxxIҞ0Ug$J*Clˡu 9ʗkub;K#$@Fv( (-9TI45[Ss8E5[TDT^)C;rpeZx^W6L+cs I:sVAڢ=C@;+R?c@9fnC)Z6g5#CwΫ ΋!ÂlD5Vڒ[U e9]T5KVs K} frTk;Cr;SsNmTܕ.[Uv} 01 rLBkV]TϦjlPj6gfGTKSӼKSӺ&`ʚ&^Z;~dS: W^yxuwr UvNQBlAduE]I ;!*5M5ۡlVSނ(sĂ\u(q@zCyi.c4)c4MN}Wmt.ƕi.~UڙiSޖUþjr,]*U[M3 e1`1Mo5(n1MD,zZLKL[L[}iѱ.1A…\bn192[\Chܛ%ᤦjf²WP)@g.br EͶv1^f=]cfU4.5&ڥti[%ٕG4GurrDrkͪn9]7j8]7hV4!Y%q$ Dq*J8S^8;r5r1Ðlݿ  Mи#r/ :m9flr]$KNK@RAYMsVӜFm5M{^#OL<]P rG A#6tnvi{tT5/:<z?T3(ki6gR 䰈j~|g1_}Ïu͓^^~P)'^g˯_|Ӊγ+H}5g>&foGׯ^߾⫏>BUsosd>f m]OWXWs^z|pgo}4k׿}}~oc=<\ W|#O0N7;kY$/$z_q{q|k< v\+䨷LO~Oד%xwizFqor]~ 2$(ה]и5c~g-_d85|fΓ~|gɯv}.皹?dXoF풁U[^hH.ñ n\gW i egr3=BX}``z[3OT|){R^և_봥g\`]:履}^Z żkXҾ|ws:^ֳd^?}e+dc߆@£x];&\ڮ]X&u并ǜ_|=~{=7zX)~$ MM|\nϯ>$ן]Ǿ[OXXv#i~}[W{25_G|5^@fSvmO䗯{T/ 'XEp> stream x]Kodudc-Bɰ}]eYNE(s1GJRdF@ v>[nź{w ҝ~7?B9o)ݛ+q_D}ma.|ٯrݯr-.xtⰜ'״}|x7EisN›<7Wr|7/C=˫-|}>g9?ju囯)u՟;uugxMU\?|h_rR\_xԭX"m[N/2MV-R>- ?/J{k۽Hѧ$݋fM)kk%a+e]—y<=7|{fU $Lh3]WcX#ayZU w7(UbeZynYnF"ZC]&xCA@whGDt9<97n}:Y ZCsʕ՗ݕS^hP)A(bu8` <m@qY%Ijpw0/p}*acaAoksφI~e^[57&.˿8da%$b]#1VF>>oϏsӗEϦϿT+E?Oӿg/_\ʊe+`F$Z*!gSG'9ԵwӰq!-j&'!W67Z??_+fjO!fvu! m4><Ϭl5]֤=&5\S^30Ow?zKJJaNf1[d7?ΞjLwߌ8LNLwyȣu'S|iW\~IzK˶sr|6#_@.7M'A7fdOsbsb "uΟO%nz]oS/~iMͪ߬] ϬnWq|?8}~1l|yy>|պU3ģ&T .(]>:;ᅮ6~T,Mi;vCףgGUP31|Y> 9aqYxY6rcx=M#&0MvtaL4i"~d 0u0+yCݠӣx`i^/L6ix4+M[6~0YÌKߌa %oTBujx~wQo- k]Aw>ex,.]*Ш 0>s_s h(VC2Z=ܫGy\ -ƹxPARa. j1.hfwIB݆jVVk뒹U1SZdneG4Ĵ3C(Нh`o"19(4dAD#++>(E?}}s4^I:pE=qK{x}8wxawg4pw' 53cدU RSNQPm.q%> ;e%7AYd XRIkRJj.xIHּX͉$X҈L؅V~6I5hN06 %8;H0X&P;~bA8ǒ ,bD(.ijBS2iXYBiCz)bպ%Qo KxP޻.<j=Ԣ㬶f@-lYƃ 4!fxLiy؁ӘRWfTfp(&q:@i!jb%$O$9b?<%A YshPѠo2*%T^"4̵LJdF9&0's @/")+hU$8@B$XXsf (4Փ#KZ+ E/ Ŕs: g2 U"N+i$/ #d"'F/5$f(0윹93I, 9gNM ; бs +K\1SJ6E%!I +)q*#4Ө<:!h& ,frL(&LرZ% &'xB[U^3n̒3,F=$PX1΄q@4-I79?|&$ Ӛd er>+HXD@G)bXQΑ$ͳFVa=T +(ƄzHLI%mxAS쏨\%`vUˤ Xs&9!LdtLdtN!EIȎ/Xդc:`iyH9++ȉp+$XY6P&'Kw)`|+s &$fO,*iIpHhG:U !< ᨊL@aeolN|]6X&Q$wӲAk¾lt#Ef"6,i?Yz#َ9ҞD 3iHڙX=ܡJ2()Ԝ'2AꃐFDԓ#\&g ,fUA $J)3IuPGzl匂r*h.tRyi6t_"98XSڰRfQ 7ӏ F/R3p+ˡ KiǏ8|nP#'*TĆ:bة&646fzVېNbDV[ y!Cf.T3ąFa'.h`\\ عP_7(3a6cn8P ڔEl(.z HB|)Zjyɍ %†Od(cOЦѥd(a{?-QN4ŭ@G1d(Ю(%u648/ iU6-! C [:J2%HA: SKt(8Sb`CcRK 6cC^'Ci=+SfVrBSڸPT*\hS,ҹP %'|NR  T_6d(bNf/V:Ф Cawv;dhz"C v2{n %Mdh^%*M\h6Mg r2P/[*OصNF-i'*SM!}Bn* *5*4v0Tpw:!([jL3*ѠI!b4ڱӠqhP,F:e; Wҍt:: J6'mNA)Gu4jxж hPqhЪuLAԳƃV[΃bv7]`4hQ'4@  q:8dZöD @(0 w73͎t\:nՍmZDv*;9b R3E3ĉf64v:L&\p'@3EgEYU0?k:]O xP\ @.0E' GgSƶHwI8R?i'zg7gSD#?R!:`&'\t2O=3qI/qro;F',"DQp>ϢOۜ'" f?ur?g2zO=?٪u_ПtnbÀ6qU4S>i[CqJɛ9:Y ў ?/Uj FMA9oflydN̚F6:'`HVKʁV:^DdƁP=ƁV@"ƁMru`@+mG kq@I_QNFyZY)Jg6)Yҟnb?XPxn"?~ߞ5wYa#}tHX~R6g̀i0Pz=ꚩQPəN?3 U6gCuZObI@I$(r?BG?iKHN*ZQ蹺NqsQc(eFҡ@iE Q%zP(ЂZC@ IPr%'h-$hΆ&v@Kg݅T7sU Ź$7(mH e@i/GMgd甔NQw) [AAtwA|Њ'He@s̀΀j\11΀oPf6 he@3RL0$N ,2D" (QjY~*W:Q v\dRSG+تp ) ɪtRe!eA!szJvѣͼ'$zw!JAݺfTJE TM@5A r@55{+U7'eN8&'`' ăS1&ڞ0v3L@05{}ǧTS+QဩCS)+1bTX;N'8UJPVH=[*NmZ $2N8*8tǩUwTvБb{=7j6Ӂj?8ՁjvzȀ*pyHT & 4`@QMi @H!U2X :RۣgXߑ*nwj' "%-Ru^a@MxGtmj[فTHٹT%$nj}wC^H8etU@txe Wh:X(;Z7.լ5y94&$Zth h/u [lTMA)XvjpF^UpK\hfT l`)X2JêvguˁzY 6E;*HHtZLH>tZ&8@Y+ցTVI=y!ɐjҳT&ݘH6旖ުCvm UzwREbH5(;jXX%mZ*\mqZiUWPU.Ъ׆V \OGdftJe~!Pث"1ZV HC~}s=8*-h)h5 $V|ЄVSĖ'/ LUzzVcw6ZmzUQUEchpUo/AJh鮁V]7Ct~ic\?CCMV`q;:'\|ۅ\x/"+_ķ!]7if:q0ͷ.zU9D5%t"$QrP?f ]-_,5>NͣdGnǗ+\p7,zOt^Xʼn?#5}|O<~yw{wY>.׳v'sńy꿾=YOr? 7ЛYZ> ,on>N>[TOQ8|Y/á.%<#zMX+v$vu|!}&#{Bjd+Vc =:Lao>k=b2ʓQJnӵh"]ĮrҤ b/}Dd3 [jwVB6֨㡋 r~kyp`S\.i.aD]a|?MڇN@ `Dj5K2aVJn z bw1%1e@zzq nq%hwg.w&mlo}׏isKf/~4l7(gTp Yh;Y|%gVeB;uR8Ulw@Ud|3-ڨr^aG&v{)ߙ7p-F[vܐ.}'4[\dI${/Ͼmm6w箶gn~3U{Q#BT{gk;C&/6|NC?m74isIZf)ʙ-؇9W>L283ι=/^ɭR5тKwNwx<`f0kGbݟ!8AuvuHύ|Pu>}w X|\uD 3TB4B}}0^ h 'Wo*+~{?#3endstream endobj 340 0 obj << /Filter /FlateDecode /Length 3573 >> stream x[o6B`-MwYK"K\|8mj D^6^wi7Jخ"9_?gF엄˽_}zRd'{_ 8tյ&JOŷɌդL瓒E\\GɌh]fBI ݼضWجW,/d|YsXdfeJh[zk$rA*iXc}6INts;v~g6&ac#SDI~bRi0+׺|5aZ9Nm[hV)v2ܖjUl*fivEIXXj7~=(?j)IW{Rg^ID)@K`{t2DEY]oeEƶxD%j@+(kŋPݍ P"mY6fDW#//F{i!PzgoPaQ{OmY#4 3MZPoE&Հ4$ ߇D;&,w !N *EBX~o1ό-9u9F'yzX=E:Ƨ$Xdy U=Ob DŽ^e3Wo8ŋc $3VVU[gKx@L' s5wHGeū^oc} jn@ dΙyLzF$%39 GPw7;fP*aNƥ8#R}r)>}NHp)z]w pYiR)䥝_z},eۚn{m \JvofpׯAD~jpv5vqM5_V(/[Re:xaN:SEMq>ѕ$D\N7nM-bgQ' H ~&fyN{A%e3]ǑMW<7 أ_xS:p t:afN`[b 6'"+Ơ4E3h/ocAx $W_K F14gM_d2h~ }Ss7Go)|tIlm!I8x5"Lȍ}&&1CgˌQO.1bڙT[ }xud)<^z4 T"+-jq;/AuuOk8) -lhXOLbbnҺ/U>Xr\c\sZ; -{ , ('t'OC:ĂG e]ѯz'0xFg|q|7hr;ogwl8~/~߁wPr%Tݍ,|vc.f>#4l[Wfp7#h-eq-J^s3b0q#'=fσ1tʍ" j^Q\;J$$;y뢩踭PFm|ֈɌeJ.Q[v;ه)g4A-iE4](ݺJmNP1%bujKQ&uN,q'NDeb7'F'Ψ7$ʧa;WTkqUp=`H"τt 1rJf}~~tcjDHS> stream x[o˙ܟEbisB$ƆB;jiKfI-eQcj.I!Jqcg<9T> o>~^?~qߟ_~ǟ-4M>?_|_}ygAwj^ͣru|??iyݧ?>uoN?>ѯN_~?~㟤w_~?O~yoߟ5e_qѽ}_iNk/?:/Я\ W˿??}_r*ww|b?KKNc>50F/ÏR _aN|ߥ~ϛ~qEoy9oϓ< b/7Ѿ_O4/}ӏ?ս︷w_u8e0loO*_~ӏВFOmG>w_yӼ/r?[^|}if/ O?ɼCO?ǻ_}?E]Ϳk_I xg߼圍O>G^_ii٭Gz C>/?GG:qpZ|E?:>8:ѦaykwU^mnogy,_~q,;{ #q?q1݇g~+?}Kgӓrb̟̙mORXA6?[[΃l9i;?ᅥ9[^]S+xfי=ϟǗ¿~qm.c< [ ?ʟ4=>l8טq8utY?z%>n%yTy󹏣lyU|~%yTg=іQz7QyӘ/]ޟeaD_1&/>zf%[γ [Y9ԧx3$9$3w?W403_3^zXzn: cS8ώ6gz׺3f6=Z*:km,Yx =GYʲn] .KZg GsYkF,:ݗe1/>}jggy捡,ru_p^lP|h-kG79bd*<3۲={3u={f[}goNf+ -c==s;kRΡb5HX23k,qXfb<,-r[fܦIPVj"gmȢ$$"x8-U-ҭ6"C?NKW|RNj>eE^h.>Zdp9X1O&9{~R1~<^5٩W~4;u1g^M2<;5/2tL@L7vL|=нUoZ椿n, K$R5 WM<̳Ssg`Zմg썮,k"zrMls~hlx٩[Ͷ|uqER.ғvv_^]*-ka)^Շ˼He>jW2ztifiA1?rT@]ZnB q!r3P R2]ClN>ǰ7-K ypkhX.4OKV؏Y!OoY-U3Ǵkvɘ9pĬ稌C|s]^.8 7cpEt5Nˣwi7ߘ1/OIsw{0}ZMtfnr&L<$D49kNCw\rf5džߝ h< ;=szshX`9Ӑȇη1njP`D… B1oŽ`k1n 897w4m+*Q5f;0HkT< WĆ!bQCW}4œ ǜQ8JRsG"^*P33opwdƤGvj1_Hq{: 1snj|plOcdʁ(310 X䉕sx0҇{I(G*O/*tKt0IL mz # tG*ۢR=CO$nω(<U DB @Gi1Xs^J;6pL)72,ݘ- 3ycj405(ƔzN+_!SsƪJOٛ+0;9}"&~GTS(,ܒd'?M蘂jҿ!Ԏ&<\if_FN5rT.̬aCAE;p(qVgV(|=8(4U(8f/_V+XЕ<.Iq uɄ5'(\TІ9RǸڥB?xO{KZ kZOC)lyO2++XZJ͖ rKVyeZe`U%ٳyJO=Υz]l? |@P (&9J*f)&9)IoHor}PXMruC~ItZJfv#WD"ךz&eӲ5vsV&-|JA:|?ץX1UZ#{(t-c6~\M3#_W_k+{5eQFI2+Aoe`P3,9F s3}8٫,/5^n5KDDŽ~5ԫUV9- U:\ɘ#({UjF,c529?C_5PbHȴT=9+kH?1B*Xn쮁hȲ2Mb ˉ.!MbnCT|_3nZ8$3VB-M`ޗ5GcHtW{ńIsGDm񍖋٣f'=zGDv8 }5h~cU]0IVsDw3_jp^7ję[KL X>o6L3 COwO|4)ʑ/$ėφ|wE??RŜD:֫U*&lX1d,ʵݨQeb rSGC)[IpOkzcLˬ̺csxXY^COe|G7tqq> 2_* 8y-sR]$8wc4KBg2ߟnYMySMHm/,,Ԣy >*G}sΏrs(ag4s*[]^5\o sS"f}rKd2Ø/̞229i@;Y%ZHnS~B:Vr=~!rF :yq3P4kO`K"cL3?m2uLy&l6ivk6ČJxTUFQt*KN1[]4?g)_rC0GQDBuhea0e?, _(IwsPø'ݚn"4JyAS4DxEasxH-hrHR1ô7αRìcgsj.E*F}cdUdĊ~)(ťΫևҕq޳w gpA!Tc j}Xk}kWi*;k bp$!^8*fp2wW ˯\fJFU o˿9]& ;7Yá<Op9yQ<ܧ~?}|ip B.rZנQq6\ѯ4%;]4:YQak1<]>j8/T>]Tr Sըcӗ"Iz8 L3&lrXM6qi`XSSiDz0Sӎ"=:(•:Eifq9`$A3P"1|Q@F㻎^"=EANXK{QlA ^=D=VF-vN|RB^ VE (/+erp9ʹQNG/'^1-Cdӝ \K7MK+0-us,Z3[M״(0-g,xO<<+GSFc^aWIxޚ' K*ώjδ.&zx9EXGi|5Ǧ03amW+c?y^t*cb0,LhqԛcK~7Q.<A2VsD}]  ]hX.A:RhaĔ{Gֈ #eKLd/i98-L5a6YOuӲ*- 3X{Wsl [h`5dޜao== iL G{sBtQq7aTil7: K!KQ'EԛÖjUEV#uAVZ͞מ`ܸ Goa,gaø1j,KǐV"J/8G9%57aVk\iR5"\ZOjZD #% R$)fV iseli]pZ26)ȍp5|5ri$6Ť]Bh$'hzLmqN$7NSapZ bRmz67"5RU0|`bҙya컺r_ESOQPWy-qH+-Hj󵗕[.ǧ),[,Zb7P(2+ aZY%heUfZ;f]Jv|x[k/5o_}p0}>:E?2(ױ)xL3&IҸ2>=XXę0,Kb8eILck(Ī$;GX!LnJnIb޻j$sDGEH cs^Je5g_1?ϙ'-Mɱ'-U 'Yt%1)qNXv cy; Wq@]þr|lX41c_#_TR]&dcکBt/rZp[xATUWDQÏIlp%,rJy帮twb=zЍ5OB#FteHڟ6`GHwښG FQڲc`[E;(ppD:(8.C>cZ| fU-aC#gQyH9ҦX'ufŋ`ɯ$u"Oi͗j ^*1ccolV q2v*e(]!7vx" DЎ=jAؿޮ8DQᄡE(E9GJCScE3JVqg/awGZc < LQ\q``G}{E}7W[7qI1alE}_¯*ʃ]FWn~CK+ ybH}hH4%l,T}126/yAex\d4aIk˲eOF+ܗʝ!ue0T[ף[уuA<]hY8]S#5-J5bC.񉧥V`wm[+7*ƴ:C<0b~[RG?*ť>3x:ZVX=m-ĎHJ=Re3 {^v.8 o|8~,Wcmd/hmr,2BKcUy0 FQr!R%5;W@S,|כ$p ii z;~S, >ﴨk22E)f?C)o,u" "V5-Y_xr#G)(W\e-;;tף¬nE>NÖVRk,NV=pq/yw܁Jbp۩j=jAdt/p9&U (ǸQPL`zdAQ ?8k*Y8 \:GJ GÒ/;1R 9ܙ\V b ]C|Iu(40-oLQB7g9o iT~歂;t5"_ޏ9`8ђ.T[Z~L9OrZi`MM8=(ks(X)OEz4Jx/=4?;XV*yaK_TZAq 6쳈!pZVҞcrۻN3=r[7^h=۝ :#.73k.]ߤg]d"`?=P9Oַ/7&`@֏M^Œ>!EÎU:#d*d^}iE#(h1R*"Zq*Ia/epW񣞅]e#WM|K"q|үXJk|.epe>A*R]KpWVUUQwڲw{DT0j-|Wq9UKTCJsx}%'Z_@f*#EUI *|ĪWoch|U#rha|Uef7co$%\M#rzJ %rHSbŕLvVN,Mʀz2ѥ yzӭ҆xܬn!%QCm/I~K*MI㸭^ F\܂]z?w40Hw>Fn|. =-Xc.P^]ՅwM]؁\rG?t)U!22xfŰtEtׯ>FWag~9h >/[}k]:k:˦^n55b$@e).s`׊ira>g-?4ǫ>316 kYɡG*|h(5blsH*3%˷V|;Dk,*jd-K)K˜3vx\`_ɆFE^{U(+g9KUfH W V9T}JZXK$c, U3j j':SjV}٫" 9jhe4fne-G)jA;QY}~V3Z/Z K3Zu2A#ChQ 3W!0Bk\8c*Ytc=u+Z^̎Zq8 {@ oD"yMpD,Nh%*vN]ͻ.bz[r΀+c_<"vf){M{(cFLSuHܿT@s}_[ M신?/ztiyy=kg8/.0v{Olг.Us8\tMv|).O"9n٭Ē7ye;57-߱lp`cQɞ2֘7nq^%>?lHWOWb%Zӡt ʮJ)e\x-ccMˍNV.,e-`iLYa_~d:_?>1G% YHA9-#$GB9'GE8 Qr8zwc# c|K-z 14VȡEc+bm5\> zP 7B۵F-.]O#'1^M8M8/[L8^L8r >G}nbѝMv2V^{#Tlj8eѭ`#nE_q]! qhhڈ'qh6a(]p,tT +(u(_ֵ6M8fpMلPf* A8*HmQؗAN ocT,hU CESnOX*p*=JTvڐRi:F՘-G;,l^]ڭb<]=&!G5t 9jAMUkGN5% 9ZEL !G ހU'rT(c9qpoٌbJ.=~1Wzr ,` 0 r  9:!4Taa 6\1`@fwaƑ_8BUqTS>-8< GhaڍddQU=$GhTYXqV,g!ְub#8EyVbLtCYkMaK#jSZ=}ܲ児8 vd1VPDŽ#۠ GaM8*(qG>6Z8YZ# |F!P1hF#(GG^d!4 q^N 0s2Db!LG )qI105ɈqT8!j਺NcW>J [d߄#R=CI,]˄VOِġzfaS,*c۬ogUkYMnoV=+hUB0TϲP=_Ӫg٪ggzT߳UϞG=+Tb7bV ճ̡zviu!cz>G{ cCC8ɒg(k <)eZ4ӂgw([Y A$x {\ [ Ga$xĕ1z 8%[ ^ap?VQ`6BOǬ$4Qj. eaRmsa$ZvΦKFl`R"& mm mqzN)vnaB"]X&[7d,!~ 2"FSb7j(iA&N FsPldL6BVޖFT 6(lt'囮$ ]o`BA6,Lk_yz(rύ'E;4l%\B9csoltj$FS kdwXYdQSIych 5ҒM5ݑF;3֨6c5XZ5֨ T-jTemQM5)(FUEkTicv<֨hT"uSJ&aNA5ZFj &Q~|= RxR#^^ҙYre$#  J(sf5L9R"oE#<q*!H@3Ok*\fiTbUi_;F WoQ F}e2Q:{BwPZ2PIT7ըjNPЈ{.TL5]E5*,]T#mQ8[Q ʞ.5KWkL$E5͸VCAjڸ5f1 i}lcS9iB>%gC|2an~=Rcpƒ Qʎ3JZHyF[k<#,ClQ3JCMP<#^>63[U;w񌲵ՃgEo QVyr5h8Ҧ7lQ0fTOlQwЌd4#6hCL3lEc5U7[f C֦uC;fD]fe0(+laFCf4%~886t 1 rxWT(R 3]sxLXNCdA.Y(CroգB1 +T&ҙ#Hv 3ÌtUL2pç6K6趞KK HF6hcn IFmoj f!y ifg`cZF%xb 1~1F Oti̠P1%T:f0FmҐF́0O&F7#wm~R Q1¨9A`aeTja`Y;FcQق`T Qu)ZpmQ͆`<UU`Tm&0*5Ĥ0F 0*v 0B5²_Oa E/\,e~Q&a.Fe7F#;a0JދgQ 02p3Zų6x,mf U F-xV1Yceu-xr DQ,iBgz!xօ4&-K0_77٬YfeqvֆĬv[T3,vVY1bgt;+A#sgǘFT3q1bgOrΞ;Tvv;jgӼvv5YJ/=ᤣ^QK7d(kAs !0(1`u&NI9Ok:1pL͓cZcscǮ1Fwct_:$G˥$ k)U>DNɤ$ hS 4f+P8}BǙZN8+;zk_\?J1 bh8teSb]mCmQH!ʻ3=G1z. sn)wl]v m&o.ʂdE,vdt$K,dtT$q$()BCqB0,(L{QFQ("QF\@Ee5GQ/LQԃ ]WFrUFUo ]WDuQ>T۬%zv E^7.z颞wQ=4W%Xzj]@s^53PFv(p=PFUp UA2f;16˨iL2,7(s2.hRQF:e^^Rst8)NNNTc0{Ig!^=Kh29:˹v/}PFXH{7ɨ?E2,*, _sٙ(|!qT$ɫNmykon_`D*,#paHr0sEC1Ӈ9^afa/DSJ/5Snvda/_qx0!lz-,~63?~"=HZq ) ڹϐ+㩷zQ<5~VS&hF&mQߌ3ʍe{1ΨZ!pFA wgjiZ7W8ndhqFX8"Q~n0 pF3Uaz ,m"R D:XZEzZGZ tʵ@#+C Cct%  W[<~muYp@D}Q/o%rukKVć *B!P4Pt E0/l,g"}D//P|",8 TRBX:18؆B&a&sX),kk2H*YzC9D]Lgn3oڊgW +]XjJn9-y!ɦ%nT?pjc 7*#QF(xG%-9FY 6Ξ6"׼>~,_"el(|$v@7ڨDy-jh?FY@HKQ %kML2Ȃ5zYBvnӐld5 6rcd#c i} m^NyTh1(7ۨj}6J>F]m}762o(F-h#Md g1vOi74aBu$W {Js҅ lR{]+fEϥ]+k^.e2w/"Зd,M6J*6g*6prɀ`3W *`>4 LaPf^ 9V]RIIk@ݩ% ^ p,6ȐEJ2]esG M }hZ1ޔcn-r|&E,U[YLVsqZ1kzLKlQ"AuCrm" 7š&lԑk9}[N W{ N?Un@ZHL*!F]E72!juguo4AxbVyVa%'8Wb2;OY/D̺eؓsHXQ ,]1Ղ3 >Qʿ(SgkDptqEh[Y^Q 4(gY1_Fe*c؛hb;jC;pn0PbQInj#΍"u+ qGZ@a@gѸaa8w$G#BI#v`4qiyq`CG1F#)q4qd!GH#N$f2>!G#+I ᳬ*>V ᳤J>Kpd=Ch˞=e=yZaX͐{a3-2?db,VqYjj+Pd9ȲgXn܃ehLY.Ŗ=+teϊeos/O !8fVٕc(XS7ɤ HnϾ9%2`[VD# 1e5E9’M@ rgD@j@ 9.8" Qrڐl|g@@NOyVbE~Nb*l nm܈I8 eFI=GuQhQU و#q 8o#'7|#o|#oT-('}̠en( QzA7z SGo܎7Ix-K1.oot(Ix#lbHxCэFLI㍐<=CEVfQpoeo[72F=C!oe<||F;]d<2`{0쥣$? a 0(G1щƵY:bT)++7w1ra#.w)ʥ^^\nE=5:vKX.~ $crPP` U*F6oѕk5(n^5ImX#C/7͍6 6FП6QI!F\6f%k(uGYfYqtrR$lQ¤6ڨheʷbs ۨh5fUsm:' BUu@i&UlTet{&FlX2FmQкl@c 7jÍ7j}n%߶F@ugTnw2ݨk ŦfL7BM F=(`Q~Ӎt^ [2ݨk֦ (n,;:")lؕa 4cXuf6B$!NK5hK'eb_[ 8@@ X8z`c"xL.߯ $J4i˙aa&"(QJ'1jf³ ;r[44$e| ,"qrKX4((t4r[{Լ :jj7#.-$&%ͬU,e f lB, SsEǨ"tβp&]g E,b#10~|`?!=,B!A 5vFgGE0- *+Uh|Lҵ{->}{XnG@ۏ){_ ׵(| tuԜ҇gT^T,c҈alHȼ9xp39cPCH%'x;Pi1' GA3jڋiFՈaaY=G=3JƵyFgϗu=yehdimXFɀpZ ;4 PE|RHgD;=g(*xF*<##-g$зF jQЊhX B*" -H"Z(VDTke -O*G+00^䕶&*S)Ik=-((IRh)EU XK6I*!*YW%e+}-JeKaVh$E0rFr_"Ӳ4h +%Io{[t#KZUL4˜Q,Aۂ,se3SJ #)db˜sZ8o8kg _zVY ;rݖtl33ζYXHn8KX,BےsKe"gw5B"glZ"g@W쎺4V=ciF144=ͨ0rQ3ʛ&Q־ 3% |Đ u1iq~^=Gr JB2zj2 4I, #mv9$s1$1n2@S 2*$9FYk`:d]` { 0H 8/˅ɷ rT.AjQS)Na#(eL΄,(eZo~e#A0j7 >-`]5W.$R`4l#nQ'`aVA@ANKCMS.r&aÉ0è# 1Bbnqz[p9FŨah+bXˬESV2JΩdF6] M16u3k@(QN߰4\wlQުGeY6ȉ 2  2*M272J!FlQH (HK2%vYFV,#+`%3e,0#?æQ.7(Kkӌ67I4#M3 ś7h)PfMQ 5V^\4/ͨX>hFEEM3 hͨiFdQfЌJ8hF4bD C~(~Fy%KK~ YpA$Bi!kzheM;W6 iz|[>[_:*Z&?[<(/}4JH-˺᫰?-`f@@5f ۖH0\J|! b| ETՈ p _l V(u,0J=`#A H:fV9%k:/6+DzI:KGX#h[55(b NBBv^X+"GH; # %1e kH\Yz9QN[ [֩$, kǖ56Ps֩` kmF )f k|[PK:UY:ytHXR,aIB&Q:\PN&Y[픠+XcѺ%k8BHt`Csh~e{-ϗ/Kp9X1h=ȖKWHٌ͒-mnY,$C칭?ni|6 I%k]6 2zz^ 2dn;"2®ĎIv2a"7>:qó||[abE:c|]Q3x<׺뇮*:|͚QkFGyCXsQ͙Qn:_j!JnlOS:_v0|Ìe,#cF6˨YF Q`ոZ6>H,pz0̨0hh laF&:֌1۾9FhRǨa(c#uq~Uk)}sfY4eha1Zxq &xqkgsu-qc)jn!znmFц1hc)cBnQfsE!Pa7S0 3Wof)D1W1@#Lm"bpaBcb=Na}d!a=IS+x(FI3Z#$bԓv 8ia0(F=Im&L1#)FxAF[IK$# J-xdi@a;2Z9i(o2\Ev-PFXoJ!DYPFǖ7GI .`8_/Pj$V0bgK 3lz§ѥg3!-a5o"gIKl.ь>}ó5.1Jj-UhH<^rgɑ$3H\/xQH}R'Π qΊVVV #`UYy\Y=[ n$xEQKn;wvKt]!fѸ}q#l7Ϩg3.A8A c-ꞙžfThc(<Dz"j\H# F &F59Ҩ u? _ю]ˎ]ˎ\ 3~~+Fc@FOP51jtjt{NPnojtT˄٠])gtQNGT]>~QuZA8A6D*dxA6iA6d#icV)FA6A67}mF90iQ!ox,B"# "L6 k&QNGb 7SԻF'v|nѳFmya+Uys{n3oԄKFmH|߄;ukz^n dhsYϰp Ef5ڨv6TK9 ڨ&Fa. ^MN[iѰx<؇3 !a~e/Bo*d \@wl4^-vo삠-g 5ʟHmtJgX78]+$6*Eat%f5!F67-M6{l4qC Dt+ÆbOif kKW] {7Ttfix-&t88|/DpԶnE';aqDIn]_z:㯤p?U)X'pWRRaǰ0 c-<mLTvDZI}- ௨E -![c0@!W̒ϟF9N,]|S_[=֗ H?,l_u F.s -u1Ի4J `nc Wao؟c(1fc̭9{T}|w] 6KPhC$Q\IEѓM]9%xX;IcVC)3B#4;"@n4ɮI;acTE.h:ǒ5ZU;݂/뀊oEڛ.즬zɬ\'O#g%TvPZirV>;VX4B(fpjCۗ/,&ֻ߬ + kZBwXm on8ȵSډ^r/?'rī7W`9=@{_QYW䆞QJѽ"Hi* Yq|~XO9;90519Z{ajgł\0yrȑ`7E؝_%v>6]Ls ^mwWWM?Hfc +!ux`XXm`L2\ N_p谈kP,FslR,u0HKkw _4 ^.jH}SR%YV-{uk|<%"$҈Tc)H#Wm7@=Ywf#wǿ:@>d.zMPi"O!ZcFRǔ#sM9jOIs-<8G $jl 65Yڬ$*]Wג*_Dޱaq, +TfQuKZjPVk]ZmrC"^6!CY/wC˨j_hHXJxW9Y x#׻`0&޿$o^[x@Ixc,_,]dI7)FKVgd~!JU HZJK#*;veg|>K +$<- iSH: *ijQce_媱LђFI_ײ݉b+cc)!{E.BQD.{H.A-rhp*vNcDj%(;Z7k(ꏲ(bf?vj}eG2KeG뺐oBmG3KAmGq5IYAZ(Fζ41(hU(=O趣Jʎ޼[eGZc%R"w斳diU~/iɰߚo}4c5)o=JmF]W~֚j+<Z %j_p}i# @&%:?%etшѸ.EZҟO1Pې\ϓWB 5o.!jVS^]F =J!N̢ ԐOLx #ZgVO^#GC2yeHZ =d3&PdydLk~ˌɵE[Pc1二}Lkj {ۭt}PƦC~ X96(ۣ5G+ OAi צHqc$dRL + bZc)51Wc,Q)1_|Տ:]\UiK{NPP Aʦ/JLg{ov+q93<]b͌16e<QRR4 3iGh)k9*ӣg6[WIxrb?+xQ y[L' c9 lAQ$d8{-ӈ׶Lw,,I;\F _m+c) \XPz{տkp+c!C$>?& >]G>72y\ZyUXPBt4 =A#G@5铄͛ EhQ?(Γ7r`Ed@)jƔd)2a*yja>]2"3v姒Y*5ed 0T-f= `„yYdˊ|j_^.In\_]ϑ>z˒] >]H"t0>(ϗlB`,hYvMFfq'q0ɎHԵs?0\H"6v#_OazחHrq͕)'9P0Lz@%k 8 SM؏~;?b1aXHi&GMybQJTRGR/; :DdLiQ#2">bmIJ(XyŠn"Asj!y(@G8UQ"6?҉Z[~S-0#l Z%~=>mB˔]S;g{پygZ88eO#|ab܈ UL5k-ȴck׿ӜĐ HI;v@ l[_Q3 nʶC0 *P$)M,(۩ ~QOj{1ee*j^0Ȇl/-9e{#2e ^-ӔmV){9i}Nmi+(ҖD80dqn{P~\A̛qY(m(e}$t?/)Ԫ0ϊj$dB=q,Ì5Os@C<(vP\l>ぜ.10e$d \#G/MCm>OJu=cC]`'$X@#K~@^9o~ Rdmkx0ug0ƖԵ Xx>qmHc1݃GõNbb/SI1cA[Ei"ѕEs5hd,Ʊ{+UXBE^M|b%AGI#Zx$qIܫ~z+/j0B%{a ZbmbsL|87&^*E@R=w>gz/;j9EȔ`&q[vxQ떧LE̥&SpzM#fŶ[L,Wl5,Ÿ'*ĵE/Nxˏ &m[O ?'b/Iq\zypt|^vS`@Nx $΀l R~|A}\0}C-JxS@^c!#@𣏕)MwBsGy6xODU!ޣ2*DER.=>|G!#j%6T{rdGUTU$;{|y]x5!71$5<GW؇xCGٗx_r ŋx▅{Wۇwu|Cohxضwץ=VDc w֜ wHCyd%>WF?qelPoxם" )LrL> [= 'a#n- Q1^;s'bC#m@GzCGq򁄎V%73Gu>hwFb,PӕQN`r8noXktAj䀁?1_+"u4Kg4iTsqa9a̧5K,hd@H1 >PIyQB2NF5P+h@BB.-+kEFT۬u)nȭƍ\j֬ӸM q#Ě7U7z(w2oh'xue 8z(c7p`OGo^IG/^Gf8 F8"CRGS@Gpi EXbn|pON NPot.i_!G r4q̿KQxGC^"`#Gc*ihܺ(99IhjqI\QlI@]<9"#G ^ jBJqt+Xf=>ja~Ph$=yGn8z9>a !b:㓧 X#9v!UP6CtmtwѩK!G9rj7 ~GtxyּѐX"G#GnG6rc GSFԧ[ٴl1sT0GwW{3-*9z8L=Tܘ9|}@G>Ϛ:zD7 Eр+JCl(fɷA:^: !tYNyv(2k<ƕ=vo#ʦXGu)g0* ƘRii0f!;>Q `\ն ؾPAcyhh0fc16Jb<^s݇b<5{)i}uXk{TEB1ނk/#d'un0;Eh7Mh'J=cCϢ߶Pbehh,z`I}ا1k:u71rv`|Cb;a`ra;9;_HnvLGŽަOWw\<8wO7dx[::Ħ`U&{jsoU/V1iHaCʚǸ4UGg.*%ml;(:<)R^Sder2B !-{2< ]^f< p vR;?$G=9"D^ liG=ڌ)A(CG3u*T 'eU)5Qdy$FbQp4&v9Qlf<k*FCFk㯹AM~=krGES\@*l`~{c<cl{>h< {tp;epNhLeo1Ih| 1G4~ЩѨ6v`|hIq ՀQGZ;5ԙ@q>kc,ixj0c`5Qq<` !-Gcw'_x k4R\qt`AÉ8( ryy4nύSj܌E|4nWn/tPͻ_Sqt5nQոh97H*7WURW4أCK({t\2J٣C8f|P5*bL=:-h٣\)w `™=l> ѣ!ߟѣb&dU uGnG Qjj|+>&bm#G%u}RK@GNG޽ᣀԮ)(MB-b>࣢7|< C>:.7tGT>j— Q > Ci輩3|t1%}d H[|R|4Ѡ-#}Dd)onGYIK#>n#>u[_ѭ,GC"Q 󉁏& ?sNrCGPӅ8c1)ϺGԭ?եW1Qh6x9MGq|R6n~GG0Q^ ?uGJZQWIGJlNqj5u-8%S8iQ"Uđq$nG؈#P8JQׁ8LGZ[؈#!TBG9n 84D6ȏȿ#4 8"\ѥ}G"qt_$H-KF 7."pΛ(FW<6mn9F? ܈#(6B?%q_8 `Qh?Jfre~5?Q 9s 9 -GA 83r{0{98\FrzB>"`C"5&qt h!ૡсaZ9j'F劙աb}3G-y!\(Dk:rD/SEOUqDUG]"duʆ ue :;s4ۙ9+bƠhJ"h3u4IgERG:2ehSѼ)$:#Ǝ.ᣅ]Z;VK$܆$(RaI:QGS_Qa*dvK…)[(Ž˜s_a|q v<U/Ž ; b,0уQ!c`GIQ,MEуQ; ,0QL(T/$Qpdy$CmOqCvtPcgzLat(!,8-%7Z|@b  Xlg;jŽ-VYɤ;:oj4K^3vd 蔢Î"\;vt ;v4NŽ\btma w>Q@wg.DpGFGJ؆"Y>$W(%mHx4!4 ͩ߾wp=rې\x܇zDP1Gn2x4cr=aal#Ω]B Mek}VsOG$2x_Q!<2xtI (;w+;zu*|l)SeG; ((@:j@E::rGOh;z\$xh҃;o<;Z?V2QqGu{pG%.Q,Ԫ#sP/uthؒN(*򷠎}G;jxԺRУMGEQF0УuУ[BnzУCx0A@t>UE׽k\qy>0.XEM=F 87MHGv0 < [D 5mheh"nh>>=ds{A AZ*XQW\}GSNh\[>H0V5?裇f=b|!g0V*=ru{^ڣ-P{t.{\=zT֣GNj=z(cu3{h=zh{@G`z!#n=z&c֣g#=Ii=HAW"`c18QG:D|aM׷,rgq̹+٣Bأch@sAVٍG4xԤHƣƣ&iA5EA΃wEѩj<:M,xt(<:!Q]xa]xdօG!:qy|f:<<ΣE+>6(z_l6 <:t)b,(֋<[zvQ/X 8!K_"ME)ɾG~$x\mñ0x<:QQ e Gzj8p<6xpCڕ3 x8p\k8^.%c88 gf"^-yN+6j4pl bo &s Xz>|h6se%{YGC<5c*ޣKh{t]{d>ӽGDs5{HRG CPa {7|yp _=BLA@  (DD%w@C~pGc| s46;xaG!JQ@2"hTENFQ8>x$`F:a:orHk3Iђ%$(j Hs s4U$(p4IQ8ZF _okŲʃ\[Q\{D$o4!5o.( 8g 8U0!5̳Q, 'J(JE28NQT"V}G>߃XKf(DD8ZdI7%q78{T bIA".<&* Gף$p @J{|1B"."ݴa(9#뗿%>3Qh$/J"u#Ga`(b!y܃E,$-MQMI&`(5 9~0G"KQdo 9zЦ=l9<t G2KQ_wrrAH" Qĸ: %iPG~;  6;qwGaȀu*Ǝܰg3'v)G7vW8bv!PGqMT(K5#uYbZHTҢ;̫u؁WÞ4dbuEi؝ΌQ<7AF]'o!~?QlhJ:+]pQҒ^"]ۢrzy2ͬpɢQ c>3W([G/)Z.%EcJ_hjʜVIf'ձr nrz#ʠA|dduC^dZʧQ:r+dyeZꘘdu,AQɄ1UgXכR:m3@:vx2C:"}@P:լpufpQzWOi W(?#\LI+[ݭk'[_8dc(?.ec(dc!Ec}(VCGGP(Zvh'*Z=hphu$Vձ{DDc=(%ՃaՑ+Z=n&Dǃǖhx.DפYd:3V'2͹VG朇.eNsF24g̣'͹JRg36 #=瞭՞ozFZqN7sfsfdu?3;D73LI &$SQ9L;# s*Ҝ F9b8g,HNh:s9Z}(Av'Zݜ %ZdͫhIS iEIhuhTՃRE|!l6uFndV Vߓ 7M=V?~8;YIVM3 KV> 7s9yضȣ)#FiRd7;`Y|@Y'E,iSUeq%NG RdkU&_Rd,#Rd`/) |Y|Z$Eb_H9YSpi'9| A/ZAdo%2H#Kн9LT&du~dk%+dY L֨q,K0YIR,R#LZ̒ŎQY|P,>yɳ' 5K"뭈d,dlz=4Yl/g;8P_޴e!QMV,4(% )({K({KE(% (PE9r ET3 ևBe>L`}d0XZhb>O}6XZ -uo ֽO=dX")*dq?[q*=y>9)'WS\Glq%a]u@H;oyzxyo//>g Qی^o!>JePenA|9gK m^`j/7 <3qDJ"/p: =>֝X|7K`Λ%;_蹏Xȉg\˾wF H'@0Ɠ_ !B8ًsF,婞ӊ۩')}짰~\tgXSA,#Χwyr^-l0ԽX~vA;?kȬ"_bht~FWX,'R_95vqFǹ2+\cޯH@~;/"D<` f&e^"ӒUf8{Q"]%QD)~ϹJ/iB8Jl򁜵MÕ΅gsAI'L"gz̟{ +G+""竳L5m0ּwexsz< \j1jb󟚃GI-3qwMMl#Y6ץ5!\ 9LNtL ]3X%rϠ-5=.Wx y?3u5j]YTr7nЖob3|'7/97!=%E&}JjΥqRot߉:5qh:5V#UW|VyiV,VU2wdq3-ze1(b T2ż\MJ,h)I.N\v  zE%X8(Ʌ]hdf/mQ6$ֵ~4' qz5-pՙMqertߜ9dwyɫ~LoS?Z!DZ˒P}!RxsisIR7L.qwe XkYwmDT;J_haR@~jG;ܡIO \_z2&"-뚋R\zpqьgkIPAè5px$r }ˆ̣y~@x*qx#'H`^߂C}\#~4_k?̀tkH ޷{1|4:, p$.{ }dd0>HJ3N׋λaoG<Ž+vby-;oޝ{eռKˢMpf[fa󍲡c=6# xܘ|#gۻO2R|lVm҈%R=3vkOkGvɎlܕb96-!b`;B-e :nͱ/a4o.[qmo")[̍T!V 7nsPfJoS rGp>5ǥB|Ӓi)Bv!nQ "n'4g~*jDK@#܆'ı>⮸=[ AH ȃB%H&gXIV%tX9P휆I¶s"hzްCN~v-_CvNUle _CİI|D6;C,Vȋ0!J;}1Àݔ\y͸ŖQW8VA3m̼q}|"A+xfPu9PeYNqfz : cRH&kCY૆QB}}9+ v\xO8F@w%*Jq[(`hshzeJ?G7ߠԲ2k|(gjt+o%wg{ez\S\#J8ԝS裩IAa(ʠ+,__9}*~W?reC03O5\P+ӵU3',iNTM RMiPj*iP.1cN.1 em-766y-;knë9PLO8_@6# IOI Cp}*rQl2ېIԱ eCFk|o DU66 ^gÙ-763N` y6b`nC24l\ji ,nţKUb4c-W]_KK7 '͏4#TROԭEr]GԶSWٝş2TĭşqaEsA+.. XnuGTiwK X RSfZk]yHRwqq4J|EUM;)$jU}>T> a׆>'T.H~g W^5 W^(lס^׺25wSJj^8m>B;뤤 Cn~= #9{ /k;СGN AD\.=qDnW*(^M XzH*-ₘ:ڋH緅c{>7O;B5W u4~\݌|K͸':T3c-M2om\0=GljI4ӱQ[-p>/vmOrn׷ul9v7J>8Px:Fe|>ߖ~@1Q:(v !8 ۧ4EO/nut)&,JL/հ˫ˣEɽt_Z;pZ46IU+d)ElAX(ug饊UVYZh[E\$/(V%4YeZX?]% <\[u- _>^S&W}@D{Xݾi`oYP?.sb%IK'Z؝%KmZ̠adZdy^ʛ/X~(wI/8yI֕O,\g>s#/XBU/XҹX6^b@/[$FSvx.y|}4zT{М?"_==z2Ų~>Y˕o_o>Ja)cm:u(i)\9|RNdz_?JĘ׏61X1Ϧ^R3F81`a!y\| cydM| GƞNZ9u2Rcj3&ӚXP2Mz^W,2"73+ߌ \,9yX7ߒus>uTY7 usR8o|ºyIPM!̕뺿M~o g.poknߥa[k-ow!ɿ6J9Y޲t:n^8,uNtF@gmnJ{$n ƪM+/:T3qG3+8q~1]El#͓X7y-]F{tlh/n,<9)ZURR#H7% Y9ts*/Ye%ݼI*Pݴ^dSMslk7n'x7c&v3]nUu9CEe/LDv};k/%!VY7F+n,iˡ%:9g2zn]F`d-[lJ#dؔs`͆VMPrnҕσsr ;7C}N87{CM8rn7QMPrnn׾B9o~KM/sZy K!nި-ݼVn~ okWQ{k1TyUao2Tyc2B͹of2NH2nԂڸ kZS @݂M)7 IX.қd&܄+ԬqK7/DzH7/tGn#C>H7oKy$s>jqp4(Z'>2dQ1#tRDN)i+݌sGlDl(Zi扇I(ͮmrnrbPGmȾ́ $o$`fsվ A4=P\*eCY) s8>xEAIg䠳p3Ci|M֐m6Am:۷j6TN%rUlkdE9u#teteq=Yڼpڵ'|Ÿ6oGII9^qVה{[HKv=׵OmGhA):C6m:ioEئ!i($MAist6CR-ۜ:صyaHkx֪}ڼشɕώh3fr*9 ?.(G͆ѢGc hhlv6jstQm\:iԒUU|g:Ӫ͛s{6_B6Mb^/%+#6O5<_tE,䰳jqSmݪM}6m8˴ٕBi4۴yĘ6m'-TD_`6آK'lgly6OlYQ:K6ͼD!/<~nMM)FɒI#-/l*lY6ʲy"fSM+ٌٜ.لI*&Ri66ٲi,"˲TGAͲeSldChx1z͇ؒdPh6y (2Vxv-.f$,xmes%e3CsIJ9@ز9si$Dy)OS8ͮplޜؼu?PMHrl>86iKv96_]vlR']MhxC|A1*u+)aSoRxp,ԎͳvlTހ숻숻,xllٜ/:Tߌe3^l^Jټh6oߗf]ؚ5C4e|ep?YǠ|;x^`Ǽ=>e<)YFyƒmZa);R! vHX9/@ kψͿaM6A2 [l)3۱+H>;HpHzbu#ehׯ"Y)N!2lv1c,W&M2l9>TBYIZ6C ʰi{ 7$6olؤO f$ԑaEaQ,䚑?nf:̚Sy5ҕ[S[%ׄSf5D4k*k59$de3Y5/vk["rk"t[59EQkRkN LP*f7Qkv,&n?szE"\_ߵ ωZernVk=Ռ܏CWZ^t^MZʫ9R^b~s#k?Xlb͈l}idKr6@BPĚD/tOǯؼ ǫy$մ^IgS)^j&gy5&jZZͳD'3kiYC#=W:5_ZMc˝GNj>±]i>MT]ެ{r=~>|SLt7iއvJi&:ͫk>͋j"Ps*S 5k c 5c;϶U~y%Ԝ{옢ʧph<,j6&iRY>M$~Qn>Mݩl>MڼwfҦNU>MӼyj7=jBAn PS[BA0fXeB3# 8*BA*B͸9>XOq54#ʞ#/u14o6ӼZAy)R^:͋r4ӜOs<ʧ98Ol4;F;4ڔ$tuol\l'桛jZҫ 7;(#hrTC˱7 5/<j^,ԜoU+Cih>>wƧ:i <ۯPbgj6a6%<8[b|=轄{iv4C4B+P砺?M>l52jKF3Qq@5 *)kfWd52jƴg`l/ (5lj:o&f<[5j c"/_QqZ(Nj|0f|(-9Ei5o1h5oCk5;&jF?Nq'Z͡ݷj”W3xgjv˫فyRZS3k5ρ^fA6l,!&^vՌ9A]j…T3(@_dYPZCo[Ri7jު$-fl]-ռ.+4%ռ-ռj"Ts/٩RRjmg&^Z,fu٩)f?~;5Sy(y485߭cکiNCrjGqj@h85cq%ad"UR̓r˒js*SK5Dzje=|Լ1٩y2[;5/t%ϔNM֦Dk-My7`7 7v7I`&@}4q8Ms-MԘMsi&f4Pu9v\O3o4)&fi`NTtJy!ƴN`:͸ϗc&i~KX1]ب=FW {Q5(ko 5o jr`Xys`بśQsbĨy!t-6&b5$jN՝ TCi%PM]M%Ԕff?ئ)LlXyZi#@:͆f:͖Yͦ'V:.@FZyio;XYNt#R:G[5QQj^B[jMgM 5 PRࡄשy2BMJIkd 5VJ9UZF́IFM˨X]>Pjvj7BgKBMҳelegH& vnJ9Xg$*Ժ٨޲٨YN5߆.Eυ &^Rj>|{Vj޷zVji.Q󖬷:gP/j^ PsySs&^Jͩ S75leD\J!@8JmDٳp5ϛ4\tQh-;0f-F6Ë̽k)&EM|G/ 2jYFw6j)bĨ d4)lӼ|4QMLlW%Ӽ.Ii9~og]>sKK)Tlg;g6>SwuZ6}杫?Cn̗?efoϼygϜ|%3]g޿IcE?d}&g"1-}&ggv7{f/ٞ)S|ygD[LSgb|ss ߟZ=s|0°3ʞn| NwߟR,xgJ3p@~5L)7{fNxw{fs̜m̫q˩ f̹n̻ݞ)fϔ|gdpg/S=3oG{=S͞)nMCy~|GK>ܵٝɭz3(oL7yf& y&!g/gv)- hg6dgN(Ό 4qg4-w>tOݙ~ٝ9;S͝yфaw&e6Tr3/d<;rgҟQL#|G3eܙm~;SM)flZGdl/ .gsngr^̃83g`#3C gt؞Ii{Щ͞2˚홝K3ogrcm{栏{h=Sk}%Ϥ lZ<]噇E3R䙨N-$ݽ3<3/w&vg)3 vgN e3;3; gOnӴ;iX;Srg޾:Ņ:BeSgULmҳwڞɜ {=f<-Ƀ=ө홱[Ngr+{+$կYٴ;sHU̸ lw&kJ3'{3vgn&K͝ɕܙ4Yyk>b{d{=3SJ0,y&ke>VK;k\ gldXΨgJ)u&Z39<5:,ՙƛ:SrgHܙ {3L`MJ.̧@:A^Lf,qrg:;yիMkl45۝و;Y3OWvgI YIY)@̙͙ ͙C;כ9y̙06gNMG7sfGHwR"By=LvtKy_Ğ,$hsƜ>E3uv`)Ώ93Sj[ꩧ̃ fZ6)x5lk橾fºñNms&ɘ3 ͜*Iړ)sy93W?uxmb nl3uI#|Ṫp3lS߶9H 3 `l%7XW|w p8)I _D``{9"l|۞i-m}8>sܿ0eϜ?ҹ̋Kf3oϼ όdag>zggƟ^<3DkХ\KC rvh$x-4`f ]hv 4GB9+&%МKi EtMjJyk5B`ASOg&̷Þr({&dtg^oF^/}fhwg.{6oʞĶg8C3(Lqh3ϒhqDshG`hjYM>OK4i$(lTwh6%H4f%D[Md/RMd%є+$h"EH4SAtP۠ i ͮ3z 4;Mb 4O^-yaŠpXRhU ͎'JJ+41HyhBS+ˀLEg0?͟?a(^h7Md6Dd֛AG #@SH%м$+RMh^3ʟyBOClI4Y4llMĦe<~iGSY4ڢv͢9QJblUcX45,FeTsfќ:uF `xwf̷\M\[_vh2Csp.ʡhWM-nMʡCSAj8vhvhb*?K4lgc&M94^d;4Q7МlMqCSm,CISCa#W~`@޲ ͜BEۼ)4 *4sDn MMDQ+4'NfVg q>DDEg 3ѓ?ҏXy^Lg?:6&o3s hyak=*pS SC3#_͋eh6nhNecf2m,3=̮oRצϴ,}fd\k6d9TJ}3왍7=]@eD%m{&e\.=ʅgmy8Ki䙺 -wrg>MoL\%۞ɉJmlLۛ>3YLuٝ)}sgvZΤ|Zb7ys6y&&/3M6yf+!t!}2g*{y:!d,u έ5>y"L-S.hSJ63%3_MJ̛؛ݙ#vgVKμ(';sܙPUd .ULpBY>SgfnT>3mkX l}Մḡ*Egd},%5!&M!ϤV̪:e3+vgePg+3S}2g"V9s,LHyɜ̼؜I!Ll$j2gflδ:e'qfVu+6\vT*ΔL+ubVgf>[v3N͙Hm4u-Y)/ԙU^3YԙY3,Bo ̨;sUA"g ̇>ofVZh35Efmf$ )@h3q\6S\0M6SӤԲ !6mh3ef$4BH35 if>L,)6s;(v6S8Ȥͤ/ eh3d̴$LZ64ԠfJW3wœ) ̙ʇ̙:alꦄ9Sm̔pٜ6L:!ΤřCg~' mJ3+jOęZębR'q&g̦I*MęgnJ`ęFBIx3$7tfjuf8qjegnر,cq$ęęBCɛfnɆ7Px3'oJ&ofEf) N۸]7Wx3Ŗ57bοKH3w9'i5[ƚټemAgmfnRn6sT͔;LԉfUn9{3b^[s73ܚx3íioxIDgh 8sikTaB,š5SdĚ$Ա53iofbUZ;3nKd<ԀLnj6grO̙;ZLԙ C1vԙJJԙM`DȝHͳLϿɞ١[{fY5Q{cUvywTLܻyCR(~cSUSu:՝ 5YR R )re)qZiwZx/+K@ht\D bhb\}P|Qw\+ңEqs!?4?$w܅ܩ:]kTw>.kxS[x8;=ZYO2ߣ&/n,WDdT$ӫF3 ׇO.Sg^7̾'iS\o;}P6J=T}=7#^?zrt2.#ro:+X;4;=Q4y.xN} CBѽRPҮSG"G'H= ˨^eᓛR=ie>3R;ˉ:ԍ8bw}j7w+O՛aB_\$q`gjmhg6b=Y2 <~nQbGHGFsiF Sƃ9Lgl>34.YCKDXx.yH^MB#*gR<_,I>S :?pKϞ1faK98-vFlǘbehd(yk)>LE Dgw掿L`Τ0ԙLxʖUOg-j&Zh&Ky,)7f(E$И3y+-ų}+-+-œJ&K:ca@ H9ęxgq@yZ%2gvk*0giDblmlmqbQڜ[9P2C3XVN-ūbfC%n4ƚ, 汲*IXV^X::I+؉W]':鹲?[WV3jP(/3.d@@kgP OP:J+l0hpzvH#Z F{Q-١o .];xc#K]"KT'^$ItbIGtɂɚ `&CcԬIdww@ ƒ U(T`0Q%Ѧ3I[mjYFEVa^ZzIи$Lc bb}9lҀǒ*1KCK$j,f*s (nEgpξHue'V^M8VRt y` HlfR&ͽܙ4wm$'8LvOR. %B̅dͤ:ϬeC3r2#z3EV- 赪*7:zjik7N /.͆F.]ޝpi<eTǨgx!}|r 0'fSŽ L T:k}?pl'Td2]Y#^{8x@Mh6u B $ u%;DK4w<ϖh+vN$PI >ҴRHTdJ\4+&I 2zhUPK>ʡs%D-PXi;$%M]h6זhdK4F̓Z$K4)],h,)\Y K[hV$EDLB,H۸(9Y Qu] ͒qfb,EEl fU-hn`hn„DQaf(BDCDH)ph\hw!<49clwQv\ݲ&' .kv"jn]un4#֦+ʢ*"0DaDY"͊"M-ʅGs\ax4Y"ͦi6)B"]΅0ib~PXF/ҌE 塋(34:$~ jUSr֤%(yFYrr/ˍ-Q]KiTߏ">]y4KyuSWk|Mrh*10u*As[ϕAK[4{M Zv4 &s4làyq &t/:#.J)vx^ >Ju;uYP~Բ}U H3gYßYٟY%Jb37E:?scLg6څ?sϼʥgJ?IeٷAX*A@YRA{r!!{ҢvVևn̂L`gVEaʟ/&2g3&3V>+=/̝V>Cn>LJ, %(ƐV0䤍NJ &KNVT},c++XY?Ġ,2hnmt˷A<+4P0Ph"By je NJ9LENM9vI'k><=+w!Y+M~hR Mpà MVs 0h"@ 4Y MjByh-IJL O Q -RP6Mu~fIdTWFIXƩi2fubBYdï]Fs47M A!f ڠAclɈ0hO(4;f FKr]CO!AgGZgFWa۵6#[[f?Y kyDo%n84t]6N$@6^"]_ZO»mL=Hs5T<*V?1nG})K.O% lJ6vc2v^ j4 ?*ޖ~ǹĤF6/f{KF}AmL̏te'^Bs߮ߤ씇Ԑ2Pa8X*;(L;d]؈hFfpB&Λd:æ=dj;k7uߤe7nf22||ͼRe L R*fzs%+8Lf!f>MJMoR& xSirTF3Mn] k4;iF7%KU%COn&8k8Lf73ٕ/k \7P9f,ͅPsMʋ+\DԘT5f23unJ{wb%5f zs G'H|*X]y_'P1R!E7KL ~~A}o o\WUk7Ba=&V|5JIUΨ7݃7 too6- ( ~s&C#??T~Bm΅KIkAp&)?d-ά9@8M|r]¹'&8y^ Yv 9,`CحJ 1fvGp" ~J71}θ/ϏD7477H[ z3 E z31-73L0QVg8nMI,Y%YvPM_7kE5Yyo`77 a7f7an8|uy\Ul?'2#MRn2f19ܸͤ7vL x3k!wu?nEAo̦7K#zKЛEӛ$F´>7JÛl,) }3c4E $Oͥxo*x3eEn v3lv3k-4ͬHNkK@R `7YX 7Y\5Y(5M%nnT7q7*0f#M'UBw;)ɚLm.Lm.j-Am&­Mm&x+SYAmf f֌S`+$͵mEY sY0Y!6 A"mnZN p5 6dLtk7ęDLI1m. gns#4df. -JFuË Y5YF p50nVVpvyfal7'+qg'!LMo&Esi\7#\fo xa7ˁ|?߬=BڅoF 9f[G7eյ|s `'Hs,7i~siao&x( |5< T fA/*kO5f ~SʼnonR~s#:7'~掇5MR~p! pn^3eD; p6Nz=396e~So%?񛒮O@kZL6 iǧΖ moS38 ]'q2 SWp&;8SA s'A3g pRqypq LEY3T% 0L"ـk p67~+;ܳM_~7. d;F8e5F8@A8Uf΂oM8W]Fp*LpJMpKlj.YtF΍RSl+p"s'^I9d,8NdGqv IYPh=buX !p+ gPl沒If}p&ÙT8g`(8\+(gYG8Aoo~?g~sh~7'>8w-H 7e!]DDxBδEoλy,Ã&8Q1o l&f%kf%k]Kh|٢7[lDBߤ=M;I!kpF8r<PLZ W-O6̹-b1N,gY*(+ggUah pnd>I)ζkN:'S©@8)[@8w9p^0)Ù(0Ù5: 3S 'U0nYzś3^nST|pE,5g(&c6U9q;2&Ts<lzvMئ۴fS;Mmnp6QxSD ٟco gj춉D( h38s64 .Hy6 6 pkh@Y`H m2g͡4UW٬v ԶLtl5%̶l10!mb3BlnpF6U;!ل f 3fSd lBYu[0xl"J-\زMuV'lMȍm*j6 5Pܵ6OfAolsh4?9 &lsg6ls I&a*mڸ 9ab=m0sM '&>۔u6ǖghSmze6ǦgjS PCM9@gh&?ڄJjSJSp3)f4Y^Q;VNS |6qShxgjS7IpIP;LShM2mڄ,2 \ 6BKwBl֝-$%j 6bkV u \@5>)/hMyC&kӚo ~ZS5O51Ii &Dn=kc5?kd\`\:p"vиfmL*A\Sؼi͍Gqj\+㚽}1#;xM_;5̃\!@𚙍k.T\xd)1yM+| l&ؼ5{ 5v'ZskZsռDkRg&dӚ\زQMf5kCiVvd`s `,#6yM!?k6љk5?Ki\0pMMM&Ck5+6D*ZSKk-M`5+}057&^Э̺M&^׳mk&@x6aC'ӺEmD`f\K{|cmVÚUIY6憾4d|5 &/d kdP`̓hmŰf_pp6EȎ7 kfPnÚY5\975,,=Y5lsgXsgZsgX+`#ϰ:fܵn求]k@.o`; XnlǢ܀59Lk X3gH`ͼT$.`UeÚKfQk)`5TGj2>M&榐@5lf5ϚXM8`5Ufr[7Y&P| ,= krBLQE`5kgVs\39nT 9׬fV%ńkY6nr ZSxP{ք4YYZs83&Xs\+`M@5Qk&.`͑U<{B qj恕-P̈́*M3F5,F5[Q'f֜ۄjjjeXM&VS=`5Kӑ1AIA5M&TșUHG+7 TStj6MNm&5wjjm+4i`Ͱiڸ5mfX3=g!/֔°ts0kMrMZLiZs760qolб5Ǡ5%]ZsB7yWhXsi"Rj&O``fҦa5Q|LfЛb54)C},H/-TDkr1ٻ( kb+1j5wdkrKoS7t[6p:L/9,/#|WyWO{<|~l_?> sX~:g{v/{]Ixyʾ~|W>6dUJC]EX2kE{˗=/w˯~jo{Ih_{~O:g<[ߞ]>|t4s>Vt}7j4bv5)P>%78oM.MKK.K|ɦ&޿yN_z5:9:޿v'Rkڗ;p~Ǹ{|Ё99.=?u<{O;yC<|Gv-(^sXΓ':?tǧDiC}?zҎa<4zGci{z>~?`}zOѽ]|wvu؎A߾E_jz^vj4<9W}&j!g㹿ܞ,o_qv1Χ|Ѯ7ڍ'^~x9{՘q-':c99,ggu ~[.r;gϧ~ w !ƶίpk~B/9cseswOy,azwL?orA_O?j|OoΟwKK1W?|?MWss|^p;|9_Mwo8}!ڤ8w6Cl:"_bGJ-,g>s=Otc;W47Ͽ<v4c_?~埗J!v7qXTV޴^٭>΍7^jw)g?3'H[_1bwi:LttRQ^zdF󸟯O>%k ;Pw# 1DžLg]+>djENwY\ZnvR,>R,?o-lOϲn?/ϲfwg??쩵endstream endobj 342 0 obj << /Filter /FlateDecode /Length 43180 >> stream x̽].u6* cbhI59I IYҿwƊYͦ`_~z#+sȕ׏8_7ohwϿ7?;qO9?yt]ԏ÷?)q}{|jӿ|?oI-yƗ?˟?_?\cy ?۟?C>G'~>m<__O:^'}})۟ܽ=o㦌g7;VğG>8?)wϿq2 (x ůWuVuVgO?T8<>8;տj'{Ioz|,=c~~_l|8C/<9TիϾ>r/S4/?A=ח_慏cީm?l/G}w?u??S/{o<~}o-YjKfqocf{F~\_~=>AϮwy!/үa{Jw?X;/us~pV]#R?_ُRqa3P___[u/y=4(lN;v,ח_q}Ae1vc~Y[GwnEڷu?3vmzğ1`Nho!7qƿǞ_y?Ôjү!Sh_q{S=͏ǘam-NHEe}o\]HOZ`ᅵN>}Ɩ>}zׇW@_K~=f^R_~us_۔ͫ[}&nLO;Ǽ:zІm+rY}g罳F_yY3EG+9\g&O3_]#;;{Y(3Mmfgm̯Ց-ShO޷OSSٲ>Uxj><|}*[֧E5Oȸ=<ۼe̝geَo2ùĞ_:>2ޮ/{9;'kc,jOs'󗟪~5[O96|}-O)j}̳OeT3)>+>]ۧ2_5o|*_1ϙn=[h|~|>{R .VQ-®_?~;ƉϿ pO~?#Hqު2oo;w3w ?&^o,gA8{?3N-l/h3 {2u̡ }f~$fGK8|=xW"Z<'lAΖZ-8G-策Gph)c/OgqMWmsG\5A  -Ρ-û Vym|0ު2|F8J7:[2N\8>ngO2{Cݼ(s@o}G|w8)y޼-|~-2<Ͼxlsav#8`d)7pcl9['?r HpJ|4Z{™0O\lѠ|>Qx^oe|q]◞zgCUɗ)<_Cw 8ml|:y F dr?=+|F|sƍ~:[ܞٿ~My=C>klSϘJŜOFYx1͖ ^ȳK!uzz!\+::lc >j#ggMrb=C#Vxf |zgx4yuƻ]kU>q(n I-E$+2_`6̱m9< X:1P;[O.fφb]l9|(}fKax75vaD;[UkVՓf_rVl٢ =]󱴶٢oHC1/Q\e{fKאwqxxڮ熗=+?[{Thx}5q-UwKl9١؎FcLj:~SY"1ώA">B+sR8xY0R83#7#aE}14}*@~9*neh)ja}Fv+hy48μLy.Qj<,)}8,)͢N,,հpә;l>"[NWވNLܹ%:cn(f}>QD7u&Wf̗WW_7^(vFgPh^{7~o$`;t6rk 8gg<4 \5)3R}ޝFp{K>G,ࡰ[پ%_R VB|p/~F?9R0ԥZ-TƜŽJك15HjΉ]ĊٸNVƥ,'88w 4s~x 1PJspI ɑ1ȒeTJRΜBSi6Μtdm3T:sO3T::ҙE*ҙQJ*ɤҙN*Y̠) R+ R . R`0 S̈2Ό:S4NET:3N3T:3N3T:3 O3T:3O3T:3AH3T:3H3;3aI3;3I3;?ؙ)VؙZͥ|/:%va;gM}bgi3 }Qbgis*9[F })vΞ]bxLs1Y&vd&vΆbg;gÃbgsYzl,sv-;Klrl1Yom;gK6)w;XI KzlyYy/I@}靑:7^zgd)/;aZ'Ҩs<9.xB.x"vsܑmgi/s<lly%x"nynNv'%x"?^'%xFK^5< ל4]%x^s&x^wBwZN i&xBȼ_ Zr=;ɝǔe;1Kg罨vRnT;9#P;9&¥vH?Bdyߡ7#~"&c}3TaP[x9 [^C|8P0 !Q2+T &5ztӇmxgnOfˠ 5x[j}oapc^aHix=ڞl8$ɸR=%M/7[z\fN&DrhTnxέ|noQðY/l=26$\+ ۮ^IH/~(>2`'7xt4„ۥQacB|f YF3xxR'7Hc5N|C6@Iuj|ߴNuw9OlZMti6S֦ujb[ZMiC7Suj.޴Nכ֩9}:5oZbMdi06SQȦu*RٴNE3ɀg:mZMTlimPoq+S3 OS6 sSP8 S̐:NGݩwf`zgwfzg&)T:MH-3;3>|d;R;3I3S띙ޙTꝙdޙXꝙޙ ]R̴0LS2LAw:IM3;3]}pꝙ3[̴:%LSef)pfH X_XWBJ):DJ)^GJ)i$QRL%%cַ٤䙺NJ$y5>KkϒZ,y5>KkohO |<%ϵgs-YJg y)yؗg I0%Oi<9.Ӻ4s/P =9A4c=*oB_O%JܻƜsn|`T|"FHU!>2`*vř>w~Fs>x=Y+3g^c5{Ju-7bQEjTHND^4[b 4Z@K"7wi1BZ`>^xp`>jxԐGy#fDs;*UGKI)GTf3QG4.1%} K|p-yL'Qfe. qg-ȣ TTSa#RyPAgEuv3G9q{CBHkPAw ()qT:E:TCAl@4Л-@UK-txc!gDT^ּP;J9CG5% χcJU!Of(L(fO Kx⭗(̜O(轝'UIφsJvĆ3@_`3k(mc;٢4W’|Bҝ M<MMO%4oO.4!N|$R-]u=m茳Pw}z Iޞ-S^ȑl7]*G6ɁD{WCBacZB|'چ cKP_!p6`*»AD#ކ7Sc(7rA?P(,0[虢{8)5$qfKeYi8Jhvkk]B3`CVΒ ڼ]IgK·g[R6kϖKް[hAˢp ӝ}Rlҝ-D˹= /u/6gХW:C gqiP`2x-F4YE[u ۯ(DQ0_"etfq_3^1qz(g4R t$%JG:eAU:+bރ9ҹ}^*-*«ȁY)QC̭qA^ڨ`ę3B,ʙ_k{9:=P),F3q&hf)gFh&ݐG*1DŽ!@{ *5PN/QlhEV$Zt&l!Sn<Q*("%SRtp)I^fRfR^+NK{i^tsri{c\^tս:su/\K3Թ%tZ[B%%tZip T-tJi܄Nir 57_ !Y<{}f qó`^5zdߧv57dhd+_@Կ_1H=-;Nl֟= |lNi@;j*LU9;*r2@;[q8Ww> !F=k~)|_Q`@ waVtˏ(8ngq\ڕqYpr 0dJQjҞcCʕͥ$Ξs٢ qej!/Bq:l8rXv8GJ.lQ]ue{Xb/=c6{KKZ= Rg 泮!7a Gh!q˄7酚 eQTg/*&,|@($5﩮|g~ E27 M )͖Hf<;^ElM۱ 5qC|gX4xQ3'DԈ-̖62|lľ7ƍأ1'ңO%,aXKU,Wp;C ;0i0㹷ZpqE9#؆ &ް9ilM-۰B2[&LQ&GjZEP!k\jU9˩,m΅58җBY`T&^Xc;T:lHs܅|7@*e<[bMbO; %j%R<6T8äs_QgUP߅c5e2Ο#oWJD z*]+WRWy l>Z{aU̩3PlgKυc<!av!ר[K۷a>BzPv-k~gٮ4Vn4Lzc-<"vWg;0ٔ4l<'{b2n0rRW&/ d꒳ru=QwZ \Eyo/Z —1%^س_ֲj<64 \?hkiX:}^g* V6nQ/SmLlס&-YaS`ARxfG^l)j\&;&UXy94wE!i緙s`,P<uҖo"}Jn#5kNJ :0goACADI(EeQ:-Y%V&T?ŀa%C;=Qmv9vW0P 3:i0Xn[PR eQF1]chRLvUF"Ur4#0md$7 tI c@P9 D)2+nXSΐ;V<+,}0`J.G)%Mi*MXEN%bAIӍ ǞCK-¾ԦaJv*]="E;M%ZpFҵ.*SN-*oɞܲbc?E;Gō)-L _fZNuz2I>tMkNj=XKqn^s}/7KPU ^k(^s{)=H/m݇.5%ݑ)Ba b*Re _S?r_>n /5Tpf2}P,z\$!^R ]f ᝡ>ȓ;VCKv¶}uo>[3]Ȏesm${{ZZ4Ω?n٭!D"9ՊC" N` Bm1Oʠ.1m'(*qr Ca[i8q\XbZŃ8Qʜa%>ô O#q"fJ0v*.z2Vs.XSwfޯϙ(r 2Pq>x߉ySp2Cɐ6eR2Eo5uuMʱNUdTxd܁}$q`|7lJ omV-C`m>Vlr`40=P*hշV[e=)w餱eQlhlm`2:A2E1ybY sG>3U1|o $}~ΟeiZ-{UuP3/+گ1[nVadKs:PlPXXceWǟM(BsCinCtqsO26bZ E` |wTd|UC Q]O r;riXG~M0新?/t5 '7]J41 .B޿N0dZ9}B_ä1~q"7c;kb4âlI+[,K /?qQF`1D LO= \E)"?! #ih*57Kqf򱗇0P io*P:1/{hA~wUcR¨<MnE98||ƃb0偯#\jnrII|,#gȝ "^Ԝ%As7_W [(`ǺZTU̯LkN*-õ 9=z~:籶"9&+aI#{dUG(.H9ެ.$~U%jn.w JXib2鷻Ųa0psC<c?3bWks}Eers\\PLמCY^:=w-sqNM5h.T󜬧km voFP`%4x6[DȷU3Jv:q%q43*gq^a9&7\6"{nSdJhòZ9v9j6nd jŽh6 2vnm vQ|Aᢚ”S; e {|M wBP(n*'uM # Zmf+Tݢx[%ZC[݊گp1ߢT$EQ ~ip\ K{-|J"zu#EpE KCф6IY8h2R%G2srp*b畤e&rrH)pv҈; 8V;DSc*E_/4BZVVMR !vΩz?=ZlZ@$Qajh$5KUI@jܜ!5v|}-=wk{@%I1G$`iK:Û-S5vzaVô8'jdo &Pyh/.v$ ٚ`]"QgIݰ^>Pӓ53*ikfbn8U6xxeKֵEXqϷD@q4[ouN!o̸{iR,Oܸch c?H4P n^'s<*Ly2-U*6hc J^a)Cvڙ<|$9= U9=%DkWa|g-ZD{|gKɖer1vr-|f L t{}}N;~H ~Va : Wkn,džG@#tڐ h-aC% 4L "h@B*Bzh[h䞦rA+H@mMQh-&b݆ 4Z&E BD#O!Q쬠ገF .xFMfR#]1ԃ@#|fej2bL#u7-b*D@#*4B<4Zv-;LH@5$ži04Z~f!˗Fǥ#Q lNQ[ыZ4=r*2TԐLfHQ1(6VVQb" Dyb]/pdd,QV$Ѩݧ^{glQ~$nEPwDI4BѩNGDVHvQΖFK׻,ΰ[w ϐ"CpTWW)GhT 6i2=s]zAR!h{ŧD4KLQa&(U.e\\CFW 4 Kbm@#v/ѭa5FPfU<#m]8#W.Vf7~ь)4#{-#/ ɾI3JoAQ,{l!!al΅Q(," XI0#( 3J܄A1j!(U4#*L3-U%9I26rˤk,+qo2ٿΘ9ja~lY,t-etvI_3uJo>3tE CP=܎^=6YWǑN$¨%`K&e71[6m#J?v&%覢`6e+-^*6Rc˹~:S'/ Ն IensD[B$ERZ FTư*zKaÚyڙN&p?2ܨp8 n=f[Ѝu ̋ 2xǃ lf6z >F}m.6Bʹld]œd]6.c6F)$j6>Fau(-H (udtdaW 6ByBu,Q/v67kЕ-5 7jJ 7rUmmIcA:<8Di:x.+vpD]{2e~z=Xt-%65F%Rɢ]Ԓn4&ݨ[J,Q>Yè60j`o+)'4=3{f,YZOmo]b^%=aFÈuI7I7jVnTe}t43AHAj!Eg:Fxԛ5D_7ѝ!㍮6hFݬ⍚ 8j<%Ȼਘevqd'5%^r6"/ot󍰏C֙7(GUU) qTdG%S#PF#qtw')8l!.p q<Gv-đ *8ji#K q>wPtgɄ#9/ GBōptNQƬ$n1ڐ]"u4=3fzV1邆zrAvACD삆;ʭvA ټmu\UR4AC6AC I`J2Ash6rޱDԾ L遶0/@Dhϭ7=О!H\z=N-@&@K3=]hbh4#[=>?[l#C(=Жd>-/6PmzM 4M5- ZLܰ&hĞ ޡ|mL4:@CV6U횋м)kwBˀd GT&6{[B!^c2a^gl@Gi ]LQZ'Ơ8Bۈ8JD*܅8E4i'riđ&]lQ~xªE7*-,}-h]FկTҍjnTlQ>UU-Q'nT~$ܨ 7j΀nԌ L07WZhC%h!rFw,oPB]E]$FZ'6,F#l#o[lG{T蹼.\syZ \4x,RԇVF==Wl-TK}1K}]>kʥ!7nk ^ʻ0[PA7U}_b4D:@xCPV/!Rm$ފzJ,VoE(Hz,MKbSkABS*)F\C+T[TS?!ZHUg !9VX,&EEk/%{GSR;V(J9-L8*KQeG=ѷ( Gr4:Aۊ-'Oqd­v8V[ks&H[3Z.ȀJsp| cpĝnjD' 4ČU"Qk{5ʝJG1TR7X+SS.9ezT. qUҨЙ,EUVhݲetaIjikw•A/l]Fȫoe]ʲ{g-xiZIpHtRxiŞt ǰD? Fy*/v{cбd#z髎zo]׋ew˾*;6T^6'ot^^/y#=vTдɦ$}Mz+EzIܰ>+i/k~ :‚ZGQ0H2}|QlOBzB_ ēxrp(HKpGQ 5{!dJm&swYI;Y.B#12zRL;y-m;IP ,mŽH)laG#=jutۡ߬#l⥆$$k ɕ%rS)w"z#[#x8䈤##_ZXK&;%ߤ#5bu֤#s01(GJHL:: @6AGXe`%啽$IGnUpD6ʄKede&-R'fߨi-F#l0HGd :Zxpb$nAG:zq!g"&j%(tt8IGlZhTKu|t4<%%htIGI8ޏ?ꅨ&HE:O%ou}XFo ¼_QDod;pZnL'؃ݶ0= 2W98 j9[09ƞ2F,݄tB39/N{a!Nh} [7.'#}96=fS&Ⱥ=%ENoƠ{$A#3 tt{,L1!AG׭]~V :d@GFM/QUt ft4 =Hґ9׋t4lenhobc  @GJБ݋s$%"9G}|/&0G JQM&(] sԍHQ:P&( tԕ."ԑUd%c'YGsPy:F&(aG3KujU}Fll`GC_{1(_DŽjv[r*v|w:GuRL:_2 2_5!Z,|^WE\02PZι6x]&:-w{a-ݟ耘ru L-]@|/􍬥bN"yH )S)`A'=T]@Z6lQs%a ),^:v0b*ԏ^/E ^ FU=bGy$I_ƾZ绯,ˀЇ[qNF1Ba u(JM<dKV^"Vz)yO SvQ,^tڱ \te|qbi]á;$D ;qՓRUKZE4OG0W(ƌjo*t+W$aFkhr@WmԔAFʞ.92Ga=gOgK7nSqvd-Z伐48j^-ȺN|Kp~q2v_#,Kv>O@4U9O,".UV a~I'U*};߂l(r2,|AHU]2CI.٥k#bgڎ8qCjccw7|c:#y'l ^Nol2[dD A}Ff-#b8bsH"|,/-&tT^/"!FRGOd$N2d_-ѓ#lƢ1G!ܑG G  ~t{t~5LY#Cr ~]1l~W<~~Gx#B~=l% ?j)ؐGIJQlXq?l)hGX51\NoY}eRLQV&~#Ȗ"~P{?#pɺ>)V薴"bAK,R#H wgK,#> (%@JcZeRW0$ %' H JMRd az7\ NRwM HIR I@J3 H&irj"RrMRv NRӅ@.OR7r7H-/ @bi"R,MR>D ήHr"dRp2Hّtl}dz2ɤAJzMR)SZ;yN/ҟ_0_y*?[^?;%\k~5s察>eqJΧ^ &Q#0Z> pಙV$q䕿HgΕ˒v]ZC譥@]f0\C5xUv]+R"JU}D5TNPF(> W4-nC/X#)H10Ѱ#Jmf.'w+l j=ν=wPרK A) R)z A*/VMu/j y7e C=r c#)>l='D]{nr a#NqDE,5NLg<Mb)P\| &2ӡ(XÈū WbX+f ТT!N n]EG_^.ͤQ*J9*Q .2 >-fj*V`}d^{>aTÐ^`tJL>w3U ,ig(R|XTU z;|}Hj0i Ja'tמE(XQr2z_;ypW0ΖOw!S;\+<$eQE;Ldz%c,MA:e(H'EA:I ҡ !H$56 aH$&2iH\$x/ <`a=<- #lbÖ2-b`Îm & t 99H؛,{s+9H|uz  c AL9HM Ab4 AU-!!$ $ ^@HPB8`wB$'A 8b*.[ؼw$bT5PqA^5v eRrb+OG$h a}эA.M )S V ~! RlRi)HzvRHk R?Ua?(HH(H|7LA1)Hb RWT0ܸuQ;e d Rf&֓"ޓ|tb8]M<_rf6FJ3MA; nSsG8?'9AۆJl (XY|wE5{j=ԧ֣YP&&qCCCXEx؁G8Mv픺}k4v-3% VM4 93?ܯTW%"L10V$$CڿH8" uR}2b !hR;@j% 9蛁X~zZ2t;ԐQ2$:xib ;jb aY/;=[4 Q;3H 2YO^kfeF !@1N߲0 p$l$0$X>8G$艂mdULA@m/DA.ئ XqmRC7QL>Rjcnrj. Ѩ  $[BHȳT BBJ$$! 1BBшڊ(B].T|[BJB!a 'ТG($6CQHH[  h5g !@Hh`fZ &!m -E-ABBIHU`IBUHHhE  BjAHx7)9AƒR!|2r7z7nr8H# jf=Y{!EG"U(e\Th(ַ1k}k$Z_"0\ C> ZxB_S.a@g䅾%xzYK7ږ7Vu_mйxZä):Z!%eqK$G4oJɢE%jbL|-9@P}}',\kzj Ts`V :QGLߋ|"_Z`zK]tjX."bl*z*iL"YC & 9)aZa*:`қHDM@:I/ Hr-NOoΏcN= U%r {r+ոr_n1\bPpw0=UMSkU4Gf܊+b{th-, `!USE-tE=zG]ob-QӰG[#h-*x3yT5,摝h<:o&G'w_BiAL{1݂8L}6Kȴq(tݕq(2R%r*1# F/c.Բ_JN 9-9Jxxf|C,*:֪efa<oL!zR}C: AN94%9. wԪvIO;I՞.bmr;*hYR 2:rN%;yGf%[(DScb>GȅyA/=xTKFL;xG`ҌƼ#G^NJw;®b:w58YwH|N,ޑ;:0+Q;< z.a^mᎮ^l"yQ]kNK5Pp ðhc?!u؈&YGh,'' „g(y$aT2!{UC#t/Ou4V#mG+?mQnUNһ}H:NQ5DXGe#.d$Q0bA>e6': gp uԞǀ$ǜvK+HsDF/Km7ؐVUA#orAFq@Wb!{3bA(!GJ4I9h"-Bu 9>lCb )9oۺrT;OrT\ӛr Gؚ!0An3#L7ѓ&fyO2>kN3@&Ȧqq$z1qY89b:gU ȃĂJnA˛N/4Aa)G.[#o(Gvo6(BI9J-b)G髗#^$$()&Y8V=Ф'(s1L9z6(G2tLQC&vOUHLQ5N,)GկZR*#% 6b3hb 9!9G鋙9_ufrU-/Qẙ]V?3R#e !IG]؋tRE:M#TikJ_"tI:$HaQV_&()Q:¸Up%M uʼn:8PGHQGiTQGgwd֑uT#QUbUӅu=fuԆs; džEi(?"W;"\ ;JŽ %$g7YGQbT9Goj2eaQG\[v8Fa":@FAGt<$=aR%sT %9=a5L-nAȘ#k s$V$.$ۼf`TŀI2z7yȌK.RaΨ:B`%l"0 DG5#2[6r݌[quz1dOdArFrFOqeBۀFCw &ΟN#|1\G)NQ 逧G=X[bA0"4lVdЖ8ZFGGqԋD91h1q&6Cqt(/E;^wnC,đ8iF%(G6K[4(ֈ!r!2F̈́I|a#ZMCoJİBNoG[xao.gM7jBNQоFƉ7yF/oTAMQ|#s(6GNQ|6&je]{Tֻx`]F(fznN;vnӲ}l~@fU= '(pD(FX7"i\nҍqlgN2ߧm[X]\?J[t8b&O#?MCg OPI J6_QD@4YNFP9dm阹F d!@l#|36BԨ hpaʦ" =`D6 2! dViu467)=l!ly5BxFFÄ"q!}{5 #v~F\q Fq\[\#lOkf9FXz'GX#TTX(ぅ5TO sPCwxixLex6lgX"ex4Z۠TzrKl#oQoK|wcokX)E(XFؘ16QXf;UeM{GuqqXVԤ* />ΜۯK|XO6Yd[;[DG/ˢ'V'IX<{K= )R@ h7(k3n~#S[֡5z&)=k=kmb5ea@ЌS&MQ OTd5%ըwTfvRepF|$Q&Å5:wБ\Y[\T\+ 6BS*`E` X# FJԑF[`|l5D.Q:GR jTMCJq:lѩ8sAN 5D#B7[g8 G,ΐ1B~(¦a=͡3}9`F#=S~56aǵк=Fń1Bbs7=ĶGZ~~l?OW -'=yᶺJ.H|MРƶQ#y:Qè)\PV66 !rk0q ;]%U܂9bm0G$+ 9XѠpz* q3Nŷ@# 42+0-_G<#,wH<,M|#oզ6T42+nSs1FP}dBMnr08B?.J ny iؙVFaˡ(bٯ4d!WFȂvE>P ^L5^^q4z3Ԩ=ݟ Ś!(kEjrԨKQlP%2hUlc_7S|5j;%Q6!X.IT#ovjTl[X#`Q^jPX6}zvml٬# -b -|1lll"Ȓ͚wP7\fhaEof3 eyY6k7{Aoo[wmѥ6îs{3*m fH59A+Ifx9 VIlmLg~\fر'@iq;A͠p<I6\dmˑ#p^c9mlHHfFt` 5F{6jk"\PV 005{nWT$HidۓHnWDu#:iM"q i i`]42$֠4Փity Jd}:32CnwݗDI]P# j$y11/ߋiR *cqxB.8`ůxt q64PyNão"nzMd+Ǫs!s4w=)OXQ ``5EI#.E4$ѥ iY9Fi˃hvbb]֚܋_W* $.ck~LQeh9iwĞm%FW- +ſ2Z*G zJʠ&ĕ d Ԑj!ZbkHTV2i41>ewPoXm}%:Qbgm %daԬ)֥v=+-|f%/>E8y[E܎}K|r#J0h2htYIQ&"2ѾE4F%Ѩd}\V|MQ0BX|wTPBIwBI=V$0@)H-i8Z u!;-d4\$ˈ2~JQcnCۮ Ogpb3.f `d"v0Rq܉HURr\)qsJn`@A Pf 3H N' HQ'Ȭ@9azˍTi,j)OmO#mfWrv}F6oiнehb&9Qf&oQ -O1TMFi9mN0Ϥ*狇"zW{N};r=*ײeߜei&%w;U$>~XFhEfAdE7 Zkp7%@ޯ6 y[y*4CN^=mMA>Q鐗|2*E~؀ؗWNh0B& PPr0 jM2By$#0j/A$x"aO<}л2LJ̈A!b[2Dao}ݝkCF(#촡oYF٤͚YFE.(_vozy#YF0BYFxicd՗suTR 2OeSvXAXB1bё{;IF $ vD;hd{HF0#FI$L eq~, ' ,M2I"i["ݲKe$K..UL 2:>q٥r1v|J8l-%ٸ:e 6Fa)Y6@62N_4Fr LF*SjV//\D+ձ%3+$O?Q<k O~6ӽݯzv3TTk|zXO/p??vNhG#\t+vǎ:luMo6:m46al/XU:Қfp ccL,6mLhO, e/g32鷝͐f5 8H &1clۈ" ݆PDd26 3{`illlr&50|Y ^e*øwW%P"h5B] .3@FkvQR]i-2be$rc*EO1"U-pQ .Z%W4\4:m"s\r{|qr;E- -qHUgQ-fEF [TcJxآriliibNO'X<"]5fE-:;^TRN?ˤSN/E&:hRN9,jѩZtjƢ!V&Ejy9149Et>&hQєEŽ8"s碗Vtzu/2\ '<'kĉk,V  S' Dܳdu|Ǟw*&_WVM@~p`r  .2Ł"][tܢ\bN .lQEAݗDqC"`{An=Tk̢d5/hѨnIh-mA죻EoB*Ywkjrq nfK{3@*EIEO`54$貆,ECe,=$K!o[Xv);i3$aaj*~}:/u8$є8Â4u^^ }PCJ=}dP%E%H"HuXn3 ,j2؀E>T,Ͷ ,zX4LeX4neI,NӒL,l"OXd-yqL,TɾEرE#Q!TP"o/N3Ұ;SzE#0?Es'= :{.Ӆ)7g95c7-:T/4Uzr>*DG"2m?e?Ϯ=k|x" X]atZhfQeܽS7>nq}|6{$$OviFadXg%25s|.o~]~Жy#raǻ˩h_.G6[냺C=*I\TohEϵqKBTcQE]UW>{`,PEH8ZUZKQE@Db!%g*B^*XE0AY@AEgPK h * "aĨ"`<U%cPEeQE9UW x"hL8*Bݨ"*(XEg(6U@YE8,TQ5"hNU a*B&B!\jUXE\UQ$ zWeLf"VQO"Vz(&bMG6[*4U4*›UlVYEPNkVQ;$QƂ&*Vti}yw5aEjXi֎XE F=(ֆ*HJi**Q>NB[==Rz!ϰđ*z}CoFGҷջzod: u>2H\:VLQ_ u׼j/tRuzA:p$$%h%ve(+u:05{z{1džz 0?:6;`zDzA*61@ϔ4إgGIǽ Ĵlo?%C^c/ UoO恎0!+:KA8~sB,ԏf~殎HFsWv,Q7(9If=+*z}Ub U0( 1aQEigTp*.ymAH+i E"xL*FO, )o$R]@"XE0LW)V}h:YEؐ"*q p%oAPnk8L|+5Ɋn3|({U5i}Aq@_Rz/2qH}|z!Rx<  %+:=9'đo)q rx )G<+dƧD!'o| 9ekz&[MGxdqH8nDZ̕גi3~])7Naz%2whT=ƈk_  P]eXvBAwB#:K@l)E4LIHG0lyKёҵ '&j9SQyR|- XN/Xd,EX$PE1Z2N`0:*0A_7(M ֲ^3Z8yEP'+ l踭 W{㊎B9moΏ?ٿ[^-(_Ա˘ E`/!-d/Gs""".@&5 ԆuI=?lUL]ؑ;kkBcsvŤ#%d\MO S0f;[tmW_-6xyg:&3uaɡ3o;TbfTvBMe~vp2;1~F(M=q́־v9}N#'d̓Y2}hl:;B%3v"i#2F+:̨`}_U~DKJ-+l+}1ſE$P37HIN~F> +Lo=Gp}lا${r[8vYxk{rU1yB<^]n0e' ;u##[<ٓPi^_aQ*IYf*T*y;ز,el9ʧ$ MoMcǴJC|nE/yl^XvЮU8Ҿjζi@g|L/IhCh_!𣪢?k?v(¥Ecp8Q3)Elj! (1@^$ :7Ex) Lmi(05P1 ^q"u` pJl3\#fWTcBW@ٌf(_a^j+A78՘sj4{S6<(SiM=a? zg˿YePhCd`}ւ2Z}:-N5]tJ.:-F3*Eg̨ ΪQљy6*:DVN+EJti%]tZ.:DN0=CN ESJti)]tZ.:E֢NkEZti-]tZ.:E֢NkuZti-]wZ;Eם֢NKuhGAםv(;msV;ӎ;Ό;;SF;%v;mIӶ;lޗ<<^.=Ӟ.=eA]z<4KOf),=eTLi֞2ESƩY{[5kOٯf)֬=e㚵^l֞2SY{w6kOYf)ڬ=p\pQn֞2u)ݬ=SY{D0kOf)="\rV"휕hy,h:+OrU\k5 ]ǐU1@ZJfXotF$P߇@ɜnNkruA~Nt; &x{çY%s1DiAޝ}IǪo܂Dr7wPۣ@Șde& }̌V[̤ \feftme&h23CePYPD9٦q+XZBrf`F"|8K`q{~)pt'/ Dqy-"(.@>+(umZ)LI"A"Ax)!$:+=vEL۹Scԏ GZ ǰa zda6Y#,sayZ=vFG‡WOU~>(/P DAQ@: ~e`<Ep ?"aGt:q PU(]̠⫒R'=Ps"_z0F˾8[@!(-9D"H}9Ix0?!+5VUE ja@!7Lk0;|Id2,mafNBw0ua:oG^S}o V= +9JP\Ȱ@Fe(!2"E=ew(4YU;cknZ!>Ch5x]\~rqI] X@k "$JP[ @3)(QhG~@mvqxB0D@,iE &k 7PAe!ϖwfbWvrb0[?Um;[.R-A?-}hM9  m *{Q0ݵ>ܥ(Qs/JcOXX=bԳq*i%ˆO"ܕl< ׎k,B9TKzBp:Dn)^`!v6 K3gYXe>ueZ^!Z:IJ,CZ|[b؛#"f"kbQQ,C,ő0 h= BA)iT@SC'T,y Eo`1\x`<92h/8aRP_DY\Wr.`; kfʵn8 hj=`t|Y"v!YљBYj(b_c-ܾqa99. ^Ƙ. qr1ce_21ɠ; 2$F4 ws&G1p%!FRlotfۡ4-!yՠL>no d'rc'~\ϑy?E=+1{'-֯PS";cێHB03vl{ 6 ܎m9:x:T Ggv`wM!kłv{'q󅋄mw+}/C 1ێ&Ķ= 5~̶>G'L^vo~v)s&!aTf{8=≶ۧluۯaۻ x;#×l;\ ]'-V,,,og"&} X `~"X%E274[.A&ZDc$[| "ԠHaqdZ50Yt1$Yԉ&Yt2-ɢIMȢ}$hׇZX$Z ?EɅU'ZT`QO-BxHQ3"ѢZ8E&D3Yt4L(Lap%vr&Z3ɢYEa3Ɓ?J*w/" xQJfOL/R1xFċp.ڈ.1$EW]Ջ,QE^:6] 6", %\:f",%v2Ն\ .Œ$`#E^:6[iL .AEXtz .uʦi ۭpi c3{MtD0.n0Vf;cD= f)@"N,&b 4ˀ{ab/Ca; eؔ)ja @ZJ(ˣa(N [k:ILR$V*+ '/2WWѯ\с_JH\R","nm,F,ٞ W;N.1Q\}IЙE$2Xtݒآ$xEZM6^ԛN%q$"RƋNv$^[gG‹.4GxѱƋhh:ċv0Ƌ֛xQ;D;/R'jEb"96'^Tՙx^$xxQaτfT|Q0_$7S2_8&_v.F'_t/g⋊%H]ԑ|:/RjZEEg%E#/:/BC9Neh?u*E6J0I~EM\(HB!^TD/*2=_Hm]0"40 a5[5By"b HQk@ePc y*b "d*5h`J64ol@i^y ,ӽ/By-TQ"m@u(䋴|ѣړ4CEҙUv0&_Tq"FҩaƵ ΣԀ죥_v`5CS]PGGnfS D7ٔX0B}~.xo@}> 0h0MYC  ~,;Tf1b^bo:BE8Y)Y#QӡEl'-r q-Zw2k\a3*jqV}3H+m8,E,WEKRjr/f4В"P,)"~!D,% kV"bW%f^/藔FZ8T o+qc}" 6u"IR(SBD)-Jt)n%G)q}s"jB*7K!Y9#Dc3B3BrFLČЂ$jbF^fu80#t-*"f_sF3 )9+mEE3AQ@D'g8jΨ׈3B"rF  ܐaǂP/J hf2 \P,%7*gap\ ̾nj3 7&'),nmpaE;.۫("B7oY[Q("*]d֟ѥUSF2)~L:w:2ìImʊ>#Qg@5pHeE7`l3 o(5ހ9 פh\ ݀/tCiI7&o dcLΜdv'S:!3E`IPQd*K)RJ2EZISqm.l%hTR *Bݹ@E1T}h|U$_AEX zLs)["f0-vQBE*B] *¬(z*¦^tH* |Ha&z !B+PQSs*nPQ='*2b({TQ9H**6UT&oaE[e0~os #@! n3ˀ:BCd6b@a0ˀ_Fg//`קXLphѭV|E-fI~D;ZhɶfE"%dhYgA}1FDDϘ-JlQ+-?TEUBEEآ EIbU:B.T8H͈-uqhw]]aHb.Z'[tqmlQl7[$F?"'[JbNnT&[t܂i9٢{qStQ%Z$Dvє\DǓ)H)E"('ZT"E"N+Ҵ!kƊ&ևX$y,X *󆸡 +¸7TqE7$$>[趱}"Y'Vt.!"m+:khKbE.|JX̨+&PXQ bFYRE?J-jREEd{TnL9QTRE=!7 ,*w`Q;bF e%.e*@ӇNsrE;+\' 1 EaZFAL گI7d ačtCC(06xFįLN. fJe522Ane:dRFʔbW2kRFH(U) 2]Мѭ,_FEFM\l">K咒BY Is<ƖuF5P e({JqoŢȀ#FE(6wgt;4LyF׭<cToIc83گWqF`le|#f(EUpq͸8'h :eƍ n4 (; y#P㯀.r6JjF#&>aqdhq +:y~XGhGhaFgFc0n 8: j)L3lcс׷znOanozj n/pN E>?_ޔm`OϏO<}v3$}dTy;niϡёoo0X6}˟_|~4+> ?}okۙ^5O/pl[û(/?mTo<|oחО\/?}wJ_>e7u|MT?~_~~N?_{tWy_|8)o>_>1z'LqqMԟq|ͽG~ۧ~o\_#ms6@H2Ϝ{n:'>xmzۊ[+5V^>}/?{|d"ޣ`k7?.o'{[??v??=Ï>/8~>}/Z'u/w,G} _?9X+?&w|/L c~2+/ϛa\0x>?z1/q‡ ?^B|㟿-<9t>~to 3qs|w o/?'=>UZL }|>?OcF_o "_۟??/y_endstream endobj 343 0 obj << /Filter /FlateDecode /Length 49405 >> stream x}KnIv35裝̡ `l HFdW7X+be#`do?3WWDϏ3}<|{>~K6/wR)}>Fe>*_Oo|R󩣎վ\Ms>=\?q|~?.۾ݾ78m?~R?{+IoZ\O^_7gsW^N֓R?}~:'}ofݿ{j3!^$b;7woO}>oy[̌2ǾGuc?|Y4?Hg=~Vk}>sfɹO,:HAy1>duЗ:Cezgn韾W5U~S>]ߛ{{;Vg÷娽犑Qc;Qj|K#J>FzRϥQeu|(Zm~yő(spmu/ڞϑ o0icR?my 3#z>t5gk}O<O+/pd%~buۗgΏmnj'y'x=R>~--Ͼ;ǯٯ?e|O_?p_Ϭ>˒k|Zf f=m^;hv$xZs6+#0R-Au0sFgsJ>2?x#?U׽&_YFz\}|&ϰ/|j=b_N|D t4|?X^Z-FH{d?~+rgH1<#!p.=?p9t]:\w?X@foz؛}t۞W1_#ۥ~5?9>GkvybZUG?ݼr^J G;qlfOGGھKB@{lc#bmk5}c t؛nӱaE텿53Lӏ#c\gث l~kwMǶg~ ol:_} 6$H&=?V1۞TُƎ?d^KbF$ݏŏ9ګَ73B{97\W3ʦ~~ۃW f例Ǐfd^z{6#һ)a{>8>KN y+ȴ jO_l,_{daۼ6mZ6dH{%y-=2lF=t- ά6%~ͯ4d+ȴ9͉ۏMɊw ^ pxO3qӰ[ηVkܮʹM6Yȴ9 ea4?N_ێ/_jShc1Rj6%n/h3Ge{V ?f/iLɚ&'r˜ƔcO=罢1%A޲H>M'Kڌ$杽ؖG|ٜ,{,Vnsr{Unsُ9Y\Gɲdȴ9?d\>lNx\Ggc,{USƜ,{e?0_q Wu?}=1'h\kw=Ru? > 3&eޯC7b,C/a3v}#b;jݎ &%F|I`zbR>@ȰYWسXG|!(G276}ė,iGM<]3n`ɞ|1 T/GXV<ڼ#>aċd9,\%,H 5ݱ=;{ ˤ7`ގFN/ ֐ϿX;ӝ`eۼIp<Ť\jf5QdKmYs{otKi5Gf}i]KmTOh96>-d6<.Y_{$.s8iH] #ڲhfZ揦Mɜ<4W6|=RmhOӸNׅ2ۗ2nH'# Ӓv'k#4n}ƹ=nǶg=1nd>ON0{b?^Oqrcnp,s6C ɴ쁜8/(g\y;kQ唬,lkvm޲܋[/i SE-ӂOcCwCn83=?>q.DuG܃\p2-c.گEou";9ty6-#Zts^ilJ_{ G_Zw RS8éamc΅ŠrCd`0`qtqpZv piA(0C16afɠ O,(p[{o蝱V]"DD4 #©+Č`htUzt.lji~ӏ {W >: _^/ذ+_cQBŏ@+k F:a)DG[@Z2]'ɴ Cmk>^檶nC17zLyٶOȬދ*̜ٞ_ٵ6pfl ' D^C^ufneư#Ul#1XLzvYLCLr, ib Ʋ nG?r;qچK:{f;57|Jc K?yiaB1j\>~150pm?TJ3mgx}rݍu^ ٕQ8-U[~qFs.f85h1 \p^6ŷ׆e/u@wOV?&}UP*C/Vw({ ڄ$mBܷ 5mrW;x 9:=޾״MsL->#y5xqVz|F~{鸟_hɧy}>7adGh}/h*b {d9e|ٍm>Es1ȏǮ܀.!d?|$mZ([;m_`xl'WOG(LV؄݋[L WP1f9;lN5'hM{GX Q`=|zg ݦd]MId |doAypT4YO0s_Ԧ$=?cwD6)ګ{_({QۤwNHI7mO#'*LxsmNn;Zdf}[/Zh*-40 |6eqc{(59T;{+Ƅ(omWi-1mF>lF1;qȰ 96<$~qTm1P2c+zxX i 7o)kdoHEOjfdk˺Qᐓagv͉Z{ǹ;n RG{6s755k}7T} i(wEPq$0.}{=tGg04]#ne`Z-MPYUBS 5-wiZ/s׬<5.Pzr@1洬 #O6~<-&Ya%]f~ ,vG罣lP3:{䡩iy];S)!&4n;`""Eu>e>q2_a<|KQ;ǨwΣ:r_wnhCl vŨG5qף Au6%EmYTo;BN]W:Fu>LrOη*g|M8y/'U9rh|z1:nvYrq+_m%rzXcϚ4l*_-in͙`<ΈrhmyD:S@}%lOEDKldoyt,V;ܟ8< >je"*Gq/ rr9嬝ɡ~BNߞD6r 3yvAN]ЌPGKŗ"ٌ{tv1bqf1>B/Чo9?R.5B7?MBF v";r*2ɘ =xٻq8X+!AۭQX@)`F0p\Gt;l>'{\C9o+fa6'ֿ١?% va=zdAϜ#7$$SP-2N%= Z#`e)S7i~a>} OO ayi<| I1 @|r/Nu+؃,xA]Ę<Ƙ><z+`|~av{AOWnwm=Rcӑ٧#قɛ7N,3@qւ ^Igj9Z;Q$_bUP3#:/+7{U(֮0;(nCr&`f{~qM_/D0n '߹+Ҏ+2}R3q7X`^ڱެ7μ=2lBSssXk붥4f_`քD vLOmcoidgL>XZ ʰF3P 51,V0'èqLh!Z1'_ ίA*Gn`BFViA8&Mk%dU~3{Y{pig_0ޢ0#}pOsw1}zFܧVG[XT_58bu6^;#|ލAFV ~ҹC'vr0^_0yX)&7 Gchmj D鞏3{"[$g5z3Ƽ'>\%擵&`5<ì8:JFo(Z#/ t<6#~ +2An;{EeI-R7㑣),`Yցe}b[{X:Mx𩷥K7>YϦ͊{ e~w:ҽ7u#.ױ k}x;evSxqnEѦۓ;Qps,lDtt]\ -~3o%~OGEƭݧȯ:o^X[uVet搹-kq%l_ƽү5cl0~O['0|֘C?9v_=c˨ȡnYp-g[V;lݞ{nl*4#_ժPpwpЂ! d3y l# 0:qt?W A=r0ayjȸV0[|ț##8ȓѦŖȯz_e!"T =)g .F|}+K"f9%>4nl =4'eJW H 2S9"Qy1O-*)Zemuʶ'7*`*nWV,U+RdOžB0)U5ZJ.QCzZajj}QhZߘL"Fo > ƤfskL5d2=3,̼St,U @lL!z°w+ط绘w0LLMb/ar<줍'fӞf*/gxEF{vpm] x9[gx?r UF.s!cݙ|y!7ǰߴ?\/>:[[J}&Etm Nhn3nM`FxGQYz1g{3h##>&$րgMc #|^#$[V j̚pGv^۔a6 أöҡpitW&\ݡGmO|mkpYkټC$" a̘v`d&Y|_AG^f0>~;]@l{Α71KyclO|Mly[MWR@梓ߦeR448JLN, og-(+۵hx?p1lTugD I8RGFZA}AK9%@5Tɢ†Y'FAwAîNɴL٪)I06qjz̗j%;j"D7XUy5EN'j>۽CҞ,# Stm>[񯒚.-zbe#HY3л2d:oJڝJ@ 9;":n~ӆz㽵IM}<0:_cz3kt\->a׽ZOXth횲=]ӺWweңѦc|oX"uK"Uk<3Wۅz~mGGȍ8KšMTGLO%ZvAϗ& :34 !e;tw ty˾_t J'}-roZb0+H *w~0r{O2A֍"G-nv{=K}'6dOx$sMbAMr>G.~ Ps͚e};1rf&XtS{S}S;Z *z;HrCRRW@˝}yRW./EIpq>{^{cxWxK=ѻ.No=`@0z S@ X||`mV w!d(€dKc@!FoQ/>oqU,}MH6j QC+lxzu%վST/^}U&Pli6:+S:LN;eabpFCKL4[%!),2OiW{[UOwv8 !6#X(mʹɣ wf(%==l=AD & O%Q UYrbih UFp++ĈSEi?`e tS *Og`rϣppt'KArNFh(3"7>aBR7p0}B(VF<Љ`Nt9 |;\DF48__xXÈho^`ت 8LAe+_m_ޑȽY+x4C~j1U5-;&)GgbX-pW`;p`GyXogvգJq:~H-6v~`$)+w vkqAsHSi(ybAc!͉yGUeD 5ۼ*.ڵ8=i`L /7*!3#nJ6w'nix_ƴLw-ڶ۲ 1ݺ_p 1@hq+->Gq4|LANpX_Z.燰lͺVVcg`#yoZ0z Ȟ=8H tDD';H^/lCKYNk|pZQTsHs{!E>Jl5nqy"nOQNk&&  '_~ XCBi@i" n;2j'˓jBY;jDj+yYRz@U]b![ثY1k!*MV!kǤ{z,"x \+44j#찖8#EG^,MNc1dްnp߈xo'j]I}Ztx/r 7]IE戦8O3$C!`:+ <ͳlFWG& 0 }Rp {"TQ/z|>dygfi}v^2߂O&ʙ1gq2ܽEޘƽI{H,A+MVt#nzNjv@ٗ%wnA;fv,h>p}4oطnͻkkkE}qP.a͑G5o7ǍuHO1ظ3diwtA7zaݑsǬô wui뙴r;`ʹwIʝ̞;vY3SgYlhr{ĖOҝ#zVX@WwSwyHUݟ #,t0ҫ##T쁬Ca7Vj=!PcI{QTYfVG퓏!(u2$zɪn=cQyfIw?T{KarU.Y÷gc#H0(fz ɏwH^C_g&xi8|PEVi4UTњzʁ$Xf$핖+qL]`JWE*LوiR0_wK*FJb:S;FڿVfq5RD`b gN4e@fSX2Y-Ӈ|!<̎@)֫@:JadSux;OʶR~˹ Z1y8'3V2$(n_mD'JMzim/Gjhe8q5}G,!q4dHv Gip0})yF5ԍ:ڏT7B眾R7BzuOCu#y|\FgҤJI7a+nZ_{mAO,[Js"w{obE0}\<]׋gv qbOkĩ-wK0@bLHRl1/8'2B,ddv}ʖ@ߐ|]{g|pFKvO1)18ܢR?(G rdE[$0,NU!"s8$@d㐝}99SvzѪENu8~B-B C"yO+"x80CLqJ_ǐq:YϥH\rΓ##EH {~ 񺼛_#絋#'?>_=R"HǑfSI3@3rBթ^f ,7f42Q,jՌzLIͨcf痡Q_" V,bFXN:C-#{9I!IsQhi]RwaR;; U>am؇h0 9H")oְ'2M*$rXîO85lȑ:66R>} #%>n(ۣMuvF? 0*͐歪(h@<ϝTFjL$F1W]Nbmcp^#k2u&+rX#!W]^dpX6FB?8#49QvrX+Dd8 R`8۟^5by_uwƄooY>f߬K.͂+߬e߬jYm4oV͊芃߬0&=f%}7#o&Ͳ:, Q,U>,="a#b={7Tfo,}P!4n/~3o# u" Z2_47{F|C1qtBHr)@#4 ͂:q Q+io8D.9̗"FyL"F%#bY9"FY!bh1BڎM^" gӤFu#a40V-a/$(vȮ F[t!_`_4I E~*$}в~QGzIgTJ%$5RQcsC7$<$j%j$J?FU"!!a:ɑ0*Jg,##j #=T8E!ieo8EVE *G(Et!_Ĝʑ/jZ/ʍQԋv`9/[7劤^v%`$` !j*嬀SF9+8C(iHG4Ғ>4B*4aXڳQbphhIhym0w$b@ F:FrnGH|=G(Y"F9KI"F1#B(/=5Iʕp`I)aV!+F$d9hKT Z P"2.YdՆ\[kI>Bz,C#U%cB}$;Qc ڭbԍV1z$*FMJ(K!94j7oyC(kLեb$2>Hh1|TV$#5%ݬ0"DB UcJ1+aC[8$c?dVz lV(*@-y*b'30Uf R1KT ERͽkͥT:F{ĝ1Z{yR BO^:FJ2FSGHG}?u1Ȃ)a϶&gnPso&.9Izrpyc#gW)~m5 x51M?IbqZ !:Y̯2#Ά~ZbU?#uܳ;BbggwV,GMLOR0.xHFE(O{|u{pK$|U:>b _AۏYJRpCRFKD9!e4RqRFBh`>D!xXQ,2KBJ2ҞzBݐ2?=/fC)02 2%F)İ#)QDX#)u;2eכ`ǤH#-N:eY>ZF2 !2J(Cʨ IʨQ2jJڄQ+↖QSJFrBH*GH>\(UmQTQ"QCQQb1d)e2!ehkm(i!"4RyZFx%QR2B DhjE<ZF>G(CnJ~w02 }2B|i-qLRhupun^%Dn[fA1fv A'oо 7H w"SCȇ).EEA9􌦲&g4zF!%zFmP3Ƒ3| 9#Jh)+䌢,rF;0ԌtHh(c(5hM`˕ 93+3Jhx~h$Y]iYZFX>@)N#e#!e4Z%e4 )uHhd IHOpIUBKɨ9oCh*\X|%GKdD-%#4c)d(MEє IM4  N!n`^'"iI ֟RI2\ˣicģJrcDcҘ# T_T:31Kf7@#(%wx:B4<|VHxbcCyq ϳJi`j#~3NVhMj-) 2bd - -I#e4RF2] 2 ѐ2ʧ-% -#e$pČbF] !f4DbFPG̨qj1#eaB̨r'Čz0[K̨DbFM !fԆT&$fԤbFM/!fԔu 1@cI3^ 1J#fT%bFQ3BoE6vHcU:Bx칢CeLBLDHˣ3z ˋ-"HҐ :NT*")l Ffk2̋:NqNea*'ɏ*< Yhek'"Ey*-oA#8n%EDžMBImzY딟ٙ !9<_ϭ@, E-/"2ġΝ+2H٬aٓo_u1ǙU]wgлnhuNsfzFeJo GezzMpfY{Iy\W58{e.=o Un.Yј }^gKQ&hA7-F;kvqEZוe@>đ{/\k^tK<(WXW ~2On/vMOFa/3$ZXdp8zTG`0b:!'޴qWAz:Iy@[S A`Zc0}ߖJ(cj;E][.+kܭ I qwo0y _ơ3bɣr;,v Wq!Zfܧvt*`s2zȄ,{2z4!VqmyX@E]Xp.%70J^[-C5("15rA(ﻤ*:@ӆqB0PD(Da ~ C2)MCXO.GZQͣ,Xc [Ÿ%;J(~TB+*~MnTZ2+~Uߣ6*~_] /7iGOKT"T𫍌Q F(I*9OT?FPJU.C?1*/Q?J(wټ!ʋS(:`nOSn᳕딆D^.)"`6$yQb4J=C(TB(4_A;TFмtQFhFFRV&ERH!hH]81ÆlW4fGyB# mԐVDrxS7cGGG4O!EfayM_#P[8$]◒Qe#XU9!g!gTzF-hgUQS>%gD3b%g"ґ33=3d=zF㑀Fj чho=##5ߣ.FMR5O/$QTIHD8/ٔ`)1D%8XpS17tHԖhkẺS$ [wV~]C:諟k롯N_zkW&gW'TuZQfՌ:jFYf#gQD4ϏQ!QjFpSĉg-1ϐhS"Bse'>QML)#d]ǤhQB)gX*)#ғ(BM4JFhSS/R YxI(!" $MBFHPBFx\_ DoeBFFbz/Ԏ@rfcQtAee4:bo2z =MryR24) u m d& %dEXomqW֐g]"{֓(׸^[nዌQUO@q۟!{ǽC"Rld؎}K-iڷ<վEΌSMU74Fo`վY>žc$Mr}!&b]'Sk%j}S4J}~<>$ }]4QLj`&TBYM(ӄJa +|'畘lGfh=:ZF`wR*!eؒ2:rL IHScRFRFժf1;X-ؼJFa)/![sc|_$2RrHbw] yyp+'vBt$`׀"*@0ch_rk.(@(ШnF^A OcEa8('a#0b |}Ea# "x b{CнP0D"$r 1uF 5~qFDV쑠iyi P"](Rf$8F"d-r#ض#"AlT4f}DRFKEIRFUGʨO#5P39HHrFC=uI|Rŀ$gtN*EA\Q4lI#m!it$i4( FVBҨ3k{$#uIL4"]4 -4lQg344嫦Q&KhIhuK-5f$΄:423Q[$iC) Jsz.idUU4f)|(i4+{BEL%͘D\8CFR %`S\EF;n%i4UFGJF_|J!ԜqI#X=4.oFFd Pzm"IZ4B ?85喨zhCQ 'QMQ#8z~5¶WFj1%C뒨vJP_F3=ơ0P17Œi\[ejGyR*YX^92|>>tȥ`dz8ҡbNUPu忕;\uSízG\o::M+'A{Ρ.fvp`?+OŨid"rA#_#o E#d)DI#JxWFHcCJXr%P%\˹%NDI#4B(id^楣DFM_$꿐4Q I#@x/4nh),I*Ő4BǔUwh _FU{jѠvmݶzm%E?jao~lCqK)؋8C( I'Q(I(sDRDpI(/ѥFDQ#P|MI(QN5j QV"/JF5SDexTR<?T #j%mBNFc22SC$k4NM<QG(tzC٨띇Q eֿA_EkӶW6#}֬PH#lD$lّ{Rd$l.FZ!ltIQ(]#T6|Q6:H( FI=~le#<el43}_j*Ω'MSbL:EE7Piu# u#Um#uiM3ba| ۅo(!CjQԢw5G~(JtLR~VFk-"TM"^ YSMuj巏ғ3AkW? dG&5f[z"fq6`6>:kqC?$sqZ bZg H$n^|g&/Tȫ DK<ף&y:<(ٍZEkihEkZDkڥ7UEϭxC#\Gk\!VU\rpU4TZ".[]"5 "da뱒(v4tsUKXɥؑuQR= LՁ|}@75J/f^ƒbbΓxO6)hO!8t^\St~/vz _,'E_LC" `izD(Sތp}i55=ĬΥ)U8ݾI 5rq"!Gbz1';,˅H3+X NY8ygu~vqZЏ!m*$mD-rl%..u!- Tʋt/PTh`;9` 1AũS{ J7v/'Qm@P:`j~ ^=߼dmZn&<'; ݍpMEB}xwI:*#18 [6d|nO 7aF?|7C #$E1)0 ~aGaib8`cP G m;7g]\QXJD=+Z}揄MxؙwxƠh,@"^^DvA!(ӫO [*{ao!y/ "Y| bWyZ%Ϩ۾v^XAZW{%.߄+ɯXi%rV띷Ze/LE0uG_QZe~!JV2,`2?9 ѫ3s곬^vER8$!. VOA߸tES֢̞n!#JPf =GFC%h/0 biOQHX:JX>c̈́'x$1QxNMR@ m3_e LFC"U8J.Ђ"=38]:K.N$JUq$1 tI=.2QL-ƈ[ 1K wc=9Ky3+u8iҡycdpV:%<9=J)qJ6tu3Co?X3ﱟ Kc޾Wk}p~Ӓ ȊD.Wzp k*=}$]nEr#N5 p_;Lw(N=J̻cx8"A8a4wУ@=N:z&LBGC^BCc(oIx* qPV#$3h-,CG х.Bňz !>^1,—k0hȹޱX ˆnw( 1qn|ڄ֡p_^;$@/E >T}z ̻cQw' ;1=[0)_>/b&FTybb S`sLu PJ7PB[ZDP$N3K/' #jz! Cm1.p^(+< !%,#: [ k12n ň$y1RohN@=al=Lb|`B0cyn߅!hibbMƗ)6NMl "AR>8aHss׸pT_0^>_@Dg2w.UnQD{y8"P2u GueE#ӭ7RG!/P$u@H=ȣg(y{h>,TzWyvGk#b rD-hdxvG<:#-HMxX#<ȣ2L V{G&zjh z$p-2҄h УE= Gv~B[_zX;އ#|rJtɟ\#$H=2 GDz41}& 3>B2Ga }IBaoȒb>`#L\Df G |@|foMhf*ȧ|G3S: GG\$W#xGX[B"xYN [WO#5V)N|dkqDnad9$#G# yGFdW'd7+ǯNsG#& H"6~3]GHpz˜GhUy?G&:@h4!s͵y@DlG'j" AjV~.}4 (W&,PX#G_#ck}d_/#]C~GyGh0k/ |_C܋#$MQ#~~BS`O%4أ9 U!}MG_ ;#pREY =B'a<ar$\-^_'1y4<@E"撚Gs a<M!!1D!c<ŽFHȣeFx GK|<#dAxG?7ԡ"Kz`#+hXC xDOBQ^䠎*)&c: uDQ>" vTY_= D0weZZ QkB" xԄk QcCZ@Q׎' k?#`E,*!DS9f!F"B&A͛ y<f@_ރ&PΫ/jރ#Q_h#!@yS!uv ]B=1x}A˹ =# c\1Կ(IUx-GkrDyeܫM^eU.2j1iQePy$ p"\>w>ꍈ ijRi#/v ~D YI!0oB ?!C@8Hhv$EF! /*aʐ@0HE ʹf' A d1aH&VAGC*  ř#! .aHY/;  N`ÐTopHeդ@$krwH7D.ͻDsH@C' oTD~BT?1HyH!\IXѓ H;&HHüHB0#ukQiPvpHHH6H[HWhgr鑞oI)I(HI*FJj 4RP$n /#n$y`$a 0Rꒊ& ~b_tFJ@(R~dLE})@xDʍZD$>H$~H@"B"(Hp pDL=pHUlсC]%ᐪ$b7!h$)8.W4pH _%iQҨrcCr4 88%8} bidǎp"iv\b}4Y/RCATCICj Ԅ? Y"=tRV ƌyc%,!P B>, y h_ ,LrL]8Թ#4D 00 RF9JT'(R pD~@c~E"=~Q?&{; %@1F!txqn }rdIsǨNaTLGsteO| \B i9t3AB /ŐYΣq)nsv(5II% 01nZ7ZD:L]%k:$Z<0{YyJS"֡IC:>*X NuXrao{[O~&\\"Y}WZ!u8Ԡ q,)TW<4IypH!-)Z|juޒ&ZYiHSk1?!ɵCª P8$I 0Z.!Uf )I[Ơ! $HF $ 㡃D|HIjDvȺH"5t/@_ K P["%J/&PH?($$V#R $CaHeIJ8$tʿHUEb Z($jC!PH4HwPHc%$oA!MrҔ(EXj!-)VO: q{!ac؆【`ܑ7!ӧ@HZ !CzAH!ABa8%bDSREAuH1HIW$L"AޜOOaB(HY@B%%>^< Z.'Rͫs/_6o7Pިk@!يiD #.r, o:GoEA8 ⍰\Gx#49Fx#[xܨ=VbkrH!GX"ZZ: GX~!@YJ$GX9*$G!H 4A7}\#,B*GM33G6G0<GM8B>!⨵8io ,?GH9%GHB> " vҒ7r~!,OI|#d)GtpGm%`qdb?Gȗ<8BzS$G!q$frdGYGER<GH#(B>@ IO{gӬq\=Յ-@ɰaKIaIؑZ q81CKsNf@%! yqo_UYO>g_mGV Dۑ[#paߑM<_}GV#rV}G3:&xĖs6;0^xy3bvawefq'ovU찻GB07;]=# }%RVRRn4 |.vV:vK|<ʆ<8;< @CYhwVݡڼ/~j,J ϊp lxV'Fʋ7<%~ ]~ GPfC5Z vCIhx+,oPmvbu-[^zo4|X~,ސ+c;cmkqcfjXc}V,tXd2gŝ>~ɬ@2V˕ 2֧ Xt2^N>G-Иkw7:֝#ioן hؐA\y2NhUhiyCm5;m/hyvV}@촏u^W߀뼮ɿi! `FF0+d}ny_mD:cO\5U׹I:3Xx7b6N&h iwھ~:kQj Vj)>pILI]j ]N%֕y`#ud8IXB< FIuCeٙνݟ0N۶aTgVzPvi{봥1^1ν3 'u97cr)`K`?)2 ;ν Ꮐ]u.PQ| EAu Ţ:mӶ:[ßPm;DNo:[u6tl mAnPO_lmb:m#2}]tڅ:LgSN|Fv&O3Pn2`73kBЁy:iU0:6qso3#:m#Nuv5)}ƉٮOցHH-!Jf _@JXj Lf1 Y&K2Y2!D Y(Ex Y23|L !LYɺ5/h@ä`2& sMfi%Mf&S`>NJوu/HET&]a2JL&Y0Uf"L'd60+8Kf;B%kPa`,tLȒ gLd<X2Ti=N|%a9mΒY7ɒSglBmdJ|l{Lfc3@6dFX Fk'/Hٖ00dVnr44Aʼn3Fx*Fh1PM& [4Nf[ND'҆8FHLwd[ vi2O:alK&Kud6cw,6B:3OQdmFd͊_+d.bد8YbC%68YbCm6?*d Ѱmӎa6%7i;y<ҷbls5oa- \V;˳w-Xп9c,^>ˊ5סhwbua|oW߾Z  gI;O:D\#V2 56'Iٹeu/? Kle|ZKTppa18ny"^m-x0C}A< @h~Xyj8= gTrm˶%CmD1N[-|Z;_&bK}]h]kNe]WCC%?H6FDAxJ{='|6|^7x|9<a#2+#8 WQ`;X5;G0ZC'̖{7sbֻRn߻1oDKm_yg>KC?zl$l*'Z @?$JHbv $`KFܭ:m֖'$>ln{Cl|qzLlb*Pl|3{UJ2YlV PҺc bVC]Z1Mָ hk0TMKXu.oH20R9.&mi3ϴכV~h]+h.lWrkuǚc[+z22{dpoKuYAyoboYghMCUxtyTڂ&}!Ê]XèinjYX2yʨ2Qj'E_ j2}U* F?}U,u%Hv3.ōFc-'*X^r>^1jZlVnxilVt|f~kT$pA*BSR?Yی+J+~|J m z-Z ?ؽ|%sW؅bZj{Gtq] fu1+IYP+;v<֋**ɪ4ڬj*ҪXfml^ o޼oVEWЭRâr#[ْU!̟vUF%McyMn00L60ffZE<whs"d<:M=RT聵pĉq9Z(\Z /|[F#JЌ6oڜRT6ff.Mr0`UfSЧf7:B[$YsWn 6vF"v:UGs$:Hvm>`GS؍@bm)m~6n{釡R!yN=MN-ܞ"$Q }2KcS>6y-tp9m;〗B>BݞIJ;/([C+C@BFE$a@HCLunm}kH[FV%k@]7H49J;bXK?F\L; =`g |R7B3(EsH|hIz@PCȢ$rth'#"Њ TktQFɑB:ҲRF1HiԤcel^NN2sXyTTyC|-Ж$xN[I'o|vzh٨C%'ud.Kd"l1vP:% g.`H3c;mA` @GTZI/rPhU%#z󪐶)P+RB R |IsqzjuV Y'[c#ziC@:J!3. qa̻݅vG1ܢA]h*dzOׄOQCsDE3#(x`;h2{I7]"u^iw`Cܧ`Br޶h˃,ƋGQnEF®t?0 sM -|Ho=|[ ߕqה h"05ت?s6#XuglX8%VS`e!7#TIH)0e)@99 DHek g3:-j+CƶE{ 7nYP7hƼ̔hSb@M#ntv0^ H&d44d}o6Ȭ'9Qe H*G-*fSYA-`5ၥ̸*lSQ@sYYH~S dEUIɍ\VǁU~pr^804##J+#f1จ#L?YݛL5+ʕ|f|VJ{@Z)</ћԄ qf vAVv~0u\lʞ!Tynk V0?BY[>rs YJTRfG!4Ŏp&nvlD(g[lgpg0zogh4BB#Zy+kB./ &lx^`b~(9j k:U E.bs0 !2jG~v<`a0 钇-h_¨ 5ā{YS(a3>Rݿ^ " +ѵB<ƶpI./2vԙQd#u Us#x~t/'gSu#9`R5.楠H* ckǴDBHTF&2/Г}y=9/Hn 70R*5(vg#/?K~2SQ35G$(@Go$4S{K nR)R|f(csSeS&2/3JG ʬP{z[ ^Vw@/]% lz,JӮOD93xɆOlGofE@3-}Фf5 5mSۄ|nC;lZ}ns>~`(lo4s6KG.[?*vvY#f<VWAggLxpfn.ݺ=loCr«s8Wjw5ڬ[ɡ5v"ĭ%[OIh;n`S6 }r2mDFہ74m nФ=n4p.MIʽ)/NK۔s}"Hܘw;35owObӹ.M)6;HPl!&}aIǦݨg~V5}:7W'X~ܾtX+W #Ywn{?qV؎_ϒlzGI6-M󯕑OCIlsuf6}6 <} \a<+0l^'4l^>ڞM7`w`5MTkIy&e~MR$~#vy8ovCEfDz n-xn?nQmM6fYH~Vg`vhk]PdkP5 zCI|5(`Cir~y`{>u ukj&^yβ[gkƧ%׬ fe䚕z<5IOIel4ɬh YS(& סPZc<ԚrI9[s]$&DRkpv̫u 8?O8ӏi~_.ɭY6[nl5 ֔yNrMnu ,kE|5OZdԪ]vM-ZPk^&5/^¬zN5I&eaľY$(ffM?YЬٹ6YY0kZ͚̚}a֜ՅYs”fŶ̚vCݟ9+vWxu_ a?d,2 tFi,^Y,+h<8Ȭyfc$&!͚ܰYɬɲI5YsjLfMa}.ԚP!w:|7If͂-35Ib͆ !֤;ĚڤXSۖ+ Ҭ3̚}$/bRV!d0Ěz5kD$KĚ`XsP)&wC Q5k/)lܽ TkRb}t5^{5N&{ujz?W[=K^MEëwĎ}j8{5A&xtX.y5!L^M+XbM@^Mo^yG^kRI&"7`!DAkbrĚD۶p2UUәl2DUPzX5bvOR7!Cy%'x)f&$ք*b͊iMYn8?5'?U5y-JƠkˆWmIX|j0dʪِ|NDw^j29)-Ļ˫y`V^M^Մ,5ЭIrk*dԚ &Pk2>Ԛ#MjM~rk^ &Ipkbn͊<`fprk}nMT[Smakv}\A5KܚV[޻ˢIjI:ԚhOj75ybZ &oʡTt(]j̓oKjʐp5=L*z5YSjMl%&DљxRjMr'&fBXsRbMy¬iD5 &9ìYmY`|̚2kv6ʬ0kj*Ym2k6+e9Z/ˆZM5+㞓Y'2k?e֤$5/tӬIK6kˬnld<72ZMIȬ9,ffD8͚h.OfMo-fMh>YO٬?l_Yɬdt3@6k'͚Ѓ&f5i^¬LZMB.dI5, f"5ݯLFMDd&Dɨ 2d&PRjŽ &*7&KNBԄBJM%&m\3SE95ېSfpj2;;5͞aF}rjdNMCөI7k85NéIWH5*j2g8'cT3h{KZ͓W_o5iAĚIk2S !Ix5 FM&Т)%G pVj,i5f& aMj; R §Yq4K:ţHy(i6F6Ц) PiNE>MZCbJRjFFM32jҨFM*CI㚔PjRJMzB8FMY,ݨ 15yQ0jb2BMNf%Ԝ̆Pv: 5.&E!ԬRي^ f%4*P2]7j^bQ59qQ$2jNYèݧ0jZke_96]į|K¨Y){Qs?5;j2jN¨I+{5QsFN-Ԥ,K)5[0FI\TjN\`2jV2i4!EÓEs,yҖ)&Q{~2j&oUs- C-fFM;] g"vK!BM4Ps%PyePsB-&=iz%(nv|K4+i^,*O\]i^ѧɥI4Q 恴Ӥ1|i$>ZlpLiNnL.Őik &עi f/49 &(d\æ 4+aDiib6 AɦdDI+4i\fIdݏ! LC#%i2Ndhvl#4)5L7iV<.ߎz!Duiү*fS2M4Ҽ\Kѹ2M0 I)d49ȅL i.nH٘A&"tdM:e4j61% BMVBM$DJj.` 5OBM|'&A© Drj p@%feIJ̓Q2RjrY,&WΡ)\SS96rjtNM7ɩ7C&rj* !pjrNM!TJ Td\ ɪ{lX5/ jY5 $&HdDVNYUdD>Y5{Wel"[5,^ &Y3Ve~JZM_"e&IXtmnh5ZM^ {$j߬ռeC&gY =̎ &Bԃ<W}ɫIRx5?bM5LbMu&&¬I'V5IiC̚[2k*3PfMfYj2kʬٸI(&ìYjmV5*ad]5,浸)&ì)ѧ̚'N(5i$NjMߔW:j"OZMm|Vj^V07RZM;դ-ԿY,a5#2fMt 0U2k |Kf!&6r Ȳ\EnMru٭ "5njvk⯒[B&CyCzMx^xJ5zvM|ɮ5aLvMg ]PkB^ 횃H'&all]JN5i &&;)'7`5Il#5OO~JM~M"Nʯ Y5Oxdi5XMQ-fm#8_k$PbK~Mkd԰j5FE#ڗ׼TIB$פ8rHrMJ {JC5ka 䚃Ĩ$׼fKŜkRr͓ , ]5k/Prq9I$פr讕9\o5- ͵II*̖L\5a(&&<C݇ kvDBׄ3$dlHIzMXM^zQ=(BYy5/lE'O&k_~Mbk& &35Jbï0Hׄ5.Wt6/z-%<MRɱ$ټh mlNò^dDKstB=,؄MNY6iL͉.Z6"-MԩoMoQ@ylc6I&,CJM4eRMܲeePI]RVpnh Ǧ=g&@96iAˊPIA'fŦ7bsP)&d{](6QMM²d}l|aٜj fJRMXd d1Y6Ml}-4#gQ WKx6 gNgRlbB< ()y6^Mj³yB%ElIMi5%ڔVM!ڴ7J+fESMy?e͂=dڤ]0L:iSO/6is2m"*6i &V-Y6;>Pm\jb6v?@.6aRIMx3´$Cȴ0mr &cɴYhi{ɴdM eڬt˴Y~&.0mbݗLkij\6L`]&дyNEi<@iƘ>ɾM7'&AnA-tnzs6 &2m/B3t($&(66;'>mv6SK٩L&fIm6m6ln!l 1m㯗:APYѾt~6kBNMԍ(\'f%M+SQyZfJ)mdfRI&dBFa$lmi f͂ }6 GmRA?eM&Iɓwarm;6Qc'It6'*I elUmnѨmӚMʶyPmEf\>`)lCF~6q#& D!lX'lAvҽ&&.mV\m28dRFf0l 6!ۤ)dVmJw d 4 fX2)۔%$ɵ*\P'kRX1⫤+Έ)<ubهtN>B z'񁬀8yԥbۃsrlj]\F͛&*Ϛnτ#y(ap@+b>4Ul!կN>v.#^Ξyer kÿ*}/pFkȷE80q['w[ś p;,|ECq#6fgĕ;][U ms|۵mޙKe7VϸDJ$h^g Zcq0pBSb=1aUQr1M-F'?0R1S:-ޭmtABƙ`f6Rah9K65ǿ&Nuμ *f̆0UpGϼ<_fYm:0Yvc`$TJ;69הisb#LS^ID9QͥH6mjJ-Bi=VZq'+Z\aUkcfhQx`: ǣ2>mZis\ƞM.uO@>iҒ:(BtY/huX*)J@E\ F!E&d]L9ɤlAjC M۳jåεTJ9*b `D\_ѵ9;Ztmɜ6Võ.е̓ks VXB+#RJ+d@0 #UϡUTau0 )S*JQ5d* tEMBdM/UZ̚(^%Phn"n:oeFi|?bIQEiZn*_7U0Sܲ4U\˴9Xis\TdRɠ 6%ޕis"2L,p6g$P͉>0mZhsqM:CIvG ځbܭ.KA%S1fMᾟ6t[P9h3Ё:]gRap:ͮ҆؅̮;lY<69&W'=^XA^aF^ F6%Eew16;AȅdO;!ٴ ulXòڱ, aٜhX d<,lj_UMʲYY6+˦y߭`kQƺv}i'א]C$ ZtI98I,DJt ׁGBLW'AJZdJHR|E'cTXlTr:AB?<tI a ~tl25̰}Q.JǦcs@*X4Gұ9OHtlF%\hǦrl. vTȒ a*̻ds1&Pt UxI]nul_;Vفh2;~Dy5Njh3Goj SW܅蜻8PwE:U]zN>ۯdRG`\] YhY.CFHZ )4V#œ IIcSqʁPllbsTvLR9>)6mTlNv5H9+4l) 2lxU l.M )ZiKFe-5h=( QkQ"_i"|JAF|<:O* Ս| =͖۞/$jFka +6 'n6vQwg7*52i _Ӕ_~5~q@JTz鈦r5o®93vIMsQtI梠LM6jJPVR`%d85!(esK{($8*҂C}@[oNR(\I`?BÅ-5B&Dx!䎰ſK*h:,tY,z?;|cs\csP%KMVcVxpl 962\"m=oA/&Jҟ* E7ITNQBr Y+\BaoWRn}/TTq>Q@(LCKdXho 2B[ -헲lJ&(P9.*|Z6'aٜlAжlBU5~Uʱ*RRqIITxJ[t` j@ُ!e NʤP:)gD.&+5YuOT:]iT)bya4_.hl^ðaVu~d6;\4lv$Has Y8 RIqP͉l sR&Ѫl.$\T9V8Ǩ%+h uY@zW#!P;)a͖BG͖.s͊~ܮF'of6C RC[xBH B7]XNEh z;I-fZ6;(lٴB?05椲X͉l@fs!S.4g!%,'}6,xPHME.,Qx2^2FΛgӐ)u ?d#CiY !nf<+T G, 4񋇺:쇅Ӻ}ئ5so.܉CvO&zvc}7=+/ΎL0$Jf`8:z@=N&s9P"%9ObD8pڭd"VSl4uGV|}J_1p«B8K%7M`~, $8,ƃ<*gG'MV^oJ|yotd6+Ӂo^C؉o^a7 Y&sݬ=:Xln6 ld7}Mfevkl vs즱^Ojn 9_ͱȬݜ%m'Y޴jA*)]AJJ_܊ŜEћ97 6n,.^9pmSo*Xy,G&7䦟(r MAnM&҄n$9yʄnL&xJj@7 tsPMHnVp}n tCTyB7ە Pd&M $t'M'9(t\$tSB7QhM&lAnN|\Ant$]&TM8M9c找@7/&y@7!I3._kjfb799z.MHԃnbq͓!7&42!͓HM:n~ZB7؞n*E\&n2l tA3 Den_)ML>ܤH\f7̓1Q&M%̓MMf'`)rs*?$Mϴ rRZzNdYHq&@M%3 恢 Dz{b7A&v 0d7Iev& o.bEo:cItөnOבM?2F7Mgk2<nx L3M\y6b&#m2n=7nCa3dԸMDh6ᴹAȫ9%h dO6 h`:JTЦߘMOf9&fv`1b lyomž6'dT`%i[ ۬j )XY?W&%&y %Qz6!(J&ݠ6$l֗O@62%dhlNBB6D6M!O T"6II+M_Al dW 줐͉u'6Q7K& D#Q&ƬwQJ|$y: fcͥtB'EmvҌ6?Em ' M6QKM&Dm23E@TE@Tf'!Jjs!JT&6Wɬ6/`gmB*/M1ف +0V&LbdX̓|P%y29&Фm&ۼM$4$jq6kZf%Jjs`PL&6B j,Q j6ARf%m)ji6(L/M \}Em hsdJt9H[ >I6ZMj?Ql6O2Am j ͋ nPE:eV#jD6dv(H ^fg4e 0&ds1͊?x|O߼|rMj2A{/_| x2c6tu#S[ ;_߿3=FPO87lk>W|g?Z߾}Owoq=߽xe=S[e>ϯzܿx~+ZWϿޏpWo2g}]ǔηBlu<2mۓS2N /_Gm&y=s|~W:{>H;/Nz+|s Y_~u_L2~\v<;q%ǽco>zApEsnTۧ_ ;p>v_diٗ]1v x7_{|h<%ڪ<4jmk~F||'v6=N+ǔrϟe{=I?I?N?ݷ?{K'k}XE||O>ٲc:>x}?Qm?.?Q~bm x]Sz<ׯ~_cï&~~eꍧ>?Y^7 E6 =m_coa?oe?gן߽؟qYr6%X%'c_ҹ>*}YwI?/ w !l3?NWy nFI߾Õ.A]?Sy<7qNq,ytߤ>om.x_^R//zť0oGGz}O=]Nҟ?K"4Ҧ >dGiއMP4?=^c4nb}s_m/7ܑ]{6'}}~/^G>~ז~g_ޱgz?'',=csǿLA{>M᫸_7:\t/I,n }k"ϛ$_s{7?Zendstream endobj 344 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2083 >> stream xUU{PSW!䞣RTҬ8:VW]:8Z룥UEDV; BQA(:h} ҭVk۵cwiqOLf;;~O„1d̆UIkޏ}/=Дđ-2BDx0jx&0g9+ܻ!{{_0Әϙutf=3$3ϘXf D1r&0qJ$a YlDh+‰JLc" >Xdg ^%ioW(Rkqzޓ=CPZS[[k59_yFl.?yt@bSMK٥wTB1r eh|"[OT-!U 2|Oe" E(wUm2҃mtFٹiלOR$swV"!@؉je`e,V^Jq3 ?08zWCt{*Vu6{-OSіm[3qӔ@O2OC7G_g"Yt{rL\q6[-_埃GD&."fAizqv:v5q W~S!C #U2d{~$^!?lE:tk E :+ۘ(g L'I&frJ%Ő`H3#s*egkClah|ЌV:,?v_r>M\̇ n* h$orY1ʔdOJ MB4oO'N@e2(E"s{bo_bfRr9']U錻0U)W甽.vQ?;Yqi,u5V#ojC_Q4V rQL`VwĂYg*NlF:^h1V6ݎ# *}I*~LFЈ%TFSPD:ށݱجvcXf*p3ֳJkP9=-^PϿ=mL4=pTM;˓{CPG! _'fD~Fr*PaUM~N~؟ɟL)fb;񈤯8q o_>í%jڞNjt<Ѐk_ ;nN4d p~ZmYvp>`z"\zv堒oyM^%gl!uȸjKr=ְaknw:H!/#BqyY-ҍםh,[Aao/YxG?fo MnkF+mz8ꆛ$^|ҦOJ%jPHW+ GӨ4*OrZ6=:it:A"Fw؆-xM_G!){oǝI{`d~Rd0][ٱ/C1L6 rA3> stream xUypd0GVtt6S:i!6v)&Mcb9ji{i^_ Pc Һ8\hr4@-#:Gf"i4#}}{'ArDqui%K~>!BC ?DV!':1{m_}G=lG6 A6"HR#EH1+d5RE!و!ij $Nfd_Er ԁeayʼIfdKñtEZԺX6232; ܜxvc@AetfZ3ScX9 UOѤ 2,A×}pȶ R0cSg ׅ\ ʔ U7h0u:Z3/\i\Ⱥ(d$nPD0O`deo.W/XTlѲG-7 id\% Ӄ0?9vdžـWl8p8"ƿ| Nvj:bpe`zx?=ȩ?jKP*p:p7BfM*YT4YQ'u c+PWi4h9A2ayw̕(+ w_/rxێ"L< &8ſYE`=C),;4Gcw~׾ Uj݅pdltlF=\$B]s71ն"{*9ʅּ4)N|l;Hitk6fb*nt%\l.KGL3g`ak)¡sw-PIVX5`[4U{|$l+h̙ Z:%'nikPZm]Wғ#lYH|`2aVSK Zɟ+k_|X@;AGjj}h4 4U*I @{o ߭j.QE5H,;eK1诋5e;FO]K~~~?*N%%PdvLo0j:eAUk12sf3}U`$x8& y 4/yZtnVwMMIn[Q`AeKņ}簠X*.ޱ\Fk<kDQ1Jb5֬w8B 9K`NnMh\US ' ->^m^/疻6u z^`cW0?-973C{ L'|0Nv`tCMmXӒ+Q5 b$'|9JHv&kBlVЊ+*w# 9WN/rCM%S6Be! ɵ9\iSizO-S El8d- " :l!ގOD.=xDBf+_h0[@FRendstream endobj 346 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 335 >> stream xcd`ab`dd v 500q$~2E0SIC('3##{I" |J04ow9ˮ~]Qjr_֝ݛ='q<9+>#1 ^ kݗ?C˿Oq{ q=:fe_=VO{wKOKw3GbNW\+pM}_S{֔m~uGfEf(ȓ+?Q=?o\U]j W4{nnn! ?endstream endobj 347 0 obj << /Filter /FlateDecode /Length 30387 >> stream x[.Gv~`1ĭʬLc ؆XM`$?5dd?+"VG^yYovO7o7_}}}Oԏ^yG?8>>_:rQQ1޿c6޿_U<>[?(Ww5џ||g)OqqG^lϱ_/:w_4_yx]c||OJeSߟ}~>h۟1.q>[jO*6>|<%}Ǥa?G)A6lg^>ǵ], Azgl}>ʨug?{>1oi^_s>{oݷc}[W'>-1y9LHQ>؏e?>.Qu?Q~,Q<Quc(Y^c\QG:9ך9Oܜ7sI%V Y/Y˘sxo+.OO{u;-W3_y|/lW9߾|97?c=|2ȏs¤?9)vo?}%__~~o?>qe_Mioă\w XRsݩWϱQj{sYyr<O'}krahgu<㡥ier4Zck0k=vst>Z?Qz>a9 >:oϕhi'<0垿4<1a^ŋc>C1nap`q eyNAj:|.}QoǸTyhYqėe~מeܴLsx_5,6nXnZ*-癷CO3bsqz8/_:x8_q̣;99>YX1Xť{8/Zw9l砥|91doOiA猺91Rӂ=>ws6\kce09ftLsq9 0:t.so6ogp^'f ˥s!Y4<ϫOc 91$/|g}bHR1}{:\oǐÖjCK^jNh z i1$:oCb̉C;w0-Z"9bH}vZexvbDrZzh0gt5o4팇Ơ-sXp^WNYL1 KY%\],=yeNsSoRM]s:c@^s|90 9$ZF}aś)G=r5; ,^'.yYca@^eg k!25 s91 :MKyՊca#ke,\2b@7׏c$9_>U#r̻cFc朮.>'bDG#|ŷ18\QQto =ivR4{=c^4Zn +8yzgk?VkKW,>Xi|)ıOKjxc}xGa tİq꘧-=yi樉ay^e>.f44|]QNCK7|;#޴z]z_s{iz m/aNKK|0rhkX[>J-Ӂp)y{[< ŷmcZZ<>AMKՖ=lN ms o |vighG<9==SʵOKZ.MWI$/"G]ƴvjL i8- EܞixlϨǕ4-!/lZ+yjNL_na{rkOQ~S-+sZN;Q)7sN醁RpXc-/%ϛ'1ǥ>ۓ+N?TηXaZ9h8^?#3(*W%>8{=!tLˣ]JQ!T0+&BC9Š֦gR@cjuck_"[2mnZv[leOh7vͦypu}ۅuga`0P@v|>-C1}D Ҹ90-.s -KlrqLg)8ϣCQ^Gq`ݱ~>@\ێq\Z{ - 1/ {8 w;n}FLt{b0p$دV/Z+Y =͑ , nR$3(HÍۑ #~9zu$ˊ{qǑ ,c14Z()seRa A:Beߧ<~\}Ęk 'Mc{L|653N"5cCa Z$o,ˌt1&0 Ƙ|U_pz-n:zӿ˜|{x il:Nˈ1s=s^cL>_]Gg.{l-z0@%3Z ɧz_|U#j0& AK1W!ץ 3'urz`Q?sR` ۛ+ψeZ.? r QcO0d0&[\X1&ۼW`C)>c I|g>&dߎi7C~^6>-^v@c# ~tcrY-ipz]'b(|uT"\vptT7^z i9LH+4 ǜҷJugŀD%iJaquxq]*L/Ei=j2QeGŅ+~ǁ-+t2ؕ?}̜-jb`5$+lLKĖrpLYwR9.+Bi\<--*D9*13cńiXN@%YBiiCE;k9P…pWžų<1RՖW"ަng;qgy Gͷ7GM' e{= Zy |p17tmd/m.p0է?w+!4DRn N1NBu#qZဝs[ktk}~Q̚ ? :rb j|nwTʣf\Rl\?h4_>kaiȲDL=SZPiEDmV+aۂ.-.Њ9~]-vg$- !Pm 5o%ЯL ܑ"iER[w̍mYCXm~Ҵj;:7j^[qdppnQێސeFH#Wt 4brByD#X|&Kh.?HiљcՐ*ˡ5-*i #E^HsCSDc$݆,'}w<#$iˁ 9KG8,C:R|:asޏ_v=,Aq;~Cp(JS$/C4F SDҐe׆tM G acb*XG דWAfo\]b*7# SاրUk.ݺ֗uFtR_#>→[Ts4+}=+w {䃻xe) ղ҇:^w˩j*}~9Y+}:Jp/j/ 5bB߼‡XCsjm*]Ҥ }> }ȬI"ҨW ^2^'su57a0`Cߍ5Gy:Dq)v 8Iٲ1L>1ٹ'@K ϣ[*˾mx_^O*ܯN<#n՘Hw..$渜sgs8:2¡|¦EK#1wK#@fbBFpT{8:2^bѫpJ%ďخsp`| *C( pE< 5ۥ|Qz [m(ҢpJ 9H2SK㚰{1 N\11O2 a@1:E߶(Exnsy -ǠuX~ OQaxp%sxFKx;𘃙o6jY,pc̲ K=8f r2xe2J4(ќ1" ;pHd_bWõJo& R08 k+N >^u4ȣ(QM 1).WfFaZmDu0=y㱷TA@nw1fHKݧ?Sx9:OK s3)9,m2D\YJp٢`=UnЫ`gq9=.$X0Acdr([^ktxH=WM;l"t"wPh)'cJ8͑ <3J7( u*y^.^$boqɘZ¬mϻ;|[Q*ĵwtd\2duZDKaR)_Ȯ37\r%v8Dm3T&0;dɴ_猾#YA>lt9k%zBǴP' d^\$J}bAP6}1Cp#**F9y^Xwm3A^\#8-] .5r'#/ϋ.gdB^\\W6{o45:"O#'zFhc!_[^&8sgDR|"˅:7f֛02 \8gλ=J`l|+I8J&'N8N$ yޖ#? s;rT7t]{qlxJ.ݎFwܻ={\YH>(4h|pFVqaԕq! v3Ptֵᑫb>2SLN:[(|'D7\2ˀo*dc>$T (S̷LdRD7J1_oM.b}Pǰ/oZ!Pa;h{c;o=]3/} 08ٴ1En9-Q$VJv[لH6Xn?fG]C2y 8Z/8EDމ9/N"wj &2}$"Ez\b4H"1v^}U?m4- !R| QOfy {&#;ERAe=D>ؿEin{hU4eR|tFj,^F݌-@-̓JejvHݪ:z"LXz~9-B~s잤۱Q:MHd6N`lįy9Fs v|r 9A6Q>`tvÖX5qqʅ5jрʼ`4Ql[dǚ[,ahi=8ƃPSLd`:/dd{Sdl5_1tcN7abR`U Xͧ%ܞhύtM=H4WgX4C}գY6%{T= "hm[r_|Hd7(N>U}=|~sy#r?ԪgvkJX䩧x#`s탴g:fh oG߾k{O?SE>:6Z|m6lBoCa96[Ui8+ڴ5sZ66Zpߌm6-}6ALOmύAHT/GcQF:k3㪵d1"ף-P،czk`aib8= _e+8mIm`P{ewFE-3t*Kwduia)A.f(;khH?nҐssgKiW|q\kIv/]/^m'mgqu.ސ+~6v{igt DȔh9#GETJvFÔGJ;/i 'Z+F-}5nUfQ->{|''0s._2)`@?#jg7,cYNc 9aa+tijmӱtSDG';( ,*~che _ |'Y_&>{8O'Tv} {RMq6h]p:/*iF%9@8 ZQ }fLIJH{a](չg? Jp)yᰏ[.h2K;D޷ @ 2|2;@y~z76{$a+@? >8l~e$=A sE@eS mFsj °ʑڊa١ GC >1CAg=W(XZ`+ "AAW$ jܡ`=2 xd(:P(iłEnñ`ڳb9̇`,xpłM+l8|S#ۣ.4ߊ{3Z*$H,=F z@3oV'pؠE ׯhp &r f cJeOE] (hVdEc jzUfqĤ纻 * {-Xisb: -R&won&{J*劝FO+v`n⢬a< :K1jJoT=Mt&2f=0тPzlǤ%8*zjt*+00׹*vWp h=޿7s?#\u\h+m[^0--FWuiuZ.oƳ V\=R 2=zZ$9]DT2 ]x=Jdj쏍ovDh~0j󕃱58š}Ǡ b4 R^ğWCy8=fOU83<`{%Xěɯ=ܩf7ڛ1rkMb(f;bnp9T:o_2 rQϿiy):z_a[ Mze_$|}b"=b߾qm4)"VTn12 U\s4hyx]T'&saa5D):-H৊n" )Q1OqQXL@"t9yOsf M9P~DF2s wkcd}Ł[o`|,sD ۘVg AS1ÚU %Tioksihᝍmh_|ssf/T;!iϕej2y>"ey[DE2_k| m{u:|9>ds"t W Z"_Wm:3/E>doK{{y)mO*L$ WM2u f=#i]Ebz%id4*%i݂זpIJ%z˗Fٖ4rd4Br4B _ܰՑ~:R([R(E4Bjj;4B)-hS8)hԫr)hVb݋Ԑk>yp>Z(7SwiQd6=J4B!߯2ӒFlix ژcLE~xYFMШ?4ꇼ4BdžQx%h8%hYQf&S#+=#dk,3B1⯨goᏤg9I;IyR[U5i Ia)I*=#09azFcKHzFzFDXRXŗQBS}I(K4œ%h<>i,h4zw<4Šr@=,|Q>RA%[匐 2rFOe@3B?3B(N|">PvH=$Ɛs6K("иe_u-匐PΨaR%;ƅq 匐 @EE匐8eҢ"KT3j)T`5#A&88$5#pp;GbF$Ō"/BV DEr%F>EE%a}73ę:;i i ȯA I%$1X̓ՑCBjk)X؆ S A% ë CXafX#CNUXw&FD`+>U55DxuX#*eT[/XGfެJ$vћU/IoV-$<]~"8+M$8+$8Pw$8+IpV1_/8ڮ G,Mh]2AGFʒI3,gɁ giv539MpvU= Ns'YMpvt19p_ gi/3&"N-$gL-#Kx9ri1C0Ō$QK1#GrKz9)ČӫŌdI(I3Vb 2e,Tƶ=E[(ΐ^oRoW3PKĕf4RajFyff4wvbm%Ռ6,h5T og4zFDg¥go+ɱSh4قFFRȊR)f4]0aJTkV3xa9#qr%gj9#L* z~Jc9#h)3Z엖3Zk0$ƳQ& S(.a찜VI3º?O-WZgϡEzF'׋]ϨܖеQQ[ ,-Az1ڹ'NA#[n>s ь}t74BV4 M(h,y!%^EQ43QjQu=9sOKreFDJȭ/rFJO+9UH9#!$d9#4-gtjFN5ffYZft䌢D䌰W(gxrmjFt$kH$Ռ(Ռ\2\ 8V3B 75#x#n9W#u'ǯsPCVQyɦ"^.􌲛=~+Xw%#lcALAWa$o=jbqڵ+fAj{ vґѢx JFzM Eח(pŀ1hp D99s.ܴ"F͹1jX"FM$K,K7*FgaQN%e#0]į1&DŽEtERF`-g M #X~z0 N ;ءFȞK=F3Sw3[0XKK(I?R籀],S B*cR0 < b`eV: F6%"Dl2M#$Y`6b F٩`4`]Qͬm#뗂ѣn`dϥ`Լs`t7 eH=Kl0Q FIFkW#u=1i }5f:iW3yH_ݎn%W)a4Ѱ:bJO nn+=ݷ'GJKȬK%YͳK薰R0ȘYYbD_}j!2/Wc !DԊ3#j4v1D PSh r[hT_2FN&Yl? DtNǒ ֳ?BD&3 t8MLj )Bu:;ΠlP_#J\gIpXNK& vv6v s @}DtLlgȪ<[d;,! 6C~a;_ٖ-uFa3} -$;Cx!;wن;CEmO!ҽ[ȨXYE5((gr c12^6u2[:F_O#m mc%7q1C2FNq1JA"21:M:Kȩ%ct[1e!K ,ct)c-+yA1:wͩct.MZn1B/:F, vct&2F0pZswO7mm鶡1E>dvX1C[z01AéayQE郆C> N*)*xX`"F##@.bdR1bR]b5]*FT1bty5s\Jے1:לcj Y,|RY竏]竖:}F:-~U軭=Yk׊`F\ܞURWAWq)+}8w6-j],pU*+}*Y.&dOI,!}%޴=)S3*Be/1#3$/1#cBu 0RC(^cDe=f@<^2z{G+5D?ag!Ɋއb%ߥѨnQ=c1!7-]hetČ.3zsKUlg1#slbEe: FG)@uMJJ)hFO2V4S׊Fnt_ɓ:Lng븺eV>qy_BtvQ{L-m; =̲l_8cw\f"e8_kuj /3ibM#[(US{b-Af-4j)kANP4p4J4r34:*YШZÂF;QU.nIjZhKTQ5eBJ%jJT[w٥itɍZF2xK>4[zے4:U_FۑYav4:F}-%:s4C@4BF=,hFmbiZ9nRШl 5kX~]LIoE#ܗQDO*դQm)$+aSYKR4r?R4:ӊF0K'F(hc"+hbb6hKѨ+R_F9SQqq)O匬jFlČnQ[̨iI~S3SvS3>FjFek=UĜѸMd5nT3j^jFGՌ⧚QԌn_}YjFUn݌;HvkO$*35§" ٭[`v&dNm%g&#G%حaj#[C kحQ7й҂G\m C^Gh @>2'0FִPpe^kb#^kT([2׺@䵮k]o ?#ce7@d>2A 6tf:ٮ  pyTg0c{ETg\gۉEv$;;";<&;/O1`!+ۀ v7CO;;[3#,fϴ<"ّP;;\L'&Yx46[4mQtgR:+yi#b4 DS `hԦ\HqK );0JI}K8%p`YEӝe#gҝ3y;[;C_߶hW5iٔ3F3^ٔ3B ùmב+Ӷ)=#,gĔ3Zt3:Y^c@"cgFH,i<؋G0IPRh16Z(raQfS(3)i4TYJeӷ%2oFȝIHF%J)I$i4:=K›.Tr(U+Isw#gQ6n]#|5:́FYJ|5B9Cj6¡L(l2FFKa#\WF9R$n9 %5Z/>t'UZ_bk}`a*ooj}M)FVo8K}mYY.Wτ7,H1ё+nJe#.V6:+R6:F,ld}%ltÑFX(޶tf>SרF&q^FPԩktiW bP (K ;@߶pֈ˕+3k68{@틧Q*!*SXMD@g[%V6:]vBV68np)5ܭ]Q6L,}%(\OejFmX$A?<ʣ.fWW)MwuY,Ha6^*RhVyQ[v]ߨ\ ) @5,}f 7j7JE77-%%Sߨ"Qnob7:RF@1`6)f3umȑ20 Ky*i\K(_R6MlU3aXvәoTLiFװ. uFGGsi#cE ӝNbfo$eL' GSR8jѬsKȺptKd)) 9GK KʡO}"n7*ФQ4ߒ7B7cy$ܖ7z2Cly#[ -oT-o7B{>_KF*c}wI}e` @)ɠFKwFZ$V }%c}tw8RRhH_.睴Hht2Xh<6OyH岓FCKhT+DYh_1Hm!die=闶md6MmTrOm#̯'AE-JkX05!J55ZPҺeQZ'@RZPP(eWq#IʔXm3-JT7:T\x#okZnqϺϺ%mB>T,K>ktb|֠LԥEhDhݪi3ZڋH"Ju>C F۵+0Е_kiloIC\>+ւH3gE!n2m|a>C>4dYqGN2q ̇c! >+Ogyq $$5Yqn,ϐәϮQ}>s$gh}Qe#6fL}Nf> ~C_+EEN|mka/} ޲yπ1=^B"Zwbe>wJhG%R&ܳyt_H&+9EŜgaF6qQU7R6JAT6ZR(R(IRrWA*]Ne#-eLZQ>QFnuܔLu\F–H5KbG6r`F,FM\FCk٦m-F?JiTLi#.i#vi#^iS6^F)mT^H5)mԭFKFgKC2upxkd6ѺFKʺFx75 l]#t~r>t`r߸2ZTl ޗ$}9ޗUK 6ʚGJ4ja#ld"l- 6:Z("S(e%UP?:Z2KoU \[zf*%L>,9*y؇R9xI,j!Ē}ȢTݮ{@$_j}gjowƼlRu!XUQqMJW$(^FӹYzIjgٜF@Qn6)mԛו*S貉jS62 O6e )Vke,az_>a*0ppg[@$( L %=$7w䆆\"}Ga`P< ]-0W[z {J; į$ڪ0g~U3 Wfg0[8@Xݓ Kٽ< q{aQ0p8 =?;7!gc0g0A+ ŏ=K㒸e*ă2Q w!ݢK27K 3u h3w S ,:Q` /i#tG6zLF槶K}&K(OFiFsKY(!ZWFZ )mԔ3]FHiRFO,md%mdn%mt ӱn(Kڨ 0 hQrQR6IY"%kTd.ϧ%l5rJ\Fg~e5B"Y#84tKtg爰|v=u sIu6zFb\F)SBjm6BYF)dFYHFIKHFsY`7K!kKhKqR6C)&+!1me#4ల2-ld 'œT!62P=/K+ Ii(n+AeifgJMƟH(7*X%vnϡ OɥDP ύ!KQ':>u)Eg|] `EP->tC;MEӢ-͡buYZ+~#BgxP3=AC;1-%B/ϰJPza*5Ć:qK]2k40'Q 1"MFӸ5Ȓt` W]a)Ќ r;L! B3F?Zl$k,5BDŽ4$kh$ϲFX7%$Y#,.QjQ5Yb5cYzr)]# k$'u*EdƢF8jWVR#ƪF6bTms`xQiw>Y}FVFVyV5*6HkgQq Uʕ[TxF'YXIY#k;ońkdm \!1NA4!1\q YCRLՊktab ŞjW ABgQQZ@FWTZ誒KaK%ltJa6:-da#Y:)lT,DakǜF}T6:5ѣ'XFBV66zgK\f},F͵Д6jsK0,mt?\1Kȸ%mt[x2o'RڨV͇6lUN6Xبdp鞻‡3v%auA嚔FYFIkFNoFLq# ‡=k78Tc-nd>%nt8FZ U{Q𧸑i7q"_~%nd%nT%ԍYXF)Fe-nT#CIT]cPK b's7'hDm:yWHGx$bj1E^z*ەاd *5K* TcĶb$)z F! CMd&v=:%$aj9JXt  +ѸԀJGHo`OQ2YpU%Ѕ)] egXh>`⏅`E BG8M :tV:pmShr>R:J:T: F̪9J9~SKhxQRGQe\:R葼9z4RBGnP]BGN-#Rq_ !9g#(hBG!%H:u:* n#+t0,n~%Ǹtuad2G]2G2G@Q2GGU0D.D2qK=Kh|mux/#ZQq=ѣ%r4U^R娩T:QSڒ9rt>U"LA |UʑKHʹ)rTDci-Ibg#(Tk-#Cr*GT9^Fj=^RdʑiSqR2Gȇ2Gg# 2G#vs֥s4f:G:Go 9IEmM!mnI %h ⫋:x-\/u)\3*kEqx]f^fOZp=p\JktY0))lQ\SLjig#L-!h#ZE(4ס7Bs6[F34he!-ia5wB8s$4͸ŲF乆p(\# nkXD5M `J3y4}Z|O"Jzu0$PȧMPuu$UdAMuqʙH1ǥ?]G5)4`eZ+S#q.2 3%<5іe;p{Atm1 f,Rv4}q%Ή w2Eq>5D1w84t'/:7_Tf=r~tsr~ ;fp\фzdpe=o/\M8,.QLmy0c"GTu@r2p9 ݎh {uss~QȆЉ䔤;kX8:?.+Xu~,[Cuya/:&GrF$˦IkI:?Lyӆ%HQsg00p3H6]sGQ wQR©hۏD9[rbA2ㆹq>I9ISίWcL9o،0:P󰈞]#M9>(ah;= uQv}Xe[)aᖝgA9.x% sr$ 0? zJ-A`j&?,O'ĀL&$h/<&%-/f ^&J~K>|4Owh%=JST -S6"[1z 4|6:kc'y;LFN$keܒXCls1y7?;/g*${ %|Q&]<vO%>5,~bzK ,)|Fz,CIq8͕</L>CǢ 9SV- "C; $m1, Iԩm6.$KQ,B',xYP[P{67)`4,1H|BD2R /Cas},Owx]Эh~6ndRiE"Ebj^D/Vj]D/cPĘYqM%@@]P)t#u;;D/hMoH¢H\DnQ襋!E,/(,/M('X^22FcW}+iQ z^SXZln5چBJĄz 7q–ENY1ځ4P[$}F-n`h%Tb̲pwL߂~rs~ZzbOHͱgޓ,ݼP.:-|4Ij-E`^E! ;j:~MZL[7d3lN+uK{%>PVO*߼?Cf|cqhb]BFU|Eb].'o%u)%bu ;Xya]FH @,%l`&]Z&]$kr.}DdS.aK5RIriɖ62]KˤKhH2ǒZY#ͺkǢG?YЯB7;Iz2t <,$]Bs A.-{.t M I,&]_@ҥ.Kr.\FAK39=Rw79uKKKxCr. Wt ^Kɳ1ׯI/ "]!YIVjɤKH_{?S'Ra0C]Bf8. s&ֲz nFලpa>mS+:P3/̓:$#>D}T8]7eD]M>:( ?†LGp $J7Ol)`?Rt4ȼtE9p43GQKkt[&b- Gt#uLWbbRdȐq^ @Zb q%y[XHDQ'|lL~:-G|xÄeGGC勅>dEL ㏬\ H*MUI![8:5)%Wz e*:HN!')_HX  ;!X ;p⏒9-G-AQOhG dL(hz}e):G# $3k!=3n ( {³{OQ4%Z "tG+6+p}d_G+6;PCB0@ GhRC8GQ` pB~)#l3 6A}pF<`K(xC%L55![-$!EPݛ!Hl86?\~tN tl%e> פ}DF]\U=6D#YУ #{=:#; {{ti3WtCw.΄%Ă /sB`EBȢ }T#u-QMѼfcvg=F ?r_ڂ^8~ ~TG{}qÉ?*OZ?*F<&gcx\4#%8-h6g/l m66rl ,l7r6FMxAV((r eEߠGJDQ Jy.(E $P Q' 4M֨? [{'?(.R !pA;,cABd@z_#:,C@rHPH$jy-CZ5" CBPA[o T+)ÇD e`mm"y$ן)ÇD 9~HR¼T"ݙD e [@4tum A!!H>CBB AJNb aa=, eЅ1H)_ C2zHQhRF B:CDԭ8 $TT 2 )i ԭ\n'C%ԻxL<v ] d4IQwze @?@t,RҎ')}( b @)@UʳcH$OIR!' `@¨|wd N !` q_a}A_,J*L.Gם]t|t>BA=>vGY[ |TS>\b}>2!mࣳ[W#<&ȱك^ࣅ;R\D"G}fSGk#i$+rč>Z")F% &G]1LG# |\bHcM5,$Ys"Gsr dQH>t,C/>/ >Jnh/>^|TF‘>*"v_bZD$).4|tg/GF$R]ia/)}>r%G >K|tTZ>Z^GgGsK>Gs_2ty"0(.۔@ZH!I`Bo@ gUp" FD EnB -WhjDLVSӂ HWB 6 T @:$teQ2֮H=aF D/N!zvDHBÏ~ $Qr>"2v GJQs >Jޘ>Rj̒GE }$ ^c(6?-C-ڗP3$$a! uaV}~an6DPlʂ:4G uhz)~1&`/ <XGxvUJڢ֡7KW2aoXbOp;cb\YX%8N<BcW`Z I]A v.8ދaGvyÎ K]Ž;:RðD&({::.I vb#gŽPmeE_lWł!Ʌ!尧@ r%>QiQG.TtTfɩNJaIEUTtEnf| 9蚊Ś9A_@xk{2Zt|M'#<.ؕ)\I5 S_ vl31)W/ ;.]aU|LŽ^c 'hX+#!GrOND<.L3Q)ל s%d.5a0nL6榶 ,c-ԨqUl5nsǧV:qtjXNl#c*q JѓFY/Gg*!G?^BDs6%Q.9Lȑi(]VIȑ2#$Ly!C.K%_篐d旸`v}(׳7?/Q/9—k/ zq}R8O2#Cw7?~_]~Ӊmco~YWGΗTC7gx270;=?Gj^?+\{CoCx?|÷<<|?1sEE|9q;x?m/$/^όomcB/짟u6u_zig4s檌הQxC\糣{:|?ۯu?dQ 0௰xܖ_<9F;f?O|+11M~^酽',qs3ǀם[\? ?#Ji_k:;Ϩu AV5K/h}s?+}s_gn>\^N?'TsEjcuo@mnExL/iys_s6ǜg ۿ'sxG߿~]b8+ܳ^sy?oۿi~οZDG~e{YW˼?c.6.}?on/ fߏۿ;s۫:s5MAί@>Q"l'="ADH\ĭ,li!uJP@Gxg{7e|+H/T.|~6bNҞ.hgIO'K9"w$fi^UY&R~1\)6kQcŇTBo!O=Z>wN bDp܏f\"}|֏ OP#3!e le.h*pdo0 !Il \yƂ{hG`WG"U{P  A-?OЬMq?ӷzmd𫵺Q,GFq]6l\`n#ְ*Z7(uN'i0m=9AT1y$ʘo D[RsjGHn_;8фa 3i6FR}'3%hY,]3GõN_0v9{w G#5@<ǃz"|"ԁ V?8Ǚ| T̒14-K"on QB?p'\RP]CНѾ%C$з {c5}fnw~u$nUC%@G4.cٿ7B0_ER%wj.K+":P̀אV!H"̪2m!+(:eb:$QfZ.ABQ> stream x&IrxOQSʌs\J Yg@f(pW073ˣGr~_~s徿˗_~s۪ghm?_7e~׷6w~M-:?~+\_/p._?_^X۷koz_׿׿F=|-Ͽӿַd_}mϿ_:GVsw,mgHO|l?b߮?V~{,/]M)>ϡ/+kD?:_8o e \#}b(:&<:\s#ݿ}GGDg|;2sp>Rv> X~Mx}>sۜ_*#U~wy9$Ybδ_~sP._uկCn_Zi_~kI; _w?byKwYfVfS+Y3_;ؾv{9 < :Cf̽`z1k}{1f3M U:1$6Ӊ—3 ,z,ub׷|"LAY=qx8VQ'Os",gxٴ3BXFƑV9qc19?:f1^<VT^Ei4ll3r̢_XEg1sF o.u][9Ĉʑʇ8z\a1>8R Gt#\.ŏ]ZYбzp汉m[t۱qp W wdrcr۩BE+84y^* l:VS;aȅj sa7dܫ/vslnx>ktVɵϺpۛkvsO_12QrVFL8iIpq3mDqŸyuhg䒋砳r)>:#vsM,VH{W>Eߎg>#Ck~F*V7x.M>ÙS<#͇M4Pc78h+cHc˜c㝁G=#U; 2vj/C:#͟A6xKe -}a)6;Η?'XItFLSsE!k6xZ=8ψfY7ge8#C7T(ZaŒkVPDWJjvF.xB32}X7@󉹴[;߳,/C\PeT/\ȥB 1@g= vܯLE ڽHϠO:w՟}mVɋm@; iHS ^/Lm2r3HAW䌜c_ K3ΈNg>y֧+w1bnvy!5;{o"We_ݾ^?'r׫%^Rr+]}_ƌd$VHmHachb#膱ȈC|nx\s&FIᗎa$vw>kLEmw`ϱ\,a  "1mDq&::*F>#ZrbRxc+zޑnH|w1t Cm1RH.)Fx2 ->p Йtcn3~e|f៷'*o&S00Lan FF<ѥђN0EEѡw1cg0QXŴC)ɨcnav _7 >G k̭C̢yLmC_|p{ήpѮu; q8Į_)Ȑ`Z`0`-$ur+{hr8^(Tvd1X@nh0N(NN3FرC_}xp:FΣKs)Fq3t`d)@d`srSlA}(tw,[Y("n{ڮ(Ud+Rw&3rcC"#T{U@rJ{,rvsqm:$㼹wbSmƵ>1?sga:ūGRGݟG|EsC-17{wp/Q'M31bH1:`J7x c-ǟpK-33Y yp{#b6:qbts{(ĘtX- F.i:wpܜE#AKLɨVMme- 9'jtѵ8[(#ԊJi[ItRpssev&@ܙT݈lҧ5v$fxYFc6 w#ǚ'H~3jyGd0=Eiۜ,§:^ZF0k>}&2 h:\W<.Q:/*beK^thΈv/9*.uaGcӫcC^O0mq\Y͈y1Z'_(f<:fްO{+"cqI|3:f|DDxuBb;\@^0=ӼֹF魣 m[1Nxy 6磅ҫ2 kM,*_,6}F%S*(l͐DWɷ9`TLZN6Y oÁ]MvK:/_u3rk2Z"_yF{8f^qB-4yOzgVM_eK_!#mHJ:m%gdб! 13riɑAOzbs|4E23r݅KMD 'ZCGxF=#UfbʷZӲpFx8#8-/'Xr{5~p:#U[V~vgd֪yFn9ZY[=[Z|A\@7$poHiBFV;mgцqFYiSie} 43[ ^H!@eVy) MKkS.Ǹ87q#[DGқ{5@aG(=[2;jcO#쭔=)YVgT9OI]Bo|rBL~Z) 1?r \.:r n#2NWD2F{iI$u.'o,oǒG 0{S5mw;RWL*?ߠbβXp7ܖ:&AKL/mmӷQsLab$8x@C[B:nTuwPPEX,~ŝeIU~ۻĹ72t/ݗ,[{La.Ǣ_w+~g]P=O5~i@%?&/ٖ\4pQk y8"ʒ|L3%Y*J~meUP%\sߏn}K)GJ~ʟwg%?X_U%?جl_P0?cz Ug-A{.bnrrS SuX<`6(!Q_])kXlgڼ:Ag5]J~z3gm{}W$PSM~Nv>i!Wt"w,G/+ؒz4%n^F@Xtyvb`ˁ|9i-ύco',mkʄFψv?5cȢݜYGDgͬTc(ږ  jc1꛼cF+/Xd-O- -=8}WgXqwF:Dp|#ňl_ߴi#U"HBEc85u9LlWo:*Q#LNyh HFRps)nFQ4;(9bA;<{HXͽ3|QV">v=~o1+xs<\bnyi=¿i|5߷6.R%L> =߯o~Uo}EfF~zOn{>EnJSi+`BuX{}[c]/ۇi}(K`osYSAӧbuqMCZ4U;ܛ9$* JUvW|>Mh^8%K׋WnzX%~Oo-mi&$%'7\4_R"Bxϊpv9[_st#t]J[h[B6s+n+mm[zs5w6 ymv0>H~ܔ6QMW9#N{1D *_ܦcZ09Wa! { r󚃓}E8aPfꁝNXcڪ5v^[JٿmY(WsLVQ]폴 Y7T>?s_bytG1Xg`Ԃ(L'0Gry}TХ$VQ=r2J^fƱ霕0s9VMP› }S|!7J՗{v;[$z?^.>$k@^]^gKrQ6ַprZfy]Mv0>4!'׺!~}~iq{cxrPqft9x.no_Qʥ>.VnwsJ1] gzTrτtК=F gVqH[16ZU?0vЂ& |Z]># # ^i;zE#^#޷#fBytkda|_Ey\,r[VSrF1B{D@{{f.aLT#L.w9 N׭0m_PVT^r3 Z/`Б0^*_ GUVNߦia ,9`:Ut z̆ˏba qr.XeOׇ\p"`Kлf\_+XJ3}֎k.^ &3${SౄS#(pz*rdI"_m<_ɟ> ?]yN:co0֡>b5A;M~ ls*ut`l/aAp+=x?ʵ {0R;@Hm.y5ÅR3=X#u27'`Gy<3rsTyoWc%CW.gۯũ^3r^uPȵzr!rCZEiGv ^rG惋V|Z;"tkWo"[k&uKFՁ5f֑Ah G' |4\F9};|N\Sn;m6)۷+С[{/wD B*ڥ8#.et9'rFtzʼn +A2 DR*MkqE˕3R3qWzru`TOG쀤y>QVKx_{*7(01rCw'y#ȿ\ ?>8dm䥣V"oZ<v#GXNV1Rʸ"%9O M!̮b(g b¥]cOT f 6<ʒ;\G /;؎M)BU,8M 7Mpt)xVV|wLvRq/4Uq/5G+%~- Ǒjp ήW(-K>'ekjG|)FWzTVȅCJ D{j_Q'&'"|^$ =C\#[O7,bX:Ưw%ZC%,Hy|j3&3_u37B+U,< ,(i:Ss$lRO8Wۖ5 iڄX&ݎW<6F$.I` hدenaDD3,#}KaYˑ#s$JcD$k,gR[=zzH}MebS]<Jg˾cD |$ egip-(O5-gzxnxDzɟP<&5@M|2[6#R>Br>ҴqsRCߟFAl@6Z+zn-Э־}sjmucRkFH6Uǭ6vCMRO"hݎ5`o# WFHza'rF@"M!#eu7[^5gnLOݍ0Knj*vw#Hdswno^?TŽvA'.7zD::Frp'Oo{VoJ: ^<чP^ԝ*,67NzYS95ƆLWR_~ =ĩ/:/E=OU'/V@˝,/k.68ѷ\cuY]~ڽ_R\\su;.?-򩆚S^J .o+;|n~2)/,Ɵ)/(嗵S^~M[^>b-/|MHy}C=-/`T\LylOay}7mۮkwaym5巕WSl4J)Rr캦liҒ:9S_X^}% X#üRST3ϥyv\-͉EG TDK Vc2VELN &)2ϼdK"*+_V?gR1:O#6k;jzHs#kx:! {+dYF@/et]a%R{W{E~ֆpmȚ[.[(wj.F CFH%zn5%~tsE[FO;VSKӨiAR!}iee5BV-j7.bGZ$s.":Fн R݌2-!%~E,CSaJCǐyV݌XP-:j(SH1iIT#otA*$NyvgW?+@;ToC*&PGTgTDSY=,l$H( )pgY2P_D(MKw}f 3+~[sy) 55#nIȐc2}G6gd${FB7sFB7] ͋ŦzGԦO%KBj1ܖ_I;2,p-cHC=h۴T<Q{Fb{dSif#6qtHoܒz9(x6S]B GRb"@tDgz`k#䷶I\ {ITӱ˗z:lS=AJiӱZӱVZ#~ VҘAҍuhj^j`j6Hq.J&tRɡ&P9hF4Bms I=5e%SjORjSj@H AB}Jx(q۹j*Z#t-T[X*6ќSN%'&SJJ&,[F$CakQiŨ %.zUrIӪujW' 4,ȐRb Z-ԅ%%yՑ:f ( V0,iJ\ ;FgM< a!0B")*F,FVFyq170>QQJ`DD -x&u[n. ڟ|U0 QZUR%QcRܙ*I1k=MI{$`?HV$'U 5鈄NJF$9#bDLo"y NM~O T]40":TdIl+gFrC㥮aeE1;;$>JbH"0V-*p||Kix9 A? ˔[Zœ4gњ##-Sҏj),!$uLm KQV CPVCZxLlQLsCn)p=)Z煮IW$R+&%9IJcidVjZNX$%WK2m-ZR"ҭ]KOy%)F"4 SH!11?f"9| L)i1L\4zEɤ7W&>&ÊY'߄bHzHKGüdf.oJܤ@CC h;"5"uշ'BvOY3)nbww;0s;>=\X;8@9榓^zmfi*hޤw,R/;/\WI&R#I`J@D~T+?5[dS KXLJC^:JcpJ)ɱh|7e\ 3JKv.LQn'aCCsi4ĴUh pqD@?!#-+y">jJyi5ɳs$efslJJH$H 62aoo|FMr kj*81Vb5d VD>?РHYRd0t/rM >$7c\(?`'@+x@V~dH5c5ԫ=p"9r7pBsH{Ti]oUţo;`vM 8a#e#6n)#g.ZhH7&;vP5[wd| ANwtwx;⽣wО=MN:y+%=zޑG!]w$ҙ ;݉,%;;IMfo/'OX>50Jbj?Ȝ]O煵SqB/%o*ńYqKb#Ć&?>Hjqj':|o{GOgNoB7|bxpEM `@}PЁ]4u@}ndlw@t{^_ܣ1U+XFL"^;:!9>GNlxX?B ?B.\aOGHF$bԱ!A4G:GHFfQ`H"$?ؙXA$ &AhE(J#8B&:F@GÜe3lIAӏF1#~ ފGl$rn={4;{|#0"!AGEG"?[=B΃Gz8M"FGHlz,)A&mԙz4dړz4z4'z"ZGТbMԣi`s;B:e}B'(=#w4;#xGty;w4/ $(CRk;lRz;KbRyG4EPA!$f-߼#}wF%ɼ#Q;h&߼I܃IGpEU54r9ZŌ@s{@VnJ+7hmƇ8G՜ ~p난9ZbpϱI^boC2KwD8 ߒ(ȓ<G F 8ő[##1Uԏ8Bq~SW>GWb!Z(Q>GpRŸ0˼d]?ۉ\:`8oAoCވEoEp!xiɓ,41pAb8A?,>Fc!``7~5t Q-b7Enf7ԝnP)Z-vC n/vCE4E]zC*4Έ,1pF7B^l *}BYnn͵7! Dd7!n/3x"pSCn'3'vCE?~d nn <GSJ @Zb7  2"']+y ו,|#7a^,e.%cZ},5&$67i Ik(~5$8jԽS8께fC2D(~:A{bHj $_2vDR?T$#[H껙b$5C;H iA!@jzR߹H}'HjoDRk#9ԷZ F (*Q >` p6N} '$XL#,FRI $إ"}| OiJ!#C4H]'E8j¨<#5 M5zګE`{.ĂQ#c"T`;E¨:aԐ4]0‚ՄQ$aQYz,fiZYq3~t眍,ev7KbV!OMUf2eG>` Y񛐌:.Dow"f 6r#DR_-!R@HLCo?ԷF9HR 4I],H(t!k3I]n 65w4rSBt IݭH^kHn DRwK(RgR'?'z6aImރNSJ$r5*򳉤^bI+'KT{˼e^f̫dv/jy{ v9.vcly9e]{e>=[,j4tliJ,2r7ybvˬ}{^=,[-3QYfRp[&شQ̮-S<*=:e&Nno2rO̤od9辄援lV(0 VkV$[e"[eĢWzsn2V~@ƀ@=$&z- I&RK+ Ɗ Ɗ ݍł>b|be[@mX9@@Dj FX R(1$ ;Mdt̖M;&'pLm2Ud9&OwSLCɲg{9 .Ì쒙MK&HꛨO~:..3RK'.|쒙쒹d.!ԳKv쒹㤻dn.=Kξ͢7{$ekJ2 QnkwgwUƉ y 2j3z|6M1 [YAFu>C7Bņ;5)lSG)P(8*l*l@lӕ@1d^( P== CFؘY ("&N pn_Đ j~'A0hǛL 5Ii3'v9 '(W^Qۣ\#=J (g{;QnNO↙%/ۣ_<ۣH<ۣT?zG%۳g{쐓Qp@Q@=JBҲ?ۯ(;1`K޲ c?X?T~鏒M)?J(s%,L-R۰E21[dl )6-RKЈZl)T-RU|bHZUp=HYúEʺ)!j ߟ[Ǫ)HJ 9)Q5H Rj_`pms iporstԼ8I}yͣjCwدip1gBshepX?kV.1g1-CծT_k; \ bEWf͎.w`-gr..*fܯl 5 A?^Kym)m'tNrkڪV>זw8, bG닞\F|Xn{S;;j Ƒr,m i`3deg4 O(Kp]Q^49{k/[k.h) Gs_h=l8KvaW5$=ᤊ/;^^v2ϥNpv[e0uyar&5\VX@TE5+; Z0:Z#0(b ~ (L Q(V/hXTDg5"^ $4Qo3EsU?ؕSGOhqYW4̀y]O_R ;|zm1yՔ\K鄤fah%ȱruf bsD6n9zO3ZYvulyۖmqRfܔI(o٥7qzح~S$slep7Žs{_-S5 ʚ̶]剗-sO+/%}27J30ܷYʂ.2SL+JL:';l{(&D[9G~|;՜)LG$Vwq9[go.d 6ܣmʛf+vǷ۝RD2^+? ^\~)F?e޽,_boξE7ٿQ'p/i)qrhoYTʴovև\^m]Z|}äJUږ3 +r3KQiWzfoB8E y4Yiz;En +aDYkzܺ2z괮᪬*Mɫ7봐FR\ܞ-]lf(|b?v܂@բ}DkJ,Y{V?ڄQcQq]JHpdyKՔI"ktMRNw[OW- E[nL㳄4l {ڊF,_ 0b$#i̮@5S*clM 4q=bK>8(#=j]¹&8tGYc,z3M(V/8+0XoaGpc!^h(.pan"CڍŒ4K:M.PX>- OrIFGc*X/(%H{,PSšG~#|[q ?Q?L/ĐhmuP |KLfua C6tz74x=M ̟xEVoibp?nfwXatMÇ%4q>2ig_ why܎(z4%,RHeN$9[ ?]BBHKR[INƽUj_y!GM ƅņ"\[-cPme.73Wus aymdm!IMFvdmfڦ񙽶ܷ%n/HpN?<9SE*]@Iݜ)yIsOT%+cg"{f%Z%ao)ZC=[<jLb"16&%WK~L43bP*6TS+HP4v\uS߭3r՛ +2ܿ==PzdەΝ Dָ]Y4=ɰs_of1/VP ٕF" U12EyFk(FflֆXv]HNt{$ozKVfנ-v#qgz/w5|)9=wTz騽|קJ`}ڝ79Z;#pVhv#-GGWTWR6Pn}ln #n&h;qV9wknꆭ+EkK7}j<ьPjv^޳Mmu3꧕m Vmql[gbJi}enqCEW OGC݀ݧijMbx}WuYYaҋ>"ˣY$N:DV}?#elMs~gٌzԉQi4w맍[c?r3n=fiR{[X]{ wwd|]|5ZS {KW漫 9 vmi~dKflZٚY ,۷ۂBn.& |ZGOsy-竿MOl]_QxSjUcI+TIbVؖZ@YXb HܭjpA[T .GX _IlI ކtcm18K#&f2z1Bt#ZPږvSGj)dٵ(vGf^msQ9PY%8efXJ QܜݜByҫYNv${74$%a(<R ]a^4@>Tۇ#eh7"!EOŪu'J0|-&?|!,qeQdD1e"Zrq6;/euې\o}H%rb $A``nək)nVϋ[}281QԵ& 1uX>e5״d5ִfbj2y-hJQ{iIN]ߋݕϟk}{{{mSϟK|]wϟINq?7z&-xކł_tͨ=zoXv6~oS:g/7z\O>uWR)9l):9D{5- 5, 5- 5M 5M 5M 5S15a͕5SWsu5ح|q+e3v_5{TKڎ&܎3P{e0qHMOL~f-bOhS;)R)2*V*@[UkeV:"=Q_:cOƗm(!h[?D`enHenHen Hin Hia Hi RZs9RRښښښښSҚҚҚ9-NOieHieHiԽ5w5w/Z]sR]s2se١ '.@&LQSJLheI;vN,sg k\d82Pb+Ȍ`f^2XmpfX9[uϩc9FɄjs,s][e`O60r&?3!Q*lb0l016_= :~V؜Ki؜KeT\KeT\êR\Sas;zLm!T̠:E6)rYȸlY,ՐKB~Y0lYTlYxe.ܶܶܶ@V YM*.NgũX*)Uc K_51],UY@ٚ- qźf Ȃ^_cc\_춀,Av[@){ 9lY,Y@VM:lY}؜b>3M&[AJl.mV)b%6]Hp*l~w/u ˾Y,uY\L|tebn&pP^Xx+ 14JA؈"փ(K_<1UݟFjTU& 樮'ޣZ11!YMH[ II&F%$#. I0L0ӷ1 uyy`7x 5IPcGdsd,t-=564S-Rcsr9E6m{D6QK,)!Gcsݑ{XS֣|Z1 RJԐ/KxS0K=б;U! /ݺ&!hg:0D&|giI&AJ 1TTW/C ?ؼj]jފ1~=|تፂ ZdAa &*F\,Htcw7D@zgxPI`) |FdbOlf%NlŒ,*4T\2GesY0U6-Huln5SJHhRds Wc/k.&x{^VpM6N7USH[طl`g%l <6>'מpe[ȹY,qЭӔX6uSC{Cͮ6p[KFG=E ' #PF)9@"@]oլhe56>=g {FXO͇3ae_~_ibm$7)삄\'e2Jtu7ӡT6J&R!5IբIh&lr7Z"=Xdb S7.ɰmR NPᶜ'NYLΑm͹ܦ2iY2(KMVt65Rhs[/66vps.L)su,ݚ|܈LW6Iez5H &y%E6`e&}LdFG +cYU6!UMV=]oVK \sɵJLMO݉͞M9>nq"e.\2 eMF+SӘj!Js#Q[Ri@ nNk[ps.vZpS ٭[n?jͥSnsRnsFSnrZn{Zn3e({2xcjs%6IMkx $_I5NLo[i| \=wMtlM28[)Nv󦓼0ݍU$?$iß~'0+Oc*Z_Շ9xIiCY#5D9-$¡7g-9oOb])RBSps[i#7˪)5Yr :Rr%ϴB6IO[ΐ)P}7;<~wؠ%o]Q SBXb[ЂE /n]Ú!P>bTPDUkJB2$ňe㯤 J7R B5D>"u!QYh%*$Lt~QAϽhsy_+0ܠ?}=k3x8ŃH;#;?~p6w(7˟뗿?V_ݟw?ǗÍw,B3h7_O㟾?qOsf7lfYi?5OLAGF"]T"h.BgɆ(Q誑.T jB[і)b"%ݩ׌tQYTq䋢5lj[5E,Jszg=lv-QEh,JSt3ai/h$KPw"VQvȍҨQjme&Y !&HMި;s7f*5_2F-h.u(jF(aE>V|Qa}ңp䋨1Qf1>q'̌R0DŽ#[4_٢XFWcu"a`~3L( wc^#YT_ k'arvfPšsɢЯ.tcsV^`~^KdQa) &b$O#cu:kX␸y SJ\Ζߑ,*lY5 =Y#YD &R&am{"UT1DH0*ThoBfEhI"n82EPղFoINPJB}e 4kEE* 5c 34B #]*śR Vw$ɢ~V#Ytl$=j_9FZD(5( n5E`E5-j*䊀uu6'6_JWS&rsLQL]ws{,t T˿V\#KTH`0u YH$nys]Mjn/ TW6E &#OT Sjn""O JDp 6}}.pu OL)*"B95"Q_cr6I\m"QwqMM$|A 1NAە#ۛ ( m9#?C5E8xH q5RNo:?8x`XlwٰƊ[{)F%:Es@_ʓE4%׺rm2Q dF|i qFEH Pz3/ j}F>`0b`2T {pz=WU$MFvv؄DGB# XcЯ!X)3GӰ^^Woh5Ɖ8#E  -⫠4~bݯWg\x}ez Xmhk z-$amK-&/miG8-+iDo4:#*z=AObD)'uޥFV*k8#$4(4CQ:dzfgD xQI}/g`iWc >!Qh>#-GX"Ȏ^ψz?{8SUk㉑~oNhH|0rAZoVEomp掜swvhVO% NvS"+Ϗi`` 7m #\uCË3(  -1|[3]Jo1XkGd#µŞ)̊vwrK/&3Ssڛsƌ+4+b=T+9G(¥A}tq5dB,8w 5@"5;u#]ё[b QVPe)KQ4h /NQ@m>|Ka;K`c+&ÎCTXc*C] p8|L`6֭aXݡ"TPD0%@̏DlY3F'ݎo(^6똜˥x.8f9%' b 1%^R|u#0~_P;pO˟wѵN(wZ0-h7.،6VW$y^yp0~\7#'$lm_L30N^=vO B}mW@r3՝<=(7rr3é\ t`1` ;5k9z h4m/`z·^۲+@WY?ܓ _cV8|"WHp-Sǐޑz<ܿ2 | `ʁJ/\k̥v|!A܊g,1sQ`xߎd-nVi`=0#E2ն%~TV1, :ҭ,x)M@c7Htrc]e[A6 W12lHdݐ&lGs:Qh҂ensetu|H oq:==m" %a :x/'铧al}F7\2y35vb 9'X(^@<^gQtEjD'S G+%^ո." PʸGc2Wm}Fy =|[,3bdd'#,ӥ2YH&;y^; q]#]@t![wD;rՖn7À'cҶn8㫆/%EIS0oMRVA |WnJVy\ğW+>kQZ"[15 Fm#]adD$akH  zfZ)d[RHqqc&%C^5=$#Owʪ VuM.v6 Γg>k+FvLRp#U"?E&#R\Uj]T R< }c82,;d[jKWp W i0IsjKQ5C,E$c-&m5;e[60 I!J#OAA 4VH4^(˹k7\n/Z{Gpnjh%zry e6uޜ$0m?^Tޝ<94a9"sh ʾM58_99}5WbFܲ:shW;[F:yGrǦ /0L `Uoke"CkmF*`YT (uq.j]Q#iB*HEYubO=vN҈h)UۦIE.]p3Cꔔ[D3o+trb͍vV]~eC5Z^YU!KECrWB>7k\a!yjSyqd] b'qUl>y:.L(vo*h|8zmjrѐVתk T^zNj3Cu3075G@t9A`)O`+jjV6 тp`1KP-ƁQpT"|$y7 ]QAbv""yYui uk_^塙n< e!!K̙3ZVL}:ԖxSV6wP!͏J2ڹWqEGIk# g]n/F1¹ =y."FuȱR[RANj;eؗ:]5CE!CK܎&8:TYe FԪV#|Lb|X\Vn5b_^+AAtt(xVHAG~JR(,*0U{r L{]EQWc;>#@a5eExLkvgZio$^!$ kU@Z[ N9D0mJeIDzQRhڬ=#`x:I= ) e#<%N+Iᴀ9@ <\nʝ;{h,iuʓ뀨!H(֫ QVQMH'17?A9%8[<=m{ Ut纕c2]d{=ޓLN(Û?|9Z;B[jUգQj33x]ܻ=@4ԑ[!/m>MOnjCzYԙ^ke^Un-Mn-^l?/:c"Nsᔐ}LN=.?T]5"y:FRP(Hz% e :d: 9(M*MP (kGy% ϢOm(+@!>޳;$  |n @$kqLC)ǓjSߤI`73ZYig0HT/E~1Јꇠ{Uh8| #́F jnUTCj0E:Kf%q!ٹ<اӠ%ESQI >[X9o 4!M6xm*2䜤{:DSNƒ=yiG4ʨ6eFN6 LJto6P͂=6D)p=""pDWJ4 W$n#C;nG 8Yu}s+p> W 6 Œ] mP'"wAn sj S8#:f|r@?MDc֠]#yqPقŴIiP~\]Th;ƴ.jBIo( k$Āa{^G NW̜!3JU! SjDV$0ِMS1sPāJz7.‡=*mrGًሢmw0j,j @}hٿR{A'>Nw~L;vY<u4coԖD/lUGtCUXFQ>ȦKv5zw7ʻљ;^ٖw7}LOV_sN-]~voxY{oN: ば=/}VښG } f-K5~Mo)i2vRi9&Z׵}>-6-ʲSN't"w憋2X7e86rq;;`&fDX]`GlB#%u?YXU J:rR"(L.J'ld}4( wX&ak ]ގ<>]b35CMb{~P{tP;0A:Ax͟vK0=d*K`yvDNK:n |"€c#ܮbTOxBcuf&;T링mGs)8q'dboiЉip#{PcT$2Tż+HɲfE S$(V0c:(g? t#7r3P b@`HͷGbK 1< لPxu@ޘeޘ8kA RfI0ݨznlQ\ʶF1K"N*}bpbU8@I 9=*5})VCW0ZQpB 3F6чFOul n}8 0V6G Pĭ:,ܨiポb)[ܺQbuq`sgy ǐ<|Hw;gThbEh{֏lK]KAC9d:@v&T*%oddHËiL]9U{#7aȡ{ =#THG~bv䣃}Y-N *m"U6xe 3=2~ʣ-czS?T=U(<a! *ێʃj,di:,MPC+ 糣,(0|{HN)js+GNn{h2sJx#57+O&oFi@?ŴDYZ/] hy; ,TH7)Q /h z(#tT,1;&:ҭ{]^VGo %#Lw(ZX.χsVeB:L(*TuʚjK@=]oI⏏=Fϝ0(g~NGݪ .g)eReQq,Qp.aQC@n!j#LJ,fB2E`| hkMQ5ߙCQKf+;c*=FW2إ?̻^ݓ~=ɨpV ahi@Dw2Z=U'c٥*)SfIKKPڽ.; d%M)r*yȆG@Dq8_ zq{"5M}꾹z+%_r١yM/@*j)j#m,c [H6X_.bܖA5;-{#%r7dXfFAѝrH"6y̍{{t3-;Y JQRBЩY(8a1 Ѣ6*]ɏ?Ol<˭KJH<ۧDJ1!6 k0MrRR}u< 9`[S֨k*X $*@mt ,f 5)FT%Ȱd('b:#Y̱3NiRͱ f6-ocUi,{ s·-+Bmn-BJ![`rr.ž9n1BK&cUFZ#\v};Y#Gb-'#{}]csn h!\5l#}rð>bC-7 ,6obl0HFq[wok>cYHsY:$).R/P5*[nJ&ލ. NSIVRf+RhBO-X17|"( P mI:hۭ_'Q,}*i0I,pih6?0R"zHUHI(]R&('5VͰbk=Vu3'WÕ6,b ^Z5ٟ>#<"}#F vZ|B-MNb^)x>6+3()WWHmq˖J=BF}5tL9 a;W;i>b0gv)CjЎi\g8c3l}Uav}jVzO)NV˂;ΙoͭvJ+\]^I]UITPR)v{=2b˕n-ˑUJ2nCPլJagYRS.%Eߐ >Cܥd9&VT9Vq&7=Ku3u~Tຍ@@_1oDv ˄E|[D!m+qoP.Y;s4l߯Ċ#fy@7\!eْ(/ اj.)M(<(kTIoJqyVQ1*]T3;Y]=]iD A` DD<.uA}pѭB)^ܭrbޏTs!nBmgQ'/ )0{:=\un%V[D&O`kgĔEQt(eGo1:>Ė& 16Ж{Xhi²F(=gcf()LE!xePZZ?yߞ4'J̓Щi,$BP@ޅ-xXbs65-vl-Y((%F~5DU* f eU 4;bJƆxo6H?>:b>:KhH;V%WUɜe)%$;T"Jdb-.nD%♊&\36`qM1#ƔLZI V3oqYYPxUEIDt3$ o 5?pɆ$HN%i*P"ej$"o$v8RH|1$Wɩʺ_ /9/" ~g\Zx@M  !W\%Z@a8_\-~P&MuE5~(-ѣ`1c-@L%Iԡ~0#% qKG]L R7@C"+Gd.\j޲&Zc,^b *%ݮ Pe`s HmC^nLebtDn?RK-%]ъU0znCi|tU϶t\a{GˮmRtYRZżG/YwY77] `uͥSYV1؂ {r] ݳp+ĸUQuUʽЍBxGRYXzVQ 4""E2We޳VαZdM8-^l,[4-2E;mLz&^Y-Yy&i4r$]&AxoJ[i% E*kxdTno^NRl6ȚFkVIN$0HV4s=?xTSs=='{1wDŽG>ѵi-{Do_ϸZ#A>V{.P?[/%Zrŧh15⫈L wh Xb MdM5A0pؔbҦ_Z61J3-ͯi98q49?TTDBr)zcDl̙12W5rD@[c 6 bDXlH61BSe<}E+ʕJmH3;.3=F Ar> stream x\[sܶ}_HVneugcǍN;ae\[ο/@.vFI B |X䰲]ó{8\~{r7Rj!w 9TtIK`_掚62w1%uɼTB7YUV\j]EhfsFE5+eUVlͺ9FպEk3';P #8)'.#U)y1S̪dѭVp3a R\kդl_TUr_٨5U+'?| *B>\nfr+m1%DRW vhð.9#ٟÖ3)ڟPRײht6B1Dq 79f9͋t%bfؾ < M^X|17~8S f=@m.R< u-鞃vQ9~(BeT!?0"0hV1#C2soe3"*)c'#W|z 96VQd(b08jAs% 'e((yC[5ne^LkMSfVX{S!oghҾƔYncˇ6eR!?Hʔ1<-*sͧiшkEçiگ="&T¼Z:Ŵ%Eێ JNb2-g5+MۯIU/QNWw\\ 8 0}-٤FH>hĤ{%C %`_gr% oHd-odH,`2y rdC/}+yi't|қ/8ws^/%mD)JҘ,d,_:9h2$Nw%Kb2v[Kff1Blq  蠍kL]?| W:7O|6y>{Q\I~'c&6W^|FjvYCx6$ĨF*/;͡x/Cۓ#.^c=\ꝼոľlYV\ c^#e #Dw.= E#U;zh"KM $Ls=uu9"A2IMg"%B׋xw3+cMQ8(-ڭ⌖TAJX.B-nzW}˶hѮVҦ0VK0c7_taFMܵ+cUض:XVWW22|+8oE뺛M_.ΰ&l`񖭶SUe$ઊi9%e 辌4*ɌO|%Ri_HveSEdAP/NPScxAɰB'N'_Aȧȸ~vȌ >۾.c4y6'V퍈=bA8cH.`YD4Yވ.~yYqu1 7 I,qL` E \ @[y|.~7.W9ߞԦyL4Ō*ih,ɴu6wPB|׵%uMmNu8CSx6P*kkqMwߡQ&-.gvfԣV>L*w~jz(ֲ/֫je8~X0uY|c A>67"8Cgi ([v0[7q#[uu:ezt@@,LGs}8Yyhn-V#?]ܚX GE:9]{Ӝ-6U%`Tee >>崙.q5~vO!Ʉog_3J8Gh6Z/{D }:SYd;W!1r-="Ȭox7ӉvQLBrMlǩ1]rյ)jO!"x6֑ {x HO_8EGwbel< y I(!ȭrR{⹁69õxL1bw~$~euS?|67;'LeqpKٜ=E= Jݨ i^5t?Ffr>xjC)}$bm' j\:؄5 6 =΁n=WN XPE !>Uu!Az6Pk %a- U$PD5NJ.b^젎ɩ3hGݩ44!%C(CɌV%d(4fBEAĒ{yqxZ),QDE%3(`CUH:_09HRϴ( uNZХ{PfNHURxP"熊QM rI/]PD$ ߏY`b[Zƴ*A%ӄ0D""C9 ERG$/SNAHq2"AO eVZW3hǘ & ''WJd`CI$ 2x9I"m U.D]շOB~pL&$wKy2Tu)+y]mpln`3V.a3";>Xt<˜FR(\4>C=Knb!Ѣ4:>Y;)-G ZWDB1ع.4^mFqNav7 *I?yԾ[|mnbfR _ N1 "R7-!Fۘ9Aemk(%^4x/ZK~+ yʝ ULOnxoؘl7Uə~FiR> stream xKo{ Sb8 bAʒ!2EW,wir[l=fd3ɼѫ닓%>oD\<{dT<.\R7ũ}/&}i>td'wzo(&yCnܾ~i귯ߞ< l_AL _)YcK).--)KS|>='6T zqdzq$lʛCًr{sIr7A⿟Gd*Mpcȼ'\' 77Tع9?FE7!B8o؜\<:Dιfs'S(U%Ynǝ?SZK'_` ].\>}a87/Ժk_&4i¯|M]g?OYly~R;)Ɵy?ꍃOӛ+Hoߛ)]ڟHbPp(P5>s6}֡>OŅX/>K&KMϮusҕqqz#yBrːHvn?P[ބ˔| ]Y )U;2OEokaz"}½^sޥLA4t?pQx |]NQz#?vB a]4 #JUb=Z°ud~3H.xtuB nt in"qMbBM&AkD@T|hPM&1ItISrvd"ÜF)<5I5hkvLSK| z'(> er6G ('08 5\8qQ0i_CM,dU_bɈQ;h#=zF qc<ڃ&"鉅F&HiMƠGftsey'HgU3ʄ1:2x4_tLAzhu,KzG]T!uͨL~CCNBЃͶ2l젚9jNԡ 90aGqBrwHE!z0c}@OfiĠv.p›0F/4CsEyWfzь(vG-wГ%f߸OP燢i/i:F-#Wy*'[bj#ԡ̲jɴME" r^Z"d ま3Fk5A\#F:?W@wH5.1F"ЅkF4Y@>-XE"?#.]#;@$t@Kx43.]#I=Dػ58D`dnA XpiW>CtE)>h-yuehM1e#a4F+RWSpJ{ՔclGQ{AA Zyʦ^*dEK;W@2Ƶe#Q2t= Їwqw&!F]5e-IαpD 7cG~IdUec.SȌdYHv ؉h '@v[oZcXvj wLv;pD2q-&@B:u|$xr"6LvK9,[N›y){P ֽ@n$Vf/RH1xi$ZnpK" n J##7ĶFԺV6h'܊aRՊF{Ip+jYm[q$26 ZӹGC٪~7wZIh?mE v5ފ#8#liyg*=Fpi=3l*# F4'"$VYAj0v'^v-Z˰3+{5.ƚНHYVAF؉לm!Qzks*(//mo21,hNd3G^vL;tAIeپj2i^6 m2van3:ף7ۊ[R}pb]Qx WT#t̒ޑ]KTō)Sۮ|3*ݏ#zo3iI LQ(0'܍)fؠt5j=/G!RcGFU43 [[*tUzΦeGEOS{rHC;? /\lw“E V >):i?z]Z9&~\ey0h\nFwG+I" Kbn4HCz-=E0Ckn) \czH?L Hw~nGllB2eP3v>nG K-} }1>A-Vͯ-)}3ʇ-1q=IJoŠ-vσp =0--E/t/> #t#/؀Z/u>x${{[KZ88~_lg<~/?m<|WQ  7}S?}N_''qbv{^$%=VMPy݄)ý0+%>AE#]?[-mN5o/^~sؾpLŪ˛r aA~{jKXa.wNyeS owreNhEh?35sȐ^֖/\>9=3x0E';`[JZK\^Mz!W}~\W^S7!tW g7g7wg!*Xoh*|( 7o)Z u#cˬ_bA%߱fwm:4;Q|Y|mί]7}`endstream endobj 351 0 obj << /Filter /FlateDecode /Length 3510 >> stream xKo$sKO"~qFD@9hW^z%w/V%CXxZ_bUӿlԬ7WGj/G\קG_3slNqnNbsvszu4ٴ=-[0:9dfB4'5K~xUr1n{bsYmHtqv_ʹOiqtwOkϵ#n54NNYiwroDAR|&G?bv]y̽U\yX]<0yBߛ&̬6XMp*=r֭FSMPL(7?.h3gD[Y3TyG0#yL!<"66&.&U@cdн?DhIS>?5؆{lM\ǩDi|I-6쬫B=:ys&s2?ـnhu{2-apjb+URa#I+gq [Ljt%cPbiw0=ZSK;C:t!(c&GLR0F1סc+t`Fk Cp;cc*ޣcDf1F_ ֊6=:&=ƏӬ vIXQң S[ʔqq?DKLPfxV!idf5t,B*UKuXMTMw1b bC/b%2둔6퉦`)Igurƕ=9rާÓ t>=gߣyFO,5|ާpڌ9G̋IAGA}:<9C,4"ߥy ?󱋦C޸ˁY:@Du|ৡ*Iq? v9.u|ާ㓓NSH9՘I%Oc =640rNq/|ܧ<c:M4?iwE>cSt09{,QI,bN!,1w={z9t:+A:Pxh@~)V hޡ͎ײ"wV;ٙMζ2KC 'db(m.L/shT,ɲCюZf;rj/%m*%p([S8AF{9?Õ6;U#XXlna{jqCm HZFk6&\ 16eI]Cm+#lEajh-.8bQzih9҈6JICPqa3layxq'y.zn͖ l)8򂗚ðLyhMP8KC$< .UC N)P&H&}y8$+eMOI c&挗CNRЂPٔdKP8fsUd{)YJdDp_ЄG),ZJ:<4u2CNvAá:R$G +)&\JEz!Im;4Aꊞ[(!RY:66!:}:q\5j$947&j9Jl=@I%Ii-񍤈Z%Ii$l$4GCmv $4GrCm4Ibas#6$I09PQdFHVɖ(IK#ln %Iji-񍤄l$4G2Bm6IWAs|#6$*9dPAFؒ_TP-AdFH& IJωhCO`|o?j{+Ғ+t\A?./?,~Y_el+AS9JzM?_}W,dggy6^P>pln>_m KgRrqZavKC`ϻsNLk-ᄢzK1~ܞ|n<{w'3~w7oO729N`)L^VYiw~;1TwMbzWj7'f(G%x ^n1Ri:>Y]{~.o>e]vcVc;nkc7ݼ)iݾ7{0ftIGfw _w}rw(!r=u 2dJ0=7fR_{0~+$xFId\tJf? hF7_|ە/mpendstream endobj 352 0 obj << /Filter /FlateDecode /Length 3052 >> stream x\Is̩>RU1;c&j>;Zܜ,7E_(@ު%.{~N ;w9gg9K~W3w ;/%1*ˊJ_m IWZ+DQ W]ݜ.0Pib^o$ Q|xXP~q!&fǶ~?(~D*ç,.Z|[7JiۄRV3%"e^04%F%⩈̊uqe|@-t_>eCNP&4#j |ɪ‰bb7),ΪCRv5J gwMt+8hT:UR`;)52HY5❽$Z 6=b {TVKYdH(ކm9RŠM=Qǫ#`~XR2: OP䪪^Gs ie &=O+Ia戌%%rq5L8]3MTEށPxѢ#A>$N$+k}Icba%84`'CJw]Vxuc&9buf7ِ.a 7 )&=$<={ܲpKJd :ca 컪}G d57 2дD}qR@zbLv~9`WR8U2'; +QM#&xȪ-Hz/PS~@̇uV}VX'3r@,*B %%pt-F"|BD8ǛvOb % 3cAlRSRZeq15QBT*L΅HYJc!Uю˓Hhf,VM$}D?[II+CW30%\5|b,Gn^U 1*.]ݓVz&x#ɸ*<"v@ '7$!ͤQn(JsH;跡*#&pbFAPIGOK _V6'H:o'DS8^Qu^479n⣩U"|/$z'Cq-z=A>%ADaa$-Xs8s)87=YbՓd'oDd4A3߽0#548+YA ZY1HiPe@s4uq\%1VSڜXKU)CH9K-u5 vQcI[g^VAV4k_N@Vଦ^O 'A1_L]lXRh$k_^.b 'u^պ=5ۍ;Zh ElQr4V[¿g5lkNA>27tͶ.d?;F,r;TNƒr9X]PzƉÉ.:$Z`ևY9 ]T )Q&XZ:fB.}Lo}/?lɁ1TvA九n kuEK7#5!w/ѶJoTUIxس\v,*o9/zp*e U[\tąB L eLG)8?(Guc|3hoN辥ˆ\GNp7NJ@[MeGa.N i\>76=֍°7Wax&gJ̩.J /*zs1MT{216|SfmTxK4d9w~x##pjbk/MVA=#ШI YIuAr)6rm68۔ ~( ]lϖǓFoza8mu<€N&ri XagKM=}QU69 #8挄$Ɲ!bj|M;G!gi1*@j)[gq^901e+#W~rY:ܟ/te. \aKٌh^fa ) +%SV Xv׷ˡ6Pj\o4cgq\,Noʸ^I5> stream xU=0 )(Eod2Is ]GG _ x[r)t~]&O^Si^' V1'Ò9/ӼK4+ᜲ U4#_cFiqF†]Q?q<,o+: Gg8 bbqwyrxXX,Mk}%Z J|[rWl3%!*t0 fi 0?jqqެYqB1A_V!Nf!Ml7TGuMv~[2ܣ=> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 355 /ID [] >> stream x풿+Eap׹t/*d0,,J1Ed2Lw%e\uI1XEw,ʀ3|>w)`oV_3%=S$ny[I_8|Ҹ(Ŗk13,6ĺ1|ŒыAB}.'һ&NJO3ԁ>SsluKQTByP:*VlNU$FeucpיCd\מUYzpi&NpCvjG2m*ܹ!}5<^U/#-9!o~~6 endstream endobj startxref 853005 %%EOF Epi/inst/doc/simLexis.R0000644000175100001440000003616014421664361014464 0ustar hornikusers### R code from vignette source 'simLexis.rnw' ################################################### ### code chunk number 1: simLexis.rnw:23-26 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) ################################################### ### code chunk number 2: start ################################################### options( width=90 ) library( Epi ) print( sessionInfo(), l=F ) ################################################### ### code chunk number 3: Lexis ################################################### data(DMlate) dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) ################################################### ### code chunk number 4: cut ################################################### dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins", new.scale = "t.Ins", split.states = TRUE ) summary( dmi, timeScales=T ) ################################################### ### code chunk number 5: boxes ################################################### getOption("SweaveHooks")[["fig"]]() boxes( dmi, boxpos = list(x=c(20,20,80,80), y=c(80,20,80,20)), scale.R = 1000, show.BE = TRUE ) ################################################### ### code chunk number 6: split ################################################### Si <- splitLexis( dmi, seq(0,20,1/4), "DMdur" ) summary( Si ) print( subset( Si, lex.id==97 )[,1:10], digits=6 ) ################################################### ### code chunk number 7: knots ################################################### nk <- 5 ( ai.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( ad.kn <- with( subset(Si,lex.Xst=="Dead"), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( di.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( dd.kn <- with( subset(Si,lex.Xst=="Dead"), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( ti.kn <- with( subset(Si,lex.Xst=="Dead(Ins)"), c(0,quantile( t.Ins+lex.dur, probs=(1:(nk-1))/nk ) )) ) ################################################### ### code chunk number 8: Poisson ################################################### library( splines ) DM.Ins <- glm( (lex.Xst=="Ins") ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="DM") ) ci.exp( DM.Ins ) class( DM.Ins ) ################################################### ### code chunk number 9: simLexis.rnw:282-288 ################################################### DM.Ins <- glm.Lexis( Si, from = "DM", to = "Ins", formula = ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex ) ci.exp( DM.Ins ) class( DM.Ins ) ################################################### ### code chunk number 10: simLexis.rnw:293-302 ################################################### DM.Dead <- glm.Lexis( Si, from = "DM", to = "Dead", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + I(Per-2000) + sex ) Ins.Dead <- glm.Lexis( Si, from = "Ins", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + Ns( t.Ins, knots=ti.kn ) + I(Per-2000) + sex ) ################################################### ### code chunk number 11: prop-haz ################################################### All.Dead <- glm.Lexis( Si, to = c("Dead(Ins)","Dead"), formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + lex.Cst + I(Per-2000) + sex ) round( ci.exp( All.Dead ), 3 ) ################################################### ### code chunk number 12: get-dev ################################################### what <- c("null.deviance","df.null","deviance","df.residual") ( rD <- unlist( DM.Dead[what] ) ) ( rI <- unlist( Ins.Dead[what] ) ) ( rA <- unlist( All.Dead[what] ) ) round( c( dd <- rA-(rI+rD), "pVal"=1-pchisq(dd[3],dd[4]+1) ), 3 ) ################################################### ### code chunk number 13: pr-array ################################################### pr.rates <- NArray( list( DMdur = seq(0,12,0.1), DMage = 4:7*10, r.Ins = c(NA,0,2,5), model = c("DM/Ins","All"), what = c("rate","lo","hi") ) ) str( pr.rates ) ################################################### ### code chunk number 14: mknd ################################################### nd <- data.frame( DMdur = as.numeric( dimnames(pr.rates)[[1]] ), lex.Cst = factor( 1, levels=1:4, labels=levels(Si$lex.Cst) ), sex = factor( 1, levels=1:2, labels=c("M","F")) ) ################################################### ### code chunk number 15: make-pred ################################################### for( ia in dimnames(pr.rates)[[2]] ) { dnew <- transform( nd, Age = as.numeric(ia)+DMdur, Per = 1998+DMdur ) pr.rates[,ia,1,"DM/Ins",] <- ci.pred( DM.Dead, newdata = dnew ) pr.rates[,ia,1,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) for( ii in dimnames(pr.rates)[[3]][-1] ) { dnew = transform( dnew, lex.Cst = factor( 2, levels=1:4, labels=levels(Si$lex.Cst) ), t.Ins = ifelse( (DMdur-as.numeric(ii)) >= 0, DMdur-as.numeric(ii), NA ) ) pr.rates[,ia, ii ,"DM/Ins",] <- ci.pred( Ins.Dead, newdata = dnew ) pr.rates[,ia, ii ,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) } } ################################################### ### code chunk number 16: mort-int ################################################### getOption("SweaveHooks")[["fig"]]() par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1 ) plot( NA, xlim=c(40,82), ylim=c(5,300), bty="n", log="y", xlab="Age", ylab="Mortality rate per 1000 PY" ) abline( v=seq(40,80,5), h=outer(1:9,10^(0:2),"*"), col=gray(0.8) ) for( aa in 4:7*10 ) for( ii in 1:4 ) matshade( aa+as.numeric(dimnames(pr.rates)[[1]]), cbind( pr.rates[,paste(aa),ii,"DM/Ins",], pr.rates[,paste(aa),ii,"All" ,] )*1000, type="l", lty=1, lwd=2, col=c("red","limegreen") ) ################################################### ### code chunk number 17: Tr ################################################### Tr <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = DM.Dead ), "Ins" = list( "Dead(Ins)" = Ins.Dead ) ) ################################################### ### code chunk number 18: make-ini ################################################### str( ini <- Si[NULL,1:9] ) ################################################### ### code chunk number 19: ini-fill ################################################### ini[1:2,"lex.id"] <- 1:2 ini[1:2,"lex.Cst"] <- "DM" ini[1:2,"Per"] <- 1995 ini[1:2,"Age"] <- 60 ini[1:2,"DMdur"] <- 5 ini[1:2,"sex"] <- c("M","F") ini ################################################### ### code chunk number 20: simL ################################################### set.seed( 52381764 ) Nsim <- 5000 system.time( simL <- simLexis( Tr, ini, t.range = 12, N = Nsim ) ) ################################################### ### code chunk number 21: sum-simL ################################################### summary( simL, by="sex" ) ################################################### ### code chunk number 22: Tr.p-simP ################################################### Tr.p <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = All.Dead ), "Ins" = list( "Dead(Ins)" = All.Dead ) ) system.time( simP <- simLexis( Tr.p, ini, t.range = 12, N = Nsim ) ) summary( simP, by="sex" ) ################################################### ### code chunk number 23: Cox-dur ################################################### library( survival ) Cox.Dead <- coxph( Surv( DMdur, DMdur+lex.dur, lex.Xst %in% c("Dead(Ins)","Dead")) ~ Ns( Age-DMdur, knots=ad.kn ) + I(lex.Cst=="Ins") + I(Per-2000) + sex, data = Si ) round( ci.exp( Cox.Dead ), 3 ) ################################################### ### code chunk number 24: TR.c ################################################### Tr.c <- list( "DM" = list( "Ins" = Tr$DM$Ins, "Dead" = Cox.Dead ), "Ins" = list( "Dead(Ins)" = Cox.Dead ) ) system.time( simC <- simLexis( Tr.c, ini, t.range = 12, N = Nsim ) ) summary( simC, by="sex" ) ################################################### ### code chunk number 25: nState ################################################### system.time( nSt <- nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=1995, time.scale="Per" ) ) nSt[1:10,] ################################################### ### code chunk number 26: pstate0 ################################################### getOption("SweaveHooks")[["fig"]]() pM <- pState( nSt, perm=c(1,2,4,3) ) head( pM ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM ) plot( pM, border="black", col="transparent", lwd=3 ) text( rep(as.numeric(rownames(pM)[nrow(pM)-1]),ncol(pM)), pM[nrow(pM),]-diff(c(0,pM[nrow(pM),]))/5, colnames( pM ), adj=1 ) box( col="white", lwd=3 ) box() ################################################### ### code chunk number 27: pstatex ################################################### getOption("SweaveHooks")[["fig"]]() clr <- c("limegreen","orange") # expand with a lighter version of the two chosen colors clx <- c( clr, rgb( t( col2rgb( clr[2:1] )*2 + rep(255,3) ) / 3, max=255 ) ) par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men plot( pM, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=1995, time.scale="Per" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) ################################################### ### code chunk number 28: pstatey ################################################### getOption("SweaveHooks")[["fig"]]() par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men pM <- pState( nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pM, col=clx, xlab="Age" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Age" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:9/10, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) ################################################### ### code chunk number 29: comp-0 ################################################### getOption("SweaveHooks")[["fig"]]() PrM <- pState( nState( subset(simP,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) PrF <- pState( nState( subset(simP,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxM <- pState( nState( subset(simC,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxF <- pState( nState( subset(simC,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM, border="black", col="transparent", lwd=3 ) lines( PrM, border="blue" , col="transparent", lwd=3 ) lines( CoxM, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "M" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) plot( pF, border="black", col="transparent", lwd=3 ) lines( PrF, border="blue" , col="transparent", lwd=3 ) lines( CoxF, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "F" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) Epi/inst/doc/crisk.R0000644000175100001440000003471214421664224014001 0ustar hornikusers### R code from vignette source 'crisk.rnw' ################################################### ### code chunk number 1: crisk.rnw:25-28 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) ################################################### ### code chunk number 2: crisk.rnw:162-177 ################################################### library(Epi) data(DMlate) Ldm <- Lexis(entry = list( per = dodm, age = dodm-dobth, tfd = 0 ), exit = list( per = dox ), exit.status = factor( !is.na(dodth), labels = c("DM","Dead") ), data = DMlate ) summary(Ldm, t = T) Mdm <- mcutLexis( Ldm, wh = c('dooad','doins'), new.states = c('OAD','Ins'), seq.states = FALSE, ties = TRUE ) summary(Mdm) ################################################### ### code chunk number 3: crisk.rnw:182-185 ################################################### Sdm <- splitLexis(factorize(subset(Mdm, lex.Cst == "DM")), time.scale="tfd", breaks = seq(0, 20, 1/12)) summary(Sdm) ################################################### ### code chunk number 4: boxes5 ################################################### getOption("SweaveHooks")[["fig"]]() boxes(Mdm, boxpos = list(x = c(15, 50, 15, 85, 85), y = c(85, 50, 15, 85, 15)), scale.R = 100, show.BE = TRUE) ################################################### ### code chunk number 5: boxes4 ################################################### getOption("SweaveHooks")[["fig"]]() boxes(Relevel(Sdm, c(1, 4, 2, 3)), boxpos = list(x = c(15, 85, 80, 15), y = c(85, 85, 20, 15)), scale.R = 100, show.BE = TRUE ) ################################################### ### code chunk number 6: crisk.rnw:222-225 ################################################### mD <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Dead') mO <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'OAD' ) mI <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Ins' ) ################################################### ### code chunk number 7: crisk.rnw:238-242 ################################################### int <- 1 / 100 nd <- data.frame(tfd = seq(0, 10, int)) rownames(nd) <- nd$tfd str(nd) ################################################### ### code chunk number 8: rates ################################################### getOption("SweaveHooks")[["fig"]]() matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.02,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) ################################################### ### code chunk number 9: crisk.rnw:282-303 ################################################### # utility function that calculates the midpoints between sucessive # values in a vector mp <- function(x) x[-1] - diff(x) / 2 # # rates at midpoints of intervals lD <- mp(ci.pred(mD, nd)[,1]) lI <- mp(ci.pred(mI, nd)[,1]) lO <- mp(ci.pred(mO, nd)[,1]) # # cumulative rates and survival function at right border of the intervals LD <- cumsum(lD) * int LI <- cumsum(lI) * int LO <- cumsum(lO) * int Sv <- exp(- LD - LI - LO ) # # when integrating to get the cumulative risks we use the average # of the survival function at the two endpoints (adding 1 as the first) Sv <- c(1, Sv) rD <- c(0, cumsum(lD * mp(Sv)) * int) rI <- c(0, cumsum(lI * mp(Sv)) * int) rO <- c(0, cumsum(lO * mp(Sv)) * int) ################################################### ### code chunk number 10: crisk.rnw:308-312 ################################################### summary(rD + rI + rO + Sv) oo <- options(digits = 20) cbind(summary(Sv + rD + rI + rO)) options(oo) ################################################### ### code chunk number 11: stack ################################################### getOption("SweaveHooks")[["fig"]]() zz <- mat2pol(cbind(rD, rI, rO, Sv), x = nd$tfd, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen")) text(9, mp(zz["9", ]), c("Dead", "Ins", "OAD"," DM"), col = "white") box(col = "white", lwd = 3) ################################################### ### code chunk number 12: crisk.rnw:342-347 ################################################### Sj <- c(sjA = sum(Sv * int), sjD = sum(rD * int), sjI = sum(rI * int), sjO = sum(rO * int)) c(Sj, sum(Sj)) ################################################### ### code chunk number 13: crisk.rnw:393-394 ################################################### head(cbind(ci.pred(mI,nd), ci.exp(mI,nd) )) ################################################### ### code chunk number 14: crisk.rnw:399-401 ################################################### str(ci.lin(mI, nd, sample = 4)) head(cbind(ci.pred(mI,nd), exp(ci.lin(mI, nd, sample = 4)))) ################################################### ### code chunk number 15: crisk.rnw:439-447 ################################################### system.time( res <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = 0:1000 / 100), nB = 1000, perm = 4:1)) str(res) ################################################### ### code chunk number 16: crisk.rnw:480-488 ################################################### system.time( rsm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = 0:1000 / 100), nB = 500, sim.res = 'rates')) str(rsm) ################################################### ### code chunk number 17: crisk.rnw:495-503 ################################################### system.time( csm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = 0:1000 / 100), nB = 500, sim.res = 'crisk')) str(csm) ################################################### ### code chunk number 18: crisk.rnw:520-522 ################################################### Brates <- aperm(apply(rsm, 1:2, Epi:::mnqt), c(2,3,1)) str(Brates) ################################################### ### code chunk number 19: rates-ci ################################################### getOption("SweaveHooks")[["fig"]]() matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.1,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) matlines(nd$tfd, cbind(Brates[,"Dead",], Brates[,"Ins" ,], Brates[,"OAD" ,])*1000, col = c("white","black","black"), lty = 3, lwd=c(3,1,1)) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) ################################################### ### code chunk number 20: crates ################################################### getOption("SweaveHooks")[["fig"]]() matshade(res$time, cbind(res$Crisk[,"Dead",], res$Crisk[,"Ins" ,], res$Crisk[,"OAD" ,]), plot = TRUE, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Cumulative probability", col = c("black","red","blue")) text(8, 0.3 + c(1,0,2)/25, c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) ################################################### ### code chunk number 21: crisk.rnw:584-586 ################################################### str(res$Crisk) str(res$Srisk) ################################################### ### code chunk number 22: stack-ci ################################################### getOption("SweaveHooks")[["fig"]]() zz <- mat2pol(res$Crisk[,c("Dead","Ins","OAD","Surv"),1], x = res$time, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen") ) text( 9, mp(zz["9",]), c("Dead","Ins","OAD","DM"), col = "white" ) matshade(res$time, cbind(res$Srisk[,1,], res$Srisk[,2,], res$Srisk[,3,]), col = 'transparent', col.shade = "white", alpha = 0.3) ################################################### ### code chunk number 23: crisk.rnw:622-623 ################################################### str(res$Stime) ################################################### ### code chunk number 24: crisk.rnw:626-629 ################################################### s510 <- res$Stime[paste(1:2*5),,] dimnames(s510)[[1]] <- c(" 5 yr","10 yr") round(ftable(s510, row.vars=1:2), 2) ################################################### ### code chunk number 25: crisk.rnw:645-648 ################################################### data(DMlate) set.seed(7465) wh <- sample(1:3, nrow(DMlate), r=T, prob = c(4, 2, 6)) ################################################### ### code chunk number 26: crisk.rnw:651-652 ################################################### wh[is.na(DMlate$dodth)] <- 0 ################################################### ### code chunk number 27: crisk.rnw:657-659 ################################################### DMlate$codth <- factor(wh, labels=c("Alive","CVD","Can","Oth")) with(DMlate, table(codth, isDead = !is.na(dodth))) ################################################### ### code chunk number 28: crisk.rnw:664-665 ################################################### str(DMlate) ################################################### ### code chunk number 29: crisk.rnw:672-679 ################################################### dmL <- Lexis(entry = list(per = dodm, age = dodm - dobth, tfD = 0), exit = list(per = dox), exit.status = codth, data = DMlate ) summary(dmL, t = T) ################################################### ### code chunk number 30: boxes ################################################### getOption("SweaveHooks")[["fig"]]() boxes(dmL, boxpos = TRUE) ################################################### ### code chunk number 31: crisk.rnw:692-694 ################################################### sL <- splitLexis(dmL, time.scale="age", breaks = 0:120) summary(sL) ################################################### ### code chunk number 32: crisk.rnw:696-699 ################################################### mCVD <- gam.Lexis(sL, ~ s(tfD, by=sex), to = "CVD") mCan <- gam.Lexis(sL, ~ s(tfD, by=sex), to = "Can") mOth <- gam.Lexis(sL, ~ s(tfD, by=sex), to = "Oth") ################################################### ### code chunk number 33: crisk.rnw:701-704 (eval = FALSE) ################################################### ## mCVD <- glm.Lexis(sL, ~ Ns(tfD, kn=1:6*2):sex, to = "CVD") ## mCa <- glm.Lexis(sL, ~ Ns(tfD, kn=1:6*2):sex, to = "Ca") ## mOth <- glm.Lexis(sL, ~ Ns(tfD, kn=1:6*2):sex, to = "Oth") ################################################### ### code chunk number 34: crisk.rnw:729-730 ################################################### nm <- data.frame(tfD = seq(0, 15, 0.1), sex = "M") ################################################### ### code chunk number 35: crisk.rnw:734-739 ################################################### cR <- ci.Crisk(list(CVD = mCVD, Can = mCan, Other = mOth), nd = nm) str(cR) ################################################### ### code chunk number 36: cR ################################################### getOption("SweaveHooks")[["fig"]]() clr <- c("black","orange","limegreen") matshade(cR$time, cbind(cR$Crisk[, "CVD" ,], cR$Crisk[, "Can" ,], cR$Crisk[, "Other",]), col = clr, lty = 1, lwd = 2, plot = TRUE, ylim = c(0,1/3), yaxs = "i") text(0, 1/3 - 1:3/30, c("CVD","Can","Oth"), col = clr, adj = 0) ################################################### ### code chunk number 37: Sr1 ################################################### getOption("SweaveHooks")[["fig"]]() matshade(cR$time, cbind(cR$Srisk[,1,], cR$Srisk[,2,], cR$Srisk[,3,]), col = "black", lty = 1, lwd = 2, plot = TRUE, ylim = c(0,1), xaxs = "i", yaxs = "i") text(14, mp(c(0, cR$Srisk["14", , 1], 1)), rev(c(dimnames(cR$Crisk)[[2]]))) box() ################################################### ### code chunk number 38: Sr2 ################################################### getOption("SweaveHooks")[["fig"]]() zz <- mat2pol(cR$Crisk[,c("Other","Can","CVD","Surv"),"50%"], x = cR$time, xlim = c(0,15), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("gray","red","blue","limegreen") ) matshade(cR$time, cbind(cR$Srisk[,1,], cR$Srisk[,2,], cR$Srisk[,3,]), col = "transparent", col.shade = "white", alpha = 0.4) text(14, mp(c(0, cR$Srisk["14", , 1], 1)), rev(c(dimnames(cR$Crisk)[[2]])), col = "white") ################################################### ### code chunk number 39: crisk.rnw:819-820 ################################################### ftable(round(cR$Stime[paste(1:5 * 3),,], 1), row.vars=1) Epi/inst/doc/yll.R0000644000175100001440000001422614421664377013475 0ustar hornikusers### R code from vignette source 'yll.rnw' ################################################### ### code chunk number 1: yll.rnw:21-24 ################################################### options(width=90, SweaveHooks=list(fig=function() par(mar=c(3, 3, 1, 1), mgp=c(3, 1, 0)/1.6, las=1, bty="n"))) ################################################### ### code chunk number 2: states ################################################### getOption("SweaveHooks")[["fig"]]() library(Epi) TM <- matrix(NA, 4, 4) rownames(TM) <- colnames(TM) <- c("Well", "DM", "Dead", "Dead(DM)") TM[1, 2:3] <- TM[2, 4] <- 1 zz <- boxes(TM, boxpos = list(x = c(20, 80, 20, 80), y = c(80, 80, 20, 20)), wm = 1.5, hm = 4) ################################################### ### code chunk number 3: states ################################################### getOption("SweaveHooks")[["fig"]]() zz$Arrowtext <- c(expression(lambda), expression(mu[W]), expression(mu[D][M])) boxes(zz) ################################################### ### code chunk number 4: yll.rnw:269-270 ################################################### data(DMepi) ################################################### ### code chunk number 5: yll.rnw:275-277 ################################################### str(DMepi) head(DMepi) ################################################### ### code chunk number 6: yll.rnw:297-301 ################################################### DMepi <- transform(subset(DMepi, A>30), D.T = D.nD + D.DM, Y.T = Y.nD + Y.DM) head(DMepi) ################################################### ### code chunk number 7: yll.rnw:307-333 ################################################### # Knots used in all models (a.kn <- seq(40, 95, , 6)) (p.kn <- seq(1997, 2015, , 4)) (c.kn <- seq(1910, 1976, , 6)) # Check the number of events between knots ae <- xtabs(cbind(D.nD, D.DM, X) ~ cut(A, c(30, a.kn, Inf)) + sex, data=DMepi) ftable(addmargins(ae, 1), col.vars=3:2) pe <- xtabs(cbind(D.nD, D.DM, X) ~ cut(P, c(1990, p.kn, Inf)) + sex, data=DMepi) ftable(addmargins(pe, 1), col.vars=3:2) ce <- xtabs(cbind(D.nD, D.DM, X) ~ cut(P-A, c(-Inf, c.kn, Inf)) + sex, data=DMepi) ftable(addmargins(ce, 1), col.vars=3:2) # Fit an APC-model for all transitions, seperately for men and women mW.m <- glm(D.nD ~ -1 + Ns(A , knots=a.kn, int=TRUE) + Ns( P, knots=p.kn, ref=2005) + Ns(P-A, knots=c.kn, ref=1950), offset = log(Y.nD), family = poisson, data = subset(DMepi, sex=="M")) mD.m <- update(mW.m, D.DM ~ . , offset=log(Y.DM)) mT.m <- update(mW.m, D.T ~ . , offset=log(Y.T)) lW.m <- update(mW.m, X ~ .) # Model for women mW.f <- update(mW.m, data = subset(DMepi, sex=="F")) mD.f <- update(mD.m, data = subset(DMepi, sex=="F")) mT.f <- update(mT.m, data = subset(DMepi, sex=="F")) lW.f <- update(lW.m, data = subset(DMepi, sex=="F")) ################################################### ### code chunk number 8: yll.rnw:340-377 ################################################### a.ref <- 30:90 p.ref <- 1996:2016 aYLL <- NArray(list(type = c("Imm", "Tot", "Sus"), sex = levels(DMepi$sex), age = a.ref, date = p.ref)) str(aYLL) system.time( for(ip in p.ref) { nd <- data.frame(A = seq(30, 90, 0.2)+0.1, P = ip, Y.nD = 1, Y.DM = 1, Y.T = 1) muW.m <- ci.pred(mW.m, nd)[, 1] muD.m <- ci.pred(mD.m, nd)[, 1] muT.m <- ci.pred(mT.m, nd)[, 1] lam.m <- ci.pred(lW.m, nd)[, 1] muW.f <- ci.pred(mW.f, nd)[, 1] muD.f <- ci.pred(mD.f, nd)[, 1] muT.f <- ci.pred(mT.f, nd)[, 1] lam.f <- ci.pred(lW.f, nd)[, 1] aYLL["Imm", "M", , paste(ip)] <- yll(int=0.2, muW.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Imm", "F", , paste(ip)] <- yll(int=0.2, muW.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Tot", "M", , paste(ip)] <- yll(int=0.2, muT.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Tot", "F", , paste(ip)] <- yll(int=0.2, muT.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Sus", "M", , paste(ip)] <- yll(int=0.2, muW.m, muD.m, lam=lam.m, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Sus", "F", , paste(ip)] <- yll(int=0.2, muW.f, muD.f, lam=lam.f, A=a.ref, age.in=30, note=FALSE)[-1] }) round(ftable(aYLL[, , seq(1, 61, 10), ], col.vars=c(3, 2)), 1) ################################################### ### code chunk number 9: imm ################################################### getOption("SweaveHooks")[["fig"]]() plyll <- function(wh){ par(mfrow=c(1, 2), mar=c(3, 3, 1, 1), mgp=c(3, 1, 0)/1.6, bty="n", las=1) matplot(a.ref, aYLL[wh, "M", , ], type="l", lty=1, col="blue", lwd=1:2, ylim=c(0, 12), xlab="Age", ylab="Years lost to DM", yaxs="i") abline(v=50, h=1:10, col=gray(0.7)) text(90, 11, "Men", col="blue", adj=1) text(40, aYLL[wh, "M", "40", "1996"], "1996", adj=c(0, 0), col="blue") text(43, aYLL[wh, "M", "44", "2016"], "2016", adj=c(1, 1), col="blue") matplot(a.ref, aYLL[wh, "F", , ], type="l", lty=1, col="red", lwd=1:2, ylim=c(0, 12), xlab="Age", ylab="Years lost to DM", yaxs="i") abline(v=50, h=1:10, col=gray(0.7)) text(90, 11, "Women", col="red", adj=1) text(40, aYLL[wh, "F", "40", "1996"], "1996", adj=c(0, 0), col="red") text(43, aYLL[wh, "F", "44", "2016"], "2016", adj=c(1, 1), col="red") } plyll("Imm") ################################################### ### code chunk number 10: tot ################################################### getOption("SweaveHooks")[["fig"]]() plyll("Tot") ################################################### ### code chunk number 11: sus ################################################### getOption("SweaveHooks")[["fig"]]() plyll("Sus") Epi/inst/doc/addLexis.pdf0000644000175100001440000043773514421664400015003 0ustar hornikusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 4077 /Filter /FlateDecode /N 82 /First 683 >> stream x\Ys8~_T *ĉ8d*Lڑ%GG '(5Ih|}¸ f"JD)bHj8%$)VbP&LhCUo<10IXH h5Pf$")\Mh^'pFMH2 Y %Q\}`LY J$--486Sq8+/ Ko0BCB#Z Lay(&P3e3Bj Ap.- !Qz@<5(,@fO( ՘OŮC )1ʒ b "(K #4дLAZ85 * 39(+ 7@YD5K~>tA@Y+60FcC n` &,PPF$0@HEd)afެG~>F OzwQ:N ??L_/?$<ǫ/ǽ7%nj=hg8ǮxB O&Yo6{<'\$귄$yvEfhO&-<~>LwUN&y?zNȫt6O3@NYHf K{hBnP,uTOM_o܉5Ox'kpĄpB# P/  @'20%??F e^xhxhȰN%(t8z"D'=8Г̥>Gl]bڿq38'h&w=+َM^1~MI?zrԀJ4ϲ' ,I):$L3;BzPNmU U /gYBz3f bca4cd*ؖPao'Cl4>Vtc>ԶiަW^A|e }9o;B?F/FAy/:873],W"7Fgu?nf}ҟq>-Mg +s+,Y)nS( ϗ5NΞB1lpw_@pp=}zC3zOtH舎xG:S:I1F̼lz0M1*wzq{ls  0Dx!jh`:w#!?,{t~2Ыo vӃ}h|m6nhXuRS]^,E81wY>=!_c `|58 N(q-4d`w`Ҕ lGX:yG XXR;ڴo{cGҸRZ3au|̥}.Xx85mcuaozFm&`i`6ah=.?]]~~ ͝cP!+Z#0suIKd@Щ]%(O',sGq ,!z`}&X'%1 vʀd KYTL(oH65ўLm ]Y=6U%L%5V%Ô v6g&ҒF31Ѱ"M\,L Nű(C1U"WoϺSj{VYSi}:|2x{4[iJ6A +F:l1>}6˰`״mBG^Z0qUşP$&-KխW-)[\F[0C`"XҘA%uUz$&GI,Fg9Kpn IBHJ#:ϦM,|#YA_{>ijv欽̇]?n(.hoPބ^Oz̥\'w6+nC?hn!)2k_!~̯;zI^fi9he kp>u7e[+VKK[3VzT7C3:I 5Ck:]N9f!LV?mSha7BU?ZZ"1v3 xaI-JOqgˆ{uΎSo2"|C ڲܓ|NzR[[if ݙ3eޱ((- *ԤֵTGN4 ep܁xo?|l ЗN=˄:жfva 0*P! h!,HJ.E2ql uq\{l׭EZEsm>iwI넷,)HZT<R4Cv5+ǝޮ?>뒧 6sTg- tཫ׫Gͬ7},/yonE덼Y62I.{^6|:}d4.qK ƖrF g*M(c\-r 2Җ`9Y^|~z{ aSmκC}A)pendstream endobj 84 0 obj << /Subtype /XML /Type /Metadata /Length 1388 >> stream GPL Ghostscript 10.00.0 2023-04-25T07:45:35+02:00 2023-04-25T07:45:35+02:00 LaTeX with hyperref endstream endobj 85 0 obj << /Type /ObjStm /Length 2796 /Filter /FlateDecode /N 82 /First 741 >> stream x[ko8w1( $NE?x%56 v)Q",:y9A % uDQG%\ljs8+ S k W`k,XxzV0J p|QNxIA$I<BC( 8 h-숤 nfH. cDB Hq& G:Šq@Q5Dio%<㈦@DmpΉ@a Pc8x#<Fkc:kC8g.[?j h0Y(+x% r GΠɒƒH0L" ;@T lJ1HM" 5/bA*PkQx$'L!\)?X̭DA8^Ez2ޭ,r2f!PE{} %QhF^cnD^ R?&zOqR?kv{/b/Hbde@.V ޒ~½֗ <|c׋mpm̛!kJ%|T+±(A,Gx32{}K| yěx0)xE% kz 0H9@ݶЌKSAxPF{lᵹN_vd! ;Abei9Rp+@Qӝ*ie*ԩ:]蹋#'rMO r<*R2@#Cl\H.hkďe4 %n`KtJxx6a5fܗ؆י,C[EvA]c spsZڔU /עoyOblE&2#̒9`E'8D?6ēL{c,>eB60^J2WTԦ*/}`rzpIPJ?PՎ@VTW 6 #bE)x1vjVosrybznelv{{b`sl#C vu.FYEp_%ucmyKN%E7Ԍ(> Q] u\gXu:W#:0 iEL l^)5O|㯐ǰhk!3t?;eASΐaB'EH"e=Z"[MʸdF.Mfu8!Ki1;wm%@)n ȡTau N3G( l<:Q]JwUPKFqg*ft6Q4s],E簳9>=9d"_++T)$-]=^{Hqo0%R4:l2Ҍ>/+U;u5ֳL%:x~5ޮⷳ~+?gݪ?bKmyf;7zr}Ͻav?VWO; H|ik&;oHwxp-}D,.J{vKTܤ>_|~Ѭn>C0]y~U_oEz?իz]ommx_=>b]p˭gi^n9C}l=_6ԯ /jyςW:_~?Q*Q~,Rgxr3u6fޤ'zr|GB N };.#J H6V&c2JFe< Lų?lh$-D!9KD) (370T$=RWP)<WpTBJ(t4 Olwn gmNNs^A#c\ ֧zo:Ң nW6TZαƃ؇y/%TeRR]Y)R@L >&.rwD|^o?-ۘ)bpDZF"8۔6uťA5pae0eL)ز26a*L kRh-i nG1s.+%,<727eDm4Ǚ5MZ㮲xaײOt0멄9eetUC7MZL/opFWRΛ&<)1>1 3&8~pt2:VAWjވ~[F)Q>1!*\=zhtBlu?Xn ;eQʿJ%nҒ_ΘxoĀ,oίƵDۘc[| ?QҠ  8mAo.pyYxHUɊ _5`yjxU%ӦZ3/)*|@6 mSyisͶiS:oɿCXxXx$rͷwJ\K~?z_ڝus\ߕ_VkX;]/j/<wbLWӰ> stream x[Ksܸ)RKbTZ6WJ=rhY-,EXU:@7'3FyXv:}۬d/go΄Y'<R%UfeǛ[r3ʄFRsh(&$"K7Bag5w\s=I $2n qxf,B,نڑ\;x%Y n"K e54@;pk-sfwrG@sgǫy]\5ZK =򹶰>B-$%pr tI#C^~1 -X֬{Yu:"31?SZmKYUNnϸRBD3`Aˣ#d|.sJ"8%lJzNe. }rD$=XH@]ǘP']f MY]_+WrQ0s)@8ETya0sgWnX-*Fr1`٭.p(3s* gDq\Tr]`DW %n5qAv¢$~f:oLiYΨQ)]Ϣr Jk4O%ϓY#ƁR5S0Bh"UC%-FRAJi?ÈRl1qyvd`NʫSK {Hk6#/<6)ŮY0^Grf^@hhGamS$%,iK\v8{;,'u͢5 g> ܃jx\xs\[ɢ785V\TpE.g퐎v^^",EYh ^w_./$,YX?^o#9oicUX 6ViCҸݺjҺLitzo"mia\:JQ^1'WX۴2ꀚ]qr/BԸE{<5.SlGdUQz hV{բ..Ew0s Bj^ Ԃ"f<y$ 1QV!b/V{!ȏ;K/^] Qcrʵ| ]ؿQ~wxg-Gf'P"0it@L/G,gԁ/W4Ji:@$!In `{+5JcdUHf9̵kBsm]knIy89g郇/`0>C02of{O*2:4XL-DW`H+ 4 ݀@=V!B2OH`Ը`MiQ6kF{D;RQE粶XÕyXB Q>{SDPE;Rǭ!dYoH|Z"$,buRYU pM|̳T =p p(ƍãuyu96bbVǝ5| L+QKՉD +i,dق(n-0"L^Ԑy@R^O c pR-H/w AϱNEv]bgt=:쎯TV;-z=4ƺs܏ukB󴅏~z4dr홮Hs}3T:D4ZezLkusR; .˘݇"-UZ@V~p$bKkIe ^A?f,ؚ QҊ/IGX㋈{46vS'MZvjGhshJ'㖻 d9JPHr0SNbۅcO9oέ*j51> 1A{$FN:nJ7.uQxo W¾nX)'ThkPxdah0x,⮩2-(5f1b5@?|躓*&Dq"~RZsXa&0iXIGavkEwI](I"s*+=rTD endstream endobj 169 0 obj << /Filter /FlateDecode /Length 3553 >> stream x[Ksd_|{Ħ0扙l9rJ+;VX ή@ i{TJb`_=uSdStUmn~"ٟ6_]_}Zds}rMKH˚mOW?/UY1ET[sMLUM.n/ЊT;uYU ] *믮Ss.@knT-xԃ*5,/ZH?C&e=N#zޭ?!$BZ^[Z ܧ.z5%۝K36OR+YLnV}s9YquE짮GqIJZ)7`2UF+x=x UgtIu]l!mMN)-k!{k<nַݺl7UθI!+*ўwxƛW{{ EqߛdD] Zov5_ f/)E6 ;$n!+^hEV u ۚu Lӂ-ػdM[p…ur+μ];4ۤt @qjwmzM}R֙hY4FhiC(֩RIX.IuP"+Z |^)k^m~j^#@lǭ"d" @:opOkiA9"usZj62T0Q<( Lo* l&Kݷ/Du qp_kJy)dfa5HSPpeĢ_@rjp(/'9/||QNf\c!͸Q+;>;QP%6<(5CxBԤ//FTBkX-dII,K.FT 2a2WM0Y~qƁr3 " @lSOdxă: $ T|j  "ض'F m7v,:(ܺ.5,tsR5Lwk.`QRB<`AWk{%=zD_]LalNxE$`%ZP"2p" ԑΤa(3hv&F`fvH4Zr. Xqq;I%c=p8v eZN'gQ31?s{z e^"s08I Q#xy^BD^Cs~k@+GvlMm,ًslu9)oL nbxp Ġ'`7.SeL3[b& AҘB9>Q0@Bk 师 '4wi \ee?C߇hz(/!4H"pO~6[d}㜐n+6W6q3~$L+Gu6˾?gzd,Q_o&=э]\RQb ͢#8OQ~'wY|! MaRßs~sN8y )\c8cPjcL%Qmk>TY ߌ$+Q`G ut'k0KmħYlb"LĶ~Nz?`\*4zmܢn= S9x䡮63 WpZk gNϋRt}Ŧ*9gӦ I4$x.ͮqDݺx 6A(Y61>ЯlCHȋ) E7%Mt{2SRpVrPp=+$Ē`~DQ'}w또%bE!Z[07I]?-G5dTp6[ K~;վ%>vz_$_m{wΆ3sR>]Gt!涂a&> stream xZmoFp@6fwh n(;ۥ[I㜤lQ,-p8`3yfC~].K_/g_~^g!Lm4]^-BԂ.R)K4_^W%)JɌ)mQ9Y [<XIK[5*X Z E~<|&WVU+TFpӼ/0J[[ZRÄ9[%cR#iWm/)%V0!SS'= B meQ a%eݳJ%t` L8B釪 MW?k)Ab[o6*zU)C4ڬ`%x#=ܭZ'X9`DQA>s]GY7  fSxoo(L9]KP;vӠF@<9- jhnfR"4,60WXM7=&AzK*>뫾(ߢ Yީn XhԪ2+ܵ~aJX cw @6 J D't\&'h%Kvbq0S dfo'K5$m?f;$BnB*݄q|G?d:2D\o 1/ #o7JcHg֔$fq*^sj |0R2)#N/[VApPBm5dYA%:m69Uɐx/8ĺ}<"8:3$C!s{3xL C ՗Ie6-'5֢vo1sPvkg.'R±BVnmv&Ay!6s3a?g'V(ȦqY%lI! ky]y\nVC /q_m\F3=D{C_ϰY-9YBIjSȇG9~`Ń\U:G%!p}VvycI$ NDd(gФpзOP)3_ n;_)R@b'KenaZPPvcKp =^nA]oy=!-3j$c#+bFS(EË ֹɗQIaď7}\D݉!?HVܞ;}=!D[K\H;.Y,2z2L{VfY&D[`Muס: @)sZA4e#0h:*8-J1%VNɿ[k# hV_Y8ƉÃ|WawA9WUA2uH>Z%(~Drgșģ677(V4LJπiQm_LHhJSvWeu}MjdG z^-0|W؍v86"7Jx?eͪol/\ݢ%H&wϙe_ ո[o:uJٟf a &9"z@w:[SyG|+HcH()['hӌ:!ZK&1 .|iYuZi0k^Z MQ}\;rQ)ޡ6a-"KjQsQіYSL' X%eX$K$gjjX{f=R2^$&U3KspI3q=f2ZR+]7ɹA"9XXdfТ2Ջ$Urhd_dz8ϳce9 f<3<-A 5ͳ~N&FYNfC<gxV3x3=G#:@jg33рչx6(-9<[T#̿8˳Y"!~J% Ŧn2l0 xHqw% :1'OJf=U*؈OSFkV_oooå0ln=z2h#/Ꮎn5P$+|ZU>Q\Mq $!mVh+Sgݦpqފ:tRsJ"˴ٕç86i[PǼmN=zYU1i3caos_N!'W|ݗ_f\m}ff>)s_dn&+6Itlߺc"&oF߆)[n v{SR|%\+Q =;H<Ѹ}+Fhl 4n(o(z> stream x[[o~_ a257;n8NBMTEFKQ+)*Kʒ}vΐ;mˆ \|>߇UINjx6}@l. 6$B!C˚AR5-h\uUq %8 QUjIkɋsWXHVjQV Z[^.k!kxg!,.Gkތ<*+Y^ ~(^Ea.SQ ,)UPlWšL/KΈGc.A 5  3T^r+$ wQ3_duqJU1]iby PWb=y'1_sAmỮ5Q6Gґ)F,@"T]T*M*FfP:s[ItbVrʋN;r3\)Q/QA`N"oЭБ<54Q8F` X^#ơI a~Hr?E)xou~g53sy`͝ѪZd 68E7aytܱ@M˙~% 2t; U3C?*A,Crgr\TR|L.a%M\|ZYDrtP)*7MF퐯CxYlp'߹vEQuo ; ʝFյPIB2-)aŋM-h%]TXw( h]ZyoFWuL*xs;P&xg]{8L{oտ]zG$2,Ȅ.ʌoDt`d c䲿\.MhWθ0"I%+Xw\bܛO+Z҄P^dNt|mez-sծ +ԧ %t8$׎4 r 1o~!ڒC=-ϻ 3G͛~D*Hn5;VnVZ%8Vn,67vdKt>vKHV=f.y\`5$#6&DZqn} Q~82 WPщ_=)}-Wc&}=f ؁ph\8S&%҇Va~Ό&_fN{BDAQԔ]LF ,%~ "ijy4w2:-/cyELITu?WpZk%G2Xv Rt> qR8:UpZ#qkK˫dX&d6P6s:ǃv3AZK`f96[BDqEӞ."g'jbi':} eŵ0cbP]lzēlMTEMM@w'+ [xz4дa5=_nWɂ(`CQJAGSbP`Xy d+\2\ou[=zL]?eJjѰ A~ \3#hYYHA;u.Q\=iO=9IeU^J0ڷΌu4,#oM :&iHͽ`NCe[JTM&v$]+$L<묶=`LFsAL4ט7mg6 Ƭ3`~g= {}+D[TSlX h3+}+(rK^}\$ʽMuh@9a(pDmQތ(ʩA^xΝ=9,JFv[g F{n$ <֝a:wˀΟF W=tif$‡-6aE FF$7  pEf5 f]?ˏQ6;cy>w k~vB/0>TL[&[ъPCyG2擾9U߿9藡{{s@~t U|[g/ =:8{^\Z_D u}۵a/6/ł'cgzse_d4#{u'Nd=r~B><:w=:_/Wvͫ{zCrk#}qK?\&&> stream xn[]ЗF=j#Nn"]?XAe[dy%%qP:\ C sp[BNvx?}@0.?^ /E+%^ :ԂSZ[b,^-]H0F n #,Q* )iy4nI+d4rcemѿ Pɭ_!,S cRJma7?9?] ~Qc!9)IkˁL4:h pGu]0Elki%S'ߚFcIul8SK y _ov9'phhCubu3Gӷ1z4ص<@H |F߾szv w0R\n6C[CnulS3Ňc0Em wG=y(UɘL>Y m)}Xtw$x`RW8YUaTE1Xg _z1@lq10dZ™`TFxM95 i0NPw%5ds\=rέd|:Y]H۪f9l_1B7r8┴\fuAqà@C)QÈǮ6=2[O7fbg;K,m֓e20>lk"gTwa]Msd;_=FB4+$W=_2M-]d;]e˴Eg{`)({[Z!N fc?Oٚ r˛ʋ,[0WgF4wY @g="l``_LV +'uӠ0b_7XY:HH Jc+P ӬWЏ6ls>BPT )3{%8qYcMY 8+V#[W A F c~)[L#"svƯR7*!) 5P: @\Mq8>p1O8$j`U,J4cm=ەʉȭBFJNs&m/8I.N~ܘ1[Sڊ 8y?EhS3jwZpr` <{3'L"cq"WY-ʡ,ēq "^ һQ ˸l"~\]`NLt >߱/G[ϕx0Łe\&F< : h+"&kQcO.422!Q)H,ejX ;S"Dw{?u,JRm&xC::1w+N#< ,pJA 9/gcqGٟ29T sױu&>^gMDJN;&Ou I; Ӽ(a8B KCIAOiHrl(lYb3Z`p*4FF-ScgnNhWUlYZr_iJ㗨[M_Q5nZ&*ut ΀8ʨd+]ȟ*-*zX돑a< CuouG}#B}*4jIm%uvW{rXTI"y nm\Som <(7Ę{`òC7usXR'a<;!22NX1IeĽX߶wun\+>Tf wǰHjQy*f1~ѝ?pN=o6 $5N|PXNAI÷[afqP _n< tL)DJ }==Pu'*enp  K|UZppZ!4, eTM>XAzkxDG^vj@7hF-f(a;SU;tw,}D>!f% X{eqj{ J_Ue\+'| 7/\.sDO/~*NT|卦v%]ǔU=GTL;p]YVyJG)و̏ݰ{&7r]S5P\}> stream xZKs7b.]%R*)+V t~}z^;=.ȴK*83_tO1阸q7]5|LimdQCZԆCֶ6frAj"1BW ׂUJ+pŕ\OHm3JT߫QdqfmMf|r?,kj#% ~^ՔUN+FK(Us*7P)SL.85ܡ^Ƈ8Bp6E] ^#٤;ً 迏0u5H X,F| ւojۆʪm#ؤs[Z؀""fg"ZCq. Uӥ~}-®rC`8׿V|t$ٮ7]AQ1 % 7i-Qnj^Ȫ8y:ڶvv~%U *j!o~79:hP4buƕ!e5c2c/h2׫ O^m~T(ʫj .~?K#v8 S;h,NLzNJ8AۈqV3HBl)LdKv$YvA.IaAū6)6pJ̪MLу"Tz޼\R$ R\[,V29k#`mkIJ鶝J0jw\;"=i@ΊVA4 ]vz VH9 3 w: ,,Ξ7 Q?A@ݦ#Ýui]l֛n#  Id,;CA;4<;RŬ`iWwB3ppW\gHթEب1t߹B6ѫO}VZ@p ÝapJŽiHqPtM M7N> *5^Jj-;'|/S:ܱMxaIBgOnF0x榑q {Cv-%OEmq.d`Һ"HC$,Y:$Mǎ|o;#U\ͦ[_;KkzgEaL/\cf@˜U%zH {0c CBe4ײbͪ/| k I[˗B{T_JϳSEerOry*I1'oa;(7OkDgkrXsM]c]&~mn~UYvn;]/GC CDG_۟ )GfO4uyC3%@[;,(LP WŜG`b$,=A%9áYf~~/LmibקɆPg3_BEE5mb #V~5ПP􊍉)s)i;mRf|+u G1F ̸7OC OpVTe4:C Y"1hOHa{aNtԼ $\^WT)oP;)P%*_9'd^}BDX sG }s|izVϚw?i|#r8Bݟipdڅ ̒@ Cd2ͳ/ꡘb,G5hoQ-Fh_m mb4wL BSH#G5ɅP΢(wM 0SB!Ae:+" ׾)/:`#ߡL `n' m, gh3cn1Иj}FKSsfc)=."Bz00 zנN72w5. . 5(3Qvǔ٤1O•RSæix\Lϔ?s`},ohNwW+2~EJ+j3O? hv>ACh]k%[Bվ|]=3os0]-]jH6۔p0ҝtW Jvgȸe,ܢ0 EkIDyfHn|?ﺃR t|gmk_wj8{b[tWJMzpS\X)ѧ?գT?(l_!э ^PW|bٿB*j|+ xvޕ{y܆3oh4ϛ>h>m|tu1R 2I,\V ŸoJtL+?yoO'[lӥH! ݋ 2G<)3pM~EXG%FzIQN="яL* =cF'byG>W srzn?,!p;zK.{0i`tp OS11|#` 1Iҽ!ZјDEDw 8$Տ48⌦pLT/3 >EwDnY&h??> >endstream endobj 174 0 obj << /Filter /FlateDecode /Length 2869 >> stream xZmo7pRwvM7hp`-m%ˑ֎ PZJr.`%g>3aaj ^ h3:lMN߾)Mr)t6С0TO3Ri PdJ0?Y $s;%N5J M@ @D*>\ F*`(ӜCh,AR+IfnXZiJV][ԾF*Bj/#O"j?hY@Y K߮}зO_XArrdv0T\z妍::<+Pg_.TҌu_z On">]K tYO:p94h"SId[/Kl(U$3j+Q&"]{C.I-W9pLEun,G̘wj$!8)VUQv y*,Wjʕd9srQ3n{^uXsѾ0_1N)!τdg6{ͨ̔,.WIHSH,P>6@Z 1];9*ډU9mȍ iJx!LUrw%;" 1mO6T24f<;= hAPif:!(/;ƤEZr#&/ ̣KKf$04TVj,ZNb)z^{Knd {l#S8*O+&չ%>]+479ƴ\}xڞD$OhW:#kmmҥ/E(S](LۺIo yS|ܕ)GG')GC4Yr+JUhQ>G;@nqk]WsgL;M xLd8<*I=P˔7lޔB~-'' 447XolJa[w:!{mI^IKk> ߵ%SB"tM" bNT'Ft:C+Xk^g{w0xUW':>$>)װp(p~8GDm N#i˃T{F\aI^&uh3;z_ߢ' Ӕ7G{~r|I M{5͑2x8NCG@Q;Cm_2wn0 iyӵ)&Ў%ȼKwzQ#-CyW'v*.u{4E0'vww JՏ=;%O7ph> stream xZIs/8._N Al$N吚UɁCQ:LRͿM5ΤR:@cyx]Y]ixU~vt_ow.v/T-;ŋj'.~"ˢd5&L`4-JUqMUIKMq]$, jʡ4M_\vZm0WνOƒWZN$(} Ԥk<)`~UM9lDx,ЖfXQshB :]& -8tEяkE'mp5p1Kh̀J҂*2⪮2T3?"1U zIdz4#{{@wb|C)\)lvs;h)*fo8 \{2avtג鑥}" />f(4h 8)miؤh!\eB}R|M{ zuE ,'_gFub :+Z"ss @xf ;x޹` b%hV2ehnK3 -Ϳ^ Iyˈ`tؽF}]agLp2qC>XjjU#9R朓IV(fM2۷h݈kZ+8|M crF5>1s9q>7ל4hoj㌅3&^ dY(M3^/+gcօR:ȬZ1)jxJ0>` 5XUg\"/d: dOeG"Y B|) i907;FϢ;1c $b 7̏&2[60J>:h{;0ʠ| c[$n/":]-ɜuߪ`sx4/ɕ$Kk4`lE!(Z,K,_4Q#bH\PÄڀhS?MV@hlcu)q /%Wt?TJ "{c)U2:7 ~7yx{pG(!}㔔+ trw@KoLO\ٺS ('1XFX+EYBYhNW/;KMiadb'zM KBU#-z#!eM]@0k]N1'!:D%> 0Ą/+1ebhT_.>f*G˄rS׎ب9>ɖRY1S-ڵX9ɩ.\l\8~|YSڗcMvPHN=c*Q$OM ㍸5s"!P4*\;4GWMBl~tXE7T'D ZHAX+/IZy3PPqJ\ruzWi>;K9S?9ӛuʃ*;!,WZ<:-AK&82 7 \Cn$5IJْMlY+S\)o*0{Ar.IҵaV}1ݫZ;b{ʠȨ=~e/ytcZV_idA+ ^D)*9B6%,c:ķ08CV}>wCx=.0-)wϦ{̵DƊ%?|Y{߯׶ Y~=)7? -vT65@%Lȳ'1ьH ?RiCd/jw`,׺-:> *Ep᪮6i}*$]YYoJ2;U&;^c@{d/)Ӝ"]~{"༲?LxKs<&E1F_Bu6l VĠn|szd:uV: 9|;.?_7kE\>AI:K+bd>T,1@d_ 0Yr7]megN6Gg><, 6;4 >[7ʾhC: ! CNB~-_Ӛ )0ͥk00p͵^mS45EPࢬ)ntE;䕁o~*}<`i &Zr*tW?aJ,|):9&pL0&m\Md]jOxu:~CPc{9y*Х%bvL3:ghe)#e*!;1TI8U6(;GU̼8ڻm4( Il{ʼ`z82rz:jT24+E&KK&0|cŒy:SG-1dfU$wgtz۴sNzOܬwK$::P?Fendstream endobj 176 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2780 >> stream xViXS!枫PmöZv3PQQA9ٙCA 8P9[cmEjE_ޥ_Mg_nw{uoFMlb[\b,D2;ֿJ?Te:V=K`,X^#Q 8BNtZq]?k+DKхII HQWYO>yn>PwY8Ga^v< #FO(r]Ɇ%JC\-N/ZAƟj]5AQ*Zz4e&|`QR0_>ve?6qE* rRVEEIk9rb5T)Yqi9 vX?6P)bfUhMʢe*zw6փ';/xw>ގNM\'3GG/'ZA{< O9`'JׯgN EY9,k\;=6΋]w 4OJg|g9@aPZ2z=Sq(y݊3u`uP^ dڥZNt _bt>y $rzCҀS8}@G8bF&@ȷ_.P*rIoiV+JI*4jN@ҫ:@BSWғ\o ƝݥKIc-CgՉk\T:z)-%-^4<feqf?9l)1Qn4ט;NxU)q[_v3˃?e`;P 6$vx: ?ƶnHr%+ԍ/03닠Z#+?;1<,\k^wH5RC_%B;A_gނ'AVW4Pe1!PZt6*,|si+5PTuvH;.dC25ekNPE! RQiǼRkXIj\u]u)abP8bkg߮;J[c|W+b () _U*L"e? }WUd+ ,w 'v78vES|s%P];Z ) bu%`GE+ʓeAVNsz2;{.wթ926"O7Z81T[~k[ndudb5LHj?xK5Uo'8Fʻۋ+9"9m4f7?۔#$~&?&`QYY"IO.LjGۯt.ʢf24Rϯ/x{|/EZ2 {~[tT41NL_Y/ao♼)\j7 iM n:K^.9kP,/(LI\ُ+zP&ad ĔPxkw%Zy6 b<}ee[-z /D2]8 CښjTTz%KJ23iզ.$_x#8ن6'&? E0Ye6V1&to/D;rIݒt 9hި7[!![\Oىap#o>#c:m_@%Xj̿|qGבmL<a 7SƆS U`0 qCN;X+˹iZ ^Aee \K;lM6PRr.,L$hqMImҀIo¥9 QH="J}q. nH$c3m˝ӖB Wkt``W6frZ{-SN(*4h=jMT)#S"XrNrgW:ĎU cȇ}_=6w:#CF-^0,&\Pz%(/C: AJ6Dm>7t fnu{/ SG y>> stream xU p8?Dn{r 2UDCAE%6Hw^W$(C,8ҁ)B9˴ 33;;'!F"$ɘ5K׮=gd$ oKJPN<onL8=D jMߞI/ӈ_kD%QEH<=aތGf2kKٍYլD$ DPL*zE]1o`iDhj #lUk*7ŘM&nVv:D* O"xopxhey[w^4+aG ,!clȨrvzKwMf"fˎZmګo99a=#7gb;?)i[g{=vaF9)?CJpeNz m3tpn$Ŝ<} ģ\2n 6@1gTơԵYb@EgkNx/5b3ٴ%]axe[%iQipCod@{8󖀒)Teld2T^ey: bm+fgWu=.MRcC]Cۇ҃ o!|kg4oNYŖŦՆ ST9\ 8,$m\6P5?τPF]+H& dѪm-ۆlʤ[4'_ptk_P |"}NqNk? UzsXV!%\=xթ_{]nn23bºS rT~O#L+ŢcZMԖL N\H02eV7 Z#` ){;3M;2 C>!~K(=;=|"pwT(ħt @EG5U310S+<8MJHEN ΊTfVq k笩FEG]绝um ;evUI6jDhLZp1WD{+KDBR#tDFJ4z/EL4[ $P ~I٨ZohnJU'Ǔƀ~ !s׳xJ?}y)(4XY$LG:%%EDK&,! zaz0XȾ#lyOR2 =\hsj8Oӳq}tAHkr|$v&B:n%aY 6) !45b-~C`UԨ7г~ 9fgZPW ceuV6~%;< ߡ*(_oҌ 045.qy qICkmIGK~vqi:tS( ]m$ܱ5mjiR;v{+ % zWW6gu&I.YzavՇyrye%8#1֙{NYlA" ~DAֻZ߯\Cv֞?/J"E]R-ĵ9bZՅXy 6x 0&]kj.Ic X:.g=奢ֿZ*xcxG)zqXidaT:އJe??endstream endobj 178 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2961 >> stream xVytT~!}yg$Viq)V%@Dl!dfK2s'[2! " 1 dDh&Rpby; iOg93Fd #҆/d)S~ E.tL2nF}=ck\ņʼkjs_UkJזѧb!Kb1( D1x#!fsD>1xX@E!r8$4Ka[iFILHQ$urx #|ad"~ԤQQGOуH'È]Џ d.Ye u,nq(Z,`!#AG3srpH{Id聗ajC4u i"mA?L9(Fh?7J{q#h4A;urgL9`i%̊U 41Qۡ49yd0M' ;l~2*tGUЈhw,}h8e5 y̗O}A,>}IcLd11C-(&{Q׿\WrüLRm;#-.L{GɌ`Ԝ_f/0KfHD*)pZyJ3ԏ; TȾڏӿ{:u)Sd,Qz1v:jta:,NNGPuyA! OrFT7|BBՁ/DxTSqF+ΛǣR@ Ba;\&Cj R7A !d%г ph-Rbˌi]2mb 'պ3SnJkХ~%Y= t7gh7,,þ}]x)V`x^5ot G(-Ckwk߇Թ|ux-stw=zwg_ff=`=1TާPyU=&X! 1C:=ۣHum)\Myn{9ZuufG2Ahvnڙ[t&Ф~d:%`5BJqҀ)^7޲#:vt1ky9 ,U()XfP5z mqѧndŹZZ 8,)H*FŠPU;n#c+œ4')a-c_AtZ]x0cF_38KB#lНK濶~AdT5.D~ĥ6F57 3PI]] _׉=ޭ UBuPȶ)plJc,ZH6Kߺ𬎹>[/ )pfi6-itt5^Jw88V|]-&>OOKiZ _0{Zԃ`>WDQ )18 #qhlJLc)Jp E ]c 8l1`ؗK E?̐ɧ2̧J6^Q \n2Y& kgrA߀^w^>HpwDvܹ. KI2 })U33Be^>̊K1𺁫 O=Kj,ZatBmɢO E/؃~HK=F" zD8+%;˶,@JD9:wCԯ7k:|b5,[+Q5(k$xci#ߑwөu݇QYwѾ=|;{xqWxën^%Cj]Yղ*qUP E/X8hK7r3NeYәL{y}D`U& JFmt@ ߢ 7 k}*k6ؾk|3~̛HD> stream xyxWaYQ0̄$@ L 5)pbK.Տdٲe)1$x l*IHýGݻ{w{xlI3|(< aճfϜa|22["X bpIH #GE,[[8+:{IRBnqkٛ>eCƴM?3fzt_K/2wQ,2 $O눧7zbLl$!b)&Yb3XDl%ӈX"Nl#3LbXA! 'V/Ke"NHb1$x"b E%# H!OCÆq- vqA=MO[$Mn&R {ì#ƍЍ6R:QQ&2G*,G<1(!cb쯏M}L3n丝21hc&O`pɔ'}jSG-lZbo`\ El)K_S[]Fgm-Ʒ&9(xtY4Zd.*W4ynZcTUB[\"Z,GkV5}7.=H{xMLhMq0H\ XME\^5W`PGZnw׭Qd} I(`w^vyH]1 ?h @ɵ f*rvg[NTwھ?FB6ums_fX84kB _RQ883KpmVenYNKB9, H`aSAGV*=ffn& 4Mf٧>L(W}|g #‡ʬdG̚V,Whz -A&tk )w@!`2Ƌ_- ܄od#DZDr>lP+Ԭ#T}|@)W2w.s4&ZCm PJhY C.{1LM7[`a.rLW2PwN %:f!*Zks[Riu9yУ^ˠ$HקUf:]x[+NgGA4< &yC ֪H48+#[K$F vIm5pj .Aɸ6B3ȤteZaa[wJy?l#[L-tS1 XC֢TD?lTSIN`09o@3y_瓀lP(T6nƈ6GeJXiՖjl#QYYݙW4V(i&$OKgEi-ϙdS2fZ{ݧд(S i*my{W/j5L ȲsWd-tlاZWZlkeu<'8{ 9-@הmLjbbjJpM֪Qgu<@p;:}w `ys#I(:=H p4gsۍ-)}XKMSt804dHЗ'_Y97U^wUjĕ|& 9setҖ~xn4 4 7o9PYf2vIy&bYIxʝsHT]W)fE@*,)Q!,&kqA@P/ JO^$C`Y#J SDYDPdwmw ݩo0O@kHr Tc(sO;=?‘ Dm]ŏetF8|㪷x{S $ܐW)^GA~4e()Bf%!+?Y vmfLFT:OZJ-uL0e˥}Hs;Li`[6mK!6cjR&w֭BPlϳRz N@Dy qڢ>I2SUn; aR\ 5T{}ʺ;V/pD!cmF]>;,&{ LjHjdM[6jB2vN-GR̈_dʛCWQ9rb7#~mД虳ha4$ThUh0+gr%VgkYsjlg@>ƒU!?OkDq(a{|cx`;W1eZ }C8Q(rFCV+* M&6'%so&YZpuK_lhWJ=6,x2T2ï*Fow1 Pv2NZ"!32G "чouqy-^@PW  ~؅ۯ^Z<r |p@V< K(v7if{JC%t+WQ ;OMqRW"y鄭9Gv(yyD}?08]dʿ٥fSACQċ( Qsd/(jed &`JHUsvnOI ïOxK}M髹~{Sѡ&"_| I"y$z x 0n\.eנm8&*U:80"Z32Nκ{յs6W5qJ4+PS- )ֹ!4~Zu0[1*O0N5 ASycyCMSiTE (AeY=Ûb5"Z)҉(1yE}uc=5 ձjeƨ1J|S$RsiΤŎ w>D#^_cJu2&R:mIma?Q8 ƈ;'3^З)ҲJL}";%t ipmrR_+U\0v2)[NeUwu]ni%W)EtxTc{.{`qJw:!r$s Ofx'Ћc``9 #πy]L`}|n>uJeRCvQ禤@ѣ_|GsQ=ϖg䁬 #Єӓz}ąUdm~}k>ݶ5 6.C~#`/vWė( y9&8|n@&llx$4KF_{QwV}hES#[vwb?{Af+q/G6qe$!93k*Jx2n7q<4_d\ ƥuYr% < ,VRrd0ѕRԙUFd:%oYJ/U4\! )^'B9*'A@qgv\6PKqn;{c T0_\\3_?լw3{Y'{q ZmjQ&c{] ZgaYYh75m4<ebVd[*p{pueGHVTH-( o%fBEP qGHӾt|q "҆W̔4vھ|kƹvz;@ɰvNLb^XV5;$NYߞ+T \/Qh% ӣN9 ($stmC} Y!çaV~r =sM5*JLRKUp;py^~iMGIR@)aIhn ^@Ž=pX" (uNj\ ҕ)Ex_KjED4< H@UJRm,Nl(YjS1PGtB}I'"맿si9V~_KmJБߛ߼}L"p |z;~ h"?Is+E5^wE-c$/-kظpVdZ& 0}-N\T4j%V+Wʤ5':}+Gvٻ[2rr2rki_/- }B.X#]ĜoSt4d+ c` "hkٞV\!1 dFĨj%P͍+#vI}P-9T7箧9Z/h4I‚ʹ2i#lmmnt* NT*L٥[ghM_3z;@F"wcn( w:!JQ,p}J< -ڡR)w8V ]cmye%Lc`z~漽{2v*"Jmynh ^7wvjꡗLLT&JzP^\Ij+]VP$Vq--!G-K15 =p^ Q.Nu_:-gG_?q+3 s|!lnD ^T{>U%ۍELO8vTՋ_?S0YC̙7)TOI7|5L3JRT;y{_PRZn@ӁN@Y(,K/H/w:W{Xr؋nhTATU&gMkuo8 PE6ĹYa](agn;p(؃ozն:&^\kP<~K] +֢Q סp?~X|?S?FC ElZLB:k P'jmbJAGДqxVu?"Xz_ᦣJ]":Něla'So " }}ZLU K93 7N_1esX-*ClIkz6Qyp sudtڒu( &|K 8~ t Jna{C%N,‹Nzch vBO +^^`qPp߿wo]c{Vkjtl໥[R=鵪/&jZ$- h~sIVrx'NIV~Ֆ6z YcwSoܾt~jmp#0-~3a}"(SP8;)p8Mg0i!TA?}ߩY[ux߼!*~ h?@[=c8!OoYTCS2!K Yx>H*(씕4;i4C̬2 rE4?I8 =YbyqQIF -}w"p?"Ъ3hF5_ltdzed8, 57h8b W4.K0z_ru/ h3⋳S7giT6jÍ7Ϸ7k̇(#h;ge>ou+qg) G=M֯ 8'IW)<ޤFb+; DЫ4ҳh8?+J(*U4!TfrpD|W\A(IeR-.tZ9oo05JGT2)ȧ hUm{b:)4୰ 'S0㪋@!(0g>Q ]Z(=X1D @D$Aތ]4endstream endobj 180 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5014 >> stream xX t՚RU쐲I0*E!@Ea!$ݷ;}_ !$J$@d0χ<sfnwH̙9sZo6x5d좢'4)G 'Qi 4pXgpjavDHVp 0MNc"±_oX4ٸXoқWkR:gD f`4!( ],trI27'녋zsAzD8бW{?]S{9 1NO8pL m-x6@K1Hy4#~v!~Z-]dz yN^텲(_ nVHeHI(s^"_>;RRFɻ /p0| -Fx7xkoȾhR2+yOf~5> 'KaC= ~&aTÏ<^&6s|#ϼ<)/&5T0ޛz$uFr@jW/_pY`cz҅y۹E\j$Fs%Y=8?ri=<[}P{^@n 8Xn3_O%n=G@yK%:_yzf+x] ~Op?w%72^." g1 H%?9}¡gflRIp2R/ ᅯI0~=MQWq'%(yoK _K}>=G`"9a?ܶH5I ]/{ޕh}w7̊,Ӎ۩tVVglv1*9AXeUB>e0@;2)bq?J_$@T>Dњf!^4boNTGu _qjf4ZbcЍ!r8/Xp< }9 WH94P ~JTZܫDIm,&g `4E !WPl( L#@R 5% &wmy}ś-O­i4 yԏ@!t+u,X_s_1iImhКC[ %2f2 hzRQ~'dVaubs|D; ?j8aF&zѶe`uhϦ5cN8nWm!x/=YTDMpzW*lVћׄ.~p]--",X/|7>%W5R63pmQ;9dR/ D*jQR)IX p]OWXv㔆e*ݩi]j7`+(T4v:DRMݍQ: 9Xf< dBgr\9̯ũ/m^P~;#IR#Nud_9x$h*]bQ*4r PlHx6]CdQ;=q囦+6)d9cQnƂGqRNJsJB.|.5RƬ1@37Qjb%gYq'Zj*6XHy%ASH1.Zb@gZy>AKVVpԚk8Z0yI|}a#BW❎{1 l1(3ZdM>F}^H!.E a2bNQ#8bG(+ʱWy*GKNDNtT{$]s@ը HK%5~mP%-򻼑D>6ۜ6'RI'gVP 62-Zyzԧ0|[1͠GkT0Rf2Q x+peDt]JwSq! 7gd'-gOm1:Hs=]F4mFSJ@Kr>z1]Gezeư!o>-"OƔ8z[SpZ-|ny6jHSVՁz^9Nރl~mY~ ίutWHvGS0XfX;fAAic~g,TfZ1VEJ- Wz<ܡl:զjsuQ峯`Ԁtج'SXj\J ch8nO,-\\^+$? 08vx12*,RNCs[6)փϫ/.{T,d [ xMKYga쳙U4ȵ,G~G N j KJQѷѳy\((\]ogl=hĹĹ-` Zn*wdҝ1 `2lzHT(-1if!^7E_T|.Ka)d1Ϊu )ĐdnIXj 탟Bl!ˏl|~V`BA[邼‘>{VًI.Yl^t魴>_[Jx߹;Нݹecl.ԠCM#-t*&cno(qW0kN=.4KBzwP/˅\eTܐuSTp}q6JO?}ΙY ТڒȚ6A}%/{hV)om'uyh) y4cBG8$l6+ȹ 6aa- UK ?TGsf.^؅9zll h')Q޵RILμPISS6LM&vX˥5Bq@tߺ H/NbIW>_'XeJ%a} 'bǸߍ|F-gUc/JZ{jFkq3Ƞ6>w$c`*D\;)==6D]R/ hN?KDcR1AZqT!s㓤<д"a7iKtx,5/ͥ0.K~,8WHU)X'IDeƒ["g;_-ɌR&Ӡ,kmq7E~x&Ac:h7Ht{Qx#I}+j \ǣەqkWVnݕu`*}u'BG]-JM?2Ut2"ʿ=ZA;vĪj)]ܦ߆]Q {7_MEI~A8z1g7X*zjʯ;sR3p@HRX{;%ijFMV=ћu\ )d~"XPЀ{1#dvn2_0z\5(e2\.2RSZ!dv#so!-_; 8%."MXdB"(%+UM^xigVO6}٬o;2ZS-r7 +b + fC|Vzd> ߆9yTf`|N2gߺ~Ut #ٞÇCa`x.'dendstream endobj 181 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4431 >> stream xXgt׶ ńxX@2!H K^BhcL16mq/d[}Z{nd`z ZI!Ӹ$GqV(&wuZO!}o#CxQ[g]$w,h_pq"4&4C+z6SV-!"cg%xp.o?w}_Ɇ\AfPVm#Lr!ӃMc'HXLh0A2ҴݹɾhJAGh t`2 'FQO8\A1?=c+L>w hC/1gn}+7Q$X%1ah쇳1r/ݡXoQD7" Dnp8^m7&Rz[=p5fE"2Nf뎒GXԊSLOG[)$Ȅ"D5@LL Ria \7[,@KgYvg LŕTk:ES(Хq uѧ.y(סїx$K$Q$73 x=zm֠^ Er] Lv:>Ob6Ƈ DC0m<ݿ]5u]3Y*JsÖ)Qӷs2@T?VЪmV0xG? !c:xx6h ~D- C|My]t) '(8o~TfiCp(5Ѩ2*u ˸bBH K sAqMcr͛oWWEQ]&̖_Cv G49Rim%lmVM!Ά wvty۱n}+B}?@z.h<|owlxp_[(eֵ>שzB\^c} TL_O_X+S^_e5,Ϋ-Op)K[Kb7hѷ/l\n8^ymRA7L/SPn_{Eд\9TMꇋM2\iK3喲RqnA&,3nR9( jrk޿\|:״4ChedtzLMpu-J24Y؏,};8[uN.ܴ^/Y^37RLkO8–m{SJ8kt_cI}(134"Φ!אӂG2eŒC7,TLW(jwą=8Vb;:Vo5r1_ieξxlIVrǟ+y?/Y)phsSm*gylV%j--+h -9<:ލEh\s M/(^wnzXKI8IPl+ڂX@gB4sx_M;pxE߭SW5ٳztɺ$HMQK$qq1-RܠGJ7$Bs6'm>UI7b3KQg3]*g%M1KJWŸўR7B1]]~o_I_RbPH=v_D*DڰxTC&'{o9N0ݕ}`˕޶Gώ 8OA炘,glfZYy.. DxuA"tQ=@2_]KPB:8kȭIl XQRB3~\ҝh`Dh= ߸gy֐rs!+#T,-عAj~׼"PrJ~ s>?~z̳GȿKx1oT$b~Eڛ{q )ig<\BXEriܣфw1-d~Yl fRMm';/.,`MƬ2*8{Q"/*,pD) B'r_dFiM^Qv ckA]JU>kֶٿ:چFOE npB%,&7ɍɮ.k>Xupق9{ogW-0v\)C4#!8C34mKP']8& :" 4q$i2 ?J8MqrF[97Aá1Iݙj !1~Pte)Wctt#73?y fXʴޖ$s$J2B^LY/o[;> b*1?!7!7=)3Eq4Ql9#z zZ҅\K^9[oN|¡glJ l^gMZi"s4F0de9s\(zھ@>350Goª5*JA)dVeVfVWshY> stream x+T03T0A(eUeURɹ N!\A zF !i\- z&&F z@\.L͐,.@ (9endstream endobj 183 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3166 >> stream xuV XSg>!rίPSh=K]QuR*" aM lar%dc]ÖjXDĭNG޶t>mR9>{^;>s'ϓ{@01"tݞſ[c:p<BPs O??}MKؐz4[w(>dG# /yc)A$ˆD81 ;]bXOl B& b3b+x"hb!"^ (ߞ +VE 'wsj%Չ':&)' D(.ҟ䟅 n퍑 \ݢDDj+ ⪶֪61ZdS5n{3V˂ fE^#5D]͚HD۱ 1&(r4ِK!FxO';/Kۂ.Ƃ]0Qb3EjkѤ/(rp1iphtлbn |[zo% 6ƽy}W'`}[M&XwM`\ !6x)# nmz`_e%\o8}]òKI'p HOwYㄛp.ڲJBʦ`oyXJ|vZ,VKVA =Ưٽ#$^=g  ~p?a-O?R}gܲz.G! `mymA]<`{.㈧/]P˱{BJa\7pzFXT-~HUj-eP̔Jʨ2dzkV7q6ȿ)*/I!mzG4~ZS^1 Z!^@O(RUU&3c6h2Wb-͍#A$.<LMg0i'\ i#K{P/ ɠ,{{WrxE8%D}w[ %Pp,&{ީsM2} hh465?1՚j HOd&~W4okA~}փ &oKvm"e* b bccB4r\SIn>$^&O& Z EGA7>d 'ٍV%/fBZݑ[bW"L03"N(r W 9e,Id)"{7Ewmd$}!܃ |WLJյ:mm&nAc`d-e斅X  \f9' )I-OdcT#~qkq;V뇃 7=rJl+~P§C7I>.S\EɭR45C+ְ¸h&@fۚ6ɻ .NG֨Աd!helInTtVcG<O鰩m'6`A-79C ;G쁽pKͮS ^P5?vhא\cI=߈Ig쌁5:XZZy0*# @Rӑzԧx:|Wpt+^dzb1%Xޟ\ܜⳑ!?4]BoT9yRy(&; "awѳy~8Z'|ݷw]<*ݎW~6ڎ {zp;q(? $ i!@?8kxFW_u}j$D'C@ u\;y鎙5 \>oBWVZݡS+@ fGZsZZjiQ6êJ -YU) F7^?0+!S*rNscz&h5E5oCJjKn1"ukQod7ʪl,b VKD1|FxeJ]% {q6M/c u8; ; 6l!7x Qj+ƽ69C\E.߆?= = =Z~~OуML5y!T2 KՌ&%+-OV_dX@O >q}cסEܧ"졪tպj p[c;iJEyP%ɈKQ||ט8OJ|~=훥 Tk&]ݥ1{{w1BnߤfҚyˑLШA;O8@xJQ>W"++F:]:JJ-z_|pQAހ[Ԋ} ?7WEg$~W,woxZ/廂'(y~+';S1 Nkz'c{1q2T)We-FKCPCt" ~MO-#U(+)c"3T}d?^[0;nL zDm<_ Y%.[#6oۮR!wՆ,] h!09w`?Cif-a3;:Vtri%.V+ԇ^"^xcQS3i֌5SUѕPR:Ikto~ 7X//C'h;|@"QLbу%]ܱ}tpKJ\bTĚlmuvmJ6<(A=fd`sdfzuDD [8endstream endobj 184 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2331 >> stream xUV pTKsoBە*Hm*Cj!H!dw߯{77ĤixQR%#TҎ=Nۓ3w*BDʵ֭kX&fC,/ٿ+`u.Oja3ߝ j7sў%mn;令9ԓf⮃򥾼@q4 Sr!;̌|Hԣr:K'o\8\?ҚsBco;qx#}yZB4dz\8c$ߙ%-5(3AR(ֳ4&9ʕ!]" IC?DuHZxPsW_ۺSxW?10< >Kf'91z~gJ0+46nWvv[苊} #ollv$ lA\7Hغ`kޥ=RY?d(b>3oCHl6 [ ~3KTgPRRwsڔGjE$Lڭ =ZŝXȅMg^?,nH ru%)/mnAk2OCfEv$dRXDǣxxYHie|x7tB<2}MYtgAWUUU(ԨS Sy}$ dJ/HIjzz4zqy=nUts/ 1WX4Kb+\5UL!R EEi44k2eofqGBg[AgLk߱es۠bvvvv fլn i翘'RPf>92j2= qN_ aAsNrA,N rk)ҩp0I%=`u@!M|́Q%*7Wлv!E Os sx y@.x̟#RLTUHq#F ^?~rjC 5j=F*p'sQ\>ڏb/Ooz#I"'}^kloha4Qεg~yI\?*POA=x/tOvV2 *qNB,u6ih:1O $q$ D_֏TF1鸯uC|ͤ7|E<"|?; 05AUCsM^]݇sD"pTa \Yr[X~ ;v3&nյCFY s+e'z8 BriPŭ_@,;7Sk ; A"K@&"whmfZe{.F.[jIV4RnplKHV\+v IR,8D -msGbO~]xn9l.~.JYVV4eڋ$RQ;@*LHMhBWAʥpАOyĔQ%R T֕M'<;Qf:9Kn^!_-vE.Y]Gž\O[xi>l9li\UYJX]/R endstream endobj 185 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1979 >> stream xUUyp^Y = dV 4fB)M)4 Ps!|@I,˺VOJd@dm|a.p&' Sڤ-0M;+f+H:d}3;zlV&/˥Kd?n3JgCrgE^@Ă;|4XЬPUT-ư"+JX[cVl>6cJA!? Y͊V;//OP_ؼooaxfq\L+Bnf^Z9k]. ѧۋs2X"j:@e렯ϗ\>5Ҁ\3/uE  9sڡW KB ](7SGrX WU  x7 1c2L@w=RfH4uߝY]W~Q1G +=#vF%TTkkXwܽ/>?^=^s>DS' Z@ }!ћ:_һ~[fm(R+2fakd=P J&H9Ԫ$D].u39@+IzOMN@sgR;c'v=(un?k,^@A H$i ec~9(f85x=K$A lN d5}T@ƣ=E?fxk4,Q- *:~G"C!_"$l܍S/iA;h8Ptw ^2Rl-ݦ+3K [#4-wq63bO:o“Mنk$d\*Fa#ad|6ep-1bw$?dMRwtG9RT 'kz>5itcqŋC96$z{[ K&`3)

1M+dk~}IK l/<ؼ{J6[+X_ qoTkVqq/!Xp48q6vO8 Q@VL 3RMҽ;n)pUN<^_M2V0`$Xhck7>Hj>b44kRr(++KF9wZ<|_xY.lJALJLN&Bd,T9,[]}d F|#bP}r׃ar+RAj-FadRsAռUҨmq5 D.F/ƒc4xyd<ˬ툐-c91GA4* a5F+ߟ`x1˘$|◟J׾ĽQ~ƕ37X?>F򖈤$Gn ^Ta*(-|P@ "AZEc7G7:d:%ss,p0N_Bw-'M !b-_u`k@w/P=7C|G{L\ Dg?K5Y6[Rǣ267 .#&w%M&4 S:9%Rڰ ϛY\apUȝ ??fendstream endobj 186 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 9698 >> stream xŚ te;T *жtV"( .&fKwWo!!aQVe7qt\pd\ftmo1j;s99'P]>qyQGGpLJq؟E3Ϊyvvݜ "d+mtK^[Z\RleՕU7<ثD$œSz}p<д_8ARTh2rC9+9c98pVsp^ęYϙy3g.g"gg>gg2g!g eSE99K8L əιs7ggg8g#gUsϹ3#)sFqnq 8q0.;8C8QhП6߶ks/^}{sEk=xpD~|ws]raZog='{\*~<ꛢSMW~GT_vo?Pw1oKcxh?=-׍}^zcۏql{%#>;u/kPk$TH&xcá;Rxń{o!{|mn 1†)I2 VcՍ$btLb#h0A~p֖TIC iPj?tLӮ3&w h?XsTE)K\G{lˇ̚%&R)EV% ^ʍ_',r5ŴRɀQt:%9eVnp&'v:BaǰX*Ie4ڌEE=%{-cp I\1eHj4ZME0T69InwS3% Kזo_^ܨ3+VDt Zx[\n( V 7.?=\= *4iP!a߃;-mg2wKO$jJ' 5RN~Vѓ~~ܜ{NH/|yRysaO`s>|7Tc3Xx7w?2?0kg>0+~v;g~}9X LV307z>Ϛŭ5g0Sd0s)Ύ_EEލ*d|Tgo`F h9qwfo幫2Ce;|ۄJTAURYYQe;`#|?~B$9)$3 sguxoDg3˅&B")YLTS:KUq8"4 jf(W7aI"c6=`\G wȢ"B# !"1SfM`nQ^]S[.FP&ց&e^KH X3&g\kvZ+sy%\N |㥐D V K,XXvo 8'878ǮJgMtt*nzKqaŎ -xBwR/&x zt?cVb<;yhI`mm) 4@m1c/ӄ;# ۜ]ۜWivoߜ:'haUg6 VS@2 InLJu<=̜SH7wۭjڪҠ4+m,0*HER l\^$ӎ= gdKIעDɱ̪gm|@!"Qq~r )Mp&#gۜIW$ K/ P)12nf!77Zj%K ^![7B]jnc&Cʁa@!%ӈYP ҈<, /FT}ZI[em&ivZ]J;;:::=;,hoc T`L+F&}ćPd%͠5j, !֤oB/U&˛KceafzD)+-+)/6LF &pXK(w/^S=RquP^~b{9bkNqa봶"Ͳa~w9pxߘI7".|&dU| "\Z{@`j@ۊ8Z CضQw9\myiB Bh1a-B"HELQIvJdl@LBeWkϤ?6 NK 7-Y ޜ~5 Ep??O»áoû{$ C-{'lj4$xN\l۴jf1c)`2/"^x§ zU}I1W T7D25^܄B!r_Ұ&N~Js> mUJgUwnx]jhaeroγgF9Hʦh? *H Y%C."bve*盵FEcV:l> sA")ߏ" I-3s[t (d1<ŵܩzps7a5X c\j$q")~/;S`b >xK 2Aڙ Eآ*jK.? .ݧjZ43@W`"$ėl{فC6"BB$A0cw2cowG8 IGjvC(w0Fn`I:|D{Dmw]N1"0햺Gw $˪ӭg 'Zlˇj>˶=g̽L~~n@Wy%!D.C">k~s\@V\[L:l2mOߓɻK[[,eu͚ SSTϘM,1.󭻪j1gKO/ ] G^Ux?1&lLBڊvPm=<.6o <J kiJE)}{T(ϕ[q1o&6Def_2~`"'2v+#n\ VטKU`1h$RdϺQ u9u4r%>Όvx2x_՟C'`E_$c::DŽd, xdK۴9ICnUAa&J)VhդBf[0]չp{N `N|v%Hau6V6* ZrI|R0!׭vze ~S,O4|fƕ/]Gsĉ`L%(̨jN=ci8Rp\ATP'0؀zxi }#_/ [2!Tj$l˿ ?"yq'9_i)6I,-5g%O2 5$yZmuw{}@c2H1 IDxNϚSamSkG> ,\2ҢJBHRH>o T 3{DSы%#$zrfC8fSF0 ߦB0bb ! 4%B\gZ3?!o'xҴ.%'>C;p)]?w^;$R s|_ }s%.LݖFL)ȿ9^)* 2%7|<78<}W f.^v.A4K2[LȕO,6{>bQv5:/EI+/ T/(_P`p6D͈mv S2(xHZ=*a߀>s; f \xĩ 0T3huM%P3X d +Qi1v#։g,$7݅KA-V(_B|j1 O-L-hƅwlql 5 iTNwnxĂdnVX+#'Ti k*B9IQ.}D)tRfjv݃rމ.O!O.%I:9Ky4q'AG ]\kTSם30)_5Ȩ(Qo$>յzj5\}~G$gq4 -V{ K=zt'APs)@ְ.EbVU1S/PϣnXPSRU}=8`B`Gh 3z6 թWI cIݛu5m@&eL(_m'nfe淈Rt42&T4 D,BlaG~ #DE$4Dy\oNC^:q\\3i8[mc:cNb8VPnIQP6 &`uGT) Y7^G .Qk R[ H5Q$o7p W³iMNTj"BcPbѨ8CP" mΝ]]TEЇa'O. h]Aw]Ǜ͡=~ "2BcP J1].><*JHjsRQx󾦢]yw0 X se(`7l=UQWRl3Gq29qDžM0fӀ}KyQ R8ꁫP$5>3S ZaJ m + B9U`AEѓnrqgGul  X(4V&~E}v>BrPVs;ЇP a/-ܡRJ<K|xS^=P׽j@9^r:lI~|& u줎E0$؉)Bng'S5pW_Ǘҹi8j&XS4jb pK?rMxv iȚT3cJ~Z-V#lXoG-U(TTRk3rAPWdF^6޲cSKx͌#?gF?zG_2<[׍.e?PkzpqO8P chdn_ 9^Ƞut0")G)ppψ]Y G10,-S<K*kVJf P+‡ׂĎ̃:p 4, ƶ;>b5: +`VՏox`<&鄊&.e91[uDd7rjc2L[Z(Cqݎhk\?sk2& ,*p3&*,x\:E]omy^>#z=sg@.~m?zb5AOxmBn72#B5?qm'{߫<0e:n2J]Cױ48ݭW*n.f8~_VV "P͜c{,`ސ6G߇y wwĢ \`g2zйljL \CJN^Xm/Ƣ [Cɡ(v}Y"P;TwR`Dv~FNS|;L[ ǻf.X*uF˖/m4,40ާo~|rҸ/lԒ& h+3TTTv| ȏ dq/zEiΗ2y0J%U1xLl `]N.tx+X* &c΄#H O =nQɁ֫k*#i%ض|-؈m]5Bta:ޢ[X4v܊O՟+QրڽoPsD-bdҘ(t&&%M¯Lc3C<߹z 3'%-'8? Idw.-,_۪~yV>ד%Fkg 0h1;t&V՘KV@+i+[1 1Ǿp=Hȯ^ز-TZ:{g??K7rLq%yr_O=\of=Fc]3obf t=Z$Ht:6;=pʀ鐄"dSӇR"GhUJA`͍np*!ioVgjF*&2kʢVUUEZ t] L:wCDt5 GYQjullkhFV пD7o~Z+EJb*0Wsݏ^ \(jR4_zQB=bf7KOP8:zɫ܌--.r}xU}aB6 _67iف߯_6 Z꼟9|v2n5VEddld$̬{+ͦ*ִeϢaϒt8:oow/*SъrD΃C/&훋+[@^+x8,)WU, :aaߜχ /x\ƿ,a {&w/]98BS|ZmUfU!pօ_/.}H <{c,yv"&i(yH&/cR]DW W#RWg*ڬ6QF2 rIÚh6WjNI KH="No'BQ7Ot8GXL‰T4CRr#ggλ6FZkY _ba*y!+g ۴@ 2-O%JS}]FQ;]-Mw'@\2~y(;7wjO۷YD$j{^ b!|]qn%:X"򆇿HW:,7F#ӋfZN*SKqmM1!:,Dq-ڪb24Ew4v^4(~jT)֣-G[9!h eX qTi2UN|eIfljt@k*>}X0M 9GfUy3GϜ~*vo3GE!yqxtj@-6n4j %n 1HCɤ+%b}[.F><^BFqUhڜN N>s|N\]Uo7-87OQt%u` sQvb!,7ǷŷlXhB H^NMj{|"mnq\v+W,4{x|EA6ER&]np@"HISuZiIx_AZ$!M %RLX|lz/^ ȵ7L^?eT۠B\T~w2 & t6:ZXj>6ĴOh rB.B:埯x~(*/g!EQ뙇&af`ppq0Hami`1\~֠ ,:Py_]5O2O4u:~UԊg7=_ ,?y_ya$)*4MĐCCCGp8 ![%endstream endobj 187 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 8377 >> stream xztUU sE\/稈E@R"H'4 %I3sԱ8ξüsŷ潷$Y r{˯/]}~ 0r_Q.zcN_0 +27`>xߠbSkZZ7·Ek]7o}77ίX²EU~ٕ#[|Fؗ=:^Ĥ'°GRl<6 {{ bO`eؓ"l1[-^F`˱ױitl$6{faEl6``wc{A^l*vVq1.6{+Ɔ`؃X {0~Xl F`{ fd3wMkse}Dq|oh4|b#4`{} X9wZ3G?Vi5=Qɤs :f躡R^G|k-@2RAX(<%nk4m lK*AEyѽc[9VgslSl[y yR=}]ffK]7ʅW J8| >}HkǾG99+P0%h,RE /vݮx8ߡi6To*~=^ `\!yu񔉀^I>- {>8tQ 0P({aE@P> |ϟ iYN4.N 0<63)Pa# ˳EBٽ;]~JB(aSBJߡ<6w D.`)_  V=L `n:>N"V*qтfW(jY`S`XsC|!X2HRƄ.Mo6NŨv8o:jp-}h X p>gz R)qtZ% c8b l` j](8rN'8)?,N2n*ҚŦzᐳ{YS>l!Kp("D/UA4,JhCL8WcFKZ+|] s@v-! )`NUWs_u54 ާgk"k/ibU"e\OU686kxnIG)}/3>)eIqSV[%)@PqNv1Y?[&>*O-$Rf|$}/{ V~_H;u~p)d)N]A#XOiMPSՋڥ]JO 8z&30Ckm{آF҇;ow6  ӽpdo!|:wިT Q׌+hC+@ӥk-6_s>l!_t܍ * IЛqc.0w3 !`Tx+ĝ;~B˛V6FM0w{|feﷆsIOqI B2w;ջhy yy:JS2Htbx1*>XJOᜤNcՖd: d>ELqԏ]vV8+]wA B;ݡG'y'MvB*ܸ-aC1̬gUŎػ!CFІio$J mZeRK 4K列|Enė]x; 0/p֬#vWw?`& y;\"n?3|T4 is{_Bv[<%MHbr%\N[)Yzn#6_8g>R()GL9Aު/l4§ |o%"To0% :-b2ZZu%|Rؐ2߷yCy0} ml&RZh2 yzId%+ c;̯b+K7CǺ-!-e<ň!QohX\bV)Tq*ׇI9eP[ kQIwz&I2 H$iqïઐjڡYWV^1~ r .A$ӄ5dʶ?wlW;W[E%(, OY{xROS0JfRSlID™3lf$:$-)Ө+C\EփLG( htBϘ/w<) (NT}Re 'L{2t@ 08(vsz$z-SR8.4[Ի6rDG͔@J/p0),jto5C=݈ 4BG)<5Բq+|! 5j_LCsFac)h93L=Bb.q;N;{*N+_|SڞY7#›S#{( iuPXgE6sݖe)?!F\\%ISB3]qZ@zsGG)6 (rD5] "m/qAyo*dE~T)/""zAN 9sd)*sIys(.jDț`٢$| 1rRFp *<_QO*_e]<񫈝P}y澌sDyӐ C}-Tb\ L>ORހ .["D+讼%C)W&ħF(~Yރ3cg/ xȴ6TCKz6ª PV <"8}7:IxH#t2Ƅq>R[H'v2po+_ JʣH4 /wCˇyid2G6[<$Sr/R\ o>5oĂܱg/Y^_ygb4a"[t7%׿8?r}4#SHlYi2)7+*u yy(UI]ʘ=EyKqHO˟GV \%fLOYBX0nϷ7O0e^9}盙U:@r~`? k@ p42=nPfDOԯ ^!'im~2J$"7I[< r $[%0ǭJTƫJҫH!PtIڌt=Q!īʵRҠ$ xjK=%aT*RLXX0R2S%cm2gE[D]@d<4o|t}!R@|{dkz{$䉸A("RSRUJQľ #@~2 BDշ5ƍ5l?u{c8@^ī$'Eg8Y0iG߲ATL em9h‰` 2;T!lsuk+$ Ԅ:WE,1F#CsJ=rSSV Xoc-1Bn(T4uqvAF*f bbƲ Jr8Ir.T5`J.7Dk x_=ĆvM. kL~̄ @?̝D ܛ  ؇ՋTSr6vXˎ]̗)IEƵjIaS5p |< nwl4e~ʒ-=4\Fw>y)5G_bŅ &ZbǸ>$NcՔ4Hr҄k͸c՚ O~I 'o\lk .y׃Z.#76$\]3`Zν N_q]_K녞kkzts$z>Ŝ9;pCIF@/!!M<uܾq7uU٢=gę( ៸맭/G>?ûAO3:_Ls~8?3FR|i)0g"ufk1) ~umDaɂ#(` s4̕< ݀ y\B&.qg =ůT|g1#F2㗇CXWz.J#Uc59mjܩ >Dy 4!jW˽_"⹘xIJ)Mx`scvY M#XY$HSd}H\e_ )9`G*akQ䚩k8"=>6b]ƽZXУV)ńĠp4_Fu'("*{:WXp\Pj,Rbwfp۽}WY}ANb5 ڈ{Zbm]ao҇(IeJVI[6~+J )R_Yzeem@d$$>tG7wQx^Y&[p:^}s ʙ`n*\CJ!BQhxߞn?Um8J8gk:\?嚉Օu5jQxκbFB$p PW]9rAO " gVG㏌;(}2 TT5tϺ솓AMHwkǹqɈ"u%7˕*-0> stream x}V TSW>1RTb}h}E;V>D|@x $*;$<  )uY^;VunkCnzO:kfYY+;'}c%<7x5 y$ola/!{ftX<3Ϣܯ復ggf)1{dq Ia),]o^{=OPfE* P**VSAT0ZKAI>R(oj&CPbj%QCD LhZpp%j'TLc&=x^NO8clU/kv?u{CA~(|72pڮ HdáԍzJ1@N-8ttwu+`.(qQm $"Hh"EpAH]@0 y?|RLK5+tHdH|8YJ# p|줯i,%UW`% `F|i>P:K% ꊔ<1ygrOg| /@ɽI#?]24HF1tTuxxeEҠ*&ȒM)q)8f= $v/-oiF<Оy,ܶs}B< s#MwpM lbe7c OtCM*/ 8542//? <`.et:sT]+ç[/B;7+L2s`%eN|^}dl4k-ĚZLWVVϽ=9 fVekk؋U/zT_Ik {/aWV&;ҿ-BRpqBcQeuMš+,f|As¬~_X`&#H SR;O?W\¹\mU ,tv;JP:qn-)S0Du >kk3+tVv]z0hF$kFũR"Gu1Ll4PkpX \%aTrL!~ܢEK5N544T7ךjm1TڂWw_c~@Xu3 5R)FX[\TώSEݮ*TdkI}J[r7K"ZE_{yOkĵLiUtbĨ_ IN@qeH:n?Ξۄed+Zb d.+DPnݚW/PZy2K`ڡX)w@ JdȂ+ V47钥 ǜ1g0 <"W,ܴMS Gz~")ޡMM̔'&(,k;uf̯ww>*2mTxjJ5nZDmv%N|OڏMʊD4Bc?k)lXctV u5uVlc슦6Y̦SiC ]dg1Wmj0a#oZQZ>d20;Y ")7`ۧ-2!$zE/_m$s z#ސ=>|W}^g.]`gJla"V,Wlۑ 3 _ѵJmmz}?C]!|Ƥ 650uGG?x,' k»wI|vL! VJ.{!)JFЕZŒ}{Xޤ3hRkȴH?-/JRLxetGʻ%@!t\ ԖdIXhN.ihtz0fx oTf&ZX^s5<&B ֌atblx|dsٲxQǐNwW;!+Խ7 媯 Rp\]JGZTQl~Z=X^+1Pd3M4)6X:2"DN(/&swےSގLozO4G-}SB>n;n;铊JV:9E, 5XZ8'DEF/q_5z\ ӟANޗ>mWGe-{\"y"'m:j<{dl3g&E2r,r9CSe)UM ]_ߏa"$kyu|urqq-F؆ܒnDbtrZ;ս ӝ'WwI+eR|.U:yGC?'"^ASN֯Ncs뱓;ɝ_Nf6!QgJi75yb6ol>2'; =xo=^se_NR|`- n3xv=A⣮W $^H;lWMv6]ڋqrKǘig5/iDvTCuq5aRp湥IFS>/gx=;= =_a|4TLv\92o fdYrT,u6݀vX{=֎ s o! qp orn[4i|gM7Gh4%:\d^A6ÖXY3y1~ߟ 9LPgkW35u ]a[g}돒Ρ.Oj^LV+` {Aܫne;~yj[$ߵS+y;+1xSu7#ۻ{R*> .ݞfud'=)?xr^/΁ȟ];&;/b[ k9Ě}/dy2_WBE" z""WWiPD$a Vxybk2endstream endobj 189 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2548 >> stream xUV pU!L Hz'-.^1ֺȥH Fj $sߙٓLNWrx*[ZQemWUj$J"T~a}tnO~I*8mr枩k~ya3sAӢ-+lk|VQSVSkWWT<ZF͠j(q;N N?t-YߪO9I4뻿E+ՠo=3OFUR{ZUZgq8FoY;Y-QGhF"b&^F:h/2f،ݨކ{-С^ďO,uf N;fڨsIpCV`ϑ'*;R|s̰s+Y9VXO~$GĞTrgJo$.˒+gQי*t\<c*6N#&=WTGJĹ`ON~u槫gZ =>7w#\ɔ%_+n̯/Oq|/{/02!g a# ZͪU [o=y;@ɹ3ݡt6v!ڰLHYVF@OlV)T9VF`_ڠ I<ydJSXTG3 _RH:;4Na/.g˃@:LbO`" ~aPj)>Tӑ4̀hb֛x.(q-Be (x`6rHC3#Q_TY,zV ϩ|NNfGw]ynHઝ V_BKЦr ~2A}ۏ #pL>X{?Yb&F:׹}nfդ d&&.(f,q[솜* 'q.)=Wr5G̍nY-Uf8iB?^j2xΧ 9>+s3R=#^['?&+Kdc]m%Yy=QSm1vI>Ӗ~Y:$S}{vGH~:[jm~hK3t!+M{fNWLvZdI0'TDm9f] _d^âk ^'8 i -uZ6EKƕc+з;XWQN(DlXA z yUt0c#8D_ 8#ЅM$%] {.QuYr* ?kߦ:Xk`%}h4-,4poB_~Wț& ]r`sLn+d :[FKuEBh4V8O;IV$O Ki{û!!A rЦ(ȡYF5o(u]6 cwsj,+oТ ʛ dov{tMԩZjb1*SMӦiS6Naendstream endobj 190 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3101 >> stream xW{xSe>]!dM`\qFPGgq]*"R()($m&mܓs-5iiҴ,nG #;<_>?;_yO͜TY6_ )f]jPZJg`yp/}{X[m27i.v=}lorۈ݋m~mƪ65X{ [ ۀ=5:`UV'3|%J. ;QMc_1R_-׮b V? d$@:K|dA6M 5iOr yN8 z혜S-=} D w}GǼ=L lq=Rpţ_ָA?%\Q=ȫ/,L O[uIݏgYS pSzDf~8ju' 8NAzֹ۷KO?_=PyF+< $ B|hnӋi9į*O49|LV̓.H^?*o*uPe`:Fu;fSY 'a9G?,@yzݔBeҔP{i8x6ǘ=ompǀBW1r^mÛ4)kxdoKc|ɶcwP_(s7okܻ9r.EjA}z0㍀~BҀǿyM@|<pb٨g1IWml7е񽍖\ :p+"iaPBOЛ7j6z?="̛(#Ym9\] E(#e*+%V^μviȈI\N_!"D˔)#EQt)t!a y;|fe}?D{γ_٣-fL^wotŰχV[ީVԚ;~r5E8seyo O訢OwR# 磣ٓٓC'`Qͽ ]88oNGoda1WVഗ3zp [6&ٛf= \)J,ǿk(@Mi``ʸq>v!ЅH<ģcOXs3e'dᣅK^ovap.M=IQ<`6>jL'nNud hN!m5Ɨ&>;/[/wD)1Ff=b\B(>}t|msw;K%sQW0`JC=vn&k]yD:shzZ,Σiqp. wel_hiˁwz2<2A%Sb_@mt;ܻ@;gu\ =CoEL)jy|~Q klK (:b3:ÉԡW6* BSY}xaaRn}QI@'`vm|M{:Cxd`'ff .\*)totac-?y9/HS۟QRU>KA>kEbkwjrù_l$EmgU U_) J-7_LK/3)gD=ۛ>OJTL^9=$nV@8;6{ViEi6w5,|'o6Gl$ `@KO}IRw=VbKd&4126"`S72)!]OG=ݶ@X7Ϧ>/Th;1HbRn%et'"n;??kN]|(|V/HW**fEn~aqsZjKx!C /XsQ/*/r(Y[t &Joh]j%ޞfFZ9I[Crwj`Ia.3y.Q墀Hp|pv-IG]-/" S0FG;@%{.BғpE δŤpw{}uŠ0[-3kc<wpD1m9PDϊy]}1&ĤOx,;*_&a> stream xcd`ab`dd v 144q$2!{@Q!=?~>0cB߳;~'hyGmEw9^ ^^emwn]!`z&vO1ca嬲bf#O;0endstream endobj 192 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 201 >> stream xA SFSS1200K  @R3pFOv vKJ,Dv[ы #|}}$؋∳2~Uc\Vze}dc ? KDendstream endobj 193 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 248 >> stream x SFCC1200wGU  oC$kV;w/^QOT49Y[48V  >):;YY}܋ɖΨøyo] ? _cfendstream endobj 194 0 obj << /Filter /FlateDecode /Length 2049 >> stream x[Yo7~ׯ>P>$Ӻ 7@\ AeGCRߗK.gZˍ] ~h4g8e`%ٟ?uHs١9fWOv)VJt&6ܱX:H v0/(n 6RB=ڿ &B[F=}$O'9%w:Yf|ׇQʢc/.CvFZB)8z f[ ˔MA⋱_Oơ[G vg)ܤgC )XEr,lP[qZXpi=zK`|hCN1(˄<}FTދ^V#dnMM#%L- I5&T#{kJ8wg)D,29 8;? ~hhO`kXc16 cAkm`GzZ9SH]~6@&I[6<kkJzK&v&֏1;W* رFwl! D;]]*?؁ej5(!5H@H-+p h=pK8ް pwu0fp}Àqm ΣvML]ONo^F˂$DI˸! p̴a[2ιGGCy +75DZQ5 )U"N }k8# g*TĚydr[Ceiׯno[oYݖ[?'h[|U+p|[_-/x[}zʹ, Q-ƞ&D'?#eп%V(h>^%r:2h8MY/k,ZNF鮗a qshzx| b=>-Faqr_zR8Eg Cn8D^.瓣^aۧ !uQn Tt.4YZ>J'w9Mӯ~m|7~瓓>MZ*e9PNC]w9 }*t2> stream xZKoF_{X>a 9#J(CZVw34@`ϯGiVt}uBzo[w濚R|}uC h2U։nE= Pఌ]]dĘLk+ޒmhEvڑvs)(5d\I&旫¼Օb<Ə[+ y^x%( *d;kKⳣ1:?4ŷɯϫՏ`UDUn$WjV?h%), ~oe1r1l;FmJ m֣+k,#nᙣ =+1Σ5.8LvFCs%3é6DVͩ%Sp*'y #?6˃~ M/}h\i; -T0_|4 + yB9yΧ|<3Ċ>&b뢘D)ͯC#ai78*v=º9`llة?!vgNiy!:dÑ?` |KO KXp=(x I:EyܔtN"~>K_IX 9}< & pV[w nIߕ>Y /]"$R?8=h- 8) ZgfPO-hGDk)f1]ZXɈR\c-n:Z  Z)ySGh6W'<3M2Yl%PMr%r;ˏ)U|{u6tHߵwKKE ZqAqڑhcX8s-@蒗j>Ki:?_AVSԇ: IT FC**"Gv}5[o@| OhaUT C(Oz;- "bGH 0 6]\˟{_BKLdV77"}[ţP[)ZRі;rs]^8b ;F~!☶uأز8ti+6[KwDDX}SB$JtqA.űzT wbz\P9Mb - +ɤ5Ǝva4v5&ưy#[z{//KJ nif!=Op@LN$, xY8P ]|dpp1DKmB0 (@Ӌ8l.J7gQԉEÇu!!;1aW2E789+31C=!W"Ol%UfE 6]>gw#mr=&~&(fW|_R*Kq''5ƮE CɦCwHd?4FHrU*mD >gB 9DCݢ?CAȞl'NZ Tf), y9d6spgIZzCi#J\cX۶CVPbSX&=JZ+B|KNP\( mRrHiꘫOKO¦XTnޓ! JnE> 8. r]ML2AKK(Y@&/mZkI`6 òJWH؛de._L~Vsʕ6Jt"O9J4 YςۥX9-Jŕv^fc.*R9GA%DzT<%X2=Q?C?d ;MɽRv~ *#T (^c$oWTX䄅*`%B¡/ /k&,V5.*k/K^&SEzEC&pّթ/C i!& x-x#u5KvOwA,NuBkՇCP$Y4v$|Qf#!Ԙx˭H,7:)ӵ?x@?wZUP@2ΗBJs[4'DB[bVTw[=\pIx(!Խ'qNT &:7 O| kyI?X\=RlKwiX\g@dt WQf=48[wc7Cqu`tYv!cEcl ?uendstream endobj 196 0 obj << /Filter /FlateDecode /Length 3382 >> stream x۶w (Ŋ%@צ[ϧsK.I|D_. [1QO>7'eAOJNʓ̈́ZIg=|iEO(-d~1q%H)]Ԛ̷B|!9U0|BxA$Jen]RR79E)֤8Q ʁ̋JW,Wa֦6#^B0ZfUMXR-^M+`O%±Bʢ'ۉL<(ԆmߴTRQ ]N ß-J܎ejJ#t&)02lS.x-G|Ѹ8^OșóZI{UEIag<.Ny\"&7EGAL /?.BqTVNzkз(Vψ33 {A5V,c7Ѽ zx% m27nX`-ϑ4# ?{T$o MnD!`)S4&>?̿Nc؏9ΰIk7R/EɃ+78~ Dk,AXqafRF#ǚqiw I-x}L>gǭW}Ң1a}e=ֳӔ@Vdfm<`~a1_!giFKw(C+4j24<%2/3A=uwùGm| wk;cw:,XR.ZGt&S$3ƄaqM?ˑW Xx؀-6?A2Q$I "C cWq< UB#C~5DW4h4CGq{1j ɪએ/!1Q Rrwa "]Sm⸱O(7Tb<ڎ5''"#szxauFZgF|4[kx *YYMǤbp:2.3c/|EG[0%VJu'pqb*q9B: )x\X@VHT,"xuu`wt[8d.HX&1xȭOd؏njWq4Sz1< }ޢ%I@c[EtE߃9gNfl3,F_",qkp Yx9$屒(Ȼf*Y <*XxsĊs~LUXf҄?8 +Qy] wF_3ځ6ZM%Sm6CdRiƮs(WZS_Su-Y>eqMlh J/V j~粋ee&zO`TڏD|3}Q¾ݗ Y}Fwؒ,9ݺu*SF{>ȫ n߷5Pꢔm]ƀ(_)ck`Z%Sf&,mn(cf wFNj!S6 _#fKf`5\ZOJ8db ;SzMvIk|U @!~F0cZ 6=`{,8*D_I$4l9xڇո:sڪo[]cu-ԘRx+Q2.tl %-TVo3%6uNʌj AP-{nZC2U=P5~8MxW%B~v-5xAjS@T!2^PScJ:,9h ێ(x6MۮᬼP*w05hN09x7~ͨ,9(~&[0is8J=>|;I)ΤyU܏USg9ŝf RhDtqKgI9Ly.v`u Yhvb-w} 7a@> uO2$_k%E北ptQz䌔-BeiYۄՊ{q\zARghQ?Z ݻFu EنP?}sX)+flx&̝ٕp<[ ;¸jA2G/FxeD29ʩP}lRqȀ]?G;wKC. UevE] "1G%nj\M_>y6˫v]?5!0Uo9{eG;ߣrSSLkS8 yc-|Hjm}F A[e1'..v-Le{K-NcV8qGg?텹^nX@+D9R)U VjY.pAy߯ ?䰘5H|"A3?\U6Sr$7>@SwdWAIuNuL3ʠX[:WOt9\nݴ1FjU(DN%}=«m\ApV34NbAp޾<8՛k`\Zp۬[:TX׻K_S PGKb*Dq%奬GՅD5wI% 50194Yqp, 4*Ё}*rA2)&2 mܵ]y뀍T {T髿kT2Dج"xe9n>jnO%D $f0R !2p'ԦGg>BznxQ?G)"IXy+*ӹԵeO0_O20ğ%En4YYi:+Oa}p:˅pQs|wq\MmztfH N־^rJp w9? ArOKr?JyQ'>T̴|v#_Po+@&M[%3ߖy؎}b"* v} AEF7qMg552CNM~2#9'"K/|fs~?KLyq彌xx Fv> stream xcd`ab`dddw 441%ew{S8RsRsSJYtK ma{蜹WvWa]; ~-w ^oKqqb`~G`endstream endobj 198 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 466 >> stream xcd`ab`ddds 24$2I@HCAAac+~l^}> ߷]S.W\͑Ǿ{o沧w-}ӽ_w/ˣ"ݸczyQzu㞗߳1n#ZQXԝۗm٢.]w naoYWoꐛw3E9y]ZB3=vު9[vOw\StvqLlmt֌P+Qm47~cyzM;Qa v_o.#;噆n֎9U;,5\Mݝ:gܽvܾ3tb1#dendstream endobj 199 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 223 >> stream x+CMMI12G  V;= JU@CWxbk{quup}jJQJ}SA]uA| 7 Rendstream endobj 200 0 obj << /Filter /FlateDecode /Length 2610 >> stream xko;貰~M,&6CbBi+wDZtkn93;߆`C^~zu11dpJx1hd+zLF[+ =#9R~~x~D Ւ,z~Rɵ`6 (hK}y\V)`#㛑?QƘgCp]PHk~pR}Fd}WQØf I* x Xst\[r<j`-(UP7\@+-$z,Y>vapԱ^KWH%)@7REh +k,K`8Sg2J=#X|0!|x<--Âi|_>\%/(D'! G;##a'%2*({DcvN>!zs} $FU5a2eǀ:<\ɆoN띓:ɲT5wy8=Ai̒b$S߮i}@C^t{R?I܂Ff&,tިgzRY4Α6M+vdvO#nC {nݓ7R#y[sJͥQN*G Znm Pb='/MPry9oA&] 7mG1/?_),īyKYv["֔J;p֦1ƞ. Em'l"/K q6)L&Ŧ)I#%|)*vRj;);7fVgOVDE{2(Hzem`7/:S=6=W":0Ω@lRdBWmz `1,݀ke>>˘]-,X#ni 2j#/?w.o:z]nZ{Kn!=jmE:x '3d8Jꂄ@S3$'ra'Aw\(7&BxO&QI&{GϐYlMVM.Fmu.4;W,HȘW[ɬꏋV!&ɶ)M@0OϪ0Fu:OcVAtM֦ΐE"w{Y+iW[b!RMU-?7\% ebE}WA~j ø[ć=G@/ LUBX]-,^HqU"J9^fsӾsh={LwU:D!m_䊁33Ghd46ܱĝTzɎKE}7˸\<@qy=Ov֝hD'oyץhyx67$  V0_{HTAR}'?3rH<ET>3ߊ'[/&QH#F5sm'TCd_1D8RBC]ڍ p<چ҇N0+ (P{`8[.bȹ&wep&8"͢mEX"2NStdIo{#vHgߤurz /unMȀߥ)x`sU,V.n*,mbt@\Z` V 5 Hk ߏ8yM!zTH_jMr'1)8D'3 /Y ^rv%`_ە3+l_ ]^eL;]viW,vmrJLoƥ w0 mD>ǩ6{[:I,h; \etvgx%,[Z)mx83" ^h~@LY?`@[|2<}5p&C~(_[r͇ NБ?%{~Xv֣AvFNY<H"GQFg'  h&<"AoBҵ\FeiE QhWvGy6!}x|O:䃬>9zYάg{W=a=׵q)endstream endobj 201 0 obj << /Filter /FlateDecode /Length 2087 >> stream xK6>j ^8 I[Y Cכ5z=pf~߲oYOs}?6?5|yukַapqBKz0wUϛF|P\i2eoʮtC~͗on7_n~6y"T< As?nn_7Vv [nIͻ kSݘ3?x93]St9sѮx*[ͻA:0 ["DVc+mؠcڥ^t]l^ߍFUb[UcDza\6oL 4~ߍQؿ`kfS1k1_YM!`s|lyd~W֋ 652ΚgƺSnl}YXkD`cX:|m*RA;rMcw*Rr #/hd28Gyj:0Ri$U ҝNQQ^+CqR%65C(O (`ܶuL" ࢠ$,0&‡~\eG"vRTuόjUt2S,=(OfpC;^^yi:ֵ{#Λ2t96Zǽ&6pv=5DT`/\tP` 4(@ $ ѭ!P8SPit`ȸ(X:MSeg{NW_h5VD4 i$w!Ϝs`O P({ţfA1|qGʳ&3,YZ0g8}T!MvdeLRdB`gi")M4MPCի͎21 c %sՀ4zL{F]>1UGT36UG?5UPσJ'ƸhD$pـyp~4W}.SD-?"&44e9+V$Y_u63KdqG)#4G@v=6zoY T\׉i[0Yw~Pk)vT2|ӄa'36YvJx(A `taS>k|D{A(A;0HP\dB$az#r7;NE.0-AHn(x>$T1>Oendstream endobj 202 0 obj << /Filter /FlateDecode /Length 869 >> stream xKO09z+ŝG*RP(mJ@U_;ɮ'.MՊC%p,!uϫemP`[ve.ޞ#{EY.1XZŝ ]z,eq.pP9eu!쐾yqK6Ni6('O%%r+dH.丨5^;`E1 ) Ь}w߾J68, ɍ)Q Q]~'U@eМ T@ .#Ŏ.\IlE1d(]0ctY 6C=Jc>{⛨Aclfq$>.*戚dw9 *0/fV'E71PO-q{!= E N}eiA͵!";w+,,F\Efgv@„ /jɞ+ll6d7xawV=v8vFl򰕙vX:k[>c2 yt'#$(P6ɛoz".u z?1z>73'='E{Z9WV<~NQn־"(inErJ0CO١4Fl MBNX97v#oދ<=|ss?Iłl>!yOHgyQ:C $ŀAlM^(U@,ɧ}1جſ~`sޅx%Wˉm j哩}1P_X)6q7DwaZc2ʑ~ϏۤUa8$fGj$>YγAY"Qendstream endobj 203 0 obj << /Filter /FlateDecode /Length 2017 >> stream xmo6S}3y5")2d[Z`5q^fvۏ$OKWK-Q0y?QȺQ'w8Dݫ[v7gu ;dn"Bۡ$16qw0L'dOpeO F YĘPK27}/ #{ڈ"m6l ~ e .&+qϥZŻ.FJl"Xp;Qdɠ:e':\!e#!t;Q("a}3,Rv(4apm $XǛP,u/gD 9ZR'2&t%֖igu[c-,L'3fvmY-pcS[y'cŭKYPމ+bAtB2BhBrؿe>RlisvdLB%y4)vmL%0~:,ppF]Ui3@ S ߃| |q~\Q l]R~ Y)w]9 :%#\LKFi+>XCgQ08.Z´GUpFk`\Aܣ"ypeQ&{~:YE) wF\ gJIaR^Y؎(PP+.?֣2Md.#fL.2ۄ}&S /v1^R$lآPRhƓ bgy+^;"p|q vC'/;4,߻Yɗ6y`9V&"PdU/NTU]Jq܎*̕Vԫt`N'ICkwg*'reS';)7\Gq]3oșo[svy;rxNnL8p5*ʤにUݧ 9q95gc*ny3K,;pgEQ=42vDD)viTZsIr\jU/.`o[Gy\\jHu5MR-r'_,Q&uK c!S ytsTGѝc4k<nNًF-sqLx5QRߣ^I4_Qb#Rn}ҡ`Q'RF.OƓN2mO:,)\}ܭnt|#gJyOi٨fp*Vi3pWҞf_:˂(,MqلfÎ @QM˫ lm| n``7`>P8Q\Iŵe ѕ`XUɊ=h}@\h6ӭ8(ɚ} #X8̃,i vCE<>!wU_26 _u4%jH&=yWI_@@l2 7tn`96}g\,lTº՗Kƍk,?cL?*VBTՇ׸RlwQF|Q׋endstream endobj 204 0 obj << /Filter /FlateDecode /Length 1232 >> stream xX[o6~ׯ0`CCoɼsj;m~.Zv 6H;s!Ze"ghj0^ r&k@4 U+BKcdɆ T*,PV%o' ܒ v]_gLqYl7=Ƅv;}1S~֛E-9.fEYUh:4cyUA+WwErrGHY[7ucZ,  ghvfI=<{i1s6pUf4D4UK&+F",xhxpj jQV+g0i웱Cc"kY=ޛli`.!!@as31`a—1 NwȺ`\<l"sR Of^DO2zR^=40kE[aoƆϸ\kӞ1veS\<%ʈp~IjdEZP6Y5/tGi[1nK|jܡⱂؾLAՠdEƒ8=o6#_xgcr/M?hY1Ӡzio;욛g{Roy~7F"m,@Bi]0"Iޞڍ^B|ֿuk}h[j}1]ʸ k:_Et~D6} jOc/.7d|AkC~p'Z8xT?o#endstream endobj 205 0 obj << /Filter /FlateDecode /Length 2982 >> stream xZ[o~odQ֚9R8-PxnqPXFh%Giȹl ux;׏ד"''?] iFOy- !朞n 9,WRJ' t8%Π0efg[&Bxq^ G%:[7$`٦,z1C 鬺`rOVwòjHaQ߸^LRf ;[kƉn)-1'fTѺ dH +g#$S"yOV̵ad9x3(rV0B[)nҪ"0C.4A])$L$VWo'F?`ٺdW@@}f1!e+<7z5Faȝ3d`+=@nfYjwV{vj'a{˲07&`/2~1?;JnnVTnEi$~:ܒ>'+~ ;"&!#LIB_؁ f1׏hT]yesl4)pEi;?.z٣@>a $2aNl9epc}9aBP~ ";VV|E1m=`s-ݾ\"[lDv]wq:[C:PN#=EJV9d*,U%<'C:7}=SðitfIpF)UYp7l*]v2Seviݦ\)mb(y;AQ`ˡz,1a+pֻD}LOܱs1d`_SE9LfkUWx!{Z˕9ai+z | >ә[E3!8voR;b:a42궋x[ri6ad 3!}E\r#/[PUv.D9Tڠ|ќch<- Z#/&~iD*'ʜi=gF vYGjt^ )W `&d8{~y}[ނB.|9}蚫*i7e悇F[Ry's3QŰx#صcV{pDVєhm v8.h|ThQ6h+i˘^T ʝWgh]}iȥqmvhrYI=k^ooxʾ:v:Yvkr֫E]ǕYEdj߆ܚ37YLϲ+(Yoo`I[m Uڄ ݼJJǫ*_ϾN`\7}b(>| YGr*hr@ i{E'2ۚ0²y4,)%KZ%y=Á78`_Lo-5o`` L)MmpGC!$JԁFcсIDlzR~ )@ꄰd),b0oi^8K*K7Դo>B]S\E6tEPb C|=|tq 暡AQsd$Zd#eXBzZ,4(j }lfte`"ӎԾ7x2.什3*ceO3xE@] "};tgΐ5'o*dyiw_FrOXQ`^3p847'<:W,Y Fƹe/}Vf@c}4=G+&= ci<*&œ(Uv.{3>#Ƌy4蝀f"JU%#؟u_aEZ%k/#EѶAH(@d > stream x[[~ׯD3F[6>8}%VRF9rp.]\H~#4(W_Gx=iqg_k6f:xv5 ]Hj4ub"rneĸ) VIhrl(̵6L K~=YT1mVXFc Z)]BxWH>"8O$ۂ!Nc6ˮ HR!Ip ƚ-=/E m `gu`n3`LcޮyY[M`Uj~;v(!>ή60$h>O_t'r sۡ:R*4iA T]K$wNL7Şm B G=%ဠJqݖyI_שy^ǀұl>_=I_ (l$/JʝmёIq*MŽn"kd sp}i_XT´&|pl) b~]ӓEgs0d%˄Apj`JݎTf*òmɳmz،D20g)|QgvS w'ag ZWslNy>-eVڄ` m;/㏅2AKG$/PnW/S./ rA6y4%_t,"q WjtΆk'% @d݃1 3+YZ^iQ"5WH<h2iC\g| $;B|kP>x'w@]6ܱA43é@.\Y>YZPqT!vkuj֩T$,Gn%U8Ԯ*'B[xW' Sv:V.45Co"޾ d8xŐ+w<8}z]o^>㦛"h=Bsjw_ 0g񑊿_2a 6,VwVUBA=|]'R$~$/KHEd?碿<ZXdGeNDc&D9Ww/w$U_mRLquY{$-aL \$Ku&]TN9H3x,X/iQܞHvy iA-׿2~ Ĥʲ\Iφd :3yH哊M${n=_"?8!]DOM[f15aTySQ GgKWUo9 A u[9ȟxa .?l?D~ɾ.?\|0]s`}\@e߿-PoP+5@x.',7B&_}?Huendstream endobj 207 0 obj << /Filter /FlateDecode /Length 2630 >> stream xْ۸]*>d%n9|֦cmU`灖%9v"#;*Ta2:fg5̞Bba Gn7 n2̱o0 QAѴ!:p5 &A"'R@ўKloq3C.4UTysPHU {)?\I%:8ʹ0v3:~ð;Sp WQwVCNWnF~ SB-/!S_CU f\r{DsE0mra!N a$ǯ,1B9 F k0' Y.]rc/ԣwN ucqX< W\g\}%#Ϡ Qi,M*WDf\ZpYG_[Ep+e7䰷8k1,sp%eNV+ |*pHP56ӈ%&1y8n7|rhNHiT-PKȣ`7Ͽx 0 # ⠁|I|2̈́@!&>#zM` Cn*`+pO [NlHP {"O\P!a6-QGoc$J^'Dr~ }Rhq;&%\lp c΢'O$TRk&.(.hg[3ņ [b S0׀I^0g䚨fR剓Ŕ;j89֬@=׼`Z(&H87H'IwGr ͙vԮYYx ݟRZs\?L#*NJtF٦>X 9Db">W n?OL$xv'GO;[z 1w|CCaaOX9RuOUdĔ1nZ)41MWŰ#&gyÜF8fSfY$Hܹblתs@kgr@IzQ=@%; |$a@pGy[ *U2W8U$F}(2T&8, @*Oe,c^7[+Na9}V\$zR.zvX#e%Zەx갨 V_u B˵96DaX ^8|03oK|(BV4D1ֆm2C6Pt( |RplJ*%jڡEq>ی8Sju-@ 2bHaj-bb= `NЗ@7ы}WP-uJs˫hlp˵")ݹ9&p4 vur]{W0Y@rb [|n#^E8F}1.s˪{WUQvxYBOGg+Fz A3 ZĈ-e38?d 6md+-BϓstbCt+ho2  @$֟O50h-uCIB&_YDxo4I `jME\ T>γ%rAY$Iendstream endobj 208 0 obj << /Filter /FlateDecode /Length 3008 >> stream xZYo~'CV 9 akrzwʒAg_U׋3ڰ3ſ]^=6?_V3?Z)쬕ն1V]W0C F}dԯQ{^vs$--K>E 5kMcD6nG|Q#C}[; RbxԚ?^q$Ph]/ he%r#qȞyM5<`.z2>`NEHV4ſ-F [4vZT8~&-,A5ԥ|vH*܆(aQP8&pf]=rLi> stream x[[o~o胱]Tsw2l}H0ƶRf8{HҌIArHzs9(;fV\X=[lN;{Ƙ8a:,a'FR+G'g RO+ZIn4d9Fr5n\ōƻyEVKjOp/U\ F1pg W-J8a~*lƷ *IڦRT cW~UyO*7ynrVܬ$~Y]qmK>6ĝ?g3#-8*E+w) ;pɆtT eYضpp*e=$ 9FDK H2Ya si')Ӟ|:; eaq+X 56zr6$@:nju큿H3e^#`vS-vhr:-֬uZh6"7:?5,1p7me aX2X.6_y.(S9RkE۹K{9Mܡ-?rqbZB[،퇫{zWx4~5 3q9e=^=ۋբ^SX6s߶YWWA4?m?$+M4J `PmBdP4v $^K[t؊r*#N[JBuccSkNqa~Exn/+Fzht=j.sDC4湑*b;nVh .˓ r|:.5n3+=Ҋj ?pXp6V f Yw1X = K16+!ܐOW!8&(GW9ֈdՃm;[QD :6DZUp5JJIzWSw-C!i+jo>].6٠ 3[PYŒt~|.k.vor1! Z)ëT\L2aMY_g֎fh vKDjKKYq,Ny?t&2cSTh}vEw Cʓ+6"h9yT#TQ_ʁ=v @#]8"/@n)PVdpgQ~[K~] \rB/=Exac»"& )<4zUww~<qe(8;2P7 m :Zk!k~w^EXY' ?F^?`#+RQT1l3T}Ifg-є CX%K2= E~߄] {ZаuO^|t ٝ&tm2&*&Pi;<,hG񈈿/L8,>T%y? >bJlEkŰXo& ?e<4E?!C]~O~>Bo}}70G/}G|f$?eo9xP8D .4 rzf5f7. QgFuT0~qk6ܒ;WlZ83İkT#}M "֫(!co*+\[צQ|!hO>avhpE|QM֩RToO:\z_ 兊77n4hPr :cV=@;4.Hp Hk*r־Pz9Y.Öw!w^ #l { 9OUlh9ApY9C&EQhvUZ ,C6ޗU}XclTbݨwW)\sNۚyӊŪJ#t f]5NԘJȳ] Hd"ukF}55.}"V!J&>n$C//Kd )5v@~8|9xxt3Xw]Lt~Hkendstream endobj 210 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2261 >> stream x{PSWosP*i*>tkӲbVZh#Z;@xy$@ HZKm,Kk բn}tlT8ތݙϝ;s~='cL2ms Ώ|LĹC\t;SG9=zsRⰦM ̪vfL8/vkU $LfDMRYN>N(K"ݟ,` D'hLA?ϖ9uVmh>gf'p۫:RU+kn=feanQĿ;X'{Ll=q*kTi|*$brga3pYyO.鶠"[yy^t Y~LLNOפs| _X{<hV)Q†yCbnË|o&RZ~nk;+x܋/p6n$v0EE= RN8ebZ:k)<WA-jI02: Kýۮ%w*\zQ/5'njl^Єgg ;4FN>/:ۣ" ƪn hZɃ+4곌'8YXrF`BʭΆ$[xA0I,Df05CD2bĢPae-ts}qXC+d%mg7 lHgknL̤ TIfQocM͖[dv<7;6B !b^F4wb*i Ҁ|C>[G%FfYڲdQwư̓o&)O1g*!{/c2y?K AMm{TrԸpƿF+ѻp8JIVU},ǹy9SAkHu1:ָ͑4Maόۗpa*j/> stream xcd`ab`dd v 500q$~2E0SIC('3##{I" |J04ow9ˮ~]Qjr_֝ݛ='q<9+>#1 ^ kݗ?C˿Oq{ q=:fe_=VO{wKOKw3GbNW\+pM}_S{֔m~uGfEf(ȓ+?Q=?o\U]j W4{nnn! ?endstream endobj 212 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2943 >> stream xV{P݀oUԖһjmmm;ZV" h- ȃBB^y+Z|Zoj;^;Uaֹmgz# F`d%׃7Q  >1#Ϗܞ5W2O*Q3>x Rb2;O*A3ߎ{]牢KKr(HqL.zn~}< zqh.X;T c[Eu[DR8XCv,@([_  |D,ƽ%rlq8ҁ*6RO˞}%[?mNU˗).Å \e #+ju:/SlRh­>Ж SGy# pp4nm^j{HǍHB9ц-b*TLPT|ov 蒪7xڃ ݡG I @en$X'ݱXX,A>(jTRv'nSڄBł0q+#b`Ƶ.Qx_^'^=8QW搘V%r}U>;VLvZ ENZx=Y 6Z+bIrY̶J{N9#pd>WܿٴYLq+m, @x؋ tuZ_ (#~9.'т,.YZrnej7m@ ˵׎2=2|ȧE/K(:^ s%gE!©L ܁"zuMZ ]'Oʏ3͔^[-R҄NU0 ! h޵E'TDé& @ۺ<;:ݽd> q$v:'&>ɸȽDS-}j$*1l\PirB%i+'uc7c_8KRsokꤥFJiMMAAxo@MXQOznGp=Mfep;-T}`k3bIER]W]-Hv9H؅C01C&n: Ǐ^>>aP//W4h ZbB!h֗FYQd >A;/ Iy9nv71vTtU_"^¸OQ)[>DG>e2Չ.ݼrqܠU̸ҏ );[|C5Aiao1sn hUm{e&y|mA (yunScU]}WbO͕/N[/6*̓? ^)bRg~Fmvc6%]fd':~❊lL'?nڹiVn/e8@MPj.-3U\u-`3kNW (UXWUmmܘ/ϦF<%tͷJE5WhgQEҫSZek- XȻoS؅3Njȉ8ϝ/^untlxC8O5A؆ ̃!5dҿjzݮnMJ8xC^<c``8Ç!^O.(iUe$FX.2䀜ʩho^S&-a4Q\B([CwIxs=t&}B D\.W}xM^^n MnWM]}W2N"FEiNQ,7!(k:.Bu:,8h?G"YpNCg}ظ!xyr\N\ g\i?{{ [U \K-XsIs:ai0k)f`Swx@q *<'{D|4qFcCDz-վw%[vS=ڡ$Z]Jŧlq^#qy<ɇBSX[ji|ʾ ڄjk]־Ɓ~W}eCmsGL1h70lAg(ٚ)aSbZRXtg*>1+]mDyfќy1:Z}炆%<\Z:n ̣^1y:wβ23TYh/ٹ|wy`2Қ[Pߵ^TQ(ްaivτSugmTEFWc)@u0m"Yl^3ge ryXzTh;#!|/:fendstream endobj 213 0 obj << /Filter /FlateDecode /Length 1810 >> stream xKo6{0"v—؛SC`i HRϯpY>$[ aGh$̐C)_7 |mк?o~52&6hsHbEd#։~^PB%V!v o_xxp-%Nsel|= KF ݣV=< >?QGcm pR P|z܎7YpI*vpIF qm{]1ҒRs$W<5w %=u3v&c;he;HF|{XvbwZȚh*n0?vδu{Dv*ݭ{ NBl-xY{ִ׾w^r6hAGS774_:uq@mF2V ө`E2У j+|OsAM ax(g ohϨ8Be Z 8"J'ii ii8Mi5e4M MLyJdH;#} M.FӦhHx%4)9!rB*^P G(`L# J/C=ҸW7w^h2>igP>p|O(K\6buaX.he+"J"ySee+Q5 ljɰ#`2A(VFFbʓȫ‘w'LEMu\HӔ$h赑Y<3r G&<tO" #ʦ!d/Gy+pe4=pq9~ɣ) }m^=0w*-0s%Sص -t݌.5KžzvRpA9N878[e{1%#e[<@GF@.qS( lRA { %_%p342I^`T%12"2 cQF(U]E51'5U(nJ*@9oQu ƁF8Ղ*줗2* ŪL@c*mc0gH^(  `SfQ^0V4׿\I)d +nS(OAT\`d Ӱc7!l؏Ϥ;9/FRa Z4gp"-Sks$\ #?/² ϫ[_y Y. y_aCse4Og& [ÖHqDOa jj}؇^渪9j[ nJڐp/s9Q3R(F^,)aloN%X~ֹw"ac~:BCܹ<۫NPŮ(6#x٤fTvgSgcOfPs e0 .v<y󌝃{y7endstream endobj 214 0 obj << /Filter /FlateDecode /Length 1404 >> stream xXKo7r)UdYF[m6 =h$K%š֖`GǙ8á>  O-x>Ⱦ;Wt@)RAqUK@ lSim|P3Dհǭ`PV qL+#JekVVPq3$m-s0(gJmDaPVY4/[tWG,oM2eP%[B)EglEIG=).q2- R!%&v0Ϥ`,DSq7%ʩ%„uXp[%ٖ4PD*KD;ˊotGøSٯ%6@%9= X_tT@0)+ t`.R`y5;4c!.0XG@F&KEO!8]%yX?6.mnm/z2glb;Xm?/@I]Ű#v|lE%j^GeNjpyI%.V[ Aw'0/z}1yV=0nnji|/eWs\RlUm8{tj4RD =|3 O[ |ǐٷg~ h> M:Jjp .VA~6O٩E!TÕ;C~Oq涢7@.@N u"Y|E j|C hF!R%G8~o Iay/av:/{oCͩmy&V^[ j]'Kj Eɇ.${2c+IECWh<M 4tPGm:AmȰ;74]aZkep =a,wѕr92O x}D8ݽ_VDO'bE7lw:!>5HQS; ߂5P;T?`k (*Usz*X*,:q'Ca,t>%lY 9}uRk~2*_f`)a.(I4.6!̩Q^w\m{>'(̣7,/LJ9uc.b4c.,o W@_-nyґwbX#7\S`4R|g-Ɛ3{&l7yJgL+_u=o"ss9lendstream endobj 215 0 obj << /Filter /FlateDecode /Length 2066 >> stream xKFsFQ R`8(??ުuaGi;}ay{esZfY9ٟwyݾz:sʶih|7=x PB<66+{&$dUIbmО5P5PgO;*P&ݱ6uR:7xycCc|n=vb{u9{?#EkXZiT`O\"PI,R~ <#MSNmCДpP`CUnv D: ,Pht#iC_OM )lV3 i4ujhC !|6 /TgKx^ Z "k`eXC͘3&V#ZcƔRŤ|Юe9@ՔCpd6SCN# ,xM:q :1Xf ۩-%lJ%>V#LLqR#F)Ʃ'` 3]Ƴ" *\JS' - 7ayuLA1+u0 *KH,FlKUA3Ix%Q |D.CP5'j#̲XSDݏ[!kw>آeث:%hĉ&ZxBir2}ԃ' ZbGDLXgD+2I!.P588%V)6$j(Zf ݍ^ !Qc1X\eG+t4X)P X.>XA,38dź>`sNEOSVݗ:O:XoٛƀHSjJ$=ʹ֎s$>#Ps5m />_$nGi MF_ tI3 &RTg;wG&|xnvfj{u8KL Wg2Lk] &[\UP"7:UVo79~[sND1/v9Ouh&Pv9;:-Vic/:J-G40 ?񝥅#c!5Y@EvC6(2`@jnꝈXx3`xN`o'HDL^ r0D.h> stream xMO09z+;9R*.@zB= *Vk'aCY8d_Y{ VՂA3lFq> Q1v VN s$<^0~V 3gHЇY5J`h^xcЎ*h ޵ä 3,]u{3VYHy-T˵. "ͫzXPcm)@Ղ-Fn9AR7 C0/8PxZa,P3y٘6Efkt)Zs 6X" >6j~И>>UG<ه @}!]2 2qn&#92Jd~Q6 yt7avw,䝭(Qm %NXz@=PIɖϏAxFϾ>3vwˤen9m3v{ nL4Ԏ=Nv%LClS~~3vve; lt[l$lMaG2j֪$lt{plc| :ch oasZG>?o5m6{.0j7}qVF+gU[*ctFR [%Pq MA[~KW[\CL>۔Z:)< _@,%%Ğ$~nrB&hbnbﹽ@uR_7VpcϗݼI:/9-،[U:MbTFP8|G N_݅endstream endobj 217 0 obj << /Filter /FlateDecode /Length 1897 >> stream x]o6+LjM&m@`[w"4k\S~d/m1,;M2@rD|n'1i'Q+i_>H6ڞ:~8! {H[X3;aި6:t8Tk~SF/ ^^xq$TK].f%e1FbE]ZߊXL: o:B\mINQ'E4ͧt6ūA'$#KCG[JZ-W-u"NL{FZ$ ibص5Mɱl3%,''',d.Kc+UZt}Xs ttrc桬޼C;[[$v[ Y`wSod|XCֵPf;EFc>*@f:/| A_1E2FBџ~`y Ox(DO]D`W\!INib8אdG}Ĥ.;f;VP+(0cbL>:8˯ThI D^^T[oY[քg-V}4iu{ԣ)> stream xKo#7 +|T1E\6=,E=wvDHA!d'%dž5|úm~T/?o~U?Zjh7V5NEy=W`m -a a ܵvU->T\Gz]C-k׏ `LנP앮^to|Kߎz$jg}{(/3y}3>85Ph0y%O]T;wC=ޜs8ho݀BvEq52rdzMNHtmk61ۚt]3)mjh[s\Yw5løj 7E}ݿo_WˌE}J/o|īJd3ΐ_uHX.>ɖ[7_PF[m$"V%ۤNpy:|D9gH#$uD94]!M)=Q.Mh HDdףiQlȈ@"K![rT%*G8(L4%.^C@ DHM2Ȧy>4_ı*5.\+g(lFi¡<{c:g&QrT$7/$X"n%&s0:,shPnՏ7k!q5hxj܌% :e1v "=tޖv!ୡ!$$бn6 D3Ӧ'l$LJ15'd$6]Xå 25F1b5`9XeҹW+ $vW6' hXʓI]d؇>I_qM4Mxe-╓=1Q5Ǘp;k6C YX@/Q*x#ϧtJ*]EHWy(uIs(%*I(;/:N d`NZ;႔y-) 5NicqJ.x~TÞ5:4&Gơ ۦ/;=lq"HZxKtH(KxZJ5ɇ|fZJ7u@8ju &n vlyK\%ԢJFR}w3)8H?}9qx[PDO3Vl_%$}JyN&Iu'> stream x\mo7p E$[5-8>AdGein\\3/q]qQ=>:w9GJJgpkQ||#ɴjs\ FO6xqxQ[XͤbF -\|OǗLbVBk|Dx&ǿ4˄yS)m}2LYZoJWu-f10׊\P7nyd$Y܄]ٚRJfIhSUMC{Wd\-/2e?&NOjn? zx5= F.F?J!- - U4a+i@ Jp- VxWujb;)S,n+էf  ۓnjlՉe\HY1"_Ř B-1P5bCcכ4E 9!C<ƌo"6+@ۉnGn[#Nl¥i%up}yV*ҳHu\F o Zٚ #;'kZF*2ū5SN&Ub2+kˊ?+@.$- Я>-- &PV J@`| YVt3Tp7{ X$b4H4xgC/Uz/Ѫ0=CA"phgbOE3@Xn~΋olM4f8a \*5t4䋞{qQnO#EsI}yiwUSf_s!C,]8fq}(olSiN:8@c/DҸpN)OA)Fxpx2+,SdTSpϟqhVtCn84ȮtWXZ>h&܃oDȦ@(ߗ \gD v"tD:μ\|Wx"DPےKjy>ݱNԂsؼCrĠ;DCiQ;KY/XJ]ijYYT($lHY'u$M$G֟{$R 4Ly7Ȏ`.Oqz_cZ03=_J `T/M,VS8 df &⁷ cE' C<(vt8gva3/S3]b&E@O^BnؽԿ=_1W.;{ZImń;hYH+;;2&3X(i7ȧng 0t,N[8StP.Zg[63E_/BSN;5NےԷ~0 ޴ S(EE@"حq6Mc fZxP3{4S3̀L;Ӂ̶t}GzW<5z7ؠyj| ̀}Ò![_j`s7;BWT%_f>2>3 eo,3cZ2~$(?a_ƜP2~">2~ }VRy%3xC_B0gq_E읋{ƌ[{'ߥ)} 韱  Ї列rgop<6V̯w?s3e4ymmR>WX1 ]xu2Xk< {a=^/ L3&T{нu^ πx0*π,L1' tOj$w $JϾua=`Tܷ߾ 3 F(L^tُ[߆L8ܾfem-YY,T}vaZ/ݻW,<ﶻe{$&d1l_kw\w勉wm9pLbwyż]g5;wm. dCfu3)٬'ϩi%}+@zɼji+RҾk%ꄣ)p1)\H"Ru͍ .oNx{tBmo٧HN z.Õ,jfIt6Fu8(Z܃;~`iZ jƯ xM961l*2bNoMӄ?1ѡ*NAtmN',A.!şrpvHA&C2Fp1C,TP[ jg="n鲗J H@ߛ8.<۹Ovۡ vYɝ)Y֨0 hh-$uz%Uos 26xu^^4;7ҏ jʵ-T[M\z_YwlsK.f yCQ,0?Nl endstream endobj 220 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 613 >> stream xcd`ab`dddw 141e~;kc7s7nB`ւĔ\@P'W?6 , 0cߍ~zg.{ŊZYl 6wobtJd-[=S~˟I5G>sCڃr@ZAV}]wcm9?8E-mvmnJ9K3O`;yew/.-j,޻XbѯG^q ׃nNv+Wpޭ=rzzN={Q5E:}#ӻ9\NX}rrvnXމ^gEK˒*2b;9Vo9mw^3nqq8D8'uj&Jhb֯CQ_ol۴p|bwf Ib.!kx/ np8D~?,;qFfuZ\ҍq9yM]˺+9r!.XԽJyRkCl+Α~'gnf2+$)bb`(Lendstream endobj 221 0 obj << /Type /XRef /Length 226 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 222 /ID [<80f105fbdc4e0ed1eafbe55bec732201><761fc6736e150b4d1607e5b7968db3d0>] >> stream xcb&F~0 $8Js?@z m(_ 3(*(A$-m<9߀Hy))D `sv,b |Eld9 L*H -`΀7ey@$m `u`6/`W|l Vi6g%ȅ<*czeltfv~D" endstream endobj startxref 146920 %%EOF Epi/inst/doc/yll.pdf0000644000175100001440000047063314421664402014042 0ustar hornikusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 3953 /Filter /FlateDecode /N 68 /First 553 >> stream x[is7T*08f&J:-K?PH E/ݠ,ۗr<^Wlze!{y3/Y~|h<|vɂ4,uHC,F:FS 48KERʿ{E+-d pT4[Jhl!7$?zqoXxpg:Yd$Upw_ DAR Jfr6 ҨѣIe TOv_`4 z`3QG>/X~8y7Z/d$ zx$d9$@\JW+S߯+!h3`hXLVpjdi1l SAЩH~ۀhň'Ԩ0DrX}r1b{8\i͛[{$ad4'׌'[y^pef8#Zp ֭Rwp h}~qkm~ }ņO kbI/j=#Bd1ieS_j^~Ꮀv*G)ͻ ,S&aXлTi|DSJU_,Gomw?GC~Gg_ $w2ήٌ3> 2_wJD;ݜl@tS1SE>Έy{O  壭5(ρ7ݠ)Pn9DK @W/ߣ#I-eJ 聪{U(azЁ+bFWV%}qLDظ,}+֓Cۈdc--;CTh3吏.i*8J:@w߅5V1p)$3QwwgJ gx;4vڲ$\} D&l2VZY>/N5T-dumfPC wr8^s8zOЊ jwoUmˮ=~{ƞxUDWU/(%M>1𒺀-C_φ|~7~r__7C-8zn)=Jf{"E˾í}Bbo$]M2*4jJTc&UkPxc ᛭c[ Ӯ0YƤ>hfU5+L>bM'KE~7^窬d6ի`zl{$EIW&NSeiԢ҇Y 69QCmRXվ`moM-ϕk hQYKS8i3!קp?5qAnNt wEA|[djm4ZMS2o ꊜifu欑z{AA ο_)Oj %᪴!@D8B"Puqu^yGY'lYEESޣp/[,@Kфbu5-R1T;#AN-}OR 4cҮWY2F;8z@*i[Hav b 60Vzɏ6"PDn@@vAH~JmB?^NcI;bQ\1,)VS ƟC@UM 1+ߞ^lJ1k~i d#4bP8Td 'Y-̤j dF(’-"5PeSd-J)iZDMCف:`)(`b)[Oت36]~Qh<Ԥj9}.{@9lI̝ ־Ծ8V"Ѹj>]W9uӓMWve bm4!]"Ivmv<|/3s*{t<ΪAs5dp],"{zRwKlG9h8)xFүRۥAr,P&UA,Y #3>{< >6{Z7i4 lә 0b=wpg<4JQ;UA"cjVM]P׿uO50@/)4/SEy\Z)W+R5/ihZv _-*]UQSŶo!_r!"VT5k|Vl$|O%S+:YOIjjX> stream GPL Ghostscript 10.00.0 2023-04-25T07:45:37+02:00 2023-04-25T07:45:37+02:00 LaTeX with hyperref endstream endobj 71 0 obj << /Type /ObjStm /Length 2946 /Filter /FlateDecode /N 67 /First 585 >> stream x[mo8~ﰨڤ..[n:vv(hGI]!PMJ3J0b%XM ,q kec[i{Dpňù`2D8o8qH#RxOI<#kG</\/Zi)`!0ga$$ch3N1Ρ-Gp@-6<`B:@(+$ $40@x3s 4rز%h@u %qqaDs R!>-RP38'+iӧ-Dz\7\焾*t n>' =`,(& =a'wV~ BhU&Vbf^r:eL+ƌC}/1aHaJ8Tշ*cǎ~竱V>#Ϟqw (O Xe׌ 897(p|j\7ЇXJ[XJjuL%3*+[AhFh̵tD{~A91Y; <+,Ͷj n e2VӬ*$R3[m9 Wfũ̦sff jʄUwV1j,MfQ lY.~l#؋X*U{gUndI4&KįRs>QTm M\w*MhVUcXt4r $Qn)EkO2w a&fa'i:Im9(k=6c'R+f/[@@IFQZMj$ &bMTjvʑrYۂ$7ô 1I?h㘹2* tgIr+&V[K ydl2vV&(ȋ ^n^+hRqy^ޭl'0[HQINP_v[Tn3ױ§:eW%VȤWL+#ߕf[S=,jks"qu,GOO.<5\f=z"TQƫfR0Dzqw Gգ&5hB"*Hſ2D,tY~ %dw_ž팚 k>_U9t]wA!G3zAG.rQr5[N芮/nZ;~iOw2}Z)*U}7\F~.%&z:ݔgO@+辞``%"{1}eVJvx۷4{Lc G =_HGLg - r\ 0΀m m6tCn }w'f6tI3>ᤑdsr9???8͠ 1i,q3d~gC1#X&%oPΟڥίUm{8pZB 2t}K%/,֦!]\Lr_9,2z*UJ9܆m8HL}܉"S͏y.7[y nף$)0lp^pGC\s=F͂`J_>=bp0-8 ԰X$ZWz|}3Gk۹+۳%}MKd&*}+SWWf&^dě hCjRbi&u _cAK]X&P do /׈/wcYyM8Shېm<6#-6+ cQ^kIY((p˽z[ypLpUGm1 W  )۔\pܐ <8 mNadm 6 ר /֦CvM0%+9hL!DbT /k! g Mr_UԻRW.gu5u.U*_Ķ ^_O_t%7~Qebm{ fРߖS @V&O-lhBȌyfOfEUa(2-fZؿGyLlbf3QٺurF^=]N#' xԺy"*_l<[moƋo7W"2Ͽ 6B>~oڧtr7pu/vmY7cLD[ӹtujk#cKSGmͤޅbLJo?kla qyx =Rm]7`g(̯Vr3/ɚ8r>Yn4S:})ty Jm}-u7[IU='v~-7j^"׆>UY6I]Vm' JtiuqztߑV]U_ +hjV0QEޏ+mTz|^Bf?11%v5J@n ߆:+Z #s$Եà&rϼ>pݓ7_bý#'>0$L1@o9R>BuE"3r~G EX ?|c'ђ=i&)ݸ> stream xZKs6ș-pCeK*={H9{GP!i MEF:U:A4׍Bd݂g_"fÿ.{ZL+Ykv( e]L/XX1[# UR{(,JPA?mI*_JܬRtNAf6~TҿF!#qR5閪|vqq0EvxY{p PYo >ֹBLY[-6R 4gάhd/N/UEHfKአLV!m@KmHjbos`V;| ƀ>XV3sdܵ*i陨Â޳=sW>lr~zr_e: wվX7o|ZŃ-H[f*I.w7-jߔA)B0B2\&:NʁZ?|!82MBVo  =fQu _b%W&ԖI DjW(|tN_!dn.TB "C_oԴ`pY[o <&6qU:PJ]hmEiZe|BкCONvtnܪc{6@B !v{1}?դ)Y]"a`U_uAN#܊&ho ;}ljPB@D]悽N'6"d@rPT 70u.@eP~'#+`Q=/0]_'㔖{_Mvu4F)92T*/av CDNKaicmi xMX@Z]5m<;h{V8K5uJ%mݹ6f_ &I _7}mw!i_OD1t ߠSTƣb?b_s2+2dOfk~v=|Ž(uFhC߱6_Zgb(@3L&Q˲&BmFl 0q"sjsjZL*!) @#|`ݎ ,8$7"MH;mHX!2zh\rgL ߒ}PQANx=ƀuDž[bᣰ%D( 1V[DŽcY'#Y k :Z[7廚}5GDvpR%)x!ɘ|e ǐ313 <+;Ap8Has@4зe_7kk,pp\R% a@2?COh Grx,tA+}uٖ[ ީ/}z1A2uETuRHܗraAANBfӞ9ͬ0(oz%nI9U 3Hz0NG@bJ$ElQX: 7 C.O&Tf.$4%kr=b=ք֧g/T@e $xnwv"SȄw1)̔rzNNO.si@f&`9=b0BDa:&" pY$h!+nPP^l<^ AH&$",;,5;Ǡ8J?RgEm;1s^ 3r*C+}p 6 ^;R^]]`ߏCn 7^f[bG!EaPzM)wUۛRЧʙWRIr)2_:bl(oIrCyտ)z!|&q׻jڻ~tޫ`V@23'0TmEx}L 4(4!냜O5endstream endobj 140 0 obj << /Filter /FlateDecode /Length 2937 >> stream xZ;v|8 yEJE@ie<4ٳXh%  ̣]Uzo[?5ְUFV(ڵF,wW?5,im3Z ׬ yG?~Xqҵ]VoWevuuk c.tq+i]I'socP,9|kv3 $[h̥¦8l :DDzj`NJ/48 G8 נH|rsCAuN7v mT˰V0.y!8o@qwe5hݴSN;/1|qV,LΒg[:`Z- x6E}&(a~;܍w䛟X՟9ᴫxä㠀=rSGŮX1J@Vv]DӃ;z3araȰ{m]v T> }Np5((Sa$DڛS>]a6^W1!e]E`aGaEqqSUG4&G 'jg;RgJQ@3FX~8ϐHPp\)]~SgXDOJ u2sqQHlSqa`-p,:vO⸪\v :T;"ASSٶ(֖eYPs:L6Si!apUj?%D>N 3A8 ˆW hyZ˛rΦeLtΤ9_x:$GM{ A`2$"K8TXlVg8cNg($wvkc0*t|ʝUDb4w=”/CRX̺/3Ag0= ,J iY@s"'C4?xHXEC J18,ӄp$%Ήq!'6kD' F>bRG2 H 8$`t5KW-o% X1e2@<;}\>zhn@P bI@ C֮֐SL̵̿ <&Pċ,D*u^K|3NincSFs>EGH>|X*J/(mS,_G̷{dD X0cOt(¿r}tG@!H6B &B !'PM"R.Tkb6NUeKH|y~G B8KK!@Y:&LW@aumą)r^88^_ %c |*kRNPܾ;MhnaL†P$O"!2Rǥe$0vU%00Ue=F- 7A /{ا5Ns$LqJLVkE5MssRr} sD YdqaXy|xQp8?{ *gs%cU'~5$멦aZmWsL=V/[At|lŕCG@,JU0$%wn,[#1xeX橚AiOSm>t^ꨚ/\j^6>6lx9 {4=\6-6{JBR/E9sJr5];e0g;X*;Z qKy uyb󞨗k .$nܲ^xؿ /Cʱ'wA^OBf,MJ`Vg' Q \45A8cK,6x( n[rgu*|QOHn4aP?|̩?+t=IpW>}5}@jLg𕾆 }'eЮZVε\ bW(MO*endstream endobj 141 0 obj << /Filter /FlateDecode /Length 3676 >> stream x[͏)=㨰'gZE[_H $]h-a*R\F. ,Qo~37u757nO7}i-6oniTe%oB{CA#1t3M8;ӛ]8 pBXpoIw8މKBQ]\Az9(Z.<[aR=5ѶƜhXm kRzo3m5 ppnnkKIYOMxjgq)+ȋ@8yρJ6 '%#u\:}LwStT}j(:F}#/##.4tUU0͋ Pxyu ZwǍӍN ^WI0{OUH1 )jkF+8\ױBbʬP;%pƧWnvHؕYq:_4 ~ڲ~x+*~>4c6e:t4w <@k4^JJt]Tz^@@F]MD3[®D]pd:]t(]*74 Qs:~UVJ/k UjJT+С+cB): qO`M`,0<,(gകdСKl>x0/JgUG+Yf:욇.;^eV\):8~YJueC{xYP~fRIeVs\,/2k!k.t|eVCXfUU #ͲP*:T/z E#Y 6y\ou +RN;8{U=3O*)RąZJQU 'l.> 61Ă5hQ[bĂ5+E XyREoYt}}c[ , MN)XWKlpKEw)jt(kD=-Xע:cEFuZFdK ,x\O,%jR.T/{k)XWlKEױkYtZ3pk]>!kW`͂+|u |r`xoB K_K8Ֆ}Yޥ^6or~+)V E /04N{enww\S$Yͧtx&Ӽ!ɯ Bt)3 s)ؑa2 y*L^ϴDž(;fj~(|X7` ;Z#=#i]}7<+"Sb &sPCÒIHZ4毙ULiQXmE +=vy'QC?>'.2pAJj(#EEdt]&kFizۛyFbs=-+RڻKeFݜ㎦lJ4C;dM9D(yH92D!Db12OZh>W2R# ~%oGDp(a=#^mbې I\d_ғOüwCB7RU\*XX>5:>/iƠal?-#53iIvvF2NG@0Ph~hľ·m>aU>)r烡n!2NIRhL %8$]Ϗ9ϵ}XGnLef% о.} 8%<^ ᮣḏ5\j6t+Zp:dHV`$ϠQOeA&Tp.0Ϣ'T E o ({?i =LU^|u_endstream endobj 142 0 obj << /Filter /FlateDecode /Length 4068 >> stream x[ɎO^uѥ,cbnL>ز` Hj@5>PVɬ戬\#Y^ƒ`aXdxݦ٦]}wMoϭ0V[wa-k#ֶ6VlW_UlZj~~oFUw?Y[mSrS767oV}7N~obxk޴뛫b{MmbWy6jz_7[%`˫nZQda$?һm qyt 8nwhVC,6υABN>__} 땖*Tnx$,h&YVB[0[KbU0na-5q5nQTon`(!U5té[Q *]5X'u*~;Oje]qCLW7'iyk!q['/4UUuUBiAJ7\ovLR; Qk6 ֎~qB_Bziu΅&_P| nD`h&J -+KX7\H yZi/ޫ* ?[r T(r_Ov0{_/hGO«䷟A4*%тZ$!tq;F}{6"<{2>n=!֐xPwS7"%G.G.[Ev0[%0/{bsl,1y*7ArOn0^L&=4~;0ga-p{a\`'OcF gNUN x\'=K},k3^,|k,4sS̪Mt`lQ_y"Q$p$d" ߽˒=O3Asop$k/<9JD7p5lhH1 \[()6Ң8 f5ITFL7;.L]Qg-)wϕ֋ROuA܋rᄧWmD)DC!M Z>;N>%+>D؆W.@ce2vE0'qSu<R, I rFGaz#¥!%< #yr7Mr wiCfO!eK1b4U|eԏU4$<.1}r#~Lx\5ğKہ.h%3"OUP^]t:tOn>=búS@ ^@9C-=)%e x+lK_rdL_ "?UG qYw]h9t1Hbwd X DM!{z[r*Cѳ=VQ8G1"_ àT۫ Z-CS+l>y' /@FZ(2}~l6 ~Eހ2}=8Gzwadb gZӝ@JU/]< `E'!){)ʕ//rY]=/Eeg_mȫ%)-׬pCم=e01)9:MY/‰ǗCm$zpA,ZJa1m#!c ~h~iU\X$p w .&]#YTS[qb`}mnMNRZj9 dOi>+irFtvÃX/D%Oï; I8Ye SseFTJus|(nL9$QzOl$XۉFԓsyOCV7Pvn"=l)4-UXs4p<;`@8$ZB7eM'zWxhYF!.XD/d]7xvU 7jȳ9>/\TG]iM{."t4 ]:Y-jN>'YFa]`-HkzrUcZT> stream x\KI&8iNtlt8 .C0C["Y^il{2ѝI='>%uYU*٢Z]}{z/.Ղ)׷W [YZ_JzwU7@ڀ0ht`/W[ZXxrY4vUaz4w˕tNږ/ڧf}:YyϺtZ_w#5 l/*X,v~G+M4.@.R%w2-_Bqm?\_}ӕ Pbw$̚|rRb &K!Z+`TZɗ+ƪxU֬Xmv~VU)vK& $"|PF饬QrEQUxI_9.%}VF_d?Mǥ8+S)SV*ƣ.6Ǧ>6ϣ굟 Es8 ФY~< g$4Jn{? &D}Ta~xFT\lh|5bʕ }a(+p5)i(D=pś4t.?q+J A\XaJPu!!Jn@]%T$V'A&jZn{<v\{sBqv@ =vR) '-Չf dO ;ZyI{<#D:]"[}qL˕f{q4M(ĴBxF>mg͇=%2+M(e渮 >IW} D:)oE%a.ֱR4acY Id6<113j5mzWI3aNOA #1\@h6yx=r#8,D &h`zBRD.}5)})@m'9b] Krf5+n+!*>C= ʜ'^hDuҒaZt@DKc"dq`WJTL~w|તG-S|c aҀK%j6YL mVm< t@ N 83 f[!\UܙUp!VJ/&l&̀u0}Xk\x֓u &vo_fNFx)xZ-r}9ȧ*)q.&2?ֺlhtO"pw)YH&$zXu1PvgB&!j¸R(5kL3›Pw*JYHҰٴP礬ԇ&+ DZWO5HD@_,qa2ȸ*;fV.T 1"=bh`':<*pV b3KƳ|N#Uk,~7wRZeGMYƙpGp) Ң5.9KHG$pg-MXk] &{!4ji0 A=ǰ-?aq ˥ћ;G5#f;"3ΥJŐ AL*f6h)jmyXs g'g-Q0k 9沴L5g;O!)+ဣTFQnJ4 }Ow2MX)bEX`}d@ŪJD<@$V=`zb0qQ֡K/"bȋŻIpF=OG\fڔ %Xȯ84U"ьr~7aeSE/ PLVb-lfZ6JT/A]{ m1 oD9ѯ3+\sX?r,$Uyb5o[YF ˸ze6<Є]KQA3%l*R$cGJxjeͨUMY{ѥIw6hvz )yMåQEW1p_R'uvջ}yYQ@Wc^fMrp2okѐthͨ޹NDn!|Uw䦷ڢZM:٦&'vNL+N] kqaOX@#>>clX|!#5|ޔҰYcd Z#glQpDMJ5,fPre¶ *?X{g{Q nCR}wSq*@猉!e39u=ɕ.լ+W\R%x;pY&NR%cfJ#RLa>:\~+qsWB wldU 5#NLa<=3JKizFw0„e`a;di\EҥN}JJg>KS؎#L8Afh䭙pҠq]oթNDfi@XyӶ;Nphn!eQ5vgSٻӾN[A-LbY)*M x߬[ehֽ9C >\pUfT>x 9ex~Zjc*0Cļf*V+ F 7bErhd kJeq(tm7n{r hs' D#Ň]v͡oqJ 8ҩ"<ٌ[H?Ѡ(yV !7S'9wZI X0%N Fmih jNmNW}O:KFq ɞ^ e) 6=5_\vendstream endobj 144 0 obj << /Filter /FlateDecode /Length 2700 >> stream xZIoɹ00&j_x!X ` Vadg$Y>n k^-{k-bKnA Zf\VY.lideK]ejmE+*,ڒ_<͹V‘ӊ.C&tQGZHWQ /Z-0՟&/3CoWk%ɗ8sʒc )~J[9#ȍoJPcWE. geiӌ OV|L1h ߥs^b,9a]Ɋ;#pF`paSs ym91v0IAys6d 9t ;ɵ.ÊY1r[6v Oa_ä&A+rO+0IsX&7a`yq&?Pś<,^E vAV 8E@S2}}}\5yX%,uS a,Ǐ+}L*:7KrͩfZ< 8[&#yZ1|_:"KrEK2AsJJEIHڢmJg2 m*TktXsՔVd P?9_]{YRPw}S娛-Hm.eljTHaT,}e5H#$- ޫ၈b>t_(aLl#RV*4- ZI% ,O1ȭu; i4Wm`JA<McoR2*t<1A7!!Y^] jGЂжLn4yXthQck緻5I";H="3•~ =ֱbT=8龒L(sr󻗇m|Ub`q0" D_QI*A(>(P,@T+˸ĝ<TDz7Mr(] E^wcVZK&/%#Ҥgȭ Ǫ4Ǐ>f}BbwmCiOyǶ7BG]k_xOg+y[ѯymK8aUtx . NEemg᧦H=&~_!<+ Akᱼݪ oޅX<"KPy{:/{ǁ{>482N2Kz@C!;`b#[ebPbvPɢV}qfNK3rj~ AFy?ΧX ߊ]٤'ԨD>$ֲM8EB1 2#SXfڟ~7enj<e:҉BLxkgI6pvna׳l_))((4* LTbgG0(|4wkZx8&Ė Ľvl(3c6׿0z9+Qb \jb4zL0(Squl(1K]hq|̽ZM< IAbcxsӀP/ (I#P&BGXE= ӬbBsʷ{k&o=eiêƦ{)i> stream xTMS0UZ}[^Lbw S}Wr8-\:>x%\pE|:"{0lyy %;ͽ226pri V b)QVfhcAN"I&Z԰d2BxJ}yC\*+?-޳BCp %-BYm).lcKDikZVHaq.WPӊz9 <~O:q%(W{M9A#l:H=iEW9d)l9'!Ulfj 4OH/5Kҗ7fo (CO8fϬrT:/PsqN;@sN@6# p=„qC]GQ \\&bkv) [loM"Y&mp9"6%3!t36Db:Vo U.@õ[8fgNh!Qi=TNqM@mtY_oF" i9@lw'Pvc!`"2Y3O}S v>m<=w(FH}ҷNF»ժY\|4EM7 3kW-KsM,r8KH.YO$zw$1q.)yaʦ~ce?bgendstream endobj 146 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3836 >> stream xWyxe4df `VX'Z`D+P).JB6=Ӵ>$49m) PAEꊨa'v3I'O\/Bxg~?T a#Dv1G3f/I|-w4_9(uie[ӶmߑF¬)S "XAL Vs*bO!4"xNl 3ED :%&ˈD!$BD47AN5b ^H>>GoP AK'KSw Ƥ44rSkYܕw3^%1F4*i |{hI{ >9Hrbbz`d^ϹMZhmw􌃷6Xٖ]g^4ͤת޹ i۳67q>E*?j)`k]&R8u8aCbж:;|lė&˗  4ن=-+Qcy' ~=90033iY\ :f};q"Q7hNmZhѠ+[lM[W+a6Ҧi4B*餧s)Fnj.Pja󾿅,wA*z)_2@-2QHY M'?8U4h$~v]|6I ^#D`Hj&0ɰ]Kgc;EjS9MTN1#S #}{iPL{9|-F13chv6~sK^BzTӁ;a%>py!PxFQzAaR7uHac+RJf?S7wj11R*E1³땷Fo@K\Ғ5Z=)!$&yDi$8)qM=/ .ܰ,,P %@kH^g)Кt6#m&롵eM$ڪ|r4 6߲~ =.Ih@35JT#F`Ӕqϧ +-p -W4jf<7{vPR#݉KcEIţ&0RJxcMB9^ڞ|П~rQ3rSћ Tg3h7b(A3(z ~C/r km4֬/uF 8QG]MYrcY"xdY";gN}7Yt 8(.=@ofP%z; {|\2ڊgfPudrjϡ/Mnp3})f";)JӳpU]2(D™q9^P7(+vD44777!(_ksyjLm@ױ8OBkb# JhяzNi XWX%sT~â msJN=9XV?-AX4V#6Q`ohruֺ(OJ $Mhhġhf֮rdvXm=oF544pGu-kX[4enn JbrS''Y,5A#Mdo"]x!a:q5$1"P" ?.pG{l8C~~K47-(qn#pcj8%'u'j[! R~Rw,92NKQDzXX(;NCxMT檊 3__PdQx-nZ.o))O<5^4(}v=!Ko~0 eAfL"bNw)%(ʩhm~ 0\\tsiO&%x),'K9[t>>6fBj.qJ@'U˶I7p&JF4={AϾѯ>.CTC:#A VJnK5{ĦWKxu6WoP(zȉ,;q׋7PEy*ae}Ywo{yb,uy7XScMrA q,C*4wW>%Y&āg YEG(8mxdwkSgM^yWEg՚44pN1giU++ (̓K|{T*BGFlno ?'!xջR |m,`7rh-"}^KMO]vHxhψ|krLq͛woX( H{I. %(S`,"X%y'55C5S*BZM^S~wopS{e0Uy97O>".8~ͽYw)RxE)M| 4 ܟ3ff sVuQ'tA+ڥiOYOnel&KYqRKʛe̊\Fot@I (\zvێso}f{Tl;t ژN1Jej)̮|9W9-`z3ߒgGxtƸ[S0CCԑ/Ӹ6)KJ2ت} ݽ䞏:x} T̺6ץi9q]E)ɭp-#>AӹErgP~>[VAFjR\߃L"<}~~ָ\wt`F=!}/,i9;> :Iod/nR㢷 {=.6ǓӂQ M\RsZWRQr~yx40qIޡwmzT$C ^4wvcmhŅ?sɮ *DPwo.J4:#f7{} z=q{ezAcemr6m`0Hk^X(QAYendstream endobj 147 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 8216 >> stream xz|Tն CzG9""UQN%@BIdZfLo{j&I2@(^U@,kAͻI}1fΜo"=^kY>e_'"ۯ靚HЗ,>`4pb Z6[0'my..\$Z,^"ٹTL<~E]v'IZg]rtJ-_mSTLK^ʫ3^ܬqb%1XE %V5b-1XGoW/W|?0}'V5xs+Oz'#T>同!0sC/ wm&fV2qÛ6bЈ#>Lӓ4r3g,g~̀"$KƄ%5|"Pa*ɩx[,m]Z d\9j :6ME!lFs.ӝyp2M[wFw.[5Pvyptk5^!Ucs\Lw#fglv nsZ; jɆZnY۝"| #E\ ݜ;7Đl lM"E2(T$بپT-5ɀP[[n p0$lng]HPGg$?]P YSc" xx'AtYv07;e&:ȩrmJ%O! frљEGp-S qs,ԖtGm'N^`dl2tXĭhHqO[jkR=P{ %AO|xKO q%j+i5لfBՏM[?v+Yith6i DZWiQpnɡq$u@]'֕2ѥܢμ=rBjM<"<]\e;E$['K[|ކB@9NrgiAכ;&'&p)Rx̸] *}67a(yr{ݨPDqw iɁTj ՝//ĥTirMK("%M(O,džZB1S[t1QHT- zŔpH# $N5JV*Y7&`Kɰ ;6Y}g7Ĵ$HM6-d2fx=<0 [1]{q $Z J(8rX˽}9#%Yˊ#īKj"*ET@*&|lWZj]R_;ۏ)X4iB$ƙŪ4JVI1Pq*}֒"|R(KH .8,8_|eh ٖ@isg̉4LyzvDU6X6[,Mbu wbTL<TݞR{ E" `7}WBij|`5 J~cZ@L}ܮ<س,)0L0\rs2&"mοXY,gгh)4eϱKplTacacQ>ʖg˳,Du )UKHf%1(Asb͒,[ x=l 0%-1X*ț7|ds~f! Gb򓓩#L_Lo^9~@,ǜr*fͳ^}_M0.MkS`l!CU& D.بѝ/WzRqXި+#š'fqC@^|7lWe폖flCLȩcPFU1j]4ZԽ_,겪3[[K vfWR"ĥ?텧؞_ ?.{! OЎ KP[H*Cs߮?y T kFѥd&%u@ahQ޶ܘyD/s}~?yjBOJ%Bğer&ð^* ~#aF\"`B٤` !naKjk˃Aܷ>yu h4u^R6YY) $2/~7J8hYS.ų"Dyik![.S)&yMml\g@{ʵFOz |㭹1RcZVe{0?z<K`/s9\@fަʬ~7[T6{HG yMi6!>[t"K& 1=?_*uRW TRAY0C.p.gAN'v,LVunGuts5 #\QP]mYa@z}=EݥKTbSөCh%7a}?^s *su5%W5іDecK"'1S3- me Zoprp$և{w' y:'nN-RfLbԤd*,~1HUw_[ijjxuo2俬~ò ^'Ƥ* S/fm,V.۾1)ap ֜_V6@3$[juntK. hd$\Amŗp&um#oڮEY [Uʊb&_ӵ|&(eC)& hdslRfb1I4(z)*7^g5={샜zaՖŅ n ѸChMkӹL7 eQoUઢldEB%əMhf4f'zU?kN.'I nm)(BG-UtbPj8si_ubg3 |Q&TQPu7 ;5*X_}%s].$8i{m 7P&wvH4Z?qAm8 @(7(J% ֬=%en"Ex<<,1l9e| qhU\c Hn"ltZGfջSe{%y<[ڤ4j֡Y, %ND6V v̽'5ZHi46}Ѣ?_p%$ut -Ԃ\}2 hXx) +w e = T?2୦yJQ 0KIĿfI"¯v*Nz&"TdS z#=8zA۸VWC^韡,v+V-M֛0&KnΉ|FfF*0B#f8p2+Top܁๯7–` [-p8oku 4M(n3 37vJɖ-p_^e+N\[+\&eLLG\R7 -@~ teۻ|n&<1p3Y" Q?#?3msȝY^oe'0*чEpt<'fG@-קiR $cV,FSYrѡmrrQ$ h_2f` ybOb}/\5PcIfX>&hԳ=wE:\|Zs/nH33}rwC'kY/LF 9p  ܳת*:Ь,K5Z(L&,Қ+VSQ4Wpџ?zqA~)wąr4M^״ڎzT 歊RJR}#3NZK*svOA[t8ڋNG1kZE"sa \=~T;eIw<꥙g͚ [.{=fƚm[cd0`G`檀Ы(TǗR0Sa[`۱iM@eA/۟.(f@}w[O^lۮ(8@Ђy`+5 {; C< Ms 4?/CCF`qbx6K»t#}}c٣+վ!V;a'%. MGiL %[XM_pZ v]L=^g%GI^YTzYv p旂2Ȗݱ12N-8NlX |C.vB鏪+9T#WL W`Jg} }3wendstream endobj 148 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4277 >> stream xW tSպ>pΡ jMAD\D"Sd(,CZZ(s3Ж3@ZJ!`)("(*NjW}ps};zosV"&(D#"F?̙/l}'2F¨B?gЉk‚̬EsJUbU)[Sm_#=c3Κ=>Ĭa2Lld^a21bf`2˙Y f2Y<„2(#fĄ1&L1  *X"uKGB^ >Q3F2Z3fV>>_-R}Ìw`zř^_ZX,GK2XVEjjwjw6[6 6gBS4?Cz :KKpR|iWD_s+!x($VIȤlsVB Qd x̿i%O!|qSP( n˛8֊  7#^Vx+BjOeF)q߻6z}ٯF:c`)\ 7M( &A,]XFuhtCXYM.ٸ`P̻;/%xq_3pVun7%1d _mmWrEmVN>Y)E[!y8h)W1;A^:<.Y#_8qD=k+4d getKbXɨO > oyǥ3G>o'kU_۫d~,FwIa6ZZZj4nR޾wmJZЀ/:~ J#9lR$|0"rx9~ --q&\Mp.ȄEI1nڿþ[D6o2;+#+€! ?KݍFH ~v*$/B}!od еVN,{߃ ,?+4oiSLR5P$dt28Ա^,ܐ#˕TBmr1]0QݵqpֆNg'C;lެI) XI.Per=MyĨ)1WZdxĜ'1h>yR߳lQ4)KYIT1tnn*}W<+_Rt#o^dqB'z&aWL5@>0!%#TTW?d++MJ鮢"PW:DuF/r~,z Şo|ȏNL[#/d*~/@GjwL>{{o_w<d8XѰ'X;nhWrUzWA=%_#-QʃEw^G{axo:Y?|(ƾpԗؖmM퐨KId7S\<Ŀ)N"9ٍU1^[.<}]YGVn:\XÛزE@D+SKK 9L_Y(,1a3Y0d" bJL; ooN43 wxVFKF_WgSU>Zzp짷-(YV0,So,>-՛SÑ(2;c2zsdvTLƊ8ۛ=ׯڢ9Tc:'?/$9OݯխRBvJ: Wq괎hv@;=a O#AD$un9'̍| k8^mc]Cn @v*MG8`N$X!bleoG1b>|zJLY)<9i>~~YaU:{/ԡ#3dXi7c5nf:{ŀwg_==//bίK-P0l:O_z>N)0* &UڼCoWSOR%nGÄ[>1^3^f,7A(;;] '{[%OVyL/YtzokH $aRcsc]& 3_x!ZNӨet+Ln:j0x iH`Q#`T B?|M |endstream endobj 149 0 obj << /Filter /FlateDecode /Length 89 >> stream x+T03T0A(eUeURɹ N!\A zF !i\- z&&F z@\.L͐,.@ (endstream endobj 150 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3666 >> stream xuWy\WBBu~_ܦutڢU(nXq`@d'a d$$$,J؂luSV[vO[zXl=yy#Q`hTM3Bgތbu8#)#|z{KJ޼hqZzF4veUv푬J7uڌ7B&ST$zDQ Fj!5B-QKpj)ޠS3Ujj82D(j(5b4 Rl~!!k雌 "9tW"= X(G/q/m~^`]˺:N}<wx#Eq5 IC!QL0lX٫Kp>]>@.g, ۲G78a ,ۜ~FDK͠t- nA3BjMTnU艿 ?µG?||wJtSpZ 7dc%,,fc]Iq8k>5C M8m#1,I0.hZS\7χ9*~:q733Pt:ʮ?ɵE%nk<$5cB%4Zݷ6-R)iN@g ޢxW!P,[sLsoJ08hSr*:lyFPSMРz1յԊˊ|Q? i긂%G.j׭t_ĥ¶jԒ`O\94b/8MeN~X6%80Тyd$}C.>9/(Bu残pFzZL^a`҃-jg^^4qç$HҎGfo#Dsw\޹ChHHmvN ˷*LP! 7!P.]A}-x+DR+;e!_y(ǒu`./*DΠ?f=e>4Y lcLB c>m$8} VUaҜY$&o:n\ӕ38,<JFc5.7oBϛ`пM+ӕi|#:!U"{OSEFFVHAe\kQy 4E;WEp1ۥa%^v,gŬKp >ow-` 2&Ƭs$HcҢi},́MnAo}b>v bdo3J8l *{זUG!vUz\`)'_œ?!=Oե_y3ы$ t:2=x ̈ \u.i]BSC}ʺ`]hPp MpcNE m3u|S cQ 6#2a5퇸unF J PvP<Ǭ5ϧIS$saG:㛹B]άED&kSwDDC;c/b,t^dOd2 4nջ]7ʺ~j)BT[T,Kݹ5#6ƆYcp{??_0⠯Sl1_Fw1ųyQͧL~~>iQ&PeHǰϞYA2[D7W'tlhIkmЃ g8*N9  =!_0>ʳd=WѾhׇ/RׇƩ;w],/z32&$j HAooMN*u J+aUwJcY+-xG xr^p0uv "הq['TJoݻ ԃx:FS|> stream x}lϵcn\ݝ4 ֮k'V6^FU:ʂ@7H!!iӆHs;;91^\֑HҪM+֊MӴgshڥ맟}}kLaa߽@ 4B)ЊUw~t/5757bVl6 &Vv`,}b 7l6͸I0}Xj,NEGGKUd)#!2Zk_=8il@Q(Lpep1Z`./ y +OPU5 h L>E*q\# d_cc޲SYv?05P=ݮMTޜZuzKE}mh lcǿ=B{Au\|v"2ͥ6At_ʼnX53\ĉ\ ߓebefev&z~k$[~(ڡ's6^I4( {]m4Ѭ=Yms/}d:#51fC ~5x;wjXl(AZJ7~ h:lޖ7ϥ' eVb(>f 3G"p69gșșp\9C7tv2^k "߼eǃC&&$5/khV Fb4([ΟqZf6j>:WfHRms1g2S@/ܵ}{N#!%v[)>Fz9Ruz%M6A q?pY>H8y7;? o tRbZ?HXJ-o:c@,cOlp,ϻh:󯽻[ij+4]mo:I]p'\T{dw?IP KLS3)l:x'D<L*IFEhT sG@~hʏ_z2O]׍zi> stream x5ohuw9aENPtsMaf%Mr.ݥI\ƥԭl뜛ZP+.(y}HA$Iw`roNYf-S[ooztyyAl'vMPm;a%,vZyPpI܇a9Ƒ stԏ sBH4Jq'4@^)ͯ'>C6_ &'X[^ -*@i` LPqp xdr-5{ u:,P2htߧ0#x?/1áy&DQ`_GfAJ]M9ʼ]*" *h&+np|o;5o[ϮX c, rl%i+>ѣOS\@MaF'N= ¾)dُT.x}ew>77zJ~'s\*_<<2_3y'/m>b2;~8x7Ew5%[ٛ0qɘ7FEJ5=T5U,Lm@5v8;+gT.1WK+'6°CuwI!O z*#$БS8^8'S (;+X ,?g[eQ+_*\砤$E>H=TP"_F*H*od؜io35H4m3&!mDB4镙_upi0 #%/K%L#;eUm[غ Ұendstream endobj 153 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1294 >> stream xmRkLWa;-6gKATXDⓈ1FEm"À <0 QYPijlVL4FRlSl/i:5M{ܓ{s)E4ry@}ig@1+ F>9=;aUoΉ~#T2NO-Rzje@j֕Qv:~$˜tRm_(>Ɵ2:(]8Sux[+I!2>tx 3 %%O$Ѥ$b!}èpYRR܄j[Cǡ$ac(FI{Hv7q$)8ۭ7п_:/V|E\93z]'(`HoJ(9"M qd7 F$C6F'Ũ\Pzt ; [#S뀘u, ͼAE Phz64 J׉~يʤjl Aj Y{l-Zz*&TCdH4%wk19pIt ᡲTnآ,)S̩&K$t }E2Jj**յցV(*K5ɽ6 ty 9rq0y=FG}ef! !/`S6Q됫[$׌*GPVVgqW7E7 ^&CEۯ'Oa8 \529.WTGn };K(&ݪnhݭݭ}p7;r598K0Mx ` kx#2_'$,d04R{qH*.Ľ˳eF3'RPs:ɴ](xibvA0ŀgwzH^&7MnWcmNQBqmr)#⟺K"DO^NqW'N< NW.D F+ȁzQqhP }t+~4 a5,5xwOe% fU,XEwW.vܑ"ORmCwf#m ^]w0^r]A,sb6K j2;1Mc| IL=sC HJ(9~ZLL: @-eX.) h0#k*0z_~X+fkmQkȯB}53%ŒR}댯I$T IB“@A-p6zX*5k<Rz` E}'Rgendstream endobj 154 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 519 >> stream xM_HSaϳesg춂0\`DIXv4-Fnl9o$o!%Ĉ,@o ߳ٮ> stream x5CMR8v}-  L0v }j_:T]-}ogB(WI&;AxᚽӎtiFvċ鋿Ћі ٕz0T@GP1Sv"F}j 7 T#endstream endobj 156 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 660 >> stream x5MLAYZ * ={f DrJI!mmnEivըH Mi<>< ͋z4ٺ8${M(ޞtJ= VX#O}8g=?[!Z&g;r@WV_̊)DX%ۑ> stream xywtUh BD0샥d)BH!Jd.]Q,;.;! @HG{]`;+'e?9u{~?< xyyy7YvɌO={QX9M7` {S;ty'^_aAYD*)/R//)-+\S'|j]3}?R=[ oykxkyxy666^m-={iR3[ySxM1<on^!Mn=69=nx'n.&}YLK͸-wL㇩}ewt0~NGQM`}p{=w㺗GK޶?2R/aPnM>4A$: l_^^hРܪ`p=f2:l,)qvWļ^ވ Ba[uHAcv 8[v\3̰u#Je({cMohq&N Ap?lTawQ_Ϳ\^.9.3B:<}~#:烟d^v|JA" {Bfe8p]OT\u,6ΰV8cA 5,yy il7FdB#p7fUor-ahh;3?/ nx}ʊ|='hfj'O|MqawD;/#7&CUJsC5q ZgTfnY+271U =7`Ukb ~S}_‚H`Op)93Ϝ!S*F܎M@KJ[~/`BWʶBs\1Wnwp&vΙ-!eM )31}2'BNz{pw/<'i8 \.Y)7i2ZZղHxSgig]w`@r %.*hɖóB}Ԯ::<(}GD{~|gReVLb,bLaβB=eё _b0"Ž;k{UVX1,՜@dlj6h(P,-eݴ IvakiLඹvc 3aU 8cpx.[N_zoΤpm6` dX(wT2Z5aPj7mm.^FEh4]  .]좳cp!aS2hgWۧG_T6ksQyy WQ]V`ō>'tB+QLV4 (%i2Z2v3˰r, ba{뱁AfCj4`*=Hjx^?, Ƃc8.7+s[^q&=C.?GusDP#wbtpf@̹~%$Mf4>Wha&` ^Kaf!{~2h`@3%i7zm^C4 -ZK|(doX7>8U\P0-нE9BaWnLvwadZQȀ Wu-D# WuM[nqv~/$ ndmK |{Q]4k&Ԃ\1Zkp-&NBU߿-bIF'ud?vЅcJ]S~܏*v+x?~d!UKHq_uO8gފ&.ھxsẗ2ow 3p,n>$=_5͔4M.hp,`!.fJ%Qj#p+㈶ngw{ CGQ6@0w7::jZn2v/uY0>OY!|@tJ/1;,RLI2R+ݓ&MPh+cJ椦:[@V]U]pV>~B_ZU%۠"˄QmO[RRrlzd6x ׆JOnH|>ݬ2FdZP{!֒)UĢ$)?ԯ먝@Vu ݃ Vţt1D79Ѹ'鎓pJV9r$9S h3i Xx&Jm׋$**$7RT$@4y Too~u& txvҿ;:ZP- 6=`mhbov3c\ IͫWkEfyK'ؗ>K_ v[\Ϧ-9 \>ONla^'>hAoTI%fTAGTbtzS {96n ~7z.z.~Æ A-۬X0ײ@ϯ+Yeb߮}+bx|t[􄍞u$m GHE`eĿh=t>WV-GC" XEJIlu7A 8G:!+TrBxM}y|YO 2Zƪm,eۑk`"͑;"9ӰiY j+#f:-[HIkD 6E3h· 2 v,TW\.N!!Z*3!d&W6hXw@ ef 49ac4NhG** "2Xpfwњ='RUj$;u3x4O=6ðl>f&ߏ^_%rx>AsrrFx0jJnU AZZ`Y A%(xw7wrR\aP,(|lqπX`O`Oph._j+ =On:AhzhgBh"k:PoS+~CUh$%mE*KsD$<&IԲT=|TiZb܆K#r궑܅m>wFF€ t̮]$:iV3֌=;>DrX5/L=6{uf5 .)ZxJYwѽ-&12ʃ!Ǒ98Ȇ1#?"NNN}QbQLM\vAANtE"[|u z,k|[ h`숼fa-༷ADتT c toܭ/ snV#Q,l}v\(}Z=Ġ.Ǽ#'UqÇL/.#=z.$?e>Wޫiɥ4kj+in,x}`&mW qΪu\\J4B k]C!`NND+nuPD*Z쿝ȇ,_<9:p3&(FM۬6+—i" ЄX~A6@2}67G> }e^$ujPYS=tqW'„Z\.X mxffH&k'#਷ÛBҵ;Kmru.3%՛e_3Vhh2IɊe&I$G]I)Z59\Ei_A?>$^G\(@e((#X:J1MHI>cP dy#¾$'QֻGXo;*=\Ee|]K^na f͢`B,vݍ yZGX(2+HnA)qdܲiޙܝc>̋w$]lf1-:JevFα.Zqa4,7OtFZ@#zy瘦϶.}fDo 9Ց+2 $~AC2R?9k=%lË,bŞsk%\{2?ŸYրU (_&K{tu I>Wn1M!cp`W(?8|WY[-1[ F- ˸]lX%w+vl=M| 65Y$2]P*_yD@ZlqplғHh9yMsA]+WT&`P3W w#/p5QbNhb#쉆݇v 㭦JYHD\`zȃ &٦ÍnGR,mr^"쟱~7Gt#\{AKZ# =˒w#ٺ$?; h~xWhzy,\$ 4d= \L>q1NjKoa 9wyuܰ'ԗ3 nU=Wafi7[؅#;bHok~rbB2{ɪvJ(Vބl`RCaПM9?0wM``-`TYendstream endobj 158 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 144 >> stream xcd`ab`dd v 5420q$caaG~= Pn͟?2e? ^WTֱ[CwϏ^o.9m]m|r\y8yyy6)endstream endobj 159 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3798 >> stream xWktSeޱdg HC lApGQaψr,Pn"RKzI4M-i6M+`KPPEę9Ψ_f9_ZquΟ3'++~>>uP(F]6wfe>0r(,0fTwǝSt>t TX^7Dd|Z!!q^45%zos&ҳsWw<Gxj`έ_j=TOi<-^[f.bK7R$p4 lMɱC̩]one =^c8tW. ByK.ʓ|8fB=hV仫Q/y];.8< A y;Ѝ0M9aL+󠁯{jBZ " nVW`\ŚfnZQReŔ9i"h|WgU"FP-NRpp:*7 zU9.s[M 8 j iB i@,ԩA([lO, 8u5:I"?to}\_ j_-b@!EEB[O6~ s};9* U[,%dmwph#4_. M/5+~gos4ºB@* !~'p_ib]*-SI@%%w4'AҎa8 "+r!V=.l;R>"'$5OȘ]6Ml#+1)3Չ*3Sj0Ags_{81Cpp&c7}W p,bJ+?.ƬLյVܾh(I; e]u 0u5]} >ѯ~t5>dPSQo 28|>m:};EqrL]=j5-e?}XPWJ_좤7-_% d&D{~Պ5Dy#ǒڈaX "pժ.vlZo?3At#}2ZXlV\0+tи s&3$'ʓ81 KHQA]ƳE씳`ݖ+i4~Yr pvcp!eJG~6wirf-pwϰHAcA!5fUlZu.*+8(!V`jF6W CoH.Jpkwk;"9p!Exi!l\=y3 .ׯ1znZKw.cӗMVI#/|, fťYGЌX+]Xx-mV&ï6Y8I#OuOOSR==cw5^^"tHܷةe\ʰ|[U\~Tް,YXا2זΊ).\uth>MXwv|9GؙO.5أDQ!yE)E[^1E$7x'w8f2|侑4=;| 5ƽ5|D/Zœve%Д*))%q~NʘtPiC+!!YDeޭcġ],[Rw}eT9p#k$F\FΏ>C.4g7 _.?>QkӰ͞WjbRuWNV4?V%;II%DxEPjGKWzcV'R@9UQ@F*ڠ'ֈ-bH)21 MӀ-9-|Lr> Z6g `l( zDZ0mxej*Y  6͠S% CTClka BՌ$٬q؀th'i6CLS_-;VxuV6 1VP[|P[탛b\8њ؊[6VHr~5 T`frp O_,0xu1+qdxq.Ƀ@Oxmj~kի'mZ@@ ~ZVQbvშZPG&UgRu1Y} 775 7^ _B+u~@_}MnVV_sX`CcH_Pt2We=~ĤҌWDI?9?AY%5,Ш)cLFcĒh֫%bԫc>D*@?; c4]kk9wP]{NrwpW`w*Zp^¯O?wŃ~ fZ#!r kRE<0/עr gBubM~A r0xwn⵾mʑF`ج@J[qvl"y$-zkkAkAx (#JkWWx ˳pߺ4-ejt]cG1vrxt6)mN{]"eɧ̾2MVpfo|{Tb.1bO |笙gQ#K5&S,fy?gyXlVVmmf1(/V_m ~\ԗېָ+ 'cwg3ưՁyendstream endobj 160 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3117 >> stream xmV{TS!$+1סv}XlĪ H^R^BI W y w6 RAQ磝Y[SZiݪcmg9#sţ(#xM˗~m䃧{sy7gxr=ϧgdGlOe?{UJ-Q TJ^PTZBSR jfQޔQsyKh*9nJU|.qAKz =1 gf23fZ<<~KP^"Jpβ{/yEN;%JksioТ;k%H.EQ?߰ŕknMwvGPHy${ޤ\ώ1|dqF2`=%n˻)A^S9g߮u1oj+plw2NL ɱq8L K3^~Py3h.rΤ8Xm`>`÷ucVؖo9=2g5N LPԴ*D'jsf%,syߙ/vcL=Eh՛*9-&";M`ɣc:Ћvw' @D&:]khE4T-x2]ž|W-ßXGaAH޷u{Z|Gy Eӆs I79z>bx}A_÷]V.EKqd, d7'v_ k"B >9,g񎇓&Io,]|O"2i ϶-ѣLVT+a?#ߚ>f}KE*;?jm} >{]ԣ#8WI:V/H5% cNٱ̠rլYXe4DLZm)1ϕU:[٘^<䎨;.ˮHNUZ`% {P-b@_XQeYh2,:]<'9>UrY[5ME_]MBH.KGV}̵ 8G, rj}.0:|ZG;X+;ߒ:1AL"5&=rhհTUf`ުHKn^LL4|Q+ΐ^,߻eCl~ FmjI_؍A?;iBz~ Fh~uȹXnځ99& x&.s#©+uN6xlqv:0=KVdfQ }oENJW$feuA "z㮈чHT-(»K^C~sXr>Iy c(<ӼRٮ>__c٤"EHS~ΞC~gͷMLMkT14(Y[*S/"{ATw ݼ^Dv.S) IObMžva95ޙ.괍MFXV!yeC([[  >=m0vT&-ǖ WLΗ{Gt{%u76rV)9c>-ݏ4bgR>[ q.sk+t3=i]ܦ]G`{ɕl #m}=Gϖsn;Ĺҁ_r~wN)(ќO*KfH)xZc{=]߀k,: ﳦC)%R)Q o7+]}jwQUMa=mbBw7<̈́wfBWEUzhqcY_λ]lzNfB<opzMuNO3El? 69ہ`ЙI9X\-Te[AQ Y<4['vC'8xlvk"F{{t\]6m پmGZS Ls)mCqXa^(̀ o dž>:5xԷ`AxK0:/#?9I;} {_0]fW4G4~R>|Pd_DaSA]HgJ xzaQ5~H2RcRYTfa1UVGw .3#Ȩ{)qKHώ Ntg, ǼКbhMtKo'ۚ\f']Zפ@l>Y9@~W[sk[&#d:(Uդ5?=rrlJἎNy!.Ao74c[V[2S mo#07U9> stream xXoDG<~\x8t'$EB`Ҵ r^N?YM^R*tHQ(竂e7_̊/~rN)^. d։r*bI#Sd}SՂkʄ&u9r:v1K@vd9ovT;CcIS44;/PQطR3j~=:Ƿ}Jp47WQH9+:y(wVU½4}lͦ>OdBY?ZiHFy.u)%&HKC ̕BI4)",R@4ۦVp.WhĢ8)-jROg L6٠X9"`"75"&~,G*ali"ʞe=D@'x-ZjJhDyLIL$V9?O>Q'j]{A4 ?lr*^%u{|nb`uP%0 Ηx-((liԴA`>anOu 9k6ϐX > %Sf f*BNDpOX}c)ɂnɥ(!<& Ge> stream xŚwktH*( ED$'Iefء:x:&ÐDQ1{z=;{[1kZ@Sݟ."(**aƌ(ۤ,Jb8meAGܟ&,]li E%ҵ/0f0*6-\yQ-/xF=hŘGTc} OOAE%'=^b!qXL,!F/K)ă2YbJ1 %pi)[ϢO#wx}v_y6I_B)F%໳H3H*Ii^n*{,H~Mnǿ) IF'><;f;֤4(- ѓV~Ak%O솒Eň*px%fx UDIs KJš&?FKq ,~v iUԂh{Udl7-J#G@6&a3ɺi4Dn[gXTm5!-gФaXahyT/~ 4'tFZPX$>Μ,~tvSv: x"QH&@"jk9LSTQHc$-ADA&J|OB⻚Lvs(!(H@z/ EX5PSS<MzJ\l[WTM}oG{0A& B`Fw}.j9[|@Ȗ B }B>ŋse~a O̽s$$'Vݿ]p.4-LS{U@JFY?O8X0RT#{ŻKةώ_87 ħܖ4{=t.v5.,hVchuР1$ӧS%oO4-=եwzhFFqaimu=@wys]ƶHXְO ?ލx hw!ͳ&(fZ9W_w|F/}k{C AisښqSYT:ŕAB)ިwC\XKr5Lp;Mu15aD Ume$D/^|SF H}sNF{yATckp!ٻf|fxcO^ҔB'$)-hW-Z'N_UE&MT^ZsI#s^S--~a*;xMy@ / 32N8D0~1~1v1 q<8^9ƣbtAcPl`cl g5v&[lsK_L7.~_nv }BFk b & E4hrϋu>_QW*sL)j`ƗZ%&]B1IKV=ԓiKlMyڼm6IUZ+t5%}#16]T y:r%o7r!}.v++eJ^fX (RITd|,i É&#}64vhΜɝluovlwd}JnNd(Jepԃ+FUEhQ_lWFh4Ƃ&,_;Pu lJۜMnp^F62+eeU%EM#0XVԥۀ¦SB%)NWs.>"] љ{`{~>H^@7 e_Dwb_GQZL5,6W< wHU~u³ .KLkpW~vp9\Ԝ$+̡h[Bޢ:?A2ᦄ>vA8MPE'6- pUaU7|c u"N-Mΐ3 ҮDp%!tɺrلW(DfJئp F+-llx?6Ydհ6MUoKNnA1AM3 Hyz=p!g  _~&nU&jfШI8 RBO#>KA-8s)/BIŝ1:z:fgSw@:ؒ9-l9qywȃs v$3P: hv(uRYH{p Y[7v}h&QeQq)]=iЈH0$ky^ǍHIuYH~C>6lzSka5Bv9wչcP.H@ &23f$@Q|4D׹Ӟ4Lb\2@rŃg3tGPvhY2Lc\ɪW^yO~5rгBe * ktܙ+z Cס~f%zШ0X SFfbڰA[О4eu6v6Ǔ{zW=nܖ fG{)U>f( 9hiT@zq=@{\02Fpd2I+\D]&oW4 mnL:ܺ}N Ar;H499fVcg 2#I `&=hm*D"/Ġқ[6%*]VZH;DRrSeF٤!MWYw@& Kf݈mرw)'^Z+)J6̀۸O Dw4Ѝާk~e\'YO]& 2x`TV1@!C4NgǞsܺCnro-)ah{t8hIz>n}jsK[t{T=>ZL3dqN|]_: xkgK>f-6^LjVVΙ $*eh֚ݿ@C>KgЀSh79K]i)6 9UHYZY.K5v{ܴ{l-vXnl(FWO~&`BfعhL)3-lzgcբUUԤK${?}g[wOƕ%ehR 59Td2V{{[9ixso6.`u6O] wX8iAL//AnȪ+aљt69۬Y퇚5,zH+3pDS=ORǎ\_[=,Ho^@LwzA#)Iԟ I#ƽd3I8Ti !Uv9Ub[%6]eш_;w$M`My?~qvne_K*,؉p#o%7jHE8Db(J]LY+{V>Slht]BWw$m$z)b.=x԰ӲӰL֡%hUh! 6i S+@ Ah;B?Sw9wwkKe aoeIؒjbNjT +M}K:Ӱsc )lf&dt7+-Bf\?ޯ"vL$,Tut-?QiF @:o 2KrN Zt:0>_WHQkl!ؐS#1FNWP[ٺK g_pf`0Q X}.ʀhN 4ߡ/}G6ArNMJ>q[,ڥjSV98y9鑖FO>o ]_d|8V}w4)Q1 5 Dff?|OYKNwD:.&N²\"ٵ1B'-6I;u~#_9H-x`#dON;-.KqtjIiTZ4 #Q7[,xqe]!`IA9c6Ϡ_Byis!j!:v]a)qE@ I2Au?DsOkPYG\ךuKh3jI%|=$tڜIؙR9[0lIa;ۀ]kܴmjN_eHΫ:VWgΓsgЉ+IPPI~UJA6MUf/#>i$%.Øq.2zE-  YwO.{oy*L G;8+Hz/JfȥV|#{Tok(`"8EL}}bB\sY$ۼ ykΒ'H'd*XjfѬ7-I_G$C > rFx [`iiI/&'M3&^rr2<O"jHWSd .S tAތ/xBW>`nje &4 /ts<][ږˡqbda|֢kH;!P*xq$Th pbg9Ǻ>2 Pg@fQ\V> jŤd sІm84f[BqI½oLd|M8Ii(]}QMuE+w v,Pu!;`w_l6jЦj&_E%QW#\FdIkhPC\A&tAG{;WG14("B"q =lDeŨ)UVoP+*#"Ȅ1hǞWs9Ueɺd}$`l~V=7)n\P q Ncsϐ8LCvڷe4p -Jb捆I>d; &݀etc1J[,-YN6Os+Fv4=BDG~ߋ1;|^?=1B'p:2&ws.`k0~I<),_C6*W>Hk+ A0'YcT쵟 vD]BkɇTXwMs=Ir ]IO 6.~O ]zd$"eD pi#WlW f1M65<|%Mv2Wod=V{o)D<´?zhʽґu)U%i<{a+xBVH_3s܌eM :IIܘE!ߏ$*B_7/ʪ 5'OshX1kbP޸#JzZtm{̀\(f3/#ٌnb[uG^ޗ~JGV]Xe̩kgBr}>ݏT?xu}a.7E~`4ʵ"f~B \PྤĽT51IMEmT@C`+{2[w\鿒5OGC;#NLM^9?h8͝ %A&J%Dw87^2K0YzJª2o/n]:?)RPfbg0z[?[mnXi#Zn슱- PD*ªnvagCp:*aW&W+ Z_6$&pl1_RCRR*dq}DO1"@I G<{ػiٛ!d=' *&H?fThhdpkfɨ.XnJ;\[ vL;ۧvTQ9m*z]36+ԍšg!Uendstream endobj 163 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 171 >> stream xcd`ab`dd v 144q$2!{@Q!=?~>0cB߳;~'hyGmEw9^ ^^emwn]!`z&vO1ca嬲bf#O;0endstream endobj 164 0 obj << /Filter /FlateDecode /Length 3217 >> stream x[Ks77APʻe[Hk>Nr Ӓ\:i~AYЃKV?=J^B( wMZX~0:pF: /z,0tTS)i`zMӋ~YBYeɇ֒Ѭ?LMZ[}r,L/*hJFUhnƔ _:BHɲRpN֛0l &glY`V4yU-ROCXaG'0EWʢnJh^BnӸVy R&\SaKKQLQ܉S/䴨s[*]Xm]~ 8У%gYz>~GT:*e=a0ZMEK %o;@uX鬀HǑ*ֳpA$~sYePZcy <ذLcܥDZպ%pe!oݒ(@"p jSRAx$ʤR -kIQxY\DĬBdLZ0Ʋَ"v!ֶk"2kXSa5Ƞ8( &vvJ%E'kuwXXd-`k 8R>ǾM5]@AŻtvt3Ga j],aP(xncbM#$"M|-RFqjIJ_dVe܁$TFݜN@= 񒶨:kP9X&A{ fUNx`Ňc./7GeWۢ4t>m0hM(O. 7ȧ4.7~F#q9_tqTzȆnA-.4֠a5U<O"}ɳH*ʅR6ӴsUp?hrtNf@]z_} tNaUZKK^>ܸ(|aVA:uO 9WCcix!s&NnLدvig} iZ!>ܖoltt6 l;| ڝ* ]fhGG3Đy,QmoN4++eǴt*6Ē(GLq;KL޳$&0YEa"XҰ?GOJs2&%X's[ѦYVBR6X4Ӏ,(ǺqAU fPh+bG#wi;dt|S[c b2J!JkLZiC'j+tՒ!~JM+%V:LJjߢ`]*VW\ Nꯑ| &ӣDڼ ӵg@ hL1XB3VбbJ٪)0*4٬br4ҡgLr Q,eJ/DS96KnD&0*.tY"GM6غGz 6Hl5̸y9Z\&2ĞΗ$:d, ~jꨩJ8Xx| {ԴGKbi7u<oAWrݩwekUY[Q{m>ҕbwAV~>O0SEUƷ ;꽷X+t.ރ)QG؀b&5XGߵw)N}5>/*feŰn\zn?tu_u{ Y/5\`AC*UM!h ୧u(jtRCU:9!Jj.e<=hF\d$8}ԅ~3C1FfK|%av_3NՄ7``5e07BoEZ ]eWuǽc`>&l|{PI6?ׂra8n"pZ3>o(~Y —-fu;y6Z.1"蝹 j}^Y>ssL|0tt{CyبeaoGէ#ƬWc3].jN[hUBMTw..̯"2_ԥE6fc|Ў2ZUTx|?w}1@;hAb7snW{cm7͇^>vXnJDO`'=B3WOɄ5 t\}phgTr.r7?˘P9|?wQRdl݈kJp ,$gdݕE.^$Zm#bZ\&H} ʍNW9eB}U.b7֝\!j3@WgYw~pYLtEEx!С~3]]/5 Yrf"tjc{Q"n0dGYj/pKND P\Sum8kDR Uf;ǭ6ןT߶#R9_.%[ϳXW3#q fk93~"BgZ0}VUO#endstream endobj 165 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2339 >> stream x{PSWo研iZ:tuu:v]j[|.UHJqyy&H(VJKEEtZOlf̹~Q1H$Xˋ}I>{9.x1Ƕ<7i$v'PK*O]Xl{n]_zyb#5zʠfQ7Tj ZE-SORSiJe=%y)K<[Zy0;e>{T~ؙ%Ϊt h6B's #D~YK:`-}7qç_A604yND$ Wk@9N5_-H$S$j$/vc߈j$қz Je!`nY} >,  >C5EEHjT>pëSP5>o:| c3(ZZ_eREoj֘4 hAMPwp1ٛhvZHvD(EgG[~ɿdýoY݋fV*-6 %0Fo=u\WnBEmzmB[1d9e 9#C.c֘UƊ֊@), )'f#Xvmێĝ}FcxR`4_w i[ى9"-}wI,ADP#52r>t1|<WyDE_s6 N4՚UjS#( }M7 yecY38!Q?Ƒ;[o'fj+FgFK34 }chd^GWrN*H&\',]yMζi"qVԕ}`ePn2r鿲F~>",f_' Lv݀Aڃ2)o伺av/> Gyáo;C@&Bu:3x7 m+M` $q}J|O?dendstream endobj 166 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2280 >> stream xVkpU`zvZ˖.rY&7<H$=yz^Ʉ`Vpevq-]|zjv{" UNOMtswsw(@M|dIMsWS|wbTV4yJ9.atDCmrֶmOpi\iæX@ˉ[G$Dq?& SD 8$d"q‚ NJY+}{=}ߞt뤶RsI,#ӨQ<'_K==-0ѽhm6!L1 {gՀ}j[ApZV(*FQYB.E_.A_\LFME=^_[ǯkjsZM kss8Fݺg7쵽-٪ѿ_A/8p&!>D{v# Q0'.sGys`+F%쬕{6bf upɯ;6=jGS\ݓjhq͌z=i=i}rxwYźAfظKaΫ;@c`#'dah4O֬25:Gdq^@&lxuAM uia;]gr寏`nМT] 84ZŴN uѿQ6[C04رS n'$-o.\`}Ն)ݣ$3^у ^ޥTeezi^U`nӉf7-l jha[;V]Z9$cC6F4Me`*ṛ^)efG$xw}F,6deԾ嶆K+G/:o¿)Ɠq qI!PO5 ^wLJG{吢q[zN\ǯC+Q/{}P)ott W]K<$KDI} 'jVZn qy<`YIp!c(6 'ئ3*$17m(Zg`1MwoÂ5M'{diO]yT\~./|/*զFXb`Ԗ%d uz@Cr;g1HiꐲȜӥy0x @3 /tl`T;y&rXY> stream xcd`ab`dd v 500q$~2E0SIC('3##{I" |J04ow9ˮ~]Qjr_֝ݛ='q<9+>#1 ^ kݗ?C˿Oq{ q=:fe_=VO{wKOKw3GbNW\+pM}_S{֔m~uGfEf(ȓ+?Q=?o\U]j W4{nnn! ?endstream endobj 168 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2943 >> stream xV{P݀oUԖһjmmm;ZV" h- ȃBB^y+Z|Zoj;^;Uaֹmgz# F`d%׃7Q  >1#Ϗܞ5W2O*Q3>x Rb2;O*A3ߎ{]牢KKr(HqL.zn~}< zqh.X;T c[Eu[DR8XCv,@([_  |D,ƽ%rlq8ҁ*6RO˞}%[?mNU˗).Å \e #+ju:/SlRh­>Ж SGy# pp4nm^j{HǍHB9ц-b*TLPT|ov 蒪7xڃ ݡG I @en$X'ݱXX,A>(jTRv'nSڄBł0q+#b`Ƶ.Qx_^'^=8QW搘V%r}U>;VLvZ ENZx=Y 6Z+bIrY̶J{N9#pd>WܿٴYLq+m, @x؋ tuZ_ (#~9.'т,.YZrnej7m@ ˵׎2=2|ȧE/K(:^ s%gE!©L ܁"zuMZ ]'Oʏ3͔^[-R҄NU0 ! h޵E'TDé& @ۺ<;:ݽd> q$v:'&>ɸȽDS-}j$*1l\PirB%i+'uc7c_8KRsokꤥFJiMMAAxo@MXQOznGp=Mfep;-T}`k3bIER]W]-Hv9H؅C01C&n: Ǐ^>>aP//W4h ZbB!h֗FYQd >A;/ Iy9nv71vTtU_"^¸OQ)[>DG>e2Չ.ݼrqܠU̸ҏ );[|C5Aiao1sn hUm{e&y|mA (yunScU]}WbO͕/N[/6*̓? ^)bRg~Fmvc6%]fd':~❊lL'?nڹiVn/e8@MPj.-3U\u-`3kNW (UXWUmmܘ/ϦF<%tͷJE5WhgQEҫSZek- XȻoS؅3Njȉ8ϝ/^untlxC8O5A؆ ̃!5dҿjzݮnMJ8xC^<c``8Ç!^O.(iUe$FX.2䀜ʩho^S&-a4Q\B([CwIxs=t&}B D\.W}xM^^n MnWM]}W2N"FEiNQ,7!(k:.Bu:,8h?G"YpNCg}ظ!xyr\N\ g\i?{{ [U \K-XsIs:ai0k)f`Swx@q *<'{D|4qFcCDz-վw%[vS=ڡ$Z]Jŧlq^#qy<ɇBSX[ji|ʾ ڄjk]־Ɓ~W}eCmsGL1h70lAg(ٚ)aSbZRXtg*>1+]mDyfќy1:Z}炆%<\Z:n ̣^1y:wβ23TYh/ٹ|wy`2Қ[Pߵ^TQ(ްaivτSugmTEFWc)@u0m"Yl^3ge ryXzTh;#!|/:fendstream endobj 169 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3620 >> stream xW pWmcى{48L7I  B00@ ,lYVk%yѓlm־,/86xB83ŸLY&<:U?)S5ׯ/T%~sϹ999?dI&d~$><84{>{ϥGFׯ_[Y͖W*^Quҭf<)q?B<@,"$%D1,QB"V9\b1X@!F#B$:`}\}<@r73hUC?tЏ #&l$=t0@I ~STjY*?CFgc{daS0S1}S%#荂2dY4$}hT47b{ RGV,|dfr'n,SڿK%͛l҇Sv>/ѪkҪ<3PiJ.bZ*LQ[95TmLl-M:k\EՓ`Xt?F8> h*j1@;VPU9883S$d=.;D7?r\TR֜=/'aw)ZeJZ Czy4R.b,af%\7 L~"hY@zT6a妢л>Ksw:nLGHJks|9VsY )9P,V71q݅߂h- >%!:Htpqugm61<zԷC\+µOIchS4o)pzkR-,J%ӷ̩O}F85-R4y&3=bA+heL::BzmY7YeAk SVdWd[yC9C_lB3uYe҄J%>"Ӄ(ivjR8 (Vku =\PDH ZvE ϘTgR~߃(ĠG}C SV\0^grأV&Pu>fW4Ú[qI`-[LsΝMa2[m*%uh97پhnrfZSҀR.N*PqKSfW FFضE Ns?@yIxjObGa&7x*߃bgEXL!%hL4f\^/Qpچ@o뽑%%M.o'<8<raOڂYis;P5β7"U:cf$քje*ބ Rg ,SR]'QC{4б5M4|DJs@D^p~W졵 1uW@U0OYg?oE RuoE`3@#]9}u?V1Gѽ4-6LFwI?qm)ʕ~- ,d?G;ru5_ջU5FT> _uyO3l&Q^]pKes8&?`X{%;3h/ȈA244Gc1 6#1cc ԌtPWڶs&,SjBe\ٜ&8' }VWx*$bl gz1h2E >[|  &~~^^g䱉(6QYCUnĉ`#6Zxࡺm)HB/b=#XxBV>l4!}FB=h 1VVtfA <|,\O_a|BA ytOZͪ~\]Q9_RV鱲6{,vANA_hNk 4^7 H9L[,|t3ݎ%[IGZJkWA\G/O{um65]4 -> stream x"CMSY8M  f infinity1 Ƨ P҃h]NI7 Dqhp͋ 8 9+`8f *1*A@33P +=`eL9$  OB  XLendstream endobj 171 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1065 >> stream xER}L[u}Աay8mnͲ [ :le[}}Ro dA!Ym&-MC&'{Α`20DUUV]]\TT1<"dzU3lk?aX Vav,ہelL$336훽#UPS BT>DLB1~iڐ/撫0}<@n\I*qeiI aiiv}_򰘩#DB8L߂3Q,I]C@Y8EHWwFB._N o/JѾk"Iװ0,pW\@|xAΩfD}WU_Ŏ&iCP6{Ux|ũѴ;Sy}=/]Db>A/s![Dy#(5Ox3Ul@  0dO KhTV;v3_JS9zC1mߵpvAb AM?]{2<3p#mE6N-+n$_<z;)yl..r 65ͪ35LLz aWWAg#a[<:85fcvϊ7EcHգf 7M$7niޢyuT)s 2#9>F1> stream xy tUw[@چ`*7DdQU AA5=;ow}ffltKpAPGuqns n5{owGsuoC-/h´_n5s\"8H5FkVծ{anH@¾$]Ha%6?U=kǍpC4y#S6 ʈi3tb)1XNM+}ij* b5$1xxO!$󈇈b!1L,"Kģ0Fb&q1A$ q3!$Fb QHBEM !n $H╂ynL ~yEFp0Ťzm74aEo\p7Yo W(_Q GGiюGJ-7z˜[N,=s[/NAa36oGm}%hF6w'[,}OhR"F* h2@Pr[ݥ@0v'>`B#MۍxaMFP' S`ms~ 2@,xDMù%M>jA4nD7.YnY?t(~ܫE7+yhh\0B*=,=HM4M0_W~J#cMn*MT =N|xϑJº&LЗuZsK`3\_TTPg$w8kK)}/ѳ-V"~TȮ`T@j}[OVg. (;is莒؞T`MP2XN"SL<=]' _J FX:(bjjQ: b0*ؐYۺulo͔ԋbviҺ:R )iҺ9|\.4J&ؔEg "Kn*s?QjuGw4,to48)WɄ-G?=G#Sxl <~#TU$-D>a-RFPbng@PqA ODע]>HZG!ƅAWrq~&X*UjY,M[,@=m( /e/p'.Ф1F%XÐ 'xY|LiSjk>t:bmF %i_~NOb7=W! E$7|ie%lB+ Rs}~k7_?yᕉsMV4ѿ)q(K|aM)eR..2zOF%níom0A$ h~Knd^'uQ9d?S*nHɂ8nisr0.viWpKzt"Bh N.ҐJcK[{yU uTeQ%h̩]?vbԔE\g$Uۦ2?#݂*e), X¥(| P]& a*Cs/EhAݺC!H}oѓ܇sWkx{v7Vewi#c>#SZLӫtelsH= _y@|X Gy pMR|TZL>>\3uh=yBׅA:K`D60܍@YP%.܇>, m@FqqT`~#/PP-|mqEߖHs+<-}Cv;lma,LdRӂcY`yf`U\ei]1 71/C UU&AfD%Ans/$ :T1*4YmwuK:xhvqgK À=]CZzjZn0nO}O p빛&~}.!Si Hq. [<~rVM7.M(x<A9S 7=;FHx~w xhw ?G#̍(RW E &7)mb.iaÄa,-8MnizO=فN}ϟ~lb|pS21/jy;։QC.Z` ^m-fP*Vj؆QR>O^Ѿs܂}dj67u%Z JzQJ: 0y%k]F}|`7Ȇ)17,:dulnQ:v7榴,&U]܅iT ؂BA4fSrRw91h xKJw{^ޢĦ:=DÆX#.&qZ1ifҬK Z7 Z -(.M'L }zFK2@Ӥ{ (\{HX%aJKZTZVj |$/}M*M˩ NSړF )Z-@*b-ګB[}cbb˽u%.S ;Õ𶗴n?8h ڂ+l9 s ;lj?,IW3A2O4۬mB e0oD/MuZ XV}I"EW䅒@aO|}S%l|o~+nȣ{3;v0rRl>/D̬E@R믧g`eIpJ0sE!tZ[:{G˗iƦ/*8t@GU/j-UڵU\s|D2ovP[T5p2_Ts3ar2'#~&A4SR=OjWX3md=֡"]DW +!(c$_ DXzGBtd޶7d/0DPnOPqo6up;iF#2Tn{;!L:u&U"6\hYG5,#?\ b,X"+60w~4 HEp#zWim{Jhcxy&ή5 D E1ӡ2DR`~w]@"'^3h  e 2ZQ-Ml> %5p>{p/64IO9O@N8,o-{J*(>iq[]8a峫7/N!%wWuzR_a-`865.ϬUy<Ix2SK"9Ha5ojcbY#ۘhlkM%Z ǰҫ6eslѷ *tq`C.fei]p?[ڦ]kT#eНd)֙kFz58zG;sW&IsB7fu}e"uwSDl@O<Ah Rr6h_,sR ^/9t) uV FJ7 ݘ-N;1IGD Q˱z>QO*s4pKQcʓc8y2= Ҽ˄[oP@O4v7v7mtQ62 Bd'YW|P+iTܭىD 2$"Gb~*OkAKDJG63k{){A.ڤ<CT<_JѠ^4ܝS|5iJ Tix6@J-WoiECyY{l}|+I$㌑zL]ŻBEqꦗUR;+bX*k$$'p•g UxU\xՐݚxӦnUaW@V(**"(^woKXUV||hE" Em4L%aZ-mlt4`肐6DlO<7SuT JZ)bCQ&*/-/^;4g5bhrx0D 21 Pm1ͺǑ1sFSxSﱺK 'fNyǵ.AYT(U/d (&M* b4&?Մ 7 slL*ٵH?k QChPX!WfBEH`:ttiHJ#jkkv ڮɯ WA~y Re֩ *8ESAmn\~IxK`in x-gM |TU|JK_dz\R :A*a@8vRzmqJ=bcnk)WguT^;(/c k5<(6oH!>}%tQIEfˆ&Ymo2iL& FtK|yٲ=ҚVlAm}BNg<{-Ga? >sڤnV@%Ug[3d:uC `2qB̹y۬W05 _*Q&(R(u<uv0;ɤ1Z'U2ZFŹaq/+Ož۱.nbכֿ2DvW|]%e8+V7VR'>^3叮[dLN=V.L?acbHըJ7[h8%M>[KKЬl6;eTZ JI6`CFwg]*.g{E G? rT>8mAgӕ6ȍX;Ҥ!ȸcݑ,|b島v62&=⍍RyZy B΢aVZώCӰ:7b6tu}pRW2LCBnRXM=wr+ӈψ4"G/mH{8R ;}# M䜕}l@Vŋ[wlc)T{0iM: 7m!7r (-icm$LP҃1hL a|R{vKzytX~}އ^xwJwA8~ p2ٗ)/ ~?y|w2N@Dgp^ oJiBk㖳{M344ۚ5s9߅~|oٲp̊e v_{/tI'ϗ ĬA .`}IKYGr?lڱJSQRy m9fsMh-Vs)(Y4)1)n/s9lU`F uƯZ/ٜYlΨhZ(.{_x#;CUK!iyMFh)7+7?;Q{{Zt6co:D͙ned}o2n_4'o}jZs ;/c N#"~rWӚ'΃3eˊsjo#|ѳ)8L9 1mF7>Kz+oѠ?AF^~ CKSDm~ nY4iPKblk]-=!2)j^$Dq/yr\VJ=U3 UZ.xܷso{&U܃BEŔ$ N :iāxK|"3XMB٠& kht$M\VAu_,ǝV*JsCY (9~݂n3L>HEpLU{_FA4"xt O~vx_nu1ӿ٢ sP[XKVeQk8,|~UPډ} qJ<, Go(6 2Pendstream endobj 173 0 obj << /Filter /FlateDecode /Length 3727 >> stream xZ[o~SЇri2ASm\" 1~8G|1Z_uc*'鑵r^G]w#k֬~/vT ]yof>ت=;{Ɔƚ-I/Ӳf[x?+OZ֚75UvJ17qӼ[G^-JM]Xϱ",AMI^Zݽ ~my0P*\0żdLSlS|(ScHH$ӡ9l}Vjɗ'=(~o(/c)!nqI-7d?'!!"&mn?>`>mr$( PuP`A௖(z7dofh,jD\iv%Fv h>t7NNL@ }2vHp:I]3{H֋& 2(D8)6apL|6b)JX 3R< t>$ٕ j*') עLA"!U&M} f\~gy=]p6sN!xS<8A{9`Y7F\L_0Qx{?aZIQFFrQ1Nu*n`o'^="'[n=,?G[(l))lRsv}1V\Wϒ!t>Y&r Jt0Vt8|iVxv 0p~o]; Ϩi S*.5]gҐqNk(ר8yJ)`f`SXX<_û45X=5Xw/ p @yJqy=`ur ?wi7>hz;@Sz@|@iMTk(ЦK`rqjo2 _M%(NQukH=,IͦX~#Xg,?8)dXVjX)`llŪ}U27}'v,tke8 S hosUK-vIඡ-"I-VIn t;n;f{[eA!kC{!6<c2o(lR>httm_v,zۃ ؔ_ 8T]zB Mn/Ls>|+'(HILV.] 4]j;ɝpp>lAZ@A7y7D6 vȹ-1jwmֆ}k5QWŸGMЅX N yV@}܍+U=ݙ)qQpIC4O2'Y`[ҷK%c\yӏlbexPf(Mvz`ƒt]qTgS5DFMfYRMG$9x.|tt)ц=邦󟟦|+n5 OY?S(T^D9 ON,#__5ˤ~΀qeM+7>u[n*šƟ6F_N}^P4[hRcbbmN0OxLi9SM7*L_\ÿ%7prPk=p6mZE3TT zw雒 Ϣ掫䵾 ? ͂f6} ۣl9sB֣4pTLy/{,8~g,1"?m0 Z(Oa<^gL0>BK ScQ} xz{im-'H{.u lx<P[0Wc!!w^tLtj,QmS)+'dNalo۫;Ќri}q#WAs`K̯n4,}h.e .L]ϥB`t7擉xYaIϡ7[SDELc[:&ois vDic^K.k֩В ?8*+G8`5ȁȚ tIl"ߗIbYokB˱)ОnlO5p|]/q߽bEfrWw)w/3#XB:0|ⓕosXbXbzCn?:s<1Hendstream endobj 174 0 obj << /Filter /FlateDecode /Length 2312 >> stream xZn}WBYqbv]3XItLA KOWs9C+C)圪8rw?95fpJl1_ac# +WX'Ƴ脼ЂJ%/+2zLwwpNͪ|0-eeE.#m_u[iw:0p|ܷ`c/d$la4 Q4 =2ruL6\4er>H2+ז7/+N&i)|B })'(s rvF?z825'Jԍ#%}c@s5z7ғO]*O<ҫ G[]0ߔ5bRȿL6+2FyUx|<5'@JpJJk|+Q(f,9A=(J2DT]880щ ?sI""^Ϭϛ췃<'F۶֍dMz?f8O碬dm;.u (8PFlC9Gw nYd.Q$>fXo`X7@^eZKCuhxZeNbΩ.%M'5h<;FȚg&XeU9jD+Zcc_g8Lm=7`sm 0zy3'O4[Cq@'1ٙ Ql G]Mse;~ib9\vVYYr}x?9APvEtxw c`v$I \ ȶ{ 殃'IT/œO.OF.݁_$τK.lXMF;ǃ2@Ba'=&~s;3,a~r他BMUuAu0`) ̗֥u*p\'&RqJ;G?G_D l/I`JW`s0آ >8#pHBÑiՐn}T_Eu_iQlJ>FE4٧xce`,*0E.!7@g//xŘ}]1=%>ƯuŘbV*E.xZaϲȘQLh|mƎb׺h<6?64/6mT8l,GƁ:_WU(M21?Cu6<&^2C"kh%flj,(o";\O̩oz][h+QU0*q)]\H\N\ ݪ۔ 8֝@DnS=_.#k?7ezrbEGhC2āZ&:VtS;\c'sz*uX]P܂&Yo3_f;X1qq.W+lSQ·!i dB 8Aa5s+\?!srr:vt~:$NE  "tp1tĭV@oC U]RF^TP.#tȭ萏c(l;Dl.`8E8 sAe|;:h?+LBYF"T? 0!4ء4`5Vb {, `G`1t ؋bov;֣,p44thG! EcV܎endstream endobj 175 0 obj << /Filter /FlateDecode /Length 2727 >> stream x\n#7}W~6`gY,yHb Ae[ r,y#?b7%[ CQS,Y%>_rDףGW],?Y1cSϮFe662g2l9"Nkkp 0k]xYȵU>gfTjy(92]LNWO.SQG@fy̗'64sYU&ge:dTd紺L bi#o3'*H^0ߢ,%Q ϔE[y*'AʉN mSY p'r% E2ZQU`϶atιckoi4裢 f*7>-1\g0Puz̸H3ƕ-"CjLaab *L6UAFY2@X(PDVm3YIb Cf;T?Ɛ ӄ 7(7~ nh !XclwpGMb֋iuA( }XXLB<~ 1=CO;xbOC'huhD 1= `Qyɛ1=; D @rDq`.&cJv,G '6<03Ig6~XQ?CR*-z3Ҹ}n2g Ɨ,2)$#_R+概L2x6~}(?I߄oyhL2Wp%w+j^ƒMdUjuO] bMU{ *GYtq~ _םtb VC(գ,_F.A#yl3k} *YGjHP̟g*u.YXj9$ٻ=QS{Y5.f0i1n~ͦlٮ67UkA*9c~>2i/ WR8Ykp3CEbee3?y9aMry6DhXR MXX_׆|`uU#$1 UyJ7vr*#_+=aZdʪRcrWk1"iO@/Z鲪!u\ ހ|>< ,4lt?b ޗ }K"C|xUFlknM.U߇ꬴ%~5i 骷B:C!.(~B:Hg uC$$oA_T[Nh$CoX2"KP"jXPfP(qQ|g(7)=OlJXA~{Z\9FCn)MuKEfW V-|!O@p^W!ʜtŖZx ٗ NbCqCqd>PXN܆'L yfpq6 7TsOܺtGoГϙ7p?)8z14T(> &;[qu)ZjK.xBCªPJӦ]?@:|#I-n QTOi-endstream endobj 176 0 obj << /Filter /FlateDecode /Length 16195 >> stream xK%Ǖnw@4%ؐ4 ,"rWZ>'3?;^o>}iS/3W tZ\&~~-?ໄǀ!kDޘ4?}sOGmY.gQϩ9 <||z|I-o\?wkftV?B?~0g|ԏdsۉc/IF?k'F2(^~ծk<5EԿyXQ"A;/oOv.ۉ'ՅPOPOa942Kfm/uvWPk &mdOt>ܟm_ۼC·ߛְw|{5dspovo 3SS|@3xlGjkEH*D@#7si 44',0zVm:6O<񧶗:'f|oZ級smnOmSN?$CI'J'({f^_<Ò 7R?GzXh"Ll?[ϟ_@/g7"2__=gcNW2?y񅞫9ϱ\98z8~J]ίWz'E^tۗ@j\HUc]틘ROtuAW J:1K:RͫR֕3n蝹wex4y]GJW? <d}d3 762rHg<X׭~ߔzP`8̸!"=ơ9#,o,>bZXOY?״9A~T16/j+D03z8U9kF{L&s'GZ˥354gMz֢ð#,9س hIVʙTkrD'j_j fRT-kuj uiN--(Rba&bi0 BR(ED,5F,ݦF,Q4j)RTHZE-A(ͫHR%&re%WKT--tU,@MN,6jN-šëUK! :H fH]2$v2V! `t )cg3(C+RaCr#RyX!0BJO!!g"6!,Y\z۶!W}5Q&4 s#C`05vXy5aLQ [h, xmfHU ,gqlDNY@S,D1;`"8R ']!]ux+2z" = Dʫ3DaQD *D@ D#HYSD_OIB`*J#ke5% {:l2'b 3'[)^a;Txym*?|On~ӊqF.!5Ҭ-! 'NB`|l0BP*N'CB!@rNط"Ct2z6K2#EzB0GCi遼{m{ x!R"p95@$U+ xce:`+uЯa6."3Iw0D+wF5,Cн|`H$'2$_"p H$lP$;-}66! nA|nEH@뀐Bz {bwBF)cAD!JR8Cr&C` WwE̐4 )K63$Ok aJ hha-!0V I 4fZ$^!e AcZ1$&̐H@C@\~ )0f, _W[0C`VO sK߳ezZɍ&ax!"NY̩~z@0EPUCtf`Df_1 g$W4Q4> a iV'" ,EIHʃ@NL-@R$Á$J_HR'Ip!I7"$A+98f px $<"S\*PG|afH i cHDK ޠl(G"S)ȑq-sMҬ#^r$H)D#xg Ut7n=H`zNsnv0F&;Tq0F0E|`/a$,[A~NNcǫiǑ E8`F0p2A)2`Xl3M(R$ eO!JF֫R$3މ"hl#i,M:is` r;E#Ҍ)3EOBq F3i@/GUt` h& ƈHb,6#0#0.qJ31::.k C̠PDP$C98PʃaHb FɻbRr>"e)#Pd?)3-APRl`$!z#? 8*Ld]{@WD~w8s[RA2R96Y 4~$] R7ˏ%e>8m2?PzԔa~@? #Ń A[e5-@2c5C'o@WsLGf۟ggΠt̙B%* qLiSYҔ%@3gFg in2>X?Θi|TG{2A$!Hp-A3%C:\A8c&c-lmyINS"<:E$ ~B09ӍQ:S&?*AZ`׽%Kh 1B3 :41mm|7j"I(ҁ>Q=E8D( 2>c$RBTSپDbq^  `p#.BuAC\ L3Q~3=E8r1E%3fi]t&̩m"Vs0E$|+ɁLv Sk[""g!1il\s-Ew.Pt6 #6ƋI>&b<",!`tU[tHZs!0ͬti340A*- M``'H6&p#:g4ML!!HKCvPl l)Aؽ9R <0X`v2Ab4(!$bA&YDk$ S_c!x EX*EE"8}$U2}(E)t<:K@48)+a%T譻ՙ"ՇH:4=\Qݪ%,H4T#.̫kl#3s G e(HP9*&5oUlJΦ١MqM +JiMZk4DN@WHr J njP,p UL'$)yi$L>ڏ$$Yi|0~a`B#ؙfxt I+e% :!IƔ@bY$JAWB Di},KYHyI΢5a [-" uX$5ltzN^&2H "A"\%Н  $@0d8e~PId A[*aCA'Gq"2[M $E0ƪyx ˑ8E GTao{a^Jс$2$u $ H*Yϒ$Ν$ nMr#4eՑmH2z#i*Fp:ih F[!`E0U|{{"hDt>#S8"Z("fSD$:(B!1Rr&Mu.1Q_ɡ aaFz껌)SGfhxG5+>-/V|t6Z ,A7cxA%wh 1!$2<.e [A$A/ &$4]»R.ՋX!9Y ArH5ıt@,C!("`j ]!S!Egv CJ5R,'F25$FgHLHV(2gc4r*D* [Ȗs\a\x»]"< Za4HvPm<pR A?;˂h 1oe"1Xٌ)L 1c CS=?*{Iʏ<$T`S*cPvLr@RkF}*EÎ5m_E/ TtL_⣰Kw~i&cRsZezpp4I͗q%rAE4od^88[(,|İ#x'H uGU BYJ)GAzN Be93$^U!/HUWRtyi+zDzT.sߏC 0?Z>C&_?' 7q~B~iN8 )GxR!Օ}YZDirHw" 5uFNnHrSԕ!d" /_*rCA^K~.(I"ƕՐ%I)fJ]8ħ\ a5# l)Iq$-YfCH(B&. +Hw* aݯ uPx@A2  8 T (F&3FrvQvA*c$-U2ʈ`u(m*c!"sc2K8f&Ce2l4ҕhL:{Ȳ Qe1 ƐʰbSV,&{7tEj(&RIC1;gsHL:ͦ U]\LbTƒCx@LI!g1C:f~d fwwGkTz4(=ZC^dMp $G[ qL>)bb /1RT$=&;lEFs#-e4 R')cxdԌ^j$}'q< <8c3>2A)( >c|TZ7 Iŗ$s$WVpj:h7 Ǖ2&!"b=Z'jT )d CXcM )G*S]ŏ /S.DY|r`9RgHsV9R}a9B}fYtrb>bV"9\U,gZO6ŊwOy/.~_!iw0ZڗX /3^bUjbm;ע7;w߼XeTMjEز_ב2yvb*^CCa&4u3;<`0]Z6q̫dWFr)}3dm;w\hJ`f[x-Xv lC_=qm!pV_?˪V'mfrVX+M6KHkْ2{9TGc )++ma%fL._T ˂u*:0} %]U3%argk}:'u%金e4\V47y_Ld`Lh kC3V%;j]33Zww7P*(yX تBige1eX,Hђvixc)YP"`Eػ >K;а\*}\`.]b2ª乓'ׁm{p\9ȝ  CjҜ ';HuS3wEZc< ^Z UTTg`CԀe ۮLi\j_CuuUjwū*"U)'5ϒ#fS9x8YrĞECGYY|ĞZ#s6>r`LЍn|P|q*#fpS#gg|ᳬ|DYFȭ೬䐳DLYFLۜc7> 0W "~I5}){X8= D *vNkMhb)( ݊'\^6O`9I`x2[*UjTb]É'5x[x\HS&/'NE-L3@+%X<$eBxB#̫@e]D= *,)oh'lVN:a.ie' шtZ\"OߝtJy4' -|UE4E:5JT܊N Q-Iv*!&թvTdխ(A$LBE \(rvfX|J0=30\|nB)ˡ$){1IޡL8?#y2#{ѽHb)2fAauI*9Cw[M)i[F#E0^4cRE;"XvH'JHRp$AaAw@s z,sM!2R "kkT*iW$G! RBgLϐHv2<!6 #BC]Hٻ`ʊH,)1.ɝz@$Wzq L{D"l"RG h C[F(P$rMOH䰥R$SJ))Lt)2W9O1 GVvjHx17!`6BY0IRK)YpIdEG̜H$7`re{LG-S$r Gzv)HĻ" Alv Im$q/J@R# P@^$~8Ɋ@Kwha`1@ Hhk(IPZ! %Pª)GLd}I L4.$ITNIhO!Ia5^ $R I53(#2 #X0pK.8(98>#JVΖsS= G R!tNDQ =A <^v^U%%a)09k&h7 qa55L=G`'R'D%J&D֋1%ܕ%2+K nlW8JS4)JR?63N()O%GA XQ:/$Y%Է%%aQJaLQB.ܯd:% Jgu$e&J"% Kp.!B,lz+K ٍ,dYj ˒ux7HVQjXq"{YRNQ$Za%,,Y)’]%& axh%M% $d/KxDL ! gF$B F$eDVH*UQD#Kg}$Y"$CHc3J<;pHE -%_$w>B(޽QEI"AIGkWNK$kD*Ij*H"O l Y e \.Z[qJ &|,ᓝ"> .Z $`C \$DAhbIpwP; 0R'1FxYňdFʌJf`L@vn,;cG'|q f`e7H#Շo"o ##zY68IMpJn4&P$v\fpBHl1Ebb TZj!$-p !oRq$ɻ| HuYCZAjx Ȗ<995qȗ8hr$:OШ0qŭj9m1h  "u]G::EE'3EV(BuM"UPRuusjrb$C:?V V٩MNɕiH}# +WF2)Fx`CD! Fh/)nSPh4n ) L@0,Ẫwil:>ֽe%H`maL[3 O@#j%(G*ixH] G"i#TOSGdFc=)($-'IB@uօ$5@IN+#8I5 Ba$,`! IJe+I)AxEC^ ! Ijg`h"=B%"u%J' J`(q$)7Kk\$YQ J!pem"锢iHBܕ$r$I)$k-J[V‘Y0GV!.+ )TI@ ~6I~O8RnÿX״AHđu#Άk8]K1#q`pc*E#et3FpѼ$J0"0.TX(Rw:" enh\n,+|#XUtz5ܝQȨNAɴ8_!*=kvr+Dxf9krqF 6y$~.YK!\)ʠ  ar+CpiOI`֬.A{M^ m RNIGxZe8L)ѭD6UTp *hb)y(FxbP 䊑a1(C1R1I&Wq!^sãh(I਷*K$JX%aYyb P*Ks Rt I$Cq$:H\wHwS!5<"6P TU`qXW'E> C/3 9,ѣ5BIOW/IXpR$b4MJޠJ m -YI>J#qFu ?(=SL:VS\ZF/(80dr V=`}>B#Z^O!"ֵ:,CrUګV[d[,d4@^0)CxųX4#45AA"El[xECڜ"s> <!/_ BhAHg d OC#CtP!|$5B|C.Q]Uߢx*7ٹ BN!zWԝR.J^Sr,)׼GP2)\>~W cMNTi dHPϞ"E&"RK(BK E9T!2x. 4..̋IrL"T@3#6Z~5" ERd4t^L_. mCZt4SHu#0.؋ n}o\C98[pě3g>)cArȃ/|OA3OEgxP   t@qb>Rb?O2'l1d?]NT;5s MQ\;'kxEsUe\櫗X:`/m@H̡9~q7Oo_Ρ@||~k/bi8nq ffr ?cra?}-&<~ ~N?[oK%~.7o/?L>=3?\ꏏoԠ/fծ7_B#$sB}1 uowbݛo> stream x͝KeGVzr7[M]%J=H,W" vj=kEz{*gSz'owoMG/~m){yoGlUМc]<O?Q}o'Hm\ze缮w߿ۯ#%߿Ãu=ko~wgDzVO#>9ok=}5W9? *c߼m=΃F?|˻GnOh)k>?Ѕ_tO7Mc=Sѣz_QP.t#7zk#ntXmJW4?S[~׫?Xzv}Wco+Q{ ə5mˠ_*<>,<#oˠ4,A??B.}3OWxX-z0y?IhV:RǣY>F#tkҪ:wrKk 6q/+_D]~jAӴ9\ssl_\RA_GGjKG }#>zZ?#/r#5N\BdБB7)t3tYԋ_2Ư|O_oehSC>-VZˮqGDnBo3?zI^ &#O NxA0-&G A0>9(&BX=F9*ҎTTh3H&zGr)'ɔi8GT2UY -xGd"4be]t5D8_)w-֒$Sg7ɔEdA1MGbE,&MRLD} CWLSkA-GjK2^"pT% =%z}Tit X HRxqr)_K$9&HK4Jϯ\j}KlTt$%+GT`M,ч刊%Vg<- L,XbuV5VV*"M+eyH\+* nc>>y`o15dž W2f⃍x dF&yk {qW|u\7Ay]sMN}*zkB/LR`s=k\(!ADK}juGEH(BWxP+"<g1"4QHJ)&Q1E)FhhtKsd";߆K"{!9E)P(RE0(DRm-* "iDR]5@3(DhB>uG!ƒ%0$Tck+ D"dk !Y ƠN|TC ;B<EM !v D\v9t!3 !4tl YB# /R"J끳"..30^6Y!2UlA3#2D q*DHbaP"~y/Ϙs}v55G˹bf~V\%C#pF¦b @ 4VrĊ2z!dx!^"]AAY{"~f )4  BkOY"eEz"6Iaa(,s])BXDt=Wy"4h}rH KՇ Kl[#HA2 K FE<2DCX8=C"%h!QɁ!4j@H)4=a7{0f؉т3f,ڊ> Bҙ!? B60! !!l^9 ,!)!8.%ό(C SƩ!(C蹞L*Bz>BKe= \26mRU+BH GPz@HIaoL Q"B6E!12!h spR4 I,"%e˛f~_+0mhh2=CNLo2d0q} g|2B0E2Ll0׎Sr9TU='eւW5]H E *B]z* yI5g(Cj Y|֙"4)D@Lpk+@:W!MNGS/DN*A%Ts!tAA ;J =A8tB) H&B@$YM lHR=Ȑtl Z7J8$O} AXlH r=8U!s!Bq#HQ/*MARnALH%HgaB8J9#_*ISH`I#,kd?eHv*z~6?2iB؀J?kF𥲱BH yrGhlb)?Δތ% ~Ԋ sǜDIrc+hKHJ$ |t2i>Q|c}|p8|4! zʏ,5E[%tj=+"!,KBXeYZW@HY8^ c pS ojZ6pN$z9GT EXGw*{f8FT6\.GzD#P>JN# HZKdqEd!2"ܑB x aEE KrOrR$ p.G Rius ˀҔ= M!31fL ;6e*$  )Nq ` ?v<,)Gte P|TuYLE|p}|1Q|);\<; 8mptՁG~7v y:H$BZrTU7BQ;8@xVϐϮ+D% JQ+n$|1ʢX.cGpp804n.dL |>=^2FQn QNI9 xIp8OF1hxVF蜘DŽc(g8Gٱq%c]M£pL}f4x@L {>K`2z;sXɋVc~Č/ Ӕ錷D i)KGi$"! &0NɭFG#@4B pLtz”T0%H "%Cl,c9SV VRp$D|qqD^VT…XmEm%:Pׅ8'JՐZ] %ٔ! J\ kHV2+T@FD# ” $Mz|q2'%~>3/Ov&E{H[AHBpH>8欽 MPW$1 c @8P>`  | Hth=@9W4)eD 4C("IRR+q<"/BAGUHAƐ9 00rDHtACHш 4{P@lC$R)BRe4 >[)6$Er" V@{AH|d7EH58@B"dC"L!0;" NC'Y@?X +<{LM2Q0}-1s; ,j (@gQ@DF&vB]  BGL|41є4(R|4Y E%s9DA| >Ň  Dʏ9Ql ~UQ D*B%X1\TCBjjh =CR5f@$3zvǮ>&̢XCv|Xzc5J&/[K`#I&GQS-6|!,Frx~.Ym=#>sN%$FʏV>%ȤAt4bN΢(/)Z0$_IBG.?&mIR\oY֊@39 lFB04Υ(@F4H926)W~~л0CK ‰-)H)j(@&&逐$!D@ϻ(AD+o z/cHGi2s/,乁!ٴƐ*bƐ,"DDAdb#h΂D"R>iH?74*Cx=U1Yd3AC*fB$K}B| C;R(nUp> i72%)ADCs )"!zt Qfs ,V0D. "UL*HQc(х(o qG=B]LLMHBU/dWv6K H>vbdN5#G)RX- 2WgAdfW!R!+D !DƐ".ecH(`HI x2338n8"#fN^QM(+Z$Gw:uyEm:Ln5 .U.W!'82"趦AјqBƉ;GZ)Hr.,IqMyD|t2%B1 )bE1+#2ǚGD㼠HFzDpFibv/UBuW2 p+pMG ȼ4U'"EkN({P΢G{bl"+v <"DAd܊cf.A\CO"!(L39V<ԛKhϼEEҍ!C`LBv)Rg XJd&*C+"sМ"lNC2 8|!iU?xU 3b~.FeUaͯz6qrt,4R hgn)7ȺfanU8̭*չUvAu~V|0}z{J #cՂ D&VbY w Mn]8^=/3ιZH.d)H.xJ$pTHDs5b3V#Ck܌& )"6$16'"\!t"WlZ&VY8ds5ˬ4jUaՊ#*H2 Ȣ3E g(FXȑÑtJ'HFw#4ƢRnѤ02['1Y+t 92ĮWX 0\(Y/o bhwܪw؊:D W[3  )g fS M 8AA <HH{Ve-r"" ّ 0{E2c^AX$8J{Jh݇Eg4\vO Vo] mYx} +@@K*qJ 4?$=dk4gZp>يU!9TkY@RMR>E.9m "C<J*!"bU#%\^"R^-ɷt|B̚YmH0KAd(""" " 1C+mf)"hl"CQP(K櫓=(m;{덀sQu'ɁכI5 q{gɑ[ Yn{'Iϣѝ%G^oNgğ|?ڎ"Bͅ%᧯xx_$v+篕S(O_'W5h3NyVÕ=<7v1GxkmzN:@eIӠ-?kۘ'OmCWze֕2OscꬻcQ!w8aZΘ@!y;Ӹ*}IxT_f`stVL:u ͦ8wj&o'KϲxˆDrmI iSCi;F.o];m=men 9@ۋk|/*r9`JS'^'gT$]Ӯ=*i;)QPaM+*SVaHM>uT>.|b5j&M>!@_ҒxO?;TҨz8EqR;jzB!UO\ӘJOEB*AOM,& -Sd mM<5iFi]0ԥ㋉1i xovI;$dN !9@UkiRjcIo!d~2$q*CЍ2ōR X!2;ClE:ar%%j yj vpBوLBv+BB0!kQA@BpE=(~xB_2!!;߿p Exq8¦G"mfTjQQ1WR3;c9Ps< ZF10Rb>$-`)F҄`=H0#w/83 6 @­"'̀0#Oj %HT8EITC vSp ##B(5Spzf .6G9ReDC '(J:%d8s_&Hh?BV4NNeW&6^5$Kℛ8u`Nvj4" 'I8SC;}ܹ$fl?B=&\ ޴ԹeEI,JM-7T,J$IiҖV46I6LRx/,$n4)p&;z84ih!m@*FIGTiNf$I1$VFG𐤬zI~HY0o,Ii,Qk{`IBc -n?KuKc7Y*}pK DX2%AD Ucd Kɞ:MXãdMiZTpCHI#G8mBp7aA,`ٰ;=FvRAŒ(!f3P32 fAы8S:p30f!GV 8E#tFe.idZBC+Ev@ +ERjp7sKJ&UẺ"ICBN>DP#YZ#͇lʑ*2#@1]3{$#0+JϤ+`Kw$0+mH!-bH\1 #-Z9?ߢa!dÈ$ ~$«x@9RL4JҀ=#(|nH;cd" i$ao ɒ{ فu)^> tN0T` Rf Bf٭Q9¥KG#!d^7`hH#^0BĦ`N9Rq`_,(H4! 0H"Ƒj$Krr=Dl8,o`pĉ CV ({Pd *G8D|nQMU!d2uD+G5f 1&S85)qQo! =ۋ4$ `d_Nk oDgHY! n|JkG{ W #(4HwMHGURC+fv ߎ&H F)$Z >$/V1"!j r" Iχrs0kߙ"GaqDHʑG*@T $z5 D3]3MC̐gaka=$נFx2"Cv 0TJ@!AHuHP8Qt)R7Tq9HFQdI F- #D{E%O% Nj"I,))DؐʍJ#"Gq\EH]16J#$usFhĤkhiTivbF4-2$٭[1R GaHa$\Fʔ6\$I(E40=šHEQK܂J$w+EBRKaDcʑ$H*/nAbXuu;tWB`I+HH2(@[HfS$i2$G#KadJxaD1)9QpF 5HÈT8U' @f֛@2n ;M<~ @<|MHVhm fM7*H@CI%E4;*J%CDEL %)!;DP!XHP廉=Շm8(JK4,XUaJd (HR>,ʛ z )JZEɂ`(v P@LE WJt %=r0%gGAVj&H$o܁DfH8HRHEk )"GvMȎ"&$5cMPϩHUdQR{9#4C!`p7SVM9$C Ԕ!U6Z$O$ B5zY!(Ez(E6*P -½R)XQ44Il1|Of%qhpd&5Zej k A(@Ai B2+'cI4S(شo>VV)ɒCZEY % 9g@IGDPRoYh$%KJrf-jJ$$Y0-$RDj$ˎ$"$ zG$z<6ȞP`YT$ a^$b)J4P-V%PP"J`*JED %4}JC4xq, mxݚ́dF$8F¢i;SDEE)6&"DPf9A/  j;H2>HC "ch6"R!8›L!e "n=Cb3E91y&GXYhE=!;!Ct1v\2`*BfP~HG{"@r14 {z9ԇThtpe@(-=CED#?Pl1~\QOctv(Xw 7_AN꿣:v;zNرcB3,z ء!xP,$W:vHct;dFKے:x B1E{<^Jǽp(@M}d),L2}bt\9@qz;3&AH(9Ur 6G 51j(xxD+{2:vDp ރ#4@\C,^C2i  RElu3tTElICGFcE|cRZGftk5f~^ًk6z#,.f|7+$ɒCdFOCzZ8#Fv$0#&1r \`<C.|JD"mփ7D63!0$Ó 0̡K&Ρ 0:bϼaD8##Rn J$%EryݸDd9$ zA(սEv%-{U,;ޖ硃Iׁd5zD&`"#҃k_ L8ZEVD2ka=Br ͛lۄ=[xw7߯=Nj ,gPxh\uudhQx/_?ݜ3/EoWnN %&:n_̞hLl~=~r{{o6~^3:ƿL}Me6/W~o?_yWf{~7Z|r}#B'd-~>L_oy7S?}[XK@ڥ}O\Hҥqs_DWdwTyO_C@/oNkrѓZO+OVzgoj[<^?P.wxuFLW!D>.t.]׻OB~z 7_=޻}FW㏟}c}WE7 v?O^o g7?и8_Eǟ>"bHAK_LkݘJV1%ܷ>Ls!?_}A'ON/ ?\Og07I>6;O>`g}t_Ȑ"_~{\x旟|v;Ol 1FFE][endstream endobj 178 0 obj << /Filter /FlateDecode /Length 15018 >> stream x͝K]Gv e׻j;#N0EHd[o=v C>GկY)俿Mzy'ů<}4cU:4XW}7yڼO? ~UK\xHz?sQNjtGwk\뿥__)t[5~͛(o7yNW9?@׎}\nϟ?|^.\cXgzy[:>y}ӏq'pK.?ʅ+<{|[՛㼗zMowoazT{.VSi}|Ji=^79hO}\3P|LGFyA? }s迵#|t/z>*%1tIs1FjG{Qχ~>z $ie=h$t#r,zKn+uRӣ}ŗ"Rn4/ґD/:z/>7(|f~|Fc뱟̓_zεNr>5*?GiDSw op]tct~Wt4S64۠kkoDO,w: 9;hFy%]GH,K.*f:Vg?J<>Z,k1=QyB?iy?^KQIM^xd[ܣģ#"c/3h_ocW_|\τt?յzH]x. =osGgDc2ţeAo&1Hq_H<_94-g/tѻRUMGs<@e~t]{T3lҐZO増Q/qG_yq3$g$tg; ]dpğ_v ~q5O4@h՜V=:zF¯>gD<_8u_v#9s_9E㬫u%GYďTp$5h8?k‘p-rL%w g}ܓ^S@D9JO Z (G>^/->U'Z W_4uKН+![>ߟO_yщ& A"g4QsmiĊ'_z_(iA.(TD@'uYU'DY!h|}DaJ{Q%펚QLedR]*%ˢʤ.$z1իRH4hZTʑ&HIr4-%$^Ds2f:!7Nn'L3SI42eRgi2)&jr:vI&EA(CrJ$1Bi3"L(!rFRZgP5EDמPJ$kVJt=k3Do+(&}bBfK B:N(5w"yY&܁ %V;ϴi%A*ՖP$fo+_ע CRdsJF/*R_f}a R'm]#>Μ)0$i5dB*T"YpBMuމ'ȹ/!t~ 0|HBeKCC= dM !,:#BR!! #! E"a`YDߒ=BMzXuJ8@;!tbTtVY O! aDZw"WYM8' 0!4.>ʐ107+ZY!M^1Ȑ_a )R`"02V#P(#W`Utɻp#"%RI{0 bK  *HB9X B e}D/PF.BvS]B` vM%[58CV@y]̤+ޏM# UsX8R"AhDԐҙAZ R+A@(B zW !\B  15S'B)A*!$ Q?2%0$úR,VЕeHFfZ$g:[NrnU+gh;#e zc!,C" uR !U䋤H!qN(nP8R)B/Pf#ˆ#30FH|6/Ǒm$2Cxp$,E sҟRг݃Dfx9JCAN$6S_%HA9 "jb"//E|n (5C?B)LTt1 Dx9Rd`VGŅ $("q"AJQ$WCyRy@~% HJwBiC$cy{ROPBϩ~rGʏgǔGUD:|):<} n&vh A8o1 Ccvh-ƒNI2,_{bwZP!k"K]?c{B- ʎAm'dS!v~!CD%i0Y-<5xTkccgv2|[nqXƒl#Bh#͑x]?8P@,$ :GGH?ʏ|jb84iǕo]6Z^S4 (A{*a*AD A#Sdڗ <zʁº߈ I!ϐCBaJf4b@Bc#8BxG1@FO4|~©x!Ō!]J- 4MSԛù6C [DVV^ qKX)B/(@G+A$N\ )U dh@xdœ,t <;IaL5dqb QY$Z&I !Ȓta#AaD#"bB9dhb֖ !Y~"_Cc_ WPm&6AE33{xOol,DCD<"$OR%K] n*U=@dЌ"D譥`°"Y0fGR4s'E!Bu)fUc1d34;S0!Ri3dj!2ϲAg"dpf|~#ёm9AOS|sGA?AM3TyI-ry8]  KGD`(?1^A3&Ŭ2F83$wyF1 ]ye_U1)a)Ds.} A67* #QS|5r,⃣s+xA800CR(>Zǒ8Oé/x~{}ZY[ eolC4ijT+=5WRM?#r-IJa?f4bzJ ~4kƏDzIQ$ B0wτ?8BGOK !SHʷ-\ S|-r}3Db+$bTfBL EȔfak/⏳B!EV CHBLBµ!G'd@ dp֥QW{?*;IG'#EF D.JD{ !S` !}Lp/ۥasK Z,P/ۮ aKxy@OTlSd.ʐ 0D[X̐(6Ь!˃,KB KrSTX| ͻR ϶Zh=\! cRWPmՋiX$"YJ.2!}'H ;zrzgn" O [?ȀT)")1Rd3۫)4+Fx #Ko>;9ȍ٩%*!J9MH4]A*{/v$-bUtItxEpL!CD X`ȸ'uܧ5NqܡK,^Ap@dޤdz dR9 MGp9JT+=  B/E k";5*M:3ߊB &!͜GMILuA*<85Z1.=Ҁz1GorJ L^\/!d!t3xt(<&5xPQx R Cc) ֜gG14<f3h7vhp~/ksŰɘ'u3.X2[nKڨa3ex.' UZJppuaID*HkY BB.M)S'a;dď#D[#qFƊ *|Wj֞<ʑ\wH`A ab$!o]1G`ɱBfרD_Eā(}HoW,q#H1tqF%k2 R#1ER-u0paHV1yEpn )+Ec=RmH_1͊0R$KمRX 7Qp^LT"{BmP=Hhg>|i J[ cF#Y  "CAdxL^HD!hZcGDVU^}אDfQ,#H3#:Cx !N3] S<  "zp o`\!/JuST!HT5,$:{md환s)1,Ä elP åp+zC4 ^͈NՅ#y!dJN,K"WNYO3$Ÿ QdP"̗I3;Z;E$n\YTX7FY?EPWl.ՌSu"jA+2sf!TED:9*2&"̝KU[(RvU\|%ug-}r\(EDQ;eXR z'E$\7) o$%"ܐ_"EN7- rbƐtTcRэ!^cH ?"cIcȸn2chrKuNzȅSHV#fͤ6ʎ" Aٍf"nJE:g.Qd)2ѐ3-wBf0)02f3ADLk`!TCxW2pC0$2%$s\&"2R624"22+h;HǂȊ!OSD*s}\A􍿲6[YAc'ɁI Yrz+ͅwL8x1Nz1Hß%G^oSg6?۷)>ns{r)E{pfuL+WGw _8J)E|.+.%Ws798_\Dsi >~4ҏtǰ٩+U[CcA&< ݉\4{]6wKDܹ5V>ů:K䒲u=+ b]䓶N=KyUwz>rQ3նF#p,-+.."Yq󛱤G_'|[&6Kh8ՈW6S.jp9ƺ${>]\.AiMڬкőFR 4ىeS,twL*Ϳ#4gSV#w_?eשYY׶6ӪInzێV9=}ΐ y %=i<]+&ie[讌I*bcLWRҎCq>m-q^\h[YGf˦R4);0dhGF?q$Ƒ)#ŁD(@"{!9H@"MHr=Rve8d6GI/)jWp{ O#IHRDB+IB< 7l!;'H5~$jIi$9?$9Əb$U҃e# F#z&Gʑj< rv$Eۆǵ i'8£{$R*z^9%>ԉG8Gl)H4T@n ;f0ml"H*z$TId9I3S2h$iF!FtR5$j2]I_G*@2$@R;$-i8"|4H*_Hv^qkT0)(4$)GVG8##l#Z#I08[[^lF\#8$Z9бRQ:˓=˃Ë;#@B K VG$_@vI7fyzp$HQI i[b $ T$ &{$H .79_A%_Arԕ,H~%b~0ҥ8xrd8qG$DpO"[ +D8eyDU "D$7 2QD "(r5_FX$1$(B! W0kp/+2C1c*IyI|yF&{$PLI4V٦ d A.-pduYS*#,rqm`H>*P2 -%3P4ЧGȸ$WxE!ҤϪA ~@g"L%H0[@t,Vp}szJz A8uԁSJv]`pvA%j+AJ{ZJ<AJ#@imYFQ~9#4 pn`HG>0~zT~d?\jǐi#K C pSR! |i p96%,AE})k@C-1݇O?E{V\RRdi,Pdd#>l# ~`El>E8p@҆+G8 pEEP"\sB`p)}g\K_C>PdG8*_'[F9Ƒ#"I)h8#(Gv,8#\7HK&A d *H QT@dIH$RL8;A#68qfq䔺8 УY 0~#落MAaJ<ȩ͊N92m( 9`jH1RanJ;!U;9#E\Ƒnr/1˷&I`IW@O_-H H8'0P/=J! @$V/@RU$U^A'ܯI[7p ى {cYB 9IQ ٻ(Hɮ#$VHxA>FW G0نD~HSYΝZ45J uX9`fK$ֱD|Q%bP9Har+KjeuYsޑ6d 7g 4w՜χoުbc;y$%ڄ@Q]|BNy4(/ JvS`!TC 0%%s@ Yx2]C,$$pu|$Zo$(%IpIBǏHlI EȚ5$'I1H2PKx r= qcrUHbHr7U#j@\#E9n` )+@V_ni#/xLqGStGf4lP " "( ψ38H\H "ú1#CQ$)Wp͚U7* U5 *HFf ұeB< .[DjǬB 1a'HES!BʶbVt2`/PH]t#[b˖ 2ne5[F$0FT#YIJ3r ,0@)G1p-J i"Ս"hiIeaEz>?9y9C&<+Q{EV-"$8H R$Hk/a6a?nqfjn]("H*Dكt#\<}ڙGP^CHn)v(λJݘ$DzI:HQkD1%ҰAdH2!U&R5̨ a9Ґ1 e>!lw*ޑbi`5,n EH֯!h <Iy!)OqY{?zD "Z (R")K) ީHC}/=hy4jd9H33:"GR[(ExZcP# ^S#E5MBkD>cA2$#@ҥ)Gj 007$m" abxV+C eygy_c#(- "{ҵ(bF%Ej*vF2$d+E1 DF^1TeKHCB$Kϡ2dG@H- !GD:BкN*Y+BQ0VROI!d"^R筺wb4ESKjLa <q!H04)3Ld(C4GD"5Ɛ&cyu7 ǺFD"؈^)R'}phźdJH2k$)2ڕ$]ّD<$$M,RA2 $ 2n&MdJ$M,G% B=MF{$跘/w!曡 %'IG!PM %[45C%4Z%t6d$ _.qj!m^tr<͂fu"UQFDypu)(QHҸx`Gь#3">_E8Ҕ7M!_V_#r$flO^u'iUz!kJe13n3#A $J[]opKA  b8~sAކD,W=@N߲F ]2_G)wD @0r@*@PkA$Ay(@Q;@$[a@ nF$+DRH+DҼsXGÍCcP "ɴ" 2%g sE-@nVP"9&F6DF60 MoH;XD#锪*G9 KH @r;GHaHI y ht A֦k@"Q8+F1IV-14(I^ldw ii$8WkA8ؑ$,$龎f$G$I$wI-kwZ9Fv?Ih84G5 5H#T #H182ox9obD8TxS#$rI`rDbKWUtG-"51rAIse)#&8„z .eH#0yd\sW[e/MP˒$b+p5%q3jd/xɲ>J[;R$dh(AիXeeq$^I|I!oM5I_qsdYQ3C=!r$n$H"%V^$ldpΑW %,JxL %Jt&_EIJ:(J\9d$(J$P2CǢǑj8;G-P yM~:t!qz!m`9r*Ǒ H#qH{(2_葆,PJ!zHNtZH̷NM~" \4R3(Άɒhz;ȒQ-RSov 3Lj4]ݬ{YѮ.k$d m":|mj5=DB- I7v"i% "DTF! M!R8RЎqޜ#qDG%b'֨#0Nz06Os /; 8;1Nz9nsl߄W 81Nr-oq|ٛ&]a47$xWA WXn6P _-p][;nֹO'oJ?Wmsjτ^9Ps1We>߿.{w?H'Oi݇o˿]>ӟf_SYK?{7ۯP+Яٞݹ9\?|ğkg7>3}яwL}{wob//3(~s}9/}BsY|؍p&~|>| =w_O?U}o>[RzA+g#};z#q!O?錄wfo?|z#Σ!?G*͗;z{i?ZoϿy-.ɟ~q&E?}o={Dw>N>0?bT~ xWawܑ\ܞd}_3 )7ھ}xo~7_9xr:KOv><C#X7o/4>}{=N/FO89?|81Lp p~7:sZ4[fendstream endobj 179 0 obj << /Type /XRef /Length 191 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 180 /ID [<1596a2784438c820d6d8ac2a449c15d0>] >> stream xcb&F~0 $8J"?@6>P^4GϠ aɿ D # dˆHb)("ׂH`'LɔV"߁Hi?+ obvH*eu`78Wy lc=X lc Y  "?H>]V[Al l! endstream endobj startxref 159689 %%EOF Epi/inst/doc/index.html0000644000175100001440000000317114061613715014532 0ustar hornikusers Vignettes for the Epi package</a>

Vignettes for the Epi package

Other Epi package related stuff

  • \pkg{Epi} has grown out of the course 'Statistical Practise in Epidemiology with R', abbreviated SPE.
  • The website for the Epi package.
  • The website for the book Epidemiology with R.
  • A list of reports and published papers using the Lexis machinery is here.
Epi/inst/doc/yll.rnw0000644000175100001440000004711714044200076014066 0ustar hornikusers%\VignetteIndexEntry{Years of life lost (YLL)} \SweaveOpts{results=verbatim, keep.source=TRUE, include=FALSE, eps=FALSE} \documentclass[a4paper, twoside, 12pt]{report} \newcommand{\Title}{Years of Life Lost (YLL) to disease\\Diabetes in DK as example} \newcommand{\Tit}{YLL} \newcommand{\Version}{February 1.2} \newcommand{\Dates}{November 2017} \newcommand{\Where}{SDC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/Epi}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk}\\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} <>= options(width=90, SweaveHooks=list(fig=function() par(mar=c(3, 3, 1, 1), mgp=c(3, 1, 0)/1.6, las=1, bty="n"))) @ % \renewcommand{\rwpre}{./yll} \chapter{Theory and technicalities} This vignette for the \texttt{Epi} package describes the probabilistic and demographic background for and technical implementation of the \texttt{erl} and \texttt{yll} functions that computes the expected residual life time and years of life lost in an illness-death model. \section{Years of life lost (YLL)} \ldots to diabetes or any other disease for that matter. The general concept in calculation of ``years lost to\ldots'' is the comparison of the expected lifetime between two groups of persons; one with and one without disease (in this example DM). The expected lifetime is the area under the survival curve, so basically the exercise requires that two survival curves that are deemed relevant be available. The years of life lost is therefore just the area between the survival curves for those ``Well'', $S_W(t)$, and for those ``Diseased'', $S_D(t)$: \[ \YLL = \int_0^\infty S_W(t) - S_D(t) \dif t \] The time $t$ could of course be age, but it could also be ``time after age 50'' and the survival curves compared would then be survival curves \emph{conditional} on survival till age 50, and the YLL would be the years of life lost for a 50-year old person with diabetes. If we are referring to the expected lifetime we will more precisely use the label expected residual lifetime, ERL. \section{Constructing the survival curves} YLL can be computed in two different ways, depending on the way the survival curve and hence the expected lifetime of a person \emph{without} diabetes is computed: \begin{itemize} \item Assume that the ``Well'' persons are \emph{immune} to disease --- using only the non-DM mortality rates throughout for calculation of expected life time. \item Assume that the ``Well'' persons \emph{can} acquire the disease and thereby see an increased mortality, thus involving all three rates shown in figure \ref{fig:states}. \end{itemize} The former gives a higher YLL because the comparison is to persons assumed immune to DM (and yet with the same mortality as non-immune prior to diagnosis), the latter gives a more realistic picture of the comparison of group of persons with and without diabetes at a given age that can be interpreted in the real world. The differences can be illustrated by figure \ref{fig:states}; the immune approach corresponds to an assumption of $\lambda(t)=0$ in the calculation of the survival curve for a person in the ``Well'' state. Calculation of the survival of a diseased person already in the ``DM'' state is unaffected by assumptions about $\lambda$. <>= library(Epi) TM <- matrix(NA, 4, 4) rownames(TM) <- colnames(TM) <- c("Well", "DM", "Dead", "Dead(DM)") TM[1, 2:3] <- TM[2, 4] <- 1 zz <- boxes(TM, boxpos = list(x = c(20, 80, 20, 80), y = c(80, 80, 20, 20)), wm = 1.5, hm = 4) @ We can edit the output from \texttt{boxes} <>= zz$Arrowtext <- c(expression(lambda), expression(mu[W]), expression(mu[D][M])) boxes(zz) @ % \insfig{states}{0.7}{Illness-death model describing diabetes incidence and -mortality.} \subsection{Total mortality --- a shortcut?} A practical crude shortcut could be to compare the ERL in the diabetic population to the ERL for the \emph{entire} population (that is use the total mortality ignoring diabetes status). Note however that this approach also counts the mortality of persons that acquired the disease earlier, thus making the comparison population on average more ill than the population we aim at, namely those well at a given time, which only then become more gradually ill. How large these effects are can however be empirically explored, as we shall do later. \subsection{Disease duration} In the exposition above there is no explicit provision for the effect of disease duration, but if we were able to devise mortality rates for any combination of age and duration, this could be taken into account. There are however severe limitations in this as we in principle would want to have duration effects as long as the age-effects --- in principle for all $(a, d)$ where $d\leq A$, where $A$ is the age at which we condition. So even if we were only to compute ERL from age, say, 40 we would still need duration effects up to 60 years (namely to age 100). The incorporation of duration effects is in principle trivial from a computational point of view, but we would be forced to entertain models predicting duration effects way beyond what is actually observed disease duration in any practical case. \subsection{Computing integrals} The practical calculations of survival curves, ERL and YLL involves calculation of (cumulative) integrals of rates and functions of these as we shall see below. This is easy if we have a closed form expression of the function, so its value may be computed at any time point --- this will be the case if we model rates by smooth parametric functions. Computing the (cumulative) integral of a function is done as follows: \begin{itemize} \item Compute the value of the function (mortality rate for example) at the midpoints of a sequence of narrow equidistant intervals --- for example one- or three month intervals of age, say. \item Take the cumulative sum of these values multiplied by the interval length --- this will be a very close approximation to the cumulative integral evaluated at the end of each interval. \item If the intervals are really small (like 1/100 year), the distinction between the value at the middle and at the end of each interval becomes irrelevant. \end{itemize} Note that in the above it is assumed that the rates are given in units corresponding to the interval length --- or more precisely, as the cumulative rates over the interval. \section{Survival functions in the illness-death model} The survival functions for persons in the ``Well'' state can be computed under two fundamentally different scenarios, depending on whether persons in the ``Well'' state are assumed to be immune to the disease ($\lambda(a)=0$) or not. \subsection{Immune approach} In this case both survival functions for person in the two states are the usual simple transformation of the cumulative mortality rates: \[ S_W(a) = \exp\left(-\int_0^a\!\!\mu_W(u) \dif u \right), \qquad S_D(a) = \exp\left(-\int_0^a\!\!\mu_D(u) \dif u \right) \] \subsubsection{Conditional survival functions} If we want the \emph{conditional} survival functions given survival to age $A$, say, they are just: \[ S_W(a|A) = S_W(a)/S_W(A), \qquad S_D(a|A) = S_D(a)/S_D(A) \] \subsection{Non-immune approach} For a diseased person, the survival function in this states is the same as above, but the survival function for a person without disease (at age 0) is (see figure \ref{fig:states}): \[ S(a) = \ptxt{Well}\!(a) + \ptxt{DM}\!(a) \] In the appendix of the paper \cite{Carstensen.2008c} is an indication of how to compute the probability of being in any of the four states shown in figure \ref{fig:states}, which I shall repeat here: In terms of the rates, the probability of being in the ``Well'' box is simply the probability of escaping both death (at a rate of $\mu_W(a)$) and diabetes (at a rate of $\lambda(a)$): \[ \ptxt{Well}(a) = \exp\left(\!-\int_0^a\!\!\mu_W(u)+\lambda(u) \right) \dif u \] The probability of being alive with diabetes at age $a$, is computed given that diabetes occurred at age $s$ ($s>= data(DMepi) @ % The dataset \texttt{DMepi} contains diabetes events, deaths and person-years for persons without diabetes and deaths and person-years for persons with diabetes: <<>>= str(DMepi) head(DMepi) @ % For each combination of sex, age, period and date of birth in 1 year age groups, we have the person-years in the ``Well'' (\texttt{Y.nD}) and the ``DM'' (\texttt{Y.DM}) states, as well as the number of deaths from these (\texttt{D.nD}, \texttt{D.DM}) and the number of incident diabetes cases from the ``Well'' state (\texttt{X}). In order to compute the years of life lost to diabetes and how this has changed over time, we fit models for the mortality and incidence of both groups (and of course, separately for men and women). The models we use will be age-period-cohort models \cite{Carstensen.2007a} providing estimated mortality rates for ages 0--99 and dates 1.1.1996--1.1.2016. First we transform the age and period variables to reflect the mean age and period in each of the Lexis triangles. We also compute the total number of deaths and amount of risk time, as we are going to model the total mortality as well. Finally we restrict the dataset to ages over 30 only: <<>>= DMepi <- transform(subset(DMepi, A>30), D.T = D.nD + D.DM, Y.T = Y.nD + Y.DM) head(DMepi) @ % With the correct age and period coding in the Lexis triangles, we fit models for the mortalities and incidences. Note that we for comparative purposes also fit a model for the \emph{total} mortality, ignoring the <<>>= # Knots used in all models (a.kn <- seq(40, 95, , 6)) (p.kn <- seq(1997, 2015, , 4)) (c.kn <- seq(1910, 1976, , 6)) # Check the number of events between knots ae <- xtabs(cbind(D.nD, D.DM, X) ~ cut(A, c(30, a.kn, Inf)) + sex, data=DMepi) ftable(addmargins(ae, 1), col.vars=3:2) pe <- xtabs(cbind(D.nD, D.DM, X) ~ cut(P, c(1990, p.kn, Inf)) + sex, data=DMepi) ftable(addmargins(pe, 1), col.vars=3:2) ce <- xtabs(cbind(D.nD, D.DM, X) ~ cut(P-A, c(-Inf, c.kn, Inf)) + sex, data=DMepi) ftable(addmargins(ce, 1), col.vars=3:2) # Fit an APC-model for all transitions, seperately for men and women mW.m <- glm(D.nD ~ -1 + Ns(A , knots=a.kn, int=TRUE) + Ns( P, knots=p.kn, ref=2005) + Ns(P-A, knots=c.kn, ref=1950), offset = log(Y.nD), family = poisson, data = subset(DMepi, sex=="M")) mD.m <- update(mW.m, D.DM ~ . , offset=log(Y.DM)) mT.m <- update(mW.m, D.T ~ . , offset=log(Y.T)) lW.m <- update(mW.m, X ~ .) # Model for women mW.f <- update(mW.m, data = subset(DMepi, sex=="F")) mD.f <- update(mD.m, data = subset(DMepi, sex=="F")) mT.f <- update(mT.m, data = subset(DMepi, sex=="F")) lW.f <- update(lW.m, data = subset(DMepi, sex=="F")) @ % \section{Residual life time and years lost to DM} We now collect the estimated years of life lost classified by method (immune assumption or not), sex, age and calendar time: <<>>= a.ref <- 30:90 p.ref <- 1996:2016 aYLL <- NArray(list(type = c("Imm", "Tot", "Sus"), sex = levels(DMepi$sex), age = a.ref, date = p.ref)) str(aYLL) system.time( for(ip in p.ref) { nd <- data.frame(A = seq(30, 90, 0.2)+0.1, P = ip, Y.nD = 1, Y.DM = 1, Y.T = 1) muW.m <- ci.pred(mW.m, nd)[, 1] muD.m <- ci.pred(mD.m, nd)[, 1] muT.m <- ci.pred(mT.m, nd)[, 1] lam.m <- ci.pred(lW.m, nd)[, 1] muW.f <- ci.pred(mW.f, nd)[, 1] muD.f <- ci.pred(mD.f, nd)[, 1] muT.f <- ci.pred(mT.f, nd)[, 1] lam.f <- ci.pred(lW.f, nd)[, 1] aYLL["Imm", "M", , paste(ip)] <- yll(int=0.2, muW.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Imm", "F", , paste(ip)] <- yll(int=0.2, muW.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Tot", "M", , paste(ip)] <- yll(int=0.2, muT.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Tot", "F", , paste(ip)] <- yll(int=0.2, muT.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Sus", "M", , paste(ip)] <- yll(int=0.2, muW.m, muD.m, lam=lam.m, A=a.ref, age.in=30, note=FALSE)[-1] aYLL["Sus", "F", , paste(ip)] <- yll(int=0.2, muW.f, muD.f, lam=lam.f, A=a.ref, age.in=30, note=FALSE)[-1] }) round(ftable(aYLL[, , seq(1, 61, 10), ], col.vars=c(3, 2)), 1) @ % We now have the relevant points for the graph showing YLL to diabetes for men and women by age, and calendar year, both under the immunity and susceptibility models for the calculation of YLL. <>= plyll <- function(wh){ par(mfrow=c(1, 2), mar=c(3, 3, 1, 1), mgp=c(3, 1, 0)/1.6, bty="n", las=1) matplot(a.ref, aYLL[wh, "M", , ], type="l", lty=1, col="blue", lwd=1:2, ylim=c(0, 12), xlab="Age", ylab="Years lost to DM", yaxs="i") abline(v=50, h=1:10, col=gray(0.7)) text(90, 11, "Men", col="blue", adj=1) text(40, aYLL[wh, "M", "40", "1996"], "1996", adj=c(0, 0), col="blue") text(43, aYLL[wh, "M", "44", "2016"], "2016", adj=c(1, 1), col="blue") matplot(a.ref, aYLL[wh, "F", , ], type="l", lty=1, col="red", lwd=1:2, ylim=c(0, 12), xlab="Age", ylab="Years lost to DM", yaxs="i") abline(v=50, h=1:10, col=gray(0.7)) text(90, 11, "Women", col="red", adj=1) text(40, aYLL[wh, "F", "40", "1996"], "1996", adj=c(0, 0), col="red") text(43, aYLL[wh, "F", "44", "2016"], "2016", adj=c(1, 1), col="red") } plyll("Imm") @ % <>= plyll("Tot") @ % <>= plyll("Sus") @ % \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-imm} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes, assuming the persons without diabetes at a given age remain free from diabetes (immunity assumption --- not reasonable). The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:imm} \end{figure} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-sus} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes, allowing the persons without diabetes at a given to contract diabetes and thus be subject to higher mortality. The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:sus} \end{figure} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-tot} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes. Allowance for susceptibility is approximated by using the total population mortality instead of non-DM mortality. The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:tot} \end{figure} From figure \ref{fig:sus} we see that for men aged 50 the years lost to diabetes has decreased from a bit over 8 to a bit less than 6 years, and for women from 8.5 to 5 years; so a greater improvement for women. \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2007a} B~Carstensen. \newblock Age-{P}eriod-{C}ohort models for the {L}exis diagram. \newblock {\em Statistics in Medicine}, 26(15):3018--3045, 2007. \bibitem{Carstensen.2008c} B~Carstensen, JK~Kristensen, P~Ottosen, and K~Borch-Johnsen. \newblock The {D}anish {N}ational {D}iabetes {R}egister: {T}rends in incidence, prevalence and mortality. \newblock {\em Diabetologia}, 51:2187--2196, 2008. \end{thebibliography} \addcontentsline{toc}{chapter}{References} \end{document} Epi/inst/doc/flup.rnw0000644000175100001440000016730414223742210014235 0ustar hornikusers%\VignetteIndexEntry{Analysis of follow-up data using the Lexis functions in Epi} \SweaveOpts{results=verbatim,keep.source=TRUE,include=FALSE,eps=FALSE} \documentclass[a4paper,dvipsnames,twoside,12pt]{report} \newcommand{\Title}{Analysis of follow-up data\\ using the \texttt{Lexis} functions in \texttt{Epi}} \newcommand{\Tit}{Follow-up with \texttt{Lexis}} \newcommand{\Version}{Version 7} \newcommand{\Dates}{April 2021} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/} } \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk} \\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./flup} <>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) library(Epi) installed.packages()["Epi", 1:3] @ % \chapter*{Introduction} \addcontentsline{toc}{chapter}{Introduction} This is an introduction to the \texttt{Lexis} machinery in the \texttt{Epi} package. The machinery is intended for representation and manipulation of follow-up data (event history data) from studies where exact dates of events are known. It accommodates follow-up through multiple states and on multiple time scales. This vignette uses an example from the \texttt{Epi} package to illustrate the set-up of a simple \texttt{Lexis} object (a data frame of follow-up intervals), as well as the subdivision of follow-up intervals needed for multistate representation and analysis of transition rates. The first chapter is exclusively on manipulation of the follow-up representation, but it points to the subsequent chapter where analysis is based on a \texttt{Lexis} representation with very small follow-up intervals. Chapter 2 uses analysis of mortality rates among Danish diabetes patients (available in the \texttt{Epi} package) currently on insulin treatment or not to illustrate the use of the the \texttt{Lexis} machinery. \section{History} The \texttt{Lexis} machinery in the \texttt{Epi} package was first conceived by Martyn Plummer\cite{Plummer.2011,Carstensen.2011a}, and since its first appearance in the \texttt{Epi} package in 2008 it has been expanded with a number of utilities. An overview of these can be found in the last chapter of this note: ``\texttt{Lexis} functions''. \chapter{Representation of follow-up data in the \texttt{Epi} package} In the \texttt{Epi}-package, follow-up data is represented by adding some extra variables and a few attributes to a data frame. Such a data frame is called a \texttt{Lexis} object. The tools for handling follow-up data then use the structure of this for special plots, tabulations and modeling. Follow-up data basically consists of a time of entry, a time of exit and an indication of the status at exit (normally either ``alive'' or ``dead'') for each person. Implicitly is also assumed a status \emph{during} the follow-up (usually ``alive''). \begin{figure}[htbp] \centering \setlength{\unitlength}{1pt} \begin{picture}(210,70)(0,75) %\scriptsize \thicklines \put( 0,80){\makebox(0,0)[r]{Age-scale}} \put( 50,80){\line(1,0){150}} \put( 50,80){\line(0,1){5}} \put(100,80){\line(0,1){5}} \put(150,80){\line(0,1){5}} \put(200,80){\line(0,1){5}} \put( 50,77){\makebox(0,0)[t]{35}} \put(100,77){\makebox(0,0)[t]{40}} \put(150,77){\makebox(0,0)[t]{45}} \put(200,77){\makebox(0,0)[t]{50}} \put( 0,115){\makebox(0,0)[r]{Follow-up}} \put( 80,105){\makebox(0,0)[r]{\small Two}} \put( 90,105){\line(1,0){87}} \put( 90,100){\line(0,1){10}} \put(100,100){\line(0,1){10}} \put(150,100){\line(0,1){10}} \put(180,105){\circle{6}} \put( 95,110){\makebox(0,0)[b]{1}} \put(125,110){\makebox(0,0)[b]{5}} \put(165,110){\makebox(0,0)[b]{3}} \put( 50,130){\makebox(0,0)[r]{\small One}} \put( 60,130){\line(1,0){70}} \put( 60,125){\line(0,1){10}} \put(100,125){\line(0,1){10}} \put(130,130){\circle*{6}} \put( 80,135){\makebox(0,0)[b]{4}} \put(115,135){\makebox(0,0)[b]{3}} \end{picture} \caption{\it Follow-up of two persons} \label{fig:fu2} \end{figure} \section{Time scales} A time scale is a variable that varies deterministically \emph{within} each person during follow-up, \textit{e.g.}: \begin{itemize} \item Age \item Calendar time \item Time since start of treatment \item Time since relapse \end{itemize} All time scales advance at the same pace, so the time followed is the same on all time scales. Therefore, it will suffice to use only the entry point on each of the time scales, for example: \begin{itemize} \item Age at entry \item Date of entry \item Time at treatment (\emph{at} treatment this is 0) \item Time at relapse (\emph{at} relapse this is 0) \end{itemize} For illustration we need to load the \texttt{Epi} package: <<>>= library(Epi) print( sessionInfo(), l=F ) @ % In the \texttt{Epi} package, follow-up in a cohort is represented in a \texttt{Lexis} object. As mentioned, a \texttt{Lexis} object is a data frame with some extra structure representing the follow-up. For the \texttt{DMlate} data --- follow-up of diabetes patients in Denmark recording date of birth, date of diabetes, date of insulin use, date of first oral drug use and date of death --- we can construct a \texttt{Lexis} object by: <<>>= data( DMlate ) head( DMlate ) dmL <- Lexis( entry = list( per=dodm, age=dodm-dobth, tfD=0 ), exit = list( per=dox ), exit.status = factor( !is.na(dodth), labels=c("DM","Dead") ), data = DMlate ) timeScales(dmL) @ % (The excluded persons are persons with date of diabetes equal to date of death.) The \texttt{entry} argument is a \emph{named} list with the entry points on each of the time scales we want to use. It defines the names of the time scales and the entry points of the follow-up of each person. The \texttt{exit} argument gives the exit time on \emph{one} of the time scales, so the name of the element in this list must match one of the names of the \texttt{entry} list. This is sufficient, because the follow-up time on all time scales is the same, in this case $\mathtt{dox}$-$\mathtt{dodm}$. The \texttt{exit.status} is a categorical variable (a \emph{factor}) that indicates the exit status --- in this case whether the person (still) is in state \texttt{DM} or exits to \texttt{Dead} at the end of follow-up. In principle we should also indicate the \texttt{entry.status}, but the default is to assume that all persons enter in the \emph{first} of the mentioned \texttt{exit.state}s --- in this case \texttt{DM}, because $\mathtt{FALSE}<\mathtt{TRUE}$. Now take a look at the result: <<>>= str(dmL) head(dmL)[,1:10] @ % The \texttt{Lexis} object \texttt{dmL} has a variable for each time scale which is the entry point on this time scale. The follow-up time is in the variable \texttt{lex.dur} (\texttt{dur}ation). Note that the exit status is in the variable \texttt{lex.Xst} (e\texttt{X}it \texttt{st}ate. The variable \texttt{lex.Cst} is the state where the follow-up takes place (\texttt{C}urrent \texttt{st}ate), in this case \texttt{DM} (alive with diabetes) for all persons. This implies that \emph{censored} observations are characterized by having $\mathtt{lex.Cst}=\mathtt{lex.Xst}$. There is a \texttt{summary} function for \texttt{Lexis} objects that lists the number of transitions and records as well as the total amount of follow-up time; it also (optionally) prints information about the names of the variables that constitute the time scales: <<>>= summary.Lexis( dmL, timeScales=TRUE ) @ % It is possible to get a visualization of the follow-up along the time scales chosen by using the \texttt{plot} method for \texttt{Lexis} objects. \texttt{dmL} is an object of \emph{class} \texttt{Lexis}, so using the function \texttt{plot()} on it means that \R\ will look for the function \texttt{plot.Lexis} and use this function. <>= plot( dmL ) @ % The function allows quite a bit of control over the output, and a \texttt{points.Lexis} function allows plotting of the endpoints of follow-up: <>= par(mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot(dmL, 1:2, lwd=1, col=c("blue","red")[dmL$sex], grid=TRUE, lty.grid=1, col.grid=gray(0.7), xlim=1960+c(0,60), xaxs="i", ylim= 40+c(0,60), yaxs="i", las=1) points(dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col="lightgray", lwd=3, cex=0.3) points(dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col=c("blue","red")[dmL$sex], lwd=1, cex=0.3) box(bty='o') @ % In the above code you will note that the values of the arguments \texttt{col} and \texttt{pch} are indexed by factors, using the convention in \R\ that the index is taken as \emph{number of the level} of the supplied factor. Thus \texttt{c("blue","red")[dmL\$sex]} is \texttt{"blue"} when \texttt{sex} is \texttt{M} (the first level). The results of these two plotting commands are in figure \ref{fig:Lexis-diagram}, p. \pageref{fig:Lexis-diagram}. \begin{figure}[tb] \centering \includegraphics[width=0.35\textwidth]{flup-dmL1} \includegraphics[width=0.63\textwidth]{flup-dmL2} \caption{\it Lexis diagram of the \textrm{\tt DMlate} dataset; left panel is the default version, right panel: plot with some bells and whistles. The red lines are for women, blue for men, crosses indicate deaths.} \label{fig:Lexis-diagram} \end{figure} \section{Splitting the follow-up time along a time scale} In next chapter we shall conduct statistical analysis of mortality rates, and a prerequisite for parametric analysis of rates is that follow-up time is subdivided in smaller intervals, where we can reasonably assume that rates are constant. The follow-up time in a cohort can be subdivided (``split'') along a time scale, for example current age. This is achieved by the \texttt{splitLexis} (note that it is \emph{not} called \texttt{split.Lexis}). This requires that the time scale and the breakpoints on this time scale are supplied. Try: <<>>= dmS1 <- splitLexis( dmL, "age", breaks=seq(0,100,5) ) summary( dmL ) summary( dmS1 ) @ % We see that the number of persons and events and the amount of follow-up is the same in the two data sets; only the number of records differ --- the extra records all have \texttt{lex.Cst}=\texttt{DM} and \texttt{lex.Xst}=\texttt{DM}. To see how records are split for each individual, it is useful to list the results for a few individuals (whom we selected with a view to the illustrative usefulness): <<>>= wh.id <- c(9, 27, 52, 484) subset(dmL , lex.id %in% wh.id)[,1:10] subset(dmS1, lex.id %in% wh.id)[,1:10] @ % The resulting object, \texttt{dmS1}, is again a \texttt{Lexis} object, and the follow-up may be split further along another time scale, for example diabetes duration, \texttt{tfD}. Subsequently we list the results for the chosen individuals: <<>>= dmS2 <- splitLexis(dmS1, "tfD", breaks=c(0,1,2,5,10,20,30,40)) subset( dmS2, lex.id %in% wh.id )[,1:10] @ % A more efficient (and more intuitive) way of making this double split is to use the \texttt{splitMulti} function from the \texttt{popEpi} package: <<>>= if (require(popEpi, quietly=TRUE)) { options("popEpi.datatable" = FALSE) dmM <- splitMulti(dmL, age = seq(0,100,5), tfD = c(0,1,2,5,10,20,30,40), drop = FALSE) summary(dmS2) summary(dmM) } @ % Note we used the argument \texttt{drop=FALSE} which will retain follow-up also outside the window defined by the range of the breaks. Otherwise, the default for \texttt{splitMulti} would be to drop follow-up outside \texttt{age} [0,100] and \texttt{tfD} [0,40]. This clipping behaviour is not available in \texttt{splitLexis}, nevertheless this may be exactly what we want in some situations. So we see that the two ways of splitting data yields the same amount of follow-up, but the results are not necessarily identical on all machines: <<>>= if (require(popEpi, quietly=TRUE)) { identical( dmS2, dmM ) class( dmS2 ) class( dmM ) } @ % As we see, this is because the \texttt{dmM} object also is a \texttt{data.table} object; the \texttt{splitMulti} uses the \texttt{data.table} machinery which makes the splitting substantially faster --- this is of particular interest if you operate on large data sets ($>100,000$ records). Thus the recommended way of splitting follow-up time is by \texttt{splitMulti}. But you should be aware that the result is a \texttt{data.table} object, which in some circumstances behaves slightly different from \texttt{data.frame}s. See the manual for \texttt{data.table}. \section{Cutting follow up time at dates of intermediate events} If we have a recording of the date of a specific event as for example recovery or relapse, we may classify follow-up time as being before or after this intermediate event, but it requires that follow-up records that straddle the event be cut in two and placed in separate records, one representing follow-up \emph{before} the intermediate event, and another representing follow-up \emph{after} the intermediate event. This is achieved with the function \texttt{cutLexis}, which takes three arguments: the time point of the intermediate event, the time scale that this point refers to, and the value of the (new) state following the date. Optionally, we may also define a new time scale with the argument \texttt{new.scale=}. We are interested in the time before and after inception of insulin use, which occurs at the date \texttt{doins}: <<>>= subset(dmL, lex.id %in% wh.id) dmC <- cutLexis( data = dmL, cut = dmL$doins, timescale = "per", new.state = "Ins", new.scale = "tfI") subset(dmC, lex.id %in% wh.id)[,1:10] @ % Note that the process of cutting time is simplified by having all types of events referred to the calendar time scale. This is a generally applicable advice in handling follow-up data: Get all event times as \emph{dates}, location of events and follow-up on other time scales can then easily be derived from this. Note that individual 52 has had his follow-up cut at 6.55 years from diabetes diagnosis and individual 484 at 5.70 years from diabetes diagnosis. This dataset could then be split along the time scales as we did before with \texttt{dmL}. The result of this can also be achieved by cutting the split dataset \texttt{dmS2} instead of \texttt{dmL}: <<>>= dmS2C <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM" ) subset( dmS2C, lex.id %in% wh.id ) @ % Thus it does not matter in which order we use \texttt{splitLexis} and \texttt{cutLexis}. Mathematicians would say that \texttt{splitLexis} and \texttt{cutLexis} are commutative. Note in \texttt{lex.id}=484, that follow-up subsequent to the event is classified as being in state \texttt{Ins}, but that the final transition to state \texttt{Dead} is preserved. This is the point of the \texttt{precursor.states=} argument. It names the states (in this case \texttt{DM}) that will be over-written by \texttt{new.state} (in this case \texttt{Ins}), while the state \texttt{Dead} should not be updated even if it is after the time where the persons moves to state \texttt{Ins}. In other words, only state \texttt{DM} is a precursor to state \texttt{Ins}, state \texttt{Dead} is always subsequent to state \texttt{Ins}. Note that we defined a new time scale, \texttt{tfI}, using the argument \texttt{new.scale=tfI}. This has a special status relative to the other three time scales, it is defined as time since entry into a state, namely \texttt{Ins}, this is noted in the time scale part of the summary of \texttt{Lexis} object --- the information sits in the attribute \texttt{time.since} of the \texttt{Lexis} object, which can be accessed by the function \texttt{timeSince()} or through the \texttt{summary()}: <<>>= summary(dmS2C, timeScales = TRUE) @ % Finally we can get a quick overview of the states and transitions by using \texttt{boxes} --- \texttt{scale.R} scales transition rates to rates per 1000 PY: <>= boxes(dmC, boxpos = TRUE, scale.R = 1000, show.BE = TRUE) @ % \insfig{box1}{0.8}{States, person years, transitions and rates in the cut dataset. The numbers \emph{in} the boxes are person-years and the number of persons \texttt{B}eginning, resp. \texttt{E}nding their follow-up in each state (triggered by \textrm{\tt show.BE=TRUE}). The numbers at the arrows are the number of transitions and transition rates per 1000 (triggered by \textrm{\tt scale.R=1000}).} \chapter{Modeling rates from \texttt{Lexis} objects} \section{Covariates} In the dataset \texttt{dmS2C} there are three types of covariates that can be used to describe mortality rates: \begin{enumerate} \item time-dependent covariates \item time scales \item fixed covariates \end{enumerate} There is only one time-dependent covariate here, namely \texttt{lex.Cst}, the current state of the person's follow up; it takes the values \texttt{DM} and \texttt{Ins} according to whether the person has ever purchased insulin at a given time of follow-up. The time-scales are obvious candidates for explanatory variables for the rates, notably age and time from diagnosis (duration of diabetes) and insulin. \subsection{Time scales as covariates} If we want to model the effect of the time scale variables on occurrence rates, we will for each interval use either the value of the left endpoint in each interval or the middle. There is a function \texttt{timeBand} which returns either of these: <<>>= timeBand( dmS2C, "age", "middle" )[1:10] # For nice printing and column labelling we use the data.frame() function: data.frame( dmS2C[,c("per","age","tfD","lex.dur")], mid.age=timeBand( dmS2C, "age", "middle" ), mid.t=timeBand( dmS2C, "tfD", "middle" ), left.t=timeBand( dmS2C, "tfD", "left" ), right.t=timeBand( dmS2C, "tfD", "right" ), fact.t=timeBand( dmS2C, "tfD", "factor" ) )[1:15,] @ % Note that the values of these functions are characteristics of the intervals defined by \texttt{breaks=}, \emph{not} the midpoints nor left or right endpoints of the actual follow-up intervals (which would be \texttt{tfD} and \texttt{tfD+lex.dur}, respectively). These functions are intended for modeling time scale variables as factors (categorical variables) in which case the coding must be independent of the censoring and mortality pattern --- it should only depend on the chosen grouping of the time scale. Modeling time scales as \emph{quantitative} should not be based on these codings but directly on the values of the time-scale variables, notably the left endpoints of the intervals. \subsection{Differences between time scales} Apparently, the only fixed variable is \texttt{sex}, but formally the dates of birth (\texttt{dobth}), diagnosis (\texttt{dodm}) and first insulin purchase (\texttt{doins}) are fixed covariates too. They can be constructed as origins of time scales referred to the calendar time scale. Likewise, and possibly of greater interest, we can consider these origins on the age scale, calculated as the difference between age and another time scale. These would then be age at birth (hardly relevant since it is the same for all persons), age at diabetes diagnosis and age at insulin treatment. \subsection{Keeping the relation between time scales} The midpoint (as well as the right interval endpoint) should be used with caution if the variable age at diagnosis \texttt{dodm-dobth} is modeled too; the age at diabetes is logically equal to the difference between current age (\texttt{age}) and time since diabetes diagnosis (\texttt{tfD}): <<>>= summary( (dmS2$age-dmS2$tfD) - (dmS2$dodm-dmS2$dobth) ) @ % This calculation refers to the \emph{start} of each interval --- which are in the time scale variables in the \texttt{Lexis} object. But when using the middle of the intervals, this relationship is not preserved: <<>>= summary( timeBand( dmS2, "age", "middle" ) - timeBand( dmS2, "tfD", "middle" ) - (dmS2$dodm-dmS2$dobth) ) @ % If all three variables are to be included in a model, we must make sure that the \emph{substantial} relationship between the variables be maintained. One way is to recompute age at diabetes diagnosis from the two midpoint variables, but more straightforward would be to use the left endpoint of the intervals, that is the time scale variables in the \texttt{Lexis} object. If we dissolve the relationship between the variables \texttt{age}, \texttt{tfD} and age at diagnosis by grouping we may obtain identifiability of the three separate effects, but it will be at the price of an arbitrary allocation of a linear trend between them. For the sake of clarity, consider current age, $a$, duration of disease, $d$ and age at diagnosis $e$, where \[ \text{current age} = \text{age at diagnosis} + \text{disease duration}, \quad \text{\ie} \quad a=e+d \quad \Leftrightarrow \quad e+d-a=0 \] If we model the effect of the quantitative variables $a$, $e$ and $d$ on the log-rates by three functions $f$, $g$ and $h$: $ \log(\lambda)=f(a)+g(d)+h(e) $ then for any $\kappa$: \begin{align*} \log(\lambda) & = f(a)+g(d)+h(e)+\kappa(e+d-a)\\ & = \big(f(a)-\kappa a \big)+ \big(g(d)+\kappa d \big)+ \big(h(e)+\kappa e \big) \\ & = \tilde f(a)+ \tilde g(d)+ \tilde h(e) \end{align*} In practical modeling this will turn up as a singular model matrix with one parameter aliased, corresponding to some arbitrarily chosen value of $\kappa$ (depending on software conventions for singular models). This phenomenon is well known from age-period-cohort models. Thus we see that we can move any slope around between the three terms, so if we achieve identifiability by using grouping of one of the variables we will in reality have settled for a particular value of $\kappa$, without known why we chose just that. The solution is to resort to predictions which are independent of the particular parametrization or choose a particular parametrization with explicit constraints. \section{Modeling of rates} As mentioned, the purpose of subdividing follow-up data in smaller intervals is to be able to model effects of time scale variables as parametric functions. When we split along a time scale we can get intervals that are as small as we want; if they are sufficiently small, an assumption of constant rates in each interval becomes reasonable. In a model that assumes a constant occurrence rate in each of the intervals the likelihood contribution from each interval is the same as the likelihood contribution from a Poisson variate $D$, say, with mean $\lambda \ell$ where $\lambda$ is the rate and $\ell$ is the interval length, and where the value of the variate $D$ is 1 or 0 according to whether an event has occurred or not. Moreover, the likelihood contributions from all follow-up intervals from a single person are \emph{conditionally} independent (conditional on having survived till the start of the interval in question). This implies that the total contribution to the likelihood from a single person is a product of terms, and hence the same as the likelihood of a number of independent Poisson terms, one from each interval. Note that variables are neither Poisson distributed (\eg they can only ever assume values 0 or 1) nor independent --- it is only the likelihood for the follow-up data that happens to be the same as the likelihood from independent Poisson variates. Different models can have the same likelihood, a model cannot be inferred from the likelihood. Parametric modeling of the rates is obtained by using the \emph{values} of the time scales for each interval as \emph{quantitative} explanatory variables, using for example splines. And of course also the values of the fixed covariates and the time-dependent variables for each interval. Thus the model will be one where the rate is assumed constant in each (small) interval, but where a parametric form of the \emph{size} of the rate in each interval is imposed by the model, using the time scale as a quantitative covariate. \subsection{Interval length} In the first chapter we illustrated cutting and splitting by listing the results for a few individuals across a number of intervals. For illustrational purposes we used 5-year age bands to avoid excessive listings, but since the doubling time for mortality on the age scale is only slightly larger than 5 years, the assumption about constant rates in each interval would be pretty far fetched if we were to use 5 year intervals. Thus, for modeling purposes we split the follow-up in 3 month intervals. When we use intervals of 3 months length it is superfluous to split along multiple time scales --- the precise location of tightly spaced splits will be irrelevant from any practical point of view. \texttt{splitLexis} and \texttt{splitMulti} will allocate the actual split times for all of the time scale variables, so these can be used directly in modeling. So we split the cut dataset in 3 months intervals along the age scale: <<>>= dmCs <- splitLexis( dmC, time.scale="age", breaks=seq(0, 110, 1/4) ) summary( dmCs, t=T ) @ % We see that we now have 228,748 records and 9996 persons, so about 23 records per person. The total risk time is 54,275 years, a bit less than 3 months on average per record as expected. \subsection{Practicalities for splines} In this study we want to look at how mortality depend on age (\texttt{age}) and time since start of insulin use (\texttt{tfI}). If we want to use splines in the description we must allocate knots for anchoring the splines at each of the time scales, either by some \textit{ad hoc} method or by using some sort of penalized splines as for example by \texttt{gam}; the latter will not be treated here; it belongs in the realm of the \texttt{mgcv} package. Here we shall use the former approach and allocate 5 knots on each of the time-scales. We allocate knots so that we have the events evenly distributed between the knots. Since the insulin state starts at 0 for all individuals we include 0 as the first knot, such that any set of natural splines with these knots will have the value 0 at 0 on the time scale. <<>>= ( a.kn <- with( subset( dmCs, lex.Xst=="Dead" ), quantile( age+lex.dur, (1:5-0.5)/5 ) ) ) ( i.kn <- c( 0, with( subset( dmCs, lex.Xst=="Dead" & lex.Cst=="Ins" ), quantile( tfI+lex.dur, (1:4)/5 ) ) ) ) @ % In the \texttt{Epi} package there is a convenience wrapper, \texttt{Ns}, for the \texttt{n}atural \texttt{s}pline generator \texttt{ns}, that takes the smallest and the largest of a set of supplied knots to be the boundary knots, so the explicit definition of the boundary knots becomes superfluous. Note that it is a feature of the \texttt{Ns} (via the features of \texttt{ns}) that any generated spline function is 0 at the leftmost knot. \subsection{Poisson models} A model that describes mortality rates as only a function of age would then be: <<>>= ma <- glm( (lex.Xst=="Dead") ~ Ns(age,knots=a.kn), family = poisson, offset = log(lex.dur), data = dmCs ) summary( ma ) @ % The offset, \texttt{log(lex.dur)} comes from the fact that the likelihood for the follow-up data during $\ell$ time is the same as that for independent Poisson variates with mean $\lambda \ell$, and that the default link function for the Poisson family is the log, so that we are using a linear model for the log-mean, $\log(\lambda) + \log(\ell)$. But when we want a model for the log-rate ($\log(\lambda)$), the term $\log(\ell)$ must still be included as a covariate, but with regression coefficient fixed to 1; a so-called \emph{offset}. This is however a technicality; it just exploits that the likelihood of a particular Poisson model and that of the rates model is the same. In the \texttt{Epi} package is a \texttt{glm} family, \texttt{poisreg} that has a more intuitive interface, where the response is a 2-column matrix of events and person-time, respectively. This is in concert with the fact that the outcome variable in follow-up studies is bivariate: (event, risk time). <<>>= Ma <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn), family = poisreg, data = dmCs ) summary( Ma ) @ % Exploiting the multistate structure in the \texttt{Lexis} object there is a multistate convenience wrapper for \texttt{glm} with the \texttt{poisreg} family, that just requires specification of the transitions in terms of \texttt{from} and \texttt{to}. Although it is called \texttt{glm.Lexis} it is \emph{not} an S3 method for \texttt{Lexis} objects: <<>>= Xa <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) ) @ % The result is a \texttt{glm} object but with an extra attribute, \texttt{Lexis}: <<>>= attr( Xa, "Lexis" ) @ % There are similar wrappers for \texttt{gam} and \texttt{coxph} models, \texttt{gam.Lexis} and \texttt{coxph.Lexis}, but these will not be elaborated in detail. The \texttt{from=} and \texttt{to=} can even be omitted, in which case all possible transitions \emph{into} any of the absorbing states is modeled: <<>>= xa <- glm.Lexis( dmCs, formula = ~ Ns(age,knots=a.kn) ) @ We can check if the four models fitted are the same: <<>>= c( deviance(ma), deviance(Ma), deviance(Xa), deviance(xa) ) @ % Oops! the model \texttt{Xa} is apparently not the same as the other three? This is because the explicit specification \verb|from="DM", to="Dead"|, omits modeling contributions from the $\mathtt{Ins}\rightarrow\mathtt{Dead}$ transition --- the output actually said so --- see also figure \ref{fig:box1} on p. \pageref{fig:box1}. The other three models all use both transitions --- and assume that the two transition rates are the same, \ie that start of insulin has no effect on mortality. We shall relax this assumption later. The parameters from the model do not have any direct interpretation \textit{per se}, but we can compute the estimated mortality rates for a range of ages using \texttt{ci.pred} with a suitably defined prediction data frame. Note that if we use the \texttt{poisson} family of models, we must specify all covariates in the model, including the variable in the offset, \texttt{lex.dur} (remember that this was a covariate with coefficient fixed at 1). We set the latter to 1000, because we want the mortality rates per 1000 person-years. Using the \texttt{poisreg} family, the prediction will ignore any value of \texttt{lex.dur} specified in the prediction data frame, the returned rates will be per unit in which \texttt{lex.dur} is recorded. <>= nd <- data.frame( age=40:85, lex.dur=1000 ) pr.0 <- ci.pred( ma, newdata = nd ) # mortality per 100 PY pr.a <- ci.pred( Ma, newdata = nd )*1000 # mortality per 100 PY summary(pr.0/pr.a) matshade( nd$age, pr.a, plot=TRUE, type="l", lty=1, log="y", xlab="Age (years)", ylab="DM mortality per 1000 PY") @ % \insfig{pr-a}{0.8}{Mortality among Danish diabetes patients by age with 95\% CI as shaded area. We see that the rates increase linearly on the log-scale, that is exponentially by age.} \section{Time dependent covariate} A Poisson model approach to mortality by insulin status, would be to assume that the rate-ratio between patients on insulin and not on insulin is a fixed quantity, independent of time since start of insulin, independent of age. This is commonly termed a proportional hazards assumption, because the rates (hazards) in the two groups are proportional along the age (baseline time) scale. <<>>= pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + lex.Cst + sex, family=poisreg, data = dmCs ) round( ci.exp( pm ), 3 ) @ % So we see that persons on insulin have about twice the mortality of persons not on insulin and that women have 2/3 the mortality of men. \subsection{Time since insulin start} If we want to test whether the excess mortality depends on the time since start if insulin treatment, we can add a spline terms in \texttt{tfI}. But since \texttt{tfI} is a time scale defined as time since entry into a new state (\texttt{Ins}), the variable \texttt{tfI} will be missing for those in the \texttt{DM} state, so before modeling we must set the \texttt{NA}s to 0, which we do with \texttt{tsNA20} (acronym for \texttt{t}ime\texttt{s}cale \texttt{NA}s to zero): <<>>= pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex, family=poisreg, data = tsNA20(dmCs) ) @ % As noted before we could do this simpler with \texttt{glm.Lexis}, even without the \texttt{from=} and \texttt{to=} arguments, because we are modeling all transitions \emph{into} the absorbing state (\texttt{Dead}): <<>>= Pm <- glm.Lexis( tsNA20(dmCs), form = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex ) c( deviance(Pm), deviance(pm) ) identical( model.matrix(Pm), model.matrix(pm) ) @ % The coding of the effect of \texttt{tfI} is so that the value is 0 at 0, so the meaning of the estimate of the effect of \texttt{lex.Cst} is the RR between persons with and without insulin, immediately after start of insulin: <<>>= round( ci.exp( Pm, subset="ex" ), 3 ) @ % We see that the effect of sex is pretty much the same as before, but the effect of \texttt{lex.Cst} is much larger, it now refers to a different quantity, namely the RR at \texttt{tfI}=0. If we want to see the effect of time since insulin, it is best viewed jointly with the effect of age: <>= ndI <- data.frame( expand.grid( tfI=c(NA,seq(0,15,0.1)), ai=seq(40,80,10) ), sex="M", lex.Cst="Ins" ) ndI <- transform( ndI, age=ai+tfI ) head( ndI ) ndA <- data.frame( age= seq(40,100,0.1), tfI=0, lex.Cst="DM", sex="M" ) pri <- ci.pred( Pm, ndI ) * 1000 pra <- ci.pred( Pm, ndA ) * 1000 matshade( ndI$age, pri, plot=TRUE, las=1, xlab="Age (years)", ylab="DM mortality per 1000 PY", log="y", lty=1, col="blue" ) matshade( ndA$age, pra ) @ % \insfig{ins-time}{0.8}{Mortality rates of persons on insulin, starting insulin at ages 40,50,\ldots,80 (blue), compared with persons not on insulin (black curve). Shaded areas are 95\% CI.} In figure \ref{fig:ins-time}, p. \pageref{fig:ins-time}, we see that mortality is high just after insulin start, but falls by almost a factor 3 during the first year. Also we see that there is a tendency that mortality in a given age is smallest for those with the longest duration of insulin use. \section{The Cox model} Note that in the Cox-model the age is used as response variable, slightly counter-intuitive. Hence the age part of the linear predictors is not in that model: <<>>= library( survival ) cm <- coxph( Surv(age,age+lex.dur,lex.Xst=="Dead") ~ Ns(tfI,knots=i.kn) + lex.Cst + sex, data = tsNA20(dmCs) ) @ % There is also a multistate wrapper for Cox models, requiring a l.h.s. side for the \texttt{formula=} argument: <<>>= Cm <- coxph.Lexis( tsNA20(dmCs), form= age ~ Ns(tfI,knots=i.kn) + lex.Cst + sex ) cbind( ci.exp( cm ), ci.exp( Cm ) ) @ % We can compare the estimates from the Cox model with those from the Poisson model --- we must add \texttt{NA}s because the Cox-model does not give the parameters for the baseline time scale (\texttt{age}), but also remove one of the parameters, because \texttt{coxph} parametrizes factors (in this case \texttt{lex.Cst}) by all defined levels and not only by the levels present in the dataset at hand (note the line of \texttt{1.0000000}s in the print above): <<>>= round( cbind( ci.exp( Pm ), rbind( matrix(NA,5,3), ci.exp( cm )[-6,] ) ), 3 ) @ % Thus we see that the Poisson and Cox gives pretty much the same results. You may argue that Cox requires a smaller dataset, because there is no need to subdivide data in small intervals \emph{before} insulin use. But certainly the time \emph{after} insulin inception need to be if the effect of this time should be modeled. The drawback of the Cox-modeling is that it is not possible to show the absolute rates as we did in figure \ref{fig:ins-time} on \pageref{fig:ins-time}. \section{Marginal effect of time since insulin} When we plot the marginal effect of \texttt{tfI} from the two models we get pretty much the same; here we plot the RR relative to \texttt{tfI}=2 years. Note that we are deriving the RR as the ratio of two sets of predictions, from the data frames \texttt{nd} and \texttt{nr} --- for further details consult the help page for \texttt{ci.lin}, specifically the use of a list as the \texttt{ctr.mat} argument: <>= nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 2 , lex.Cst="Ins", sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), plot=T, lty=c(1,2), log="y", xlab="Time since insulin (years)", ylab="Rate ratio") abline( h=1, lty=3 ) @ % \insfig{Ieff}{0.8}{The naked duration effects relative to 2 years of duration, black from Poisson model, red from Cox model. The two sets of estimates are identical, and so are the standard errors, so the two shaded areas overlap almost perfectly.} In figure \ref{fig:Ieff}, p. \pageref{fig:Ieff}, we see that the duration effect is exactly the same from the two modeling approaches. We will also want the RR relative to the non-insulin users --- recall these are coded 0 on the \texttt{tfI} variable: <>= nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 0 , lex.Cst="DM" , sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), xlab="Time since insulin (years)", ylab="Rate ratio relative to non-Insulin", lty=c(1,2), log="y", plot=T ) @ % \insfig{IeffR}{0.8}{Insulin duration effect (state \textrm{\tt Ins}) relative to no insulin (state \textrm{\tt DM}), black from Poisson model, red from Cox model. The \emph{shape} is the same as the previous figure, but the RR is now relative to non-insulin, instead of relative to insulin users at 2 years duration. The two sets of estimates are identical, and so are the standard errors, so the two shaded areas overlap almost perfectly.} In figure \ref{fig:IeffR}, p. \pageref{fig:IeffR}, we see the effect of increasing duration of insulin use \emph{for a fixed age} which is a bit artificial, so we would like to see the \emph{joint} effects of age and insulin duration. What we cannot see is how the duration affects mortality relative to \texttt{current} age (at the age attained at the same time as the attained \texttt{tfI}). Another way of interpreting this curve is as the rate ratio relative to a person not on insulin, so we see that the RR (or hazard ratio, HR as some call it) is over 5 at the start of insulin (the \texttt{lex.Cst} estimate), and decreases to about 1.5 in the long term. Both figure \ref{fig:Ieff} and \ref{fig:IeffR} indicate a declining RR by insulin duration, but only from figure \ref{fig:ins-time} it is visible that mortality actually is \emph{in}creasing by age after some 2 years after insulin start. This point would not be available if we had only fitted a Cox model where we did not have access to the baseline hazard as a function of age. \section{Age$\times$duration interaction} The model we fitted assumes that the RR is the same regardless of the age at start of insulin --- the hazards are multiplicative. Sometimes this is termed the proportional hazards assumption: For \emph{any} fixed age the HR is the same as a function of time since insulin, and vice versa. A more correct term would be ``main effects model'' --- there is no interaction between age (the baseline time scale) and other covariates. So there is really no need for the term ``proportional hazards''; well defined and precise statistical terms for it has existed for aeons. \subsection{Age at insulin start} In order to check the consistency of the multiplicativity assumption across the spectrum of age at insulin inception, we can fit an interaction model. One approach to this would be using a non-linear effect of age at insulin use (for convenience we use the same knots as for age) --- note that the prediction data frames are the same as we used above, because we do not compute age at insulin use as a separate variable, but rather enter it as the difference between current age (\texttt{age}) and insulin duration (\texttt{tfI}). At first glance we might think of doing: <<>>= imx <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) @ % But this will fit a model with a rate-ratio between persons with and without insulin that depends only on age at insulin start for the time \emph{after} insulin start, the RR at \texttt{tfI}=0 will be the same at any age, which really is not the type of interaction we wanted. We want the \texttt{age-tfI} term to be specific for the insulin exposed so we may use one of two other approaches, that are conceptually alike but mathematically different: <<>>= Im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns((age-tfI)*(lex.Cst=="Ins"),knots=a.kn) + lex.Cst + sex ) im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + lex.Cst:Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) @ % The first model (\texttt{Im}) has a common age-effect (\texttt{Ns(age,...}) for persons with and without diabetes and a RR depending on insulin duration \texttt{tfI} and age at insulin (\texttt{age-tfI}). Since the linear effect of these two terms are in the model as well, a linear trend in the RR by current age (\texttt{age}) is accommodated as well. The second model allows age-effects that differ non-linearly between person with and without insulin, because the interaction term \texttt{lex.Cst:Ns(age-tfI...} for persons not on insulin is merely an age term (since \texttt{tfI} is coded 0 for all follow-up not on insulin). We can compare the models fitted: <<>>= anova( imx, Im, im, test='Chisq') @ so we see that the models indeed are different, and moreover that the last model does not provide substantial further improvement, by allowing non-linear RR along the age-scale. We can illustrate the different estimated rates from the three models in figure \ref{fig:dur-int}, p. \pageref{fig:dur-int}: <>= pxi <- ci.pred( imx, ndI ) pxa <- ci.pred( imx, ndA ) pIi <- ci.pred( Im , ndI ) pIa <- ci.pred( Im , ndA ) pii <- ci.pred( im , ndI ) pia <- ci.pred( im , ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pxi, pIi, pii)*1000, plot=T, log="y", xlab="Age", ylab="Mortality per 1000 PY", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) matshade( ndA$age, cbind( pxa, pIa, pia)*1000, lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) @ % \insfig{dur-int}{0.8}{Age at insulin as interaction between age and duration. Blue curves are from the naive interaction model \textrm{\tt imx} with identical $\RR$ at \textrm{\tt tfI}=0 at any age; green curves are from the interaction model with age at insulin, from the model \textrm{\tt Im} with only linear differences by age, and red lines from the full interaction model \textrm{\tt im}.} We can also plot the RRs only from these models (figure \ref{fig:dur-int-RR}, p. \pageref{fig:dur-int-RR}); for this we need the reference frames, and the machinery from \texttt{ci.exp} allowing a list of two data frames: <>= ndR <- transform( ndI, tfI=0, lex.Cst="DM" ) cbind( head(ndI), head(ndR) ) Rxi <- ci.exp( imx, list(ndI,ndR) ) Rii <- ci.exp( im , list(ndI,ndR) ) RIi <- ci.exp( Im , list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( Rxi, RIi, Rii), plot=T, log="y", xlab="Age (years)", ylab="Rate ratio vs, non-Insulin", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) abline( h=1 ) abline( h=ci.exp(imx,subset="lex.Cst")[,1], lty="25", col="blue" ) @ % \insfig{dur-int-RR}{0.9}{RR from three different interaction models. The horizontal dotted line is at the estimated effect of \textrm{\tt lex.Cst}, to illustrate that the first model (blue) constrains this initial HR to be constant across age. The green curves are the extended interaction model, and the red the full one.} \clearpage \subsection{General interaction} As a final illustration we may want to explore a different kind of interaction, not defined from the duration --- here we simplify the interaction by not using the second-last knot in the interaction terms --- figure \ref{fig:splint}, p. \pageref{fig:splint}. Note again that the prediction code is the same: <>= gm <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst:Ns(age,knots=a.kn):Ns(tfI,knots=i.kn) + lex.Cst + sex ) pgi <- ci.pred( gm, ndI ) pga <- ci.pred( gm, ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pgi, pii )*1000, plot=T, lty=c("solid","21"), lend="butt", lwd=2, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", alpha=c(0.2,0.1), col=c("black","red") ) matshade( ndA$age, cbind( pga, pia )*1000, lty=c("solid","21"), lend="butt", lwd=2, alpha=c(0.2,0.1), col=c("black","red") ) @ % \insfig{splint}{0.8}{Spline-by-spline interaction between age and duration (model \textrm{\tt gm}, black), and the interaction using a non-linear effect of age at entry (model \textrm{\tt im}, red), corresponding to the red curves in figure \ref{fig:dur-int}.} This is in figure \ref{fig:splint}, p. \pageref{fig:splint}. \subsection{Evaluating interactions} Here we see that the interaction effect is such that in the older ages the length of insulin use has an increasing effect on mortality. Even though there is no statistically significant interaction between age and time since start of insulin, it would be illustrative to show the RR as a function of age at insulin and age at follow-up: <>= ndR <- transform( ndI, lex.Cst="DM", tfI=0 ) iRR <- ci.exp( im, ctr.mat=list(ndI,ndR) ) gRR <- ci.exp( gm, ctr.mat=list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind(gRR,iRR), lty=1, log="y", plot=TRUE, xlab="Age (years)", ylab="Rate ratio: Ins vs. non-Ins", col=c("black","red") ) abline( h=1 ) @ % $ \insfig{RR-int}{0.8}{The effect of duration of insulin use at different ages of follow-up (and age at insulin start). Estimates are from the model with an interaction term using a non-linear effect of age at insulin start (model \textrm{\tt im}, red) and using a general spline interactions (model \textrm{\tt gm}, black). It appears that the general interaction over-models a bit.} This is in figure \ref{fig:RR-int}, p. \pageref{fig:RR-int}. The advantage of the parametric modeling (be that with age at insulin or general spline interaction) is that it is straight-forward to \emph{test} whether we have an interaction. \section{Separate models} In the above we insisted on making a joint model for the \texttt{DM}$\rightarrow$\texttt{Dead} and the \texttt{Ins}$\rightarrow$\texttt{Dead} transitions, but with the complications demonstrated it would actually have been more sensible to model the two transitions separately: <<>>= dmd <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) + sex ) ind <- glm.Lexis( dmCs, from="Ins", to="Dead", formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + sex ) ini <- ci.pred( ind, ndI ) dmi <- ci.pred( dmd, ndI ) dma <- ci.pred( dmd, ndA ) @ % The estimated mortality rates are shown in figure \ref{fig:sep-mort}, p. \pageref{fig:sep-mort}, using: <>= par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ini*1000, plot=TRUE, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", lwd=2, col="red" ) matshade( ndA$age, dma*1000, lwd=2, col="black" ) @ % The estimated RRs are computed using that the estimates from the two models are uncorrelated, and hence qualify for \texttt{ci.ratio} (this and the previous graph appear in figure \ref{fig:Ins-noIns}, p. \pageref{fig:Ins-noIns}) <>= par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ci.ratio(ini,dmi), plot=TRUE, log="y", xlab="Age (years)", ylab="RR insulin vs. no insulin", lwd=2, col="red" ) abline( h=1 ) @ % \begin{figure}[tb] \centering \includegraphics[width=0.49\textwidth]{flup-sep-mort} \includegraphics[width=0.49\textwidth]{flup-sep-HR} \caption{\it Left panel: Mortality rates from separate models for the two mortality transitions; the \textrm{\tt DM}$\rightarrow$\textrm{\tt Dead} transition modeled by age alone; \textrm{\tt Ins}$\rightarrow$\textrm{\tt Dead} transition modeled with spline effects of current age, time since insulin and and age at insulin. \newline Right panel: Mortality HR of insulin vs. no insulin.} \label{fig:Ins-noIns} \end{figure} \chapter{More states} \section{Subdividing states} It may be of interest to subdivide the states following the intermediate event according to whether the event has occurred or not. This will enable us to address the question of the fraction of the patients that ever go on insulin. This is done by the argument \texttt{split.states=TRUE}. <<>>= dmCs <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM", split.states = TRUE ) summary( dmCs ) @ % We can illustrate the numbers and the transitions (figure \ref{fig:box4}, p. \pageref{fig:box4}) <>= boxes( dmCs, boxpos=list(x=c(15,15,85,85), y=c(85,15,85,15)), scale.R=1000, show.BE=TRUE ) @ % $ \insfig{box4}{0.7}{Transitions between 4 states: the numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} Note that it is only the mortality rates that we have been modeling, namely the transitions \texttt{DM}$\rightarrow$\texttt{Dead} and \texttt{Ins}$\rightarrow$\texttt{Dead(Ins)}. If we were to model the cumulative risk of using insulin we would also need a model for the DM$\rightarrow$Ins transition. Subsequent to that we would then compute the probability of being in each state conditional on suitable starting conditions. With models where transition rates depend on several time scales this is not a trivial task. This is treated in more detail in the vignette on \texttt{simLexis}. \section{Multiple intermediate events} We may be interested in starting either insulin or OAD (oral anti-diabetic drugs), thus giving rise to more states and more time scales. This can be accomplished by the \texttt{mcutLexis} function, that generalizes \texttt{cutLexis}: <<>>= dmM <- mcutLexis( dmL, timescale = "per", wh = c("doins","dooad"), new.states = c("Ins","OAD"), new.scales = c("tfI","tfO"), precursor.states = "DM", ties.resolve = TRUE ) summary( dmM, t=T ) @ We see that we now have two time scales defined as entry since into states. <<>>= wh <- c(subset(dmM, lex.Cst == "Ins-OAD")$lex.id[1:2], subset(dmM, lex.Cst == "OAD-Ins")$lex.id[1:2]) options(width = 80) subset(dmM, lex.id %in% wh) @ % We can also illustrate the transitions to the different states, as in figure \ref{fig:mbox}: <>= boxes( dmM, boxpos=list(x=c(15,80,40,40,85,85), y=c(50,50,90,10,90,10)), scale.R=1000, show.BE=TRUE ) @ % \insfig{mbox}{1.0}{Boxes for the \textrm{\tt dmM} object. The numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} We may not be interested in whether persons were prescribed insulin before OAD or vice versa, in which case we would combine the levels with both insulin and OAD to one, regardless of order (figure \ref{fig:mboxr}): <>= summary( dmMr <- Relevel( dmM, list('OAD+Ins'=5:6), first=FALSE) ) boxes( dmMr, boxpos=list(x=c(15,50,15,85,85), y=c(85,50,15,85,15)), scale.R=1000, show.BE=TRUE ) @ % \insfig{mboxr}{1.0}{Boxes for the \textrm{\tt dmMr} object with collapsed states. The numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} Diagrams as those in figures \ref{fig:mbox} and \ref{fig:mboxr} gives an overview of the possible transitions, which states it might be relevant to collapse, and which transitions to model and how. The actual modeling of the transition rates is straightforward; split the data along some timescale and then use \texttt{glm.Lexis} or \texttt{gam.Lexis}, where it is possible to select the transitions modelled. This is also possible with the \texttt{coxph.Lexis} function, but it requires that a single time scale be selected as the baseline time scale, and the effect of this will not be accessible. \chapter{\texttt{Lexis} functions} The \texttt{Lexis} machinery has evolved over time since it was first introduced in a workable version in \texttt{Epi\_1.0.5} in August 2008. Over the years there have been additions of tools for handling multistate data. Here is a list of the current functions relating to \texttt{Lexis} objects with a very brief description; it does not replace the documentation. Unless otherwise stated, functions named \texttt{something.Lexis} (with a ``\texttt{.}'') are S3 methods for \texttt{Lexis} objects, so you can skip the ``\texttt{.Lexis}'' in daily use. \setlist{noitemsep} \begin{description} \item[Define]\ \\ \begin{description} \item[\texttt{Lexis}] defines a \texttt{Lexis} object \end{description} \item[Cut and split]\ \\ \begin{description} \item[\texttt{cutLexis}] cut follow-up at intermediate event \item[\texttt{mcutLexis}] cut follow-up at multiple intermediate events, keeping track of history \item[\texttt{rcutLexis}] cut follow-up at intermediate, possibly recurring, events, only recording the current state \item[\texttt{countLexis}] cut follow-up at intermediate event time and count the no. events so far \item[\texttt{splitLexis}] split follow up along a time scale \item[\texttt{splitMulti}] split follow up along a time scale --- from the \texttt{popEpi} package, faster and has simpler syntax than \texttt{splitLexis} \item[\texttt{addCov.Lexis}] add clinical measurements at a given date to a \texttt{Lexis} object \item[\texttt{addDrug.Lexis}] add drug exposures to a \texttt{Lexis} object \end{description} \item[Boxes and plots]\ \\ \begin{description} \item[\texttt{boxes.Lexis}] draw a diagram of states and transitions \item[\texttt{plot.Lexis}] draw a standard Lexis diagram \item[\texttt{points.Lexis}] add points to a Lexis diagram \item[\texttt{lines.Lexis}] add lines to a Lexis diagram \item[\texttt{PY.ann.Lexis}] annotate life lines in a Lexis diagram \end{description} \item[Summarize and query]\ \\ \begin{description} \item[\texttt{summary.Lexis}] overview of transitions, risk time etc. \item[\texttt{levels.Lexis}] what are the states in the \texttt{Lexis} object \item[\texttt{nid.Lexis}] number of persons in the \texttt{Lexis} object --- how many unique values of \texttt{lex.id} are present \item[\texttt{entry}] entry time \item[\texttt{exit}] exit time \item[\texttt{status}] status at entry or exit \item[\texttt{timeBand}] factor of time bands \item[\texttt{timeScales}] what time scales are in the \texttt{Lexis} object \item[\texttt{timeSince}] what time scales are defined as time since a given state \item[\texttt{breaks}] what breaks are currently defined \item[\texttt{absorbing}] what are the absorbing states \item[\texttt{transient}] what are the transient states \item[\texttt{preceding}, \texttt{before}] which states precede this \item[\texttt{succeeding}, \texttt{after}] which states can follow this \item[\texttt{tmat.Lexis}] transition matrix for the \texttt{Lexis} object \end{description} \item[Manipulate]\ \\ \begin{description} \item[\texttt{subset.Lexis}, \texttt{[}] subset of a \texttt{Lexis} object \item[\texttt{merge.Lexis}] merges a \texttt{Lexis} objects with a \texttt{data.frame} \item[\texttt{cbind.Lexis}] bind a \texttt{data.frame} to a \texttt{Lexis} object \item[\texttt{rbind.Lexis}] put two \texttt{Lexis} objects head-to-foot \item[\texttt{transform.Lexis}] transform and add variables \item[\texttt{tsNA20}] turn \texttt{NA}s to 0s for time scales \item[\texttt{factorize.Lexis}] turn \texttt{lex.Cst} and \texttt{lex.Xst} into factors with levels equal to the actually occurring values in both \item[\texttt{Relevel.Lexis}] reorder and/or combine states \item[\texttt{rm.tr}] remove transitions from a \texttt{Lexis} object \item[\texttt{bootLexis}] bootstrap sample of \emph{persons} (\texttt{lex.id}) in the \texttt{Lexis} object \end{description} \item[Simulate]\ \\ \begin{description} \item[\texttt{simLexis}] simulate a \texttt{Lexis} object from specified transition rate models \item[\texttt{nState}, \texttt{pState}] count state occupancy from a simulated \texttt{Lexis} object \item[\texttt{plot.pState}, \texttt{lines.pState}] plot state occupancy from a \texttt{pState} object \end{description} \item[Stack]\ \\ \begin{description} \item[\texttt{stack.Lexis}] make a stacked object for simultaneous analysis of transitions --- returns a \texttt{stacked.Lexis} object \item[\texttt{subset.stacked.Lexis}] subsets of a \texttt{stacked.Lexis} object \item[\texttt{transform.stacked.Lexis}] transform a \texttt{stacked.Lexis} object \end{description} \item[Interface to other packages]\ \\ \begin{description} \item[\texttt{msdata.Lexis}] interface to \texttt{mstate} package \item[\texttt{etm.Lexis}] interface to \texttt{etm} package \item[\texttt{crr.Lexis}] interface to \texttt{cmprsk} package \end{description} \item[Statistical models] --- these are \emph{not} S3 methods \begin{description} \item[\texttt{glm.Lexis}] fit a \texttt{glm} model using the \texttt{poisreg} family to (hopefully) time split data \item[\texttt{gam.Lexis}] fit a \texttt{gam} model (from the \texttt{mgcv} package) using the \texttt{poisreg} family to (hopefully) time split data \item[\texttt{coxph.Lexis}] fit a Cox model to follow-up in a \texttt{Lexis} object \end{description} \end{description} \renewcommand{\bibname}{References} \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2011a} B~Carstensen and M~Plummer. \newblock Using {L}exis objects for multi-state models in {R}. \newblock {\em Journal of Statistical Software}, 38(6):1--18, 1 2011. %% \bibitem{Iacobelli.2013} %% S~Iacobelli and B~Carstensen. %% \newblock {Multiple time scales in multi-state models}. %% \newblock {\em Stat Med}, 32(30):5315--5327, Dec 2013. \bibitem{Plummer.2011} M~Plummer and B~Carstensen. \newblock Lexis: An {R} class for epidemiological studies with long-term follow-up. \newblock {\em Journal of Statistical Software}, 38(5):1--12, 1 2011. \end{thebibliography} \addcontentsline{toc}{chapter}{\bibname} \end{document} Epi/inst/doc/simLexis.rnw0000644000175100001440000012656514044200152015063 0ustar hornikusers%\VignetteIndexEntry{Simulation of multistate models with multiple timescales: simLexis} \SweaveOpts{results=verbatim,keep.source=TRUE,include=FALSE,eps=FALSE} \documentclass[a4paper,dvipsnames,twoside,12pt]{report} \newcommand{\Title}{Simulation of\\ multistate models with\\ multiple timescales:\\ \texttt{simLexis} in the \texttt{Epi} package} \newcommand{\Tit}{Multistate models with multiple timescales} \newcommand{\Version}{Version 2.6} \newcommand{\Dates}{\today} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://BendixCarstensen.com/Epi/simLexis.pdf}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk}\\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./simLexis} <>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) @ % \chapter{Using \texttt{simLexis}} \section{Introduction} This vignette explains the machinery behind simulation of life histories through multistate models implemented in \texttt{simLexis}. In \texttt{simLexis} transition rates are allowed to depend on multiple time scales, including timescales defined as time since entry to a particular state (duration). This therefore also covers the case where time \emph{at} entry into a state is an explanatory variable for the rates, since time at entry is merely time minus duration. Thus, the set-up here goes beyond Markov- and semi-Markov-models, and brings simulation based estimation of state-occupancy probabilities into the realm of realistic multistate models. The basic idea is to simulate a new \texttt{Lexis} object \cite{Plummer.2011,Carstensen.2011a} as defined in the \texttt{Epi} package for \R, based on 1) a multistate model defined by its states and the transition rates between them and 2) an initial population of individuals. Thus the output will be a \texttt{Lexis} object describing the transitions of a predefined set of persons through a multistate model. Therefore, if persons are defined to be identical at start, then calculation of the probability of being in a particular state at a given time boils down to a simple enumeration of the fraction of the persons in the particular state at the given time. Bar of course the (binomial) simulation error, but this can be brought down by simulation a sufficiently large number of persons. An observed \texttt{Lexis} object with follow-up of persons through a number of states will normally be the basis for estimation of transition rates between states, and thus will contain all information about covariates determining the occurrence rates, in particular the \emph{timescales} \cite{Iacobelli.2013}. Hence, the natural input to simulation from an estimated multistate model will typically be an object of the same structure as the originally observed. Since transitions and times are what is simulated, any values of \texttt{lex.Xst} and \texttt{lex.dur} in the input object will of course be ignored. This first chapter of this vignette shows by an example how to use the function \texttt{simLexis} and display the results. The second chapter discusses in more detail how the simulation machinery is implemented and is not needed for the practical use of \texttt{simLexis}. \section{\texttt{simLexis} in practice} This section is largely a commented walk-trough of the example from the help-page of \texttt{simLexis}, with a larger number of simulated persons in order to minimize the pure simulation variation. When we want to simulate transition times through a multistate model where transition rates may depend on time since entry to the current or a previous state, it is essential that we have a machinery to keep track of the transition time on \emph{all} time scales, as well as a mechanism that can initiate a new time scale to 0 when a transition occurs to a state where we shall use time since entry as determinant of exit rates from that state. This is provided by \texttt{simLexis}. \subsection{Input for the simulation} Input for simulation of a single trajectory through a multistate model requires a representation of the \emph{current status} of a person; the starting conditions. The object that we supply to the simulation function must contain information about all covariates and all timescales upon which transitions depend, and in particular which one(s) of the timescales that are defined as time since entry into a particular state. Hence, starting conditions should be represented as a \texttt{Lexis} object (where \texttt{lex.dur} and \texttt{lex.Xst} are ignored, since there is no follow-up yet), where the time scale information is in the attributes \texttt{time.scales} and \texttt{time.since} respectively. Note that \texttt{time.scales} attribute is a vector of names of variables in the \texttt{Lexis} object, so all of these variables should be present even if they are not used in the models for the transitions, and they should be set to 0; if they are not in the initial dataset, \texttt{simLexis} will crash, if they are \texttt{NA}, the \texttt{simLexis} will produce an object with 0 rows. Thus there are two main arguments to a function to simulate from a multistate model: \begin{enumerate} \item A \texttt{Lexis} object representing the initial states and covariates of the population to be simulated. This has to have the same structure as the original \texttt{Lexis} object representing the multistate model from which transition rates in the model were estimated. As noted above, the values for \texttt{lex.Xst} and \texttt{lex.dur} are not required (since these are the quantities that will be simulated). \item A transition object, representing the transition intensities between states, which should be a list of lists of intensity representations. As an intensity representation we mean a function that for a given \texttt{Lexis} object can be used to produce estimates of the transition intensities at a set of supplied time points. The names of the elements of the transition object (which are lists) will be names of the \emph{transient} states, that is the states \emph{from} which a transition can occur. The names of the elements of each of these lists are the names of states \emph{to} which transitions can occur (which may be either transient or absorbing states). Hence, if the transition object is called \texttt{Tr} then \verb+TR$A$B+ (or \verb+Tr[["A"]][["B"]]+) will represent the transition intensity from state \texttt{A} to the state \texttt{B}. The entries in the transition object can be either \texttt{glm} objects (either with \texttt{poisson} or \texttt{poisreg} family), representing Poisson models for the transitions, \texttt{coxph} objects representing an intensity model along one time scale, or simply a function that takes a \texttt{Lexis} object as input and returns an estimated intensity for each row. \end{enumerate} In addition to these two input items, there will be a couple of tuning parameters. The output of the function will simply be a \texttt{Lexis} object with simulated transitions between states. This will be the basis for deriving sensible statistics from the \texttt{Lexis} object --- see next section. \section{Setting up a \texttt{Lexis} object} As an example we will use the \texttt{DMlate} dataset from the \texttt{Epi} package; it is a dataset simulated to resemble a random sample of 10,000 patients from the Danish National Diabetes Register. We start by loading the \texttt{Epi} package: <>= options( width=90 ) library( Epi ) print( sessionInfo(), l=F ) @ % First we load the diabetes data and set up a simple illness-death model: <>= data(DMlate) dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) @ % This is just data for a simple survival model with states \texttt{DM} and \texttt{Dead}. Now we cut the follow-up at insulin start, which for the majority of patients (T2D) is a clinical indicator of deterioration of disease regulation. We therefore also introduce a new timescale, and split the non-precursor states, so that we can address the question of ever having been on insulin: <>= dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins", new.scale = "t.Ins", split.states = TRUE ) summary( dmi, timeScales=T ) @ % $ Note that we show the time scales in the \texttt{Lexis} object, and that it is indicated that the time scale \texttt{t.Ins} is defined as time since entry into stat state \texttt{Ins.} We can show how many person-years we have and show the number of transitions and transition rates (per 1000), using the \texttt{boxes.Lexis} function to display the states and the number of transitions between them: <>= boxes( dmi, boxpos = list(x=c(20,20,80,80), y=c(80,20,80,20)), scale.R = 1000, show.BE = TRUE ) @ % \insfig{boxes}{0.8}{Data overview for the \textrm{\tt dmi} dataset. Numbers in the boxes are person-years and the number of persons who begin, resp. end their follow-up in each state, and numbers on the arrows are no. of transitions and rates (transition intensities) per 1000 PY.} \section{Analysis of rates} In the \texttt{Lexis} object (which is just a data frame) each person is represented by one record for each transient state occupied, thus in this case either 1 or 2 records; those who have a recorded time both without and with insulin have two records. In order to be able to fit Poisson models with occurrence rates varying by the different time-scales, we split the follow-up in 3-month intervals for modeling: <>= Si <- splitLexis( dmi, seq(0,20,1/4), "DMdur" ) summary( Si ) print( subset( Si, lex.id==97 )[,1:10], digits=6 ) @ % Note that when we split the follow-up, each person's follow up now consists of many records, each with the \emph{current} values of the timescales at the start of the interval represented by the record. In the modeling we shall assume that the rates are constant within each 6-month interval, but the \emph{size} of these rates we model as smooth functions of the time scales (that is the values at the beginning of each interval). The approach often used in epidemiology where one parameter is attached to each interval of time (or age) is not feasible when more than one time scale is used, because intervals are not classified the same way on all timescales. We shall use natural splines (restricted cubic splines) for the analysis of rates, and hence we must allocate knots for the splines. This is done for each of the time-scales, and separately for the transition out of states \texttt{DM} and \texttt{Ins}. For age, we place the knots so that the number of events is the same between each pair of knots, but only half of this beyond each of the boundary knots, whereas for the timescales \texttt{DMdur} and \texttt{tIns} where we have observation from a well-defined 0, we put knots at 0 and place the remaining knots so that the number of events is the same between each pair of knots as well as outside the boundary knots. <>= nk <- 5 ( ai.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( ad.kn <- with( subset(Si,lex.Xst=="Dead"), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( di.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( dd.kn <- with( subset(Si,lex.Xst=="Dead"), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( ti.kn <- with( subset(Si,lex.Xst=="Dead(Ins)"), c(0,quantile( t.Ins+lex.dur, probs=(1:(nk-1))/nk ) )) ) @ % Note that when we tease out the event records for transition to \emph{transient} states (in this case \texttt{Ins}, that is \verb|lex.Xst=="Ins"|), we should add \verb|lex.Cst!=lex.Xst|, to include only transition records and avoiding including records of sojourn time in the transient state. We then fit Poisson models to transition rates, using the wrapper \texttt{Ns} from the \texttt{Epi} package to simplify the specification of the rates: <>= library( splines ) DM.Ins <- glm( (lex.Xst=="Ins") ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="DM") ) ci.exp( DM.Ins ) class( DM.Ins ) @ % We can also fit this model with a slightly simpler syntax using the \texttt{glm.Lexis} function: <<>>= DM.Ins <- glm.Lexis( Si, from = "DM", to = "Ins", formula = ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex ) ci.exp( DM.Ins ) class( DM.Ins ) @ % So we have a slightly simpler syntax, and we get an informative message of which transition(s) we are modeling. However we do not have \texttt{update} method for these objects. <<>>= DM.Dead <- glm.Lexis( Si, from = "DM", to = "Dead", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + I(Per-2000) + sex ) Ins.Dead <- glm.Lexis( Si, from = "Ins", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + Ns( t.Ins, knots=ti.kn ) + I(Per-2000) + sex ) @ % Note the similarity of the code used to fit the three models, is is mainly redefining the response variable (\texttt{to} state) and the subset of the data used (\texttt{from} state). Also note that the last model need no specification of \texttt{to}, the default is to model all transitions from the \texttt{from} state, and his case there is only one. \section{The mortality rates} This section discusses in some detail how to extract ad display the mortality rates from the models fitted. But it is not necessary for understanding how to use \texttt{simLexis} in practice. \subsection{Proportionality of mortality rates} Note that we have fitted separate models for the three transitions, there is no assumption of proportionality between the mortality rates from \texttt{DM} and \texttt{Ins}. However, there is nothing that prevents us from testing this assumption; we can just fit a model for the mortality rates in the entire data frame \texttt{Si}, and compare the deviance from this with the sum of the deviances from the separate models using the \texttt{glm.Lexis} function: <>= All.Dead <- glm.Lexis( Si, to = c("Dead(Ins)","Dead"), formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + lex.Cst + I(Per-2000) + sex ) round( ci.exp( All.Dead ), 3 ) @ % Incidentally we could have dispensed with the \texttt{to=} argument too, because the default is to take \texttt{to} to be all absorbing states in the model. From the parameter values we would in a simple setting just claim that start of insulin-treatment was associated with a slightly more than doubling of mortality. The model \texttt{All.dead} assumes that the age- and DM-duration effects on mortality in the \texttt{DM} and \texttt{Ins} states are the same, and moreover that there is no effect of insulin duration, but merely a mortality that is larger by a multiplicative constant not depending on insulin duration. The model \texttt{DM.Dead} has 8 parameters to describe the dependency on age and DM duration, the model \texttt{Ins.Dead} has 12 for the same plus the insulin duration (a natural spline with $k$ knots gives $k-1$ parameters, and we chose $k=5$ above). We can compare the fit of the simple proportional hazards model with the fit of the separate models for the two mortality rates, by adding up the deviances and d.f. from these: <>= what <- c("null.deviance","df.null","deviance","df.residual") ( rD <- unlist( DM.Dead[what] ) ) ( rI <- unlist( Ins.Dead[what] ) ) ( rA <- unlist( All.Dead[what] ) ) round( c( dd <- rA-(rI+rD), "pVal"=1-pchisq(dd[3],dd[4]+1) ), 3 ) @ % Thus we see there is a substantial non-proportionality of mortality rates from the two states; but a test provides no clue whatsoever to the particular \emph{shape} of the non-proportionality. To this end, we shall explore the predicted mortalities under the two models quantitatively in more detail. Note that the reason that there is a difference in the null deviances (and a difference of 1 in the null d.f.) is that the null deviance of \texttt{All.Dead} refer to a model with a single intercept, that is a model with constant and \emph{identical} mortality rates from the states \texttt{DM} and \texttt{Ins}, whereas the null models for \texttt{DM.Dead} and \texttt{Ins.Dead} have constant but \emph{different} mortality rates from the states \texttt{DM} and \texttt{Ins}. This is however irrelevant for the comparison of the \emph{residual} deviances. \subsection{How the mortality rates look} If we want to see how the mortality rates are modelled in \texttt{DM.Dead} and \texttt{Ins.Dead} in relation to \texttt{All.Dead}, we make a prediction of rates for say men diagnosed in different ages and going on insulin at different times after this. So we consider men diagnosed in ages 40, 50, 60 and 70, and who either never enter insulin treatment or do it 0, 2 or 5 years after diagnosis of DM. To this end we create a prediction data frame where we have observation times from diagnosis and 12 years on (longer would not make sense as this is the extent of the data). But we start by setting up an array to hold the predicted mortality rates, classified by diabetes duration, age at diabetes onset, time of insulin onset, and of course type of model. What we want to do is to plot the age-specific mortality rates for persons not on insulin, and for persons starting insulin at different times after DM. The mortality curves start at the age where the person gets diabetes and continues 12 years; for persons on insulin they start at the age when they initiate insulin. <>= pr.rates <- NArray( list( DMdur = seq(0,12,0.1), DMage = 4:7*10, r.Ins = c(NA,0,2,5), model = c("DM/Ins","All"), what = c("rate","lo","hi") ) ) str( pr.rates ) @ % For convenience the \texttt{Epi} package contains a function that computes predicted (log-)rates with c.i. --- it is merely a wrapper for \texttt{predict.glm}. So we set up the prediction data frame and modify it in loops over ages at onset and insulin onset in order to collect the predicted rates in different scenarios: <>= nd <- data.frame( DMdur = as.numeric( dimnames(pr.rates)[[1]] ), lex.Cst = factor( 1, levels=1:4, labels=levels(Si$lex.Cst) ), sex = factor( 1, levels=1:2, labels=c("M","F")) ) @ % $ Note that we did \emph{not} insert \texttt{lex.dur} as covariate in the prediction frame. This would be required if we used the \texttt{poisson} family with the \texttt{glm}, but the wrapper \texttt{glm.Lexis} uses the \texttt{poisreg} family, so \texttt{lex.dur} is ignored and predictions always comes in the (inverse) units of \texttt{lex.dur}. So we get rates per 1 person-year in the predictions. <>= for( ia in dimnames(pr.rates)[[2]] ) { dnew <- transform( nd, Age = as.numeric(ia)+DMdur, Per = 1998+DMdur ) pr.rates[,ia,1,"DM/Ins",] <- ci.pred( DM.Dead, newdata = dnew ) pr.rates[,ia,1,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) for( ii in dimnames(pr.rates)[[3]][-1] ) { dnew = transform( dnew, lex.Cst = factor( 2, levels=1:4, labels=levels(Si$lex.Cst) ), t.Ins = ifelse( (DMdur-as.numeric(ii)) >= 0, DMdur-as.numeric(ii), NA ) ) pr.rates[,ia, ii ,"DM/Ins",] <- ci.pred( Ins.Dead, newdata = dnew ) pr.rates[,ia, ii ,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) } } @ % $ So for each age at DM onset we make a plot of the mortality as function of current age both for those with no insulin treatment and those that start insulin treatment 0, 2 and 5 years after diabetes diagnosis, thus 4 curves (with c.i.). These curves are replicated with a different color for the simplified model. <>= par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1 ) plot( NA, xlim=c(40,82), ylim=c(5,300), bty="n", log="y", xlab="Age", ylab="Mortality rate per 1000 PY" ) abline( v=seq(40,80,5), h=outer(1:9,10^(0:2),"*"), col=gray(0.8) ) for( aa in 4:7*10 ) for( ii in 1:4 ) matshade( aa+as.numeric(dimnames(pr.rates)[[1]]), cbind( pr.rates[,paste(aa),ii,"DM/Ins",], pr.rates[,paste(aa),ii,"All" ,] )*1000, type="l", lty=1, lwd=2, col=c("red","limegreen") ) @ % \insfig{mort-int}{0.9}{Estimated mortality rates for male diabetes patients with no insulin (lower sets of curves) and insulin (upper curves), with DM onset in age 40, 50, 60 and 70. The red curves are from the models with separate age effects for persons with and without insulin, and a separate effect of insulin duration. The green curves are from the model with common age-effects and only a time-dependent effect of insulin, assuming no effect of insulin duration (the classical time-dependent variable approach). Hence the upper green curve is common for any time of insulin inception.} From figure \ref{fig:mort-int} we see that there is a substantial insulin-duration effect which is not accommodated by the simple model with only one time-dependent variable to describe the insulin effect. Note that the simple model (green curves) for those on insulin does not depend in insulin duration, and hence the mortality curves for those on insulin are just parallel to the mortality curves for those not on insulin, regardless of diabetes duration (or age) at the time of insulin initiation. This is the proportional hazards assumption. Thus the effect of insulin initiation is under-estimated for short duration of insulin and over-estimated for long duration of insulin. This is the major discrepancy between the two models, and illustrates the importance of being able to accommodate different time scales, but there is also a declining overall insulin effect by age which is not accommodated by the proportional hazards approach. Finally, this plot illustrates an important feature in reporting models with multiple timescales; all timescales must be represented in the predicted rates, only reporting the effect of one timescale, conditional on a fixed value of other timescales is misleading since all timescales by definition advance at the same pace. For example, the age-effect for a fixed value of insulin duration really is a misnomer since it does not correspond to any real person's follow-up, but to the mortality of persons in different ages but with the same duration of insulin use. \section{Input to the \texttt{simLexis} function} We want to estimate the cumulative probability of being in each of the 4 states, so that we can assess the fraction of diabetes pateints that go on insulin In order to simulate from the multistate model with the estimated transition rates, and get the follow-up of a hypothetical cohort, we must supply \emph{both} the transition rates and the structure of the model \emph{as well as} the initial cohort status to \texttt{simLexis}. \subsection{The transition object} We first put the models into an object representing the transitions; note this is a list of lists, the latter having \texttt{glm} objects as elements: <>= Tr <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = DM.Dead ), "Ins" = list( "Dead(Ins)" = Ins.Dead ) ) @ % Now we have the description of the rates and of the structure of the model. The \texttt{Tr} object defines the states and models for all transitions between them; the object \verb|Tr$A$B| is the model for the transition intensity from state \texttt{A} to state \texttt{B}. \subsection{The initial cohort} We now define an initial \texttt{Lexis} object of persons with all relevant covariates defined. Note that we use \texttt{NULL} as row indicator in the \texttt{Lexis} object we used for modeling; this conserves the \texttt{time.scale} and \texttt{time.since} attributes which are needed for the simulation: <>= str( ini <- Si[NULL,1:9] ) @ % We now have an empty \texttt{Lexis} object with attributes reflecting the timescales in the multistate model we want to simulate from. But we must enter some data to represent the initial state of the persons whose follow-up we want to simulate through the model; so fill in data for one man and one woman: <>= ini[1:2,"lex.id"] <- 1:2 ini[1:2,"lex.Cst"] <- "DM" ini[1:2,"Per"] <- 1995 ini[1:2,"Age"] <- 60 ini[1:2,"DMdur"] <- 5 ini[1:2,"sex"] <- c("M","F") ini @ % So the persons starts in age 60 in 1995 with 5 years of diabetes duration. Note that the \texttt{t.Ins} is \texttt{NA}, because this is a timescale that first comes alive if a transtion to \texttt{Ins} is simulated. \section{Simulation of the follow-up} Now we simulate life-courses of a 1000 of each of these persons using the estimated model. The \texttt{t.range} argument gives the times range where the integrated intensities (cumulative rates) are evaluated and where linear interpolation is used when simulating transition times. Note that this must be given in the same units as \texttt{lex.dur} in the \texttt{Lexis} object used for fitting the models for the transitions. It is not a parameter that can be easily determined from the \texttt{TR} object, hence it must be supplied by the user. <>= set.seed( 52381764 ) Nsim <- 5000 system.time( simL <- simLexis( Tr, ini, t.range = 12, N = Nsim ) ) @ % The result is a \texttt{Lexis} object --- a data frame representing the simulated follow-up of \Sexpr{2*Nsim} persons (\Sexpr{Nsim} identical men and \Sexpr{Nsim} identical women) according to the rates we estimated from the original dataset. <>= summary( simL, by="sex" ) @ % \subsection{Using other models for simulation} \subsubsection{Proportional hazards Poisson model} We fitted a proportional mortality model \texttt{All.Dead} (which fitted worse than the other two), this is a model for \emph{both} the transition from \texttt{DM} to \texttt{Death} \emph{and} from \texttt{Ins} to \texttt{Dead(Ins)}, assuming that they are proportional. But it can easily be used in the simulation set-up, because the state is embedded in the model via the term \texttt{lex.Cst}, which is updated during the simulation. Simulation using this instead just requires that we supply a different transition object: <>= Tr.p <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = All.Dead ), "Ins" = list( "Dead(Ins)" = All.Dead ) ) system.time( simP <- simLexis( Tr.p, ini, t.range = 12, N = Nsim ) ) summary( simP, by="sex" ) @ % \subsubsection{Proportional hazards Cox model} A third possibility would be to replace the two-time scale proportional mortality model by a one-time-scale Cox-model, using diabetes duration as time scale, and age at diagnosis of DM as (fixed) covariate: <>= library( survival ) Cox.Dead <- coxph( Surv( DMdur, DMdur+lex.dur, lex.Xst %in% c("Dead(Ins)","Dead")) ~ Ns( Age-DMdur, knots=ad.kn ) + I(lex.Cst=="Ins") + I(Per-2000) + sex, data = Si ) round( ci.exp( Cox.Dead ), 3 ) @ % Note that in order for this model to be usable for simulation, it is necessary that we use the components of the \texttt{Lexis} object to specify the survival. Each record in the data frame \texttt{Si} represents follow up from \texttt{DMdur} to \texttt{DMdur+lex.dur}, so the model is a Cox model with diabetes duration as underlying timescale and age at diagnosis, \texttt{Age-DMdur}, as covariate. Also note that we used \texttt{I(lex.Cst=="Ins")} instead of just \texttt{lex.Cst}, because \texttt{coxph} assigns design matrix columns to all levels of \texttt{lex.Cst}, also those not present in data, which would give \texttt{NA}s among the parameter estimates and \texttt{NA}s as mortality outcomes. We see that the effect of insulin and the other covariates are pretty much the same as in the two-time-scale model. We can simulate from this model too; there is no restrictions on what type of model can be used for different transitions <>= Tr.c <- list( "DM" = list( "Ins" = Tr$DM$Ins, "Dead" = Cox.Dead ), "Ins" = list( "Dead(Ins)" = Cox.Dead ) ) system.time( simC <- simLexis( Tr.c, ini, t.range = 12, N = Nsim ) ) summary( simC, by="sex" ) @ \section{Reporting the simulation results} We can now tabulate the number of persons in each state at a predefined set of times on a given time scale. Note that in order for this to be sensible, the \texttt{from} argument would normally be equal to the starting time for the simulated individuals. <>= system.time( nSt <- nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=1995, time.scale="Per" ) ) nSt[1:10,] @ % We see that as time goes by, the 5000 men slowly move away from the starting state (\texttt{DM}). Based on this table (\texttt{nSt} is a table) we can now compute the fractions in each state, or, rather more relevant, the cumulative fraction across the states in some specified order, so that a plot of the stacked probabilities can be made, using either the default rather colorful layout, or a more minimalist version (both in figure \ref{fig:pstate0}): <>= pM <- pState( nSt, perm=c(1,2,4,3) ) head( pM ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM ) plot( pM, border="black", col="transparent", lwd=3 ) text( rep(as.numeric(rownames(pM)[nrow(pM)-1]),ncol(pM)), pM[nrow(pM),]-diff(c(0,pM[nrow(pM),]))/5, colnames( pM ), adj=1 ) box( col="white", lwd=3 ) box() @ % \insfig{pstate0}{1.0}{Default layout of the \textrm{\tt plot.pState} graph (left), and a version with the state probabilities as lines and annotation of states.} A more useful set-up of the graph would include a more through annotation and sensible choice of colors, as seen in figure \ref{fig:pstatex}: <>= clr <- c("limegreen","orange") # expand with a lighter version of the two chosen colors clx <- c( clr, rgb( t( col2rgb( clr[2:1] )*2 + rep(255,3) ) / 3, max=255 ) ) par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men plot( pM, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=1995, time.scale="Per" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) @ % \insfig{pstatex}{1.0}{\textrm{\tt plot.pState} graphs where persons ever on insulin are given in orange and persons never on insulin in green, and the overall survival (dead over the line) as a black line.} If we instead wanted to show the results on the age-scale, we would use age as timescale when constructing the probabilities; otherwise the code is pretty much the same as before (Figure \ref{fig:pstatey}): <>= par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men pM <- pState( nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pM, col=clx, xlab="Age" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Age" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:9/10, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) @ % Note the several statements with \texttt{axis(side=4,...}; they are necessary to get the fine tick-marks in the right hand side of the plots that you will need in order to read off the probabilities at 2006 (or 71 years). \insfig{pstatey}{1.0}{\textrm{\tt plot.pState} graphs where persons ever on insulin are given in orange and persons never on insulin in green, and the overall survival (dead over the line) as a black line.} \subsection{Comparing predictions from different models} We have actually fitted different models for the transitions, and we have simulated Lexis objects from all three approaches, so we can plot these predictions on top of each other: <>= PrM <- pState( nState( subset(simP,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) PrF <- pState( nState( subset(simP,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxM <- pState( nState( subset(simC,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxF <- pState( nState( subset(simC,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM, border="black", col="transparent", lwd=3 ) lines( PrM, border="blue" , col="transparent", lwd=3 ) lines( CoxM, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "M" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) plot( pF, border="black", col="transparent", lwd=3 ) lines( PrF, border="blue" , col="transparent", lwd=3 ) lines( CoxF, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "F" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) @ % \insfig{comp-0}{1.0}{Comparison of the simulated state occupancy probabilities using separate Poisson models for the mortality rates with and without insulin (black) and using proportional hazards Poisson models (blue) and Cox-models with diabetes duration as timescale and age at diabetes diagnosis as covariate (red).} From figure \ref{fig:comp-0} it is clear that the two proportional hazards models (blue and red curves) produce pretty much the same estimates of the state occupancy probabilities over time, but also that they relative to the model with separately estimated transition intensities overestimates the probability of being alive without insulin and underestimates the probabilities of being dead without insulin. However both the overall survival, and the fraction of persons on insulin are quite well in agreement with the more elaborate model. Thus the proportional hazards models overestimate the relative mortality of the insulin treated diabetes patients relative to the non-insulin treated. Interestingly, we also see a bump in the estimated probabilities from the Cox-model based model, but this is entirely an artifact that comes from the estimation method for the baseline hazard of the Cox-model that lets the (cumulative) hazard have large jumps at event times where the risk set is small. So also here it shows up that an assumption of continuous underlying hazards leads to more credible estimates. \chapter{Simulation of transitions in multistate models} \section{Theory} Suppose that the rate functions for the transitions out of the current state to, say, 3 different states are $\lambda_1$, $\lambda_2$ and $\lambda_3$, and the corresponding cumulative rates are $\Lambda_1$, $\Lambda_2$ and $\Lambda_3$, and we want to simulate an exit time and an exit state (that is either 1, 2 or 3). This can be done in two slightly different ways: \begin{enumerate} \item First time, then state: \begin{enumerate} \item Compute the survival function, $S(t) = \exp\bigl(-\Lambda_1(t)-\Lambda_2(t)-\Lambda_3(t)\bigr)$ \item Simulate a random U(0,1) variate, $u$, say. \item The simulated exit time is then the solution $t_u$ to the equation $S(t_u) = u \quad \Leftrightarrow \quad \sum_j\Lambda_j(t_u) = -\log(u)$. \item A simulated transition at $t_u$ is then found by simulating a random draw from the multinomial distribution with probabilities $p_i=\lambda_i(t_u) / \sum_j\lambda_j(t_u)$. \end{enumerate} \item Separate cumulative incidences: \begin{enumerate} \item Simulate 3 independent U(0,1) random variates $u_1$, $u_2$ and $u_3$. \item Solve the equations $\Lambda_i(t_i)=-\log(u_i), i=1,2,3$ and get $(t_1,t_2,t_3)$. \item The simulated survival time is then $\min(t_1,t_2,t_3)$, and the simulated transition is to the state corresponding to this, that is $k \in \{1,2,3\}$, where $t_k=\min(t_1,t_2,t_3)$ \end{enumerate} \end{enumerate} The intuitive argument is that with three possible transition there are 3 independent processes running, but only the first transition is observed. The latter approach is used in the implementation in \texttt{simLexis}. The formal argument for the equality of the two approaches goes as follows: \begin{enumerate} \item Equality of the transition times: \begin{enumerate} \item In the first approach we simulate from a distribution with cumulative rate $\Lambda_1(t)+\Lambda_2(t)+\Lambda_3(t)$, hence from a distribution with survival function: \begin{align*} S(t) & = \exp\bigl(-(\Lambda_1(t)+\Lambda_2(t)+\Lambda_3(t))\bigr) \\ & = \exp\bigl(-\Lambda_1(t)\bigr)\times \exp\bigl(-\Lambda_2(t)\bigr)\times \exp\bigl(-\Lambda_3(t)\bigr) \end{align*} \item In the second approach we choose the smallest of three independent survival times, with survival functions $\exp(-\Lambda_i), i=1,2,3$. Now, the survival function for the minimum of three independent survival times is: \begin{align*} S_\text{min}(t) & = \pmat{\min(t_1,t_2,t_3)>t} \\ & = \pmat{t_1>t} \times \pmat{t_2>t} \times \pmat{t_3>t} \\ & = \exp\bigl(-\Lambda_1(t)\bigr)\times \exp\bigl(-\Lambda_2(t)\bigr)\times \exp\bigl(-\Lambda_3(t)\bigr) \end{align*} which is the same survival function as derived above. \end{enumerate} \item Type of transition: \begin{enumerate} \item In the first instance the probability of a transition to state $i$, conditional on the transition time being $t$, is as known from standard probability theory: $\lambda_i(t)/\bigl(\lambda_1(t)+\lambda_2(t)+\lambda_3(t)\bigr)$. \item In the second approach we choose the transition corresponding to the the smallest of the transition times. So when we condition on the event that a transition takes place at time $t$, we have to show that the conditional probability that the smallest of the three simulated transition times was actually the $i$th, is as above. But conditional on \emph{survival} till $t$, the probabilities that events of type $1,2,3$ takes place in the interval $(t,t+\dif t)$ are $\lambda_1(t)\dif t$, $\lambda_2(t)\dif t$ and $\lambda_1(t)\dif t$, respectively (assuming that the probability of more than one event in the interval of length $\dif t$ is 0). Hence the conditional probabilities \emph{given a transition time} in $(t,t+\dif t)$ is: \[ \frac{\lambda_i(t)\dif t}{\lambda_1(t)\dif t+ \lambda_2(t)\dif t+ \lambda_3(t)\dif t}= \frac{\lambda_i(t)}{\lambda_1(t)+\lambda_2(t)+\lambda_3(t)} \] --- exactly as above. \end{enumerate} \end{enumerate} \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2011a} B~Carstensen and M~Plummer. \newblock Using {L}exis objects for multi-state models in {R}. \newblock {\em Journal of Statistical Software}, 38(6):1--18, 1 2011. \bibitem{Iacobelli.2013} S~Iacobelli and B~Carstensen. \newblock {Multiple time scales in multi-state models}. \newblock {\em Stat Med}, 32(30):5315--5327, Dec 2013. \bibitem{Plummer.2011} M~Plummer and B~Carstensen. \newblock Lexis: An {R} class for epidemiological studies with long-term follow-up. \newblock {\em Journal of Statistical Software}, 38(5):1--12, 1 2011. \end{thebibliography} \addcontentsline{toc}{chapter}{References} \end{document} Epi/inst/doc/simLexis.pdf0000644000175100001440000073636514421664401015045 0ustar hornikusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 4223 /Filter /FlateDecode /N 88 /First 733 >> stream xiS#JźT*U , Y^{ A!׿nIs%eՒZݭ>4ˆ$\Hh'DKbp9p! WLYc!AB$3D GD(b" P+^#DJ EDe 46D3CZCh+#:b 1 IOIEHM,X ԏH`p0&D# 1AIK@R$0ySbPx`A`h309 H<)pD=9CC0'."Ȓ|B@ŀH .$\L E-TZB k]j:f\BXN x-=J|h~ܨHJ.D0r67q9ٲd+ [DB"K!XZ%61&GELq$<Ɇa6eR$lΓK_ od"XlE~"L\$?DD:Gv+Cgbn$| %d0K7G?ͬ~o^ۜ &Kݑ;\&(~|XWbb0Jޫ3nVeziAO$́|f  yNLj+=*#wݝ, h T!ãC~1xh<(PM7*t`}Z5˖|p^w,|"ΟaO(He Ca:2Gx*S TOx*S9.Y2)%q:tά`Ci>RX O [tuH*">-E2A2  sX,Ne@Ka]s-8^僥h*fΰ{."|74Hk4r0a a~,mb_O.OZ!|C_zHKzL_zJ9}C/%o;'i9}N@d-9g!ӄ~h2Ww4DŽN/﯄NtLo3.ӔA?)9It{z\zvo_ŘI|Xd[]%ԏhPW#hvL}YBW7;Y.uz`fN+xJ 苏ilʭpt)؏tYHpG*KfP X+_WiQ216-&V-&f=Xs.,y͋UjV\ߺl׆nwKrM3⿜rf۰x1ȁ> 4yM3dlx+`OS^Sd 9mΑ QhpnrN7q95CH|ԃ-ٴFfPj 6ܰ9GL{Ȩ55s?)jjzĴ }3 eQvfC1*kmF!Kf8 ; Qe/=#k¿[?v {V{)j$|ḁobMb[Qےbyb-;*]^賾˲(=7}<&U2t/S,yLW[,dtO". jB\ jVrdcbv2Dq9+Pׯrw2TJ&#lS+h9jG piXԊu o` =moCxzvwiUM[wmW=T4:j~}}ŬSZ~bcG5.١+huڡ7ó.OG̸TX I}}OM7秗7コtZQ xվgT}NwWZbuj fd)2;ħSq|.@^(v`HA?6laAy;Eҭkh4qI0٤mhSR\-sܿ;۰uUnIs0W2"*4N&*{«-lUxnwpJoVB"j m4HE#)"먤(muLJt4ܨmY-/uXzwDl~4-Z{+[ڵ#Sm7zU28;Q1kwvK(kZ+ İSD?˸FG^r@sPےZ^|wx~~U*z锩MIQ?Ies>~AC/5ᚭR3e(Zy_PԺÅjv*(HY٧$Xq9HKj9f es}G/_@W7ˏt:RdO@{|L_syu;./~Zdwݖ:dPasg,~Ep,?/:5%7.F"WGe]ui} o]2kȰ)y__ן\.&l~k_B0 %陗w CN{uSmx`-rPdkuKk]/k4w.");h`rei`K7+P㻮~)> Buw|:kM40,^h*6Ds~=,<%D8pe8"tѿ +`~\@ (3C鯿rVnq-ƴ}ZLWZ09PpL*Z2B8 ՊZ0ӕ}6/QWmNss*o/Z]nw8n8p? ݌zS@B0g(7t2Icw'Jw8@'/uGz.Py{?. mN,ɞptE/7H͖N`B¸"jOC${\' ()MWendstream endobj 90 0 obj << /Subtype /XML /Type /Metadata /Length 1388 >> stream GPL Ghostscript 10.00.0 2023-04-25T07:45:37+02:00 2023-04-25T07:45:37+02:00 LaTeX with hyperref endstream endobj 91 0 obj << /Type /ObjStm /Length 3659 /Filter /FlateDecode /N 88 /First 817 >> stream x[YoH~_я8vg3r&yPd֎-<_UM6nRم G:N(q0gDM"J&F0%QG#Lp0*eNA8 $}8M5 xƨF9T e)6C!1"+H|1A4I""R4QuxR Ϙ9,vDYP gDK 9'Zk[α"Fpbb uYr* m JAƬUD,^1 Mr,@Aj5 P38qN0*F0DyL@] aPTDϢ5'4hIűC5*bk u4 ԠBr5i@5~iU%Ө (5. ՁRc+5,@ep uhT z@hTbHiY(m&JSXQ˼,11'EH "NI~~\ Kb#":ь>_#32aABBWEv|S@:S_ uq}MR,Ov- 9kWc9[^3'O^aʨK@;9$+(Fh hQ^zQC@3mLOg8)$^`q z'֣zvH"rLT'RģBDg7âD<` -8єgN>-̈S(QV@J!p4G"a؄Y cG) <+5k\H] [WXueWmBوLIc2'0d2R=TC2644z]20a(eƱ۶1\`eu*EFQdDFac: HyyAAס+X NCYLz 7Yڇ@ό6 f7n i 0B>3)TQ'&Lu6l1)B&|y_#U$/Z*5=QS[zӣ[2bKD+oCH8` p`/Ϋ^J$U0vii\ iN:TM NjaN& !,iX7MrWMdWBYij{^\-/@(r0zkٷiVl׏E%X-k^\)ȏ-VuSDzgͱd XlKC5kbySZuaM`e#aKLm>љ `Lu3l@r=alJ M`D+ۜ`1Al_R; oF}3%t?fp: xa_η']lv>'.%b}\ݐru. 4Ƿ $-Ȳ,v덟 ,g~uIeeW-Bq鿴)QwQ5di>eVzٮR^ wa0QGL0$>%hh@bys 1Ve~_k*ʋ:oe[~|WEomwx2v^c~z7ق,_ooZZֻm`HcӀئDHc.kCS63E6iA&e nʼ^nRqYm n^48 ]jpLe89$)Ip1iQ98?$)ipFCqVVgJ9W5 ϨU7eM< NM p5h; NLƕpgbZw,mu%S(8aU ӃIIṕVMb6|MYM4Yu$Sj8Uc3a#%4: >5,)v݆8)\Vf5:ݤ5,ͨi~L/T'ο PF06+wEƿP8RhF'`^GgNatq 10ch,4i}Ŭ5x+R\r4]Q9F9rFn\esqCF'y%0RZB~N9Q6ԇ(H`pDp3'tݦڬ q&&R[)aIc!HK@=&f^~=Id\Uz i$vCr9>8[hZ3HeN#m 5YmbNQ[P#`PYK;뽋Oԑ\bƉ!zJpݐ2υ'RvcƱ1^5 O.l^5yT($GwS/wfXо^(g|OGPOYˊ%Z4V|rnewèYp?}]ޔ',gn[w)_oMɐ=Iϒ/Nˏ M̯Io0Y# h˷JviK;tVɗ2XzI VԳH nX'Qoߤצ>3pVHgQ RW64y|7o +']bEP"}J +C*zԌڙOg'e84W9+_b1d2›u> stream x[Ks/Sjy?tZʣ|ص\\9p)PZ=3(K!跌,63~1,Zm2.sc Y2XTf̹{vNsʹV‘r~ Ʉ6ljK>.B kee/H҆ gI/(r5?(A⟳#hΙˎ`Ukg C21 TX-M"h&W-Jir (Y@/h˦ɧyőڋa"܍9 7f;:u[zMT+߉+Ml]ON5IuGv#My]\|m,R $+%ri4l?rJ;1Ry7Jb0#,gv%@D-eR3I:nwv(lйLSkѡWP s^mXr rs 53FP& 4Xy<F9ՙ9\y݂\dI'?K.5./_GҴ!D9$TI[JLism=9>~Y\ק˺A`4lWΎ;۳|vFX K:XJKRV3}ͼXck 2ƐGL86'veqs;)3t&VQ4g(c \#dA$IMx BF8`&銘V 7B"|7Q*B͉ h&Rj_Ļ ( w\٨i9R^w;5$* P2?r\Ebq*Lင^_ .ACIx[4Q@@0w8 .8i1[I%IżHmsEuZboݴmbhfY'6 (nrHɟaF6}Ul uYCnpi{Qj yYVMl(lrռ覴U;,F)[n?p0u0zu5"]g'skaћ봱Jy8Kƃ)APɤ";۴q6w6^ aO5u6iNN1Z*i*mlbBGk1e25x0`]S OR)Qt)L3VmCBPuk<|X7݉I (!lP5z#*D #0Hv!7)p?<^y^KںTBIX[e8#CH$q`G]>*Ɏo/Jh`U02WD|9o11 J@'\R<S)tz >ܒ=T~' fLǦA@M&tuG)) m{]]>!'#The b+XCS~>ȩ $b<~#h2ywhNgr2$ba'2YN"K!sxmU:ZZ0?>qkDH:ʈ7!lF'NfLAM_6F,OA!=0q(bm]^bYKD 5KQGt4 'Xq#z4OtlǸR=œs^q݀㳻N߹S{,<u+_ .{mh|Y(!Z!=ip:5'q.\ x?&Bnr׷G4oʧq+yIQxA@5 ID.!io`uk'up#τ}=J.~'H"VU)%:;ā;>rUrszUW0{qƻp.\$̶*ɧiD} 핖T )8,EU\`&!?T#\Cz>t/03/U=qtԚ}4uc>3}f.?xy khFA#O髲izv7 ޭq8Ab`|MVz(܁sx2ljѥ+Lkʛb;%D!!QbN.uѤo[{?NX}>Gtec|xYbkH.һjLI}) 2JQ5@:0>S3vBpc 1G8tn" ̅:lPk ]c?`wpTS%_c^.|gWF(CR#솂C/Eyxc1LTgt鋇y|4{Z\-lO kO:/> stream xZMo7{>Ɓ$(@\hdvS]he{!E6^z?j/OW݅뫿|'䎉J7+tEpvJJm_W5oR `3$7e0_zimȴ?paV翿m T(N.|?4UTrƳ~* 3"p|;+FOE+ X>1 Zk0]. 4 h^NG8!SSJtzBWx1\h.[p].**!suߢ9XoO0 Fmhh aJӀcK >8Koa(XLƮ}51?_=xqcRHZfxtYuaY[1B6g {JBYiS4M|NNe% i"u'_G*m 5e+{ }_&Da4gwa`KHO6*F|/o9F!cH!SzFpF7l@3jvTAM9B6St f)#s|ltc&3 s&3q{P89y2bh܋='jED>o+r÷P}Fq81-t X/4 >b\ྦy)PKsm@ b4@2VԨ! hyHI.]ODUq"4NaQ@5GD#hH8xx_]T FtXq|fzUWm(m΍M?Aa1Ȧ`\Q`h7`bVT&Gm$ 0,C-8 ʷM]=𪂅  Ysu"ܖ0O֕ lV%*|3дØ]HE'o  ͣ_NUJA|K ? 2ӱ<=q>[pVM{s$!~D=-A7)_m!` ) }Xlê Qӫ _D"J+DD {+Yy!vK B xDe/N0)s?!6u[\:K-_$>_UUq mgS:grq{vxD5Ų߅ p"4gXj-LҁLh o#MX'"Q; r~A[[($nB !$5O/^%endstream endobj 182 0 obj << /Filter /FlateDecode /Length 4344 >> stream x\Io7 $ZXl Lj10CItآLR̿ϫحOb0b7Y]}oJrYܿEuy1^˯n.𝠗>B.VJ 5*7pgl࡛w)MRɲ{כb]Wej)YS/ RPQ\/V[$UJ5/SN?(UL~ήp^֌lJbXyi-)UqwuS*Ո]fwK<+8aW.*8^ZbK};to.a* :#_f:,*%,@=Y^j܀y1K?zrQÊh~]6U\^V2&mZldad!@fшפXו,Qk7-Sgm3+ {%<عS7d3x!:vup&{Bv춴ݵ>?eVwLd򀿘X<5&wpVu^b :ū1!'k5ȡxD~njDNn=SqmF ?xk4brbd=Mz!t8eГ{U?EgE+*zoD>ŊnFh_a5.w 5䛭)xSí m^c~N1v`m|fE{x~HMV<[>h(1i1\5(M1\ M)Ί!M)TU¢?9+9iLh$\B¹oO:e|xdza >,ւ%Z53*o͵"Vpi0j~ȱH;:p|d-sv0K|ăg HHNc!ihG 2󇥛 ]x}J{ Nth 鬸ƃ_!_ȴ̠ ?൴ aGo1QI:H`nT.L: rbT sXZ6^^S@y k%UU͘MEO_htŝSA⃽7s75Ґj$-BO'5:߰ƣ, f  ]F6cBIĚ{e 2NYZs5?5jS>"'C"k.qnvXBA IDF\$24xA-HseyΆ .|Ó`ӌBw'Et`jX@C.T7QHz h95`6(2HnRTQ̘Uo;p * H~lL&5aYoRJQNFFP\BBzsLu$*$)Tթws ."ķ8>* (>\px!,D_2(ِweP{@1(fJ<\(N@o#|PxSXx-z*\bOJ/Ѕt?.iYayBk(/ýY (ͰA(SL>52=6C^kWs 0Ñe+#vo$ufUkMkKt֡X-ڻ٪H.-*Tsv񕯾cE;ye K^v##Sd1"MyNF}Q3(L7@ٰ5"[~/M ̠@F  hEKG}$Ek?&~:$}XzsQЛ(.E%jPPȇ,^*8ۆ ϐ1~S;L__73h#^kT*jzPdtV'jSE F?ʤ_SA}E2ͽcV*2.i$ pSn+ov J劣IAvO5BTa*k!R:iԂy!e '@`9K ѵAYsO"W4'J'4OIUrE3oZi)Rvd7sFq)mjzwjXʔfĆiW Q0HːQ27}ʂ$aLsHrcjjA2}^*[Zʨ~w> stream x[[sܶ~'n/nrҋ:2}3jhswBvUJt@\sqLMW#[7gGOB I+!őC L6E;>ҌU I$*Q9Wr=,j-K^$->l>4恔9˓ pj!p%4ڨ^IBR8{B;̫Jq6\er<2@iH0Krk^ox5mW4/-> Os<|LJ>6q3Y*HF뭿<;AjwG/S#f!R͑TYu< U)Kժsv8nN׎ЪiFhIVW ,RZj5,"kN?I%\/L$[K+^v4$Bռi@}ïWߘIfo{|1`z <5YOx2դwfmQ%)z)OZ`ɝ~mYФix2CXr&U+V)aEYY )+/GzTjv'=d c0_?\ٺ!C{l&]{k] Nn3/jUU4xx:HK,,=An^S3,IQ*HmVVaO鴰J.H)LbJq|?%dbKI/#N7 P؞RRRY H$Pvg&ͅD5+W9/\3'-us/-ko{tk+[r?XJ=DhOzF^|\Bqlf7\!ΗZii"BM tf^4*4}:zY=X=X:z)Nn"@XD`4<±{;h-ǧ~zkdTf%a4}XY{ ^QU\F t: hjfE`"Yr&gBX`衜9&v_E\g O!nU8!/e"GENΒˈ>P4FʟdL)3EpoV>XOt4i;YAFDplѻ0Cm1iҺ*lt2"uR**1E 53P=R1EQn#^W$b,^Mrb1H JeE=b|-iڵu_%~t%8BxԀb.[˺kŤUvYX؂rm@n[:K`kĎBvo"Y^㥍9qP uZ nӍM*s-@.懈^y㓨4~N?892sA4y"p?DAnfJA>3'pi9rH2rٸ>׽ :7%4,0}z ~mq4قͱ/\ZHq'M(9#b0C-@soiJUq=P*]/@]D%IS](Apk/A 4dz萭Hy4`4/jY;sH`Gr^VhNxL^1a$fMT0ZL!/9]PBgJ\:RuLJEPJީ\Kέz/tW%֑,3/G/#C ]liʔ` p">_RdJ:˚[ʊ^^}O$OTf_M0}(k&D6282{>7&FBTΒW΅zHZ xG#o5R ٓpA |2O; QoV~XAʆs 'K xE0#T@gSP &X?A,Q>h!0G)V'e/!d!"_5M6G0%-cN"Aq]ɔ^-|zr9#Wp6>;Eh'K=wc篺4WxGoNn>ˬ,r .̗XrudĢn{w-R&ӥ+su/0/.]oha`/W] DTH'vBr7!γEָs'O_K,2_Y /z(SxPY䌞Jwg+Zޯ Uݹ4 mvErqL!]zw4UwnShC㬹o.8;W#g{DDF"~ݰs&N~,QQW9>$g' qNs B,ƃU[c3-]AV߬dy,)}6ֶSY32{U[I*:0 0@DeIs0Jn~2TVSZQ W~>x%OP ?Rendstream endobj 184 0 obj << /Filter /FlateDecode /Length 4005 >> stream x\[sܶ~_hT?7pθuq'N3ZQ2]MR_v%nݤ߹8JrZܿIuz}Lg'~K9%Bӳ;J^*]RRivz;*+..ƶI׫ͬUi0kXfB?|Z@TUv݊N(HWg?.[Jp:`TaO5Ul_W? QQji%7c;8PjߣeI9sf+|䪴 QaiԳ=.+G bX1{X \q8EQp^7 }mfb70©0@m tZ)Q/O~Cεu"k=/Ae2ه7*ӤsZ*Z0_@˧b͊ʲ)?uYZxnMr9f uq7|:*U ̆SڴjŋZloL{gR(/r+JpU60DB`{i4u62@ZRu&#ҫ}(J+77-rHRb3 {5 ucw%z#N'i.: [GQ5HiM Eamaԋ$" A0-?nQFG2K@6AY2-͹@5YE{1"z"&=]"*~xG~pB&ε$(֊((лN[ӎzXK5pl҂CJYQ9ScKf Q6m{<3 =  cc0L@_vWmFMAE'S ifw=lm;{%^BGytՉ#>v@J^WCAikVd5y]*ѻvPΝ=ȍf Xkxcno5ļD)&dlRR PU NcRW,e$5Tf$J`+Lٝp& ˶[M3P{uѐVmQ#j-j ;l.n8luB,MؾObS=,j+=O.c{n88*X;&%!ڻYc]J8qzp8ݑ~^XAUJUIZg$=jߠ!׍j˃`D }_,: AgiH#2}!T&3ی/pR|>: {0WUFspCs-N\P~\z9p'H>^'ÞkS|rʄ=]0x>K|9 [a󑟭'R2#*g)Pزpx$*~heٕTH?4\ع jfcʋ09&G}˵rf%la S9l3a= ]`̙fv fu ,k2;`p )QAǘ |upC&|ԳaUNZeZ) 4R*g3:e! 0CmTFT9JQ  +tNxw/]Lp>FQ{q9nIYV 4]S6nXs,貖bƐQ=S.eFg`I Zg]-3KLTw5DkL? @a$Xxu x:F7=;Ӫnnl3A1VآXau{?ȎR Cy#Y# 7z^2MhI(a92:([ts'=8:a^>0JBR6CQ `}WH'PIN 5fzE:r6 'Ci<|wȣxN|JRlP?q'I%Q&v!r%z\ZAC7FdDZMXΪe(k>?Ͼ)7uI]5{'qpٓ7T/-VV$\Xľm'*; /V@,F5uRf& !1BbuYz ml,WR*=UnMEޅ2Chp1cs`1D3 d{D+*ڐ +ϪRF٬@Z Yi&7-*ֱ)2F:wcP>k .y{AϬŸ [rZSڶ|CUlQ)=Jysn9ˊǀN i)(anoD&DƇ[пTRkt.]0XEJQ&uz. ̖?)sk&>G ~cwĒXSOEW~-^t]@bs^}> stream x[KoFoAgcq68=9#Jf5иЃE'}zV85OjÝ&Ӿ,_/B;DtqCSkեy8ST{6:9DQD͍?s8Wu ch8x 0U % Zf|spUVn~I:hK=^Sݚ+BPʗf5+2 )a`3ǃX cl VO(zF! _-r> @< @wFB(P%^בyl|P0 2|ؠBD<6EL`flWxc6:b& f 3:ƧҒ u:!u$<M&10 ݇P~4f6PجląS?&lb,Nb lM 9_m,PJ<KG#`#lA_).xQ ̗a'gh3gEFנiSv=9>Ycxn s9녹0Fϭ2CG!a * tW|V7feL1|F>̭`oQm;R6bn9E5ʀy#8,9g.%N}Tp.nNgTϴNrSHR;R2rs9D_cDFžPԬ}JJF~ jge\)k957%6UTU,[,lCFWNp24RT{yVClH[ʟdW퐧(?%ʒ_fTP`B!+֔:!BVRc nc҇)n16$Is oASypAN)m7Sdd2[K4I{x\adZwNxwsAm? 6(t׉!j3B?ZsFp?DQ'8xg>շX:RqO{,;û#eVײ_HG.!Un!7Cq8M O&_Q63)#-{G}B 9s1ÿVN]Qݻ=\ӊFv췤×^ֻ.0Iad JřH7|gR4]c'_Ø@9+mʃu<67}KI&|209e$yQz"MzD;!,z?r\fiK>b ʿ 3^YvI}pפLUJO:K4gyɩظ*c3C?bTe{/됹1ā<l۲SùUj|e~ߑrfhcZ^J|.փ9幹v V))N7y%{Ef8f;f9DY%9|1֣/p2{B8Y@3N8s7UYh',js)fSdJ4 4}{ #@Snji[%XǷ8S2J%2~&q^fxyֵSρ21aah>ͱ>ʈ kJBǷLYyJq6s4ptf+MfB<n^з,cOn]ZMuhm3`&ʹXND2TK)Q>GfדRyyf*~Sz0GPI-rgѺUɉn+a-?d_Зars2Fgc!˰n|Ta0AΆ'!%̟X֏^yw%`;d[KluW%ޣh /ixvj^߭ )[endstream endobj 186 0 obj << /Filter /FlateDecode /Length 4057 >> stream x[IsΙ!>T*LA+Ue'JI./Afz-!=XHʑr60ݍ|5އ_NVN˓_N{m;?Rj!ʼnBNk^*ZJIV?! Aۓu"dӪR A\gUUVֺhWkFeYU8tǡ\k%Wű~?gJ&O_ۙ~qf3jxjMRZԱf_1YVп"nb]k*UoawhM{Ojni*DYÉ0ٟ$B@Kd\k3b$5!UU|wdL ^tװLauW5\3UԚ iR݅o$4 2)7Fƒq'8Q z%F`2ˤfp&U`L2S+Ί7$&,v k#)ll36SD-DdkFo6 UYm%[ϒ91e]I^]=5ȟiȹ$A?4RH GQљ2c?8dpvʹsv1 7D*^s@0Yo-H29#~8vo}2,**`uNSt1gD,B<SETE<*׌Pck:3J{ςX Gch0֘S&ykgvvfB>]3~ S><ʮUZ?ޥ݌`];1w]~(bFAF -6+#&ka,5&6X/^F# ͹bOsEE}klI`l&)Ak͡wZ'6% c#tben0hŷ߸]exne\AӚjRRr5;:s!y7{ sچq3ZEpCɥ8}9g۴}Eӳf`FQdVӦYoL|cd2欗{c礇_=iջn6isf"#|y| PI|BԩJQ2Vr=~ZCNgugVI[@| ZRj 9nãjJ?,< ~;tCa ql6 s#ihcc{XGBx*tq^xԦvE3p!ٺo{ea<<RMvHîbR>uvbrmX{a&ma-#:.%$U//`QS&̮VUGO^#qBwn`vٜTyץbߕr?XXvذC3שM+$BZ%AO ,7^q8T- ZD !S.=B1XH`>p;t@vwҮPYX¯.A7! ?B>/Q͐,NMcr{.!.իhŃ̪M*lư&=g+|AǰPr\ՂvÂ; F\1CJt<PR<|EOߏZM? b5~Ie.Cvl;s|_\,6Gk /=Wf&^p$$bdwDDxԠ2OHt^RNE{ ;hLD[>,g∙aa* '$Hl؎Y{[V5F{1wP70!L#мeQ ${vT'`tW_w._S.+o yZYrv/bU"d=n F\ؚgG: WbdbOK*xv-OJ-)Y]hCaTٲhwgj,3Ʀ QJn5ҋ&'W;Uˡ[wjňeĺ|2S aW.H v2@E)sq*GDÄ2>2r$:':QLijYV sJcK ŋ_lQd_n0DĒ[D4.bcG lf@.8+:MwQ7hq:;2քRr=BCr "'跠 ,u: V,)uɞ0m+fZwѭ$|F~ACfbw ǑXCZL$,0a/F/n"͉.2mioHmQӪE~N4?8^sB5 H«2f,hCJ̧l"..]bXYq x?du9LƱq8K#!^Von= p#oʢIsXVSlz;f*qWJ^@}"aK1Hb R؎FD5u ?M NJY!<}!'I㩛!:t%#{4,iA].vGS􂷼1)fI٭3^pLiidyʨ. i0xqОBwb b۞ obBҖї;3fI8Ā:8dbE*C&DR[#qx[!zqɧah8/{o6i^\m)pQ󈋽;S興?ЈsW,1rL4{ɫ7#YY2xϞC0ٗ`r1xķ95>xXd)#){Eg\Ꮻ-;!j|T|W}QO}^vˤm~$<QI޺/Q;'YbcSV㺇ڸk\%n.JadpJ5D]!œv]1=qk{x# Rt$ FbB:o%*~A 98Pu莮($3/2ۗ O34LYEXɅt9Q{JtˉAo Y> stream x[[ܶ~߿>,}$;(6\h]$lӇʌvdvǖd=HMl(R<<\HzZ@ЦIm|ɻ Ȫ,RYTIa ,<> V|y88,aeNju{W~ȣŦʹؼ](Y-V]ri8^liz$& /hKapTBp*Ya.7Զ,1MNtiQV)* DqԩԲ|V!עpsm&vC߬~/pߔt8fjR*3*QF@uδ[]΍6INmLj~/}i!{xZqsCCwMPpVrhn(@*ր@!h~?rw=1U2/( ! p X\ CVꨡe~Aɍ'SJ5 -4bo$S~âu((o-[ɪ[Qgb&PŴ?PXɷ b ҃;8٠T,B<т2/],iI8%g+#YuoRo-JMeaɒ .gcŧViqj|p!*fkCLbJpr A3LwI͗%滒1,YoEm$ڈ5IY1gJ-[qUcnXjLj󴢆YjrMLh' f%g1/ :.DɚKQKT2BȢ0trR{>PֶCڿ$= I"C,$\%%eJ漪<,tJkU՚^C"ӷIT7sl[MηUY.rCyAQd3S_R"NcRRU@Zh:, Cl=NFkR\O{C"CO\ּ&PЃtP#EFV򚋤`|)BX'r~( ө`UVqVimcF*]!$4Doߨ> a>|Y\lR:kiݡ5mKt:/Y0GȰ5%ۇ;^sy,U.Go۟M/kGL "Jhc i&`r?d.%V-%1bMV91Ȁ&P5>D"KP9CƬr=biяWw'EPS <˨-lR&io6,*2Q\.BdIeUD](wTUV+76 UdFOC%wuu;QI)'m!e6Q 3ݺ)HkAH p^fvУD~d2T;iU:>cV@e^*z_'IX * m)`v XQނ3sZX -YF SaGnd<@+,y}t@Q.E6 J$|J!;h~!D@kijhh ʅyXԝX:]<74F=l?GhrLӠjKajcMܕMd^xpA0D92 \?}\#Ku}׎c;IJ"J. %5I9?Fm84ӿ\ڥR e6,`@VjV}kNe,c kT)(W=JxvLN91+;D͇APQV?<8)WK9./kh/@8c0%vt;6ǏJ њRAV r[c%\`WNκQKQZ}YꤧNbpkhJi\I"Zhn!`ɴe12%i;0va95['TXrScYݖJWNb'2M7A(.첪;G#"Ѵϩ_jЄBpD&wLϵ8&raϽE0 \i"o1=^E% UE WV*^O>okʵk@זzRT|zo^I;f 0xqCwJgÈw 4_-{jt?ldQ~"Y8()% p \~yK;\Oֿ=ww|epm⑃ ciM( Ba)iQ ]x"|&B1`Ӊa彏;^v[5koݸT5ܿIŻ_'V\FY{?ظ,ПtgG^k[x;ȗcu=1Բ$+| }"ؾ6^oTc@$kms;E^ Iȼ5cyiۿ"ću^6~dxX齔Y4 OAtmɐC5 \G0C>*!_PErwt`՚xbU[k97 7/2BL;F:|Tz`$l<ҟ@?GoV6D}}b _kmfzp xp÷7}j`&?Hbendstream endobj 188 0 obj << /Filter /FlateDecode /Length 47980 >> stream xˮvKr6?OܮehaA,atЭ نwEeFVA AwmUwJ?w_9篜wyO{34^~?~_S{>+mY}>_-e6{[#Qǯ~h)_Ru/5׾WW\yZ?{ߣeI/2֯gK?:^R9ʏ[nIoQ?>ʜ?_ՙi/o:+/F~r^ZWܺ߾/.Yy 7Ϝ^E{x/9sEoh{ }Lߋj-k}3bvjdZ<wt/Y7s潂Q)OY6_k*sWq$jֳ8df}o{G«YGx=U >>jշrby vę:tqL)ch>cբq˹*~%o s8W7^y?8k5~ÿS??[S7gg:R:+j|Š:ObQt$̦t"Lős_ϭuґR]"s^渽xGll˿HG#ߤz؋jQ`WHxUO'PΑuøW +8W/bOũt/vq/#?{?Sw/?26^Ens/ju7U/s; }?jly}\?/L[o#5+DjyS3cet gdMmzGNة)'wdYz D ^*;;R2n[|qp?;sQs)2rfH~kɟH(s.j˧ty+Z7=I\Sǧ}/KZxӾFƹ&O=#;{V>siK:ֽriK½Zr#ƹ;pu46sUg`I\ѽU1gv$p\:U~8/o: 5ͻw{O皰׉f)VF<ϕt|>Wed[uh~칢rsIV%sIUrG%];._u.iܑ-YS>\n>kGE;qAȹ9l:KMȾwk{Od1^%grGλe 8׹.ܰ'/\bYtL]\@#y*K׾u;6#;6.!ϙ|~+~Pܱ%粀v>X^pޛ;GҫؔF F5sF,CO0?#w#EUҹ)F<-i^2J:T9~v/F:>|Cw\'sp {:2;rޱ9-w A~׉rVߑWxu򚌜*8kBt~:uOWzgSoƸQ}~eLJ$S\T{ iY>_FοU̬W]% 놖R~Ǚ [^7L)/GH,[ Ǧvr}vtG+ޤaSj۹{й‘654ڻL\H~w;kB:Ԉ5Un8θG@;rռ6 v[᭒D?TX;nPfLW75 ^29{ p9*@𓰞'Ni=ks|X$W؊x-z@j*"Ylvrn? |gȽd ˔XS[apTX.d4AC_=o lcZσՇzy X>\.ӱ^ϳӇ [P`O}vŔ߅ʁ#fe WK+8k2.~.o҇ IF~FtQr6(8#Y^otg:drLB^z^+!eEHyHH(.zA4dEeg&rP(;#C"3M)J<#Y"CfUmUi"1B<,ȶC]uܱqtDgQ!P5HRx"I+ Ft%58#]i#0|= r̢t$#dЛlTLLj'7PImƫIƄz*!C&pFw~ =(%R:y΋N %=]"YIdC={F>! KP}H9 sc@r) ?"FKbdUJ@en2",aU &ʨA5E/_!׹uW|.dL>BߔObxi%¾L8N4Yԥx^tQ.L}y)PЀƒ +%>d 7Hu0AV(h, hfq{M8V)hԪ VH()3E@@[3k2Ec$pi LUԠWE ux8'Uy)klvi(iȆ.>e3H ظB5eQa8•G=L\YX+g>~^@ݲB%0̖1)k(.Wԭẜ]<2(2샱K.Q^1Q8ym1qb Ə ew ^JkF4MD fϟ L(f}O8PBB*i8rg\ g!8 QHrFb* C3 S0 U΀f==\K9r]N"RD99tZ#*gd(V3Oc^匮3krMh_Lh _uiv qjFt7 8QHڅ1RFjFB4֪jF~(gw#z4Ůz@[3ȔꪞtUA g4˩g .XzFKLh$sV} g`R:|3 gMIJ䌡_lOjM5hĿ ?Pn/F')#3bW7.7T͸!b)Z3@ suFχ*[_vt~(hN))^K;[Q%o8όAɀKdlA0oI\JUyab~m'?` 1†d%1$T+1`uh xsp4Fd zQq:3u=ڽqYYYit$ΰ_ۧY7gTy RA˸kf[k~E ZM@^˸s :׊PbM 0?7Va&S #zȕ"Ke"n`^î匋%wXH kDBK)Z}#lΐWlMH*4!?~xC8& mxј%̈7J27*-hU7# ހgN`mxcI)RQ$8݂to8a!Eqdf q@X.3'NR]#88h~"0bYMmp}-0%Ǥ'!h6BıD/ycGS Ǥ̀ rTrL>V^ 3ψ8SDpɁC9?Izp!(Y+KnPD~p6-6-+eCBJ0Ȗdh6 0/ Xf@=3Bћ*777NlHAHD>d{ ڀ8=}`۳.>Zo@58`YpB"YA!8ڦDGDϦlYj'% mᡍ3D$8K=fkpXOQu5!3Tq$R#0{!\=xk>yR$(Q4d돊N㌉1} -=)4e3Kn7h`4L<ʊq/!y.Gh`wp(yeܘjXcښzYT(0{q{P5.WBջ3SW5HS" 6az{0/6(lD|@eҹc8bSP8o0Єg-AE6W~ <Nޞ!yy񈱉3 _O4*m4w3:M2Kߡh9Lb< gAx KΤlcr1a`^cNjqt;_'S+9<Y:\䗗rs7SS/3G-TFj0 X6j3k+;QalgT-t%0Vt dbn6&L۰iFjpe4!'nXFčCh*q Fٍ5X瘟L~L sH@I@71 A4AT|,Ń1*1_]Gxhv!_3Ci=#N׀/B7L(=2TU7XQbXLaȋ&f]xoG2cB0@r@Bl'2V@0*Lwx@ZA_Ba 0gl<20XOGY^̨b{ g_zrբm5dFgnlHBʚاU%g5CgS@ԍ?$' XHeҸRF{Z)92{a 2^Nv0%3qq`y *"ljb}G_yKD8T DTbO{4G!(#(U'h7zl=`*Inp^DCC"P9,@9T`9L*t~9F]Y+Sj &Broco-$OJ>,a)%&s[I !v;c#8|ړC85 <#2qدI^ȃ 986Fќw' 4DH>Ljl}*A3P`H!xj寧ѲI5jTPFU5* L(cFa;5J&u?TcF!q-P~4 "udm-t.-Wb0f5{FgkuB]c1gƤat6sh'lㆄ 6Y>*ͳwi U PR衕;٠ vtS5d 1{[Cl&A7A@Jm[OY)@MIw.!h@RgMomF7F6Y҇am3Rq T^ &9ك'դv'3ibP؛EPR j "RE 㢪 CUc TT8m3z~d?5B QhEUCÿPV4CYe (<=C|~E;l}@Ѳ^1]J!ꛄ(̀#9MR'Ml].Ia4^gdI@wvZ%XذQ׀dZj>Ԑ Q ƌcL`'ltM3z53`$ Yv566jb{e oG)#4C?gP6l/GJFGsj *M5dt3jdVٗalBy jFb;[MA[seGR͠>"tz*kWx';̆jK'L-TwteȬ3+WޤXLK"x7 NZ+k)rKj0ictWM?g}1;3Ѝ"$*>j]5eR᲏(xR=J#H\V !%t=@ː-׵YΧ{d-02'fd֡Q" 4N VV9gM8]͡3ѴiM2]A)`mlZ ox ^3 .8A'@f՘e̬HfL3R͘"+xʚflDmE׬!ab`&<PRbIO)T3䫨f$|S3@=)g^y@J9͢Bf0i@7Q(fTjMͨQGnbf"3B3Ѧo :CEftzS3` vt qfybư.Udl4"Pl7b bF_lHĚ76y|r7bjw zBڪȴ{" (lִ TZkˠ@{sq`=1x% q nZwKp>E!GkDG+Me\QSo-p<ŝK 4'՞9,94O{G zg( or`v%x9 p@A 71xbQ*S֖M̱0:4m8uS.;t?4vDu!(a.t/])蕥_|o C==$@7:}چ7oXS 5?7 ;7^lΆ8'@>]8Ǣ/qlzU- GPVGS'B[0ػX3dc"1Klyh)x~Ȭrٟe0A{!,FX۱u%+X?u<  +(E!@PNQV[maE)LA3/ XR^M!2)t>7D1rXM h=A@ƪΨa {Xcrxз ]h{;P5c A'$O&X!w2 O(pnLrz%ހRc Yi5%ޘoPbT6gsUUFlvʈdˆ=x{d?SXk=j* cM˟n:K7^? V1!4#VJ#6<%qQp ] p HLFjxN?R]+h +h%X#ZMO#Zy/QLrVJxW1X uMu`mxCl}mv6[U&qH. º-q 8b˚Z8b:Vr=mf#J@"(:EPn V@?@xsd|. "HV_\˼3~-7?d[\R"N3܃ej,4`\~>OsLݪh"`+3fi@O`DPv\\9TI cPHo,UE 3A#H,6AJ]'؋F*Чrê#^u5-u:BUG|6 oi<#G(3>.`|}#jm#kXK3 V{VG,WHV;h$Xź &00#f4Lh1#4vf$a`Tf$@|pτNK욓[ I5[ F?IЭjN6XM'A3mϜZ$h<0ƜB: beHP!qFIb25w@ [ P&S^7 [A ?돁c1 ?/ϻ ?c zw͊\{̃ )b}Gu ɀ !ZtWӦ*̱kv3="ZYDαlɌ\jz<7qpy vjHc'Ӯ|bƴ+1%`Lqi7ziBݒL3nLL c<1?LQiU$31MN7?RmK5f%6?ud'jϷM##lc-t$ǵ3O-0m|dmMfvvLHmnZvQƶKHh)xtBۨ H<~yy|p@l!vc\v/vl|~ -ܙ+F=nw;t{/t{Imcdcdc2ƶ'ƶq<8학JVC0_}0^Zr0GQswIos'J$۩hFcNj7K<>6!=؍`c01 ?s9~ ?s<4CV53jh^1JcJոpsX枵plMDjq3PC6ӍhHwA&<JK`XfN:>RsTjv:R$F$lN#1VT#Z?L#1MDHll9K~,?E"cu"cXD,?藗,?c ,=raF:)lK C=w^dN{8L͎k٫ Oʗ!t@_3 ,S R!w .co +\PyiwMww J݊$2Y}'WYsWBPͰXrjCބ1\4]3HW:Ԍp//*bWgd_pzU˘k]rleX3VsixoVwˍ7HZ@;Џ8 [Փܯ!ڗM=NTk]S G[km5W'I v?}ܦL6}XB[ {;H]_H%vdxHWFO$uDP?X' p8ߐ|)ii\NRڈ:dd'<| m˯ѵ})/Z\⺠!=˅xJ[qc«|l4?)G MU c@7[ՒOeT u)5gET#櫦4o4xP ?XUn廸vrj~Cz=}i !>.X~ڸ;ʉtMafܫd&&oc  I0xZ 1D CC)b!A_v( B{Xٜ gVBkh^č@3У݀ qXg#$-KtKI!KNDa<.'l2ϾwbR=Ag ֚(°֊Ѳ 13Jsl9#Vl(* PaEh-EՊ=+|r5fA[S}U&k5dѨ|XUNm0Ce 3Y JԆBm8 =$xވu({Wݫ‘'I2Y_oPPM2j46x tnqL&k rL5&&kЩd55Y*d-^A{Y͘F=B#ZM!I&jVlјI-[D =Tibm+$2Q5Ln'\d75ݧjb-iX]1UcR1UcҎkdS5`<'(jfIU5v`VEh;!&Q t.#5 OM5Q|2E 0kLP5*I}F'4QcRa;WP5D0Y˅aNl0 ZXM@JP8˧lya`ǔДZ9*p@ec*X@P٠ʔ3ir3Pٞ*]pSwF?k]6m7=W?"R "H$eIhBE /b55R fz/WT4şU#|Fւhd3FV>$'iғ4JU砪Q4T3U,jajUm Ô5Vam"LӘ<4癬1٘1C 1tj6y(tY }xNH1lGeB+_>iR҆Q]T6QydS6l?i6'mIiC Oڨ?L`'m =iғ6N6x6[a Mڀ  'm̪ФúL8YlmPܰS7:sѨr!*I&&mTM昴QXngF2iN3i#Y؝71 " ;E{5ݿF>g҆n6 6*m0 vxچJAhڀpkQE7Js&4lQzVH悷DjxVZVX?k\d(܅@ʏ f8c/;Jf|cXZ$fEflnzfH5c!MIx>&bbc g>2p .4ZNնfNtQX=uڶޯq& ȪohA2rjƢԌcM@pʼ3XM`tbngX'wȢ" pwD)UEt1Lנ s3`}.vJx<-^~}2Pܸ{cYnf@ 0a-(jX_3等ꏉGS3&!M̰Rl36M8&fl-36x.i_e|?ąa\t3| @Y< ȲcD & æ BKnUto(vP!eFui[USf;XaGI 1?: +1"3`͒v`g(A0:l@QH uui(\Cȁ;bú`C53bú@:6";`S;P`I;:i vPRcWǃP,`;hd e[2`v};X`G+;`Ge#Ѫ;iv ;NvT63Q }ud8DQGCKAG$LA ;z tkCz=1ԄPtDάzYCgeR9:PVIUi de jEc9xiKZYhH#Ut:v8AՀ;J_u% wM(:qeg@6FkTwb Nڨ=*fhzkB5ǃ*96}j wWsl_̪50<>HK+XD7 ;1;+ 7u N(N[(#tFV>: n,- I4{F7k[#h5̚m`,6he6` 3el`Mul11Ylhu!xU {jP-\6,7fhgWlD(ލyh,z(AD`bQ6YŃ 5V`=aTEb x6D(.ee6#ڸ\6P\vF2@Ӂe)RgRtqGti* XסhU8=c{%wH *h"߮PݟpFyH9+8#pgD#g$'"e Plja eGg$3 joVeޜ>f~B ETǭC@,^>jﮐ3mޙ`gŤ(C)%'M%Mj t!Qǥ TlOTܧk |o{tIݓ;W(wccvw:"z,DY}2Ϣ_evLN㣫2OxM&᥷ foao>dB9GoE6YkMNQC H}=lu,^ b ` #((%^!bEN6Hg,*lpy kE l-ԢŢ" k6X椣muB{S؉ :snV6vV".(T6vJU6v6T6v:թl`P]mRecWVQ!Ka(mlۛk!}6e {pElBOacO5GPؓշ5v5nEًSKqrpol(t/E#Q1ڢ<H;(2]ҝԥ17KH3a.U%W(JCO2roSVF9CcirGeiMU65CglhANШVn^ŷ_x(rZRC(U}[}58#,!O14ItJq(dT@H~2Zdu_s+A+(KEٔCo=A'Fa}PH9t4Q8O/]yJorF:37,u,FU[7/E=yX |{ԕ4F7nj*odwLHKU &o̞;V0zJx' 1yCrz2<k=7axiq7a<#E%7,hYљ0yk +QRߊH^˫AuWla~C ;=č4P ōJč<<67 q )n@~Q%C +]Wj領%ڂaET@޾#wNL؀K) H~nKYL֘<1di=/(kUmU5=&k keǍFǔ#q፪T6"P\]f]مi%oxJJ;* oܫӈ>YiEňh"96x6}%nw5(<]#W#k (]z{(+%]ԭ)bDKe(Yt?*Ci{}4_rU!Xz%XZ= JCc(2f# ˺xa!+By)?>TX ANJ=+q&C`d2JJ "mRx>Qȸ'uB>- _f 2nj>Ը5Q@p&r)d:Lɰd`t[%x4m|(pYqev jP!c2 iQCK162 hE04 4 T_n7aFtQPh,xu=1)M1 #Qa1HM `0"/jB Q ayƲ5g@ p@ t?z9 A խ! 5TT 0>oϸ`SHs~*F$e*F6*F.rFWT!f\eUq&$)bT1V2Fc2FcOb$msQM1h U 4>cЋ5Q{1X(bILclU{Lx(bƞ1D D'b(2}DPi 25ƎWFg0hOVЋ/,'JPFBu\$QG@OR6бz<ήmghc('ت%@Y:b0bk+́g%`l!{0tAbK;s1ciyn0Dӈyf&f2KX,V/cWCЁm*lJ5963}>^Ӯ@́=GS9=~R-tB-M-7#grWEW Q{,sW&uW=j{Dh LgVT[?jFÞ,sOP0q{}q1Mk,U ٳKRl{b)?Z$;cT?R'B3CB(w䂷 ':.V*:P'C)CH _u\[ '8n;B]C7˭ɢdC ulVLKӧX֗LLZsda&5U1Sx̚gzd\xD>u*{Ju@RȈ:Dԁ\Lnb#Ƭ: .:$C@;&gv}Kh5(p#w lJ/T\ }j [+q²Ty@|.u;;v Y˄fWzA@ڡ;~ u%޳hC6kj\PIInZ /nOvSc\:mW e}R&YJ hQ+%0!RbpV(-VB |^nC#zJdzi.YEX(uRS %vV %pwgw-l Z(aOJlmhJ%8E^fJ ;%x[&+%b JXOZYbղ(VZZbzV"+yi~X+fP@kS`U&: 挅.gDx=GRP(|tFcRa: w H*|GGAZlT-3%: [r '@ިrVlI0>Vb0hߣY1"}c)Y JȚJx:Y ^VKAJL>f֍V-~j+W(Q^+r;3G"xB3K f ` ,p}~4]]9ni3T-| A@ilRNAt?@[d?`vlua4P4o#rGD=s}_ޏAzMrQUuɺzA06ah#tP6 $@ .6aY ( *2ěIz %zhpۏ{ǽqwǽXˏ{ǽq/?{ǽOϓu횤'"/Y@^ͺ앬\h̽dZp܏mO=63lom`g\{/iJ͛+8"{!]|wE](W.]ɵ6X6n\*l\1%o\YLVwM8)to0Oˤm#fxj5Q%B"kk6}\ ko\q _a̷.tpǨm'umfl"lYi ӱ_yje9vmlW(fG{Y{G[!/V6l75Kν^v$b) ŨL e'ex GC1 }Mھ~g(P?X?Eę90gL f(ެUC13P\3W29m8wFإ uwŬ2NS0|iUYf./Ӆ[MB]z8`3A|WɞsYĘ'-U1BuTgϸH;=#j' )Oh۟ sFHEln F03<e8_- ,&`P68gd0RN]\sP!pZB26,iUpw v:Ə,qʤ!st0YG}~A؀ f4,; Nequk2 ٓ+N3T̥( g"@RQFEsH[5%xI~?^/C)?^/#2?^/鏗K%xI\8G^\=Q㪮.PV<8as*az9C92۳*RLO&^߲z@_V0{>n9UרhS0JyRQM`TJuY {ozvrȪ:e7cUXF""Iy|Wu FZ*1SKر/-G$% ZnK C>Ў(zT ^/ϩR~TSO3N3bC͠u.=*ju#Yʩv1JE#bQ*/h8u|'Z>[e r|I{>/xЂ&޾gGfR*/H\ ?~_/_/ '`U~@QKg~NlK8ًr=}tp6/v?>{g$sive\Bk!"q.! [Kh +(%;9ǜK֮4-ڋUFMΫ"3zLԴaל7le HCݑU$sS5s~B9#֞]_W")eU,.mUT!7ѯp5i9*E[J9r0st]K)Z=Ir[)FXŔ)#3risuݶrwr:Pmr6w K2K[ =F}XJ8[up3R.B1Bށvk{P#䛌{{%{ਦk9VPuc+1=tA<\|;r3aJSnhUԵsa- Xx_;[vC)Vn@o+i M?oB_6~:s&hU<4$It#o-0ݓCW@=LR8ovY<!YkԬvKkmAtkLXy)S/U –󰮎ړ1Xʆu+z'_!r)hX9PAJʒ&g_] fU4jW*ؽWvV C!bGYe+~ yЏ0VÂ` yp%`s=Gd?ƅvQ'\0fKeyIVbh*EwG^SK*m/_ V!=Kp'+]vbW)(q)ιxXك/9]1ݧe { fw=[ὄQWdyS^Dw"+e)*0\oSx{8 tgDѤb_њ%ξj/nKR~S|c`)!vewx>\=Ő\rUR۹Bͼ1x`EVQRy2'@ʮr'C|V4JҕɹZ֩ZiibK&[͔j3j4EVC+nV%F$y`ataw4õt[nw0wI54Je_sJ 3Ik T-0.>3xg©7v7Y- &n/{Phb0i$o1H1lxH^L1O0l2ō<7lv&nl-ڱCUS;q)@P(Zj1F%+0iaIMw/H!Ȥj%6I~3Elo6mc+}ƦJmcf.q}V㻄jPWP0㻉!o5W=-*u7`iFF7aꕚa%n5q \S6uYOYwY7vzfOP{7pV{pG]bDyCz1n,uuC'nh1S7$nTrnjn4F)S7$:7: Mܠ^Srq LEootTL6qchVLucQ7uòLn,mԍMk׳F\FgK[ՂdBF4CY!|9}ӸKS7<8;ϞI.Wdʷ!'rDR?ld8wcinlnlڹ8+<^ˇyǥC9y+7np: 7I dgΰVF|` _wW%>Qn =ho|3&h<`62au?{1葓N=H1 zpz?QT35nPzTJ=z=?a- zt`Ƞ=J݄cJIWnZPXN zlg=vgքCDب6/y\^( (֍"*w4zi  a!h (z y DFΐ=J.nN|tZX >,Qk'Xje3ob̓/k>Rߊ=ӰGʰG.!=xNEˎ(#ajJ*G{Ua (hUcafNRbFðG/4{nHCGngc)o FF3N&s1wAKu] {ZI]A~$ ~I[>3?oQȮdS*'&:ȱXHhcdwSV9Z]֣J8qo:UhX=V*r ͩRTy.녒hf_Nub^uC`;B,qEbY :܃kفWGqß:nR-`:k$z(긟N-4etʹSMT\Ҫ`|%Q#80]zse1c͏˃0@EejDϯ^pu\AI$RFO&UOV/qQP/59q{L`>,-]9r`9-A(bW 9@@v]f 5d6puǥ$qܔg@+& r9+C!s:h-㙵 9UBk}@}g-cC=9pn?=+G5&Vx!A/uoQQW6*0`h#۠1DZ P u܁{ Ԁ60"Xh_hf FJ@ m\FAҁ E)mAPm`zԀ6Tw@d61liN_}Bjα5t=ɠα>c߂:ٍjpr͠ ҇B'=q60<Q(75Pmu(_*k'?APkP9UQJ0[(Ye7(ѧ"%e={v+W@xQ,+Q#,3 -kS@:98ah9=Y鼟\(ʝa=kM CA|@c(QQ}x`2}؞*hX;qHz"aK:@Lַ 17v}/&VاGl&&~։(C]īh<1-.FNJ{AR(PAKM*~GQU (b$+Q3Lc6YΩu\EORNzJW?2r12! g q'jYW[fPfQ.o8#= (W> ; '&^ zCڇuRrقp_tx!ݐ94 hLC %vZ%(!܍-*ÄcLHY(ԫV1jDzMkmz-;$}wz)9wH;A3bZL"+A2LVw+,"=B 5.jQ|{NwsssJrouRYR"<+liƑ:,z˙4gzj*{Ws.EXҩk]ZlajREpST)&d4Ֆm.MfVenSqD nj7I":ZUgpoeзg-i%KhIt*ĖuX]rXpI'5<ˣ%H. Ok sk(87\z˝)c?PiDp}'N(N7S ɖvztm@ֵaNu;F &AgueMnC, yGJ&tcVxd5`P#eUK2Rċ&ڸ ҟ I^v*X0D*yV—MNȂǩ36vF,&\ؗ`=_A|e,ȟW;,wd /͊f3@Ɂar`L8'ȑ\2%tE*]eRrW66cl(CŹ\8 fWx3gaHw9G.6j ~s)cXK¢\oFiAbpuu-8rUÂnD,ޏOsFnֆNC !s_A2A H% շv9ԀvW%SlG@c'M:i5Wփn[&)}f=f* j|Wi5Fl+)Z$M)fZ,XK=hr{wD"PWR:-ȸ3ND\]:vO6So7CZM!-Brw`$Iܨ#ɑY!p_'\g8 Dq$D(ȹEi u)E$~B͜熐߸UB~i@MB~⁌7PD]>xlUF<5°NFrcNȔ[Pjh %'8&$8*h&`  Ulo`m.J~#3,#V &oѐxx M,C?QIr(80Ļ).|Q7;lC]Q'8Kn,%n#Z:GGUKARjT `p}8©̄ '1UPloAuvڔz/f6ꥦQ"@ozx34 'b6:i X1盌o;&U؊@;ʕ59\}#؇gmKFh(MK nU6_ùuX7yhmEC1 ܲ|b=5cJY  7u9(lD@of#6_2^AiEn\En2Hⲍ܀L!EqN$BMs$DqMѧ3+t_KF`b-EoD?=آ7Zll'nz#!C.z# B@~( Sߨ73I7*;0s͎j烉h앲Lh#!ѥhYx%KJK *DHoHb+dX9"z9zzWd҃(+ƥPFxhd ٍv8~eX؍`nb7"[݈݈dݠX,v#%ۆb7n$Xb729 c&eF6f7!n%Qv: 1hN'E*ٍ*-)ٍjݨ7_*Sil?tVwAs1-Bl(j $%$AHN :]h. B)!@с5 B"Ϗ$Ae ǯ WY!;o]^.|ً=b[̮ts*θT3X*9hYGr$!4J 㣫O")!N*",΀E:UGUNQ4E,PK,C%}<\ktaw "" ̘( ߪ(\|QEe`: ( hUGX: \=!s}8{B(v_ QT Qt2 Ժ($TEY䔑Pw`3Vu7a(@WK:b :HDFI`| -XHuR]I:0jDiZ)EaTR ׍UQTaQTv'R!En*gyY+)R4֦1XQ!E# )Zz,hR5BTH%/heXp:9POg?2 ]Ee%Q4vPŸc7sZs Q4:~TG̑Ǯ:ڿsZ|JS'j753<>l"蜇`PwQvuFb){Rdbwox_2ۅLP!;BDﻐғRlЋ1AY@AˏbvQ@AUY oQmPvSS>a rz+5I[mGjhm%6 7b"*9-Y/:P vU^Im 4!cV Y %03xԋ\J$"ЀXO< 2fPq•N\ =3l\:B/a̰ P'J7R g)y8J)(1٥K)Jj --Jj Zf窥\_*"sZ?k)uS)EPJR* s!ҲcE /'- c!@qTmHhٽMJΌI) 2Ҡ燣>mfl%4t*%5/Mi)ZǃAHiЬ+RBӄ_DD'"Ĝ ngX`i[£$ShP>ZWg *S?uOSx::V=uOSoAWR=8X{0ȑi.t'5ֲz\YSҦYYohus8sW2fK܍h_1wg$ץh(DQu@ɿnhɿ;:i^Cȃ|5Ri KIR%β_)1MW[(ƭ;9ݙ ?1;wQĸ#%>4*t7ɢa݅̏F +s\ݵ>0PYϸlawA  S;3?$hHN7kM%͆_rR) V6_7F*F+> ?;;Hƨ;Q:m6g r<̨[ѲN; RԍHG݉福2 Eݙ[Q79;?v_tǠel#tK[pj *NL3~Nhn۞szJmoiI8^!V^TѲ?,JN-3ZX%;V(4,(c[{:ϧˁLx8ZY|X yGZ6kbma ǏB\$[vj0@C<; ( sB԰b99fXuBMtu*c3դO57.zIjҧ&}IjҧIɀac;U+Toe G+ O4&"L0q.)qO*ѻ1RUW"^F}+IWQT煅Wz [cB^e0^eܾONXTpUgpU`! *SWpUy+LW ]vpU]Spjl5B0c3!jj7 0o.#>W,+`oμX@׊ 뢛2L!L_N{~n|n j+0!9` m˗tK&`I̖}xi̴G&6"oԈlf?5h" m @fPj9Hw7G!nKNuPg>'9&B(E3 N =fuwV_h\mK,U}]Oj=NӽS tPa֓ʡ}tpVrLj"?xf!mI站]|- !ϙh%f|$Q$98>yxkӡonuQJLO*Bw) KJ1]gPmy,Onhi&& lƁ8 %)o;f-eHO,u,UsG WTsW* tu8 rdꢮZ"&p$!'U"heSi yA HŁä8 B€7b8p,@嬰T m›p^I4!.C0U G0צ8uqFZ8p2|"9BgK#Zq&9Uo#Py$s۷,$vEsq/Y􏑵lb,ǂCdphʢ'(V ("2 6:8ECe[$_4.w9U>mq Xjmk{1@8._`7;,[q-_-*KͥThrKS-mĖvt\x[\|j1A>L1#ʺE*5g[Ͷ>jSW|Jт7#Rkݢ95Ds##GHsDC&4GHdqIs%gx#7q[<8L>]&&Et _N3NZKHh:95toȋGԘ#sdO-}y܂95IWfYmN$:`$t8D"!W"5o/T)$|Sw?[Ŏg}?KF%{0Kt&ɍ}@& =Dt.c{ t|9 /Qw$P=[:^0`&7z~ 7`·uK+߈3kI-`4lv r4_*FpMFa'q"EmPJKuƚh6lج 1#M?BWse&rGcޫX3x$ C>]j>GG@ݳ]x9a LO|Qa|ݫ3b}7mH>Ȉn\OC" } TЇGhv?BfFQ( vR@ ~I T ~ ]Qo>26GPEzQɄ~d?)aU~WkÚmlsCQOVR+)%Vpʼn>.j>.wؒ㾙}1q'ۺ_l7!0A@K#IqyH"!#y>v*a#_#@ ;tQTfTԣ2jGUAh"&OQ*R+[J^;R)WnEZV<ʭ4Dʭ4J[!Ѩ ;+J GN)=Vލ;{jp;mnt(r|&ʕ|40%h^|4|44||4;L>)?|4I>)~4Y(WөHx_'10pco5)1Q˵EXtodU2eb(ćEPܙT sNW7)+b7BAaub; J^ݠ2]N l(hpG[Oā[ Ӊ8{aӣ'S-UQD׻+ Etn8gCF[~ #Ttty1bYƈ0֜iXWB7`c/¼\4 G=qXdc"0[y둂`o+]N} \0u 8#1 1:(d ܾv'03րh_[ ,pB? e({# ,(8V?Ŋx(ȭ":G%jxųzDC÷c0pt.z9yʲk!gP!Z`GqE'ߒ@ѮlFϫ_[wY{ׁlƱ~0ѵG~ЪV\Gk:Zj<Ǹ<ׁܘ?^ONa/H=~cVDc Mzz4RX&b$5ƉNQk"QKeS7>&ןgaͰmVH9?ۼK.z`R+-v0+JV%k"qhUjeEQc4(|nNrt~.>:]N/S Y&| ف*pנX\GX葩i=<T[[#;zb11gՊ3#I' -+Z8pCKid6$;荪=[[?E4{tT؍Tw]'"̻)R]W!ZQDQ&P tv.\ #xY1®Wߝ`%D|wpZL d9 q=`[:,م3r? !]q\/Yhz檌D :&,Ni@Ⱦ0$`vݩޚJ{ְcE0יa#܋WrJEE rXl}%Oùv}Y?ܳw Gʕ1$)d'1h|$7dY=#_Yي͆X_A.XE/|T,`U(t95 Ƌ')T'9:ӫ"9f$Gd0Hrd9/#8 [#5:QJl¸kYS4F/Ȫ8aj]lه\WlkX*e6lYvR5ҜuuRcC$Mn k?MK֝'FWf@G5GqL9Tٚ)DOr0T#F좷lw9@O `F{ \!lXot2oxFn\X`jQ.wWU.xW1y,W#"qu wΔVqg"\);q!Nd7n1(!$6e gW1oY7`9󩸝8m9!gtQ2$75:CѨj&QNQMFSFQU ;[{69N&a ˏ? O`TNvcr&IHU5\>!;c7f~;ܕFg Ns bQN!Q'76rb FHD'{`1'#(ƮhJH/ƷU3X @ŽR8mD.,ΐ|2-*t1l`ulL䘍x x:ݒ@uVT4 7*U*w(JĿݍ˗T9tciWjFg+V)I 4T(ЛD$~ xc12:[-c1"#QZ(I p@ёMmHbNHMh3s hc 6f}Ɨ  [,`XAXT֨Ty\HSLS0FHCgWNQE;gfuz=vP2iq+r4FsL9Z;[S'*!fhLo euw`̓˦.T)U?Be G`G#]D1˦`yJY~R ՕiuJPwBLQVWb)Vpo1EVЕ:/.R)?$Sz)LĮ4u(Vceaח+h)2ңz0X2aI[2#U,}!%': $OK!Z`)$ZQE*%Ȍ $#ht!%+kbڑX(8.Ѝj?bC̡tA JeX4ld"FJ|Xb whj}cR~Lze*Sz jGm1R`)4)޾dLDqT,1*["]줷>&\Cs .27BjSO1F`CV8HVkwO$cv.GJóٯKgZ-N0:{-cPҮ,JUYeQ:ʢzƢ5TnEɃbP )/$GMvt7sN~")"Nni5fI78Y@<-nNSP.;A?OX?^1м J\ NnV iNBZ'r=sRP1VY+N1$}[B^ ~\ >5qcyqC{\(V3O ď˰x"x"t^'x"WDhlrũO#U;#/'8qnAʉb8*T9"gDb'x.Hx"4+jELJZ=QX=2COd`Da] '`] ^ K~U>QV%>[LhYO8!d_>Q1`}9Y>QJ_>Qy'*sU>GX>K*(С n[ލjg}"$l7UvAVѦ۪h)63RfHp3,Pf^U0ֲ7XXD6Sxoی$vݦj2Uy۫Pf`dmJثMLF N4FT=+H 8ЍCmL U+pJa2ad25lMV !ȃUz u& TU3[sJKS@bH8fAEz I3ؾ" †7t,?R9>8ؔT*d(#5>nKBݔa}h%>05c'Nu&?^IA8K iGC DKA&2 CUqUNCddu +c҂,g.Zǝ%cHIx) vXw4 T /mAn!k.gʂ}T$)KYثGʂTۧ z^>8;cTL‰QjXŹT3sQ)J)J)J)JmH{O,7.O0P%Iµ(ЊKT]xcl(jA؁cFؗ?Aw<tUm;n8s[a7[!捇\Hnp~Wͻ5l;{GyoLMmI*¾ r)o%v:^OETRll3sS]=sYlͣ(_4*c|} kub|}Qo*.$7_ZBR\JJTIyСTKp-y`o*CydTG&w(4<$y=ҙ\w)GRڒƈIGG$3KgȫHhoҙ'*9 kdvZxK9ZOe1;e8lPg.tKgA9q<-<Ifr_Ke-)9[d]ZgơRg~) $//$%//GnDnǴ+)!tc$T >#:Yz$Mζx|nW'>'9+`Pvi7҉Whӗ,L;,Z2HΨz bS0sτpPz,|Ѵ ]Sۄh1وlaF7hv|P .JgJs*ٙbJD)3ԔlΌfTZlW;j^ʼn3  Wә%4KhSL>%OS2>%OS2>%OS2>%OS2oD2]A3u29}٢g@՘,ӊqee)-SSPw&Juua()q\_: 1r3#PʲZ팤/'/D_׊1!DVzZ +) P XIqK UYG:SיDJ%[RjC%,X$EL5jDp6TY@3s$)H9MA,3:j@>  `? H$0Ixl2}fuY֥ͫJ%XJ2&Q VLNP"eۤQI)aǔ  6-XY3#l" 5`ZƘ_ZA\ׅlמZV|jZV|j ?_v?c<޸\>yNoskD/<,ܜ_~YfxEo`gZ&\ǭ%Yӹl\ }NZ}_Ǻqf9yX?Ƃ^c}﭅c9:wk6^k2v \'hĿi0r{Xil )i/ ;wXEミ(Ș{N{{хˏo೦~>]VrN=\8i1\x>#c[W?cv5ʌi5~1_`rA ?ϲnfMԹϯ_`P3 ^7A3vp6e?tlJTok}=wecA}Ĵ;xߞ{%k"h|?6v_͚zxcZmeي̓Gǵ\W 'z,X?i|o>|,1+8 ׮V3m?v& X9l{_[:>nr{wuÌ?9֧ڝ0B ?r"0}^kkı?GoPBV%/xg\O~qFjlw_[ jB30O>|ZbXW}X4oMG*5#Y(~~?B GQ,OvYcI:7˱U9?{nQfJha_W}zpX/ZnweU 'ԝO/lO[yg>c@V"Ljh|冿=w{\ ʖ~7"JY^~nLz1ў!|lR0K~^%dM+';+)qu4;BH}ceen~.ַG~n%uĚ 0o-f.f9﹏=뗯W+@i}W7ji\E S˗/gw n-g 3`2ҧ D:^xMK'"38ڃ;endstream endobj 189 0 obj << /Filter /FlateDecode /Length 3446 >> stream xn]ߐ !@gSi24)\A(h@W֙[%K:Cv7/&wG#bGӟnH Bً#,Z^+CmklwT<VWP Ug0n!$WJfX=Y6uåZ[qp\2*jjR/nF3%ʟ93R6c?-n/XMU^8t0qnڊJр3DMRZ@9Y] rmORV]oI.c!85vquz˃}ɏ5ew$8,A#ۣ2eRZVl3bd2HR R#bU"S{!9q6 _3{i;%@ܦ udpߪ2³KV,r< 9z1 WW=JQب7whzRDU+4N"bsI]vF3e?-iU/>4RYAT1jAUȉ~xYcqR8 l[_"ȔյetA(Pxw !v2p0%e+Yy˴vN1%y5ffUH]NMwҶ  Ҝ(vW^p1:nfh=̔Ŏ)K?_Z,AF?%MV+*2]bٖ t&lsr(pgOvBA`-k55W-r,j݀*# |W#:3GZP?VBTfnkGuİq|DOմhpq8xYj?WC !Yݍx,Ψ{]KV8qHb/8:@m‡1cXWqűuWdHN`'a0B6O|i6'/KׇIU KFI~Exu1;\-,+PM-!M00``#>"3If>(glǰ7Ng˘ >|*lt&Ì] }>.o 7tquNS5DhFŴ2<Ԝ[rB!l 8֢QS0kzb+<|bɑ/Κjv4\@Ǐǜ&JTu匔V&)$Ղ;mpHl @yO2eFNh<"kra覰UB\)%'EyO<0XovD[XC.BY@w_YpFؕ r$|5F0IxBB N"ҦT"MY&I|%{& qT|BAP+_Z$0V}W+܄vd?E&pd#Xx{M2%a`F+dI٥b^YcVSLI59'k Rt`jA~:e's W֒ 2;1Xń'#r֐W,IvsbM9wFz ҄&Iq m BykPl}2 (]pZr ;6} SJ<.̄N)7$‚[h ǎxQ†}-dZZU1nl; &([CJ7J:q7Qp)ZFYCc!_]4tH[Ğ**M5Iߠ:fT/3W ^1&դi3፟B 7O Ab6lv M.bd_!m:qT1rn)0TKcgU`E sN<DԒ'=*h|ٛ A[2 rӒ` @njb)cP1i -7J5eb]/$aۀش/lNSH _;bmcIKǔҷ+$>q⇎{LxxP0[oxy/T[AYrЙk%TA,ލ/{0qM.u^lk5<9; m2TƓPQn7OӺlM"sF#2#h8Nm&[9vY"4%~؝ӈ b, 4=g'19.,ƮP +&8Mפq5w[3o %b\DunGZTLMBHpߚ12ŘbXis )Ǘ~Z|7Ѻ'i.Mt]#b`eHS->LM3FWz6͕nyhۅʳyr<Na2`U<Ҽ9h*B ǧ~I~G2Y<4Gkͩ!ۉvp&.r"vϧj+w  2-FPN7V*9Co]vVKM?|]ߢžv}nY ?ro<6&֮"iM;¡/ߴѫSʴM/3{Kz9U?J @ĬzX>*nQ\#F ~MdEVY={V=FsK"~ "HM;el/B0+E' ޮP4em y '.c'AsI.J" %j*<>(g+Fj4 \NQDMKΒݏ}R,$Ϸw-.$ F0M#Foendstream endobj 190 0 obj << /Filter /FlateDecode /Length 3038 >> stream xZY~<,<$C ((4Xygk:s$WǿO.ΐZ qbO:?_ъ]Q/; WO_2ƮRj{+#++`WY'kZQi#}{2<)r~.\ë|x_o+ZiH9~hZh~qoЎ(HsEH7+}ӂCJR퀳)F 2F+)ø3`N@;-R4TYzFrrz$d7},Ggۀ653^ @gN׬&ͮ^30p)646SYqIm5{ qn-Y> `X~ya+Nf7d7I46Mef+ՉVEPrG5]70ᓸُO<aAD}'$8i ;@ J:60;-+BQv!lVuQɜ7bl}OvCSgPgtllq|S..bM`{T.jxG ŵ(1A١bz=R~s.&mK30g\ !u▦ Ur^q[q˪mqArϴuTio_D.]Qq pS5# 2Α,l%FT8>^|(Btkt$|Tܴ;#_ML@sj-Ş زjAiz+[zT:zvuwhU:7'6Tq8ktv # (ns)1̨gpza!1NLHf 6TNs-SH@dxÔI7`>,[P_fb@Uh:ۋVj$]ӣ6+4C .;؊)Z(qعoVn#QoPcUtCSƻUgLb c<+U!E| K;[-KC)ye mƮ7lk<|=$`qxb \-o&Z'9aLLtoҰP<fY Mf6tPpgֻݩ])yGi%pϧ~qb&갠SLfl"^浱<Եwk[,B’3 MS<7 j*e?Npe%;\ oPh?,TR@| j&wCf{Qi㱲civHF=^xK:DP~}Q>X WaflAxq+r_Sh(&̍gatݣ0בHFL6=6fLU7- +*Ph 1?^l =/K O*F!kN3}L:wذz2ږb#:M>WƁHG2 GVE34gƚXPgyT_bge͙esI>5U;486iY1'fLܜ(٥@qOPpz􂺛OU0p:ː1NH@AT%V.؄aW0L=Cpz7AJnLBQÆ xH=`X}fؑ 14ȐBɸ(YE)\[ endstream endobj 191 0 obj << /Filter /FlateDecode /Length 3130 >> stream xZݏܶ}X[ߪH.IqE8-|':8}84Q\f7C X]/ڝԫN]W'V.^)tՈJsjSiWB;!% f]\Ø(ٺRR?%yZ4Ɛ~fMU #m;3 +(m۪22 C!-E%'?nޥQo.v,M+Ś(34q;N-z0QɱADۣ+{aJmOm7_\|I#t5"eUD z'/Z,*.ԲV/+PZczIZIr*m_dH2]sIateTk$-F#X w+͎2x-vX% ~urǗ1`w-`榖[ w;x3ECъ<_s qtvk\o`.^vhVȆG!"ͽ[LoH2MuAZ? omk`C-``ǰ5`4‚sûlim?f?s mб"1u(wMi2WkY[4ϢJP6OC{~s~hb*G,i@57˗qo<`7׋!WJmz4QEa=cBK|Am%9ǏczQl BXY 6j"8%uv!r`n7S!9Mv+LM_w ,%${e +k/H?%#JH׎Of4ʿYi,g>yM]Z YJC릐WyEcϜFd#M#FjGOْxQB ҂si>p`P;AW:;(0?D7佷[OmnXf'fx$C1>c2K$xUyQ1yl &l2;I%x|;%Y !Ƈ9U4=gz>>B }Bn[C/{ mh/ovvNwRbFaHU2=СsnNǤ̱y$k֡OCN.TRZs琤w*@૘=UQ1K UA7Z[{H0vR7PgԽ,6u=ڗ$.INQS~ڧvgGImSjGvLS{rW?"jRΦi9CN]pM7pU0 loE oNx[nIV4?{.`\/nkN#0Uj "Z8hYDȮBuv g3W9䥹?h#R+%uYL=7{#si-o I܀LEcXֵV4Mm\hӂibJ=WE^"UV2QQ<+X6y1$ť2"dznmˇ=VY6hc"x_d*zFx&nPE“A- #a|[:`e[VӀ Q'u F(u J9M~4g@JYjۗ2jnJ )=G|0g+4ˋ]3,lgi|jYJ3#~ qN8:yI ɒe|ۡjZi|(X(4Bj{2oqh}]j?IqiL15yYuT2ѰqZ LƓJp̙EJ(ya8b @2U{D#NϤ'߫ƒ M֟bJ(JSc! ȺFCPqq=}v:q3F@L8"B"o:Ԥn2aADTLVO -2@, /1gvO/^@*Esþ>:@3ښ@ !U/-E&Uʽ l3m5! l9&bo18&;cC6jLbTTRLbD kqQ y+*$G5hs{T-o>o*pJQ| +IʮE-s$€dy#:! 0,˰hb:&)3ZT}\:EaJdK%VA例0h'>K\Zendstream endobj 192 0 obj << /Filter /FlateDecode /Length 3665 >> stream x[]ܶ}߿>,д;H6\)\FlЇ򬼙dfgݵjRI{"gn'/'l=u6ӿ%c씱\KOߜ>.s%u8=ߟ+aUEYk +[']}w3Vq,ki =֦ W->[|hSv*RL80ig\Yʕe{Z^,-ҕylqf+̵2"گ&\g7d׌ʵUַ}]j^l7NH&Wy]H?9&풧NhvR*;'eN?%} jv'ߟyYB+T i(+‰K,>NBή_ec˯V5#8˯ tiZ2&&1*rAs[j ۧ(IIU+=#yAX"PPr8P}#7::ΥW$R `VhOR@ы(bccYL[0 ֧ߞ\D/Ex}Kx/ (zY5/*OAnu4m6 (h#bF ԀG;W g WOr:FώelvAQ叓 JZ|PlA8":POW몦UċIJ%Y5 Y@rRǂ{/!PкGy2R2+p n]B^&X;~"14Ծ+I'\U8+n l6)QF.m KC+*Za|ލS ƽ:Wm-ZR"tn{WUC |#;k."6iw&عaX6TI: k|1m{kc8Mt;{kΊߴܼ*^z4wוRGM'DŽ$"ZL(, ֏ރ6;"s+6je'Q{Βi+95Ĝe>eN&~$]@~j7#xO_3 \Jf_E9(l=9Y\]ɒfSu)=xl&2n )ԤSËx8Ԍg'q@;Qfof?&i`DLlˋ=9$Qz'4n݄~f~?B%ଟ>C/8W܀dQ梈C26R"s6ppPSl"`oyi(j;˗4{W[Vw XM:{Zf,emrm<cc;,j<̚!:uͤv6W(FM24ϚKiPmF7l#2G#%\d<ǧ|Ws2VIj3q̈'Q2Ԡ6c[QQn]eQ=Ck1kptf}36l,p⊰g(IYw!9͏t\6~O|064Z. 0D_T_2z&@6X$ş#de]JAf< >0,E^N`h6McT.LӊZ *S$l05>8;uxι>t3 ˈO 8(}3[ϞR\v@a{!2ؾn?kN[}sBF/ u-߁åM%EU%Df85Gۅءe)`Uʨvоnc4Ǫ"޺|Ėu(GwnNVL4Sd;弄A g^;kvsGj?]]2r~ D~lvju}pE; Q+ōDTQJPZu1h/R < X5̼q]Rp [3 ÒoYmj>bx8Dkm{"j>0NBЭ֛%cubl8z &xu-7m

&nL$T}OeEIȓ4&}$C@$ Z.a] \뇥0u7z-Pq *Nl$߰=L{ə9 E.kqkL+&6/b<:n7eut+E3^R@im+6^]c,?x K#ak?!|e}$6e,?Ϟ%7rYiPmf( `lဥ>"bO_saZ,b}rZ*R;-V1!mõ$]inB@ߙ3WpBy/4c_AJ;;vдv΀?ngsuhrgAJXjY=@j.q?Z䵽- X')TO89h8u'do+ig', Qx!l< 1FT-Do뒻dH &%TWS~ A$!7)]yLaɈ,EG G*O6o~zDA yO峀 x%p<-Q-K+/Alc| 5yiɜA^IKK=p3%A Qo%;nK&5,+| D@]D0^e [wf, hFc- <(2hDŶQQ 3X~% 4'cy.a(:%k6IkHp5[uH:Zu B_]ӴLP jnF5e&@GMW P P=Hky+$YP>*u0pLlAR($ܢdgQ:#t4|0\C֥`te=#`}~H;9r l} ;hn<0cjA:`v.0vNVO>B=]=I^">OH1E<$CuI%sJ̀Ijُ4Mxp@.JtXLAa1rK= E+%W,rE(!q$x 8#I"4Q̐G M-OYsĜJab.S܌S~n9{W*!E6ȬCC$ E85 `㹢,ag]#[\K56iz:UUUPs7Ԙ)b %,ѥ|PM6Yӹ1KzW&`uvA]C$0y*D & rRԤ!,X< %Wl3INB3e9ŠRw4sY1=ҵmJTj"oS\2q_Ĺ#q$³]+xhkݮ={swbL|39h蘨\ا/1w+;CϘ[w[tz=3~v!V~Z8EOV1.D:᷒p;) *6s9> stream xUMS@sαIdzbŪD7',X ` leRz螞41gsx# _U4*zt,l&`)f1e2^5WIW':![ztL+Gi)gB9Ð *MBsV'T1"sʢJbFwpWIcY8NR) \|ϥ2#Ha3N8"BӔ[FH8 \j_m_,*·e!U{Z2G,npn8nIp<͇}yB$/6I}{ֲ~9KBu?pƒu-QG.NQ1 ifM8i9@*O5tCp}Uxy,V ")h+قAX1oJcLl"sZ+EE-AtHpq]LbABy^E nendstream endobj 194 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7569 >> stream xyxWaЋ`LHJH! C覛fp$˲.Q-[lI\qSb%8 MraIr#!ٻwcK9-G!!DHHȰ+{v/S间>e(#Myv<Ǎ95~X,X4mY•UՙYQkcm<9qK<=u3s=/'fM QbxDL'‰fb&xJ"Oۉb'x ]rbXI#Vsyb-XO, )(B@F&R18b<'xCx@Idb AÈ!CF+q!( =d͐^NБC͡ڸ$Mn'SK }G& =y4;f٘n׍ИL'?Ї<& `bDu?RˤӓWNrçҳ=#[M Fb1!D0! `Lv6[%†*sK9[ &gC]dE&Y`F /"E@d+/Ѹ5epp*US@(aUhj^Gˇ)t' )00"!/ = j 4q)qkȞ{dF] :7-@ ZQ.g$ |m.{/ ?+V w~d5luZp:ݵ6#-::/G Nď Y%MN%~qFSt FH`e1ΩV?h' @3Dkz?Qb,I gOG~-W޻W:ZUpJ5PEf?"g7cBch9Z;mƍ;nCAAx/~db/翑i \6Rm[CLAdT=4i$MA L ɛ"X d FӬm COׯ1LL6 V`e.ZW\.׳j0HNB5yx.sVd֯xZ]Bh70h7 IeiN]|sióa) gTkկ$VMu] 5c B)}p .A}s7D63[duR^;!Z&sпrLxř,Z健Ak JK;Zl})sYN`.5;ھo;o P~4W@rUy|6Ѷ̭aZZ/PE:{ֱ:씙zxj;SYT3MOFuSQAX%՚\Q%3aS>\tnNo #^|YgT IVXWPⵈ1TGNn+p;L*9=baY[%[[~Ej>LoU4zh?9:?0=wP۴ ,MedIp4edMM ƃCRLLRuT904dH0s^Zr쫂UQYU&a4&yY>:zvqMٛ(IJLT8r sJ11ȕyk< POJ,"P2wW^i'XTVPY2F9r\qoZ?ϕR/ e,/MI1jJQ⮤h&`Wi0?ぶ@6.AxXklK:=o1 D\+1, |.M .=1&3DXYUt2 *%ث}y8ćF/P% h?X_d7+V9Qj 7SfaGɶփ. J.Li` oLҚ͘fd'%Y{A&((RzeN<2X-|jI m}U')OF ME~CPuŚU)qY=:|z ?c46(]_N}O;dnL,8_!@*"y7h% ;d޷qi֒EUm8߳I P"=p;^h8$߾^^ܴh/>;8ћt ZRo%*hHrs>"p;7Tp ]w_bec& .^ϩkSvRg ǟ|ԯ3LY=S+,JVR,+*.-R`o0B|;i)32="JE.&ذjv59 痐ono}ʅnuV8B $aENC dCvsKצc!VԾdXI7'qϸ}$zga_Y!]$X8Nͣ o7v"̘gɢzm ,p5ǘÕ*v5n*lyxx Cc;@qYԅθΤNMkS[_8zAL@: rS,&>@JBLr$kc5 oj6\M7  <cXgR䑷t ݑ!ә ZJBɶzK3?} Bb`YI~!W 2d_8sL<緇v;bY+݀}g5X ?|ז?J)>8בgʲ{ =߅@[a&YʪZ Ϸ!!r~` 7KRmN4z(zʤ2z`.2Yކ߁Í֋vo e2XD3"Ќ TšCyqpD  k*(' 5uZ\Rb|k5kT]O4*F4\}H_-3YL'Lo[;jtݿlqS*3/c7@&ݜ$f)|ѫ5'RoMA&@hzA(osMg@TD.*TyݥՌnyKic&\L؁!ÁK9nxctVKaԘ&}͎ʶ7qUiFF7VTŢO;Pj,Jc%ۘmrѰ(U?q r=z*Kh 7mJƦ3OnyQg" 6jn q@-+,հWPI@7yC3)ȠҽJw-T+i)_&k o'o6KY$OQhj-b. /7B.x2E%5ZV3q ~*:޵\0[T6y-8LQg$X]]z .eZhd>bЌaV+|Qj;RA11a0,{_8&+Tb 8PcVf.9 g' S+*P5PU~>FIVT7|z$s 2U]QQ]%9,&1/p#X Gle(1a~E. UV(#.[IUh`/uD:5Fi :[ QYTbiá@Yw(,+T-VfjƩw0&B݂[8^f8jMu h):%J"Wvn؀>hJ :WGxk|ԽeB#_C;ȫurRp&:1Y )qCqYͩߦ(3Ն A~̹?Rg,uX-uN?>osɛhNGc-:ӌd19Rf&8W&8Z 3._dx.yUg9q U$h0-LW i: m%%p4 _Un 8Vk֘@Xgg# w& Œ\:Z]",:!( pfR_JQ.\}(0fmΠF9E#`xoㅩendstream endobj 195 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5832 >> stream xY tTU~},yOEEPdWdQYLQ=!k-JU%UuRH+&""aX7ĥ4ryW3̜I%uNR{ k"##[yyϏ1B%S;gž"سkG,߭>G)[M-|i%e+^_ƚk׭ܼ &/}?Cn“b1K͙]Hwۉ5R41"ˢwN(6#(,] rٜ9g]tY]9/Z/R@NT]oBK ŁкTi*Ͷ&Q9PI%6(cTVhbZa$ ?AI.LfY(c}'zoT2ΧO8ğY =FI8F:7x9v1 ;mmwB-v ˫WW'\3oxⷥ60V:d'ߣe7e W$Ұ1~ՙ",*+5P@a]"}ctB'UE+t=Ty &̮`_dr8P8_Lj1G*iE,Ta  Euul^ +) iz\lTB)$4Vd'샴+hU2zRt,iz RA=ly> NM StD~܇ ick#%IGOc۳M,jU+OǷL6i|ssԽT$gɌ)8%B|/k|BC={?ޢh<{3^!k5tP~գ/L?qcuYO]2JftRRgv[ )xruVx y?=m<7/:=ґL'5A>˾G/=}o2T\Z0%|$D~ G>2Q/ įی!~@|#h=H!ۈ9u{-{[y#LqI/A:|G'_9&h~ :PgrWgN'nh4 1HfY>uҀ!~2 q8‹Z&j~@Oױ/1fR^QFp$A05K9V+y|)GdFJ5sN RZ* xMdCp17ʨ % )h9_( G_f%z͜7Aغ/Wl%Xu?3k\S;6G Z9Qg}X㓰`sF !\Rt}fuKmGCug{_qf~C3P&zfs |WZKsRWP[6Zcq\V/o zkxKNU`GЈ`^m6dt$#@OwQ"tePeACׂyQsv^XNNRpjCc$篔K^#X`-*82*;OlU99Nm,~BAQ bT71o%X-nX{|/<wv6R|Se'RѰ;zet@ ]T 2s1n{_/mv$qWp ߇Lʐ@e84'K42_[zZ_F42cR>Vj5'gbPC5iknt='ɬ A1=nCj!M xv3v[ VC_m6~U5v+!%[Vh2 ˻ȋ\zx|k1e<$`EQ$DӃ06:׵loCDӭSUTl%r^#-I+d0T*rg^jj:v\9+z% |L;ә* 8iCX]9^zij4AVit.i|z=/Zn;z vu~ ^(4瓀SpQ6& sİǕn}˸`3Ht$Z)X^.b2R-zO]In4 jSdAżgB?%dcQuC_UX Y'A_idpt;i˄5i`>v:21ʔ{|<7 dD55RZ㮹xj,)QH[ -TI\Dj꫙mU]Ĭ_͇)^;q|xm*p* lrNpTH8RUC3{Ν[&`’0G߉Ty21}_t.Y1cO˸N0u1l*C̖RUoon΋F|볝Y-lܱ u=d2tDZ`97l|dEWꌉ)QvR'*[Fq]cjuLݒY;Oj\Cg?\csd.]zw뚛;uVt SEX\1$ro13(/vL]:g$-yPkBZ:iK6Y*=6n.BRd S{dLa:2%l+m/}/mFRARP#)X4F:l:#U nYǘƻ*ڭݭڽXz.G):l # E7Gr(Y&)ȺLQwmL@}1j/u>_$='xoG?mqѸXQD(+بZ 'I'˯P6G+lqbj '4iR8`մ U¦03Dǁ -uC![0q\ KCgP?U5` Bppwá٤f>x4RZ.`I0a哝xmh'궼YMmױm}K.[Ai*H7Bw~zT3Wj*RgYl2Jux1kڻͼ;M|ߺ`u6w~m嶗_|f]85Xa.CM%jk׮PJ$,o~*Xp9 :nƎM48cR8#pJ|V-^`]W=(J2u~Ϙ.&FMV'_ _O3x܂&QamIf}فfuBxk/J/uq^u OBT)8v5vI̭{Oxud%c0cчJ̭iV^^G4k8QgWD)7-b~7U'L<}hG3eqY]@:u{:=v_8)f@߁&ZEP.u{aDDY•$ux-K_%Jl<<9v(BE|`ImR?|yξ\. V-n [S_ɬ:,Իeq11*&u4ıQV\zNdj 4bO-wae (ȠYl}z~ 6'P9 (?}ÏD_i7P3 2N8`xPjAF.u 5K5!=QcV\T8hX#<Tp2XV!,\3g׶kV$`0H|?O<߇,Q$Ґ1¢k xG՞2zy5Re+|cKjsHh i=BWgKl٥_윱s0ԚЮRah,{*1t~s-ב.izBDNMM0 ̡-EyIg]yR'o Wbb!m\ɏOFcJ mNF^9?F.q:w 9SA"X-._+_V(+q01XZ5Emחlwlv?/O/OaXRuoʤ7F+8z[8&:U)pGoNn*O3{ghNzFflB 8@_ ؽl4 9Ra/(+0=Q8 nAm#CO6N-eޙ%&Q5/>J TPJ:TU Z{bA[>yNPگXWH8J@gD1/A s&$ʢ n~ 7'@8c] `4ʔ%fd/biogFXJ )lKQ!%vBzKZ?P$z}}u}5\m_Myչy4dqW] '&__;ʹNT(q6\1NkIl;۷5o+i7[<)E;+'o^vR8~*5P:nϩzzԴֹ"0FHzOQxM8c-q.,K_XdSW kܔ-j0.T$ J+7[p܆o}npĸ " Ȟ%gps];?Sуp!x;8.B+;rҋ|33=ηt*,w^7K\+-O~%c<$V#^_9D~[y#E82`7Y}lVcG^BVFID^l@Uro SQWdLbTJo[_o.Xk楬b~wV=<Oޱs)If+SϊUfC:~uA@$ӷJ\Ua?p g)B]LApRMT5Z>u (kS! UN}H #e%@וl@UVVBoKwnk-BUA͍x= O-{,Wl@)TtA+eDQeyʫ Ʉ!LwwRngwسE Cnendstream endobj 196 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4468 >> stream xWitSޡh""TDLҖttB:mitKд2 T+jDA/؜tκkݵnV#Y}yy^>xcC5wחIE>v?<ӽEf7z;2p^NK_#.?>aĤ B6yk翳]XG'^!"Hl"rb3$Vo b k o!^ —#7"v`L;<*I%5蔱c㮏|s'e4asMxUywטBpyCv5CшÌs )b[*U]@!ɜ DP*?_?^fY= Dz zvqW'X 䮢Q yp$.87P؝6^BfqF?.ύ ̊/ܰ~o`,|0xhpN 9".[47矤3{OKKOnprV;T T9i E[!krmWGOmZqݡy)>9oK,xsM 8zd@/yقfFʢ6ed\Y,Qbsrn,̆ѣ$ v??FnJt*dP!`zD-)Qkj)Ģ0lYߴh Џ6:4݃9Fˈ|?z\h5Sͪ킇jVYm,VJKZ9(3)Pj䠠(+/i=id #ZK}a OWYkr+u"uGk8G9*"5VgR@3uVD\%bȐ06\#O/5 -فBD޿!Ё0ߠE'q^Sd{葽/jj YPhx,jC(fMC!c(lN0=gGB5BʔGsed ?—M- }ђ\2;G)p&S Ra֬JpilMLHP4A#48!Wl6Co&ZR6NOJ)N K㘹=[AyD7]7+Rz"*@ #s˷iEP'!1MQ(|# Ȩϰ)&AP`\ MjeX%rOw;Ϙ*,wPp f/z8 #ѲAn5fڣ{fi r\e۔"U*M_j}M"#TBT&)7``ܠPfX:jꏞmm RJLQ:o ρՑw>^+,.CloFr6O؏mdB /f`W/<|d ])JIh咬-qrz?ǂ!h6M~\ZkwN)>p}zGGGG{HTR&ټ7"(buxPX\&+RRia/u(CH*#)iѪ&;l39r`4qgR}FVR\gFwНB ff֔X*aWT]8ޛ>72MPmCԠATSt%p>|$n\C_u;`іWZ9͕`AgĆG2=!Bm Eޛ ȯ,Gd\u/.! )Z)&s%}zb]2e\MX¦džE`wܘS]lk>4"(*/rqc"lFqw>u䁡Y"{H_D:Xh|dhLlaQYܮC:V8-:rACp>t͠O>!혂j/' z1Z]sCsQWbZ2񰍖R Ss5@?|.ͽM*DޟCK0wJ~BDOEsQ(\¯ dh%T 67Z *Zd;;r-e :XTR~ M-u m:l׉.I+JC^jh$&=Um-YʬGtH!V$vd|3u~CK0ޟ"^FͅRzQ8_Т 23laILG\qkԻ(%s]N-MXl{և8>wzm-B;ρzm~W)|o`|{p|* V׭AifPS]4'[*.&Ba0$$O\ fZGKlE|kP?; \p,}Ue@#Bci%6QDdf#]-Hr{ϱn+U L Ekƒ?ԨFt ^X|)̹DYFzBgDM`z zT?ox gMB %! -dLX:Q9QKRD!/pIVS]pV0Ԣ<6\<g\㾣]50hέuEo)MYT[ݏClyVV 4+(gKXQVVd*J4$_f.g5uan-TN磩uNx:PܻhZ/bϢ:GɮUWi:J!U mXZ0=|d-L?`Y|:ZC~5B ,7)XRJAc؜Ѹ ?Pؾ?}OD/hT\Fu>ī8_[cOet@Ifn6;;u~ޥo&.F_ auƂ~ GoϺymh9ҟ-Ͼ$}N݁$DI*Wn js`ơm h3rdp5k?6];aE\Gr4" qGvh6\sbuCM]M=|}VjqE2hoщ!\J?/#Σ}QO'3S$ @s?B[A^ڋr"OPP!6W`8s`N{mGpHeø|fԠ3.N7rjON,:`av7$lӛόhtyf`B;Q9IiJT)vԩwTfWgWeWool{z 3q#zTxKW.ӔB2䘷vXLvvlݖ?sx?7&ܖK2D[ˢ9|4ءc̏AiA dU[ԸFn«Q#]I[Fm5!sX9<ǁx&Rmdendstream endobj 197 0 obj << /Filter /FlateDecode /Length 89 >> stream x+T03T0A(eUeURɹ N!\A zF !i\- z&&F z@\.L͐,.@ (endstream endobj 198 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4241 >> stream x}Wt׶!!1i0@jPpHA0Q3fΞ'ΝGb+Cl'v;rbXI"Vk:c›"MHbNXGCx8}6B"ȤCwt<"E* 5Ƶ|%n[[وG8uFMh8fԘqqg.'TmhݱWȱBQQUiEƢ"4TSV\ ]fvoRJ)̄|Ys ڵdOY4?  RI(s ޶o]}29!$y"L Pt.#+ A[Ѽ?@{<臭ͼiG~*I$}i"_ۇ_ UREђj9k}S̑:HH-I&qP"H۔?pp#WW>v6 ^>Q}2τu-[ x')x%Vx/XNQ a HbsDpbthf(\ JYEMxG`,hH8fg SA4P􋷉#[»R+𦡳Y~ ٌ읻R^ s.x; e>R:˵~ż5G9F&w3dYO`̽^}WE\db>~r%+` V L]:}866ƘGt@`Cclm4hޢ`6oFF*NtCp*/ a*fkvbMn;|7W$;Ns[^ $5vUoBrA:du316KheGq"%y}"CUwUαb3Q: BwĠ,WxD1ǁmؕ8Q23vNc+/[Kۦ6UΨFteG*_{e2&zv{VW˄FXNzɾ OC)C"3'(S.@A⡨\%? c5F4+|[sαuiNB/l]8䅱JA8%2\!La9U5"mMai9t9:&Z'kLShx/r;+2ԛTpގ焒Фyr홛iyI!Yd| eo:fT8'&&qsz??n :ЗrނUjj<<2*3~~L w H4$3g OoNnZgϋBlX%@n ЫBt1ђNJ s"uWCmr$ST!hXGkjJR`)6<$_ Sv͢в7)!񑐇ΐ} ߟt>e>`kc;o\RJB-(EIa&7 RڔGahN]ΰkfȓ-&DTxGrrgϩyeL^@̆YlV"HO6C3[uR}P9RGs{-Pl(nRb(ɕՕ5ȜDF*˓@$`^D*"Bt rh_V^>e?δհFU Oo@tJso2=W-pJߚҵ 2*AnذZc͢O^ټh} P+s榜VEK9vܬI'沅/%rLim ar[x6?!}2zI]# ݳj>Z; P,e'sd<">:·h@w_Ҿ,JP'U*V26AxKnӇr? mSNfrCcvmt<<TC<R{}c64pvGb#G447Z!rTʙ7_-~tx~iYNn?Q9|) Q\:{r*cX֣P)p*_3]>5k!;07#I(1r @LPA!ԑ(ճHeDH.qŚʖoد8ՉrAc`| jEgQ22 FEU`JHr)̃` N$LOu?`砫h8ETb#5=6[$Md!,J0O<5xcrj y T6NϏD#LE.jkR9ܷ/_CYbEU^;rs^O0ߞ.' JooRH%y.rloLL$W'}e?N ZwSxsѡ{ԛ$Y8X.XHof" 9( G<Vrvhk^(ga6.]%`~[@k~a`"bFGs/69h l1٘. >סQVWTU@EzV8a&X 5 ßX=ea2*xAh-zSR+"6l^An?=h}Z,l53؆lìyCR{{LZVS[u` KWZe;wޝU݌ b >$P$34,42Fj#a%nmt jaendstream endobj 199 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7779 >> stream x} te;DKET:V3. "Q{zV]UoRttJH ,ёqFo{)7s{{S?y+OtQ^^-Y6駞"o(jLSop]W8|(d]ƅ ^ijnYڪxUSU.^)),-[U^QzMuMc?Ԭg}EDD/~&z]բ5EDE666m"zRXD4KTLѳBi;Dwfd[D*z -A${lʦ)c#b~喞[_LUܾ+Ӻ~&ۤ~̘9+=?ϕ[u-\Oz'ѴNy3QP]ˮ;PqH],Ǎ;X;c68{ph&kXam,PAN8 c[Pe k,#MFЈunƝb깙kDG>%o#׼Vϼ,2'O$30n>.R*ȴ 'L18#wSg˾|DBtEZQ7>c'鍞Jyk_G<;k%8ڤE\R\}SNtd1mtiii*ޓxq܋y)qqtMތY]^,)dĒa0p&w|y^-+cemՂDfml1)%܈Q6; ).Oa7ruE|f"U4sLm68\,s=^o0+{S'ag  0J;*Nz04Vo/V}e6nH{Ly)5iɕB mb!$lSL b^/̇iB6VYTŏ>05opCW:;w,5=h- Xq |.U2gtq]V}qa}Ӎ֢s%4= 8\{H/i`Sc_U_`@)jv`9~ߪ.Kɧصƪ+4_D61g B ~f~qZ҄i\DqxY`<0ǡ ƥt\_$6ilL]~>NCg܉Ay"Ǣ/ΐ CRc]4y/ P6bԁf213{Y/!*Xa \M+.܏{ ϮaaaLj5o,~:{2O޵_a`72^XXnp!j@xFUAf't'E2Ob!"` ].i鉉vht'G8ppp~G0e54]5Uc w^,ƥoFNXwLEF9NcsR-BugiBfډ0 N|b}{FP`{68B  4hfeS#@ }ɋޯf*i= :.G uuM`X:Y6̳ | x g&g+cv30)Mq:w^,h\A=eԅuvtbJWSʇG#;Cdqxf'FouStox<,پxStܜEgze\nbq"P͠Hn8-~ݜJ ~ULLLZn3Xm:Rܴ%y7Ә$y+;&31 6n%v$<gwhA"$%EFhmģ:r+fY$d漬GŒiVP/h}>{jڋGɜG$0TOGPQ|v˛ЬY kijmclA' Q.MɊML+)M%u ,5ZF0γH$.-Oa .#06JO =B2D h9|N?I(ϊIC̓$ )X&Meט;R.O| nt@ d -v Aac [2χ|I_tv,z~`l Eyh.||F5Z iɦ_puzi? AU@+-޶o PgԷP*4 u{.ҿ7:t:lFF =նY83v6vȽ\z=I ̵2kۆ^K.|{Nߦlcը,@}N?/uxOOG_.R-^4Q~O|GQq1xsv3{s8PazV/nAܤT:rټz]XdN"6\[!ӮhyuUΝ <>-MlӺ`>up(ez{[@hkW؎ Gǂ{{h2ҙc}Lk!€+SRNG4#ưh`- :aC> *..$O"5k+hZ նH!*uC)oڍ|? m=!*lYҪՂ&&lP9XUCQ%a[.j^SyƝpt{ᣇGu@5݆ Y@=zǫEaX&*wKFGޑ9"< _ǐAX,dPmUEum lٍdXہh/GZl\PM_g55jWEEwS)oʙu&v]׻^W"<-x?~ឣIۓ\x+0UP\f5m:bx@h_d@>P(&u#e?QqwWK9LIcݡ$@QON+a,7`?J2kw,BҨnT,@T6͒7,8/ 0:ʌ^>=Dgd;QAwf$#X N )`ՠyIY£O Sf8%F8 nӻ#t,ufv6AyX> b: 5Bfiii,So"3[)c.`%A.`Pl]崒Vݛ!*sEQGd9 Sp sXpF찹Q.ǐ8z#p(";VbRo*+*r[UPc)6ٛxxs)f\HYl/o͉MnBv8Yyڋ'p7czLBz;HrOgq2U7ViY._}Z^ (\d Jk#̥%e>ǂoϖrZ*AUɴZ< ܭRZ m.fl VRh7 Mu:LiP7| @}'vrxgꚸP:~v8j%G5NJj1$iɨZR3Ӎmҭp(0 IO0j4ynyĘ_ %$0ihȇ^>㎌> W{kokտ ^ <׋p|Β(/eDIjViv|B䝯/|q G2ЃƮ.(~=a2}RxJ!Lw3ӯ I.a{!p5aa1(0b&#zK͉/j9ŋq~?C13!$Yy#ҁ G[{H+g^Ƈ#__ڽWMYzhe2͡swzU@(j&60U7ulo"?*wp7s=;wɛ_ W_hVc&,J euF.Uz_f /JMv٪_+iOq,rOs7w.ܼL&p/›#J/~c=l8B=}s}ӲRR"W 7Z5f7#`)iN7w"L^썑o'nD+Ԯޮ>BґRGZ ԯ=(WAvqxD~v'#ڥœrA}M5]^=/4} p\ '7jm,o@ӈRN 3$yY6V/8YPvܼ]Q_In{ɞ1-Rs)(;};6zYq+H zӻc{~ 9]Ejg7>>obi-c\ɹg XBVR#W캴oP/Konktc73k;n}h=&!}zcP|q˯YxcwK2s\B`EJ) #=bwxwbN/J#+=7f)㉉3Wŗn진 F]+~aqnnD# B"gQ:h,-^68'x.TTz2HQRKkֵmv9*GӸsΠˋK.;ރW@FԊr?C~|,5 k3  =+&}հ,bGvx r2.In|8\ Q :%#b砟Aa;f&IZ[%B>aLOPn Hb߯:sV*׀S_ʑޜ5ffebdL[u¬zRv_L[^c G@4DU Ꮗ? FQ. !VBh根U OΔ@-pT ֊s[OO2|{c޽><C賠4 vGsh V4S{l{G0{XEPy5K2=탡~y'H:Q%ڀ>KS|xyhD[Un+JFO#n̟z z+z:]$_9 _endstream endobj 200 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 990 >> stream xRkU$Y s}R> D"H$mhM4 M-^fvdwޒMIVҲ-|BAgi> DX,=\@R]ъR۳~y}?8`)''u4IX|tie_߯nUU\WW޽8}Qۿ-~|`]5+/L\F7Eo{LŸwHS(Ef<+r3~v85W~tm$*ޮo[fD=8XfРI.*,EQUcug̴[عp~衤K9+Kr!&:EC|7pD R(tT.~ءdQ+`!).i $ʢ5X=XusH'z8l01,N$ӲTA)*'#+,#PQ2&IRd5ᘚpMLMQ:ukhJJlѤ,LKjD GkOef#ZWjd))sC)`NU^ǏT-uf3&[vʚ)KplvQMFˣ;F~*֗n٬\qg˷P=%r͍-t}ԣDTqGذ yvch%]! Q/\X fB88]Esa6jޜ;bmCvd@VA N endstream endobj 201 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1117 >> stream xoeǯˀ] ]F/&hA4@Lb,@q]nm>[{~You-*01 ?M<5gII>y?~\DGr?|w~|TbNnsk{n$/4<~4A!;!nZ@۽vO[L5P-eSW ')io.*^araEz; Ey&W65jh}fŸ X/؝'w~)Ԥ : vENʒ"GaAR\=XҡL' AxVOSjxT^-*N'GYK߽[G#31=XHI&GjIDŠƘ!j\oE8OR+g52`?Kڋ{{t^6\Fendstream endobj 202 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3881 >> stream xW{xeP2%Ɉ*gu倂\ \ܡiܓ}$m^rm4R"" >*,_z|itl<̼n = dc.Y|fLΕ *Y {t}ǝK{N+-+0,5n^c{[[.Q {[`kuX26[=-6b-Ɩ`/`/bK92l.$6[bSP%$}2ʑuq7ħ(LC1^[`Q3vGvϮ{w[l*l_ܝJhJvJ9}'=W=b"r `^DzV-y hDNi zݪ>1!75 ̴8z]V9_gcr__0`4V.)=Ip;ɜRh.7H75O&Gdg9ʛxuq."H=BEF?ʅt s>2_^:#8.nbXi[fEcQ<ÀWFA>7^Y\[FeʾlmUx,v*W)(i&vWx7T_I@4O|k"s! Vi?b\̴BKǣ1YZL;xY9ʲ"@(KrҦh~FE)T…%k~A]?g #: ;&p GFPp0hxˊv/Vpt+࣎5_!pwO^)SԬuvuQȈp ws5/z|Ghr:4(vQ4δK#$\aO;Ju҄GcTwζWڮ]eXr4h<͞&0Uul! fw쁛7ቫT<(B4+~`-ߋyى9`^#hv^$R1T\4ЁjIx)7bw~'U$>nB> =hU\FlIVKqH]2iFݼB 0.?. d?5+*1ud= QM~@ݕ ̿ZlKm`+Z X8 PkD);p|p~2xR"%&ZgFgg6wm3`Oxx?MslhAĽ5W~qU@InA'f㴝1;fe!K^֯Jkb-Z/ֽy9DO?iPm*RQ6oorz|zg}I' 6 I`U?U6A: NV&_{#MZX+mPXxhfYY<]kh}ax܁cq-0DNUAkDwmu=xkv8Pԟ>Siq"hm.Z'vi>>Uՙo'_BR%=Qܠ3\tqY\f3L4TsGHmt?լԣhF.WK0F^mpUp TC4ARsNK֥e:OgI˭[B؍L/(RtS]&=r/]Gn8oD sWaPMJ؏٬rݙYҔdic?> /" %&g١)޺Epop%)& ]ad[><TϦT5Jr攌5NON}p)gqV~ Ϡ}ԫbJz#K#"ŴD]nK iǗx,%y2{Cx~hR2`EDCzIQ2d \9 N݌A>7o8z .TĜp\Slv.3Ԫ3 eIٚxQUEOMq48E&fS(9~}~WW"YJ7W +esJ96҉ C4R@2]}9-zLߠk1zc>cdN =cI8FS!=(5NS,ФM Pr(4[v"VΆ7˓p\j2w0%VҐeM2AƇXGb(R$t];oujbrji[- {h'3w'Ú%H4R1<p W]˘T(n;hb7y :6Y+ƭB;k.w'ד7SBk;]3 A'#bx-vIyfFRkY?N06&͛QQ੾E7w8w۟~0vJwG0k$zNP `dwwKf>9o* ~AsGYͤV5#R`4}č%|[^ CBPd=~[9ܙY̩tO$C,,>ՌfTsMlM/X|e* Ҟ'N> stream xmW{\SW=1pQ)*1IێZkjE]QAPJ@^!|! Ix D*v:jk:Uw39@^Zr@x|W.ZxY8iO\^x}7Tzy_ORrJڴu=(8 d[oϢ͔2FS\j;5 VR>TZMRkEZj@-6RKMԇʃPEyR^ $R!P}L>A_̿K$jz6= ﲥ,ӤINtRl/B 6Wܿ3^ oreDi)Vly(dSpDZY(cWZT"|^-Fj;-t5 own6U0Щ'7%e5q|W!jYJGfGxm^;s. ~-<uHъ:`\#bloOccG @iyT+@zkBdJBTvDBDeUzY_3?rLF O\A,k{oCa1,,:?!61E]4Od`fVl_)NtLtX)RXxyʛϻNm@u*Qgk+t%e"$g̪y,);#/y.8X:=l{)974Dc5`;}vq mbYx Yl7] }gC(5'yX` =>BP D !"x+wA1t%gJwzt2z"?}!%;G2Fy&:Ii> 6{gRW|PTrF`8 <(єffE4s9 2uL`WAWr~c?xG[QߙT(E؝F J6_WPZ^Qa4qH:iju:fmRG#{nOUT{bz7ҐPP-i =-?O dk!sfx69;h뉏P<:[{At>hԎ|5ڙ$RZIyr1)wjI]B_x8KY/_B[E0)\ LKjK{>\ lD8|Q :C>C0GOk;D b;x&8kr;ޱE(`*8K۴>{}^~]v4AqW݉u'J+gJ--הd2$<DFtilX;~GԀMc* U@/YH.YH~Z^za*fP;D05*MVt'ţ{<|aR!(V >bi}q''?Gne2 -`>gr7`^ޒhkʩ!J8ٰ3h'!Jm! 0iOPb/iJ)uD 6^;))҄h&O_ M]zi:г|CL)Vp=id=#pÀ`sk+>:矲wddŽ+cԸ-,vPŎo飆f2i4f.37?iTk{sT%wa$NɄ:X߅Nm= LjaWG̨y `/19՞=~ D;sս#i vEքtqHzkm(=KPC5OyBA8ȪĐ(g1ͼ74Q>_ s5i<"3 CYI=S~[?fIҦmQZ 6:Κؔ%MjZMo*б*㢌Q澹}~dͮ4wA)ZZM (.=#m]\ta9iYuJNl X,1dqk4 Fa1 |_}Hq"\KrFK3D[OYAuԚt(d ~h& z]ùh?9l {!Wx nqc`(QlFgzZ(W Ό"aliN+#{:"GOR4|o%0梸MƦ0uNT͵P :RƦ%ǯ&|E *f2fu C,L9O0v =+>Y&Z\7ulb2;w n1&Zr\*A[J"qtl[j9z]|`1<ל3MlhHJQg;W(F;M5dE(Z]R^=h.Թ&1SnQ4 ( Tj학?#u!g*ߧN5tp ֋b# ⨮u@CY N֋{N*M46yhNlW)ֱx<<xz}fkDc 3v'SmG_S\}K<[Sg2^&f u'm_}P&s&EC:%B0N!Ih6ڲw7F8Lz"612;r8dZĎiv<9zDJSL*O7WZ;oDCG;H2rWi-7+j%鎅EF҅{# E)D$ߥ 49e~z x)=')YyV0%!OcD= ~u%Ͻ.qY7{xH8XGE\s &0F@)ۑQe)M0{ȣeUt!T℗AQVWRQY;MŬ Z/d L*N ~vzGn(&{ nePS wtNhڠթ 7$wYzZѱcv"ڎQOr{'f"W߇X%nsů; sTfM{ ĉR.Ck/yV\iN+Bx ;x$b>hѵ {C Y:I׀kg|WQ[U}Pq /G7zFC~C?C>},h-%EeHˍ$вs`߱S!Εwj<g6uKLyzVY`~yg@nl$/}(6hpX7%`TTw#:>[ikVBMt3/~SqhrҐDN.RTZ))*j:+~K%{m$8DhRh_MI?"P*v[&hL\f^~&H 6om;5XrJuR [k Z6.xAI6Bk[ꔅMIW!Rjr!5ddݹInmM7?[endstream endobj 204 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 10111 >> stream xŚ Um; [YRMk(.( &NvkwfnQQAőQgFgo%߻Yt7Ehʼy9<ֽ[6{ '?gqc~}h!hcXϢUfT~ff|\hx|ɖ[Utiٲ+*Wn{c'|s/brҳ= 'xqKMǰXYXY#XY/Fc-eb-cf-g`deZŚZz55kilk 9yIYϲ泞c-`=Zz;ViAu!,k= k(ǺUg c*bbYlɢX?p{Ͼ^Wqm#G+_r`\'lT:'Lr3{_=X>3t'o|!0jE?yzޣ߶-BRWvh{C9*HҤ zPLɽBRN=Fx-'DR@SP" (>j({M=ELC !JN/KOXHO4ur $zK_P2n oŨ+/;b>g6t9t1I!V V"Z, (4Hż:$$l!GJAW'> њTLC|}p%!V$ 1ePoOt 9Ͱ |jk䝸ftDC8)J7 B++ @SҰ2IrRn?є1 S B G ⓢk;N30;Ks#?< $"h =8/#} {aѣc!ZyK?_9%p4ZMeMVvs+B-b67Ly}#ƻX8B _@}g8A}GBS@2IyKoW:;iiGL,1G |WqYf5Jth-zPom2l];ʻz1?k^TB@Ϣ ~i1z$~Gm\2Xa^ ^<Yom== D H9$Ө•* VғF^k.B'W0=ksڜ \@ަ@(qCKLuD*i) Q/8_gVq& cz5gޥl?kc!%FFo*bWzs4"aLrڊ^(‘\$GI MpUΟF7^Dk>|[J,&BA1p1G,rFx8^.%ۦ$5~_M<ܧ;:h-XjWM*{N_\h]VuWׅ6- A)!FReHNǍFpj<^ zÎDkc@H|JΈ5 B jZISdIZ-Р%b~hG Pq}l'lH:HQ;7+tOaMӪtE|%#¨.y2Vv;#HrrN3@ 4u%H&|UNavF!"f3ߍC:{̸;w۶_?AP'c/ڀx .\.Tѕv=!V*%O#TLQoPeFXt0Fwl.vJd3iЅ DE|I0Q~/L*C̢C9$ qO?3]Cn??C#wqwVW4?BcM@#Y0E[ј ^='@!2x+ +E-v_~|j\7Ug1PST-RX<Ϫ5pH#H*ܵihSӴd\sTWOefUݕx-Wt&-UV;O9bC>.5K;ºA3Wڑqfl^@>CI7M!/`VAUN ɕ147M*z:Ϣ(zAx`.RW5I [Lm!l~{?yxЏ嗓^Y瘁4JRIlI{x-U5b,n w"ҫIWВ\# Q9t7i"}>eBcD:%A~.ѩ FA46,SQBVHauڋ{ڨ0Vҗ OnSV}@T1QKCʮgggvCᬱ ށП 냝ZN[$A#d@Dczh^2л0ۯ;qN#^\d[l[lj*fHut=Q{ٹŵYs p&Ms+-5]q\8wm@)O \#T)1>`߾njzInE'xg$QUHJx1]_x擋ȋ(;nڑ!8rZҳ-Z seCzqqZ!D۽ ֧6JBVc F<$G8$L;$P '֦ͯɶpx7՛%JQQP}и7@::{385,4"=QY=,KBwpD@ثH7f u|F]VZVR^ JFH`~^S3RqUPxg?B^a|M=7w4E5݇ ̹MkzE`Fu-Gǧ}0-]VWkoOI=JT_}ƅ$)z!R+%S}#= [ӛ*pY:U;D+`_/:MBPfqŇ!69V'/N#KFܮkQ|4࢝z۾r4IbL?H; 7<~o,qW1VT-R,3 6?exobԚMBuEXcG3o3a:-*H8X >&v-UU%e.2,"ᰍg%OABm NeҚ R}{s- j:a⚣3RJI S"QDts'C=SƎ7ZE]sE)jW{UJ\#RL}vH 볎CذӰ}[DN)I|~\o3[f0@x7 a%Drz:slzL]Y|4d7@q$Ak/N-LL?߃˿$7mt.vmei:F^q\Rd҈s[a )%+,EEBQ/zQQ6EܵCР3op :RP%k |lgg8,_yeX]D{{3LfdΤθB=̌@TVT7p%TP˾%}mV__;IS8;tQ?a='9p;Wsxsx&5Ͱ9%KҒk~lpYRڤpFxQJlg3Wxb{7D L1&j5qW RDMꨖj5ʚV3vƸW|K+'#OP+їXfli(JdչݳþI,it!UId>.Z a 8nX)w6"Uz9DCp| +J1LL KEs^!ࢼiD c2bdiTP۹0VrPp:lI7@. iܬeF>prvang;bߘͳ{l^eTv1ƳTgOܻd0w 5z YrU)a7Lua=֦+2@ܔ_.99~ʞ,|H;'V`` {{bN8$ԼAQ A Nx,Kx%~K% 8,V1Bt[_>J~mZ6`dokbm[]f[o on0<جhnV#JaJ% A301qC}\ȩ@u#Ǡ⦃P$I90/ Id3h|riZfIB(^/@<SF0c>bnFfǧ9Fէ@7cQ*bc.1Q!w%`DoCX ^Yw B/D&y5EQGZ^NO kވ+--ި׸`>oC&v9vF[Rw.dFb~vl7]=ug"66tZ1434&H7Smu0ֺяN*--huP Q}D׉4 8->*+mQmaSy[tFRDr,&yniSctGmqG,g nO&[[:w;A ֧[CfrH܀p>'zo%J,fY!bnf&V.LƫUbpWι$tkgnz#x\{c[IB+Ʒ]3dFB ́;: sJi% p Dtqr/׊g&Yr:_s et| nNvF+kǠ_4s9Qܽ*Ŭ1>-,wa* òhsk2&UieCQDe5-Xˎ-]ue3ʕy3R)1 AxLvu:'D:-΄#HNzn9YJȠҬSUW4)j2Wy*XٵEj-:v }gQU2x{.N='oe vrηYhQtA\NrGt!";}xGηX>vomv(`LY]2ϛ/*ԋOI'.#ohoz+K(4h*alrhqBF vêlv>vt͢molV"74WQ鹉˧@`"r}v\2ډy6󇵳Z.}}`_ͽ~],.d᫭|޴޸gyaMDI'px6K|w|nhzƃ&6sq>ˆϢfΒt8>oow.nls r0DCz򳯣F -7.[ P>WΤ âreU y.?wwt!]@]2;1,׬*m*Pg߾LS9rm}sdrPR-ܼ'}u.Z1S6AV-lʪ꺮{Mz 4WfQ3I]$D8HVc69 lzQHL'2&Cwte͕jfډk&hudAE g@* 2ԟב:hf&obSO9>ƫ (!)2ITRW|OH ? q ),JJG?6q$= 3 }G_c ј£S/.Gy}ơo4kBbZwLH> stream xztTվsEь9(`DA@*Fғ=23{f2L$4i21 Avaz>C>&"={! g鬂LzcFݞ{{nS8+g^YUysso6o^ ٲpkE tGAѲ%ϾFa̋cǍiS_#1I, aOaR-Fb˱gJl< {{[fbYl6"6a7l2뇽=M`Ӱ#XŸ@l Ʋ!Xñ1 #1棸`v(k8\v}i{5'r> V{ߟ>xᡅn@ÉG>y3-WnuA#;+w`אHF?ﱯ<@LO%VCWDؓaaڧ{Oxf3gF<9B4Ǒ Fzi$Saޛ\-К5)"WYGs#/iޘ-jM@GСZ0X(МrW8{= G^Ɛ>\~$6 /Zyy.F%?+ܳ08ۂ;Veϛe9^.kcr:$2zI"*Js.g:WV\)htx ˽bz%_isʍ7m$#[Moq|h[qxlgUv6=,HKQbpB;/̊\(yAmkgr\ dGTJR줅0kV{hwnd_x_d_tY2F0RϷhÅR@ViTLo' 84{D'әty/R 3+hM aY髬[\\k1Xj@ i$4|_%([\|q SR*Qy9v=/H"K(קr킢5(6}{GYBģ@WV ޜt;x\W"93}4ɝ/PL.@5Əh_(Pq3E5$ﭢu놀+7,ґ [p=Mp/-]n{} ~:}&.fCcz>'` }'Oి_Hm:]&sAjON9eƯ0cʲz|c'+9Nݩ]o^| jQ= }]cguKW.(ifs-s#6כ_k y"^%B}wT Ώr=DB;~ UgMo[7a> ̀kDEE443oru3OY>=M d<4vޤzE"8E* {#{X8l#op%8R0w>Ɍ5ЫJFO+a6{I1πq`F1&Ky_ܐ r/݉3B BWgp'=XaP}JĕDЛu @d:@E e.X-cMG1sb^oJ@!*yDCFGmewwT*|N s"))bO9M6ٖ 7AS 9b|4ǧјycQ ld,8X$8е#+K`Mvk&l!Kp]Fb8߆e,?Ąs#\#K8 1,k>I\~*qB%G/{~3~j{ZAqvU8L&k8L *XuTQx[v@`V×}er6IJU`M'M2XLch C6<fqϭJµ #RfrL<} /x \xOH۴Gp5 p.3%k$jjYm9Y3OVa^`0^vtGhK y.a| ʆϦ_ū*! ucW?=rWQZbzŒwQP'ḵ,43QjڲH'W0әq`73eTFpOQ-x ӆekw"͐_a A6FToִvI+:ٍ>> C]iM{kPr @2}_`1UL\Rr\}Invi# 9Q[D]8'pjo)5 R0i|%nlUn`@M^a{i<sbZYǓ#ʙZGIm7?7Vdjֶ.(@ύX̜ 桱lz~vԺv`>__WІ W0D[ MBeRK*Qp~vn܎|E7,*M$"XMVg^'fNnfe&ob['mZXlI~Ҝ&E^UzH!QRTQp0 iv'HC:ocʎkpheq%}溝u;`xw  $*GbWPilGF<3UzXP 2d+ e,N~y #949U9&g^AE5F!-Wdj"!h!,@uZ rbzSDӄ0Ai_ۇ*ˋ̑/.q y -v㓰2G?orrU ۚvX HC<_&@/1/W1蔀,b52Zv7OH1aX=\$b$RY?1;#DeTL:BD[A4 bj HH_0/ Ydjl=!KQ%t.: ԭ>!bO")cjH * Ur-DFJƎdaq Mü2`Ɂ_߁&0 Xf_ <5qUȧPgTb8z= ɴ38l݈ǐZfB>QYBxzJvҮVM 4d ajD:dh<hp&0#ɋш26zg#L/,HmH KՔmv2i#nv|cc=H;.K:JBq1DW"R.^^Y*ϵ eM 8QWCnJZo3OL+ 5jH\U)K"#a[#QFKzZƄ_~ IF5bpTSF xhalreEErtA+"cwGfQܰ5yG_eO|uw#B,8DOJSAMF(ͬf~kgmL߃L2b7 x-FUTNsB~j;Bm@IS&Hnџ*PAYEz.£x]UVܹ.ܵ5̃3sSûh!2*qKXE[Q f}Fr>mwEmu:]ŷSs fJ!g`r{7ztv~ϺkW$h{Nς8fzW319twr49\󞓰 x xTNj m;嶍`H'Zze` Xlk[py8U58 WnǓwoL+x!A# d2S*g`'G`VJ3'Z)MbP#=}+Kf MgYv3CuȃhaͧB/o*3*X2\jf@Wƈ#R5`i$ʷׯUVWdDgg glœ3BV[;3/MIt"aIxd80o-;$ kDIv`QҤouz8I7wk}"`p}(yd"1M W_f#9bU71W7ع!#Ld3Mǩ` 3J-:ޡ6E;p-씚XyRS)&{&>`9Xʹt͆1dSٹ_J %C$<2X|oz"[~ L-D0`%pLrdc9$zӞw6Γg`)¢vԛ [+#\aLլQdDʝ21OFD ,S @S]OCq*aU>&iε:a]j/d̻nN{gþ{ /(O>ksfzyMw@+y;?xw (3d50"Qʐ߲sMp _}b5CpeWBS Qwmͤh7ƶIjRykc3[=8 hܙB JPtvói\G PnSP.Saj:݋h )f<.T vL񟢳ntZ}@ ̟Q1wKpR)yT(dF.xD\s`GQ;ADB2wm=!y(ჩ|)sXTH(A=" 9)*Ì~>S*ÉA9k8Gu~vpAGKq rZZ*\Ɓh&n}pYNg4-cDž~><B'ȢA<~MI&4R \*j8dTk&? 8>fUHBJxv?̩bs+ɆK+h#" Rd'_XHW!N-5!-_W.߼8gq ^8!Rdr"`x܅4<'Elˍc!Vz&>AtGF̳t {gNi@6{-H97{$xq4HѬ82kN|ʸ>9y|2]ZGdw'F;`W*(h_mw/H[#|tf3l,BէN'*/tJɪ]v;0}d-=oÙɄܠV })h#쐃E18فnˎ˛Gb+B =)z0UFܠAA ٹkR xp45y(&{q\d.'¾\T eq{'w7u_mTW֍ P-2RTS* AUHvzF }BmSɷqj_\]^PbG!TAk#- Ə;/I逊Jx 1Ch&Y߄B_`)o\+ᕃ;&f.-]r*DFJxsJ.YJUZbc^\REX$ig DI/?s`8gEn|s ,ʼ ^AH8doqtuw( Y3ׁ~t^Amo4Ӝυ?h<7&J5 _Fٝo0YM!>?z[(`0̚쇭\'=^>o¥swt S1_o|{ 1RT*߲6vR[ . "w2DpZmSfG?Jh212]|[5\US|4u-֝${] ص.&& ~Qz.$ ص4 8>H[6ӎ NpIUS?/}'d06S* 1jPMΜa%\\D W-߷Ģ jG|tүħe>x.,: :(};fl0]4M@ɦNwnJV$qiJ$x"5QԻMmߐNܚz)@­CBfЫZ*!7b ~6C%brTPԝ[\XFYo/`qI2?2+ 8|`~mv[j/3nC :V:)ǔ̔jQ>V)+-{~ y_ 3{ѝ9i@Lq.d؛9p7,'''u_{Ƞ-;*t~ˊD?G?9/ OP:RQGJY Tq24xF,z $b#m%@uAZjb<˵Z64#MW̍"KejjҊI+nUhj R5lʽouA?e.z{p*\rGv[>u!=+3*TEĆ< {1G3cFVV2V40B8H"wQ50/+S87 T,YRuh;(Sq{4 >'_Jj> stream x[ݏ(P=1oҨ 4Ծ"(>Vz.w.g&-5q8Ojyżݬ<qvY__ξza\7D̝^s旻Ӌ˟`1tmwr3cD$zGrFX{>o 67c{4fſ.MXZv>[D>=GP[#]bi0\ԮϙpDc[}9y{:-KxβM!lN&(q{~?)v oRYX:~AZϮڲݵ=Ev\imAѰ\^.K7N͏u \˘^W?(\rWL$s6y8 gslrHg2~F-"|xdRuw9M7BG+ߗ_.1L??- so,iq;Gw~P<PQ+2Hl_G2d|%:p5`i!؟ȩ -]F~Qr>@vR0dhն΃/VDZ?4ǹ|Q($ۓuբb'bomXDӢ'u* ^ꖐM{t tRHFkz|l}Yn}HHƔ='|nk8Z{[1Pz. eU6=s@qrW|S9apOKĐ ˞VGǕ˦ro<_5 kb({&U bP[`ؓDˈ7?G`Gdwv`Ht] ɎN} ke|*C~tw,%?&Kn 26dʕP4$M2K`+DF(P>1qcʕy-jMd>݌^&A(dn FDCKͤ)JM $5Y,.5c"A|+o` ^ᐥA/BpD b j`M~~DjRe~Ut*0!ʴ eMH*jg4,SI մ@v eoRAnWގyۧf 3ߓ"̷}G#A(cZդ2*0> yP O'kw{pCIWTn7AkOwCZ1Ih]J=`-=k,_)&WBdY.\ò(KSn i~ׁ~q"r3yt#[)2Ӻ+ S!zun7 / ؖR;ZB/KЋL釧~D[eRV3O2/J+ܗMb8G*6W_^gc "p6II%=&dѠ݉Ma| {ٜ*bUg=|aE=Ԃ|[kzh|w,AlӁ(3+BVSނC!Š5ȩĨ/4" v{qhƬ:soMocf)=yk9tء5;uQP\'~Qk3d_MӼZ\wB%Oc͊u5UCͶ57;tw8I n|C|Mk]6隬*ۂg{M.7VP1D`e*jnda78)K'(ZL-MŎ`cVjjC397jƑgb0$i2/µ6`9~LӗuTv}TrE_ 嫌 IR5e|AJapt#R>Ʊ,xA:O|<)B[}J{TʂpP;%cIG.;pL>._Ć$Dz;kɐrZpo:ɡ;{[˙sR2pp_XQ. Jn1e!V&>Z݌=~_rp p)$x0tG!#E!035zx1+R@:B<ݟ\Y5L~tI'4Sبtؑ2]&ae\װ3 n*)H%D)4S-iHБ<fi_Ŏ$3)ؘ4 L>}:Sh"G"_ :PӰ;qL=ziW`SÎ$MAU1Lcgzov5T/A]@ddJơ3 T7n*6%Zؑד^ bk,DZ_EBYҤӗikoG ~e&hO%*$.vqN԰# $AM\Ŏ$`3 ;*tߊI1V3XTNֈ S {cXYō94`*;oÎQVqЙ^LED ]F{ӰcPzD4Dl|$hLLհ[՛i1@Q؉D@6b#@ȵRPhn:~*">.bTdOMTu6=wáݗs'/_g_'$ݗM?Coi@[JnVxl` l ceo;r{|l3x 7V]o{ٷlS{拥8߽߽^`jP1qLDBq펡#bG&ZG"P"ܦf1 VMnh7fCn,g!8:/y&o !Q%>$| Wv}C c9 B(Ӊ,n3?钯@yu`inZN}3N("xa_Pd_kI 1G"sYM3qT6^jڲD>F"D!Hȫ^s:9qEفuߕ7|O,Tg 2?_gi:mq/l${endstream endobj 207 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2273 >> stream xU{trDY:CUTH}A+/@QD@؝ɾnv7~̒X P >xiR_՞ܥsIDiΙ3sfww 㨂E˗WΜ9sC"BEONWD^LC㦦-5׮P˭3fRC2ZNS-ԣBjZJMʨIdESq/^[WU0[qNJOk\ıWƲ\. W"t֖DE +`25 kód(5FtJ<|oOD_C^vd9|;%:)&(U2Q]r.*RbY0 MVO #c<#t .dd U ?%eEz ŭx2fzn '&t)|7w[cք9t#Ga0hGAOXMNVctb2c% QR9 StՈ:WB.v)q䍃H4(r Gͨw(]yY6wvݽsz!##jWf/DmAh!ּT=T7v_|b{=H"D A d2m9!]:I䘃B_EA.ޑ<7m9Vi[W )AV :l:`?x֢MϘjӤlzٶ`[`Y+wuk ͢_I-[xb/Wׁx0P[ʔ(9 %fR;!ߛҮ}hTJbP蚭,q4-9ğ#Ϡ2" c"Itɢ3 I7R4ɚQ9;3b@ǒA3߲Iw*.զi6ݸ72_m,sU9:妃Ճ܅ѻ9z6! lJ Dѡ1t0Gz H! A ڴcHp.'s4p%:5 9T,G͏z>j}x$0Of}^d:uk/S`j7"9=q$c!D.syqW+cq\VC\ѮQ\߽evg('>'/+t))5Js0?b9 ImdtPow,F%c9oNl{ kkkc14,s/eCBEeJ]*Tդ 2H&#^+X6VS8"'Hz;GΛw=he%g@7Ŧ3Jp";0roi1*JKPi9EUendstream endobj 208 0 obj << /Filter /FlateDecode /Length 3321 >> stream x\[o~ߐR;-TF;i%O;Z~o/9~KJJb5c!g(^!YR¦4bBֶN\Lv<_ZL#N)>=>!lj$7ubz|1G?@)2?tR1"c'hZKR,z^}9J.[8W-Vf\pEu,К8Ǫblf3É%BKkE10tgQc<¨H`#'gabX$4[I#F9@}˲,fLWڤ.h+덗4*+cAB˦* 7ލ2F{c6go^pG{k'5aU ӂ_} 5_uZUh} 5[KhCh~@7qΥmQ&ڣ@_D?k`Ç>x"ѧl6~Ɣ[7jǸד??N'ѮZf$KTg> *<ܾ7x֩~=냩_mRu4o˸~h@J}Wbyh.T˖|Y,1]~X;A$e 6,e v}Z*),N }}0f`d"@,dG&ڗԽ[|X@|0tm;ݟ:Ҋ`SXiznI8d-<` 6 ';Q׀ԋK`S鄀టSυ< U%`~D;-lڃa4TM0D8=qX,>otَS!#Dt 4ci~5Bw0)C|08o /!' Cw!GkE~TY~ꈰg`>>"os[~w7],]]%ݧd1bGTtkU!d7RB5-L#l+<0TDhs#Zo wZl鉍_g!#7@e@+zaD}Y/:E@G 9:Kp:y<#oȴUv[Ǵn۾ծZlSRˡKAy{; ҫ9r _ZC0-ij }dUHdڐNSz>Bz[/x߮3(1-QfĦ^^nAW| _T5.zuLͅKJlHL< lz\QLfrk hh#6D*:}؋ψ9҇>&Z!Kڃ+2>v.£x[Db5aT ʵ+o@P.c#YN{`I9AZK,QzAƏOGY(JNiMQ-lgnς;$8Yab^];>ޣ)tY﷝X ?$ BH[Ѓc:hQTV-b֢Zנ漷5j p,EJ`^JzkG*u/ixI|QZ$%$V@徧ײ1N>MM<V7̀ߚj3@[Nw_t]3x 7(E5*L M?pD)Y5t86 p:pmbD׍ ݺκ\pGb+I\~5dHM}ZghM'G)|I <ۇ#ٹxTs=xaq 4C7@c}nnsxzU/c6>(q:aU;~U6OnqŠMkn༰MK,.D0q;/~/S)^ه3h }yB VXx]Ԑa Pp9yK/"ٞk݅Sx7L;G37õ(UVӃ$#r*\rVpQP84w +ȩi _!-Rdp?[XjN9 r s>A^4lG>LҀaY,ѩӚCpc4uk20QQ;/P܏ܳ؎`qR0F-]m4$PK WˡDވ0YcH-`]ɜOA2 УK^ɀǏ^$AnYT .k(_@D,d(IpOv#ubB>^jDVݙ3R .v5)4e j#OFuCA7hBeSn~qy`%t%}@jy5 Pfp3<&L;Lt'&jBUJB*<?IMK'\N΃QO/`Ez`Gb1ou Kːb}]Xf? ?c $im^mxn~gAmZՆg'IQRmmqX>1cle\ZUJZf9E)jV˘Av'LMψV?r-z]'qLm&R!;|iыQ%K+(G8g8bT Ѧ2=%)T =\k<Ѳ1;ȪETgXTzc{r3KL\v+ʿˤP 9fm(]KC6~?[ݤ!S ;ICLQ- |;|endstream endobj 209 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1423 >> stream x]Smlun0@ܙ@4Ë@ccƺzmwϵ׻[[ : @ (h$̿P? {h4V[zϿ/S<[h!Gu'aޭW3ogMYN &7Txɻz ۈa5؛؇K0$a4ok`ӮԽɺ'YUiWnڪlCrP֠7кQ@oa24< G&G0&CCsKΠbh*:x搋bL6G{?-o/.9duE%v_}EPrzFZ.k^բlx@FrA-D !f[zW5M+ ^nA%A|Ziw(q鷋h$2- x {'D/̳dJB+RS nWMId"v}0es2ii.<)Rzޓh4*҃G:A)x|ԙ˽vNa}C%,y~^DȰW U׶o +PϺr(}x.zk4N7^Ԃ4D3*u5;ye7{{B~ZI7OoW-{i#RYhqɰHչGjD:mGZcm]tuw_2{4hU RZ,qVa/+渽7Vw(\ZzfdIa&ar=l_kE#]\Hzxx/q6mf-N pGCd]?DNQCCdC-L~ab$}_6Z< "x'&DJFd\yOey-PrU.D4s;90T``&B& ,8 v&+vgц(1W:`'q||,y*#CK W1! +h DžN!J CR;G"GƠ Dd̵Јӑd@_}/~f+I(>Ѡ3+Me-FcpP W)p7{k6!۬ wz^5 II\Li2zŨ%NiBe9 ր'Df頬~AMALg="<6NVvB= )6jD> stream xUKhAgF$Hm( *Z=@lLiFv&hI>F-m*XZzqQAAPU: 2 3  * a{./}u~ s+fXf0̒'::'Z;^!dklա(2"Av5*B2Ռ͘fKxI*Y= |IY.M$<ۼY,p㐒ʼn&&ʃM, MxG(z}pb5KS Tfq}\W-՞xkx3fKJ:s0=HA2^qc4 R@}a~2(#ՎxZxjUT(Sd0tew6!x_˘3`5]xIpmȐ0Gtu=.>%jn\KxT9q%.#*"͸z W5W{J+$u-Ewt3Ll+Ag_?!C }\ ؕǥy'L٫d  wæ]#/GdU%ER%EN RqacBL6t0_qfvx7}y7W?*^UYTY h2sfEMTBvCs?cNeaInv:͚Ӷg;*ԓ;YUa3ZllFvudB`zg^f#ؿZؽh[ڱ+M0endstream endobj 211 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2124 >> stream xiTT80 #Z񶤱sI5h qV҈"bD0BdgXfxQY`UTX b<3yIO߁ci~{}1nH$ X:{e CwAV7m<_^z$maf<9Ev{Τ]a0kuL&ͬ`L#e3槌xJe (mT^%nn݆ߓH$$gص<{8zCcYL'v>ۮ6͕ 0 JI|w9_U)+5drIwl`Ф핾bgW Cد|&:m4Y!*?:CA_H//[ew[[NϠPX jӠF@KosUev4cB(3%sLRL{tGpK&}qԭ㽦a9 v6po'4gH߱M\*a v@WC`njбՐ} vU b€an /ޘ741C$~qi(FX*+ԅb:Ůbp`bL|~`7PI&%p^_Z._sQH380yY fɍrU0dc5nĪKh`n6@c8,hA]q"!?s-.]ÀkGzhӸ? jwڄ#]@K*)VA>kȫ2cɕ%5^8#P (唫uiU[lCq,z>=s`5 !PJP` Wj*],- p`.%lJ$U&pzP;$4Cwxc3/R.B17e6&fd$YVcSHE>5Estс ph'uwd30zC{h^P^/1a} fMvl W_,ө[lMOb+ͣ]Rc) rbw=Q;jO\PMP_+ItُLF(-KO5qCFv&OS.i P3h/y.C1E=13$·TED`ҕ&+Οvgݦf678[jl SrJ52Sٓ}}r3E. ]%$=!biO௬8US#JKJS(;)g;"77I.ۍ.g4't"<e;x#aԥ!n-Xk[k2u?r|h!)*ACmrd`͢f'8r;Jƽ ^M}@XI +aYQUTNWlJPЗ0lݧp"c"zcӢhp Gzme)mpȦKSw9=>ehTZr*^{Xt9Y윏/}1TX},zrVreO\рap!raGE9WY+) k0xtHљTu/dEMہ:npz֢Կ/bZ,)?h aBJ. k+x#{FdT) K0Z߉;J^m..ˇPkIЀbݶז;6-LajZC\ZKRFH mV dn 'H3̿xendstream endobj 212 0 obj << /Filter /FlateDecode /Length 4398 >> stream x\[o~K`}$3(R [`mݠmR) 5^D=EHzw <,$wyH?ݟEwg?v˳/s"Iݙzg"9ʲ" ~~? X=$DS4'L$Ƙ<̓YWUF"+Zm8#`vCÊ<ɂ7!~ Xƙ~iA3@$ʂ>YXYډUOs <Û銧~E#y^\D5x)8̓e3-7g",yH$aTA;/=$Pp&tvǴ< N.K.?ضUmoG)C I ib@6JB ̀߬68E񢆋END nh?\n}Z|wմ(8U0ZzY;iOE\8!WavbiP#<'uHS@+"nsae&B!#ePB`j#8%Oi%A=hσ,ljxF$AT<(tK{GG-@D&RN!JiDZߊ@Uqi=عDvz:Mnf;mi($$".8*vԫFp.V&MLDJgP,̢T7&Wlᢩ5P."GFF'ݭuYfSy0`bxh<@.M.o"@f >#eV&/x`Đ,zym0kta$0rl9Y"U痫M¤ȵ=*LzAXE=p^+!ۇx x$E;~_I'i~1♈]gw%F9a e8}j3ePY9+|l 6S l.v#s3ʊk9K:Wt̓58J~A(D'N,F;h"d)~v<)q$\2>x3X.Ece3GoǏ%AUWbL:4I^ >Nw0$hMPu6,ث̖T֗ŽwzD~ ^Nj+;cus8J ,IS(8nw (Muhz/18΋kLG{6%B<ҝ[x-[%|:ˋEDv%#~k(r;|Ґ I2g3;aβ9sƯNG@K S$!?+NQjEVkWʊ0Fvm3|<0q(-i{?' Tƙa($eKNoAC@oI4 #ͥ@\>'Y'G 7JX{Sews&.S4 8(p >U8D%(菁LjW co}(#c/z.\A  >=%*LwvDq!'bB9~Vw5eV\) QօUx"@\/Mrf,Nɵq3ǃbAiF=r<e(ϖfaacd֧pxI. 'b'L2XgSs)ggZݢR057niP:xT0Җf˿wywK˚vL 孅556e)wE٦ty`Yc]hRlHMHh8tvCOX.oT߫Hed!Μryut%:'i?+,0QZbA”dbA$WxkgFIH:jTܶ6nXlrߕ϶mΊcz0 {7?Hg39 &q opOXC|8 p#t 9-8A޶՗0 ~&NOͩx/#>,eJ!^a;}\)茇ԕqP=B8UCv%,2heo9x D{1W(HwZat:}Td{_+[7ʹ1ߗŜd n0D GeiaZy<.,UA_.Ղẙ)\iyhoNX%0,Kxth߰%@[+>a ' [{ Rhh( ]9LYdJĨx-#ǿq9z(%c_67vZ Js`P|}=٥_xB{LUva;x- Uo)a)`A1 Su;ɉm[({.ҧt `ht0DODYOH5G`U> `GDiɆ޿k؆yQ6qs@[-AXz P?}C3 N(jK7X9bcTxVnW OYAԄ_rzaZiNV#< N,ey">=ٵ{ @2=]G("<"./fiK,'}u9a*Q;sJu|i;Ad[;ęWJ'y u%<ȠTbmo#q ideJ/2ylX<_I 'Ϧe*=yp˷+}8O(l٤pVo N!'vsҴ$L&{ >aӠA|:Ka"ӟ ZYendstream endobj 213 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 171 >> stream xcd`ab`dd v 144q$2!{@Q!=?~>0cB߳;~'hyGmEw9^ ^^emwn]!`z&vO1ca嬲bf#O;0endstream endobj 214 0 obj << /Filter /FlateDecode /Length 3403 >> stream x[[s~oȃ}Kng٦N<$ZJ$Ki >H-_3}#|?NM29&˓'7.N2\ܜWؤ4TeK>؜$LM/~77rE.4'vc,XWZJfg]&w3z%M[N4EY&7OJ>tTeRaIvv2'ݪgI<>c yjvúL6 1]З ,1ǓqmqE1{NˌbV~2W:YjSoպgO Sk)ӬlNW`d}IY"͍D,XYF-/Tpf,ez&dkԅfMI膬XhMŷw[`Ww"O aRA/e5TYX%;z5:^fE.o?Aozi'REYguȽUTƷGy<9cf?ȉ75Wfzƒ6 +=]ʽ()n^yz sޞ 0ιLN{o"1Χ^3Gp*2A&O>y6%P,OL٘ >4FKz876)_"vƭwg^G.&0dxAY˪I8R%,%.IHIيv sMU?ƿ< sgh,Gz2F*$.= sa=USyA'F5UB7y>XFovw/tR-<}q H׽f3R2<-w!".CR2҇$-]Zru{#㑕 ӝ<8Ͱp&̰"=5Hr2B1kk\3^DhERxt8Cg{2y:MM),TW(3|Hypx<|ϕ Gd =q`\>ׇTm6ĞB^*E$Ń,r .R CUfk lG8"Yq779 MdE Yߐ+^/$=c:OLq nܨ{:ˊv8H)YLT8TB+j6ͨ`%ڰiEZt,ڊ۞MA]1K,ܯK#51 uGӨ@{J jf~3fDŽHnf=]5`GKY:~1i-\Jj~10N iv]MSv B**D*-u<8P="kV0@BYV[|(;1 ԯc9wL癳Xm^7sP95ʵ-qA H`7Oojށ~AdԮueTġtT*3*iSN[\d%iA^^L%e2s>E\CsB:mtq*K,j6dL  56m rzrV .I;[" t:f3 EBASsfIQ҈7H,{)a݋ms ̣ӯ֫ݪS zf9BTϬ4F` cVI i lHT,5`IӮ\PDCH>i#~"( dlϬ(S*q~WDEBJs7\D t~&y<.9g@逃8h4;U,Z*` *;D,C"V::"ˋ9H\vysȻ8a3Fq=x qdpeLG^ !Lظae}mT I.pGSmw3P9+8:'o\Ts^t ={4cy{3(2A> XʽBs:" ^8Dͧc<^pzU*97+Qog㤱@wnǏ˶Cr n_t E5LZ}ŀz !Wmr[yb%ٯd:mLIp^aImǠX)ܝ C)<vNx&dC˹)/ "eh9WYyuex*)TAJGZ?yySw၀n0K42xWL@qڝX3 1l&F!᧕HvPk4~x+6"z~5|̓??ѓ5V*o F,V k,׽^hr{{(yWoa ̓k.KŃo6M^\|=$G5sX橭@o>Y?Wþ̿}`.~ΩOFз[vuv#"sF^X`3*0m1#iPA׎!~dvTkqۀѮbB>~֧Xh,|z]nW0ihE‡SwkوER-G^-NvlP w޼~; S 7T©]6F6܏6yK$ KO/C~xV0ez>/*endstream endobj 215 0 obj << /Filter /FlateDecode /Length 5963 >> stream x]ێǑ}hp_jv9{v.(.lPmL9B 54߈DFUd/,Ū訪̌9٬a3j3۳i3_}FqvNo^\k&10q6g<Ɇy7w{M3p~/^ca'?Ç7CqDkry$;sctNaB{تXg?Ì/ ~4& 5ڍs%=O*z1xsWvx(bp!arup*)PgCYq̖snܞ9 bspp ouPqiswFۼ->=Cicaf0:xT>ALVrю`T\i 5)LEkx~l@U1#)\e961phR lnb&5BEGo,ֳ0i34.499<}`kUM8뼞Rim3677*X(GRp% ܔ`5ZÔ+թ%&.`egQa8 ”1'= dwR#6+o0K̂|qsCR TdqpWW7㏋&=Z]k8x L08RJ V F*I]/X*% tCc&1 A&I `ҳ n,4pcZ; S Z)@D$L #,;{N T"x?0N4Xu@'@^ѥ'fMK5h<I(U>M3i|9zOˆT$Ha> ǕSX ~PRI ֕9jpqJ9! `#BwGIC108O 9 `(:N=~ OheCX$)%$`>IOsȮlp)*AF:y%0_fH3g^BwY#zsL$GII: ң|"WHS1d\rU#PiZG.,zaN*3B9WLt^< ؘ  /ujL)@3d1A6j3Av & d7m%i9D bvMP" r2AngZaf g&(Ɋ r>c 'Ev&;y Leg& JgLq 25L b177c L3Ed|e ޟ]MOPDhpvD0B[ TJm!yhV}+<]hGr#68m +ZG 9En.|R --hK1(&y_!:(XymJ\D"ѐ[c}KLFP+KCry5Y'͈ zFxS@3 ̴hDTFϓ&p&C h8FGX<o8F88Fz߂sF4 <$T3xThR&ZfP;pnO \WXM08gS# oר/A<!IH2# D6u_uhzv(zvJ!k,tr/8$K)D !ˌN)"QȚGEtW LiBn]jS0R8lEK:SHnsT0$94$9'v &!9SX yT*C^8b Xqb.Kc 9㩓q|0ސ>8d Ʊ4qIZ/`p<@;q W$ye`F $qG3K1ah8/. W'K6 .W3iQ@L)qQu5M>'ךgQ"q8'Y$Xa`qH#҂F) @ xJ\$*.vj/lcK@g'E_u}U-zRb{EmW%G_hj&MߣGlSGo^-n|lS/=6d&;-7`WAUcʹԦ0n29/V`lD|KP&#b$YõTja&x#dQ=.k$v vTs]k:d 51ިe'6؟TDߺdMfnՓNu,]y[gb1xWNe$hU.@Fu*$rFLZ#=~'k-ъm 7 UΪOIR;:RZlS#qNF'rK`}je1ΒU3N H9&^Bk=nQ>8 ëV`@JZ?ݩ*swb6ֺ16[wcl^Lؘ  ,ub$X;kbT&voL 5AA&H^䦹:``/MPB r1A&(9 G,Z!LLL9Y5AgLSH8-b-?3AL|`L 2ܰ HL1 /A3 k +TPǹIIWi} I]Q+yA/ؚ<[#++n~%w~M$g =$?p5ϑ\CK23: O@%|SrRI[Wd%^q%0~QAVT)JFV;HLd'$A$FZ&I:KP3I$$P\5!P5ķC$[^ =qakNȆoܮChw=#| n _jn{5^!~ << "D swU*\!I"/iNEPos+<^E㙣_82l;d2yj1- < cuCaȞ1RP_]g7骶_p 9Xw5(D<v =8W.,.2E5|`GvrdGLcl3{Tu2q7M|k_quՎG׹tFjSհd@t1 Nųv ;~\pu4&*s C <^ d=l:16PV.] <9\cc'Rwi~Wܷvm;(02UKOfϋ> ]Nm:~`U ;9ٞh_tɎbǶyE_:y5V2_b_rNh&Y7Mi;g9@q\>:XWuu9i+ yMeRrX^L`Zl,oO׎oO,KO[Z/v2P+JS6Nnw-%|+fݱ7c~fyfG pއCvB?~F|d {6e1.>oT7_?4{6eN.gyPvGq,\F6Kv-C_19#7`p nY;F.[y͎-;6hunMD|1bɐ:ڞc"EzQ;O͖|ӻwپb@x&Ej^? YWʳt%ɇ6.=;ohctXmh3VԀ߳q8ޑE.< Y˹t1P@g}[AܬGK8|C~M')W+nuumѠx̖b-P ,pSÛfsvzaXld$K\T=8Mj>ߏZ=ͬGm ogeԨ^{7נendstream endobj 216 0 obj << /Filter /FlateDecode /Length 8909 >> stream x]ے$q}_:n{XUd"drA:$: 9ӻ;\=K JLZ2:T H9Bn}志g7g&Y7?{v1c<{~1] <.ǭq?2i K禄 [b-< %[3,g_w} W ;#Oqe2u6 q.%r+0mgloJoNi<q&GN'!gg/C۳Vrsl케X;moLCw&ȯvc5ws>C:˼S>~_n:0D'q<[v00|##:_PVkኞc?9є|h]>CW[J$sqt?|P\n֫W3%[o#xGq܇o'< nwaF1..`=dg~*_7o!]ߗn|k>xP:~pC蜺_'|^ ׹C;qY"щ'FLjC_~UqxRr&"z^8ږA)9D͚y-<ҝp-ad $9d>ovp}l9T p0:z~{-9l $$;椫fas'I yǬhfz) =tǺbpyxx/W8x_$/ۧV2AR!9Յ0IM~ܥ7ayv,vkZ#_̮bIJۗeN4.Z?^ϩ^sjz}}z"8MU\0UǦG<~Ii{zBP [e 8v'zfbh2 "?>|8}S঍y f?m o!(lNK]f̀홝 $ZpKb`rq(Q"P5$ZeGxvU@A_IT32+Л0MfA݌f84N9Ouy\*8 pl$ Gt Xql|oC2/@ Aa'0GaxeՈhUh{F3N=" y5<( \oBZrB~-&6^f|z_8@-"]a{N0}ߴs>fEi ,D \||||b_7B0d X<& дˀ,U h ^pE#Z"̸Ao`fcCK`q,Qcq2؀%`\7gCxaNWK&„7 /("X&eA[[M" t4FPg[Op%PB/@Cp0O- /XT+I#ܼDFY,.(RɃ,0=u da8.F'z!,p+c/,PYR̖rwiI ̠甖ҒKXJJKwic#,e% 4d/`oqRRZJKvna)@Z$G>ϩYgKȕ'dY4ϩ>AH49Ibj?4c| rB Qhf*>N<;jQ)J%:;TiWo;Xd;z{ɕl){u"։E:iTɌT3NNt.TNNnOvXt1Z%j(s 8 'cs 5M1 <[~y ~ a$|ع!xp^^lC*ٿ*dY@ϒ4aZϥ%n1dО$8R.#I7\^UbaO0)$ʬ"lEIbWޗXYeټd{jBO^h*6M)<;JQI8;T)Wn; Xd;j{ȵj){u"։EɊfTɉTޤsNNtT63NV2OvW4)lZgj?AÃLNOUBtt`ұK7;aRRm;yuXב_(Tա3Ey;ԩU1pDɾ'hP#=D QBHiRK˲t[;-;"Q I-6;TV-l;W d-VR\ xϋ{?/T~ hGJ0 0Ui4*F+mo6`ݼ=\]_?6&|!weKn.%}sfs#[N|q\=l6h]Uet7[w [Iǧ=T Ӽ<(|TA:n}D jK#B H(H>xRvzPI_Pz[Zoz[ZxgԻ|/7`nکhƼCdQ,QLU,- Z]ʖ-":suh -₏ ([Z&oAeK-"DA"ջew9V9(-KʖSz rwzByChXZh@Z5/JoEgUJoE")5O(AYZ͏eoEٕ"K +ESYzYƸ[diQ T([diQsTCNcJoEyK--jZ-[d9T/'snҢɆYЬYNeҙbڪ-(|V4[-B-MS T \fAVQ_b[a(|6[*ړlay2VQNQs?TgE&xgY%* F֠I 4WO"@]r`]*B;(9v#^~c|n =ާx>ؽWűBr%+_̘LYzXe(IM^")) !m)ݍ[BR|ǜ%ci{=! lYҾHhhӞ|T>mgHZ|%&6LRpKÄY_yR8Lmn` MNK`;oz[B%dF ,#t+KKJZWГzCZB[J}*,ߥ%jCi$7V_7IKXS Kq\i--yK$Ғ4&,+SVZҔ2%GiɡCXJt%G)a)LZZE-5%GViWXJĥ%ya(L --L:ҒIZ2y K!8i$(-(d•LR*4~ Cdm }(JKZJSc\ih&UZ5$+qqZ؆qK%{?6uppYwlA{ݺZ[J[;{\+;hg2YK:&gK 6Ff>-Et"Tފpp8 %`w Y(p;[)Hn"&ɷ*6WrR@椞bvKXd7UEK!-1֜mb0"QDatesb!0ZROFʅ@qy*%[=ke#m$%-HR`Ң#8Nk<%TjR N-J;U[-FV2ZKo亖*g*I'Y9:KJ']l䮓$Q呝TS:e*q'VizYS^aFdZ_]]z̯ꣃ_L뱔u3/$P:U*0ՀBTȱ:aա ^A`s28m~ȴiTZ R2+O%3L>?Ӻ#j%^25:.L2eK)0ɷחg֗˿\^2ki n]yWY-w:+bu;r{XcUZ]n'Qu3ɕM 'ZdҞ1Y:buJd9C T@f!L䛰V4H2hR#в#MEK RBIRL 7S #"b#XWkc%Rb#URYC'($fd0s*vuRuNELvNĵܪX':V[_Fzf'^҉;*6Չq8ce'ɝb"h鰑b,jSTSbaE._ӽVՠVZ( uNG T=ݥoZ)j1֤ݪֿt=_aϫz?W~bbvwX =Jc3/?N1_h/*4 y뷗_$.j+P㨂xQuߺ@rQE=G%MG#P2cHPGk T}bk*#*>dDs_QboyC1]Ac=C^ֺzCATFzS*Jԋuư:cX*H?Fz#]z%zzPP=u*%Tz^SP=%*/zUP=ߪ%j :X@yo|=? Ebt(ۻf޿\Q=o5]kyv(,ҵD+ҕQ\(teW":s*]++]C JWFQ+ҕQT(tEEZ(+]ŕJWFq+ҕQ\ڋ\Ջ\ҕQ^y=W2+]EJWTZQҵQ #jteФ"W2+]9:SkEJWFQ+ҵ ՉҕQfZZQҕQT(teU2+]{ D(@\ZQҕQT(teU2+]:s\y rbteUڛ+]ŕJWFq+ҕQ\quteW2T2V2*]ĕ ҵDkOA j+ҕQT(tjrkq+cҕA\5Z(teC%*]EJWFQ+ҵ[ҵҕ1T teU2+]EJמ $TGJ׊JWFq+ҕQ\ʨXnBEwKuZP=uZ+]JWFq+ޒJoJ׎j&V͵ҕA[\(te>te[-YSj+](ŕ+%+]VzKV Bqd+ҕQ\([ҕQsDk/!P'%*]EJWFM+%+]WzKVrdҕQNZʠZʘed+fdk/S$ҕQA-teWrZA%?|-7+>/|awo2m~}_:O_~%?}#merS{'ٟA}]wvUۯKt~P̳ 9_~ 6]w>|xNŸ--Y p}qPa[pO {[wW AP~4t 56}4 joEKbw.9 ]jR>u Ǘ:n߈q $a[o2۫C: C`})~JfOl.7%a Y@|iӍgxǾ#$/`˔>*@_zرd8Na71oREpy|q/>VFɌ0`'[yFm~cYʏԧ3s $̄d6n_n1~ys+xE[>\>>Chx~Lޗz!?榳+r_?Zvt9=w{i=p Zs*WO/ CYp<\i)F\CEws'+ rh_WփkqCLԷ2{pd|Gc|h BeO|9l52c^ЙOT? !Ob? w|4[ :8^A0?? 5>B;?,2ü̑f?CJג7F\k;>6=}Ϗ ,Ԗo?kQ%tOr㛃_O{a(oq|)Yts-:.?endstream endobj 217 0 obj << /Filter /FlateDecode /Length 3202 >> stream x[;!:B~VIK[E:.wX<=4^+#WO}=qJbpV7?twwX泯^ UZg&6+J'XK+Wo׬dqc\? a?kf3y~څqz#/3_7qusoj/EqX+gK' gJ )t>%x }фH `qjwQDe8NB.ͫtNa eu2=)1X9듍z#iŋ{2Ca=ÒϾzm)V5ָԻ-a(zÙS]MteɀA_–Z7((٣m֢* )>f5}ܞRS؅]OѦВw~ʭԚ1},8@yχ)R?L..-4<wOkZJ[3]4nTzm}q[vMj R)ӝ{'՟viTdQ%z{>ino"`hۂ-eL|؈F# [HXN哱ɈqJU u!ZWLb# `fF_2ui,8MQOxl=h8yߞؽԶ\=&깠TyL:3eRWr2:W w'M]|TM^Үj ;7yQ"Lm\qmip8<tH;8 )q뼑6dDO=:u$f_=`/Pp픈ʡt>-"r V4M$(_m@V = $cnWTpΦi-I#AL6 ؾ[`.y}x|~: Ȱ*~>ZK&}vVM'n7.~+8D hb9sFoBDb1@s(`aZ. m4Bví'aM49F xY}Bs'sUnDo%N5 !ZfPl-1Jnc+;$ADűo?ǰ^zC rגnsvU )ӱ":f[_\*>b#n(}8abKи3)C׎js/L7_K/MLd#_![08u__jL<``)ʰ)r6pftT&`+sb_%f궳e&0'G3er#xͥ?c2f! ]TYf"d>-ĶơDچj4T,xHDmNIOvߐ@eeA# C՘Nmk95*aA+ƣ_^Rd2|X]+%s%6B'yA_&JgN03Rz%GҴH!Pli-,9Z o.ʗa%z̘3 orϜ@/:(  e\jD.h#^|q2T E,bwЭ@Q0adA uS)|>N6JE:TzPMTD}KRY!KL ʍz͠ % )3@kpg%0P0ÁmCO~ş *Y. ,z,# <]<νc_;oﱱ;*8QKZ:)[Ww)Ʌf%O%\!5L;&szU͛g1was:k.Ǜ=.CҴ<̰K̊'O̬Xcэ2wر]Œ:s1k2cpa!jPLQ ,Chw^(F!\%jW `H,FiIL bo:FuN5m_ Y'K].]27Iꦡ).w~C.CtJ U4~{bt;O)XU8x[XNP[횆ގ=RDM6ǧSWM|ռ&/3ӺLM6##ɏ+ o% ~7%m(liuOIAKUUӆF%DC~WPb,٩x>AJ"v[|ᾉY8,Uˁ~~/?v@aXB^ {zx`?!Օp/!0a%~z*?H劧F5Gt٤Ծ:EzoQqrkݒc(xc"w?6^C!%)>jig{-jЋ_vg?E+ܾM xBЖfei6Jy=Ft/noendstream endobj 218 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3381 >> stream xW{TSW>1r1dsN[mkqڎZT|#*D G'% NHHTEgZZf5쬬Y{bB L [i7 nFA'6?=5!3#%Ksy|yRrѶi;#%Q g"HD&b B,#a; "XI, VkD!"BN ~'PM>% ~8~TROPF4O" h <3Y6yd)qۄ ;)6-K:(fTZ#%X$jiwot|6(:3 D[mX$LBfi<,5Ꮬx}| E.Kx6J}ߚ]u[?4 Dw|tl}g=[ IʾEf@|ERδx6IV|۾6jjҘ&E_q/z+`$4.\.n+Ĭwx:$919A!nU8<>8~>F~i{悸VUH`qlBlGJ2n{\y]oނ%ITzcJM~xbQaƮ_`yƳ/2Fc"Y`: **ח%oŢ uXr!c_ 3pVjly z`UVF/QhqFpQKmlYN9lR3fOLtM~x#՗W~{Y91QۙiŪ9# \ZF]ƅ,WZAt@3Q-,t?h8G+@AoϟpyϸSmC5JUEPD .ԡ{8ѹmUʍFs7A+IhyyPI,y2X)^TṼyd}V_y [lvʤu\ HMXP1hkH6AǠՄ $6U5 \ioi`3qG4=p:cztf'EWj BjeEPSAZW{oXcmSogua;Xtp?gh)%CB1IJ8Z1YJ%)EF)O񻘦D<#q64xQl:S>,d`k-fj3u1ާ8!9f1v Vf.^ٛ v§^'HdkF%C2Ǻ%v- -5:L]͎3ti47U7&4Ʒ7#QbY=luzPwj]Mb)(/NS)y2V@.Mبr 1hMа28$(}cMqb~wo S3n{ JZ3rKQ"BiBh9D>6Ù{fRV,%Ӧ+m4f{h̅鶢V-kaDq  V%DbLH V F43s ~ŵw.&;)MF Nw$~{abr%&1;R3$v[֎ԒT@1@\ۯbr)PB-B:8[T'+̥#\ nP0*KrE3Y PhRM `!v[s6ei}.v+YcNE~FXr .A&k];x\9(˞tޜe\VH'&e; ?`5L`D&JWERe,%U$"ޏ_Q乘~]\;*ﰳ 'wڷFXccB~M C[O矂#0b@xdvvջaɻMjA8jPk9q[?!c'.%WN7|%O1>LטjNү\ٷ \ M?Y0fvA7݊!@7~PioVZkZj[MFJS756dձZ- =:/IV#t)O۵)eLY @R%2a[sFw*+ Lhu<WY*pVq>O.mKR.mwvЁuʏͼV+a.Qc(OjL5"9 V'A(#\=t+S|S@x MI@ty3nSB[՟EqHaT[:l2182kTq2:nTG`\ 1o; q Bf$z$/ fkFz\ s|;.eOB4h~xWdz[v{V[#=7#*PH3=vPSm;z<֬磖ljhinmji[v-npqja+Yi5isJ|)<,^xS!S*$@+eB(75-B,6'ќw>ިwעjRY C'ag0,/em=-:b1+Ji<CC\[=V4桫d8<AV* ;Ng*+,PYt~yG;o13Z4̤ؗEYߘoB oN@ _)Kendstream endobj 219 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1285 >> stream xyUǧvfVN-f4  AA0Ȣ@±+l;oδ]J8b4l8E3Y5"Ѡ NNf^;y3 W64,xkѢ9+?&Xgu5٦ͿuWw6:Q9gPI9"ˢdP0K\ól^ O}@h9,JRPe(vNVdd(otXLS\@S.o&UtS5"_]'o# l7nLg\+"_?@>۾ƩD r*G#>GށT#$j]kC="Կ/A8:.n#Mbc {im$>xT*:ha=YBϏXksM <4)Lm;eYHں3bWrd)80dím%k$IE)'z}z d2&g qӅOOdljv-u,x]* YyEdΘG7so{8a#R)ʴ pOk,yq;6l4D3p8gG>Md[>; Ωf8I`@'c ~B`r21BE/页AUMsO?^R g˨f y%Mg g!-ՌKZ "9:.KG^GK^ Qݍ&.!Yg\u CUaFLJ,S1[;qQBղ7fƼ60h' -d\|7M^y#G GuTC[Ts'Y}#UfYh du>2L&#$&lA*) rt"áfcqUJ{j߄-knoQ-p74Ө)̲ZX7Muf endstream endobj 220 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3094 >> stream xUV{X瞞@j4t[SK{xZVV[EEB !I !I $@XcHCEZz/g'ųٙgw9H$k7o}L@Lz; "9ÏÃsLE\eNw&nض4m(I-j#D=M%R[mԫ.*ZKNP˨ ԋC\JF=B=Jͧ~'B2CR:U 3υ)ͬf&Q j_ wG,͊H%Vً@Վ,WvUve]Ёek*fhJӾڌcqVL珲TZ(sIZOb7[ LmAnPSK05HWL՜đLFY+@!P;9ӏٱ%:&5۬`BUt.y?Zm&TY$'J ƫ%c¸@P SA7YfW}Xp Xgـ␃KJކ ^;ٜ̅΢t.}nZK-(Uz& % ^ *\\ўo9=!Yoei KlrT KV,#Rqؓ{>5Z܀N\oρ ^iͅJ3Kٿ`f'[^ _Ǵ )Yl q.k-!<Ffz3{O':bkŀn`/1P#B $' C(&D  yܯgVe]f?d `[0Z`@2 6KiY]1W ^Cp2Z-/ϒ &0 3 aÐE:/- T UPd]-~^hzC4%L%ЁNЋ(>ailz%(pJ.P(3wF_`O hLe(F:'ś>yV3CrU'QyMyy'p}r_ꩢ^@~뀢M/]j/=3:ep4(Lf6˗^(aYv4A_mrzu}ŅߌYa f#/1|j3;h'؝VNM^0)V7Η]ͺ Lߠ4ȴee jN9\[(fYӜCd05E5&1q+ [xxW%}#׽_='vyKeL'RN`20nd06GVz_Ntsw0ƽiiSV,^;<1QZ^%Hyil*(y3fgb^O~#ނxzwqx7^ E H2>GZc=Ϟxf(e_/۩[/eKS5@xT"j鬓?fԽ{}z= L0ؠ1i8Ś5֨5"62b,kjK}R\u\p~#Ke +9+8|qB^ l݁-[^? n4VuT~S]cŅ׾gD:z ,}_#, b@: Z0cccmI^ev ?>k;!B()wRM2+X_ lSR\0@'k)8kLH9#/]a(TtKDVt]N-{?T83=8򦖉~-q*>AUD9v<]«kl*xQx0BQks7E%y,ȌBShPoO:* كgkPgM$"=r(N9oہfZ_m:^wQbk sU9^^)[q9s|Q_#^ߗߤ4[B2l"/4w;syHk 3.wGՙЈW5e-bFflٹ@v7 vi9`Y5x)f "]!ْlyt-K9k_i,֋ˢf&'zɑ @>]Ε04_.HL3 Sݶ]A Bb顡K9L",_2J$ln=^OЧ0–?6ޚ/cpTzfiٳ/nȌ}5w]8%@%HϬRD?nKϹ4\pZ4L*hrnbKYٝ 'nnՋKV/9l[(M .xvC-ŏ?~er):^/R> stream x/ SFRM1000K  thUIgM@uMwr)Fn%ujjnczݛr||{_>PRи""M+kwe@l[eposlvqosKӰˑF`inlylvrpqo|sY]QJdxS ? H{endstream endobj 222 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2641 >> stream xVytSU}ZNd0.:Ŷ"uF[E) --KKeo6i}{Y R ag ˑae禲3INI޽~'! dssf̚[s=? %Ǹ ) / mo8u/?q3,.(( ߎ fJcEى+t;v}<?ǪVv9gFC3|f槰L.-ݞ;$mTzR e|\,(r\,CwX(~v(t{.:Fj)t'*DhѭlJ= HAյK4k:ynY4#wtl2ב}z7~V0иuиch,}QXF9 lBt C Qh_F4*ж j̔ˢd΍JTjMJ֩$CxYnv{ncd#6 ;g$ҡ)dh8&G$t9xCV(@q jς% 3uj uu&R0G٫xs% | @_Kz8. *eIqa@+z54%XT p,5Tt'HO; _N)>z1P]/g ެ"*TeJgP43ށ+v߆߾i ~]'ػ}pPc;lFc@^>##k: NAXP1}ю4Cڍ[p95v3vǛe-6o Hʳ.b YtMϕKˁfH)| 9q 7O7~pC3sIg; 4Z::;8Y,ڿ ҜuNmѨs]@Nh ּWqKY+Qu"%ĒN{7thx~Dzٓ¾&&&H]*N"%jIި6j-Vee١0AWYYz*hH0tr0΁XOhF'i3)ƞRBBZգbl,@ cH^N6 Cq'|ORn^RX֮+f cfTh)4Mr8PaQ$h\U xa{N^-s h̙5AõΔ""T CpcЏ D8l֜]2b:?NJ|Wc/%7E)9zL$m.E1!!Qt`%W(8u4vasNmC62U|#}F9Ix͑#HO 0 {mN*)ɔn9\y|SlJEHM1] EX?^hDk>C9bAobI݉A5lћ`{H/:3S PsuB(zi`UCT fՊV}B5d0`ZJřkF7TL*K8xpGD*?0:.lcNMށn #trZ.dLjöz \%*ҽX/Km }e.Ȕ:݅J| 9Vja᱃&*<;h}O#m:54 )sf $wlo^{ RNj+kvbU$:0Jek^l4ě*ؠV^f/H[U-m,mXkٸa]rc~%Cw]J|<?<)UuYfmb4VqE Oi:nOWZ{F dX0^j/E;?~\%$Hē>.f\Aђd,)%?g 6endstream endobj 223 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 335 >> stream xcd`ab`dd v 500q$~2E0SIC('3##{I" |J04ow9ˮ~]Qjr_֝ݛ='q<9+>#1 ^ kݗ?C˿Oq{ q=:fe_=VO{wKOKw3GbNW\+pM}_S{֔m~uGfEf(ȓ+?Q=?o\U]j W4{nnn! ?endstream endobj 224 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2943 >> stream xV{P݀oUԖһjmmm;ZV" h- ȃBB^y+Z|Zoj;^;Uaֹmgz# F`d%׃7Q  >1#Ϗܞ5W2O*Q3>x Rb2;O*A3ߎ{]牢KKr(HqL.zn~}< zqh.X;T c[Eu[DR8XCv,@([_  |D,ƽ%rlq8ҁ*6RO˞}%[?mNU˗).Å \e #+ju:/SlRh­>Ж SGy# pp4nm^j{HǍHB9ц-b*TLPT|ov 蒪7xڃ ݡG I @en$X'ݱXX,A>(jTRv'nSڄBł0q+#b`Ƶ.Qx_^'^=8QW搘V%r}U>;VLvZ ENZx=Y 6Z+bIrY̶J{N9#pd>WܿٴYLq+m, @x؋ tuZ_ (#~9.'т,.YZrnej7m@ ˵׎2=2|ȧE/K(:^ s%gE!©L ܁"zuMZ ]'Oʏ3͔^[-R҄NU0 ! h޵E'TDé& @ۺ<;:ݽd> q$v:'&>ɸȽDS-}j$*1l\PirB%i+'uc7c_8KRsokꤥFJiMMAAxo@MXQOznGp=Mfep;-T}`k3bIER]W]-Hv9H؅C01C&n: Ǐ^>>aP//W4h ZbB!h֗FYQd >A;/ Iy9nv71vTtU_"^¸OQ)[>DG>e2Չ.ݼrqܠU̸ҏ );[|C5Aiao1sn hUm{e&y|mA (yunScU]}WbO͕/N[/6*̓? ^)bRg~Fmvc6%]fd':~❊lL'?nڹiVn/e8@MPj.-3U\u-`3kNW (UXWUmmܘ/ϦF<%tͷJE5WhgQEҫSZek- XȻoS؅3Njȉ8ϝ/^untlxC8O5A؆ ̃!5dҿjzݮnMJ8xC^<c``8Ç!^O.(iUe$FX.2䀜ʩho^S&-a4Q\B([CwIxs=t&}B D\.W}xM^^n MnWM]}W2N"FEiNQ,7!(k:.Bu:,8h?G"YpNCg}ظ!xyr\N\ g\i?{{ [U \K-XsIs:ai0k)f`Swx@q *<'{D|4qFcCDz-վw%[vS=ڡ$Z]Jŧlq^#qy<ɇBSX[ji|ʾ ڄjk]־Ɓ~W}eCmsGL1h70lAg(ٚ)aSbZRXtg*>1+]mDyfќy1:Z}炆%<\Z:n ̣^1y:wβ23TYh/ٹ|wy`2Қ[Pߵ^TQ(ްaivτSugmTEFWc)@u0m"Yl^3ge ryXzTh;#!|/:fendstream endobj 225 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 201 >> stream xA SFSS1200K  @R3pFOv vKJ,Dv[ы #|}}$؋∳2~Uc\Vze}dc ? KDendstream endobj 226 0 obj << /Filter /FlateDecode /Length 8144 >> stream x]m7r_1p>d6юC;wI}a-ow->U$UȒώ/0St7,r0ky.)]?^<9d݋/S.C`1R7O&^gxCcCTԧ?9;3wfwxu{s_[&Wr#=W7g xm(/[CX#ᔫNjGq;ht;ǰ%v@ﮠ {hi<,Ҽ@)]^C_ǫˋcm_<>.xxXwp\?ycL8?s!v(w>g}GrΥ%x8z<1t9OYyӽ9;'wf.B<~Z]`'0K Ew5C4Fv, ~M+c0b$(&}`5'd6()ѓWl. dVSrXgF731 #C$xN0`Ë!'x ["ԁ&"5'`K x b7X2ͱזr gAKU} g[#@ñB͇yW{Œ N`-ƺoV3f &&KZGF D\vM baZYʀ/=8=4CNX$N0NB0>Ejq1|޳X{-NY}Cr"cO⸬єZ<hV"mВ2X*I0>9#z%$ lh86 v0~bCJaDژ CU;gCuaņPTî. u6C-lhJ:-f0- uaTlE"0`% 5FdI|e\ )%,߰t9V-q, wQDڢ*` {(^6j"z%)Wi!9`ƀ38A.W#8Q'4Mc1Oi`33ayqeR4AՄĸ]!j3xFܚܕ"A%5H%k#%JL5&o pK%@HQj)<[IeL+%$ f :$*)Qy$QN&i6$aSI&Ju9ICUIʫb:o{*Gh۩FAr#:cYݣ!z<[;|Gvn6n`55j&emF ŐAk8{Wݱ9Y;PZ۳P('+4;m^1;4*a2r Fi|=`lE"r'9vZ|c ]1v osU}k`Hr%@7{d`dOvr>ar/;|\AG*`&"wULvrV{X.䎋5&#݁2mhڤ$PAK >@Qf"sri"L7%E%&R%\`% W}&$$: **Q$)RN& 6Gi$SNuVONXDx,oirkvP>[g O8:B^*8*x;*nخÿb"QlK=͍Rf So\3L(DlE1CJ0M4]ZMVi8QJMj9QJju;QJ%k%=QJk>pmwWޯ_^{>XpbGEpcCuWKXv?ᮍlxq~>A/WWwW;a{~r[,My9\1__>à}_\^w¾~V:'6uⓧۻ÷W Ί醉n]'w@}6qTMb o!"CQ}QGMD·&"B]DwuFy{w[3H _{/QP&ٵ3` sÎfPH9f +FzY_ T rS*o&YD9_5 B6C5ˈB6YF ,# 5,'MR$V$ xˏ܀Sfo뀪 DŶ Q[KP2<q@5)5Hl?$vHpWYFe gle) $ݦRhQmh.J ,#n4YFh.^kgBM3QseDP1_%ȷaESf\iT\dQjcfQq\0bFsTP<#"ˈ %ZFTh.h.5R5W3uf3)\dQvr*+#BNE1w[LbYFh.(\d9-Jg,EeZjD"ˈ%S Llyj @&$&Aj6HPy="&A ypnnH9tr(CQ*PT6Eւ}>C5q*5l@]v j@R t|JcƯ o>o_Rb#xI cߪrtZQiߦR "ђ{:T+ѸX`1m'pV#b%![ܗuj~ghq1 l8&h,2;5pM/ֺGִ6Q|_ڜP~lţhqxWVQ '6ifnY.q)JOP,B J~It\yankOW^;k.jn_-51 s,djc&r NZpdR@vuKFr|~ C-S q-~]1D/;u\y_YJоշ, s\:%aRN*KRߘ㾅X- .o˒;z1-sjv{|anK:jX>1 0eEG|׾/̱<X!jAQre$azk6 C}a 9I6ZCֱFFUʸ3МGX"G.Ȇ0(u6 euⰡM:aRmn C04"P0PĆ4a1(, C P#+FYJ- CeaD%PF*#0  0Teު4GWbM LСoq4Fh;A۶lv6kۿG=qoԲGl~h{hhʶ-`u /Zk%* @ֶ/-5'$Wy䍠2 WH$=h1Gst^HMXj!D^bV^B aϜۋ?hH3UiXg'*|+Ե}a[C(64zRG2w^XQzKG"% EDC?*1%ӷw7w؜Q}xGMշ[wnn37w@Q}nG[uϽ4gyTc-Q彸UJFQ%Pv(FBjQ\@(*dPJBY $JJFE_\@(. (; ( ( (g@ (seGJFQ%QT@(.ETBM"j/(Q@ɨV@ɠ^@*dP2 (8P8 (JFQ% (;JPPr*rq%QT@(.dƣʎ3^$ԄAaA\@ K% (E[jֽQ\@ɜN% (EJFQ%r"UPv(dP2 (ŖV@(.dP2 ('ꦂfP2 (EJFQ%QT@(.^@(.dP2 (EJyT@Qr 5QQ\@(*dPʎn@Q 4ѨQIi..(Q@(\Q~dL;j{eGJFJJP%QqdL7LJFJqq%Qq\1yd,hY (JFq%FsJlFsYCIC [ JΤFsJFٍP:+JF%PQvd%FsYH(-reGJFQ%Q~d6(Otri9ϗvϏo[xv@~~*4 ?apI/~sv)GP?0^s.N~sj{E{#L zjŔ⛯ձ?i.4MmE%ጊKcZ.|qW+cCWw{q{yp.n_87)֫ 4t c߶,/ZU LS@_I_uZtxgA Ƭo__ _Y/^1=vu:3#5 :)'?u۸ۃB?qq>|7p k{+ yゼI;4dZC~vg#uBߗc"gf#_c߉g/Nj#Up6j<[/ó9MekP`9N|U7gf מ$#:P|syȃ4_q'>DQ1_L%}2k2Z.4% qz<:v:Pԓ a./n /qcGӧgWp ](#른ŵx^ٗKqp@Ez(ݻ(+ɰ%C3qu1:%ı G:)K~bN]c; Em r@2+^zD~g׹B8|K1u}p%oO ܃;#<𵟍op3NtaoÀ%EwB:̒C߈pٙ2 $S霟O;6n=c]#@؃8^ؓ81Cwyr_5~ Iɇ%)a"aԅR#w'+ &=/wɩqhnWֆ2`/5[nȇp=\Rzzes^ulW{ߋm>6pky-΋'[ &2ȰZAz5 b\(¯A/RBo%\jR?9snZĖe[cpWF~ y8122`k~ɤ"Hq: lP1rQh2J z:ofRD{>T@7)PÄ56+Sjbp ~nOm2D' ,JQq,5cK-k5I8K\tgCuipmLȤ/o] #>b=9.9^3}O5 dVι>aY>:1:KS8ˏB?"_s-Pb/7͉Nެ a o\^pr!_o!Hk' wo7,~$-c)5Ed9&(0?` jendstream endobj 227 0 obj << /Filter /FlateDecode /Length 2699 >> stream xZKsoax`TT%I*-%HAt~{ ,@S*+S*8 ̳uuaoWW<]oolMiR/nV ]lL btU?:}J~^&u?X¤s9Myaf')eʹH.{Tb>Tl*;ݿ_[\%!XVCYZIIWe)FӤH :E=632Ys`k)"eo^B/۴=wՁÝ,#)?t1eSw};؝΍"e|Ο-9'SEξ:Nt  - ׺GT2Z~>RZT~ڏ;?(*oQ9 6JGN!`>2515.w="6 .7ߢ7\>H^Y00 H';^.1K<=A+PXߍ|H[~2)dߢʅP1"w#PJTBur[ Ƽ*h DjT[0S?EG+[yf"d*?&K0S8 "0EepP萔!_F!;$l0فK>=)Դs}†DF:QN0a6 *Tƶ3DSTNPY´T;Ŗ^A_% m)Q ?=OMR_Lf7GQ"HHH+DF )u|`9PE1jybGqvD{5~j]N]?k>Bk_H|gk}P{6iqï|ݱ])a4Qۣ`(~٢fC(v^43>u6? >OP_QIxqWA vuWMb.Aj9U͡e43t3]NpYCйiPdUְ'KT;2>P]@ 2Qp.=;:!~4G^c DpMM]?EͪعЇ?9EnO!ЅYGR/S؂qEPy&HPʡVg"匑p#-MTeоZ W>+Z7PW01:4|Y S&Hg [_;0$5BG4wT˟$XKAdm悡NZA_!O,; kDS,GX}<786g}gD@B\a=(#5>#iaK+ &ByhR{Uڛ0+k@ ^Hn gMmv֬5 y?Q'{/0H12 /\#ΐx)V75dO?Zpք:R#j^YyfN=Ơk6xJAu͎3n5ӱIO EYDioT+=C?5l(#!F쐂sø'LJ17]0GXu=!\B m|md%JIV]UA2T0: o:TVGX-b.Fz»X@VM2+.ޘI_r҆aMOsd>{eb$>3X?E$\b4TxDxO롫|`bT|u KH Ar`0oyO` d7qɩA|G 6ULJ(7|LSa!(>.hfs#ʌ'Xn^M" 6lň*uJ~!vK B7S <υf E7XLTi"ls79CضQ(ZB"|0vL~b6dt1ǩHyf <ء1t>CdcǍZa@+Q;w2Ռqpߺn}vm6! YH:-Q;!bsq3Xotaj@gkAmpXh.k]$~v~30uendstream endobj 228 0 obj << /Filter /FlateDecode /Length 9741 >> stream x[Ir+1s"J00nNwiyi"܏왇h4Xea;ׇ~>_ώ볳F?߿}/wy>=!{?|!_3o?>?/{yG/ RB=__~ky~9K/}v*13q.Ln</k/)??9>KNW_xn~w.ޯMy=]7>=׏pTno>}쭙tr9./{C;ng1GțgLAsEBOpgy?{ߩg=/3#Q#}+G; nJOV:]ߋ%Wo)9H\;<Gtcwpw@{>A:sLCtM ؃R {m_w3JBwߌ=VlzJ9㸻]0i,<O'yOg'Wtݣ<_)|/߾nt>~q6yn n>?wo?tk\_\ONLw/%{Hj)wtG=,WP?{H5r]h)B'|W9(R1jޑ)Dz?-5mO&=T~?., )X# cY8I k*Hi#ߚH6gDsd#Y#k#菈zl%+ FfDDZ]m_9FZM끍4Ͱ}Uzl43r6ҔDZHSTik"Mm`7~uEfE'?Fѯ"_lYX7k}T^X[J`53b2yGV3zɏL59ىwAD]yv'j[=O=g}:cdE<a`<2z2]#Dϣ"$9DN~M{!k%HBy$ȲV $]$4ªA$AD}PIIG`wbݒ0epB+ŪC#G,L'r6D!]V8cKM~"u{1 4G;ѕ!^*jzg3G3ζuS􋞐HoQ)3}AVT@P 2`ֆV`Cp!1CU7< ̋\agk@ $=W@0s YZ:+n%xMYעc`6_u4߈\sߞ>#,W1UsU.k" b{ܿBwUs irn19A19xj>LWnIr];Svyss**IZK5Ƃh<.*CYy$xNrN =X9MrY嬚G~>UxS5 t U}@Qs.D)jپWQs҈T.IPӇV4*\Ŝ>*枞N$ԎɊ.im+%/7sBؐS]qtޡuɮľ@etTm` l l !kbkt0Dx&@(fx7 pe hO6l8!J`pmL74w&|jn*ZZk /syq)d26 &Mb 20&M"_s=F2@VPz62BKPԍ0xo~d č l ( 9 P qmt}|\ tĈ^} `㖛ݡ yTrr!g~éiL{0fC+IzcA|V6v+J 6n|N9?5 *r\/$ =2rfUth#LtIiR9fU?^N|Ԝ.jS G|Rg-B?;ӖQ[ TюZ;5~bMF ݶZ6ʯL+1/-E+Jxy,D'ȟ5 /3w)T#b`lRiJM†UzvF }Xp1!#pl{8ZСp*l̨tb_B2*ByDikF}㘩HdYbz e`s㚎u-02$u*ie SLoi#䵁()Ef+tG4IzUJ\KZKI,>45+>g:qߎrP=Ota A_@`(ң\(-<*_hqnMʢ礩 ٲYLO?zo\6=u+9 .i.-smӒ=I Zaˑ}wrн9u_Rx%6Lܲa@$( !mqØ+"nhxC@HJ_Ii z.sOsNy;gG$n]G-4q5&钬ۊ](LOݲ2WbIŔVBR;b Ućk Kj{E&:e|5ۇY"=On&ǞOy(eޱvO} J_2Ƛڬ132o\MyIvZ}x+ V~)ˬDo) .Zc%ZvZ"ֳGDkH|DF!6(A #`'ī !mpqE 3`5GGVac'r-X7#Bc`mCp F*Z4cpo#@.|ik&C\ mAhF3AWQ{7j8<Sf%v5($ L>`Õ7| $ /[SµofOn5R݋L+I,Lq툘nqFQ:ߎ=*_sz= o=޷}[~޷_jp;昐求qn|oAc[9|+Ʒz26cη˕~η?J`oyC8O|˂)oU] mb%ľEREO.&=Q<5ΰ}OD/,'<.w` mJW'sh>׊$#jp  T)*ͧ%&τ&(t5Ϗy엜(&6X  c'fIJ(}fxYb=Hߧ)JpY,]B9 5!x޵]x9zOtyYYq&0'/ͬp a<ڢ ^WYaMH֩>\oAtb& Ūr <_Tߩ^OEG}ZCI56FG@?;YBDzKHk-i9"6R f"H&PE6zh#@&gFc"ƣj"qHK &Sb#-HR62,`829"Ym$λK~6myiR`"].ld&!;&ҔxH8"h#M'mit&2K~$Oh9o>&-4PAnh9F?_<2Y1b+RB2gR2R*tDR%SrbR>XC&N|raE\TU)|6r%Uy>GaTutI<PRxhRJߓIe#ЩPjQK',FFYWT,zcZK0zbrF6oꎙ̑oe;o#568ȂXA60P hA\`Dein ܣؘ05Ўeؚ=8(0Y6V Z-rc@E v-3EU0pHx0kqthx ^suײ%8$& Axvyv dhZxIr흱=*jHegaZe05-J8N]1Лl@]vޓ;Nf3I]6/=n L{*D5Ml'oj0%O&?d^_e,ERhġMtl^7S 'd# c ;3Eh-I?HMc(NJRW钥eܾ'iTx`2z >ƳO 2X6njӣuo#mFL^6fk4S?m9CN/8H(y|SWu53ΫήeMQ#xJcmШZξͰúRmC6G\!u:$h/ʬZI  T^Eb@@kmj}-WZ(mzmLa#(]_C30ar9Aը&Şi=HK2%(+>ٔ4")iTd[Q {DF!}VvR͛ԆirT8bx +8a[l~V>B`2 @HȰF^05p7WGq &q+Aq7APm9|_ƁKE'q5_cx:EUŵ@*ޗM dlMeȽВHl L$4jJ+*Z~%^6eQ(}ܤXkJY5Rw:e /.VK* ;ՆG57Y6rZsڝkQ;2¹O0clJ+С7ԒTD#g+;r`/ˍ|+( l+E hl`f>+!@m 0 Q qn 4"X"{t\G:P̍XAw{VZ-kHOB31l`m!bnL(U4 rgirI2kTIg0-nR^1o4$rL((aAB [Up# (a^} $AlAA ҊQZckt4D| &`(fx7S+!Ӕ4͊]@oh.{c!4eP+"m%4q7Yo|LLLw8dELm zgʓ`'] LN]rQf٫9V3õgZ3 =fƭdR.oLܕ^;$ޮcRw(mľ3V?d-ɢ̔ɘܿgTbӣS1o5Ͳ%w#m:4{g3kӘʴ-qF:u?1?=ܗen݂ jiwooo }~+~KTVt޼Gߞ1%t #߆=XGѠK:3T.@2Vّ ($x^-饒R]:FLj; #Kon@`4hewuJc1NM|0s<'Qga)̫G&iUO⨴~AH1/vo":WxZ R%=ԅΨYu~|MC=yB$HZyjJzHw& DNF# lxa! @d A-1$6:$ A"e""nyGO -GAVg1C6 \:{.pMxRm7<2h_;=4AA/QA_ֽFu:=mnچF 6 z赻!˧ZcA<͏/=2i.^ :fLOvNm"GЩ"0LAO4KFy1en7 2Є:uX %S]G#,  AƢ8 QRi=e7I"u iePQ=M͚ ʔBF(`C +L olf?+#!GmP h oÆȘ@&Fnް572l< Ol|/m,.tf])ù[n/xd]?{4ndE0mޚ1nR욄!Mc&lQP P'TʁZnTyޠHR@@*ArJ@HIB0p߆!37$ D^ _T? no*FWɏ:ujn[F0vg ;u+l~ f^wb4ͻ%Sr𶟿??%^o><~| Of*3e>TSn~~웏3~hƻ}h^s5!o??NS;~>}qvɧ/^?~KxѯɳxO0| x+o^=Hk2øOP{㧟7Wջ_w?y|'G\?ܾ{t9 ~-tF9{m5w9OU;#ӻ~ U'懗}^۰lrI~Ι^k8_}M?2>}ߏ~98WQa5/?{;d=ԏEtrGqjyzWf?<$ jJIŝICo_}aendstream endobj 229 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 423 >> stream xcCMR8vz-  123OEpbcVs,jŦf,hjዸ⋴ #h,t`‹ ' <02ZYΤ<7#B? rGlwYx?{FvťbڽQ"DfVT@htkpozc,MI%ڧϋ1# :Q?f{ku؎׃$Ena}{mltNx~} 7 :7endstream endobj 230 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 443 >> stream xcd`ab`dddwu041%e~W2'y RrRJ2 477$3?$1l  C:F|?v,ai]C͢}{$~7/yE٧|.6eJwow/P:9߼^=wVZ;o۩gvsO*bEGT=w^+9Z:{;;wxnn&B MMݝݝ͓:':tbty|^kCd73J?͍] S{/k[Y^u[on?lp4_u?$~(}g^r?6u/tuqTpvpupw10endstream endobj 231 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 742 >> stream xE_LRq{/eVnlC[kz?R-i:,K s \@1D.ADKWjYZ^ꡕk^ۅnnuy9|I$7)/?v`ṁlY>HD [mLXs"A!ʈ "?LAa/c+t<#|Q'LQ@5]c駣+EoAP8A(Lkp8e(VMjyy}Ѯf{]8Lk`yCc'BnʂZE )#rHp58~ς\sSÌu&/J~~u絈ϊ]HjhՄtñ[vI+ d5͏~L%Lʹ 544^.dr䇭a\hz.(c.U^9,39o:ޜ'w.:D,B>dMIЁew$.(e]ioio_zM^9=}-ޭ(-Gw8x5??b:G`oJ">#u8Yp^^UcA+3,&-~aՃe]C8w;¾NP`Щ'Sdr5hبTURY".W*x$ 4f@TXuZW(گ̨I6$ )&?lendstream endobj 232 0 obj << /Filter /FlateDecode /Length 3478 >> stream x\K۸$7ݓS:B !@RVmQT6;7;y,ʎ,l}HPI0EwM0(W{U׳f_f'cluJݫYXFR+1Z'w3ݢ48E67 '?&Vb)gj{5#m9r,uI% YJ A#IΒMTfJ[ky8nq]e K9a񯻿J ߽NYjbgY&Z˥Rpt\[ٷ ?͌4_)Zv$\y}7(Ԝ(SV9!XszX,(I6x|/ʄpW Y C]߭PV i}FԛHG܆k5䌟 j[EeA/LYiM*0ꐭ }Sq>;>%:yOI{1-K٪RL 'KO6.phwmbњMgXj=hcO%TVxK#}_9Yp%H'y+r@0U' X@Wrh$RP~jWdQM)V8Et@rr;4y+J33Ʃ6%GlʂzJ^r>/ J{"8Inq!I6ٺ Yy*c%P+ta\n JOD@pLA`]_[˲OCUp_ En)-TcM_RiR(ZB⥌$y]Q^ .Ը[X3,ڛlzZbo:::-{yV`Cdwho-u)[_[a&/S@]@$$#M!RcOԊ YF|N}lׇ/ۇ9w(DL,\:.((ۺ=ZLEvR`֔hp O^;V#)"4_#k]'7M nanZH\y\Js6H^EF%͋@FtU]Xbyw1ZG ՒeZ4ok-y]Ԓ%X!8ZX{!cTfW.x-y+[t)-ozFjY@V2K(}f! p? EgңJ@`=^ab$5hSo!-4xĺxZS8竮J*gL&j,ས Jë) FÓ@iQg : 7FI|. pQk|iD"p9gN!j/԰$ y|yaЄYʾGQѴնA #J-$>L+}=y8YlV/K2;dM}8(85`UouPa[3!zUec.'r4*Ԝ ojlTUgV<87ca$)UiTCd6"*_7cAy e8oh8M"^9w_+A鳜jW0!߀C+[ p B8^DNt΂ԴEDiR+F$I^Y[Sek Tm7Ui͚׶$}x)cCIw%ײHW鍩V-nA!T@u2dȫO=y748p+헱V!XL#Mmfjݬ*Xuxܯ+o7w. Sx`?iAOn7ѻݮBvdZQSV[CC0`O ~}x"*^2Ӿ붇!M}~Pw]\lQY]7"oc1CmǺKb!KMQ^iPØuȯSS7mdi79[:6X8o P 'q"fa\݆ly`=c@ɠN̝c|H7g8,pVM0L;.ozy7 *@(GU/s]}k)G3^0b SB/ eɽ2OR[5R'lpJ]WpLLj] 6{oU⦡,->:\id`5Yj/nuv N ~wV㋩ uhIx!KBKn|US@1'Xmw )t1qVeyXZ50/pSs24h7VEE,۟Z9LH휦~,Đ /fœErwLK0GkjƷ^o_-1 ULH9TR; =B Un{L Jv^d61Ps>GOK!Wpa-*3G ̇7BO! #K*򜃕dۙSp#ʩmg j .kc A%? hKM|/bjNk8QLfFa< <@pMeu׺f ~Vh)੉X85l!'{=^V^&Y<~o絞%RK1#6?u@y|RR_endstream endobj 233 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 441 >> stream xcd`ab`dd v 500q$i2.0s^f.?X/;LFNƻD3)1/a\;Eso oI4k'vE d o9MT5e9}_sYr3 : OAԟ߲=oL5]kWmmUZ"? E߅3/(yU\xf^ܚ { I9@+M80؊Z޵?ف|m,.(Xze+,+]-'C?s1Z䁐6Pq$@Wwy{dvx C HV_Ş ,]kjVo 4b_. .}2Ja(<͞Gendstream endobj 234 0 obj << /Type /XRef /Length 233 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 235 /ID [<3cb198fc53931988026acc5904349681><2bc801b63d22c80b590515137403bfa9>] >> stream x?Aa%?Ɇ8B8N@t@SPB&* HTF">KfBS(4eu`plxgc6BLEԂ:koW۠[b)`ӿn -` a - 8|=(5@J+Αx?wЊ9s>3,6yF^c捝|( endstream endobj startxref 244473 %%EOF Epi/inst/CITATION0000644000175100001440000000466313750775251013144 0ustar hornikuserscitHeader("To cite Epi in publications use:") ## R >= 2.8.0 passes package metadata to citation(). if(!exists("meta") || is.null(meta)) meta <- packageDescription("Epi") year <- sub("-.*", "", meta$Date) note <- sprintf("R package version %s", meta$Version) citEntry(entry = "Manual", title = "{Epi}: A Package for Statistical Analysis in Epidemiology", author = personList(as.person("Bendix Carstensen"), as.person("Martyn Plummer"), as.person("Esa Laara"), as.person("Michael Hills")), year = year, note = note, url = "https://CRAN.R-project.org/package=Epi", textVersion = paste("Bendix Carstensen, Martyn Plummer, Esa Laara, Michael Hills", sprintf("(%s).", year), "Epi: A Package for Statistical Analysis in Epidemiology.", paste(note, ".", sep = ""), "URL https://CRAN.R-project.org/package=Epi") ) citEntry(entry = "Article", title = "{Lexis}: An {R} Class for Epidemiological Studies with Long-Term Follow-Up", author = personList(as.person("Martyn Plummer"), as.person("Bendix Carstensen")), journal = "Journal of Statistical Software", year = "2011", volume = "38", number = "5", pages = "1--12", url = "https://www.jstatsoft.org/v38/i05/", textVersion = paste("Martyn Plummer, Bendix Carstensen (2011).", "Lexis: An R Class for Epidemiological Studies with Long-Term Follow-Up.", "Journal of Statistical Software, 38(5), 1-12.", "URL https://www.jstatsoft.org/v38/i05/."), header = "If you use Lexis objects/diagrams, please also cite:" ) citEntry(entry = "Article", title = "Using {Lexis} Objects for Multi-State Models in {R}", author = personList(as.person("Bendix Carstensen"), as.person("Martyn Plummer")), journal = "Journal of Statistical Software", year = "2011", volume = "38", number = "6", pages = "1--18", url = "https://www.jstatsoft.org/v38/i06/", textVersion = paste("Bendix Carstensen, Martyn Plummer (2011).", "Using Lexis Objects for Multi-State Models in R.", "Journal of Statistical Software, 38(6), 1-18.", "URL https://www.jstatsoft.org/v38/i06/."), header = "For use of Lexis objects in multi-state models, please also cite:" ) Epi/CHANGES0000644000175100001440000012133614254265355012021 0ustar hornikusersChanges in 2.47 o cutLexis had a bug introduced in 2.46 that gave invalid results if argument cut= was a vector of cut times and the Lexis object was not sorted as by sortLexis. o ci.lin now also works of class glmerMod, thanks to Antonio Gasparrini o ci.lin help page updated with details on requirements for models where differences between predictions are wanted. o a function, Lexis2msm added, converts a exis object to a data frame suitable for input til msm::msm o in functions modLexis, and thus glm.Lexis and gam.Lexis the warning about several transions out of the state is changed to a cat() so it appears in the log. o id = lex.id added as default in coxph.Lexis o glm. gam. and coxph.Lexis now print the list of transitions modeled differently Changes in 2.45/2.46 o A bug in preceding / succeeding was fixed. o a print method for Lexis objects added. It rounds timescales and lex.dur to the same number of decimals. Default 2. Other numerical variables are rounded too, default 3. .lex columns and time scales are printed first. The new order of variables is returned invisibly. o an AaJ.Lexis method has been added which gives the Aaalen-Johansen estimator of state probabilities. Wrapper for survfit for a multistate setup. o glitch in Lexis when assigning entry.status when exit.status is numeric. Only worked if notes = TRUE (the default). o cal.yr returned an object of class c("cal.yr","numeric"), now changed to c("cal.yr","double"). 'numeric' seems not to be a useful class designation when 'double' is meant . o COEF.polr was wrongly defined, caused a crash of ci.lin() on a polr object. Fixed. o Using a factor as response in a binomial glm/gam model caused df2ctr called from ci.lin to crash. Fixed. o Update of the utility df2ctr where gam models with factors crashed. Now levels of factors in models are now properly extracted from gam objects. o A column with AIC is now added to the Anova entry of an apc object returned by apc.fit. o Grooming of code and vignette for ci.Crisk. ci.Crisk now also accepts a list with one element to compute cumulative risk and expected life time with simulation c.i. o coxph.Lexis did not allow states to be referred to by number in the from= and to= arguments. Fixed. o Cleanup of the code for addDrug.Lexis. prefix argument has a different meaning, suffix argument dropped as a consequence, and in order to comply with nomencalure of gen.exp() the dosage argument is now called dpt. o addCov.Lexis gave funny results if lex.id was a factor. Fixed. Changes in 2.44 o addCov.Lexis now always return a data.frame o New function: addDrug.Lexis adding drug exposure variables from files with drug exposure information to a Lexis object. Changes in 2.43 o a bug in addCov.Lexis ignored clinical mesurements prior to start of follow-up. This lead to a major redesign of addCov.Lexis by taing advatage of rcutLexis. It lost the add.scales argument, but time since clinical measurement is returned as a timescale by default. o ci.Crisk added. Computes simulation-based confidence intervals for cumulative risks in a competing risks situation. o sortLexis, orderLexis and order.Lexis added; order/sort of a Lexis object by (lex.id,time). o precursor.states now defaults to transient(Lx) for cutLexis, mcutLexis and rcutLexis, so precursor.states is no longer a required argument. o mcutLexis reported wrong number of ties resolved; fixed o Bug in mcutLexis accidentally omitting new states as precursor states o Bug in boxes.Lexis causing text in boxes always to be printed in bold font is fixed. Default font is changed to 1 instead of 2 o factorize.Lexis now only turns lex.Cst and lex.Xst into factors with the same set of levels. o Relevel.Lexis now behaves like Relevel, specifically: a character vector as second argument (ref=) will cause a reordering of levels of lex.Cst and lex.Xst, earlier it would merely cause a renaming of states, which could cause undetected rubbish. Changes in 2.42 o Extra line feed in output from coxph.Lexis to make output nicer o function 'rcutLexis' added allowing multiple transitions per person to be specified for cuts, including recurrences. Only keeps track of most recently occupied state, not history. Changes in 2.41 o A bug in addCov.Lexis messing up states due to unexpected sort order of a merge, has been rectified. o the ccwc function could select invalid controls when there was only one eligible non-case, due to the documented behaviour of sample for vectors of length 1. Changes in 2.40 o plotCIF and stackedCIF have been modified to comply with changes in survival (Esa Laara) Changes in 2.39 o mat2pol added: function that takes a set of curves represented as columns in a matrix (mat) and plots then as stacked polygons (pol) o the argument formula for glm.Lexis, gam.Lexis and coxph.Lexis is moved up to be the second argument, making simple specification of models for two-state (survival) models easier o addCov.Lexis was not exported as a proper method for Lexis, due to a mis-named argument in the definition. o addCov.Lexis produced erroneous results because of mistaken sorting order variables o A new function harm generating a basis of harmonic functions o Cleanup of documentation for Relevel o ci.lin argument ctr.mat now allows a list of 4 data frames to compute differences of differences of predictions. Useful for some interaction models o Bug in notes from ccwc corrected (MP) o Minor editorial changes in annotation of output from coxph.Lexis o The by= argument to summary.Lexis crashed the function if the Lexis object was a data.table. Now fixed. o Documentation of boxes.MS slightly amended. Changes in 2.38 o Minor editorial changes in urls in documentation files o The poisreg family now works with anova o Superfluous 'names' attributes on all variables in data sets bdendo and bdendo11 have been removed. Documentation for both now in the same file. bdendo11.Rd removed. Changes in 2.37 o ci.surv added to facilitate calculation of survival function from a smooth parametric model o Bug in apc.LCa - wrong labeling of resulting list element has been rectified. Changes in 2.36 o Lexis gains a 'notes' argument allowing to silence notes o Documentation of bootLexis upadated and groomed o Description of units of measurement in diet dataset corrected o Problems with default reference period/cohort in apc.fit fixed o apc.lines gains an argument shade= enabling shaded confidence limits of estimated curves. o Scaling of the trend internally in projection.ip to avoid numerical problems in solve() o Default vertical scaling of the box size in boxes.MS increased a bit Changes in 2.35 o Major re-write of vignette of follow-up data o glm.Lexis example updated o Lexis now gives a note and not a warning when dropping persons with no follow-up time o Epi.Rd included as man page, allowing easy access to the index via ?Epi. o simLexis updated to cope with poisreg family in modeling input o timeSince function added to tell which time scales are defined as time since entry to a state. Allows for a slightly more compact output from summary.Lexis, when timeScales=TRUE. o such timescales are NA before entry. In modeling we may want these to be 0, hence the model tsNA20 (timescale NAs to zero), that does this for such time scales. And optionally for all. o improved readbility of error message from ci.lin Changes in 2.34 o cleanup of ci.lin to exploit the (post 3.5.0) behaviour of coef/vcov which are now in sync o apc.fit nomenclature for drift extraction has been changed from "weighted" to "Y" in concert with BxCs recent paper. Changes in 2.33 o Fixed bug in gen.exp causing a crash when purchase dates were indestinguishable from FU-dates by match() but not by %in%. o Previously, apc.fit with dist="bin" returned odds in the Age component. Now returns probabilities. o Argument names and -order have been changed for glm.Lexis, gam.Lexis and coxph.Lexis, they are now x, from, to and formula. o Utility functions to describe state characteristics and relationships have been added: absorbing(), transient(), preceding(), succeeding(), before() and after() Changes in 2.32 o gen.exp: time since drug cessation was only computed for latest cessation, not for intermittent ones. Rectified and expanded set of result variables that keep track of patients' status are added. gen.exp also gains an argument, rm.dose, indicating whether doses purchased should be counted if time-allocation of purchases are limited by the push.max argument. Several disjoint FU-periods for persons are now allowed. o The changed functionality of vcov() returning 0s for aliased parameters (instead of omitting them) is now used and hence ci.lin is simplified. o A small utility in.span(A,x) checks if the vector x is in the column span of the matrix A. At the same time thinCol to remove linearly dependent columns from a matrix is now a function of its own. It was previously buried inside detrend, but the functions decurve and detrend needed it. Changes in 2.31 o A new link function, poisreg, added for (event,time) response data, courtesy of Martyn Plummer o Functions glm.Lexis, gam.Lexis and coxph.Lexis fitting models using Lexis objects have been added. The two former use the poisreg family. Slightly experimental still. o Bug in LCa.fit rectified, non-needed elements of npar can now be omitted, previously all 5 named items of the list were required. o matshade now allow NAs in x or y coordinates, causing separate shaded areas to be drawn. Changes in 2.30 o A function decurve added; it removes not only a linear trend but also a quadratic term from a designmatrix. Belongs in the realm of APC models. o Small changes in pc.lines, and addition of pc.matshade to make shaded confidence limits in APC plots Changes in 2.29 o ci.lin with a list of two prediction frames as argument to ctr.mat now also honors the vcov and sample arguments. Also expanded to accept a single data frame to mimick ci.pred and extending this to honor arguments vcov and sample. This facility ignores the offset, though. o matshade gains an argument plot that starts a new plot. Defauts to is.null(dev.list()), so if no plot frame is open one will be made. Changes in 2.28 o Added function matshade() that plots shaded confidence bands. o Epi:::ci.dfr (called from ci.lin) redesigned so that it actually works in most cases. Changes in 2.27 o Documentation of LCa.fit improved - really disturbing typos rectified. o Ns groomed to have knots= have precedence over df=, o Code of ci.dfr groomed, gam objects are now also accommodated when using the list(dfrx,dfrr) version of the ctr.mat argument. Bug causing a crash with splines fixed, however not elegantly. Changes in 2.26 o ci.lin did not honour a reference data frame of 1 row as promised. Fixed. Changes in 2.25 o N2Y now also completes the Lexis triangles in the last age-category by fitting the sum to the average of the two prevalent numbers. o ci.lin(vcov=TRUE) now returns a list whose first element is named 'coef' (previously 'est') and which is a vector (previously a 1-column matrix). Old performance was illogical. ci.lin also now accepts a list of two prediction dataframes as the ctr.mat argument. On the basis of these it computes the row-wise difference (RR for ci.exp). o bootLexis for bootstrapping persons from a Lexis object added. nid.Lexis (and nid.default) counting the number of persons in a Lexis object added as utility. o Dataset BrCa used for illustration of the Crowther and Lambert paper added together with a vignette using the data to illustrate a subset of the analyses as in the paper, plus some extra. o Relevel had a minor bug producing warnings where none were needed. Changes in 2.24 o Bug in Relevel functionality when using a 2-column structure for grouping levels fixed. Now also transfers ungrouped levels to the result as new levels. o Substantial update of the vignette on follow-up data with Epi. o Documentation groomed. Changes in 2.22 o vcov() use in ci.lin() updated to work with the new definition of vcov. o Relevel now also accepts a two-column structure as input --- basically a list of what each factor level should be mapped to. o A few changes and groomings of the vignettes Changes in 2.21 o minor changes in documentation of LCa.fit o the addScales argument to addCov.Lexis now implemented, along with small changes in the naming of the examination types in the absence of given ones. Changes in 2.20 o Vignettes now pre-build on order to keep source o Enhanced options for seq.states= argument to mcutLexis() allowing the last seen event determine the state. Inspired by a vigette in the survival package describing the feature. Changes in 2.19 o Typos in documentation of LCa.fit fixed o Bug in knot calculation in LCa.fit fixed. Meaningless models emerged if explicit knots were supplied for cohort effects. Prior to 2.19 only supplying *number* of knots for effects would give meaningful models if a cohort effect were included (with or without age-interaction). WISH: gen.exp has now got a wrapper, genExp.Lexis, explicitly using the Lexis structure. Changes in 2.18 o addCov.Lexis was fundamentally flawed, re-written, argument names and order changed too. o Documentation links between addCov.Lexis and gen.exp are introduced. Changes in 2.16 o Function addCov.Lexis added. Allows addition of covariates (clinical mesurements) taken at a particular time to be added to a Lexis object. Changes in 2.15 o typo in stackedCIF code corrected (caused a crash with ony one group) Changes in 2.14 o plotCIF, stackedCIF plotting Nelson-Aalen-Johansen estimators of cumulative risks added, courtesy Esa Lr o Convenice wrappers for grep to select elements: fgrep, ngrep, lgrep1. o A bug in Ns has been fixed, thanks to Lars J Diaz (DK) and Stephen Wade (AUS). o surv1, surv2, yll, erl: NAs in input rates are now changed to 0 (with a warning) instead of crashing the function. o documentation of ci.cum groomed. Changes in 2.12 o New function ci.ratio to compute RR with CIs from independent estimates of rates Changes in 2.11 o Small errors in calculation of knots in the simLexis macro corrected o A severe bug in mcutLexis which caused omission of certain cuts has been fixed. Changes in 2.10 o Bug in lls() caused a crash when objects had funny names (such as '[.Lexis'). Fixed. Changes in 2.9 o Grooming of code and documentation for mcutLexis. Changes in 2.8 o A function, mcutLexis, to cut at several different event times, preserving intermediat event histories has been added. o Errors in the erl.Rd corrected: Description of the argument "immune" was wrong, as were the description of the timepoints where rates were supposed given. o Inaccuracies in the vignette for simLexis patched. o lls() now also lists the size of objects o For illustrative purposes the DMepi dataset has been included Changes in 2.7 o '[.Lexis' redefined to comply with data.table as used from popEpi Changes in 2.6 o Added function erl computing Expected Residual Lifetime in an illness-death model added, together with companions surv1, surv2, erl1 and yll (Years of Life Lost). Changes in 2.5 o Argument "timeScales" added to summary.Lexis, printing names of timescales and which of them (if any) are defined as time since enty into a state. o rm.tr added; removes transitions from a Lexis object o boxes.MS no longer isssues a warning when show.BE is set to TRUE. o LCa.fit rewritten and expanded to encompass both age-period and age-cohort multiplicative interactions. o APC.LCa added, fits all possible Lee-Carter type models and APC-models. boxes.APC.LCa plots the relationship between models including the residual deviances, and optionally places boxes to provide overview of best fitting models. Changes in 2.4 o Ns updated with the possibility of clamping effects to have 0 slope beyond the outer knots, see argument "fixsl". Changes in 2.3 o Cplot (usually called from rateplot) now checks if age- and period-groupings are of the same length, and tells you if they are not, instead of just plotting (almost) nothing. o Grooming of LCa functions, and in particular the documentation. o Update of apc.fit so that also Y^2/D (the observed information about the rate) and Y (person-time) is allowed as weight when defining the inner product inducing orthogonality between linear and non-linear effects. Changes in 2.2 o LCa.fit added: Fits Lee-Carter models with smooth age and time effects to rate-data. print, summary, plot and predict methods also supplied. Changes in 2.1 o The show.BE="nz" feature in boxes.Lexis is now documented o "[.Lexis" is now exported and works... Changes in 2.0 o cbind, rbind and "[" methods for Lexis objects have been added o Consequential fixes in simLexis Changes in 1.1.72 o Improved man page for N2Y Changes in 1.1.71 o Bug from calling lme4::vcov from within ci.lin fixed Changes in 1.1.70 o Bug in calling lme4::fixef from within ci.lin fixed o ci.lin with sample=TRUE now samples from the posterior of the parameter vector and then transforms this by the contrast matrix (earlier the sampling was from the posterior of the ctr.mat transformed parameters). Changes in 1.1.69 o ci.cum now has an argument ci.Exp (defaults to FALSE) that computes the ci of the cum.haz on the log-scale. This is useful if you want to transform c.i.s to the survival scale and want the c.i.s for the survival function to stay inside [0,1]. o ci.pred updated to automatically use the inverse link for transformation of results. Also now only accepts glm objects. o Ns now have arguents ref= and detrend=. ref= allows a reference value to be specified (where the Ns is 0); this is independent of the supplied data. detrend= projects the columns of Ns() on the orthogonal of the variable supplied; this is strongly dependent on the data. Changes in 1.1.68 o ci.lin has been groomed to use internally (newly, from 1.1.68) defined methods COEF and VCOV to extract coefficients and variance-covariances of these from different types of objects. Changes in 1.1.67 o The simLexis vignette has been groomed a bit o The function ci.pred (a wrapper for predict.glm) added Changes in 1.1.66 o A crr.Lexis method has been added to simplify the use of the Fine-Gray model when data are set up in a Lexis object. o ci.lin and ci.exp now recognises crr objects. o A wrapper, ci.pred, for predict.glm has been added, it returns predictions with confidence intervals. Changes in 1.1.65 o Despite the note, dropped rows from construction of a Lexis objects were not put in the "dropped" attribute. Changes in 1.1.64 o Fixed the sim-Lexis vignette Changes in 1.1.64 o Added function ZArray, which generates an array of 0s just as NArray generates an array of NAs. o Updated code to avoid "::" and ":::" as far as possible, as well as "<<-". Hence excluded records from construction of a Lexis object is now put in an attribute "dropped" of the Lexis object. Changes in 1.1.62 o Bug fix in the example code for boxes.Lexis Changes in 1.1.61 o ci.lin updated to recognize objects of class "lmerMod" from lmer. Changes in 1.1.60 o Documentation for DMlate updated. Changes in 1.1.59 o boxes.Lexis updated so that also no. of beginners and enders are properly formatted if larger than 999 Changes in 1.1.57 o boxes.Lexis updated with arguments show.BE and BE.pre, allowing annotation of boxes by the *number* of persons strating and ending in different states. Changes in 1.1.57 o simLexis substantially updated and groomed to accept Cox-models for transitions too. Example in the documentation and vignette is expanded accordingly. Changes in 1.1.56 o Typos in documentation corrected. o When records with too short follow-up are encountered by Lexis, they are dropped from the resulting object, but they will be availabe in the object drop.sh in the global environment. o The col and border arguments to plot.pState were not repeated automatically, so needed fixing. o More elaborate warning and error-messages if initiators in absorbing states are handed to simLexis. Changes in 1.1.55 o Documentation of clogistic is clarified w.r.t. likelihood contributions of matched sets. Changes in 1.1.54 o apc.fit updated to use the Ns wrapper, and automatically use knots located so that the marginal number of events is the same between knots. o plot.apc and lines.apc defined as methods for apc objects. They are just wrappers for apc.plot and apc.lines. o gen.exp example slightly modified to give better output. Changes in 1.1.53 o Population figures in N.dk, M.dk and Y.dk updated Changes in 1.1.52 o col.txt argument to plotEst was not working properly. Fixed o txt argument to plotEst can now be an expression vector allowing sub- and superscripts and mathematical expressions. o Relevel did not issue warning or error when a given level was being specified as member of more than one new level. It now stops with an error. o The convenience wrappers Ns (for ns) and NArray (for array) have been added Changes in 1.1.51 o boxes.Lexis fixed so that rates could be computed from matrix input to. Changes in 1.1.50 o Calculation of p-values in ci.lin has been modified, thyanks to Krista Fischer. Changes in 1.1.49 o Default of "border" argument to plot.pState changed to "transparent" Changes in 1.1.48 o Slight tidying of code in apc.fit. Automatic determination of reference points for period and cohort fixed to produce median correctly. Changes in 1.1.47 o Bug in simLexis (specifically in Epi:::simX) where factor levels were wrongly used, is now corrected. Versions earlier are likely to produce wrong state allocation in simulated dataset and not crash. Changes in 1.1.46 o lex.id handling in simLexis changed, allows for easier simulation in chunks which may be necessary to avoid memory problems. Changes in 1.1.45 o simLexis introduced. Allows simulation from multiple timescale mulitste models. Accompanying utilities supplied too: pr.Lexis, prev and plot.prev. Changes in 1.1.44 o A number of dead links in the documentation have been resurrected. o attach() purged from Lexis.diagram, Lexis.lines and ccwc. o Bug in computing AUC in ROC fixed, thanks to Karl Ove Hufthammer. Documentation clarified with respect to definition of test. o Bug fix to remove warning when more than one variable name was supplied in the by= argument of summary.Lexis. Changes in 1.1.43 o N2Y fixed so that local variable bindings are recognized (M. Plummer) o summary.Lexis expanded with the argument by=, allowing a summary by a factor. Also, the default behaviour is now to return only the transition summary, and only optionally the transition rates; giverned by the Rates= argument Changes in 1.1.42 o Bug that caused a crash of ROC when vaiables in the "form" argument were only in the "data" argument data frame and not in the global environmant. Now fixed thanks to Ben Barnes of the Robert Koch Institute, German Center for Cancer Registry Data Changes in 1.1.41 o boxes.Lexis now returns an object of class MS, which easily allows plotting of slightly modified multistate displays using the new command boxes.MS. The facility in boxes.Lexis to produce weedy code for the same purpose has been removed. o boxes.Lexis now allows to show *both* number of transitions *and* rates between the states. o stack.Lexis now takes the Lexis attributes "time.scales" and "breaks" across from the Lexis object to the stacked.Lexis object. Changes in 1.1.40 o subset, transform and Relevel methods have been added for objects of type stacked.Lexis. Changes in 1.1.39 o effx has been expanded with an extra argument eff=, which defaults to NULL, allows "RR" for relative risk for binary data, and "RD" for rate differences for failure data. Also logical response is admitted for binomial and failure responses. o factorize and Relevel are now synonyms. Methods for Relevel are Relevel.default, Relevel.factor, Relevel.Lexis, for factorise only the factorize.default and factorize.Lexis exist. o A mistake in estimating sequential residuals in apc.fit() has been corrected. The wrong model (adc instead of rc, in the case parm == "AD-C-P") was used for the basis of residuals. Thanks to Shih-Yung Su from Taiwan. o as.Date.cal.yr is added, even though it was removed earlier: cal.yr is a class for date variables and the conversion function should be around. o A bug in ci.pd causing calculations to go wrong if vectors were supplied as input. Correction thanks to Patrick Rymer. o A bug in factorize.Lexis is fixed. Now appropriately groups factor levels in the state factors lex.Cst and lex.Xst. Relevel.Lexis is defined as an alias for factorize.Lexis. Thus the functins Relevel() and factorize() are now identical. Changes in 1.1.36 o A bug in boxes.Lexis causing arrow-coloring to go out of sync fixed o Array problems in stat.table fixed Changes in 1.1.35 o none. Just compiled for the archive with R 2.15.0 Changes in 1.1.34 o plotEst now has an arguments col.txt and font.txt which allows the use of different colors and fonts for the annotation of the estimates. Models likely to be multiplicative incurs a logarithmic x-axis in the plot. o ci.exp introduced - a wrapper for ci.lin, getting the exponentiated parameters with CIs. o A bug causing unintended reordering of levels using boxes.Lexis is fixed. o Method etm for Lexis objects included. This just takes a Lexis object, and fishes out the relevant information to be able to call the function etm from the etm package (empirical transition matrix). This function is now physically defined in the file(s) foreign.Lexis.R(d). Changes in 1.1.32 o gen.exp was re-written and simplified. o Small cosmetic changes to the code for N2Y Changes in 1.1.31 o The extractor functions entry, exit, status and dur have now an argument by.id=FALSE. If set to TRUE, only one record per lex.id is returned and the resulting object has lex.id as (row)names attribute. Changes in 1.1.30 o DMlate expanded with the column dooad o Documentation for as.Date.cal.yr fixed o Bug in gen.exp fixed (It was assuming a data frame called dfr existed was wrong, but not spotted by the example because in the example one actually did exist!) Changes in 1.1.29 o New function gen.exp for generating time-varying exposure variables from drug purchase records. Changes in 1.1.28 o splitLexis now allows NAs in the timescale on which you split. Records with NAs are simply left untouched, but a warning is printed. o A bug in boxes.Lexis preventing rates to be printed was issued. Changes in 1.1.27 o A few typos corrected o Functions a.lines, a.points, cp.lines and cp.points added to facilitate plotting points and curves from APC-models. o apc.fit did not return the reference cohort/period if it was not supplied in a model with explicit drift. Changes in 1.1.26 o A new function N2Y added which computes person-years in Lexis triangles from population prevalence data. o Demographic example data from Denmark added: N.dk - population size at 1 Jan Y.dk - risk time in Lexis triangles M.dk - mortality data B.dk - births in Denmark 1902 ff. Changes in 1.1.25 o Added sd() function to stat.table() o tmat.Lexis has an argument Y=FALSE which if set to TRUE will return the person-years in the diagonal. o boxes() now explicitly defined with methods boxes.Lexis and boxes.matrix that explicitly call boxes.default (which is the function doing the work (almost identical to the former boxes.Lexis). Changes in 1.1.24 o countLexis did not take the "timescales" and "breaks" attribute across to the resulting Lexis object. Changes in 1.1.23 o A missing defualt value for new.scale in doCutLexis caused a crash o A missing default value for new.scale in doCutLexis caused a crash when using the count=TRUE argument to cutLexis. Changes in 1.1.23 o ci.lin and ci.cum now have a sample= argument that causes return of a sample from the normal distribution with mean equal to the estimates and variance equal to the estimated variance of the estimates. To be used to do "parametric bootstrap" of complicated functions of the parameters, such as state occupancy probabilities from multistate models. o ci.lin now supports objects of class mipo (Multiple Imputation Pooled Objects --- see the mice package). o tabplot removed --- it was a proper subset of the mosaicplot from the graphics package Changes in 1.1.22 o A bug in boxes.Lexis prevented the use of ht= and wd= arguments to set boxes to a prespecified size. The scaling of these is now also clarified in the man file for boxes.Lexis. Changes in 1.1.21 o Specifying period of cohort effects with only two parameters caused apc.fit to crash. Fixed by adding a few ",drop=FALSE" in subsetting of matrices. o Since as.Date.cal.yr was not used anywhere, it has been removed from the package. o A function Wald added to do Wald test of several parameters or linear combinations of them. It is a small extension on top of ci.lin. Changes in 1.1.20 o CITATION file added. Changes in 1.1.19 o ci.lin amended by an argument subint= allowing to select subsets of parameters matching several strings. Changes in 1.1.18 o boxes.Lexis has been made a bit more versatile for production of box-diagrams from multistate models. Changes in 1.1.17 o A comma was missing in the code-output from boxes.Lexis o mstate.Lexis function changed name to msdata.Lexis, according to the change in convention in the mstate package. Code simplified as it is now using the functionality in stack.Lexis. o A factorize.Lexis function has been added, it basically changes the variables lex.Cst and lex.Xst to factors with same set of levels. A useful facility when we want boxes.Lexis to work. Changes in 1.1.16 o boxes.Lexis now resets the graphical parameters (par()) on exit. o plot.Lexis now has a default Lexis object as argument, allowing use of the function to plot empty Lexis diagrams without setting up a Lexis object first. The bogus object has timescales c("Date","Age") but 0 follow-up time. Changes in 1.1.14 o ci.lin now has an argument df to allow for t-quantiles in ci calculations. o lls() function revised to give nicer (left justified) output. Changes in 1.1.13 o ci.lin now supports objects of class clogistic. o utility function ci.mat() added --- earlier defined inside ci.lin and ci.cum, but also useful on its own. o lls() and clear() added, to ease overview and clearing of workspace (and attachments!) o apc.frame now sets the option "apc.frame.par" with the offset and scaling of calendar time part of the apc frame. This is recognised now by apc.lines automatically. o Function pc.points, pc.lines, pc.matlines, pc.matpoints added to ease plotting the calendar time region of an apc frame; live off the option "apc.frame.par". Changes in 1.1.12 o Added function clogistic for conditional logistic regression. Changes in 1.1.9 o A function PY.ann.Lexis is added. It writes the length of (pieces of) lifelines in a Lexis digram produced by plot.Lexis. o plot.Lexis now sets an option "Lexis.time.scale" which is queried by lines.Lexis and points.Lexis, so that time.scale is only needed in plot.Lexis. Changes in 1.1.8 o apc.fit had a bug in the specification of knots when using the argument model="bs". Fixed. Changes in 1.1.7 o boxes.Lexis has been further enhanced with the facility to plot rates instead of no. transitions on the arrows if required. The code has been tidied a bit too. o The man file for boxes.Lexis and subsidiaries have been renamed to MS.boxes.Rd Changes in 1.1.5 o boxes.Lexis have been enhanced to accommodate two-way transitions between states. Annotation by number of transitions has been improved to accommodate this too by always putting the number on the left side of the arrow. Changes in 1.1.3 o ci.lin() and ci.cum() have been expanded to accept objects of class "MIresult" from the mitools package (Esa Lr). o The boxes.Lexis() now gives a more versatile piece of code, which computes the text widths and heights. Changes in 1.1.2 o cutLexis crashed if new.state=TRUE and new.scale=FALSE were specified. Fixed. Changes in 1.1.1 o Functions stack.Lexis, tmat.Lexis and mstate.Lexis have been added to facilitate practical multistate modeling. The two latter provides an interface to the mstate package. o Functions tbox, dbox, fillarr, boxarr and boxes.Lexis added to facilitate drawing of multistate box diagrams. Changes in 1.1.0 o Two new datasets DMrand and DMlate with random samples from the Danish National diabetes register. The examples from these illustrate most of the recently added multistate stuff. o Minor bug in check.time.scale was fixed (misplaced parentheses in the argument to any(), causing a warning). o cutLexis introduces a new timescale "time since event", which has missing values for any follow-up time prior to event. Hence requires that the Lexis plotting functions explicitly discards the units with missing on timescales in use. Accomplished by the new function valid.times. o cutLexis now places the new states after the precursor states and before the other ones in the factors lex.Cst and lex.Xst. o splitLexis uses the first timescale by default. Which in particular means that in the case of only one time scale it is not necessary to specify it, so this has become acceptable now. o Vignettes has been updated. o Example for ci.cum has been fixed to be compatible with the new survival package as of 2.9.0 as announced. o apc.fit fitted the wrong model when using parm="AC-P". Fixed o The axis scaling of apc.plot has been improved. o apc.frame now by default plots a reference line for RR=1, this may be switched off by the (newly introduced) parameter "ref.line=FALSE". Changes in 1.0.10 o Fixed parse errors in documentation. Changes in 1.0.9 o Thanks to Mike Murphy, Professor of Demography, Department of Social Policy, London School of Economics, a bug causing a crash of apc.fit if only one row in the model matrix corresponds to the reference level was fixed. o Also thanks to Mike Murphy, a much more efficient calculation of median period and cohort is now used. o apc.fit expanded with an argument allowing logistic regression model instead of a Poisson model only. Changes in 1.0.8 o tab.Lexis removed and replaced by summary.Lexis which gives a better summary of the transitions and transition rates. o A bug in ci.pd (confidence interval for probability difference) has been fixed. Changes in 1.0.7 o Stat.table data= argument fixed. Changes in 1.0.6 o Lexis now converts character values of entry/exit.status to factors for lex.Cst and lex.Xst. And produces a warning if the entry.state is defaulted to the first level of exit.state (i.e. when exit.state is given as charcter or factor). o splitLexis gave wrong results for factor states. cutLexis gave wrong results for character states. Fixed by letting Lexis coerce character mode entry.status and exit.status to factors for lex.Cst and lex.Xst. In split.lexis.1D was the problem with the factor states, they were coerced to numeric when stuffed into the new.Xst matrix. Now states are turned to numeric before the call to split.lexis.1D and the factor attributes re-instituted after the split. o Added transform method for Lexis objects. Changes in 1.0.5 o Typos in documentation of APC functions corrected. o cutLexis updated to handle various instances by MP. A few BxC additions to MP's code: - cutLexis2 is renamed cutLexis. BxC's old cutLexis killed. - count=FALSE as argument to cutLexis, just calls countLexis if TRUE. - cutLexis no longer returns the working column lex.cut - cutLexis was missing the attributes "time.scales" and "breaks". Added. - cut= is allowed, simplifying cut of split Lexis objects. - documentation accordingly altered. o splitLexis amended so that lex.Xst is returned as a factor if lex.Cst is a factor. splitLexis crashed if lex.Cst and lex.Xst were factors. o Lexis now allows omission of entry.status --- if exit.status is numeric/logical/factor, entry.status (and hence lex.Cst) will be set to 0/FALSE/first level. o Lexis made sure that lex.Cst and lex.Xst have the same class. If they are factors, the set of levels is taken to be the union. Changes in 1.0.1 o cutLexis now works properly - no it did not! o cutLexis now accepts a (smaller) dataframe with cutpoints and states as input. Changes in 0.9.6 o Bugfix in timeBand, crashed when type="factor" was chosen. levels was given as 0:(lengh(breaks)+1), changed to 0:lengh(breaks) Changes in 0.9.5 o The Lexis definition now assumes that entry is 0 if only one of exit or duration are given as a one-component list. o tab.Lexis is now properly working as a method for Lexis objects. Changes in 0.9.4 o The lex.-variables in Lexis objects are now called lex.dur, lex.Cst, lex.Xst, lex.id (duration, Current state, eXit state and identification) o An extra option states= added to Lexis. If used the state variables are returned as factors. o The utility function deltat.Lexis() has been renamed to dur(). o state() now returns a dataframe of both (entry,exit) states a default. The reason for this is that lex.Cst and lex.Xst may be factors (which actually would be the logical thing to have by default, but it is not enforced only allowed). o entry() and exit() now by default returns matrices with entry and exit times on all timescales. If only one timescale is requested, they return a 1-column matrix. o A minor typo in stat.table corrected: in the definition of the quantile function prob=probs changed to probs=probs. o cutLexis() bugs corrected. Now works with split data too, but requires specification of censoring states --- i.e. states that will be replaced by the new state obtained at the cut date. Changes in 0.9.3 (since 0.9.0) o New function cutLexis() to allow cutting of follow-up time at a specific date for each person, where a new state is assumed. o New function tab.Lexis() which tabulates records as well as events and person-years from a Lexis object. o splitLexis got state information wrong if breaks were not unique. Fixed. Changes in 0.9.0 o effx and effx.match updated following Tartu 2007 to avoid attaching the data, and to correct the parsing of the list of control variables. Changes in 0.8.0 o A new function Lexis() to define follow-up on multiple timescales has been added. An object of class Lexis is defined and a number of utilities for the class are available. Time-splititng is now done by splitLexis(). o The old Lexis function for time-splitting has been renamed to W.Lexis for backward compatibility. o The function epi.eff() has been replaced by effx() and effx.match(). Changes 0.7.2 to 0.7.3 o Icens is now able to handle a constant underlying rate. (A bug in expand.data was fixed). Changes 0.7.0 to 0.7.2 o Bugs in ROC fixed, and the functionality of the grid option slightly chnaged. Changes 0.6.1 to 0.7.0 o Function Icens() for estimation of rates from intervalcensored follow-up data by Martyn Plummer added. o Function epi.eff by Michael Hills is added. Estimates effects in various epidemiological study types. Changes 0.6.0 to 0.6.1 o Coding errors in thoro dataset corrected. Only concerning dates and status for livercancer diagnosis. o Lexis.lines now allows col.life, lwd.life, pch.fail, col.fail and cex.fail to have the same length as the data, i.e. to produce individualized lines and points. As Lexis.diagram calls Lexis.lines, this facility is also available through Lexis.diagram. Changes from 0.4 to 0.6 o ci.pd() amended to support the Agresti-Caffo method for confidence intervals for difference between proportions. Newcombes method 10 is still used in twoby2. o apc.fit() added. Fits age-period-cohort models with a range of possibilities for parametrizations. o Functions for time-splitting at arbitrary times and at recurrent failures have been added: isec(), icut(), fcut1(), fcut() and ex1(). Eventually they will be superseded by new facilities in Lexis. o Function apc.plot() to make a plot of an apc fit is added. It is just a wrapper for apc.frame() and apc.lines(), with suitable computation of the paramters supplied to apc.frame. o Lexis.lines(): pch.fail and col.fail expandS to vectors of length two if only one value is given. o ci.cum() aimed at computing cumulative hazard functions from parametric functions for hazards. o Problem in print.floated() with printing of objects of class "floated" fixed. o Problem in ci.lin when subset did not match any factor names and diff=T was given the function crashed. Fixed, and documentation updated. o cal.yr produces objects of class c("cal.yr","numeric"). Functions as.Date.numeric and as.Date.cal.yr added.